/* ============================================================
   419FT 控制台 · 设计系统 v2
   ------------------------------------------------------------
   基调：石墨黑/纸白 + 钢蓝点缀 / 发丝线 / 微圆角(4px/3px/2px)
   升级点：网格底纹 · 层次阴影 · 顶部高光线 · 脉冲状态点 ·
           等宽数字 · 大写字距微标签 · 悬停描边反馈
   无 emoji / 无大圆角 / 无毛玻璃
   ============================================================ */

/* ---------- 主题令牌 ---------- */
:root{
  --topbar-h:54px; --strip-h:44px; --sider-w:216px;
  --r-card:4px; --r-ctl:3px; --r-tag:2px;

  --bg:#08090b; --bg-soft:#0d0f12;
  --surface:#101216; --surface-2:#16191e; --raised:#1b1f25;
  --line:#23262c; --line-strong:#3b414a;
  --ink:#e9edf1; --muted:#9aa4ae; --faint:#6b7580;

  --accent:#7fa3d1;                 /* 钢蓝点缀：仅用于焦点/激活/悬停描边 */
  --accent-dim:rgba(127,163,209,.16);
  --accent-soft:rgba(127,163,209,.07);

  --hi-line:rgba(255,255,255,.045); /* 顶高光线 */
  --grid:transparent,rgba(255,255,255,.028); /* 底纹网格 */
  --page:radial-gradient(1100px 520px at 78% -12%,rgba(127,163,209,.055),transparent 60%),
         radial-gradient(900px 500px at -8% 8%,rgba(255,255,255,.03),transparent 55%),
         linear-gradient(180deg,#0b0d10,#07080a 70%);
  --primary:linear-gradient(120deg,#f2f5f8,#c3cad2);
  --primary-hover:linear-gradient(120deg,#ffffff,#d7dee5);
  --hover:rgba(255,255,255,.045); --sel:#20242b;
  --input:#0e1114;
  --ok:#82c39c; --warn:#d2b878; --bad:#cd8f8f; --info:#9cb9d6;
  --focus:0 0 0 2px rgba(127,163,209,.45);
  --shadow:0 1px 0 var(--hi-line) inset,0 1px 2px rgba(0,0,0,.35),0 8px 24px -18px rgba(0,0,0,.5);
  --shadow-hi:0 1px 0 var(--hi-line) inset,0 2px 6px rgba(0,0,0,.4),0 14px 32px -16px rgba(0,0,0,.6);
  --shadow-pop:0 1px 0 var(--hi-line) inset,0 16px 44px -12px rgba(0,0,0,.65);
  color-scheme:dark;
}
html[data-theme=light]{
  --bg:#f3f3f0; --bg-soft:#ecebe7;
  --surface:#ffffff; --surface-2:#f7f7f4; --raised:#ffffff;
  --line:#dedcd5; --line-strong:#b3b1a8;
  --ink:#1c2126; --muted:#5c656e; --faint:#8b949d;

  --accent:#35608f;
  --accent-dim:rgba(53,96,143,.14);
  --accent-soft:rgba(53,96,143,.05);

  --hi-line:rgba(255,255,255,.9);
  --grid:transparent,rgba(28,33,38,.033);
  --page:radial-gradient(1000px 480px at 80% -10%,rgba(53,96,143,.05),transparent 60%),
         linear-gradient(180deg,#fbfbf9,#f2f1ed 70%);
  --primary:linear-gradient(110deg,#333a41,#181d22);
  --primary-hover:linear-gradient(110deg,#424b53,#262c32);
  --hover:rgba(28,33,38,.045); --sel:#e8e9e7;
  --input:#ffffff;
  --ok:#357a58; --warn:#8a6d33; --bad:#a85151; --info:#3f5c78;
  --focus:0 0 0 2px rgba(53,96,143,.35);
  --shadow:0 1px 2px rgba(28,33,38,.06),0 10px 26px -18px rgba(28,33,38,.2);
  --shadow-hi:0 1px 2px rgba(28,33,38,.07),0 8px 22px -12px rgba(28,33,38,.24);
  --shadow-pop:0 4px 10px rgba(28,33,38,.1),0 24px 52px -12px rgba(28,33,38,.22);
  color-scheme:light;
}

/* ---------- 基础 ---------- */
*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{
  min-height:100dvh;
  font:13.5px/1.6 -apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;
  background:var(--page);background-attachment:fixed;
  color:var(--ink);
  -webkit-font-smoothing:antialiased;
  -webkit-tap-highlight-color:transparent;
}
/* 网格底纹层（细 1px 线，40px 间距，向上渐隐） */
body::before{
  content:"";position:fixed;inset:0;z-index:-1;pointer-events:none;
  background:
    repeating-linear-gradient(0deg,var(--grid) 0 1px,transparent 1px 40px),
    repeating-linear-gradient(90deg,var(--grid) 0 1px,transparent 1px 40px);
  -webkit-mask-image:radial-gradient(1200px 700px at 50% 0%,#000 0%,transparent 85%);
          mask-image:radial-gradient(1200px 700px at 50% 0%,#000 0%,transparent 85%);
}
a{color:inherit;text-decoration:none}
::selection{background:var(--accent-dim)}
*{scrollbar-color:var(--line-strong) transparent;scrollbar-width:thin}
::-webkit-scrollbar{width:8px;height:8px}
::-webkit-scrollbar-thumb{background:var(--line-strong);border-radius:2px}
::-webkit-scrollbar-thumb:hover{background:var(--muted)}
::-webkit-scrollbar-track{background:transparent}
:focus-visible{outline:none;box-shadow:var(--focus)}
svg.ic{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;flex:none}
code{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:11.5px;background:var(--bg-soft);border:1px solid var(--line);padding:1px 5px;border-radius:2px;word-break:break-all}

.muted{color:var(--muted)} .faint{color:var(--faint)}
.num{font-variant-numeric:tabular-nums;font-feature-settings:"tnum"}
.up{color:var(--ok)} .down{color:var(--bad)}
.mt{margin-top:12px} .mt8{margin-top:8px}
.spacer{flex:1}
.w60{width:60px} .w150{width:150px} .w170{width:170px}

/* 脉冲状态点 */
.dot{width:6px;height:6px;border-radius:50%;background:var(--ok);display:inline-block;flex:none;position:relative}
.dot::after{content:"";position:absolute;inset:0;border-radius:50%;background:var(--ok);animation:pulse 2s ease-out infinite}
@keyframes pulse{0%{opacity:.7;transform:scale(.6)}75%{opacity:0;transform:scale(2.2)}100%{opacity:0;transform:scale(2.2)}}

/* ---------- 顶栏 ---------- */
.topbar{
  position:sticky;top:0;z-index:70;
  display:flex;align-items:center;gap:14px;
  height:var(--topbar-h);padding:0 16px;
  background:color-mix(in srgb,var(--surface) 92%,transparent);
  backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);
  border-bottom:1px solid var(--line);
  box-shadow:0 1px 0 var(--hi-line) inset;
}
.brand{display:flex;align-items:center;gap:9px;font-weight:700;letter-spacing:.06em;font-size:15px}
/* 419 品牌标：双图切换（浅色主题用深字版，深色主题用白字版）。
   用两个 img 而非 content:url()，兼容性最好。 */
.brand .brand-logo{height:26px;width:auto;display:block;flex:0 0 auto}
.brand .brand-logo.lt{display:none}
html[data-theme=light] .brand .brand-logo.dk{display:none}
html[data-theme=light] .brand .brand-logo.lt{display:block}
/* 登录页大 LOGO */
.brand-lg .brand-logo{height:58px}
/* 字号标 */
.brand .brand-name{font-weight:800;letter-spacing:.04em}
.brand .mark{
  width:24px;height:24px;display:grid;place-items:center;
  background:var(--primary);color:#0a0c0f;
  font-size:11px;font-weight:800;border-radius:3px;letter-spacing:0;
  box-shadow:0 0 0 1px var(--line-strong);
}
html[data-theme=light] .brand .mark{color:#fff}
.topbar .tag{margin-left:-4px;font-size:9.5px;letter-spacing:.22em;padding:0 6px;height:17px;line-height:16px}

.user-wrap{position:relative}
.user-chip{
  display:inline-flex;align-items:center;gap:8px;height:34px;padding:0 10px;
  background:transparent;border:1px solid var(--line);border-radius:var(--r-ctl);
  color:var(--ink);cursor:pointer;font-size:13px;
  transition:border-color .15s,box-shadow .15s;
}
.user-chip:hover{border-color:var(--line-strong)}
.avatar{
  width:22px;height:22px;display:grid;place-items:center;
  background:var(--primary);color:#0a0c0f;
  font-size:11px;font-weight:700;border-radius:3px;
}
html[data-theme=light] .avatar{color:#fff}
.caret{width:6px;height:6px;border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:rotate(45deg);margin-top:-2px;opacity:.55}
.menu{
  position:absolute;right:0;top:calc(100% + 7px);min-width:150px;z-index:90;
  background:var(--raised);border:1px solid var(--line-strong);
  box-shadow:var(--shadow-pop);padding:4px;border-radius:var(--r-ctl);
}
.menu[hidden]{display:none}
.menu button{
  display:block;width:100%;text-align:left;padding:8px 10px;
  background:none;border:0;color:var(--ink);cursor:pointer;font-size:13px;border-radius:2px;
}
.menu button:hover{background:var(--hover)}
.menu button.danger{color:var(--bad)}
/* 遮罩淡入动画（侧边导航遮罩 .nav-mask 使用） */
@keyframes hubIn{from{opacity:0}to{opacity:1}}

/* ---------- 开奖条 ---------- */
.draw-strip{
  display:flex;justify-content:center;align-items:center;gap:26px;
  min-height:var(--strip-h);padding:8px 16px;
  background:var(--surface-2);border-bottom:1px solid var(--line);
  font-size:13px;font-variant-numeric:tabular-nums;
}
.draw-strip strong{font-weight:650;display:inline-flex;align-items:center;gap:8px}

/* ---------- 布局 ---------- */
/* 侧边导航遮罩 */
.nav-mask{
  position:fixed;inset:0;z-index:110;
  background:color-mix(in srgb,var(--bg) 55%,transparent);
  backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);
  animation:hubIn .16s ease;
}
.nav-mask[hidden]{display:none}
/* 主内容区全宽（侧边栏改为可开合抽屉，不再占位） */
.shell{min-height:calc(100dvh - var(--topbar-h) - var(--strip-h))}
.main{min-width:0;padding:18px 20px 70px}
/* 侧边导航抽屉：默认收起在最左，nav-open 滑出 */
.sider{
  position:fixed;left:0;top:var(--topbar-h);bottom:0;z-index:115;
  width:var(--sider-w);overflow-y:auto;
  background:color-mix(in srgb,var(--bg-soft) 85%,var(--surface));
  border-right:1px solid var(--line-strong);
  padding:12px 10px;display:flex;flex-direction:column;gap:2px;
  box-shadow:var(--shadow-pop);
  transform:translateX(-102%);transition:transform .22s ease;
}
.sider.nav-open{transform:translateX(0)}
body.nav-locked{overflow:hidden}
.nav-group-label{
  font-size:10px;color:var(--faint);letter-spacing:.2em;
  margin:14px 10px 5px;user-select:none;text-transform:uppercase;
  display:flex;align-items:center;gap:8px;
}
.nav-group-label::after{content:"";flex:1;height:1px;background:var(--line)}
.nav-item{
  display:flex;align-items:center;gap:10px;width:100%;height:36px;padding:0 10px;
  border:1px solid transparent;border-radius:var(--r-ctl);background:transparent;
  color:var(--muted);cursor:pointer;font-size:13.5px;
  transition:background-color .15s,color .15s,border-color .15s;
}
.nav-item svg{opacity:.75;transition:opacity .15s,color .15s}
.nav-item:hover{background:var(--hover);color:var(--ink)}
.nav-item:hover svg{opacity:1}
.nav-item.active{
  background:var(--sel);color:var(--ink);border-color:var(--line);
  box-shadow:inset 2px 0 0 var(--accent);
}
.nav-item.active svg{color:var(--accent);opacity:1}
.nav-item.danger-item:hover{color:var(--bad)}
.sider-foot{margin-top:auto;padding-top:12px;border-top:1px solid var(--line)}
/* 按钮型导航项（快捷操作：新建任务/主题/刷新） */
.nav-item.nav-act{
  font:inherit;
  border-color:transparent;
}
.nav-item.nav-act:hover{background:var(--hover)}
.main{flex:1;min-width:0;padding:18px 20px 70px}
.container{max-width:1160px;margin:0 auto}

/* ---------- 网格 ---------- */
.stat-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}
.grid{display:grid;gap:12px}
.grid.c2{grid-template-columns:repeat(2,minmax(0,1fr))}
.grid.c3{grid-template-columns:repeat(3,minmax(0,1fr))}

/* ---------- 卡片 ---------- */
.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-card);box-shadow:var(--shadow);transition:border-color .18s}
.card:hover{border-color:color-mix(in srgb,var(--line-strong) 70%,var(--accent))}
.card-hd{
  display:flex;align-items:center;justify-content:space-between;gap:10px;
  padding:11px 14px;border-bottom:1px solid var(--line);
  background:linear-gradient(180deg,var(--hi-line),transparent 60%);
}
.card-hd h3{margin:0;font-size:13.5px;font-weight:650;letter-spacing:.02em}
.card-bd{padding:14px}
.card-ft{display:flex;align-items:center;justify-content:flex-end;gap:8px;padding:11px 14px;border-top:1px solid var(--line);flex-wrap:wrap}
.list-card{padding:0}
.list-card>.card-hd{margin:0}

.stat{
  position:relative;overflow:hidden;
  background:var(--surface);border:1px solid var(--line);border-radius:var(--r-card);
  padding:12px 14px;box-shadow:var(--shadow);
  transition:border-color .15s,transform .15s;
}
.stat:hover{border-color:var(--line-strong);transform:translateY(-1px)}
.stat::before{ /* 顶部钢蓝刻度线 */
  content:"";position:absolute;top:0;left:14px;right:14px;height:2px;
  background:linear-gradient(90deg,var(--accent),transparent);opacity:.55;
}
.stat .k{font-size:10.5px;color:var(--muted);letter-spacing:.14em;text-transform:uppercase;font-weight:600}
.stat .v{font-size:22px;font-weight:700;font-variant-numeric:tabular-nums;margin-top:4px;min-height:27px;letter-spacing:.01em}
.stat .d{font-size:11px;color:var(--faint);margin-top:4px}

/* ---------- 工具条 / 分段控件 ---------- */
.toolbar{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-bottom:14px}
.seg{display:inline-flex;border:1px solid var(--line);border-radius:var(--r-ctl);overflow:hidden;background:var(--surface-2);padding:2px;box-shadow:0 1px 0 var(--hi-line) inset}
.seg button{
  border:0;background:transparent;color:var(--muted);padding:5px 12px;
  cursor:pointer;font-size:12.5px;border-radius:2px;
  transition:background-color .15s,color .15s;letter-spacing:.02em;
}
.seg button:hover{color:var(--ink)}
.seg button.active{background:var(--surface);color:var(--ink);box-shadow:inset 0 0 0 1px var(--line-strong),0 1px 3px rgba(0,0,0,.18)}

/* ---------- 按钮 ---------- */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:6px;
  height:32px;padding:0 12px;border-radius:var(--r-ctl);
  border:1px solid var(--line-strong);background:var(--surface-2);color:var(--ink);
  cursor:pointer;font-size:13px;white-space:nowrap;
  box-shadow:0 1px 0 var(--hi-line) inset;
  transition:background-color .15s,border-color .15s,color .15s,transform .1s;
}
.btn svg{width:13px;height:13px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
.btn:hover{background:var(--hover);border-color:var(--line-strong)}
.btn:active{transform:translateY(1px)}
.btn.primary{background:var(--primary);color:#0a0c0f;border-color:transparent;font-weight:650;box-shadow:0 1px 0 rgba(255,255,255,.25) inset,0 6px 16px -8px rgba(0,0,0,.45)}
html[data-theme=light] .btn.primary{color:#fff}
.btn.primary:hover{background:var(--primary-hover)}
.btn.danger{color:var(--bad);border-color:color-mix(in srgb,var(--bad) 45%,transparent);background:transparent;box-shadow:none}
.btn.danger:hover{background:color-mix(in srgb,var(--bad) 8%,transparent)}
.btn.sm{height:26px;padding:0 9px;font-size:12px}
.btn:disabled{opacity:.45;cursor:not-allowed}
.btn.block{width:100%}
.icon-btn{
  width:34px;height:34px;display:inline-grid;place-items:center;
  background:transparent;border:1px solid var(--line);border-radius:var(--r-ctl);
  color:var(--muted);cursor:pointer;
  transition:color .15s,border-color .15s,box-shadow .15s;
}
.icon-btn:hover{color:var(--ink);border-color:var(--line-strong);box-shadow:0 0 0 1px var(--accent-dim)}
.icon-btn.sm{width:26px;height:26px;border:0}

.link{color:var(--ink);font-size:12px;border-bottom:1px solid var(--line-strong);padding-bottom:1px;transition:border-color .15s,color .15s}
.link:hover{border-bottom-color:var(--accent);color:var(--accent)}

/* ---------- 表单 ---------- */
label{display:block;font-size:12.5px;color:var(--muted);margin:12px 0 6px}
input,select,textarea{
  width:100%;height:34px;padding:0 10px;
  border-radius:var(--r-ctl);border:1px solid var(--line-strong);
  background:var(--input);color:var(--ink);
  outline:none;font:inherit;font-size:13.5px;
  box-shadow:0 1px 2px rgba(0,0,0,.1) inset;
  transition:border-color .15s,box-shadow .15s;
}
input:hover,select:hover{border-color:var(--muted)}
input:focus,select:focus{border-color:var(--accent);box-shadow:var(--focus)}
input::placeholder{color:var(--faint)}
input[type=checkbox]{width:16px;height:16px;padding:0;accent-color:var(--accent);box-shadow:none}
.toolbar input{width:auto}
.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 14px}
.fg{display:flex;flex-direction:column;gap:6px;margin:0;font-size:12px;color:var(--muted)}
.fg>span{font-size:12px;color:var(--muted)}
.fg input,.fg select{height:34px}
.form-ft{display:flex;justify-content:flex-end;margin-top:16px}
.hint{font-size:12px;color:var(--faint);margin:12px 0 0}

/* ---------- 可搜索区号选择器（TG 手机号登录） ---------- */
.cc-pick{position:relative;flex:none}
.cc-pick__btn{
  display:inline-flex;align-items:center;justify-content:space-between;gap:8px;
  height:34px;padding:0 10px;min-width:118px;
  border-radius:var(--r-ctl);border:1px solid var(--line-strong);
  background:var(--input);color:var(--ink);cursor:pointer;font:inherit;font-size:13px;
  box-shadow:0 1px 2px rgba(0,0,0,.1) inset;transition:border-color .15s,box-shadow .15s;
}
.cc-pick__btn:hover{border-color:var(--muted)}
.cc-pick__btn:focus-visible{outline:none;border-color:var(--accent);box-shadow:var(--focus)}
.cc-caret{width:6px;height:6px;border-right:1.5px solid var(--muted);border-bottom:1.5px solid var(--muted);transform:rotate(45deg);margin-top:-3px;opacity:.7}
.cc-pick__pop{
  position:absolute;left:0;top:calc(100% + 6px);z-index:60;width:300px;max-width:80vw;
  background:var(--raised);border:1px solid var(--line-strong);border-radius:6px;
  box-shadow:var(--shadow-pop);overflow:hidden;
}
.cc-pick__pop[hidden]{display:none}
.cc-pick__search{
  display:flex;align-items:center;gap:8px;padding:9px 10px;
  border-bottom:1px solid var(--line);background:var(--surface-2);
}
.cc-pick__search svg{color:var(--faint)}
.cc-pick__search input{
  height:30px;min-width:0;flex:1;background:var(--input);
  border-radius:var(--r-ctl);border:1px solid var(--line-strong);
}
.cc-pick__list{max-height:260px;overflow-y:auto;padding:5px}
.cc-pick__opt{
  display:flex;align-items:center;gap:10px;width:100%;text-align:left;padding:8px 10px;
  background:transparent;border:1px solid transparent;border-radius:var(--r-ctl);cursor:pointer;
  color:var(--ink);font:inherit;font-size:13px;transition:background-color .12s,border-color .12s;
}
.cc-pick__opt:hover{background:var(--hover)}
.cc-pick__opt.is-active{border-color:var(--accent);background:var(--sel);box-shadow:inset 2px 0 0 var(--accent)}
.cc-pick__code{color:var(--muted);min-width:52px;font-variant-numeric:tabular-nums}
.cc-pick__opt.is-active .cc-pick__code{color:var(--accent)}
.cc-pick__name{color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cc-pick__empty{padding:18px 10px;text-align:center;color:var(--faint);font-size:12.5px}

/* ---------- 表格 ---------- */
.table-wrap{overflow-x:auto}
.table{width:100%;border-collapse:collapse;font-size:13px}
.table th{
  text-align:left;font-weight:600;color:var(--faint);font-size:11px;
  letter-spacing:.1em;text-transform:uppercase;
  padding:9px 12px;background:var(--surface-2);border-bottom:1px solid var(--line-strong);
  white-space:nowrap;
}
.table td{padding:8px 12px;border-bottom:1px solid var(--line);font-variant-numeric:tabular-nums}
.table tbody tr:last-child td{border-bottom:0}
.table tbody tr{transition:background-color .12s}
.table tbody tr:hover{background:var(--hover)}
.table th.n,.table td.n{text-align:right}
.pager{
  display:flex;justify-content:space-between;align-items:center;gap:8px;
  padding:10px 14px;border-top:1px solid var(--line);flex-wrap:wrap;font-size:12.5px;
}

/* ---------- 角标 ---------- */
.tag{
  display:inline-flex;align-items:center;height:20px;padding:0 8px;
  border-radius:var(--r-tag);border:1px solid var(--line);
  background:var(--surface-2);color:var(--muted);
  font-size:11px;white-space:nowrap;letter-spacing:.04em;
}
.tag.ok{color:var(--ok);border-color:color-mix(in srgb,var(--ok) 42%,transparent);background:color-mix(in srgb,var(--ok) 10%,transparent)}
.tag.warn{color:var(--warn);border-color:color-mix(in srgb,var(--warn) 42%,transparent);background:color-mix(in srgb,var(--warn) 10%,transparent)}
.tag.bad{color:var(--bad);border-color:color-mix(in srgb,var(--bad) 42%,transparent);background:color-mix(in srgb,var(--bad) 10%,transparent)}
.tag-row{display:flex;flex-wrap:wrap;gap:6px}

/* ---------- 号码球 ---------- */
.balls{display:flex;gap:7px;align-items:center;flex-wrap:wrap}
.ball{
  min-width:30px;height:30px;padding:0 8px;display:grid;place-items:center;
  background:var(--surface-2);border:1px solid var(--line-strong);border-radius:3px;
  font-weight:700;font-size:15px;font-variant-numeric:tabular-nums;
  box-shadow:0 1px 0 var(--hi-line) inset;transition:border-color .15s,transform .12s;
}
.ball:hover{border-color:var(--accent);transform:translateY(-1px)}
.ball-sum{background:var(--primary);color:#0a0c0f;border-color:transparent}
html[data-theme=light] .ball-sum{color:#fff}
.ov-draw-bd{display:flex;flex-direction:column;gap:12px}
.ov-nbr{font-size:13px;color:var(--muted);letter-spacing:.04em;font-variant-numeric:tabular-nums}
.ov-task-row{display:flex;justify-content:space-between;gap:10px;padding:8px 0;border-bottom:1px dashed var(--line);font-size:13px;transition:padding-left .12s}
.ov-task-row:hover{padding-left:4px}
.ov-task-row:last-child{border-bottom:0}

/* ---------- 任务卡 ---------- */
.task-hd{display:flex;justify-content:space-between;align-items:center;gap:8px}
.task-hd h3{margin:0;font-size:14px;font-weight:650;letter-spacing:.01em}
.task-rows{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-top:12px}
.task-row{
  border:1px solid var(--line);background:var(--surface-2);padding:8px 10px;border-radius:3px;
  box-shadow:0 1px 0 var(--hi-line) inset;
}
.task-row .k{font-size:10.5px;color:var(--faint);letter-spacing:.1em;text-transform:uppercase;font-weight:600}
.task-row .v{font-size:14px;font-weight:600;font-variant-numeric:tabular-nums;margin-top:2px}
.task-ft{display:flex;gap:6px;margin-top:12px}

/* ---------- 名人堂卡 ---------- */
.hall-hd{display:flex;justify-content:space-between;align-items:center;gap:8px}
.hall-hd h3{margin:0;font-size:14px;font-weight:650}
.hall-rate{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-top:12px;padding:10px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.hall-rate .k{font-size:10.5px;color:var(--faint);letter-spacing:.1em;text-transform:uppercase;font-weight:600}
.hall-rate strong{font-size:21px;font-weight:700;font-variant-numeric:tabular-nums;margin-top:2px;display:block;letter-spacing:.01em}
.hall-rate .r{text-align:right;font-size:12px;color:var(--muted)}
.hall-streaks{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:2px;padding:9px 0;text-align:center}
.hall-streaks span{font-size:10.5px;color:var(--faint);display:block}
.hall-streaks b{font-size:13.5px;font-variant-numeric:tabular-nums;display:block;margin-top:1px}
.hall-ft{display:flex;justify-content:space-between;gap:8px;padding-top:9px;border-top:1px solid var(--line);flex-wrap:wrap}
/* ---------- 随机杀号 走势标签 ---------- */
.rkill-trend{display:flex;flex-wrap:wrap;gap:5px;margin-top:8px}
.rk-tag{font-size:10.5px;padding:2px 7px;border-radius:10px;font-weight:600;letter-spacing:.03em}
.rk-tag.hot{color:#fff;background:#e5533c}
.rk-tag.cold{color:#fff;background:#3b82f6}
.rk-tag.od{color:#fff;background:#8b5cf6}

/* ---------- 防御 / 管理 ---------- */
.def-sum{display:flex;justify-content:space-between;align-items:center;gap:14px;flex-wrap:wrap}
.def-sum h3{margin:0 0 4px;font-size:14px;font-weight:650}
.def-sum p{margin:0;font-size:12.5px}
.admin-layout{display:grid;grid-template-columns:150px minmax(0,1fr);gap:18px;align-items:start}
.admin-nav{display:flex;flex-direction:column;gap:4px;border-right:1px solid var(--line);padding-right:12px}
.admin-nav .btn{width:100%}
.admin-nav .btn.active{background:var(--sel);border-color:var(--accent);color:var(--ink);box-shadow:inset 2px 0 0 var(--accent)}
.admin-user{padding:5px 0}
.admin-user-row{
  display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;padding:10px 6px;
  border-bottom:1px solid var(--line);align-items:center;border-radius:3px;
  transition:background-color .12s;
}
.admin-user-row:hover{background:var(--hover)}
.admin-user-row:last-child{border-bottom:0}
.a-name{font-size:14px;font-weight:600;display:flex;gap:8px;align-items:center;min-width:0}
.a-sub{font-size:12px;color:var(--faint);margin-top:2px}
.a-acts{display:flex;gap:6px}

/* ---------- 设置 / 皮肤 ---------- */
.skin-row{display:flex;gap:10px;flex-wrap:wrap}
.skin-pick{
  display:inline-flex;align-items:center;gap:10px;padding:10px 14px;
  border:1px solid var(--line);background:var(--surface-2);
  border-radius:var(--r-ctl);cursor:pointer;color:var(--ink);font-size:13px;
  transition:border-color .15s,box-shadow .15s;
}
.skin-pick:hover{border-color:var(--line-strong)}
.skin-pick[aria-pressed=true]{border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent),0 0 12px -4px var(--accent-dim);background:var(--sel)}
.sw{width:34px;height:22px;border:1px solid var(--line-strong);border-radius:2px;overflow:hidden;flex:none}
.sw-d{background:linear-gradient(120deg,#16181b 50%,#e9ebed 50%)}
.sw-l{background:linear-gradient(120deg,#ffffff 50%,#23272c 50%)}

/* ---------- 弹窗 ---------- */
dialog.panel{
  border:1px solid var(--line-strong);background:var(--surface);color:var(--ink);
  border-radius:6px;padding:0;box-shadow:var(--shadow-pop);
  max-width:540px;width:calc(100% - 32px);
}
dialog.panel::backdrop{background:rgba(4,6,10,.6);backdrop-filter:blur(4px)}
html[data-theme=light] dialog.panel::backdrop{background:rgba(24,26,30,.34)}
.dlg-hd{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:12px 16px;border-bottom:1px solid var(--line);font-weight:650;font-size:14px;background:linear-gradient(180deg,var(--hi-line),transparent 60%)}
.dlg-bd{padding:16px}
.dlg-ft{display:flex;justify-content:flex-end;gap:8px;padding:12px 16px;border-top:1px solid var(--line)}
.ck-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.ck-grid label{display:flex;align-items:center;gap:8px;margin:0;padding:8px 10px;border:1px solid var(--line);border-radius:3px;font-size:13px;color:var(--ink);cursor:pointer;transition:border-color .15s}
.ck-grid label:hover{border-color:var(--accent)}

/* ---------- 轻提示 ---------- */
.toast{
  position:fixed;left:50%;bottom:26px;z-index:130;
  transform:translateX(-50%) translateY(8px);
  background:var(--raised);border:1px solid var(--line-strong);color:var(--ink);
  border-left:2px solid var(--accent);
  padding:9px 14px;border-radius:var(--r-ctl);box-shadow:var(--shadow-pop);
  font-size:13px;opacity:0;pointer-events:none;max-width:calc(100vw - 40px);
  transition:opacity .18s,transform .18s;
}
.toast.show{opacity:1;transform:translateX(-50%) translateY(0)}

/* ---------- 空态 / 骨架 ---------- */
.empty{display:flex;flex-direction:column;align-items:center;gap:8px;padding:34px 14px;color:var(--faint);font-size:12.5px;text-align:center}
.empty .code{font-size:10.5px;border:1px dashed var(--line-strong);padding:2px 8px;border-radius:2px;letter-spacing:.14em;font-family:ui-monospace,Menlo,Consolas,monospace;text-transform:uppercase}
.skel{
  display:block;height:12px;border-radius:3px;max-width:100%;
  background:linear-gradient(90deg,var(--surface-2) 25%,var(--hover) 45%,var(--surface-2) 65%);
  background-size:220% 100%;animation:sk 1.15s linear infinite;
}
@keyframes sk{from{background-position:120% 0}to{background-position:-120% 0}}

/* ---------- 登录页 ---------- */
.auth-wrap{
  min-height:100dvh;display:grid;place-items:center;padding:24px 14px;
  position:relative;
}
.auth-card{
  width:min(402px,100%);background:var(--surface);
  border:1px solid var(--line-strong);border-radius:6px;
  box-shadow:var(--shadow-pop);padding:28px 26px 24px;
  position:relative;overflow:hidden;
}
.auth-card::before{ /* 顶部钢蓝发丝线 */
  content:"";position:absolute;top:0;left:0;right:0;height:2px;
  background:linear-gradient(90deg,transparent,var(--accent),transparent);
}
.brand-lg{margin-bottom:18px}
.auth-card .eyebrow{font-size:10px;letter-spacing:.24em;color:var(--faint);font-weight:700;margin-top:4px;text-transform:uppercase}
.auth-card h1{font-size:22px;margin:8px 0 5px;letter-spacing:.02em}
.auth-card .sub{color:var(--muted);font-size:12.5px;margin:0 0 6px;line-height:1.6}
.alert{
  margin:12px 0 0;padding:9px 12px;border-radius:var(--r-ctl);
  background:color-mix(in srgb,var(--bad) 10%,var(--surface));
  border:1px solid color-mix(in srgb,var(--bad) 38%,transparent);
  color:var(--bad);font-size:13px;
}
.alert[hidden]{display:none}
.captcha-row{display:grid;grid-template-columns:1fr 108px;gap:8px;align-items:center}
.captcha-canvas{
  width:100%;height:44px;display:block;
  border:1px solid var(--line-strong);border-radius:var(--r-ctl);
  background:var(--input);cursor:pointer;
}
.auth-card .btn.block{height:42px;margin-top:18px;font-size:14px;letter-spacing:.06em}
.auth-foot{margin-top:14px;text-align:center;font-size:12.5px;color:var(--muted)}
.auth-foot a{color:var(--ink);font-weight:650;border-bottom:1px solid var(--line-strong);padding-bottom:1px;transition:border-color .15s,color .15s}
.auth-foot a:hover{border-bottom-color:var(--accent);color:var(--accent)}
.muted-small{font-size:11px;color:var(--faint);margin-top:12px;text-align:center;letter-spacing:.02em}

/* ---------- 移动端 ---------- */
.tabbar{display:none}
@media (max-width:820px){
  .stat-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .grid.c3{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media (max-width:700px){
  .admin-layout{grid-template-columns:1fr;gap:12px}
  .admin-nav{flex-direction:row;flex-wrap:wrap;border-right:0;padding:0 0 10px;border-bottom:1px solid var(--line)}
  .admin-nav .btn{width:auto;flex:1}
}
@media (max-width:760px){
  .topbar{padding:0 10px;gap:8px}
  .topbar .tag{display:none}
  .draw-strip{gap:14px;font-size:11.5px;padding:7px 10px}
  /* 侧边导航为fixed抽屉，靠菜单按钮展开，不 display:none */
  .sider{top:0;padding-top:54px}
  .shell{min-height:calc(100dvh - var(--topbar-h) - var(--strip-h) - 50px)}
  .main{padding:12px 12px 24px}
  .tabbar{
    display:flex;position:sticky;bottom:0;z-index:70;
    background:color-mix(in srgb,var(--surface) 94%,transparent);
    backdrop-filter:blur(8px);border-top:1px solid var(--line);
  }
  .tabbar a{
    flex:1;display:flex;flex-direction:column;align-items:center;gap:2px;
    padding:7px 0 9px;font-size:10.5px;color:var(--muted);
    transition:color .15s;
  }
  .tabbar a svg{width:17px;height:17px}
  .tabbar a.active{color:var(--ink)}
  .tabbar a.active svg{color:var(--accent)}
  .user-chip span:not(.avatar){display:none}
  .user-chip{padding:0 8px}
}
@media (max-width:560px){
  .grid.c2,.grid.c3{grid-template-columns:1fr}
  .form-grid{grid-template-columns:1fr}
  .stat-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
  .task-rows{grid-template-columns:repeat(2,minmax(0,1fr))}
  .captcha-row{grid-template-columns:1fr 96px}
  .auth-card{padding:22px 18px}
}
@media (prefers-reduced-motion:reduce){
  *{animation:none!important;transition:none!important}
}
/* ============================================================
   策略卡 & 移动端比例修复（st-v2）
   ============================================================ */
/* 卡头：允许换行 + 标题不压缩 */
.hall-hd{flex-wrap:wrap;row-gap:8px}
.hall-hd h3{flex:1 1 auto;min-width:0;overflow-wrap:anywhere;line-height:1.35}
.hall-hd .tag{flex:0 0 auto;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.hall-hd button[data-toggle]{flex:0 0 auto;white-space:nowrap}

/* 策略详情区 */
.st-detail{margin-top:12px}
.st-detail[hidden]{display:none}

/* 指标条：窄屏两列 */
.hall-streaks{word-break:keep-all}

/* 计算器输入区：窄屏自适应 */
#strategy-calc .form-grid{grid-template-columns:repeat(4,minmax(0,1fr))}
#mc-out table{font-size:12.5px}
#mc-warn{line-height:1.7}

@media (max-width:820px){
  #strategy-calc .form-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media (max-width:760px){
  /* 卡头：标题占满一行，标签+按钮换到第二行 */
  .hall-hd{gap:8px}
  .hall-hd h3{flex:1 1 100%;font-size:15px}
  .hall-hd .spacer{display:none}
  .hall-hd .tag{order:3;margin-left:0}
  .hall-hd button[data-toggle]{order:4;margin-left:auto}

  /* 指标条两列，数字看得清 */
  .hall-streaks{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px 4px;text-align:left}
  .hall-streaks>div{padding:2px 0}

  /* 搜索栏 */
  .toolbar{gap:8px}
  .toolbar .w180,.toolbar .w200,.toolbar .w220{width:100%;flex:1 1 100%}

  /* 表格横向可滑，不挤压变形 */
  .table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}
  .table-wrap>table{min-width:520px}

  /* 策略卡内边距收窄 */
  .card-bd{padding:12px 12px 14px}
  .hall-hd .tag{font-size:10.5px}
  .form-ft.mt{justify-content:stretch}
  .form-ft.mt .btn{flex:1 1 auto}
}
@media (max-width:420px){
  .hall-hd h3{font-size:14.5px}
  #mc-out table{font-size:11.5px}
}

/* ============================================================
   展开后布局修复 v3：grid 子项不撑宽 + 统一窄屏单列
   ============================================================ */
/* 关键：grid 子项默认 min-width:auto，宽表格会把整列撑爆 -> 允许收缩 */
.grid>*,.grid.c2>*,.grid.c3>*{min-width:0}
.stat-grid>*{min-width:0}
.hall-streaks>*{min-width:0}
.form-grid>*{min-width:0}

/* 表头不换行，避免单元格挤压 */
.table th,.table td{white-space:nowrap}
.table th.n,.table td.n{text-align:right}

/* 详情区内部表容器：限定高度 + 双向可滚 */
.st-detail .table-wrap{max-width:100%;overflow:auto}
/* A/B/C 位：算法大厅来源标注（与球号同一行） */
.st-pos-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:6px 0}
.st-pos-row .balls{display:flex;gap:4px;margin:0}
.st-live{font-size:11.5px;color:var(--muted);background:var(--surface-2);
  border:1px solid var(--line);border-radius:999px;padding:2px 8px;white-space:nowrap}

@media (max-width:900px){
  /* 计算器输入区两列 */
  #strategy-calc .form-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media (max-width:760px){
  /* 策略列表改单列（原来到 560px 才变单列 -> 560~760 区间两列太挤） */
  .grid.c2{grid-template-columns:1fr}
  #strategy-calc .form-grid{grid-template-columns:1fr 1fr}
  .hall-streaks{grid-template-columns:repeat(2,minmax(0,1fr))}
  .table-wrap>table{min-width:560px}
}
@media (max-width:480px){
  #strategy-calc .form-grid{grid-template-columns:1fr}
  .hall-streaks{grid-template-columns:repeat(2,minmax(0,1fr))}
  .table-wrap>table{min-width:480px}
  .table th,.table td{padding-left:6px;padding-right:6px;font-size:11.5px}
}

/* ============================================================
   统计卡响应式修复 v4：窄屏 2x2，不再挤压
   ============================================================ */
.stat-grid .stat{display:flex;flex-direction:column;justify-content:center}
.stat .k{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.stat .v{white-space:nowrap}

@media (max-width:900px){
  .stat-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
}
@media (max-width:760px){
  .stat-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
  .stat{padding:10px 10px 12px;min-height:78px}
  .stat .k{font-size:10px;letter-spacing:.06em}
  .stat .v{font-size:19px;min-height:24px}
  .stat .d{font-size:10.5px}
}
@media (max-width:400px){
  .stat .v{font-size:17px}
  .stat .k{font-size:9.5px}
}

/* ============================================================
   投注货币：迷你按钮 + 弹窗选择
   ============================================================ */
/* 卡头迷你按钮 */
.coin-mini{
  display:inline-flex;align-items:center;gap:6px;flex:0 0 auto;
  height:26px;padding:0 9px;cursor:pointer;
  background:var(--surface-2);border:1px solid var(--line-strong);border-radius:999px;
  color:var(--ink);font:inherit;transition:border-color .15s,background .15s;
}
.coin-mini:hover{border-color:var(--accent);background:var(--sel)}
.coin-mini-k{font-size:10px;color:var(--faint);letter-spacing:.06em}
.coin-mini b{font-size:12px;font-weight:650;white-space:nowrap}
.coin-mini .caret{
  width:0;height:0;border-left:3.5px solid transparent;border-right:3.5px solid transparent;
  border-top:4px solid var(--faint);display:inline-block;
}

/* 弹窗内选项 */
.coin-pick{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.coin-opt{
  position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;
  min-height:64px;padding:12px;cursor:pointer;
  background:var(--surface-2);border:1px solid var(--line-strong);border-radius:6px;
  color:var(--ink);font:inherit;transition:border-color .15s,background .15s,transform .12s;
}
.coin-opt b{font-size:14px;font-weight:650;letter-spacing:.02em;white-space:nowrap}
.coin-opt span{font-size:10px;color:var(--faint)}
.coin-opt:hover{border-color:var(--accent);transform:translateY(-1px)}
.coin-opt.on{
  border-color:var(--accent);
  background:color-mix(in srgb,var(--accent) 12%,transparent);
  box-shadow:0 0 0 1px var(--accent) inset;
}
.coin-opt.on span{color:var(--accent)}
.coin-opt i{
  position:absolute;top:5px;right:8px;font-style:normal;
  font-size:12px;font-weight:700;color:var(--accent);
}
@media (max-width:360px){
  .coin-pick{grid-template-columns:1fr}
}
@media (max-width:760px){
  .coin-mini-k{display:none}
}

/* ============================================================
   引擎页：策略小按钮
   ============================================================ */
.strat-chips{display:flex;flex-wrap:wrap;gap:8px}
.strat-chip{
  display:inline-flex;align-items:center;gap:6px;flex:0 0 auto;
  height:32px;padding:0 12px;cursor:pointer;
  background:var(--surface-2);border:1px solid var(--line-strong);border-radius:999px;
  color:var(--muted);font:inherit;font-size:13px;font-weight:600;letter-spacing:.01em;
  transition:border-color .15s,background .15s,color .15s,transform .12s;
}
.strat-chip:hover{border-color:var(--accent);transform:translateY(-1px)}
.strat-chip:disabled{opacity:.55;cursor:wait}
.strat-chip .dotk{
  width:7px;height:7px;border-radius:50%;flex:none;
  background:var(--line-strong);transition:background .15s,box-shadow .15s;
}
.strat-chip.on{
  color:var(--ink);
  border-color:var(--accent);
  background:color-mix(in srgb,var(--accent) 12%,transparent);
}
.strat-chip.on .dotk{
  background:var(--accent);
  box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 22%,transparent);
}
@media (max-width:760px){
  .strat-chip{height:30px;padding:0 10px;font-size:12.5px}
  .strat-chips{gap:7px}
}

/* ============================================================
   引擎页：核心策略（策略大厅）选择行 + 开关
   ============================================================ */
.core-row{
  display:flex;align-items:center;gap:10px;flex-wrap:wrap;
  margin-top:14px;padding-top:13px;border-top:1px dashed var(--line);
}
.core-left{display:flex;align-items:center;gap:8px;flex:1 1 320px;min-width:0}
.core-tag{
  flex:0 0 auto;height:20px;padding:0 8px;display:inline-flex;align-items:center;
  border-radius:var(--r-tag);border:1px solid var(--line-strong);
  background:var(--surface-2);color:var(--faint);
  font-size:10.5px;letter-spacing:.08em;
}
.core-sel{
  flex:1 1 auto;min-width:0;height:32px;padding:0 30px 0 10px;
  background:var(--surface-2);color:var(--ink);
  border:1px solid var(--line-strong);border-radius:var(--r-ctl);
  font:inherit;font-size:13px;cursor:pointer;
  appearance:none;-webkit-appearance:none;
  background-image:linear-gradient(45deg,transparent 50%,var(--faint) 50%),linear-gradient(135deg,var(--faint) 50%,transparent 50%);
  background-position:calc(100% - 15px) 14px,calc(100% - 10px) 14px;
  background-size:5px 5px,5px 5px;background-repeat:no-repeat;
}
.core-sel:hover{border-color:var(--accent)}
.core-sel:disabled{opacity:.6;cursor:wait}
.core-right{display:flex;align-items:center;gap:10px;flex:0 0 auto;margin-left:auto}
.core-meta{font-size:11.5px;color:var(--faint);white-space:nowrap}

/* 开关 */
.switch{
  position:relative;display:inline-flex;align-items:center;gap:7px;flex:0 0 auto;
  height:28px;padding:0 11px 0 9px;cursor:pointer;font:inherit;
  background:var(--surface-2);border:1px solid var(--line-strong);border-radius:999px;
  color:var(--muted);font-size:12px;font-weight:600;
  transition:border-color .15s,background .15s,color .15s;
}
.switch:hover{border-color:var(--accent)}
.switch .knob{
  width:32px;height:16px;border-radius:999px;flex:none;position:relative;
  background:var(--line-strong);transition:background .18s;
}
.switch .knob::after{
  content:'';position:absolute;top:2px;left:2px;width:12px;height:12px;border-radius:50%;
  background:#fff;box-shadow:0 1px 2px rgba(0,0,0,.25);
  transition:transform .18s;
}
.switch.on{color:var(--ink);border-color:var(--accent);
  background:color-mix(in srgb,var(--accent) 12%,transparent)}
.switch.on .knob{background:var(--accent)}
.switch.on .knob::after{transform:translateX(16px)}
.switch:disabled{opacity:.6;cursor:wait}
@media (max-width:760px){
  .core-left{flex:1 1 100%}
  .core-right{width:100%;justify-content:space-between;margin-left:0}
  .core-meta{white-space:normal}
}

/* ============================================================
   引擎页：下注方式分段切换 + 自定义玩法编辑器
   ============================================================ */
.seg{
  display:inline-flex;gap:0;padding:3px;
  background:var(--surface-2);border:1px solid var(--line-strong);border-radius:var(--r-ctl);
}
.seg-btn{
  height:28px;padding:0 16px;cursor:pointer;font:inherit;font-size:12.5px;font-weight:600;
  background:transparent;border:0;border-radius:calc(var(--r-ctl) - 2px);
  color:var(--muted);transition:background .15s,color .15s;
}
.seg-btn:hover{color:var(--ink)}
.seg-btn.on{background:var(--surface);color:var(--ink);box-shadow:0 1px 2px rgba(0,0,0,.08)}
.pane[hidden]{display:none}

/* 下注方式：tab 行 + 右侧总开关 */
.mode-bar{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.mode-sw{display:flex;align-items:center;gap:8px;margin-left:auto}
.mode-sw[hidden]{display:none}
.mode-sw-txt{font-size:12px;color:var(--muted);white-space:nowrap}

/* 自定义玩法：策略条目（紧凑单行） */
.cp-list{display:flex;flex-direction:column;gap:6px;margin-top:12px}
.cp-empty{
  padding:10px;text-align:center;font-size:12px;color:var(--faint);
  border:1px dashed var(--line);border-radius:var(--r-ctl);
}
.cp-item{
  display:flex;align-items:center;gap:8px;min-height:34px;
  padding:6px 8px;border:1px solid var(--line);border-radius:var(--r-ctl);
  background:var(--surface-2);
}
.cp-item.off{opacity:.62}
.cp-item-idx{
  flex:0 0 auto;width:17px;height:17px;display:inline-flex;align-items:center;justify-content:center;
  border-radius:50%;border:1px solid var(--line-strong);font-size:10px;color:var(--muted);
}
.cp-item-name{flex:0 1 auto;min-width:0;font-size:12.5px;font-weight:600;color:var(--ink);
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cp-item-meta{flex:1 1 auto;min-width:0;font-size:11px;color:var(--faint);
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cp-item-btns{flex:0 0 auto;display:flex;gap:4px;margin-left:auto}
.cp-ibtn{
  width:24px;height:24px;display:inline-flex;align-items:center;justify-content:center;
  border:1px solid var(--line);border-radius:6px;background:transparent;color:var(--muted);
  font:inherit;font-size:13px;line-height:1;cursor:pointer;padding:0;
}
.cp-ibtn:hover{color:var(--ink);border-color:var(--line-strong)}
.cp-ibtn-del:hover{color:var(--bad);border-color:color-mix(in srgb,var(--bad) 45%,transparent)}
.cp-add{
  width:100%;height:32px;margin-top:8px;display:flex;align-items:center;justify-content:center;gap:6px;
  border:1px dashed var(--line-strong);border-radius:var(--r-ctl);background:transparent;
  color:var(--muted);font:inherit;font-size:12.5px;cursor:pointer;
}
.cp-add:hover{color:var(--ink);border-color:var(--accent);background:var(--hover)}
.cp-add .cp-add-plus{font-size:15px;line-height:1}
.cp-list + .cp-add{margin-top:8px}

/* 阶梯循环小提示 */
.cp-lv-tip{margin:2px 0 0;font-size:11.5px;line-height:1.5}

.cp-acts{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}
.cp-acts .btn{height:30px;padding:0 12px;font-size:12.5px}

dialog.panel.wide{max-width:560px;width:min(94vw,560px)}
.fld{display:block;margin:0 0 14px}
.fld > span{display:block;font-size:11.5px;color:var(--faint);margin-bottom:5px}
.fld.inline{display:inline-block;margin:0 10px 10px 0;min-width:96px}
.inp{
  width:100%;height:32px;padding:0 10px;
  background:var(--surface-2);color:var(--ink);
  border:1px solid var(--line-strong);border-radius:var(--r-ctl);
  font:inherit;font-size:13px;
}
.inp:focus{outline:none;border-color:var(--accent)}
.cp-item{display:flex;gap:7px;align-items:center;margin-bottom:7px}
.cp-item .cp-c{flex:1 1 auto;min-width:0}
.cp-item .cp-a{flex:0 0 92px}
.cp-item .cp-o{flex:0 0 84px}
.cp-item .cp-rm{flex:0 0 auto}
.cp-chase{display:flex;flex-wrap:wrap;align-items:center;gap:0 4px}
.ck{display:inline-flex;align-items:center;gap:6px;font-size:12.5px;
  color:var(--muted);margin:0 14px 10px 0;cursor:pointer}
.dlg-ft{display:flex;gap:10px;justify-content:flex-end;padding:12px 0 0}
@media (max-width:760px){
  .cp-item{flex-wrap:wrap}
  .cp-item .cp-c{flex:1 1 100%}
  .cp-item .cp-a,.cp-item .cp-o{flex:1 1 40%}
}

/* —— 自定义策略编辑器：当前算法预览 —— */
.cp-prev{
  margin-top:4px;border:1px solid var(--line);border-radius:var(--r-ctl);
  background:var(--surface-2);padding:10px 12px;
}
.cp-prev-hd{font-size:11.5px;color:var(--faint);margin-bottom:7px}
.cp-prev-empty{font-size:12.5px;color:var(--faint)}
.cp-prev-row{display:flex;flex-wrap:wrap;gap:7px;align-items:center}
.cp-prev-row b{font-size:13.5px;font-weight:600}
.cp-prev-tag{
  display:inline-block;font-size:11.5px;padding:2px 7px;border-radius:999px;
  border:1px solid var(--line-strong);color:var(--dim);white-space:nowrap;
}
.cp-prev-tag.on{border-color:transparent;background:var(--accent-soft,rgba(80,200,120,.16));color:var(--ink)}
.cp-prev-note{font-size:12px;color:var(--dim);margin-top:7px;line-height:1.5}
.cp-prev-items{font-size:12px;color:var(--dim);margin-top:6px;word-break:break-all;line-height:1.55}
@media (max-width:760px){
  .cp-prev-row b{flex:1 1 100%}
}

/* —— 算法大厅：内置算法视图 —— */
.n28-issue{font-size:12.5px;color:var(--dim);margin-bottom:10px}
.n28-issue b{font-size:14px;color:var(--ink)}
.n28-nums{display:flex;flex-wrap:wrap;gap:8px;margin:4px 0 8px}
.n28-num{
  display:inline-flex;align-items:center;justify-content:center;
  width:40px;height:40px;border-radius:10px;font-size:19px;font-weight:700;
  background:var(--surface-2);border:1px solid var(--line-strong);color:var(--ink);
}
.n28-bars{margin-top:14px;display:grid;gap:5px}
.n28-bar{display:flex;align-items:center;gap:9px;font-size:12px}
.n28-bar span{width:16px;text-align:right;color:var(--dim);flex:0 0 16px}
.n28-bar i{height:9px;border-radius:5px;background:var(--line-strong);display:block}
.n28-bar em{font-style:normal;color:var(--faint);font-size:11.5px}
.n28-tbl{display:grid;gap:2px}
.n28-tr{display:grid;grid-template-columns:1.4fr 1fr 1fr .8fr 1fr;gap:8px;
  padding:7px 8px;font-size:12.5px;border-radius:7px}
.n28-tr:nth-child(odd){background:var(--surface-2)}
.n28-th{color:var(--faint);font-size:11.5px;background:transparent!important}
.n28-tr .up{color:#3fae6a}
.n28-tr .down{color:#d4645c}
@media (max-width:760px){
  .n28-tr{grid-template-columns:1.2fr 1fr 1fr;font-size:11.5px}
  .n28-tr span:nth-child(4),.n28-tr span:nth-child(5){display:none}
}

/* ---------- 投注引擎：查余额结果 ---------- */
#eng-bal-box{margin-bottom:10px}
.eng-bal-card{position:relative;border:1px solid var(--line-strong);border-radius:var(--r-ctl);
  background:var(--surface-2);padding:10px 34px 10px 12px}
.eng-bal-x{position:absolute;top:6px;right:6px;width:24px;height:24px;font-size:12px}

/* ============================================================
   登录页（新版）：左侧介绍 + 右侧登录卡
   ============================================================ */
.auth-shell{
  min-height:100dvh;display:grid;grid-template-columns:1.05fr .95fr;
  background:var(--page);
}
.auth-hero{
  position:relative;display:flex;flex-direction:column;justify-content:center;gap:16px;
  padding:56px 54px 40px;border-right:1px solid var(--line);overflow:hidden;
}
.auth-hero::before{ /* 底纹网格 */
  content:"";position:absolute;inset:0;pointer-events:none;opacity:.65;
  background-image:linear-gradient(var(--grid)),linear-gradient(90deg,var(--grid));
  background-size:26px 26px;
}
.auth-hero::after{ /* 右上光斑 */
  content:"";position:absolute;right:-130px;top:-150px;width:440px;height:440px;
  background:radial-gradient(circle,var(--accent-soft),transparent 66%);pointer-events:none;
}
.auth-hero>*{position:relative;z-index:1}
.auth-hero .brand{margin-bottom:6px}
.auth-hero .eyebrow{font-size:10px;letter-spacing:.24em;color:var(--faint);font-weight:700;text-transform:uppercase}
.auth-hero h1{font-size:27px;line-height:1.25;margin:8px 0 0;letter-spacing:.01em}
.hero-sub{color:var(--muted);font-size:13.5px;line-height:1.8;margin:0;max-width:46ch}
.hero-feat{list-style:none;margin:8px 0 0;padding:0;display:flex;flex-direction:column;gap:11px}
.hero-feat li{display:flex;align-items:flex-start;gap:10px;font-size:13px;color:var(--ink);line-height:1.6}
.hero-feat li::before{
  content:"";flex:0 0 auto;width:6px;height:6px;margin-top:6px;border-radius:1px;
  background:var(--accent);transform:rotate(45deg);
}
.hero-feat b{font-weight:650}
.hero-feat span{color:var(--muted)}
.hero-stat{display:flex;gap:28px;margin-top:12px;padding-top:18px;border-top:1px solid var(--line)}
.hero-stat .hs{display:flex;flex-direction:column;gap:4px}
.hero-stat .hs-k{font-size:10.5px;letter-spacing:.13em;color:var(--faint);text-transform:uppercase}
.hero-stat .hs-v{font-size:19px;font-weight:700;letter-spacing:.01em;font-variant-numeric:tabular-nums}
.hero-foot{margin-top:20px;font-size:11px;color:var(--faint);letter-spacing:.04em}

.auth-panel{display:grid;place-items:center;padding:40px 26px}
.auth-panel .auth-card{width:min(392px,100%);box-shadow:var(--shadow-pop)}

/* 密码显隐 */
.pw-wrap{position:relative}
.pw-wrap input{width:100%;padding-right:44px}
.pw-eye{
  position:absolute;right:5px;top:50%;transform:translateY(-50%);
  width:32px;height:32px;display:grid;place-items:center;padding:0;
  border:0;background:transparent;color:var(--faint);cursor:pointer;border-radius:var(--r-ctl);
  transition:color .15s,background-color .15s;
}
.pw-eye:hover{color:var(--ink);background:var(--hover)}
.pw-eye svg{width:17px;height:17px;fill:none;stroke:currentColor;stroke-width:1.6;
  stroke-linecap:round;stroke-linejoin:round}

/* 记住账号 / 忘记密码 */
.auth-row{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:14px}
.auth-ck{display:flex;align-items:center;gap:7px;margin:0;font-size:12.5px;color:var(--muted);cursor:pointer}
.auth-ck input{width:15px;height:15px;padding:0;accent-color:var(--accent);cursor:pointer}
.auth-link{font-size:12.5px;color:var(--muted);text-decoration:none;border-bottom:1px solid transparent;
  transition:color .15s,border-color .15s}
.auth-link:hover{color:var(--accent);border-bottom-color:var(--accent)}

/* 演示账号一键填入 */
.auth-demo{margin-top:16px;padding-top:14px;border-top:1px dashed var(--line)}
.auth-demo-tt{display:block;font-size:11.5px;color:var(--faint);margin-bottom:8px;letter-spacing:.02em}
.chips{display:flex;gap:7px;flex-wrap:wrap}
.chip-sm{
  border:1px solid var(--line-strong);background:var(--surface-2);color:var(--muted);
  border-radius:var(--r-tag);padding:4px 9px;font:inherit;font-size:11.5px;cursor:pointer;
  transition:color .15s,border-color .15s,background-color .15s;
}
.chip-sm:hover{color:var(--ink);border-color:var(--accent);background:var(--accent-soft)}
.chip-sm b{font-weight:650;color:var(--ink)}

/* 登录卡顶部小标题 */
.auth-card .card-kicker{
  display:flex;align-items:center;justify-content:space-between;gap:10px;
  padding-bottom:14px;margin-bottom:4px;border-bottom:1px solid var(--line);
}
.auth-card .card-kicker .k{font-size:12.5px;color:var(--muted);letter-spacing:.02em}
.auth-card .card-kicker .st{display:inline-flex;align-items:center;gap:6px;font-size:11px;color:var(--faint)}
.auth-card .card-kicker .dot{width:6px;height:6px;border-radius:50%;background:var(--faint)}
.auth-card .card-kicker .dot.on{background:var(--good,#2f9e63)}
.auth-card .card-kicker .dot.off{background:var(--bad)}

@media (max-width:900px){
  .auth-shell{grid-template-columns:1fr}
  .auth-hero{padding:30px 20px 24px;border-right:0;border-bottom:1px solid var(--line);gap:10px}
  .auth-hero h1{font-size:21px}
  .hero-sub{font-size:12.5px}
  .hero-feat,.hero-stat,.hero-foot{display:none}
  .auth-panel{padding:26px 16px 40px}
}

/* ---------- TG 账号页：登录态检查占位 ---------- */
.tg-gate{padding:34px 20px;text-align:center;font-size:12.5px;color:var(--faint);
  border:1px dashed var(--line);border-radius:var(--r-card);background:var(--surface-2)}

/* ============================================================
   盘口赔率设置弹窗
   ============================================================ */
.od-mask{position:fixed;inset:0;z-index:60;display:grid;place-items:center;padding:18px;
  background:rgba(8,10,12,.55)}
.od-mask[hidden]{display:none}
.od-panel{width:min(880px,100%);max-height:88dvh;display:flex;flex-direction:column;
  background:var(--surface);border:1px solid var(--line-strong);border-radius:6px;
  box-shadow:var(--shadow-pop);overflow:hidden}
.od-hd{display:flex;align-items:center;gap:10px;padding:14px 16px;border-bottom:1px solid var(--line)}
.od-hd>span:first-child{font-size:15px;font-weight:700;letter-spacing:.02em}
.od-hd-sub{font-size:11.5px;color:var(--faint)}
.od-hd .icon-btn{margin-left:auto}
.od-body{flex:1;min-height:0;overflow:auto;padding:14px 16px}
.od-ft{display:flex;align-items:center;gap:8px;padding:12px 16px;border-top:1px solid var(--line);
  background:var(--surface-2)}
.od-ft .spacer{flex:1}
.od-sec-hd{display:flex;align-items:baseline;gap:8px;font-size:12.5px;font-weight:650;
  margin:4px 0 9px}
.od-sec-hd .muted{font-size:11px;font-weight:400;color:var(--faint)}
.od-preset{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px}
.od-pre{display:flex;flex-direction:column;gap:3px;align-items:flex-start;text-align:left;
  padding:9px 11px;border:1px solid var(--line-strong);border-radius:var(--r-ctl);
  background:var(--surface-2);color:var(--ink);font:inherit;cursor:pointer;
  transition:border-color .15s,background-color .15s}
.od-pre:hover{border-color:var(--accent)}
.od-pre.on{border-color:var(--accent);background:var(--accent-soft);box-shadow:inset 2px 0 0 var(--accent)}
.od-pre b{font-size:12.5px;font-weight:650}
.od-pre-sub{font-size:10.5px;color:var(--faint)}
.od-rule{margin:9px 0 16px;padding:8px 11px;font-size:11.5px;line-height:1.6;color:var(--muted);
  border:1px dashed var(--line-strong);border-radius:var(--r-ctl);background:var(--surface-2)}
.od-groups{display:flex;flex-direction:column;gap:10px}
.od-grp{border:1px solid var(--line);border-radius:var(--r-ctl);background:var(--surface-2)}
.od-grp-hd{padding:8px 11px;font-size:12px;font-weight:650;border-bottom:1px solid var(--line)}
.od-grp summary{padding:8px 11px;font-size:12px;font-weight:650;cursor:pointer;
  display:flex;align-items:center;gap:8px;list-style:none}
.od-grp summary::-webkit-details-marker{display:none}
.od-grp summary::before{content:"▸";color:var(--faint);font-size:10px}
.od-grp[open] summary::before{content:"▾"}
.od-grp[open] summary{border-bottom:1px solid var(--line)}
.od-cnt{margin-left:auto;font-size:10.5px;font-weight:400;color:var(--faint)}
.od-cells{display:grid;grid-template-columns:repeat(auto-fill,minmax(104px,1fr));gap:8px;padding:10px 11px}
.od-cell{display:flex;flex-direction:column;gap:4px;margin:0;font-size:11px;color:var(--muted)}
.od-k{letter-spacing:.02em}
.od-in{height:28px;padding:0 7px;width:100%;min-width:0;font-size:12px;
  border:1px solid var(--line-strong);border-radius:var(--r-ctl);background:var(--input);color:var(--ink)}
.od-in:focus{outline:none;border-color:var(--accent)}

/* ===== 账号卡（只读信息行） ===== */
.acct-rows{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px 18px;margin-top:12px}
.acct-rows .ar{display:flex;justify-content:space-between;align-items:baseline;gap:12px;
  border-bottom:1px dashed var(--line);padding:7px 2px;font-size:12.5px}
.acct-rows .ar span{color:var(--muted);white-space:nowrap}
.acct-rows .ar b{font-weight:650;font-variant-numeric:tabular-nums;overflow:hidden;text-overflow:ellipsis}
@media (max-width:640px){.acct-rows{grid-template-columns:1fr}}

/* ===== 账号页（无 tab，限宽居中） ===== */
.acct-wrap{max-width:720px}
.acct-wrap .form-grid{grid-template-columns:repeat(3,minmax(0,1fr))}
.acct-wrap .form-ft{gap:10px}
.acct-wrap .form-ft .btn{min-width:120px}
.table-log{table-layout:fixed;width:100%}
.table-log th:nth-child(1),.table-log td:nth-child(1){width:40%}
.table-log th:nth-child(2),.table-log td:nth-child(2){width:26%}
.table-log td{overflow:hidden;text-overflow:ellipsis}
@media (max-width:900px){.acct-wrap .form-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:640px){.acct-wrap .form-grid{grid-template-columns:1fr}.acct-wrap .form-ft .btn{flex:1;min-width:0}}

/* ===== 自动追号卡 ===== */
[data-fold] .card-hd{align-items:center}
.ch-off .ch-chips,.ch-off .ch-form{opacity:.55}
.ch-pick{margin-bottom:12px}
.ch-pick-hd{display:flex;align-items:baseline;justify-content:space-between;gap:10px;
  font-size:12px;color:var(--muted);margin-bottom:7px}
.ch-pick-hd b{font-size:13px;color:var(--ink);font-variant-numeric:tabular-nums}
.ch-chips{display:grid;grid-template-columns:repeat(auto-fill,minmax(30px,1fr));gap:5px}
.ch-chip{height:29px;min-width:0;padding:0;border:1px solid var(--line-strong);border-radius:var(--r-ctl);
  background:var(--input);color:var(--muted);font-size:12px;font-variant-numeric:tabular-nums;cursor:pointer;
  transition:border-color .14s,background .14s,color .14s}
.ch-chip:hover{border-color:var(--accent);color:var(--ink)}
.ch-chip.on{background:var(--sel);border-color:var(--accent);color:var(--ink);font-weight:700;
  box-shadow:inset 0 0 0 1px var(--accent)}
.ch-form{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px 14px;margin-bottom:12px}
.ch-form input,.ch-form select{height:34px}
.ch-meta{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 6px;font-size:12px;color:var(--muted);
  padding:9px 11px;border:1px solid var(--line);border-radius:var(--r-ctl);background:var(--hover)}
.ch-meta b{color:var(--ink);font-weight:650;font-variant-numeric:tabular-nums}
.ch-meta .pos{color:var(--good)} .ch-meta .neg{color:var(--bad)}
.ch-dot{color:var(--faint)}
.ch-last{margin-top:8px;font-size:12px;color:var(--muted);display:flex;flex-wrap:wrap;
  align-items:baseline;gap:5px 7px}
.ch-last b{font-variant-numeric:tabular-nums}
.ch-last .pos{color:var(--good)} .ch-last .neg{color:var(--bad)}
.ch-tag{font-size:10.5px;padding:1px 7px;border-radius:2px;letter-spacing:.06em;font-weight:650;
  border:1px solid var(--line-strong);color:var(--muted)}
.ch-tag.win{border-color:var(--good);color:var(--good);background:color-mix(in srgb,var(--good) 10%,transparent)}
.ch-tag.lose{border-color:var(--bad);color:var(--bad);background:color-mix(in srgb,var(--bad) 10%,transparent)}
@media (max-width:900px){.ch-form{grid-template-columns:1fr 1fr}}
@media (max-width:640px){.ch-form{grid-template-columns:1fr}.ch-chips{grid-template-columns:repeat(auto-fill,minmax(34px,1fr))}.ch-chip{height:32px}}

/* 杀组卡：标题用大字标注所杀形态 */
.rkill-group .hall-hd h3{color:var(--accent)}

/* ===== 自动追号折叠 ===== */
[data-fold] .card-hd{flex-wrap:wrap}
.ch-brief{font-size:11.5px;color:var(--faint);font-weight:400;flex:1 1 auto;
  min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;letter-spacing:.01em}
.ch-brief[hidden]{display:none}
.ch-xbtn{height:24px;padding:0 9px;font-size:11px;font-weight:600;color:var(--muted);
  background:var(--surface-2);border:1px solid var(--line-strong);border-radius:2px;cursor:pointer;
  letter-spacing:.04em;transition:border-color .14s,color .14s}
.ch-xbtn:hover{border-color:var(--accent);color:var(--ink)}
.ch-xbtn.up{border-color:var(--accent);color:var(--ink)}
[data-fold].ch-fold > .card-bd{display:none}

/* ===== 自动追号折叠（美化版） ===== */
[data-fold] .card-hd.ch-hd{display:flex;align-items:center;gap:10px;flex-wrap:wrap;
  padding-top:13px;padding-bottom:13px}
[data-fold].ch-fold .card-hd.ch-hd{padding-bottom:13px}
.ch-fold-btn{display:inline-flex;align-items:center;gap:7px;padding:0;margin:0;
  background:none;border:0;cursor:pointer;color:inherit;font:inherit;min-width:0}
.ch-fold-btn h3{margin:0;white-space:nowrap}
.ch-caret{width:0;height:0;flex:0 0 auto;border-left:5px solid transparent;
  border-right:5px solid transparent;border-top:6px solid var(--muted);
  transition:transform .18s ease;transform:rotate(-90deg)}
.ch-fold-btn[aria-expanded="true"] .ch-caret{transform:rotate(0deg);border-top-color:var(--accent)}
.ch-fold-btn:hover .ch-caret{border-top-color:var(--accent)}
.ch-fold-btn:hover h3{color:var(--accent)}
.ch-brief{font-size:11.5px;color:var(--faint);font-weight:400;flex:1 1 auto;
  min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;letter-spacing:.01em}
.ch-brief[hidden]{display:none}
[data-fold].ch-fold > .card-bd{display:none}
[data-fold]:not(.ch-fold) > .card-bd{animation:chDrop .2s ease-out}
@keyframes chDrop{from{opacity:.4;transform:translateY(-3px)}to{opacity:1;transform:none}}
@media (max-width:560px){.ch-brief{flex-basis:100%;order:3}.ch-hd .mode-sw{margin-left:auto}}

/* ===== 多选数字 chip ===== */
.ch-chips{display:grid;grid-template-columns:repeat(auto-fill,minmax(44px,1fr));gap:5px}
.ch-chip{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;
  height:40px;min-width:0;padding:0;border:1px solid var(--line-strong);border-radius:var(--r-ctl);
  background:var(--input);color:var(--muted);cursor:pointer;
  transition:border-color .14s,background .14s,color .14s,box-shadow .14s}
.ch-chip:hover{border-color:var(--accent);color:var(--ink)}
.ch-chip-n{font-size:13px;font-weight:650;font-variant-numeric:tabular-nums;line-height:1}
.ch-chip-om{font-size:9px;color:var(--faint);font-variant-numeric:tabular-nums;line-height:1}
.ch-chip.on{background:var(--sel);border-color:var(--accent);color:var(--ink);
  box-shadow:inset 0 0 0 1px var(--accent)}
.ch-chip.on .ch-chip-om{color:var(--muted)}
.ch-pick-ft{display:flex;align-items:center;gap:8px;margin-top:9px;font-size:11.5px;flex-wrap:wrap}
.ch-pick-ft .spacer{flex:1 1 auto}
.ch-mini{height:25px;padding:0 9px;font-size:11px;font-weight:600;color:var(--muted);
  background:var(--surface-2);border:1px solid var(--line-strong);border-radius:2px;cursor:pointer;
  transition:border-color .14s,color .14s}
.ch-mini:hover{border-color:var(--accent);color:var(--ink)}

/* ===== 普通下注卡 ===== */
.bt-groups{display:flex;flex-direction:column;gap:10px;margin-bottom:14px}
.bt-group{border:1px solid var(--line);border-radius:var(--r-ctl);padding:10px 11px;background:var(--surface)}
.bt-group.on{border-color:var(--accent);background:var(--hover)}
.bt-group-hd{display:flex;align-items:center;gap:9px;flex-wrap:wrap;margin-bottom:9px}
.bt-group-hd b{font-size:13px;color:var(--muted)}
.bt-group.on .bt-group-hd b{color:var(--ink)}
/* sm 小开关：去内边距，15px knob 正好内嵌；on 态由 knob 自身位移 15px
   （复位基类对 ::after 的位移，避免两套位移叠加 -> 圆点跑出按钮外） */
.switch.sm{width:34px;height:19px;min-width:34px;padding:0;justify-content:flex-start;gap:0}
.switch.sm .knob{width:15px;height:15px;margin-left:1px;position:relative}
.switch.sm .knob::after{left:0;top:0;width:15px;height:15px;transform:none !important;box-shadow:none}
.switch.sm.on .knob{transform:translateX(15px);background:transparent}
.bt-seg{display:inline-flex;border:1px solid var(--line-strong);border-radius:2px;overflow:hidden}
.bt-seg-b{height:23px;padding:0 9px;font-size:11px;font-weight:600;color:var(--muted);
  background:var(--surface-2);border:0;border-right:1px solid var(--line-strong);cursor:pointer;
  transition:background .14s,color .14s}
.bt-seg-b:last-child{border-right:0}
.bt-seg-b:hover{color:var(--ink)}
.bt-seg-b.on{background:var(--sel);color:var(--ink);font-weight:700}
.bt-algo{height:23px;font-size:11px;padding:0 4px;min-width:0;flex:1 1 90px}
.bt-chips{display:grid;grid-template-columns:repeat(auto-fill,minmax(66px,1fr));gap:6px}
.bt-chip{position:relative;height:36px;min-width:0;padding:0 4px;border:1px solid var(--line-strong);
  border-radius:var(--r-ctl);background:var(--input);color:var(--muted);cursor:pointer;
  font-size:13px;font-weight:650;font-variant-numeric:tabular-nums;
  display:flex;align-items:center;justify-content:center;gap:4px;
  transition:border-color .14s,background .14s,color .14s,box-shadow .14s}
.bt-chip:hover{border-color:var(--accent);color:var(--ink)}
.bt-chip i{font-style:normal;font-size:9.5px;color:var(--faint);font-weight:400}
.bt-chip.on{background:var(--sel);border-color:var(--accent);color:var(--ink);
  box-shadow:inset 0 0 0 1px var(--accent)}
.bt-chip.killed{background:color-mix(in srgb,var(--bad) 10%,var(--surface));
  border-color:var(--bad);color:var(--bad);text-decoration:line-through;cursor:not-allowed}
.bt-chip.killed em{position:absolute;top:-1px;right:2px;font-style:normal;font-size:8.5px;
  color:var(--bad);font-weight:700}
.bt-note{margin:7px 0 0;font-size:11px;color:var(--faint);line-height:1.5}
.bt-form{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px 14px;margin-bottom:12px}
.bt-form input,.bt-form select{height:34px}
.bt-meta{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 6px;font-size:12px;color:var(--muted);
  padding:9px 11px;border:1px solid var(--line);border-radius:var(--r-ctl);background:var(--hover)}
.bt-meta b{color:var(--ink);font-weight:650;font-variant-numeric:tabular-nums}
.bt-meta .pos{color:var(--good)} .bt-meta .neg{color:var(--bad)}
.bt-preview{margin-top:9px;padding:9px 11px;border:1px dashed var(--line-strong);
  border-radius:var(--r-ctl);background:var(--surface)}
.bt-preview[hidden]{display:none}
.bt-pv-lb{font-size:11px;color:var(--faint);margin-right:8px}
.bt-preview code{font-size:12px;color:var(--ink);word-break:break-all;
  font-variant-numeric:tabular-nums}
@media (max-width:900px){.bt-form{grid-template-columns:1fr 1fr}}
@media (max-width:640px){
  .bt-form{grid-template-columns:1fr}
  .bt-chips{grid-template-columns:repeat(auto-fill,minmax(58px,1fr))}
}

/* ===== 两注同下（独立卡） ===== */
.pair-lead{margin:0 0 10px;font-size:11.5px;color:var(--faint)}
.pair-grid{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:11px;align-items:center}
.pair-cell{flex:1 1 78px;min-width:72px;display:flex;flex-direction:column;align-items:center;gap:3px;
  padding:9px 6px;border:1px solid var(--line-strong);border-radius:var(--r-ctl);
  background:var(--input);color:var(--muted);cursor:pointer;
  transition:border-color .14s,background .14s,color .14s,box-shadow .14s}
.pair-cell:hover{border-color:var(--accent);color:var(--ink)}
.pair-cell.on{background:var(--sel);border-color:var(--accent);color:var(--ink);
  box-shadow:inset 0 0 0 1px var(--accent)}
.pair-cell-n{font-size:14px;font-weight:700;font-variant-numeric:tabular-nums;line-height:1}
.pair-cell-s{font-size:9.5px;color:var(--faint);line-height:1.2}
.pair-cell.on .pair-cell-s{color:var(--acc2,var(--accent))}
.pair-kill{display:flex;align-items:center;gap:8px;flex-wrap:wrap;width:100%}
.pair-kill-lb{font-size:11.5px;color:var(--muted)}
.pair-algo{height:28px;font-size:12px;padding:0 6px;min-width:112px}
.pair-line{display:flex;align-items:center;gap:7px;flex-wrap:wrap;margin-bottom:11px;
  padding:9px 11px;border:1px dashed var(--line-strong);border-radius:var(--r-ctl);background:var(--surface)}
.pair-tag{font-size:10px;font-weight:700;color:var(--muted);background:var(--surface-2);
  border:1px solid var(--line-strong);border-radius:2px;padding:1px 6px}
.pair-b1,.pair-b2{font-size:14px;font-weight:700;color:var(--ink);font-variant-numeric:tabular-nums}
.pair-plus{color:var(--faint);font-weight:700}
.pair-cov{font-size:11px;color:var(--faint)}
.pair-killed{margin-left:auto;font-size:12px;font-weight:700;color:var(--bad)}
@media (max-width:640px){.pair-cell{flex:1 1 40%}}

/* ===== 两注同下：分开金额 + 建议提示 ===== */
.pair-tip{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:0 0 11px;
  padding:8px 11px;border-radius:var(--r-ctl);font-size:11.5px;line-height:1.5;
  border:1px dashed var(--line-strong);background:var(--surface)}
.pair-tip[hidden]{display:none}
.pair-tip-i{flex:0 0 auto;width:15px;height:15px;line-height:15px;text-align:center;
  border-radius:50%;font-size:10px;font-weight:700}
.pair-tip.ok{border-color:color-mix(in srgb,var(--good) 50%,var(--line));color:var(--good)}
.pair-tip.ok .pair-tip-i{background:color-mix(in srgb,var(--good) 18%,transparent);color:var(--good)}
.pair-tip.warn{border-color:color-mix(in srgb,var(--warn,var(--accent)) 50%,var(--line));color:var(--warn,var(--accent))}
.pair-tip.warn .pair-tip-i{background:color-mix(in srgb,var(--warn,var(--accent)) 18%,transparent);color:var(--warn,var(--accent))}
.pair-tip-t{flex:1 1 auto;min-width:0;color:var(--muted)}

/* ---------- 两注同下 · 金额拆分补充：小字提示 + 建议条按钮 ---------- */
.fg-sub{font-size:10.5px;line-height:1.4;color:var(--faint);font-weight:500}
.fg-sub:empty{display:none}
.pair-tip .ch-mini{flex:0 0 auto;margin-left:auto}
.pair-tip-t b{color:inherit;font-weight:700}
.pair-tip-t .pd{color:var(--ink)}

/* ---------- 两注同下 · 算法大厅只读展示 ---------- */
.pair-algo-cur{font-size:12.5px;font-weight:700;color:var(--ink)}
.pair-kill-sep{font-size:11px;color:var(--faint)}
.pair-kill-val{font-size:13px;font-weight:700;color:var(--bad);font-variant-numeric:tabular-nums}
.pair-kill .pair-kill-lb{color:var(--muted)}

/* ---------- 策略下注卡：卡头右侧总开关对齐 ---------- */
#sd-card .ch-hd .mode-sw{margin-left:auto}
#sd-card .mode-bar{margin-bottom:1px}

/* ---------- 总览 · 最近下注 ---------- */
.ov-bet-row{padding:9px 0;border-bottom:1px dashed var(--line)}
.ov-bet-row:last-child{border-bottom:0}
.ov-bet-l1{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:5px}
.ov-bet-issue{font-size:12.5px;font-weight:700;color:var(--ink);font-variant-numeric:tabular-nums}
.ov-bet-l2{display:flex;align-items:center;gap:10px;flex-wrap:wrap;font-size:12.5px}
.ov-bet-bet{color:var(--ink);font-variant-numeric:tabular-nums}
.ov-bet-kill{font-style:normal;font-size:11px;color:var(--bad);
  border:1px solid color-mix(in srgb,var(--bad) 40%,var(--line));border-radius:4px;padding:0 4px}
.ov-bet-draw{color:var(--muted);font-variant-numeric:tabular-nums}
.ov-bet-profit{margin-left:auto;font-variant-numeric:tabular-nums}
.ov-bet-profit.pos{color:var(--good)}
.ov-bet-profit.neg{color:var(--bad)}
.ov-bet-profit.pend{color:var(--faint);font-weight:600}
