:root{--primary:#2ec4b6;--primary-dark:#1a8c7a;--primary-light:#2ec4b61a;--success:#4caf50;--danger:#e74c3c;--warning:#f39c12;--text:#3d3226;--text-secondary:#8b7355;--bg:#f5f0e8;--bg-card:#fff;--bg-input:#fdfaf5;--bg-hover:#2ec4b60a;--border:#2ec4b626;--border-subtle:#2ec4b614;--border-glow:#2ec4b64d;--radius:12px;--shadow-sm:0 1px 3px #0000000f;--shadow-md:0 4px 20px #00000014;--shadow-lg:0 8px 40px #0000001f;--shadow-card-hover:0 12px 40px #0000001a, 0 0 20px #2ec4b60f;--ease-out-expo:cubic-bezier(.16, 1, .3, 1);--ease-out-back:cubic-bezier(.34, 1.56, .64, 1)}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth}html,body,#root{width:100%;height:100%}body{color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Microsoft YaHei,sans-serif}button{cursor:pointer;border-radius:var(--radius);border:none;min-height:44px;padding:10px 24px;font-family:inherit;font-size:16px;transition:all .2s}button:active{transform:scale(.97)}button:disabled{opacity:.45;cursor:not-allowed}.btn-primary{background:linear-gradient(135deg, var(--primary) 0%, var(--primary-dark) 100%);color:#fff;box-shadow:0 2px 16px #1a8c7a33}.btn-primary:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 4px 24px #1a8c7a59}.btn-success{color:#fff;background:linear-gradient(135deg,#4caf50 0%,#388e3c 100%);box-shadow:0 2px 16px #4caf5033}.btn-success:hover:not(:disabled){box-shadow:0 4px 24px #4caf5059}.btn-danger{color:#c0392b;background:#e74c3c14;border:1px solid #e74c3c33}.btn-danger:hover:not(:disabled){background:#e74c3c26;box-shadow:0 0 16px #e74c3c1a}.btn-outline{color:var(--text-secondary);border:1px solid var(--border);background:0 0}.btn-outline:hover:not(:disabled),.btn-outline.btn-active{background:var(--primary-light);border-color:var(--primary);color:var(--primary)}.btn-lg{padding:14px 36px;font-size:18px}.btn-sm{border-radius:8px;min-height:32px;padding:5px 14px;font-size:13px}input,select,textarea{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-input);color:var(--text);outline:none;padding:10px 14px;font-family:inherit;font-size:16px;transition:border-color .2s,box-shadow .2s}select,input[type=text],input[type=number],input[type=password]{min-height:44px}input:focus,select:focus,textarea:focus{border-color:var(--primary);box-shadow:0 0 0 3px #2ec4b61f}input:hover:not(:focus):not(:disabled),select:hover:not(:focus):not(:disabled),textarea:hover:not(:focus):not(:disabled){border-color:#2ec4b659}input::placeholder,textarea::placeholder{color:#8b735580}select{appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%238B7355' d='M6 8L1 3h10z'/%3E%3C/svg%3E");background-position:right 12px center;background-repeat:no-repeat;padding-right:32px}select option{background:var(--bg-card);color:var(--text)}.form-group{margin-bottom:16px}.form-group label{color:var(--text-secondary);margin-bottom:6px;font-size:14px;font-weight:500;display:block}.search-input{background:var(--bg-input);border:1px solid var(--border);border-radius:var(--radius);width:100%;color:var(--text);outline:none;padding:8px 12px;font-size:14px;transition:border-color .2s}.search-input:focus{border-color:var(--primary)}.search-input::placeholder{color:var(--text-secondary)}.card{border-radius:var(--radius);border:1px solid var(--border-subtle);box-shadow:var(--shadow-sm);transition:box-shadow .3s var(--ease-out-expo), border-color .3s var(--ease-out-expo);background:linear-gradient(135deg,#fff 0%,#fdfaf5 100%);padding:24px}.card:hover{border-color:var(--border);box-shadow:var(--shadow-md)}.card-interactive{cursor:pointer}.card-interactive:hover{box-shadow:var(--shadow-card-hover);border-color:var(--border-glow);transform:translateY(-2px)}table{border-collapse:collapse;width:100%}th,td{text-align:left;border-bottom:1px solid var(--border);padding:12px 16px}th{background:var(--primary-light);color:var(--primary-dark);letter-spacing:.5px;text-transform:uppercase;font-size:13px;font-weight:600}tr:hover td{background:#2ec4b60d}.table-card{background:var(--bg-card);border-radius:var(--radius);border:1px solid var(--border);box-shadow:var(--shadow-sm);overflow:hidden}.table-card table{margin-bottom:0}.table-card th{-webkit-backdrop-filter:blur(8px);z-index:1;background:#fffffff2;border-top:none;position:sticky;top:0}.table-card th:first-child,.table-card td:first-child{padding-left:24px}.table-card th:last-child,.table-card td:last-child{padding-right:24px}table button{min-height:36px}.badge{letter-spacing:.3px;border-radius:12px;padding:4px 12px;font-size:12px;font-weight:600;display:inline-block}.badge-success{color:#388e3c;background:#4caf501a;border:1px solid #4caf5033}.badge-warning{color:#d68910;background:#f39c121a;border:1px solid #f39c1233}.badge-info{background:var(--primary-light);color:var(--primary-dark);border:1px solid #2ec4b633}.action-group{align-items:center;gap:8px;display:flex}.app-layout{background:var(--bg);flex-direction:column;min-height:100vh;display:flex}@media (width>=1024px){.app-layout:before{content:"";pointer-events:none;z-index:0;background:radial-gradient(circle,#2ec4b60a 0%,#0000 70%);border-radius:50%;width:600px;height:600px;position:fixed;top:-200px;right:-200px}.app-layout:after{content:"";pointer-events:none;z-index:0;background:radial-gradient(circle,#2ec4b608 0%,#0000 70%);border-radius:50%;width:500px;height:500px;position:fixed;bottom:-150px;left:-150px}}.app-header{-webkit-backdrop-filter:blur(16px);border-bottom:1px solid var(--border);z-index:100;background:#fffdf9e6;justify-content:space-between;align-items:center;height:56px;padding:0 32px;display:flex;position:sticky;top:0;box-shadow:0 1px 20px #0000000f}.app-header h1{background:linear-gradient(135deg, var(--primary) 0%, var(--primary-dark) 100%);-webkit-text-fill-color:transparent;letter-spacing:1px;-webkit-user-select:none;user-select:none;-webkit-background-clip:text;background-clip:text;font-size:22px;font-weight:800}.app-header .user-info{color:var(--text-secondary);align-items:center;gap:16px;font-size:15px;display:flex}.app-content{z-index:1;flex:1;width:100%;max-width:1200px;margin:0 auto;padding:28px 32px;position:relative}.nav-btn{cursor:pointer;color:var(--text-secondary);background:0 0;border:none;border-radius:8px;min-height:36px;padding:7px 16px;font-family:inherit;font-size:14px;transition:all .2s}.nav-btn:hover{color:var(--text);background:#2ec4b60f}.nav-btn[data-active=true]{background:var(--primary-light);color:var(--primary-dark);font-weight:600}.desktop-nav{display:none}.hamburger-btn{cursor:pointer;height:40px;color:var(--primary-dark);background:#2ec4b614;border:1px solid #2ec4b633;border-radius:10px;flex-shrink:0;align-items:center;gap:8px;padding:6px 14px;font-size:14px;font-weight:600;transition:background .15s;display:flex}.hamburger-btn:hover{background:#2ec4b62e}.hamburger-icon{flex-direction:column;justify-content:center;gap:4px;display:flex}.hamburger-icon span{background:var(--primary-dark);border-radius:2px;width:18px;height:2px;display:block}.side-drawer-overlay{z-index:200;opacity:0;pointer-events:none;background:#0000004d;transition:opacity .25s;position:fixed;inset:0}.side-drawer-overlay.open{opacity:1;pointer-events:auto}.side-drawer{-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);border-right:1px solid var(--border);z-index:201;background:#fffdf9fa;flex-direction:column;width:280px;height:100vh;transition:transform .25s;display:flex;position:fixed;top:0;left:0;overflow-y:auto;transform:translate(-100%)}.side-drawer.open{transform:translate(0)}.side-drawer-header{border-bottom:1px solid var(--border);padding:20px 24px 16px}.side-drawer-title{color:var(--text);font-size:18px;font-weight:700}.side-drawer-nav{flex:1;padding:8px 0}.side-drawer-item{text-align:left;width:100%;color:var(--text);cursor:pointer;background:0 0;border:none;border-left:3px solid #0000;min-height:48px;padding:14px 24px;font-size:15px;font-weight:500;transition:all .15s;display:block}.side-drawer-item:hover{background:#2ec4b60f}.side-drawer-item.active{border-left-color:var(--primary);color:var(--primary-dark);background:#2ec4b61a;font-weight:600}.toolbar select,.toolbar input{padding:8px 12px}.toolbar select{min-width:120px;padding-right:32px}.toolbar input{max-width:200px}.toolbar .row-count{color:var(--text-secondary);white-space:nowrap;margin-left:auto;font-size:14px}.toolbar .row-count strong{color:var(--primary-dark)}.page-header{justify-content:space-between;align-items:flex-start;margin-bottom:24px;display:flex}.page-header h2{margin-bottom:4px;font-size:22px;font-weight:700}.page-header .page-subtitle{color:var(--text-secondary);font-size:14px;font-weight:400}.app-content>h2{border-bottom:1px solid var(--border-subtle);color:var(--text);margin-bottom:28px;padding-bottom:16px;font-size:24px;font-weight:800;position:relative}.app-content>h2:after{content:"";background:linear-gradient(90deg, var(--primary), var(--primary-dark));border-radius:2px;width:60px;height:3px;position:absolute;bottom:-1px;left:0}.stat-card{transition:transform .3s var(--ease-out-back), box-shadow .3s var(--ease-out-expo), border-color .3s var(--ease-out-expo);position:relative;overflow:hidden}.stat-card:after{content:"";pointer-events:none;background:radial-gradient(circle,#2ec4b60f 0%,#0000 70%);border-radius:50%;width:80px;height:80px;position:absolute;top:-20px;right:-20px}.stat-card:hover{box-shadow:var(--shadow-card-hover);border-color:var(--border-glow);transform:translateY(-3px)}.stat-card .stat-icon{margin-bottom:8px;font-size:28px}.stat-card .stat-value{background:linear-gradient(135deg, var(--primary) 0%, var(--primary-dark) 100%);-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text;font-size:36px;font-weight:700}.stat-card .stat-label{color:var(--text-secondary);margin-top:2px;font-size:14px}.mode-tabs{border:1px solid var(--border);border-radius:var(--radius);background:#2ec4b60a;gap:2px;width:fit-content;margin-bottom:24px;padding:4px;display:flex}.mode-tab{color:var(--text-secondary);cursor:pointer;white-space:nowrap;background:0 0;border:none;border-radius:8px;padding:8px 24px;font-size:14px;font-weight:500;transition:all .15s}.mode-tab:hover{color:var(--text);background:#2ec4b60f}.mode-tab.active{background:var(--primary);color:#fff;font-weight:600}.empty-state:before{content:"📋";opacity:.5;font-size:36px}.link-name{color:var(--primary-dark);cursor:pointer;border-bottom:1px dashed #0000;transition:border-bottom-color .15s}.link-name:hover{border-bottom-color:var(--primary-dark)}.result-summary{text-align:center;margin-bottom:32px}.result-score{background:linear-gradient(135deg, var(--primary) 0%, var(--primary-dark) 100%);-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text;font-size:64px;font-weight:700}.result-score.perfect{background:linear-gradient(135deg, #4caf50 0%, var(--primary) 100%);-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text}.result-detail{color:var(--text-secondary);margin-top:8px;font-size:16px}.explanation-box{border-radius:var(--radius);color:#d68910;background:#f39c1214;border:1px solid #f39c1233;margin-top:12px;padding:12px 16px;font-size:15px}.compose-question-card{cursor:pointer;border:1px solid var(--border);margin-bottom:10px;padding:16px 20px;transition:all .2s}.compose-question-card:hover{border-color:var(--primary);background:#2ec4b60a}.compose-question-card.selected{border-color:var(--primary);background:var(--primary-light);box-shadow:0 0 14px #2ec4b61a}.compose-q-content{word-break:break-all;text-overflow:ellipsis;-webkit-line-clamp:2;-webkit-box-orient:vertical;font-weight:500;line-height:1.5;display:-webkit-box;overflow:hidden}.score-chart{padding:8px 0}.score-chart-bars{align-items:flex-end;gap:18px;min-height:200px;padding:0 8px;display:flex}.score-chart-bar-wrapper{flex-direction:column;flex:1;align-items:center;gap:6px;min-width:0;display:flex}.score-chart-pct{color:var(--text-secondary);font-size:12px;font-weight:600}.score-chart-bar{border-radius:6px 6px 0 0;width:100%;max-width:48px;min-height:4px;transition:height .4s}.score-chart-bar.high{background:linear-gradient(#4caf50 0%,#4caf5066 100%)}.score-chart-bar.mid{background:linear-gradient(#f39c12 0%,#f39c1266 100%)}.score-chart-bar.low{background:linear-gradient(#e74c3c 0%,#e74c3c66 100%)}.score-chart-label{color:var(--text-secondary);white-space:nowrap;text-align:center;text-overflow:ellipsis;max-width:100%;font-size:11px;overflow:hidden}.page-enter{animation:page-in .35s var(--ease-out-expo) forwards}@keyframes page-in{0%{opacity:0}to{opacity:1}}.stagger-item{opacity:0;animation:fade-in .4s var(--ease-out-expo) forwards;animation-delay:calc(60ms * var(--i,0))}@keyframes fade-in{0%{opacity:0}to{opacity:1}}::-webkit-scrollbar{width:6px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:#2ec4b640;border-radius:3px}::-webkit-scrollbar-thumb:hover{background:#2ec4b666}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:2px solid var(--primary);outline-offset:2px}@media (width<=1024px){.app-header{padding:0 16px}.app-content{max-width:100%;padding:16px}}@media (width<=768px){.app-content{padding:12px}.card,.table-card{padding:16px}.stat-cards{gap:12px}table{font-size:13px}th,td{padding:10px 8px}.toolbar{flex-wrap:wrap;gap:8px}.user-info span:first-child{display:none}.user-info{gap:4px}.word-rect{flex-direction:column}.word-rect-left{border-right:none;border-bottom:1px solid var(--border)}.learn-word-text{font-size:32px}.learn-card{padding:32px 20px}}@media (width>=768px) and (width<=1366px) and (orientation:landscape){.vocab-unit-grid,.stat-cards{grid-template-columns:repeat(3,1fr)}.dashboard-grid{grid-template-columns:1fr 1fr}}.restored-banner{color:#2e7d32;text-align:center;background:#e8f5e9;border:1px solid #c8e6c9;border-radius:8px;margin-bottom:16px;padding:10px 20px;font-size:14px;font-weight:500}.exam-header{justify-content:space-between;align-items:center;margin-bottom:24px;display:flex}.exam-header .exam-title{font-size:20px;font-weight:600}.timer{color:var(--primary-dark);background:var(--primary-light);border-radius:var(--radius);border:1px solid #2ec4b633;padding:8px 20px;font-size:24px;font-weight:700}.timer.warning{color:#c0392b;background:#e74c3c1a;border-color:#e74c3c33;animation:1s infinite pulse}@keyframes pulse{0%,to{opacity:1}50%{opacity:.6}}.question-nav{flex-wrap:wrap;gap:8px;margin-bottom:24px;display:flex}.question-nav button{border:1px solid var(--border);width:40px;height:40px;color:var(--text-secondary);background:0 0;border-radius:50%;padding:0;font-size:14px;transition:all .2s}.question-nav button:hover{border-color:var(--primary);color:var(--primary)}.question-nav button.answered{background:linear-gradient(135deg, var(--primary) 0%, var(--primary-dark) 100%);color:#fff;border-color:#0000}.question-nav button.active{border-color:var(--primary);box-shadow:0 0 12px #2ec4b659}.question-card{margin-bottom:20px}.question-card .q-content{margin-bottom:16px;font-size:18px;font-weight:500;line-height:1.6}.question-image{border:1px solid var(--border);border-radius:8px;max-width:100%;max-height:300px;margin-top:12px}.option-bank{border:1px solid var(--border);border-radius:var(--radius);background:#2ec4b60a;margin-bottom:20px;padding:16px}.option-bank-label{color:var(--text-secondary);margin-bottom:10px;font-size:13px;font-weight:600}.option-chips{flex-wrap:wrap;gap:8px;display:flex}.option-chip{border:1px solid var(--border);border-radius:var(--radius);cursor:pointer;background:var(--bg-card);align-items:center;gap:8px;padding:8px 14px;font-size:14px;transition:all .2s;display:flex}.option-chip:hover{border-color:var(--primary);background:var(--primary-light)}.option-chip.active{border-color:var(--primary);background:var(--primary-light);box-shadow:0 0 14px #2ec4b626}.option-chip.used{opacity:.35;pointer-events:none;-webkit-text-decoration:line-through #8b735566;text-decoration:line-through #8b735566}.option-chip-label{width:26px;height:26px;color:var(--text-secondary);background:#2ec4b61a;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:13px;font-weight:600;display:flex}.option-chip.active .option-chip-label{background:linear-gradient(135deg, var(--primary) 0%, var(--primary-dark) 100%);color:#fff}.passage-instruction{color:var(--text);margin-bottom:12px;font-size:15px;line-height:1.6}.passage-container{border:1px solid var(--border);border-radius:var(--radius);color:var(--text);background:#2ec4b608;padding:18px 20px;font-size:16px;line-height:2.4}.passage-text{white-space:pre-line}.blank-inline{vertical-align:baseline;border-radius:4px;margin:0 2px;padding:2px 6px;transition:all .15s;display:inline}.blank-inline.clickable{cursor:pointer;border-bottom:2px dashed #2ec4b666}.blank-inline.clickable:hover{border-bottom-color:var(--primary);background:#2ec4b614}.blank-inline.filled{background:#2ec4b61a;border-bottom:none}.blank-inline.blank-correct{border-bottom:2px solid var(--success);background:#4caf501a}.blank-inline.blank-wrong{border-bottom:2px solid var(--danger);background:#e74c3c14}.blank-content{color:var(--primary-dark);font-weight:500}.blank-correct .blank-content{color:var(--success)}.blank-wrong .blank-content{color:#c0392b}.blank-label{background:#2ec4b626;border-radius:3px;margin-right:4px;padding:1px 4px;font-size:13px;font-style:normal;font-weight:700}.blank-correct .blank-label{background:#4caf5026}.blank-wrong .blank-label{background:#e74c3c26}.blank-placeholder{color:var(--text-secondary);background:#2ec4b60d;border:1px dashed #2ec4b633;border-radius:3px;padding:1px 8px;font-size:13px}.blank-fix{color:var(--success);margin-left:4px;font-size:14px;font-weight:500;display:inline}.blank-result-banner{color:#d68910;background:#f39c1214;border:1px solid #f39c1233;border-radius:8px;margin-top:14px;padding:10px 14px;font-size:15px}.blank-result-banner.all-correct{color:#388e3c;background:#4caf5014;border-color:#4caf5033}.reading-passage{border:1px solid var(--border);border-left:3px solid var(--primary);border-radius:var(--radius);background:#2ec4b60a;margin-bottom:20px;padding:18px 20px}.reading-passage-label{color:var(--primary-dark);text-transform:uppercase;letter-spacing:2px;background:#2ec4b61a;border-radius:3px;margin-bottom:10px;padding:2px 8px;font-size:12px;font-weight:600;display:inline-block}.reading-passage-text{color:var(--text);font-size:16px;line-height:2}.reading-passage-text p{margin-bottom:8px}.reading-questions{flex-direction:column;gap:14px;display:flex}.reading-subq{border:1px solid var(--border);border-radius:var(--radius);background:#2ec4b608;padding:16px}.reading-subq-title{color:var(--text);margin-bottom:10px;font-size:15px;font-weight:600}.reading-fix{color:var(--success);background:#4caf500f;border-radius:4px;margin-top:8px;padding:6px 10px;font-size:13px;display:inline-block}.feedback-correct{border-radius:var(--radius);color:#388e3c;background:#4caf5014;border:1px solid #4caf5033;margin-top:12px;padding:12px 16px;font-size:15px}.option-list{flex-direction:column;gap:10px;display:flex}.option-item{border:1px solid var(--border);border-radius:var(--radius);cursor:pointer;background:var(--bg-card);align-items:center;gap:12px;padding:14px 18px;font-size:16px;transition:all .2s;display:flex}.option-item:hover{border-color:var(--primary);background:var(--primary-light)}.option-item.selected{border-color:var(--primary);background:var(--primary-light);box-shadow:0 0 12px #2ec4b61f}.option-item.correct{border-color:var(--success);background:#4caf5014}.option-item.wrong{border-color:var(--danger);background:#e74c3c0f}.option-label{width:32px;height:32px;color:var(--text-secondary);background:#2ec4b61a;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-weight:600;display:flex}.option-item.selected .option-label{background:linear-gradient(135deg, var(--primary) 0%, var(--primary-dark) 100%);color:#fff}.option-item.correct .option-label{background:var(--success);color:#fff}.option-item.wrong .option-label{color:#fff;background:#c0392b}.vocab-unit-grid{grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:16px;display:grid}.vocab-unit-card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);cursor:pointer;padding:24px;transition:all .2s;position:relative}.vocab-unit-card:hover{border-color:#2ec4b659;transform:translateY(-2px);box-shadow:0 8px 32px #2ec4b61f}.vocab-unit-card h3{color:var(--text);margin-bottom:8px;font-size:17px}.vocab-unit-card .unit-meta{color:var(--text-secondary);font-size:13px}.vocab-unit-card .unit-count{color:var(--primary-dark);background:#2ec4b614;border-radius:12px;padding:2px 10px;font-size:13px;font-weight:600;position:absolute;top:16px;right:16px}.word-rect-grid{flex-direction:column;gap:10px;display:flex}.word-rect{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-card);min-height:64px;transition:border-color .2s;display:flex;overflow:hidden}.word-rect:hover{border-color:#2ec4b64d}.word-rect-clickable{cursor:pointer}.word-rect-clickable:hover{border-color:#2ec4b666;box-shadow:0 2px 12px #2ec4b614}.word-rect-clickable:active{background:#2ec4b608}.word-rect-left{border-right:1px solid var(--border);flex-direction:column;flex:1;justify-content:center;min-width:0;padding:16px 20px;display:flex}.word-rect-left-inner{justify-content:space-between;align-items:center;gap:12px;display:flex}.word-rect-text-col{flex-direction:column;min-width:0;display:flex}.word-rect-left .word-text{color:var(--text);letter-spacing:.5px;font-size:20px;font-weight:700}.word-text-clickable{cursor:pointer;transition:color .15s}.word-text-clickable:hover{color:var(--primary-dark)}.word-rect-left-clickable{cursor:pointer;transition:background .15s}.word-rect-left-clickable:hover{background:#2ec4b60a}.word-rect-left .word-phonetic{color:var(--text-secondary);margin-top:2px;font-size:13px}.speaker-btn{cursor:pointer;background:0 0;border:none;border-radius:4px;padding:2px 4px;font-size:18px;line-height:1;transition:background .15s}.speaker-btn:hover{background:#2ec4b61a}.collection-btn{cursor:pointer;background:0 0;border:none;border-radius:4px;flex-shrink:0;padding:4px;line-height:1;transition:transform .15s}.collection-btn:hover{transform:scale(1.15)}.collection-btn-lg{font-size:28px}.collection-star{color:var(--text-secondary);transition:color .2s,transform .2s;display:inline-block}.collection-star.collected{color:#f5a623}.collection-btn:hover .collection-star{transform:scale(1.1)}.word-rect-right{cursor:pointer;-webkit-user-select:none;user-select:none;flex-direction:column;flex:1;justify-content:center;align-items:center;min-width:0;min-height:64px;padding:16px 20px;transition:background .3s;display:flex}.word-rect-right .flip-hint{color:var(--text-secondary);font-size:14px;transition:opacity .3s}.word-rect-right.flipped{background:#2ec4b60f;align-items:flex-start}.word-rect-right.flipped .flip-hint{display:none}.word-rect-right .word-meaning{color:var(--primary-dark);font-size:18px;font-weight:600;display:none}.word-rect-right.flipped .word-meaning{display:block}.word-rect-right .word-example{color:var(--text-secondary);margin-top:6px;font-size:14px;display:none}.word-rect-right.flipped .word-example{display:block}.word-rect-right .word-example-meaning{color:var(--text-secondary);opacity:.7;margin-top:2px;font-size:13px}.practice-progress{background:var(--bg-card);border:1px solid var(--border);border-radius:8px;height:8px;margin-bottom:8px;overflow:hidden}.practice-progress-bar{background:linear-gradient(90deg, var(--primary), var(--primary-dark));height:100%;transition:width .3s}.practice-progress-text{color:var(--text-secondary);text-align:center;margin-bottom:24px;font-size:14px}.practice-question{text-align:center;color:var(--text);padding:40px 20px;font-size:24px;font-weight:700}.practice-options{flex-direction:column;gap:12px;max-width:480px;margin:0 auto;display:flex}.practice-option{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);cursor:pointer;color:var(--text);text-align:center;padding:14px 20px;font-size:16px;transition:all .2s}.practice-option:hover{background:#2ec4b60a;border-color:#2ec4b680;box-shadow:0 0 16px #2ec4b61a}.practice-option.correct{color:#388e3c;background:#4caf5014;border-color:#4caf5099}.practice-option.wrong{color:#c0392b;background:#e74c3c0f;border-color:#e74c3c80}.practice-result{text-align:center;padding:48px 24px}.practice-result .result-score{background:linear-gradient(135deg, var(--primary) 0%, var(--primary-dark) 100%);-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text;font-size:56px;font-weight:800}.practice-result .result-detail{color:var(--text-secondary);margin-top:8px;margin-bottom:32px;font-size:16px}.import-area{border:2px dashed var(--border);border-radius:var(--radius);text-align:center;cursor:pointer;color:var(--text-secondary);padding:32px;font-size:14px;transition:border-color .2s,background .2s}.import-area:hover{background:#2ec4b608;border-color:#2ec4b680}.learn-status-bar{justify-content:center;gap:32px;margin-bottom:16px;display:flex}.learn-status-item{flex-direction:column;align-items:center;gap:4px;display:flex}.learn-status-label{color:var(--text-secondary);font-size:13px}.learn-status-value{color:var(--primary-dark);font-size:20px;font-weight:700}.learn-status-value.limit-reached{color:var(--warning)}.learn-progress{background:var(--bg-card);border:1px solid var(--border);border-radius:8px;height:6px;margin-bottom:20px;overflow:hidden}.learn-progress-bar{background:linear-gradient(90deg, var(--primary), var(--primary-dark));height:100%;transition:width .3s}.learn-limit-warning{text-align:center;border-radius:var(--radius);color:#d68910;background:#f39c1214;border:1px solid #f39c1233;margin-bottom:16px;padding:12px 20px;font-size:14px}.learn-card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);text-align:center;max-width:520px;margin:0 auto;padding:48px 40px;transition:border-color .2s}.learn-word-section{margin-bottom:32px}.learn-word-row{justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.learn-word-col{flex-direction:column;flex:1;align-items:center;min-width:0;display:flex}.learn-word-text{color:var(--text);letter-spacing:1px;font-size:40px;font-weight:800;line-height:1.2}.learn-word-clickable{cursor:pointer;-webkit-user-select:none;user-select:none;border-radius:var(--radius);margin:-8px -16px;padding:8px 16px;transition:background .15s,color .15s}.learn-word-clickable:hover{background:#2ec4b60d}.learn-word-clickable:hover .learn-word-text{color:var(--primary-dark)}.learn-word-clickable:active{background:#2ec4b61a}.learn-phonetic{color:var(--text-secondary);letter-spacing:.5px;margin-top:8px;font-size:18px}.learn-speaker-btn{color:var(--primary-dark);border-radius:var(--radius);cursor:pointer;background:#2ec4b614;border:1px solid #2ec4b633;margin-top:16px;padding:8px 20px;font-size:15px;transition:all .2s}.learn-speaker-btn:hover{border-color:var(--primary);background:#2ec4b626}.learn-meaning-section{border-radius:var(--radius);cursor:pointer;background:#2ec4b608;border:1px dashed #2ec4b633;flex-direction:column;justify-content:center;align-items:center;min-height:100px;padding:24px 20px;transition:all .2s;display:flex}.learn-meaning-section:hover{background:#2ec4b60f;border-color:#2ec4b666}.learn-meaning-section.revealed{cursor:default;background:#2ec4b60f;border-style:solid;border-color:#2ec4b640}.learn-meaning-hint{color:var(--text-secondary);font-size:15px}.learn-meaning{color:var(--primary-dark);margin-bottom:4px;font-size:24px;font-weight:700}.learn-example{border-top:1px solid var(--border);width:100%;margin-top:12px;padding-top:12px}.learn-example-text{color:var(--text);font-size:15px;font-style:italic}.learn-example-translation{color:var(--text-secondary);margin-top:4px;font-size:14px}.learn-actions{justify-content:center;align-items:center;min-height:52px;margin-top:24px;display:flex}.learn-done-badge{color:var(--success);border-radius:var(--radius);background:#4caf501a;border:1px solid #4caf5033;padding:10px 28px;font-size:18px;font-weight:600}.learn-done-badge.limit{color:#d68910;background:#f39c121a;border-color:#f39c1233}.learn-action-hint{color:var(--text-secondary);margin-top:8px;font-size:13px}.learn-nav{justify-content:center;align-items:center;gap:24px;max-width:520px;margin-top:24px;margin-left:auto;margin-right:auto;display:flex}.learn-nav-pos{color:var(--text-secondary);text-align:center;min-width:60px;font-size:15px}.learn-finish-section{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);text-align:center;max-width:520px;margin:32px auto 0;padding:32px 24px}.learn-finish-text{color:var(--primary-dark);font-size:18px;font-weight:600}.daily-panel{background:var(--bg-card);border-radius:var(--radius);border:1px solid var(--border);margin-bottom:32px;padding:24px}.daily-panel-header{justify-content:space-between;align-items:center;margin-bottom:20px;display:flex}.daily-stats{gap:24px;margin-bottom:20px;display:flex}.daily-stat-item{border-radius:var(--radius);background:#2ec4b60f;flex-direction:column;flex:1;align-items:center;gap:4px;padding:12px 8px;display:flex}.daily-stat-num{color:var(--primary-dark);font-size:28px;font-weight:700}.daily-stat-label{color:var(--text-secondary);font-size:13px}.daily-actions{gap:12px;display:flex}@media (width<=600px){.daily-stats{gap:8px}.daily-stat-num{font-size:22px}.daily-actions{flex-direction:column}}.flash-card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);text-align:center;cursor:pointer;flex-direction:column;justify-content:center;align-items:center;max-width:480px;min-height:260px;margin:0 auto;padding:48px 40px;transition:border-color .2s,box-shadow .2s;display:flex}.flash-card:hover{border-color:#2ec4b659;box-shadow:0 0 24px #2ec4b614}.flash-word{color:var(--text);letter-spacing:1px;font-size:44px;font-weight:800;line-height:1.2}.flash-phonetic{color:var(--text-secondary);letter-spacing:.5px;margin-top:8px;font-family:monospace;font-size:18px}.flash-reveal-hint{color:var(--text-secondary);border-radius:var(--radius);border:1px dashed #2ec4b640;margin-top:32px;padding:12px 24px;font-size:15px;transition:all .2s}.flash-card:hover .flash-reveal-hint{border-color:var(--primary);color:var(--primary-dark)}.flash-revealed{border-top:1px solid var(--border);width:100%;margin-top:24px;padding-top:24px}.flash-meaning{color:var(--primary-dark);font-size:26px;font-weight:700}.flash-example{color:var(--text);margin-top:12px;font-size:15px;font-style:italic}.flash-example-meaning{color:var(--text-secondary);margin-top:4px;font-size:14px}.flash-actions{justify-content:center;gap:16px;max-width:480px;margin-top:24px;margin-left:auto;margin-right:auto;display:flex}.flash-actions button{flex:1;padding:16px 24px;font-size:18px;font-weight:600}.flash-summary{text-align:center;padding:48px 24px}.flash-summary-score{background:linear-gradient(135deg, #4caf50 0%, var(--primary) 100%);-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text;font-size:56px;font-weight:800}.flash-summary-detail{color:var(--text-secondary);margin-top:8px;margin-bottom:24px;font-size:16px}.flash-summary-bars{border-radius:4px;gap:4px;max-width:320px;height:8px;margin:0 auto;display:flex;overflow:hidden}.flash-bar{border-radius:4px;height:100%}.flash-bar.known{background:linear-gradient(90deg,#4caf50,#388e3c)}.flash-bar.unknown{background:linear-gradient(90deg,#e74c3c,#c0392b)}.mastery-badge{background:#2ec4b60f;border-radius:12px;flex-shrink:0;align-items:center;padding:4px 10px;font-size:13px;display:flex}.mastery-progress{color:var(--text-secondary);letter-spacing:2px;gap:2px;display:flex}.mastery-dot{transition:color .3s}.mastery-dot.filled{color:#4caf50}.mastery-done{color:#4caf50;white-space:nowrap;font-weight:600}.word-rect-mastered{opacity:.55;transition:opacity .4s}@media (width<=600px){.flash-word{font-size:32px}.flash-card{min-height:200px;padding:32px 20px}.flash-actions{flex-direction:column}}.course-layout{align-items:flex-start;gap:24px;display:flex}.course-left{flex:1;min-width:0}.course-right{flex-shrink:0;width:340px}.course-section-title{color:var(--text-secondary);border-bottom:1px solid var(--border);margin-bottom:12px;padding-bottom:8px;font-size:16px;font-weight:600}.sentence-list{flex-direction:column;gap:8px;display:flex}.sentence-card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);cursor:pointer;padding:14px 16px;transition:all .15s;position:relative}.sentence-card:hover{border-color:var(--primary);background:#2ec4b608}.sentence-card.active{border-color:var(--primary);background:#2ec4b60f}.sentence-en{color:var(--text);flex-wrap:wrap;gap:0 6px;margin-bottom:6px;font-family:Georgia,Times New Roman,serif;font-size:17px;font-weight:600;line-height:1.7;display:flex}.sentence-word{cursor:pointer;border-radius:3px;padding:1px 3px;transition:all .12s;display:inline-block}.sentence-word:hover{background:#2ec4b626}.sentence-word.highlight{color:var(--primary-dark);background:#2ec4b64d}.sentence-word.highlight-word{color:#d68910;background:#f39c1240;border-radius:3px}.sentence-cn{color:var(--text-secondary);font-size:14px;line-height:1.5}.grammar-list{flex-direction:column;gap:10px;display:flex}.grammar-card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);padding:14px 16px;transition:all .15s}.grammar-card:hover{border-color:#2ec4b659}.grammar-title{color:var(--primary-dark);margin-bottom:8px;font-size:15px;font-weight:700}.grammar-explanation{color:var(--text);white-space:pre-wrap;margin-bottom:8px;font-size:13px;line-height:1.6}.grammar-examples{flex-direction:column;gap:8px;display:flex}.grammar-example{border-left:3px solid var(--primary);background:#2ec4b60f;border-radius:0 8px 8px 0;padding:8px 12px}.grammar-example-text{color:var(--text);margin-bottom:2px;font-family:Georgia,Times New Roman,serif;font-size:14px}.grammar-example-cn{color:var(--text-secondary);font-size:12px}.grammar-example-row{align-items:flex-start;gap:8px;margin-bottom:8px;display:flex}.grammar-example-fields{flex-direction:column;flex:1;gap:6px;display:flex}.grammar-example-fields input{width:100%}@media (width<=768px){.course-layout{flex-direction:column}.course-right{width:100%}}.sd-dashboard{opacity:0;flex-direction:column;gap:16px;transition:opacity .45s,transform .45s;display:flex;transform:translateY(12px)}.sd-dashboard.sd-visible{opacity:1;transform:translateY(0)}.sd-welcome{justify-content:space-between;align-items:center;gap:16px;display:flex}.sd-welcome-text{flex-direction:column;gap:2px;display:flex}.sd-greeting{color:var(--text);font-size:20px;font-weight:700}.sd-grade-bar{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);align-items:center;gap:10px;padding:12px 16px;display:flex}.sd-grade-label{color:var(--text-secondary);white-space:nowrap;margin-right:4px;font-size:14px;font-weight:600}.sd-grade-bar select{border:1px solid var(--border);background:var(--bg);color:var(--text);cursor:pointer;border-radius:6px;outline:none;padding:6px 10px;font-size:14px}.sd-grade-bar select:focus{border-color:var(--primary);box-shadow:0 0 0 2px #2ec4b626}.sd-date{color:var(--text-secondary);font-size:13px}.sd-today-row{grid-template-columns:1fr 1fr;gap:16px;display:grid}.sd-today-card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);flex-direction:column;padding:20px 24px;display:flex}.sd-today-header{justify-content:space-between;align-items:baseline;margin-bottom:16px;display:flex}.sd-today-title{color:var(--text);font-size:15px;font-weight:700}.sd-today-goal{color:var(--text-secondary);font-size:12px}.sd-today-body{flex:1;align-items:center;gap:24px;display:flex}.sd-today-ring{flex-shrink:0;width:100px;height:100px;position:relative}.sd-today-ring svg{width:100%;height:100%}.sd-ring-fill{transition:stroke-dasharray .8s}.sd-ring-center{flex-direction:column;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.sd-ring-num{color:var(--primary-dark);font-size:28px;font-weight:800;line-height:1}.sd-ring-unit{color:var(--text-secondary);font-size:12px}.sd-today-detail{flex-direction:column;flex:1;gap:12px;display:flex}.sd-today-item{align-items:center;gap:8px;display:flex}.sd-today-dot{border-radius:50%;flex-shrink:0;width:10px;height:10px}.sd-today-item-label{color:var(--text-secondary);flex:1;font-size:14px}.sd-today-item-num{color:var(--text);font-size:20px;font-weight:700}.sd-week-card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);flex-direction:column;padding:20px 24px;display:flex}.sd-week-title{color:var(--text);margin-bottom:12px;font-size:15px;font-weight:700}.sd-week-bars{flex:1;align-items:flex-end;gap:8px;min-height:0;display:flex}.sd-week-col{flex-direction:column;flex:1;align-items:center;gap:4px;min-height:0;display:flex}.sd-week-bar-wrap{flex:1;justify-content:center;align-items:flex-end;width:100%;min-height:60px;display:flex}.sd-week-bar{background:#2ec4b640;border-radius:4px 4px 0 0;width:70%;max-width:32px;min-height:3px;transition:height .6s,background .3s}.sd-week-bar.sd-week-bar-today{background:linear-gradient(180deg, var(--primary) 0%, #2ec4b666 100%)}.sd-week-count{color:var(--text-secondary);font-size:12px;font-weight:700;line-height:1}.sd-week-label{color:var(--text-secondary);font-size:11px}.sd-week-total{color:var(--text-secondary);text-align:center;margin-top:10px;font-size:13px}.sd-week-total strong{color:var(--primary-dark);font-size:16px}.sd-stat-row{grid-template-columns:repeat(4,1fr);gap:14px;display:grid}.sd-stat-card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);text-align:center;opacity:0;animation:.4s forwards sd-fade-up;animation-delay:calc(80ms * var(--i,0));cursor:default;padding:22px 16px;transition:transform .2s,box-shadow .2s,border-color .2s;transform:translateY(8px)}.sd-stat-card:hover{border-color:var(--border-glow);transform:translateY(-3px);box-shadow:0 8px 28px #2ec4b61f}.sd-stat-card.sd-stat-accent{background:linear-gradient(135deg,#2ec4b612 0%,#2ec4b605 100%);border-color:#2ec4b647}.sd-stat-icon{margin-bottom:6px;font-size:26px;line-height:1}.sd-stat-value{color:var(--primary-dark);font-size:32px;font-weight:800;line-height:1.15}.sd-stat-label{color:var(--text-secondary);margin-top:4px;font-size:13px}.sd-actions{flex-wrap:wrap;gap:10px;display:flex}.sd-btn-main{background:linear-gradient(135deg, var(--primary) 0%, var(--primary-dark) 100%);color:#fff;border-radius:var(--radius);cursor:pointer;letter-spacing:1px;border:none;flex:1;min-width:160px;padding:14px 24px;font-size:16px;font-weight:600;transition:all .2s;box-shadow:0 2px 20px #1a8c7a40}.sd-btn-main:hover{transform:translateY(-2px);box-shadow:0 6px 28px #1a8c7a66}.sd-btn-main:active{transform:scale(.97)}.sd-btn-side{background:var(--bg-card);color:var(--text-secondary);border:1px solid var(--border);border-radius:var(--radius);cursor:pointer;white-space:nowrap;padding:14px 20px;font-size:14px;transition:all .2s}.sd-btn-side:hover{border-color:var(--primary);color:var(--primary-dark);background:#2ec4b60d;transform:translateY(-1px)}.sd-bottom-grid{flex:1;grid-template-columns:1fr 1fr;gap:16px;min-height:0;display:grid}.sd-panel{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);flex-direction:column;padding:20px 22px;display:flex}.sd-panel-title{color:var(--text);align-items:center;gap:8px;margin-bottom:12px;font-size:15px;font-weight:700;display:flex}.sd-panel-badge{color:#c0392b;background:#e74c3c1a;border-radius:10px;padding:2px 8px;font-size:11px;font-weight:600}.sd-exam-list{flex-direction:column;flex:1;gap:2px;display:flex}.sd-exam-row{cursor:pointer;opacity:0;border-radius:8px;align-items:center;gap:10px;padding:10px 12px;transition:background .15s,transform .15s;animation:.3s forwards sd-fade-up;display:flex}.sd-exam-row:hover{background:#2ec4b612;transform:translate(2px)}.sd-exam-name{color:var(--text);text-overflow:ellipsis;white-space:nowrap;flex:1;font-size:14px;overflow:hidden}.sd-exam-date{color:var(--text-secondary);flex-shrink:0;font-size:11px}.sd-exam-badge{border-radius:8px;flex-shrink:0;padding:3px 10px;font-size:13px;font-weight:700}.sd-exam-badge.good{color:#388e3c;background:#4caf501a}.sd-exam-badge.mid{color:#d68910;background:#f39c121a}.sd-exam-badge.low{color:#c0392b;background:#e74c3c1a}.sd-word-list{flex-direction:column;flex:1;gap:6px;display:flex}.sd-word-row{opacity:0;background:#e74c3c08;border:1px solid #e74c3c14;border-radius:8px;justify-content:space-between;align-items:center;padding:10px 14px;transition:background .15s,transform .15s;animation:.3s forwards sd-fade-up;display:flex}.sd-word-row:hover{background:#e74c3c12;transform:translate(2px)}.sd-word-info{align-items:center;gap:10px;min-width:0;display:flex}.sd-word-en{color:var(--text);font-family:Georgia,Times New Roman,serif;font-size:15px;font-weight:700}.sd-word-cn{color:var(--text-secondary);text-overflow:ellipsis;white-space:nowrap;font-size:13px;overflow:hidden}.sd-word-err{color:#c0392b;background:#e74c3c14;border-radius:8px;flex-shrink:0;padding:3px 10px;font-size:12px;font-weight:600}.sd-empty{text-align:center;color:var(--text-secondary);flex:1;justify-content:center;align-items:center;padding:28px 0;font-size:14px;display:flex}@keyframes sd-fade-up{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@media (width<=900px){.sd-today-row{grid-template-columns:1fr}.sd-stat-row{grid-template-columns:repeat(2,1fr)}.sd-bottom-grid{grid-template-columns:1fr}}@media (width<=600px){.sd-welcome{flex-direction:column;align-items:flex-start}.sd-actions{flex-direction:column}.sd-btn-main,.sd-btn-side{width:100%}.sd-today-body{text-align:center;flex-direction:column;align-items:center}.sd-today-detail{align-items:center}}.class-breakdown-card{cursor:pointer;margin-bottom:16px;transition:border-color .2s,box-shadow .2s}.class-breakdown-card:hover{border-color:var(--border-glow);box-shadow:0 0 12px #2ec4b614}.class-breakdown-header{justify-content:space-between;align-items:center;margin-bottom:12px;display:flex}.class-breakdown-metrics{flex-wrap:wrap;gap:24px;display:flex}.class-breakdown-metric{flex-direction:column;gap:2px;display:flex}.class-breakdown-metric .metric-label{color:var(--text-secondary);font-size:12px}.class-breakdown-metric .metric-value{color:var(--primary-dark);font-size:20px;font-weight:700}.student-metric-row{border-bottom:1px solid var(--border);align-items:center;gap:16px;padding:6px 0;font-size:14px;display:flex}.student-metric-row:last-child{border-bottom:none}.activity-heatmap{flex-wrap:wrap;align-items:flex-end;gap:4px;display:flex}.activity-cell{cursor:default;border-radius:3px;width:16px;height:16px;transition:transform .15s}.activity-cell:hover{z-index:1;transform:scale(1.3)}.activity-legend{color:var(--text-secondary);align-items:center;gap:12px;margin-top:12px;font-size:12px;display:flex}.activity-legend-swatch{border-radius:2px;width:12px;height:12px}.weak-word-list{flex-direction:column;gap:8px;display:flex}.weak-word-item{background:#e74c3c0a;border:1px solid #e74c3c1f;border-radius:8px;justify-content:space-between;align-items:center;padding:8px 12px;font-size:14px;display:flex}.weak-word-item .word-name{font-family:Georgia,Times New Roman,serif;font-weight:600}.weak-word-item .word-meaning{color:var(--text-secondary);font-size:13px}.dashboard-grid{grid-template-columns:1fr 1fr;gap:24px;display:grid}@media (width<=768px){.dashboard-grid{grid-template-columns:1fr}}.td-active-banner{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);opacity:0;align-items:center;gap:16px;padding:18px 24px;transition:border-color .2s,box-shadow .2s;animation:.4s .4s forwards sd-fade-up;display:flex}.td-active-banner:hover{border-color:var(--border-glow);box-shadow:0 0 14px #2ec4b60f}.td-active-icon{font-size:30px;line-height:1}.td-active-text{flex-direction:column;gap:2px;display:flex}.td-active-label{color:var(--text-secondary);font-size:13px}.td-active-count{color:var(--primary-dark);font-size:22px;font-weight:700}.td-actions{opacity:0;flex-wrap:wrap;gap:10px;animation:.4s .5s forwards sd-fade-up;display:flex}.td-btn{border-radius:var(--radius);cursor:pointer;border:none;padding:13px 22px;font-size:14px;font-weight:600;transition:all .2s}.td-btn-primary{background:linear-gradient(135deg, var(--primary) 0%, var(--primary-dark) 100%);color:#fff;letter-spacing:1px;flex:1;min-width:140px;box-shadow:0 2px 20px #1a8c7a40}.td-btn-primary:hover{transform:translateY(-2px);box-shadow:0 6px 28px #1a8c7a66}.td-btn-primary:active{transform:scale(.97)}.td-btn-side{background:var(--bg-card);color:var(--text-secondary);border:1px solid var(--border)!important}.td-btn-side:hover{color:var(--primary-dark);background:#2ec4b60d;transform:translateY(-1px);border-color:var(--primary)!important}.td-section-header{justify-content:space-between;align-items:baseline;margin-top:8px;display:flex}.td-section-title{color:var(--text);margin:0;font-size:17px;font-weight:700}.td-section-count{color:var(--text-secondary);font-size:13px}.td-class-grid{grid-template-columns:1fr 1fr;gap:16px;display:grid}.td-class-card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);cursor:pointer;opacity:0;padding:20px 22px;transition:border-color .2s,box-shadow .2s,transform .2s;animation:.4s forwards sd-fade-up}.td-class-card:hover{border-color:var(--border-glow);transform:translateY(-2px);box-shadow:0 8px 28px #2ec4b61a}.td-class-header{justify-content:space-between;align-items:center;margin-bottom:14px;display:flex}.td-class-name{color:var(--text);font-size:16px;font-weight:700}.td-class-badge{color:var(--text-secondary);background:var(--bg);border-radius:10px;padding:3px 10px;font-size:12px;font-weight:500}.td-class-metrics{border-bottom:1px solid var(--border);gap:28px;margin-bottom:16px;padding-bottom:14px;display:flex}.td-metric{flex-direction:column;gap:2px;display:flex}.td-metric-label{color:var(--text-secondary);font-size:12px}.td-metric-value{color:var(--primary-dark);font-size:22px;font-weight:700}.td-metric-value.accent{color:var(--success)}.td-class-students{flex-direction:column;gap:2px;display:flex}.td-students-label{color:var(--text-secondary);text-transform:uppercase;letter-spacing:.5px;margin-bottom:4px;font-size:11px}.td-student-row{border-radius:6px;align-items:center;gap:12px;padding:7px 8px;transition:background .15s;display:flex}.td-student-row:hover{background:#2ec4b60d}.td-student-name{color:var(--text);flex:1;font-size:14px;font-weight:500}.td-student-exams{color:var(--text-secondary);font-size:12px}.td-student-score{color:#388e3c;background:#4caf501a;border-radius:8px;padding:2px 10px;font-size:13px;font-weight:700}@media (width<=900px){.td-class-grid{grid-template-columns:1fr}}@media (width<=600px){.td-actions{flex-direction:column}.td-btn-primary,.td-btn-side{width:100%}.td-class-metrics{gap:16px}.td-class-header{flex-direction:column;align-items:flex-start;gap:4px}}.star-picker{align-items:center;gap:4px;display:flex}.star-btn{cursor:pointer;color:#8b735533;background:0 0;border:none;padding:4px;font-size:32px;line-height:1;transition:color .2s,transform .2s,filter .2s}.star-btn:hover{filter:drop-shadow(0 0 6px #f39c1266);transform:scale(1.2)}.star-btn.filled{color:#f39c12;filter:drop-shadow(0 0 6px #f39c1240)}.star-display{color:#f39c12;letter-spacing:2px;font-size:18px}@keyframes star-shimmer{0%,to{filter:drop-shadow(0 0 3px #f39c1233)}50%{filter:drop-shadow(0 0 10px #f39c1280)}}.star-shimmer{animation:1.8s ease-in-out infinite star-shimmer}.assessment-form{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);margin-bottom:32px;padding:24px;box-shadow:0 1px 3px #0000000a}.assessment-form-row{flex-wrap:wrap;align-items:flex-end;gap:16px;margin-bottom:16px;display:flex}.assessment-form-row>*{min-width:150px}.badge-vocab{color:var(--primary-dark);background:#2ec4b61a;border:1px solid #2ec4b633}.badge-course{color:#388e3c;background:#4caf501a;border:1px solid #4caf5033}.ranking-badge{border-radius:50%;justify-content:center;align-items:center;width:28px;height:28px;font-size:16px;display:inline-flex}.ranking-badge.gold{background:linear-gradient(135deg,#f39c12,#d68910);box-shadow:0 0 10px #f39c124d}.ranking-badge.silver{background:linear-gradient(135deg,#b0bec5,#90a4ae);box-shadow:0 0 10px #b0bec54d}.ranking-badge.bronze{background:linear-gradient(135deg,#cd7f32,sienna);box-shadow:0 0 10px #cd7f324d}.ranking-row-gold{background:#f39c120f!important}.ranking-row-silver{background:#b0bec514!important}.ranking-row-bronze{background:#cd7f320f!important}.ranking-row-self{border-left:3px solid var(--primary);background:#2ec4b614!important}.matrix-wrap{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-card,#fff);max-height:65vh;overflow:auto;box-shadow:0 1px 2px #0000000a,0 4px 20px #0000000f}.matrix-table{border-collapse:collapse;table-layout:auto;width:100%;min-width:max-content}.matrix-th-grade{z-index:3;text-align:center;color:#0d6b5c;border-bottom:2px solid var(--primary);letter-spacing:.4px;white-space:nowrap;background:linear-gradient(#d4f0ec 0%,#c0e8e3 100%);padding:8px 6px;font-size:12px;font-weight:700;position:sticky;top:0}.matrix-th-unit{z-index:3;text-align:center;white-space:nowrap;text-overflow:ellipsis;min-width:52px;max-width:80px;color:var(--primary-dark);letter-spacing:.2px;background:linear-gradient(#eef9f7 0%,#e2f4f1 100%);border-bottom:1px solid #2ec4b633;padding:8px 6px;font-size:11px;font-weight:600;position:sticky;top:36px;overflow:hidden}.matrix-th-name{text-align:left;letter-spacing:.3px;min-width:90px;color:var(--primary-dark);border-right:1px solid #2ec4b640;border-bottom:2px solid var(--primary);background:linear-gradient(#e8f8f6 0%,#daf2ef 100%);padding:12px 18px;font-size:13px;font-weight:700;position:sticky;top:0;left:0;z-index:5!important}.matrix-td-name{z-index:1;background:var(--bg-card,#fff);white-space:nowrap;border-bottom:1px solid #0000000a;border-right:1px solid #2ec4b61f;min-width:90px;padding:10px 18px;font-size:13px;font-weight:500;transition:background .2s;position:sticky;left:0}.matrix-td-star{text-align:center;cursor:pointer;-webkit-user-select:none;user-select:none;color:#8b73551a;border-bottom:1px solid #0000000a;padding:8px 4px;font-size:18px;line-height:1;transition:transform .18s cubic-bezier(.34,1.56,.64,1),color .18s,background .18s,text-shadow .18s;position:relative}.matrix-td-star:hover{color:#f39c12b3;z-index:2;background:#f39c1214;transform:scale(1.5)}.matrix-td-star.has-star{color:#f39c12;text-shadow:0 0 6px #f39c1233}.matrix-td-star.has-star:hover{color:#e67e22;text-shadow:0 0 12px #f39c1259;background:#f39c121f;transform:scale(1.35)}.matrix-table tbody tr{transition:background .15s}.matrix-table tbody tr:hover .matrix-td-name{background:#2ec4b60d}.matrix-table tbody tr:hover .matrix-td-star{background:#2ec4b608}.matrix-table tbody tr:nth-child(2n) .matrix-td-name{background:#00000003}.matrix-table tbody tr:nth-child(2n) .matrix-td-star{background:#00000002}.matrix-table tbody tr:nth-child(2n):hover .matrix-td-name,.matrix-table tbody tr:nth-child(2n):hover .matrix-td-star{background:#2ec4b60d}.matrix-td-name .link-name{color:var(--primary-dark);cursor:pointer;border-bottom:1px dashed #0000;transition:all .15s}.matrix-td-name .link-name:hover{border-bottom-color:var(--primary-dark);color:#0d6b5c}.assessment-legend{color:var(--text-secondary);background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);flex-wrap:wrap;align-items:center;gap:24px;margin-top:16px;padding:14px 20px;font-size:13px;display:flex;box-shadow:0 1px 3px #00000008}.assessment-legend span{white-space:nowrap;align-items:center;gap:4px;display:inline-flex}.direct-form-card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);margin-bottom:20px;padding:20px 24px;box-shadow:0 1px 3px #00000008}.direct-form-card .form-row{flex-wrap:wrap;align-items:flex-end;gap:12px;display:flex}.direct-form-card select{min-width:160px}.direct-form-card .btn-confirm{color:#fff;border-radius:var(--radius);cursor:pointer;background:linear-gradient(135deg,#f39c12 0%,#e67e22 100%);border:none;min-height:44px;padding:8px 28px;font-size:15px;font-weight:600;transition:all .2s;box-shadow:0 2px 12px #f39c1240}.direct-form-card .btn-confirm:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 4px 20px #f39c1266}.direct-form-card .btn-confirm:active:not(:disabled){transform:scale(.97)}.direct-form-card .btn-confirm:disabled{opacity:.4;cursor:not-allowed}.direct-records-card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;box-shadow:0 1px 3px #00000008}.direct-records-card table{margin-bottom:0}.direct-records-card thead th{color:#b8730a;letter-spacing:.5px;text-transform:uppercase;background:linear-gradient(#fef9f0 0%,#fdf5e6 100%);border-bottom:2px solid #f39c1233;font-size:12px;font-weight:600}.direct-records-card tbody td{vertical-align:middle;border-bottom:1px solid #0000000a;padding:12px 16px}.direct-records-card tbody tr{transition:background .15s}.direct-records-card tbody tr:hover td{background:#f39c1208}.star-total-badge{color:#d68910;background:linear-gradient(135deg,#f39c121a 0%,#f39c120d 100%);border:1px solid #f39c1233;border-radius:20px;align-items:center;gap:4px;padding:4px 12px;font-size:13px;font-weight:700;display:inline-flex}.star-plus{color:#4caf50;font-size:14px;font-weight:700}.toolbar{flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:20px;display:flex}.toolbar select{background-color:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);min-width:130px;color:var(--text);cursor:pointer;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%238B7355' d='M6 8L1 3h10z'/%3E%3C/svg%3E");background-position:right 10px center;background-repeat:no-repeat;padding:9px 32px 9px 12px;font-size:14px;transition:border-color .2s,box-shadow .2s}.toolbar select:hover{border-color:#2ec4b666}.toolbar select:focus{border-color:var(--primary);outline:none;box-shadow:0 0 0 3px #2ec4b61a}.toolbar .row-count{color:var(--text-secondary);white-space:nowrap;margin-left:auto;font-size:13px;font-weight:500}.filter-group{align-items:center;gap:6px;display:flex}.filter-group label{color:var(--text-secondary);white-space:nowrap;font-size:13px;font-weight:600}.empty-state{text-align:center;color:var(--text-secondary);background:var(--bg-card);border-radius:var(--radius);border:1px dashed var(--border);flex-direction:column;align-items:center;gap:10px;padding:56px 24px;font-size:15px;display:flex}.empty-state:before{content:"📋";opacity:.4;margin-bottom:4px;font-size:40px}@media (width<=768px){.direct-form-card .form-row{flex-direction:column;align-items:stretch}.direct-form-card select{min-width:100%}.assessment-legend{gap:12px;font-size:12px}.matrix-th-name,.matrix-td-name{min-width:70px;padding:8px 10px;font-size:12px}.matrix-th-unit{min-width:44px;padding:8px 4px;font-size:10px}.matrix-td-star{padding:6px 3px;font-size:16px}}.cr-tab-table{border-top-left-radius:0;border-top-right-radius:0;margin-top:0}.class-student-list{flex-wrap:wrap;gap:8px;display:flex}.class-student-chip{border:1px solid var(--border);border-radius:var(--radius);background:#2ec4b60f;align-items:center;gap:6px;padding:6px 12px;font-size:14px;display:flex}.class-student-chip .remove-btn{color:var(--danger);cursor:pointer;background:0 0;border:none;padding:0 2px;font-size:18px;line-height:1;transition:color .15s}.class-student-chip .remove-btn:hover{color:#c0392b}.skel{background:linear-gradient(90deg, var(--border) 25%, #2ec4b61f 37%, var(--border) 63%);background-size:400% 100%;animation:1.8s ease-in-out infinite skel-shimmer}@keyframes skel-shimmer{0%{background-position:100% 0}to{background-position:0 0}}.skel-block{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);flex-direction:column;gap:14px;padding:18px 20px;display:flex}.skel-block-lines{flex-direction:column;gap:10px;display:flex}.skel-page{flex-direction:column;gap:16px;display:flex}.skel-row{grid-template-columns:1fr 1fr;gap:16px;display:grid}.skel-row.skel-row-4{grid-template-columns:repeat(4,1fr)}.skel-exam-header{justify-content:space-between;align-items:center;gap:16px;display:flex}@media (width<=768px){.skel-row,.skel-row.skel-row-4{grid-template-columns:1fr}}.toast-container{z-index:10000;pointer-events:none;flex-direction:column;gap:8px;max-width:380px;display:flex;position:fixed;top:16px;right:16px}.toast{color:#fff;pointer-events:auto;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-radius:10px;align-items:center;gap:10px;padding:12px 18px;font-size:14px;font-weight:500;display:flex;box-shadow:0 6px 24px #0000002e}.toast-success{background:linear-gradient(135deg,#2ecc71 0%,#27ae60 100%)}.toast-error{background:linear-gradient(135deg,#e74c3c 0%,#c0392b 100%)}.toast-warning{background:linear-gradient(135deg,#f39c12 0%,#d68910 100%)}.toast-info{background:linear-gradient(135deg, var(--primary) 0%, var(--primary-dark) 100%)}.toast-icon{flex-shrink:0;font-size:18px;line-height:1}.toast-msg{flex:1;line-height:1.35}.toast-enter{animation:.3s forwards toast-slide-in}.toast-exit{animation:.28s forwards toast-slide-out}@keyframes toast-slide-in{0%{opacity:0;transform:translate(60px)}to{opacity:1;transform:translate(0)}}@keyframes toast-slide-out{0%{opacity:1;transform:translate(0)}to{opacity:0;transform:translate(60px)}}.rk-icon{vertical-align:middle;flex-shrink:0;justify-content:center;align-items:center;width:24px;height:24px;font-size:16px;display:inline-flex}.rk-rank-num{color:var(--text-secondary);font-size:14px;font-weight:700}.rk-my-stats{grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:24px;display:grid}.rk-my-stat{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);text-align:center;opacity:0;padding:22px 16px;transition:transform .25s cubic-bezier(.34,1.56,.64,1),box-shadow .25s,border-color .25s;animation:.4s forwards rk-fade-up;position:relative;overflow:hidden;transform:translateY(8px)}.rk-my-stat:before{content:"";background:linear-gradient(90deg, var(--primary), var(--primary-dark));border-radius:0 0 3px 3px;width:0;height:3px;transition:width .3s;position:absolute;top:0;left:50%;transform:translate(-50%)}.rk-my-stat:hover:before{width:60%}.rk-my-stat:first-child{animation-delay:50ms}.rk-my-stat:nth-child(2){animation-delay:.12s}.rk-my-stat:nth-child(3){animation-delay:.19s}.rk-my-stat:nth-child(4){animation-delay:.26s}.rk-my-stat:hover{border-color:var(--border-glow);transform:translateY(-3px);box-shadow:0 8px 28px #2ec4b61a}.rk-my-stat-icon{margin-bottom:8px;font-size:26px}.rk-my-stat-value{color:var(--primary-dark);letter-spacing:-.5px;font-size:30px;font-weight:800;line-height:1.2}.rk-my-stat-label{color:var(--text-secondary);margin-top:6px;font-size:13px;font-weight:500}.rk-tabs{border:1px solid var(--border);border-radius:var(--radius);background:#2ec4b60a;gap:4px;width:fit-content;margin-bottom:20px;padding:4px;display:flex;box-shadow:0 1px 3px #00000008}.rk-tab{color:var(--text-secondary);cursor:pointer;white-space:nowrap;background:0 0;border:none;border-radius:9px;padding:9px 22px;font-size:14px;font-weight:600;transition:all .25s cubic-bezier(.4,0,.2,1);position:relative}.rk-tab:hover{color:var(--primary-dark);background:#2ec4b614}.rk-tab.rk-tab-active{background:linear-gradient(135deg, var(--primary) 0%, var(--primary-dark) 100%);color:#fff;box-shadow:0 2px 10px #1a8c7a4d}.rk-table-row{transition:background .15s,border-color .15s}.rk-table-row.rk-row-gold{background:linear-gradient(90deg,#ffd70014 0%,#ffd70005 100%);border-left:3px solid #f39c12}.rk-table-row.rk-row-silver{background:linear-gradient(90deg,#c0c0c014 0%,#c0c0c005 100%);border-left:3px solid #b0bec5}.rk-table-row.rk-row-bronze{background:linear-gradient(90deg,#cd7f3214 0%,#cd7f3205 100%);border-left:3px solid #cd7f32}.rk-table-row.rk-row-self{background:#2ec4b60f}.rk-table-row.rk-row-self td:first-child{border-left:3px solid var(--primary)}.rk-table-row:hover{background:#2ec4b60a!important}.rk-self-tag{color:var(--primary);background:#2ec4b61a;border-radius:10px;margin-left:8px;padding:2px 8px;font-size:11px;font-weight:700}.rk-stars{color:#f39c12;font-size:18px;font-weight:700}.rk-stars-unit{color:#f39c12;font-size:14px}.rk-summary{grid-template-columns:repeat(3,1fr);gap:14px;margin-bottom:20px;display:grid}.rk-summary-card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);text-align:center;opacity:0;padding:20px 16px;transition:transform .25s cubic-bezier(.34,1.56,.64,1),box-shadow .25s;animation:.4s forwards rk-fade-up}.rk-summary-card:hover{transform:translateY(-2px);box-shadow:0 6px 24px #2ec4b614}.rk-summary-card:first-child{animation-delay:50ms}.rk-summary-card:nth-child(2){animation-delay:.12s}.rk-summary-card:nth-child(3){animation-delay:.19s}@keyframes rk-fade-up{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}@media (width<=768px){.rk-my-stats,.rk-summary{grid-template-columns:repeat(2,1fr)}.rk-my-stat-value{font-size:24px}}@media (width<=480px){.rk-my-stats,.rk-summary{grid-template-columns:1fr}.rk-tabs{width:100%}.rk-tab{text-align:center;flex:1;padding:9px 12px;font-size:13px}}.vp-container{align-items:flex-start;gap:24px;display:flex}.vp-main{flex:1;min-width:0}.vp-player-wrap{background:#000;border-radius:12px;overflow:hidden;box-shadow:0 4px 24px #00000026}.vp-player{width:100%;max-height:70vh;display:block}.vp-title{margin-top:12px;font-size:18px;font-weight:600}.vp-sidebar{background:var(--card-bg,#fff);width:260px;box-shadow:var(--card-shadow,0 2px 8px #00000014);border-radius:12px;flex-shrink:0;padding:16px}.vp-list-title{border-bottom:1px solid var(--border);margin-bottom:12px;padding-bottom:8px;font-size:16px;font-weight:600}.vp-list-item{cursor:pointer;border-radius:8px;align-items:center;gap:10px;margin-bottom:4px;padding:10px 12px;transition:background .15s,color .15s;display:flex}.vp-list-item:hover{background:var(--hover-bg,#f5f5f5)}.vp-list-item-active{background:var(--primary);color:#fff}.vp-list-item-active:hover{background:var(--primary-dark,#0056b3)}.vp-list-order{background:var(--bg-secondary,#eee);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:24px;height:24px;font-size:12px;font-weight:600;display:flex}.vp-list-item-active .vp-list-order{color:#fff;background:#ffffff4d}.vp-list-name{text-overflow:ellipsis;white-space:nowrap;font-size:14px;line-height:1.3;overflow:hidden}@media (width<=768px){.vp-container{flex-direction:column}.vp-sidebar{width:100%}}.unit-card-grid{grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:16px;display:grid}.unit-card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);transition:transform .2s var(--ease-out-back), box-shadow .2s var(--ease-out-expo), border-color .2s var(--ease-out-expo);box-shadow:var(--shadow-sm);padding:20px 24px;position:relative}.unit-card-active{cursor:pointer}.unit-card-active:hover{box-shadow:var(--shadow-card-hover);border-color:var(--border-glow);transform:translateY(-2px)}.unit-card-empty{cursor:default;opacity:.6}.unit-card-name{color:var(--text);margin-bottom:6px;font-size:17px;font-weight:600;line-height:1.4}.unit-card-meta{color:var(--text-secondary);margin-bottom:12px;font-size:13px}.unit-card-count{color:var(--primary-dark);font-size:14px;font-weight:500}.unit-card-empty .unit-card-count{color:var(--text-secondary)}.question-nav-bar{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:24px;padding:16px;display:flex}.qn-btn{border:1px solid var(--border);width:38px;height:38px;color:var(--text-secondary);cursor:pointer;background:0 0;border-radius:50%;justify-content:center;align-items:center;min-height:38px;padding:0;font-size:14px;font-weight:500;transition:all .2s;display:flex}.qn-btn:hover{border-color:var(--primary);color:var(--primary)}.qn-current{border-color:var(--primary);color:var(--primary-dark);font-weight:700;box-shadow:0 0 12px #2ec4b659}.qn-answered{background:linear-gradient(135deg, var(--primary) 0%, var(--primary-dark) 100%);color:#fff;border-color:#0000}.qn-progress{color:var(--text-secondary);white-space:nowrap;margin-left:auto;font-size:14px;font-weight:500}.question-nav-bottom{justify-content:space-between;align-items:center;gap:12px;margin-top:24px;padding:16px 0;display:flex}.question-nav-bottom .btn-outline,.question-nav-bottom .btn-primary{min-width:120px}
