@layer base { :root { color-scheme: light; --oc-safe-area-top: 0px; --oc-safe-area-right: 0px; --oc-safe-area-bottom: 0px; --oc-safe-area-bottom-visual: 0px; --oc-safe-area-left: 0px; --oc-header-height: 56px; --oc-visual-viewport-offset-top: 0px; --oc-keyboard-inset: 0px; --oc-keyboard-avoid-offset: 0px; --oc-keyboard-home-indicator: 0px; --ui-regular-font-weight: 400; --oc-scrollbar-thumb: oklch(0.32 0.03 50 / 0.4); --oc-scrollbar-thumb-hover: oklch(0.32 0.03 50 / 0.6); --padding-scale: 1; /* Semantic typography defaults (must match SEMANTIC_TYPOGRAPHY) */ --text-markdown: 0.9375rem; --text-code: 0.8125rem; --text-ui-header: 0.9375rem; --text-ui-label: 0.8750rem; --text-meta: 0.875rem; --text-micro: 0.875rem; /* Default Light Theme */ --background: oklch(0.97 0.02 85); /* Warm sand background */ --foreground: oklch(0.25 0.02 40); /* Dark warm text */ --card: oklch(0.99 0.01 90); /* Bright sand card */ --card-foreground: oklch(0.25 0.02 40); /* Dark warm text */ --popover: oklch(0.99 0.01 90); /* Bright sand popover */ --popover-foreground: oklch(0.25 0.02 40); /* Dark warm text */ --primary: oklch(0.65 0.2 55); /* Primary accent - orange */ --primary-foreground: oklch(0.99 0.01 90); /* Light text on primary */ --secondary: oklch(0.92 0.02 80); /* Light sand */ --secondary-foreground: oklch(0.25 0.02 40); /* Dark warm text */ --muted: oklch(0.9 0.015 75); /* Muted sand */ --muted-foreground: oklch(0.45 0.02 50); /* Medium warm text */ --accent: oklch(0.92 0.02 80); /* Light sand accent */ --accent-foreground: oklch(0.25 0.02 40); /* Dark warm text */ --destructive: oklch(0.55 0.25 25); /* Warm red */ --destructive-foreground: oklch(0.99 0.01 90); /* Light text */ --border: oklch(0.85 0.02 70); /* Warm border */ --input: oklch(0.88 0.02 75); /* Input background */ --ring: oklch(0.65 0.2 55); /* Focus ring color */ --radius: 0.625rem; --chart-1: oklch(0.58 0.15 230); /* Blue */ --chart-2: oklch(0.58 0.15 145); /* Oasis green */ --chart-3: oklch(0.65 0.2 55); /* Orange */ --chart-4: oklch(0.55 0.18 30); /* Rose */ --chart-5: oklch(0.6 0.16 85); /* Golden sand */ --sidebar: oklch(0.95 0.02 80); /* Slightly darker sand */ --sidebar-foreground: oklch(0.25 0.02 40); /* Dark warm text */ --sidebar-primary: oklch(0.65 0.2 55); /* Primary accent */ --sidebar-primary-foreground: oklch(0.99 0.01 90); /* Light text */ --sidebar-accent: oklch(0.9 0.02 75); /* Light sand accent */ --sidebar-accent-foreground: oklch(0.25 0.02 40); /* Dark warm text */ --sidebar-border: oklch(0.85 0.02 70); /* Warm border */ --sidebar-ring: oklch(0.65 0.2 55); /* Focus ring */ --sidebar-stuck-bg: var(--sidebar); /* Desktop sidebar sticky header background (match sidebar) */ } .dark { /* Default Dark Theme - using OKLCH color space */ --background: oklch(0.16 0.01 30); /* #151313 */ --foreground: oklch(0.85 0.02 90); /* #cdccc3 */ --card: oklch(0.19 0.01 40); /* #1C1B1A */ --card-foreground: oklch(0.85 0.02 90); /* #cdccc3 */ --popover: oklch(0.24 0.01 40); /* #282726 */ --popover-foreground: oklch(0.85 0.02 90); /* #cdccc3 */ --primary: oklch(0.77 0.17 85); /* #edb449 - golden sand */ --primary-foreground: oklch(0.16 0.01 30); /* #151313 */ --secondary: oklch(0.29 0.01 40); /* #343331 */ --secondary-foreground: oklch(0.85 0.02 90); /* #cdccc3 */ --muted: oklch(0.33 0.01 40); /* #403E3C */ --muted-foreground: oklch(0.75 0.02 80); /* #b6b4ab */ --accent: oklch(0.29 0.01 40); /* #343331 */ --accent-foreground: oklch(0.85 0.02 90); /* #cdccc3 */ --destructive: oklch(0.65 0.15 30); /* #d98678 */ --destructive-foreground: oklch(0.9 0.02 80); /* #e1dcd0 */ --border: oklch(0.31 0.01 35); /* #393836 */ --input: oklch(0.33 0.01 40); /* #403E3C */ --ring: oklch(0.77 0.17 85); /* #edb449 */ --chart-1: oklch(0.68 0.12 230); /* #5aa9d9 - blue */ --chart-2: oklch(0.68 0.12 145); /* #81af6c - green */ --chart-3: oklch(0.7 0.13 95); /* #c2974d - yellow */ --chart-4: oklch(0.65 0.14 45); /* #d8886d - coral */ --chart-5: oklch(0.68 0.12 55); /* #d29470 - orange */ --sidebar: oklch(0.16 0.01 30); /* #151313 */ --sidebar-foreground: oklch(0.85 0.02 90); /* #cdccc3 */ --sidebar-primary: oklch(0.77 0.17 85); /* #edb449 */ --sidebar-primary-foreground: oklch(0.16 0.01 30); /* #151313 */ --sidebar-accent: oklch(0.24 0.01 40); /* #282726 */ --sidebar-accent-foreground: oklch(0.85 0.02 90); /* #cdccc3 */ --sidebar-border: oklch(0.31 0.01 35); /* #393836 */ --sidebar-ring: oklch(0.77 0.17 85); /* #edb449 */ --sidebar-stuck-bg: var(--sidebar); /* Desktop sidebar sticky header background (match sidebar) */ } * { border-color: hsl(var(--border)); } :root * { border-color: rgba(194, 151, 77, 0.2); /* Warm golden sand borders for light mode */ } .dark * { border-color: rgba(57, 56, 54, 0.5); /* #393836 at 50% opacity */ } body { background-color: hsl(var(--background)); color: hsl(var(--foreground)); } * { @apply border-border outline-none; } body { @apply bg-background text-foreground; font-family: var(--font-sans, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif); font-weight: var(--ui-regular-font-weight, 400); } /* Desktop shell: prevent rubber-band scrolling of the page itself. App scroll should live inside dedicated scroll containers. */ :root.desktop-runtime, :root.desktop-runtime body, :root.desktop-runtime #root { height: 100%; overflow: hidden; overscroll-behavior: none; overscroll-behavior-y: none; } :root.desktop-runtime:not(.no-vibrancy) body, :root.desktop-runtime:not(.no-vibrancy) #root { background: transparent !important; background-color: transparent !important; } :root.desktop-runtime.no-vibrancy body, :root.desktop-runtime.no-vibrancy #root { background: var(--background) !important; background-color: var(--background) !important; } /* When vibrancy is off, force sidebar overlays to solid and disable blur. */ :root.desktop-runtime.no-vibrancy { --sidebar-overlay-strong: var(--sidebar) !important; --sidebar-overlay-soft: var(--sidebar) !important; } :root.desktop-runtime.no-vibrancy .backdrop-blur { -webkit-backdrop-filter: none !important; backdrop-filter: none !important; } .font-sans { font-family: var(--font-sans, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif) !important; } .font-mono, code, pre { font-family: var(--font-mono, ui-monospace, SFMono-Regular, 'Liberation Mono', Menlo, monospace) !important; } /* Remove focus rings globally (except inputs/textareas/dropdowns/selects) */ *:focus:not(input):not(textarea):not([data-slot="dropdown-menu-content"]):not([data-slot="dropdown-menu-sub-content"]):not([data-slot="select-content"]) { outline: none !important; box-shadow: none !important; } *:focus-visible:not(input):not(textarea):not([data-slot="dropdown-menu-content"]):not([data-slot="dropdown-menu-sub-content"]):not([data-slot="select-content"]) { outline: none !important; box-shadow: none !important; } } @theme inline { --radius-sm: calc(var(--radius) - 4px); --radius-md: calc(var(--radius) - 2px); --radius-lg: var(--radius); --radius-xl: calc(var(--radius) + 4px); /* Override Tailwind spacing scale with custom properties that respect --padding-scale */ --spacing-0: 0; --spacing-0\.5: calc(0.125rem * var(--padding-scale, 1)); --spacing-1: calc(0.25rem * var(--padding-scale, 1)); --spacing-1\.5: calc(0.375rem * var(--padding-scale, 1)); --spacing-2: calc(0.5rem * var(--padding-scale, 1)); --spacing-2\.5: calc(0.625rem * var(--padding-scale, 1)); --spacing-3: calc(0.75rem * var(--padding-scale, 1)); --spacing-3\.5: calc(0.875rem * var(--padding-scale, 1)); --spacing-4: calc(1rem * var(--padding-scale, 1)); --spacing-5: calc(1.25rem * var(--padding-scale, 1)); --spacing-6: calc(1.5rem * var(--padding-scale, 1)); --spacing-7: calc(1.75rem * var(--padding-scale, 1)); --spacing-8: calc(2rem * var(--padding-scale, 1)); --spacing-9: calc(2.25rem * var(--padding-scale, 1)); --spacing-10: calc(2.5rem * var(--padding-scale, 1)); --spacing-11: calc(2.75rem * var(--padding-scale, 1)); --spacing-12: calc(3rem * var(--padding-scale, 1)); --spacing-14: calc(3.5rem * var(--padding-scale, 1)); --spacing-16: calc(4rem * var(--padding-scale, 1)); --spacing-20: calc(5rem * var(--padding-scale, 1)); --spacing-24: calc(6rem * var(--padding-scale, 1)); --spacing-28: calc(7rem * var(--padding-scale, 1)); --spacing-32: calc(8rem * var(--padding-scale, 1)); --spacing-36: calc(9rem * var(--padding-scale, 1)); --spacing-40: calc(10rem * var(--padding-scale, 1)); --spacing-44: calc(11rem * var(--padding-scale, 1)); --spacing-48: calc(12rem * var(--padding-scale, 1)); --spacing-52: calc(13rem * var(--padding-scale, 1)); --spacing-56: calc(14rem * var(--padding-scale, 1)); --spacing-60: calc(15rem * var(--padding-scale, 1)); --spacing-64: calc(16rem * var(--padding-scale, 1)); --spacing-72: calc(18rem * var(--padding-scale, 1)); --spacing-80: calc(20rem * var(--padding-scale, 1)); --spacing-96: calc(24rem * var(--padding-scale, 1)); --color-background: var(--background); --color-foreground: var(--foreground); --color-card: var(--card); --color-card-foreground: var(--card-foreground); --color-popover: var(--popover); --color-popover-foreground: var(--popover-foreground); --color-primary: var(--primary); --color-primary-foreground: var(--primary-foreground); --color-secondary: var(--secondary); --color-secondary-foreground: var(--secondary-foreground); --color-muted: var(--muted); --color-muted-foreground: var(--muted-foreground); --color-accent: var(--accent); --color-accent-foreground: var(--accent-foreground); --color-destructive: var(--destructive); --color-border: var(--border); --color-input: var(--input); --color-ring: var(--ring); --color-chart-1: var(--chart-1); --color-chart-2: var(--chart-2); --color-chart-3: var(--chart-3); --color-chart-4: var(--chart-4); --color-chart-5: var(--chart-5); --color-sidebar: var(--sidebar); --color-sidebar-foreground: var(--sidebar-foreground); --color-status-success: var(--status-success); --color-status-warning: var(--status-warning); --color-status-error: var(--status-error); --color-status-info: var(--status-info); --color-sidebar-primary: var(--sidebar-primary); --color-sidebar-primary-foreground: var(--sidebar-primary-foreground); --color-sidebar-accent: var(--sidebar-accent); --color-sidebar-accent-foreground: var(--sidebar-accent-foreground); --color-sidebar-border: var(--sidebar-border); --color-sidebar-ring: var(--sidebar-ring); /* Interactive state tokens (Theme.colors.interactive.*) */ --color-interactive-hover: var(--interactive-hover); --color-interactive-active: var(--interactive-active); --color-interactive-selection: var(--interactive-selection); --color-interactive-selection-foreground: var(--interactive-selection-foreground); --color-interactive-border-hover: var(--interactive-border-hover); --color-interactive-border-focus: var(--interactive-border-focus); --color-interactive-focus-ring: var(--interactive-focus-ring); /* Short aliases (optional) */ --color-border-hover: var(--interactive-border-hover); --color-border-focus: var(--interactive-border-focus); /* Markdown typography variables */ --markdown-body-font-size: var(--text-markdown); --markdown-body-line-height: var(--markdown-body-line-height); --markdown-h1-font-size: var(--text-markdown); --markdown-h1-line-height: var(--markdown-h1-line-height); --markdown-h2-font-size: var(--text-markdown); --markdown-h2-line-height: var(--markdown-h2-line-height); --markdown-h3-font-size: var(--text-markdown); --markdown-h3-line-height: var(--markdown-h3-line-height); --markdown-h4-font-size: var(--text-markdown); --markdown-h4-line-height: var(--markdown-h4-line-height); --markdown-h5-font-size: var(--text-markdown); --markdown-h5-line-height: var(--markdown-h5-line-height); --markdown-h6-font-size: var(--text-markdown); --markdown-h6-line-height: var(--markdown-h6-line-height); --markdown-list-font-size: var(--text-markdown); --markdown-list-line-height: var(--markdown-list-line-height); --markdown-code-block-font-size: var(--text-code); --markdown-code-block-line-height: var(--markdown-code-block-line-height); /* Markdown color variables */ --markdown-heading1: var(--markdown-heading1); --markdown-heading2: var(--markdown-heading2); --markdown-heading3: var(--markdown-heading3); --markdown-heading4: var(--markdown-heading4); --markdown-link: var(--markdown-link); --markdown-link-hover: var(--markdown-link-hover); --markdown-list-marker: var(--markdown-list-marker); --markdown-inline-code: var(--markdown-inline-code); --markdown-inline-code-bg: var(--markdown-inline-code-bg); --markdown-blockquote: var(--markdown-blockquote); --markdown-blockquote-border: var(--markdown-blockquote-border); /* Markdown spacing defaults */ --markdown-paragraph-spacing: 0.35rem; --markdown-heading-primary-top: 0.75rem; --markdown-heading-primary-bottom: 0.35rem; --markdown-heading-secondary-top: 0.6rem; --markdown-heading-secondary-bottom: 0.3rem; --markdown-blockquote-spacing: 0.6rem; --markdown-blockquote-padding: 0.75rem; --markdown-divider-spacing: 0.85rem; --markdown-table-spacing: 0.9rem; --markdown-heading1-size: var(--text-markdown); --markdown-heading2-size: var(--text-markdown); --markdown-heading3-size: var(--text-markdown); --markdown-heading4-size: var(--text-markdown); --markdown-heading5-size: var(--text-markdown); --markdown-heading6-size: var(--text-markdown); --font-sans: "IBM Plex Mono", "JetBrains Mono", "Fira Code", "SFMono-Regular", "Menlo", monospace; --font-heading: var(--font-sans); --font-mono: "IBM Plex Mono", "JetBrains Mono", "Fira Code", "SFMono-Regular", "Menlo", monospace; --font-family-sans: var(--font-sans); --font-family-mono: var(--font-mono); } /* Agent color system using theme variables */ @layer components { /* Agent color variants - each maps to theme colors */ .agent-primary { --agent-color: var(--primary); --agent-color-bg: var(--primary); } .agent-info { --agent-color: var(--status-info); --agent-color-bg: var(--status-info); } .agent-keyword { --agent-color: var(--syntax-keyword); --agent-color-bg: var(--syntax-keyword); } .agent-success { --agent-color: var(--status-success); --agent-color-bg: var(--status-success); } .agent-function { --agent-color: var(--syntax-function); --agent-color-bg: var(--syntax-function); } .agent-number { --agent-color: var(--syntax-number); --agent-color-bg: var(--syntax-number); } .agent-type { --agent-color: var(--syntax-type); --agent-color-bg: var(--syntax-type); } .agent-warning { --agent-color: var(--status-warning); --agent-color-bg: var(--status-warning); } .agent-variable { --agent-color: var(--syntax-variable); --agent-color-bg: var(--syntax-variable); } /* Apply colors with opacity for badges */ .agent-badge { background: rgb(from var(--agent-color-bg) r g b / 0.1); border: 1px solid rgb(from var(--agent-color) r g b / 0.2); color: var(--agent-color); } .agent-badge:hover { background: rgb(from var(--agent-color-bg) r g b / 0.15); border-color: rgb(from var(--agent-color) r g b / 0.3); } /* Agent dot indicator */ .agent-dot { background: var(--agent-color); } /* Agent list item */ .agent-list-item:hover { background: rgb(from var(--agent-color-bg) r g b / 0.05); } .agent-list-item.active { background: rgb(from var(--agent-color-bg) r g b / 0.1); border-color: rgb(from var(--agent-color) r g b / 0.2); } }