/* ==========================================================
   控制台主题：和首页同一套设计语言
   暖石色底、橄榄墨文字、信号橙强调色；浅色为默认，深色与首页一致。
   这个文件在其它控制台样式之后加载，只覆盖，不改原文件。
   ========================================================== */
:root{
  --bg:#EEECE6;--surface:#FBFAF7;--sunk:#E6E3DB;
  --ink:#1A1D19;--ink-2:#343832;--muted:#5C6058;--faint:#878A80;
  --line:#DCD8CE;--line-2:#C7C2B6;
  --accent:#B4521F;--accent-soft:#F4E3D6;--on-accent:#FFFFFF;
  --ok:#2E7550;--ok-bg:#DCEDE2;
  --high:#B03A2E;--high-bg:#F6E0DC;--mid:#855E00;--mid-bg:#F1E6C8;
  --ta:#2D58A6;--ta-bg:#E1E7F2;--tb:#A8432A;--tb-bg:#F4E3DD;
  --brand:#E07B3C;--on-brand:#1C130C;
  --shadow-pop:0 18px 40px -14px rgba(38,33,22,.28),0 2px 6px rgba(38,33,22,.08);
  --shadow-float:0 6px 18px rgba(38,33,22,.2);
  --scrim:rgba(26,24,18,.36);
  --f-serif:var(--f-sans);
  --r-card:12px;
  --t-fast:160ms;--t-std:280ms;--t-slow:640ms;
  --ease:cubic-bezier(.16,1,.3,1);
}
@media (prefers-color-scheme:dark){
  :root:not([data-theme="light"]):not([data-theme="white"]){
    --bg:#111513;--surface:#181D1A;--sunk:#0E1210;
    --ink:#ECE8DE;--ink-2:#CFCABE;--muted:#A9A799;--faint:#77776C;
    --line:#272D29;--line-2:#353C37;
    --accent:#E8894E;--accent-soft:#3A2518;--on-accent:#1C130C;
    --ok:#6CC08F;--ok-bg:#1B3024;
    --high:#EF8876;--high-bg:#3A2322;--mid:#E1B64E;--mid-bg:#342C19;
    --ta:#86A9E8;--ta-bg:#1E2839;--tb:#E5917A;--tb-bg:#3A2621;
    --shadow-pop:0 18px 44px -12px rgba(0,0,0,.62),0 2px 6px rgba(0,0,0,.4);
    --shadow-float:0 6px 20px rgba(0,0,0,.5);
    --scrim:rgba(4,6,5,.58);
  }
}
:root[data-theme="dark"]{
  --bg:#111513;--surface:#181D1A;--sunk:#0E1210;
  --ink:#ECE8DE;--ink-2:#CFCABE;--muted:#A9A799;--faint:#77776C;
  --line:#272D29;--line-2:#353C37;
  --accent:#E8894E;--accent-soft:#3A2518;--on-accent:#1C130C;
  --ok:#6CC08F;--ok-bg:#1B3024;
  --high:#EF8876;--high-bg:#3A2322;--mid:#E1B64E;--mid-bg:#342C19;
  --ta:#86A9E8;--ta-bg:#1E2839;--tb:#E5917A;--tb-bg:#3A2621;
  --shadow-pop:0 18px 44px -12px rgba(0,0,0,.62),0 2px 6px rgba(0,0,0,.4);
  --shadow-float:0 6px 20px rgba(0,0,0,.5);
  --scrim:rgba(4,6,5,.58);
}

/* ---------- 字体：后台不用宋体，和首页一样用黑体 ---------- */
.head h1{font-family:var(--f-sans);font-size:30px;font-weight:800;letter-spacing:-.012em;line-height:1.22;margin:6px 0 6px}
.brand b{font-family:var(--f-sans);font-size:19px;font-weight:800;letter-spacing:.01em}
.brand .brand-mark,.brand-mark{background:var(--brand);color:var(--on-brand);font-family:var(--f-sans);font-weight:800}
.empty b{font-family:var(--f-sans);font-weight:700;font-size:17px}
h2,h3{letter-spacing:-.005em}

