8871a3f36f
- Rewrite landing page copy to focus on user needs: agent controlling your browser, low context usage, unrestricted capabilities, collaboration - Add Collaboration section (captchas, consent walls, getting agent unstuck) - Replace HTML entities (— ' –) with JS string expressions - Add width/height to screenshot image to prevent layout shift - Add no-layout-shift requirement to AGENTS.md
65 lines
2.2 KiB
Markdown
65 lines
2.2 KiB
Markdown
# Website
|
|
|
|
## Tailwind dark mode
|
|
|
|
Dark mode uses `prefers-color-scheme` media query, configured in `globals.css`:
|
|
|
|
```css
|
|
@custom-variant dark (@media (prefers-color-scheme: dark));
|
|
```
|
|
|
|
### `@variant dark` rules
|
|
|
|
1. **Must be nested inside a selector**, never at the top level:
|
|
|
|
```css
|
|
/* WRONG - silently produces no output */
|
|
@variant dark {
|
|
.my-class { color: white; }
|
|
}
|
|
|
|
/* CORRECT - nest inside the selector */
|
|
.my-class {
|
|
@variant dark {
|
|
color: white;
|
|
}
|
|
}
|
|
|
|
/* CORRECT - define variables inside :root */
|
|
:root {
|
|
@variant dark {
|
|
--my-var: white;
|
|
}
|
|
}
|
|
```
|
|
|
|
2. **Only works in CSS files that are part of the Tailwind compilation chain.** Files must be imported via CSS `@import` from `globals.css` (which has `@import "tailwindcss"`). JS/TS `import "file.css"` in route files does NOT go through Tailwind — `@variant dark` will silently fail.
|
|
|
|
```css
|
|
/* globals.css — this is the Tailwind entry point */
|
|
@import "tailwindcss";
|
|
@import "./editorial.css"; /* editorial page styles (class names, layout) */
|
|
@import "./editorial-prism.css"; /* prism syntax highlighting */
|
|
@custom-variant dark (@media (prefers-color-scheme: dark));
|
|
```
|
|
|
|
If you create a new CSS file that needs `@variant dark`, add it as a CSS `@import` in `globals.css`. Do NOT import it from a `.tsx` file.
|
|
|
|
### For many dark overrides, use CSS variables on `:root`
|
|
|
|
For files with many dark mode selectors (like prism syntax colors), define CSS variables in `:root { @variant dark { ... } }` and reference them in selectors. This avoids repeating `@variant dark` in every rule.
|
|
|
|
## Images must not cause layout shift
|
|
|
|
Every `<img>` must have explicit `width` and `height` attributes matching the intrinsic pixel dimensions of the source file. Add `style={{ height: "auto" }}` to keep it responsive. This lets the browser reserve the correct aspect ratio space before the image loads, preventing layout shift.
|
|
|
|
```tsx
|
|
<img src="/photo.png" width={1280} height={800} style={{ maxWidth: "100%", height: "auto" }} />
|
|
```
|
|
|
|
Use `sips -g pixelWidth -g pixelHeight <file>` to get dimensions on macOS.
|
|
|
|
## No localStorage dark mode toggle
|
|
|
|
There is no JS-based `.dark` class toggle. Do not add inline scripts to toggle `.dark` on `<html>`. The site follows the OS preference only via `prefers-color-scheme`.
|