.cleaning-shell{min-height:calc(100vh - 86px);padding:16px;background:#f4f6f8;color:#303133}.cleaning-shell__header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;min-height:86px;padding:18px 24px;border:1px solid #ebeef5;border-radius:4px;background:#fff}.cleaning-shell__eyebrow{margin-bottom:3px;color:#409eff;font-size:12px;font-weight:700;letter-spacing:.12em}.cleaning-shell__header h1{margin:0;color:#303133;font-size:23px;font-weight:650}.cleaning-shell__header p{margin:7px 0 0;color:#909399;font-size:13px}.cleaning-shell__actions{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px}.cleaning-shell__body{margin-top:14px}.cleaning-panel{padding:18px;border:1px solid #ebeef5;border-radius:4px;background:#fff}.cleaning-filter{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:10px;margin-bottom:15px}.cleaning-filter .el-input,.cleaning-filter .el-select{width:190px}.cleaning-metrics{display:grid;grid-template-columns:repeat(5,minmax(120px,1fr));gap:12px;margin-bottom:14px}.cleaning-metric{padding:15px 17px;border:1px solid #ebeef5;border-radius:4px;background:#fff}.cleaning-metric__label{color:#909399;font-size:12px}.cleaning-metric__value{margin-top:5px;color:#303133;font-size:24px;font-weight:650}.cleaning-toolbar{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;margin-bottom:14px}.cleaning-muted{color:#909399}.cleaning-class-picker__toolbar{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:10px 14px;border:1px solid #dbe6f1;background:#f8fbfe}.cleaning-class-picker__toolbar>span{color:#718398;font-size:12px}.cleaning-grade-groups{max-height:320px;overflow-y:auto;padding-right:4px}.cleaning-grade-group{margin-top:12px;border:1px solid #e4ebf2}.cleaning-grade-group__header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;min-height:42px;padding:0 14px;background:#f5f7fa}.cleaning-grade-group__header strong{margin-right:8px;color:#303133;font-size:14px}.cleaning-grade-group__header span{color:#909399;font-size:12px}.cleaning-class-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:12px 16px;padding:14px}.cleaning-class-list .el-checkbox{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-right:0}.cleaning-class-empty{padding:24px 12px;border:1px dashed #dcdfe6;color:#909399;text-align:center}.cleaning-class-empty+.cleaning-muted,.cleaning-class-picker+.cleaning-muted{margin-top:8px;font-size:12px}.cleaning-success{color:#23864e;font-weight:600}.cleaning-danger{color:#d85a54;font-weight:600}.cleaning-photo-frame{position:relative;display:inline-block;width:84px;height:64px;margin:0 8px 8px 0;border-radius:5px;overflow:hidden;background:#f2f5f8;vertical-align:middle}.cleaning-photo-button{display:block;width:100%;height:100%;padding:0;border:0;background:transparent;cursor:pointer}.cleaning-photo-button:disabled{cursor:default}.cleaning-photo{display:block;width:100%;height:100%;border-radius:5px;-o-object-fit:cover;object-fit:cover;opacity:0;-webkit-transition:opacity .18s ease;transition:opacity .18s ease}.cleaning-photo.is-ready{opacity:1}.cleaning-photo-status{position:absolute;z-index:2;inset:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:4px;width:100%;height:100%;padding:0;border:0;color:#8a98a8;font-size:11px;line-height:14px}.cleaning-photo-status.is-loading{background:linear-gradient(110deg,#f2f5f8 28%,#e8edf3 40%,#f2f5f8 52%);background-size:220% 100%;-webkit-animation:cleaning-photo-shimmer 1.35s ease-in-out infinite;animation:cleaning-photo-shimmer 1.35s ease-in-out infinite;pointer-events:none}.cleaning-photo-status.is-loading i{color:#409eff;font-size:16px}.cleaning-photo-status.is-error{background:#fdf3f3;color:#d85a54;cursor:pointer}.cleaning-photo-status.is-error:focus,.cleaning-photo-status.is-error:hover{background:#fde9e9;outline:2px solid rgba(245,108,108,.28);outline-offset:-2px}@-webkit-keyframes cleaning-photo-shimmer{0%{background-position:100% 0}to{background-position:-100% 0}}@keyframes cleaning-photo-shimmer{0%{background-position:100% 0}to{background-position:-100% 0}}.cleaning-empty{padding:34px 12px;color:#9aa59d;text-align:center}.cleaning-descriptions{margin-top:4px}.cleaning-section-title{margin:22px 0 12px;color:#303133;font-size:15px;font-weight:650}.cleaning-class-tags{-ms-flex-wrap:wrap;flex-wrap:wrap;gap:8px}.cleaning-class-tags,.cleaning-task-summary{display:-webkit-box;display:-ms-flexbox;display:flex}.cleaning-task-summary{-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:18px;min-height:38px;margin-bottom:12px;padding:8px 12px;border-radius:6px;background:#f7faf8}.cleaning-submission-meta{margin-top:10px;color:#7a877e;font-size:12px;line-height:1.8}.cleaning-history{margin-top:16px}.cleaning-history-item{margin-bottom:16px;padding:12px;border:1px solid #e6ece8;border-radius:6px;background:#fafcfb}.cleaning-excellent-actions{display:-webkit-box;display:-ms-flexbox;display:flex;gap:12px;margin-top:15px}.cleaning-excellent-actions .el-button{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.cleaning-record-filters{display:-webkit-box;display:-ms-flexbox;display:flex;gap:10px}.cleaning-record-filters .el-select{width:170px}.cleaning-audit-json{display:grid;grid-template-columns:90px 1fr;gap:10px 14px;padding:10px 22px}.cleaning-audit-json pre{max-height:260px;margin:0;padding:10px;overflow:auto;border-radius:5px;background:#f5f7f5;white-space:pre-wrap;word-break:break-word}.cleaning-revision-photo-panel{width:208px;margin:0 auto;text-align:left}.cleaning-revision-photo-header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;margin-bottom:8px;color:#4d5661;font-size:12px;font-weight:600;line-height:18px}.cleaning-revision-photo-count{padding:0 6px;border-radius:9px;background:#ecf5ff;color:#409eff;font-size:11px;font-weight:500}.cleaning-revision-photo-count.is-full{background:#fdf6ec;color:#e6a23c}.cleaning-revision-photo-grid{display:grid;grid-template-columns:repeat(3,64px);gap:8px}.cleaning-revision-photo{position:relative;width:64px;height:54px;border:1px solid #d9e1ea;border-radius:5px;background:#f5f7fa}.cleaning-revision-photo__preview{position:relative;display:block;width:100%;height:100%;padding:0;border:0;border-radius:4px;overflow:hidden;background:transparent;cursor:pointer}.cleaning-revision-photo__preview img{display:block;width:100%;height:100%;-o-object-fit:cover;object-fit:cover;opacity:0;-webkit-transition:opacity .18s ease;transition:opacity .18s ease}.cleaning-revision-photo__preview img.is-ready{opacity:1}.cleaning-revision-photo__preview-icon{position:absolute;inset:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;background:rgba(20,29,38,.48);color:#fff;font-size:18px;opacity:0;pointer-events:none;-webkit-transition:opacity .18s ease;transition:opacity .18s ease}.cleaning-revision-photo__preview:focus .cleaning-revision-photo__preview-icon,.cleaning-revision-photo__preview:hover .cleaning-revision-photo__preview-icon{opacity:1}.cleaning-revision-photo-add:focus,.cleaning-revision-photo__preview:focus{outline:2px solid rgba(64,158,255,.35);outline-offset:2px}.cleaning-revision-photo__remove{position:absolute;z-index:3;top:-6px;right:-6px;width:20px;height:20px;padding:0;border:2px solid #fff;border-radius:50%;background:#606266;-webkit-box-shadow:0 1px 3px rgba(31,45,61,.22);box-shadow:0 1px 3px rgba(31,45,61,.22);color:#fff;cursor:pointer;font-size:11px;line-height:16px}.cleaning-revision-photo .cleaning-photo-status{border-radius:4px;font-size:10px}.cleaning-revision-photo .cleaning-photo-status i{font-size:14px}.cleaning-revision-photo__remove:focus,.cleaning-revision-photo__remove:hover{background:#f56c6c;outline:none}.cleaning-revision-photo__pending{position:absolute;z-index:2;bottom:3px;left:3px;padding:1px 4px;border-radius:3px;background:rgba(64,158,255,.92);color:#fff;font-size:10px;line-height:14px;pointer-events:none}.cleaning-revision-photo-upload,.cleaning-revision-photo-upload .el-upload{display:block;width:64px;height:54px}.cleaning-revision-photo-add{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:4px;width:64px;height:54px;padding:0;border:1px dashed #b8c4d0;border-radius:5px;background:#fbfdff;color:#667789;cursor:pointer;font-size:12px;line-height:14px;-webkit-transition:border-color .18s ease,background-color .18s ease,color .18s ease;transition:border-color .18s ease,background-color .18s ease,color .18s ease}.cleaning-revision-photo-add i{color:#409eff;font-size:16px}.cleaning-revision-photo-add:hover{border-color:#409eff;background:#f2f8ff;color:#409eff}.cleaning-revision-photo-help{margin-top:7px;color:#909399;font-size:10px;line-height:16px}.cleaning-preview{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;min-height:420px;background:#f3f5f3}.cleaning-preview img{max-width:100%;max-height:68vh;-o-object-fit:contain;object-fit:contain}.cleaning-shell .el-button.is-circle{width:32px;min-width:32px;height:32px;min-height:32px;padding:0}@media (max-width:1100px){.cleaning-metrics{grid-template-columns:repeat(2,1fr)}.cleaning-shell__header{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:14px}}