Files
Seg_Data_Server_Net/frontend/src/styles.css

1952 lines
31 KiB
CSS

:root {
color-scheme: dark;
--ink: #eef2e8;
--muted: #9aa89a;
--panel: #151815;
--panel-2: #1d211d;
--line: #333b32;
--field: #0d100d;
--green: #9de26f;
--amber: #d3b35b;
--red: #f07167;
--cyan: #73d2de;
--blue: #7aa2ff;
--shadow: 0 18px 50px rgba(0, 0, 0, 0.32);
font-family: "Aptos", "Segoe UI", "Noto Sans CJK SC", sans-serif;
}
* { box-sizing: border-box; }
body {
margin: 0;
min-width: 1100px;
background:
linear-gradient(90deg, rgba(157, 226, 111, 0.07) 1px, transparent 1px),
linear-gradient(180deg, rgba(115, 210, 222, 0.045) 1px, transparent 1px),
#0b0d0b;
background-size: 52px 52px;
color: var(--ink);
}
button, textarea, select {
font: inherit;
}
input, select {
font: inherit;
color: var(--ink);
}
button {
border: 0;
color: inherit;
cursor: pointer;
}
.shell {
display: grid;
grid-template-columns: 260px 1fr;
min-height: 100vh;
}
.rail {
position: sticky;
top: 0;
height: 100vh;
padding: 24px 18px;
border-right: 1px solid var(--line);
background: rgba(12, 15, 12, 0.92);
}
.brand {
display: flex;
align-items: center;
gap: 12px;
margin-bottom: 34px;
}
.mark {
width: 44px;
height: 44px;
display: grid;
place-items: center;
color: #0a0d0a;
background: var(--green);
border-radius: 7px;
}
.brand strong, .brand span {
display: block;
}
.brand span {
color: var(--muted);
font-size: 13px;
}
nav {
display: grid;
gap: 8px;
}
nav a,
nav button {
display: flex;
align-items: center;
gap: 10px;
width: 100%;
color: var(--muted);
padding: 11px 10px;
border-radius: 6px;
text-decoration: none;
background: transparent;
text-align: left;
}
nav a:hover,
nav button:hover,
nav button.active {
color: var(--ink);
background: var(--panel-2);
}
nav button.active {
border: 1px solid rgba(157, 226, 111, 0.42);
background: rgba(157, 226, 111, 0.08);
}
nav button span {
min-width: 0;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.workspace {
padding: 26px;
}
.topbar {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 22px;
}
.eyebrow {
margin: 0 0 6px;
color: var(--green);
font-size: 12px;
letter-spacing: 0;
text-transform: uppercase;
}
h1, h2 {
margin: 0;
letter-spacing: 0;
}
h1 {
font-size: 28px;
font-weight: 720;
}
h2 {
font-size: 18px;
}
.pageHint {
display: block;
margin-top: 7px;
color: var(--muted);
font-size: 13px;
}
.shell[data-page="overview"] [data-page-section]:not([data-page-section~="overview"]),
.shell[data-page="datasets"] [data-page-section]:not([data-page-section~="datasets"]),
.shell[data-page="training"] [data-page-section]:not([data-page-section~="training"]),
.shell[data-page="inference"] [data-page-section]:not([data-page-section~="inference"]),
.shell[data-page="results"] [data-page-section]:not([data-page-section~="results"]),
.shell[data-page="system"] [data-page-section]:not([data-page-section~="system"]),
.shell[data-page="agents"] [data-page-section]:not([data-page-section~="agents"]) {
display: none;
}
.iconButton, .primary {
height: 38px;
display: inline-flex;
align-items: center;
justify-content: center;
gap: 8px;
border-radius: 6px;
}
.iconButton {
width: 38px;
background: var(--panel-2);
border: 1px solid var(--line);
}
.primary {
padding: 0 14px;
background: var(--green);
color: #0b0d0b;
font-weight: 700;
}
.primary.secondary {
background: var(--cyan);
}
.primary:disabled, .iconButton:disabled {
opacity: 0.5;
cursor: not-allowed;
}
.alert {
padding: 12px 14px;
border: 1px solid rgba(240, 113, 103, 0.5);
background: rgba(240, 113, 103, 0.12);
border-radius: 6px;
margin-bottom: 18px;
}
.metrics, .grid {
display: grid;
gap: 16px;
}
.metrics {
grid-template-columns: repeat(5, minmax(0, 1fr));
margin-bottom: 16px;
}
.capSummary {
display: grid;
grid-template-columns: repeat(6, minmax(0, 1fr));
gap: 10px;
margin-bottom: 12px;
}
.capSummary div {
min-width: 0;
padding: 10px;
border-radius: 7px;
border: 1px solid var(--line);
background: #101310;
}
.capSummary span,
.capSummary strong {
display: block;
}
.capSummary span {
color: var(--muted);
font-size: 11px;
}
.capSummary strong {
margin-top: 3px;
font-size: 20px;
}
.capabilityGrid {
display: grid;
grid-template-columns: repeat(7, minmax(0, 1fr));
gap: 9px;
}
.capCard {
min-width: 0;
display: grid;
gap: 8px;
padding: 10px;
border-radius: 7px;
border: 1px solid var(--line);
background: #101310;
}
.capCard.ok {
border-color: rgba(157, 226, 111, 0.32);
}
.capCard.bad {
border-color: rgba(240, 113, 103, 0.55);
}
.capHead {
min-width: 0;
display: grid;
grid-template-columns: minmax(0, 1fr) auto;
gap: 8px;
}
.capHead strong {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.capHead span {
color: var(--green);
font-size: 11px;
font-weight: 760;
}
.capCard.bad .capHead span {
color: var(--red);
}
.capNumbers {
display: grid;
gap: 3px;
color: var(--muted);
font-size: 11px;
}
.capTags {
display: grid;
gap: 4px;
}
.capTags small {
min-width: 0;
padding: 4px 5px;
border-radius: 4px;
background: #080a08;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.requirementStrip {
display: flex;
flex-wrap: wrap;
gap: 6px;
margin-top: 12px;
}
.requirementStrip span {
padding: 5px 7px;
border: 1px solid var(--line);
border-radius: 999px;
color: var(--muted);
background: #101310;
font-size: 11px;
}
.requirementStrip span.ok {
color: var(--green);
border-color: rgba(157, 226, 111, 0.32);
}
.requirementStrip span.bad {
color: var(--red);
border-color: rgba(240, 113, 103, 0.55);
}
.metric, .panel {
border: 1px solid var(--line);
background: rgba(21, 24, 21, 0.94);
border-radius: 8px;
box-shadow: var(--shadow);
}
.metric {
display: grid;
grid-template-columns: 28px 1fr auto;
align-items: center;
gap: 12px;
padding: 16px;
}
.metric span, .muted, small {
color: var(--muted);
}
.metric strong {
font-size: 24px;
}
.grid.two {
grid-template-columns: minmax(0, 1.35fr) minmax(360px, 0.65fr);
margin-bottom: 16px;
}
.grid.three {
grid-template-columns: repeat(3, minmax(0, 1fr));
margin-bottom: 16px;
}
.grid.four {
grid-template-columns: repeat(4, minmax(0, 1fr));
margin-bottom: 16px;
}
.panel {
padding: 18px;
min-width: 0;
}
.panelHead {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 16px;
}
.taskColumns {
display: grid;
grid-template-columns: repeat(6, minmax(0, 1fr));
gap: 10px;
}
.taskGroup {
min-width: 0;
}
.taskGroup > span {
display: block;
color: var(--amber);
font-size: 12px;
margin-bottom: 8px;
}
.taskGroup button {
width: 100%;
display: block;
text-align: left;
padding: 8px;
margin-bottom: 6px;
border-radius: 5px;
background: #101310;
border: 1px solid transparent;
color: var(--muted);
font-size: 12px;
overflow-wrap: anywhere;
}
.taskGroup button.selected {
border-color: var(--green);
color: var(--ink);
background: rgba(157, 226, 111, 0.08);
}
.gpuSelector {
display: grid;
gap: 10px;
margin-top: 14px;
padding: 10px;
border: 1px solid var(--line);
border-radius: 7px;
background: #101310;
}
.gpuSelector > div:first-child {
min-width: 0;
display: grid;
grid-template-columns: minmax(0, 1fr) auto;
align-items: center;
gap: 8px;
}
.gpuSelector span {
color: var(--muted);
font-size: 12px;
}
.gpuSelector strong {
min-width: 0;
color: var(--green);
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.gpuPicker {
display: grid;
grid-template-columns: repeat(4, minmax(0, 1fr));
gap: 8px;
}
.gpuPicker button {
min-width: 0;
min-height: 38px;
display: grid;
grid-template-columns: auto minmax(0, 1fr);
align-items: center;
gap: 6px;
padding: 7px 8px;
border-radius: 6px;
border: 1px solid var(--line);
background: #080a08;
color: var(--muted);
}
.gpuPicker button.selected {
border-color: var(--green);
color: var(--ink);
background: rgba(157, 226, 111, 0.08);
}
.gpuPicker button svg {
color: var(--green);
}
.gpuPicker button span,
.gpuPicker button small {
min-width: 0;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.gpuPicker button small {
grid-column: 2;
color: var(--muted);
font-size: 10px;
}
.runtimeSelector {
margin-top: 10px;
padding: 10px;
border: 1px solid var(--line);
border-radius: 7px;
background: #101310;
}
.runtimeSelector label {
display: grid;
gap: 7px;
}
.runtimeSelector span {
color: var(--muted);
font-size: 12px;
}
.runtimeSelector select {
width: 100%;
height: 38px;
padding: 0 10px;
border-radius: 6px;
border: 1px solid var(--line);
background: var(--field);
color: var(--ink);
}
.field {
display: grid;
gap: 8px;
margin-top: 14px;
}
.field span {
color: var(--muted);
font-size: 13px;
}
textarea {
width: 100%;
min-height: 180px;
resize: vertical;
padding: 12px;
color: var(--ink);
background: var(--field);
border: 1px solid var(--line);
border-radius: 6px;
font-family: "Cascadia Code", "JetBrains Mono", monospace;
font-size: 13px;
}
.field.compact {
margin-top: 0;
}
.field input,
.field select {
width: 100%;
height: 38px;
padding: 0 10px;
border-radius: 6px;
border: 1px solid var(--line);
background: var(--field);
}
.pathStack,
.inferenceForm,
.modelList,
.pipelinePanel,
.pipelineSteps,
.pipelineStats,
.pipelineExample {
display: grid;
gap: 10px;
}
.pathStack div {
min-width: 0;
display: grid;
gap: 5px;
}
.pathStack span,
.pipelineExample span,
.pipelineStats span {
color: var(--muted);
font-size: 11px;
}
.pathStack code {
display: block;
padding: 9px;
border: 1px solid var(--line);
border-radius: 6px;
background: #080a08;
color: var(--ink);
overflow-wrap: anywhere;
}
.pipelineExample {
grid-template-columns: repeat(2, minmax(0, 1fr));
}
.pipelineExample div,
.pipelineSteps div,
.pipelineStats div {
min-width: 0;
padding: 10px;
border-radius: 7px;
border: 1px solid var(--line);
background: #101310;
}
.pipelineExample strong,
.pipelineExample small,
.pipelineSteps strong,
.pipelineSteps small,
.pipelineStats strong {
display: block;
min-width: 0;
}
.pipelineExample strong,
.pipelineStats strong {
margin-top: 3px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.pipelineExample small,
.pipelineSteps small {
margin-top: 5px;
color: var(--muted);
line-height: 1.4;
}
.pipelineSteps {
grid-template-columns: repeat(4, minmax(0, 1fr));
}
.pipelineSteps div {
display: grid;
align-content: start;
gap: 6px;
}
.pipelineSteps span {
width: 24px;
height: 24px;
display: grid;
place-items: center;
border-radius: 6px;
background: var(--green);
color: #0b0d0b;
font-weight: 760;
}
.pipelineStats {
grid-template-columns: repeat(4, minmax(0, 1fr));
}
.modelList {
margin-top: 14px;
max-height: 330px;
overflow: auto;
}
.modelList a {
min-width: 0;
display: grid;
gap: 3px;
padding: 9px;
border-radius: 6px;
border: 1px solid var(--line);
background: #101310;
color: var(--ink);
text-decoration: none;
}
.modelList a.selected {
border-color: var(--green);
background: rgba(157, 226, 111, 0.08);
}
.modelList span,
.modelList small {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.inferencePreview {
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: 14px;
}
.inferencePreview > div {
min-width: 0;
display: grid;
gap: 10px;
}
.datasetForm {
display: grid;
gap: 12px;
}
.segmented {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 6px;
padding: 4px;
border: 1px solid var(--line);
background: #101310;
border-radius: 7px;
}
.segmented button {
height: 34px;
border-radius: 5px;
background: transparent;
color: var(--muted);
}
.segmented button.active {
background: var(--green);
color: #0b0d0b;
font-weight: 760;
}
.drop {
min-height: 118px;
display: grid;
place-items: center;
gap: 8px;
position: relative;
border: 1px dashed #526052;
border-radius: 8px;
background: rgba(13, 16, 13, 0.8);
color: var(--muted);
text-align: center;
overflow: hidden;
}
.drop input {
position: absolute;
inset: 0;
opacity: 0;
cursor: pointer;
}
.buttonRow {
display: flex;
gap: 10px;
}
.buttonRow.compactButtons {
gap: 8px;
}
.opGrid {
display: grid;
grid-template-columns: repeat(4, minmax(0, 1fr));
gap: 8px;
}
.opGrid button {
min-width: 0;
height: 42px;
display: inline-flex;
align-items: center;
justify-content: center;
gap: 6px;
padding: 0 8px;
border-radius: 6px;
border: 1px solid var(--line);
background: #101310;
color: var(--muted);
font-size: 12px;
}
.opGrid button:hover {
color: var(--ink);
border-color: var(--green);
}
.opGrid span {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.datasetList {
display: grid;
gap: 10px;
max-height: 420px;
overflow: auto;
}
.coverageGrid {
display: grid;
grid-template-columns: repeat(6, minmax(0, 1fr));
gap: 10px;
margin-bottom: 14px;
}
.coverageGrid div {
min-width: 0;
padding: 14px;
border: 1px solid var(--line);
border-radius: 7px;
background: #101310;
}
.coverageGrid span,
.coverageGrid strong {
display: block;
}
.coverageGrid span {
color: var(--muted);
font-size: 12px;
}
.coverageGrid strong {
margin-top: 6px;
font-size: 24px;
}
.coverageStatus {
display: grid;
gap: 8px;
color: var(--muted);
}
.coverageStatus code {
min-width: 0;
padding: 8px;
border-radius: 5px;
border: 1px solid var(--line);
background: #080a08;
color: var(--ink);
white-space: normal;
overflow-wrap: anywhere;
}
.acceptanceArtifacts {
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: 8px;
}
.acceptanceArtifacts a {
min-width: 0;
display: grid;
gap: 3px;
padding: 8px;
border-radius: 6px;
border: 1px solid var(--line);
background: #101310;
color: var(--ink);
text-decoration: none;
}
.acceptanceArtifacts span,
.acceptanceArtifacts small {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.taskCheckList {
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: 8px;
max-height: 280px;
overflow: auto;
}
.taskCheckList div {
min-width: 0;
padding: 9px;
border-radius: 6px;
border: 1px solid var(--line);
background: #101310;
}
.taskCheckList div.ok {
border-color: rgba(157, 226, 111, 0.32);
}
.taskCheckList div.bad {
border-color: rgba(240, 113, 103, 0.55);
}
.taskCheckList span,
.taskCheckList small {
display: block;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.agentPanel {
min-height: 360px;
}
.agentScore {
display: grid;
grid-template-columns: auto minmax(0, 1fr);
align-items: end;
gap: 12px;
margin-bottom: 12px;
}
.agentScore strong {
font-size: 38px;
line-height: 1;
}
.agentScore span {
min-width: 0;
color: var(--muted);
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.suggestionList,
.agentCheckList {
display: grid;
gap: 8px;
}
.suggestionList {
margin-bottom: 12px;
}
.suggestionList div,
.agentCheckList div {
min-width: 0;
padding: 9px;
border-radius: 6px;
border: 1px solid var(--line);
background: #101310;
}
.suggestionList div {
color: var(--ink);
line-height: 1.45;
}
.agentCheckList {
grid-template-columns: repeat(2, minmax(0, 1fr));
max-height: 310px;
overflow: auto;
}
.agentCheckList div.ok {
border-color: rgba(157, 226, 111, 0.32);
}
.agentCheckList div.bad {
border-color: rgba(240, 113, 103, 0.55);
}
.agentCheckList span,
.agentCheckList small {
display: block;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.agentCheckList small {
color: var(--muted);
margin-top: 2px;
}
.userAgentDataset {
display: grid;
grid-template-columns: repeat(4, minmax(0, 1fr));
gap: 8px;
margin-bottom: 12px;
}
.userAgentDataset div,
.userAgentDataset a {
min-width: 0;
display: grid;
gap: 3px;
padding: 9px;
border-radius: 6px;
border: 1px solid var(--line);
background: #101310;
color: var(--ink);
text-decoration: none;
}
.userAgentDataset span,
.userAgentDataset strong,
.userAgentDataset a {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.userAgentDataset span {
color: var(--muted);
font-size: 11px;
}
.userAgentDataset a {
color: var(--green);
align-content: center;
}
.datasetCard {
width: 100%;
display: block;
text-align: left;
padding: 12px;
border: 1px solid var(--line);
border-radius: 7px;
background: #101310;
color: var(--ink);
cursor: pointer;
}
.datasetCard.selected {
border-color: var(--green);
background: rgba(157, 226, 111, 0.08);
}
.datasetCardHead {
display: flex;
justify-content: space-between;
gap: 12px;
margin-bottom: 10px;
}
.datasetCardHead span {
color: var(--muted);
font-size: 12px;
}
.sampleStrip {
display: grid;
grid-template-columns: repeat(3, minmax(0, 1fr));
gap: 8px;
}
.sampleStrip a {
min-width: 0;
padding: 8px;
border-radius: 5px;
border: 1px solid var(--line);
text-decoration: none;
color: var(--ink);
background: #0b0d0b;
}
.sampleStrip span,
.sampleStrip small {
display: block;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.sampleStrip span {
color: var(--green);
font-size: 11px;
}
.readinessLine {
display: flex;
align-items: center;
gap: 8px;
margin-bottom: 10px;
}
.qualityBox {
display: grid;
gap: 10px;
margin-top: 12px;
padding: 12px;
border: 1px solid var(--line);
border-radius: 7px;
background: #0b0d0b;
}
.datasetOutputBox {
display: grid;
gap: 10px;
margin-top: 12px;
padding: 12px;
border: 1px solid var(--line);
border-radius: 7px;
background: #0b0d0b;
}
.qualityHead {
display: flex;
justify-content: space-between;
gap: 12px;
}
.qualityHead span {
color: var(--green);
font-size: 12px;
font-weight: 760;
}
.qualityStats {
display: grid;
grid-template-columns: repeat(4, minmax(0, 1fr));
gap: 8px;
}
.qualityStats div,
.qualityChecks div {
min-width: 0;
padding: 8px;
border: 1px solid var(--line);
border-radius: 6px;
background: #101310;
}
.qualityStats span,
.qualityStats strong,
.qualityChecks span,
.qualityChecks small {
display: block;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.qualityStats span {
color: var(--muted);
font-size: 11px;
}
.qualityChecks {
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: 8px;
}
.qualityChecks .ok {
border-color: rgba(157, 226, 111, 0.32);
}
.qualityChecks .bad {
border-color: rgba(240, 113, 103, 0.55);
}
.datasetOutputLinks {
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: 8px;
}
.datasetOutputLinks a {
min-width: 0;
display: grid;
grid-template-columns: minmax(0, 1fr) auto;
gap: 8px;
padding: 8px;
border-radius: 6px;
border: 1px solid var(--line);
background: #101310;
color: var(--ink);
text-decoration: none;
}
.datasetOutputLinks span,
.datasetOutputLinks small {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.datasetOutputCurve {
display: grid;
gap: 8px;
padding: 8px;
border-radius: 6px;
border: 1px solid var(--line);
background: #101310;
}
.datasetOutputCurve > div {
min-width: 0;
display: flex;
align-items: center;
justify-content: space-between;
gap: 8px;
}
.datasetOutputCurve strong,
.datasetOutputCurve span {
min-width: 0;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.datasetOutputCurve strong {
flex: 1 1 auto;
}
.datasetOutputCurve span {
flex: 0 1 auto;
color: var(--muted);
font-size: 11px;
}
.datasetOutputCurve .curveSvg,
.datasetOutputCurve .curveEmpty {
min-height: 96px;
aspect-ratio: 2.6 / 1;
border-radius: 6px;
}
.datasetOutputPreview {
display: grid;
grid-template-columns: repeat(3, minmax(0, 1fr));
gap: 8px;
}
.datasetOutputPreview a {
min-width: 0;
overflow: hidden;
border-radius: 6px;
border: 1px solid var(--line);
background: #101310;
color: var(--muted);
text-decoration: none;
}
.datasetOutputPreview img {
display: block;
width: 100%;
aspect-ratio: 1.35 / 1;
object-fit: cover;
background: #060806;
}
.datasetOutputPreview span {
display: block;
padding: 6px;
font-size: 11px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.jobList, .resultList {
display: grid;
gap: 8px;
max-height: 460px;
overflow: auto;
}
.jobRow, .resultList a {
min-width: 0;
display: grid;
grid-template-columns: minmax(0, 1fr) minmax(0, auto);
gap: 8px;
text-align: left;
padding: 10px;
border-radius: 6px;
background: #101310;
border: 1px solid var(--line);
text-decoration: none;
color: var(--ink);
}
.jobRow {
grid-template-columns: 1fr;
}
.resultList span,
.resultList small {
min-width: 0;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.resultList small {
color: var(--muted);
}
.resultBrowser {
display: grid;
gap: 10px;
}
.resultFilters {
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: 8px;
}
.resultFilters .wide {
grid-column: 1 / -1;
}
.resultFilters label {
min-width: 0;
display: grid;
gap: 6px;
}
.resultFilters span {
color: var(--muted);
font-size: 11px;
}
.resultFilters select,
.resultFilters input {
width: 100%;
height: 36px;
padding: 0 9px;
border-radius: 6px;
border: 1px solid var(--line);
background: var(--field);
color: var(--ink);
}
.resultSummary {
display: flex;
align-items: baseline;
gap: 5px;
color: var(--muted);
font-size: 12px;
}
.resultSummary strong {
color: var(--green);
font-size: 24px;
line-height: 1;
}
.jobRowTop {
min-width: 0;
display: grid;
grid-template-columns: minmax(0, 1fr) auto;
align-items: center;
gap: 8px;
}
.jobRowTop span:first-child {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.jobRow small {
display: block;
min-width: 0;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.progressBox {
display: grid;
gap: 5px;
}
.progressTrack {
width: 100%;
height: 7px;
overflow: hidden;
border-radius: 999px;
background: #080a08;
border: 1px solid rgba(238, 242, 232, 0.1);
}
.progressTrack span {
display: block;
min-width: 0;
height: 100%;
border-radius: inherit;
background: var(--cyan);
transition: width 180ms ease;
}
.progressBox[data-stage="completed"] .progressTrack span,
.progressBox[data-stage="saving"] .progressTrack span {
background: var(--green);
}
.progressBox[data-stage="failed"] .progressTrack span {
background: var(--red);
}
.progressBox[data-stage="cancelled"] .progressTrack span {
background: var(--amber);
}
.progressMeta {
min-width: 0;
display: grid;
grid-template-columns: minmax(0, 1fr) auto;
align-items: center;
gap: 8px;
color: var(--muted);
font-size: 11px;
}
.progressMeta span {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.progressMeta strong {
color: var(--ink);
font-size: 11px;
}
.pill {
padding: 3px 8px;
border-radius: 999px;
font-size: 12px;
border: 1px solid var(--line);
}
.pill-running { color: var(--cyan); }
.pill-success { color: var(--green); }
.pill-failed { color: var(--red); }
.pill-cancelled { color: var(--amber); }
.pill-queued { color: var(--muted); }
.gpu {
display: grid;
gap: 9px;
margin-bottom: 14px;
}
.gpu strong, .gpu span {
display: block;
}
.gpu span {
color: var(--muted);
font-size: 13px;
}
meter {
width: 100%;
height: 12px;
accent-color: var(--green);
}
.envList {
display: grid;
gap: 10px;
}
.envCard {
min-width: 0;
display: grid;
gap: 8px;
padding: 10px;
border-radius: 7px;
border: 1px solid var(--line);
background: #101310;
}
.envCard.ok {
border-color: rgba(157, 226, 111, 0.32);
}
.envCard.bad {
border-color: rgba(240, 113, 103, 0.55);
}
.envHead {
min-width: 0;
display: grid;
grid-template-columns: minmax(0, 1fr) auto;
gap: 8px;
align-items: start;
}
.envHead strong,
.envHead small {
display: block;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.envHead small {
color: var(--muted);
margin-top: 2px;
}
.envHead > span {
color: var(--green);
font-size: 11px;
font-weight: 760;
}
.envCard.bad .envHead > span {
color: var(--red);
}
.envChecks {
display: flex;
flex-wrap: wrap;
gap: 5px;
}
.envChecks span {
max-width: 100%;
padding: 4px 6px;
border-radius: 5px;
border: 1px solid rgba(238, 242, 232, 0.1);
color: var(--muted);
background: #080a08;
font-size: 11px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.envChecks span.ok {
color: var(--green);
}
.envChecks span.bad {
color: var(--red);
}
.bigNumber {
font-size: 54px;
font-weight: 760;
line-height: 1;
}
.weightVerify {
margin-top: 10px;
padding: 7px 8px;
border-radius: 6px;
border: 1px solid var(--line);
font-size: 12px;
}
.weightVerify.ok {
color: var(--green);
border-color: rgba(157, 226, 111, 0.34);
background: rgba(157, 226, 111, 0.08);
}
.weightVerify.bad {
color: var(--red);
border-color: rgba(240, 113, 103, 0.45);
background: rgba(240, 113, 103, 0.08);
}
.weightFamilies {
display: flex;
flex-wrap: wrap;
gap: 6px;
margin-top: 12px;
}
.weightFamilies span {
padding: 5px 7px;
border-radius: 999px;
border: 1px solid var(--line);
background: #080a08;
color: var(--muted);
font-size: 11px;
}
.weightList {
display: grid;
gap: 7px;
max-height: 220px;
margin-top: 12px;
overflow: auto;
}
.weightList a {
min-width: 0;
display: grid;
gap: 3px;
padding: 8px;
border-radius: 6px;
border: 1px solid var(--line);
background: #080a08;
color: var(--ink);
text-decoration: none;
}
.weightList span,
.weightList small {
min-width: 0;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.weightList small {
color: var(--muted);
font-size: 11px;
}
.chips {
display: flex;
flex-wrap: wrap;
gap: 8px;
margin-top: 14px;
}
.chips span {
padding: 6px 9px;
border: 1px solid var(--line);
border-radius: 999px;
color: var(--muted);
background: #101310;
font-size: 12px;
}
.logPanel pre {
min-height: 340px;
max-height: 520px;
overflow: auto;
margin: 12px 0 0;
padding: 14px;
color: #dbe7d8;
background: #080a08;
border: 1px solid var(--line);
border-radius: 6px;
font-family: "Cascadia Code", "JetBrains Mono", monospace;
font-size: 12px;
line-height: 1.55;
white-space: pre-wrap;
}
.jobDiagnostics {
display: grid;
gap: 9px;
margin-top: 12px;
}
.jobDetailGrid {
display: grid;
grid-template-columns: repeat(4, minmax(0, 1fr));
gap: 8px;
}
.jobDetailGrid div {
min-width: 0;
display: grid;
gap: 3px;
padding: 8px;
border: 1px solid var(--line);
border-radius: 6px;
background: #080a08;
}
.jobDetailGrid span,
.jobPath span {
color: var(--muted);
font-size: 11px;
}
.jobDetailGrid strong {
min-width: 0;
color: var(--ink);
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.jobPath {
min-width: 0;
display: grid;
gap: 4px;
}
.jobPath code {
display: block;
padding: 8px;
border: 1px solid var(--line);
border-radius: 6px;
background: #080a08;
color: var(--muted);
overflow-wrap: anywhere;
}
.jobError {
padding: 8px;
border: 1px solid rgba(240, 113, 103, 0.45);
border-radius: 6px;
color: var(--red);
background: rgba(240, 113, 103, 0.08);
overflow-wrap: anywhere;
}
.jobDetailBlock {
min-width: 0;
border: 1px solid var(--line);
border-radius: 6px;
background: #080a08;
}
.jobDetailBlock summary {
cursor: pointer;
padding: 8px;
color: var(--green);
font-size: 12px;
}
.jobDetailBlock pre {
min-height: 0;
max-height: 180px;
margin: 0;
border-width: 1px 0 0;
border-radius: 0;
overflow-wrap: anywhere;
}
.curvePanel {
display: grid;
gap: 10px;
}
.curvePanel select {
width: 100%;
height: 38px;
padding: 0 10px;
border-radius: 6px;
border: 1px solid var(--line);
background: var(--field);
}
.curveSvg, .curveEmpty {
width: 100%;
aspect-ratio: 2.7 / 1;
min-height: 160px;
border: 1px solid var(--line);
border-radius: 7px;
background: #080a08;
}
.curveSvg .axis {
stroke: rgba(238, 242, 232, 0.28);
stroke-width: 1;
}
.curveSvg .gridLine {
stroke: rgba(238, 242, 232, 0.08);
stroke-width: 1;
}
.curveLegend {
display: grid;
gap: 7px;
}
.curveLegend a {
display: grid;
grid-template-columns: 10px minmax(0, 1fr) auto;
align-items: center;
gap: 8px;
padding: 8px;
border: 1px solid var(--line);
border-radius: 6px;
background: #101310;
text-decoration: none;
color: var(--ink);
}
.curveLegend i {
width: 10px;
height: 10px;
border-radius: 999px;
}
.curveLegend span {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
@media (max-width: 980px) {
body {
min-width: 0;
}
.shell {
grid-template-columns: 1fr;
}
.rail {
position: static;
height: auto;
display: grid;
grid-template-columns: auto 1fr;
gap: 12px;
padding: 14px;
}
.brand {
margin-bottom: 0;
}
nav {
grid-template-columns: repeat(4, minmax(0, 1fr));
align-items: center;
}
nav a,
nav button {
justify-content: center;
padding: 10px 6px;
}
nav a svg,
nav button svg {
flex: none;
}
nav a,
nav button {
font-size: 0;
}
.workspace {
padding: 16px;
}
.topbar, .panelHead {
align-items: flex-start;
gap: 12px;
}
.metrics,
.capSummary,
.capabilityGrid,
.grid.two,
.grid.three,
.grid.four,
.taskColumns {
grid-template-columns: 1fr;
}
.coverageGrid {
grid-template-columns: repeat(2, minmax(0, 1fr));
}
.opGrid,
.sampleStrip,
.datasetOutputLinks,
.datasetOutputPreview,
.gpuPicker,
.taskCheckList,
.agentCheckList,
.jobDetailGrid,
.qualityStats,
.qualityChecks,
.pipelineExample,
.pipelineSteps,
.pipelineStats,
.inferencePreview,
.userAgentDataset {
grid-template-columns: repeat(2, minmax(0, 1fr));
}
}
.resultList a:hover, .jobRow:hover {
border-color: var(--green);
}
.resultList.tight {
max-height: 290px;
}
.insight {
min-height: 350px;
}
.previewGrid {
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: 10px;
}
.previewGrid a {
min-width: 0;
border: 1px solid var(--line);
border-radius: 7px;
overflow: hidden;
color: var(--ink);
text-decoration: none;
background: #0b0d0b;
}
.previewGrid img {
display: block;
width: 100%;
aspect-ratio: 16 / 10;
object-fit: cover;
background: #060806;
}
.previewGrid span {
display: block;
padding: 8px;
color: var(--muted);
font-size: 12px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
@media (min-width: 981px) and (max-width: 1180px) {
body { min-width: 960px; }
.shell { grid-template-columns: 220px 1fr; }
.metrics { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.taskColumns { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.opGrid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.coverageGrid,
.taskCheckList { grid-template-columns: 1fr; }
.grid.three { grid-template-columns: 1fr; }
.shell[data-page="agents"] .grid.three { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.grid.two { grid-template-columns: 1fr; }
}