@import "tailwindcss"; @theme { --default-transition-duration: 75ms; --font-sans: "Hanken Grotesk", ui-sans-serif, system-ui, -apple-system, sans-serif; --font-mono: "JetBrains Mono", "SF Mono", "Fira Code", monospace; /* Warm zinc overrides */ --color-zinc-50: #fafaf9; --color-zinc-100: #f5f4f4; --color-zinc-200: #e5e4e5; --color-zinc-300: #d6d4d7; --color-zinc-400: #a3a1a8; --color-zinc-500: #747178; --color-zinc-600: #555259; --color-zinc-700: #423f42; --color-zinc-800: #2a2729; --color-zinc-900: #1b181a; --color-zinc-950: #0c090b; /* Dusty rose accent palette */ --color-accent-50: #fdf4f5; --color-accent-100: #fbe7ea; --color-accent-200: #f5cdd3; --color-accent-300: #eeadb7; --color-accent-400: #df8691; --color-accent-500: #c96f7a; --color-accent-600: #a85a65; --color-accent-700: #8c4750; --color-accent-800: #743c43; --color-accent-900: #613338; /* Lifted warm canvas background */ --color-canvas: #221f21; --animate-fade-in: fade-in 0.4s ease-out both; --animate-slide-up: slide-up 0.35s ease-out both; --animate-scale-fade: scale-fade 0.3s cubic-bezier(0.16, 1, 0.3, 1) both; --animate-shimmer: shimmer 1.5s ease-in-out infinite; --animate-spinner: spinner 0.8s linear infinite; } @keyframes fade-in { from { opacity: 0; } to { opacity: 1; } } @keyframes slide-up { from { opacity: 0; transform: translateY(12px); } to { opacity: 1; transform: translateY(0); } } @keyframes scale-fade { from { opacity: 0; transform: scale(0.96); } to { opacity: 1; transform: scale(1); } } @keyframes shimmer { from { background-position: -200% 0; } to { background-position: 200% 0; } } @keyframes spinner { to { transform: rotate(360deg); } } html { color-scheme: dark; } html, body { min-height: 100vh; } body { @apply bg-canvas text-zinc-100 antialiased; font-weight: 450; } #root { min-height: 100vh; } button:not(:disabled), select, summary, [role="button"] { cursor: pointer; } *:focus-visible { @apply outline-none ring-2 ring-accent-500/50 ring-offset-2 ring-offset-canvas; } ::selection { @apply bg-accent-500/[0.28] text-accent-50; } /* Scope scrollbar styling to scrollable containers */ body, .overflow-y-auto, .overflow-auto { scrollbar-width: thin; scrollbar-color: theme(--color-zinc-700) transparent; } @media (prefers-reduced-motion: reduce) { *, *::before, *::after { animation-duration: 0.01ms !important; animation-iteration-count: 1 !important; transition-duration: 0.01ms !important; scroll-behavior: auto !important; } } /* ghostty-web terminal overrides */ .terminal-pane { caret-color: transparent; cursor: default; } .terminal-pane canvas { cursor: text; } .terminal-pane *:focus { outline: none; caret-color: transparent; } /* Suppress focus-visible ring inside terminal (ghostty manages its own focus) */ .terminal-pane *:focus-visible { outline: none; box-shadow: none; --tw-ring-shadow: none; }