/* ============================================================
   咕噜星云控 样式
   深色（默认）与浅色两套主题：所有颜色都走变量，
   切换方式 = <html data-theme="light">（app.js 的 ☀/🌙 按钮会切）
   ============================================================ */

:root{
  /* 底色 / 面板 */
  --bg:#0f1420; --bg2:#0c1119; --side:#121926; --panel:#151d2c; --panel2:#131a27;
  --line:#222d42; --line2:#1b2434;
  /* 文字 */
  --text:#e6ecf7; --text2:#c2cfe2; --muted:#8fa1bb; --muted2:#5f6d85;
  /* 主题色 */
  --accent:#3ea6ff; --accent2:#7a5cff; --green:#39d98a; --red:#ff7b7b;
  --yellow:#ffcc66; --purple:#b18bff;
  /* 控件 */
  --input:#101724; --input-focus:#0d1521; --input-bd:#26314a; --input-bd-focus:#3a5a8a;
  --btn:#1b2537; --btn-hover:#223049; --btn-bd:#2b3a57; --btn-bd-hover:#35496b; --btn-text:#d5e2f4;
  --accent-fg:#04121f;
  --danger-bg:#2a1618; --danger-bd:#5a2626; --danger-text:#ff9d9d;
  /* 结构件 */
  --top:#131a27; --nav-text:#a9b8cf; --nav-hover:#182234; --nav-hover-text:#dbe7f8;
  --nav-on:#1c2b45; --nav-on-text:#eaf2ff; --nav-badge:#20304c; --nav-badge-text:#7fa8e0;
  --tabs-bg:#101724; --tabs-on:#1e2a41; --tabs-on-text:#fff;
  --th:#6d7d97; --row-hover:#17202f; --bar-bg:#22304a; --scroll:#2a3448;
  --modal:#151d2c; --modal-bd:#2a3a58; --modal-fg:#121a27; --mask:rgba(5,9,16,.66);
  --toast:#1b2436; --toast-bd:#2c3a55; --toast-text:#dbe7f8;
  --logs:#0b1019; --logs-text:#93a5c0;
  --drop-bd:#2f415f; --drop-hover:rgba(19,32,51,.33);
  /* 语义色（标签/日志/行内文字） */
  --ok-text:#5ee0a0; --ok-bg:#13251e; --ok-bd:#1f4a3a;
  --warn-bg:#241f12; --warn-bd:#4a3d1f;
  --err-bg:#2a1616; --err-bd:#4a2020;
  --info-text:#7fc4ff; --info-bg:#122335; --info-bd:#1f3d5c;
  --purple-text:#c9a6ff; --purple-bg:#1d1730; --purple-bd:#332a55;
  --feed-ai:#e3d7ff; --feed-send:#cfe4ff; --feed-sys:#9fb0c9; --feed-acc:#a9e5c6; --feed-txt:#c9d6ea;
  --radius:10px;
}

