:root{--bg: #ffffff;--bg-2: #f2f2f7;--text: #1c1c1e;--hint: #8e8e93;--link: #2481cc;--accent: #2481cc;--accent-text: #ffffff;--line: #e5e5ea;--safe-top: env(safe-area-inset-top, 0px);--safe-bottom: env(safe-area-inset-bottom, 0px);--safe-left: env(safe-area-inset-left, 0px);--safe-right: env(safe-area-inset-right, 0px);--tabs-h: 56px;color-scheme:light dark}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){--bg: #1c1c1e;--bg-2: #2c2c2e;--text: #f2f2f7;--hint: #98989f;--link: #6ab3f3;--accent: #6ab3f3;--accent-text: #000000;--line: #38383a}}*{box-sizing:border-box}html,body{margin:0;background:var(--bg);color:var(--text);font:16px/1.4 -apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Hiragino Sans,Noto Sans JP,sans-serif;-webkit-text-size-adjust:100%}a{color:var(--link)}.shell{min-height:100dvh}.content{max-width:640px;margin:0 auto;padding:calc(12px + var(--safe-top)) calc(16px + var(--safe-right)) calc(var(--tabs-h) + 16px + var(--safe-bottom)) calc(16px + var(--safe-left))}.title{font-size:24px;margin:8px 0}.hint{color:var(--hint);font-size:14px}.tabs{position:fixed;left:0;right:0;bottom:0;display:flex;height:calc(var(--tabs-h) + var(--safe-bottom));padding:0 var(--safe-right) var(--safe-bottom) var(--safe-left);background:var(--bg-2);border-top:1px solid var(--line);z-index:5}.tab{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;color:var(--hint);text-decoration:none;font-size:11px;gap:2px}.tab.active{color:var(--accent)}.tab-icon{font-size:20px;line-height:1}.filters{position:sticky;top:0;display:flex;gap:8px;padding:8px 0;background:var(--bg);z-index:1}.search,.select,.more{font:inherit;color:var(--text);background:var(--bg-2);border:1px solid var(--line);border-radius:10px;padding:10px 12px}.search{flex:1;min-width:0}.select{flex:0 0 auto}.count{margin:4px 0}.words{list-style:none;margin:0;padding:0}.word{padding:10px 0;border-bottom:1px solid var(--line)}.word-ja .big{font-size:22px}.word-ja .kana{font-size:18px;color:var(--hint)}.word-ja .ctx{font-size:14px;color:var(--hint)}.romaji{font-size:13px;color:var(--hint)}.ru{margin-top:2px}.meta{font-size:12px;color:var(--hint)}.more{width:100%;margin-top:12px;color:var(--link)}.select.on{color:var(--accent);border-color:var(--accent)}.filter-panel{display:flex;flex-direction:column;gap:8px;padding:4px 0 8px}.range{display:flex;align-items:center;gap:8px}.chips{display:flex;flex-wrap:wrap;gap:6px}.chip{font:inherit;font-size:13px;color:var(--text);background:var(--bg-2);border:1px solid var(--line);border-radius:999px;padding:5px 12px;display:inline-flex;align-items:center;justify-content:center;min-height:40px;min-width:40px}.chip.on{background:var(--accent);border-color:var(--accent);color:var(--accent-text)}.chip.reset{align-self:flex-start;color:var(--link)}.word{display:flex;gap:8px;align-items:center;cursor:pointer}.word-main{flex:1;min-width:0}.tag{display:inline-block;margin-left:6px;padding:0 6px;border-radius:6px;background:var(--bg-2)}.plays{display:flex;flex-direction:column;gap:6px}.play{font:inherit;font-size:12px;color:var(--link);background:var(--bg-2);border:1px solid var(--line);border-radius:8px;padding:6px 8px;white-space:nowrap;display:inline-flex;align-items:center;justify-content:center;min-height:40px;min-width:40px}.sheet-backdrop{position:fixed;inset:0;background:#0006;z-index:10;display:flex;align-items:flex-end}.sheet{width:100%;max-width:640px;margin:0 auto;max-height:85dvh;overflow-y:auto;background:var(--bg);border-radius:16px 16px 0 0;padding:16px calc(16px + var(--safe-right)) calc(16px + var(--safe-bottom)) calc(16px + var(--safe-left))}.sheet-head{display:flex;justify-content:space-between;align-items:center}.sheet-head .big{font-size:32px}.sheet-close{font:inherit;font-size:18px;background:none;border:0;color:var(--hint);padding:8px;min-width:40px;min-height:40px}.sheet .plays{flex-direction:row;margin:8px 0}.fields{margin:0}.field{display:flex;gap:12px;padding:6px 0;border-bottom:1px solid var(--line)}.field dt{flex:0 0 40%;color:var(--hint);font-size:14px}.field dd{margin:0;flex:1}.subtitle{font-size:16px;color:var(--hint);margin:16px 0 8px;font-weight:500}.kana-grid{display:grid;gap:6px}.kana-cell{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:60px;font:inherit;color:var(--text);background:var(--bg-2);border:1px solid var(--line);border-radius:10px;padding:4px}.kana-cell.empty{background:none;border-color:transparent}.kana-char{font-size:26px;line-height:1.1}.kana-romaji{font-size:11px;color:var(--hint)}.menu{list-style:none;margin:0;padding:0}.menu-item{display:flex;align-items:center;gap:12px;padding:14px 0;border-bottom:1px solid var(--line);color:var(--text);text-decoration:none;font-size:17px}.menu-icon{width:32px;text-align:center;font-size:22px;color:var(--accent)}.btn{display:inline-flex;align-items:center;justify-content:center;font:inherit;font-size:16px;color:var(--accent-text);background:var(--accent);border:0;border-radius:12px;padding:12px 18px;text-align:center;text-decoration:none;cursor:pointer}.btn.wide{display:flex;width:100%}.btn.secondary{color:var(--link);background:var(--bg-2);border:1px solid var(--line)}.btn.small{font-size:14px;padding:6px 12px;min-height:40px}.btn:disabled{opacity:.4}.error{color:#e5484d;font-size:14px}.login-widget{margin:16px 0;min-height:40px}.dev-login{display:flex;gap:8px;margin-top:12px}.dev-login .search{flex:0 0 90px}.setting{align-items:center;justify-content:space-between}.search.num{flex:0 0 90px;width:90px}.search.num[type=time]{flex-basis:140px;width:140px}.setting input[type=checkbox]{width:22px;height:22px}.train{display:flex;flex-direction:column;min-height:calc(100dvh - var(--tabs-h) - 60px)}.train-head{display:flex;justify-content:space-between;align-items:center}.counters{display:flex;gap:12px;font-weight:600;font-variant-numeric:tabular-nums}.cnt.new{color:#2f80ed}.cnt.learn{color:#e5484d}.cnt.review{color:#30a46c}.cnt.cur{text-decoration:underline;text-underline-offset:4px}.card{flex:1;display:flex;flex-direction:column;align-items:center;text-align:center;padding:32px 0 16px;gap:8px}.card-big{font-size:44px;line-height:1.2}.card-mid{font-size:26px}.card-small{font-size:18px;color:var(--hint)}.card-meta{font-size:13px;color:var(--hint)}.card-sep{width:100%;border:0;border-top:1px solid var(--line);margin:12px 0}.card-ja,.card-ru{display:flex;flex-direction:column;gap:4px;align-items:center}.answer-bar{position:sticky;bottom:calc(var(--tabs-h) + var(--safe-bottom) + 8px);padding-top:8px;background:var(--bg)}.grades{display:grid;grid-template-columns:repeat(4,1fr);gap:6px}.grade{display:flex;flex-direction:column;align-items:center;gap:2px;font:inherit;font-size:14px;color:var(--text);background:var(--bg-2);border:1px solid var(--line);border-radius:12px;padding:8px 4px;min-height:44px;justify-content:center}.grade-ivl{font-size:12px;color:var(--hint)}.grade.again{border-color:#e5484d}.grade.hard{border-color:#8e8e93}.grade.good{border-color:#30a46c}.grade.easy{border-color:#2f80ed}.finish{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center}.finish-big{font-size:48px;margin:0}.count-row{display:flex;justify-content:space-between;align-items:center;gap:8px}.set-picker{display:flex;flex-direction:column;gap:6px;margin:8px 0;padding:8px 12px;background:var(--bg-2);border-radius:10px}.check{display:flex;align-items:center;gap:8px}.set-picker .chip{align-self:flex-start}.sets{list-style:none;margin:8px 0 0;padding:0}.set{padding:10px 0;border-bottom:1px solid var(--line);display:flex;flex-direction:column;gap:4px}.set-name{font-size:17px;color:var(--text);text-decoration:none;font-weight:500;padding:8px 0}.set-actions{display:flex;flex-wrap:wrap;gap:6px;margin:4px 0}.grades.two{grid-template-columns:repeat(2,1fr)}.stack{display:flex;flex-direction:column;gap:8px}.banner{background:var(--bg-2);border:1px solid var(--line);border-radius:12px;padding:12px;margin:8px 0}.banner p{margin:0 0 8px}.kanji-filters{margin:12px 0 4px}.kanji-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(72px,1fr));gap:6px}.kanji-cell{position:relative;display:flex;flex-direction:column;align-items:center;padding:12px 4px 6px;color:var(--text);text-decoration:none;background:var(--bg-2);border:1px solid var(--line);border-radius:10px}.kanji-cell.studying{border-color:#2f80ed}.kanji-cell.known{border-color:#30a46c}.kanji-char{font-size:30px;line-height:1.2}.kanji-meaning{font-size:11px;color:var(--hint);text-align:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%}.badge{position:absolute;top:2px;right:4px;font-size:9px;color:var(--hint)}.kanji-cell.studying .badge{color:#2f80ed}.kanji-cell.known .badge{color:#30a46c}.kanji-head{display:flex;align-items:center;gap:16px;margin:8px 0}.kanji-big{font-size:72px;line-height:1}.examples{list-style:none;margin:0;padding:0}.examples li{padding:6px 0;border-bottom:1px solid var(--line);display:flex;flex-wrap:wrap;align-items:center;gap:4px}.examples .play{margin-left:auto}.ex-word{font-size:18px;color:var(--link);text-decoration:none;padding:8px 0}.ex-word+.hint{font-size:18px}.card .examples{width:100%;text-align:left}.card-kanji{font-size:96px;line-height:1.1}.card-reading{font-size:18px}.attribution{margin-top:24px;font-size:11px}.attribution a{color:var(--link)}.set-kanji{color:var(--text);text-decoration:none;display:flex;align-items:baseline;gap:8px}.set-kanji .big{font-size:28px}.lessons{list-style:none;margin:0;padding:0}.lesson-row{display:flex;align-items:center;gap:12px;padding:12px 0;border-bottom:1px solid var(--line);color:var(--text);text-decoration:none}.lesson-num{flex:0 0 36px;height:36px;border-radius:10px;background:var(--bg-2);display:flex;align-items:center;justify-content:center;font-weight:600;color:var(--accent)}.lesson-text{flex:1;min-width:0;display:flex;flex-direction:column}.lesson-title{font-size:17px}.status-chip{font-size:12px;padding:2px 8px;border-radius:999px;background:var(--bg-2);color:var(--hint);border:1px solid var(--line);white-space:nowrap}.status-chip.on{color:var(--accent);border-color:var(--accent)}.status-chip.due{color:#e5484d;border-color:#e5484d}.status-chip.done{color:#30a46c;border-color:#30a46c}.lesson{line-height:1.5}.intro{margin:4px 0 12px}.ja{font-size:19px;line-height:1.8;font-family:Hiragino Sans,Noto Sans JP,Yu Gothic,sans-serif}.big-ja{font-size:22px}.small{font-size:12px}.section-head{display:flex;justify-content:space-between;align-items:center}.rule{padding:12px 0;border-bottom:1px solid var(--line)}.rule p{margin:6px 0}.pattern{margin:0;font-weight:600;color:var(--accent)}.examples-list{list-style:none;margin:8px 0;padding:0;display:flex;flex-direction:column;gap:8px}.example{background:var(--bg-2);border-radius:10px;padding:8px 12px;cursor:pointer}.ex-ru{font-size:15px}.breakdown{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}.gloss-chip{display:inline-flex;flex-direction:column;padding:4px 8px;border-radius:8px;background:var(--bg);border:1px solid var(--line)}.gloss-part{font-size:18px;font-family:Hiragino Sans,Noto Sans JP,sans-serif}.gloss-text{font-size:12px;color:var(--hint)}.callout{margin-top:8px;padding:8px 12px;border-left:3px solid #e5a000;background:var(--bg-2);border-radius:0 10px 10px 0;font-size:15px}.phrases{list-style:none;margin:0;padding:0}.phrase{padding:10px 0;border-bottom:1px solid var(--line)}.phrase-head{display:flex;gap:8px;align-items:flex-start}.phrase-main{flex:1;cursor:pointer}.phrase-main .hint{font-size:18px}.link-btn{font:inherit;font-size:13px;color:var(--link);background:none;border:0;padding:4px 0;min-height:40px}.lesson-word-text{flex:1;min-width:0}.lesson-word{cursor:pointer}.note{margin-top:24px}.today-block{background:var(--bg-2);border:1px solid var(--line);border-radius:12px;padding:12px;margin:8px 0 16px}.today-block h2{margin-top:0}.audio-part{padding:10px 0;border-bottom:1px solid var(--line);display:flex;flex-direction:column;gap:8px}.audio-part-head{display:flex;justify-content:space-between;align-items:center;gap:8px}.audio-part audio{width:100%}.audio-part summary{padding:11px 0;cursor:pointer}.accordion summary{padding:12px 0;border-bottom:1px solid var(--line);cursor:pointer;display:flex;justify-content:space-between;gap:8px}.part-words{font-size:15px;margin:4px 0 0;padding-left:16px}.btn.highlight{box-shadow:0 0 0 3px #30a46c80;background:#30a46c}.streak{margin:0 0 8px;color:#30a46c;font-weight:500}.home-card{background:var(--bg-2);border:1px solid var(--line);border-radius:14px;padding:12px;margin:10px 0;display:flex;flex-direction:column;gap:8px}.home-card-title{font-size:17px;margin:0}.home-counts{display:flex;gap:14px;flex-wrap:wrap;font-size:14px;color:var(--hint)}.home-counts b{font-size:20px;color:var(--text);font-variant-numeric:tabular-nums;margin-right:4px}.home-counts b.due{color:#30a46c}.home-counts b.new{color:#2f80ed}.home-link{color:var(--link);text-decoration:none;font-size:15px;padding:8px 0}.home-audio{display:flex;flex-direction:column;gap:6px;padding-bottom:8px;border-bottom:1px solid var(--line)}.home-audio audio{width:100%}.home-links{display:grid;grid-template-columns:repeat(2,1fr);gap:8px;margin:12px 0}a.chip{text-decoration:none}
