@import "tailwindcss"; @custom-variant dark (&:where(.dark, .dark *)); @theme { --font-sans: "Inter", ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; --font-mono: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; --color-bg: var(--bg); --color-bg-subtle: var(--bg-subtle); --color-bg-muted: var(--bg-muted); --color-bg-elevated: var(--bg-elevated); --color-fg: var(--fg); --color-fg-muted: var(--fg-muted); --color-fg-subtle: var(--fg-subtle); --color-border: var(--border); --color-border-strong: var(--border-strong); --color-accent: var(--accent); --color-accent-fg: var(--accent-fg); --color-accent-soft: var(--accent-soft); --color-success: var(--success); --color-success-soft: var(--success-soft); --color-warning: var(--warning); --color-warning-soft: var(--warning-soft); --color-danger: var(--danger); --color-danger-soft: var(--danger-soft); --color-info: var(--info); --color-info-soft: var(--info-soft); --color-ring: var(--accent); --radius-sm: 4px; --radius-md: 6px; --radius-lg: 10px; --radius-xl: 14px; --shadow-xs: 0 1px 2px rgb(15 23 42 / 0.05); --shadow-sm: 0 1px 3px rgb(15 23 42 / 0.08), 0 1px 2px rgb(15 23 42 / 0.04); --shadow-md: 0 4px 12px rgb(15 23 42 / 0.08), 0 1px 3px rgb(15 23 42 / 0.05); --shadow-lg: 0 12px 32px rgb(15 23 42 / 0.12), 0 2px 6px rgb(15 23 42 / 0.06); --animate-fade-in: fade-in 0.25s ease-out both; --animate-fade-up: fade-up 0.4s cubic-bezier(0.16, 1, 0.3, 1) both; --animate-pulse-soft: pulse-soft 2s ease-in-out infinite; --animate-flow: flow 3s linear infinite; @keyframes fade-in { from { opacity: 0; } to { opacity: 1; } } @keyframes fade-up { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: translateY(0); } } @keyframes pulse-soft { 0%, 100% { opacity: 1; } 50% { opacity: 0.45; } } @keyframes flow { from { stroke-dashoffset: 24; } to { stroke-dashoffset: 0; } } } :root { color-scheme: light; --bg: #ffffff; --bg-subtle: #f7f8fa; --bg-muted: #eef0f3; --bg-elevated: #ffffff; --fg: #0b0f19; --fg-muted: #4b5563; --fg-subtle: #8a93a3; --border: #e4e7ec; --border-strong: #c9cfd8; --accent: #1f5eff; --accent-fg: #ffffff; --accent-soft: #e8efff; --success: #158a4c; --success-soft: #e3f5ea; --warning: #b7791f; --warning-soft: #fbf1dc; --danger: #c93b3b; --danger-soft: #fbe6e6; --info: #2461c7; --info-soft: #e6eefb; } .dark { color-scheme: dark; --bg: #0a0d14; --bg-subtle: #0f131c; --bg-muted: #161b26; --bg-elevated: #121721; --fg: #eef1f6; --fg-muted: #a6afbf; --fg-subtle: #6b7484; --border: #1f2633; --border-strong: #2e3746; --accent: #5b8cff; --accent-fg: #061029; --accent-soft: #14213f; --success: #3ccb7f; --success-soft: #10291c; --warning: #e0a94a; --warning-soft: #2b2312; --danger: #f06b6b; --danger-soft: #331717; --info: #6fa2ff; --info-soft: #14213f; } @layer base { * { border-color: var(--border); } html { -webkit-text-size-adjust: 100%; text-rendering: optimizeLegibility; font-feature-settings: "cv11", "ss01", "calt"; } body { @apply bg-bg text-fg font-sans antialiased; font-size: 15px; line-height: 1.55; } ::selection { background: color-mix(in oklab, var(--accent) 25%, transparent); } :focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; border-radius: 4px; } h1, h2, h3, h4 { letter-spacing: -0.02em; text-wrap: balance; } code, kbd, pre, samp { @apply font-mono; font-size: 0.92em; } input, textarea, select, button { font: inherit; } input::placeholder, textarea::placeholder { color: var(--fg-subtle); } @media (prefers-reduced-motion: reduce) { *, *::before, *::after { animation-duration: 0.001ms !important; animation-iteration-count: 1 !important; transition-duration: 0.001ms !important; scroll-behavior: auto !important; } } } @layer utilities { .container-page { @apply mx-auto w-full max-w-6xl px-5 sm:px-8; } .text-balance { text-wrap: balance; } .tabular { font-variant-numeric: tabular-nums; } .grid-bg { background-image: linear-gradient(to right, color-mix(in oklab, var(--border) 60%, transparent) 1px, transparent 1px), linear-gradient(to bottom, color-mix(in oklab, var(--border) 60%, transparent) 1px, transparent 1px); background-size: 32px 32px; mask-image: radial-gradient(ellipse at center, black 40%, transparent 80%); } .scrollbar-thin { scrollbar-width: thin; scrollbar-color: var(--border-strong) transparent; } .no-scrollbar::-webkit-scrollbar { display: none; } .no-scrollbar { -ms-overflow-style: none; scrollbar-width: none; } } /* Syntax highlighting (lightweight, used by CodeBlock) */ .tok-k { color: #7c3aed; } .tok-s { color: #0f766e; } .tok-n { color: #b45309; } .tok-c { color: var(--fg-subtle); font-style: italic; } .tok-p { color: var(--fg-muted); } .tok-t { color: #be185d; } .tok-a { color: #1d4ed8; } .dark .tok-k { color: #c4b5fd; } .dark .tok-s { color: #6ee7b7; } .dark .tok-n { color: #fcd34d; } .dark .tok-t { color: #f9a8d4; } .dark .tok-a { color: #93c5fd; }