/* ==========================================================
   2.5.0：四项数据、实时票数与改票、历史对局、运营报告、暖服记录、账号检测、联合封禁库修正
   单独一个文件，放在最后加载；只用主题变量，白色 / 浅色 / 深色三套主题自动适配
   ========================================================== */

/* ---------- 通用 ---------- */
.ts2{display:inline-flex;flex-direction:column;line-height:1.25;font-variant-numeric:tabular-nums}
.ts2 span{font-size:12px;color:var(--muted)}
.ts2 b{font-weight:500;font-size:13px}
.grid2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px 16px}
@media (max-width:640px){.grid2{grid-template-columns:1fr}}
.textarea.mono{font-family:ui-monospace,Consolas,"Cascadia Mono",monospace;font-size:12.5px;line-height:1.7;white-space:pre;overflow-x:auto}

/* ---------- 标签页里的图标（联合封禁库的地球图标以前会掉到文字上面一行） ---------- */
.tabs button{display:inline-flex;align-items:center;gap:6px;white-space:nowrap}
.tabs button > svg.ic{width:14px;height:14px;flex:none;display:block}
.tabs button:focus:not(:focus-visible){outline:none}

/* ---------- 在线玩家：四项数据 ---------- */
.pl-st{margin-left:auto;display:flex;align-items:center;gap:2px;font-size:12.5px;color:var(--muted);white-space:nowrap}
.pl-st > span{display:inline-flex;align-items:center;justify-content:flex-end;gap:3px;min-width:3.1em;padding:0 2px}
.pl-st svg.ic{width:13px;height:13px;flex:none;opacity:.55}
.pl-st b{font-weight:500;color:var(--ink);font-variant-numeric:tabular-nums;min-width:1.1em;text-align:right}
.pl-st .st-k b{font-weight:600}
.pl-st .st-d b{color:var(--muted)}
.pl-st .st-r svg.ic{color:var(--accent);opacity:.75}
.pl-st .bump{animation:bump 1.2s var(--ease)}
.pl-list.flat .pl-st{margin-left:8px}
/* 窄一些的屏幕：先去掉图标，再只留击杀和死亡（和以前一样），保证名字始终看得见 */
.pl-row .pl-name{min-width:4.5em}
.pl-row .tag{max-width:5.5em;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:0 1 auto}
.pl-st{flex:none}
@media (max-width:1500px){.pl-row .pl-role{display:none}.pl-st > span{min-width:2.3em}.pl-st svg.ic{display:none}}
@media (max-width:1280px){.pl-st .st-w,.pl-st .st-r{display:none}.pl-st > span{min-width:2em}}
@media (prefers-reduced-motion:reduce){.pl-st .bump{animation:none}}
.score-meta{display:flex;align-items:center;gap:10px;justify-content:space-between;margin-top:8px;font-size:12px;min-height:22px}
.score-meta .linkish{display:inline-flex;align-items:center;gap:4px;font-size:12.5px}
.score-meta .linkish svg.ic{width:14px;height:14px}
.score-meta{align-items:flex-start}
.score-meta [data-tsrc]{min-width:0;overflow:hidden;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;line-height:1.5;word-break:break-all}
.score-meta .linkish{flex:none}
.tix-edit{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.tix-edit label{font-weight:600}
/* 2.5.3 调整票数：风险提示和确认勾选 */
.tix-warn{border:1px solid color-mix(in srgb,var(--high) 45%,transparent);background:var(--high-bg,color-mix(in srgb,var(--high) 8%,transparent));border-radius:var(--r-ctl);padding:10px 12px;margin-bottom:14px;font-size:13px;line-height:1.6}
.tix-warn p{margin:0 0 6px}.tix-warn p:last-child{margin-bottom:0}
.tix-warn-title{display:flex;align-items:center;gap:6px;color:var(--high);font-weight:600}
.tix-warn-title svg{width:16px;height:16px}
.tix-ack{display:flex;align-items:center;gap:8px;margin-top:14px;font-size:13px;font-weight:500;cursor:pointer}
.tix-ack input{width:16px;height:16px;margin:0}
.score-meta .tix-lock{display:inline-flex;align-items:center;gap:4px;font-size:12px;cursor:help}
.score-meta .tix-lock svg{width:13px;height:13px}
.score-meta .tix-lock[hidden]{display:none}

/* ---------- 日志：历史对局 ---------- */
.log-match{padding:0 !important}
.log-match .lm{display:grid;grid-template-columns:auto 72px minmax(9em,1.4fr) minmax(10em,1fr) 6.5em minmax(10em,1fr) minmax(8em,.9fr);align-items:center;gap:14px;
  width:100%;padding:10px 16px;border:0;background:transparent;text-align:left;color:inherit;cursor:pointer;transition:background-color .12s}
.log-match .lm:hover{background:var(--sunk)}
.lm-map{display:flex;flex-direction:column;min-width:0}
.lm-map b{font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.lm-map small,.lm-mvp small{font-size:12px;color:var(--muted)}
.lm-vs{display:flex;align-items:center;gap:8px;white-space:nowrap}
.lm-vs b{font-weight:600;font-size:15px}
.lm-res{font-size:13px;white-space:nowrap}
.lm-n{font-size:12.5px;color:var(--muted);white-space:nowrap}
.lm-mvp{display:flex;align-items:baseline;gap:6px;min-width:0;font-size:13px;white-space:nowrap;overflow:hidden}
.lm-mvp b{font-weight:600}
@media (max-width:900px){.log-match .lm{grid-template-columns:auto 56px 1fr auto;row-gap:4px}.lm-res{grid-column:3}}
.mt-score{display:grid !important;grid-template-columns:1fr auto 1fr;align-items:center;gap:12px;text-align:center}
.mt-score > div{display:flex;flex-direction:column;align-items:center;gap:2px}
.mt-score b{font-size:30px;font-weight:600;line-height:1.1}
.mt-score small{font-size:12px;color:var(--muted)}
.mt-mid{font-size:14px;font-weight:600}
.mt-side header{display:flex;align-items:baseline;gap:8px;margin-bottom:8px}
.mt-side header b{font-size:15px}
.mt-tbl th svg.ic{width:14px;height:14px;display:inline-block;vertical-align:-2px}
.mt-tbl td,.mt-tbl th{padding-top:6px;padding-bottom:6px}
.mt-tbl tfoot td{border-top:1px solid var(--line);font-size:12.5px}
.mt-who{display:inline-flex;align-items:center;gap:6px;min-width:0}
.mt-who .pname{max-width:13em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mt-who .tag{height:18px;padding:0 5px;font-size:11px}
.mt-sq{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px 16px;font-size:13px}
.mt-sq li{display:flex;align-items:baseline;gap:8px;min-width:0}
.mt-sq li .ell{flex:1;min-width:0}

/* ---------- 玩家详情：Steam 账号 ---------- */
.acct-empty{font-size:13px;line-height:1.6;margin-bottom:10px}
.acct-top{display:flex;align-items:center;gap:10px;font-size:12.5px;margin-bottom:12px}
.acct-top .grow{flex:1}
.acct-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1px;background:var(--line);border:1px solid var(--line);border-radius:var(--r-ctl);overflow:hidden}
.acct-grid > div{background:var(--surface);padding:10px 12px;display:flex;flex-direction:column;gap:1px;min-width:0}
.acct-grid span{font-size:12px;color:var(--muted)}
.acct-grid b{font-size:15px;font-weight:600}
.acct-grid small{font-size:12px;color:var(--faint);min-height:1.2em}
.acct-f{margin-top:10px;display:flex;flex-direction:column;gap:4px;font-size:13px}
.acct-f li{position:relative;padding-left:14px}
.acct-f li::before{content:"";position:absolute;left:2px;top:.62em;width:6px;height:6px;border-radius:50%;background:var(--faint)}
.acct-f li.high::before{background:var(--high)}
.acct-f li.mid::before{background:var(--mid)}
.acct-via{margin-top:8px;font-size:12px;word-break:break-all}

/* ---------- 处置台 ---------- */
.inc-more{margin:6px 0 2px;font-size:12.5px;color:var(--muted)}
.inc-more summary{cursor:pointer;width:max-content}
.inc-more ul{margin-top:6px;padding-left:16px;list-style:disc;word-break:break-all;line-height:1.7}

/* ---------- 联合封禁库 ---------- */
.union-tbl .ban-reason span{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.union-tbl .ban-reason small{display:block;font-size:12px;color:var(--muted);margin-top:2px}
.src-cell{display:inline-flex;align-items:center;gap:8px;max-width:16em;min-width:0}
.src-cell .tag{flex:none}
.src-cell .ell{min-width:0;font-size:13px;color:var(--muted)}
.evi-n{display:inline-flex;align-items:center;justify-content:flex-end;gap:4px;min-width:3.6em}
span.evi-n{padding:0 8px;height:28px}
.evi-n svg.ic{width:14px;height:14px}
.union-tbl .stack-cell .ell{display:block;max-width:12em}

/* ---------- 服务器状态：运营报告 ---------- */
.rp-head h2{display:flex;align-items:baseline;gap:10px}
.rp-day{font-size:12.5px;font-weight:400}
.rp-body{display:grid;grid-template-columns:150px minmax(0,1.5fr) minmax(0,1fr);gap:22px;padding:6px 20px 18px;align-items:start}
.rp-score{display:flex;flex-direction:column;align-items:flex-start;gap:2px;padding-top:6px}
.rp-score b{font-size:52px;font-weight:600;line-height:1;letter-spacing:-.02em}
.rp-score span{font-size:15px;font-weight:600}
.rp-score small{font-size:12px}
.rp-score.good b,.rp-score.good span{color:var(--accent)}
.rp-score.mid b,.rp-score.mid span{color:var(--mid)}
.rp-score.high b,.rp-score.high span{color:var(--high)}
.rp-parts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px 18px}
.rp-part{min-width:0}
.rp-part.na{opacity:.6}
.rp-pt{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:5px;font-size:13px}
.rp-pt span{font-weight:600}
.rp-part p{font-size:12.5px;color:var(--muted);line-height:1.55;margin-top:6px}
.rp-part p.rp-tip{color:var(--ink-2);display:flex;gap:5px;align-items:flex-start}
.rp-tip svg.ic{width:13px;height:13px;flex:none;margin-top:3px;color:var(--mid)}
.rp-side{min-width:0;display:flex;flex-direction:column;gap:12px}
.rp-lines{display:flex;flex-direction:column;gap:4px;font-size:13px;line-height:1.55}
.rp-cap{display:flex;justify-content:space-between;font-size:12px;margin-bottom:4px}
.rp-kv{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));border-top:1px solid var(--line)}
.rp-kv > div{padding:12px 20px;display:flex;flex-direction:column;gap:1px;min-width:0}
.rp-kv > div:nth-child(n+5){border-top:1px solid var(--line)}
.rp-kv > div:not(:nth-child(4n+1)){border-left:1px solid var(--line)}
.rp-kv dt{font-size:12px;color:var(--muted)}
.rp-kv dd{margin:0;font-size:17px;font-weight:500}
.rp-kv dd small{font-size:12px;font-weight:400}
.rp-kv small{font-size:12px}
.rp-d.up{color:var(--accent)}
.rp-d.down{color:var(--mid)}
@media (max-width:1280px){.rp-body{grid-template-columns:120px minmax(0,1fr)}.rp-side{grid-column:1 / -1}}
@media (max-width:760px){.rp-body{grid-template-columns:1fr}.rp-parts{grid-template-columns:1fr}.rp-kv{grid-template-columns:repeat(2,minmax(0,1fr))}
  .rp-kv > div:not(:nth-child(4n+1)){border-left:0}.rp-kv > div:nth-child(2n){border-left:1px solid var(--line)}.rp-kv > div:nth-child(n+3){border-top:1px solid var(--line)}}

