beadboard/src/app/globals.css
zenchantlive 90794a2b43 colors
2026-02-26 10:45:02 -08:00

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