.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:10px 20px;border-radius:var(--radius-sm);border:none;font-size:14px;font-weight:600;transition:all var(--transition);cursor:pointer;white-space:nowrap}.btn-primary{background:var(--primary);color:#fff}.btn-primary:hover{background:var(--primary-dark);transform:translateY(-1px);box-shadow:0 4px 12px rgba(108,99,255,.4)}.btn-secondary{background:var(--primary-light);color:var(--primary)}.btn-secondary:hover{background:#ddd9ff}.btn-success{background:var(--success);color:#fff}.btn-success:hover{background:#059669}.btn-danger{background:var(--danger);color:#fff}.btn-danger:hover{background:#dc2626}.btn-ghost{background:0 0;color:var(--text-muted);border:1px solid var(--border)}.btn-ghost:hover{background:var(--bg);color:var(--text)}.btn-full{width:100%}.btn-sm{padding:6px 12px;font-size:13px}.btn-lg{padding:14px 28px;font-size:16px}.btn:disabled{opacity:.5;cursor:not-allowed;transform:none!important}.card{background:var(--bg-card);border-radius:var(--radius);padding:20px;box-shadow:var(--shadow-sm);border:1px solid var(--border)}.card-hover{transition:transform .25s,box-shadow .25s;cursor:pointer}.card-hover:hover{transform:translateY(-6px) scale(1.015);box-shadow:0 12px 32px color-mix(in srgb,var(--subject-glow,var(--primary)) 22%,transparent),var(--shadow)}.card-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}.card-icon{width:72px;height:72px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:2.2rem;margin-bottom:14px;box-shadow:0 4px 14px rgba(0,0,0,.1);transition:transform .3s;flex-shrink:0}.card-hover:hover .card-icon{animation:.4s wiggle}.btn:focus-visible .refresh-icon,.btn:hover .refresh-icon{display:inline-block;animation:.5s linear spin}.form-group{margin-bottom:16px}.form-group label{display:block;font-size:13px;font-weight:600;margin-bottom:6px;color:var(--text)}.form-group input,.form-group select,.form-group textarea{width:100%;padding:10px 14px;border:1.5px solid var(--border);border-radius:var(--radius-sm);background:var(--bg);color:var(--text);transition:border-color var(--transition);outline:0}.form-group input:focus,.form-group select:focus,.form-group textarea:focus{border-color:var(--border-focus);background:#fff}.form-error{color:var(--danger);font-size:13px;margin-top:8px}.tab-group{display:flex;gap:4px;background:var(--bg);border-radius:var(--radius-sm);padding:4px;margin-bottom:20px}.tab-btn{flex:1;padding:8px;border:none;border-radius:6px;background:0 0;color:var(--text-muted);font-size:14px;font-weight:600;transition:all var(--transition)}.tab-btn.active{background:#fff;color:var(--primary);box-shadow:var(--shadow-sm)}.progress-bar{height:8px;background:var(--border);border-radius:var(--radius-full);overflow:hidden}.progress-bar-fill{height:100%;border-radius:var(--radius-full);background:var(--primary);transition:width .4s}.progress-bar-fill.success{background:var(--success)}.progress-bar-fill.warning{background:var(--warning)}.badge{display:inline-flex;align-items:center;gap:4px;padding:3px 10px;border-radius:var(--radius-full);font-size:12px;font-weight:600}.badge-primary{background:var(--primary-light);color:var(--primary)}.badge-success{background:#d1fae5;color:#065f46}.badge-warning{background:#fef3c7;color:#92400e}.badge-danger{background:#fee2e2;color:#991b1b}.badge-gray{background:var(--bg);color:var(--text-muted);border:1px solid var(--border)}.stat-card{background:var(--bg-card);border-radius:var(--radius);padding:20px;border:1px solid var(--border);box-shadow:var(--shadow-sm)}.stat-card .stat-value{font-size:2rem;font-weight:800;color:var(--text);line-height:1}.stat-card .stat-label{font-size:13px;color:var(--text-muted);margin-top:4px}.stat-card .stat-icon{font-size:1.6rem;margin-bottom:8px}.achievement{display:flex;flex-direction:column;align-items:center;text-align:center;padding:20px 16px;background:var(--bg-card);border-radius:var(--radius);border:1px solid var(--border);box-shadow:var(--shadow-sm)}.achievement .badge-icon{font-size:2.5rem;margin-bottom:8px}.achievement .badge-name{font-size:13px;font-weight:700;color:var(--text)}.achievement .badge-desc{font-size:12px;color:var(--text-muted);margin-top:2px}.achievement.locked{opacity:.45;filter:grayscale(1)}.search-bar{display:flex;align-items:center;gap:8px;background:var(--bg-card);border:1.5px solid var(--border);border-radius:var(--radius-sm);padding:10px 14px;transition:border-color var(--transition)}.search-bar:focus-within{border-color:var(--border-focus)}.search-bar input{border:none;background:0 0;outline:0;width:100%}.search-icon{color:var(--text-light)}.table-wrap{overflow-x:auto;border-radius:var(--radius);border:1px solid var(--border)}table{width:100%;border-collapse:collapse;background:var(--bg-card)}th{background:var(--bg);padding:12px 16px;text-align:left;font-size:12px;font-weight:700;color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em;border-bottom:1px solid var(--border)}td{padding:12px 16px;border-bottom:1px solid var(--border);font-size:14px}tr:last-child td{border-bottom:none}tr:hover td{background:var(--bg)}.chip{display:inline-flex;align-items:center;gap:4px;padding:4px 10px;border-radius:var(--radius-full);background:var(--primary-light);color:var(--primary);font-size:12px;font-weight:600}.empty-state{text-align:center;padding:60px 20px;color:var(--text-muted)}.empty-state .empty-icon{font-size:3rem;margin-bottom:12px;display:block}.empty-state h3{color:var(--text);margin-bottom:6px}.spinner{width:32px;height:32px;border:3px solid var(--border);border-top-color:var(--primary);border-radius:50%;animation:.7s linear infinite spin;margin:40px auto}@keyframes spin{to{transform:rotate(360deg)}}.parent-email-warning{display:flex;align-items:flex-start;gap:10px;background:#fef3c7;border:1px solid #f59e0b;border-left:4px solid #f59e0b;border-radius:var(--radius-sm);padding:12px 16px;font-size:13px;color:#92400e;margin-bottom:16px}.topic-mastery-row{display:flex;align-items:center;gap:10px}.topic-mastery-name{font-size:13px;font-weight:600;color:var(--text);width:180px;flex-shrink:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.topic-mastery-bar{flex:1;min-width:0}.divider{height:1px;background:var(--border);margin:20px 0}.flex{display:flex}.flex-center{display:flex;align-items:center;justify-content:center}.flex-between{display:flex;align-items:center;justify-content:space-between}.gap-8{gap:8px}.gap-12{gap:12px}.gap-16{gap:16px}.mt-8{margin-top:8px}.mt-16{margin-top:16px}.mt-24{margin-top:24px}.mb-16{margin-bottom:16px}.mb-24{margin-bottom:24px}#idle-warning{position:fixed;top:0;left:0;right:0;background:#92400e;color:#fff;padding:11px 20px;display:flex;align-items:center;justify-content:center;gap:14px;z-index:10000;font-size:14px;animation:.3s both fadeIn}#idle-warning strong{font-weight:700}#idle-stay-btn{padding:4px 14px;font-size:13px;font-weight:600;background:#fff;color:#92400e;border:none;border-radius:var(--radius-sm);cursor:pointer;white-space:nowrap}#idle-stay-btn:hover{background:#fef3c7}