/* ---------------- 浅色主题 ---------------- */
html[data-theme="light"]{
  --bg:#f4f6fa; --bg2:#eef1f7; --side:#ffffff; --panel:#ffffff; --panel2:#f7f9fc;
  --line:#e2e7f0; --line2:#edf1f7;
  --text:#1a2333; --text2:#3c4a61; --muted:#68758c; --muted2:#93a0b4;
  --accent:#1a7fdb; --accent2:#6a4fe0; --green:#12945f; --red:#d64545;
  --yellow:#b7791f; --purple:#7a56d6;
  --input:#ffffff; --input-focus:#ffffff; --input-bd:#d3dae6; --input-bd-focus:#7fb2e6;
  --btn:#ffffff; --btn-hover:#f1f5fb; --btn-bd:#d3dae6; --btn-bd-hover:#b9c6d8; --btn-text:#26324a;
  --accent-fg:#ffffff;
  --danger-bg:#fdf1f1; --danger-bd:#f0c9c9; --danger-text:#c02b2b;
  --top:#ffffff; --nav-text:#4a5872; --nav-hover:#eef3fa; --nav-hover-text:#1a2333;
  --nav-on:#e8f1fd; --nav-on-text:#12528f; --nav-badge:#e8eefb; --nav-badge-text:#2b6ca8;
  --tabs-bg:#f1f4f9; --tabs-on:#ffffff; --tabs-on-text:#12528f;
  --th:#8494ab; --row-hover:#f6f9fd; --bar-bg:#e2e8f2; --scroll:#c8d2e0;
  --modal:#ffffff; --modal-bd:#dde4ef; --modal-fg:#f7f9fc; --mask:rgba(24,35,52,.32);
  --toast:#ffffff; --toast-bd:#dde4ef; --toast-text:#1f2b3d;
  --logs:#f8fafd; --logs-text:#4a5872;
  --drop-bd:#ccd6e4; --drop-hover:rgba(26,127,219,.06);
  --ok-text:#0f7a52; --ok-bg:#e8f8f0; --ok-bd:#bfe8d4;
  --warn-bg:#fdf6e6; --warn-bd:#f0dfb4;
  --err-bg:#fdf0f0; --err-bd:#f3cfcf;
  --info-text:#1a6ec0; --info-bg:#eaf3fd; --info-bd:#c6ddf7;
  --purple-text:#6a4fd0; --purple-bg:#f0ebfd; --purple-bd:#d9cff7;
  --feed-ai:#6a4fd0; --feed-send:#1a6ec0; --feed-sys:#68758c; --feed-acc:#0f7a52; --feed-txt:#3c4a61;
}

*{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%}
body{
  font-family:"Microsoft YaHei UI","Microsoft YaHei",-apple-system,"Segoe UI",Roboto,sans-serif;
  background:var(--bg); color:var(--text); font-size:13px; line-height:1.5;
  -webkit-font-smoothing:antialiased;
}
.hidden{display:none !important}
a{color:var(--accent);text-decoration:none}
::-webkit-scrollbar{width:9px;height:9px}
::-webkit-scrollbar-thumb{background:var(--scroll);border-radius:6px}
::-webkit-scrollbar-track{background:transparent}
.boot{padding:40px;color:var(--muted)}

/* ---------------- 登录 ---------------- */
.auth{min-height:100%;display:flex;align-items:center;justify-content:center;padding:24px;
  background:radial-gradient(900px 500px at 20% 0%,rgba(62,166,255,.13),transparent 60%),
             radial-gradient(700px 420px at 90% 100%,rgba(122,92,255,.13),transparent 60%)}
html[data-theme="light"] .auth{
  background:radial-gradient(900px 500px at 20% 0%,rgba(62,166,255,.16),transparent 60%),
             radial-gradient(700px 420px at 90% 100%,rgba(122,92,255,.12),transparent 60%),
             var(--bg);
}
.auth-card{width:380px;max-width:100%;background:var(--panel);border:1px solid var(--line);border-radius:16px;padding:26px 24px 22px;
  box-shadow:0 24px 60px rgba(0,0,0,.45)}
html[data-theme="light"] .auth-card{box-shadow:0 18px 48px rgba(24,35,52,.12)}
.auth-brand{font-size:17px;font-weight:700;letter-spacing:.4px}
.auth-brand span{color:var(--accent)}
.auth-sub{color:var(--muted);font-size:12px;margin:6px 0 18px}
.auth-tabs{display:flex;gap:6px;background:var(--tabs-bg);border:1px solid var(--line);border-radius:9px;padding:4px;margin-bottom:16px}
.auth-tabs button{flex:1;padding:7px 0;border:0;border-radius:6px;background:transparent;color:var(--muted);font-size:12.5px;cursor:pointer;font-family:inherit}
.auth-tabs button.on{background:var(--tabs-on);color:var(--tabs-on-text)}
.auth .field{margin-bottom:12px}
.auth-foot{color:var(--muted2);font-size:11px;margin-top:14px;text-align:center}

