.toast-container[data-v-0df0f69a]{z-index:10000;flex-direction:column;gap:10px;display:flex;position:fixed;top:20px;right:20px}.toast[data-v-0df0f69a]{border-radius:10px;max-width:350px;padding:12px 20px;font-size:14px;transition:opacity .3s,transform .3s;animation:.3s slideIn-0df0f69a;display:block;box-shadow:0 4px 12px #00000026}.toast-success[data-v-0df0f69a]{color:#166534;background:#dcfce7}.toast-error[data-v-0df0f69a]{color:#991b1b;background:#fee2e2}.toast-warning[data-v-0df0f69a]{color:#92400e;background:#fef3c7}.toast-info[data-v-0df0f69a]{color:#1e40af;background:#dbeafe}.toast-hidden[data-v-0df0f69a]{opacity:0;transform:translate(100%)}@keyframes slideIn-0df0f69a{0%{opacity:0;transform:translate(100%)}to{opacity:1;transform:translate(0)}}:root{--primary:#22c55e;--primary-dark:#16a34a;--primary-light:#86efac;--primary-bg:#f0fdf4;--secondary:#f59e0b;--danger:#ef4444;--info:#3b82f6;--text-dark:#1f2937;--text-light:#6b7280;--border:#e5e7eb;--shadow:0 4px 6px -1px #0000001a}*{box-sizing:border-box;margin:0;padding:0}body{background:linear-gradient(135deg,#f0fdf4 0%,#dcfce7 50%,#bbf7d0 100%);min-height:100vh;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif}.login-container{justify-content:center;align-items:center;min-height:100vh;padding:20px;display:flex}.login-box{text-align:center;background:#fff;border-radius:20px;width:100%;max-width:420px;padding:40px;box-shadow:0 20px 40px #0000001a}.login-logo{margin-bottom:10px;font-size:48px}.login-title{color:var(--primary-dark);margin-bottom:5px;font-size:24px;font-weight:700}.login-subtitle{color:var(--text-light);margin-bottom:30px;font-size:14px}.login-tabs{gap:10px;margin-bottom:25px;display:flex}.login-tab{border:2px solid var(--border);cursor:pointer;background:#fff;border-radius:12px;flex:1;padding:12px;font-size:16px;font-weight:500;transition:all .3s}.login-tab.active{border-color:var(--primary);background:var(--primary-bg);color:var(--primary-dark)}.login-form{display:none}.login-form.active{display:block}.form-group{text-align:left;margin-bottom:20px}.form-label{color:var(--text-dark);margin-bottom:8px;font-weight:500;display:block}.form-input{border:2px solid var(--border);border-radius:12px;width:100%;padding:14px 16px;font-size:16px;transition:border-color .3s}.form-input:focus{border-color:var(--primary);outline:none}.btn{cursor:pointer;border:none;border-radius:12px;padding:14px 24px;font-size:16px;font-weight:600;transition:all .3s}.btn-primary{background:linear-gradient(135deg, var(--primary) 0%, var(--primary-dark) 100%);color:#fff;width:100%}.btn-primary:hover{transform:translateY(-2px);box-shadow:0 6px 20px #22c55e66}.btn-secondary{color:var(--primary);border:2px solid var(--primary);background:#fff}.btn-secondary:hover{background:var(--primary-bg)}.btn-warning{color:#fff;cursor:pointer;background:linear-gradient(135deg,#f59e0b,#d97706);border:none;border-radius:8px;padding:10px 20px;font-size:14px}.btn-warning:hover{opacity:.9}.btn-small{padding:8px 16px;font-size:14px}.login-tip{color:#92400e;background:#fef3c7;border-radius:12px;margin-top:20px;padding:15px;font-size:13px}.login-tip:before{content:"💡 "}.app-container{min-height:100vh;display:none}.app-container.active{height:100vh;display:flex;overflow:hidden}.left-panel{flex:1;min-width:0;height:100vh;overflow-y:auto}.right-panel{background:#fafafa;border-left:1px solid #d1fae5;flex-direction:column;flex-shrink:0;width:420px;height:100vh;transition:transform .4s cubic-bezier(.4,0,.2,1),width .4s cubic-bezier(.4,0,.2,1),opacity .3s;display:none;position:relative;right:0;overflow:hidden;box-shadow:-2px 0 20px #22c55e14}.right-panel.agent-panel-collapsed{opacity:0;border-left-width:0;width:0;transform:translate(100%)}.recording-agent-hint{color:#92400e;z-index:999;opacity:0;visibility:hidden;background:linear-gradient(135deg,#fef3c7 0%,#fde68a 100%);border-radius:12px;align-items:center;gap:10px;padding:16px 20px;font-size:14px;transition:opacity .3s,visibility .3s,transform .3s;display:flex;position:fixed;top:50%;right:20px;transform:translateY(-50%);box-shadow:0 4px 15px #f59e0b4d}.recording-agent-hint.visible{opacity:1;visibility:visible}.recording-agent-hint .hint-icon{font-size:24px;animation:1.5s ease-in-out infinite pulse-hint}@keyframes pulse-hint{0%,to{transform:scale(1)}50%{transform:scale(1.1)}}.recording-agent-hint .hint-text{line-height:1.5}.recording-agent-hint .hint-text strong{margin-bottom:2px;font-size:15px;display:block}.ai-header{background:linear-gradient(135deg,#f0fdf4 0%,#ecfdf5 100%);border-bottom:1px solid #d1fae5;justify-content:space-between;align-items:center;padding:6px 12px;display:flex}.ai-header-left{align-items:center;gap:6px;display:flex}.ai-avatar{object-fit:cover;border:2px solid #86efac;border-radius:50%;width:28px;height:28px}.ai-header-info{flex-direction:column;display:flex}.ai-title{color:#166534;margin:0;font-size:13px;font-weight:700;line-height:1.2}.ai-subtitle{color:#15803d;opacity:.85;margin:0;font-size:10px;line-height:1.2}.ai-refresh-btn{cursor:pointer;color:#166534;background:#fff;border:1px solid #bbf7d0;border-radius:50%;justify-content:center;align-items:center;width:28px;height:28px;font-size:14px;transition:all .25s;display:flex}.ai-refresh-btn:hover{background:#dcfce7;border-color:#86efac;transform:rotate(90deg);box-shadow:0 2px 8px #22c55e33}.ai-iframe-wrap,#floatChatIframeWrap{background:#f8fafc;flex:1;position:relative;overflow:hidden}.ai-iframe-wrap iframe,#floatChatIframeWrap iframe{background:#fff;border:none;border-radius:0;width:100%;height:100%}.ai-iframe-mask{z-index:10;pointer-events:none;background:linear-gradient(#f0fdf4f2 0%,#f0fdf400 100%);height:36px;position:absolute;top:0;left:0;right:0}.navbar{box-shadow:var(--shadow);z-index:100;background:#fff;justify-content:space-between;align-items:center;padding:15px 30px;display:flex;position:sticky;top:0}.navbar-brand{color:var(--primary-dark);align-items:center;gap:10px;font-size:20px;font-weight:700;display:flex}.navbar-brand span:first-child{font-size:28px}.navbar-user{align-items:center;gap:15px;display:flex}.user-info{align-items:center;gap:10px;display:flex}.user-avatar{background:var(--primary);color:#fff;border-radius:50%;justify-content:center;align-items:center;width:40px;height:40px;font-weight:700;display:flex}.user-name{font-weight:500}.user-role{color:var(--text-light);background:var(--primary-bg);border-radius:10px;padding:2px 8px;font-size:12px}.btn-logout{color:var(--danger);cursor:pointer;background:#fee2e2;border:none;border-radius:8px;padding:8px 16px;font-size:14px}.card{box-shadow:var(--shadow);background:#fff;border-radius:16px;margin-bottom:20px;padding:24px}.card-header{justify-content:space-between;align-items:center;margin-bottom:20px;display:flex}.card-title{color:var(--text-dark);align-items:center;gap:8px;font-size:18px;font-weight:600;display:flex}.assignment-grid{grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:20px;display:grid}.assignment-card{box-shadow:var(--shadow);cursor:pointer;background:#fff;border-radius:16px;padding:24px;transition:transform .3s,box-shadow .3s}.assignment-card:hover{transform:translateY(-5px);box-shadow:0 10px 30px #00000026}.delete-btn:hover{color:#fff!important;background:#ef4444!important}.past-assignments-header:hover{background:#e5e7eb}#pastAssignmentsContainer .card{margin-top:10px}.assignment-status{border-radius:20px;padding:4px 12px;font-size:12px;font-weight:500;display:inline-block}.status-pending{color:#92400e;background:#fef3c7}.status-done{color:#065f46;background:#d1fae5}.status-redo{color:#991b1b;background:#fee2e2}.assignment-title{color:var(--text-dark);margin:12px 0;font-size:18px;font-weight:600}.assignment-desc{color:var(--text-light);margin-bottom:15px;font-size:14px;line-height:1.6}.assignment-meta{color:var(--text-light);gap:15px;font-size:13px;display:flex}.assignment-meta span{align-items:center;gap:5px;display:flex}.tabs{border-bottom:2px solid var(--border);gap:10px;margin-bottom:25px;padding-bottom:10px;display:flex}.tab{cursor:pointer;color:var(--text-light);background:0 0;border:none;border-bottom:3px solid #0000;padding:10px 20px;font-size:15px;font-weight:500;transition:all .3s}.tab:hover{color:var(--primary)}.tab.active{color:var(--primary);border-bottom-color:var(--primary)}.recording-area{max-width:700px;margin:0 auto}.tip-card{border-left:5px solid var(--secondary);background:linear-gradient(135deg,#fef3c7 0%,#fde68a 100%);border-radius:16px;margin-bottom:30px;padding:25px}.tip-card h3{color:#92400e;align-items:center;gap:10px;margin-bottom:15px;display:flex}.tip-card ul{color:#78350f;list-style:none}.tip-card li{padding:8px 0 8px 25px;position:relative}.tip-card li:before{content:"•";font-weight:700;position:absolute;left:0}.ready-btn{background:linear-gradient(135deg, var(--secondary) 0%, #d97706 100%);color:#fff;cursor:pointer;border:none;border-radius:30px;width:200px;margin:0 auto 30px;padding:15px 30px;font-size:18px;font-weight:600;transition:all .3s;display:block}.ready-btn:hover{transform:scale(1.05);box-shadow:0 6px 20px #f59e0b66}.recorder-container{text-align:center;display:none}.recorder-container.active{display:block}.waveform{background:var(--primary-bg);border-radius:16px;justify-content:center;align-items:center;gap:4px;height:100px;margin:20px 0;display:flex;overflow:hidden}.waveform-bar{background:var(--primary);border-radius:3px;width:6px;height:30px;animation:.5s ease-in-out infinite wave}.waveform-bar:nth-child(2){animation-delay:.1s}.waveform-bar:nth-child(3){animation-delay:.2s}.waveform-bar:nth-child(4){animation-delay:.3s}.waveform-bar:nth-child(5){animation-delay:.4s}.waveform-bar:nth-child(6){animation-delay:.5s}.waveform-bar:nth-child(7){animation-delay:.6s}.waveform-bar:nth-child(8){animation-delay:.7s}.waveform-bar:nth-child(9){animation-delay:.8s}.waveform-bar:nth-child(10){animation-delay:.9s}@keyframes wave{0%,to{height:30px}50%{height:80px}}.recorder-container:not(.recording) .waveform-bar{height:40px;animation:none}.timer{color:var(--primary-dark);font-family:monospace;font-size:48px;font-weight:700}.recorder-btn{border:4px solid var(--primary);cursor:pointer;background:#fff;border-radius:50%;justify-content:center;align-items:center;width:80px;height:80px;margin:20px auto;transition:all .3s;display:flex}.recorder-btn:hover{transform:scale(1.1)}.recorder-btn .icon{background:var(--danger);border-radius:50%;width:30px;height:30px}.recorder-btn.recording .icon{border-radius:6px}.recorder-actions{justify-content:center;gap:15px;margin-top:20px;display:flex}.audio-preview{margin:20px 0}.audio-preview audio{border-radius:10px;width:100%}.evaluation-result{max-width:900px;margin:0 auto}.transcript-section{background:var(--primary-bg);border-radius:16px;margin-bottom:25px;padding:25px}.transcript-text{color:var(--text-dark);font-size:16px;line-height:2}.example-section{border-left:5px solid var(--secondary);background:#fef9c3;border-radius:16px;margin-bottom:25px;padding:25px}.example-title{color:#92400e;margin-bottom:10px;font-weight:600}.scores-comparison{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:15px;margin-bottom:25px;display:grid}.score-item{text-align:center;border:2px solid var(--border);background:#fff;border-radius:12px;padding:20px}.score-item.highlight{border-color:var(--primary);background:var(--primary-bg)}.score-label{color:var(--text-light);margin-bottom:8px;font-size:14px}.score-values{justify-content:center;gap:15px;display:flex}.score-value{font-size:24px;font-weight:700}.score-ai{color:var(--primary)}.radar-chart-container{background:#fff;border-radius:16px;margin-bottom:15px;padding:15px}.feedback-section{border-left:5px solid var(--info);background:#fff;border-radius:16px;padding:25px}.feedback-title{color:var(--info);align-items:center;gap:8px;margin-bottom:15px;font-weight:600;display:flex}.feedback-content{color:var(--text-dark);line-height:1.8}.radar-chart-container{background:#fff;border-radius:16px;margin-bottom:20px;padding:20px;box-shadow:0 4px 15px #0000000d}.radar-chart-container canvas{max-height:180px}.dimensions-grid{gap:12px;display:grid}.dimension-item{background:#fff;border-radius:12px;margin-bottom:10px;padding:15px 18px;transition:transform .2s;box-shadow:0 2px 8px #0000000a}.dimension-item:hover{transform:translate(3px)}.dimension-header{justify-content:space-between;align-items:center;margin-bottom:8px;display:flex}.dimension-name{color:var(--text-dark);font-size:14px;font-weight:600}.dimension-score{font-size:18px;font-weight:700}.dimension-max{color:var(--text-light);font-size:12px;font-weight:400}.dimension-bar{background:#f1f5f9;border-radius:4px;height:8px;margin-bottom:6px;overflow:hidden}.dimension-bar-fill{border-radius:4px;height:100%;transition:width .5s ease-out}.dimension-comment{color:var(--text-light);margin-top:4px;padding-left:5px;font-size:12px}.section-title{color:var(--text-dark);align-items:center;gap:6px;margin-bottom:15px;font-size:16px;font-weight:600;display:flex}.overall-comment-section{border-left-color:var(--primary);background:linear-gradient(135deg,#f0fdf4 0%,#dcfce7 100%)}.overall-comment-content{background:#fff;border-radius:12px;padding:15px 20px;position:relative;box-shadow:0 2px 8px #0000000a}.quote-icon{color:var(--primary-light);font-family:Georgia,serif;font-size:40px;line-height:1;position:absolute;top:10px;left:15px}.overall-comment-content p{color:#166534;margin:0;padding-left:25px;font-size:14px;line-height:1.8}.encouragement-section{margin:20px 0}.warm-title{color:#ea580c}.encouragement-card{background:linear-gradient(135deg,#fce7f3 0%,#fdf2f8 50%,#fff7ed 100%);border:2px solid #fbcfe8;border-radius:20px;padding:25px;position:relative;overflow:hidden;box-shadow:0 4px 15px #ec489926}.encouragement-emoji{text-align:center;margin-bottom:10px;font-size:50px;animation:2s infinite pulse;display:block}@keyframes pulse{0%,to{transform:scale(1)}50%{transform:scale(1.1)}}.encouragement-text{color:#9d174d;text-align:center;margin:0;padding:0 10px;font-size:15px;line-height:1.9}.encouragement-decorations{opacity:.6;font-size:14px;position:absolute;top:10px;right:15px}.encouragement-decorations span{margin-left:3px;animation:3s ease-in-out infinite float}.encouragement-decorations span:nth-child(2){animation-delay:.5s}.encouragement-decorations span:nth-child(3){animation-delay:1s}.encouragement-decorations span:nth-child(4){animation-delay:1.5s}.encouragement-decorations span:nth-child(5){animation-delay:2s}@keyframes float{0%,to{transform:translateY(0)}50%{transform:translateY(-5px)}}.suggestion-section{background:linear-gradient(135deg,#fffbeb 0%,#fef3c7 100%);border-left-color:#f59e0b}.tip-title{color:#b45309}.suggestions-list{flex-direction:column;gap:10px;display:flex}.suggestion-item{background:#fff;border-radius:10px;align-items:flex-start;gap:12px;padding:12px 15px;display:flex;box-shadow:0 2px 6px #0000000a}.suggestion-number{color:#fff;background:linear-gradient(135deg,#f59e0b 0%,#d97706 100%);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:24px;height:24px;font-size:12px;font-weight:700;display:flex}.suggestion-text{color:#92400e;font-size:13px;line-height:1.6}.sentence-analysis-section{background:#fff;border-radius:16px;margin-top:20px;overflow:hidden;box-shadow:0 2px 10px #0000000d}.toggle-header{cursor:pointer;-webkit-user-select:none;user-select:none;transition:background .2s}.toggle-header:hover{background:#f8fafc}.analysis-title{color:#0891b2}.toggle-btn{color:#fff;cursor:pointer;background:linear-gradient(135deg,#06b6d4 0%,#0891b2 100%);border:none;border-radius:20px;margin-left:auto;padding:6px 14px;font-size:12px;transition:all .3s}.toggle-btn:hover{transform:scale(1.05);box-shadow:0 2px 8px #06b6d44d}.sentences-list{flex-direction:column;gap:15px;padding:15px 20px 20px;display:flex}.sentence-analysis-item{background:#f8fafc;border:1px solid #e2e8f0;border-radius:12px;overflow:hidden}.sentence-original{background:linear-gradient(135deg,#dbeafe 0%,#e0f2fe 100%);align-items:flex-start;gap:8px;padding:12px 15px;display:flex}.sentence-quote{color:#3b82f6;font-family:Georgia,serif;font-size:24px;line-height:1}.sentence-text{color:#1e40af;font-size:13px;line-height:1.7}.sentence-analysis-content{background:#fff;align-items:flex-start;gap:8px;padding:12px 15px;display:flex}.analysis-icon{flex-shrink:0;font-size:16px}.analysis-text{color:#475569;font-size:13px;line-height:1.7}.ai-loading-state{text-align:center;padding:40px 20px}.loading-animation{margin-bottom:15px}.loading-emoji{font-size:50px;animation:1s infinite bounce;display:inline-block}@keyframes bounce{0%,60%,to{transform:translateY(0)}30%{transform:translateY(-6px)}}.loading-dots{justify-content:center;gap:6px;margin-top:10px;display:flex}.loading-dots .dot{background:var(--primary);border-radius:50%;width:8px;height:8px;animation:1.4s ease-in-out infinite both loading-bounce}.loading-dots .dot:first-child{animation-delay:-.32s}.loading-dots .dot:nth-child(2){animation-delay:-.16s}.loading-dots .dot:nth-child(3){animation-delay:0s}@keyframes loading-bounce{0%,80%,to{transform:scale(0)}40%{transform:scale(1)}}.loading-text{color:var(--text-light);margin-top:10px;font-size:15px}.no-feedback{text-align:center;color:var(--text-light);padding:40px 20px}.no-feedback-emoji{margin-bottom:10px;font-size:48px;display:block}.feedback-section{border-left:5px solid var(--info);background:#fff;border-radius:16px;margin-bottom:15px;padding:20px}.ai-loading{justify-content:center;gap:8px;display:flex}.ai-dot{background:var(--secondary);border-radius:50%;width:10px;height:10px;animation:1.4s ease-in-out infinite both ai-bounce}.ai-dot:first-child{animation-delay:-.32s}.ai-dot:nth-child(2){animation-delay:-.16s}@keyframes ai-bounce{0%,80%,to{transform:scale(0)}40%{transform:scale(1)}}.growth-chart-container{background:#fff;border-radius:16px;margin-bottom:15px;padding:15px}.history-list{max-height:400px;overflow-y:auto}.history-item{border-bottom:1px solid var(--border);gap:20px;padding:20px;display:flex}.history-item:last-child{border-bottom:none}.history-date{min-width:100px;color:var(--text-light);font-size:14px}.history-content{flex:1}.history-title{margin-bottom:5px;font-weight:600}.history-score{background:var(--primary-bg);color:var(--primary-dark);border-radius:10px;margin-left:10px;padding:2px 10px;font-size:14px;display:inline-block}.history-text{color:var(--text-light);margin-top:8px;font-size:14px}.badge-grid{grid-template-columns:repeat(auto-fill,minmax(100px,1fr));gap:20px;display:grid}.badge-item{text-align:center;cursor:pointer;border-radius:16px;padding:20px 10px;transition:all .3s}.badge-item:hover{background:var(--primary-bg)}.badge-item.locked{opacity:.4}.badge-icon{margin-bottom:10px;font-size:48px}.badge-name{color:var(--text-dark);font-size:13px;font-weight:500}.badge-count{text-align:right;color:var(--text-light);margin-top:5px;font-size:14px}.table-container{overflow-x:auto}.data-table{border-collapse:collapse;width:100%}.data-table th,.data-table td{text-align:left;border-bottom:1px solid var(--border);padding:15px}.data-table th{background:var(--primary-bg);color:var(--primary-dark);font-weight:600}.data-table tr:hover{background:#f9fafb}.action-btns{gap:8px;display:flex}.btn-view{background:var(--primary-bg);color:var(--primary);cursor:pointer;border:none;border-radius:6px;padding:6px 12px;font-size:13px}.btn-edit{color:var(--info);cursor:pointer;background:#dbeafe;border:none;border-radius:6px;padding:6px 12px;font-size:13px}.btn-like{color:#ec4899;cursor:pointer;background:#fce7f3;border:none;border-radius:6px;padding:6px 12px;font-size:13px}.stats-grid{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:20px;margin-bottom:30px;display:grid}.stat-card{text-align:center;box-shadow:var(--shadow);background:#fff;border-radius:16px;padding:25px}.stat-icon{margin-bottom:10px;font-size:36px}.stat-value{color:var(--primary);font-size:32px;font-weight:700}.stat-label{color:var(--text-light);font-size:14px}.modal-overlay{z-index:1000;background:#00000080;justify-content:center;align-items:center;display:none;position:fixed;inset:0}.modal-overlay.active{display:flex}.modal{background:#fff;border-radius:20px;width:90%;max-width:500px;max-height:80vh;padding:30px;overflow-y:auto}.modal-header{justify-content:space-between;align-items:center;margin-bottom:20px;display:flex}.modal-title{font-size:20px;font-weight:600}.modal-close{background:var(--border);cursor:pointer;border:none;border-radius:50%;width:36px;height:36px;font-size:18px}.toast{z-index:1001;background:#fff;border-radius:12px;padding:15px 25px;animation:.3s slideIn;display:none;position:fixed;top:90px;right:20px;box-shadow:0 10px 30px #0003}.toast.show{display:block}.toast.success{border-left:5px solid var(--primary)}.toast.error{border-left:5px solid var(--danger)}.class-code-btn{background:linear-gradient(135deg, var(--secondary) 0%, #d97706 100%);color:#fff;cursor:pointer;white-space:nowrap;border:none;border-radius:20px;margin-left:12px;padding:6px 14px;font-size:13px;font-weight:600;transition:all .3s}.class-code-btn:hover{transform:scale(1.05);box-shadow:0 4px 12px #f59e0b66}.classcode-login-modal .classcode-header{text-align:center;background:linear-gradient(135deg,#fef3c7 0%,#fde68a 100%);border-radius:16px;margin-bottom:20px;padding:20px}.classcode-login-modal .classcode-header .emoji{margin-bottom:10px;font-size:48px}.classcode-login-modal .classcode-header h4{color:#92400e;margin-bottom:5px}.classcode-login-modal .classcode-header p{color:#b45309;font-size:14px}.classcode-login-modal .classcode-input{text-align:center;margin:15px 0}.classcode-login-modal .classcode-input input{text-align:center;letter-spacing:6px;text-transform:uppercase;font-size:22px;font-weight:700}@keyframes slideIn{0%{opacity:0;transform:translate(100%)}to{opacity:1;transform:translate(0)}}.badge-modal{text-align:center}.badge-modal .badge-icon{font-size:80px;animation:.5s badgePop}@keyframes badgePop{0%{transform:scale(0)}50%{transform:scale(1.2)}to{transform:scale(1)}}.badge-modal h3{color:var(--primary-dark);margin:20px 0 10px}.badge-modal p{color:var(--text-light);margin-bottom:20px}.draft-box{background:#f3f4f6;border-radius:12px;margin-top:20px;padding:15px}.draft-header{align-items:center;gap:8px;margin-bottom:10px;font-weight:600;display:flex}.hint-box{text-align:center;background:#dbeafe;border-radius:12px;margin:20px 0;padding:20px}.hint-box .icon{margin-bottom:10px;font-size:36px}.hint-box h4{color:var(--info);margin-bottom:10px}.hint-box p{color:#1e40af}.hidden{display:none!important}.report-content{line-height:1.8}.report-section{border-bottom:1px solid var(--border);margin-bottom:25px;padding-bottom:25px}.report-section:last-child{border-bottom:none}.report-section h4{color:var(--primary-dark);align-items:center;gap:8px;margin-bottom:10px;display:flex}.student-detail-grid{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:15px;margin-bottom:25px;display:grid}.detail-card{background:var(--primary-bg);text-align:center;border-radius:12px;padding:20px}.detail-value{color:var(--primary-dark);font-size:28px;font-weight:700}.detail-label{color:var(--text-light);font-size:14px}.transcript-input-area{box-shadow:var(--shadow);background:#fff;border-radius:16px;margin:20px 0;padding:20px}.transcript-input-area label{color:var(--text-dark);margin-bottom:10px;font-weight:600;display:block}.transcript-input-area textarea{border:2px solid var(--border);resize:vertical;border-radius:12px;width:100%;min-height:120px;padding:15px;font-size:15px;line-height:1.8}.transcript-input-area textarea:focus{border-color:var(--primary);outline:none}.transcript-input-area .hint{color:var(--text-light);margin-top:10px;font-size:13px}.realtime-transcript-area{border:2px solid var(--info);background:linear-gradient(135deg,#dbeafe 0%,#e0f2fe 100%);border-radius:16px;margin:20px 0;padding:20px;display:none}.realtime-transcript-area.active{display:block}.realtime-transcript-area h4{color:var(--info);align-items:center;gap:8px;margin-bottom:10px;display:flex}.realtime-transcript-area .transcript-content{min-height:80px;color:var(--text-dark);border:1px solid var(--border);background:#fff;border-radius:12px;padding:15px;font-size:15px;line-height:1.8}.realtime-transcript-area .transcript-placeholder{color:var(--text-light);font-style:italic}.student-nav{z-index:10;background:#fff;border-radius:16px;gap:8px;margin-bottom:20px;padding:10px 15px;display:flex;position:sticky;top:0;overflow-x:auto;box-shadow:0 2px 10px #0000000d}.nav-btn{border:2px solid var(--border);cursor:pointer;white-space:nowrap;background:#fff;border-radius:12px;padding:8px 16px;font-size:14px;transition:all .3s}.nav-btn.active,.nav-btn:hover{border-color:var(--primary);background:var(--primary-bg);color:var(--primary-dark)}.excellent-works-grid{grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px;display:grid}.excellent-work-card{background:#fff;border-radius:16px;padding:20px;position:relative;box-shadow:0 2px 10px #00000014}.excellent-work-card .work-author{color:var(--primary-dark);margin-bottom:10px;font-weight:600}.excellent-work-card .work-content{color:var(--text-dark);max-height:120px;margin-bottom:12px;font-size:14px;line-height:1.8;overflow-y:auto}.excellent-work-card .work-scores{flex-wrap:wrap;gap:6px;margin-bottom:12px;display:flex}.excellent-work-card .score-tag{background:var(--primary-bg);color:var(--primary-dark);border-radius:8px;padding:3px 8px;font-size:12px}.like-btn-area{border-top:1px solid var(--border);align-items:center;gap:8px;padding-top:10px;display:flex}.like-btn{color:#ef4444;cursor:pointer;background:#fff;border:2px solid #f87171;border-radius:20px;padding:6px 16px;font-size:14px;transition:all .3s}.like-btn:hover{background:#fef2f2}.like-btn.liked{color:#fff;background:#ef4444;border-color:#ef4444}.like-count{color:var(--text-light);font-size:14px}.like-tip{color:#f59e0b;font-size:12px}.notification-popup{z-index:2000;background:#fff;border-radius:20px;width:90%;max-width:400px;padding:30px;position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:0 20px 60px #0003}.notification-overlay{z-index:1999;background:#00000080;position:fixed;inset:0}.realtime-transcript-area .speech-not-supported{color:#f59e0b;text-align:center;background:#fef3c7;border-radius:8px;padding:10px;font-size:13px}.peer-review-card{background:#fff;border-radius:16px;margin-bottom:15px;padding:20px}.peer-review-card.reference{background:linear-gradient(135deg,#f0fff0,#e8f5e9);border:2px solid #4caf50}.peer-review-card.improve{background:linear-gradient(135deg,#fff8f0,#fff3e0);border:2px solid #ff9800}.star-selector{gap:5px;display:flex}.star-selector label{cursor:pointer;color:#999;font-size:28px;transition:transform .2s}.star-selector label:hover{transform:scale(1.3)}.star-selector input{display:none}.star-selector input:checked+label{color:gold}.voice-btn{background:var(--primary);color:#fff;cursor:pointer;border:none;border-radius:50%;flex-shrink:0;width:40px;height:40px;font-size:20px;transition:all .3s}.voice-btn:hover{background:var(--primary-dark);transform:scale(1.1)}.voice-btn.recording{background:#f44336;animation:1s infinite pulse}.peer-review-result{background:#f0f8ff;border-left:4px solid #2196f3;border-radius:12px;margin-bottom:10px;padding:15px}.countdown-tag{border-radius:12px;padding:2px 8px;font-size:12px;font-weight:600;display:inline-block}.countdown-tag.normal{color:#4caf50;background:#e8f5e9}.countdown-tag.warning{color:#ff9800;background:#fff3e0}.countdown-tag.urgent{color:#f44336;background:#ffebee;animation:1s infinite blink}.countdown-tag.expired{color:#999;background:#f5f5f5}@keyframes blink{50%{opacity:.6}}.detail-tab{color:var(--text-light);cursor:pointer;background:0 0;border:none;border-bottom:2px solid #0000;padding:8px 16px;font-size:14px;transition:all .3s}.detail-tab:hover{color:var(--primary)}.detail-tab.active{color:var(--primary);border-bottom-color:var(--primary);font-weight:600}.template-grid{grid-template-columns:repeat(2,1fr);gap:12px;max-height:400px;padding:5px;display:grid;overflow-y:auto}.template-card{cursor:pointer;background:#fff;border:2px solid #e5e7eb;border-radius:12px;padding:15px;transition:all .3s}.template-card:hover{border-color:var(--primary);transform:translateY(-3px);box-shadow:0 6px 20px #22c55e33}.template-card.selected{border-color:var(--primary);background:var(--primary-bg)}.template-card .template-emoji{margin-bottom:8px;font-size:32px}.template-card .template-title{color:var(--text-dark);margin-bottom:4px;font-size:14px;font-weight:700}.template-card .template-desc{color:var(--text-light);font-size:12px}.parent-report-preview{background:#fff;border-radius:16px;max-height:70vh;padding:24px;overflow-y:auto}.parent-report-edit{background:#f9fafb;border-radius:12px;padding:20px}.chat-reset-overlay{z-index:100;background:linear-gradient(#f0fdf4 0%,#ecfdf5 50%,#fff 100%);justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.chat-reset-content{text-align:center;color:#15803d;font-size:14px}.chat-reset-content p{margin-top:14px;font-size:13px;font-weight:500}.chat-reset-spinner{border:3px solid #bbf7d0;border-top-color:#22c55e;border-radius:50%;width:36px;height:36px;margin:0 auto;animation:.8s linear infinite chat-spin}@keyframes chat-spin{to{transform:rotate(360deg)}}.parent-code{color:#92400e;cursor:pointer;background:linear-gradient(135deg,#fef3c7,#fde68a);border-radius:12px;padding:3px 10px;font-weight:600;transition:all .3s}.parent-code:hover{transform:scale(1.05);box-shadow:0 2px 8px #f59e0b4d}.class-switcher{align-items:center;gap:8px;margin-left:10px;display:flex}.class-tag{color:#92400e;cursor:pointer;background:linear-gradient(135deg,#fef3c7,#fde68a);border-radius:15px;padding:4px 12px;font-size:12px;font-weight:600;transition:all .3s}.class-tag:hover{transform:scale(1.05)}.class-checkbox-grid{background:#f9fafb;border-radius:12px;grid-template-columns:repeat(auto-fill,minmax(100px,1fr));gap:8px;max-height:300px;padding:10px;display:grid;overflow-y:auto}.class-checkbox-item{cursor:pointer;background:#fff;border-radius:8px;align-items:center;gap:6px;padding:6px 8px;font-size:12px;transition:all .2s;display:flex}.class-checkbox-item:hover{background:var(--primary-bg)}.class-checkbox-item input{cursor:pointer}.parent-view-header{background:linear-gradient(135deg,#fef3c7,#fde68a);border-radius:16px;justify-content:space-between;align-items:center;margin-bottom:20px;padding:15px 20px;display:flex}.parent-view-header h2{color:#92400e;align-items:center;gap:8px;font-size:18px;display:flex}.parent-eval-grid{gap:15px;margin:15px 0;display:grid}.parent-eval-item{background:#fff;border-radius:12px;padding:15px;box-shadow:0 2px 8px #0000000d}.parent-eval-label{color:var(--text-dark);align-items:center;gap:6px;margin-bottom:10px;font-weight:600;display:flex}.parent-eval-options{gap:8px;display:flex}.parent-eval-btn{border:2px solid var(--border);cursor:pointer;text-align:center;background:#fff;border-radius:10px;flex:1;padding:10px;font-size:14px;transition:all .3s}.parent-eval-btn:hover{border-color:var(--primary);background:var(--primary-bg)}.parent-eval-btn.selected{border-color:var(--primary);background:var(--primary-bg);color:var(--primary-dark)}.teacher-message-box{border-left:4px solid var(--secondary);background:linear-gradient(135deg,#fef3c7,#fde68a);border-radius:12px;margin:15px 0;padding:15px}.teacher-message-header{justify-content:space-between;align-items:center;margin-bottom:10px;display:flex}.teacher-message-header h4{color:#92400e;align-items:center;gap:6px;font-size:14px;display:flex}.notification-cards-container{grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:20px;padding:20px;display:grid}.notification-card{border:2px solid var(--primary);page-break-inside:avoid;background:#fff;border-radius:16px;padding:20px}.notification-card-header{background:linear-gradient(135deg, var(--primary), var(--primary-dark));color:#fff;text-align:center;border-radius:14px 14px 0 0;margin:-20px -20px 15px;padding:15px}.notification-card-header h4{margin:0;font-size:16px}.notification-card-body{font-size:14px;line-height:1.8}.notification-card-body .info-row{border-bottom:1px dashed #e5e7eb;justify-content:space-between;padding:8px 0;display:flex}.notification-card-body .info-label{color:var(--text-light)}.notification-card-body .info-value{color:var(--primary-dark);font-weight:600}.notification-card-body .parent-code-display{text-align:center;background:#fef3c7;border-radius:8px;margin:10px 0;padding:10px}.notification-card-body .parent-code-display .code{color:#92400e;letter-spacing:4px;font-size:24px;font-weight:700}.notification-card-footer{color:var(--text-light);text-align:center;background:#f9fafb;border-radius:0 0 14px 14px;margin:15px -20px -20px;padding:10px;font-size:12px}.btn-danger{color:#fff;background:linear-gradient(135deg,#ef4444,#dc2626);border:none}.btn-danger:hover{background:linear-gradient(135deg,#dc2626,#b91c1c);transform:translateY(-2px);box-shadow:0 4px 12px #ef44444d}.total-score-section{justify-content:center;align-items:center;margin-bottom:20px;display:flex}.total-score-display{text-align:center;background:linear-gradient(135deg,#22c55e 0%,#16a34a 100%);border-radius:20px;padding:25px 40px;box-shadow:0 8px 20px #22c55e4d}.total-score-number{color:#fff;text-shadow:2px 2px 4px #0000001a;font-size:56px;font-weight:700;line-height:1;display:block}.total-score-label{color:#ffffffe6;margin-top:5px;font-size:14px;display:block}.preview-modal{z-index:2000;background:#fff;border-radius:24px;width:90%;max-width:480px;max-height:85vh;padding:30px;animation:.3s modalPop;position:fixed;top:50%;left:50%;overflow-y:auto;transform:translate(-50%,-50%);box-shadow:0 20px 60px #00000040}@keyframes modalPop{0%{opacity:0;transform:translate(-50%,-50%)scale(.9)}to{opacity:1;transform:translate(-50%,-50%)scale(1)}}.preview-overlay{z-index:1999;background:#00000080;animation:.3s fadeIn;position:fixed;inset:0}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.preview-header{text-align:center;margin-bottom:20px}.preview-header .emoji{margin-bottom:10px;font-size:48px}.preview-header h3{color:var(--primary-dark);margin:0;font-size:20px}.preview-header p{color:var(--text-light);margin-top:5px;font-size:13px}.preview-dimensions{flex-direction:column;gap:12px;margin-bottom:20px;display:flex}.preview-dim-item{background:#f8fafc;border:1px solid #e2e8f0;border-radius:12px;justify-content:space-between;align-items:center;padding:12px 16px;display:flex}.preview-dim-name{color:var(--text-dark);font-size:14px;font-weight:500}.preview-dim-level{align-items:center;gap:8px;display:flex}.preview-level-badge{border-radius:20px;padding:4px 12px;font-size:14px;font-weight:700}.preview-level-A{color:#92400e;background:linear-gradient(135deg,#fef3c7,#fde68a)}.preview-level-B{color:#065f46;background:linear-gradient(135deg,#d1fae5,#a7f3d0)}.preview-level-C{color:#1e40af;background:linear-gradient(135deg,#dbeafe,#bfdbfe)}.preview-level-D{color:#9a3412;background:linear-gradient(135deg,#fed7aa,#fb923c)}.preview-level-E{color:#991b1b;background:linear-gradient(135deg,#fecaca,#fca5a5)}.preview-stars{color:#fbbf24;font-size:16px}.preview-advice{text-align:center;background:linear-gradient(135deg,#fef3c7,#fde68a);border-radius:16px;margin-bottom:20px;padding:20px}.preview-advice .icon{margin-bottom:8px;font-size:28px}.preview-advice p{color:#92400e;margin:0;font-size:15px;line-height:1.7}.preview-actions{gap:12px;display:flex}.preview-actions .btn{cursor:pointer;border:none;border-radius:16px;flex:1;padding:14px 20px;font-size:15px;font-weight:600;transition:all .3s}.preview-actions .btn-edit{color:#374151;background:#f3f4f6}.preview-actions .btn-edit:hover{background:#e5e7eb}.preview-actions .btn-submit{background:linear-gradient(135deg, var(--primary), var(--primary-dark));color:#fff}.preview-actions .btn-submit:hover{transform:translateY(-2px);box-shadow:0 6px 20px #22c55e66}.preview-loading{text-align:center;padding:40px 20px}.preview-loading .emoji{font-size:50px;animation:1s infinite bounce}.preview-loading p{color:var(--text-light);margin-top:15px;font-size:15px}.weight-selector{align-items:center;gap:4px;display:flex}.weight-star{cursor:pointer;color:#ddd;font-size:20px;transition:transform .2s}.weight-star:hover{transform:scale(1.3)}.weight-star.active{color:#fbbf24}.weight-label{color:var(--text-light);min-width:50px;margin-left:6px;font-size:11px}.enhanced-sentence-item{background:#f8fafc;border:2px solid #e2e8f0;border-radius:14px;margin-bottom:12px;transition:all .3s;overflow:hidden}.enhanced-sentence-item:hover{border-color:var(--primary-light)}.enhanced-sentence-item.has-advice{background:linear-gradient(135deg,#fffbeb,#fef3c7);border-color:#fde68a}.sentence-header{cursor:pointer;align-items:flex-start;gap:10px;padding:14px 16px;display:flex}.sentence-icon{flex-shrink:0;font-size:24px;line-height:1.5}.sentence-icon.good{color:#22c55e}.sentence-icon.improve{color:#f59e0b}.sentence-icon.neutral{color:#6b7280}.sentence-content{color:var(--text-dark);flex:1;font-size:15px;line-height:1.8}.sentence-toggle{color:var(--text-light);flex-shrink:0;padding:5px;font-size:18px;transition:transform .3s}.sentence-toggle.expanded{transform:rotate(180deg)}.sentence-advice-bubble{padding:0 16px 16px 50px;animation:.3s slideDown;display:none}.sentence-advice-bubble.show{display:block}@keyframes slideDown{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.advice-bubble-content{background:#fff;border-left:4px solid #f59e0b;border-radius:12px;padding:14px 18px;box-shadow:0 2px 10px #00000014}.advice-bubble-content p{color:#78350f;margin:0;font-size:14px;line-height:1.7}.advice-bubble-content .advice-icon{margin-right:6px;font-size:16px}.btn-preview{color:#92400e;cursor:pointer;background:linear-gradient(135deg,#fef3c7,#fde68a);border:2px solid #f59e0b;border-radius:14px;align-items:center;gap:6px;padding:12px 20px;font-size:15px;font-weight:600;transition:all .3s;display:inline-flex}.btn-preview:hover{transform:translateY(-2px);box-shadow:0 6px 20px #f59e0b4d}.btn-preview:disabled{opacity:.6;cursor:not-allowed;transform:none}.phase-selector{gap:12px;margin-bottom:20px;display:flex}.phase-option{cursor:pointer;text-align:center;background:#fff;border:3px solid #e5e7eb;border-radius:16px;flex:1;padding:16px 12px;transition:all .3s;position:relative}.phase-option:hover{transform:translateY(-2px);box-shadow:0 4px 12px #0000001a}.phase-option.active{transform:translateY(-2px);box-shadow:0 4px 16px #00000026}.phase-option .phase-icon{margin-bottom:6px;font-size:32px;display:block}.phase-option .phase-label{color:var(--text-dark);font-size:14px;font-weight:700}.phase-option .phase-desc{color:var(--text-light);margin-top:4px;font-size:11px}.phase-option.phase-preclass{border-color:#e5e7eb}.phase-option.phase-preclass.active{background:linear-gradient(135deg,#ebf5ff 0%,#dbeafe 100%);border-color:#4a90d9}.phase-option.phase-preclass.active .phase-label{color:#1e40af}.phase-option.phase-inclass{border-color:#e5e7eb}.phase-option.phase-inclass.active{background:linear-gradient(135deg,#fff8eb 0%,#fef3c7 100%);border-color:#f5a623}.phase-option.phase-inclass.active .phase-label{color:#b45309}.phase-option.phase-postclass{border-color:#e5e7eb}.phase-option.phase-postclass.active{background:linear-gradient(135deg,#f0fdf4 0%,#dcfce7 100%);border-color:#7ed321}.phase-option.phase-postclass.active .phase-label{color:#166534}.phase-badge{border-radius:20px;align-items:center;gap:4px;padding:4px 10px;font-size:12px;font-weight:600;display:inline-flex}.phase-badge.preclass{color:#1e40af;background:#dbeafe}.phase-badge.inclass{color:#b45309;background:#fef3c7}.phase-badge.postclass{color:#166534;background:#dcfce7}.phase-section-header{border-radius:12px 12px 0 0;align-items:center;gap:10px;margin-bottom:0;padding:12px 16px;display:flex}.phase-section-header.preclass{color:#fff;background:linear-gradient(135deg,#4a90d9 0%,#3b82f6 100%)}.phase-section-header.inclass{color:#fff;background:linear-gradient(135deg,#f5a623 0%,#f59e0b 100%)}.phase-section-header.postclass{color:#fff;background:linear-gradient(135deg,#7ed321 0%,#22c55e 100%)}.phase-section-header h3{margin:0;font-size:16px}.phase-section-header .count{background:#ffffff4d;border-radius:10px;padding:2px 10px;font-size:12px}.preguide-card{background:linear-gradient(135deg,#ebf5ff 0%,#dbeafe 100%);border:2px solid #93c5fd;border-radius:16px;margin-bottom:16px;padding:16px}.preguide-card .preguide-header{align-items:center;gap:8px;margin-bottom:10px;display:flex}.preguide-card .preguide-icon{font-size:24px}.preguide-card .preguide-title{color:#1e40af;font-size:15px;font-weight:700}.preguide-card .preguide-content{color:#1e3a8a;font-size:14px;line-height:1.6}.review-resource-btn{color:#fff;cursor:pointer;background:linear-gradient(135deg,#7ed321 0%,#22c55e 100%);border-radius:20px;align-items:center;gap:6px;margin-top:12px;padding:8px 16px;font-size:13px;font-weight:600;text-decoration:none;transition:all .3s;display:inline-flex}.review-resource-btn:hover{transform:translateY(-2px);box-shadow:0 4px 12px #22c55e4d}.voice-checkin-mode .submit-btn{background:linear-gradient(135deg,#4a90d9 0%,#3b82f6 100%)!important}.voice-checkin-mode .submit-btn:hover{box-shadow:0 6px 20px #4a90d966!important}.checkin-encouragement{text-align:center;background:linear-gradient(135deg,#f0fdf4 0%,#dcfce7 100%);border:2px solid #86efac;border-radius:16px;margin-top:20px;padding:20px}.checkin-encouragement .checkin-icon{margin-bottom:10px;font-size:48px}.checkin-encouragement .checkin-text{color:#166534;margin-bottom:15px;font-size:15px;line-height:1.6}.checkin-encouragement .retry-btn{color:#fff;cursor:pointer;background:linear-gradient(135deg,#4a90d9 0%,#3b82f6 100%);border:none;border-radius:25px;padding:12px 24px;font-size:14px;font-weight:600;transition:all .3s}.checkin-encouragement .retry-btn:hover{transform:translateY(-2px);box-shadow:0 4px 12px #4a90d94d}.self-assessment-modal{z-index:1000;opacity:0;visibility:hidden;background:#00000080;justify-content:center;align-items:center;transition:all .3s;display:flex;position:fixed;inset:0}.self-assessment-modal.active{opacity:1;visibility:visible}.self-assessment-content{background:#fff;border-radius:24px;width:90%;max-width:400px;padding:30px;transition:transform .3s;transform:translateY(20px)}.self-assessment-modal.active .self-assessment-content{transform:translateY(0)}.self-assessment-title{text-align:center;color:var(--text-dark);margin-bottom:8px;font-size:20px;font-weight:700}.self-assessment-subtitle{text-align:center;color:var(--text-light);margin-bottom:24px;font-size:14px}.self-assessment-options{flex-direction:column;gap:12px;display:flex}.self-assessment-option{cursor:pointer;border:2px solid #e5e7eb;border-radius:16px;align-items:center;gap:12px;padding:16px;font-size:15px;font-weight:500;transition:all .3s;display:flex}.self-assessment-option:hover,.self-assessment-option.selected{border-color:var(--primary);background:var(--primary-bg)}.self-assessment-option .option-emoji{font-size:28px}.self-assessment-submit{background:linear-gradient(135deg, var(--primary) 0%, var(--primary-dark) 100%);color:#fff;cursor:pointer;border:none;border-radius:12px;width:100%;margin-top:20px;padding:14px;font-size:16px;font-weight:600;transition:all .3s}.self-assessment-submit:hover{transform:translateY(-2px);box-shadow:0 6px 20px #22c55e66}.self-assessment-submit:disabled{opacity:.6;cursor:not-allowed;transform:none}.preclass-insights{background:linear-gradient(135deg,#ebf5ff 0%,#dbeafe 100%);border:2px solid #93c5fd;border-radius:16px;margin-bottom:20px;padding:20px}.preclass-insights-header{align-items:center;gap:10px;margin-bottom:20px;display:flex}.preclass-insights-header .insights-icon{font-size:28px}.preclass-insights-header h4{color:#1e40af;margin:0;font-size:18px}.preclass-stat-row{background:#fff;border-radius:12px;justify-content:space-between;align-items:center;margin-bottom:15px;padding:12px 16px;display:flex}.preclass-stat-label{color:var(--text-dark);font-weight:500}.preclass-stat-value{color:#1e40af;font-weight:700}.preclass-progress-bar{background:#e5e7eb;border-radius:6px;height:12px;margin-bottom:20px;overflow:hidden}.preclass-progress-fill{background:linear-gradient(90deg,#4a90d9,#3b82f6);border-radius:6px;height:100%;transition:width .5s}.preclass-dimension-chart{background:#fff;border-radius:12px;margin-bottom:15px;padding:15px}.preclass-dimension-row{align-items:center;margin-bottom:10px;display:flex}.preclass-dimension-row:last-child{margin-bottom:0}.preclass-dimension-name{width:100px;color:var(--text-dark);flex-shrink:0;font-size:13px}.preclass-dimension-bar{background:#f3f4f6;border-radius:4px;flex:1;height:20px;margin:0 10px;overflow:hidden}.preclass-dimension-fill{border-radius:4px;height:100%;transition:width .5s}.preclass-dimension-value{text-align:right;width:50px;color:var(--text-dark);font-size:13px;font-weight:600}.preclass-dimension-fill.low{background:linear-gradient(90deg,#fca5a5,#ef4444)}.preclass-dimension-fill.medium{background:linear-gradient(90deg,#fcd34d,#f59e0b)}.preclass-dimension-fill.high{background:linear-gradient(90deg,#86efac,#22c55e)}.preclass-self-assessment{background:#fff;border-radius:12px;margin-bottom:15px;padding:15px}.preclass-self-assessment h5{color:#1e40af;margin:0 0 12px;font-size:14px}.preclass-self-assessment-list{flex-wrap:wrap;gap:8px;display:flex}.preclass-self-assessment-item{background:#f3f4f6;border-radius:20px;align-items:center;gap:6px;padding:6px 12px;font-size:13px;display:flex}.preclass-self-assessment-item .item-emoji{font-size:16px}.preclass-warning-list{background:#fef2f2;border:2px solid #fca5a5;border-radius:12px;padding:15px}.preclass-warning-list h5{color:#dc2626;align-items:center;gap:6px;margin:0 0 12px;font-size:14px;display:flex}.preclass-warning-item{color:#991b1b;border-bottom:1px solid #fecaca;align-items:center;gap:10px;padding:8px 0;font-size:14px;display:flex}.preclass-warning-item:last-child{border-bottom:none}.preclass-warning-item .student-name{font-weight:600}.preclass-warning-item .warning-reason{color:#7f1d1d;font-size:12px}.assignment-type-toggle{background:#f8fafc;border-radius:12px;gap:10px;margin-bottom:20px;padding:15px;display:flex}.type-toggle-btn{cursor:pointer;text-align:center;background:#fff;border:2px solid #e5e7eb;border-radius:12px;flex:1;padding:15px;font-size:14px;transition:all .3s}.type-toggle-btn:hover{border-color:var(--primary);transform:translateY(-2px)}.type-toggle-btn.active{border-color:var(--primary);background:var(--primary-bg)}.type-toggle-btn .icon{margin-bottom:5px;font-size:28px;display:block}.type-toggle-btn .title{color:var(--text-dark);font-weight:600}.type-toggle-btn .desc{color:var(--text-light);margin-top:3px;font-size:12px}.challenge-series-section{background:linear-gradient(135deg,#fef3c7 0%,#fde68a 100%);border:2px solid #f59e0b;border-radius:16px;margin-bottom:20px;padding:20px;display:none}.challenge-series-section.active{display:block}.challenge-series-header{align-items:center;gap:10px;margin-bottom:15px;display:flex}.challenge-series-header h4{color:#92400e;margin:0;font-size:16px}.series-name-input{border:2px solid #fcd34d;border-radius:10px;width:100%;margin-bottom:15px;padding:12px 15px;font-size:16px}.level-editor{background:#fff;border:1px solid #e5e7eb;border-radius:12px;margin-bottom:12px;padding:15px}.level-editor-header{border-bottom:1px dashed #e5e7eb;justify-content:space-between;align-items:center;margin-bottom:12px;padding-bottom:10px;display:flex}.level-number{color:var(--primary-dark);font-weight:700}.difficulty-selector{gap:6px;display:flex}.difficulty-btn{cursor:pointer;background:#fff;border:1px solid #e5e7eb;border-radius:15px;padding:4px 10px;font-size:12px;transition:all .2s}.difficulty-btn:hover{transform:scale(1.05)}.difficulty-btn.active{border-color:currentColor;font-weight:600}.difficulty-beginner{color:#22c55e}.difficulty-intermediate{color:#06b6d4}.difficulty-advanced{color:#f59e0b}.difficulty-expert{color:#8b5cf6}.level-form-group{margin-bottom:12px}.level-form-group label{color:var(--text-dark);margin-bottom:5px;font-size:13px;font-weight:500;display:block}.level-form-group input,.level-form-group textarea{border:1px solid #e5e7eb;border-radius:8px;width:100%;padding:10px 12px;font-size:14px}.level-form-group textarea{resize:vertical;min-height:60px}.pass-grade-selector{gap:8px;display:flex}.pass-grade-btn{cursor:pointer;text-align:center;background:#fff;border:2px solid #e5e7eb;border-radius:8px;flex:1;padding:8px;font-size:14px;font-weight:600;transition:all .2s}.pass-grade-btn:hover{border-color:var(--primary)}.pass-grade-btn.active{border-color:var(--primary);background:var(--primary-bg);color:var(--primary-dark)}.remove-level-btn{color:#ef4444;cursor:pointer;background:0 0;border:none;padding:5px 10px;font-size:14px}.remove-level-btn:hover{text-decoration:underline}.add-level-btn{color:#92400e;cursor:pointer;background:#f59e0b1a;border:2px dashed #f59e0b;border-radius:10px;width:100%;padding:12px;font-size:14px;font-weight:600;transition:all .3s}.add-level-btn:hover{background:#f59e0b33;transform:translateY(-2px)}.challenge-map-container{padding:20px}.challenge-map-header{text-align:center;margin-bottom:30px}.challenge-map-title{color:var(--primary-dark);margin-bottom:8px;font-size:24px}.challenge-map-desc{color:var(--text-light);font-size:14px}.challenge-path{flex-direction:column;gap:20px;padding:20px 0;display:flex;position:relative}.challenge-level-card{cursor:pointer;background:#fff;border-radius:20px;padding:20px;transition:all .3s;position:relative;box-shadow:0 4px 15px #0000001a}.challenge-level-card:hover{transform:translateY(-3px);box-shadow:0 8px 25px #00000026}.challenge-level-card.completed{border:3px solid var(--primary);background:linear-gradient(135deg,#f0fdf4 0%,#dcfce7 100%)}.challenge-level-card.current{border:3px solid #f59e0b;animation:2s infinite glow-pulse}@keyframes glow-pulse{0%,to{box-shadow:0 0 5px #f59e0b80,0 4px 15px #0000001a}50%{box-shadow:0 0 20px #f59e0bcc,0 4px 25px #00000026}}.challenge-level-card.locked{opacity:.7;cursor:not-allowed;background:#f9fafb;border:2px solid #e5e7eb}.difficulty-tag{border-radius:15px;align-items:center;gap:4px;padding:4px 12px;font-size:12px;font-weight:600;display:inline-flex}.difficulty-tag.beginner{color:#166534;background:linear-gradient(135deg,#dcfce7,#bbf7d0)}.difficulty-tag.intermediate{color:#0e7490;background:linear-gradient(135deg,#cffafe,#a5f3fc)}.difficulty-tag.expert{color:#a16207;background:linear-gradient(135deg,#fef9c3,#fef08a)}.level-card-header{justify-content:space-between;align-items:center;margin-bottom:12px;display:flex}.level-card-title{color:var(--text-dark);font-size:18px;font-weight:600}.level-card-status{font-size:28px}.level-card-desc{color:var(--text-light);margin-bottom:12px;font-size:14px;line-height:1.6}.level-card-footer{border-top:1px dashed #e5e7eb;justify-content:space-between;align-items:center;padding-top:10px;display:flex}.level-pass-condition{color:var(--text-light);font-size:12px}.level-grade-badge{border-radius:10px;padding:4px 12px;font-size:14px;font-weight:700}.level-connector{background:linear-gradient(#e5e7eb,#d1d5db);border-radius:2px;width:4px;height:30px;margin:0 auto}.level-connector.active{background:linear-gradient(to bottom, var(--primary), #86efac)}.celebration-overlay{z-index:3000;background:#000000b3;justify-content:center;align-items:center;display:none;position:fixed;inset:0}.celebration-overlay.active{display:flex}.celebration-content{text-align:center;background:#fff;border-radius:24px;width:90%;max-width:400px;padding:40px;animation:.5s celebration-pop}@keyframes celebration-pop{0%{opacity:0;transform:scale(.5)}70%{transform:scale(1.05)}to{opacity:1;transform:scale(1)}}.celebration-icon{margin-bottom:15px;font-size:80px;animation:.6s infinite bounce}.celebration-title{color:var(--primary-dark);margin-bottom:10px;font-size:28px;font-weight:700}.celebration-message{color:var(--text-dark);margin-bottom:20px;font-size:16px;line-height:1.6}.celebration-next{color:#f59e0b;margin-bottom:20px;font-size:14px}.celebration-actions{justify-content:center;gap:10px;display:flex}.celebration-actions .btn{cursor:pointer;border:none;border-radius:12px;padding:12px 24px;font-size:15px;font-weight:600;transition:all .3s}.celebration-actions .btn-primary{background:linear-gradient(135deg, var(--primary), var(--primary-dark));color:#fff}.celebration-actions .btn-secondary{color:var(--text-dark);background:#f3f4f6}.stars-container{pointer-events:none;z-index:3001;position:fixed;top:50%;left:50%;transform:translate(-50%,-50%)}.star{font-size:30px;animation:1s ease-out forwards star-fly;position:absolute}@keyframes star-fly{0%{opacity:1;transform:translate(0)scale(0)}to{transform:translate(var(--tx), var(--ty)) scale(1);opacity:0}}.all-complete-badge{text-align:center;background:linear-gradient(135deg,#fef3c7,#fde68a);border:2px solid #f59e0b;border-radius:16px;margin-top:20px;padding:20px}.all-complete-badge .badge-icon{margin-bottom:10px;font-size:60px}.all-complete-badge .badge-name{color:#92400e;font-size:18px;font-weight:700}.all-complete-badge .badge-desc{color:#78350f;margin-top:5px;font-size:14px}.challenge-progress-header{background:linear-gradient(135deg, var(--primary), var(--primary-dark));color:#fff;border-radius:16px;margin-bottom:20px;padding:20px}.challenge-progress-title{margin-bottom:5px;font-size:20px;font-weight:700}.challenge-progress-stats{gap:20px;margin-top:15px;display:flex}.challenge-stat{text-align:center}.challenge-stat-value{font-size:24px;font-weight:700}.challenge-stat-label{opacity:.9;font-size:12px}.challenge-assignment-card{border:2px solid var(--primary);background:linear-gradient(135deg,#f0fdf4 0%,#dcfce7 100%);border-radius:16px;margin-bottom:15px;padding:20px}.challenge-assignment-header{align-items:center;gap:10px;margin-bottom:10px;display:flex}.challenge-assignment-icon{font-size:32px}.challenge-assignment-info h4{color:var(--primary-dark);margin:0;font-size:16px}.challenge-assignment-info span{color:var(--text-light);font-size:12px}.challenge-assignment-levels{flex-wrap:wrap;gap:8px;margin-top:10px;display:flex}.challenge-level-chip{color:var(--text-dark);background:#fff;border-radius:10px;padding:4px 10px;font-size:12px}.challenge-level-stats{grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:10px;margin-bottom:20px;display:grid}.challenge-level-stat{text-align:center;background:#fff;border:1px solid #e5e7eb;border-radius:12px;padding:15px}.challenge-level-stat .level-name{color:var(--text-light);margin-bottom:5px;font-size:12px}.challenge-level-stat .level-count{color:var(--primary-dark);font-size:24px;font-weight:700}.challenge-badge-display{text-align:center;background:linear-gradient(135deg,#fef3c7,#fde68a);border:2px solid #f59e0b;border-radius:16px;margin:15px 0;padding:20px}.challenge-badge-display .badge-emoji{margin-bottom:8px;font-size:48px}.challenge-badge-display .badge-name{color:#92400e;font-size:16px;font-weight:700}.chat-container{background:#f8fafc;flex-direction:column;height:100%;display:flex}.chat-messages{scroll-behavior:smooth;flex-direction:column;flex:1;gap:12px;padding:15px;display:flex;overflow-y:auto}.chat-message{max-width:85%;animation:.3s fadeIn}.chat-message.user{align-self:flex-end}.chat-message.assistant{align-self:flex-start}.chat-message-bubble{word-break:break-word;border-radius:16px;padding:10px 14px;font-size:14px;line-height:1.5}.chat-message.user .chat-message-bubble{color:#fff;background:linear-gradient(135deg,#22c55e,#16a34a);border-bottom-right-radius:4px}.chat-message.assistant .chat-message-bubble{color:#1f2937;background:#fff;border-bottom-left-radius:4px;box-shadow:0 1px 3px #0000001a}.chat-message-time{color:#9ca3af;margin-top:4px;padding:0 4px;font-size:10px}.chat-message.user .chat-message-time{text-align:right}.chat-message.assistant .chat-message-time{text-align:left}.chat-welcome{text-align:center;color:#6b7280;padding:30px 20px}.chat-welcome-icon{margin-bottom:10px;font-size:48px}.chat-welcome-title{color:#166534;margin-bottom:8px;font-size:16px;font-weight:600}.chat-welcome-text{font-size:13px;line-height:1.6}.typing-indicator{background:#fff;border-radius:16px 16px 16px 4px;align-items:center;gap:4px;width:fit-content;padding:12px 16px;display:flex;box-shadow:0 1px 3px #0000001a}.typing-dot{background:#22c55e;border-radius:50%;width:8px;height:8px;animation:1.4s ease-in-out infinite bounce}.typing-dot:first-child{animation-delay:0s}.typing-dot:nth-child(2){animation-delay:.2s}.typing-dot:nth-child(3){animation-delay:.4s}.chat-input-area{background:#fff;border-top:1px solid #e5e7eb;flex-shrink:0}.chat-input-row{align-items:flex-end;gap:8px;padding:10px 12px;display:flex}.chat-input{resize:none;border:2px solid #e5e7eb;border-radius:20px;outline:none;flex:1;max-height:120px;padding:10px 16px;font-family:inherit;font-size:14px;transition:border-color .2s}.chat-input:focus{border-color:#22c55e}.chat-send-btn{color:#fff;cursor:pointer;background:linear-gradient(135deg,#22c55e,#16a34a);border:none;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:40px;height:40px;font-size:18px;transition:transform .2s,opacity .2s;display:flex}.chat-send-btn:hover{transform:scale(1.05)}.chat-send-btn:disabled{opacity:.5;cursor:not-allowed;transform:none}.chat-voice-btn{color:#666;cursor:pointer;background:#f0f0f0;border:none;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:40px;height:40px;font-size:18px;transition:all .2s;display:flex}.chat-voice-btn:hover{background:#e0e0e0}.chat-voice-btn.recording{color:#dc2626;background:#fee2e2;animation:1s infinite voicePulse}@keyframes voicePulse{0%,to{transform:scale(1)}50%{transform:scale(1.15)}}.chat-config-hint{text-align:center;color:#92400e;background:#fef3c7;border-radius:12px;margin:15px;padding:30px 20px}.chat-config-hint-icon{margin-bottom:10px;font-size:32px}.chat-config-hint-text{font-size:13px;line-height:1.6}.chat-error{text-align:center;color:#dc2626;padding:10px;font-size:13px}.chat-message.assistant .chat-message-bubble-wrapper{max-width:100%;display:inline-block;position:relative}.chat-tts-btn{color:#6b7280;cursor:pointer;opacity:0;z-index:10;background:#e5e7eb;border:none;border-radius:50%;justify-content:center;align-items:center;width:22px;height:22px;font-size:11px;transition:all .2s;display:flex;position:absolute;bottom:-2px;right:-2px}.chat-message:hover .chat-tts-btn{opacity:1}.chat-tts-btn:hover{background:#d1d5db;transform:scale(1.1)}.chat-tts-btn.speaking{background:var(--primary);color:#fff;animation:1s infinite tts-pulse}@keyframes tts-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.15)}}@media (width<=900px){.app-container.active{flex-direction:column;height:auto}.left-panel{height:auto;overflow-y:visible}.right-panel{border-top:1px solid #d1fae5;border-left:none;flex-shrink:1;width:100%;height:50vh;transition:transform .4s cubic-bezier(.4,0,.2,1),height .4s cubic-bezier(.4,0,.2,1),opacity .3s}.right-panel.agent-panel-collapsed{opacity:0;border-top-width:0;height:0;transform:translateY(-100%)}.ai-header{padding:10px 14px}.ai-avatar{width:36px;height:36px}.ai-title{font-size:14px}.ai-subtitle{font-size:10px}.ai-refresh-btn{width:30px;height:30px;font-size:13px}.recording-agent-hint{inset:auto 10px 20px;transform:none}.recording-agent-hint.visible{transform:translateY(0)}#floatChat{width:calc(100vw - 20px)!important;height:70vh!important;bottom:80px!important;right:10px!important}#chatFab{width:48px!important;height:48px!important;bottom:16px!important;right:16px!important}}@media (width<=768px){.navbar{flex-wrap:wrap;gap:8px;padding:10px 15px}.navbar-brand{font-size:16px}.navbar-brand span:first-child{font-size:22px}.user-avatar{width:32px;height:32px;font-size:13px}.user-name{font-size:13px}.btn-logout{padding:4px 10px;font-size:12px}.student-nav{-webkit-overflow-scrolling:touch;gap:5px;padding:8px 10px;overflow-x:auto}.nav-btn{border-radius:10px;padding:6px 12px;font-size:12px}.content-area{padding:12px}.page-title{font-size:20px!important}.page-subtitle{font-size:13px!important}.page-header{margin-bottom:15px!important}.assignment-grid{grid-template-columns:1fr;gap:12px}.stats-grid{grid-template-columns:repeat(2,1fr);gap:10px}.stat-card{padding:12px}.stat-value{font-size:22px}.card{border-radius:14px;padding:15px}.scores-comparison{grid-template-columns:repeat(2,1fr);gap:8px}.recording-area{padding:15px}.tip-card{padding:12px}.tip-card h3{font-size:14px}.tip-card li{font-size:13px}.ready-btn{padding:12px 24px;font-size:16px}.recorder-container{padding:15px}.feedback-section{padding:15px!important}.feedback-title{font-size:16px!important}.feedback-content{font-size:14px!important;line-height:1.8!important}.history-item{flex-direction:column;gap:8px;padding:12px}.history-date{min-width:auto;font-size:12px}.badge-grid{grid-template-columns:repeat(3,1fr);gap:10px}.excellent-works-grid{grid-template-columns:1fr;gap:12px}#chartGrid{grid-template-columns:repeat(2,1fr);gap:8px}.tabs{-webkit-overflow-scrolling:touch;gap:5px;overflow-x:auto}.tab{white-space:nowrap;padding:8px 12px;font-size:13px}.table-container{-webkit-overflow-scrolling:touch;overflow-x:auto}.data-table{min-width:500px;font-size:13px}.modal{border-radius:16px;width:95%;max-height:85vh;padding:20px}.modal-title{font-size:16px}.btn{padding:8px 16px;font-size:13px}.btn-small{padding:5px 10px;font-size:12px}.login-box{border-radius:16px;padding:25px 20px}.login-title{font-size:20px}.student-detail-grid{grid-template-columns:repeat(2,1fr);gap:10px}.detail-value{font-size:22px}}@media (width<=400px){#chartGrid{grid-template-columns:1fr}.nav-btn{padding:5px 8px;font-size:11px}}@media print{body *{visibility:hidden}.notification-cards-container,.notification-cards-container *{visibility:visible}.notification-cards-container{width:100%;padding:10px;position:absolute;top:0;left:0}.notification-card{break-inside:avoid;margin-bottom:20px}.no-print{display:none!important}}@media (width<=768px){.challenge-path{padding:10px 0}.challenge-level-card{padding:15px}.celebration-content{padding:25px}.celebration-icon{font-size:60px}}@media (width<=600px){.chat-messages{padding:10px}.chat-message-bubble{padding:8px 12px;font-size:13px}.chat-input-area{padding-bottom:env(safe-area-inset-bottom,10px)}}
