.admin-root{display:flex;min-height:100vh;background:#f5f6f8;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Microsoft YaHei,sans-serif;color:#1f2329}.admin-sidebar{width:216px;flex:0 0 216px;background:#1d2129;color:#fff;display:flex;flex-direction:column;position:fixed;top:0;left:0;bottom:0;z-index:100}.admin-brand{padding:20px 20px 18px;border-bottom:1px solid rgba(255,255,255,.08)}.admin-brand-logo{font-size:22px;margin-right:8px}.admin-brand-name{font-size:16px;font-weight:600;letter-spacing:.5px}.admin-brand-sub{font-size:11px;color:#ffffff73;margin-top:6px}.admin-nav{flex:1;padding:12px 0;overflow-y:auto}.admin-nav-item{display:flex;align-items:center;gap:10px;padding:11px 20px;font-size:14px;color:#ffffffb3;cursor:pointer;border-left:3px solid transparent;transition:all .15s}.admin-nav-item:hover{background:#ffffff0f;color:#fff}.admin-nav-item.active{background:#1677ff29;color:#fff;border-left-color:#1677ff}.admin-nav-icon{font-size:16px;width:20px;text-align:center}.admin-nav-badge{margin-left:auto;background:#ff4d4f;color:#fff;font-size:11px;padding:1px 6px;border-radius:9px;min-width:18px;text-align:center}.admin-sidebar-footer{padding:14px 20px;border-top:1px solid rgba(255,255,255,.08);font-size:12px;color:#ffffff73}.admin-main{flex:1;margin-left:216px;display:flex;flex-direction:column;min-width:0}.admin-topbar{height:56px;background:#fff;border-bottom:1px solid #e8eaed;display:flex;align-items:center;padding:0 24px;position:sticky;top:0;z-index:50}.admin-topbar-title{font-size:17px;font-weight:600}.admin-topbar-right{margin-left:auto;display:flex;align-items:center;gap:14px}.admin-user-chip{display:flex;align-items:center;gap:8px;font-size:13px;color:#4e5969}.admin-avatar{width:28px;height:28px;border-radius:50%;background:linear-gradient(135deg,#1677ff,#0958d9);color:#fff;display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:600}.admin-btn-text{background:none;border:none;color:#86909c;font-size:13px;cursor:pointer;padding:4px 8px;border-radius:4px}.admin-btn-text:hover{color:#1677ff;background:#f2f3f5}.admin-content{padding:22px 24px 40px;flex:1;overflow-x:auto}.admin-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px;margin-bottom:22px}.admin-stat-card{background:#fff;border-radius:8px;padding:18px 20px;box-shadow:0 1px 3px #0000000d}.admin-stat-label{font-size:13px;color:#86909c;margin-bottom:8px}.admin-stat-value{font-size:28px;font-weight:600;line-height:1.1}.admin-stat-extra{font-size:12px;color:#86909c;margin-top:8px}.admin-panel{background:#fff;border-radius:8px;box-shadow:0 1px 3px #0000000d;margin-bottom:20px;overflow:hidden}.admin-panel-head{padding:15px 20px;border-bottom:1px solid #f0f1f3;display:flex;align-items:center;gap:12px}.admin-panel-title{font-size:15px;font-weight:600}.admin-panel-desc{font-size:12px;color:#86909c}.admin-panel-body{padding:18px 20px}.admin-table{width:100%;border-collapse:collapse;font-size:13px}.admin-table th{text-align:left;padding:11px 16px;background:#fafbfc;color:#4e5969;font-weight:600;border-bottom:1px solid #f0f1f3;white-space:nowrap}.admin-table td{padding:12px 16px;border-bottom:1px solid #f5f6f8;vertical-align:middle}.admin-table tbody tr:hover{background:#fafbfc}.admin-table-empty{padding:48px 16px;text-align:center;color:#a9aeb8;font-size:14px}.admin-btn{display:inline-flex;align-items:center;gap:6px;padding:7px 14px;font-size:13px;border-radius:6px;border:1px solid #d9dce1;background:#fff;color:#1f2329;cursor:pointer;transition:all .15s;white-space:nowrap}.admin-btn:hover{border-color:#1677ff;color:#1677ff}.admin-btn-primary{background:#1677ff;border-color:#1677ff;color:#fff}.admin-btn-primary:hover{background:#4096ff;border-color:#4096ff;color:#fff}.admin-btn-danger{color:#ff4d4f;border-color:#ffccc7}.admin-btn-danger:hover{background:#fff2f0;border-color:#ff4d4f;color:#ff4d4f}.admin-btn-sm{padding:4px 10px;font-size:12px}.admin-btn:disabled{opacity:.5;cursor:not-allowed}.admin-field{margin-bottom:16px}.admin-field label{display:block;font-size:13px;color:#4e5969;margin-bottom:6px}.admin-field .req{color:#ff4d4f;margin-left:2px}.admin-input,.admin-select,.admin-textarea{width:100%;padding:8px 11px;font-size:13px;border:1px solid #d9dce1;border-radius:6px;outline:none;box-sizing:border-box;font-family:inherit}.admin-input:focus,.admin-select:focus,.admin-textarea:focus{border-color:#1677ff;box-shadow:0 0 0 2px #1677ff1a}.admin-textarea{min-height:80px;resize:vertical}.admin-grid-2{display:grid;grid-template-columns:1fr 1fr;gap:0 16px}.admin-tag{display:inline-block;padding:2px 8px;font-size:12px;border-radius:4px;line-height:18px;white-space:nowrap}.admin-tag-blue{background:#e6f4ff;color:#1677ff}.admin-tag-green{background:#f6ffed;color:#52c41a}.admin-tag-orange{background:#fff7e6;color:#fa8c16}.admin-tag-red{background:#fff2f0;color:#ff4d4f}.admin-tag-gray{background:#f2f3f5;color:#86909c}.admin-tag-purple{background:#f9f0ff;color:#722ed1}.admin-modal-mask{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000073;display:flex;align-items:center;justify-content:center;z-index:1000;padding:20px}.admin-modal{background:#fff;border-radius:10px;width:560px;max-width:100%;max-height:88vh;display:flex;flex-direction:column;box-shadow:0 8px 28px #0003}.admin-modal-head{padding:16px 20px;border-bottom:1px solid #f0f1f3;font-size:16px;font-weight:600}.admin-modal-body{padding:20px;overflow-y:auto;flex:1}.admin-modal-foot{padding:14px 20px;border-top:1px solid #f0f1f3;display:flex;justify-content:flex-end;gap:10px}.admin-toolbar{display:flex;align-items:center;gap:10px;margin-bottom:16px;flex-wrap:wrap}.admin-search{width:240px}.admin-filters{display:flex;gap:6px}.admin-filter-chip{padding:5px 12px;font-size:13px;border:1px solid #d9dce1;background:#fff;border-radius:16px;cursor:pointer;color:#4e5969}.admin-filter-chip.active{background:#1677ff;border-color:#1677ff;color:#fff}.admin-spacer{flex:1}.admin-empty{text-align:center;padding:60px 20px}.admin-empty-icon{font-size:44px;margin-bottom:12px;opacity:.35}.admin-empty-text{color:#86909c;font-size:14px;margin-bottom:16px}.admin-notice{display:flex;align-items:center;gap:10px;padding:12px 16px;border-radius:6px;font-size:13px;margin-bottom:16px}.admin-notice-warn{background:#fffbe6;border:1px solid #ffe58f;color:#ad6800}.admin-notice-info{background:#e6f4ff;border:1px solid #91caff;color:#0958d9}.admin-list-row{display:flex;align-items:center;gap:12px;padding:11px 0;border-bottom:1px solid #f5f6f8;font-size:13px}.admin-list-row:last-child{border-bottom:none}.admin-row-actions{display:flex;gap:6px;justify-content:flex-end}.admin-checks{display:flex;flex-wrap:wrap;gap:8px}.admin-check{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;border:1px solid #d9dce1;border-radius:6px;font-size:13px;cursor:pointer;-webkit-user-select:none;user-select:none}.admin-check.active{border-color:#1677ff;background:#e6f4ff;color:#1677ff}@media(max-width:1100px){.admin-sidebar{width:64px;flex-basis:64px}.admin-main{margin-left:64px}.admin-nav-label,.admin-brand-sub,.admin-sidebar-footer{display:none}.admin-nav-item{justify-content:center;padding:12px 0}.admin-brand{text-align:center;padding:18px 0 14px}}:root{--primary: #1677ff;--primary-dark: #0958d9;--primary-light: #e6f4ff;--danger: #ff4d4f;--danger-light: #fff2f0;--warning: #faad14;--warning-light: #fffbe6;--success: #52c41a;--success-light: #f6ffed;--text-1: #1f1f1f;--text-2: #595959;--text-3: #8c8c8c;--bg-page: #f5f5f5;--bg-card: #ffffff;--border: #f0f0f0;--radius: 12px;--radius-sm: 8px;--shadow: 0 2px 8px rgba(0,0,0,.06)}*{margin:0;padding:0;box-sizing:border-box}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,sans-serif;background:var(--bg-page);color:var(--text-1);-webkit-font-smoothing:antialiased;font-size:14px;line-height:1.6}#root{max-width:480px;min-height:100vh;margin:0 auto;background:var(--bg-page);position:relative;box-shadow:0 0 40px #00000014}.page{padding-bottom:70px;min-height:100vh}.app-header{background:linear-gradient(135deg,var(--primary),var(--primary-dark));color:#fff;padding:12px 16px;display:flex;align-items:center;gap:12px;position:sticky;top:0;z-index:100;box-shadow:0 2px 8px #1677ff4d}.app-header .back-btn{background:#fff3;border:none;color:#fff;width:32px;height:32px;border-radius:8px;font-size:18px;cursor:pointer;display:flex;align-items:center;justify-content:center;flex-shrink:0}.app-header h1{font-size:17px;font-weight:600;flex:1}.app-header .header-action{background:#fff3;border:none;color:#fff;padding:6px 14px;border-radius:20px;font-size:13px;cursor:pointer}.bottom-nav{position:fixed;bottom:0;left:50%;transform:translate(-50%);width:100%;max-width:480px;background:#fff;display:flex;border-top:1px solid var(--border);z-index:100;padding-bottom:env(safe-area-inset-bottom)}.bottom-nav-item{flex:1;text-align:center;padding:8px 0;cursor:pointer;transition:color .2s;color:var(--text-3)}.bottom-nav-item.active{color:var(--primary)}.bottom-nav-item .nav-icon{font-size:22px;display:block;line-height:1.2}.bottom-nav-item .nav-label{font-size:11px;display:block;margin-top:2px}.card{background:var(--bg-card);border-radius:var(--radius);padding:16px;margin:12px 16px;box-shadow:var(--shadow)}.card-title{font-size:15px;font-weight:600;margin-bottom:12px;display:flex;align-items:center;justify-content:space-between}.stats-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;padding:12px 16px}.stat-item{background:#fff;border-radius:var(--radius-sm);padding:12px 4px;text-align:center;box-shadow:var(--shadow)}.stat-item .stat-num{font-size:22px;font-weight:700;color:var(--primary);line-height:1.2}.stat-item .stat-num.danger{color:var(--danger)}.stat-item .stat-num.warning{color:var(--warning)}.stat-item .stat-label{font-size:11px;color:var(--text-3);margin-top:4px}.employee-item{display:flex;align-items:center;gap:12px;padding:14px 16px;background:#fff;border-bottom:1px solid var(--border);cursor:pointer;transition:background .15s}.employee-item:active{background:#f5f5f5}.employee-item .avatar{width:44px;height:44px;border-radius:50%;background:var(--primary-light);color:var(--primary);display:flex;align-items:center;justify-content:center;font-size:16px;font-weight:600;flex-shrink:0}.employee-item .avatar.male{background:#e6f4ff;color:#1677ff}.employee-item .avatar.female{background:#fff0f6;color:#eb2f96}.employee-item .emp-info{flex:1;min-width:0}.employee-item .emp-name{font-size:15px;font-weight:500;display:flex;align-items:center;gap:6px}.employee-item .emp-meta{font-size:12px;color:var(--text-3);margin-top:2px}.tag{display:inline-block;padding:1px 8px;border-radius:4px;font-size:11px;font-weight:500;line-height:20px}.tag-blue{background:var(--primary-light);color:var(--primary)}.tag-green{background:var(--success-light);color:var(--success)}.tag-orange{background:var(--warning-light);color:var(--warning)}.tag-red{background:var(--danger-light);color:var(--danger)}.tag-gray{background:#f5f5f5;color:var(--text-3)}.reminder-banner{background:linear-gradient(135deg,#fff9e6,#fff3cd);border-left:3px solid var(--warning);padding:12px 16px;display:flex;align-items:center;gap:10px;cursor:pointer}.reminder-banner.danger{background:linear-gradient(135deg,#fff1f0,#ffe0e0);border-left-color:var(--danger)}.reminder-banner .reminder-icon{font-size:24px;flex-shrink:0}.reminder-banner .reminder-text{flex:1;font-size:13px;color:var(--text-2)}.reminder-banner .reminder-text strong{color:var(--text-1)}.form-group{padding:0 16px;margin-bottom:12px}.form-group label{display:block;font-size:13px;color:var(--text-2);margin-bottom:6px;font-weight:500}.form-group label .required{color:var(--danger);margin-left:2px}.form-input,.form-select,.form-textarea{width:100%;padding:10px 14px;border:1px solid #e8e8e8;border-radius:var(--radius-sm);font-size:14px;background:#fff;transition:border-color .2s;font-family:inherit}.form-input:focus,.form-select:focus,.form-textarea:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 2px var(--primary-light)}.form-textarea{min-height:80px;resize:vertical}.form-row{display:flex;gap:12px}.form-row .form-group{flex:1}.btn{display:inline-flex;align-items:center;justify-content:center;padding:10px 20px;border-radius:var(--radius-sm);font-size:14px;font-weight:500;border:none;cursor:pointer;transition:all .2s;gap:6px}.btn-primary{background:var(--primary);color:#fff}.btn-primary:active{background:var(--primary-dark)}.btn-block{width:100%}.btn-outline{background:#fff;border:1px solid var(--border);color:var(--text-2)}.btn-danger{background:var(--danger);color:#fff}.btn-success{background:var(--success);color:#fff}.btn-lg{padding:13px 24px;font-size:15px}.login-page{min-height:100vh;background:linear-gradient(180deg,var(--primary) 0%,var(--primary-dark) 40%,var(--bg-page) 40%);display:flex;flex-direction:column;align-items:center;padding:60px 24px 24px}.login-logo{width:72px;height:72px;background:#fff3;border-radius:20px;display:flex;align-items:center;justify-content:center;font-size:36px;margin-bottom:16px}.login-title{color:#fff;font-size:22px;font-weight:600;margin-bottom:4px}.login-subtitle{color:#ffffffb3;font-size:13px;margin-bottom:32px}.login-card{width:100%;background:#fff;border-radius:16px;padding:24px 20px;box-shadow:0 8px 32px #0000001a}.login-demo{margin-top:16px;padding:12px;background:var(--primary-light);border-radius:var(--radius-sm);font-size:12px;color:var(--text-2);line-height:1.8}.login-demo .demo-account{cursor:pointer;display:flex;justify-content:space-between;padding:2px 0}.login-demo .demo-account:active{color:var(--primary)}.detail-section{background:#fff;margin:12px 16px;border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow)}.detail-row{display:flex;padding:12px 16px;border-bottom:1px solid var(--border);font-size:14px}.detail-row:last-child{border-bottom:none}.detail-row .label{color:var(--text-3);width:100px;flex-shrink:0}.detail-row .value{color:var(--text-1);flex:1;font-weight:500}.contract-item{background:#fff;margin:12px 16px;border-radius:var(--radius);padding:16px;box-shadow:var(--shadow);cursor:pointer}.contract-item .contract-title{font-size:15px;font-weight:600;margin-bottom:8px}.contract-item .contract-meta{font-size:12px;color:var(--text-3);display:flex;gap:12px;flex-wrap:wrap}.contract-content{background:#fff;margin:0;padding:20px 16px;white-space:pre-wrap;font-size:14px;line-height:1.8;color:var(--text-2)}.sign-area{background:#fff;padding:24px 16px;text-align:center}.signature-pad{border:2px dashed #d9d9d9;border-radius:var(--radius-sm);height:160px;display:flex;align-items:center;justify-content:center;margin:16px 0;background:#fafafa;cursor:crosshair;position:relative;overflow:hidden}.signature-pad canvas{width:100%;height:100%}.sign-steps{padding:16px}.sign-step{display:flex;gap:12px;padding:10px 0;border-bottom:1px solid var(--border)}.sign-step:last-child{border-bottom:none}.sign-step .step-num{width:24px;height:24px;border-radius:50%;background:var(--primary-light);color:var(--primary);display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:600;flex-shrink:0}.sign-step .step-num.done{background:var(--success);color:#fff}.sign-step .step-content{flex:1}.sign-step .step-title{font-size:14px;font-weight:500}.sign-step .step-desc{font-size:12px;color:var(--text-3);margin-top:2px}.empty-state{text-align:center;padding:60px 20px;color:var(--text-3)}.empty-state .empty-icon{font-size:48px;margin-bottom:12px}.toast{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);background:#000c;color:#fff;padding:12px 24px;border-radius:8px;font-size:14px;z-index:9999;pointer-events:none;animation:toastShow .3s ease}@keyframes toastShow{0%{opacity:0;transform:translate(-50%,-40%)}to{opacity:1;transform:translate(-50%,-50%)}}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000080;z-index:200;display:flex;align-items:flex-end;justify-content:center}.modal-content{background:#fff;width:100%;max-width:480px;border-radius:16px 16px 0 0;max-height:85vh;overflow-y:auto;animation:modalSlideUp .3s ease}@keyframes modalSlideUp{0%{transform:translateY(100%)}to{transform:translateY(0)}}.modal-header{display:flex;justify-content:space-between;align-items:center;padding:16px;border-bottom:1px solid var(--border);position:sticky;top:0;background:#fff;z-index:1}.modal-header h3{font-size:16px;font-weight:600}.modal-close{background:none;border:none;font-size:22px;color:var(--text-3);cursor:pointer;padding:0 4px}.modal-body{padding:16px}.legal-notice{background:var(--primary-light);border:1px solid #91caff;border-radius:var(--radius-sm);padding:14px;margin:12px 16px}.legal-notice h4{font-size:14px;color:var(--primary);margin-bottom:8px;display:flex;align-items:center;gap:4px}.legal-notice ul{list-style:none;padding:0}.legal-notice li{font-size:12px;color:var(--text-2);line-height:1.8;padding-left:14px;position:relative}.legal-notice li:before{content:"•";position:absolute;left:0;color:var(--primary)}.search-bar{padding:10px 16px;background:#fff;position:sticky;top:52px;z-index:50}.search-bar input{width:100%;padding:8px 14px;background:var(--bg-page);border:none;border-radius:20px;font-size:13px}.search-bar input:focus{outline:none;background:#fff;box-shadow:0 0 0 2px var(--primary-light)}.segment{display:flex;background:#f0f0f0;border-radius:8px;padding:2px;margin:12px 16px}.segment-item{flex:1;text-align:center;padding:6px;font-size:13px;border-radius:6px;cursor:pointer;color:var(--text-2);transition:all .2s}.segment-item.active{background:#fff;color:var(--primary);font-weight:500;box-shadow:0 1px 3px #0000001a}.log-item{display:flex;gap:10px;padding:10px 16px;border-bottom:1px solid var(--border)}.log-item .log-dot{width:8px;height:8px;border-radius:50%;background:var(--primary);margin-top:6px;flex-shrink:0}.log-item .log-dot.success{background:var(--success)}.log-item .log-dot.warning{background:var(--warning)}.log-item .log-content{flex:1;font-size:13px}.log-item .log-detail{color:var(--text-1)}.log-item .log-time{color:var(--text-3);font-size:11px;margin-top:2px}.filter-chips{display:flex;gap:8px;padding:8px 16px;overflow-x:auto;-webkit-overflow-scrolling:touch}.filter-chips::-webkit-scrollbar{display:none}.chip{padding:4px 14px;border-radius:16px;font-size:12px;white-space:nowrap;background:#fff;color:var(--text-2);border:1px solid var(--border);cursor:pointer;flex-shrink:0}.chip.active{background:var(--primary);color:#fff;border-color:var(--primary)}.progress-bar{height:6px;background:#f0f0f0;border-radius:3px;overflow:hidden}.progress-bar .progress-fill{height:100%;border-radius:3px;transition:width .3s}
