/* ============================================================
 * 贝驭光储充 EMS 控制后台 · 全局样式
 * 风格：企业级能量蓝 / 双主题（深·浅）/ 五色主题切换
 * ============================================================ */

/* ---------- 主题变量 ---------- */
:root{
  --radius:10px;
  /* 深色主题（默认） */
  --bg:#0f1524;
  --bg-2:#161f33;
  --bg-3:#1c2740;
  --line:rgba(150,170,205,.14);
  --line-strong:rgba(150,170,205,.32);
  --txt:#e7edf7;
  --txt-dim:#9aabc7;
  --txt-mute:#66799a;
  --green:#33c48d;
  --yellow:#e6a23c;
  --orange:#f0813f;
  --red:#e85a70;
  --purple:#9d7bff;
  --blue:#4a8bff;
  --shadow:0 2px 10px rgba(3,10,26,.35);
  --accent:#3a7bff;
  --cyan:var(--accent);
}
:root[data-theme="light"]{
  --bg:#eef1f7;
  --bg-2:#ffffff;
  --bg-3:#f3f6fb;
  --line:rgba(35,60,105,.12);
  --line-strong:rgba(35,60,105,.26);
  --txt:#253352;
  --txt-dim:#5d6f8f;
  --txt-mute:#93a1b9;
  --green:#0f9e6e;
  --yellow:#c8891a;
  --orange:#dd6a20;
  --red:#dc4a63;
  --purple:#7a5af0;
  --blue:#2e6be6;
  --shadow:0 2px 12px rgba(35,55,100,.08);
}
/* 主题色（深浅通用） */
:root[data-accent="blue"]{--accent:#3a7bff}
:root[data-accent="cyan"]{--accent:#0ba3c9}
:root[data-accent="green"]{--accent:#12a374}
:root[data-accent="purple"]{--accent:#7c5cf0}
:root[data-accent="orange"]{--accent:#e8702a}
:root[data-theme="light"][data-accent="blue"]{--accent:#2563eb}
:root[data-theme="light"][data-accent="cyan"]{--accent:#0891b2}
:root[data-theme="light"][data-accent="green"]{--accent:#0d9268}
:root[data-theme="light"][data-accent="purple"]{--accent:#6d4de0}
:root[data-theme="light"][data-accent="orange"]{--accent:#d95f1e}

*{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%;font-family:"Microsoft YaHei","PingFang SC","Segoe UI",sans-serif;
  background:var(--bg);color:var(--txt);font-size:14px;overflow:hidden}
a{color:var(--accent);text-decoration:none}
button{font-family:inherit;cursor:pointer;border:none;outline:none}
input,select,textarea{font-family:inherit;outline:none}

/* ---------- 通用面板 ---------- */
.panel{
  background:var(--bg-2);
  border:1px solid var(--line);
  border-radius:var(--radius);
  box-shadow:var(--shadow);
  padding:16px 18px;
  margin-bottom:14px;
  position:relative;
}
.panel-title{
  font-size:15px;font-weight:700;letter-spacing:1px;color:var(--txt);
  margin-bottom:14px;display:flex;align-items:center;gap:10px;
  padding-bottom:12px;border-bottom:1px solid var(--line);
}
.panel-title .sub{font-size:11px;color:var(--txt-mute);font-weight:400;letter-spacing:1px;margin-left:auto}
.panel-title::before{
  content:"";width:4px;height:16px;border-radius:2px;
  background:var(--accent);
}

/* ---------- 通用按钮 ---------- */
.btn{
  background:var(--accent);
  border:1px solid transparent;
  color:#fff;padding:7px 18px;border-radius:8px;
  font-size:13px;letter-spacing:1px;transition:.2s;white-space:nowrap;
}
.btn:hover{filter:brightness(1.12);box-shadow:0 4px 14px rgba(30,80,180,.22)}
.btn:disabled{opacity:.4;cursor:not-allowed;box-shadow:none;filter:none}
.btn.green{background:rgba(51,196,141,.12);border-color:rgba(51,196,141,.45);color:var(--green)}
.btn.green:hover{background:rgba(51,196,141,.22);box-shadow:none}
.btn.red{background:rgba(232,90,112,.12);border-color:rgba(232,90,112,.45);color:var(--red)}
.btn.red:hover{background:rgba(232,90,112,.22);box-shadow:none}
.btn.yellow{background:rgba(230,162,60,.12);border-color:rgba(230,162,60,.45);color:var(--yellow)}
.btn.yellow:hover{background:rgba(230,162,60,.22);box-shadow:none}
.btn.sm{padding:4px 12px;font-size:12px}
.btn.lg{padding:10px 28px;font-size:15px}

/* ---------- 通用表格 ---------- */
.tbl{width:100%;border-collapse:collapse;font-size:13px}
.tbl th{font-size:11px;color:var(--txt-mute);font-weight:600;letter-spacing:1px;
  padding:10px 8px;text-align:left;border-bottom:1px solid var(--line);
  background:var(--bg-3);position:sticky;top:0;z-index:2;white-space:nowrap}
.tbl td{padding:10px 8px;border-bottom:1px solid var(--line);white-space:nowrap}
.tbl tr:hover td{background:rgba(120,150,200,.06)}
.tbl tr.active td{background:rgba(120,150,200,.1)}
.tbl .num{font-family:Consolas,monospace;font-weight:700}

/* ---------- 状态标签 ---------- */
.tag{display:inline-block;font-size:11px;padding:2px 10px;border-radius:20px;
  letter-spacing:1px;border:1px solid;line-height:1.7}
.tag.green{color:var(--green);border-color:rgba(51,196,141,.4);background:rgba(51,196,141,.1)}
.tag.cyan{color:var(--accent);border-color:rgba(120,150,220,.4);background:rgba(120,150,220,.1)}
.tag.yellow{color:var(--yellow);border-color:rgba(230,162,60,.4);background:rgba(230,162,60,.1)}
.tag.red{color:var(--red);border-color:rgba(232,90,112,.4);background:rgba(232,90,112,.1)}
.tag.gray{color:var(--txt-mute);border-color:rgba(120,140,170,.4);background:rgba(120,140,170,.1)}
.tag.purple{color:var(--purple);border-color:rgba(157,123,255,.4);background:rgba(157,123,255,.1)}

/* ---------- 表单控件 ---------- */
.form-row{display:flex;align-items:center;gap:12px;margin-bottom:12px}
.form-row label{font-size:12px;color:var(--txt-dim);letter-spacing:1px;min-width:120px;text-align:right}
.form-row input,.form-row select{
  background:var(--bg-3);border:1px solid var(--line);border-radius:8px;
  color:var(--txt);padding:8px 12px;font-size:13px;width:100%;flex:1;max-width:300px;transition:.2s;
}
.form-row input:focus,.form-row select:focus{border-color:var(--accent);box-shadow:0 0 0 3px rgba(58,123,255,.12)}
.form-row input:disabled{opacity:.4}

/* ---------- 开关 ---------- */
.switch,.form-row label.switch{position:relative;display:inline-block;width:46px;min-width:0;height:24px;flex:none}
.switch input{display:none}
.switch .slider{position:absolute;inset:0;background:rgba(120,140,170,.25);
  border-radius:24px;border:1px solid var(--line);transition:.3s}
.switch .slider::before{content:"";position:absolute;width:18px;height:18px;
  left:2px;top:2px;background:var(--txt-mute);border-radius:50%;transition:.3s}
.switch input:checked+.slider{background:var(--accent);border-color:transparent}
.switch input:checked+.slider::before{transform:translateX(22px);background:#fff}

/* ---------- KPI 卡片 ---------- */
.kpi-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:14px;margin-bottom:14px}
.kpi-card{
  border-radius:var(--radius);padding:16px 18px;
  border:1px solid var(--line);
  background:var(--bg-2);
  box-shadow:var(--shadow);
  position:relative;overflow:hidden;transition:.2s;
}
.kpi-card:hover{transform:translateY(-2px);box-shadow:0 6px 20px rgba(3,10,26,.28)}
.kpi-card .lab{font-size:11px;color:var(--txt-mute);letter-spacing:2px;margin-bottom:8px}
.kpi-card .val{font-size:26px;font-weight:800;font-family:Consolas,monospace;line-height:1.15}
.kpi-card .val .u{font-size:12px;color:var(--txt-dim);margin-left:4px;font-weight:400}
.kpi-card .extra{font-size:11px;color:var(--txt-dim);margin-top:6px}
.kpi-card .glow{position:absolute;right:-26px;top:-26px;width:80px;height:80px;
  border-radius:50%;filter:blur(28px);opacity:.14}
.c-cyan{color:var(--cyan)!important}.c-green{color:var(--green)!important}
.c-yellow{color:var(--yellow)!important}.c-red{color:var(--red)!important}
.c-orange{color:var(--orange)!important}.c-purple{color:var(--purple)!important}

/* ---------- 滚动条 ---------- */
::-webkit-scrollbar{width:8px;height:8px}
::-webkit-scrollbar-track{background:transparent}
::-webkit-scrollbar-thumb{background:rgba(120,140,175,.25);border-radius:4px}
::-webkit-scrollbar-thumb:hover{background:rgba(120,140,175,.45)}

/* ---------- 工具类 ---------- */
.flex{display:flex}.between{justify-content:space-between}.center{align-items:center;justify-content:center}
.gap8{gap:8px}.gap12{gap:12px}.gap14{gap:14px}
.mt8{margin-top:8px}.mt12{margin-top:12px}.mt14{margin-top:14px}
.muted{color:var(--txt-dim)}.small{font-size:12px}.bold{font-weight:700}
.mono{font-family:Consolas,monospace}
.hidden{display:none!important}
/* AI 图标（随文字字号自适应） */
.ai-ico{display:inline-block;width:1.15em;height:1.15em;vertical-align:-0.18em;
  object-fit:contain;border-radius:50%}

/* ---------- 页面页脚（由 common.js 自动注入子页面） ---------- */
.page-footer{margin-top:28px;padding:18px 0 8px;text-align:center;
  border-top:1px solid var(--line)}
.page-footer .f1{font-size:12px;color:var(--txt-dim);letter-spacing:2px}
.page-footer .f2{font-size:11px;color:var(--txt-mute);letter-spacing:1px;margin-top:5px}

/* ---------- 模态弹窗 ---------- */
.mask{position:fixed;inset:0;background:rgba(10,18,38,.55);z-index:1000;
  display:none;align-items:center;justify-content:center;backdrop-filter:blur(3px)}
.mask.show{display:flex}
.modal{
  width:520px;max-width:92vw;max-height:86vh;overflow:auto;
  background:var(--bg-2);
  border:1px solid var(--line);border-radius:14px;
  box-shadow:0 20px 60px rgba(5,12,30,.3);
}
.modal .mh{display:flex;align-items:center;justify-content:space-between;
  padding:16px 20px;border-bottom:1px solid var(--line)}
.modal .mh h3{font-size:16px;letter-spacing:1px}
.modal .mh .x{font-size:22px;color:var(--txt-mute);background:none}
.modal .mh .x:hover{color:var(--red)}
.modal .mb{padding:20px}
.modal .mf{padding:14px 20px;border-top:1px solid var(--line);display:flex;justify-content:flex-end;gap:10px}

/* ---------- 提示气泡 ---------- */
.toast{position:fixed;top:80px;right:24px;z-index:2000;
  padding:12px 20px;border-radius:10px;font-size:13px;letter-spacing:1px;
  background:var(--bg-2);border:1px solid var(--line);border-left-width:3px;
  box-shadow:0 8px 30px rgba(5,12,30,.25);
  animation:toastIn .3s ease;max-width:380px}
.toast.ok{color:var(--green);border-left-color:var(--green)}
.toast.err{color:var(--red);border-left-color:var(--red)}
.toast.info{color:var(--accent);border-left-color:var(--accent)}
.toast.warn{color:var(--yellow);border-left-color:var(--yellow)}
@keyframes toastIn{from{transform:translateX(100%);opacity:0}to{transform:translateX(0);opacity:1}}

/* ---------- 闪烁点 ---------- */
.dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--green);
  box-shadow:0 0 8px var(--green);animation:blink 1.2s infinite}
.dot.red{background:var(--red);box-shadow:0 0 8px var(--red)}
.dot.yellow{background:var(--yellow);box-shadow:0 0 8px var(--yellow)}
.dot.gray{background:var(--txt-mute);box-shadow:none;animation:none}
@keyframes blink{0%,100%{opacity:1}50%{opacity:.3}}

/* ---------- 分段选择 ---------- */
.seg{display:inline-flex;border:1px solid var(--line-strong);border-radius:8px;overflow:hidden}
.seg button{padding:6px 16px;font-size:12px;letter-spacing:1px;
  background:transparent;color:var(--txt-dim);border:none;border-right:1px solid var(--line)}
.seg button:last-child{border-right:none}
.seg button.on{background:rgba(120,150,220,.14);color:var(--accent)}

/* ============================================================
 * 浅色主题修补层：中和子页面硬编码深色背景，并反转图表画布
 * ============================================================ */
[data-theme="light"] .query-panel,
[data-theme="light"] .fd-card,
[data-theme="light"] .rs-card,
[data-theme="light"] .dev-stat-card,
[data-theme="light"] .weather-card,
[data-theme="light"] .report-card,
[data-theme="light"] .roi-card,
[data-theme="light"] .value-group,
[data-theme="light"] .strategy-card,
[data-theme="light"] .global-mode,
[data-theme="light"] .station-card,
[data-theme="light"] .cam-item,
[data-theme="light"] .drawer,
[data-theme="light"] .ver-drawer{
  background:#fff!important;color:var(--txt);
}
[data-theme="light"] .dev-tab{background:#eef2f8!important}
[data-theme="light"] .dev-info-item,
[data-theme="light"] .cmd-log,
[data-theme="light"] .hf-item,
[data-theme="light"] .formula-box,
[data-theme="light"] .ver-item,
[data-theme="light"] .sc-metric,
[data-theme="light"] .alarm-item,
[data-theme="light"] .ai-box .chip{background:#f3f6fb!important}
[data-theme="light"] .ai-box{background:linear-gradient(180deg,rgba(15,158,110,.05),#fff 60%)!important}
[data-theme="light"] .hf-rec{background:#f6f9fd!important;border-color:var(--line)!important}
[data-theme="light"] canvas{filter:invert(1) hue-rotate(180deg)}