:root{--blue:#2f6bff;--blue-dark:#1f4fd8;--bg:#f5f7fb;--card:#fff;--line:#e6eaf2;--text:#1c2333;--text2:#667085;--green:#12b76a;--orange:#f79009;--red:#f04438;--side:#101828}*{box-sizing:border-box}body{background:var(--bg);color:var(--text);margin:0;font-family:system-ui,-apple-system,Segoe UI,Microsoft YaHei,sans-serif;font-size:14px}.layout{min-height:100vh;display:flex}.sidebar{background:var(--side);color:#cdd5e0;flex-direction:column;flex-shrink:0;width:200px;display:flex}.brand{color:#fff;border-bottom:1px solid #ffffff14;padding:20px 18px 14px;font-size:16px;font-weight:700}.brand small{color:#8592a6;margin-top:2px;font-size:11px;font-weight:400;display:block}.menu{flex:1;padding:10px 8px}.menu a{color:#cdd5e0;border-radius:8px;margin:2px 0;padding:10px 12px;text-decoration:none;display:block}.menu a:hover{color:#fff;background:#ffffff0f}.menu a.router-link-exact-active{background:var(--blue);color:#fff;font-weight:600}.side-foot{color:#8592a6;border-top:1px solid #ffffff14;padding:14px 16px;font-size:12px}.main{flex:1;min-width:0;padding:22px 26px}.card{background:var(--card);border:1px solid var(--line);border-radius:12px;margin-bottom:16px;padding:18px;box-shadow:0 1px 2px #1018280a}.card h3{margin:0 0 12px;font-size:14px}.page-title{margin:0 0 18px;font-size:20px;font-weight:700}.toolbar{flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:14px;display:flex}.btn{border:1px solid var(--line);color:var(--text);cursor:pointer;background:#fff;border-radius:8px;align-items:center;gap:6px;padding:8px 16px;font-size:14px;display:inline-flex}.btn:hover{border-color:var(--blue);color:var(--blue)}.btn-primary{background:var(--blue);border-color:var(--blue);color:#fff}.btn-primary:hover{background:var(--blue-dark);color:#fff}.btn-sm{border-radius:6px;padding:4px 10px;font-size:12px}.stat-grid{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:14px;margin-bottom:16px;display:grid}.stat{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:16px 18px}.stat .num{font-size:30px;font-weight:800;line-height:1.1}.stat .lbl{color:var(--text2);margin-top:4px}.stat.hl .num{color:var(--red)}table.data{border-collapse:collapse;border:1px solid var(--line);background:#fff;border-radius:12px;width:100%;overflow:hidden}table.data th{text-align:left;color:var(--text2);border-bottom:1px solid var(--line);white-space:nowrap;background:#f9fafb;padding:10px 12px;font-weight:600}table.data td{border-bottom:1px solid var(--line);vertical-align:top;padding:10px 12px}table.data tr:last-child td{border-bottom:none}table.data tr:hover td{background:#f8faff}.tag{border-radius:999px;padding:2px 10px;font-size:12px;font-weight:600;display:inline-block}.tag-high{color:#b42318;background:#fee4e2}.tag-mid{color:#b54708;background:#fef0c7}.tag-low{color:#475467;background:#eef2f6}.tag-pend{color:#5925dc;background:#eaecf5}.st-new{color:var(--blue);font-weight:600}.st-following{color:var(--orange);font-weight:600}.st-contacted{color:var(--text2);font-weight:600}.st-won{color:var(--green);font-weight:700}.st-lost{color:#98a2b3}input,select,textarea{border:1px solid var(--line);color:var(--text);background:#fff;border-radius:8px;padding:8px 10px;font-size:14px}input:focus,select:focus,textarea:focus{border-color:var(--blue);outline:2px solid #2f6bff40}.modal-mask{z-index:50;background:#10182873;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal{background:#fff;border-radius:14px;width:480px;max-width:92vw;padding:22px}.modal h4{margin:0 0 14px}.muted{color:var(--text2)}.empty{text-align:center;color:var(--text2);padding:36px 0}.upzone{border:2px dashed var(--line);text-align:center;color:var(--text2);background:#fbfcfe;border-radius:12px;padding:34px}.upzone.has{border-color:var(--blue);color:var(--blue);background:#f5f8ff}.toast{color:#fff;z-index:99;background:#101828;border-radius:10px;padding:10px 20px;position:fixed;top:18px;left:50%;transform:translate(-50%)}.auth-wrap{background:linear-gradient(135deg,#101828 0%,#1d2939 60%,#2f6bff 160%);justify-content:center;align-items:center;min-height:100vh;display:flex}.auth-card{background:#fff;border-radius:16px;width:380px;padding:34px 34px 28px;box-shadow:0 18px 50px #10182859}.auth-card h2{margin:0 0 4px}.auth-card .sub{color:var(--text2);margin-bottom:22px}.auth-card input{width:100%;margin:8px 0}.auth-card button{width:100%;margin-top:14px;padding:11px}
