:root{--canvas:#e8ebe6;--card:#fff;--ink:#0e0f0c;--body:#454745;--mute:#686a66;--line:#d3d8cf;--primary:#9fe870;--primary-hover:#cdffad;--on-primary:#0e0f0c;--pale:#e2f6d5;--pos:#2ead4b;--pos-ink:#054d28;--pos-bg:#e3f5e7;--neg:#d03238;--neg-ink:#a72027;--neg-bg:#fbe7e7;--particle:#ffe2c9;--particle-ink:#6b3a10;--font-display:"Manrope", "Noto Sans JP", system-ui, sans-serif;--font-body:"Inter", "Noto Sans JP", system-ui, -apple-system, sans-serif;--font-jp:"Noto Sans JP", "Hiragino Sans", "Yu Gothic", system-ui, sans-serif;--r-card:24px;--r-md:12px;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--canvas:#121411;--card:#1c1f1a;--ink:#eef1ea;--body:#bfc3bb;--mute:#959a91;--line:#2f342c;--pale:#22321a;--pos:#4cc565;--pos-ink:#9be3ab;--pos-bg:#16301d;--neg:#ff6b6b;--neg-ink:#ffb3b3;--neg-bg:#3a1617;--particle:#3b2a1a;--particle-ink:#ffcf9e;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}:root[data-theme=dark]{--canvas:#121411;--card:#1c1f1a;--ink:#eef1ea;--body:#bfc3bb;--mute:#959a91;--line:#2f342c;--pale:#22321a;--pos:#4cc565;--pos-ink:#9be3ab;--pos-bg:#16301d;--neg:#ff6b6b;--neg-ink:#ffb3b3;--neg-bg:#3a1617;--particle:#3b2a1a;--particle-ink:#ffcf9e;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}html,body{margin:0}body{background:var(--canvas);color:var(--ink);font-family:var(--font-body);padding-left:max(16px, env(safe-area-inset-left,0px));padding-right:max(16px, env(safe-area-inset-right,0px));padding-block:max(20px, env(safe-area-inset-top,0px)) max(48px, env(safe-area-inset-bottom,0px));font-size:16px;line-height:1.5}.app{flex-direction:column;gap:16px;max-width:560px;margin:0 auto;display:flex}.stack-page{flex-direction:column;gap:16px;display:flex}.top{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;display:flex}.brand{font-family:var(--font-display);letter-spacing:.02em;align-items:center;gap:8px;font-size:16px;font-weight:800;display:flex}.dot{background:var(--primary);border-radius:9999px;width:10px;height:10px}.toggle{color:var(--body);cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:8px;font-size:14px;font-weight:600;display:inline-flex}.toggle input{width:18px;height:18px;accent-color:var(--ink)}.card{background:var(--card);border-radius:var(--r-card);flex-direction:column;gap:14px;min-width:0;padding:24px;display:flex}h1{font-family:var(--font-display);text-wrap:balance;letter-spacing:-.01em;margin:0;font-size:clamp(32px,8vw,40px);font-weight:800;line-height:1.05}h2{font-family:var(--font-display);text-wrap:balance;margin:0;font-size:24px;font-weight:800;line-height:1.2}h2.question-text{font-size:20px}h3{margin:0;font-size:16px;font-weight:600}p{color:var(--body);margin:0}.lead{color:var(--ink);font-size:20px;line-height:30px}.eyebrow{letter-spacing:.08em;text-transform:uppercase;color:var(--mute);font-size:12px;font-weight:600}.note,.storage{color:var(--mute);font-size:14px}.card .storage{border-top:1px solid var(--line);padding-top:12px}.jp{font-family:var(--font-jp)}ruby rt{color:var(--mute);font-size:.55em;font-family:var(--font-jp)}body.nofuri ruby rt{visibility:hidden}.btn{appearance:none;border-radius:var(--r-card);font:600 16px/24px var(--font-body);cursor:pointer;text-align:center;border:0;padding:12px 24px}.btn-primary{background:var(--primary);color:var(--on-primary)}.btn-primary:hover{background:var(--primary-hover)}.btn-secondary{background:var(--card);color:var(--ink)}.btn-secondary:hover{background:var(--line)}.btn:disabled{opacity:.45;cursor:not-allowed}button:focus-visible,input:focus-visible{outline:3px solid var(--ink);outline-offset:2px}.row{flex-wrap:wrap;gap:10px;display:flex}.row .btn{flex:auto}.lessons{flex-direction:column;gap:12px;display:flex}.lesson{background:var(--card);border-radius:var(--r-card);text-align:left;cursor:pointer;color:var(--ink);font:inherit;border:0;grid-template-columns:56px 1fr auto;align-items:center;gap:14px;width:100%;padding:18px 20px;display:grid}.lesson:hover{box-shadow:inset 0 0 0 2px var(--primary)}.lesson .glyph{background:var(--pale);border-radius:16px;place-items:center;width:56px;height:56px;font-size:24px;font-weight:700;display:grid}.lesson .txt{flex-direction:column;gap:2px;min-width:0;display:flex}.lesson .txt span{color:var(--body);font-size:14px}.pill{white-space:nowrap;border-radius:9999px;padding:4px 12px;font-size:14px;font-weight:600}.pill-todo{background:var(--canvas);color:var(--body)}.pill-done{background:var(--pos-bg);color:var(--pos-ink)}.progress{gap:4px;display:flex}.progress span{background:var(--line);border-radius:9999px;flex:1;height:6px}.progress span.on{background:var(--ink)}.steplabel{flex-wrap:wrap;justify-content:space-between;gap:8px;display:flex}.big-particle{background:var(--pale);border-radius:24px;align-self:flex-start;padding:16px 24px;font-size:64px;font-weight:700;line-height:1}.tip{background:var(--pale);color:var(--ink);border-radius:16px;padding:14px 16px;font-size:16px;line-height:1.8}.mistake{flex-direction:column;gap:8px;display:flex}.mistake .bad,.mistake .good{border-radius:16px;padding:12px 16px;font-size:20px}.mistake .bad{background:var(--neg-bg);color:var(--neg-ink);text-decoration:line-through;text-decoration-thickness:2px}.mistake .good{background:var(--pos-bg);color:var(--pos-ink)}.legend{color:var(--body);flex-wrap:wrap;gap:14px;font-size:14px;display:flex}.swatch{vertical-align:-1px;border-radius:8px;width:12px;height:12px;margin-right:6px;display:inline-block}.swatch-particle{background:var(--particle)}.swatch-word{border:2px solid var(--line)}.example{border-top:1px solid var(--line);flex-direction:column;gap:10px;padding-top:14px;display:flex}.chips{flex-wrap:wrap;gap:6px;display:flex}.chip{appearance:none;border:2px solid var(--line);background:var(--card);color:var(--ink);font:400 20px/1.9 var(--font-jp);cursor:pointer;border-radius:12px;padding:4px 10px}.chip.part{background:var(--particle);color:var(--particle-ink);border-color:#0000;font-weight:700}.chip.punct{cursor:default;border-color:#0000;padding-inline:2px}.chip.active{border-color:var(--ink);box-shadow:0 0 0 2px var(--ink)}.panel{background:var(--canvas);border-radius:12px;flex-direction:column;gap:2px;min-height:56px;padding:12px 14px;display:flex}.panel .w{color:var(--ink);font-size:20px;font-weight:700}.panel .role{letter-spacing:.06em;text-transform:uppercase;color:var(--mute);font-size:12px;font-weight:600}.tr{color:var(--ink)}.clave{color:var(--mute);font-size:14px}.context{background:var(--canvas);color:var(--ink);border-radius:12px;padding:10px 14px;font-style:italic}.sentence{color:var(--ink);text-align:center;padding-block:8px;font-size:24px;line-height:2.1}.blank{border-bottom:3px solid var(--ink);text-align:center;min-width:2.2em;margin:0 2px;display:inline-block}.opts{grid-template-columns:repeat(auto-fit,minmax(96px,1fr));gap:10px;display:grid}.opt{appearance:none;border:2px solid var(--line);background:var(--card);color:var(--ink);font:600 20px/1.3 var(--font-jp);cursor:pointer;border-radius:16px;padding:14px 10px}.opt:hover:not(:disabled){border-color:var(--ink)}.opt .num{font:600 14px/1 var(--font-body);color:var(--mute);margin-right:6px}.opt.right{border-color:var(--pos);background:var(--pos-bg);color:var(--pos-ink)}.opt.wrong{border-color:var(--neg);background:var(--neg-bg);color:var(--neg-ink)}.opt:disabled{cursor:default}.opts.text .opt{font-family:var(--font-body);font-size:16px}.feedback{border-radius:16px;padding:14px 16px;font-size:16px}.feedback.ok{background:var(--pos-bg);color:var(--pos-ink)}.feedback.ko{background:var(--neg-bg);color:var(--neg-ink)}.feedback b{margin-bottom:2px;display:block}.qtype{letter-spacing:.06em;text-transform:uppercase;background:var(--canvas);color:var(--body);border-radius:9999px;align-self:flex-start;padding:4px 12px;font-size:12px;font-weight:600;display:inline-flex}.order{color:var(--ink);flex-wrap:wrap;justify-content:center;align-items:center;gap:6px;padding-block:8px;font-size:20px;display:flex}.slot{appearance:none;border:2px dashed var(--mute);background:var(--canvas);min-width:64px;min-height:48px;font:600 20px/1.4 var(--font-jp);color:var(--ink);cursor:pointer;border-radius:12px;padding:4px 8px;position:relative}.slot.star{background:var(--pale)}.slot.star:after{content:"★";color:var(--ink);font-size:14px;position:absolute;top:-14px;left:50%;transform:translate(-50%)}.slot:disabled{cursor:default}.pieces{flex-wrap:wrap;justify-content:center;gap:10px;display:flex}.piece{appearance:none;border:2px solid var(--ink);background:var(--card);color:var(--ink);font:600 20px/1.3 var(--font-jp);cursor:pointer;border-radius:16px;padding:10px 16px}.piece:disabled{opacity:.25;cursor:default}.meter{background:var(--line);border-radius:9999px;height:6px;overflow:hidden}.meter span{background:var(--ink);transform-origin:0;width:100%;height:100%;transition:transform .2s ease-out;display:block}.opt.picked{border-color:var(--ink);background:var(--pale)}.check-card{background:var(--ink);color:var(--canvas)}.check-card h2,.check-card p{color:var(--canvas)}.check-card .eyebrow{color:var(--primary)}.lesson-results{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.lesson-result{border:2px solid var(--line);background:var(--card);width:100%;color:var(--ink);font:600 16px/1.3 var(--font-body);text-align:left;cursor:pointer;border-radius:16px;grid-template-columns:40px 1fr auto;align-items:center;gap:12px;padding:8px 12px;display:grid}.lesson-result:hover{border-color:var(--ink)}.lesson-result .glyph{background:var(--pale);border-radius:12px;place-items:center;width:40px;height:40px;font-size:20px;font-weight:700;display:grid}.pill-review{background:var(--particle);color:var(--particle-ink)}.review-card p{color:var(--ink)}.score{font-family:var(--font-display);font-size:64px;font-weight:800;line-height:1}.fact{background:var(--ink);color:var(--canvas);border-radius:var(--r-card);flex-direction:column;gap:10px;padding:24px;display:flex}.fact .eyebrow{color:var(--primary)}.fact p{color:var(--canvas)}.missed{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.missed li{background:var(--canvas);color:var(--body);border-radius:12px;padding:10px 14px;font-size:14px}.missed .jp{color:var(--ink);font-size:16px}@media (prefers-reduced-motion:no-preference){.card,.fact{animation:.25s ease-out rise}@keyframes rise{0%{transform:translateY(6px)}to{transform:none}}}
