395 lines
No EOL
11 KiB
CSS
395 lines
No EOL
11 KiB
CSS
@tailwind base;
|
|
@tailwind components;
|
|
@tailwind utilities;
|
|
|
|
:root {
|
|
/* ========== VISUAL-TRUTH UI TOKEN CONTRACT (bb-vt.1.1) ========== */
|
|
--ui-bg-app: #070d16;
|
|
--ui-bg-shell: #0c1420;
|
|
--ui-bg-panel: #111c2a;
|
|
--ui-bg-card: #1a2431;
|
|
|
|
--ui-border-soft: rgba(153, 171, 190, 0.2);
|
|
--ui-border-strong: rgba(153, 171, 190, 0.34);
|
|
|
|
--ui-text-primary: #e8edf5;
|
|
--ui-text-muted: #8f9caf;
|
|
|
|
--ui-accent-ready: #35d98f;
|
|
--ui-accent-blocked: #ff4c72;
|
|
--ui-accent-warning: #ffb24a;
|
|
--ui-accent-info: #35c9ff;
|
|
--ui-accent-action-green: #35d98f;
|
|
--ui-accent-action-red: #ff4c72;
|
|
|
|
--ui-font-sans: 'Inter', 'Segoe UI', system-ui, -apple-system, sans-serif;
|
|
--ui-font-mono: 'JetBrains Mono', 'Cascadia Code', 'Fira Code', monospace;
|
|
--ui-tracking-tight: -0.011em;
|
|
--ui-numeric-tabular: tabular-nums;
|
|
|
|
/* ========== LEGACY-COMPATIBLE MAPPINGS ========== */
|
|
--color-bg-base: var(--ui-bg-app);
|
|
--color-bg-card: var(--ui-bg-shell);
|
|
--color-bg-input: var(--ui-bg-panel);
|
|
|
|
--color-accent-green: var(--ui-accent-ready);
|
|
--color-accent-amber: var(--ui-accent-warning);
|
|
--color-accent-teal: var(--ui-accent-info);
|
|
|
|
--color-text-primary: var(--ui-text-primary);
|
|
--color-text-secondary: #c4cfdb;
|
|
--color-text-muted: var(--ui-text-muted);
|
|
--color-text-on-primary: #10161d;
|
|
|
|
--color-border-default: var(--ui-border-strong);
|
|
--color-border-subtle: var(--ui-border-soft);
|
|
|
|
/* Status colors */
|
|
--status-open: var(--ui-accent-info);
|
|
--status-ready: var(--ui-accent-ready);
|
|
--status-in-progress: var(--ui-accent-warning);
|
|
--status-progress: var(--ui-accent-warning);
|
|
--status-blocked: var(--ui-accent-blocked);
|
|
--status-blocked-earthy: var(--ui-accent-blocked);
|
|
--status-closed: #7f8b98;
|
|
--status-closed-earthy: #7f8b98;
|
|
--status-deferred: #7f8b98;
|
|
|
|
/* Liveness colors */
|
|
--liveness-active: var(--ui-accent-ready);
|
|
--liveness-stale: var(--ui-accent-warning);
|
|
--liveness-stuck: var(--ui-accent-action-red);
|
|
--liveness-dead: var(--ui-accent-action-red);
|
|
--liveness-idle: #7f8b98;
|
|
|
|
/* Agent Role Colors */
|
|
--agent-role-ui: #6B9BD2;
|
|
--agent-role-graph: #7CB97A;
|
|
--agent-role-orchestrator: #B08ED6;
|
|
--agent-role-agent: #B8B8B8;
|
|
--agent-role-researcher: #D4A574;
|
|
|
|
/* Priority Colors */
|
|
--priority-p0: #f43f5e;
|
|
--priority-p1: #f59e0b;
|
|
--priority-p2: #38bdf8;
|
|
--priority-p3: #94a3b8;
|
|
--priority-p4: #64748b;
|
|
|
|
/* Blocks/Unlocks Section Colors */
|
|
--color-blocks-bg: rgba(212, 165, 116, 0.1);
|
|
--color-unlocks-bg: rgba(229, 115, 115, 0.1);
|
|
--color-blocks-border: rgba(212, 165, 116, 0.2);
|
|
--color-unlocks-border: rgba(229, 115, 115, 0.2);
|
|
|
|
/* ========== RADI ========== */
|
|
--radius-sm: 0.375rem;
|
|
--radius-card: 1.5rem;
|
|
/* rounded-3xl for soft feel */
|
|
--radius-xl: 1.5rem;
|
|
/* rounded-3xl */
|
|
--radius-modal: 1rem;
|
|
--radius-pill: 9999px;
|
|
|
|
/* ========== SHADOWS ========== */
|
|
--shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.1);
|
|
--shadow-md: 0 4px 12px rgba(0, 0, 0, 0.15);
|
|
--shadow-soft-lg: 0 10px 30px -10px rgba(0, 0, 0, 0.3);
|
|
--shadow-soft-xl: 0 20px 40px -10px rgba(0, 0, 0, 0.4);
|
|
|
|
/* ========== TYPOGRAPHY ========== */
|
|
--font-ui-stack: var(--ui-font-sans);
|
|
--font-mono-stack: var(--ui-font-mono);
|
|
|
|
--font-size-h1: 2rem;
|
|
--font-size-h2: 1.5rem;
|
|
--font_size-h3: 1.125rem;
|
|
--font-size-body: 0.875rem;
|
|
--font-size-small: 0.75rem;
|
|
--font-size-tiny: 0.6875rem;
|
|
|
|
--font-weight-h1: 700;
|
|
--font-weight-h2: 600;
|
|
--font-weight-h3: 600;
|
|
--font-weight-body: 400;
|
|
|
|
--line-height-heading: 1.2;
|
|
--line-height-body: 1.5;
|
|
|
|
/* ========== SPACING ========== */
|
|
--spacing-xs: 0.25rem;
|
|
--spacing-sm: 0.5rem;
|
|
--spacing-md: 1rem;
|
|
--spacing-lg: 1.5rem;
|
|
--spacing-xl: 2rem;
|
|
--spacing-2xl: 2.5rem;
|
|
|
|
/* ========== TRANSITIONS ========== */
|
|
--transition-fast: 150ms ease-out;
|
|
--transition-normal: 200ms ease-out;
|
|
|
|
/* ========== LAYOUT ========== */
|
|
--sidebar-left-width: 13.75rem;
|
|
--sidebar-right-width: 17.5rem;
|
|
--topbar-height: 3.75rem;
|
|
|
|
--glass-base: linear-gradient(180deg,
|
|
color-mix(in srgb, var(--ui-bg-card) 72%, black),
|
|
color-mix(in srgb, var(--ui-bg-panel) 78%, black));
|
|
--edge-top: color-mix(in srgb, var(--ui-border-strong) 80%, white 20%);
|
|
--edge-bottom: color-mix(in srgb, var(--ui-border-soft) 75%, black 25%);
|
|
--elevation-ambient: 0 20px 40px -16px rgba(0, 0, 0, 0.78);
|
|
--elevation-tight: 0 10px 24px -12px rgba(0, 0, 0, 0.7);
|
|
|
|
/* ========== LEGACY COMPATIBILITY TOKENS ========== */
|
|
/* For existing components that reference these */
|
|
--color-bg: var(--color-bg-base);
|
|
--color-surface: var(--color-bg-card);
|
|
--color-surface-muted: var(--color-bg-input);
|
|
--color-text-strong: var(--color-text-primary);
|
|
--color-text-body: var(--color-text-secondary);
|
|
--color-border-soft: var(--color-border-subtle);
|
|
--color-border-strong: var(--color-border-default);
|
|
}
|
|
|
|
* {
|
|
box-sizing: border-box;
|
|
}
|
|
|
|
html,
|
|
body {
|
|
margin: 0;
|
|
min-height: 100%;
|
|
}
|
|
|
|
body {
|
|
background-color: var(--ui-bg-app);
|
|
color: var(--ui-text-primary);
|
|
font-family: var(--ui-font-sans);
|
|
letter-spacing: var(--ui-tracking-tight);
|
|
position: relative;
|
|
isolation: isolate;
|
|
}
|
|
|
|
/* Aero Chrome decorative overlays removed per PRD - earthy-dark is clean/flat */
|
|
|
|
* {
|
|
scrollbar-width: thin;
|
|
scrollbar-color: rgba(148, 163, 184, 0.35) rgba(255, 255, 255, 0.02);
|
|
}
|
|
|
|
*::-webkit-scrollbar {
|
|
width: 0.5rem;
|
|
height: 0.5rem;
|
|
}
|
|
|
|
*::-webkit-scrollbar-track {
|
|
background: rgba(255, 255, 255, 0.02);
|
|
border-radius: 9999px;
|
|
}
|
|
|
|
*::-webkit-scrollbar-thumb {
|
|
background: linear-gradient(180deg, rgba(156, 163, 175, 0.55), rgba(107, 114, 128, 0.45));
|
|
border: 1px solid rgba(255, 255, 255, 0.1);
|
|
border-radius: 9999px;
|
|
}
|
|
|
|
*::-webkit-scrollbar-thumb:hover {
|
|
background: linear-gradient(180deg, rgba(186, 194, 209, 0.72), rgba(124, 136, 156, 0.62));
|
|
}
|
|
|
|
.custom-scrollbar::-webkit-scrollbar {
|
|
width: 4px;
|
|
height: 4px;
|
|
}
|
|
|
|
.custom-scrollbar::-webkit-scrollbar-thumb {
|
|
background: rgba(148, 163, 184, 0.15);
|
|
border-radius: 20px;
|
|
}
|
|
|
|
.custom-scrollbar::-webkit-scrollbar-thumb:hover {
|
|
background: rgba(148, 163, 184, 0.3);
|
|
}
|
|
|
|
.no-scrollbar::-webkit-scrollbar {
|
|
display: none;
|
|
}
|
|
|
|
.no-scrollbar {
|
|
-ms-overflow-style: none;
|
|
scrollbar-width: none;
|
|
}
|
|
|
|
|
|
.workflow-card {
|
|
border: 1px solid rgba(255, 255, 255, 0.08);
|
|
border-top-color: rgba(255, 255, 255, 0.24);
|
|
border-bottom-color: rgba(0, 0, 0, 0.9);
|
|
background: linear-gradient(180deg, rgba(42, 44, 52, 0.6) 0%, rgba(22, 23, 28, 0.6) 100%);
|
|
box-shadow:
|
|
var(--elevation-ambient),
|
|
var(--elevation-tight),
|
|
inset 0 1px 1px rgba(255, 255, 255, 0.15);
|
|
backdrop-filter: blur(24px) saturate(120%);
|
|
-webkit-backdrop-filter: blur(24px) saturate(120%);
|
|
transform: translateZ(0);
|
|
will-change: transform, box-shadow;
|
|
}
|
|
|
|
.workflow-card-selected {
|
|
border-color: rgba(96, 165, 250, 0.42);
|
|
border-top-color: rgba(96, 165, 250, 0.58);
|
|
background: linear-gradient(180deg, rgba(60, 68, 88, 0.7) 0%, rgba(35, 40, 52, 0.7) 100%);
|
|
box-shadow:
|
|
0 20px 48px -8px rgba(0, 0, 0, 0.9),
|
|
0 0 0 1px rgba(96, 165, 250, 0.25),
|
|
0 0 40px rgba(96, 165, 250, 0.15),
|
|
inset 0 1px 1px rgba(255, 255, 255, 0.3);
|
|
}
|
|
|
|
.glass-panel {
|
|
background: var(--glass-base);
|
|
border: 1px solid var(--edge-side);
|
|
border-top-color: var(--edge-top);
|
|
border-bottom-color: var(--edge-bottom);
|
|
box-shadow: var(--elevation-ambient);
|
|
backdrop-filter: blur(24px) saturate(120%);
|
|
-webkit-backdrop-filter: blur(24px) saturate(120%);
|
|
}
|
|
|
|
.bg-earthy-gradient {
|
|
background: linear-gradient(to bottom right, #2D2D2D, #363636);
|
|
}
|
|
|
|
/* Shared dark form controls to avoid white-on-white browser defaults */
|
|
.ui-field {
|
|
border: 1px solid rgba(255, 255, 255, 0.1);
|
|
border-top-color: var(--edge-top);
|
|
border-bottom-color: var(--edge-bottom);
|
|
background: linear-gradient(180deg, rgba(32, 34, 42, 0.72), rgba(17, 19, 26, 0.72));
|
|
color: var(--color-text-strong);
|
|
box-shadow:
|
|
0 8px 20px -12px rgba(0, 0, 0, 0.85),
|
|
inset 0 1px 0 rgba(255, 255, 255, 0.06);
|
|
backdrop-filter: blur(12px);
|
|
-webkit-backdrop-filter: blur(12px);
|
|
}
|
|
|
|
.ui-field::placeholder {
|
|
color: color-mix(in srgb, var(--color-text-muted) 88%, transparent);
|
|
}
|
|
|
|
.ui-field:focus-visible {
|
|
outline: none;
|
|
border-color: rgba(96, 165, 250, 0.48);
|
|
box-shadow:
|
|
0 0 0 2px rgba(96, 165, 250, 0.2),
|
|
inset 0 1px 0 rgba(255, 255, 255, 0.06);
|
|
}
|
|
|
|
.ui-select {
|
|
appearance: none;
|
|
}
|
|
|
|
.ui-select option,
|
|
.ui-option {
|
|
background-color: var(--ui-bg-panel);
|
|
color: var(--ui-text-primary);
|
|
}
|
|
|
|
.ui-text {
|
|
font-family: var(--ui-font-sans);
|
|
font-weight: 500;
|
|
letter-spacing: var(--ui-tracking-tight);
|
|
line-height: 1.35;
|
|
}
|
|
|
|
.system-data {
|
|
font-family: var(--ui-font-mono);
|
|
font-variant-numeric: var(--ui-numeric-tabular);
|
|
font-weight: 450;
|
|
letter-spacing: 0.015em;
|
|
}
|
|
|
|
.ui-shell-app {
|
|
background: var(--ui-bg-app);
|
|
color: var(--ui-text-primary);
|
|
font-family: var(--ui-font-sans);
|
|
letter-spacing: var(--ui-tracking-tight);
|
|
}
|
|
|
|
.ui-shell-topbar {
|
|
background: linear-gradient(180deg, color-mix(in srgb, var(--ui-bg-panel) 92%, black), var(--ui-bg-shell));
|
|
border-bottom: 1px solid color-mix(in srgb, var(--ui-accent-info) 22%, var(--ui-border-soft));
|
|
box-shadow: 0 10px 24px -20px rgba(0, 0, 0, 0.9);
|
|
}
|
|
|
|
.ui-shell-middle {
|
|
background: linear-gradient(180deg, color-mix(in srgb, var(--ui-bg-app) 74%, black), color-mix(in srgb, var(--ui-bg-app) 90%, black));
|
|
border-left: 1px solid color-mix(in srgb, var(--ui-accent-info) 20%, var(--ui-border-soft));
|
|
border-right: 1px solid color-mix(in srgb, var(--ui-accent-info) 20%, var(--ui-border-soft));
|
|
}
|
|
|
|
.ui-shell-panel {
|
|
background: linear-gradient(180deg, color-mix(in srgb, var(--ui-bg-shell) 86%, black), color-mix(in srgb, var(--ui-bg-panel) 84%, black));
|
|
border-left: 1px solid color-mix(in srgb, var(--ui-accent-info) 30%, var(--ui-border-soft));
|
|
}
|
|
|
|
.ui-tabular-nums {
|
|
font-variant-numeric: var(--ui-numeric-tabular);
|
|
}
|
|
|
|
|
|
.workflow-graph-legend {
|
|
backdrop-filter: blur(12px);
|
|
background: rgba(20, 23, 31, 0.72);
|
|
box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.05), 0 8px 32px rgba(0, 0, 0, 0.3);
|
|
}
|
|
|
|
.workflow-graph-flow .react-flow__viewport {
|
|
background:
|
|
radial-gradient(circle at 20% 20%, var(--aurora-blue), transparent 45%),
|
|
radial-gradient(circle at 80% 15%, var(--aurora-amber), transparent 45%);
|
|
}
|
|
|
|
.workflow-graph-flow .react-flow__edges {
|
|
z-index: 10 !important;
|
|
}
|
|
|
|
.workflow-graph-flow .react-flow__nodes {
|
|
z-index: 20 !important;
|
|
}
|
|
|
|
.workflow-graph-flow .react-flow__edge-path {
|
|
stroke-linecap: round;
|
|
stroke-linejoin: round;
|
|
}
|
|
|
|
.workflow-graph-flow .workflow-edge-muted .react-flow__edge-path {
|
|
opacity: 0.85;
|
|
}
|
|
|
|
.workflow-graph-flow .workflow-edge-selected .react-flow__edge-path {
|
|
opacity: 1;
|
|
filter: drop-shadow(0 0 10px rgba(56, 189, 248, 0.6));
|
|
}
|
|
|
|
.workflow-graph-flow .workflow-edge-cycle .react-flow__edge-path {
|
|
stroke: var(--color-accent-amber);
|
|
stroke-dasharray: 4 4;
|
|
opacity: 0.9;
|
|
}
|
|
|
|
/* Thread Drawer slide-in animation */
|
|
@keyframes slideInFromRight {
|
|
from {
|
|
transform: translateX(100%);
|
|
opacity: 0;
|
|
}
|
|
|
|
to {
|
|
transform: translateX(0);
|
|
opacity: 1;
|
|
}
|
|
} |