:root{--bg:#0d1117;--surface:#161b22;--card:#1c2432;--border:#ffffff14;--text:#e6edf3;--sub:#7d8590;--red:#e5534b;--green:#3fb950;--amber:#d29922;--radius:14px}*{box-sizing:border-box}html,body{background:var(--bg);color:var(--text);margin:0;padding:0;font-family:Inter,system-ui,-apple-system,sans-serif}.wrap{max-width:680px;min-height:100vh;margin:0 auto;padding:1rem}.nav{justify-content:space-between;align-items:center;padding:.6rem 0;display:flex}.logo{font-weight:700}.badge{color:var(--sub);border:1px solid var(--border);border-radius:20px;padding:.2rem .6rem;font-size:.7rem}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);margin-top:1rem;padding:1.4rem}h1{margin:.2rem 0;font-size:1.3rem}h2{margin:.2rem 0;font-size:1.1rem}.sub{color:var(--sub);font-size:.9rem;line-height:1.5}.label{text-transform:uppercase;letter-spacing:.08em;color:var(--sub);margin:1rem 0 .4rem;font-size:.7rem;font-weight:700}.chips{flex-wrap:wrap;gap:.4rem;display:flex}.chip{background:var(--card);border:1.5px solid var(--border);color:var(--text);cursor:pointer;border-radius:10px;padding:.4rem .8rem;font-size:.85rem}.chip.on{border-color:var(--red);color:#fff;background:#e5534b21}.primary{background:var(--red);color:#fff;cursor:pointer;border:none;border-radius:10px;width:100%;margin-top:1.2rem;padding:.9rem;font-size:1rem;font-weight:600}.primary:disabled{opacity:.5;cursor:not-allowed}.chat{flex-direction:column;height:78vh;display:flex}.msgs{flex-direction:column;flex:1;gap:.7rem;padding-right:.2rem;display:flex;overflow-y:auto}.msg{border-radius:12px;max-width:85%;padding:.6rem .8rem}.msg.lin{background:var(--card);align-self:flex-start}.msg.me{background:var(--red);align-self:flex-end}.zh{font-size:1.05rem}.py{color:var(--sub);font-size:.8rem}.en{color:var(--sub);font-size:.8rem;font-style:italic}.grade{background:#00000040;border-radius:8px;margin-top:.5rem;padding:.5rem;font-size:.78rem;line-height:1.5}.grade.shi{color:var(--green)}.grade.smid{color:var(--amber)}.grade.slo{color:var(--red)}.inputrow{gap:.5rem;margin-top:.6rem;display:flex}.inputrow input{background:var(--card);border:1px solid var(--border);color:var(--text);border-radius:10px;flex:1;padding:.7rem;font-size:.95rem}.send{background:var(--red);color:#fff;cursor:pointer;border:none;border-radius:10px;width:44px;font-size:1.1rem}.link{color:var(--sub);cursor:pointer;background:0 0;border:none;margin-top:.5rem;font-size:.8rem}.score{text-align:center;margin:.5rem 0;font-size:2.4rem;font-weight:800}.score span{color:var(--sub);font-size:1rem}.block ul{margin:.3rem 0;padding-left:1.1rem}.block li{margin:.2rem 0;font-size:.88rem}.overlay{background:#010409cc;justify-content:center;align-items:center;padding:1rem;display:flex;position:fixed;inset:0}.pw{text-align:center;max-width:340px}.mic{background:var(--card);border:1.5px solid var(--border);color:var(--text);cursor:pointer;border-radius:10px;width:44px;font-size:1rem}.mic.rec{background:var(--red);border-color:var(--red);color:#fff;animation:1.1s ease-in-out infinite pulse}@keyframes pulse{0%,to{box-shadow:0 0 #e5534b80}50%{box-shadow:0 0 0 6px #e5534b00}}.reclive{background:var(--card);border:1px solid var(--border);color:var(--red);border-radius:10px;align-items:center;gap:.6rem;margin-top:.5rem;padding:.5rem .7rem;display:flex}.rectext{color:var(--text);font-size:.95rem}.pitch{color:var(--green);display:block}.voicebox{background:#00000038;border-radius:8px;margin-top:.5rem;padding:.5rem}.voicebox .pitch{color:#fff}.tones{flex-wrap:wrap;gap:.3rem;margin:.4rem 0;display:flex}.tone{background:#ffffff1f;border-radius:7px;align-items:baseline;gap:1px;padding:.15rem .4rem;font-size:1rem;display:inline-flex}.tone sub{opacity:.85;font-size:.6rem}.tone.ok{background:#3fb95047;box-shadow:inset 0 0 0 1px #3fb95099}.tone.bad{background:#e5534b52;box-shadow:inset 0 0 0 1px #e5534bb3}.tone.neu{opacity:.65}.vscore{margin-top:.3rem;font-size:.82rem}.hint{color:var(--sub);margin-top:.45rem;font-size:.74rem;line-height:1.45}.navr{align-items:center;gap:.5rem;display:flex}.iconbtn{background:var(--card);border:1px solid var(--border);color:var(--text);cursor:pointer;border-radius:8px;padding:.25rem .5rem;font-size:.95rem;line-height:1}.replay{cursor:pointer;opacity:.7;vertical-align:middle;background:0 0;border:none;margin-left:.4rem;padding:0;font-size:.8rem}.replay:hover{opacity:1}
