.dashboard-frame { display: grid; box-sizing: border-box; height: 100vh; min-height: 100vh; gap: 0.45rem; grid-template-rows: auto auto minmax(0, 1fr) auto; overflow: hidden; padding: clamp(0.5rem, 0.72vw, 0.74rem); background: radial-gradient(ellipse at 50% 12%, transparent 0 44%, rgba(0, 0, 0, 0.14) 100%), linear-gradient(180deg, rgba(255, 255, 255, 0.025), transparent 9rem), var(--ui-color-frame-wash); font-variant-numeric: tabular-nums; } .dashboard-frame__header, .dashboard-header { display: grid; gap: 0.48rem; align-items: start; } .dashboard-frame__header { grid-template-columns: minmax(28rem, 1fr) minmax(31rem, 0.92fr); min-height: 4.82rem; border: var(--ui-border-strong); background: var(--ui-color-surface-panel); box-shadow: var(--ui-shadow-inset-panel); padding: 0.48rem; } .dashboard-frame__title { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 0.58rem; align-items: stretch; min-width: 0; min-height: 3.72rem; border-right: var(--ui-border); padding-right: 0.48rem; } .dashboard-frame__title-copy { display: grid; align-content: start; min-width: 0; } .dashboard-frame__actions { justify-self: end; } .dashboard-header { grid-template-columns: minmax(0, 1fr) auto; padding: var(--ui-space-3); } .dashboard-frame__header p, .dashboard-frame__header span, .dashboard-header p, .dashboard-header span, .dashboard-frame h1, .dashboard-header h1 { margin: 0; text-transform: uppercase; } .dashboard-frame__header p, .dashboard-frame__header span, .dashboard-header p, .dashboard-header span { color: var(--ui-color-muted); font-size: 0.62rem; font-weight: 800; letter-spacing: 0.04em; } .dashboard-frame h1, .dashboard-header h1 { max-width: 100%; overflow-wrap: anywhere; font-family: var(--ui-font-display); font-size: clamp(2.05rem, 3vw, 2.78rem); font-weight: 850; letter-spacing: 0; line-height: 0.82; white-space: nowrap; } .dashboard-frame__modules { display: grid; grid-template-columns: minmax(15rem, 0.66fr) minmax(17rem, 1fr); justify-content: end; gap: 0.48rem; } .dashboard-frame__panels { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); align-content: start; gap: 0.45rem; min-height: 0; overflow: hidden; } .dashboard-frame__panels .service-panel[data-layout="grid"] { grid-column: 1 / -1; } .dashboard-frame__panels .service-panel[data-layout="grid"] .panel__body { grid-template-columns: repeat(4, minmax(0, 1fr)); } .telemetry-section { display: grid; min-height: 0; border: var(--ui-border-strong); background: var(--ui-color-surface-panel); box-shadow: var(--ui-shadow-inset-panel); } .telemetry-section__header { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; min-height: 1.48rem; border-bottom: var(--ui-border); padding: 0.22rem 0.5rem; } .telemetry-section__header p, .telemetry-section__header h2, .telemetry-section__header span { margin: 0; text-transform: uppercase; } .telemetry-section__header p { color: var(--ui-color-muted); font-size: 0.46rem; font-weight: 800; letter-spacing: 0.08em; } .telemetry-section__header h2 { color: var(--ui-color-text); font-size: 0.68rem; font-weight: 850; letter-spacing: 0.04em; } .telemetry-section__header > span { border: var(--ui-border); color: var(--ui-color-text-secondary); font-size: 0.5rem; font-weight: 850; letter-spacing: 0.06em; padding: 0.18rem 0.36rem; } .telemetry-grid { display: grid; grid-template-columns: repeat(8, minmax(0, 1fr)); gap: 1px; border: 0; background: var(--ui-color-border-subtle); } .telemetry-card, .module-card, .panel, .system-state { border: var(--ui-border); background: var(--ui-color-surface-panel); color: var(--ui-color-text); } .telemetry-card { position: relative; display: grid; min-height: 4.72rem; gap: 0.22rem; background: linear-gradient( 180deg, var(--ui-color-card-gradient-start), var(--ui-color-card-gradient-end) ); border-left: 2px solid var(--ui-color-ok); box-shadow: var(--ui-shadow-inset-panel); padding: 0.34rem 0.46rem 0.36rem; } .telemetry-card[data-severity="warning"] { border-color: color-mix(in srgb, var(--ui-color-warning), transparent 42%); border-left-color: var(--ui-color-warning); } .telemetry-card[data-severity="danger"] { border-color: color-mix(in srgb, var(--ui-color-danger), transparent 22%); border-left-color: var(--ui-color-danger); color: var(--ui-color-danger); } .telemetry-card[data-severity="stale"], .telemetry-card[data-severity="unavailable"] { border-left-color: var(--ui-color-stale); color: var(--ui-color-stale); } .telemetry-card[data-severity="loading"] { border-left-color: var(--ui-color-accent); color: var(--ui-color-accent); } .telemetry-card:hover { background: var(--ui-color-surface-raised); } .telemetry-card header { display: grid; grid-template-columns: minmax(0, 1fr) auto; min-width: 0; align-items: start; gap: 0.25rem; } .telemetry-card header .icon-glyph { width: 1rem; height: 1rem; border-color: var(--ui-color-border-subtle); background: transparent; color: var(--ui-color-muted); } .telemetry-card h3, .telemetry-card p, .module-card h2, .module-card p, .service-row h3, .service-row p, .panel h2, .system-state h2, .system-state p { margin: 0; } .telemetry-card h3, .service-row h3 { overflow: hidden; font-weight: 850; letter-spacing: 0; line-height: 1.05; text-overflow: ellipsis; text-transform: uppercase; white-space: nowrap; } .telemetry-card h3 { overflow-wrap: anywhere; color: var(--ui-color-text-secondary); font-size: 0.52rem; font-weight: 850; line-height: 1.02; white-space: normal; } .telemetry-card__index { display: inline-grid; min-width: 1.05rem; margin-bottom: 0.08rem; color: var(--ui-color-muted); font-size: 0.45rem; font-weight: 850; line-height: 1; } .service-row h3 { font-size: 0.72rem; } .telemetry-card strong, .module-card strong { display: block; font-family: var(--ui-font-display); font-size: clamp(1.45rem, 2.25vw, 2.05rem); font-weight: 800; letter-spacing: 0; line-height: 0.78; white-space: nowrap; } .telemetry-card p, .module-card p, .service-row p { overflow: hidden; color: var(--ui-color-muted); line-height: 1.08; text-overflow: ellipsis; text-transform: uppercase; white-space: nowrap; } .telemetry-card p, .telemetry-card__source { font-size: 0.49rem; line-height: 1.05; } .module-card p, .service-row p { font-size: 0.56rem; } .telemetry-card__bar, .progress-meter { height: 0.2rem; border: var(--ui-border); background: var(--ui-color-surface-inset); } .telemetry-card__bar span, .progress-meter span { display: block; width: var(--metric-progress, var(--meter-progress)); height: 100%; background: currentColor; } .telemetry-card[data-severity="loading"] .telemetry-card__bar span { min-width: 1.25rem; } .line-chart { position: relative; min-width: 0; height: 0.86rem; color: var(--ui-color-accent); } .line-chart::before { position: absolute; inset: 50% 0 auto; height: 1px; background: var(--ui-color-border-subtle); content: ""; } .line-chart[data-severity="warning"] { color: var(--ui-color-warning); } .line-chart[data-severity="danger"] { color: var(--ui-color-danger); } .line-chart[data-severity="stale"], .line-chart[data-severity="unavailable"] { color: var(--ui-color-stale); } .line-chart__canvas { width: 100%; height: 100%; } .line-chart__canvas .uplot { width: 100% !important; height: 100% !important; background: transparent; font-family: var(--ui-font-mono); } .line-chart__canvas .u-over, .line-chart__canvas .u-under { overflow: visible; } .module-card { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 0.45rem; align-items: start; min-width: 0; min-height: 3.72rem; border: var(--ui-border); background: var(--ui-color-surface-module); box-shadow: var(--ui-shadow-inset-panel); padding: 0.42rem 0.48rem; } .module-card h2 { color: var(--ui-color-muted); font-size: 0.48rem; font-weight: 850; letter-spacing: 0.08em; line-height: 1; text-transform: uppercase; } .module-card strong { margin-top: 0.12rem; font-size: clamp(1.1rem, 1.55vw, 1.56rem); line-height: 0.82; overflow-wrap: anywhere; } .module-card p { margin-top: 0.18rem; color: var(--ui-color-muted); font-size: 0.45rem; line-height: 1.05; } .module-card[data-severity="ok"] .icon-glyph { border-color: color-mix(in srgb, var(--ui-color-ok), transparent 44%); background: var(--ui-color-accent-soft); color: var(--ui-color-ok); } .module-card[data-severity="warning"] { border-color: color-mix(in srgb, var(--ui-color-warning), transparent 42%); color: var(--ui-color-warning); } .module-card[data-severity="danger"] { border-color: color-mix(in srgb, var(--ui-color-danger), transparent 32%); color: var(--ui-color-danger); } .module-card[data-severity="stale"], .module-card[data-severity="unavailable"] { color: var(--ui-color-stale); } .module-card[data-severity="loading"] { color: var(--ui-color-accent); } .service-row { display: grid; grid-template-columns: 0.28rem auto minmax(0, 1fr) auto auto; gap: 0.24rem; align-items: center; min-height: 2.08rem; border: 0; border-bottom: var(--ui-border); background: transparent; color: inherit; padding: 0.14rem 0; text-decoration: none; } .service-row__status { width: 0.26rem; height: 0.72rem; background: var(--ui-color-muted); } .service-row[data-severity="ok"] .service-row__status { background: var(--ui-color-ok); } .service-row[data-severity="warning"] { border-bottom-color: color-mix(in srgb, var(--ui-color-warning), transparent 54%); } .service-row[data-severity="warning"] .service-row__status { background: var(--ui-color-warning); } .service-row[data-severity="danger"], .service-row[data-severity="unavailable"] { border-bottom-color: color-mix(in srgb, var(--ui-color-danger), transparent 50%); } .service-row[data-severity="danger"] .service-row__status, .service-row[data-severity="unavailable"] .service-row__status { background: var(--ui-color-danger); } .service-row[data-severity="loading"] { border-bottom-color: color-mix(in srgb, var(--ui-color-accent), transparent 56%); } .service-row[data-severity="loading"] .service-row__status { background: var(--ui-color-accent); } .service-row:where(a):hover { border-bottom-color: var(--ui-color-accent); background: var(--ui-color-hover); } .service-row__main { min-width: 0; } .service-row__launch { display: inline-grid; place-items: center; color: var(--ui-color-muted); } .service-row__launch .icon-glyph { width: 1rem; height: 1rem; border-color: var(--ui-color-border-subtle); background: transparent; } .status-badge { display: inline-grid; min-height: 1.12rem; align-items: center; border: var(--ui-border); background: var(--ui-color-surface-inset); padding: 0 0.32rem; color: var(--ui-color-muted); font-size: 0.5rem; font-weight: 800; letter-spacing: 0.04em; text-transform: uppercase; white-space: nowrap; } .status-badge[data-severity="ok"] { border-color: color-mix(in srgb, var(--ui-color-ok), transparent 42%); color: var(--ui-color-ok); } .status-badge[data-severity="warning"] { border-color: color-mix(in srgb, var(--ui-color-warning), transparent 35%); color: var(--ui-color-warning); } .status-badge[data-severity="danger"] { border-color: color-mix(in srgb, var(--ui-color-danger), transparent 30%); color: var(--ui-color-danger); } .status-badge[data-severity="stale"], .status-badge[data-severity="unavailable"] { color: var(--ui-color-stale); } .status-badge[data-severity="loading"] { color: var(--ui-color-accent); } .footer-cell { display: grid; grid-template-columns: auto minmax(0, 1fr); min-height: 1.72rem; align-items: center; background: var(--ui-color-surface-footer); color: inherit; text-decoration: none; } .footer-cell span, .footer-cell strong { min-width: 0; padding: 0.29rem 0.52rem; overflow-wrap: anywhere; text-transform: uppercase; } .footer-cell span { height: 100%; border-right: var(--ui-border); color: var(--ui-color-muted); font-size: 0.48rem; font-weight: 800; letter-spacing: 0.04em; } .footer-cell strong { color: var(--ui-color-text); font-size: 0.54rem; font-weight: 850; } .footer-cell[data-severity="ok"] strong { color: var(--ui-color-ok); } .footer-cell[data-severity="warning"] strong { color: var(--ui-color-warning); } .footer-cell[data-severity="danger"] strong { color: var(--ui-color-danger); } .footer-cell[data-severity="stale"] strong, .footer-cell[data-severity="unavailable"] strong { color: var(--ui-color-stale); } .footer-cell[data-severity="loading"] strong { color: var(--ui-color-accent); } .footer-cell:where(a):hover strong { color: var(--ui-color-accent); } .status-strip { display: grid; grid-template-columns: repeat(auto-fit, minmax(9rem, 1fr)); gap: 1px; border: var(--ui-border-strong); background: var(--ui-color-border); box-shadow: var(--ui-shadow-inset-panel); } .status-strip[data-compact="true"] { grid-template-columns: repeat(auto-fit, minmax(6rem, 1fr)); } .panel { position: relative; min-width: 0; background: var(--ui-color-surface-panel); box-shadow: var(--ui-shadow-inset-panel); } .panel::before, .panel::after { position: absolute; width: 0.55rem; height: 0.55rem; border-color: var(--ui-color-line-strong); content: ""; } .panel::before { top: 0.2rem; right: 0.2rem; border-top: 1px solid; border-right: 1px solid; } .panel::after { right: 0.2rem; bottom: 0.2rem; border-right: 1px solid; border-bottom: 1px solid; } .panel__header { border-bottom: var(--ui-border); padding: 0.38rem 0.55rem 0.3rem; } .panel h2 { font-family: var(--ui-font-display); font-size: clamp(1.1rem, 1.62vw, 1.55rem); font-weight: 800; line-height: 0.9; text-transform: uppercase; } .panel__body { display: grid; gap: 0.25rem; padding: 0.42rem 0.55rem 0.55rem; } .service-panel .panel__body { gap: 0; padding-block: 0.18rem 0.32rem; } .service-panel[data-layout="grid"] .service-row { min-height: 1.95rem; } .ui-button, .icon-button { display: inline-grid; align-items: center; justify-content: center; border: var(--ui-border); cursor: pointer; } .ui-button { grid-auto-flow: column; gap: var(--ui-space-2); min-height: 2.5rem; background: var(--ui-color-accent); color: var(--ui-color-canvas); font-size: 0.76rem; font-weight: 850; padding: 0 var(--ui-space-4); text-transform: uppercase; } .icon-button { width: 2.5rem; height: 2.5rem; place-items: center; background: var(--ui-color-surface-footer); color: var(--ui-color-muted); padding: 0; } .theme-toggle { display: grid; grid-template-columns: 2.72rem minmax(0, 1fr); align-items: center; width: 9.75rem; min-width: 0; min-height: 2.18rem; border: var(--ui-border-strong); background: var(--ui-color-surface-module); color: var(--ui-color-text); cursor: pointer; font: inherit; font-size: 0.55rem; font-weight: 850; letter-spacing: 0; padding: 0.13rem; text-transform: uppercase; box-shadow: var(--ui-shadow-inset-panel); } .theme-toggle:hover { border-color: var(--ui-color-accent); background: var(--ui-color-surface-raised); } .theme-toggle:active { background: var(--ui-color-surface-inset); } .theme-toggle__label { display: grid; align-self: stretch; place-items: center; border-right: var(--ui-border); color: var(--ui-color-muted); font-size: 0.48rem; font-weight: 800; line-height: 1; } .theme-toggle__switch { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0.1rem; min-width: 0; padding-left: 0.1rem; } .theme-toggle__cell { display: grid; grid-template-columns: auto auto; gap: 0.2rem; align-items: center; justify-content: center; min-height: 1.68rem; border: 1px solid transparent; color: var(--ui-color-muted); line-height: 1; padding: 0 0.22rem; white-space: nowrap; } .theme-toggle__cell[data-active="true"] { border-color: var(--ui-color-accent); background: var(--ui-color-accent-soft); color: var(--ui-color-accent); } .theme-toggle__cell > span { color: currentColor; } .theme-toggle:hover .theme-toggle__cell[data-active="false"] { border-color: var(--ui-color-line); color: var(--ui-color-text); } .theme-toggle .icon-glyph { width: 0.82rem; height: 0.82rem; border: 0; background: transparent; color: currentColor; } .theme-toggle .icon-glyph svg { width: 0.78rem; height: 0.78rem; } .icon-glyph { display: inline-grid; width: 1.55rem; height: 1.55rem; place-items: center; border: var(--ui-border); background: var(--ui-color-surface-icon); color: currentColor; line-height: 1; } .icon-glyph svg { width: 0.95rem; height: 0.95rem; } .icon-glyph[data-size="sm"] { width: 1.1rem; height: 1.1rem; } .icon-glyph[data-size="lg"] { width: 2.35rem; height: 2.35rem; } .system-state { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: var(--ui-space-3); align-items: center; padding: var(--ui-space-4); } .grid-frame { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 18rem), 1fr)); gap: var(--ui-space-3); padding: var(--ui-space-3); } .separator { background: var(--ui-color-line); } .separator[data-orientation="horizontal"] { width: 100%; height: 1px; margin-block: var(--ui-space-3); } .corner-bracket-frame, .diagonal-stripe-field, .scanline-field, .signal-trace { display: block; min-height: 3rem; } @media (max-width: 1100px) { .telemetry-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); } } @media (max-width: 1180px), (max-height: 840px) { .dashboard-frame { grid-template-rows: auto auto auto auto; height: auto; min-height: 100vh; overflow: visible; } .dashboard-frame__panels { overflow: visible; } } @media (max-width: 1180px) { .dashboard-frame__header { grid-template-columns: 1fr; } .dashboard-frame__panels { grid-template-columns: repeat(2, minmax(0, 1fr)); } .dashboard-frame__panels .service-panel[data-layout="grid"] .panel__body { grid-template-columns: repeat(2, minmax(0, 1fr)); } } @media (max-width: 780px) { .dashboard-frame__header, .dashboard-frame__title, .dashboard-header, .dashboard-frame__modules, .dashboard-frame__panels { grid-template-columns: 1fr; } .dashboard-frame__header { min-height: 0; } .dashboard-frame__title { border-right: 0; border-bottom: var(--ui-border); padding-right: 0; padding-bottom: 0.48rem; } .dashboard-frame h1, .dashboard-header h1 { white-space: normal; } .dashboard-frame__panels { overflow: visible; } .dashboard-frame__panels .service-panel[data-layout="grid"] .panel__body { grid-template-columns: 1fr; } } @media (max-width: 700px) { .telemetry-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } } @media (max-width: 580px) { .service-row { grid-template-columns: 0.28rem auto minmax(0, 1fr) auto; min-height: 2.75rem; } .service-row .status-badge { grid-column: 3; justify-self: start; } .service-row__launch { grid-column: 4; grid-row: 1; } .status-strip { grid-template-columns: repeat(2, minmax(0, 1fr)); } } @media (max-width: 420px) { .status-strip { grid-template-columns: 1fr; } }