:root{--primary: #4f7cff;--primary-light: #eef2ff;--accent: #ff9f43;--success: #2ed573;--danger: #ff6b6b;--text: #2f3542;--text-light: #747d8c;--bg: #f4f6fb;--card: #ffffff;--radius: 16px}*{box-sizing:border-box;margin:0;padding:0}body{font-family:PingFang SC,Microsoft YaHei,Helvetica Neue,Arial,sans-serif;background:var(--bg);color:var(--text);font-size:16px;line-height:1.6}button{font-family:inherit;cursor:pointer;border:none;border-radius:12px;padding:10px 20px;font-size:16px;font-weight:600;transition:transform .1s,box-shadow .15s,opacity .15s}button:active{transform:scale(.97)}button:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--primary);color:#fff}.btn-primary:hover{box-shadow:0 6px 14px #4f7cff59}.btn-accent{background:var(--accent);color:#fff}.btn-accent:hover{box-shadow:0 6px 14px #ff9f4359}.btn-ghost{background:#fff;color:var(--primary);border:2px solid var(--primary-light)}.btn-danger{background:var(--danger);color:#fff}.btn-success{background:var(--success);color:#fff}.btn-sm{padding:6px 14px;font-size:14px;border-radius:10px}.btn-lg{padding:14px 34px;font-size:20px;border-radius:16px}input,select,textarea{font-family:inherit;font-size:16px;padding:11px 14px;border:2px solid #e2e6f0;border-radius:12px;outline:none;background:#fff;color:var(--text);width:100%;transition:border-color .15s}input:focus,select:focus,textarea:focus{border-color:var(--primary)}.card{background:var(--card);border-radius:var(--radius);padding:22px;box-shadow:0 2px 10px #2f35420f}.tag{display:inline-block;padding:3px 12px;border-radius:999px;font-size:13px;font-weight:600;background:var(--primary-light);color:var(--primary)}.tag.green{background:#e8fbef;color:#1ba650}.tag.orange{background:#fff3e3;color:#e67e22}.tag.red{background:#ffecec;color:#d63031}.tag.gray{background:#f0f2f7;color:var(--text-light)}.grid{display:grid;gap:16px}.flex{display:flex;gap:12px;align-items:center}.muted{color:var(--text-light);font-size:14px}.error-text{color:var(--danger);font-size:14px;margin-top:6px}.page-title{font-size:24px;font-weight:800;margin-bottom:16px}.layout{display:flex;min-height:100vh}.sidebar{width:210px;background:#fff;padding:18px 14px;display:flex;flex-direction:column;gap:6px;border-right:1px solid #eceff7;position:sticky;top:0;height:100vh}.sidebar .logo{font-size:20px;font-weight:900;color:var(--primary);padding:4px 10px 14px}.sidebar a{text-decoration:none;color:var(--text-light);padding:11px 14px;border-radius:12px;font-weight:600;transition:background .15s,color .15s}.sidebar a:hover{background:var(--primary-light);color:var(--primary)}.sidebar a.active{background:var(--primary);color:#fff}.sidebar .spacer{flex:1}.main{flex:1;padding:26px 30px;max-width:1100px}.stat-row{display:flex;gap:16px;flex-wrap:wrap}.stat-box{flex:1;min-width:140px;text-align:center;padding:18px 10px}.stat-box .num{font-size:30px;font-weight:900;color:var(--primary)}.stat-box .label{color:var(--text-light);font-size:14px}.progress{background:#edf0f8;border-radius:999px;height:12px;overflow:hidden}.progress .fill{height:100%;background:linear-gradient(90deg,#4f7cff,#6c5ce7);border-radius:999px;transition:width .4s}.auth-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:20px;background:linear-gradient(135deg,#667eea,#764ba2)}.auth-card{width:400px;max-width:100%}.auth-card h1{text-align:center;margin-bottom:8px;color:#fff;font-size:32px}.auth-card .sub{text-align:center;color:#ffffffd9;margin-bottom:22px}.auth-card .card{display:flex;flex-direction:column;gap:14px}.role-pick{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.role-pick button{padding:10px 4px;border:2px solid #e2e6f0;background:#fff;color:var(--text);border-radius:12px}.role-pick button.on{border-color:var(--primary);background:var(--primary-light);color:var(--primary)}.question-card{margin-bottom:16px}.options{display:flex;flex-direction:column;gap:10px;margin-top:14px}.options button{text-align:left;background:#fff;border:2px solid #e2e6f0;color:var(--text)}.options button.sel{border-color:var(--primary);background:var(--primary-light)}.options button.right{border-color:var(--success);background:#e8fbef}.options button.wrong{border-color:var(--danger);background:#ffecec}.explain{background:#fffbe8;border:1px solid #ffe9a8;border-radius:12px;padding:12px 16px;margin-top:14px;font-size:15px}.topbar{display:flex;justify-content:space-between;align-items:center;margin-bottom:18px}@media(max-width:760px){.layout{flex-direction:column}.sidebar{width:100%;height:auto;position:static;flex-direction:row;overflow-x:auto}.sidebar .logo{padding:4px 8px}.main{padding:16px}}