/* ---------- 暖服记录 ---------- */
.warm-strip b small{font-size:13px;font-weight:400;color:var(--muted)}
.warm-top{font-weight:700;color:var(--mid)}
.warm-rounds li{font-size:13px;min-height:36px}
.warm-rounds li .grow{flex:1;min-width:0}
.warm-rounds li small{font-size:12px}
@media (max-width:900px){.st-strip.four{grid-template-columns:repeat(2,minmax(0,1fr))}.st-strip.four > div:nth-child(3){border-left:0}.st-strip.four > div:nth-child(n+3){border-top:1px solid var(--line)}}

/* ---------- 暖服公开查询页 ---------- */
.kk-page{min-height:100vh;min-height:100dvh;background:var(--bg);color:var(--ink)}
.kk-head{max-width:880px;margin:0 auto;padding:22px 20px 0}
.kk-brand{font-weight:700;color:var(--ink);text-decoration:none}
.kk-main{max-width:880px;margin:0 auto;padding:28px 20px 60px}
.kk-main h1{font-size:28px;font-weight:700;line-height:1.25}
.kk-rules{margin-top:10px;color:var(--muted);line-height:1.7;max-width:62em}
.kk-tools{margin:22px 0 12px}
.kk-tools .input-ic{max-width:420px}

