feat(perception): add E34 temporal occupied layer

This commit is contained in:
DCCONSTRUCTIONS
2026-07-27 16:55:40 +03:00
parent 95c6540691
commit 621084fcd6
22 changed files with 4732 additions and 104 deletions
@@ -0,0 +1,169 @@
.e34-temporal-evidence,
.e34-temporal-scene {
width: 100%;
height: 100%;
min-width: 0;
min-height: 0;
}
.e34-temporal-scene {
position: relative;
overflow: hidden;
background: var(--nodedc-canvas);
}
.e34-temporal-scene__viewport {
position: absolute;
inset: 0;
}
.e34-temporal-scene__viewport canvas {
display: block;
width: 100%;
height: 100%;
cursor: grab;
touch-action: none;
}
.e34-temporal-scene__viewport canvas:active {
cursor: grabbing;
}
.e34-temporal-scene__toolbar {
position: absolute;
z-index: 3;
top: 0.6rem;
left: 0.6rem;
display: flex;
align-items: center;
gap: 0.5rem;
}
.e34-temporal-scene__toolbar .nodedc-button {
background: var(--nodedc-floating-surface);
backdrop-filter: blur(var(--nodedc-blur-control));
}
.e34-temporal-scene__gestures,
.e34-temporal-scene__legend,
.e34-temporal-evidence__telemetry {
border-radius: var(--nodedc-radius-control-compact);
background: var(--nodedc-floating-surface);
color: var(--nodedc-text-secondary);
backdrop-filter: blur(var(--nodedc-blur-control));
}
.e34-temporal-scene__gestures {
display: flex;
gap: 0.55rem;
padding: 0.43rem 0.55rem;
}
.e34-temporal-scene__gestures span,
.e34-temporal-scene__legend span,
.e34-temporal-evidence__telemetry dt,
.e34-temporal-evidence__telemetry dd {
font-size: 0.5rem;
}
.e34-temporal-scene__legend {
position: absolute;
right: 0.6rem;
bottom: 0.6rem;
display: flex;
flex-wrap: wrap;
gap: 0.55rem;
padding: 0.42rem 0.55rem;
}
.e34-temporal-scene__legend span {
display: inline-flex;
align-items: center;
gap: 0.25rem;
}
.e34-temporal-scene__legend span::before {
width: 0.38rem;
height: 0.38rem;
border-radius: 50%;
background: var(--nodedc-text-muted);
content: "";
}
.e34-temporal-scene__legend span[data-state="current"]::before {
background: rgb(var(--nodedc-accent-rgb));
}
.e34-temporal-scene__legend span[data-state="held"]::before {
background: rgb(var(--nodedc-warning-rgb));
}
.e34-temporal-scene__legend span[data-state="expired"]::before {
background: rgb(var(--nodedc-danger-rgb));
}
.e34-temporal-evidence__telemetry {
position: absolute;
z-index: 3;
left: 0.6rem;
bottom: 0.6rem;
display: grid;
width: min(13rem, calc(100% - 1.2rem));
gap: 0.35rem;
margin: 0;
padding: 0.55rem 0.65rem;
pointer-events: none;
}
.e34-temporal-evidence__telemetry > div {
display: grid;
gap: 0.12rem;
}
.e34-temporal-evidence__telemetry dt,
.e34-temporal-evidence__telemetry dd {
margin: 0;
}
.e34-temporal-evidence__telemetry dt {
color: var(--nodedc-text-muted);
}
.e34-temporal-evidence__telemetry dd {
overflow: hidden;
color: var(--nodedc-text-primary);
font-weight: 650;
text-overflow: ellipsis;
white-space: nowrap;
}
.e34-temporal-evidence .laboratory-evidence-viewer__controls
.nodedc-select-anchor {
width: clamp(12rem, 24vw, 20rem);
}
.e34-temporal-scene__error {
position: absolute;
inset: 0;
display: grid;
place-items: center;
color: var(--nodedc-text-muted);
font-size: 0.62rem;
}
@media (max-width: 900px) {
.e34-temporal-scene__gestures {
display: none;
}
.e34-temporal-scene__legend {
left: 0.6rem;
right: auto;
bottom: 5.7rem;
}
.e34-temporal-evidence .laboratory-evidence-viewer__controls
.nodedc-select-anchor {
width: 10rem;
}
}