*{box-sizing:border-box;margin:0;padding:0}
body{font-family:-apple-system,"PingFang SC","Microsoft YaHei",sans-serif;background:#f5f6f8;color:#1f2329;font-size:14px}
#app{height:100vh}
.loading-mask{position:fixed;inset:0;background:#fff;display:flex;align-items:center;justify-content:center;z-index:999}
.loading-box{color:#8a9099}
/* 登录 */
.login-wrap{height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#eef2ff,#f7f9fc)}
.login-card{width:380px;background:#fff;border-radius:14px;padding:36px 32px;box-shadow:0 8px 40px rgba(31,35,41,.08)}
.login-title{font-size:20px;font-weight:600;text-align:center;margin-bottom:6px}
.login-sub{font-size:12px;color:#8a9099;text-align:center;margin-bottom:24px}
.login-switch{text-align:center;font-size:12px;color:#3370ff;cursor:pointer;margin:14px 0}
.login-tip{margin-top:16px;font-size:11px;color:#a5abb3;text-align:center;line-height:1.6}
/* 布局 */
.layout{display:flex;height:100vh}
.sidebar{width:200px;background:#fff;border-right:1px solid #e9ecf0;display:flex;flex-direction:column}
.logo{padding:18px 20px;font-size:16px;font-weight:600;color:#3370ff;border-bottom:1px solid #f0f2f5}
.sidebar nav{flex:1;padding:10px 8px;overflow:auto}
.nav-item{display:flex;align-items:center;gap:10px;padding:9px 12px;border-radius:8px;cursor:pointer;color:#4e5969;font-size:13px;margin-bottom:2px}
.nav-item:hover{background:#f4f6fa}
.nav-item.active{background:#eaf1ff;color:#3370ff;font-weight:600}
.nav-icon{width:18px;text-align:center;font-size:13px}
.sidebar-foot{padding:12px 16px;border-top:1px solid #f0f2f5;font-size:12px;color:#8a9099;display:flex;justify-content:space-between;align-items:center}
.main{flex:1;display:flex;flex-direction:column;overflow:hidden}
.topbar{height:56px;background:#fff;border-bottom:1px solid #e9ecf0;display:flex;align-items:center;justify-content:space-between;padding:0 24px}
.page-title{font-size:16px;font-weight:600}
.topbar-right{display:flex;align-items:center;gap:10px}
.content{flex:1;overflow:auto;padding:20px 24px}
/* 通用组件 */
.btn{border:1px solid #d0d3d9;background:#fff;color:#1f2329;padding:6px 14px;border-radius:6px;cursor:pointer;font-size:13px}
.btn:hover{border-color:#3370ff;color:#3370ff}
.btn.primary{background:#3370ff;color:#fff;border-color:#3370ff}
.btn.primary:hover{background:#245bdb;color:#fff}
.btn.small{padding:4px 10px;font-size:12px}
.btn.danger{color:#e34d59;border-color:#f5c2c7}
.btn.block{width:100%;margin-top:10px;padding:9px}
.btn:disabled{opacity:.5;cursor:not-allowed}
.input,.select,textarea.input{width:100%;border:1px solid #d0d3d9;border-radius:6px;padding:7px 10px;font-size:13px;outline:none;font-family:inherit}
.input:focus,.select:focus{border-color:#3370ff}
.card{background:#fff;border-radius:10px;padding:18px;margin-bottom:16px;box-shadow:0 1px 4px rgba(31,35,41,.05)}
.card-title{font-size:14px;font-weight:600;margin-bottom:14px;display:flex;justify-content:space-between;align-items:center}
.table{width:100%;border-collapse:collapse;font-size:13px}
.table th{background:#f7f8fa;text-align:left;padding:9px 10px;color:#6b7280;font-weight:500;border-bottom:1px solid #e9ecf0}
.table td{padding:9px 10px;border-bottom:1px solid #f2f4f7}
.table tr:hover td{background:#fafbfc}
.tag{display:inline-block;padding:1px 8px;border-radius:10px;font-size:11px;background:#eef1f6;color:#5a6270;margin-right:4px}
.tag.blue{background:#eaf1ff;color:#3370ff}
.tag.green{background:#e3f9e9;color:#0a8f4a}
.tag.red{background:#fdeaec;color:#c9353f}
.tag.yellow{background:#fff3d9;color:#a9761a}
.badge{background:#fff3d9;color:#a9761a;padding:3px 10px;border-radius:12px;font-size:12px}
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:14px}
.stat{background:#fff;border-radius:10px;padding:16px;box-shadow:0 1px 4px rgba(31,35,41,.05)}
.stat .num{font-size:24px;font-weight:600;color:#3370ff}
.stat .lbl{font-size:12px;color:#8a9099;margin-top:4px}
.row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.col{display:flex;flex-direction:column;gap:4px}
.field{margin-bottom:12px}
.field label{display:block;font-size:12px;color:#6b7280;margin-bottom:4px}
.filter-bar{background:#fff;border-radius:10px;padding:14px;margin-bottom:14px;display:flex;gap:10px;flex-wrap:wrap;align-items:center}
.filter-bar .input,.filter-bar .select{width:auto;min-width:120px}
.link{color:#3370ff;cursor:pointer;font-size:12px}
.muted{color:#8a9099;font-size:12px}
.empty{padding:40px;text-align:center;color:#a5abb3}
.tabs{display:flex;gap:4px;border-bottom:1px solid #e9ecf0;margin-bottom:16px;flex-wrap:wrap}
.tab{padding:8px 14px;cursor:pointer;font-size:13px;color:#6b7280;border-bottom:2px solid transparent}
.tab.active{color:#3370ff;font-weight:600;border-bottom-color:#3370ff}
.modal-mask{position:fixed;inset:0;background:rgba(0,0,0,.35);display:flex;align-items:center;justify-content:center;z-index:100}
.modal{background:#fff;border-radius:12px;padding:24px;width:520px;max-height:82vh;overflow:auto}
.modal h3{font-size:15px;margin-bottom:16px}
.progress{height:6px;background:#eef1f6;border-radius:3px;overflow:hidden}
.progress .bar{height:100%;background:#3370ff}
.risk-dot{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:5px}
.card-item{background:#fff;border-radius:10px;padding:14px;box-shadow:0 1px 4px rgba(31,35,41,.05);cursor:pointer}
.card-item:hover{box-shadow:0 4px 14px rgba(31,35,41,.1)}
.quiz-item{padding:14px 0;border-bottom:1px solid #f2f4f7}
.quiz-q{font-size:13px;margin-bottom:8px;line-height:1.6}
.quiz-opts{display:flex;gap:10px;flex-wrap:wrap}
.quiz-opt{display:flex;align-items:center;gap:5px;font-size:12px;color:#4e5969;cursor:pointer;background:#f7f8fa;padding:5px 12px;border-radius:16px}
.quiz-opt input{cursor:pointer}
.note{background:#fff8e6;border-left:3px solid #f0a20a;padding:10px 14px;font-size:12px;color:#8a5a00;border-radius:4px;margin-bottom:14px;line-height:1.7}
.invite-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;background:#f5f6f8;padding:30px}
.invite-card{background:#fff;border-radius:14px;padding:32px;max-width:760px;width:100%}
.invite-title{font-size:18px;font-weight:600;margin-bottom:6px}
.invite-sub{font-size:13px;color:#6b7280;margin-bottom:8px}
.invite-note{font-size:12px;color:#a9761a;background:#fff8e6;padding:8px 12px;border-radius:6px;margin-bottom:18px}
#graph svg{width:100%;height:620px;background:#fff;border-radius:10px}
.chart{width:100%;height:320px}
.profile-group{margin-bottom:18px}
.profile-group h4{font-size:13px;color:#3370ff;margin-bottom:10px;padding-bottom:6px;border-bottom:1px solid #f0f2f5}
.sensitive-lock{color:#c9353f;font-size:11px}
