/* ============ 英语小达人 · Duolingo 风格样式 ============ */
:root{
  --green:#58cc02; --green-dark:#46a302; --green-light:#d7ffb8;
  --blue:#1cb0f6; --blue-dark:#1899d6;
  --red:#ff4b4b; --red-light:#ffdfe0;
  --yellow:#ffc800; --purple:#ce82ff;
  --gray:#f7f7f7; --gray-border:#e5e5e5; --gray-text:#777;
  --ink:#4b4b4b; --white:#fff;
  --radius:16px;
}
*{box-sizing:border-box;margin:0;padding:0;}
html,body{height:100%;}
body{
  font-family:'Nunito','Segoe UI','PingFang SC','Hiragino Sans GB','Microsoft YaHei',sans-serif;
  color:var(--ink); background:#fff; -webkit-font-smoothing:antialiased;
}
button{font-family:inherit;cursor:pointer;border:none;background:none;color:inherit;font-size:16px;}
.hidden{display:none !important;}
#app{max-width:640px;margin:0 auto;padding:0 16px 90px;min-height:100vh;}

/* ---------- 顶栏 ---------- */
.topbar{
  position:sticky;top:0;z-index:20;display:flex;justify-content:space-between;
  align-items:center;padding:12px 0;background:#fff;border-bottom:2px solid var(--gray-border);
}
.brand{font-weight:900;font-size:19px;color:var(--green);letter-spacing:.5px;}
.chip{
  display:inline-flex;align-items:center;gap:4px;background:var(--gray);
  border-radius:999px;padding:5px 13px;font-weight:800;font-size:14px;margin-left:8px;
}

