:root{color:#1d1914;background:#f7f1e8;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-synthesis:none;text-rendering:optimizeLegibility}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh;background:#f7f1e8}button,input{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.58}.auth-page{min-height:100vh;display:grid;grid-template-columns:minmax(0,1.2fr) minmax(360px,.8fr);background:#0f172a;color:#fffaf0}.auth-visual{min-height:100vh;padding:clamp(32px,7vw,92px);display:flex;flex-direction:column;justify-content:center;position:relative;overflow:hidden;background:linear-gradient(#0f172a2e,#0f172ac7),url(https://images.unsplash.com/photo-1497633762265-9d179a990aa6?auto=format&fit=crop&w=1800&q=80) center/cover}.auth-visual h1{max-width:780px;margin:32px 0 18px;font-family:Georgia,serif;font-size:clamp(42px,7vw,88px);line-height:1.02;letter-spacing:0}.auth-visual p{max-width:680px;margin:0;color:#f9e6c1;font-size:18px;line-height:1.7}.word-cloud{display:flex;flex-wrap:wrap;gap:10px;max-width:680px}.word-cloud span{padding:8px 12px;border:1px solid rgba(255,250,240,.35);border-radius:999px;background:#fffaf029;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.auth-panel{align-self:center;margin:28px;padding:32px;border-radius:8px;background:#fffaf0;color:#1d1914;box-shadow:0 26px 70px #00000047;text-align:center}.mini-logo{display:flex;align-items:center;justify-content:center;gap:8px;width:fit-content;margin:0 auto;padding:7px 10px;border-radius:6px;background:#163c40;color:#fff;font-weight:800}.mini-logo img{width:26px;height:26px;object-fit:contain;border-radius:5px;background:#fffaf0}.auth-panel h2{margin:20px 0;font-size:28px}.auth-panel label{display:grid;gap:8px;margin-bottom:14px;color:#57534e;font-weight:700;text-align:left}.auth-error{margin:4px 0 12px;padding:10px 12px;border-radius:8px;background:#fee2e2;color:#991b1b;font-weight:800;text-align:left}.auth-panel input,.search-box input{width:100%;height:48px;border:1px solid #ded6c8;border-radius:8px;padding:0 14px;background:#fffdf8;color:#1d1914;outline:none}.primary-action{min-height:48px;border:0;border-radius:8px;padding:0 18px;background:#be4f05;color:#fff;display:inline-flex;align-items:center;justify-content:center;gap:8px;font-weight:800}.auth-panel .primary-action{width:100%;margin-top:8px}.link-action{width:100%;border:0;background:transparent;color:#0f766e;min-height:44px;font-weight:800}.app-shell{display:grid;grid-template-columns:260px minmax(0,1fr);min-height:100vh}.sidebar{position:sticky;top:0;height:100vh;padding:20px;background:#181512;color:#fff7ed;display:flex;flex-direction:column;gap:22px}.brand-block{display:flex;align-items:center;gap:12px}.brand-logo{width:48px;height:48px;border-radius:8px;object-fit:contain;background:#fffaf0;padding:3px;box-shadow:0 0 0 1px #fff7ed38}.brand-mark,.avatar{width:44px;height:44px;border-radius:8px;background:#f7c948;color:#181512;display:grid;place-items:center;font-family:Georgia,serif;font-weight:900;font-size:26px}.brand-block strong,.brand-block span{display:block}.brand-block span{color:#d6c8b8;font-size:13px}nav{display:grid;gap:8px}.nav-button{height:44px;border:1px solid transparent;border-radius:8px;background:transparent;color:#e7dccd;display:flex;align-items:center;gap:10px;padding:0 12px;font-weight:750}.nav-button.active{background:#fff7ed;color:#181512}.profile-chip{margin-top:auto;border-top:1px solid rgba(255,247,237,.16);padding-top:14px;display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:8px}.profile-chip button{border:0;border-radius:7px;padding:6px 8px;color:#181512;background:#f7c948}main{padding:24px}.topbar{display:flex;align-items:end;justify-content:space-between;gap:18px;margin-bottom:22px}.topbar p,.section-heading p{margin:0 0 4px;color:#78716c;font-weight:800}.topbar h1,.section-heading h2{margin:0;font-family:Georgia,serif;font-size:clamp(28px,4vw,48px);line-height:1.08;letter-spacing:0}.page-title{width:100%;min-height:116px;display:flex;align-items:center;justify-content:space-between;gap:20px;padding:20px;border:1px solid #e4dccf;border-radius:8px;background:linear-gradient(135deg,#fffaf0fa,#fff7ede6),linear-gradient(90deg,color-mix(in srgb,var(--title-tone) 16%,transparent),transparent 68%);box-shadow:0 16px 40px #533e1f14;position:relative;overflow:hidden}.page-title:before{content:"";position:absolute;left:0;top:0;bottom:0;width:6px;background:var(--title-tone)}.page-title-main{min-width:0;display:flex;align-items:center;gap:16px}.page-title-icon{width:54px;height:54px;flex:0 0 auto;border-radius:8px;display:grid;place-items:center;background:var(--title-tone);color:#fffaf0;box-shadow:0 12px 24px color-mix(in srgb,var(--title-tone) 24%,transparent)}.page-title p{margin:0 0 4px;color:var(--title-tone);font-size:12px;font-weight:950;text-transform:uppercase;letter-spacing:.08em}.page-title h2{margin:0;color:#1d1914;font-family:Georgia,serif;font-size:clamp(30px,4vw,52px);line-height:1;letter-spacing:0}.page-title-main span:not(.page-title-icon){display:block;max-width:720px;margin-top:8px;color:#57534e;line-height:1.6;font-weight:650}.page-title-extra{flex:0 0 auto;display:flex;align-items:center;gap:10px}.metric-strip{display:flex;gap:10px}.metric{min-width:118px;padding:12px;border:1px solid #e4dccf;border-radius:8px;background:#fffaf0}.metric span,.metric strong{display:block}.metric span{color:#78716c;font-size:12px;margin-top:6px}.metric strong{font-size:20px}.learn-grid{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:18px}.study-card,.motivation-panel{border:1px solid #e4dccf;border-radius:8px;background:#fffaf0}.study-card{padding:clamp(18px,4vw,34px);display:grid;gap:18px}.stage-label{color:var(--tone);font-weight:900}.picture-panel{width:min(100%,420px);aspect-ratio:1 / 1;justify-self:center;border-radius:8px;border:1px solid #eadfcb;background:#fff2bd;display:grid;place-items:center;overflow:hidden}.picture-panel span{color:var(--tone);font-family:Georgia,serif;font-size:clamp(86px,16vw,168px);font-weight:900}.picture-panel.has-image{background:#f7efe1}.picture-panel img{width:100%;height:100%;object-fit:contain;display:block}.word-main p,.word-main h2{margin:0}.word-main p{color:var(--tone);font-weight:900}.word-main h2{font-family:Georgia,serif;font-size:clamp(42px,9vw,92px);letter-spacing:0}.phonetic{display:block;color:#0f766e;font-family:SF Mono,Menlo,Consolas,monospace;font-size:17px;font-style:normal;font-weight:800;margin-top:4px}.word-main strong{display:block;font-size:24px;margin-top:4px}.word-main em{display:block;color:#78716c;font-size:18px;margin-top:8px}.audio-row{display:flex;flex-wrap:wrap;gap:10px}.audio-row button{min-height:42px;border:1px solid #ded6c8;border-radius:8px;background:#fffdf8;color:#3f3a34;display:inline-flex;align-items:center;gap:8px;padding:0 14px;font-weight:800}.recorder-panel{display:grid;grid-template-columns:auto auto auto auto minmax(170px,1fr);align-items:center;gap:8px}.recorder-label{color:#3f3a34;font-weight:900;white-space:nowrap}.recorder-panel button,.word-actions button{min-width:40px;min-height:38px;border:1px solid #ded6c8;border-radius:8px;background:#fffdf8;color:#3f3a34;display:inline-flex;align-items:center;justify-content:center;gap:7px;padding:0 12px;font-weight:800}.recorder-panel button.recording{border-color:#f97316;background:#ffedd5;color:#9a3412}.recorder-panel button.playing{border-color:#14b8a6;background:#ccfbf1;color:#0f766e}.recorder-panel button.playing svg{animation:playbackPulse .8s ease-in-out infinite}.recorder-panel button:disabled,.word-actions button:disabled{cursor:not-allowed;opacity:.45}.waveform{min-height:46px;border:1px solid #eadfcb;border-radius:8px;background:#fff8e7;display:flex;align-items:center;justify-content:center;gap:3px;padding:0 10px}.waveform span{width:4px;min-height:4px;max-height:42px;border-radius:999px;background:#d6c8b8;transition:height .08s linear,background .16s ease}.waveform.active span{background:#c2410c}.recorder-panel small{grid-column:1 / -1;color:#78716c;font-weight:700}@keyframes playbackPulse{0%,to{transform:scale(1);opacity:.75}50%{transform:scale(1.18);opacity:1}}.sentence-box{padding:16px;border-radius:8px;background:#f5efe4}.sentence-box span,.sentence-box small{display:block}.sentence-box span{font-family:Georgia,serif;font-size:24px}.sentence-box small{margin-top:6px;color:#78716c;font-size:16px}.options{display:grid;gap:10px}.options button{min-height:62px;border:1px solid #ded6c8;border-radius:8px;background:#fffdf8;color:#1d1914;display:grid;grid-template-columns:1fr auto;align-items:center;gap:8px;padding:10px 14px;text-align:left}.options button span{font-weight:900;font-size:19px}.options button small{grid-column:1 / 2;color:#78716c}.option-phonetic{grid-column:1 / 2;color:#0f766e;font-family:SF Mono,Menlo,Consolas,monospace;font-style:normal;font-weight:800}.options button.correct{background:#dcfce7;border-color:#86efac}.options button.wrong{background:#fee2e2;border-color:#fca5a5}.motivation-panel{padding:20px;align-self:start}.motivation-panel h3{margin:12px 0 8px;font-size:24px}.motivation-panel p{color:#57534e;line-height:1.6}.routine-list{display:grid;gap:8px;margin-top:18px}.routine-list span{padding:10px 12px;border-radius:8px;background:#f5efe4;font-weight:800}.library-view,.rank-view,.settings-view,.review-view,.progress-view,.admin-view{display:grid;gap:16px}.search-box{display:flex;align-items:center;gap:10px;margin-bottom:0}.category-row,.goal-grid{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:0}.category-row button,.goal-grid button{min-height:40px;border:1px solid #ded6c8;border-radius:8px;padding:0 12px;background:#fffdf8;color:#3f3a34;font-weight:850}.category-row button.active,.goal-grid button.active{color:#fff;background:#181512;border-color:#181512}.word-list{display:grid;gap:10px}.word-row,.rank-row{display:grid;grid-template-columns:1fr auto;gap:14px;align-items:center;padding:14px;border:1px solid #e4dccf;border-radius:8px;background:#fffdf8}.word-row:has(.word-thumb){grid-template-columns:76px minmax(0,1fr) auto}.word-thumb{width:76px;height:76px;border-radius:8px;border:1px solid #eadfcb;object-fit:cover;background:#f5efe4}.word-row h3{margin:0;font-family:Georgia,serif;font-size:28px}.word-row .phonetic{margin:2px 0 4px;font-size:14px}.word-row p,.word-row span{margin:0;color:#57534e}.word-row span{display:block;margin-top:8px;font-family:Georgia,serif}.mastery{display:flex;gap:4px}.word-actions{display:grid;gap:10px;justify-items:end}.word-actions button.favorite.active{border-color:#be123c;background:#ffe4e6;color:#be123c}.mastery span{width:12px;height:12px;border-radius:99px;background:#e7dccd}.mastery span.on{background:#b45309}.rank-list{display:grid;gap:10px;margin-top:16px}.rank-row{grid-template-columns:44px 44px minmax(0,1fr) auto}.rank-row.me{border-color:#be4f05;background:#fff7ed}.rank-row h3,.rank-row p{margin:0}.rank-row p{color:#78716c}.rank-row>strong{font-size:24px}.rank-row>span{font-weight:900;color:#be4f05}.settings-view{max-width:720px}.review-view{display:grid;gap:16px}.review-cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.review-cards button{min-height:130px;border:1px solid #e4dccf;border-radius:8px;background:#fffaf0;color:#1d1914;display:grid;grid-template-columns:auto 1fr auto;align-content:start;gap:8px;padding:16px;text-align:left}.review-cards button.active{border-color:#181512;box-shadow:inset 0 0 0 2px #181512}.review-cards span{font-size:20px;font-weight:900}.review-cards strong{color:#b45309;font-size:24px}.review-cards em{grid-column:1 / -1;color:#78716c;font-style:normal;font-weight:800}.review-list{display:grid;gap:10px}.review-row{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:14px;padding:14px;border:1px solid #e4dccf;border-radius:8px;background:#fffdf8}.review-row h3{margin:0;font-family:Georgia,serif;font-size:28px}.review-row p,.review-row span{margin:0;color:#57534e}.review-row span{display:block;margin-top:8px;font-family:Georgia,serif}.review-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px}.review-actions button{min-height:38px;border:1px solid #ded6c8;border-radius:8px;background:#fffdf8;color:#3f3a34;display:inline-flex;align-items:center;gap:7px;padding:0 12px;font-weight:800}.review-actions button.active{border-color:#be123c;background:#ffe4e6;color:#be123c}.empty-review{min-height:180px;border:1px dashed #d6c8b8;border-radius:8px;color:#78716c;display:grid;place-items:center;align-content:center;gap:10px}.progress-summary{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.progress-summary div{min-height:96px;border:1px solid #e4dccf;border-radius:8px;background:#fffdf8;padding:16px;display:grid;align-content:center;gap:4px}.progress-summary strong{font-size:30px;color:#1d4ed8}.progress-summary span{color:#57534e;font-weight:800}.streak-hint{min-height:48px;border:1px solid #bfdbfe;border-radius:8px;background:#eff6ff;color:#1e3a8a;display:flex;align-items:center;gap:10px;padding:0 14px;font-weight:850}.calendar-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:8px}.calendar-grid div{aspect-ratio:1 / .78;border:1px solid #e4dccf;border-radius:8px;background:#fffdf8;display:grid;align-content:center;justify-items:center;gap:4px}.calendar-grid div.active{border-color:#93c5fd;background:#eff6ff}.calendar-grid div.done{border-color:#86efac;background:#dcfce7}.calendar-grid span{color:#78716c;font-size:12px;font-weight:800}.calendar-grid strong{color:#1d1914;font-size:20px}.review-plan-panel{border:1px solid #e4dccf;border-radius:8px;background:#fffaf0;padding:18px}.smart-review-list{display:grid;gap:10px}.smart-review-list article{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:12px;border:1px solid #eadfd1;border-radius:8px;background:#fffdf8;padding:12px}.smart-review-list h3,.smart-review-list p,.smart-review-list span{margin:0}.smart-review-list h3{font-family:Georgia,serif;font-size:24px}.smart-review-list p,.smart-review-list span{color:#57534e}.smart-review-list span{display:block;margin-top:5px;font-family:Georgia,serif}.smart-review-list em{border-radius:8px;background:#fee2e2;color:#991b1b;padding:8px 10px;font-style:normal;font-weight:900;white-space:nowrap}.admin-tabs{display:flex;flex-wrap:wrap;gap:8px}.admin-tabs button{min-height:42px;border:1px solid #ded6c8;border-radius:8px;background:#fffdf8;color:#3f3a34;padding:0 14px;font-weight:850}.admin-tabs button.active{color:#fff;background:#181512;border-color:#181512}.admin-message{border:1px solid #bbf7d0;border-radius:8px;background:#f0fdf4;color:#166534;padding:12px 14px;font-weight:850}.admin-grid{display:grid;grid-template-columns:minmax(280px,360px) minmax(0,1fr);gap:14px;align-items:start}.admin-panel{border:1px solid #e4dccf;border-radius:8px;background:#fffdf8;padding:16px}.admin-panel h3{margin:0 0 12px;font-size:22px}.admin-form{display:grid;gap:10px}.admin-form label{display:grid;gap:6px;color:#57534e;font-weight:850}.admin-form input,.admin-form select{min-height:42px;border:1px solid #d6c8b8;border-radius:8px;background:#fff;color:#1d1914;padding:0 11px;font:inherit}.admin-panel-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px}.admin-panel-head .search-box{max-width:360px;width:100%}.admin-counts{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:12px}.admin-counts span{border-radius:8px;background:#f5efe4;color:#57534e;padding:6px 9px;font-size:12px;font-weight:900}.admin-list,.audio-admin-list{display:grid;gap:8px;max-height:560px;overflow:auto;padding-right:4px}.admin-list article,.audio-admin-list article{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;align-items:center;border:1px solid #eadfd1;border-radius:8px;background:#fffaf0;padding:10px}.audio-admin-list article{grid-template-columns:minmax(0,1fr) auto auto auto}.link-like{border:0;background:transparent;color:inherit;padding:0;display:grid;gap:3px;text-align:left}.link-like strong,.audio-admin-list strong{font-family:Georgia,serif;font-size:20px}.link-like span,.audio-admin-list span,.audio-admin-list small{color:#57534e}.audio-admin-list small{display:block;overflow-wrap:anywhere}.admin-list article>button:last-child,.audio-admin-list article>button{width:36px;height:36px;border:1px solid #ded6c8;border-radius:8px;background:#fffdf8;color:#3f3a34;display:inline-grid;place-items:center}.openai-admin{display:grid;grid-template-columns:minmax(280px,360px) minmax(0,1fr);gap:14px;align-items:start}.image-admin{display:grid;grid-template-columns:minmax(280px,420px) minmax(0,1fr);gap:14px;align-items:start}.openai-status{min-height:42px;border:1px solid #fecaca;border-radius:8px;background:#fff1f2;color:#991b1b;display:flex;align-items:center;padding:0 12px;font-weight:900}.openai-status.ready{border-color:#bbf7d0;background:#f0fdf4;color:#166534}.openai-inline select,.openai-test-text input,.batch-grid input,.batch-grid select{min-height:42px;border:1px solid #d6c8b8;border-radius:8px;background:#fff;color:#1d1914;padding:0 11px;font:inherit}.openai-test-text{display:grid;gap:6px;margin-bottom:12px;color:#57534e;font-weight:850}.voice-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.voice-grid button{min-height:104px;border:1px solid #e4dccf;border-radius:8px;background:#fffaf0;color:#1d1914;display:grid;align-content:start;gap:5px;padding:12px;text-align:left}.voice-grid button.active{border-color:#9333ea;box-shadow:inset 0 0 0 2px #9333ea}.voice-grid strong{font-family:Georgia,serif;font-size:22px}.voice-grid span{color:#57534e;font-weight:800}.voice-grid em{color:#9333ea;font-style:normal;font-weight:900}.batch-panel{grid-column:1 / -1;display:grid;gap:14px}.batch-panel h3,.batch-panel p{margin:0}.batch-panel p{color:#57534e;font-weight:800}.batch-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.batch-grid label{display:grid;gap:6px;color:#57534e;font-weight:850}.batch-grid .check-row{min-height:42px;display:flex;align-items:center;gap:8px;align-self:end}.batch-grid .check-row input{min-height:0;width:18px;height:18px}.batch-progress{border:1px solid #d9ead7;border-radius:8px;background:#f6fff4;padding:12px;display:grid;gap:8px}.batch-progress>div:first-child{display:flex;justify-content:space-between;gap:12px;align-items:baseline}.batch-progress strong{color:#166534;font-size:20px}.batch-progress span,.batch-progress small{color:#3f5f37;font-weight:850}.batch-progress-track{height:10px;border-radius:999px;background:#dcefd9;overflow:hidden}.batch-progress-track span{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,#22c55e,#84cc16);transition:width .18s ease}.image-admin-list{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.image-admin-list article{border:1px solid #eadfd1;border-radius:8px;background:#fffaf0;overflow:hidden;display:grid}.image-admin-list img{width:100%;aspect-ratio:1 / 1;object-fit:cover;background:#f5efe4}.image-admin-list strong,.image-admin-list span{padding:0 10px}.image-admin-list strong{margin-top:8px;font-family:Georgia,serif;font-size:20px}.image-admin-list span{margin:2px 0 10px;color:#57534e;font-weight:800}.compact-heading{margin-top:26px}.compact-heading h2{font-size:28px}.accent-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.accent-grid button{min-height:76px;border:1px solid #ded6c8;border-radius:8px;background:#fffdf8;color:#1d1914;display:grid;align-content:center;gap:4px;padding:12px;text-align:left}.accent-grid button.active{border-color:#181512;background:#181512;color:#fff7ed}.accent-grid strong,.accent-grid span{display:block}.accent-grid span{color:#78716c;font-weight:800}.accent-grid button.active span{color:#f7c948}.category-select-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.category-select-grid button{min-height:72px;border:1px solid #ded6c8;border-radius:8px;background:#fffdf8;color:#1d1914;display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:10px;padding:12px;text-align:left}.category-select-grid button.active{border-color:#181512;box-shadow:inset 0 0 0 2px #181512}.category-select-grid span{width:14px;height:14px;border-radius:99px}.category-select-grid strong{font-weight:900}.category-select-grid em{color:#78716c;font-style:normal;font-weight:800}.modal-backdrop{position:fixed;inset:0;z-index:30;background:#1815128a;display:grid;place-items:center;padding:20px}.completion-dialog{width:min(520px,100%);border-radius:8px;background:#fffaf0;color:#1d1914;padding:28px;text-align:center;box-shadow:0 26px 80px #00000047}.completion-dialog svg{color:#b45309}.completion-dialog h2{margin:12px 0 8px;font-size:30px}.completion-dialog p{color:#57534e;line-height:1.7}.completion-dialog>div{display:flex;justify-content:center;gap:10px;flex-wrap:wrap;margin-top:18px}.typing-view{display:grid;gap:18px}.typing-head{display:block}.typing-score{display:flex;gap:10px}.typing-mode-cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.typing-mode-cards button{min-height:220px;border:1px solid #e4dccf;border-radius:8px;background:#fffaf0;color:#1d1914;padding:22px;display:grid;align-content:start;gap:12px;text-align:left}.typing-mode-cards button:hover{border-color:#b45309;box-shadow:inset 0 0 0 2px #b45309}.typing-mode-cards svg{color:#b45309}.typing-mode-cards strong{font-size:30px}.typing-mode-cards span{color:#57534e;line-height:1.6}.typing-mode-cards em{margin-top:auto;color:#0f766e;display:inline-flex;align-items:center;gap:4px;font-style:normal;font-weight:900}.back-action{width:fit-content;min-height:38px;border:1px solid #ded6c8;border-radius:8px;background:#fffdf8;color:#3f3a34;padding:0 12px;font-weight:850}.typing-mode-row{display:flex;gap:8px;padding:6px;border:1px solid #e4dccf;border-radius:8px;background:#fffaf0;width:fit-content;max-width:100%}.typing-mode-row button{min-height:42px;border:0;border-radius:7px;background:transparent;color:#57534e;padding:0 16px;font-weight:900}.typing-mode-row button.active{background:#181512;color:#fff7ed}.typing-mode-preview{display:grid;grid-template-columns:minmax(0,1fr) 360px;gap:16px;align-items:stretch;border:1px solid #e4dccf;border-radius:8px;background:#fffaf0;padding:20px}.typing-mode-preview span{color:#b45309;font-weight:900}.typing-mode-preview h3{margin:8px 0;font-size:28px}.typing-mode-preview p{margin:0;color:#57534e;line-height:1.7}.typing-preview-lines{border-radius:8px;background:#f5efe4;padding:18px;display:grid;align-content:center;gap:8px}.typing-preview-lines strong{font-family:Georgia,serif;font-size:26px}.typing-preview-lines em{color:#78716c}.practice-setup,.practice-runner,.practice-countdown{border:1px solid #e4dccf;border-radius:8px;background:#fffaf0}.practice-setup{display:grid;grid-template-columns:minmax(0,1fr) 280px;gap:18px;padding:22px;align-items:center}.practice-setup span{color:#b45309;font-weight:900}.practice-setup h3{margin:8px 0;font-size:34px}.practice-setup p{margin:0;color:#57534e;line-height:1.7}.practice-controls{display:grid;gap:12px}.practice-controls label{display:grid;gap:8px;color:#57534e;font-weight:850}.practice-controls input{min-height:46px;border:1px solid #ded6c8;border-radius:8px;background:#fffdf8;padding:0 12px;font-weight:900}.practice-countdown{min-height:360px;display:grid;place-items:center;align-content:center;gap:12px}.practice-countdown strong{font-size:130px;line-height:1;color:#b45309;font-family:Georgia,serif}.practice-countdown span{color:#57534e;font-weight:900}.practice-runner{padding:18px;display:grid;gap:16px}.practice-statbar{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.typing-trainer{display:grid;gap:14px;cursor:text}.trainer-line-meta{display:flex;align-items:center;justify-content:space-between;gap:10px}.trainer-line-meta span{color:#b45309;font-weight:900}.trainer-line-meta div{display:flex;gap:8px}.trainer-line-meta button{min-height:38px;border:1px solid #ded6c8;border-radius:8px;background:#fffdf8;display:inline-flex;align-items:center;gap:7px;padding:0 12px;font-weight:800}.practice-progress{height:12px;border-radius:999px;background:#eadfcb;overflow:hidden}.practice-progress span{display:block;height:100%;border-radius:inherit;background:#16a34a;transition:width .24s ease}.typing-ghost{min-height:124px;border-radius:8px;background:#181512;color:#fff7ed;padding:24px;font-family:SF Mono,Menlo,Consolas,monospace;font-size:clamp(28px,4vw,52px);line-height:1.45;letter-spacing:0;overflow-wrap:anywhere;box-shadow:inset 0 0 0 1px #fff7ed14}.typing-ghost span{border-radius:6px;padding:0 1px;border-bottom:4px solid transparent}.typing-ghost span.right{color:#86efac;background:#16a34a2e}.typing-ghost span.wrong{color:#fecaca;background:#dc262675;animation:keyShake .12s linear 2}.typing-ghost span.pending{color:#d6c8b8}.typing-ghost span.active{color:#fff7ed;border-bottom-color:#f7c948;background:#f7c94829}.typing-trainer p{margin:0;color:#57534e;font-size:18px;font-weight:800}.next-key-panel{min-height:58px;border:1px solid #eadfcb;border-radius:8px;background:#fff8e7;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 14px}.next-key-panel span{color:#78716c;font-weight:850}.next-key-panel strong{font-family:SF Mono,Menlo,Consolas,monospace;font-size:28px}.typing-capture-input{min-height:44px;border:1px dashed #ded6c8;border-radius:8px;background:#fffaf0;color:transparent;caret-color:#b45309;padding:0 14px;font-size:16px;font-weight:850;outline:none}.typing-capture-input::placeholder{color:#78716c;opacity:1}.typing-capture-input:focus{border-color:#b45309;background:#fff8e7}.practice-line-list{display:grid;gap:8px}.practice-line-list button{min-height:46px;border:1px solid #e4dccf;border-radius:8px;background:#fffdf8;color:#57534e;display:grid;grid-template-columns:34px 1fr;align-items:center;gap:10px;padding:8px 10px;text-align:left}.practice-line-list span{width:28px;height:28px;border-radius:999px;background:#f5efe4;color:#57534e;display:grid;place-items:center;font-weight:900}.practice-line-list strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.practice-line-list button.active{border-color:#b45309;box-shadow:inset 0 0 0 2px #b45309}.practice-line-list button.done span{background:#dcfce7;color:#166534}.practice-result-list{max-height:220px;overflow:auto;display:grid;gap:8px;margin:14px auto;max-width:720px}.practice-result-list>span,.practice-result-list article{border:1px solid #e4dccf;border-radius:8px;background:#fffdf8;padding:10px 12px;text-align:left}.practice-result-list strong,.practice-result-list small,.practice-result-list em{display:block}.practice-result-list small{color:#78716c;margin-top:4px}.practice-result-list em{color:#b45309;margin-top:4px;font-style:normal;font-weight:900}@keyframes keyShake{0%,to{transform:translate(0)}50%{transform:translate(3px)}}.theme-row{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px}.theme-row button{min-height:76px;border:1px solid #e4dccf;border-radius:8px;background:#fffaf0;color:#1d1914;display:grid;align-content:center;gap:4px;padding:10px;text-align:left}.theme-row button.active{border-color:var(--theme);box-shadow:inset 0 0 0 2px var(--theme)}.theme-row strong,.theme-row span{display:block}.theme-row span{color:#78716c;font-size:13px}.adventure-stage{overflow:hidden;border:1px solid #d8cfc0;border-radius:8px;background:#fffaf0}.sky-band{position:relative;height:180px;background:linear-gradient(#a7d8ff,#dff5ff 68%,#93c572 68%)}.cloud{position:absolute;width:86px;height:28px;border-radius:999px;background:#ffffffdb}.cloud:before,.cloud:after{content:"";position:absolute;border-radius:999px;background:inherit}.cloud:before{width:36px;height:36px;left:14px;top:-14px}.cloud:after{width:42px;height:42px;right:10px;top:-20px}.cloud-a{left:9%;top:34px}.cloud-b{right:14%;top:54px;transform:scale(.82)}.runner{position:absolute;bottom:36px;width:44px;height:54px;border-radius:8px 8px 6px 6px;background:#c2410c;transform:translate(-50%);transition:left .35s ease;box-shadow:inset 0 -10px #7c2d12}.runner:before{content:"";position:absolute;left:9px;top:-22px;width:26px;height:26px;border-radius:99px;background:#fed7aa;box-shadow:0 -8px #b45309}.runner span{position:absolute;left:10px;bottom:-10px;width:24px;height:10px;border-radius:0 0 6px 6px;background:#1d1914}.finish-flag{position:absolute;right:24px;bottom:40px;width:44px;height:66px;display:grid;place-items:start center;color:var(--theme);border-left:4px solid #1d1914}.brick-road{display:grid;grid-template-columns:repeat(10,1fr);gap:4px;padding:8px;background:#7c2d12}.brick-road span{min-height:38px;border-radius:6px;background:#b45309;color:#fff7ed;display:grid;place-items:center;font-weight:900}.brick-road span.done{background:#16a34a}.brick-road span.current{background:#f7c948;color:#181512}.typing-play{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:16px}.challenge-card,.typing-help,.typing-finish{border:1px solid #e4dccf;border-radius:8px;background:#fffaf0;padding:18px}.challenge-top{display:flex;justify-content:space-between;gap:10px;align-items:center}.challenge-top span{color:#b45309;font-weight:900}.challenge-top button{min-height:38px;border:1px solid #ded6c8;border-radius:8px;background:#fffdf8;display:inline-flex;align-items:center;gap:7px;padding:0 12px;font-weight:800}.challenge-card h3{margin:18px 0 8px;font-family:Georgia,serif;font-size:clamp(34px,5vw,64px);line-height:1.08}.challenge-card p,.typing-help p{color:#57534e}.challenge-card form{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;margin-top:16px}.challenge-card input{min-height:52px;border:2px solid #ded6c8;border-radius:8px;background:#fffdf8;color:#1d1914;padding:0 14px;outline:none;font-size:20px;font-weight:800}.challenge-card input:focus{border-color:#b45309}.typing-feedback{margin-top:12px;padding:10px 12px;border-radius:8px;font-weight:850}.typing-feedback.good{background:#dcfce7;color:#166534}.typing-feedback.bad{background:#fee2e2;color:#991b1b}.typing-help h3,.typing-finish h3{margin:0 0 8px;font-size:24px}.typing-target{margin-top:16px;padding:14px;border-radius:8px;background:#f5efe4;font-family:Georgia,serif;font-size:26px;line-height:1.4;overflow-wrap:anywhere}.typing-finish{text-align:center}.typing-finish p{color:#57534e;font-weight:800}.typing-finish>div{display:flex;justify-content:center;gap:10px;flex-wrap:wrap}.secondary-action{min-height:48px;border:1px solid #ded6c8;border-radius:8px;padding:0 18px;background:#fffdf8;color:#3f3a34;font-weight:800}@media(max-width:900px){.auth-page{grid-template-columns:1fr}.auth-visual{min-height:48vh}.auth-panel{margin:0;border-radius:0}.app-shell{grid-template-columns:1fr}.sidebar{position:fixed;inset:auto 0 0;height:auto;z-index:10;padding:8px}.brand-block,.profile-chip{display:none}.sidebar nav{grid-template-columns:repeat(6,1fr)}.nav-button{height:54px;justify-content:center;flex-direction:column;gap:3px;font-size:12px}main{padding:18px 14px 88px}.topbar{display:block}.metric-strip{margin-top:14px;display:grid;grid-template-columns:repeat(3,1fr)}.page-title{display:grid;align-items:start;min-height:0;padding:18px}.page-title-main{align-items:flex-start}.page-title-icon{width:48px;height:48px}.page-title h2{font-size:34px}.page-title-extra{width:100%;display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}.metric{min-width:0}.learn-grid{grid-template-columns:1fr}.typing-head,.typing-play,.typing-mode-preview,.practice-setup{display:grid;grid-template-columns:1fr}.typing-score,.theme-row,.typing-mode-cards{grid-template-columns:repeat(2,1fr);display:grid}.practice-statbar{grid-template-columns:1fr}.sky-band{height:150px}.motivation-panel{display:none}.rank-row{grid-template-columns:32px 40px minmax(0,1fr)}.rank-row>span{grid-column:3}.review-cards,.review-row,.progress-summary,.admin-grid,.openai-admin,.image-admin,.batch-grid{grid-template-columns:1fr}.calendar-grid{grid-template-columns:repeat(5,minmax(0,1fr))}.smart-review-list article,.admin-panel-head{display:grid;grid-template-columns:1fr}.smart-review-list em{justify-self:start}.review-actions{justify-content:flex-start}.recorder-panel{grid-template-columns:auto auto auto auto 1fr}}@media(max-width:520px){.auth-visual{padding:28px 32px}.auth-visual h1{max-width:100%;font-size:34px;line-height:1.08;overflow-wrap:anywhere;word-break:break-all}.auth-visual p{font-size:16px;overflow-wrap:anywhere}.word-cloud{gap:8px}.word-cloud span{padding:7px 10px}.recorder-panel{grid-template-columns:repeat(3,auto)}.category-select-grid,.accent-grid{grid-template-columns:1fr}.calendar-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.audio-admin-list article{grid-template-columns:1fr repeat(3,auto)}.voice-grid{grid-template-columns:1fr}.image-admin-list{grid-template-columns:repeat(2,minmax(0,1fr))}.typing-mode-cards{grid-template-columns:1fr}.typing-mode-cards button{min-height:170px}.typing-ghost{font-size:28px}.recorder-label,.waveform{grid-column:1 / -1}}
