polish(nika): фикс design-tokens, SEO-метаданные, favicon

- tailwind: восстановлены токены paper/accent/muted (их используют
  все компоненты — незакоммиченный оверхол их удалял → ломало палитру);
  serif/display указывают на реально загруженные next/font (Cormorant/Inter),
  а не на несуществующий --font-serif/Space Grotesk/Manrope;
  muted возвращён к #6b6b6b (WCAG-AA на белом). Новые токены gold/bg/graphite/
  радиусы/тени оставлены аддитивно.
- layout: metadataBase + canonical + OG url/siteName + twitter card (SEO/OG).
- 404: metadata title + robots noindex.
- app/icon.png: favicon (Next app-icon).

Сборка/типы: next build + tsc --noEmit — зелёные.
Бот-адаптер /api/bot/* и Яндекс-redirect не трогались (соответствуют SPEC).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
german
2026-08-06 05:14:33 +03:00
co-authored by Claude Opus 4.8
parent 3f1c5dbd7b
commit c6b26a93d8
5 changed files with 1489 additions and 9 deletions
+48 -9
View File
@@ -1,5 +1,10 @@
import type { Config } from 'tailwindcss';
// NIKA ART — премиум design-system.
// Палитра: bg #F7F7F5 / #FAFAFA · ink #111 · gold #C8A55A · graphite #444.
// Токены paper/accent/muted оставлены (back-compat) — их используют текущие
// компоненты; новые gold/bg/graphite аддитивны. Шрифты грузятся в layout.tsx
// как next/font: --font-display = Cormorant Garamond, --font-body = Inter.
const config: Config = {
content: [
'./app/**/*.{ts,tsx}',
@@ -10,26 +15,60 @@ const config: Config = {
theme: {
extend: {
fontFamily: {
// подключается через next/font в layout.tsx как CSS-переменные
serif: ['var(--font-display)', 'Georgia', 'serif'],
sans: ['var(--font-body)', 'system-ui', 'sans-serif'],
// Реально загруженные next/font-семейства (layout.tsx):
// --font-display = Cormorant Garamond, --font-body = Inter.
display: ['var(--font-display)', 'Cormorant Garamond', 'Georgia', 'serif'],
serif: ['var(--font-display)', 'Cormorant Garamond', 'Georgia', 'serif'],
sans: ['var(--font-body)', 'Inter', 'system-ui', 'sans-serif'],
},
colors: {
// приглушённая галерейная палитра — тёплый бумажный фон, графитовый текст
bg: '#F7F7F5',
'bg-alt': '#FAFAFA',
ink: '#111111',
'ink-soft': '#1b1b1b',
gold: '#C8A55A',
'gold-deep': '#a9863d',
graphite: '#444444',
// back-compat: используются текущими компонентами (не ломаем вид).
paper: '#f7f5f1',
ink: '#1a1a1a',
muted: '#6b6b6b',
accent: '#8a6f52',
muted: '#6b6b6b', // WCAG-AA на белом (≈4.5:1)
line: '#e4e0d8',
accent: '#8a6f52', // тёплая бронза для акцентов/цен
'line-soft': 'rgba(17,17,17,0.06)',
},
letterSpacing: {
tightest: '-0.03em',
widener: '0.24em',
},
maxWidth: {
content: '1280px',
content: '1320px',
},
borderRadius: {
's': '10px',
'm': '18px',
'l': '28px',
},
boxShadow: {
's': '0 2px 10px rgba(17,17,17,.05)',
'm': '0 18px 50px -20px rgba(17,17,17,.22)',
'l': '0 40px 90px -30px rgba(17,17,17,.35)',
gold: '0 14px 30px -14px rgba(169,134,61,.7)',
},
transitionTimingFunction: {
gallery: 'cubic-bezier(0.22, 1, 0.36, 1)',
gallery: 'cubic-bezier(0.16, 1, 0.3, 1)',
},
keyframes: {
slide: { to: { transform: 'translateX(-50%)' } },
cue: {
'0%': { transform: 'scaleY(0)', transformOrigin: 'top' },
'45%': { transform: 'scaleY(1)', transformOrigin: 'top' },
'55%': { transform: 'scaleY(1)', transformOrigin: 'bottom' },
'100%': { transform: 'scaleY(0)', transformOrigin: 'bottom' },
},
},
animation: {
marquee: 'slide 34s linear infinite',
cue: 'cue 2.2s cubic-bezier(0.16,1,0.3,1) infinite',
},
},
},