.dashboard-chart[data-v-21c5c488] { width: 100%; height: 100%; min-height: 120px;
}

.dashboard-unavailable[data-v-4e681742] { height: 100%; min-height: 120px; display: -webkit-box; display: -ms-flexbox; display: flex; -webkit-box-orient: vertical; -webkit-box-direction: normal; -ms-flex-direction: column; flex-direction: column; -webkit-box-align: center; -ms-flex-align: center; align-items: center; -webkit-box-pack: center; -ms-flex-pack: center; justify-content: center; color: #96a3b5;
}
.dashboard-unavailable i[data-v-4e681742] { margin-bottom: 10px; font-size: 26px;
}
.dashboard-unavailable span[data-v-4e681742] { max-width: 80%; font-size: 12px; text-align: center;
}


.dashboard-skeleton[data-v-646d0442] { min-height: 328px;
}
.dashboard-skeleton__header[data-v-646d0442] { height: 50px; display: -webkit-box; display: -ms-flexbox; display: flex; -webkit-box-align: center; -ms-flex-align: center; align-items: center; padding: 0 15px; border-bottom: 1px solid #edf2f8;
}
.dashboard-skeleton__icon[data-v-646d0442] { width: 29px; height: 29px; margin-right: 8px; border-radius: 8px;
}
.dashboard-skeleton__title[data-v-646d0442] { width: 82px; height: 14px; border-radius: 7px;
}
.dashboard-skeleton__body[data-v-646d0442] { padding: 14px 15px;
}
.dashboard-skeleton__block[data-v-646d0442] { height: 72px; margin-bottom: 12px; border-radius: 8px;
}
.dashboard-skeleton__row[data-v-646d0442] { height: 22px; margin-top: 12px; border-radius: 6px;
}
.dashboard-skeleton__row[data-v-646d0442]:nth-child(3) { width: 88%;
}
.dashboard-skeleton__row[data-v-646d0442]:nth-child(4) { width: 72%;
}
.dashboard-skeleton__shimmer[data-v-646d0442] { position: relative; overflow: hidden; background: #edf1f6;
}
.dashboard-skeleton__shimmer[data-v-646d0442]::after { position: absolute; inset: 0; content: ""; -webkit-transform: translateX(-100%); transform: translateX(-100%); background: -webkit-gradient(linear, left top, right top, from(transparent), color-stop(rgba(255, 255, 255, .72)), to(transparent)); background: linear-gradient(90deg, transparent, rgba(255, 255, 255, .72), transparent); -webkit-animation: dashboard-skeleton-shimmer-646d0442 1.35s infinite; animation: dashboard-skeleton-shimmer-646d0442 1.35s infinite;
}
@-webkit-keyframes dashboard-skeleton-shimmer-646d0442 {
to { -webkit-transform: translateX(100%); transform: translateX(100%);
}
}
@keyframes dashboard-skeleton-shimmer-646d0442 {
to { -webkit-transform: translateX(100%); transform: translateX(100%);
}
}

