:root{--color-bg:#fff9ee;--color-surface:#fffcf6c2;--color-ink:#2e241b;--color-muted:#8a725e;--color-brown:#7b4a2b;--color-brown-dark:#3b271c;--color-green:#2f9461;--color-amber:#d39b42;--radius-lg:24px;--radius-md:18px;--shadow-soft:0 32px 80px #704b2829;font-family:Inter,Microsoft YaHei,system-ui,sans-serif}html,body,#app{min-height:100%;color:var(--color-ink);background:#f7f2ea;margin:0}*{box-sizing:border-box}button{font:inherit;-webkit-tap-highlight-color:transparent}.app-shell{background:radial-gradient(circle at 72% 18%,#ffcb8038,#0000 31%),linear-gradient(135deg,#fff9ee 0%,#f4ddb8 48%,#fff6e8 100%);grid-template-columns:104px minmax(0,1fr) 224px;min-height:100vh;display:grid}.rail-shell{align-items:stretch;padding:18px 0 18px 18px;display:grid}.floating-rail{background:radial-gradient(circle at 50% 0,#ffd28f52,#0000 45%),linear-gradient(#5c3823f5,#3b271cf0);border:1px solid #ffecca2e;border-radius:24px;flex-direction:column;align-items:center;width:62px;padding:14px 0;display:flex;box-shadow:0 24px 54px #57351c42,inset 0 1px #ffffff29}.brand-mark{color:#3d271a;background:linear-gradient(#fff3db,#e9bd7d);border-radius:16px;place-items:center;width:38px;height:38px;margin-bottom:34px;font-weight:900;display:grid;box-shadow:0 12px 24px #20140e38,inset 0 1px #ffffffbf}.rail-nav{gap:16px;display:grid}.rail-item{color:#ffebcd8a;cursor:pointer;background:0 0;border:0;border-radius:15px;place-items:center;width:42px;height:42px;text-decoration:none;transition:transform .18s cubic-bezier(.2,.9,.2,1.25),background .18s,color .18s,box-shadow .18s;display:grid;position:relative}.rail-item svg{width:20px;height:20px}.rail-item.is-active{color:#fff9ef;background:#fff6e526;box-shadow:inset 0 0 0 1px #ffffff29}.rail-item:hover{color:#fff7e8;background:#fff6e51c;transform:translateY(-2px)scale(1.04);box-shadow:0 10px 22px #21140c2e,inset 0 0 0 1px #ffffff1f}.rail-item.is-disabled{cursor:not-allowed;opacity:.42}.rail-item.is-disabled:hover{color:#ffebcd8a;box-shadow:none;background:0 0;transform:none}.rail-item:active{transition-duration:80ms;transform:translateY(1px)scale(.96)}.rail-item.is-active:after{content:"";background:linear-gradient(#56c982,#e2ad58);border-radius:999px;width:4px;height:22px;position:absolute;right:-10px;box-shadow:0 0 16px #56c9826b}.rail-bottom{margin-top:auto}.practice-main{grid-template-rows:auto auto auto auto 1fr;align-content:start;gap:16px;padding:22px 30px 28px 12px;display:grid;position:relative}.practice-topbar{justify-content:space-between;align-items:center;gap:18px;display:flex}.segmented-control{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.segment,.soft-pill{isolation:isolate;color:#6b5545;cursor:pointer;background:#fffcf6b8;border:1px solid #7b4a2b29;border-radius:999px;font-size:13px;font-weight:700;transition:transform .18s cubic-bezier(.2,.9,.2,1.25),border-color .18s,background .18s,box-shadow .18s,color .18s,filter .18s;position:relative;overflow:hidden;box-shadow:0 5px 14px #613f210f,inset 0 1px #ffffffb8}.segment:after,.soft-pill:after{content:"";z-index:-1;border-radius:inherit;opacity:0;background:linear-gradient(115deg,#0000 12%,#ffffff94 45%,#0000 72%);transition:transform .46s cubic-bezier(.2,.8,.2,1),opacity .18s;position:absolute;inset:0;transform:translate(-130%)skew(-16deg)}.segment{padding:9px 14px}.soft-pill{padding:8px 13px}.segment.is-active{background:var(--color-brown);color:#fff5e7;border-color:#0000;animation:.22s cubic-bezier(.2,.9,.2,1.25) button-settle;box-shadow:0 12px 26px #74452633,inset 0 1px #ffffff29}.segment.is-green{background:var(--color-green);color:#fff;border-color:#0000;animation:.22s cubic-bezier(.2,.9,.2,1.25) button-settle;box-shadow:0 12px 26px #26875433,inset 0 1px #ffffff29}.segment:hover,.soft-pill:hover{background:#fffcf6f0;border-color:#7b4a2b47;transform:translateY(-2px);box-shadow:0 12px 24px #613f211f,inset 0 1px #ffffffd1}.segment.is-active:hover{background:linear-gradient(180deg, #8f5832, var(--color-brown));color:#fff8ec;border-color:#0000;box-shadow:0 14px 28px #74452642,inset 0 1px #fff3}.segment.is-green:hover{background:linear-gradient(180deg, #35ad6d, var(--color-green));color:#fff;border-color:#0000;box-shadow:0 14px 28px #26875442,inset 0 1px #fff3}.segment:hover:after,.soft-pill:hover:after{opacity:.72;transform:translate(130%)skew(-16deg)}.segment:active,.soft-pill:active{transition-duration:80ms;transform:translateY(1px)scale(.97);box-shadow:0 4px 10px #613f211f,inset 0 2px 4px #5a381e21}.segment:disabled,.soft-pill:disabled,.completion-actions button:disabled{cursor:wait;filter:saturate(.86);opacity:.72;transform:none}.segment:focus-visible,.soft-pill:focus-visible,.rail-item:focus-visible,.completion-actions button:focus-visible{outline-offset:3px;outline:3px solid #2e9b5d47}.settings-backdrop{z-index:20;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#281b113d;justify-items:end;display:grid;position:fixed;inset:0}.settings-drawer{background:radial-gradient(circle at 100% 0,#ffd49447,#0000 38%),linear-gradient(#fffbf4fa,#f7ebd9fa);border-left:1px solid #7e553124;flex-direction:column;gap:14px;width:min(420px,100vw - 24px);height:100%;padding:22px;animation:.22s cubic-bezier(.2,.9,.2,1) settings-slide-in;display:flex;overflow-y:auto;box-shadow:-32px 0 80px #3f2a1938}.settings-head{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.settings-head span,.settings-section-head span,.settings-about span{color:var(--color-green);font-size:12px;font-weight:900}.settings-head h2{color:#2d2118;margin:4px 0 0;font-size:30px;line-height:1}.settings-close{color:#6f5038;cursor:pointer;background:#fffaf4d6;border:1px solid #7e55311f;border-radius:14px;place-items:center;width:38px;height:38px;display:grid;box-shadow:0 10px 22px #613f2114}.settings-close svg{width:18px;height:18px}.settings-section,.settings-about{background:#fffcf6bd;border:1px solid #7e55311c;border-radius:20px;padding:16px;box-shadow:0 18px 42px #613f2114}.settings-section{gap:16px;display:grid}.settings-section-head p,.settings-row p,.settings-about p{color:#79614e;margin:5px 0 0;font-size:13px;font-weight:800;line-height:1.55}.settings-row{gap:8px;display:grid}.settings-row strong,.settings-about strong{color:#2d2118;font-size:15px}.settings-options,.settings-danger-grid{flex-wrap:wrap;gap:8px;display:flex}.settings-option,.settings-danger-grid button,.settings-about a,.settings-project-row a{color:#6f5038;cursor:pointer;background:#fffaf4e6;border:1px solid #7e553121;border-radius:999px;justify-content:center;align-items:center;gap:7px;min-height:36px;padding:0 12px;font-size:13px;font-weight:900;text-decoration:none;transition:transform .16s,background .16s,color .16s,box-shadow .16s;display:inline-flex}.settings-option:hover,.settings-danger-grid button:hover,.settings-about a:hover,.settings-project-row a:hover,.settings-close:hover{background:#fffaf3;transform:translateY(-1px);box-shadow:0 12px 24px #613f211f}.settings-option.is-active{background:var(--color-green);color:#fff;border-color:#0000;box-shadow:0 12px 24px #2e9b5d2e}.settings-toggle-row{grid-template-columns:1fr auto;align-items:center}.settings-switch{cursor:pointer;background:#7e55312e;border:0;border-radius:999px;width:54px;height:30px;padding:3px;transition:background .16s}.settings-switch span{background:#fffaf3;border-radius:50%;width:24px;height:24px;transition:transform .18s cubic-bezier(.2,.9,.2,1.15);display:block;box-shadow:0 4px 12px #492f1c2e}.settings-switch.is-on{background:var(--color-green)}.settings-switch.is-on span{transform:translate(24px)}.settings-danger-grid button{color:#9b4f32}.settings-about{gap:14px;display:grid}.settings-about span,.settings-about strong,.settings-about small{display:block}.settings-about small{color:#9a7b5c;overflow-wrap:anywhere;margin-top:7px;font-size:12px;font-weight:900}.settings-about a{justify-self:start}.settings-about svg,.settings-project-row svg{width:15px;height:15px}.settings-file-input{display:none}.settings-import-panel{background:#fffaf4b8;border:1px solid #7e55311c;border-radius:16px;gap:12px;padding:12px;display:grid}.settings-import-fields{gap:10px;display:grid}.settings-import-fields label{color:#79614e;gap:5px;font-size:12px;font-weight:900;display:grid}.settings-import-fields input{color:#2d2118;background:#fffcf6db;border:1px solid #7e553129;border-radius:10px;min-width:0;padding:9px 10px;font-weight:800}.settings-import-stats,.settings-import-preview,.settings-import-reasons{flex-wrap:wrap;gap:8px;display:flex}.settings-import-stats span,.settings-import-preview small,.settings-import-reasons small{color:#79614e;background:#90583a1a;border-radius:999px;padding:4px 8px;font-size:12px;font-weight:900}.settings-import-error,.settings-import-success{margin:0;font-size:13px;font-weight:900}.settings-import-error{color:#9b4f32}.settings-import-success{color:#52714d}.settings-project-row span,.settings-project-row strong,.settings-project-row small{display:block}.settings-project-row span{color:var(--color-green);font-size:12px;font-weight:900}.settings-project-row small{color:#9a7b5c;overflow-wrap:anywhere;margin-top:7px;font-size:12px;font-weight:900}.settings-project-row a{justify-self:start;text-decoration:none}@keyframes settings-slide-in{0%{opacity:0;transform:translate(34px)}to{opacity:1;transform:translate(0)}}@keyframes button-settle{0%{transform:scale(.96)}62%{transform:scale(1.035)}to{transform:scale(1)}}.session-strip{background:#fffcf6c7;border:1px solid #82563021;border-radius:18px;grid-template-columns:1fr auto;align-items:center;gap:10px;padding:12px 14px;display:grid}.session-strip p{color:#6c5848;margin:0 0 6px;font-size:14px}.practice-loading{z-index:6;pointer-events:none;background:radial-gradient(circle,#fff9eec2 0%,#fff9ee66 34%,#fff9ee00 62%);justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.practice-loading-card{color:#5f422d;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);background:#fffcf6f5;border:1px solid #7b4a2b1f;border-radius:999px;align-items:center;gap:14px;min-width:168px;padding:18px 28px;font-size:17px;font-weight:900;display:inline-flex;box-shadow:0 26px 70px #613f2133,inset 0 1px #ffffffd1}.practice-loading-card span{border:4px solid #2e9b5d33;border-top-color:var(--color-green);border-radius:50%;width:24px;height:24px;animation:.78s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.session-progress{background:#ead8bd;border-radius:999px;height:8px;overflow:hidden}.session-progress span{background:linear-gradient(90deg, var(--color-green), var(--color-amber));height:100%;transition:width .16s;display:block}.right-panel{background:#fffaf29e;border-left:1px solid #7b4a2b21;flex-direction:column;gap:14px;padding:22px 18px;display:flex}.panel-title{color:#8a725e;margin:0;font-size:12px;font-weight:800}.stat-card,.quote-card{background:#ffffff94;border:1px solid #7b4a2b1f;border-radius:16px}.stat-card{padding:13px}.stat-card strong{color:#2d2118;margin-bottom:3px;font-size:24px;display:block}.stat-card span{color:#846b57;font-size:12px}.mistake-card span{margin-top:5px;line-height:1.45;display:block}.mistake-card span:nth-of-type(2){color:var(--color-green);font-weight:900}.quote-card{color:#624b39;background:linear-gradient(#fffbf4b8,#ffefd6ad);margin-top:auto;padding:15px;line-height:1.75}.quote-card span{color:#9a7b5c;letter-spacing:.08em;margin-bottom:8px;font-size:11px;font-weight:900;display:block}.quote-card strong{font-size:14px;display:block}.practice-stage{text-align:center;place-items:center;min-height:360px;padding:46px 26px 8px;display:grid}.target-line{color:#7e654c40;letter-spacing:0;max-width:760px;margin:0;font-size:clamp(34px,5vw,50px);font-weight:900;line-height:1.45}.poem-line{display:block}.target-char{vertical-align:top;justify-items:center;min-width:.86em;margin:0 .08em;padding:0 .02em .42em;display:inline-grid;position:relative}.target-glyph{color:#0000;background:linear-gradient(#8f6a43,#c19054);-webkit-background-clip:text;background-clip:text;display:block}.target-char:not(.is-active):not(.is-complete) .target-glyph{opacity:.72;background:linear-gradient(#98734a,#d0a05c);-webkit-background-clip:text;background-clip:text}.target-line .is-active{text-shadow:0 14px 32px #4c301924}.target-line .is-active .target-glyph{background:linear-gradient(#1f1711,#7c4d2e);-webkit-background-clip:text;background-clip:text}.target-line .is-complete{opacity:.78}.target-line .is-complete .target-glyph{background:linear-gradient(#9b7350,#c09a63);-webkit-background-clip:text;background-clip:text}.target-line.is-wrong .is-active .target-glyph{background:linear-gradient(#9f3e2c,#d07147);-webkit-background-clip:text;background-clip:text}.char-code{color:#7d685466;letter-spacing:0;white-space:nowrap;align-items:center;gap:.16em;font-size:.3em;font-weight:900;line-height:1;display:inline-flex;position:absolute;bottom:.02em;left:50%;transform:translate(-50%)}.char-code-key{color:#342820b8;background:#fffaf4e6;border:1px solid #7e553126;border-radius:.4em;place-items:center;min-width:1.48em;height:1.45em;line-height:1;display:grid;box-shadow:0 .2em #62432a1f}.char-code-key.is-done{color:#fff;background:#2f9461c7;border-color:#0000;box-shadow:0 .2em #1e6843b8}.char-code-key.is-current{background:var(--color-green);color:#fff;outline-offset:.08em;border-color:#0000;outline:.14em solid #2f946138;transform:translateY(-.08em);box-shadow:0 .2em #1e6843}.code-hint{background:#fff9f094;border:1px solid #8056331a;border-radius:14px;gap:8px;margin-top:268px;padding:8px 10px 10px;display:inline-flex}.code-key{color:#342820;background:#fffaf4;border:1px solid #7e55312b;border-radius:11px;place-items:center;min-width:38px;height:36px;font-weight:900;display:grid;box-shadow:0 4px #62432a1f}.code-key.is-hooked-l{font-family:Georgia,Times New Roman,serif;font-size:19px;font-style:italic;line-height:1}.code-key.is-done,.code-key.is-current{background:var(--color-green);color:#fff;border-color:#0000;box-shadow:0 4px #1e6843}.virtual-keyboard{background:#fffcf6c2;border:1px solid #7b4a2b24;border-radius:22px;width:min(760px,100%);margin:0 auto;padding:20px;box-shadow:0 22px 50px #5c3b1f1f}.keyboard-row{justify-content:center;gap:9px;margin:9px 0;display:flex}.keyboard-key{color:#342820;background:#fffaf4;border:1px solid #78543424;border-radius:11px;place-items:center;width:60px;height:58px;font-size:18px;font-weight:900;display:grid;box-shadow:0 4px #62432a1f}.keyboard-key small{color:var(--color-green);white-space:nowrap;margin-top:-12px;font-size:8.5px;font-weight:800;display:block}.keyboard-key.is-hot{background:var(--color-green);color:#fff;box-shadow:0 4px #1e6843}.keyboard-key.is-hot small{color:#dff8e8}.keyboard-key.is-wrong{color:#fff;background:#c9623e;box-shadow:0 4px #8f3f2a}.completion-modal{background:#2f241b3d;place-items:center;display:grid;position:fixed;inset:0}.completion-modal section{min-width:260px;box-shadow:var(--shadow-soft);text-align:center;background:#fff9ee;border:1px solid #7b4a2b24;border-radius:24px;padding:24px;position:relative}.completion-close{color:#8a6a50;cursor:pointer;background:#fffcf6bd;border:1px solid #7b4a2b1f;border-radius:50%;place-items:center;width:28px;height:28px;font-size:18px;font-weight:900;line-height:1;transition:transform .16s cubic-bezier(.2,.9,.2,1.18),background .16s,color .16s,box-shadow .16s;display:grid;position:absolute;top:10px;right:10px;box-shadow:0 7px 16px #613f2114,inset 0 1px #ffffffb8}.completion-close:hover{color:var(--color-brown);background:#fffaf3;transform:translateY(-1px)scale(1.04);box-shadow:0 12px 20px #613f2124,inset 0 1px #ffffffd1}.completion-close:active{transition-duration:80ms;transform:translateY(1px)scale(.94)}.completion-modal p,.completion-modal span{color:var(--color-muted)}.completion-modal strong{color:var(--color-green);font-size:42px;display:block}.completion-stats,.completion-actions{justify-content:center;gap:10px;margin-top:14px;display:flex}.completion-mistakes span{color:var(--color-green);background:#2e9b5d14;border-radius:999px;padding:5px 9px;font-weight:900}.completion-actions button{color:var(--color-brown);cursor:pointer;background:#fffcf6e6;border:1px solid #7b4a2b2e;border-radius:999px;padding:8px 12px;font-weight:800;transition:transform .18s cubic-bezier(.2,.9,.2,1.25),background .18s,box-shadow .18s,color .18s,opacity .18s;position:relative;overflow:hidden;box-shadow:0 7px 16px #613f211a,inset 0 1px #ffffffc7}.completion-actions button:after{content:"";border-radius:inherit;opacity:0;background:linear-gradient(115deg,#0000 12%,#ffffff94 45%,#0000 72%);transition:transform .46s cubic-bezier(.2,.8,.2,1),opacity .18s;position:absolute;inset:0;transform:translate(-130%)skew(-16deg)}.completion-actions button:hover:not(:disabled){background:#fffaf3;transform:translateY(-2px);box-shadow:0 14px 24px #613f2126,inset 0 1px #ffffffd6}.completion-actions button:hover:not(:disabled):after{opacity:.74;transform:translate(130%)skew(-16deg)}.completion-actions button:active:not(:disabled){transition-duration:80ms;transform:translateY(1px)scale(.96);box-shadow:0 4px 10px #613f211f,inset 0 2px 4px #5a381e21}.completion-actions button.is-primary{background:var(--color-green);color:#fff;border-color:#0000;box-shadow:0 12px 26px #26875433,inset 0 1px #ffffff29}.completion-actions button.is-primary:hover:not(:disabled){background:linear-gradient(180deg, #35ad6d, var(--color-green));color:#fff}.learning-shell{grid-template-columns:104px minmax(0,1fr)}.learning-main{align-content:start;gap:18px;padding:28px 34px 34px 12px;display:grid}.learning-header{justify-content:space-between;align-items:flex-start;gap:18px;display:flex}.learning-header h1{color:#2d2118;margin:4px 0 8px;font-size:32px;line-height:1.15}.learning-header p{color:#79614e;margin:0}.scheme-chip{color:var(--color-brown);white-space:nowrap;background:#fffcf6c7;border:1px solid #7b4a2b24;border-radius:999px;padding:8px 12px;font-size:13px;font-weight:900}.records-panel{background:#fffcf6c2;border:1px solid #7b4a2b1f;border-radius:18px;padding:18px;box-shadow:0 22px 50px #5c3b1f1a}.coach-metrics{flex-wrap:wrap;justify-content:flex-end;gap:8px;max-width:420px;display:flex}.coach-metrics span,.coach-focus span,.records-panel-head>span{color:#735640;background:#fffcf6b8;border:1px solid #7b4a2b1f;border-radius:999px;padding:8px 10px;font-size:12px;font-weight:900}.coach-metrics strong{color:var(--color-green)}.records-scheme-switch{background:#fffcf6b8;border:1px solid #7b4a2b1f;border-radius:999px;gap:4px;padding:4px;display:inline-flex}.records-scheme-switch button{color:#735640;min-width:68px;font:inherit;cursor:pointer;background:0 0;border:0;border-radius:999px;padding:6px 9px;font-size:12px;font-weight:900}.records-scheme-switch button.is-active{color:var(--color-green);background:#2e9b5d21}.records-scheme-switch button:hover{color:var(--color-green)}.coach-card{background:linear-gradient(135deg,#fffcf6f0,#ecf8e5c2);border:1px solid #3784572e;border-radius:22px;grid-template-columns:minmax(0,1.5fr) minmax(240px,.8fr);align-items:stretch;gap:18px;padding:22px;display:grid;box-shadow:0 28px 70px #4f3a241f}.coach-kicker{color:var(--color-green);font-size:13px;font-weight:900}.coach-card h2,.records-panel-head h2{color:#2d2118;margin:6px 0 8px;font-size:25px;line-height:1.18}.coach-card p{color:#705746;max-width:620px;margin:0;font-weight:800}.coach-focus{flex-wrap:wrap;gap:8px;margin-top:18px;display:flex}.coach-target{background:#fffaf4c7;border-radius:18px;align-content:center;justify-items:start;gap:10px;padding:18px;display:grid}.coach-target strong{color:#2d2118;font-size:44px;line-height:1}.coach-target span{color:#79614e;font-size:13px;font-weight:900}.coach-target button{background:var(--color-green);color:#fff;font:inherit;cursor:pointer;border:0;border-radius:999px;margin-top:6px;padding:10px 14px;font-weight:900;box-shadow:0 12px 24px #26875438}.coach-target button:hover{background:linear-gradient(180deg, #35ad6d, var(--color-green))}.coach-empty{background:#fffcf6c7;border-color:#7b4a2b1f}.records-panel-head{justify-content:space-between;align-items:flex-start;gap:14px;margin-bottom:14px;display:flex}.records-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;display:grid}.reason-card{background:#fffaf4d1;border:1px solid #7e55311a;border-radius:16px;gap:6px;padding:14px;display:grid}.reason-card>span{color:var(--color-green);font-size:12px;font-weight:900}.reason-card strong{color:#2d2118;font-size:18px}.reason-card p,.reason-card em{color:#79614e;margin:0;font-size:13px;font-style:normal;font-weight:800}.mistake-list{gap:8px;display:grid}.records-summary{color:var(--color-muted);gap:2px;margin-bottom:14px;display:inline-grid}.records-summary strong{color:var(--color-green);font-size:34px;line-height:1}.mistake-row{background:#fffaf4d1;border:1px solid #7e55311a;border-radius:12px;grid-template-columns:minmax(120px,1fr) minmax(280px,2fr);align-items:center;gap:12px;padding:12px;display:grid}.mistake-row.is-graduated{opacity:.58}.mistake-row strong{color:#2d2118;font-size:26px;display:block}.mistake-row span,.mistake-meta span{color:#79614e;font-size:13px}.mistake-meta{flex-wrap:wrap;gap:8px;display:flex}.mistake-meta span{color:var(--color-green);background:#2e9b5d14;border-radius:999px;padding:5px 8px;font-weight:900}.empty-state{color:var(--color-muted);margin:12px 0 0;font-weight:800}.vocabulary-empty-state{text-align:center;justify-items:center;gap:14px;min-height:360px;padding:76px 24px;display:grid}.practice-fetch-state{color:#79614e;text-align:center;align-content:center;justify-items:center;gap:16px;min-height:460px;display:grid}.mistake-empty-stage{text-align:center;align-content:center;justify-items:center;gap:12px;min-height:420px;padding:40px 24px;display:grid}.mistake-empty-stage>span{color:var(--color-green);font-size:12px;font-weight:900}.mistake-empty-stage h1{color:#2d2118;max-width:560px;margin:0;font-size:38px;line-height:1.1}.mistake-empty-stage p{color:#79614e;max-width:520px;margin:0;font-size:15px;font-weight:800;line-height:1.7}.mistake-empty-stage strong{max-width:560px;color:var(--color-green);font-size:14px;line-height:1.7}.practice-fetch-state span{border:6px solid #2e9b5d1f;border-top-color:var(--color-green);border-radius:999px;width:72px;height:72px;animation:.9s linear infinite spin;position:relative;box-shadow:0 18px 42px #2e9b5d1f}.practice-fetch-state span:after{border-radius:inherit;content:"";background:#fffaf4eb;position:absolute;inset:17px;box-shadow:inset 0 0 0 1px #2e9b5d14}.practice-fetch-state strong{color:#2d2118;font-size:30px}.practice-fetch-state p{margin:0;font-size:15px;font-weight:800}.vocabulary-empty-state>span,.vocabulary-hero>span,.vocabulary-section-head>span,.vocabulary-card>span{color:var(--color-green);font-size:12px;font-weight:900}.vocabulary-empty-state h1,.vocabulary-hero h1{color:#2d2118;margin:0;font-size:34px}.vocabulary-empty-state p,.vocabulary-hero p,.vocabulary-card p,.vocabulary-installed-empty,.vocabulary-error{color:#79614e;margin:0;font-size:14px;font-weight:800}.vocabulary-empty-actions,.vocabulary-card-actions{flex-wrap:wrap;justify-content:center;gap:10px;display:flex}.vocabulary-benefits{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;width:min(720px,100%);margin:2px 0 4px;display:grid}.vocabulary-benefits div{background:#fffaf4b8;border:1px solid #7e55311a;border-radius:16px;gap:6px;min-height:92px;padding:14px;display:grid;box-shadow:0 14px 32px #633f1e0f}.vocabulary-benefits strong{color:#2d2118;font-size:15px}.vocabulary-benefits small{color:#79614e;font-size:12px;font-weight:800;line-height:1.55}.primary-action,.ghost-action,.vocabulary-picker button,.vocabulary-picker a{cursor:pointer;border:0;border-radius:999px;justify-content:center;align-items:center;min-height:38px;padding:0 16px;font-size:13px;font-weight:900;text-decoration:none;transition:transform .16s,box-shadow .16s,background .16s;display:inline-flex}.primary-action{background:var(--color-green);color:#fff;box-shadow:0 12px 24px #2e9b5d33}.ghost-action,.vocabulary-picker button,.vocabulary-picker a{color:#6f5038;background:#fffaf4e0;box-shadow:inset 0 0 0 1px #7e55311f}.primary-action:hover,.ghost-action:hover,.vocabulary-picker button:hover,.vocabulary-picker a:hover{transform:translateY(-1px)}.primary-action:disabled,.ghost-action:disabled,.vocabulary-picker button:disabled{cursor:default;opacity:.62;transform:none}.vocabulary-picker{flex-wrap:wrap;justify-content:center;gap:8px;margin:8px 0 -20px;display:flex}.vocabulary-picker button.is-active{color:var(--color-green);background:#fff;box-shadow:inset 0 0 0 1px #2e9b5d47,0 10px 24px #2e9b5d1f}.vocabulary-picker button.is-mixed{color:#a94506;background:linear-gradient(#fff1dbf5,#ffdeade6);box-shadow:inset 0 0 0 1px #f5822057,0 12px 24px #e1681429}.vocabulary-picker button.is-mixed.is-active{color:#fff;background:linear-gradient(#ff9f1c,#f15a24);box-shadow:0 14px 30px #f15a2447,inset 0 1px #ffffff57}.vocabulary-page{grid-template-columns:76px minmax(0,1fr)}.vocabulary-main{gap:18px;min-height:100vh;padding:28px 28px 48px 8px;display:grid}.vocabulary-hero,.vocabulary-section{background:#fffaf4c2;border:1px solid #7e55311a;border-radius:24px;box-shadow:0 18px 60px #633f1e14}.vocabulary-hero{align-items:start;gap:10px;padding:28px;display:grid}.vocabulary-hero .soft-pill{justify-self:start}.membership-strip{background:#fff7edd1;border:1px solid #ec714140;border-radius:8px;gap:4px;max-width:620px;padding:12px 14px;display:grid}.membership-strip strong{color:#9a3412;font-size:15px}.membership-strip small{color:var(--color-text-muted);line-height:1.65}.vocabulary-error{color:#9b4f32;background:#a356381a;border-radius:16px;padding:12px 16px}.vocabulary-section{gap:16px;padding:20px;display:grid}.vocabulary-section-head{justify-content:space-between;align-items:center;display:flex}.vocabulary-section-head strong{color:#2d2118;font-size:22px}.vocabulary-grid{grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:12px;display:grid}.vocabulary-card{background:#ffffffb3;border:1px solid #7e55311f;border-radius:18px;grid-template-rows:auto auto auto auto auto 1fr;align-content:start;gap:10px;min-height:300px;padding:18px;display:grid}.vocabulary-card.has-bottom-action>.primary-action,.vocabulary-card.has-bottom-action>.vocabulary-card-actions{align-self:end;margin-top:auto}.vocabulary-card.has-bottom-action>.primary-action{width:100%}.sponsor-action{background:linear-gradient(135deg,#f97316,#e11d48);box-shadow:0 12px 24px #e11d482e}.vocabulary-card.is-installed{background:#fffaf4f0}.vocabulary-card h2{color:#2d2118;margin:0;font-size:20px}.modal-backdrop{z-index:50;background:#0f172a6b;place-items:center;padding:24px;display:grid;position:fixed;inset:0}.sponsor-dialog{background:#fffaf5;border-radius:10px;gap:16px;width:min(680px,100%);max-height:calc(100vh - 48px);padding:24px;display:grid;position:relative;overflow:auto;box-shadow:0 24px 80px #0f172a3d}.dialog-close{width:34px;height:34px;color:var(--color-text);cursor:pointer;background:#0f172a14;border:0;border-radius:50%;position:absolute;top:14px;right:14px}.sponsor-dialog>span{color:#be123c;font-size:12px;font-weight:800}.sponsor-dialog h2,.sponsor-dialog p{margin:0}.sponsor-dialog p{color:var(--color-text-muted);line-height:1.7}.sponsor-qr-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}.sponsor-qr-grid>div{background:#ffffffb8;border:1px solid #94a3b838;border-radius:8px;gap:10px;padding:14px;display:grid}.sponsor-qr-grid img{aspect-ratio:1;object-fit:contain;background:#fff;border-radius:8px;width:100%;max-width:180px}.sponsor-form,.redeem-form{gap:12px;display:grid}.sponsor-form{grid-template-columns:repeat(2,minmax(0,1fr))}.sponsor-form label,.redeem-form label{color:var(--color-text);gap:6px;font-size:13px;font-weight:700;display:grid}.sponsor-form input,.redeem-form input{width:100%;font:inherit;color:var(--color-text);background:#fff;border:1px solid #94a3b857;border-radius:8px;padding:10px 11px}.sponsor-form .primary-action,.redeem-form .primary-action{width:100%}.sponsor-form .primary-action{grid-column:1/-1}.sponsor-notice{color:#166534;background:#16a34a1a;border-radius:8px;padding:10px 12px}.admin-claim-list{gap:12px;display:grid}.admin-redeem-code{color:#166534;background:#f0fdf4eb;border:1px solid #16a34a38;border-radius:8px;padding:12px 16px}.admin-redeem-code strong{letter-spacing:0;font-family:ui-monospace,SFMono-Regular,Consolas,monospace}.admin-login-form{background:#ffffffb8;border:1px solid #7e55311f;border-radius:8px;grid-template-columns:minmax(220px,360px) auto;align-items:end;gap:10px;padding:16px;display:grid}.admin-login-form label{gap:6px;font-size:13px;font-weight:800;display:grid}.admin-login-form input{min-height:40px;font:inherit;border:1px solid #94a3b857;border-radius:8px;padding:10px 11px}.admin-login-form small{color:#be123c;grid-column:1/-1}.admin-claim-card{background:#ffffffb8;border:1px solid #7e55311f;border-radius:8px;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:16px;padding:16px;display:grid}.admin-claim-card div:first-child{gap:6px;display:grid}.admin-claim-card small,.admin-claim-card p{color:var(--color-text-muted);margin:0}.admin-code-line{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.admin-code-line strong{color:#14532d;letter-spacing:0;font-family:ui-monospace,SFMono-Regular,Consolas,monospace}.admin-code-line span,.admin-status-pill{color:#166534;background:#16a34a1a;border-radius:999px;width:fit-content;padding:4px 8px;font-size:12px;font-weight:800}.admin-claim-actions{flex-wrap:wrap;justify-content:flex-end;gap:8px;display:flex}.vocabulary-tags,.vocabulary-card-meta{flex-wrap:wrap;gap:8px;display:flex}.vocabulary-tags small,.vocabulary-card-meta em{color:#79614e;background:#7e553114;border-radius:999px;padding:5px 8px;font-size:12px;font-style:normal;font-weight:900}@media (width<=960px){.app-shell{grid-template-columns:76px minmax(0,1fr)}.right-panel{display:none}.practice-main{padding:18px 18px 18px 4px}.rail-shell{padding-left:10px}.keyboard-key{width:42px;height:46px}.vocabulary-benefits{grid-template-columns:1fr}}
