@tailwind base; @tailwind components; @tailwind utilities; :root { /* Light — clean neutral paper */ --bg: #fbfbfa; --surface: #ffffff; --surface-2: #f4f4f5; --ink: #18181b; --muted: #71717a; --line: #e9e9eb; --ring: #d4d4d8; --accent: #2563eb; --accent-soft: rgba(37, 99, 235, 0.1); --accent-ink: #ffffff; } .dark { /* Dark — near-black */ --bg: #09090b; --surface: #111113; --surface-2: #19191c; --ink: #fafafa; --muted: #a1a1aa; --line: #232327; --ring: #2e2e33; --accent: #60a5fa; --accent-soft: rgba(96, 165, 250, 0.14); --accent-ink: #09090b; } * { -webkit-tap-highlight-color: transparent; } html { scroll-behavior: smooth; } body { margin: 0; background-color: var(--bg); color: var(--ink); font-family: "Inter", ui-sans-serif, system-ui, sans-serif; -webkit-font-smoothing: antialiased; text-rendering: optimizeLegibility; min-height: 100vh; transition: background-color 0.3s ease, color 0.3s ease; } /* Semantic token utilities (kept stable so components stay theme-driven) */ .bg-surface { background-color: var(--surface); } .bg-surface-2 { background-color: var(--surface-2); } .text-ink { color: var(--ink); } .text-muted { color: var(--muted); } .border-line { border-color: var(--line); } .bg-accent { background-color: var(--accent); } .text-accent { color: var(--accent); } .text-accent-ink { color: var(--accent-ink); } .card { background-color: var(--surface); border: 1px solid var(--line); border-radius: 1rem; } ::selection { background: var(--accent); color: var(--accent-ink); } ::-webkit-scrollbar { width: 10px; height: 10px; } ::-webkit-scrollbar-track { background: transparent; } ::-webkit-scrollbar-thumb { background: var(--line); border-radius: 99px; border: 3px solid var(--bg); } ::-webkit-scrollbar-thumb:hover { background: var(--ring); } /* Focus ring — single subtle accent ring */ .focusable:focus-visible { outline: none; box-shadow: 0 0 0 2px var(--bg), 0 0 0 4px var(--accent); }