.speaking-dialog-mode,.dialog-main-area{display:flex;flex-direction:column;gap:1rem}.dialog-feedback-card{position:relative;background:#fff;border-radius:12px;padding:1.5rem;box-shadow:0 2px 8px #00000014;overflow-y:auto;animation:cardFadeIn .3s ease-out}@keyframes cardFadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.feedback-card-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem}.feedback-mode-badge .pill{padding:.25rem .75rem;border-radius:12px;font-size:.875rem;font-weight:500;transition:all .3s ease;animation:badgeFadeIn .3s ease-out}@keyframes badgeFadeIn{0%{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}.pill.evaluated{background:#e3f2fd;color:#1976d2}.pill.draft{background:#fff3e0;color:#f57c00}.pill.neutral{background:#f5f5f5;color:#666}.refresh-btn-small{padding:.4rem .9rem;background:#f5f5f5;border:none;border-radius:8px;cursor:pointer;font-size:.875rem;transition:all .2s ease}.refresh-btn-small:hover{background:#e0e0e0;transform:rotate(180deg)}.refresh-btn-small:active{transform:rotate(180deg) scale(.9)}.feedback-content-section,.feedback-thinking-section,.feedback-audio-section,.feedback-better-section,.feedback-score-matrix{margin-bottom:.75rem;animation:contentSlideIn .4s ease-out}@keyframes contentSlideIn{0%{opacity:0;transform:translate(-10px)}to{opacity:1;transform:translate(0)}}.section-label-mini{font-size:.75rem;color:#666;font-weight:500;margin-bottom:.25rem}.feedback-text{line-height:1.6;color:#333;font-size:16px}.feedback-summary{line-height:1.5;color:#555;font-size:.9rem;margin-bottom:.5rem}.thinking-angles{display:flex;flex-wrap:wrap;gap:.4rem}.angle-chip{padding:.2rem .6rem;background:#f0f0f0;border-radius:8px;font-size:.8rem;color:#555}.feedback-angles-list{display:flex;flex-direction:column;gap:8px;margin-top:12px}.angle-tag.clickable{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;background:#fff;border:2px solid #000;border-radius:0;font-size:15px;color:#000;cursor:pointer;font-weight:600;text-align:left}.angle-tag.clickable:after{content:"→";font-size:16px;color:#666;margin-left:8px}.angle-tag.clickable:hover:not(:disabled){background:#7ec8e3}.angle-tag.clickable.loading{opacity:.6;cursor:wait}.angle-tag.clickable:disabled{opacity:.5;cursor:default}.angle-detail{border:2px solid #000;background:#fafafa}.angle-detail-header{display:flex;align-items:center;gap:12px;padding:12px 16px;border-bottom:2px solid #000;background:#fff}.angle-back-btn{padding:8px 14px;background:#f5f5f5;border:2px solid #000;border-radius:0;font-size:16px;cursor:pointer;font-weight:700}.angle-back-btn:active{background:#7ec8e3}.angle-detail-title{font-size:15px;font-weight:700;color:#000;flex:1}.angle-detail-body{padding:14px;max-height:calc(100vh - 380px);overflow-y:auto;-webkit-overflow-scrolling:touch}.expansion-section{margin-bottom:14px}.expansion-section:last-child{margin-bottom:0}.expansion-label{font-size:12px;color:#555;font-weight:700;text-transform:uppercase;margin-bottom:8px;display:block}.expansion-items.phrases{display:flex;flex-wrap:wrap;gap:8px}.phrase-chip{padding:8px 12px;background:#ffd500;border:2px solid #000;border-radius:0;font-size:14px;color:#000;font-weight:600}.expansion-items.sentences{display:flex;flex-direction:column;gap:8px}.sentence-item{font-size:14px;color:#000;line-height:1.5;padding:10px 12px;background:#fff;border:2px solid #000;border-radius:0;margin:0}.play-btn-mini{padding:.4rem .8rem;background:#4caf50;color:#fff;border:none;border-radius:8px;cursor:pointer;font-size:.85rem;transition:all .2s ease}.play-btn-mini:hover{background:#45a049;transform:scale(1.05);box-shadow:0 2px 6px #4caf504d}.play-btn-mini:active{transform:scale(.98)}.play-btn-mini.primary{background:#1976d2}.play-btn-mini.primary:hover{background:#1565c0;box-shadow:0 2px 6px #1976d24d}.feedback-score-matrix{display:flex;flex-direction:column;gap:.5rem;padding:.75rem;background:#f9f9f9;border-radius:8px}.score-row{display:flex;justify-content:space-between;align-items:center;padding:.3rem 0}.score-label{font-size:.85rem;color:#666;font-weight:500}.score-value{font-size:.85rem;color:#333}.history-indicator-right{position:absolute;right:.75rem;top:50%;transform:translateY(-50%);display:flex;flex-direction:column;align-items:center;gap:.4rem}.indicator-dots{display:flex;flex-direction:column;gap:.3rem}.indicator-dot{width:6px;height:6px;border-radius:50%;background:#ddd;transition:all .2s ease}.indicator-dot:hover{background:#999;transform:scale(1.3)}.indicator-dot.active{background:#1976d2;width:8px;height:8px}.indicator-dot.active:hover{transform:scale(1.2)}.indicator-text{font-size:.7rem;color:#666;writing-mode:vertical-rl}.dialog-input-bar{background:#fff;padding:1rem;border-radius:12px;box-shadow:0 2px 8px #00000014}.input-row-flex{display:flex;gap:.75rem;align-items:stretch}.dialog-input-text{flex:1;padding:.6rem;border:1px solid #ddd;border-radius:8px;font-size:.95rem;resize:none;font-family:inherit;min-height:60px;transition:border-color .2s ease,background-color .2s ease}.input-actions-vertical{display:flex;flex-direction:column;gap:.5rem;justify-content:center}.dialog-input-text:focus{outline:none;border-color:#1976d2}.dialog-input-text:disabled{background:#f5f5f5;opacity:.6}.record-circle-btn{width:40px;height:40px;min-width:40px;border-radius:50%;border:none;background:#f5f5f5;cursor:pointer;font-size:1.2rem;display:flex;align-items:center;justify-content:center;flex-shrink:0;user-select:none;-webkit-user-select:none;transition:all .2s ease}.record-circle-btn:hover:not(:disabled){background:#e0e0e0;transform:scale(1.05)}.record-circle-btn:active:not(:disabled){transform:scale(.95)}.record-circle-btn.recording{background:#f44336;color:#fff;font-size:.8rem;animation:pulse 1s infinite}.record-circle-btn:disabled{opacity:.4;cursor:not-allowed}.send-btn{padding:.5rem 1rem;background:#1976d2;color:#fff;border:none;border-radius:8px;cursor:pointer;font-weight:500;font-size:.875rem;min-width:80px;flex-shrink:0;transition:all .2s ease}.send-btn:hover:not(:disabled){background:#1565c0;transform:translateY(-1px);box-shadow:0 2px 8px #1976d24d}.send-btn:active:not(:disabled){transform:translateY(0)}.send-btn:disabled{background:#ccc;cursor:not-allowed}.final-record-btn{padding:.5rem .8rem;background:#f57c00;color:#fff;border:none;border-radius:8px;cursor:pointer;font-weight:500;font-size:.875rem;min-width:80px;flex-shrink:0;transition:all .2s ease}.final-record-btn:hover:not(:disabled){background:#ef6c00;transform:translateY(-1px);box-shadow:0 2px 8px #f57c004d}.final-record-btn:active:not(:disabled){transform:translateY(0)}.final-record-btn.recording{background:#f44336;animation:pulse 1s infinite}.final-record-btn:disabled{background:#ccc;cursor:not-allowed;opacity:.5}.inline-messages{display:flex;gap:.5rem;flex-wrap:wrap;margin-bottom:.5rem}.msg-chip{padding:.2rem .6rem;border-radius:8px;font-size:.75rem}.msg-chip.info{background:#e3f2fd;color:#1976d2}.msg-chip.warn{background:#fff3e0;color:#f57c00}.msg-chip.error{background:#ffebee;color:#d32f2f}.feedback-guide{padding:1rem}.guide-title{font-size:14px;font-weight:700;color:#333;margin:0 0 12px;text-align:center}.guide-steps{display:flex;flex-direction:column;gap:12px}.guide-step{display:flex;align-items:flex-start;gap:12px}.guide-icon{display:flex;align-items:center;justify-content:center;width:36px;height:36px;background:#f5f5f5;border:2px solid #000;border-radius:8px;font-size:16px;flex-shrink:0}.guide-icon.primary{background:#00d4aa;font-weight:700}.guide-icon.record{background:#ff6b6b;color:#fff}.guide-text{font-size:14px;color:#555;line-height:1.5;padding-top:6px}@media (min-width: 768px){.speaking-dialog-mode{max-width:800px;margin:0 auto}}.example-answer-section{display:flex;flex-direction:column;gap:16px;margin-top:12px}.example-answer{display:flex;flex-direction:column;gap:8px}.example-answer .label{font-size:12px;color:#555;font-weight:700;text-transform:uppercase}.example-answer p{font-size:15px;color:#000;line-height:1.6;margin:0;padding:12px;background:#fff;border:2px solid #000}.phrases-section{display:flex;flex-direction:column;gap:8px}.phrases-section .label{font-size:12px;color:#555;font-weight:700;text-transform:uppercase}.phrases-list{display:flex;flex-wrap:wrap;gap:8px}.phrases-list .phrase-chip{padding:8px 12px;background:#ffd500;border:2px solid #000;border-radius:0;font-size:14px;color:#000;font-weight:600}.translation-practice{display:flex;flex-direction:column;gap:16px;padding:16px;flex:1;overflow-y:auto}.translation-question-block{padding:20px;border:2px solid var(--border-color);background:var(--bg-card)}.translation-question{font-size:18px;font-weight:600;line-height:1.6;margin:0 0 16px}.translation-keywords{display:flex;flex-wrap:wrap;gap:8px}.translation-keyword{padding:6px 12px;font-size:12px;font-weight:700;text-transform:uppercase;background:var(--bg-page);border:1px solid var(--border-color);color:var(--text-secondary)}.argument-label{font-size:11px;font-weight:700;text-transform:uppercase;color:var(--text-secondary);margin:0 0 8px;letter-spacing:.05em}.argument-points-block{padding:16px;background:var(--bg-page);border:1px dashed var(--border-color)}.translation-input-section{display:flex;flex-direction:column;gap:8px}.translation-input-row{display:flex;gap:8px;align-items:stretch}.translation-textarea{flex:1;padding:12px;border:2px solid var(--border-color);background:var(--bg-input);font-size:14px;font-family:inherit;line-height:1.5;resize:none}.translation-textarea:focus{outline:none;border-color:var(--accent-cyan)}.translation-textarea:disabled{background:var(--bg-page);color:var(--text-secondary)}.translation-submit-btn{padding:12px 20px;background:var(--accent-cyan);border:2px solid var(--border-color);font-size:14px;font-weight:700;cursor:pointer;white-space:nowrap}.translation-submit-btn:disabled{opacity:.4;cursor:not-allowed}.translation-loading{display:flex;flex-direction:column;align-items:center;gap:12px;padding:24px;color:var(--text-secondary)}.translation-loading p{margin:0;font-size:13px}.translation-result{display:flex;flex-direction:column;gap:12px;padding:16px;border:2px solid var(--border-color);background:var(--bg-card)}.translation-score-row{display:flex;align-items:center;gap:12px}.translation-score-bar{flex:1;height:6px;background:var(--bg-page);border:1px solid var(--border-color)}.translation-score-fill{height:100%;background:var(--accent-cyan);transition:width .3s ease}.translation-score-value{font-size:24px;font-weight:900;min-width:48px;text-align:right}.translation-feedback{padding-top:12px;border-top:1px solid var(--border-color)}.translation-feedback-text{margin:0 0 8px;font-size:14px;line-height:1.6}.translation-keywords-used{margin:0;font-size:12px;color:var(--text-secondary)}.translation-corrections{padding:12px;background:var(--accent-yellow);border:1px solid var(--border-color)}.translation-corrections-label{margin:0 0 4px;font-size:11px;font-weight:700;text-transform:uppercase}.translation-corrections-text{margin:0;font-size:13px;line-height:1.5}.translation-toggle-btn{align-self:flex-start;padding:8px 16px;background:var(--bg-page);border:2px solid var(--border-color);font-size:13px;font-weight:700;cursor:pointer}.translation-toggle-btn:hover{background:var(--bg-card)}.translation-reference{padding:12px;background:var(--bg-page);border:1px solid var(--border-color)}.translation-reference-label{margin:0 0 6px;font-size:11px;font-weight:700;text-transform:uppercase;color:var(--text-secondary)}.translation-reference-text{margin:0;font-size:14px;line-height:1.6}.goal-page{min-height:100vh;background:var(--bg-page);color:var(--text-primary)}.goal-page.loading{display:flex;align-items:center;justify-content:center}.goal-header{display:flex;align-items:center;gap:16px;padding:16px;border-bottom:2px solid var(--border-color);position:sticky;top:0;background:var(--bg-page);z-index:10}.goal-header h1{font-size:18px;font-weight:700;text-transform:uppercase;margin:0}.back-btn{background:var(--bg-card);border:2px solid var(--border-color);border-radius:0;color:var(--text-primary);font-size:14px;font-weight:700;cursor:pointer;padding:8px 12px}.back-btn:hover{background:var(--accent-cyan);color:#000}.goal-content{padding:16px 16px 120px;max-width:800px;margin:0 auto}.goal-section h2{font-size:12px;font-weight:700;color:var(--text-secondary);margin:0 0 12px;text-transform:uppercase;letter-spacing:1px}.goal-card{background:var(--bg-card);border:2px solid var(--border-color);border-radius:0;padding:16px;margin-bottom:12px}@media (min-width: 768px){.goal-card{box-shadow:4px 4px 0 var(--shadow-color)}}.date-row{display:flex;align-items:center;gap:16px}.date-row input[type=date]{background:var(--bg-card);border:2px solid var(--border-color);border-radius:0;padding:10px 14px;color:var(--text-primary);font-size:14px;font-weight:700;flex:1}.days-left{background:var(--accent-yellow);color:#000;padding:8px 12px;border:2px solid var(--border-color);font-weight:700;font-size:12px;text-transform:uppercase;white-space:nowrap}.scope-header{display:flex;align-items:center;justify-content:space-between}.scope-header label{display:flex;align-items:center;gap:8px;font-weight:700;text-transform:uppercase;font-size:14px}.scope-header input[type=checkbox]{width:18px;height:18px;accent-color:var(--accent-cyan)}.card-count{color:var(--text-secondary);font-size:12px;font-weight:700}.scope-detail{margin-top:16px;padding-top:16px;border-top:2px solid var(--border-color)}.part-row{display:flex;align-items:center;gap:8px;margin-bottom:12px;font-size:13px}.part-row label{display:flex;align-items:center;gap:6px;min-width:80px;font-weight:600}.part-row input[type=checkbox]{width:16px;height:16px;accent-color:var(--accent-cyan)}.part-row input[type=number],.ratio-row input[type=number],.review-row input[type=number]{width:50px;background:var(--bg-card);border:2px solid var(--border-color);border-radius:0;padding:6px 8px;color:var(--text-primary);text-align:center;font-size:14px;font-weight:700}.ratio-row{display:flex;align-items:center;gap:8px;margin-top:16px;padding-top:12px;border-top:2px dashed var(--border-color);font-size:12px;color:var(--text-secondary);font-weight:600;text-transform:uppercase}.ratio-row input[type=number]{width:40px}.subtotal{margin-top:12px;padding:8px 12px;background:var(--accent-yellow);border:2px solid var(--border-color);color:#000;font-size:12px;font-weight:700}.review-toggle{display:flex;align-items:center;gap:8px;font-weight:700;text-transform:uppercase;font-size:14px}.review-toggle input[type=checkbox]{width:18px;height:18px;accent-color:var(--accent-cyan)}.review-detail{margin-top:16px;padding-top:16px;border-top:2px solid var(--border-color)}.review-row{display:flex;align-items:center;gap:8px;margin-bottom:12px;font-size:13px}.review-row input[type=number]{width:60px}.result-card{overflow-x:auto}.result-table{width:100%;border-collapse:collapse;font-size:13px}.result-table th,.result-table td{padding:12px 8px;text-align:center;border-bottom:2px solid var(--border-color)}.result-table th{color:var(--text-secondary);font-weight:700;text-transform:uppercase;font-size:11px}.result-table td:first-child{text-align:left;color:var(--text-secondary);font-weight:700;text-transform:uppercase}.result-table strong{color:var(--accent-cyan)}.daily-card{background:var(--accent-yellow);color:#000}.daily-row{display:flex;justify-content:space-between;align-items:center;padding:8px 0;border-bottom:2px solid var(--border-color)}.daily-row:last-child{border-bottom:none}.daily-row strong{font-size:18px}.daily-warning{margin-top:12px;padding:10px;background:var(--accent-red);border:2px solid var(--border-color);font-size:12px;font-weight:700}.save-btn{position:fixed;bottom:80px;left:16px;right:16px;max-width:768px;margin:0 auto;background:var(--accent-cyan);color:#000;border:2px solid var(--border-color);border-radius:0;padding:16px;font-size:14px;font-weight:700;text-transform:uppercase;cursor:pointer;transition:transform .1s,box-shadow .1s}@media (min-width: 768px){.save-btn{box-shadow:4px 4px 0 var(--shadow-color)}.save-btn:hover:not(:disabled){transform:translate(-2px,-2px);box-shadow:6px 6px 0 var(--shadow-color)}.save-btn:active:not(:disabled){transform:translate(0);box-shadow:2px 2px 0 var(--shadow-color)}}.save-btn:disabled{opacity:.6;cursor:not-allowed}.weekly-goal-page{min-height:100vh;background:var(--bg-page)}.weekly-goal-header{display:flex;align-items:center;gap:12px;padding:16px;border-bottom:2px solid var(--border-color);background:var(--bg-card)}.weekly-goal-header .back-btn{width:40px;height:40px;display:flex;align-items:center;justify-content:center;border:2px solid var(--border-color);background:var(--bg-card);font-size:18px;cursor:pointer}.weekly-goal-header h1{margin:0;font-size:16px;font-weight:700;letter-spacing:.5px}.weekly-goal-content{padding:16px;max-width:600px;margin:0 auto}.goal-section{margin-bottom:24px}.goal-section h2{margin:0 0 8px;font-size:14px;font-weight:700;text-transform:uppercase;color:var(--text-secondary)}.week-range{font-size:12px;color:var(--text-muted);margin-bottom:12px}.weekly-progress-card{padding:16px;background:var(--bg-card);border:2px solid var(--border-color)}.progress-header{display:flex;align-items:baseline;gap:4px;margin-bottom:12px}.progress-value{font-size:32px;font-weight:700}.progress-target{font-size:16px;color:var(--text-muted)}.weekly-progress-bar{height:8px;background:var(--bg-input);border:1px solid var(--border-color);margin-bottom:12px}.weekly-progress-fill{height:100%;background:var(--accent-green);transition:width .3s ease}.progress-footer{display:flex;justify-content:space-between;font-size:12px;color:var(--text-secondary)}.skill-time-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:8px;margin-top:16px}@media (min-width: 768px){.skill-time-grid{grid-template-columns:repeat(4,1fr)}}.skill-time-item{padding:12px;background:var(--bg-card);border:2px solid var(--border-color)}.skill-time-label{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--text-secondary);margin-bottom:4px}.skill-time-value{font-size:16px;font-weight:700}.setting-card{padding:16px;background:var(--bg-card);border:2px solid var(--border-color);margin-bottom:12px}.setting-label{font-size:14px;font-weight:600;margin-bottom:12px}.setting-hint{font-size:12px;color:var(--text-muted);margin-top:8px}.number-stepper{display:flex;align-items:center;gap:12px}.stepper-btn{width:44px;height:44px;display:flex;align-items:center;justify-content:center;border:2px solid var(--border-color);background:var(--bg-card);font-size:20px;font-weight:700;cursor:pointer}.stepper-btn:active{background:var(--bg-input)}.stepper-value{flex:1;text-align:center;font-size:24px;font-weight:700}.skill-allocation{display:flex;flex-direction:column;gap:12px}.allocation-row{display:flex;align-items:center;gap:12px}.allocation-label{display:flex;align-items:center;gap:6px;width:60px;font-size:13px}.allocation-bar-container{flex:1;height:8px;background:var(--bg-input);border:1px solid var(--border-color)}.allocation-bar{height:100%;transition:width .2s ease}.allocation-control{display:flex;align-items:center;gap:6px}.mini-btn{width:28px;height:28px;display:flex;align-items:center;justify-content:center;border:1px solid var(--border-color);background:var(--bg-card);font-size:14px;cursor:pointer}.allocation-value{width:36px;text-align:center;font-size:13px;font-weight:600}.weekly-goal-page .save-btn{width:100%;padding:16px;font-size:16px;font-weight:700;text-transform:uppercase;border:2px solid var(--border-color);background:var(--accent-cyan);color:#000;cursor:pointer;margin-top:24px}.weekly-goal-page .save-btn:disabled{background:var(--bg-input);color:var(--text-muted);cursor:not-allowed}@media (min-width: 768px){.weekly-goal-header{padding:20px 24px}.weekly-goal-content{padding:24px}.setting-card,.weekly-progress-card{box-shadow:4px 4px 0 var(--border-color)}.stepper-btn:hover{background:var(--accent-cyan)}.weekly-goal-page .save-btn:hover:not(:disabled){box-shadow:4px 4px 0 var(--border-color);transform:translate(-2px,-2px)}}.shadow-page{min-height:100vh;background:var(--bg-page, #f5f5f5);display:flex;flex-direction:column}.shadow-header{display:flex;align-items:center;gap:12px;padding:16px;border-bottom:2px solid var(--border-color, #000);background:var(--bg-card, #fff)}.shadow-header .back-btn{width:40px;height:40px;display:flex;align-items:center;justify-content:center;border:2px solid var(--border-color, #000);background:var(--bg-card, #fff);font-size:20px;cursor:pointer}.shadow-header .page-title{font-size:16px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;margin:0}.shadow-content{flex:1;padding:16px;overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain}.shadow-loading{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px}.add-material-btn{width:100%;padding:16px;font-size:16px;font-weight:700;text-transform:uppercase;border:2px solid var(--border-color, #000);background:var(--bg-card, #fff);cursor:pointer;margin-bottom:16px}@media (min-width: 768px){.add-material-btn{box-shadow:4px 4px #000}.add-material-btn:hover{transform:translate(-2px,-2px);box-shadow:6px 6px #000}}.empty-state{text-align:center;padding:48px 16px}.empty-text{font-size:18px;font-weight:700;margin:0 0 8px}.empty-hint{font-size:14px;color:var(--text-secondary, #666);margin:0}.materials-list{display:flex;flex-direction:column;gap:16px}.shadow-material-card{background:var(--bg-card, #fff);border:2px solid var(--border-color, #000);padding:16px}@media (min-width: 768px){.shadow-material-card{box-shadow:4px 4px #000}}.material-card-header{display:flex;align-items:center;gap:8px;margin-bottom:8px}.material-icon{font-size:20px}.material-title{font-size:16px;font-weight:700;margin:0;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.material-meta{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--text-secondary, #666);margin-bottom:12px}.meta-divider{color:#ccc}.material-progress{display:flex;align-items:center;gap:12px;margin-bottom:12px}.material-progress .progress-bar{flex:1;height:8px;background:#eee;border:1px solid var(--border-color, #000)}.material-progress .progress-fill{height:100%;background:var(--accent-green, #4ecdc4);transition:width .3s ease}.material-progress .progress-text{font-size:13px;font-weight:600;min-width:50px;text-align:right}.material-actions{display:flex;gap:8px}.action-btn{flex:1;padding:10px 12px;font-size:13px;font-weight:700;text-transform:uppercase;border:2px solid var(--border-color, #000);background:var(--bg-card, #fff);cursor:pointer;display:flex;align-items:center;justify-content:center;gap:6px}.action-btn.primary{background:var(--accent-cyan, #7ec8e3)}.action-btn.danger{flex:0;padding:10px;color:var(--accent-red, #ff6b6b)}.action-btn .badge{background:var(--border-color, #000);color:#fff;font-size:11px;padding:2px 6px;border-radius:0}@media (min-width: 768px){.action-btn{box-shadow:2px 2px #000}.action-btn:hover{transform:translate(-1px,-1px);box-shadow:3px 3px #000}}.material-retelling-score{margin-top:12px;padding-top:12px;border-top:1px solid #eee;display:flex;align-items:center;gap:8px;font-size:13px}.score-label{color:var(--text-secondary, #666)}.score-value{font-weight:700}.score-value.good{color:var(--accent-green, #4ecdc4)}.score-value.fair{color:var(--accent-yellow, #ffd500)}.score-value.weak{color:var(--accent-red, #ff6b6b)}.upload-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#00000080;display:flex;align-items:center;justify-content:center;padding:16px;z-index:1000}.material-upload{background:var(--bg-card, #fff);border:2px solid var(--border-color, #000);width:100%;max-width:400px;max-height:90vh;overflow-y:auto}@media (min-width: 768px){.material-upload{box-shadow:8px 8px #000}}.upload-header{display:flex;align-items:center;justify-content:space-between;padding:16px;border-bottom:2px solid var(--border-color, #000)}.upload-title{font-size:16px;font-weight:700;margin:0}.close-btn{width:32px;height:32px;display:flex;align-items:center;justify-content:center;border:2px solid var(--border-color, #000);background:var(--bg-card, #fff);font-size:16px;cursor:pointer}.upload-form{padding:16px}.form-group{margin-bottom:16px}.form-label{display:block;font-size:13px;font-weight:700;text-transform:uppercase;margin-bottom:8px}.form-input{width:100%;padding:12px 16px;font-size:16px;border:2px solid var(--border-color, #000);background:var(--bg-input, #fff)}.form-input:focus{outline:none;box-shadow:inset 0 0 0 2px var(--accent-cyan, #7ec8e3)}.file-input{position:absolute;width:1px;height:1px;opacity:0;overflow:hidden}.file-btn{width:100%;padding:12px 16px;font-size:14px;text-align:left;border:2px solid var(--border-color, #000);border-style:dashed;background:var(--bg-input, #fff);cursor:pointer}.file-btn:hover{border-style:solid;background:#f5f5f5}.file-selected{color:var(--accent-green, #4ecdc4);font-weight:600}.upload-error{background:#f8d7da;color:#721c24;padding:12px;margin-bottom:16px;border:2px solid #721c24;font-size:14px}.submit-btn{width:100%;padding:14px;font-size:14px;font-weight:700;text-transform:uppercase;border:2px solid var(--border-color, #000);background:#eee;color:#999;cursor:not-allowed}.submit-btn.ready{background:var(--accent-cyan, #7ec8e3);color:#000;cursor:pointer}@media (min-width: 768px){.submit-btn.ready{box-shadow:4px 4px #000}.submit-btn.ready:hover{transform:translate(-2px,-2px);box-shadow:6px 6px #000}}.shadow-practice-page{position:fixed;top:0;left:0;right:0;bottom:0;display:flex;flex-direction:column;background:#000;overflow:hidden;z-index:200}@media (min-width: 1024px){.shadow-practice-page{left:220px;transition:left .2s ease}body.sidebar-collapsed .shadow-practice-page{left:60px}}.video-area{flex:1;position:relative;display:flex;flex-direction:column;background:#000;min-height:0}.practice-header{position:absolute;top:0;left:0;right:0;display:flex;align-items:center;gap:12px;padding:12px 16px;padding-top:calc(env(safe-area-inset-top,0px) + 12px);background:linear-gradient(to bottom,rgba(0,0,0,.7) 0%,rgba(0,0,0,.3) 70%,transparent 100%);z-index:10}.practice-header .back-btn{display:flex;align-items:center;justify-content:center;width:36px;height:36px;font-size:18px;background:#fff3;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border:none;border-radius:6px;cursor:pointer;color:#fff}.practice-header .header-info{flex:1}.practice-header .header-title{font-size:14px;font-weight:700;margin:0;color:#fff;text-shadow:0 1px 3px rgba(0,0,0,.5)}.practice-header .header-subtitle{font-size:12px;color:#fffc;margin:2px 0 0}.practice-progress{position:absolute;bottom:0;left:0;right:0;height:3px;background:#ffffff4d;z-index:10}.practice-progress .progress-fill{height:100%;background:var(--accent-cyan, #7ec8e3);transition:width .3s ease}.video-container{flex:1;display:flex;justify-content:center;align-items:center;background:#000;min-height:0}.video-container video{max-width:100%;max-height:100%;width:100%;height:100%;object-fit:contain}.subtitle-overlay{position:absolute;bottom:20px;left:0;right:0;display:flex;justify-content:center;padding:0 16px;z-index:5;pointer-events:none}.subtitle-overlay .subtitle-text{background:#000000bf;color:#fff;padding:8px 16px;font-size:16px;line-height:1.5;text-align:center;max-width:90%;border-radius:4px}.control-panel{flex-shrink:0;background:var(--bg-card, #fff);border-top:2px solid var(--border-color, #000);padding-bottom:env(safe-area-inset-bottom,0px);max-width:100%;overflow:hidden}.sentence-nav{display:flex;gap:4px;padding:6px 12px;overflow-x:auto;background:var(--bg-page, #f5f5f5);border-bottom:1px solid #ddd;scrollbar-width:none}.listen-mode-hint{padding:10px 12px;background:var(--accent-cyan, #7ec8e3);color:#000;font-size:14px;font-weight:600;text-align:center;border-bottom:1px solid #ddd}.control-main{display:flex;align-items:center;padding:10px 12px;gap:8px;max-width:100%;overflow:hidden}.control-spacer{flex:1}.subtitle-inline{flex:1;min-width:0}.subtitle-inline .subtitle-text{font-size:14px;line-height:1.4;margin:0;text-align:left}.playback-controls{display:flex;align-items:center;gap:4px;flex-shrink:0}.control-btn{width:36px;height:36px;display:flex;align-items:center;justify-content:center;border:2px solid var(--border-color, #000);background:var(--bg-card, #fff);font-size:14px;cursor:pointer}.control-btn.active{background:var(--accent-cyan, #7ec8e3)}.control-btn:disabled{opacity:.4;cursor:not-allowed}.record-inline{flex-shrink:0}.record-inline .record-btn{padding:8px 14px;font-size:13px;font-weight:700;border:2px solid var(--border-color, #000);background:var(--accent-cyan, #7ec8e3);cursor:pointer;white-space:nowrap}.record-inline .record-btn.recording{background:var(--accent-red, #ff6b6b);color:#fff;animation:pulse 1s infinite}.recording-actions-inline{display:flex;gap:8px;padding:8px 12px;background:var(--bg-page, #f5f5f5);border-top:1px solid #ddd}.recording-actions-inline button{flex:1;padding:10px;font-size:13px;font-weight:700;text-transform:uppercase;border:2px solid var(--border-color, #000);background:var(--bg-card, #fff);cursor:pointer}.recording-actions-inline button.primary{background:var(--accent-cyan, #7ec8e3)}.transcript-inline{padding:8px 12px;background:var(--bg-page, #f5f5f5);border-top:1px solid #ddd}.subtitle-display{padding:12px 16px;background:var(--bg-card, #fff);min-height:50px;display:flex;flex-direction:column;justify-content:center;align-items:center}.subtitle-text{font-size:15px;line-height:1.5;margin:0}.subtitle-translation{font-size:13px;color:var(--text-secondary, #666);text-align:center;margin:6px 0 0}.practice-content{flex:1;display:flex;flex-direction:column;overflow-y:auto;-webkit-overflow-scrolling:touch}.practice-scrollable{flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch;min-height:0;background:var(--bg-card, #fff)}.practice-scrollable:empty{flex:0;min-height:0}.waveform-section{padding:16px;background:var(--bg-card, #fff)}.waveform-row{display:flex;align-items:center;gap:12px;margin-bottom:12px}.waveform-row:last-child{margin-bottom:0}.waveform-label{font-size:12px;font-weight:700;text-transform:uppercase;width:40px;flex-shrink:0}.waveform-canvas{flex:1;height:40px;border:1px solid var(--border-color, #000);background:#fafafa}.recording-section{padding:16px;background:var(--bg-card, #fff);border-top:2px solid var(--border-color, #000);flex-shrink:0}.record-btn{width:100%;padding:16px;font-size:16px;font-weight:700;text-transform:uppercase;border:2px solid var(--border-color, #000);background:var(--accent-cyan, #7ec8e3);cursor:pointer;display:flex;align-items:center;justify-content:center;gap:8px}.record-btn.recording{background:var(--accent-red, #ff6b6b);color:#fff;animation:pulse 1s infinite}.recording-actions{display:flex;gap:8px;margin-top:12px}.recording-actions button{flex:1;padding:12px;font-size:14px;font-weight:700;text-transform:uppercase;border:2px solid var(--border-color, #000);background:var(--bg-card, #fff);cursor:pointer}.recording-actions button.primary{background:var(--accent-cyan, #7ec8e3)}@media (min-width: 768px){.record-btn,.recording-actions button{box-shadow:4px 4px #000}.record-btn:hover:not(.recording),.recording-actions button:hover{transform:translate(-2px,-2px);box-shadow:6px 6px #000}}.transcript-section{padding:16px;background:var(--bg-card, #fff);border-top:1px solid #eee}.transcript-label{font-size:12px;font-weight:700;text-transform:uppercase;color:var(--text-secondary, #666);margin-bottom:8px}.transcript-text{font-size:14px;line-height:1.6;margin:0}.transcript-match{display:inline-flex;align-items:center;gap:4px;margin-top:8px;font-size:13px;font-weight:600}.transcript-match.full{color:var(--accent-green, #4ecdc4)}.transcript-match.partial{color:var(--accent-yellow, #ffd500)}.sentence-nav{display:flex;gap:4px;padding:8px 16px;overflow-x:auto;background:var(--bg-card, #fff);border-bottom:1px solid #eee;scrollbar-width:none;flex-shrink:0}.sentence-nav::-webkit-scrollbar{display:none}.sentence-dot{min-width:28px;height:28px;padding:0 4px;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;border:2px solid var(--border-color, #000);background:var(--bg-card, #fff);cursor:pointer;flex-shrink:0;box-sizing:border-box}.sentence-dot.current{background:var(--accent-cyan, #7ec8e3)}.sentence-dot.practiced{background:var(--accent-green, #4ecdc4)}.retelling-page{display:flex;flex-direction:column;min-height:100vh;background:var(--bg-page, #f5f5f5)}.retelling-content{flex:1;padding:16px;overflow-y:auto}.retelling-instruction{padding:16px;background:var(--bg-card, #fff);border:2px solid var(--border-color, #000);margin-bottom:16px}.retelling-instruction h3{font-size:14px;font-weight:700;text-transform:uppercase;margin:0 0 8px}.retelling-instruction p{font-size:14px;color:var(--text-secondary, #666);margin:0}.retelling-result{background:var(--bg-card, #fff);border:2px solid var(--border-color, #000)}@media (min-width: 768px){.retelling-result{box-shadow:4px 4px #000}}.result-header{display:flex;align-items:center;justify-content:space-between;padding:16px;border-bottom:2px solid var(--border-color, #000)}.result-score{font-size:32px;font-weight:700}.result-band{font-size:14px;padding:6px 12px;border:2px solid var(--border-color, #000);background:var(--accent-cyan, #7ec8e3)}.result-section{padding:16px;border-bottom:1px solid #eee}.result-section:last-child{border-bottom:none}.result-section-title{font-size:12px;font-weight:700;text-transform:uppercase;color:var(--text-secondary, #666);margin:0 0 12px}.keypoint-item{display:flex;gap:12px;margin-bottom:12px;padding:8px;border:1px solid #eee}.keypoint-item:last-child{margin-bottom:0}.keypoint-status{width:24px;height:24px;display:flex;align-items:center;justify-content:center;font-size:14px;border:2px solid var(--border-color, #000);flex-shrink:0}.keypoint-status.full{background:var(--accent-green, #4ecdc4)}.keypoint-status.partial{background:var(--accent-yellow, #ffd500)}.keypoint-status.missing{background:var(--accent-red, #ff6b6b);color:#fff}.keypoint-content{flex:1}.keypoint-original{font-size:14px;margin:0 0 4px}.keypoint-user{font-size:13px;color:var(--text-secondary, #666);margin:0}.vocab-item{padding:12px;margin-bottom:8px;border:2px solid var(--border-color, #000)}.vocab-item:last-child{margin-bottom:0}.vocab-word{font-size:16px;font-weight:700;margin:0 0 4px}.vocab-context{font-size:13px;color:var(--text-secondary, #666);margin:0 0 8px}.vocab-suggestion{font-size:13px;margin:0}.vocab-add-btn{margin-top:8px;padding:8px 12px;font-size:12px;font-weight:700;border:2px solid var(--border-color, #000);background:var(--accent-cyan, #7ec8e3);cursor:pointer}@media (min-width: 1024px){.shadow-practice-page{flex-direction:column}.sentence-nav,.video-container,.playback-controls,.subtitle-display,.practice-scrollable,.recording-section{max-width:900px;margin-left:auto;margin-right:auto;width:100%}}@supports (padding-bottom: env(safe-area-inset-bottom)){.recording-section{padding-bottom:max(16px,calc(env(safe-area-inset-bottom) + 12px))}.shadow-content{padding-bottom:max(16px,env(safe-area-inset-bottom))}}.material-retelling-section{margin-top:12px;padding-top:12px;border-top:1px solid #eee}.retelling-history-toggle{width:100%;display:flex;align-items:center;gap:8px;padding:8px 0;background:none;border:none;cursor:pointer;font-size:13px;text-align:left}.retelling-history-toggle .score-label{color:var(--text-secondary, #666)}.retelling-history-toggle .history-count{color:var(--text-muted, #999);margin-left:auto}.retelling-history-toggle .toggle-icon{color:var(--text-muted, #999);font-size:10px}.retelling-history-list{margin-top:8px;display:flex;flex-direction:column;gap:6px}.retelling-history-item{border:1px solid var(--border-color, #ddd);background:var(--bg-page, #f5f5f5)}.history-item-header{width:100%;display:flex;align-items:center;gap:12px;padding:10px 12px;background:none;border:none;cursor:pointer;text-align:left}.history-date{font-size:13px;color:var(--text-secondary, #666);flex:1}.history-score{font-size:14px;font-weight:700}.history-score.good{color:var(--accent-green, #4ecdc4)}.history-score.fair{color:var(--accent-yellow, #ffd500)}.history-score.weak{color:var(--accent-red, #ff6b6b)}.history-expand{color:var(--text-muted, #999);font-size:10px}.history-item-detail{padding:12px;border-top:1px solid var(--border-color, #ddd);background:var(--bg-card, #fff)}.history-audio,.history-keypoints,.history-feedback,.history-vocab{margin-bottom:12px}.history-audio:last-child,.history-keypoints:last-child,.history-feedback:last-child,.history-vocab:last-child{margin-bottom:0}.detail-label{display:block;font-size:11px;font-weight:700;text-transform:uppercase;color:var(--text-muted, #999);margin-bottom:6px}.keypoints-list{display:flex;flex-direction:column;gap:4px}.keypoint{display:flex;align-items:flex-start;gap:8px;font-size:13px;padding:6px 8px;background:var(--bg-page, #f5f5f5)}.keypoint.full .kp-status{color:var(--accent-green, #4ecdc4)}.keypoint.partial .kp-status{color:var(--accent-yellow, #ffd500)}.keypoint.missing .kp-status{color:var(--accent-red, #ff6b6b)}.kp-status{flex-shrink:0;width:16px;text-align:center}.kp-text{flex:1;color:var(--text-secondary, #666)}.feedback-text{font-size:13px;line-height:1.5;color:var(--text-secondary, #666);margin:0;padding:8px;background:var(--bg-page, #f5f5f5)}.vocab-list{display:flex;flex-direction:column;gap:4px}.vocab-list .vocab-item{display:flex;align-items:center;gap:8px;font-size:13px;padding:6px 8px;margin-bottom:0;border:none;background:var(--bg-page, #f5f5f5)}.vocab-list .vocab-word{font-size:13px;font-weight:600;color:var(--text-primary, #000);margin:0}.vocab-list .vocab-suggestion{flex:1;color:var(--text-muted, #999)}.ai-dialog-page{display:flex;flex-direction:column;min-height:100vh;background:var(--bg-page, #f5f5f5)}.ai-dialog-page .header-info{flex:1}.ai-dialog-page .header-subtitle{font-size:12px;color:var(--text-secondary, #666);margin:0}.end-btn{padding:8px 16px;font-size:12px;font-weight:700;text-transform:uppercase;border:2px solid var(--border-color, #000);background:var(--bg-card, #fff);cursor:pointer}.chat-container{flex:1;padding:16px;overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain}.chat-bubble{max-width:85%;margin-bottom:16px;padding:12px 16px;border:2px solid var(--border-color, #000)}.chat-bubble.ai{margin-right:auto;background:var(--bg-card, #fff)}.chat-bubble.user{margin-left:auto;background:var(--accent-cyan, #7ec8e3)}.chat-bubble.processing{display:flex;justify-content:center;padding:16px 24px}@media (min-width: 768px){.chat-bubble{max-width:70%;box-shadow:2px 2px #000}}.bubble-content{font-size:15px;line-height:1.6}.bubble-feedback{margin-top:12px;padding-top:12px;border-top:1px solid rgba(0,0,0,.1);font-size:13px}.feedback-score{font-weight:700}.feedback-suggestions{margin:8px 0 0;padding-left:16px;color:var(--text-secondary, #666)}.feedback-suggestions li{margin-bottom:4px}.dialog-summary{flex:1;padding:16px;overflow-y:auto}.summary-header{text-align:center;margin-bottom:24px}.summary-score{font-size:32px;font-weight:700;padding:12px 24px;border:2px solid var(--border-color, #000);background:var(--accent-cyan, #7ec8e3)}.summary-section{margin-bottom:20px;padding:16px;background:var(--bg-card, #fff);border:2px solid var(--border-color, #000)}@media (min-width: 768px){.summary-section{box-shadow:4px 4px #000}}.summary-section h4{font-size:14px;font-weight:700;text-transform:uppercase;margin:0 0 12px}.summary-section ul{margin:0;padding-left:20px}.summary-section li{margin-bottom:8px;font-size:14px;line-height:1.5}.vocab-chips{display:flex;flex-wrap:wrap;gap:8px}.vocab-chip{padding:6px 12px;font-size:13px;font-weight:600;border:2px solid var(--border-color, #000);background:var(--accent-yellow, #ffd500)}.dialog-summary .action-btn{width:100%;margin-top:16px}@supports (padding-bottom: env(safe-area-inset-bottom)){.ai-dialog-page .recording-section{padding-bottom:max(16px,calc(env(safe-area-inset-bottom) + 12px))}}:root{--bg-page: #f5f5f5;--bg-card: #ffffff;--bg-input: #ffffff;--bg-terminal: #1a1a1a;--border-color: #000000;--border-width: 2px;--text-primary: #000000;--text-secondary: #666666;--accent-cyan: #7ec8e3;--accent-yellow: #ffd500;--accent-red: #ff6b6b;--accent-green: #4ecdc4;--skill-speaking: #ff6b6b;--skill-writing: #ffd500;--skill-listening: #7ec8e3;--skill-vocab: #4ecdc4;--shadow-color: #000000;--shadow-sm: 2px 2px 0 var(--shadow-color);--shadow-md: 4px 4px 0 var(--shadow-color);--shadow-lg: 6px 6px 0 var(--shadow-color);--font-sans: "Space Grotesk", "Inter", system-ui, -apple-system, sans-serif;--font-mono: "JetBrains Mono", "SF Mono", Consolas, monospace}[data-theme=dark]{--bg-page: #121212;--bg-card: #1e1e1e;--bg-input: #2a2a2a;--border-color: #ffffff;--text-primary: #ffffff;--text-secondary: #a0a0a0;--shadow-color: #333333}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{font-size:16px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{font-family:var(--font-sans);font-size:14px;line-height:1.5;color:var(--text-primary);background:var(--bg-page);min-height:100vh}::-webkit-scrollbar{width:0;height:0}*{scrollbar-width:none}a{color:inherit;text-decoration:none}img{max-width:100%;display:block}button{font-family:inherit;cursor:pointer}input,textarea,select{font-family:inherit;font-size:inherit}.h1{font-size:32px;font-weight:900;line-height:1.1;text-transform:uppercase;letter-spacing:-.02em}.h2{font-size:24px;font-weight:800;line-height:1.2;text-transform:uppercase}.h3{font-size:18px;font-weight:700;line-height:1.3;text-transform:uppercase}.label{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--text-secondary)}.body{font-size:14px;font-weight:400;line-height:1.6}.caption{font-size:12px;color:var(--text-secondary)}.mono{font-family:var(--font-mono)}@media (min-width: 768px){.shadow-sm{box-shadow:var(--shadow-sm)}.shadow-md{box-shadow:var(--shadow-md)}.shadow-lg{box-shadow:var(--shadow-lg)}.shadow-hover{transition:transform .1s ease,box-shadow .1s ease}.shadow-hover:hover{transform:translate(-2px,-2px);box-shadow:var(--shadow-lg)}}@media (max-width: 767px){.shadow-sm,.shadow-md,.shadow-lg{box-shadow:none}}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:12px 24px;font-size:14px;font-weight:700;text-transform:uppercase;border:var(--border-width) solid var(--border-color);border-radius:0;background:var(--bg-card);color:var(--text-primary);cursor:pointer;transition:transform .1s ease,box-shadow .1s ease}.btn:active{transform:translate(2px,2px)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--accent-cyan);color:#000}.btn-danger{background:var(--accent-red);color:#000}.btn-warning{background:var(--accent-yellow);color:#000}.btn-success{background:var(--accent-green);color:#000}.btn-ghost{background:transparent;border-style:dashed}@media (min-width: 768px){.btn:not(.btn-ghost){box-shadow:var(--shadow-md)}.btn:hover:not(:disabled){transform:translate(-2px,-2px);box-shadow:var(--shadow-lg)}.btn:active:not(:disabled){transform:translate(0);box-shadow:var(--shadow-sm)}}@media (max-width: 767px){.btn{width:100%}}.feedback-group{display:flex;gap:12px}.feedback-btn{flex:1;display:flex;flex-direction:column;align-items:center;gap:4px;padding:16px 12px;border:var(--border-width) solid var(--border-color);border-radius:0;font-weight:700;text-transform:uppercase;cursor:pointer;transition:transform .1s ease,box-shadow .1s ease}.feedback-btn .interval{font-size:11px;font-weight:400;color:var(--text-secondary)}.feedback-btn.again{background:var(--accent-red)}.feedback-btn.hard{background:var(--accent-yellow)}.feedback-btn.good{background:var(--accent-cyan)}@media (max-width: 767px){.feedback-group{flex-direction:column}.feedback-btn{flex-direction:row;justify-content:space-between;padding:14px 16px}}@media (min-width: 768px){.feedback-btn{box-shadow:var(--shadow-md)}.feedback-btn:hover{transform:translate(-2px,-2px);box-shadow:var(--shadow-lg)}.feedback-btn:active{transform:translate(0);box-shadow:var(--shadow-sm)}}.input{width:100%;padding:12px 16px;font-size:14px;border:var(--border-width) solid var(--border-color);border-radius:0;background:var(--bg-input);color:var(--text-primary)}.input:focus{outline:none;box-shadow:inset 0 0 0 2px var(--accent-cyan)}.input::placeholder{color:var(--text-secondary)}.textarea{min-height:120px;resize:vertical;line-height:1.6}.card{background:var(--bg-card);border:var(--border-width) solid var(--border-color);border-radius:0}.card-header{padding:16px;border-bottom:var(--border-width) solid var(--border-color)}.card-body{padding:20px}.card-footer{padding:16px;border-top:var(--border-width) solid var(--border-color)}@media (min-width: 768px){.card{box-shadow:var(--shadow-md)}}@media (max-width: 767px){.card+.card{margin-top:-2px}}.stats-bar{display:flex;background:var(--accent-yellow);border:var(--border-width) solid var(--border-color)}.stat-item{flex:1;padding:12px 16px;text-align:center;border-right:var(--border-width) solid var(--border-color)}.stat-item:last-child{border-right:none}.stat-value{font-size:24px;font-weight:900}.stat-label{font-size:11px;font-weight:700;text-transform:uppercase;color:var(--text-secondary)}@media (max-width: 767px){.stats-bar{overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none}.stats-bar::-webkit-scrollbar{height:0}.stat-item{min-width:80px;padding:10px 12px}}.progress{height:8px;background:var(--bg-page);border:var(--border-width) solid var(--border-color)}.progress-fill{height:100%;background:var(--accent-cyan);transition:width .2s ease}.pill{display:inline-flex;align-items:center;padding:4px 10px;font-size:12px;font-weight:600;text-transform:uppercase;border:1px solid var(--border-color);border-radius:0}.pill-speaking{background:var(--skill-speaking)}.pill-writing{background:var(--skill-writing)}.pill-listening{background:var(--skill-listening)}.pill-vocab{background:var(--skill-vocab)}.diff-hit{background:#d4edda;color:#155724;border-color:#155724}.diff-miss{background:#f8d7da;color:#721c24;border-color:#721c24}.diff-extra{background:#fff3cd;color:#856404;border-color:#856404}.skill-dot{width:12px;height:12px;border:1px solid var(--border-color);display:inline-block}.skill-dot.speaking{background:var(--skill-speaking)}.skill-dot.writing{background:var(--skill-writing)}.skill-dot.listening{background:var(--skill-listening)}.skill-dot.vocab{background:var(--skill-vocab)}html,body{overscroll-behavior:none;-webkit-overflow-scrolling:touch;position:fixed;width:100%;height:100%;overflow:hidden}html{background:#fff}[data-theme=dark] html,html:has([data-theme=dark]){background:#1e1e1e}.sidebar{display:none}@media (min-width: 1024px){.sidebar{display:flex;flex-direction:column;width:220px;min-width:220px;height:100vh;background:var(--bg-card);border-right:2px solid var(--border-color);position:fixed;left:0;top:0;z-index:100;transition:width .2s ease,min-width .2s ease}.sidebar-header{display:flex;align-items:center;justify-content:space-between;padding:16px;border-bottom:2px solid var(--border-color)}.sidebar-brand{font-size:20px;font-weight:900;letter-spacing:2px;white-space:nowrap;overflow:hidden}.sidebar-toggle{width:28px;height:28px;display:flex;align-items:center;justify-content:center;background:transparent;border:1px solid var(--border-color);cursor:pointer;font-size:14px;flex-shrink:0}.sidebar-toggle:hover{background:var(--bg-page)}.sidebar-nav{display:flex;flex-direction:column;padding:12px 0;flex:1;overflow:hidden}.sidebar-item{display:flex;align-items:center;gap:12px;padding:12px 16px;font-size:13px;font-weight:600;text-transform:uppercase;letter-spacing:.5px;color:var(--text-secondary);text-decoration:none;transition:all .15s ease;border-left:3px solid transparent;white-space:nowrap}.sidebar-item:hover{background:var(--bg-page);color:var(--text-primary)}.sidebar-item.active{background:var(--accent-yellow);color:var(--text-primary);border-left-color:var(--border-color)}.sidebar-item .nav-icon{font-size:16px;flex-shrink:0}.sidebar-item .nav-label{overflow:hidden}.sidebar.collapsed{width:60px;min-width:60px}.sidebar.collapsed .sidebar-header{padding:12px 8px;flex-direction:column;gap:8px}.sidebar.collapsed .sidebar-brand{font-size:18px;letter-spacing:0}.sidebar.collapsed .sidebar-toggle{width:100%}.sidebar.collapsed .sidebar-item{padding:12px;justify-content:center}.sidebar.collapsed .sidebar-item .nav-label{display:none}.bottom-nav,.top-bar{display:none!important}.app-shell{margin-left:220px;transition:margin-left .2s ease}.app-shell.sidebar-collapsed{margin-left:60px}.main-content{min-height:100vh}.container{max-width:100%;padding:0}}.container{width:100%;max-width:100%;margin:0 auto;padding:0 8px}@media (min-width: 768px){.container{max-width:800px;padding:0 16px}}@media (min-width: 1024px){.container{max-width:100%;padding:0}}.page-container{max-width:100%;padding:0 0 24px}.page-content{display:flex;flex-direction:column;gap:16px}.page-content>.section{margin:0;padding:0}@media (min-width: 1024px){.page-container{max-width:800px;margin:0 auto;padding:0 24px 40px}.page-container>.page-header{background:transparent;border-bottom:none;padding:32px 0 24px}.page-content{gap:24px}}.page-header{padding:24px 16px;background:var(--bg-card);border-bottom:var(--border-width) solid var(--border-color)}.page-title{font-size:24px;font-weight:900;text-transform:uppercase;margin-bottom:4px}.page-subtitle{font-size:14px;color:var(--text-secondary)}.page-header-text{flex-shrink:0}@media (min-width: 768px){.page-header{padding:32px 24px}.page-title{font-size:32px}}.app-shell{display:flex;flex-direction:column;height:100vh;height:100dvh;overflow:hidden}.top-bar{position:sticky;top:0;z-index:100;display:flex;align-items:center;justify-content:center;padding:8px 16px;padding-top:calc(env(safe-area-inset-top,0px) + 8px);background:var(--bg-card);border-bottom:var(--border-width) solid var(--border-color);font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.5px}.top-bar-title{color:var(--text-primary)}.bottom-nav{display:grid;grid-template-columns:repeat(3,1fr);gap:0;background:var(--bg-card);border-top:var(--border-width) solid var(--border-color);flex-shrink:0}body:has(.session-layout) .bottom-nav{display:none}.nav-item{text-align:center;color:var(--text-secondary);padding:12px 8px;padding-bottom:max(12px,env(safe-area-inset-bottom,12px));font-weight:700;letter-spacing:.02em;display:flex;flex-direction:column;gap:4px;align-items:center;text-transform:uppercase;border-right:1px solid var(--border-color);transition:background 80ms ease,color 80ms ease}.nav-item:last-child{border-right:none}.nav-item:hover{background:var(--bg-page)}.nav-item.active{background:var(--accent-cyan);color:var(--text-primary)}.nav-icon{font-size:1.25rem;line-height:1}.nav-label{font-size:.7rem;letter-spacing:.08em}.skill-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}@media (min-width: 768px){.skill-grid{grid-template-columns:repeat(4,1fr);gap:12px}}.grid-2{display:grid;grid-template-columns:1fr;gap:16px}@media (min-width: 768px){.grid-2{grid-template-columns:repeat(2,1fr)}}.stack-sm{gap:8px}.stack-md{gap:16px}.stack-lg{gap:24px}.main-content{flex:1;padding:0;min-height:0;overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}.main-content:has(.today-fixed){overflow-y:auto;overscroll-behavior:contain}.today-fixed{min-height:100%;display:flex;flex-direction:column;padding-bottom:20px}@media (min-width: 768px){.today-fixed{height:auto;min-height:100%;padding-bottom:24px}}.session-layout{display:flex;flex-direction:column;flex:1;min-height:0}.session-header{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;background:var(--bg-card);border-bottom:var(--border-width) solid var(--border-color)}.session-back{display:flex;align-items:center;gap:8px;font-weight:700;text-transform:uppercase;color:var(--text-primary)}@media (min-width: 768px){.session-content>*{width:100%;max-width:800px;margin:0 auto}}.section{margin-bottom:24px}.section-title{font-size:14px;font-weight:700;text-transform:uppercase;margin-bottom:12px;color:var(--text-secondary)}.flex{display:flex}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-xs{gap:4px}.gap-sm{gap:8px}.gap-md{gap:16px}.gap-lg{gap:24px}.mt-sm{margin-top:8px}.mt-md{margin-top:16px}.mt-lg{margin-top:24px}.mb-sm{margin-bottom:8px}.mb-md{margin-bottom:16px}.mb-lg{margin-bottom:24px}.p-sm{padding:8px}.p-md{padding:16px}.p-lg{padding:24px}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.text-uppercase{text-transform:uppercase}.font-bold{font-weight:700}.font-mono{font-family:var(--font-mono)}.session-layout{position:fixed;top:0;left:0;right:0;bottom:0;display:flex;flex-direction:column;background:var(--bg-page);overflow:hidden;z-index:200}@media (min-width: 768px) and (max-width: 1023px){.session-layout{max-width:800px;left:50%;transform:translate(-50%);border-left:2px solid var(--border-color);border-right:2px solid var(--border-color)}}@media (min-width: 1024px){.session-layout{max-width:100%;left:220px;right:0;transform:none;border:none;transition:left .2s ease}body.sidebar-collapsed .session-layout{left:60px}.session-header{padding:8px 24px;grid-template-columns:60px 1fr 60px;border-bottom:1px solid var(--border-color);background:transparent}.session-back{font-size:16px;justify-content:flex-start;width:auto;height:auto}.session-title{font-size:13px;letter-spacing:.5px;color:var(--text-secondary)}.session-count{font-size:13px;justify-content:flex-end;width:auto;height:auto;color:var(--text-secondary)}.session-content{padding:24px 40px;overflow-y:auto;display:flex;flex-direction:column;align-items:center;flex:1}.session-content>*{max-width:700px;margin:0;width:100%}.session-footer{padding:12px 24px;border-top:1px solid var(--border-color);display:flex;flex-direction:row;align-items:center;justify-content:center;gap:24px;background:transparent;position:relative}.session-footer .feedback-group{max-width:none;width:auto;gap:8px}.session-footer .feedback-btn{padding:8px 24px;min-width:100px}.session-footer .session-nav-row{max-width:none;width:auto;margin-bottom:0;position:absolute;left:24px}.session-footer .session-nav-btn{padding:6px 12px;font-size:12px}.practice-card{border-width:2px;border-radius:0}.practice-card-header{padding:12px 16px!important}.practice-question{font-size:17px!important;line-height:1.5}}.session-header{display:grid;grid-template-columns:48px 1fr 48px;align-items:center;padding:8px 4px;padding-top:calc(env(safe-area-inset-top,0px) + 8px);flex-shrink:0;border-bottom:2px solid var(--border-color);background:#fff}.session-back{display:flex;align-items:center;justify-content:center;width:48px;height:48px;font-size:20px;font-weight:700;color:var(--text-primary);text-decoration:none}.session-title{text-align:center;font-size:14px;font-weight:700;text-transform:uppercase;letter-spacing:.5px}.session-count{display:flex;align-items:center;justify-content:center;width:48px;height:48px;font-size:14px;font-weight:700;font-family:var(--font-mono);color:var(--text-secondary)}.session-progress-bar{height:4px;flex-shrink:0;background:var(--border-color)}.progress-track{height:100%;width:100%}.session-progress-bar .progress-fill{height:100%;background:var(--accent-cyan);transition:width .3s ease}.session-content{flex:1;display:flex;flex-direction:column;overflow:hidden;min-height:0;background:var(--bg-card)}.session-footer{padding:12px 16px;padding-bottom:max(16px,calc(env(safe-area-inset-bottom,0px) + 12px));border-top:var(--border-width) solid var(--border-color);flex-shrink:0;background:var(--bg-card)}.session-nav-row{display:flex;justify-content:space-between;gap:8px;margin-bottom:8px}.session-nav-btn{padding:10px 16px;font-size:14px;font-weight:600;border:var(--border-width) solid var(--border-color);background:var(--bg-surface);color:var(--text-primary);cursor:pointer;transition:background-color .15s,opacity .15s}.session-nav-btn:hover:not(:disabled){background:var(--bg-hover)}.session-nav-btn:disabled{opacity:.4;cursor:not-allowed}.feedback-group{display:flex;flex-direction:row;gap:8px}.feedback-btn{flex:1;display:flex;flex-direction:row;align-items:center;justify-content:center;gap:8px;padding:14px 8px;border:2px solid var(--border-color);font-weight:700;font-size:14px;text-transform:uppercase;cursor:pointer;white-space:nowrap}.feedback-btn .interval{font-size:12px;font-weight:400;opacity:.7}.feedback-btn.again{background:var(--accent-red);color:#000}.feedback-btn.hard{background:var(--accent-yellow);color:#000}.feedback-btn.good{background:var(--accent-cyan);color:#000}.feedback-btn:disabled{opacity:.5;cursor:not-allowed}.session-complete{display:flex;flex-direction:column;align-items:center;justify-content:center;flex:1;padding:20px}.session-complete-icon{width:48px;height:48px;border:2px solid var(--accent-green);display:flex;align-items:center;justify-content:center;margin-bottom:12px;font-size:20px;color:var(--accent-green)}.session-complete-title{font-size:16px;font-weight:900;text-transform:uppercase;margin:0 0 12px}.session-complete-stats{display:inline-block;padding:8px 16px;border:var(--border-width) solid var(--border-color);margin-bottom:12px}.session-complete-stat{font-size:24px;font-weight:900}.session-complete-label{font-size:10px;font-weight:700;text-transform:uppercase;color:var(--text-secondary)}.btn-ghost{background:transparent;border:1px dashed var(--border-color);padding:4px 10px;font-size:10px;font-weight:700;text-transform:uppercase;cursor:pointer}.stats-bar-desktop{display:none}.stats-bar-mobile{display:flex}@media (min-width: 1024px){.today-fixed{padding:0;max-width:900px;margin:0 auto}.today-fixed>.page-header{display:flex;justify-content:space-between;align-items:center;padding:32px 24px;gap:24px;border-bottom:none;background:transparent}.stats-bar-desktop{display:flex;flex-shrink:0}.stats-bar-mobile{display:none}.today-fixed>.section{margin-bottom:24px;padding:0 24px}.stats-bar-desktop{background:var(--accent-yellow);border:2px solid var(--border-color);padding:8px 16px;gap:16px}.stats-bar-desktop .stat-item{flex:none;flex-direction:row;gap:6px;align-items:baseline;padding:0;border:none;text-align:left}.stats-bar-desktop .stat-value{font-size:20px}.stats-bar-desktop .stat-label{font-size:10px}.skill-card{padding:16px}.skill-card-title{font-size:13px}.skill-card-count{font-size:16px}}.settings-page{display:flex;flex-direction:column}.settings-grid{display:flex;flex-direction:column;gap:0}@media (min-width: 1024px){.settings-page{max-width:800px;margin:0 auto;padding:0 24px}.settings-page>.page-header{padding:32px 0;background:transparent;border-bottom:none}.settings-grid{display:flex;flex-direction:column;gap:24px}.settings-grid>.section{margin:0;padding:0}}@media (min-width: 768px){.section{padding:0 24px;margin-bottom:24px}.section-title{font-size:14px;margin-bottom:12px}}@media (min-width: 768px){.skill-card{transition:transform .15s ease,box-shadow .15s ease}.skill-card:hover{transform:translateY(-2px);box-shadow:var(--shadow-lg)}.card{transition:box-shadow .15s ease}.card:hover{box-shadow:var(--shadow-lg)}}.skill-card{background:var(--bg-card);border:var(--border-width) solid var(--border-color);padding:20px;display:flex;flex-direction:column;gap:12px}.skill-card-header{display:flex;justify-content:space-between;align-items:center}.skill-card-title{display:flex;align-items:center;gap:8px;font-size:14px;font-weight:700;text-transform:uppercase}.skill-card-count{font-size:24px;font-weight:900}.skill-card-progress{display:flex;align-items:center;gap:12px}.skill-card-progress .progress{flex:1}@media (max-width: 767px){.skill-card{padding:14px;gap:10px}.skill-card-header{flex-direction:column;align-items:flex-start;gap:6px}.skill-card-count{font-size:22px}.skill-card-title{font-size:14px}.skill-card-progress{display:none}.skill-card .btn{padding:10px 14px;font-size:13px;width:100%}}@media (min-width: 768px){.skill-card{box-shadow:var(--shadow-md)}}.focused-practice-grid{display:grid;grid-template-columns:1fr;gap:8px}@media (min-width: 768px){.focused-practice-grid{grid-template-columns:repeat(3,1fr);gap:12px}}.focused-practice-card{display:flex;align-items:center;gap:12px;padding:14px 16px;background:var(--bg-card);border:var(--border-width) solid var(--border-color);text-decoration:none;color:inherit;transition:background .1s}.focused-practice-card:hover{background:var(--bg-secondary)}.focused-practice-card:active{background:var(--bg-tertiary, var(--bg-secondary))}.focused-practice-icon{font-size:24px;flex-shrink:0}.focused-practice-content{flex:1;min-width:0}.focused-practice-title{font-size:14px;font-weight:700}.focused-practice-desc{font-size:11px;color:var(--text-muted);margin-top:2px}.focused-practice-arrow{font-size:16px;color:var(--text-muted);flex-shrink:0}@media (min-width: 768px){.focused-practice-card{box-shadow:var(--shadow-md);padding:16px 20px}.focused-practice-icon{font-size:28px}.focused-practice-title{font-size:15px}.focused-practice-desc{font-size:12px}}.practice-card{background:var(--bg-card);border:var(--border-width) solid var(--border-color)}.practice-card-header{padding:16px;border-bottom:var(--border-width) solid var(--border-color);display:flex;justify-content:space-between;align-items:center}.practice-card-type{font-size:12px;font-weight:700;text-transform:uppercase;color:var(--text-secondary)}.practice-card-mode{font-size:11px;padding:4px 8px;border:1px solid var(--border-color);text-transform:uppercase}.practice-card-body{padding:20px}.practice-card-footer{padding:16px;border-top:var(--border-width) solid var(--border-color)}@media (min-width: 768px){.practice-card{box-shadow:var(--shadow-lg)}}.listening-audio{background:var(--bg-terminal);padding:20px;margin-bottom:20px}.listening-segment-info{display:flex;justify-content:space-between;color:#fff;font-size:12px;margin-bottom:16px;font-family:var(--font-mono)}.listening-controls{display:flex;gap:12px;align-items:center}.listening-play-btn{width:56px;height:56px;border:2px solid #fff;background:transparent;color:#fff;font-size:20px;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .1s ease}.listening-play-btn:hover{background:#ffffff1a}.listening-play-btn.playing{background:var(--accent-cyan);border-color:var(--accent-cyan);color:#000}.listening-time{color:#fff;font-family:var(--font-mono);font-size:14px}.cloze-text{font-size:16px;line-height:2}.cloze-blank{display:inline-block;min-width:100px;border:none;border-bottom:2px solid var(--border-color);padding:4px 8px;margin:0 4px;background:var(--bg-input);font-family:inherit;font-size:inherit}.cloze-blank:focus{border-bottom-color:var(--accent-cyan);outline:none}.cloze-blank.correct{border-bottom-color:var(--accent-green);background:#4ecdc41a}.cloze-blank.incorrect{border-bottom-color:var(--accent-red);background:#ff6b6b1a}.writing-hint{padding:16px;background:var(--accent-yellow);border:var(--border-width) solid var(--border-color);color:#000;margin-bottom:16px}.writing-hint-label{font-size:11px;font-weight:700;text-transform:uppercase;margin-bottom:8px}.writing-textarea{width:100%;min-height:200px;padding:16px;border:var(--border-width) solid var(--border-color);border-radius:0;font-family:inherit;font-size:14px;line-height:1.8;resize:vertical;background:var(--bg-input)}.writing-textarea:focus{outline:none;box-shadow:inset 0 0 0 2px var(--accent-cyan)}.writing-result{padding:16px;border:var(--border-width) solid var(--border-color);margin-top:20px}.writing-coverage{display:flex;align-items:center;gap:16px;margin-bottom:16px}.writing-coverage-value{font-size:32px;font-weight:900}.writing-missing-phrases{display:flex;flex-wrap:wrap;gap:8px;margin:12px 0}.writing-ai-suggestions{margin-top:16px;padding-top:16px;border-top:1px solid var(--border-color)}.writing-ai-suggestions ul{margin:8px 0 0;padding-left:20px}.writing-ai-suggestions li{margin-bottom:8px;font-size:14px}.speaking-prompt{padding:20px;border:var(--border-width) solid var(--border-color);margin-bottom:20px}.speaking-part-label{font-size:12px;font-weight:700;text-transform:uppercase;color:var(--text-secondary);margin-bottom:12px}.speaking-question{font-size:20px;line-height:1.6;margin-bottom:20px}.speaking-points{padding-left:20px;margin:0}.speaking-points li{margin-bottom:8px;color:var(--text-secondary)}.speaking-timer{text-align:center;padding:12px;background:var(--bg-terminal);color:#fff;font-family:var(--font-mono);font-size:24px;margin-bottom:20px}.speaking-record-section{text-align:center;padding:40px 20px;border:var(--border-width) solid var(--border-color);margin-bottom:20px}.speaking-record-btn{width:80px;height:80px;border:3px solid var(--accent-red);background:transparent;color:var(--accent-red);font-size:24px;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;transition:all .1s ease}.speaking-record-btn:hover{background:#ff6b6b1a}.speaking-record-btn.recording{background:var(--accent-red);color:#fff;animation:pulse 1s infinite}.speaking-recordings{border:var(--border-width) solid var(--border-color)}.speaking-recording-item{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-bottom:1px solid var(--border-color)}.speaking-recording-item:last-child{border-bottom:none}.speaking-recording-info{display:flex;align-items:center;gap:12px}.speaking-recording-actions{display:flex;gap:8px}.vocab-flip-container{perspective:1000px;margin:20px 0}.vocab-flip-card{min-height:200px;cursor:pointer;transform-style:preserve-3d;transition:transform .4s ease;position:relative}.vocab-flip-card.flipped{transform:rotateY(180deg)}.vocab-flip-front,.vocab-flip-back{position:absolute;width:100%;height:100%;backface-visibility:hidden;border:var(--border-width) solid var(--border-color);background:var(--bg-card);display:flex;flex-direction:column;align-items:center;justify-content:center;padding:40px 20px}.vocab-flip-back{transform:rotateY(180deg)}.vocab-word{font-size:28px;font-weight:900}.vocab-phonetic{font-size:14px;color:var(--text-secondary);margin-top:8px;font-family:var(--font-mono)}.vocab-meaning{font-size:18px;text-align:center}.vocab-context{margin-top:20px;padding:16px;border:var(--border-width) solid var(--border-color);background:var(--bg-page);width:100%}.vocab-context-label{font-size:11px;font-weight:700;text-transform:uppercase;color:var(--text-secondary);margin-bottom:8px}.vocab-example{font-style:italic;color:var(--text-secondary)}.session-complete{text-align:center;padding:60px 20px}.session-complete-icon{width:80px;height:80px;border:3px solid var(--accent-green);display:flex;align-items:center;justify-content:center;margin:0 auto 24px;font-size:32px;color:var(--accent-green)}.session-complete-title{font-size:24px;font-weight:900;text-transform:uppercase;margin-bottom:12px}.session-complete-stats{display:inline-block;padding:16px 24px;border:var(--border-width) solid var(--border-color);margin:24px 0}.session-complete-stat{font-size:32px;font-weight:900}.session-complete-label{font-size:12px;color:var(--text-secondary);text-transform:uppercase}.diff-panel{display:flex;flex-wrap:wrap;gap:6px;padding:12px;border:var(--border-width) solid var(--border-color);background:var(--bg-card)}.diff-chip{padding:4px 8px;font-size:14px;border:1px solid var(--border-color)}.diff-chip.hit{background:#d4edda;color:#155724;border-color:#155724}.diff-chip.miss{background:#f8d7da;color:#721c24;border-color:#721c24}.diff-chip.extra{background:#fff3cd;color:#856404;border-color:#856404}.diff-chip.typo{background:#d4edda;color:#155724;border-color:#ffc107;border-style:dashed;border-width:2px;cursor:help}.diff-chip.substitution{background:#e2e3f3;color:#383d6e;border-color:#383d6e;border-style:dashed}.audio-player{background:var(--bg-terminal);padding:16px;display:flex;align-items:center;gap:16px}.audio-play-btn{width:48px;height:48px;border:2px solid #fff;background:transparent;color:#fff;font-size:18px;cursor:pointer;display:flex;align-items:center;justify-content:center}.audio-play-btn.playing{background:var(--accent-cyan);border-color:var(--accent-cyan);color:#000}.audio-progress{flex:1;height:4px;background:#333;position:relative}.audio-progress-fill{height:100%;background:var(--accent-cyan)}.audio-time{color:#fff;font-family:var(--font-mono);font-size:12px;min-width:80px;text-align:right}.empty-state{text-align:center;padding:60px 20px;border:var(--border-width) dashed var(--border-color)}.empty-state-icon{font-size:48px;margin-bottom:16px;opacity:.5}.empty-state-title{font-size:18px;font-weight:700;text-transform:uppercase;margin-bottom:8px}.empty-state-text{color:var(--text-secondary)}.loading{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:40px;gap:16px}.loading .loading-spinner{display:flex;gap:5px;align-items:flex-end;height:28px}.loading .loading-spinner:before,.loading .loading-spinner:after,.loading .loading-spinner span{content:"";width:6px;background:var(--border-color);animation:loading-bounce 1s ease-in-out infinite}.loading .loading-spinner:before{height:14px;animation-delay:0s}.loading .loading-spinner span{height:20px;animation-delay:.15s;background:var(--accent-cyan)}.loading .loading-spinner:after{height:14px;animation-delay:.3s}@keyframes loading-bounce{0%,to{transform:scaleY(1)}50%{transform:scaleY(1.6)}}.section-block,.session-card,.info-card,.recall-card,.listening-card,.speaking-card,.vocab-card{background:var(--bg-card);border:var(--border-width) solid var(--border-color);border-radius:0;padding:0}.section-block>*,.session-card>*,.info-card>*,.recall-card>*,.listening-card>*,.speaking-card>*{padding:16px}.pill.subtle,.pill.micro,.pill.micro.subtle{background:var(--bg-card);border:1px solid var(--border-color);border-radius:0;padding:4px 8px;font-size:11px;font-weight:700;text-transform:uppercase}.pill.danger{background:var(--accent-red);color:#000}.eyebrow{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--text-secondary);margin-bottom:4px}.section-label{font-size:12px;font-weight:700;text-transform:uppercase;color:var(--text-secondary);margin-bottom:8px;display:block}.session-meta{font-size:12px;color:var(--text-secondary)}.session-body{font-size:14px;line-height:1.6}.section-head{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;flex-wrap:wrap;padding:16px;border-bottom:var(--border-width) solid var(--border-color)}.section-title{font-size:18px;font-weight:700;text-transform:uppercase;margin:0}.section-sub{font-size:13px;color:var(--text-secondary);margin-top:4px}.segment-chip{background:var(--bg-terminal);color:#fff;padding:12px 16px;border:var(--border-width) solid var(--border-color);font-family:var(--font-mono)}.segment-chip span{font-size:11px;opacity:.7;display:block}.segment-chip strong{font-size:14px}.listening-head,.speaking-head{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;flex-wrap:wrap;padding:16px;border-bottom:var(--border-width) solid var(--border-color)}.listening-actions,.speaking-actions,.recall-actions{display:flex;gap:12px;flex-wrap:wrap;align-items:center;padding:16px;border-top:var(--border-width) solid var(--border-color)}.recall-input{width:100%;min-height:120px;padding:16px;border:var(--border-width) solid var(--border-color);border-radius:0;font-family:inherit;font-size:14px;line-height:1.6;background:var(--bg-input);resize:vertical}.recall-input:focus{outline:none;box-shadow:inset 0 0 0 2px var(--accent-cyan)}.recall-result{padding:16px;border:var(--border-width) solid var(--border-color);margin-top:16px}.coverage-row{display:flex;align-items:center;gap:12px;margin-bottom:12px}.coverage-bar{flex:1;height:8px;background:var(--bg-page);border:var(--border-width) solid var(--border-color)}.coverage-fill{height:100%;background:var(--accent-cyan)}.coverage-label{font-size:18px;font-weight:900;min-width:50px}.primary-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:12px 24px;font-size:14px;font-weight:700;text-transform:uppercase;border:var(--border-width) solid var(--border-color);border-radius:0;background:var(--accent-cyan);color:#000;cursor:pointer}@media (min-width: 768px){.primary-btn{box-shadow:var(--shadow-md)}.primary-btn:hover{transform:translate(-2px,-2px);box-shadow:var(--shadow-lg)}}.session-action{padding:12px 16px;font-size:14px;font-weight:700;text-transform:uppercase;border:var(--border-width) solid var(--border-color);border-radius:0;cursor:pointer}.session-action.neutral{background:var(--bg-card);color:var(--text-primary)}.session-action.danger{background:var(--accent-red);color:#000}.session-action.warning{background:var(--accent-yellow);color:#000}.session-action.success{background:var(--accent-cyan);color:#000}.session-action:disabled{opacity:.5;cursor:not-allowed}.error-text{padding:12px 16px;background:var(--accent-red);border:var(--border-width) solid var(--border-color);color:#000;font-weight:700}.hint{padding:12px 16px;background:var(--accent-yellow);border:var(--border-width) solid var(--border-color);color:#000;font-size:13px}.mode-pill{background:var(--bg-terminal);color:#fff;padding:12px 16px;border:var(--border-width) solid var(--border-color)}.mode-pill small{display:block;font-size:11px;opacity:.7;margin-top:4px}.pill-row{display:flex;flex-wrap:wrap;gap:6px;padding:12px 16px}.answer-section{padding:16px;border-top:var(--border-width) solid var(--border-color);background:var(--bg-page)}.answer-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}button.ghost,.ghost{background:transparent;border:1px dashed var(--border-color);padding:8px 12px;font-size:12px;font-weight:700;text-transform:uppercase;cursor:pointer}.session-done{padding:40px 20px;text-align:center;background:var(--accent-green);border:var(--border-width) solid var(--border-color);color:#000}.session-error{padding:20px;background:var(--accent-red);border:var(--border-width) solid var(--border-color);color:#000}.session-error-actions{display:flex;gap:12px;margin-top:16px}.error-secondary{padding:10px 16px;background:var(--bg-card);border:var(--border-width) solid var(--border-color);font-weight:700;cursor:pointer}.session-footnote{padding:12px 16px;background:var(--accent-green);border:var(--border-width) solid var(--border-color);color:#000;display:flex;gap:8px;align-items:center}.session-exit-btn{padding:8px 16px;background:var(--bg-card);border:var(--border-width) solid var(--border-color);font-weight:700;text-transform:uppercase;cursor:pointer}.session-meta-bar{display:flex;gap:12px;align-items:center;flex-wrap:wrap}.session-stage{padding:16px}.session-progress{margin-bottom:16px}.progress-meter{height:8px;background:var(--bg-page);border:var(--border-width) solid var(--border-color);margin-bottom:8px}.progress-caption{display:flex;justify-content:space-between;align-items:center;font-size:12px}.session-actions{display:flex;gap:12px;padding:16px;background:var(--bg-card);border-top:var(--border-width) solid var(--border-color);position:sticky;bottom:0}.session-actions .session-action{flex:1}.stack{display:flex;flex-direction:column}.stack>*+*{margin-top:0}.speaking-dialog-mode,.dialog-feedback-card,.dialog-input-bar{background:var(--bg-card)!important;border:var(--border-width) solid var(--border-color)!important;border-radius:0!important;box-shadow:none!important}@media (min-width: 768px){.dialog-feedback-card,.dialog-input-bar{box-shadow:var(--shadow-md)!important}}.dialog-input-text{border:var(--border-width) solid var(--border-color)!important;border-radius:0!important;background:var(--bg-input)!important;padding:12px 16px!important}.dialog-input-text:focus{box-shadow:inset 0 0 0 2px var(--accent-cyan)!important;border-color:var(--border-color)!important}.speaking-card .pill,.feedback-mode-badge .pill{border-radius:0!important;border:1px solid var(--border-color)!important}.pill.evaluated{background:var(--accent-cyan)!important;color:#000!important}.pill.draft{background:var(--accent-yellow)!important;color:#000!important}.pill.neutral{background:var(--bg-card)!important;color:var(--text-primary)!important}.refresh-btn-small,.play-btn-mini,.send-btn,.record-circle-btn,.final-record-btn{border:var(--border-width) solid var(--border-color)!important;border-radius:0!important;font-weight:700!important;text-transform:uppercase!important}.play-btn-mini{background:var(--accent-cyan)!important;color:#000!important}.play-btn-mini.primary{background:var(--accent-cyan)!important}.send-btn{background:var(--accent-cyan)!important;color:#000!important;padding:8px 16px!important}.record-circle-btn,.final-record-btn{background:var(--bg-card)!important;color:var(--text-primary)!important}.record-circle-btn.recording,.final-record-btn.recording{background:var(--accent-red)!important;color:#000!important}.feedback-score-matrix{background:var(--bg-page)!important;border:var(--border-width) solid var(--border-color)!important;border-radius:0!important;padding:16px!important}.score-row{padding:8px 0!important;border-bottom:1px solid var(--border-color)!important}.score-row:last-child{border-bottom:none!important}.score-label{font-weight:700!important;text-transform:uppercase!important;font-size:11px!important}.angle-chip{background:var(--bg-card)!important;border:1px solid var(--border-color)!important;border-radius:0!important;padding:4px 8px!important}.indicator-dot{border-radius:0!important;width:8px!important;height:8px!important;border:1px solid var(--border-color)!important;background:var(--bg-card)!important}.indicator-dot.active{background:var(--accent-cyan)!important;width:10px!important;height:10px!important}.msg-chip{border:1px solid var(--border-color)!important;border-radius:0!important;padding:4px 8px!important;font-size:11px!important}.msg-chip.info{background:var(--accent-cyan)!important;color:#000!important}.msg-chip.warn{background:var(--accent-yellow)!important;color:#000!important}.msg-chip.error{background:var(--accent-red)!important;color:#000!important}.session-list{list-style:none!important;padding:16px!important;margin:0!important;border-top:var(--border-width) solid var(--border-color)!important}.session-list li{padding:8px 0!important;border-bottom:1px solid var(--border-color)!important}.session-list li:last-child{border-bottom:none!important}.feedback-thinking-section,.feedback-audio-section,.feedback-better-section{padding:12px!important;border:var(--border-width) solid var(--border-color)!important;margin-bottom:12px!important}.section-label-mini{font-size:11px!important;font-weight:700!important;text-transform:uppercase!important;color:var(--text-secondary)!important;margin-bottom:8px!important}.dialog-feedback-card,.feedback-mode-badge .pill,.feedback-content-section,.feedback-thinking-section,.feedback-audio-section,.feedback-better-section,.feedback-score-matrix{animation:none!important}.refresh-btn-small:hover,.play-btn-mini:hover,.indicator-dot:hover{transform:none!important}.speaking-compact,.listening-compact,.writing-compact{flex:1;display:flex;flex-direction:column;padding:0!important;border:none!important;margin:0!important;min-height:0;overflow:hidden;box-shadow:none!important}.speaking-compact .practice-card-header,.listening-compact .practice-card-header{padding:10px 16px!important;flex-shrink:0;border-bottom:1px solid var(--border-color)}.writing-compact .practice-card-header{padding:12px 16px!important;flex-shrink:0;border-bottom:1px solid var(--border-color);flex-direction:column;align-items:flex-start;gap:8px}.writing-compact .practice-topic-tag{font-size:11px;font-weight:700;text-transform:uppercase;color:var(--text-secondary);letter-spacing:.5px}.writing-compact .practice-question{font-size:18px;font-weight:700;margin:0;line-height:1.4}.writing-compact .practice-cues{display:flex;flex-wrap:wrap;gap:8px}.writing-compact .practice-cues .pill{padding:8px 14px;font-size:13px;font-weight:600}.listening-compact .stack{flex:1;display:flex;flex-direction:column;padding:10px 16px;gap:8px;min-height:0;overflow:hidden}.listening-header{display:flex;justify-content:space-between;align-items:center;gap:12px}.listening-play{width:40px;height:40px;display:flex;align-items:center;justify-content:center;font-size:16px;border:2px solid var(--border-color);background:var(--accent-cyan);color:#000;cursor:pointer}.listening-play:disabled{opacity:.5}.listening-compact .section-label{font-size:11px;margin:0;flex-shrink:0}.listening-input-row{display:flex;gap:8px;flex-shrink:0}.listening-textarea{flex:1;min-height:50px;max-height:60px;font-size:13px;padding:8px 10px;border:2px solid var(--border-color);resize:none;background:var(--bg-input)}.listening-textarea:focus{outline:none;border-color:var(--accent-cyan)}.listening-submit-btn{padding:0 16px;font-size:12px;font-weight:700;border:2px solid var(--border-color);background:var(--accent-cyan);color:#000;cursor:pointer;white-space:nowrap}.listening-compact .recall-result{flex:1;min-height:0;overflow-y:auto;padding:10px;border:1px solid var(--border-color);background:var(--bg-page);scrollbar-width:none}.listening-compact .coverage-row{display:flex;align-items:center;gap:8px;margin-bottom:8px;flex-shrink:0}.listening-compact .coverage-bar{flex:1;height:6px;background:var(--bg-input);border:1px solid var(--border-color)}.listening-compact .coverage-fill{display:block;height:100%;background:var(--accent-green)}.listening-compact .coverage-label{font-size:12px;font-weight:700;white-space:nowrap}.listening-compact .recall-block{margin-top:8px}.listening-compact .diff-panel{display:flex;flex-wrap:wrap;gap:4px;font-size:12px}.listening-compact .session-action{padding:4px 10px;font-size:11px}.listening-compact .recall-result::-webkit-scrollbar{width:0;height:0}.listening-compact .ai-panel{font-size:11px}.listening-compact .ai-label{font-size:10px;margin:6px 0 4px}.listening-compact .pill-row{display:flex;flex-wrap:wrap;gap:4px}.listening-compact .recall-list{margin:4px 0;padding-left:16px;font-size:11px}.listening-compact .recall-list li{margin-bottom:2px}.writing-compact .writing-input-area{padding:10px 16px;flex-shrink:0}.writing-input-row{display:flex;gap:8px;align-items:flex-start}.writing-textarea{flex:1;font-size:13px;padding:8px 10px;border:2px solid var(--border-color);resize:none;background:var(--bg-input);min-height:60px}.writing-textarea:focus{outline:none;border-color:var(--accent-cyan)}.writing-submit-btn{padding:0 16px;font-size:12px;font-weight:700;border:2px solid var(--border-color);background:var(--accent-cyan);color:#000;cursor:pointer;white-space:nowrap;align-self:flex-start;height:44px}.writing-result{flex:1;min-height:0;padding:10px 16px;border-top:1px solid var(--border-color);display:flex;flex-direction:column;gap:8px;overflow-y:auto;scrollbar-width:none}.writing-result::-webkit-scrollbar{width:0;height:0}.writing-coverage{display:flex;align-items:center;gap:8px}.writing-bar{flex:1;height:6px;background:var(--bg-input);border:1px solid var(--border-color)}.writing-fill{display:block;height:100%;background:var(--accent-green)}.writing-percent{font-size:13px;font-weight:700;min-width:36px}.writing-toggle{padding:4px 10px;font-size:11px;font-weight:700;border:2px solid var(--border-color);background:var(--bg-card);cursor:pointer}.writing-reference{padding:8px;border:1px solid var(--border-color);background:var(--bg-page);max-height:100px;overflow-y:auto;scrollbar-width:none}.writing-reference::-webkit-scrollbar{width:0;height:0}.writing-diff{font-size:11px;line-height:1.4}.diff-chip.missing{background:var(--accent-red);color:#fff;padding:0 2px}.writing-missing{display:flex;flex-wrap:wrap;gap:4px}.writing-tag{font-size:10px;padding:2px 6px;border:1px solid var(--border-color);background:var(--bg-card)}.writing-hint{font-size:11px;color:var(--text-secondary);margin:0}.writing-compact .recall-result{flex:1;min-height:0;overflow-y:auto;padding:10px;border:1px solid var(--border-color);background:var(--bg-page);margin:0 16px 16px;scrollbar-width:none}.writing-compact .recall-result::-webkit-scrollbar{width:0;height:0}.writing-compact .coverage-row{display:flex;align-items:center;gap:8px;margin-bottom:8px;flex-shrink:0}.writing-compact .coverage-bar{flex:1;height:6px;background:var(--bg-input);border:1px solid var(--border-color)}.writing-compact .coverage-fill{display:block;height:100%;background:var(--accent-green)}.writing-compact .coverage-label{font-size:12px;font-weight:700;white-space:nowrap}.writing-compact .recall-block{margin-top:8px}.writing-compact .diff-panel{display:flex;flex-wrap:wrap;gap:4px;font-size:12px}.writing-compact .recall-actions{padding:8px 0;border-top:none}.writing-compact .session-action{padding:4px 10px;font-size:11px}.writing-compact .ai-panel{font-size:11px}.writing-compact .recall-list{margin:4px 0;padding-left:16px;font-size:11px}.writing-compact .recall-list li{margin-bottom:2px}.writing-compact .recall-actions{padding:8px 16px;border-top:none}.writing-compact .recall-block{padding:0 16px 12px}.writing-compact .recall-block .section-label{font-size:11px;margin-bottom:4px}.writing-compact .recall-block .session-body{font-size:13px;line-height:1.6;padding:8px;background:var(--bg-page);border:1px solid var(--border-color)}.writing-cloze-compact{flex:1;display:flex;flex-direction:column;padding:0!important;border:none!important;margin:0!important;min-height:0;overflow:hidden;box-shadow:none!important}.writing-cloze-compact .practice-card-header{padding:10px 16px!important;flex-shrink:0;border-bottom:1px solid var(--border-color);display:flex;justify-content:space-between;align-items:center}.cloze-body{flex:1;display:flex;flex-direction:column;padding:12px 16px;min-height:0;overflow-y:auto;scrollbar-width:none}.cloze-body::-webkit-scrollbar{width:0;height:0}.cloze-text{font-size:14px;line-height:2.2;flex:1}.cloze-blank-wrap{display:inline}.cloze-input{display:inline-block;width:120px;padding:4px 8px;margin:0 4px;font-size:13px;font-weight:700;border:2px solid var(--border-color);background:var(--bg-input);vertical-align:middle}.cloze-input:focus{outline:none;border-color:var(--accent-cyan);background:var(--bg-card)}.cloze-input::placeholder{color:var(--text-secondary);font-weight:400}.cloze-submit{flex-shrink:0;margin-top:12px}.cloze-btn{padding:10px 24px;font-size:13px;font-weight:700;text-transform:uppercase;border:2px solid var(--border-color);background:var(--accent-cyan);color:#000;cursor:pointer}.cloze-btn:disabled{opacity:.5;cursor:not-allowed}.cloze-result{padding:10px 16px;border-top:2px solid var(--border-color);display:flex;align-items:center;gap:12px;flex-shrink:0}.cloze-score{font-size:20px;font-weight:900;font-family:var(--font-mono)}.cloze-answers{display:flex;flex-wrap:wrap;gap:6px}.cloze-answer{font-size:11px;padding:2px 8px;border:2px solid var(--border-color)}.cloze-answer.correct{background:var(--accent-green);color:#000}.cloze-answer.wrong{background:var(--accent-red);color:#000}.vocab-compact{flex:1;display:flex;flex-direction:column;padding:0!important;border:none!important;margin:0!important;min-height:0;overflow:hidden;box-shadow:none!important}.vocab-compact .practice-card-header{padding:10px 16px!important;flex-shrink:0;border-bottom:1px solid var(--border-color)}.vocab-compact .flip-card{flex:1;min-height:80px;perspective:1000px;margin:10px 16px}.vocab-compact .flip-card-inner{position:relative;width:100%;height:100%;transition:transform .4s;transform-style:preserve-3d}.vocab-compact .flip-card.flipped .flip-card-inner{transform:rotateY(180deg)}.vocab-compact .flip-face{position:absolute;width:100%;height:100%;backface-visibility:hidden;border:2px solid var(--border-color);background:var(--bg-card);display:flex;flex-direction:column;align-items:center;justify-content:center;padding:16px;text-align:center}.vocab-compact .flip-back{transform:rotateY(180deg)}.vocab-compact .mega{font-size:18px;font-weight:700;margin:0}.vocab-compact .vocab-examples{font-size:11px;margin:8px 0 0;padding-left:16px;text-align:left}.vocab-input-area{padding:10px 16px;flex-shrink:0;border-top:1px solid var(--border-color)}.vocab-input-row{display:flex;gap:6px}.vocab-input{flex:1;padding:8px 10px;font-size:13px;border:2px solid var(--border-color);background:var(--bg-input)}.vocab-input:focus{outline:none;border-color:var(--accent-cyan)}.vocab-btn{padding:8px 12px;font-size:12px;font-weight:700;border:2px solid var(--border-color);background:var(--bg-card);cursor:pointer}.vocab-btn.primary{background:var(--accent-cyan);color:#000}.vocab-status{font-size:11px;margin:6px 0 0;font-weight:700}.vocab-status.success{color:var(--accent-green)}.vocab-status.danger{color:var(--accent-red)}.practice-topic-tag{display:inline-block;font-size:11px;font-weight:700;text-transform:uppercase;color:var(--text-secondary);letter-spacing:.5px;margin-bottom:4px}.practice-question{font-size:18px;font-weight:700;margin:0;line-height:1.4}.listening-compact .practice-question{font-size:16px}.practice-cues{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}.practice-cues .pill{font-size:11px;padding:3px 8px;border:2px solid var(--border-color)}.speaking-compact .dialog-main-area{padding:12px!important;gap:8px!important}.speaking-compact .dialog-input-bar{padding:8px!important;border:none!important;box-shadow:none!important}.speaking-compact .dialog-input-text{min-height:40px!important;padding:8px 12px!important;font-size:13px!important}.speaking-compact .input-actions-vertical{gap:4px!important}.speaking-compact .record-circle-btn,.speaking-compact .send-btn,.speaking-compact .final-record-btn{padding:6px 10px!important;font-size:12px!important}.speaking-compact .dialog-feedback-card{padding:12px!important;max-height:200px;overflow-y:auto;scrollbar-width:none}.speaking-compact .dialog-feedback-card::-webkit-scrollbar{width:0;height:0}.speaking-compact .feedback-card-header{margin-bottom:8px!important}.speaking-compact .feedback-thinking-section,.speaking-compact .feedback-audio-section,.speaking-compact .feedback-better-section{padding:8px!important;margin-bottom:8px!important}.speaking-compact .section-label-mini{font-size:10px!important;margin-bottom:4px!important}.speaking-compact .feedback-summary,.speaking-compact .feedback-text{font-size:13px!important;line-height:1.4!important}.speaking-compact .thinking-angles{gap:4px!important}.speaking-compact .angle-chip{font-size:10px!important;padding:2px 6px!important}.speaking-compact .feedback-score-matrix{padding:8px!important}.speaking-compact .score-row{padding:4px 0!important}.speaking-compact .play-btn-mini{padding:4px 8px!important;font-size:11px!important}.speaking-compact .inline-messages{margin-bottom:6px}.speaking-compact .msg-chip{font-size:10px!important;padding:2px 6px!important}.speaking-compact .history-indicator-right{right:4px!important}.speaking-compact .indicator-dot{width:6px!important;height:6px!important}.speaking-compact .indicator-dot.active{width:8px!important;height:8px!important}.speaking-compact .indicator-text{font-size:9px!important}.listening-compact .listening-head{padding:12px!important}.listening-compact .segment-chip{padding:8px 12px!important}.listening-compact .segment-chip span{font-size:10px!important}.listening-compact .segment-chip strong{font-size:12px!important}.listening-compact .listening-actions{padding:8px 12px!important;gap:8px!important}.listening-compact .session-action{padding:8px 12px!important;font-size:12px!important}.listening-compact .recall-input{min-height:80px!important;padding:10px!important;font-size:13px!important}.listening-compact .recall-actions,.compact-padding{padding:8px 12px!important}.compact-gap{gap:6px!important}.compact-text{font-size:12px!important}.speaking-input-row{display:flex;gap:8px;padding:12px 16px;flex-shrink:0;border-bottom:1px solid var(--border-color);max-width:100%;box-sizing:border-box}.speaking-input{flex:1;min-width:0;padding:10px 14px;border:2px solid var(--border-color);font-size:16px;background:var(--bg-input)}.speaking-input:focus{outline:none;border-color:var(--accent-cyan)}.speaking-actions-row{display:flex;gap:6px;flex-shrink:0}.speaking-btn{width:44px;height:44px;display:flex;align-items:center;justify-content:center;border:2px solid var(--border-color);background:var(--bg-card);font-size:16px;font-weight:700;cursor:pointer}.speaking-btn.primary{background:var(--accent-cyan);color:#000}.speaking-btn.record{background:var(--bg-card)}.speaking-btn.recording{background:var(--accent-red)!important;color:#fff!important;animation:pulse 1s infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.7}}.speaking-btn:disabled{opacity:.4;cursor:not-allowed}.speaking-feedback-carousel{display:flex;flex-direction:column;flex:1;min-height:0;padding:12px;background:var(--bg-page);overflow:hidden}.carousel-dots{display:flex;justify-content:center;gap:8px;padding:12px 0;margin-top:auto}.carousel-dot{width:8px;height:8px;background:var(--border-color);border-radius:50%;cursor:pointer;transition:all .2s ease}.carousel-dot.active{background:var(--accent-cyan);width:24px;border-radius:4px}.feedback-content-fixed{transition:opacity .15s ease}.feedback-content-fixed.slide-left,.feedback-content-fixed.slide-right{opacity:.3}.feedback-content-fixed{display:flex;flex-direction:column;gap:10px;flex:1;min-height:0;overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain}.feedback-status-row{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.status-badge{font-size:12px;font-weight:700;text-transform:uppercase;padding:6px 12px;border:2px solid var(--border-color)}.status-badge.evaluated{background:var(--accent-cyan);color:#000}.status-badge.draft{background:var(--accent-yellow);color:#000}.status-badge.empty{background:var(--bg-card)}.refresh-btn{width:32px;height:32px;display:flex;align-items:center;justify-content:center;border:2px solid var(--border-color);background:var(--bg-card);font-size:16px;cursor:pointer}.feedback-text{font-size:13px;line-height:1.5;margin:0 0 12px;flex:1;overflow-y:auto;scrollbar-width:none}.feedback-text::-webkit-scrollbar{width:0;height:0}.feedback-angles{display:flex;flex-wrap:wrap;gap:6px}.angle-tag{font-size:11px;padding:4px 10px;background:var(--bg-card);border:2px solid var(--border-color)}.feedback-result{display:flex;flex-direction:column;gap:12px}.feedback-transcript,.feedback-better{font-size:13px}.feedback-transcript .label,.feedback-better .label{font-weight:700;display:block;margin-bottom:4px;color:var(--text-secondary)}.feedback-transcript p,.feedback-better p{margin:0;line-height:1.5}.feedback-better{padding-top:8px;border-top:1px dashed var(--border-color)}.feedback-scores{display:flex;flex-wrap:wrap;gap:8px 12px;font-size:12px;font-weight:700;padding-top:8px;border-top:1px solid var(--border-color)}.feedback-loading{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;gap:20px}.loading-spinner{display:flex;gap:6px;align-items:flex-end;height:32px}.loading-spinner:before,.loading-spinner:after,.loading-spinner span{content:"";width:8px;background:var(--border-color);animation:loading-bounce 1s ease-in-out infinite}.loading-spinner:before{height:16px;animation-delay:0s}.loading-spinner span{height:24px;animation-delay:.15s;background:var(--accent-cyan)}.loading-spinner:after{height:16px;animation-delay:.3s}@keyframes loading-bounce{0%,to{transform:scaleY(1)}50%{transform:scaleY(1.8)}}.loading-text{margin:0;font-size:13px;font-weight:600;color:var(--text-secondary);text-transform:uppercase;letter-spacing:1px}.loading-text:after{content:"";animation:loading-dots 1.5s steps(4,end) infinite}@keyframes loading-dots{0%{content:""}25%{content:"."}50%{content:".."}75%{content:"..."}to{content:""}}.feedback-empty{display:flex;align-items:center;justify-content:center;height:100%;color:var(--text-secondary);font-size:13px;border:2px dashed var(--border-color)}.writing-compact .practice-card-header:has(.topic-recall-title){flex-direction:column;align-items:flex-start;gap:4px}.topic-recall-title{font-size:20px;text-transform:uppercase;letter-spacing:1px}.topic-recall-hint{font-size:12px;color:var(--text-secondary);margin-top:4px}.topic-recall-content{flex:1;display:flex;flex-direction:column;padding:16px;overflow-y:auto;scrollbar-gutter:stable;scrollbar-width:none}.topic-recall-content::-webkit-scrollbar{width:0;height:0}.topic-recall-reveal-btn{width:100%;padding:16px;font-size:14px;font-weight:700;background:var(--bg-secondary);border:3px solid var(--border-color);cursor:pointer;text-transform:uppercase}.topic-recall-reveal-btn:hover{background:var(--bg-hover)}.topic-preview-hints{display:flex;justify-content:center;gap:1rem;padding:.5rem;font-size:.7rem;color:var(--text-muted)}.topic-preview-hints .hint-item{opacity:.7}.topic-dictation-filled-count{font-size:.85rem;color:var(--text-muted)}.topic-recall-list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:8px}.topic-recall-item-wrapper{display:flex;flex-direction:column}.topic-recall-item-wrapper.focused .topic-recall-item{background:var(--bg-hover);border-color:var(--accent-blue, #4a90d9);outline:2px solid var(--accent-blue, #4a90d9);outline-offset:-2px}.topic-recall-item{display:flex;align-items:center;gap:10px;padding:12px;background:var(--bg-secondary);border:2px solid var(--border-color);cursor:pointer;width:100%;text-align:left;font-family:inherit}.topic-recall-item:hover{background:var(--bg-hover)}.topic-recall-item.expanded{border-bottom:none}.topic-recall-bullet{color:var(--accent-green);font-weight:700;flex-shrink:0}.topic-recall-text{font-size:14px;line-height:1.4;flex:1}.topic-recall-expand-icon{font-size:10px;color:var(--text-secondary);flex-shrink:0}.topic-recall-english{padding:12px;margin-left:26px;background:var(--bg-tertiary);border:2px solid var(--border-color);border-top:none;font-size:13px;line-height:1.6;color:var(--text-secondary)}.topic-recall-row{display:flex;align-items:center;gap:8px}.topic-recall-checkbox{position:relative;display:flex;align-items:center;justify-content:center;flex-shrink:0}.topic-recall-checkbox input{width:18px;height:18px;accent-color:var(--accent-green);cursor:pointer}.topic-recall-ratio{display:flex;align-items:center;justify-content:space-between;padding:12px;margin-top:12px;background:var(--bg-secondary);border:2px solid var(--border-color);font-size:13px}.topic-recall-ratio .pill{font-size:11px;padding:4px 8px}.topic-recall-ratio .pill.success{background:var(--accent-green);color:#fff}.topic-recall-ratio .pill.warn{background:var(--accent-yellow);color:#000}.topic-recall-ratio .pill.danger{background:var(--accent-red);color:#fff}.pwa-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#0009;display:flex;align-items:flex-end;justify-content:center;z-index:9999;padding:16px}.pwa-modal{width:100%;max-width:400px;background:var(--bg-card);border:3px solid var(--border-color);padding:20px;animation:pwa-slide-up .3s ease-out}@keyframes pwa-slide-up{0%{transform:translateY(100%);opacity:0}to{transform:translateY(0);opacity:1}}.pwa-header{display:flex;align-items:center;gap:12px;margin-bottom:16px}.pwa-icon{width:48px;height:48px;border:2px solid var(--border-color);flex-shrink:0}.pwa-icon img{width:100%;height:100%;object-fit:cover}.pwa-title{font-size:18px;font-weight:900;text-transform:uppercase;margin:0}.pwa-subtitle{font-size:12px;color:var(--text-secondary);margin:2px 0 0}.pwa-benefits{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:12px}.pwa-benefit{font-size:11px;padding:4px 8px;background:var(--accent-cyan);border:2px solid var(--border-color);font-weight:600}.pwa-device{font-size:11px;color:var(--text-secondary);margin-bottom:16px;padding:6px 10px;background:var(--bg-secondary, #f5f5f5);border:1px dashed var(--border-color)}.pwa-steps{border:2px solid var(--border-color);margin-bottom:16px}.pwa-step-header{padding:8px 12px;background:var(--border-color);color:var(--bg-card)}.pwa-step-number{font-size:11px;font-weight:700;text-transform:uppercase}.pwa-step-content{display:flex;gap:12px;padding:16px 12px;align-items:flex-start}.pwa-step-icon{width:40px;height:40px;display:flex;align-items:center;justify-content:center;font-size:20px;background:var(--accent-yellow);border:2px solid var(--border-color);flex-shrink:0}.pwa-step-text h3{font-size:14px;font-weight:700;margin:0 0 4px}.pwa-step-text p{font-size:12px;color:var(--text-secondary);margin:0;line-height:1.4}.pwa-dots{display:flex;justify-content:center;gap:8px;padding:12px;border-top:1px solid var(--border-color)}.pwa-dot{width:10px;height:10px;border:2px solid var(--border-color);background:transparent;cursor:pointer;transition:background .2s}.pwa-dot.active{background:var(--accent-cyan)}.pwa-dot.done{background:var(--accent-green)}.pwa-actions{display:flex;gap:8px}.pwa-btn{flex:1;padding:12px 16px;font-size:13px;font-weight:700;text-transform:uppercase;border:2px solid var(--border-color);cursor:pointer;transition:transform .1s}.pwa-btn:active{transform:scale(.98)}.pwa-btn.primary{background:var(--accent-cyan);color:#000}.pwa-btn.secondary{background:var(--bg-card);color:var(--text-primary)}.pwa-skip{display:block;width:100%;margin-top:12px;padding:8px;font-size:11px;color:var(--text-secondary);background:transparent;border:none;cursor:pointer;text-decoration:underline}.topic-dictation{flex:1;display:flex;flex-direction:column;min-height:0;overflow:hidden}.topic-dictation-header{padding:12px 16px;border-bottom:2px solid var(--border-color);flex-shrink:0}.topic-dictation-meta{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.topic-dictation-eyebrow{font-size:11px;font-weight:700;text-transform:uppercase;color:var(--text-secondary);letter-spacing:.5px}.topic-dictation-phase-indicator{font-size:10px;padding:4px 8px;background:var(--bg-terminal);color:#fff;font-weight:700;text-transform:uppercase}.topic-dictation-title{font-size:18px;font-weight:700;margin:0;line-height:1.4}.recall-phase{flex:1;display:flex;flex-direction:column;justify-content:center;align-items:center;padding:32px 20px;min-height:0}.recall-prompt-box{text-align:center;padding:32px 24px;background:var(--bg-secondary);border:2px solid var(--border-color);max-width:320px;width:100%}.recall-count{font-size:18px;line-height:1.5;margin:0 0 12px}.recall-count strong{font-size:28px;font-weight:900;color:var(--accent-cyan)}.recall-hint{font-size:13px;color:var(--text-secondary);margin:0}.recall-footer{margin-top:24px;text-align:center}.recall-footer .btn{padding:12px 32px;font-size:14px}.preview-phase{flex:1;display:flex;flex-direction:column;min-height:0;overflow:hidden}.preview-instructions{padding:10px 16px;background:var(--accent-yellow);border-bottom:2px solid var(--border-color);font-size:12px;color:#000;flex-shrink:0}.preview-sentence-list{flex:1;overflow-y:auto;padding:12px 16px;scrollbar-width:none}.preview-sentence-list::-webkit-scrollbar{width:0;height:0}.preview-sentence-item{display:flex;align-items:flex-start;gap:10px;padding:10px 12px;margin-bottom:8px;background:var(--bg-secondary);border:2px solid var(--border-color);cursor:pointer}.preview-sentence-item:hover{background:var(--bg-hover)}.preview-sentence-item.expanded{border-bottom-left-radius:0;border-bottom-right-radius:0}.preview-checkbox{flex-shrink:0;margin-top:2px}.preview-checkbox input{width:18px;height:18px;accent-color:var(--accent-green);cursor:pointer}.preview-sentence-content{flex:1;min-width:0}.preview-sentence-index{font-size:10px;font-weight:700;color:var(--text-secondary);margin-bottom:4px}.preview-sentence-chinese{font-size:14px;line-height:1.5}.preview-sentence-english{margin-top:8px;padding:8px 10px;background:var(--bg-tertiary);border:1px dashed var(--border-color);font-size:13px;line-height:1.5;color:var(--text-secondary)}.preview-expand-icon{font-size:10px;color:var(--text-secondary);flex-shrink:0;margin-top:4px}.preview-footer{padding:12px 16px;border-top:2px solid var(--border-color);display:flex;justify-content:space-between;align-items:center;flex-shrink:0}.preview-recall-ratio{font-size:12px;display:flex;align-items:center;gap:8px}.preview-recall-ratio .pill{font-size:11px;padding:4px 8px}.preview-start-btn{padding:10px 20px;font-size:13px;font-weight:700;text-transform:uppercase;background:var(--accent-cyan);border:2px solid var(--border-color);color:#000;cursor:pointer}.preview-start-btn:hover{background:var(--accent-cyan-hover, #5be0d4)}.dictation-phase{flex:1;display:flex;flex-direction:column;min-height:0;overflow:hidden}.dictation-progress{padding:8px 16px;border-bottom:1px solid var(--border-color);display:flex;justify-content:space-between;align-items:center;flex-shrink:0}.dictation-progress-text{font-size:12px;font-weight:700;color:var(--text-secondary)}.dictation-progress-bar{flex:1;height:4px;background:var(--bg-input);margin:0 12px;border:1px solid var(--border-color)}.dictation-progress-fill{height:100%;background:var(--accent-cyan);transition:width .3s ease}.dictation-content{flex:1;display:flex;flex-direction:column;padding:16px;min-height:0;overflow:hidden}.dictation-prompt{margin-bottom:12px;flex-shrink:0}.dictation-prompt-label{font-size:11px;font-weight:700;text-transform:uppercase;color:var(--text-secondary);margin-bottom:6px}.dictation-prompt-text{font-size:16px;line-height:1.5;padding:12px;background:var(--bg-secondary);border:2px solid var(--border-color)}.dictation-input-area{flex:1;display:flex;flex-direction:column;min-height:0}.dictation-input-label{font-size:11px;font-weight:700;text-transform:uppercase;color:var(--text-secondary);margin-bottom:6px}.dictation-textarea{flex:1;min-height:80px;padding:12px;font-size:14px;line-height:1.6;border:2px solid var(--border-color);background:var(--bg-input);resize:none}.dictation-textarea:focus{outline:none;border-color:var(--accent-cyan)}.dictation-textarea::placeholder{color:var(--text-secondary)}.dictation-nav{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;border-top:2px solid var(--border-color);flex-shrink:0}.dictation-nav-btn{padding:8px 16px;font-size:12px;font-weight:700;text-transform:uppercase;border:2px solid var(--border-color);background:var(--bg-card);cursor:pointer}.dictation-nav-btn:disabled{opacity:.4;cursor:not-allowed}.dictation-nav-btn.primary{background:var(--accent-cyan);color:#000}.dictation-submit-btn{padding:10px 20px;font-size:13px;font-weight:700;text-transform:uppercase;background:var(--accent-green);border:2px solid var(--border-color);color:#000;cursor:pointer}.result-phase{flex:1;display:flex;flex-direction:column;min-height:0;overflow:hidden}.result-summary{padding:16px;background:var(--bg-secondary);border-bottom:2px solid var(--border-color);flex-shrink:0}.result-coverage{display:flex;align-items:center;gap:12px;margin-bottom:8px}.result-coverage-value{font-size:32px;font-weight:900;font-family:var(--font-mono)}.result-coverage-bar{flex:1;height:8px;background:var(--bg-input);border:1px solid var(--border-color)}.result-coverage-fill{height:100%;background:var(--accent-green)}.result-coverage-fill.medium{background:var(--accent-yellow)}.result-coverage-fill.low{background:var(--accent-red)}.result-stats{display:flex;gap:16px;font-size:12px;color:var(--text-secondary)}.result-sentence-list{flex:1;overflow-y:auto;padding:12px 16px;scrollbar-width:none}.result-sentence-list::-webkit-scrollbar{width:0;height:0}.sentence-diff-result{margin-bottom:12px;border:2px solid var(--border-color)}.sentence-diff-header{display:flex;justify-content:space-between;align-items:center;padding:10px 12px;background:var(--bg-secondary);cursor:pointer}.sentence-diff-header:hover{background:var(--bg-hover)}.sentence-diff-index{font-size:11px;font-weight:700;color:var(--text-secondary)}.sentence-diff-score{font-size:14px;font-weight:700;font-family:var(--font-mono)}.sentence-diff-score.high{color:var(--accent-green)}.sentence-diff-score.medium{color:var(--accent-yellow)}.sentence-diff-score.low{color:var(--accent-red)}.sentence-diff-expand{font-size:10px;color:var(--text-secondary)}.sentence-diff-body{padding:12px;border-top:1px solid var(--border-color)}.sentence-diff-section{margin-bottom:10px}.sentence-diff-section:last-child{margin-bottom:0}.sentence-diff-label{font-size:10px;font-weight:700;text-transform:uppercase;color:var(--text-secondary);margin-bottom:4px}.sentence-diff-text{font-size:13px;line-height:1.5}.sentence-diff-text.chinese{color:var(--text-secondary)}.sentence-diff-panel{display:flex;flex-wrap:wrap;gap:4px;padding:8px;background:var(--bg-page);border:1px solid var(--border-color)}.weekly-progress-mobile{margin:0 16px 16px;padding:12px 16px;background:var(--bg-card);border:2px solid var(--border-color)}.weekly-progress-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px;font-size:12px}.weekly-progress-header span:first-child{font-weight:700;text-transform:uppercase}.weekly-progress-header span:last-child{color:var(--text-muted)}.weekly-progress-bar-mobile{height:8px;background:var(--bg-input);border:1px solid var(--border-color);margin-bottom:8px}.weekly-progress-fill-mobile{height:100%;background:var(--accent-green);transition:width .3s ease}.weekly-progress-footer{display:flex;justify-content:space-between;font-size:13px}.weekly-progress-footer span:first-child{font-weight:700}.weekly-progress-footer span:last-child{color:var(--accent-green);font-weight:600}.weekly-progress-mini{display:flex;align-items:center;gap:12px}.weekly-progress-bar-mini{width:120px;height:6px;background:var(--bg-input);border:1px solid var(--border-color)}.weekly-progress-fill-mini{height:100%;background:var(--accent-green);transition:width .3s ease}.weekly-progress-text-mini{font-size:13px;font-weight:600;white-space:nowrap}@media (min-width: 1024px){.weekly-progress-mobile{display:none}}@media (max-width: 1023px){.stats-bar-desktop .weekly-progress-mini{display:none}}.topic-dictation-hint{font-size:12px;color:var(--text-secondary);margin:4px 0 0}.topic-dictation-body{flex:1;display:flex;flex-direction:column;min-height:0;overflow:hidden}.topic-dictation-recall-box{text-align:center;padding:24px 20px;background:var(--bg-secondary);border:2px solid var(--border-color);margin-bottom:16px}.topic-dictation-count{font-size:16px;line-height:1.5;margin:0 0 8px}.topic-dictation-count strong{font-size:24px;font-weight:900;color:var(--accent-cyan)}.topic-dictation-recall-hint{font-size:13px;color:var(--text-secondary);margin:0}.topic-dictation-phase{gap:12px}.topic-dictation-progress{display:flex;align-items:center;gap:12px;padding:8px 0;border-bottom:1px solid var(--border-color)}.topic-dictation-progress-text{font-size:12px;font-weight:700;color:var(--text-secondary);white-space:nowrap}.topic-dictation-progress-bar{flex:1;height:4px;background:var(--bg-input);border:1px solid var(--border-color)}.topic-dictation-progress-fill{height:100%;background:var(--accent-cyan);transition:width .3s ease}.topic-dictation-prompt{padding:12px;background:var(--bg-secondary);border:2px solid var(--border-color)}.topic-dictation-hint-toggle{background:none;border:none;color:var(--text-secondary);font-size:14px;cursor:pointer;padding:4px 0;text-align:left}.topic-dictation-hint-toggle:hover{color:var(--text-primary)}.topic-dictation-prompt-text{font-size:16px;line-height:1.5;margin:8px 0 0}.topic-dictation-nav{display:flex;gap:8px;justify-content:center}.topic-dictation-summary{padding:12px;background:var(--bg-secondary);border:2px solid var(--border-color);margin-bottom:12px}.topic-dictation-coverage-row{display:flex;align-items:center;gap:12px;margin-bottom:8px}.topic-dictation-coverage-value{font-size:28px;font-weight:900;font-family:var(--font-mono);min-width:60px}.topic-dictation-coverage-bar{flex:1;height:8px;background:var(--bg-input);border:1px solid var(--border-color)}.topic-dictation-coverage-fill{height:100%;transition:width .3s ease}.topic-dictation-coverage-fill.success{background:var(--accent-green)}.topic-dictation-coverage-fill.warn{background:var(--accent-yellow)}.topic-dictation-coverage-fill.danger{background:var(--accent-red)}.topic-dictation-results{flex:1;overflow-y:auto;scrollbar-width:none;display:flex;flex-direction:column;gap:8px}.topic-dictation-results::-webkit-scrollbar{width:0;height:0}.sentence-result{border:2px solid var(--border-color);background:var(--bg-card)}.sentence-result-header{display:flex;align-items:center;gap:10px;padding:10px 12px;background:var(--bg-secondary);border:none;width:100%;text-align:left;cursor:pointer;font-family:inherit}.sentence-result-header:hover{background:var(--bg-hover)}.sentence-index{font-size:11px;font-weight:700;color:var(--text-secondary);min-width:24px}.sentence-chinese{flex:1;font-size:13px;line-height:1.4;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.coverage-badge{font-size:12px;font-weight:700;padding:2px 8px;border:1px solid var(--border-color)}.coverage-badge.good{background:var(--accent-green);color:#000}.coverage-badge.partial{background:var(--accent-yellow);color:#000}.coverage-badge.weak{background:var(--accent-red);color:#fff}.sentence-result .expand-icon{font-size:10px;color:var(--text-secondary)}.sentence-result-body{padding:12px;border-top:1px solid var(--border-color)}.diff-section,.answer-section{margin-bottom:12px}.diff-section:last-child,.answer-section:last-child{margin-bottom:0}.user-answer{font-size:13px;line-height:1.5;margin:0;padding:8px;background:var(--bg-page);border:1px solid var(--border-color)}.standard-answer{font-size:13px;line-height:1.5;margin:0;padding:8px;background:var(--bg-secondary);border:1px solid var(--border-color);color:var(--text-primary)}
