sanjuhs's picture
Expand training evidence and reward API sections
fb0e4c9 verified
:root {
color-scheme: light;
font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
background: #f2f4f7;
color: #17202a;
}
* {
box-sizing: border-box;
}
body {
margin: 0;
min-width: 320px;
}
button,
textarea,
select,
input {
font: inherit;
}
.hidden {
display: none !important;
}
.landing {
min-height: 100vh;
display: grid;
place-items: start center;
padding: 32px;
background: #f2f4f7;
}
.landing section {
width: min(1180px, 100%);
}
.landing h1 {
max-width: none;
font-size: 48px;
}
.route-grid {
display: grid;
grid-template-columns: repeat(3, minmax(0, 1fr));
gap: 14px;
margin-top: 24px;
}
.route-card,
.subnav a {
text-decoration: none;
color: inherit;
}
.route-card {
display: grid;
gap: 8px;
min-height: 178px;
border: 1px solid #d8e0e8;
border-radius: 8px;
padding: 18px;
background: #ffffff;
}
.route-card:hover {
border-color: #7d92a5;
}
.route-card span,
.route-card small {
color: #526170;
}
.route-card span {
font-size: 12px;
font-weight: 800;
text-transform: uppercase;
}
.route-card strong {
font-size: 24px;
}
.route-card small {
line-height: 1.45;
}
.evidence-panel,
.evidence-card {
border: 1px solid #d8e0e8;
border-radius: 8px;
background: #ffffff;
}
.evidence-panel {
margin-top: 24px;
padding: 20px;
}
.section-head h2 {
font-size: 30px;
}
.evidence-actions {
display: flex;
flex-wrap: wrap;
gap: 10px;
margin-top: 16px;
}
.evidence-actions a {
min-height: 40px;
display: inline-flex;
align-items: center;
border: 1px solid #164f73;
border-radius: 8px;
padding: 9px 12px;
background: #164f73;
color: #ffffff;
text-decoration: none;
font-weight: 800;
}
.run-table {
width: 100%;
border-collapse: collapse;
margin-top: 16px;
overflow: hidden;
border: 1px solid #d8e0e8;
border-radius: 8px;
background: #ffffff;
}
.run-table th,
.run-table td {
padding: 11px 12px;
border-bottom: 1px solid #edf1f4;
text-align: left;
vertical-align: top;
}
.run-table th {
color: #3d6f8f;
font-size: 12px;
text-transform: uppercase;
}
.run-table td:first-child {
min-width: 190px;
font-weight: 800;
color: #1b2c38;
}
.evidence-grid {
display: grid;
grid-template-columns: repeat(3, minmax(0, 1fr));
gap: 14px;
margin-top: 14px;
}
.evidence-card {
padding: 18px;
}
.evidence-card h2 {
font-size: 22px;
}
.evidence-card p {
margin: 10px 0 0;
color: #526170;
line-height: 1.5;
}
.evidence-card code {
color: #164f73;
font-weight: 800;
overflow-wrap: anywhere;
}
.subnav {
display: flex;
flex-wrap: wrap;
gap: 8px;
}
.subnav a {
border: 1px solid #d8e0e8;
border-radius: 8px;
padding: 7px 10px;
color: #526170;
font-size: 13px;
font-weight: 800;
}
.subnav a.active {
border-color: #164f73;
background: #e9f4fa;
color: #164f73;
}
.shell {
display: grid;
grid-template-columns: minmax(360px, 440px) minmax(0, 1fr);
min-height: 100vh;
}
.panel {
background: #ffffff;
border-right: 1px solid #d9e0e8;
}
.controls {
display: flex;
flex-direction: column;
gap: 14px;
padding: 24px;
overflow: auto;
max-height: 100vh;
}
.eyebrow {
margin: 0 0 6px;
font-size: 12px;
font-weight: 700;
letter-spacing: 0;
color: #3d6f8f;
text-transform: uppercase;
}
h1,
h2 {
margin: 0;
line-height: 1.05;
}
h1 {
max-width: 12ch;
font-size: 38px;
}
h2 {
font-size: 22px;
}
.intro {
margin: 12px 0 0;
color: #526170;
line-height: 1.5;
}
label {
font-size: 13px;
font-weight: 800;
color: #25313d;
}
.preset-row,
.tab-row {
display: grid;
grid-template-columns: repeat(3, minmax(0, 1fr));
gap: 8px;
}
.workflow-tabs {
position: sticky;
top: 0;
z-index: 4;
grid-template-columns: repeat(5, minmax(0, 1fr));
padding: 8px 0;
background: #ffffff;
}
.preset-row button,
.tab-row button {
min-height: 34px;
font-size: 13px;
}
textarea {
width: 100%;
min-height: 150px;
resize: vertical;
border: 1px solid #c8d2dd;
border-radius: 8px;
padding: 12px;
line-height: 1.45;
color: #192531;
background: #fbfcfd;
}
.system-box {
border: 1px solid #d8e0e8;
border-radius: 8px;
padding: 10px;
background: #fbfcfd;
}
.system-box summary {
cursor: pointer;
font-size: 13px;
font-weight: 800;
color: #25313d;
}
.system-box textarea {
min-height: 180px;
margin-top: 10px;
font-size: 12px;
}
.button-row {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
gap: 8px;
}
.env-row {
display: grid;
grid-template-columns: auto minmax(110px, 1fr) auto minmax(140px, 1fr);
align-items: center;
gap: 8px;
}
.env-row select,
.env-row input {
min-width: 0;
border: 1px solid #c8d2dd;
border-radius: 8px;
padding: 8px 10px;
color: #192531;
background: #ffffff;
}
.scad-lab {
display: grid;
gap: 10px;
border: 1px solid #d8e0e8;
border-radius: 8px;
padding: 12px;
background: #f8fbfa;
}
.scad-lab-head {
display: flex;
align-items: baseline;
justify-content: space-between;
gap: 12px;
}
.scad-lab-head span,
.scad-output {
color: #526170;
font-size: 12px;
line-height: 1.4;
}
.scad-lab textarea {
min-height: 220px;
font-family: "SFMono-Regular", Consolas, "Liberation Mono", monospace;
font-size: 12px;
}
.scad-output {
border: 1px solid #d8e0e8;
border-radius: 8px;
padding: 8px 10px;
background: #ffffff;
}
.reward-grid {
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: 6px;
margin-top: 8px;
}
.reward-grid span {
border: 1px solid #d8e0e8;
border-radius: 8px;
padding: 6px 8px;
background: #fbfcfd;
color: #25313d;
font-weight: 750;
}
.scad-output ul {
margin: 8px 0 0;
padding-left: 18px;
}
.tool-budget {
display: grid;
grid-template-columns: 1fr auto;
gap: 8px;
align-items: center;
border: 1px solid #d8e0e8;
border-radius: 8px;
padding: 10px;
background: #fbfcfd;
}
.tool-budget input {
grid-column: 1 / -1;
width: 100%;
}
.render-state {
display: grid;
gap: 6px;
border: 1px solid #d8e0e8;
border-radius: 8px;
padding: 10px;
background: #fbfcfd;
}
.render-state label {
margin: 0;
}
.render-state select {
min-height: 34px;
border: 1px solid #c8d2dd;
border-radius: 8px;
padding: 0 8px;
background: #ffffff;
color: #17202a;
font: inherit;
}
.render-state small {
color: #526170;
line-height: 1.35;
}
button {
min-height: 38px;
border: 1px solid #b9c5d2;
border-radius: 8px;
background: #ffffff;
color: #17202a;
cursor: pointer;
font-weight: 750;
}
button:hover {
border-color: #6c8296;
}
button:disabled {
cursor: wait;
opacity: 0.55;
}
button.primary {
border-color: #164f73;
background: #164f73;
color: #ffffff;
}
button.generate-only {
min-height: 46px;
font-size: 15px;
}
button.tab-button.active {
border-color: #164f73;
background: #e9f4fa;
color: #164f73;
}
.status {
border: 1px solid #d8e0e8;
border-radius: 8px;
padding: 10px 12px;
background: #f8fafc;
color: #526170;
line-height: 1.4;
}
.status.ok {
border-color: #a7d8bd;
background: #eefaf3;
color: #1d6f43;
}
.status.error {
border-color: #efb1a7;
background: #fff3f0;
color: #9a3527;
}
.status.working {
border-color: #b9d2e4;
background: #eef7fc;
color: #245979;
}
.agent-steps {
display: grid;
gap: 8px;
}
.agent-steps:empty {
display: none;
}
.agent-steps h3 {
margin: 0;
font-size: 14px;
}
.agent-step {
border: 1px solid #d8e0e8;
border-radius: 8px;
background: #fbfcfd;
overflow: hidden;
}
.agent-step summary {
display: flex;
align-items: center;
justify-content: space-between;
gap: 10px;
cursor: pointer;
padding: 9px 10px;
font-weight: 800;
}
.agent-step p {
margin: 0;
padding: 0 10px 8px;
color: #526170;
font-size: 12px;
line-height: 1.4;
}
.agent-step dl {
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: 6px;
margin: 0;
padding: 0 10px 10px;
}
.agent-step dl div {
min-width: 0;
border: 1px solid #d8e0e8;
border-radius: 8px;
padding: 6px;
background: #ffffff;
}
.agent-step dt,
.agent-step small {
color: #637383;
font-size: 11px;
}
.agent-step dt {
font-weight: 800;
text-transform: uppercase;
}
.agent-step dd {
margin: 3px 0 0;
font-size: 12px;
overflow-wrap: anywhere;
}
.agent-step small {
display: block;
padding: 0 10px 10px;
line-height: 1.35;
}
.metrics {
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: 8px;
}
.benchmark-results {
display: grid;
grid-template-columns: 1fr;
gap: 8px;
}
.benchmark-card {
border: 1px solid #d8e0e8;
border-radius: 8px;
padding: 10px;
background: #fbfcfd;
}
.benchmark-card div {
display: flex;
align-items: center;
justify-content: space-between;
gap: 12px;
}
.benchmark-card span {
color: #526170;
font-size: 12px;
font-weight: 800;
text-transform: uppercase;
}
.benchmark-card strong {
font-size: 22px;
}
.benchmark-card p {
margin: 6px 0;
font-weight: 750;
}
.benchmark-card small {
color: #637383;
}
.benchmark-card.error-card {
border-color: #efb1a7;
background: #fff7f5;
}
.benchmark-card.error-card strong,
.benchmark-card.error-card p {
color: #9a3527;
}
.metric {
min-height: 68px;
border: 1px solid #d8e0e8;
border-radius: 8px;
padding: 10px;
background: #fbfcfd;
}
.metric span {
display: block;
margin-bottom: 8px;
font-size: 12px;
color: #637383;
}
.metric strong {
font-size: 18px;
}
.json {
min-height: 180px;
max-height: 360px;
overflow: auto;
margin: 0;
border-radius: 8px;
padding: 12px;
background: #101820;
color: #dce7ef;
font-size: 12px;
line-height: 1.45;
}
.tab-panel {
display: none;
}
.tab-panel.active {
display: block;
}
.trace {
display: grid;
gap: 8px;
}
.agent-loop {
display: grid;
gap: 10px;
}
.agent-loop h3 {
margin: 4px 0 0;
font-size: 14px;
}
.loop-strip,
.iteration-grid {
display: grid;
gap: 8px;
}
.loop-strip {
grid-template-columns: repeat(auto-fit, minmax(82px, 1fr));
}
.loop-strip span,
.iteration-card,
.empty-note {
border: 1px solid #d8e0e8;
border-radius: 8px;
background: #fbfcfd;
}
.loop-strip span {
min-height: 44px;
display: grid;
place-items: center;
padding: 8px;
text-align: center;
font-size: 12px;
font-weight: 800;
color: #314253;
}
.iteration-grid {
grid-template-columns: repeat(2, minmax(0, 1fr));
}
.tool-grid {
grid-template-columns: repeat(auto-fit, minmax(130px, 1fr));
}
.iteration-card {
min-height: 78px;
padding: 10px;
}
.iteration-card span,
.iteration-card small {
display: block;
color: #637383;
font-size: 12px;
}
.iteration-card strong {
display: block;
margin: 4px 0;
font-size: 22px;
}
.empty-note {
margin: 0;
padding: 12px;
color: #526170;
}
.trace-step {
border: 1px solid #d8e0e8;
border-radius: 8px;
background: #fbfcfd;
overflow: hidden;
}
.trace-step summary {
cursor: pointer;
padding: 10px 12px;
font-weight: 800;
color: #25313d;
}
.trace-step pre {
max-height: 260px;
overflow: auto;
margin: 0;
border-top: 1px solid #d8e0e8;
padding: 12px;
background: #111923;
color: #dce7ef;
font-size: 12px;
line-height: 1.45;
}
.viewer-wrap {
display: grid;
grid-template-rows: auto minmax(0, 1fr);
min-height: 100vh;
}
.viewer-top {
display: flex;
align-items: center;
justify-content: space-between;
gap: 20px;
padding: 18px 22px;
border-bottom: 1px solid #d9e0e8;
background: #ffffff;
}
.legend {
display: flex;
flex-wrap: wrap;
justify-content: flex-end;
gap: 12px;
color: #526170;
font-size: 13px;
}
.swatch {
display: inline-block;
width: 10px;
height: 10px;
margin-right: 6px;
border-radius: 50%;
}
.swatch.plate {
background: #8ca3b7;
}
.swatch.rib {
background: #23a36f;
}
.swatch.boss {
background: #4b6f9f;
}
.swatch.slot {
background: #24313c;
}
.swatch.decorative {
background: #7aa0bd;
}
.swatch.load {
background: #dd3b3b;
}
.swatch.stress {
background: #df4a35;
}
.swatch.warning {
background: #d88b25;
}
#viewer {
width: 100%;
min-height: 0;
}
.view-captures {
display: grid;
grid-template-columns: repeat(4, minmax(0, 1fr));
gap: 10px;
padding: 10px;
border-top: 1px solid #d9e0e8;
background: #ffffff;
}
.view-captures:empty {
display: none;
}
.view-captures figure {
margin: 0;
border: 1px solid #d8e0e8;
border-radius: 8px;
overflow: hidden;
background: #f8fafc;
}
.view-captures img {
display: block;
width: 100%;
aspect-ratio: 4 / 3;
object-fit: cover;
}
.view-captures figcaption {
padding: 6px 8px;
color: #526170;
font-size: 12px;
font-weight: 800;
text-transform: capitalize;
}
canvas {
display: block;
}
@media (max-width: 880px) {
.shell {
grid-template-columns: 1fr;
}
.controls {
max-height: none;
}
.viewer-wrap {
min-height: 70vh;
}
h1 {
max-width: none;
font-size: 32px;
}
.route-grid {
grid-template-columns: 1fr;
}
.evidence-grid {
grid-template-columns: 1fr;
}
.run-table {
display: block;
overflow-x: auto;
}
}
@media (min-width: 881px) and (max-width: 1180px) {
.route-grid {
grid-template-columns: repeat(2, minmax(0, 1fr));
}
.evidence-grid {
grid-template-columns: 1fr;
}
}