:root{--primary:#1677ff;--primary-hover:#4096ff;--success:#52c41a;--warning:#faad14;--danger:#ff4d4f;--bg:#f0f2f5;--sidebar-bg:#001529;--sidebar-text:#ffffffb3;--sidebar-active:#1677ff;--border:#e8e8e8}*{box-sizing:border-box}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif;background:var(--bg);color:#333}.login-container{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#1677ff,#4096ff)}.login-card{background:white;border-radius:12px;padding:40px;width:420px;box-shadow:0 8px 40px rgba(0,0,0,.12)}.login-card h1{text-align:center;color:var(--primary);margin-bottom:8px;font-size:24px}.login-card .subtitle{text-align:center;color:#999;margin-bottom:32px;font-size:14px}.form-group{margin-bottom:16px}.form-group label{display:block;font-size:14px;color:#333;margin-bottom:6px;font-weight:500}.form-group label .required{color:var(--danger);margin-left:2px}.form-input{width:100%;padding:8px 12px;border:1px solid var(--border);border-radius:6px;font-size:14px;outline:none;transition:border-color .2s}.form-input:focus{border-color:var(--primary);box-shadow:0 0 0 2px rgba(22,119,255,.1)}.form-select{width:100%;padding:8px 12px;border:1px solid var(--border);border-radius:6px;font-size:14px;outline:none;background:white;cursor:pointer}.form-select:focus{border-color:var(--primary)}.form-textarea{width:100%;padding:8px 12px;border:1px solid var(--border);border-radius:6px;font-size:14px;outline:none;resize:vertical;min-height:80px}.form-textarea:focus{border-color:var(--primary)}.btn{padding:8px 20px;border-radius:6px;font-size:14px;cursor:pointer;border:none;transition:all .2s;font-weight:500}.btn-primary{background:var(--primary);color:white}.btn-primary:hover{background:var(--primary-hover)}.btn-default{background:white;color:#333;border:1px solid var(--border)}.btn-default:hover{color:var(--primary);border-color:var(--primary)}.btn-danger{background:var(--danger);color:white}.btn-danger:hover{background:#ff7875}.btn-success{background:var(--success);color:white}.btn-success:hover{background:#73d13d}.btn-sm{padding:4px 12px;font-size:13px}.app-layout{display:flex;min-height:100vh}.sidebar{width:240px;background:var(--sidebar-bg);color:var(--sidebar-text);display:flex;flex-direction:column;position:fixed;top:0;left:0;bottom:0;z-index:100;overflow-y:auto}.sidebar-header{padding:16px;display:flex;align-items:center;gap:10px;border-bottom:1px solid rgba(255,255,255,.1)}.sidebar-header .logo{width:32px;height:32px;background:var(--primary);border-radius:8px;display:flex;align-items:center;justify-content:center;color:white;font-weight:700;font-size:16px}.sidebar-header .title{color:white;font-size:16px;font-weight:600}.sidebar-search{padding:12px 16px}.sidebar-search input{width:100%;padding:6px 12px;border-radius:4px;border:none;background:rgba(255,255,255,.1);color:white;font-size:13px;outline:none}.sidebar-search input::placeholder{color:rgba(255,255,255,.4)}.nav-section{padding:8px 0}.nav-section-title{padding:8px 16px;font-size:12px;color:rgba(255,255,255,.45);letter-spacing:.5px;cursor:pointer;display:flex;align-items:center;justify-content:space-between;transition:color .2s}.nav-section-title:hover{color:rgba(255,255,255,.7)}.nav-item{margin:2px 8px;padding:9px 8px 9px 24px;border-radius:6px;font-size:14px;cursor:pointer;transition:background .2s,color .2s;display:flex;align-items:center;gap:8px;color:var(--sidebar-text)}.nav-item:hover{background:rgba(255,255,255,.08);color:#fff}.nav-item.active{background:var(--sidebar-active);color:#fff;font-weight:600}.nav-item.active:hover{background:var(--primary-hover)}.nav-section-title.has-active{color:#69b1ff;font-weight:600}.nav-item .icon{font-size:16px;width:20px;text-align:center}.main-content{flex:1;margin-left:240px;display:flex;flex-direction:column}.top-bar{background:white;padding:12px 24px;justify-content:space-between;border-bottom:1px solid var(--border);position:sticky;top:0;z-index:50}.top-bar,.top-bar .user-info{display:flex;align-items:center}.top-bar .user-info{gap:12px}.top-bar .avatar{width:32px;height:32px;border-radius:50%;background:var(--primary);color:white;display:flex;align-items:center;justify-content:center;font-size:14px}.page-content{padding:24px;flex:1}.card{background:white;border-radius:8px;padding:24px;margin-bottom:16px;box-shadow:0 1px 2px rgba(0,0,0,.04)}.card-title{font-size:18px;font-weight:600;margin-bottom:20px;padding-bottom:12px;border-bottom:1px solid var(--border)}.card-subtitle{font-size:16px;font-weight:600;margin-bottom:16px;margin-top:8px}.form-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:16px}.form-grid-3{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}.form-grid-4{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}.form-full{grid-column:1/-1}.data-table{width:100%;border-collapse:collapse;font-size:14px}.data-table th{background:#fafafa;padding:12px 16px;text-align:left;font-weight:600;border-bottom:1px solid var(--border);white-space:nowrap}.data-table td{padding:12px 16px;border-bottom:1px solid #f0f0f0}.data-table tr:hover td{background:#fafafa}.sheet-recon-scroll thead th{position:sticky;z-index:3}.sheet-recon-scroll thead tr:first-child th{top:0;height:38px;padding-top:8px;padding-bottom:8px}.sheet-recon-scroll thead tr:nth-child(2) th{top:38px}.sheet-recon-scroll tfoot td{position:sticky;bottom:0;z-index:2;background:#fafafa;border-top:1px solid #d9d9d9}.table-scroll{max-height:calc(100vh - 280px);overflow:auto}.table-scroll thead th{position:sticky;top:0;z-index:3}.table-scroll thead tr:nth-child(2) th{top:40px}.table-scroll tfoot td{position:sticky;bottom:0;z-index:2;background:#fafafa;border-top:1px solid #d9d9d9}.modal-overlay{inset:0;padding:20px}.modal-box{background:#fff;border-radius:8px;max-height:88vh;display:flex;flex-direction:column;box-shadow:0 8px 32px rgba(0,0,0,.25)}.modal-head{display:flex;justify-content:space-between;align-items:center;padding:12px 20px;border-bottom:1px solid var(--border);flex-shrink:0}.modal-body{padding:16px 20px;overflow-y:auto}.tag{display:inline-block;padding:2px 8px;border-radius:4px;font-size:12px;font-weight:500}.tag-success{background:#f6ffed;color:#52c41a;border:1px solid #b7eb8f}.tag-warning{background:#fffbe6;color:#faad14;border:1px solid #ffe58f}.tag-danger{background:#fff2f0;color:#ff4d4f;border:1px solid #ffccc7}.tag-info{background:#e6f7ff;color:#1677ff;border:1px solid #91d5ff}.radio-group{display:flex;gap:16px;flex-wrap:wrap}.radio-label{display:flex;align-items:center;gap:6px;cursor:pointer;font-size:14px}.checkbox-group{display:flex;gap:16px;flex-wrap:wrap}.checkbox-label{display:flex;align-items:center;gap:6px;cursor:pointer;font-size:14px}.action-bar{display:flex;gap:12px;margin-top:24px;padding-top:16px;border-top:1px solid var(--border)}.search-bar{display:flex;gap:12px;flex-wrap:wrap;align-items:flex-end;margin-bottom:16px}.search-bar .form-group{margin-bottom:0;min-width:180px}.pagination{display:flex;align-items:center;justify-content:flex-end;gap:8px;margin-top:16px;font-size:14px}.pagination button{padding:4px 12px;border:1px solid var(--border);background:white;border-radius:4px;cursor:pointer}.pagination button.active{background:var(--primary);color:white;border-color:var(--primary)}.pagination button:disabled{opacity:.5;cursor:not-allowed}.workflow-steps{gap:0;margin:16px 0;overflow-x:auto;padding:8px 0}.workflow-step,.workflow-steps{display:flex;align-items:center}.workflow-step{flex-direction:column;min-width:120px;position:relative}.workflow-step .step-circle{width:32px;height:32px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:14px;font-weight:600;border:2px solid var(--border);background:white;color:#999;z-index:1}.workflow-step.completed .step-circle{background:var(--success);border-color:var(--success);color:white}.workflow-step.current .step-circle{background:var(--primary);border-color:var(--primary);color:white;animation:pulse 2s infinite}.workflow-step.rejected .step-circle{background:var(--danger);border-color:var(--danger);color:white}.workflow-step .step-name{font-size:12px;margin-top:8px;color:#666;text-align:center}.workflow-step .step-approver{font-size:11px;color:#999;margin-top:2px}.workflow-connector{flex:1;height:2px;background:var(--border);min-width:40px;margin-bottom:24px}.workflow-connector.completed{background:var(--success)}@keyframes pulse{0%{box-shadow:0 0 0 0 rgba(22,119,255,.4)}70%{box-shadow:0 0 0 8px rgba(22,119,255,0)}to{box-shadow:0 0 0 0 rgba(22,119,255,0)}}.user-selector{position:relative}.user-selector-dropdown{position:absolute;top:100%;left:0;right:0;background:white;border:1px solid var(--border);border-radius:6px;box-shadow:0 4px 12px rgba(0,0,0,.1);z-index:200;max-height:300px;overflow-y:auto;margin-top:4px}.user-selector-item{padding:8px 12px;cursor:pointer;display:flex;align-items:center;gap:8px;font-size:14px}.user-selector-item:hover{background:#f5f5f5}.user-selector-item .dept-tag{font-size:11px;color:#999;background:#f0f0f0;padding:1px 6px;border-radius:3px}.modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.45);z-index:1000;display:flex;align-items:center;justify-content:center}.modal{background:white;border-radius:8px;width:90%;max-width:600px;max-height:80vh;overflow-y:auto;padding:24px}.modal-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.modal-header h3{margin:0;font-size:16px}.stats-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:24px}.stat-card{background:white;border-radius:8px;padding:20px;box-shadow:0 1px 2px rgba(0,0,0,.04)}.stat-card .stat-value{font-size:28px;font-weight:700;color:#333}.stat-card .stat-label{font-size:14px;color:#999;margin-top:4px}.stat-card .stat-icon{font-size:24px;float:right;opacity:.6}@media (max-width:768px){.mobile-menu-btn,.sidebar-overlay{display:block!important}.sidebar{width:280px;transform:translateX(-100%);transition:transform .3s ease}.sidebar.open{transform:translateX(0)}.main-content{margin-left:0}.top-bar{padding:10px 16px}.top-bar .user-info{gap:8px}.top-bar .avatar{width:28px;height:28px;font-size:12px}.page-content{padding:16px}.form-grid,.form-grid-3,.form-grid-4{grid-template-columns:1fr}.stats-grid{grid-template-columns:repeat(2,1fr)}.data-table{min-width:600px}.table-wrapper{overflow-x:auto;-webkit-overflow-scrolling:touch}.card{padding:16px}.login-card{width:90%;padding:24px}.btn{padding:10px 16px}}