:root{--brand:#2f3159;--brand2:#4a4e8c;--accent:red;--ink:#1c2e42;--ok:#1f7a3d;--warn:#b0731f;--info:#2e7d8c;--purple:#6b4fa0;--gray:#6e7690;--bg:#f4f6fa;--line:#e3e6f0;--card:#fff;--r:10px;--brand-soft:#eef0f8;--brand-soft2:#dde2f2;--brand-tint:#e8f0fe;--brand-tint-line:#d5dff5;--hover-bg:#f6f7fd;--head-bg:#f7f8fc;--line-soft:#eef0f6;--star-soft:#fbf2dc;--star-ink:#8a6d1a;--lock-soft:#f4f4f6;--accent-soft:#fff5f5;--ok-soft:#e6f4ea;--warn-soft:#fdf3e4;--info-soft:#e6f2f4;--purple-soft:#f0eafb;--radius-sm:7px;--radius-xs:5px;--radius-pill:20px;--shadow-card:0 1px 3px #1c2e420d;--shadow-pop:0 18px 50px #00000040;--shadow-brand:0 10px 25px -4px color-mix(in srgb, var(--brand2) 45%, transparent);--nav-width:200px;--font-sans:"Source Han Sans CN", "思源黑体 CN", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif;--font-mono:"SF Mono", Menlo, Consolas, monospace}*{box-sizing:border-box;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}html,body,#root{background-color:var(--bg);height:100%;color:var(--ink);font-family:var(--font-sans);margin:0;padding:0;font-size:14px}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:#6e769059;border-radius:9999px}::-webkit-scrollbar-thumb:hover{background:#6e769099}.page-fade-in{animation:.25s cubic-bezier(.16,1,.3,1) fadeIn}@keyframes fadeIn{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.ant-table-wrapper{overflow-x:auto}.crm-card{background:var(--card);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--shadow-card)}.crm-card--flat{box-shadow:none}.crm-card--hover{transition:box-shadow .2s,border-color .2s}.crm-card--hover:hover{border-color:#cbd2e4;box-shadow:0 6px 16px #1c2e4214}.crm-pagebar{flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:16px;display:flex}.crm-pagebar__title{color:var(--brand);margin:0;font-size:19px;font-weight:700}.crm-pagebar__desc{color:var(--gray);font-size:12.5px}.crm-pagebar__spacer{flex:1}.crm-btn{border-radius:var(--radius-sm);background:var(--brand);color:#fff;cursor:pointer;border:none;padding:8px 16px;font-family:inherit;font-size:13.5px;font-weight:600;transition:background .18s}.crm-btn:hover{background:var(--brand2)}.crm-btn:disabled{opacity:.45;cursor:not-allowed}.crm-btn--red{background:var(--accent)}.crm-btn--red:hover{background:#c00}.crm-btn--ok{background:var(--ok)}.crm-btn--ok:hover{background:#17612f}.crm-btn--line{color:var(--brand);border:1.5px solid var(--brand);background:#fff}.crm-btn--line:hover{background:var(--brand-soft)}.crm-btn--ghost{color:var(--ink);border:1px solid var(--line);background:#fff}.crm-btn--ghost:hover{border-color:var(--brand);color:var(--brand);background:#fff}.crm-btn--sm{border-radius:6px;padding:4px 10px;font-size:12px}.crm-chip{border:1px solid var(--line);border-radius:var(--radius-pill);color:var(--gray);cursor:pointer;background:#fff;align-items:center;gap:5px;padding:5px 14px;font-size:12.5px;transition:all .16s;display:inline-flex}.crm-chip:hover{border-color:var(--brand2);color:var(--brand2)}.crm-chip.is-active{border-color:var(--brand);color:var(--brand);background:var(--brand-soft);font-weight:600}.crm-chip__count{background:#edeff5;border-radius:9px;padding:0 7px;font-size:11px}.crm-chip.is-active .crm-chip__count{background:var(--brand-soft2);color:var(--brand)}.crm-tag{border-radius:var(--radius-xs);white-space:nowrap;padding:2px 9px;font-size:11.5px;font-weight:600;line-height:1.6;display:inline-block}.crm-tag--formal{background:var(--brand-tint);color:var(--brand)}.crm-tag--trial{background:var(--info-soft);color:var(--info)}.crm-tag--star{background:var(--star-soft);color:var(--star-ink)}.crm-tag--emp{background:var(--ok-soft);color:var(--ok)}.crm-tag--lock{background:var(--lock-soft);color:var(--gray)}.crm-tag--stage{background:var(--purple-soft);color:var(--purple)}.crm-tag--open{background:var(--ok-soft);color:var(--ok)}.crm-tag--prepare{background:var(--warn-soft);color:var(--warn)}.crm-tag--audit{background:var(--purple-soft);color:var(--purple)}.crm-tag--closed{background:var(--lock-soft);color:var(--gray)}.crm-tag--type{background:var(--brand-tint);color:var(--brand)}.crm-tag--trainer{background:var(--info-soft);color:var(--info)}.crm-pill{border-radius:var(--radius-pill);white-space:nowrap;background:var(--lock-soft);color:var(--gray);align-items:center;gap:6px;padding:2px 11px 2px 8px;font-size:12px;font-weight:600;display:inline-flex}.crm-pill__dot{background:currentColor;border-radius:50%;flex-shrink:0;width:6px;height:6px}.crm-pill--ok{background:var(--ok-soft);color:var(--ok)}.crm-pill--warn{background:var(--warn-soft);color:var(--warn)}.crm-pill--info{background:var(--info-soft);color:var(--info)}.crm-pill--purple{background:var(--purple-soft);color:var(--purple)}.crm-pill--accent{background:var(--accent-soft);color:var(--accent)}.crm-progress{vertical-align:middle;background:#edeff5;border-radius:4px;width:96px;height:6px;margin-right:8px;display:inline-block;overflow:hidden}.crm-progress__bar{background:linear-gradient(90deg, var(--brand2), var(--info));border-radius:4px;height:100%;transition:width .3s;display:block}.crm-progress--ok .crm-progress__bar{background:var(--ok)}.crm-progress--warn .crm-progress__bar{background:var(--warn)}.crm-progress--accent .crm-progress__bar{background:var(--accent)}.crm-progress--lg{width:100%;height:8px}.crm-stepper{align-items:flex-start;margin:8px 0 4px;display:flex}.crm-step{text-align:center;flex:1;position:relative}.crm-step:before{content:"";background:var(--line);width:100%;height:2.5px;position:absolute;top:13px;left:-50%}.crm-step:first-child:before{display:none}.crm-step.is-done:before,.crm-step.is-cur:before{background:var(--ok)}.crm-step.is-rejected:before{background:var(--accent)}.crm-step__dot{border:2.5px solid var(--line);width:26px;height:26px;color:var(--gray);z-index:1;background:#fff;border-radius:50%;justify-content:center;align-items:center;margin:0 auto;font-size:12px;display:flex;position:relative}.crm-step.is-done .crm-step__dot{background:var(--ok);border-color:var(--ok);color:#fff}.crm-step.is-cur .crm-step__dot{border-color:var(--ok);color:var(--ok);box-shadow:0 0 0 4px #1f7a3d1f}.crm-step.is-rejected .crm-step__dot{border-color:var(--accent);color:var(--accent)}.crm-step__name{color:var(--gray);margin-top:6px;font-size:12px;font-weight:600}.crm-step.is-cur .crm-step__name{color:var(--ok)}.crm-step__time{color:var(--gray);margin-top:2px;font-size:10.5px}.crm-table{border-collapse:collapse;width:100%;font-size:13.5px}.crm-table th{background:var(--head-bg);color:var(--gray);text-align:left;border-bottom:1px solid var(--line);white-space:nowrap;padding:10px 14px;font-size:12.5px;font-weight:600}.crm-table td{border-bottom:1px solid var(--line-soft);vertical-align:middle;padding:12px 14px}.crm-table tbody tr{transition:background .12s}.crm-table tbody tr:hover{background:var(--hover-bg)}.crm-table--zebra tbody tr:nth-child(2n){background:#fafbfe}.crm-table--zebra tbody tr:nth-child(2n):hover{background:var(--hover-bg)}.crm-table__name{color:var(--ink);font-weight:700}.crm-table__sub{color:var(--gray);margin-top:2px;font-size:11.5px}.crm-avatar{background:var(--brand2);color:#fff;vertical-align:middle;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:32px;height:32px;margin-right:9px;font-size:13px;font-weight:600;display:inline-flex}.crm-avatar--lg{background:var(--brand);border-radius:14px;width:56px;height:56px;margin-right:0;font-size:22px}.crm-code{font-family:var(--font-mono);color:var(--brand);background:var(--brand-soft);border-radius:var(--radius-xs);white-space:nowrap;padding:2px 8px;font-size:12px;font-weight:600}.crm-kv{grid-template-columns:120px 1fr;gap:9px 14px;font-size:13.5px;display:grid}.crm-kv__k{color:var(--gray)}.crm-kv__v{color:var(--ink)}.crm-kv__v b{color:var(--brand)}.crm-tabs{border-top:1px solid var(--line);gap:4px;padding:0 20px;display:flex}.crm-tab{color:var(--gray);cursor:pointer;background:0 0;border:none;border-bottom:2.5px solid #0000;padding:13px 18px;font-size:14px;font-weight:600;transition:color .16s}.crm-tab:hover{color:var(--ink)}.crm-tab.is-active{color:var(--brand);border-bottom-color:var(--accent)}.crm-stat{border:1px solid var(--line);background:#f8f9fd;border-radius:9px;flex:1;min-width:120px;padding:10px 14px}.crm-stat__value{color:var(--brand);font-size:20px;font-weight:700;line-height:1.3}.crm-stat__label{color:var(--gray);margin-top:2px;font-size:11.5px;display:block}.crm-section-title{color:var(--brand);margin:0 0 6px;font-size:12.5px;font-weight:700}.crm-section-title--rule{border-left:4px solid var(--accent);padding-left:8px;font-size:13px}.crm-emptybox{border-radius:var(--r);text-align:center;color:var(--gray);background:#f6f7fd;border:1px dashed #a3aac8;padding:26px;font-size:13px;line-height:1.9}.crm-timeline{margin-top:6px;position:relative}.crm-timeline__item{padding:0 0 14px 22px;font-size:12.5px;position:relative}.crm-timeline__item:before{content:"";background:var(--brand2);border-radius:50%;width:8px;height:8px;position:absolute;top:6px;left:5px}.crm-timeline__item:after{content:"";background:var(--line);width:1.5px;position:absolute;top:16px;bottom:-2px;left:8.5px}.crm-timeline__item:last-child:after{display:none}.crm-timeline__title{color:var(--ink);font-weight:600}.crm-timeline__meta{color:var(--gray);margin-left:8px;font-size:11.5px}.crm-ranks{flex-wrap:wrap;align-items:flex-end;gap:8px;margin:6px 0 20px;display:flex}.crm-rank{text-align:center;border-radius:var(--r);border:1.5px solid var(--line);background:#fafbfe;flex:1;min-width:86px;padding:12px 4px 10px;position:relative}.crm-rank__icon{font-size:22px}.crm-rank__name{color:var(--gray);margin-top:4px;font-size:12.5px;font-weight:700}.crm-rank__date{color:#a5aabf;margin-top:2px;font-size:10.5px}.crm-rank.is-cur{background:linear-gradient(180deg, var(--brand), var(--brand2));border-color:var(--brand);transform:translateY(-6px);box-shadow:0 6px 14px #2f31594d}.crm-rank.is-cur .crm-rank__name{color:#fff}.crm-rank.is-cur .crm-rank__date{color:#ffffffb3}.crm-rank.is-cur:after{content:"当前";background:var(--accent);color:#fff;border-radius:8px;padding:1px 8px;font-size:10px;position:absolute;top:-9px;left:50%;transform:translate(-50%)}.crm-rank.is-past{background:#f1f3f9;border-color:#c9cedf}.crm-rank.is-past .crm-rank__name{color:var(--ink)}.crm-lesson{border:1.5px solid #0000;border-radius:8px;margin-bottom:8px;padding:8px 10px;font-size:12px;line-height:1.45;transition:transform .16s,box-shadow .16s}.crm-lesson:hover{transform:translateY(-1px);box-shadow:0 3px 8px #1c2e421f}.crm-lesson__title{font-size:12.5px;font-weight:600}.crm-lesson__status{opacity:.85;margin-top:2px;font-size:11px}.crm-lesson--done{color:var(--brand);background:#e9f0fa;border-color:#b9c6e4}.crm-lesson--leave{background:var(--warn-soft);color:#8a5f13;border-color:#ebd3a4}.crm-lesson--todo{border-color:var(--line);color:var(--gray);background:#f4f5f9}.crm-lesson--makeup{background:var(--info-soft);color:var(--info);border-color:#a9cbd3}.crm-legend{color:var(--gray);flex-wrap:wrap;gap:16px;margin-top:12px;font-size:12px;display:flex}.crm-legend__swatch{vertical-align:-1px;border:1px solid #00000014;border-radius:3px;width:12px;height:12px;margin-right:5px;display:inline-block}.crm-link{color:var(--brand);cursor:pointer;font-weight:600}.crm-link:hover{text-decoration:underline}.crm-link--danger{color:var(--accent)}.crm-back{color:var(--gray);cursor:pointer;background:0 0;border:none;align-items:center;gap:6px;margin-bottom:12px;padding:0;font-family:inherit;font-size:13px;display:inline-flex}.crm-back:hover{color:var(--brand)}.crm-form-row{gap:14px;margin-bottom:12px;display:flex}.crm-form-item{flex:1;min-width:0}.crm-form-label{color:var(--gray);margin-bottom:5px;font-size:12.5px;font-weight:600;display:block}.crm-form-label em{color:var(--accent);font-style:normal}.crm-form-tip{color:var(--gray);margin-top:4px;font-size:11px;line-height:1.5}.crm-nav-label{position:static}.crm-nav-label:before{content:"";background:0 0;width:3px;transition:background .18s;position:absolute;top:0;bottom:0;left:0}.crm-nav-label[data-active=true]:before{background:var(--accent)}@media (width<=768px){.ant-modal{max-width:calc(100vw - 24px)!important;margin:12px auto!important;padding-bottom:12px!important}.ant-modal .ant-modal-content{padding:16px!important}.ant-drawer .ant-drawer-content-wrapper{width:100%!important;max-width:100vw!important}.ant-drawer .ant-drawer-header{padding:12px 16px!important}.ant-drawer .ant-drawer-body{padding:14px 16px!important}.ant-card .ant-card-body{padding:14px!important}.ant-card .ant-card-head{min-height:48px!important;padding:0 14px!important}.crm-pagebar{gap:8px;margin-bottom:12px}.crm-pagebar__title{font-size:17px}.crm-stat{min-width:96px;padding:8px 10px}.crm-kv{grid-template-columns:92px 1fr;gap:7px 10px}.crm-form-row{flex-direction:column;gap:10px}}.ant-layout-sider .ant-layout-sider-children{flex-direction:column;height:100%;min-height:0;display:flex}.ant-table-thead>tr>th.th-resizable{-webkit-user-select:none;user-select:none;position:relative}.ant-table-thead>tr>th.th-resizable:after{content:"";cursor:col-resize;z-index:2;width:8px;position:absolute;top:0;bottom:0;right:0}.ant-table-thead>tr>th.th-resizable:hover:after{background:#3b82f640}
