:root{--bg: #f6f3ee;--fg: #1d1b19;--muted: #77716a;--surface: #ffffff;--line: #e2ddd5;--accent: #b8322a;--again: #c0392b;--hard: #b7791f;--good: #2f7d4f;--easy: #2b6cb0;--c-new: #2b6cb0;--c-learn: #c0392b;--c-due: #2f7d4f;--cjk: "PingFang SC", "Noto Sans SC", "Noto Sans CJK SC", "Source Han Sans SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif;--ui: system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;color-scheme:light dark}@media (prefers-color-scheme: dark){:root{--bg: #1b1a19;--fg: #ece8e2;--muted: #9b948b;--surface: #262422;--line: #3a3734;--accent: #e0675d;--again: #e06a5e;--hard: #d9a441;--good: #5fb67f;--easy: #6aa5e6;--c-new: #6aa5e6;--c-learn: #e06a5e;--c-due: #5fb67f}}*{box-sizing:border-box}html,body{margin:0;height:100%;background:var(--bg);color:var(--fg);font-family:var(--ui);-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}#app{display:flex;flex-direction:column;min-height:100%;min-height:100dvh;max-width:40rem;margin:0 auto;padding:env(safe-area-inset-top) max(16px,env(safe-area-inset-right)) 0 max(16px,env(safe-area-inset-left))}button,input,select{font:inherit;color:inherit}button{cursor:pointer;border:none;background:none;touch-action:manipulation}.banner{position:sticky;top:0;z-index:10;padding:calc(env(safe-area-inset-top) + 8px) 16px 8px;background:var(--hard);color:#fff;text-align:center;font-size:.9rem}.top{display:flex;align-items:center;justify-content:space-between;padding:8px 0}.icon{width:44px;height:44px;display:grid;place-items:center;font-size:1.4rem;color:var(--muted);text-decoration:none;border-radius:50%}.icon:active{background:var(--line)}.counts{display:flex;gap:1rem;font-variant-numeric:tabular-nums;font-weight:600}.c-new{color:var(--c-new)}.c-learn{color:var(--c-learn)}.c-due{color:var(--c-due)}.card{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:.75rem;padding:1rem 0 2rem}.kind{font-size:.75rem;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}.front,.back,.hints{display:flex;flex-direction:column;align-items:center;gap:.75rem}.hanzi{font-family:var(--cjk);line-height:1.25;word-break:break-all}.hz-xl{font-size:72px}.hz-l{font-size:52px}.hz-m{font-size:34px}.pinyin{font-size:1.5rem;color:var(--accent)}.english{font-size:1.25rem}.english.big{font-size:1.75rem;font-weight:500}.card hr{width:60%;border:none;border-top:1px solid var(--line);margin:.5rem 0}.hint{min-height:44px;padding:0 1.25rem;border:1px dashed var(--line);border-radius:999px;color:var(--muted)}.play{width:52px;height:52px;border-radius:50%;background:var(--surface);border:1px solid var(--line);font-size:1.4rem}.play.big{width:120px;height:120px;font-size:3rem}.play:active{transform:scale(.96)}.actions{position:sticky;bottom:0;padding:12px 0 max(12px,env(safe-area-inset-bottom));background:var(--bg)}.show{width:100%;min-height:60px;border-radius:14px;background:var(--fg);color:var(--bg);font-size:1.15rem;font-weight:600}.show:active{opacity:.85}.show:disabled{opacity:.5}.ratings{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}.rate{min-height:64px;border-radius:14px;color:#fff;font-weight:600;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px}.rate .ivl{font-size:.75rem;font-weight:400;opacity:.9}.rate:active{filter:brightness(.9)}.again{background:var(--again)}.hard{background:var(--hard)}.good{background:var(--good)}.easy{background:var(--easy)}.done{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:.25rem;padding-bottom:4rem}.done h1{margin:.5rem 0}.done-mark{font-family:var(--cjk);font-size:64px;color:var(--accent);text-align:center}.muted{color:var(--muted)}.small{font-size:.85rem}.error{color:var(--again)}.login,.settings{display:flex;flex-direction:column;gap:1rem;padding:2rem 0 max(2rem,env(safe-area-inset-bottom))}.login{flex:1;justify-content:center}label{display:flex;flex-direction:column;gap:.35rem;font-size:.9rem;color:var(--muted)}input:not([type=checkbox]),select{min-height:48px;padding:0 .75rem;border:1px solid var(--line);border-radius:10px;background:var(--surface);font-size:1rem}fieldset{border:1px solid var(--line);border-radius:10px;padding:.5rem .75rem}legend{color:var(--muted);font-size:.9rem}label.check{flex-direction:row;align-items:center;gap:.6rem;min-height:44px;font-size:1rem;color:var(--fg)}label.check input{width:22px;height:22px}.secondary,.button-link{min-height:48px;display:grid;place-items:center;border:1px solid var(--line);border-radius:14px;color:var(--fg);text-decoration:none}.settings hr{width:100%;border:none;border-top:1px solid var(--line)}
