*{margin:0;padding:0;box-sizing:border-box}
body{font-family:-apple-system,BlinkMacSystemFont,'SF Pro Text','SF Pro Display','PingFang SC','Helvetica Neue','Microsoft YaHei',sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:#0f0f23;min-height:100vh;overflow:hidden;touch-action:manipulation;-webkit-tap-highlight-color:transparent;user-select:none;transition:background-color .5s cubic-bezier(.4,0,.2,1),color .5s cubic-bezier(.4,0,.2,1),background-image .5s cubic-bezier(.4,0,.2,1)}
/* ===== 首页 ===== */
.home{position:fixed;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:flex-start;background:linear-gradient(170deg,#1a1a3e 0%,#221a50 20%,#2d1b69 40%,#352080 55%,#2d1b69 70%,#1f1848 85%,#1a1a3e 100%);z-index:100;overflow-y:auto;padding:24px 16px 90px;transition:background .5s cubic-bezier(.4,0,.2,1);scrollbar-width:none;-ms-overflow-style:none}
/* 家长模式首页 — 默认隐藏 */
#parentHome{display:none}
/* 家长 Tab 切换 */
#parentHome[data-tab="me"] #tabParentMe{display:flex}
#parentHome[data-tab="me"] #tabParentChild{display:none!important}
#parentHome[data-tab="child"] #tabParentMe{display:none!important}
#parentHome[data-tab="child"] #tabParentChild{display:flex;padding-bottom:90px;flex-direction:column;align-items:center;justify-content:flex-start;overflow-y:auto;scrollbar-width:none;-ms-overflow-style:none}
#parentHome[data-tab="child"] #tabParentChild::-webkit-scrollbar{display:none;width:0;height:0}
.home::-webkit-scrollbar{display:none;width:0;height:0}
.home::before{content:'';position:fixed;inset:0;background:radial-gradient(ellipse at 25% 20%,rgba(167,139,250,.2) 0%,transparent 40%),radial-gradient(ellipse at 50% 50%,rgba(124,58,237,.12) 0%,transparent 35%),radial-gradient(ellipse at 75% 80%,rgba(240,147,251,.15) 0%,transparent 40%);pointer-events:none;z-index:0}
.home>*{position:relative;z-index:1}
.home h1{font-family:'KaiTi','楷体','STKaiti','华文楷体',serif;font-size:clamp(56px,14vw,84px);font-weight:600;color:#e8e0f8;letter-spacing:6px;text-align:center;width:100%;margin:-8px 0 0;transform:perspective(350px) rotateX(28deg);text-shadow:0 2px 0 rgba(80,50,140,.3),0 -1px 0 rgba(255,255,255,.1)}
.home h1 span{-webkit-text-fill-color:#ff4444;background:none;-webkit-background-clip:text;text-shadow:0 0 20px rgba(255,68,68,.4)}
.home .sub{color:rgba(255,255,255,.45);font-size:clamp(11px,2.2vw,13px);margin:0 0 24px;letter-spacing:.8px;font-weight:550;display:none}
.home-logo{display:flex;justify-content:center;align-items:center;margin:0 0 4px}
#home[data-tab="vocab"] .home-logo,
#home[data-tab="vocab"] .home-en,
#home[data-tab="review"] .home-logo,
#home[data-tab="review"] .home-en,
#home[data-tab="me"] .home-logo,
#home[data-tab="me"] .home-en{display:none}
.home-balloon{font-size:clamp(52px,14vw,80px);line-height:1;display:inline-block;animation:floatBounce 1.6s ease-in-out infinite;filter:drop-shadow(0 0 24px rgba(255,50,50,.7)) drop-shadow(0 4px 16px rgba(255,80,80,.5))}
.home-en{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif;font-size:clamp(14px,3vw,20px);font-weight:800;color:#c4b8e8;letter-spacing:3px;text-align:center;margin:-8px 0 16px;transform:perspective(400px) rotateX(20deg);transform-origin:center;text-shadow:0 1.5px 0 rgba(80,50,140,.35),0 -1px 0 rgba(255,255,255,.06)}
body[data-theme="light"] .home-en{color:rgba(124,58,237,.7);text-shadow:0 1.5px 0 rgba(80,50,140,.2),0 -1px 0 rgba(255,255,255,.4)}
/* 浮动气球装饰 */
.home-float{position:fixed;pointer-events:none;z-index:0;font-size:32px;opacity:.22;animation:homeFloat linear infinite;filter:drop-shadow(0 4px 12px rgba(255,100,100,.25))}
#gameFloats .home-float{opacity:.1;font-size:22px}
@keyframes floatBounce{0%,100%{transform:translateY(0)}50%{transform:translateY(-14px)}}
.home h1 span{animation:floatBounce 1.6s ease-in-out infinite;display:inline-block}
@keyframes homeFloat{0%{transform:translateY(100vh) rotate(0deg)}100%{transform:translateY(5vh) rotate(360deg)}}
/* 登录 — Apple Glassmorphism */
.login-mask{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;z-index:999;
  background:linear-gradient(160deg,#1a1a3e 0%,#2d1b69 40%,#1a1a3e 100%);
  backdrop-filter:blur(20px) saturate(1.8)}
.login-mask::before{content:'';position:fixed;inset:0;
  background:radial-gradient(ellipse at 30% 20%,rgba(102,126,234,.18) 0%,transparent 50%),
             radial-gradient(ellipse at 70% 80%,rgba(240,147,251,.12) 0%,transparent 50%);
  pointer-events:none;z-index:0}
.login-box{position:relative;z-index:1;
  background:rgba(255,255,255,.1);
  backdrop-filter:blur(40px) saturate(1.8);
  -webkit-backdrop-filter:blur(40px) saturate(1.8);
  border:1px solid rgba(255,255,255,.18);
  border-radius:28px;padding:44px 36px 36px;text-align:center;
  max-width:380px;width:90%;color:#fff;
  box-shadow:
    0 32px 64px rgba(0,0,0,.35),
    0 0 0 1px rgba(255,255,255,.05) inset,
    0 2px 0 rgba(255,255,255,.06) inset;
  animation:pi .6s cubic-bezier(.22,1,.36,1);transition:transform .6s cubic-bezier(.22,1,.36,1)}
.login-box.parent-role{transform:rotateY(360deg)}
/* 忘记密码小信使 — 趴在登录框右下角 */
.forgot-pw-mascot{
  position:absolute;bottom:-8px;right:-6px;z-index:10;
  cursor:pointer;
  animation:mascotBreathe 2.5s ease-in-out infinite,mascotWobble 4s ease-in-out infinite;
  filter:drop-shadow(0 3px 8px rgba(59,130,246,.35));
  transition:transform .25s cubic-bezier(.34,1.56,.64,1),filter .25s}
.forgot-pw-mascot:hover{
  transform:scale(1.18) rotate(-8deg) translateY(-4px)!important;
  filter:drop-shadow(0 6px 16px rgba(59,130,246,.5))}
.forgot-pw-mascot:active{transform:scale(.95)!important}
/* 悬停气泡提示 */
.forgot-pw-mascot::after{
  content:'忘记密码点点我！';
  position:absolute;bottom:calc(100% + 10px);right:-4px;
  white-space:nowrap;padding:7px 12px;border-radius:12px;
  background:rgba(255,255,255,.95);color:#2563eb;font-size:13px;font-weight:700;
  box-shadow:0 6px 18px rgba(0,0,0,.25);
  opacity:0;transform:translateY(6px) scale(.9);transform-origin:bottom right;
  pointer-events:none;transition:opacity .2s,transform .2s}
.forgot-pw-mascot::before{
  content:'';position:absolute;bottom:calc(100% + 4px);right:14px;
  border:7px solid transparent;border-top-color:rgba(255,255,255,.95);
  opacity:0;transition:opacity .2s;pointer-events:none}
.forgot-pw-mascot:hover::after,.forgot-pw-mascot:hover::before{
  opacity:1;transform:translateY(0) scale(1)}
@keyframes mascotBreathe{
  0%,100%{transform:translateY(0) scale(1)}
  50%{transform:translateY(-3px) scale(1.03)}}
@keyframes mascotWobble{
  0%,100%{transform:rotate(0deg)}
  25%{transform:rotate(3deg)}
  75%{transform:rotate(-3deg)}}
.login-icon{font-size:52px;margin-bottom:6px;display:inline-block;
  animation:loginBounce 2s ease-in-out infinite;
  filter:drop-shadow(0 4px 12px rgba(255,100,100,.35))}
@keyframes loginBounce{0%,100%{transform:translateY(0)}50%{transform:translateY(-6px)}}
.login-title{margin:0 0 2px;font-weight:800;font-size:26px;
  background:linear-gradient(135deg,#fff 0%,#e0d4ff 50%,#c4b5fd 100%);
  -webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;
  letter-spacing:1px}
.login-sub{margin:0 0 14px;color:rgba(255,255,255,.5);font-size:14px;letter-spacing:.5px;font-weight:400}
/* Tab 切换 */
.login-tabs{display:flex;gap:6px;margin-bottom:16px;background:rgba(0,0,0,.18);border-radius:14px;padding:4px}
.login-tab{flex:1;padding:10px;border:0;border-radius:11px;font-size:15px;font-weight:700;
  cursor:pointer;background:transparent;color:rgba(255,255,255,.45);transition:all .3s cubic-bezier(.22,1,.36,1);
  position:relative}
.login-tab.active{background:rgba(255,255,255,.15);color:#fff;
  box-shadow:0 0 20px rgba(167,139,250,.2),0 1px 0 rgba(255,255,255,.18) inset}
.login-tab:not(.active):hover{color:rgba(255,255,255,.7);background:rgba(255,255,255,.06)}
/* 输入框 — 毛玻璃内嵌风格 */
.name-input{width:100%;padding:15px 18px;border:1.5px solid rgba(255,255,255,.14);
  border-radius:16px;font-size:17px;font-weight:550;text-align:center;
  background:rgba(255,255,255,.07);color:#fff;outline:none;transition:all .3s ease;
  text-shadow:0 1px 2px rgba(0,0,0,.2);
  box-shadow:0 2px 8px rgba(0,0,0,.08) inset}
.name-input::placeholder{color:rgba(255,255,255,.35);font-weight:550}
.name-input:focus{border-color:rgba(255,255,255,.35);
  background:rgba(255,255,255,.11);
  box-shadow:0 0 0 3px rgba(102,126,234,.2),0 2px 8px rgba(0,0,0,.06) inset}
.name-input+.name-input{margin-top:12px}
/* 登录主按钮 — 半透明紫玻璃 */
#loginBtn{margin-top:20px;width:100%;padding:15px;
  background:rgba(167,139,250,.35);backdrop-filter:blur(12px);
  color:#fff;font-size:17px;font-weight:800;letter-spacing:.5px;
  border:1px solid rgba(255,255,255,.12);border-radius:16px;cursor:pointer;
  transition:all .3s cubic-bezier(.22,1,.36,1);
  box-shadow:0 4px 16px rgba(102,126,234,.25);
  position:relative;overflow:hidden}
#loginBtn::before{content:'';position:absolute;inset:0;
  background:linear-gradient(135deg,transparent 40%,rgba(255,255,255,.2) 50%,transparent 60%);
  transform:translateX(-100%);transition:transform .6s ease}
#loginBtn:hover::before{transform:translateX(100%)}
#loginBtn:hover{transform:translateY(-1px);
  box-shadow:0 8px 24px rgba(167,139,250,.4),0 1px 0 rgba(255,255,255,.1) inset}
#loginBtn:active{transform:translateY(0);box-shadow:0 2px 8px rgba(167,139,250,.2)}
/* 游客按钮 — 右上角 */
.login-guest-wrap{position:absolute;top:14px;right:14px;z-index:2}
/* 家长/学生切换按钮 — 左上角 */
.login-parent-wrap{position:absolute;top:14px;left:14px;z-index:2}
#parentBtn{display:inline-flex;align-items:center;gap:4px;
  padding:6px 12px;background:rgba(255,255,255,.1);color:rgba(255,255,255,.55);
  border:1px solid rgba(255,255,255,.1);font-size:12px;cursor:pointer;
  border-radius:16px;transition:all .25s;font-weight:550;letter-spacing:.3px;
  backdrop-filter:blur(8px)}
#parentBtn:hover{background:rgba(167,139,250,.18);color:rgba(255,255,255,.85);
  border-color:rgba(167,139,250,.35);transform:scale(1.04)}
#guestBtn{display:inline-flex;align-items:center;gap:4px;
  padding:6px 12px;background:rgba(255,255,255,.1);color:rgba(255,255,255,.55);
  border:1px solid rgba(255,255,255,.1);font-size:12px;cursor:pointer;
  border-radius:16px;transition:all .25s;font-weight:550;letter-spacing:.3px;
  backdrop-filter:blur(8px)}
#guestBtn:hover{background:rgba(167,139,250,.18);color:rgba(255,255,255,.85);
  border-color:rgba(167,139,250,.35);transform:scale(1.04)}
/* 登录错误提示 — 内联，非弹窗 */
#loginErr{color:#ff9e9e;font-size:13px;padding:8px 14px;margin:10px 0 0;
  background:rgba(255,80,80,.12);border-radius:10px;min-height:0;
  line-height:1.4;
  text-shadow:0 1px 2px rgba(0,0,0,.2);
  animation:shake .35s ease}@keyframes shake{0%,100%{transform:translateX(0)}25%{transform:translateX(-5px)}75%{transform:translateX(5px)}}
/* 已登录账号标签 */
.login-acc-tag{display:inline-flex;align-items:center;gap:6px;
  padding:5px 13px;background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.12);
  border-radius:20px;font-size:13px;color:rgba(255,255,255,.6);margin-bottom:8px}
/* 注销账号弹窗 — 紫色梵高星空风格 */
.del-mask{position:fixed;inset:0;display:none;align-items:center;justify-content:center;z-index:1000;
  background:
    radial-gradient(ellipse at 65% 12%,rgba(130,70,200,.5) 0%,transparent 35%),
    radial-gradient(ellipse at 20% 35%,rgba(100,50,180,.4) 0%,transparent 30%),
    radial-gradient(ellipse at 50% 75%,rgba(80,40,160,.35) 0%,transparent 40%),
    radial-gradient(ellipse at 85% 55%,rgba(110,60,190,.3) 0%,transparent 25%),
    radial-gradient(ellipse at center,rgba(20,8,45,.97) 0%,rgba(10,4,28,.98) 100%);
  backdrop-filter:blur(14px);overflow:hidden;animation:starDream 9s ease-in-out infinite alternate}
@keyframes starDream{
  0%{background-position:0% 0%,0% 0%,0% 0%,0% 0%,center}
  50%{background-position:30% 12%,-12% 22%,6% 60%,42% 40%,center}
  100%{background-position:12% 6%,10% -8%,28% 52%,-14% 30%,center}
}
/* 星星光晕 + 小星星群 */
.del-mask::before{content:'';position:absolute;inset:0;pointer-events:none;z-index:0;
  background-image:
    radial-gradient(4.5px 4.5px at 12% 18%,rgba(255,230,255,.9),transparent),
    radial-gradient(3.5px 3.5px at 28% 8%,rgba(230,200,255,.7),transparent),
    radial-gradient(2.5px 2.5px at 45% 22%,rgba(210,180,255,.6),transparent),
    radial-gradient(4.5px 4.5px at 60% 5%,rgba(255,220,255,.8),transparent),
    radial-gradient(2.5px 2.5px at 78% 28%,rgba(190,170,255,.5),transparent),
    radial-gradient(3.5px 3.5px at 90% 12%,rgba(240,210,255,.7),transparent),
    radial-gradient(2.5px 2.5px at 5% 35%,rgba(210,190,255,.5),transparent),
    radial-gradient(3.5px 3.5px at 18% 55%,rgba(255,230,255,.6),transparent),
    radial-gradient(2.5px 2.5px at 35% 42%,rgba(190,180,255,.4),transparent),
    radial-gradient(4.5px 4.5px at 50% 35%,rgba(250,220,255,.8),transparent),
    radial-gradient(2.5px 2.5px at 65% 48%,rgba(210,200,255,.5),transparent),
    radial-gradient(3.5px 3.5px at 80% 38%,rgba(230,200,255,.6),transparent),
    radial-gradient(2.5px 2.5px at 95% 50%,rgba(190,180,255,.4),transparent),
    radial-gradient(3.5px 3.5px at 8% 68%,rgba(255,230,255,.5),transparent),
    radial-gradient(2.5px 2.5px at 22% 78%,rgba(210,190,255,.4),transparent),
    radial-gradient(4.5px 4.5px at 40% 60%,rgba(240,210,255,.7),transparent),
    radial-gradient(2.5px 2.5px at 55% 72%,rgba(190,200,255,.5),transparent),
    radial-gradient(3.5px 3.5px at 72% 65%,rgba(250,220,255,.6),transparent),
    radial-gradient(2.5px 2.5px at 88% 75%,rgba(210,200,255,.4),transparent),
    radial-gradient(3.5px 3.5px at 15% 88%,rgba(255,230,255,.5),transparent),
    radial-gradient(2.5px 2.5px at 32% 95%,rgba(190,180,255,.4),transparent),
    radial-gradient(4.5px 4.5px at 48% 85%,rgba(230,200,255,.6),transparent),
    radial-gradient(2.5px 2.5px at 62% 92%,rgba(210,190,255,.5),transparent),
    radial-gradient(3.5px 3.5px at 75% 88%,rgba(255,230,255,.6),transparent),
    radial-gradient(2.5px 2.5px at 92% 90%,rgba(190,200,255,.4),transparent),
    radial-gradient(4.5px 4.5px at 25% 15%,rgba(255,230,255,.9),transparent),
    radial-gradient(3.5px 3.5px at 68% 10%,rgba(240,210,255,.7),transparent),
    radial-gradient(1px 1px at 82% 20%,rgba(210,200,255,.5),transparent),
    radial-gradient(2px 2px at 38% 70%,rgba(240,210,255,.6),transparent),
    radial-gradient(1px 1px at 58% 55%,rgba(190,180,255,.5),transparent);
  animation:starGlow 1.8s ease-in-out infinite alternate,starDrift 8s ease-in-out infinite alternate}
