body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";margin:0;padding:20px;background-color:#f7f8fa;color:#333}#root{display:flex;flex-direction:column;height:calc(100vh - 40px)}.app-container{width:1280px;max-width:100%;margin:auto;padding:20px;background-color:#fff;border-radius:8px;box-shadow:0 2px 8px #0000000d;display:flex;flex-direction:column;flex-grow:1}.header{display:flex;justify-content:space-between;align-items:center;padding-bottom:20px;border-bottom:1px solid #eee;margin-bottom:20px}.header h1{font-size:24px;margin:0;color:#2c3e50}.header .header-nav-right{display:flex;align-items:center;gap:20px}.header nav a{margin-left:20px;text-decoration:none;color:#555;font-size:14px;transition:color .2s}.header nav a:hover{color:#409eff}.header nav a.active{color:#409eff;font-weight:500}.user-info-display{font-size:14px;color:#606266}.main-content{display:flex;gap:20px;flex-grow:1;min-height:0}.panel{border:1px solid #dcdfe6;border-radius:4px;padding:20px;background-color:#fff;display:flex;flex-direction:column}.left-panel{flex:1;min-width:250px;max-width:300px;justify-content:space-between}.right-panel{flex:3;overflow:hidden}.supplier-search{display:flex;align-items:center;margin-bottom:15px;border:1px solid #dcdfe6;border-radius:4px;padding:0 5px 0 10px}.supplier-search label{font-size:14px;margin-right:10px;white-space:nowrap;color:#606266}.supplier-search input{width:100%;height:36px;border:none;font-size:14px;outline:none;flex-grow:1;background:transparent;color:#333}.supplier-search .add-btn{background:none;border:none;color:#909399;cursor:pointer;font-size:24px;font-weight:300;padding:0 10px;line-height:1;transition:color .2s}.supplier-search .add-btn:hover{color:#409eff}.supplier-search .add-btn.active-add{color:#67c23a;font-weight:700}.supplier-search .add-btn.active-add:hover{color:#5cb85c}.supplier-list{list-style:none;padding:0;margin:0;overflow-y:auto;flex-grow:1}.supplier-list li{padding:12px 10px;cursor:pointer;border-radius:4px;margin-bottom:5px;font-size:14px;transition:background-color .2s}.supplier-list li:hover{background-color:#f2f6fc}.supplier-list li.selected{background-color:#ecf5ff;color:#409eff;font-weight:500}.tag-filter{margin-top:15px;padding-top:15px;border-top:1px solid #eee}.tag-filter-title{color:#606266;font-size:14px;margin:0 0 10px;font-weight:400}.tag-list{display:flex;flex-wrap:wrap;gap:8px;align-items:center;max-height:150px;overflow-y:auto}.tag-btn{background-color:#fff;border:1px solid #dcdfe6;border-radius:4px;padding:4px 8px;font-size:12px;cursor:pointer;transition:all .2s;color:#606266}.tag-btn:hover{border-color:#c6e2ff;background-color:#f2f6fc}.tag-btn.selected{background-color:#ecf5ff;color:#409eff;border-color:#b3d8ff}.details-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:15px;flex-shrink:0}.details-title-group{display:flex;align-items:center;gap:15px}.supplier-name{font-size:20px;font-weight:600;margin:0;color:#303133}.btn-text{background:none;border:none;color:#409eff;cursor:pointer;font-size:14px;padding:0;font-weight:500}.btn-text:hover{text-decoration:underline}.status-toggle a{margin-left:10px;text-decoration:none;font-size:14px;color:#909399}.status-toggle a.active{color:#67c23a;font-weight:500}.status-toggle a.active.inactive{color:#f56c6c}.details-tags{display:flex;align-items:center;gap:10px;margin-bottom:15px;padding-bottom:15px;border-bottom:1px solid #eee;flex-wrap:wrap}.details-tags>span{font-size:14px;color:#606266}.tags-container{display:flex;gap:10px;flex-wrap:wrap;align-items:center}.tag-item{display:inline-flex;align-items:center;background-color:#f4f4f5;border:1px solid #e9e9eb;border-radius:4px;padding:2px 8px;font-size:12px;color:#606266}.tag-item button{background:none;border:none;color:#909399;cursor:pointer;font-size:14px;margin-left:5px;padding:0;line-height:1}.tag-item button:hover{color:#333}.tag-input{border:1px solid #409eff;border-radius:4px;padding:2px 7px;font-size:12px;width:90px;outline:none;box-sizing:border-box;height:22px}.btn-add-tag{background-color:#67c23a;color:#fff;border:none;border-radius:4px;width:22px;height:22px;font-size:16px;font-weight:400;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;line-height:1;transition:background-color .2s}.btn-add-tag:hover{background-color:#85d862}.table-wrapper{overflow:auto;flex-grow:1;margin-bottom:20px}.details-table{width:100%;border-collapse:collapse;font-size:14px;table-layout:fixed}.details-table th,.details-table td{border:1px solid #dcdfe6;padding:8px;text-align:left;vertical-align:middle;word-wrap:break-word}.details-table th{background-color:#409eff;color:#fff;position:sticky;top:0;z-index:1}.details-table tbody tr:nth-child(2n){background-color:#f9fafc}.details-table input,.details-table select{width:100%;padding:6px;font-size:14px;border:1px solid #dcdfe6;border-radius:4px;box-sizing:border-box;background-color:#fff;color:#333}.details-table input:focus,.details-table select:focus{outline:none;border-color:#409eff;box-shadow:0 0 0 1px #409eff}.details-table select:disabled{background-color:#f5f7fa;cursor:not-allowed}.unit-input{display:flex;align-items:center}.unit-input input{flex-grow:1;border-top-right-radius:0;border-bottom-right-radius:0;border-right:none}.unit-input input:disabled{background-color:#f5f7fa;cursor:not-allowed}.unit-input span{padding:0 8px;background-color:#f5f7fa;border:1px solid #dcdfe6;border-left:none;border-top-right-radius:4px;border-bottom-right-radius:4px;font-size:12px;color:#909399;white-space:nowrap;height:32px;line-height:30px;box-sizing:border-box}.details-table .col-unit-emission{width:15%}.details-table .col-remarks{width:30%}.details-table .col-actions{width:80px;text-align:center}.btn-remove-item,.btn-add-row{background:none;border:none;cursor:pointer;font-size:18px;font-weight:700;padding:4px 8px;line-height:1;margin:0 2px;border-radius:3px;min-width:24px;height:24px;display:inline-flex;align-items:center;justify-content:center}.btn-remove-item{color:#f56c6c;background-color:#fef0f0}.btn-remove-item:hover{color:#dd4a48;background-color:#fde2e2}.btn-add-row{color:#67c23a;background-color:#f0f9ff}.btn-add-row:hover{color:#529b2e;background-color:#e1f3d8}.details-actions{display:flex;justify-content:flex-end;align-items:center;gap:10px;margin-top:auto;flex-shrink:0;padding-top:15px;border-top:1px solid #eee}.action-buttons-right{display:flex;gap:10px}.btn-export,.btn-add-item,.btn-save,.btn-cancel,.btn-confirm{padding:8px 15px;border-radius:4px;cursor:pointer;font-size:14px;transition:all .2s;border:1px solid transparent}.btn-login{width:100%;padding:12px 15px;font-size:16px;background-color:#409eff;color:#fff;border-color:#409eff}.btn-login:hover{background-color:#66b1ff;border-color:#66b1ff}.btn-export{background-color:#f0f6ff;color:#409eff;border-color:#d2e7ff}.btn-export:hover{background-color:#e4f0ff;border-color:#c0d9f8}.btn-add-item,.btn-save,.btn-confirm{background-color:#409eff;color:#fff;border-color:#409eff}.btn-add-item:hover,.btn-save:hover,.btn-confirm:hover{background-color:#66b1ff;border-color:#66b1ff}.btn-cancel{background-color:#fff;color:#606266;border-color:#dcdfe6}.btn-cancel:hover{background-color:#f2f6fc;color:#409eff;border-color:#c6e2ff}.footer{padding-top:20px;border-top:1px solid #eee;margin-top:20px;display:flex;align-items:center;gap:20px;font-size:12px;color:#666;flex-wrap:wrap;flex-shrink:0}.db-status{display:flex;align-items:center;gap:5px}.progress-bar{width:100px;height:10px;background-color:#ebeef5;border:1px solid #dcdfe6;border-radius:5px;overflow:hidden;display:flex}.progress-bar-inner{height:100%;background-color:#67c23a}.modal-backdrop{position:fixed;top:0;left:0;right:0;bottom:0;background-color:#00000080;display:flex;justify-content:center;align-items:center;z-index:1000}.modal-dialog{background:#fff;padding:25px 30px;border-radius:8px;box-shadow:0 5px 15px #0000004d;width:100%;max-width:450px}.modal-dialog h3{margin-top:0;margin-bottom:25px;font-size:20px;font-weight:600;color:#303133;text-align:left}.modal-content-item{margin-bottom:15px;font-size:14px}.modal-content-item strong{color:#303133;margin-right:8px}.modal-content-item span{color:#606266}.modal-content-item .role-admin{color:#e6a23c;font-weight:500}.modal-content-item .role-user{color:#409eff;font-weight:500}.modal-dialog form label{display:block;margin-bottom:8px;font-size:14px;color:#606266;font-weight:500}.modal-dialog form input,.modal-dialog form textarea{width:100%;padding:10px 12px;font-size:14px;border:1px solid #dcdfe6;border-radius:4px;box-sizing:border-box;margin-bottom:15px;background-color:#fff;color:#333;transition:border-color .2s}.modal-dialog form input:focus,.modal-dialog form textarea:focus{outline:none;border-color:#409eff}.modal-dialog form textarea{resize:vertical}.modal-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:10px}.login-container{display:flex;align-items:center;justify-content:center;height:100vh;background-color:#f7f8fa}.login-form{width:100%;max-width:360px;padding:30px 40px;background:#fff;border-radius:8px;box-shadow:0 4px 12px #0000001a}.login-form h2{text-align:center;margin-bottom:25px;font-size:22px;color:#303133}.login-form .input-group{margin-bottom:20px}.login-form label{display:block;margin-bottom:5px;font-size:14px;color:#606266}.login-form input{width:100%;padding:10px 12px;font-size:14px;border:1px solid #dcdfe6;border-radius:4px;box-sizing:border-box;transition:border-color .2s;background-color:#f9fafc;color:#303133}.login-form input:focus{outline:none;border-color:#409eff}.login-error{color:#f56c6c;font-size:13px;margin-bottom:15px;text-align:center;height:18px}.diagnostic-panel{max-width:800px;max-height:90vh;overflow-y:auto}.diagnostic-content{padding:20px;font-size:14px}.diagnostic-section{margin-bottom:25px;padding:15px;border:1px solid #e0e0e0;border-radius:8px;background:#fafafa}.diagnostic-section h3{margin:0 0 15px;color:#333;font-size:16px}.health-summary{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:10px;margin-top:10px}.health-summary p{margin:5px 0;padding:8px;background:#fff;border-radius:4px;border-left:3px solid #007bff}.status-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:10px;margin-bottom:15px}.status-item{padding:10px;background:#fff;border-radius:4px;border:1px solid #e0e0e0}.status-item span{font-weight:500}.kv-status{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:15px}.kv-item{padding:15px;background:#fff;border-radius:6px;border:1px solid #e0e0e0}.kv-item h4{margin:0 0 10px;font-size:14px;color:#333}.kv-item p{margin:5px 0;color:#666}.github-info{margin-top:10px;padding:10px;background:#fff;border-radius:4px;border:1px solid #e0e0e0}.github-info p{margin:5px 0;color:#666}.github-info strong{color:#333}.issues-list{margin-top:10px}.issue{margin:5px 0!important;padding:8px 12px;background:#fff3cd;border:1px solid #ffeaa7;border-radius:4px;color:#856404}.recommendations-list{margin-top:10px}.recommendation{margin:8px 0!important;padding:10px 12px;background:#d1ecf1;border:1px solid #bee5eb;border-radius:4px;color:#0c5460}.diagnostic-actions{padding:15px 20px;border-top:1px solid #e0e0e0;display:flex;gap:10px;justify-content:flex-end}.btn-refresh{background:#007bff;color:#fff;border:none;padding:8px 16px;border-radius:4px;cursor:pointer;font-size:14px}.btn-refresh:hover{background:#0056b3}.btn-close{background:#6c757d;color:#fff;border:none;padding:8px 16px;border-radius:4px;cursor:pointer;font-size:14px}.btn-close:hover{background:#545b62}.btn-retry{background:#dc3545;color:#fff;border:none;padding:8px 16px;border-radius:4px;cursor:pointer;font-size:14px;margin-top:10px}.btn-retry:hover{background:#c82333}.diagnostic-loading{padding:40px;text-align:center;color:#666}.diagnostic-error{padding:40px;text-align:center;color:#dc3545}@media (max-width: 768px){.diagnostic-panel{max-width:95vw;margin:10px}.status-grid,.kv-status,.health-summary{grid-template-columns:1fr}.diagnostic-actions{flex-direction:column}}.stats-panel{display:flex;flex-direction:column;gap:20px;overflow-y:auto;padding-right:10px;background-color:#f7f8fa;flex-grow:1}.stats-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:20px}.kpi-grid{grid-template-columns:repeat(4,1fr)}.stats-card{background-color:#fff;border:1px solid #dcdfe6;border-radius:4px;padding:20px;box-shadow:0 1px 3px #0000000d;display:flex;flex-direction:column}.stats-card h3{margin:0 0 15px;font-size:16px;color:#303133;font-weight:600;border-bottom:1px solid #eee;padding-bottom:10px}.kpi-card{text-align:center;justify-content:center}.kpi-card .value{font-size:32px;font-weight:700;color:#303133;margin:0;line-height:1.2}.kpi-card .label{font-size:14px;color:#909399;margin:5px 0 0}.chart-container{height:300px;position:relative;flex-grow:1}.leaderboard-table{width:100%;border-collapse:collapse;font-size:14px}.leaderboard-table th,.leaderboard-table td{border-bottom:1px solid #dcdfe6;padding:12px 10px;text-align:left}.leaderboard-table th{background-color:#f5f7fa;cursor:pointer;position:relative;font-weight:500;color:#606266;-webkit-user-select:none;user-select:none}.leaderboard-table th:hover{background-color:#ebeef5}.leaderboard-table th .sort-icon{display:inline-block;margin-left:5px;color:#909399;font-size:12px}.leaderboard-table tbody tr:hover{background-color:#f2f6fc}.stats-card-full-width{grid-column:1 / -1}.footnote{font-size:12px;color:#909399;margin-top:15px;text-align:right}
