:root{--bg: #0f1115;--surface: #171a21;--surface-2: #1f232c;--border: #2b303b;--text: #e6e8ec;--muted: #9aa3b2;--accent: #7aa2f7;--good: #7bc47f;--warn: #e0af68;--bad: #f07178;--radius: 10px}@media(prefers-color-scheme:light){:root{--bg: #f6f7f9;--surface: #ffffff;--surface-2: #eef1f5;--border: #d8dde5;--text: #1a1d23;--muted: #5d6674;--accent: #2f5fd0}}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font:16px/1.5 system-ui,-apple-system,Segoe UI,sans-serif}button{font:inherit;cursor:pointer;border:1px solid var(--border);background:var(--surface-2);color:var(--text);border-radius:var(--radius);padding:.5rem .9rem;transition:background .12s,border-color .12s}button:hover:not(:disabled){border-color:var(--accent)}button:disabled{opacity:.45;cursor:default}button.primary{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:600}input,select,textarea{font:inherit;background:var(--surface-2);color:var(--text);border:1px solid var(--border);border-radius:var(--radius);padding:.5rem .7rem;width:100%}input:focus,textarea:focus,select:focus{outline:2px solid var(--accent);outline-offset:-1px}.app{max-width:860px;margin:0 auto;padding:1rem 1rem 4rem}nav{display:flex;gap:.4rem;flex-wrap:wrap;padding:.8rem 0 1.2rem;border-bottom:1px solid var(--border);margin-bottom:1.4rem}nav button.active{background:var(--accent);border-color:var(--accent);color:#fff}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:1.2rem;margin-bottom:1rem}.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:.8rem}.stat{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:.9rem;text-align:center}.stat b{display:block;font-size:1.9rem;line-height:1.1}.stat span{color:var(--muted);font-size:.85rem}.muted{color:var(--muted)}.small{font-size:.85rem}.row{display:flex;gap:.6rem;align-items:center;flex-wrap:wrap}.spread{display:flex;justify-content:space-between;align-items:center;gap:1rem;flex-wrap:wrap}.listrow{padding:.5rem 0;border-top:1px solid var(--border)}.listrow:first-of-type{border-top:none}.prompt{font-size:2rem;font-weight:600;text-align:center;margin:1.6rem 0 .6rem;line-height:1.25}.answer{font-size:1.4rem;text-align:center;color:var(--accent);margin:.5rem 0 1rem}.phonetic{text-align:center;color:var(--muted);font-style:italic}.sentence{background:var(--surface-2);border-radius:var(--radius);padding:.9rem 1rem;margin:1rem 0;line-height:1.7}.sentence .blank{color:var(--accent);font-weight:700;letter-spacing:.05em}.grades{display:grid;grid-template-columns:repeat(4,1fr);gap:.5rem;margin-top:1.2rem}.grades button{flex-direction:column;padding:.7rem .3rem}.grades kbd{display:block;font-size:.7rem;color:var(--muted);margin-top:.15rem}.g-again{border-color:var(--bad)}.g-hard{border-color:var(--warn)}.g-good{border-color:var(--accent)}.g-easy{border-color:var(--good)}.progressbar{height:6px;background:var(--surface-2);border-radius:99px;overflow:hidden;margin-bottom:1rem}.progressbar i{display:block;height:100%;background:var(--accent);transition:width .2s}.feedback{border-radius:var(--radius);padding:.8rem 1rem;margin-top:1rem}.feedback.ok{background:color-mix(in srgb,var(--good) 18%,transparent);border:1px solid var(--good)}.feedback.no{background:color-mix(in srgb,var(--bad) 15%,transparent);border:1px solid var(--bad)}.feedback.almost{background:color-mix(in srgb,var(--warn) 18%,transparent);border:1px solid var(--warn)}table{width:100%;border-collapse:collapse}th,td{text-align:left;padding:.55rem .5rem;border-bottom:1px solid var(--border);vertical-align:top}th{color:var(--muted);font-weight:600;font-size:.85rem}.tag{display:inline-block;font-size:.72rem;padding:.1rem .45rem;border-radius:99px;border:1px solid var(--border);color:var(--muted);margin-right:.25rem;white-space:nowrap}.tag.new{border-color:var(--muted)}.tag.learning{border-color:var(--accent);color:var(--accent)}.tag.mastered{border-color:var(--good);color:var(--good)}.tag.leech{border-color:var(--bad);color:var(--bad)}.tag.retired{border-color:var(--good);color:var(--good);opacity:.65}.tag.review{border-color:var(--warn);color:var(--warn)}.filters{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:.6rem;margin-bottom:1rem}.banner{border:1px solid var(--warn);background:color-mix(in srgb,var(--warn) 12%,transparent);border-radius:var(--radius);padding:.7rem 1rem;margin-bottom:1rem}.note-body{white-space:pre-wrap;line-height:1.8}.center{text-align:center}.stack>*+*{margin-top:.8rem}.stack>b,.stack>label{display:block}.stack>label.row{display:flex}.stack>label+input,.stack>label+select{margin-top:.25rem}.speak{padding:.2rem .5rem;margin-left:.5rem;font-size:1.5rem;line-height:1;vertical-align:middle;background:transparent;border-color:transparent;opacity:.75}.speak:hover:not(:disabled){opacity:1;background:var(--surface-2)}.speak .small{margin-left:.4rem}.speak-big{font-size:1.15rem;padding:.7rem 1.6rem}.record{font-variant-numeric:tabular-nums}.record.recording{background:var(--bad);border-color:var(--bad);color:#fff;font-weight:600;animation:pulse 1.4s ease-in-out infinite}@keyframes pulse{50%{opacity:.72}}@media(prefers-reduced-motion:reduce){.record.recording{animation:none}}.ab-compare{border:1px solid var(--border);border-radius:var(--radius);padding:.7rem 1rem;background:var(--surface-2)}.ab-compare audio{width:100%}.shadow-line{border-left:3px solid var(--accent);padding-left:.9rem}@media(pointer:coarse){button{padding:.7rem 1rem}kbd{display:none!important}.speak{padding:.35rem .6rem;font-size:1.7rem}button:hover:not(:disabled){border-color:var(--border)}button.primary:hover:not(:disabled){border-color:var(--accent)}}@media(max-width:560px){.app{padding:.5rem .7rem 3rem}nav{padding:.5rem 0 .8rem;margin-bottom:1rem}.card{padding:.9rem}.grades{grid-template-columns:repeat(2,1fr)}.prompt{font-size:1.6rem;margin:1rem 0 .5rem}.answer{font-size:1.25rem}.stat b{font-size:1.5rem}.stats{grid-template-columns:repeat(auto-fit,minmax(95px,1fr));gap:.5rem}.stat{padding:.6rem .4rem}.table-scroll{overflow-x:auto}}.sync-badge{margin-left:auto;display:flex;gap:.4rem}.sync-badge button{font-size:.85rem;color:var(--muted)}.sync-badge button:disabled{opacity:.6}.login{max-width:380px;margin:3rem auto}.login h1{margin-bottom:.3rem}.login-lead{color:var(--muted);margin-bottom:1.6rem}.login form{display:flex;flex-direction:column;gap:.9rem}.login label{display:flex;flex-direction:column;gap:.3rem;font-size:.9rem;color:var(--muted)}.login button[type=submit]{background:var(--accent);border-color:var(--accent);color:#fff;padding:.6rem}.login-error{color:var(--bad);font-size:.9rem;margin:0}.login-note{color:var(--muted);font-size:.82rem;margin-top:.8rem}.link-button{background:none;border:none;color:var(--accent);padding:0;margin-top:1.2rem;width:auto;cursor:pointer;font-size:.9rem}
