first publish

This commit is contained in:
2026-09-06 17:21:52 +02:00
commit b8e41b4d55
147 changed files with 19367 additions and 0 deletions

44
AGENTS.md Normal file
View File

@@ -0,0 +1,44 @@
<!-- 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.