*{box-sizing:border-box}body{margin:0;min-width:1280px;background:#f4f6f8;color:#172033}.login-page{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:48px;overflow:hidden;position:relative;background:radial-gradient(circle at 16% 18%,rgba(18,183,106,.22),transparent 28%),radial-gradient(circle at 84% 82%,rgba(36,94,232,.14),transparent 30%),linear-gradient(135deg,#eef8f2,#f7fafc 48%,#eef4ff)}.login-page:before{content:"";position:absolute;top:22px;right:22px;bottom:22px;left:22px;border:1px solid rgba(7,148,85,.12);border-radius:34px;pointer-events:none}.login-page:after{content:"";position:absolute;width:520px;height:520px;right:-160px;top:-180px;background:repeating-linear-gradient(135deg,rgba(7,148,85,.1) 0 2px,transparent 2px 18px);transform:rotate(8deg);pointer-events:none}.login-shell{width:min(1080px,100%);min-height:620px;display:grid;grid-template-columns:1.12fr 420px;gap:28px;position:relative;z-index:1}.login-visual,.login-card{border:1px solid rgba(255,255,255,.72);box-shadow:0 28px 70px #17203324;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px)}.login-visual{min-height:100%;border-radius:28px;padding:48px;color:#fff;position:relative;overflow:hidden;background:linear-gradient(140deg,#064e3bf5,#079455e6),#064e3b}.login-visual:before{content:"";position:absolute;inset:auto -100px -140px auto;width:420px;height:420px;border-radius:50%;background:#ffffff1f}.login-visual:after{content:"";position:absolute;left:48px;right:48px;bottom:150px;height:1px;background:linear-gradient(90deg,rgba(255,255,255,.48),transparent)}.login-visual-topline{display:inline-flex;align-items:center;height:30px;padding:0 12px;border-radius:999px;background:#ffffff24;color:#ffffffdb;font-size:12px;font-weight:700;letter-spacing:.08em;text-transform:uppercase}.login-visual h1.ant-typography{max-width:560px;margin:76px 0 18px;color:#fff;font-size:44px;line-height:1.14;font-weight:800}.login-visual .ant-typography{max-width:560px;color:#ffffffc2;font-size:16px;line-height:1.8}.login-feature-grid{position:absolute;left:48px;right:48px;bottom:48px;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.login-feature-card{min-height:118px;padding:18px;border-radius:18px;background:#ffffff1f;border:1px solid rgba(255,255,255,.16);display:flex;flex-direction:column;gap:8px}.login-feature-card .anticon{font-size:22px;color:#a7f3d0}.login-feature-card span{color:#ffffffb3;font-size:13px}.login-feature-card strong{color:#fff;font-size:15px;line-height:1.35}.login-visual-footer{position:absolute;left:48px;bottom:192px;display:flex;align-items:center;gap:10px;color:#ffffffd1;font-weight:600}.login-card{width:420px;align-self:center;border-radius:28px}.login-card .ant-card-body{padding:34px}.login-brand{display:flex;align-items:center;gap:14px;margin-bottom:22px}.login-brand .ant-typography{margin:0}.login-card-copy{width:100%;margin-bottom:26px}.login-card .ant-form-item-label>label{color:#344054;font-weight:600}.login-card .ant-input-affix-wrapper{border-radius:12px;background:#f8fafc}.login-card .ant-input-affix-wrapper-focused,.login-card .ant-input-affix-wrapper:focus,.login-card .ant-input-affix-wrapper:hover{background:#fff}.login-submit{height:46px;border-radius:12px;font-weight:700;box-shadow:0 12px 24px #0794553d}.login-card-foot{margin-top:18px;padding-top:18px;border-top:1px solid #eef2f6;color:#98a2b3;font-size:12px;text-align:center}@media(max-width:1100px){.login-page{padding:32px}.login-shell{grid-template-columns:1fr;max-width:560px}.login-visual{min-height:420px}.login-visual h1.ant-typography{margin-top:42px;font-size:34px}.login-feature-grid{position:static;margin-top:36px}.login-visual-footer{display:none}.login-visual:after{display:none}.login-card{width:100%}}.app-shell{min-height:100vh}.app-sider{position:sticky!important;top:0;height:100vh;overflow:auto}.brand{height:72px;padding:16px 18px;display:flex;align-items:center;gap:12px;color:#fff}.brand-mark{width:38px;height:38px;border-radius:10px;display:grid;place-items:center;background:linear-gradient(135deg,#078f49,#12b76a);color:#fff;font-size:20px}.brand strong,.brand span{display:block}.brand span{margin-top:2px;color:#ffffff8f;font-size:12px}.app-header{height:64px;padding:0 24px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #e5e9ef}.global-search{width:320px}.app-content{padding:20px 24px 28px}.page-stack{width:100%}.page-heading{display:flex;align-items:center;justify-content:space-between;gap:16px}.page-heading h1{margin:0;color:#172033;font-size:24px;line-height:1.2}.page-heading p{margin:6px 0 0;color:#667085}.module-page-heading{align-items:stretch;flex-direction:column}.module-page-heading>div{min-width:0}.module-page-heading>.ant-space{width:100%;justify-content:flex-end;flex-wrap:wrap}.filter-card .ant-card-body{padding:12px}.filter-card .ant-form{display:flex;flex-wrap:nowrap;align-items:flex-end;gap:10px}.filter-card .ant-form-item{margin:0}.filter-card .ant-form-item-control{min-width:170px}.filter-card .filter-actions{margin-left:auto}.batch-toolbar{min-height:44px;margin-bottom:12px;padding:8px 12px;border:1px solid #e5e9ef;border-radius:8px;background:#fbfdfc;display:flex;align-items:center;justify-content:space-between}.metric-card{cursor:pointer;transition:border-color .18s ease,box-shadow .18s ease,transform .18s ease}.metric-card:hover{border-color:#12b76a;box-shadow:0 10px 26px #17203314;transform:translateY(-1px)}.bar-chart{height:260px;display:flex;align-items:flex-end;gap:16px;padding-top:12px}.bar-item{flex:1;display:flex;min-width:0;flex-direction:column;align-items:center;gap:8px}.bar-item span,.bar-item em{color:#667085;font-size:12px;font-style:normal}.bar-track{width:100%;height:190px;border-radius:8px 8px 0 0;background:#eef2f6;display:flex;align-items:flex-end;overflow:hidden}.bar-track i{display:block;width:100%;border-radius:8px 8px 0 0;background:linear-gradient(180deg,#12b76a,#078f49)}.rank-line{width:100%;display:grid;grid-template-columns:120px 1fr 48px;align-items:center;gap:12px}.rank-scroll{height:260px;overflow-y:auto;padding-right:6px;margin-right:-6px}.rank-scroll::-webkit-scrollbar{width:6px}.rank-scroll::-webkit-scrollbar-track{background:transparent}.rank-scroll::-webkit-scrollbar-thumb{background:#d0d7de;border-radius:3px}.rank-scroll::-webkit-scrollbar-thumb:hover{background:#98a2b3}.rank-scroll .ant-list-item{padding-block:8px}.rank-scroll .ant-progress-inner{vertical-align:middle}.line-placeholder{height:220px;border-radius:8px;background:linear-gradient(135deg,rgba(7,143,73,.14),transparent 36%),repeating-linear-gradient(90deg,#eef2f6 0 1px,transparent 1px 46px),repeating-linear-gradient(0deg,#eef2f6 0 1px,transparent 1px 42px)}.line-placeholder.warning{background:linear-gradient(135deg,rgba(217,119,6,.18),transparent 38%),repeating-linear-gradient(90deg,#eef2f6 0 1px,transparent 1px 46px),repeating-linear-gradient(0deg,#eef2f6 0 1px,transparent 1px 42px)}.department-contribution-list{max-height:220px;overflow-y:auto;padding-right:4px}.rank-medal{width:44px;height:44px;border-radius:10px;display:grid;place-items:center;background:#e9f8ef;color:#078f49;font-weight:800;font-size:20px;flex-shrink:0}.rank-title{display:flex;align-items:center;gap:12px;min-width:0}.rank-position{flex-shrink:0;color:#078f49;font-size:13px;font-weight:700}.rank-name{min-width:0;overflow:hidden;color:#172033;font-size:15px;font-weight:700;text-overflow:ellipsis;white-space:nowrap}.password-form{max-width:420px}.wecom-message-panel{max-width:720px}.wecom-message-panel .ant-alert{margin-bottom:20px}.permission-panel{min-height:244px;padding:18px;border:1px solid #e5e9ef;border-radius:8px;background:#fbfdfc}.permission-panel-head{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:18px}.permission-panel-head strong,.permission-panel-head span{display:block}.permission-panel-head strong{color:#172033;font-size:15px}.permission-panel-head span{margin-top:4px;color:#667085;font-size:12px}.full-input{width:100%}.module-alert{margin-bottom:12px}.rule-tile{min-height:64px;border:1px solid #e5e9ef;border-radius:8px;display:flex;align-items:center;padding:0 14px;background:#fbfdfc;color:#344054;font-weight:700}.verify-box{width:520px}.top-gap{margin-top:12px}.honor-preview{min-height:190px;background:linear-gradient(135deg,rgba(7,143,73,.1),transparent 42%),#fff}.detail-stack{width:100%}.detail-stack .ant-card-small>.ant-card-head{background:#fbfdfc}.proposal-current-tag{margin-inline-end:0;font-weight:700}.proposal-status-card .ant-card-body{overflow-x:auto}.proposal-status-timeline{display:grid;min-width:max-content;padding:8px 2px 4px}.proposal-status-step{position:relative;display:flex;min-width:128px;padding:0 12px;flex-direction:column;align-items:flex-start}.proposal-status-step:first-child{padding-left:0}.proposal-status-step:last-child{padding-right:0}.proposal-status-rail{position:relative;width:100%;height:34px}.proposal-status-rail:after{position:absolute;top:13px;left:32px;width:calc(100% - 16px);height:3px;border-radius:2px;background:#d0d5dd;content:""}.proposal-status-step:last-child .proposal-status-rail:after{display:none}.proposal-status-dot{position:relative;z-index:1;display:grid;width:28px;height:28px;place-items:center;border:2px solid #98a2b3;border-radius:50%;background:#fff;color:#667085;font-size:12px;font-weight:700}.proposal-status-step.is-completed .proposal-status-dot{border-color:#078f49;background:#078f49;color:#fff;font-size:16px}.proposal-status-step.is-completed .proposal-status-rail:after{background:#78c99d}.proposal-status-step.is-current .proposal-status-dot{border-color:#1677ff;background:#1677ff;color:#fff;box-shadow:0 0 0 5px #e6f4ff}.proposal-status-title{margin-top:6px;color:#172033;font-size:14px;line-height:20px}.proposal-status-label{display:inline-flex;margin-top:7px;padding:1px 7px;border-radius:4px;background:#f2f4f7;color:#667085;font-size:12px;line-height:20px}.proposal-status-step.is-completed .proposal-status-label{background:#e9f8ef;color:#056737}.proposal-status-step.is-current .proposal-status-label{background:#e6f4ff;color:#0958d9;font-weight:700}.proposal-status-time,.proposal-status-desc,.proposal-status-actor{margin-top:6px;color:#667085;font-size:12px;line-height:18px;white-space:normal;word-break:break-word}.proposal-status-time{color:#475467;font-variant-numeric:tabular-nums}.proposal-status-step.is-pending .proposal-status-desc,.proposal-status-step.is-pending .proposal-status-actor{color:#98a2b3}.proposal-review-empty{display:block;padding:12px 0;color:#667085}.proposal-review-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:16px}.proposal-review-item{min-width:0;padding:14px;border:1px solid #e5e9ef;border-radius:8px;background:#fbfdfc}.proposal-extension-item{min-width:0;padding:14px;border:1px solid #ffe1b8;border-radius:8px;background:#fffaf3}.proposal-extension-item+.proposal-extension-item{margin-top:12px}.proposal-extension-heading{display:flex;align-items:center;justify-content:space-between;gap:12px}.proposal-extension-heading strong{min-width:0;overflow:hidden;color:#172033;font-size:15px;text-overflow:ellipsis;white-space:nowrap}.proposal-extension-heading .ant-tag{flex:0 0 auto;margin-inline-end:0}.proposal-extension-reason{margin-top:8px;color:#667085;font-size:13px}.proposal-extension-actions{margin-top:12px}.proposal-review-heading{display:flex;align-items:center;justify-content:space-between;gap:12px}.proposal-review-heading strong{min-width:0;overflow:hidden;color:#172033;font-size:15px;text-overflow:ellipsis;white-space:nowrap}.proposal-review-heading .ant-tag{flex:0 0 auto;margin-inline-end:0}.proposal-review-date{display:block;margin-top:8px;color:#667085;font-size:12px}.proposal-review-comment{margin-top:12px}.proposal-review-comment>span{display:block;color:#667085;font-size:12px}.proposal-review-comment p{margin:5px 0 0;color:#344054;line-height:20px;white-space:pre-wrap;word-break:break-word}.proposal-execution-multiline{white-space:pre-wrap;word-break:break-word;color:#344054;line-height:20px}@media(max-width:760px){.proposal-status-card .ant-card-head-wrapper{align-items:flex-start;flex-direction:column}.proposal-status-card .ant-card-extra{margin:0 0 12px}.proposal-status-card .ant-card-body{overflow-x:visible}.proposal-status-timeline{display:block;min-width:0;padding:0}.proposal-status-step,.proposal-status-step:first-child,.proposal-status-step:last-child{min-height:108px;padding:0 0 20px 48px}.proposal-status-rail{position:absolute;top:0;left:0;width:32px;height:100%}.proposal-status-rail:after{top:31px;left:13px;width:3px;height:calc(100% - 26px)}.proposal-status-title{margin-top:3px}}.active-role{background:#e9f8ef;color:#056737;font-weight:700}.ant-list-item{cursor:pointer}.audit-meta{margin-top:4px;color:#667085;font-size:12px}.table-cell-multiline{display:-webkit-box;max-width:100%;overflow:hidden;white-space:normal;word-break:break-word;line-height:20px;-webkit-line-clamp:2;-webkit-box-orient:vertical}.role-cell{display:flex;flex-direction:column;align-items:flex-start;gap:4px;min-width:0;white-space:normal}.role-cell .ant-tag{max-width:100%;margin:0;white-space:normal;line-height:20px;word-break:break-word}.department-tree-name{display:block;min-width:0}.department-tree-name.is-secondary:before{content:"↳";display:inline-block;margin-right:8px;color:#98a2b3}.department-tree-selection-controls{display:inline-flex;align-items:center;gap:8px;white-space:nowrap}.department-pagination{display:flex;justify-content:flex-end;padding:16px 0 0}.department-tree-toggle-icon{width:30px;min-width:30px;height:30px;padding:0;border-color:#e5e7eb;border-radius:8px;color:#344054;box-shadow:none}.department-tree-toggle-icon:hover,.department-tree-toggle-icon:focus{border-color:#98a2b3;color:#172033}
