:root{--bg:#0d1117;--panel:#161b25;--panel2:#1d2431;--line:#2a3344;--tx:#e6e1d6;--dim:#8b95a7;--gold:#e5b84b;--acc:#7aa2f7;--ok:#5cc98a;--bad:#e5645b;--rc:#6b7280}
*{box-sizing:border-box}
html,body{margin:0;background:var(--bg);color:var(--tx);font:14px/1.5 -apple-system,"PingFang SC","Microsoft YaHei",sans-serif;-webkit-tap-highlight-color:transparent}
body{min-height:100vh;padding:48px 0 calc(58px + env(safe-area-inset-bottom))}
button{font:inherit;color:inherit;cursor:pointer}
img{display:block}
h2{margin:0 0 8px;font-size:18px}h2 small,h3 small{color:var(--dim);font-weight:400;font-size:12px;margin-left:6px}
h3{margin:14px 0 6px;font-size:15px}h4{margin:12px 0 6px;font-size:13px;color:var(--dim)}
.hint{color:var(--dim);font-size:12px;margin:6px 0}
.top{position:fixed;inset:0 0 auto 0;height:48px;padding:0 max(12px,env(safe-area-inset-left));display:flex;align-items:center;justify-content:space-between;background:#0a0d13ee;backdrop-filter:blur(6px);border-bottom:1px solid var(--line);z-index:20}
.brand{font-weight:700;letter-spacing:1px;color:#ead9b9}.brand span{color:var(--dim);font-weight:400}
.hl{display:flex;align-items:center;gap:8px;min-width:0}
.back{display:flex;align-items:center;justify-content:center;width:26px;height:26px;flex:0 0 auto;border:1px solid var(--line);border-radius:7px;color:var(--dim);text-decoration:none;font-size:15px;line-height:1}
.back:hover{color:var(--gold);border-color:var(--gold)}
.res{display:flex;gap:14px}.res b{color:var(--gold);margin-left:3px}
/* 资源图标（召唤券 = 流明之芯 / 银芯 = 银芯）：原作图标本身带金属高光，深色底下不用再加滤镜。
   尺寸比 emoji 以前那版大一点（16 → 18）：图里本身还有留白，太小会显得模糊 */
.res .ico{width:18px; height:18px; display:inline-block; vertical-align:-4px; object-fit:contain}
/* 正文里的同款小图标（签到、奖励预览那些用 emoji 的位置）。
   签到格子只有六十几像素宽，图标缩到 14 以下就认不出来了，所以固定 15 并轻微提亮
   （原作图标本身偏灰，压在深色底上会发闷） */
.ico-sm{width:15px; height:15px; display:inline-block; vertical-align:-3px; object-fit:contain; filter:brightness(1.12) saturate(1.05)}
main{max-width:980px;margin:0 auto;padding:12px}
/* ---- 底部导航：5 个功能域（原来 13 个页签横滚，手机上挤成一排） ---- */
#tabs{position:fixed;inset:auto 0 0 0;height:calc(58px + env(safe-area-inset-bottom));display:flex;background:linear-gradient(#0b0f16,#0a0d13);border-top:1px solid var(--line);padding-bottom:env(safe-area-inset-bottom);z-index:20}
#tabs button{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;position:relative;background:none;border:0;color:var(--dim);font-size:11px;padding:0;transition:color .16s,transform .12s}
#tabs button .ti{display:block;width:21px;height:21px}
#tabs button .ti svg{width:100%;height:100%;display:block}
#tabs button.on{color:var(--gold)}
#tabs button.on .ti{filter:drop-shadow(0 0 7px color-mix(in srgb,var(--gold) 55%,transparent))}
#tabs button.on::before{content:"";position:absolute;top:0;left:50%;transform:translateX(-50%);width:22px;height:2px;border-radius:0 0 2px 2px;background:var(--gold);box-shadow:0 0 9px var(--gold)}
#tabs button:active{transform:scale(.92)}
/* 组内二级导航：胶囊，吸在顶栏下面 */
#subnav{position:sticky;top:48px;z-index:19;display:flex;gap:6px;padding:7px max(12px,env(safe-area-inset-left));background:#0a0d13f2;backdrop-filter:blur(6px);border-bottom:1px solid var(--line);overflow-x:auto;scrollbar-width:none}
#subnav::-webkit-scrollbar{display:none}
#subnav[hidden]{display:none}
#subnav button{flex:0 0 auto;padding:5px 13px;border-radius:999px;font-size:12.5px;background:var(--panel);border:1px solid var(--line);color:var(--dim);transition:background .16s,color .16s,border-color .16s}
#subnav button.on{background:color-mix(in srgb,var(--gold) 16%,transparent);border-color:color-mix(in srgb,var(--gold) 55%,transparent);color:var(--gold)}
#view.fadein{animation:fadein .18s ease-out}
@keyframes fadein{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}
.btn{background:var(--panel2);border:1px solid var(--line);border-radius:8px;padding:8px 14px}
.btn:hover:not(:disabled){border-color:var(--acc)}.btn:disabled{opacity:.4;cursor:default}
.btn.sm{padding:4px 9px;font-size:12px}.btn.xs{padding:2px 7px;font-size:11px;border-radius:6px}.btn.on{border-color:var(--gold);color:var(--gold)}
.btn.big{padding:12px 22px;font-size:15px}.btn.gold{background:linear-gradient(#a57d1c,#6e5210);border-color:#c9a13a}
.btn.danger{color:#ff8e86}
.row{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:8px 0}
/* battle */
.stage-head{display:flex;justify-content:space-between;align-items:flex-start;flex-wrap:wrap;gap:8px}
.stage-name{font-size:17px;font-weight:700;color:#ead9b9}.stage-sub{color:var(--dim);font-size:12px}
.stage-ctl{display:flex;gap:6px;flex-wrap:wrap}
.field{margin:10px 0;border:1px solid var(--line);border-radius:12px;padding:10px 6px;background:radial-gradient(ellipse at 50% 0,#1d2740 0,#10151f 70%);position:relative}
.side{display:flex;justify-content:center;gap:6px}
.vs{text-align:center;color:var(--dim);font-size:12px;margin:6px 0;letter-spacing:2px}
.unit{width:23%;max-width:150px;text-align:center;transition:transform .15s,opacity .4s,filter .4s;position:relative}
.u-pic{position:relative;border:2px solid var(--rc);border-radius:10px;overflow:hidden;background:#000;aspect-ratio:1}
.u-pic img{width:100%;height:100%;object-fit:cover}
.unit.boss{width:34%;max-width:210px}
.unit.acting .u-pic{box-shadow:0 0 14px 2px var(--rc);transform:translateY(-4px)}
.unit.foe.acting .u-pic{transform:translateY(4px)}
.unit.hit .u-pic{animation:shake .25s}
.unit.dead{opacity:.28;filter:grayscale(1)}
@keyframes shake{25%{transform:translateX(-4px)}75%{transform:translateX(4px)}}
.u-tag{position:absolute;left:3px;top:3px;font-size:10px;background:#000a;border-radius:4px;padding:0 4px}
.u-name{font-size:12px;margin:3px 0 2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.bar{position:relative;height:8px;background:#05070b;border-radius:4px;overflow:hidden;margin-top:2px}
.bar i{display:block;height:100%;transition:width .2s}
.bar.hp{height:13px}.bar.hp i{background:linear-gradient(#58d58d,#2c9a5d)}.foe .bar.hp i{background:linear-gradient(#e5645b,#a02f28)}
.bar.hp b{position:absolute;inset:0;font-size:10px;line-height:13px;font-weight:400;text-shadow:0 0 3px #000}
.bar .sh{position:absolute;left:0;bottom:0;height:3px;background:#7ec8ff}
.bar.ali{height:5px}.bar.ali i{background:#e5b84b}.bar.key{height:5px}.bar.key i{background:#b073ff}
.u-say{position:absolute;left:0;right:0;bottom:0;background:#000b;font-size:11px;padding:1px;opacity:0;white-space:nowrap;overflow:hidden}
.u-say.pop{animation:say .9s}
@keyframes say{10%,70%{opacity:1}}
.float{position:absolute;top:30%;font-weight:700;font-size:15px;text-shadow:0 0 4px #000,0 0 2px #000;pointer-events:none;animation:up .9s forwards}
.float.crit{color:#ffd54a;font-size:19px}.float.dmg{color:#fff}.float.heal{color:#7dffb0}.float.sh{color:#7ec8ff}.float.dot{color:#ff7ab6}.float.buff{color:#ffd88a}.float.debuff{color:#c59bff}
@keyframes up{to{transform:translateY(-38px);opacity:0}}
.banner{min-height:28px;text-align:center;font-weight:700;font-size:16px}
.banner.win{color:var(--ok)}.banner.lose{color:var(--bad)}
.rewards{display:flex;flex-wrap:wrap;gap:6px 14px;justify-content:center;font-size:12px;min-height:20px}
.rewards .g{color:var(--gold)}.rewards .t{color:#7ec8ff}.rewards .i{color:#c59bff}.rewards .n{color:var(--ok)}.rewards .r{color:var(--dim)}
/* 战斗记录标题条：锁定 / 回到底部 */
.logbar{display:flex;align-items:center;gap:8px;margin-top:6px;font-size:12px;color:var(--dim)}
.logbar span{font-weight:600;color:var(--txt)}
.logbar .btn{margin-left:auto}
.logbar .btn+.btn{margin-left:0}
/* 自定义大招顺序 */
.ultorder{display:flex;flex-direction:column;gap:6px;margin:8px 0}
.uo-row{display:grid;grid-template-columns:22px 32px 1fr 34px 34px;gap:8px;align-items:center;background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:4px 8px}
.uo-row b{color:var(--gold);text-align:center;font-size:12px}
.uo-row img{width:30px;height:30px;border-radius:6px;object-fit:cover}
.uo-row span{font-size:13px}.uo-row span small{color:var(--dim);font-size:11px;margin-left:6px}
/* 高级设置：默认收起，避免把队伍页撑得太长；只有改过顺序时自动展开 */
.advbox{margin:8px 0;border:1px solid var(--line);border-radius:10px;background:rgba(255,255,255,.02);padding:0 10px}
.advbox>summary{cursor:pointer;padding:9px 0;font-size:13px;color:var(--gold);list-style:none;display:flex;align-items:center;gap:8px}
.advbox>summary::-webkit-details-marker{display:none}
.advbox>summary::before{content:'▸';color:var(--dim);font-size:11px;transition:transform .15s}
.advbox[open]>summary::before{transform:rotate(90deg)}
.advbox>summary .new{margin-left:auto;font-size:10.5px}
.advbox .hint{margin:2px 0 8px}
.log{height:170px;overflow:auto;background:#0a0d13;border:1px solid var(--line);border-radius:8px;padding:6px 8px;font-size:12px;margin-top:6px}
.log .rnd{color:var(--dim);text-align:center}.log .dm{color:#c9ced8}.log .hl{color:#7dffb0}.log .dead{color:var(--bad)}
.log .ca{color:#8fd0ff}.log .ce{color:#ff9a92}
.sk{font-style:normal;color:#d7c28a}.sk.Exalt{color:#ffd54a}.sk.OverExalt{color:#ff7ad9}.sk.Rouse{color:#7dffb0}.sk.Defense{color:#7ec8ff}.ult-btn{position:absolute;left:50%;top:-6px;transform:translateX(-50%);z-index:5;padding:2px 10px;border-radius:999px;border:1px solid #ffd54a;background:linear-gradient(#ffe27a,#e0a92e);color:#2b1c00;font-weight:800;font-size:12px;cursor:pointer;animation:ultpulse 1s ease-in-out infinite;box-shadow:0 0 10px #ffd54aaa}.ult-btn[hidden]{display:none}@keyframes ultpulse{50%{box-shadow:0 0 18px #ffd54a;transform:translateX(-50%) scale(1.08)}}
.sk.Od{color:#ff9a4f}.sk.Law{color:#ff5fb0}.extra-skill{border-left:2px solid #ff9a4f55;padding-left:8px}.extra-skill.locked{opacity:.55}
/* pages */
.slots{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:8px}
.slot{display:flex;gap:10px;align-items:center;background:var(--panel);border:1px solid var(--rc);border-radius:10px;padding:8px;cursor:pointer}
.slot img{width:64px;height:64px;border-radius:8px;object-fit:cover}.slot small{display:block;color:var(--dim);font-size:12px}
.slot b{display:block}.slot .btn{margin-left:auto}
/* 窄卡片里「详情」别拆成竖排两行 */
.slots .slot .btn{white-space:nowrap;flex:none;align-self:flex-start;padding:6px 10px}
.slot.empty{justify-content:center;color:var(--dim);min-height:80px;border-style:dashed;border-color:var(--line)}
.relic-row{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:8px}
.relic-slot{display:flex;gap:8px;align-items:center;background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:8px;cursor:pointer;min-height:64px}
.relic-slot img{width:44px;height:44px}.relic-slot small{font-size:11px;color:var(--dim)}.relic-slot.empty{color:var(--dim);justify-content:center;border-style:dashed}
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(88px,1fr));gap:8px}
.grid.mini{grid-template-columns:repeat(auto-fill,minmax(78px,1fr))}
.tile{background:var(--panel);border:1px solid var(--line);border-bottom:3px solid var(--rc);border-radius:10px;padding:5px;text-align:center;cursor:pointer;position:relative}
.tile img{width:100%;aspect-ratio:1;object-fit:cover;border-radius:7px}
.tile b{display:block;font-size:12px;margin-top:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tile small{display:block;font-size:10px;color:var(--dim)}
.tile.locked img{filter:grayscale(1) brightness(.5)}
.tile.r-Genesis{box-shadow:0 0 10px #ff7ad966;border-color:#ff7ad9}.tile.r-SSR{border-color:#e5b84b88}
.new{color:#ff7a7a;font-style:normal;font-weight:700}
.pulls .pull{animation:pop .4s backwards}@keyframes pop{from{transform:scale(.3);opacity:0}}
.filters select{background:var(--panel2);color:var(--tx);border:1px solid var(--line);border-radius:6px;padding:5px}
.banner-card{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:12px;margin:10px 0}
/* 无限塔页：层数进度 + 接下来五层预告（融灾禁区/融灾试炼已各自独立成页，不混在这里） */
.towerhead{display:flex;align-items:center;gap:14px;margin:8px 0 4px;flex-wrap:wrap}
.towernum{display:flex;align-items:baseline;gap:5px;flex:none}
.towernum b{font-size:30px;color:var(--gold);font-variant-numeric:tabular-nums;line-height:1}
.towernum small{font-size:12px;color:var(--dim)}
.towerbarwrap{flex:1;min-width:180px}
.towerbar{height:8px;border-radius:99px;background:#0e131c;border:1px solid #2b3447;overflow:hidden;margin-bottom:4px}
.towerbar i{display:block;height:100%;background:linear-gradient(90deg,#a57d1c,#e5b84b 70%,#ffe9a8);box-shadow:0 0 10px #e5b84b88}
.towerbarwrap small{font-size:11.5px;color:var(--dim)}
.tflines{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:6px;margin:8px 0}
.tfline{display:flex;align-items:center;gap:6px;background:#0b1017;border:1px solid var(--line);border-radius:10px;padding:6px 9px;font-size:12px}
.tfline.next{border-color:#3a4a66;box-shadow:inset 0 0 0 1px #1b2637}
.tfline b{flex:none;font-size:12px;color:#cfd8e6}
.tfline em{flex:none;font-size:10.5px;font-style:normal;padding:1px 5px;border-radius:6px;border:1px solid #3d4b64;color:#9fb0c8}
.tfline em.boss{color:#ffb0a8;border-color:#c46a5e}
.tfline em.elite{color:#ffd9a0;border-color:#b89150}
.tfline .tf-foe{flex:1;color:var(--dim);font-size:11px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tfline .tf-drop{flex:none;font-size:11px;color:var(--gold)}.banner-card h3{margin-top:0}
.list{display:flex;flex-direction:column;gap:6px}
.item{display:flex;gap:10px;align-items:center;background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:6px 8px}
.item img{width:48px;height:48px;object-fit:contain;flex:none}
.item .i-body{flex:1;min-width:0}.item small{display:block;color:var(--dim);font-size:11px}.item em{font-size:11px;color:var(--dim);font-style:normal}
.item small.who{color:#8fd0ff}.item.r-SSR{border-color:#e5b84b88}.item.r-Genesis{border-color:#ff7ad9}
.ibtns{display:flex;flex-direction:column;gap:4px}
/* modal */
.modal-bg:has(.cfrow){z-index:70}  /* 云端冲突框要盖在新手引导（z 60~62）上面，否则新设备上点不到 */
.modal-bg{position:fixed;inset:0;background:#000a;z-index:50;display:flex;align-items:center;justify-content:center;padding:12px}
.modal{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:0;max-width:460px;width:100%;max-height:88vh;overflow:hidden;position:relative;display:flex;flex-direction:column}
/* 内容层自己滚：✕ 挂在 .modal 上不跟着走（编队编辑器那种长弹窗翻到一半就点不到关闭键了） */
.modal-body{overflow:auto;padding:16px;flex:1 1 auto;min-height:0;border-radius:14px}
.modal.wide{max-width:760px}
/* 关闭键：钉在弹窗右上角（内容层自己滚，见 .modal-body），做成一颗浮起来的圆按钮，
   滚动时压在内容上也看得出是「按钮」而不是排版错位 */
.modal-x{position:absolute;right:7px;top:7px;width:26px;height:26px;display:grid;place-items:center;
  background:color-mix(in srgb,var(--panel) 94%,#fff 6%);border:1px solid var(--line);border-radius:50%;
  font-size:14px;line-height:1;color:var(--dim);z-index:3;cursor:pointer;box-shadow:0 2px 8px #0006}
.modal-x:hover{color:var(--tx);border-color:color-mix(in srgb,var(--gold) 55%,transparent)}
/* 立绘大图：不套面板，直接浮在暗底上 */
.modal.art{background:transparent;border:0;padding:0;max-width:none;max-height:none;overflow:visible;display:flex;align-items:center;justify-content:center}
.modal.art .modal-body{padding:0;overflow:visible;display:flex;align-items:center;justify-content:center}
.art-big{display:flex;flex-direction:column;align-items:center;gap:8px}
.art-big img{max-height:80vh;max-width:min(92vw,420px);width:auto;border-radius:14px;box-shadow:0 24px 70px #000d;border:1px solid #ffffff1f;animation:artin .22s ease-out}
@keyframes artin{from{opacity:0;transform:scale(.96)}to{opacity:1;transform:none}}
.ab-cap{text-align:center}.ab-cap b{display:block;font-size:15px}.ab-cap small{color:var(--dim);font-size:12px}
.modal.art .modal-x{right:-4px;top:-4px;width:30px;height:30px;border-radius:50%;background:#000c;border:0;color:#fff;font-size:14px;box-shadow:none}
.modal textarea{width:100%;background:#0a0d13;color:var(--tx);border:1px solid var(--line);border-radius:8px}
.detail{display:flex;gap:14px;flex-wrap:wrap}.d-art{flex:0 0 186px;margin:0 auto;position:relative}
.d-art::after{content:"";position:absolute;inset:-10px -10px -4px;border-radius:16px;background:radial-gradient(ellipse at 50% 12%,color-mix(in srgb,var(--rc) 26%,transparent),transparent 70%);pointer-events:none;z-index:0}
.d-art img{position:relative;z-index:1;width:186px;aspect-ratio:2/5;object-fit:cover;border-radius:12px;border:2px solid var(--rc);box-shadow:0 10px 30px #000a;cursor:zoom-in;transition:transform .18s,box-shadow .18s}
.d-art img:active{transform:scale(.98)}
/* 奖励首领 / 陪场这两只的头像是方图（Q 版），按 2/5 立绘框 cover 会只剩半张脸，改成 contain 完整放进去 */
.detail.rwmon .d-art img,.detail.matemon .d-art img{object-fit:contain;background:#0b1017}
.d-art .zoomhint{display:block;text-align:center;font-size:11px;color:var(--dim);margin-top:5px}
.d-body{flex:1;min-width:260px}.tags{display:flex;gap:6px;margin:4px 0}.tag{background:var(--panel2);border-radius:5px;padding:1px 8px;font-size:12px}
.tag.r-SSR{color:var(--gold)}.tag.r-Genesis{color:#ff7ad9}
.lv{margin:6px 0}.star{color:var(--gold)}.dim{color:var(--dim)}
.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:4px;font-size:12px;color:var(--dim)}.stats b{color:var(--tx)}
.eqrow{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.eqslot{background:var(--panel2);border:1px dashed var(--line);border-radius:8px;padding:6px;display:flex;gap:6px;align-items:center;cursor:pointer;min-height:54px;font-size:12px}
.eqslot img{width:36px;height:36px;object-fit:contain}.eqslot .empty{color:var(--dim);margin:auto}.eqslot small{color:var(--dim)}
.skill{padding:5px 0;border-bottom:1px solid var(--line)}.skill small{display:block;color:var(--dim);font-size:12px}.skill em{font-style:normal}
.toast{position:fixed;left:50%;bottom:76px;transform:translateX(-50%);background:#000d;border:1px solid var(--line);padding:8px 16px;border-radius:20px;z-index:60;transition:opacity .4s}.toast.out{opacity:0}
.fatal{color:var(--bad);padding:20px;white-space:pre-wrap}
@media(max-width:520px){.unit{width:24%}.side{gap:4px}.u-name{font-size:11px}.log{height:120px}}

/* keywords & statuses */
:root{--c-damage:#e5584f;--c-shield:#4f8be5;--c-heal:#45b36b;--c-affliction:#a06be0;--c-aliemus:#e3b341;--c-misc:#8a95a8;--c-realm-caro:#d9534f;--c-realm-chaos:#c9a227;--c-realm-aequor:#2e9bd6;--c-realm-ultra:#8b5cf6}
.kw{--c:var(--c-misc);display:inline-flex;align-items:center;gap:2px;border:1px solid color-mix(in srgb,var(--c) 55%,transparent);background:color-mix(in srgb,var(--c) 15%,transparent);border-radius:5px;padding:0 4px;margin:0 1px;cursor:pointer;line-height:1.45}
.kc-damage{--c:var(--c-damage)}.kc-shield{--c:var(--c-shield)}.kc-heal{--c:var(--c-heal)}.kc-affliction{--c:var(--c-affliction)}.kc-aliemus{--c:var(--c-aliemus)}
.kc-realm-caro{--c:var(--c-realm-caro)}.kc-realm-chaos{--c:var(--c-realm-chaos)}.kc-realm-aequor{--c:var(--c-realm-aequor)}.kc-realm-ultra{--c:var(--c-realm-ultra)}
.kwi{object-fit:contain;display:inline-block}
.kwpop{position:fixed;z-index:80;background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:10px 12px;box-shadow:0 8px 30px #000a;max-height:60vh;overflow:auto;font-size:13px}
.kwpop[hidden]{display:none}.kwh{display:flex;gap:8px;align-items:center;margin-bottom:4px}.kwh small{color:var(--dim)}.kwd{white-space:pre-line}
.u-st{display:flex;flex-wrap:wrap;gap:2px;justify-content:center;min-height:16px}
.sti{display:inline-flex;align-items:center;background:#000a;border-radius:4px;padding:0 2px;cursor:pointer}.sti b{font-size:10px;font-weight:600}.sti em{font-style:normal;font-size:10px;color:var(--dim)}
.real{white-space:pre-line;font-size:12px;color:var(--dim);margin:4px 0}.skill details summary{cursor:pointer;color:var(--acc);font-size:12px}.en{color:var(--dim);font-size:11px;margin-left:4px}
.en-box summary{cursor:pointer;color:var(--acc);font-size:12px;margin:8px 0}

.meter{display:grid;gap:4px;margin:6px 0}.mrow{display:flex;align-items:center;gap:6px;font-size:12px}.mn{width:84px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mb{flex:1;height:8px;background:#05070b;border-radius:4px;overflow:hidden;min-width:40px}.mb i{display:block;height:100%}.mb i.d{background:#e5584f}.mb i.h{background:#45b36b}.mb.h{flex:.5}
.mv{width:52px;text-align:right;color:var(--dim)}
.frows{display:grid;gap:3px;font-size:12px}.frow{display:flex;justify-content:space-between;gap:8px;padding:3px 8px;border-radius:6px;background:var(--panel2)}.frow.l{color:var(--bad)}.frow.w{color:var(--ok)}
.trials{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:8px}.trial{display:flex;gap:10px;background:var(--panel2);border:1px solid var(--line);border-radius:10px;padding:8px}
.trial>img{width:72px;height:72px;border-radius:8px;object-fit:cover;flex:none}.tb{flex:1;min-width:0}.tb b{display:block}.tb small{color:var(--dim);display:block}.tb summary{cursor:pointer;color:var(--acc);font-size:12px}
.ths{display:flex;flex-wrap:wrap;gap:4px;margin-top:6px}.btn.th.done{border-color:var(--ok);color:var(--ok)}.th-S,.th-SS,.th-SSS{color:#ffd54a}.th-SSS{border-color:#ff7ad9}
.ach{display:flex;gap:10px;align-items:center;background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:8px}.ach.done{border-color:#c9a13a88}.ab{flex:1}.ab b{display:block}.ab small{display:block;color:var(--dim);font-size:11px}
.ab .bar{height:6px}.ab .bar i{background:var(--gold)}
.meterbox{margin:6px 0;font-size:12px}.meterbox summary{cursor:pointer;color:var(--acc)}
.th{min-width:42px}

/* ---- M4: monster design ---- */
.u-int{display:flex;align-items:center;justify-content:center;gap:3px;font-size:10px;color:var(--dim);min-height:18px;white-space:nowrap;overflow:hidden}
.u-int img{filter:drop-shadow(0 0 2px #000)}.unit.foe[data-mid]{cursor:pointer}
img.intent{vertical-align:middle;image-rendering:auto}
.mgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(104px,1fr));gap:8px;margin:10px 0}
.mcard{display:flex;flex-direction:column;align-items:center;gap:2px;padding:6px 4px;background:var(--card,#1c2230);border:1px solid #2b3447;border-radius:8px;color:inherit;cursor:pointer;font:inherit}
.mcard img{width:72px;height:72px;object-fit:cover;border-radius:50%;background:#10141d}
.mcard b{font-size:12px;text-align:center;line-height:1.2}.mcard small{font-size:10px;color:var(--dim)}
.mcard.unseen img{filter:grayscale(.85) brightness(.7)}.mcard.Boss{border-color:#a8453f}.mcard.Elite{border-color:#a8873f}
.filters{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:8px 0}
.filters input[type=search],.filters select{background:#10141d;color:inherit;border:1px solid #2b3447;border-radius:6px;padding:5px 8px}
.mskill{display:flex;gap:8px;margin:8px 0;align-items:flex-start}.mskill em{color:var(--dim);font-size:11px;font-style:normal}
.seq{display:flex;flex-wrap:wrap;gap:4px;align-items:center;margin:4px 0;font-size:12px}.seq span{display:inline-flex;align-items:center;gap:2px;background:#10141d;padding:2px 6px;border-radius:10px}
.tag.t2{background:#2b3447}.skill small.nums{display:block;color:#9ad1a0}
.snd{display:flex;align-items:center;gap:10px;margin:6px 0}.snd input[type=range]{flex:1;max-width:260px}

/* ---- M5: weekly boss / realm towers / arena ---- */
.banner-card.wk{display:flex;gap:14px;align-items:flex-start}.banner-card.wk>img{width:132px;height:132px;object-fit:cover;border-radius:10px;flex:none}
.banner-card.rt{border-left:3px solid var(--rc)}
.opps{display:flex;flex-direction:column;gap:8px;margin:8px 0}
.opp{display:flex;align-items:center;gap:10px;background:var(--card,#1c2230);border:1px solid #2b3447;border-radius:8px;padding:8px}
.opp.human{border-color:#c9a24b;box-shadow:0 0 0 1px #c9a24b55}.opp .rk{font-size:20px;font-weight:700;width:56px;text-align:center;color:var(--gold)}
.opp .ob{flex:1;display:flex;flex-direction:column;gap:3px}.opp small{color:var(--dim)}.oteam{display:flex;gap:4px}.oteam img{width:38px;height:38px;border-radius:6px;object-fit:cover}
input.wide{width:100%;max-width:420px;background:#10141d;color:inherit;border:1px solid #2b3447;border-radius:6px;padding:6px 8px}
@media(max-width:560px){.banner-card.wk{flex-direction:column}}
.code{width:100%;background:#10141d;color:#9fb0cc;border:1px solid #2b3447;border-radius:6px;padding:6px;font:11px/1.3 monospace;word-break:break-all}

/* ---- M6: 银芯 / 签到 / 商店 / 成就分类 ---- */
.res span{margin-left:8px}.rewards .c{color:#7fd6ff}
.cats{flex-wrap:wrap;gap:6px}.btn.on{border-color:var(--gold);color:var(--gold)}
.shop{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:8px}.shopi{display:flex;flex-direction:column;gap:4px;background:#10141d;border:1px solid #2b3447;border-radius:8px;padding:8px}.shopi small{color:var(--dim)}
.scal{display:grid;grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:6px;margin:10px 0}
.sday{display:flex;flex-direction:column;gap:3px;align-items:center;background:#10141d;border:1px solid #2b3447;border-radius:8px;padding:6px 4px;min-height:84px;text-align:center}
.sday b{font-size:15px}.sday small{font-size:10px;color:var(--dim)}.sday.big{border-color:#8a6d2b}.sday.today{border-color:var(--gold);box-shadow:0 0 8px #c9a24b66}.sday.got{opacity:.6}.sday.miss{border-style:dashed}.sday .ok{color:#6fcf97}

/* ---- M7: battle FX ---- */
.fx-layer{position:absolute;inset:0;pointer-events:none;z-index:6;border-radius:12px}
.fx-flash{position:absolute;inset:0;pointer-events:none;z-index:7;border-radius:12px;opacity:0}
.fx-flash.go{animation:fxflash .45s ease-out}@keyframes fxflash{0%{opacity:var(--a,.25)}100%{opacity:0}}
.field.shaking{animation:fxshake .32s}@keyframes fxshake{0%,100%{transform:none}20%{transform:translate(calc(var(--sh)*-1),calc(var(--sh)*.5))}40%{transform:translate(var(--sh),calc(var(--sh)*-.6))}60%{transform:translate(calc(var(--sh)*-.6),0)}80%{transform:translate(calc(var(--sh)*.4),calc(var(--sh)*.3))}}
.unit.acting .u-pic{box-shadow:0 0 14px 2px var(--rc);transition:box-shadow .15s}
.unit.dead .u-pic{filter:grayscale(1) brightness(.5);transition:filter .5s}
.unit.hit .u-pic img{filter:brightness(1.3) saturate(1.2)}
.unit .u-pic img{transition:filter .15s}
.unit.lunge-a .u-pic{animation:lungeA .28s}.unit.lunge-e .u-pic{animation:lungeE .28s}
@keyframes lungeA{40%{transform:translateY(-12px) scale(1.06)}}@keyframes lungeE{40%{transform:translateY(12px) scale(1.06)}}
.unit.exalting .u-pic{animation:exaltGlow .7s}@keyframes exaltGlow{0%,100%{filter:none}30%{filter:brightness(1.8) drop-shadow(0 0 12px var(--rc))}}

/* ---- M8: settlement ---- */
.settle h4{margin:14px 0 6px}.shead{display:flex;gap:14px;align-items:center}
.grade{width:68px;height:68px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:38px;font-weight:800;color:var(--gc);border:3px solid var(--gc);box-shadow:0 0 18px var(--gc);text-shadow:0 0 8px var(--gc);flex:none}
.stars span{color:#3a4358;font-size:20px}.stars span.on{color:#ffd36b;text-shadow:0 0 6px #ffd36b88}
.rchips{display:flex;flex-wrap:wrap;gap:6px;margin:10px 0}.rchips span{background:#10141d;border:1px solid #2b3447;border-radius:12px;padding:2px 10px;font-size:12px}.rchips .new{color:#ff8fa3;border-color:#ff8fa3}
.rtiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(92px,1fr));gap:6px;margin:10px 0}.rtiles div{background:#10141d;border-radius:8px;padding:6px 8px;display:flex;flex-direction:column}.rtiles small{color:var(--dim);font-size:11px}.rtiles b{font-size:15px}
.rrows{display:flex;flex-direction:column;gap:8px}.rrow{display:grid;grid-template-columns:200px 1fr;gap:6px 12px;background:#10141d;border:1px solid #232c3e;border-radius:8px;padding:8px}
.rrow.dead{opacity:.72}.rrow.foe{border-color:#4a2a2e}.rwho{display:flex;gap:8px;align-items:center}.rwho img{width:44px;height:44px;border-radius:8px;object-fit:cover}.rwho div{display:flex;flex-direction:column;gap:1px}.rwho small{color:var(--dim);font-size:11px}
.mvp{display:inline-block;margin-left:5px;background:#3a2f12;color:#ffd36b;border-radius:8px;padding:0 6px;font-size:10px}
.rbars{display:flex;flex-direction:column;gap:4px;justify-content:center}.rb{position:relative;height:16px;background:#0a0d13;border-radius:4px;overflow:hidden;font-size:11px;line-height:16px}
.rb span{position:absolute;left:6px;color:#9fb0cc;z-index:1}.rb b{position:absolute;right:6px;z-index:1;font-weight:500}.rb i{position:absolute;inset:0 auto 0 0;display:block}.rb i.d{background:#7a5d17}.rb i.t{background:#7a2f2f}
.rstat{grid-column:1/-1;display:flex;flex-wrap:wrap;gap:4px 14px;font-size:11px;color:var(--dim)}.rstat b{color:#dfe6f3;font-weight:500}
.rrow.foe .rstat{grid-column:2}
svg.tl{width:100%;height:120px;background:#0a0d13;border-radius:8px}.tlg{font-size:11px;color:var(--dim);margin-top:4px}.tlg i{display:inline-block;width:10px;height:10px;border-radius:2px;margin-right:4px;vertical-align:-1px}
@media(max-width:620px){.rrow{grid-template-columns:1fr}.rrow.foe .rstat{grid-column:1}}

/* ---- 新手引导：挖洞高亮 + 气泡 ---- */
.guide-bg{position:fixed;inset:0;z-index:60;background:transparent}
.guide-box{position:fixed;z-index:61;pointer-events:none;border-radius:14px;box-shadow:0 0 0 2px var(--gold),0 0 0 9999px #05070bd9;transition:left .2s,top .2s,width .2s,height .2s}
.guide-pop{position:fixed;z-index:62;padding:13px 14px 11px;background:var(--panel);border:1px solid color-mix(in srgb,var(--gold) 45%,var(--line));border-radius:14px;box-shadow:0 18px 50px #000c;transition:top .2s}
.guide-pop::after{content:"";position:absolute;left:var(--arrow,50%);bottom:-6px;width:12px;height:12px;margin-left:-6px;transform:rotate(45deg);background:var(--panel);border-right:1px solid color-mix(in srgb,var(--gold) 45%,var(--line));border-bottom:1px solid color-mix(in srgb,var(--gold) 45%,var(--line))}
.guide-pop[data-last="1"]::after{display:none}
.gp-head{display:flex;align-items:center;gap:8px;margin-bottom:6px}
.gp-n{font-size:11px;font-weight:700;color:#151013;background:var(--gold);border-radius:999px;padding:1px 7px}
.gp-head b{font-size:14px}
.guide-pop p{margin:0 0 10px;font-size:12.5px;line-height:1.62;color:#cfd6e4}
.gp-row{display:flex;align-items:center;justify-content:space-between;gap:10px}
.gp-skip{background:none;border:0;color:var(--dim);font-size:12px;padding:6px 2px}
.gp-next{background:linear-gradient(#a57d1c,#6e5210);border:1px solid #c9a13a;border-radius:8px;color:#fff8e6;font-size:13px;font-weight:600;padding:7px 18px}
.gp-next:active{transform:scale(.97)}
.modal-bg.art-dark{background:#000000ed}
/* 窄屏：立绘限高，免得详情第一屏全被图占满（想细看可以点开大图） */
@media(max-width:560px){.d-art{flex-basis:auto;width:auto}.d-art img{width:auto;max-width:62vw;max-height:42vh;aspect-ratio:auto;object-fit:contain}}

/* ---- M9: 分界面背景（典藏馆 CG） / 挂机收益 / 造物羁绊 / 钥令 / 养成数值 ---- */
#bg{position:fixed;inset:-2%;z-index:-1;background:#0d1117 center center/cover no-repeat;filter:blur(1.5px) saturate(.85);transition:opacity .34s ease;pointer-events:none}
#bg::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(10,13,19,.76) 0%,rgba(10,13,19,.87) 46%,rgba(8,11,17,.94) 100%)}
body{background:#0a0d13}

/* 收益面板：当前关 / 下一关并排 */
.farm{margin:8px 0 4px;background:#101620f2;border:1px solid var(--line);border-radius:12px;padding:8px 10px}
.farmgrid{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.farmc{background:#0b1017;border:1px solid #222b3b;border-radius:10px;padding:7px 9px}
.farmc:last-child{border-color:#3a3520}
.farmh{display:flex;justify-content:space-between;align-items:baseline;font-size:12px;color:var(--dim);margin-bottom:4px}
.farmh b{color:#ead9b9;font-size:13px}
.farmrows{display:grid;grid-template-columns:1fr 1fr;gap:2px 12px;font-size:12px}
.farmrows>div{display:flex;justify-content:space-between;gap:6px}
.farmrows span{color:var(--dim)}
.farmrows b.g{color:var(--gold)}.farmrows b.t{color:#7ec8ff}.farmrows b.c{color:#7fd6ff}.farmrows b.i{color:#c59bff}
.farmrows b.ok{color:var(--ok)}.farmrows b.bad{color:var(--bad)}
.farmx{margin-top:5px;font-size:11.5px;color:#9ad1a0;line-height:1.45}
.farm .hint{margin:7px 0 0}
@media(max-width:560px){.farmgrid{grid-template-columns:1fr}}

/* 手动攻坚的开战条 */
.fightbar{display:flex;flex-wrap:wrap;gap:10px;align-items:center;justify-content:center;margin:4px 0 8px;font-size:12px}
.fightbar:empty{display:none}

/* 造物栏解锁格 / 羁绊 */
.relic-slot.locked{color:var(--dim);justify-content:center;border-style:dashed;font-size:12px;text-align:center;opacity:.75;cursor:default;line-height:1.35}
/* 造物槽里的精炼标记与「详情」入口：精炼到底加了多少，直接写成数字 */
.relic-slot em.rf{font-style:normal;font-size:10.5px;font-weight:700;color:#7fd4a8;background:color-mix(in srgb,#7fd4a8 14%,transparent);border:1px solid color-mix(in srgb,#7fd4a8 40%,transparent);border-radius:999px;padding:1px 6px;white-space:nowrap}
.relic-slot .rfbtn{margin-left:auto;flex:0 0 auto}
.relic-slot small{flex:1 1 auto;min-width:0}
/* 造物详情弹窗里的数值对照 */
.rfbox{display:grid;gap:4px;margin:8px 0 10px;padding:9px 11px;background:var(--panel2);border:1px solid var(--line);border-radius:10px}
.rfrow{display:flex;justify-content:space-between;gap:10px;font-size:12.5px;color:var(--dim)}
.rfrow b{color:var(--text)}
.rfrow:last-child{border-top:1px dashed var(--line);padding-top:4px;margin-top:2px}
.bonds{display:grid;grid-template-columns:repeat(auto-fill,minmax(196px,1fr));gap:8px;margin:6px 0}
.bond{background:var(--panel2);border:1px solid var(--line);border-radius:10px;padding:7px 9px;font-size:12px}
.bond.on{border-color:color-mix(in srgb,var(--gold) 55%,transparent);background:color-mix(in srgb,var(--gold) 8%,var(--panel2))}
.bond b{font-size:13px}
.bond small{display:block;color:var(--dim);font-size:11px;margin-top:2px}
.btiers{display:flex;gap:6px;margin:4px 0}
.btiers span{font-size:11px;color:var(--dim);border:1px dashed var(--line);border-radius:999px;padding:0 7px}
.btiers span.on{color:var(--gold);border-style:solid;border-color:color-mix(in srgb,var(--gold) 55%,transparent)}

/* 唤醒体羁绊（core/bonds.js）：一条一条的胶囊，激活的镶金边 */
.bdline{display:flex;flex-wrap:wrap;gap:6px;margin:7px 0}
.bdline.slim{margin:5px 0 2px}
.bd{display:inline-flex;align-items:baseline;gap:6px;padding:4px 10px;border-radius:999px;font-size:12px;background:var(--panel2);border:1px solid var(--line);color:var(--dim)}
.bd em{font-style:normal;font-size:11px;color:var(--dim)}
.bd.on{border-color:color-mix(in srgb,var(--gold) 55%,transparent);background:color-mix(in srgb,var(--gold) 9%,var(--panel2));color:var(--text)}
.bd.on b{color:var(--gold);font-weight:600}
.bd.mix{border-color:color-mix(in srgb,#8e6bd1 55%,transparent);background:color-mix(in srgb,#8e6bd1 12%,var(--panel2));color:var(--text)}
.bd.near{border-style:dashed}
.bd.none{opacity:.7}
.bdall{margin:8px 0 4px;border:1px solid var(--line);border-radius:10px;background:var(--panel2);padding:6px 11px}
.bdall summary{cursor:pointer;font-size:12.5px;color:var(--gold);padding:2px 0}
.bdgroup{margin:6px 0 2px}
.bdgroup h5{margin:8px 0 2px;font-size:12px;color:var(--text)}
.bdgroup.more>summary{cursor:pointer;margin:8px 0 2px;font-size:12px;color:var(--text)}
.bdgroup ul{list-style:none;margin:0;padding:0}
.bdgroup li{padding:6px 0;border-top:1px dashed var(--line);font-size:12px;display:flex;flex-wrap:wrap;gap:4px 10px;align-items:baseline}
.bdgroup li b{font-size:12.5px}
.bdgroup li small{color:var(--dim)}
.bdgroup li div{width:100%;display:flex;flex-wrap:wrap;gap:6px}
.btier{font-size:11px;color:var(--gold);border:1px solid color-mix(in srgb,var(--gold) 35%,transparent);border-radius:999px;padding:0 7px}

/* 钥令 */
.orderbar{display:flex;flex-wrap:wrap;gap:8px;margin:6px 0}
.ochip{display:inline-flex;align-items:center;gap:5px;background:var(--panel2);border:1px solid var(--line);border-radius:999px;padding:4px 11px;font-size:12px;color:var(--dim)}
.ochip.on{color:var(--tx);border-color:color-mix(in srgb,var(--gold) 45%,transparent)}
.ochip em{font-style:normal;font-size:11px;color:var(--gold)}
.ochip.locked{opacity:.7;border-style:dashed}
.oslots{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:8px;margin:8px 0}
.oslot{display:flex;gap:9px;align-items:center;background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:8px;cursor:pointer;min-height:62px;font-size:12px}
.oslot.on{border-color:color-mix(in srgb,var(--gold) 50%,transparent)}
.oslot.empty{justify-content:center;color:var(--dim);border-style:dashed;text-align:center}
.oslot.locked{justify-content:center;color:var(--dim);border-style:dashed;text-align:center;cursor:default;opacity:.8;line-height:1.35}
.oslot small{display:block;color:var(--dim);font-size:11px}
.oglyph{flex:none;width:38px;height:38px;border-radius:10px;display:flex;align-items:center;justify-content:center;font-size:17px;font-weight:700;background:#0b1017;border:1px solid var(--line);color:#cfd6e4;position:relative;overflow:hidden}
.oglyph i{font-style:normal;font-size:16px;line-height:1}
.oglyph img{position:relative;z-index:1;background:#0b1017}
.oglyph.r-SSR{color:#ffd36b;border-color:#a5862f;box-shadow:0 0 8px #e5b84b44}
.oglyph.r-SR{color:#9ec1ff;border-color:#3f5f96}
.oglyph.r-R{color:#b9c3d4}
.olist{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:8px}
.olist.dim{opacity:.8}
.order{display:flex;gap:10px;align-items:center;background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:8px}
.order.on{border-color:color-mix(in srgb,var(--gold) 40%,transparent)}
.order.locked{filter:grayscale(.55)}
.order .ob{flex:1;min-width:0}
.order .ob b{display:inline}
/* 名字和定位标签排一行，稀有度那行另起（以前 b 是 block 独占一行，标签加了会掉到下一行） */
.order .ob em{display:block;font-style:normal;font-size:11px;color:var(--dim)}
.order .ob small{display:block;font-size:11px;color:#9ad1a0}
.order .flavor{color:#7f8a9c}
.order .ibtns{flex:none}
/* 钥令定位标签（锐意 / 起手 / 慈悲…）：由「招牌键」决定，一眼看出这件是干什么的。
   和 .o .ob 里的名字同排放，名字太长时先挤压它自己而不是把整行撑开。 */
.otag{display:inline-block;margin-left:5px;padding:0 6px;border-radius:999px;font-style:normal;font-size:10px;line-height:16px;vertical-align:1px;white-space:nowrap;color:#9fc4ff;background:color-mix(in srgb,#9fc4ff 14%,transparent);border:1px solid color-mix(in srgb,#9fc4ff 38%,transparent)}
.oslot .otag,.order .ob .otag{font-size:9.5px;line-height:15px;padding:0 5px;margin-left:4px}

/* 养成数值 */
.awaken{color:#9ec1ff}
.growbox{display:grid;gap:4px;background:#0b1017;border:1px solid var(--line);border-radius:10px;padding:8px 10px;font-size:12px;margin:4px 0 10px}
.growbox>div{display:grid;grid-template-columns:92px 1fr auto;gap:8px;align-items:baseline}
.growbox span{color:var(--dim)}
.growbox b{font-weight:600}
.growbox em{font-style:normal;color:var(--gold);font-size:11px}
.growtable{display:grid;gap:4px;font-size:12px;margin:8px 0}
.growtable>div{display:grid;grid-template-columns:70px 1fr 62px 1.3fr;gap:8px;padding:5px 8px;background:var(--panel2);border-radius:6px;line-height:1.45}
.growtable>div>span:first-child{color:#ead9b9}
.growtable .gt-h{background:none;color:var(--dim);font-size:11px}
.growtable .gt-h>span:first-child{color:var(--dim)}
.matsrc{margin-top:10px;background:#0b1017;border:1px solid var(--line);border-radius:10px;padding:8px 10px;font-size:12px}
.matsrc>b{display:block;margin-bottom:3px}
.matsrc>div{display:grid;grid-template-columns:118px 1fr;gap:8px;padding:4px 0;border-top:1px solid #1a2333}
.matsrc span{color:var(--gold);font-size:11.5px}
.matsrc em{font-style:normal;color:var(--dim)}
@media(max-width:560px){.growtable>div{grid-template-columns:1fr;gap:2px}.growtable .gt-h{display:none}.growtable>div>span:first-child{font-weight:700}.matsrc>div{grid-template-columns:1fr;gap:2px}}

/* ---------- M10：校猫奖励首领 / 竞技场 1000 名 / 塔上限 ---------- */
/* 战斗里的敌方单位：名字后面挂一个「奖励」小标，头顶也换个金色描边，一眼能看出这关不是普通 Boss */
.unit.reward .u-pic{border-color:rgba(227,179,65,.55);box-shadow:0 0 0 1px rgba(227,179,65,.25),0 0 14px rgba(227,179,65,.18)}
.rw-tag{display:inline-block;margin-left:4px;padding:0 4px;border-radius:5px;font-size:9px;line-height:14px;vertical-align:1px;
  background:rgba(227,179,65,.16);border:1px solid rgba(227,179,65,.4);color:var(--gold)}
.farmx.cat{color:var(--gold)}
/* 陪场单位（米酒）的标：蓝灰，和金色的「奖励」分开 */
.rw-tag.mate{background:rgba(159,196,232,.14);border-color:rgba(159,196,232,.4);color:#9fc4e8}
.mcard.rwmon{border-color:var(--gold);background:linear-gradient(180deg,rgba(227,179,65,.1),transparent 60%),var(--card,#1c2230)}
/* 陪场的那只（米酒）：蓝灰描边，和金色奖励首领分得开 */
.mcard.matemon{border-color:rgba(159,196,232,.45);background:linear-gradient(180deg,rgba(159,196,232,.08),transparent 60%),var(--card,#1c2230)}
.tag.rw{background:rgba(227,179,65,.16);border-color:rgba(227,179,65,.4);color:var(--gold)}

/* 手动挂机：不再有「开战」按钮，只留一条状态说明（关卡由右上角 ◀ ▶ 选） */
.manual-note{display:block;font-size:12px;line-height:1.5;color:var(--dim);padding:6px 10px;background:#0b1017;border:1px solid var(--line);border-radius:10px}
.manual-note b{color:var(--gold)}

/* ---------- M16：挂机层默认取「有收益的最高层」 ---------- */
/* 当前关胜率 0 时挂机没有任何收益，面板上直接标黄并给一颗一键退回的按钮 */
.farmx.warn{color:#ffbd5c;background:rgba(255,189,92,.08);border:1px solid rgba(255,189,92,.28);border-radius:8px;padding:5px 8px;display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.farmx.warn b{color:#ffd79a}
.farmx.warn .btn.sm{padding:3px 8px;font-size:11.5px;border-color:rgba(255,189,92,.45);background:rgba(255,189,92,.1);color:#ffd79a}
.farmx.warn .btn.sm:hover{border-color:#ffd79a}
/* 离线弹窗里说明「已改按有收益的最高层结算」的那一段 */
.offback{color:#ffd79a;background:rgba(255,189,92,.08);border:1px solid rgba(255,189,92,.28);border-radius:8px;padding:6px 9px;line-height:1.5}
.offback b{color:#ffe4b3}

/* 钥令图标改用原作 KeyToken 素材：图标本身有底色，容器只负责圆角与稀有度描边 */
.oglyph img{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;border-radius:8px;display:block;z-index:1}
.ochip .oglyph{width:18px;height:18px;border-radius:5px;font-size:12px;vertical-align:-3px;margin-right:2px}
.ochip .oglyph i{font-size:10px}
.ochip .oglyph.r-SSR{box-shadow:none}

/* ---------- 命轮 · 密契页：4 人槽位面板 ---------- */
.eqpanel{display:flex;flex-direction:column;gap:8px;margin:12px 0}
.eqrow{display:grid;grid-template-columns:126px 1fr 1fr;gap:8px;align-items:center;background:#0b1017;border:1px solid var(--line);border-radius:12px;padding:8px}
.eqwho{display:flex;flex-direction:column;align-items:center;gap:2px;text-align:center}
.eqwho img{width:42px;height:42px;border-radius:50%;object-fit:cover;object-position:top}
.eqwho b{font-size:12.5px}.eqwho small{font-size:10.5px;color:var(--dim)}
.eqslot{display:flex;align-items:center;gap:6px;padding:6px;border-radius:10px;border:1px dashed #2b3447;background:#11161f;color:inherit;font:inherit;cursor:pointer;text-align:left;min-height:46px}
.eqslot img{width:32px;height:32px;border-radius:8px;object-fit:contain;background:#0b1017;flex:none}
.eqslot b{font-size:12px;display:block;line-height:1.25}
.eqslot small{font-size:10.5px;color:var(--dim);display:block}
.eqslot.empty{justify-content:center;color:var(--dim)}
.eqslot .plus{font-size:16px;color:var(--gold)}
.eqslot.on{border-style:solid;border-color:#3a4a66;background:#131a26}
.eqslot.r-SSR{border-color:#a5862f;box-shadow:0 0 8px #e5b84b22}
.eqslot.r-SR{border-color:#3f5f96}
@media(max-width:560px){.eqrow{grid-template-columns:1fr 1fr}.eqwho{grid-column:1/-1;flex-direction:row;justify-content:flex-start;gap:8px;text-align:left}}

/* ---------- 前后排 + 通关回合上限 ---------- */
.u-row{display:inline-block;font-size:10px;line-height:1.4;padding:0 5px;border-radius:6px;margin-bottom:2px;border:1px solid var(--line);color:var(--dim)}
.u-row.front{color:#ffcf7a;border-color:#7a5f2a;background:#2a2113}
.u-row.back{color:#8fb4e8;border-color:#2c3f60;background:#121a26}
.vs.urgent{color:var(--bad);font-weight:700}
.turncap{color:var(--gold);font-weight:600}
.pos{display:inline-block;font-size:10px;line-height:1.3;padding:0 5px;border-radius:5px;margin-left:5px;vertical-align:1px;border:1px solid var(--line);color:var(--dim)}
.pos.front{color:#ffcf7a;border-color:#7a5f2a;background:#2a2113}
.pos.back{color:#8fb4e8;border-color:#2c3f60;background:#121a26}

/* ---------- 战场背景（章节 CG，压暗铺在战场后面） ---------- */
.bv-scene{position:absolute;inset:-1px;border-radius:12px;background:center center/cover no-repeat;opacity:.26;filter:blur(2px) saturate(.8);pointer-events:none;z-index:0;
  -webkit-mask-image:linear-gradient(180deg,#000 0,#000 62%,transparent 100%);mask-image:linear-gradient(180deg,#000 0,#000 62%,transparent 100%)}
.field>.side,.field>.vs{position:relative;z-index:1}
.pos{white-space:nowrap}
.slot b{display:flex;align-items:center;gap:5px;min-width:0}
.slot b .pos{margin-left:0}
/* 窄屏队伍卡：头像小一点、文字不折行，避免 Lv/叠位 被挤到下一行 */
.slot>div{min-width:0}
.slot small{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
@media(max-width:560px){.slot{padding:7px;gap:8px}.slot img{width:52px;height:52px}}
.slot small.typ{white-space:normal}

/* 关数加成：挂机券/银芯随关卡缓慢提升，标在每列收益下面 */
.farmbst{margin-top:5px;font-size:11px;line-height:1.5;color:#8fb4e8;opacity:.9}
/* 结算里的挂机零头进度（券 / 银芯攒到 1 就进账） */
#bv-rw .d{color:var(--dim);font-size:11.5px}

/* ---------- M13：编队 / 抽卡记录与欧非 / BGM 与界面微调 ---------- */
/* 顶栏喇叭：一声点击静音，不用钻设置页 */
.sndq{background:none;border:1px solid var(--line);border-radius:7px;padding:0 6px;height:24px;font-size:13px;line-height:1;color:var(--dim)}
.sndq:hover{border-color:var(--gold);color:var(--gold)}
.sndq.off{opacity:.5}

/* 编队：三套预设阵容 */
.squads{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:8px;margin:8px 0}
.squad{background:#0b1017;border:1px solid var(--line);border-radius:12px;padding:9px 10px;display:flex;flex-direction:column;gap:5px}
.squad.on{border-color:#3a4a66;box-shadow:inset 0 0 0 1px #1b2637}
.squad header{display:flex;align-items:baseline;justify-content:space-between;gap:8px}
.squad header b{font-size:13px}
.squad header small{color:var(--dim);font-size:11px}
.sqav{display:flex;gap:5px;min-height:40px;align-items:center}
.sqav img{width:38px;height:38px;border-radius:8px;object-fit:cover;background:#11161f;border:1px solid #223047}
.sqempty{color:var(--dim);font-size:11.5px}
.squse{font-size:11px;color:#7f8a9c;min-height:15px}
.squad .row{margin:2px 0 0}
.squad .btn.sm{padding:3px 8px;font-size:11.5px}

/* 挑战页的「出战阵容」选择条 */
.squadbar{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin:6px 0 8px;padding:6px 8px;background:#0b1017;border:1px solid var(--line);border-radius:10px}
.squadbar .sqh{font-size:11.5px;color:var(--dim);margin-right:2px}
.squadbar .dim{font-size:11px;margin-left:auto}
.sqchip{background:#131a26;border:1px solid #2b3447;border-radius:999px;padding:3px 10px;font-size:12px;color:var(--dim);transition:border-color .15s,color .15s}
.sqchip em{font-style:normal;margin-left:5px;font-size:10.5px;opacity:.75}
.sqchip:hover{border-color:#3a4a66;color:var(--tx)}
.sqchip.on{border-color:var(--gold);color:var(--gold);background:color-mix(in srgb,var(--gold) 12%,transparent)}

/* 抽卡记录：幸运指数与统计 */
.luckcard .luckhead{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:4px 0}
.luckcard .lk{font-size:17px;letter-spacing:.5px}
.luckcard .lkidx{font-size:12px;color:var(--dim)}
.luckcard .lkidx b{color:var(--tx);font-size:14px}
.lk-ssr{color:#ff8fd6}.lk-sr{color:#ffd166}.lk-n{color:#8fb4e8}.lk-r{color:#9aa4b5}.lk-bad{color:#c98a7a}.lk-none{color:var(--dim)}
.luckbar{position:relative;height:9px;border-radius:999px;background:#0b1017;border:1px solid #223047;overflow:hidden;margin:7px 0 4px}
.luckbar i{display:block;height:100%;border-radius:999px;background:linear-gradient(90deg,#3f6bb5,#8fb4e8)}
.luckbar i.lk-ssr{background:linear-gradient(90deg,#8a5bd0,#ff8fd6)}
.luckbar i.lk-sr{background:linear-gradient(90deg,#a57d1c,#ffd166)}
.luckbar i.lk-n{background:linear-gradient(90deg,#3f6bb5,#8fb4e8)}
.luckbar i.lk-r{background:linear-gradient(90deg,#4a5567,#9aa4b5)}
.luckbar i.lk-bad{background:linear-gradient(90deg,#6d4a3e,#c98a7a)}
.luckbar u{position:absolute;left:62.5%;top:0;bottom:0;width:1px;background:#5c6a82;box-shadow:0 0 6px #5c6a82}
.luckstats{display:grid;grid-template-columns:repeat(auto-fit,minmax(118px,1fr));gap:6px;margin:8px 0}
.luckstats span{background:#0b1017;border:1px solid var(--line);border-radius:8px;padding:5px 8px;font-size:11.5px;color:var(--dim)}
.luckstats b{color:var(--tx);font-size:13px;margin-left:2px}
.luckstats em{font-style:normal;margin-left:4px;font-size:10.5px;color:#7f8a9c}

/* 最近抽到的几条 */
.gchips{display:flex;flex-wrap:wrap;gap:5px;margin:6px 0}
.gchip{display:flex;align-items:center;gap:5px;background:#0b1017;border:1px solid var(--line);border-radius:8px;padding:3px 7px;font-size:11px;color:var(--dim)}
.gchip img{width:22px;height:22px;border-radius:6px;object-fit:cover;background:#11161f}
.gchip em{font-style:normal;color:var(--tx)}
.gchip small{font-size:10px;color:var(--dim)}
.gchip.r-Genesis{border-color:#ff7ad9;box-shadow:0 0 8px #ff7ad955}
.gchip.r-SSR{border-color:#e5b84b88}

/* 召唤结果：逐张弹出，创生自带呼吸光 */
.pulls .pull{animation:pop .38s both cubic-bezier(.2,.9,.3,1.3);animation-delay:var(--d,0s);position:relative;overflow:hidden}
@keyframes pop{from{opacity:0;transform:translateY(10px) scale(.94)}to{opacity:1;transform:none}}
.pull .rr{position:absolute;top:4px;left:4px;font-size:9.5px;padding:1px 5px;border-radius:6px;background:#0b1017cc;color:var(--dim);border:1px solid var(--line)}
.pull.r-Genesis .rr{color:#ff9de0;border-color:#ff7ad9}
.pull.r-SSR .rr{color:#e5b84b;border-color:#a5862f}
.pull.r-Genesis{animation:pop .38s both cubic-bezier(.2,.9,.3,1.3),glow 2.4s ease-in-out .5s infinite}
@keyframes glow{0%,100%{box-shadow:0 0 8px #ff7ad944}50%{box-shadow:0 0 20px #ff7ad999}}
.pull-h small b.r-Genesis{color:#ff9de0}
.pull-h small b.r-SSR{color:#e5b84b}

/* 完整抽卡记录 */
.gcrow{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:6px 0 10px}
.gcrow>div{background:#0b1017;border:1px solid var(--line);border-radius:10px;padding:8px;display:grid;grid-template-columns:1fr auto;gap:1px 6px;font-size:11.5px;color:var(--dim)}
.gcrow b{grid-row:1/3;grid-column:2;font-size:18px;color:var(--tx);align-self:center}
.gcrow em{font-style:normal;color:var(--tx)}
.gcrow i{font-style:normal;font-size:10.5px;color:var(--dim)}
.gcrow i.up{color:#7dd3a0}.gcrow i.down{color:#c98a7a}
.glogs{max-height:52vh;overflow:auto;display:flex;flex-direction:column;gap:4px;margin-top:6px}
.glog{display:grid;grid-template-columns:42px 30px 1fr auto auto;gap:8px;align-items:center;background:#0b1017;border:1px solid var(--line);border-radius:8px;padding:4px 8px;font-size:12px}
.glog img{width:28px;height:28px;border-radius:6px;object-fit:cover;background:#11161f}
.glog .gs{color:var(--dim);font-size:11px}
.glog .gn b{display:block;line-height:1.3}
.glog .gn small{color:var(--dim);font-size:10.5px}
.glog .gt em{font-style:normal;font-size:10.5px;color:var(--gold)}
.glog .gd{color:var(--dim);font-size:11px}
.glog.r-Genesis{border-color:#ff7ad988}
.glog.r-SSR{border-color:#e5b84b66}

/* 界面微调：按下反馈、卡片悬停、窄屏 */
.btn:active:not(:disabled){transform:scale(.97)}
.btn{transition:border-color .15s,transform .08s,background .15s}
.tile{transition:transform .12s,border-color .15s}
.tile:hover{transform:translateY(-1px);border-color:#3a4a66}
@media(max-width:560px){
  .glog{grid-template-columns:34px 26px 1fr auto;gap:6px}
  .glog .gd{display:none}
  .gcrow{grid-template-columns:1fr}
  .squadbar .dim{display:none}
  .squads{grid-template-columns:1fr}
}

/* ---------- M14：挑战编队 / 编队编辑器 / 观战回放 / 唤醒体排序 ---------- */
/* 队伍页的「挑战编队」：每个模式一行，绿点表示已经指定了具体某套队 */
.assigns{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:8px;margin:8px 0}
.assign{background:#0b1017;border:1px solid var(--line);border-radius:12px;padding:8px 10px;display:flex;flex-direction:column;gap:5px}
.assign.on{border-color:#3a4a66;box-shadow:inset 0 0 0 1px #1b2637}
.assign header{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}
.assign header b{font-size:13px}
.assign header small{color:var(--dim);font-size:11px;margin-right:auto}
.assign header .btn.sm{padding:2px 8px;font-size:11.5px}
.assign .sqav{min-height:34px;gap:4px}
.assign .sqav img{width:32px;height:32px;border-radius:7px}
.achips{display:flex;flex-wrap:wrap;gap:4px}
.achips .sqchip{padding:2px 8px;font-size:11px}
.squadbar .sqedit{margin-left:auto}
/* 队伍页标签：主线 / 各挑战入口 / 编队库，一页只看一块，免得钥令造物被挤到最底下 */
.ttabs{display:flex;flex-wrap:wrap;gap:6px;margin:6px 0 12px;padding:6px;background:#0b1017;border:1px solid var(--line);border-radius:12px}
.ttab{background:#131a26;border:1px solid #2b3447;border-radius:999px;padding:5px 13px;font-size:12.5px;color:var(--dim);transition:border-color .15s,color .15s,background .15s}
.ttab:hover{border-color:#3a4a66;color:var(--tx)}
.ttab.on{border-color:var(--gold);color:#0f1014;background:var(--gold);font-weight:600}
.ttsub{display:flex;flex-wrap:wrap;gap:6px;margin:0 0 8px}
/* 融灾禁区的五队：一行一队，比横排五张卡省一半高度 */
.riftlines{display:flex;flex-direction:column;gap:6px;margin-top:4px}
.riftline{display:flex;align-items:center;gap:8px;background:#0e141c;border:1px solid #1b2432;border-radius:10px;padding:4px 8px}
.riftline.on{border-color:#2b3a52}
.riftline>b{flex:none;width:44px;font-size:11.5px;color:#9fb0c8}
.riftline .sqav{flex:1;min-height:32px;gap:4px}
.riftline .sqav img{width:32px;height:32px}
.riftline>small{flex:none;font-size:11px;color:var(--dim)}
.riftline .btn.sm{padding:2px 8px;font-size:11.5px}
.squadbar .dim{margin-left:6px}

/* 编队编辑器 */
.sqrealms{margin:6px 0}
.sqslots{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin:8px 0}
.sqslot{display:flex;flex-direction:column;align-items:center;gap:3px;background:#0b1017;border:1px dashed #2b3447;border-radius:10px;padding:8px 6px;min-height:118px;justify-content:center;color:var(--dim);font-size:11.5px}
.sqslot.on{border-style:solid;border-color:#3a4a66;color:var(--tx)}
.sqslot img{width:46px;height:46px;border-radius:9px;object-fit:cover;border:1px solid #223047}
.sqslot b{font-size:12px;line-height:1.2}
.sqslot small{display:block;color:var(--dim);font-size:10.5px;line-height:1.3}
.sqslot .plus{font-size:18px;color:#48708f}
.sqpick{max-height:38vh;overflow:auto;padding-right:2px;margin-top:4px}
.sqpick .tile{position:relative;border:1px solid var(--line)}
.sqpick .tile.on{border-color:var(--gold);box-shadow:0 0 0 1px var(--gold) inset}
.sqpick .tile.dis{opacity:.55}
.sqpick .tick{position:absolute;top:3px;right:4px;font-style:normal;font-size:12px;color:var(--gold);text-shadow:0 0 4px #000}
.sqsave{align-items:center;margin-top:10px}
.sqsave .dim{margin-right:4px}

/* 观战回放：复用战斗页的 .field / .unit / .bar，只补容器与外框 */
.rp-modal .modal{width:min(940px,96vw)}
.rp-top{display:flex;justify-content:space-between;align-items:flex-start;gap:10px;margin-bottom:4px;padding-right:26px}
.rp-top b{font-size:15px}
.rp-top small{display:block;color:var(--dim);font-size:11.5px;margin-top:2px}
.rp-round{font-variant-numeric:tabular-nums;color:var(--dim);font-size:12.5px;white-space:nowrap;padding-top:2px}
.rp-round.urgent{color:var(--bad);font-weight:700}
.rp-field{max-height:46vh;overflow:auto}
.rp-field .unit{width:22%}
.rp-field .unit.boss{width:30%}
.unit.shake .u-pic{animation:shake .22s}
.rp-log{height:104px;overflow:auto;background:#0a0d13;border:1px solid var(--line);border-radius:8px;padding:6px 8px;font-size:12px;line-height:1.6}
.rp-log .rnd{color:var(--dim);text-align:center}
.rp-log .dm{color:#c9ced8}.rp-log .hl{color:#7dffb0}.rp-log .dead{color:var(--bad)}
.rp-log .ca{color:#8fd0ff}.rp-log .ce{color:#ff9a92}
.rp-log .win{color:var(--ok);font-weight:700;border-top:1px solid var(--line);margin-top:4px;padding-top:4px}
.rp-bar{display:flex;align-items:center;gap:8px;margin-top:8px;flex-wrap:wrap}
.rp-hint{font-size:11.5px;color:var(--dim);margin-right:auto}

/* 唤醒体排序条 */
.sortbar{align-items:center;gap:4px;margin:2px 0 8px;flex-wrap:wrap}
.sortbar .dim{margin-right:4px}
.sortbar .btn.sm{padding:3px 9px;font-size:11.5px}

@media(max-width:560px){
  .assigns{grid-template-columns:1fr}
  .sqslots{grid-template-columns:repeat(2,1fr)}
  .rp-field .unit{width:24%}
  .rp-log{height:88px}
}

/* ---------- M15：融灾禁区（五队爬塔 / 每两周刷新） ---------- */
/* 进度条：100 层 + 里程碑刻度 */
.riftbar{position:relative;height:12px;border-radius:999px;background:#0b1017;border:1px solid #223047;margin:10px 0 18px}
.riftbar>i{display:block;height:100%;border-radius:999px;background:linear-gradient(90deg,#7a3f9c,#d06ad0)}
.riftbar .mk{position:absolute;top:-2px;bottom:-2px;width:1px;background:#2b3447}
.riftbar .mk.on{background:#d06ad0;box-shadow:0 0 5px #d06ad088}
.riftbar .now{position:absolute;top:calc(100% + 2px);transform:translateX(-50%);font-size:10.5px;color:#d9a6e6;white-space:nowrap}

/* 当前层五组敌人 */
.riftfoes{display:grid;gap:5px;margin:8px 0}
.riftfoes .rf{display:flex;gap:8px;align-items:baseline;background:#0b1017;border:1px solid var(--line);border-radius:9px;padding:5px 9px}
.riftfoes .rf>span{flex:none;width:52px;font-size:11.5px;color:var(--dim)}
.riftfoes .rf>small{color:var(--tx);font-size:12px;line-height:1.4}
.riftfoes .rf.boss{border-color:#6a3f78;box-shadow:inset 0 0 0 1px #2c1b33}
.riftfoes .rf.boss>span{color:#d9a6e6}

/* 出战五队 */
.rt-teams{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:8px;margin:8px 0}
.rt-team{background:#0b1017;border:1px solid var(--line);border-radius:12px;padding:8px 9px;display:flex;flex-direction:column;gap:6px}
.rt-team.on{border-color:#3a4a66}
.rt-team.empty{border-style:dashed}
.rt-team header{display:flex;align-items:baseline;justify-content:space-between;gap:6px}
.rt-team header b{font-size:13px}
.rt-team header small{font-size:11px;color:var(--dim)}
.rt-team .sqav{min-height:38px}
.rt-team .sqav img{width:34px;height:34px;border-radius:8px}
.rt-team .row{margin:0}
.rt-team .btn.sm{padding:2px 8px;font-size:11.5px}

/* 队伍页 rift 行：五套各显示一排小头像 */
.sqsets{gap:6px;flex-wrap:wrap}
.sqsets .sqset{display:flex;gap:2px;padding:2px;border:1px solid #1b2431;border-radius:8px;background:#070a0f}
.sqsets .sqset.e{border-style:dashed;align-items:center;padding:2px 6px}
.sqsets .sqset i{font-style:normal;font-size:10.5px;color:var(--dim)}
.sqsets .sqset img{width:22px;height:22px;border-radius:5px;object-fit:cover}

/* 结算：逐层 + 最后一层五队明细 */
.rfls{max-height:38vh;overflow:auto;display:flex;flex-direction:column;gap:4px;margin:6px 0}
.rfl{display:grid;grid-template-columns:64px 108px 1fr;gap:8px;align-items:center;background:#0b1017;border:1px solid var(--line);border-radius:8px;padding:4px 9px;font-size:12px}
.rfl b{font-size:12px}
.rfl span{color:var(--dim);font-size:11.5px}
.rfl small{color:#9aa4b5;font-size:11px}
.rfl.w{border-color:#2f5a41}
.rfl.l{border-color:#5c3630}
.rfl.w span{color:var(--ok)}
.rfl.l span{color:var(--bad)}
.riftdet{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:6px;margin-top:4px}
.riftdet .rd{background:#0b1017;border:1px solid var(--line);border-radius:9px;padding:6px 9px}
.riftdet .rd b{font-size:12px;display:block}
.riftdet .rd small{display:block;color:var(--dim);font-size:11px;line-height:1.45;margin:2px 0}
.riftdet .rd span{font-size:11.5px}
.riftdet .rd.w{border-color:#2f5a41}
.riftdet .rd.l{border-color:#5c3630}
.riftdet .rd.w span{color:var(--ok)}
.riftdet .rd.l span{color:var(--bad)}

@media(max-width:560px){
  .rt-teams{grid-template-columns:1fr}
  .rfl{grid-template-columns:52px 90px 1fr;gap:6px}
  .rfl small{display:none}
}

/* 横屏 / 竖屏开关：顶栏声音按钮左边那颗。样式跟着顶栏走，不另起一套配色 */
.orient-btn{background:none;border:1px solid var(--line);border-radius:7px;padding:0 6px;height:24px;font-size:11px;line-height:1;color:var(--dim);display:inline-flex;align-items:center;gap:3px;font-family:inherit;cursor:pointer}
.orient-btn:hover{border-color:var(--gold);color:var(--gold)}
.orient-btn:active{transform:scale(.96)}

/* 锁不住横屏时的转屏提示（盖住整页，给两条出路） */
.zj-rot{position:fixed;inset:0;z-index:200;display:none;align-items:center;justify-content:center;flex-direction:column;gap:14px;background:rgba(8,11,18,.94);color:var(--text);text-align:center;padding:24px;font:14px/1.7 inherit}
.zj-rot.on{display:flex}
.zj-rot svg{width:62px;height:62px;opacity:.85;animation:zjrot 2.4s ease-in-out infinite}
@keyframes zjrot{0%,45%{transform:rotate(0)}70%,100%{transform:rotate(90deg)}}
.zj-rot b{font-size:16px}
.zj-rot p{margin:0;max-width:22em;color:var(--dim);font-size:13px}
.zj-rot .acts{display:flex;gap:10px;margin-top:4px}
.zj-rot button{font:inherit;font-size:13px;padding:8px 16px;border-radius:9px;border:1px solid var(--line);background:#1a2130;color:var(--text);cursor:pointer}
.zj-rot button.pri{background:linear-gradient(100deg,var(--gold),#e08a3c);border-color:transparent;color:#1a1206;font-weight:600}

/* ---------- 联动活动「星辉直播间」+ 联名嘉宾（core/creators.js） ---------- */
.ctag{background:linear-gradient(90deg,#3a2f52,#25324a);border:1px solid #6a5a9a;color:#d8c9ff}
.cbox{margin:8px 0;padding:9px 11px;border-radius:10px;background:linear-gradient(180deg,#1b2130,#151a25);border:1px solid #33405c;border-left:3px solid #7d6ac0}
.cbox .clabel{margin-top:0;color:#8b93a7;font-size:11px;letter-spacing:.04em}
.cbox b{display:block;margin-top:2px;font-weight:500;font-size:12.5px;line-height:1.6;color:#dcd6ea;white-space:pre-line;word-break:break-word}
.cbox .crow em{font-style:normal;color:#f1e8ff;font-size:12px}
.cbox small{display:block;margin-top:5px;font-size:11px;color:#9aa4b8}
.cbox a{color:#8fb4ff;text-decoration:none}
.cbox a:hover{text-decoration:underline}
.cbox .crow{display:flex;gap:8px;align-items:baseline;margin:6px 0 0;font-size:12px}
.cbox .crow span{flex:none;color:#8b93a7;font-size:11px}
.cbox .crow a{color:#8fb4ff;text-decoration:none;border-bottom:1px dashed rgba(143,180,255,.4);word-break:break-all}
.guest .gbil{align-self:flex-start;font-size:11px;color:#a99ad6;text-decoration:none;border:1px solid #3d3358;border-radius:999px;padding:1px 8px;margin-top:3px}
.guest .gbil:hover{color:#f1e8ff;border-color:#6b58a8;background:#241d33}
.traitbox{margin:6px 0 12px;padding:9px 11px;border-radius:10px;background:linear-gradient(180deg,#211b2c,#171320);border:1px solid #463a5c;border-left:3px solid var(--rc,#8f7ad0)}
.traitbox b{display:block;font-size:13px;color:#f1e8ff;margin-bottom:4px}
.traitbox p{margin:0;font-size:12px;line-height:1.65;color:#c8bfd8}
.tile .gmark{position:absolute;top:6px;right:6px;font-size:9px;font-style:normal;padding:1px 5px;border-radius:6px;background:#2a2440cc;border:1px solid #6a5a9a;color:#d8c9ff}
.tile.gift:not(.locked){box-shadow:0 0 0 1px #6a5a9a55}
.famebar{background:linear-gradient(180deg,#1b2130,#141922);border:1px solid var(--line);border-radius:12px;padding:11px 12px;margin:10px 0}
.fameh{display:flex;align-items:baseline;gap:8px}
.fameh span{font-size:12px;color:var(--dim)}
.fameh b{font-size:20px;color:var(--gold);font-variant-numeric:tabular-nums}
.fameh em{margin-left:auto;font-size:11.5px;font-style:normal;color:var(--dim)}
.famebar-line{height:8px;border-radius:99px;background:#0e131c;border:1px solid #2b3447;overflow:hidden;margin:8px 0 6px}
.famebar-line i{display:block;height:100%;background:linear-gradient(90deg,#a57d1c,#e5b84b 70%,#ffe9a8);box-shadow:0 0 10px #e5b84b88;transition:width .35s}
.famebar small{font-size:11px;color:var(--dim)}
.guests{display:grid;grid-template-columns:repeat(auto-fill,minmax(112px,1fr));gap:8px}
.gwrap{display:flex;flex-direction:column;gap:3px}
.guest{background:var(--panel);border:1px solid var(--line);border-bottom:3px solid var(--rc);border-radius:11px;padding:7px;cursor:pointer;text-align:center;position:relative;transition:transform .12s,border-color .16s}
.guest:hover{border-color:color-mix(in srgb,var(--rc) 60%,var(--line))}
.guest:active{transform:scale(.98)}
.guest.on{background:linear-gradient(180deg,#1a2030,#161b25)}
.gimg{position:relative}
.guest .gimg img{width:100%;aspect-ratio:1;object-fit:cover;border-radius:8px}
.gdone{position:absolute;left:4px;bottom:4px;font-size:9.5px;font-style:normal;padding:1px 5px;border-radius:6px;background:#0d1117cc;border:1px solid #5cc98a;color:#8ce6b0}
.guest b{display:block;font-size:12.5px;margin-top:5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.guest small{display:block;font-size:10.5px;color:var(--dim)}
.guest .ghook{color:#b9a88c;font-size:10.5px;margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.gfoot{margin-top:6px;min-height:26px;display:flex;align-items:center;justify-content:center;font-size:11px}
.guest .btn.sm{padding:3px 10px;font-size:11.5px}
.gcost{text-align:center;font-size:10.5px;color:var(--dim)}
.ach.ready{border-color:#c9a13a99;box-shadow:0 0 0 1px #c9a13a44}

@media (max-width:540px){.top .brand{font-size:12.5px;letter-spacing:.5px;white-space:nowrap}.top .res{gap:10px;font-size:12px}}

/* 编队的独立配装 */
.sqlo-note{font-size:11px;color:#8fb8ff;min-height:15px}
.sqlo{margin:6px 0 4px;padding:8px;border:1px solid rgba(143,184,255,.18);border-radius:10px;background:rgba(14,19,30,.5)}
.sqlo h4{margin:2px 0 6px}
.sqlo h5{margin:8px 0 4px;font-size:12px;color:#aab6c9}
.sqlo .eqrow{display:flex;gap:6px;align-items:stretch;flex-wrap:wrap;margin-bottom:6px}
.sqlo .eqwho{flex:1 1 120px;min-width:0}
.sqlo button.ochip{cursor:pointer;font:inherit;color:inherit}
@media (max-width:520px){
  .sqlo .eqrow{flex-wrap:nowrap;gap:4px}
  /* 62px 里横着放 42px 头像，名字只剩 13px 宽，于是「拉蒙娜」一个字一行。
     手机上改回竖排（头像在上、名字在下），头像缩到 34，名字单行省略。 */
  .sqlo .eqwho{flex:0 0 52px;flex-direction:column;gap:1px;text-align:center}
  .sqlo .eqwho img{width:34px;height:34px}
  .sqlo .eqwho b{width:100%;font-size:10.5px;line-height:1.25;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .sqlo .eqwho small{display:none}
  /* 「＋ 命轮」也被 106px 的格子压成「命 / 轮」两行：文字不换行、整组居中，＋ 让位 */
  .sqlo .eqrow .eqslot{flex:1 1 0;min-width:0;justify-content:center;gap:3px;padding:6px 4px}
  .sqlo .eqrow .eqslot small{font-size:10.5px;white-space:nowrap}
  .sqlo .relic-row{display:grid;grid-template-columns:1fr;gap:6px}
  /* 造物格：手机上一格只有 180px 宽，横排时「精炼+1 已含 +3.4%」和「详情」两头一挤，
     中间那串说明就被压成竖条（一个字一行）。改成一列的「两行」卡：
     图 + 说明占第一行，精炼标记与「详情」落到第二行右对齐。 */
  .relic-slot{flex-wrap:wrap;gap:6px;padding:7px 8px}
  .relic-slot img{width:40px;height:40px;flex:0 0 40px}
  .relic-slot small{flex:1 1 calc(100% - 50px);font-size:10.5px;line-height:1.5;overflow-wrap:anywhere}
  .relic-slot small b{overflow-wrap:anywhere}
  .relic-slot em.rf{order:5;flex:0 1 auto;max-width:calc(100% - 60px);font-size:10px;overflow:hidden;text-overflow:ellipsis;vertical-align:middle}
  .relic-slot .rfbtn{order:6;margin-left:auto;padding:2px 8px;font-size:11px}
  .sqeditor .modal{max-height:92vh}
  .sqeditor .modal-body{padding-top:30px}   /* 给右上角的关闭键让出位置，筛选条不被压住 */
}

/* 新手引导：分点说明 + 页面里的提示卡 */
.guide-pop{max-height:72vh;overflow-y:auto}
.gp-body{margin:0 0 10px;font-size:12.5px;line-height:1.62;color:#cfd6e4}
.gp-body p{margin:0 0 6px}
.gp-body ul,.gp-body ol,.tipcard ul,.tipcard ol{margin:0 0 6px;padding-left:18px}
.gp-body li,.tipcard li{margin:0 0 4px}
.gp-body b,.tipcard b{color:var(--gold)}
.tipcard{margin:0 0 12px;padding:11px 13px 9px;border:1px solid color-mix(in srgb,var(--gold) 45%,var(--line));border-radius:12px;background:linear-gradient(180deg,#1b1a14,#13161d);font-size:12.5px;line-height:1.6;color:#cfd6e4}
.tipcard h4{margin:0 0 6px;font-size:13.5px;color:var(--gold)}
.tipcard .tiprow{display:flex;justify-content:flex-end;margin-top:4px}
.tipopen{background:none;border:1px solid var(--line);border-radius:999px;color:var(--dim);font-size:11.5px;padding:2px 10px;margin-left:8px;cursor:pointer;vertical-align:middle}
.tipopen:hover{color:var(--gold);border-color:var(--gold)}

/* 云端存档冲突窗 */
.cfrow{display:flex;gap:10px;margin:8px 0 12px}
.cfcol{flex:1;min-width:0;padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:rgba(14,19,30,.5)}
.cfcol b:first-child{display:block;margin-bottom:4px;color:var(--gold)}
.cfcol p{margin:2px 0;font-size:12.5px}
a.btn{display:inline-block;text-decoration:none}
.cfcol p b{display:inline;color:var(--text)}
.cfcol p{white-space:nowrap}

/* 战斗术语说明入口与可点开的词条目录 */
.idle-terms-btn{border:1px solid var(--line);border-radius:8px;background:var(--panel2);color:var(--acc);padding:5px 8px;font-size:12px;white-space:nowrap}
.idle-terms-btn:hover,.idle-glossary-item:hover{border-color:var(--acc)}
.idle-glossary{display:grid;grid-template-columns:repeat(auto-fill,minmax(92px,1fr));gap:8px;max-height:55vh;overflow:auto;margin-top:14px}
.idle-glossary-item{padding:9px 5px;border:1px solid var(--line);background:var(--panel2);border-radius:9px;text-align:center;cursor:pointer}
.glossary-modal{max-width:min(620px,94vw)}
@media(max-width:380px){.idle-terms-btn{padding:4px 5px;font-size:11px}}

/* 「伤害乘区」：词条说明排在最前的一块，讲清伤害是几条乘数连乘出来的。
   左边一列写乘区名、右边写怎么算；窄屏折成上下两行，不然 104px 一挤又成竖条。 */
.zonebox{margin:6px 0 12px;padding:10px 12px;border:1px solid color-mix(in srgb,var(--gold) 34%,var(--line));border-radius:12px;background:linear-gradient(180deg,rgba(31,26,15,.6),rgba(14,19,30,.5))}
.zonebox h4{margin:0 0 5px;font-size:13.5px;color:var(--gold)}
.zonebox h4 small{margin-left:6px;font-size:11px;font-weight:400;color:var(--dim)}
.zonebox .zhint{margin:0 0 8px;font-size:12px;line-height:1.6;color:#b9c3d4}
.zonelist{display:grid;gap:5px;margin:0 0 8px}
.zonerow{display:grid;grid-template-columns:96px 1fr;gap:8px;align-items:start;font-size:12px;line-height:1.55}
.zonerow b{color:var(--text);font-weight:600;white-space:nowrap}
.zonerow span{color:#b9c3d4;min-width:0}
.zonerow em{font-style:normal;color:var(--gold)}
.zoneeg{margin:0;font-size:11.5px;line-height:1.6;color:var(--dim)}
.zoneeg b{color:#7fd4a8}
.zonebox .fgrp{margin:6px 0;border:1px solid var(--line,#2a3350);border-radius:8px;padding:0 10px}
.zonebox .fgrp>summary{cursor:pointer;padding:8px 0;font-size:13px;color:var(--text);font-weight:600}
.zonebox .fgrp[open]>summary{border-bottom:1px solid var(--line,#2a3350);margin-bottom:8px}
.zonebox .fgrp .zoneeg{margin:0 0 10px}
.zonebox .fgrp .zonelist{margin-bottom:8px}
@media(max-width:430px){
  .zonebox{padding:9px 10px}
  .zonerow{grid-template-columns:1fr;gap:0}
  .zonerow b{white-space:normal}
}

/* 周 Boss 里程碑：档位多，已领取 / 更高的档位折起来 */
.wkfold{margin:8px 0}
.wkfold>summary{cursor:pointer;padding:8px 10px;border:1px solid var(--line,#2a3350);border-radius:8px;color:var(--dim,#9aa4bb);font-size:13px}
.wkfold[open]>summary{margin-bottom:8px}

/* ---- 队库的「已编入编队」角标 / 详情里的编队标签 ---- */
.tile .tmark{position:absolute;top:6px;left:6px;font-size:9px;font-style:normal;line-height:1.5;padding:1px 5px;border-radius:6px;background:#0d1320e6;border:1px solid #3d4d66;color:#c8d4e6;pointer-events:none}
.tile .tmark.on{background:#3a2c08ee;border-color:#c9a13a;color:var(--gold)}
.sqtags{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin:6px 0 2px;font-size:12px}
.sqtags .tag.sqtag{background:var(--panel);border:1px solid var(--line);color:var(--dim);border-radius:999px;padding:1px 9px;font-size:11.5px}
.sqtags .tag.sqtag.on{background:color-mix(in srgb,var(--gold) 14%,transparent);border-color:color-mix(in srgb,var(--gold) 55%,transparent);color:var(--gold)}
.sqtags .tag.sqtag.none{font-style:italic;opacity:.75}
/* 详情弹窗里的羁绊小标：激活的金边，未激活的只在 title 里给做法 */
.sqtags .tag.bdtag{background:var(--panel);border:1px dashed var(--line);color:var(--dim);border-radius:999px;padding:1px 9px;font-size:11.5px;display:inline-flex;gap:5px;align-items:baseline}
.sqtags .tag.bdtag small{font-size:10.5px;opacity:.8}
.sqtags .tag.bdtag.on{border-style:solid;border-color:color-mix(in srgb,var(--gold) 55%,transparent);color:var(--gold);background:color-mix(in srgb,var(--gold) 10%,transparent)}

/* ---- 导航红点：成就 / 任务有可领取的奖励 ---- */
.rdot{position:absolute;top:6px;left:50%;margin-left:9px;min-width:15px;height:15px;padding:0 4px;border-radius:999px;background:#e2453c;color:#fff;font-size:9.5px;font-weight:700;font-style:normal;line-height:15px;text-align:center;box-shadow:0 0 7px #e2453ca0;pointer-events:none}
.rdot[hidden]{display:none!important}
#subnav button{position:relative}
#subnav button .rdot{position:static;display:inline-block;margin:0 0 0 5px;vertical-align:1px;box-shadow:none}
.squad .squse .scur{color:var(--gold);font-weight:600}

/* ---- 编队库：装备「已编入」提示（装备列表 / 编队卡片共用装备数） ---- */
.item .i-body .who.sqin{color:var(--gold);opacity:.92;display:flex;flex-wrap:wrap;gap:3px;align-items:center}.item .i-body .who.sqin::before{content:'已编入';color:var(--dim);margin-right:2px}.sqchip{border:1px solid #5a4a1c;background:#2a2412;border-radius:9px;padding:0 6px;font-size:11px;line-height:16px}.sqchip.on{border-color:#2f6b49;background:#12301f;color:#7dffb0}
/* 正在编辑的那套编队：列表里单独标出来（草稿，还没保存） */
.sqchip.ed{border-style:dashed;border-color:color-mix(in srgb,var(--gold) 70%,transparent);color:var(--gold);background:color-mix(in srgb,var(--gold) 14%,transparent)}
.item .i-body .who.sqnone{color:var(--dim);opacity:.7}
/* 词条筛选条：装备库存与换装弹窗共用，一行放不下就换行 */
.affixbar{flex-wrap:wrap;gap:5px;margin:6px 0 8px;align-items:center}
.affixbar .sqchip{border-color:#2b3447;background:#131a26;color:var(--dim);font-size:11.5px;padding:2px 9px;line-height:17px;cursor:pointer}
.affixbar .sqchip.on{border-color:var(--gold);color:var(--gold);background:color-mix(in srgb,var(--gold) 12%,transparent)}
.affixbar .sqchip em{font-style:normal;margin-left:4px;font-size:10px;opacity:.7}
.sqlo-note .sqshare{display:inline-block;margin-left:8px;font-style:normal;font-size:11px;color:var(--gold);background:color-mix(in srgb,var(--gold) 13%,transparent);border:1px solid color-mix(in srgb,var(--gold) 45%,transparent);border-radius:999px;padding:0 8px}

/* ---- 编队编辑器：草稿还空着时的说明（这个挑战现在用哪套、你在编哪套） ---- */
.hint.sqnote{margin:8px 0 4px;padding:7px 9px;border-radius:8px;line-height:1.55;color:#cfd8e6;
  background:color-mix(in srgb,var(--gold) 9%,transparent);border:1px solid color-mix(in srgb,var(--gold) 30%,transparent);
  border-left:3px solid color-mix(in srgb,var(--gold) 70%,transparent)}
.hint.sqnote b{color:var(--gold)}

/* ---- 装备图鉴 / 50 连 500 连汇总 ---- */
.dxgrid{display:grid; grid-template-columns:repeat(auto-fill,minmax(92px,1fr)); gap:8px; margin-top:8px}
.dxtile{border:1px solid var(--line,#2a3350); border-radius:10px; padding:6px 4px; text-align:center; background:var(--panel,#121a2b); min-width:0}
.dxtile img{width:52px; height:52px; object-fit:contain; display:block; margin:0 auto 3px}
.dxtile b{display:block; font-size:11.5px; line-height:1.3; overflow:hidden; text-overflow:ellipsis; white-space:nowrap}
.dxtile small{color:var(--dim,#8e9ab5); font-size:10.5px}
.dxtile.miss{opacity:.38}
.dxtile.miss img{filter:grayscale(1) brightness(.55)}
.dxtile.r-SSR{border-color:#e3b341}.dxtile.r-SR{border-color:#a07cff}.dxtile.r-R{border-color:#5b9bd5}
.dxrow{display:flex; flex-wrap:wrap; gap:6px; margin:6px 0 10px}
.dxchip{display:flex; align-items:center; gap:5px; border:1px solid var(--line,#2a3350); border-radius:8px; padding:3px 7px 3px 3px; font-size:11.5px; max-width:100%}
.dxchip img{width:26px; height:26px; object-fit:contain}
.dxchip.r-SSR{border-color:#e3b341}.dxchip.r-SR{border-color:#a07cff}.dxchip.r-R{border-color:#5b9bd5}
.btn.big small{display:block; font-size:10px; opacity:.7; font-weight:400}

/* 手机端减负：全屏毛玻璃 / 全屏模糊背景每帧都要重算，战斗动画下很吃 GPU */
@media (pointer:coarse), (max-width:720px){
  *, *::before, *::after{-webkit-backdrop-filter:none !important; backdrop-filter:none !important}
  #bg{filter:none}
  .bv-scene{filter:none}
}
button, a, [role="button"], input, select, label{touch-action:manipulation}

.farmx.rule{color:#e6c9ff;border-left:3px solid #a67cff;padding-left:8px;line-height:1.55}.farmx.rule small{color:var(--dim)}

.ehlist{display:flex;flex-direction:column;gap:6px;margin:8px 0}.ehrow{display:flex;gap:6px;align-items:baseline;flex-wrap:wrap;padding:6px 8px;border:1px solid #2b3447;border-radius:8px}

/* ---------- 疾驰欢愉的大运 ---------- */
.banner-card.lk{border-left:3px solid var(--gold)}
.lkdiffs{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:8px;margin:8px 0}
.lkdiff{border:1px solid var(--line);border-radius:10px;padding:10px;background:var(--panel)}
.lkdiff.on{border-color:var(--gold);box-shadow:0 0 0 1px #e5b84b55 inset}
.lkdiff .hd{display:flex;justify-content:space-between;align-items:baseline;gap:6px}
.lkdiff p{margin:4px 0}
/* 12 格的路线条：走过的暗下去，当前这格亮起来，节点类型靠底色区分 */
.lkpath{display:grid;grid-template-columns:repeat(12,1fr);gap:4px;margin:10px 0}
.lknode{position:relative;border:1px solid var(--line);border-radius:8px;padding:6px 0;text-align:center;background:var(--panel);opacity:.55}
.lknode i{font-style:normal;font-size:15px;line-height:1}
.lknode small{display:block;font-size:10px;color:var(--dim)}
.lknode.done{opacity:.3}
.lknode.now{opacity:1;border-color:var(--gold);box-shadow:0 0 0 1px #e5b84b66 inset;background:var(--panel2)}
.lknode.k-elite{border-left:2px solid #b073ff}.lknode.k-boss{border-left:2px solid var(--bad)}
.lknode.k-event{border-left:2px solid var(--acc)}.lknode.k-shop{border-left:2px solid var(--ok)}
.lkfaces{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin:8px 0}
.lkface{text-align:center}
.lkface img{width:100%;aspect-ratio:1;object-fit:cover;border-radius:8px;border:1px solid var(--line)}
.lkface b{display:block;font-size:12px;margin-top:2px}
/* 血条：.bar i 本身没有底色，各页各自指定；这里沿用队伍页那种「健康绿」
   低血量转黄 / 红，扫一眼就知道谁快倒了 */
.lkface .bar{height:5px;margin:4px 0 2px}
.lkface .bar i{background:var(--ok)}
.lkface.hurt .bar i{background:var(--gold)}
.lkface.dead .bar i{background:var(--bad)}
.lkface small{color:var(--dim);font-size:10px}
.lkface.dead img{filter:grayscale(1) brightness(.5)}
/* 没有立绘时（数据里缺 portrait）给一个占位块，别让 <img> 露成破图 */
.lkface i.noface{display:block;width:100%;aspect-ratio:1;border-radius:8px;border:1px solid var(--line);background:linear-gradient(135deg,#1b2230,#28313f)}
.lkface.dead i.noface{opacity:.5}
.lkface.dead b{color:var(--bad)}
.lkside{border:1px solid var(--line);border-radius:10px;padding:8px 10px;background:var(--panel);margin:8px 0}
.lkside b{font-size:12px;color:var(--gold);display:block;margin:4px 0}
.lktags{display:flex;flex-wrap:wrap;gap:4px}
.lktag{font-size:12px;border:1px solid var(--line);border-radius:6px;padding:1px 6px;background:var(--panel2)}
.lktag.relic{border-color:var(--gold);color:#f0d79a}
.lktag.buff{border-color:var(--acc);color:#b9cdfb}
.lktag.up{border-color:#b073ff;color:#dcc8ff}
.lkbattle,.lkevent,.lkshop{border:1px solid var(--line);border-radius:10px;padding:12px;background:var(--panel);margin:10px 0}
.lkevent h3,.lkshop h3{margin-top:0;color:var(--gold)}
.lkevent .row,.lkshop .row{display:flex;gap:8px;flex-wrap:wrap}
.lkevent .btn{flex:1 1 160px;text-align:left}
.lkpicks{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:8px;margin:10px 0}
.lkpick{display:block;text-align:left;border:1px solid var(--line);border-radius:10px;padding:10px;background:var(--panel)}
.lkpick:hover{border-color:var(--gold)}
.lkpick em{font-style:normal;font-size:11px;color:var(--dim);display:block}
.lkpick b{display:block;margin:2px 0;color:var(--gold)}
.lkpick.relic b{color:#f0d79a}.lkpick.up b{color:#dcc8ff}.lkpick.buff b{color:#b9cdfb}
.lkpick p{margin:0;font-size:12px;color:var(--dim)}
.lkrow{display:flex;gap:8px;align-items:center;flex-wrap:wrap;padding:6px 8px;border-bottom:1px solid var(--line)}
.lkrow:last-child{border-bottom:0}
.lkrow>b{min-width:64px}
.lkrow .dots{display:flex;gap:3px}
.lkrow .dots i{width:8px;height:8px;border-radius:50%;background:#2a3344;display:block}
.lkrow .dots i.on{background:var(--gold)}
.lkrow.done{opacity:.6}
@media(max-width:560px){.lkpath{grid-template-columns:repeat(6,1fr)}.lkfaces{grid-template-columns:repeat(4,1fr)}}
/* 树海：等级条 / 券匣 / 天赋树 / 仓库 */
.lkxp{position:relative;height:20px;border:1px solid var(--line);border-radius:6px;background:#05070b;overflow:hidden;margin:6px 0}
.lkxp i{display:block;height:100%;background:linear-gradient(90deg,#8a6a1e,#e5b84b)}
.lkxp em{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-style:normal;font-size:11px;color:#e9e2cf;text-shadow:0 1px 2px #000}
.lkwallet .btn{text-align:left}
.lkdot{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:5px;vertical-align:middle}
.lkbrs{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:8px;margin:8px 0}
.lkbranch{border:1px solid var(--line);border-radius:10px;padding:8px;background:var(--panel)}
.lkbranch h4{margin:2px 0 6px;font-size:13px;color:var(--gold)}
.lktal{border:1px solid var(--line);border-radius:8px;padding:7px;background:var(--panel2);margin-bottom:6px}
.lktal.done{border-color:var(--gold);box-shadow:0 0 0 1px #e5b84b44 inset}
.lktal .hd{display:flex;justify-content:space-between;align-items:baseline;gap:6px}
.lktal p{margin:2px 0;font-size:12px}
.lktal .btn{width:100%;margin-top:4px}
.lkh4{margin:10px 0 4px;font-size:13px;color:var(--gold)}
.lkrow.on{background:rgba(229,184,75,.07)}
.lktag.gear{border-color:#7fd1b9;color:#b9f0e2}
.lktag.bless{border-color:#e08ac0;color:#f4c8e6}
.lkpick.gear b{color:#b9f0e2}
/* 树海：开局分队 / 通用券 / 「枝杈」规则天赋 */
.lksquads{grid-template-columns:repeat(auto-fit,minmax(150px,1fr))}
.lkpick.squad em{color:var(--gold);opacity:.8}
.lkpick.squad p{line-height:1.35}
.lkpick.squad.relic{border-color:var(--gold);box-shadow:0 0 0 1px #e5b84b55 inset}
.lkany{background:linear-gradient(135deg,#ff9a9a,#ffe08a,#9be7c4,#9bc4f5,#d5a6f2)}
.lkbranch.rule{border-color:#8f7ae0;background:linear-gradient(180deg,rgba(143,122,224,.10),transparent)}
.lkbranch.rule h4{color:#c6b4ff}
.lktal.rule{background:rgba(143,122,224,.07)}
.lktal.rule .btn:not(:disabled){box-shadow:0 0 0 1px #8f7ae055 inset}
@media(max-width:560px){.lkbrs{grid-template-columns:1fr}.lkwallet .btn{font-size:12px}.lksquads{grid-template-columns:1fr 1fr}}

/* ---------- 同调率（core/affinity.js + ui/affinity.js） ---------- */
.afflist{display:grid;gap:6px;margin-top:6px}
.affrow{display:flex;align-items:center;gap:10px;padding:6px 8px;border:1px solid var(--line);border-radius:10px;background:var(--panel2)}
.affrow img{width:46px;height:46px;border-radius:9px;object-fit:cover;border:1px solid var(--line);flex:0 0 auto}
.affmain{flex:1;min-width:0}
.affmain>b{display:block;font-size:13px;font-weight:600}
.affmain>b small{color:var(--dim);font-weight:400;margin-left:4px;font-size:11px}
.affbar{height:6px;border-radius:4px;background:#05070b;overflow:hidden;margin:3px 0 2px}
.affbar i{display:block;height:100%;background:linear-gradient(90deg,#7aa2f7,#c58bff)}
.affnum{color:var(--dim);font-size:11px}
.affmax{display:inline-block;margin-left:5px;padding:0 5px;border-radius:5px;background:var(--gold);color:#20180a;font-size:10px;font-weight:700;vertical-align:1px}
.giftrow{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:8px 0}
.giftbox{display:flex;flex-direction:column;gap:3px;align-items:center;padding:8px 6px;border:1px solid var(--line);border-radius:10px;background:var(--panel2);text-align:center}
.giftbox b{font-size:12px}
.giftbox em{color:var(--acc);font-style:normal;font-size:11px}
.giftbox .gcount{color:var(--gold);font-size:12px;font-weight:700}
.giftbox .btn{margin-top:2px;width:100%}
.affcard{border:1px solid var(--line);border-radius:10px;padding:8px 10px;background:var(--panel2);margin:4px 0 8px}
.afftal{list-style:none;margin:6px 0;padding:0;display:grid;gap:3px;font-size:12px}
.afftal li{display:flex;gap:8px;color:var(--dim);opacity:.65}
.afftal li.on{color:var(--tx);opacity:1}
.afftal li b{flex:0 0 auto;font-weight:600}
.afftal li.on b{color:var(--ok)}
.affpact{display:flex;flex-wrap:wrap;gap:6px;align-items:baseline;padding:6px 8px;border:1px dashed var(--line);border-radius:8px;font-size:12px;color:var(--dim)}
.affpact b{color:var(--tx)}
.affpact em{font-style:normal;margin-left:auto;font-size:11px}
.affpact.on{border-color:var(--gold);border-style:solid}
.affpact.on b,.affpact.on em{color:var(--gold)}
@media(max-width:560px){.giftrow{grid-template-columns:1fr 1fr 1fr;gap:6px}.giftbox{padding:6px 4px}.giftbox b{font-size:11px}}

/* ---------- 定位特性（core/roles.js） ---------- */
.tag.roletag{background:color-mix(in srgb, var(--rc2) 18%, transparent);color:var(--rc2);border:1px solid color-mix(in srgb, var(--rc2) 45%, transparent)}
.rolebox{border-left:3px solid var(--rc2)}
.rolebox b{color:var(--rc2)}
.rolebox p.dim{color:var(--dim);margin:4px 0 0}

/* ---------- 免费回溯券（后台发放 / 大运等级奖励） ---------- */
.tag.rwtag{background:color-mix(in srgb, #7fd1c1 16%, transparent);color:#7fd1c1;border:1px solid color-mix(in srgb, #7fd1c1 45%, transparent);white-space:nowrap}
.subtyp{font-style:normal;color:var(--acc);margin-left:4px;padding:0 4px;border:1px solid var(--line);border-radius:5px;font-size:10px}

/* 大运 · 队伍状态面板：每人一张可折叠的属性卡 */
.lkstatus{margin:8px 0;border:1px solid var(--line);border-radius:10px;padding:6px 10px;background:rgba(255,255,255,.03)}
.lkstatus>summary{cursor:pointer;display:flex;gap:8px;align-items:baseline;flex-wrap:wrap}
.lkunit{margin:6px 0;border-top:1px dashed var(--line);padding-top:4px}
.lkunit>summary{cursor:pointer;display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.lkunit>summary img{width:26px;height:26px;border-radius:6px;object-fit:cover}
.lkunit.dead{opacity:.55}
.lkstats{display:grid;grid-template-columns:repeat(auto-fill,minmax(112px,1fr));gap:4px 10px;margin:6px 0 2px}
.lkst{display:flex;justify-content:space-between;gap:6px;font-size:12px}
.lkst em{font-style:normal;opacity:.65}

/* 同调 Lv20：战斗里头像换成流光溢彩的边框（彩色锥形渐变绕着转；不支持 @property 的浏览器就是一圈静态彩虹） */
@property --affang{syntax:'<angle>';initial-value:0deg;inherits:false}
.u-pic.aff20{border:3px solid transparent;background:linear-gradient(#000,#000) padding-box,conic-gradient(from var(--affang),#ff6ec7,#ffd36e,#7dffb5,#6ec8ff,#b07cff,#ff6ec7) border-box;animation:affspin 3.2s linear infinite;box-shadow:0 0 10px 1px rgba(255,160,230,.45)}
@keyframes affspin{to{--affang:360deg}}
@media (prefers-reduced-motion:reduce){.u-pic.aff20{animation:none}}
.afftal li.rsv{opacity:.7;font-style:italic}

/* 更新公告 */
.news-modal{max-width:560px}
.news .news-item{margin:0 0 14px}
.news .news-item h4{margin:0 0 6px;font-size:15px}
.news .news-item h4 small{font-weight:400;font-size:11px;color:var(--dim,#8c97ad);margin-left:6px}
.news ul{margin:0;padding-left:18px;display:grid;gap:7px;font-size:13px;line-height:1.65}
.news b{color:var(--gold,#e8c36a)}
/* 往期公告：弹窗里就地折叠，点开就能翻，不用跑去设置页 */
.newspast{margin:2px 0 14px;border-top:1px dashed var(--line);padding-top:10px}
.newspast>summary{cursor:pointer;list-style:none;display:flex;align-items:center;gap:6px;font-size:13px;color:var(--gold,#e8c36a);padding:2px 0;user-select:none}
.newspast>summary::-webkit-details-marker{display:none}
.newspast>summary::before{content:'▸';font-size:11px;transition:transform .15s}
.newspast[open]>summary::before{content:'▾'}
.newspast>summary:hover{color:var(--tx)}
.newspast .news{margin-top:10px;padding-left:10px;border-left:2px solid var(--line)}
.newspast .news .news-item h4{font-size:14px;color:var(--dim,#8c97ad)}

/* ---------- 逆潮守关：你守，玩家攻 ---------- */
.denbad{color:var(--bad)}
.dencells{display:grid;grid-template-columns:repeat(10,minmax(0,1fr));gap:5px;margin:8px 0 12px}
.dencell{display:flex;flex-direction:column;align-items:center;gap:1px;padding:6px 2px;border:1px solid var(--line);border-radius:8px;background:var(--panel);cursor:pointer;line-height:1.15}
.dencell:hover:not(:disabled){border-color:var(--gold)}
.dencell b{font-size:13px}
.dencell em{font-style:normal;font-size:8.5px;color:var(--gold);letter-spacing:-.5px}
.dencell.on{border-color:#8a6d2b;background:rgba(229,184,75,.09)}
.dencell.boss b{color:#f0d79a}
.dencell.lock{opacity:.4;cursor:not-allowed}
/* 未解锁的章节折成一行：20 章全铺太长，先给个「第几章 · 名字 · 打到第几关解锁」 */
.denchapbar{justify-content:space-between;align-items:center;margin:10px 0 4px}
.denchap{display:flex;justify-content:space-between;align-items:baseline;gap:10px;flex-wrap:wrap;
  padding:9px 12px;margin:8px 0;border:1px dashed var(--line);border-radius:10px;background:rgba(255,255,255,.02)}
.denchap.lock{opacity:.62}
.denchap b{font-size:13.5px;color:var(--gold,#e8c36a)}
.denchap .dim{font-size:12px}
.denrule{font-style:normal;font-size:11px;padding:2px 7px;border-radius:6px;border:1px solid rgba(196,107,107,.4);background:rgba(196,107,107,.12);color:#f0a8a8;white-space:nowrap}
.denrule.off{color:var(--dim);border-color:var(--line);background:transparent}
.denteam{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin:10px 0 8px}
.denpcard{min-width:0;display:flex;flex-direction:row;gap:10px;align-items:flex-start;padding:8px;border:1px solid var(--line);border-radius:10px;background:rgba(255,255,255,.03)}
.denpcard img{flex:none;width:76px;height:76px;object-fit:cover;border-radius:10px;background:#0b1017}
.denpi{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.denpn{display:flex;align-items:baseline;gap:6px;min-width:0}.denst{display:flex;flex-wrap:wrap;gap:2px 8px}.denst i{font-style:normal}
.denpcard b{font-size:13.5px}
.denpcard em{font-style:normal;font-size:10px;color:var(--acc)}
.denpcard span{font-size:11px;line-height:1.4}
.denpcard.WARDEN{border-left:2px solid #6ec8ff}.denpcard.CHORUS{border-left:2px solid #b07cff}.denpcard.ASSAULT{border-left:2px solid #ff9b6e}
.denpcard .densk{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;word-break:break-all;max-width:100%;min-width:0}
.denpcard b,.denpcard em{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
.denbar{position:relative;height:17px;border:1px solid var(--line);border-radius:8px;background:#111823;overflow:hidden;margin:7px 0}
.denbar i{display:block;height:100%;background:linear-gradient(90deg,#5f8a52,#8fd07a);transition:width .2s}
.denbar i.denbad{background:linear-gradient(90deg,#7a3a3a,#d06a6a)}
.denbar em{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-style:normal;font-size:10.5px;color:#e6ecf6;text-shadow:0 1px 2px #000}
.denslots{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:6px;margin:6px 0}
.denslot{min-width:0;display:flex;flex-direction:column;gap:1px;padding:5px;border:1px solid var(--line);border-radius:9px;background:rgba(255,255,255,.03);min-height:76px}
.denslot img{width:100%;aspect-ratio:1;height:auto;object-fit:cover;border-radius:6px;margin-bottom:2px}
.denslot b{font-size:11.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.denslot span{font-size:10px}
.denslot.empty{align-items:center;justify-content:center;color:var(--dim);font-size:11px;border-style:dashed}
.denslot .btn.xs{padding:1px 5px;font-size:10.5px}
.denslot .row{gap:3px;margin-top:2px}
.denfilter{gap:5px;flex-wrap:wrap;margin:6px 0}
.denmons{display:grid;grid-template-columns:repeat(auto-fill,minmax(86px,1fr));gap:6px;margin:8px 0}
.denmon{position:relative;display:flex;flex-direction:column;gap:1px;padding:5px;border:1px solid var(--line);border-left-width:2px;border-radius:9px;background:var(--panel);cursor:pointer;text-align:left;line-height:1.2}
.denmon:hover{border-color:var(--gold)}
.denmon img{width:100%;aspect-ratio:1;height:auto;object-fit:cover;border-radius:6px;margin-bottom:2px}
.denmon b{font-size:11px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.denmon span{font-size:9.5px}
.denmon.Normal{border-left-color:#4a5b74}.denmon.Elite{border-left-color:#8a6d2b}.denmon.Boss{border-left-color:#a8543f}
.denmon.sel{border-color:var(--gold);background:rgba(229,184,75,.1)}
.denmon.poor{opacity:.4}
.denmon .dencost{position:absolute;top:4px;right:4px;font-style:normal;font-size:10px;padding:0 4px;border-radius:5px;background:rgba(8,12,18,.8);color:#8fd07a;border:1px solid rgba(143,208,122,.35)}
.denmon .denon{position:absolute;top:4px;left:4px;font-size:9px;text-decoration:none;padding:0 3px;border-radius:5px;background:rgba(229,184,75,.85);color:#1a1408}
.deng{font-style:normal;display:inline-block;min-width:14px;text-align:center;font-size:9.5px;border-radius:4px;border:1px solid var(--line);background:rgba(255,255,255,.07);padding:0 2px;color:#c9d6ea}
@media(max-width:560px){.dencells{grid-template-columns:repeat(5,minmax(0,1fr))}.denteam{grid-template-columns:minmax(0,1fr)}.denslots{grid-template-columns:repeat(2,minmax(0,1fr))}.denpcard img{width:64px;height:64px}.denmons{grid-template-columns:repeat(auto-fill,minmax(76px,1fr))}}
