648 lines
12 KiB
CSS
648 lines
12 KiB
CSS
.scene-source-controls {
|
|
position: absolute;
|
|
z-index: 12;
|
|
top: 0.85rem;
|
|
left: 0.85rem;
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 0.45rem;
|
|
}
|
|
|
|
.scene-device-controls {
|
|
position: absolute;
|
|
z-index: 30;
|
|
top: 0.85rem;
|
|
left: 50%;
|
|
max-width: calc(100% - 9rem);
|
|
transform: translateX(-50%);
|
|
}
|
|
|
|
.scene-source-picker__trigger,
|
|
.scene-source-control,
|
|
.scene-focus-exit {
|
|
display: inline-grid;
|
|
width: 2.75rem;
|
|
height: 2.75rem;
|
|
place-items: center;
|
|
border: 1px solid rgb(255 255 255 / 0.09);
|
|
border-radius: 50%;
|
|
background: rgb(12 13 16 / 0.82);
|
|
color: var(--nodedc-text-secondary);
|
|
cursor: pointer;
|
|
backdrop-filter: blur(18px);
|
|
}
|
|
|
|
.scene-navigation-hint {
|
|
position: absolute;
|
|
z-index: 11;
|
|
right: 0.85rem;
|
|
bottom: 4.9rem;
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 0.75rem;
|
|
border: 1px solid rgb(255 255 255 / 0.07);
|
|
border-radius: 999px;
|
|
background: rgb(9 10 13 / 0.7);
|
|
color: var(--nodedc-text-muted);
|
|
padding: 0.42rem 0.65rem;
|
|
font-size: 0.52rem;
|
|
font-weight: 680;
|
|
pointer-events: none;
|
|
backdrop-filter: blur(14px);
|
|
}
|
|
|
|
.scene-source-picker__trigger {
|
|
position: relative;
|
|
}
|
|
|
|
.scene-source-picker__trigger:hover,
|
|
.scene-source-control:hover,
|
|
.scene-focus-exit:hover,
|
|
.scene-source-picker__trigger[data-active="true"] {
|
|
border-color: rgb(255 255 255 / 0.18);
|
|
color: var(--nodedc-text-primary);
|
|
}
|
|
|
|
.scene-source-picker__trigger > span {
|
|
position: absolute;
|
|
top: -0.2rem;
|
|
right: -0.2rem;
|
|
display: grid;
|
|
min-width: 1.05rem;
|
|
height: 1.05rem;
|
|
place-items: center;
|
|
border-radius: 999px;
|
|
background: var(--nodedc-text-primary);
|
|
color: #090a0c;
|
|
padding: 0 0.25rem;
|
|
font-size: 0.5rem;
|
|
font-weight: 800;
|
|
}
|
|
|
|
.scene-focus-exit {
|
|
position: absolute;
|
|
z-index: 20;
|
|
top: 0.85rem;
|
|
right: 0.85rem;
|
|
}
|
|
|
|
.scene-status--top-left {
|
|
left: 7.1rem;
|
|
}
|
|
|
|
.scene-status[aria-hidden="true"],
|
|
.scene-metrics[aria-hidden="true"] {
|
|
display: none;
|
|
}
|
|
|
|
.observation-source-menu {
|
|
overflow: hidden;
|
|
font-family: var(--nodedc-font-family);
|
|
}
|
|
|
|
.observation-source-menu__head,
|
|
.observation-source-menu__foot {
|
|
padding: 0.85rem 0.9rem;
|
|
}
|
|
|
|
.observation-source-menu__head {
|
|
display: flex;
|
|
align-items: flex-end;
|
|
justify-content: space-between;
|
|
gap: 1rem;
|
|
}
|
|
|
|
.observation-source-menu__head strong,
|
|
.observation-source-menu__head span {
|
|
display: block;
|
|
}
|
|
|
|
.observation-source-menu__head strong {
|
|
margin-top: 0.34rem;
|
|
color: var(--nodedc-text-primary);
|
|
font-size: var(--nodedc-font-size-md);
|
|
}
|
|
|
|
.observation-source-menu__head small,
|
|
.observation-source-menu__foot {
|
|
color: var(--nodedc-text-muted);
|
|
font-size: var(--nodedc-font-size-xs);
|
|
line-height: 1.4;
|
|
}
|
|
|
|
.observation-source-menu__list {
|
|
display: grid;
|
|
max-height: min(28rem, 60vh);
|
|
overflow: auto;
|
|
padding: 0.35rem;
|
|
}
|
|
|
|
.observation-source-option .nodedc-dropdown-option__description {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 0.35rem;
|
|
}
|
|
|
|
.observation-source-option i,
|
|
.floating-observation-window i,
|
|
.camera-slot__status i {
|
|
width: 0.42rem;
|
|
height: 0.42rem;
|
|
flex: 0 0 0.42rem;
|
|
border-radius: 50%;
|
|
background: var(--nodedc-text-muted);
|
|
}
|
|
|
|
i[data-availability="available"],
|
|
i[data-availability="streaming"] {
|
|
background: rgb(var(--nodedc-success-rgb));
|
|
}
|
|
|
|
i[data-availability="connecting"],
|
|
i[data-availability="declared"] {
|
|
background: rgb(var(--nodedc-warning-rgb));
|
|
}
|
|
|
|
i[data-availability="unverified"] {
|
|
background: var(--nodedc-text-muted);
|
|
}
|
|
|
|
i[data-availability="degraded"],
|
|
i[data-availability="error"] {
|
|
background: rgb(var(--nodedc-danger-rgb));
|
|
}
|
|
|
|
.observation-source-menu__empty,
|
|
.camera-grid__empty,
|
|
.observation-media__empty {
|
|
display: grid;
|
|
place-items: center;
|
|
align-content: center;
|
|
gap: 0.5rem;
|
|
color: var(--nodedc-text-muted);
|
|
text-align: center;
|
|
}
|
|
|
|
.observation-source-menu__empty {
|
|
min-height: 10rem;
|
|
padding: 1rem;
|
|
}
|
|
|
|
.observation-source-menu__empty strong,
|
|
.observation-media__empty strong,
|
|
.camera-grid__empty strong {
|
|
color: var(--nodedc-text-secondary);
|
|
font-size: 0.7rem;
|
|
}
|
|
|
|
.observation-source-menu__empty span,
|
|
.observation-media__empty span,
|
|
.camera-grid__empty span {
|
|
max-width: 24rem;
|
|
font-size: 0.59rem;
|
|
line-height: 1.45;
|
|
}
|
|
|
|
.observation-source-menu__foot {
|
|
border-top: 0;
|
|
}
|
|
|
|
.observation-media__asset,
|
|
.observation-media__empty {
|
|
width: 100%;
|
|
height: 100%;
|
|
}
|
|
|
|
.observation-media__asset {
|
|
display: block;
|
|
object-fit: contain;
|
|
background: #050608;
|
|
}
|
|
|
|
.recorded-media-player {
|
|
position: relative;
|
|
width: 100%;
|
|
height: 100%;
|
|
overflow: hidden;
|
|
background: #070809;
|
|
}
|
|
|
|
.recorded-media-player:not([data-state="ready"]) .observation-media__asset {
|
|
visibility: hidden;
|
|
}
|
|
|
|
.recorded-media-player__notice {
|
|
position: absolute;
|
|
inset: 0;
|
|
display: grid;
|
|
place-items: center;
|
|
padding: 18px;
|
|
color: rgba(247, 248, 244, 0.72);
|
|
background: #070809;
|
|
font: inherit;
|
|
font-size: 11px;
|
|
text-align: center;
|
|
pointer-events: none;
|
|
}
|
|
|
|
.mse-fmp4-player {
|
|
position: relative;
|
|
width: 100%;
|
|
height: 100%;
|
|
min-height: 9rem;
|
|
overflow: hidden;
|
|
background: #050608;
|
|
}
|
|
|
|
.mse-fmp4-player__status {
|
|
position: absolute;
|
|
inset: 0;
|
|
display: grid;
|
|
place-items: center;
|
|
align-content: center;
|
|
gap: 0.5rem;
|
|
padding: 1rem;
|
|
background: rgb(5 6 8 / 0.88);
|
|
color: var(--nodedc-text-muted);
|
|
text-align: center;
|
|
}
|
|
|
|
.mse-fmp4-player__status strong {
|
|
color: var(--nodedc-text-secondary);
|
|
font-size: 0.7rem;
|
|
}
|
|
|
|
.mse-fmp4-player__status span {
|
|
max-width: 24rem;
|
|
font-size: 0.59rem;
|
|
line-height: 1.45;
|
|
}
|
|
|
|
.mse-fmp4-player__status button {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
gap: 0.4rem;
|
|
margin-top: 0.25rem;
|
|
border: 1px solid rgb(255 255 255 / 0.12);
|
|
border-radius: 999px;
|
|
background: rgb(255 255 255 / 0.06);
|
|
color: var(--nodedc-text-primary);
|
|
padding: 0.48rem 0.72rem;
|
|
font: inherit;
|
|
font-size: 0.58rem;
|
|
font-weight: 760;
|
|
cursor: pointer;
|
|
}
|
|
|
|
.mse-fmp4-player__status button:hover {
|
|
background: rgb(255 255 255 / 0.11);
|
|
}
|
|
|
|
.observation-media__empty {
|
|
min-height: 9rem;
|
|
background: #07080a;
|
|
}
|
|
|
|
.floating-observation-window__status,
|
|
.floating-observation-window__footer {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 0.45rem;
|
|
}
|
|
|
|
.camera-slot__head-actions button {
|
|
display: grid;
|
|
width: 1.9rem;
|
|
height: 1.9rem;
|
|
place-items: center;
|
|
border: 0;
|
|
border-radius: 50%;
|
|
background: rgb(255 255 255 / 0.05);
|
|
color: var(--nodedc-text-secondary);
|
|
cursor: pointer;
|
|
}
|
|
|
|
.camera-slot__head-actions button:hover {
|
|
background: rgb(255 255 255 / 0.1);
|
|
color: var(--nodedc-text-primary);
|
|
}
|
|
|
|
.camera-slot__head-actions .camera-slot__activation {
|
|
width: auto;
|
|
min-width: 5.6rem;
|
|
height: 1.9rem;
|
|
border: 1px solid rgb(255 255 255 / 0.09);
|
|
border-radius: 999px;
|
|
padding: 0 0.65rem;
|
|
font: inherit;
|
|
font-size: 0.53rem;
|
|
font-weight: 760;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.camera-slot__head-actions .camera-slot__activation:disabled {
|
|
cursor: wait;
|
|
opacity: 0.48;
|
|
}
|
|
|
|
.floating-observation-window__status {
|
|
color: var(--nodedc-text-secondary);
|
|
font-size: 0.54rem;
|
|
}
|
|
|
|
.floating-observation-window__footer {
|
|
width: 100%;
|
|
justify-content: space-between;
|
|
color: var(--nodedc-text-muted);
|
|
font-size: 0.53rem;
|
|
}
|
|
|
|
.floating-observation-window .nodedc-workspace-window__body {
|
|
background: #06070a;
|
|
}
|
|
|
|
.floating-observation-window.nodedc-material-rim::after {
|
|
display: none;
|
|
}
|
|
|
|
.floating-observation-window[data-active="true"] {
|
|
box-shadow: 0 1.5rem 4rem rgb(0 0 0 / 0.34);
|
|
}
|
|
|
|
.floating-observation-window--hidden {
|
|
visibility: hidden;
|
|
pointer-events: none;
|
|
}
|
|
|
|
.observation-timeline {
|
|
display: block;
|
|
min-width: 0;
|
|
border: 0;
|
|
border-radius: 0.9rem;
|
|
background: rgb(9 10 13 / 0.78);
|
|
padding: 0.4rem;
|
|
backdrop-filter: blur(16px);
|
|
}
|
|
|
|
.observation-timeline[data-accumulation="true"] {
|
|
display: grid;
|
|
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
align-items: center;
|
|
gap: 0.8rem;
|
|
}
|
|
|
|
.observation-timeline__playback {
|
|
display: grid;
|
|
min-width: 0;
|
|
grid-template-columns: auto auto minmax(0, 1fr) auto auto;
|
|
align-items: center;
|
|
gap: 0.6rem;
|
|
}
|
|
|
|
.observation-timeline__accumulation {
|
|
display: grid;
|
|
min-width: 0;
|
|
grid-template-columns: auto minmax(0, 1fr) auto;
|
|
align-items: center;
|
|
gap: 0.7rem;
|
|
padding: 0 0.45rem;
|
|
}
|
|
|
|
.observation-timeline__accumulation span,
|
|
.observation-timeline__accumulation code {
|
|
color: var(--nodedc-text-muted);
|
|
font-size: 0.55rem;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.observation-timeline__accumulation code {
|
|
min-width: 2.65rem;
|
|
color: var(--nodedc-text-primary);
|
|
text-align: right;
|
|
}
|
|
|
|
.observation-timeline__track {
|
|
width: 100%;
|
|
height: 0.3rem;
|
|
appearance: none;
|
|
border: 0;
|
|
border-radius: 999px;
|
|
background: rgb(255 255 255 / 0.08);
|
|
cursor: pointer;
|
|
}
|
|
|
|
.observation-timeline__track::-webkit-slider-thumb {
|
|
width: 0.72rem;
|
|
height: 0.72rem;
|
|
appearance: none;
|
|
border: 0;
|
|
border-radius: 50%;
|
|
background: var(--nodedc-text-primary);
|
|
}
|
|
|
|
.observation-timeline__track::-moz-range-thumb {
|
|
width: 0.72rem;
|
|
height: 0.72rem;
|
|
border: 0;
|
|
border-radius: 50%;
|
|
background: var(--nodedc-text-primary);
|
|
}
|
|
|
|
.observation-timeline__track:disabled {
|
|
opacity: 0.46;
|
|
cursor: default;
|
|
}
|
|
|
|
.observation-timeline__meta {
|
|
display: grid;
|
|
justify-items: end;
|
|
gap: 0.12rem;
|
|
}
|
|
|
|
.observation-timeline__meta code,
|
|
.observation-timeline__meta small {
|
|
color: var(--nodedc-text-muted);
|
|
font-size: 0.52rem;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.observation-timeline__follow {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
gap: 0.38rem;
|
|
color: var(--nodedc-text-muted);
|
|
border: 0;
|
|
background: transparent;
|
|
padding: 0.3rem 0.45rem;
|
|
font-size: 0.52rem;
|
|
font-weight: 820;
|
|
}
|
|
|
|
.observation-timeline__follow:not(:disabled) {
|
|
cursor: pointer;
|
|
}
|
|
|
|
.observation-timeline__follow::before {
|
|
width: 0.4rem;
|
|
height: 0.4rem;
|
|
border-radius: 50%;
|
|
background: var(--nodedc-text-muted);
|
|
content: "";
|
|
}
|
|
|
|
.observation-timeline__follow[data-active="true"] {
|
|
color: var(--nodedc-text-primary);
|
|
}
|
|
|
|
.observation-timeline__follow[data-active="true"]::before {
|
|
background: rgb(var(--nodedc-success-rgb));
|
|
}
|
|
|
|
.scene-timeline {
|
|
position: absolute;
|
|
z-index: 10;
|
|
right: 0.75rem;
|
|
bottom: 0.75rem;
|
|
left: 0.75rem;
|
|
}
|
|
|
|
.spatial-workspace[data-focused="true"] {
|
|
min-height: 0;
|
|
grid-template-rows: minmax(0, 1fr);
|
|
gap: 0;
|
|
}
|
|
|
|
.spatial-workspace[data-focused="true"] > .spatial-toolbar,
|
|
.spatial-workspace[data-focused="true"] > .spatial-contract-strip {
|
|
display: none;
|
|
}
|
|
|
|
.cameras-workspace {
|
|
height: 100%;
|
|
min-height: 0;
|
|
grid-template-rows: auto auto minmax(0, 1fr) auto;
|
|
overflow: hidden;
|
|
padding-bottom: 0;
|
|
}
|
|
|
|
.camera-workspace__catalog {
|
|
display: flex;
|
|
min-width: 0;
|
|
align-items: center;
|
|
justify-content: flex-end;
|
|
gap: 0.8rem;
|
|
color: var(--nodedc-text-muted);
|
|
font-size: 0.6rem;
|
|
}
|
|
|
|
.camera-grid {
|
|
display: grid;
|
|
min-height: 0;
|
|
grid-template-columns: repeat(auto-fit, minmax(min(24rem, 100%), 1fr));
|
|
grid-template-rows: none;
|
|
grid-auto-rows: minmax(16rem, 1fr);
|
|
gap: 0.75rem;
|
|
overflow: auto;
|
|
}
|
|
|
|
.camera-grid[data-count="1"] {
|
|
grid-template-columns: minmax(0, 1fr);
|
|
}
|
|
|
|
.camera-grid__empty {
|
|
min-height: 18rem;
|
|
border-radius: 1rem;
|
|
background: #07080a;
|
|
box-shadow: none;
|
|
}
|
|
|
|
.camera-slot {
|
|
grid-template-rows: auto minmax(0, 1fr) auto;
|
|
}
|
|
|
|
.camera-slot header,
|
|
.camera-slot footer {
|
|
z-index: 2;
|
|
}
|
|
|
|
.camera-slot__head-actions,
|
|
.camera-slot__status {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 0.45rem;
|
|
}
|
|
|
|
.camera-slot__status {
|
|
color: var(--nodedc-text-muted);
|
|
font-size: 0.56rem;
|
|
}
|
|
|
|
.camera-slot__body {
|
|
position: relative;
|
|
z-index: 1;
|
|
min-width: 0;
|
|
min-height: 0;
|
|
overflow: hidden;
|
|
}
|
|
|
|
.camera-slot footer {
|
|
align-items: flex-end;
|
|
}
|
|
|
|
.camera-slot footer span {
|
|
overflow: hidden;
|
|
text-overflow: ellipsis;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.camera-slot footer small {
|
|
flex: 0 0 auto;
|
|
color: var(--nodedc-text-secondary);
|
|
font-size: 0.53rem;
|
|
}
|
|
|
|
.camera-timeline {
|
|
position: relative;
|
|
}
|
|
|
|
.cameras-workspace[data-focused="true"] {
|
|
height: 100%;
|
|
grid-template-rows: minmax(0, 1fr) auto;
|
|
padding-bottom: 0;
|
|
}
|
|
|
|
.cameras-workspace[data-focused="true"] > .workspace-lead,
|
|
.cameras-workspace[data-focused="true"] > .camera-workspace__catalog {
|
|
display: none;
|
|
}
|
|
|
|
.cameras-workspace[data-focused="true"] .camera-grid {
|
|
min-height: 0;
|
|
overflow: hidden;
|
|
}
|
|
|
|
@media (max-width: 760px) {
|
|
.scene-status--top-left {
|
|
top: 4.2rem;
|
|
left: 0.6rem;
|
|
}
|
|
|
|
.observation-timeline[data-accumulation="true"] {
|
|
grid-template-columns: minmax(0, 1fr);
|
|
}
|
|
|
|
.observation-timeline__playback {
|
|
grid-template-columns: auto minmax(0, 1fr) auto;
|
|
}
|
|
|
|
.observation-timeline__playback > .nodedc-button:first-child,
|
|
.observation-timeline__meta {
|
|
display: none;
|
|
}
|
|
|
|
.camera-grid {
|
|
grid-template-columns: 1fr;
|
|
grid-auto-rows: minmax(14rem, 1fr);
|
|
}
|
|
}
|