feat: plakat redesign phase 1 (tokens, fonts, poster hero, header) (#74)

- New design tokens: signal red, ink and paper as RGB channels; ink and paper
  swap roles in dark mode so every component inverts cleanly
- Fonts via next/font: Bricolage Grotesque (with wdth/opsz axes), Geist,
  Geist Mono; drop Inter and Playfair
- Poster hero: kicker, giant DK0 wordmark that reacts to pointer distance
  (weight and width through a damped spring, desktop only, off for reduced
  motion), claim as h1, intro with thesis countdown, marquee strip
- Header in poster style: transparent over the red hero, paper strip with
  ink rule when scrolled or on subpages; drawer menu restyled
- Remove wavy SVG separators, CSS shader gradient, background blobs and
  unused providers that caused the pink/purple bands between sections
- Drop the global p/span/div color override so colors inherit properly
- New hero texts in de/en, tests and i18n key check updated

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
denshooter
2026-10-15 23:48:39 +02:00
committed by GitHub
parent 02914d6145
commit 96ec2d867f
19 changed files with 355 additions and 584 deletions
-25
View File
@@ -2,7 +2,6 @@ import { getLocalizedMessage } from '@/lib/i18n-loader';
import type {
NavTranslations,
FooterTranslations,
HeroTranslations,
AboutTranslations,
ProjectsTranslations,
ContactTranslations,
@@ -55,30 +54,6 @@ export async function getFooterTranslations(locale: string): Promise<FooterTrans
};
}
export async function getHeroTranslations(locale: string): Promise<HeroTranslations> {
const keys = [
'home.hero.description',
'home.hero.ctaWork',
'home.hero.ctaContact',
'home.hero.features.f1',
'home.hero.features.f2',
'home.hero.features.f3',
];
const values = await Promise.all(keys.map(key => getLocalizedMessage(key, locale)));
return {
description: values[0],
ctaWork: values[1],
ctaContact: values[2],
features: {
f1: values[3],
f2: values[4],
f3: values[5],
},
};
}
export async function getAboutTranslations(locale: string): Promise<AboutTranslations> {
const keys = [
'home.about.title',