/* 发光前夜 · 全站样式（由 index.html 外置，勿手改 css/app.css，改 index.html 里的 style） */
.fabMenu{position:fixed!important;left:10px;z-index:850;
  top:calc(58px + env(safe-area-inset-top,0px));width:34px;height:34px;border-radius:11px;
  cursor:pointer;display:flex;align-items:center;justify-content:center;
  border:1px solid var(--line);background:var(--card);color:var(--tx2);
  box-shadow:0 4px 16px rgba(0,0,0,.3);-webkit-tap-highlight-color:transparent}
.fabMenu i{font-style:normal;font-size:15px;line-height:1}
.fmPanel{position:fixed!important;z-index:860!important;
  top:calc(98px + env(safe-area-inset-top,0px))!important;left:10px!important;
  width:min(268px,calc(100vw - 20px))!important}
body.heal .fabMenu{display:flex!important}
.fmItem b{flex:0 0 auto;white-space:nowrap;width:auto}
.fmItem>span:not(.fmSw){flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
/* ════════ 游戏全屏页 ════════ */
.glFull{position:fixed;inset:0;z-index:400;display:none;flex-direction:column;
  background:#08060f;overflow:hidden}
.glFull.on{display:flex}
/* 顶部栏 */
.glTopBar{display:flex;align-items:center;gap:10px;padding:calc(9px + env(safe-area-inset-top,0px)) 12px 9px;
  flex-shrink:0;background:rgba(10,8,20,.9);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);
  border-bottom:1px solid rgba(255,255,255,.08)}
.glTopInfo{display:flex;align-items:center;gap:8px;flex:1;min-width:0}
.glTopInfo .gtiE{font-size:19px;flex-shrink:0}
.glTopInfo b{display:block;font-size:12.5px;color:#f0eef9;font-weight:700;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.glTopInfo i{display:block;font-style:normal;font-size:10.5px;color:rgba(255,255,255,.5);margin-top:1px}
.glTopBtns{display:flex;gap:4px;flex-shrink:0}
.gtb{display:flex;flex-direction:column;align-items:center;gap:1px;min-width:38px;
  padding:5px 5px;border-radius:10px;cursor:pointer;font-family:inherit;font-size:15px;
  border:1px solid rgba(255,255,255,.11);background:rgba(255,255,255,.05);color:rgba(255,255,255,.72);
  -webkit-tap-highlight-color:transparent;transition:.16s;line-height:1.1}
.gtb span{font-size:8.5px;opacity:.75}
.gtb:active{transform:scale(.9)}
.gtb.on{border-color:rgba(193,92,240,.55);background:rgba(193,92,240,.18);color:#fff}
.gtb.exit{border-color:rgba(255,107,129,.34);background:rgba(255,107,129,.1);color:#ffb3bf;min-width:34px}
/* 舞台占满剩余空间 */
.glFull .glStage{flex:1;min-height:0;border-radius:0;overflow-y:auto;
  -webkit-overflow-scrolling:touch;display:flex;flex-direction:column;justify-content:flex-end}
.glStats.hide{display:none!important}
/* 回顾 / 存档 / 声线 */
.rvItem{display:flex;align-items:flex-start;gap:9px;padding:11px 13px;border-radius:12px;
  background:var(--onCard);border:1px solid var(--line);cursor:pointer;-webkit-tap-highlight-color:transparent}
.rvItem:active{transform:scale(.99)}
.rvCh{font-size:9.5px;padding:2px 7px;border-radius:999px;flex-shrink:0;
  background:rgba(193,92,240,.14);color:var(--g);white-space:nowrap}
.rvT{flex:1;font-size:13px;line-height:1.75;color:var(--tx2)}
.rvP{font-size:13px;flex-shrink:0;opacity:.5}
.slotRow{display:flex;align-items:center;gap:11px;padding:12px 14px;border-radius:13px;
  background:var(--onCard);border:1px solid var(--line)}
.slotRow.empty{opacity:.62}
.slotInfo{flex:1;min-width:0}
.slotInfo b{display:block;font-size:13px;color:var(--tx);margin-bottom:2px}
.slotInfo span{display:block;font-size:11px;color:var(--tx2)}
.slotInfo .tx3{color:var(--tx3);font-size:10.5px;margin-top:1px}
.slotBtns{display:flex;gap:5px;flex-shrink:0}
.slotBtns .btn{padding:6px 10px;font-size:11.5px;min-width:34px}
.slotBtns .btn[disabled]{opacity:.35}
.voiceRow{display:flex;align-items:center;gap:9px;padding:9px 12px;border-radius:11px;
  cursor:pointer;text-align:left;font-family:inherit;border:1px solid var(--line);
  background:var(--onCard);color:var(--tx);-webkit-tap-highlight-color:transparent}
.voiceRow.on{border-color:rgba(193,92,240,.55);background:rgba(193,92,240,.11)}
.voiceRow .vn{flex:1;font-size:12.5px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.voiceRow .vl{font-size:10.5px;color:var(--tx3);flex-shrink:0}
/* 选项里的「上一句」 */
.glOptBack{border-style:dashed;opacity:.82}
.glOpt b{display:block;font-size:14px;font-weight:600}
.glOpt i{display:block;font-style:normal;font-size:11.5px;color:var(--tx3);margin-top:2px}

.netChkBtn{
  margin-left:11px;padding:7px 15px;border-radius:999px;cursor:pointer;font-family:inherit;
  font-size:12px;font-weight:600;border:0;
  background:linear-gradient(120deg,var(--g),var(--g2));color:#0b0b12;
  -webkit-tap-highlight-color:transparent;transition:.16s;box-shadow:0 3px 14px rgba(155,107,255,.3)
}
.netChkBtn:active{transform:scale(.95)}
.netChkBtn.done{background:var(--onCard);color:var(--g2);box-shadow:none;border:1px solid var(--line)}


/* ════════ header 悬浮小菜单 ════════ */
.fabMenu{
  width:32px;height:32px;flex-shrink:0;border-radius:10px;cursor:pointer;
  display:flex;align-items:center;justify-content:center;font-size:15px;
  border:1px solid var(--line);background:var(--onCard);color:var(--tx2);
  -webkit-tap-highlight-color:transparent;transition:.16s
}
.fabMenu:active{transform:scale(.9)}
.fabMenu.on{background:rgba(193,92,240,.18);border-color:rgba(193,92,240,.5);color:var(--tx)}
.fmPanel{
  position:absolute;top:52px;left:12px;z-index:220;display:none;
  min-width:216px;padding:7px;border-radius:16px;
  max-height:calc(100vh - 76px);overflow-y:auto;overscroll-behavior:contain;
  background:var(--card);border:1px solid var(--line);
  box-shadow:0 16px 46px rgba(0,0,0,.42)
}
.fmPanel.on{display:block;animation:fmIn .2s cubic-bezier(.2,.9,.3,1)}
@keyframes fmIn{from{opacity:0;transform:translateY(-7px)}to{opacity:1;transform:translateY(0)}}
.fmList{display:grid;gap:2px}
.fmItem{
  display:flex;align-items:center;gap:10px;padding:9px 10px;border-radius:12px;
  cursor:pointer;text-align:left;font-family:inherit;border:0;background:transparent;
  color:var(--tx);transition:.14s;-webkit-tap-highlight-color:transparent
}
.fmItem:active{background:var(--onCard)}
.fmItem i{font-size:17px;flex-shrink:0;width:22px;text-align:center;font-style:normal}
.fmItem b{font-size:13.5px;font-weight:600;flex-shrink:0;width:44px;text-align:left}
.fmItem span{font-size:10.5px;color:var(--tx3);flex:1;text-align:left;line-height:1.4}
.fmItem.fmToggle span{margin-left:auto}
.fmSw{
  width:34px;height:19px;border-radius:999px;background:rgba(255,255,255,.13);
  position:relative;transition:.2s;flex-shrink:0!important;width:34px!important
}
.fmSw::after{
  content:'';position:absolute;top:2.5px;left:2.5px;width:14px;height:14px;
  border-radius:50%;background:var(--tx3);transition:.2s
}
.fmSw.on{background:rgba(193,92,240,.5)}
.fmSw.on::after{left:17.5px;background:#fff}
html[data-skin="day"] .fmSw,html[data-skin="warm"] .fmSw{background:rgba(0,0,0,.14)}
/* 「选哪首」子项：视觉上缩进一级，表示它是上一项的下一步 */
.fmItem.fmSub{
  margin-left:22px;padding:7px 10px 7px 8px;
  border-top:1px solid var(--line);border-radius:0 0 12px 12px
}
.fmItem.fmSub i{font-size:14px;opacity:.75}
.fmItem.fmSub b{font-size:12px;color:var(--tx2);width:auto}
.fmItem.fmSub span{font-size:10px}
.fmItem.fmSub em{margin-left:auto;font-style:normal;color:var(--tx3);font-size:13px;line-height:1}
.fmItem.fmSub:active{background:var(--onCard)}
html[data-skin="day"] .fmPanel,html[data-skin="warm"] .fmPanel{box-shadow:0 16px 46px rgba(80,60,40,.2)}


/* ════════ 成就等级 · 12 级 4 段 ════════ */
.lvBadge{
  display:inline-flex;align-items:center;gap:8px;padding:7px 13px;border-radius:999px;
  border:1px solid rgba(193,92,240,.34);background:rgba(193,92,240,.09)
}
.lvBadge b{font-size:13px;color:var(--tx);font-weight:700}
.lvBadge i{
  font-style:normal;font-size:11px;color:var(--g);font-weight:700;
  padding:2px 8px;border-radius:999px;background:rgba(193,92,240,.14)
}
.lvSegs{display:flex;gap:4px;margin-top:11px}
.lvSeg{
  flex:1;padding:8px 6px;border-radius:10px;text-align:center;
  border:1px solid var(--line);background:var(--onCard);transition:.2s
}
.lvSeg.on{border-color:rgba(193,92,200,.5);background:rgba(193,92,240,.11)}
.lvSeg .se{font-size:16px;display:block;margin-bottom:3px}
.lvSeg .sn{font-size:11px;color:var(--tx2);display:block;line-height:1.4}
.lvSeg.on .sn{color:var(--tx)}
.lvSeg .sc{font-size:9px;color:var(--tx3);margin-top:3px;display:block}
.lvSeg.on .sc{color:var(--g)}
.lvTip{margin-top:11px;padding:11px 13px;border-radius:12px;font-size:12.5px;line-height:1.85;
  color:var(--tx2);background:var(--onCard);border-left:3px solid var(--g)}
.lvSteps{display:grid;gap:5px;margin-top:12px}
.lvStep{display:flex;align-items:center;gap:9px;font-size:12px;color:var(--tx3);padding:5px 9px;border-radius:9px}
.lvStep.done{color:var(--tx2)}
.lvStep.cur{color:var(--tx);background:rgba(193,92,240,.1);font-weight:600}
.lvStep .ln{width:20px;text-align:center;flex-shrink:0;font-variant-numeric:tabular-nums}
.lvStep .ld{width:13px;flex-shrink:0;opacity:.7}
.lvStep.done .ld{color:var(--g2);opacity:1}

/* ════════ 星河：GAL 游戏舞台 ════════ */
.glStage{position:relative;overflow:hidden;border-radius:18px;min-height:min(58vh,430px);
  display:flex;flex-direction:column;background:linear-gradient(180deg,var(--glBg1),var(--glBg2));transition:background 1.2s ease}
.glStars{position:absolute;inset:0;pointer-events:none;overflow:hidden}
.glStars i{position:absolute;width:2px;height:2px;border-radius:50%;background:#fff;opacity:.5;
  animation:glTwinkle var(--d,3s) ease-in-out infinite}
@keyframes glTwinkle{0%,100%{opacity:.12;transform:scale(.8)}50%{opacity:.85;transform:scale(1.3)}}
.glMoon{position:absolute;top:22px;right:26px;font-size:30px;opacity:.5;animation:glFloat 9s ease-in-out infinite}
@keyframes glFloat{0%,100%{transform:translateY(0) rotate(0)}50%{transform:translateY(-9px) rotate(4deg)}}
.glBox{position:relative;z-index:2;margin-top:auto;padding:20px 19px calc(18px + env(safe-area-inset-bottom,0px));
  background:linear-gradient(180deg,transparent,rgba(6,6,12,.86) 22%,rgba(6,6,12,.95))}
.glWho{display:inline-block;margin-bottom:8px;padding:4px 13px;border-radius:999px;font-size:12px;
  letter-spacing:.08em;background:linear-gradient(120deg,var(--g),var(--g2));color:#0b0b12;font-weight:700}
.glWho.dim{background:var(--onCard);color:var(--tx2);font-weight:500;border:1px solid var(--line)}
.glTxt{font-size:15px;line-height:2.05;color:var(--tx);min-height:78px;letter-spacing:.01em}
.glTapHint{margin-top:11px;font-size:11.5px;color:var(--tx3);text-align:right;animation:glPulse 1.7s ease-in-out infinite}
@keyframes glPulse{0%,100%{opacity:.4}50%{opacity:.9}}
.glStats{position:absolute;top:46px;left:8px;right:8px;z-index:4;display:flex;gap:5px;
  padding:6px 7px;border-radius:13px;background:rgba(6,6,12,.5);
  -webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);
  border:1px solid rgba(193,92,240,.22);overflow:hidden}
.glStat{flex:1 1 0;min-width:0;display:flex;flex-direction:column;gap:3px;align-items:center;color:#e8e6f2}
.glStat .ge{font-size:12px;line-height:1}
.glStat .gn{font-size:8.5px;opacity:.78;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
.glSb{width:100%;height:4px;border-radius:3px;background:rgba(255,255,255,.16);overflow:hidden}
.glSbIn{height:100%;border-radius:3px;transition:width .5s cubic-bezier(.2,.9,.3,1)}
.glStat .gv{font-size:9.5px;opacity:.85;font-variant-numeric:tabular-nums;line-height:1}
.glStat.up .gv{color:#5ce8a0}
.glStat.down .gv{color:#ff8a8a}
/* 结局临近提示 chip（顶栏内） */
.glEndHintChip{display:block;margin-top:4px;font-size:10px;color:#ffd9a8;cursor:pointer;
  background:rgba(255,180,90,.14);border:1px solid rgba(255,180,90,.32);
  padding:1px 7px;border-radius:9px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
/* 属性入口弹窗 */
.glAttrList{display:flex;flex-direction:column;gap:9px;margin:2px 0 4px}
.glAttrRow{display:flex;gap:10px;align-items:flex-start;padding:10px 12px;border-radius:12px;
  background:var(--onCard);border:1px solid var(--line)}
.glAttrRow .ae{font-size:19px;width:24px;text-align:center;flex:0 0 auto}
.glAttrRow .ai{flex:1;min-width:0}
.glAttrRow .an{font-weight:600;font-size:13.5px;color:var(--tx)}
.glAttrRow .ad{font-size:11.5px;color:var(--tx2);line-height:1.6;margin-top:2px}
.glAttrRow .aw{font-size:10.5px;color:#ff9a6b;margin-top:3px;line-height:1.5}
.glAttrRow .abar{height:5px;border-radius:3px;background:rgba(255,255,255,.14);margin-top:6px;overflow:hidden}
.glAttrRow .abarIn{height:100%;border-radius:3px;transition:width .5s cubic-bezier(.2,.9,.3,1)}
.glOpts{display:grid;gap:10px;margin-top:0}
.glOpt{display:flex;align-items:flex-start;gap:11px;padding:14px 15px;border-radius:14px;cursor:pointer;
  border:1px solid var(--line);background:var(--onCard);color:var(--tx);font-size:14px;line-height:1.7;
  text-align:left;font-family:inherit;transition:.18s;-webkit-tap-highlight-color:transparent}
.glOpt:active{transform:scale(.98)}
.glOpt:hover{border-color:var(--g2);background:rgba(77,226,200,.07)}
.glOpt .oe{font-size:19px;flex-shrink:0;margin-top:1px}
.glEndCard{padding:24px 20px;border-radius:18px;text-align:center;
  background:linear-gradient(160deg,rgba(155,107,255,.13),rgba(0,229,255,.05));border:1px solid rgba(155,107,255,.26)}
.glEndCat{font-size:11.5px;letter-spacing:.18em;color:var(--g2);margin-bottom:8px}
.glEndName{font-size:24px;font-weight:700;color:var(--tx);margin-bottom:5px;letter-spacing:.03em}
.glEndTag{display:inline-block;padding:4px 12px;border-radius:999px;font-size:11.5px;
  background:var(--onCard);border:1px solid var(--line);color:var(--tx2);margin-bottom:16px}
.glEndStory{font-size:14px;line-height:2.05;color:var(--tx2);text-align:left;margin:16px 0}
.glEndTip{padding:14px 16px;border-radius:13px;font-size:14px;line-height:1.95;text-align:left;
  background:var(--onCard);border-left:3px solid var(--g);color:var(--tx)}
.glGal{display:grid;grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:9px;margin-top:12px}
.glGalItem{padding:12px 8px;border-radius:13px;text-align:center;cursor:pointer;
  border:1px solid var(--line);background:var(--onCard);transition:.18s;-webkit-tap-highlight-color:transparent}
.glGalItem:active{transform:scale(.96)}
.glGalItem.locked{opacity:.42}
.glGalItem .ge{font-size:19px;display:block;margin-bottom:5px}
.glGalItem .gn{font-size:12px;color:var(--tx);display:block;line-height:1.4}
.glGalItem .gc{font-size:9.5px;color:var(--tx3);margin-top:4px;display:block}
.glGalItem{position:relative}
.glGalItem.hard{border-color:rgba(255,138,101,.5);background:linear-gradient(160deg,rgba(255,138,101,.12),rgba(155,107,255,.06))}
.glGalItem .gd{position:absolute;top:5px;right:6px;font-size:9px;line-height:1;padding:2px 5px;border-radius:999px;background:linear-gradient(135deg,#ff8a65,#ff5e7a);color:#fff;font-weight:700;letter-spacing:.04em}
.glGalItem .gd.lv1{background:linear-gradient(135deg,#5fd0a8,#36b3c4)}
.glGalItem .gd.lv2{background:linear-gradient(135deg,#6fb1ff,#5a7bff)}
.glGalItem .gd.lv3{background:linear-gradient(135deg,#ffb05f,#ff8a65)}
.glGalItem .gd.lv4{background:linear-gradient(135deg,#c08bff,#ff5e7a)}
.glStage{--glBg1:#1a1436;--glBg2:#2d1a3f}
html[data-skin="day"] .glStage{--glBg1:#cfe0f0;--glBg2:#f0e6d8}
html[data-skin="warm"] .glStage{--glBg1:#f5d9b8;--glBg2:#ffeedb}
html[data-skin="cold"] .glStage{--glBg1:#0f1822;--glBg2:#1a2634}
html[data-skin="mono"] .glStage{--glBg1:#171717;--glBg2:#242424}
html[data-skin="neon"] .glStage{--glBg1:#2a0f3d;--glBg2:#0f0620}
/* ════════ 大按钮（英雄区） ════════ */
.bigChoice{display:grid;gap:12px;margin-top:2px}
.bigBtn{display:flex;align-items:center;gap:14px;padding:18px 17px;border-radius:18px;cursor:pointer;
  border:1px solid var(--line);background:var(--onCard);text-align:left;font-family:inherit;
  transition:.2s;-webkit-tap-highlight-color:transparent;position:relative;overflow:hidden;width:100%}
.bigBtn:active{transform:scale(.98)}
.bigBtn .be{font-size:28px;flex-shrink:0;line-height:1}
.bigBtn .bt{flex:1;min-width:0}
.bigBtn .bt b{display:block;font-size:16.5px;color:var(--tx);font-weight:700;margin-bottom:4px;letter-spacing:.02em}
.bigBtn .bt span{font-size:12px;color:var(--tx2);line-height:1.7;display:block}
/* 第二个按钮给一个明确的深色底，两种皮肤下都看得清 */
#authView .bigBtn:not(.hero){background:rgba(28,28,42,.92);border-color:rgba(255,255,255,.16)}
#authView .bigBtn:not(.hero) .bt b{color:#fff}
#authView .bigBtn:not(.hero) .bt span{color:rgba(255,255,255,.78)}
#authView .bigBtn:not(.hero) .ba{color:rgba(255,255,255,.6)}
.bigBtn .ba{font-size:20px;color:var(--tx3);flex-shrink:0}
.bigBtn .bb{position:absolute;top:9px;right:11px;font-size:10px;padding:3px 8px;border-radius:999px;
  background:var(--onCard);border:1px solid var(--line);color:var(--tx2)}
.bigBtn.hero{border-color:rgba(193,92,240,.55);
  background:linear-gradient(120deg,rgba(120,50,180,.30),rgba(0,110,140,.26));
  box-shadow:0 6px 28px rgba(155,107,255,.26);padding:22px 18px}
.bigBtn.hero::before{content:'';position:absolute;inset:0;pointer-events:none;
  background:linear-gradient(100deg,transparent 32%,rgba(255,255,255,.10) 50%,transparent 68%);
  animation:glShine 3.8s ease-in-out infinite}
@keyframes glShine{0%,100%{transform:translateX(-105%)}55%{transform:translateX(105%)}}
.bigBtn.hero .be{font-size:34px;animation:glFloat 3.2s ease-in-out infinite;filter:drop-shadow(0 0 12px rgba(193,92,240,.5))}
.bigBtn.hero .bt b{font-size:18px;color:#fff}
.bigBtn.hero .bt span{color:rgba(255,255,255,.8)}
.bigBtn.hero .ba{color:rgba(255,255,255,.7)}
.bigBtn.hero .bb{background:rgba(0,0,0,.28);border-color:rgba(255,255,255,.25);color:#fff}
.bigBtn.hero:hover{border-color:var(--g);box-shadow:0 8px 34px rgba(155,107,255,.36)}
/* 极简模式的「切回来」 */
.healBack{position:fixed;left:50%;transform:translateX(-50%);top:calc(10px + env(safe-area-inset-top,0px));
  z-index:230;display:none;align-items:center;gap:7px;padding:8px 15px;border-radius:999px;
  font-size:12.5px;cursor:pointer;font-family:inherit;background:var(--card);border:1px solid var(--line);
  color:var(--tx2);box-shadow:0 6px 22px rgba(0,0,0,.4);-webkit-tap-highlight-color:transparent}
body.heal .healBack{display:flex}
.healBack:active{transform:translateX(-50%) scale(.95)}
.healBack b{color:var(--tx);font-weight:600}

/* ════════ 全屏选择页（登录后每天第一次弹） ════════ */
.entryPick{
  position:fixed!important;inset:0!important;top:0!important;left:0!important;
  right:0!important;bottom:0!important;
  width:100vw;height:100vh;height:100dvh;
  z-index:9000;display:none;
  background:linear-gradient(170deg,#0d0a18,#141028 40%,#0a0812);
  overflow:hidden;padding:0
}
.entryPick.on{display:block!important;animation:epIn .5s cubic-bezier(.2,.9,.3,1)}



/* ── 开局选人 ── */
.castView{position:fixed;inset:0;z-index:9400;overflow-y:auto;
  background:linear-gradient(170deg,#0d0a18,#141028 40%,#0a0812);padding:26px 18px calc(40px + env(safe-area-inset-bottom,0px))}
body.castOpen{overflow:hidden}
.castInner{max-width:520px;margin:0 auto}
.castBrand{font-size:10.5px;letter-spacing:.34em;color:rgba(255,255,255,.4);text-align:center;margin-bottom:14px}
.castH{font-size:24px;font-weight:800;text-align:center;margin:0 0 10px;
  background:linear-gradient(96deg,#8ff0d8,#7ec8ff,#b79cff,#ffb3d9);
  -webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;color:transparent}
.castLead{text-align:center;font-size:13px;line-height:1.85;color:rgba(255,255,255,.6);margin:0 0 20px}
.castLead b{color:rgba(255,255,255,.86);font-weight:700}
.castGrid{display:grid;gap:12px}
.castBtn{display:flex;align-items:center;gap:13px;padding:15px 14px;border-radius:16px;cursor:pointer;
  border:1px solid rgba(255,255,255,.14);background:rgba(22,20,38,.75);text-align:left;
  font-family:inherit;color:#fff;transition:.18s;-webkit-tap-highlight-color:transparent}
.castBtn:active{transform:scale(.98)}
.castBtn.on{border-color:rgba(155,107,255,.7);background:linear-gradient(120deg,rgba(120,50,180,.34),rgba(0,110,140,.28));
  box-shadow:0 8px 26px rgba(155,107,255,.24)}
.castAv{font-size:32px;width:44px;height:44px;flex-shrink:0;display:grid;place-items:center;border-radius:50%;
  background:linear-gradient(140deg,rgba(143,240,216,.28),rgba(183,156,255,.28));
  border:1.5px solid rgba(255,255,255,.28)}
.castInfo{flex:1;min-width:0}
.castInfo b{display:block;font-size:16px;font-weight:700;margin-bottom:3px}
.castInfo b i{font-style:normal;font-size:11.5px;font-weight:500;color:rgba(255,255,255,.5);margin-left:8px}
.castSkill{display:inline-block;font-size:11.5px;color:#8ff0d8;margin-bottom:4px}
.castDesc{display:block;font-size:12px;line-height:1.7;color:rgba(255,255,255,.62)}
.castGo{font-size:12px;color:rgba(255,255,255,.5);flex-shrink:0}
.castBtn.on .castGo{color:rgba(255,255,255,.85)}
.castPick{margin-top:16px}
.castHint{text-align:center;font-size:13px;color:rgba(255,255,255,.5);padding:22px 0}
.castChosen{border:1px solid rgba(255,255,255,.14);border-radius:16px;padding:16px;background:rgba(22,20,38,.7)}
.castChosenHead{font-size:17px;font-weight:700;margin-bottom:8px}
.castChosenHead span{font-size:11.5px;font-weight:500;color:rgba(255,255,255,.5);margin-left:8px}
.castChosen blockquote{margin:0 0 14px;padding-left:12px;border-left:2px solid rgba(155,107,255,.55);
  font-size:13.5px;line-height:1.9;color:rgba(255,255,255,.8)}
/* 返回 */
.castBack{position:sticky;top:0;z-index:10;display:inline-flex;align-items:center;gap:6px;
  margin:0 0 14px;padding:7px 15px;border-radius:99px;cursor:pointer;font-family:inherit;
  font-size:13px;font-weight:600;color:rgba(255,255,255,.72);
  background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.15);
  -webkit-tap-highlight-color:transparent}
.castBack:active{transform:scale(.96)}

/* 没学过专业 → 小标记 */
.castNo{display:inline-block;font-style:normal;font-size:10.5px;font-weight:600;
  padding:2px 8px;border-radius:99px;margin-left:8px;vertical-align:2px;
  background:rgba(143,240,216,.16);border:1px solid rgba(143,240,216,.4);color:#8ff0d8;
  letter-spacing:.04em}
.castInfo b i{font-style:normal;font-size:11.5px;font-weight:500;color:rgba(255,255,255,.5);margin-left:8px}

/* 天赋说明（金句） */
.castGift{margin:0 0 12px;padding:11px 13px;border-radius:12px;
  background:linear-gradient(120deg,rgba(143,240,216,.12),rgba(183,156,255,.12));
  border:1px solid rgba(143,240,216,.26);
  font-size:12.5px;line-height:1.85;color:rgba(255,255,255,.85)}

/* 童年不幸 —— 这一栏要压得住，但不能显得卖惨 */
.castPast{margin:0 0 14px;padding:13px 14px;border-radius:13px;
  background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.1);
  border-left:3px solid rgba(255,143,143,.55)}
.castPastTag{display:inline-block;font-size:10.5px;font-weight:600;padding:3px 9px;border-radius:99px;
  background:rgba(255,143,143,.14);border:1px solid rgba(255,143,143,.36);color:#ffb3b3;
  letter-spacing:.06em;margin-bottom:10px}
.castPastL{font-size:12.5px;line-height:1.9;color:rgba(255,255,255,.68);margin-bottom:5px}
.castPastL:last-child{color:rgba(255,255,255,.88);margin-bottom:0;padding-top:5px;
  border-top:1px dashed rgba(255,255,255,.14)}

.castLines{display:grid;gap:8px}
.castLine{font-size:12.5px;line-height:1.7;color:rgba(255,255,255,.62);
  padding:9px 11px;border-radius:11px;background:rgba(255,255,255,.05)}
.castLine b{display:block;font-size:12px;color:#8ff0d8;margin-bottom:3px}

/* 弹窗右上角关闭（手机上尤其需要） */
.modalX{position:absolute;top:12px;right:12px;width:32px;height:32px;border-radius:50%;
  border:1px solid var(--line);background:var(--onCard);color:var(--tx2);font-size:15px;
  cursor:pointer;z-index:5;line-height:1;display:grid;place-items:center;
  -webkit-tap-highlight-color:transparent}
.modalX:active{transform:scale(.92)}
.modalBox{position:relative!important}





/* ══ 设置面板（#setPane）必须真的有高度，否则滚动锚点永远定位失败 ══ */
#setPane{display:block}
#setPane.hidden{display:block!important}   /* 打开设置时不让它当隐藏盒 */
#setPane.hidden>*{display:revert}
.setPaneHint{font-size:12px;color:var(--tx3);margin:0 0 12px}







/* ══════ ① 工具栏：分两段，信息条在上，按钮条在下 ══════ */
.glTopBar{display:block!important;padding:0!important;position:relative;z-index:6}
/* ①-a 信息条：独占一行，只放"已做 N 次选择"这类副信息 */
.glTopInfo{display:flex!important;align-items:center!important;gap:8px;
  padding:9px 13px 7px!important;min-height:0!important;
  border-bottom:1px solid rgba(255,255,255,.07)}
.glTopInfo .gtiE{font-size:15px;line-height:1;flex-shrink:0;opacity:.85}
.glTopInfo>div{min-width:0;display:flex;flex-direction:column;gap:1px}
.glTopInfo b{font-size:13.5px!important;font-weight:700;color:rgba(255,255,255,.94);
  letter-spacing:.03em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
/* 章节名在正文左侧已竖排显示，这里不再重复 */
.glTopInfo b{display:none!important}
.glTopInfo i{font-style:normal;font-size:11px;color:rgba(255,255,255,.55);letter-spacing:.04em}

/* ①-b 按钮条：横向滚动，绝不换行 */
.glTopBt{display:flex!important;align-items:center!important;gap:5px;
  padding:7px 10px;overflow-x:auto;overflow-y:hidden;
  -webkit-overflow-scrolling:touch;scrollbar-width:none;
  flex-wrap:nowrap!important;white-space:nowrap}
.glTopBt::-webkit-scrollbar{display:none}
.glTopBt .gtb{flex:0 0 auto!important;white-space:nowrap;min-width:0}
.glTopBt .gtb span{display:none}
@media (min-width:560px){.glTopBt .gtb span{display:inline}}

/* ══════ ① 竖排章节条：贴在正文左侧，不碰工具栏 ══════ */
.glBox{position:relative}
.glChT{
  display:none;
  position:absolute!important;left:0!important;top:0!important;bottom:auto!important;
  writing-mode:vertical-rl!important;text-orientation:upright!important;
  width:auto!important;min-width:16px!important;height:auto!important;
  max-height:min(46vh,240px);
  padding:8px 4px!important;margin:0!important;
  border-radius:9px;
  font-size:11px!important;line-height:1.05!important;letter-spacing:.1em!important;
  color:rgba(255,255,255,.5)!important;
  background:rgba(0,0,0,.3);border:1px solid rgba(255,255,255,.1);
  backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px);
  z-index:4;pointer-events:none;
  overflow:hidden;
  animation:glChIn .3s ease}
.glChT.show{display:block!important;opacity:1!important;transform:none!important}
.glChT.hideCh{display:none!important}
@keyframes glChIn{from{opacity:0;transform:translateX(-10px)}to{opacity:1;transform:none}}
/* 正文让开左侧 24px */
.glBox.hasChT{padding-left:34px!important;transition:padding .25s}

/* ══════ ② 头像：锁死尺寸，绝不被 flex 拉伸 ══════ */
.glWho{display:flex!important;align-items:center!important;gap:10px;
  margin:0 0 12px!important;flex-wrap:nowrap!important;min-height:34px}
.glWho.dim{display:none!important}
.glAv{position:relative!important;display:grid!important;place-items:center;
  width:34px!important;height:34px!important;min-width:34px!important;min-height:34px!important;
  max-width:34px!important;max-height:34px!important;
  flex:0 0 34px!important;align-self:center!important;
  border-radius:50%;overflow:hidden;
  background:radial-gradient(circle at 34% 28%,var(--av1,#dff3ff),var(--av2,#6ba9d6));
  box-shadow:0 2px 10px rgba(0,0,0,.28),0 0 0 1.5px rgba(255,255,255,.22) inset}
.glAv::before{content:attr(data-an)!important;position:absolute!important;inset:0!important;
  display:grid!important;place-items:center;font-size:17px!important;line-height:1!important;
  filter:drop-shadow(0 1px 2px rgba(0,0,0,.35))}
.glAv::after{content:attr(data-ch)!important;position:absolute!important;inset:0!important;
  display:grid!important;place-items:center;font-size:14px!important;font-weight:800;
  color:#fff;line-height:1!important;text-shadow:0 1px 3px rgba(0,0,0,.45)}
.glWhoName{font-size:13.5px!important;font-weight:700;color:rgba(255,255,255,.92);
  letter-spacing:.03em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}

/* ══════ ③ 选项按钮：不被压扁 ══════ */
.glOpt{min-height:52px!important;flex-shrink:0!important}
.glOpt,.glOpt button{min-height:52px}
#glOpts{display:grid;gap:10px!important;grid-auto-rows:minmax(52px,auto)}
.glOptsTog{min-height:42px!important;flex-shrink:0!important}

/* ══════ ① 选项折叠按钮（死锁修复：样式独立，不依赖 JS 跑过） ══════ */
.glOptsTog{display:flex!important;align-items:center;justify-content:center;gap:8px;
  width:100%;padding:10px 14px;margin-bottom:9px;border-radius:12px;cursor:pointer;
  font-family:inherit;font-size:13px;font-weight:700;color:var(--tx2);
  background:var(--onCard);border:1px solid var(--line);
  -webkit-tap-highlight-color:transparent;transition:.18s}
.glOptsTog:active{transform:scale(.98)}
.glOptsTog .togIco{font-size:10px;transition:transform .22s;display:inline-block}
.glOptsWrap.fold .glOptsTog{background:rgba(155,107,255,.13);border-color:rgba(155,107,255,.4);color:var(--tx)}
.glOptsWrap.fold .glOptsTog .togIco{transform:rotate(-90deg)}
/* 折叠时把选项区彻底收掉（用 height 而不是 display，动画更好） */
.glOptsWrap.fold #glOpts{display:none!important}
#glOpts{display:grid;gap:9px;animation:glOptsIn .22s ease}
@keyframes glOptsIn{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}


/* ══════ ② 章节标题：竖排，左侧一条，正文让开 ══════ */
.glBox{position:relative;padding-left:0!important}
.glChT{
  display:none;   /* 默认不占位，出章节时才显示 */
  writing-mode:vertical-rl!important;text-orientation:upright!important;
  position:absolute!important;left:0!important;top:0!important;
  height:auto!important;min-height:60px;max-height:min(52vh,300px);
  width:auto!important;min-width:15px;
  padding:7px 4px!important;border-radius:9px;
  margin:0!important;
  font-size:11px!important;line-height:1.1!important;letter-spacing:.12em!important;
  color:rgba(255,255,255,.55)!important;
  background:rgba(0,0,0,.26);border:1px solid rgba(255,255,255,.1);
  backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px);
  z-index:4;pointer-events:none;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
  animation:glChIn .3s ease}
.glChT.show{display:block!important}
@keyframes glChIn{from{opacity:0;transform:translateX(-8px)}to{opacity:1;transform:none}}
/* 显示时正文整体右移，绝不重叠 */
.glBox.hasChT{padding-left:26px!important}
.glChT.hideCh{opacity:0}

/* ══════ ② 章节标题：竖排放右侧，绝不压住头像/图标 ══════ */
.glBox{position:relative}
#glChT{
  position:absolute!important;left:2px;top:0;
  writing-mode:vertical-rl!important;text-orientation:upright!important;
  font-size:11px!important;line-height:1.15!important;letter-spacing:.14em!important;
  color:rgba(255,255,255,.5)!important;max-height:min(58vh,340px);
  padding:6px 5px;border-radius:9px;margin:0!important;
  background:rgba(0,0,0,.22);border:1px solid rgba(255,255,255,.1);
  backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px);
  z-index:3;pointer-events:none;
  overflow:hidden;text-overflow:ellipsis;
  transition:opacity .25s}
#glChT.hideCh{opacity:0}
/* 有标题时，正文往右让一点 */
#glChT~#glWho,#glChT~#glTxt{margin-left:26px}

/* ══════ ③ 头像：把动物/首字真正画出来 ══════ */
.glAv{position:relative;display:grid;place-items:center;
  width:34px;height:34px;border-radius:50%;flex-shrink:0;
  background:radial-gradient(circle at 34% 28%,var(--av1,#dff3ff),var(--av2,#6ba9d6));
  box-shadow:0 2px 10px rgba(0,0,0,.28),0 0 0 1.5px rgba(255,255,255,.22) inset;
  overflow:hidden;font-family:inherit}
.glAv::before{content:attr(data-an);position:absolute;inset:0;
  display:grid;place-items:center;font-size:18px;line-height:1;
  filter:drop-shadow(0 1px 2px rgba(0,0,0,.3))}
.glAv::after{content:attr(data-ch);position:absolute;inset:0;
  display:grid;place-items:center;font-size:15px;font-weight:800;color:#fff;line-height:1;
  text-shadow:0 1px 3px rgba(0,0,0,.4)}
.glWho{display:flex;align-items:center;gap:10px;margin-bottom:11px}
.glWho.dim{display:none!important}
.glWhoName{font-size:13.5px;font-weight:700;color:rgba(255,255,255,.9);letter-spacing:.03em}

/* ══════ ④ 游戏场景背景（5 张实拍） ══════ */
/* 场景选择 */
.scGrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(96px,1fr));gap:10px;margin-bottom:13px}
.scCell{position:relative;padding:0;cursor:pointer;border-radius:13px;overflow:hidden;
  border:2px solid var(--line);background:var(--onCard);
  -webkit-tap-highlight-color:transparent;transition:.16s}
.scCell:active{transform:scale(.97)}
.scCell.on{border-color:var(--g);box-shadow:0 0 0 3px rgba(155,107,255,.18)}
.scPrev{display:block;width:100%;height:74px;background-size:cover;background-position:center;
  border-bottom:1px solid rgba(255,255,255,.1)}
.scN{display:block;padding:6px 8px;font-size:11.5px;font-weight:700;color:var(--tx);text-align:left}
.scTag{display:block;padding:0 8px 7px;font-size:9.5px;color:var(--tx3);text-align:left}
.scCur{margin:0 0 13px;padding:11px 13px;border-radius:12px;font-size:13px;line-height:1.7;
  background:linear-gradient(120deg,rgba(143,240,216,.1),rgba(183,156,255,.1));
  border:1px solid rgba(143,240,216,.24);color:var(--tx)}
.scCur b{color:var(--g2)}

.glStageBg{position:absolute;inset:0;z-index:0;pointer-events:none;
  background-size:cover;background-position:center;background-repeat:no-repeat;
  opacity:0;transition:opacity .5s ease;
  filter:brightness(1.16) saturate(1.08)}
.glStageBg.on{opacity:1}
/* 压暗层调轻：以前最重到 .8，把月亮房间压成了纯黑块，看着像「背景没变」。
   现在只在上/下留一点点压暗保证文字能读，中间基本不压，照片一眼就看得出来。 */
.glStageBg::after{content:'';position:absolute;inset:0;
  background:linear-gradient(180deg,rgba(6,4,16,.20) 0%,rgba(6,4,16,.02) 26%,rgba(6,4,16,.16) 68%,rgba(6,4,16,.52) 100%)}
.glBox,.glStars,.glMoon{position:relative;z-index:2}

/* ══════ ① 工具栏：9 个按钮必须排得下，不能溢出压到标题 ══════ */
.glTopBar{display:flex;align-items:center;gap:5px;padding:8px 10px;
  flex-wrap:nowrap!important;overflow-x:auto;overflow-y:hidden;
  -webkit-overflow-scrolling:touch;scrollbar-width:none;
  position:relative;z-index:6;min-height:44px}
.glTopBar::-webkit-scrollbar{display:none}
.glTopBar .gtb{flex:0 0 auto;white-space:nowrap;min-width:0}
.glTopBar .gtb span{display:none}          /* 只留图标，文字省掉就不会挤 */
@media (min-width:520px){ .glTopBar .gtb span{display:inline} }

/* 章节标题：跟工具栏拉开距离，绝不被压 */
#glChT{position:relative;z-index:2;margin-bottom:12px!important;
  padding:0 2px;line-height:1.5;word-break:break-all}

/* ══════ ② 选项：可展开/收缩 ══════ */
.glOptsWrap{margin-top:0}
#glOpts:not(:empty){margin-top:14px}
.glOptsTog{display:flex;align-items:center;justify-content:center;gap:7px;
  width:100%;padding:9px 14px;margin-bottom:9px;border-radius:12px;cursor:pointer;
  font-family:inherit;font-size:13px;font-weight:600;color:var(--tx2);
  background:var(--onCard);border:1px solid var(--line);
  -webkit-tap-highlight-color:transparent}
.glOptsTog:active{transform:scale(.98)}
.glOptsTog .togIco{font-size:11px;transition:transform .22s}
.glOptsWrap.fold .glOptsTog .togIco{transform:rotate(-90deg)}
.glOptsWrap.fold #glOpts{display:none}
#glOpts{display:grid;gap:9px;animation:glOptsIn .22s ease}
@keyframes glOptsIn{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}

/* ══════ ④ 文字速度面板：卡片式 + 选中变色 ══════ */
.glSpdBox{display:grid;grid-template-columns:repeat(auto-fit,minmax(88px,1fr));gap:9px;margin-bottom:14px}
.glSpd{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;
  padding:12px 8px;border-radius:13px;cursor:pointer;font-family:inherit;
  font-size:14px;font-weight:700;color:var(--tx2);
  background:var(--onCard);border:1.5px solid var(--line);
  transition:.16s;-webkit-tap-highlight-color:transparent}
.glSpd small{font-size:10.5px;font-weight:500;color:var(--tx3)}
.glSpd:active{transform:scale(.96)}
.glSpd:hover{border-color:rgba(155,107,255,.45)}
.glSpd.on{background:linear-gradient(140deg,var(--g),var(--g2));color:#fff;
  border-color:transparent;box-shadow:0 5px 16px rgba(155,107,255,.34)}
.glSpd.on small{color:rgba(255,255,255,.82)}
.glSpdCur{margin:0 0 14px;padding:11px 13px;border-radius:12px;font-size:13px;line-height:1.7;
  background:linear-gradient(120deg,rgba(143,240,216,.1),rgba(183,156,255,.1));
  border:1px solid rgba(143,240,216,.24);color:var(--tx)}
.glSpdCur b{color:var(--g2)}

/* ══════ ⑦ 章节重读 ══════ */
.rdChap{display:flex;align-items:center;gap:11px;padding:12px 13px;margin-bottom:9px;
  border-radius:13px;cursor:pointer;border:1px solid var(--line);background:var(--onCard);
  -webkit-tap-highlight-color:transparent}
.rdChap:active{transform:scale(.985)}
.rdChap.on{border-color:var(--g);background:linear-gradient(140deg,rgba(155,107,255,.14),rgba(77,226,200,.08))}
.rdChap .rdN{font-size:14px;font-weight:700;color:var(--tx)}
.rdChap .rdM{font-size:11px;color:var(--tx3);margin-top:2px}
.rdChap .rdC{margin-left:auto;font-size:11px;color:var(--g2);flex-shrink:0}
.rdLine{padding:10px 12px;border-radius:11px;margin-bottom:7px;
  background:var(--onCard);border-left:2.5px solid var(--line)}
.rdLine.who{border-left-color:var(--g)}
.rdLine.opt{border-left-color:var(--g2);background:linear-gradient(120deg,rgba(77,226,200,.1),transparent)}
.rdW{font-size:11px;color:var(--g);font-weight:600;margin-bottom:3px}
.rdT{font-size:13px;line-height:1.8;color:var(--tx)}
.rdBadge{display:inline-block;font-size:10px;padding:2px 7px;border-radius:99px;margin-top:5px;
  background:rgba(77,226,200,.18);border:1px solid rgba(77,226,200,.4);color:var(--g2)}

/* ══ ④ 背景选择 ══ */
.bgGrid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}
.bgCell{position:relative;display:flex;flex-direction:column;align-items:flex-start;gap:6px;
  padding:9px;border-radius:13px;cursor:pointer;font-family:inherit;text-align:left;
  border:1.5px solid var(--line);background:var(--onCard);transition:.16s;
  -webkit-tap-highlight-color:transparent}
.bgCell:active{transform:scale(.97)}
.bgCell.on{border-color:var(--g);box-shadow:0 0 0 3px rgba(193,92,240,.16)}
.bgCell.lock{opacity:.5;cursor:not-allowed}
.bgPrev{display:block;width:100%;height:44px;border-radius:9px;border:1px solid rgba(255,255,255,.12)}
.bgN{font-size:13px;font-weight:700;color:var(--tx)}
.bgT{font-size:10.5px;color:var(--tx3)}
.bgLock{position:absolute;top:14px;right:14px;font-size:15px}
html[data-bglight="1"] body{color:#241f19}

/* ══ ① 信封：不是灰圆圈，是一枚会呼吸的小信封徽章 ══ */


.mailBtn.v2{
  width:44px;height:44px;border-radius:15px;
  background:linear-gradient(145deg,rgba(255,236,250,.16),rgba(183,156,255,.13));
  border:1.5px solid rgba(255,182,224,.42);
  box-shadow:0 5px 18px rgba(180,110,220,.22),0 0 0 4px rgba(255,182,224,.05);
  position:relative}
.mailBtn.v2 .mbIcon{
  font-size:20px;color:#ffd6f0;
  text-shadow:0 0 12px rgba(255,150,220,.6);
  animation:mailFloat 3.2s ease-in-out infinite}
@keyframes mailFloat{0%,100%{transform:translateY(0) rotate(-2deg)}50%{transform:translateY(-2.5px) rotate(2deg)}}
.mailBtn.v2:hover{
  background:linear-gradient(145deg,rgba(255,236,250,.26),rgba(183,156,255,.2));
  border-color:rgba(255,182,224,.72);
  box-shadow:0 8px 24px rgba(180,110,220,.34),0 0 0 5px rgba(255,182,224,.09)}
/* 未读：信封轻轻晃动 + 右上角小心心 */
.mailBtn.v2.hasNew{animation:mailShake 3.4s ease-in-out infinite}
@keyframes mailShake{0%,88%,100%{transform:rotate(0)}90%{transform:rotate(-7deg)}94%{transform:rotate(6deg)}97%{transform:rotate(-3deg)}}
.mailBtn.v2.hasNew .mbDot{
  display:block;position:absolute;top:-3px;right:-3px;
  min-width:17px;height:17px;padding:0 4px;border-radius:99px;
  background:linear-gradient(135deg,#ff8fc8,#ff5fa2);
  border:1.5px solid rgba(255,255,255,.9);
  box-shadow:0 2px 8px rgba(255,95,162,.6);
  font-size:9.5px;font-weight:700;color:#fff;line-height:14px;text-align:center}
.mailBtn.v2.hasNew .mbDot::after{content:'✉';position:absolute;inset:0;display:grid;place-items:center;opacity:0}
/* 已读：安静下来 */
.mailBtn.v2:not(.hasNew){opacity:.62}
.mailBtn.v2:not(.hasNew):hover{opacity:1}
html[data-skin="day"] .mailBtn.v2,html[data-skin="warm"] .mailBtn.v2{
  background:linear-gradient(145deg,rgba(255,255,255,.9),rgba(250,235,248,.9));
  border-color:rgba(200,110,180,.42)}
html[data-skin="day"] .mailBtn.v2 .mbIcon,html[data-skin="warm"] .mailBtn.v2 .mbIcon{color:#d1478f;text-shadow:none}

/* ══ 主页面头部 · 副标题 + 玩个故事 ══ */
.subWrap{display:flex;flex-wrap:wrap;align-items:center;gap:11px;margin:2px 0 0}

/* 「你现在不是在往上走，你是在攒火。」 */
.sub{margin:0;flex:1 1 220px;min-width:0;font-size:14px;line-height:1.75;
  color:var(--tx2);letter-spacing:.02em}
.sub .hl{
  background:linear-gradient(96deg,var(--g2),var(--g));
  -webkit-background-clip:text;background-clip:text;
  -webkit-text-fill-color:transparent;color:transparent;font-weight:600}
.sub .mo{font-style:normal;color:var(--tx2)}

/* 玩个故事：做成一张有分量的小卡，不再是默认白按钮 */
.subGame{
  flex:0 0 auto;display:inline-flex;align-items:center;gap:11px;
  padding:11px 15px 11px 13px;margin:0;cursor:pointer;text-align:left;
  font-family:inherit;color:#fff;
  border-radius:15px;border:1.5px solid rgba(168,110,255,.46);
  background:linear-gradient(135deg,rgba(48,32,88,.92),rgba(20,30,58,.92));
  box-shadow:0 8px 26px rgba(96,54,180,.28),0 1px 0 rgba(255,255,255,.07) inset;
  transition:transform .18s cubic-bezier(.2,.9,.3,1),box-shadow .18s,border-color .18s;
  -webkit-tap-highlight-color:transparent;position:relative;overflow:hidden}
.subGame:active{transform:scale(.972)}
.subGame:hover{border-color:rgba(193,92,240,.72);box-shadow:0 12px 34px rgba(110,60,200,.36)}

/* 手柄图标 */
.subGame .sge{font-size:22px;line-height:1;flex-shrink:0;
  filter:drop-shadow(0 0 10px rgba(193,92,240,.55));
  animation:subGameFloat 3.6s ease-in-out infinite}
@keyframes subGameFloat{0%,100%{transform:translateY(0)}50%{transform:translateY(-3px)}}

/* 文字块 */
.subGame .sgt{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px}
.subGame .sgt b{font-size:15px;font-weight:800;letter-spacing:.05em;line-height:1.2;
  color:#fff}
.subGame .sgt i{font-style:normal;font-size:11px;line-height:1.5;letter-spacing:.04em;
  color:rgba(255,255,255,.6);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

/* 右侧箭头 */
.subGame .sga{font-size:19px;line-height:1;flex-shrink:0;color:rgba(255,255,255,.55)}

/* 亮面扫光 */
.subGame::after{content:'';position:absolute;inset:0;pointer-events:none;
  background:linear-gradient(100deg,transparent 32%,rgba(255,255,255,.11) 50%,transparent 68%);
  animation:glShine 4.6s ease-in-out infinite}

/* 亮色皮肤下也要看得清 */
html[data-skin="day"] .subGame,html[data-skin="warm"] .subGame{
  background:linear-gradient(135deg,rgba(255,255,255,.94),rgba(248,240,252,.94));
  border-color:rgba(150,90,220,.4);
  box-shadow:0 6px 22px rgba(90,50,150,.14)}
html[data-skin="day"] .subGame .sgt b,html[data-skin="warm"] .subGame .sgt b{color:#3a2a48}
html[data-skin="day"] .subGame .sgt i,html[data-skin="warm"] .subGame .sgt i{color:rgba(70,50,90,.62)}
html[data-skin="day"] .subGame .sga,html[data-skin="warm"] .subGame .sga{color:rgba(70,50,90,.5)}
html[data-skin="cold"] .subGame,html[data-skin="mono"] .subGame{
  background:linear-gradient(135deg,rgba(24,32,48,.94),rgba(16,22,34,.94));
  border-color:rgba(110,170,220,.4)}
html[data-skin="mono"] .subGame{
  background:linear-gradient(135deg,rgba(28,28,28,.94),rgba(18,18,18,.94));
  border-color:rgba(200,200,200,.32)}

/* 极简模式：头部只留副标题，卡片收掉（避免和浮层抢位置） */
body.heal .subGame{display:none!important}
body.heal .subWrap{margin:0}

/* 窄屏：让卡片占满一行 */
@media (max-width:400px){
  .subGame{flex:1 1 100%;padding:12px 15px}
  .sub{flex:1 1 100%}
}

/* ── 标题行 + 信封入口 ── */
.helloRow{display:flex;align-items:center;gap:11px;margin:0 0 4px}
.helloRow .helloRowSp{flex:1;min-width:0}
.helloRow #hello{flex:1;min-width:0;
  font-size:clamp(22px,5.5vw,30px)!important;font-weight:800!important;
  letter-spacing:-.02em;line-height:1.26!important;margin:0!important;
  background:linear-gradient(96deg,#ffffff 0%,#ffe6f6 38%,#dcc9ff 70%,#c2f5e8 100%);
  background-size:200% 100%;
  -webkit-background-clip:text;background-clip:text;
  -webkit-text-fill-color:transparent;color:transparent;
  animation:helloFlow 6s linear infinite;
  filter:drop-shadow(0 2px 12px rgba(193,92,240,.32))}
@keyframes helloFlow{0%{background-position:0% 50%}100%{background-position:200% 50%}}
/* 问候后面那条小字：稍微提一点存在感，配合问候不抢标题 */
.helloRow + .subWrap .sub{font-size:14.5px!important}

.mailBtn{position:relative;flex-shrink:0;width:38px;height:38px;border-radius:50%;
  display:grid;place-items:center;cursor:pointer;font-family:inherit;
  background:rgba(255,255,255,.07);border:1px solid rgba(255,255,255,.16);
  -webkit-tap-highlight-color:transparent;transition:.18s}
.mailBtn:active{transform:scale(.9)}
.mailBtn .mbIcon{font-size:17px;line-height:1;color:rgba(255,255,255,.82);
  text-shadow:0 1px 5px rgba(0,0,0,.3)}
.mailBtn:hover{background:rgba(255,255,255,.12);border-color:rgba(255,255,255,.26)}
/* 未读红点 */
.mailBtn .mbDot{position:absolute;top:6px;right:6px;width:7px;height:7px;border-radius:50%;
  background:#ff7a7a;box-shadow:0 0 8px rgba(255,110,110,.85);display:none}
.mailBtn.hasNew .mbDot{display:block;animation:mbPulse 2.2s ease-in-out infinite}
@keyframes mbPulse{0%,100%{transform:scale(1);opacity:1}50%{transform:scale(1.32);opacity:.72}}
/* 极简模式下收起来 */
body.heal .mailBtn{display:none}

/* ══════ 选择页 · 视觉重做 ══════ */
/* ── 顶部品牌行：字距拉开、字重加重（原来太挤） ── */
.epBrand{
  font-size:10px!important;
  letter-spacing:.52em!important;      /* 原 .42em → 再拉开 */
  text-indent:.52em;                   /* 视觉居中：抵消末字的额外字距 */
  font-weight:600!important;
  color:rgba(255,255,255,.5)!important;
  margin-bottom:28px!important;
  line-height:1!important;
  display:block!important;text-align:center!important}

/* ── 问候语：更粗、更亮、字距舒服 ── */
.epTitle{
  font-size:33px!important;
  font-weight:900!important;
  letter-spacing:.06em!important;
  line-height:1.28!important;
  margin-bottom:12px!important;
  filter:drop-shadow(0 4px 30px rgba(120,200,255,.3))!important}

/* ── 「你现在不是在往上走，你是在攒火。」── */
.epSubline{
  font-size:15px!important;
  font-weight:500!important;
  line-height:1.7!important;
  letter-spacing:.045em!important;
  margin:0 0 34px!important;
  color:rgba(255,255,255,.66)!important;
  text-align:center!important}
.epSubline em{font-weight:700!important;letter-spacing:.05em!important}

/* ── 玩个故事卡片：与设计稿一致 ── */
.epBtns .epBtn.hero{
  border-radius:22px!important;
  border:1.5px solid rgba(168,110,255,.42)!important;
  background:linear-gradient(135deg,rgba(38,26,72,.9),rgba(16,26,52,.9))!important;
  box-shadow:0 14px 44px rgba(110,60,200,.28),0 1px 0 rgba(255,255,255,.08) inset!important}
.epBtn.hero:active{transform:scale(.985)!important}
.epHeroBody .epSub{
  font-size:12.5px!important;letter-spacing:.04em!important;
  color:rgba(255,255,255,.58)!important;line-height:1.75!important}
.epHeroTitle b{
  font-size:21px!important;font-weight:800!important;letter-spacing:.05em!important}
.epTags i{
  font-size:10px!important;letter-spacing:.05em!important;
  padding:5px 11px!important;background:rgba(255,255,255,.07)!important;
  border-color:rgba(255,255,255,.12)!important}

.epInner{max-width:430px}
.epBrand{font-size:11px;letter-spacing:.42em;margin-bottom:26px;position:relative;z-index:2}

/* 标题：更大更有呼吸感 */
.epTitle{font-size:31px!important;margin-bottom:10px!important;letter-spacing:.02em!important;
  text-shadow:none!important;position:relative;z-index:2}
.epSubline{font-size:14.5px!important;margin:0 0 30px!important;position:relative;z-index:2}
.epSubline em{font-weight:600}

.epBtns{display:grid;gap:15px;position:relative;z-index:2}

/* 主卡：整块都大，都发光 */
.epBtn.hero{
  display:block!important;padding:0!important;border-radius:24px!important;overflow:hidden!important;
  border:1px solid rgba(193,92,240,.4)!important;
  background:rgba(20,17,36,.8)!important;
  box-shadow:0 18px 60px rgba(120,70,220,.3),0 0 0 1px rgba(255,255,255,.05) inset!important;
  transition:transform .22s cubic-bezier(.2,.9,.3,1),box-shadow .22s!important;
  -webkit-tap-highlight-color:transparent;
  text-align:left;width:100%}
.epBtn.hero:active{transform:scale(.978)}
.epBtn.hero::before{content:none!important}

/* 封面 */
.epCover{position:relative;display:block;height:132px;overflow:hidden;
  background:linear-gradient(135deg,#1b1140 0%,#2d1b5e 38%,#0f2a4a 72%,#0a1a2e 100%)}
.epCoverGlow{position:absolute;inset:0;
  background:
    radial-gradient(90px 60px at 22% 78%,rgba(155,107,255,.5),transparent 70%),
    radial-gradient(70px 50px at 74% 26%,rgba(126,200,255,.34),transparent 70%),
    radial-gradient(60px 44px at 52% 88%,rgba(255,140,200,.24),transparent 70%);
  animation:epGlowMove 7s ease-in-out infinite alternate}
@keyframes epGlowMove{from{opacity:.72;transform:scale(1)}to{opacity:1;transform:scale(1.09) translateY(-4px)}}
.epCoverStars{position:absolute;inset:0;
  background-image:
    radial-gradient(1.4px 1.4px at 12% 28%,rgba(255,255,255,.9),transparent),
    radial-gradient(1.2px 1.2px at 28% 62%,rgba(255,255,255,.72),transparent),
    radial-gradient(1.6px 1.6px at 44% 18%,rgba(255,255,255,.86),transparent),
    radial-gradient(1.1px 1.1px at 62% 48%,rgba(255,255,255,.66),transparent),
    radial-gradient(1.5px 1.5px at 78% 22%,rgba(255,255,255,.8),transparent),
    radial-gradient(1.2px 1.2px at 88% 62%,rgba(255,255,255,.7),transparent),
    radial-gradient(1.3px 1.3px at 36% 84%,rgba(255,255,255,.62),transparent),
    radial-gradient(1.1px 1.1px at 68% 82%,rgba(255,255,255,.58),transparent);
  animation:epStarTwinkle 4.2s ease-in-out infinite}
@keyframes epStarTwinkle{0%,100%{opacity:.6}50%{opacity:1}}
.epMoon{position:absolute;right:34px;top:24px;width:46px;height:46px;border-radius:50%;
  background:radial-gradient(circle at 36% 32%,#fff6d8,#ffd9a8 62%,#f0b878);
  box-shadow:0 0 34px rgba(255,215,150,.6),0 0 74px rgba(255,190,120,.3)}
.epMoon::after{content:'';position:absolute;width:38px;height:38px;border-radius:50%;
  left:-11px;top:-5px;background:#1a1240;opacity:.92}
.epCoverTxt{position:absolute;left:20px;bottom:14px;z-index:2}
.epCoverTxt b{display:block;font-size:17px;font-weight:800;color:#fff;letter-spacing:.03em;
  text-shadow:0 2px 14px rgba(0,0,0,.5)}
.epCoverTxt i{display:block;font-style:normal;font-size:11.5px;color:rgba(255,255,255,.68);margin-top:3px;letter-spacing:.06em}

/* 卡身 */
.epHeroBody{display:block;padding:16px 20px 18px}
.epHeroTop{display:flex;align-items:center;gap:11px}
.epHeroTop .epE{font-size:26px;animation:glFloat 3.6s ease-in-out infinite;
  filter:drop-shadow(0 0 12px rgba(193,92,240,.55))}
.epHeroTitle{flex:1;min-width:0}
.epHeroTitle b{display:block;font-size:20px;font-weight:800;color:#fff;letter-spacing:.02em}
.epHeroTitle em{display:block;font-style:normal;font-size:11px;color:#8ff0d8;margin-top:3px;
  letter-spacing:.08em;font-weight:600}
.epHeroTop .epA{font-size:23px;color:rgba(255,255,255,.65);line-height:1}

/* 钩子文案 */
.epHook{display:block;margin:13px 0 11px;font-size:13.5px;line-height:1.75;color:rgba(255,255,255,.8);
  padding-left:11px;border-left:2px solid rgba(143,240,216,.5)}

/* 进度条 */
.epBar{display:block;height:5px;border-radius:99px;background:rgba(255,255,255,.11);overflow:hidden;margin-bottom:11px}
.epBarFill{display:block;height:100%;border-radius:99px;
  background:linear-gradient(90deg,#8ff0d8,#7ec8ff,#b79cff);
  box-shadow:0 0 12px rgba(126,200,255,.55);
  transition:width .8s cubic-bezier(.2,.9,.3,1)}

.epHeroBody .epSub{display:block;font-size:12.5px;color:rgba(255,255,255,.6);line-height:1.8}

/* 标签 */
.epTags{display:flex;flex-wrap:wrap;gap:7px;margin-top:13px}
.epTags i{font-style:normal;font-size:10.5px;padding:5px 10px;border-radius:99px;
  background:rgba(255,255,255,.09);border:1px solid rgba(255,255,255,.13);
  color:rgba(255,255,255,.8);white-space:nowrap}

/* 次要卡稍微收一点，别抢主卡 */
.epBtns .epBtn:not(.hero){padding:15px 17px!important;border-radius:18px!important;
  background:rgba(255,255,255,.055)!important;border:1px solid rgba(255,255,255,.13)!important}
.epBtns .epBtn:not(.hero) .epE{font-size:24px!important}

.epFoot{position:relative;z-index:2;font-size:11px;margin-top:20px}

/* 高亮呼吸提示 */
.epBtn.hero .epHeroTitle b{animation:epTitleBreath 3.4s ease-in-out infinite}
@keyframes epTitleBreath{0%,100%{opacity:1}50%{opacity:.82}}

/* ── 特长面板 ── */
.skPanel{font-size:13px}
.skGrp{margin-bottom:14px}
.skGrp h4{font-size:12px;color:rgba(255,255,255,.5);margin:0 0 8px;font-weight:600}
.skRow{display:flex;align-items:center;gap:11px;padding:11px 12px;border-radius:12px;
  background:rgba(255,255,255,.06);margin-bottom:7px}
.skRow.isLost{opacity:.5}
.skE{font-size:21px;width:28px;text-align:center;flex-shrink:0}
.skN{flex:1;min-width:0}
.skN b{display:block;font-size:14px;color:#fff;margin-bottom:2px}
.skN span{font-size:11.5px;line-height:1.65;color:rgba(255,255,255,.55)}
.skLost{font-style:normal;font-size:11px;color:#ff9a9a;flex-shrink:0}
.skGain{font-style:normal;font-size:11px;color:#8ff0d8;flex-shrink:0}
.skNone{font-size:12.5px;color:rgba(255,255,255,.45);padding:8px 0}
.skFoot{font-size:11.5px;line-height:1.8;color:rgba(255,255,255,.45);margin-top:10px}

/* ── 游戏内身份条 ── */
.glMe{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--tx2);
  padding:6px 11px;border-radius:999px;background:var(--onCard);border:1px solid var(--line)}
.glMeAv{font-size:16px}
.glSkillBtn{font-size:12px;padding:6px 11px;border-radius:999px;cursor:pointer;
  border:1px solid var(--line);background:var(--onCard);color:var(--tx2);font-family:inherit}

/* ── 设置：文字播放速度 ── */
.spdRow{display:flex;align-items:center;gap:11px;margin-top:12px}
.spdLbl{font-size:12px;color:var(--tx3);flex-shrink:0}
.spdRange{flex:1;min-width:0;-webkit-appearance:none;appearance:none;height:5px;border-radius:99px;
  background:var(--line);outline:none;touch-action:pan-y}
.spdRange::-webkit-slider-thumb{-webkit-appearance:none;width:22px;height:22px;border-radius:50%;
  background:linear-gradient(140deg,var(--g),var(--g2));border:2px solid #fff;cursor:pointer;
  box-shadow:0 2px 8px rgba(0,0,0,.28)}
.spdRange::-moz-range-thumb{width:20px;height:20px;border-radius:50%;border:2px solid #fff;cursor:pointer;
  background:linear-gradient(140deg,var(--g),var(--g2))}
.spdVal{font-size:13px;font-weight:700;color:var(--tx);min-width:38px;text-align:right;flex-shrink:0}
.spdPresets{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}
.spdPresets .btn.sm{flex:1 1 auto;min-width:88px}
/* ── 角色头像（动物拟人） ── */
.glWhoName{font-weight:700;letter-spacing:.02em}
.glWho.dim{display:none}
.glAv{width:30px;height:30px;border-radius:50%;flex-shrink:0;display:inline-grid;place-items:center;
  background:linear-gradient(140deg,var(--av1,#ffd9e8),var(--av2,#c9a8ff));
  font-size:16px;line-height:1;box-shadow:0 3px 12px rgba(0,0,0,.28);
  border:1.5px solid rgba(255,255,255,.5);position:relative}
.glAvImg::after{content:attr(data-an);position:absolute;inset:0;display:grid;place-items:center;font-size:15px}
.glAv::after{content:attr(data-ch);font-size:13px;font-weight:700;color:#fff;text-shadow:0 1px 3px rgba(0,0,0,.4)}
.glWho{display:flex;align-items:center;gap:9px}
.glWho .glAv{margin-right:1px}
/* ── 小菜单：层级 + 遮罩 + 滚动锁 ── */
.navFab{z-index:9200!important}
#fmPanel{z-index:9300!important}
.fmPanel.on{display:block!important}
.fmMask{position:fixed;inset:0;background:rgba(0,0,0,.34);z-index:2100;
  opacity:0;pointer-events:none;transition:opacity .2s;display:block!important}
.fmMask.on{opacity:1;pointer-events:auto}
body.fmLock{overflow:hidden!important}
#fmPanel{overscroll-behavior:contain;-webkit-overflow-scrolling:touch}
.fmItem{min-height:48px;display:flex;align-items:center;touch-action:manipulation}
/* 打开菜单时把底栏藏起来，避免抢点击 */
body.fmLock #botTabs,body.fmLock .navFab{opacity:0;pointer-events:none}
@keyframes epIn{from{opacity:0;transform:scale(1.02)}to{opacity:1;transform:none}}
@keyframes epIn{from{opacity:0}to{opacity:1}}
.epGlow{position:absolute;border-radius:50%;filter:blur(70px);pointer-events:none}
.epG1{width:280px;height:280px;top:-70px;left:-60px;
  background:radial-gradient(circle,rgba(193,92,240,.34),transparent 70%);animation:glFloat 11s ease-in-out infinite}
.epG2{width:300px;height:300px;bottom:-90px;right:-70px;
  background:radial-gradient(circle,rgba(0,229,255,.24),transparent 70%);animation:glFloat 14s ease-in-out infinite reverse}
.epStars{position:absolute;inset:0;pointer-events:none}
.epStars i{position:absolute;width:2px;height:2px;border-radius:50%;background:#fff;
  animation:glTwinkle var(--d,3.4s) ease-in-out infinite}
.epInner{
  position:relative;z-index:2;height:100%;display:flex;flex-direction:column;
  align-items:center;justify-content:center;padding:34px 22px calc(30px + env(safe-area-inset-bottom,0px))
}
.epBrand{font-size:10.5px;letter-spacing:.34em;color:rgba(255,255,255,.4);margin-bottom:20px}
.epTitle{font-size:27px;font-weight:800;text-align:center;letter-spacing:.01em;margin-bottom:30px;
  background:linear-gradient(96deg,#8ff0d8 0%,#7ec8ff 34%,#b79cff 66%,#ffb3d9 100%);
  -webkit-background-clip:text;background-clip:text;
  -webkit-text-fill-color:transparent;color:transparent;
  filter:drop-shadow(0 4px 26px rgba(120,200,255,.28));
  padding-bottom:2px}
.epTitle.isPlain{
  background:none;-webkit-text-fill-color:#fff;color:#fff;filter:none
}
/* 副标题（首页那句「攒火」不要透到选择页下面来） */
.epSubline{font-size:14.5px;text-align:center;line-height:1.9;margin:-16px 0 30px;
  color:rgba(255,255,255,.62);letter-spacing:.02em}
.epSubline em{font-style:normal;
  background:linear-gradient(96deg,#9fe8ff,#c9a8ff);
  -webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;color:transparent}
/* 卡片：显式写死，不受皮肤变量干扰，避免再次变白 */
.epBtn{background:rgba(22,20,38,.72)!important;border:1px solid rgba(255,255,255,.16)!important;
  color:#fff;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}
.epBtn .epT b{color:#fff!important}
.epBtn .epT span{color:rgba(255,255,255,.66)!important}
.epBtn .epA{color:rgba(255,255,255,.45)!important}
.epBtn.hero{background:linear-gradient(120deg,rgba(120,50,180,.62),rgba(0,110,140,.52))!important;
  border:1px solid rgba(193,92,240,.62)!important;
  box-shadow:0 10px 40px rgba(155,107,255,.34)!important}
.epBtn.hero .epT span{color:rgba(255,255,255,.82)!important}
.epBtn.hero .epA{color:rgba(255,255,255,.75)!important}
.epBtns{display:grid;gap:14px;width:100%;max-width:400px}
.epBtn{
  position:relative;display:flex;align-items:center;gap:15px;
  padding:20px 18px;border-radius:20px;cursor:pointer;text-align:left;font-family:inherit;
  border:1px solid rgba(255,255,255,.15);background:rgba(255,255,255,.06);
  color:#fff;transition:.2s;-webkit-tap-highlight-color:transparent;overflow:hidden
}
.epBtn:active{transform:scale(.978)}
.epBtn .epE{font-size:32px;flex-shrink:0;line-height:1}
.epBtn .epT{flex:1;min-width:0}
.epBtn .epT b{display:block;font-size:17.5px;font-weight:700;margin-bottom:5px}
.epBtn .epT span{font-size:12px;color:rgba(255,255,255,.66);line-height:1.75;display:block}
.epBtn .epA{font-size:22px;color:rgba(255,255,255,.4);flex-shrink:0}
.epBtn.hero{
  padding:26px 20px;border-color:rgba(193,92,240,.55);
  background:linear-gradient(120deg,rgba(120,50,180,.42),rgba(0,110,140,.34));
  box-shadow:0 10px 40px rgba(155,107,255,.3)
}
.epBtn.hero::before{
  content:'';position:absolute;inset:0;pointer-events:none;
  background:linear-gradient(100deg,transparent 30%,rgba(255,255,255,.12) 50%,transparent 70%);
  animation:glShine 4s ease-in-out infinite
}
.epBtn.hero .epE{font-size:38px;animation:glFloat 3.4s ease-in-out infinite;
  filter:drop-shadow(0 0 14px rgba(193,92,240,.6))}
.epBtn.hero .epT b{font-size:20px}
.epBtn.hero .epT span{color:rgba(255,255,255,.78)}
.epBtn.hero .epA{color:rgba(255,255,255,.7)}
.epFoot{margin-top:22px;font-size:11.5px;color:rgba(255,255,255,.34);text-align:center;line-height:1.7}

/* ════════ 说点 · 口味折叠（18 个口味全铺开太占屏） ════════ */
.sayCatWrap{display:grid;gap:10px}
.sayMore{
  display:flex;align-items:center;justify-content:center;gap:7px;
  padding:10px 14px;border-radius:13px;font-size:12.5px;cursor:pointer;font-family:inherit;
  border:1px dashed var(--line);background:var(--onCard);color:var(--tx2);
  -webkit-tap-highlight-color:transparent;transition:.16s;width:100%
}
.sayMore b{color:var(--g);font-weight:700}
.sayMore i{font-style:normal;font-size:11px;opacity:.75}
.sayMore:active{transform:scale(.985)}
.sayMore.on{border-style:solid;border-color:var(--g);color:var(--tx);background:rgba(193,92,240,.08)}

/* ════════ 来时路 · 故事卡 ════════ */
.dgStories{margin-top:16px;padding-top:15px;border-top:1px dashed var(--line)}
.dgStoriesT{font-size:11.5px;letter-spacing:.14em;color:var(--tx3);margin-bottom:11px}
.dgStory{border:1px solid var(--line);border-radius:15px;background:var(--onCard);
  margin-bottom:10px;overflow:hidden;transition:.18s}
.dgStoryHead{display:flex;align-items:center;gap:10px;padding:13px 15px;cursor:pointer;
  -webkit-tap-highlight-color:transparent}
.dgStoryHead:active{background:var(--onCard)}
.dgStoryHead .st{font-size:19px;flex-shrink:0;line-height:1}
.dgStoryHead .sn{flex:1;min-width:0;font-size:14px;color:var(--tx);font-weight:600;line-height:1.5}
.dgStoryHead .sa{font-size:11px;color:var(--tx3);flex-shrink:0;transition:transform .22s}
.dgStory.open .dgStoryHead .sa{transform:rotate(180deg)}
.dgStoryBody{max-height:0;overflow:hidden;transition:max-height .38s cubic-bezier(.3,.9,.3,1);padding:0 15px}
.dgStory.open .dgStoryBody{max-height:6000px;padding:0 15px 16px}
.dgStoryBody p{margin:0 0 13px;font-size:14px;line-height:2.1;color:var(--tx2);white-space:pre-line}
.dgStoryBody p:last-child{margin-bottom:0}
.dgStoryBody em{color:var(--g);font-style:normal;font-weight:600}
.dgStory.read{border-color:rgba(77,226,200,.32)}
.dgStory.read .sn::after{content:' ·读过';font-size:10.5px;color:var(--g2);opacity:.7}


/* 亮色皮肤专属：深色兜底改半透明黑 */
html[data-skin="day"] .card,html[data-skin="warm"] .card{box-shadow:0 2px 18px rgba(80,60,40,.07)}
html[data-skin="day"] .btn,html[data-skin="warm"] .btn{box-shadow:0 1px 5px rgba(80,60,40,.09)}
html[data-skin="day"] .nBtn.on,html[data-skin="warm"] .nBtn.on{color:#fff}
html[data-skin="day"] .ptab.on,html[data-skin="warm"] .ptab.on{color:#fff}
html[data-skin="day"] .toast,html[data-skin="warm"] .toast{background:rgba(40,32,24,.94)}
html[data-skin="day"] .navPanel,html[data-skin="warm"] .navPanel{background:rgba(30,24,18,.55)}
html[data-skin="day"] .modalBox,html[data-skin="warm"] .modalBox{box-shadow:0 18px 60px rgba(80,60,40,.2)}
html[data-skin="day"] .floatie,html[data-skin="warm"] .floatie{background:rgba(255,254,251,.97);box-shadow:0 12px 40px rgba(80,60,40,.18)}
html[data-skin="day"] .copyOK,html[data-skin="warm"] .copyOK{background:rgba(255,254,251,.98);box-shadow:0 12px 44px rgba(80,60,40,.2)}
html[data-skin="day"] .xdCard,html[data-skin="warm"] .xdCard{box-shadow:0 4px 22px rgba(80,60,40,.08)}
html[data-skin="day"] .xdGlow,html[data-skin="warm"] .xdGlow{opacity:.7}
html[data-skin="day"] .nestFriend,html[data-skin="warm"] .nestFriend{filter:drop-shadow(0 4px 8px rgba(80,60,40,.2))}
html[data-skin="day"] .btn.pri,html[data-skin="warm"] .btn.pri{color:#fff}

/* ══════════════════════════════════════════════
   皮肤系统：6 种主题，通过 data-skin 切换 CSS 变量
   对比度标准：正文 ≥ 7:1，次要 ≥ 4.5:1，弱化 ≥ 3.5:1（WCAG AA）
   —— tx3 之前全部不达标（白天 2.70 / 温馨 2.64），已逐个调亮
   ══════════════════════════════════════════════ */
:root{
  --bg:#08080e;--card:#14141f;--card2:#111119;--line:#2b2b40;
  --tx:#f0eef9;--tx2:#adaabf;--tx3:#82809a;
  --g:#c15cf0;--g2:#4de2c8;--w:#ffb86b;--red:#ff6b81;--blue:#6ba8ff;
  --glow1:rgba(193,92,240,.18);--glow2:rgba(77,226,200,.12);--glow3:rgba(255,184,107,.06);
  --onCard:var(--onCard);
  --tabBg:rgba(14,14,24,.93);--botBg:rgba(16,16,26,.97);
  --r:18px;
}
/* 夜间（默认·深夜紫）17.25 / 7.30 / 3.38→ */
html[data-skin="night"]{--bg:#08080e;--card:#14141f;--card2:#111119;--line:#2b2b40;--tx:#f0eef9;--tx2:#adaabf;--tx3:#82809a;--g:#c15cf0;--g2:#4de2c8;--w:#ffb86b;--red:#ff6b81;--blue:#6ba8ff;--glow1:rgba(193,92,240,.18);--glow2:rgba(77,226,200,.12);--glow3:rgba(255,184,107,.06);--onCard:var(--onCard);--tabBg:rgba(14,14,24,.93);--botBg:rgba(16,16,26,.97)}
/* 白天（晨光·米白）13.52 / 5.27 / 2.70→5.02 */
html[data-skin="day"]{--bg:#f7f5f0;--card:#fffefb;--card2:#f2efe8;--line:#e3dfd4;--tx:#241f19;--tx2:#5c554a;--tx3:#7d7568;--g:#c94f92;--g2:#1f7f68;--w:#9a6412;--red:#c33a4f;--blue:#2f5fa8;--glow1:rgba(201,79,146,.11);--glow2:rgba(31,127,104,.09);--glow3:rgba(154,100,18,.06);--onCard:rgba(0,0,0,.022);--tabBg:rgba(250,248,243,.95);--botBg:rgba(255,254,251,.97)}
/* 温馨（暖阳·奶油橘）11.93 / 5.30 / 2.64→4.36 */
html[data-skin="warm"]{--bg:#fdf4e9;--card:#fffaf3;--card2:#f8ecdc;--line:#eddece;--tx:#332619;--tx2:#6b5546;--tx3:#8a7461;--g:#c96a34;--g2:#8a6a24;--w:#a97a1c;--red:#bd4f36;--blue:#4d7f9c;--glow1:rgba(201,106,52,.13);--glow2:rgba(138,106,36,.10);--glow3:rgba(169,122,28,.07);--onCard:rgba(90,55,25,.022);--tabBg:rgba(253,246,236,.95);--botBg:rgba(255,251,244,.97)}
/* 冷酷（极夜·钢蓝）15.42 / 6.42 / 3.28→4.28 */
html[data-skin="cold"]{--bg:#0a0d12;--card:#12161d;--card2:#0e131a;--line:#242c3a;--tx:#e2ebf6;--tx2:#93a4b8;--tx3:#75879c;--g:#5a9ad4;--g2:#6ad2e0;--w:#9fb8cd;--red:#e8707d;--blue:#5a9ad4;--glow1:rgba(90,154,212,.15);--glow2:rgba(106,210,224,.10);--glow3:rgba(159,184,205,.05);--onCard:var(--onCard);--tabBg:rgba(15,20,28,.93);--botBg:rgba(18,23,31,.97)}
/* 素白（极简·纯黑白）16.13 / 6.71 / 3.29→4.06 */
html[data-skin="mono"]{--bg:#101010;--card:#1a1a1a;--card2:#141414;--line:#2f2f2f;--tx:#f0f0f0;--tx2:#a8a8a8;--tx3:#828282;--g:#d4d4d4;--g2:#9a9a9a;--w:#c0c0c0;--red:#d87878;--blue:#8fa8c8;--glow1:var(--onCard);--glow2:var(--onCard);--glow3:var(--onCard);--onCard:var(--onCard);--tabBg:rgba(20,20,20,.93);--botBg:rgba(24,24,24,.97)}
/* 炫彩（成就解锁·流光）18.06 / 9.53 / 5.14 ✓ */
html[data-skin="neon"]{--bg:#0d0718;--card:#18102c;--card2:#110a24;--line:#3a2a66;--tx:#fff0ff;--tx2:#d0b8f0;--tx3:#a68ccb;--g:#ff4fd8;--g2:#4dfff0;--w:#ffe14d;--red:#ff5c7a;--blue:#5c9dff;--glow1:rgba(255,79,216,.24);--glow2:rgba(77,255,240,.18);--glow3:rgba(255,225,77,.10);--onCard:var(--onCard);--tabBg:rgba(20,12,38,.93);--botBg:rgba(26,16,46,.97)}
html[data-skin="neon"] body{background-image:
  radial-gradient(900px 520px at 12% -8%,rgba(255,79,216,.30),transparent 60%),
  radial-gradient(760px 480px at 92% 4%,rgba(77,255,240,.22),transparent 55%),
  radial-gradient(700px 500px at 50% 100%,rgba(255,225,77,.14),transparent 60%),
  radial-gradient(600px 400px at 85% 85%,rgba(92,157,255,.16),transparent 60%)}
html[data-skin="neon"]::before{content:'';position:fixed;inset:0;pointer-events:none;z-index:0;opacity:.5;
  background:repeating-linear-gradient(115deg,transparent 0 22px,rgba(255,79,216,.045) 22px 23px)}
/* 亮色皮肤：卡片阴影更实、边框更清晰 */
html[data-skin="day"] .card,html[data-skin="warm"] .card{box-shadow:0 2px 18px rgba(80,60,40,.07)}
html[data-skin="day"] .btn,html[data-skin="warm"] .btn{box-shadow:0 1px 5px rgba(80,60,40,.09)}
html[data-skin="day"] .qMark,html[data-skin="warm"] .qMark{border-color:var(--line);background:var(--onCard)}
/* 亮色皮肤：把「半透明白」的深色兜底改成半透明黑，否则会糊成一片 */
html[data-skin="day"],html[data-skin="warm"]{
  --shadowTxt:rgba(50,38,26,.06);
}
html[data-skin="day"] .qMark:hover,html[data-skin="warm"] .qMark:hover{background:rgba(31,127,104,.1)}
html[data-skin="day"] .nBtn.on,html[data-skin="warm"] .nBtn.on{color:#fff}
html[data-skin="day"] .ptab.on,html[data-skin="warm"] .ptab.on{color:#fff}
html[data-skin="day"] .toast,html[data-skin="warm"] .toast{background:rgba(40,32,24,.94)}
html[data-skin="day"] .navPanel,html[data-skin="warm"] .navPanel{background:rgba(30,24,18,.55)}


html[data-skin="day"] .floatie,html[data-skin="warm"] .floatie{background:rgba(255,254,251,.97);box-shadow:0 12px 40px rgba(80,60,40,.18)}
html[data-skin="day"] .copyOK,html[data-skin="warm"] .copyOK{background:rgba(255,254,251,.98);box-shadow:0 12px 44px rgba(80,60,40,.2)}
html[data-skin="day"] .modalBox,html[data-skin="warm"] .modalBox{box-shadow:0 18px 60px rgba(80,60,40,.2)}
html[data-skin="day"] .xdCard,html[data-skin="warm"] .xdCard{box-shadow:0 4px 22px rgba(80,60,40,.08)}
html[data-skin="day"] .xdGlow,html[data-skin="warm"] .xdGlow{opacity:.7}
html[data-skin="day"] .nestFriend,html[data-skin="warm"] .nestFriend{filter:drop-shadow(0 4px 8px rgba(80,60,40,.2))}
html[data-skin="day"] .scrollHint,html[data-skin="warm"] .scrollHint{background:var(--card)}
/* 亮色皮肤：给强调色加深，保证按钮文字可读 */
html[data-skin="day"] .btn.pri,html[data-skin="warm"] .btn.pri{color:#fff}
*{box-sizing:border-box;margin:0;padding:0}
body{
  background:var(--bg);color:var(--tx);min-height:100vh;
  background-image:
    radial-gradient(900px 520px at 12% -8%,var(--glow1),transparent 60%),
    radial-gradient(760px 480px at 92% 4%,var(--glow2),transparent 55%),
    radial-gradient(700px 500px at 50% 100%,var(--glow3),transparent 60%);
  background-attachment:fixed;
  font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;
  line-height:1.65;-webkit-font-smoothing:antialiased;
}
.wrap{max-width:940px;margin:0 auto;padding:0 18px 120px}
a{color:inherit}

/* ════════ 侧边栏布局 ════════ */
.shell{display:flex;gap:0;max-width:1180px;margin:0 auto;padding:0 0 120px;align-items:flex-start}
.sidenav{
  width:186px;flex-shrink:0;position:sticky;top:0;height:100vh;
  padding:18px 10px 18px 18px;display:flex;flex-direction:column;gap:3px;overflow-y:auto
}
.sidenav::-webkit-scrollbar{width:0}
.sidenav .brand{font-size:12px;letter-spacing:.2em;color:var(--tx3);padding:4px 10px 14px}
.sidenav a{
  font-size:13.5px;color:var(--tx2);text-decoration:none;padding:9px 12px;border-radius:11px;
  display:flex;align-items:center;gap:9px;transition:.16s;border:1px solid transparent;cursor:pointer
}
.sidenav a:hover{color:var(--tx);background:var(--onCard)}
.sidenav a.on{color:#fff;border-color:rgba(193,92,240,.5);background:rgba(193,92,240,.14);font-weight:600}
.sidenav a i{font-style:normal;font-size:14px;width:18px;text-align:center;flex-shrink:0}
.sidenav a .lk{
  margin-left:auto;font-size:9px;padding:1px 5px;border-radius:999px;
  background:linear-gradient(120deg,var(--g),var(--g2));color:#fff;font-weight:700;letter-spacing:.02em
}
.sidenav a.locked{opacity:.42;cursor:pointer}
.sidenav a.locked:hover{background:rgba(255,180,120,.09);color:#ffb478}
.sidenav .sep{height:1px;background:var(--line);margin:11px 10px}
.sidenav .grp{font-size:10px;letter-spacing:.2em;color:var(--tx3);padding:8px 12px 5px;opacity:.75}
.maincol{flex:1;min-width:0;padding:18px 18px 0 4px}
@media(max-width:900px){
  /* 手机端：底部 Tab 固定，所以 shell 底部要留出 Tab 高度 */
  .shell{flex-direction:column;padding:0 0 calc(86px + env(safe-area-inset-bottom))}
  .sidenav{
    width:100%;height:auto;position:sticky;top:0;z-index:60;padding:8px 12px;
    flex-direction:row;overflow-x:auto;background:rgba(8,8,14,.93);
    backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);
    border-bottom:1px solid var(--line);gap:5px;scroll-snap-type:x proximity
  }
  .sidenav .brand,.sidenav .grp,.sidenav .sep{display:none}
  .sidenav a{white-space:nowrap;padding:7px 11px;font-size:13px;scroll-snap-align:start}
  .sidenav a .lk{margin-left:0;margin-left:5px}
  .maincol{padding:0 14px;width:100%}
}

/* ════════ 小凉彩蛋：一盏会呼吸的灯 ════════ */
#xdSec{scroll-margin-top:66px}
@media(max-width:900px){#xdSec{scroll-margin-top:68px}}
@keyframes xdBreathe{
  0%,100%{opacity:.85;transform:scale(1)}
  50%{opacity:1;transform:scale(1.09)}
}
@keyframes xdFloat{0%,100%{transform:translateY(0)}50%{transform:translateY(-5px)}}
@keyframes xdSpin{to{transform:rotate(360deg)}}
.xdCard{
  position:relative;overflow:hidden;text-align:left;isolation:isolate;
  margin-top:0;padding:24px 20px 20px;border-radius:20px;
  border:1px solid rgba(155,107,255,.26);
  background:linear-gradient(165deg,rgba(155,107,255,.10),rgba(0,229,255,.03) 55%,var(--onCard))
}
/* 顶部呼吸光晕（限制在卡片内，不外溢、不留扩散环） */
.xdGlow{
  position:absolute;top:-118px;left:50%;width:250px;height:250px;margin-left:-125px;
  border-radius:50%;pointer-events:none;z-index:0;
  background:radial-gradient(circle,rgba(155,107,255,.30),rgba(0,229,255,.10) 44%,transparent 68%);
  animation:xdBreathe 5.2s ease-in-out infinite
}
/* 注意：必须排除 .xdGlow，否则它会被改成 relative 掉进文档流，撑高卡片 */
.xdCard>*:not(.xdGlow){position:relative;z-index:1}
.xdTop{display:flex;align-items:center;gap:11px;position:relative}
.xdAv{
  width:38px;height:38px;flex-shrink:0;border-radius:50%;display:grid;place-items:center;
  background:linear-gradient(130deg,var(--g),var(--g2));color:#fff;font-size:15px;font-weight:700;
  box-shadow:0 0 20px rgba(0,229,255,.42);animation:xdFloat 4.2s ease-in-out infinite
}
.xdWho{display:flex;flex-direction:column;gap:2px;min-width:0}
.xdWho b{font-size:14.5px;color:var(--tx);letter-spacing:.04em}
.xdSt{font-size:11px;color:var(--tx3)}
.xdBadge{
  margin-left:auto;flex-shrink:0;font-size:10px;letter-spacing:.09em;color:var(--g2);
  padding:4px 9px;border-radius:999px;
  border:1px solid rgba(0,229,255,.28);background:rgba(0,229,255,.07)
}
.xdLine{height:1px;margin:16px 0 15px;background:linear-gradient(90deg,rgba(155,107,255,.42),rgba(0,229,255,.14),transparent)}
.xdHook{margin:0 0 17px;font-size:14px;line-height:1.95;color:var(--tx2)}
/* 点亮按钮 */
#xdLamp{
  position:relative;width:100%;display:flex;align-items:center;gap:12px;
  padding:15px 17px;border-radius:15px;cursor:pointer;font-family:inherit;
  border:1px solid rgba(0,229,255,.32);
  background:linear-gradient(120deg,rgba(155,107,255,.20),rgba(0,229,255,.11));
  color:#fff;text-align:left;-webkit-tap-highlight-color:transparent;
  transition:transform .18s,box-shadow .18s,border-color .18s;
  box-shadow:0 0 0 0 rgba(0,229,255,.3),0 6px 22px rgba(0,0,0,.34)
}
#xdLamp:active{transform:scale(.975)}
.xdBulb{
  position:relative;width:15px;height:15px;flex-shrink:0;border-radius:50%;
  background:radial-gradient(circle at 34% 32%,#fff,var(--g2) 52%,rgba(0,229,255,.28));
  box-shadow:0 0 14px rgba(0,229,255,.9)
}
@keyframes xdRing{
  0%{transform:scale(.7);opacity:.85}
  70%{opacity:0}
  100%{transform:scale(1.7);opacity:0}
}
.xdBulb::after{
  content:'';position:absolute;inset:-5px;border-radius:50%;
  border:1px solid rgba(0,229,255,.42);animation:xdRing 2.6s ease-out infinite
}
/* ══ 点灯：灯光一点点渐亮，再晕开一圈（v90） ══ */
#xdLamp.lit{border-color:rgba(120,235,255,.62);
  box-shadow:0 0 26px rgba(0,229,255,.42),0 6px 22px rgba(0,0,0,.34);
  background:linear-gradient(120deg,rgba(155,107,255,.30),rgba(0,229,255,.18))}
#xdLamp.lit .xdBulb{animation:lampLit 1.5s cubic-bezier(.2,.75,.25,1) both}
@keyframes lampLit{
  0%{transform:scale(.82);filter:brightness(.7);box-shadow:0 0 4px rgba(0,229,255,.35)}
  45%{transform:scale(1.22);filter:brightness(1.7);box-shadow:0 0 30px 12px rgba(0,229,255,.9)}
  72%{transform:scale(1.05);filter:brightness(1.35);box-shadow:0 0 22px 8px rgba(0,229,255,.8)}
  100%{transform:scale(1);filter:brightness(1.2);box-shadow:0 0 18px 6px rgba(0,229,255,.72)}
}
/* 一次性外扩柔光：从灯泡位置散开 */
#xdLamp.lit .xdBulb::before{
  content:'';position:absolute;inset:-2px;border-radius:50%;pointer-events:none;
  background:radial-gradient(circle,rgba(150,240,255,.9),rgba(0,229,255,.28) 45%,transparent 70%);
  animation:lampBloom 1.15s cubic-bezier(.2,.8,.3,1) both}
@keyframes lampBloom{
  0%{transform:scale(.4);opacity:0}
  28%{opacity:.95}
  100%{transform:scale(6.5);opacity:0}
}
/* 灯亮后整张卡片更暖一点 */
.xdCard.lit{box-shadow:0 0 0 1px rgba(0,229,255,.14),0 10px 34px rgba(80,40,140,.28)}
.xdCard.lit .xdGlow{opacity:1;animation-duration:3.6s}
.xdLampTx{font-size:14px;font-weight:600;letter-spacing:.03em}
.xdCount{margin-left:auto;font-size:11px;color:var(--onCard);white-space:nowrap}
/* 灯亮后的卡片 */
.xdMsg{
  margin-top:17px;padding:19px 17px;border-radius:16px;
  border:1px solid rgba(155,107,255,.26);
  background:linear-gradient(150deg,rgba(155,107,255,.11),rgba(0,229,255,.025));
  animation:xdMsgIn .42s cubic-bezier(.2,.9,.3,1)
}
@keyframes xdMsgIn{from{opacity:0;transform:translateY(9px)}to{opacity:1;transform:translateY(0)}}
.xdMsgHd{display:flex;align-items:center;gap:9px;margin-bottom:11px}
.xdMsgHd span:first-child{
  width:24px;height:24px;border-radius:50%;display:grid;place-items:center;
  background:linear-gradient(130deg,var(--g),var(--g2));color:#fff;font-size:11px;font-weight:700
}
.xdMsgHd span:last-child{font-size:11px;color:var(--tx3);letter-spacing:.14em}
.xdTx{font-size:14.5px;line-height:2;color:var(--tx)}
.xdBtns{margin-top:15px;display:flex;flex-wrap:wrap;gap:9px}
.xdBtns .btn{padding:8px 14px;font-size:12px}

/* ════════ 分页标签栏：把长页面切成「页」，点标签切换 ════════ */
.pageTabs{
  position:sticky;top:0;z-index:70;margin:0 -18px 16px;padding:9px 14px;
  background:var(--tabBg);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);
  border-bottom:1px solid var(--line);
  display:flex;gap:6px;overflow-x:auto;-webkit-overflow-scrolling:touch;
  scrollbar-width:none;scroll-snap-type:x proximity
}
.pageTabs::-webkit-scrollbar{display:none}
@media(max-width:900px){.pageTabs{margin:0 -14px 14px;position:static;padding:8px 12px}}
.ptab{
  flex:0 0 auto;padding:8px 15px;border-radius:999px;cursor:pointer;white-space:nowrap;
  font-size:13px;color:var(--tx2);border:1px solid transparent;
  -webkit-tap-highlight-color:transparent;transition:.16s;font-family:inherit;background:var(--onCard)
}
.ptab.on{color:#fff;border-color:rgba(193,92,240,.5);background:rgba(193,92,240,.16);font-weight:600}
.ptab:active{transform:scale(.95)}
/* 分页模式：只显示当前页 */
body.paged .pgWrap{display:none!important}
body.paged .pgWrap.on{display:block!important}
/* 全部展开模式（默认）：全部显示，隐藏标签栏 */
body:not(.paged) .pageTabs .ptab{display:none}
/* 分页页签：两行网格，不再一条挤 8 个 */
.pageTabs{display:grid!important;grid-template-columns:repeat(4,1fr);gap:6px;
  margin:0 -18px 14px;padding:9px 14px;background:var(--tabBg);
  -webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);border-bottom:1px solid var(--line)}
.pageTabs .ptab{width:auto;justify-content:center;padding:8px 15px;font-size:13px}
.pageTabs .pgCtl{grid-column:1/-1;display:flex;gap:8px;margin:2px 0 0;padding:0}
.pageTabs .pgCtlBtn{flex:1;padding:9px 12px;font-size:12.5px}
.pageTabs .pgCtlBtn.ico{flex:0 0 44px}
/* 全展开：只留按钮，行内靠右 */
body:not(.paged) .pageTabs{background:none;border-bottom:0;padding:0;margin:0 0 10px;display:flex!important;justify-content:flex-end}
@media(max-width:900px){.pageTabs{margin:0 -14px 12px;padding:8px 12px}}
body:not(.paged) .pgWrap{display:block!important}
body.paged .wrap{padding-bottom:calc(30px + env(safe-area-inset-bottom,0px))}
@media(max-width:900px){body.paged .sidenav{display:none!important}}
.ptabHint{margin-left:auto;flex:0 0 auto;display:flex;align-items:center;padding-left:6px}
.ptabHint button{font-size:11px;padding:6px 11px;border-radius:999px;border:1px solid var(--line);
  background:var(--onCard);color:var(--tx3);cursor:pointer;font-family:inherit;white-space:nowrap}

/* 登录页：简洁版入口 */
.quickBox{margin:16px 0 18px;padding:14px 15px 15px;border-radius:15px;
  border:1px solid rgba(0,229,255,.18);background:rgba(0,229,255,.045)}
.qbLine{font-size:12.5px;color:var(--tx3);margin-bottom:11px}
.qbBtns{display:grid;grid-template-columns:1fr 1fr;gap:9px}
.qbBtn{
  padding:12px 9px;border-radius:13px;cursor:pointer;text-align:center;
  border:1px solid var(--line);background:var(--onCard);color:var(--tx2);
  font-size:12px;line-height:1.55;font-family:inherit;transition:.18s;
  -webkit-tap-highlight-color:transparent
}
.qbBtn i{font-style:normal;font-size:19px;display:block;margin-bottom:4px}
.qbBtn b{font-weight:500;color:var(--tx3);font-size:11px}
.qbBtn:active{transform:scale(.96)}
.qbBtn:hover{border-color:var(--g2);color:var(--tx)}
.qbBtn:hover b{color:var(--g2)}

/* v100：所有 scrollIntoView 的目标都自动避开顶部吸顶栏，保证跳转后对齐 */
.maincol .card,.maincol .pgWrap,.maincol section[id],.maincol [id],#setPane,.achPane{scroll-margin-top:66px}

/* ════════ 聊天话题库 ════════ */
.topicHead{display:flex;align-items:center;justify-content:space-between;gap:10px}
.topicHead h2{margin:0}
.topicDay{font-size:11.5px;color:var(--tx3);flex-shrink:0;padding:4px 10px;border-radius:999px;
  border:1px solid var(--line);background:var(--onCard)}
.topicDay b{color:var(--g2);font-weight:500}
.topicChips{display:flex;flex-wrap:wrap;gap:7px;margin:13px 0 0;align-items:center}
.tpChip{padding:7px 13px;border-radius:999px;font-size:12px;cursor:pointer;font-family:inherit;
  border:1px solid var(--line);background:var(--onCard);color:var(--tx2);
  -webkit-tap-highlight-color:transparent;transition:.16s}
.tpChip i{font-style:normal;color:var(--tx3);font-size:11px;margin-left:3px}
.tpChip.on{border-color:var(--g2);color:var(--g2);background:rgba(77,226,200,.08)}
.tpChip:active{transform:scale(.95)}
.topicChips .btn.xs{margin-left:auto;padding:7px 13px;font-size:12px}
.tpNet{font-size:11.5px;color:var(--tx3);margin-top:9px}
.tpNet.ok{color:var(--g2)}
.tpNetWrap{display:flex;flex-wrap:wrap;gap:4px 12px;align-items:center;margin-top:9px}
.tpNetWrap .tpNet{margin-top:0}
.tpCnt{font-size:11px;color:var(--tx3);margin-left:auto}
.tpNew.hot{color:#ff9f43;border-color:rgba(255,159,67,.45)}
.tpFav{flex-shrink:0;background:none;border:none;font-size:17px;line-height:1;color:var(--tx3);
  cursor:pointer;padding:2px 5px;font-family:inherit;-webkit-tap-highlight-color:transparent}
.tpFav.on{color:#ffcf4a;text-shadow:0 0 8px rgba(255,207,74,.55)}
.tpMean{margin-bottom:10px;padding:9px 11px;border-radius:10px;background:rgba(255,207,74,.08);
  border-left:3px solid rgba(255,207,74,.5);font-size:12.5px;line-height:1.8;color:var(--tx2)}
.tpMean b{color:#ffcf4a;font-weight:500;margin-right:1px}
.tpMean b:after{content:'：'}
.topicList{margin-top:11px;display:grid;gap:9px}
.tpItem{border:1px solid var(--line);border-radius:14px;background:var(--onCard);overflow:hidden;transition:.18s}
.tpItem.on{border-color:rgba(77,226,200,.4);background:rgba(77,226,200,.04)}
.tpHd{display:flex;align-items:center;gap:9px;padding:12px 14px;cursor:pointer;
  -webkit-tap-highlight-color:transparent}
.tpTy{flex-shrink:0;font-size:11px;color:var(--tx3);padding:3px 8px;border-radius:999px;
  background:rgba(255,255,255,.05);border:1px solid var(--line)}
.tpT{flex:1;font-size:13.5px;font-weight:500;color:var(--tx);line-height:1.65}
.tpNew{font-style:normal;font-size:10px;color:var(--g2);margin-left:6px;padding:2px 6px;
  border-radius:999px;border:1px solid rgba(77,226,200,.35);vertical-align:middle}
.tpAr{flex-shrink:0;color:var(--tx3);font-size:15px;transition:transform .2s}
.tpItem.on .tpAr{transform:rotate(90deg)}
.tpEx{border-top:1px dashed var(--line);margin-top:2px;max-height:0;opacity:0;overflow:hidden;
  padding:0 14px;transition:max-height .3s cubic-bezier(.22,.61,.36,1),opacity .22s ease,padding .3s ease}
.tpItem.on .tpEx{max-height:1200px;opacity:1;padding:11px 14px 13px}
.tpRow{display:grid;grid-template-columns:62px 1fr;gap:10px;align-items:start;margin-bottom:9px}
.tpLab{font-size:11px;color:var(--g2);padding-top:2px;line-height:1.7}
.tpRow p{white-space:pre-line;margin:0;font-size:12.8px;line-height:1.85;color:var(--tx2)}
.tpBtns{display:flex;gap:8px;margin-top:4px}
.tpEmpty{font-size:12.5px;color:var(--tx3);padding:16px;text-align:center}

/* ════════ 专属小窝 ════════ */
.nestCard{overflow:hidden}
.nestScene{
  position:relative;height:190px;border-radius:16px;overflow:hidden;margin-top:12px;
  border:1px solid var(--line);display:grid;place-items:end center
}
.nestSky{position:absolute;inset:0;transition:background 1s ease}
.nestGround{
  position:absolute;left:0;right:0;bottom:0;height:56px;
  background:linear-gradient(180deg,rgba(0,0,0,0),rgba(0,0,0,.16));
}
.nestFriend{
  position:relative;z-index:2;font-size:52px;line-height:1;
  filter:drop-shadow(0 6px 10px rgba(0,0,0,.3));
  animation:nestBob 3.4s ease-in-out infinite;cursor:pointer;
  -webkit-tap-highlight-color:transparent;transition:transform .2s
}
.nestFriend:active{transform:scale(.9)}
@keyframes nestBob{0%,100%{transform:translateY(0)}50%{transform:translateY(-9px)}}
.nestThink{position:absolute;left:50%;top:6px;transform:translateX(-50%);
  max-width:72%;padding:7px 12px;border-radius:12px;z-index:4;
  background:rgba(77,226,200,.14);border:1px solid rgba(77,226,200,.5);
  font-size:11.5px;line-height:1.7;color:var(--tx);text-align:center;
  opacity:0;transition:opacity .42s ease;pointer-events:none}
.nestThink.on{opacity:1}
.nestThink:before{content:/💡/;margin-right:4px;opacity:.85}/r/n.nestBubble{
  position:absolute;left:50%;bottom:78px;transform:translateX(-50%);
  max-width:82%;padding:11px 15px;border-radius:14px;z-index:3;
  background:rgba(12,12,20,.9);border:1px solid var(--line);
  font-size:13px;line-height:1.85;color:var(--tx);text-align:center;
  box-shadow:0 10px 30px rgba(0,0,0,.4);
  animation:mIn .38s cubic-bezier(.2,.9,.3,1)
}
.nestBar{display:flex;flex-wrap:wrap;gap:7px;margin-top:12px}
.nb{padding:7px 12px;border-radius:999px;font-size:12px;cursor:pointer;font-family:inherit;
  border:1px solid var(--line);background:var(--onCard);color:var(--tx2);
  -webkit-tap-highlight-color:transparent;transition:.16s}
.nb.on{border-color:var(--g2);color:var(--g2);background:rgba(77,226,200,.08)}
.nb:active{transform:scale(.95)}
.nestActions{display:flex;gap:9px;margin-top:12px;flex-wrap:wrap}
.nestActions .btn{flex:1;min-width:110px;padding:10px 12px;font-size:12.5px}
.nestLog{margin-top:13px;display:grid;gap:6px}
.nestLogItem{font-size:12px;color:var(--tx3);line-height:1.7;padding:7px 11px;
  border-radius:10px;background:var(--onCard);border-left:2px solid var(--line)}
.nestLogItem b{color:var(--tx2);font-weight:500}

/* ── 小窝升级（v90）：像真的小家 + 小宠物，一点就互动 ── */
.nestHead{display:flex;align-items:center;justify-content:space-between;gap:10px}
.nestHead h2{margin:0}
.nestMood{display:flex;align-items:center;gap:6px;font-size:11.5px;color:var(--tx3);flex-shrink:0;
  padding:4px 10px;border-radius:999px;border:1px solid var(--line);background:var(--onCard)}
.nestMood b{color:var(--g2);font-size:13px}
.nestMood i{font-style:normal;font-size:10.5px;color:var(--tx3);margin-left:2px}
.nestScene{height:212px}
.nestHill{position:absolute;left:-6%;right:-6%;bottom:30px;height:92px;pointer-events:none;
  background:radial-gradient(60% 100% at 30% 100%,rgba(255,255,255,.16),transparent 70%),
             radial-gradient(70% 100% at 76% 100%,rgba(0,0,0,.10),transparent 70%);
  border-radius:50% 50% 0 0}
.nestRug{position:absolute;left:50%;bottom:14px;width:120px;height:30px;margin-left:-60px;pointer-events:none;
  border-radius:50%;background:radial-gradient(circle,rgba(255,255,255,.30),rgba(255,255,255,.06) 62%,transparent 74%);
  box-shadow:0 6px 16px rgba(0,0,0,.16)}
.nestLamp{position:absolute;right:16px;top:14px;width:10px;height:10px;border-radius:50%;pointer-events:none;
  background:radial-gradient(circle,#fff2c8,#ffd77a 60%,rgba(255,200,90,.2));
  box-shadow:0 0 18px 6px rgba(255,214,120,.55);animation:nestLampGlow 3.6s ease-in-out infinite}
@keyframes nestLampGlow{0%,100%{opacity:.7;box-shadow:0 0 14px 4px rgba(255,214,120,.4)}
  50%{opacity:1;box-shadow:0 0 26px 10px rgba(255,214,120,.72)}}
.nestFriend{z-index:3}
.nestFriend.pet{animation:nestHop .5s cubic-bezier(.3,1.4,.5,1)}
@keyframes nestHop{0%{transform:translateY(0) scale(1)}35%{transform:translateY(-16px) scale(1.12)}
  70%{transform:translateY(0) scale(.96)}100%{transform:translateY(0) scale(1)}}
.nestFx{position:absolute;inset:0;z-index:4;pointer-events:none;overflow:hidden}
.nestHeart{position:absolute;bottom:38%;left:50%;font-size:18px;pointer-events:none;
  animation:nestHeartUp 1.2s ease-out forwards}
@keyframes nestHeartUp{0%{transform:translate(-50%,0) scale(.5);opacity:0}
  18%{opacity:1}100%{transform:translate(calc(-50% + var(--dx,0px)),-74px) scale(1.12);opacity:0}}
.nestSpark{position:absolute;width:5px;height:5px;border-radius:50%;background:#fff;pointer-events:none;
  box-shadow:0 0 8px 2px rgba(255,240,200,.9);animation:nestSparkOut .72s ease-out forwards}
@keyframes nestSparkOut{0%{transform:scale(1);opacity:1}100%{transform:translate(var(--dx,0px),var(--dy,0px)) scale(.15);opacity:0}}
.nestFood{position:absolute;bottom:34%;left:50%;transform:translateX(-50%);font-size:22px;z-index:4;
  pointer-events:none;animation:nestFoodDrop 1.3s ease-out forwards}
@keyframes nestFoodDrop{0%{transform:translate(-50%,-40px);opacity:0}20%{opacity:1}
  70%{transform:translate(-50%,6px);opacity:1}100%{transform:translate(-50%,10px) scale(.7);opacity:0}}
/* ── v98 小窝：像素小家伙 + 更温馨的房间 ── */
.nestFriend{width:138px;height:138px;image-rendering:pixelated;image-rendering:crisp-edges;
  cursor:pointer;-webkit-tap-highlight-color:transparent;transition:transform .2s;
  filter:drop-shadow(0 7px 13px rgba(60,38,18,.32))}
.nestFriend:active{transform:scale(.92)}
/* v100：小家伙的可爱小动作 */
@keyframes petHop{0%,100%{transform:translateY(0) scale(1)}30%{transform:translateY(-20px) scale(1.06)}60%{transform:translateY(0) scale(.96)}}
@keyframes petWiggle{0%,100%{transform:rotate(0)}25%{transform:rotate(-9deg)}75%{transform:rotate(9deg)}}
@keyframes petSpin{0%{transform:rotate(0) scale(1)}50%{transform:rotate(180deg) scale(1.06)}100%{transform:rotate(360deg) scale(1)}}
@keyframes petSquish{0%,100%{transform:scale(1,1)}50%{transform:scale(1.1,.86)}}
.nestFriend.petHop{animation:petHop .62s cubic-bezier(.3,1.3,.5,1)}
.nestFriend.petWiggle{animation:petWiggle .62s ease-in-out}
.nestFriend.petSpin{animation:petSpin .9s ease-in-out}
.nestFriend.petSquish{animation:petSquish .6s ease-in-out}
/* 兔八哥：真实图片形象（默认显示，替代 32×32 像素小家伙） */
.nestBunny{position:relative;z-index:3;display:none;height:140px;width:auto;
  cursor:pointer;-webkit-tap-highlight-color:transparent;transition:transform .2s;
  filter:drop-shadow(0 8px 14px rgba(28,18,6,.42));
  animation:nestBob 3.4s ease-in-out infinite;pointer-events:auto}
.nestBunny:active{transform:scale(.94)}
/* 气泡抬到小家伙头顶上方，别再盖住它的脸 */
.nestBubble{bottom:150px;max-width:74%;padding:10px 14px}
.nestScene:after{content:'';position:absolute;inset:0;pointer-events:none;z-index:6;
  background:radial-gradient(122% 82% at 50% 38%,transparent 42%,rgba(58,34,14,.34) 100%)}
.nestWin{position:absolute;left:13px;top:17px;width:72px;height:60px;border-radius:9px 9px 2px 2px;
  overflow:hidden;pointer-events:none;z-index:1;
  background:linear-gradient(180deg,#1b2a4a,#2b3f6b 55%,#3f5a92);
  border:3px solid rgba(255,238,206,.55);
  box-shadow:0 7px 18px rgba(0,0,0,.3),inset 0 0 20px rgba(255,224,168,.2)}
.nwMoon{position:absolute;right:9px;top:9px;width:13px;height:13px;border-radius:50%;
  background:radial-gradient(circle at 34% 34%,#fff9de,#f0dcA6);
  box-shadow:0 0 13px 4px rgba(255,240,190,.55)}
.nwStar{position:absolute;width:2px;height:2px;border-radius:50%;background:#fff;
  box-shadow:0 0 5px 1px rgba(255,255,255,.85);animation:nwTw 2.8s ease-in-out infinite}
.nwStar.s1{left:12px;top:15px}
.nwStar.s2{left:27px;top:31px;animation-delay:.8s}
.nwStar.s3{left:45px;top:13px;animation-delay:1.5s}
@keyframes nwTw{0%,100%{opacity:.3}50%{opacity:1}}
.nwFrame{position:absolute;inset:0;pointer-events:none;
  background:linear-gradient(90deg,rgba(255,238,206,.55) 2px,transparent 2px) center/50% 100% no-repeat,
             linear-gradient(180deg,rgba(255,238,206,.55) 2px,transparent 2px) center/100% 50% no-repeat}
.nestFloor{position:absolute;left:0;right:0;bottom:0;height:62px;pointer-events:none;z-index:1;
  background:linear-gradient(180deg,rgba(126,84,48,.55),rgba(94,60,32,.78));
  border-top:2px solid rgba(255,222,176,.2);box-shadow:inset 0 9px 22px rgba(0,0,0,.22)}
.nestFloor:after{content:'';position:absolute;inset:0;opacity:.15;
  background:repeating-linear-gradient(90deg,transparent 0 23px,rgba(0,0,0,.55) 23px 25px)}
.nestRug{background:radial-gradient(circle,rgba(255,216,172,.52),rgba(255,190,140,.18) 62%,transparent 76%)}
.nestLamp{right:20px;top:12px;width:12px;height:12px;
  background:radial-gradient(circle,#fff6da,#ffd77a 58%,rgba(255,200,90,.25));
  box-shadow:0 0 22px 8px rgba(255,214,120,.6),0 0 40px 16px rgba(255,190,90,.22)}
.nestShelf{position:absolute;right:15px;top:30px;width:56px;height:8px;border-radius:3px;pointer-events:none;z-index:1;
  background:linear-gradient(180deg,#ab7a4e,#7d5330);box-shadow:0 5px 12px rgba(0,0,0,.3)}
.nestShelf i{position:absolute;bottom:8px;width:11px;height:15px;border-radius:2px 2px 1px 1px;background:#f2e2c4}
.nestShelf i:nth-child(1){left:4px;background:#f7ecc9}
.nestShelf i:nth-child(2){left:19px;background:#dbcbaf;height:19px}
.nestShelf i:nth-child(3){left:35px;background:#eadcc0;height:13px}
.nestPlant{position:absolute;left:15px;bottom:58px;width:28px;height:34px;pointer-events:none;z-index:2}
.nestPlant i{position:absolute;bottom:0;left:10px;width:10px;height:13px;border-radius:2px;background:#b3603c}
.nestPlant i:nth-child(2){left:0;bottom:11px;width:13px;height:8px;border-radius:60% 10% 60% 10%;
  background:#4e8f62;transform:rotate(-26deg)}
.nestPlant i:nth-child(3){left:14px;bottom:12px;width:13px;height:8px;border-radius:10% 60% 10% 60%;
  background:#5aa06e;transform:rotate(26deg)}

/* ── v99 粉彩游园会：可爱气泡 + 花瓣 + 彩旗灯笼 ── */
.nestBunting{position:absolute;left:0;right:0;top:2px;height:16px;z-index:2;pointer-events:none;
  background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='30' height='14'><polygon points='0,0 15,0 7.5,12' fill='%23ff9ec4'/><polygon points='15,0 30,0 22.5,12' fill='%23ffd76b'/></svg>");
  background-repeat:repeat-x;background-size:30px 14px;opacity:.95}
.nestLanterns{position:absolute;left:0;right:0;top:15px;height:12px;z-index:2;pointer-events:none;
  background-image:radial-gradient(circle,#ffe38a 2px,transparent 3px),radial-gradient(circle,#ff9ec4 2px,transparent 3px);
  background-size:24px 12px,24px 12px;background-position:0 0,12px 5px;opacity:.85}
.nestBubble{
  z-index:7;bottom:150px;max-width:76%;padding:10px 15px;
  background:linear-gradient(180deg,#fff8fc,#ffeaf5);
  color:#6b4a5e;border:2px solid #ffb3d1;border-radius:16px;
  box-shadow:0 9px 22px rgba(210,120,165,.3);
  font-size:12.5px;line-height:1.72;font-weight:500
}
.nestBubble:before{content:'🌸';position:absolute;top:-16px;right:-4px;font-size:16px;transform:rotate(12deg);
  filter:drop-shadow(0 1px 2px rgba(200,120,160,.35))}
.nestBubble:after{content:'';position:absolute;left:50%;bottom:-8px;transform:translateX(-50%);
  width:0;height:0;border-left:8px solid transparent;border-right:8px solid transparent;border-top:9px solid #ffb3d1}
/* 实景背景场景：隐藏房间道具，只留小家伙/气泡/花瓣 */
.nestScene[data-sky="photo"] .nestWin,
.nestScene[data-sky="photo"] .nestShelf,
.nestScene[data-sky="photo"] .nestPlant,
.nestScene[data-sky="photo"] .nestFloor,
.nestScene[data-sky="photo"] .nestRug,
.nestScene[data-sky="photo"] .nestBunting,
.nestScene[data-sky="photo"] .nestLanterns{display:none}
.nestPetals{position:absolute;inset:0;overflow:hidden;pointer-events:none;z-index:4}
.nestPetal{position:absolute;top:-14px;animation-name:nestPetalFall;animation-timing-function:linear;animation-fill-mode:forwards;
  opacity:.95;filter:drop-shadow(0 1px 1px rgba(190,130,170,.3))}
@keyframes nestPetalFall{
  0%{transform:translateY(-12px) translateX(0) rotate(0);opacity:0}
  12%{opacity:.95}
  100%{transform:translateY(240px) translateX(var(--sway,0px)) rotate(220deg);opacity:0}
}
.nestPetalBurst{position:absolute;pointer-events:none;animation:nestPetalUp 1.1s ease-out forwards;
  filter:drop-shadow(0 2px 3px rgba(190,130,170,.3))}
@keyframes nestPetalUp{
  0%{transform:translate(-50%,0) scale(.3);opacity:0}
  20%{opacity:1}
  100%{transform:translate(calc(-50% + var(--dx,0px)),var(--dy,-80px)) scale(1.12);opacity:0}
}
/* 粉彩房间：把原来偏木色的地面/窗/地毯调软 */
.nestFloor{background:linear-gradient(180deg,rgba(255,222,240,.55),rgba(226,160,200,.8));
  border-top:2px solid rgba(255,255,255,.55);box-shadow:inset 0 9px 22px rgba(150,80,120,.16)}
.nestRug{background:radial-gradient(circle,rgba(255,238,248,.72),rgba(255,200,225,.28) 62%,transparent 76%)}
.nestWin{border-color:rgba(255,255,255,.72);box-shadow:0 7px 18px rgba(150,100,140,.24),inset 0 0 20px rgba(255,255,255,.26)}
.nestShelf{background:linear-gradient(180deg,#c98fae,#9c6484)}
.nestPlant i:nth-child(1){background:#c9748f}

/* 小凉页：公告 / 小凉的信 两个入口 */
.xdLinks{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:16px 0 0}
.xdLink{position:relative;display:flex;flex-direction:column;gap:3px;align-items:flex-start;
  padding:13px 15px;border-radius:14px;cursor:pointer;font-family:inherit;text-align:left;
  border:1px solid var(--line);background:var(--onCard);color:var(--tx);
  -webkit-tap-highlight-color:transparent;transition:transform .16s,border-color .16s}
.xdLink:active{transform:scale(.98)}
.xdLink i{font-size:18px;font-style:normal}
.xdLink b{font-size:13.5px;font-weight:600}
.xdLink span{font-size:11px;color:var(--tx3)}
.xdLink .xdDot{position:absolute;top:11px;right:12px;width:7px;height:7px;border-radius:50%;display:none;
  background:var(--g2);box-shadow:0 0 8px var(--g2)}
.xdLink .xdDot.on{display:block}

/* ════════ 极简（治愈）模式 ════════ */
.healItem{
  display:flex;align-items:center;gap:12px;padding:14px 14px;border-radius:14px;cursor:pointer;
  border:1px solid var(--line);background:var(--onCard);transition:.16s;
  -webkit-tap-highlight-color:transparent
}
.healItem:active{transform:scale(.98)}
.healItem .he{font-size:24px;flex-shrink:0;width:30px;text-align:center}
.healItem b{display:block;font-size:14.5px;color:var(--tx);font-weight:600}
.healItem span:not(.he):not(.ha){font-size:11.5px;color:var(--tx3);margin-top:2px}
.healItem .ha{margin-left:auto;font-size:18px;color:var(--tx3);flex-shrink:0}
/* 极简模式：隐藏页面标签栏与大部分底部 Tab */
body.heal .pageTabs{display:none!important}
body.heal nav.botTabs a[data-bt]:not([data-bt="now"]):not([data-bt="xd"]):not([data-bt="noise"]){display:none}
body.heal .pgWrap{display:none!important}
body.heal .pgWrap[data-pg="now"],body.heal .pgWrap[data-pg="me"],body.heal .pgWrap[data-pg="noise"]{display:block!important}
/* 极简模式：隐藏大标题区 */
body.heal header .tags,body.heal header .sub{display:none}
body.heal header h1{font-size:26px}

/* 使用说明列表 */
.helpList{display:grid;gap:7px}
.helpItem{
  display:flex;align-items:center;gap:10px;padding:11px 13px;border-radius:12px;cursor:pointer;
  border:1px solid var(--line);background:var(--onCard);transition:.16s;
  -webkit-tap-highlight-color:transparent
}
.helpItem:active{transform:scale(.985)}
.helpItem .hiT{font-size:13.5px;color:var(--tx);flex-shrink:0}
.helpItem .hiD{font-size:11.5px;color:var(--tx3);margin-left:auto;text-align:right;line-height:1.4}
.helpItem .hiA{font-size:17px;color:var(--tx3);flex-shrink:0;width:12px}
.helpCt{margin-top:16px;padding:15px 15px 14px;border-radius:14px;
  border:1px solid rgba(0,229,255,.2);background:rgba(0,229,255,.05)}
.helpCt .wxLine{margin-top:8px;font-size:13.5px;color:var(--tx2)}
.helpCt .wxNum{color:var(--g2);font-size:16px;letter-spacing:.08em}
/* ════════ 通用弹窗 / 说明 / 皮肤 / 公告 ════════ */
/* 说明小圆钮：每个功能标题旁挂一个 */
.qMark{
  display:inline-grid;place-items:center;width:18px;height:18px;margin-left:7px;
  border-radius:50%;border:1px solid var(--line);background:var(--onCard);
  color:var(--tx3);font-size:11px;font-weight:700;line-height:1;cursor:pointer;
  vertical-align:middle;position:relative;top:-1px;flex-shrink:0;
  -webkit-tap-highlight-color:transparent;transition:.16s;font-family:inherit;padding:0
}
.qMark:hover{color:var(--g2);border-color:var(--g2);background:rgba(77,226,200,.09)}
.qMark:active{transform:scale(.9)}
/* 通用弹窗（底部抽屉式，手机友好） */
.modal{
  position:fixed;left:0;right:0;bottom:0;top:0;z-index:8700;display:none;
  align-items:flex-end;justify-content:center;
  background:rgba(3,3,8,.7);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);
  /* 底部留白由 JS 按实际 Tab 高度动态设置，这里给最小值 */
  padding:20px 14px calc(24px + env(safe-area-inset-bottom,0px));box-sizing:border-box
}
.modal.on{display:flex}
.modalBox{
  width:100%;max-width:520px;max-height:min(84vh,760px);overflow-y:auto;
  -webkit-overflow-scrolling:touch;overscroll-behavior:contain;touch-action:pan-y;-webkit-overflow-scrolling:touch;position:relative;z-index:1;
  border-radius:20px;border:1px solid var(--line);background:var(--card);
  box-shadow:0 18px 60px rgba(0,0,0,.6);
  padding:22px 20px 20px;
  animation:mIn .32s cubic-bezier(.2,.9,.3,1)
}
@keyframes mIn{from{opacity:0;transform:translateY(26px)}to{opacity:1;transform:translateY(0)}}
.modalBox h3{font-size:17px;margin-bottom:6px;display:flex;align-items:center;gap:8px}
.modalBox h3 .mi{font-size:20px}
.modalSub{font-size:12px;color:var(--tx3);margin-bottom:14px;line-height:1.7}
.modalBody{font-size:14px;line-height:1.95;color:var(--tx2)}
.modalBody b{color:var(--tx);font-weight:600}
.modalBody p{margin:9px 0}
.modalBody .mTip{margin-top:13px;padding:11px 13px;border-radius:11px;font-size:12.5px;line-height:1.85;
  background:rgba(77,226,200,.07);border:1px solid rgba(77,226,200,.19);color:var(--tx2)}
.modalBody .mWarn{margin-top:13px;padding:11px 13px;border-radius:11px;font-size:12.5px;line-height:1.85;
  background:rgba(255,184,107,.08);border:1px solid rgba(255,184,107,.22);color:var(--tx2)}
.modalBody ul{margin:8px 0 8px 19px}
.modalBody li{margin:5px 0}
.modalBtns{margin-top:20px;display:flex;gap:9px;flex-wrap:wrap}
.modalBtns .btn{flex:1;min-width:96px;padding:11px 14px;font-size:13.5px}
/* 解锁徽章 */
.unlockTag{display:inline-flex;align-items:center;gap:6px;padding:5px 11px;border-radius:999px;
  font-size:11.5px;letter-spacing:.06em;background:linear-gradient(120deg,rgba(193,92,240,.2),rgba(77,226,200,.14));
  border:1px solid rgba(193,92,240,.3);color:var(--tx);margin-bottom:11px}
/* 皮肤选择 */
.skinGrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(104px,1fr));gap:10px;margin-top:6px}
.skinItem{
  padding:12px 10px;border-radius:14px;cursor:pointer;text-align:center;
  border:1px solid var(--line);background:var(--onCard);transition:.18s;
  -webkit-tap-highlight-color:transparent
}
.skinItem:active{transform:scale(.96)}
.skinItem.on{border-color:var(--g2);background:rgba(77,226,200,.09);box-shadow:0 0 0 1px rgba(77,226,200,.28)}
.skinItem.locked{opacity:.5}
.skinSw{height:34px;border-radius:9px;margin-bottom:8px;display:grid;place-items:center;font-size:16px}
.skinName{font-size:12.5px;color:var(--tx)}
.skinLv{font-size:10.5px;color:var(--tx3);margin-top:3px}
/* 每日弹窗（小凉的信） */
.letterHd{display:flex;align-items:center;gap:11px;margin-bottom:14px}
.letterHd .av{width:42px;height:42px;border-radius:50%;display:grid;place-items:center;flex-shrink:0;
  background:linear-gradient(130deg,var(--g),var(--g2));color:#fff;font-size:17px;font-weight:700;
  box-shadow:0 0 22px rgba(0,229,255,.32)}
.letterHd b{display:block;font-size:15.5px}
.letterHd span{font-size:11.5px;color:var(--tx3)}
.letterTx{font-size:14.5px;line-height:2.05;color:var(--tx);white-space:pre-wrap}
.letterTx .sign{display:block;margin-top:16px;font-size:13px;color:var(--tx2)}
/* 飘窗（泄愤屋连击 / 成就播报） */
.floaties{position:fixed;left:0;right:0;top:0;z-index:400;pointer-events:none;overflow:hidden}
.floatie{
  position:absolute;left:50%;transform:translateX(-50%);
  padding:13px 20px;border-radius:15px;font-size:14px;line-height:1.8;text-align:center;
  background:rgba(20,20,31,.94);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);
  border:1px solid var(--line);box-shadow:0 12px 40px rgba(0,0,0,.5);
  max-width:82vw;animation:fUp 2.8s ease-out forwards
}
@keyframes fUp{
  0%{opacity:0;transform:translateX(-50%) translateY(16px) scale(.94)}
  12%{opacity:1;transform:translateX(-50%) translateY(0) scale(1)}
  78%{opacity:1;transform:translateX(-50%) translateY(-14px) scale(1)}
  100%{opacity:0;transform:translateX(-50%) translateY(-52px) scale(.97)}
}
/* 复制成功的小勾 */
.copyOK{position:fixed;left:50%;top:50%;transform:translate(-50%,-50%);z-index:430;
  padding:15px 26px;border-radius:16px;background:rgba(20,20,31,.96);border:1px solid var(--g2);
  color:var(--tx);font-size:14px;box-shadow:0 12px 44px rgba(0,0,0,.55);
  display:none;align-items:center;gap:9px;animation:mIn .22s ease-out}
.copyOK.on{display:flex}

/* ════════ 快捷导航：搜索按钮 + 底部 Tab + 抽屉 ════════ */
/* 注意：这三个元素必须放在 #mainView 之外，否则会被 .shell 的 flex 布局吃掉 */
.navFab{
  position:fixed;right:14px;bottom:calc(20px + env(safe-area-inset-bottom,0px));z-index:200;
  width:48px;height:48px;border-radius:50%;border:1px solid rgba(155,107,255,.45);
  background:linear-gradient(135deg,rgba(155,107,255,.92),rgba(0,229,255,.8));
  color:#fff;font-size:20px;display:flex;align-items:center;justify-content:center;
  cursor:pointer;box-shadow:0 8px 26px rgba(0,0,0,.5);-webkit-tap-highlight-color:transparent
}
.navFab:active{transform:scale(.93)}

/* 底部 Tab：桌面端完全不显示，只给手机用 */
/* 防御式写法：显式清掉 top/margin/width，避免被任何全局 nav 规则污染 */
nav.botTabs{
  display:none;position:fixed;top:auto;left:0;right:0;bottom:0;
  width:100%;max-width:100vw;height:auto;min-height:0;
  margin:0;padding:0 0 env(safe-area-inset-bottom,0px);
  z-index:190;overflow:visible;
  background:var(--botBg);backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);
  border-top:1px solid var(--line);
  box-sizing:border-box
}
@media(max-width:900px){nav.botTabs{display:flex;align-items:stretch}}
/* 手机端：搜索按钮抬到 Tab 之上；桌面端在右下 */
@media(max-width:900px){
  .navFab{width:44px;height:44px;font-size:18px;bottom:calc(68px + env(safe-area-inset-bottom,0px))}
}
/* 没登录时（mainView 隐藏）不要显示导航层 */
#mainView.hidden ~ nav.botTabs,
#mainView.hidden ~ .navFab,
#mainView.hidden ~ .navPanel{display:none!important}
/* v92：登录/注册页（未进站）隐藏全部导航层：底栏 · 搜索 · 悬浮菜单 */
body.authMode nav.botTabs,
body.authMode #navFab,
body.authMode #navPanel,
body.authMode #fabMenu,
body.authMode #fmPanel{display:none!important}
nav.botTabs a{
  flex:1 1 0;min-width:0;text-decoration:none;color:var(--tx3);font-size:9.5px;
  display:flex;flex-direction:column;align-items:center;gap:3px;
  padding:8px 1px 9px;-webkit-tap-highlight-color:transparent;min-height:52px;justify-content:center
}
nav.botTabs a i{font-style:normal;font-size:18px;line-height:1}
nav.botTabs a.on{color:var(--g2);background:transparent;border-color:transparent}
nav.botTabs a.on i{filter:drop-shadow(0 0 7px rgba(0,229,255,.55))}

/* 搜索抽屉 */
.navPanel{
  position:fixed;top:0;left:0;right:0;bottom:0;z-index:300;background:rgba(4,4,8,.86);
  backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);display:none;flex-direction:column;
  padding:calc(14px + env(safe-area-inset-top,0px)) 0 env(safe-area-inset-bottom,0px);
  box-sizing:border-box
}
.navPanel.on{display:flex}
.navPanel .npHead{display:flex;gap:9px;padding:0 14px 12px;align-items:center}
.navPanel input[type=search]{
  flex:1;height:44px;border-radius:13px;padding:0 15px;font-size:16px;
  border:1px solid var(--line);background:var(--onCard);color:var(--tx)
}
.navPanel input[type=search]::placeholder{color:var(--tx3)}
.navPanel .npList{flex:1;overflow-y:auto;padding:0 14px 24px}
.npItem{
  display:flex;align-items:center;gap:12px;padding:13px 14px;border-radius:13px;
  border:1px solid var(--line);background:var(--onCard);margin-bottom:8px;
  cursor:pointer;-webkit-tap-highlight-color:transparent
}
.npItem:active{background:rgba(155,107,255,.16);border-color:rgba(155,107,255,.4)}
.npItem i{font-style:normal;font-size:19px;width:24px;text-align:center;flex-shrink:0}
.npItem .npT{font-size:14.5px;color:var(--tx);font-weight:500}
.npItem .npD{font-size:11.5px;color:var(--tx3);margin-top:2px;line-height:1.5}
.npItem mark{background:transparent;color:var(--g2);font-weight:700}
.npSec{font-size:10px;letter-spacing:.2em;color:var(--tx3);padding:12px 4px 7px;opacity:.8}
.npNone{padding:30px 14px;text-align:center;color:var(--tx3);font-size:13px;line-height:1.9}

/* 设置页顶部快捷入口 */
.quickBar{
  display:flex;gap:8px;flex-wrap:wrap;margin:0 0 16px;padding:12px 13px;
  border:1px solid rgba(155,107,255,.28);border-radius:15px;
  background:linear-gradient(135deg,rgba(155,107,255,.1),rgba(0,229,255,.045))
}
.quickBar .qbT{width:100%;font-size:11px;letter-spacing:.16em;color:var(--tx3);margin-bottom:2px}
.quickBar button{
  flex:1;min-width:88px;padding:10px 6px;border-radius:11px;font-size:12.5px;
  border:1px solid var(--line);background:var(--onCard);color:var(--tx);
  cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:3px;
  -webkit-tap-highlight-color:transparent;min-height:52px;justify-content:center
}
.quickBar button i{font-style:normal;font-size:17px}
.quickBar button:active{background:rgba(155,107,255,.2)}

/* 注意：必须限定类名，不能用裸 nav —— 否则会命中底部 Tab 的 <nav class="botTabs"> */
nav.sidenav{
  position:sticky;top:0;z-index:50;margin:0 -18px;padding:10px 18px;
  background:rgba(8,8,14,.82);backdrop-filter:blur(16px);border-bottom:1px solid var(--line);
  display:flex;gap:6px;align-items:center;overflow-x:auto;scrollbar-width:none
}
nav.sidenav::-webkit-scrollbar{display:none}
nav.sidenav .brand{font-size:12px;letter-spacing:.2em;color:var(--tx3);white-space:nowrap;padding-right:8px}
nav.sidenav a{font-size:13px;color:var(--tx2);text-decoration:none;padding:6px 11px;border-radius:999px;white-space:nowrap;transition:.18s;border:1px solid transparent}
nav.sidenav a:hover{color:var(--tx);background:var(--onCard)}
nav.sidenav a.on{color:#fff;border-color:rgba(193,92,240,.5);background:rgba(193,92,240,.16)}
nav.sidenav .who{margin-left:auto;font-size:12px;color:var(--tx3);white-space:nowrap;display:flex;align-items:center;gap:7px}
nav.sidenav .who b{color:var(--g2);font-weight:600}
nav.sidenav .who button{background:none;border:1px solid var(--line);color:var(--tx2);border-radius:8px;padding:2px 8px;font-size:11.5px;cursor:pointer;font-family:inherit}
nav.sidenav .who button:hover{border-color:var(--red);color:var(--red)}

header{padding:52px 0 30px;text-align:center}
.eyebrow{font-size:10.5px;letter-spacing:.34em;color:var(--tx3);text-transform:uppercase}
h1{font-size:clamp(32px,7.2vw,58px);font-weight:800;letter-spacing:-.025em;margin:12px 0 8px;
  background:linear-gradient(100deg,#fff 18%,var(--g2) 52%,var(--g) 92%);
  -webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}
.sub{color:var(--tx2);font-size:15px}
.tags{display:flex;gap:8px;justify-content:center;flex-wrap:wrap;margin-top:18px}
.tag{padding:5px 13px;border-radius:999px;border:1px solid var(--line);font-size:12px;color:var(--tx2);background:var(--onCard)}

section{margin-top:22px;scroll-margin-top:70px}
/* 卡片渐变：底色用 --card，过渡色用 --card2（各皮肤分别定，不要写死深色） */
.card{background:linear-gradient(180deg,var(--card),var(--card2));border:1px solid var(--line);border-radius:var(--r);padding:24px}
.grid{display:grid;gap:18px}
.g2{grid-template-columns:1fr 1fr}
.g3{grid-template-columns:repeat(3,1fr)}
h2{font-size:14.5px;font-weight:600;display:flex;align-items:center;gap:9px;margin-bottom:3px}
h2::before{content:"";width:3px;height:15px;border-radius:2px;background:var(--g)}
h2 .badge{margin-left:auto;font-size:11px;color:var(--tx3);font-weight:400}
.hint{font-size:12.5px;color:var(--tx3);margin-bottom:16px}
.p{color:var(--tx2);font-size:14px;margin-top:12px}
b{color:var(--tx)}

/* 按钮 */
.btn{padding:11px 19px;border-radius:12px;border:1px solid var(--line);background:var(--onCard);color:var(--tx);cursor:pointer;font-size:14px;font-family:inherit;transition:.18s}
.btn:hover{border-color:var(--g2);background:rgba(77,226,200,.08);transform:translateY(-1px)}
.btn.pri{background:linear-gradient(120deg,var(--g),#8a4de2);border:none;font-weight:600}
.btn.warm{background:linear-gradient(120deg,var(--w),#ff7ba8);border:none;font-weight:600;color:#2a1a10}
.btn.sm{padding:7px 13px;font-size:12.5px}
.btn.blue{background:linear-gradient(120deg,var(--blue),#7c5cff);border:none;font-weight:600}
.btn[disabled]{opacity:.4;cursor:not-allowed;transform:none}

input[type=text],input[type=password],input[type=number],textarea,select{
  width:100%;padding:12px 14px;border-radius:12px;border:1px solid var(--line);
  background:var(--onCard);color:var(--tx);font-size:14.5px;font-family:inherit;outline:none
}
input:focus,textarea:focus,select:focus{border-color:var(--g)}
label.fl{display:block;font-size:12px;color:var(--tx3);margin:0 0 6px}

/* ── 登录 ── */
.auth{max-width:460px;margin:8vh auto 0}
.authCard{background:linear-gradient(180deg,var(--card),var(--card2));border:1px solid var(--line);border-radius:22px;padding:34px 30px}
.auth h3{font-size:22px;font-weight:800;letter-spacing:-.02em;text-align:center;margin-bottom:6px}
.auth .s{text-align:center;color:var(--tx2);font-size:13.5px;margin-bottom:24px}
.field{margin-bottom:15px}
.accList{display:grid;gap:9px;margin-bottom:18px}
.accRow{display:flex;align-items:center;gap:12px;padding:12px 14px;border-radius:13px;border:1px solid var(--line);background:var(--onCard);cursor:pointer;transition:.18s}
.accRow:hover{border-color:var(--g2);background:rgba(77,226,200,.06)}
.accAv{width:38px;height:38px;border-radius:11px;display:grid;place-items:center;font-size:17px;flex-shrink:0;font-weight:700}
.accRow .nm{font-size:14.5px;font-weight:600}
.accRow .mt{font-size:11.5px;color:var(--tx3)}
.accRow .x{margin-left:auto;color:var(--tx3);font-size:16px;padding:2px 6px;border-radius:6px}
.accRow .x:hover{color:var(--red)}
.tabs{display:flex;gap:6px;margin-bottom:20px;padding:4px;background:var(--onCard);border-radius:12px;border:1px solid var(--line)}
.tabs button{flex:1;padding:9px;border-radius:9px;border:none;background:none;color:var(--tx2);cursor:pointer;font-size:13.5px;font-family:inherit;transition:.18s}
.tabs button.on{background:linear-gradient(120deg,var(--g),#8a4de2);color:#fff;font-weight:600}
.avatarPick{display:flex;gap:7px;flex-wrap:wrap;margin-top:2px}
.avatarPick button{width:38px;height:38px;border-radius:11px;border:1px solid var(--line);cursor:pointer;font-size:17px;background:var(--onCard)}
.avatarPick button.on{border-color:var(--g);background:rgba(193,92,240,.2)}
.err{color:var(--red);font-size:12.5px;min-height:18px;margin-top:6px}

/* ── 天气 ── */
.wx{display:flex;align-items:center;gap:18px;flex-wrap:wrap}
.wxIcon{font-size:44px;line-height:1;filter:drop-shadow(0 0 14px var(--onCard))}
.wxT{font-size:34px;font-weight:800;letter-spacing:-.03em}
.wxM{font-size:13px;color:var(--tx2)}
.wxTip{flex:1;min-width:190px;font-size:14px;color:var(--g2);background:rgba(77,226,200,.07);border:1px solid rgba(77,226,200,.2);border-radius:12px;padding:11px 14px}
.city{font-size:12px;color:var(--tx3);margin-top:4px}
.clickable{cursor:pointer}

/* ── 分数 ── */
.scRow{display:flex;gap:7px;margin:18px 0 8px;flex-wrap:wrap}
.scRow button{flex:1;min-width:38px;height:54px;border-radius:12px;border:1px solid var(--line);background:var(--onCard);color:var(--tx2);font-size:19px;cursor:pointer;transition:.18s;font-family:inherit}
.scRow button:hover{border-color:var(--g);color:var(--tx);transform:translateY(-2px)}
.scRow button.on{background:linear-gradient(180deg,rgba(193,92,240,.3),rgba(77,226,200,.14));border-color:var(--g);color:#fff;box-shadow:0 0 22px rgba(193,92,240,.3)}
.verdict{font-size:14.5px;color:var(--g2);min-height:24px;margin-top:12px}

/* ── 笑话/一句 ── */
.joke{font-size:17px;line-height:1.6;min-height:76px;margin:6px 0 4px}
.catBar{display:flex;gap:7px;flex-wrap:wrap}
.catBtn{padding:7px 13px;border-radius:999px;border:1px solid var(--line);background:transparent;color:var(--tx2);font-size:12.5px;cursor:pointer;font-family:inherit;transition:.16s;position:relative}
.catBtn:hover{border-color:var(--g2);color:var(--g2)}
.catBtn.on{background:linear-gradient(120deg,var(--g),var(--g2));color:#0b0b12;border-color:transparent;font-weight:700}
.catBtn.lk{opacity:.42;filter:blur(.4px)}
.catBtn .ck{margin-left:4px;font-size:10px;opacity:.8}
.joke .qa{color:var(--g2);font-size:12px;display:block;margin-top:9px}
.shake{animation:sh .4s}
@keyframes sh{0%,100%{transform:none}25%{transform:translateX(-6px) rotate(-1deg)}75%{transform:translateX(6px) rotate(1deg)}}
.dq{font-size:clamp(17px,3.2vw,23px);font-weight:600;line-height:1.55;min-height:70px}
.dqBy{font-size:12.5px;color:var(--tx3);margin-top:12px}

/* ── 打气 ── */
.cheer{min-height:96px;display:flex;align-items:center;justify-content:center;text-align:center;font-size:clamp(19px,4vw,28px);font-weight:800;line-height:1.4}
.combo{text-align:center;font-size:12.5px;color:var(--tx3);margin-top:10px}
.combo b{color:var(--w);font-size:16px}

/* ── 白噪音 ── */
.noiseGrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(92px,1fr));gap:9px}
.nBtn{padding:14px 8px;border-radius:13px;border:1px solid var(--line);background:var(--onCard);color:var(--tx2);cursor:pointer;text-align:center;transition:.18s;font-family:inherit}
.nBtn:hover{border-color:var(--g2);color:var(--tx)}
.nBtn.on{border-color:var(--g);background:rgba(193,92,240,.16);color:#fff}
.nBtn .e{display:block;font-size:21px;margin-bottom:4px}
.nBtn .l{font-size:12px}
.nBtn .d{display:block;font-size:9.5px;color:var(--tx3);margin-top:3px;line-height:1.4}
/* 背景音乐盒 */
.bgmBox{margin-top:16px;padding:15px 15px 14px;border-radius:15px;
  border:1px solid var(--line);background:var(--onCard)}
.bgmHd{display:flex;align-items:center;gap:9px;margin-bottom:11px}
.bgmHd b{font-size:13.5px}
.bgmHd span{margin-left:auto;font-size:11.5px;color:var(--tx3)}
.bgmRow{display:flex;align-items:center;gap:11px;flex-wrap:wrap}
.bgmRow .btn{flex-shrink:0;padding:9px 15px;font-size:12.5px}
.bgmVol{flex:1;min-width:150px;display:flex;align-items:center;gap:8px;font-size:11.5px;color:var(--tx3)}
.bgmVol input{flex:1;min-width:0}
.bgmNow{margin-top:12px;font-size:13px;color:var(--tx);text-align:center;padding:9px 12px;
  border-radius:11px;background:var(--onCard);border:1px solid var(--line)}
.bgmList{margin-top:10px;display:grid;gap:7px}
.bgmItem{
  display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:12px;cursor:pointer;
  border:1px solid var(--line);background:var(--onCard);transition:.16s;
  -webkit-tap-highlight-color:transparent
}
.bgmItem:active{transform:scale(.985)}
.bgmItem.on{border-color:var(--g2);background:rgba(77,226,200,.08)}
.bgmItem .be{font-size:17px;flex-shrink:0;width:24px;text-align:center}
.bgmItem .bn{font-size:13px;color:var(--tx);flex-shrink:0}
.bgmItem .bn i{font-style:normal;font-size:11px;color:var(--tx3);margin-left:5px}
.bgmItem .bd{margin-left:auto;font-size:11px;color:var(--tx3);text-align:right;line-height:1.4}
/* 进站自动播放曲目选择器 */
.bgmEnterRow{margin-top:12px;border-top:1px solid var(--line);padding-top:11px}
.bgmHd2{font-size:13px;font-weight:700;color:var(--tx);margin-bottom:8px}
.bgmEnterOpts{display:flex;flex-wrap:wrap;gap:7px}
.beOpt{font-size:12px;padding:7px 11px;border-radius:10px;background:rgba(255,255,255,.06);border:1px solid var(--line);color:var(--tx2);cursor:pointer;-webkit-tap-highlight-color:transparent;transition:background .2s,border-color .2s}
.beOpt.on{background:rgba(160,140,255,.22);border-color:rgba(160,140,255,.5);color:var(--tx)}
.beOpt:active{transform:scale(.96)}

/* 背景音乐悬浮球 */
.bgmFabWrap{position:fixed;right:13px;z-index:250;display:flex;flex-direction:column;
  align-items:flex-end;gap:9px;pointer-events:none}
.bgmFab{
  pointer-events:auto;width:44px;height:44px;border-radius:50%;cursor:pointer;
  display:grid;place-items:center;font-size:19px;color:#fff;font-family:inherit;
  background:linear-gradient(135deg,rgba(155,107,255,.9),rgba(0,229,255,.78));
  border:1px solid rgba(0,229,255,.34);
  box-shadow:0 8px 24px rgba(0,0,0,.46);
  -webkit-tap-highlight-color:transparent;transition:transform .18s
}
.bgmFab:active{transform:scale(.92)}
.bgmFab.on{background:linear-gradient(135deg,rgba(0,229,255,.9),rgba(155,107,255,.82))}
.bgmFabPop{
  pointer-events:auto;width:min(280px,calc(100vw - 76px));max-height:min(62vh,440px);
  overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;
  display:none;flex-direction:column;gap:8px;
  padding:13px 13px 12px;border-radius:16px;
  background:var(--card);border:1px solid var(--line);
  box-shadow:0 16px 48px rgba(0,0,0,.58);
  animation:mIn .24s cubic-bezier(.2,.9,.3,1)
}
.bgmFabWrap.on .bgmFabPop{display:flex}
.bfpHd{font-size:12.5px;color:var(--tx3);letter-spacing:.08em}
.bfpRow{display:flex;align-items:center;gap:9px;padding-top:8px;border-top:1px solid var(--line)}
.bfpRow span{flex:1;min-width:0;font-size:12.5px;color:var(--tx);overflow:hidden;
  text-overflow:ellipsis;white-space:nowrap;cursor:pointer}
.bfpRow .btn{flex-shrink:0;padding:6px 14px;font-size:12px}
.vol{display:flex;align-items:center;gap:11px;margin-top:15px;font-size:12.5px;color:var(--tx3)}
input[type=range]{flex:1;accent-color:var(--g);padding:0;background:none;border:none}

/* ── 番茄钟 ── */
.pomo{display:flex;align-items:center;gap:24px;flex-wrap:wrap}
.pomoT{font-size:52px;font-weight:800;letter-spacing:-.04em;font-variant-numeric:tabular-nums;min-width:150px}
.pomoT.run{color:var(--g2);text-shadow:0 0 26px rgba(77,226,200,.34)}
.pomoDot{width:11px;height:11px;border-radius:50%;background:var(--onCard);display:inline-block;margin-right:6px}
.dqLock{display:none;margin-top:14px;padding:13px 15px;border-radius:13px;font-size:12.5px;line-height:1.8;color:var(--tx3);
  background:var(--onCard);border:1px dashed var(--line)}
.dqLock.on{display:block}
.dqLock b{color:var(--tx2)}
.caseNav{margin-top:4px}
.caseMsgBox{margin-top:18px;padding:16px;border-radius:14px;background:var(--onCard);border:1px solid var(--line)}
.caseMsgBox b{font-size:13.5px;color:var(--tx);margin-right:8px}
.caseMsgList{margin-top:10px;font-size:12.5px;line-height:1.8;color:var(--tx2)}
.caseAwake{margin-top:16px;padding:16px 18px;border-radius:14px;
  background:linear-gradient(120deg,rgba(193,92,240,.09),rgba(77,226,200,.07));border:1px solid rgba(193,92,240,.28)}
.caseAwake b{font-size:13.5px;color:var(--g2)}
.pomoDot.on{background:var(--g);box-shadow:0 0 12px var(--g)}
.scBar{display:flex;gap:7px;flex-wrap:wrap;margin:14px 0 16px}
.scBtn{padding:7px 13px;border-radius:999px;border:1px solid var(--line);background:transparent;color:var(--tx2);font-size:12.5px;cursor:pointer;font-family:inherit;transition:.16s}
.scBtn:hover{border-color:var(--g2);color:var(--g2)}
.scBtn.on{background:linear-gradient(120deg,var(--g),var(--g2));color:#0b0b12;border-color:transparent;font-weight:700}
.pomoSay{font-size:12.5px;color:var(--tx3);line-height:1.75;margin-bottom:12px;padding:9px 12px;border-radius:11px;background:var(--onCard);border-left:2px solid var(--g)}
.pomoDone{display:none;margin-top:14px;padding:16px 18px;border-radius:14px;font-size:15px;line-height:1.85;color:var(--tx);
  background:linear-gradient(120deg,rgba(255,214,102,.14),rgba(255,138,180,.1));border:1px solid rgba(255,214,102,.4)}
.pomoDone.on{display:block}
.pomoDone b{color:#ffd666}

/* ── 清单 / 打卡 ── */
.chk{list-style:none;display:grid;gap:8px}
.chk li{display:flex;align-items:flex-start;gap:11px;padding:12px 14px;border-radius:12px;background:var(--onCard);border:1px solid var(--line);font-size:14px;cursor:pointer;transition:.16s}
.chk li:hover{border-color:var(--g2)}
.chk li .bx{width:18px;height:18px;border-radius:5px;border:1.5px solid var(--line);flex-shrink:0;margin-top:2px;display:grid;place-items:center;font-size:11px;color:transparent}
.chk li.on .bx{background:var(--g2);border-color:var(--g2);color:#08312b}
.chk li.on>span:nth-child(2){opacity:.45;text-decoration:line-through}
.chk li .tagx{margin-left:auto;font-size:10.5px;color:var(--tx3);border:1px solid var(--line);border-radius:6px;padding:1px 6px;flex-shrink:0;align-self:center}
.tList{list-style:none;margin-top:16px;display:grid;gap:8px}
.tList li{display:flex;align-items:center;gap:11px;padding:12px 14px;border-radius:12px;background:var(--onCard);border:1px solid var(--line);font-size:14px}
.tList li.on{opacity:.5;text-decoration:line-through}
.tList li .x{margin-left:auto;background:none;border:none;color:var(--tx3);cursor:pointer;font-size:17px;padding:0 3px}
.tList li .x:hover{color:var(--red)}
.ring{position:relative;width:96px;height:96px;flex-shrink:0}
.ring svg{transform:rotate(-90deg)}
.ring span{position:absolute;inset:0;display:grid;place-items:center;font-size:19px;font-weight:800}

/* ── 话术库 ── */
.tabsBar{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:16px}
.syncSteps{display:flex;gap:10px;flex-wrap:wrap;margin-top:14px}
.syncSteps .ss{flex:1;min-width:190px;display:flex;gap:9px;align-items:flex-start;padding:13px;border-radius:13px;background:var(--onCard);border:1px solid var(--line)}
.syncSteps .ss i{flex-shrink:0;width:21px;height:21px;border-radius:50%;background:linear-gradient(120deg,var(--g),var(--g2));color:#0b0b12;font-size:11.5px;font-weight:800;display:flex;align-items:center;justify-content:center;font-style:normal;margin-top:1px}
.syncSteps .ss div{font-size:12.5px;color:var(--tx3);line-height:1.7}
.syncSteps .ss b{color:var(--tx);font-size:13px}
.ckAuto{user-select:none}
.bakBar{margin:0 0 18px;padding:14px 17px;border-radius:15px;font-size:13px;line-height:1.8;color:var(--tx2);
  background:rgba(255,190,120,.07);border:1px solid rgba(255,190,120,.32)}
.bakBar b{color:#ffbe78}
.bakBar .bb{display:flex;gap:9px;align-items:center;flex-wrap:wrap;margin-top:10px}
.tabsBar button{padding:7px 13px;border-radius:999px;border:1px solid var(--line);background:var(--onCard);color:var(--tx2);cursor:pointer;font-size:12.5px;font-family:inherit;transition:.16s}
.tabsBar button.on{border-color:var(--g);background:rgba(193,92,240,.18);color:#fff}
.say{border:1px solid var(--line);border-radius:14px;padding:15px 16px;margin-bottom:9px;background:var(--onCard);transition:.18s}
.say:hover{border-color:var(--g2);background:rgba(77,226,200,.04)}
.sayT{font-size:13.5px;font-weight:600;color:var(--w);margin-bottom:7px;display:flex;align-items:center;gap:8px}
.sayT .st{margin-left:auto;font-size:15px;color:var(--tx3);cursor:pointer}
.sayT .st:hover{color:var(--g2)}
.sayX{font-size:14px;color:var(--tx2);line-height:1.75;white-space:pre-wrap}
.sayX b{color:var(--tx)}
.sayT .useN{font-size:10px;font-weight:500;color:var(--g);background:rgba(77,226,200,.1);padding:1px 7px;border-radius:999px}
.sayA{display:flex;gap:7px;margin-top:10px}
.mini{font-size:11.5px;padding:4px 11px;border-radius:999px;border:1px solid var(--line);background:transparent;color:var(--tx3);cursor:pointer;font-family:inherit;transition:.15s}
.mini:hover{border-color:var(--g2);color:var(--g2)}
.saySpot{display:none;margin-top:12px;padding:14px 16px;border-radius:14px;font-size:14px;line-height:1.8;color:var(--tx);
  background:linear-gradient(120deg,rgba(77,226,200,.11),rgba(193,92,240,.11));border:1px solid var(--g2)}
.saySpot.on{display:block}
.saySpot b{color:var(--g)}
.sayTip{display:none;margin-top:10px;padding:12px 15px;border-radius:14px;font-size:13.5px;line-height:1.8;color:var(--tx2);
  background:rgba(255,214,102,.07);border:1px dashed rgba(255,214,102,.35)}
.sayTip.on{display:block}
.sayTip b{color:#ffd666}

/* ── 雷达图 ── */
.radarWrap{display:flex;gap:24px;align-items:center;flex-wrap:wrap;justify-content:center}
.skills{display:grid;gap:10px;flex:1;min-width:230px}
.sk{display:flex;align-items:center;gap:11px;font-size:13.5px;color:var(--tx2)}
.sk span:first-child{width:60px;flex-shrink:0}
.sk .dots{display:flex;gap:4px;flex:1}
.sk .dots button{flex:1;height:26px;border-radius:7px;border:1px solid var(--line);background:var(--onCard);cursor:pointer;font-size:12px;color:var(--tx3);font-family:inherit;transition:.15s}
.sk .dots button:hover{border-color:var(--g2)}
.sk .dots button.on{background:linear-gradient(180deg,rgba(193,92,240,.32),rgba(77,226,200,.16));border-color:var(--g);color:#fff}

/* ── 违禁词 ── */
.scanBox{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.flagged{background:rgba(255,107,129,.1);border:1px solid rgba(255,107,129,.32);border-radius:12px;padding:13px;font-size:13.5px;color:#ffbcc6;min-height:80px;white-space:pre-wrap}
.clean{background:rgba(77,226,200,.07);border:1px solid rgba(77,226,200,.22);border-radius:12px;padding:13px;font-size:13.5px;color:var(--g2);min-height:80px}
.flagged em{font-style:normal;background:rgba(255,107,129,.35);border-radius:4px;padding:0 4px;font-weight:600}

/* ── 复盘 ── */
.repGrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:12px}
.repGrid .f input{text-align:center;font-weight:700;font-size:17px}
.repList{display:grid;gap:9px;margin-top:16px}
.repItem{border:1px solid var(--line);border-radius:13px;padding:13px 15px;background:var(--onCard);font-size:13.5px}
.repItem .rh{display:flex;gap:12px;color:var(--tx3);font-size:11.5px;margin-bottom:7px;flex-wrap:wrap}
.repItem .rh b{color:var(--g2);font-weight:600}

/* ── 成就 ── */
.ach{display:grid;grid-template-columns:repeat(auto-fill,minmax(122px,1fr));gap:10px}
.aItem{padding:14px 10px;border-radius:13px;border:1px solid var(--line);background:var(--onCard);text-align:center}
.aItem.got{border-color:rgba(255,184,107,.5);background:rgba(255,184,107,.08)}
.aItem .e{font-size:22px;display:block;margin-bottom:5px;filter:grayscale(1) opacity(.4)}
.aItem.got .e{filter:none}
.aItem .n{font-size:12px;color:var(--tx2)}
.lvBar{height:8px;border-radius:99px;background:var(--onCard);overflow:hidden;margin-top:10px}
.lvBar i{display:block;height:100%;background:linear-gradient(90deg,var(--g),var(--w));border-radius:99px;transition:width .5s}

/* ── 每日一练 ── */
.drill{border:1px solid rgba(193,92,240,.3);border-radius:14px;padding:17px;background:linear-gradient(135deg,rgba(193,92,240,.1),rgba(77,226,200,.05))}
.drill .cat{font-size:11px;color:var(--g);letter-spacing:.16em;text-transform:uppercase;margin-bottom:8px}
.drill .ttl{font-size:17px;font-weight:700;margin-bottom:8px;line-height:1.4}
.drill .dsc{font-size:13.5px;color:var(--tx2);line-height:1.75}
.drill .why{margin-top:11px;font-size:12.5px;color:var(--g2);border-top:1px dashed var(--line);padding-top:11px}
.vidRef{display:inline-block;margin-top:11px;font-size:12.5px;color:var(--g);text-decoration:none;border-bottom:1px dashed rgba(77,226,200,.4)}

/* ── 信/证据/热力图 ── */
.letter{border:1px dashed var(--line);border-radius:14px;padding:18px;background:var(--onCard);margin-top:12px;max-height:220px;overflow:auto}
.letter p{font-size:14px;color:var(--tx2);white-space:pre-wrap;line-height:1.85}
.heat{display:grid;grid-template-columns:repeat(14,1fr);gap:5px;margin-top:16px}
.cell{aspect-ratio:1;border-radius:4px;background:var(--onCard);transition:.2s;cursor:pointer}
.cell:hover{transform:scale(1.3)}
.cell.l1{background:rgba(77,226,200,.22)}
.cell.l2{background:rgba(77,226,200,.5)}
.cell.l3{background:rgba(193,92,240,.72);box-shadow:0 0 8px rgba(193,92,240,.42)}
.cell.today{outline:1.5px solid var(--w);outline-offset:1px}
.dice{font-size:66px;text-align:center;line-height:1.1;margin:10px 0;transition:.3s}

/* ═══ 泄愤屋 ═══ */
.ventTargets{display:flex;gap:8px;flex-wrap:wrap;margin:14px 0 0}
.vt{padding:9px 15px;border-radius:999px;border:1px solid var(--line);background:transparent;color:var(--tx2);cursor:pointer;font-size:13px;font-family:inherit;transition:.18s}
.vt:hover{border-color:var(--g2);color:var(--g2)}
.vt.on{background:linear-gradient(120deg,var(--g),var(--g2));color:#0b0b12;border-color:transparent;font-weight:700}
.vtAdd{border-style:dashed;color:var(--tx3)}
.vtDel{margin-left:5px;font-size:14px;opacity:.55;padding:0 2px}
.vtDel:hover{opacity:1;color:#ff8f9f}
.ventStage{margin-top:16px;padding:18px;border-radius:16px;border:1px solid var(--line);background:rgba(255,90,110,.045);transition:.25s}
.ventStage.rage{background:rgba(255,90,110,.13);border-color:rgba(255,90,110,.4);animation:shk .16s infinite}
@keyframes shk{0%{transform:translate(0,0)}25%{transform:translate(-2px,1px)}50%{transform:translate(2px,-1px)}75%{transform:translate(-1px,-1px)}100%{transform:translate(0,0)}}
.ventHead{font-size:14px;font-weight:600;color:var(--w);margin-bottom:10px}
#ventIn{width:100%;min-height:130px;background:rgba(0,0,0,.16);border:1px solid var(--line);border-radius:13px;padding:14px;color:var(--tx);font-size:15px;font-family:inherit;resize:vertical;line-height:1.8}
#ventIn:focus{outline:none;border-color:var(--g2)}
.ventMoods{display:flex;gap:7px;flex-wrap:wrap;margin-top:11px}
.vm{padding:5px 12px;border-radius:999px;border:1px dashed var(--line);background:transparent;color:var(--tx3);font-size:12px;cursor:pointer;font-family:inherit}
.vm:hover{border-color:var(--g2);color:var(--g2)}
.ventReply{display:none;margin-top:16px;padding:20px;border-radius:16px;font-size:16px;line-height:1.9;color:var(--tx);
  background:linear-gradient(120deg,rgba(77,226,200,.12),rgba(193,92,240,.12));border:1px solid var(--g2);white-space:pre-wrap}
.ventReply.on{display:block;animation:pop .32s ease}
@keyframes pop{from{opacity:0;transform:translateY(8px) scale(.98)}to{opacity:1;transform:none}}
.ventStat{margin-top:13px;font-size:12.5px;color:var(--tx3)}
.ventHist{margin-top:10px;font-size:12.5px;color:var(--tx3);line-height:1.9}
.ventHist .vh{padding:7px 11px;border-left:2px solid var(--line);margin-bottom:6px;color:var(--tx3)}
.duitWarn{margin-top:12px;padding:13px 15px;border-radius:13px;font-size:12.5px;line-height:1.8;
  background:rgba(255,140,120,.07);border:1px solid rgba(255,140,120,.28)}
.duitWarn b{display:block;color:#ff9c88;margin-bottom:5px}
.duitWarn span{color:var(--tx2)}
.duitFavBox{margin-top:16px;padding:14px 15px;border-radius:13px;background:rgba(77,226,200,.06);border:1px solid rgba(77,226,200,.25);font-size:12.5px;color:var(--tx2);line-height:1.9}
.duitFavBox b{color:var(--g)}
.duitSelf{margin-top:16px;padding:16px;border-radius:14px;border:1px solid var(--line);background:var(--onCard)}
.diceChk{display:none;margin-top:12px;padding:13px 15px;border-radius:12px;font-size:13px;line-height:1.85;color:var(--tx);
  background:var(--onCard);border:1px solid var(--line)}
.duitChk.on{display:block}
.diceLogBox{margin-top:18px;padding:14px 15px;border-radius:13px;background:var(--onCard);border:1px solid var(--line)}
.tieBox{margin-top:14px;padding:16px;border-radius:14px;background:rgba(193,92,240,.06);border:1px solid rgba(193,92,240,.25)}
.tieIdx{font-size:11.5px;color:var(--tx3);text-align:center;margin-bottom:12px;letter-spacing:.05em}
.tieRow{display:flex;gap:10px;align-items:center}
.tieVs{flex-shrink:0;font-size:12px;font-weight:800;color:var(--tx3);letter-spacing:.1em}
.tieSide{flex:1;min-height:62px;padding:12px;border-radius:12px;border:1px solid var(--line);background:var(--onCard);
  color:var(--tx);font-size:14px;font-family:inherit;cursor:pointer;transition:.16s;line-height:1.5}
.tieSide:hover{border-color:var(--g2);background:rgba(77,226,200,.08)}
.tieWin{margin-top:14px;padding:18px;border-radius:14px;font-size:14px;line-height:1.9;color:var(--tx);
  background:linear-gradient(120deg,rgba(77,226,200,.12),rgba(193,92,240,.12));border:1px solid var(--g2)}
.tieWin b{color:var(--g)}
.dice.roll{animation:rl .55s}
@keyframes rl{0%{transform:rotate(0) scale(1)}50%{transform:rotate(200deg) scale(1.35)}100%{transform:rotate(360deg) scale(1)}}
.orbWrap{display:flex;align-items:center;gap:24px;flex-wrap:wrap}
.orb{width:130px;height:130px;border-radius:50%;flex-shrink:0;background:radial-gradient(circle at 35% 30%,rgba(77,226,200,.5),rgba(193,92,240,.28) 60%,transparent 72%);display:grid;place-items:center;font-size:13px;transform:scale(.82);opacity:.6;transition:transform 1s cubic-bezier(.4,0,.2,1),opacity 1s}
.orb.run{transform:scale(1.16);opacity:1}
.orb.hold{transform:scale(1.02);opacity:.88}
.steps{display:grid;gap:9px;margin-top:14px}
.step{display:flex;gap:11px;align-items:flex-start;font-size:13.5px;color:var(--tx2)}
.step i{flex-shrink:0;width:19px;height:19px;border-radius:50%;background:var(--onCard);border:1px solid var(--line);font-style:normal;font-size:11px;display:grid;place-items:center;margin-top:3px}
.step em{font-style:normal;color:var(--g2)}

footer{margin-top:60px;text-align:center;color:var(--tx3);font-size:12.5px;line-height:2}
footer b{color:var(--tx2)}
#toast{position:fixed;left:50%;bottom:34px;transform:translate(-50%,24px);opacity:0;
  background:rgba(20,20,31,.97);border:1px solid var(--g);color:#fff;padding:12px 22px;border-radius:13px;
  font-size:13.5px;z-index:99;pointer-events:none;transition:.3s;max-width:88vw;text-align:center}
#toast.show{opacity:1;transform:translate(-50%,0)}
.hidden{display:none!important}

/* ════════════ 移动端优化 ════════════ */
html{-webkit-text-size-adjust:100%;text-size-adjust:100%;scroll-behavior:smooth}
body{overflow-x:hidden;-webkit-overflow-scrolling:touch}
/* iOS 上字号 <16px 会触发自动放大，强制 16px */
input,textarea,select,button{font-size:16px!important}
input[type=range]{font-size:inherit!important}
input[type=number]{-moz-appearance:textfield}
input[type=number]::-webkit-outer-spin-button,
input[type=number]::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}
/* 去掉输入框默认圆角和内阴影 */
input,textarea,select{-webkit-appearance:none;appearance:none;border-radius:12px}
input[type=range]{-webkit-appearance:none;appearance:none;background:transparent}
/* 点击高亮去掉，按钮最小 44px 触控区 */
a,button,input,textarea,select,.cell,.accRow,.chk li{-webkit-tap-highlight-color:transparent}
.btn{min-height:44px;display:inline-flex;align-items:center;justify-content:center}
.btn.sm{min-height:36px}
/* 底部安全区 */
@media(max-width:760px){
  body{padding-bottom:env(safe-area-inset-bottom,0px)}
  .wrap{padding:0 14px calc(40px + env(safe-area-inset-bottom,0px))}
  nav.sidenav{margin:0 -14px;padding:9px 14px;padding-top:calc(9px + env(safe-area-inset-top,0px));-webkit-overflow-scrolling:touch}
  nav.sidenav a{padding:8px 13px;font-size:14px}
  section{scroll-margin-top:76px}
  .card{padding:20px 16px;border-radius:16px}
  h1{font-size:34px}
  /* 移动端把横排网格全部压成单列 */
  .g2,.g3,.grid{grid-template-columns:1fr!important;gap:14px}
  .sk{font-size:14px}
  .sk span:first-child{width:52px}
  /* 天气/复盘等固定元素重排 */
  .wx{gap:12px}
  .wxT{font-size:30px}
  .wxIcon{font-size:36px}
  .wxTip{min-width:100%;order:3}
  .repGrid{grid-template-columns:1fr 1fr!important;gap:9px}
  .repGrid .f[style*="1/-1"]{grid-column:1/-1!important}
  .orbWrap{gap:16px;justify-content:center}
  .orb{width:104px;height:104px;font-size:12px}
  .pomoT{font-size:42px;min-width:auto;width:100%;text-align:center}
  .pomo{flex-direction:column;align-items:stretch;gap:16px}
  .ring{margin:0 auto}
  .heat{grid-template-columns:repeat(8,1fr)!important;gap:4px}
  .say{padding:14px}
  .dice{font-size:52px}
  .cheer{font-size:21px;min-height:80px}
  .ach{grid-template-columns:repeat(2,1fr)}
  .auth{margin:3vh auto 0;padding:0 16px}
  .authCard{padding:24px 18px;border-radius:18px}
  .accRow{padding:12px}
  .noiseGrid{grid-template-columns:repeat(4,1fr)}
  .nBtn{padding:11px 4px}
  .nBtn .e{font-size:18px}
  .nBtn .l{font-size:11px}
  .tRow,.card>div[style*="display:flex"]{flex-wrap:wrap}
  .tabsBar{gap:5px}
  .tabsBar button{padding:8px 11px}
  h2{font-size:15px}
  .hint{font-size:12.5px}
  .step{font-size:14px}
  /* 手机上不 hover 才显示，用 tap 触发 */
  .cell:hover{transform:none}
}
/* 超小屏 */
@media(max-width:360px){
  h1{font-size:29px}
  .heat{grid-template-columns:repeat(7,1fr)!important}
  .noiseGrid{grid-template-columns:repeat(4,1fr)}
  .accAv{width:34px;height:34px}
}
/* 平板 */
@media(min-width:761px) and (max-width:1000px){
  .g3{grid-template-columns:1fr 1fr}
}
@media print{nav,footer{display:none}}
.hidden{display:none!important}

@media(max-width:760px){
  .g2,.g3,.scanBox{grid-template-columns:1fr}
  header{padding:38px 0 24px}
  .card{padding:20px 17px}
  .pomoT{font-size:44px;min-width:118px}
  .heat{grid-template-columns:repeat(9,1fr)}
  .authCard{padding:26px 20px}
}
.authorMark{
  display:inline-flex;align-items:center;gap:7px;margin-top:14px;padding:6px 14px;border-radius:999px;
  border:1px solid var(--line);background:var(--onCard);font-size:12px;color:var(--tx2)
}
.authorMark{cursor:pointer;user-select:none;-webkit-tap-highlight-color:transparent;
  transition:transform .18s ease,box-shadow .18s ease,border-color .18s ease}
.authorMark:hover{border-color:rgba(193,92,240,.5);box-shadow:0 4px 18px rgba(155,107,255,.28)}
.authorMark:active{transform:scale(.955)}
.authorMark i{
  width:20px;height:20px;border-radius:50%;display:grid;place-items:center;font-style:normal;
  background:linear-gradient(120deg,var(--g),var(--g2));color:#fff;font-size:10px;font-weight:700
}
/* 换成小凉的猫 */
.authorMark i.amg{width:27px;height:27px;padding:0;overflow:hidden;background:none;
  border:1.5px solid rgba(255,255,255,.24);box-shadow:0 2px 10px rgba(0,0,0,.32);
  transition:transform .3s cubic-bezier(.34,1.56,.64,1)}
.authorMark:hover i.amg{transform:rotate(-7deg) scale(1.09)}
.authorMark i.amg img{width:100%;height:100%;object-fit:cover;display:block;
  border-radius:50%;pointer-events:none}
/* 点了之后：一圈光晕 + 花瓣 + 一句悄悄话 */
@keyframes xlHalo{
  0%{opacity:.9;transform:translate(-50%,-50%) scale(.3)}
  70%{opacity:.28}
  100%{opacity:0;transform:translate(-50%,-50%) scale(2.5)}}
@keyframes xlPetal{
  0%{opacity:0;transform:translate(-50%,-50%) scale(.2) rotate(0deg)}
  18%{opacity:1}
  100%{opacity:0;transform:translate(calc(-50% + var(--dx)),calc(-50% + var(--dy))) scale(1.05) rotate(var(--rot))}}
.xlHalo{position:fixed;z-index:99980;pointer-events:none;border-radius:50%;
  width:120px;height:120px;
  background:radial-gradient(circle,rgba(255,214,240,.95),rgba(193,92,240,.42) 42%,transparent 70%);
  animation:xlHalo 1.5s cubic-bezier(.2,.7,.3,1) forwards}
.xlPetal{position:fixed;z-index:99981;pointer-events:none;font-size:15px;
  animation:xlPetal 2.1s cubic-bezier(.2,.6,.3,1) forwards;
  filter:drop-shadow(0 0 8px rgba(255,182,224,.85))}
.xlWord{position:fixed;z-index:99982;pointer-events:none;transform:translate(-50%,-50%);
  font-size:14px;font-weight:600;white-space:nowrap;padding:7px 15px;border-radius:999px;
  background:rgba(24,14,38,.9);border:1px solid rgba(255,182,224,.4);color:#ffe6f6;
  box-shadow:0 6px 26px rgba(0,0,0,.5);animation:xlWordUp 2.4s cubic-bezier(.2,.7,.3,1) forwards}
@keyframes xlWordUp{
  0%{opacity:0;transform:translate(-50%,-30%) scale(.86)}
  16%{opacity:1;transform:translate(-50%,-60%) scale(1)}
  72%{opacity:1;transform:translate(-50%,-84%) scale(1)}
  100%{opacity:0;transform:translate(-50%,-118%) scale(.97)}}
.authorMark b{color:var(--tx);font-weight:600}
@keyframes hlFlash{
  0%,100%{box-shadow:0 0 0 0 rgba(155,107,255,0)}
  12%{box-shadow:0 0 0 5px rgba(155,107,255,.42)}
  30%{box-shadow:0 0 0 0 rgba(155,107,255,0)}
  48%{box-shadow:0 0 0 5px rgba(77,226,200,.38)}
  70%{box-shadow:0 0 0 0 rgba(77,226,200,0)}
  100%{box-shadow:0 0 0 0 rgba(155,107,255,0)}}
.hlFlash{animation:hlFlash 2.2s ease-out 1;border-radius:14px!important}
.authorMark span{color:var(--tx3)}

/* ══════ 头像区最终版：重置所有旧规则 ══════ */
#glWho.glWho{
  display:flex!important;
  align-items:center!important;justify-content:flex-start!important;
  gap:10px!important;
  padding:0!important;margin:0 0 13px!important;
  width:auto!important;height:auto!important;max-width:100%!important;
  background:transparent!important;
  border:0!important;border-radius:0!important;
  box-shadow:none!important;
  color:inherit!important;
  flex-wrap:nowrap!important;min-height:34px!important;
  text-align:left!important;line-height:1.4!important;
  -webkit-tap-highlight-color:transparent}
#glWho.glWho.dim{display:none!important}
#glWho .glAv{
  display:grid!important;place-items:center!important;
  width:42px!important;height:42px!important;
  min-width:42px!important;min-height:42px!important;
  max-width:42px!important;max-height:42px!important;
  flex:0 0 42px!important;align-self:center!important;
  margin:0!important;padding:0!important;
  border-radius:50%!important;overflow:hidden!important;
  background:radial-gradient(circle at 34% 26%,var(--av1,#eaf6ff),var(--av2,#5b9fd6))!important;
  box-shadow:0 2px 10px rgba(0,0,0,.3),0 0 0 1.5px rgba(255,255,255,.26) inset!important;
  position:relative!important;font-size:0!important}
#glWho .glAv::before{content:attr(data-an)!important;
  position:absolute!important;inset:0!important;display:grid!important;place-items:center!important;
  font-size:22px!important;line-height:1!important;
  filter:drop-shadow(0 1px 3px rgba(0,0,0,.45))!important}
#glWho .glAv::after{content:attr(data-ch)!important;
  position:absolute!important;inset:0!important;display:grid!important;place-items:center!important;
  font-size:14px!important;font-weight:800!important;color:#fff!important;line-height:1!important;
  text-shadow:0 1px 3px rgba(0,0,0,.5)!important}
#glWho .glWhoName{
  flex:0 1 auto!important;min-width:0!important;
  font-size:13.5px!important;font-weight:700!important;
  color:rgba(255,255,255,.94)!important;
  letter-spacing:.03em!important;line-height:1.35!important;
  background:transparent!important;border:0!important;padding:0!important;
  margin:0!important;box-shadow:none!important;border-radius:0!important;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
  display:block!important;flex-direction:row!important}


/* 有竖排条时，所有正文内容整体右移 34px */
.glBox.hasChT>#glWho,.glBox.hasChT>#glTxt,.glBox.hasChT>#glTapHint,
.glBox.hasChT>.glOptsWrap{margin-left:34px!important}
.glBox.hasChT{padding-left:0!important}

/* 有竖排条时，正文所有内容右移 34px（常驻，不随句子变化） */
.glBox.hasChT>#glWho,
.glBox.hasChT>#glTxt,
.glBox.hasChT>#glTapHint,
.glBox.hasChT>.glOptsWrap{margin-left:42px!important}
.glBox.hasChT{padding-left:0!important}

/* ══════ ③ 游戏菜单折叠（收起的是工具栏按钮，不是剧情选项） ══════ */
.glTopBar{transition:max-height .3s ease,opacity .22s ease;
  max-height:200px;overflow:hidden}
.glTopBar.folded{max-height:47px!important}
.glTopBar.folded .glTopBt{opacity:0;pointer-events:none;height:0;padding-top:0;padding-bottom:0;
  overflow:hidden;transition:.2s}
/* 折叠后信息条里出现展开按钮 */
.glFoldTag{display:none;align-items:center;justify-content:center;gap:6px;
  width:100%;padding:5px 0;font-size:12px;font-weight:700;color:var(--tx2);
  cursor:pointer;background:none;border:0;font-family:inherit}
.glTopBar.folded .glFoldTag{display:flex}
.glTopBar.folded .glTopInfo{border-bottom:0}

/* 场景分类切换 */
.scTabs{display:flex;gap:6px;overflow-x:auto;padding:0 0 10px;margin-bottom:2px;
  scrollbar-width:none;-webkit-overflow-scrolling:touch}
.scTabs::-webkit-scrollbar{display:none}
.scTab{flex:0 0 auto;padding:7px 13px;border-radius:99px;cursor:pointer;
  font-family:inherit;font-size:12.5px;font-weight:700;color:var(--tx2);
  background:var(--onCard);border:1px solid var(--line);
  -webkit-tap-highlight-color:transparent;transition:.15s;white-space:nowrap}
.scTab:active{transform:scale(.96)}
.scTab.on{background:linear-gradient(135deg,var(--g),var(--g2));color:#fff;
  border-color:transparent;box-shadow:0 3px 12px rgba(155,107,255,.3)}
.scNow{margin:0 0 12px;padding:10px 12px;border-radius:11px;font-size:12.5px;line-height:1.7;
  background:rgba(255,255,255,.05);border:1px solid var(--line);color:var(--tx2)}
.scNow b{color:var(--g2);font-size:13.5px}
.scGrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(96px,1fr));gap:10px}
.scCell{position:relative;padding:0;cursor:pointer;border-radius:13px;overflow:hidden;
  border:2px solid var(--line);background:var(--onCard);
  -webkit-tap-highlight-color:transparent;transition:.16s;display:block}
.scCell:active{transform:scale(.97)}
.scCell.on{border-color:var(--g);box-shadow:0 0 0 3px rgba(155,107,255,.18)}
.scPrev{display:block;width:100%;height:76px;background-size:cover;background-position:center;
  border-bottom:1px solid rgba(255,255,255,.1)}
.scN{display:block;padding:6px 8px;font-size:11.5px;font-weight:700;color:var(--tx);text-align:left}
.scTag{display:block;padding:0 8px 7px;font-size:9.5px;color:var(--tx3);text-align:left}

/* 折叠游戏菜单 */
.glTopBar.folded .glTopBtns{display:none!important}
.glTopBar.folded{max-height:none!important}
.glFoldTag{display:none;align-items:center;justify-content:center;gap:6px;
  width:100%;padding:4px 0 6px;font-size:11.5px;font-weight:700;color:rgba(255,255,255,.55);
  cursor:pointer;background:none;border:0;font-family:inherit;
  -webkit-tap-highlight-color:transparent}
.glTopBar.folded .glFoldTag{display:flex}
.glTopBar.folded .glTopInfo{border-bottom:0}

/* ══════ ② 章节竖条：单行不换行、字距收紧 ══════ */
.glChT{
  max-height:min(62vh,420px)!important;
  min-width:17px!important;
  padding:9px 5px!important;
  font-size:11px!important;
  letter-spacing:.06em!important;   /* 从 .1em 收到 .06em，避免换行 */
  line-height:1.12!important;
  white-space:nowrap!important;      /* 关键：绝不换行 */
  word-break:keep-all!important;
  writing-mode:vertical-rl!important}
.glBox.hasChT>#glWho,
.glBox.hasChT>#glTxt,
.glBox.hasChT>#glTapHint,
.glBox.hasChT>.glOptsWrap{margin-left:30px!important}

/* ① 折叠时按钮条必须消失（提高优先级） */
.glTopBar.folded>.glTopBtns{display:none!important}
.glTopBar.folded .gtb{display:none!important}
.glTopBar.folded{max-height:none!important;overflow:visible!important}

/* 折叠后只留一行，很省空间 */
.glTopBar.folded{padding-bottom:0!important}
.glTopBar.folded>.glTopInfo{padding:6px 12px!important}
.glTopBar.folded .gtiE{font-size:13px}
.glFoldTag{padding:3px 0 5px!important}

/* ══════ ① 游戏里的搜索按钮：必须压在 glFull(400) 之上 ══════ */
.navFab{z-index:9200!important}
/* 搜索按钮隐藏 —— 游戏内完全不可见，避免误触 */
body.inGame .navFab{display:none!important}
body.inGame .navFab{z-index:9600!important;opacity:1!important;
  width:40px!important;height:40px!important;font-size:17px!important;
  right:12px!important;top:calc(8px + env(safe-area-inset-top,0px))!important;
  bottom:auto!important;pointer-events:auto!important;
  background:linear-gradient(135deg,rgba(155,107,255,.95),rgba(0,229,255,.9));
  box-shadow:0 6px 20px rgba(0,0,0,.5)}
body.inGame .navFab:active{transform:scale(.92)}
body.inGame #botTabs,body.inGame .fabMenu{display:none!important}

/* ══════ ② 忆柔：立绘 + 小兔子头像 ══════ */
.glAvatar{position:relative;display:block;flex-shrink:0;align-self:flex-end;
  max-width:100%;margin:0 auto 14px;text-align:center;
  animation:glAvIn .34s cubic-bezier(.2,.9,.3,1)}
.glAvatar img{display:block;margin:0 auto;max-height:min(34vh,250px);width:auto;
  filter:drop-shadow(0 6px 22px rgba(0,0,0,.55));
  -webkit-mask-image:radial-gradient(ellipse 74% 68% at 50% 42%,#000 62%,transparent 100%);
  mask-image:radial-gradient(ellipse 74% 68% at 50% 42%,#000 62%,transparent 100%)}
@keyframes glAvIn{from{opacity:0;transform:translateY(12px) scale(.96)}to{opacity:1;transform:none}}
/* 只有忆柔有立绘 */
.glAvatar.only{margin-bottom:10px}

/* ══════ ③ 章节竖条：更显眼 —— 亮色字 + 描边 + 更强对比 ══════ */
.glChT{
  font-size:12px!important;
  /* 八个方向各偏移 1px = 完整描边 */
  text-shadow:
     1px  0 0 rgba(20,10,40,.95),  -1px  0 0 rgba(20,10,40,.95),
     0  1px 0 rgba(20,10,40,.95),   0 -1px 0 rgba(20,10,40,.95),
     1px  1px 0 rgba(20,10,40,.9),  1px -1px 0 rgba(20,10,40,.9),
    -1px  1px 0 rgba(20,10,40,.9), -1px -1px 0 rgba(20,10,40,.9),
     0 0 8px rgba(255,182,224,.7),  0 0 3px rgba(255,255,255,.5)!important;
  color:#ffd6f0!important;
  font-weight:800!important;
  background:linear-gradient(160deg,rgba(52,20,72,.88),rgba(28,14,48,.9))!important;
  border:1.5px solid rgba(255,182,224,.55)!important;
  box-shadow:0 4px 18px rgba(0,0,0,.5),0 0 20px rgba(255,140,200,.22),
             0 0 0 1px rgba(255,255,255,.08) inset!important;
  border-radius:11px!important;
  padding:10px 6px!important;
  letter-spacing:.05em!important;
  letter-spacing:.05em!important}


/* 实拍圆形头像 */
.glAv.glAvPic{overflow:hidden;background:none!important;
  box-shadow:0 2px 12px rgba(0,0,0,.34),0 0 0 2px rgba(255,182,224,.4)!important}
.glAv.glAvPic img{position:static!important;content:none!important;
  width:100%!important;height:100%!important;object-fit:cover;
  display:block!important;font-size:0!important;filter:none!important}
.glAv.glAvPic::before,.glAv.glAvPic::after{display:none!important}
/* glWhoReset-v3 */
/* glChT-final —— 章节竖条最终样式（放在最后，赢过所有旧规则） */
#glChT.glChT{
  color:#ffd6f0!important;
  -webkit-text-fill-color:#ffd6f0!important;
  font-weight:800!important;
  font-size:12px!important;
  background:linear-gradient(160deg,rgba(64,22,88,.94),rgba(30,14,52,.95))!important;
  border:1.5px solid rgba(255,182,224,.6)!important;
  box-shadow:0 5px 20px rgba(0,0,0,.55),0 0 22px rgba(255,140,200,.3),
             0 0 0 1px rgba(255,255,255,.1) inset!important;
  padding:10px 7px!important;
  border-radius:12px!important;
  text-shadow:
     1.5px 0 0 #1a0a28, -1.5px 0 0 #1a0a28,
     0 1.5px 0 #1a0a28,  0 -1.5px 0 #1a0a28,
     1.5px 1.5px 0 #1a0a28, 1.5px -1.5px 0 #1a0a28,
    -1.5px 1.5px 0 #1a0a28, -1.5px -1.5px 0 #1a0a28,
     0 0 10px rgba(255,140,200,.85), 0 0 4px rgba(255,255,255,.5)!important;
  letter-spacing:.05em!important;
  line-height:1.15!important;
  writing-mode:vertical-rl!important;
  white-space:nowrap!important;
  max-height:min(62vh,430px)!important;
  overflow:hidden}

/* 头像：图片完整显示，不裁切 */
#glWho .glAv.glAvPic{overflow:hidden!important;background:linear-gradient(160deg,rgba(64,22,88,.9),rgba(30,14,52,.95))!important}
#glWho .glAv.glAvPic img{
  width:100%!important;height:100%!important;
  object-fit:cover!important;object-position:50% 22%!important;
  display:block!important;font-size:0!important;filter:none!important;
  -webkit-mask-image:none!important;mask-image:none!important;
  max-height:none!important;max-width:none!important;margin:0!important;
  min-width:100%!important;min-height:100%!important;
  border-radius:50%}
#glWho .glAv.glAvPic::before,#glWho .glAv.glAvPic::after{display:none!important}

/* 颜色变量 */
:root{--glTxt:#f2ede6;--glCh:#e8d4b0}

/* 文本与章节用变量 */
#glTxt{color:var(--glTxt)!important}
#glChT.glChT{
  color:var(--glCh)!important;
  -webkit-text-fill-color:var(--glCh)!important;
  background:linear-gradient(160deg,rgba(40,30,52,.9),rgba(24,16,38,.92))!important;
  border-color:color-mix(in srgb,var(--glCh) 55%,transparent)!important;
  text-shadow:
     1.5px 0 0 #140a20,-1.5px 0 0 #140a20,
     0 1.5px 0 #140a20,0 -1.5px 0 #140a20,
     1.5px 1.5px 0 #140a20,1.5px -1.5px 0 #140a20,
    -1.5px 1.5px 0 #140a20,-1.5px -1.5px 0 #140a20,
     0 0 8px rgba(0,0,0,.5)!important}

/* 设置面板 */
.glSetBox{display:grid;gap:14px}
.glSetRow{padding:12px 13px;border-radius:13px;background:var(--onCard);border:1px solid var(--line)}
.glSetT{font-size:13px;font-weight:700;color:var(--tx);margin-bottom:8px}
.glSetHint{font-size:11.5px;color:var(--tx3);line-height:1.6}
.glColorRow{display:flex;flex-wrap:wrap;gap:8px}
.glColorSw{width:32px;height:32px;border-radius:50%;cursor:pointer;
  border:2px solid var(--line);-webkit-tap-highlight-color:transparent;
  transition:.15s;padding:0}
.glColorSw:active{transform:scale(.88)}
.glColorSw.on{border-color:var(--g);box-shadow:0 0 0 3px rgba(155,107,255,.28);transform:scale(1.08)}

/* 退出键永远可见：折叠菜单时也保留 */
.glTopBar.folded .gtb.exit,glTopBar.folded #glExit,
.glTopBar.folded #glStatTg,glTopBar.folded #glBarFold{display:flex!important;
  flex:0 0 auto!important;pointer-events:auto!important}
.glTopBar.folded #glBarFold{opacity:.55!important}
/* 退出键做成醒目的红色描边 */
#glExit{background:rgba(255,60,80,.24)!important;border-color:rgba(255,90,110,.6)!important;
  color:#ffc2cc!important;font-size:16px!important;font-weight:700!important}
#glExit:active{transform:scale(.9)}
/* 折叠条右侧永远留一个退出 */
.glFoldTag{position:relative}
/* 游戏内环境音选择 */
.ambGrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(94px,1fr));gap:9px}
.ambCell{position:relative;display:flex;flex-direction:column;align-items:center;gap:3px;
  padding:11px 8px;border-radius:13px;cursor:pointer;font-family:inherit;text-align:center;
  background:var(--onCard);border:1.5px solid var(--line);
  -webkit-tap-highlight-color:transparent;transition:.16s}
.ambCell:active{transform:scale(.96)}
.ambCell.on{background:linear-gradient(135deg,var(--g),var(--g2));border-color:transparent;
  box-shadow:0 4px 14px rgba(155,107,255,.3)}
.ambCell.on .ambN,.ambCell.on .ambD{color:#fff}
.ambE{font-size:22px;line-height:1}
.ambN{font-size:11.5px;font-weight:700;color:var(--tx)}
.ambD{font-size:9.5px;color:var(--tx3);line-height:1.4}
.glRange{width:100%;margin-top:8px}
/* ══ ② 入口页 logo：发光前夜 + BEFORE GLOW ══ */
.epLogo{display:flex;flex-direction:column;align-items:center;gap:9px;
  margin:0 0 30px;text-align:center;position:relative}
/* 英文品牌：渐变 + 描边 + 呼吸 */
.epLogoEn{font-size:11px!important;font-weight:800!important;
  letter-spacing:.62em!important;text-indent:.62em!important;
  background:linear-gradient(96deg,#ffd6f0 0%,#c9a8ff 34%,#8ff0d8 68%,#ffd6f0 100%);
  -webkit-background-clip:text;background-clip:text;
  -webkit-text-fill-color:transparent;color:transparent;
  filter:drop-shadow(0 0 14px rgba(193,92,240,.45));
  white-space:nowrap}
/* 中文主标题：超大字重 + 描边 + 立体阴影 */
.epLogoCn{font-size:40px!important;font-weight:900!important;
  letter-spacing:.12em!important;text-indent:.12em!important;
  line-height:1.16!important;margin:0!important;
  background:linear-gradient(168deg,#ffffff 0%,#ffe9f5 30%,#c9a8ff 72%,#8ff0d8 100%);
  -webkit-background-clip:text;background-clip:text;
  -webkit-text-fill-color:transparent;color:transparent;
  filter:
    drop-shadow(0 2px 0 rgba(60,20,80,.5))
    drop-shadow(0 4px 0 rgba(40,10,60,.4))
    drop-shadow(0 10px 34px rgba(193,92,240,.5));
  white-space:nowrap;
  animation:epLogoBreath 5s ease-in-out infinite}
@keyframes epLogoBreath{
  0%,100%{transform:translateY(0) scale(1);
    filter:drop-shadow(0 2px 0 rgba(60,20,80,.5)) drop-shadow(0 4px 0 rgba(40,10,60,.4)) drop-shadow(0 10px 34px rgba(193,92,240,.42))}
  50%{transform:translateY(-3px) scale(1.018);
    filter:drop-shadow(0 3px 0 rgba(60,20,80,.5)) drop-shadow(0 6px 0 rgba(40,10,60,.4)) drop-shadow(0 16px 44px rgba(193,92,240,.62))}}
/* 上下细光带 */
.epLogoRule{width:min(220px,58%);height:1px;position:relative;
  background:linear-gradient(90deg,transparent,rgba(255,182,224,.75),rgba(143,240,216,.75),transparent);
  border-radius:2px}
.epLogoRule::after{content:"";position:absolute;left:50%;top:50%;
  width:5px;height:5px;margin:-2.5px 0 0 -2.5px;border-radius:50%;
  background:#ffd6f0;box-shadow:0 0 10px rgba(255,182,224,.95);
  animation:epRuleGlow 2.6s ease-in-out infinite}
@keyframes epRuleGlow{0%,100%{opacity:.55;transform:scale(1)}50%{opacity:1;transform:scale(1.5)}}
/* 辉光装饰 */
.epLogoGlow{position:absolute;left:50%;top:50%;width:min(340px,92%);height:140px;
  transform:translate(-50%,-50%);pointer-events:none;z-index:-1;
  background:radial-gradient(ellipse at center,rgba(193,92,240,.24),transparent 68%);
  filter:blur(14px)}
/* ══ ③ 备份提醒：可收缩 ══ */
.bkRemind{margin:0 0 14px}
.bkTg{display:flex;align-items:center;gap:8px;width:100%;padding:9px 13px;
  border-radius:11px;cursor:pointer;font-family:inherit;
  font-size:12px;font-weight:700;color:#ffbe78;
  background:rgba(255,190,120,.08);border:1px solid rgba(255,190,120,.32);
  -webkit-tap-highlight-color:transparent;transition:.18s}
.bkTg:active{transform:scale(.99)}
.bkTgIco{font-size:9px;transition:transform .22s;display:inline-block}
.bkRemind:not(.fold) .bkTgIco{transform:rotate(90deg)}
.bkRemind:not(.fold) .bkTg{border-radius:11px 11px 0 0;margin-bottom:-1px}
.bkRemind.fold .bakBar{display:none!important}
.bkRemind .bakBar{margin:0;border-radius:0 0 11px 11px}
/* ① 收起/退出 钉死在工具栏右侧，永不被横向滚动挤走 */
.glTopBar{position:relative!important;padding-right:96px!important}
.glPins{position:absolute!important;right:6px!important;bottom:6px!important;
  z-index:30!important;
  display:flex!important;align-items:center;gap:5px!important}
.glTopBar.folded .glPins{display:flex!important}
.glPins .gtb{display:flex!important;flex:0 0 auto!important;pointer-events:auto!important}
#glExit{background:rgba(255,60,80,.26)!important;
  border:1.5px solid rgba(255,90,110,.62)!important;color:#ffc2cc!important;
  font-size:17px!important;font-weight:800!important;min-width:36px!important}
#glExit:active{transform:scale(.9)}
#glBarFold{background:rgba(255,255,255,.1)!important}
/* 可滚动区留出右侧空间 */
.glTopBtns{padding-right:4px!important}
/* 立绘设置 */
.swRow{display:flex;align-items:center;gap:12px;padding:11px 12px;margin-bottom:8px;
  border-radius:12px;cursor:pointer;background:var(--onCard);border:1px solid var(--line)}
.swTx{flex:1;min-width:0}
.swTx b{display:block;font-size:13px;font-weight:600;color:var(--tx)}
.swTx small{display:block;font-size:10.5px;color:var(--tx3);margin-top:2px}
.swBox{width:44px;height:25px;border-radius:99px;flex-shrink:0;position:relative;
  background:rgba(255,255,255,.14);transition:.2s}
.swRow.on .swBox{background:linear-gradient(135deg,var(--g),var(--g2))}
.swKnob{position:absolute;top:2.5px;left:2.5px;width:20px;height:20px;border-radius:50%;
  background:#fff;box-shadow:0 2px 6px rgba(0,0,0,.3);transition:.2s}
.swRow.on .swKnob{left:21.5px}
.szRow{display:flex;gap:8px}
.szBtn{flex:1;padding:10px;border-radius:11px;cursor:pointer;font-family:inherit;
  font-size:13px;font-weight:700;color:var(--tx2);
  background:var(--onCard);border:1.5px solid var(--line)}
.szBtn.on{background:linear-gradient(135deg,var(--g),var(--g2));color:#fff;border-color:transparent}
.standGrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(92px,1fr));gap:9px;margin-top:8px}
.standCell{position:relative;padding:8px;border-radius:12px;
  background:var(--onCard);border:1.5px solid var(--line);text-align:center}
.standCell.on{border-color:var(--g)}
.standCell.empty{opacity:.55}
.standPrev{display:block;width:100%;height:66px;border-radius:9px;overflow:hidden;
  background:rgba(255,255,255,.06);margin-bottom:6px}
.standPrev img{width:100%;height:100%;object-fit:cover;object-position:50% 20%;display:block}
.standNone{display:grid;place-items:center;font-size:22px;color:var(--tx3);
  border:1px dashed var(--line)}
.standNone small{display:block;font-size:9px;margin-top:-14px}
.standN{display:block;font-size:11.5px;font-weight:700;color:var(--tx)}
.standT{display:block;font-size:9.5px;color:var(--tx3)}
.standX{position:absolute;top:12px;right:12px;padding:3px 8px;border-radius:99px;
  font-size:9.5px;font-family:inherit;cursor:pointer;
  background:rgba(0,0,0,.6);color:#fff;border:0}
/* ⑥ 页签栏重做：不再是死板的两行按钮，做成可横滑的「胶囊轨道」 */
.pageTabs{
  display:flex!important;align-items:center!important;gap:7px!important;
  padding:5px!important;margin:0 0 14px!important;
  overflow-x:auto!important;overflow-y:hidden!important;
  -webkit-overflow-scrolling:touch!important;scrollbar-width:none!important;
  background:rgba(255,255,255,.05)!important;
  border:1px solid rgba(255,255,255,.09)!important;
  border-radius:15px!important;
  box-shadow:0 4px 18px rgba(0,0,0,.16),0 1px 0 rgba(255,255,255,.06) inset!important;
  position:sticky!important;top:8px!important;z-index:30!important;
  backdrop-filter:blur(14px)!important;-webkit-backdrop-filter:blur(14px)!important}
.pageTabs::-webkit-scrollbar{display:none}
.pageTabs .ptab{
  flex:0 0 auto!important;white-space:nowrap!important;
  padding:8px 15px!important;border-radius:11px!important;
  font-size:13px!important;font-weight:600!important;
  color:rgba(255,255,255,.62)!important;
  background:transparent!important;border:0!important;
  cursor:pointer!important;font-family:inherit!important;
  -webkit-tap-highlight-color:transparent!important;
  transition:color .18s,background .18s,transform .12s!important}
.pageTabs .ptab:hover{color:rgba(255,255,255,.9)!important;
  background:rgba(255,255,255,.07)!important}
.pageTabs .ptab:active{transform:scale(.95)!important}
.pageTabs .ptab.on{
  color:#fff!important;
  background:linear-gradient(135deg,var(--g),var(--g2))!important;
  box-shadow:0 4px 14px rgba(155,107,255,.4)!important}
  font-weight:700!important}
/* 覆盖旧规则里的 width:100%（它让每个页签占满整行） */
.pageTabs .ptab{width:auto!important;min-width:0!important;
  max-width:140px!important;flex:0 0 auto!important}
/* 「全部展开」按钮跟随风格 */
#pgModeBtn{flex:0 0 auto!important;
  padding:8px 13px!important;border-radius:11px!important;
  font-size:12px!important;font-weight:600!important;
  background:rgba(255,255,255,.06)!important;
  border:1px solid rgba(255,255,255,.1)!important;
  color:rgba(255,255,255,.62)!important;white-space:nowrap}
#pgModeBtn.on{background:rgba(193,92,240,.2)!important;border-color:rgba(193,92,240,.4)!important;color:#fff!important}
/* v92：顶部是「子菜单」——单行可横滑胶囊轨道；移除遗留「全部展开」切换 */
.pageTabs{display:flex!important;flex-wrap:nowrap!important;align-items:center!important;gap:7px!important;
  overflow-x:auto!important;overflow-y:hidden!important;-webkit-overflow-scrolling:touch!important;scrollbar-width:none!important}
.pageTabs::-webkit-scrollbar{display:none}
.pageTabs .pgCtl{display:none!important}
.pageTabs .ptab{flex:0 0 auto!important;max-width:none!important}
/* v93：顶部一排 = 全部板块的子菜单（可横滑）；用细分隔线把同组圈在一起 */
.pageTabs .ptabDiv{flex:0 0 auto;width:1px;height:16px;margin:0 1px;
  background:linear-gradient(180deg,transparent,rgba(255,255,255,.24),transparent)}
/* v93：外壳还没决定显示哪一屏之前，两屏都不露，杜绝「开场闪一下登录页」 */
body:not(.shellOn) #authView,body:not(.shellOn) #mainView{display:none!important}
/* v93：公告 / 小凉的信 挪到小凉页最底部 */
.xdLinksBottom{margin-top:22px!important;margin-bottom:6px!important}
/* ══════ v94：顶部子菜单栏——贴顶后不透底，内容不再从栏里透出来（图1→图2 对齐） ══════ */
#pageTabs{background:rgba(8,8,15,.86)!important;
  -webkit-backdrop-filter:blur(18px) saturate(1.2)!important;backdrop-filter:blur(18px) saturate(1.2)!important;
  box-shadow:0 8px 26px rgba(0,0,0,.42)!important;
  border:1px solid rgba(255,255,255,.1)!important;border-top:0!important;
  top:0!important;border-radius:0 0 16px 16px!important}
#pageTabs .ptab.on{box-shadow:0 4px 16px rgba(155,107,255,.5),0 0 0 1px rgba(255,255,255,.16) inset!important}
/* ══════ v94：板块选择 —— 3D 封面流（图3 效果） ══════ */
body.bpLock{overflow:hidden!important}
#bPick{position:fixed;inset:0;z-index:99990;display:none;
  background:radial-gradient(120% 90% at 50% 0%,#1a1830 0%,#0a0912 55%,#050409 100%);
  color:#f2eefb;overflow:hidden;flex-direction:column;align-items:center;justify-content:center;
  opacity:0;transition:opacity .3s}
#bPick.on{display:flex;opacity:1}
#bPick .bPickGlow{position:absolute;left:-20%;right:-20%;top:-22%;height:62%;
  background:radial-gradient(closest-side,rgba(120,90,255,.3),transparent 70%);
  filter:blur(34px);pointer-events:none;transition:background .6s ease}
#bPick .bPickHead{position:absolute;top:calc(env(safe-area-inset-top,0px) + 24px);left:0;right:0;
  text-align:center;pointer-events:none;z-index:5}
#bPick .bPickKicker{font-size:11px;letter-spacing:.3em;color:rgba(200,185,255,.6);margin-bottom:8px}
#bPick .bPickTitle{font-size:24px;font-weight:800;letter-spacing:.02em;
  background:linear-gradient(120deg,#fff,#c9b6ff 58%,#8fe6ff);-webkit-background-clip:text;background-clip:text;color:transparent}
#bPick .bPickSub{font-size:12.5px;color:rgba(220,214,240,.66);margin-top:8px;min-height:18px}
#bPick .bPickStage{position:relative;width:100%;height:min(52vh,400px);
  perspective:1250px;perspective-origin:50% 50%;margin-top:6px;z-index:3;touch-action:pan-y}
#bPick .bPickTrack{position:absolute;inset:0;transform-style:preserve-3d}
.bpCard{position:absolute;top:50%;left:50%;width:216px;height:326px;margin:-163px 0 0 -108px;
  transform-style:preserve-3d;border-radius:22px;overflow:hidden;cursor:pointer;
  border:1px solid rgba(255,255,255,.09);transform-origin:50% 50%;
  transition:transform .62s cubic-bezier(.16,1,.3,1),opacity .5s ease,box-shadow .5s ease;
  will-change:transform,opacity;backface-visibility:hidden;
  box-shadow:0 24px 60px rgba(0,0,0,.5)}
#bPickTrack.bpDrag .bpCard{transition:none!important}
.bpCard .bpArt{position:absolute;inset:0;filter:blur(var(--bpBlur,0px)) brightness(var(--bpBri,1));transition:filter .5s ease;will-change:filter}
.bpCard .bpArt::before{content:"";position:absolute;inset:0;z-index:1;
  background:radial-gradient(120% 62% at 28% 0%,rgba(255,255,255,.24),transparent 62%)}
.bpCard .bpArt::after{content:"";position:absolute;inset:0;
  background:linear-gradient(180deg,rgba(6,6,12,0) 18%,rgba(6,6,12,.5) 62%,rgba(6,6,12,.93) 100%)}
.bpCard .bpIco{position:absolute;top:20px;left:20px;font-size:34px;filter:drop-shadow(0 4px 14px rgba(0,0,0,.55))}
.bpCard .bpBody{position:absolute;left:20px;right:20px;bottom:18px;z-index:2}
.bpCard .bpName{font-size:22px;font-weight:800;letter-spacing:.01em;text-shadow:0 2px 14px rgba(0,0,0,.6)}
.bpCard .bpDesc{font-size:12.5px;line-height:1.6;color:rgba(235,230,248,.8);margin-top:8px;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.bpCard .bpGo{margin-top:12px;display:inline-flex;align-items:center;gap:6px;
  font-size:12px;font-weight:700;padding:7px 13px;border-radius:99px;
  background:rgba(255,255,255,.15);border:1px solid rgba(255,255,255,.24);
  opacity:0;transform:translateY(6px);transition:opacity .3s,transform .3s}
.bpCard.center{box-shadow:0 34px 90px rgba(90,60,180,.55),0 0 0 1px rgba(255,255,255,.2),0 0 64px rgba(140,110,255,.3)}
.bpCard.center::after{content:"";position:absolute;inset:0;border-radius:22px;pointer-events:none;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.18),inset 0 0 46px rgba(160,130,255,.16)}
.bpCard.center .bpGo{opacity:1;transform:none}
#bPick .bPickNav{position:absolute;bottom:calc(env(safe-area-inset-bottom,0px) + 92px);left:0;right:0;
  display:flex;align-items:center;justify-content:center;gap:16px;z-index:6}
.bpArrow{width:42px;height:42px;border-radius:50%;border:1px solid rgba(255,255,255,.18);
  background:rgba(255,255,255,.08);color:#fff;font-size:20px;line-height:1;cursor:pointer;font-family:inherit;
  display:flex;align-items:center;justify-content:center;transition:background .2s,transform .15s}
.bpArrow:active{transform:scale(.9);background:rgba(255,255,255,.16)}
.bpDots{display:flex;gap:8px;align-items:center}
.bpDot{width:7px;height:7px;border-radius:50%;background:rgba(255,255,255,.24);transition:all .3s;cursor:pointer}
.bpDot.on{background:linear-gradient(135deg,var(--g),var(--g2));width:20px;border-radius:99px}
#bPick .bPickGuide{position:absolute;bottom:calc(env(safe-area-inset-bottom,0px) + 58px);left:0;right:0;
  text-align:center;font-size:12px;color:rgba(210,203,235,.55);letter-spacing:.04em;z-index:6;pointer-events:none}
#bPick .bPickEnter{position:absolute;bottom:calc(env(safe-area-inset-bottom,0px) + 12px);left:50%;transform:translateX(-50%);
  z-index:7;padding:12px 34px;border-radius:99px;border:0;cursor:pointer;font-family:inherit;
  font-size:14px;font-weight:800;color:#12081f;
  background:linear-gradient(135deg,var(--g),var(--g2));box-shadow:0 10px 30px rgba(120,80,255,.45)}
#bPick .bPickEnter:active{transform:translateX(-50%) scale(.95)}
#bPick .bPickClose{position:absolute;top:calc(env(safe-area-inset-top,0px) + 16px);right:16px;z-index:8;
  width:38px;height:38px;border-radius:50%;border:1px solid rgba(255,255,255,.16);
  background:rgba(255,255,255,.08);color:#fff;font-size:16px;cursor:pointer;font-family:inherit}
.bpTip{position:fixed;left:50%;transform:translateX(-50%);bottom:calc(env(safe-area-inset-bottom,0px) + 128px);
  z-index:99991;background:rgba(20,16,34,.95);border:1px solid rgba(160,140,255,.42);
  color:#eee;font-size:12.5px;padding:10px 16px;border-radius:12px;box-shadow:0 10px 30px rgba(0,0,0,.5);
  animation:bpTipIn .4s ease both;white-space:nowrap;pointer-events:none}
@keyframes bpTipIn{from{opacity:0;transform:translate(-50%,10px)}to{opacity:1;transform:translate(-50%,0)}}
/* v92：点击图案特效（点哪出现哪，像鼠标点击反馈） */
.curPop{position:fixed;width:40px;height:40px;pointer-events:none;z-index:999998;
  transform:translate(-50%,-50%) scale(.35);opacity:0;will-change:transform,opacity;
  animation:curPop .62s cubic-bezier(.18,.9,.28,1) forwards;filter:drop-shadow(0 3px 10px rgba(0,0,0,.35))}
.curPop svg{width:100%;height:100%;display:block}
.curPop img{width:100%;height:100%;display:block;image-rendering:auto}
@keyframes curPop{
  0%{transform:translate(-50%,-50%) scale(.35) translateY(7px);opacity:0}
  32%{transform:translate(-50%,-50%) scale(1.12) translateY(-2px);opacity:1}
  100%{transform:translate(-50%,-64%) scale(.92);opacity:0}
}
@media (prefers-reduced-motion:reduce){.curPop{animation-duration:.2s}}
.siteBgmList{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:7px}
.siteBgm{padding:9px 11px;border-radius:10px;cursor:pointer;font-family:inherit;
  font-size:12px;font-weight:600;text-align:left;
  background:var(--onCard);border:1px solid var(--line);color:var(--tx2);
  -webkit-tap-highlight-color:transparent}
.siteBgm.on{background:linear-gradient(135deg,var(--g),var(--g2));color:#fff;border-color:transparent}
/* 工具栏两级化 */
.glBar{display:flex!important;align-items:center!important;gap:8px!important;
  padding:7px 10px!important;justify-content:space-between!important}
.glTopBtns,.glPins{display:flex!important;align-items:center!important;gap:6px!important}
.glBar .gtb{min-width:34px!important;width:34px!important;height:32px!important;
  padding:0!important;justify-content:center!important;font-size:16px!important;
  border-radius:10px!important;flex:0 0 auto!important}
.glBar .gtb span{display:none!important}
#glMoreBtn{background:rgba(255,255,255,.1)!important;font-size:19px!important;
  letter-spacing:1px!important}
#glExit{background:rgba(255,60,80,.26)!important;
  border:1.5px solid rgba(255,90,110,.62)!important;color:#ffc2cc!important;
  font-size:17px!important;font-weight:800!important}
/* 更多面板 */
.moreGrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(94px,1fr));gap:9px}
.moreCell{display:flex!important;flex-direction:column!important;align-items:center!important;
  gap:3px!important;padding:12px 7px!important;border-radius:13px!important;cursor:pointer!important;
  font-family:inherit!important;text-align:center;
  background:var(--onCard)!important;border:1.5px solid var(--line)!important;
  -webkit-tap-highlight-color:transparent;transition:.16s}
.moreCell:active{transform:scale(.96)}
.moreE{font-size:22px!important;line-height:1}
.moreN{font-size:11.5px!important;font-weight:700!important;color:var(--tx)!important}
.moreD{font-size:9.5px!important;color:var(--tx3)!important;line-height:1.35}
/* ══ 主页品牌：发光前夜 · 来回流动闪光 ══ */
.brandTop{position:relative;margin:2px 0 16px;padding:6px 0 4px;text-align:center}
.brandCnRow{position:relative;display:inline-block}
/* 背后辉光 */
.brandGlow{position:absolute;left:50%;top:50%;width:280px;height:82px;
  transform:translate(-50%,-50%);pointer-events:none;z-index:0;
  background:radial-gradient(ellipse at center,rgba(193,92,240,.3),rgba(143,240,216,.12) 45%,transparent 72%);
  filter:blur(16px);animation:brandGlowPulse 3.4s ease-in-out infinite}
@keyframes brandGlowPulse{
  0%,100%{opacity:.62;transform:translate(-50%,-50%) scale(1)}
  50%{opacity:1;transform:translate(-50%,-50%) scale(1.1)}}
/* 四个字：渐变文字 + 循环流动 + 多层描边 */
.brandCn{position:relative;z-index:2;display:inline-block;
  font-size:34px!important;font-weight:900!important;letter-spacing:.1em!important;
  text-indent:.1em;line-height:1.2!important;white-space:nowrap;
  background:linear-gradient(100deg,
    #ffd6f0 0%,#ffffff 14%,#c9a8ff 28%,#8ff0d8 42%,
    #ffffff 56%,#ffb6e0 70%,#c9a8ff 84%,#8ff0d8 100%);
  background-size:280% 100%;
  -webkit-background-clip:text;background-clip:text;
  -webkit-text-fill-color:transparent;color:transparent;
  animation:brandFlow 4.2s linear infinite,brandLift 4.2s ease-in-out infinite;
  filter:
    drop-shadow(0 1px 0 rgba(80,30,110,.65))
    drop-shadow(0 3px 0 rgba(50,15,80,.45))
    drop-shadow(0 6px 18px rgba(193,92,240,.42))}
@keyframes brandFlow{
  0%{background-position:0% 50%}
  100%{background-position:280% 50%}}
@keyframes brandLift{
  0%,100%{transform:translateY(0) scale(1)}
  50%{transform:translateY(-2.5px) scale(1.012)}}
/* 闪光扫过 */
.brandSpark{position:absolute;inset:-6px -14px;z-index:1;pointer-events:none;
  overflow:hidden;border-radius:14px}
.brandSpark::before{content://;position:absolute;top:-40%;bottom:-40%;left:-60%;width:34%;
  background:linear-gradient(100deg,transparent,rgba(255,255,255,.62),transparent);
  filter:blur(3px);transform:rotate(14deg);
  animation:brandSweep 4.2s cubic-bezier(.5,0,.5,1) infinite}
@keyframes brandSweep{
  0%{left:-60%}55%{left:130%}100%{left:130%}}
/* 英文 */
.brandEn{position:relative;z-index:2;margin-top:4px;
  font-size:10px!important;font-weight:800!important;
  letter-spacing:.58em!important;text-indent:.58em;white-space:nowrap;
  background:linear-gradient(96deg,#ffd6f0,#c9a8ff 40%,#8ff0d8 70%,#ffd6f0);
  background-size:220% 100%;
  -webkit-background-clip:text;background-clip:text;
  -webkit-text-fill-color:transparent;color:transparent;
  filter:drop-shadow(0 0 10px rgba(193,92,240,.5));
  animation:brandFlow 4.2s linear infinite}
/* 光带 */
.brandRule{position:relative;z-index:2;width:170px;height:1px;margin:9px auto 0;
  background:linear-gradient(90deg,transparent,rgba(255,182,224,.8),rgba(143,240,216,.8),transparent);
  border-radius:2px}
.brandRule::after{content://;position:absolute;left:50%;top:50%;
  width:5px;height:5px;margin:-2.5px 0 0 -2.5px;border-radius:50%;
  background:#ffd6f0;box-shadow:0 0 12px rgba(255,182,224,1);
  animation:brandDot 2.2s ease-in-out infinite}
@keyframes brandDot{0%,100%{opacity:.5;transform:scale(1)}50%{opacity:1;transform:scale(1.7)}}
@media (max-width:400px){.brandCn{font-size:29px!important}}
/* ② 章节竖条：居中偏左，不再贴对话框边 */
.glChT{
  left:50%!important;
  transform:translateX(-50%)!important;
  bottom:auto!important;
  margin-bottom:0!important}
.glBox.hasChT{padding-left:0!important}
.glBox.hasChT>#glWho,
.glBox.hasChT>#glTxt,
.glBox.hasChT>#glTapHint,
.glBox.hasChT>.glOptsWrap{margin-left:0!important;padding-top:74px!important}
/* 来时路 · 阅读完整版 */
.rdTags{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:11px}
.rdTags i{font-style:normal;font-size:10.5px;padding:3px 9px;border-radius:99px;
  background:rgba(77,226,200,.15);border:1px solid rgba(77,226,200,.35);color:var(--g2)}
.rdMeta{font-size:12px;color:var(--tx3);margin-bottom:13px}
.rdBody p{margin:0 0 13px;font-size:14px;line-height:1.95;color:var(--tx2);
  text-align:justify}
.rdFoot{margin-top:18px;padding-top:14px;border-top:1px solid var(--line);
  font-size:12px;color:var(--tx3);text-align:center}
/* ① 折叠：收起后只留一行，不能变高 */
.glTopBar.folded{max-height:none!important;overflow:hidden!important}
.glTopBar.folded>.glTopInfo{display:none!important}
.glTopBar.folded>.glFoldTag{display:flex!important;padding:4px 0!important;
  margin:0!important;font-size:11px;color:rgba(255,255,255,.5)}
.glTopBar.folded>.glBar{padding:5px 8px!important;justify-content:flex-end!important}
.glTopBar.folded>.glBar .glTopBtns{display:none!important}
/* ② 章节竖条：贴左侧，留 8px 白边 */
.glChT{left:8px!important;top:6px!important;transform:none!important;bottom:auto!important}
.glBox.hasChT{padding-left:0!important}
.glBox.hasChT>#glWho,.glBox.hasChT>#glTxt,
.glBox.hasChT>#glTapHint,.glBox.hasChT>.glOptsWrap{margin-left:40px!important;padding-top:0!important}

/* ③ 正文居中 + 左右舒适留白 */
#glTxt.glHintDone~.glTapHint,.glTapHint.glHintDone{color:var(--g2)!important;font-weight:700}
#glTxt{text-align:center!important;padding:0 20px!important;margin-left:auto!important;
  margin-right:auto!important;max-width:660px!important}
#glTapHint{text-align:center!important;padding:0 20px!important;margin-left:auto!important;
  margin-right:auto!important;max-width:660px!important}
.glOptsWrap{text-align:center!important}
.glOpt{text-align:center!important}
#glWho{justify-content:center!important}

/* ④ 全屏铺满，去掉底部空隙 */
#glFull,.glFull{height:100dvh!important;padding-bottom:0!important}
#glStage{flex:1 1 auto!important;min-height:0!important;justify-content:flex-end!important;
  padding-bottom:0!important}
.glBox{padding-bottom:calc(10px + env(safe-area-inset-bottom,0px))!important;max-height:100%!important}
.glTapHint{margin-bottom:0!important;padding-bottom:0!important}
/* ② 章节竖条：位置固定在有头像那一行的左侧，不随对话变动 */
.glChT{left:8px!important;top:0!important;transform:none!important;
  bottom:auto!important;position:absolute!important}
.glBox{position:relative!important}
.glBox.hasChT>#glWho{margin-left:44px!important;padding-left:0!important}
.glBox.hasChT>#glTxt{margin-left:44px!important}
.glBox.hasChT>#glTapHint{margin-left:44px!important}
.glBox.hasChT>.glOptsWrap{margin-left:44px!important}
/* ③ 信封放大醒目 */
.mailBtn.v2{width:62px!important;height:62px!important;border-radius:20px!important;
  border-width:2px!important}
.mailBtn.v2 .mbIcon{font-size:30px!important;
  filter:drop-shadow(0 0 14px rgba(255,182,224,.85))}
.mailBtn.v2.hasNew{animation:mailShake 2.6s ease-in-out infinite}
.mailBtn.v2 .mbDot{min-width:24px!important;height:24px!important;font-size:12px!important;
  line-height:20px!important;top:-5px!important;right:-5px!important}
/* ══ 信件历史 ══ */
.ltrHint{font-size:12px;color:var(--tx3);margin-bottom:12px;line-height:1.7}
.ltrList{display:grid;gap:7px}
.ltrRow{display:flex;align-items:center;gap:11px;padding:11px 13px;border-radius:12px;
  cursor:pointer;text-align:left;font-family:inherit;
  background:var(--onCard);border:1px solid var(--line);
  -webkit-tap-highlight-color:transparent}
.ltrRow.seen{border-color:rgba(255,182,224,.34);background:rgba(255,182,224,.06)}
.ltrIco{font-size:19px;flex-shrink:0;opacity:.5}
.ltrRow.seen .ltrIco{opacity:1}
.ltrTx{flex:1;min-width:0}
.ltrTx b{display:block;font-size:13px;font-weight:600;color:var(--tx)}
.ltrTx small{display:block;font-size:10.5px;color:var(--tx3);margin-top:2px}
.ltrGo{color:var(--tx3);font-size:15px}

/* ══ 章节重读 · 三级 ══ */
.l1Hint{font-size:12px;color:var(--tx3);margin-bottom:12px}
.l1Empty{padding:22px;text-align:center;color:var(--tx3);font-size:13px;line-height:1.9}
.l1List,.l2List{display:grid;gap:8px}
.l1Row{display:flex;align-items:center;gap:11px;padding:12px 13px;border-radius:13px;
  cursor:pointer;text-align:left;font-family:inherit;
  background:var(--onCard);border:1.5px solid var(--line);
  -webkit-tap-highlight-color:transparent}
.l1Row.cur{border-color:var(--g);background:linear-gradient(135deg,rgba(155,107,255,.14),transparent)}
.l1Row.locked{opacity:.78}
.l1Badge{flex-shrink:0;padding:3px 9px;border-radius:99px;font-size:10px;font-weight:700;
  background:rgba(255,255,255,.08);color:var(--tx3)}
.l1Row.cur .l1Badge{background:linear-gradient(135deg,var(--g),var(--g2));color:#fff}
.l1Tx{flex:1;min-width:0}
.l1Tx b{display:block;font-size:14px;font-weight:700;color:var(--tx)}
.l1Tx small{display:block;font-size:11px;color:var(--tx3);margin-top:3px}
.l1Go,.l2Go{flex-shrink:0;font-size:11.5px;color:var(--g2)}
.l2Head{margin-bottom:13px;font-size:14px}
.l2Head small{font-size:11.5px;color:var(--tx3)}
.l2Row{display:flex;align-items:center;gap:12px;padding:12px 13px;border-radius:12px;
  cursor:pointer;text-align:left;font-family:inherit;
  background:var(--onCard);border:1px solid var(--line)}
.l2No{flex-shrink:0;width:26px;height:26px;border-radius:8px;display:grid;place-items:center;
  font-size:12px;font-weight:800;background:rgba(155,107,255,.18);color:var(--g2)}
.l2Tx{flex:1;min-width:0}
.l2Tx b{display:block;font-size:13.5px;font-weight:600;color:var(--tx)}
.l2Tx small{display:block;font-size:11px;color:var(--tx3);margin-top:2px}
.l3Head{font-size:13px;color:var(--tx3);margin-bottom:13px;padding-bottom:10px;
  border-bottom:1px solid var(--line)}
.l3Line{padding:11px 12px;margin-bottom:9px;border-radius:12px;
  background:var(--onCard);border-left:2.5px solid transparent}
.l3Line.picked{border-left-color:#4de2c8;background:rgba(77,226,200,.08)}
.l3Line.unread{opacity:.42}
.l3Who{display:flex;align-items:center;gap:7px;margin-bottom:6px}
.l3Who b{font-size:12.5px;font-weight:700;color:var(--g)}
.l3Who.narr b{color:var(--tx3);font-weight:500;font-style:normal}
.l3Av{position:relative;width:22px;height:22px;border-radius:50%;display:grid;place-items:center;
  font-size:12px;overflow:hidden;flex-shrink:0;
  background:radial-gradient(circle at 34% 26%,var(--av1,#eaf6ff),var(--av2,#5b9fd6))}
.l3Av::before{content:attr(data-an);position:absolute;inset:0;display:grid;place-items:center}
.l3Tx{font-size:13.5px;line-height:1.9;color:var(--tx2);text-align:justify}
.l3Badge{display:inline-block;margin-top:7px;font-size:10px;padding:2px 8px;border-radius:99px;
  background:rgba(77,226,200,.18);border:1px solid rgba(77,226,200,.4);color:#4de2c8}
.l3Badge.off{background:rgba(255,255,255,.06);border-color:var(--line);color:var(--tx3)}
/* ② 章节竖条：fixed 钉死，全对话过程中一动不动 */

#glChT.glChT{

  position:fixed!important;

  left:8px!important;top:auto!important;bottom:96px!important;

  transform:none!important;right:auto!important;

  z-index:9!important;pointer-events:none!important;

  max-height:min(40vh,260px)!important}

.glBox.hasChT>#glWho,.glBox.hasChT>#glTxt,

.glBox.hasChT>#glTapHint,.glBox.hasChT>.glOptsWrap{

  margin-left:46px!important;padding-top:0!important}

/* 立绘也要让开竖条 */

.glAvatar{margin-left:46px!important}

/* ══ 小猫彩蛋（长按信封） ══ */
.catEgg{position:fixed;left:50%;top:50%;z-index:9800;pointer-events:none;
  transform:translate(-50%,-46%) scale(.4);opacity:0;
  transition:transform .42s cubic-bezier(.2,1.5,.4,1),opacity .32s}
.catEgg.show{transform:translate(-50%,-50%) scale(1);opacity:1}
.catBox{position:relative;width:132px;height:132px}
.catFace{position:absolute;left:50%;top:52px;width:78px;height:66px;margin-left:-39px;
  background:linear-gradient(170deg,#fff3e2,#ffd9b3);border-radius:50% 50% 46% 46%;
  box-shadow:0 6px 22px rgba(0,0,0,.3),0 0 0 2px rgba(190,130,80,.2)}
.catEar{position:absolute;top:26px;width:0;height:0;
  border-left:16px solid transparent;border-right:16px solid transparent;
  border-bottom:26px solid #ffd9b3;z-index:1}
.catEar.l{left:22px;transform:rotate(-16deg)}
.catEar.r{right:22px;transform:rotate(16deg)}
.catEye{position:absolute;top:28px;width:8px;height:11px;border-radius:50%;
  background:#3a2a20;animation:catBlink 2.2s ease-in-out infinite}
.catEye.l{left:20px}.catEye.r{right:20px}
@keyframes catBlink{0%,92%,100%{transform:scaleY(1)}96%{transform:scaleY(.1)}}
.catNose{position:absolute;left:50%;top:44px;margin-left:-5px;width:10px;height:7px;
  background:#ff9d9d;border-radius:50% 50% 60% 60%;transform:rotate(-45deg)}
.catMouth{position:absolute;left:50%;top:50px;margin-left:-7px;width:14px;height:8px;
  border-bottom:2px solid #a9704a;border-radius:0 0 60% 60%}
.catWhisk{position:absolute;top:42px;width:24px;height:1.5px;background:rgba(160,110,70,.6);
  border-radius:2px}
.catWhisk.l{left:-16px;transform:rotate(9deg)}
.catWhisk.r{right:-16px;transform:rotate(-9deg)}
.catBody{position:absolute;left:50%;top:112px;width:64px;height:40px;margin-left:-32px;
  background:linear-gradient(170deg,#ffe9cf,#ffcaa0);border-radius:46% 46% 30% 30%;
  box-shadow:0 4px 14px rgba(0,0,0,.22)}
.catTail{position:absolute;left:50%;top:88px;margin-left:22px;width:30px;height:30px;
  border:5px solid #ffcaa0;border-left-color:transparent;border-radius:50%;
  animation:catTail 1.4s ease-in-out infinite}
@keyframes catTail{0%,100%{transform:rotate(-16deg)}50%{transform:rotate(14deg)}}
.catTip{position:absolute;left:50%;top:158px;transform:translateX(-50%);
  white-space:nowrap;font-size:12px;font-weight:700;color:#ffbe78;
  background:rgba(0,0,0,.7);padding:5px 12px;border-radius:99px}
.catBox{animation:catBob 1.2s ease-in-out infinite}
@keyframes catBob{0%,100%{transform:translateY(0) rotate(-1deg)}50%{transform:translateY(-8px) rotate(1deg)}}

/* ══ 随机卖萌语录 ══ */
.quipHint{font-size:12px;color:var(--tx3);margin-bottom:12px}
.quipList{display:grid;gap:9px}
.quipRow{padding:12px 14px;border-radius:13px;background:var(--onCard);
  border:1px solid var(--line)}
.quipRow b{display:block;font-size:13px;color:var(--g2);margin-bottom:6px}
.quipRow p{margin:0;font-size:13.5px;line-height:1.9;color:var(--tx2)}
/* ④ 信封外框恢复原尺寸，只让图标抖 */
.mailBtn.v2{width:46px!important;height:46px!important;border-radius:14px!important;
  border-width:1px!important}
.mailBtn.v2 .mbIcon{font-size:21px!important;transform-origin:50% 60%}
.mailBtn.v2 .mbDot{min-width:18px!important;height:18px!important;font-size:10px!important;
  line-height:15px!important;top:-4px!important;right:-4px!important}
/* 抖动：平时慢，有未读快 */
.mailBtn.v2.mailIdle .mbIcon{animation:mailWobble 3.4s ease-in-out infinite}
.mailBtn.v2.mailHot .mbIcon{animation:mailWobble 1.2s ease-in-out infinite}
@keyframes mailWobble{
  0%,70%,100%{transform:rotate(0deg) translateY(0)}
  74%{transform:rotate(-12deg) translateY(-2px)}
  78%{transform:rotate(10deg) translateY(-1px)}
  82%{transform:rotate(-7deg)}
  86%{transform:rotate(5deg)}
  90%{transform:rotate(-2deg)}}
/* ② 悬浮上一句按钮：贴在聊天框左下，不远也不挡 */

.glBackFab{position:absolute;left:10px;bottom:8px;z-index:8;

  width:32px!important;height:32px!important;border-radius:10px!important;

  display:none;place-items:center;cursor:pointer;

  font-family:inherit;font-size:15px!important;font-weight:700;

  color:rgba(255,255,255,.72);background:rgba(255,255,255,.1);

  border:1px solid rgba(255,255,255,.16);backdrop-filter:blur(8px);

  -webkit-tap-highlight-color:transparent;transition:.16s}

.glBackFab:active{transform:scale(.9);background:rgba(255,255,255,.2)}

.glBox.hasChT .glBackFab{left:8px}

/* 立绘面板 v2：角色 × 4 张 */

.standGrid2{display:grid;gap:11px;margin-top:9px}

.standRow{padding:9px 10px;border-radius:11px;background:rgba(255,255,255,.035)}

.standName{font-size:12px;font-weight:700;color:var(--tx);margin-bottom:7px}

.standCells{display:grid;grid-template-columns:repeat(4,1fr);gap:6px}

.standSlot{position:relative;aspect-ratio:3/4;border-radius:8px;overflow:hidden;

  display:grid;place-items:center;cursor:pointer;

  background:rgba(255,255,255,.05);border:1px dashed rgba(255,255,255,.14)}

.standSlot.has{border-style:solid;border-color:rgba(155,107,255,.34);cursor:zoom-in}

.standSlot.has img{width:100%;height:100%;object-fit:cover;object-position:50% 15%;display:block}

.standSlot.has i{position:absolute;left:0;right:0;bottom:0;padding:2px 3px;

  font-style:normal;font-size:8.5px;text-align:center;color:#fff;

  background:linear-gradient(transparent,rgba(0,0,0,.8))}

.standSlot b{font-size:17px;color:var(--tx3);font-weight:400}

.standSlot small{font-size:8.5px;color:var(--tx3);margin-top:2px}

.standSlot.has:active{transform:scale(.94)}

.standBigPrev{display:grid;place-items:center;padding:6px}

.standBigPrev img{max-width:100%;max-height:56vh;border-radius:12px;display:block}

/* 彩蛋提示：放在信的上方 */

.ltrEggTip{margin-bottom:13px;padding:9px 12px;border-radius:10px;

  font-size:11.5px;color:var(--tx3);line-height:1.6;text-align:center;

  background:rgba(255,255,255,.04);border:1px dashed rgba(255,190,120,.28)}

.ltrEggTip b{color:#ffbe78}

/* ══ 彩蛋 ══ */
.eggPoem{font-size:14px;line-height:2.15;color:var(--tx);text-align:center;padding:6px 2px}
.eggHint{margin-top:14px;font-size:11.5px;color:var(--tx3);text-align:center}
.eggGrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(88px,1fr));gap:9px}
.eggCell{display:flex;flex-direction:column;align-items:center;gap:3px;padding:11px 6px;
  border-radius:12px;background:var(--onCard);border:1px solid var(--line);text-align:center}
.eggCell.on{border-color:var(--g);background:linear-gradient(135deg,rgba(155,107,255,.14),transparent)}
.eggIco{font-size:21px;line-height:1;filter:grayscale(1);opacity:.4}
.eggCell.on .eggIco{filter:none;opacity:1}
.eggN{font-size:11px;font-weight:600;color:var(--tx3);line-height:1.35}
.eggCell.on .eggN{color:var(--tx)}
.eggW{font-size:9px;color:var(--tx3);opacity:.75}
.eggProgress{margin-top:14px;padding:9px;border-radius:10px;text-align:center;font-size:12px;
  color:var(--tx2);background:rgba(255,255,255,.04);border:1px solid var(--line)}

/* ══ 原创曲 ══ */
.osIntro{font-size:11.5px;color:var(--tx3);text-align:center;margin-bottom:12px;
  padding:8px;border-radius:9px;background:rgba(77,226,200,.08);border:1px solid rgba(77,226,200,.22)}
.osList{display:grid;gap:8px;max-height:52vh;overflow-y:auto}
.osRow{display:flex;gap:10px;padding:10px 11px;border-radius:12px;
  background:var(--onCard);border:1px solid var(--line);align-items:flex-start}
.osRow.on{border-color:var(--g);background:linear-gradient(135deg,rgba(155,107,255,.12),transparent)}
.osPlay{flex-shrink:0;width:32px;height:32px;border-radius:50%;cursor:pointer;
  display:grid;place-items:center;font-size:12px;font-family:inherit;
  background:rgba(255,255,255,.1);border:1px solid var(--line);color:var(--tx)}
.osRow.on .osPlay{background:linear-gradient(135deg,var(--g),var(--g2));color:#fff;border-color:transparent}
.osTx{flex:1;min-width:0}
.osTx b{display:block;font-size:13px;font-weight:700;color:var(--tx)}
.osTx small{display:block;font-size:10.5px;color:var(--tx3);margin-top:2px}
.osLyric{margin:7px 0 0;font-size:11.5px;line-height:1.75;color:var(--tx2);
  white-space:pre-wrap;font-family:inherit;opacity:.85}

/* 结局全文 */
.etHead{padding:14px 15px;border-radius:14px;margin-bottom:16px;
  background:linear-gradient(135deg,rgba(155,107,255,.16),rgba(0,229,255,.1));
  border:1px solid rgba(155,107,255,.26)}
.etHead b{display:block;font-size:19px;font-weight:800;color:#fff;letter-spacing:.04em}
.etHead span{display:block;font-size:12px;color:var(--tx2);margin-top:5px;line-height:1.6}
.etBody{max-height:52vh;overflow-y:auto;padding-right:6px}
.etBody p{margin:0 0 16px;font-size:14.5px;line-height:2.2;color:var(--tx2);
  text-align:justify;text-indent:2em}
.etBody p:last-child{margin-bottom:0}
.etTip{margin-top:18px;padding-top:15px;border-top:1px solid var(--line);
  font-size:13px;color:var(--g2);text-align:center;font-style:italic}
.etBody::-webkit-scrollbar{width:4px}
.etBody::-webkit-scrollbar-thumb{background:rgba(255,255,255,.15);border-radius:2px}
.glEndHint{margin-top:9px;font-size:11.5px;color:var(--tx3);text-align:center}
/* ══ v19.12 内耗板块 ══ */
/* ══════════ v19.12 内耗板块样式 ══════════ */
/* 选择困难 · PK 条 */
.tiePk{margin:14px 0 4px;animation:fadeUp .3s ease}
@keyframes fadeUp{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
.tiePkBar{height:9px;border-radius:99px;background:linear-gradient(90deg,rgba(155,107,255,.25),rgba(255,255,255,.06));overflow:hidden;position:relative}
.tiePkBar::after{content:'';position:absolute;left:50%;top:-3px;bottom:-3px;width:2px;background:rgba(255,255,255,.3);border-radius:2px}
.tiePkFill{height:100%;border-radius:99px;background:linear-gradient(90deg,var(--g2),var(--g));transition:width .5s cubic-bezier(.2,.9,.3,1);box-shadow:0 0 12px rgba(155,107,255,.45)}
.tiePkLbl{display:flex;justify-content:space-between;margin-top:6px;font-size:10.5px;color:var(--tx3)}

/* 对决卡片 */
.tieBox .tieCard,.tieBox>button,.tieBox>[id^=tie]{position:relative;transition:transform .22s,box-shadow .22s,border-color .22s}
.tieBox.win [id=tieA],.tieBox [id=tieA].win{border-color:#4ade80!important;background:rgba(74,222,128,.12)!important;transform:scale(1.03);box-shadow:0 0 26px rgba(74,222,128,.3)}
.tieBox [id=tieB].win{border-color:#4ade80!important;background:rgba(74,222,128,.12)!important;transform:scale(1.03);box-shadow:0 0 26px rgba(74,222,128,.3)}
.tieBox .lose{opacity:.32;filter:grayscale(1);transform:scale(.95)}
.tieBox.pulse{animation:tiePulse .55s cubic-bezier(.2,1.4,.4,1)}
@keyframes tiePulse{0%{transform:scale(.96);opacity:.4}50%{transform:scale(1.02);opacity:1}100%{transform:none}}

/* 胜出面板 */
.twc{font-size:17px;font-weight:800;background:linear-gradient(90deg,var(--g2),var(--g));-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}
.twe{font-size:11px;color:var(--tx3);margin-top:4px}
.twr{margin-top:14px;padding:13px 15px;border-radius:13px;background:rgba(155,107,255,.09);border-left:3px solid var(--g2);font-size:13.5px;line-height:1.85;color:var(--tx2)}
.twr b{display:block;color:var(--g2);margin-bottom:5px;font-size:14px}
.twr span{font-size:12.5px;color:var(--tx3)}
.twl{margin-top:12px;font-size:11.5px;color:var(--tx3);line-height:1.9;padding-top:11px;border-top:1px solid var(--line);word-break:break-all}
.twtip{margin-top:12px;font-size:12.5px;color:var(--g);text-align:center;padding:9px;border-radius:11px;background:rgba(77,226,200,.08)}

/* 拖延症 5 分钟计时器 */
.proc5{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-top:14px;padding:15px;border-radius:15px;background:rgba(255,255,255,.03);border:1px solid var(--line)}
.proc5.on{background:linear-gradient(135deg,rgba(155,107,255,.1),rgba(0,229,255,.06))}
.proc5.done{background:linear-gradient(135deg,rgba(74,222,128,.14),transparent);border-color:rgba(74,222,128,.32)}
.p5ring{position:relative;width:112px;height:112px;flex-shrink:0}
.p5ring svg{width:100%;height:100%;transform:rotate(-90deg)}
.p5bg,.p5fg{fill:none;stroke-width:8;stroke-linecap:round}
.p5bg{stroke:rgba(255,255,255,.07)}
.p5fg{stroke:url(#g1);stroke:var(--g2);transition:stroke-dashoffset 1s linear;filter:drop-shadow(0 0 6px rgba(155,107,255,.5))}
.p5num{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px}
.p5num b{font-size:24px;font-weight:800;font-variant-numeric:tabular-nums;letter-spacing:.02em}
.p5num small{font-size:10px;color:var(--tx3)}
.proc5.done .p5num b{font-size:18px;color:#4ade80}
.p5tip{flex:1;min-width:150px;font-size:12.5px;line-height:1.8;color:var(--tx2)}
.proc5.done .p5tip b{color:#4ade80;font-size:14px}

/* 完美主义 */
.ptask{margin-bottom:10px;font-size:12.5px;color:var(--tx3)}
.ptask b{color:var(--tx)}
.pmain{font-size:16px;font-weight:700;color:var(--g2);margin-bottom:7px;line-height:1.5}
.psub{font-size:13.5px;line-height:1.9;color:var(--tx2)}
.psteps{margin-top:14px;padding:13px 15px;border-radius:13px;background:rgba(255,255,255,.035);border:1px dashed rgba(255,255,255,.1);font-size:12.5px;line-height:2;color:var(--tx2)}
.psteps span{display:block;margin-top:8px;padding-top:9px;border-top:1px solid var(--line);color:var(--g);font-size:12px}

/* 通用 */
.btn.ghost{background:transparent!important;border-color:var(--line)!important;color:var(--tx3)!important;font-size:11.5px!important;padding:7px 11px!important}
.btn.ghost:hover{border-color:var(--g2)!important;color:var(--g2)!important}
/* glChT-final */

/* glStand-final —— 忆柔立绘 */
.glAvatar{position:relative;display:block;flex-shrink:0;align-self:flex-end;
  margin:0 auto 14px;text-align:center;
  animation:glAvIn .34s cubic-bezier(.2,.9,.3,1)}
.glAvatar img{display:block;margin:0 auto;max-height:min(32vh,230px);width:auto;
  filter:drop-shadow(0 8px 26px rgba(0,0,0,.6));
  -webkit-mask-image:radial-gradient(ellipse 72% 66% at 50% 40%,#000 60%,transparent 100%);
  mask-image:radial-gradient(ellipse 72% 66% at 50% 40%,#000 60%,transparent 100%)}
@keyframes glAvIn{from{opacity:0;transform:translateY(14px) scale(.96)}to{opacity:1;transform:none}}
.glAv.glAvPic{overflow:hidden!important;background:none!important;
  box-shadow:0 2px 12px rgba(0,0,0,.34),0 0 0 2px rgba(255,182,224,.45)!important}
.glAv.glAvPic img{position:static!important;content:none!important;
  width:100%!important;height:100%!important;object-fit:cover!important;
  display:block!important;font-size:0!important;filter:none!important;
  -webkit-mask-image:none!important;mask-image:none!important;
  max-height:none!important;margin:0!important}
.glAv.glAvPic::before,.glAv.glAvPic::after{display:none!important}
/* glStand-final */


/* 改密码区：说清楚一点，别是白的 */
#secPwd .hint{color:var(--tx2)!important;opacity:1!important}
#secPwd .fl{color:var(--tx2)!important;opacity:1!important;font-weight:600}
#secPwd input{color:var(--tx)!important;background:var(--card2)!important;
  -webkit-text-fill-color:var(--tx)!important;border:1px solid var(--line)!important}
#secPwd input::placeholder{color:var(--tx3)!important;opacity:1!important}
#secPwd input:focus{border-color:var(--acc)!important}
#secPwd .err{color:#ffb3c0!important;font-weight:600}
/* 主播类型区：和改密码一样，框被顶成白的、打的字看不见 */
#secCat .hint{color:var(--tx2)!important;opacity:1!important}
#secCat .fl{color:var(--tx2)!important;opacity:1!important;font-weight:600}
#secCat input,#secCat select,#secCat textarea{color:var(--tx)!important;background:var(--card2)!important;
  -webkit-text-fill-color:var(--tx)!important;border:1px solid var(--line)!important}
#secCat input::placeholder,#secCat textarea::placeholder{color:var(--tx3)!important;opacity:1!important}
#secCat input:focus,#secCat select:focus,#secCat textarea:focus{border-color:var(--acc)!important}
/* 下拉展开后的选项列表（部分安卓/iOS 会用系统白底白字） */
#secCat select option,#secCat select optgroup{background:var(--card2)!important;color:var(--tx)!important}
#secPwd h2{color:var(--tx)!important}
.card .hint{opacity:1}


/* 问候彩蛋：全屏特效 */
@keyframes gxFxIn{0%{opacity:0;transform:scale(.55) rotate(-7deg)}
  16%{opacity:1;transform:scale(1.1) rotate(2deg)}
  30%{transform:scale(1) rotate(0)}
  72%{opacity:1;transform:scale(1)}
  100%{opacity:0;transform:scale(1.07) translateY(-16px)}}
@keyframes gxFxRing{0%{box-shadow:0 0 0 0 rgba(255,190,110,.5);opacity:1}
  100%{box-shadow:0 0 0 340px rgba(255,190,110,0);opacity:0}}
@keyframes gxFy{0%{opacity:0;transform:translate(-50%,-50%) scale(.35)}
  18%{opacity:1}
  100%{opacity:0;transform:translate(calc(-50% + var(--dx)),calc(-50% + var(--dy))) scale(1.2) rotate(var(--rot,18deg))}}
@keyframes gxVe{0%{opacity:0}12%{opacity:1}72%{opacity:1}100%{opacity:0}}


/* 怼人话术 · 今日更新 标签 */
.duitTop{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:0 0 10px}
.duitTag{font-size:11px;padding:3px 9px;border-radius:999px;background:rgba(150,150,180,.16);
  color:var(--tx2);letter-spacing:.04em}
.duitTag.net{background:rgba(90,200,160,.16);color:#5fd0a8}
.duitTop .duitTip{font-size:11.5px;color:var(--tx3);flex:1}


/* 泄愤屋 · 连击与发泄特效 */
#ventIn{transition:min-height .28s ease}
#ventIn.vBursting{min-height:min(280px,40vh)!important;font-size:15px;line-height:1.9}
#ventStage.vBursting #ventReply{max-height:260px}
@keyframes vShake{0%,100%{transform:translate(0,0)}
  20%{transform:translate(-7px,3px) rotate(-.6deg)}
  40%{transform:translate(6px,-3px) rotate(.5deg)}
  60%{transform:translate(-4px,2px)}
  80%{transform:translate(3px,-1px)}}
#ventStage.vHit{animation:vShake .42s ease}
@keyframes vPunchIn{0%{opacity:0;transform:translate(0,0) scale(.3) rotate(-25deg)}
  45%{opacity:1;transform:translate(0,0) scale(1.35) rotate(6deg)}
  70%{transform:translate(6px,0) scale(1) rotate(0)}
  100%{opacity:0;transform:translate(-40px,-20px) scale(.8) rotate(-12deg)}}
.vPunch{position:absolute;right:12%;top:34%;font-size:clamp(60px,20vw,110px);
  pointer-events:none;z-index:6;animation:vPunchIn .72s cubic-bezier(.2,.85,.3,1) forwards;
  filter:drop-shadow(0 8px 18px rgba(255,90,60,.45))}
@keyframes vSparkOut{0%{opacity:0;transform:translate(-50%,-50%) scale(.4)}
  25%{opacity:1}
  100%{opacity:0;transform:translate(calc(-50% + var(--dx)),calc(-50% + var(--dy))) scale(1.15) rotate(40deg)}}
.vSpark{position:absolute;left:50%;top:45%;pointer-events:none;z-index:6;
  animation:vSparkOut .95s cubic-bezier(.15,.75,.3,1) forwards}
@keyframes vComboPop{0%{opacity:0;transform:translate(-50%,0) scale(.5)}
  30%{opacity:1;transform:translate(-50%,-6px) scale(1.25)}
  100%{opacity:0;transform:translate(-50%,-40px) scale(.9)}}
.vCombo{position:absolute;left:50%;top:14%;transform:translateX(-50%);
  font-size:clamp(26px,8vw,44px);font-weight:900;color:#ffd08a;pointer-events:none;z-index:6;
  text-shadow:0 6px 20px rgba(255,110,60,.55);animation:vComboPop .9s cubic-bezier(.2,.9,.3,1) forwards}


/* 游戏 · 文字呈现方式 */
/* ══════ ☰ 菜单键：放在顶部导航最左，放大到 38px ══════ */
.navMenuBtn{
  width:38px;height:38px;flex:0 0 38px;border-radius:12px;padding:0;
  display:inline-flex;flex-direction:column;justify-content:center;align-items:center;gap:4px;
  background:rgba(255,255,255,.085);border:1px solid rgba(255,255,255,.16);
  cursor:pointer;margin-right:7px;-webkit-tap-highlight-color:transparent;
  transition:background .22s,transform .18s cubic-bezier(.2,.8,.3,1),border-color .22s}
.navMenuBtn:active{transform:scale(.92);background:rgba(160,140,255,.22)}
.navMenuBtn span{display:block;width:16px;height:2px;border-radius:1px;background:#e8e4f6;
  transition:transform .3s cubic-bezier(.2,.8,.3,1),opacity .18s,width .3s}
.navMenuBtn.open{border-color:rgba(160,140,255,.5);background:rgba(160,140,255,.18)}
.navMenuBtn.open span:nth-child(1){transform:translateY(6px) rotate(45deg)}
.navMenuBtn.open span:nth-child(2){opacity:0;width:0}
.navMenuBtn.open span:nth-child(3){transform:translateY(-6px) rotate(-45deg)}

/* 原浮动「找功能」按钮收起来：☰ 已经在顶栏最左，两个重复 */
#navFab{display:none!important}

/* 原浮动「找功能」按钮收起来：☰ 已经在顶栏最左，两个重复 */
#navFab{display:none!important}

/* 底部 6 格：图标文字都收一点，避免挤 */
#botTabs a{font-size:9.5px}
#botTabs a i{font-size:14px;margin-bottom:2px}

/* 底部 6 格：图标文字都收一点，避免挤 */
#botTabs a{font-size:9.5px}
#botTabs a i{font-size:14px;margin-bottom:2px}

/* fabMenu 已被搬进顶栏 pageTabs（作为第一个子元素），不再是悬浮圆钮 */
#pageTabs .fabMenu{
  position:static!important;display:inline-flex;flex:0 0 38px;
  width:38px;height:38px;border-radius:12px;padding:0;margin-right:7px;
  align-items:center;justify-content:center;
  background:rgba(255,255,255,.085);border:1px solid rgba(255,255,255,.16);
  cursor:pointer;-webkit-tap-highlight-color:transparent;
  transition:background .22s,transform .18s}
#pageTabs .fabMenu i{font-style:normal;font-size:15px;line-height:1;color:#e8e4f6}
#pageTabs .fabMenu:active{transform:scale(.92);background:rgba(160,140,255,.22)}
#pageTabs .fabMenu.on{border-color:rgba(160,140,255,.5);background:rgba(160,140,255,.18)}

/* fabMenu 已被搬进顶栏 pageTabs（作为第一个子元素），不再是悬浮圆钮 */
#pageTabs .fabMenu{
  position:static!important;display:inline-flex;flex:0 0 38px;
  width:38px;height:38px;border-radius:12px;padding:0;margin-right:7px;
  align-items:center;justify-content:center;
  background:rgba(255,255,255,.085);border:1px solid rgba(255,255,255,.16);
  cursor:pointer;-webkit-tap-highlight-color:transparent;
  transition:background .22s,transform .18s}
#pageTabs .fabMenu i{font-style:normal;font-size:15px;line-height:1;color:#e8e4f6}
#pageTabs .fabMenu:active{transform:scale(.92);background:rgba(160,140,255,.22)}
#pageTabs .fabMenu.on{border-color:rgba(160,140,255,.5);background:rgba(160,140,255,.18)}

/* fabMenu 已搬进顶栏（作为 pageTabs 第一个子元素），不再是悬浮圆钮 */
#pageTabs .fabMenu{
  position:static!important;display:inline-flex;flex:0 0 38px;
  width:38px;height:38px;border-radius:12px;padding:0;margin-right:7px;
  align-items:center;justify-content:center;vertical-align:middle;
  background:rgba(255,255,255,.085);border:1px solid rgba(255,255,255,.16);
  cursor:pointer;-webkit-tap-highlight-color:transparent;
  transition:background .22s,transform .18s}
#pageTabs .fabMenu i{font-style:normal;font-size:15px;line-height:1;color:#e8e4f6}
#pageTabs .fabMenu:active{transform:scale(.92);background:rgba(160,140,255,.22)}
#pageTabs .fabMenu.on{border-color:rgba(160,140,255,.5);background:rgba(160,140,255,.18)}

/* fabMenu 已搬进顶栏（作为 pageTabs 第一个子元素），不再是悬浮圆钮 */
#pageTabs .fabMenu{
  position:static!important;display:inline-flex;flex:0 0 38px;
  width:38px;height:38px;border-radius:12px;padding:0;margin-right:7px;
  align-items:center;justify-content:center;vertical-align:middle;
  background:rgba(255,255,255,.085);border:1px solid rgba(255,255,255,.16);
  cursor:pointer;-webkit-tap-highlight-color:transparent;
  transition:background .22s,transform .18s}
#pageTabs .fabMenu i{font-style:normal;font-size:15px;line-height:1;color:#e8e4f6}
#pageTabs .fabMenu:active{transform:scale(.92);background:rgba(160,140,255,.22)}
#pageTabs .fabMenu.on{border-color:rgba(160,140,255,.5);background:rgba(160,140,255,.18)}

/* 顶部子页：非当前大类的淡下去 */
.pageTabs .ptab.dim{opacity:.34;filter:saturate(.4)}
.pageTabs .ptab{transition:opacity .3s,transform .2s,background .2s,color .2s}

/* 原浮动「找功能」按钮收起来：☰ 已经在顶栏最左，两个重复 */
#navFab{display:none!important}

/* 原浮动「找功能」按钮收起来：☰ 已经在顶栏最左，两个重复 */
#navFab{display:none!important}

/* 底部 6 格：图标文字都收一点，避免挤 */
#botTabs a{font-size:9.5px}
#botTabs a i{font-size:14px;margin-bottom:2px}

/* 底部 6 格：图标文字都收一点，避免挤 */
#botTabs a{font-size:9.5px}
#botTabs a i{font-size:14px;margin-bottom:2px}

/* fabMenu 已被搬进顶栏 pageTabs（作为第一个子元素），不再是悬浮圆钮 */
#pageTabs .fabMenu{
  position:static!important;display:inline-flex;flex:0 0 38px;
  width:38px;height:38px;border-radius:12px;padding:0;margin-right:7px;
  align-items:center;justify-content:center;
  background:rgba(255,255,255,.085);border:1px solid rgba(255,255,255,.16);
  cursor:pointer;-webkit-tap-highlight-color:transparent;
  transition:background .22s,transform .18s}
#pageTabs .fabMenu i{font-style:normal;font-size:15px;line-height:1;color:#e8e4f6}
#pageTabs .fabMenu:active{transform:scale(.92);background:rgba(160,140,255,.22)}
#pageTabs .fabMenu.on{border-color:rgba(160,140,255,.5);background:rgba(160,140,255,.18)}

/* fabMenu 已被搬进顶栏 pageTabs（作为第一个子元素），不再是悬浮圆钮 */
#pageTabs .fabMenu{
  position:static!important;display:inline-flex;flex:0 0 38px;
  width:38px;height:38px;border-radius:12px;padding:0;margin-right:7px;
  align-items:center;justify-content:center;
  background:rgba(255,255,255,.085);border:1px solid rgba(255,255,255,.16);
  cursor:pointer;-webkit-tap-highlight-color:transparent;
  transition:background .22s,transform .18s}
#pageTabs .fabMenu i{font-style:normal;font-size:15px;line-height:1;color:#e8e4f6}
#pageTabs .fabMenu:active{transform:scale(.92);background:rgba(160,140,255,.22)}
#pageTabs .fabMenu.on{border-color:rgba(160,140,255,.5);background:rgba(160,140,255,.18)}

/* fabMenu 已搬进顶栏（作为 pageTabs 第一个子元素），不再是悬浮圆钮 */
#pageTabs .fabMenu{
  position:static!important;display:inline-flex;flex:0 0 38px;
  width:38px;height:38px;border-radius:12px;padding:0;margin-right:7px;
  align-items:center;justify-content:center;vertical-align:middle;
  background:rgba(255,255,255,.085);border:1px solid rgba(255,255,255,.16);
  cursor:pointer;-webkit-tap-highlight-color:transparent;
  transition:background .22s,transform .18s}
#pageTabs .fabMenu i{font-style:normal;font-size:15px;line-height:1;color:#e8e4f6}
#pageTabs .fabMenu:active{transform:scale(.92);background:rgba(160,140,255,.22)}
#pageTabs .fabMenu.on{border-color:rgba(160,140,255,.5);background:rgba(160,140,255,.18)}

/* fabMenu 已搬进顶栏（作为 pageTabs 第一个子元素），不再是悬浮圆钮 */
#pageTabs .fabMenu{
  position:static!important;display:inline-flex;flex:0 0 38px;
  width:38px;height:38px;border-radius:12px;padding:0;margin-right:7px;
  align-items:center;justify-content:center;vertical-align:middle;
  background:rgba(255,255,255,.085);border:1px solid rgba(255,255,255,.16);
  cursor:pointer;-webkit-tap-highlight-color:transparent;
  transition:background .22s,transform .18s}
#pageTabs .fabMenu i{font-style:normal;font-size:15px;line-height:1;color:#e8e4f6}
#pageTabs .fabMenu:active{transform:scale(.92);background:rgba(160,140,255,.22)}
#pageTabs .fabMenu.on{border-color:rgba(160,140,255,.5);background:rgba(160,140,255,.18)}

/* 顶部子页：非当前大类的淡下去 */
.pageTabs .ptab.dim{opacity:.34;filter:saturate(.4)}
.pageTabs .ptab{transition:opacity .3s,transform .2s,background .2s,color .2s}

/* ══════ 通用动效：往「轻、快、有方向」上做 ══════ */
@keyframes pgIn{from{opacity:0;transform:translateY(15px)}to{opacity:1;transform:none}}
@keyframes mIn{from{opacity:0;transform:translateY(30px) scale(.965)}to{opacity:1;transform:none}}
@keyframes mOut{from{opacity:1;transform:none}to{opacity:0;transform:translateY(18px) scale(.98)}}
@keyframes rip{0%{transform:scale(.28);opacity:.92}55%{opacity:.8}100%{transform:scale(1);opacity:0}}
@keyframes popIn{from{opacity:0;transform:scale(.9)}to{opacity:1;transform:none}}

/* 板块切换：淡入 + 轻微上移（不打断已有布局） */
#mainView > .pane.on,
#mainView > section.on,
.pane.on{animation:pgIn .42s cubic-bezier(.2,.8,.3,1) both}

/* 弹窗：从下往上推 + 背景模糊 */
.modal.on .modalBox{animation:mIn .44s cubic-bezier(.2,.8,.3,1) both}
.modal.on{backdrop-filter:blur(7px);-webkit-backdrop-filter:blur(7px)}
.modalX{transition:transform .2s,background .2s}
.modalX:active{transform:scale(.9) }

/* 按钮/卡片按压统一手感 */
.btn,.ptab,.subGame,.bkTg,.glPr,.quickBar a,.card,.tile{
  transition:transform .16s cubic-bezier(.2,.8,.3,1),background .2s,border-color .2s,box-shadow .2s}
/* 只给「小按钮/小卡片」做按压缩放；不再对 .card 整体缩小——
   话题库那张卡有 84 条、高约 5700px，点一下 scale(.972) 会让整张卡的顶边下坠 ~80px，
   看上去就是「点击浮动大、太晃」。卡片内部的按压反馈交给点击光效即可。 */
.btn:active,.ptab:active,.subGame:active,.bkTg:active,.quickBar a:active{transform:scale(.972)}

/* 点击涟漪（JS 注入）：亮芯 + 柔和光晕，从点击点向外扩散。
   光晕由 JS 按主题色写入 inline background + box-shadow，保证「有光晕扩散」。 */
.clickRip{position:fixed;border-radius:50%;pointer-events:none;z-index:2147483647;
  transform:scale(.28);transform-origin:center;
  will-change:transform,opacity;
  animation:rip .66s cubic-bezier(.18,.72,.28,1) forwards}

/* 数值/标签变化时轻轻跳一下 */
@keyframes tickUp{from{transform:translateY(4px);opacity:.4}to{transform:none;opacity:1}}

/* 减少动效偏好时收掉大动效；但点击光效(.clickRip)和话题展开(.tpEx)保留——
   否则开了「减少动态效果」的手机上，光效会瞬间消失、列表变成硬跳，用户会以为坏了 */
@media (prefers-reduced-motion:reduce){
  *:not(.clickRip):not(.tpEx),*::before,*::after{animation-duration:.001s!important;transition-duration:.001s!important}
}

#glTxt{color:#fffaf4!important;
  /* 阴影从三重减到两重：每个 span 都带三重阴影 + 逐字动画，
     等于每帧重绘几十个带阴影的字，主线程扛不住就拖慢 setTimeout。 */
  text-shadow:0 1px 2px rgba(0,0,0,.95),0 2px 14px rgba(0,0,0,.7);
  -webkit-text-stroke:.4px rgba(16,6,28,.5);paint-order:stroke fill}
/* 淡入/波纹/模糊三种模式下，正在显形的那些半透明字也要看得见 */
#glTxt .gp{opacity:0;display:inline-block;
  text-shadow:inherit;-webkit-text-stroke:inherit;paint-order:stroke fill}
/* 淡入动画必须挂在 .on 上 —— 字被点亮的那一刻才播。
   之前写在 .gp 上，但 @keyframes gpFade 压根没定义过，
   浏览器直接忽略，于是「逐字淡入」= opacity:1!important 瞬间全亮，
   看着就是「飞快闪一下」。 */
#glTxt .gp.on{opacity:1;animation:gpFade .42s cubic-bezier(.25,.85,.3,1) both;
  /* 时长由 JS 按当前速度逐个设置，这里只给个兜底值 */
  will-change:opacity}
@keyframes gpFade{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}
#glTxt.mBlur .gp.on{opacity:1!important;filter:blur(0)!important}
/* 整句模式（line / soft）也是真白 */
#glTxt .gpLine,#glTxt .gpSoft{color:#fffaf4!important;
  text-shadow:0 1px 2px rgba(0,0,0,.95),0 2px 14px rgba(0,0,0,.7)}
/* 说话的人名 */
#glWho{text-shadow:0 1px 3px rgba(0,0,0,.9)}
#glTxt .gp.on{opacity:1;transform:none}
#glTxt.mFade .gp.on{animation:gpFade .42s cubic-bezier(.25,.85,.3,1) both}
#glTxt.mWave .gp{transform:translateY(9px)}
#glTxt.mWave .gp.on{opacity:1;animation:gpWave 1.9s ease-in-out infinite}
@keyframes gpWave{0%,100%{transform:translateY(0)}50%{transform:translateY(-4px)}}
#glTxt .gpLine{display:inline-block;opacity:1;animation:gpLineIn .5s cubic-bezier(.2,.8,.3,1) both}
@keyframes gpLineIn{from{opacity:0;transform:translateY(9px)}70%{opacity:1;transform:none}to{opacity:1;transform:none}}
.glPrBox{display:flex;flex-direction:column;gap:9px}
/* 改成两行：图标+名称一行，说明另起一行。窄屏上三列并排会把说明挤成一条缝。 */
.glPr{display:grid;grid-template-columns:30px 1fr;grid-template-rows:auto auto;
  align-items:center;gap:1px 11px;text-align:left;padding:12px 14px;
  border-radius:13px;border:1px solid var(--line);background:var(--card2);cursor:pointer;width:100%}
.glPr.on{border-color:var(--acc);background:rgba(160,140,255,.14);box-shadow:0 0 0 1px rgba(160,140,255,.2) inset}
.glPrE{grid-column:1;grid-row:1/3;font-size:21px;width:30px;text-align:center;line-height:1.2}
.glPrN{grid-column:2;grid-row:1;font-weight:700;font-size:14.5px;color:var(--tx);letter-spacing:.01em}
.glPrD{grid-column:2;grid-row:2;font-size:12.5px;line-height:1.55;color:var(--tx2);
  letter-spacing:.01em;opacity:.92}
.glPr.on .glPrD{color:var(--tx);opacity:1}
.glPr:active{transform:scale(.992)}
.glPrBox{display:flex;flex-direction:column;gap:8px}
.glPrBox .mTip{margin:4px 0 0;line-height:1.75}


/* 彩蛋 · 点开特效 */
@keyframes eggPopIn{0%{opacity:0;transform:scale(.3) rotate(-18deg)}
  30%{opacity:1;transform:scale(1.25) rotate(6deg)}
  55%{transform:scale(1) rotate(0)}
  100%{opacity:0;transform:scale(.9) translateY(-18px)}}
@keyframes eggFly{0%{opacity:0;transform:translate(-50%,-50%) scale(.35)}
  22%{opacity:1}
  100%{opacity:0;transform:translate(calc(-50% + var(--dx)),calc(-50% + var(--dy))) scale(1.15) rotate(30deg)}}
.eggHint2{text-align:center;font-size:11.5px;color:var(--tx3);margin-top:8px}
.eggCell.on{cursor:pointer}


/* 游戏 · 选项配色 / 文字呈现 / 速度滑杆 */
/* ① 选项：原来字太淡看不清，这里加粗提亮 + 描边 */
.glOpt{color:var(--tx)!important;font-weight:600!important;line-height:1.65!important;
  text-shadow:0 1px 2px rgba(0,0,0,.35)}
.glOpt>span:last-child{color:var(--tx)!important}
.glOpt .oe{filter:none!important}
.glOpt:active{filter:brightness(1.08)}
@media (prefers-color-scheme: light){}

/* ② 新增三种文字呈现 */
#glTxt .gpSoft{display:inline-block;opacity:1;animation:gpSoftIn 1.25s cubic-bezier(.25,.85,.3,1) both}
@keyframes gpSoftIn{from{opacity:0;letter-spacing:.34em;filter:blur(6px)}
  60%{opacity:1}
  to{opacity:1;letter-spacing:normal;filter:blur(0)}}
#glTxt .gpCur{display:inline-block;width:.16em;min-height:1.05em;margin-left:2px;
  vertical-align:-.16em;border-radius:1px;
  background:currentColor;opacity:.85;box-shadow:0 0 6px rgba(255,255,255,.55);
  animation:gpBlink .82s steps(1,end) infinite}
@keyframes gpBlink{0%,49%{opacity:.75}50%,100%{opacity:0}}
#glTxt.mBlur .gp{opacity:0;filter:blur(9px);transform:scale(1.1)}
#glTxt.mBlur .gp.on{opacity:1;filter:blur(0);transform:none;transition:opacity .5s ease,filter .5s ease,transform .5s ease}

/* ③ 速度滑杆 */
.glSpdSlide{display:flex;align-items:center;gap:10px;margin:12px 0 4px}
.glSpdSlide .ssl{font-size:11.5px;color:var(--tx3);white-space:nowrap}
.sslRange{-webkit-appearance:none;appearance:none;flex:1;height:5px;border-radius:99px;
  background:linear-gradient(90deg,rgba(155,107,255,.5),rgba(77,226,200,.5));outline:none}
.sslRange::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:22px;height:22px;
  border-radius:50%;background:#fff;border:3px solid #9b6bff;cursor:pointer;
  box-shadow:0 2px 8px rgba(0,0,0,.35)}
.sslRange::-moz-range-thumb{width:22px;height:22px;border-radius:50%;background:#fff;
  border:3px solid #9b6bff;cursor:pointer}
.sslRange::-moz-range-track{height:5px;border-radius:99px;
  background:linear-gradient(90deg,rgba(155,107,255,.5),rgba(77,226,200,.5))}


/* 快捷设置面板 */
.quickBar .qbMain{width:100%;display:flex;align-items:center;gap:11px;padding:14px 16px;
  background:var(--onCard);border:1px solid var(--line);border-radius:14px;text-align:left}
.quickBar .qbMain i{font-style:normal;font-size:21px}
.quickBar .qbMain em{margin-left:auto;font-style:normal;font-size:11px;color:var(--tx3)}
.qkGroup{margin-bottom:16px}
.qkGHd{display:flex;align-items:center;gap:8px;margin-bottom:8px;padding-left:3px}
.qkGHd span{font-size:16px}
.qkGHd b{font-size:12px;letter-spacing:.12em;color:var(--tx3);font-weight:700}
.qkGItems{display:flex;flex-direction:column;gap:8px}
.qkItem{display:flex;align-items:center;gap:12px;width:100%;text-align:left;
  padding:13px 14px;border-radius:13px;background:var(--onCard);border:1px solid var(--line);
  color:var(--tx);font-family:inherit;cursor:pointer}
.qkItem:active{filter:brightness(1.08)}
.qkItem .qki{font-size:19px;width:24px;text-align:center;flex-shrink:0}
.qkItem .qkt{font-size:14px;font-weight:700;display:flex;flex-direction:column;gap:2px;flex:1;min-width:0}
.qkItem .qkt i{font-style:normal;font-size:11.5px;font-weight:400;color:var(--tx3)}
.qkItem .qka{font-size:19px;color:var(--tx3);flex-shrink:0}
.qkBgmNow{text-align:center;font-size:14px;color:var(--tx2);padding:4px 0 12px}
.qkBgmList{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:12px}
.qkBgmIt{display:flex;flex-direction:column;align-items:flex-start;gap:2px;padding:11px 12px;
  border-radius:12px;background:var(--onCard);border:1px solid var(--line);color:var(--tx);
  font-family:inherit;cursor:pointer;text-align:left}
.qkBgmIt.on{border-color:var(--acc);background:rgba(155,107,255,.14)}
.qkBgmIt .qbn{font-size:12.5px;font-weight:700;line-height:1.35}
.qkBgmIt .qbn i{display:block;font-style:normal;font-size:10.5px;font-weight:400;color:var(--tx3)}
.qkRow{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.qkVol{display:flex;align-items:center;gap:8px;flex:1;min-width:150px;font-size:12px;color:var(--tx3)}
.qkVol input{flex:1;-webkit-appearance:none;appearance:none;height:4px;border-radius:99px;background:var(--line)}
.qkVol input::-webkit-slider-thumb{-webkit-appearance:none;width:19px;height:19px;border-radius:50%;background:var(--acc);cursor:pointer}
.qkSwitchRow{display:flex;align-items:center;justify-content:space-between;padding:6px 2px 12px;font-size:14px}
.qkSw{width:52px;height:30px;border-radius:99px;background:var(--line);position:relative;
  border:none;cursor:pointer;transition:background .2s;flex-shrink:0}
.qkSw i{position:absolute;left:3px;top:3px;width:24px;height:24px;border-radius:50%;
  background:#fff;transition:transform .2s;display:block}
.qkSw.on{background:var(--acc)}
.qkSw.on i{transform:translateX(22px)}

/* ══════ 点击光效设置（v19.87） ══════ */
.fxBlock{margin-top:4px}
.fxRow{display:flex;align-items:center;justify-content:space-between;font-size:14px;margin:12px 2px 4px}
.fxRow .fxLabel{display:flex;align-items:center;gap:8px}
.fxState{font-size:12.5px;color:var(--tx3)}
.fxState b{color:var(--acc)}
.fxPowWrap{margin-top:6px}
.fxPowWrap input[type=range]{width:100%;accent-color:var(--acc);height:26px}
.fxPowVal{font-size:13px;color:var(--acc);font-variant-numeric:tabular-nums}
.fxColors{display:flex;gap:11px;flex-wrap:wrap;margin-top:10px}
.fxColor{width:34px;height:34px;border-radius:50%;border:2px solid transparent;
  background:var(--fxc);position:relative;cursor:pointer;padding:0;
  box-shadow:0 2px 9px rgba(0,0,0,.2);transition:transform .15s,border-color .15s,box-shadow .15s}
.fxColor:active{transform:scale(.9)}
.fxColor.on{border-color:#fff;box-shadow:0 0 0 2px var(--acc),0 2px 12px rgba(0,0,0,.32)}
.fxColor i{position:absolute;inset:0;margin:auto;width:11px;height:11px;border-radius:50%;
  background:#fff;display:none;box-shadow:0 1px 2px rgba(0,0,0,.4)}
.fxColor.on i{display:block}

/* ══════ 点击动效（v19.101）：6 种按压反馈 ══════
   幅度靠 CSS 变量缩放：--mvA(位移 px) / --mvS(缩放量) / --mvR(旋转 deg)，
   由 JS 按「抖动强度」写入；默认 50 = 轻微，100 = 明显。 */
.mvKinds{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:9px;margin-top:10px}
.mvKind{border:1px solid var(--line);border-radius:12px;
  background:rgba(255,255,255,.055);          /* 比 --onCard 略亮，字才浮得起来 */
  padding:10px 5px 9px;cursor:pointer;text-align:center;
  transition:transform .15s,border-color .15s,background .15s}
.mvKind:active{transform:scale(.93)}
.mvKind.on{border-color:var(--acc);background:rgba(77,226,200,.14)}
.mvKind .mvE{display:block;font-size:19px;line-height:1.25;color:var(--tx);
  font-weight:600;opacity:.95}                 /* 图标原来是暗的，提到正文色 */
.mvKind .mvN{display:block;font-size:12.5px;color:var(--tx);margin-top:4px;font-weight:500}
.mvKind .mvD{display:block;font-size:10.5px;color:var(--tx2);margin-top:3px;line-height:1.5}
.mvKind.on .mvE,.mvKind.on .mvN{color:var(--g2)}

@keyframes mvShake{
  0%{transform:translateX(0)}18%{transform:translateX(calc(var(--mvA) * -1))}
  38%{transform:translateX(var(--mvA))}58%{transform:translateX(calc(var(--mvA) * -.55))}
  78%{transform:translateX(calc(var(--mvA) * .28))}100%{transform:translateX(0)}
}
@keyframes mvSpring{
  0%{transform:scale(1)}24%{transform:scale(calc(1 - var(--mvS)))}
  60%{transform:scale(calc(1 + var(--mvS) * .38))}
  84%{transform:scale(calc(1 - var(--mvS) * .16))}100%{transform:scale(1)}
}
@keyframes mvPulse{
  0%{transform:scale(1)}32%{transform:scale(calc(1 + var(--mvS) * 1.15))}
  100%{transform:scale(1)}
}
@keyframes mvSwing{
  0%{transform:rotate(0)}26%{transform:rotate(calc(var(--mvR) * -1))}
  56%{transform:rotate(var(--mvR))}82%{transform:rotate(calc(var(--mvR) * -.38))}
  100%{transform:rotate(0)}
}
@keyframes mvHop{
  0%{transform:translateY(0)}30%{transform:translateY(calc(var(--mvA) * -1.5))}
  64%{transform:translateY(calc(var(--mvA) * .4))}100%{transform:translateY(0)}
}
@keyframes mvPress{
  0%{transform:scale(1)}26%{transform:scale(calc(1 - var(--mvS) * 1.4))}
  62%{transform:scale(calc(1 + var(--mvS) * .3))}100%{transform:scale(1)}
}
.mv_shake{animation:mvShake .34s cubic-bezier(.36,.07,.19,.97) both}
.mv_spring{animation:mvSpring .4s cubic-bezier(.22,1.2,.36,1) both}
.mv_pulse{animation:mvPulse .44s ease-out both}
.mv_swing{animation:mvSwing .4s cubic-bezier(.36,.07,.19,.97) both}
.mv_hop{animation:mvHop .38s cubic-bezier(.3,1.1,.4,1) both}
.mv_press{animation:mvPress .38s cubic-bezier(.22,1.1,.36,1) both}


/* 小凉头像 */
.xdAvImg{width:52px!important;height:52px!important;border-radius:50%;object-fit:cover;
  display:block;box-shadow:0 4px 16px rgba(0,0,0,.4);border:2px solid rgba(255,255,255,.16)}
.xdAvImg{border-radius:52% 52% 46% 54% / 54% 46% 54% 46%}

<style>
/* ═══════════ 界面风格 · 三套 ═══════════
   默认（不设 data-ui）就是原来的样子，一行没改。
   下面三套是额外的，在设置里换，和皮肤互不干扰。 */

/* ───────── A · 霓虹夜市 ───────── */
html[data-ui="neonx"]{
  --r:14px;
  --bg:#0a0614;--card:#150e26;--card2:#100a1f;--line:#3b2763;
  --tx:#fff4ff;--tx2:#cbb2f2;--tx3:#9b83c6;
  --g:#ff4fd8;--g2:#4dfff0;--w:#ffe14d;--red:#ff5c7a;--blue:#5c9dff;
  --glow1:rgba(255,79,216,.26);--glow2:rgba(77,255,240,.18);--glow3:rgba(255,225,77,.10);
  --tabBg:rgba(16,10,32,.94);--botBg:rgba(21,14,38,.97)
}
html[data-ui="neonx"] body{
  background-color:#0a0614!important;
  background-image:
    radial-gradient(900px 520px at 10% -10%,rgba(255,79,216,.26),transparent 62%),
    radial-gradient(760px 480px at 94% 6%,rgba(77,255,240,.17),transparent 60%),
    radial-gradient(600px 400px at 50% 108%,rgba(92,157,255,.14),transparent 62%),
    repeating-linear-gradient(0deg,rgba(255,255,255,.03) 0 1px,transparent 1px 48px),
    repeating-linear-gradient(90deg,rgba(255,255,255,.03) 0 1px,transparent 1px 48px)!important;
  background-attachment:fixed!important
}
html[data-ui="neonx"] .card{
  background:linear-gradient(165deg,rgba(255,79,216,.055),rgba(21,14,38,.96))!important;
  border:1px solid rgba(255,79,216,.34)!important;
  box-shadow:0 0 0 1px rgba(255,79,216,.07),0 12px 34px rgba(0,0,0,.55),
             inset 0 0 30px rgba(255,79,216,.075)!important
}
html[data-ui="neonx"] .card h2{
  text-shadow:0 0 14px rgba(255,79,216,.62),0 0 30px rgba(255,79,216,.28)
}
html[data-ui="neonx"] .btn{
  border:1px solid rgba(255,79,216,.34)!important;
  box-shadow:inset 0 0 16px rgba(255,79,216,.09)
}
html[data-ui="neonx"] .btn.pri{
  background:linear-gradient(120deg,#ff4fd8,#8a4dff)!important;
  border-color:rgba(255,255,255,.28)!important;
  box-shadow:0 5px 22px rgba(255,79,216,.44)!important;
  color:#fff!important
}
html[data-ui="neonx"] .brandCn{filter:
  drop-shadow(0 0 12px rgba(255,79,216,.85))
  drop-shadow(0 0 30px rgba(77,255,240,.5))
  drop-shadow(0 3px 0 rgba(60,10,90,.6))!important}
html[data-ui="neonx"] .tag{border-color:rgba(255,79,216,.4)!important}

/* ───────── B · 纸感暖阳 ───────── */
html[data-ui="paper"]{
  --r:22px;
  --bg:#f6f0e4;--card:#fffdf7;--card2:#f8f2e6;--line:#e7dcc8;
  --tx:#33291c;--tx2:#6a5c48;--tx3:#8b7c66;
  --g:#c9622f;--g2:#5c8a54;--w:#a8761c;--red:#b84a36;--blue:#416f8c;
  --glow1:rgba(201,98,47,.12);--glow2:rgba(92,138,84,.10);--glow3:rgba(168,118,28,.07);
  --tabBg:rgba(250,246,238,.96);--botBg:rgba(255,253,247,.98)
}
html[data-ui="paper"] body{
  background-color:#f6f0e4!important;
  background-image:
    radial-gradient(circle at 18% 12%,rgba(201,98,47,.09),transparent 46%),
    radial-gradient(circle at 84% 78%,rgba(92,138,84,.09),transparent 48%),
    repeating-linear-gradient(0deg,rgba(120,95,60,.022) 0 1px,transparent 1px 5px)!important;
  background-attachment:fixed!important
}
html[data-ui="paper"] .card{
  background:#fffdf7!important;
  border:1px solid #e9dfcd!important;
  border-radius:22px!important;
  box-shadow:0 1px 0 #f3ebda,0 3px 0 #efe6d4,0 14px 30px rgba(120,95,60,.14)!important
}
/* 卡片左上角一条「纸胶带」 */
html[data-ui="paper"] .card{position:relative}
html[data-ui="paper"] .card::before{
  content:'';position:absolute;left:-9px;top:16px;width:74px;height:19px;
  background:linear-gradient(100deg,rgba(255,225,150,.72),rgba(255,214,120,.5));
  border-left:2px dashed rgba(160,120,40,.32);
  border-right:2px dashed rgba(160,120,40,.32);
  transform:rotate(-4.5deg);pointer-events:none;z-index:1;
  box-shadow:0 2px 7px rgba(120,95,60,.18)
}
html[data-ui="paper"] .card h2{color:#33291c!important;text-shadow:0 1px 0 #fff}
html[data-ui="paper"] .btn{
  background:#fffdf7!important;color:#4a3c29!important;
  border:1px solid #e2d7c2!important;border-radius:14px!important;
  box-shadow:0 2px 0 #efe6d4!important
}
html[data-ui="paper"] .btn.pri{
  background:linear-gradient(160deg,#c9622f,#a8481f)!important;color:#fff!important;
  border-color:rgba(120,55,15,.4)!important;box-shadow:0 3px 0 #8d3a17!important
}
/* 浅底上原来的浅色渐变字等于隐形，这里换成墨色系 */
html[data-ui="paper"] .brandCn{
  background-image:linear-gradient(100deg,#c9622f 0%,#9a3f1c 22%,#6b3f6e 48%,#2f5a48 72%,#c9622f 100%)!important;
  background-size:220% 100%!important;
  background-repeat:repeat!important;
  -webkit-background-clip:text!important;background-clip:text!important;
  -webkit-text-fill-color:transparent!important;
  animation:brandFlow 6s linear infinite;
  filter:
    drop-shadow(0 1px 0 rgba(255,255,255,.95))
    drop-shadow(0 2px 0 rgba(120,95,60,.28))
    drop-shadow(0 8px 16px rgba(201,98,47,.28))!important}
html[data-ui="paper"] .brandEn{
  background-image:linear-gradient(96deg,#9a3f1c,#6b3f6e 50%,#2f5a48)!important;
  background-size:220% 100%!important;
  -webkit-background-clip:text!important;background-clip:text!important;
  -webkit-text-fill-color:transparent!important;
  filter:none!important}
html[data-ui="paper"] .helloRow #hello{
  background-image:linear-gradient(96deg,#2b2118 0%,#7a4426 38%,#4d3a6a 72%,#28543f 100%)!important;
  background-size:200% 100%!important;
  -webkit-background-clip:text!important;background-clip:text!important;
  -webkit-text-fill-color:transparent!important;
  filter:drop-shadow(0 1px 0 rgba(255,255,255,.9))!important}
html[data-ui="paper"] .brandGlow{opacity:.45}
html[data-ui="paper"] .brandSpark::before{opacity:.35}
html[data-ui="paper"] .brandRule{
  background:linear-gradient(90deg,transparent,rgba(201,98,47,.55),rgba(47,90,72,.5),transparent)!important}
html[data-ui="paper"] .eyebrow{color:#8b7c66!important}
html[data-ui="paper"] .tag{background:rgba(255,255,255,.7)!important;color:#5c5142!important}
html[data-ui="paper"] .authorMark{background:#fffdf7!important;border-color:#e7dcc8!important}

/* ───────── C · 深海极光 ───────── */
html[data-ui="abyss"]{
  --r:20px;
  --bg:#04080f;--card:rgba(255,255,255,.055);--card2:rgba(255,255,255,.035);--line:rgba(255,255,255,.13);
  --tx:#eaf6ff;--tx2:#a9c4dc;--tx3:#7e97b0;
  --g:#5ce1e6;--g2:#7dffb0;--w:#ffd27a;--red:#ff7a8a;--blue:#6bb6ff;
  --glow1:rgba(92,225,230,.2);--glow2:rgba(125,255,176,.14);--glow3:rgba(255,210,122,.08);
  --tabBg:rgba(6,14,24,.9);--botBg:rgba(8,18,30,.94)
}
html[data-ui="abyss"] body{
  background-color:#04080f!important;
  background-image:
    radial-gradient(1100px 620px at 50% -14%,rgba(92,225,230,.24),transparent 62%),
    radial-gradient(820px 520px at 8% 62%,rgba(125,255,176,.15),transparent 60%),
    radial-gradient(900px 560px at 96% 40%,rgba(107,182,255,.16),transparent 62%),
    linear-gradient(180deg,#04080f,#061020 60%,#04080f)!important;
  background-attachment:fixed!important;
  animation:abyssDrift 22s ease-in-out infinite alternate
}
@keyframes abyssDrift{
  0%{background-position:0% 0%,0% 0%,0% 0%,0 0}
  100%{background-position:6% 4%,-5% -3%,5% 3%,0 0}}
/* 玻璃卡片 */
html[data-ui="abyss"] .card{
  background:rgba(255,255,255,.055)!important;
  -webkit-backdrop-filter:blur(16px) saturate(1.35)!important;
  backdrop-filter:blur(16px) saturate(1.35)!important;
  border:1px solid rgba(255,255,255,.14)!important;
  box-shadow:0 10px 40px rgba(0,0,0,.48),inset 0 1px 0 rgba(255,255,255,.18)!important
}
html[data-ui="abyss"] .card h2{text-shadow:0 0 16px rgba(92,225,230,.5)}
html[data-ui="abyss"] .btn{
  background:rgba(255,255,255,.07)!important;
  -webkit-backdrop-filter:blur(8px)!important;backdrop-filter:blur(8px)!important;
  border:1px solid rgba(255,255,255,.17)!important
}
html[data-ui="abyss"] .btn.pri{
  background:linear-gradient(120deg,rgba(92,225,230,.92),rgba(125,255,176,.9))!important;
  color:#04222a!important;border-color:rgba(255,255,255,.3)!important;
  box-shadow:0 6px 26px rgba(92,225,230,.42)!important
}
html[data-ui="abyss"] .brandCn{filter:
  drop-shadow(0 0 14px rgba(92,225,230,.8))
  drop-shadow(0 0 34px rgba(125,255,176,.42))
  drop-shadow(0 3px 0 rgba(0,20,30,.55))!important}
/* 顶上一道极光 */
html[data-ui="abyss"] body::before{
  content:'';position:fixed;left:-20%;right:-20%;top:-14%;height:44vh;z-index:0;pointer-events:none;
  background:linear-gradient(170deg,rgba(92,225,230,.34),rgba(125,255,176,.16) 45%,transparent 76%);
  filter:blur(52px);animation:abyssAur 15s ease-in-out infinite alternate
}
@keyframes abyssAur{
  0%{transform:translateX(-6%) skewY(-1.6deg);opacity:.72}
  100%{transform:translateX(7%) skewY(1.4deg);opacity:1}}

/* 切换动画：换风格时整页轻轻过一下 */
html[data-ui] .wrap{animation:uiSwap .5s cubic-bezier(.25,.8,.3,1)}
@keyframes uiSwap{from{opacity:.28;transform:translateY(8px) scale(.994)}to{opacity:1;transform:none}}


/* ══ 文字速度面板 ══ */
.glSpdBox{margin-bottom:16px}
.glSpd small{font-size:10px;font-weight:500;opacity:.62;letter-spacing:.02em}
.glSpd.on small{opacity:.85}
.glSpdNow{text-align:center;font-size:12.5px;line-height:1.7;color:var(--tx2);margin:2px 0 15px}
.glSpdNow b{color:var(--g2);font-size:14.5px;font-weight:800;padding:0 2px}
.glSpdTip{font-size:12.5px;line-height:1.9;color:var(--tx2);background:var(--onCard);border:1px solid var(--line);border-radius:15px;padding:14px 16px}
.glSpdTip p{margin:0 0 10px}
.glSpdTip p:last-child{margin-bottom:0}
.glSpdTip b{color:var(--tx);font-weight:800;font-size:13px}
.glSpdTip .dim{color:var(--tx3);font-size:11.5px;line-height:1.85;padding-top:9px;border-top:1px dashed var(--line)}


/* ══ 分享卡片 ══ */
.scModal{position:fixed;inset:0;z-index:1000;display:none;align-items:center;justify-content:center;
  flex-direction:column;padding:18px;background:rgba(6,4,14,.82);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}
.scModal.on{display:flex}
.scWrap{width:100%;max-width:360px;display:flex;flex-direction:column;align-items:center;gap:14px;
  animation:scPop .32s cubic-bezier(.22,.9,.3,1.1)}
@keyframes scPop{from{opacity:0;transform:translateY(14px) scale(.97)}to{opacity:1;transform:none}}
.scCanvas{width:100%;height:auto;max-height:64vh;border-radius:18px;
  box-shadow:0 18px 60px rgba(0,0,0,.55);background:#0a0820;display:block}
.scBtns{display:flex;gap:9px;flex-wrap:wrap;justify-content:center;width:100%}
.scBtns .btn{flex:1;min-width:96px}
.scBtns .ghost{background:transparent;border:1px solid var(--line);color:var(--tx2)}
.scTip{font-size:11.5px;color:#cfc2e8;text-align:center;opacity:.8;line-height:1.6}


@keyframes __bgspin{to{transform:rotate(360deg)}}

/* ══ 开场动画（氛围升级 v19.87） ══ */
#__bgLoad{position:fixed;inset:0;z-index:999997;display:flex;align-items:center;justify-content:center;
  background:radial-gradient(130% 100% at 50% 30%,#221842 0%,#120d24 48%,#080612 100%);
  color:#b9b0d4;overflow:hidden;
  box-shadow:inset 0 0 220px 70px rgba(0,0,0,.65);
  transition:opacity .85s cubic-bezier(.4,0,.2,1),transform .85s cubic-bezier(.4,0,.2,1)}
#__bgLoad.bsOut{opacity:0;transform:scale(1.06);pointer-events:none}

/* 极光：缓慢漂移的彩色光雾 */
.bsAurora{position:absolute;width:140%;height:140%;left:-20%;top:-20%;
  background:
    radial-gradient(40% 30% at 30% 35%,rgba(120,90,220,.30),transparent 60%),
    radial-gradient(36% 26% at 72% 28%,rgba(80,170,210,.22),transparent 60%),
    radial-gradient(40% 30% at 55% 70%,rgba(210,110,180,.20),transparent 60%);
  filter:blur(46px);opacity:.9;animation:bsAurora 22s ease-in-out infinite}
@keyframes bsAurora{0%,100%{transform:translate(0,0) scale(1)}33%{transform:translate(3%,-2%) scale(1.08)}66%{transform:translate(-2%,3%) scale(1.04)}}

/* 双层星空（视差漂移） */
.bsStars,.bsStars2{position:absolute;inset:0}
.bsStars{opacity:.6;
  background-image:
    radial-gradient(1.6px 1.6px at 18% 22%,rgba(255,255,255,.85),transparent),
    radial-gradient(1.2px 1.2px at 76% 16%,rgba(255,255,255,.7),transparent),
    radial-gradient(1.4px 1.4px at 62% 74%,rgba(255,255,255,.6),transparent),
    radial-gradient(1px 1px at 30% 82%,rgba(255,255,255,.6),transparent),
    radial-gradient(1.3px 1.3px at 86% 58%,rgba(255,255,255,.5),transparent),
    radial-gradient(1px 1px at 46% 38%,rgba(255,255,255,.45),transparent);
  animation:bsTwinkle 4s ease-in-out infinite}
.bsStars2{opacity:.5;background-image:
    radial-gradient(1px 1px at 12% 60%,rgba(255,255,255,.7),transparent),
    radial-gradient(1.5px 1.5px at 88% 30%,rgba(255,255,255,.6),transparent),
    radial-gradient(1px 1px at 40% 12%,rgba(255,255,255,.55),transparent),
    radial-gradient(1.2px 1.2px at 68% 88%,rgba(255,255,255,.5),transparent),
    radial-gradient(1px 1px at 24% 44%,rgba(255,255,255,.5),transparent);
  animation:bsTwinkle 6.5s ease-in-out infinite, bsDrift 60s linear infinite}
@keyframes bsTwinkle{0%,100%{opacity:.4}50%{opacity:.85}}
@keyframes bsDrift{from{transform:translateX(0)}to{transform:translateX(-40px)}}

/* 月亮：从中间那个圆（光晕 + 轨道环）的圆心缓缓升起，一路浮到顶部停住。
   ★ v91 改：起点从「屏幕底部」挪到「圆圈中心」——先在环里亮起来，再慢慢往上走。 */
.bsMoon{position:absolute;top:11%;left:50%;width:74px;height:74px;margin-left:-37px;border-radius:50%;
  background:radial-gradient(circle at 38% 36%,#fff7e9 0%,#f3e6c8 40%,#d9c79b 75%,#bcab82 100%);
  box-shadow:0 0 30px 10px rgba(255,240,210,.35),0 0 80px 30px rgba(255,225,180,.18);
  opacity:0;z-index:2;
  animation:bsMoonRise 5.4s cubic-bezier(.28,.04,.2,1) 1.15s both,
            bsMoonBreath 7s ease-in-out 6.9s infinite}
@keyframes bsMoonRise{
  /* 39vh 让月亮中心正好落在屏幕竖向中线 = 那个圆的圆心 */
  0%{transform:translateY(calc(39vh - 37px));opacity:0}
  10%{opacity:.9}
  100%{transform:translateY(0);opacity:.95}
}
@keyframes bsMoonBreath{0%,100%{transform:scale(1);opacity:.95}50%{transform:scale(1.05) translateY(-3px);opacity:1}}

/* 漂浮的尘埃 / 萤火 */
.bsDust{position:absolute;inset:0}
.bsP{position:absolute;bottom:-12px;border-radius:50%;background:rgba(200,185,255,.85);
  box-shadow:0 0 8px 2px rgba(180,160,255,.5);animation:bsFloat linear infinite}
@keyframes bsFloat{0%{transform:translateY(0) translateX(0);opacity:0}
  10%{opacity:.9}90%{opacity:.8}100%{transform:translateY(-115vh) translateX(20px);opacity:0}}

/* 中央光晕 + 缓转轨道环 */
.bsHalo{position:absolute;z-index:1;width:min(82vw,440px);aspect-ratio:1;border-radius:50%;
  background:radial-gradient(circle,rgba(160,140,255,.32) 0%,rgba(120,90,220,.12) 42%,transparent 68%);
  filter:blur(24px);animation:bsBreath 5.5s ease-in-out infinite}
@keyframes bsBreath{0%,100%{transform:scale(.92);opacity:.78}50%{transform:scale(1.12);opacity:1}}
.bsOrbit{position:absolute;z-index:3;width:min(86vw,470px);height:min(86vw,470px);border-radius:50%;
  border:1px solid rgba(180,160,255,.12);
  border-top-color:rgba(180,160,255,.35);border-right-color:rgba(140,200,230,.22);
  animation:bsSpin 26s linear infinite}
.bsOrbit::after{content:'';position:absolute;top:-3px;left:50%;width:5px;height:5px;margin-left:-2.5px;
  border-radius:50%;background:rgba(210,195,255,.9);box-shadow:0 0 10px 3px rgba(180,160,255,.6)}
@keyframes bsSpin{to{transform:rotate(360deg)}}

.bsInner{position:relative;z-index:4;text-align:center;padding:0 30px;animation:bsRise 1.1s cubic-bezier(.2,.8,.3,1) both}
@keyframes bsRise{from{opacity:0;transform:translateY(18px)}to{opacity:1;transform:none}}
.bsEn{font-size:10px;letter-spacing:.62em;color:rgba(185,176,212,.7);margin-bottom:16px;
  padding-left:.62em;animation:bsFadeIn 1.4s .25s both}
.bsTitle{font-size:34px;font-weight:800;letter-spacing:.14em;color:#f4f1ff;
  text-shadow:0 0 28px rgba(160,140,255,.6),0 0 80px rgba(140,110,240,.32);
  padding-left:.14em;animation:bsTitleIn 1.6s .4s cubic-bezier(.2,.8,.3,1) both}
@keyframes bsTitleIn{from{opacity:0;filter:blur(10px);transform:translateY(14px) scale(.95)}to{opacity:1;filter:blur(0);transform:none}}
.bsRule{width:0;height:1px;margin:22px auto 0;
  background:linear-gradient(90deg,transparent,rgba(160,140,255,.75),transparent);
  animation:bsRule 1.5s .8s cubic-bezier(.2,.8,.3,1) both}
@keyframes bsRule{to{width:150px}}
.bsSub{margin-top:14px;font-size:12.5px;letter-spacing:.12em;color:rgba(201,192,225,.78);
  animation:bsSubIn 1.4s 1s both}
@keyframes bsSubIn{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
@keyframes bsFadeIn{from{opacity:0}to{opacity:1}}
.bsTap{margin-top:34px;display:inline-flex;align-items:center;justify-content:center;
  position:relative;cursor:pointer;-webkit-tap-highlight-color:transparent;
  padding:13px 30px;border-radius:26px;
  border:1px solid rgba(180,160,255,.4);background:rgba(160,140,255,.10);
  color:#ece7ff;font-size:14px;letter-spacing:.22em;font-weight:600;
  transition:all .32s cubic-bezier(.2,.8,.3,1);
  animation:bsFadeIn .9s 1.15s both}
.bsTap:active{transform:scale(.96);background:rgba(160,140,255,.22)}
.bsTapRing{position:absolute;inset:-1px;border-radius:26px;
  border:1px solid rgba(180,160,255,.55);animation:bsRing 2.4s ease-out infinite}
@keyframes bsRing{0%{opacity:.8;transform:scale(1)}70%{opacity:0;transform:scale(1.28)}100%{opacity:0}}
.bsHint{margin-top:16px;font-size:11px;letter-spacing:.1em;color:rgba(185,176,212,.55);
  animation:bsFadeIn 1s 1.5s both}
.bsLoading{margin-top:36px;font-size:12px;letter-spacing:.16em;color:rgba(185,176,212,.6)}
.bsLoading i{display:inline-block;width:5px;height:5px;border-radius:50%;background:rgba(160,140,255,.8);
  margin:0 3px;animation:bsDot 1.2s ease-in-out infinite}
.bsLoading i:nth-child(2){animation-delay:.2s}.bsLoading i:nth-child(3){animation-delay:.4s}
@keyframes bsDot{0%,100%{opacity:.25;transform:translateY(0)}50%{opacity:1;transform:translateY(-4px)}}
/* 就绪后：转成可点击 */
#__bgLoad:not(.bsReady) .bsTap{opacity:0;pointer-events:none}
#__bgLoad.bsReady .bsLoading{display:none}
/* 光标图案统一由站点自带的光标系统接管（CURSOR_PATTERNS + html[data-cursor] 注入，
   它带 !important 且覆盖所有元素）。兔八哥已作为两个图案接进那套系统，这里不再重复定义。 */
.tpHd{align-items:flex-start}
.tpT{min-width:0;overflow-wrap:anywhere;word-break:break-word}
.tpTy{white-space:nowrap}
.tpNew{display:inline-block;white-space:nowrap;word-break:keep-all;margin-top:2px}
.tpFav,.tpAr{align-self:flex-start}
.topicCatsWrap{max-height:0;overflow:hidden;transition:max-height .28s ease}
.topicCatsWrap.on{max-height:240px}
.tpModeSeg{display:inline-flex;align-items:center;border:1px solid var(--line);border-radius:999px;background:var(--onCard);padding:2px}
.tpModeSeg button{border:0;background:none;color:var(--tx3);font-family:inherit;font-size:12px;padding:7px 12px;border-radius:999px;cursor:pointer}
.tpModeSeg button.on{background:linear-gradient(135deg,var(--g2),#c15cf0);color:#0b0d12;font-weight:700;box-shadow:0 0 14px rgba(77,226,200,.35)}
.tpModeHint{font-size:11.5px;color:var(--tx3);margin:8px 0 0}
.saySwapBig{width:100%;margin:10px 0 2px;padding:13px;font-size:14px;border-radius:14px}
.sayToolBar{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:12px 0 0}
.sayTool{display:flex;flex-direction:column;align-items:center;gap:4px;padding:10px 6px;border-radius:14px;border:1px solid var(--line);background:var(--onCard);color:var(--tx2);font-size:12px;font-family:inherit;cursor:pointer;transition:.16s}
.sayTool .ic{font-size:18px;line-height:1}
.sayTool.on{border-color:var(--g2);color:var(--g2);background:rgba(77,226,200,.08);box-shadow:0 0 14px rgba(77,226,200,.2)}
.saySyncBar{display:flex;align-items:center;gap:8px;margin:10px 0 0;flex-wrap:wrap}
#sayTabs{display:flex;flex-wrap:wrap;gap:6px;padding:4px 2px 10px}

#sayTabs button{flex:0 0 auto;padding:7px 12px;border-radius:999px;border:1px solid var(--line);background:var(--onCard);color:var(--tx2);font-size:12px;font-family:inherit;cursor:pointer}
#sayTabs button.on{background:linear-gradient(135deg,var(--g2),#c15cf0);color:#0b0d12;border-color:transparent;font-weight:700}
/* ===== 视频互动剧场 ===== */
#theaterRoot .thWrap{display:flex;flex-direction:column;gap:12px}
#theaterRoot .thHead .thTitle{font-size:17px;font-weight:700;color:var(--tx)}
#theaterRoot .thSub{font-size:12px;color:var(--tx3);margin-top:3px}
#theaterRoot .thNode{font-size:12.5px;color:var(--g2);letter-spacing:.05em;min-height:1em}
#theaterRoot .thStage{position:relative;width:100%;aspect-ratio:16/9;background:#000;border-radius:14px;overflow:hidden}
#theaterRoot .thStage video{position:absolute;left:0;top:0;width:100%;height:100%;object-fit:contain;background:#000}
#theaterRoot .thCover{position:absolute;left:0;top:0;right:0;bottom:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;background:rgba(10,14,22,.6);color:#fff;z-index:3}
#theaterRoot .thCoverSub{font-size:12.5px;color:rgba(255,255,255,.82);text-align:center;padding:0 16px}
#theaterRoot .thFail{position:absolute;left:0;top:0;right:0;bottom:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;background:rgba(10,14,22,.78);color:#ffd6cc;font-size:13px;z-index:4;text-align:center;padding:14px}
#theaterRoot .thFailBtns{display:flex;gap:8px}
#theaterRoot .thHots{position:absolute;left:0;top:0;right:0;bottom:0;z-index:2}
#theaterRoot .thHot{position:absolute;background:transparent;border:2px dashed rgba(255,255,255,.85);border-radius:10px;color:#fff;display:flex;align-items:center;justify-content:center;font-size:11px;padding:2px;cursor:pointer;animation:thPulse 1.4s ease-in-out infinite;box-sizing:border-box}
#theaterRoot .thHot span{background:rgba(0,0,0,.55);padding:2px 7px;border-radius:8px;pointer-events:none}
@keyframes thPulse{0%,100%{opacity:.45}50%{opacity:1}}
#theaterRoot .thStep{font-size:13px;color:var(--tx2);background:var(--onCard);border:1px solid var(--line);padding:9px 12px;border-radius:10px}
#theaterRoot .thChoices{display:none;flex-direction:column;gap:9px}
#theaterRoot .thChoice{display:flex;justify-content:space-between;align-items:center;text-align:left;padding:13px 14px;border-radius:12px;border:1px solid var(--line);background:var(--onCard);color:var(--tx);font-size:14.5px;font-family:inherit;cursor:pointer}
#theaterRoot .thChoice:active{transform:scale(.985)}
#theaterRoot .thChoice i{color:var(--tx3);font-style:normal}
#theaterRoot .thEnding{font-size:16px;font-weight:700;color:var(--tx);padding:14px;border-radius:12px;background:var(--onCard);border:1px solid var(--line);text-align:center}
#theaterRoot .thEndPath{font-size:12px;color:var(--tx3);line-height:1.8;text-align:center}
#theaterRoot .thEndBtns{display:flex;gap:9px;justify-content:center;margin-top:6px}
#theaterRoot .thBar{display:flex;align-items:center;gap:10px}
#theaterRoot .thBtn{padding:7px 12px;border-radius:999px;border:1px solid var(--line);background:var(--onCard);color:var(--tx2);font-size:12.5px;font-family:inherit;cursor:pointer}
#theaterRoot .thProg{flex:1;height:6px;border-radius:99px;background:var(--line);overflow:hidden}
#theaterRoot .thProg i{display:block;height:100%;width:0;background:linear-gradient(90deg,var(--g2),#c15cf0);border-radius:99px;transition:width .2s linear}
#theaterRoot .thTime{font-size:11.5px;color:var(--tx3);font-variant-numeric:tabular-nums}
#theaterRoot .thPath{font-size:11.5px;color:var(--tx3);line-height:1.7}
/* ===== 话题卡片头部：修「收藏被挤到下一行」+ 美化 ===== */
#topicList .tpHd{
  display:flex;
  align-items:center;
  flex-wrap:nowrap;      /* 明确不许换行 */
  gap:8px;
  min-width:0;
}
#topicList .tpT{
  flex:1 1 auto;
  min-width:0;           /* 关键：允许收缩，否则长标题把星标挤出去 */
  overflow-wrap:anywhere;
}
#topicList .tpT .tpNew{white-space:nowrap}
#topicList .tpFav{
  flex:0 0 auto;
  width:32px;height:32px;
  display:inline-flex;align-items:center;justify-content:center;
  border-radius:50%;
  font-size:16px;line-height:1;
  color:var(--tx3);
  background:rgba(255,255,255,.04);
  border:1px solid transparent;
  transition:background .18s,color .18s,transform .12s;
}
#topicList .tpFav:active{transform:scale(.9)}
#topicList .tpFav.on{
  color:#ffcf4a;
  background:rgba(255,207,74,.12);
  border-color:rgba(255,207,74,.35);
  text-shadow:0 0 8px rgba(255,207,74,.5);
}
#topicList .tpAr{flex:0 0 auto;margin-left:-2px}
/* ===== 剧场 UI 重做（影院感） ===== */
#theaterRoot .thWrap{display:flex;flex-direction:column;gap:10px}
#theaterRoot .thHead{padding:2px 2px 0}
#theaterRoot .thHead .thTitle{font-size:18px;font-weight:700;letter-spacing:.02em;
  background:linear-gradient(92deg,#fff,#c9b6ff 60%,#7ef0d6);-webkit-background-clip:text;background-clip:text;color:transparent}
#theaterRoot .thSub{font-size:11.5px;color:var(--tx3);margin-top:4px;letter-spacing:.03em}
#theaterRoot .thNode{display:inline-flex;align-items:center;gap:6px;font-size:11.5px;color:var(--g2);
  background:rgba(126,240,214,.08);border:1px solid rgba(126,240,214,.22);padding:4px 10px;border-radius:999px;
  width:fit-content;letter-spacing:.05em}
#theaterRoot .thStage{border-radius:16px;box-shadow:0 10px 34px rgba(0,0,0,.45),0 0 0 1px rgba(255,255,255,.06) inset;
  background:#05070c}
#theaterRoot .thStage:fullscreen{aspect-ratio:auto;width:100vw;height:100vh;border-radius:0}
#theaterRoot .thStage:fullscreen video{object-fit:contain}
#theaterRoot .thCover{background:linear-gradient(180deg,rgba(8,11,18,.35),rgba(8,11,18,.86))}
#theaterRoot .thCover .btn.pri{font-size:15px;padding:12px 30px;border-radius:999px;
  box-shadow:0 8px 24px rgba(0,0,0,.4),0 0 0 1px rgba(255,255,255,.08) inset}
#theaterRoot .thStep{border-radius:12px;background:linear-gradient(90deg,rgba(126,240,214,.09),transparent);
  border:1px solid rgba(126,240,214,.18);color:var(--tx)}
#theaterRoot .thChoices{gap:10px}
#theaterRoot .thChoice{padding:15px 16px;border-radius:14px;font-size:15px;
  background:linear-gradient(180deg,rgba(255,255,255,.055),rgba(255,255,255,.015));
  border:1px solid rgba(255,255,255,.10);transition:transform .12s,border-color .18s,background .18s}
#theaterRoot .thChoice:hover{border-color:rgba(126,240,214,.5);background:linear-gradient(180deg,rgba(126,240,214,.10),rgba(126,240,214,.02))}
#theaterRoot .thChoice:active{transform:scale(.975)}
#theaterRoot .thChoice i{width:20px;height:20px;border-radius:50%;display:flex;align-items:center;justify-content:center;
  background:rgba(255,255,255,.07);color:var(--tx2);font-size:12px}
#theaterRoot .thEnding{border-radius:16px;padding:18px;font-size:16.5px;
  background:linear-gradient(180deg,rgba(255,207,74,.12),rgba(255,207,74,.02));
  border:1px solid rgba(255,207,74,.35);box-shadow:0 0 26px rgba(255,207,74,.12) inset}
#theaterRoot .thBar{margin-top:2px;padding:8px 10px;border-radius:999px;
  background:rgba(255,255,255,.035);border:1px solid rgba(255,255,255,.06)}
#theaterRoot .thBtn{border:none;background:transparent;padding:8px 10px;border-radius:999px;font-size:12.5px;color:var(--tx2)}
#theaterRoot .thBtn:active{background:rgba(255,255,255,.08)}
#theaterRoot .thProg{height:5px;background:rgba(255,255,255,.09)}
#theaterRoot .thProg i{background:linear-gradient(90deg,#7ef0d6,#c15cf0)}
#theaterRoot .thPath{opacity:.75}
/* ===== 旁白小精灵 ===== */
.glSprite{position:absolute;left:16px;bottom:104px;z-index:3;pointer-events:none;
  font-size:38px;line-height:1;filter:drop-shadow(0 4px 14px rgba(0,0,0,.5)) drop-shadow(0 0 12px rgba(126,240,214,.45))}
.glSprite span{display:block}
.sp-fish span{animation:spSwim 3.6s ease-in-out infinite}
.sp-firefly span{animation:spBlink 2.2s ease-in-out infinite}
.sp-lantern span{animation:spSway 2.8s ease-in-out infinite}
.sp-moon span{animation:spFloat 4s ease-in-out infinite}
@keyframes spSwim{0%{transform:translate(0,0) rotate(-4deg)}25%{transform:translate(10px,-8px) rotate(4deg)}50%{transform:translate(20px,2px) rotate(-2deg)}75%{transform:translate(8px,8px) rotate(3deg)}100%{transform:translate(0,0) rotate(-4deg)}}
@keyframes spBlink{0%,100%{opacity:.35;transform:scale(.86)}50%{opacity:1;transform:scale(1.12)}}
@keyframes spSway{0%,100%{transform:rotate(-6deg)}50%{transform:rotate(6deg)}}
@keyframes spFloat{0%,100%{transform:translateY(0)}50%{transform:translateY(-10px)}}
.szRowWrap{flex-wrap:wrap;gap:8px}
/* ===== 首页氛围增强（不动结构，只加质感） ===== */
body::before{content:"";position:fixed;left:0;top:0;right:0;bottom:0;pointer-events:none;z-index:0;
  background:
    radial-gradient(58% 38% at 50% -6%, rgba(126,240,214,.13), transparent 72%),
    radial-gradient(48% 32% at 88% 6%, rgba(193,92,240,.12), transparent 74%),
    radial-gradient(40% 28% at 8% 22%, rgba(255,207,74,.05), transparent 76%);
}
.wrap{position:relative;z-index:1}
.card{
  box-shadow:0 8px 26px rgba(0,0,0,.26), 0 0 0 1px rgba(255,255,255,.045) inset;
  transition:box-shadow .25s ease, border-color .25s ease;
}
.card:hover{
  box-shadow:0 12px 34px rgba(0,0,0,.34), 0 0 0 1px rgba(126,240,214,.12) inset;
}
.card h2{letter-spacing:.01em}
.btn.pri{
  box-shadow:0 6px 22px rgba(150,110,255,.30);
  transition:transform .12s ease, box-shadow .2s ease;
}
.btn.pri:active{transform:scale(.972);box-shadow:0 3px 12px rgba(150,110,255,.24)}
/* 顶部标签栏：毛玻璃 + 底部渐隐 */
.pageTabs{
  backdrop-filter:saturate(150%) blur(14px);
  -webkit-backdrop-filter:saturate(150%) blur(14px);
  box-shadow:0 6px 22px rgba(0,0,0,.32);
}
/* ===== 全局搜索 ===== */
.sWrap{display:flex;flex-direction:column;gap:10px}
.sIn{width:100%;box-sizing:border-box;padding:12px 14px;border-radius:12px;
  border:1px solid var(--line);background:rgba(255,255,255,.05);color:var(--tx);
  font-size:15px;font-family:inherit;outline:none}
.sIn:focus{border-color:rgba(126,240,214,.55);box-shadow:0 0 0 3px rgba(126,240,214,.10)}
.sR{max-height:52vh;overflow:auto;display:flex;flex-direction:column;gap:7px}
.sHint{font-size:12.5px;color:var(--tx3);padding:14px 4px;line-height:1.8}
.sItem{display:flex;flex-direction:column;align-items:flex-start;gap:3px;width:100%;
  text-align:left;padding:10px 12px;border-radius:11px;border:1px solid var(--line);
  background:rgba(255,255,255,.035);color:var(--tx);font-family:inherit;cursor:pointer}
.sItem:active{transform:scale(.99);background:rgba(126,240,214,.08)}
.sK{font-size:10.5px;color:var(--g2);letter-spacing:.06em}
.sT{font-size:14px;font-weight:500}
.sD{font-size:11.5px;color:var(--tx3);line-height:1.6}
/* ===== 换主角弹窗（完整卡片） ===== */
.castScroll{max-height:56vh;overflow:auto;padding-right:2px;-webkit-overflow-scrolling:touch}
.castLine{display:block;font-size:11.5px;color:var(--tx3);line-height:1.7;margin-top:5px}
.castLine b{color:var(--tx2);font-weight:600;margin-right:6px}
.castVoice{display:block;font-size:12px;color:var(--g2);margin-top:9px;opacity:.92}
.castGift{display:block;font-size:12px;color:var(--tx2);line-height:1.85;margin-top:8px;
  padding:10px 12px;border-radius:10px;background:rgba(255,255,255,.035);border:1px solid var(--line)}
.castPast{display:block;margin-top:9px;padding:11px 12px;border-radius:10px;
  background:rgba(193,92,240,.07);border:1px solid rgba(193,92,240,.24)}
.castPast b{display:inline-block;font-size:11px;color:#d7a8ff;letter-spacing:.05em;margin-bottom:6px}
.castPast i{display:block;font-style:normal;font-size:12px;color:var(--tx2);line-height:1.8}
.castPast span{display:block;font-size:11.5px;color:var(--tx3);line-height:1.85;margin-top:3px}
.castPast em{display:block;font-style:normal;font-size:11.5px;color:var(--g2);line-height:1.8;margin-top:7px;
  padding-top:7px;border-top:1px dashed rgba(255,255,255,.12)}
/* ===== 云同步 ===== */
.cfSync{margin-top:16px;padding:14px;border-radius:14px;
  background:linear-gradient(180deg,rgba(126,240,214,.07),rgba(126,240,214,.015));
  border:1px solid rgba(126,240,214,.24)}
.cfHd{display:flex;align-items:center;gap:8px;font-size:14px}
.cfHd b{color:var(--g2)}
.cfCodeBox{display:flex;align-items:center;gap:10px;padding:12px 14px;border-radius:12px;
  background:rgba(0,0,0,.28);border:1px dashed rgba(126,240,214,.35)}
.cfCodeBox span{font-size:11.5px;color:var(--tx3)}
.cfCodeBox b{font-size:20px;letter-spacing:.28em;color:var(--g2);
  font-family:ui-monospace,Menlo,monospace}
/* ===== 对话/选项压在立绘之上（不再被立绘穿透） ===== */
.glBox{
  background:linear-gradient(180deg,
    rgba(6,6,12,.62) 0%,
    rgba(6,6,12,.90) 16%,
    rgba(6,6,12,.97) 40%,
    rgba(6,6,12,.99) 100%) !important;
  z-index:6 !important;
}
.glAvatar{z-index:1;margin-bottom:8px}
.glOpts{position:relative;z-index:8}
.glOpt{
  background:rgba(28,24,40,.96) !important;
  border-color:rgba(255,255,255,.13) !important;
  backdrop-filter:blur(8px);
  -webkit-backdrop-filter:blur(8px);
}
.glOpt:active{background:rgba(126,240,214,.14) !important}
.glOpt b{color:#fff}
.glWho{position:relative;z-index:9}
.glTxt{position:relative;z-index:8}

/* ══════════════════════════════════════════════════════════════
   UI 2.0 · 毛玻璃 / 柔光 / 大圆角（只改观感，不动布局）
   参考：dribbble 玻璃拟态 · 月球旅行卡 · 冰蓝播放器
   适配皮肤：颜色全部走 color-mix(var(--card))，深色浅色皮肤都成立
   ══════════════════════════════════════════════════════════════ */

/* ① 背景：三团柔光 + 底部月晕，暗底不再死板 */
body::before{
  background:
    radial-gradient(58% 38% at 50% -8%, rgba(77,226,200,.16), transparent 70%),
    radial-gradient(46% 32% at 92% 4%, rgba(193,92,240,.15), transparent 72%),
    radial-gradient(40% 30% at 4% 26%, rgba(255,184,107,.07), transparent 74%),
    radial-gradient(70% 46% at 50% 108%, rgba(120,90,255,.12), transparent 72%) !important;
}

/* ② 卡片：真毛玻璃 + 内高光 + 悬浮阴影 */
.card{
  background: color-mix(in srgb, var(--card) 72%, transparent) !important;
  -webkit-backdrop-filter: blur(26px) saturate(165%) !important;
  backdrop-filter: blur(26px) saturate(165%) !important;
  border: 1px solid color-mix(in srgb, var(--line) 60%, transparent) !important;
  border-radius: 22px !important;
  box-shadow:
    0 14px 44px rgba(0,0,0,.34),
    0 2px 8px rgba(0,0,0,.18),
    inset 0 1px 0 rgba(255,255,255,.07) !important;
  transition: box-shadow .3s ease, transform .3s ease, border-color .3s ease !important;
}
.card:hover{
  box-shadow:
    0 20px 56px rgba(0,0,0,.42),
    0 0 0 1px rgba(77,226,200,.10),
    inset 0 1px 0 rgba(255,255,255,.09) !important;
}

/* ③ 排印：标题更克制，正文更透气 */
.card h2{
  font-size: 16.5px !important;
  font-weight: 600 !important;
  letter-spacing: .015em !important;
  line-height: 1.45 !important;
}
.hint{
  font-size: 12.5px !important;
  line-height: 1.85 !important;
  letter-spacing: .01em !important;
}
.p{ line-height: 1.9 !important; }

/* ④ 按钮：胶囊 + 柔光投影 */
.btn{
  border-radius: 999px !important;
  border-color: color-mix(in srgb, var(--line) 72%, transparent) !important;
  background: color-mix(in srgb, var(--card) 55%, transparent) !important;
  -webkit-backdrop-filter: blur(12px) !important;
  backdrop-filter: blur(12px) !important;
  font-weight: 500 !important;
  letter-spacing: .01em !important;
  transition: transform .14s cubic-bezier(.2,.9,.3,1), box-shadow .22s, background .22s !important;
}
.btn:active{ transform: scale(.965) !important; }
.btn.pri{
  background: linear-gradient(135deg, #7ef0d6 0%, #63d8ff 46%, #c9a6ff 100%) !important;
  color: #0b0a14 !important;
  font-weight: 700 !important;
  border: none !important;
  box-shadow: 0 8px 26px rgba(99,216,255,.30), 0 2px 6px rgba(0,0,0,.24) !important;
}
.btn.pri:active{ box-shadow: 0 3px 12px rgba(99,216,255,.26) !important; }

/* ⑤ 顶部标签栏：浮岛毛玻璃 */
.pageTabs{
  background: color-mix(in srgb, var(--bg) 62%, transparent) !important;
  -webkit-backdrop-filter: blur(26px) saturate(180%) !important;
  backdrop-filter: blur(26px) saturate(180%) !important;
  border-bottom: 1px solid color-mix(in srgb, var(--line) 42%, transparent) !important;
  box-shadow: 0 8px 30px rgba(0,0,0,.30) !important;
}
.ptab{
  border-radius: 999px !important;
  transition: background .2s, color .2s, transform .14s !important;
}
.ptab.on{
  background: linear-gradient(135deg, rgba(126,240,214,.20), rgba(201,166,255,.18)) !important;
  border: 1px solid rgba(126,240,214,.34) !important;
  color: #eafff9 !important;
  box-shadow: 0 4px 16px rgba(77,226,200,.16), inset 0 1px 0 rgba(255,255,255,.14) !important;
}
.ptab:active{ transform: scale(.96) !important; }

/* ⑥ 徽章 / 小标签：毛玻璃胶囊 */
.badge{
  border-radius: 999px !important;
  padding: 3px 10px !important;
  background: color-mix(in srgb, var(--card2) 70%, transparent) !important;
  border: 1px solid color-mix(in srgb, var(--line) 55%, transparent) !important;
  font-size: 10.5px !important;
  letter-spacing: .04em !important;
}

/* ⑦ 输入框：内嵌柔光，聚焦有呼吸 */
input[type="text"],input[type="password"],input[type="search"],textarea,select{
  border-radius: 14px !important;
  background: color-mix(in srgb, var(--card2) 78%, transparent) !important;
  border: 1px solid color-mix(in srgb, var(--line) 82%, transparent) !important;
  transition: border-color .22s, box-shadow .22s !important;
}
input:focus,textarea:focus,select:focus{
  border-color: rgba(126,240,214,.52) !important;
  box-shadow: 0 0 0 3px rgba(77,226,200,.11) !important;
  outline: none !important;
}

/* ⑧ 滚动条：细、半透明 */
::-webkit-scrollbar{ width: 6px; height: 6px; }
::-webkit-scrollbar-thumb{
  background: color-mix(in srgb, var(--line) 90%, transparent);
  border-radius: 999px;
}
::-webkit-scrollbar-track{ background: transparent; }

/* ⑨ 弹窗：更厚的玻璃 */
#modal .mCard, .mCard{
  border-radius: 26px !important;
  background: color-mix(in srgb, var(--card) 86%, transparent) !important;
  -webkit-backdrop-filter: blur(34px) saturate(170%) !important;
  backdrop-filter: blur(34px) saturate(170%) !important;
  box-shadow: 0 28px 70px rgba(0,0,0,.55), inset 0 1px 0 rgba(255,255,255,.08) !important;
}

/* ⑩ 首页问候语：加一点渐变光 */
#now .greet, .greetTxt{ letter-spacing: .02em; }
/* ===== 旁白精灵：位置改到右下（不挡字）+ 新增四种 ===== */
.glSprite{
  left:auto !important; right:18px !important; bottom:88px !important;
  font-size:34px !important; opacity:.92;
  filter:drop-shadow(0 4px 14px rgba(0,0,0,.5)) drop-shadow(0 0 14px rgba(126,240,214,.4)) !important;
}
.sp-cat span{animation:spCat 3.2s ease-in-out infinite}
.sp-cloud span{animation:spCloud 6s ease-in-out infinite}
.sp-chime span{animation:spChime 2.6s ease-in-out infinite;transform-origin:50% 0}
.sp-star span{animation:spStar 2.4s ease-in-out infinite}
@keyframes spCat{0%,100%{transform:translateY(0) scale(1)}45%{transform:translateY(-5px) scale(1.04)}70%{transform:translateY(0) scale(.99)}}
@keyframes spCloud{0%{transform:translateX(0)}50%{transform:translateX(-16px)}100%{transform:translateX(0)}}
@keyframes spChime{0%,100%{transform:rotate(-9deg)}50%{transform:rotate(9deg)}}
@keyframes spStar{0%,100%{opacity:.55;transform:scale(.9) rotate(0)}50%{opacity:1;transform:scale(1.14) rotate(12deg)}}