/* ---------- 地图背景（站点配置 → 地图背景） ----------
   标题区的地图图：原色显示，只把边缘羽化掉 —— 左边长淡出接标题文字，下边淡出接筛选栏，右边留一小段淡出，不在右栏边上一刀切。
   图本身要是干净的地图区域（不带出界区、暗角、边框），推荐用 3:1 的图。
   传上来的是真图，不再按等高线那样调淡：标题区不透明度提到 .94（深色 .74），下边从一半高度才开始淡出；右栏和对局卡片的小图全不透明。 */
:root .page-main > .head.has-art::before{
  background-image:var(--head-art) !important;
  background-size:cover !important;background-position:var(--hx,50%) var(--hy,50%) !important;background-repeat:no-repeat !important;
  width:min(62%,880px);opacity:.94;
  -webkit-mask-image:linear-gradient(90deg,transparent,#000 48%,#000 93%,transparent),linear-gradient(180deg,#000 52%,transparent);-webkit-mask-composite:source-in;
  mask-image:linear-gradient(90deg,transparent,#000 48%,#000 93%,transparent),linear-gradient(180deg,#000 52%,transparent);mask-composite:intersect;
  animation:artIn .6s var(--ease) both}
:root[data-theme="white"] .page-main > .head.has-art::before{opacity:.92}
:root[data-theme="dark"] .page-main > .head.has-art::before{opacity:.74}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]):not([data-theme="white"]) .page-main > .head.has-art::before{opacity:.74}}
@keyframes artIn{from{opacity:0}}
@media (prefers-reduced-motion:reduce){:root .page-main > .head.has-art::before{animation:none}}
.map-thumb.has-art{background-size:cover !important;background-repeat:no-repeat}
/* 白色主题给等高线小图设了 opacity:.55，真图不跟着调淡；底部只留一层很薄的过渡 */
:root .map-thumb.has-art,:root[data-theme="white"] .map-thumb.has-art{opacity:1}
.map-thumb.has-art::after{background:linear-gradient(180deg,transparent 72%,color-mix(in srgb,var(--surface) 22%,transparent))}
.map-thumb.has-art::before{display:none}
.ma-tools{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:14px}
.ma-tools .input-ic{width:240px}
.ma-note{font-size:13px;color:var(--muted);line-height:1.7;margin-bottom:14px;max-width:62em}
.ma-region{font-size:12.5px;font-weight:600;color:var(--muted);margin:18px 0 8px}
.ma-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px}
.ma-card{border:1px solid var(--line);border-radius:var(--r-card,12px);background:var(--surface);overflow:hidden;display:flex;flex-direction:column}
.ma-card.is-default{grid-column:1 / -1;flex-direction:row}
.ma-pic{position:relative;aspect-ratio:16/7;background:var(--sunk) url(../img/topo-light.webp) 40% 50% / 900px auto;cursor:default}
.ma-card.is-default .ma-pic{width:min(420px,50%);flex:none}
.ma-pic.has-art{background-size:cover;cursor:crosshair}
.ma-pic .ma-dot{position:absolute;width:14px;height:14px;margin:-7px 0 0 -7px;border-radius:50%;border:2px solid #fff;box-shadow:0 0 0 1px rgba(0,0,0,.35);pointer-events:none}
.ma-pic .ma-empty{position:absolute;inset:0;display:grid;place-items:center;font-size:12.5px;color:var(--muted);background:color-mix(in srgb,var(--surface) 55%,transparent)}
.ma-body{display:flex;align-items:center;gap:8px;padding:10px 12px;min-width:0}
.ma-card.is-default .ma-body{flex-direction:column;align-items:flex-start;justify-content:center;padding:14px 18px;gap:6px}
.ma-name{flex:1;min-width:0}
.ma-name b{display:block;font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ma-name small{font-size:12px;color:var(--faint)}
.ma-acts{display:flex;gap:6px;flex:none}
.ma-card.busy{opacity:.55;pointer-events:none}
@media (max-width:760px){.ma-card.is-default{flex-direction:column}.ma-card.is-default .ma-pic{width:100%}}

/* 地图小图：历史对局、下一张地图、对局详情顶部 */
.lm-thumb .map-thumb,.next-thumb .map-thumb{height:40px;margin:0;border-radius:6px}
.lm-thumb .map-thumb::before,.next-thumb .map-thumb::before{width:5px;height:5px;margin:-2.5px 0 0 -2.5px;box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 22%,transparent)}
.lm-thumb .map-thumb::after,.next-thumb .map-thumb::after{display:none}
.next-thumb{width:52px;flex:none}
.next-thumb:empty{display:none}
.next-thumb .map-thumb{height:30px}
.mt-banner .map-thumb{height:120px;margin:0;border-radius:10px}

/* ===================== 2.5.6 ===================== */
/* 插件：JS 插件图标、代码编辑 / 查看、配置字段编辑、日志 */
.plug-ic.js{background:color-mix(in srgb,var(--ta) 14%,transparent);color:var(--ta)}
.drawer.wide:has(.code-edit){width:min(920px,100vw)}
.code-edit,.code-view{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,"Liberation Mono",monospace;font-size:12.5px;line-height:1.55;tab-size:2}
.code-edit{min-height:360px;white-space:pre;overflow:auto}
.code-view{margin:0;padding:12px 14px;max-height:460px;overflow:auto;border-radius:8px;background:var(--sunk);color:var(--ink);white-space:pre;border:1px solid var(--line)}
.sf-row{padding:10px;display:grid;grid-template-columns:1fr 1fr 140px auto;gap:8px;align-items:end}
.sf-row .field{margin:0}
@media (max-width:640px){.sf-row{grid-template-columns:1fr 1fr}}
.plog li{align-items:flex-start;gap:10px;font-size:12.5px}
.c-ok{color:var(--ok,#1E8456)}
/* 开发文档 */
.md-doc{padding:22px 26px;line-height:1.75;font-size:14px;max-width:980px}
.md-doc h1{font-size:22px;margin:0 0 12px}
.md-doc h2{font-size:18px;margin:26px 0 10px;padding-top:14px;border-top:1px solid var(--line)}
.md-doc h3{font-size:15px;margin:18px 0 8px}
.md-doc p{margin:8px 0}
.md-doc ul,.md-doc ol{margin:6px 0 10px;padding-left:22px}
.md-doc code{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:12.5px;padding:1px 5px;border-radius:4px;background:var(--sunk)}
.md-doc pre{margin:10px 0;padding:12px 14px;border-radius:8px;background:var(--sunk);border:1px solid var(--line);overflow:auto}
.md-doc pre code{padding:0;background:none;font-size:12.5px;line-height:1.55}
.md-doc table{border-collapse:collapse;margin:10px 0;font-size:13px;display:block;overflow-x:auto}
.md-doc th,.md-doc td{border:1px solid var(--line);padding:6px 10px;text-align:left;vertical-align:top}
.md-doc th{background:var(--sunk);font-weight:500}
.md-doc blockquote{margin:10px 0;padding:8px 14px;border-left:3px solid var(--accent);background:var(--accent-soft);border-radius:0 6px 6px 0}
/* 用户概况 */
.usage-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:14px}
.usage-grid > .card{padding:14px 16px}
.usage-grid h3{font-size:14px;margin:0 0 10px;display:flex;align-items:center}
.usage-grid h3 .r{margin-left:auto}
.usage-grid .u-wide,.usage-grid .u-kpi{grid-column:1/-1}
.u-kpi{display:flex;flex-wrap:wrap;gap:10px 28px}
.u-kpi small{display:block;color:var(--muted);font-size:12px}
.u-kpi b{font-size:24px;font-weight:600}
.ubars{list-style:none;margin:0;padding:0;display:grid;gap:7px}
.ubars li{display:grid;grid-template-columns:minmax(80px,38%) 1fr auto;gap:10px;align-items:center;font-size:13px}
.ub-b{height:10px;border-radius:5px;background:var(--sunk);overflow:hidden}
.ub-b i{display:block;height:100%;border-radius:5px;background:var(--accent);transform-origin:left;animation:ubGrow .6s var(--ease) both}
@keyframes ubGrow{from{transform:scaleX(0)}to{transform:scaleX(1)}}
.ucols{display:flex;align-items:flex-end;gap:6px;height:150px;padding-top:16px}
.uc{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;height:100%;min-width:0}
.uc i{display:block;width:70%;min-height:2px;border-radius:4px 4px 0 0;background:var(--accent);transform-origin:bottom;animation:ucGrow .6s var(--ease) both}
.uc span{font-size:11px;color:var(--muted);margin-bottom:3px}
.uc small{font-size:11px;color:var(--faint);margin-top:4px;white-space:nowrap}
@keyframes ucGrow{from{transform:scaleY(0)}to{transform:scaleY(1)}}
@media (prefers-reduced-motion: reduce){.ub-b i,.uc i{animation:none}}
