/* CSS Layer order - CRITICAL for PrimeVue + Tailwind */ @layer theme, base, primevue, components, utilities; /* Tailwind CSS v4 - single import handles theme + utilities */ @import 'tailwindcss'; /* PrimeIcons */ @import 'primeicons/primeicons.css'; /* ===================== Font Imports ===================== */ @import url('https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500&display=swap'); /* ===================== Design Tokens ===================== */ @theme { /* Font Families */ --font-sans: 'Inter', system-ui, -apple-system, sans-serif; --font-mono: 'JetBrains Mono', ui-monospace, monospace; /* Base Colors */ --color-white: #ffffff; --color-black: #000000; /* Custom Colors - Charcoal palette (dark backgrounds) */ --color-charcoal-100: #55565e; --color-charcoal-200: #494a50; --color-charcoal-300: #3c3d42; --color-charcoal-400: #313235; --color-charcoal-500: #2d2e32; --color-charcoal-600: #262729; --color-charcoal-700: #202121; --color-charcoal-800: #171718; /* Smoke palette (light grays) */ --color-smoke-100: #f3f3f3; --color-smoke-200: #e9e9e9; --color-smoke-300: #e1e1e1; --color-smoke-400: #d9d9d9; --color-smoke-500: #c5c5c5; --color-smoke-600: #b4b4b4; --color-smoke-700: #a0a0a0; --color-smoke-800: #8a8a8a; /* Azure palette (blues) */ --color-azure-300: #78bae9; --color-azure-400: #31b9f4; --color-azure-600: #0b8ce9; /* Accent colors */ --color-coral-500: #f75951; --color-coral-600: #e04e48; --color-jade-400: #47e469; --color-gold-500: #fdab34; } /* ===================== Root Variables ===================== */ :root { /* Base colors - Light mode */ --fg-color: #000; --bg-color: #fff; --comfy-menu-bg: #353535; --input-text: #ddd; --border-color: #4e4e4e; /* Semantic tokens - Light mode */ --base-foreground: var(--color-charcoal-800); --base-background: var(--color-white); --muted-foreground: var(--color-smoke-800); --secondary-background: var(--color-smoke-200); --secondary-background-hover: var(--color-smoke-300); --primary-background: var(--color-azure-600); --primary-background-hover: var(--color-azure-400); --border-default: var(--color-smoke-400); --border-subtle: var(--color-smoke-300); /* Interface colors */ --interface-panel-surface: var(--color-white); --interface-stroke: var(--color-smoke-300); --button-surface: var(--color-white); --button-hover-surface: var(--color-smoke-200); } /* ===================== Dark Theme ===================== */ .dark-theme { --fg-color: #fff; --bg-color: #202020; /* Semantic tokens - Dark mode */ --base-foreground: var(--color-white); --base-background: var(--color-charcoal-800); --muted-foreground: var(--color-smoke-700); --secondary-background: var(--color-charcoal-600); --secondary-background-hover: var(--color-charcoal-400); --primary-background: var(--color-azure-600); --primary-background-hover: var(--color-azure-400); --border-default: var(--color-charcoal-200); --border-subtle: var(--color-charcoal-300); /* Interface colors */ --interface-panel-surface: var(--color-charcoal-800); --interface-stroke: var(--color-charcoal-400); --button-surface: var(--color-charcoal-600); --button-hover-surface: var(--color-charcoal-400); } /* ===================== Tailwind Theme Inline ===================== */ @theme inline { --color-base-foreground: var(--base-foreground); --color-base-background: var(--base-background); --color-muted-foreground: var(--muted-foreground); --color-secondary-background: var(--secondary-background); --color-secondary-background-hover: var(--secondary-background-hover); --color-primary-background: var(--primary-background); --color-primary-background-hover: var(--primary-background-hover); --color-border-default: var(--border-default); --color-border-subtle: var(--border-subtle); --color-interface-panel-surface: var(--interface-panel-surface); --color-interface-stroke: var(--interface-stroke); --color-button-surface: var(--button-surface); --color-button-hover-surface: var(--button-hover-surface); } /* ===================== Base Styles ===================== */ html { font-family: var(--font-sans, system-ui, sans-serif); -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } body { margin: 0; min-height: 100vh; background-color: var(--bg-color); color: var(--fg-color); } #app { min-height: 100vh; } /* ===================== Utility Classes ===================== */ @utility scrollbar-thin { scrollbar-width: thin; } @utility scrollbar-none { scrollbar-width: none; &::-webkit-scrollbar { display: none; } } /* ===================== Dialog Styles ===================== */ .dialog-mask { background-color: rgba(0, 0, 0, 0.5); backdrop-filter: blur(2px); } .dialog-root { background-color: var(--interface-panel-surface); border: 1px solid var(--border-subtle); border-radius: 0.5rem; box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -4px rgba(0, 0, 0, 0.1); overflow: hidden; } .dialog-header { display: flex; align-items: center; justify-content: space-between; padding: 1rem 1.25rem; border-bottom: 1px solid var(--border-subtle); background-color: var(--interface-panel-surface); } .dialog-title { flex: 1; } .dialog-title-text { font-size: 1rem; font-weight: 600; color: var(--base-foreground); } .dialog-header-actions { display: flex; align-items: center; gap: 0.25rem; } .dialog-header-actions button { display: flex; align-items: center; justify-content: center; width: 1.75rem; height: 1.75rem; border-radius: 0.25rem; color: var(--muted-foreground); transition: all 0.15s ease; } .dialog-header-actions button:hover { background-color: var(--secondary-background); color: var(--base-foreground); } .dialog-content { padding: 1.25rem; background-color: var(--interface-panel-surface); } .dialog-footer { display: flex; justify-content: flex-end; padding: 1rem 1.25rem; border-top: 1px solid var(--border-subtle); background-color: var(--interface-panel-surface); } .dialog-form { display: flex; flex-direction: column; gap: 1rem; } .dialog-field { display: flex; flex-direction: column; gap: 0.5rem; } .dialog-label { font-size: 0.875rem; font-weight: 500; color: var(--base-foreground); } .dialog-input-root, .dialog-textarea-root { width: 100%; padding: 0.5rem 0.75rem; font-size: 0.875rem; background-color: var(--button-surface); border: 1px solid var(--border-default); border-radius: 0.375rem; color: var(--base-foreground); transition: all 0.15s ease; } .dialog-input-root::placeholder, .dialog-textarea-root::placeholder { color: var(--muted-foreground); } .dialog-input-root:focus, .dialog-textarea-root:focus { outline: none; border-color: var(--primary-background); box-shadow: 0 0 0 2px rgba(11, 140, 233, 0.2); } .dialog-textarea-root { resize: vertical; min-height: 4.5rem; } .dialog-actions { display: flex; justify-content: flex-end; gap: 0.5rem; } .dialog-btn { padding: 0.5rem 1rem; font-size: 0.875rem; font-weight: 500; border-radius: 0.375rem; transition: all 0.15s ease; cursor: pointer; } .dialog-btn-secondary { background-color: var(--button-surface); border: 1px solid var(--border-default); color: var(--base-foreground); } .dialog-btn-secondary:hover { background-color: var(--button-hover-surface); } .dialog-btn-primary { background-color: var(--primary-background); border: 1px solid var(--primary-background); color: var(--color-white); } .dialog-btn-primary:hover { background-color: var(--primary-background-hover); border-color: var(--primary-background-hover); } .dialog-btn-disabled { background-color: var(--secondary-background); border: 1px solid var(--border-subtle); color: var(--muted-foreground); cursor: not-allowed; } /* ===================== PrimeVue Tooltip Overrides (v2 Interface) ===================== */ .p-tooltip { --p-tooltip-padding: 0.25rem 0.5rem; --p-tooltip-border-radius: 4px; --p-tooltip-background: #000000; --p-tooltip-color: #fafafa; --p-tooltip-show-delay: 100ms; --p-tooltip-hide-delay: 0ms; } .p-tooltip .p-tooltip-text { font-family: 'JetBrains Mono', ui-monospace, monospace; font-size: 0.625rem; font-weight: 500; text-transform: uppercase; letter-spacing: 0.05em; padding: 0.25rem 0.5rem; white-space: nowrap; border: 1px solid #52525b; border-radius: 4px; } /* Dark mode tooltip - for canvas/editor */ .dark .p-tooltip, .dark-theme .p-tooltip { --p-tooltip-background: #000000; --p-tooltip-color: #fafafa; } /* ===================== PrimeVue Popover Overrides ===================== */ @layer primevue { .p-popover { --p-popover-background: #18181b; --p-popover-border-color: #3f3f46; --p-popover-border-radius: 0.5rem; --p-popover-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -4px rgba(0, 0, 0, 0.1); --p-popover-padding: 0; --p-popover-content-padding: 0; } }