:root{--bg: #0f1420;--bg-2: #171e2e;--bg-3: #1f2838;--line: #2b3448;--text: #e8edf6;--muted: #8b96a9;--accent: #7c6cf2;--accent-2: #2563eb;--green: #22c55e;--red: #ef4444;--on: #f0abfc;--kun: #93c5fd;--radius: 14px;--latin-font: system-ui, -apple-system, "Segoe UI", Roboto, Helvetica, Arial;--jp-font: "Hiragino Kaku Gothic ProN", "Yu Gothic UI", "Yu Gothic", "Noto Sans JP", Meiryo, "MS Gothic", sans-serif;font-family:var(--latin-font),var(--jp-font)}*{box-sizing:border-box;scrollbar-width:thin;scrollbar-color:color-mix(in srgb,var(--line) 90%,transparent) transparent}::-webkit-scrollbar{width:7px;height:7px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background-color:color-mix(in srgb,var(--line) 90%,transparent);border-radius:9999px;border:2px solid transparent;background-clip:padding-box;transition:background-color .2s ease}::-webkit-scrollbar-thumb:hover{background-color:color-mix(in srgb,var(--accent) 80%,var(--line))}::-webkit-scrollbar-corner{background:transparent}html,body,#root{margin:0;height:100%}body{background:var(--bg);color:var(--text);-webkit-tap-highlight-color:transparent}button{font-family:inherit;cursor:pointer}.app{display:flex;flex-direction:column;min-height:100%}.app-bar{position:sticky;top:0;z-index:10;background:var(--bg);border-bottom:none;padding:env(safe-area-inset-top) 16px 0;display:flex;align-items:center;justify-content:space-between;height:calc(54px + env(safe-area-inset-top))}.settings-link{color:var(--muted);text-decoration:none;font-size:22px;line-height:1;padding:6px}.settings-link:hover{color:var(--accent)}.brand{color:var(--text);text-decoration:none;font-weight:700;font-size:20px;display:inline-flex;align-items:baseline;gap:8px}.brand-jp{font-size:20px;letter-spacing:.5px}.brand-en{font-size:13px;font-weight:600;color:var(--muted);letter-spacing:.3px}.app-main{flex:1;width:100%;max-width:880px;margin:0 auto;padding:16px}.muted{color:var(--muted)}.center{text-align:center;margin:18px 0}.tagline{color:var(--muted);margin:4px 0 20px}.card-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:12px}.card{display:flex;align-items:center;justify-content:center;min-height:64px;background:var(--bg-2);border:1px solid var(--line);border-radius:var(--radius);padding:16px 18px;text-decoration:none;color:var(--text);text-align:center;transition:transform .08s ease,border-color .15s ease}.card-title{font-weight:700;font-size:16px;margin:0}.card:hover{transform:translateY(-2px);border-color:var(--accent)}.card-emoji{font-size:30px}.btn{display:inline-block;background:var(--bg-3);color:var(--text);border:1px solid var(--line);border-radius:10px;padding:10px 16px;text-decoration:none;font-size:15px}.btn:hover{border-color:var(--accent)}.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn-sm{background:var(--bg-3);color:var(--text);border:1px solid var(--line);border-radius:8px;padding:6px 10px;font-size:13px}.btn-sm:hover{border-color:var(--accent)}.kanji-link{background:none;border:none;color:inherit;font:inherit;padding:0;margin:0;cursor:pointer;border-bottom:1px dotted transparent}.kanji-link:hover{color:var(--accent);border-bottom-color:var(--accent)}.tabs{display:flex;gap:4px;border-bottom:1px solid var(--line);margin-bottom:16px}.tab{background:none;border:none;color:var(--muted);padding:12px 18px;font-size:15px;font-weight:600;border-bottom:2px solid transparent}.tab.active{color:var(--text);border-bottom-color:var(--accent)}.toolbar{display:flex;gap:12px;align-items:center;flex-wrap:wrap;margin-bottom:12px}.search{flex:1;min-width:160px;background:var(--bg-2);border:1px solid var(--line);border-radius:10px;color:var(--text);padding:10px 12px;font-size:15px}.checkbox{display:flex;align-items:center;gap:6px;color:var(--muted);font-size:14px}.bulk-row{display:flex;justify-content:space-between;align-items:center;margin-bottom:14px;gap:10px;flex-wrap:wrap}.bulk-actions{display:flex;gap:8px}.kanji-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(104px,1fr));gap:10px}.kanji-cell{background:var(--bg-2);border:1px solid var(--line);border-radius:12px;padding:16px 8px 12px;text-align:center;position:relative;cursor:pointer;-webkit-user-select:none;user-select:none;display:flex;flex-direction:column;align-items:center;justify-content:space-between;min-height:128px;transition:transform .1s ease,border-color .15s ease,background .15s ease,opacity .15s ease;content-visibility:auto;contain-intrinsic-size:auto 128px}.kanji-cell:hover{border-color:var(--accent);transform:translateY(-1px)}.kanji-cell.off{opacity:.35;background:color-mix(in srgb,var(--bg) 80%,transparent)}.kanji-cell.off:hover{opacity:.65}.kanji-cell.is-selected{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 18%,var(--bg-2));box-shadow:0 0 0 1px var(--accent)}.cell-info-btn{position:absolute;top:6px;right:6px;width:20px;height:20px;border:none;background:transparent;color:var(--muted);font-size:0;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;padding:0;opacity:.6;transition:opacity .15s ease,color .15s ease}.cell-info-btn:hover{opacity:1;color:var(--accent)}.cell-checkbox{position:absolute;top:6px;left:6px;width:18px;height:18px;border-radius:4px;border:1.5px solid var(--line);background:var(--bg-3);color:#fff;font-size:11px;font-weight:700;display:inline-flex;align-items:center;justify-content:center;line-height:1;transition:all .15s ease}.cell-checkbox.checked{background:var(--accent);border-color:var(--accent)}.cell-char{font-size:34px;line-height:1.1;display:block;margin-top:6px;margin-bottom:2px}.cell-meaning{font-size:12px;color:var(--muted);margin-top:4px;min-height:28px;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.cell-reading{font-size:12px;color:var(--kun);margin-top:2px}.switch{display:inline-block;position:relative;width:40px;height:22px;margin-top:8px}.switch input{opacity:0;width:0;height:0}.slider{position:absolute;top:0;right:0;bottom:0;left:0;background:#3a4458;border-radius:22px;transition:.15s}.slider:before{content:"";position:absolute;height:16px;width:16px;left:3px;top:3px;background:#fff;border-radius:50%;transition:.15s}.switch input:checked+.slider{background:var(--green)}.switch input:checked+.slider:before{transform:translate(18px)}.radical-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(110px,1fr));gap:10px}.radical-cell{background:var(--bg-2);border:1px solid var(--line);border-radius:12px;padding:10px;text-align:center}.popup-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;display:flex;align-items:flex-end;justify-content:center;z-index:100;padding:0}.popup{background:var(--bg);border:1px solid var(--line);border-radius:16px 16px 0 0;width:100%;max-width:640px;max-height:88vh;display:flex;flex-direction:column;overflow:hidden}@media (min-width: 640px){.popup-overlay{align-items:center}.popup{border-radius:16px}}.popup-top{display:flex;flex-direction:row;align-items:center;gap:10px;padding:10px 14px;border-bottom:1px solid var(--line);background:var(--bg-2)}.popup-freq{font-size:13px;font-weight:700;color:var(--muted);background:var(--bg-3);border-radius:6px;padding:2px 8px;flex:0 0 auto}.popup-top .flag-dots{margin:0}.popup-top .icon-btn:last-child{margin-left:auto}.popup-enable{display:inline-flex;align-items:center;cursor:pointer;flex:0 0 auto}.popup-enable input{display:none}.popup-enable .slider{position:relative;width:40px;height:22px;background:#3a4458;border-radius:22px;transition:.15s;flex:0 0 auto}.popup-enable .slider:before{content:"";position:absolute;height:16px;width:16px;left:3px;top:3px;background:#fff;border-radius:50%;transition:.15s}.popup-enable input:checked+.slider{background:var(--green)}.popup-enable input:checked+.slider:before{transform:translate(18px)}.icon-btn.small{width:28px;height:28px;font-size:14px}.popup-char{font-size:34px;font-weight:700;line-height:1;flex:0 0 auto}.icon-btn{background:var(--bg-3);border:1px solid var(--line);color:var(--text);border-radius:8px;width:36px;height:36px;font-size:16px}.popup-body{overflow-y:auto;padding:14px 16px 24px}.dict-section{margin-bottom:18px}.dict-header{margin-bottom:8px}.badge{display:inline-block;background:var(--accent);color:#fff;font-size:12px;font-weight:600;padding:3px 9px;border-radius:6px}.badge-row{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:8px}.readings{margin:4px 0 8px}.readings .on{color:var(--on);margin-right:10px}.readings .kun{color:var(--kun)}.jpdb-readings{color:var(--muted);font-size:14px}.gloss{margin:6px 0;padding-left:20px}.gloss li{margin:3px 0;line-height:1.5}.word-list{margin:6px 0;padding-left:20px;columns:2}.word-list li{margin:2px 0}.stats{border-collapse:collapse;margin-top:8px;font-size:14px}.stats th{text-align:left;color:var(--muted);font-weight:600;padding:2px 16px 2px 0;vertical-align:top;white-space:nowrap}.stats td{padding:2px 0}.quiz-header{display:flex;align-items:center;gap:12px;margin-bottom:18px;flex-wrap:wrap}.quiz-titles{flex:1;display:flex;flex-direction:column;gap:1px}.quiz-header h2{margin:0;font-size:20px;flex:1}.quiz-titles h2{flex:none}.quiz-sub{font-size:12px;font-weight:600;color:var(--muted)}.back-link{color:var(--muted);text-decoration:none;font-size:14px}.round-badge{background:transparent;border:none;padding:0;font-size:13px;color:var(--muted);font-weight:500}.empty-state{text-align:center;padding:30px 10px;color:var(--muted)}.empty-state .btn{margin-top:10px}.match-hint{color:var(--muted);font-size:14px;margin-bottom:14px;text-align:center}.part-chip{display:inline-block;background:var(--bg-3);border:1px solid var(--accent);border-radius:8px;padding:2px 10px;font-size:20px;vertical-align:middle}.matching{max-width:620px;margin:0 auto}.match-grid{position:relative;display:grid;grid-template-columns:1fr 1.4fr;gap:12px 44px;align-items:stretch}.match-lines{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;pointer-events:none;overflow:visible;z-index:1}.match-line{stroke:var(--accent);stroke-width:2.5;stroke-linecap:round;stroke-dasharray:6 6;opacity:.8;animation:match-line-in .35s ease-out}.match-line.ok{stroke:var(--green);stroke-dasharray:none;opacity:.9}.match-line.bad{stroke:var(--red);stroke-dasharray:none;opacity:.9}@keyframes match-line-in{0%{opacity:0;stroke-dashoffset:24}to{opacity:.85;stroke-dashoffset:0}}.match-col{display:flex;flex-direction:column;gap:10px}.match-cell{background:var(--bg-2);border:1px solid var(--line);border-radius:12px;padding:14px 10px;color:var(--text);font-size:16px;min-height:54px;transition:.12s;display:flex;align-items:center;justify-content:center;text-align:center;width:100%;position:relative;z-index:2}.match-cell.kanji-side{font-size:30px}.match-cell.meaning-side{flex-direction:column;gap:4px;padding:10px 14px}.match-meaning-en{font-size:15px;line-height:1.3}.match-meaning-ja{font-size:12px;line-height:1.35;color:var(--muted);word-break:break-word}.match-cell[role=button]{cursor:pointer;-webkit-user-select:none;user-select:none}.match-cell .match-meaning-ja{-webkit-user-select:text;user-select:text}.match-cell .match-meaning-ja .kanji-link{cursor:pointer;color:inherit;border-bottom:1px dotted var(--line)}.match-cell .match-meaning-ja .kanji-link:hover{color:var(--accent);border-bottom-color:var(--accent)}.match-cell.matched .match-meaning-ja{color:color-mix(in srgb,var(--green) 80%,white)}.match-cell.wrong .match-meaning-ja{color:color-mix(in srgb,var(--red) 80%,white)}.match-cell.selected{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 22%,var(--bg-2))}.match-cell.linked{border-color:color-mix(in srgb,var(--accent) 60%,var(--line));background:color-mix(in srgb,var(--accent) 10%,var(--bg-2))}.match-cell.matched{border-color:var(--green);background:color-mix(in srgb,var(--green) 20%,var(--bg-2));color:var(--green)}.match-cell.wrong{border-color:var(--red);background:color-mix(in srgb,var(--red) 20%,var(--bg-2));animation:shake .3s}@keyframes shake{25%{transform:translate(-5px)}75%{transform:translate(5px)}}.solved{text-align:center;margin-top:22px}.solved-msg{color:var(--green);margin-bottom:12px}.cloze-quiz{text-align:center;padding-top:10px}.cloze-word{font-size:46px;font-weight:700;letter-spacing:2px;margin-bottom:10px;line-height:1.15}.cloze-word .kanji-glyph,.cloze-word .cloze-char{vertical-align:bottom}.blank{display:inline-block;vertical-align:bottom;min-width:46px;width:1em;height:1em;border-bottom:3px solid var(--accent);color:transparent}.blank.filled{display:contents}.blank.filled.ok{color:var(--green)}.blank.filled.bad{color:var(--red)}.cloze-meaning{color:var(--muted);font-size:18px;margin-bottom:24px}.choice-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(66px,88px));gap:12px;justify-content:center}.choice{background:var(--bg-2);border:1px solid var(--line);border-radius:12px;padding:16px 0;font-size:34px;color:var(--text)}.choice:hover:not(:disabled){border-color:var(--accent)}.choice.correct{border-color:var(--green);background:color-mix(in srgb,var(--green) 20%,var(--bg-2));color:var(--green)}.choice.incorrect{border-color:var(--red);background:color-mix(in srgb,var(--red) 20%,var(--bg-2));color:var(--red)}.choice.dim{opacity:.4}.cloze-result{margin-top:22px}.result.ok{color:var(--green);font-weight:700}.result.bad{color:var(--red);font-weight:700}.full-word{font-size:18px;margin:8px 0 16px}.kanji-glyph{display:inline-block;line-height:1}.kanji-glyph .glyph-svg{width:1em;height:1em;display:block;margin-inline:auto}.kanji-glyph .glyph-svg path{fill:none;stroke:currentColor;stroke-width:6.5;stroke-linecap:round;stroke-linejoin:round}.kanji-glyph.clickable{cursor:pointer}.kanji-glyph.clickable:hover{color:var(--accent)}.cell-char.kanji-glyph{display:block}.stroke-order{text-align:center;margin-bottom:18px}.stroke-box{position:relative;display:inline-block;padding:0;border:none;background:none;cursor:pointer}.stroke-box:hover .stroke-svg{border-color:var(--accent)}.stroke-svg{width:128px;height:128px;background:var(--bg-2);border:1px solid var(--line);border-radius:12px;display:block}.stroke-order .guide path{fill:none;stroke:color-mix(in srgb,var(--muted) 35%,var(--bg-2));stroke-width:4.5;stroke-linecap:round;stroke-linejoin:round}.stroke-order .draw path{fill:none;stroke:var(--accent);stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:1;stroke-dashoffset:1;animation-name:draw;animation-fill-mode:forwards;animation-timing-function:ease}@keyframes draw{to{stroke-dashoffset:0}}.reading-choice-grid{display:flex;flex-wrap:wrap;gap:12px;justify-content:center}.reading-choice{background:var(--bg-2);border:1px solid var(--line);border-radius:10px;padding:14px 20px;font-size:22px;color:var(--text)}.reading-choice:hover:not(:disabled){border-color:var(--accent)}.reading-choice.correct{border-color:var(--green);background:color-mix(in srgb,var(--green) 20%,var(--bg-2));color:var(--green)}.reading-choice.incorrect{border-color:var(--red);background:color-mix(in srgb,var(--red) 20%,var(--bg-2));color:var(--red)}.reading-choice.dim{opacity:.4}.reading-chip{display:inline-block;background:var(--bg-3);color:var(--kun);border-radius:6px;padding:1px 8px;margin:0 6px;font-size:.85em}.tap-hint{font-size:13px;margin:6px 0}.build-quiz{text-align:center;padding-top:6px}.partial-kanji{width:180px;height:180px;display:block;margin:0 auto 12px;background:var(--bg-2);border:1px solid var(--line);border-radius:14px}.partial-kanji.clickable{cursor:pointer}.partial-kanji.clickable:hover{border-color:var(--accent)}.partial-kanji .stroke-have{fill:none;stroke:var(--text);stroke-width:4.5;stroke-linecap:round;stroke-linejoin:round}.partial-kanji .stroke-missing{opacity:0}.partial-kanji .stroke-missing.reveal{opacity:1;fill:none;stroke:var(--green);stroke-width:5.5;stroke-linecap:round;stroke-linejoin:round}.build-clues{margin-bottom:14px}.build-reading{font-size:16px;margin-top:4px;display:flex;gap:12px;justify-content:center;flex-wrap:wrap}.build-reading .on{color:var(--on)}.build-reading .kun{color:var(--kun)}[data-theme=slate]{--bg: #0b1016;--bg-2: #141b24;--bg-3: #1d2733;--line: #2c3a49;--text: #e6edf3;--muted: #8b949e;--accent: #38bdf8;--accent-2: #0ea5e9;--on: #fca5a5;--kun: #7dd3fc}[data-theme=matcha]{--bg: #0e1510;--bg-2: #16201a;--bg-3: #1f2c24;--line: #2e4035;--text: #e8f0e8;--muted: #8ba390;--accent: #5bbf72;--accent-2: #3f9e59;--green: #7bd88f;--on: #f3b7c6;--kun: #9ad0a4}[data-theme=nord]{--bg: #2e3440;--bg-2: #353c4a;--bg-3: #3b4252;--line: #4c566a;--text: #eceff4;--muted: #9aa5b8;--accent: #88c0d0;--accent-2: #5e81ac;--green: #a3be8c;--red: #bf616a;--on: #b48ead;--kun: #81a1c1}[data-theme=dracula]{--bg: #21222c;--bg-2: #282a36;--bg-3: #343746;--line: #44475a;--text: #f8f8f2;--muted: #9ba0bd;--accent: #bd93f9;--accent-2: #8be9fd;--green: #50fa7b;--red: #ff5555;--on: #ff79c6;--kun: #8be9fd}[data-theme=sakura]{--bg: #fdf2f5;--bg-2: #ffffff;--bg-3: #fbe4ea;--line: #f0cdd8;--text: #3a2a30;--muted: #9a7a85;--accent: #e8679a;--accent-2: #d6457f;--green: #3fa06a;--red: #d64550;--on: #c2457f;--kun: #4a74c0}[data-theme=sakura-dark]{--bg: #1a1016;--bg-2: #241820;--bg-3: #2e2028;--line: #3d2b35;--text: #f5e0e8;--muted: #b690a0;--accent: #ec6a9c;--accent-2: #d6457f;--green: #5bbf82;--red: #ff6b7a;--on: #f3a7c6;--kun: #8fb0e8}[data-theme=nord-light]{--bg: #eceff4;--bg-2: #ffffff;--bg-3: #e5e9f0;--line: #d8dee9;--text: #2e3440;--muted: #4c566a;--accent: #5e81ac;--accent-2: #81a1c1;--green: #5e8c4e;--red: #bf616a;--on: #a6558e;--kun: #5e81ac}[data-theme=solarized-light]{--bg: #fdf6e3;--bg-2: #eee8d5;--bg-3: #e7e0ce;--line: #ddd6c1;--text: #586e75;--muted: #93a1a1;--accent: #268bd2;--accent-2: #2aa198;--green: #859900;--red: #dc322f;--on: #d33682;--kun: #268bd2}[data-theme=solarized-dark]{--bg: #002b36;--bg-2: #073642;--bg-3: #0e4653;--line: #1a5663;--text: #93a1a1;--muted: #657b83;--accent: #268bd2;--accent-2: #2aa198;--green: #859900;--red: #dc322f;--on: #d33682;--kun: #6c71c4}[data-theme=gruvbox-light]{--bg: #fbf1c7;--bg-2: #f2e5bc;--bg-3: #ebdbb2;--line: #d5c4a1;--text: #3c3836;--muted: #7c6f64;--accent: #d65d0e;--accent-2: #af3a03;--green: #79740e;--red: #9d0006;--on: #b57614;--kun: #076678}[data-theme=gruvbox-dark]{--bg: #282828;--bg-2: #32302f;--bg-3: #3c3836;--line: #504945;--text: #ebdbb2;--muted: #a89984;--accent: #fe8019;--accent-2: #d65d0e;--green: #b8bb26;--red: #fb4934;--on: #fabd2f;--kun: #83a598}[data-theme=alucard]{--bg: #fffbeb;--bg-2: #ffffff;--bg-3: #f5f1e0;--line: #e5e0cb;--text: #1f1f1f;--muted: #6c664b;--accent: #644ac9;--accent-2: #036a96;--green: #14710a;--red: #cb3a2a;--on: #a3144d;--kun: #036a96}[data-theme=github-light]{--bg: #ffffff;--bg-2: #f6f8fa;--bg-3: #eaeef2;--line: #d0d7de;--text: #1f2328;--muted: #656d76;--accent: #0969da;--accent-2: #1a7f37;--green: #1a7f37;--red: #cf222e;--on: #8250df;--kun: #0969da}[data-theme=github-dark]{--bg: #0d1117;--bg-2: #161b22;--bg-3: #21262d;--line: #30363d;--text: #e6edf3;--muted: #8b949e;--accent: #58a6ff;--accent-2: #3fb950;--green: #3fb950;--red: #f85149;--on: #d2a8ff;--kun: #58a6ff}.settings-section{margin-bottom:26px}.settings-section h3{margin:0 0 10px;font-size:17px}.theme-head{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:6px}.theme-col-label{font-size:11px;font-weight:700;letter-spacing:.8px;text-transform:uppercase;color:var(--muted);text-align:center}.theme-families{display:flex;flex-direction:column;gap:10px}.theme-family{display:grid;grid-template-columns:1fr 1fr;gap:10px}.theme-chip{background:var(--bg-2);border:2px solid var(--line);border-radius:12px;padding:10px;display:flex;align-items:center;gap:10px;color:var(--text);transition:border-color .12s ease,transform .08s ease}.theme-chip:hover{transform:translateY(-1px)}.theme-chip.active{border-color:var(--accent);box-shadow:0 0 0 2px color-mix(in srgb,var(--accent) 30%,transparent)}.theme-swatch{display:inline-flex;border-radius:6px;overflow:hidden;border:1px solid var(--line);flex:0 0 auto}.theme-swatch i{width:16px;height:28px;display:block}.theme-swatch .sw-bg{background:var(--bg)}.theme-swatch .sw-accent{background:var(--accent)}.theme-swatch .sw-green{background:var(--green)}.theme-name{font-weight:600;font-size:14px}.dict-list{display:flex;flex-direction:column;gap:8px;margin-top:10px}.dict-row{display:flex;align-items:center;justify-content:space-between;padding:12px 14px;background:var(--bg-2);border:1px solid var(--line);border-radius:10px;font-size:15px}.group-list{display:flex;flex-direction:column;gap:10px}.group-card{background:var(--bg-2);border:1px solid var(--line);border-radius:12px;padding:12px;display:flex;flex-wrap:wrap;gap:12px;align-items:flex-start}.group-card.component{display:flex;flex-wrap:nowrap;align-items:stretch;gap:14px}.group-card.component .group-part{flex:0 0 60px;display:flex;flex-direction:column;align-items:center;justify-content:flex-start;padding-right:14px;margin-right:0;border-right:1px solid var(--line)}.group-card.component .group-part .group-char{font-size:38px;line-height:1}.group-part-name{font-size:11px;color:var(--muted);text-align:center;margin-top:6px;line-height:1.3;word-break:break-all}.group-card.component .group-members{flex:1;min-width:0;display:flex;flex-wrap:wrap;gap:12px;align-content:flex-start}.group-part .group-char{font-size:40px;color:var(--accent)}.group-members{display:flex;flex-wrap:wrap;gap:12px}.group-member{width:76px;text-align:center}.group-char{font-size:32px;display:block}.group-meaning{font-size:11px;color:var(--muted);margin-top:2px;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.sentence-quiz{text-align:center;padding-top:6px}.audio-btn{background:var(--accent);color:#fff;border:none;border-radius:24px;padding:10px 22px;font-size:16px;font-weight:600;display:inline-flex;align-items:center;justify-content:center;gap:8px;margin-top:14px;margin-bottom:18px;cursor:pointer;transition:opacity .15s ease,transform .1s ease}.audio-btn:hover{opacity:.9}.audio-btn:active{transform:scale(.98)}.sentence{font-size:30px;line-height:1.7;margin-bottom:22px;word-break:break-word}.sentence .kana{white-space:pre}.sentence-translation{color:var(--muted);font-style:italic;margin:10px 0 16px}.home-stats{display:flex;flex-wrap:wrap;align-items:center;gap:12px;margin:0 0 20px}.stat-pill{background:var(--bg-2);border:1px solid var(--line);border-radius:20px;padding:6px 14px;color:var(--text);text-decoration:none;font-size:14px}.stat-pill strong{color:var(--accent)}.stat-pill:hover{border-color:var(--accent)}.flag-counts{display:flex;gap:10px}.flag-count{display:inline-flex;align-items:center;gap:4px;font-size:13px;color:var(--muted)}.flag-count-dot{width:11px;height:11px;border-radius:50%}.flag-filter{display:flex;align-items:center;flex-wrap:wrap;gap:8px;margin-bottom:12px}.flag-filter-label{color:var(--muted);font-size:13px}.flag-chip{display:inline-flex;align-items:center;gap:6px;background:var(--bg-2);border:1px solid var(--line);border-radius:16px;padding:4px 10px;color:var(--muted);font-size:13px}.flag-chip .flag-chip-dot{width:12px;height:12px;border-radius:50%;background:var(--fc)}.flag-chip.on{border-color:var(--fc);color:var(--text);background:color-mix(in srgb,var(--fc) 18%,var(--bg-2))}.flag-dots{display:flex;justify-content:center;align-items:center;gap:5px;margin:6px 0 2px}.flag-dot{width:14px;height:14px;min-width:14px;min-height:14px;max-width:14px;max-height:14px;aspect-ratio:1 / 1;flex:0 0 14px;border-radius:50%;border:1.5px solid var(--fc);background:transparent;padding:0;margin:0;line-height:1;display:inline-block;vertical-align:middle;box-sizing:border-box;opacity:.55;transition:opacity .1s,transform .1s;cursor:pointer;flex-shrink:0}.flag-dot:hover{opacity:.85}.flag-dot.on{background:var(--fc);opacity:1}.dict-row{display:flex;align-items:center;gap:12px}.dict-reorder{display:flex;flex-direction:column;gap:2px}.reorder-btn{background:var(--bg-3);border:1px solid var(--line);color:var(--text);border-radius:6px;width:26px;height:20px;line-height:1;font-size:12px;padding:0}.reorder-btn:disabled{opacity:.3}.dict-name{flex:1}.sentence{line-height:1.9}.sentence .kanji-glyph{vertical-align:middle}.sentence .kana{vertical-align:middle;display:inline-block}.sentence .kanji-glyph .glyph-svg{width:1.2em;height:1.2em}.sentence .kanji-glyph .glyph-svg path{stroke-width:6}.sentence .blank{min-width:1.1em;width:auto;height:1.2em;vertical-align:middle}.sentence .blank .kanji-glyph .glyph-svg{width:1.2em;height:1.2em}.writing-modebar{display:flex;justify-content:center;gap:2px;margin-bottom:14px}.seg{background:var(--bg-2);border:1px solid var(--line);color:var(--muted);padding:8px 20px;font-size:14px;font-weight:600}.seg:first-child{border-radius:10px 0 0 10px}.seg:last-child{border-radius:0 10px 10px 0}.seg.active{background:var(--accent);border-color:var(--accent);color:#fff}.writing-clues{text-align:center;margin-bottom:14px}.writing-meaning{font-size:20px;font-weight:600}.writing-readings{margin-top:4px;font-size:15px}.writing-readings .on{color:var(--on);margin-right:10px}.writing-readings .kun{color:var(--kun)}.writing-pad{width:min(320px,86vw);aspect-ratio:1;margin:0 auto;background:var(--bg-2);border:1px solid var(--line);border-radius:16px;touch-action:none}.writing-pad.shake{animation:shake .3s;border-color:var(--red)}.writing-svg{width:100%;height:100%;touch-action:none;cursor:crosshair}.writing-svg .pad-grid{stroke:var(--line);stroke-width:.6;stroke-dasharray:3 3}.writing-svg .guide{fill:none;stroke:var(--muted);stroke-width:3.5;stroke-linecap:round;stroke-linejoin:round;opacity:.22}.writing-svg .guide-done{fill:none;stroke:var(--muted);stroke-width:3;stroke-linecap:round;stroke-linejoin:round;opacity:.25}.writing-svg .guide-next{fill:none;stroke:var(--accent);stroke-width:4;stroke-linecap:round;stroke-linejoin:round;opacity:.5}.writing-svg .ink{fill:none;stroke:var(--text);stroke-width:3.5;stroke-linecap:round;stroke-linejoin:round}.writing-svg .ink.current{stroke:var(--accent)}.writing-status{text-align:center;margin:12px 0;min-height:24px}.writing-controls{display:flex;justify-content:center;gap:10px}.sentence-kanji-list{display:flex;flex-direction:column;gap:12px}.sentence-kanji-card{background:var(--bg-2);border:1px solid var(--line);border-radius:12px;padding:12px 14px}.sentence-kanji-head{display:flex;align-items:center;gap:12px;padding-bottom:8px;margin-bottom:8px;border-bottom:1px solid var(--line)}.sentence-kanji-char{font-size:34px}.sentence-kanji-meaning{color:var(--muted);font-size:15px}.sentence-list{display:flex;flex-direction:column;gap:10px}.sentence-row{display:flex;gap:10px;align-items:flex-start}.audio-mini{flex:0 0 auto;background:var(--bg-3);border:1px solid var(--line);border-radius:8px;width:34px;height:34px;font-size:15px}.audio-mini:hover{border-color:var(--accent)}.sentence-text{flex:1;min-width:0}.sentence-ja{font-size:17px;line-height:1.5}.sentence-en{color:var(--muted);font-size:13px;font-style:italic;margin-top:2px}.custom-sentences-sep{display:flex;align-items:center;gap:10px;margin:12px 0 8px;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--accent)}.custom-sentences-sep:before,.custom-sentences-sep:after{content:"";flex:1;height:1px;background:var(--line)}.settings-link{background:none;border:none;cursor:pointer}.panel-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0000008c;z-index:120;display:flex;justify-content:flex-end}.settings-panel{width:min(440px,100%);background:var(--bg);border-left:1px solid var(--line);display:flex;flex-direction:column;animation:slidein .18s ease}@keyframes slidein{0%{transform:translate(30px);opacity:.6}}.panel-head{display:flex;align-items:center;justify-content:space-between;padding:14px 16px;border-bottom:1px solid var(--line);background:var(--bg-2)}.panel-head h2{margin:0;font-size:19px}.panel-body{overflow-y:auto;padding:16px}.kanji-stats{margin:4px 0 8px}.kstat-row{display:flex;flex-wrap:wrap;gap:10px 16px;font-size:14px}.kstat b{font-size:16px}.kstat.ok b{color:var(--green)}.kstat.bad b{color:var(--red)}.writing-svg.done{cursor:pointer}.kind-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px}.kind-card{text-align:left;background:var(--bg-2);border:2px solid var(--line);border-radius:12px;padding:12px;color:var(--text)}.kind-card.on{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 14%,var(--bg-2))}.kind-label{font-weight:700}.kind-desc{color:var(--muted);font-size:12px;margin-top:3px}.time-grid{display:flex;gap:8px;margin-top:12px;flex-wrap:wrap}.time-chip{background:var(--bg-2);border:1px solid var(--line);border-radius:10px;padding:8px 16px;color:var(--text);font-size:15px}.time-chip.on{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 16%,var(--bg-2))}.setup-footer{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:10px;flex-wrap:wrap}.challenge-bar{display:flex;align-items:center;justify-content:space-between;margin-bottom:18px;gap:12px}.challenge-hud{display:flex;align-items:center;gap:14px;font-size:18px;font-weight:700}.hud-score{color:var(--green)}.hud-timer{font-variant-numeric:tabular-nums;background:var(--bg-3);border-radius:8px;padding:2px 10px}.hud-timer.low{color:var(--red)}.hud-lives .lost{opacity:.35}.hud-streak{color:#f59e0b}.challenge-q{text-align:center}.q-prompt-kanji{font-size:90px;line-height:1;margin:10px 0 18px}.q-prompt-word{font-size:44px;margin:6px 0 10px}.q-sub{color:var(--muted);font-size:18px;margin-bottom:18px}.choice-grid.text{grid-template-columns:1fr;max-width:460px;margin:0 auto}.text-choice{font-size:18px;padding:14px 16px}.challenge-reveal{margin-top:20px;display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:10px;font-size:17px}.reveal-word{font-weight:600}.reveal-trans{color:var(--muted);font-style:italic;flex-basis:100%}.challenge-summary{text-align:center;padding-top:20px}.big-score{font-size:72px;font-weight:800;color:var(--accent);line-height:1}.summary-stats{display:flex;justify-content:center;gap:20px;margin:14px 0;color:var(--muted)}.stat-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:12px;margin-bottom:22px}.stat-card{background:var(--bg-2);border:1px solid var(--line);border-radius:12px;padding:16px;text-align:center}.stat-num{font-size:26px;font-weight:800;color:var(--accent)}.stat-label{color:var(--muted);font-size:13px;margin-top:2px}.record-row{justify-content:space-between}.stat-mode-info{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}.stat-mode-tag{font-size:12px;color:var(--muted);font-weight:400;opacity:.8}.leech-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(84px,1fr));gap:10px}.leech-cell{background:var(--bg-2);border:1px solid var(--line);border-radius:12px;padding:10px;text-align:center}.leech-char{font-size:34px}.leech-info{font-size:11px;color:var(--red);margin-top:4px}.app-bar-right{display:flex;align-items:center;gap:10px}.account-link{display:flex;align-items:center;font-size:20px;text-decoration:none}.account-chip,.account-avatar{display:inline-flex;align-items:center;justify-content:center;color:#fff;font-weight:700;border-radius:50%}.account-chip{width:28px;height:28px;font-size:14px}.account-card{display:flex;align-items:center;gap:14px;background:var(--bg-2);border:1px solid var(--line);border-radius:12px;padding:14px}.account-avatar{width:48px;height:48px;font-size:22px}.account-name{font-size:18px;font-weight:700}.account-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:12px}.account-signin{display:flex;gap:10px;margin:10px 0}.oauth-row{display:flex;gap:10px;flex-wrap:wrap;margin-top:8px}.account-alert{padding:12px 16px;border-radius:8px;font-size:14px;margin-bottom:16px;line-height:1.4}.account-alert.success{background:#22c55e1f;color:#16a34a;border:1px solid rgba(34,197,94,.3)}.account-alert.error{background:#ef44441f;color:#dc2626;border:1px solid rgba(239,68,68,.3)}.tier-badge{display:inline-flex;align-items:center;padding:2px 8px;border-radius:9999px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.5px}.tier-badge.free{background:var(--bg-3, rgba(0, 0, 0, .05));color:var(--text-muted, #888)}.tier-badge.pro{background:linear-gradient(135deg,#7c3aed,#a855f7);color:#fff}.entitlements-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:14px;margin-top:14px}.entitlement-card{background:var(--bg-2);border:1px solid var(--line);border-radius:12px;padding:16px;display:flex;flex-direction:column;gap:10px;transition:transform .15s,border-color .15s}.entitlement-card.highlight{border-color:#a855f7;background:linear-gradient(180deg,var(--bg-2) 0%,rgba(168,85,247,.05) 100%)}.entitlement-head{display:flex;align-items:center;gap:10px}.entitlement-icon{font-size:24px;line-height:1}.entitlement-title{flex:1}.entitlement-title h4{margin:0;font-size:15px;font-weight:700}.entitlement-tag{font-size:11px;font-weight:700;padding:3px 8px;border-radius:6px}.entitlement-tag.unlocked{background:#22c55e26;color:#16a34a}.entitlement-tag.locked{background:var(--bg-3, rgba(0, 0, 0, .05));color:var(--text-muted, #888)}.btn.full-width{width:100%;justify-content:center;margin-top:auto}.oauth-buttons{display:flex;flex-direction:column;gap:10px;max-width:360px;margin:16px 0}.oauth-btn{display:flex;align-items:center;justify-content:center;gap:12px;padding:12px 18px;font-size:15px;font-weight:600;border-radius:10px;border:1px solid var(--line);background:var(--bg-2);color:var(--text);cursor:pointer;transition:all .15s ease}.oauth-btn:hover{background:var(--bg-3, rgba(0, 0, 0, .04));border-color:var(--accent)}.oauth-icon{flex-shrink:0}.auth-tabs-toggle{margin:10px 0}.btn-link{background:none;border:none;cursor:pointer;padding:0;color:var(--accent);text-decoration:underline}.auth-secondary-box{background:var(--bg-2);border:1px solid var(--line);border-radius:12px;padding:16px;max-width:400px;margin-top:10px}.auth-tab-buttons{display:flex;gap:8px;margin-bottom:14px}.tab-btn{background:none;border:none;padding:6px 12px;font-size:13px;font-weight:600;color:var(--text-muted);border-radius:6px;cursor:pointer}.tab-btn.active{background:var(--accent);color:#fff}.email-auth-form{display:flex;flex-direction:column;gap:10px}.theme-locked-banner{display:flex;align-items:center;justify-content:space-between;gap:10px;background:#f59e0b1f;border:1px solid rgba(245,158,11,.35);color:#d97706;padding:8px 12px;border-radius:8px;font-size:13px;margin-bottom:12px}.theme-chip.locked{opacity:.85}.theme-lock-badge{font-size:10px;margin-left:4px}.btn.oauth{opacity:.6}.muted.small{font-size:12px;margin-top:8px}.custom-input{width:100%;min-height:140px;resize:vertical;background:var(--bg-2);border:1px solid var(--line);border-radius:12px;color:var(--text);padding:12px;font:inherit;font-size:16px;margin-bottom:10px}.custom-input:focus{outline:none;border-color:var(--accent)}.custom-row{display:flex;gap:10px;align-items:flex-start;background:var(--bg-2);border:1px solid var(--line);border-radius:10px;padding:10px 12px}.custom-del{flex:0 0 auto;background:none;border:none;color:var(--muted);font-size:16px;cursor:pointer}.custom-del:hover{color:var(--red)}.yoji-quiz{text-align:center}.yoji-cloze{font-size:56px;letter-spacing:6px;margin:8px 0 14px;display:flex;justify-content:center;align-items:center;gap:4px}.yoji-blank{display:inline-flex;align-items:center;justify-content:center;width:1em;height:1em;border-bottom:4px solid var(--accent);vertical-align:middle;line-height:1}.yoji-blank.ok,.yoji-blank.bad{border-bottom:none}.yoji-blank.ok{color:var(--green)}.yoji-blank.bad{color:var(--red)}.yoji-clues{margin-bottom:20px}.yoji-en{font-size:19px;font-weight:600}.yoji-reading{color:var(--kun);font-size:15px;margin:4px 0}.yoji-jm{color:var(--muted);font-size:14px;max-width:540px;margin:0 auto;line-height:1.5}.yoji-reveal{margin-top:20px}.yoji-entry{text-align:left;background:var(--bg-2);border:1px solid var(--line);border-radius:12px;padding:14px 16px;max-width:560px;margin:10px auto 16px}.yoji-entry-head{display:flex;align-items:center;gap:10px;margin-bottom:8px}.yoji-entry-term{font-size:30px}.yoji-entry-en{font-weight:600;margin-bottom:6px}.yoji-entry-jm{color:var(--text);font-size:14px;line-height:1.6}.yoji-usage{margin:8px 0 0;padding-left:18px;color:var(--muted);font-size:13px}.yoji-usage li{margin:3px 0}.heatmap{overflow-x:auto}.heatmap-grid{display:flex;gap:3px;min-width:max-content}.heatmap-col{display:flex;flex-direction:column;gap:3px}.heatmap-cell{width:12px;height:12px;border-radius:2px;background:var(--bg-3)}.heatmap-cell.lv0{background:var(--bg-3)}.heatmap-cell.lv1{background:color-mix(in srgb,var(--green) 30%,var(--bg-3))}.heatmap-cell.lv2{background:color-mix(in srgb,var(--green) 55%,var(--bg-3))}.heatmap-cell.lv3{background:color-mix(in srgb,var(--green) 78%,var(--bg-3))}.heatmap-cell.lv4{background:var(--green)}.heatmap-legend{display:flex;align-items:center;gap:4px;margin-top:8px;font-size:12px;color:var(--muted)}.notes-section{margin:4px 0 10px}.note-add{margin:4px 0 8px}.note-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:4px}.note-toolbar{display:flex;gap:6px;margin:4px 0 6px;align-items:center}.note-tool{width:32px;height:30px;background:var(--bg-3);border:1px solid var(--line);border-radius:6px;color:var(--text);font-size:14px;cursor:pointer}.note-tool:hover{border-color:var(--accent)}.note-done{margin-left:auto}.kanji-note{width:100%;color:var(--text);font:inherit;font-size:14px;line-height:1.4}.kanji-note p,.kanji-note div{margin:0}.kanji-note.editable{min-height:48px;background:var(--bg-2);border:1px solid var(--line);border-radius:8px;padding:6px 10px}.kanji-note.editable:focus{outline:none;border-color:var(--accent)}.kanji-note.editable:empty:before{content:attr(data-placeholder);color:var(--muted)}.kanji-note.rendered{background:transparent;border:none;padding:0;min-height:0}.level-filter{display:flex;align-items:center;flex-wrap:wrap;gap:6px;margin-bottom:12px}.kyu-label{margin-left:10px}.level-chip{background:var(--bg-2);border:1px solid var(--line);border-radius:14px;padding:3px 10px;color:var(--muted);font-size:13px}.level-chip.on{border-color:var(--accent);color:var(--text);background:color-mix(in srgb,var(--accent) 16%,var(--bg-2))}.dict-block{background:var(--bg-2);border:1px solid var(--line);border-radius:10px;overflow:hidden}.dict-block .dict-row{background:transparent;border:none;border-radius:0}.dict-expand{display:flex;align-items:center;gap:8px;background:none;border:none;color:var(--text);font:inherit;text-align:left;cursor:pointer;padding:0;flex:1}.caret{display:inline-block;transition:transform .12s;color:var(--muted);font-size:11px}.caret.open{transform:rotate(90deg)}.component-list{display:flex;flex-direction:column;gap:2px;padding:6px 14px 12px 40px;border-top:1px solid var(--line)}.component-row{display:flex;align-items:center;gap:8px;font-size:14px;color:var(--text)}.component-row input:disabled+span{opacity:.4}.kanken-setup{display:flex;flex-direction:column;gap:18px;max-width:560px;margin:0 auto}.field{display:flex;flex-direction:column;gap:8px}.field-label{font-size:13px;font-weight:600;color:var(--muted)}.field select{padding:10px 12px;border-radius:10px;border:1px solid var(--line);background:var(--bg-2);color:var(--text);font-size:15px}.chip-row{display:flex;flex-wrap:wrap;gap:8px}.chip{padding:5px 10px;border-radius:999px;border:1px solid var(--line);background:var(--bg-2);color:var(--muted);font-size:13px;cursor:pointer}.chip.on{border-color:var(--accent);color:var(--text);background:color-mix(in srgb,var(--accent) 16%,var(--bg-2))}.chip-count{opacity:.6;font-size:11px}.kk-seg{display:inline-flex;border:1px solid var(--line);border-radius:10px;overflow:hidden}.kk-seg-btn{padding:8px 14px;background:var(--bg-2);color:var(--muted);border:none;border-right:1px solid var(--line);cursor:pointer;font-size:13px}.kk-seg-btn:last-child{border-right:none}.kk-seg-btn.on{background:color-mix(in srgb,var(--accent) 18%,var(--bg-2));color:var(--text)}.small-seg{margin-top:14px}.small-seg .kk-seg-btn{padding:5px 10px;font-size:12px}.btn.big{padding:12px 20px;font-size:16px}.kanken-card{background:var(--bg-2);border:1px solid var(--line);border-radius:14px;padding:20px;max-width:620px;margin:0 auto}.kanken-instruction{color:var(--muted);font-size:13px;margin:0 0 12px}.kanken-prompt{font-size:24px;line-height:1.7;margin-bottom:18px;word-break:break-word}.kanken-cand-bank{display:flex;align-items:flex-start;gap:8px;background:var(--surface-2, rgba(255, 255, 255, .04));border:1px dashed var(--border);border-radius:8px;padding:8px 12px;margin-bottom:16px;font-size:14px}.kanken-cand-label{font-weight:700;color:var(--muted);white-space:nowrap;padding-top:2px}.kanken-cand-chips{display:flex;flex-wrap:wrap;gap:6px}.kanken-cand-chip{display:inline-block;background:var(--surface-1, rgba(255, 255, 255, .08));border:1px solid var(--border);border-radius:4px;padding:2px 8px;font-size:15px;color:var(--text);line-height:1.4}.kk-kind{display:inline-block;font-size:14px;font-weight:700;padding:2px 8px;border-radius:6px;margin-right:8px;vertical-align:middle;line-height:1.3;background:color-mix(in srgb,var(--accent) 15%,transparent);color:var(--accent);border:1px solid color-mix(in srgb,var(--accent) 30%,transparent)}.kk-kind.taigi{background:color-mix(in srgb,#f59e0b 16%,transparent);color:#d97706;border-color:color-mix(in srgb,#f59e0b 40%,transparent)}.kk-kind.ruigi{background:color-mix(in srgb,#10b981 16%,transparent);color:#059669;border-color:color-mix(in srgb,#10b981 40%,transparent)}:root:not([data-theme*=light]):not([data-theme=alucard]):not([data-theme=sakura]) .kk-kind.taigi{color:#fbbf24}:root:not([data-theme*=light]):not([data-theme=alucard]):not([data-theme=sakura]) .kk-kind.ruigi{color:#34d399}.kk-target{color:var(--red);font-weight:700}.kk-target.active{color:var(--red);font-weight:700;background:color-mix(in srgb,var(--red) 12%,transparent);border-radius:4px;padding:0 2px}.kk-target.dim{color:var(--text);font-weight:400}.kk-blank{display:inline-block;min-width:1em;border-bottom:2px solid var(--accent);text-align:center;color:transparent}.kk-target .kk-blank,.kk-target.active .kk-blank,.kk-blank.kk-target{border-bottom-color:var(--red);color:transparent}.kanken-dropdown-container{display:flex;flex-direction:column;align-items:center;gap:12px;width:100%;max-width:440px;margin:8px auto}.kanken-dropdown-row{display:flex;flex-direction:column;gap:6px;width:100%}.kanken-dropdown-row label{font-size:13px;color:var(--muted);font-weight:600}.kanken-select,.kanken-custom-select{width:100%}.kanken-custom-select .custom-select-trigger{width:100%;padding:10px 14px;font-size:16px;background-color:var(--bg-2);border:1px solid var(--line);border-radius:8px}.kanken-custom-select .custom-select-menu{width:100%;max-width:100%;max-height:280px}.kanken-custom-select .custom-select-option{padding:10px 14px;font-size:15px}.custom-select-container.disabled{pointer-events:none}.custom-select-container.disabled .custom-select-trigger{opacity:.5;cursor:not-allowed}.kanken-step-indicator{display:inline-block;padding:4px 10px;margin-bottom:8px;border-radius:6px;font-size:13px;font-weight:700;background:color-mix(in srgb,var(--accent) 15%,transparent);color:var(--accent)}.kk-radical{color:var(--muted);font-size:.85em}.kanken-answer{margin-top:8px}.kanken-choices{display:flex;flex-wrap:wrap;justify-content:center;gap:12px}.kk-choice{min-width:64px;max-width:100%;padding:14px 18px;line-height:1.25;white-space:normal;overflow-wrap:anywhere;text-align:center}.kanken-type{display:flex;gap:10px}.kanken-type input{flex:1;padding:12px 14px;font-size:22px;border-radius:10px;border:1px solid var(--line);background:var(--bg);color:var(--text);text-align:center}.kanken-result{margin-top:8px;display:flex;flex-direction:column;gap:10px;align-items:flex-start}.kanken-answers{display:flex;flex-wrap:wrap;gap:10px}.kanken-ans-chip{font-size:26px;font-weight:700;padding:4px 12px;border-radius:10px;background:color-mix(in srgb,var(--green) 16%,var(--bg-2));border:1px solid var(--green)}.hwpad{display:flex;flex-direction:column;align-items:center;gap:12px;color:var(--text);width:100%}.hwpad-preds{display:flex;flex-wrap:wrap;justify-content:center;gap:8px;min-height:56px;align-items:center;width:100%;max-width:440px}.hwpad-pred{font-size:30px;padding:6px 12px;border-radius:10px;border:1px solid var(--line);background:var(--bg-2);color:var(--text);cursor:pointer;transition:border-color .12s,transform .08s}.hwpad-pred:first-child{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 14%,var(--bg-2))}.hwpad-pred:hover{border-color:var(--accent);transform:translateY(-1px)}.hwpad-canvas{border:2px dashed var(--line);border-radius:14px;background:var(--bg);touch-action:none}.hwpad-actions{display:flex;gap:10px}.btn.ghost{background:transparent;border:1px solid var(--line);color:var(--muted)}.btn.small{padding:6px 12px;font-size:13px}.toolbar.wrap{flex-wrap:wrap;gap:10px}.toolbar select{padding:8px 10px;border-radius:8px;border:1px solid var(--line);background:var(--bg-2);color:var(--text)}.kanken-index-stats{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:12px}.kanken-q-list{display:flex;flex-direction:column;gap:6px}.kanken-q-row{display:flex;align-items:center;gap:10px;padding:8px 12px;border:1px solid var(--line);border-radius:10px;background:var(--bg-2)}.kanken-q-row.clickable{cursor:pointer;transition:all .15s ease}.kanken-q-row.clickable:hover{background:var(--bg-3);border-color:var(--accent);transform:translateY(-1px)}.kanken-status-dot{width:10px;height:10px;border-radius:50%;flex:0 0 auto;background:var(--muted)}.kanken-status-dot.passed{background:var(--green)}.kanken-status-dot.missed{background:var(--red)}.kanken-q-type{font-size:12px;color:var(--muted);flex:0 0 auto;min-width:64px}.kanken-q-text{flex:1;font-size:18px}.kanken-q-score{font-size:12px;flex:0 0 auto}.muted.small,.small{font-size:12px}.assess-intro{max-width:520px;margin:0 auto;display:flex;flex-direction:column;gap:16px;text-align:center}.assess-lead{font-size:17px;color:var(--text)}.assess-points{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:10px;text-align:left}.assess-points li{background:var(--bg-2);border:1px solid var(--line);border-radius:10px;padding:12px 14px;color:var(--text)}.assess-progress{height:6px;border-radius:6px;background:var(--bg-3);overflow:hidden;margin-bottom:14px}.assess-bar{height:100%;background:var(--accent);border-radius:6px;transition:width .3s ease}.assess-skill,.question-type{display:inline-block;font-size:13px;font-weight:600;background:var(--bg-3);border-radius:6px;padding:2px 10px;color:var(--muted);border:1px solid var(--line);line-height:1.5}.assess-result{max-width:520px;margin:0 auto;display:flex;flex-direction:column;gap:18px;align-items:center}.assess-grade{display:flex;flex-direction:column;align-items:center;gap:4px;background:var(--bg-2);border:1px solid var(--accent);border-radius:16px;padding:22px 48px}.assess-grade-label{font-size:13px;color:var(--muted)}.assess-grade-value{font-size:54px;font-weight:800;color:var(--accent);line-height:1}.assess-summary{font-size:16px;color:var(--text)}.assess-skills{width:100%}.assess-skills h3{margin:0 0 10px;font-size:15px}.assess-skill-row{display:flex;align-items:center;gap:10px;margin-bottom:8px}.assess-skill-name{min-width:120px;font-size:13px}.assess-skill-bar{flex:1;height:8px;background:var(--bg-3);border-radius:6px;overflow:hidden}.assess-skill-fill{height:100%;background:var(--green);border-radius:6px}.assess-actions{display:flex;gap:12px;flex-wrap:wrap;justify-content:center}.assess-stat{display:flex;align-items:center;gap:14px;flex-wrap:wrap}.assess-stat-grade{font-size:28px;font-weight:800;color:var(--accent)}.assess-feedback{margin-top:14px;text-align:center}.assess-feedback .result{margin:0;font-size:16px;font-weight:600}.assess-review{width:100%;margin-top:16px;padding-top:20px;border-top:1px solid var(--line)}.assess-review h3{margin:0 0 12px;font-size:15px;color:var(--text);font-weight:700;text-align:left}.assess-review-list{display:flex;flex-direction:column;gap:8px}.assess-review-item{background:var(--bg-2);border:1px solid var(--line);border-radius:10px;overflow:hidden;transition:border-color .15s ease,box-shadow .15s ease}.assess-review-item.expanded{border-color:var(--accent);box-shadow:0 2px 8px #00000014}.assess-review-header{width:100%;display:flex;align-items:center;gap:10px;padding:10px 14px;background:none;border:none;color:var(--text);font:inherit;cursor:pointer;text-align:left}.assess-review-header:hover{background:var(--bg-3)}.assess-review-status{font-size:16px;flex-shrink:0;line-height:1}.assess-review-qnum{font-weight:700;font-size:13px;color:var(--muted);flex-shrink:0}.assess-review-preview{flex:1;font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--text)}.assess-review-toggle-icon{font-size:11px;color:var(--muted);flex-shrink:0}.assess-review-body{padding:12px 14px 14px;border-top:1px solid var(--line);background:var(--bg-1);display:flex;flex-direction:column;gap:10px;text-align:left}.assess-review-ins{font-size:13px;color:var(--muted);display:flex;align-items:center;gap:6px;flex-wrap:wrap}.assess-review-prompt{font-size:17px;padding:10px 12px;background:var(--bg-2);border-radius:8px;line-height:1.6}.assess-review-answers{display:flex;flex-direction:column;gap:6px}.assess-review-ans-row{display:flex;align-items:center;gap:8px;font-size:14px}.assess-review-label{color:var(--muted);font-size:12px;min-width:100px}.assess-review-val{font-weight:600;font-size:15px}.assess-review-val.ok{color:var(--green, #2eb886)}.assess-review-val.bad{color:var(--bad, #e5484d)}:root{--shadow-sm: 0 1px 2px rgba(8, 12, 22, .18);--shadow-md: 0 6px 20px rgba(8, 12, 22, .22);--shadow-lg: 0 14px 40px rgba(8, 12, 22, .32);--ring: color-mix(in srgb, var(--accent) 55%, transparent)}button:focus-visible,a:focus-visible,select:focus-visible,input:focus-visible,.tab:focus-visible{outline:2px solid var(--ring);outline-offset:2px;border-radius:8px}.app-bar{box-shadow:none;-webkit-backdrop-filter:none;backdrop-filter:none}.brand{letter-spacing:.2px}.tagline{font-size:15px;margin:2px 0 22px}.card{box-shadow:var(--shadow-sm);transition:transform .14s ease,border-color .15s ease,box-shadow .18s ease;position:relative;overflow:hidden}.card:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:inherit;background:linear-gradient(135deg,color-mix(in srgb,var(--accent) 8%,transparent),transparent 55%);opacity:0;transition:opacity .18s ease;pointer-events:none}.card:hover{transform:translateY(-3px);box-shadow:var(--shadow-md)}.card:hover:after{opacity:1}.card:active{transform:translateY(-1px)}.card-emoji{display:inline-flex;align-items:center;justify-content:center;width:48px;height:48px;border-radius:12px;font-size:26px;background:color-mix(in srgb,var(--accent) 14%,var(--bg-3));border:1px solid color-mix(in srgb,var(--accent) 22%,var(--line));margin-bottom:4px}.btn,.btn-sm{transition:transform .08s ease,border-color .15s ease,box-shadow .16s ease,background .15s ease}.btn:hover{transform:translateY(-1px);box-shadow:var(--shadow-sm)}.btn:active{transform:translateY(0)}.btn.primary{box-shadow:0 4px 14px color-mix(in srgb,var(--accent) 35%,transparent)}.btn.primary:hover{background:color-mix(in srgb,var(--accent) 88%,#fff);border-color:color-mix(in srgb,var(--accent) 88%,#fff)}.tab{transition:color .15s ease,border-color .15s ease,background .15s ease;border-radius:8px 8px 0 0}.tab:hover{color:var(--text);background:color-mix(in srgb,var(--accent) 8%,transparent)}.kanken-card,.matching,.cloze-quiz{animation:surface-in .22s ease-out}@keyframes surface-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.kanken-card{box-shadow:var(--shadow-md)}.quiz-header h2{letter-spacing:.2px}.round-badge{background:transparent;border:none;color:var(--muted);border-radius:0;padding:0;font-size:13px;font-weight:500}.choice,.kk-choice,.match-cell,.hwpad-pred{transition:transform .08s ease,border-color .14s ease,background .14s ease,box-shadow .16s ease}.choice:active:not(:disabled),.kk-choice:active:not(:disabled),.match-cell:active{transform:scale(.97)}.choice:hover:not(:disabled),.kk-choice:hover:not(:disabled){box-shadow:var(--shadow-sm)}.popup{box-shadow:var(--shadow-lg)}.stat-card{box-shadow:var(--shadow-sm);transition:transform .12s ease,box-shadow .16s ease}.stat-card:hover{transform:translateY(-2px);box-shadow:var(--shadow-md)}.home-groups{display:flex;flex-direction:column;gap:10px}.home-group{padding:18px 0 6px;border-top:1px solid var(--line)}.home-group:first-child{border-top:none;padding-top:4px}.home-group-title{font-size:13px;font-weight:700;text-transform:uppercase;letter-spacing:1.2px;color:var(--muted);margin:0 0 14px}.font-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:10px}.font-card{display:flex;flex-direction:column;align-items:center;gap:6px;padding:14px 10px;border:1px solid var(--line);border-radius:12px;background:var(--bg-2);color:var(--text);cursor:pointer;transition:border-color .15s ease,transform .1s ease}.font-card:hover{transform:translateY(-2px)}.font-card.active{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 12%,var(--bg-2))}.font-sample{font-size:30px;line-height:1}.font-name{font-size:12px;color:var(--muted)}.popup-readings{display:flex;flex-direction:column;gap:4px;padding:2px 4px 6px;margin-bottom:6px;border-bottom:1px solid var(--line)}.reading-line{display:flex;align-items:baseline;gap:10px;font-size:17px;line-height:1.5}.reading-tag{flex:0 0 auto;font-size:12px;font-weight:700;width:22px;height:22px;display:inline-flex;align-items:center;justify-content:center;border-radius:6px;align-self:center}.on-tag{background:color-mix(in srgb,var(--on) 22%,var(--bg-2));color:var(--on)}.kun-tag{background:color-mix(in srgb,var(--kun) 22%,var(--bg-2));color:var(--kun)}.popup-readings .on{color:var(--on)}.popup-readings .kun{color:var(--kun)}.hw-answer{display:flex;flex-direction:column;align-items:center;gap:12px}.hw-progress{display:flex;flex-direction:column;align-items:center;gap:6px}.hw-preview{display:flex;gap:8px}.hw-slot{min-width:44px;height:52px;display:inline-flex;align-items:center;justify-content:center;font-size:30px;border:1px solid var(--line);border-radius:10px;background:var(--bg-2);color:var(--muted)}.hw-slot.filled{color:var(--text);border-color:var(--green);background:color-mix(in srgb,var(--green) 14%,var(--bg-2))}.hw-slot.active{border-color:var(--accent);color:var(--accent)}.hw-answer-actions{display:flex;gap:10px}.match-actions{display:flex;flex-direction:column;align-items:center;justify-content:center;margin-top:18px;gap:8px}.cloze-input-toggle{margin:0 auto 16px;display:flex;width:fit-content}.custom-saved{margin-top:18px}.skills-block{display:flex;flex-wrap:wrap;gap:20px;align-items:center;justify-content:center}.spider-wrap{flex:0 0 auto;padding:0 34px}.spider{overflow:visible}.spider-ring,.spider-spoke{stroke:var(--line);stroke-width:1}.spider-area{fill:color-mix(in srgb,var(--accent) 30%,transparent);stroke:var(--accent);stroke-width:2}.spider-dot{fill:var(--accent)}.spider-label{fill:var(--muted);font-size:11px;font-weight:600}.skill-legend{flex:1;min-width:180px;display:flex;flex-direction:column;gap:6px}.skill-legend-row{display:flex;justify-content:space-between;gap:10px;padding:4px 0;border-bottom:1px solid var(--line)}.skill-legend-name{font-weight:600}.skill-legend-n{opacity:.6}.challenge-review-list{width:100%;margin-top:16px;text-align:left;display:flex;flex-direction:column;gap:4px}.challenge-review-list h3{font-size:15px;margin:0 0 6px}.review-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:6px 10px;border-radius:8px;background:var(--bg-2);border:1px solid var(--line);font-size:15px}.review-row.ok{border-color:color-mix(in srgb,var(--green) 40%,var(--line))}.review-row.bad{border-color:color-mix(in srgb,var(--red) 40%,var(--line))}.review-mark{flex:0 0 auto}.review-row.ok .review-mark{color:var(--green)}.review-row.bad .review-mark{color:var(--red)}.review-prompt{flex:1;min-width:80px}.review-picked{color:var(--red);font-size:13px}.record-block{display:flex;flex-direction:column}.review-toggle{margin-left:10px}.app-bar-right{display:flex;align-items:center;gap:6px}.bar-icon{color:var(--muted);display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:6px 10px;border-radius:8px;text-decoration:none;font-size:13px;font-weight:600;line-height:1;background:transparent;border:none;cursor:pointer;transition:color .14s ease,background .14s ease}.bar-icon .bar-label{font-size:13px;font-weight:600;line-height:1}.bar-icon:hover{color:var(--accent);background:color-mix(in srgb,var(--accent) 12%,transparent)}.bar-icon.active{color:var(--accent)}.challenge-next{text-align:center;margin-top:18px}.learning-overhead{display:flex;align-items:center;justify-content:space-between;background:var(--bg-2);border:1px solid var(--line);border-radius:14px;padding:12px 20px;margin-bottom:24px;gap:12px;overflow-x:auto}.overhead-item{display:flex;flex-direction:column;gap:3px;min-width:0;flex:1;text-align:center}.overhead-item.clickable{cursor:pointer;border-radius:8px;padding:2px 4px;transition:background .15s ease,transform .15s ease}.overhead-item.clickable:hover{background:var(--bg-3);transform:translateY(-1px)}.overhead-label{font-size:11px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.5px;white-space:nowrap}.overhead-val{display:inline-flex;align-items:baseline;justify-content:center;gap:4px;white-space:nowrap}.overhead-num{font-size:18px;font-weight:700;color:var(--text);line-height:1.2}.overhead-unit{font-size:11.5px;font-weight:500;color:var(--muted)}.overhead-divider{width:1px;height:28px;background:var(--line);flex-shrink:0}@media (max-width: 640px){.learning-overhead{display:grid;grid-template-columns:repeat(3,1fr);padding:12px;gap:12px 8px}.overhead-divider{display:none}}.home-nudge-bar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 16px;background:var(--bg-2);border:1px solid var(--line);border-radius:10px;margin:6px 0 20px;flex-wrap:wrap}.home-nudge-text{font-size:13.5px;color:var(--text);font-weight:500;line-height:1.4}.home-nudge-sub{font-size:12px;color:var(--muted);white-space:nowrap}.home-section{margin-bottom:32px;padding:0;border:none;background:transparent}.section-head-row{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px;flex-wrap:wrap}.section-title{font-size:18px;font-weight:700;letter-spacing:-.2px;color:var(--text);margin:0;display:flex;align-items:baseline}.section-title-en{font-size:13px;font-weight:600;color:var(--muted);letter-spacing:.6px;margin-left:8px;text-transform:uppercase}.section-core{border:none;background:transparent}.section-core .section-title{color:var(--text);margin-bottom:14px}.section-advanced{border:none;background:transparent}.section-advanced .section-title{color:var(--accent-2)}.mode-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:14px 12px}.section-core .mode-grid{grid-template-columns:repeat(3,1fr);gap:14px}@media (max-width: 720px){.section-core .mode-grid{grid-template-columns:1fr}}.section-skill .mode-grid{grid-template-columns:repeat(auto-fill,minmax(185px,1fr));gap:14px 12px}.section-advanced .mode-grid{grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:14px}.practice-drills-header{display:flex;flex-direction:column;gap:10px;margin-bottom:16px}.practice-challenge-block{display:flex;flex-direction:column;gap:8px;margin-bottom:4px}.challenge-bar-header{display:inline-flex;align-items:center;gap:7px}.challenge-badge-icon{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:50%;background:var(--accent, #3b82f6);color:#fff;flex-shrink:0;box-shadow:0 2px 6px #00000026}.challenge-bar-title{font-size:14px;font-weight:700;color:var(--text);letter-spacing:-.2px}.practice-challenge-controls{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;padding:0;border:none;background:transparent}.practice-challenge-group{display:inline-flex;align-items:center;gap:10px;flex-wrap:wrap}.drill-selected-thumbs{display:inline-flex;align-items:center;gap:5px}.drill-thumb-square{width:28px;height:28px;aspect-ratio:1 / 1;object-fit:cover;border-radius:6px;border:1px solid var(--line);box-shadow:0 1px 3px #0000001f;display:block}.writing-modebar.compact{display:inline-flex;align-items:center;margin:0;padding:2px;border-radius:9px;background:var(--bg-3);border:1px solid var(--line)}.writing-modebar.compact .seg{margin:0;padding:5px 12px;font-size:12px;line-height:1.2;border-radius:7px}.time-select-dropdown .custom-select-trigger{padding:5px 10px 5px 12px;font-size:12px;font-weight:600;border-radius:8px;min-width:92px}.challenge-time-chips{display:inline-flex;align-items:center;gap:4px;background:var(--bg-3);border:1px solid var(--line);padding:2px;border-radius:9px}.time-chip-sm{background:transparent;border:none;color:var(--muted);font-size:12px;font-weight:600;padding:5px 9px;border-radius:7px;cursor:pointer;transition:all .15s ease}.time-chip-sm:hover{color:var(--text);background:color-mix(in srgb,var(--accent) 12%,transparent)}.time-chip-sm.on{color:var(--accent);background:color-mix(in srgb,var(--accent) 20%,var(--bg-2))}.btn-drill-select{display:inline-flex;align-items:center;gap:6px;background:var(--bg-3);border:1px solid var(--line);color:var(--text);font-size:12px;font-weight:600;padding:6px 14px;border-radius:9px;cursor:pointer;transition:all .15s ease}.btn-drill-select:hover{border-color:var(--accent);color:var(--accent)}.btn-drill-select.active{background:var(--accent);border-color:var(--accent);color:#fff;box-shadow:0 2px 10px color-mix(in srgb,var(--accent) 35%,transparent)}.start-challenge-btn{font-size:13px!important;font-weight:600!important;padding:6px 16px!important;border-radius:9px!important;white-space:nowrap}.mode-cell{display:flex;flex-direction:column;width:100%}.mode-card{position:relative;width:100%;height:120px;min-height:120px;border-radius:16px;border:1px solid var(--line);background:var(--bg-2);text-decoration:none;overflow:hidden;box-shadow:0 4px 16px #00000014;transition:transform .22s ease,border-color .2s ease,box-shadow .22s ease;display:flex;align-items:center;justify-content:center;padding:16px 20px}.section-core .mode-card{height:175px;min-height:175px;aspect-ratio:unset;padding:10px 14px}.section-skill .mode-card,.section-advanced .mode-card{height:120px;min-height:120px;aspect-ratio:unset}.mode-card:hover{transform:translateY(-3px);border-color:var(--accent);box-shadow:0 10px 28px #00000029}.mode-card.select-mode{cursor:pointer}.mode-card.select-mode.selected{border-color:var(--accent);box-shadow:0 0 0 2px color-mix(in srgb,var(--accent) 40%,transparent),0 8px 24px #0000002e}.mode-card.select-mode.disabled{opacity:.45;cursor:not-allowed;pointer-events:none}.mode-select-indicator{position:absolute;top:10px;right:10px;z-index:4;width:22px;height:22px;border-radius:50%;border:1.5px solid rgba(255,255,255,.6);background:#00000059;display:flex;align-items:center;justify-content:center;transition:all .18s ease;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.mode-select-indicator.selected{background:var(--accent);border-color:var(--accent);color:#fff;transform:scale(1.08);box-shadow:0 2px 8px color-mix(in srgb,var(--accent) 50%,transparent)}.mode-select-unsupported-tag{position:absolute;top:10px;right:10px;z-index:4;background:#00000073;border:1px solid rgba(255,255,255,.2);color:var(--muted);font-size:10px;font-weight:600;padding:2px 6px;border-radius:6px;text-transform:uppercase;letter-spacing:.4px}.mode-card-bg{position:absolute;top:0;right:0;bottom:0;left:0;background-size:cover;background-position:center;background-repeat:no-repeat;transition:transform .4s cubic-bezier(.2,0,.2,1),filter .3s ease;pointer-events:none}.mode-card:hover .mode-card-bg{transform:scale(1.05)}.mode-card-overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:#00000014;pointer-events:none;transition:opacity .3s ease,background .2s ease}:root:not([data-theme*=light]):not([data-theme=alucard]):not([data-theme=sakura]) .mode-card-overlay{background:#0003}.mode-card.active-challenge .mode-card-overlay{background:#0000000a}.mode-card.active-challenge .mode-card-bg{filter:contrast(1.05) brightness(1.05)}.mode-card:hover .mode-card-overlay{background:#00000005}.mode-card-content{position:relative;z-index:2;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:2px;pointer-events:none;padding:5px 12px;max-width:calc(100% - 24px);border-radius:10px;backdrop-filter:blur(16px) saturate(180%);-webkit-backdrop-filter:blur(16px) saturate(180%)}:root[data-theme*=light] .mode-card-content,:root[data-theme=alucard] .mode-card-content,:root[data-theme=sakura] .mode-card-content,:root:not([data-theme*=dark]) .mode-card-content{background:#ffffff7a;border:1px solid rgba(255,255,255,.45);box-shadow:0 4px 16px #0000000f}:root:not([data-theme*=light]):not([data-theme=alucard]):not([data-theme=sakura]) .mode-card-content{background:#0f172a6b;border:1px solid rgba(255,255,255,.16);box-shadow:0 4px 16px #00000040}.mode-jp{font-size:21px;font-weight:800;color:var(--text);line-height:1.2;letter-spacing:.2px;white-space:nowrap;max-width:100%;overflow:hidden;text-overflow:ellipsis}.section-core .mode-jp{font-size:25px}.section-skill .mode-jp{font-size:18px}.section-advanced .mode-jp{font-size:21px}:root[data-theme*=light] .mode-jp,:root[data-theme=alucard] .mode-jp,:root[data-theme=sakura] .mode-jp,:root:not([data-theme*=dark]) .mode-jp{color:#0f172a;text-shadow:none}:root:not([data-theme*=light]):not([data-theme=alucard]):not([data-theme=sakura]) .mode-jp{color:#f8fafc;text-shadow:none}.mode-en{font-size:11.5px;font-weight:600;color:var(--text);line-height:1.2;white-space:nowrap;letter-spacing:-.2px}.section-core .mode-en{font-size:13px}:root[data-theme*=light] .mode-en,:root[data-theme=alucard] .mode-en,:root[data-theme=sakura] .mode-en,:root:not([data-theme*=dark]) .mode-en{color:#475569;font-weight:600;opacity:.95;text-shadow:none}:root:not([data-theme*=light]):not([data-theme=alucard]):not([data-theme=sakura]) .mode-en{color:#cbd5e1;opacity:.9;text-shadow:none}.mode-challenge-badge{position:absolute;top:8px;right:8px;z-index:4;display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:50%;background:var(--accent, #3b82f6);color:#fff;box-shadow:0 2px 8px #00000040;pointer-events:none}.mode-desc{margin-top:8px;font-size:12.5px;line-height:1.35;color:var(--muted);text-align:center;padding:0 4px}.mode-desc-link{color:inherit;text-decoration:none;transition:color .14s ease}.mode-cell:hover .mode-desc-link{color:var(--text)}.account-name{font-size:13px;font-weight:700;color:var(--text);max-width:120px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding:0 4px}.theme-expand-toggle{margin-top:12px}.apkg-import{margin:0 0 10px;padding:14px;border:1px dashed var(--line);border-radius:12px;background:var(--bg-2)}.apkg-file-picker{display:flex;align-items:center;gap:12px;margin:4px 0 10px}.apkg-file-chosen-text{font-size:13px;color:var(--text);font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:280px}.custom-filter-bar{display:flex;align-items:center;flex-wrap:wrap;gap:12px;margin:8px 0 12px}.custom-name-badge{display:inline-block;font-size:11px;font-weight:600;padding:1px 7px;border-radius:4px;background:var(--bg-3);color:var(--text);border:1px solid var(--line);margin-right:6px}.custom-extra-chip{display:inline-block;font-size:12px;color:var(--muted);background:var(--bg-3);padding:1px 8px;border-radius:4px;margin-left:6px;border:1px solid var(--line)}.cloze-single-detail{margin:14px auto 6px;display:flex;justify-content:center;align-items:center;text-align:center;animation:fadeIn .15s ease}.cloze-details-card{margin:14px auto 8px;max-width:520px;background:var(--bg-2);border:1px solid var(--line);border-radius:12px;padding:12px 16px;display:flex;flex-direction:column;gap:6px;text-align:left;animation:fadeIn .15s ease}.cloze-detail-row{display:flex;align-items:center}.cloze-detail-badge{display:inline-block;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;padding:2px 8px;border-radius:6px;background:var(--accent-subtle, rgba(59, 130, 246, .12));color:var(--accent);border:1px solid var(--accent)}.cloze-detail-translation{font-size:15px;font-weight:500;color:var(--text);line-height:1.45}.cloze-detail-extra{font-size:13px;color:var(--muted);background:var(--bg-3);padding:4px 10px;border-radius:6px;width:fit-content;border:1px solid var(--line)}.apkg-file{display:block;margin:10px 0;color:var(--muted);font-size:13px;font-family:inherit;cursor:pointer}.apkg-file::-webkit-file-upload-button,.apkg-file::file-selector-button{background:var(--bg-2);color:var(--text);border:1px solid var(--line);border-radius:8px;padding:6px 14px;font-size:13px;font-weight:500;font-family:inherit;cursor:pointer;margin-right:12px;transition:all .15s ease}.apkg-file::-webkit-file-upload-button:hover,.apkg-file::file-selector-button:hover{background:var(--bg-3);border-color:var(--accent);color:var(--accent)}.apkg-file:disabled::-webkit-file-upload-button,.apkg-file:disabled::file-selector-button{opacity:.5;cursor:not-allowed}.apkg-map{display:flex;flex-direction:column;gap:10px;margin-top:8px}.apkg-field{display:flex;flex-direction:column;gap:4px}.apkg-field-label{font-size:12px;font-weight:600;color:var(--muted)}.apkg-field input{padding:8px 10px;border-radius:8px;border:1px solid var(--line);background:var(--bg-2);color:var(--text)}.apkg-error{color:var(--bad, #e5484d)}.audio-btn.small{padding:4px 8px;font-size:15px;flex:0 0 auto}.quiz-header-actions{display:flex;align-items:center;gap:8px}.end-btn{background:var(--bg-2);border:1px solid var(--line);color:var(--muted);border-radius:999px;padding:4px 12px;font-size:13px;font-weight:600;cursor:pointer;transition:all .15s ease}.end-btn:hover{background:var(--bg-3);color:var(--text);border-color:var(--accent)}.kanken-ans-card{display:flex;flex-direction:column;gap:4px}.kanken-user-pick{font-size:13px;color:var(--bad)}.kanken-user-pick.ok{color:var(--green)}.kanken-card-header{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:12px}.kanken-card-header .kanken-instruction{margin:0;flex:1}.setsumon-btn{margin-left:auto;background:color-mix(in srgb,var(--accent) 15%,var(--bg-2));border:1px solid var(--accent);color:var(--accent);border-radius:999px;padding:2px 10px;font-size:12px;font-weight:600;cursor:pointer;white-space:nowrap;transition:all .15s ease;flex-shrink:0;line-height:1.5}.setsumon-btn:hover{background:var(--accent);color:#fff}.setsumon-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000a6;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);z-index:300;display:flex;align-items:center;justify-content:center;padding:16px;animation:fadeIn .15s ease-out}.setsumon-modal{background:var(--bg-2);border:1px solid var(--line);border-radius:16px;max-width:540px;width:100%;max-height:85vh;display:flex;flex-direction:column;box-shadow:0 16px 36px #00000073;overflow:hidden}.setsumon-header{display:flex;align-items:center;justify-content:space-between;padding:14px 20px;border-bottom:1px solid var(--line)}.setsumon-title{font-size:16px;font-weight:700;display:flex;align-items:center;gap:8px;color:var(--text)}.setsumon-close-icon{background:none;border:none;color:var(--muted);font-size:18px;cursor:pointer;padding:4px;display:flex;align-items:center;justify-content:center;border-radius:6px;line-height:1}.setsumon-close-icon:hover{color:var(--text);background:var(--bg-3)}.setsumon-body{padding:18px 20px;overflow-y:auto;font-size:15px;line-height:1.8;color:var(--text);white-space:pre-wrap;word-break:break-word}.setsumon-footer{display:flex;justify-content:flex-end;padding:12px 20px;border-top:1px solid var(--line);background:var(--bg)}.setsumon-close-btn{padding:8px 18px;border-radius:8px;background:var(--accent);color:#fff;border:none;font-size:14px;font-weight:600;cursor:pointer;transition:opacity .15s ease}.setsumon-close-btn:hover{opacity:.9}.yoji-mode-bar{display:flex;justify-content:center;margin-bottom:14px}.yoji-hard-choices{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px;max-width:520px;margin:0 auto}.yoji-hard-choice-btn{background:var(--bg-2);border:1px solid var(--line);border-radius:12px;padding:14px 16px;font-size:26px;font-weight:700;color:var(--text);cursor:pointer;letter-spacing:3px;transition:all .12s ease;text-align:center;display:flex;align-items:center;justify-content:center}.yoji-hard-choice-btn:hover:not(:disabled){border-color:var(--accent);background:var(--bg-3);transform:translateY(-1px)}.yoji-hard-choice-btn.correct{border-color:var(--green);background:color-mix(in srgb,var(--green) 20%,var(--bg-2));color:var(--green)}.yoji-hard-choice-btn.incorrect{border-color:var(--red);background:color-mix(in srgb,var(--red) 20%,var(--bg-2));color:var(--red)}.yoji-hard-choice-btn.dim{opacity:.45}div.yoji-hard-choice-btn{cursor:default;-webkit-user-select:text;user-select:text}div.yoji-hard-choice-btn .kanji-glyph.clickable:hover{color:var(--accent);text-decoration:underline}.quiz-title-row{display:flex;align-items:center;gap:8px}.quiz-back-btn{background:transparent;border:none;padding:4px;margin:0 0 0 -6px;color:var(--text);cursor:pointer;display:inline-flex;align-items:center;justify-content:center;border-radius:6px;transition:opacity .15s,background-color .15s,color .15s}.quiz-back-btn:hover{background:var(--bg-2);color:var(--accent)}.quiz-inst-btn{background:transparent;border:none;color:var(--muted);width:22px;height:22px;padding:0;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;transition:color .15s ease;flex-shrink:0}.quiz-inst-btn:hover{color:var(--accent)}.quiz-inst-popover{width:100%;margin-top:10px;background:var(--bg-2);border:1px solid color-mix(in srgb,var(--accent) 30%,var(--line));border-left:3px solid var(--accent);border-radius:8px;padding:10px 14px;display:flex;align-items:flex-start;justify-content:space-between;gap:12px;box-shadow:var(--shadow-sm);animation:fadeIn .15s ease}.quiz-inst-content{flex:1}.quiz-inst-label{display:block;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;color:var(--accent);margin-bottom:2px}.quiz-inst-text{margin:0;font-size:13px;color:var(--text);line-height:1.45}.quiz-inst-close{background:transparent;border:none;color:var(--muted);font-size:14px;padding:0 4px;cursor:pointer;border-radius:4px;line-height:1}.quiz-inst-close:hover{color:var(--text)}.cloze-reading{color:var(--accent);font-size:20px;font-weight:500;margin-top:6px;margin-bottom:2px}.match-incomplete-warn{color:var(--red, #ef4444);font-size:14px;font-weight:500;margin-bottom:10px;animation:fadeIn .15s ease}.search-wrap{display:flex;align-items:center;gap:8px;flex:1;max-width:480px;position:relative}.search-wrap .search{flex:1;width:100%}.search-clear-btn{position:absolute;right:44px;background:transparent;border:none;color:var(--muted);cursor:pointer;padding:4px;font-size:14px}.search-clear-btn:hover{color:var(--text)}.search-hw-btn{background:var(--bg-2);border:1px solid var(--line);border-radius:8px;width:38px;height:38px;display:inline-flex;align-items:center;justify-content:center;color:var(--muted);cursor:pointer;flex-shrink:0;transition:all .15s ease}.search-hw-btn:hover,.search-hw-btn.active{border-color:var(--accent);color:var(--accent);background:color-mix(in srgb,var(--accent) 12%,var(--bg-2))}.toolbar .search-draw-wrap,.search-draw-wrap{width:100%;flex-basis:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;background:transparent;border:none;padding:8px 0 16px;margin:0;animation:fadeIn .15s ease}.search-draw-bar{display:flex;align-items:center;justify-content:center;gap:10px;width:100%;max-width:440px}.search-switch-btn{display:inline-flex;align-items:center;font-size:13px;font-weight:600;padding:4px 12px;border-radius:8px;background:var(--bg-2);border:1px solid var(--line);color:var(--text);cursor:pointer;transition:all .15s ease}.search-switch-btn:hover{border-color:var(--accent);color:var(--accent)}.search-draw-query{font-size:13px;color:var(--text);background:var(--bg-3);padding:2px 8px;border-radius:6px;border:1px solid var(--line);display:inline-flex;align-items:center;gap:6px}.search-draw-clear{background:none;border:none;color:var(--muted);cursor:pointer;padding:0 2px;font-size:12px;line-height:1}.search-draw-clear:hover{color:var(--red, #ef4444)}.filter-select-group{display:inline-flex;align-items:center;gap:6px}.filter-select-label{font-size:13px;font-weight:600;color:var(--muted)}.custom-select-container{position:relative;display:inline-block;-webkit-user-select:none;user-select:none;border:none!important;background:transparent!important;padding:0!important;box-shadow:none!important;background-image:none!important}.custom-select-trigger{display:inline-flex;align-items:center;justify-content:space-between;gap:10px;background-color:var(--bg-2);border:1px solid var(--line);border-radius:8px;color:var(--text);font-family:inherit;font-size:13px;font-weight:500;padding:6px 10px 6px 12px;cursor:pointer;outline:none;transition:all .15s ease;line-height:1.4;white-space:nowrap}.custom-select-trigger:hover,.custom-select-container.open .custom-select-trigger{border-color:var(--accent);background-color:var(--bg-3)}.custom-select-value{display:inline-block;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.custom-select-arrow{flex:0 0 auto;color:var(--muted);transition:transform .2s ease,color .15s ease}.custom-select-container.open .custom-select-arrow{transform:rotate(180deg);color:var(--accent)}.custom-select-menu{position:absolute;top:calc(100% + 4px);left:0;z-index:1000;min-width:100%;max-width:320px;max-height:250px;overflow-y:auto;background:var(--bg-2);border:1px solid var(--line);border-radius:10px;padding:4px;margin:0;list-style:none;box-shadow:0 10px 30px #00000073,0 2px 6px #0003;animation:select-fade-in .12s ease-out}@keyframes select-fade-in{0%{opacity:0;transform:translateY(-4px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}.custom-select-option{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:7px 10px;border-radius:6px;font-size:13px;color:var(--text);cursor:pointer;transition:all .12s ease;white-space:nowrap}.custom-select-option:hover{background:var(--bg-3);color:var(--accent)}.custom-select-option.selected{background:color-mix(in srgb,var(--accent) 16%,var(--bg-2));color:var(--accent);font-weight:600}.custom-select-check{flex:0 0 auto;color:var(--accent)}select,select.filter-select,.toolbar select{appearance:none;-webkit-appearance:none;-moz-appearance:none;background-color:var(--bg-2);border:1px solid var(--line);border-radius:8px;color:var(--text);font-family:inherit;font-size:13px;font-weight:500;padding:6px 30px 6px 12px;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%23888888' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 10px center;cursor:pointer;outline:none;transition:all .15s ease;line-height:1.4}select:hover,select:focus,select.filter-select:hover,select.filter-select:focus,.toolbar select:hover,.toolbar select:focus{border-color:var(--accent);background-color:var(--bg-3)}select option,select.filter-select option,.toolbar select option{background-color:var(--bg-2);color:var(--text);padding:6px}.batch-toolbar{position:fixed;bottom:24px;left:50%;transform:translate(-50%);z-index:1000;width:min(92vw,680px);background:color-mix(in srgb,var(--bg-2) 94%,#000);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid var(--accent);box-shadow:0 10px 32px #0000008c;border-radius:14px;padding:12px 18px;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px;animation:slideUp .2s cubic-bezier(.16,1,.3,1)}.kanji-grid.in-select-mode{padding-bottom:96px}@keyframes slideUp{0%{opacity:0;transform:translate(-50%,16px)}to{opacity:1;transform:translate(-50%)}}.batch-info{display:flex;align-items:center;gap:10px;font-size:14px}.batch-actions-group{display:flex;flex-wrap:wrap;align-items:center;gap:14px}.batch-state-btns{display:flex;gap:6px}.batch-flag-bar{display:flex;align-items:center;gap:6px}.batch-label{font-size:13px;font-weight:600;color:var(--muted)}.blank.hard-blank{margin:0 8px;min-width:44px}.assess-review-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}.assess-review-top h3{margin:0;font-size:15px;color:var(--text);font-weight:700}.assess-review-filters{display:flex;gap:8px}.assess-filter-btn{background:var(--bg-2);border:1px solid var(--line);color:var(--muted);border-radius:6px;padding:4px 10px;font-size:12px;cursor:pointer;transition:all .15s ease}.assess-filter-btn.active,.assess-filter-btn:hover{border-color:var(--accent);color:var(--text);background:color-mix(in srgb,var(--accent) 15%,var(--bg-2))}.assess-review-status.ok{color:var(--green, #22c55e)}.assess-review-status.bad{color:var(--red, #ef4444)}.tailored-intro-card{margin-bottom:20px;padding:16px;background:var(--bg-2);border:1px solid var(--line);border-radius:12px}.tailored-intro-card h2{margin:0 0 8px;font-size:18px;font-weight:700;color:var(--text)}.tailored-control-card{display:flex;flex-direction:column;gap:16px;background:var(--bg-2);border:1px solid var(--line);border-radius:12px;padding:18px}.tailored-setting-row{display:flex;align-items:center;justify-content:space-between;gap:16px;padding-bottom:14px;border-bottom:1px solid var(--line)}.tailored-setting-row:last-of-type{border-bottom:none;padding-bottom:0}.tailored-setting-label{display:flex;flex-direction:column;gap:3px}.tailored-actions{margin-top:8px}.tailored-actions .large-btn{width:100%;padding:12px;font-size:16px;font-weight:700;border-radius:10px}.tailored-hud-bar{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:14px;padding:8px 14px;background:var(--bg-2);border:1px solid var(--line);border-radius:10px;flex-wrap:wrap}.tailored-hud-left,.tailored-hud-right{display:flex;align-items:center;gap:10px}.tailored-level-pill{font-size:13px;font-weight:700;padding:3px 10px;background:color-mix(in srgb,var(--accent) 15%,var(--bg-2));color:var(--accent);border:1px solid var(--accent);border-radius:8px}.tailored-timer-pill{font-family:monospace;font-size:14px;font-weight:700;padding:3px 10px;background:var(--bg-3);border:1px solid var(--line);border-radius:8px}.tailored-timer-pill.low{color:var(--red, #ef4444);border-color:var(--red, #ef4444);animation:pulse 1s infinite}.tailored-streak-pill{font-size:13px;font-weight:600;color:var(--muted)}.tailored-level-notice{width:100%;margin-top:6px;padding:6px 10px;background:color-mix(in srgb,var(--accent) 12%,var(--bg-1));color:var(--accent);font-size:12px;font-weight:600;border-radius:6px;text-align:center;animation:fadeIn .2s ease}.tailored-summary-header{margin-bottom:16px;padding:14px;background:var(--bg-2);border:1px solid var(--line);border-radius:12px;text-align:center}.tailored-summary-level-box{display:flex;flex-direction:column;align-items:center;gap:8px}.tailored-level-badge-row{display:flex;align-items:center;gap:12px}.tailored-summary-chip{font-size:16px;font-weight:700;padding:4px 14px;border-radius:8px}.tailored-summary-chip.start{background:var(--bg-3);color:var(--muted);border:1px solid var(--line)}.tailored-summary-chip.end{background:color-mix(in srgb,var(--accent) 20%,var(--bg-2));color:var(--accent);border:1px solid var(--accent)}.level-arrow{font-size:18px;color:var(--muted)}.about-page{max-width:900px;margin:0 auto;padding:16px 16px 64px}.about-hero{margin-bottom:24px;text-align:center}.about-title{font-size:28px;font-weight:800;margin:0 0 8px;display:inline-flex;align-items:baseline;gap:10px}.about-title-en{font-size:14px;font-weight:600;color:var(--muted);letter-spacing:.8px}.about-lead{font-size:15px;color:var(--muted);max-width:640px;margin:0 auto;line-height:1.5}.about-toc{display:flex;align-items:center;justify-content:center;gap:8px;flex-wrap:wrap;margin:0 0 32px;padding:10px 16px;background:var(--bg-2);border:1px solid var(--line);border-radius:10px}.about-toc-title{font-size:12px;font-weight:600;color:var(--muted)}.about-toc-link{font-size:12.5px;font-weight:500;color:var(--accent);text-decoration:none;padding:3px 8px;border-radius:6px;background:var(--bg);border:1px solid var(--line);transition:all .12s ease}.about-toc-link:hover{background:color-mix(in srgb,var(--accent) 15%,var(--bg));border-color:var(--accent)}.about-section{margin-bottom:36px}.about-section h2{font-size:20px;font-weight:700;margin:0 0 14px;padding-bottom:6px;border-bottom:1px solid var(--line)}.about-card{background:var(--bg-2);border:1px solid var(--line);border-radius:12px;padding:20px;box-shadow:0 1px 3px #0000000d}.about-card h3{font-size:16px;font-weight:700;margin:0 0 8px}.about-card p{font-size:14px;line-height:1.6;color:var(--text);margin:0 0 12px}.about-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:16px}.about-grid.two-col{grid-template-columns:repeat(auto-fit,minmax(320px,1fr))}.about-badge-row{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}.about-badge{font-size:12px;font-weight:700;padding:3px 8px;border-radius:6px}.about-badge.primary{background:color-mix(in srgb,var(--accent) 18%,var(--bg-2));color:var(--accent);border:1px solid var(--accent)}.about-badge.accent{background:color-mix(in srgb,#e67e22 18%,var(--bg-2));color:#e67e22;border:1px solid #e67e22}.about-badge.secondary{background:color-mix(in srgb,#27ae60 18%,var(--bg-2));color:#27ae60;border:1px solid #27ae60}.about-highlights{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:14px;margin-top:16px}.about-highlight-item{background:var(--bg);border:1px solid var(--line);border-radius:10px;padding:14px}.about-highlight-item strong{display:block;font-size:13.5px;margin-bottom:6px;color:var(--text)}.about-highlight-item span{font-size:12.5px;color:var(--muted);line-height:1.5}.about-list{margin:0 0 16px;padding-left:20px;font-size:13.5px;line-height:1.7;color:var(--text)}.about-list li{margin-bottom:4px}.about-link{display:inline-block;font-size:13px;font-weight:600;color:var(--accent);text-decoration:none;margin-top:4px}.about-link:hover{text-decoration:underline}