.laboratory-dashboard{--primary: #2f7cff;--text: #263a55;--muted: #8797ad;min-height:calc(100vh - 92px);margin:-14px -10px -10px;padding:18px;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--text);background:#f2f6fc;font-family:"Microsoft YaHei", Arial, sans-serif}.laboratory-dashboard *{-webkit-box-sizing:border-box;box-sizing:border-box}.laboratory-dashboard .dashboard-heading{min-height:46px;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;gap:18px;margin-bottom:16px}.laboratory-dashboard .dashboard-heading::before,.laboratory-dashboard .dashboard-heading::after{content:"";-webkit-box-flex:0;-ms-flex:0 1 160px;flex:0 1 160px;height:1px;background:-webkit-gradient(linear, left top, right top, from(transparent), to(rgba(47,124,255,0.55)));background:linear-gradient(90deg, transparent, rgba(47,124,255,0.55))}.laboratory-dashboard .dashboard-heading::after{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.laboratory-dashboard .dashboard-heading h1{position:relative;margin:0;padding:0 8px 8px;color:#263a55;font-size:26px;line-height:36px;font-weight:700;letter-spacing:1px;text-align:center}.laboratory-dashboard .dashboard-heading h1::after{content:"";position:absolute;left:50%;bottom:0;width:44px;height:3px;border-radius:2px;background:-webkit-gradient(linear, left top, right top, from(#2f7cff), to(#25b7e8));background:linear-gradient(90deg, #2f7cff, #25b7e8);-webkit-transform:translateX(-50%);transform:translateX(-50%)}.laboratory-dashboard .dashboard-heading__placeholder{width:240px;height:24px;overflow:hidden;border-radius:5px;background:-webkit-gradient(linear, left top, right top, color-stop(25%, #e8edf4), color-stop(37%, #f5f7fa), color-stop(63%, #e8edf4));background:linear-gradient(90deg, #e8edf4 25%, #f5f7fa 37%, #e8edf4 63%);background-size:400% 100%;-webkit-animation:dashboard-heading-loading 1.4s ease infinite;animation:dashboard-heading-loading 1.4s ease infinite}@-webkit-keyframes dashboard-heading-loading{0%{background-position:100% 50%}100%{background-position:0 50%}}@keyframes dashboard-heading-loading{0%{background-position:100% 50%}100%{background-position:0 50%}}.laboratory-dashboard .dashboard-grid{display:grid;grid-template-columns:repeat(12, minmax(0, 1fr));gap:14px}.laboratory-dashboard .grid-projects,.laboratory-dashboard .grid-types,.laboratory-dashboard .grid-progress,.laboratory-dashboard .grid-todos,.laboratory-dashboard .grid-qualification,.laboratory-dashboard .grid-standards,.laboratory-dashboard .grid-quality,.laboratory-dashboard .grid-messages{grid-column:span 3;min-height:328px}.laboratory-dashboard .grid-workload{grid-column:span 9;min-height:340px}.laboratory-dashboard .grid-fees{grid-column:span 3;min-height:340px}.laboratory-dashboard .home-panel{min-width:0;overflow:hidden;border:1px solid #e8eef7;border-radius:10px;background:#fff;-webkit-box-shadow:0 4px 16px rgba(45,77,120,0.055);box-shadow:0 4px 16px rgba(45,77,120,0.055);-webkit-transition:-webkit-transform .2s, -webkit-box-shadow .2s;transition:-webkit-transform .2s, -webkit-box-shadow .2s;transition:transform .2s, box-shadow .2s;transition:transform .2s, box-shadow .2s, -webkit-transform .2s, -webkit-box-shadow .2s}.laboratory-dashboard .home-panel:hover{-webkit-transform:translateY(-2px);transform:translateY(-2px);-webkit-box-shadow:0 9px 24px rgba(45,77,120,0.1);box-shadow:0 9px 24px rgba(45,77,120,0.1)}.laboratory-dashboard .home-panel__header{height:50px;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:0 15px;border-bottom:1px solid #edf2f8}.laboratory-dashboard .home-panel__title{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;font-size:15px;font-weight:600;color:#263a55}.laboratory-dashboard .home-panel__title>i{width:29px;height:29px;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;margin-right:8px;border-radius:8px;color:#2f7cff;background:#edf4ff;font-size:15px}.laboratory-dashboard .home-panel__detail{padding:4px 0;border:0;color:#5e8ed8;background:transparent;font-size:12px;cursor:pointer}.laboratory-dashboard .home-panel__detail i{margin-left:3px}.laboratory-dashboard .home-panel__detail:hover{color:#1465e3}.laboratory-dashboard .home-panel__body{height:calc(100% - 50px);padding:13px 15px}.laboratory-dashboard .project-item{position:relative;min-height:59px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;gap:9px;padding:7px 0;border-bottom:1px dashed #e8edf4}.laboratory-dashboard .project-item:last-child{border-bottom:0}.laboratory-dashboard .project-item__icon{-webkit-box-flex:0;-ms-flex:0 0 32px;flex:0 0 32px;height:32px;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;border-radius:7px;color:#2f7cff;background:#edf4ff}.laboratory-dashboard .project-item__main{min-width:0;-webkit-box-flex:1;-ms-flex:1;flex:1;padding-right:50px}.laboratory-dashboard .project-item__name{overflow:hidden;color:#324761;font-size:13px;font-weight:600;text-overflow:ellipsis;white-space:nowrap}.laboratory-dashboard .project-item__meta{display:-webkit-box;display:-ms-flexbox;display:flex;gap:7px;margin-top:5px;color:#9aa7b8;font-size:10px}.laboratory-dashboard .project-item__meta span:last-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.laboratory-dashboard .project-item__progress{height:3px;margin-top:7px;overflow:hidden;border-radius:2px;background:#edf2f8}.laboratory-dashboard .project-item__progress span{display:block;height:100%;border-radius:2px;background:-webkit-gradient(linear, left top, right top, from(#2f7cff), to(#25b7e8));background:linear-gradient(90deg, #2f7cff, #25b7e8)}.laboratory-dashboard .status-tag{position:absolute;right:0;top:8px;padding:3px 6px;border-radius:8px;color:#2f7cff;background:#edf4ff;font-size:9px}.laboratory-dashboard .status-tag.done{color:#17a77f;background:#eaf9f4}.laboratory-dashboard .detection-type{height:244px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px}.laboratory-dashboard .detection-type__chart{position:relative;width:47%;height:190px}.laboratory-dashboard .chart-center{position:absolute;left:50%;top:50%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-transform:translate(-50%, -50%);transform:translate(-50%, -50%);pointer-events:none}.laboratory-dashboard .chart-center strong{color:#29415f;font-size:19px}.laboratory-dashboard .chart-center span{margin-top:2px;color:#9aa7b8;font-size:10px}.laboratory-dashboard .chart-legend{-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:0;max-height:240px;overflow-y:auto;scrollbar-width:none;-ms-overflow-style:none}.laboratory-dashboard .chart-legend::-webkit-scrollbar{display:none}.laboratory-dashboard .chart-legend__item{height:30px;display:grid;grid-template-columns:8px 1fr 35px 42px;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:4px;color:#607189;font-size:10px;border-bottom:1px dashed #edf1f6}.laboratory-dashboard .chart-legend__item i{width:6px;height:6px;border-radius:50%}.laboratory-dashboard .chart-legend__item b{text-align:right;color:#40536d;font-weight:500}.laboratory-dashboard .chart-legend__item em{text-align:right;color:#9aa7b8;font-style:normal}.laboratory-dashboard .progress-total-block{height:108px;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;border-radius:8px;color:#fff;background:linear-gradient(110deg, #178fd0, #23a9dc);-webkit-box-shadow:0 7px 18px rgba(28,148,207,0.18);box-shadow:0 7px 18px rgba(28,148,207,0.18)}.laboratory-dashboard .progress-total-block span{font-size:13px}.laboratory-dashboard .progress-total-block strong{margin-left:7px;font-size:28px;line-height:1;font-weight:600}.laboratory-dashboard .progress-stat-blocks{display:grid;grid-template-columns:repeat(3, minmax(0, 1fr));gap:8px;margin-top:9px}.laboratory-dashboard .progress-stat-block{min-width:0;height:105px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;border-radius:7px;color:#fff;background:linear-gradient(145deg, #168dcb, #1fa7dc)}.laboratory-dashboard .progress-stat-block span{font-size:12px}.laboratory-dashboard .progress-stat-block strong{margin:8px 0 2px;font-size:24px;line-height:1;font-weight:600}.laboratory-dashboard .progress-stat-block em{font-size:11px;font-style:normal;opacity:.92}.laboratory-dashboard .progress-stat-block.is-ongoing{background:linear-gradient(145deg, #1688c6, #159ed6)}.laboratory-dashboard .progress-stat-block.is-overdue strong,.laboratory-dashboard .progress-stat-block.is-overdue em{color:#ff334d;text-shadow:0 1px 1px rgba(255,255,255,0.22)}.laboratory-dashboard .todo-list{max-height:240px;overflow-y:auto;scrollbar-width:none;-ms-overflow-style:none}.laboratory-dashboard .todo-list::-webkit-scrollbar{display:none}.laboratory-dashboard .todo-item{height:48px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;border-bottom:1px solid #edf2f7;color:#53657d;font-size:11px;cursor:pointer}.laboratory-dashboard .todo-item>i:first-child{width:3px;height:16px;margin-right:10px;border-radius:2px}.laboratory-dashboard .todo-item span:nth-child(2){-webkit-box-flex:1;-ms-flex:1;flex:1}.laboratory-dashboard .todo-item b{color:#2f7cff;font-size:15px}.laboratory-dashboard .todo-item em{margin-left:3px;color:#a0adbd;font-size:9px;font-style:normal}.laboratory-dashboard .todo-item .todo-arrow{margin-left:8px;color:#b7c1ce}.laboratory-dashboard .todo-item:hover{background:#f6f9fd}.laboratory-dashboard .qualification-head{height:40px;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}.laboratory-dashboard .qualification-head div{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline}.laboratory-dashboard .qualification-head span{margin-right:8px;color:#7a8ba1;font-size:11px}.laboratory-dashboard .qualification-head strong{color:#2f7cff;font-size:24px}.laboratory-dashboard .qualification-head em{margin-left:3px;color:#9ba8b8;font-size:10px;font-style:normal}.laboratory-dashboard .qualification-head small{color:#a0adbd}.laboratory-dashboard .qualification-chart{height:201px}.laboratory-dashboard .standard-item{min-height:75px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:10px;border-bottom:1px dashed #e7edf4}.laboratory-dashboard .standard-item:last-child{border-bottom:0}.laboratory-dashboard .standard-date{-webkit-box-flex:0;-ms-flex:0 0 41px;flex:0 0 41px;height:45px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;border-radius:7px;color:#2f7cff;background:#edf4ff}.laboratory-dashboard .standard-date strong{font-size:16px;line-height:18px}.laboratory-dashboard .standard-date span{font-size:9px}.laboratory-dashboard .standard-info{min-width:0;-webkit-box-flex:1;-ms-flex:1;flex:1}.laboratory-dashboard .standard-info div{display:-webkit-box;overflow:hidden;color:#40536d;font-size:11px;line-height:17px;-webkit-box-orient:vertical;-webkit-line-clamp:2}.laboratory-dashboard .standard-info small{display:block;margin-top:3px;color:#99a7b8}.laboratory-dashboard .standard-type{margin-right:4px;padding:2px 5px;border-radius:7px;color:#2f7cff;background:#edf4ff;font-size:9px}.laboratory-dashboard .quality-table{width:100%;color:#52647b;font-size:10px}.laboratory-dashboard .quality-table::before{display:none}.laboratory-dashboard .quality-table th{padding:7px 0;color:#405c7a;background:#eaf4fb !important;font-weight:600}.laboratory-dashboard .quality-table td{padding:7px 0;border-bottom-color:#dbe9f4}.laboratory-dashboard .quality-table .cell{padding-right:4px;padding-left:4px;line-height:18px}.laboratory-dashboard .quality-rate{color:#2879d9;font-weight:600}.laboratory-dashboard .message-list{max-height:240px;overflow-y:auto;scrollbar-width:none;-ms-overflow-style:none}.laboratory-dashboard .message-list::-webkit-scrollbar{display:none}.laboratory-dashboard .message-item{height:48px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;border-bottom:1px solid #edf2f7;color:#53657d;font-size:11px;cursor:pointer}.laboratory-dashboard .message-item>span:nth-child(2){-webkit-box-flex:1;-ms-flex:1;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.laboratory-dashboard .message-item>b{color:#f05d68;font-size:14px}.laboratory-dashboard .message-item>i{color:#b6c1cf}.laboratory-dashboard .message-item:hover{background:#f6f9fd}.laboratory-dashboard .message-icon{width:25px;height:25px;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;border-radius:7px;color:#2f7cff;background:#edf4ff}.laboratory-dashboard .message-icon.danger{color:#ef5a66;background:#fff0f1}.laboratory-dashboard .message-icon.warning{color:#e79b20;background:#fff7e8}.laboratory-dashboard .message-icon.success{color:#18a57d;background:#eaf8f4}.laboratory-dashboard .workload-tables{display:grid;grid-template-columns:minmax(340px, 0.82fr) minmax(720px, 1.75fr);gap:12px}.laboratory-dashboard .workload-section{min-width:0;overflow:hidden}.laboratory-dashboard .workload-section__title{height:30px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin:0;color:#40536d;font-size:12px;font-weight:600}.laboratory-dashboard .workload-section__title i{width:3px;height:13px;margin-right:7px;border-radius:2px;background:#2f7cff}.laboratory-dashboard .workload-table{width:100%;color:#52647b;font-size:10px}.laboratory-dashboard .workload-table th{padding:5px 0;color:#526984;background:#f1f6fc !important;font-weight:500}.laboratory-dashboard .workload-table td{padding:5px 0;border-bottom-color:#e5edf7}.laboratory-dashboard .workload-table .cell{padding-right:4px;padding-left:4px;line-height:17px}.laboratory-dashboard .fee-total{height:48px;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}.laboratory-dashboard .fee-total span{color:#7c8ca1;font-size:11px}.laboratory-dashboard .fee-total strong{color:#244b82;font-size:25px}.laboratory-dashboard .fee-total em{margin-left:3px;color:#8e9caf;font-size:9px;font-style:normal}.laboratory-dashboard .fee-chart{height:206px}@media (max-width: 1500px){.laboratory-dashboard .grid-projects,.laboratory-dashboard .grid-types,.laboratory-dashboard .grid-progress,.laboratory-dashboard .grid-todos,.laboratory-dashboard .grid-qualification,.laboratory-dashboard .grid-standards,.laboratory-dashboard .grid-quality,.laboratory-dashboard .grid-messages{grid-column:span 6}.laboratory-dashboard .grid-workload,.laboratory-dashboard .grid-fees{grid-column:span 12}}@media (max-width: 1050px){.laboratory-dashboard .workload-tables{grid-template-columns:1fr}.laboratory-dashboard .grid-workload{min-height:610px}}@media (max-width: 720px){.laboratory-dashboard{padding:10px}.laboratory-dashboard .grid-projects,.laboratory-dashboard .grid-types,.laboratory-dashboard .grid-progress,.laboratory-dashboard .grid-todos,.laboratory-dashboard .grid-qualification,.laboratory-dashboard .grid-standards,.laboratory-dashboard .grid-quality,.laboratory-dashboard .grid-messages{grid-column:span 12}}

