*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",sans-serif;background:#f4f6fb;color:#172033}button,input,textarea,select{font:inherit}button{border:1px solid #d8e0ef;border-radius:10px;background:#fff;padding:9px 14px;color:#334155;cursor:pointer}button.primary{background:#2563eb;color:#fff;border-color:#2563eb;font-weight:700}button.danger{color:#b91c1c;border-color:#fecaca}button:disabled{opacity:.55;cursor:wait}input,textarea,select{border:1px solid #d8e0ef;border-radius:10px;padding:10px 12px;background:#fff;color:#172033}textarea{resize:vertical}:focus-visible{outline:3px solid #93c5fd;outline-offset:2px}.shell{max-width:1040px;margin:auto;padding:0 16px 70px}.top{position:sticky;top:0;z-index:20;background:#f4f6fb;display:flex;gap:9px;align-items:center;padding:12px 0}.top h1{font-size:18px;flex:1;margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.card{background:#fff;border-radius:17px;padding:18px;box-shadow:0 2px 10px #1e293b0d;margin-bottom:14px}.auth{max-width:420px;margin:70px auto}.auth h1{margin:0 0 8px}.muted{color:#64748b;font-size:13px;line-height:1.65}.field{display:block;margin:12px 0 5px;font-size:13px;font-weight:700;color:#475569}.auth input{width:100%;margin-bottom:7px}.row{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.class-card{display:flex;align-items:center;gap:10px;cursor:pointer}.class-card .grow{flex:1}.class-card b{font-size:16px}.code{font-family:ui-monospace,monospace;letter-spacing:2px;color:#2563eb;font-weight:800}.hero{background:linear-gradient(135deg,#2563eb,#1d4ed8);color:#fff}.hero .code{color:#fff;font-size:20px}.tabs{display:flex;background:#e7edf8;border-radius:12px;padding:4px;gap:4px;margin:13px 0}.tabs button{flex:1;background:transparent;border:0;color:#64748b;font-weight:700}.tabs button.active{background:#fff;color:#2563eb;box-shadow:0 1px 5px #1e293b18}.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:10px}.student-card{padding:13px 8px;border:1px solid #e5eaf3;border-radius:13px;text-align:center;background:#fff;cursor:pointer}.student-card .score{font-size:25px;font-weight:800;color:#2563eb}.names{display:flex;gap:7px;flex-wrap:wrap}.pill{border:1px solid transparent;border-radius:999px;padding:7px 12px;background:#eef2f7;color:#64748b;cursor:pointer}.pill.done,.pill.pass{background:#dcfce7;color:#15803d;border-color:#86efac}.pill.late,.pill.redo{background:#ffedd5;color:#c2410c;border-color:#fdba74}.pill.pending{background:#fee2e2;color:#b91c1c;border-color:#fecaca}.task{border-top:1px solid #edf1f7;padding:14px 0}.task:first-child{border-top:0}.task h3{font-size:15px;margin:0 0 9px}.badge{font-size:12px;border-radius:999px;padding:3px 8px;background:#eef2ff;color:#4338ca;margin-left:5px}.draw-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px}.draw-card{border:2px solid transparent;border-radius:15px;padding:18px 10px;text-align:center;background:#f8fafc;cursor:pointer}.draw-card.pass{background:#dcfce7;border-color:#86efac}.draw-card.redo{background:#ffedd5;border-color:#fdba74}.draw-card b{font-size:21px}table{width:100%;border-collapse:collapse;font-size:13px}th,td{padding:9px 6px;border-bottom:1px solid #edf1f7;text-align:left}th{background:#f8fafc;color:#64748b}.num{text-align:center}.toast{position:fixed;left:50%;bottom:25px;transform:translate(-50%,15px);opacity:0;background:#172033eF;color:#fff;padding:10px 17px;border-radius:999px;transition:.2s;z-index:100;max-width:88vw;text-align:center}.toast.show{opacity:1;transform:translate(-50%,0)}dialog{border:0;border-radius:16px;padding:0;width:min(94vw,500px);box-shadow:0 20px 60px #0f172a44}dialog::backdrop{background:#0f172a77}dialog form{padding:20px}dialog textarea,dialog input{width:100%}.empty{text-align:center;padding:45px 10px;color:#94a3b8}.sync-error{color:#b91c1c;font-size:12px;font-weight:700}@media(max-width:560px){.shell{padding:0 11px 50px}.card{padding:14px}.top{flex-wrap:wrap}.tabs button{padding:8px 4px;font-size:12px}th,td{padding:7px 3px;font-size:12px}.desktop-only{display:none}.row>*{max-width:100%}}
