@import url('/font-fallback.css');
:root{--bg:#f7f8fc;--surface:#fff;--ink:#212738;--muted:#8590a3;--line:#e9ecf3;--purple:#6853d5;--purple-light:#f0edff;--green:#289a83;--amber:#c38b36;--red:#d96769;--shadow:0 8px 35px #33376606;--radius:16px}
*{box-sizing:border-box}body{margin:0;font:14px/1.65 "Microsoft YaHei","PingFang SC",system-ui,sans-serif;color:var(--ink);background:var(--bg);-webkit-font-smoothing:antialiased}button,input,select,textarea{font:inherit}button,a,input,select,textarea{-webkit-tap-highlight-color:transparent}button,a{touch-action:manipulation}button{cursor:pointer}a{color:inherit;text-decoration:none}button:disabled{opacity:.45;cursor:not-allowed}button:focus-visible,a:focus-visible{outline:3px solid #b6a8ff;outline-offset:3px}button{transition:background .15s,box-shadow .15s}svg.icon{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round;flex:none}h1,h2,h3,p{margin:0}h1{font-size:28px;font-weight:650;letter-spacing:-.8px}h2{font-size:17px;font-weight:650}h3{font-size:15px}small,.small{font-size:12px}.muted{color:var(--muted)}.purple{color:var(--purple)}.grow{flex:1}.flex{display:flex;align-items:center;gap:12px}.between{display:flex;align-items:center;justify-content:space-between;gap:12px}.wrap{flex-wrap:wrap}.stack{display:flex;flex-direction:column;gap:16px}.space-top{margin-top:24px}.initial-loader{display:grid;place-content:center;justify-items:center;gap:20px;height:100vh;color:var(--muted)}
.sidebar{position:fixed;inset:0 auto 0 0;width:224px;background:white;border-right:1px solid var(--line);padding:31px 20px;display:flex;flex-direction:column;z-index:30}.brand{display:flex;align-items:center;gap:11px;padding:0 9px 37px}.brand-symbol{width:39px;height:39px;border-radius:12px;background:var(--purple);color:#fff;display:inline-flex;align-items:center;justify-content:center;font-size:19px;font-weight:700;box-shadow:0 5px 15px #6853d524}.brand-title{font-size:17px;font-weight:700;letter-spacing:.5px}.brand-sub{font-size:10px;letter-spacing:2px;color:#a2a9b7}.nav-caption{font-size:10px;color:#a2a9b7;letter-spacing:1.5px;padding:0 14px;margin:18px 0 11px}.nav-link{display:flex;align-items:center;gap:13px;padding:12px 14px;border-radius:9px;color:#737d91;margin:3px 0;font-size:13px}.nav-link.active{background:var(--purple-light);color:var(--purple);font-weight:650}.nav-link:hover{background:#f5f4fb}.nav-link .badge-count{margin-left:auto;font-size:10px;padding:1px 7px;border-radius:6px;background:#e7e0ff}.sidebar-bottom{margin-top:auto;padding-top:24px}.side-help{padding:16px;border:1px solid #eeeaf8;border-radius:12px;background:linear-gradient(140deg,#f7f5ff,#fff);font-size:12px;color:#8a81a5}.side-help strong{display:block;color:#6c5a9d;margin-bottom:5px}.copyright{font-size:10px;color:#b4bbc8;margin:20px 8px 0;letter-spacing:1px}
.main{margin-left:224px}.topbar{height:76px;border-bottom:1px solid var(--line);background:#ffffffeb;display:flex;align-items:center;justify-content:space-between;padding:0 38px;gap:16px}.breadcrumb{font-size:12px;color:#949dae;display:flex;gap:14px;align-items:center}.breadcrumb b{color:#657087;font-weight:500}.top-actions{display:flex;gap:19px;align-items:center}.icon-btn{border:0;background:transparent;padding:6px;color:#8a93a6;display:inline-flex;align-items:center;justify-content:center;border-radius:7px}.icon-btn:hover{background:var(--purple-light);color:var(--purple)}.avatar{width:33px;height:33px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;background:#ede8fc;color:#715ec3;font-size:12px;font-weight:600;flex:none}.avatar.teal{color:#4c9d90;background:#e7f4f0}.user-block{display:flex;align-items:center;gap:10px;font-size:12px}.user-block small{display:block;color:#a1a9b8;font-size:10px}.dev-badge{font-size:10px;border:1px solid #e5ddfa;background:#faf8ff;border-radius:5px;padding:3px 7px;color:#9a83be}.mobile-menu{display:none}
.content{max-width:1590px;margin:auto;padding:32px 38px 50px}.page-heading{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-bottom:27px}.eyebrow{font-size:10px;letter-spacing:2.1px;color:#a3aabd;margin-bottom:6px}.subtitle{color:#929bae;font-size:12px;margin-top:6px}.button{border:1px solid var(--line);background:white;border-radius:8px;color:#68738a;padding:9px 15px;display:inline-flex;align-items:center;justify-content:center;gap:7px;font-size:12px;white-space:nowrap}.button svg{width:16px;height:16px}.button:hover{border-color:#c9bff2;background:#faf9ff}.button.primary{background:var(--purple);color:white;border-color:var(--purple);box-shadow:0 3px 8px #6853d51c}.button.primary:hover{background:#5945c4}.button.danger{border-color:#edc6c6;color:#c75b5e;background:#fffafa}.button.small{padding:5px 10px;font-size:11px}.button.ghost{background:transparent;border-color:transparent;color:var(--purple)}.month-select{background:white;border:1px solid var(--line);border-radius:8px;padding:8px 12px;color:#5c6880;font-size:12px;min-height:39px}
.metric-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:18px;margin-bottom:25px}.metric{background:white;border:1px solid var(--line);border-radius:var(--radius);padding:20px 22px;box-shadow:var(--shadow);position:relative;overflow:hidden}.metric-icon{height:35px;width:35px;border-radius:10px;background:#f0edff;color:#9181dd;display:grid;place-items:center}.metric:nth-child(2) .metric-icon{background:#edf6fa;color:#64a5c1}.metric:nth-child(3) .metric-icon{background:#fff4e6;color:#d4a56b}.metric:nth-child(4) .metric-icon{background:#eaf6f1;color:#68b69a}.metric-label{font-size:12px;color:#8e98aa}.metric-value{font:650 32px/1.4 system-ui,sans-serif;color:#30384c;margin:13px 0 8px;letter-spacing:-1px}.metric-value span{font:12px "Microsoft YaHei";color:#a9b0bd;margin-left:7px}.metric-note{font-size:11px;color:#a5adbb}.mini-chart{position:absolute;right:22px;bottom:28px;display:flex;align-items:end;gap:4px;height:34px;opacity:.6}.mini-chart i{width:5px;border-radius:3px;background:#d0c6f6}.mini-chart i:nth-child(3n){background:#a797e7}.dash-grid{display:grid;grid-template-columns:minmax(0,1fr) 290px;gap:22px;align-items:start}.card{background:white;border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden}.card-head{padding:21px 22px;display:flex;align-items:center;justify-content:space-between;gap:12px}.card-head p{font-size:11px;color:#99a2b2;margin-top:4px}.card-body{padding:0 22px 22px}.tabs{display:flex;gap:23px;border-bottom:1px solid var(--line);padding:0 22px;overflow-x:auto}.tab{padding:0 0 13px;border:0;background:none;font-size:12px;color:#929bad;white-space:nowrap;border-bottom:2px solid transparent}.tab.active{color:var(--purple);border-bottom-color:var(--purple);font-weight:600}.tab span{font-size:10px;margin-left:5px;padding:0 5px;background:#f0f2f7;border-radius:4px}.toolbar{display:flex;align-items:center;gap:10px;justify-content:space-between;padding:17px 22px}.search{position:relative;display:flex;gap:8px;align-items:center;border:1px solid var(--line);border-radius:7px;padding:6px 10px;color:#b0b8c5;max-width:260px;background:#fcfcfe}.search svg{width:15px;height:15px}.search input{border:0;background:none;outline:none;font-size:11px;width:100%;min-width:0;color:var(--ink)}.search input::placeholder{color:#b1b8c4}.hint{font-size:11px;color:#a4adbc}.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse;text-align:left;white-space:nowrap;font-size:12px}th{font-weight:500;color:#9ba4b5;font-size:11px;background:#fafbfd;padding:12px 20px;border-block:1px solid #f1f2f7}td{padding:18px 20px;border-bottom:1px solid #f0f2f7;color:#63708a}tr:last-child td{border-bottom:0}tbody tr:hover{background:#fdfcff}.store-cell{display:flex;align-items:center;gap:10px;min-width:145px}.store-icon{width:33px;height:33px;border-radius:9px;background:#f1f0fa;color:#a79bd1;display:grid;place-items:center}.store-cell strong{color:#4c5870;font-size:12px;font-weight:550}.subline{font-size:10px;color:#a6aebc;margin-top:2px}.pill{display:inline-flex;align-items:center;gap:5px;border-radius:5px;font-size:10px;padding:3px 8px;background:#f0f2f7;color:#8993a5;white-space:nowrap}.pill:before{content:"";height:4px;width:4px;border-radius:50%;background:currentColor}.pill.collecting{background:#edf2ff;color:#7395d7}.pill.ties{background:#fff4e6;color:#cc9a50}.pill.review{background:#f2edff;color:#9c83ce}.pill.locked{background:#eaf7f1;color:#68af94}.pill.red{background:#fff0ef;color:#d87c77}.progress{height:4px;border-radius:4px;background:#f0f1f6;width:82px;overflow:hidden;margin-top:6px}.progress>i{display:block;height:100%;background:#aa9bdd;border-radius:4px}.progress.complete>i{background:#86c4ac}.row-action{font-size:11px;color:#9c8ad5;border:0;background:none;padding:5px 0;display:inline-flex;align-items:center;gap:4px}.row-action svg{width:12px;height:12px}.card-foot{padding:15px 22px;display:flex;justify-content:space-between;color:#abb2be;font-size:10px;border-top:1px solid var(--line)}.rule-banner{padding:20px 21px;background:linear-gradient(130deg,#f0ecff,#f8f7fe);border-bottom:1px solid #ede8fb;position:relative}.rule-banner h2{font-size:15px;color:#6b5aa2}.rule-banner p{font-size:10px;color:#9c8fbd;margin-top:4px}.rule-banner .icon{position:absolute;right:22px;top:23px;width:30px;height:30px;color:#baafdb}.rule-body{padding:20px 21px}.rule-row{display:flex;align-items:center;gap:10px;margin:0 0 15px;font-size:11px;color:#919bad}.grade{display:inline-flex;align-items:center;justify-content:center;min-width:30px;height:27px;border-radius:6px;font-size:11px;font-weight:600;background:#f2effc;color:#9880cd}.grade.Bplus{background:#ecf2fc;color:#829ac5}.grade.B{background:#edf5f2;color:#7ba998}.grade.C{background:#fff2e7;color:#cfa37f}.rule-row strong{margin-left:auto;font:500 15px system-ui;color:#68748b}.rule-divider{border-top:1px dashed #e9e6f2;margin:18px 0}.rule-note{font-size:10px;line-height:1.9;color:#a3a9b7}.weight-bar{height:6px;background:#c0d9eb;border-radius:8px;margin:11px 0 9px;overflow:hidden}.weight-bar i{display:block;width:52%;height:100%;background:#a996de}.weight-caption{display:flex;justify-content:space-between;font-size:10px;color:#9ba5b5}.activity-item{display:flex;gap:12px;padding-bottom:19px}.activity-dot{width:7px;height:7px;background:#c0b2e5;border:2px solid #f1edf9;border-radius:50%;margin-top:6px;box-sizing:content-box;flex:none}.activity-item p{font-size:11px;color:#7d879a}.activity-item small{color:#b1b7c3;font-size:10px}.info-strip{margin-top:22px;display:flex;align-items:center;gap:10px;color:#a3acbc;font-size:11px}.info-strip svg{width:14px;height:14px}.empty{text-align:center;padding:55px 20px;color:#a5aebe}.empty .icon{width:36px;height:36px;margin-bottom:10px;color:#c6c0dc}.empty p{margin:6px 0 15px}.banner{padding:13px 17px;background:#f0edfc;border:1px solid #e4ddf6;color:#8f7ab8;font-size:12px;border-radius:9px;display:flex;align-items:center;gap:12px;margin-bottom:20px}.banner.warning{background:#fffaed;border-color:#f3e8cb;color:#b59a66}.banner.success{background:#eef8f3;border-color:#dcede2;color:#6fa38b}.banner .icon{width:18px;height:18px}.section-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:15px}.field{display:flex;flex-direction:column;gap:6px;font-size:12px;color:#7d879b}.field.full{grid-column:1/-1}input:not([type=checkbox]):not([type=radio]),select,textarea{border:1px solid #e4e7ef;border-radius:7px;padding:9px 11px;color:#536078;background:white;outline:none;min-width:0}input:focus,select:focus,textarea:focus{border-color:#b5a5e0;box-shadow:0 0 0 3px #f3f0fc}input[type=checkbox]{accent-color:var(--purple);width:15px;height:15px}textarea{resize:vertical;min-height:85px}label.check{display:flex;align-items:center;gap:8px;font-size:12px;color:#7c8799;padding:7px 0}.field small{color:#a7afbd;font-size:10px}.form-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:24px}.stepper{display:flex;align-items:center;justify-content:space-between;gap:15px;padding:19px 24px;margin-bottom:22px}.step{display:flex;align-items:center;gap:8px;color:#b1b8c5;font-size:11px}.step em{font:500 10px system-ui;display:grid;place-items:center;height:23px;width:23px;background:#f4f5f8;border-radius:50%;font-style:normal}.step.active{color:var(--purple)}.step.active em{color:#fff;background:#a18dd8}.step.done em{background:#edf6f0;color:#89ad99}.step-line{height:1px;background:#eef0f5;flex:1}.detail-top{display:flex;align-items:center;gap:13px;margin-bottom:5px}.detail-top a{display:flex;align-items:center;color:#b1a5cc}.quota-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:13px;margin-top:15px}.quota-box{padding:15px;background:#faf9fd;border:1px solid #efedf5;border-radius:9px;text-align:center}.quota-box strong{display:block;font:600 22px system-ui;color:#817395;margin:7px}.quota-box small{color:#ada6b9;font-size:10px}.ballot-toolbar{position:sticky;top:0;z-index:5;padding:15px 22px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;gap:15px}.grade-buttons{display:flex;gap:8px}.grade-button{height:33px;width:38px;border:1px solid #e8e5f0;border-radius:7px;background:white;color:#a7a0b5;font-size:11px}.grade-button.selected{background:var(--purple);border-color:var(--purple);color:white;box-shadow:0 2px 7px #7962b526}.grade-button:hover{border-color:#b5a2dd}.reason-input{max-width:240px;width:100%;font-size:11px}.ballot-table td{padding-top:13px;padding-bottom:13px}.ballot-sticky{position:sticky;bottom:0;padding:17px 22px;border-top:1px solid var(--line);background:#fffffff5;backdrop-filter:blur(12px);display:flex;justify-content:space-between;align-items:center;z-index:8;gap:10px}.ballot-count{font-size:12px;color:#9689ac}.progress-people{display:flex;align-items:center;gap:10px;padding:14px 0;border-bottom:1px solid #f2f1f5}.progress-people:last-child{border:0}.progress-people strong{font-size:12px;font-weight:500}.tie-card{padding:20px;margin-top:16px;border:1px solid #eee5d3;border-radius:12px;background:#fffdf8}.tie-person{display:flex;align-items:center;justify-content:space-between;padding:10px 0;gap:10px;border-top:1px solid #f2eee5}.tie-person select{font-size:12px;min-width:130px}.rule-page-table td{white-space:normal;line-height:1.8}.rule-page-table th{white-space:normal}.rules-copy{color:#8b94a6;font-size:12px;line-height:2}.rules-copy p{margin-bottom:13px}
dialog{border:1px solid #eeeaf5;border-radius:18px;padding:0;width:min(620px,calc(100vw - 30px));max-height:88vh;box-shadow:0 30px 100px #32275022;color:var(--ink)}dialog::backdrop{background:#34324455;backdrop-filter:blur(3px)}.modal-head{display:flex;justify-content:space-between;align-items:center;padding:22px 25px;border-bottom:1px solid var(--line)}.modal-body{padding:23px 25px}.modal-body .note{font-size:12px;color:#a199ac;margin-bottom:16px}.modal-error{color:#cb7372;font-size:12px;margin-top:13px;white-space:pre-line}.dialog-list{max-height:270px;overflow:auto;border:1px solid var(--line);border-radius:8px;padding:8px 14px}.dialog-list label{border-bottom:1px solid #f3f1f7;padding:9px 0}.dialog-list label:last-child{border:0}#toast{position:fixed;bottom:30px;left:50%;transform:translate(-50%,30px);background:#3c3455;color:#fff;padding:12px 23px;border-radius:9px;font-size:12px;z-index:200;opacity:0;transition:.2s;pointer-events:none;max-width:90vw;box-shadow:0 8px 30px #21173122}#toast.visible{opacity:1;transform:translate(-50%,0)}#toast.error{background:#9c5959}.login-page{min-height:100vh;display:grid;grid-template-columns:1fr 1fr;background:#fff}.login-art{background:radial-gradient(ellipse at 20% 10%,#f2eafa,transparent 55%),#eeeaf5;display:flex;align-items:center;justify-content:center;padding:70px;position:relative;overflow:hidden}.login-art-inner{max-width:470px;z-index:2}.login-art h1{font-size:38px;line-height:1.55;margin:28px 0 16px;color:#625277}.login-art p{font-size:13px;color:#a094ad;line-height:2}.decorative-card{background:#ffffffb3;border:1px solid #ffffff;border-radius:18px;padding:25px;max-width:340px;margin-top:45px;box-shadow:0 25px 50px #8068a313;transform:rotate(-3deg)}.login-panel{display:flex;align-items:center;justify-content:center;padding:35px}.login-inner{width:350px}.login-inner .field{margin-top:18px}.login-inner .button.primary{width:100%;margin-top:25px}.demo-divider{border-top:1px solid var(--line);margin-top:28px;padding-top:22px}.demo-roles{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin-top:13px}.demo-roles button{padding:10px}.account-pill{padding:9px 15px;background:#f5f2fb;border-radius:10px;font-size:12px;color:#998ab2}
@media(min-width:1500px){.content{padding:36px 45px}.metric{padding:23px 26px}td{padding:21px 22px}.dash-grid{grid-template-columns:minmax(0,1fr) 310px}}
@media(max-width:1200px){.sidebar{width:202px;padding:27px 15px}.main{margin-left:202px}.content{padding:27px 25px}.topbar{padding:0 25px}.dash-grid{grid-template-columns:minmax(0,1fr) 260px;gap:17px}.metric{padding:17px}.metric-grid{gap:12px}.secondary{display:none}td,th{padding-inline:16px}.tabs{gap:17px}}
@media(max-width:1000px){.dash-grid{grid-template-columns:1fr}.dash-aside{display:grid;grid-template-columns:1fr 1fr;gap:16px}.metric-grid{grid-template-columns:repeat(2,1fr)}.section-grid{grid-template-columns:1fr}.login-art{padding:35px}.login-art h1{font-size:30px}.mini-chart{display:none}}
@media(max-width:700px){.sidebar{transform:translateX(-100%);transition:.2s;width:220px;box-shadow:10px 0 80px #332b611a}.sidebar.open{transform:translateX(0)}.main{margin-left:0}.topbar{height:63px;padding:0 18px}.mobile-menu{display:flex}.breadcrumb{display:none}.top-actions{gap:11px}.top-actions>.icon-btn{display:none}.content{padding:23px 17px 40px}.page-heading{align-items:flex-start;flex-wrap:wrap;gap:15px;margin-bottom:20px}h1{font-size:23px}.eyebrow{font-size:9px}.page-heading>.flex{width:100%}.page-heading>.flex .button.primary{margin-left:auto}.metric-grid{gap:11px;margin-bottom:19px}.metric{padding:15px;border-radius:12px}.metric-value{font-size:28px;margin:10px 0 5px}.metric-label{font-size:11px}.metric-icon{width:29px;height:29px}.metric-icon .icon{width:17px;height:17px}.metric-note{font-size:10px}.dash-aside{display:flex;flex-direction:column}.card{border-radius:13px}.card-head{padding:17px}.card-head h2{font-size:15px}.toolbar{padding:13px 17px}.tabs{padding-inline:17px;gap:20px}.table-wrap table{font-size:11px}.task-table{min-width:650px}.card-foot{padding:12px 17px}.form-grid{grid-template-columns:1fr}.field.full{grid-column:auto}.stepper{padding:15px 13px;gap:7px}.step{gap:5px;font-size:10px}.step-line{display:none}.step em{width:20px;height:20px;font-size:9px}.quota-grid{gap:8px}.quota-box{padding:10px 5px}.quota-box strong{font-size:20px}.ballot-toolbar{flex-direction:column;align-items:flex-start;padding:14px}.ballot-table thead{display:none}.ballot-table,.ballot-table tbody,.ballot-table tr,.ballot-table td{display:block;width:100%;white-space:normal}.ballot-table tr{padding:14px 17px;border-bottom:1px solid var(--line);display:grid;grid-template-columns:1fr auto;gap:12px}.ballot-table td{border:0;padding:0}.ballot-table td:nth-child(3){grid-column:1/-1}.ballot-table .reason-input{max-width:none}.ballot-sticky{padding:12px 14px;flex-wrap:wrap}.ballot-sticky .muted{font-size:10px}.reason-input{font-size:12px}.login-page{grid-template-columns:1fr}.login-art{display:none}.login-panel{min-height:100vh;padding:30px}.user-block .user-name{display:none}.rule-page-table{min-width:650px}dialog .modal-body{padding:20px}.notification-title{max-width:170px;white-space:normal}.version-table{min-width:650px}}
.brand-title{font-size:15px;white-space:nowrap}.brand-sub{font-size:9px;letter-spacing:1.2px;white-space:nowrap}.card,.stack,.dash-grid>*,.section-grid>*{min-width:0}.content{min-width:0}.metric-label{color:#747f92}.metric-note,.subtitle,.hint{color:#8792a5}.rule-note{color:#8d96a8}.step{color:#929dad}.subline{color:#919cad}.table-wrap{max-width:100%}.page-heading{min-width:0}
@media(max-width:700px){.step{flex-direction:column;white-space:nowrap;gap:6px;font-size:10px}.stepper{padding-inline:10px;gap:5px}.grade-button{width:42px;height:38px}.ballot-table tr{grid-template-columns:1fr}.ballot-table td:nth-child(2){justify-self:start}.ballot-table td:nth-child(3){grid-column:auto}.brand-title{font-size:15px}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}
/* Review reasons can be longer than a table cell. */
.comment-cell{white-space:normal;min-width:180px;max-width:480px;overflow-wrap:anywhere}
details summary{cursor:pointer;padding:12px 0;font-weight:600;color:var(--ink)}
.section-grid .quota-grid{grid-template-columns:repeat(3,minmax(0,1fr))}
.quota-box strong{white-space:nowrap}
