:root{--navy:#051b48;--navy2:#073477;--blue:#0877f9;--blue2:#19a8f5;--cyan:#00bcd9;--green:#0db88a;--orange:#ff9418;--red:#f04755;--purple:#7259eb;--ink:#15213d;--muted:#758099;--line:#dce5f2;--bg:#f4f7fc;--white:#fff;--shadow:0 9px 30px rgba(14,49,101,.10)}*{box-sizing:border-box}html,body{margin:0;min-height:100%;font-family:"Microsoft YaHei","PingFang SC",Arial,sans-serif;color:var(--ink);background:var(--bg)}button,input,select,textarea{font:inherit}.hidden{display:none!important}.login-page{min-height:100vh;display:grid;grid-template-columns:1.05fr .95fr;background:#fff}.login-visual{position:relative;overflow:hidden;padding:9vh 9vw;color:#fff;background:radial-gradient(circle at 20% 15%,#2269db 0,#0b3e92 38%,#041a46 100%)}.login-visual:after{content:"";position:absolute;right:-12%;bottom:-34%;width:650px;height:650px;border:1px solid rgba(255,255,255,.14);border-radius:50%;box-shadow:0 0 0 95px rgba(255,255,255,.025),0 0 0 190px rgba(255,255,255,.018)}.login-logo{display:grid;place-items:center;width:64px;height:64px;border-radius:17px;background:#fff;color:var(--blue);font-size:34px;font-weight:900;margin-bottom:65px}.en-label{font-size:12px;letter-spacing:2px;color:#8fc1ff;font-weight:800}.login-visual h1{font-size:58px;line-height:1.18;margin:17px 0 25px}.login-visual>p:not(.en-label){max-width:620px;color:#d5e5ff;font-size:18px;line-height:1.9}.login-flow{position:relative;z-index:1;display:flex;gap:15px;align-items:center;margin-top:55px}.login-flow span{border:1px solid rgba(255,255,255,.28);background:rgba(255,255,255,.08);border-radius:999px;padding:10px 18px}.login-side{display:grid;place-items:center;padding:50px}.login-card{width:min(440px,100%)}.soft-tag{display:inline-block;padding:7px 12px;border-radius:999px;background:#eaf3ff;color:#176ee5;font-size:11px;font-weight:800;letter-spacing:.6px}.login-card h2{font-size:35px;margin:20px 0 8px}.login-card>p,.modal-title p{color:var(--muted);margin:0 0 30px}.login-card label,.form-grid label{display:flex;flex-direction:column;gap:9px;font-size:13px;font-weight:700;margin-bottom:18px}input,select,textarea{outline:0;border:1px solid #d8e1ee;background:#fff;border-radius:9px;padding:13px 14px;color:var(--ink)}input:focus,select:focus,textarea:focus{border-color:var(--blue);box-shadow:0 0 0 3px rgba(8,119,249,.1)}textarea{width:100%;resize:vertical}.btn{border:0;border-radius:8px;padding:10px 16px;cursor:pointer;font-weight:700}.btn-primary{background:linear-gradient(135deg,#0d7fff,#1260e6);color:#fff;box-shadow:0 6px 16px rgba(15,105,236,.23)}.btn-ghost{background:#fff;border:1px solid var(--line);color:#526079}.btn-success{background:#e6f8f2;color:#07805e}.btn-danger{background:#fff0f1;color:#d9364c}.login-btn{width:100%;padding:15px}.demo{margin-top:24px;padding:15px 17px;border-radius:10px;background:#f6f8fc;color:#66728b;font-size:12px;line-height:1.7}.demo strong,.demo span{display:block}.app{min-height:100vh}.sidebar{position:fixed;inset:0 auto 0 0;width:220px;background:linear-gradient(180deg,#061f52,#03245c 55%,#061c47);color:#fff;padding:20px 10px;z-index:10;overflow:hidden}.side-brand{height:70px;display:flex;align-items:center;gap:12px;padding:0 14px;border-bottom:1px solid rgba(255,255,255,.10)}.brand-icon{font-size:31px;color:#79bbff}.side-brand strong,.side-brand small{display:block}.side-brand strong{font-size:17px}.side-brand small{font-size:10px;color:#75a6df;margin-top:4px}.sidebar nav{position:relative;z-index:2;padding-top:14px;display:flex;flex-direction:column;gap:7px}.nav-btn{display:flex;align-items:center;gap:14px;width:100%;height:53px;border:0;border-radius:7px;background:transparent;color:#e6efff;padding:0 16px;font-size:15px;cursor:pointer;text-align:left}.nav-btn:hover,.nav-btn.active{background:linear-gradient(90deg,#0c83ff,#1266df);box-shadow:0 8px 21px rgba(0,94,255,.28)}.nav-icon{width:23px;font-size:20px;text-align:center}.side-building{position:absolute;left:0;right:0;bottom:0;height:275px;opacity:.25;background:linear-gradient(160deg,transparent 25%,rgba(0,150,255,.2));border-top:1px solid #1383dd}.side-building span{position:absolute;bottom:0;border:1px solid #1598f0;background:repeating-linear-gradient(0deg,transparent 0 18px,rgba(15,139,231,.5) 19px 20px)}.side-building span:nth-child(1){left:18px;width:45px;height:115px}.side-building span:nth-child(2){left:70px;width:52px;height:180px}.side-building span:nth-child(3){left:129px;width:35px;height:135px}.side-building span:nth-child(4){left:171px;width:30px;height:220px}.shell{margin-left:220px;min-height:100vh}.header{height:80px;padding:0 26px;background:linear-gradient(100deg,#08245a,#062e70 60%,#043b84);color:#fff;display:flex;align-items:center;justify-content:space-between;position:sticky;top:0;z-index:8}.header h1{font-size:27px;margin:0}.header p{margin:4px 0 0;font-size:11px;color:#8fbae9}.header-tools{display:flex;align-items:center;gap:13px}.icon-action{position:relative;width:36px;height:36px;border:0;background:rgba(255,255,255,.08);color:#fff;border-radius:50%;font-size:21px;cursor:pointer}.icon-action i{position:absolute;right:-4px;top:-5px;display:grid;place-items:center;min-width:17px;height:17px;padding:0 4px;background:#f43e50;border-radius:9px;font-size:9px;font-style:normal}.user-chip{display:flex;align-items:center;gap:9px;border-left:1px solid rgba(255,255,255,.2);padding-left:15px}.user-chip>span{display:grid;place-items:center;width:39px;height:39px;border-radius:50%;background:linear-gradient(135deg,#5daaff,#176eee);font-weight:800}.user-chip strong,.user-chip small{display:block}.user-chip strong{font-size:13px}.user-chip small{font-size:10px;color:#a9caef;margin-top:3px}.role-pill{border:1px solid #217cdc;border-radius:20px;background:#063372;color:#67bdff;padding:8px 13px;cursor:pointer;font-size:12px}.content{padding:20px 24px 42px;max-width:1800px;margin:auto}.summary-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:18px;margin-bottom:18px}.summary-grid.employee{grid-template-columns:repeat(4,1fr)}.summary-card{min-height:88px;padding:18px 20px;border-radius:11px;color:#fff;display:flex;align-items:center;gap:15px;box-shadow:0 8px 20px rgba(21,94,205,.16);overflow:hidden;position:relative}.summary-card:after{content:"";position:absolute;width:90px;height:90px;border-radius:50%;right:-28px;bottom:-38px;background:rgba(255,255,255,.13)}.summary-card.blue{background:linear-gradient(135deg,#246eff,#1461dd)}.summary-card.sky{background:linear-gradient(135deg,#22b3f0,#0878e7)}.summary-card.teal{background:linear-gradient(135deg,#21c3bd,#08a59f)}.summary-card.orange{background:linear-gradient(135deg,#ffa52e,#ff7b13)}.summary-card.red{background:linear-gradient(135deg,#ff686f,#ef3d4e)}.summary-card.purple{background:linear-gradient(135deg,#8d7cf7,#6550dd)}.summary-icon{display:grid;place-items:center;width:48px;height:48px;border-radius:50%;background:rgba(255,255,255,.2);font-size:24px}.summary-card span{font-size:13px}.summary-card strong{display:block;font-size:30px;margin-top:3px}.section-title{font-size:23px;margin:11px 0 14px}.dashboard-grid{display:grid;grid-template-columns:1.1fr .8fr .72fr;gap:14px}.dashboard-grid.two{grid-template-columns:1.15fr .85fr}.panel{background:#fff;border:1px solid #d8e3f0;border-radius:11px;box-shadow:0 4px 15px rgba(20,64,124,.04);overflow:hidden}.panel-head{height:55px;padding:0 17px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line)}.panel-head h3{font-size:16px;margin:0;display:flex;align-items:center;gap:9px}.panel-head h3 b{color:var(--blue)}.panel-head button,.link-btn{border:0;background:transparent;color:var(--blue);cursor:pointer;font-size:12px}.panel-body{padding:16px}.task-table{width:100%;border-collapse:collapse;font-size:12px}.task-table th{background:#f4f7fb;color:#46516a;font-weight:700;text-align:left;padding:11px 10px;white-space:nowrap}.task-table td{padding:12px 10px;border-bottom:1px solid #e8edf5;vertical-align:middle}.task-table tr:last-child td{border-bottom:0}.task-table tbody tr:hover{background:#f8fbff}.task-name{font-weight:700;color:#1d2942}.subline{display:block;color:#8993a7;font-size:10px;margin-top:4px}.status,.priority{display:inline-flex;white-space:nowrap;border-radius:999px;padding:5px 9px;font-size:11px;font-weight:700}.status.待处理{color:#116eea;background:#e9f2ff}.status.整改中{color:#008cad;background:#e2f8fd}.status.待复核{color:#d66e00;background:#fff1dc}.status.已退回{color:#7351d6;background:#efeaff}.status.已通过{color:#0a8b67;background:#e2f7f0}.priority.高{color:#e53f50;background:#fff0f1}.priority.中{color:#df7800;background:#fff4e5}.priority.低{color:#177bd8;background:#edf6ff}.actions{display:flex;gap:6px}.table-btn{border:0;background:none;color:#0877f9;padding:3px;cursor:pointer;font-size:11px}.workflow{padding:17px 12px}.flow-step{position:relative;display:grid;grid-template-columns:39px 1fr auto;gap:10px;align-items:center;min-height:57px}.flow-step:not(:last-child):before{content:"";position:absolute;left:19px;top:40px;bottom:-5px;border-left:2px dotted #77aef4}.flow-dot{position:relative;z-index:1;display:grid;place-items:center;width:38px;height:38px;border-radius:50%;background:#edf2fa;color:#7c879b;font-weight:800}.flow-step.done .flow-dot,.flow-step.active .flow-dot{background:linear-gradient(135deg,#1c8aff,#1662da);color:#fff}.flow-step strong{font-size:13px}.flow-step small{color:var(--muted);font-size:10px}.risk-list{padding:10px 14px}.risk-item{display:grid;grid-template-columns:42px 1fr auto;gap:11px;align-items:center;padding:13px 0;border-bottom:1px solid #e9edf4}.risk-item:last-child{border:0}.risk-grade{display:grid;place-items:center;width:40px;height:40px;border-radius:8px;color:#fff;font-size:18px;font-weight:800}.risk-grade.a{background:linear-gradient(135deg,#ff6c70,#ec3745)}.risk-grade.b{background:linear-gradient(135deg,#ff9e15,#f06d00)}.risk-grade.c{background:linear-gradient(135deg,#ffc21b,#f09b00)}.risk-grade.d{background:linear-gradient(135deg,#4fa4ff,#226ae3)}.risk-item strong,.risk-item small{display:block}.risk-item strong{font-size:13px}.risk-item small{color:var(--muted);margin-top:5px;font-size:10px}.risk-count{font-size:11px;color:#64718a}.lower-grid{display:grid;grid-template-columns:1.04fr .96fr;gap:14px;margin-top:14px}.version-list{padding:0 14px 12px}.version-row{display:grid;grid-template-columns:65px 1fr 115px 90px;gap:10px;padding:13px 5px;border-bottom:1px solid #e8edf5;align-items:center;font-size:12px}.version-row:last-child{border:0}.ability{display:grid;grid-template-columns:1.2fr .8fr;align-items:center;padding:15px 20px}.radar{position:relative;width:210px;height:170px;margin:auto}.radar svg{width:100%;height:100%}.score{text-align:center;border-left:1px solid var(--line);padding:18px}.score strong{display:block;color:#1476ed;font-size:42px}.score span{font-size:12px;color:var(--muted)}.bar-list{padding:8px 0}.bar-item{display:grid;grid-template-columns:80px 1fr 42px;gap:10px;align-items:center;margin:17px 0;font-size:12px}.bar{height:8px;background:#edf1f6;border-radius:999px;overflow:hidden}.bar i{display:block;height:100%;border-radius:999px;background:linear-gradient(90deg,#176ee5,#32a5ff)}.warning-list{padding:10px}.warning{border:1px solid #ffd3d7;background:#fff7f7;border-radius:8px;padding:12px;margin-bottom:10px}.warning.orange{border-color:#ffd8ae;background:#fff9f2}.warning strong{display:block;font-size:12px}.warning p{margin:7px 0 0;font-size:11px;color:#e13a4e}.warning.orange p{color:#df7600}.quick-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}.quick-card{border:1px solid #dce6f3;border-radius:10px;padding:16px;background:#fff}.quick-card b{display:block;color:#176ee5;font-size:24px;margin:8px 0}.empty{padding:45px 20px;text-align:center;color:var(--muted);font-size:13px}.list-page .panel{min-height:530px}.filters{display:flex;gap:8px}.filters button{border:1px solid var(--line);background:#fff;border-radius:6px;padding:7px 12px;color:#59657b;cursor:pointer}.filters button.active{color:#fff;background:var(--blue);border-color:var(--blue)}.audit-row{display:grid;grid-template-columns:140px 110px 1fr 150px;gap:15px;padding:13px;border-bottom:1px solid var(--line);font-size:12px}.notice-list{display:grid;gap:12px}.notice{display:flex;gap:13px;padding:15px;border:1px solid var(--line);border-radius:9px}.notice b{color:var(--blue)}.settings{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.setting-card{padding:22px;border:1px solid var(--line);background:#fff;border-radius:11px}.setting-card span{font-size:26px}.setting-card h3{font-size:15px}.setting-card p{font-size:12px;color:var(--muted);line-height:1.7}.modal{width:min(760px,calc(100vw - 30px));border:0;border-radius:14px;padding:0;box-shadow:0 25px 80px rgba(4,27,72,.35)}.modal::backdrop{background:rgba(3,23,58,.62);backdrop-filter:blur(3px)}.modal form,.detail-wrap{padding:25px}.modal-title{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:20px}.modal-title h3{font-size:22px;margin:12px 0 4px}.modal-title p{font-size:12px;margin:0}.close-btn{border:0;background:#f0f3f8;border-radius:50%;width:34px;height:34px;font-size:22px;cursor:pointer}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 18px}.form-grid .wide{grid-column:1/-1}.modal-actions{display:flex;justify-content:flex-end;gap:9px;margin-top:8px}.small-modal{max-width:550px}.review-choices{display:flex;gap:20px;margin:15px 0}.review-choices label{font-size:13px;font-weight:700}.detail-modal{max-width:780px}.detail-head{display:flex;justify-content:space-between}.detail-meta{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:18px 0}.meta{padding:12px;background:#f5f8fc;border-radius:8px}.meta small,.meta strong{display:block}.meta small{color:var(--muted);font-size:10px;margin-bottom:5px}.timeline{border-left:2px solid #d8e4f5;margin:20px 0 0 7px;padding-left:22px}.timeline-item{position:relative;margin-bottom:20px}.timeline-item:before{content:"";position:absolute;left:-29px;top:3px;width:11px;height:11px;border-radius:50%;background:var(--blue);border:3px solid #e7f0ff}.timeline-item strong{font-size:12px}.timeline-item p{white-space:pre-wrap;font-size:12px;color:#58647a}.timeline-item small{font-size:10px;color:#929cad}.toast{position:fixed;right:22px;top:92px;z-index:50;background:#102451;color:#fff;border-radius:8px;padding:12px 17px;box-shadow:var(--shadow);opacity:0;transform:translateY(-15px);pointer-events:none;transition:.22s}.toast.show{opacity:1;transform:none}.toast.error{background:#b92e42}@media(max-width:1180px){.summary-grid{grid-template-columns:repeat(3,1fr)}.summary-grid.employee{grid-template-columns:repeat(2,1fr)}.dashboard-grid{grid-template-columns:1fr 1fr}.dashboard-grid>.panel:first-child{grid-column:1/-1}.lower-grid{grid-template-columns:1fr}.task-table th:nth-child(3),.task-table td:nth-child(3){display:none}}@media(max-width:760px){.sidebar{width:70px}.side-brand div,.nav-btn span:last-child,.side-building{display:none}.side-brand{padding:0 10px}.nav-btn{padding:0;justify-content:center}.shell{margin-left:70px}.header{padding:0 14px}.header h1{font-size:18px}.header p,.user-chip div,.icon-action{display:none}.content{padding:12px}.summary-grid,.summary-grid.employee{grid-template-columns:1fr 1fr;gap:9px}.summary-card{padding:12px;min-height:75px}.summary-card strong{font-size:23px}.dashboard-grid,.dashboard-grid.two{grid-template-columns:1fr}.dashboard-grid>.panel:first-child{grid-column:auto}.form-grid{grid-template-columns:1fr}.form-grid .wide{grid-column:auto}.task-table th:nth-child(2),.task-table td:nth-child(2),.task-table th:nth-child(4),.task-table td:nth-child(4){display:none}.ability{grid-template-columns:1fr}.score{border-left:0;border-top:1px solid var(--line)}.settings{grid-template-columns:1fr}}
/* 导入 Excel 台账预览对话框 */
.im-preview{display:flex;flex-direction:column;gap:12px}
.im-summary{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}
.im-summary>div{padding:10px 12px;background:#f5f8fc;border-radius:8px;text-align:center}
.im-summary strong{display:block;font-size:22px;color:var(--blue,#102451)}
.im-summary span{font-size:11px;color:var(--muted,#929cad)}
.im-tips{padding:10px 12px;background:#f9f6e6;border-left:3px solid #d6a303;border-radius:6px;font-size:12px;color:#5b4a17}
.im-scroll{max-height:60vh;overflow:auto;border:1px solid var(--line,#e3e8ef);border-radius:6px}
.im-table{width:100%;border-collapse:separate;border-spacing:0;font-size:12px}
.im-table th{position:sticky;top:0;background:#f5f8fc;padding:8px 6px;text-align:left;z-index:1;border-bottom:1px solid var(--line,#e3e8ef)}
.im-table td{padding:6px;border-bottom:1px solid var(--line,#e3e8ef);vertical-align:top}
.im-table .im-row:hover{background:#f5f8fc}
.im-row.im-error td{background:#fff4f5}
.im-row.im-update td{background:#f4f8ff}
.im-row.im-warn td{background:#fffcf2}
.im-name{font-weight:600;margin-bottom:2px;max-width:260px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.im-muted{color:var(--muted,#929cad);font-size:10px;margin-top:3px;display:block}
.im-msg{padding:4px 6px;border-radius:4px;font-size:11px;line-height:1.4;margin-top:2px}
.im-err{background:#fce4e7;color:#a02030}
.im-warn{background:#fdf2d6;color:#7a5c00}
.im-info{background:#e3f0ff;color:#0c3d8b}
.im-check{display:inline-flex;align-items:center;cursor:pointer}
.im-check input{margin-right:4px}
.im-table select,.im-table textarea{width:100%;border:1px solid var(--line,#d8e4f5);border-radius:4px;padding:4px 6px;font:inherit;font-size:12px;background:#fff}
.im-table textarea{resize:vertical;min-height:36px}
.workspace-muted{font-size:11px;color:var(--muted,#929cad);margin:0}
/* 拖放上传：app.js 自动接管页面上所有 input[type=file]，容器在拖入时高亮 */
.file-drop{position:relative}
.file-drop.file-drop-active{outline:2px dashed #1677ed;outline-offset:3px;border-radius:8px;background:rgba(22,119,237,.07)}
.file-drop.file-drop-active::after{content:attr(data-drop-hint);position:absolute;left:50%;bottom:-17px;transform:translateX(-50%);white-space:nowrap;font-size:11px;color:#1677ed;pointer-events:none}
