Files
NODEDC_MISSION_CORE/apps/control-station/src/styles/responsive.css
T
DCCONSTRUCTIONS 0ca7316a24 wip(k1): checkpoint connection recovery rewrite
Capture the current unreleased K1 connection, recovery, lifecycle, viewer, and test work as a single known-bad baseline for subsequent fixes.
2026-08-14 14:57:50 +03:00

665 lines
13 KiB
CSS

@media (max-width: 1480px) {
.metrics-grid {
grid-template-columns: repeat(2, minmax(0, 1fr));
}
.landing-stage__copy {
width: min(35rem, 54%);
}
}
@media (max-width: 1280px) {
.overview-grid,
.mission-layout,
.polygon-live-layout,
.polygon-run-layout,
.polygon-run-evidence-grid,
.lidar-quality-grid {
grid-template-columns: 1fr;
}
.lidar-field-review__source {
grid-template-columns: repeat(2, minmax(0, 1fr));
}
.lidar-field-window-list {
grid-template-columns: repeat(3, minmax(0, 1fr));
}
.lidar-field-stage {
grid-template-columns: 1fr;
}
.lidar-local-surface__summary {
grid-template-columns: repeat(2, minmax(0, 1fr));
}
.lidar-local-surface__stage {
grid-template-columns: minmax(0, 1fr) minmax(13rem, 0.32fr);
}
.lidar-field-cloud {
grid-column: 1;
grid-row: 1;
}
.lidar-field-camera {
grid-column: 1;
grid-row: 2;
}
.lidar-field-camera img {
min-height: 0;
aspect-ratio: 4 / 3;
}
.polygon-run-providers {
grid-template-columns: repeat(2, minmax(0, 1fr));
}
.lidar-ground-metrics {
grid-template-columns: repeat(2, minmax(0, 1fr));
}
.pipeline-strip {
grid-template-columns: repeat(4, minmax(0, 1fr));
}
.pipeline-strip > svg {
display: none;
}
.map-layout {
grid-template-columns: 1fr;
}
.map-inspector {
display: grid;
grid-template-columns: minmax(12rem, 0.55fr) minmax(0, 1.45fr);
gap: 0.5rem 1rem;
}
.map-inspector > .section-eyebrow,
.map-inspector > h3 {
grid-column: 1;
}
.map-inspector .layer-summary-list {
grid-row: 1 / 4;
grid-column: 2;
}
.map-inspector > .nodedc-button {
grid-column: 1;
}
.camera-grid {
grid-template-columns: 1fr 1fr;
grid-template-rows: minmax(20rem, 1fr) repeat(2, minmax(10rem, 0.55fr));
}
.camera-slot[data-primary="true"] {
grid-row: 1;
grid-column: 1 / -1;
}
}
@media (max-width: 1040px) {
.dataset-sequence-review__truth {
grid-template-columns: 1fr;
}
.polygon-review-summary > div:last-child,
.polygon-review-analysis__content,
.polygon-run-technical__content {
grid-template-columns: 1fr;
}
.polygon-review-frame-metrics {
grid-template-columns: repeat(2, minmax(0, 1fr));
}
.polygon-qualification__grid,
.polygon-qualification__failures {
grid-template-columns: 1fr;
}
.polygon-qualification__providers dl {
grid-template-columns: repeat(2, minmax(0, 1fr));
}
.feature-group {
grid-template-columns: 1fr;
gap: 0.9rem;
}
.capability-summary {
grid-template-columns: repeat(2, minmax(0, 1fr));
}
.polygon-run-metrics {
grid-template-columns: repeat(2, minmax(0, 1fr));
}
.workspace-lead {
align-items: flex-start;
flex-direction: column;
gap: 0.7rem;
}
.lidar-device-context,
.dataset-purpose,
.dataset-entry {
grid-template-columns: 1fr;
}
.dataset-preview > header {
align-items: flex-start;
flex-direction: column;
}
.dataset-preview__metrics {
grid-template-columns: repeat(2, minmax(0, 1fr));
}
.lidar-device-context__verdict {
border-top: 1px solid var(--station-hairline);
border-left: 0;
padding-top: 0.75rem;
padding-left: 0;
}
.dataset-purpose {
align-items: start;
gap: 1rem;
}
.polygon-live-heading {
align-items: stretch;
flex-direction: column;
}
.polygon-live-heading > div:last-child {
justify-content: space-between;
}
.workspace-lead__note,
.workspace-lead__status {
max-width: none;
justify-items: start;
text-align: left;
}
.landing-stage__status {
width: 20rem;
max-width: 36vw;
}
.landing-stage__copy h1 {
font-size: clamp(2.7rem, 7vw, 5.6rem);
}
.scene-metrics {
display: none;
}
}
/* The shared shell switches to its compact overlay at 760 px, but Mission
Core's 20.75 rem navigation leaves less than the plugin's usable 32 rem
workspace before that point. Bridge the structural breakpoint locally so
761--929 px never renders a full sidebar beside a sub-32-rem device UI. */
@media (min-width: 761px) and (max-width: 929px) {
.nodedc-header-shell {
width: 100%;
padding: 0.85rem 1rem 0.65rem;
background: var(--nodedc-canvas);
}
.nodedc-header {
min-height: 8.6rem;
}
.nodedc-header__row {
min-height: 8.6rem;
grid-template-columns: minmax(0, 1fr) auto;
align-content: start;
row-gap: 0.65rem;
}
.nodedc-header__center {
order: 3;
grid-column: 1 / -1;
justify-content: stretch;
overflow-x: auto;
}
.nodedc-header__center .nodedc-segmented,
.nodedc-header__center .nodedc-header-navigation {
min-width: max-content;
}
.nodedc-app-shell {
--nodedc-app-header-height: 10.25rem;
--nodedc-app-page-pad: 0.7rem;
--nodedc-app-panel-gap: 0.7rem;
}
.nodedc-app-shell__stage {
padding: 0 var(--nodedc-app-page-pad) var(--nodedc-app-page-pad);
}
.nodedc-app-shell__navigation,
.nodedc-app-shell__content {
right: var(--nodedc-app-page-pad);
bottom: var(--nodedc-app-page-pad);
left: var(--nodedc-app-page-pad);
width: auto;
}
.nodedc-app-shell[data-navigation-open="true"] .nodedc-app-shell__stage,
.nodedc-app-shell[data-content-open="true"] .nodedc-app-shell__stage {
padding-left: var(--nodedc-app-page-pad);
pointer-events: none;
transform: translateX(calc(100vw + var(--nodedc-app-page-pad)));
}
.nodedc-app-shell[data-content-open="true"] .nodedc-app-shell__navigation {
opacity: 0;
pointer-events: none;
}
.nodedc-application-panel,
.nodedc-admin-panel {
width: 100%;
max-width: none;
}
.nodedc-application-panel {
padding: 0.75rem;
}
.nodedc-application-panel__titles p {
display: none;
}
.nodedc-application-panel__action:first-child {
display: none;
}
}
@media (max-width: 760px) {
/* The shared application panel is a grid. Its header has three fixed-size
controls, so the grid item's automatic min-content width can widen the
body past the panel padding on narrow phones. Keep both grid rows owned
by the panel's content box; long plugin content must wrap inside it. */
.nodedc-application-panel__head,
.nodedc-application-panel__body {
width: auto;
min-width: 0;
max-width: 100%;
}
.nodedc-application-panel__head {
grid-template-columns: minmax(0, 1fr) auto;
}
.polygon-review-lead,
.polygon-review-player__header,
.polygon-review-order,
.polygon-review-summary > header,
.dataset-fragment-analysis > header {
align-items: stretch;
flex-direction: column;
}
.polygon-review-lead > div:last-child {
justify-content: space-between;
}
.polygon-review-mode {
justify-content: flex-start;
}
.polygon-review-frame-metrics {
grid-template-columns: 1fr;
}
.dataset-fragment-analysis__verdict {
min-width: 0;
justify-items: start;
}
.dataset-fragment-comparison,
.dataset-fragment-risks,
.rellis-review__metrics,
.rellis-review__policy > div {
grid-template-columns: 1fr;
}
.polygon-run-picker,
.dataset-result-select,
.dataset-sequence-select,
.polygon-run-input {
align-items: stretch;
flex-direction: column;
}
.polygon-run-picker select,
.dataset-result-select select,
.dataset-sequence-select select {
width: 100%;
}
.polygon-review-controls {
grid-template-columns: auto auto auto minmax(0, 1fr);
}
.polygon-review-controls > span {
display: none;
}
.polygon-review-summary article {
grid-template-columns: minmax(0, 1fr) auto auto;
}
.polygon-review-summary article small {
grid-column: 1 / -1;
}
.polygon-qualification__heading,
.polygon-qualification__viewer > header {
display: grid;
}
.polygon-qualification__providers {
grid-template-columns: 1fr;
}
.polygon-qualification__degradations p {
grid-template-columns: 1fr 1fr;
}
.dataset-purpose ol {
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
width: 100%;
}
.dataset-entry dl {
grid-template-columns: repeat(2, minmax(0, 1fr));
}
.dataset-entry dl div + div {
border-left: 0;
}
.dataset-entry dl div:nth-child(even) {
border-left: 1px solid var(--station-hairline);
}
.dataset-entry dl div:nth-child(n + 3) {
border-top: 1px solid var(--station-hairline);
}
.dataset-entry footer {
align-items: stretch;
flex-direction: column;
}
.dataset-contract__content {
grid-template-columns: 1fr;
}
.dataset-contract summary small,
.lidar-technical-details > summary small {
display: none;
}
.lidar-device-context__verdict {
align-items: flex-start;
flex-direction: column;
}
.control-station .nodedc-header__profile-button {
display: none;
}
.landing-stage__copy {
top: 42%;
right: 1.2rem;
left: 1.2rem;
width: auto;
}
.landing-stage__copy h1 {
font-size: clamp(2.8rem, 14vw, 5rem);
}
.landing-stage__status {
top: auto;
right: 1rem;
bottom: 3.3rem;
left: 1rem;
width: auto;
max-width: none;
}
.landing-stage__footer {
right: 1rem;
bottom: 1.1rem;
left: 1rem;
}
.landing-stage__footer span:first-child {
display: none;
}
.metrics-grid,
.capability-summary,
.camera-grid,
.polygon-run-metrics,
.polygon-run-providers {
grid-template-columns: 1fr;
}
.lidar-quality-facts {
grid-template-columns: 1fr;
}
.lidar-ground-metrics,
.lidar-ground-gates {
grid-template-columns: 1fr;
}
.lidar-ground-review > header,
.lidar-ground-review__controls,
.lidar-fallback-review > header {
align-items: stretch;
flex-direction: column;
}
.lidar-ground-frame-status {
justify-items: start;
text-align: left;
}
.lidar-ground-modes {
flex-wrap: wrap;
}
.lidar-ground-frame-control input {
width: 100%;
}
.lidar-ground-frame-control {
width: 100%;
}
.lidar-ground-scene {
min-height: 22rem;
}
.lidar-ground-scene__toolbar span {
display: none;
}
.lidar-field-review__source,
.lidar-field-window-list {
grid-template-columns: 1fr;
}
.lidar-field-cloud > header,
.lidar-field-review__explanation {
align-items: stretch;
grid-template-columns: 1fr;
}
.lidar-field-cloud > header {
flex-direction: column;
}
.lidar-local-surface__heading {
flex-direction: column;
}
.lidar-local-surface__summary,
.lidar-local-surface__stage {
grid-template-columns: 1fr;
}
.lidar-local-surface__stage .lidar-ground-scene,
.lidar-local-surface__stage .lidar-ground-scene-placeholder {
min-height: 22rem;
}
.polygon-run-identity dl {
grid-template-columns: 1fr;
}
.polygon-live-heading > div:last-child {
align-items: stretch;
flex-direction: column;
}
.polygon-rover-scene {
min-height: 19rem;
}
.polygon-rover-scene__frames small,
.polygon-rover-scene__help {
display: none;
}
.polygon-run-event-list article {
grid-template-columns: 2.3rem minmax(0, 1fr);
}
.polygon-run-event-list article > span:last-child {
grid-column: 2;
}
.camera-grid {
grid-template-rows: repeat(4, minmax(14rem, 1fr));
}
.camera-slot[data-primary="true"] {
grid-row: auto;
grid-column: auto;
}
.spatial-workspace {
min-height: 38rem;
}
.spatial-toolbar,
.spatial-toolbar__actions {
align-items: stretch;
flex-direction: column;
}
.spatial-toolbar__actions {
display: grid;
grid-template-columns: repeat(3, minmax(0, 1fr));
}
.spatial-toolbar__actions .nodedc-button {
justify-content: center;
}
.scene-status--top-left {
top: 0.6rem;
left: 0.6rem;
}
.scene-device-controls {
top: 0.6rem;
max-width: calc(100% - 8rem);
}
.scene-adapter-note {
right: 0.75rem;
left: 0.75rem;
width: auto;
transform: translateY(4.8rem);
}
.scene-timeline {
grid-template-columns: auto minmax(0, 1fr) auto;
}
.scene-timeline > .nodedc-button:first-child,
.scene-timeline > code {
display: none;
}
.map-inspector {
display: block;
}
.timeline-ruler {
margin-left: 0;
}
.timeline-lane {
grid-template-columns: 5.5rem minmax(0, 1fr);
}
.timeline-lane small {
display: none;
}
.source-format-list > div {
align-items: stretch;
grid-template-columns: 1fr;
flex-direction: column;
}
.feature-row {
grid-template-columns: auto minmax(0, 1fr);
}
.feature-row > .nodedc-status {
grid-column: 2;
justify-self: start;
}
}
@media (max-height: 720px) and (min-width: 761px) {
.landing-stage__copy h1 {
font-size: clamp(2.7rem, 6vw, 5rem);
}
.landing-stage__copy p {
font-size: 0.76rem;
}
.landing-stage__actions {
margin-top: 1rem;
}
.landing-stage__status {
top: 1.2rem;
right: 1.2rem;
}
}