# AGENTS.md Northline Clinic — planned care clinic template: пациентский маршрут, triage-запись, подготовка к визиту, документы, privacy, специалисты и координатор без медицинских обещаний результата. ## Project Specifics - Source content lives in `src/entities/site-content.ts`; keep visible copy there or directly in route JSX. - `src/app` — только route wrappers; композиция каждой страницы живёт в отдельном widget (`src/widgets/-page.tsx`). Header/footer — `src/widgets/site-shell.tsx`. См. File Map. - Keep cards at 8px radius or less and preserve the selected palette in `src/app/globals.css`. - This is a static frontend template: do not add real payments, auth, persistence, external API calls, or backend contracts without an explicit product request. - Keep the domain specific: planned care, triage, preparation, diagnostic route, result review, insurance/privacy and non-emergency boundaries. Do not flatten it into generic wellness cards. - Never add diagnoses, treatment schemes, dosage advice, guaranteed outcomes, emergency-care replacement, real EHR behavior or patient-data submission. - After changes run `pnpm lint` and `pnpm build`. ## Визуальные правки - Кириллица обязательна для видимого текста и выбранных Google Fonts. - При AI-правках сохраняйте доменные блоки этого шаблона: они отличают проект от generic landing. ## Design System Источник токенов — `src/app/globals.css` (`@theme inline` + `:root`/`.dark`). Шрифты: заголовки и `.font-display` — **Manrope** (`--font-display`), body — **Source Sans 3** (`--font-sans`); mono замаплен на display. Работай через семантические классы Tailwind (`bg-primary`, `text-muted-foreground`, `border-border`, `border-primary/30`), не хардкодь hex/oklch. Личность: **calm clinical / planned care** — тёплый кремово-бежевый фон (low-chroma), приглушённый сине-зелёный teal `primary` (oklch 0.46 0.07 173) как доверие и навигация, мягкий мятный `secondary`, тёплый терракотовый `accent` (oklch 0.72 0.12 34) для редких сигналов. Текст — тёмный teal-ink, а не чистый чёрный. Никакой «больничной» стерильности и никакого агрессивного маркетинга — спокойная, аккуратная среда. | Роль | Light | Характер | |---|---|---| | `background` | тёплый кремово-бежевый (0.976) | основной фон страниц | | `foreground` | тёмный teal-ink (0.18) | текст | | `primary` | приглушённый teal | доверие: иконки, CTA, бейджи (`text-primary`), eyebrow, `border-primary/30` | | `secondary` | мягкий мятный | вторичные бейджи (теги маршрутов) | | `accent` | тёплый терракот | редкий сигнал (используется сдержанно) | | `muted` | тёплый серо-бежевый | чипы, фон-плашки, вторичный текст | | `card` | почти белый тёплый (0.995) | панели `ClinicalPanel` | | `border` | мягкий тёплый серый | тонкие границы (`border border-border`) | Узнаваемые приёмы (держи их, это и есть «лицо» проекта): - **Мягкие, но не круглые углы:** `--radius` = 0.5rem; почти всё — `rounded-md`. Спокойная гладкость без пузырей. - **`ClinicalPanel` как базовый блок:** `rounded-md border border-border bg-card shadow-[0_1px_0_rgba(24,74,68,0.05)]` — почти плоская карточка с едва заметной teal-линией снизу. Это основной строительный кирпич контента. - **Тонкие границы, плоскость:** `border border-border` (1px), без жёстких теней и offset-shadow. Глубина — минимальная. - **Цветная семантика teal:** иконки, цифры-метрики, eyebrow и активные подписи — `text-primary`; границы-акценты — `border-primary/30`. - **Типографика:** заголовки — `font-semibold` (не black), `text-5xl`/`text-6xl`, спокойный `leading-tight`/`leading-[1.04]`; eyebrow — `uppercase tracking-[0.16em] text-primary`. - **Safety-блоки:** предупреждения о неэкстренном характере — `border-amber-200 bg-amber-50 text-amber-900/950` (единственное место с янтарём, намеренно). - **Фон-фактура:** `.clinic-soft-grid` — мягкая teal/терракотовая сетка под hero с маской снизу; контент в `Container` (`max-w-[1320px]`), фото — `object-cover` БЕЗ grayscale (живые, тёплые снимки). Do / Don't: - **Do:** держи спокойную кремово-teal палитру, плоские `ClinicalPanel`, тонкие границы, доменный язык (маршрут, подготовка, координатор, неэкстренный формат), amber только для safety. - **Don't:** яркие/насыщенные цвета, жёсткие тени, grayscale-фото, `font-black`, агрессивные CTA, медицинские обещания/диагнозы — это ломает доверительную клиническую личность. ## File Map | Route | Widget | |---|---| | `/` | `src/widgets/home-page.tsx` (`HomePage`) | | `/services` | `src/widgets/services-page.tsx` (`ServicesPage`) | | `/specialists` | `src/widgets/specialists-page.tsx` (`SpecialistsPage`) | | `/booking` | `src/widgets/booking-page.tsx` (`BookingPage`) | | `/patient-info` | `src/widgets/patient-info-page.tsx` (`PatientInfoPage`) | | `/contacts` | `src/widgets/contacts-page.tsx` (`ContactsPage`) | Переиспользуемые блоки: - `src/widgets/site-shell.tsx` — `SiteHeader` + `SiteFooter` (обёртка всех страниц через `app/layout.tsx`). - `src/widgets/patient-journey.tsx` — `PatientJourney` (Home, Booking). - `src/widgets/featured-grid.tsx` — `FeaturedGrid` (Home, Services). - `src/widgets/specialist-schedule.tsx` — `SpecialistSchedule` (Home, Booking, Specialists). - `src/widgets/patient-checklist.tsx` — `PatientChecklist` (Home, Patient info, Booking). - `src/widgets/facility-board.tsx` — `FacilityBoard` (Home, Contacts). - `src/widgets/safety-notes.tsx` — `SafetyNotes` (Home, Patient info, Booking). - `src/widgets/clinical-disclaimer.tsx` — `ClinicalDisclaimer` (Home, Patient info, Booking, Services). - `src/widgets/metric-strip.tsx` — `MetricStrip` (переиспользуемый блок-кит, готов к композиции). - `src/shared/ui/container.tsx` — `Container` (контентная обёртка `max-w-[1320px]`, база всех секций). - `src/shared/ui/clinical-panel.tsx` — `ClinicalPanel` (базовая карточка-панель). - `src/shared/ui/section-header.tsx` — `SectionHeader` (eyebrow + заголовок + текст секции). - `src/shared/ui/inner-hero.tsx` — `InnerHero` (заголовочная секция внутренних страниц). - `src/shared/ui/icon-cards.tsx` — `IconCards` (Contacts, Services). - `src/shared/ui/info-columns.tsx` — `InfoColumns`, `src/shared/ui/split-story.tsx` — `SplitStory` (переиспользуемые presentational-блоки-кит). Одноразовые блоки колоцированы со своей страницей: `PageHero`/`TestimonialBand` в `home-page.tsx`, `ServiceMatrix`/`PricingTiles` в `services-page.tsx`, `DoctorGrid`/`CtaPanel` в `specialists-page.tsx`, `ReservationForm` в `booking-page.tsx`, `InsurancePanel` в `patient-info-page.tsx`, `ContactForm` в `contacts-page.tsx`.