/* ---------------- 骨架 ---------------- */
.app{display:flex;height:100%}
.side{width:206px;flex:none;background:var(--side);border-right:1px solid var(--line);display:flex;flex-direction:column;padding:0}
.brand{padding:16px 16px 12px;font-weight:700;font-size:14px;letter-spacing:.4px}
.brand span{color:var(--accent);font-weight:600}
.side nav{flex:1;overflow:auto;padding:2px 8px 10px}
.nav-grp{font-size:10.5px;color:var(--muted2);padding:12px 8px 5px;letter-spacing:1px}
.nav-item{display:flex;align-items:center;gap:9px;padding:8px 10px;border-radius:8px;color:var(--nav-text);cursor:pointer;font-size:13px;user-select:none}
.nav-item:hover{background:var(--nav-hover);color:var(--nav-hover-text)}
.nav-item.on{background:var(--nav-on);color:var(--nav-on-text);box-shadow:inset 2px 0 0 var(--accent)}
.nav-item .ic{width:16px;text-align:center;opacity:.9;font-size:13px}
.nav-item .badge{margin-left:auto;font-size:10px;background:var(--nav-badge);padding:1px 6px;border-radius:9px;color:var(--nav-badge-text)}
.nav-item .dot{width:6px;height:6px;border-radius:50%;background:var(--green);box-shadow:0 0 7px var(--green);margin-left:auto}
.side-foot{border-top:1px solid var(--line);padding:9px 14px;font-size:11px;color:var(--muted2);display:flex;align-items:center;gap:7px}
.side-foot .led{width:7px;height:7px;border-radius:50%;background:var(--muted2)}
.side-foot .led.on{background:var(--green);box-shadow:0 0 7px var(--green)}
.side-foot .led.off{background:var(--red)}