/* ---------- 底部标签栏 ---------- */
.tabbar{
  position:sticky;top:55px;z-index:19;display:grid;grid-template-columns:repeat(5,1fr);
  gap:6px;padding:10px 0 12px;background:#fff;
}
.tab{padding:10px 4px;border-radius:12px;font-weight:800;font-size:14px;color:var(--gray-text);transition:all .15s;}
.tab.active{background:var(--green);color:#fff;box-shadow:0 3px 0 var(--green-dark);}

/* ---------- 通用按钮 ---------- */
.btn{
  display:inline-block;padding:12px 22px;border-radius:14px;font-weight:900;font-size:16px;
  transition:transform .1s, box-shadow .1s;user-select:none;
}
.btn:active{transform:translateY(2px);}
.btn-green{background:var(--green);color:#fff;box-shadow:0 4px 0 var(--green-dark);}
.btn-green:active{box-shadow:0 2px 0 var(--green-dark);}
.btn-ghost{background:var(--white);color:var(--gray-text);border:2px solid var(--gray-border);}
.btn-big{width:100%;padding:15px;font-size:18px;border-radius:16px;margin-top:12px;}
.btn.disabled{opacity:.45;pointer-events:none;}

/* ---------- 首页 ---------- */
.hero{
  display:flex;align-items:center;gap:16px;margin-top:14px;padding:22px;
  background:linear-gradient(135deg,#58cc02 0%,#7ed957 100%);color:#fff;
  border-radius:24px;box-shadow:0 6px 0 var(--green-dark);
}
.hero .mascot{font-size:66px;animation:bounce 2s infinite;}
.hero h2{font-size:22px;font-weight:900;margin-bottom:4px;}
.hero p{font-size:15px;opacity:.95;}
.quick{display:flex;flex-wrap:wrap;gap:8px;margin-top:14px;}
.qchip{background:var(--gray);border-radius:999px;padding:8px 15px;font-weight:800;font-size:14px;}
.page-title{font-size:22px;font-weight:900;margin:16px 0 4px;}
.theme-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px;margin-top:12px;}
.theme-card{
  border:2px solid var(--gray-border);border-radius:20px;padding:18px 12px;
  text-align:center;background:#fff;transition:border-color .15s, transform .1s;
}
.theme-card:hover{border-color:var(--green);}
.theme-card.locked{opacity:.6;}
.tc-icon{
  width:58px;height:58px;border-radius:50%;display:flex;align-items:center;
  justify-content:center;font-size:30px;margin:0 auto 8px;
}
.tc-name{font-weight:900;font-size:16px;margin-bottom:6px;}
.tc-stars{font-size:13px;letter-spacing:1px;color:var(--gray-text);}
.star-on{color:var(--yellow);} .star-off{color:#ddd;}

/* ---------- 路径页（蛇形紧凑） ---------- */
.level-section{padding:10px;border-radius:20px;margin-top:14px;background:var(--gray);}
.level-section.locked{opacity:.7;}
.unit{margin-top:10px;background:#fff;border-radius:16px;padding:10px 10px 12px;}
.unit-head{display:flex;align-items:center;gap:8px;margin-bottom:8px;}
.unit-icon{width:32px;height:32px;border-radius:10px;display:flex;align-items:center;justify-content:center;font-size:18px;}
.unit-name{font-weight:900;font-size:15px;flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.unit-count{font-size:12px;color:var(--gray-text);font-weight:800;white-space:nowrap;}
.unit-done{font-size:12px;color:var(--green);font-weight:900;}
.nodes{display:flex;align-items:center;justify-content:center;gap:0;}
.connector{width:4px;height:30px;background:var(--gray-border);}
.connector.h{width:12px;height:4px;background:var(--gray-border);flex-shrink:0;}
.unit.done .connector{background:var(--green-light);}
.unit.done .connector.h{background:var(--green-light);}
.node{
  width:56px;display:flex;flex-direction:column;align-items:center;gap:2px;
  padding:0;position:relative;flex-shrink:0;
}
.node-icon{
  width:42px;height:42px;border-radius:50%;display:flex;align-items:center;
  justify-content:center;font-size:20px;color:#fff;transition:transform .15s;
}
.node.done .node-icon{background:var(--green);box-shadow:0 3px 0 var(--green-dark);}
.node.current .node-icon{background:var(--blue);box-shadow:0 3px 0 var(--blue-dark);}
.node.next .node-icon{animation:pulse 1.4s infinite;}
.node.locked .node-icon{background:var(--gray-border);color:#aaa;font-size:18px;}
.node:hover .node-icon{transform:scale(1.08);}
.node-name{font-size:10px;font-weight:800;color:var(--gray-text);white-space:nowrap;max-width:52px;overflow:hidden;text-overflow:ellipsis;}
.node-stars{font-size:9px;letter-spacing:0;color:var(--yellow);}
/* 蛇形折返：偶数主题行反向 */
.snake-row.rev .nodes{flex-direction:row-reverse;}
.snake-row.rev .unit-head{flex-direction:row-reverse;text-align:right;}
/* 升级测验紧凑行 */
.level-quiz-wrap{justify-content:center;margin-top:10px;background:#fff;border-radius:14px;padding:6px 0;}
.level-quiz-wrap .connector.h{width:12px;height:4px;}
/* ---------- 课程页 ---------- */
.lesson-head{display:flex;align-items:center;gap:10px;padding:14px 0 6px;}
.icon-btn{font-size:20px;padding:8px 10px;border-radius:10px;background:var(--gray);font-weight:900;}
.progress-wrap{flex:1;height:16px;background:var(--gray-border);border-radius:999px;overflow:hidden;}
.progress-fill{height:100%;background:var(--green);border-radius:999px;transition:width .3s ease;}
.counter{font-weight:900;font-size:14px;color:var(--gray-text);white-space:nowrap;}
.lesson-title{font-weight:900;font-size:16px;color:var(--gray-text);margin:4px 0 10px;}
.lesson-card{min-height:320px;}
.q-emoji{text-align:center;padding:18px 0 6px;}
.big-emoji{font-size:88px;display:block;animation:pop .35s ease;}
.q-zh{font-size:18px;font-weight:800;color:var(--gray-text);margin-top:6px;}
.q-prompt{font-size:17px;font-weight:900;text-align:center;margin:12px 0;}
.opt-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;}
.opt{
  border:2px solid var(--gray-border);border-radius:16px;padding:14px 8px;min-height:104px;
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;
  transition:background .15s, border-color .15s;
}
.opt:hover{border-color:var(--green);background:#f7fff0;}
.opt-en{font-weight:900;font-size:20px;}
.opt-zh{font-size:13px;color:var(--gray-text);}
.opt.correct{border-color:var(--green);background:var(--green-light);}
.opt.wrong{border-color:var(--red);background:var(--red-light);animation:shake .4s;}
.opt-grid.locked{pointer-events:none;}
.replay{
  display:block;margin:6px auto 0;font-size:30px;background:var(--gray);
  border-radius:50%;width:64px;height:64px;line-height:64px;text-align:center;
}
.replay:active{transform:scale(.92);}
.word-big{font-size:44px;font-weight:900;text-align:center;padding-top:22px;}
.sentence{font-size:22px;font-weight:800;text-align:center;padding:16px 8px 4px;line-height:1.6;}
.sentence .blank{color:var(--blue);text-decoration:underline;text-underline-offset:5px;}
.sentence-zh{text-align:center;font-size:14px;color:var(--gray-text);}
.slots{display:flex;justify-content:center;gap:8px;margin:16px 0;}
.slot{
  width:48px;height:52px;border:2px solid var(--gray-border);border-bottom-width:4px;
  border-radius:12px;font-size:24px;font-weight:900;text-transform:lowercase;
  display:flex;align-items:center;justify-content:center;background:#fff;
}
.slot.empty{border-style:dashed;}
.bank{display:flex;justify-content:center;flex-wrap:wrap;gap:8px;margin:10px 0 16px;}
.letter{
  width:48px;height:52px;border:2px solid var(--gray-border);border-radius:12px;
  font-size:22px;font-weight:900;text-transform:lowercase;background:var(--gray);
  display:flex;align-items:center;justify-content:center;transition:transform .1s;
}
.letter:hover{background:#eef7e2;transform:scale(1.06);}
.letter.off{opacity:.25;pointer-events:none;}
.match-wrap{display:flex;gap:12px;}
.match-col{flex:1;display:flex;flex-direction:column;gap:10px;}
.match-btn{
  border:2px solid var(--gray-border);border-radius:14px;padding:14px 6px;
  font-weight:900;font-size:17px;background:#fff;min-height:52px;transition:background .15s,border-color .15s;
}
.match-btn.left{font-size:20px;}
.match-btn:hover{border-color:var(--blue);}
.match-btn.selected{border-color:var(--blue);background:#ddf4ff;}
.match-btn.matched{border-color:var(--green);background:var(--green-light);pointer-events:none;opacity:.75;}
.match-btn.wrong{border-color:var(--red);background:var(--red-light);animation:shake .4s;}
.feedback-bar{min-height:52px;display:flex;align-items:center;justify-content:center;font-weight:900;font-size:17px;margin-top:14px;border-radius:14px;}
.feedback-bar.good{color:var(--green-dark);}
.feedback-bar.bad{color:var(--red);}

/* ---------- 结果弹窗 ---------- */
.overlay{
  position:fixed;inset:0;background:rgba(0,0,0,.45);display:flex;align-items:center;
  justify-content:center;z-index:50;padding:20px;
}
.result-card{
  background:#fff;border-radius:24px;padding:26px 24px;text-align:center;
  max-width:400px;width:100%;animation:pop .3s ease;
}
.result-card h2{font-size:24px;font-weight:900;margin-bottom:6px;}
.stars-big{font-size:46px;margin:10px 0 12px;letter-spacing:4px;}
.result-rows{font-size:16px;font-weight:800;color:var(--ink);line-height:2;}
.perfect-tag{display:inline-block;margin-top:8px;background:var(--yellow);color:#fff;font-weight:900;padding:6px 16px;border-radius:999px;font-size:14px;}

/* ---------- 徽章页 ---------- */
.badge-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px;margin-top:12px;}
.badge-card{border:2px solid var(--gray-border);border-radius:18px;padding:16px 10px;text-align:center;background:#fff;}
.badge-card.earned{border-color:var(--green);background:#f7fff0;}
.badge-card.locked{opacity:.55;filter:grayscale(1);}
.badge-icon{font-size:40px;display:block;margin-bottom:6px;}
.badge-name{font-weight:900;font-size:15px;margin-bottom:2px;}
.badge-desc{font-size:12px;color:var(--gray-text);}

/* ---------- 统计页 ---------- */
.stat-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px;margin-top:12px;}
.stat-card{background:var(--gray);border-radius:16px;padding:16px;text-align:center;}
.stat-num{font-size:30px;font-weight:900;color:var(--green-dark);}
.stat-label{font-size:13px;color:var(--gray-text);font-weight:800;margin-top:2px;}
.danger{margin-top:24px;color:var(--red);}

/* ---------- 连词成句 ---------- */
.build-slots{flex-wrap:wrap;min-height:56px;}
.build-slot{min-width:72px;padding:0 12px;font-size:15px;text-transform:none;}
.build-bank{flex-wrap:wrap;}
.build-tok{min-width:72px;padding:0 14px;font-size:15px;text-transform:none;}
/* ---------- 英英释义 ---------- */
.def-text{font-size:19px;font-weight:800;color:var(--blue-dark);padding:22px 12px 4px;line-height:1.7;}

/* ---------- 对话 ---------- */
.dialogue-box{margin:8px 0 14px;}
.dlog-line{display:flex;align-items:flex-start;gap:8px;margin-bottom:10px;}
.dlog-line.a{flex-direction:row;}
.dlog-line.b{flex-direction:row-reverse;}
.dlog-name{font-weight:900;font-size:13px;color:var(--gray-text);min-width:18px;text-align:center;}
.dlog-bubble{
  background:var(--gray);border-radius:14px;padding:9px 13px;font-weight:700;font-size:15px;
  max-width:75%;line-height:1.5;
}
.dlog-line.a .dlog-bubble{background:#ddf4ff;border-bottom-left-radius:4px;}
.dlog-line.b .dlog-bubble{background:var(--green-light);border-bottom-right-radius:4px;}
.dlog-audio{font-size:15px;padding:4px 7px;}
/* ---------- 阅读 ---------- */
.reading-box{
  background:#fffdf5;border:2px solid var(--gray-border);border-radius:14px;padding:14px;
  font-size:16px;line-height:1.9;max-height:280px;overflow:auto;margin:8px 0 10px;
}
.reading-words{display:flex;flex-wrap:wrap;gap:5px;margin-bottom:8px;}

/* ---------- 限时倒计时 ---------- */
.q-timer{display:flex;align-items:center;gap:8px;margin:2px 0 6px;}
.q-timer-fill{flex:1;height:8px;background:var(--green);border-radius:999px;transition:width 1s linear;}
.q-timer-fill.danger{background:var(--red);animation:pulse 0.6s infinite;}
.q-timer-sec{font-weight:900;font-size:14px;color:var(--gray-text);min-width:18px;text-align:center;}
/* ---------- 连击 ---------- */
.combo{font-weight:900;font-size:18px;color:var(--yellow);min-width:46px;text-align:center;animation:pop .3s;}
/* ---------- 跟读评测 ---------- */
.speak-status{text-align:center;margin:14px 0;min-height:50px;}
.speak-good{font-size:19px;font-weight:900;color:var(--green-dark);}
.speak-bad{font-size:15px;font-weight:800;color:var(--red);}
.speak-listen{font-size:16px;font-weight:900;color:var(--blue);animation:pulse 1.2s infinite;}
.speak-practice{font-size:14px;color:var(--gray-text);font-weight:700;}
.speak-actions{display:flex;gap:10px;justify-content:center;margin-top:10px;}
/* 跟读评测 · 云录音状态与分项评分 */
.speak-rec{display:flex;flex-direction:column;gap:10px;margin-top:6px;}
.speak-rec .btn-big{margin-top:0;}
/* 录音中：停止（红）与取消（次要）并排一行 */
.speak-rec.recording{flex-direction:row;align-items:stretch;gap:10px;}
.btn-stop{
  flex:1;display:flex;align-items:center;justify-content:center;gap:6px;
  padding:15px 10px;font-size:17px;font-weight:900;border-radius:14px;color:#fff;
  background:linear-gradient(135deg,#e04545,#ff5a5a);box-shadow:0 4px 0 #b32d2d;
  animation:stopPulse 1.5s ease infinite;
}
.btn-stop:active{transform:translateY(2px);box-shadow:0 2px 0 #b32d2d;}
.btn-stop .rec-dot{background:#fff;}
.btn-cancel{
  padding:15px 18px;font-size:15px;font-weight:900;border-radius:14px;
  background:#fdf9ef;color:#7a6a4a;border:2px solid #e0d5bc;
}
.btn-cancel:active{transform:translateY(2px);}
@keyframes stopPulse{
  0%,100%{box-shadow:0 4px 0 #b32d2d,0 0 0 0 rgba(255,80,80,.45);}
  50%{box-shadow:0 4px 0 #b32d2d,0 0 0 9px rgba(255,80,80,0);}
}
.rec-dot{display:inline-block;width:9px;height:9px;border-radius:50%;background:var(--red);margin-right:4px;animation:dotBlink 1s infinite;}
@keyframes dotBlink{0%,100%{opacity:1;}50%{opacity:.25;}}
.rec-time{font-weight:900;color:var(--blue);}
.speak-result{background:#fff;border:2px solid var(--gray-border);border-radius:14px;padding:12px 12px 10px;margin-top:8px;box-shadow:0 3px 10px rgba(0,0,0,.04);}
.speak-score{font-size:15px;font-weight:800;color:var(--ink);}
.speak-score b{font-size:28px;color:var(--blue-dark);margin:0 4px;}
.speak-weak{font-size:12px;color:var(--red);font-weight:800;display:block;margin-top:2px;}
.speak-band{font-size:16px;font-weight:900;margin:4px 0 8px;}
.band-excellent{color:var(--yellow);}
.band-great{color:var(--green-dark);}
.band-good{color:var(--blue);}
.band-fair{color:#d98e00;}
.band-low{color:var(--red);}
.speak-dims{display:flex;flex-direction:column;gap:6px;margin:6px 0 4px;}
.sw-dim{display:flex;align-items:center;gap:8px;font-size:13px;}
.sw-dim-label{width:80px;text-align:right;font-weight:800;color:var(--gray-text);flex-shrink:0;}
.sw-dim-bar{flex:1;height:9px;background:var(--gray);border-radius:5px;overflow:hidden;}
.sw-dim-bar i{display:block;height:100%;background:linear-gradient(90deg,#7ed957,#46a302);border-radius:5px;transition:width .4s;}
.sw-dim b{width:32px;text-align:right;font-weight:900;color:var(--ink);}
.speak-words{display:flex;flex-wrap:wrap;gap:6px;justify-content:center;margin-top:10px;}
.sw-word{display:inline-flex;flex-direction:column;align-items:center;padding:3px 9px 2px;border-radius:9px;font-weight:800;font-size:15px;line-height:1.2;}
.sw-word em{font-style:normal;font-size:10px;font-weight:900;opacity:.9;}
.sw-word.green{background:var(--green-light);color:#2f7d1d;}
.sw-word.yellow{background:#fff3c9;color:#9a7b00;}
.sw-word.red{background:var(--red-light);color:#c62828;}
/* ---------- 挑战结算 ---------- */
.challenge-score{font-size:44px;font-weight:900;color:var(--blue-dark);margin:8px 0;}

/* ---------- 每日彩蛋卡片 ---------- */
.daily-wrap{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:12px;}
@media(max-width:520px){.daily-wrap{grid-template-columns:1fr;}}
.card-box{
  background:#fff;border:2px solid var(--gray-border);border-radius:18px;padding:14px 16px;
  box-shadow:0 3px 12px rgba(0,0,0,.05);transition:transform .15s, box-shadow .15s;
}
.card-box:hover{transform:translateY(-2px);box-shadow:0 6px 18px rgba(0,0,0,.08);}
.card-title{font-weight:900;font-size:15px;margin-bottom:10px;display:flex;align-items:center;gap:6px;}
.fortune-card{border-color:#ffe1a3;}
.tasks-card{border-color:#cfe8ff;}
.dharma-card{border-color:#e3d5ff;}
.btn-yellow{background:var(--yellow);color:#fff;box-shadow:0 4px 0 #e0a800;width:100%;}
.btn-yellow:active{box-shadow:0 2px 0 #e0a800;}
.fortune-done{font-weight:800;font-size:14px;color:#b8860b;text-align:center;padding:6px 0;}
.task-row{display:flex;align-items:center;gap:8px;padding:5px 0;font-size:14px;}
.task-check{font-size:15px;}
.task-check.done{animation:pop .3s;}
.task-name{font-weight:700;}
.task-note{font-size:12px;color:var(--gray-text);margin-top:8px;text-align:center;font-weight:700;}
.dharma-row{display:flex;align-items:center;gap:10px;}
.dharma-row > div{flex:1;}
.dharma-sentence{font-weight:900;font-size:16px;color:var(--ink);line-height:1.5;}
.dharma-zh{font-size:12px;color:var(--gray-text);margin-top:2px;}
/* ---------- 灵宠 ---------- */
.pet-aura{animation:petFloat 3s ease-in-out infinite, petGlow 2.4s ease-in-out infinite;}
.pet-status{display:inline-block;margin-top:6px;font-size:12px;font-weight:900;color:#fff;background:rgba(0,0,0,.25);border-radius:999px;padding:3px 12px;}
@keyframes petFloat{0%,100%{transform:translateY(0);}50%{transform:translateY(-8px);}}
@keyframes petGlow{
  0%,100%{filter:drop-shadow(0 0 6px rgba(255,215,0,.7));}
  50%{filter:drop-shadow(0 0 18px rgba(255,215,0,1));}
}
/* ---------- 机缘金光 ---------- */
.fortune-fx{position:fixed;left:50%;top:50%;transform:translate(-50%,-50%);z-index:80;pointer-events:none;text-align:center;}
.fortune-burst{font-size:70px;animation:fortunePop .9s ease-out both;}
.fortune-text{font-size:22px;font-weight:900;color:var(--yellow);text-shadow:0 0 10px rgba(255,215,0,.8);margin-top:6px;}
@keyframes fortunePop{0%{transform:scale(0) rotate(-30deg);opacity:0;}40%{transform:scale(1.3) rotate(10deg);opacity:1;}100%{transform:scale(1) rotate(0);opacity:0;}}
/* ---------- Toast ---------- */
.toast{
  position:fixed;left:50%;bottom:110px;transform:translateX(-50%) translateY(20px);z-index:90;
  background:rgba(0,0,0,.82);color:#fff;font-weight:900;font-size:15px;
  padding:12px 22px;border-radius:999px;opacity:0;transition:all .3s;pointer-events:none;white-space:nowrap;
}
.toast.show{opacity:1;transform:translateX(-50%) translateY(0);}
/* ---------- 飞升特效 ---------- */
.ascend-fx{position:fixed;inset:0;z-index:75;pointer-events:none;display:flex;flex-direction:column;align-items:center;justify-content:center;}
.ascend-ray{
  position:absolute;inset:0;
  background:linear-gradient(180deg, rgba(255,255,255,0) 0%, rgba(255,240,180,.9) 35%, rgba(255,215,0,.85) 50%, rgba(255,240,180,.9) 65%, rgba(255,255,255,0) 100%);
  animation:ascendRay 3.4s ease-in forwards;
}
.ascend-text{position:relative;font-size:34px;font-weight:900;letter-spacing:6px;color:#8a5cf6;text-shadow:0 0 20px rgba(138,92,246,.8);animation:ascendText 3.4s ease-in forwards;}
.ascend-sub{position:relative;margin-top:14px;font-size:16px;font-weight:800;color:#b8860b;animation:ascendText 3.4s ease-in forwards;}
@keyframes ascendRay{0%{opacity:0;}25%{opacity:1;}75%{opacity:1;}100%{opacity:0;}}
@keyframes ascendText{0%{transform:translateY(40px);opacity:0;}30%{transform:translateY(0);opacity:1;}75%{opacity:1;}100%{opacity:0;}}

/* ---------- 修仙 · 突破特效 ---------- */
.bt-fx{position:fixed;inset:0;z-index:70;pointer-events:none;overflow:hidden;}
.bt-flash{
  position:absolute;inset:0;
  background:radial-gradient(circle, rgba(255,215,0,.9) 0%, rgba(255,215,0,.3) 30%, rgba(138,92,246,.15) 60%, transparent 75%);
  animation:btFlash 0.5s ease-out, btFade 2.4s ease-in 0.5s forwards;
}
.bt-core{
  position:absolute;left:50%;top:45%;transform:translate(-50%,-50%);
  font-size:90px;animation:btZoom 0.6s cubic-bezier(.2,1.4,.4,1) both, btFade 2s ease-in 0.8s forwards;
}
@keyframes btFlash{0%{opacity:0;}30%{opacity:1;}100%{opacity:1;}}
@keyframes btZoom{0%{transform:translate(-50%,-50%) scale(0);opacity:0;}100%{transform:translate(-50%,-50%) scale(1.4);opacity:1;}}
@keyframes btFade{to{opacity:0;}}
/* 境界九层标签 */
.level-layer{
  display:inline-block;font-size:12px;font-weight:900;color:#fff;background:linear-gradient(135deg,#ffb300,#ff6f00);
  border-radius:999px;padding:2px 10px;margin-left:6px;vertical-align:middle;
  box-shadow:0 2px 6px rgba(255,180,0,.4);
}

/* ---------- 等级区块 ---------- */
.level-section{background:#fff;border:2px solid var(--gray-border);border-radius:20px;padding:16px;margin-top:18px;}
.level-section.done{border-color:var(--green);}
.level-section.locked{opacity:.75;}
.level-head{display:flex;align-items:center;gap:12px;margin-bottom:12px;}
.level-icon{width:46px;height:46px;border-radius:12px;display:flex;align-items:center;justify-content:center;font-size:24px;flex-shrink:0;}
.level-info{flex:1;}
.level-name{font-weight:900;font-size:17px;}
.level-tag{font-size:11px;font-weight:800;color:#fff;background:var(--blue);border-radius:999px;padding:2px 8px;margin-left:6px;vertical-align:middle;}
.level-desc{font-size:12px;color:var(--gray-text);margin-top:2px;}
.level-status{font-size:12px;font-weight:900;border-radius:999px;padding:4px 10px;}
.level-status.done{background:var(--green-light);color:var(--green-dark);}
.level-status.doing{background:var(--blue);color:#fff;}
.level-status.locked{background:var(--gray);color:var(--gray-text);}
.level-empty{padding:18px;text-align:center;color:var(--gray-text);font-weight:700;font-size:14px;}
.level-quiz-wrap{margin-top:4px;}
/* 山门两级折叠（v153）：等级头/主题头可点击，箭头指示展开态 */
.level-head,.unit-head{cursor:pointer;user-select:none;}
.level-fold{font-size:13px;color:var(--gray-text);margin-left:8px;flex-shrink:0;transition:transform .2s;}
.unit-fold{font-size:12px;color:var(--gray-text);flex-shrink:0;margin-left:4px;transition:transform .2s;}
.snake-row.rev .unit-fold{margin-left:0;margin-right:4px;}
.level-body{margin-top:2px;}
/* ---------- 定级引导横幅 ---------- */
.placement-banner{
  margin-top:12px;background:var(--yellow);border-radius:14px;padding:12px 14px;
  display:flex;align-items:center;gap:10px;flex-wrap:wrap;
}
.placement-banner .pb-text{flex:1;font-weight:800;font-size:14px;color:#7a5b00;}

/* ---------- 重新定级/自选起点 ---------- */
.retest-row{display:flex;gap:8px;flex-wrap:wrap;align-items:center;}
.mp-tip{font-weight:800;font-size:15px;color:#333;margin-bottom:4px;text-align:left;}
.mp-sub{font-size:13px;color:var(--gray-text);margin-bottom:12px;line-height:1.5;text-align:left;}
.mp-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:8px;margin-bottom:12px;}
.mp-card{border:2px solid var(--gray-border);border-radius:12px;padding:10px 8px;background:#fff;display:flex;flex-direction:column;align-items:center;gap:4px;cursor:pointer;transition:all .15s;}
.mp-card.on{border-color:var(--green);background:#f3fbed;box-shadow:0 0 0 3px rgba(88,204,2,.15);}
.mp-icon{font-size:26px;width:44px;height:44px;border-radius:50%;display:flex;align-items:center;justify-content:center;}
.mp-name{font-weight:900;font-size:14px;}
.mp-meta{font-size:11px;color:var(--gray-text);}
.mp-cur{font-size:11px;font-weight:800;color:var(--green);}
.mp-cancel{margin-top:8px;}
.confirm-body{font-size:14px;line-height:1.6;color:#555;text-align:left;margin:10px 0 14px;}
.confirm-actions{display:flex;gap:10px;justify-content:center;}

/* ---------- 复习页 ---------- */
.review-chip{cursor:pointer;transition:background .15s;}
.review-chip:hover{background:#eef7e2;}
.review-list{margin-top:16px;}
.review-item{
  display:flex;align-items:center;gap:10px;background:#fff;border:1px solid var(--gray-border);
  border-radius:12px;padding:10px 14px;margin-bottom:8px;
}
.review-emoji{font-size:26px;}
.review-en{font-weight:900;font-size:16px;flex:1;}
.review-zh{color:var(--gray-text);font-size:13px;}
.review-tag{font-size:12px;font-weight:800;color:var(--gray-text);background:var(--gray);border-radius:999px;padding:3px 10px;}

/* ---------- 彩带 ---------- */
.confetti{position:fixed;inset:0;pointer-events:none;z-index:60;}

/* ---------- 动画 ---------- */
@keyframes bounce{0%,100%{transform:translateY(0);}50%{transform:translateY(-8px);}}
@keyframes pop{0%{transform:scale(.5);opacity:0;}100%{transform:scale(1);opacity:1;}}
@keyframes shake{0%,100%{transform:translateX(0);}20%{transform:translateX(-6px);}40%{transform:translateX(6px);}60%{transform:translateX(-4px);}80%{transform:translateX(4px);}}
@keyframes pulse{
  0%{box-shadow:0 4px 0 var(--blue-dark),0 0 0 0 rgba(28,176,246,.5);}
  70%{box-shadow:0 4px 0 var(--blue-dark),0 0 0 14px rgba(28,176,246,0);}
  100%{box-shadow:0 4px 0 var(--blue-dark),0 0 0 0 rgba(28,176,246,0);}
}
@media (max-width:420px){
  .big-emoji{font-size:72px;}
  .word-big{font-size:36px;}
}

/* ---------- 第三轮：修士面板 ---------- */
.cult-panel{
  display:grid;grid-template-columns:1.6fr 1fr 1fr 1fr;gap:10px;margin-top:14px;
}
.cp-cell{
  background:#fff;border:2px solid var(--gray-border);border-radius:18px;
  padding:12px 8px;text-align:center;display:flex;flex-direction:column;
  align-items:center;justify-content:center;gap:2px;
}
.cp-main{grid-column:1/-1;flex-direction:row;text-align:left;gap:14px;
  background:linear-gradient(135deg,#2b1a4e 0%,#4a2d7a 100%);border-color:#5b3fa0;color:#fff;}
.cp-icon{font-size:44px;animation:bounce 2s infinite;}
.cp-info{flex:1;min-width:0;}
.cp-title{font-weight:900;font-size:17px;}
.cp-realm{font-size:12px;opacity:.85;margin:3px 0 6px;}
.cp-bar{height:9px;background:rgba(255,255,255,.22);border-radius:999px;overflow:hidden;}
.cp-bar-fill{height:100%;background:linear-gradient(90deg,#ffd54a,#ff9f1a);border-radius:999px;transition:width .4s ease;}
.cp-num{font-weight:900;font-size:19px;}
.cp-lbl{font-size:11px;color:var(--gray-text);font-weight:800;}
.cp-main .cp-lbl{color:rgba(255,255,255,.75);}

/* ---------- 第三轮：首页行动区 ---------- */
.home-acts{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:12px;}
.btn-purple{background:var(--purple,#7b5cd6);color:#fff;box-shadow:0 4px 0 #5d41b0;}
.btn-purple:active{box-shadow:0 2px 0 #5d41b0;}
.home-acts .btn{width:100%;}

/* ---------- 第三轮：主题区 ---------- */
.theme-sec{margin-top:6px;}
.level-jump{
  display:block;width:100%;margin-top:10px;padding:14px;border-radius:14px;
  border:2px dashed var(--gray-border);background:#fafafa;font-weight:900;font-size:15px;color:var(--gray-text);
}
.level-jump.locked{opacity:.6;}

/* ---------- 第三轮：宝箱盲盒 ---------- */
.chest-box{
  margin-top:16px;padding:14px;border:2px dashed #ffb84d;border-radius:18px;
  background:linear-gradient(135deg,#fff8e8,#ffe9c2);cursor:pointer;text-align:center;
  transition:transform .1s;
}
.chest-box:active{transform:scale(.97);}
.chest-hint{font-size:13px;font-weight:800;color:#8a5a00;margin-bottom:6px;}
.chest-closed{font-size:56px;animation:bounce 1.6s infinite;}
.chest-box.opening{border-style:solid;border-color:#ffb84d;background:linear-gradient(135deg,#fffdf5,#fff3da);}
.chest-burst{font-size:40px;animation:pop .5s ease;}
.chest-artifact{font-size:72px;margin:6px 0;animation:pop .6s ease;}
.chest-name{font-weight:900;font-size:20px;}
.chest-rarity{font-weight:900;font-size:13px;margin:3px 0 6px;}
.chest-rarity.common,.art-rarity.common{color:#8a8f98;}
.chest-rarity.rare,.art-rarity.rare{color:#1ca0f6;}
.chest-rarity.epic,.art-rarity.epic{color:#a34ee4;}
.chest-rarity.legend,.art-rarity.legend{color:#ff9f1a;}
.chest-desc{font-size:13px;color:var(--gray-text);margin:4px auto 8px;max-width:260px;}
.chest-stones{font-weight:900;font-size:14px;color:#8a5a00;}
.chest-total{font-size:12px;color:var(--gray-text);margin-top:4px;}

/* ---------- 第三轮：法宝收藏 ---------- */
.artifact-sec{margin-top:18px;}
.artifact-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-top:10px;}
.artifact-card{
  border:2px solid var(--gray-border);border-radius:16px;padding:12px 6px;text-align:center;background:#fff;
}
.artifact-card.common{border-color:#d8dce3;}
.artifact-card.rare{border-color:#9cd6ff;}
.artifact-card.epic{border-color:#d0a7f5;}
.artifact-card.legend{border-color:#ffd08a;box-shadow:0 0 12px rgba(255,159,26,.25);}
.art-icon{font-size:36px;}
.art-name{font-weight:900;font-size:14px;margin-top:4px;}
.art-rarity{font-size:11px;font-weight:900;margin-top:2px;}
.art-desc{font-size:11px;color:var(--gray-text);margin-top:4px;line-height:1.4;}
.artifact-empty{text-align:center;padding:22px 10px;color:var(--gray-text);font-weight:800;font-size:14px;}
@media(max-width:420px){.artifact-grid{grid-template-columns:repeat(2,1fr);}}

/* ---------- 第三轮：语音评测细化 ---------- */
.speak-bad{line-height:1.7;font-size:14px;}

/* ---------- 第四轮：洞府四区（6 合一：仙库/道身/图鉴/宗门） ---------- */
.dwelling-tabs{display:flex;gap:6px;margin-top:16px;border-bottom:2px solid var(--gray-border);padding-bottom:10px;}
.dwell-tab{
  flex:1;padding:10px 4px;border-radius:12px 12px 0 0;font-weight:900;font-size:14px;white-space:nowrap;
  color:var(--gray-text);background:var(--gray);
}
.dwell-tab.active{background:var(--green);color:#fff;}
/* 组内 2 段子切换（仙库：储物/商城；道身：人偶/图谱） */
.dwell-seg{display:flex;gap:6px;background:var(--gray);border-radius:12px;padding:4px;margin-bottom:12px;}
.dwell-seg-btn{
  flex:1;padding:8px 4px;border-radius:9px;font-weight:900;font-size:13px;white-space:nowrap;
  color:var(--gray-text);
}
.dwell-seg-btn.active{background:var(--green);color:#fff;box-shadow:0 2px 0 var(--green-dark);}
.dwelling-content{margin-top:14px;}
/* 首页：洞府内务快捷入口（主入口 → 子功能） */
.dwell-quick{display:flex;flex-wrap:wrap;gap:8px;margin-top:14px;padding:14px;border-radius:18px;background:var(--white);border:2px solid var(--gray-border);}
.dwell-quick-title{width:100%;font-size:15px;font-weight:900;color:var(--ink);margin-bottom:4px;}
.dwell-quick-btn{
  flex:1 1 40%;padding:11px 6px;border-radius:14px;font-weight:900;font-size:14px;
  color:var(--gray-text);background:var(--gray);
}
.dwell-quick-btn.active{background:var(--green);color:#fff;}
/* 窄屏：洞府四区 Tab 更紧凑 */
@media(max-width:420px){
  .dwelling-tabs{gap:4px;}
  .dwell-tab{font-size:12.5px;padding:9px 2px;}
  .dwell-seg-btn{font-size:12.5px;padding:7px 2px;}
}
.dwell-box{padding:2px 0;}
.dwell-sub{font-size:17px;font-weight:900;margin:18px 0 10px;color:var(--ink);}
.stone-banner{
  display:flex;align-items:center;gap:10px;padding:14px 18px;border-radius:18px;
  background:linear-gradient(135deg,#fff8e0,#ffe9b8);border:2px solid #ffd54a;margin-bottom:14px;
}
.stone-icon{font-size:30px;}
.stone-num{font-size:26px;font-weight:900;color:#8a5a00;}
.stone-lbl{font-size:14px;color:#8a5a00;font-weight:800;}
.inventory-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;}
@media(max-width:420px){.inventory-grid{grid-template-columns:repeat(2,1fr);}}
.artifact-card .btn{margin-top:8px;width:100%;padding:8px 4px;font-size:13px;}
.artifact-card.equipped{border-color:var(--green);box-shadow:0 0 10px rgba(88,204,2,.3);}
.art-slot-lbl{font-size:11px;font-weight:800;color:var(--gray-text);margin-top:2px;}
.item-card{border-color:#ffd54a;}

/* ---------- 第四轮：人偶展示 ---------- */
.avatar-stage{
  position:relative;width:150px;height:150px;margin:16px auto;display:flex;align-items:center;justify-content:center;
  border-radius:50%;background:radial-gradient(circle,#f3ecff,#e2d4ff);
}
.avatar-core{font-size:84px;line-height:1;position:relative;z-index:2;animation:bounce 2s infinite;}
.avatar-slot{position:absolute;font-size:30px;z-index:3;filter:drop-shadow(0 2px 3px rgba(0,0,0,.25));}
.avatar-slot.weapon{right:-4px;top:14px;transform:rotate(-20deg);}
.avatar-slot.artifact{left:-8px;top:40px;transform:rotate(15deg);}
.avatar-aura{position:absolute;font-size:110px;opacity:.55;z-index:1;animation:spin 6s linear infinite;}
.avatar-name{text-align:center;font-weight:900;font-size:18px;margin-bottom:6px;}
.cosmetic-row{display:flex;flex-wrap:wrap;gap:8px;}
.cosmetic-chip{
  padding:9px 14px;border-radius:999px;font-weight:800;font-size:14px;background:var(--gray);
  border:2px solid transparent;
}
.cosmetic-chip.active{background:#fff;border-color:var(--green);color:var(--green);}

/* ---------- 第四轮：商城 ---------- */
.shop-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:8px;}
/* 短名装扮类（皮肤/光环/发饰/服装/背景/道具）3 列高密度 */
.shop-grid-3{grid-template-columns:repeat(3,1fr);gap:7px;}
@media(max-width:420px){.shop-grid{grid-template-columns:repeat(2,1fr);}.shop-grid-3{grid-template-columns:repeat(3,1fr);}}
.shop-card{
  border:2px solid var(--gray-border);border-radius:12px;padding:8px 4px;text-align:center;background:#fff;
  display:flex;flex-direction:column;align-items:center;justify-content:space-between;min-height:0;
}
.shop-icon{font-size:28px;line-height:1.15;}
.shop-name{font-weight:900;font-size:13px;margin-top:3px;width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.shop-desc{font-size:10px;color:var(--gray-text);margin:2px 0 5px;line-height:1.3;width:100%;
  display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;overflow:hidden;}
.shop-card .btn{width:100%;padding:6px 2px;font-size:12px;border-radius:9px;margin-top:auto;}

/* ---------- 第四轮：hero 人偶 + 光环 ---------- */
.mascot-wrap{position:relative;width:90px;height:90px;flex-shrink:0;}
.hero-gear{position:absolute;font-size:26px;z-index:3;filter:drop-shadow(0 2px 2px rgba(0,0,0,.2));}
.hero-gear{right:-6px;top:6px;transform:rotate(-18deg);}
.hero-gear.arti{left:-8px;top:26px;transform:rotate(14deg);}
.hero-aura{position:absolute;font-size:64px;opacity:.6;z-index:1;animation:spin 7s linear infinite;}
.hero-aura{left:-6px;top:10px;}
.hero-aura.aura-rainbow{color:transparent;}
.mini-avatar{position:relative;font-size:22px;margin-right:4px;flex-shrink:0;}
.mini-core{position:relative;z-index:2;}
.mini-gear{position:absolute;font-size:12px;z-index:3;right:-4px;top:-2px;}
.mini-gear.arti{left:-5px;top:4px;}
.mini-aura{position:absolute;font-size:26px;opacity:.6;z-index:1;left:-3px;top:-4px;animation:spin 6s linear infinite;}

/* 光环动画 */
@keyframes spin{from{transform:rotate(0deg);}to{transform:rotate(360deg);}}
.aura-rainbow{filter:hue-rotate(0deg);animation:spin 6s linear infinite, hue 3s linear infinite;}
@keyframes hue{from{filter:hue-rotate(0deg);}to{filter:hue-rotate(360deg);}}
.aura-fire{animation:spin 5s linear infinite, flick 0.8s ease infinite;}
@keyframes flick{0%,100%{opacity:.6;}50%{opacity:1;}}
.aura-star{animation:spin 8s linear infinite, twinkle 1.2s ease infinite;}
@keyframes twinkle{0%,100%{opacity:.5;}50%{opacity:1;}}
.aura-thunder{animation:spin 3s linear infinite, flick 0.5s ease infinite;}
/* ---------- 第五轮：心魔录修为体系 ---------- */
.realm-bar-wrap{margin-top:12px;}
.realm-bar{height:14px;background:var(--gray-border);border-radius:999px;overflow:hidden;}
.realm-bar-fill{height:100%;background:linear-gradient(90deg,#58cc02,#7ed957);border-radius:999px;transition:width .5s ease;}
.realm-bar-txt{font-size:12px;font-weight:800;color:var(--gray-text);margin-top:5px;text-align:center;}
.review-item{display:flex;align-items:center;gap:10px;padding:12px;border-radius:14px;background:#fff;border:2px solid var(--gray-border);margin-top:8px;}
.review-item.wstate-danger{border-color:var(--red);background:var(--red-light);}
.review-item.wstate-mastered{border-color:var(--green);background:var(--green-light);}
.review-item.wstate-learning{border-color:#ffd54a;background:#fffdf0;}
.review-tag{font-size:12px;font-weight:900;margin-left:auto;white-space:nowrap;}
/* ---------- 第五轮：修行图谱 + 周报 ---------- */
.profile-dims{margin-top:10px;}
.profile-dim{display:flex;align-items:center;gap:10px;margin-top:10px;}
.pd-label{width:70px;font-weight:900;font-size:14px;flex-shrink:0;}
.pd-seen{display:block;font-size:10px;color:var(--gray-text);font-weight:700;}
.pd-bar{flex:1;height:12px;background:var(--gray-border);border-radius:999px;overflow:hidden;}
.pd-fill{height:100%;border-radius:999px;transition:width .5s ease;background:#ffc800;}
.pd-fill.good{background:var(--green);}
.pd-fill.mid{background:#ffc800;}
.pd-fill.low{background:var(--red);}
.pd-pct{width:44px;text-align:right;font-weight:900;font-size:14px;}
.profile-overall{text-align:center;font-size:15px;font-weight:800;margin-top:16px;padding:12px;background:var(--gray);border-radius:14px;}
.profile-overall b{font-size:20px;color:var(--green);}
.profile-tip{margin-top:12px;padding:12px 14px;background:#fff8e8;border:2px solid #ffd54a;border-radius:14px;font-size:14px;font-weight:700;color:#8a5a00;line-height:1.6;}
/* ---------- 第五轮：万法图鉴 ---------- */
.guide-overall{margin-top:10px;}
.guide-theme{margin-top:16px;background:#fff;border-radius:16px;padding:12px;border:2px solid var(--gray-border);}
.guide-theme-head{display:flex;align-items:center;gap:8px;margin-bottom:8px;}
.guide-t-icon{width:30px;height:30px;border-radius:10px;display:flex;align-items:center;justify-content:center;font-size:17px;}
.guide-t-name{font-weight:900;font-size:14px;flex:1;}
.guide-t-count{font-size:12px;font-weight:800;color:var(--gray-text);}
.guide-t-done{font-size:11px;font-weight:900;color:var(--green);}
.guide-words{display:flex;flex-wrap:wrap;gap:6px;}
.guide-chip{
  width:34px;height:34px;border-radius:10px;display:flex;align-items:center;justify-content:center;
  font-size:18px;background:var(--gray);border:2px solid var(--gray-border);
}
.guide-chip.lit{background:#fff;border-color:var(--green);box-shadow:0 2px 0 var(--green-dark);}
.guide-chip .gq{color:#bbb;font-weight:900;font-size:15px;}
.guide-complete{margin-top:8px;padding:8px 12px;background:var(--green-light);border-radius:10px;font-size:12px;font-weight:900;color:var(--green-dark);}
/* ---------- 第五轮：功法口诀 ---------- */
.mantra-box{margin-top:12px;padding:12px 14px;background:linear-gradient(135deg,#2b1a4e,#4a2d7a);color:#ffe9a8;border-radius:14px;font-size:14px;font-weight:700;line-height:1.7;border:2px solid #7b5cd6;}
/* ---------- 第五轮：灵力迸发 ---------- */
.lingqi-fx{
  position:absolute;top:20%;left:50%;transform:translateX(-50%);
  font-size:44px;letter-spacing:8px;animation:lingqiPop 1.3s ease forwards;pointer-events:none;z-index:30;
}
@keyframes lingqiPop{
  0%{opacity:0;transform:translateX(-50%) scale(0.3) rotate(-20deg);}
  30%{opacity:1;transform:translateX(-50%) scale(1.2) rotate(10deg);}
  100%{opacity:0;transform:translateX(-50%) scale(1.6) translateY(-30px) rotate(0);}
}
.lesson-card{position:relative;}
/* ---------- 第五轮：今日修行目标 ---------- */
.daily-goal{margin-top:12px;padding:12px 16px;background:linear-gradient(135deg,#eef7e2,#d7ffb8);border-radius:16px;border:2px solid var(--green-light);}
.dg-txt{font-weight:900;font-size:14px;color:var(--green-dark);margin-bottom:8px;}
.dg-sub{font-size:11px;font-weight:700;color:#8a8a8a;}
.dg-bar{height:10px;background:#c9e9a8;border-radius:999px;overflow:hidden;}
.dg-fill{height:100%;background:linear-gradient(90deg,#58cc02,#7ed957);border-radius:999px;transition:width .5s ease;}
/* ---------- 第六轮：宗门（组队学习） ---------- */
.sect-badge{
  position:absolute;top:8px;right:10px;width:20px;height:20px;border-radius:50%;
  background:var(--red);color:#fff;font-size:12px;font-weight:900;text-align:center;line-height:20px;display:none;z-index:30;
}
.topbar{position:relative;}
.sect-code-row{display:flex;align-items:center;gap:10px;padding:14px 16px;background:linear-gradient(135deg,#2b1a4e,#4a2d7a);border-radius:16px;color:#fff;margin-bottom:6px;}
.sect-code-lbl{font-size:13px;opacity:.85;}
.sect-code{font-size:20px;font-weight:900;letter-spacing:2px;color:#ffd54a;}
.sect-name{font-size:14px;font-weight:800;}
.sect-tip{font-size:13px;color:var(--gray-text);margin:4px 0 8px;}
.sect-find{display:flex;gap:8px;}
.sect-input{flex:1;padding:12px;border:2px solid var(--gray-border);border-radius:12px;font-size:16px;font-weight:800;letter-spacing:2px;}
.sect-find-result{margin-top:10px;}
.sect-user{display:flex;align-items:center;gap:10px;padding:12px;background:#fff;border:2px solid var(--gray-border);border-radius:14px;}
.sect-u-avatar{font-size:30px;}
.sect-u-info{flex:1;}
.sect-u-name{font-weight:900;font-size:15px;}
.sect-u-sub{font-size:12px;color:var(--gray-text);}
.sect-err{padding:10px;color:var(--red);font-weight:800;font-size:14px;background:var(--red-light);border-radius:10px;text-align:center;}
.sect-ok{padding:10px;color:var(--green-dark);font-weight:800;background:var(--green-light);border-radius:10px;text-align:center;}
.sect-invites{margin-top:8px;}
.sect-invite-row{display:flex;align-items:center;gap:8px;padding:12px;background:#fff;border:2px solid #ffe1a3;border-radius:14px;margin-top:8px;}
.sect-iv-msg{flex:1;font-size:14px;font-weight:800;}
.sect-banner{padding:14px;background:linear-gradient(135deg,#fff8e0,#ffe9b8);border:2px solid #ffd54a;border-radius:14px;font-weight:900;text-align:center;color:#8a5a00;}
.sect-members{margin-top:8px;}
.sect-member{display:flex;align-items:center;gap:10px;padding:12px;background:#fff;border:2px solid var(--gray-border);border-radius:14px;margin-top:8px;}
.sect-member.me{border-color:var(--green);background:var(--green-light);}
.sect-m-avatar{position:relative;font-size:32px;width:44px;text-align:center;}
.sect-m-gear{position:absolute;font-size:14px;right:-2px;top:-2px;font-style:normal;}
.sect-m-info{flex:1;}
.sect-m-name{font-weight:900;font-size:15px;}
.sect-m-sub{font-size:12px;color:var(--gray-text);}
.sect-me{color:var(--green);font-size:11px;font-weight:900;}
.sect-challenges{margin-top:8px;}
.sect-ch-row{display:flex;align-items:center;gap:8px;padding:12px;background:#fff;border:2px solid #cfe8ff;border-radius:14px;margin-top:8px;font-size:14px;font-weight:800;}
.sect-ch-row span{flex:1;}
.sect-none{color:var(--gray-text);font-size:13px;font-weight:700;text-align:center;padding:12px;}
.sect-records{margin-top:8px;}
.sect-rec-row{display:flex;justify-content:space-between;padding:10px 14px;background:#fff;border-radius:12px;border:2px solid var(--gray-border);margin-top:6px;font-weight:800;font-size:14px;}
.sect-rec-row.win{border-color:var(--green);background:var(--green-light);}
.duel-wait{margin-top:10px;font-weight:800;color:var(--blue);text-align:center;}
/* ---------- 宗门：组队引导 + 复制按钮 ---------- */
.sect-code-row .btn{margin-left:auto;padding:6px 12px;font-size:13px;}
.sect-guide{margin-top:8px;padding:10px 12px;background:#f3ecff;border:2px solid #e2d4ff;border-radius:12px;font-size:13px;font-weight:700;color:#5b3fa0;line-height:1.6;}
/* ================= 修仙沉浸式布局 v141 ================= */
/* ---- 全局仙雾背景 ---- */
body{
  background: linear-gradient(180deg,#f6f3ea 0%, #eef1f6 55%, #e8edf4 100%);
}
#app{background:transparent;}

/* ---- 顶部玉牌 ---- */
.topbar{background:rgba(255,255,255,.85);backdrop-filter:blur(4px);border-bottom:1px solid #e8e0d0;}
.brand{color:#6b4a2b;text-shadow:0 1px 0 rgba(255,255,255,.6);}

/* ---- 道友玉牌 ---- */
.jade-panel{
  position:relative;display:flex;align-items:center;gap:16px;margin-top:14px;padding:18px 20px;
  background:linear-gradient(135deg,#1c3a3a 0%,#2e5f52 60%,#3d7a63 100%);
  border-radius:20px;box-shadow:0 8px 24px rgba(30,60,50,.25), inset 0 1px 0 rgba(255,255,255,.15);
  color:#eaf6ee;cursor:pointer;overflow:hidden;
}
.jade-glow{
  position:absolute;top:-40%;left:-20%;width:70%;height:200%;
  background:radial-gradient(circle, rgba(255,255,255,.12) 0%, transparent 70%);
  animation:jadeBreathe 4s ease-in-out infinite;
}
@keyframes jadeBreathe{0%,100%{opacity:.5;transform:scale(1);}50%{opacity:1;transform:scale(1.08);}}
.jade-avatar{position:relative;font-size:52px;flex-shrink:0;animation:bounce 2.5s infinite;}
.jade-weapon{position:absolute;font-size:20px;right:-6px;top:-4px;font-style:normal;}
.jade-aura{position:absolute;font-size:44px;left:-8px;top:-6px;opacity:.7;font-style:normal;animation:spin 7s linear infinite;}
.jade-info{flex:1;min-width:0;}
.jade-title{font-weight:900;font-size:19px;letter-spacing:1px;}
.jade-sub{font-size:12px;opacity:.85;margin:4px 0 8px;}
.jade-bar{height:8px;background:rgba(255,255,255,.2);border-radius:999px;overflow:hidden;}
.jade-bar-fill{height:100%;background:linear-gradient(90deg,#f0d48a,#e8c84a);border-radius:999px;transition:width .4s;}
.jade-seals{display:flex;gap:8px;margin-top:10px;flex-wrap:wrap;}
.jade-seal{font-size:12px;font-weight:800;background:rgba(255,255,255,.14);padding:4px 10px;border-radius:999px;}
.jade-panel:active{transform:scale(.99);}

/* ---- 主峰修炼按钮（鎏金） ---- */
.main-peak{margin-top:14px;}
.btn-gold{
  background:linear-gradient(135deg,#d9ab2e 0%,#e8c84a 45%,#f4df8a 100%);
  color:#4a3208;border:none;box-shadow:0 5px 0 #a8821f, 0 10px 24px rgba(200,160,40,.35);
  position:relative;overflow:hidden;
}
.btn-gold:active{box-shadow:0 2px 0 #a8821f;transform:translateY(3px);}
.btn-gold::after{
  content:'';position:absolute;top:0;left:-60%;width:40%;height:100%;
  background:linear-gradient(90deg,transparent,rgba(255,255,255,.5),transparent);
  animation:goldSweep 3s ease-in-out infinite;
}
@keyframes goldSweep{0%{left:-60%;}60%,100%{left:130%;}}
.btn-main{width:100%;padding:18px;font-size:20px;font-weight:900;border-radius:18px;letter-spacing:2px;}
.btn-main::before{
  content:'✦';margin-right:8px;
}

/* ---- 护法台（双卡） ---- */
.guard-platform{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:14px;}
.btn-cinnabar{
  background:linear-gradient(135deg,#9c2f2f 0%,#b84343 100%);color:#fff;
  box-shadow:0 4px 0 #6e1f1f;width:100%;
}
.btn-cinnabar:active{box-shadow:0 2px 0 #6e1f1f;}
.btn-ink{
  background:linear-gradient(135deg,#23434d 0%,#2e5f6b 100%);color:#eaf6ee;
  box-shadow:0 4px 0 #173036;width:100%;
}
.btn-ink:active{box-shadow:0 2px 0 #173036;}

/* ---- 藏经阁（卷轴三卡） ---- */
.scroll-lib{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px;margin-top:14px;}
@media(max-width:560px){.scroll-lib{grid-template-columns:1fr;}}
.scroll-lib .card-box{
  background:linear-gradient(180deg,#fdf9ef 0%,#f7efd9 100%);
  border:1px solid #e3d5ae;border-radius:14px;padding:14px 12px;
  position:relative;
}
.scroll-lib .card-box::before,.scroll-lib .card-box::after{
  content:'';position:absolute;left:50%;transform:translateX(-50%);
  height:10px;width:36px;background:linear-gradient(90deg,#d9ab2e,#e8c84a);border-radius:2px;
}
.scroll-lib .card-box::before{top:-4px;}
.scroll-lib .card-box::after{bottom:-4px;}
.scroll-lib .card-title{font-size:14px;color:#6b4a2b;border-bottom:1px dashed #d8c89a;padding-bottom:6px;margin-bottom:8px;}
.scroll-lib .btn{width:100%;padding:9px 4px;font-size:13px;}
.fortune-card{border-color:#e8c84a !important;}
.tasks-card{border-color:#b5c9a8 !important;}
.dharma-card{border-color:#b8a8d8 !important;}

/* ---- 五行 Tab ---- */
.tabbar{background:rgba(255,255,255,.9);backdrop-filter:blur(4px);}
.tab{
  background:transparent;color:#8a7a5a;font-weight:800;position:relative;
}
.tab.active{background:transparent;box-shadow:none;color:#fff;}
/* 五行色：洞府金 / 山门木 / 心魔录水 / 仙籍火 / 命盘土 */
.tab[data-view="home"].active{background:linear-gradient(135deg,#c9a227,#e8c84a);box-shadow:0 3px 0 #a8821f;}
.tab[data-view="path"].active{background:linear-gradient(135deg,#3d7a3d,#58a058);box-shadow:0 3px 0 #2c5a2c;}
.tab[data-view="review"].active{background:linear-gradient(135deg,#2e5f6b,#4a8fa0);box-shadow:0 3px 0 #1d3f47;}
.tab[data-view="badges"].active{background:linear-gradient(135deg,#b84343,#e06a4a);box-shadow:0 3px 0 #8a2f2f;}
.tab[data-view="stats"].active{background:linear-gradient(135deg,#8a6a3a,#b8915a);box-shadow:0 3px 0 #5f4a28;}

/* ---- 御剑过渡 ---- */
#views > div{animation:swordIn .35s ease;}
@keyframes swordIn{
  0%{opacity:0;transform:translateY(14px) scale(.98);}
  100%{opacity:1;transform:translateY(0) scale(1);}
}

/* ---- 通用卡片宣纸化 ---- */
.card-box,.theme-card,.result-card,.unit,.sect-member,.guide-theme,.shop-card,.artifact-card,.review-item{
  background:#fdf9ef;
}
.stat-card{background:#fdf9ef;border-color:#e8e0d0;}
.qchip{background:#f3eee0;color:#6b5a3a;}
.btn-ghost{background:#fdf9ef;border-color:#e0d5bc;color:#7a6a4a;}

/* ================= v144：人物造型 + 装备增强 + 组队完善 + 剧情活动 ================= */
/* ---- 人偶分层：背景 / 光环 / 服装 / 本体 / 发饰 / 武器 ---- */
.avatar-bg-icon{position:absolute;inset:0;font-size:120px;opacity:.9;z-index:0;display:flex;align-items:center;justify-content:center;border-radius:50%;overflow:hidden;}
.avatar-stage{overflow:hidden;}
.avatar-stage.bg-cloud-sky{background:radial-gradient(circle,#eaf6ff,#b8dcf5);}
.avatar-stage.bg-moon-night{background:radial-gradient(circle,#232a4a,#10162e);}
.avatar-stage.bg-bamboo-grove{background:radial-gradient(circle,#e8f5e2,#b8d9a8);}
.avatar-stage.bg-snow-mountain{background:radial-gradient(circle,#ffffff,#d8e8f5);}
.avatar-stage.bg-lotus-pond{background:radial-gradient(circle,#ffeef6,#f5c8dd);}
.avatar-stage.bg-thunder-peak{background:radial-gradient(circle,#3a3050,#1c1730);}
.avatar-stage.bg-moon-night .avatar-core,.avatar-stage.bg-thunder-peak .avatar-core{filter:drop-shadow(0 0 6px rgba(255,255,255,.5));}
.avatar-slot.hair{top:-14px;left:50%;transform:translateX(-50%);font-size:34px;z-index:4;}
.avatar-slot.clothes{bottom:-6px;left:50%;transform:translateX(-50%);font-size:36px;z-index:1;}
/* 称号展示条 */
.avatar-title-wrap{margin:2px auto 8px;display:flex;justify-content:center;}
.avatar-title-row{display:inline-flex;gap:6px;flex-wrap:wrap;justify-content:center;}
.avatar-realm-chip,.avatar-linggen-chip,.avatar-title-chip{
  font-size:11px;font-weight:900;padding:3px 10px;border-radius:999px;
}
.avatar-realm-chip{background:#2b1a4e;color:#ffe9a8;border:1px solid #7b5cd6;}
.avatar-linggen-chip{background:#e8f5e2;color:#3d7a3d;border:1px solid #b8d9a8;}
.avatar-title-chip{background:#fff8e0;color:#8a5a00;border:1px solid #ffd54a;}
.avatar-power{
  text-align:center;font-weight:800;font-size:13px;color:#6b4a2b;margin-bottom:4px;
  padding:8px;background:linear-gradient(135deg,#fdf9ef,#f5ecd8);border:1px dashed #d8c89a;border-radius:12px;
}
.avatar-power b{color:#a34ee4;font-size:16px;}
.jade-hair{position:absolute;font-size:18px;top:-10px;left:50%;transform:translateX(-50%);font-style:normal;z-index:2;}
.mini-gear.hair{top:-6px;left:50%;transform:translateX(-50%);font-size:11px;}
.mini-gear.clothes{bottom:-5px;left:50%;transform:translateX(-50%);font-size:12px;}

/* ---- 法宝属性标签 + 稀有度特效 ---- */
.art-tags{display:flex;gap:3px;justify-content:center;margin-top:4px;flex-wrap:wrap;}
.art-tag{
  font-size:9px;font-weight:900;padding:2px 5px;border-radius:6px;background:#f3eee0;color:#6b5a3a;
}
.artifact-card.rarity-rare{border-color:#9cd6ff;background:linear-gradient(180deg,#fff, #f0f8ff);}
.artifact-card.rarity-epic{
  border-color:#d0a7f5;background:linear-gradient(135deg,#fdf3ff,#efe0fb);
  box-shadow:0 0 14px rgba(163,78,228,.28);
}
.artifact-card.rarity-legend{
  border-color:#ffd08a;background:linear-gradient(135deg,#fff8e8,#ffe9c2);
  box-shadow:0 0 18px rgba(255,159,26,.4);position:relative;overflow:hidden;
}
.artifact-card.rarity-legend::after{
  content:'';position:absolute;top:0;left:-70%;width:45%;height:100%;
  background:linear-gradient(90deg,transparent,rgba(255,255,255,.65),transparent);
  animation:goldSweep 2.6s ease-in-out infinite;
}
.art-icon{transition:transform .15s;}
.artifact-card:active .art-icon{transform:scale(1.12);}
/* 法宝详情弹层 */
.artifact-modal{
  position:relative;width:min(320px,86vw);background:linear-gradient(180deg,#fff,#fdf9ef);
  border-radius:22px;padding:22px 18px;text-align:center;overflow:hidden;
  border:2px solid var(--gray-border);
}
.artifact-modal.rarity-rare{border-color:#9cd6ff;}
.artifact-modal.rarity-epic{border-color:#d0a7f5;box-shadow:0 0 26px rgba(163,78,228,.35);}
.artifact-modal.rarity-legend{border-color:#ffd08a;box-shadow:0 0 30px rgba(255,159,26,.45);}
.am-glow{position:absolute;top:-40%;left:-20%;width:70%;height:200%;
  background:radial-gradient(circle,rgba(255,200,0,.14),transparent 70%);}
.am-icon{font-size:76px;margin:4px 0;animation:pop .5s ease;}
.am-name{font-weight:900;font-size:20px;}
.am-rarity{font-weight:900;font-size:13px;margin:2px 0;}
.am-rarity.rare,.art-rarity.rare{color:#1ca0f6;}
.am-rarity.epic,.art-rarity.epic{color:#a34ee4;}
.am-rarity.legend,.art-rarity.legend{color:#ff9f1a;}
.am-slot{font-size:12px;font-weight:800;color:var(--gray-text);margin:4px 0 6px;}
.am-desc{font-size:13px;color:var(--gray-text);margin-bottom:10px;line-height:1.5;}
.am-stats{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:10px;}
.am-stat{
  display:flex;align-items:center;gap:6px;padding:8px 10px;border-radius:12px;
  background:#f3eee0;font-size:13px;font-weight:800;color:#6b5a3a;
}
.am-stat b{margin-left:auto;font-size:16px;color:#2b1a4e;}
.am-power{font-weight:800;font-size:14px;color:#6b4a2b;margin-bottom:12px;}
.am-power b{color:#a34ee4;font-size:18px;}

/* ---- 宗门：排行榜 / 组队任务 / 观战 / 道号头像 ---- */
.sect-leaderboard{margin-top:6px;}
.lb-row{
  display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:14px;
  background:#fdf9ef;border:2px solid var(--gray-border);margin-top:8px;
}
.lb-row.me{border-color:var(--green);background:var(--green-light);}
.lb-row.rank-1{border-color:#ffd54a;background:linear-gradient(135deg,#fff8e0,#ffe9b8);}
.lb-row.rank-2{border-color:#d8dce3;background:linear-gradient(135deg,#f5f7fa,#e8ecf1);}
.lb-row.rank-3{border-color:#e0b08a;background:linear-gradient(135deg,#fdf0e6,#f5ddc8);}
.lb-rank{font-size:20px;font-weight:900;width:34px;text-align:center;flex-shrink:0;}
.lb-avatar{flex-shrink:0;}
.lb-info{flex:1;min-width:0;}
.lb-name{font-weight:900;font-size:14px;}
.lb-sub{font-size:11px;color:var(--gray-text);font-weight:700;margin-top:2px;}
.lb-xp{font-weight:900;font-size:16px;color:#2b1a4e;flex-shrink:0;}
/* 组队任务 */
.sect-team-tasks{margin-top:6px;}
.tt-bar{height:12px;background:var(--gray-border);border-radius:999px;overflow:hidden;}
.tt-fill{height:100%;background:linear-gradient(90deg,#58cc02,#7ed957);border-radius:999px;transition:width .5s;}
.tt-note{font-size:12px;font-weight:800;color:var(--gray-text);text-align:center;margin:6px 0 8px;}
.tt-row{display:flex;align-items:center;gap:8px;padding:7px 10px;border-radius:12px;background:#fdf9ef;border:1px solid var(--gray-border);margin-top:6px;}
.tt-avatar{flex-shrink:0;}
.tt-name{flex:1;font-weight:800;font-size:13px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.tt-stars{font-size:12px;letter-spacing:1px;flex-shrink:0;}
/* 斗法观战 */
.sect-spectate{margin-top:6px;}
.spec-row{
  display:flex;align-items:center;gap:8px;padding:9px 12px;border-radius:12px;
  background:#fdf9ef;border:2px solid #e8e0d0;margin-top:8px;font-size:13px;font-weight:800;
}
.spec-vs{background:#b84343;color:#fff;border-radius:999px;padding:3px 10px;font-size:11px;flex-shrink:0;}
.spec-p{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.spec-mid{color:var(--gray-text);font-size:11px;flex-shrink:0;}
.spec-done{color:var(--green);}
.spec-wait{color:#bbb;animation:twinkle 1.2s ease infinite;}
/* 道号头像 */
.code-avatar{
  display:inline-flex;align-items:center;justify-content:center;
  width:34px;height:34px;border-radius:50%;color:#fff;font-weight:900;font-size:13px;
  box-shadow:inset 0 -3px 0 rgba(0,0,0,.18);
}
.sect-m-avatar{position:relative;font-size:26px;flex-shrink:0;width:34px;height:34px;display:inline-flex;align-items:center;justify-content:center;}
.sect-m-core{font-size:26px;line-height:1;}
.lb-avatar .code-avatar{width:30px;height:30px;font-size:12px;}
.tt-avatar .code-avatar{width:26px;height:26px;font-size:11px;}

/* ---- 剧情 / 活动卡片 ---- */
.story-card{border-color:#b8a8d8 !important;}
.event-card{border-color:#f0b8a8 !important;}
.story-preview,.story-done,.story-next{font-size:12px;font-weight:800;color:#6b4a2b;margin-bottom:8px;line-height:1.5;}
.story-done{color:var(--green-dark);}
.event-desc{font-size:12px;color:#6b4a2b;font-weight:700;margin-bottom:8px;line-height:1.5;}
.event-prog{font-size:12px;font-weight:800;color:#8a5a00;margin-bottom:6px;}
.event-countdown{font-size:14px;font-weight:900;color:#b84343;margin-bottom:6px;}
.event-done{font-size:13px;font-weight:900;color:var(--green-dark);}
.event-bar-wrap{margin-bottom:4px;}
.event-bar{height:10px;background:var(--gray-border);border-radius:999px;overflow:hidden;}
.event-fill{height:100%;background:linear-gradient(90deg,#ffb84d,#ff9f1a);border-radius:999px;transition:width .5s;}

/* ================= v145：Q版仙侠人偶（SVG） ================= */
.avatar-stage-wrap{display:flex;justify-content:center;margin:6px auto 2px;}
.avatar-stage-svg{
  position:relative;width:196px;height:212px;padding:0;border-radius:24px;
  background:transparent;overflow:visible;
}
.avatar-stage-svg .avatar-svg{width:100%;height:100%;display:block;}
/* 无背景时给个柔光底 */
.avatar-stage-wrap:not(.has-bg) .avatar-stage-svg{
  background:radial-gradient(circle at 50% 38%,#f3ecff 0%,#e2d4ff 60%,#d6c6f5 100%);
}
/* 光环动画（SVG 元素，用 fill-box 让 transform-origin 生效） */
.avatar-aura{transform-box:fill-box;transform-origin:center;}
.avatar-aura.aura-rainbow{animation:avatarSpin 6s linear infinite;}
.avatar-aura.aura-fire{animation:avatarSpin 5s linear infinite, avatarFlick .8s ease infinite;}
.avatar-aura.aura-star{animation:avatarSpin 8s linear infinite, avatarTwinkle 1.2s ease infinite;}
.avatar-aura.aura-thunder{animation:avatarSpin 3s linear infinite, avatarFlick .5s ease infinite;}
@keyframes avatarSpin{from{transform:rotate(0deg);}to{transform:rotate(360deg);}}
@keyframes avatarFlick{0%,100%{opacity:.6;}50%{opacity:1;}}
@keyframes avatarTwinkle{0%,100%{opacity:.45;}50%{opacity:.95;}}
/* mini 人偶（列表/课程头） */
.mini-avatar-svg{display:inline-flex;width:30px;height:33px;vertical-align:middle;margin-right:2px;}
.mini-avatar-svg .avatar-svg{width:100%;height:100%;display:block;}
.sect-m-svg{display:inline-flex;width:30px;height:33px;vertical-align:middle;}
.sect-m-svg .avatar-svg{width:100%;height:100%;display:block;}
.lb-avatar .sect-m-svg,.tt-avatar .sect-m-svg{width:27px;height:30px;}
/* 首页玉牌人偶 */
.jade-avatar-svg{position:relative;width:58px;height:63px;flex-shrink:0;}
.jade-avatar-svg .avatar-svg{width:100%;height:100%;display:block;filter:drop-shadow(0 2px 4px rgba(0,0,0,.35));}
.jade-avatar-svg .avatar-svg .avatar-aura{opacity:.85;}
/* 课程页 mini 头像容器 */
.mini-avatar{display:inline-flex;align-items:center;}

/* ================= v147：小组共同目标 + 战绩统计 ================= */
.sect-goal{margin-top:6px;padding:14px;background:linear-gradient(135deg,#fff8e0,#ffe9b8);border:2px solid #ffd54a;border-radius:16px;}
.sg-txt{font-size:13px;font-weight:800;color:#8a5a00;margin-bottom:8px;text-align:center;}
.sg-txt b{font-size:16px;color:#b84343;}
.sg-bar{height:14px;background:#f0e2b0;border-radius:999px;overflow:hidden;}
.sg-fill{height:100%;background:linear-gradient(90deg,#ffb84d,#ff9f1a);border-radius:999px;transition:width .6s ease;}
.sg-fill.done{background:linear-gradient(90deg,#58cc02,#7ed957);animation:pulse 1.2s infinite;}
.sg-note{font-size:12px;font-weight:800;color:#8a5a00;text-align:center;margin:8px 0 4px;}
.sg-claimed{font-size:13px;font-weight:900;color:var(--green-dark);text-align:center;margin-top:4px;}
.sect-goal .btn{margin-top:6px;width:100%;}
.sect-stat-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:6px;}
.ss-card{background:#fdf9ef;border:2px solid #e8e0d0;border-radius:14px;padding:10px 6px;text-align:center;}
.ss-card.win{border-color:#b8d9a8;background:var(--green-light);}
.ss-card.loss{border-color:#f0b8a8;background:var(--red-light);}
.ss-card.draw{border-color:#e0d5bc;}
.ss-card.streak{border-color:#ffd08a;background:#fff8e0;}
.ss-num{font-weight:900;font-size:22px;color:#2b1a4e;}
.ss-card.win .ss-num{color:var(--green-dark);}
.ss-card.loss .ss-num{color:var(--red);}
.ss-card.streak .ss-num{color:#ff9f1a;}
.ss-lbl{font-size:11px;font-weight:800;color:var(--gray-text);margin-top:2px;}

/* ================= v148：斗法 PK/合作 流程 ================= */
.duel-mode-row{display:flex;gap:8px;justify-content:center;margin:6px 0 2px;}
.duel-mode-btn{
  flex:1;padding:10px 6px;border-radius:12px;font-weight:900;font-size:14px;
  background:var(--gray);border:2px solid transparent;color:var(--gray-text);
}
.duel-mode-btn.on{background:#fff;border-color:var(--blue);color:var(--blue);}
.duel-lv-row{display:flex;flex-wrap:wrap;justify-content:center;gap:4px;}
.duel-vs-row{
  text-align:center;font-weight:800;font-size:14px;color:#6b4a2b;margin:4px 0 8px;
  padding:8px;background:linear-gradient(135deg,#fdf9ef,#f5ecd8);border:1px dashed #d8c89a;border-radius:12px;
}
.duel-opp-name{color:#b84343;}
/* 我的论道（发起方入口） */
.sect-my-duels{margin-top:6px;}
.my-duel-row{
  display:flex;align-items:center;gap:8px;padding:10px 12px;border-radius:12px;
  background:#fdf9ef;border:2px solid #e8e0d0;margin-top:8px;font-size:13px;font-weight:800;
}
.my-duel-row span{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.my-duel-row.active{border-color:#cfe8ff;background:#eef7ff;}
.my-duel-row.open{border-color:#ffe1a3;background:#fffaf0;}
.my-duel-row.done{border-color:#e0d5bc;background:#faf7f0;}
.my-duel-row .btn{margin-left:8px;}
.duel-score-line{margin-top:8px;font-weight:900;font-size:15px;color:#2b1a4e;}

/* ================= 学酥修仙传 · 宗门大殿 ================= */
.hall-btn{ background:linear-gradient(135deg,#8a5cf6,#1cb0f6); color:#fff; border:none; border-radius:20px; padding:4px 12px; font-size:12px; cursor:pointer; margin-right:6px; }
.hall-btn:hover{ filter:brightness(1.1); }
.view-secthall{ padding:16px 14px 90px; max-width:560px; margin:0 auto; }
.sect-hero{ background:linear-gradient(135deg,#1a1a2e,#16213e 60%,#0f3460); border-radius:18px; padding:22px 18px; text-align:center; margin-bottom:16px; box-shadow:0 4px 18px rgba(0,0,0,.25); }
.sect-hero-title{ font-size:24px; font-weight:800; color:#ffd700; letter-spacing:2px; text-shadow:0 2px 8px rgba(255,215,0,.35); }
.sect-hero-sub{ font-size:14px; color:#9ad0ff; margin-top:4px; }
.sect-hero-desc{ font-size:12px; color:#c9d6e8; margin-top:8px; line-height:1.6; }
.sect-grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:10px; }
.sect-card{ background:#fff; border-radius:16px; padding:14px 10px; text-align:center; box-shadow:0 2px 10px rgba(0,0,0,.08); border:2px solid transparent; position:relative; transition:transform .12s ease; }
.sect-card.clickable{ cursor:pointer; }
.sect-card.clickable:active{ transform:scale(.96); }
.sect-card.coming{ opacity:.72; filter:grayscale(.25); }
.sect-icon{ font-size:30px; margin-bottom:6px; }
.sect-name{ font-size:15px; font-weight:700; color:#2b2b2b; }
.sect-tang{ font-size:12px; font-weight:600; margin-top:2px; }
.sect-desc{ font-size:10px; color:#777; margin-top:4px; line-height:1.5; }
.sect-status{ margin-top:8px; font-size:11px; font-weight:600; color:#58cc02; }
.sect-status.coming{ color:#aaa; }
.sect-global{ background:#fff; border-radius:16px; padding:14px; margin-top:16px; box-shadow:0 2px 10px rgba(0,0,0,.08); }
.sect-global-title{ font-size:13px; font-weight:700; color:#2b2b2b; margin-bottom:10px; }
.sect-global-row{ display:flex; gap:8px; flex-wrap:wrap; }
.sect-global-row .chip{ background:#f2f6ff; border-radius:14px; padding:5px 10px; font-size:12px; color:#444; }

/* ================= 数学题型 ================= */
.math-q{ font-size:17px; font-weight:600; color:#2b2b2b; background:#f8fafc; border-radius:12px; padding:14px; margin:8px 0; line-height:1.6; text-align:center; }
.math-hint{ font-size:11px; color:#8a5cf6; background:#f4f0ff; border-radius:8px; padding:6px 10px; margin-bottom:8px; text-align:center; }
.math-input{ flex:1; min-width:0; border:2px solid #d8d8d8; border-radius:12px; padding:10px 12px; font-size:18px; text-align:center; outline:none; }
.math-input:focus{ border-color:#1cb0f6; }
.math-input-row{ display:flex; gap:8px; margin-top:12px; }
.math-input-row .btn{ white-space:nowrap; }
.opt-sign-grid{ grid-template-columns:repeat(4,1fr); }
.opt-sign{ font-size:22px !important; font-weight:800; }
.opt-sign .sign{ font-size:24px; }

