:root { color-scheme: dark; --bg: #0a0d14; --surface: #111422; --border: rgba(255, 255, 255, 0.08); --text: #f8fbff; --muted: rgba(248, 251, 255, 0.7); --cyan: #12c2e9; --violet: #c471ed; --rose: #f64f59; --ring: rgba(18, 194, 233, 0.35); /* Fixed chart area — must stay px-based so Chart.js does not grow the layout */ --chart-h: 240px; } *, *::before, *::after { box-sizing: border-box; } body { margin: 0; min-height: 100dvh; font-family: "Inter", system-ui, -apple-system, sans-serif; color: var(--text); background: var(--bg); background-image: radial-gradient(ellipse 80% 50% at 20% 0%, rgba(18, 194, 233, 0.12), transparent 50%), radial-gradient(ellipse 70% 40% at 100% 20%, rgba(196, 113, 237, 0.1), transparent 45%), linear-gradient(180deg, #0a0d14, #101525 60%, #0a0d14); line-height: 1.5; } button, input, textarea { font: inherit; } a { color: var(--cyan); } .visually-hidden { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; } .skip-link { position: absolute; left: 12px; top: 12px; z-index: 10; padding: 8px 14px; background: var(--surface); border: 1px solid var(--border); border-radius: 8px; color: var(--text); text-decoration: none; transform: translateY(-200%); transition: transform 0.2s; } .skip-link:focus { transform: translateY(0); } .site-header { padding: 48px 20px 24px; text-align: center; border-bottom: 1px solid var(--border); } .site-header__inner { max-width: 720px; margin: 0 auto; } .eyebrow { margin: 0 0 8px; font-size: 0.7rem; font-weight: 700; letter-spacing: 0.16em; text-transform: uppercase; color: var(--muted); } h1 { margin: 0; font-size: clamp(2rem, 6vw, 3.25rem); font-weight: 800; letter-spacing: -0.06em; line-height: 1.1; background: linear-gradient(100deg, var(--cyan), var(--violet), var(--rose)); -webkit-background-clip: text; background-clip: text; color: transparent; } .tagline { margin: 16px 0 0; color: var(--muted); font-size: 1rem; line-height: 1.65; } .layout { width: min(1100px, 100% - 32px); margin: 0 auto; padding: 24px 0 64px; display: flex; flex-direction: column; gap: 20px; } .workspace-tabs { display: flex; gap: 10px; } .workspace-tab { cursor: pointer; border: 1px solid var(--border); border-radius: 999px; padding: 8px 14px; color: var(--text); background: rgba(255, 255, 255, 0.05); font-weight: 600; } .workspace-tab.is-active { background: linear-gradient(135deg, rgba(18, 194, 233, 0.22), rgba(196, 113, 237, 0.22)); border-color: rgba(255, 255, 255, 0.16); } .workspace-panel { display: flex; flex-direction: column; gap: 20px; } .workspace-panel[hidden] { display: none; } .panel { background: var(--surface); border: 1px solid var(--border); border-radius: 14px; padding: 20px 22px; box-shadow: 0 12px 40px rgba(0, 0, 0, 0.25); min-width: 0; /* prevent grid/flex overflow */ } .panel h2 { margin: 0 0 4px; font-size: 1.05rem; font-weight: 700; letter-spacing: -0.02em; } .panel__sub { margin: 0 0 16px; font-size: 0.8rem; color: var(--muted); } .train-form__row { display: grid; grid-template-columns: 1fr minmax(7rem, 9rem) auto; gap: 14px; align-items: end; } .field { display: flex; flex-direction: column; gap: 6px; min-width: 0; } .field label { font-size: 0.7rem; font-weight: 600; letter-spacing: 0.06em; text-transform: uppercase; color: var(--muted); } input, textarea { width: 100%; color: var(--text); background: rgba(255, 255, 255, 0.05); border: 1px solid rgba(255, 255, 255, 0.1); border-radius: 10px; padding: 10px 12px; outline: none; transition: border-color 0.15s, box-shadow 0.15s; } input:focus, textarea:focus { border-color: rgba(18, 194, 233, 0.5); box-shadow: 0 0 0 3px var(--ring); } .btn { cursor: pointer; border: 1px solid var(--border); border-radius: 999px; padding: 10px 18px; font-weight: 700; color: var(--text); background: rgba(255, 255, 255, 0.06); white-space: nowrap; transition: filter 0.15s, opacity 0.15s; } .btn:hover:not(:disabled) { filter: brightness(1.1); } .btn:disabled { cursor: not-allowed; opacity: 0.55; } .btn--primary { background: linear-gradient(135deg, rgba(18, 194, 233, 0.25), rgba(196, 113, 237, 0.25)); border-color: rgba(255, 255, 255, 0.12); } .status { margin: 16px 0 0; font-size: 0.9rem; color: var(--muted); } .metric-strip { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; margin: 20px 0 0; padding: 0; list-style: none; } .metric-strip li { display: flex; flex-direction: column; gap: 4px; padding: 12px 14px; background: rgba(0, 0, 0, 0.2); border: 1px solid rgba(255, 255, 255, 0.05); border-radius: 10px; min-width: 0; } .metric-strip span { font-size: 0.68rem; font-weight: 600; letter-spacing: 0.08em; text-transform: uppercase; color: var(--muted); } .metric-strip strong { font-size: clamp(1.4rem, 3.5vw, 2rem); font-weight: 800; letter-spacing: -0.04em; line-height: 1.1; } .log-stream__body { margin: 0; min-height: 140px; max-height: 260px; padding: 12px 14px; border-radius: 10px; background: rgba(0, 0, 0, 0.25); border: 1px solid rgba(255, 255, 255, 0.06); color: rgba(248, 251, 255, 0.88); font-size: 0.78rem; line-height: 1.45; overflow: auto; white-space: pre-wrap; word-break: break-word; } .stage-tester__controls { display: flex; align-items: center; gap: 12px; margin-bottom: 14px; } .stage-tester__form { display: grid; gap: 12px; } .stage-tester__buttons { display: flex; gap: 10px; } #tester-auto-prompt { min-height: 72px; resize: vertical; } /* Charts: fixed height container — this stops runaway vertical growth */ .charts__grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; margin-top: 4px; } .chart-tile { display: flex; flex-direction: column; min-width: 0; min-height: 0; } .chart-tile__head h3 { margin: 0 0 2px; font-size: 0.85rem; font-weight: 700; letter-spacing: -0.02em; } .chart-tile__head p { margin: 0; font-size: 0.75rem; color: var(--muted); } .chart-surface { position: relative; width: 100%; height: var(--chart-h); max-height: var(--chart-h); min-height: var(--chart-h); margin-top: 10px; overflow: hidden; border-radius: 10px; background: rgba(0, 0, 0, 0.2); border: 1px solid rgba(255, 255, 255, 0.04); flex-shrink: 0; contain: layout style; } /* Chart.js wraps the canvas; lock all nested layout to the fixed box */ .chart-surface > *, .chart-surface > div { position: relative !important; width: 100% !important; height: 100% !important; max-height: var(--chart-h) !important; } .chart-surface canvas { display: block; width: 100% !important; height: 100% !important; max-width: 100%; max-height: var(--chart-h) !important; } .meters { display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; } .meter { display: flex; flex-direction: column; gap: 6px; } .meter > span { font-size: 0.65rem; font-weight: 600; letter-spacing: 0.1em; text-transform: uppercase; color: var(--muted); } .meter__track { height: 8px; border-radius: 999px; background: rgba(255, 255, 255, 0.08); overflow: hidden; } .meter__fill { height: 100%; width: 0%; border-radius: inherit; background: linear-gradient(90deg, var(--cyan), var(--violet)); transition: width 0.2s ease; } .meter__fill--danger { background: linear-gradient(90deg, var(--violet), var(--rose)); } .meter strong { font-size: 1.2rem; font-weight: 700; } .chat { display: flex; flex-direction: column; gap: 10px; } .chat textarea { min-height: 100px; resize: vertical; max-height: 320px; } .chat__meta { margin: 12px 0 8px; font-size: 0.85rem; color: var(--muted); } .chat__out { min-height: 100px; padding: 16px 18px; border-radius: 10px; background: rgba(0, 0, 0, 0.25); border: 1px solid rgba(255, 255, 255, 0.06); color: rgba(248, 251, 255, 0.9); line-height: 1.65; overflow: auto; max-height: 60dvh; } .prose h1, .prose h2, .prose h3 { margin: 0.75em 0 0.35em; letter-spacing: -0.03em; } .prose :first-child { margin-top: 0; } .prose code, .prose pre { color: #c7f7ff; } @media (max-width: 800px) { .train-form__row { grid-template-columns: 1fr; } .btn { justify-self: start; width: fit-content; } .metric-strip, .charts__grid, .meters { grid-template-columns: 1fr; } } @media (max-width: 480px) { :root { --chart-h: 200px; } }