@keyframes starGlow{0%,100%{opacity:.1}50%{opacity:1}}
@keyframes starDrift{
  0%{transform:translateX(0) translateY(0) scale(1)}
  50%{transform:translateX(120px) translateY(-60px) scale(1.15)}
  100%{transform:translateX(-180px) translateY(40px) scale(.9)}
}
.del-box{background:linear-gradient(135deg,#7a1f1f,#c0392b);border-radius:24px;padding:38px 34px;text-align:center;max-width:400px;width:90%;color:#fff;box-shadow:0 24px 80px rgba(192,57,43,.45),inset 0 1px 0 rgba(255,255,255,.15);animation:pi .4s cubic-bezier(.34,1.56,.64,1)}
.del-box h2{margin:0 0 10px;font-weight:800;color:#fff;font-size:22px}
.del-box .del-name{font-size:17px;margin:0 0 6px}
.del-box .del-name b{color:#ffe08a;font-size:19px}
.del-box .del-warn{font-size:13px;color:#ffd6d6;line-height:1.7;margin:0 0 16px}
.del-box .del-warn b{color:#fff}
.del-box .del-chk{display:flex;align-items:center;gap:8px;font-size:14px;margin-bottom:18px;justify-content:center;cursor:pointer;color:#ffe8e8}
.del-box .btn-danger{background:#fff;color:#c0392b}
.del-box .btn-danger:disabled{opacity:.45;cursor:not-allowed}
.del-box .btn-cancel{background:rgba(255,255,255,.18);color:#fff}
.name-input::placeholder{color:rgba(255,255,255,.4)}
.name-input:focus{border-color:rgba(255,255,255,.4);background:rgba(255,255,255,.2);box-shadow:0 0 20px rgba(255,255,255,.1)}
/* 顶栏 — 游客框风格 */
.profile-bar{display:flex;align-items:center;gap:14px;background:rgba(255,255,255,.05);backdrop-filter:blur(16px);
  border:1px solid rgba(255,255,255,.1);border-radius:20px;padding:14px 22px;margin-bottom:16px;width:100%;max-width:420px;
  box-shadow:0 4px 18px rgba(0,0,0,.15)}
.pf-avatar{font-size:36px;line-height:1;filter:drop-shadow(0 3px 6px rgba(0,0,0,.3));
  animation:pfBob 3s ease-in-out infinite}
@keyframes pfBob{0%,100%{transform:translateY(0)}50%{transform:translateY(-3px)}}
.pf-name{color:#fff;font-size:18px;font-weight:800;letter-spacing:.6px;flex:1}
/* 模式卡片 */
.mg{display:grid;grid-template-columns:3fr 1fr;gap:12px;width:100%;max-width:420px;margin-bottom:16px}
.mc{background:linear-gradient(180deg,rgba(255,255,255,.1) 0%,rgba(255,255,255,.03) 50%,rgba(167,139,250,.08) 100%);
  border:1px solid rgba(255,255,255,.1);border-radius:22px;
  padding:18px 12px 18px;text-align:center;cursor:pointer;justify-content:flex-start;
  transition:all .35s cubic-bezier(.22,1,.36,1);
  position:relative;overflow:hidden;
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  backdrop-filter:blur(24px);
  box-shadow:0 1px 0 rgba(255,255,255,.1) inset,0 4px 12px rgba(0,0,0,.15),0 8px 24px rgba(0,0,0,.1)}
.mc::before{content:'';position:absolute;inset:0;background:linear-gradient(135deg,rgba(167,139,250,.18),transparent 50%);border-radius:22px;opacity:0;transition:opacity .35s}
.mc:hover::before{opacity:1}
.mc:hover{background:linear-gradient(180deg,rgba(167,139,250,.18) 0%,rgba(124,58,237,.1) 50%,rgba(167,139,250,.14) 100%);
  border-color:rgba(167,139,250,.35);
  transform:translateY(-4px);
  box-shadow:0 1px 0 rgba(255,255,255,.12) inset,0 8px 32px rgba(124,58,237,.25),0 0 0 1px rgba(167,139,250,.15),0 12px 40px rgba(0,0,0,.2)}
.mc .mi{display:flex;align-items:center;justify-content:center;margin-bottom:10px;line-height:1;height:90px;
  filter:drop-shadow(0 0 20px rgba(167,139,250,.85)) drop-shadow(0 0 44px rgba(124,58,237,.6)) drop-shadow(0 8px 6px rgba(0,0,0,.5)) drop-shadow(3px 10px 8px rgba(0,0,0,.35));
  transition:all .35s cubic-bezier(.22,1,.36,1);font-size:80px}
.mg .mc:first-child:hover .mi{animation:miSway .6s ease-in-out infinite;
  filter:drop-shadow(0 0 32px rgba(167,139,250,1)) drop-shadow(0 0 64px rgba(124,58,237,.75)) drop-shadow(0 10px 8px rgba(0,0,0,.55)) drop-shadow(5px 14px 12px rgba(0,0,0,.4))}
@keyframes miSway{0%,100%{transform:rotate(-3deg) translateX(0)}50%{transform:rotate(3deg) translateX(2px)}}
/* 自由刷词启动动画 */
.mi.launching{position:relative}
.mi.soloPulse{animation:soloSway .9s ease-in-out,soloGlow .6s ease-in-out infinite alternate;position:relative}
@keyframes soloSway{0%{transform:rotate(0) translateX(0)}20%{transform:rotate(-8deg) translateX(-6px)}40%{transform:rotate(6deg) translateX(5px)}60%{transform:rotate(-4deg) translateX(-3px)}80%{transform:rotate(2deg) translateX(1px)}100%{transform:rotate(0) translateX(0)}}
@keyframes soloGlow{0%{filter:drop-shadow(0 0 20px rgba(255,107,107,.9)) drop-shadow(0 0 40px rgba(255,215,0,.5)) drop-shadow(0 6px 6px rgba(0,0,0,.4))}50%{filter:drop-shadow(0 0 30px rgba(107,203,119,.9)) drop-shadow(0 0 50px rgba(77,150,255,.6)) drop-shadow(0 8px 8px rgba(0,0,0,.5))}100%{filter:drop-shadow(0 0 25px rgba(155,89,182,.9)) drop-shadow(0 0 45px rgba(255,140,66,.5)) drop-shadow(0 7px 7px rgba(0,0,0,.45))}}
.mi.battlePulse{animation:battlePulse .9s ease-in-out;position:relative}
@keyframes battlePulse{0%{transform:scale(1)}35%{transform:scale(1.35)}65%{transform:scale(1)}80%{transform:scale(1.2)}100%{transform:scale(1)}}
.mg .mc:last-child .mi{font-size:45px;height:90px;padding-top:24px;box-sizing:border-box;margin-left:3px;filter:drop-shadow(0 0 14px rgba(167,139,250,.85)) drop-shadow(0 0 30px rgba(124,58,237,.55)) drop-shadow(0 5px 4px rgba(0,0,0,.45)) drop-shadow(2px 7px 6px rgba(0,0,0,.3));transition:all .35s cubic-bezier(.22,1,.36,1)}
.mg .mc:last-child:hover .mi{transform:scale(1.12) translateY(-3px);filter:drop-shadow(0 0 22px rgba(167,139,250,1)) drop-shadow(0 0 44px rgba(124,58,237,.7)) drop-shadow(0 7px 6px rgba(0,0,0,.5)) drop-shadow(3px 9px 8px rgba(0,0,0,.35))}
.mc .mn{color:#fff;font-size:22px;font-weight:700;display:block;letter-spacing:1px;line-height:1.2;text-shadow:0 1px 3px rgba(0,0,0,.4),0 0 8px rgba(167,139,250,.25)}
.mg .mc:first-child .mn{color:#fff;font-weight:800;text-shadow:0 1px 3px rgba(0,0,0,.5),0 0 14px rgba(167,139,250,.45)}
.mg .mc:last-child .mn{font-size:20px;font-weight:600;color:rgba(255,255,255,.83);text-shadow:0 1px 2px rgba(0,0,0,.3);margin-left:3px}
.mc .md{color:rgba(255,255,255,.5);font-size:10px;display:block;margin-top:5px;line-height:1.4}
/* 难度 & 词库 */
.sb{width:100%;max-width:420px;margin-bottom:16px}
.st{color:rgba(255,255,255,.7);font-size:16px;font-weight:700;margin-bottom:12px;text-align:center;letter-spacing:2.5px;display:flex;align-items:center;justify-content:center;gap:10px}
.st-icon{width:22px;height:22px;opacity:.9;stroke:#c4b5fd;filter:drop-shadow(0 0 8px rgba(167,139,250,.35))}
/* ===== 左右滑动难度选择器 ===== */
.pg-diff{display:flex;align-items:center;justify-content:center;gap:6px;margin:0 auto 6px;
  user-select:none;-webkit-user-select:none}
.pg-arrow{width:30px;height:30px;flex-shrink:0;border:none;border-radius:0;
  background:none;cursor:pointer;display:flex;align-items:center;justify-content:center;
  color:rgba(255,255,255,.45);transition:all .2s;
  -webkit-tap-highlight-color:transparent;padding:0}
.pg-arrow svg{width:20px;height:20px}
.pg-arrow:hover{color:#fff}
.pg-arrow:active{transform:scale(.85)}
.pg-track{width:140px;overflow:hidden;border-radius:18px}
.pg-slider{display:flex;gap:8px;transition:transform .45s cubic-bezier(.25,.1,.25,1);will-change:transform}
.pg-card{width:140px;flex-shrink:0;box-sizing:border-box;padding:10px 16px;border-radius:16px;
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;
  cursor:pointer;background:rgba(255,255,255,.06);
  border:1px solid rgba(255,255,255,.1);
  backface-visibility:hidden;-webkit-backface-visibility:hidden;
  -webkit-tap-highlight-color:transparent}
.pg-card i{font-size:26px;line-height:1;font-style:normal;flex-shrink:0}
.pg-card b{font-size:17px;font-weight:700;color:#fff;letter-spacing:1.5px;line-height:1}
.pg-dots{display:flex;justify-content:center;gap:8px;padding-top:6px}
.pg-dot{width:7px;height:7px;border-radius:50%;border:none;padding:0;
  background:rgba(255,255,255,.2);cursor:pointer;
  transition:all .35s ease}
.pg-dot.active{width:22px;border-radius:4px;
  background:linear-gradient(90deg,#818cf8,#a78bfa);
  box-shadow:0 0 10px rgba(167,139,250,.5)}
body[data-theme="light"] .pg-card{background:rgba(255,255,255,.7);border:1px solid rgba(0,0,0,.08)}
body[data-theme="light"] .pg-card b{color:#3b0f8b}
body[data-theme="light"] .pg-arrow{background:none;border:none;color:#999}
body[data-theme="light"] .pg-arrow:hover{color:#333}
body[data-theme="light"] .pg-dot{background:rgba(0,0,0,.15)}
body[data-theme="light"] .pg-dot.active{background:linear-gradient(90deg,#6366f1,#8b5cf6)}

/* 每局词数 */
.qg{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}
.qc{background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.06);border-radius:14px;padding:10px 4px;text-align:center;cursor:pointer;transition:all .25s;backdrop-filter:blur(16px)}
.qc:hover{background:rgba(167,139,250,.08);border-color:rgba(167,139,250,.2);transform:translateY(-2px);box-shadow:0 4px 16px rgba(0,0,0,.15)}
.qc.sel{background:rgba(167,139,250,.18);border-color:rgba(167,139,250,.4);box-shadow:0 0 20px rgba(167,139,250,.15)}
.qc b{color:#fff;font-size:15px;display:block}
.qc small{color:rgba(255,255,255,.4);font-size:10px;display:block;margin-top:1px}
.wg{display:flex;flex-wrap:nowrap;gap:6px;overflow-x:auto;padding:2px 0 4px;scrollbar-width:none;-webkit-overflow-scrolling:touch}
.wg::-webkit-scrollbar{display:none}
/* 词库标签 */
.wt{display:inline-flex;align-items:center;white-space:nowrap;background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.06);border-radius:20px;padding:6px 14px;cursor:pointer;transition:all .25s;flex-shrink:0;font-size:13px;color:rgba(255,255,255,.6);font-weight:550;user-select:none;backdrop-filter:blur(12px)}
.wt:hover{background:rgba(167,139,250,.08);border-color:rgba(167,139,250,.2);transform:translateY(-1px)}
.wt.sel{background:rgba(167,139,250,.18);border-color:rgba(167,139,250,.35);color:#d8cfff}
.wt:active{transform:scale(.96)}
/* 导入词库弹窗 */
.imp-mask{position:fixed;inset:0;background:rgba(0,0,0,.7);backdrop-filter:blur(8px);z-index:200;display:none;justify-content:center;align-items:center}
.imp-mask.show{display:flex}
.imp-box{background:rgba(20,20,50,.95);border:1px solid rgba(255,255,255,.15);border-radius:20px;padding:22px;width:90vw;max-width:480px;max-height:85vh;overflow-y:auto;animation:slideUp .3s}
@keyframes slideUp{from{transform:translateY(30px);opacity:0}to{transform:translateY(0);opacity:1}}
.imp-title{font-size:20px;font-weight:bold;color:#fff;margin-bottom:12px;display:flex;align-items:center;gap:8px}
.imp-title svg{flex-shrink:0}
.imp-field{margin-bottom:12px}
.imp-label{font-size:13px;color:rgba(255,255,255,.7);margin-bottom:5px}
.imp-input{width:100%;padding:10px 14px;border:1.5px solid rgba(255,255,255,.15);border-radius:10px;font-size:14px;background:rgba(255,255,255,.1);color:#fff;outline:none;box-sizing:border-box}
.imp-input:focus{border-color:rgba(102,126,234,.6)}
.imp-textarea{width:100%;height:130px;padding:10px 14px;border:1.5px solid rgba(255,255,255,.15);border-radius:10px;font-size:13px;background:rgba(255,255,255,.1);color:#fff;outline:none;resize:vertical;box-sizing:border-box;font-family:monospace;line-height:1.5}
.imp-textarea:focus{border-color:rgba(102,126,234,.6)}
/* 两列输入行 */
.imp-rows-header{display:grid;grid-template-columns:1fr 1fr 26px;gap:8px;margin-bottom:6px;padding:0 2px}
.imp-rows-header span{font-size:11px;color:rgba(255,255,255,.45);font-weight:700;letter-spacing:1px}
.imp-rows-h-op{width:26px}
.imp-rows-edit{max-height:240px;overflow-y:auto;display:flex;flex-direction:column;gap:6px;padding:2px 2px 4px;scrollbar-width:thin;scrollbar-color:rgba(255,255,255,.18) transparent}
.imp-rows-edit::-webkit-scrollbar{width:6px}
.imp-rows-edit::-webkit-scrollbar-track{background:transparent}
.imp-rows-edit::-webkit-scrollbar-thumb{background:rgba(255,255,255,.18);border-radius:3px;transition:background .2s}
.imp-rows-edit::-webkit-scrollbar-thumb:hover{background:rgba(255,255,255,.32)}
body[data-theme="light"] .imp-rows-edit{scrollbar-color:rgba(124,58,237,.25) transparent}
body[data-theme="light"] .imp-rows-edit::-webkit-scrollbar-thumb{background:rgba(124,58,237,.25)}
body[data-theme="light"] .imp-rows-edit::-webkit-scrollbar-thumb:hover{background:rgba(124,58,237,.4)}
.imp-row{display:grid;grid-template-columns:1fr 1fr 26px;gap:8px;align-items:center}
.imp-row input{width:100%;padding:8px 10px;border:1.5px solid rgba(255,255,255,.12);border-radius:8px;font-size:13px;background:rgba(255,255,255,.06);color:#fff;outline:none;box-sizing:border-box;font-family:inherit;transition:border-color .2s}
.imp-row-en{font-family:Consolas,Monaco,monospace;font-weight:600}
.imp-row input:focus{border-color:rgba(102,126,234,.6);background:rgba(255,255,255,.1)}
.imp-row input::placeholder{color:rgba(255,255,255,.25);font-weight:400}
.imp-row-del{width:26px;height:32px;border:0;border-radius:8px;background:rgba(255,80,80,.12);color:rgba(255,140,140,.7);font-size:18px;cursor:pointer;line-height:1;padding:0;transition:all .2s}
.imp-row-del:hover{background:rgba(255,80,80,.25);color:#ff9e9e}
.imp-add-row{width:100%;margin-top:18px;margin-bottom:18px;padding:9px;border:1.5px dashed rgba(255,255,255,.18);border-radius:10px;background:transparent;color:rgba(255,255,255,.5);font-size:13px;cursor:pointer;transition:all .2s;font-family:inherit}
.imp-add-row:hover{border-color:rgba(102,126,234,.5);color:#fff;background:rgba(102,126,234,.08)}
body[data-theme="light"] .imp-row input{background:rgba(124,58,237,.04);border-color:rgba(124,58,237,.15);color:#5b21b6}
body[data-theme="light"] .imp-row input:focus{border-color:rgba(124,58,237,.5);background:rgba(124,58,237,.08)}
body[data-theme="light"] .imp-row input::placeholder{color:rgba(124,58,237,.3)}
body[data-theme="light"] .imp-rows-header span{color:rgba(76,29,149,.5)}
body[data-theme="light"] .imp-row-del{background:rgba(220,38,38,.1);color:rgba(220,38,38,.7)}
body[data-theme="light"] .imp-row-del:hover{background:rgba(220,38,38,.2);color:#b91c1c}
body[data-theme="light"] .imp-add-row{border-color:rgba(124,58,237,.2);color:rgba(76,29,149,.6)}
body[data-theme="light"] .imp-add-row:hover{border-color:rgba(124,58,237,.5);color:#5b21b6;background:rgba(124,58,237,.06)}
.imp-tabs{display:flex;gap:4px;margin-bottom:14px}
.imp-tab{padding:6px 14px;border-radius:20px;font-size:12px;cursor:pointer;color:rgba(255,255,255,.55);background:rgba(255,255,255,.05);border:none;transition:all .2s}
.imp-tab.sel{background:rgba(102,126,234,.3);color:#fff}
.imp-preview{background:rgba(255,255,255,.03);border:1px solid rgba(255,255,255,.1);border-radius:10px;padding:10px;max-height:170px;overflow-y:auto;font-size:11px;color:rgba(255,255,255,.5);margin-bottom:14px;display:none}
.imp-empty-hint{text-align:center;color:rgba(255,255,255,.4);font-size:12px;padding:14px 0;line-height:1.8}
.imp-empty-hint small{font-size:10px;opacity:.7}
.imp-preview.show{display:block}
.imp-preview-row{display:grid;grid-template-columns:1fr 1.4fr;gap:12px;padding:5px 4px;border-bottom:1px solid rgba(255,255,255,.04);align-items:center}
.imp-pre-en{color:#fff;font-family:Consolas,Monaco,monospace;font-weight:700;font-size:12px}
.imp-pre-ch{display:flex;justify-content:space-between;align-items:center;gap:6px;color:rgba(255,255,255,.75);min-width:0}
.imp-pre-ch-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1}
.imp-cat-badge{font-size:10px;padding:2px 8px;border-radius:10px;background:var(--c);color:#fff;font-weight:600;flex-shrink:0;letter-spacing:.5px;line-height:1.4;box-shadow:0 1px 4px rgba(0,0,0,.2)}
.imp-cat-stats{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:8px;padding-bottom:8px;border-bottom:1px dashed rgba(255,255,255,.1)}
.imp-cat-stat{display:inline-flex;align-items:baseline;gap:4px;padding:3px 10px;border-radius:14px;font-size:11px;background:color-mix(in srgb,var(--c) 18%,transparent);border:1px solid color-mix(in srgb,var(--c) 35%,transparent);color:var(--c);font-weight:550}
.imp-cat-stat b{font-size:13px;font-weight:800;color:var(--c)}
.imp-preview .ok{color:#4ECDC4}
.imp-preview .err{color:#ff6b6b}
.imp-btns{display:flex;gap:10px}
.imp-btns button{flex:1;padding:11px 0;border-radius:12px;border:none;font-size:14px;font-weight:550;cursor:pointer;transition:all .2s}
.imp-confirm{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff}
.imp-confirm:disabled{opacity:.35;cursor:not-allowed}
.imp-cancel{background:rgba(255,255,255,.1);color:rgba(255,255,255,.7)}
.imp-import-hint{text-align:center;font-size:11px;color:rgba(255,200,80,.85);margin-top:6px}
.imp-file-pick{display:flex;align-items:center;gap:10px;margin-bottom:6px}
.imp-file-pick input[type=file]{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}
.imp-file-btn{display:inline-flex;align-items:center;gap:5px;padding:9px 16px;border-radius:10px;background:linear-gradient(135deg,#667eea,#a78bfa);color:#fff;font-size:13px;font-weight:600;cursor:pointer;border:none;transition:all .2s;flex-shrink:0}
.imp-file-btn:hover{transform:translateY(-1px);box-shadow:0 4px 14px rgba(102,126,234,.4)}
.imp-file-name{font-size:12px;color:rgba(255,255,255,.55);flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.imp-file-hint{font-size:10px;color:rgba(255,255,255,.35);margin-top:2px}
body[data-theme="light"] .imp-import-hint{color:#b45309}
body[data-theme="light"] .imp-file-name{color:rgba(76,29,149,.55)}
body[data-theme="light"] .imp-file-hint{color:rgba(76,29,149,.45)}
body[data-theme="light"] .imp-file-btn{box-shadow:0 2px 8px rgba(124,58,237,.25)}
.imp-cancel:hover{background:rgba(255,255,255,.18)}
/* OCR 识别中提示 */
.imp-recognizing{display:flex;align-items:center;gap:8px;margin-top:8px;padding:8px 12px;background:rgba(102,126,234,.12);border:1px solid rgba(102,126,234,.25);border-radius:10px;color:rgba(255,255,255,.8);font-size:12px;line-height:1.5}
.imp-rec-spinner{display:inline-block;width:14px;height:14px;border:2px solid rgba(255,255,255,.25);border-top-color:rgba(255,255,255,.9);border-radius:50%;animation:impSpin .8s linear infinite}
@keyframes impSpin{to{transform:rotate(360deg)}}
/* OCR 预览列表（与手动输入行样式相近，但边框颜色由置信度决定） */
.imp-rows-preview{max-height:260px;overflow-y:auto;display:flex;flex-direction:column;gap:6px;padding:2px;margin-top:10px;scrollbar-width:thin;scrollbar-color:rgba(255,255,255,.18) transparent}
.imp-rows-preview::-webkit-scrollbar{width:6px}
.imp-rows-preview::-webkit-scrollbar-thumb{background:rgba(255,255,255,.18);border-radius:3px}
.imp-rows-preview::-webkit-scrollbar-thumb:hover{background:rgba(255,255,255,.32)}
.imp-preview-empty{padding:14px;text-align:center;color:rgba(255,255,255,.4);font-size:12px}
.imp-preview-row{display:grid;grid-template-columns:1fr 1fr 26px;gap:8px;align-items:center}
.imp-preview-row input{width:100%;padding:8px 10px;border:1.5px solid rgba(255,255,255,.12);border-radius:8px;font-size:13px;background:rgba(255,255,255,.06);color:#fff;outline:none;box-sizing:border-box;font-family:inherit;transition:border-color .2s}
.imp-preview-en{font-family:Consolas,Monaco,monospace;font-weight:600}
/* 置信度边框颜色：high=绿 / medium=黄 / low=红 */
.imp-preview-en.conf-high{border-color:#22c55e;background:rgba(34,197,94,.10)}
.imp-preview-en.conf-medium{border-color:#eab308;background:rgba(234,179,8,.10)}
.imp-preview-en.conf-low{border-color:#ef4444;background:rgba(239,68,68,.10)}
.imp-preview-row input:focus{border-color:rgba(102,126,234,.6);background:rgba(255,255,255,.1)}
.imp-preview-row input::placeholder{color:rgba(255,255,255,.25)}
.imp-preview-del{width:26px;height:32px;border:0;border-radius:8px;background:rgba(255,80,80,.12);color:rgba(255,140,140,.7);font-size:18px;cursor:pointer;line-height:1;padding:0;transition:all .2s}
.imp-preview-del:hover{background:rgba(255,80,80,.25);color:#ff9e9e}
body[data-theme="light"] .imp-recognizing{background:rgba(124,58,237,.08);border-color:rgba(124,58,237,.2);color:rgba(76,29,149,.85)}
body[data-theme="light"] .imp-rec-spinner{border-color:rgba(76,29,149,.2);border-top-color:rgba(76,29,149,.8)}
body[data-theme="light"] .imp-preview-row input{background:rgba(124,58,237,.04);border-color:rgba(124,58,237,.15);color:#5b21b6}
body[data-theme="light"] .imp-preview-en.conf-high{border-color:#16a34a;background:rgba(22,163,74,.08)}
body[data-theme="light"] .imp-preview-en.conf-medium{border-color:#ca8a04;background:rgba(202,138,4,.08)}
body[data-theme="light"] .imp-preview-en.conf-low{border-color:#dc2626;background:rgba(220,38,38,.08)}
body[data-theme="light"] .imp-preview-del{background:rgba(220,38,38,.1);color:rgba(220,38,38,.7)}
body[data-theme="light"] .imp-preview-del:hover{background:rgba(220,38,38,.2);color:#b91c1c}
/* 导入弹窗底部错误提示（仿 #loginErr） */
.imp-err{color:#ff9e9e;font-size:13px;padding:8px 14px;margin:10px 0 0;background:rgba(255,80,80,.12);border-radius:10px;min-height:0;line-height:1.4;text-shadow:0 1px 2px rgba(0,0,0,.2);animation:shake .35s ease;word-break:break-all}
body[data-theme="light"] .imp-err{color:#b91c1c;background:rgba(220,38,38,.1);text-shadow:none}
/* 词汇页顶部 - 模式切换按钮（滑动胶囊）*/
.vocab-mode-switch{display:none;gap:4px;width:100%;max-width:420px;margin:0 0 14px;
  background:rgba(0,0,0,.18);border-radius:14px;padding:6px;position:relative;overflow:hidden;height:56px;flex-shrink:0}
.vocab-mode-switch::before{content:'';position:absolute;top:6px;left:6px;
  width:calc((100% - 12px) / 2);height:calc(100% - 12px);border-radius:11px;
  background:linear-gradient(135deg,#667eea,#a78bfa);
  box-shadow:0 4px 12px rgba(102,126,234,.3);
  transition:left .3s ease;
  z-index:0;pointer-events:none}
.vocab-mode-switch[data-mode="bank"]::before{left:6px}
.vocab-mode-switch[data-mode="match"]::before{left:calc(6px + (100% - 12px) / 2)}
.vocab-mode-btn{flex:1;padding:9px;border:0;border-radius:11px;background:transparent;
  color:rgba(255,255,255,.45);font-size:16px;font-weight:700;cursor:pointer;
  transition:color .25s ease;position:relative;z-index:1;-webkit-tap-highlight-color:transparent;
  display:flex;align-items:center;justify-content:center;gap:7px}
.vm-icon{flex-shrink:0}
.vocab-mode-btn.active{color:#fff}
.vocab-mode-btn:not(.active):hover{color:rgba(255,255,255,.7)}
body[data-theme="light"] .vocab-mode-switch{background:rgba(255,255,255,.4);border:1px solid rgba(167,139,250,.15)}
body[data-theme="light"] .vocab-mode-switch::before{box-shadow:0 4px 12px rgba(124,58,237,.25)}
body[data-theme="light"] .vocab-mode-btn{color:rgba(76,29,149,.55)}
body[data-theme="light"] .vocab-mode-btn.active{color:#fff}
body[data-theme="light"] .vocab-mode-btn:not(.active):hover{color:#2a2440}
/* 词汇页面 — 新版卡片设计 */
.vocab-hero{width:100%;max-width:420px;background:rgba(255,255,255,.04);border:1.5px solid rgba(98,126,234,.5);border-radius:14px;padding:14px 16px 12px;margin:0 0 14px;display:none;flex-direction:column;gap:8px;backdrop-filter:blur(12px);box-shadow:0 0 16px rgba(98,126,234,.2);flex-shrink:0}
.vocab-hero.show{display:flex}
.vocab-hero-badge{font-size:10px;font-weight:600;padding:3px 10px;border-radius:8px;display:inline-block;width:fit-content}
.vocab-hero-badge.builtin{background:rgba(76,175,80,.18);color:#81C784;border:1px solid rgba(76,175,80,.3)}
.vocab-hero-badge.custom{background:rgba(167,139,250,.18);color:#c4b5fd;border:1px solid rgba(167,139,250,.3)}
.vocab-hero-row{display:flex;align-items:center;gap:12px}
.vocab-hero-icon{font-size:36px;flex-shrink:0}
.vocab-hero-info{flex:1;min-width:0}
.vocab-hero-name{color:#fff;font-size:16px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.vocab-hero-desc{color:rgba(255,255,255,.45);font-size:11px;margin-top:2px}
.vocab-hero-count{font-size:12px;font-weight:700;color:#c4b5fd;background:rgba(167,139,250,.12);padding:3px 10px;border-radius:10px}
.vocab-hero-actions{display:flex;gap:6px}
.vocab-hero-btn{padding:7px 16px;border-radius:10px;border:1px solid rgba(167,139,250,.3);background:rgba(167,139,250,.1);color:#c4b5fd;font-size:12px;font-weight:600;cursor:pointer;transition:all .2s}
.vocab-hero-btn:hover{background:rgba(167,139,250,.25);color:#fff}
/* 筛选标签 */
.vocab-filters{display:flex;gap:6px;margin-bottom:12px;overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none}
.vocab-filters::-webkit-scrollbar{display:none}
.vocab-filter{flex-shrink:0;padding:7px 16px;border-radius:20px;border:1px solid rgba(255,255,255,.1);background:rgba(255,255,255,.04);color:rgba(255,255,255,.55);font-size:12px;font-weight:600;cursor:pointer;transition:all .2s}
.vocab-filter:hover{background:rgba(167,139,250,.1);color:rgba(255,255,255,.8)}
.vocab-filter.sel{background:linear-gradient(135deg,rgba(167,139,250,.25),rgba(124,58,237,.2));border-color:rgba(167,139,250,.4);color:#fff}
/* 工具栏 */
.vocab-toolbar{display:flex;gap:8px;margin-bottom:12px}
/* 卡片 */
.vocab-card{background:rgba(255,255,255,.04);border:1.5px solid rgba(255,255,255,.06);border-radius:14px;padding:14px 16px 12px;cursor:pointer;transition:all .25s;display:flex;flex-direction:column;gap:8px;backdrop-filter:blur(12px);width:100%}
.vocab-card:hover{background:rgba(167,139,250,.08);border-color:rgba(167,139,250,.2);transform:translateY(-2px)}
.vocab-card.sel{border-color:rgba(98,126,234,.5);background:rgba(98,126,234,.12);box-shadow:0 0 16px rgba(98,126,234,.2)}
.vocab-card-top{display:flex;align-items:center;gap:4px}
.vocab-card-tag{font-size:10px;font-weight:600;padding:2px 8px;border-radius:6px}
.vocab-card-tag.builtin{background:rgba(76,175,80,.18);color:#81C784;border:1px solid rgba(76,175,80,.3)}
.vocab-card-tag.custom{background:rgba(167,139,250,.15);color:#c4b5fd;border:1px solid rgba(167,139,250,.3)}
.vocab-card-count{font-size:10px;font-weight:700;color:rgba(255,255,255,.4);background:rgba(255,255,255,.06);padding:2px 8px;border-radius:6px;margin-left:auto}
.vocab-card-title-row{display:flex;align-items:flex-start;gap:8px;margin-top:2px}
.vocab-card-title-block{flex:1;min-width:0}
.vocab-card-title-row .vocab-card-icon{font-size:28px;line-height:1;flex-shrink:0}
.vocab-card-title{color:#fff;font-size:14px;font-weight:700;line-height:1.4;margin-top:2px}
.vocab-card-desc{color:rgba(255,255,255,.4);font-size:11px;line-height:1.5}
.vocab-card-date{color:rgba(255,255,255,.3);font-size:10px;line-height:1.5;margin-top:2px}
.vocab-card-tags{display:flex;gap:4px;flex-wrap:wrap}
.vocab-card-ctag{font-size:9px;padding:1px 7px;border-radius:6px;background:rgba(255,255,255,.06);color:rgba(255,255,255,.45);border:1px solid rgba(255,255,255,.1)}
.vocab-card-foot{display:flex;justify-content:space-between;align-items:center;margin-top:4px}
/* 单词列表（对应单词模式）*/
.word-list{display:flex;flex-direction:column;gap:8px;width:100%;max-height:calc(100vh - 240px);overflow-y:auto;padding-right:4px}
.word-list::-webkit-scrollbar{width:4px}
.word-list::-webkit-scrollbar-thumb{background:rgba(255,255,255,.15);border-radius:2px}
.word-card{background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.06);border-radius:12px;padding:12px 14px;display:flex;flex-direction:column;gap:6px;transition:all .2s}
.word-card:hover{background:rgba(167,139,250,.06);border-color:rgba(167,139,250,.2)}
.word-card.mastered{border-color:rgba(74,222,128,.35);background:rgba(74,222,128,.06)}
.word-card-head{display:flex;align-items:baseline;gap:8px}
.word-en{color:#fff;font-size:16px;font-weight:800;letter-spacing:.3px}
.word-pos{color:rgba(167,139,250,.7);font-size:11px;font-style:italic}
.word-spk{flex-shrink:0;margin-left:auto;width:30px;height:30px;border-radius:50%;border:0;background:rgba(167,139,250,.12);color:#c4b5fd;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s;padding:0}
.word-spk:hover{background:rgba(167,139,250,.25);color:#fff;transform:scale(1.08)}
.word-card-body{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}
.word-phon{color:#c4b5fd;font-size:15px;font-style:italic;font-family:'Times New Roman','Georgia',serif;letter-spacing:.5px}
.word-cn{color:rgba(255,255,255,.7);font-size:13px;line-height:1.5}
body[data-theme="light"] .word-phon{color:#2563eb}
.word-card.mastered .word-en::before{content:'✓';display:inline-block;color:#4ade80;margin-right:4px;font-size:13px}
body[data-theme="light"] .word-card{background:rgba(255,255,255,.6);border-color:rgba(124,58,237,.1)}
body[data-theme="light"] .word-card:hover{background:rgba(124,58,237,.06)}
body[data-theme="light"] .word-card.mastered{background:rgba(74,222,128,.1);border-color:rgba(74,222,128,.4)}
body[data-theme="light"] .word-en{color:#2a2440}
body[data-theme="light"] .word-cn{color:rgba(76,29,149,.7)}
body[data-theme="light"] .word-spk{background:rgba(124,58,237,.1);color:#5b21b6}
body[data-theme="light"] .word-spk:hover{background:rgba(124,58,237,.2);color:#fff}
/* 状态标签与进度条已删除，仅保留单词基础内容 */
/* ★ 加载更多按钮 */
.vocab-load-more{padding:12px 0;text-align:center}
.load-more-btn{background:rgba(167,139,250,.1);border:1px solid rgba(167,139,250,.2);color:#c4b5fd;font-size:12px;font-weight:600;padding:8px 28px;border-radius:20px;cursor:pointer;transition:all .2s}
.load-more-btn:hover{background:rgba(167,139,250,.2);color:#fff;transform:translateY(-1px);box-shadow:0 4px 12px rgba(167,139,250,.15)}
body[data-theme="light"] .load-more-btn{background:rgba(124,58,237,.08);border-color:rgba(124,58,237,.15);color:#5b21b6}
body[data-theme="light"] .load-more-btn:hover{background:rgba(124,58,237,.18);color:#fff}
.vocab-card-stats{display:flex;align-items:center;justify-content:space-between;gap:6px;
  padding:8px 4px;background:rgba(0,0,0,.12);border-radius:10px;margin:2px 0 4px}
.vocab-card-stat{display:flex;align-items:center;justify-content:center;gap:4px;flex:1;min-width:0}
.vocab-card-stat-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0;margin-right:2px}
.vocab-card-stat-dot.total{background:#a78bfa;box-shadow:0 0 6px rgba(167,139,250,.5)}
.vocab-card-stat-dot.mastered{background:#4ade80;box-shadow:0 0 6px rgba(74,222,128,.5)}
.vocab-card-stat-dot.rate{background:#38bdf8;box-shadow:0 0 6px rgba(56,189,248,.5)}
.vocab-card-stat-label{color:rgba(255,255,255,.4);font-size:10px;font-weight:600;white-space:nowrap}
.vocab-card-stat-value{color:#fff;font-size:13px;font-weight:800}
.vocab-card-stat-sep{width:1px;height:18px;background:rgba(255,255,255,.1);flex-shrink:0}
body[data-theme="light"] .vocab-card-stats{background:rgba(124,58,237,.05)}
body[data-theme="light"] .vocab-card-stat-label{color:rgba(76,29,149,.6)}
body[data-theme="light"] .vocab-card-stat-value{color:#2a2440}
body[data-theme="light"] .vocab-card-stat-sep{background:rgba(124,58,237,.15)}
.vocab-card-date{font-size:10px;color:rgba(255,255,255,.3)}
.vocab-card-btns{display:flex;gap:8px;margin-top:8px}
.vocab-card-btns .vocab-card-btn{flex:1;width:100%;text-align:center;margin:0}
.vocab-card-btn{padding:4px 12px;border-radius:7px;border:1px solid rgba(167,139,250,.25);background:rgba(167,139,250,.1);color:#c4b5fd;font-size:10px;font-weight:600;cursor:pointer;transition:all .2s}
.vocab-card-btn:hover{background:rgba(167,139,250,.22);color:#fff}
.vocab-card-btn.danger{border-color:rgba(220,38,38,.3);background:rgba(220,38,38,.1);color:rgba(255,140,140,.85);margin-left:0}
.vocab-card-btn.danger:hover{background:rgba(220,38,38,.22);color:#ff9e9e}
.vocab-card-menu{position:absolute;top:8px;right:8px;width:22px;height:22px;display:flex;align-items:center;justify-content:center;border-radius:6px;background:rgba(255,255,255,.06);cursor:pointer;font-size:13px;color:rgba(255,255,255,.4);transition:all .2s}
.vocab-card-menu:hover{background:rgba(255,255,255,.15);color:#fff}
/* 服务端自定义词书删除按钮（红色警示风格） */
.vocab-card-menu.del{background:rgba(220,38,38,.12);color:rgba(255,120,120,.8)}
.vocab-card-menu.del:hover{background:rgba(220,38,38,.25);color:#ff9e9e}
/* 保留旧 cb 样式作兼容 */
.cb-list{display:flex;flex-direction:column;gap:10px;width:100%;max-height:calc(100vh - 240px);overflow-y:auto;padding-right:4px}
.cb-list::-webkit-scrollbar{width:4px}
.cb-list::-webkit-scrollbar-thumb{background:rgba(255,255,255,.15);border-radius:2px}
.cb-item{background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.06);border-radius:10px;padding:6px 12px;font-size:12px;color:rgba(255,255,255,.8);cursor:pointer;display:flex;align-items:center;gap:4px;transition:all .25s;backdrop-filter:blur(12px)}
.cb-item:hover{background:rgba(167,139,250,.08);border-color:rgba(167,139,250,.2);transform:translateY(-1px)}
.cb-item.sel{background:rgba(167,139,250,.18);border-color:rgba(167,139,250,.35)}
.cb-builtin{border-color:rgba(76,175,80,.25);background:rgba(76,175,80,.06)}
.cb-builtin:hover{background:rgba(76,175,80,.12)}
.cb-builtin.sel{background:rgba(76,175,80,.16);border-color:rgba(76,175,80,.4)}
.cb-builtin-tag{font-size:9px;padding:1px 6px;border-radius:8px;background:rgba(76,175,80,.2);color:#81C784;font-weight:550}
.cb-item-count{font-size:10px;color:rgba(255,255,255,.35)}
.cb-item-menu{padding:2px 6px;border-radius:6px;background:rgba(255,255,255,.1);cursor:pointer;font-size:14px;margin-left:2px}
.cb-item-menu:hover{background:rgba(255,255,255,.2)}
.cb-toolbar,.vocab-toolbar{display:flex;gap:8px;margin-bottom:10px}
.cb-search-wrap{width:100%;max-width:420px;margin:0 0 10px;display:none;align-items:stretch;gap:8px;height:42px;flex-shrink:0}
.cb-search-box{flex:1;display:flex;align-items:center;gap:8px;min-width:0;height:42px;
  padding:0 14px;border-radius:12px;border:1px solid rgba(255,255,255,.1);background:rgba(255,255,255,.04);box-sizing:border-box;transition:all .2s}
.cb-search-box:focus-within{border-color:rgba(167,139,250,.4);box-shadow:0 0 12px rgba(167,139,250,.12)}
.cb-import-btn{flex-shrink:0;border:1px solid rgba(255,255,255,.1);border-radius:12px;height:42px;
  background:rgba(255,255,255,.04);color:rgba(255,255,255,.5);
  font-size:13px;font-weight:600;cursor:pointer;padding:0 14px;
  box-sizing:border-box;transition:all .2s;letter-spacing:1px;min-width:60px;
  display:flex;align-items:center;justify-content:center;gap:5px}
.cb-import-icon{flex-shrink:0}
.cb-import-btn:hover{background:rgba(167,139,250,.1);border-color:rgba(167,139,250,.3);color:#fff}
.cb-search-icon{flex-shrink:0;color:#fff;display:flex;align-items:center}
.cb-search{flex:1;padding:0;border:0;background:transparent;color:#fff;font-size:13px;line-height:1;outline:none;width:100%;min-width:0}
.cb-search::placeholder{color:#fff;opacity:.7}
.cb-search::placeholder{color:rgba(255,255,255,.3)}
.cb-sort{padding:9px 10px;border-radius:12px;border:1px solid rgba(255,255,255,.1);background:rgba(255,255,255,.04);color:rgba(255,255,255,.6);font-size:11px;outline:none;cursor:pointer;backdrop-filter:blur(8px)}
.cb-sort option{background:#1a1a3e;color:#fff}
.cb-actions,.vocab-actions{display:flex;gap:8px;margin-top:10px}
.btn-imp{flex:1;padding:9px 0;border-radius:10px;border:1px dashed rgba(255,255,255,.15);background:transparent;color:rgba(255,255,255,.5);font-size:12px;cursor:pointer;text-align:center;transition:all .25s;backdrop-filter:blur(8px)}
.btn-imp:hover{border-color:rgba(167,139,250,.35);color:rgba(255,255,255,.8);background:rgba(167,139,250,.06);transform:translateY(-1px)}
/* 自定义词库右键菜单 */
.cb-popup{position:fixed;background:rgba(20,20,50,.98);border:1px solid rgba(255,255,255,.15);border-radius:12px;padding:6px;z-index:210;min-width:100px;box-shadow:0 8px 24px rgba(0,0,0,.5);display:none}
.cb-popup.show{display:block}
.cb-popup-item{display:block;width:100%;padding:8px 14px;border:none;border-radius:8px;background:transparent;color:rgba(255,255,255,.8);font-size:13px;text-align:left;cursor:pointer}
.cb-popup-item:hover{background:rgba(255,255,255,.1)}
.cb-popup-item.danger{color:#ff6b6b}
.cb-popup-item.danger:hover{background:rgba(255,0,0,.15)}
.qg{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.qc{position:relative;overflow:hidden;
  background:linear-gradient(180deg,rgba(255,255,255,.1) 0%,rgba(255,255,255,.03) 50%,rgba(167,139,250,.08) 100%);
  border:1px solid rgba(255,255,255,.1);border-radius:15px;
  padding:8px 6px;text-align:center;cursor:pointer;
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  transition:all .35s cubic-bezier(.22,1,.36,1)}
.qc:hover{background:linear-gradient(180deg,rgba(167,139,250,.18) 0%,rgba(124,58,237,.1) 50%,rgba(167,139,250,.14) 100%);
  border-color:rgba(167,139,250,.35);transform:translateY(-3px)}
.qc.sel{background:linear-gradient(180deg,rgba(167,139,250,.22) 0%,rgba(124,58,237,.15) 50%,rgba(167,139,250,.18) 100%);
  border-color:rgba(167,139,250,.45)}
.qc b{color:#fff;font-size:20px;font-weight:700;display:block;letter-spacing:.5px;line-height:1.2}
.qc.custom b{font-size:20px}
.qc small{color:rgba(255,255,255,.7);font-size:11px;display:block;margin-top:4px;letter-spacing:1px;font-weight:600}
/* ===== 自定义 input 编辑态 ===== */
.qc input.qc-in{width:100%;min-width:0;max-width:100%;height:34px;
  border:none;outline:none;background:transparent;
  color:#fff;font-family:inherit;
  font-size:22px;font-weight:700;text-align:center;letter-spacing:.5px;
  padding:0 4px;margin:0;
  -webkit-appearance:none;-moz-appearance:textfield;appearance:none}
.qc input.qc-in::-webkit-outer-spin-button,
.qc input.qc-in::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}
.qc input.qc-in::selection{background:rgba(167,139,250,.5);color:#fff}
.qc.custom.editing{cursor:text;
  background:linear-gradient(180deg,rgba(167,139,250,.25) 0%,rgba(124,58,237,.18) 50%,rgba(167,139,250,.22) 100%);
  border-color:rgba(167,139,250,.6);
  box-shadow:inset 0 0 0 1px rgba(167,139,250,.4)}
/* 自定义按钮 — 图标在左，数字在右 */
.qc.custom{display:flex;flex-direction:row;align-items:center;justify-content:center;gap:6px}
.qc.custom .qc-icon{font-size:0;display:flex;align-items:center;justify-content:center;line-height:1;color:transparent}
.qc.custom .qc-icon svg{width:22px;height:22px;filter:drop-shadow(0 0 8px rgba(167,139,250,.35))}
.qc.custom .qc-val{font-size:20px;font-weight:700;color:#fff;line-height:1;letter-spacing:.5px}
.qc .qc-val{color:#fff;font-weight:800;font-size:20px;margin-right:3px;
  display:inline-block;min-width:14px;text-align:center}
.qc .qc-val.qc-val-hint{color:rgba(255,255,255,.55);font-size:13px;font-weight:600;letter-spacing:1px}

/* 统计卡片 */
.stats-row{display:flex;gap:8px;justify-content:center;margin:0 0 10px;width:100%;max-width:420px}
.stat-card{flex:1;background:rgba(255,255,255,.04);backdrop-filter:blur(16px);border:1px solid rgba(255,255,255,.06);border-radius:16px;padding:12px 4px;text-align:center;display:flex;flex-direction:column;align-items:center;gap:2px;transition:all .25s}
.stat-card:hover{background:rgba(167,139,250,.06);border-color:rgba(167,139,250,.2);transform:translateY(-2px)}
.stat-icon{font-size:20px;line-height:1;display:block}
.stat-num{color:#fff;font-size:16px;font-weight:700;line-height:1.2}
.stat-label{color:rgba(255,255,255,.45);font-size:10px;font-weight:550;letter-spacing:.5px}
.stat-icon{font-size:18px}
.stat-num{font-size:20px;font-weight:700;color:#fff}
.stat-label{font-size:9px;color:rgba(255,255,255,.45);letter-spacing:.5px}
/* 复习面板专用图标（玻璃方块 + 渐变背景） */
.stat-card-h{flex-direction:row;align-items:center;justify-content:center;gap:12px;padding:10px 14px;text-align:left;min-height:52px}
.stat-card-h .stat-text{align-items:center;text-align:center}
.stat-card-h .stat-text{display:flex;flex-direction:column;align-items:flex-start;gap:3px;line-height:1.2}
.stat-card-h .stat-label{font-size:10px;color:rgba(255,255,255,.55);letter-spacing:.4px;font-weight:600}
.stat-card-h .stat-num{font-size:22px;font-weight:800;color:#fff;display:inline-flex;align-items:baseline;gap:1px}
.stat-card-h .stat-unit{font-size:10px;color:rgba(255,255,255,.55);font-weight:600;margin-left:1px}
.stat-icon-new,.stat-icon-done{width:36px;height:36px;border-radius:11px;display:flex;align-items:center;justify-content:center;color:#fff;line-height:1;font-size:0;flex-shrink:0}
.stat-icon-new{background:linear-gradient(135deg,#3b82f6 0%,#6366f1 100%);box-shadow:0 4px 12px rgba(59,130,246,.35),inset 0 1px 0 rgba(255,255,255,.22)}
.stat-icon-done{background:linear-gradient(135deg,#8b5cf6 0%,#a855f7 100%);box-shadow:0 4px 12px rgba(139,92,246,.35),inset 0 1px 0 rgba(255,255,255,.22)}
.stat-icon-new svg,.stat-icon-done svg{filter:drop-shadow(0 1px 1px rgba(0,0,0,.15))}
/* 浅色模式 */
body[data-theme="light"] .stat-card-h .stat-num{color:#1e1b4b}
body[data-theme="light"] .stat-card-h .stat-label{color:rgba(76,29,149,.5)}
body[data-theme="light"] .stat-card-h .stat-unit{color:rgba(76,29,149,.55)}
/* 错题本样式 */
.wi{padding:6px 8px;border-radius:6px;margin-bottom:3px;background:rgba(255,255,255,.04);transition:background .15s}
.wi:hover{background:rgba(255,255,255,.1)}
.wi-top{display:flex;justify-content:space-between;align-items:center;gap:6px;margin-bottom:2px}
.wi-en{color:#fff;font-size:12px;font-weight:550;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.wi-spk{background:none;border:none;font-size:14px;cursor:pointer;padding:0 4px;opacity:.7;line-height:1;flex-shrink:0}
.wi-spk:hover{opacity:1;transform:scale(1.2)}
.wi-bot{display:flex;justify-content:space-between;align-items:center;gap:6px}
.wi-cn{color:rgba(255,255,255,.55);font-size:10px;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.wi-cnt{color:#ffd700;font-size:10px;font-weight:700;flex-shrink:0}
.he{color:rgba(255,255,255,.3);text-align:center;padding:12px;font-size:12px}
.hcl{display:block;margin:8px auto 0;background:none;border:none;color:rgba(255,255,255,.4);padding:4px 14px;font-size:10px;cursor:pointer;transition:all .2s;text-decoration:underline;text-decoration-color:rgba(255,255,255,.1);text-underline-offset:2px}
.hcl:hover{color:rgba(255,255,255,.75);text-decoration-color:rgba(255,255,255,.35)}
/* ===== 底部导航（小程序风格，丝滑过渡）===== */
#bottomParentNav{display:none}
.bottom-nav{position:fixed;bottom:0;left:0;right:0;z-index:500;display:flex;
  background:linear-gradient(180deg,rgba(26,26,62,.6) 0%,rgba(15,15,35,.94) 50%,rgba(15,15,35,.96) 100%);
  backdrop-filter:blur(28px) saturate(1.6);
  -webkit-backdrop-filter:blur(28px) saturate(1.6);
  border-top:1px solid rgba(167,139,250,.12);
  box-shadow:0 -8px 32px rgba(15,15,35,.4),inset 0 1px 0 rgba(255,255,255,.05);
  padding:6px 8px calc(6px + env(safe-area-inset-bottom,0px));
  transition:background .5s cubic-bezier(.4,0,.2,1),border-color .5s cubic-bezier(.4,0,.2,1),box-shadow .5s cubic-bezier(.4,0,.2,1)}
.bn-item{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;
  gap:3px;padding:6px 0;cursor:pointer;transition:color .35s cubic-bezier(.4,0,.2,1);
  color:rgba(255,255,255,.4);-webkit-tap-highlight-color:transparent;position:relative;
  z-index:1}
.bn-item .bn-icon{font-size:26px;line-height:1;
  transition:transform .4s cubic-bezier(.34,1.56,.64,1),filter .35s ease;
  display:flex;align-items:center;justify-content:center;width:24px;height:24px;overflow:hidden;padding:2px}
.bn-item .bn-icon svg{width:100%;height:100%;display:block;box-sizing:content-box}
.bn-item .bn-label{font-size:10px;font-weight:700;letter-spacing:.5px;
  transition:font-weight .3s ease,letter-spacing .3s ease}
.bn-item.active{color:#d8b4fe}
.bn-item.active .bn-icon{transform:scale(1.18) translateY(-2px);
  filter:drop-shadow(0 4px 12px rgba(192,132,252,.5))}
.bn-item.active .bn-label{font-weight:800;letter-spacing:.8px}
/* 滑动胶囊指示器 — 用 ::before 在 bottom-nav 上 */
.bottom-nav::before{content:'';position:absolute;top:8px;left:8px;
  width:calc((100% - 16px) / 4);height:calc(100% - 16px - env(safe-area-inset-bottom,0px));
  border-radius:14px;
  background:linear-gradient(135deg,rgba(167,139,250,.18),rgba(124,58,237,.12));
  border:1px solid rgba(167,139,250,.18);
  box-shadow:0 4px 16px rgba(124,58,237,.25),inset 0 1px 0 rgba(255,255,255,.1);
  backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);
  transition:left .55s cubic-bezier(.34,1.37,.64,1),width .55s cubic-bezier(.34,1.37,.64,1),background .5s ease,border-color .5s ease;
  z-index:0;pointer-events:none}
.bottom-nav[data-tab="vocab"]::before{left:calc(8px + (100% - 16px) / 40);width:calc((100% - 16px) / 5)}
.bottom-nav[data-tab="review"]::before{left:calc(8px + (100% - 16px) / 4 + (100% - 16px) / 40);width:calc((100% - 16px) / 5)}
.bottom-nav[data-tab="game"]::before{left:calc(8px + (100% - 16px) / 2 + (100% - 16px) / 40);width:calc((100% - 16px) / 5)}
.bottom-nav[data-tab="me"]::before{left:calc(8px + 3 * (100% - 16px) / 4 + (100% - 16px) / 40);width:calc((100% - 16px) / 5)}
/* 家长底部导航（2 个 tab）：胶囊宽度 = tab 的 80%，居中对齐图标 */
#bottomParentNav::before{width:calc((100% - 16px) * 2 / 5)}
#bottomParentNav[data-tab="child"]::before{left:calc(8px + (100% - 16px) / 20)}
#bottomParentNav[data-tab="me"]::before{left:calc(8px + 11 * (100% - 16px) / 20)}
.bn-item:not(.active):active{color:rgba(255,255,255,.6);transform:scale(.96)}
.bn-item:active .bn-icon{transform:scale(.92)}
/* 首页 Tab 面板 */
.home-tab-panel{display:none;flex-direction:column;align-items:center;width:100%;max-width:420px}
.home-tab-panel.active{display:flex}
/* 「我的」面板 — 旧卡片样式不再使用 */
.me-btn{width:100%;padding:13px 18px;border:1px solid rgba(255,255,255,.1);
  border-radius:14px;font-size:14px;font-weight:700;cursor:pointer;
  background:rgba(255,255,255,.05);color:rgba(255,255,255,.75);
  backdrop-filter:blur(10px);transition:all .2s cubic-bezier(.22,1,.36,1);
  text-align:left;letter-spacing:.3px;-webkit-tap-highlight-color:transparent;
  display:flex;align-items:center;gap:10px}
.me-btn svg.me-icon{width:18px;height:18px;flex-shrink:0;opacity:.85;transition:all .2s ease}
.me-btn:hover svg.me-icon{opacity:1;color:#a78bfa;transform:scale(1.08)}
.me-btn.danger:hover svg.me-icon{color:#ff9e9e}
@keyframes diamondPulse{0%,100%{transform:scale(1)}50%{transform:scale(1.06)}}
.me-parent-box .me-btn:first-child{font-size:16px!important}
.me-parent-box .me-btn:first-child svg.me-icon{width:26px;height:26px}
.me-parent-box .me-btn:first-child .diamond-inner{animation:diamondPulse 2s ease-in-out infinite;will-change:transform;display:inline-flex;align-items:center;gap:10px}
.me-parent-box .me-btn:first-child:hover .diamond-inner{animation:none}
.me-parent-box .me-btn:first-child:hover svg.me-icon{transform:scale(1.15)}
#meThemeBtn .me-icon-sun,#meThemeBtn[data-theme="light"] .me-icon-moon,#meThemeBtnP .me-icon-sun,#meThemeBtnP[data-theme="light"] .me-icon-moon{display:none}
#meThemeBtn[data-theme="light"] .me-icon-sun,#meThemeBtnP[data-theme="light"] .me-icon-sun{display:inline}
.me-btn:hover{background:rgba(167,139,250,.12);border-color:rgba(167,139,250,.25);
  color:#fff;transform:translateX(3px)}
.me-btn.danger:hover{background:rgba(255,80,80,.1);border-color:rgba(255,80,80,.25);color:#ff9e9e}
.me-btn.danger{color:rgba(255,140,140,.65)}
/* 我的面板：游客框（用户信息卡片） */
.me-card{display:flex;flex-direction:column;align-items:center;gap:6px;
  background:linear-gradient(165deg,rgba(167,139,250,.2) 0%,rgba(124,58,237,.14) 35%,rgba(167,139,250,.1) 65%,rgba(124,58,237,.18) 100%);
  backdrop-filter:blur(20px);
  border:1px solid rgba(167,139,250,.25);border-radius:24px;
  padding:22px 18px 18px;margin:4px 0 22px;width:100%;
  box-shadow:0 0 30px rgba(167,139,250,.35),0 0 60px rgba(124,58,237,.25),0 0 90px rgba(167,139,250,.18),inset 0 1px 0 rgba(255,255,255,.1);position:relative}
.me-card::after{content:'';position:absolute;left:50%;bottom:-28px;width:70%;height:50px;transform:translateX(-50%);border-radius:50%;background:radial-gradient(ellipse at center,rgba(167,139,250,.6) 0%,rgba(124,58,237,.3) 40%,transparent 70%);filter:blur(18px);z-index:-1;pointer-events:none}
/* 学习热力图入口卡片（词汇tab顶部）*/
.heat-card{display:none;flex-direction:column;align-items:center;justify-content:center;gap:4px;
  background:linear-gradient(165deg,rgba(167,139,250,.18) 0%,rgba(124,58,237,.12) 35%,rgba(167,139,250,.08) 65%,rgba(124,58,237,.15) 100%);
  backdrop-filter:blur(16px);border:1px solid rgba(167,139,250,.22);border-radius:18px;
  padding:18px 16px 16px;margin:0 0 12px;width:100%;max-width:420px;
  box-shadow:0 0 22px rgba(167,139,250,.25),0 0 40px rgba(124,58,237,.15),inset 0 1px 0 rgba(255,255,255,.06);
  cursor:pointer;transition:all .25s ease;position:relative}
.heat-card:hover{transform:translateY(-2px);box-shadow:0 0 30px rgba(167,139,250,.4),0 0 50px rgba(124,58,237,.25),inset 0 1px 0 rgba(255,255,255,.1)}
.heat-card-icon{font-size:36px;line-height:1;
  filter:drop-shadow(0 3px 8px rgba(0,0,0,.35));
  text-shadow:
    0 -1px 0 rgba(255,255,255,.3),
    0 1px 0 rgba(0,0,0,.15),
    0 2px 2px rgba(0,0,0,.25),
    0 4px 6px rgba(0,0,0,.15);
  transform:perspective(120px) rotateX(3deg) scale(1.05);
  transition:all .25s ease}
.heat-card:hover .heat-card-icon{transform:perspective(120px) rotateX(1deg) scale(1.1);filter:drop-shadow(0 4px 12px rgba(0,0,0,.4))}
.heat-card-title{color:#fff;font-size:16px;font-weight:800;letter-spacing:.6px}
.heat-card-sub{color:rgba(255,255,255,.5);font-size:12px;font-weight:500}
body[data-theme="light"] .heat-card{background:linear-gradient(165deg,rgba(124,58,237,.1),rgba(124,58,237,.04));
  border-color:rgba(124,58,237,.2);box-shadow:0 4px 20px rgba(124,58,237,.15)}
body[data-theme="light"] .heat-card:hover{box-shadow:0 8px 28px rgba(124,58,237,.25)}
body[data-theme="light"] .heat-card-title{color:#5b21b6}
body[data-theme="light"] .heat-card-sub{color:rgba(91,33,182,.5)}

/* ===== 复习面板 ===== */
.review-panel{display:none;flex-direction:column;gap:12px;width:100%;max-width:420px;margin:0 0 14px}
.review-header{color:rgba(255,255,255,.55);font-size:13px;font-weight:600;letter-spacing:.4px;padding:0 4px;display:flex;align-items:center}
body[data-theme="light"] .review-header{color:rgba(76,29,149,.6)}
.review-hero{
  position:relative;width:100%;border-radius:24px;
  background:linear-gradient(135deg,#5b21b6 0%,#7c3aed 45%,#6366f1 100%);
  padding:22px 22px;color:#fff;overflow:hidden;
  box-shadow:0 16px 40px rgba(91,33,182,.38),0 6px 20px rgba(99,102,241,.24);
}
.review-hero::before{content:'';position:absolute;top:-40%;right:-15%;width:55%;height:170%;
  background:radial-gradient(circle,rgba(255,255,255,.14) 0%,transparent 65%);pointer-events:none}
.review-hero::after{content:'';position:absolute;bottom:-45%;left:-8%;width:55%;height:150%;
  background:radial-gradient(circle,rgba(99,102,241,.24) 0%,transparent 65%);pointer-events:none}
.rh-top{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:14px;position:relative;z-index:1}
.rh-tag{display:inline-flex;align-items:center;gap:7px;background:rgba(0,0,0,.25);padding:6px 14px;border-radius:999px;font-size:12px;font-weight:700;
  letter-spacing:.4px;border:1px solid rgba(255,255,255,.1);color:#fff}
.rh-dot{width:7px;height:7px;border-radius:50%;background:#a7f3d0;box-shadow:0 0 10px rgba(167,243,208,.95),0 0 3px rgba(167,243,208,.6);
  animation:pulseDot 1.6s ease-in-out infinite;flex-shrink:0}
@keyframes pulseDot{0%,100%{opacity:1;transform:scale(1)}50%{opacity:.55;transform:scale(.78)}}
.rh-time{display:inline-flex;align-items:center;gap:5px;color:rgba(255,255,255,.88);font-size:12px;font-weight:600}
.rh-main{display:flex;align-items:baseline;gap:8px;position:relative;z-index:1;margin-bottom:8px}
.rh-num{font-size:48px;font-weight:900;line-height:1;letter-spacing:-1.5px;
  text-shadow:0 2px 0 rgba(0,0,0,.18),0 6px 16px rgba(0,0,0,.25),0 0 24px rgba(255,255,255,.15)}
.rh-unit{font-size:14px;font-weight:600;color:rgba(255,255,255,.92);transform:translateY(-2px);letter-spacing:.3px}
.rh-sub{font-size:12.5px;color:rgba(255,255,255,.85);margin-bottom:18px;position:relative;z-index:1;font-weight:500;letter-spacing:.2px}
.rh-sub strong{color:#fff;font-weight:800;font-size:14px;margin:0 2px;
  text-shadow:0 1px 3px rgba(0,0,0,.25),0 0 8px rgba(255,255,255,.2)}
.rh-btn{display:flex;align-items:center;justify-content:center;gap:7px;width:100%;padding:15px;
  background:linear-gradient(180deg,#ffffff 0%,#ede9fe 100%);color:#5b21b6;border:0;border-radius:999px;font-size:15px;font-weight:800;
  letter-spacing:.5px;cursor:pointer;transition:all .25s ease;position:relative;z-index:1;
  box-shadow:0 10px 24px rgba(0,0,0,.22),0 4px 8px rgba(91,33,182,.22)}
.rh-btn:hover{transform:translateY(-1px);box-shadow:0 14px 28px rgba(0,0,0,.26),0 6px 10px rgba(91,33,182,.26)}
.rh-btn:active{transform:translateY(0)}
.rh-btn:disabled{opacity:.5;cursor:not-allowed;transform:none}
body[data-theme="light"] .review-hero{box-shadow:0 16px 40px rgba(91,33,182,.28),0 6px 20px rgba(99,102,241,.18)}
body[data-theme="light"] .rh-btn{color:#5b21b6;background:linear-gradient(180deg,#ffffff 0%,#ede9fe 100%)}

/* 复习轨迹 7 天小热力图 */
.review-trail{width:100%;background:rgba(255,255,255,.04);backdrop-filter:blur(12px);
  -webkit-backdrop-filter:blur(12px);border:1px solid rgba(255,255,255,.06);
  border-radius:16px;padding:14px 14px 16px}
body[data-theme="light"] .review-trail{background:rgba(255,255,255,.5);border-color:rgba(124,58,237,.12);
  box-shadow:0 4px 14px rgba(124,58,237,.08)}
.trail-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}
.trail-title{display:inline-flex;align-items:center;gap:6px;color:#fff;font-size:13px;font-weight:700;letter-spacing:.3px}
body[data-theme="light"] .trail-title{color:#4c1d95}
.trail-more{color:rgba(255,255,255,.45);font-size:11px;font-weight:600;cursor:pointer;transition:color .2s}
.trail-more:hover{color:rgba(255,255,255,.75)}
body[data-theme="light"] .trail-more{color:rgba(76,29,149,.5)}
body[data-theme="light"] .trail-more:hover{color:rgba(76,29,149,.85)}
.trail-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:6px}
.trail-cell{aspect-ratio:1/1;border-radius:8px;background:rgba(255,255,255,.04);
  border:1px solid rgba(255,255,255,.05);display:flex;flex-direction:column;align-items:center;
  justify-content:center;position:relative;transition:all .2s}
.trail-cell.today{border-color:rgba(167,139,250,.55);box-shadow:0 0 0 1.5px rgba(167,139,250,.4)}
.trail-day{font-size:9px;color:rgba(255,255,255,.4);font-weight:600;letter-spacing:.3px;margin-bottom:2px}
.trail-cnt{font-size:11px;color:rgba(255,255,255,.85);font-weight:700}
.trail-cell.lvl-0{background:rgba(255,255,255,.04)}
.trail-cell.lvl-1{background:rgba(74,222,128,.18);border-color:rgba(74,222,128,.18)}
.trail-cell.lvl-2{background:rgba(74,222,128,.38);border-color:rgba(74,222,128,.3)}
.trail-cell.lvl-3{background:rgba(74,222,128,.62);border-color:rgba(74,222,128,.5)}
.trail-cell.lvl-4{background:rgba(74,222,128,.85);border-color:rgba(74,222,128,.7)}
.trail-cell .trail-cnt.lvl-light{color:rgba(255,255,255,.95)}
body[data-theme="light"] .trail-day{color:rgba(76,29,149,.5)}
body[data-theme="light"] .trail-cnt{color:#1e1b4b}
body[data-theme="light"] .trail-cell.lvl-0{background:rgba(124,58,237,.05);border-color:rgba(124,58,237,.08)}
body[data-theme="light"] .trail-cell.lvl-1{background:rgba(74,222,128,.25)}
body[data-theme="light"] .trail-cell.lvl-2{background:rgba(74,222,128,.45)}
body[data-theme="light"] .trail-cell.lvl-3{background:rgba(74,222,128,.68)}
body[data-theme="light"] .trail-cell.lvl-4{background:rgba(34,197,94,.85)}
.me-avatar{font-size:54px;line-height:1;filter:drop-shadow(0 4px 10px rgba(0,0,0,.3));
  animation:meBob 3s ease-in-out infinite}
@keyframes meBob{0%,100%{transform:translateY(0)}50%{transform:translateY(-4px)}}
.me-name{color:#fff;font-size:19px;font-weight:800;letter-spacing:.8px;text-align:center}
.me-coin{position:absolute;top:18px;right:18px;display:inline-flex;align-items:center;gap:6px;
  background:linear-gradient(90deg,#ffb700,#ff8800);
  border:1px solid rgba(255,255,255,.25);border-radius:20px;
  padding:5px 14px;font-size:13px;font-weight:800;color:#fff;
  text-shadow:0 1px 2px rgba(180,80,0,.5);
  box-shadow:0 0 16px rgba(255,180,0,.45),inset 0 1px 0 rgba(255,255,255,.3);
  letter-spacing:.5px;backdrop-filter:blur(8px)}
.me-coin::before{content:'¥';font-size:14px;color:#fff;text-shadow:0 1px 1px rgba(180,80,0,.4)}
body[data-theme="light"] .me-coin{background:linear-gradient(90deg,#f59e0b,#ea580c);border-color:rgba(255,255,255,.3)}
.me-card .streak-pill{display:inline-flex;margin:4px 0 0;
  background:linear-gradient(135deg,rgba(255,107,53,.25),rgba(255,80,80,.18));
  border:1px solid rgba(255,140,80,.45);color:#ffd0a0;
  font-size:12px;padding:5px 14px;border-radius:999px;font-weight:700;
  box-shadow:0 2px 10px rgba(255,107,53,.2);animation:streakPop .5s ease}
.me-card .streak-pill b{color:#fff;font-weight:800}
/* 家长面板的连续天数胶囊：当前未填充数据，只显示空红框，隐藏 */
#meStreakPillP{display:none!important}
body[data-theme="light"] .me-card{background:linear-gradient(165deg,rgba(167,139,250,.1) 0%,rgba(124,58,237,.06) 35%,rgba(167,139,250,.04) 65%,rgba(124,58,237,.08) 100%);
  border:1.5px solid rgba(124,58,237,.22);box-shadow:0 0 24px rgba(124,58,237,.15),0 0 50px rgba(124,58,237,.1);
  backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}
body[data-theme="light"] .me-name{color:#5b21b6}
body[data-theme="light"] .me-card .streak-pill{background:linear-gradient(135deg,rgba(255,107,53,.18),rgba(255,80,80,.1));
  border:1px solid rgba(255,140,80,.35);color:#c2410c}
body[data-theme="light"] .me-card .streak-pill b{color:#7c2d12}
/* 我的面板：列表 / 分隔符 / 家长专属 / 徽章 */
.me-list{display:flex;flex-direction:column;gap:6px;width:100%;margin-bottom:4px}
.me-sep{width:100%;height:1px;background:rgba(255,255,255,.12);margin:6px 0}
/* 虚线框标记家长专属功能 */
.me-parent-box{border:0;border-radius:16px;padding:0;margin:0;overflow:hidden;width:100%;box-sizing:border-box}
.me-parent-box .me-btn{border-radius:0}
.me-parent-box .me-btn:first-child{border-top-left-radius:14px;border-top-right-radius:14px}
.me-parent-box .me-btn:last-child{border-bottom-left-radius:14px;border-bottom-right-radius:14px}
.me-parent-box .me-list{padding:8px;margin:0}
/* 我的面板：醒目的退出登录按钮（位于最底部） */
.me-logout{width:100%;display:flex;align-items:center;gap:12px;padding:15px 18px;margin-top:16px;
  background:linear-gradient(135deg,rgba(255,107,107,.18),rgba(255,80,80,.12));
  border:1.5px solid rgba(255,107,107,.35);border-radius:16px;
  color:#ff9e9e;font-size:15px;font-weight:800;cursor:pointer;
  backdrop-filter:blur(12px);
  box-shadow:0 4px 16px rgba(255,80,80,.15),inset 0 1px 0 rgba(255,255,255,.06);
  transition:all .25s cubic-bezier(.22,1,.36,1);
  position:relative;overflow:hidden;-webkit-tap-highlight-color:transparent}
.me-logout::before{content:'';position:absolute;inset:0;
  background:linear-gradient(135deg,rgba(255,255,255,.18),transparent 50%);
  opacity:0;transition:opacity .25s;pointer-events:none}
.me-logout:hover{background:linear-gradient(135deg,rgba(255,107,107,.32),rgba(255,80,80,.24));
  border-color:rgba(255,107,107,.6);color:#fff;transform:translateY(-2px);
  box-shadow:0 8px 24px rgba(255,80,80,.35),inset 0 1px 0 rgba(255,255,255,.12)}
.me-logout:hover::before{opacity:1}
.me-logout:active{transform:translateY(0) scale(.98)}
.me-logout-icon{font-size:22px;line-height:1;flex-shrink:0;
  filter:drop-shadow(0 2px 6px rgba(255,80,80,.45));
  animation:logoutSwing 2s ease-in-out infinite}
@keyframes logoutSwing{0%,100%{transform:rotate(0)}25%{transform:rotate(-8deg)}75%{transform:rotate(8deg)}}
.me-logout-text{flex:1;text-align:left;letter-spacing:.5px}
.me-logout-arrow{font-size:20px;color:rgba(255,158,158,.6);font-weight:400;flex-shrink:0;
  transition:transform .25s,color .25s}
.me-logout:hover .me-logout-arrow{color:#fff;transform:translateX(4px)}
/* 浅色主题下的退出按钮 */
body[data-theme="light"] .me-logout{background:linear-gradient(135deg,rgba(255,107,107,.1),rgba(255,80,80,.06));
  border:1.5px solid rgba(255,107,107,.35);color:#dc2626;
  box-shadow:0 4px 14px rgba(255,80,80,.12)}
body[data-theme="light"] .me-logout:hover{background:linear-gradient(135deg,rgba(255,107,107,.2),rgba(255,80,80,.14));
  border-color:rgba(255,107,107,.55);color:#b91c1c;
  box-shadow:0 8px 22px rgba(255,80,80,.25)}
body[data-theme="light"] .me-logout-arrow{color:rgba(220,38,38,.5)}
body[data-theme="light"] .me-logout:hover .me-logout-arrow{color:#b91c1c}
/* 通用隐私/帮助/升级 弹窗 — 紫色梵高星空风格 */
.info-mask{position:fixed;inset:0;background:radial-gradient(ellipse at 65% 20%,rgba(130,70,200,.45) 0%,transparent 35%),radial-gradient(ellipse at 25% 50%,rgba(100,50,180,.35) 0%,transparent 30%),radial-gradient(ellipse at 80% 70%,rgba(110,60,190,.3) 0%,transparent 25%),radial-gradient(ellipse at center,rgba(20,8,45,.97) 0%,rgba(10,4,28,.98) 100%);backdrop-filter:blur(14px);z-index:1000;display:none;align-items:center;justify-content:center;overflow:hidden;animation:infoDream 8s ease-in-out infinite alternate}
@keyframes infoDream{
  0%{background-position:0% 0%,0% 0%,0% 0%,0% 0%,center}
  50%{background-position:30% 12%,-12% 22%,6% 60%,42% 40%,center}
  100%{background-position:12% 6%,10% -8%,28% 52%,-14% 30%,center}
}
body[data-theme="light"] .info-mask{
  background:
    /* 4 块柔和极光色斑 — 对应深色模式的四角氛围 */
    radial-gradient(ellipse 55% 75% at 22% 22%,rgba(196,181,253,.42) 0%,transparent 55%),
    radial-gradient(ellipse 55% 75% at 78% 28%,rgba(254,215,170,.22) 0%,transparent 55%),
    radial-gradient(ellipse 65% 75% at 25% 78%,rgba(252,211,232,.28) 0%,transparent 55%),
    radial-gradient(ellipse 65% 75% at 82% 75%,rgba(167,243,208,.18) 0%,transparent 55%),
    /* 主体暖紫白渐变（与首页背景呼应） */
    linear-gradient(135deg,rgba(240,235,250,.82) 0%,rgba(245,240,252,.88) 50%,rgba(252,245,250,.82) 100%);
  backdrop-filter:blur(24px) saturate(1.6);
  -webkit-backdrop-filter:blur(24px) saturate(1.6)}
/* ===== 桃花瓣（动态生成） ===== */
.petal-layer{position:absolute;inset:0;pointer-events:none;z-index:0;
  background-repeat:no-repeat;
  animation:petalSway 5s ease-in-out infinite alternate}
@keyframes petalSway{
  0%{transform:translateX(-8px) translateY(-2px) rotate(-4deg)}
  50%{transform:translateX(10px) translateY(-9px) rotate(6deg)}
  100%{transform:translateX(-6px) translateY(8px) rotate(-5deg)}
}
/* 浅色模式隐藏深色的星星，改用 JS 动态花瓣 */
body[data-theme="light"] .info-mask::before,
body[data-theme="light"] .del-mask::before{display:none!important}
@keyframes petalSway{
  0%{transform:translateX(-8px) translateY(-2px) rotate(-4deg)}
  50%{transform:translateX(10px) translateY(-9px) rotate(6deg)}
  100%{transform:translateX(-6px) translateY(8px) rotate(-5deg)}
}
.info-mask::before{content:'';position:absolute;inset:0;pointer-events:none;z-index:0;
  background-image:
    radial-gradient(4.5px 4.5px at 15% 10%,rgba(255,230,255,.85),transparent),
    radial-gradient(3.5px 3.5px at 30% 20%,rgba(220,200,255,.65),transparent),
    radial-gradient(2.5px 2.5px at 48% 8%,rgba(250,220,255,.55),transparent),
    radial-gradient(4.5px 4.5px at 62% 22%,rgba(200,180,255,.75),transparent),
    radial-gradient(2.5px 2.5px at 80% 15%,rgba(240,210,255,.5),transparent),
    radial-gradient(3.5px 3.5px at 92% 5%,rgba(220,200,255,.65),transparent),
    radial-gradient(2.5px 2.5px at 8% 28%,rgba(210,190,255,.5),transparent),
    radial-gradient(3.5px 3.5px at 20% 45%,rgba(255,230,255,.55),transparent),
    radial-gradient(2.5px 2.5px at 38% 35%,rgba(190,180,255,.4),transparent),
    radial-gradient(4.5px 4.5px at 55% 28%,rgba(250,220,255,.75),transparent),
    radial-gradient(2.5px 2.5px at 70% 42%,rgba(210,200,255,.5),transparent),
    radial-gradient(3.5px 3.5px at 85% 32%,rgba(230,200,255,.55),transparent),
    radial-gradient(2.5px 2.5px at 96% 42%,rgba(190,180,255,.4),transparent),
    radial-gradient(3.5px 3.5px at 12% 58%,rgba(255,230,255,.5),transparent),
    radial-gradient(2.5px 2.5px at 25% 72%,rgba(210,190,255,.4),transparent),
    radial-gradient(4.5px 4.5px at 42% 52%,rgba(240,210,255,.65),transparent),
    radial-gradient(2.5px 2.5px at 58% 65%,rgba(190,200,255,.5),transparent),
    radial-gradient(3.5px 3.5px at 75% 58%,rgba(250,220,255,.55),transparent),
    radial-gradient(2.5px 2.5px at 90% 68%,rgba(210,200,255,.4),transparent),
    radial-gradient(3.5px 3.5px at 18% 82%,rgba(255,230,255,.5),transparent),
    radial-gradient(2.5px 2.5px at 35% 88%,rgba(190,180,255,.4),transparent),
    radial-gradient(4.5px 4.5px at 52% 78%,rgba(230,200,255,.6),transparent),
    radial-gradient(2.5px 2.5px at 68% 85%,rgba(210,190,255,.45),transparent),
    radial-gradient(3.5px 3.5px at 82% 80%,rgba(255,230,255,.55),transparent),
    radial-gradient(2.5px 2.5px at 95% 88%,rgba(190,200,255,.4),transparent);
  animation:starGlow 1.8s ease-in-out infinite alternate,starDrift 8s ease-in-out infinite alternate}
.info-mask.show{display:flex}
.info-box{background:linear-gradient(135deg,#2d1b69,#764ba2);
  border:1px solid rgba(255,255,255,.18);border-radius:20px;padding:26px 22px 22px;
  max-width:380px;width:90%;color:#fff;box-shadow:0 24px 80px rgba(0,0,0,.5);
  animation:pi .4s cubic-bezier(.34,1.56,.64,1);max-height:80vh;overflow-y:auto;position:relative;
  scrollbar-width:none;-ms-overflow-style:none}
.info-box::-webkit-scrollbar{width:0;height:0;display:none}
/* 花瓣容器（HTML 中永久存在，JS 仅更新 background） */
.petal-layer{position:absolute;inset:0;pointer-events:none;z-index:0;background-repeat:no-repeat;display:none;
  animation:petalSway 4s ease-in-out infinite alternate}
body[data-theme="light"] .petal-layer{display:block}
.info-title{font-size:18px;font-weight:800;margin:0 0 10px;display:flex;align-items:center;gap:8px}
.info-close-x{position:absolute;top:12px;right:14px;width:28px;height:28px;display:flex;align-items:center;justify-content:center;font-size:18px;color:rgba(255,255,255,.4);cursor:pointer;border-radius:6px;transition:all .2s;z-index:2}
.info-close-x:hover{color:#fff;background:rgba(255,255,255,.1)}
body[data-theme="light"] .info-close-x{color:rgba(124,58,237,.4)}
body[data-theme="light"] .info-close-x:hover{color:#5b21b6;background:rgba(124,58,237,.08)}
.info-body{font-size:13px;line-height:1.7;color:rgba(255,255,255,.85);margin:0 0 14px}
.info-body b{color:#fff}
.info-list{list-style:none;padding:0;margin:0 0 14px}
.info-list li{padding:8px 10px;margin-bottom:4px;background:rgba(255,255,255,.06);
  border-radius:10px;font-size:12px;display:flex;justify-content:space-between;align-items:center}
.info-list .ach-icon{font-size:20px;margin-right:6px}
.info-list .ach-locked{opacity:.4;filter:grayscale(.8)}
.info-actions{display:flex;gap:8px;margin-top:6px}
.info-actions .btn{flex:1}
.info-actions .btn-cancel{background:linear-gradient(135deg,rgba(255,255,255,.14),rgba(255,255,255,.06))!important;
  color:#fff!important;border:1px solid rgba(255,255,255,.18);border-radius:14px;padding:12px 22px;
  font-weight:700;letter-spacing:.5px;
  box-shadow:0 4px 14px rgba(0,0,0,.18),inset 0 1px 0 rgba(255,255,255,.1);
  transition:all .25s cubic-bezier(.22,1,.36,1)}
.info-actions .btn-cancel:hover{background:linear-gradient(135deg,rgba(255,255,255,.22),rgba(255,255,255,.12))!important;
  border-color:rgba(255,255,255,.32);transform:translateY(-1px);
  box-shadow:0 6px 18px rgba(0,0,0,.25),inset 0 1px 0 rgba(255,255,255,.15)}
/* 学生码弹窗 */
.sc-code-area{display:flex;align-items:center;gap:12px;justify-content:center;margin:8px 0}
.sc-code-box{background:rgba(0,0,0,.35);border:2px solid rgba(102,126,234,.4);border-radius:16px;padding:14px 24px;min-width:140px;text-align:center;transition:border-color .3s,border .3s}
.sc-code-box.expiring{border-color:rgba(255,160,60,.7);animation:scPulse .6s ease-in-out infinite}
.sc-code-box.expired{border-color:rgba(255,90,90,.4);opacity:.55}
.sc-code-box.bound{border-color:rgba(100,255,140,.65);animation:scBound .6s ease-in-out infinite}
.sc-code-box.bound~.sc-timer{color:rgba(100,255,140,.95)}
@keyframes scBound{
  0%,100%{box-shadow:0 0 6px rgba(100,255,140,.2)}
  50%{box-shadow:0 0 18px rgba(100,255,140,.5)}
}
.sc-code-text{font-size:36px;font-weight:900;letter-spacing:8px;color:#fff;font-family:Consolas,Monaco,'Courier New',monospace;text-transform:uppercase}
.sc-timer{font-size:20px;font-weight:800;color:rgba(102,126,234,.9);background:rgba(102,126,234,.12);border-radius:12px;padding:6px 14px;min-width:60px;text-align:center;transition:color .3s}
.sc-code-box.expiring~.sc-timer{color:rgba(255,160,60,.95)}
.sc-code-box.expired~.sc-timer{color:rgba(255,90,90,.6)}
@keyframes scPulse{
  0%,100%{box-shadow:0 0 6px rgba(255,160,60,.15)}
  50%{box-shadow:0 0 18px rgba(255,160,60,.45)}
}
/* 浅色主题学生码弹窗 */
body[data-theme="light"] .sc-code-box{background:rgba(124,58,237,.06);border-color:rgba(124,58,237,.25)}
body[data-theme="light"] .sc-code-text{color:#5b21b6}
body[data-theme="light"] .sc-timer{color:rgba(124,58,237,.9);background:rgba(124,58,237,.1)}
body[data-theme="light"] .sc-code-box.expiring{border-color:rgba(220,120,30,.5)}
body[data-theme="light"] .sc-code-box.expiring~.sc-timer{color:rgba(200,90,20,.9)}
body[data-theme="light"] .sc-code-box.bound{border-color:rgba(16,185,129,.6)}
body[data-theme="light"] .sc-code-box.bound~.sc-timer{color:rgba(16,185,129,.9)}
/* 学生码复制按钮（与计时框同列，垂直排列在码框右侧） */
.sc-side{display:flex;flex-direction:column;align-items:center;gap:8px;flex-shrink:0}
.sc-copy-btn{background:rgba(102,126,234,.18);border:1.5px solid rgba(102,126,234,.4);border-radius:12px;padding:8px 14px;color:rgba(180,195,255,.95);font-size:13px;font-weight:700;cursor:pointer;letter-spacing:.5px;display:inline-flex;align-items:center;gap:6px;transition:all .25s cubic-bezier(.22,1,.36,1);min-width:74px;justify-content:center}
.sc-copy-btn:hover:not(:disabled){background:rgba(102,126,234,.3);border-color:rgba(102,126,234,.65);color:#fff;transform:translateY(-1px);box-shadow:0 4px 14px rgba(102,126,234,.3)}
.sc-copy-btn:active:not(:disabled){transform:translateY(0) scale(.97)}
.sc-copy-btn:disabled{opacity:.35;cursor:not-allowed}
.sc-copy-btn.copied{background:rgba(67,233,123,.22);border-color:rgba(67,233,123,.6);color:#43e97b;animation:scCopyBounce .45s cubic-bezier(.22,1,.36,1)}
@keyframes scCopyBounce{0%{transform:scale(1)}40%{transform:scale(1.12)}100%{transform:scale(1)}}
body[data-theme="light"] .sc-copy-btn{background:rgba(124,58,237,.1);border-color:rgba(124,58,237,.3);color:#5b21b6}
body[data-theme="light"] .sc-copy-btn:hover:not(:disabled){background:rgba(124,58,237,.2);border-color:rgba(124,58,237,.55);color:#4c1d95;box-shadow:0 4px 14px rgba(124,58,237,.25)}
body[data-theme="light"] .sc-copy-btn.copied{background:rgba(34,139,80,.12);border-color:rgba(34,139,80,.5);color:#228b50}
/* 学生码绑定（家长端）输入框 */
.sc-input-wrap{display:flex;justify-content:center;margin:8px 0}
.bind-code-input{width:160px;padding:12px 16px;border:2px solid rgba(102,126,234,.4);border-radius:14px;background:rgba(0,0,0,.35);color:#fff;font-size:28px;font-weight:900;letter-spacing:8px;text-align:center;font-family:Consolas,Monaco,'Courier New',monospace;outline:none;transition:border .25s;text-transform:uppercase}
.bind-code-input:focus{border-color:rgba(102,126,234,.8);box-shadow:0 0 12px rgba(102,126,234,.25)}
.bind-code-input.empty{color:rgba(255,255,255,.35);font-weight:400;font-size:18px;letter-spacing:12px;caret-color:transparent}
.bind-success-box{display:flex;flex-direction:column;align-items:center;gap:6px;padding:16px;background:rgba(100,255,140,.08);border:1.5px solid rgba(100,255,140,.25);border-radius:16px;margin-bottom:4px}
.bind-success-icon{font-size:36px}
.bind-student-name{font-size:24px;font-weight:900;color:#fff;letter-spacing:2px}
body[data-theme="light"] .bind-code-input{background:rgba(124,58,237,.06);border-color:rgba(124,58,237,.25);color:#5b21b6}
body[data-theme="light"] .bind-code-input:focus{border-color:rgba(124,58,237,.6);box-shadow:0 0 12px rgba(124,58,237,.2)}
body[data-theme="light"] .bind-code-input.empty{color:rgba(124,58,237,.35);caret-color:transparent}
body[data-theme="light"] .bind-success-box{background:rgba(100,255,140,.1);border-color:rgba(100,255,140,.3)}
/* 解绑弹窗 - 密码输入框（继承 name-input 玻璃质感，去掉姓名输入的大字号，加密码字间距） */
.unbind-input-wrap{width:100%;max-width:280px;margin:0 auto;padding:4px 0}
.unbind-pwd-input{font-size:16px;font-weight:600;letter-spacing:2px;text-align:center;padding:14px 16px;border-radius:14px}
.unbind-pwd-input::placeholder{font-weight:500;letter-spacing:.5px;color:rgba(255,255,255,.4)}
body[data-theme="light"] .unbind-pwd-input{background:rgba(124,58,237,.06)!important;border-color:rgba(124,58,237,.2)!important;color:#5b21b6!important}
body[data-theme="light"] .unbind-pwd-input::placeholder{color:rgba(124,58,237,.4)!important}
body[data-theme="light"] .unbind-pwd-input:focus{border-color:rgba(167,139,250,.5)!important;background:rgba(124,58,237,.1)!important}
body[data-theme="light"] .bind-student-name{color:#5b21b6}
/* ===== 家长-孩子页：名字卡片 + 切换按钮 ===== */
.pc-card{display:flex;align-items:center;gap:14px;position:relative;
  background:rgba(139,126,220,.13);
  border:1px solid rgba(255,255,255,.06);border-radius:16px;
  padding:14px 16px;width:100%;margin:0 0 14px;box-sizing:border-box;
  backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}
.pc-card:hover{background:rgba(139,126,220,.19);border-color:rgba(255,255,255,.12)}
.pc-avatar{font-size:40px;line-height:1;filter:drop-shadow(0 4px 10px rgba(0,0,0,.3))}
.pc-info{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px}
.pc-name{font-size:18px;font-weight:800;color:#fff;letter-spacing:.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pc-status{display:inline-flex;align-items:center;gap:6px;font-size:11.5px;font-weight:600;letter-spacing:.5px;padding:2px 0}
.pc-status-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0;transition:background .25s,box-shadow .25s}
.pc-status.online .pc-status-dot{background:#43e97b;box-shadow:0 0 8px rgba(67,233,123,.55),0 0 0 3px rgba(67,233,123,.15);animation:pcPulse 2s ease-in-out infinite}
.pc-status.online .pc-status-text{color:#43e97b}
.pc-status.offline .pc-status-dot{background:rgba(160,160,180,.6);box-shadow:0 0 0 2px rgba(160,160,180,.12)}
.pc-status.offline .pc-status-text{color:rgba(255,255,255,.5)}
@keyframes pcPulse{0%,100%{box-shadow:0 0 8px rgba(67,233,123,.55),0 0 0 3px rgba(67,233,123,.15)}50%{box-shadow:0 0 14px rgba(67,233,123,.85),0 0 0 6px rgba(67,233,123,.08)}}
/* 切换按钮：卡片右侧 */
.pc-switch-btn{display:inline-flex;align-items:center;gap:5px;padding:9px 14px;border-radius:12px;border:1.5px solid rgba(167,139,250,.45);background:rgba(167,139,250,.18);color:#e4d8ff;font-size:13px;font-weight:700;cursor:pointer;transition:all .25s cubic-bezier(.22,1,.36,1);flex-shrink:0}
.pc-switch-btn:hover{background:rgba(167,139,250,.32);border-color:rgba(167,139,250,.75);color:#fff;transform:translateY(-1px);box-shadow:0 4px 14px rgba(167,139,250,.35)}
.pc-switch-btn:active{transform:translateY(0) scale(.96)}
.pc-empty{flex-direction:column;align-items:center;gap:10px;width:100%;margin:40px 0;padding:36px 20px;background:rgba(139,126,220,.1);border:1px dashed rgba(167,139,250,.3);border-radius:16px;text-align:center;box-sizing:border-box}
.pc-empty-icon{font-size:44px;opacity:.7}
.pc-empty p{color:rgba(255,255,255,.55);font-size:14px;margin:0 0 4px}
/* ===== 家长-孩子页：数据看板（照搬设计稿）===== */
/* 顶部双统计卡 */
.pc-stats-row{display:flex;gap:10px;margin:0 0 14px;width:100%;box-sizing:border-box;align-self:stretch}
.pc-stat-card{flex:1;background:rgba(139,126,220,.13);border:1px solid rgba(255,255,255,.06);border-radius:16px;padding:14px 14px 12px;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}
.pc-stat-head{display:flex;align-items:center;gap:8px;margin-bottom:10px}
.pc-stat-icon{width:26px;height:26px;border-radius:7px;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0}
.pc-stat-icon svg{width:15px;height:15px}
.pc-stat-icon-blue{background:rgba(59,130,246,.15);color:#60a5fa}
.pc-stat-icon-orange{background:rgba(245,158,11,.15);color:#fbbf24}
.pc-stat-label{font-size:13px;font-weight:600;color:rgba(255,255,255,.65);letter-spacing:.3px}
.pc-stat-value{display:flex;align-items:baseline;gap:5px;margin-bottom:8px}
.pc-stat-value b{font-size:28px;font-weight:800;color:#fff;letter-spacing:-.5px;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif}
.pc-stat-unit{font-size:13px;color:rgba(255,255,255,.55);font-weight:500}
.pc-stat-badge{display:inline-flex;align-items:center;font-size:11.5px;font-weight:600;padding:3px 8px;border-radius:6px}
.pc-badge-up{background:rgba(34,197,94,.15);color:#22c55e;border:1px solid rgba(34,197,94,.25)}
.pc-stat-foot{font-size:11.5px;color:rgba(251,191,36,.85);font-weight:500}
.pc-stat-foot b{color:#fbbf24;font-weight:800}
/* 今日任务卡 */
.pc-task-card{background:rgba(139,126,220,.13);border:1px solid rgba(255,255,255,.06);border-radius:16px;padding:16px 16px 18px;margin:0 0 14px;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);align-self:stretch}
.pc-task-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}
.pc-task-title{display:flex;align-items:center;gap:8px;font-size:16px;font-weight:700;color:#fff}
.pc-task-icon{width:26px;height:26px;border-radius:7px;background:rgba(175,82,222,.18);color:#c084fc;display:inline-flex;align-items:center;justify-content:center}
.pc-task-icon svg{width:15px;height:15px}
.pc-task-progress{font-size:12.5px;font-weight:600;color:rgba(255,255,255,.5)}
.pc-task-body{display:flex;gap:18px;align-items:center}
.pc-task-ring{position:relative;width:92px;height:92px;flex-shrink:0;display:flex;align-items:center;justify-content:center}
.pc-task-ring-text{position:absolute;text-align:center}
.pc-task-ring-num{font-size:22px;font-weight:800;color:#fff;line-height:1;font-family:-apple-system,BlinkMacSystemFont,'SF Pro Display','Segoe UI',Roboto,sans-serif;letter-spacing:-.5px}
.pc-task-ring-total{font-size:10px;color:rgba(255,255,255,.45);margin-top:2px;font-weight:500;letter-spacing:.3px}
.pc-task-bars{flex:1;display:flex;flex-direction:column;gap:12px;min-width:0}
.pc-task-bar-label{font-size:12px;color:rgba(255,255,255,.7);font-weight:600;margin-bottom:6px;display:flex;align-items:center;gap:4px}
.pc-task-bar-label span{color:rgba(255,255,255,.4);font-weight:500;font-size:11px}
.pc-task-bar-row{display:flex;align-items:center;gap:8px}
.pc-task-bar-num{font-size:14px;font-weight:700;min-width:28px;font-family:-apple-system,BlinkMacSystemFont,'SF Pro Display','Segoe UI',Roboto,sans-serif;letter-spacing:-.3px}
.pc-num-blue{color:#5AC8FA}
.pc-num-green{color:#30D158}
.pc-task-bar-track{flex:1;height:8px;background:rgba(255,255,255,.07);border-radius:999px;overflow:hidden;position:relative}
.pc-task-bar-fill{height:100%;border-radius:999px;transition:width .5s ease}
.pc-fill-blue{background:linear-gradient(90deg,#0A84FF 0%,#5AC8FA 100%);box-shadow:0 0 8px rgba(90,200,250,.35)}
.pc-fill-green{background:linear-gradient(90deg,#30D158 0%,#66D4CF 100%);box-shadow:0 0 8px rgba(48,209,88,.3)}
.pc-task-bar-total{font-size:11.5px;color:rgba(255,255,255,.4);font-weight:500;min-width:42px;text-align:right;letter-spacing:.3px}
/* 近7天趋势卡 */
.pc-trend-card{background:rgba(139,126,220,.13);border:1px solid rgba(255,255,255,.06);border-radius:16px;padding:16px 16px 14px;margin:0 0 14px;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);align-self:stretch}
.pc-trend-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}
.pc-trend-title{display:flex;align-items:center;gap:8px;font-size:16px;font-weight:700;color:#fff}
.pc-trend-icon{width:26px;height:26px;border-radius:7px;background:rgba(245,158,11,.15);color:#fbbf24;display:inline-flex;align-items:center;justify-content:center}
.pc-trend-icon svg{width:15px;height:15px}
.pc-trend-chart{position:relative;margin:0 -4px}
.pc-trend-chart svg{display:block}
.pc-trend-y{position:absolute;left:-2px;top:0;bottom:22px;width:24px;display:flex;flex-direction:column;justify-content:space-between;font-size:11px;color:rgba(255,255,255,.7);font-weight:600;pointer-events:none;letter-spacing:.3px}
.pc-trend-x{display:grid;grid-template-columns:repeat(7,1fr);font-size:11px;color:rgba(255,255,255,.7);font-weight:600;padding:4px 0 0;margin-top:2px;letter-spacing:.3px}
.pc-trend-x span{text-align:center}
.pc-trend-legend{display:inline-flex;gap:12px;align-items:center}
.pc-legend-item{display:inline-flex;align-items:center;gap:5px;font-size:11px;color:rgba(255,255,255,.6);font-weight:600;letter-spacing:.3px}
.pc-legend-dot{width:7px;height:7px;border-radius:50%;flex-shrink:0;box-shadow:0 0 6px currentColor}
body[data-theme="light"] .pc-legend-item{color:rgba(91,33,182,.7)}
/* 趋势图圆圈 tooltip */
.pc-trend-tooltip{position:fixed;transform:translate(-50%,-100%);background:rgba(20,18,32,.96);color:#fff;font-size:11px;padding:6px 10px;border-radius:8px;pointer-events:none;opacity:0;transition:opacity .15s,transform .15s;z-index:9999;display:flex;gap:6px;align-items:baseline;font-weight:600;border:1px solid rgba(255,255,255,.12);box-shadow:0 6px 18px rgba(0,0,0,.45);white-space:nowrap;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}
.pc-trend-tooltip.show{opacity:1;transform:translate(-50%,calc(-100% - 4px))}
.pc-trend-tooltip b{font-size:14px;font-weight:800;font-family:-apple-system,BlinkMacSystemFont,'SF Pro Display','Segoe UI',Roboto,sans-serif;letter-spacing:-.3px}
.pc-trend-tooltip .k{color:rgba(255,255,255,.55);font-weight:500;font-size:10px;letter-spacing:.3px}
.pc-trend-tooltip .d{color:rgba(255,255,255,.4);font-weight:500;font-size:10px;padding-left:6px;border-left:1px solid rgba(255,255,255,.15)}
.pc-trend-dot{cursor:pointer;transition:r .2s ease}
.pc-trend-dot:hover{filter:drop-shadow(0 0 6px currentColor)}
body[data-theme="light"] .pc-trend-tooltip{background:rgba(255,255,255,.96);color:#4c1d95;border:1px solid rgba(124,58,237,.2)}
body[data-theme="light"] .pc-trend-tooltip .k{color:rgba(91,33,182,.65)}
body[data-theme="light"] .pc-trend-tooltip .d{color:rgba(91,33,182,.5);border-left-color:rgba(124,58,237,.2)}
/* ===== 制定计划：灵动岛展开 ===== */
.pc-plan-btn{display:inline-flex;align-items:center;gap:5px;padding:7px 13px;border-radius:11px;border:1.5px solid rgba(167,139,250,.45);background:rgba(167,139,250,.18);color:#e4d8ff;font-size:12.5px;font-weight:700;cursor:pointer;transition:all .25s cubic-bezier(.22,1,.36,1);flex-shrink:0}
.pc-plan-btn:hover{background:rgba(167,139,250,.32);border-color:rgba(167,139,250,.75);color:#fff;transform:translateY(-1px);box-shadow:0 4px 14px rgba(167,139,250,.35)}
.pc-plan-btn:active{transform:translateY(0) scale(.96)}
body[data-theme="light"] .pc-plan-btn{background:rgba(124,58,237,.1);border-color:rgba(124,58,237,.35);color:#5b21b6}
body[data-theme="light"] .pc-plan-btn:hover{background:rgba(124,58,237,.2);border-color:rgba(124,58,237,.6);color:#4c1d95}
/* 灵动岛遮罩（点击遮罩不关闭，保持灵动感） */
.plan-overlay{position:fixed;inset:0;z-index:2000;display:none;align-items:center;justify-content:center;background:rgba(8,6,18,.35);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px)}
/* 灵动岛面板：几何属性用 iOS 弹簧曲线（overshoot 回弹） */
.plan-panel{position:fixed;z-index:2001;display:flex;flex-direction:column;overflow:hidden;
  background:linear-gradient(175deg,rgba(88,68,148,.97) 0%,rgba(62,46,110,.97) 45%,rgba(46,34,88,.97) 100%);
  color:#fff;
  box-shadow:0 0 0 1px rgba(167,139,250,.3),0 30px 90px rgba(20,10,50,.5),inset 0 1px 0 rgba(255,255,255,.12),inset 0 -1px 0 rgba(255,255,255,.04);
  backdrop-filter:blur(20px) saturate(1.4);-webkit-backdrop-filter:blur(20px) saturate(1.4);
  transition:left .65s cubic-bezier(.34,1.56,.64,1),top .65s cubic-bezier(.34,1.56,.64,1),width .65s cubic-bezier(.34,1.56,.64,1),height .65s cubic-bezier(.34,1.56,.64,1),border-radius .65s cubic-bezier(.34,1.56,.64,1),opacity .4s ease}
/* 顶部玻璃高光线 */
.plan-panel::before{content:'';position:absolute;top:0;left:8%;right:8%;height:1px;background:linear-gradient(90deg,transparent,rgba(255,255,255,.5),transparent);pointer-events:none;z-index:2}
.plan-head{display:flex;align-items:center;justify-content:space-between;padding:18px 22px 14px;flex-shrink:0;opacity:0;transition:opacity .25s ease}
.plan-panel.open .plan-head{opacity:1}
.plan-title{font-size:19px;font-weight:800;letter-spacing:.3px;color:#fff}
.plan-close{width:30px;height:30px;border-radius:50%;border:none;background:rgba(255,255,255,.1);color:#fff;font-size:15px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .2s}
.plan-close:hover{background:rgba(255,255,255,.2)}
.plan-body{flex:1;padding:0 22px 22px;overflow-y:auto;opacity:0;transform:translateY(12px);transition:opacity .3s ease .35s,transform .4s cubic-bezier(.22,1,.36,1) .35s;scrollbar-width:none;-ms-overflow-style:none}
.plan-panel.open .plan-body{opacity:1;transform:translateY(0)}
.plan-body::-webkit-scrollbar{display:none;width:0;height:0}
.plan-card{background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.1);border-radius:14px;padding:14px 14px 12px;margin-bottom:14px}
.plan-card-title{font-size:14px;font-weight:700;color:#fff;margin-bottom:12px;display:flex;align-items:center;gap:8px;letter-spacing:.3px}
.plan-card-ico{width:26px;height:26px;border-radius:8px;display:inline-flex;align-items:center;justify-content:center;font-size:13px;flex-shrink:0}
.plan-ico-new{background:rgba(10,132,255,.18);box-shadow:inset 0 0 0 1px rgba(10,132,255,.25)}
.plan-ico-review{background:rgba(255,159,10,.18);box-shadow:inset 0 0 0 1px rgba(255,159,10,.25)}
.plan-items{display:flex;flex-direction:column;gap:9px;margin-bottom:10px}
.plan-item{display:flex;align-items:center;gap:8px}
.plan-item-bank{flex:1;min-width:0;display:flex;align-items:center;justify-content:space-between;padding:10px 12px;border-radius:10px;border:1px solid rgba(255,255,255,.12);background:rgba(255,255,255,.07);color:#fff;font-size:13px;font-weight:600;cursor:pointer;transition:all .2s}
.plan-item-bank:hover{border-color:rgba(167,139,250,.55);background:rgba(167,139,250,.13)}
.plan-item-bank-name{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.plan-item-bank svg{width:13px;height:13px;color:rgba(255,255,255,.5);flex-shrink:0}
.plan-item-num{width:58px;padding:10px 8px;border-radius:10px;border:1.5px solid rgba(167,139,250,.4);background:rgba(167,139,250,.12);color:#fff;font-size:16px;font-weight:800;text-align:center;font-family:-apple-system,BlinkMacSystemFont,'SF Pro Display','Segoe UI',Roboto,sans-serif;outline:none;transition:all .2s;caret-color:#c4b5fd;flex-shrink:0}
.plan-item-num:focus{border-color:rgba(167,139,250,.85);background:rgba(167,139,250,.18);box-shadow:0 0 0 3px rgba(167,139,250,.15)}
.plan-item-num::-webkit-outer-spin-button,.plan-item-num::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}
.plan-item-num[type=number]{-moz-appearance:textfield;appearance:textfield}
.plan-item-unit{font-size:11px;color:rgba(255,255,255,.45);font-weight:600;flex-shrink:0}
.plan-item-del{width:26px;height:26px;border-radius:8px;border:none;background:rgba(255,90,90,.14);color:#ff8a8a;font-size:12px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s;flex-shrink:0}
.plan-item-del:hover{background:rgba(255,90,90,.3);color:#fff}
.plan-item-del-sp{width:26px;flex-shrink:0}
.plan-add-btn{width:100%;padding:10px;border-radius:10px;border:1.5px dashed rgba(167,139,250,.4);background:rgba(167,139,250,.08);color:#c4b5fd;font-size:13px;font-weight:700;cursor:pointer;transition:all .2s}
.plan-add-btn:hover{background:rgba(167,139,250,.16);border-color:rgba(167,139,250,.6);color:#fff}
.plan-bank-row{display:flex;align-items:center;gap:10px}
.plan-bank-label{font-size:12px;color:rgba(255,255,255,.55);font-weight:600;flex-shrink:0;letter-spacing:.5px}
.plan-bank-select{flex:1;display:flex;align-items:center;justify-content:space-between;padding:11px 13px;border-radius:11px;border:1px solid rgba(255,255,255,.12);background:rgba(255,255,255,.07);color:#fff;font-size:13.5px;font-weight:600;cursor:pointer;transition:all .2s}
.plan-bank-select:hover{border-color:rgba(167,139,250,.55);background:rgba(167,139,250,.13)}
.plan-bank-select svg{width:13px;height:13px;color:rgba(255,255,255,.5);flex-shrink:0}
.plan-bank-hint{font-size:11px;color:rgba(255,255,255,.4);font-weight:600;letter-spacing:.5px;padding:4px 13px 8px}
.plan-bank-drop{position:fixed;z-index:2100;background:rgba(30,24,56,.98);border:1px solid rgba(167,139,250,.35);border-radius:13px;box-shadow:0 18px 44px rgba(0,0,0,.55);padding:8px 6px;max-height:250px;overflow-y:auto;scrollbar-width:none;-ms-overflow-style:none;backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px)}
.plan-bank-drop::-webkit-scrollbar{display:none;width:0;height:0}
.plan-bank-opt{padding:10px 13px;border-radius:9px;color:rgba(255,255,255,.85);font-size:13.5px;cursor:pointer;transition:background .15s;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:flex;align-items:center;gap:8px}
.plan-bank-opt::before{content:'';width:16px;height:16px;border-radius:5px;border:1.5px solid rgba(255,255,255,.2);flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;font-size:11px;font-weight:800;color:#fff;transition:all .15s}
.plan-bank-opt:hover{background:rgba(167,139,250,.15)}
.plan-bank-opt.on{background:rgba(167,139,250,.28);color:#fff}
.plan-bank-opt.on::before{content:'✓';border-color:#c4b5fd;background:#8B7CF4}
.plan-bank-divider{font-size:10px;color:rgba(255,255,255,.35);font-weight:600;letter-spacing:1px;padding:8px 13px 4px}
.plan-tip{font-size:11.5px;color:rgba(255,255,255,.45);font-weight:500;text-align:center;margin:0 0 12px;letter-spacing:.3px;line-height:1.5}
.plan-save-btn{width:100%;padding:13px;border-radius:13px;border:none;background:linear-gradient(135deg,#8B7CF4 0%,#7C3AED 100%);color:#fff;font-size:15px;font-weight:800;letter-spacing:1px;cursor:pointer;transition:all .25s cubic-bezier(.22,1,.36,1);margin-top:4px;box-shadow:0 6px 18px rgba(124,58,237,.35)}
.plan-save-btn:hover{transform:translateY(-2px);box-shadow:0 10px 26px rgba(124,58,237,.5)}
.plan-save-btn:active{transform:scale(.98)}
/* 浅色主题 */
body[data-theme="light"] .plan-card{background:rgba(124,58,237,.05);border-color:rgba(124,58,237,.12)}
body[data-theme="light"] .plan-card-title{color:#4c1d95}
body[data-theme="light"] .plan-item-bank{background:rgba(255,255,255,.6);border-color:rgba(124,58,237,.18);color:#4c1d95}
body[data-theme="light"] .plan-item-bank:hover{border-color:rgba(124,58,237,.4);background:rgba(255,255,255,.85)}
body[data-theme="light"] .plan-item-bank svg{color:rgba(91,33,182,.5)}
body[data-theme="light"] .plan-item-num{background:rgba(124,58,237,.08);border-color:rgba(124,58,237,.3);color:#4c1d95;caret-color:#7c3aed}
body[data-theme="light"] .plan-item-num:focus{border-color:rgba(124,58,237,.7);background:rgba(124,58,237,.12)}
body[data-theme="light"] .plan-item-unit{color:rgba(91,33,182,.5)}
body[data-theme="light"] .plan-item-del{background:rgba(220,38,38,.08);color:#b91c1c}
body[data-theme="light"] .plan-item-del:hover{background:rgba(220,38,38,.18);color:#991b1b}
body[data-theme="light"] .plan-add-btn{border-color:rgba(124,58,237,.4);background:rgba(124,58,237,.06);color:#7c3aed}
body[data-theme="light"] .plan-add-btn:hover{border-color:rgba(124,58,237,.6);background:rgba(124,58,237,.12);color:#4c1d95}
body[data-theme="light"] .plan-bank-label{color:rgba(91,33,182,.6)}
body[data-theme="light"] .plan-bank-select{background:rgba(255,255,255,.6);border-color:rgba(124,58,237,.18);color:#4c1d95}
body[data-theme="light"] .plan-bank-select:hover{border-color:rgba(124,58,237,.4);background:rgba(255,255,255,.85)}
body[data-theme="light"] .plan-bank-select svg{color:rgba(91,33,182,.5)}
body[data-theme="light"] .plan-bank-hint{color:rgba(91,33,182,.5)}
body[data-theme="light"] .plan-bank-drop{background:rgba(255,255,255,.98);border-color:rgba(124,58,237,.2);box-shadow:0 18px 44px rgba(124,58,237,.2)}
body[data-theme="light"] .plan-bank-opt{color:rgba(76,29,149,.85)}
body[data-theme="light"] .plan-bank-opt::before{border-color:rgba(124,58,237,.3)}
body[data-theme="light"] .plan-bank-opt:hover{background:rgba(124,58,237,.08)}
body[data-theme="light"] .plan-bank-opt.on{background:rgba(124,58,237,.15);color:#4c1d95}
body[data-theme="light"] .plan-bank-opt.on::before{border-color:#8B7CF4;background:#8B7CF4;color:#fff}
body[data-theme="light"] .plan-bank-divider{color:rgba(91,33,182,.4)}
body[data-theme="light"] .plan-tip{color:rgba(91,33,182,.5)}
/* 关闭时的遮罩淡出 */
.plan-overlay{animation:planFadeIn .3s ease}
@keyframes planFadeIn{from{opacity:0}to{opacity:1}}
body[data-theme="light"] .plan-panel{background:linear-gradient(175deg,rgba(255,255,255,.98) 0%,rgba(246,242,255,.98) 55%,rgba(237,230,255,.98) 100%);box-shadow:0 0 0 1px rgba(124,58,237,.18),0 30px 90px rgba(124,58,237,.22),inset 0 1px 0 rgba(255,255,255,.95)}
body[data-theme="light"] .plan-title{color:#4c1d95}
body[data-theme="light"] .plan-close{background:rgba(124,58,237,.1);color:#5b21b6}
body[data-theme="light"] .plan-close:hover{background:rgba(124,58,237,.18)}
body[data-theme="light"] .plan-placeholder{color:rgba(91,33,182,.5);border-color:rgba(124,58,237,.3)}
/* 浅色主题（数据看板） */
body[data-theme="light"] .pc-stat-card{background:rgba(255,255,255,.72);border:1px solid rgba(124,58,237,.12)}
body[data-theme="light"] .pc-stat-label{color:rgba(91,33,182,.7)}
body[data-theme="light"] .pc-stat-value b{color:#4c1d95}
body[data-theme="light"] .pc-stat-unit{color:rgba(91,33,182,.6)}
body[data-theme="light"] .pc-task-card{background:rgba(255,255,255,.72);border:1px solid rgba(124,58,237,.12)}
body[data-theme="light"] .pc-task-title{color:#4c1d95}
body[data-theme="light"] .pc-task-progress{color:rgba(91,33,182,.55)}
body[data-theme="light"] .pc-task-ring-num{color:#4c1d95}
body[data-theme="light"] .pc-task-ring-total{color:rgba(91,33,182,.55)}
body[data-theme="light"] .pc-task-bar-label{color:rgba(91,33,182,.75)}
body[data-theme="light"] .pc-task-bar-label span{color:rgba(91,33,182,.45)}
body[data-theme="light"] .pc-task-bar-track{background:rgba(124,58,237,.1)}
body[data-theme="light"] .pc-task-bar-total{color:rgba(91,33,182,.45)}
body[data-theme="light"] .pc-trend-card{background:rgba(255,255,255,.72);border:1px solid rgba(124,58,237,.12)}
body[data-theme="light"] .pc-trend-title{color:#4c1d95}
body[data-theme="light"] .pc-trend-chart svg line{stroke:rgba(124,58,237,.12)}
body[data-theme="light"] .pc-trend-chart svg circle[stroke="#f59e0b"]{fill:#fff}
body[data-theme="light"] .pc-trend-y,body[data-theme="light"] .pc-trend-x{color:rgba(91,33,182,.75)}
/* 最近学习记录卡 */
.pc-records-card{background:rgba(139,126,220,.13);border:1px solid rgba(255,255,255,.06);border-radius:16px;padding:14px 16px 6px;margin:0 0 14px;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);align-self:stretch}
.pc-records-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px}
.pc-records-title{display:flex;align-items:center;gap:8px;font-size:16px;font-weight:700;color:#fff}
.pc-records-icon{width:26px;height:26px;border-radius:7px;background:rgba(59,130,246,.15);color:#60a5fa;display:inline-flex;align-items:center;justify-content:center}
.pc-records-icon svg{width:15px;height:15px}
.pc-records-more{border:none;background:transparent;color:#60a5fa;font-size:13px;font-weight:600;cursor:pointer;padding:4px 6px;border-radius:6px;transition:background .2s}
.pc-records-more:hover{background:rgba(59,130,246,.12)}
.pc-records-list{display:flex;flex-direction:column}
.pc-records-item{display:flex;align-items:center;gap:12px;padding:12px 0;border-bottom:1px solid rgba(255,255,255,.06)}
.pc-records-item:last-child{border-bottom:none}
.pc-records-item-icon{width:36px;height:36px;border-radius:10px;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0}
.pc-records-item-icon svg{width:18px;height:18px}
.pc-rec-icon-blue{background:rgba(59,130,246,.18);color:#60a5fa}
.pc-rec-icon-orange{background:rgba(245,158,11,.18);color:#fbbf24}
.pc-records-item-info{flex:1;min-width:0}
.pc-records-item-title{font-size:14px;font-weight:600;color:#fff}
.pc-records-item-date{font-size:11.5px;color:rgba(255,255,255,.4);margin-top:2px;font-weight:500}
.pc-records-item-score{text-align:right;flex-shrink:0;min-width:64px}
.pc-score-num{font-size:15px;font-weight:800;color:#22c55e;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif;letter-spacing:-.2px}
.pc-score-pct{font-size:11.5px;color:rgba(255,255,255,.4);margin-top:2px;font-weight:500}
/* 浅色主题 */
body[data-theme="light"] .pc-records-card{background:rgba(255,255,255,.72);border:1px solid rgba(124,58,237,.12)}
body[data-theme="light"] .pc-records-title{color:#4c1d95}
body[data-theme="light"] .pc-records-more{color:#5b21b6}
body[data-theme="light"] .pc-records-more:hover{background:rgba(124,58,237,.1)}
body[data-theme="light"] .pc-records-item{border-bottom-color:rgba(124,58,237,.1)}
body[data-theme="light"] .pc-records-item-title{color:#4c1d95}
body[data-theme="light"] .pc-records-item-date{color:rgba(91,33,182,.5)}
body[data-theme="light"] .pc-score-pct{color:rgba(91,33,182,.5)}
/* 切换孩子弹窗 */
.pc-sel-item{display:flex;align-items:center;gap:12px;padding:12px 14px;border-radius:14px;background:rgba(255,255,255,.05);margin-bottom:8px;cursor:pointer;transition:all .2s;border:1.5px solid transparent}
.pc-sel-item:hover{background:rgba(255,255,255,.1)}
.pc-sel-item.active{background:rgba(139,126,220,.2);border-color:rgba(167,139,250,.45)}
.pc-sel-avatar{font-size:26px;flex-shrink:0}
.pc-sel-name{flex:1;font-weight:700;color:#fff;font-size:15px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pc-sel-code{color:rgba(255,255,255,.4);font-size:12px;font-family:Consolas,Monaco,monospace;letter-spacing:1px;flex-shrink:0}
.pc-sel-check{color:#43e97b;font-weight:800;font-size:16px;flex-shrink:0}
.pc-unbind-btn{border:none;background:rgba(255,90,90,.15);color:#ff8a8a;font-size:12px;font-weight:600;padding:5px 10px;border-radius:8px;cursor:pointer;transition:all .2s;flex-shrink:0}
.pc-unbind-btn:hover{background:rgba(255,90,90,.3);color:#fff}
/* 浅色主题 */
body[data-theme="light"] .pc-card{background:rgba(255,255,255,.72);border:1px solid rgba(124,58,237,.12);box-shadow:0 4px 14px rgba(124,58,237,.08),inset 0 1px 0 rgba(255,255,255,.9)}
body[data-theme="light"] .pc-card{background:rgba(255,255,255,.72);border:1px solid rgba(124,58,237,.12)}
body[data-theme="light"] .pc-card:hover{background:rgba(255,255,255,.9);border-color:rgba(124,58,237,.2)}
body[data-theme="light"] .pc-name{color:#4c1d95}
body[data-theme="light"] .pc-status.offline .pc-status-text{color:rgba(91,33,182,.55)}
body[data-theme="light"] .pc-switch-btn{background:rgba(124,58,237,.1);border-color:rgba(124,58,237,.35);color:#5b21b6}
body[data-theme="light"] .pc-switch-btn:hover{background:rgba(124,58,237,.2);border-color:rgba(124,58,237,.6);color:#4c1d95}
body[data-theme="light"] .pc-empty{background:rgba(124,58,237,.05);border-color:rgba(124,58,237,.3)}
body[data-theme="light"] .pc-empty p{color:rgba(91,33,182,.6)}
body[data-theme="light"] .pc-sel-item{background:rgba(124,58,237,.05)}
body[data-theme="light"] .pc-sel-item:hover{background:rgba(124,58,237,.1)}
body[data-theme="light"] .pc-sel-item.active{background:rgba(124,58,237,.15);border-color:rgba(124,58,237,.4)}
body[data-theme="light"] .pc-sel-name{color:#4c1d95}
body[data-theme="light"] .pc-sel-code{color:rgba(91,33,182,.5)}
body[data-theme="light"] .pc-unbind-btn{background:rgba(220,38,38,.08);color:#b91c1c}
body[data-theme="light"] .pc-unbind-btn:hover{background:rgba(220,38,38,.18);color:#991b1b}
/* 专业版：立即升级按钮 — 闪光 + 金币特效 */
.upgrade-btn-wrap{flex:1;position:relative;display:block;overflow:visible}
.info-actions .btn.upgrade-btn,.upgrade-btn-wrap .upgrade-btn{position:relative;width:100%;padding:12px 22px;border:0;border-radius:24px;
  font-size:15px;font-weight:800;color:#5a3b00;cursor:pointer;letter-spacing:1px;
  background:linear-gradient(135deg,#ffd700 0%,#ffcc33 50%,#ffb84d 100%)!important;
  box-shadow:0 4px 16px rgba(255,179,71,.4),0 0 0 1px rgba(255,255,255,.18) inset,
    0 -2px 0 rgba(0,0,0,.08) inset;
  overflow:hidden;transition:all .25s cubic-bezier(.22,1,.36,1);
  text-shadow:0 1px 1px rgba(255,255,255,.3)}
.upgrade-btn::before{content:'';position:absolute;top:0;left:-120%;width:60%;height:100%;
  background:linear-gradient(120deg,transparent 0%,rgba(255,255,255,.65) 50%,transparent 100%);
  transform:skewX(-25deg);transition:left .7s ease;pointer-events:none}
.upgrade-btn:hover{transform:translateY(-2px) scale(1.02);
  box-shadow:0 8px 28px rgba(255,179,71,.6),0 0 24px rgba(255,215,0,.45),
    0 0 0 1px rgba(255,255,255,.3) inset,0 -2px 0 rgba(0,0,0,.08) inset}
.upgrade-btn:hover::before{animation:upgradeShine .9s ease forwards}
.upgrade-btn:active{transform:translateY(0) scale(.98)}
@keyframes upgradeShine{0%{left:-120%}100%{left:140%}}
/* 金币粒子（hover 时从按钮四周飞出） */
.upgrade-btn::after{content:'';position:absolute;inset:0;pointer-events:none}
.upgrade-btn-wrap:hover .upgrade-coin{opacity:1;animation:coinFly 1.2s ease-out forwards}
.upgrade-coin{position:absolute;width:14px;height:14px;line-height:14px;font-size:13px;
  text-align:center;color:#ffd700;pointer-events:none;opacity:0;
  text-shadow:0 0 4px rgba(255,215,0,.8);z-index:2}
.upgrade-coin.c1{left:10%;top:50%;animation-delay:0s}
.upgrade-coin.c2{left:20%;top:10%;animation-delay:.08s}
.upgrade-coin.c3{left:50%;top:0;animation-delay:.16s}
.upgrade-coin.c4{left:80%;top:10%;animation-delay:.24s}
.upgrade-coin.c5{left:90%;top:50%;animation-delay:.32s}
.upgrade-coin.c6{left:80%;top:90%;animation-delay:.4s}
.upgrade-coin.c7{left:50%;top:100%;animation-delay:.48s}
.upgrade-coin.c8{left:20%;top:90%;animation-delay:.56s}
@keyframes coinFly{
  0%{opacity:1;transform:translate(-50%,-50%) scale(.4) rotate(0)}
  20%{opacity:1;transform:translate(-50%,-50%) scale(1.1) rotate(180deg)}
  100%{opacity:0;transform:translate(var(--dx,0),var(--dy,-40px)) scale(.7) rotate(540deg)}
}
/* 密码输入弹窗（家长模式验证） */
.pw-verify-input{width:100%;padding:12px 16px;margin:10px 0 6px;
  background:rgba(255,255,255,.1);border:1.5px solid rgba(255,255,255,.2);
  border-radius:12px;color:#fff;font-size:15px;text-align:center;outline:none;letter-spacing:2px}
.pw-verify-input:focus{border-color:rgba(167,139,250,.5);background:rgba(255,255,255,.15)}
/* 浅色主题覆盖 — 高级暖紫调，柔和有质感 */
body[data-theme="light"]{
  background:#e8e3f5;
  background-image:
    radial-gradient(ellipse at 20% 10%,rgba(196,181,253,.45) 0%,transparent 45%),
    radial-gradient(ellipse at 85% 15%,rgba(252,211,232,.5) 0%,transparent 45%),
    radial-gradient(ellipse at 50% 90%,rgba(221,214,254,.5) 0%,transparent 50%),
    linear-gradient(165deg,#ebe4f7 0%,#e8e3f5 30%,#f0e7f5 60%,#f5e8f0 100%)!important;
  color:#2a2440;
}
body[data-theme="light"] .home{background:transparent!important}
body[data-theme="light"] .home::before{
  content:'';position:fixed;inset:0;pointer-events:none;z-index:0;
  background:
    radial-gradient(circle at 25% 25%,rgba(167,139,250,.18) 0%,transparent 35%),
    radial-gradient(circle at 75% 75%,rgba(244,114,182,.15) 0%,transparent 35%);
  display:block;
}
body[data-theme="light"] .home>*{position:relative;z-index:1}
body[data-theme="light"] .bottom-nav{
  background:linear-gradient(180deg,rgba(235,228,247,.7) 0%,rgba(255,255,255,.88) 60%,rgba(255,255,255,.92) 100%);
  border-top:1px solid rgba(167,139,250,.18);
  box-shadow:0 -8px 32px rgba(124,58,237,.12),inset 0 1px 0 rgba(255,255,255,.5)}
body[data-theme="light"] .bottom-nav::before{
  background:linear-gradient(135deg,rgba(255,255,255,.85),rgba(237,233,254,.7));
  border:1px solid rgba(124,58,237,.22);
  box-shadow:0 4px 16px rgba(124,58,237,.18),inset 0 1px 0 rgba(255,255,255,.7)}
body[data-theme="light"] .bn-item{color:rgba(76,29,149,.5)}
body[data-theme="light"] .bn-item.active{color:#5b21b6}
body[data-theme="light"] .bn-item.active .bn-icon{filter:drop-shadow(0 4px 12px rgba(124,58,237,.4))}
body[data-theme="light"] .profile-bar{background:rgba(255,255,255,.7);
  backdrop-filter:blur(16px) saturate(1.4);-webkit-backdrop-filter:blur(16px) saturate(1.4);
  border:1px solid rgba(124,58,237,.12);
  box-shadow:0 4px 16px rgba(124,58,237,.08)}
body[data-theme="light"] .pf-name{color:#5b21b6;font-weight:700}
body[data-theme="light"] .pf-edit{background:rgba(124,58,237,.1);color:#5b21b6}
body[data-theme="light"] .pf-edit:hover{background:rgba(124,58,237,.18);color:#7c3aed}
body[data-theme="light"] .home h1{color:#5b21b6;font-weight:400}
body[data-theme="light"] .home-balloon{filter:drop-shadow(0 0 24px rgba(255,50,50,.5)) drop-shadow(0 4px 16px rgba(255,80,80,.35))}
body[data-theme="light"] .home .sub{color:rgba(42,36,64,.55);font-weight:550;display:none}
/* 卡片 — 玻璃拟态 + 暖紫调 */
body[data-theme="light"] .mc,
body[data-theme="light"] .qc,
body[data-theme="light"] .stat-card,
body[data-theme="light"] .cb-item,
body[data-theme="light"] .wt,
body[data-theme="light"] .me-btn,
body[data-theme="light"] .cb-search,
body[data-theme="light"] .cb-sort{
  background:linear-gradient(135deg,rgba(255,255,255,.85) 0%,rgba(250,245,255,.7) 100%);
  border:1px solid rgba(167,139,250,.22);
  color:#5b21b6;
  box-shadow:0 2px 8px rgba(124,58,237,.06),inset 0 1px 0 rgba(255,255,255,.7);
  backdrop-filter:blur(12px) saturate(1.3);-webkit-backdrop-filter:blur(12px) saturate(1.3);
  transition:all .3s cubic-bezier(.22,1,.36,1);
}
body[data-theme="light"] .me-btn{font-weight:550}
body[data-theme="light"] .me-btn:hover svg.me-icon{color:#7c3aed}
body[data-theme="light"] .me-btn.danger:hover svg.me-icon{color:#dc2626}
body[data-theme="light"] .me-parent-box .me-btn:first-child svg.me-icon{filter:drop-shadow(0 0 8px rgba(34,139,255,.5)) drop-shadow(0 0 16px rgba(20,100,220,.25))}
body[data-theme="light"] .me-parent-box .me-btn:first-child:hover svg.me-icon{filter:drop-shadow(0 0 26px rgba(80,180,255,1)) drop-shadow(0 0 46px rgba(34,139,255,.8)) drop-shadow(0 0 72px rgba(20,100,220,.4))}
body[data-theme="light"] .sb{background:transparent;border:0;box-shadow:none}
body[data-theme="light"] .mc:hover,
body[data-theme="light"] .qc:hover{background:linear-gradient(135deg,rgba(255,255,255,.95) 0%,rgba(245,240,255,.85) 100%);
  border-color:rgba(124,58,237,.4);
  transform:translateY(-3px);
  box-shadow:0 8px 24px rgba(124,58,237,.18),inset 0 1px 0 rgba(255,255,255,.8)}

body[data-theme="light"] .qc.sel{background:linear-gradient(135deg,rgba(167,139,250,.95) 0%,rgba(124,58,237,.95) 100%);
  border-color:rgba(124,58,237,.6);
  box-shadow:0 6px 18px rgba(124,58,237,.3),inset 0 1px 0 rgba(255,255,255,.2);
  color:#fff}
body[data-theme="light"] .qc.sel b,
body[data-theme="light"] .qc.sel small{color:#fff!important}
body[data-theme="light"] .me-btn:hover{background:linear-gradient(135deg,rgba(255,255,255,.95) 0%,rgba(245,240,255,.85) 100%);
  color:#7c3aed;border-color:rgba(124,58,237,.35);
  box-shadow:0 4px 14px rgba(124,58,237,.15)}
body[data-theme="light"] .me-sep{background:rgba(124,58,237,.18)}
body[data-theme="light"] .st,
body[data-theme="light"] .ht{color:rgba(42,36,64,.65);font-weight:700}
body[data-theme="light"] .stat-label,
body[data-theme="light"] .qc small{color:rgba(76,29,149,.6);font-weight:550}
body[data-theme="light"] .stat-num,
body[data-theme="light"] .mc .mn{color:#2a2440;font-weight:800}
body[data-theme="light"] .qc b{color:#5b21b6;font-weight:800}
body[data-theme="light"] .streak-pill{background:linear-gradient(135deg,rgba(255,237,213,.95),rgba(254,215,170,.95));
  color:#9a3412;border:1px solid rgba(251,146,60,.4);font-weight:700;
  box-shadow:0 2px 10px rgba(251,146,60,.2)}
body[data-theme="light"] .streak-pill b{color:#7c2d12}
body[data-theme="light"] .cb-builtin{border-color:rgba(22,163,74,.35);background:linear-gradient(135deg,rgba(220,252,231,.7),rgba(187,247,208,.5))}
body[data-theme="light"] .cb-builtin.sel{background:linear-gradient(135deg,rgba(34,197,94,.9),rgba(22,163,74,.9));border-color:rgba(22,163,74,.6);color:#fff}
body[data-theme="light"] .cb-builtin.sel *{color:#fff!important}
body[data-theme="light"] .cb-builtin-tag{background:rgba(22,163,74,.2);color:#15803d}
body[data-theme="light"] .cb-item-count{color:rgba(76,29,149,.55)}
body[data-theme="light"] .cb-item-menu{background:rgba(124,58,237,.12);color:#5b21b6}
body[data-theme="light"] .cb-item-menu:hover{background:rgba(124,58,237,.22);color:#2a2440}
body[data-theme="light"] .btn-imp{border-color:rgba(124,58,237,.3);color:rgba(76,29,149,.7);background:rgba(255,255,255,.5)}
body[data-theme="light"] .btn-imp:hover{border-color:rgba(124,58,237,.55);color:#2a2440;background:rgba(167,139,250,.12)}
body[data-theme="light"] .ww-card{background:linear-gradient(135deg,#fcf5f7 0%,#f8e8ee 50%,#f6e3ea 100%);
  border:1.5px solid rgba(210,105,125,.31);color:#2a2440;
  box-shadow:0 6px 20px rgba(200,100,120,.14),inset 0 1px 0 rgba(255,255,255,.75)}
body[data-theme="light"] .ww-card::before{background:radial-gradient(ellipse at 15% 50%,rgba(205,105,125,.10) 0%,transparent 55%)}
body[data-theme="light"] .ww-title{color:#2a2440;font-weight:800}
body[data-theme="light"] .ww-sub{color:rgba(76,29,149,.65);font-weight:550}
body[data-theme="light"] .ww-arrow{color:rgba(76,29,149,.5)}
/* 浅色：弹窗（info-box / del-mask / set-box / pw-verify） */
body[data-theme="light"] .info-box{background:linear-gradient(135deg,#ffffff,#f8f3ff);
  border:1px solid rgba(167,139,250,.3);color:#5b21b6;
  box-shadow:0 24px 60px rgba(124,58,237,.25);position:relative;z-index:1}
body[data-theme="light"] .info-box .info-title{color:#5b21b6}
body[data-theme="light"] .info-box .info-body{color:#5b21b6}
body[data-theme="light"] .info-box .info-body b{color:#7c3aed}
body[data-theme="light"] .info-box .info-list li{background:rgba(124,58,237,.08);color:#5b21b6}
/* 成就项样式（无内联颜色，纯 class 控制） */
.ach-item{display:flex;justify-content:space-between;align-items:center;padding:8px 10px;
  margin-bottom:4px;background:rgba(255,255,255,.06);border-radius:10px;font-size:12px;
  transition:all .25s ease}
.ach-item.ach-got{background:rgba(255,255,255,.06);opacity:1}
.ach-item.ach-locked{background:rgba(255,255,255,.03);opacity:.6;filter:grayscale(.5)}
.ach-icon{font-size:20px;margin-right:6px}
.ach-name{color:#fff;font-weight:800;margin-right:4px}
.ach-desc{color:rgba(255,255,255,.6);font-size:11px;margin-left:4px}
.ach-status{font-size:12px;font-weight:550;color:rgba(255,255,255,.3)}
.ach-item.ach-got .ach-status{color:#4ade80}
/* 浅色：成就 */
body[data-theme="light"] .ach-item{background:linear-gradient(135deg,rgba(255,255,255,.7),rgba(248,243,255,.6));
  border:1px solid rgba(124,58,237,.12)}
body[data-theme="light"] .ach-item.ach-got{background:linear-gradient(135deg,rgba(255,255,255,.85),rgba(240,253,244,.7));
  border-color:rgba(34,197,94,.2);opacity:1;filter:none}
body[data-theme="light"] .ach-item.ach-locked{background:linear-gradient(135deg,rgba(248,245,255,.5),rgba(245,240,255,.4));
  border-color:rgba(124,58,237,.1);opacity:.65;filter:grayscale(.4)}
body[data-theme="light"] .ach-name{color:#2a2440}
body[data-theme="light"] .ach-desc{color:rgba(42,36,64,.65)}
body[data-theme="light"] .ach-status{color:rgba(42,36,64,.4)}
body[data-theme="light"] .ach-item.ach-got .ach-status{color:#16a34a}
/* 弹窗内其他元素 */
.info-meta{opacity:.6;margin-top:10px;color:rgba(255,255,255,.7);font-size:13px}
.info-link{color:#a78bfa}
.info-price{text-align:center;margin:14px 0}
.info-price-num{font-size:28px;font-weight:800;color:#ffd700}
.info-price-unit{opacity:.6;font-size:13px;color:inherit}
/* 弹窗内关闭按钮 */
.info-close{background:rgba(255,255,255,.18)!important;color:#fff!important;border:1px solid rgba(255,255,255,.18);border-radius:14px;padding:12px 22px;font-weight:700;letter-spacing:.5px;
  box-shadow:0 4px 14px rgba(0,0,0,.18),inset 0 1px 0 rgba(255,255,255,.1);transition:all .25s cubic-bezier(.22,1,.36,1)}
.info-close:hover{background:rgba(255,255,255,.28)!important;border-color:rgba(255,255,255,.32);transform:translateY(-1px)}
body[data-theme="light"] .info-close{background:linear-gradient(135deg,rgba(124,58,237,.18),rgba(124,58,237,.1))!important;
  color:#5b21b6!important;border:1px solid rgba(124,58,237,.25);
  box-shadow:0 4px 14px rgba(124,58,237,.12),inset 0 1px 0 rgba(255,255,255,.7)}
body[data-theme="light"] .info-close:hover{background:linear-gradient(135deg,rgba(124,58,237,.28),rgba(124,58,237,.18))!important;
  color:#5b21b6!important;border-color:rgba(124,58,237,.45)}
body[data-theme="light"] .info-link{color:#7c3aed}
body[data-theme="light"] .info-meta{color:rgba(42,36,64,.65);opacity:1}
body[data-theme="light"] .info-box .info-actions .btn-cancel{background:linear-gradient(135deg,rgba(124,58,237,.18),rgba(124,58,237,.1))!important;
  color:#5b21b6!important;border:1px solid rgba(124,58,237,.25);
  box-shadow:0 4px 14px rgba(124,58,237,.12),inset 0 1px 0 rgba(255,255,255,.7)}
body[data-theme="light"] .info-box .info-actions .btn-cancel:hover{background:linear-gradient(135deg,rgba(124,58,237,.2),rgba(124,58,237,.12))!important}
body[data-theme="light"] .del-mask{
  background:
    radial-gradient(ellipse 55% 75% at 22% 22%,rgba(196,181,253,.4) 0%,transparent 55%),
    radial-gradient(ellipse 55% 75% at 78% 28%,rgba(254,215,170,.2) 0%,transparent 55%),
    radial-gradient(ellipse 65% 75% at 25% 78%,rgba(252,211,232,.26) 0%,transparent 55%),
    radial-gradient(ellipse 65% 75% at 82% 75%,rgba(167,243,208,.16) 0%,transparent 55%),
    linear-gradient(135deg,rgba(240,235,250,.82) 0%,rgba(245,240,252,.88) 50%,rgba(252,245,250,.82) 100%);
  backdrop-filter:blur(24px) saturate(1.6);
  -webkit-backdrop-filter:blur(24px) saturate(1.6)}
body[data-theme="light"] .del-mask::before{display:none}
body[data-theme="light"] .del-box{background:linear-gradient(135deg,rgba(239,68,68,.9),rgba(220,38,38,.9));
  box-shadow:0 24px 60px rgba(239,68,68,.25),inset 0 1px 0 rgba(255,255,255,.2)}
body[data-theme="light"] .del-box h2{color:#fff}
body[data-theme="light"] .del-box .del-warn{color:rgba(255,220,220,.9)}
/* 浅色：更改密码 + 家长验证 + 忘记密码 弹窗 */
body[data-theme="light"] #pwBox,
body[data-theme="light"] #pvBox,
body[data-theme="light"] #forgotPwBox{
  background:linear-gradient(135deg,#ffffff,#f0f4ff)!important;
  color:#1e40af!important;
  box-shadow:0 24px 60px rgba(37,99,235,.2)!important;
  position:relative;z-index:1}
body[data-theme="light"] #pwBox h2,
body[data-theme="light"] #pvBox h2,
body[data-theme="light"] #forgotPwBox h2{color:#1e40af!important}
body[data-theme="light"] #pwBox p,
body[data-theme="light"] #pvBox p,
body[data-theme="light"] #forgotPwBox p{color:#3b5998!important}
body[data-theme="light"] #pwBox .name-input,
body[data-theme="light"] #pvBox .name-input,
body[data-theme="light"] #pwBox .pw-verify-input,
body[data-theme="light"] #pvBox .pw-verify-input,
body[data-theme="light"] #forgotPwBox .name-input{
  background:rgba(37,99,235,.07)!important;border-color:rgba(37,99,235,.18)!important;color:#1e40af!important}
body[data-theme="light"] #pwBox .name-input::placeholder,
body[data-theme="light"] #pvBox .name-input::placeholder,
body[data-theme="light"] #pwBox .pw-verify-input::placeholder,
body[data-theme="light"] #pvBox .pw-verify-input::placeholder,
body[data-theme="light"] #forgotPwBox .name-input::placeholder{color:rgba(37,99,235,.35)!important}
body[data-theme="light"] #pwBox .name-input:focus,
body[data-theme="light"] #pvBox .name-input:focus,
body[data-theme="light"] #pwBox .pw-verify-input:focus,
body[data-theme="light"] #pvBox .pw-verify-input:focus,
body[data-theme="light"] #forgotPwBox .name-input:focus{background:rgba(37,99,235,.11)!important;border-color:rgba(96,165,250,.45)!important}
/* 按钮跟随 */
body[data-theme="light"] #pwBox .btn,
body[data-theme="light"] #pvBox .btn,
body[data-theme="light"] #forgotPwBox .btn{color:#1e40af!important;background:rgba(37,99,235,.12)!important;border:1px solid rgba(37,99,235,.2)!important}
body[data-theme="light"] #pwBox .btn:hover,
body[data-theme="light"] #pvBox .btn:hover,
body[data-theme="light"] #forgotPwBox .btn:hover{background:rgba(37,99,235,.2)!important}
body[data-theme="light"] .del-box .btn-cancel{background:rgba(255,255,255,.18)!important;color:#fff!important}
body[data-theme="light"] .music-modal-box{background:linear-gradient(135deg,#ffffff,#f0eeff);
  color:#5b21b6;box-shadow:0 24px 60px rgba(124,58,237,.22),inset 0 1px 0 rgba(255,255,255,.9)}
body[data-theme="light"] .music-modal-box h2{color:#7c3aed}
body[data-theme="light"] .set-box{background:linear-gradient(135deg,#ffffff,#f8f3ff);
  color:#5b21b6;box-shadow:0 24px 60px rgba(124,58,237,.25),inset 0 1px 0 rgba(255,255,255,.9);position:relative;z-index:1}
body[data-theme="light"] .set-box h2{color:#5b21b6}
body[data-theme="light"] .set-sub{color:#7c3aed}
body[data-theme="light"] .set-row{border-bottom:1px solid rgba(124,58,237,.12)}
body[data-theme="light"] .set-row .set-label{color:#5b21b6}
body[data-theme="light"] .set-actions .btn-cancel{background:linear-gradient(135deg,rgba(124,58,237,.18),rgba(124,58,237,.1))!important;
  color:#5b21b6!important;border:1px solid rgba(124,58,237,.25)}
body[data-theme="light"] .pw-verify-input{background:rgba(124,58,237,.08);border-color:rgba(124,58,237,.2);color:#5b21b6}
body[data-theme="light"] .pw-verify-input:focus{background:rgba(124,58,237,.12);border-color:rgba(167,139,250,.4)}
/* 修复容易漏掉的白字：图标 + 装饰 */
body[data-theme="light"] .mi,
body[data-theme="light"] .mc .mi,
body[data-theme="light"] .bn-icon{filter:none;color:inherit}
body[data-theme="light"] .home h1 span{color:#ef4444;background:none;-webkit-background-clip:text;
  -webkit-text-fill-color:#ef4444;text-shadow:0 0 20px rgba(239,68,68,.35)}
/* Tab 切换可见性 */
.home[data-tab="game"]>.stats-row,
.home[data-tab="game"]>.review-only,
.home[data-tab="game"]>.review-panel,
.home[data-tab="game"]>.vocab-only,
.home[data-tab="game"]>#wrongBox,
.home[data-tab="game"]>.ww-card,
.home[data-tab="game"]>.heat-card,
.home[data-tab="game"]>.profile-bar,
.home[data-tab="game"]>#customBankSection{display:none!important}
.home[data-tab="game"]{justify-content:flex-start;padding:16px 16px 90px}
.home[data-tab="game"]>.home-logo,
.home[data-tab="game"] h1,
.home[data-tab="game"]>.home-en{margin-bottom:0}
.home[data-tab="game"]>.mg{margin-top:56px;margin-bottom:56px}
.home[data-tab="game"]>.sb{margin-bottom:56px}
.home[data-tab="game"]>.sb:last-of-type{margin-bottom:0}
.home[data-tab="review"]>h1,
.home[data-tab="review"]>.sub,
.home[data-tab="review"]>.mg,
.home[data-tab="review"]>.sb:not(#customBankSection),
.home[data-tab="review"]>#customBankSection,
.home[data-tab="review"]>.profile-bar,
.home[data-tab="review"]>.vocab-stats,
.home[data-tab="review"]>.vocab-only,
.home[data-tab="review"]>.heat-card{display:none!important}
.home[data-tab="review"]>.review-only{display:flex!important}
.home[data-tab="review"]>.review-panel{display:flex!important}
.home[data-tab="review"]>.review-stats{display:flex!important}
.home[data-tab="vocab"]>h1,
.home[data-tab="vocab"]>.sub,
.home[data-tab="vocab"]>.mg,
.home[data-tab="vocab"]>.sb:not(#customBankSection),
.home[data-tab="vocab"]>.profile-bar,
.home[data-tab="vocab"]>.review-stats,
.home[data-tab="vocab"]>.review-panel{display:none!important}
.home[data-tab="vocab"]>.vocab-mode-switch{display:flex!important}
.home[data-tab="vocab"]>.cb-search-wrap{display:flex!important}
.home[data-tab="vocab"]>.heat-card{display:none!important}
.home[data-tab="me"]>h1,
.home[data-tab="me"]>.sub,
.home[data-tab="me"]>.mg,
.home[data-tab="me"]>.sb,
.home[data-tab="me"]>.stats-row,
.home[data-tab="me"]>.heat-card,
.home[data-tab="me"]>.ww-card,
.home[data-tab="me"]>.vocab-only,
.home[data-tab="me"]>.review-only,
.home[data-tab="me"]>.review-panel,
.home[data-tab="me"]>.profile-bar{display:none!important}
.pf-actions{display:none!important}
/* ===== 单人游戏 ===== */
.sc{display:none;position:fixed;top:0;left:0;right:0;bottom:0;overflow:hidden;z-index:200}
.sh{position:fixed;top:0;left:0;width:100vw;height:42px;box-sizing:border-box;display:flex;justify-content:center;align-items:center;padding:0 14px;background:linear-gradient(180deg,rgba(0,0,0,.35) 0%,rgba(0,0,0,.05) 100%);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border-bottom:1px solid rgba(255,255,255,.04);z-index:10;margin:0}
.hl2,.hr2{position:absolute;display:flex;align-items:center;gap:8px}
.hl2{left:14px}.hr2{right:14px}
.hs{color:rgba(255,255,255,.85);font-size:clamp(11px,2.2vw,15px);font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:28vw;text-shadow:0 1px 2px rgba(0,0,0,.3)}
.hs span{color:#ffd700;font-weight:800}
.hw2{font-size:clamp(15px,3.8vw,22px);font-weight:800;color:#fff;
  background:linear-gradient(135deg,rgba(167,139,250,.25) 0%,rgba(124,58,237,.18) 50%,rgba(167,139,250,.22) 100%);
  padding:9px 22px 9px 22px;border-radius:36px;
  border:1px solid rgba(167,139,250,.2);
  box-shadow:0 4px 16px rgba(124,58,237,.15),inset 0 1px 0 rgba(255,255,255,.1);
  transition:all .3s;white-space:nowrap;max-width:60vw;overflow:hidden;text-overflow:ellipsis;
  margin-top:1px;text-shadow:0 0 10px rgba(167,139,250,.3),0 1px 2px rgba(0,0,0,.2);
  backdrop-filter:blur(12px);letter-spacing:2px;
  display:inline-flex;align-items:center;flex-direction:row-reverse;gap:10px}
.hw2 .hw-ic{width:18px;height:18px;opacity:.7;color:#c4b5fd;flex-shrink:0;cursor:pointer;transition:all .15s;
  filter:drop-shadow(0 0 4px rgba(167,139,250,.3))}
.hw2 .hw-ic:hover{opacity:1;transform:scale(1.15);
  filter:drop-shadow(0 0 10px rgba(167,139,250,.6))}
.hw2 .hw-ic-act{opacity:1!important;transform:scale(1.35)!important;
  filter:drop-shadow(0 0 16px rgba(167,139,250,.8))!important}
.hw2 .hw-val{color:#fff;font-weight:800}
.hw2.pulse{animation:hwPulse .4s}
@keyframes hwPulse{0%{transform:scale(1)}50%{transform:scale(1.15)}100%{transform:scale(1)}}
.hw2.hw-in{animation:hwIn .5s cubic-bezier(.34,1.56,.64,1) both}
@keyframes hwIn{0%{transform:translateY(-12px) scale(.7);opacity:0}60%{transform:translateY(2px) scale(1.04);opacity:1}100%{transform:translateY(0) scale(1);opacity:1}}
/* 爱心文字 */
.hlv{color:#ff6b6b;font-size:clamp(13px,2.8vw,18px);letter-spacing:2px;transition:all .35s}
/* 辉光层次 + 呼吸动画 — 节奏随命数减少等比例加剧 */
.hlv[data-lives="4"],
.hlv[data-lives="5"]{text-shadow:0 0 10px rgba(255,107,107,.8),0 0 20px rgba(255,60,60,.45),0 0 30px rgba(255,80,80,.25)}
.hlv[data-lives="3"]{text-shadow:0 0 7px rgba(255,107,107,.55),0 0 14px rgba(255,60,60,.3);animation:hlvBreathe 2.4s ease-in-out infinite}
.hlv[data-lives="2"]{text-shadow:0 0 4px rgba(255,107,107,.3);opacity:.85;animation:hlvBreathe 1.2s ease-in-out infinite}
.hlv[data-lives="1"]{text-shadow:0 0 3px rgba(255,60,60,.2);opacity:.7;animation:hlvBreathe .6s ease-in-out infinite}
/* 失血呼吸 */
@keyframes hlvBreathe{0%,100%{transform:scale(1)}50%{transform:scale(1.12)}}
/* 受伤：震动 + 心跳缩放 */
.hlv.shake{animation:hShake .4s}
.hlv.beat{animation:hBeat .5s ease-out}
@keyframes hShake{0%,100%{transform:translateX(0)}15%,45%{transform:translateX(-5px)}30%,60%{transform:translateX(5px)}}
@keyframes hBeat{0%{transform:scale(1)}20%{transform:scale(.82)}40%{transform:scale(1.1)}60%{transform:scale(.88)}80%{transform:scale(1.04)}100%{transform:scale(1)}}
.scw{position:absolute;top:0;bottom:0;left:0;right:0;background:linear-gradient(160deg,#020208 0%,#080816 40%,#020208 100%);z-index:0}
.scw::before{content:'';position:absolute;inset:0;background:radial-gradient(ellipse at 30% 20%,rgba(80,100,180,.04) 0%,transparent 50%),radial-gradient(ellipse at 70% 80%,rgba(120,80,200,.03) 0%,transparent 50%);pointer-events:none;z-index:0}
.scw canvas{width:100%;height:100%;display:block;position:relative;z-index:1}
.ebw{position:absolute;bottom:0;left:0;right:0;height:8px;background:rgba(255,255,255,.04);backdrop-filter:blur(8px);z-index:10}
.ef{height:100%;background:linear-gradient(90deg,#f093fb,#f5576c);transition:width .3s;border-radius:0 4px 4px 0;box-shadow:0 0 6px rgba(240,147,251,.15) inset}
.ef.full{background:linear-gradient(90deg,#ffd700,#ff6b6b);animation:ep 1s infinite;box-shadow:0 0 12px rgba(255,215,0,.4)}
.tbw{position:absolute;top:50px;left:10px;right:10px;height:10px;background:rgba(255,255,255,.04);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);z-index:11;border-radius:6px;overflow:hidden;border:1px solid rgba(255,255,255,.04)}
.tf{height:100%;border-radius:6px;transition:width .1s linear;box-shadow:0 0 8px rgba(255,255,255,.06) inset,0 0 10px rgba(102,126,234,.08)}
@keyframes ep{0%,100%{opacity:1}50%{opacity:.6}}
.sct{position:absolute;bottom:10px;left:14px;right:14px;display:flex;justify-content:space-between;align-items:center;z-index:10}
.cb{padding:7px 16px;border-radius:20px;border:none;font-size:13px;font-weight:550;cursor:pointer;transition:all .25s;backdrop-filter:blur(8px)}
.cb.pau{background:rgba(255,255,255,.12);color:#fff;border:1px solid rgba(255,255,255,.1)}
.cb.pau:hover{background:rgba(255,255,255,.2)}
.cb.eng{background:linear-gradient(135deg,#f093fb,#f5576c);color:#fff;opacity:.35;pointer-events:none;border:none}
.cb.eng.rdy{opacity:1;pointer-events:auto;animation:ep 1s infinite;box-shadow:0 0 16px rgba(240,147,251,.4)}
.eng-hint{position:absolute;bottom:68px;right:50%;transform:translateX(50%);color:#fff;font-size:13px;font-weight:700;text-shadow:0 0 10px rgba(240,147,251,.8);animation:hintBounce .6s ease-in-out infinite alternate;pointer-events:none;z-index:11}
@keyframes hintBounce{from{transform:translateX(50%) translateY(0)}to{transform:translateX(50%) translateY(-8px)}}
.cb.bk{background:rgba(255,255,255,.1);color:rgba(255,255,255,.6);border:1px solid rgba(255,255,255,.1)}
.cb.bk:hover{background:rgba(255,255,255,.15);color:#fff}
.cb.tts{background:linear-gradient(135deg,rgba(67,233,123,.35),rgba(56,249,215,.25));color:#43e97b;border:1px solid rgba(67,233,123,.35);min-width:42px;padding:7px 10px;font-size:15px;text-shadow:0 0 8px rgba(67,233,123,.4);box-shadow:0 0 12px rgba(67,233,123,.15)}
.cb.tts:hover{background:linear-gradient(135deg,rgba(67,233,123,.5),rgba(56,249,215,.4));box-shadow:0 0 18px rgba(67,233,123,.3)}
.cb.tts.off{background:rgba(255,255,255,.06);color:rgba(255,255,255,.3);border:1px solid rgba(255,255,255,.06);text-shadow:none;box-shadow:none}
/* 错题集面板 */
.err-panel{position:absolute;top:56px;right:8px;bottom:54px;width:clamp(200px,45vw,280px);background:rgba(15,15,35,.95);backdrop-filter:blur(16px);border:1px solid rgba(255,255,255,.1);border-radius:16px;z-index:20;display:none;flex-direction:column;overflow:hidden;animation:errSlide .25s ease-out}
.err-panel.show{display:flex}
@keyframes errSlide{from{transform:translateX(100%);opacity:0}to{transform:translateX(0);opacity:1}}
.err-head{display:flex;align-items:center;justify-content:space-between;padding:10px 12px;border-bottom:1px solid rgba(255,255,255,.06)}
.err-title{color:#fff;font-size:14px;font-weight:700}
.err-close{background:none;border:none;color:rgba(255,255,255,.5);font-size:18px;cursor:pointer;padding:2px 6px}
.err-close:hover{color:#fff}
.err-list{flex:1;overflow-y:auto;padding:6px 8px;scrollbar-width:thin;scrollbar-color:rgba(255,255,255,.1) transparent}
.err-list::-webkit-scrollbar{width:3px}
.err-list::-webkit-scrollbar-thumb{background:rgba(255,255,255,.15);border-radius:2px}
.err-item{display:flex;align-items:center;justify-content:space-between;padding:7px 10px;margin-bottom:4px;border-radius:10px;background:rgba(245,87,108,.08);border:1px solid rgba(245,87,108,.12)}
.err-en{color:#fff;font-size:13px;font-weight:550}
.err-cn{color:rgba(255,255,255,.5);font-size:11px}
.err-speak{background:none;border:none;font-size:16px;cursor:pointer;padding:2px 4px;opacity:.7}
.err-speak:hover{opacity:1;transform:scale(1.2)}
.err-empty{color:rgba(255,255,255,.3);text-align:center;padding:30px 10px;font-size:13px}
.err-cnt{color:#f5576c;font-size:12px;font-weight:550}
.cp{position:absolute;font-size:clamp(18px,4.5vw,30px);font-weight:bold;color:#ffd700;text-shadow:0 2px 10px rgba(255,215,0,.5),0 0 20px rgba(255,215,0,.2);pointer-events:none;z-index:20;animation:cfl 1.2s forwards;left:50%;transform:translateX(-50%)}
@keyframes cfl{0%{opacity:1;transform:translateX(-50%) translateY(0) scale(1)}40%{transform:translateX(-50%) translateY(-25px) scale(1.5)}100%{opacity:0;transform:translateX(-50%) translateY(-70px) scale(.6)}}
/* ===== 联网对战大厅 ===== */
.lobby{display:none;position:fixed;inset:0;z-index:160;background:linear-gradient(160deg,#1a1a3e 0%,#2d1b69 50%,#1a1a3e 100%);align-items:center;justify-content:center;padding:16px}
.lobby-box{background:rgba(255,255,255,.06);backdrop-filter:blur(20px);border:1px solid rgba(255,255,255,.1);border-radius:24px;padding:32px 28px;max-width:380px;width:100%;text-align:center;animation:pi .5s cubic-bezier(.34,1.56,.64,1)}
.lobby-title{font-size:24px;font-weight:800;color:#fff;margin-bottom:8px;text-shadow:0 2px 12px rgba(102,126,234,.4)}
.lobby-desc{font-size:13px;color:rgba(255,255,255,.5);margin-bottom:20px}
.lobby-btns{display:flex;gap:10px;margin-bottom:8px}
.lobby-btns .btn{flex:1}
.lobby-label{display:block;font-size:12px;color:rgba(255,255,255,.5);text-align:left;margin-bottom:6px}
.lobby-input{width:100%;padding:12px 16px;border-radius:14px;border:1px solid rgba(255,255,255,.12);background:rgba(255,255,255,.06);color:#fff;font-size:18px;font-weight:700;text-align:center;letter-spacing:4px;outline:none;transition:border .2s}
.lobby-input:focus{border-color:rgba(102,126,234,.5)}
.lobby-room-id{font-size:14px;color:rgba(255,255,255,.6);margin-bottom:8px}
.rid-code{font-size:24px;font-weight:800;color:#ffd700;letter-spacing:3px;text-shadow:0 2px 12px rgba(255,215,0,.3)}
.rid-copy-btn{background:none;border:1px solid rgba(255,215,0,.3);border-radius:8px;cursor:pointer;font-size:16px;padding:2px 8px;margin-left:6px;vertical-align:middle;transition:all .25s;line-height:1}
.rid-copy-btn:hover{background:rgba(255,215,0,.15);border-color:rgba(255,215,0,.5);transform:scale(1.1)}
.rid-copy-btn.copied{color:#43e97b;border-color:#43e97b}
.lobby-hint{font-size:12px;color:rgba(255,255,255,.35);margin-bottom:12px}
.lobby-status{margin-top:14px;font-size:14px;color:rgba(255,255,255,.6);min-height:20px}
.lobby-err{color:#f5576c;font-size:14px;margin-bottom:12px}
/* ===== 联网对战 ===== */
.nbc{display:none;position:fixed;inset:0;background:linear-gradient(160deg,#111132 0%,#181443 40%,#111132 100%);z-index:150}
.nb-dc-banner{position:fixed;top:0;left:0;right:0;z-index:9999;display:none;align-items:center;justify-content:center;gap:8px;padding:11px 14px;font-weight:700;font-size:15px;letter-spacing:.3px;box-shadow:0 4px 18px rgba(0,0,0,.35)}
.nb-dc-banner.amber{background:linear-gradient(90deg,#ffb347,#ffcc33);color:#5a3b00;animation:nbDcPulse 1.1s ease-in-out infinite}
.nb-dc-banner.green{background:linear-gradient(90deg,#37d67a,#2bb673);color:#06351c}
@keyframes nbDcPulse{0%,100%{opacity:1}50%{opacity:.55}}
.nbc::before{content:'';position:absolute;inset:0;background:radial-gradient(ellipse at 30% 20%,rgba(102,126,234,.08) 0%,transparent 50%),radial-gradient(ellipse at 70% 80%,rgba(240,147,251,.05) 0%,transparent 50%);pointer-events:none;z-index:0}
.nbh{position:absolute;top:0;left:0;right:0;display:flex;justify-content:space-between;align-items:center;padding:8px 14px 14px;background:linear-gradient(180deg,rgba(10,10,30,.55),rgba(10,10,30,0));backdrop-filter:blur(12px);border-bottom:1px solid rgba(255,255,255,.1);z-index:10}
.nbp{display:flex;align-items:center;gap:8px;min-width:0}
.nba{font-size:clamp(20px,4vw,30px)}
.nbi{display:flex;flex-direction:column}
.nbn{font-size:clamp(10px,2vw,12px);color:rgba(255,255,255,.6);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:80px}
.nbs{font-size:clamp(22px,5vw,34px);font-weight:bold;color:#fff;text-shadow:0 2px 8px rgba(0,0,0,.5);transition:all .3s}
.nbs.ld{color:#ffd700;text-shadow:0 0 16px rgba(255,215,0,.5)}
.nbct{display:flex;flex-direction:column;align-items:center;flex-shrink:0}
.nbr{font-size:clamp(10px,2vw,12px);color:rgba(255,255,255,.5)}
.nbw{font-size:clamp(16px,4vw,26px);font-weight:bold;color:#fff;background:linear-gradient(135deg,rgba(102,126,234,.7),rgba(118,75,162,.7));padding:4px 18px;border-radius:20px;margin-top:2px;white-space:nowrap}
.nbcd{position:absolute;bottom:0;left:0;right:0;height:4px;background:rgba(255,255,255,.06);z-index:10}
.nbsc{position:absolute;top:0;bottom:0;left:0;right:0;z-index:1}
.nbsc canvas{width:100%;height:100%;display:block}
.nbst{position:absolute;bottom:46px;left:50%;transform:translateX(-50%);padding:5px 18px;border-radius:18px;font-size:clamp(12px,2.5vw,14px);font-weight:bold;z-index:10;transition:all .3s}
.nbst.an{background:rgba(67,233,123,.2);color:#43e97b;border:1px solid rgba(67,233,123,.2)}
.nbst.wr{background:rgba(245,87,108,.2);color:#f5576c;border:1px solid rgba(245,87,108,.2)}
.nbst.wt{background:rgba(255,255,255,.06);color:rgba(255,255,255,.5);animation:pu 1.5s infinite;border:1px solid rgba(255,255,255,.06)}
/* 多人排行榜 */
.nb-oplist{display:flex;flex-direction:column;gap:2px;max-width:140px;overflow:hidden}
.sb-p{display:flex;align-items:center;gap:4px;font-size:11px;color:rgba(255,255,255,.6);padding:1px 6px;border-radius:6px;background:rgba(255,255,255,.04);transition:all .3s}
.sb-p.me{background:rgba(102,126,234,.15);color:rgba(255,255,255,.9)}
.sb-n{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:60px;font-size:10px}
.sb-s{font-weight:700;font-size:13px;min-width:24px;text-align:right}
.sd{font-size:10px;margin-right:2px}
.sd.ok{color:#43e97b}.sd.wr{color:#f5576c}.sd.wt{color:#ffd700}.sd.dc{color:#888}
/* 大厅玩家列表 */
.nb-pl{margin:12px 0;display:flex;flex-direction:column;gap:6px}
.pli{display:flex;align-items:center;gap:8px;padding:8px 12px;border-radius:12px;background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.06);transition:all .3s}
.pli-a{font-size:20px}.pli-n{flex:1;color:rgba(255,255,255,.8);font-size:13px;font-weight:550}
.prdy{font-size:14px}.prdy.wait{opacity:.4}
.lobby-maxp{display:flex;align-items:center;justify-content:center;gap:8px;margin-bottom:12px}
.lobby-maxp label{color:rgba(255,255,255,.5);font-size:12px}
.lobby-sel{padding:6px 12px;border-radius:10px;border:1px solid rgba(255,255,255,.12);background:rgba(255,255,255,.1);color:#fff;font-size:14px;font-weight:700;outline:none;cursor:pointer}
.lobby-sel:focus{border-color:rgba(102,126,234,.5)}
.lobby-sel option{background:#1a1a3e;color:#fff}
.btn:disabled,.btn[disabled]{opacity:.4;cursor:not-allowed;pointer-events:none}
/* 错题关入口卡片 — 低饱和渐变醒目样式 */
.ww-card{display:flex;align-items:center;gap:12px;width:100%;max-width:420px;padding:14px 14px;border-radius:18px;
  background:linear-gradient(135deg,#371c52 0%,#4e1f63 40%,#371c52 100%);
  border:1.5px solid rgba(221,107,128,.40);cursor:pointer;transition:all .3s;margin-bottom:14px;
  position:relative;overflow:hidden;
  box-shadow:0 6px 22px rgba(200,100,120,.16),inset 0 1px 0 rgba(255,255,255,.07)}
.ww-card::before{content:'';position:absolute;inset:0;
  background:radial-gradient(ellipse at 15% 50%,rgba(217,101,121,.22) 0%,transparent 55%);
  pointer-events:none}
.ww-card:hover{transform:translateY(-2px);
  box-shadow:0 8px 28px rgba(200,100,120,.30),inset 0 1px 0 rgba(255,255,255,.10);
  border-color:rgba(221,107,128,.62)}
.ww-icon{width:52px;height:52px;font-size:26px;flex-shrink:0;border-radius:14px;
  background:linear-gradient(135deg,#da677c 0%,#b74f82 55%,#e57c9c 100%);
  display:flex;align-items:center;justify-content:center;
  box-shadow:0 6px 16px rgba(200,100,120,.40);
  filter:drop-shadow(0 0 5px rgba(205,105,125,.30));
  color:#fff;text-shadow:0 1px 2px rgba(0,0,0,.2)}
.ww-info{flex:1;min-width:0;position:relative;z-index:1}
.ww-title-row{display:flex;align-items:center;gap:6px;margin-bottom:3px}
.ww-title{font-size:14px;font-weight:800;color:#fff}
.ww-rec{font-size:9px;font-weight:700;color:#fff;padding:2px 7px;border-radius:6px;
  background:linear-gradient(135deg,#da677c,#b74f82);
  box-shadow:0 2px 6px rgba(200,100,120,.30);letter-spacing:.5px}
.ww-sub{font-size:11px;color:rgba(255,255,255,.55)}
.ww-cnt{font-size:12px;color:#fff;font-weight:700;white-space:nowrap;padding:8px 12px;border-radius:12px;
  background:linear-gradient(135deg,#da677c 0%,#e58892 100%);
  box-shadow:0 4px 12px rgba(200,100,120,.36);
  position:relative;z-index:1}
.ww-arrow{font-size:20px;color:rgba(255,255,255,.5);flex-shrink:0;position:relative;z-index:1}
@keyframes dotPulse{0%,100%{opacity:1;transform:scale(1)}50%{opacity:.4;transform:scale(1.4)}}
.nbct2{position:absolute;bottom:10px;left:0;right:0;display:flex;justify-content:center;gap:10px;z-index:10}
@keyframes pu{0%,100%{opacity:1}50%{opacity:.4}}
.cdf{height:100%;background:linear-gradient(90deg,#43e97b,#38f9d7);transition:width .05s linear;border-radius:0 2px 2px 0}
.cdf.low{background:linear-gradient(90deg,#f5576c,#ff6b6b)}
/* ===== 结果弹窗 ===== */
.ov{position:fixed;inset:0;background:linear-gradient(160deg,#1a1a3e 0%,#2d1b69 40%,#1a1a3e 100%);backdrop-filter:blur(8px);display:none;align-items:center;justify-content:center;z-index:9000;padding:16px}
.ov::before{content:'';position:absolute;inset:0;background:radial-gradient(ellipse at 30% 20%,rgba(102,126,234,.15) 0%,transparent 50%),radial-gradient(ellipse at 70% 80%,rgba(240,147,251,.1) 0%,transparent 50%);pointer-events:none;z-index:0}
.ov.show{display:flex;cursor:pointer}
.rb{background:linear-gradient(180deg,#fff,#f8f6ff);border-radius:24px;padding:clamp(20px,4vw,44px);text-align:center;max-width:420px;width:100%;animation:pi .5s cubic-bezier(.34,1.56,.64,1);max-height:90vh;overflow-y:auto;cursor:default;box-shadow:0 24px 60px rgba(0,0,0,.4)}
@keyframes pi{from{transform:scale(.4) translateY(40px);opacity:0}to{transform:scale(1) translateY(0);opacity:1}}
/* 3-2-1 倒计时 */
.cd-overlay{position:fixed;inset:0;z-index:9999;display:flex;align-items:center;justify-content:center;background:rgba(0,0,0,.55);pointer-events:none}
.cd-num{font-size:100px;font-weight:900;color:#fff;font-family:inherit;text-shadow:0 0 60px rgba(167,139,250,.8),0 0 120px rgba(124,58,237,.5);animation:cdPop .7s ease-out both}
.cd-num.cd-go{font-size:80px;color:#a78bfa;animation:cdGo .5s ease-out both}
@keyframes cdPop{0%{transform:scale(2.5);opacity:0}30%{transform:scale(.85);opacity:1}60%{transform:scale(1.08)}100%{transform:scale(1);opacity:1}}
@keyframes cdGo{0%{transform:scale(1);opacity:1}100%{transform:scale(2.5);opacity:0}}
.ri{font-size:clamp(48px,12vw,80px);margin-bottom:4px;animation:riPop .7s .2s cubic-bezier(.34,1.56,.64,1) both;display:inline-block;transform-origin:center;position:relative;left:0}
.ri.win{left:-4px}
@keyframes riPop{from{transform:scale(0) rotate(-60deg);opacity:0}70%{transform:scale(1.15) rotate(5deg);opacity:1}100%{transform:scale(1) rotate(0);opacity:1}}
.rt{font-size:clamp(20px,5vw,32px);font-weight:800;color:#2d1b69;margin-bottom:14px;text-align:center;align-self:center;width:100%;position:relative;left:12px}
.rs{display:flex;justify-content:space-around;padding:14px;background:rgba(102,126,234,.06);border-radius:16px;margin-bottom:14px}
.rc{display:flex;flex-direction:column;align-items:center}
.rl{font-size:11px;color:#888;margin-bottom:4px}
.rv{font-size:clamp(26px,7vw,40px);font-weight:bold;color:#6c5ce7}
.rv.w{color:#ffd700}
.rst{display:grid;grid-template-columns:1fr 1fr;gap:5px;margin-bottom:16px;text-align:left}
.rsr{display:flex;justify-content:space-between;padding:6px 10px;background:rgba(102,126,234,.04);border-radius:8px;font-size:12px;border:1px solid rgba(102,126,234,.06)}
.rsr .sl{color:#888}.rsr .sv{font-weight:bold;color:#333}
.bg{display:flex;gap:8px;justify-content:center;flex-wrap:wrap}
.btn{padding:11px 30px;font-size:14px;font-weight:bold;border:none;border-radius:28px;cursor:pointer;transition:all .3s cubic-bezier(.34,1.56,.64,1);letter-spacing:.5px}
.btn:active{transform:scale(.96)}
/* 卡片类点击缩放 */
.mc:active{transform:translateY(-1px) scale(.97)}

.wt:active{transform:scale(.95)}
.qc:active{transform:scale(.96)}
.pf-edit:active{transform:scale(.9)}
.cb:active{transform:scale(.95)}
.btn.p{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;box-shadow:0 6px 20px rgba(102,126,234,.35)}
.btn.p:hover{transform:translateY(-3px);box-shadow:0 10px 30px rgba(102,126,234,.45)}
.btn.s{background:rgba(102,126,234,.08);color:#6c5ce7;border:1px solid rgba(102,126,234,.15)}
.btn.s:hover{background:rgba(102,126,234,.15)}
/* ===== 提示弹窗（替换原生alert）===== */
.tip-overlay{position:fixed;inset:0;background:rgba(20,16,40,.45);backdrop-filter:blur(14px) saturate(1.4);-webkit-backdrop-filter:blur(14px) saturate(1.4);display:flex;align-items:center;justify-content:center;z-index:9999;animation:tipIn .4s cubic-bezier(.22,1,.36,1)}
@keyframes tipIn{from{opacity:0;backdrop-filter:blur(0) saturate(1);-webkit-backdrop-filter:blur(0) saturate(1)}to{opacity:1;backdrop-filter:blur(14px) saturate(1.4);-webkit-backdrop-filter:blur(14px) saturate(1.4)}}
.tip-box{background:linear-gradient(180deg,rgba(60,50,90,.92),rgba(40,32,68,.92));border-radius:20px;padding:32px 36px 28px;text-align:center;min-width:280px;max-width:92vw;color:#fff;box-shadow:0 24px 60px rgba(0,0,0,.4),0 0 0 1px rgba(167,139,250,.25),inset 0 1px 0 rgba(255,255,255,.12);animation:tipPop .5s cubic-bezier(.22,1,.36,1);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px)}
@keyframes tipPop{0%{transform:scale(.85) translateY(12px);opacity:0}60%{transform:scale(1.03) translateY(0);opacity:1}100%{transform:scale(1) translateY(0);opacity:1}}
.tip-icon{font-size:46px;margin-bottom:14px;filter:drop-shadow(0 4px 12px rgba(167,139,250,.4))}
.tip-msg{color:rgba(255,255,255,.92);font-size:16px;line-height:1.6;margin-bottom:24px;white-space:nowrap;font-weight:550}
.tip-btn{display:inline-block;padding:11px 38px;border:none;border-radius:13px;background:linear-gradient(135deg,#7c6fd0,#5b4b8a);color:#fff;font-size:15px;font-weight:550;cursor:pointer;letter-spacing:1px;transition:all .25s cubic-bezier(.22,1,.36,1);box-shadow:0 4px 14px rgba(91,75,138,.4),inset 0 1px 0 rgba(255,255,255,.15)}
.tip-btn:hover{transform:translateY(-2px);box-shadow:0 8px 22px rgba(91,75,138,.55),inset 0 1px 0 rgba(255,255,255,.2)}
.tip-btn:active{transform:translateY(0) scale(.97)}
.tip-btns{display:flex;gap:14px;justify-content:center}
.tip-btn.cancel{background:linear-gradient(135deg,rgba(255,255,255,.12),rgba(255,255,255,.06));color:rgba(255,255,255,.85);box-shadow:0 4px 14px rgba(0,0,0,.2),inset 0 1px 0 rgba(255,255,255,.1)}
.tip-btn.cancel:hover{transform:translateY(-2px);box-shadow:0 8px 22px rgba(0,0,0,.3),inset 0 1px 0 rgba(255,255,255,.15)}
.tip-btn.ok{background:linear-gradient(135deg,#e8554e,#c0392b)}
/* 浅色主题下的提示弹窗 */
body[data-theme="light"] .tip-overlay{background:rgba(76,29,149,.18)}
body[data-theme="light"] .tip-box{background:linear-gradient(180deg,rgba(255,255,255,.95),rgba(248,245,255,.95));color:#4c1d95;box-shadow:0 24px 60px rgba(124,58,237,.25),0 0 0 1px rgba(124,58,237,.18),inset 0 1px 0 rgba(255,255,255,.8)}
body[data-theme="light"] .tip-msg{color:#4c1d95}
body[data-theme="light"] .tip-icon{filter:drop-shadow(0 4px 12px rgba(124,58,237,.3))}
body[data-theme="light"] .tip-btn{background:linear-gradient(135deg,#a78bfa,#7c3aed);color:#fff;box-shadow:0 4px 14px rgba(124,58,237,.35),inset 0 1px 0 rgba(255,255,255,.2)}
body[data-theme="light"] .tip-btn:hover{box-shadow:0 8px 22px rgba(124,58,237,.5),inset 0 1px 0 rgba(255,255,255,.25)}
body[data-theme="light"] .tip-btn.cancel{background:linear-gradient(135deg,rgba(124,58,237,.1),rgba(124,58,237,.05));color:#4c1d95;box-shadow:0 4px 14px rgba(124,58,237,.12),inset 0 1px 0 rgba(255,255,255,.5)}
body[data-theme="light"] .tip-btn.cancel:hover{background:linear-gradient(135deg,rgba(124,58,237,.18),rgba(124,58,237,.1))}
/* ===== 单元选择弹窗 ===== */
.unit-mask{position:fixed;inset:0;background:rgba(20,16,40,.5);backdrop-filter:blur(16px) saturate(1.4);-webkit-backdrop-filter:blur(16px) saturate(1.4);display:none;align-items:center;justify-content:center;z-index:999;animation:tipIn .35s cubic-bezier(.22,1,.36,1)}
.unit-box{background:linear-gradient(180deg,rgba(55,45,85,.94),rgba(35,28,60,.94));border-radius:22px;padding:0;width:380px;max-width:94vw;max-height:78vh;display:flex;flex-direction:column;color:#fff;box-shadow:0 28px 70px rgba(0,0,0,.45),0 0 0 1px rgba(167,139,250,.3),inset 0 1px 0 rgba(255,255,255,.1);animation:tipPop .45s cubic-bezier(.22,1,.36,1);overflow:hidden}
.unit-head{display:flex;align-items:center;justify-content:space-between;padding:18px 20px 14px;border-bottom:1px solid rgba(255,255,255,.1)}
.unit-title{font-size:18px;font-weight:700;letter-spacing:.5px}
.unit-close{width:34px;height:34px;border-radius:50%;border:none;background:rgba(255,255,255,.1);color:rgba(255,255,255,.6);font-size:16px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s}
.unit-close:hover{background:rgba(255,255,255,.16);color:#fff}
.unit-body{flex:1;overflow-y:auto;padding:12px 16px;display:flex;flex-direction:column;gap:8px}
.unit-item{display:flex;align-items:center;gap:12px;padding:12px 14px;border-radius:14px;background:rgba(255,255,255,.05);cursor:pointer;transition:all .2s;border:1.5px solid transparent}
.unit-item:hover{background:rgba(255,255,255,.1)}
.unit-item.sel{background:rgba(139,126,220,.2);border-color:rgba(167,139,250,.45)}
.unit-item .unit-chk{width:22px;height:22px;border-radius:6px;border:2px solid rgba(255,255,255,.35);flex-shrink:0;display:flex;align-items:center;justify-content:center;transition:all .2s;font-size:13px}
.unit-item.sel .unit-chk{border-color:#a78bfa;background:#a78bfa;color:#fff}
.unit-item .unit-info{flex:1;min-width:0}
.unit-item .unit-name{font-size:14px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.unit-item .unit-time{font-size:11px;color:rgba(255,255,255,.45);margin-top:2px}
.unit-item .unit-count{font-size:13px;color:rgba(255,255,255,.55);flex-shrink:0;font-weight:500}
.unit-loading{text-align:center;padding:30px;color:rgba(255,255,255,.5);font-size:14px}
.unit-empty{text-align:center;padding:30px;color:rgba(255,255,255,.4);font-size:14px}
.unit-ft{display:flex;gap:10px;padding:14px 16px 18px;border-top:1px solid rgba(255,255,255,.1)}
.unit-btn{flex:1;padding:12px;border-radius:12px;border:none;font-size:14px;font-weight:600;cursor:pointer;transition:all .2s}
.unit-btn.unit-confirm{background:linear-gradient(135deg,#a78bfa,#7c3aed);color:#fff;box-shadow:0 4px 14px rgba(124,58,237,.35)}
.unit-btn.unit-confirm:hover{transform:translateY(-2px);box-shadow:0 8px 20px rgba(124,58,237,.5)}
.unit-btn:not(.unit-confirm){background:rgba(255,255,255,.1);color:rgba(255,255,255,.75)}
.unit-btn:not(.unit-confirm):hover{background:rgba(255,255,255,.14);color:#fff}
.unit-ft .unit-confirm:disabled{opacity:.4;pointer-events:none}
/* 浅色主题 */
body[data-theme="light"] .unit-mask{background:rgba(76,29,149,.18)}
body[data-theme="light"] .unit-box{background:linear-gradient(180deg,rgba(255,255,255,.96),rgba(248,245,255,.96));color:#4c1d95;box-shadow:0 28px 70px rgba(124,58,237,.25),0 0 0 1px rgba(124,58,237,.18),inset 0 1px 0 rgba(255,255,255,.8)}
body[data-theme="light"] .unit-head{border-color:rgba(124,58,237,.1)}
body[data-theme="light"] .unit-close{background:rgba(124,58,237,.08);color:rgba(76,29,149,.5)}
body[data-theme="light"] .unit-close:hover{background:rgba(124,58,237,.18);color:#4c1d95}
body[data-theme="light"] .unit-item{background:rgba(124,58,237,.04)}
body[data-theme="light"] .unit-item:hover{background:rgba(124,58,237,.08)}
body[data-theme="light"] .unit-item.sel{background:rgba(139,92,246,.12);border-color:rgba(139,92,246,.35)}
body[data-theme="light"] .unit-item .unit-name{color:#4c1d95}
body[data-theme="light"] .unit-item .unit-count{color:rgba(76,29,149,.55)}
body[data-theme="light"] .unit-ft{border-color:rgba(124,58,237,.1)}
body[data-theme="light"] .unit-btn:not(.unit-confirm){background:rgba(124,58,237,.06);color:rgba(76,29,149,.7)}
body[data-theme="light"] .unit-btn:not(.unit-confirm):hover{background:rgba(124,58,237,.14);color:#4c1d95}
/* ===== 自由刷词关卡选择弹窗 — 设计师稿 ===== */
.solo-level-body{display:flex;flex-direction:column;gap:14px;padding:20px 24px 18px;overflow-y:auto}
.solo-level-card{display:flex;align-items:center;gap:16px;padding:20px 22px;border-radius:20px;cursor:pointer;position:relative;
  background:rgba(255,255,255,.065);
  border:1.5px solid rgba(255,255,255,.09);
  box-shadow:0 1px 6px rgba(0,0,0,.18);
  transition:all .22s ease;
  letter-spacing:-.005em}
.solo-level-card:hover{
  background:rgba(255,255,255,.10);
  border-color:rgba(255,255,255,.14);
  box-shadow:0 3px 14px rgba(0,0,0,.24)}
.solo-level-card.sel{
  background:rgba(0,102,204,.11);
  border:2px solid #0066CC;
  box-shadow:0 0 20px rgba(0,102,204,.30),0 0 40px rgba(0,102,204,.12),inset 0 0 0 1px rgba(0,150,255,.15)}
.solo-level-icon{width:52px;height:52px;flex-shrink:0;display:flex;align-items:center;justify-content:center;border-radius:16px;
  background:linear-gradient(155deg,rgba(147,112,219,.22),rgba(120,81,169,.14));
  box-shadow:0 2px 10px rgba(139,92,246,.15)}
.solo-level-icon svg{width:32px;height:32px;display:block}
.solo-level-info{flex:1;min-width:0}
.solo-badge{position:absolute;top:12px;right:16px;font-size:11px;font-weight:600;color:#a5b4fc;background:rgba(99,102,241,.2);border:1px solid rgba(99,102,241,.38);padding:3px 11px;border-radius:9px;letter-spacing:.02em}
.solo-level-name{font-size:16px;font-weight:650;color:#eef0ff;margin-bottom:5px;letter-spacing:-.02em}
.solo-level-desc{font-size:13px;color:rgba(220,215,240,.65);line-height:1.52;letter-spacing:.005em}
.solo-level-err{color:#fca5a5;font-size:12px;padding:8px 16px 2px;line-height:1.4;display:none;text-align:center;animation:shake .35s ease}
body[data-theme="light"] .solo-level-err{color:#dc2626}

/* 选择关卡弹窗容器 — 设计师稿 */
.solo-level-box{
  background:rgba(56,48,82,.78) !important;
  backdrop-filter:blur(18px) saturate(140%);
  -webkit-backdrop-filter:blur(18px) saturate(140%);
  border-radius:30px !important;
  border:1px solid rgba(255,255,255,.13) !important;
  box-shadow:0 28px 88px rgba(0,0,0,.42),0 10px 36px rgba(100,70,170,.2),0 0 0 1px rgba(180,165,220,.12);
  color:#eef0ff !important;
  width:420px;max-width:92vw}
.solo-level-box .unit-head{
  padding:24px 24px 18px;border-bottom:1px solid rgba(255,255,255,.07)}
.solo-level-box .unit-title{
  font-size:19px;font-weight:750;color:#eef0ff;letter-spacing:-.04em}
.solo-level-box .unit-close{
  color:rgba(200,195,225,.55);opacity:.7;transition:opacity .18s,color .18s}
.solo-level-box .unit-close:hover{opacity:1;color:#eef0ff}
.solo-level-box .unit-ft{
  padding:16px 24px 22px;border-top:1px solid rgba(255,255,255,.07);gap:14px}
.solo-level-box .unit-btn.primary{
  background:linear-gradient(135deg,#8b5cf6,#7c3aed) !important;
  color:#fff !important;
  font-weight:620;font-size:15.5px;letter-spacing:-.01em;
  box-shadow:0 4px 18px rgba(124,58,237,.42);border:none;padding:14px 32px;border-radius:15px;
  transition:all .22s ease}
.solo-level-box .unit-btn.primary:hover{
  transform:translateY(-1px);
  box-shadow:0 6px 26px rgba(124,58,237,.52)}
.solo-level-box .unit-btn.primary:active{transform:scale(.97)}
.solo-level-box .unit-btn.secondary{
  background:transparent !important;
  color:rgba(210,205,230,.75) !important;
  font-weight:520;font-size:14.5px;
  border:1.5px solid rgba(255,255,255,.14);padding:13px 28px;border-radius:15px;
  transition:all .2s ease}
.solo-level-box .unit-btn.secondary:hover{
  background:rgba(255,255,255,.07);border-color:rgba(255,255,255,.22);color:rgba(235,232,245,.9)}
/* notice 提醒 */
.solo-notice{font-size:13px;line-height:1.62;color:rgba(220,215,240,.72);text-align:left;padding:4px 0;letter-spacing:.005em}
.solo-level-tip{background:rgba(139,92,246,.13);color:rgba(235,232,245,.85);transition:all .2s ease;border-radius:13px}
.solo-level-tip:hover{background:rgba(139,92,246,.21)}
.solo-level-tip.scope-learned{background:rgba(34,197,94,.15);color:#86efac;border:1px solid rgba(34,197,94,.33)}
.solo-level-tip.scope-unlearned{background:rgba(59,130,246,.14);color:#93c5fd;border:1px solid rgba(59,130,246,.30)}

/* ===== 浅色主题覆盖 ===== */
body[data-theme="light"] .solo-level-card{background:rgba(255,255,255,.74);border-color:rgba(0,0,0,.07);
  box-shadow:0 1px 6px rgba(0,0,0,.05)}
body[data-theme="light"] .solo-level-card:hover{background:rgba(255,255,255,.90);border-color:rgba(0,0,0,.11);
  box-shadow:0 3px 14px rgba(0,0,0,.08)}
body[data-theme="light"] .solo-level-card.sel{background:#fff;border-color:#0066CC;
  box-shadow:0 0 20px rgba(0,102,204,.18),0 0 40px rgba(0,102,204,.08)}
body[data-theme="light"] .solo-level-icon{background:linear-gradient(155deg,#f0eafe,#e8ddf8);
  box-shadow:0 2px 10px rgba(139,92,246,.12)}
body[data-theme="light"] .solo-badge{color:#4f46e5;background:rgba(79,70,229,.1);border-color:rgba(79,70,229,.22)}
body[data-theme="light"] .solo-level-name{color:#1a1638}
body[data-theme="light"] .solo-level-desc{color:#6b6680}
body[data-theme="light"] .solo-level-box{background:rgba(255,255,255,.80) !important;
  border-color:rgba(255,255,255,.60) !important;
  box-shadow:0 28px 88px rgba(0,0,0,.12),0 10px 36px rgba(124,58,237,.10),0 0 0 1px rgba(190,182,218,.15);
  color:#1a1638 !important}
body[data-theme="light"] .solo-level-box .unit-head{border-bottom-color:rgba(0,0,0,.06)}
body[data-theme="light"] .solo-level-box .unit-title{color:#1a1638}
body[data-theme="light"] .solo-level-box .unit-close{color:#999494}
body[data-theme="light"] .solo-level-box .unit-close:hover{color:#333}
body[data-theme="light"] .solo-level-box .unit-ft{border-top-color:rgba(0,0,0,.06)}
body[data-theme="light"] .solo-level-box .unit-btn.secondary{background:transparent !important;
  color:#6b6680 !important;border-color:rgba(0,0,0,.14)}
body[data-theme="light"] .solo-level-box .unit-btn.secondary:hover{background:rgba(0,0,0,.04);border-color:rgba(0,0,0,.22);color:#444}
body[data-theme="light"] .solo-notice{color:#3c3c43}
body[data-theme="light"] .solo-level-tip{background:rgba(139,92,246,.07);color:#5a5568}
body[data-theme="light"] .solo-level-tip:hover{background:rgba(139,92,246,.12)}
body[data-theme="light"] .solo-level-tip.scope-learned{background:rgba(34,197,94,.09);color:#15803d;border-color:rgba(34,197,94,.22)}
body[data-theme="light"] .solo-level-tip.scope-unlearned{background:rgba(59,130,246,.07);color:#1d4ed8;border-color:rgba(59,130,246,.18)}
.rh{display:none;position:fixed;inset:0;background:rgba(0,0,0,.92);z-index:999;align-items:center;justify-content:center;flex-direction:column;color:#fff;font-size:16px;text-align:center}
@media(max-width:560px) and (orientation:portrait){.rh.sb{display:flex}}
.stg{position:fixed;top:24px;right:28px;z-index:300;width:40px;height:40px;border-radius:14px;cursor:pointer;display:flex;align-items:center;justify-content:center;
  background:linear-gradient(145deg,rgba(255,255,255,.16),rgba(255,255,255,.04));
  border:1px solid rgba(255,255,255,.20);
  box-shadow:0 6px 18px rgba(0,0,0,.30),inset 0 1px 0 rgba(255,255,255,.28),inset 0 -1px 2px rgba(0,0,0,.12);
  backdrop-filter:blur(10px) saturate(150%);
  transition:transform .18s ease,box-shadow .18s ease,background .2s ease}
.stg:hover{transform:translateY(-1px);box-shadow:0 9px 22px rgba(0,0,0,.36),inset 0 1px 0 rgba(255,255,255,.32),inset 0 -1px 2px rgba(0,0,0,.12)}
.stg:active{transform:translateY(0) scale(.95)}
.stg .ic{width:22px;height:22px;display:block;filter:drop-shadow(0 1px 1px rgba(0,0,0,.25))}
.stg .spk{fill:url(#spkGrad)}
.stg .wave{fill:none;stroke:url(#waveGrad);stroke-width:1.9;stroke-linecap:round;opacity:1;transition:opacity .2s ease}
.stg .slash{fill:none;stroke:#ff5b6e;stroke-width:2.1;stroke-linecap:round;opacity:0;transition:opacity .2s ease;filter:drop-shadow(0 0 2px rgba(255,91,110,.5))}
.stg.muted .spk{fill:#9aa3b2}
.stg.muted .wave{opacity:0}
.stg.muted .slash{opacity:1}
/* 手机适配：小屏缩小按钮并避让刘海安全区 */
@media (max-width:600px){
  .stg{top:calc(14px + env(safe-area-inset-top,0px));right:calc(14px + env(safe-area-inset-right,0px));width:38px;height:38px;border-radius:12px}
  .stg .ic{width:20px;height:20px}
}
/* ===== 关卡地图 ===== */
.map-screen{display:none;position:fixed;inset:0;z-index:150;background:linear-gradient(160deg,#0d1b2a 0%,#1b2838 50%,#0d1b2a 100%);overflow-y:auto;padding:0 0 60px}
.map-header{position:sticky;top:0;z-index:10;display:flex;align-items:center;justify-content:space-between;padding:12px 16px;background:rgba(13,27,42,.95);backdrop-filter:blur(12px);border-bottom:1px solid rgba(255,255,255,.06)}
.map-title{color:#fff;font-size:18px;font-weight:800;margin:0;text-shadow:0 2px 12px rgba(102,126,234,.4)}
.map-progress{color:rgba(255,255,255,.7);font-size:14px;font-weight:550}
.map-body{padding:20px 16px}
.map-chapter{margin-bottom:24px}
.map-chapter-title{color:rgba(255,255,255,.8);font-size:15px;font-weight:700;text-align:center;margin-bottom:14px;letter-spacing:2px;text-shadow:0 1px 8px rgba(102,126,234,.3)}
.map-path{display:flex;flex-direction:column;align-items:center;gap:0}
.map-node{position:relative;display:flex;align-items:center;gap:12px;width:100%;max-width:380px;padding:8px 0;cursor:pointer}
.map-node:nth-child(odd){flex-direction:row;padding-left:8px}
.map-node:nth-child(even){flex-direction:row-reverse;padding-right:8px}
.map-connector{width:3px;height:20px;background:linear-gradient(to bottom,rgba(102,126,234,.4),rgba(102,126,234,.15));margin:0 auto;border-radius:2px}
.map-dot{width:52px;height:52px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:22px;flex-shrink:0;transition:all .3s;position:relative;border:3px solid transparent}
.map-dot.locked{background:rgba(255,255,255,.06);border-color:rgba(255,255,255,.1);opacity:.5}
.map-dot.available{background:linear-gradient(135deg,rgba(102,126,234,.3),rgba(168,85,247,.3));border-color:rgba(102,126,234,.6);animation:mapPulse 2s ease-in-out infinite;box-shadow:0 0 20px rgba(102,126,234,.3)}
.map-dot.cleared{background:linear-gradient(135deg,rgba(46,204,113,.3),rgba(39,174,96,.3));border-color:rgba(46,204,113,.6);box-shadow:0 0 16px rgba(46,204,113,.2)}
.map-dot.perfect{background:linear-gradient(135deg,rgba(255,215,0,.3),rgba(255,165,0,.3));border-color:rgba(255,215,0,.6);box-shadow:0 0 20px rgba(255,215,0,.3)}
@keyframes mapPulse{0%,100%{transform:scale(1);box-shadow:0 0 20px rgba(102,126,234,.3)}50%{transform:scale(1.08);box-shadow:0 0 30px rgba(102,126,234,.5)}}
.map-info{flex:1;min-width:0}
.map-info-name{color:#fff;font-size:14px;font-weight:700;margin-bottom:2px}
.map-info-sub{color:rgba(255,255,255,.4);font-size:11px}
.map-info-score{color:rgba(255,255,255,.5);font-size:11px;margin-top:2px}
.map-node.locked{cursor:default;pointer-events:none}
.map-node.locked .map-info-name{color:rgba(255,255,255,.3)}
.map-node:not(.locked):hover .map-dot{transform:scale(1.12)}
.map-node:not(.locked):active .map-dot{transform:scale(.95)}
.wt{position:relative}
.mg .mc:nth-child(3){display:none}
/* 每日打卡 streak */
.streak-pill{display:none;align-items:center;gap:4px;padding:4px 10px;border-radius:999px;background:rgba(255,140,0,.14);border:1px solid rgba(255,160,60,.3);color:#ffd9a8;font-size:12px;font-weight:550;backdrop-filter:blur(8px);box-shadow:0 2px 10px rgba(0,0,0,.15);animation:streakPop .5s ease;flex-shrink:0;margin-left:-4px}
.streak-pill b{color:#ffb86b;font-weight:800}
@keyframes streakPop{from{transform:scale(.7);opacity:0}to{transform:scale(1);opacity:1}}
@media(max-width:560px){.streak-pill{font-size:13px;padding:6px 14px}}
/* 设置弹窗 */
/* 音乐设置弹窗 */
.music-modal-box{background:linear-gradient(135deg,#4a3a8a,#6b5bce);border-radius:22px;padding:26px 28px;text-align:center;max-width:360px;width:88%;color:#fff;
  box-shadow:0 24px 72px rgba(107,91,206,.4),inset 0 1px 0 rgba(255,255,255,.14);
  animation:pi .35s cubic-bezier(.34,1.56,.64,1)}
.music-modal-box h2{font-size:20px;margin:0 0 6px}
.set-box{background:linear-gradient(135deg,#5b4b8a,#764ba2);border-radius:24px;padding:30px 28px;text-align:center;max-width:380px;width:90%;color:#fff;box-shadow:0 24px 80px rgba(118,75,162,.45),inset 0 1px 0 rgba(255,255,255,.15);animation:pi .4s cubic-bezier(.34,1.56,.64,1)}
.set-box h2{margin:0 0 6px}
.set-sub{font-size:13px;color:rgba(255,255,255,.7);margin:0 0 18px}
.set-list{display:flex;flex-direction:column;gap:2px;text-align:left}
.set-row{display:flex;align-items:center;justify-content:space-between;padding:14px 6px;border-bottom:1px solid rgba(255,255,255,.12)}
.set-row:last-child{border-bottom:none}
.set-label{font-size:15px;font-weight:550;display:flex;align-items:center;gap:8px}
.set-switch{width:50px;height:28px;border-radius:14px;background:rgba(255,255,255,.2);position:relative;cursor:pointer;transition:background .25s;flex:none}
.set-switch::after{content:'';position:absolute;top:3px;left:3px;width:22px;height:22px;border-radius:50%;background:#fff;transition:left .25s;box-shadow:0 1px 3px rgba(0,0,0,.3)}
.set-switch.on{background:linear-gradient(135deg,#a78bfa,#7c3aed);box-shadow:0 2px 8px rgba(124,58,237,.3),inset 0 1px 0 rgba(255,255,255,.18)}
.set-switch.on::after{left:25px}
.set-switch.dim{opacity:.4;pointer-events:none}
body[data-theme="light"] .set-switch{background:rgba(124,58,237,.15)}
body[data-theme="light"] .set-switch.on{background:linear-gradient(135deg,#a78bfa,#7c3aed);box-shadow:0 2px 8px rgba(124,58,237,.3)}
/* 设置弹窗图标（线条风 SVG） */
.set-icon-wrap{display:flex;justify-content:center;margin-bottom:6px}
.set-icon{width:48px;height:48px;color:rgba(255,255,255,.85);filter:drop-shadow(0 4px 10px rgba(167,139,250,.4))}
.set-row-icon{width:20px;height:20px;color:currentColor;flex:none}
body[data-theme="light"] .set-icon{color:#5b21b6;filter:drop-shadow(0 4px 10px rgba(124,58,237,.25))}
.set-actions{display:flex;flex-direction:column;gap:10px;margin-top:20px}
/* 个人账号 — 分组标题 */
.set-group-title{font-size:12px;font-weight:700;color:rgba(255,255,255,.45);margin:18px 0 6px;text-transform:uppercase;letter-spacing:1.5px}
/* 个人账号 — 信息卡片（头像 / 名称 / 邮箱） */
.set-profile{background:rgba(255,255,255,.08);border-radius:14px;padding:2px 14px}
.set-profile-row{display:flex;align-items:center;gap:12px;padding:12px 0;cursor:pointer;border-bottom:1px solid rgba(255,255,255,.08);transition:background .15s}
.set-profile-row:last-child{border-bottom:none}
.set-profile-row:active{background:rgba(255,255,255,.06)}
.set-profile-ico{width:20px;height:20px;color:rgba(255,255,255,.7);flex:none}
.set-profile-label{font-size:15px;font-weight:600;color:rgba(255,255,255,.92);flex:none}
.set-profile-val{margin-left:auto;font-size:14px;color:rgba(255,255,255,.7);max-width:52%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:right}
.set-profile-arrow{color:rgba(255,255,255,.4);font-size:20px;flex:none;margin-left:4px}
.set-avatar{width:34px;height:34px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;background:rgba(255,255,255,.15);font-size:18px}
/* 个人账号 — 操作列表（统一行风格，替代大色块按钮） */
.set-action-list{display:flex;flex-direction:column;border-radius:14px;overflow:hidden;background:rgba(255,255,255,.06)}
.set-action-row{display:flex;align-items:center;gap:12px;padding:13px 16px;width:100%;border:none;background:transparent;color:rgba(255,255,255,.88);font-size:15px;font-weight:600;cursor:pointer;transition:background .15s;border-bottom:1px solid rgba(255,255,255,.07);text-align:left}
.set-action-row:last-child{border-bottom:none}
.set-action-row:active{background:rgba(255,255,255,.09)}
.set-danger{color:#fca5a5!important}
.set-danger:active{background:rgba(252,107,107,.15)!important}
.set-row-go{margin-left:auto;color:rgba(255,255,255,.3);font-size:20px;font-weight:300}
/* 底部轻量关闭按钮 */
.set-close-btn{width:100%;padding:11px;margin-top:20px;border:1px solid rgba(255,255,255,.15);border-radius:12px;background:transparent;color:rgba(255,255,255,.5);font-size:14px;font-weight:500;cursor:pointer;transition:color .15s,background .15s,border-color .15s}
.set-close-btn:active{background:rgba(255,255,255,.06);color:rgba(255,255,255,.7);border-color:rgba(255,255,255,.25)}
/* 头像选择网格 */
.avatar-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin:6px 0 4px}
.avatar-cell{width:100%;aspect-ratio:1/1;border:none;border-radius:50%;background:rgba(255,255,255,.1);font-size:24px;cursor:pointer;transition:transform .15s,background .15s}
.avatar-cell:hover{background:rgba(255,255,255,.22);transform:scale(1.08)}
.avatar-cell:active{transform:scale(.94)}
body[data-theme="light"] .set-profile{background:rgba(124,58,237,.08)}
body[data-theme="light"] .set-profile-row{border-bottom-color:rgba(124,58,237,.12)}
body[data-theme="light"] .set-profile-row:active{background:rgba(124,58,237,.14)}
body[data-theme="light"] .set-profile-label{color:#4c1d95}
body[data-theme="light"] .set-profile-val{color:#6d28d9}
body[data-theme="light"] .set-profile-arrow{color:rgba(124,58,237,.4)}
body[data-theme="light"] .set-avatar{background:rgba(124,58,237,.12)}
body[data-theme="light"] .avatar-cell{background:rgba(124,58,237,.1)}
body[data-theme="light"] .avatar-cell:hover{background:rgba(124,58,237,.2)}
body[data-theme="light"] .set-group-title{color:rgba(124,58,237,.35)}
body[data-theme="light"] .set-action-list{background:rgba(124,58,237,.06)}
body[data-theme="light"] .set-action-row{color:#5b21b6;border-bottom-color:rgba(124,58,237,.1)}
body[data-theme="light"] .set-action-row:active{background:rgba(124,58,237,.1)}
body[data-theme="light"] .set-danger{color:#dc2626!important}
body[data-theme="light"] .set-danger:active{background:rgba(220,38,38,.08)!important}
body[data-theme="light"] .set-row-go{color:rgba(124,58,237,.3)}
body[data-theme="light"] .set-close-btn{border-color:rgba(124,58,237,.15);color:rgba(91,33,182,.45)}
body[data-theme="light"] .set-close-btn:active{background:rgba(124,58,237,.08);color:rgba(91,33,182,.65);border-color:rgba(124,58,237,.25)}
.set-actions .btn{width:100%;padding:13px;font-size:15px;font-weight:700}
.set-actions .btn-danger{background:#ff6b6b;color:#fff}
.set-actions .btn-cancel{background:rgba(255,255,255,.12);color:#fff}

/* ===== 学习热力图 ===== */
.heat-body{width:100%;margin:0 auto;padding:0 2px}
.heat-stats{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:14px;width:100%}
.heat-stat{background:rgba(255,255,255,.06);border-radius:12px;padding:12px 8px;text-align:center;border:1px solid rgba(255,255,255,.1)}
.heat-stat-num{font-size:24px;font-weight:800;color:#fff;line-height:1.2}
.heat-stat-label{font-size:11px;color:rgba(255,255,255,.55);margin-top:2px}
body[data-theme="light"] .heat-stat{background:rgba(124,58,237,.06);border-color:rgba(124,58,237,.12)}
body[data-theme="light"] .heat-stat-num{color:#5b21b6}
body[data-theme="light"] .heat-stat-label{color:rgba(91,33,182,.5)}
.heat-month{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px;padding:4px 0}
.heat-month-btn{width:30px;height:30px;border-radius:50%;border:1px solid rgba(255,255,255,.15);background:rgba(255,255,255,.06);color:rgba(255,255,255,.7);font-size:16px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s;flex:none}
.heat-month-btn:hover{background:rgba(167,139,250,.25);border-color:rgba(167,139,250,.4);color:#fff}
.heat-month-title{font-size:16px;font-weight:800;color:#fff;letter-spacing:1px}
body[data-theme="light"] .heat-month-btn{background:rgba(124,58,237,.08);border-color:rgba(124,58,237,.2);color:#5b21b6}
body[data-theme="light"] .heat-month-btn:hover{background:rgba(124,58,237,.2)}
body[data-theme="light"] .heat-month-title{color:#5b21b6}
.heat-table{display:grid;grid-template-columns:repeat(7,1fr);gap:3px;margin-bottom:10px}
.heat-cell{aspect-ratio:1;border-radius:4px;display:flex;flex-direction:column;align-items:center;justify-content:center;font-size:10px;color:rgba(255,255,255,.85);cursor:default;position:relative;transition:transform .12s;min-width:0}
.heat-cell:hover{transform:scale(1.2);z-index:2}
.heat-day-header{font-size:11px;color:rgba(255,255,255,.4);text-align:center;padding:2px 0;font-weight:600;aspect-ratio:unset}
.heat-day-header:first-child{color:rgba(255,160,140,.6)}
.heat-day-header:last-child{color:rgba(255,160,140,.6)}
body[data-theme="light"] .heat-day-header{color:rgba(91,33,182,.4)}
body[data-theme="light"] .heat-day-header:first-child,
body[data-theme="light"] .heat-day-header:last-child{color:rgba(220,80,80,.55)}
.ht-tooltip{display:none;position:fixed;background:rgba(30,20,60,.96);border:1px solid rgba(255,255,255,.2);border-radius:10px;padding:12px 16px;font-size:13px;pointer-events:none;z-index:9999;white-space:nowrap;box-shadow:0 4px 20px rgba(0,0,0,.5);line-height:1.7}
body[data-theme="light"] .ht-tooltip{background:rgba(255,255,255,.97);border-color:rgba(124,58,237,.25)}
.ht-tooltip .tt-date{font-weight:600;color:#90caf9;font-size:14px;margin-bottom:4px}
body[data-theme="light"] .tt-date{color:#5b21b6}
.ht-tooltip .tt-row{color:rgba(255,255,255,.6);display:flex;align-items:center;gap:6px}
body[data-theme="light"] .tt-row{color:rgba(124,58,237,.6)}
.ht-tooltip .tt-row strong{color:#fff;font-weight:600}
body[data-theme="light"] .tt-row strong{color:#5b21b6}
.ht-tooltip .tt-icon{width:15px;height:15px;flex-shrink:0}
.tt-icon-new{color:#4fc3f7}
.tt-icon-rev{color:#aed581}
.heat-legend{display:flex;align-items:center;justify-content:center;gap:6px;margin-top:6px;padding:6px 0;border-top:1px solid rgba(255,255,255,.1)}
.heat-legend span{font-size:10px;color:rgba(255,255,255,.4)}
.heat-legend-box{display:flex;gap:2px}
.heat-legend-cell{width:14px;height:14px;border-radius:3px}
body[data-theme="light"] .heat-legend{border-color:rgba(124,58,237,.08)}
