45 lines
2.5 KiB
Markdown
45 lines
2.5 KiB
Markdown
<!-- BEGIN:nextjs-agent-rules -->
|
||
|
||
# This is NOT the Next.js you know
|
||
|
||
This version has breaking changes — APIs, conventions, and file structure may all differ from your training data. Read the relevant guide in `node_modules/next/dist/docs/` (resolved from this file's directory; in monorepos the `next` package may not be visible from the repo root) before writing any code. Heed deprecation notices.
|
||
|
||
This block is written and re-added by `next dev` — verify at `node_modules/next/dist/server/lib/generate-agent-files.js`. Removing it from a diff only re-creates the uncommitted change; committing it with your work keeps the tree clean.
|
||
|
||
<!-- END:nextjs-agent-rules -->
|
||
|
||
# Anelia Wolf – Projektregeln
|
||
|
||
Dieser Abschnitt steht bewusst UNTER dem generierten Block oben (`next dev`
|
||
schreibt den Block neu, dieser Teil bleibt).
|
||
|
||
## Harte Regeln
|
||
|
||
- `src/components/brand/WolfMark.tsx` wird **nie** bearbeitet.
|
||
- Kein `localStorage`, kein `sessionStorage`, keine Cookies.
|
||
- Keine externen Requests, Skripte, Schriften oder iframes – die
|
||
Datenschutzerklärung sagt das zu (`src/content/legal.ts`, Ziffer 2/3/6).
|
||
- Radius 0, keine Schatten, kein Fettdruck.
|
||
- Playfair Display (`font-display`) nie unter 28 px. Unter `lg` weicht Text auf
|
||
`font-sans` (Source Sans 3) aus, statt die Display-Schrift zu verkleinern.
|
||
- Betonungswort einer Headline: genau ein `<em>`. Kursiv, und auf `data-theme="dark"`
|
||
zusätzlich golden – das macht eine Regel in `globals.css`, nicht die Komponente.
|
||
Auf hellem Grund bleibt es rein typografisch (Gold-Verlauf auf Elfenbein = 2,4:1).
|
||
- Goldene Schrift nur auf `[data-theme="dark"]`; auf Ivory gilt `--gold-deep`.
|
||
- Sichtbare Copy lebt ausschließlich in `src/content/*.ts`, nie im JSX.
|
||
|
||
## Konventionen
|
||
|
||
- Jeder Top-Level-Block malt seinen eigenen Grund (`data-theme` + Regel in
|
||
`globals.css`); die Naht zwischen zwei Gründen ist die goldene Haarlinie.
|
||
- Scroll-Reveals animieren **nur** `opacity` (+ `y`) – nie `autoAlpha` oder
|
||
`visibility`, sonst fallen Links aus der Tab-Reihenfolge.
|
||
- Alle Animationen laufen über `gsap.matchMedia` mit `MM.reduce`/`MM.ok`;
|
||
GSAP ist die einzige Animations-Runtime im Bundle.
|
||
- Ein Ankersprung nutzt genau einen Offset: `anchorOffset()` in
|
||
`TransitionLink.tsx` bzw. `scroll-margin-top` in `globals.css`.
|
||
- `ScrollTrigger.refresh()` nur über `refreshSoon()` aus `@/lib/gsap`.
|
||
- Jede `<section>` braucht eine Überschrift (notfalls das Eyebrow als `<h2>`).
|
||
- Platzhalter immer über `ph()`; der Build-Guard in `src/lib/legal.ts` stoppt
|
||
den Launch-Flip, solange irgendwo noch ein „[…]“ steht.
|