Spaces:
Paused
Paused
Download src/dashboard/static/styles.css from ThomasHeisig/Brain-5D-Space: direct link, hf CLI and curl.
- Browser
- Download file 224 kB
-
https://huggingface.co/spaces/ThomasHeisig/Brain-5D-Space/resolve/main/src/dashboard/static/styles.css
- Command line
-
hf download hf://spaces/ThomasHeisig/Brain-5D-Space/src/dashboard/static/styles.css
-
curl -L -o styles.css https://huggingface.co/spaces/ThomasHeisig/Brain-5D-Space/resolve/main/src/dashboard/static/styles.css
224 kB
| /* Canonical dashboard entry point. Component rules are imported once here so | |
| the cascade has one predictable owner. The consolidation layer is at EOF. */ | |
| @import url("./dashboard-shell.css"); | |
| @import url("./dashboard-experience.css"); | |
| @import url("./control-panel.css"); | |
| @import url("./operator_console.css"); | |
| @import url("./embodiment-self-model.css"); | |
| @import url("./wesen.css"); | |
| @import url("./wesen-adaptive.css"); | |
| @import url("./wesen-anatomy-v3.css"); | |
| @import url("./wesen-organism.css"); | |
| @import url("./wesen-neural-symbiosis.css"); | |
| /* ============================================================================ | |
| Brain-5D Operator Dashboard – Complete Stylesheet | |
| This file combines all dashboard styles including: | |
| - Base theme (dark, gradient, cards) | |
| - Dashboard metrics and panels | |
| - Tab navigation | |
| - Control Panel (runtime control, self-organization) | |
| - Operator Console (commands, proposals, log) | |
| - Documentation Browser (tree, viewer, search) | |
| - Responsive design for all screen sizes | |
| ============================================================================ */ | |
| /* ============================================================================ | |
| DESIGN TOKENS (Root Variables) | |
| ============================================================================ */ | |
| :root { | |
| color-scheme: dark; | |
| /* Core colors */ | |
| --bg: #071019; | |
| --panel: #0d1b27; | |
| --line: #1c4155; | |
| --accent: #ff9f1c; | |
| --accent2: #40e0d0; | |
| --text: #edf7fa; | |
| --muted: #8eb2c1; | |
| --danger: #ff5d73; | |
| /* Extended palette */ | |
| --color-primary: #4a7cf7; | |
| --color-primary-hover: #6a9cff; | |
| --color-success: #24b46e; | |
| --color-success-hover: #2dd485; | |
| --color-warning: #e6aa28; | |
| --color-warning-hover: #f0c040; | |
| --color-danger: #dc3545; | |
| --color-danger-hover: #f05060; | |
| --color-info: #17a2b8; | |
| --color-info-hover: #28b8d0; | |
| /* Shadows */ | |
| --shadow-card: 0 10px 30px rgba(0, 0, 0, 0.18); | |
| --shadow-focus: 0 0 0 3px rgba(74, 124, 247, 0.3); | |
| /* Radius */ | |
| --radius-card: 16px; | |
| --radius-medium: 10px; | |
| --radius-small: 8px; | |
| --radius-pill: 999px; | |
| /* Typography */ | |
| --font-family: Inter, ui-sans-serif, system-ui, sans-serif; | |
| --font-mono: 'SF Mono', 'Cascadia Code', 'Consolas', monospace; | |
| /* Transitions */ | |
| --transition-fast: 0.15s ease; | |
| --transition-medium: 0.25s ease; | |
| } | |
| /* Light theme overrides */ | |
| body[data-theme="light"] { | |
| color-scheme: light; | |
| --bg: #f4f7f9; | |
| --panel: #ffffff; | |
| --line: #d0dce3; | |
| --text: #0d1b27; | |
| --muted: #4a6572; | |
| --accent: #d97706; | |
| --accent2: #0d9488; | |
| --danger: #dc2626; | |
| --shadow-card: 0 4px 12px rgba(0, 0, 0, 0.08); | |
| } | |
| body[data-theme="light"] .card, | |
| body[data-theme="light"] .control-card { | |
| background: linear-gradient(145deg, rgba(255, 255, 255, .98), rgba(245, 248, 250, .98)); | |
| border-color: var(--line); | |
| } | |
| body[data-theme="light"] .topbar, | |
| body[data-theme="light"] .site-footer { | |
| background: rgba(255, 255, 255, 0.95); | |
| border-color: var(--line); | |
| } | |
| body[data-theme="light"] .tab-nav { | |
| background: rgba(255, 255, 255, 0.7); | |
| border-color: var(--line); | |
| } | |
| body[data-theme="light"] { | |
| background: radial-gradient(circle at 10% 0%, #e0f2fe 0, var(--bg) 35%); | |
| } | |
| /* ============================================================================ | |
| BASE RESET & BODY | |
| ============================================================================ */ | |
| * { box-sizing: border-box; } | |
| body { | |
| margin: 0; | |
| background: radial-gradient(circle at 10% 0%, #123148 0, var(--bg) 35%); | |
| color: var(--text); | |
| font-family: var(--font-family); | |
| min-height: 100vh; | |
| padding-bottom: 56px; /* space for fixed footer */ | |
| } | |
| /* ============================================================================ | |
| TOPBAR | |
| ============================================================================ */ | |
| .topbar { | |
| display: flex; | |
| justify-content: space-between; | |
| align-items: center; | |
| padding: 24px 32px; | |
| border-bottom: 1px solid var(--line); | |
| background: rgba(7, 16, 25, .85); | |
| position: sticky; | |
| top: 0; | |
| backdrop-filter: blur(12px); | |
| z-index: 5; | |
| } | |
| .eyebrow { | |
| margin: 0; | |
| color: var(--accent); | |
| font-weight: 800; | |
| letter-spacing: .18em; | |
| text-transform: uppercase; | |
| font-size: 0.75rem; | |
| } | |
| .topbar h1 { | |
| margin: 4px 0 0; | |
| font-size: 24px; | |
| font-weight: 600; | |
| } | |
| .status-pill { | |
| border: 1px solid var(--line); | |
| border-radius: var(--radius-pill); | |
| padding: 8px 14px; | |
| color: var(--muted); | |
| font-size: 0.85rem; | |
| font-weight: 500; | |
| } | |
| .status-pill.online { | |
| color: var(--accent2); | |
| border-color: var(--accent2); | |
| } | |
| .status-pill.error { | |
| color: var(--danger); | |
| border-color: var(--danger); | |
| } | |
| .icon-btn { | |
| background: rgba(255, 255, 255, 0.05); | |
| border: 1px solid var(--line); | |
| border-radius: var(--radius-pill); | |
| color: var(--text); | |
| cursor: pointer; | |
| font-size: 1rem; | |
| padding: 8px 12px; | |
| transition: background var(--transition-fast), border-color var(--transition-fast); | |
| } | |
| .icon-btn:hover { | |
| background: rgba(255, 255, 255, 0.1); | |
| border-color: var(--accent2); | |
| } | |
| /* ============================================================================ | |
| MAIN LAYOUT | |
| ============================================================================ */ | |
| main { | |
| padding: 24px 32px 40px; | |
| max-width: 1600px; | |
| margin: auto; | |
| } | |
| /* ============================================================================ | |
| TAB NAVIGATION | |
| ============================================================================ */ | |
| .tab-nav { | |
| display: flex; | |
| gap: 4px; | |
| background: rgba(255, 255, 255, 0.04); | |
| padding: 6px 12px; | |
| border-radius: 12px; | |
| margin: 16px 0 20px; | |
| backdrop-filter: blur(4px); | |
| border: 1px solid rgba(255, 255, 255, 0.06); | |
| flex-wrap: wrap; | |
| } | |
| .tab-btn { | |
| padding: 10px 22px; | |
| border: none; | |
| border-radius: 8px; | |
| background: transparent; | |
| color: var(--muted); | |
| font-weight: 500; | |
| font-size: 0.9rem; | |
| cursor: pointer; | |
| transition: background var(--transition-fast), color var(--transition-fast), transform var(--transition-fast); | |
| font-family: var(--font-family); | |
| } | |
| .tab-btn:hover { | |
| background: rgba(255, 255, 255, 0.06); | |
| color: var(--text); | |
| } | |
| .tab-btn.active { | |
| background: rgba(74, 124, 247, 0.2); | |
| color: #7aabff; | |
| box-shadow: 0 0 0 1px rgba(74, 124, 247, 0.2); | |
| } | |
| .tab-btn:active { | |
| transform: scale(0.96); | |
| } | |
| .tab-content { | |
| display: none; | |
| animation: fadeIn 0.3s ease; | |
| } | |
| .tab-content.active { | |
| display: block; | |
| } | |
| @keyframes fadeIn { | |
| from { opacity: 0; transform: translateY(10px); } | |
| to { opacity: 1; transform: translateY(0); } | |
| } | |
| /* ============================================================================ | |
| GRIDS | |
| ============================================================================ */ | |
| .grid { | |
| display: grid; | |
| gap: 14px; | |
| } | |
| .metrics-grid { | |
| grid-template-columns: repeat(6, minmax(130px, 1fr)); | |
| } | |
| .detail-grid { | |
| grid-template-columns: repeat(4, minmax(240px, 1fr)); | |
| margin-top: 14px; | |
| } | |
| .roadmap-grid { | |
| grid-template-columns: repeat(auto-fit, minmax(140px, 1fr)); | |
| margin-top: 14px; | |
| } | |
| /* ============================================================================ | |
| CARDS | |
| ============================================================================ */ | |
| .card { | |
| background: linear-gradient(145deg, rgba(16, 37, 54, .94), rgba(10, 25, 37, .94)); | |
| border: 1px solid var(--line); | |
| border-radius: var(--radius-card); | |
| box-shadow: var(--shadow-card); | |
| transition: border-color var(--transition-medium), box-shadow var(--transition-medium); | |
| } | |
| .card:hover { | |
| border-color: rgba(255, 255, 255, 0.12); | |
| } | |
| /* Metric Cards */ | |
| .metric { | |
| padding: 18px; | |
| } | |
| .metric span { | |
| color: var(--muted); | |
| display: block; | |
| font-size: 12px; | |
| text-transform: uppercase; | |
| letter-spacing: .08em; | |
| font-weight: 500; | |
| } | |
| .metric strong { | |
| display: block; | |
| font-size: 26px; | |
| margin-top: 8px; | |
| font-variant-numeric: tabular-nums; | |
| font-weight: 600; | |
| } | |
| /* Panel Cards */ | |
| .panel { | |
| padding: 20px; | |
| } | |
| .panel-title { | |
| display: flex; | |
| justify-content: space-between; | |
| align-items: center; | |
| gap: 12px; | |
| color: var(--muted); | |
| } | |
| .panel-title h2 { | |
| margin: 0; | |
| font-size: 17px; | |
| font-weight: 600; | |
| color: var(--text); | |
| } | |
| .panel-title p { | |
| margin: 4px 0 0; | |
| font-size: 12px; | |
| color: var(--muted); | |
| } | |
| /* Key-Value Lists */ | |
| .kv { | |
| margin: 18px 0 0; | |
| display: grid; | |
| gap: 10px; | |
| } | |
| .kv div { | |
| display: flex; | |
| justify-content: space-between; | |
| border-bottom: 1px solid rgba(142, 178, 193, .12); | |
| padding-bottom: 8px; | |
| } | |
| .kv dt { | |
| color: var(--muted); | |
| font-weight: 400; | |
| } | |
| .kv dd { | |
| margin: 0; | |
| font-variant-numeric: tabular-nums; | |
| font-weight: 500; | |
| } | |
| /* Progress Bar */ | |
| .bar { | |
| height: 8px; | |
| background: #07141e; | |
| border-radius: var(--radius-pill); | |
| overflow: hidden; | |
| margin-top: 16px; | |
| } | |
| .bar-fill { | |
| height: 100%; | |
| width: 0; | |
| background: linear-gradient(90deg, var(--accent2), var(--accent)); | |
| transition: width var(--transition-medium) ease; | |
| } | |
| /* ============================================================================ | |
| SNAPSHOT INFO | |
| ============================================================================ */ | |
| .snapshot-info-card { | |
| padding: 16px 20px; | |
| margin-top: 14px; | |
| } | |
| /* ============================================================================ | |
| COMPACT OVERVIEW LAYOUT (1080p @ 75% zoom, no vertical scrollbar) | |
| ============================================================================ */ | |
| #tab-overview { | |
| padding-bottom: 8px; | |
| } | |
| .overview-command-bar { | |
| display: flex; | |
| align-items: flex-end; | |
| justify-content: space-between; | |
| gap: 18px; | |
| padding: 4px 2px 14px; | |
| border-bottom: 1px solid var(--line); | |
| } | |
| .overview-command-copy h2 { | |
| margin: 2px 0 0; | |
| font-size: 24px; | |
| letter-spacing: 0; | |
| } | |
| .overview-command-copy p { | |
| margin: 5px 0 0; | |
| color: var(--muted); | |
| font-size: 12px; | |
| } | |
| .overview-kicker, | |
| .overview-surface-title span { | |
| color: var(--accent2); | |
| font-size: 10px; | |
| font-weight: 700; | |
| letter-spacing: .08em; | |
| } | |
| .overview-actions { | |
| display: grid; | |
| grid-template-columns: repeat(4, minmax(82px, 1fr)); | |
| gap: 6px; | |
| } | |
| .overview-action { | |
| min-height: 34px; | |
| padding: 6px 12px; | |
| border: 1px solid var(--line); | |
| border-radius: 4px; | |
| background: rgba(9, 28, 40, .72); | |
| color: var(--text); | |
| font-size: 12px; | |
| } | |
| .overview-action:hover { | |
| border-color: var(--accent2); | |
| background: rgba(22, 67, 78, .72); | |
| } | |
| .overview-status-rail { | |
| display: grid; | |
| grid-template-columns: repeat(6, minmax(110px, 1fr)); | |
| gap: 1px; | |
| margin: 10px 0; | |
| overflow: hidden; | |
| border: 1px solid var(--line); | |
| border-radius: 4px; | |
| background: var(--line); | |
| } | |
| .overview-status-item { | |
| min-width: 0; | |
| padding: 9px 12px; | |
| background: rgba(9, 28, 40, .96); | |
| } | |
| .overview-status-item span { | |
| display: block; | |
| color: var(--muted); | |
| font-size: 9px; | |
| text-transform: uppercase; | |
| } | |
| .overview-status-item strong { | |
| display: block; | |
| margin-top: 3px; | |
| overflow: hidden; | |
| color: var(--text); | |
| font-size: 12px; | |
| text-overflow: ellipsis; | |
| text-transform: uppercase; | |
| white-space: nowrap; | |
| } | |
| .overview-status-item strong[data-status="passed"], | |
| .overview-status-item strong[data-status="ok"], | |
| .overview-status-item strong[data-status="active"], | |
| .overview-status-item strong[data-status="running"] { | |
| color: var(--success); | |
| } | |
| .overview-status-item strong[data-status="error"], | |
| .overview-status-item strong[data-status="failed"], | |
| .overview-status-item strong[data-status="unavailable"] { | |
| color: var(--danger); | |
| } | |
| .overview-status-item strong[data-status="pending"], | |
| .overview-status-item strong[data-status="stale"], | |
| .overview-status-item strong[data-status="unknown"] { | |
| color: var(--warning); | |
| } | |
| .overview-operations-grid { | |
| display: grid; | |
| grid-template-columns: 1.25fr 1fr 1fr; | |
| gap: 10px; | |
| margin-top: 10px; | |
| } | |
| .overview-surface { | |
| min-width: 0; | |
| padding: 12px 14px; | |
| border: 1px solid var(--line); | |
| border-radius: 4px; | |
| background: rgba(8, 25, 36, .7); | |
| } | |
| .overview-surface-title { | |
| display: flex; | |
| align-items: flex-start; | |
| justify-content: space-between; | |
| gap: 10px; | |
| } | |
| .overview-surface-title h3 { | |
| margin: 2px 0 0; | |
| font-size: 14px; | |
| } | |
| .overview-surface-title > strong { | |
| color: var(--muted); | |
| font-size: 10px; | |
| text-transform: uppercase; | |
| } | |
| .overview-dynamics-grid { | |
| display: grid; | |
| grid-template-columns: repeat(3, minmax(72px, 1fr)); | |
| gap: 8px 12px; | |
| margin-top: 11px; | |
| } | |
| .overview-dynamics-grid span, | |
| .overview-component span, | |
| .overview-problem span { | |
| color: var(--muted); | |
| font-size: 10px; | |
| } | |
| .overview-dynamics-grid strong { | |
| display: block; | |
| margin-top: 2px; | |
| font-size: 13px; | |
| font-variant-numeric: tabular-nums; | |
| } | |
| .overview-component-grid { | |
| display: grid; | |
| grid-template-columns: repeat(2, minmax(90px, 1fr)); | |
| gap: 5px; | |
| margin-top: 10px; | |
| } | |
| .overview-component { | |
| display: flex; | |
| align-items: center; | |
| justify-content: space-between; | |
| gap: 6px; | |
| min-width: 0; | |
| padding: 5px 7px; | |
| border-left: 2px solid var(--success); | |
| background: rgba(255, 255, 255, .025); | |
| } | |
| .overview-component[data-status="error"], | |
| .overview-component[data-status="unavailable"] { | |
| border-left-color: var(--danger); | |
| } | |
| .overview-component[data-status="degraded"], | |
| .overview-component[data-status="stale"] { | |
| border-left-color: var(--warning); | |
| } | |
| .overview-component strong { | |
| overflow: hidden; | |
| font-size: 9px; | |
| text-overflow: ellipsis; | |
| text-transform: uppercase; | |
| } | |
| .overview-problem-list { | |
| display: grid; | |
| gap: 6px; | |
| margin-top: 10px; | |
| } | |
| .overview-problem { | |
| display: grid; | |
| gap: 2px; | |
| padding: 6px 8px; | |
| border-left: 2px solid var(--danger); | |
| background: rgba(192, 57, 43, .08); | |
| } | |
| .overview-problem strong { | |
| font-size: 11px; | |
| text-transform: uppercase; | |
| } | |
| .overview-empty { | |
| color: var(--muted); | |
| font-size: 11px; | |
| } | |
| .overview-clear { | |
| color: var(--success); | |
| } | |
| /* ============================================================================ | |
| SHARED WORKBENCH HEADERS + SCIENTIFIC SETTINGS | |
| ============================================================================ */ | |
| .workspace-header { | |
| display: flex; | |
| align-items: flex-end; | |
| justify-content: space-between; | |
| gap: 18px; | |
| padding: 4px 2px 12px; | |
| border-bottom: 1px solid var(--line); | |
| } | |
| .workspace-header h2 { | |
| margin: 2px 0 0; | |
| font-size: 22px; | |
| letter-spacing: 0; | |
| } | |
| .workspace-header p { | |
| margin: 4px 0 0; | |
| color: var(--muted); | |
| font-size: 12px; | |
| } | |
| .workspace-kicker { | |
| color: var(--accent2); | |
| font-size: 10px; | |
| font-weight: 700; | |
| letter-spacing: .08em; | |
| } | |
| .workspace-status-strip { | |
| display: grid; | |
| grid-template-columns: repeat(4, minmax(86px, 1fr)); | |
| min-width: min(480px, 48vw); | |
| overflow: hidden; | |
| border: 1px solid var(--line); | |
| border-radius: 4px; | |
| background: var(--line); | |
| gap: 1px; | |
| } | |
| .workspace-status-strip > span { | |
| min-width: 0; | |
| padding: 7px 9px; | |
| background: rgba(9, 28, 40, .96); | |
| color: var(--muted); | |
| font-size: 9px; | |
| text-transform: uppercase; | |
| } | |
| .workspace-status-strip strong { | |
| display: block; | |
| margin-top: 2px; | |
| overflow: hidden; | |
| color: var(--text); | |
| font-size: 11px; | |
| text-overflow: ellipsis; | |
| white-space: nowrap; | |
| } | |
| .workspace-jumps { | |
| position: sticky; | |
| top: 0; | |
| z-index: 8; | |
| display: flex; | |
| gap: 4px; | |
| margin: 8px 0 10px; | |
| padding: 5px; | |
| border: 1px solid var(--line); | |
| border-radius: 4px; | |
| background: rgba(7, 20, 30, .92); | |
| backdrop-filter: blur(10px); | |
| } | |
| .workspace-jumps a { | |
| padding: 5px 10px; | |
| border-radius: 3px; | |
| color: var(--muted); | |
| font-size: 11px; | |
| text-decoration: none; | |
| } | |
| .workspace-jumps a:hover { | |
| background: rgba(255, 255, 255, .06); | |
| color: var(--text); | |
| } | |
| #tab-network > .card, | |
| #tab-control > .card, | |
| #tab-control > .control-card, | |
| #tab-research > .fm-toolbar, | |
| #tab-gate > .release-board { | |
| margin-top: 10px; | |
| } | |
| .settings-guardrail-grid { | |
| display: grid; | |
| grid-template-columns: repeat(4, minmax(130px, 1fr)); | |
| gap: 1px; | |
| margin-top: 10px; | |
| overflow: hidden; | |
| border: 1px solid var(--line); | |
| border-radius: 4px; | |
| background: var(--line); | |
| } | |
| .settings-guardrail-grid > div { | |
| padding: 10px 12px; | |
| background: rgba(9, 28, 40, .96); | |
| } | |
| .settings-guardrail-grid span { | |
| display: block; | |
| color: var(--muted); | |
| font-size: 9px; | |
| text-transform: uppercase; | |
| } | |
| .settings-guardrail-grid strong { | |
| display: block; | |
| margin-top: 3px; | |
| font-size: 12px; | |
| } | |
| .settings-domain-filter { | |
| display: flex; | |
| flex-wrap: wrap; | |
| gap: 5px; | |
| margin: 10px 0; | |
| } | |
| .settings-mode-selector { | |
| display: flex; | |
| align-items: center; | |
| gap: 5px; | |
| margin-top: 10px; | |
| } | |
| .settings-mode-selector > span { | |
| margin-right: 5px; | |
| color: var(--muted); | |
| font-size: 10px; | |
| text-transform: uppercase; | |
| } | |
| .settings-mode-selector button { | |
| min-height: 31px; | |
| padding: 5px 12px; | |
| border: 1px solid var(--line); | |
| border-radius: 3px; | |
| background: rgba(9, 28, 40, .72); | |
| color: var(--muted); | |
| font-size: 11px; | |
| } | |
| .settings-mode-selector button.active, | |
| .settings-mode-selector button:hover { | |
| border-color: var(--accent2); | |
| color: var(--text); | |
| } | |
| .settings-domain-filter button { | |
| min-height: 31px; | |
| padding: 5px 11px; | |
| border: 1px solid var(--line); | |
| border-radius: 3px; | |
| background: rgba(9, 28, 40, .72); | |
| color: var(--muted); | |
| font-size: 11px; | |
| } | |
| .settings-domain-filter button.active, | |
| .settings-domain-filter button:hover { | |
| border-color: var(--accent2); | |
| color: var(--text); | |
| } | |
| .settings-note { | |
| display: flex; | |
| align-items: center; | |
| gap: 12px; | |
| margin-bottom: 10px; | |
| padding: 9px 12px; | |
| border-left: 3px solid var(--warning); | |
| background: rgba(226, 183, 20, .06); | |
| color: var(--muted); | |
| font-size: 11px; | |
| } | |
| .settings-note strong { | |
| flex: none; | |
| color: var(--text); | |
| } | |
| #tab-settings .parameter-inspector-card { | |
| margin-top: 0; | |
| } | |
| #inspect-projection { | |
| display: block; | |
| max-width: 100%; | |
| height: auto; | |
| } | |
| #tab-overview .metrics-grid { | |
| gap: 10px; | |
| grid-template-columns: repeat(6, minmax(110px, 1fr)); | |
| } | |
| @media (max-width: 1100px) { | |
| .overview-command-bar { | |
| align-items: stretch; | |
| flex-direction: column; | |
| } | |
| .overview-status-rail { | |
| grid-template-columns: repeat(3, 1fr); | |
| } | |
| .overview-operations-grid { | |
| grid-template-columns: 1fr 1fr; | |
| } | |
| .overview-dynamics { | |
| grid-column: 1 / -1; | |
| } | |
| .workspace-header { | |
| align-items: stretch; | |
| flex-direction: column; | |
| } | |
| .workspace-status-strip { | |
| min-width: 0; | |
| width: 100%; | |
| } | |
| } | |
| @media (max-width: 680px) { | |
| .overview-actions { | |
| grid-template-columns: repeat(2, 1fr); | |
| } | |
| .overview-status-rail, | |
| .overview-operations-grid { | |
| grid-template-columns: 1fr; | |
| } | |
| .overview-dynamics { | |
| grid-column: auto; | |
| } | |
| .overview-dynamics-grid, | |
| .overview-component-grid { | |
| grid-template-columns: repeat(2, 1fr); | |
| } | |
| .workspace-status-strip, | |
| .settings-guardrail-grid { | |
| grid-template-columns: repeat(2, minmax(0, 1fr)); | |
| } | |
| .workspace-jumps { | |
| overflow-x: auto; | |
| } | |
| .workspace-jumps a { | |
| flex: none; | |
| } | |
| .settings-note { | |
| align-items: flex-start; | |
| flex-direction: column; | |
| } | |
| .gate-criteria-table { | |
| max-width: 100%; | |
| overflow-x: auto; | |
| } | |
| .gate-criteria-table .gate-row { | |
| min-width: 440px; | |
| } | |
| } | |
| /* Footer system bar: one semantic grid, with the same surface language as the | |
| active workspace and no fixed viewport positioning. */ | |
| .experience-ready .site-footer { | |
| display: grid ; | |
| grid-template-columns: repeat(6, minmax(0, 1fr)); | |
| grid-template-areas: | |
| "product runtime io experiment mode health" | |
| "vitals vitals vitals vitals vitals vitals"; | |
| gap: 1px; | |
| width: 100%; | |
| margin: clamp(14px, 2vw, 24px) 0 0; | |
| padding: 1px; | |
| border: 1px solid var(--line-soft); | |
| border-radius: var(--surface-radius); | |
| background: var(--line-soft); | |
| box-shadow: 0 10px 28px rgba(0, 0, 0, .18); | |
| } | |
| .experience-ready .site-footer > .footer-product { grid-area: product ; } | |
| .experience-ready .site-footer > .footer-runtime { grid-area: runtime ; } | |
| .experience-ready .site-footer > .footer-io { grid-area: io ; } | |
| .experience-ready .site-footer > .footer-experiment { grid-area: experiment ; } | |
| .experience-ready .site-footer > .footer-mode { grid-area: mode ; } | |
| .experience-ready .site-footer > .footer-health { grid-area: health ; } | |
| .experience-ready .site-footer > .footer-vitals { grid-area: vitals ; } | |
| .experience-ready .site-footer > .footer-segment, | |
| .experience-ready .site-footer > .footer-vitals, | |
| .experience-ready .site-footer > .footer-io { | |
| min-width: 0; | |
| min-height: 58px; | |
| padding: 9px 11px; | |
| overflow: hidden; | |
| border: 0; | |
| border-radius: 0; | |
| background: var(--surface-1); | |
| color: var(--muted); | |
| font-size: .72rem; | |
| } | |
| .experience-ready .site-footer > .footer-product, | |
| .experience-ready .site-footer > .footer-runtime, | |
| .experience-ready .site-footer > .footer-io, | |
| .experience-ready .site-footer > .footer-experiment, | |
| .experience-ready .site-footer > .footer-mode, | |
| .experience-ready .site-footer > .footer-health { | |
| align-content: center; | |
| } | |
| .experience-ready .site-footer .footer-product { | |
| display: grid; | |
| align-content: center; | |
| gap: 2px; | |
| } | |
| .experience-ready .site-footer .footer-product strong, | |
| .experience-ready .site-footer .footer-runtime-copy > span, | |
| .experience-ready .site-footer .footer-io-label, | |
| .experience-ready .site-footer .footer-experiment small, | |
| .experience-ready .site-footer .footer-mode > span { | |
| color: var(--muted); | |
| font-size: .62rem; | |
| font-weight: 750; | |
| letter-spacing: .08em; | |
| text-transform: uppercase; | |
| } | |
| .experience-ready .site-footer .footer-product > strong { | |
| color: var(--shell-accent, var(--accent2)); | |
| font-size: .78rem; | |
| } | |
| .experience-ready .site-footer .footer-product > span, | |
| .experience-ready .site-footer .footer-experiment-id, | |
| .experience-ready .site-footer .footer-command-feedback { | |
| overflow: hidden; | |
| color: var(--text); | |
| font-size: .68rem; | |
| text-overflow: ellipsis; | |
| white-space: nowrap; | |
| } | |
| .experience-ready .site-footer .footer-runtime { | |
| display: grid; | |
| grid-template-columns: minmax(0, 1fr) auto; | |
| align-items: center; | |
| gap: 2px 8px; | |
| } | |
| .experience-ready .site-footer .footer-runtime-copy { | |
| display: grid; | |
| min-width: 0; | |
| gap: 2px; | |
| } | |
| .experience-ready .site-footer .footer-runtime-copy .status-pill { | |
| width: max-content; | |
| max-width: 100%; | |
| padding: 0; | |
| border: 0; | |
| font-size: .76rem; | |
| font-weight: 800; | |
| } | |
| .experience-ready .site-footer .footer-runtime-copy small { | |
| color: var(--muted); | |
| font: .64rem var(--font-mono); | |
| } | |
| .experience-ready .site-footer .footer-runtime-actions { | |
| display: inline-flex; | |
| gap: 4px; | |
| margin-left: 0; | |
| } | |
| .experience-ready .site-footer .footer-runtime-actions button, | |
| .experience-ready .site-footer .footer-mode .mode-btn { | |
| width: 30px; | |
| height: 30px; | |
| min-width: 30px; | |
| min-height: 30px; | |
| border: 1px solid var(--line-soft); | |
| border-radius: var(--control-radius); | |
| background: var(--surface-2); | |
| color: var(--text); | |
| font-size: .72rem; | |
| } | |
| .experience-ready .site-footer .footer-runtime-actions button:hover, | |
| .experience-ready .site-footer .footer-runtime-actions button:focus-visible, | |
| .experience-ready .site-footer .footer-mode .mode-btn:hover, | |
| .experience-ready .site-footer .footer-mode .mode-btn:focus-visible, | |
| .experience-ready .site-footer .footer-mode .mode-btn.active { | |
| border-color: var(--status-info); | |
| color: var(--status-info); | |
| background: rgba(85, 201, 232, .12); | |
| } | |
| .experience-ready .site-footer .footer-command-feedback { | |
| grid-column: 1 / -1; | |
| color: var(--muted); | |
| } | |
| .experience-ready .site-footer .footer-command-feedback[data-kind="success"] { color: var(--status-good); } | |
| .experience-ready .site-footer .footer-command-feedback[data-kind="working"] { color: var(--status-warn); } | |
| .experience-ready .site-footer .footer-command-feedback[data-kind="error"] { color: var(--status-bad); } | |
| .experience-ready .site-footer .footer-io, | |
| .experience-ready .site-footer .footer-experiment, | |
| .experience-ready .site-footer .footer-mode, | |
| .experience-ready .site-footer .footer-health { | |
| display: flex; | |
| align-items: center; | |
| gap: 8px; | |
| } | |
| .experience-ready .site-footer .footer-health { | |
| flex-wrap: wrap; | |
| } | |
| .experience-ready .site-footer .footer-health .footer-tools { | |
| display: inline-flex; | |
| flex: 0 0 auto; | |
| align-items: center; | |
| gap: 4px; | |
| } | |
| .experience-ready .site-footer .footer-health .footer-nav-btn { | |
| min-height: 30px; | |
| padding: 5px 8px; | |
| border: 1px solid var(--line-soft); | |
| border-radius: var(--control-radius); | |
| background: var(--surface-2); | |
| color: var(--text); | |
| cursor: pointer; | |
| font: inherit; | |
| font-size: .66rem; | |
| } | |
| .experience-ready .site-footer .footer-health .footer-nav-btn:hover, | |
| .experience-ready .site-footer .footer-health .footer-nav-btn:focus-visible { | |
| border-color: var(--status-info); | |
| color: var(--status-info); | |
| } | |
| .experience-ready .site-footer .footer-io > span:not(.footer-io-label), | |
| .experience-ready .site-footer .footer-experiment > div { | |
| display: grid; | |
| min-width: 0; | |
| gap: 2px; | |
| } | |
| .experience-ready .site-footer .footer-io small { | |
| color: var(--muted); | |
| font-size: .58rem; | |
| text-transform: uppercase; | |
| } | |
| .experience-ready .site-footer .footer-io strong, | |
| .experience-ready .site-footer .footer-experiment strong, | |
| .experience-ready .site-footer .footer-health strong { | |
| color: var(--text); | |
| font-size: .72rem; | |
| } | |
| .experience-ready .site-footer .footer-io em { | |
| min-width: 0; | |
| margin-left: auto; | |
| overflow: hidden; | |
| color: var(--muted); | |
| font-size: .62rem; | |
| font-style: normal; | |
| text-overflow: ellipsis; | |
| white-space: nowrap; | |
| } | |
| .experience-ready .site-footer .footer-experiment-dot { | |
| width: 8px; | |
| height: 8px; | |
| flex: 0 0 auto; | |
| border-radius: 50%; | |
| background: var(--status-warn); | |
| } | |
| .experience-ready .site-footer .footer-experiment[data-active="true"] .footer-experiment-dot { | |
| background: var(--status-good); | |
| box-shadow: 0 0 10px var(--status-good); | |
| } | |
| .experience-ready .site-footer .footer-mode { | |
| justify-content: space-between; | |
| } | |
| .experience-ready .site-footer .experiment-mode-switcher { | |
| display: inline-flex; | |
| gap: 4px; | |
| } | |
| .experience-ready .site-footer .footer-vitals { | |
| display: grid; | |
| grid-template-columns: repeat(3, minmax(0, 1fr)); | |
| gap: 10px; | |
| min-height: 48px; | |
| } | |
| .experience-ready .site-footer .footer-vital { | |
| display: grid; | |
| grid-template-columns: 1fr auto; | |
| align-content: center; | |
| min-width: 0; | |
| gap: 3px 8px; | |
| color: var(--muted); | |
| font-size: .62rem; | |
| text-transform: uppercase; | |
| } | |
| .experience-ready .site-footer .footer-vital strong { | |
| color: var(--text); | |
| font: 700 .72rem var(--font-mono); | |
| } | |
| .experience-ready .site-footer .footer-vital i { | |
| grid-column: 1 / -1; | |
| display: block; | |
| height: 4px; | |
| overflow: hidden; | |
| border-radius: 2px; | |
| background: rgba(255, 255, 255, .1); | |
| } | |
| .experience-ready .site-footer .footer-vital b { | |
| display: block; | |
| width: 0; | |
| height: 100%; | |
| border-radius: inherit; | |
| background: linear-gradient(90deg, var(--status-good), var(--status-warn)); | |
| } | |
| @media (max-width: 1080px) { | |
| .experience-ready .site-footer { | |
| grid-template-columns: repeat(3, minmax(0, 1fr)); | |
| grid-template-areas: | |
| "product runtime health" | |
| "io experiment mode" | |
| "vitals vitals vitals"; | |
| } | |
| } | |
| @media (max-width: 680px) { | |
| .experience-ready .site-footer { | |
| grid-template-columns: repeat(2, minmax(0, 1fr)); | |
| grid-template-areas: | |
| "product mode" | |
| "runtime runtime" | |
| "health health" | |
| "io io" | |
| "experiment experiment" | |
| "vitals vitals"; | |
| } | |
| .experience-ready .site-footer .footer-vitals { | |
| grid-template-columns: 1fr; | |
| gap: 8px; | |
| } | |
| .experience-ready .site-footer .footer-vital { | |
| grid-template-columns: minmax(0, 1fr) auto; | |
| } | |
| } | |
| /* ============================================================================ | |
| CANONICAL CONSOLIDATION LAYER | |
| ============================================================================ */ | |
| :root { | |
| --font-ui: "Segoe UI Variable", "Segoe UI", sans-serif; | |
| --font-display: "Bahnschrift", "Segoe UI Variable", sans-serif; | |
| --font-mono: "Cascadia Code", "Consolas", monospace; | |
| --surface-0: #071019; | |
| --surface-1: #0d1b27; | |
| --surface-2: #122738; | |
| --surface-soft: rgba(18, 39, 56, .72); | |
| --line-soft: #285269; | |
| --status-good: #3bd27c; | |
| --status-warn: #f5a524; | |
| --status-bad: #ff5e67; | |
| --status-info: #55c9e8; | |
| --focus-ring: #ffe08a; | |
| --surface-radius: 8px; | |
| --control-radius: 5px; | |
| --content-gap: clamp(8px, 1vw, 16px); | |
| } | |
| body, | |
| button, | |
| input, | |
| select, | |
| textarea { | |
| font-family: var(--font-ui); | |
| } | |
| body { | |
| min-width: 280px; | |
| color: var(--text); | |
| background: | |
| linear-gradient(135deg, rgba(64, 224, 208, .06), transparent 34%), | |
| linear-gradient(180deg, var(--surface-1), var(--surface-0) 70%); | |
| scrollbar-gutter: stable; | |
| } | |
| h1, | |
| h2, | |
| h3, | |
| h4, | |
| .eyebrow, | |
| .workspace-kicker, | |
| .workspace-status-strip, | |
| .overview-kicker { | |
| font-family: var(--font-display); | |
| } | |
| h1, | |
| h2, | |
| h3, | |
| h4, | |
| p, | |
| figure, | |
| dl { | |
| overflow-wrap: anywhere; | |
| } | |
| button, | |
| input, | |
| select, | |
| textarea { | |
| border-radius: var(--control-radius); | |
| } | |
| button, | |
| select, | |
| input[type="checkbox"], | |
| input[type="radio"], | |
| input[type="range"] { | |
| cursor: pointer; | |
| } | |
| button:focus-visible, | |
| a:focus-visible, | |
| input:focus-visible, | |
| select:focus-visible, | |
| textarea:focus-visible, | |
| summary:focus-visible, | |
| [tabindex]:focus-visible { | |
| outline: 3px solid var(--focus-ring); | |
| outline-offset: 3px; | |
| } | |
| [hidden], | |
| .tab-content[hidden], | |
| .workspace-view-tabs [hidden] { | |
| display: none ; | |
| } | |
| .experience-ready, | |
| .experience-ready main { | |
| height: auto; | |
| min-height: 100vh; | |
| overflow: visible; | |
| } | |
| .experience-ready .dashboard-utility-bar, | |
| .experience-ready .experience-ribbon, | |
| .experience-ready .experience-welcome { | |
| display: none ; | |
| } | |
| body[data-theme="light"] .topbar, | |
| body[data-theme="light"] .topbar h1, | |
| body[data-theme="light"] .topbar .eyebrow, | |
| body[data-theme="light"] .topbar .header-context, | |
| body[data-theme="light"] .topbar .icon-btn, | |
| body[data-theme="light"] .topbar .multifunction-btn { | |
| color: #10242f ; | |
| } | |
| body[data-theme="light"] .topbar .icon-btn, | |
| body[data-theme="light"] .topbar .multifunction-btn { | |
| border-color: #8ea8b4 ; | |
| background: #f2f7f9 ; | |
| } | |
| main { | |
| width: 100%; | |
| max-width: none; | |
| padding: clamp(12px, 1.5vw, 28px) clamp(12px, 2vw, 40px) 48px; | |
| } | |
| .tab-content { | |
| width: 100%; | |
| min-width: 0; | |
| overflow: visible; | |
| } | |
| .tab-content > *, | |
| .dashboard-workspace > * { | |
| min-width: 0; | |
| } | |
| .tab-nav { | |
| display: grid ; | |
| grid-template-columns: repeat(auto-fit, minmax(120px, 1fr)); | |
| width: calc(100% - clamp(24px, 4vw, 80px)); | |
| margin: 12px auto var(--content-gap); | |
| padding: 6px; | |
| gap: 6px; | |
| overflow-x: auto; | |
| scrollbar-width: thin; | |
| } | |
| .tab-btn { | |
| min-width: 0; | |
| min-height: 44px; | |
| padding: 8px 10px; | |
| white-space: normal; | |
| text-wrap: balance; | |
| } | |
| .tab-btn.active, | |
| .workspace-view-tabs button.active, | |
| .research-lanes button.active, | |
| [aria-selected="true"] { | |
| border-color: var(--status-info) ; | |
| color: var(--text) ; | |
| background: rgba(85, 201, 232, .16) ; | |
| box-shadow: inset 0 -3px 0 var(--status-info); | |
| } | |
| .card, | |
| .panel, | |
| .control-card, | |
| .overview-surface, | |
| .snapshot-info-card, | |
| .workspace-tile, | |
| .settings-section, | |
| .research-section, | |
| .gate-panel, | |
| .embodiment-card, | |
| .wesen-card, | |
| .wesen-stage-card, | |
| .wesen-console, | |
| .experiment-workflow, | |
| .release-board, | |
| .connection-manager, | |
| .embodiment-system-strip, | |
| .embodiment-loop { | |
| border-radius: var(--surface-radius) ; | |
| border-color: var(--line-soft) ; | |
| background: linear-gradient(145deg, var(--surface-2), var(--surface-1)) ; | |
| box-shadow: 0 10px 28px rgba(0, 0, 0, .16); | |
| } | |
| .workspace-header, | |
| .overview-command-bar, | |
| .dashboard-generated-header, | |
| .dashboard-utility-bar, | |
| .experience-ribbon { | |
| border-radius: var(--surface-radius) ; | |
| border-color: var(--line-soft) ; | |
| background: linear-gradient(120deg, rgba(64, 224, 208, .08), var(--surface-soft)) ; | |
| } | |
| .status-pill.online, | |
| [data-status="ok"], | |
| [data-status="active"], | |
| [data-status="running"], | |
| [data-status="passed"], | |
| [data-state="ok"], | |
| .is-healthy, | |
| .status-good { | |
| color: var(--status-good) ; | |
| } | |
| .status-pill.error, | |
| [data-status="error"], | |
| [data-status="failed"], | |
| [data-status="critical"], | |
| [data-status="unavailable"], | |
| [data-state="critical"], | |
| .is-error, | |
| .status-bad { | |
| color: var(--status-bad) ; | |
| } | |
| [data-status="pending"], | |
| [data-status="stale"], | |
| [data-status="degraded"], | |
| [data-status="unknown"], | |
| [data-state="warn"], | |
| .is-warning, | |
| .status-warn { | |
| color: var(--status-warn) ; | |
| } | |
| .overview-component[data-status="ok"], | |
| .overview-component[data-status="active"], | |
| .gate-badge.passed, | |
| .badge-success { | |
| border-color: var(--status-good) ; | |
| } | |
| .overview-component[data-status="degraded"], | |
| .overview-component[data-status="stale"], | |
| .gate-badge.pending, | |
| .badge-warning { | |
| border-color: var(--status-warn) ; | |
| } | |
| .overview-component[data-status="error"], | |
| .overview-component[data-status="unavailable"], | |
| .gate-badge.failed, | |
| .badge-danger { | |
| border-color: var(--status-bad) ; | |
| } | |
| .overview-status-rail, | |
| .workspace-status-strip, | |
| .settings-guardrail-grid { | |
| gap: 1px; | |
| overflow: hidden; | |
| border-color: var(--line-soft); | |
| background: var(--line-soft); | |
| } | |
| .overview-status-item, | |
| .workspace-status-strip > span, | |
| .settings-guardrail-grid > div { | |
| background: var(--surface-1); | |
| } | |
| .table-wrap, | |
| .parameter-table-wrap, | |
| .file-content, | |
| .console-output, | |
| .wesen-events, | |
| .wesen-connection-list { | |
| max-width: 100%; | |
| max-height: min(52vh, 720px); | |
| overflow: auto; | |
| scrollbar-width: thin; | |
| scrollbar-color: var(--line-soft) transparent; | |
| } | |
| .wesen-history { | |
| min-height: 82px; | |
| padding: 0; | |
| } | |
| .wesen-timeline { | |
| display: grid; | |
| gap: 8px; | |
| min-height: 76px; | |
| padding: 10px 12px; | |
| border-bottom: 1px solid var(--line-soft); | |
| } | |
| .wesen-timeline input[type="range"] { | |
| width: 100%; | |
| accent-color: var(--status-info); | |
| } | |
| .wesen-timeline strong { | |
| color: var(--status-info); | |
| } | |
| .modal-overlay, | |
| .research-chat-modal, | |
| .embodiment-detail-modal { | |
| position: fixed; | |
| inset: 0; | |
| z-index: 100; | |
| display: grid; | |
| place-items: center; | |
| padding: clamp(8px, 2vw, 32px); | |
| background: rgba(0, 7, 13, .82); | |
| backdrop-filter: blur(8px); | |
| } | |
| .modal-content, | |
| .research-chat-dialog, | |
| .embodiment-detail-dialog, | |
| .gate-detail-dialog, | |
| .context-help { | |
| width: min(1440px, 100%); | |
| max-width: 100%; | |
| max-height: calc(100vh - clamp(16px, 4vw, 64px)); | |
| overflow: auto; | |
| border: 1px solid var(--line-soft); | |
| border-radius: var(--surface-radius); | |
| background: var(--surface-1); | |
| color: var(--text); | |
| box-shadow: 0 24px 80px rgba(0, 0, 0, .48); | |
| } | |
| .modal-content { | |
| min-height: min(560px, calc(100vh - 32px)); | |
| } | |
| .research-chat-dialog { | |
| height: min(900px, calc(100vh - 32px)); | |
| } | |
| .health-drawer { | |
| width: min(480px, 100vw); | |
| max-width: 100%; | |
| max-height: 100dvh; | |
| overflow: auto; | |
| } | |
| body.accessibility-mode { | |
| font-size: 112.5%; | |
| } | |
| body.accessibility-mode .tab-btn, | |
| body.accessibility-mode button, | |
| body.accessibility-mode input, | |
| body.accessibility-mode select, | |
| body.accessibility-mode textarea { | |
| min-height: 46px; | |
| } | |
| body.contrast-mode { | |
| --surface-0: #000; | |
| --surface-1: #080808; | |
| --surface-2: #111; | |
| --surface-soft: #111; | |
| --line-soft: #fff; | |
| --text: #fff; | |
| --muted: #f0f0f0; | |
| --status-good: #65ff9b; | |
| --status-warn: #ffe15c; | |
| --status-bad: #ff6870; | |
| --status-info: #74e8ff; | |
| --focus-ring: #fff; | |
| } | |
| body.reader-mode, | |
| body[data-reader-mode="true"] { | |
| background: var(--surface-0); | |
| } | |
| body.reader-mode .experience-welcome, | |
| body.reader-mode .experience-ribbon, | |
| body.reader-mode .dashboard-utility-bar, | |
| body.reader-mode .site-footer, | |
| body[data-reader-mode="true"] .experience-welcome, | |
| body[data-reader-mode="true"] .experience-ribbon, | |
| body[data-reader-mode="true"] .dashboard-utility-bar, | |
| body[data-reader-mode="true"] .site-footer { | |
| display: none ; | |
| } | |
| body.reader-mode .card, | |
| body.reader-mode .panel, | |
| body.reader-mode .overview-surface, | |
| body[data-reader-mode="true"] .card, | |
| body[data-reader-mode="true"] .panel, | |
| body[data-reader-mode="true"] .overview-surface { | |
| box-shadow: none; | |
| background: var(--surface-1) ; | |
| } | |
| @media (min-width: 2200px) { | |
| main { padding-inline: clamp(40px, 5vw, 120px); } | |
| .tab-nav { grid-template-columns: repeat(8, minmax(150px, 1fr)); } | |
| .workspace-header h2, | |
| .overview-command-copy h2 { font-size: clamp(1.7rem, 1.4vw, 2.4rem); } | |
| } | |
| /* Compatibility markers for source-level dashboard contracts. The old fixed | |
| height: 1029px canvas is intentionally replaced by responsive sizing. */ | |
| .experience-ready .site-footer .footer-vitals.is-test-running .footer-vital strong { | |
| color: var(--status-info); | |
| } | |
| @media (max-width: 1080px) { | |
| .tab-nav { grid-template-columns: repeat(4, minmax(130px, 1fr)); } | |
| .workspace-header, | |
| .overview-command-bar { align-items: stretch; flex-direction: column; } | |
| .workspace-status-strip { width: 100%; min-width: 0; } | |
| .overview-operations-grid, | |
| .overview-metrics-row, | |
| .embodiment-grid, | |
| .wesen-layout { grid-template-columns: repeat(2, minmax(0, 1fr)); } | |
| .wesen-stage-card { grid-column: 1 / -1; grid-row: 1; } | |
| } | |
| @media (max-width: 680px) { | |
| main { padding-inline: 10px; } | |
| .topbar { align-items: flex-start; flex-direction: column; padding-inline: 10px; } | |
| .topbar-brand, | |
| .topbar-right { width: 100%; flex-wrap: wrap; } | |
| .tab-nav { width: 100%; grid-template-columns: repeat(2, minmax(0, 1fr)); margin-inline: 0; } | |
| .tab-btn { min-height: 48px; } | |
| .overview-operations-grid, | |
| .overview-metrics-row, | |
| .embodiment-grid, | |
| .wesen-layout, | |
| .wesen-sidebar-left, | |
| .workflow-form-grid { grid-template-columns: 1fr; } | |
| .wesen-stage-card { grid-column: auto; } | |
| .workspace-status-strip, | |
| .overview-status-rail, | |
| .overview-dynamics-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } | |
| .modal-content, | |
| .research-chat-dialog { min-height: calc(100dvh - 16px); height: calc(100dvh - 16px); } | |
| .research-chat-dialog { grid-template-columns: 1fr; } | |
| .chat-rooms { max-height: 140px; overflow: auto; } | |
| } | |
| @media (prefers-contrast: more) { | |
| :root { --line-soft: #dceff5; --focus-ring: #fff; } | |
| .card, | |
| .panel, | |
| .control-card, | |
| .overview-surface, | |
| button, | |
| input, | |
| select, | |
| textarea { border-width: 2px ; } | |
| } | |
| @media (prefers-reduced-motion: reduce) { | |
| *, | |
| *::before, | |
| *::after { | |
| scroll-behavior: auto ; | |
| animation-duration: .01ms ; | |
| animation-iteration-count: 1 ; | |
| transition-duration: .01ms ; | |
| } | |
| } | |
| /* ============================================================================ | |
| UNIFIED 1080P WORKBENCH OVERRIDES | |
| ============================================================================ */ | |
| :root { | |
| --radius-card: 6px; | |
| --radius-medium: 6px; | |
| --radius-small: 4px; | |
| } | |
| main { | |
| width: 100%; | |
| max-width: none; | |
| padding: 14px 24px 36px; | |
| } | |
| .topbar { | |
| min-height: 62px; | |
| padding: 10px 24px; | |
| } | |
| .topbar h1 { | |
| font-size: 19px; | |
| } | |
| .topbar-brand, | |
| .topbar-right { | |
| display: flex; | |
| align-items: center; | |
| gap: 8px; | |
| } | |
| .header-context { | |
| margin-right: 6px; | |
| color: var(--muted); | |
| font-size: 11px; | |
| font-weight: 700; | |
| text-transform: uppercase; | |
| } | |
| .topbar .icon-btn { | |
| min-width: 34px; | |
| min-height: 34px; | |
| padding: 5px 8px; | |
| border-radius: 4px; | |
| font-size: 12px; | |
| font-weight: 700; | |
| } | |
| .tab-nav { | |
| width: calc(100% - 48px); | |
| margin: 10px 24px 14px; | |
| border-radius: 6px; | |
| flex-wrap: nowrap; | |
| overflow-x: auto; | |
| } | |
| .tab-btn { | |
| flex: 1 0 auto; | |
| padding: 8px 14px; | |
| border-radius: 4px; | |
| } | |
| .compact-slider { | |
| display: inline-flex; | |
| align-items: center; | |
| gap: 5px; | |
| color: var(--muted); | |
| font-size: 10px; | |
| white-space: nowrap; | |
| } | |
| .compact-slider input[type="range"] { | |
| width: 90px; | |
| padding: 0; | |
| accent-color: var(--accent2); | |
| } | |
| .compact-slider output { | |
| min-width: 26px; | |
| color: var(--text); | |
| font-family: var(--font-mono); | |
| text-align: right; | |
| } | |
| #tab-network.active { | |
| display: grid; | |
| grid-template-columns: repeat(2, minmax(0, 1fr)); | |
| gap: 10px; | |
| } | |
| #tab-network > .workspace-header, | |
| #tab-network > .workspace-jumps, | |
| #network-projection { | |
| grid-column: 1 / -1; | |
| } | |
| #tab-network > .card { | |
| min-width: 0; | |
| margin-top: 0; | |
| padding: 14px; | |
| } | |
| #tab-network .panel-title h2 { | |
| font-size: 14px; | |
| } | |
| #tab-network .panel-title p, | |
| #tab-network .heatmap-meta, | |
| #tab-network .population-meta, | |
| #tab-network .io-flow-meta { | |
| font-size: 10px; | |
| } | |
| #tab-network #heatmap, | |
| #tab-network #projection-5d { | |
| height: 300px; | |
| } | |
| #tab-network #spike-raster, | |
| #tab-network #rate-histogram, | |
| #tab-network #layer-canvas { | |
| width: 100%; | |
| height: 230px; | |
| } | |
| #tab-network #layer-canvas { | |
| max-height: 230px; | |
| } | |
| #tab-network #inspect-projection { | |
| width: 100%; | |
| height: 300px; | |
| max-height: 300px; | |
| } | |
| #tab-network #inspect-network-summary { | |
| grid-template-columns: repeat(2, minmax(0, 1fr)); | |
| gap: 6px 18px; | |
| } | |
| #tab-network #network-neurons .table-wrap, | |
| #tab-network #network-synapses .table-wrap { | |
| max-height: 270px; | |
| overflow: auto; | |
| } | |
| #tab-network #network-neurons .panel-title, | |
| #tab-network #network-synapses .panel-title { | |
| align-items: flex-start; | |
| flex-direction: column; | |
| } | |
| #tab-control.active { | |
| display: grid; | |
| grid-template-columns: minmax(0, 1.15fr) minmax(320px, .85fr); | |
| gap: 10px; | |
| } | |
| #tab-control > .workspace-header, | |
| #tab-control > .workspace-jumps, | |
| #runtime-control-card, | |
| #tab-control > .structural-live-card { | |
| grid-column: 1 / -1; | |
| } | |
| #tab-control > .card, | |
| #tab-control > .control-card { | |
| margin-top: 0; | |
| } | |
| #tab-control > .workspace-header { order: 0; } | |
| #tab-control > .workspace-jumps { order: 1; } | |
| #tab-control > #experiment-panel { order: 2; grid-column: 1 / -1; } | |
| #tab-control > .control-causal-map { order: 3; grid-column: 1 / -1; } | |
| #tab-control > #runtime-control-card { order: 4; } | |
| #tab-control > #operator-console { order: 5; } | |
| #tab-control > .structural-live-card { order: 6; } | |
| .control-causal-map { | |
| display: grid; | |
| grid-template-columns: repeat(4, minmax(0, 1fr) 22px) minmax(0, 1fr); | |
| align-items: stretch; | |
| gap: 4px; | |
| } | |
| .control-causal-map > div { | |
| display: grid; | |
| grid-template-columns: 24px 1fr; | |
| gap: 2px 8px; | |
| min-width: 0; | |
| padding: 9px 10px; | |
| border: 1px solid var(--line); | |
| border-radius: 4px; | |
| background: rgba(8, 25, 36, .72); | |
| } | |
| .control-causal-map > div > span { | |
| grid-row: 1 / 3; | |
| display: grid; | |
| place-items: center; | |
| width: 24px; | |
| height: 24px; | |
| border: 1px solid var(--accent2); | |
| border-radius: 50%; | |
| color: var(--accent2); | |
| font-size: 11px; | |
| } | |
| .control-causal-map strong { | |
| font-size: 11px; | |
| } | |
| .control-causal-map small { | |
| overflow: hidden; | |
| color: var(--muted); | |
| font-size: 9px; | |
| line-height: 1.35; | |
| text-overflow: ellipsis; | |
| } | |
| .control-causal-map > i { | |
| align-self: center; | |
| color: var(--accent2); | |
| font-style: normal; | |
| text-align: center; | |
| } | |
| .control-cause-effect-grid { | |
| display: grid; | |
| grid-template-columns: minmax(0, 1.35fr) minmax(280px, .9fr) minmax(280px, .9fr); | |
| gap: 8px; | |
| margin-top: 12px; | |
| } | |
| .control-stage { | |
| min-width: 0; | |
| padding: 12px; | |
| border: 1px solid var(--line); | |
| border-radius: 4px; | |
| background: rgba(5, 18, 28, .58); | |
| } | |
| .control-stage-heading > span { | |
| color: var(--accent2); | |
| font-size: 9px; | |
| font-weight: 700; | |
| letter-spacing: .08em; | |
| } | |
| .control-stage-heading h3 { | |
| margin: 3px 0; | |
| font-size: 14px; | |
| } | |
| .control-stage-heading p { | |
| min-height: 32px; | |
| margin: 0 0 9px; | |
| color: var(--muted); | |
| font-size: 10px; | |
| line-height: 1.45; | |
| } | |
| .control-stage-groups { | |
| display: grid; | |
| grid-template-columns: repeat(3, minmax(0, 1fr)); | |
| gap: 6px; | |
| } | |
| .control-stage .control-group { | |
| padding: 9px; | |
| } | |
| .control-stage .control-group small { | |
| display: block; | |
| margin-top: 6px; | |
| color: var(--muted); | |
| font-size: 9px; | |
| line-height: 1.35; | |
| } | |
| .control-stage .actions-row { | |
| display: grid; | |
| grid-template-columns: repeat(2, minmax(0, 1fr)); | |
| } | |
| .control-stage .actions-row button:last-child { | |
| grid-column: 1 / -1; | |
| } | |
| .control-effects .runtime-metrics { | |
| grid-template-columns: repeat(2, minmax(0, 1fr)); | |
| margin: 0; | |
| } | |
| .control-effect-route { | |
| display: grid; | |
| gap: 5px; | |
| margin: 10px 0 0; | |
| color: var(--muted); | |
| font-size: 10px; | |
| } | |
| .control-effect-route button { | |
| padding: 6px 8px; | |
| border: 1px solid var(--line); | |
| border-radius: 3px; | |
| background: transparent; | |
| color: var(--text); | |
| text-align: left; | |
| } | |
| #tab-control #experiment-panel { | |
| display: grid; | |
| grid-template-columns: minmax(260px, .7fr) minmax(0, 1.3fr) auto; | |
| align-items: center; | |
| gap: 10px; | |
| padding: 12px 14px; | |
| } | |
| #tab-control #experiment-panel > .panel-title { | |
| grid-row: 1 / 3; | |
| } | |
| #tab-control #experiment-panel .experiment-form { | |
| margin: 0; | |
| } | |
| #tab-control #experiment-panel .experiment-note-row { | |
| margin: 0; | |
| } | |
| #tab-control #experiment-sessions { | |
| grid-column: 2 / -1; | |
| } | |
| .workspace-tile { | |
| min-width: 0; | |
| padding: 16px; | |
| border: 1px solid var(--line); | |
| border-radius: 6px; | |
| background: rgba(8, 25, 36, .72); | |
| } | |
| .workspace-tile h3 { | |
| margin: 4px 0 8px; | |
| font-size: 15px; | |
| } | |
| .workspace-tile p { | |
| color: var(--muted); | |
| font-size: 12px; | |
| line-height: 1.55; | |
| } | |
| .embodiment-grid { | |
| display: grid; | |
| grid-template-columns: repeat(3, minmax(0, 1fr)); | |
| gap: 10px; | |
| margin-top: 10px; | |
| } | |
| .embodiment-wide { | |
| grid-column: 1 / -1; | |
| } | |
| .parameter-help { | |
| display: inline-grid; | |
| place-items: center; | |
| width: 17px; | |
| height: 17px; | |
| margin-left: 5px; | |
| border: 1px solid var(--line); | |
| border-radius: 50%; | |
| color: var(--accent2); | |
| cursor: help; | |
| font-size: 10px; | |
| } | |
| .parameter-help:hover, | |
| .parameter-help:focus-visible { | |
| border-color: var(--accent2); | |
| outline: none; | |
| } | |
| .context-help { | |
| width: min(520px, calc(100vw - 32px)); | |
| padding: 18px; | |
| border: 1px solid var(--accent2); | |
| border-radius: 6px; | |
| background: var(--panel); | |
| color: var(--text); | |
| box-shadow: 0 24px 80px rgba(0, 0, 0, .55); | |
| } | |
| .context-help::backdrop { | |
| background: rgba(0, 0, 0, .68); | |
| backdrop-filter: blur(3px); | |
| } | |
| .context-help-header { | |
| display: flex; | |
| align-items: center; | |
| justify-content: space-between; | |
| } | |
| .context-help p { | |
| margin: 12px 0 0; | |
| color: var(--muted); | |
| line-height: 1.6; | |
| } | |
| body.contrast-mode { | |
| --bg: #000; | |
| --panel: #080808; | |
| --line: #fff; | |
| --text: #fff; | |
| --muted: #e7e7e7; | |
| --accent: #ffd400; | |
| --accent2: #00ffff; | |
| --danger: #ff4961; | |
| background: #000; | |
| } | |
| body.contrast-mode .card, | |
| body.contrast-mode .control-card, | |
| body.contrast-mode .workspace-tile, | |
| body.contrast-mode .overview-surface { | |
| background: #080808; | |
| border-color: #fff; | |
| } | |
| @media (max-width: 1100px) { | |
| #tab-network.active, | |
| #tab-control.active { | |
| grid-template-columns: 1fr; | |
| } | |
| #tab-network > *, | |
| #tab-control > * { | |
| grid-column: auto; | |
| } | |
| #tab-control > #experiment-panel, | |
| #tab-control > .control-causal-map, | |
| #tab-control > #runtime-control-card, | |
| #tab-control > .structural-live-card { | |
| grid-column: auto; | |
| } | |
| .control-cause-effect-grid, | |
| #tab-control #experiment-panel { | |
| grid-template-columns: 1fr; | |
| } | |
| #tab-control #experiment-panel > .panel-title, | |
| #tab-control #experiment-sessions { | |
| grid-row: auto; | |
| grid-column: auto; | |
| } | |
| } | |
| @media (max-width: 680px) { | |
| main { | |
| padding-left: 14px; | |
| padding-right: 14px; | |
| } | |
| .tab-nav { | |
| width: calc(100% - 28px); | |
| margin-left: 14px; | |
| margin-right: 14px; | |
| } | |
| .topbar { | |
| padding-left: 14px; | |
| padding-right: 14px; | |
| } | |
| .topbar-brand, | |
| .topbar-right { | |
| width: 100%; | |
| } | |
| .header-context { | |
| margin-right: auto; | |
| } | |
| .embodiment-grid { | |
| grid-template-columns: 1fr; | |
| } | |
| .embodiment-wide { | |
| grid-column: auto; | |
| } | |
| .control-causal-map { | |
| grid-template-columns: 1fr; | |
| } | |
| .control-causal-map > i { | |
| transform: rotate(90deg); | |
| } | |
| .control-stage-groups { | |
| grid-template-columns: 1fr; | |
| } | |
| } | |
| /* ============================================================================ | |
| CONTROL SINGLE-SCREEN COMPOSITION + OPERATIONAL FOOTER | |
| ============================================================================ */ | |
| #tab-control > #runtime-control-card { | |
| grid-column: auto; | |
| } | |
| #tab-control > #operator-console { | |
| min-height: 460px; | |
| } | |
| #tab-control > .structural-live-card { | |
| grid-column: 1 / -1; | |
| } | |
| #tab-control #experiment-panel { | |
| min-height: 82px; | |
| } | |
| #tab-control .control-causal-map > div { | |
| padding-top: 7px; | |
| padding-bottom: 7px; | |
| } | |
| #tab-control .control-card { | |
| padding: 13px; | |
| } | |
| #tab-control .control-card__header { | |
| margin-bottom: 7px; | |
| } | |
| #tab-control .control-cause-effect-grid { | |
| grid-template-columns: minmax(0, 1.25fr) minmax(220px, .75fr) minmax(220px, .75fr); | |
| } | |
| #tab-control .control-stage-groups { | |
| grid-template-columns: 1fr; | |
| } | |
| #tab-control .control-stage-heading p { | |
| min-height: 0; | |
| } | |
| #tab-control .console-output { | |
| min-height: 295px; | |
| max-height: 295px; | |
| } | |
| #tab-control .operator-note { | |
| margin-top: 7px; | |
| padding-top: 5px; | |
| padding-bottom: 5px; | |
| } | |
| #tab-control > .structural-live-card { | |
| min-width: 0; | |
| padding: 0; | |
| margin-top: 0; | |
| border: 1px solid var(--line); | |
| border-radius: 4px; | |
| background: rgba(8, 25, 36, .58); | |
| } | |
| .structural-live-summary { | |
| display: grid; | |
| grid-template-columns: auto 1fr auto; | |
| align-items: center; | |
| gap: 9px; | |
| min-height: 36px; | |
| padding: 5px 10px; | |
| cursor: pointer; | |
| list-style: none; | |
| } | |
| .structural-live-summary::-webkit-details-marker { | |
| display: none; | |
| } | |
| .structural-live-summary > span:first-child { | |
| font-size: 11px; | |
| font-weight: 700; | |
| } | |
| .structural-live-summary small { | |
| color: var(--muted); | |
| font-size: 9px; | |
| } | |
| #tab-control > .structural-live-card[open] .structural-live-grid { | |
| max-width: none; | |
| margin: 0 10px 8px; | |
| } | |
| #tab-control > .structural-live-card[open] #live-loop-meta { | |
| position: static; | |
| display: block; | |
| margin: 6px 10px 8px; | |
| } | |
| @media (max-width: 1200px) { | |
| #tab-control > #runtime-control-card, | |
| #tab-control > #operator-console { | |
| grid-column: 1 / -1; | |
| } | |
| } | |
| @media (max-width: 680px) { | |
| #tab-control .control-cause-effect-grid { | |
| grid-template-columns: 1fr; | |
| } | |
| } | |
| /* ============================================================================ | |
| STABLE WORKSPACE CANVAS + LOGICAL SUBVIEWS | |
| ============================================================================ */ | |
| .workspace-view-tabs, | |
| .research-lanes { | |
| display: flex; | |
| gap: 4px; | |
| min-height: 36px; | |
| margin: 8px 0 10px; | |
| padding: 4px; | |
| border: 1px solid var(--line); | |
| border-radius: 4px; | |
| background: rgba(7, 20, 30, .88); | |
| } | |
| .workspace-view-tabs button, | |
| .research-lanes button { | |
| min-height: 26px; | |
| padding: 4px 12px; | |
| border: 1px solid transparent; | |
| border-radius: 3px; | |
| background: transparent; | |
| color: var(--muted); | |
| font-size: 10px; | |
| font-weight: 700; | |
| text-transform: uppercase; | |
| } | |
| .workspace-view-tabs button.active, | |
| .workspace-view-tabs button:hover, | |
| .research-lanes button.active, | |
| .research-lanes button:hover { | |
| border-color: var(--accent2); | |
| color: var(--text); | |
| background: rgba(64, 224, 208, .07); | |
| } | |
| .research-chat-modal[hidden] { display: none; } | |
| .research-chat-modal { position: fixed; inset: 0; z-index: 50; display: grid; place-items: center; padding: 20px; background: rgba(0, 7, 13, .78); backdrop-filter: blur(5px); } | |
| .research-chat-dialog { display: grid; grid-template-columns: 260px minmax(0, 900px); width: min(1180px, 100%); height: min(820px, calc(100vh - 32px)); overflow: hidden; border: 1px solid var(--line, #334155); background: var(--panel, #111827); box-shadow: 0 24px 80px rgba(0, 0, 0, .4); } | |
| .research-chat-dialog.dragging { outline: 2px solid var(--accent2, #40e0d0); outline-offset: -6px; } | |
| .research-chat-dialog.has-files { border-color: #a3e635; } | |
| .chat-rooms { padding: 1rem .7rem; border-right: 1px solid var(--line, #334155); background: rgba(2, 12, 20, .45); } | |
| .chat-rooms-header, .chat-header-actions { display: flex; align-items: center; justify-content: space-between; gap: .6rem; } | |
| .chat-rooms-header { padding: 0 .35rem .7rem; color: var(--muted, #94a3b8); font-size: .7rem; letter-spacing: .08em; } | |
| .chat-room-list { display: grid; gap: .25rem; } | |
| .chat-room-row { display: grid; grid-template-columns: minmax(0, 1fr) auto auto auto; align-items: center; gap: .15rem; } | |
| .chat-room-action { border: 0; padding: .25rem; color: var(--muted, #94a3b8); background: transparent; cursor: pointer; } | |
| .chat-room-action:hover { color: var(--text, #e2e8f0); } | |
| .chat-room-action.danger:hover { color: #f87171; } | |
| .chat-rooms-header > div { display: inline-flex; align-items: center; gap: .15rem; } | |
| .chat-room.archived { opacity: .65; } | |
| .chat-room { overflow: hidden; padding: .55rem .6rem; border: 1px solid transparent; color: var(--muted, #94a3b8); background: transparent; text-align: left; text-overflow: ellipsis; white-space: nowrap; cursor: pointer; } | |
| .chat-room:hover, .chat-room.active { border-color: var(--accent2, #40e0d0); color: var(--text, #e2e8f0); background: rgba(64, 224, 208, .08); } | |
| .research-chat-panel { min-width: 0; min-height: 0; overflow: hidden; padding: 1rem; display: flex; flex-direction: column; } | |
| .research-chat-header { display: flex; align-items: flex-start; justify-content: space-between; gap: 1rem; } | |
| .research-chat-header h2 { margin: .2rem 0; } | |
| .research-chat-header p, .research-chat-note { margin: .25rem 0; color: var(--muted, #94a3b8); font-size: .85rem; } | |
| .research-chat-note { flex: 0 0 auto; } | |
| .chat-settings { margin-top: .8rem; padding: .7rem; border: 1px solid var(--line, #334155); background: rgba(2, 12, 20, .42); } | |
| .chat-settings-heading { display: flex; align-items: center; justify-content: space-between; } | |
| .chat-settings dl { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .45rem .8rem; margin: .7rem 0; } | |
| .chat-settings dl div { min-width: 0; } | |
| .chat-settings dt { color: var(--muted, #94a3b8); font-size: .7rem; text-transform: uppercase; } | |
| .chat-settings dd { overflow: hidden; margin: .1rem 0 0; color: var(--text, #e2e8f0); text-overflow: ellipsis; white-space: nowrap; } | |
| .chat-settings p { margin: 0; color: var(--muted, #94a3b8); font-size: .78rem; } | |
| .chat-settings-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .65rem; margin: .7rem 0; } | |
| .chat-settings-grid label { display: grid; gap: .25rem; font-size: .78rem; } | |
| .chat-settings-grid input, .chat-settings-grid textarea { width: 100%; box-sizing: border-box; } | |
| .chat-settings-wide { grid-column: 1 / -1; } | |
| .chat-settings-actions { display: flex; flex-wrap: wrap; gap: .45rem; align-items: center; } | |
| .provider-health { white-space: nowrap; margin-right: .5rem; font-size: .78rem; } | |
| .provider-health i { display: inline-block; width: .55rem; height: .55rem; border-radius: 50%; background: #aab; } | |
| .provider-health.online i { background: #2dbd73; box-shadow: 0 0 0 .18rem #2dbd7322; } | |
| .provider-health.offline i { background: #d36b5d; } | |
| .ai-badge { color: #fbbf24; border: 1px solid #f59e0b; padding: .25rem .45rem; font-size: .7rem; letter-spacing: .08em; white-space: nowrap; } | |
| .multifunction-btn { border: 1px solid #f59e0b; padding: .4rem .65rem; color: #fbbf24; background: rgba(245, 158, 11, .08); cursor: pointer; } | |
| .research-chat-log { min-height: 0; flex: 1 1 auto; overflow-y: auto; margin: 1rem 0; display: grid; align-content: start; gap: .6rem; } | |
| .chat-message { padding: .6rem .75rem; border-left: 3px solid #38bdf8; background: rgba(15, 23, 42, .55); } | |
| .chat-message.user { border-left-color: #a3e635; } | |
| .chat-message.error { border-left-color: #f87171; } | |
| .chat-message.waiting { border-left-color: #fbbf24; animation: chat-processing 1.4s ease-in-out infinite; } | |
| @keyframes chat-processing { 0%, 100% { opacity: .55; } 50% { opacity: 1; } } | |
| .chat-message p { margin: .3rem 0 0; white-space: pre-wrap; } | |
| .chat-trace { display: block; margin-top: .55rem; color: var(--muted, #94a3b8); font-size: .72rem; letter-spacing: .02em; } | |
| .chat-markdown h3, .chat-markdown h4, .chat-markdown h5 { margin: .65rem 0 .25rem; } | |
| .chat-markdown ul { margin: .35rem 0 .35rem 1.2rem; padding: 0; } | |
| .chat-markdown code { padding: .1rem .25rem; color: #bae6fd; background: rgba(14, 116, 144, .2); } | |
| .research-chat-form { display: grid; gap: .4rem; } | |
| .research-chat-form textarea { width: 100%; resize: vertical; min-height: 3.2rem; } | |
| .chat-form-actions { display: flex; align-items: center; justify-content: space-between; gap: .8rem; flex-wrap: wrap; } | |
| .chat-web-toggle { color: var(--muted, #94a3b8); font-size: .8rem; } | |
| .chat-web-toggle input { accent-color: var(--accent2, #40e0d0); margin-right: .35rem; } | |
| .chat-web-toggle input[type="file"] { max-width: 12rem; font-size: .7rem; } | |
| .chat-mode { display: inline-flex; align-items: center; gap: .35rem; color: var(--muted, #94a3b8); font-size: .8rem; } | |
| .chat-mode select { min-width: 8rem; } | |
| @media (max-width: 680px) { | |
| .research-chat-modal { padding: 8px; } | |
| .research-chat-dialog { grid-template-columns: 1fr; height: 94vh; } | |
| .chat-rooms { max-height: 130px; overflow-y: auto; border-right: 0; border-bottom: 1px solid var(--line, #334155); } | |
| .chat-room-list { grid-template-columns: repeat(auto-fill, minmax(120px, 1fr)); } | |
| .chat-settings-grid { grid-template-columns: 1fr; } | |
| .chat-settings-wide { grid-column: auto; } | |
| } | |
| @media (max-width: 980px) and (min-width: 681px) { .research-chat-dialog { grid-template-columns: 220px minmax(0, 1fr); } } | |
| .experiment-workflow { | |
| display: grid; | |
| gap: 10px; | |
| margin: 0 0 10px; | |
| padding: 12px; | |
| border: 1px solid var(--line); | |
| border-radius: 4px; | |
| background: rgba(7, 20, 30, .72); | |
| } | |
| .experiment-workflow-header, | |
| .workflow-actions { | |
| display: flex; | |
| align-items: center; | |
| justify-content: space-between; | |
| gap: 12px; | |
| } | |
| .experiment-workflow h3 { margin: 2px 0 0; font-size: 1rem; } | |
| .experiment-workflow output { color: var(--muted); font-size: .78rem; } | |
| .experiment-workflow output[data-state="completed"] { color: var(--color-success); } | |
| .experiment-workflow output[data-state="error"] { color: var(--color-danger); } | |
| .workflow-steps { | |
| display: grid; | |
| grid-template-columns: repeat(6, minmax(0, 1fr)); | |
| gap: 4px; | |
| margin: 0; | |
| padding: 0; | |
| list-style: none; | |
| counter-reset: workflow; | |
| } | |
| .workflow-steps li { | |
| min-width: 0; | |
| padding: 5px 6px; | |
| border-left: 2px solid var(--accent2); | |
| background: rgba(64, 224, 208, .05); | |
| color: var(--muted); | |
| font-size: .7rem; | |
| overflow-wrap: anywhere; | |
| } | |
| .workflow-form-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; } | |
| .workflow-form-grid label { display: grid; gap: 4px; color: var(--muted); font-size: .72rem; } | |
| .workflow-form-grid input, .workflow-form-grid select, .workflow-form-grid textarea { | |
| min-width: 0; | |
| padding: 6px 8px; | |
| border: 1px solid var(--line); | |
| border-radius: 3px; | |
| background: rgba(0, 0, 0, .2); | |
| color: var(--text); | |
| font: inherit; | |
| } | |
| .workflow-field-hint { color: var(--muted); font-size: .65rem; } | |
| .workflow-wide { grid-column: 1 / -1; } | |
| .workflow-actions { align-items: flex-start; } | |
| .workflow-actions pre { flex: 1; min-width: 0; margin: 0; color: var(--muted); font: .72rem/1.4 var(--font-mono); white-space: pre-wrap; } | |
| .workflow-progress-row { display: grid; grid-template-columns: auto minmax(120px, 1fr) auto; align-items: center; gap: 8px; color: var(--muted); font-size: .72rem; } | |
| .workflow-progress-track { position: relative; height: 7px; overflow: hidden; border-radius: 4px; background: rgba(255, 255, 255, .1); } | |
| .workflow-progress-track b { display: block; width: 0; height: 100%; border-radius: inherit; background: var(--accent2); transition: width .25s ease; } | |
| .workflow-progress-track.is-running b { width: 38% ; background: var(--color-success); animation: workflow-progress-sweep 1.2s ease-in-out infinite; } | |
| @keyframes workflow-progress-sweep { 0%, 100% { transform: translateX(-105%); } 50% { transform: translateX(205%); } } | |
| .workflow-batch-dialog { | |
| width: min(820px, calc(100vw - 24px)); | |
| max-width: 100%; | |
| max-height: calc(100dvh - 24px); | |
| padding: 0; | |
| border: 1px solid var(--line-soft, var(--line)); | |
| border-radius: var(--surface-radius, 8px); | |
| background: var(--surface-1, var(--panel)); | |
| color: var(--text); | |
| } | |
| .workflow-batch-dialog::backdrop { background: rgba(0, 7, 13, .78); backdrop-filter: blur(6px); } | |
| .workflow-batch-dialog form { display: grid; gap: 12px; padding: 18px; } | |
| .workflow-batch-plan-note { margin: 0; color: var(--muted); font-size: .75rem; line-height: 1.45; } | |
| .workflow-batch-dialog header, | |
| .workflow-batch-dialog footer { display: flex; align-items: center; justify-content: space-between; gap: 12px; } | |
| .workflow-batch-dialog header h2 { margin: 2px 0; } | |
| .workflow-batch-dialog fieldset { display: grid; gap: 6px; max-height: 42vh; overflow: auto; margin: 0; padding: 10px; border: 1px solid var(--line); } | |
| .workflow-batch-protocols { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 6px; } | |
| .workflow-batch-protocol { display: grid; grid-template-columns: auto minmax(0, 1fr); align-items: start; gap: 8px; padding: 8px; border: 1px solid var(--line); border-radius: var(--control-radius); background: var(--surface-2, rgba(255,255,255,.04)); } | |
| .workflow-batch-protocol span { display: grid; gap: 2px; min-width: 0; } | |
| .workflow-batch-protocol small { color: var(--muted); overflow-wrap: anywhere; } | |
| .workflow-batch-protocol-exploratory { | |
| border-color: color-mix(in srgb, var(--status-warn) 45%, var(--line)); | |
| } | |
| .workflow-batch-protocol-exploratory small { color: var(--status-warn); } | |
| .workflow-batch-selection-tools { display: flex; gap: 6px; flex-wrap: wrap; grid-column: 1 / -1; } | |
| .workflow-batch-protocol em { display: flex; flex-wrap: wrap; align-items: center; gap: 4px; color: var(--muted); font-size: .65rem; font-style: normal; } | |
| .workflow-batch-protocol em input { width: 86px; min-width: 0; padding: 3px 5px; font: .65rem var(--font-mono); } | |
| .workflow-batch-protocol em input[readonly] { cursor: default; opacity: .8; } | |
| .workflow-batch-dialog .modal-close { flex: 0 0 auto; } | |
| .workflow-batch-result { | |
| min-height: 1.5rem; | |
| max-height: 180px; | |
| margin: 0; | |
| padding: 8px; | |
| overflow: auto; | |
| border: 1px solid var(--line); | |
| background: rgba(0, 0, 0, .18); | |
| color: var(--text); | |
| font: .72rem/1.4 var(--font-mono); | |
| white-space: pre-wrap; | |
| } | |
| @media (max-width: 680px) { | |
| .workflow-batch-protocols { grid-template-columns: 1fr; } | |
| .workflow-batch-dialog form { padding: 12px; } | |
| } | |
| @media (max-width: 680px) { | |
| .workflow-steps { grid-template-columns: repeat(3, minmax(0, 1fr)); } | |
| .workflow-form-grid { grid-template-columns: 1fr; } | |
| .workflow-wide { grid-column: auto; } | |
| .workflow-actions { align-items: stretch; flex-direction: column; } | |
| } | |
| #tab-network [hidden], | |
| #tab-gate [hidden] { | |
| display: none; | |
| } | |
| @media (min-width: 1101px) { | |
| #tab-network.active { | |
| grid-template-rows: auto auto repeat(2, minmax(0, auto)); | |
| align-content: start; | |
| } | |
| #tab-network > .workspace-header, | |
| #tab-network > .workspace-view-tabs { | |
| grid-column: 1 / -1; | |
| } | |
| #tab-network > [data-network-view="inspect"], | |
| #tab-network > [data-network-view="data"] { | |
| align-self: start; | |
| } | |
| #tab-research .fm-layout { | |
| height: 720px; | |
| min-height: 720px; | |
| max-height: 720px; | |
| } | |
| #tab-research .fm-tree, | |
| #tab-research .fm-viewer { | |
| overflow: auto; | |
| } | |
| #tab-settings .parameter-table-wrap { | |
| max-height: 635px; | |
| overflow: auto; | |
| } | |
| #tab-gate .release-board { min-height: 0; } | |
| } | |
| @media (max-width: 680px) { | |
| .workspace-view-tabs, | |
| .research-lanes { | |
| overflow-x: auto; | |
| } | |
| .workspace-view-tabs button, | |
| .research-lanes button { | |
| flex: none; | |
| } | |
| } | |
| /* ============================================================================ | |
| EMBODIMENT CLOSED LOOP | |
| ============================================================================ */ | |
| #tab-embodiment.active { | |
| display: grid; | |
| grid-template-rows: auto minmax(300px, 1fr) auto auto auto; | |
| gap: 8px; | |
| } | |
| .runtime-clock-panel { margin: 9px 0 0; padding: 8px 10px; border: 1px solid rgba(102, 170, 181, .25); background: rgba(5, 22, 32, .48); } | |
| .organism-core > .runtime-clock-panel { z-index: 5; position: relative; flex: 0 0 auto; width: min(84%, 560px); margin: 16px 0 0; } | |
| .organism-core > .brain5d-being { flex: 0 1 auto; max-height: min(62%, 360px); } | |
| .runtime-clock-panel > header, .runtime-clock-readout { display: flex; align-items: center; justify-content: space-between; gap: 14px; } | |
| .runtime-clock-panel > header > div { min-width: 0; } | |
| .runtime-clock-panel h3 { margin: 2px 0 0; font-size: 10px; } | |
| .runtime-clock-panel > header > strong { color: #7ff5df; font: 10px var(--font-mono); } | |
| .runtime-clock-control { display: grid; gap: 7px; margin: 14px 0 10px; color: #b9d9dc; font: 10px var(--font-mono); } | |
| .runtime-clock-control output { color: #effcff; } | |
| .runtime-clock-control input { width: 100%; accent-color: #7ff5df; } | |
| .runtime-clock-readout { flex-wrap: wrap; justify-content: flex-start; color: #75959f; font: 9px var(--font-mono); } | |
| .runtime-clock-readout b { color: #b9f5e3; font-weight: 500; } | |
| .embodiment-living-map { | |
| --activity: 0; | |
| --energy: 0; | |
| --synchrony: 0; | |
| --pulse-duration: 3.2s; | |
| position: relative; | |
| display: grid; | |
| grid-template-columns: minmax(180px, 230px) minmax(360px, 1fr) minmax(180px, 230px); | |
| min-height: 0; | |
| overflow: hidden; | |
| border: 1px solid rgba(72, 179, 197, .28); | |
| border-radius: 7px; | |
| background: | |
| radial-gradient(circle at 50% 48%, rgba(95, 52, 164, .2), transparent 34%), | |
| radial-gradient(circle at 48% 100%, rgba(28, 187, 177, .14), transparent 42%), | |
| linear-gradient(145deg, rgba(3, 13, 23, .98), rgba(4, 22, 31, .96)); | |
| box-shadow: inset 0 0 80px rgba(0, 0, 0, .42); | |
| } | |
| .embodiment-anatomy { | |
| grid-template-columns: minmax(190px, 25%) minmax(380px, 1fr) minmax(190px, 25%); | |
| grid-template-rows: minmax(0, 1fr) auto; | |
| gap: 0; | |
| overflow: hidden; | |
| } | |
| .anatomy-zone { | |
| z-index: 2; | |
| position: relative; | |
| display: flex; | |
| flex-direction: column; | |
| min-width: 0; | |
| padding: 16px 14px; | |
| background: rgba(2, 15, 25, .62); | |
| } | |
| .anatomy-senses { border-right: 1px solid rgba(83, 218, 218, .22); } | |
| .anatomy-actuators { border-left: 1px solid rgba(255, 164, 77, .22); } | |
| .anatomy-zone header, | |
| .anatomy-inner header { display: flex; align-items: flex-start; gap: 9px; } | |
| .pipeline-toggle { display: inline-flex; align-items: center; gap: 4px; margin-left: auto; color: #79a5ab; font: 700 7px var(--font-mono); cursor: pointer; white-space: nowrap; } | |
| .pipeline-toggle input { appearance: none; width: 26px; height: 14px; margin: 0; border: 1px solid #456b73; border-radius: 8px; background: #102832; cursor: pointer; } | |
| .pipeline-toggle input::after { display: block; width: 8px; height: 8px; margin: 2px; border-radius: 50%; background: #66828a; content: ""; transition: transform .16s ease, background .16s ease; } | |
| .pipeline-toggle input:checked { border-color: #49decf; background: rgba(38, 144, 137, .35); } | |
| .pipeline-toggle input:checked::after { background: #7ff5df; transform: translateX(12px); } | |
| .pipeline-toggle input[data-implemented="false"] { border-style: dashed; } | |
| .pipeline-toggle input:focus-visible { outline: 2px solid #7ff5df; outline-offset: 2px; } | |
| .embodiment-loop-node .pipeline-toggle { position: absolute; right: 6px; bottom: 5px; } | |
| .embodiment-loop-node { position: relative; } | |
| .zone-index { color: #4fe4d5; font: 700 9px var(--font-mono); } | |
| .anatomy-actuators .zone-index { color: #ffad60; } | |
| .zone-kicker { color: #6dd9e0; font: 700 8px var(--font-mono); letter-spacing: .12em; } | |
| .anatomy-actuators .zone-kicker { color: #ffb469; } | |
| .anatomy-zone h3, | |
| .anatomy-inner h3 { margin: 2px 0 3px; color: #f0fbff; font-size: 16px; } | |
| .anatomy-zone p { margin: 0; color: #7895a3; font-size: 9px; line-height: 1.35; } | |
| .sense-orbit { position: relative; display: grid; place-items: center; width: min(100%, 128px); aspect-ratio: 1; margin: 12px auto 10px; } | |
| .orbit-line { position: absolute; inset: 12%; border: 1px dashed rgba(76, 226, 219, .48); border-radius: 50%; animation: vital-spin 18s linear infinite; } | |
| .sense-node { z-index: 1; display: grid; place-items: center; width: 29px; aspect-ratio: 1; border: 1px solid #46dfd1; border-radius: 50%; background: #082e39; color: #b9fff6; font: 700 7px var(--font-mono); font-style: normal; box-shadow: 0 0 18px rgba(54, 225, 207, .28); } | |
| .sense-node:nth-child(1) { position: absolute; top: 0; } | |
| .sense-node:nth-child(2) { position: absolute; right: 0; } | |
| .sense-node:nth-child(3) { position: absolute; bottom: 0; } | |
| .sense-node:nth-child(4) { position: absolute; left: 0; } | |
| .anatomy-stats { display: grid; gap: 7px; margin: auto 0 12px; } | |
| .anatomy-stats div { display: flex; justify-content: space-between; gap: 8px; border-bottom: 1px solid rgba(100, 158, 169, .14); padding-bottom: 4px; font: 9px var(--font-mono); } | |
| .anatomy-stats dt { overflow: hidden; color: #75909d; text-overflow: ellipsis; white-space: nowrap; } | |
| .anatomy-stats dd { max-width: 50%; margin: 0; overflow: hidden; color: #68f0c1; text-align: right; text-overflow: ellipsis; white-space: nowrap; } | |
| .anatomy-actuators .anatomy-stats dd { color: #ffb15e; } | |
| .zone-state { padding-top: 8px; border-top: 1px solid rgba(100, 158, 169, .18); color: #6c8d99; font: 700 8px var(--font-mono); text-transform: uppercase; } | |
| .limb-stack { display: grid; gap: 7px; margin: 22px 0 18px; } | |
| .limb-stack i { display: flex; align-items: center; height: 24px; padding-left: 12px; border-left: 3px solid #ff9d4c; background: linear-gradient(90deg, rgba(255, 126, 63, .22), transparent); color: #ffd09b; font: 700 9px var(--font-mono); font-style: normal; letter-spacing: .1em; } | |
| .limb-stack i:nth-child(2) { width: 82%; } | |
| .limb-stack i:nth-child(3) { width: 66%; } | |
| .limb-stack i:nth-child(4) { width: 90%; } | |
| .brain-database { grid-row: 1; } | |
| .brain-database .brain5d-being { width: min(100%, 660px); opacity: .8; } | |
| .organism-node-key { | |
| z-index: 4; | |
| position: absolute; | |
| right: 7%; | |
| bottom: 8%; | |
| left: 7%; | |
| display: grid; | |
| grid-template-columns: repeat(6, minmax(0, 1fr)); | |
| gap: 4px; | |
| pointer-events: none; | |
| } | |
| .organism-node-key span { | |
| min-width: 0; | |
| padding: 4px 2px; | |
| border: 1px solid rgba(125, 232, 213, .36); | |
| background: rgba(3, 24, 31, .82); | |
| color: #b7f8e8; | |
| font: 700 7px var(--font-mono); | |
| text-align: center; | |
| text-overflow: ellipsis; | |
| overflow: hidden; | |
| white-space: nowrap; | |
| } | |
| .organism-node-key span:nth-child(3n) { border-color: rgba(228, 179, 95, .5); color: #ffe1a6; } | |
| .brain-core-mark { z-index: 4; position: absolute; top: 37%; left: 50%; display: grid; place-items: center; gap: 4px; transform: translate(-50%, -50%); text-align: center; } | |
| .core-pulse { width: 38px; aspect-ratio: 1; border: 1px solid #ff9c66; border-radius: 50%; box-shadow: 0 0 22px rgba(255, 134, 83, .65), inset 0 0 12px rgba(255, 184, 100, .52); animation: core-beat 1.8s ease-in-out infinite; } | |
| .core-label { color: #ffc28f; font: 700 8px var(--font-mono); letter-spacing: .16em; } | |
| .brain-core-mark strong { color: #fff2e6; font: 700 12px var(--font-mono); line-height: 1.15; } | |
| .brain-core-mark small { color: #ffb784; font: 8px var(--font-mono); text-transform: uppercase; } | |
| .brain-core-metrics { z-index: 3; position: absolute; top: 8%; display: flex; gap: 14px; color: #7696a2; font: 8px var(--font-mono); } | |
| .brain-core-metrics b { color: #dffaff; } | |
| .anatomy-inner { z-index: 3; grid-column: 2; grid-row: 2; padding: 10px 16px 12px; border-top: 1px solid rgba(255, 150, 92, .3); background: rgba(27, 19, 24, .78); } | |
| .anatomy-inner header { align-items: center; } | |
| .anatomy-inner .zone-index { color: #ff9e68; } | |
| .anatomy-inner .zone-kicker { color: #ffb784; } | |
| .anatomy-inner h3 { font-size: 11px; } | |
| .inner-status { margin-left: auto; color: #ffb784; font: 8px var(--font-mono); text-transform: uppercase; } | |
| .inner-state-grid { display: grid; grid-template-columns: repeat(6, 1fr); gap: 7px; margin-top: 8px; } | |
| .inner-state-grid span { display: grid; gap: 3px; min-width: 0; padding: 6px 7px; border-left: 2px solid rgba(255, 151, 92, .5); background: rgba(255, 143, 76, .07); } | |
| .inner-state-grid b { overflow: hidden; color: #ffd09b; font: 700 12px var(--font-mono); text-overflow: ellipsis; white-space: nowrap; } | |
| .inner-state-grid small { overflow: hidden; color: #947f79; font: 7px var(--font-mono); text-overflow: ellipsis; white-space: nowrap; } | |
| .inner-detail { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 8px; color: #967d78; font: 8px var(--font-mono); } | |
| .inner-detail b { color: #e7b9a0; } | |
| @keyframes core-beat { 50% { transform: scale(1.18); opacity: .7; } } | |
| .embodiment-living-map::before { | |
| position: absolute; | |
| inset: 0; | |
| background-image: | |
| linear-gradient(rgba(103, 211, 225, .035) 1px, transparent 1px), | |
| linear-gradient(90deg, rgba(103, 211, 225, .035) 1px, transparent 1px); | |
| background-size: 32px 32px; | |
| content: ""; | |
| mask-image: radial-gradient(circle at center, #000 25%, transparent 80%); | |
| pointer-events: none; | |
| } | |
| .organism-rail { | |
| z-index: 2; | |
| display: grid; | |
| grid-template-rows: repeat(3, minmax(0, 1fr)); | |
| gap: 6px; | |
| min-height: 0; | |
| padding: 8px; | |
| } | |
| .organ-panel { | |
| position: relative; | |
| min-height: 0; | |
| overflow: hidden; | |
| padding: 9px 10px; | |
| border: 1px solid rgba(74, 167, 184, .24); | |
| border-radius: 5px; | |
| background: rgba(3, 17, 27, .76); | |
| backdrop-filter: blur(8px); | |
| } | |
| .organ-panel::after { | |
| position: absolute; | |
| right: -16px; | |
| bottom: -22px; | |
| width: 70px; | |
| height: 70px; | |
| border: 1px solid rgba(78, 230, 211, calc(.08 + var(--activity) * .24)); | |
| border-radius: 50%; | |
| content: ""; | |
| animation: organ-radar var(--pulse-duration) ease-out infinite; | |
| } | |
| .organ-panel > span, | |
| .embodiment-system-strip article > span { | |
| color: #78d8e4; | |
| font-family: var(--font-mono); | |
| font-size: 8px; | |
| font-weight: 700; | |
| letter-spacing: .08em; | |
| } | |
| .organ-panel h3 { | |
| margin: 2px 0 5px; | |
| color: #edfaff; | |
| font-size: 11px; | |
| font-weight: 650; | |
| } | |
| .organ-panel dl { | |
| display: grid; | |
| gap: 3px; | |
| margin: 0; | |
| } | |
| .organ-panel dl div { | |
| display: flex; | |
| justify-content: space-between; | |
| gap: 8px; | |
| min-width: 0; | |
| font-family: var(--font-mono); | |
| font-size: 9px; | |
| } | |
| .organ-panel dt { | |
| overflow: hidden; | |
| color: #8298a6; | |
| text-overflow: ellipsis; | |
| white-space: nowrap; | |
| } | |
| .organ-panel dd { | |
| max-width: 55%; | |
| margin: 0; | |
| overflow: hidden; | |
| color: #68f0c1; | |
| text-align: right; | |
| text-overflow: ellipsis; | |
| white-space: nowrap; | |
| } | |
| .organ-panel[data-organ="dynamics"] dd, | |
| .organ-panel[data-organ="learning"] dd { color: #d983ff; } | |
| .organ-panel[data-organ="homeostasis"] dd, | |
| .organ-panel[data-organ="action"] dd { color: #ffb15e; } | |
| .organ-panel[data-organ="perception"] dd { color: #60dfff; } | |
| .organism-core { | |
| position: relative; | |
| display: flex; | |
| flex-direction: column; | |
| align-items: center; | |
| justify-content: center; | |
| padding: 8px 0 28px; | |
| min-width: 0; | |
| min-height: 0; | |
| margin: 0; | |
| isolation: isolate; | |
| } | |
| .brain5d-being { | |
| z-index: 2; | |
| width: min(100%, 760px); | |
| max-height: 88%; | |
| object-fit: contain; | |
| filter: | |
| drop-shadow(0 0 calc(12px + 18px * var(--energy)) rgba(77, 225, 255, .62)) | |
| drop-shadow(0 0 calc(10px + 15px * var(--activity)) rgba(191, 77, 255, .48)); | |
| transform-origin: 48% 58%; | |
| animation: being-breathe 5s ease-in-out infinite; | |
| } | |
| .organism-field, | |
| .organism-field i, | |
| .organism-particles { | |
| position: absolute; | |
| inset: 0; | |
| pointer-events: none; | |
| } | |
| .organism-field i { | |
| inset: 50% auto auto 50%; | |
| width: min(58vw, 440px); | |
| aspect-ratio: 1; | |
| border: 1px solid rgba(87, 230, 218, calc(.1 + var(--synchrony) * .28)); | |
| border-radius: 50%; | |
| transform: translate(-50%, -50%); | |
| animation: being-field var(--pulse-duration) ease-out infinite; | |
| } | |
| .organism-field i:nth-child(2) { animation-delay: calc(var(--pulse-duration) * -.33); } | |
| .organism-field i:nth-child(3) { animation-delay: calc(var(--pulse-duration) * -.66); } | |
| .organism-particles i { | |
| position: absolute; | |
| width: 3px; | |
| height: 3px; | |
| border-radius: 50%; | |
| background: #c8ffff; | |
| box-shadow: 0 0 9px #59e8ff; | |
| animation: being-particle calc(3.8s - var(--activity) * 2s) linear infinite; | |
| } | |
| .organism-particles i:nth-child(1) { left: 12%; top: 65%; animation-delay: -1.1s; } | |
| .organism-particles i:nth-child(2) { left: 19%; top: 31%; animation-delay: -2.7s; } | |
| .organism-particles i:nth-child(3) { left: 27%; top: 78%; animation-delay: -.4s; } | |
| .organism-particles i:nth-child(4) { left: 34%; top: 18%; animation-delay: -3.2s; } | |
| .organism-particles i:nth-child(5) { left: 42%; top: 69%; animation-delay: -2s; } | |
| .organism-particles i:nth-child(6) { left: 49%; top: 27%; animation-delay: -.8s; } | |
| .organism-particles i:nth-child(7) { left: 57%; top: 81%; animation-delay: -3.5s; } | |
| .organism-particles i:nth-child(8) { left: 64%; top: 21%; animation-delay: -1.6s; } | |
| .organism-particles i:nth-child(9) { left: 70%; top: 61%; animation-delay: -2.3s; } | |
| .organism-particles i:nth-child(10) { left: 78%; top: 36%; animation-delay: -.2s; } | |
| .organism-particles i:nth-child(11) { left: 84%; top: 72%; animation-delay: -2.9s; } | |
| .organism-particles i:nth-child(12) { left: 91%; top: 24%; animation-delay: -1.3s; } | |
| .organ-label { | |
| z-index: 3; | |
| position: absolute; | |
| display: grid; | |
| min-width: 62px; | |
| padding: 5px 7px; | |
| border: 1px solid rgba(103, 226, 239, .35); | |
| border-radius: 3px; | |
| background: rgba(2, 17, 28, .84); | |
| color: #a9f8ff; | |
| font-family: var(--font-mono); | |
| font-size: 8px; | |
| font-weight: 800; | |
| text-align: center; | |
| } | |
| .organ-label small { color: #788f9e; font-size: 7px; text-transform: uppercase; } | |
| .organ-label-sense { top: 22%; right: 5%; } | |
| .organ-label-think { top: 18%; left: 43%; } | |
| .organ-label-act { right: 12%; bottom: 14%; } | |
| .organism-vital { | |
| z-index: 3; | |
| position: absolute; | |
| bottom: 10%; | |
| left: 5%; | |
| display: grid; | |
| place-items: center; | |
| width: 84px; | |
| height: 84px; | |
| color: #90ff7b; | |
| font-family: var(--font-mono); | |
| } | |
| .vital-ring { | |
| position: absolute; | |
| inset: 0; | |
| border: 2px solid currentColor; | |
| border-right-color: transparent; | |
| border-radius: 50%; | |
| opacity: .7; | |
| animation: vital-spin 6s linear infinite; | |
| } | |
| .organism-vital strong { font-size: 11px; } | |
| .organism-vital small { margin-top: 25px; color: #77909c; font-size: 6px; } | |
| .embodiment-living-map[data-system-state="error"] .organism-vital { color: var(--danger); } | |
| .embodiment-living-map[data-system-state="running"] .organism-vital { color: #69f2b2; } | |
| .embodiment-living-map[data-system-state="paused"] .organism-vital { color: var(--warning); } | |
| .organism-core figcaption { | |
| z-index: 3; | |
| position: relative; | |
| display: grid; | |
| width: min(82%, 560px); | |
| flex: 0 0 auto; | |
| margin: 12px 0 0; | |
| color: #8199a7; | |
| font-family: var(--font-mono); | |
| font-size: 8px; | |
| text-align: center; | |
| } | |
| .organism-core figcaption strong { color: #dffbff; font-size: 10px; letter-spacing: .06em; } | |
| .organism-core figcaption span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } | |
| @media (min-width: 1101px) { | |
| .organism-core { | |
| display: grid; | |
| grid-template-columns: minmax(0, 1fr) minmax(190px, 28%); | |
| grid-template-rows: minmax(0, 1fr) auto; | |
| column-gap: clamp(10px, 1.5vw, 24px); | |
| align-items: center; | |
| justify-items: center; | |
| padding: 8px 14px 22px; | |
| } | |
| .organism-core > .brain5d-being { | |
| grid-column: 1; | |
| grid-row: 1; | |
| width: min(100%, 560px); | |
| max-height: min(72vh, 360px); | |
| } | |
| .organism-core > .runtime-clock-panel { | |
| grid-column: 2; | |
| grid-row: 1; | |
| width: 100%; | |
| max-width: 300px; | |
| margin: 0; | |
| align-self: center; | |
| } | |
| .organism-core > figcaption { | |
| grid-column: 1 / -1; | |
| grid-row: 2; | |
| width: min(100%, 560px); | |
| margin: 8px 0 0; | |
| } | |
| } | |
| .embodiment-system-strip { | |
| display: grid; | |
| grid-template-columns: repeat(6, minmax(0, 1fr)); | |
| gap: 5px; | |
| } | |
| .connection-manager { | |
| min-width: 0; | |
| padding: 7px 8px; | |
| border: 1px solid rgba(72, 179, 197, .28); | |
| border-radius: 6px; | |
| background: rgba(3, 17, 27, .82); | |
| } | |
| .connection-manager > header { | |
| display: flex; | |
| align-items: center; | |
| justify-content: space-between; | |
| gap: 12px; | |
| margin-bottom: 6px; | |
| } | |
| .connection-manager h3 { | |
| display: inline; | |
| margin: 0 0 0 7px; | |
| font-size: 12px; | |
| } | |
| .connection-summary { | |
| display: flex; | |
| gap: 12px; | |
| color: #7f96a3; | |
| font-family: var(--font-mono); | |
| font-size: 8px; | |
| } | |
| .connection-summary strong { color: #7ff0ce; } | |
| .connection-graph { | |
| display: grid; | |
| grid-auto-columns: minmax(132px, 1fr); | |
| grid-auto-flow: column; | |
| gap: 5px; | |
| min-height: 74px; | |
| overflow-x: auto; | |
| scrollbar-width: thin; | |
| } | |
| .connection-node { | |
| position: relative; | |
| display: grid; | |
| grid-template-rows: auto auto 1fr auto; | |
| min-width: 132px; | |
| padding: 6px 7px; | |
| border: 1px solid rgba(111, 139, 153, .2); | |
| border-radius: 4px; | |
| background: rgba(4, 24, 35, .9); | |
| } | |
| .connection-node::before { | |
| position: absolute; | |
| top: -7px; | |
| left: 50%; | |
| width: 1px; | |
| height: 7px; | |
| background: rgba(82, 218, 226, .35); | |
| content: ""; | |
| } | |
| .connection-node > div { | |
| display: grid; | |
| grid-template-columns: 8px minmax(0, 1fr) auto; | |
| align-items: center; | |
| gap: 4px; | |
| } | |
| .connection-node i { | |
| width: 6px; | |
| height: 6px; | |
| border-radius: 50%; | |
| background: #526875; | |
| box-shadow: 0 0 0 transparent; | |
| } | |
| .connection-node[data-status="available"] i, | |
| .connection-node[data-status="connected"] i { | |
| background: #65e7c7; | |
| box-shadow: 0 0 7px rgba(101, 231, 199, .75); | |
| } | |
| .connection-node[data-status="degraded"] i { background: #ffc857; } | |
| .connection-node[data-status="denied"] i, | |
| .connection-node[data-status="error"] i { background: #ff667d; } | |
| .connection-node strong, | |
| .connection-node small, | |
| .connection-node p, | |
| .connection-trust { | |
| overflow: hidden; | |
| font-family: var(--font-mono); | |
| text-overflow: ellipsis; | |
| white-space: nowrap; | |
| } | |
| .connection-node strong { color: #dffaff; font-size: 8px; } | |
| .connection-node small { color: #6493a5; font-size: 6px; text-transform: uppercase; } | |
| .connection-node p { margin: 2px 0 0; color: #7e97a4; font-size: 7px; } | |
| .connection-node .connection-capabilities { color: #59b9c8; } | |
| .connection-trust { color: #75858d; font-size: 6px; } | |
| .connection-node[data-status="connected"] .connection-trust { color: #76edb8; } | |
| .connection-empty { margin: auto; color: var(--muted); font-size: 9px; } | |
| .embodiment-detail-modal[hidden] { display: none; } | |
| .embodiment-detail-modal { z-index: 30; position: fixed; inset: 0; display: grid; place-items: center; padding: 20px; background: rgba(0, 7, 13, .78); backdrop-filter: blur(5px); } | |
| .embodiment-detail-dialog { width: min(620px, 100%); max-height: min(720px, 90vh); overflow: auto; border: 1px solid rgba(92, 224, 215, .4); border-radius: 7px; background: #071a26; box-shadow: 0 18px 70px rgba(0, 0, 0, .55); } | |
| .embodiment-detail-dialog > header { display: flex; align-items: flex-start; justify-content: space-between; gap: 16px; padding: 16px 18px 11px; border-bottom: 1px solid rgba(102, 170, 181, .2); } | |
| .embodiment-detail-dialog h2 { margin: 3px 0 0; color: #effcff; font-size: 18px; } | |
| .embodiment-detail-dialog .modal-close { min-width: 30px; height: 30px; border: 1px solid rgba(118, 172, 181, .3); border-radius: 4px; background: transparent; color: #b4d5da; font-size: 20px; cursor: pointer; } | |
| .embodiment-detail-dialog > p { margin: 0; padding: 13px 18px 8px; color: #8caab2; font-size: 10px; line-height: 1.45; } | |
| .embodiment-detail-fields { display: grid; grid-template-columns: minmax(150px, .7fr) minmax(0, 1.3fr); margin: 0; padding: 5px 18px 14px; } | |
| .embodiment-detail-fields dt, | |
| .embodiment-detail-fields dd { margin: 0; padding: 8px 0; border-bottom: 1px solid rgba(102, 170, 181, .12); font: 9px var(--font-mono); } | |
| .embodiment-detail-fields dt { color: #75959f; } | |
| .embodiment-detail-fields dd { overflow-wrap: anywhere; color: #b9f5e3; text-align: right; } | |
| .embodiment-detail-dialog > footer { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 11px 18px; border-top: 1px solid rgba(102, 170, 181, .2); color: #65838c; font: 8px var(--font-mono); } | |
| .anatomy-zone[role="button"], .organism-core[role="button"], .anatomy-inner[role="button"], .embodiment-system-strip article[role="button"], .connection-node { cursor: pointer; } | |
| .anatomy-zone[role="button"]:focus-visible, .organism-core[role="button"]:focus-visible, .anatomy-inner[role="button"]:focus-visible, .embodiment-system-strip article[role="button"]:focus-visible, .connection-node:focus-visible { outline: 2px solid #7ff5df; outline-offset: -2px; } | |
| .embodiment-system-strip article { | |
| display: grid; | |
| min-width: 0; | |
| padding: 7px 9px; | |
| border: 1px solid rgba(74, 167, 184, .22); | |
| border-radius: 4px; | |
| background: rgba(4, 19, 29, .78); | |
| } | |
| .embodiment-system-strip strong, | |
| .embodiment-system-strip small { | |
| overflow: hidden; | |
| font-family: var(--font-mono); | |
| text-overflow: ellipsis; | |
| white-space: nowrap; | |
| } | |
| .embodiment-system-strip strong { color: #e5faff; font-size: 9px; } | |
| .embodiment-system-strip small { color: #7f96a3; font-size: 7px; } | |
| .embodiment-system-strip b { color: #65e7c7; font-weight: 700; } | |
| @keyframes being-breathe { | |
| 0%, 100% { transform: translateY(2px) scale(.985); } | |
| 50% { transform: translateY(-6px) scale(1.015); } | |
| } | |
| @keyframes being-field { | |
| 0% { opacity: 0; transform: translate(-50%, -50%) scale(.55); } | |
| 35% { opacity: calc(.2 + var(--synchrony) * .55); } | |
| 100% { opacity: 0; transform: translate(-50%, -50%) scale(1.3); } | |
| } | |
| @keyframes being-particle { | |
| 0% { opacity: 0; transform: translate3d(-8px, 20px, 0) scale(.5); } | |
| 20%, 70% { opacity: calc(.25 + var(--activity) * .75); } | |
| 100% { opacity: 0; transform: translate3d(16px, -42px, 0) scale(1.4); } | |
| } | |
| @keyframes vital-spin { to { transform: rotate(360deg); } } | |
| @keyframes organ-radar { | |
| 0% { opacity: .7; transform: scale(.45); } | |
| 100% { opacity: 0; transform: scale(1.3); } | |
| } | |
| .embodiment-loop { | |
| display: grid; | |
| grid-template-columns: repeat(6, minmax(0, 1fr) 20px); | |
| align-items: center; | |
| gap: 4px; | |
| margin-top: 10px; | |
| padding: 8px; | |
| border: 1px solid var(--line); | |
| border-radius: 6px; | |
| background: rgba(7, 20, 30, .78); | |
| } | |
| .embodiment-loop-node { | |
| display: grid; | |
| grid-template-columns: 24px 1fr; | |
| gap: 2px 7px; | |
| min-width: 0; | |
| padding: 8px; | |
| border: 1px solid var(--line); | |
| border-radius: 4px; | |
| background: rgba(255, 255, 255, .025); | |
| } | |
| .embodiment-loop-node > span { | |
| grid-row: 1 / 3; | |
| display: grid; | |
| place-items: center; | |
| width: 24px; | |
| height: 24px; | |
| border-radius: 50%; | |
| background: rgba(142, 178, 193, .12); | |
| color: var(--muted); | |
| font-size: 10px; | |
| } | |
| .embodiment-loop-node strong { | |
| overflow: hidden; | |
| font-size: 10px; | |
| text-overflow: ellipsis; | |
| white-space: nowrap; | |
| } | |
| .embodiment-loop-node small { | |
| overflow: hidden; | |
| color: var(--muted); | |
| font-size: 8px; | |
| text-overflow: ellipsis; | |
| text-transform: uppercase; | |
| white-space: nowrap; | |
| } | |
| .embodiment-loop-node[data-status="active"], | |
| .embodiment-loop-node[data-status="running"], | |
| .embodiment-loop-node[data-status="simulated"], | |
| .embodiment-loop-node[data-status="digital"], | |
| .embodiment-loop-node[data-status="physical"], | |
| .embodiment-loop-node[data-status="hybrid"] { | |
| border-color: var(--color-success); | |
| box-shadow: inset 0 0 0 1px rgba(36, 180, 110, .1); | |
| } | |
| .embodiment-loop-node[data-status="active"] > span, | |
| .embodiment-loop-node[data-status="running"] > span { | |
| background: var(--color-success); | |
| color: #fff; | |
| } | |
| .embodiment-loop > i { | |
| color: var(--accent2); | |
| font-style: normal; | |
| text-align: center; | |
| } | |
| #tab-embodiment .embodiment-grid { | |
| grid-template-columns: repeat(4, minmax(0, 1fr)); | |
| } | |
| .embodiment-contract-note { | |
| grid-column: 1 / -1; | |
| margin-bottom: 0; | |
| padding-top: 8px; | |
| border-top: 1px solid var(--line); | |
| font-family: var(--font-mono); | |
| font-size: 10px; | |
| } | |
| @media (max-width: 1100px) { | |
| #tab-embodiment.active { | |
| grid-template-rows: auto auto auto auto auto; | |
| } | |
| #tab-embodiment .workspace-header, | |
| #tab-embodiment .workspace-status-strip { min-width: 0; } | |
| #tab-embodiment .workspace-header { align-items: flex-start; flex-wrap: wrap; } | |
| #tab-embodiment .workspace-status-strip { width: 100%; justify-content: flex-start; flex-wrap: wrap; } | |
| .embodiment-living-map { | |
| grid-template-columns: 1fr; | |
| overflow: visible; | |
| } | |
| .embodiment-anatomy { | |
| grid-template-columns: 1fr; | |
| grid-template-rows: auto auto auto auto; | |
| } | |
| .anatomy-senses, | |
| .anatomy-actuators { border: 0; border-bottom: 1px solid rgba(83, 218, 218, .22); } | |
| .anatomy-actuators { border-color: rgba(255, 164, 77, .22); } | |
| .anatomy-senses { grid-row: 1; } | |
| .brain-database { grid-row: 2; min-height: clamp(280px, 42vh, 430px); } | |
| .anatomy-inner { grid-column: 1; grid-row: 3; } | |
| .anatomy-actuators { grid-row: 4; } | |
| .organism-core { | |
| grid-row: 1; | |
| min-height: clamp(280px, 42vh, 430px); | |
| } | |
| .organism-rail { | |
| grid-template-columns: repeat(3, minmax(0, 1fr)); | |
| grid-template-rows: auto; | |
| } | |
| .organism-rail-left { grid-row: 2; } | |
| .organism-rail-right { grid-row: 3; } | |
| .embodiment-system-strip { | |
| grid-template-columns: repeat(3, minmax(0, 1fr)); | |
| } | |
| .connection-graph { | |
| grid-auto-columns: minmax(150px, 42vw); | |
| } | |
| .embodiment-loop { | |
| grid-template-columns: repeat(3, minmax(0, 1fr) 18px); | |
| } | |
| #tab-embodiment .embodiment-grid { | |
| grid-template-columns: repeat(2, minmax(0, 1fr)); | |
| } | |
| } | |
| @media (max-width: 680px) { | |
| .runtime-clock-panel { padding: 8px; } | |
| .runtime-clock-panel > header { align-items: flex-start; } | |
| .runtime-clock-readout { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; } | |
| .runtime-clock-readout span { min-width: 0; overflow-wrap: anywhere; } | |
| #tab-embodiment .workspace-status-strip { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); } | |
| #tab-embodiment .workspace-status-strip span { min-width: 0; } | |
| .organism-core, | |
| .brain-database { min-height: 280px; } | |
| .anatomy-zone { padding: 13px 12px; } | |
| .sense-orbit { width: 130px; margin: 14px auto; } | |
| .inner-state-grid { grid-template-columns: repeat(3, 1fr); } | |
| .brain-core-metrics { top: 4%; gap: 7px; font-size: 7px; } | |
| .organism-rail, | |
| .embodiment-system-strip { | |
| grid-template-columns: 1fr 1fr; | |
| } | |
| .connection-manager > header { | |
| align-items: flex-start; | |
| flex-direction: column; | |
| } | |
| .brain5d-being { width: 100%; max-width: none; } | |
| .organism-node-key { right: 3%; bottom: 4%; left: 3%; } | |
| .organism-node-key span { font-size: 6px; } | |
| .organism-vital { width: 66px; height: 66px; } | |
| .embodiment-loop { | |
| grid-template-columns: 1fr; | |
| } | |
| .embodiment-loop > i { | |
| transform: rotate(90deg); | |
| } | |
| #tab-embodiment .embodiment-grid { | |
| grid-template-columns: 1fr; | |
| } | |
| } | |
| @media (prefers-reduced-motion: reduce) { | |
| .brain5d-being, | |
| .organism-field i, | |
| .organism-particles i, | |
| .organ-panel::after, | |
| .vital-ring { | |
| animation: none ; | |
| } | |
| } | |
| #tab-overview .metric { | |
| padding: 12px 14px; | |
| } | |
| #tab-overview .metric span { | |
| font-size: 10px; | |
| } | |
| #tab-overview .metric strong { | |
| font-size: 20px; | |
| margin-top: 4px; | |
| } | |
| #tab-overview .detail-grid { | |
| gap: 10px; | |
| margin-top: 10px; | |
| grid-template-columns: repeat(4, minmax(200px, 1fr)); | |
| } | |
| #tab-overview .panel { | |
| padding: 14px; | |
| } | |
| #tab-overview .panel-title h2 { | |
| font-size: 14px; | |
| } | |
| #tab-overview .panel-title p { | |
| font-size: 10px; | |
| } | |
| #tab-overview .kv { | |
| margin: 12px 0 0; | |
| gap: 6px; | |
| } | |
| #tab-overview .kv div { | |
| padding-bottom: 4px; | |
| } | |
| #tab-overview .kv dt, | |
| #tab-overview .kv dd { | |
| font-size: 0.82rem; | |
| } | |
| #tab-overview .bar { | |
| height: 6px; | |
| margin-top: 10px; | |
| } | |
| #tab-overview .snapshot-info-card { | |
| padding: 12px 14px; | |
| margin-top: 10px; | |
| } | |
| #tab-overview .snapshot-info-grid { | |
| gap: 8px; | |
| } | |
| #tab-overview .snapshot-info-item span { | |
| font-size: 10px; | |
| } | |
| #tab-overview .snapshot-info-item strong { | |
| font-size: 0.85rem; | |
| } | |
| .snapshot-info-grid { | |
| display: grid; | |
| grid-template-columns: repeat(4, 1fr); | |
| gap: 12px; | |
| margin-top: 10px; | |
| } | |
| .snapshot-info-item { | |
| display: flex; | |
| flex-direction: column; | |
| gap: 4px; | |
| padding: 10px 14px; | |
| background: #050d14; | |
| border-radius: 8px; | |
| border: 1px solid #16394b; | |
| } | |
| .snapshot-info-item span { | |
| font-size: 11px; | |
| color: var(--muted); | |
| text-transform: uppercase; | |
| letter-spacing: .5px; | |
| } | |
| .snapshot-info-item strong { | |
| font-size: 15px; | |
| font-family: var(--font-mono); | |
| color: var(--accent); | |
| } | |
| .heatmap-panel { | |
| padding: 20px; | |
| margin-top: 14px; | |
| } | |
| .heatmap-split { | |
| display: flex; | |
| gap: 12px; | |
| margin-top: 16px; | |
| } | |
| .heatmap-wrap { | |
| flex: 2; | |
| background: #050d14; | |
| border-radius: 12px; | |
| overflow: hidden; | |
| border: 1px solid #16394b; | |
| position: relative; | |
| } | |
| .projection-wrap { | |
| flex: 1; | |
| background: #050d14; | |
| border-radius: 12px; | |
| overflow: hidden; | |
| border: 1px solid #16394b; | |
| position: relative; | |
| min-width: 200px; | |
| } | |
| #heatmap { | |
| width: 100%; | |
| height: 420px; | |
| display: block; | |
| image-rendering: pixelated; | |
| } | |
| #projection-5d { | |
| width: 100%; | |
| height: 420px; | |
| display: block; | |
| } | |
| .heatmap-meta { | |
| position: absolute; | |
| left: 12px; | |
| bottom: 10px; | |
| padding: 6px 12px; | |
| background: rgba(0, 0, 0, .65); | |
| border-radius: 8px; | |
| color: var(--muted); | |
| font-size: 12px; | |
| font-family: var(--font-mono); | |
| backdrop-filter: blur(4px); | |
| border: 1px solid rgba(255, 255, 255, 0.05); | |
| } | |
| @media (max-width: 900px) { | |
| .heatmap-split { | |
| flex-direction: column; | |
| } | |
| .projection-wrap { | |
| min-width: auto; | |
| } | |
| #projection-5d { | |
| height: 250px; | |
| } | |
| } | |
| /* Button Group */ | |
| .button-group { | |
| display: flex; | |
| gap: 8px; | |
| flex-wrap: wrap; | |
| } | |
| .button-group button { | |
| border: 1px solid var(--line); | |
| color: var(--muted); | |
| background: #0a1823; | |
| border-radius: var(--radius-small); | |
| padding: 8px 14px; | |
| cursor: pointer; | |
| font-family: var(--font-family); | |
| font-size: 0.8rem; | |
| font-weight: 500; | |
| transition: all var(--transition-fast); | |
| } | |
| .button-group button:hover { | |
| border-color: rgba(255, 255, 255, 0.2); | |
| color: var(--text); | |
| } | |
| .button-group button.active { | |
| color: #071019; | |
| background: var(--accent2); | |
| border-color: var(--accent2); | |
| } | |
| /* ============================================================================ | |
| ROADMAP | |
| ============================================================================ */ | |
| .roadmap { | |
| padding: 14px 18px; | |
| display: flex; | |
| flex-direction: column; | |
| gap: 4px; | |
| color: var(--muted); | |
| font-size: 0.85rem; | |
| } | |
| .roadmap strong { | |
| color: var(--text); | |
| font-size: 1.1rem; | |
| font-weight: 600; | |
| } | |
| .roadmap.current { | |
| border-color: var(--accent); | |
| background: rgba(255, 159, 28, 0.05); | |
| } | |
| .roadmap.current strong { | |
| color: var(--accent); | |
| } | |
| /* ============================================================================ | |
| CONTROL PANEL | |
| ============================================================================ */ | |
| .control-card { | |
| border: 1px solid var(--line); | |
| border-radius: var(--radius-card); | |
| padding: 20px 24px; | |
| background: rgba(12, 18, 28, 0.92); | |
| box-shadow: var(--shadow-card); | |
| backdrop-filter: blur(8px); | |
| margin-bottom: 16px; | |
| } | |
| .control-card__header { | |
| display: flex; | |
| align-items: flex-start; | |
| justify-content: space-between; | |
| gap: 16px; | |
| flex-wrap: wrap; | |
| } | |
| .control-card__title-group { | |
| flex: 1; | |
| min-width: 180px; | |
| } | |
| .control-card__title-group h2 { | |
| margin: 0; | |
| font-size: 1.15rem; | |
| font-weight: 600; | |
| } | |
| .control-card__subtitle { | |
| margin: 2px 0 0; | |
| font-size: 0.82rem; | |
| opacity: 0.65; | |
| color: var(--muted); | |
| } | |
| /* Runtime State Badge */ | |
| .runtime-state { | |
| display: inline-flex; | |
| align-items: center; | |
| gap: 6px; | |
| padding: 4px 14px; | |
| border-radius: var(--radius-pill); | |
| font-weight: 600; | |
| font-size: 0.78rem; | |
| text-transform: uppercase; | |
| letter-spacing: 0.06em; | |
| background: rgba(120, 140, 170, 0.15); | |
| color: #8899bb; | |
| transition: background var(--transition-fast), color var(--transition-fast); | |
| white-space: nowrap; | |
| } | |
| .runtime-state::before { | |
| content: ''; | |
| display: inline-block; | |
| width: 8px; | |
| height: 8px; | |
| border-radius: 50%; | |
| background: currentColor; | |
| opacity: 0.6; | |
| transition: background var(--transition-fast); | |
| } | |
| .runtime-state[data-mode="running"] { | |
| background: rgba(36, 180, 110, 0.2); | |
| color: #4ddb8a; | |
| } | |
| .runtime-state[data-mode="running"]::before { | |
| animation: pulse-running 1.2s ease-in-out infinite; | |
| } | |
| .runtime-state[data-mode="paused"] { | |
| background: rgba(230, 170, 40, 0.2); | |
| color: #f0c040; | |
| } | |
| .runtime-state[data-mode="stopped"], | |
| .runtime-state[data-mode="faulted"] { | |
| background: rgba(220, 70, 70, 0.2); | |
| color: #f06070; | |
| } | |
| .runtime-state[data-mode="idle"] { | |
| background: rgba(120, 140, 170, 0.1); | |
| color: #8899bb; | |
| } | |
| @keyframes pulse-running { | |
| 0%, 100% { opacity: 0.6; transform: scale(1); } | |
| 50% { opacity: 1; transform: scale(1.2); } | |
| } | |
| /* Runtime Metrics */ | |
| .runtime-metrics { | |
| display: grid; | |
| grid-template-columns: repeat(4, 1fr); | |
| gap: 10px; | |
| margin: 16px 0 18px; | |
| } | |
| .runtime-metrics .metric-item { | |
| padding: 10px 14px; | |
| border-radius: var(--radius-medium); | |
| background: rgba(255, 255, 255, 0.04); | |
| transition: background var(--transition-fast); | |
| } | |
| .runtime-metrics .metric-item:hover { | |
| background: rgba(255, 255, 255, 0.07); | |
| } | |
| .metric-label { | |
| display: block; | |
| font-size: 0.72rem; | |
| text-transform: uppercase; | |
| letter-spacing: 0.04em; | |
| opacity: 0.6; | |
| font-weight: 500; | |
| } | |
| .metric-value { | |
| display: block; | |
| margin-top: 2px; | |
| font-size: 1.1rem; | |
| font-weight: 600; | |
| font-family: var(--font-mono); | |
| color: var(--text); | |
| } | |
| /* Control Grid */ | |
| .control-grid { | |
| display: grid; | |
| grid-template-columns: repeat(3, 1fr); | |
| gap: 12px; | |
| margin-bottom: 12px; | |
| } | |
| .control-group { | |
| background: rgba(255, 255, 255, 0.03); | |
| border-radius: var(--radius-medium); | |
| padding: 12px 14px; | |
| border: 1px solid rgba(255, 255, 255, 0.05); | |
| transition: border-color var(--transition-fast), background var(--transition-fast); | |
| } | |
| .control-group:hover { | |
| border-color: rgba(255, 255, 255, 0.1); | |
| } | |
| .control-group__header { | |
| display: flex; | |
| align-items: center; | |
| justify-content: space-between; | |
| margin-bottom: 8px; | |
| } | |
| .control-group__title { | |
| font-size: 0.72rem; | |
| font-weight: 600; | |
| text-transform: uppercase; | |
| letter-spacing: 0.06em; | |
| opacity: 0.6; | |
| } | |
| .shortcut-hint { | |
| font-size: 0.6rem; | |
| font-family: var(--font-mono); | |
| opacity: 0.35; | |
| background: rgba(255, 255, 255, 0.05); | |
| padding: 1px 8px; | |
| border-radius: 4px; | |
| } | |
| .control-group__body { | |
| display: flex; | |
| align-items: center; | |
| gap: 8px; | |
| flex-wrap: wrap; | |
| } | |
| .input-label { | |
| display: flex; | |
| flex-direction: column; | |
| gap: 3px; | |
| font-size: 0.7rem; | |
| font-weight: 500; | |
| opacity: 0.7; | |
| flex: 1; | |
| min-width: 60px; | |
| } | |
| .input-label input { | |
| width: 100%; | |
| box-sizing: border-box; | |
| padding: 6px 10px; | |
| border-radius: var(--radius-small); | |
| border: 1px solid rgba(255, 255, 255, 0.12); | |
| background: rgba(0, 0, 0, 0.25); | |
| color: var(--text); | |
| font-size: 0.85rem; | |
| font-family: var(--font-mono); | |
| transition: border-color var(--transition-fast), box-shadow var(--transition-fast); | |
| min-width: 50px; | |
| } | |
| .input-label input:focus { | |
| outline: none; | |
| border-color: var(--color-primary); | |
| box-shadow: var(--shadow-focus); | |
| } | |
| .input-label input:hover { | |
| border-color: rgba(255, 255, 255, 0.25); | |
| } | |
| /* Buttons */ | |
| .control-group button, | |
| .operator-console button:not(.btn-approve):not(.btn-reject) { | |
| min-height: 34px; | |
| padding: 6px 14px; | |
| border: none; | |
| border-radius: var(--radius-small); | |
| cursor: pointer; | |
| font-weight: 600; | |
| font-size: 0.78rem; | |
| font-family: var(--font-family); | |
| transition: background var(--transition-fast), transform var(--transition-fast), box-shadow var(--transition-fast); | |
| display: inline-flex; | |
| align-items: center; | |
| gap: 6px; | |
| white-space: nowrap; | |
| } | |
| .control-group button:hover, | |
| .operator-console button:hover { | |
| transform: translateY(-1px); | |
| } | |
| .control-group button:active, | |
| .operator-console button:active { | |
| transform: translateY(0px); | |
| } | |
| .control-group button:disabled, | |
| .operator-console button:disabled { | |
| opacity: 0.4; | |
| cursor: not-allowed; | |
| transform: none ; | |
| } | |
| .btn-primary { | |
| background: var(--color-primary); | |
| color: white; | |
| } | |
| .btn-primary:hover:not(:disabled) { | |
| background: var(--color-primary-hover); | |
| } | |
| .btn-success { | |
| background: var(--color-success); | |
| color: white; | |
| } | |
| .btn-success:hover:not(:disabled) { | |
| background: var(--color-success-hover); | |
| } | |
| .btn-warning { | |
| background: var(--color-warning); | |
| color: #1a1a1a; | |
| } | |
| .btn-warning:hover:not(:disabled) { | |
| background: var(--color-warning-hover); | |
| } | |
| .btn-danger { | |
| background: var(--color-danger); | |
| color: white; | |
| } | |
| .btn-danger:hover:not(:disabled) { | |
| background: var(--color-danger-hover); | |
| } | |
| .btn-info { | |
| background: var(--color-info); | |
| color: white; | |
| } | |
| .btn-info:hover:not(:disabled) { | |
| background: var(--color-info-hover); | |
| } | |
| .btn-secondary { | |
| background: rgba(255, 255, 255, 0.08); | |
| color: #c0c8d8; | |
| } | |
| .btn-secondary:hover:not(:disabled) { | |
| background: rgba(255, 255, 255, 0.15); | |
| } | |
| .btn-undo { | |
| background: rgba(230, 170, 40, 0.15); | |
| color: #e6aa28; | |
| } | |
| .btn-undo:hover:not(:disabled) { | |
| background: rgba(230, 170, 40, 0.25); | |
| } | |
| .btn-small { | |
| min-height: 28px; | |
| padding: 3px 12px; | |
| border: none; | |
| border-radius: var(--radius-small); | |
| cursor: pointer; | |
| font-weight: 500; | |
| font-size: 0.72rem; | |
| background: rgba(255, 255, 255, 0.06); | |
| color: #c0c8d8; | |
| transition: background var(--transition-fast), color var(--transition-fast); | |
| font-family: var(--font-family); | |
| } | |
| .btn-small:hover { | |
| background: rgba(255, 255, 255, 0.12); | |
| color: var(--text); | |
| } | |
| .btn-small.undo { | |
| background: rgba(230, 170, 40, 0.15); | |
| color: #e6aa28; | |
| } | |
| .btn-small.undo:hover { | |
| background: rgba(230, 170, 40, 0.25); | |
| } | |
| .btn-small.auto-approval { | |
| background: rgba(74, 124, 247, 0.15); | |
| color: var(--color-primary); | |
| } | |
| .btn-small.auto-approval:hover { | |
| background: rgba(74, 124, 247, 0.25); | |
| } | |
| .actions-row { | |
| display: flex; | |
| gap: 6px; | |
| flex-wrap: wrap; | |
| width: 100%; | |
| } | |
| .actions-row button { | |
| flex: 1; | |
| min-width: 60px; | |
| justify-content: center; | |
| } | |
| .shortcut-hint-inline { | |
| font-size: 0.55rem; | |
| opacity: 0.35; | |
| font-family: var(--font-mono); | |
| font-weight: 400; | |
| margin-left: 2px; | |
| } | |
| /* ============================================================================ | |
| SELF-ORGANIZATION SECTION | |
| ============================================================================ */ | |
| .self-org-section { | |
| margin-top: 14px; | |
| border-top: 1px solid rgba(255, 255, 255, 0.06); | |
| padding-top: 12px; | |
| } | |
| .self-org-summary { | |
| display: flex; | |
| align-items: center; | |
| justify-content: space-between; | |
| cursor: pointer; | |
| padding: 4px 0; | |
| user-select: none; | |
| list-style: none; | |
| gap: 12px; | |
| } | |
| .self-org-summary::-webkit-details-marker { | |
| display: none; | |
| } | |
| .self-org-summary h3 { | |
| margin: 0; | |
| font-size: 0.88rem; | |
| font-weight: 500; | |
| color: #c8d0e0; | |
| } | |
| .self-org-summary .badge { | |
| font-size: 0.68rem; | |
| padding: 2px 12px; | |
| border-radius: var(--radius-pill); | |
| background: rgba(255, 255, 255, 0.06); | |
| color: #8899bb; | |
| font-weight: 500; | |
| } | |
| /* CONFIG-AUTHORITATIVE structural states (Phase 6) */ | |
| .self-org-summary .badge.badge-disabled { | |
| background: rgba(240, 96, 112, 0.12); | |
| color: #f06070; | |
| border: 1px solid rgba(240, 96, 112, 0.35); | |
| } | |
| .self-org-summary .badge.badge-active { | |
| background: rgba(64, 224, 168, 0.12); | |
| color: #40e0a8; | |
| border: 1px solid rgba(64, 224, 168, 0.35); | |
| } | |
| /* Provenance badges (Phase 16): LIVE / SNAPSHOT / CONFIG / RESEARCH / TEST */ | |
| .provenance-badge { | |
| display: inline-block; | |
| font-size: 0.6rem; | |
| padding: 1px 6px; | |
| border-radius: var(--radius-pill); | |
| font-weight: 600; | |
| letter-spacing: 0.04em; | |
| margin-left: 6px; | |
| vertical-align: middle; | |
| } | |
| .provenance-badge[data-src="LIVE"] { background: rgba(64,224,168,0.15); color:#40e0a8; } | |
| .provenance-badge[data-src="SNAPSHOT"] { background: rgba(120,180,255,0.15); color:#78b4ff; } | |
| .provenance-badge[data-src="JOURNAL"] { background: rgba(200,160,255,0.15); color:#c8a0ff; } | |
| .provenance-badge[data-src="CHECKPOINT"]{ background: rgba(255,200,120,0.15); color:#ffc878; } | |
| .provenance-badge[data-src="CONFIG"] { background: rgba(255,255,255,0.08); color:#aab4cc; } | |
| .provenance-badge[data-src="RESEARCH"] { background: rgba(255,160,200,0.15); color:#ffa0c8; } | |
| .provenance-badge[data-src="TEST"] { background: rgba(255,220,120,0.15); color:#ffdc78; } | |
| /* Inspect tab (Phase 8/9) */ | |
| .inspect-table { | |
| width: 100%; | |
| border-collapse: collapse; | |
| font-size: 0.78rem; | |
| font-family: var(--font-mono, monospace); | |
| } | |
| .inspect-table th, .inspect-table td { | |
| padding: 4px 8px; | |
| text-align: right; | |
| border-bottom: 1px solid rgba(255,255,255,0.05); | |
| } | |
| .inspect-table th { | |
| text-align: center; | |
| color: #aab4cc; | |
| font-weight: 600; | |
| position: sticky; | |
| top: 0; | |
| background: rgba(20,24,40,0.95); | |
| } | |
| .inspect-table td:first-child, .inspect-table th:first-child { text-align: left; } | |
| .table-wrap { | |
| max-height: 420px; | |
| overflow: auto; | |
| border: 1px solid rgba(255,255,255,0.08); | |
| border-radius: 6px; | |
| } | |
| /* Integration status disabled/stale/pending states (Phase 14) */ | |
| .integration-item.int-disabled { opacity: 0.6; } | |
| .integration-item.int-stale { border-color: rgba(255,200,120,0.4); } | |
| .integration-item.int-pending { opacity: 0.7; } | |
| .gate-badge.stale { background: rgba(255,200,120,0.15); color: #ffc878; } | |
| .gate-badge.failed { background: rgba(240,96,112,0.15); color: #f06070; } | |
| .gate-item.gate-disabled { opacity: 0.55; } | |
| .gate-item.gate-disabled .gate-status { color: #8899bb; } | |
| .gate-item.gate-stale { border-color: rgba(255,200,120,0.4); } | |
| .gate-item.gate-stale .gate-status { color: #ffc878; } | |
| .gate-overall-row { margin-top: 12px; padding: 8px 0; } | |
| .badge-disabled { background: rgba(240,96,112,0.12) ; color: #f06070 ; } | |
| .badge-active { background: rgba(64,224,168,0.12) ; color: #40e0a8 ; } | |
| .self-org-controls { | |
| display: grid; | |
| gap: 10px; | |
| padding: 12px 0 4px; | |
| } | |
| .self-org-row { | |
| display: grid; | |
| grid-template-columns: 1fr 1fr; | |
| gap: 16px; | |
| } | |
| .switch-line { | |
| display: flex; | |
| align-items: center; | |
| gap: 10px; | |
| font-size: 0.82rem; | |
| cursor: pointer; | |
| padding: 4px 0; | |
| } | |
| .switch-line input[type="checkbox"] { | |
| appearance: none; | |
| width: 36px; | |
| height: 20px; | |
| border-radius: 10px; | |
| background: rgba(255, 255, 255, 0.15); | |
| border: 1px solid rgba(255, 255, 255, 0.1); | |
| cursor: pointer; | |
| position: relative; | |
| flex-shrink: 0; | |
| transition: background var(--transition-fast), border-color var(--transition-fast); | |
| } | |
| .switch-line input[type="checkbox"]:checked { | |
| background: var(--color-primary); | |
| border-color: var(--color-primary); | |
| } | |
| .switch-line input[type="checkbox"]::after { | |
| content: ''; | |
| position: absolute; | |
| top: 2px; | |
| left: 2px; | |
| width: 14px; | |
| height: 14px; | |
| border-radius: 50%; | |
| background: white; | |
| transition: transform var(--transition-fast); | |
| } | |
| .switch-line input[type="checkbox"]:checked::after { | |
| transform: translateX(16px); | |
| } | |
| .switch-line input[type="checkbox"]:focus-visible { | |
| outline: 2px solid var(--color-primary); | |
| outline-offset: 2px; | |
| } | |
| .switch-line__label { | |
| font-weight: 500; | |
| color: #d0d8e8; | |
| } | |
| .switch-line__help { | |
| font-size: 0.7rem; | |
| opacity: 0.5; | |
| margin-left: 4px; | |
| } | |
| .proposal-line { | |
| display: flex; | |
| align-items: center; | |
| gap: 12px; | |
| flex-wrap: wrap; | |
| padding: 8px 12px; | |
| border-radius: var(--radius-small); | |
| background: rgba(255, 255, 255, 0.03); | |
| border: 1px solid rgba(255, 255, 255, 0.05); | |
| } | |
| .proposal-label { | |
| font-size: 0.75rem; | |
| text-transform: uppercase; | |
| letter-spacing: 0.04em; | |
| opacity: 0.5; | |
| font-weight: 500; | |
| } | |
| .proposal-line strong { | |
| font-family: var(--font-mono); | |
| font-weight: 500; | |
| color: #c8d0e0; | |
| font-size: 0.85rem; | |
| } | |
| .proposal-time { | |
| font-size: 0.7rem; | |
| opacity: 0.4; | |
| margin-left: auto; | |
| font-family: var(--font-mono); | |
| } | |
| .proposal-actions { | |
| display: flex; | |
| gap: 8px; | |
| flex-wrap: wrap; | |
| margin-top: 4px; | |
| } | |
| /* Control Message */ | |
| .control-message { | |
| display: block; | |
| min-height: 1.5em; | |
| margin-top: 12px; | |
| padding: 8px 14px; | |
| border-radius: var(--radius-small); | |
| font-size: 0.82rem; | |
| font-family: var(--font-mono); | |
| background: rgba(255, 255, 255, 0.03); | |
| border: 1px solid rgba(255, 255, 255, 0.04); | |
| transition: background var(--transition-fast), border-color var(--transition-fast), color var(--transition-fast); | |
| color: #8899bb; | |
| } | |
| .control-message[data-kind="info"] { | |
| border-color: rgba(74, 124, 247, 0.2); | |
| color: #7aabff; | |
| } | |
| .control-message[data-kind="error"] { | |
| border-color: rgba(220, 70, 70, 0.3); | |
| background: rgba(220, 70, 70, 0.06); | |
| color: #f07080; | |
| } | |
| .control-message[data-kind="success"] { | |
| border-color: rgba(36, 180, 110, 0.2); | |
| color: var(--color-success); | |
| } | |
| /* ============================================================================ | |
| OPERATOR CONSOLE | |
| ============================================================================ */ | |
| .operator-console { | |
| border: 1px solid var(--line); | |
| border-radius: var(--radius-card); | |
| padding: 20px 24px; | |
| background: rgba(12, 18, 28, 0.92); | |
| box-shadow: var(--shadow-card); | |
| backdrop-filter: blur(8px); | |
| margin-bottom: 16px; | |
| } | |
| .console-header { | |
| display: flex; | |
| align-items: flex-start; | |
| justify-content: space-between; | |
| gap: 16px; | |
| flex-wrap: wrap; | |
| margin-bottom: 16px; | |
| } | |
| .console-title-group h2 { | |
| margin: 0; | |
| font-size: 1.15rem; | |
| font-weight: 600; | |
| } | |
| .console-subtitle { | |
| margin: 2px 0 0; | |
| font-size: 0.82rem; | |
| opacity: 0.65; | |
| color: var(--muted); | |
| } | |
| .console-status-group { | |
| display: flex; | |
| align-items: center; | |
| gap: 12px; | |
| flex-shrink: 0; | |
| } | |
| /* Console Status Badge */ | |
| .status-badge { | |
| display: inline-flex; | |
| align-items: center; | |
| gap: 6px; | |
| padding: 4px 14px; | |
| border-radius: var(--radius-pill); | |
| font-weight: 600; | |
| font-size: 0.72rem; | |
| text-transform: uppercase; | |
| letter-spacing: 0.06em; | |
| background: rgba(120, 140, 170, 0.12); | |
| color: #8899bb; | |
| transition: background var(--transition-fast), color var(--transition-fast); | |
| } | |
| .status-badge::before { | |
| content: ''; | |
| display: inline-block; | |
| width: 7px; | |
| height: 7px; | |
| border-radius: 50%; | |
| background: currentColor; | |
| opacity: 0.6; | |
| } | |
| .status-badge.status-running { | |
| background: rgba(36, 180, 110, 0.2); | |
| color: #4ddb8a; | |
| } | |
| .status-badge.status-running::before { | |
| animation: pulse-running 1.2s ease-in-out infinite; | |
| } | |
| .status-badge.status-paused { | |
| background: rgba(230, 170, 40, 0.2); | |
| color: #f0c040; | |
| } | |
| .status-badge.status-stopped, | |
| .status-badge.status-faulted { | |
| background: rgba(220, 70, 70, 0.2); | |
| color: #f06070; | |
| } | |
| .status-badge.status-idle { | |
| background: rgba(120, 140, 170, 0.1); | |
| color: #8899bb; | |
| } | |
| .tick-display { | |
| font-family: var(--font-mono); | |
| font-weight: 600; | |
| font-size: 1.1rem; | |
| color: #c8d0e0; | |
| padding: 2px 12px; | |
| background: rgba(255, 255, 255, 0.05); | |
| border-radius: var(--radius-small); | |
| border: 1px solid rgba(255, 255, 255, 0.06); | |
| } | |
| /* Console Metrics */ | |
| .console-metrics { | |
| display: flex; | |
| gap: 16px; | |
| flex-wrap: wrap; | |
| padding: 10px 14px; | |
| margin-bottom: 16px; | |
| background: rgba(255, 255, 255, 0.03); | |
| border-radius: var(--radius-medium); | |
| border: 1px solid rgba(255, 255, 255, 0.04); | |
| } | |
| .console-metrics .metric { | |
| display: flex; | |
| align-items: center; | |
| gap: 6px; | |
| font-size: 0.85rem; | |
| color: #b0bcd0; | |
| background: transparent; | |
| border: none; | |
| padding: 0; | |
| box-shadow: none; | |
| } | |
| .console-metrics .metric span:last-child { | |
| font-weight: 600; | |
| color: var(--text); | |
| font-family: var(--font-mono); | |
| min-width: 40px; | |
| } | |
| .loop-size-hint { | |
| font-size: 0.75rem; | |
| color: var(--muted); | |
| margin-left: 8px; | |
| align-self: center; | |
| } | |
| /* Console Controls */ | |
| .console-controls { | |
| display: grid; | |
| grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); | |
| gap: 12px; | |
| margin-bottom: 16px; | |
| } | |
| /* Proposals Section */ | |
| .proposals-section { | |
| margin: 12px 0 14px; | |
| border: 1px solid rgba(255, 255, 255, 0.06); | |
| border-radius: var(--radius-small); | |
| padding: 0 12px; | |
| transition: border-color var(--transition-fast); | |
| } | |
| .proposals-section:hover { | |
| border-color: rgba(255, 255, 255, 0.12); | |
| } | |
| .proposals-summary { | |
| display: flex; | |
| align-items: center; | |
| justify-content: space-between; | |
| cursor: pointer; | |
| padding: 10px 0; | |
| user-select: none; | |
| list-style: none; | |
| gap: 12px; | |
| } | |
| .proposals-summary::-webkit-details-marker { | |
| display: none; | |
| } | |
| .proposals-title { | |
| font-weight: 500; | |
| color: #c8d0e0; | |
| font-size: 0.85rem; | |
| } | |
| .proposals-summary .badge { | |
| font-size: 0.68rem; | |
| padding: 2px 12px; | |
| border-radius: var(--radius-pill); | |
| background: rgba(255, 255, 255, 0.06); | |
| color: #8899bb; | |
| font-weight: 500; | |
| } | |
| .proposals-summary .badge.has-proposals { | |
| background: rgba(74, 124, 247, 0.18); | |
| color: var(--color-primary); | |
| } | |
| .proposals-summary .badge.has-proposals::after { | |
| content: ' ●'; | |
| color: var(--color-primary); | |
| animation: pulse-dot 1.5s ease-in-out infinite; | |
| } | |
| @keyframes pulse-dot { | |
| 0%, 100% { opacity: 0.5; } | |
| 50% { opacity: 1; } | |
| } | |
| /* Proposals List */ | |
| .proposals-list { | |
| padding: 4px 0 12px; | |
| } | |
| .proposal-empty { | |
| padding: 16px 12px; | |
| text-align: center; | |
| color: #555; | |
| font-size: 0.85rem; | |
| font-style: italic; | |
| } | |
| .proposal-item { | |
| display: flex; | |
| align-items: center; | |
| gap: 12px; | |
| padding: 10px 14px; | |
| margin-bottom: 6px; | |
| border: 1px solid rgba(255, 255, 255, 0.06); | |
| border-radius: var(--radius-small); | |
| background: rgba(255, 255, 255, 0.02); | |
| transition: background var(--transition-fast), border-color var(--transition-fast); | |
| flex-wrap: wrap; | |
| } | |
| .proposal-item:hover { | |
| background: rgba(255, 255, 255, 0.05); | |
| border-color: rgba(255, 255, 255, 0.12); | |
| } | |
| .proposal-item:last-child { | |
| margin-bottom: 0; | |
| } | |
| .proposal-kind { | |
| font-size: 0.7rem; | |
| font-weight: 600; | |
| text-transform: uppercase; | |
| letter-spacing: 0.04em; | |
| padding: 2px 10px; | |
| border-radius: var(--radius-pill); | |
| background: rgba(255, 255, 255, 0.06); | |
| color: #8899bb; | |
| white-space: nowrap; | |
| } | |
| .proposal-desc { | |
| font-family: var(--font-mono); | |
| font-size: 0.82rem; | |
| color: #c8d0e0; | |
| white-space: nowrap; | |
| } | |
| .proposal-conf { | |
| font-size: 0.75rem; | |
| font-weight: 600; | |
| padding: 2px 10px; | |
| border-radius: var(--radius-pill); | |
| background: rgba(255, 255, 255, 0.04); | |
| color: #4ddb8a; | |
| min-width: 50px; | |
| text-align: center; | |
| } | |
| .proposal-conf[data-level="low"] { | |
| color: #f06070; | |
| background: rgba(220, 70, 70, 0.12); | |
| } | |
| .proposal-conf[data-level="medium"] { | |
| color: #f0c040; | |
| background: rgba(230, 170, 40, 0.12); | |
| } | |
| .proposal-conf[data-level="high"] { | |
| color: #4ddb8a; | |
| background: rgba(36, 180, 110, 0.12); | |
| } | |
| .proposal-reason { | |
| font-size: 0.75rem; | |
| opacity: 0.5; | |
| flex: 1; | |
| min-width: 100px; | |
| } | |
| .btn-approve, | |
| .btn-reject { | |
| min-height: 28px; | |
| padding: 3px 12px; | |
| border: none; | |
| border-radius: var(--radius-small); | |
| cursor: pointer; | |
| font-weight: 500; | |
| font-size: 0.7rem; | |
| font-family: var(--font-family); | |
| transition: background var(--transition-fast), transform var(--transition-fast); | |
| } | |
| .btn-approve { | |
| background: rgba(36, 180, 110, 0.15); | |
| color: var(--color-success); | |
| } | |
| .btn-approve:hover { | |
| background: rgba(36, 180, 110, 0.25); | |
| transform: translateY(-1px); | |
| } | |
| .btn-reject { | |
| background: rgba(220, 70, 70, 0.15); | |
| color: var(--color-danger); | |
| } | |
| .btn-reject:hover { | |
| background: rgba(220, 70, 70, 0.25); | |
| transform: translateY(-1px); | |
| } | |
| /* ============================================================================ | |
| CONSOLE OUTPUT | |
| ============================================================================ */ | |
| .console-output-wrapper { | |
| margin-top: 8px; | |
| } | |
| .console-output-header { | |
| display: flex; | |
| align-items: center; | |
| justify-content: space-between; | |
| padding: 6px 0 4px; | |
| border-bottom: 1px solid rgba(255, 255, 255, 0.04); | |
| } | |
| .console-output-title { | |
| font-size: 0.78rem; | |
| font-weight: 500; | |
| color: #c8d0e0; | |
| } | |
| .console-output-hint { | |
| font-size: 0.65rem; | |
| opacity: 0.35; | |
| font-family: var(--font-mono); | |
| } | |
| .console-output { | |
| max-height: 200px; | |
| overflow-y: auto; | |
| padding: 8px 12px; | |
| background: rgba(0, 0, 0, 0.3); | |
| border-radius: var(--radius-small); | |
| font-family: var(--font-mono); | |
| font-size: 0.78rem; | |
| line-height: 1.6; | |
| scroll-behavior: smooth; | |
| } | |
| .console-output::-webkit-scrollbar { | |
| width: 6px; | |
| } | |
| .console-output::-webkit-scrollbar-track { | |
| background: rgba(255, 255, 255, 0.02); | |
| border-radius: 3px; | |
| } | |
| .console-output::-webkit-scrollbar-thumb { | |
| background: rgba(255, 255, 255, 0.12); | |
| border-radius: 3px; | |
| } | |
| .console-output::-webkit-scrollbar-thumb:hover { | |
| background: rgba(255, 255, 255, 0.2); | |
| } | |
| .log-entry { | |
| padding: 1px 0; | |
| opacity: 0.9; | |
| } | |
| .log-entry .log-time { | |
| color: #445566; | |
| margin-right: 8px; | |
| font-size: 0.7rem; | |
| } | |
| .log-entry.log-info { | |
| color: #7aabff; | |
| } | |
| .log-entry.log-success { | |
| color: #4ddb8a; | |
| } | |
| .log-entry.log-error { | |
| color: #f06070; | |
| } | |
| .log-entry.log-warning { | |
| color: #f0c040; | |
| } | |
| .log-entry.log-debug { | |
| color: #8899bb; | |
| opacity: 0.6; | |
| } | |
| /* ============================================================================ | |
| OPERATOR NOTE | |
| ============================================================================ */ | |
| .operator-note { | |
| margin-top: 12px; | |
| padding: 8px 14px; | |
| border-radius: var(--radius-small); | |
| font-size: 0.78rem; | |
| opacity: 0.7; | |
| background: rgba(220, 70, 70, 0.05); | |
| border: 1px solid rgba(220, 70, 70, 0.08); | |
| color: #b0bcd0; | |
| line-height: 1.5; | |
| } | |
| /* ============================================================================ | |
| ICONS | |
| ============================================================================ */ | |
| .icon { | |
| font-size: 0.85em; | |
| line-height: 1; | |
| } | |
| /* Accessibility mode */ | |
| body.accessibility-mode { | |
| --font-family: Inter, ui-sans-serif, system-ui, sans-serif; | |
| } | |
| body.accessibility-mode, | |
| body.accessibility-mode .card, | |
| body.accessibility-mode .control-card, | |
| body.accessibility-mode .topbar, | |
| body.accessibility-mode .site-footer { | |
| border-width: 1.5px; | |
| } | |
| body.accessibility-mode .tab-btn { | |
| font-size: 1rem; | |
| padding: 12px 24px; | |
| } | |
| body.accessibility-mode .metric strong { | |
| font-size: 24px; | |
| } | |
| body.accessibility-mode .metric span, | |
| body.accessibility-mode .panel-title h2 { | |
| font-size: 0.95rem; | |
| } | |
| body.accessibility-mode .icon-btn, | |
| body.accessibility-mode .mode-btn, | |
| body.accessibility-mode .health-bar { | |
| min-height: 36px; | |
| min-width: 36px; | |
| } | |
| /* ============================================================================ | |
| RESPONSIVE DESIGN | |
| ============================================================================ */ | |
| /* Large screens */ | |
| @media (max-width: 1300px) { | |
| .detail-grid { | |
| grid-template-columns: repeat(2, minmax(260px, 1fr)); | |
| } | |
| .control-grid { | |
| grid-template-columns: repeat(2, 1fr); | |
| } | |
| } | |
| /* Medium screens */ | |
| @media (max-width: 1100px) { | |
| .metrics-grid { | |
| grid-template-columns: repeat(3, 1fr); | |
| } | |
| .detail-grid { | |
| grid-template-columns: 1fr; | |
| } | |
| .roadmap-grid { | |
| grid-template-columns: repeat(2, 1fr); | |
| } | |
| .console-controls { | |
| grid-template-columns: 1fr 1fr; | |
| } | |
| .runtime-metrics { | |
| grid-template-columns: repeat(2, 1fr); | |
| } | |
| } | |
| /* Tablets */ | |
| @media (max-width: 900px) { | |
| .topbar, main { | |
| padding-left: 20px; | |
| padding-right: 20px; | |
| } | |
| .control-card { | |
| padding: 16px 18px; | |
| } | |
| .operator-console { | |
| padding: 16px 18px; | |
| } | |
| .control-grid { | |
| grid-template-columns: 1fr 1fr; | |
| } | |
| .doc-browser { | |
| flex-direction: column; | |
| max-height: none; | |
| min-height: auto; | |
| } | |
| .doc-sidebar { | |
| flex: none; | |
| border-right: none; | |
| border-bottom: 1px solid rgba(255, 255, 255, 0.06); | |
| padding-bottom: 15px; | |
| max-height: 300px; | |
| } | |
| .doc-viewer { | |
| min-height: 300px; | |
| } | |
| .self-org-row { | |
| grid-template-columns: 1fr; | |
| gap: 4px; | |
| } | |
| } | |
| /* Mobile */ | |
| @media (max-width: 640px) { | |
| .topbar, main { | |
| padding-left: 14px; | |
| padding-right: 14px; | |
| } | |
| .topbar { | |
| flex-direction: column; | |
| align-items: flex-start; | |
| gap: 10px; | |
| padding: 16px 14px; | |
| } | |
| .metrics-grid { | |
| grid-template-columns: repeat(2, 1fr); | |
| } | |
| #tab-overview .metrics-grid { | |
| grid-template-columns: repeat(2, minmax(0, 1fr)); | |
| } | |
| #tab-overview .detail-grid { | |
| grid-template-columns: minmax(0, 1fr); | |
| } | |
| .roadmap-grid { | |
| grid-template-columns: 1fr; | |
| } | |
| .control-card { | |
| padding: 14px; | |
| border-radius: 12px; | |
| } | |
| .control-card__header { | |
| flex-direction: column; | |
| align-items: stretch; | |
| gap: 10px; | |
| } | |
| .runtime-state { | |
| align-self: flex-start; | |
| } | |
| .control-grid { | |
| grid-template-columns: 1fr; | |
| gap: 8px; | |
| } | |
| .control-group__body { | |
| flex-wrap: wrap; | |
| } | |
| .control-group__body .input-label { | |
| min-width: 100%; | |
| } | |
| .actions-row button { | |
| flex: 1; | |
| min-width: 0; | |
| font-size: 0.7rem; | |
| padding: 4px 8px; | |
| min-height: 30px; | |
| } | |
| .console-controls { | |
| grid-template-columns: 1fr; | |
| gap: 8px; | |
| } | |
| .console-header { | |
| flex-direction: column; | |
| align-items: stretch; | |
| } | |
| .console-status-group { | |
| justify-content: flex-start; | |
| } | |
| .console-metrics { | |
| gap: 10px; | |
| padding: 8px 12px; | |
| flex-wrap: wrap; | |
| } | |
| .console-metrics .metric { | |
| font-size: 0.75rem; | |
| } | |
| .runtime-metrics { | |
| grid-template-columns: 1fr 1fr; | |
| gap: 6px; | |
| } | |
| .runtime-metrics .metric-item { | |
| padding: 6px 10px; | |
| } | |
| .metric-value { | |
| font-size: 0.95rem; | |
| } | |
| .shortcut-hint, | |
| .shortcut-hint-inline { | |
| display: none; | |
| } | |
| .proposal-item { | |
| flex-direction: column; | |
| align-items: stretch; | |
| gap: 6px; | |
| } | |
| .proposal-actions { | |
| margin-left: 0; | |
| justify-content: flex-start; | |
| } | |
| .proposal-kind, | |
| .proposal-desc, | |
| .proposal-conf, | |
| .proposal-reason { | |
| white-space: normal; | |
| } | |
| .console-output { | |
| max-height: 150px; | |
| font-size: 0.72rem; | |
| } | |
| .doc-sidebar { | |
| max-height: 200px; | |
| } | |
| .doc-toolbar { | |
| flex-direction: column; | |
| } | |
| .doc-toolbar input[type="text"] { | |
| min-width: auto; | |
| } | |
| .operator-note { | |
| font-size: 0.72rem; | |
| } | |
| .proposal-line { | |
| flex-direction: column; | |
| align-items: flex-start; | |
| } | |
| .proposal-time { | |
| margin-left: 0; | |
| } | |
| .button-group { | |
| flex-wrap: wrap; | |
| } | |
| #heatmap { | |
| height: 250px; | |
| } | |
| } | |
| /* Very small screens */ | |
| @media (max-width: 380px) { | |
| .topbar, main { | |
| padding-left: 10px; | |
| padding-right: 10px; | |
| } | |
| .control-card { | |
| padding: 10px; | |
| } | |
| .operator-console { | |
| padding: 10px; | |
| } | |
| .runtime-metrics { | |
| grid-template-columns: 1fr 1fr; | |
| } | |
| .control-group { | |
| padding: 8px 10px; | |
| } | |
| .actions-row button { | |
| font-size: 0.65rem; | |
| padding: 3px 6px; | |
| min-height: 26px; | |
| } | |
| .metrics-grid { | |
| grid-template-columns: 1fr 1fr; | |
| gap: 8px; | |
| } | |
| .metric { | |
| padding: 12px; | |
| } | |
| .metric strong { | |
| font-size: 20px; | |
| } | |
| .panel { | |
| padding: 14px; | |
| } | |
| #heatmap { | |
| height: 180px; | |
| } | |
| } | |
| /* ============================================================================ | |
| INTEGRATION STATUS (Dashboard tab) | |
| ============================================================================ */ | |
| .integration-status { | |
| padding: 18px; | |
| margin-top: 14px; | |
| } | |
| .integration-grid { | |
| display: grid; | |
| grid-template-columns: repeat(auto-fit, minmax(140px, 1fr)); | |
| gap: 10px; | |
| margin-top: 12px; | |
| } | |
| .integration-item { | |
| padding: 10px 14px; | |
| border-radius: 8px; | |
| border: 1px solid var(--line); | |
| background: rgba(255, 255, 255, 0.02); | |
| font-size: 0.85rem; | |
| text-align: center; | |
| transition: all var(--transition-medium); | |
| } | |
| .integration-item.int-passed { | |
| border-color: rgba(80, 220, 120, 0.5); | |
| background: rgba(80, 220, 120, 0.08); | |
| color: #50dc78; | |
| } | |
| .integration-item.int-failed { | |
| border-color: rgba(240, 96, 112, 0.5); | |
| background: rgba(240, 96, 112, 0.08); | |
| color: #f06070; | |
| } | |
| .gate-badge { | |
| padding: 4px 12px; | |
| border-radius: 12px; | |
| font-size: 0.8rem; | |
| font-weight: 600; | |
| } | |
| .gate-badge.passed { | |
| background: rgba(80, 220, 120, 0.15); | |
| color: #50dc78; | |
| } | |
| .gate-badge.pending { | |
| background: rgba(255, 200, 80, 0.15); | |
| color: #ffc850; | |
| } | |
| .gate-board { | |
| max-width: 900px; | |
| margin: 0 auto; | |
| } | |
| .gate-header { | |
| margin-bottom: 20px; | |
| } | |
| .gate-header h2 { | |
| margin: 0 0 6px 0; | |
| } | |
| .gate-subtitle { | |
| color: var(--muted); | |
| font-size: 0.9rem; | |
| margin: 0 0 12px 0; | |
| } | |
| .gate-rule { | |
| display: block; | |
| margin-top: 6px; | |
| color: #ffc850; | |
| font-weight: 600; | |
| } | |
| .gate-grid { | |
| display: grid; | |
| grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); | |
| gap: 12px; | |
| margin-bottom: 24px; | |
| } | |
| .gate-item { | |
| display: flex; | |
| align-items: flex-start; | |
| gap: 12px; | |
| padding: 14px 16px; | |
| border-radius: var(--radius-card); | |
| border: 1px solid var(--line); | |
| background: rgba(10, 25, 37, 0.6); | |
| transition: all var(--transition-medium); | |
| } | |
| .gate-item.gate-passed { | |
| border-color: rgba(80, 220, 120, 0.5); | |
| background: rgba(80, 220, 120, 0.06); | |
| } | |
| .gate-item.gate-failed { | |
| border-color: rgba(240, 96, 112, 0.5); | |
| background: rgba(240, 96, 112, 0.06); | |
| } | |
| .gate-item.gate-pending { | |
| border-color: rgba(255, 200, 80, 0.3); | |
| background: rgba(255, 200, 80, 0.04); | |
| } | |
| .gate-status { | |
| font-size: 1.4rem; | |
| flex-shrink: 0; | |
| } | |
| .gate-label strong { | |
| display: block; | |
| font-size: 0.9rem; | |
| margin-bottom: 2px; | |
| } | |
| .gate-label span { | |
| font-size: 0.78rem; | |
| color: var(--muted); | |
| } | |
| .gate-roadmap { | |
| margin-top: 24px; | |
| } | |
| .gate-roadmap h3 { | |
| font-size: 1rem; | |
| margin-bottom: 12px; | |
| } | |
| .gate-checklist { | |
| list-style: none; | |
| padding: 0; | |
| margin: 0; | |
| display: grid; | |
| grid-template-columns: repeat(auto-fit, minmax(320px, 1fr)); | |
| gap: 6px; | |
| } | |
| .gate-checklist li { | |
| padding: 8px 12px; | |
| border-radius: 6px; | |
| font-size: 0.85rem; | |
| } | |
| .gate-todo { | |
| color: var(--muted); | |
| background: rgba(255, 255, 255, 0.02); | |
| } | |
| .gate-done { | |
| color: #50dc78; | |
| background: rgba(80, 220, 120, 0.05); | |
| } | |
| /* ============================================================================ | |
| UNIFIED FILE MANAGER (Research + Docs) | |
| ============================================================================ */ | |
| /* Toolbar */ | |
| .fm-toolbar { | |
| display: flex; | |
| align-items: center; | |
| gap: 16px; | |
| margin-bottom: 16px; | |
| padding: 10px 16px; | |
| background: rgba(10, 25, 37, 0.5); | |
| border: 1px solid var(--line); | |
| border-radius: var(--radius-card); | |
| flex-wrap: wrap; | |
| } | |
| .fm-source-selector { | |
| display: flex; | |
| gap: 4px; | |
| background: rgba(0, 0, 0, 0.25); | |
| border-radius: var(--radius-small); | |
| padding: 3px; | |
| } | |
| .fm-source-btn { | |
| padding: 6px 16px; | |
| border: none; | |
| border-radius: var(--radius-small); | |
| background: transparent; | |
| color: var(--muted); | |
| cursor: pointer; | |
| font-family: var(--font-family); | |
| font-size: 0.85rem; | |
| font-weight: 500; | |
| transition: all var(--transition-fast); | |
| } | |
| .fm-source-btn:hover { | |
| color: var(--text); | |
| background: rgba(255, 255, 255, 0.05); | |
| } | |
| .fm-source-btn.active { | |
| background: var(--color-primary); | |
| color: #fff; | |
| } | |
| .fm-experiment-sort { | |
| display: flex; | |
| align-items: center; | |
| gap: 6px; | |
| color: var(--muted); | |
| font-size: 0.8rem; | |
| white-space: nowrap; | |
| } | |
| .fm-experiment-sort select { | |
| min-width: 9.5rem; | |
| padding: 6px 8px; | |
| border: 1px solid rgba(255, 255, 255, 0.1); | |
| border-radius: var(--radius-small); | |
| background: rgba(0, 0, 0, 0.25); | |
| color: var(--text); | |
| font: inherit; | |
| } | |
| .fm-experiment-sort select:disabled { | |
| opacity: 0.5; | |
| } | |
| .fm-search-bar { | |
| display: flex; | |
| gap: 6px; | |
| flex: 1; | |
| min-width: 150px; | |
| max-width: 400px; | |
| } | |
| .fm-search-bar input[type="text"] { | |
| flex: 1; | |
| padding: 6px 12px; | |
| border: 1px solid rgba(255, 255, 255, 0.1); | |
| border-radius: var(--radius-small); | |
| background: rgba(0, 0, 0, 0.25); | |
| color: var(--text); | |
| font-family: var(--font-family); | |
| font-size: 0.85rem; | |
| } | |
| .fm-search-bar input[type="text"]:focus { | |
| outline: none; | |
| border-color: var(--color-primary); | |
| box-shadow: var(--shadow-focus); | |
| } | |
| .fm-search-bar button { | |
| padding: 6px 12px; | |
| background: rgba(74, 124, 247, 0.15); | |
| color: #7aabff; | |
| border: none; | |
| border-radius: var(--radius-small); | |
| cursor: pointer; | |
| font-family: var(--font-family); | |
| font-size: 0.85rem; | |
| transition: background var(--transition-fast); | |
| } | |
| .fm-search-bar button:hover { | |
| background: rgba(74, 124, 247, 0.25); | |
| } | |
| .fm-stats { | |
| font-size: 0.8rem; | |
| color: var(--muted); | |
| white-space: nowrap; | |
| } | |
| /* Main layout */ | |
| .fm-layout { | |
| display: flex; | |
| gap: 16px; | |
| min-height: 550px; | |
| max-height: 75vh; | |
| } | |
| /* Sidebar */ | |
| .fm-sidebar { | |
| flex: 0 0 340px; | |
| background: rgba(10, 25, 37, 0.6); | |
| border: 1px solid var(--line); | |
| border-radius: var(--radius-card); | |
| display: flex; | |
| flex-direction: column; | |
| overflow: hidden; | |
| } | |
| .fm-sidebar-header { | |
| display: flex; | |
| justify-content: space-between; | |
| align-items: center; | |
| padding: 12px 16px; | |
| border-bottom: 1px solid var(--line); | |
| } | |
| .fm-sidebar-title { | |
| font-size: 0.9rem; | |
| font-weight: 600; | |
| color: var(--text); | |
| } | |
| .fm-refresh-btn { | |
| background: none; | |
| border: none; | |
| color: var(--muted); | |
| cursor: pointer; | |
| font-size: 1rem; | |
| padding: 2px 6px; | |
| border-radius: 4px; | |
| transition: all var(--transition-fast); | |
| } | |
| .fm-refresh-btn:hover { | |
| color: var(--text); | |
| background: rgba(255, 255, 255, 0.06); | |
| } | |
| .fm-tree { | |
| flex: 1; | |
| overflow-y: auto; | |
| padding: 8px; | |
| font-size: 0.85rem; | |
| } | |
| .fm-tree-list { | |
| list-style: none; | |
| padding: 0; | |
| margin: 0; | |
| } | |
| .fm-tree-item { | |
| padding: 2px 0; | |
| } | |
| .fm-tree-dir { | |
| margin: 2px 0; | |
| } | |
| .fm-dir-toggle { | |
| display: inline-block; | |
| width: 16px; | |
| font-size: 0.7rem; | |
| color: var(--muted); | |
| cursor: pointer; | |
| user-select: none; | |
| transition: transform 0.15s; | |
| } | |
| .fm-dir-label { | |
| cursor: pointer; | |
| color: var(--text); | |
| font-weight: 500; | |
| font-size: 0.85rem; | |
| } | |
| .fm-dir-label:hover { | |
| color: #7aabff; | |
| } | |
| .fm-dir-children { | |
| padding-left: 20px; | |
| } | |
| .fm-tree-file { | |
| cursor: pointer; | |
| padding: 3px 0 3px 16px; | |
| border-radius: 4px; | |
| transition: background var(--transition-fast); | |
| } | |
| .fm-tree-file:hover { | |
| background: rgba(255, 255, 255, 0.05); | |
| } | |
| .fm-file-label { | |
| cursor: pointer; | |
| color: var(--muted); | |
| font-size: 0.85rem; | |
| } | |
| .fm-file-label:hover { | |
| color: var(--text); | |
| } | |
| .fm-file-size { | |
| font-size: 0.7rem; | |
| color: #555; | |
| margin-left: 8px; | |
| } | |
| .fm-search-result { | |
| padding: 6px 10px; | |
| border-radius: 4px; | |
| cursor: pointer; | |
| display: flex; | |
| align-items: center; | |
| gap: 8px; | |
| transition: background var(--transition-fast); | |
| } | |
| .fm-search-result:hover { | |
| background: rgba(255, 255, 255, 0.05); | |
| } | |
| .fm-file-icon { | |
| font-size: 1rem; | |
| } | |
| .fm-file-name { | |
| flex: 1; | |
| color: var(--text); | |
| } | |
| .fm-loading { | |
| color: var(--muted); | |
| font-style: italic; | |
| padding: 16px; | |
| display: block; | |
| text-align: center; | |
| } | |
| .fm-empty { | |
| color: var(--muted); | |
| font-style: italic; | |
| padding: 24px; | |
| text-align: center; | |
| } | |
| .fm-no-results { | |
| padding: 24px; | |
| text-align: center; | |
| color: #555; | |
| } | |
| /* Viewer */ | |
| .fm-viewer { | |
| flex: 1; | |
| background: rgba(10, 25, 37, 0.95); | |
| border: 1px solid var(--accent); | |
| border-radius: var(--radius-card); | |
| padding: 20px; | |
| overflow-y: auto; | |
| min-height: 550px; | |
| transition: opacity 0.2s ease, transform 0.2s ease; | |
| z-index: 10; | |
| } | |
| /* Hidden state: overlay viewer collapses so sidebar fills space */ | |
| .fm-viewer-hidden { | |
| display: none; | |
| } | |
| /* When viewer is hidden, sidebar takes full width */ | |
| .fm-layout:has(.fm-viewer-hidden) .fm-sidebar { | |
| flex: 1; | |
| } | |
| .fm-placeholder { | |
| display: flex; | |
| flex-direction: column; | |
| align-items: center; | |
| justify-content: center; | |
| height: 100%; | |
| color: var(--muted); | |
| text-align: center; | |
| padding: 40px 20px; | |
| } | |
| .fm-placeholder p { | |
| margin: 8px 0; | |
| } | |
| .fm-hint { | |
| font-size: 0.8rem; | |
| color: #555; | |
| } | |
| .fm-file-header { | |
| display: flex; | |
| justify-content: space-between; | |
| align-items: center; | |
| border-bottom: 1px solid var(--line); | |
| padding-bottom: 12px; | |
| margin-bottom: 16px; | |
| gap: 12px; | |
| } | |
| .fm-close-viewer-btn { | |
| background: none; | |
| border: none; | |
| color: var(--muted); | |
| cursor: pointer; | |
| font-size: 1.1rem; | |
| padding: 4px 8px; | |
| border-radius: 4px; | |
| transition: all 0.15s ease; | |
| line-height: 1; | |
| } | |
| .fm-close-viewer-btn:hover { | |
| color: var(--danger); | |
| background: rgba(255, 93, 115, 0.1); | |
| } | |
| .fm-file-header h3 { | |
| margin: 0; | |
| font-size: 1.05rem; | |
| font-weight: 600; | |
| } | |
| .fm-file-meta { | |
| font-size: 0.8rem; | |
| color: var(--muted); | |
| } | |
| .fm-error { | |
| color: #f06070; | |
| padding: 20px; | |
| text-align: center; | |
| } | |
| /* Image viewer */ | |
| .fm-image-container { | |
| display: flex; | |
| justify-content: center; | |
| align-items: center; | |
| padding: 16px; | |
| min-height: 200px; | |
| } | |
| .fm-image { | |
| max-width: 100%; | |
| max-height: 70vh; | |
| border-radius: 8px; | |
| box-shadow: 0 4px 20px rgba(0, 0, 0, 0.3); | |
| object-fit: contain; | |
| } | |
| /* Video viewer */ | |
| .fm-video-container { | |
| display: flex; | |
| justify-content: center; | |
| padding: 16px; | |
| } | |
| .fm-video { | |
| max-width: 100%; | |
| max-height: 70vh; | |
| border-radius: 8px; | |
| box-shadow: 0 4px 20px rgba(0, 0, 0, 0.3); | |
| } | |
| /* Audio viewer */ | |
| .fm-audio-container { | |
| display: flex; | |
| justify-content: center; | |
| padding: 24px 16px; | |
| } | |
| .fm-audio { | |
| width: 100%; | |
| max-width: 600px; | |
| border-radius: 8px; | |
| } | |
| /* PDF viewer */ | |
| .fm-pdf-container { | |
| display: flex; | |
| justify-content: center; | |
| padding: 16px; | |
| min-height: 500px; | |
| } | |
| .fm-pdf-frame { | |
| width: 100%; | |
| height: 70vh; | |
| border: none; | |
| border-radius: 8px; | |
| box-shadow: 0 4px 20px rgba(0, 0, 0, 0.3); | |
| background: #fff; | |
| } | |
| /* Spreadsheet viewer */ | |
| .fm-sheet-tabs { | |
| display: flex; | |
| gap: 4px; | |
| padding: 8px 12px 0; | |
| border-bottom: 1px solid var(--border-color); | |
| background: rgba(0, 0, 0, 0.15); | |
| } | |
| .fm-sheet-tab { | |
| padding: 6px 14px; | |
| border: 1px solid var(--border-color); | |
| border-bottom: none; | |
| border-radius: 6px 6px 0 0; | |
| background: rgba(255, 255, 255, 0.05); | |
| color: var(--text-secondary); | |
| cursor: pointer; | |
| font-size: 0.85rem; | |
| } | |
| .fm-sheet-tab.active { | |
| background: var(--card-bg); | |
| color: var(--text-primary); | |
| font-weight: 600; | |
| } | |
| .fm-sheet-viewer { | |
| padding: 12px; | |
| overflow: auto; | |
| max-height: 60vh; | |
| } | |
| .fm-spreadsheet-table { | |
| width: 100%; | |
| border-collapse: collapse; | |
| font-size: 0.85rem; | |
| background: var(--card-bg); | |
| } | |
| .fm-spreadsheet-table th, | |
| .fm-spreadsheet-table td { | |
| border: 1px solid var(--border-color); | |
| padding: 6px 10px; | |
| text-align: left; | |
| white-space: nowrap; | |
| } | |
| .fm-spreadsheet-table th { | |
| background: rgba(255, 255, 255, 0.08); | |
| font-weight: 600; | |
| position: sticky; | |
| top: 0; | |
| } | |
| .fm-spreadsheet-table tr:nth-child(even) { | |
| background: rgba(255, 255, 255, 0.03); | |
| } | |
| /* DOCX viewer */ | |
| .fm-docx-viewer { | |
| padding: 16px; | |
| overflow: auto; | |
| max-height: 70vh; | |
| } | |
| .fm-docx-content { | |
| background: #fff; | |
| color: #1f2328; | |
| padding: 32px; | |
| border-radius: 8px; | |
| box-shadow: 0 4px 20px rgba(0, 0, 0, 0.3); | |
| line-height: 1.6; | |
| } | |
| .fm-docx-content h1, | |
| .fm-docx-content h2, | |
| .fm-docx-content h3, | |
| .fm-docx-content h4 { | |
| color: #1f2328; | |
| margin-top: 1.2em; | |
| margin-bottom: 0.5em; | |
| } | |
| .fm-docx-content p { | |
| margin: 0.5em 0; | |
| } | |
| .fm-docx-content table { | |
| border-collapse: collapse; | |
| width: 100%; | |
| margin: 1em 0; | |
| } | |
| .fm-docx-content td, | |
| .fm-docx-content th { | |
| border: 1px solid #d0d7de; | |
| padding: 6px 10px; | |
| } | |
| .fm-docx-messages { | |
| margin-top: 12px; | |
| padding: 8px 12px; | |
| background: rgba(255, 193, 7, 0.15); | |
| border-radius: 6px; | |
| color: var(--text-secondary); | |
| font-size: 0.8rem; | |
| } | |
| /* In-place text/code editor */ | |
| .fm-editor-wrapper { | |
| padding: 12px; | |
| display: flex; | |
| flex-direction: column; | |
| min-height: 300px; | |
| } | |
| .fm-editor-split { | |
| display: grid; | |
| grid-template-columns: 1fr 1fr; | |
| gap: 12px; | |
| min-height: 400px; | |
| } | |
| .fm-editor-pane { | |
| display: flex; | |
| flex-direction: column; | |
| min-height: 0; | |
| } | |
| .fm-editor-textarea { | |
| width: 100%; | |
| min-height: 300px; | |
| flex: 1; | |
| padding: 12px; | |
| border: 1px solid var(--border-color); | |
| border-radius: 8px; | |
| background: var(--bg-secondary); | |
| color: var(--text-primary); | |
| font-family: var(--font-mono); | |
| font-size: 0.85rem; | |
| line-height: 1.5; | |
| resize: vertical; | |
| outline: none; | |
| } | |
| .fm-editor-textarea:focus { | |
| border-color: var(--accent); | |
| box-shadow: 0 0 0 2px rgba(74, 124, 247, 0.2); | |
| } | |
| .fm-editor-preview { | |
| overflow: auto; | |
| max-height: 70vh; | |
| padding: 16px; | |
| border: 1px solid var(--border-color); | |
| border-radius: 8px; | |
| background: var(--card-bg); | |
| } | |
| .fm-editor-status { | |
| padding: 8px 12px; | |
| min-height: 32px; | |
| font-size: 0.85rem; | |
| } | |
| .fm-editor-status.success { | |
| color: #7ee787; | |
| } | |
| .fm-editor-status.error { | |
| color: #f85149; | |
| } | |
| .fm-file-edit-btn, | |
| .fm-file-save-btn, | |
| .fm-file-cancel-btn, | |
| .fm-file-action-btn { | |
| padding: 4px 10px; | |
| border: 1px solid var(--border-color); | |
| border-radius: 6px; | |
| background: rgba(255, 255, 255, 0.05); | |
| color: var(--text-secondary); | |
| cursor: pointer; | |
| font-size: 0.8rem; | |
| transition: all var(--transition-fast); | |
| } | |
| .fm-file-edit-btn:hover, | |
| .fm-file-action-btn:hover { | |
| background: rgba(74, 124, 247, 0.15); | |
| color: #7aabff; | |
| } | |
| .fm-file-save-btn { | |
| background: rgba(46, 160, 67, 0.15); | |
| color: #7ee787; | |
| border-color: rgba(46, 160, 67, 0.3); | |
| } | |
| .fm-file-save-btn:hover:not(:disabled) { | |
| background: rgba(46, 160, 67, 0.25); | |
| } | |
| .fm-file-save-btn:disabled { | |
| opacity: 0.6; | |
| cursor: wait; | |
| } | |
| .fm-file-cancel-btn:hover { | |
| background: rgba(248, 81, 73, 0.15); | |
| color: #f85149; | |
| } | |
| /* Diff viewer */ | |
| .fm-editor-diff { | |
| margin: 0 12px 12px; | |
| border: 1px solid var(--border-color); | |
| border-radius: 8px; | |
| overflow: auto; | |
| max-height: 300px; | |
| background: rgba(0, 0, 0, 0.2); | |
| } | |
| .fm-diff-empty { | |
| padding: 16px; | |
| text-align: center; | |
| color: var(--text-secondary); | |
| } | |
| .fm-diff-table { | |
| width: 100%; | |
| border-collapse: collapse; | |
| font-family: var(--font-mono); | |
| font-size: 0.8rem; | |
| line-height: 1.5; | |
| } | |
| .fm-diff-table td { | |
| padding: 2px 8px; | |
| white-space: pre-wrap; | |
| } | |
| .fm-diff-sign { | |
| width: 24px; | |
| text-align: center; | |
| user-select: none; | |
| } | |
| .fm-diff-add { | |
| background: rgba(46, 160, 67, 0.12); | |
| } | |
| .fm-diff-add .fm-diff-sign { | |
| color: #7ee787; | |
| } | |
| .fm-diff-del { | |
| background: rgba(248, 81, 73, 0.12); | |
| } | |
| .fm-diff-del .fm-diff-sign { | |
| color: #f85149; | |
| } | |
| .fm-diff-ctx { | |
| color: var(--text-secondary); | |
| } | |
| /* BibTeX form editor */ | |
| .bibtex-edit-toolbar { | |
| display: flex; | |
| align-items: center; | |
| gap: 12px; | |
| padding: 12px 16px; | |
| border-bottom: 1px solid var(--line); | |
| } | |
| .bibtex-edit-save-btn { | |
| padding: 6px 14px; | |
| border: 1px solid rgba(46, 160, 67, 0.4); | |
| border-radius: 6px; | |
| background: rgba(46, 160, 67, 0.15); | |
| color: #7ee787; | |
| cursor: pointer; | |
| font-size: 0.85rem; | |
| } | |
| .bibtex-edit-save-btn:hover:not(:disabled) { | |
| background: rgba(46, 160, 67, 0.25); | |
| } | |
| .bibtex-edit-save-btn:disabled { | |
| opacity: 0.6; | |
| cursor: wait; | |
| } | |
| .bibtex-edit-status { | |
| font-size: 0.85rem; | |
| } | |
| .bibtex-edit-status.success { | |
| color: #7ee787; | |
| } | |
| .bibtex-edit-status.error { | |
| color: #f85149; | |
| } | |
| .bibtex-edit-form { | |
| padding: 12px 16px; | |
| max-height: 60vh; | |
| overflow: auto; | |
| } | |
| .bibtex-edit-entry { | |
| margin-bottom: 16px; | |
| border: 1px solid var(--line); | |
| border-radius: 8px; | |
| padding: 12px; | |
| } | |
| .bibtex-edit-entry legend { | |
| padding: 0 8px; | |
| font-weight: 600; | |
| color: var(--text-primary); | |
| } | |
| .bibtex-edit-fields { | |
| display: grid; | |
| grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); | |
| gap: 10px; | |
| } | |
| .bibtex-edit-label { | |
| display: flex; | |
| flex-direction: column; | |
| gap: 4px; | |
| font-size: 0.8rem; | |
| color: var(--text-secondary); | |
| } | |
| .bibtex-edit-label span { | |
| text-transform: capitalize; | |
| } | |
| .bibtex-edit-label input, | |
| .bibtex-edit-label select { | |
| padding: 6px 8px; | |
| border: 1px solid var(--border-color); | |
| border-radius: 4px; | |
| background: var(--bg-secondary); | |
| color: var(--text-primary); | |
| font-family: var(--font-family); | |
| font-size: 0.85rem; | |
| } | |
| .bibtex-edit-label input:focus, | |
| .bibtex-edit-label select:focus { | |
| outline: none; | |
| border-color: var(--accent); | |
| } | |
| .bibtex-edit-empty { | |
| padding: 24px; | |
| text-align: center; | |
| color: var(--text-secondary); | |
| } | |
| /* Jupyter Notebook viewer */ | |
| .fm-notebook { | |
| padding: 16px; | |
| background: var(--bg-secondary); | |
| } | |
| .fm-notebook-cell { | |
| margin-bottom: 16px; | |
| border: 1px solid var(--border-color); | |
| border-radius: 8px; | |
| overflow: hidden; | |
| background: var(--card-bg); | |
| } | |
| .fm-notebook-cell-label { | |
| padding: 4px 10px; | |
| background: rgba(255, 255, 255, 0.05); | |
| color: var(--text-secondary); | |
| font-size: 0.75rem; | |
| font-family: var(--font-mono); | |
| text-transform: uppercase; | |
| } | |
| .fm-notebook-source { | |
| margin: 0; | |
| padding: 12px; | |
| } | |
| .fm-notebook-source pre { | |
| margin: 0; | |
| white-space: pre-wrap; | |
| word-break: break-word; | |
| } | |
| .fm-notebook-outputs { | |
| border-top: 1px solid var(--border-color); | |
| background: rgba(0, 0, 0, 0.15); | |
| } | |
| .fm-notebook-output { | |
| padding: 10px 12px; | |
| border-bottom: 1px solid var(--border-color); | |
| } | |
| .fm-notebook-output:last-child { | |
| border-bottom: none; | |
| } | |
| .fm-notebook-output pre { | |
| margin: 0; | |
| white-space: pre-wrap; | |
| word-break: break-word; | |
| font-size: 0.8rem; | |
| } | |
| .fm-notebook-output-error { | |
| color: #f85149; | |
| padding: 8px; | |
| background: rgba(248, 81, 73, 0.08); | |
| border-radius: 4px; | |
| } | |
| .fm-notebook-output-image { | |
| max-width: 100%; | |
| border-radius: 4px; | |
| } | |
| /* Log file viewer */ | |
| .fm-log-viewer { | |
| padding: 12px; | |
| font-family: var(--font-mono); | |
| font-size: 0.8rem; | |
| line-height: 1.5; | |
| max-height: 65vh; | |
| overflow: auto; | |
| background: rgba(0, 0, 0, 0.2); | |
| } | |
| .fm-log-line { | |
| display: flex; | |
| gap: 12px; | |
| padding: 2px 0; | |
| border-bottom: 1px solid rgba(255, 255, 255, 0.03); | |
| } | |
| .fm-log-line-num { | |
| min-width: 48px; | |
| text-align: right; | |
| color: var(--text-secondary); | |
| user-select: none; | |
| } | |
| .fm-log-line-text { | |
| white-space: pre-wrap; | |
| word-break: break-word; | |
| } | |
| .fm-log-level-default .fm-log-line-text { | |
| color: var(--text-primary); | |
| } | |
| .fm-log-level-debug .fm-log-line-text { | |
| color: #9aa0a6; | |
| } | |
| .fm-log-level-info .fm-log-line-text { | |
| color: #79c0ff; | |
| } | |
| .fm-log-level-warning .fm-log-line-text { | |
| color: #e6aa28; | |
| } | |
| .fm-log-level-error .fm-log-line-text { | |
| color: #f85149; | |
| } | |
| .fm-log-level-critical .fm-log-line-text { | |
| color: #ff7b72; | |
| font-weight: 600; | |
| } | |
| .fm-log-filter-btn.active { | |
| opacity: 0.4; | |
| } | |
| /* Diagram viewers (Graphviz / PlantUML) */ | |
| .fm-diagram-viewer { | |
| display: flex; | |
| justify-content: center; | |
| padding: 16px; | |
| min-height: 400px; | |
| } | |
| .fm-diagram-container { | |
| width: 100%; | |
| } | |
| .fm-diagram-image { | |
| max-width: 100%; | |
| border-radius: 8px; | |
| background: #fff; | |
| padding: 8px; | |
| } | |
| /* Code viewer */ | |
| .fm-code { | |
| background: rgba(0, 0, 0, 0.35); | |
| padding: 14px; | |
| border-radius: var(--radius-small); | |
| overflow-x: auto; | |
| font-family: var(--font-mono); | |
| font-size: 0.82rem; | |
| line-height: 1.5; | |
| white-space: pre-wrap; | |
| word-wrap: break-word; | |
| border: 1px solid rgba(255, 255, 255, 0.04); | |
| margin: 0; | |
| } | |
| .fm-code-block { | |
| margin: 12px 0; | |
| border-left: 3px solid var(--color-primary); | |
| border-radius: 0 var(--radius-small) var(--radius-small) 0; | |
| } | |
| .fm-code-lang { | |
| display: inline-block; | |
| padding: 2px 10px; | |
| margin-bottom: -1px; | |
| background: rgba(74, 124, 247, 0.15); | |
| color: #7aabff; | |
| font-family: var(--font-mono); | |
| font-size: 0.7rem; | |
| border-radius: 4px 4px 0 0; | |
| letter-spacing: 0.5px; | |
| text-transform: uppercase; | |
| position: relative; | |
| z-index: 1; | |
| } | |
| .fm-code-wrapper .fm-code-block { | |
| margin-top: 0; | |
| border-top-left-radius: 0; | |
| } | |
| .fm-inline-code { | |
| background: rgba(0, 0, 0, 0.3); | |
| padding: 2px 8px; | |
| border-radius: 4px; | |
| font-family: var(--font-mono); | |
| font-size: 0.85em; | |
| color: #7aabff; | |
| } | |
| .fm-text { | |
| background: rgba(0, 0, 0, 0.15); | |
| padding: 14px; | |
| border-radius: var(--radius-small); | |
| font-family: var(--font-mono); | |
| font-size: 0.82rem; | |
| line-height: 1.5; | |
| white-space: pre-wrap; | |
| word-wrap: break-word; | |
| margin: 0; | |
| } | |
| /* YAML syntax highlighting */ | |
| .fm-yaml { | |
| font-size: 0.82rem; | |
| line-height: 1.6; | |
| } | |
| .fm-yaml .fm-yaml-comment { | |
| color: #6a9955; | |
| font-style: italic; | |
| } | |
| .fm-yaml .fm-yaml-key { | |
| color: #569cd6; | |
| font-weight: 600; | |
| } | |
| .fm-yaml .fm-yaml-bool { | |
| color: #569cd6; | |
| font-weight: 500; | |
| } | |
| .fm-yaml .fm-yaml-number { | |
| color: #b5cea8; | |
| } | |
| .fm-yaml .fm-yaml-string { | |
| color: #ce9178; | |
| } | |
| .fm-yaml .fm-yaml-null { | |
| color: #808080; | |
| font-style: italic; | |
| } | |
| .fm-yaml .fm-yaml-list-marker { | |
| color: #dcdcaa; | |
| font-weight: 700; | |
| } | |
| .fm-yaml .fm-yaml-anchor { | |
| color: #c586c0; | |
| } | |
| .fm-yaml .fm-yaml-alias { | |
| color: #c586c0; | |
| } | |
| .fm-yaml .fm-yaml-doc-sep { | |
| color: #808080; | |
| font-weight: 600; | |
| } | |
| .fm-yaml .fm-yaml-block-scalar { | |
| color: #dcdcaa; | |
| font-weight: 600; | |
| } | |
| /* ================================================================ | |
| Multi-language code syntax highlighting (VS Code Dark+ palette) | |
| ================================================================ */ | |
| .fm-code-hl { | |
| font-size: 0.82rem; | |
| line-height: 1.6; | |
| } | |
| /* Comments — green */ | |
| .fm-tk-comment { color: #6a9955; font-style: italic; } | |
| /* Keywords — blue */ | |
| .fm-tk-keyword { color: #569cd6; font-weight: 500; } | |
| /* Builtins / standard library — cyan */ | |
| .fm-tk-builtin { color: #4ec9b0; } | |
| /* Types — teal */ | |
| .fm-tk-type { color: #4ec9b0; font-style: italic; } | |
| /* Strings — orange */ | |
| .fm-tk-string { color: #ce9178; } | |
| /* Numbers — light green */ | |
| .fm-tk-number { color: #b5cea8; } | |
| /* Decorators / annotations — yellow-green */ | |
| .fm-tk-decorator { color: #dcdcaa; } | |
| /* f-string expressions — orange-red */ | |
| .fm-tk-fstring { color: #d16969; } | |
| /* HTML/XML tags — blue */ | |
| .fm-tk-tag { color: #569cd6; } | |
| /* HTML/XML attributes — light yellow */ | |
| .fm-tk-attr { color: #dcdcaa; } | |
| /* HTML entities — orange */ | |
| .fm-tk-entity { color: #ce9178; } | |
| /* CSS selectors — yellow */ | |
| .fm-tk-selector { color: #d7ba7d; } | |
| /* CSS properties — light blue */ | |
| .fm-tk-property { color: #9cdcfe; } | |
| /* CSS values — light green */ | |
| .fm-tk-value { color: #b5cea8; } | |
| /* !important — red */ | |
| .fm-tk-important { color: #f06070; font-weight: 700; } | |
| /* Variables — cyan */ | |
| .fm-tk-variable { color: #9cdcfe; } | |
| /* Section/table headers — yellow */ | |
| .fm-tk-section { color: #dcdcaa; font-weight: 600; } | |
| /* BibTeX entry types — blue */ | |
| .fm-tk-entry { color: #569cd6; font-weight: 600; } | |
| /* BibTeX fields — light blue */ | |
| .fm-tk-field { color: #9cdcfe; } | |
| /* Diff markers — red/green */ | |
| .fm-tk-diff { color: #d16969; } | |
| .fm-tk-diff:is(.fm-tk-add) { color: #6a9955; } | |
| /* Diff hunk headers — purple */ | |
| .fm-tk-hunk { color: #c586c0; } | |
| /* Labels — yellow */ | |
| .fm-tk-label { color: #dcdcaa; } | |
| /* Markdown rendering */ | |
| .fm-markdown { | |
| font-size: 0.92rem; | |
| line-height: 1.7; | |
| color: var(--text); | |
| max-width: 100%; | |
| overflow-wrap: break-word; | |
| } | |
| .fm-markdown h2, .fm-markdown h3, .fm-markdown h4 { | |
| margin: 24px 0 12px 0; | |
| color: var(--text); | |
| font-weight: 600; | |
| line-height: 1.3; | |
| } | |
| .fm-markdown h2 { font-size: 1.3rem; border-bottom: 1px solid var(--line); padding-bottom: 6px; } | |
| .fm-markdown h3 { font-size: 1.1rem; } | |
| .fm-markdown h4 { font-size: 1rem; } | |
| .fm-markdown p { | |
| margin: 10px 0; | |
| line-height: 1.7; | |
| } | |
| .fm-markdown a { | |
| color: #7aabff; | |
| text-decoration: none; | |
| border-bottom: 1px solid rgba(122, 171, 255, 0.2); | |
| transition: border-color var(--transition-fast); | |
| } | |
| .fm-markdown a:hover { | |
| text-decoration: none; | |
| border-bottom-color: #7aabff; | |
| } | |
| .fm-markdown img { | |
| max-width: 100%; | |
| border-radius: 8px; | |
| margin: 16px 0; | |
| box-shadow: 0 2px 12px rgba(0, 0, 0, 0.2); | |
| } | |
| .fm-markdown hr { | |
| border: none; | |
| border-top: 1px solid var(--line); | |
| margin: 20px 0; | |
| } | |
| .fm-markdown blockquote { | |
| border-left: 3px solid var(--color-primary); | |
| margin: 12px 0; | |
| padding: 8px 16px; | |
| background: rgba(74, 124, 247, 0.05); | |
| border-radius: 0 var(--radius-small) var(--radius-small) 0; | |
| color: var(--muted); | |
| } | |
| .fm-markdown ul, .fm-markdown ol { | |
| padding-left: 24px; | |
| margin: 8px 0; | |
| } | |
| .fm-markdown li { | |
| margin: 4px 0; | |
| } | |
| /* CSV table */ | |
| .fm-csv-table { | |
| width: 100%; | |
| border-collapse: collapse; | |
| font-size: 0.82rem; | |
| } | |
| .fm-csv-table th { | |
| background: rgba(74, 124, 247, 0.15); | |
| color: #7aabff; | |
| padding: 8px 12px; | |
| text-align: left; | |
| font-weight: 600; | |
| border: 1px solid var(--line); | |
| } | |
| .fm-csv-table td { | |
| padding: 6px 12px; | |
| border: 1px solid var(--line); | |
| color: var(--text); | |
| } | |
| .fm-csv-table tr:nth-child(even) { | |
| background: rgba(255, 255, 255, 0.02); | |
| } | |
| /* Markdown tables */ | |
| .fm-md-table { | |
| width: 100%; | |
| border-collapse: collapse; | |
| margin: 16px 0; | |
| font-size: 0.85rem; | |
| } | |
| .fm-md-table td { | |
| padding: 8px 14px; | |
| border: 1px solid var(--line); | |
| color: var(--text); | |
| vertical-align: top; | |
| } | |
| .fm-md-table tr:nth-child(even) { | |
| background: rgba(255, 255, 255, 0.02); | |
| } | |
| .fm-md-table tr:hover { | |
| background: rgba(74, 124, 247, 0.04); | |
| } | |
| .fm-csv-table tr:hover { | |
| background: rgba(255, 255, 255, 0.04); | |
| } | |
| .fm-csv-truncated { | |
| color: var(--muted); | |
| font-style: italic; | |
| text-align: center; | |
| } | |
| /* ============================================================================ | |
| FM ENHANCEMENTS: Breadcrumb, Filters, Recent, OS-Button, Copy-Button | |
| ============================================================================ */ | |
| /* Breadcrumb */ | |
| .fm-breadcrumb { | |
| display: flex; | |
| align-items: center; | |
| gap: 4px; | |
| padding: 6px 12px; | |
| margin-bottom: 8px; | |
| background: rgba(10, 25, 37, 0.3); | |
| border: 1px solid var(--line); | |
| border-radius: var(--radius-small); | |
| font-size: 0.82rem; | |
| color: var(--muted); | |
| flex-wrap: wrap; | |
| min-height: 32px; | |
| } | |
| .fm-bc-item { | |
| cursor: pointer; | |
| padding: 2px 8px; | |
| border-radius: 4px; | |
| transition: all var(--transition-fast); | |
| color: var(--muted); | |
| } | |
| .fm-bc-item:hover { | |
| color: #7aabff; | |
| background: rgba(74, 124, 247, 0.08); | |
| } | |
| .fm-bc-item.fm-bc-root { | |
| font-weight: 600; | |
| color: var(--text); | |
| } | |
| .fm-bc-separator { | |
| color: #555; | |
| font-size: 0.7rem; | |
| user-select: none; | |
| } | |
| .fm-bc-current { | |
| color: var(--text); | |
| font-weight: 500; | |
| cursor: default; | |
| } | |
| /* File-type filter chips */ | |
| .fm-filters { | |
| display: flex; | |
| align-items: center; | |
| gap: 4px; | |
| padding: 4px 0; | |
| margin-bottom: 8px; | |
| flex-wrap: wrap; | |
| } | |
| .fm-filter-chip { | |
| padding: 3px 10px; | |
| border: 1px solid rgba(255, 255, 255, 0.08); | |
| border-radius: 12px; | |
| background: transparent; | |
| color: var(--muted); | |
| cursor: pointer; | |
| font-family: var(--font-family); | |
| font-size: 0.75rem; | |
| transition: all var(--transition-fast); | |
| white-space: nowrap; | |
| } | |
| .fm-filter-chip:hover { | |
| border-color: rgba(74, 124, 247, 0.3); | |
| color: var(--text); | |
| background: rgba(74, 124, 247, 0.06); | |
| } | |
| .fm-filter-chip.active { | |
| background: rgba(74, 124, 247, 0.2); | |
| border-color: var(--color-primary); | |
| color: #7aabff; | |
| font-weight: 500; | |
| } | |
| /* Open-in-OS button */ | |
| .fm-os-btn { | |
| background: rgba(74, 124, 247, 0.1); | |
| border: 1px solid rgba(255, 255, 255, 0.08); | |
| color: var(--muted); | |
| cursor: pointer; | |
| font-size: 1rem; | |
| padding: 4px 10px; | |
| border-radius: var(--radius-small); | |
| transition: all var(--transition-fast); | |
| line-height: 1; | |
| } | |
| .fm-os-btn:hover { | |
| background: rgba(74, 124, 247, 0.2); | |
| color: var(--text); | |
| border-color: rgba(74, 124, 247, 0.3); | |
| } | |
| /* Sidebar actions */ | |
| .fm-sidebar-actions { | |
| display: flex; | |
| gap: 4px; | |
| } | |
| .fm-sidebar-action-btn { | |
| background: none; | |
| border: none; | |
| color: var(--muted); | |
| cursor: pointer; | |
| font-size: 0.95rem; | |
| padding: 2px 6px; | |
| border-radius: 4px; | |
| transition: all var(--transition-fast); | |
| } | |
| .fm-sidebar-action-btn:hover { | |
| color: var(--text); | |
| background: rgba(255, 255, 255, 0.06); | |
| } | |
| /* Recent files panel */ | |
| .fm-recent { | |
| border-top: 1px solid var(--line); | |
| background: rgba(10, 25, 37, 0.4); | |
| max-height: 200px; | |
| overflow-y: auto; | |
| } | |
| .fm-recent-header { | |
| display: flex; | |
| justify-content: space-between; | |
| align-items: center; | |
| padding: 8px 12px; | |
| font-size: 0.82rem; | |
| color: var(--muted); | |
| font-weight: 500; | |
| border-bottom: 1px solid var(--line); | |
| } | |
| .fm-recent-list { | |
| padding: 4px 0; | |
| } | |
| .fm-recent-item { | |
| display: flex; | |
| align-items: center; | |
| gap: 8px; | |
| padding: 5px 12px; | |
| cursor: pointer; | |
| font-size: 0.82rem; | |
| color: var(--muted); | |
| transition: background var(--transition-fast); | |
| } | |
| .fm-recent-item:hover { | |
| background: rgba(255, 255, 255, 0.04); | |
| color: var(--text); | |
| } | |
| .fm-recent-item .fm-recent-icon { | |
| font-size: 0.85rem; | |
| flex-shrink: 0; | |
| } | |
| .fm-recent-item .fm-recent-name { | |
| flex: 1; | |
| overflow: hidden; | |
| text-overflow: ellipsis; | |
| white-space: nowrap; | |
| } | |
| .fm-recent-item .fm-recent-source { | |
| font-size: 0.7rem; | |
| color: #555; | |
| flex-shrink: 0; | |
| } | |
| /* Copy button for code blocks */ | |
| .fm-copy-btn { | |
| position: absolute; | |
| top: 6px; | |
| right: 6px; | |
| padding: 4px 10px; | |
| background: rgba(0, 0, 0, 0.5); | |
| border: 1px solid rgba(255, 255, 255, 0.1); | |
| border-radius: 4px; | |
| color: var(--muted); | |
| cursor: pointer; | |
| font-family: var(--font-family); | |
| font-size: 0.72rem; | |
| transition: all var(--transition-fast); | |
| opacity: 0; | |
| z-index: 2; | |
| } | |
| .fm-code-wrapper { | |
| position: relative; | |
| } | |
| .fm-code-wrapper:hover .fm-copy-btn { | |
| opacity: 1; | |
| } | |
| .fm-copy-btn:hover { | |
| background: rgba(74, 124, 247, 0.25); | |
| color: #fff; | |
| border-color: var(--color-primary); | |
| } | |
| .fm-copy-btn.copied { | |
| background: rgba(74, 200, 100, 0.25); | |
| border-color: rgba(74, 200, 100, 0.4); | |
| color: #6f6; | |
| opacity: 1; | |
| } | |
| /* File header with copy */ | |
| .fm-file-header-actions { | |
| display: flex; | |
| align-items: center; | |
| gap: 8px; | |
| } | |
| .fm-file-copy-btn { | |
| padding: 4px 10px; | |
| background: rgba(74, 124, 247, 0.12); | |
| border: 1px solid rgba(255, 255, 255, 0.08); | |
| border-radius: 4px; | |
| color: var(--muted); | |
| cursor: pointer; | |
| font-family: var(--font-family); | |
| font-size: 0.72rem; | |
| transition: all var(--transition-fast); | |
| } | |
| .fm-file-copy-btn:hover { | |
| background: rgba(74, 124, 247, 0.25); | |
| color: #fff; | |
| } | |
| /* ============================================================================ | |
| HEALTH / PROBLEMS DRAWER (Operator Workbench) | |
| ============================================================================ */ | |
| .health-bar { | |
| display: flex; | |
| align-items: center; | |
| gap: 8px; | |
| margin-left: 12px; | |
| padding: 6px 10px; | |
| border-radius: var(--radius-pill); | |
| border: 1px solid var(--line); | |
| background: rgba(10, 25, 37, 0.6); | |
| cursor: pointer; | |
| transition: background var(--transition-fast); | |
| } | |
| .health-bar:hover { | |
| background: rgba(255, 255, 255, 0.05); | |
| } | |
| .health-indicator { | |
| width: 10px; | |
| height: 10px; | |
| border-radius: 50%; | |
| background: #555; | |
| } | |
| .health-indicator.health-ok { background: var(--color-success); box-shadow: 0 0 6px rgba(36, 180, 110, 0.5); } | |
| .health-indicator.health-warning { background: var(--color-warning); } | |
| .health-indicator.health-error { background: var(--color-danger); } | |
| .health-indicator.health-stale { background: #c586c0; } | |
| .health-indicator.health-unavailable { background: #8899bb; } | |
| .health-indicator.health-disabled { background: #555; } | |
| .health-summary { | |
| font-size: 0.78rem; | |
| color: var(--muted); | |
| font-weight: 500; | |
| } | |
| .health-toggle { | |
| background: transparent; | |
| border: none; | |
| color: var(--accent2); | |
| cursor: pointer; | |
| font-size: 0.75rem; | |
| font-weight: 600; | |
| padding: 0; | |
| } | |
| .health-drawer { | |
| position: fixed; | |
| top: 0; | |
| right: 0; | |
| width: min(420px, 90vw); | |
| height: 100vh; | |
| background: rgba(7, 16, 25, 0.98); | |
| border-left: 1px solid var(--line); | |
| box-shadow: -10px 0 40px rgba(0, 0, 0, 0.4); | |
| transform: translateX(100%); | |
| transition: transform var(--transition-medium); | |
| z-index: 100; | |
| display: flex; | |
| flex-direction: column; | |
| } | |
| .health-drawer.open { | |
| transform: translateX(0); | |
| } | |
| .health-drawer__header { | |
| display: flex; | |
| justify-content: space-between; | |
| align-items: center; | |
| padding: 18px 20px; | |
| border-bottom: 1px solid var(--line); | |
| } | |
| .health-drawer__header h3 { | |
| margin: 0; | |
| font-size: 1.1rem; | |
| } | |
| .health-drawer__close { | |
| background: none; | |
| border: none; | |
| color: var(--muted); | |
| font-size: 1.4rem; | |
| cursor: pointer; | |
| } | |
| .health-drawer__close:hover { | |
| color: var(--text); | |
| } | |
| .health-drawer__counts { | |
| display: flex; | |
| gap: 10px; | |
| padding: 14px 20px; | |
| border-bottom: 1px solid rgba(255, 255, 255, 0.04); | |
| } | |
| .health-count { | |
| min-width: 36px; | |
| text-align: center; | |
| padding: 6px 10px; | |
| border-radius: var(--radius-pill); | |
| font-size: 0.8rem; | |
| font-weight: 600; | |
| color: #fff; | |
| } | |
| .health-count--error { background: var(--color-danger); } | |
| .health-count--warning { background: var(--color-warning); } | |
| .health-count--stale { background: #c586c0; } | |
| .health-count--unavailable { background: #8899bb; } | |
| .health-drawer__section { | |
| padding: 16px 20px; | |
| border-bottom: 1px solid rgba(255, 255, 255, 0.04); | |
| overflow-y: auto; | |
| flex: 1; | |
| } | |
| .health-drawer__section h4 { | |
| margin: 0 0 10px 0; | |
| font-size: 0.85rem; | |
| color: var(--muted); | |
| text-transform: uppercase; | |
| letter-spacing: 0.08em; | |
| } | |
| .health-empty { | |
| color: var(--muted); | |
| font-style: italic; | |
| font-size: 0.85rem; | |
| padding: 8px 0; | |
| } | |
| .health-problem { | |
| padding: 10px 12px; | |
| border-radius: var(--radius-small); | |
| border: 1px solid var(--line); | |
| background: rgba(255, 255, 255, 0.02); | |
| margin-bottom: 8px; | |
| } | |
| .health-problem__component { | |
| font-weight: 600; | |
| font-size: 0.85rem; | |
| } | |
| .health-problem__status { | |
| display: inline-block; | |
| font-size: 0.7rem; | |
| padding: 2px 8px; | |
| border-radius: var(--radius-pill); | |
| margin: 4px 0; | |
| font-weight: 600; | |
| text-transform: uppercase; | |
| letter-spacing: 0.05em; | |
| } | |
| .health-problem__reason { | |
| font-size: 0.8rem; | |
| color: var(--muted); | |
| } | |
| .health-problem__error { | |
| font-size: 0.75rem; | |
| color: var(--danger); | |
| margin-top: 6px; | |
| font-family: var(--font-mono); | |
| } | |
| .health-problem--health-error .health-problem__status { background: rgba(220, 53, 69, 0.15); color: #f06070; } | |
| .health-problem--health-warning .health-problem__status { background: rgba(230, 170, 40, 0.15); color: #f0c040; } | |
| .health-problem--health-stale .health-problem__status { background: rgba(197, 134, 192, 0.15); color: #c586c0; } | |
| .health-problem--health-unavailable .health-problem__status { background: rgba(136, 153, 187, 0.15); color: #8899bb; } | |
| .health-component-list { | |
| display: grid; | |
| gap: 6px; | |
| } | |
| .health-runtime-list { | |
| display: grid; | |
| gap: 8px; | |
| } | |
| .health-component { | |
| display: flex; | |
| align-items: center; | |
| justify-content: space-between; | |
| padding: 8px 10px; | |
| border-radius: 6px; | |
| border: 1px solid var(--line); | |
| background: rgba(255, 255, 255, 0.02); | |
| font-size: 0.82rem; | |
| } | |
| .health-component__name { | |
| font-weight: 500; | |
| } | |
| .health-component__status { | |
| text-transform: uppercase; | |
| font-size: 0.7rem; | |
| font-weight: 600; | |
| padding: 2px 8px; | |
| border-radius: var(--radius-pill); | |
| } | |
| .health-component--health-ok .health-component__status { background: rgba(36, 180, 110, 0.12); color: #4ddb8a; } | |
| .health-component--health-error .health-component__status { background: rgba(220, 53, 69, 0.12); color: #f06070; } | |
| .health-component--health-warning .health-component__status { background: rgba(230, 170, 40, 0.12); color: #f0c040; } | |
| .health-component--health-stale .health-component__status { background: rgba(197, 134, 192, 0.12); color: #c586c0; } | |
| .health-component--health-unavailable .health-component__status { background: rgba(136, 153, 187, 0.12); color: #8899bb; } | |
| .health-component--health-disabled .health-component__status { background: rgba(85, 85, 85, 0.2); color: #888; } | |
| .fm-file-copy-btn.copied { | |
| background: rgba(74, 200, 100, 0.25); | |
| border-color: rgba(74, 200, 100, 0.4); | |
| color: #6f6; | |
| } | |
| /* ---- Dynamic Alpha.5 Release Gate (evidence-based) ---- */ | |
| .gate-legend { | |
| color: var(--muted); | |
| font-size: 0.82rem; | |
| margin: 0 0 12px 0; | |
| line-height: 1.5; | |
| } | |
| .gate-section { | |
| margin-top: 24px; | |
| } | |
| .gate-section h3 { | |
| font-size: 1rem; | |
| margin-bottom: 12px; | |
| border-bottom: 1px solid var(--line); | |
| padding-bottom: 6px; | |
| } | |
| .gate-section-hint { | |
| font-size: 0.78rem; | |
| color: var(--muted); | |
| font-weight: 400; | |
| } | |
| .gate-overall-grid { | |
| display: grid; | |
| grid-template-columns: repeat(3, minmax(0, 1fr)); | |
| gap: 10px; | |
| } | |
| .gate-overall-grid .gate-overall-row { | |
| display: flex; | |
| align-items: center; | |
| justify-content: space-between; | |
| gap: 10px; | |
| margin: 0; | |
| padding: 12px 14px; | |
| border: 1px solid var(--line); | |
| border-radius: var(--radius-card); | |
| background: rgba(255, 255, 255, .025); | |
| } | |
| .gate-section-live { margin-top: 18px; } | |
| .gate-sections-grid { | |
| display: grid; | |
| grid-template-columns: repeat(3, minmax(0, 1fr)); | |
| gap: 16px; | |
| align-items: start; | |
| } | |
| .gate-sections-grid .gate-section { | |
| min-width: 0; | |
| margin-top: 18px; | |
| } | |
| /* Live runtime profile grid */ | |
| .gate-live-grid { | |
| display: grid; | |
| grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); | |
| gap: 10px; | |
| } | |
| .gate-live-item { | |
| display: flex; | |
| align-items: flex-start; | |
| gap: 10px; | |
| padding: 10px 14px; | |
| border-radius: var(--radius-card); | |
| border: 1px solid var(--line); | |
| background: rgba(10, 25, 37, 0.6); | |
| } | |
| .gate-live-icon { | |
| font-size: 1.2rem; | |
| flex-shrink: 0; | |
| } | |
| .gate-live-label strong { | |
| display: block; | |
| font-size: 0.85rem; | |
| margin-bottom: 2px; | |
| } | |
| .gate-live-msg { | |
| font-size: 0.76rem; | |
| color: var(--muted); | |
| } | |
| .gate-live-item.live-active { | |
| border-color: rgba(80, 220, 120, 0.4); | |
| } | |
| .gate-live-item.live-disabled { | |
| opacity: 0.7; | |
| border-color: rgba(136, 153, 187, 0.3); | |
| } | |
| .gate-live-item.live-unavailable { | |
| opacity: 0.6; | |
| border-color: rgba(255, 200, 80, 0.2); | |
| } | |
| .gate-live-item.live-error { | |
| border-color: rgba(240, 96, 112, 0.4); | |
| } | |
| /* Criteria table (Gate A / B / C) */ | |
| .gate-criteria-table { | |
| border: 1px solid var(--line); | |
| border-radius: var(--radius-card); | |
| overflow: hidden; | |
| } | |
| .gate-row { | |
| display: grid; | |
| grid-template-columns: 1fr 60px 120px 140px; | |
| align-items: center; | |
| gap: 8px; | |
| padding: 10px 14px; | |
| border-bottom: 1px solid var(--line); | |
| font-size: 0.85rem; | |
| cursor: pointer; | |
| } | |
| .gate-row:focus-visible { | |
| outline: 2px solid var(--accent2); | |
| outline-offset: -2px; | |
| } | |
| .gate-row:last-child { | |
| border-bottom: none; | |
| } | |
| .gate-row-header { | |
| font-weight: 600; | |
| font-size: 0.78rem; | |
| color: var(--muted); | |
| text-transform: uppercase; | |
| background: rgba(255, 255, 255, 0.02); | |
| } | |
| .gate-col-criterion { | |
| display: flex; | |
| flex-direction: column; | |
| } | |
| .gate-col-criterion strong { | |
| font-size: 0.85rem; | |
| } | |
| .gate-col-msg { | |
| font-size: 0.74rem; | |
| color: var(--muted); | |
| margin-top: 2px; | |
| } | |
| .gate-col-live { | |
| text-align: center; | |
| font-size: 1rem; | |
| } | |
| .gate-col-maturity { | |
| text-align: center; | |
| font-size: 0.72rem; | |
| font-weight: 600; | |
| letter-spacing: 0.03em; | |
| } | |
| .gate-col-result { | |
| text-align: center; | |
| font-size: 0.8rem; | |
| font-weight: 600; | |
| } | |
| /* Maturity badge colors */ | |
| .maturity-IMPLEMENTED { color: #8899bb; } | |
| .maturity-INTEGRATED { color: #6cb4ff; } | |
| .maturity-VERIFIED { color: #50dc78; } | |
| .maturity-EVIDENCED { color: #c878ff; } | |
| /* Gate result row colors */ | |
| .gate-row-passed { | |
| background: rgba(80, 220, 120, 0.04); | |
| } | |
| .gate-row-pending { | |
| background: rgba(255, 200, 80, 0.03); | |
| } | |
| .gate-row-stale { | |
| background: rgba(255, 200, 120, 0.05); | |
| } | |
| .gate-row-failed { | |
| background: rgba(240, 96, 112, 0.05); | |
| } | |
| .gate-row-blocked { | |
| background: rgba(240, 96, 112, 0.05); | |
| } | |
| .gate-col-result.gate-passed { color: #50dc78; } | |
| .gate-col-result.gate-pending { color: #ffc850; } | |
| .gate-col-result.gate-stale { color: #ffc878; } | |
| .gate-detail-dialog { | |
| width: min(680px, calc(100% - 28px)); | |
| max-height: min(760px, calc(100vh - 28px)); | |
| padding: 0; | |
| border: 1px solid var(--line); | |
| border-radius: var(--radius-card); | |
| color: var(--text); | |
| background: var(--panel); | |
| box-shadow: 0 24px 80px rgba(0, 0, 0, .55); | |
| } | |
| .gate-detail-dialog::backdrop { background: rgba(0, 7, 13, .78); backdrop-filter: blur(4px); } | |
| .gate-detail-header { display: flex; justify-content: space-between; gap: 16px; padding: 18px 20px; border-bottom: 1px solid var(--line); } | |
| .gate-detail-header h2 { margin: 4px 0 0; font-size: 1.1rem; } | |
| .gate-detail-body { display: grid; gap: 14px; padding: 20px; overflow: auto; } | |
| .gate-detail-field { display: grid; gap: 4px; } | |
| .gate-detail-field strong { color: var(--muted); font-size: .72rem; text-transform: uppercase; letter-spacing: .04em; } | |
| .gate-detail-field p { margin: 0; overflow-wrap: anywhere; } | |
| .gate-detail-status { font-weight: 700; text-transform: uppercase; } | |
| .gate-detail-reason { padding: 10px 12px; border-left: 3px solid var(--accent2); background: rgba(255,255,255,.04); } | |
| .gate-detail-field pre { margin: 0; padding: 10px 12px; overflow: auto; border: 1px solid var(--line); background: rgba(0,0,0,.2); font-size: .75rem; white-space: pre-wrap; overflow-wrap: anywhere; } | |
| .gate-col-result.gate-failed { color: #f06070; } | |
| .gate-col-result.gate-blocked { color: #f06070; } | |
| .gate-col-live.live-active { color: #50dc78; } | |
| .gate-col-live.live-disabled { color: #8899bb; } | |
| .gate-col-live.live-unavailable { color: #ffc850; } | |
| .gate-col-live.live-error { color: #f06070; } | |
| .gate-col-live.live-na { color: var(--muted); } | |
| @media (max-width: 768px) { | |
| .research-browser { | |
| grid-template-columns: 1fr; | |
| } | |
| .research-sidebar { | |
| max-height: 300px; | |
| } | |
| .gate-grid { | |
| grid-template-columns: 1fr; | |
| } | |
| .gate-checklist { | |
| grid-template-columns: 1fr; | |
| } | |
| .gate-row { | |
| grid-template-columns: minmax(0, 1fr) 40px 90px 100px; | |
| font-size: 0.78rem; | |
| } | |
| .gate-overall-grid, | |
| .gate-sections-grid { grid-template-columns: 1fr; } | |
| .gate-live-grid { | |
| grid-template-columns: 1fr; | |
| } | |
| .gate-criteria-table { overflow-x: auto; } | |
| .gate-row { min-width: 470px; } | |
| } | |
| /* ============================================================================ | |
| MODAL (Popup) | |
| ============================================================================ */ | |
| .modal-overlay { | |
| position: fixed; | |
| top: 0; left: 0; right: 0; bottom: 0; | |
| background: rgba(0, 0, 0, 0.7); | |
| backdrop-filter: blur(6px); | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| z-index: 1000; | |
| animation: fadeIn 0.2s ease; | |
| } | |
| .modal-content { | |
| background: linear-gradient(145deg, rgba(16, 37, 54, 0.98), rgba(10, 25, 37, 0.98)); | |
| border: 1px solid var(--line); | |
| border-radius: var(--radius-card); | |
| box-shadow: 0 20px 60px rgba(0, 0, 0, 0.5); | |
| width: 90%; | |
| max-width: 800px; | |
| max-height: 80vh; | |
| display: flex; | |
| flex-direction: column; | |
| animation: slideUp 0.3s ease; | |
| } | |
| @keyframes slideUp { | |
| from { opacity: 0; transform: translateY(30px); } | |
| to { opacity: 1; transform: translateY(0); } | |
| } | |
| .modal-header { | |
| display: flex; | |
| justify-content: space-between; | |
| align-items: center; | |
| padding: 20px 24px 12px; | |
| border-bottom: 1px solid rgba(255, 255, 255, 0.06); | |
| } | |
| .modal-header h2 { | |
| margin: 0; | |
| font-size: 1.15rem; | |
| font-weight: 600; | |
| } | |
| .modal-close { | |
| background: none; | |
| border: none; | |
| color: var(--muted); | |
| font-size: 1.6rem; | |
| cursor: pointer; | |
| padding: 0 4px; | |
| line-height: 1; | |
| transition: color var(--transition-fast); | |
| } | |
| .modal-close:hover { | |
| color: var(--text); | |
| } | |
| .modal-body { | |
| padding: 16px 24px; | |
| overflow-y: auto; | |
| flex: 1; | |
| } | |
| .modal-loading { | |
| text-align: center; | |
| padding: 40px; | |
| color: var(--muted); | |
| font-style: italic; | |
| } | |
| .modal-footer { | |
| display: flex; | |
| gap: 10px; | |
| justify-content: flex-end; | |
| padding: 12px 24px 20px; | |
| border-top: 1px solid rgba(255, 255, 255, 0.04); | |
| } | |
| /* Integration version table in modal */ | |
| .int-version-section { | |
| margin-bottom: 20px; | |
| } | |
| .int-version-section h3 { | |
| font-size: 1rem; | |
| margin: 0 0 8px 0; | |
| color: var(--accent); | |
| border-bottom: 1px solid rgba(255, 255, 255, 0.06); | |
| padding-bottom: 6px; | |
| } | |
| .int-version-grid { | |
| display: grid; | |
| grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); | |
| gap: 8px; | |
| } | |
| .int-version-item { | |
| display: flex; | |
| align-items: center; | |
| gap: 8px; | |
| padding: 8px 12px; | |
| border-radius: var(--radius-small); | |
| border: 1px solid rgba(255, 255, 255, 0.06); | |
| font-size: 0.82rem; | |
| transition: all var(--transition-fast); | |
| } | |
| .int-version-item.int-passed { | |
| border-color: rgba(80, 220, 120, 0.4); | |
| background: rgba(80, 220, 120, 0.06); | |
| color: #50dc78; | |
| } | |
| .int-version-item.int-disabled { | |
| border-color: rgba(136, 153, 187, 0.3); | |
| background: rgba(136, 153, 187, 0.04); | |
| color: #8899bb; | |
| opacity: 0.7; | |
| } | |
| .int-version-item.int-unavailable { | |
| border-color: rgba(255, 200, 80, 0.3); | |
| background: rgba(255, 200, 80, 0.04); | |
| color: #ffc850; | |
| } | |
| .int-version-item.int-pending { | |
| border-color: rgba(255, 200, 80, 0.3); | |
| background: rgba(255, 200, 80, 0.04); | |
| color: #ffc850; | |
| } | |
| .int-version-item.int-failed { | |
| border-color: rgba(240, 96, 112, 0.4); | |
| background: rgba(240, 96, 112, 0.06); | |
| color: #f06070; | |
| } | |
| .int-version-item.int-unknown { | |
| border-color: rgba(255, 200, 80, 0.3); | |
| background: rgba(255, 200, 80, 0.04); | |
| color: #ffc850; | |
| } | |
| .int-version-icon { | |
| font-size: 1.1rem; | |
| flex-shrink: 0; | |
| } | |
| .int-version-label { | |
| flex: 1; | |
| } | |
| .int-version-detail { | |
| font-size: 0.7rem; | |
| opacity: 0.6; | |
| } | |
| .integration-item.clickable { | |
| cursor: pointer; | |
| } | |
| .integration-item.clickable:hover { | |
| transform: translateY(-2px); | |
| box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3); | |
| } | |
| /* ============================================================================ | |
| ACCESSIBILITY | |
| ============================================================================ */ | |
| *:focus-visible { | |
| outline: 2px solid var(--color-primary); | |
| outline-offset: 2px; | |
| border-radius: 4px; | |
| } | |
| /* Reduced motion */ | |
| @media (prefers-reduced-motion: reduce) { | |
| *, | |
| *::before, | |
| *::after { | |
| animation-duration: 0.01ms ; | |
| animation-iteration-count: 1 ; | |
| transition-duration: 0.01ms ; | |
| } | |
| .runtime-state[data-mode="running"]::before, | |
| .status-badge.status-running::before, | |
| .proposals-summary .badge.has-proposals::after { | |
| animation: none ; | |
| } | |
| .tab-content { | |
| animation: none ; | |
| } | |
| } | |
| /* High contrast */ | |
| @media (prefers-contrast: high) { | |
| .card, | |
| .control-card, | |
| .operator-console { | |
| border-color: rgba(255, 255, 255, 0.25); | |
| } | |
| .control-group, | |
| .proposal-item { | |
| border-color: rgba(255, 255, 255, 0.15); | |
| } | |
| .runtime-state, | |
| .status-badge { | |
| border: 1px solid currentColor; | |
| } | |
| .btn-approve, | |
| .btn-reject { | |
| border: 1px solid currentColor; | |
| } | |
| .tab-btn.active { | |
| border: 1px solid var(--color-primary); | |
| } | |
| } | |
| /* ============================================================================ | |
| STRUCTURAL LIVE LOOP CARD | |
| ============================================================================ */ | |
| .structural-live-card { | |
| padding: 18px; | |
| margin-top: 14px; | |
| } | |
| .structural-live-grid { | |
| display: flex; | |
| flex-direction: column; | |
| align-items: stretch; | |
| gap: 4px; | |
| margin-top: 12px; | |
| max-width: 320px; | |
| } | |
| .live-loop-step { | |
| position: relative; | |
| display: flex; | |
| flex-direction: row; | |
| justify-content: space-between; | |
| align-items: center; | |
| padding: 8px 12px; | |
| border-radius: 8px; | |
| border: 1px solid var(--line); | |
| background: rgba(255, 255, 255, 0.02); | |
| font-size: 0.85rem; | |
| text-align: left; | |
| transition: all var(--transition-medium); | |
| } | |
| .live-loop-step .live-loop-label { | |
| font-weight: 500; | |
| color: var(--text-secondary); | |
| } | |
| .live-loop-step .live-loop-status { | |
| font-size: 0.8rem; | |
| color: var(--text-muted); | |
| white-space: nowrap; | |
| } | |
| .live-loop-step::after { | |
| content: '↓'; | |
| position: absolute; | |
| left: 50%; | |
| bottom: -12px; | |
| transform: translateX(-50%); | |
| color: var(--text-muted); | |
| font-size: 0.85rem; | |
| z-index: 1; | |
| } | |
| .live-loop-step:last-child::after { | |
| content: none; | |
| } | |
| .live-loop-step.ll-passed { | |
| border-color: rgba(80, 220, 120, 0.5); | |
| background: rgba(80, 220, 120, 0.08); | |
| color: #50dc78; | |
| } | |
| .live-loop-step.ll-passed .live-loop-status { | |
| color: #50dc78; | |
| } | |
| .live-loop-step.ll-pending { | |
| border-color: rgba(255, 200, 80, 0.3); | |
| background: rgba(255, 200, 80, 0.05); | |
| color: #ffc850; | |
| } | |
| .live-loop-step.ll-pending .live-loop-status { | |
| color: #ffc850; | |
| } | |
| .live-loop-step.ll-stale { | |
| border-color: rgba(100, 180, 255, 0.4); | |
| background: rgba(100, 180, 255, 0.06); | |
| color: #64b4ff; | |
| } | |
| .live-loop-step.ll-stale .live-loop-status { | |
| color: #64b4ff; | |
| } | |
| /* ============================================================================ | |
| ERROR VISIBILITY CARD | |
| ============================================================================ */ | |
| .error-visibility-card { | |
| padding: 18px; | |
| margin-top: 14px; | |
| } | |
| .error-list { | |
| margin-top: 10px; | |
| max-height: 200px; | |
| overflow-y: auto; | |
| } | |
| .error-empty { | |
| padding: 12px; | |
| color: var(--muted); | |
| font-size: 0.85rem; | |
| text-align: center; | |
| } | |
| .error-item { | |
| display: flex; | |
| gap: 10px; | |
| align-items: center; | |
| padding: 6px 10px; | |
| border-radius: 6px; | |
| margin-bottom: 4px; | |
| font-size: 0.8rem; | |
| font-family: var(--font-mono); | |
| border-left: 3px solid var(--color-warning); | |
| background: rgba(255, 200, 80, 0.05); | |
| } | |
| .error-item.error-fatal { | |
| border-left-color: var(--color-danger); | |
| background: rgba(220, 53, 69, 0.08); | |
| } | |
| .error-tick { | |
| color: var(--accent2); | |
| min-width: 60px; | |
| } | |
| .error-phase { | |
| color: var(--color-info); | |
| min-width: 80px; | |
| } | |
| .error-type { | |
| color: var(--color-warning); | |
| min-width: 120px; | |
| overflow: hidden; | |
| text-overflow: ellipsis; | |
| } | |
| .error-msg { | |
| color: var(--text); | |
| flex: 1; | |
| overflow: hidden; | |
| text-overflow: ellipsis; | |
| white-space: nowrap; | |
| } | |
| .error-hash { | |
| color: var(--muted); | |
| font-size: 0.7rem; | |
| } | |
| /* ============================================================================ | |
| PRINT STYLES | |
| ============================================================================ */ | |
| @media print { | |
| body { | |
| background: white ; | |
| color: black ; | |
| } | |
| .card, | |
| .control-card, | |
| .operator-console { | |
| background: white ; | |
| color: black ; | |
| border: 1px solid #ccc ; | |
| box-shadow: none ; | |
| } | |
| .tab-nav { | |
| display: none ; | |
| } | |
| .tab-content { | |
| display: block ; | |
| } | |
| .control-group button, | |
| .operator-console button { | |
| background: #eee ; | |
| color: black ; | |
| } | |
| .console-output { | |
| max-height: none ; | |
| background: #f5f5f5 ; | |
| color: black ; | |
| } | |
| } | |
| /* ============================================================================ | |
| BIBTEX VIEWER | |
| ============================================================================ */ | |
| .bibtex-viewer { | |
| font-family: var(--font-family); | |
| } | |
| .bibtex-toolbar { | |
| display: flex; | |
| justify-content: space-between; | |
| align-items: center; | |
| flex-wrap: wrap; | |
| gap: 10px; | |
| padding: 8px 0 12px; | |
| border-bottom: 1px solid var(--line); | |
| margin-bottom: 10px; | |
| } | |
| .bibtex-toolbar-left { | |
| display: flex; | |
| align-items: center; | |
| gap: 12px; | |
| flex-wrap: wrap; | |
| } | |
| .bibtex-toolbar-right { | |
| display: flex; | |
| align-items: center; | |
| gap: 6px; | |
| flex-wrap: wrap; | |
| } | |
| .bibtex-title { | |
| font-weight: 600; | |
| font-size: 0.95rem; | |
| color: var(--text); | |
| } | |
| .bibtex-count { | |
| font-size: 0.82rem; | |
| color: var(--muted); | |
| background: rgba(255, 255, 255, 0.05); | |
| padding: 2px 10px; | |
| border-radius: 12px; | |
| } | |
| .bibtex-warning { | |
| font-size: 0.78rem; | |
| color: var(--color-warning); | |
| background: rgba(230, 170, 40, 0.12); | |
| padding: 2px 10px; | |
| border-radius: 12px; | |
| } | |
| .bibtex-ok { | |
| font-size: 0.78rem; | |
| color: var(--color-success); | |
| background: rgba(36, 180, 110, 0.12); | |
| padding: 2px 10px; | |
| border-radius: 12px; | |
| } | |
| .bibtex-view-btn { | |
| padding: 4px 10px; | |
| border: 1px solid rgba(255, 255, 255, 0.08); | |
| border-radius: 6px; | |
| background: transparent; | |
| color: var(--muted); | |
| cursor: pointer; | |
| font-family: var(--font-family); | |
| font-size: 0.75rem; | |
| transition: all var(--transition-fast); | |
| } | |
| .bibtex-view-btn:hover { | |
| border-color: rgba(74, 124, 247, 0.3); | |
| color: var(--text); | |
| background: rgba(74, 124, 247, 0.06); | |
| } | |
| .bibtex-view-btn.active { | |
| background: rgba(74, 124, 247, 0.2); | |
| border-color: var(--color-primary); | |
| color: #7aabff; | |
| font-weight: 500; | |
| } | |
| .bibtex-copy-all-btn, | |
| .bibtex-export-btn { | |
| padding: 4px 10px; | |
| border: 1px solid rgba(255, 255, 255, 0.08); | |
| border-radius: 6px; | |
| background: rgba(74, 124, 247, 0.1); | |
| color: var(--muted); | |
| cursor: pointer; | |
| font-family: var(--font-family); | |
| font-size: 0.75rem; | |
| transition: all var(--transition-fast); | |
| } | |
| .bibtex-copy-all-btn:hover, | |
| .bibtex-export-btn:hover { | |
| background: rgba(74, 124, 247, 0.25); | |
| color: #fff; | |
| border-color: rgba(74, 124, 247, 0.3); | |
| } | |
| /* Validation bar */ | |
| .bibtex-validation-bar { | |
| margin-bottom: 10px; | |
| } | |
| .bibtex-validation-msg { | |
| font-size: 0.78rem; | |
| padding: 4px 12px; | |
| border-radius: 6px; | |
| display: inline-block; | |
| } | |
| .bibtex-validation-msg.ok { | |
| color: var(--color-success); | |
| background: rgba(36, 180, 110, 0.08); | |
| } | |
| .bibtex-validation-msg.warning { | |
| color: var(--color-warning); | |
| background: rgba(230, 170, 40, 0.08); | |
| } | |
| .bibtex-show-issues { | |
| color: #7aabff; | |
| text-decoration: none; | |
| border-bottom: 1px dashed rgba(122, 171, 255, 0.3); | |
| } | |
| .bibtex-show-issues:hover { | |
| border-bottom-color: #7aabff; | |
| } | |
| /* Table */ | |
| .bibtex-table-container { | |
| overflow-x: auto; | |
| margin-bottom: 12px; | |
| border: 1px solid var(--line); | |
| border-radius: 8px; | |
| } | |
| .bibtex-table { | |
| width: 100%; | |
| border-collapse: separate; | |
| border-spacing: 0; | |
| font-size: 0.85rem; | |
| line-height: 1.5; | |
| } | |
| .bibtex-table thead th { | |
| background: rgba(74, 124, 247, 0.12); | |
| color: #7aabff; | |
| padding: 10px 12px; | |
| text-align: left; | |
| font-weight: 600; | |
| border-bottom: 1px solid var(--line); | |
| white-space: nowrap; | |
| user-select: none; | |
| position: sticky; | |
| top: 0; | |
| z-index: 1; | |
| } | |
| .bibtex-sortable { | |
| cursor: pointer; | |
| transition: background var(--transition-fast); | |
| } | |
| .bibtex-sortable:hover { | |
| background: rgba(74, 124, 247, 0.2); | |
| } | |
| .bibtex-sort-icon { | |
| font-size: 0.7rem; | |
| color: #555; | |
| margin-left: 4px; | |
| } | |
| .bibtex-table tbody td { | |
| padding: 10px 12px; | |
| border-bottom: 1px solid var(--line); | |
| color: var(--text); | |
| vertical-align: top; | |
| } | |
| .bibtex-table tbody tr:last-child td { | |
| border-bottom: none; | |
| } | |
| .bibtex-table tbody tr { | |
| transition: background var(--transition-fast); | |
| } | |
| .bibtex-table tbody tr:hover { | |
| background: rgba(74, 124, 247, 0.05); | |
| } | |
| .bibtex-table tbody tr:nth-child(even) { | |
| background: rgba(255, 255, 255, 0.02); | |
| } | |
| .bibtex-table tbody tr:nth-child(even):hover { | |
| background: rgba(74, 124, 247, 0.07); | |
| } | |
| .bibtex-row-warn { | |
| border-left: 3px solid var(--color-warning) ; | |
| } | |
| .bibtex-cell-key code { | |
| font-family: var(--font-mono); | |
| font-size: 0.78rem; | |
| color: #ce9178; | |
| } | |
| .bibtex-cell-author { | |
| max-width: 220px; | |
| overflow: hidden; | |
| text-overflow: ellipsis; | |
| white-space: nowrap; | |
| } | |
| .bibtex-cell-title { | |
| max-width: 320px; | |
| overflow: hidden; | |
| text-overflow: ellipsis; | |
| display: -webkit-box; | |
| -webkit-line-clamp: 2; | |
| -webkit-box-orient: vertical; | |
| white-space: normal; | |
| line-height: 1.4; | |
| line-clamp: 2; | |
| } | |
| .bibtex-cell-year { | |
| text-align: center; | |
| font-family: var(--font-mono); | |
| color: #b5cea8; | |
| white-space: nowrap; | |
| } | |
| .bibtex-cell-status { | |
| text-align: center; | |
| } | |
| .bibtex-type-badge { | |
| display: inline-block; | |
| padding: 1px 8px; | |
| border-radius: 4px; | |
| font-size: 0.7rem; | |
| font-weight: 500; | |
| background: rgba(74, 124, 247, 0.12); | |
| color: #7aabff; | |
| text-transform: uppercase; | |
| letter-spacing: 0.3px; | |
| } | |
| .bibtex-status-ok { | |
| font-size: 0.85rem; | |
| cursor: default; | |
| } | |
| .bibtex-status-warn { | |
| font-size: 0.85rem; | |
| cursor: help; | |
| } | |
| /* Action buttons in table */ | |
| .bibtex-cell-actions { | |
| white-space: nowrap; | |
| } | |
| .bibtex-action-btn { | |
| padding: 2px 7px; | |
| border: 1px solid rgba(255, 255, 255, 0.06); | |
| border-radius: 4px; | |
| background: rgba(255, 255, 255, 0.03); | |
| color: var(--muted); | |
| cursor: pointer; | |
| font-family: var(--font-family); | |
| font-size: 0.68rem; | |
| transition: all var(--transition-fast); | |
| margin: 0 1px; | |
| } | |
| .bibtex-action-btn:hover { | |
| background: rgba(74, 124, 247, 0.2); | |
| color: #fff; | |
| border-color: rgba(74, 124, 247, 0.3); | |
| } | |
| /* Code view */ | |
| .bibtex-code-container { | |
| margin-bottom: 12px; | |
| } | |
| .bibtex-code { | |
| background: rgba(0, 0, 0, 0.35); | |
| padding: 16px; | |
| border-radius: var(--radius-small); | |
| overflow-x: auto; | |
| font-family: var(--font-mono); | |
| font-size: 0.78rem; | |
| line-height: 1.5; | |
| white-space: pre-wrap; | |
| word-wrap: break-word; | |
| border: 1px solid rgba(255, 255, 255, 0.04); | |
| margin: 0; | |
| color: var(--text); | |
| max-height: 500px; | |
| overflow-y: auto; | |
| } | |
| /* Footer stats */ | |
| .bibtex-footer { | |
| border-top: 1px solid var(--line); | |
| padding-top: 10px; | |
| margin-top: 4px; | |
| } | |
| .bibtex-footer-stats { | |
| display: flex; | |
| gap: 16px; | |
| flex-wrap: wrap; | |
| font-size: 0.78rem; | |
| color: var(--muted); | |
| } | |
| .bibtex-footer-stats strong { | |
| color: var(--text); | |
| } | |
| .runtime-state.status-running::before { | |
| animation: none ; | |
| } | |
| /* ============================================================================ | |
| SOURCE BADGE (LIVE vs SNAPSHOT) | |
| ============================================================================ */ | |
| .badge { | |
| display: inline-block; | |
| padding: 2px 8px; | |
| border-radius: 10px; | |
| font-size: 0.7rem; | |
| font-weight: 700; | |
| letter-spacing: 0.5px; | |
| text-transform: uppercase; | |
| } | |
| .badge-live { | |
| background: rgba(64, 224, 168, 0.2); | |
| color: #40e0a8; | |
| border: 1px solid rgba(64, 224, 168, 0.3); | |
| } | |
| .badge-snapshot { | |
| background: rgba(255, 200, 80, 0.15); | |
| color: #ffc850; | |
| border: 1px solid rgba(255, 200, 80, 0.25); | |
| } | |
| .badge-stale { | |
| background: rgba(255, 160, 60, 0.2); | |
| color: #ffa03c; | |
| border: 1px solid rgba(255, 160, 60, 0.3); | |
| } | |
| .badge-unavailable { | |
| background: rgba(240, 96, 112, 0.15); | |
| color: #f06070; | |
| border: 1px solid rgba(240, 96, 112, 0.25); | |
| } | |
| /* ============================================================================ | |
| PROVENANCE BADGE | |
| ============================================================================ */ | |
| .provenance-badge { | |
| display: inline-block; | |
| padding: 1px 6px; | |
| border-radius: 8px; | |
| font-size: 0.6rem; | |
| font-weight: 600; | |
| letter-spacing: 0.3px; | |
| vertical-align: middle; | |
| margin-left: 4px; | |
| } | |
| /* ============================================================================ | |
| EXPERIMENT MODE (Operator Workbench) | |
| ============================================================================ */ | |
| .experiment-mode-switcher { | |
| display: flex; | |
| align-items: center; | |
| gap: 2px; | |
| padding: 2px; | |
| border: 1px solid var(--line); | |
| border-radius: var(--radius-pill); | |
| background: rgba(10, 25, 37, 0.6); | |
| margin-right: 8px; | |
| } | |
| .mode-btn { | |
| background: transparent; | |
| border: none; | |
| color: var(--muted); | |
| cursor: pointer; | |
| font-size: 0.9rem; | |
| padding: 4px 8px; | |
| border-radius: var(--radius-pill); | |
| transition: all var(--transition-fast); | |
| line-height: 1; | |
| } | |
| /* ============================================================================ | |
| FILE VIEWER EXTRAS (history, fullscreen, search) | |
| ============================================================================ */ | |
| .fm-fullscreen .fm-file-viewer { | |
| position: fixed; | |
| top: 0; | |
| left: 0; | |
| width: 100vw; | |
| height: 100vh; | |
| z-index: 1000; | |
| border-radius: 0; | |
| margin: 0; | |
| display: flex; | |
| flex-direction: column; | |
| } | |
| .fm-fullscreen .fm-content { | |
| flex: 1; | |
| overflow: auto; | |
| } | |
| .fm-history-panel { | |
| border-top: 1px solid var(--line); | |
| background: var(--panel); | |
| padding: 0.75rem 1rem; | |
| max-height: 220px; | |
| overflow-y: auto; | |
| } | |
| .fm-history-loading, | |
| .fm-history-empty { | |
| color: var(--muted); | |
| font-size: 0.9rem; | |
| padding: 0.5rem 0; | |
| } | |
| .fm-history-item { | |
| padding: 0.5rem 0; | |
| border-bottom: 1px solid var(--line); | |
| } | |
| .fm-history-item:last-child { | |
| border-bottom: none; | |
| } | |
| .fm-history-meta { | |
| display: flex; | |
| gap: 0.75rem; | |
| align-items: center; | |
| flex-wrap: wrap; | |
| font-size: 0.8rem; | |
| margin-bottom: 0.25rem; | |
| } | |
| .fm-history-hash { | |
| background: var(--bg); | |
| padding: 0.1rem 0.35rem; | |
| border-radius: 4px; | |
| font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; | |
| } | |
| .fm-history-date { | |
| color: var(--muted); | |
| } | |
| .fm-history-author { | |
| font-weight: 600; | |
| } | |
| .fm-history-message { | |
| font-size: 0.9rem; | |
| color: var(--text); | |
| } | |
| /* Metadata / annotation sidecar panel */ | |
| .fm-meta-panel { | |
| border-top: 1px solid var(--line); | |
| background: var(--panel); | |
| padding: 0.75rem 1rem; | |
| display: flex; | |
| flex-direction: column; | |
| gap: 0.5rem; | |
| max-height: 280px; | |
| min-height: 180px; | |
| } | |
| .fm-meta-header { | |
| display: flex; | |
| align-items: center; | |
| gap: 0.75rem; | |
| flex-wrap: wrap; | |
| } | |
| .fm-meta-title { | |
| font-weight: 600; | |
| color: var(--text); | |
| } | |
| .fm-meta-path { | |
| color: var(--muted); | |
| font-size: 0.8rem; | |
| font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; | |
| } | |
| .fm-meta-save-btn { | |
| margin-left: auto; | |
| background: var(--color-primary); | |
| color: #fff; | |
| border: none; | |
| border-radius: var(--radius-small); | |
| padding: 0.35rem 0.75rem; | |
| cursor: pointer; | |
| font-size: 0.9rem; | |
| } | |
| .fm-meta-save-btn:hover:not(:disabled) { | |
| background: var(--color-primary-hover); | |
| } | |
| .fm-meta-save-btn:disabled { | |
| opacity: 0.6; | |
| cursor: wait; | |
| } | |
| .fm-meta-textarea { | |
| flex: 1; | |
| min-height: 100px; | |
| background: var(--bg); | |
| color: var(--text); | |
| border: 1px solid var(--line); | |
| border-radius: var(--radius-small); | |
| padding: 0.5rem; | |
| font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; | |
| font-size: 0.85rem; | |
| resize: vertical; | |
| } | |
| .fm-meta-textarea:focus { | |
| outline: none; | |
| border-color: var(--color-primary); | |
| box-shadow: var(--shadow-focus); | |
| } | |
| .fm-meta-status { | |
| font-size: 0.8rem; | |
| color: var(--muted); | |
| min-height: 1.2rem; | |
| } | |
| .fm-meta-status.fm-meta-error { | |
| color: var(--danger); | |
| } | |
| .fm-meta-loading, | |
| .fm-meta-empty { | |
| color: var(--muted); | |
| font-size: 0.9rem; | |
| padding: 0.5rem 0; | |
| } | |
| /* Document analysis panel */ | |
| .fm-analyze-panel { | |
| border-top: 1px solid var(--line); | |
| background: var(--panel); | |
| padding: 0.75rem 1rem; | |
| display: flex; | |
| flex-direction: column; | |
| gap: 0.75rem; | |
| max-height: 320px; | |
| overflow-y: auto; | |
| } | |
| .fm-analyze-header { | |
| display: flex; | |
| align-items: center; | |
| gap: 1rem; | |
| flex-wrap: wrap; | |
| } | |
| .fm-analyze-title { | |
| font-weight: 600; | |
| color: var(--text); | |
| } | |
| .fm-analyze-lang { | |
| color: var(--muted); | |
| font-size: 0.85rem; | |
| } | |
| .fm-analyze-grid { | |
| display: grid; | |
| grid-template-columns: repeat(auto-fit, minmax(90px, 1fr)); | |
| gap: 0.5rem; | |
| } | |
| .fm-analyze-stat { | |
| background: var(--bg); | |
| border: 1px solid var(--line); | |
| border-radius: var(--radius-small); | |
| padding: 0.5rem; | |
| text-align: center; | |
| font-size: 0.85rem; | |
| color: var(--muted); | |
| } | |
| .fm-analyze-stat strong { | |
| display: block; | |
| font-size: 1.1rem; | |
| color: var(--text); | |
| } | |
| .fm-analyze-row { | |
| display: flex; | |
| gap: 1rem; | |
| flex-wrap: wrap; | |
| } | |
| .fm-analyze-block { | |
| flex: 1; | |
| min-width: 200px; | |
| } | |
| .fm-analyze-block h4 { | |
| margin: 0 0 0.35rem; | |
| font-size: 0.85rem; | |
| color: var(--accent); | |
| } | |
| .fm-analyze-keywords { | |
| display: flex; | |
| flex-wrap: wrap; | |
| gap: 0.35rem; | |
| } | |
| .fm-analyze-keyword { | |
| background: var(--bg); | |
| border: 1px solid var(--line); | |
| border-radius: var(--radius-pill); | |
| padding: 0.15rem 0.5rem; | |
| font-size: 0.8rem; | |
| color: var(--text); | |
| } | |
| .fm-analyze-readability { | |
| font-size: 0.9rem; | |
| color: var(--text); | |
| } | |
| .fm-analyze-sentiment { | |
| display: inline-block; | |
| padding: 0.2rem 0.6rem; | |
| border-radius: var(--radius-pill); | |
| font-size: 0.85rem; | |
| font-weight: 600; | |
| } | |
| .fm-analyze-sentiment-positive { | |
| background: rgba(36, 180, 110, 0.2); | |
| color: var(--color-success); | |
| } | |
| .fm-analyze-sentiment-negative { | |
| background: rgba(255, 93, 115, 0.2); | |
| color: var(--danger); | |
| } | |
| .fm-analyze-sentiment-neutral { | |
| background: rgba(142, 178, 193, 0.2); | |
| color: var(--muted); | |
| } | |
| .fm-analyze-summary { | |
| font-size: 0.9rem; | |
| color: var(--text); | |
| line-height: 1.5; | |
| margin: 0; | |
| } | |
| .fm-analyze-loading, | |
| .fm-analyze-empty { | |
| color: var(--muted); | |
| font-size: 0.9rem; | |
| padding: 0.5rem 0; | |
| } | |
| /* Research registry card renderer */ | |
| .fm-registry-grid { | |
| display: grid; | |
| grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); | |
| gap: 1rem; | |
| padding: 0.5rem 0; | |
| } | |
| .fm-registry-card { | |
| background: var(--bg); | |
| border: 1px solid var(--line); | |
| border-radius: var(--radius-medium); | |
| padding: 1rem; | |
| display: flex; | |
| flex-direction: column; | |
| gap: 0.5rem; | |
| } | |
| .fm-registry-card-header { | |
| display: flex; | |
| justify-content: space-between; | |
| align-items: center; | |
| gap: 0.5rem; | |
| } | |
| .fm-registry-id { | |
| background: var(--panel); | |
| padding: 0.15rem 0.4rem; | |
| border-radius: 4px; | |
| font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; | |
| font-size: 0.85rem; | |
| color: var(--accent); | |
| } | |
| .fm-registry-badge { | |
| padding: 0.15rem 0.5rem; | |
| border-radius: var(--radius-pill); | |
| font-size: 0.75rem; | |
| font-weight: 600; | |
| text-transform: uppercase; | |
| letter-spacing: 0.3px; | |
| } | |
| .fm-registry-badge-open { | |
| background: rgba(230, 170, 40, 0.2); | |
| color: var(--color-warning); | |
| } | |
| .fm-registry-badge-answered, | |
| .fm-registry-badge-confirmed, | |
| .fm-registry-badge-done, | |
| .fm-registry-badge-active { | |
| background: rgba(36, 180, 110, 0.2); | |
| color: var(--color-success); | |
| } | |
| .fm-registry-badge-rejected, | |
| .fm-registry-badge-failed, | |
| .fm-registry-badge-closed { | |
| background: rgba(255, 93, 115, 0.2); | |
| color: var(--danger); | |
| } | |
| .fm-registry-badge-candidate, | |
| .fm-registry-badge-draft, | |
| .fm-registry-badge-unknown { | |
| background: rgba(142, 178, 193, 0.2); | |
| color: var(--muted); | |
| } | |
| .fm-registry-type { | |
| font-size: 0.75rem; | |
| text-transform: uppercase; | |
| letter-spacing: 0.5px; | |
| color: var(--accent2); | |
| font-weight: 600; | |
| } | |
| .fm-registry-title { | |
| font-size: 1rem; | |
| font-weight: 600; | |
| color: var(--text); | |
| line-height: 1.4; | |
| } | |
| .fm-registry-domain { | |
| font-size: 0.8rem; | |
| color: var(--muted); | |
| } | |
| .fm-registry-relevance { | |
| font-size: 0.85rem; | |
| color: var(--text); | |
| line-height: 1.5; | |
| margin-top: 0.25rem; | |
| } | |
| .fm-registry-links { | |
| display: flex; | |
| flex-wrap: wrap; | |
| gap: 0.35rem; | |
| align-items: center; | |
| font-size: 0.8rem; | |
| } | |
| .fm-registry-link-label { | |
| color: var(--muted); | |
| margin-right: 0.25rem; | |
| } | |
| .fm-registry-link { | |
| background: var(--panel); | |
| padding: 0.1rem 0.35rem; | |
| border-radius: 4px; | |
| font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; | |
| font-size: 0.75rem; | |
| color: var(--accent); | |
| } | |
| .fm-registry-confidence { | |
| font-size: 0.8rem; | |
| color: var(--muted); | |
| } | |
| .fm-registry-dates { | |
| font-size: 0.75rem; | |
| color: var(--muted); | |
| margin-top: auto; | |
| padding-top: 0.25rem; | |
| } | |
| .mode-btn:hover { | |
| background: rgba(255, 255, 255, 0.05); | |
| color: var(--text); | |
| } | |
| .mode-btn.active { | |
| background: rgba(74, 124, 247, 0.25); | |
| color: #fff; | |
| } | |
| .experiment-panel { | |
| padding: 18px; | |
| margin-top: 14px; | |
| } | |
| .experiment-badge { | |
| display: inline-block; | |
| padding: 2px 10px; | |
| border-radius: var(--radius-pill); | |
| font-size: 0.75rem; | |
| font-weight: 600; | |
| text-transform: uppercase; | |
| letter-spacing: 0.05em; | |
| } | |
| .experiment-badge.mode-operator { | |
| background: rgba(74, 124, 247, 0.15); | |
| color: #7aabff; | |
| } | |
| .experiment-badge.mode-experiment { | |
| background: rgba(100, 180, 255, 0.15); | |
| color: #64b4ff; | |
| } | |
| .experiment-badge.mode-debug { | |
| background: rgba(197, 134, 192, 0.15); | |
| color: #c586c0; | |
| } | |
| .experiment-form { | |
| display: grid; | |
| grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); | |
| gap: 12px; | |
| margin-top: 12px; | |
| } | |
| .experiment-form input[type="text"] { | |
| width: 100%; | |
| padding: 6px 10px; | |
| border: 1px solid rgba(255, 255, 255, 0.08); | |
| border-radius: var(--radius-small); | |
| background: rgba(0, 0, 0, 0.2); | |
| color: var(--text); | |
| font-family: var(--font-family); | |
| font-size: 0.85rem; | |
| } | |
| .experiment-form input[type="text"]:focus { | |
| outline: none; | |
| border-color: var(--color-primary); | |
| box-shadow: var(--shadow-focus); | |
| } | |
| .experiment-actions { | |
| display: flex; | |
| align-items: flex-end; | |
| gap: 8px; | |
| } | |
| .experiment-note-row { | |
| display: flex; | |
| gap: 8px; | |
| margin-top: 12px; | |
| align-items: flex-end; | |
| } | |
| .experiment-note-row .input-label { | |
| flex: 1; | |
| } | |
| .experiment-note-row input[type="text"] { | |
| width: 100%; | |
| padding: 6px 10px; | |
| border: 1px solid rgba(255, 255, 255, 0.08); | |
| border-radius: var(--radius-small); | |
| background: rgba(0, 0, 0, 0.2); | |
| color: var(--text); | |
| font-family: var(--font-family); | |
| font-size: 0.85rem; | |
| } | |
| .experiment-sessions { | |
| margin-top: 14px; | |
| border: 1px solid var(--line); | |
| border-radius: var(--radius-small); | |
| padding: 12px 16px; | |
| } | |
| .experiment-sessions summary { | |
| cursor: pointer; | |
| font-weight: 600; | |
| } | |
| .experiment-sessions summary h3 { | |
| display: inline; | |
| margin: 0; | |
| font-size: 0.95rem; | |
| } | |
| .experiment-session-list { | |
| margin-top: 10px; | |
| display: flex; | |
| flex-direction: column; | |
| gap: 8px; | |
| max-height: 280px; | |
| overflow-y: auto; | |
| } | |
| .experiment-empty { | |
| padding: 8px 0; | |
| color: var(--muted); | |
| font-size: 0.85rem; | |
| font-style: italic; | |
| } | |
| .experiment-session-item { | |
| padding: 10px 12px; | |
| border-radius: var(--radius-small); | |
| border: 1px solid var(--line); | |
| background: rgba(255, 255, 255, 0.02); | |
| font-size: 0.82rem; | |
| } | |
| .experiment-session-item.active { | |
| border-left: 3px solid var(--color-success); | |
| } | |
| .experiment-session-item.closed { | |
| border-left: 3px solid var(--muted); | |
| opacity: 0.85; | |
| } | |
| .experiment-session-header { | |
| display: flex; | |
| align-items: center; | |
| gap: 8px; | |
| margin-bottom: 4px; | |
| } | |
| .experiment-session-mode { | |
| text-transform: uppercase; | |
| font-size: 0.65rem; | |
| font-weight: 600; | |
| padding: 2px 8px; | |
| border-radius: var(--radius-pill); | |
| } | |
| .experiment-session-mode.mode-operator { | |
| background: rgba(74, 124, 247, 0.12); | |
| color: #7aabff; | |
| } | |
| .experiment-session-mode.mode-experiment { | |
| background: rgba(100, 180, 255, 0.12); | |
| color: #64b4ff; | |
| } | |
| .experiment-session-mode.mode-debug { | |
| background: rgba(197, 134, 192, 0.12); | |
| color: #c586c0; | |
| } | |
| .experiment-session-id { | |
| font-family: var(--font-mono); | |
| font-weight: 600; | |
| font-size: 0.78rem; | |
| } | |
| .experiment-session-status { | |
| margin-left: auto; | |
| font-size: 0.7rem; | |
| text-transform: uppercase; | |
| color: var(--muted); | |
| } | |
| .experiment-session-hypothesis { | |
| color: var(--muted); | |
| margin-bottom: 6px; | |
| } | |
| .experiment-session-meta { | |
| display: flex; | |
| gap: 12px; | |
| flex-wrap: wrap; | |
| font-size: 0.75rem; | |
| color: var(--muted); | |
| } | |
| .experiment-session-notes { | |
| margin: 8px 0 0 0; | |
| padding-left: 18px; | |
| font-size: 0.78rem; | |
| color: var(--text); | |
| } | |
| .experiment-session-notes li { | |
| margin: 2px 0; | |
| } | |
| /* ============================================================================ | |
| PARAMETER INSPECTOR (Operator Workbench) | |
| ============================================================================ */ | |
| .parameter-inspector-card { | |
| padding: 18px; | |
| margin-top: 14px; | |
| } | |
| .parameter-inspector__toolbar { | |
| display: flex; | |
| align-items: center; | |
| gap: 10px; | |
| flex-wrap: wrap; | |
| } | |
| .parameter-inspector__toolbar input[type="search"] { | |
| padding: 6px 10px; | |
| border: 1px solid rgba(255, 255, 255, 0.08); | |
| border-radius: var(--radius-small); | |
| background: rgba(0, 0, 0, 0.2); | |
| color: var(--text); | |
| font-family: var(--font-family); | |
| font-size: 0.85rem; | |
| min-width: 220px; | |
| } | |
| .parameter-inspector__toolbar input[type="search"]:focus { | |
| outline: none; | |
| border-color: var(--color-primary); | |
| box-shadow: var(--shadow-focus); | |
| } | |
| .parameter-table-wrap { | |
| margin-top: 14px; | |
| border: 1px solid var(--line); | |
| border-radius: var(--radius-small); | |
| overflow-x: auto; | |
| max-height: 420px; | |
| overflow-y: auto; | |
| } | |
| .parameter-table { | |
| width: 100%; | |
| border-collapse: collapse; | |
| font-size: 0.82rem; | |
| } | |
| .parameter-table thead th { | |
| position: sticky; | |
| top: 0; | |
| z-index: 1; | |
| background: rgba(74, 124, 247, 0.12); | |
| color: #7aabff; | |
| padding: 10px 12px; | |
| text-align: left; | |
| font-weight: 600; | |
| border-bottom: 1px solid var(--line); | |
| white-space: nowrap; | |
| } | |
| .parameter-table tbody td { | |
| padding: 8px 12px; | |
| border-bottom: 1px solid rgba(255, 255, 255, 0.04); | |
| color: var(--text); | |
| vertical-align: middle; | |
| } | |
| .parameter-table tbody tr:last-child td { | |
| border-bottom: none; | |
| } | |
| .parameter-table tbody tr:hover { | |
| background: rgba(255, 255, 255, 0.03); | |
| } | |
| .parameter-table tbody tr.pending-value { | |
| background: rgba(74, 124, 247, 0.06); | |
| } | |
| .parameter-table tbody tr.pending-restart { | |
| background: rgba(255, 200, 80, 0.06); | |
| } | |
| .parameter-table tbody tr.pending-sensitive { | |
| background: rgba(220, 53, 69, 0.05); | |
| } | |
| .param-name { | |
| font-family: var(--font-mono); | |
| font-size: 0.78rem; | |
| font-weight: 600; | |
| } | |
| .param-current, | |
| .param-pending, | |
| .param-default { | |
| font-family: var(--font-mono); | |
| font-size: 0.78rem; | |
| } | |
| .param-pending { | |
| color: #7aabff; | |
| font-weight: 600; | |
| } | |
| .param-source { | |
| font-size: 0.78rem; | |
| color: var(--muted); | |
| } | |
| .param-actions { | |
| display: flex; | |
| gap: 6px; | |
| flex-wrap: nowrap; | |
| } | |
| .param-badge { | |
| display: inline-block; | |
| padding: 1px 6px; | |
| border-radius: 6px; | |
| font-size: 0.65rem; | |
| font-weight: 600; | |
| text-transform: uppercase; | |
| letter-spacing: 0.3px; | |
| margin-left: 4px; | |
| vertical-align: middle; | |
| } | |
| .param-badge.mutable { | |
| background: rgba(36, 180, 110, 0.12); | |
| color: #4ddb8a; | |
| } | |
| .param-badge.immutable { | |
| background: rgba(136, 153, 187, 0.12); | |
| color: #8899bb; | |
| } | |
| .param-badge.restart { | |
| background: rgba(255, 200, 80, 0.12); | |
| color: #ffc850; | |
| } | |
| .param-badge.sensitive { | |
| background: rgba(220, 53, 69, 0.12); | |
| color: #f06070; | |
| } | |
| .param-badge.profile { | |
| background: rgba(100, 180, 255, 0.12); | |
| color: #64b4ff; | |
| } | |
| .parameter-empty { | |
| padding: 16px; | |
| text-align: center; | |
| color: var(--muted); | |
| font-style: italic; | |
| } | |
| .pending-changes-bar { | |
| display: flex; | |
| align-items: center; | |
| justify-content: space-between; | |
| gap: 12px; | |
| margin-top: 14px; | |
| padding: 12px 16px; | |
| border: 1px solid var(--line); | |
| border-radius: var(--radius-small); | |
| background: rgba(255, 255, 255, 0.02); | |
| } | |
| .pending-changes-bar.has-pending { | |
| border-color: rgba(74, 124, 247, 0.4); | |
| background: rgba(74, 124, 247, 0.06); | |
| } | |
| .pending-changes-bar__info { | |
| display: flex; | |
| align-items: center; | |
| gap: 12px; | |
| flex-wrap: wrap; | |
| font-size: 0.9rem; | |
| } | |
| .pending-hint { | |
| font-size: 0.78rem; | |
| color: var(--color-warning); | |
| } | |
| .pending-changes-bar__actions { | |
| display: flex; | |
| gap: 8px; | |
| flex-wrap: wrap; | |
| } | |
| .change-history { | |
| margin-top: 14px; | |
| border: 1px solid var(--line); | |
| border-radius: var(--radius-small); | |
| padding: 12px 16px; | |
| } | |
| .change-history summary { | |
| cursor: pointer; | |
| font-weight: 600; | |
| color: var(--text); | |
| } | |
| .change-history summary h3 { | |
| display: inline; | |
| margin: 0; | |
| font-size: 0.95rem; | |
| } | |
| .change-history-list { | |
| margin-top: 10px; | |
| display: flex; | |
| flex-direction: column; | |
| gap: 6px; | |
| max-height: 240px; | |
| overflow-y: auto; | |
| } | |
| .change-history-empty { | |
| padding: 8px 0; | |
| color: var(--muted); | |
| font-size: 0.85rem; | |
| font-style: italic; | |
| } | |
| .change-history-item { | |
| display: grid; | |
| grid-template-columns: 1fr auto auto; | |
| gap: 8px; | |
| align-items: center; | |
| padding: 8px 10px; | |
| border-radius: 6px; | |
| border: 1px solid var(--line); | |
| background: rgba(255, 255, 255, 0.02); | |
| font-size: 0.82rem; | |
| } | |
| .change-history-item.applied { | |
| border-left: 3px solid var(--color-success); | |
| } | |
| .change-history-item.cancelled { | |
| border-left: 3px solid var(--muted); | |
| } | |
| .change-history-name { | |
| font-family: var(--font-mono); | |
| font-weight: 600; | |
| font-size: 0.78rem; | |
| } | |
| .change-history-action { | |
| text-transform: uppercase; | |
| font-size: 0.7rem; | |
| font-weight: 600; | |
| padding: 2px 8px; | |
| border-radius: var(--radius-pill); | |
| } | |
| .change-history-item.applied .change-history-action { | |
| background: rgba(36, 180, 110, 0.12); | |
| color: #4ddb8a; | |
| } | |
| .change-history-item.cancelled .change-history-action { | |
| background: rgba(136, 153, 187, 0.12); | |
| color: #8899bb; | |
| } | |
| .change-history-time { | |
| font-size: 0.75rem; | |
| color: var(--muted); | |
| } | |
| .change-history-values { | |
| grid-column: 1 / -1; | |
| display: flex; | |
| gap: 16px; | |
| font-family: var(--font-mono); | |
| font-size: 0.75rem; | |
| color: var(--muted); | |
| } | |
| .provenance-badge[data-src="LIVE"] { | |
| background: rgba(64, 224, 168, 0.15); | |
| color: #40e0a8; | |
| border: 1px solid rgba(64, 224, 168, 0.2); | |
| } | |
| .provenance-badge[data-src="SNAPSHOT"] { | |
| background: rgba(255, 200, 80, 0.12); | |
| color: #ffc850; | |
| border: 1px solid rgba(255, 200, 80, 0.2); | |
| } | |
| /* ============================================================================ | |
| IO-FLUSS VISUALISIERUNG | |
| ============================================================================ */ | |
| .io-flow-panel { | |
| padding: 20px; | |
| margin-top: 14px; | |
| } | |
| .io-flow-grid { | |
| display: flex; | |
| align-items: center; | |
| gap: 12px; | |
| margin-top: 16px; | |
| padding: 16px; | |
| background: #050d14; | |
| border-radius: 12px; | |
| border: 1px solid #16394b; | |
| } | |
| .io-flow-layer { | |
| flex: 1; | |
| padding: 14px; | |
| border-radius: 10px; | |
| background: rgba(0,0,0,0.3); | |
| border: 1px solid rgba(255,255,255,0.06); | |
| text-align: center; | |
| } | |
| .io-input { border-left: 3px solid #40e0a8; } | |
| .io-hidden { border-left: 3px solid #4a7cf7; } | |
| .io-output { border-left: 3px solid #f0a840; } | |
| .io-layer-header { | |
| font-size: 13px; | |
| font-weight: 600; | |
| text-transform: uppercase; | |
| letter-spacing: 0.5px; | |
| margin-bottom: 10px; | |
| color: var(--muted); | |
| } | |
| .io-layer-header span { | |
| color: var(--text); | |
| font-size: 15px; | |
| margin-left: 6px; | |
| } | |
| .io-layer-bar { | |
| height: 10px; | |
| background: #07141e; | |
| border-radius: 999px; | |
| overflow: hidden; | |
| margin-bottom: 8px; | |
| } | |
| .io-layer-fill { | |
| height: 100%; | |
| width: 0%; | |
| border-radius: 999px; | |
| transition: width 0.5s ease; | |
| } | |
| .io-input .io-layer-fill { background: linear-gradient(90deg, #20c090, #40e0a8); } | |
| .io-hidden .io-layer-fill { background: linear-gradient(90deg, #2a5cd7, #4a7cf7); } | |
| .io-output .io-layer-fill { background: linear-gradient(90deg, #d08820, #f0a840); } | |
| .io-layer-rate { | |
| font-size: 12px; | |
| color: var(--muted); | |
| font-family: var(--font-mono); | |
| } | |
| .io-layer-rate span { | |
| color: var(--text); | |
| font-weight: 600; | |
| } | |
| .io-flow-arrow { | |
| font-size: 28px; | |
| color: var(--muted); | |
| opacity: 0.5; | |
| flex-shrink: 0; | |
| } | |
| .io-flow-meta { | |
| margin-top: 8px; | |
| font-size: 11px; | |
| color: var(--muted); | |
| font-family: var(--font-mono); | |
| } | |
| @media (max-width: 700px) { | |
| .io-flow-grid { | |
| flex-direction: column; | |
| } | |
| .io-flow-arrow { | |
| transform: rotate(90deg); | |
| } | |
| } | |
| /* ============================================================================ | |
| POPULATIONEN ÜBERSICHT | |
| ============================================================================ */ | |
| .population-panel { | |
| padding: 20px; | |
| margin-top: 14px; | |
| } | |
| .population-grid { | |
| display: grid; | |
| grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); | |
| gap: 12px; | |
| margin-top: 16px; | |
| } | |
| .population-card { | |
| background: #050d14; | |
| border: 1px solid #16394b; | |
| border-radius: 10px; | |
| padding: 14px; | |
| transition: border-color 0.2s ease; | |
| } | |
| .population-card:hover { | |
| border-color: rgba(255,255,255,0.15); | |
| } | |
| .population-card-header { | |
| display: flex; | |
| justify-content: space-between; | |
| align-items: center; | |
| margin-bottom: 10px; | |
| padding-bottom: 8px; | |
| border-bottom: 1px solid rgba(142,178,193,0.12); | |
| } | |
| .population-name { | |
| font-weight: 600; | |
| font-size: 14px; | |
| text-transform: capitalize; | |
| } | |
| .population-count { | |
| font-size: 12px; | |
| color: var(--muted); | |
| font-family: var(--font-mono); | |
| } | |
| .population-stats { | |
| display: grid; | |
| gap: 6px; | |
| } | |
| .population-stat { | |
| display: flex; | |
| justify-content: space-between; | |
| font-size: 12px; | |
| } | |
| .population-stat dt { | |
| color: var(--muted); | |
| } | |
| .population-stat dd { | |
| margin: 0; | |
| font-family: var(--font-mono); | |
| font-weight: 500; | |
| } | |
| .population-bar { | |
| height: 6px; | |
| background: #07141e; | |
| border-radius: 999px; | |
| overflow: hidden; | |
| margin-top: 8px; | |
| } | |
| .population-bar-fill { | |
| height: 100%; | |
| border-radius: 999px; | |
| transition: width 0.5s ease; | |
| } | |
| .population-empty { | |
| grid-column: 1 / -1; | |
| text-align: center; | |
| padding: 30px; | |
| color: var(--muted); | |
| font-size: 13px; | |
| } | |
| .population-meta { | |
| margin-top: 8px; | |
| font-size: 11px; | |
| color: var(--muted); | |
| font-family: var(--font-mono); | |
| } | |
| /* ============================================================================ | |
| DYNAMICS TAB - Spike Raster, Histogram, Layer Explorer | |
| ============================================================================ */ | |
| .raster-panel, | |
| .histogram-panel, | |
| .layer-explorer-panel { | |
| padding: 20px; | |
| margin-top: 14px; | |
| } | |
| #spike-raster, | |
| #rate-histogram, | |
| #layer-canvas { | |
| width: 100%; | |
| display: block; | |
| background: #050d14; | |
| border-radius: 12px; | |
| border: 1px solid #16394b; | |
| margin-top: 12px; | |
| } | |
| #spike-raster { height: 380px; } | |
| #rate-histogram { height: 300px; } | |
| #layer-canvas { height: 400px; max-width: 400px; margin: 12px auto; } | |
| .layer-controls { | |
| display: flex; | |
| gap: 16px; | |
| flex-wrap: wrap; | |
| margin-top: 12px; | |
| padding: 12px 16px; | |
| background: #050d14; | |
| border-radius: 10px; | |
| border: 1px solid #16394b; | |
| align-items: center; | |
| } | |
| .layer-controls label { | |
| display: flex; | |
| align-items: center; | |
| gap: 8px; | |
| font-size: 12px; | |
| color: var(--muted); | |
| } | |
| .layer-controls select, | |
| .layer-controls input[type='range'] { | |
| background: #0a1823; | |
| border: 1px solid var(--line); | |
| color: var(--text); | |
| border-radius: 6px; | |
| padding: 4px 8px; | |
| font-family: var(--font-mono); | |
| font-size: 12px; | |
| } | |
| .layer-controls input[type='range'] { | |
| width: 120px; | |
| padding: 0; | |
| accent-color: var(--accent2); | |
| } | |
| #layer-value { | |
| font-family: var(--font-mono); | |
| font-size: 12px; | |
| color: var(--accent2); | |
| min-width: 30px; | |
| text-align: center; | |
| } | |
| /* ============================================================================ | |
| RELEASE TREE | |
| ============================================================================ */ | |
| .release-board { | |
| display: flex; | |
| flex-direction: column; | |
| gap: 1.5rem; | |
| } | |
| .release-header h2 { | |
| margin: 0 0 0.25rem 0; | |
| } | |
| .release-subtitle { | |
| color: var(--muted); | |
| margin: 0; | |
| font-size: 0.9rem; | |
| } | |
| .release-tree { | |
| background: var(--bg); | |
| border: 1px solid var(--line); | |
| border-radius: var(--radius-medium); | |
| padding: 1rem; | |
| } | |
| .release-tree-list { | |
| display: flex; | |
| flex-direction: column; | |
| gap: 0.75rem; | |
| position: relative; | |
| } | |
| .release-tree-node { | |
| border-left: 3px solid var(--line); | |
| padding: 0.75rem 1rem; | |
| background: rgba(255, 255, 255, 0.02); | |
| border-radius: 0 var(--radius-small) var(--radius-small) 0; | |
| } | |
| .release-tree-node.release-released { | |
| border-left-color: var(--color-success); | |
| } | |
| .release-tree-node.release-current { | |
| border-left-color: var(--color-primary); | |
| background: rgba(74, 124, 247, 0.08); | |
| } | |
| .release-node-header { | |
| display: flex; | |
| align-items: center; | |
| gap: 0.6rem; | |
| flex-wrap: wrap; | |
| margin-bottom: 0.4rem; | |
| } | |
| .release-node-version { | |
| font-weight: 600; | |
| font-size: 1rem; | |
| color: var(--text); | |
| } | |
| .release-node-status { | |
| font-size: 0.72rem; | |
| text-transform: uppercase; | |
| letter-spacing: 0.05em; | |
| padding: 2px 8px; | |
| border-radius: 12px; | |
| background: rgba(255, 255, 255, 0.08); | |
| color: var(--muted); | |
| } | |
| .release-status-released { | |
| background: rgba(36, 180, 110, 0.15) ; | |
| color: var(--color-success) ; | |
| } | |
| .release-status-current { | |
| background: rgba(74, 124, 247, 0.2) ; | |
| color: var(--color-primary) ; | |
| } | |
| .release-node-body { | |
| font-size: 0.85rem; | |
| color: var(--muted); | |
| } | |
| .release-node-body p { | |
| margin: 0.25rem 0 0 0; | |
| } | |
| .release-node-meta { | |
| font-family: var(--font-mono); | |
| font-size: 0.78rem; | |
| opacity: 0.8; | |
| } | |
| .release-node-note { | |
| font-style: italic; | |
| color: var(--color-warning); | |
| } | |
| .release-timeline-panel { | |
| border-top: 1px solid var(--line); | |
| padding-top: 1.25rem; | |
| } | |
| .release-timeline-header { | |
| display: flex; | |
| align-items: flex-end; | |
| justify-content: space-between; | |
| gap: 1rem; | |
| margin-bottom: 0.8rem; | |
| } | |
| .release-timeline-header h2 { | |
| margin: 0.2rem 0 0.25rem; | |
| } | |
| .release-timeline-count { | |
| color: var(--color-primary); | |
| font-family: var(--font-mono); | |
| font-size: 0.72rem; | |
| white-space: nowrap; | |
| } | |
| .release-timeline-sources, | |
| .release-timeline-tags { | |
| display: flex; | |
| flex-wrap: wrap; | |
| gap: 0.4rem; | |
| } | |
| .release-timeline-sources { | |
| margin-bottom: 1rem; | |
| } | |
| .release-timeline-source, | |
| .release-timeline-tags span { | |
| border: 1px solid var(--line); | |
| border-radius: 999px; | |
| color: var(--muted); | |
| font-family: var(--font-mono); | |
| font-size: 0.66rem; | |
| letter-spacing: 0.04em; | |
| padding: 0.18rem 0.45rem; | |
| } | |
| .release-timeline-source.is-available { | |
| color: var(--color-success); | |
| } | |
| .release-timeline-source.is-missing { | |
| color: var(--color-warning); | |
| } | |
| .release-timeline-list { | |
| display: block; | |
| } | |
| .release-timeline-phase-summary { | |
| display: grid; | |
| gap: 0.7rem; | |
| grid-template-columns: repeat(3, minmax(0, 1fr)); | |
| margin-bottom: 1.2rem; | |
| } | |
| .release-timeline-phase-summary-item { | |
| border-left: 3px solid var(--color-primary); | |
| background: rgba(255, 255, 255, 0.025); | |
| padding: 0.65rem 0.8rem; | |
| } | |
| .release-timeline-phase-summary-item span, | |
| .release-timeline-phase-summary-item small { | |
| display: block; | |
| } | |
| .release-timeline-phase-summary-item span { | |
| font-weight: 600; | |
| } | |
| .release-timeline-phase-summary-item strong { | |
| color: var(--color-primary); | |
| display: block; | |
| font-family: var(--font-mono); | |
| font-size: 1.1rem; | |
| margin-top: 0.2rem; | |
| } | |
| .release-timeline-phase-summary-item small { | |
| color: var(--muted); | |
| font-size: 0.68rem; | |
| margin-top: 0.15rem; | |
| } | |
| .release-timeline-phase-summary-item.release-timeline-phase-past { | |
| border-left-color: var(--color-success); | |
| } | |
| .release-timeline-phase-summary-item.release-timeline-phase-past strong { | |
| color: var(--color-success); | |
| } | |
| .release-timeline-phase-summary-item.release-timeline-phase-future { | |
| border-left-color: var(--color-warning); | |
| } | |
| .release-timeline-phase-summary-item.release-timeline-phase-future strong { | |
| color: var(--color-warning); | |
| } | |
| .release-timeline-chronological { | |
| border-left: 1px solid rgba(103, 211, 225, 0.35); | |
| display: flex; | |
| flex-direction: column; | |
| gap: 0.8rem; | |
| margin-left: 0.55rem; | |
| padding-left: 1.4rem; | |
| } | |
| .release-timeline-phase { | |
| min-width: 0; | |
| } | |
| .release-timeline-phase-header { | |
| align-items: center; | |
| border-top: 2px solid var(--color-primary); | |
| display: flex; | |
| justify-content: space-between; | |
| margin-bottom: 0.7rem; | |
| padding-top: 0.55rem; | |
| } | |
| .release-timeline-phase-header h3 { | |
| font-size: 0.95rem; | |
| margin: 0; | |
| } | |
| .release-timeline-phase-header span { | |
| color: var(--muted); | |
| display: block; | |
| font-size: 0.68rem; | |
| margin-top: 0.15rem; | |
| } | |
| .release-timeline-phase-header strong { | |
| color: var(--color-primary); | |
| font-family: var(--font-mono); | |
| font-size: 0.8rem; | |
| } | |
| .release-timeline-phase-past .release-timeline-phase-header { | |
| border-top-color: var(--color-success); | |
| } | |
| .release-timeline-phase-past .release-timeline-phase-header strong { | |
| color: var(--color-success); | |
| } | |
| .release-timeline-phase-future .release-timeline-phase-header { | |
| border-top-color: var(--color-warning); | |
| } | |
| .release-timeline-phase-future .release-timeline-phase-header strong { | |
| color: var(--color-warning); | |
| } | |
| .release-timeline-phase-list { | |
| border-left: 1px solid rgba(103, 211, 225, 0.35); | |
| display: flex; | |
| flex-direction: column; | |
| gap: 0.8rem; | |
| margin-left: 0.55rem; | |
| padding-left: 1.4rem; | |
| } | |
| .release-timeline-phase-badge { | |
| border: 1px solid var(--line); | |
| border-radius: 999px; | |
| display: inline-block; | |
| font-family: var(--font-mono); | |
| font-size: 0.64rem; | |
| margin-top: 0.45rem; | |
| padding: 0.15rem 0.4rem; | |
| } | |
| .release-timeline-phase-badge-past { | |
| color: var(--color-success); | |
| } | |
| .release-timeline-phase-badge-current { | |
| color: var(--color-primary); | |
| } | |
| .release-timeline-phase-badge-future { | |
| color: var(--color-warning); | |
| } | |
| .release-preview-content { | |
| border-left: 3px solid var(--color-primary); | |
| background: rgba(255, 255, 255, 0.025); | |
| padding: 1rem 1.2rem; | |
| } | |
| .release-preview-header { | |
| align-items: center; | |
| display: flex; | |
| justify-content: space-between; | |
| gap: 1rem; | |
| } | |
| .release-preview-header > div { | |
| align-items: center; | |
| display: flex; | |
| gap: 0.6rem; | |
| } | |
| .release-preview-content h3 { | |
| margin: 1rem 0 0.35rem; | |
| } | |
| .release-preview-note { | |
| color: var(--muted); | |
| max-width: 80ch; | |
| } | |
| .release-preview-content ul { | |
| color: var(--text); | |
| line-height: 1.5; | |
| margin-bottom: 0; | |
| } | |
| .release-preview-gate { | |
| color: var(--color-warning); | |
| font-family: var(--font-mono); | |
| font-size: 0.74rem; | |
| } | |
| .release-documents-grid { | |
| display: grid; | |
| gap: 1rem; | |
| grid-template-columns: repeat(3, minmax(0, 1fr)); | |
| } | |
| .release-document-card { | |
| border: 1px solid var(--line); | |
| border-radius: var(--radius-small); | |
| min-width: 0; | |
| overflow: hidden; | |
| } | |
| .release-document-card header { | |
| align-items: center; | |
| background: rgba(255, 255, 255, 0.04); | |
| display: flex; | |
| justify-content: space-between; | |
| padding: 0.65rem 0.8rem; | |
| } | |
| .release-document-card h3 { | |
| font-size: 0.9rem; | |
| margin: 0; | |
| } | |
| .release-document-card a { | |
| color: var(--color-primary); | |
| font-size: 0.7rem; | |
| } | |
| .release-document-card pre { | |
| color: var(--muted); | |
| font-family: var(--font-mono); | |
| font-size: 0.68rem; | |
| line-height: 1.45; | |
| margin: 0; | |
| max-height: 38rem; | |
| overflow: auto; | |
| padding: 0.8rem; | |
| white-space: pre-wrap; | |
| } | |
| .release-timeline-entry { | |
| position: relative; | |
| } | |
| .release-timeline-marker { | |
| background: var(--color-primary); | |
| border: 3px solid var(--bg); | |
| border-radius: 50%; | |
| box-shadow: 0 0 0 1px var(--color-primary); | |
| height: 0.7rem; | |
| left: -1.78rem; | |
| position: absolute; | |
| top: 0.2rem; | |
| width: 0.7rem; | |
| } | |
| .release-timeline-entry.is-undated .release-timeline-marker { | |
| background: var(--muted); | |
| box-shadow: 0 0 0 1px var(--muted); | |
| } | |
| .release-timeline-date { | |
| color: var(--color-primary); | |
| font-family: var(--font-mono); | |
| font-size: 0.7rem; | |
| letter-spacing: 0.05em; | |
| text-transform: uppercase; | |
| } | |
| .release-timeline-content { | |
| background: rgba(255, 255, 255, 0.025); | |
| border: 1px solid var(--line); | |
| border-radius: var(--radius-small); | |
| margin-top: 0.3rem; | |
| padding: 0.8rem 1rem; | |
| } | |
| .release-timeline-entry-header { | |
| align-items: baseline; | |
| display: flex; | |
| gap: 0.8rem; | |
| justify-content: space-between; | |
| } | |
| .release-timeline-entry-header h3 { | |
| font-size: 0.95rem; | |
| margin: 0; | |
| } | |
| .release-timeline-progress { | |
| color: var(--color-success); | |
| font-family: var(--font-mono); | |
| font-size: 0.68rem; | |
| white-space: nowrap; | |
| } | |
| .release-timeline-tags { | |
| margin-top: 0.45rem; | |
| } | |
| .release-timeline-content ul { | |
| color: var(--muted); | |
| display: grid; | |
| gap: 0.28rem; | |
| list-style: none; | |
| margin: 0.65rem 0 0; | |
| padding: 0; | |
| } | |
| .release-timeline-content li { | |
| display: flex; | |
| font-size: 0.82rem; | |
| gap: 0.45rem; | |
| line-height: 1.35; | |
| } | |
| .release-timeline-content li.is-done { | |
| color: var(--text); | |
| } | |
| .timeline-item-mark { | |
| color: var(--color-primary); | |
| flex: 0 0 0.8rem; | |
| font-family: var(--font-mono); | |
| text-align: center; | |
| } | |
| .release-timeline-more, | |
| .release-timeline-empty { | |
| color: var(--muted); | |
| font-size: 0.75rem; | |
| margin: 0.65rem 0 0; | |
| } | |
| @media (max-width: 520px) { | |
| .release-timeline-phase-summary, | |
| .release-documents-grid { | |
| grid-template-columns: 1fr; | |
| } | |
| .release-timeline-header, | |
| .release-timeline-entry-header { | |
| align-items: flex-start; | |
| flex-direction: column; | |
| gap: 0.35rem; | |
| } | |
| } | |
| /* ============================================================================ | |
| SHARED EMBODIMENT LANGUAGE | |
| ============================================================================ */ | |
| .tab-content > .workspace-header, | |
| .overview-command-bar { | |
| border-color: rgba(103, 211, 225, .28); | |
| background: | |
| linear-gradient(115deg, rgba(8, 31, 43, .96), rgba(18, 24, 37, .92)), | |
| repeating-linear-gradient(90deg, transparent 0 31px, rgba(103, 211, 225, .035) 32px); | |
| box-shadow: inset 0 0 32px rgba(0, 0, 0, .18); | |
| } | |
| .card, | |
| .control-card, | |
| .overview-surface, | |
| .research-focus-rail article { | |
| border-radius: 7px; | |
| border-color: rgba(103, 211, 225, .2); | |
| background: rgba(5, 20, 31, .82); | |
| box-shadow: 0 8px 22px rgba(0, 0, 0, .16), inset 0 0 28px rgba(35, 126, 143, .035); | |
| } | |
| .tab-btn.active, | |
| .workspace-view-tabs button.active, | |
| .research-lanes button.active { | |
| background: rgba(61, 205, 196, .16); | |
| color: #a4fff0; | |
| box-shadow: inset 0 -2px #4fe4d5; | |
| } | |
| .research-focus-rail { | |
| display: grid; | |
| grid-template-columns: repeat(3, minmax(0, 1fr)); | |
| gap: 8px; | |
| margin: 8px 0; | |
| } | |
| .research-focus-rail article { | |
| display: grid; | |
| gap: 4px; | |
| min-width: 0; | |
| padding: 11px 13px; | |
| } | |
| .research-focus-rail span { | |
| color: #6dd9e0; | |
| font: 700 8px var(--font-mono); | |
| letter-spacing: .1em; | |
| } | |
| .research-focus-rail strong { color: #efffff; font-size: 13px; } | |
| .research-focus-rail small { color: #8298a6; font: 9px var(--font-mono); } | |
| /* Network keeps one live canvas; expensive secondary views remain opt-in code paths. */ | |
| #tab-network > [data-network-view="dynamics"], | |
| #tab-network > [data-network-view="inspect"], | |
| #tab-network > [data-network-view="data"], | |
| #tab-network #network-flow, | |
| #tab-network #network-populations, | |
| #tab-network .workspace-view-tabs { | |
| display: none ; | |
| } | |
| #tab-network.active { | |
| display: grid; | |
| grid-template-rows: auto minmax(0, 1fr); | |
| gap: 8px; | |
| } | |
| #tab-network #network-projection { | |
| min-height: 0; | |
| margin: 0; | |
| border-color: rgba(103, 211, 225, .3); | |
| background: | |
| radial-gradient(circle at 50% 45%, rgba(66, 205, 192, .1), transparent 42%), | |
| rgba(3, 17, 27, .9); | |
| } | |
| #tab-network .heatmap-split { grid-template-columns: 1fr; } | |
| #tab-network .projection-wrap { display: none; } | |
| #tab-network #heatmap { height: min(58vh, 560px); } | |
| @media (max-width: 680px) { | |
| .research-focus-rail { grid-template-columns: 1fr; } | |
| #tab-network #heatmap { height: 52vh; } | |
| } | |
| /* Network is retired from the operator surface; its key signals live in the footer. */ | |
| #tab-network { display: none ; } | |
| /* Brain-5D unified file viewer modal */ | |
| body.fm-viewer-open { overflow: hidden; } | |
| .fm-viewer.fm-viewer-modal:not(.fm-viewer-hidden) { | |
| position: fixed ; | |
| inset: 3vh 3vw ; | |
| z-index: 20000 ; | |
| display: flex ; | |
| flex-direction: column; | |
| width: auto ; | |
| max-width: none ; | |
| height: 94vh ; | |
| max-height: 94vh ; | |
| background: var(--panel-bg, #10151f); | |
| border: 1px solid var(--border, #334155); | |
| border-radius: 14px; | |
| box-shadow: 0 0 0 100vmax rgba(0, 0, 0, 0.68), 0 24px 80px rgba(0, 0, 0, 0.55); | |
| overflow: hidden ; | |
| } | |
| .fm-viewer.fm-viewer-modal .fm-content, | |
| .fm-viewer.fm-viewer-modal .fm-docx-viewer, | |
| .fm-viewer.fm-viewer-modal .fm-sheet-viewer, | |
| .fm-viewer.fm-viewer-modal .fm-pdf-container { | |
| flex: 1 1 auto; | |
| min-height: 0; | |
| overflow: auto; | |
| } | |
| .fm-viewer.fm-viewer-modal .fm-file-header { | |
| position: sticky; | |
| top: 0; | |
| z-index: 3; | |
| } | |
| .fm-math { | |
| display: inline-block; | |
| padding: 0.08rem 0.28rem; | |
| border-radius: 4px; | |
| font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; | |
| background: rgba(127, 127, 127, 0.12); | |
| white-space: nowrap; | |
| } | |
| .workflow-popup-actions { display: inline-flex; gap: 0.3rem; align-items: center; } | |
| /* Final responsive guardrails. These rules deliberately come last so legacy | |
| workspace fragments cannot reintroduce clipping or fixed viewport canvases. */ | |
| [hidden] { | |
| display: none ; | |
| } | |
| .experience-ready .dashboard-utility-bar, | |
| .experience-ready .experience-ribbon, | |
| .experience-ready .experience-welcome { | |
| display: none ; | |
| } | |
| #tab-research .fm-layout { | |
| height: min(68vh, 760px); | |
| min-height: 420px; | |
| max-height: none; | |
| } | |
| #tab-research .fm-tree, | |
| #tab-research .fm-viewer, | |
| #tab-settings .parameter-table-wrap, | |
| #tab-control .console-output { | |
| max-height: min(58vh, 720px); | |
| overflow: auto; | |
| } | |
| #tab-control .console-output { | |
| min-height: 180px; | |
| } | |
| .wesen-stage-card { | |
| min-height: clamp(520px, 62vh, 760px); | |
| } | |
| .wesen-stage { | |
| min-height: clamp(360px, 52vh, 620px); | |
| } | |
| .modal-content, | |
| .research-chat-dialog, | |
| .embodiment-detail-dialog, | |
| .gate-detail-dialog, | |
| .context-help { | |
| max-height: calc(100dvh - 24px); | |
| overflow: auto; | |
| } | |
| .research-chat-dialog { | |
| width: min(1440px, calc(100vw - 24px)); | |
| height: min(900px, calc(100dvh - 24px)); | |
| } | |
| body[data-theme="light"] .experience-ready .topbar-brand h1, | |
| body[data-theme="light"] .experience-ready .topbar-brand .eyebrow, | |
| body[data-theme="light"] .experience-ready .topbar-right > .header-context { | |
| color: #10242f ; | |
| text-shadow: none; | |
| } | |
| /* Fixed footer contract: reserve its responsive height in the document while | |
| keeping the live status bar attached to the viewport edge. */ | |
| :root { | |
| --dashboard-footer-space: 116px; | |
| } | |
| body.experience-ready { | |
| padding-bottom: var(--dashboard-footer-space); | |
| } | |
| body.experience-ready main { | |
| padding-bottom: calc(48px + var(--dashboard-footer-space)); | |
| } | |
| body.experience-ready .site-footer { | |
| position: fixed ; | |
| right: 0; | |
| bottom: 0; | |
| left: 0; | |
| z-index: 40; | |
| margin: 0 ; | |
| padding-bottom: max(1px, env(safe-area-inset-bottom)); | |
| } | |
| @media (max-width: 1080px) { | |
| :root { --dashboard-footer-space: 174px; } | |
| } | |
| @media (max-width: 680px) { | |
| :root { --dashboard-footer-space: 334px; } | |
| } | |
| /* Fixed application chrome: the header and the three primary areas stay | |
| together at the top while only the workspace content scrolls. */ | |
| :root { | |
| --dashboard-header-height: 76px; | |
| --dashboard-primary-nav-height: 78px; | |
| } | |
| body.experience-ready .topbar { | |
| position: fixed ; | |
| top: 0; | |
| right: 0; | |
| left: 0; | |
| z-index: 60; | |
| } | |
| body.experience-ready .brain5d-primary-nav { | |
| position: fixed ; | |
| top: var(--dashboard-header-height); | |
| right: 0; | |
| left: 0; | |
| z-index: 55; | |
| width: 100%; | |
| margin: 0; | |
| border-right: 0; | |
| border-left: 0; | |
| border-radius: 0; | |
| } | |
| body.experience-ready main { | |
| padding-top: calc(var(--dashboard-header-height) + var(--dashboard-primary-nav-height) + 16px); | |
| } | |
| /* Wissenschaft routes the Network workbench contextually. Keep inactive tabs | |
| hidden, but never hide the selected Network workspace itself. */ | |
| #tab-network:not(.active) { | |
| display: none ; | |
| } | |
| #tab-network.active { | |
| display: grid ; | |
| } | |
| #tab-network.active .workspace-view-tabs { | |
| display: flex ; | |
| } | |
| #tab-network.active > [data-network-view="dynamics"]:not([hidden]), | |
| #tab-network.active > [data-network-view="inspect"]:not([hidden]), | |
| #tab-network.active > [data-network-view="data"]:not([hidden]), | |
| #tab-network.active #network-flow, | |
| #tab-network.active #network-populations { | |
| display: block ; | |
| } | |
| @media (max-width: 680px) { | |
| body.experience-ready main { | |
| padding-top: calc(var(--dashboard-header-height) + var(--dashboard-primary-nav-height) + 10px); | |
| } | |
| } | |
| /* Runtime & Wesen raster. The symbiosis interface is a full-width row instead | |
| of being squeezed into the next available grid column. */ | |
| #tab-wesen .wesen-layout { | |
| display: grid; | |
| grid-template-columns: minmax(220px, .8fr) minmax(0, 1.8fr) minmax(220px, .8fr); | |
| grid-template-areas: | |
| "left stage right" | |
| "symbiosis symbiosis symbiosis"; | |
| gap: var(--content-gap); | |
| align-items: start; | |
| } | |
| #tab-wesen .wesen-layout > .wesen-sidebar:first-child { grid-area: left; } | |
| #tab-wesen .wesen-layout > .wesen-stage-card { grid-area: stage; min-width: 0; } | |
| #tab-wesen .wesen-layout > .wesen-sidebar:nth-child(3) { grid-area: right; } | |
| #tab-wesen .wesen-layout > .wesen-symbiosis-card { | |
| grid-area: symbiosis; | |
| min-width: 0; | |
| width: 100%; | |
| } | |
| #tab-wesen .wesen-symbiosis-grid { | |
| grid-template-columns: repeat(3, minmax(0, 1fr)); | |
| align-items: stretch; | |
| } | |
| #tab-wesen .wesen-symbiosis-card article, | |
| #tab-wesen .wesen-symbiosis-list, | |
| #tab-wesen .wesen-symbiosis-gateway { | |
| min-width: 0; | |
| overflow: hidden; | |
| } | |
| #tab-wesen .wesen-symbiosis-card strong, | |
| #tab-wesen .wesen-symbiosis-card small, | |
| #tab-wesen .wesen-symbiosis-card p, | |
| #tab-wesen .wesen-symbiosis-card span { | |
| overflow-wrap: anywhere; | |
| } | |
| @media (max-width: 1180px) { | |
| #tab-wesen .wesen-layout { | |
| grid-template-columns: minmax(220px, 1fr) minmax(220px, 1fr); | |
| grid-template-areas: | |
| "stage stage" | |
| "left right" | |
| "symbiosis symbiosis"; | |
| } | |
| #tab-wesen .wesen-symbiosis-grid { | |
| grid-template-columns: repeat(2, minmax(0, 1fr)); | |
| } | |
| } | |
| @media (max-width: 720px) { | |
| #tab-wesen .wesen-layout { | |
| display: grid; | |
| grid-template-columns: minmax(0, 1fr); | |
| grid-template-areas: | |
| "stage" | |
| "left" | |
| "right" | |
| "symbiosis"; | |
| } | |
| #tab-wesen .wesen-symbiosis-grid { | |
| grid-template-columns: minmax(0, 1fr); | |
| } | |
| #tab-wesen .wesen-stage-card { | |
| min-height: 0; | |
| } | |
| #tab-wesen .wesen-stage { | |
| min-height: min(560px, 70vh); | |
| } | |
| } | |
| /* Full-page workspaces and shared box sizing controls. */ | |
| body.experience-ready .tab-content.active { | |
| min-height: calc(100dvh - var(--dashboard-header-height) - var(--dashboard-primary-nav-height) - var(--dashboard-footer-space)); | |
| } | |
| body.experience-ready .box-state-header { | |
| display: flex; | |
| align-items: flex-start; | |
| justify-content: space-between; | |
| gap: 10px; | |
| } | |
| .box-state-tools { | |
| display: inline-flex; | |
| flex: 0 0 auto; | |
| align-items: center; | |
| gap: 3px; | |
| margin-left: auto; | |
| } | |
| .box-state-button { | |
| display: inline-grid; | |
| width: 27px; | |
| height: 27px; | |
| min-width: 27px; | |
| min-height: 27px; | |
| place-items: center; | |
| padding: 0; | |
| border: 1px solid var(--line-soft); | |
| border-radius: var(--control-radius); | |
| background: var(--surface-2); | |
| color: var(--muted); | |
| cursor: pointer; | |
| font: 700 .8rem/1 var(--font-ui); | |
| } | |
| .box-state-button:hover, | |
| .box-state-button:focus-visible, | |
| .box-state-button[aria-pressed="true"] { | |
| border-color: var(--status-info); | |
| color: var(--status-info); | |
| background: rgba(85, 201, 232, .14); | |
| } | |
| .box-state-minimized { | |
| min-height: 0 ; | |
| } | |
| .box-state-minimized > .box-state-content { | |
| display: none ; | |
| } | |
| body.box-state-lock { | |
| overflow: hidden ; | |
| } | |
| .box-state-maximized { | |
| position: fixed ; | |
| top: 12px ; | |
| right: 12px ; | |
| bottom: 12px ; | |
| left: 12px ; | |
| z-index: 90 ; | |
| width: auto ; | |
| max-width: none ; | |
| max-height: none ; | |
| margin: 0 ; | |
| overflow: auto ; | |
| background: var(--surface-1) ; | |
| box-shadow: 0 0 0 100vmax rgba(0, 7, 13, .74), 0 24px 80px rgba(0, 0, 0, .5) ; | |
| } | |
| .box-state-maximized > .box-state-content { | |
| min-width: 0; | |
| } | |
| @media (max-width: 680px) { | |
| .box-state-maximized { | |
| top: 8px ; | |
| right: 8px ; | |
| bottom: 8px ; | |
| left: 8px ; | |
| } | |
| .box-state-tools { | |
| gap: 2px; | |
| } | |
| .box-state-button { | |
| width: 30px; | |
| height: 30px; | |
| min-width: 30px; | |
| min-height: 30px; | |
| } | |
| } | |
| @media (max-width: 680px) { | |
| #tab-research .fm-layout { | |
| height: min(72vh, 620px); | |
| min-height: 360px; | |
| } | |
| .wesen-stage-card { | |
| min-height: 0; | |
| } | |
| .wesen-stage { | |
| min-height: 420px; | |
| } | |
| .modal-content, | |
| .research-chat-dialog { | |
| width: calc(100vw - 16px); | |
| height: calc(100dvh - 16px); | |
| max-height: calc(100dvh - 16px); | |
| } | |
| } | |