@tailwind base; @tailwind components; @tailwind utilities; @import "./theme.css"; /* ---- Base ---------------------------------------------------------------- */ *, *::before, *::after { box-sizing: border-box; } html, body, #root { height: 100%; } html { -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; text-rendering: optimizeLegibility; } body { margin: 0; background: var(--bg); color: var(--ink); font-family: "Geist", system-ui, sans-serif; font-weight: 400; font-feature-settings: "ss01", "ss02", "cv11"; transition: background 500ms cubic-bezier(0.16, 1, 0.3, 1), color 500ms cubic-bezier(0.16, 1, 0.3, 1); } ::selection { background: var(--accent); color: var(--surface); } /* Editorial paper grain — the whole point of the aesthetic. Overlaid on the entire document at low opacity. Uses SVG feTurbulence for zero-request grain. */ body::before { content: ""; position: fixed; inset: 0; pointer-events: none; z-index: 100; opacity: var(--grain); mix-blend-mode: multiply; background-image: url("data:image/svg+xml;utf8,"); background-size: 240px 240px; } [data-theme="dark"] body::before { mix-blend-mode: screen; background-image: url("data:image/svg+xml;utf8,"); } /* ---- Type utilities ----------------------------------------------------- */ .font-display { font-family: "Instrument Serif", serif; font-weight: 400; letter-spacing: -0.015em; line-height: 0.92; } .font-display-italic { font-family: "Instrument Serif", serif; font-style: italic; font-weight: 400; letter-spacing: -0.02em; line-height: 0.92; } .font-mono { font-family: "JetBrains Mono", ui-monospace, monospace; font-feature-settings: "calt", "liga", "ss01"; } /* Small caps + tracking for section labels — the "chapter marker" of the site */ .eyebrow { font-family: "Geist", system-ui, sans-serif; font-size: 11px; font-weight: 500; letter-spacing: 0.18em; text-transform: uppercase; color: var(--ink-mute); } /* ---- Focus rings — replaced with editorial underline ------------------- */ :focus-visible { outline: 2px solid var(--focus); outline-offset: 3px; border-radius: 2px; } /* Hide the default focus on decorative elements */ button:focus, a:focus { outline: none; } button:focus-visible, a:focus-visible { outline: 2px solid var(--focus); outline-offset: 3px; } /* ---- Custom cursor — soft ink dot on interactive elements -------------- */ .cursor-ink { cursor: none; } /* ---- Scrollbar --------------------------------------------------------- */ ::-webkit-scrollbar { width: 10px; height: 10px; } ::-webkit-scrollbar-track { background: transparent; } ::-webkit-scrollbar-thumb { background: var(--rule); border-radius: 6px; } ::-webkit-scrollbar-thumb:hover { background: var(--ink-mute); } /* ---- Motion — respect user preference ---------------------------------- */ @media (prefers-reduced-motion: reduce) { *, *::before, *::after { animation-duration: 0.001ms !important; animation-iteration-count: 1 !important; transition-duration: 0.001ms !important; } }