# AGENTS.md Common Ground — editorial impact/NKO шаблон: сохраняй newsroom-структуру, публичный ledger, кампании с бюджетом, истории людей, волонтерские смены и проверяемые документы. ## Project Specifics - Кампании, метрики, ledger, истории, смены, документы, партнеры и бюджет описаны в `src/entities/site-content.ts`. - `src/app` — только route wrappers; композиция каждой страницы живёт в отдельном widget (`src/widgets/-page.tsx`). См. File Map. - Mock-пожертвования держи в `src/features/*/ui`; не добавляй реальные платежи, CRM, donor accounts или API без запроса. - Не делай generic charity landing: каждая страница должна усиливать доверие через цель, прогресс, документы, ответственного, место или конкретную смену. - Избегай мягкой декоративной благотворительности; стиль должен ощущаться как редакция, полевой desk и публичная отчетность. - Проверка после правок: `pnpm lint` и `pnpm build`. ## Design System Источник токенов — `src/app/globals.css` (`@theme` + `:root`/`.dark`). Шрифт — Noto Serif (`--font-commonground`), один serif-гарнитур на sans и mono, с включёнными `ss01`/`cv01`/`tnum` (табличные цифры для ledger). Работай через семантические классы Tailwind (`bg-card`, `text-foreground`, `text-primary`, `border-foreground`), не хардкодь hex/oklch. Личность: **newsroom / полевой выпуск** — тёплый газетный кремовый фон с лёгкой бумажной зернистостью, тёмно-коричневый «ink» как текст и границы, глубокий teal primary как «редакционный» сигнал, мягкий зелёный secondary (надежда/поле) и тёплый терракотовый accent. Это не charity-пастель: ощущение печатной редакции и публичной отчётности. | Роль | Light | Характер | |---|---|---| | `background` | газетный кремовый (oklch 0.96 0.018 83) | бумажный фон с зерном-сеткой | | `foreground` | тёмно-коричневый ink (oklch 0.17 0.025 65) | текст + **границы** (`border-2 border-foreground`) | | `primary` | глубокий teal (oklch 0.43 0.095 218) | акценты, цифры ledger, кнопки, иконки | | `secondary` | мягкий зелёный (oklch 0.83 0.09 145) | бейджи региона/роли, hero-glow | | `muted` / `muted-foreground` | тёплый серо-бежевый | вторичный текст | | `accent` | терракота (oklch 0.73 0.105 50) | редкий тёплый сигнал | | `card` | почти белый кремовый | карточки кампаний, ledger, документы | Узнаваемые приёмы (держи их, это и есть «лицо» проекта): - **Серифная типографика:** Noto Serif + `font-black` — газетные заголовки, очень плотный `leading` (`leading-[0.88]`/`leading-[0.96]`), крупные размеры (до `text-8xl`). Тело текста тоже serif. - **Толстые границы:** `border-2 border-foreground`, `divide-y-2 divide-foreground` — карточки, таблицы ledger и доски смен очерчены, а не растворены. - **Hard offset shadow:** `shadow-[8px_8px_0_var(--foreground)]` на ключевых aside-блоках (hero-выпуск, партнёрская проверка). - **Double-rule плашки:** утилита `.impact-rule` — двойная типографская линейка сверху/снизу для рубрик-капителей (`text-sm font-black uppercase`). - **Газетная подложка:** `.newsprint` — тонкая сетка-растр для hero/title-секций; глобальный фон body тоже несёт зелёный radial-glow + вертикальный растр. - **Скромный radius:** `--radius` = 0.18rem; элементы почти прямоугольные, но не абсолютно острые. - **Ledger-first доверие:** табличные цифры (`tnum`), прогресс-бары целей и процентов бюджета, проверяемые блоки документов. Do / Don't: - **Do:** держи serif-заголовки, толстые границы, double-rule рубрики, публичный ledger и прогресс-бары; цифры — через `text-primary`. - **Don't:** sans-заголовки, мягкие тени, скруглённые «pill»-карточки, пастельные градиенты, generic-charity hero — это ломает newsroom-личность. ## File Map | Route | Widget | |---|---| | `/` | `src/widgets/home-page.tsx` (`HomePage`) | | `/campaigns` | `src/widgets/campaigns-page.tsx` (`CampaignsPage`) | | `/campaigns/clean-water` | `src/widgets/campaign-detail-page.tsx` (`CampaignDetailPage`) | | `/impact` | `src/widgets/impact-page.tsx` (`ImpactPage`) | | `/stories` | `src/widgets/stories-page.tsx` (`StoriesPage`) | | `/volunteer` | `src/widgets/volunteer-page.tsx` (`VolunteerPage`) | | `/transparency` | `src/widgets/transparency-page.tsx` (`TransparencyPage`) | Переиспользуемые блоки: - `src/widgets/site-shell.tsx` — `SiteShell` (header + nav + footer, обёртка всех страниц). - `src/widgets/campaign-card.tsx` — `CampaignCard` (Home featured + Campaigns grid). - `src/widgets/ledger-table.tsx` — `LedgerTable` (Home + Impact). - `src/shared/ui/editorial-title.tsx` — `EditorialTitle` (заголовочная секция внутренних страниц: Campaigns, Impact, Stories, Volunteer, Transparency). - `src/shared/lib/campaign.ts` — `formatRub`, `campaignProgress` (CampaignCard + Campaign Detail). - `src/features/donation-panel/ui/donation-panel.tsx` — mock-панель пожертвования. Одноразовые блоки колоцированы со своей страницей: `MetricCard` в `impact-page.tsx`, `StoryCard` в `stories-page.tsx`, `DocumentCard` в `transparency-page.tsx`.