@import "tailwindcss"; @plugin "@tailwindcss/typography"; @plugin "tailwindcss-animate"; @custom-variant dark (&:is(.dark *, .dark)); @theme { --color-bg: #ffffff; --color-fg: #171717; --color-muted: #666666; --color-border: #eaeaea; --color-surface: #ffffff; --color-surface-muted: #fafafa; --color-accent: #000000; --color-accent-fg: #ffffff; --color-blue: #0070f3; --color-blue-hover: #0060df; --color-success: #0070f3; --color-danger: #ee0000; --color-danger-bg: #fff0f0; --color-code-bg: #f5f5f5; --color-code-fg: #171717; --font-sans: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif; --font-mono: "SFMono-Regular", Consolas, "Liberation Mono", Menlo, Courier, monospace; --container-content: 72rem; --shadow-card: 0 4px 14px 0 rgb(0 0 0 / 0.1); --shadow-soft: 0 2px 8px rgb(0 0 0 / 0.08); } .dark { --color-bg: #000000; --color-fg: #ededed; --color-muted: #888888; --color-border: #333333; --color-surface: #111111; --color-surface-muted: #0a0a0a; --color-accent: #ffffff; --color-accent-fg: #000000; --color-blue: #3291ff; --color-blue-hover: #52a9ff; --color-danger: #ff4444; --color-danger-bg: #2a0000; --color-code-bg: #111111; --color-code-fg: #ededed; --shadow-card: 0 4px 14px 0 rgb(0 0 0 / 0.25); --shadow-soft: 0 2px 8px rgb(0 0 0 / 0.2); } :root { color-scheme: light; } .dark { color-scheme: dark; } html { background: var(--color-bg); color: var(--color-fg); font-family: var(--font-sans); -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; text-rendering: optimizeLegibility; } body { margin: 0; min-height: 100vh; } ::selection { background: color-mix(in srgb, var(--color-blue) 25%, transparent); } /* ─── Shiki (rehype-pretty-code) ───────────────────── */ [data-rehype-pretty-code-figure] { margin: 1.5rem 0; } [data-rehype-pretty-code-figure] pre { overflow-x: auto; padding: 1rem; border: 1px solid var(--color-border); border-radius: 0.5rem; background: var(--color-code-bg); font-size: 0.8125rem; line-height: 1.6; } [data-rehype-pretty-code-figure] pre > code { display: grid; background: transparent; padding: 0; border: 0; font-size: inherit; color: inherit; } [data-rehype-pretty-code-figure] pre > code [data-line] { padding: 0 0.25rem; } [data-rehype-pretty-code-title] { padding: 0.5rem 1rem; font-size: 0.75rem; font-family: var(--font-mono); color: var(--color-muted); background: var(--color-surface); border: 1px solid var(--color-border); border-bottom: 0; border-radius: 0.5rem 0.5rem 0 0; } [data-rehype-pretty-code-title] + pre { border-top-left-radius: 0; border-top-right-radius: 0; } .prose :where(h1, h2, h3, h4, h5, h6) a, .prose :where(h1, h2, h3, h4, h5, h6) a:hover { color: inherit; font-weight: inherit; text-decoration: none; } [data-rehype-pretty-code-figure] [data-theme] code { color: inherit; background-color: transparent; } [data-rehype-pretty-code-figure] span { color: var(--shiki-light); } .dark [data-rehype-pretty-code-figure] span { color: var(--shiki-dark); } /* ─── Inline syntax highlight (home page) ──────────── */ .hl-comment { color: #6b7280; font-style: italic; } .hl-string { color: #067a6e; } .hl-keyword { color: #d6409f; } .hl-type { color: #0070c0; } .hl-function { color: #6f42c1; } .hl-number { color: #0070c0; } .hl-variable { color: var(--color-fg); } .hl-id { color: #6f42c1; } .hl-key { color: #d6409f; } .hl-boolean { color: #0070c0; } .hl-punctuation { color: var(--color-fg); } .hl-operator { color: #d6409f; } .dark .hl-comment { color: #a1a1a1; } .dark .hl-string { color: #00ca50; } .dark .hl-keyword { color: #ff4d8d; } .dark .hl-type { color: #c472fb; } .dark .hl-function { color: #c472fb; } .dark .hl-number { color: #47a8ff; } .dark .hl-variable { color: #47a8ff; } .dark .hl-id { color: #c472fb; } .dark .hl-key { color: #ff4d8d; } .dark .hl-boolean { color: #47a8ff; } .dark .hl-punctuation { color: #ededed; } .dark .hl-operator { color: #ff4d8d; } .hl-bash-function { color: var(--color-fg); font-weight: 600; } .hl-bash-key { color: #0070f3; } .hl-bash-string { color: #067a6e; } .hl-bash-keyword { color: #d6409f; } .hl-bash-variable { color: #6f42c1; } .hl-bash-operator, .hl-bash-punctuation { color: var(--color-muted); } .hl-bash-number { color: var(--color-fg); } .dark .hl-bash-function { color: #ffffff; } .dark .hl-bash-key { color: #52a9ff; } .dark .hl-bash-string { color: #00ca50; } .dark .hl-bash-keyword { color: #ff4d8d; } .dark .hl-bash-variable { color: #c472fb; } .dark .hl-bash-operator, .dark .hl-bash-punctuation { color: #888888; } .dark .hl-bash-number { color: #ffffff; } /* ─── Home chat motion ────────────────────────────── */ @keyframes home-chat-reveal { from { opacity: 0; transform: translateY(0.875rem) scale(0.985); } to { opacity: 1; transform: translateY(0) scale(1); } } @keyframes home-command-sheen { 0% { opacity: 0; transform: translateX(-120%); } 28% { opacity: 0.18; } 100% { opacity: 0; transform: translateX(120%); } } .home-chat-shell { transform-origin: center top; } .home-chat-code { background: color-mix(in srgb, var(--color-fg) 9%, var(--color-bg)); border: 1px solid color-mix(in srgb, var(--color-fg) 14%, transparent); border-radius: 0.375rem; color: var(--color-fg); font-family: var(--font-mono); font-size: 0.78125rem; padding: 0.125rem 0.45rem; } .home-chat-reveal, .home-tool-row { opacity: 0; transform: translateY(0.875rem) scale(0.985); will-change: opacity, transform; } .home-chat-viewport[data-chat-visible="true"] .home-chat-reveal, .home-chat-viewport[data-chat-visible="true"] .home-tool-row { animation: home-chat-reveal 620ms cubic-bezier(0.16, 1, 0.3, 1) forwards; animation-delay: var(--chat-delay, 0ms); } .home-tool-row { position: relative; } .home-tool-row::after { opacity: 0; } .home-chat-viewport[data-chat-visible="true"] .home-tool-row::after { animation: home-command-sheen 1150ms ease-out forwards; animation-delay: calc(var(--chat-delay, 0ms) + 140ms); background: linear-gradient( 90deg, transparent, color-mix(in srgb, var(--color-fg) 18%, transparent), transparent ); content: ""; inset: 0; pointer-events: none; position: absolute; transform: translateX(-120%); } @media (prefers-reduced-motion: reduce) { .home-chat-reveal, .home-tool-row { animation: none; opacity: 1; transform: none; } .home-tool-row::after { animation: none; content: none; } } /* ─── Prose adjustments ────────────────────────────── */ .prose pre { background: var(--color-code-bg) !important; color: var(--color-code-fg) !important; } .prose :where(code):not(:where([class~="not-prose"] *)) { background: var(--color-surface-muted); border: 1px solid var(--color-border); border-radius: 0.25rem; padding: 0.15rem 0.4rem; font-weight: 400; } .prose :where(code):not(:where([class~="not-prose"] *))::before, .prose :where(code):not(:where([class~="not-prose"] *))::after { content: none; } .prose :where(pre code):not(:where([class~="not-prose"] *)) { background: transparent; border: 0; padding: 0; }