/* ---------- 状态色：“正常 / 在线”用绿色，强调色只表示“选中、可操作” ---------- */
.tag.ok{background:var(--ok-bg);color:var(--ok)}
.bridge-card.ok{border-color:color-mix(in srgb,var(--ok) 35%,var(--line))}
.dot.live,.dot.on,.dot.up{background:var(--ok)}
.chk-row.is-ok .chk-ic{color:var(--ok)}

/* ---------- 细线进度条：不要灰色底槽，只留一条基线 ---------- */
.meter{position:relative;height:4px;background:none;border-radius:0;overflow:visible}
.meter::before{content:'';position:absolute;left:0;right:0;top:50%;border-top:1px solid var(--line-2)}
.meter > i{position:relative;height:4px;border-radius:2px}
.meter.lg{height:5px}.meter.lg > i{height:5px;border-radius:3px}

/* ---------- 页面标题区：右侧淡出的地形等高线 ---------- */
.page-main > .head{position:relative;isolation:isolate}
.page-main > .head::before{content:'';position:absolute;z-index:-1;pointer-events:none;top:-56px;right:0;bottom:-22px;width:min(60%,760px);
  background:url(../img/topo-light.webp) 64% 36% / 1500px auto no-repeat;
  -webkit-mask-image:linear-gradient(90deg,transparent,#000 60%),linear-gradient(0deg,transparent,#000 50%);-webkit-mask-composite:source-in;
  mask-image:linear-gradient(90deg,transparent,#000 60%),linear-gradient(0deg,transparent,#000 50%);mask-composite:intersect}
.page-main > .head .head-actions{position:relative}

/* ---------- 空状态：地图上一个定位标记，下面告诉你怎么开始 ---------- */
.empty::before{content:'';display:block;width:208px;height:120px;margin:0 auto 18px;border-radius:12px;border:1px solid var(--line);
  background:radial-gradient(circle at 50% 50%,var(--accent) 0 3.5px,transparent 4.5px),
    radial-gradient(circle at 50% 50%,transparent 0 15px,color-mix(in srgb,var(--accent) 50%,transparent) 15.5px 16.5px,transparent 17px),
    radial-gradient(circle at 50% 50%,transparent 0 30px,color-mix(in srgb,var(--accent) 22%,transparent) 30.5px 31.5px,transparent 32px),
    url(../img/topo-light.webp) 38% 52% / 900px auto}
.empty{padding:40px 24px 44px}

/* ---------- 地图缩略图：每张地图固定取一块等高线 ---------- */
.map-thumb{position:relative;display:block;height:108px;margin:0 0 14px;border-radius:10px;border:1px solid var(--line);overflow:hidden;
  background:url(../img/topo-light.webp) var(--mx,40%) var(--my,50%) / 1200px auto}
.map-thumb::before{content:'';position:absolute;left:var(--px,50%);top:var(--py,50%);width:8px;height:8px;margin:-4px 0 0 -4px;border-radius:50%;background:var(--accent);
  box-shadow:0 0 0 5px color-mix(in srgb,var(--accent) 22%,transparent)}
.map-thumb::after{content:'';position:absolute;inset:0;background:linear-gradient(180deg,transparent 55%,color-mix(in srgb,var(--surface) 55%,transparent))}

/* 深色：换成深色地形 */
:root[data-theme="dark"] .page-main > .head::before{background-image:url(../img/topo-dark.webp)}
:root[data-theme="dark"] .map-thumb{background-image:url(../img/topo-dark.webp)}
:root[data-theme="dark"] .empty::before{background-image:radial-gradient(circle at 50% 50%,var(--accent) 0 3.5px,transparent 4.5px),radial-gradient(circle at 50% 50%,transparent 0 15px,color-mix(in srgb,var(--accent) 50%,transparent) 15.5px 16.5px,transparent 17px),radial-gradient(circle at 50% 50%,transparent 0 30px,color-mix(in srgb,var(--accent) 22%,transparent) 30.5px 31.5px,transparent 32px),url(../img/topo-dark.webp)}
@media (prefers-color-scheme:dark){
  :root:not([data-theme="light"]):not([data-theme="white"]) .page-main > .head::before{background-image:url(../img/topo-dark.webp)}
  :root:not([data-theme="light"]):not([data-theme="white"]) .map-thumb{background-image:url(../img/topo-dark.webp)}
  :root:not([data-theme="light"]):not([data-theme="white"]) .empty::before{background-image:radial-gradient(circle at 50% 50%,var(--accent) 0 3.5px,transparent 4.5px),radial-gradient(circle at 50% 50%,transparent 0 15px,color-mix(in srgb,var(--accent) 50%,transparent) 15.5px 16.5px,transparent 17px),radial-gradient(circle at 50% 50%,transparent 0 30px,color-mix(in srgb,var(--accent) 22%,transparent) 30.5px 31.5px,transparent 32px),url(../img/topo-dark.webp)}
}

/* ---------- AI：不用紫色渐变，统一强调色 ---------- */
.ai-connect{display:flex;flex-wrap:wrap;align-items:center;gap:14px;padding:18px 20px;margin-bottom:26px;border-radius:18px;background:var(--accent);border:1px solid color-mix(in srgb,var(--accent) 30%,var(--line))}
.ai-logo{display:grid;place-items:center;width:44px;height:44px;flex:none;border-radius:13px;background:var(--accent);color:#fff;box-shadow:0 8px 20px -10px var(--accent)}
.ai-take-bar{display:flex;align-items:center;gap:10px;padding:8px 16px;font-size:12px;background:color-mix(in srgb,var(--accent) 12%,transparent);color:color-mix(in srgb,var(--accent) 75%,var(--ink))}
.ai-msg.patrol .ai-bub{background:color-mix(in srgb,var(--accent) 10%,var(--sunk))}
.ai-fab.off{background:var(--surface);color:var(--muted);border:1px solid var(--line-2);box-shadow:var(--shadow-float)}
.ai-fab.off:hover{color:var(--accent)}

/* AI 值守页：对话窗口嵌在页面里 */
.ai-page .ai-grid{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:20px;align-items:start;margin-top:20px}
.ai-dock{min-width:0}
.ai-panel.docked{position:relative!important;inset:auto!important;left:auto!important;right:auto!important;bottom:auto!important;top:auto!important;
  width:auto!important;max-width:none!important;height:min(700px,calc(100dvh - 230px))!important;min-height:480px;transform:none!important;opacity:1!important;
  box-shadow:none!important;border:1px solid var(--line);border-radius:var(--r-card);z-index:auto}
.ai-panel.docked [data-close]{display:none}
.ai-side{display:flex;flex-direction:column;gap:14px}
.ai-side .card{padding:18px 20px}
.ai-side h3{font-size:14px;font-weight:700;margin:0 0 10px}
.ai-caps{display:grid;gap:8px}
.ai-caps li{display:flex;align-items:flex-start;gap:10px;font-size:13.5px;color:var(--ink-2);line-height:1.5}
.ai-caps li svg{flex:none;width:16px;height:16px;margin-top:2px;color:var(--muted)}
.ai-caps.confirm li svg{color:var(--accent)}
.ai-caps small{display:block;color:var(--faint);font-size:12px}

/* 未接入时：说明 + 逐项检查 */
.ai-intro{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);gap:20px;margin-top:20px;align-items:stretch}
.ai-hero{position:relative;overflow:hidden;border-radius:var(--r-card);min-height:340px;display:flex;flex-direction:column;justify-content:flex-end;padding:28px;color:#ECE8DE;isolation:isolate;background:#111513}
.ai-hero img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:-2}
.ai-hero::before{content:'';position:absolute;inset:0;z-index:-1;background:linear-gradient(180deg,rgba(17,21,19,.05) 20%,rgba(17,21,19,.88) 78%)}
.ai-hero h2{font-size:26px;font-weight:800;letter-spacing:-.01em;margin:0 0 8px}
.ai-hero p{margin:0;max-width:30em;color:rgba(236,232,222,.82);font-size:14.5px;line-height:1.65}
.ai-check{display:flex;flex-direction:column}
.ai-check h3{font-size:15px;margin:0 0 4px}
.ai-check > p{margin:0 0 14px;font-size:13.5px;color:var(--muted)}
.ai-req{display:grid;grid-template-columns:24px minmax(0,1fr) auto;gap:10px;align-items:start;padding:14px 0;border-top:1px solid var(--line)}
.ai-req:first-of-type{border-top:0}
.ai-req > svg{width:20px;height:20px;margin-top:1px}
.ai-req.ok > svg{color:var(--ok)}
.ai-req.no > svg{color:var(--high)}
.ai-req b{display:block;font-size:14px}
.ai-req span{display:block;font-size:12.5px;color:var(--muted);line-height:1.55;margin-top:2px}
.ai-two{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin-top:20px}
.ai-two .card{padding:20px 22px}
@media (max-width:980px){.ai-page .ai-grid,.ai-intro,.ai-two{grid-template-columns:1fr}.ai-panel.docked{height:min(640px,calc(100dvh - 180px))!important}}
@media (prefers-reduced-motion:reduce){.page-main > .head::before{transition:none}}

/* 右下角 AI 按钮：强调色，不用紫蓝渐变 */
.ai-fab{background:var(--accent);color:var(--on-accent);box-shadow:0 10px 24px -8px color-mix(in srgb,var(--accent) 60%,transparent),0 2px 6px rgba(0,0,0,.18)}
.ai-fab:hover{transform:scale(1.05)}
.ai-fab.off{background:var(--surface);color:var(--muted);border:1px solid var(--line-2);box-shadow:var(--shadow-float)}
.ai-check{padding:20px 22px}

/* ---------- 白色主题：恢复最早的冷灰蓝 + 青绿配色，白底 ---------- */
:root[data-theme="white"]{
  --bg:#F3F5F8;--surface:#FFFFFF;--sunk:#EEF1F5;
  --ink:#1D2330;--ink-2:#39414F;--muted:#566072;--faint:#838C9C;
  --line:#DDE2E9;--line-2:#C4CBD6;
  --accent:#0B6962;--accent-soft:#DCEEEB;--on-accent:#FFFFFF;
  --ok:#2E7550;--ok-bg:#DCEDE2;
  --high:#AE3325;--high-bg:#F8E4E0;--mid:#7F5900;--mid-bg:#F4EAD0;
  --ta:#2D58A6;--ta-bg:#E3EAF6;--tb:#A8432A;--tb-bg:#F6E6E0;
  --brand:#0B6962;--on-brand:#FFFFFF;
  --shadow-pop:0 18px 40px -12px rgba(29,35,48,.22),0 2px 6px rgba(29,35,48,.06);
  --shadow-float:0 6px 18px rgba(29,35,48,.16);
  --scrim:rgba(24,29,38,.30);
  color-scheme:light;
}
:root[data-theme="white"] .page-main > .head::before,
:root[data-theme="white"] .map-thumb{background-image:url(../img/topo-light.webp);opacity:.55}

/* 站点标志图（替换原来的文字方块） */
.brand-logo{display:block;width:28px;height:28px;flex:none;border-radius:7px}
.brand-logo.lg{width:44px;height:44px;border-radius:11px}
/* 头像图片 */
.avatar.img,.team-tile.img{background:var(--sunk);overflow:hidden;padding:0}
.avatar.img img,.team-tile.img img{width:100%;height:100%;object-fit:cover;display:block;border-radius:inherit}
.avatar.xl{width:96px;height:96px;font-size:36px;border-radius:24px}
.team-tile.xl{width:72px;height:72px;font-size:28px;border-radius:18px}
/* 个人资料 */
.pf-card{display:flex;flex-direction:column;gap:12px;margin-bottom:14px}
.pf-card h3{display:flex;align-items:center;gap:8px;margin:0;font-size:15px}
.pf-card h3 svg{width:18px;height:18px}
.pf-id{display:flex;align-items:center;gap:18px}
.pf-id h2{margin:0 0 2px;font-size:20px}
.pf-steam{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.pf-card .sm{font-size:12.5px}
.pf-card.flash{animation:pfFlash 1.6s var(--ease)}
@keyframes pfFlash{0%,40%{box-shadow:0 0 0 3px var(--accent)}100%{box-shadow:0 0 0 0 transparent}}
.row.gap{gap:8px}.row.wrap{flex-wrap:wrap}
/* 站点配置：自检结果、QQ 状态 */
.diag-list{list-style:none;margin:10px 0 6px;padding:0;display:grid;gap:6px}
.diag-list li{display:grid;grid-template-columns:18px auto 1fr;gap:4px 8px;align-items:center}
.diag-list li svg{width:18px;height:18px}
.diag-list li.ok svg{color:var(--ok)}.diag-list li.bad svg{color:var(--high)}
.diag-list li small{grid-column:2/-1;word-break:break-all}
.qq-card .bridge-top{flex-wrap:wrap}
.qq-status .sm,.bridge-card .sm{font-size:12.5px;margin:8px 0 0;word-break:break-all}
.ok-text{color:var(--ok)}
/* QQ 机器人教程 */
.qb-guide{margin-top:16px;padding:0}
.qb-guide>summary{display:flex;gap:10px;align-items:center;padding:14px 16px;cursor:pointer;list-style:none}
.qb-guide>summary::-webkit-details-marker{display:none}
.qb-guide>summary b{display:flex;gap:6px;align-items:center}
.qb-guide>summary svg{width:16px;height:16px}
.md{padding:0 18px 16px;font-size:14px;line-height:1.75}
.md h3,.md h4,.md h5{margin:18px 0 6px;font-size:15px}
.md p{margin:6px 0}
.md pre{background:var(--sunk);border:1px solid var(--line);border-radius:8px;padding:10px 12px;overflow-x:auto;font-size:12.5px}
.md code{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:.92em}
.md p code,.md li code,.md td code{background:var(--sunk);padding:1px 5px;border-radius:4px;word-break:break-all}
.md blockquote{margin:8px 0;padding:6px 12px;border-left:3px solid var(--accent);background:var(--sunk);border-radius:0 8px 8px 0}
.md ul,.md ol{margin:6px 0;padding-left:1.4em}
.md-table{overflow-x:auto}
.md table{border-collapse:collapse;width:100%;font-size:13px}
.md th,.md td{border:1px solid var(--line);padding:6px 10px;text-align:left}
.md th{background:var(--sunk)}
.pf-card{padding:18px 20px}
.pf-card .row{display:flex;align-items:center}
.pf-card .grow{flex:1;min-width:0}
.pf-card>.btn,.pf-card>form>div>.btn,.pf-card>p+.btn{align-self:flex-start}
.pf-card p{margin:0}
.pf-id .avatar.xl{box-shadow:0 0 0 1px var(--line)}
.pf-steam a{white-space:nowrap}
.pf-steam a svg{display:inline-block;width:13px;height:13px;vertical-align:-2px;margin-left:2px}
/* 打乱阵营：方式切换 */
.shf-mode{margin-bottom:12px}
.shf-score-note{margin:0 0 12px;font-size:13px}
.shf-prot{display:flex;gap:6px;align-items:center;font-size:12.5px;margin:10px 0 0}
.shf-prot svg{width:14px;height:14px}

/* QQ 机器人：能不能用的检查清单 */
.qq-ready{margin:12px 0 10px;padding:12px 14px;border-radius:10px;border:1px solid var(--line);background:var(--sunk)}
.qq-ready.ok{border-color:color-mix(in srgb,var(--ok) 45%,var(--line))}
.qq-ready>b{display:block;margin-bottom:8px;font-size:14px}
.qq-ready.no>b{color:var(--high)}.qq-ready.ok>b{color:var(--ok)}
.qq-ready ul{list-style:none;margin:0;padding:0;display:grid;gap:6px}
.qq-ready li{display:flex;gap:8px;align-items:flex-start;font-size:13px}
.qq-ready li svg{width:16px;height:16px;flex:none;margin-top:2px}
.qq-ready li.ok svg{color:var(--ok)}.qq-ready li.bad svg{color:var(--high)}.qq-ready li.opt svg{color:var(--faint)}
.qq-ready li b{font-weight:500}.qq-ready li small{display:block;color:var(--muted);font-size:12px;margin-top:1px}
