:root{--bg: #f5f6fa;--card: #ffffff;--text: #1f2430;--sub: #7a8194;--primary: #2563eb;--danger: #dc2626;font-family:system-ui,-apple-system,PingFang SC,Microsoft YaHei,sans-serif}*{box-sizing:border-box;margin:0;padding:0}body{background:var(--bg);color:var(--text)}#root{max-width:480px;margin:0 auto;min-height:100vh}.page{padding:16px 14px 80px}.page-head{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:12px}h1{font-size:20px}h2{font-size:16px;margin:18px 0 8px}.me-link{color:var(--primary);text-decoration:none;font-size:14px}.card{background:var(--card);border-radius:12px;padding:14px;margin-bottom:10px;box-shadow:0 1px 3px #0000000f}.activity-card{display:block;text-decoration:none;color:inherit}.activity-title{font-weight:600;font-size:16px;margin-bottom:6px}.activity-meta{display:flex;justify-content:space-between;font-size:13px;color:var(--sub)}.activity-meta.sub{margin-top:4px}.tag{color:var(--primary);font-weight:600}.tag-full{color:var(--danger)}.tag-attended{color:#16a34a}.tag-absent{color:var(--danger)}.form-card label{display:block;font-size:14px;color:var(--sub);margin-bottom:12px}input{width:100%;padding:11px 12px;font-size:16px;margin-top:4px;border:1px solid #d8dbe4;border-radius:8px;outline:none}input:focus{border-color:var(--primary)}button{width:100%;padding:12px;font-size:16px;border:none;border-radius:8px;cursor:pointer;margin-top:8px}.btn-primary{background:var(--primary);color:#fff}.btn-primary:disabled{opacity:.5}.btn-ghost{background:#eceef4;color:var(--text)}.logout{margin-top:24px;color:var(--danger)}.error{color:var(--danger);font-size:13px;margin-top:6px}.hint{color:var(--sub);font-size:13px;text-align:center;margin:16px 0}.toast{color:var(--primary);font-size:14px;margin-top:10px;text-align:center}.desc{margin-top:8px;font-size:14px;line-height:1.6}.status-card{text-align:center;font-size:15px}.counts-card{display:flex;justify-content:space-around;text-align:center}.counts-card b{display:block;font-size:24px;color:var(--primary)}.counts-card span{font-size:12px;color:var(--sub)}.login-page{padding-top:15vh;text-align:center}.app-title{margin-bottom:24px}.form-card{text-align:left}.head-links{display:flex;gap:12px}.tabs{display:flex;gap:4px;overflow-x:auto;margin-bottom:14px;background:var(--card);border-radius:10px;padding:4px}.tab{flex:none;padding:8px 14px;border-radius:8px;font-size:14px;color:var(--sub);text-decoration:none;white-space:nowrap}.tab-active{background:var(--primary);color:#fff;font-weight:600}.btn-mini{width:auto;padding:7px 12px;font-size:13px;margin:0;background:#eceef4;border-radius:7px}.btn-danger{background:#fee2e2;color:var(--danger)}.btn-linkish{text-decoration:none;text-align:center;display:inline-block;color:var(--text)}.act-btns{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}select{width:100%;padding:11px 12px;font-size:16px;margin-top:4px;border:1px solid #d8dbe4;border-radius:8px;background:#fff}textarea{font-family:inherit;border:1px solid #d8dbe4;border-radius:8px;padding:8px;resize:vertical}.form-card h3{font-size:15px;margin-bottom:10px}.roster-row{display:flex;justify-content:space-between;align-items:center}.roster-no{color:var(--sub);font-size:13px;margin-left:8px}.roster-right{display:flex;align-items:center;gap:10px}.table-wrap{overflow-x:auto;padding:6px}.stu-table{width:100%;border-collapse:collapse;font-size:13px}.stu-table th,.stu-table td{padding:8px 6px;text-align:left;border-bottom:1px solid #eef0f5;white-space:nowrap}.stu-table th{color:var(--sub);font-weight:500}.stu-table .num{text-align:right}.role-badge{font-size:11px;color:var(--primary);border:1px solid var(--primary);border-radius:4px;padding:0 4px;margin-left:6px}.seg{display:flex;gap:6px;margin-bottom:12px}.seg-btn{width:auto;padding:7px 14px;font-size:13px;margin:0;background:#eceef4;border-radius:999px}.seg-on{background:var(--primary);color:#fff;font-weight:600}
