:root{--bg-color: #FFF8F0;--primary: #FF8C42;--primary-light: #FFE0CC;--primary-dark: #E07030;--accent: #6BCB77;--accent-soft: #C8F0CE;--danger: #FF6B6B;--danger-soft: #FFE0E0;--text: #3D3D3D;--text-light: #9A9A9A;--bubble-bg: #FFF2E6;--card-bg: #FFFFFF;--shadow: 0 6px 24px rgba(255, 140, 66, .1);--shadow-lg: 0 12px 40px rgba(255, 140, 66, .15);--radius: 22px;--radius-lg: 32px;--radius-xl: 40px;--xp-gold: #FFD700;--purple: #9B59B6;--purple-light: #E8D5F5;--blue: #3498DB;--blue-light: #D6EAF8}*{box-sizing:border-box}html,body,#root{margin:0;padding:0;width:100%;min-height:100vh;background:var(--bg-color);font-family:PingFang SC,Microsoft YaHei,Helvetica Neue,sans-serif;color:var(--text);-webkit-font-smoothing:antialiased}h1,h2,h3{font-weight:700;margin:0 0 16px}h1{font-size:2.4rem}h2{font-size:1.8rem}h3{font-size:1.4rem}p,span,label,button,input,select,textarea{font-size:1.15rem}.page-container{max-width:720px;margin:0 auto;padding:24px 20px 48px}.card{background:var(--card-bg);border-radius:var(--radius-lg);padding:24px;margin-bottom:20px;box-shadow:var(--shadow);border:2px solid transparent;transition:border-color .2s,box-shadow .2s}.card:hover{border-color:var(--primary-light)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:none;border-radius:24px;padding:16px 32px;font-size:1.25rem;font-weight:700;cursor:pointer;transition:all .2s cubic-bezier(.34,1.56,.64,1);min-height:56px;letter-spacing:.02em}.btn:active{transform:scale(.96)}.btn-primary{background:linear-gradient(180deg,#FF9A56 0%,var(--primary) 100%);color:#fff;box-shadow:0 4px 16px #ff8c4259,inset 0 1px #ffffff40;text-shadow:0 1px 2px rgba(0,0,0,.1)}.btn-primary:hover{background:linear-gradient(180deg,#ffa868,#ff7a2e);transform:translateY(-2px);box-shadow:0 6px 20px #ff8c4266,inset 0 1px #ffffff40}.btn-primary:disabled{opacity:.5;cursor:not-allowed}.btn-secondary{background:var(--primary-light);color:var(--primary)}.btn-secondary:hover{background:#ffc9a0}.btn-danger{background:var(--danger);color:#fff}.btn-lg{padding:20px 40px;font-size:1.5rem;border-radius:28px;min-height:64px}.form-group{margin-bottom:20px}.form-group label{display:block;margin-bottom:8px;font-weight:600;color:var(--text)}.form-group input,.form-group select,.form-group textarea{width:100%;padding:14px 16px;border:2px solid var(--primary-light);border-radius:var(--radius);font-size:1.2rem;background:#fff;outline:none;transition:border-color .2s}.form-group input:focus,.form-group select:focus,.form-group textarea:focus{border-color:var(--primary)}.game-container{display:flex;flex-direction:column;align-items:center;gap:24px;padding:16px;min-height:100vh;background:var(--bg-color)}.companion{display:flex;flex-direction:column;align-items:center;gap:12px;margin-top:16px}.companion-face{font-size:3.5rem;width:88px;height:88px;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,var(--primary-light),#FFF2E6);border-radius:50%;box-shadow:0 6px 20px #ff8c4233,inset 0 -2px 4px #0000000a;border:3px solid white}.companion-bubble{position:relative;background:var(--bubble-bg);color:var(--text);padding:16px 24px;border-radius:24px 24px 24px 8px;font-size:1.15rem;font-weight:500;max-width:320px;text-align:center;line-height:1.6;box-shadow:0 4px 16px #ff8c421a;border:2px solid rgba(255,140,66,.1)}.companion-bubble:before{content:"";position:absolute;top:-8px;left:24px;width:16px;height:16px;background:var(--bubble-bg);border-radius:4px;transform:rotate(45deg)}.progress-bar{width:100%;max-width:400px;height:14px;background:var(--primary-light);border-radius:10px;overflow:hidden;margin:8px 0}.progress-fill{height:100%;background:linear-gradient(90deg,var(--primary),#FFB380,#FFD700);border-radius:10px;transition:width .5s cubic-bezier(.34,1.56,.64,1);box-shadow:0 0 8px #ff8c424d}.progress-text{font-size:1rem;color:var(--text-light);text-align:center;margin-top:4px}.question-area{text-align:center;margin:12px 0}.target-char{font-size:5rem;font-weight:800;color:var(--primary);margin-bottom:8px}.question-hint{font-size:1.2rem;color:var(--text-light);margin:0}.options-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;width:100%;max-width:420px}.option-btn{aspect-ratio:1;font-size:2.8rem;font-weight:700;border:3px solid var(--primary-light);border-radius:var(--radius-lg);background:linear-gradient(180deg,#fff,#fff8f2);color:var(--text);cursor:pointer;transition:all .15s cubic-bezier(.34,1.56,.64,1);display:flex;align-items:center;justify-content:center;-webkit-user-select:none;user-select:none;box-shadow:0 3px 10px #0000000f,inset 0 1px #fffc;position:relative}.option-btn:active{transform:scale(.93);box-shadow:0 1px 4px #00000014}.option-btn:hover{border-color:var(--primary);background:var(--bubble-bg)}.option-btn.correct{border-color:var(--accent);background:var(--accent-soft);color:#2e7d32;animation:correct-pop .3s ease}.option-btn.wrong{border-color:var(--danger);background:#ffe5e5;color:var(--danger);animation:wrong-shake .4s ease}.option-btn:disabled{cursor:default}.recorder-container{display:flex;flex-direction:column;align-items:center;gap:20px;padding:24px;background:var(--card-bg);border-radius:var(--radius-lg);box-shadow:var(--shadow)}.recorder-wave{display:flex;align-items:center;justify-content:center;gap:4px;height:60px}.recorder-bar{width:6px;background:var(--primary);border-radius:4px;transition:height .1s ease}.recorder-timer{font-size:2rem;font-weight:700;color:var(--primary);font-variant-numeric:tabular-nums}.recorder-status{font-size:1.1rem;color:var(--text-light)}.chart-card{background:var(--card-bg);border-radius:var(--radius-lg);padding:20px;margin-bottom:20px;box-shadow:var(--shadow)}.chart-title{font-size:1.3rem;font-weight:700;margin-bottom:16px;color:var(--text)}.nav-bar{display:flex;align-items:center;justify-content:space-between;padding:14px 20px;background:#ffffffeb;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-bottom:2px solid var(--primary-light);position:sticky;top:0;z-index:50}.nav-title{font-size:1.3rem;font-weight:700;color:var(--primary)}.nav-back{font-size:1rem;color:var(--text-light);cursor:pointer;background:none;border:none;padding:8px 12px;border-radius:12px}.nav-back:hover{background:var(--bg-color)}.game-card{display:flex;flex-direction:column;align-items:center;gap:12px;padding:24px 20px;background:linear-gradient(180deg,#fff,#fff8f2);border-radius:var(--radius-lg);box-shadow:var(--shadow);cursor:pointer;transition:all .2s cubic-bezier(.34,1.56,.64,1);border:3px solid transparent}.game-card:hover{transform:translateY(-6px) scale(1.01);box-shadow:var(--shadow-lg);border-color:var(--primary-light)}.game-card:active{transform:translateY(-2px) scale(.98)}.game-card-icon{font-size:3rem}.game-card-title{font-size:1.4rem;font-weight:700;color:var(--text)}.game-card-desc{font-size:1rem;color:var(--text-light);text-align:center}.reading-text{background:#fff;border-radius:var(--radius-lg);padding:28px;font-size:1.6rem;line-height:2.2;color:var(--text);border:2px solid var(--primary-light);text-align:justify}.reading-text .highlight{color:var(--primary);font-weight:700}.stat-row{display:flex;justify-content:space-around;gap:12px;margin:16px 0}.stat-item{text-align:center;flex:1}.stat-value{font-size:2rem;font-weight:800;color:var(--primary);text-shadow:0 1px 2px rgba(255,140,66,.15)}.stat-label{font-size:.95rem;color:var(--text-light);margin-top:4px}@media (max-width: 480px){h1{font-size:1.8rem}h2{font-size:1.4rem}.target-char{font-size:3.5rem}.option-btn{font-size:2.2rem}.options-grid{gap:12px}.page-container{padding:16px 14px 40px}.card{padding:18px}}@keyframes pulse-ring{0%{transform:scale(1);opacity:1}to{transform:scale(1.5);opacity:0}}.pulse-ring{animation:pulse-ring 1.2s cubic-bezier(.25,.46,.45,.94) infinite}@keyframes correct-pop{0%{transform:scale(1)}30%{transform:scale(1.18)}60%{transform:scale(.95)}to{transform:scale(1)}}@keyframes wrong-shake{0%,to{transform:translate(0)}20%{transform:translate(-6px)}40%{transform:translate(6px)}60%{transform:translate(-4px)}80%{transform:translate(4px)}}@keyframes xp-bounce{0%{transform:scale(0);opacity:0}50%{transform:scale(1.3);opacity:1}to{transform:scale(1);opacity:1}}@keyframes heart-break{0%{transform:scale(1)}25%{transform:scale(1.3)}50%{transform:scale(.8)}to{transform:scale(1);filter:grayscale(1) opacity(.3)}}