.main-wrap{flex:1;min-width:0;display:flex;flex-direction:column}
.top{height:50px;flex:none;display:flex;align-items:center;gap:10px;padding:0 16px;border-bottom:1px solid var(--line);background:var(--top)}
.grow{flex:1}
.chip{font-size:11.5px;padding:3px 9px;border-radius:20px;background:var(--nav-badge);border:1px solid var(--input-bd);color:var(--nav-text);white-space:nowrap}
.chip.ok{color:var(--ok-text);border-color:var(--ok-bd);background:var(--ok-bg)}
.chip.warn{color:var(--yellow);border-color:var(--warn-bd);background:var(--warn-bg)}
.chip.err{color:var(--red);border-color:var(--err-bd);background:var(--err-bg)}
.avatar{width:28px;height:28px;border-radius:50%;background:linear-gradient(135deg,var(--accent),var(--accent2));
  display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;cursor:pointer;color:#fff}
.icon-btn{border:1px solid var(--btn-bd);background:var(--btn);color:var(--btn-text);border-radius:8px;
  width:30px;height:30px;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;font-size:14px;font-family:inherit;transition:.12s}
.icon-btn:hover{background:var(--btn-hover);border-color:var(--btn-bd-hover)}
main{flex:1;min-height:0;overflow:auto;padding:16px 18px 72px}  /* 底部留白：滚到最底时按钮不会被窗口边缘吃掉 */

/* ---------------- 通用组件 ---------------- */
.page-h{display:flex;align-items:flex-end;gap:10px;margin-bottom:14px;flex-wrap:wrap}
.page-h h1{font-size:16px;font-weight:700;letter-spacing:.3px}
.page-h .sub{color:var(--muted);font-size:12px;padding-bottom:2px}
.page-h .sp{flex:1}

.btn{display:inline-flex;align-items:center;gap:6px;padding:6px 13px;border-radius:8px;border:1px solid var(--btn-bd);
  background:var(--btn);color:var(--btn-text);font-size:12.5px;cursor:pointer;font-family:inherit;white-space:nowrap;transition:.12s}
.btn:hover{background:var(--btn-hover);border-color:var(--btn-bd-hover)}
.btn:disabled{opacity:.45;cursor:not-allowed}
.btn.primary{background:linear-gradient(180deg,var(--accent),var(--accent2));border-color:transparent;color:var(--accent-fg);font-weight:600}
html[data-theme="light"] .btn.primary{background:linear-gradient(180deg,#2f9bf0,#1a7fdb)}
.btn.primary:hover{filter:brightness(1.07)}
.btn.ghost{background:transparent}
.btn.danger{background:var(--danger-bg);border-color:var(--danger-bd);color:var(--danger-text)}
.btn.danger:hover{filter:brightness(.97)}
.btn.sm{padding:3px 9px;font-size:11.5px;border-radius:6px}
.btn.wide{width:100%;justify-content:center}

.field{margin-bottom:11px}
.field > label{display:block;font-size:11.5px;color:var(--muted);margin-bottom:5px}
.field .hint{font-size:10.5px;color:var(--muted2);margin-top:4px;line-height:1.5}
.input,.select,.textarea{
  width:100%;background:var(--input);border:1px solid var(--input-bd);border-radius:8px;color:var(--text);
  padding:7px 10px;font-size:12.5px;font-family:inherit;outline:none;transition:border .12s
}
.input:focus,.select:focus,.textarea:focus{border-color:var(--input-bd-focus);background:var(--input-focus)}
.textarea{resize:vertical;min-height:80px;line-height:1.6}
.select{appearance:none;background-image:linear-gradient(45deg,transparent 50%,var(--muted) 50%),linear-gradient(135deg,var(--muted) 50%,transparent 50%);
  background-position:calc(100% - 16px) 15px,calc(100% - 11px) 15px;background-size:5px 5px;background-repeat:no-repeat;padding-right:28px}
.row2{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.row3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px}
.row4{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}
@media(max-width:1100px){.row4{grid-template-columns:1fr 1fr}.row3{grid-template-columns:1fr 1fr}}
@media(max-width:720px){.row2,.row3,.row4{grid-template-columns:1fr}}
.check{display:inline-flex;align-items:center;gap:7px;font-size:12.5px;color:var(--text2);cursor:pointer;user-select:none;padding:5px 0}
/* 加强版勾选项：字号加大 + 加粗（群发页先用，验证效果后再铺开） */
.check.strong{font-size:14px;font-weight:700;color:var(--text);gap:8px;padding:7px 0;transition:color .15s}
.check.strong input{width:17px;height:17px}
/* 勾上之后整行变主题色：一眼看出哪些开关是开的 */
.check.strong.on{color:var(--accent)}
.check input{width:14px;height:14px;accent-color:var(--accent);cursor:pointer}

.panel{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden}
.panel + .panel{margin-top:12px}
.ph{display:flex;align-items:center;gap:8px;padding:10px 13px;border-bottom:1px solid var(--line);font-size:12.5px;color:var(--text2);font-weight:600}
.ph .dot{width:7px;height:7px;border-radius:50%;background:var(--green);box-shadow:0 0 7px var(--green)}
.ph .sp{flex:1}
.ph .tools{display:flex;gap:7px;align-items:center;font-weight:400}
.pb{padding:13px}
.pb.tight{padding:10px 12px}

.cards{display:grid;grid-template-columns:repeat(5,1fr);gap:10px;margin-bottom:14px}
@media(max-width:1240px){.cards{grid-template-columns:repeat(3,1fr)}}
@media(max-width:720px){.cards{grid-template-columns:1fr 1fr}}
.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:11px 13px}
.card .k{font-size:11px;color:var(--muted)}
.card .v{font-size:23px;font-weight:700;margin-top:3px;letter-spacing:.5px;font-variant-numeric:tabular-nums}
.card .s{font-size:10.5px;color:var(--muted2);margin-top:3px}
.card.c1 .v{color:var(--green)} .card.c2 .v{color:var(--accent)} .card.c3 .v{color:var(--purple)}
.card.c4 .v{color:var(--yellow)} .card.c5 .v{color:var(--red)}

table.tb{width:100%;border-collapse:collapse;font-size:12px}
.tb th{text-align:left;font-weight:400;color:var(--th);font-size:10.5px;padding:8px 12px;background:var(--panel2);border-bottom:1px solid var(--line);white-space:nowrap}
.tb td{padding:8px 12px;border-bottom:1px solid var(--line2);color:var(--text2);white-space:nowrap;vertical-align:middle}
.tb tr:last-child td{border-bottom:none}
.tb tr:hover td{background:var(--row-hover)}
.tb .num{font-variant-numeric:tabular-nums}
.tb-scroll{max-height:520px;overflow:auto}
.empty{padding:26px 14px;text-align:center;color:var(--muted2);font-size:12px;line-height:1.9}

.pill{font-size:10.5px;padding:1.5px 8px;border-radius:9px;border:1px solid transparent;white-space:nowrap;display:inline-block}
.p-green{color:var(--ok-text);background:var(--ok-bg);border-color:var(--ok-bd)}
.p-grey{color:var(--muted);background:var(--nav-badge);border-color:var(--input-bd)}
.p-yellow{color:var(--yellow);background:var(--warn-bg);border-color:var(--warn-bd)}
.p-red{color:var(--red);background:var(--err-bg);border-color:var(--err-bd)}
.p-blue{color:var(--info-text);background:var(--info-bg);border-color:var(--info-bd)}
.p-purple{color:var(--purple-text);background:var(--purple-bg);border-color:var(--purple-bd)}

.bar{height:6px;border-radius:4px;background:var(--bar-bg);overflow:hidden;width:100%}
.bar i{display:block;height:100%;background:linear-gradient(90deg,var(--accent),var(--accent2));transition:width .3s}
.bar-inline{display:inline-block;width:66px;vertical-align:middle;margin-right:8px}

.feed{max-height:420px;overflow:auto;padding:10px 12px;display:flex;flex-direction:column;gap:7px}
.feed-row{font-size:11.5px;line-height:1.55;display:flex;gap:8px;word-break:break-word}
.feed-row .ts{flex:none;color:var(--muted2);width:52px;font-variant-numeric:tabular-nums}
.feed-row .txt{color:var(--feed-txt);white-space:pre-wrap}
.feed-row.k-ai .txt{color:var(--feed-ai)}
.feed-row.k-send .txt{color:var(--feed-send)}
.feed-row.k-sys .txt{color:var(--feed-sys)}
.feed-row.k-account .txt{color:var(--feed-acc)}

.logs{height:240px;overflow:auto;background:var(--logs);border-top:1px solid var(--line);padding:8px 12px;
  font-family:Consolas,"Cascadia Mono",monospace;font-size:11.5px;line-height:1.7;color:var(--logs-text);white-space:pre-wrap}
.logs .t{color:var(--muted2)}
.logs .ai{color:var(--purple-text)}
.logs .send{color:var(--info-text)}
.logs .sys{color:var(--muted)}

.task{display:flex;align-items:center;gap:8px;padding:9px 13px;border-bottom:1px solid var(--line2);font-size:11.5px}
.task:last-child{border-bottom:none}
.task .nm{color:var(--text2)}
.task .st{margin-left:auto;font-size:10.5px}
.run{color:var(--ok-text)} .wait{color:var(--muted)} .pause{color:var(--yellow)} .err{color:var(--red)}

.toasts{position:fixed;right:18px;bottom:18px;display:flex;flex-direction:column;gap:8px;z-index:200}
.toast{background:var(--toast);border:1px solid var(--toast-bd);border-left:3px solid var(--accent);border-radius:8px;
  padding:9px 14px;font-size:12.5px;color:var(--toast-text);box-shadow:0 10px 30px rgba(0,0,0,.4);max-width:420px;
  animation:tin .18s ease-out}
html[data-theme="light"] .toast{box-shadow:0 10px 26px rgba(24,35,52,.14)}
.toast.ok{border-left-color:var(--green)} .toast.err{border-left-color:var(--red)} .toast.warn{border-left-color:var(--yellow)}
@keyframes tin{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}

.modal-mask{position:fixed;inset:0;background:var(--mask);display:flex;align-items:center;justify-content:center;z-index:150;padding:20px}
.modal{width:460px;max-width:100%;max-height:88vh;overflow:auto;background:var(--modal);border:1px solid var(--modal-bd);border-radius:12px;
  box-shadow:0 30px 70px rgba(0,0,0,.55)}
html[data-theme="light"] .modal{box-shadow:0 24px 60px rgba(24,35,52,.18)}
.modal h3{font-size:14px;padding:14px 16px;border-bottom:1px solid var(--line)}
.modal .mb{padding:14px 16px}
.modal .mf{display:flex;gap:8px;justify-content:flex-end;padding:12px 16px;border-top:1px solid var(--line);background:var(--modal-fg)}

.split{display:grid;grid-template-columns:1.35fr .9fr;gap:12px;align-items:start}
@media(max-width:1100px){.split{grid-template-columns:1fr}}
.col{min-width:0}
.mono{font-family:Consolas,"Cascadia Mono",monospace}
.muted{color:var(--muted)} .small{font-size:11px}
.mt8{margin-top:8px} .mt12{margin-top:12px} .mb8{margin-bottom:8px} .mb12{margin-bottom:12px}
.flex{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.flex.nowrap{flex-wrap:nowrap}
.row-actions{display:flex;gap:6px;align-items:center;flex-wrap:nowrap}
.right{margin-left:auto}
.kv{display:flex;justify-content:space-between;gap:10px;font-size:11.5px;color:var(--muted);padding:3.5px 0}
.kv b{color:var(--text2);font-weight:600}
.drop{border:1px dashed var(--drop-bd);border-radius:9px;padding:16px;text-align:center;color:var(--muted);font-size:12px;cursor:pointer;transition:.15s}
.drop:hover,.drop.over{border-color:var(--accent);background:var(--drop-hover);color:var(--accent)}
.tabs{display:flex;gap:6px;margin-bottom:12px;flex-wrap:wrap}
.tabs .tb2{padding:5px 12px;border-radius:8px;font-size:12px;color:var(--muted);cursor:pointer;border:1px solid transparent}
.tabs .tb2.on{background:var(--nav-on);color:var(--nav-on-text);border-color:var(--input-bd)}

/* ---------------- 手机 / 窄屏 ---------------- */
@media(max-width:860px){
  .app{flex-direction:column}
  .side{width:100%;flex:none;border-right:0;border-bottom:1px solid var(--line)}
  .brand{padding:10px 12px 8px;font-size:13px}
  .side nav{display:flex;gap:6px;overflow-x:auto;padding:0 8px 8px}
  .nav-grp{display:none}
  .nav-item{padding:7px 11px;white-space:nowrap;font-size:12.5px;border:1px solid var(--input-bd);background:var(--panel)}
  .nav-item.on{box-shadow:inset 0 -2px 0 var(--accent)}
  .nav-item .badge{margin-left:4px}
  .side-foot{display:none}
  .top{height:46px;padding:0 10px;gap:6px;overflow-x:auto}
  main{padding:12px 10px 56px}
  .page-h h1{font-size:15px}
  .page-h .sub{width:100%;order:9}
  .cards{grid-template-columns:1fr 1fr;gap:8px}
  .card .v{font-size:19px}
  .tb td,.tb th{padding:7px 8px}
  .modal{width:100%}
  .feed{max-height:300px}
}

/* 实时连接断开太久时的"刷新"提示条 */
#reload-banner{
  position:fixed;left:50%;bottom:26px;transform:translateX(-50%);
  display:flex;align-items:center;gap:10px;
  padding:10px 14px;border-radius:10px;
  background:var(--panel);color:var(--text);border:1px solid var(--modal-bd);
  box-shadow:0 10px 30px rgba(0,0,0,.45);z-index:9999;font-size:13px;
}
html[data-theme="light"] #reload-banner{box-shadow:0 10px 26px rgba(24,35,52,.16)}
#reload-banner .btn.ghost{background:transparent;border:1px solid var(--input-bd);color:var(--muted)}

/* ---------------- 行内写死颜色的浅色修正 ----------------
   页面里很多地方用 style="color:#xxx" 直接写颜色，浅色主题下这些颜色太浅，
   这里用属性选择器统一压深（!important 才能盖过行内样式）。 */
html[data-theme="light"] [style*="color:#5ee0a0"]{color:#0f7a52 !important}
html[data-theme="light"] [style*="color:#ff8b8b"]{color:#c02b2b !important}
html[data-theme="light"] [style*="color:#ffcc66"]{color:#a2721a !important}
html[data-theme="light"] [style*="color:#9fb0c9"]{color:#5a6b82 !important}
html[data-theme="light"] [style*="color:#e2eaf6"]{color:#1a2333 !important}
html[data-theme="light"] [style*="color:#7f8fa9"]{color:#6b7a90 !important}
html[data-theme="light"] [style*="color:#8ec9ff"]{color:#1a6ec0 !important}
html[data-theme="light"] [style*="color:#7fc4ff"]{color:#1a6ec0 !important}
html[data-theme="light"] [style*="color:#3ea6ff"]{color:#1a7fdb !important}
html[data-theme="light"] [style*="color:#8fb6ea"]{color:#3a5f8f !important}
html[data-theme="light"] [style*="color:#ff9d9d"]{color:#c02b2b !important}

/* ---------------- 账号选择器（原来写死在 JS 里的深色，改成类） ---------------- */
.picker-list{overflow:auto;border:1px solid var(--input-bd);border-radius:8px;background:var(--input)}
.picker-item{display:flex;align-items:center;gap:9px;padding:8px 12px;cursor:pointer;border-bottom:1px solid var(--line2);transition:background .1s}
.picker-item:last-child{border-bottom:none}
.picker-item:hover,.picker-item.hover{background:var(--row-hover)}
.picker-item.sel{background:var(--nav-on)}
.picker-name{font-size:12.5px;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.picker-sub{font-size:10.5px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

.pick-row{display:flex;align-items:center;gap:9px;padding:6px 11px;cursor:pointer;border-bottom:1px solid var(--line2)}
.pick-row:last-child{border-bottom:none}
.pick-row:hover,.pick-row.hover{background:var(--row-hover)}
.pick-row.sel{background:var(--nav-on)}

/* 账号表格的行勾选态 */
.acc-row.sel, tr.sel > td { background: var(--nav-on) }

/* 页面最底的空白块：防止固定悬浮元素/窗口边缘压住最后一个按钮 */
.page-end{height:8px}


/* 批量操作下拉菜单 */
.dd-wrap{position:relative;display:inline-block}
/* position:fixed：避免被 .panel{overflow:hidden} 裁掉；位置由 JS 按按钮算 */
.dd-menu{position:fixed;z-index:900;min-width:224px;max-height:min(70vh,520px);overflow-y:auto;
  background:var(--panel);border:1px solid var(--line);border-radius:10px;
  box-shadow:0 12px 34px rgba(0,0,0,.32);padding:6px;display:flex;flex-direction:column;gap:2px}
.dd-menu.hidden{display:none}
.dd-item{display:flex;align-items:center;gap:8px;padding:8px 10px;border-radius:7px;
  font-size:12.5px;color:var(--text2);cursor:pointer;user-select:none;white-space:nowrap}
.dd-item:hover{background:var(--nav-hover);color:var(--nav-hover-text)}
.dd-item.danger{color:var(--danger-text)}
.dd-item.disabled{opacity:.45;cursor:not-allowed}
.dd-sep{height:1px;background:var(--line);margin:4px 6px}
.dd-tip{font-size:10.5px;color:var(--muted2);padding:6px 10px 2px}
