:root{font-family:Inter,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;line-height:1.5;font-weight:400;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:var(--tg-theme-text-color, #0b0b0d);background-color:var(--tg-theme-bg-color, #ffffff)}*,*:before,*:after{box-sizing:border-box}body{margin:0;min-height:100vh;background:var(--tg-theme-bg-color, #ffffff)}a{color:inherit;text-decoration:none}#app{min-height:100vh}.app-shell{display:flex;flex-direction:column;min-height:100vh}.app-content{flex:1;padding:16px 16px calc(72px + env(safe-area-inset-bottom))}.page{display:flex;flex-direction:column;gap:16px}.page h1{margin:0;font-size:22px;font-weight:600}.page p{margin:0;color:var(--tg-theme-hint-color, #6b7280)}.card{border-radius:14px;padding:16px;background:var(--tg-theme-secondary-bg-color, #f4f5f7);border:1px solid rgba(15,23,42,.08)}.primary-button{border:none;border-radius:12px;padding:12px 16px;font-size:14px;font-weight:600;color:var(--tg-theme-button-text-color, #ffffff);background:var(--tg-theme-button-color, #2f80ed);cursor:pointer}.primary-button:disabled{opacity:.6;cursor:not-allowed}.secondary-button{border:1px solid rgba(15,23,42,.16);border-radius:12px;padding:10px 14px;font-size:13px;font-weight:600;background:transparent;color:var(--tg-theme-text-color, #0b0b0d);cursor:pointer}.danger-button{border:none;border-radius:12px;padding:12px 16px;font-size:14px;font-weight:600;color:#fff;background:#e65353;cursor:pointer}.danger-button:disabled{opacity:.6;cursor:not-allowed}.bottom-nav{position:fixed;left:0;right:0;bottom:0;display:grid;grid-template-columns:repeat(4,1fr);gap:6px;padding:10px 12px calc(10px + env(safe-area-inset-bottom));background:var(--tg-theme-secondary-bg-color, #ffffff);border-top:1px solid rgba(15,23,42,.1);z-index:10}.nav-item{display:flex;flex-direction:column;align-items:center;gap:2px;font-size:11px;font-weight:600;color:var(--tg-theme-hint-color, #6b7280);padding:6px 4px;border-radius:10px}.nav-icon{font-size:19px;line-height:1}.router-link-active.nav-item{color:var(--tg-theme-button-color, #2f80ed);background:#2f80ed1f}.form{display:flex;flex-direction:column;gap:12px;margin:12px 0}.field{display:flex;flex-direction:column;gap:6px;font-size:13px}.field span{color:var(--tg-theme-hint-color, #6b7280)}.field input{border-radius:10px;border:1px solid rgba(15,23,42,.12);padding:10px 12px;font-size:14px;background:var(--tg-theme-bg-color, #ffffff);color:var(--tg-theme-text-color, #0b0b0d)}.field textarea{border-radius:10px;border:1px solid rgba(15,23,42,.12);padding:10px 12px;font-size:14px;background:var(--tg-theme-bg-color, #ffffff);color:var(--tg-theme-text-color, #0b0b0d);resize:vertical}.toggle{display:flex;align-items:center;gap:8px;font-size:14px}.task-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:8px}.checkbox{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--tg-theme-text-color, #0b0b0d)}.hint{font-size:12px;color:var(--tg-theme-hint-color, #6b7280)}.badge{display:inline-flex;align-items:center;padding:2px 8px;border-radius:999px;font-size:11px;background:#2f80ed1f;color:var(--tg-theme-button-color, #2f80ed)}.select{border-radius:10px;border:1px solid rgba(15,23,42,.12);padding:6px 10px;font-size:12px;background:var(--tg-theme-bg-color, #ffffff);color:var(--tg-theme-text-color, #0b0b0d)}.stats-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:12px}.heatmap-grid{display:grid;grid-template-columns:repeat(10,1fr);gap:6px;margin-top:12px}.heatmap-cell{width:100%;padding-bottom:100%;border-radius:6px;background:#f1f5f9}.heatmap-cell.level-1{background:#c6f6d5}.heatmap-cell.level-2{background:#68d391}.heatmap-cell.level-3{background:#38a169}.heatmap-cell.level-4{background:#276749}.tag-list{display:flex;flex-direction:column;gap:8px;margin-top:12px}.tag-row{display:flex;flex-direction:column;gap:4px;font-size:14px}.tag-row-header{display:flex;justify-content:space-between;align-items:baseline}.deck-section{display:flex;flex-direction:column;gap:12px}.section-title{font-size:14px;color:var(--tg-theme-hint-color, #6b7280)}.deck-list,.word-list{display:flex;flex-direction:column;gap:12px}.deck-card,.word-card{border-radius:14px;padding:14px;border:1px solid rgba(15,23,42,.08);background:var(--tg-theme-secondary-bg-color, #f7f8fa)}.deck-card{display:flex;flex-direction:column;gap:0}.word-card{display:flex;justify-content:space-between;gap:12px}.deck-card h2,.word-card h3{margin:0;font-size:16px}.inline-actions{display:flex;gap:8px;align-items:center}.session-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.word-focus h2{margin:0 0 8px;font-size:24px}.rating-actions{display:flex;gap:12px;margin-top:12px}.card-answer{margin-top:12px}.choice-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.audio-prompt{display:flex;align-items:center;gap:8px;margin-top:8px}.prompt-stack{display:flex;flex-direction:column;gap:10px}.prompt-image{width:100%;max-height:220px;object-fit:contain;border-radius:12px;border:1px solid rgba(15,23,42,.08)}.choice-option{display:flex;flex-direction:column;gap:6px}.choice-row{display:flex;align-items:center;gap:8px}.choice-select{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--tg-theme-hint-color, #6b7280)}.result-correct{border:1px solid rgba(16,185,129,.4);background:#10b98114}.result-wrong{border:1px solid rgba(239,68,68,.35);background:#ef444414}.phrase-list{padding-left:18px;margin:8px 0 0;color:var(--tg-theme-text-color, #0b0b0d)}.media-image{width:100%;max-height:240px;object-fit:cover;border-radius:12px;margin-top:8px}.media-video{width:100%;margin-top:8px;border-radius:12px}.media-audio{display:flex;flex-direction:column;gap:6px;margin-top:8px}.share-user-form{display:flex;flex-direction:column;gap:10px;margin-top:12px;padding-top:12px;border-top:1px solid rgba(15,23,42,.08)}.progress-bar{height:5px;border-radius:99px;background:#0f172a14;overflow:hidden;margin-top:8px}.progress-fill{height:100%;border-radius:99px;background:var(--tg-theme-button-color, #2f80ed);transition:width .35s ease}.result-header{display:flex;align-items:center;gap:10px}.result-icon{display:flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:50%;font-size:17px;font-weight:700;flex-shrink:0}.result-icon-correct{background:#10b98126;color:#059669}.result-icon-wrong{background:#ef44441f;color:#dc2626}.result-actions{display:flex;align-items:center;justify-content:space-between;margin-top:16px}.task-label{font-size:12px;font-weight:500;text-transform:uppercase;letter-spacing:.04em}.empty-session{display:flex;flex-direction:column;align-items:center;text-align:center;gap:6px;padding:8px 0}.empty-session-icon{width:48px;height:48px;border-radius:50%;background:#10b9811f;color:#059669;display:flex;align-items:center;justify-content:center;font-size:24px;font-weight:700;margin-bottom:4px}.next-due-hint{font-size:13px;color:var(--tg-theme-button-color, #2f80ed)!important}.complete-header{display:flex;flex-direction:column;align-items:center;text-align:center;gap:6px;padding-bottom:8px}.complete-icon{font-size:36px;line-height:1}.session-summary{display:flex;align-items:center;justify-content:center;gap:20px;padding:12px 0;border-top:1px solid rgba(15,23,42,.06);border-bottom:1px solid rgba(15,23,42,.06);margin-top:8px}.summary-item{display:flex;flex-direction:column;align-items:center;gap:2px}.summary-divider{width:1px;height:32px;background:#0f172a1a}.summary-count{font-size:28px;font-weight:700;line-height:1}.correct-count{color:#059669}.wrong-count{color:#dc2626}.stat-cell{display:flex;flex-direction:column;gap:2px}.goal-met{color:#059669}.tag-stats{display:flex;gap:6px;align-items:center}.heatmap-legend{display:flex;align-items:center;gap:4px;margin-top:10px}.legend-cell{width:13px!important;height:13px;padding-bottom:0!important;border-radius:3px;flex-shrink:0}.empty-words{display:flex;flex-direction:column;gap:4px;padding:4px 0}.study-cta{background:#2f80ed12;border-color:#2f80ed38}.study-cta-content{display:flex;align-items:center;justify-content:space-between;gap:12px}.study-cta-content p{margin-top:2px}.caught-up-row{display:flex;align-items:center;gap:10px}.caught-up-icon{display:flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:50%;background:#10b9811f;color:#059669;font-size:16px;font-weight:700;flex-shrink:0}.deck-card-body{display:flex;justify-content:space-between;align-items:flex-start;gap:10px}.deck-card-info{flex:1;min-width:0}.deck-card-aside{flex-shrink:0;padding-top:2px}.due-badge{display:inline-flex;align-items:center;justify-content:center;min-width:24px;height:24px;padding:0 6px;border-radius:999px;font-size:12px;font-weight:700;background:#ef4444;color:#fff}.new-badge{display:inline-flex;align-items:center;padding:2px 8px;border-radius:999px;font-size:11px;font-weight:700;background:#2f80ed1f;color:var(--tg-theme-button-color, #2f80ed)}.session-controls{margin-top:12px;display:flex;flex-direction:column;gap:10px}.session-length-row{display:flex;align-items:center;justify-content:space-between;gap:8px}.length-buttons{display:flex;gap:4px}.length-btn{padding:4px 12px;border:1px solid var(--tg-theme-hint-color, #aaa);border-radius:8px;background:transparent;color:var(--tg-theme-text-color, #0b0b0d);font-size:13px;cursor:pointer;transition:background .15s,color .15s}.length-btn.active{background:var(--tg-theme-button-color, #2f80ed);color:var(--tg-theme-button-text-color, #fff);border-color:var(--tg-theme-button-color, #2f80ed)}.review-only-toggle{display:flex;align-items:center;gap:8px;cursor:pointer;-webkit-user-select:none;user-select:none}.review-only-toggle input[type=checkbox]{width:16px;height:16px;accent-color:var(--tg-theme-button-color, #2f80ed);cursor:pointer}.session-start-actions{display:flex;gap:8px;margin-top:12px;flex-wrap:wrap}.weakest-list{display:flex;flex-direction:column;gap:8px}.weakest-row{display:flex;align-items:center;justify-content:space-between;gap:8px}.weakest-word{font-size:14px;flex:1;min-width:0}.weakest-term{font-weight:600}.weakest-translation{color:var(--tg-theme-hint-color, #888)}.weakest-rate{font-size:13px;font-weight:700;white-space:nowrap}.rate-bad{color:#ef4444}.rate-ok{color:#f59e0b}.choice-tap-btn{display:flex;align-items:center;gap:10px;width:100%;padding:12px 14px;border:1.5px solid var(--tg-theme-hint-color, #d1d5db);border-radius:10px;background:var(--tg-theme-bg-color, #fff);color:var(--tg-theme-text-color, #0b0b0d);font-size:15px;text-align:left;cursor:pointer;transition:background .12s,border-color .12s;margin-bottom:8px}.choice-tap-btn:active,.choice-tap-btn.selected{background:var(--tg-theme-button-color, #2f80ed);color:var(--tg-theme-button-text-color, #fff);border-color:var(--tg-theme-button-color, #2f80ed)}.choice-tap-btn:disabled{opacity:.5;cursor:not-allowed}.choice-badge{flex-shrink:0;width:22px;height:22px;border-radius:50%;background:#00000012;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:600}.result-next-btn{width:100%;margin-top:14px}.word-card-header{display:flex;align-items:center;gap:8px;margin-bottom:2px}.mastery-dots{display:flex;gap:4px;flex-shrink:0}.mastery-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}.mastery-dot--mastered{background:#27ae60}.mastery-dot--learning{background:#f39c12}.mastery-dot--new{background:var(--tg-theme-hint-color, #d1d5db);opacity:.4}.review-history{display:flex;flex-direction:column;gap:4px}.review-row{display:flex;align-items:center;gap:10px;padding:4px 0;border-bottom:1px solid var(--tg-theme-secondary-bg-color, #f3f4f6)}.review-row:last-child{border-bottom:none}.review-rating{font-weight:700;font-size:1rem;width:18px;text-align:center;flex-shrink:0}.review-correct{color:#27ae60}.review-wrong{color:#e74c3c}.review-tag{flex:1}.review-date{font-size:.75rem;white-space:nowrap}.cram-btn{background:transparent;border:1px solid var(--tg-theme-button-color, #2481cc);color:var(--tg-theme-button-color, #2481cc);border-radius:8px;padding:8px 14px;font-size:.875rem;cursor:pointer;transition:background .15s}.cram-btn:hover{background:#2481cc14}.xp-row{display:flex;align-items:center;gap:8px;margin-top:8px}.xp-label{font-size:.8rem;white-space:nowrap}.xp-bar{flex:1;height:6px;border-radius:3px;background:var(--tg-theme-secondary-bg-color, #f3f4f6);overflow:hidden}.xp-fill{height:100%;border-radius:3px;background:#8e44ad;transition:width .4s}.match-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:12px}.match-cell{background:var(--tg-theme-secondary-bg-color, #f3f4f6);border-radius:10px;padding:14px 10px;text-align:center;cursor:pointer;border:2px solid transparent;transition:border-color .15s,background .15s;min-height:52px;display:flex;align-items:center;justify-content:center;word-break:break-word;font-size:.95rem}.match-cell.selected{border-color:var(--tg-theme-button-color, #2481cc);background:#2481cc1a}.match-cell.matched{border-color:#27ae60;background:#27ae601f;opacity:.6;pointer-events:none}.match-cell.wrong{border-color:#e74c3c;background:#e74c3c1a}.match-score{font-size:1.2rem;font-weight:700;margin-top:8px;text-align:center}.deck-actions{display:flex;gap:10px;margin-top:12px;flex-wrap:wrap}.cram-btn{flex:1;padding:10px 16px;border-radius:10px;border:1.5px solid var(--tg-theme-button-color, #2481cc);background:transparent;color:var(--tg-theme-button-color, #2481cc);font-size:.95rem;font-weight:600;cursor:pointer;transition:background .15s,color .15s}.cram-btn:active{background:var(--tg-theme-button-color, #2481cc);color:#fff}.deck-actions .primary-button{flex:1}.match-grid>div{display:flex;flex-direction:column;gap:8px}
