feat(lab): add lazy E40 evidence review

This commit is contained in:
DCCONSTRUCTIONS
2026-07-30 21:53:04 +03:00
parent e9bbfb9a41
commit fdcaf57ae7
24 changed files with 3570 additions and 165 deletions
@@ -0,0 +1,297 @@
.e40-case-review {
display: grid;
height: clamp(38rem, 66vh, 52rem);
min-height: 38rem;
grid-template-rows: auto minmax(0, 1fr);
gap: 0.65rem;
border-radius: var(--nodedc-radius-option);
background: var(--nodedc-glass-panel-bg-soft);
padding: 0.75rem;
}
.e40-case-review__header {
display: flex;
min-width: 0;
align-items: flex-start;
justify-content: space-between;
gap: 1rem;
}
.e40-case-review__header > div {
display: grid;
min-width: 0;
gap: 0.18rem;
}
.e40-case-review__header strong {
color: var(--nodedc-text-primary);
font-size: 0.78rem;
}
.e40-case-review__header small {
color: var(--nodedc-text-muted);
font-size: 0.56rem;
line-height: 1.45;
}
.e40-case-review__viewer {
display: grid;
min-width: 0;
min-height: 0;
}
.e40-case-review__viewer > .laboratory-evidence-viewer {
min-height: 0;
}
.e40-case-review__state {
display: flex;
min-height: 16rem;
align-items: center;
justify-content: center;
gap: 0.55rem;
border-radius: var(--nodedc-radius-option);
background: var(--nodedc-canvas);
color: var(--nodedc-text-muted);
font-size: 0.62rem;
}
.e40-case-review__controls {
display: flex;
flex: 1;
min-width: 0;
align-items: center;
gap: 0.45rem;
}
.e40-case-review__viewer
.laboratory-evidence-viewer__controls:has(.e40-case-review__controls) {
right: 0.6rem;
left: 0.6rem;
}
.e40-case-review__pagination {
display: flex;
flex: none;
gap: 0.35rem;
}
.e40-case-review__glass-button {
background: var(--nodedc-floating-surface);
backdrop-filter: blur(var(--nodedc-blur-control));
}
.e40-case-review__controls .nodedc-select-anchor,
.e40-case-review__controls .nodedc-select {
width: clamp(15rem, 30vw, 26rem);
}
.e40-case-review__select .nodedc-select__value,
.e40-case-review__select .nodedc-select__toggle,
.e40-case-review__select-menu {
background: var(--nodedc-floating-surface);
backdrop-filter: blur(var(--nodedc-blur-control));
}
.e40-case-review__layer-button {
margin-left: auto;
--nodedc-button-bg: var(--nodedc-floating-surface);
--nodedc-button-color: var(--nodedc-text-secondary);
backdrop-filter: blur(var(--nodedc-blur-control));
}
.e40-case-review__layer-button[data-active="true"] {
--nodedc-button-bg: var(--nodedc-glass-control-active);
--nodedc-button-color: var(--nodedc-glass-control-active-text);
}
.e40-case-review__telemetry {
position: absolute;
z-index: 3;
left: 0.6rem;
bottom: 0.6rem;
display: grid;
width: min(46rem, calc(100% - 1.2rem));
grid-template-columns: minmax(0, 1fr) minmax(14rem, 18rem);
align-items: end;
gap: 0.75rem;
border-radius: var(--nodedc-radius-control-compact);
background: var(--nodedc-floating-surface);
padding: 0.55rem 0.65rem;
color: var(--nodedc-text-secondary);
backdrop-filter: blur(var(--nodedc-blur-control));
pointer-events: none;
}
.e40-case-review__telemetry-content {
display: grid;
min-width: 0;
gap: 0.45rem;
}
.e40-case-review__question {
display: grid;
gap: 0.15rem;
border-radius: var(--nodedc-radius-control-compact);
background: var(--nodedc-glass-control-bg);
padding: 0.45rem 0.55rem;
}
.e40-case-review__question > span {
color: var(--nodedc-text-muted);
font-size: 0.46rem;
font-weight: 700;
letter-spacing: 0.12em;
}
.e40-case-review__question > strong {
color: var(--nodedc-text-primary);
font-size: 0.62rem;
line-height: 1.35;
}
.e40-case-review__question > small {
color: var(--nodedc-text-muted);
font-size: 0.49rem;
line-height: 1.35;
}
.e40-case-review__telemetry-content > span,
.e40-case-review__telemetry dt {
color: var(--nodedc-text-muted);
font-size: 0.49rem;
}
.e40-case-review__telemetry dl {
display: grid;
gap: 0.35rem;
margin: 0;
}
.e40-case-review__telemetry dl > div {
display: grid;
grid-template-columns: 6.2rem minmax(0, 1fr);
align-items: start;
gap: 0.45rem;
}
.e40-case-review__telemetry dt,
.e40-case-review__telemetry dd {
margin: 0;
}
.e40-case-review__telemetry dd {
display: grid;
min-width: 0;
gap: 0.12rem;
font-size: 0.55rem;
}
.e40-case-review__telemetry dd span,
.e40-case-review__telemetry dd strong {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.e40-case-review__telemetry dd strong {
color: var(--nodedc-text-primary);
}
.e40-case-review__verdict {
display: grid;
justify-items: end;
gap: 0.28rem;
pointer-events: auto;
}
.e40-case-review__verdict > span {
color: var(--nodedc-text-muted);
font-size: 0.49rem;
white-space: nowrap;
}
.e40-case-review__verdict-error {
max-width: 12rem;
color: rgb(var(--nodedc-danger-rgb));
font-size: 0.48rem;
line-height: 1.35;
text-align: right;
}
.e40-case-review__verdict-buttons {
display: flex;
gap: 0.2rem;
border-radius: 999px;
background: var(--nodedc-glass-control-bg);
padding: 0.18rem;
backdrop-filter: blur(var(--nodedc-blur-control));
}
.e40-case-review__verdict-guide {
display: grid;
justify-self: stretch;
gap: 0.26rem;
}
.e40-case-review__verdict-guide > span {
display: grid;
grid-template-columns: auto minmax(0, 1fr);
align-items: start;
gap: 0.28rem;
color: var(--nodedc-text-muted);
font-size: 0.49rem;
line-height: 1.35;
}
.e40-case-review__verdict-guide > span[data-verdict="confirmed"] > svg {
color: rgb(var(--nodedc-success-rgb));
}
.e40-case-review__verdict-guide > span[data-verdict="rejected"] > svg {
color: rgb(var(--nodedc-danger-rgb));
}
.e40-case-review__commit-note {
max-width: 18rem;
color: var(--nodedc-text-muted);
font-size: 0.46rem;
line-height: 1.3;
text-align: right;
}
.e40-case-review__verdict-button {
width: 2rem;
height: 2rem;
min-width: 2rem;
background: transparent;
}
.e40-case-review__verdict-button[data-active="true"][data-verdict="confirmed"] {
background: rgb(var(--nodedc-success-rgb) / 0.12);
color: rgb(var(--nodedc-success-rgb));
}
.e40-case-review__verdict-button[data-active="true"][data-verdict="rejected"] {
background: rgb(var(--nodedc-danger-rgb) / 0.12);
color: rgb(var(--nodedc-danger-rgb));
}
@media (max-width: 900px) {
.e40-case-review {
height: 42rem;
}
.e40-case-review__controls .nodedc-select-anchor,
.e40-case-review__controls .nodedc-select {
width: clamp(10rem, 42vw, 18rem);
}
.e40-case-review__telemetry {
grid-template-columns: minmax(0, 1fr);
}
.e40-case-review__verdict {
justify-items: start;
}
}