: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; } }