:root{--bg:#0f1a3a;--bg2:#18265a;--card:#22336f;--acc:#ffcc33;--good:#3ddc84;--bad:#ff5a5f;--txt:#fff;--muted:#a9b6e6}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;height:100%;background:radial-gradient(circle at 50% 0,#2a3f8f,var(--bg) 70%);color:var(--txt);font-family:-apple-system,"PingFang SC","Segoe UI",Roboto,sans-serif;overflow-x:hidden}
button{font:inherit;border:0;border-radius:16px;padding:14px 18px;font-weight:700;cursor:pointer;color:#1b1b1b;background:var(--acc);box-shadow:0 5px 0 #b8860b;transition:transform .08s}
button:active{transform:translateY(3px);box-shadow:0 2px 0 #b8860b}
button.sec{background:#e8ecff;box-shadow:0 5px 0 #8c97c9}
button.ghost{background:transparent;color:var(--muted);box-shadow:none;padding:8px 10px}
button.mic{background:#ff7ab6;box-shadow:0 5px 0 #b83b78}
button.mic.on{animation:pulse 1s infinite}
@keyframes pulse{50%{transform:scale(1.08)}}
.screen{display:none;max-width:760px;margin:0 auto;padding:14px 14px 40px;min-height:100%}
.screen.show{display:block}
.top{display:flex;justify-content:space-between;align-items:center;gap:8px;font-weight:700}
.pill{background:rgba(255,255,255,.12);border-radius:999px;padding:6px 12px;white-space:nowrap}
h1{font-size:30px;margin:10px 0 2px;text-align:center}
.sub{color:var(--muted);text-align:center;margin-bottom:10px}
.mascotRow{display:flex;align-items:flex-end;gap:10px;margin:8px 0 14px}
.mascot{width:110px;height:110px;flex:none}
.bubble{background:#fff;color:#1b1b1b;border-radius:18px;padding:12px 14px;font-size:18px;line-height:1.35;position:relative;flex:1;min-height:56px}
.bubble:before{content:"";position:absolute;left:-10px;bottom:16px;border:10px solid transparent;border-right-color:#fff;border-left:0}
.menu{display:grid;gap:12px}
.menu button{font-size:20px;padding:18px}
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:10px}
.lessonBtn{background:var(--card);color:#fff;box-shadow:0 5px 0 #121c44;text-align:left;font-size:16px;padding:12px}
.lessonBtn small{display:block;color:var(--muted);font-weight:400;margin-top:4px;font-size:13px}
.lessonBtn .stars{color:var(--acc)}
.lessonBtn.empty{opacity:.45}
.arena{display:flex;align-items:center;justify-content:space-between;gap:10px}
.boss{width:120px;height:120px;transition:transform .2s}
.boss.hit{animation:shake .4s}
@keyframes shake{20%{transform:translateX(-10px) rotate(-6deg)}40%{transform:translateX(10px) rotate(6deg)}60%{transform:translateX(-6px)}80%{transform:translateX(6px)}}
.hpbar{height:16px;background:#0a1230;border-radius:10px;overflow:hidden;margin-top:6px}
.hpbar>div{height:100%;background:linear-gradient(90deg,#ff5a5f,#ffb347);transition:width .4s}
.hearts{font-size:24px;letter-spacing:2px}
.task{text-align:center;margin:10px 0 6px}
.word{font-size:40px;letter-spacing:6px;font-weight:700}
.word .blank{display:inline-block;width:44px;height:44px;border:3px dashed var(--acc);border-radius:8px;vertical-align:middle}
.pinyin{color:var(--acc);font-size:22px;min-height:28px}
.padWrap{display:flex;justify-content:center;position:relative}
#pad{background:#fffdf5;border-radius:18px;position:relative;touch-action:none;box-shadow:0 6px 0 #c9bf9a}
#pad svg.tz{position:absolute;inset:0;pointer-events:none}
.ctrls{display:flex;gap:10px;justify-content:center;flex-wrap:wrap;margin-top:14px}
.ctrls button{font-size:17px;padding:12px 14px}
.timer{position:absolute;top:-12px;right:-6px;background:var(--bad);color:#fff;border-radius:999px;padding:6px 12px;font-weight:800;display:none}
.float{position:fixed;left:50%;top:40%;transform:translate(-50%,-50%);font-size:44px;font-weight:900;pointer-events:none;animation:up 1.1s forwards;text-shadow:0 3px 0 #000a;z-index:9}
@keyframes up{to{transform:translate(-50%,-140%);opacity:0}}
.big{font-size:150px;text-align:center;line-height:1.1;margin:10px 0;font-family:"Kaiti SC","STKaiti","KaiTi",serif}
.card{background:var(--card);border-radius:18px;padding:14px;margin:10px 0}
.card h3{margin:0 0 8px}
textarea,input[type=text]{width:100%;border-radius:12px;border:0;padding:10px;font-size:15px;font-family:inherit}
textarea{min-height:260px}
table{width:100%;border-collapse:collapse;font-size:15px}
td,th{padding:6px;border-bottom:1px solid #ffffff22;text-align:left}
.shop{display:flex;gap:10px;flex-wrap:wrap}
.shop .item{background:var(--card);border-radius:14px;padding:8px;text-align:center;width:104px}
.shop .item svg{width:80px;height:80px}
.modal{position:fixed;inset:0;background:#000a;display:none;align-items:center;justify-content:center;z-index:20;padding:20px}
.modal.show{display:flex}
.modal .box{background:var(--bg2);border-radius:20px;padding:20px;max-width:420px;width:100%;text-align:center}
.note{color:var(--muted);font-size:14px;line-height:1.4}
.row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.quest{font-size:15px;color:var(--muted);text-align:center;margin-top:12px}
.quest b{color:var(--acc)}
