@tailwind base; @tailwind components; @tailwind utilities; /* Theme token sets — applied via html[data-theme="..."]. Default = gruvbox. */ @layer base { :root, [data-theme="gruvbox"] { --gb-bg-h: #1d2021; --gb-bg: #282828; --gb-bg-s: #3c3836; --gb-bg-t: #504945; --gb-bg-f: #32302f; --gb-fg: #ebdbb2; --gb-fg-s: #d5c4a1; --gb-fg-t: #bdae93; --gb-fg-f: #a89984; --gb-red: #fb4934; --gb-green: #b8bb26; --gb-yellow: #fabd2f; --gb-blue: #83a598; --gb-purple: #d3869b; --gb-aqua: #8ec07c; --gb-orange: #fe8019; --gb-gray: #928374; --gb-border: #665c54; } [data-theme="gruvbox-light"] { --gb-bg-h: #f9f5d7; --gb-bg: #fbf1c7; --gb-bg-s: #ebdbb2; --gb-bg-t: #d5c4a1; --gb-bg-f: #bdae93; --gb-fg: #282828; --gb-fg-s: #3c3836; --gb-fg-t: #504945; --gb-fg-f: #7c6f64; --gb-red: #9d0006; --gb-green: #79740e; --gb-yellow: #b57614; --gb-blue: #076678; --gb-purple: #8f3f71; --gb-aqua: #427b58; --gb-orange: #af3a03; --gb-gray: #928374; --gb-border: #a89984; } /* Atom / VS Code One Dark Pro */ [data-theme="one-dark"] { --gb-bg-h: #1e2127; --gb-bg: #282c34; --gb-bg-s: #21252b; --gb-bg-t: #3e4451; --gb-bg-f: #2c313a; --gb-fg: #abb2bf; --gb-fg-s: #9da5b4; --gb-fg-t: #828997; --gb-fg-f: #5c6370; --gb-red: #e06c75; --gb-green: #98c379; --gb-yellow: #e5c07b; --gb-blue: #61afef; --gb-purple: #c678dd; --gb-aqua: #56b6c2; --gb-orange: #d19a66; --gb-gray: #5c6370; --gb-border: #3e4451; } [data-theme="dracula"] { --gb-bg-h: #191a21; --gb-bg: #282a36; --gb-bg-s: #21222c; --gb-bg-t: #44475a; --gb-bg-f: #343746; --gb-fg: #f8f8f2; --gb-fg-s: #e2e2dc; --gb-fg-t: #cfcfc2; --gb-fg-f: #6272a4; --gb-red: #ff5555; --gb-green: #50fa7b; --gb-yellow: #f1fa8c; --gb-blue: #8be9fd; --gb-purple: #bd93f9; --gb-aqua: #8be9fd; --gb-orange: #ffb86c; --gb-gray: #6272a4; --gb-border: #44475a; } [data-theme="nord"] { --gb-bg-h: #242933; --gb-bg: #2e3440; --gb-bg-s: #3b4252; --gb-bg-t: #434c5e; --gb-bg-f: #3b4252; --gb-fg: #d8dee9; --gb-fg-s: #e5e9f0; --gb-fg-t: #eceff4; --gb-fg-f: #4c566a; --gb-red: #bf616a; --gb-green: #a3be8c; --gb-yellow: #ebcb8b; --gb-blue: #81a1c1; --gb-purple: #b48ead; --gb-aqua: #88c0d0; --gb-orange: #d08770; --gb-gray: #616e88; --gb-border: #4c566a; } [data-theme="tokyo-night"] { --gb-bg-h: #0f0f14; --gb-bg: #1a1b26; --gb-bg-s: #16161e; --gb-bg-t: #292e42; --gb-bg-f: #1f2335; --gb-fg: #c0caf5; --gb-fg-s: #a9b1d6; --gb-fg-t: #9aa5ce; --gb-fg-f: #565f89; --gb-red: #f7768e; --gb-green: #9ece6a; --gb-yellow: #e0af68; --gb-blue: #7aa2f7; --gb-purple: #bb9af7; --gb-aqua: #7dcfff; --gb-orange: #ff9e64; --gb-gray: #565f89; --gb-border: #292e42; } [data-theme="catppuccin"] { --gb-bg-h: #11111b; --gb-bg: #1e1e2e; --gb-bg-s: #181825; --gb-bg-t: #313244; --gb-bg-f: #24273a; --gb-fg: #cdd6f4; --gb-fg-s: #bac2de; --gb-fg-t: #a6adc8; --gb-fg-f: #6c7086; --gb-red: #f38ba8; --gb-green: #a6e3a1; --gb-yellow: #f9e2af; --gb-blue: #89b4fa; --gb-purple: #cba6f7; --gb-aqua: #94e2d5; --gb-orange: #fab387; --gb-gray: #6c7086; --gb-border: #313244; } [data-theme="solarized-dark"] { --gb-bg-h: #001f27; --gb-bg: #002b36; --gb-bg-s: #073642; --gb-bg-t: #094959; --gb-bg-f: #073642; --gb-fg: #839496; --gb-fg-s: #93a1a1; --gb-fg-t: #eee8d5; --gb-fg-f: #657b83; --gb-red: #dc322f; --gb-green: #859900; --gb-yellow: #b58900; --gb-blue: #268bd2; --gb-purple: #d33682; --gb-aqua: #2aa198; --gb-orange: #cb4b16; --gb-gray: #586e75; --gb-border: #586e75; } [data-theme="monokai"] { --gb-bg-h: #1a1b16; --gb-bg: #272822; --gb-bg-s: #1e1f1c; --gb-bg-t: #3e3d32; --gb-bg-f: #2d2e27; --gb-fg: #f8f8f2; --gb-fg-s: #e6e6e0; --gb-fg-t: #cfcfc2; --gb-fg-f: #75715e; --gb-red: #f92672; --gb-green: #a6e22e; --gb-yellow: #e6db74; --gb-blue: #66d9ef; --gb-purple: #ae81ff; --gb-aqua: #a1efe4; --gb-orange: #fd971f; --gb-gray: #75715e; --gb-border: #49483e; } /* VS Code / GitHub Dark default-ish */ [data-theme="github-dark"] { --gb-bg-h: #010409; --gb-bg: #0d1117; --gb-bg-s: #161b22; --gb-bg-t: #30363d; --gb-bg-f: #21262d; --gb-fg: #e6edf3; --gb-fg-s: #c9d1d9; --gb-fg-t: #8b949e; --gb-fg-f: #6e7681; --gb-red: #f85149; --gb-green: #3fb950; --gb-yellow: #d29922; --gb-blue: #58a6ff; --gb-purple: #bc8cff; --gb-aqua: #39c5cf; --gb-orange: #db6d28; --gb-gray: #8b949e; --gb-border: #30363d; } html, body, #root { @apply h-full w-full bg-gb-bg text-gb-fg font-mono; font-size: 14px; line-height: 1.4; } /* ponytail: safe-area env() can't go in @apply, handle in Layout.tsx inline styles */ * { box-sizing: border-box; } *::-webkit-scrollbar { width: 6px; height: 6px; } *::-webkit-scrollbar-track { background: var(--gb-bg); } *::-webkit-scrollbar-thumb { background: var(--gb-bg-t); border-radius: 3px; } *::-webkit-scrollbar-thumb:hover { background: var(--gb-fg-f); } input, textarea, button { @apply bg-gb-bg-s text-gb-fg font-mono border outline-none; border-color: var(--gb-border); } input:focus, textarea:focus, button:focus { @apply border-gb-fg-t; } } @layer components { .terminal-border { border-style: solid; border-color: var(--gb-border); border-width: 1px; } .terminal-button { @apply px-2 py-1 bg-gb-bg-s text-gb-fg border hover:bg-gb-bg-t hover:text-gb-orange transition-colors; border-color: var(--gb-border); } .terminal-input { @apply px-2 py-1 bg-gb-bg-s text-gb-fg border w-full; border-color: var(--gb-border); } .terminal-active { @apply text-gb-orange bg-gb-bg-t; } .terminal-mention { background-color: color-mix(in srgb, var(--gb-aqua) 12%, transparent); color: var(--gb-aqua); } }