*{box-sizing:border-box;margin:0;padding:0}body{font-family:Microsoft YaHei,sans-serif;background:#f5f6fa;padding:30px 20px;color:#333}.container{max-width:860px;margin:0 auto}h1{font-size:22px;color:#4a6cf7;margin-bottom:20px;border-left:5px solid #4a6cf7;padding-left:12px}.search-bar{background:#fff;padding:16px 20px;border-radius:10px;display:flex;align-items:center;gap:12px;flex-wrap:wrap;box-shadow:0 1px 4px #0000000f;margin-bottom:16px}.search-bar label{color:#555;font-size:14px;white-space:nowrap}input,select{padding:8px 12px;border:1px solid #ddd;border-radius:6px;font-size:14px;outline:none}input:focus,select:focus{border-color:#4a6cf7}#name-input{width:130px}#stu-select{width:120px}.btn{padding:9px 22px;border:none;border-radius:6px;cursor:pointer;font-size:14px;color:#fff;background:#4a6cf7;transition:background .2s}.btn:hover{opacity:.88}.btn-primary{background:#4a6cf7}.btn-success{background:#27ae60;margin-left:auto}.table-wrap{background:#fff;border-radius:10px;box-shadow:0 1px 4px #0000000f;overflow:hidden}table{width:100%;border-collapse:collapse}th,td{padding:12px 16px;text-align:center;font-size:14px;border-bottom:1px solid #eee}th{background:#fafbfc;color:#666;font-weight:600}tr:hover td{background:#f8f9ff}.btn-sm{padding:5px 12px;font-size:13px;border-radius:5px}.btn-edit{background:#f39c12}.btn-del{background:#e74c3c;margin-left:6px}.empty{color:#aaa;padding:40px 0}.pagination{display:flex;align-items:center;justify-content:flex-end;gap:10px;padding:14px 20px;font-size:14px;color:#666}.pagination button{padding:5px 14px;border:1px solid #ddd;border-radius:6px;background:#fff;cursor:pointer;font-size:13px}.pagination button:disabled{opacity:.4;cursor:not-allowed}.page-num{display:inline-block;min-width:30px;padding:5px 8px;margin:0 2px;border-radius:6px;cursor:pointer;text-align:center;border:1px solid transparent}.page-num.active{background:#4a6cf7;color:#fff}.modal-mask{display:none;position:fixed;top:0;right:0;bottom:0;left:0;background:#0006;align-items:center;justify-content:center;z-index:100}.modal-mask.show{display:flex}.modal{background:#fff;border-radius:12px;width:380px;padding:24px 28px;box-shadow:0 8px 30px #0003}.modal h3{margin-bottom:18px;font-size:18px}.modal .field{margin-bottom:14px}.modal .field label{display:block;margin-bottom:6px;font-size:14px;color:#555}.modal .field input{width:100%}.modal-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:8px}.btn-cancel{background:#95a5a6}.loading-row{color:#999;padding:40px 0}
