@import url("https://fonts.googleapis.com/css2?family=IBM+Plex+Sans:wght@400;500;600;700&family=JetBrains+Mono:wght@500&display=swap"); :root { --bg: #0c0f14; --surface: #151922; --surface-2: #1c222d; --surface-3: #222936; --ink: #edf2f7; --muted: #9aa6b2; --line: #303946; --line-soft: rgba(136, 153, 170, 0.18); --accent: #58a6ff; --accent-2: #3fb950; --warning: #d29922; --critical: #f85149; --shadow: 0 16px 40px rgba(0, 0, 0, 0.22); color-scheme: dark; } * { box-sizing: border-box; } html, body, #root { margin: 0; min-height: 100%; background: var(--bg); color: var(--ink); font-family: "IBM Plex Sans", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; } body { min-width: 320px; overflow-x: hidden; } button, select, input { min-height: 40px; border: 1px solid var(--line); border-radius: 8px; background: #0f131a; color: var(--ink); font: inherit; } button { width: auto; padding: 9px 14px; background: var(--accent); border-color: transparent; color: #07111f; font-weight: 700; cursor: pointer; transition: background 140ms ease, border-color 140ms ease, transform 120ms ease; } button:hover:not(:disabled) { background: #79c0ff; transform: translateY(-1px); } button.secondary, .mode-toggle button { background: rgba(88, 166, 255, 0.11); border-color: rgba(88, 166, 255, 0.26); color: var(--accent); } button.secondary:hover:not(:disabled), .mode-toggle button:hover:not(:disabled) { background: rgba(88, 166, 255, 0.18); } button:disabled { cursor: not-allowed; opacity: 0.48; transform: none; } select, input { width: 100%; padding: 8px 11px; } select:focus, input:focus, button:focus { outline: 2px solid rgba(88, 166, 255, 0.32); outline-offset: 2px; } pre { margin: 0; max-height: 260px; overflow: auto; font-family: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, Monaco, monospace; font-size: 0.76rem; line-height: 1.55; white-space: pre-wrap; word-break: break-word; } table { width: 100%; border-collapse: collapse; } th, td { padding: 8px 10px; border-bottom: 1px solid var(--line-soft); text-align: left; font-size: 0.84rem; } .workbench-shell { min-height: 100vh; padding: 18px; background: linear-gradient(180deg, rgba(88, 166, 255, 0.05), transparent 240px), var(--bg); } .workbench-container { width: min(1440px, 100%); margin: 0 auto; } .panel-surface, .panel { border: 1px solid var(--line); border-radius: 8px; background: var(--surface); box-shadow: var(--shadow); } .topbar { display: grid; grid-template-columns: minmax(220px, 1fr) auto auto minmax(320px, 0.9fr); align-items: center; gap: 14px; padding: 14px; } .title-wrap { min-width: 0; } .title-wrap h1, .page h1 { margin: 0; color: var(--ink); font-size: 1.35rem; line-height: 1.1; font-weight: 800; letter-spacing: 0; } .title-wrap p, .muted { margin: 4px 0 0; color: var(--muted); font-size: 0.88rem; } .mode-toggle { display: grid; grid-template-columns: repeat(2, minmax(126px, 1fr)); gap: 6px; padding: 4px; border: 1px solid var(--line); border-radius: 8px; background: #0f131a; } .mode-toggle button { min-height: 34px; padding: 6px 10px; border-radius: 6px; box-shadow: none; } .mode-toggle button.active { background: var(--accent); color: #07111f; } .topbar-status, .topbar-actions, .button-row { display: flex; align-items: center; justify-content: flex-end; flex-wrap: wrap; gap: 8px; } .topbar-actions { display: grid; grid-template-columns: minmax(170px, 1fr) auto; } .qtip-trigger { min-height: 32px; padding: 6px 11px; } .status-chip, .panel-heading span, .med-card-header span { display: inline-flex; align-items: center; min-height: 28px; border: 1px solid var(--line); border-radius: 999px; padding: 4px 10px; background: #111821; color: var(--muted); font-size: 0.72rem; font-weight: 800; letter-spacing: 0.04em; text-transform: uppercase; white-space: nowrap; } .status-chip.live { border-color: rgba(63, 185, 80, 0.35); background: rgba(63, 185, 80, 0.13); color: #66d977; } .status-chip.idle { border-color: rgba(154, 166, 178, 0.28); } .advanced-strip { display: grid; grid-template-columns: minmax(160px, 0.4fr) minmax(260px, 1fr); gap: 12px; margin-top: 12px; padding: 14px; } .model-truth { margin-top: 12px; padding: 14px; } .model-truth.verified { border-color: rgba(63, 185, 80, 0.5); } .model-truth.unverified { border-color: rgba(210, 153, 34, 0.45); } .model-truth p { margin: 0 0 12px; color: var(--muted); font-size: 0.88rem; line-height: 1.5; } .model-truth-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 10px; } .model-truth-grid div { min-width: 0; border: 1px solid var(--line-soft); border-radius: 8px; background: var(--surface-2); padding: 10px; } .model-truth-grid span { color: var(--muted); font-size: 0.7rem; font-weight: 800; letter-spacing: 0.05em; text-transform: uppercase; } .model-truth-grid strong { display: block; margin-top: 5px; color: var(--ink); font-size: 0.86rem; line-height: 1.35; overflow-wrap: anywhere; } .field { display: flex; min-width: 0; flex-direction: column; gap: 6px; } .field span, .kpi-grid span, .action-detail-grid span, .compact-defs dt { color: var(--muted); font-size: 0.72rem; font-weight: 800; letter-spacing: 0.05em; text-transform: uppercase; } .workbench-layout { display: grid; grid-template-columns: minmax(320px, 1.05fr) minmax(320px, 0.95fr); gap: 14px; margin-top: 14px; align-items: start; } .panel-wide { grid-column: 1 / -1; } .panel-scroll { min-height: 348px; padding: 16px; } .panel-heading { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-bottom: 12px; } .inline-heading { margin-bottom: 10px; } .panel-heading h2, .panel h3, .history-grid h2 { margin: 0; color: var(--muted); font-size: 0.82rem; font-weight: 800; letter-spacing: 0.05em; text-transform: uppercase; } .panel-surface:not(.topbar, .advanced-strip) { padding: 16px; } .kpi-grid, .action-detail-grid { display: grid; grid-template-columns: repeat(4, minmax(120px, 1fr)); gap: 10px; } .kpi-grid div, .action-detail-grid div { min-width: 0; min-height: 72px; border: 1px solid var(--line-soft); border-radius: 8px; background: var(--surface-2); padding: 12px; } .kpi-grid strong, .action-detail-grid strong, .compact-defs dd { display: block; margin-top: 6px; color: var(--ink); font-size: 0.96rem; line-height: 1.25; overflow-wrap: anywhere; } .overview-lower { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; margin-top: 16px; } .overview-lower h3 { margin: 0 0 8px; color: var(--muted); font-size: 0.78rem; letter-spacing: 0.05em; text-transform: uppercase; } .compact-defs { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; margin: 0; } .compact-defs div { min-width: 0; border: 1px solid var(--line-soft); border-radius: 8px; background: #10151d; padding: 10px; } .compact-defs dd { margin-left: 0; font-size: 0.86rem; } .candidate-list, .history-list, .reward-bars, .event-log { display: flex; flex-direction: column; gap: 8px; max-height: 292px; overflow: auto; padding-right: 2px; } .candidate-row { display: grid; grid-template-columns: minmax(150px, 1fr) minmax(90px, 0.65fr) 64px; width: 100%; min-height: 58px; align-items: center; gap: 8px; border-color: var(--line-soft); background: var(--surface-2); color: var(--ink); text-align: left; box-shadow: none; } .candidate-row:hover:not(:disabled) { background: var(--surface-3); } .candidate-row.selected { border-color: rgba(88, 166, 255, 0.7); background: rgba(88, 166, 255, 0.12); box-shadow: inset 3px 0 0 var(--accent); } .candidate-row span { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .candidate-row strong { display: block; color: var(--accent); font-size: 0.82rem; } .action-console { min-height: 348px; } .action-detail-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); margin-bottom: 12px; } .action-console .field { margin-bottom: 10px; } .button-row { justify-content: flex-start; } .reward-row { display: grid; grid-template-columns: minmax(150px, 0.9fr) minmax(110px, 1fr) 56px; align-items: center; gap: 8px; font-size: 0.8rem; } .reward-row span { min-width: 0; overflow: hidden; color: var(--muted); text-overflow: ellipsis; white-space: nowrap; } .reward-row strong { color: var(--ink); font-family: "JetBrains Mono", ui-monospace, monospace; font-size: 0.76rem; text-align: right; } .reward-track { height: 7px; overflow: hidden; border-radius: 999px; background: #0f131a; } .reward-fill { height: 100%; border-radius: inherit; background: linear-gradient(90deg, var(--accent-2), var(--accent)); transition: width 220ms ease; } .med-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(210px, 1fr)); gap: 10px; } .med-card { min-width: 0; border: 1px solid var(--line-soft); border-radius: 8px; background: var(--surface-2); padding: 12px; } .med-card.high-risk { border-color: rgba(248, 81, 73, 0.42); } .med-card-header { display: flex; align-items: center; justify-content: space-between; gap: 8px; } .med-card-header strong { min-width: 0; overflow: hidden; color: var(--ink); text-overflow: ellipsis; white-space: nowrap; } .med-card-header span { border-color: rgba(248, 81, 73, 0.35); background: rgba(248, 81, 73, 0.12); color: #ff8079; font-size: 0.64rem; } .med-card p, .med-meta { margin: 6px 0 0; color: var(--muted); font-size: 0.84rem; } .med-meta { display: flex; flex-wrap: wrap; gap: 8px; } .med-meta span { color: var(--accent); } .history-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; } .history-item, .event-log div { border: 1px solid var(--line-soft); border-radius: 8px; background: var(--surface-2); padding: 10px 12px; color: var(--ink); font-size: 0.84rem; overflow-wrap: anywhere; } .history-item strong { display: block; margin-bottom: 4px; } .history-item span { color: var(--muted); } .history-item.warning { border-color: rgba(210, 153, 34, 0.32); color: #f0c36a; } .detail-panel { min-height: 220px; } .event-panel { margin-bottom: 22px; } .event-log { max-height: 210px; font-family: "JetBrains Mono", ui-monospace, monospace; } .error-banner { margin-bottom: 10px; border: 1px solid rgba(248, 81, 73, 0.36); border-radius: 8px; background: rgba(248, 81, 73, 0.12); color: #ff8b85; padding: 10px 12px; font-weight: 800; } .qtip-overlay { position: fixed; inset: 0; z-index: 1000; pointer-events: none; } .qtip-dim { position: absolute; inset: 0; background: rgba(3, 7, 12, 0.64); pointer-events: auto; } .qtip-ring { position: fixed; z-index: 1001; border: 2px solid var(--accent); border-radius: 10px; box-shadow: 0 0 0 4px rgba(88, 166, 255, 0.18), 0 0 32px rgba(88, 166, 255, 0.28); pointer-events: none; transition: top 180ms ease, left 180ms ease, width 180ms ease, height 180ms ease; } .qtip-card { position: fixed; top: var(--tip-top, 18px); left: var(--tip-left, 18px); z-index: 1002; width: min(374px, calc(100vw - 28px)); padding: 18px; pointer-events: auto; animation: qtipIn 160ms ease-out; } .qtip-header { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 10px; } .qtip-header span, .qtip-header strong { color: var(--accent); font-size: 0.72rem; font-weight: 900; letter-spacing: 0.08em; text-transform: uppercase; } .qtip-card h2 { margin: 0 0 8px; color: var(--ink); font-size: 1.05rem; letter-spacing: 0; } .qtip-card p { margin: 0; color: var(--muted); font-size: 0.9rem; line-height: 1.55; } .qtip-actions { display: flex; justify-content: flex-end; gap: 8px; margin-top: 16px; } @keyframes qtipIn { from { opacity: 0; transform: translateY(6px); } to { opacity: 1; transform: translateY(0); } } .page { padding: 20px; } .grid, .grid-mini { display: grid; grid-template-columns: repeat(2, minmax(240px, 1fr)); gap: 12px; } .list { margin: 0; padding-left: 18px; } .kpi { margin: 0; font-size: 1.6rem; font-weight: 800; } .hero-line { width: 280px; max-width: 100%; height: 4px; margin: 14px 0; border-radius: 999px; background: linear-gradient(90deg, var(--accent), var(--accent-2)); } .actions { display: flex; flex-wrap: wrap; gap: 8px; } @media (max-width: 1180px) { .topbar { grid-template-columns: 1fr; align-items: stretch; } .topbar-status, .topbar-actions { justify-content: flex-start; } .workbench-layout, .overview-lower, .history-grid { grid-template-columns: 1fr; } .panel-wide { grid-column: auto; } } @media (max-width: 760px) { .workbench-shell { padding: 10px; } .topbar, .panel-surface:not(.topbar, .advanced-strip), .advanced-strip { padding: 12px; } .mode-toggle, .topbar-actions, .advanced-strip, .model-truth-grid, .kpi-grid, .action-detail-grid, .compact-defs, .grid, .grid-mini { grid-template-columns: 1fr; } .topbar-actions button, .button-row button, .qtip-actions button { width: 100%; } .qtip-card { inset: auto 10px 14px 10px; width: auto; } .qtip-actions { flex-direction: column; } .qtip-ring { display: none; } .candidate-row, .reward-row { grid-template-columns: 1fr; } .candidate-row span, .reward-row span { white-space: normal; } .reward-row strong { text-align: left; } .panel-scroll, .action-console, .detail-panel { min-height: auto; } .candidate-list, .history-list, .reward-bars, .event-log { max-height: none; } } ::-webkit-scrollbar { width: 7px; height: 7px; } ::-webkit-scrollbar-track { background: transparent; } ::-webkit-scrollbar-thumb { border-radius: 999px; background: rgba(154, 166, 178, 0.34); }