# Pre-flight checklist — прогони перед сдачей

Источник: Section 14 апстрим taste-skill (Leonxlnx/taste-skill), без
купюр. Механическая проверка — не "на глаз". Если хоть один пункт нельзя
честно отметить, страница не готова.

- [ ] **Design Read** заявлен одной строкой перед кодом?
- [ ] **Дайлы** (`VARIANCE`/`MOTION`/`DENSITY`) явные и обоснованы
      брифом, не молча дефолт 8/6/4?
- [ ] **Design-фундамент** выбран осознанно (Tailwind+shadcn/Radix или
      официальный пакет под enterprise-бриф), не смешан с другим в одном
      дереве?
- [ ] **Redesign-режим** определён и аудит проведён, если это редизайн?
- [ ] **Ноль em-dash (`—`/`–`) где угодно на странице.** Заголовки,
      eyebrow, пилюли, тело, цитаты, атрибуция, подписи, кнопки,
      alt-текст. Ноль. Не переговаривается.
- [ ] **Page Theme Lock**: одна тема (light/dark/auto) на всю страницу,
      без переключения посреди скролла?
- [ ] **Color Consistency Lock**: один accent-цвет одинаково по всем
      секциям?
- [ ] **Shape Consistency Lock**: один corner-radius consistently?
- [ ] **Button Contrast Check**: каждая CTA читаема на своём фоне (WCAG
      AA 4.5:1), без white-on-white?
- [ ] **CTA Button Wrap**: ни один лейбл не переносится на 2+ строки на
      десктопе?
- [ ] **Form Contrast Check**: инпуты/placeholder/focus-ring/label/error
      проходят WCAG AA против фона секции?
- [ ] **Serif-дисциплина**: если использован serif — это не Fraunces/
      Instrument Serif (или оправдан явно брендом)? Другой serif, чем в
      прошлом проекте?
- [ ] **Premium-consumer палитра**: если бриф premium-consumer, палитра
      НЕ beige+brass+oxblood+espresso? Другая семья, чем в прошлом
      подобном проекте?
- [ ] **Italic descender clearance**: каждое курсивное слово с `y g j p
      q` имеет `leading-[1.1]` мин + `pb-1` запас?
- [ ] **Hero влезает во viewport**: заголовок ≤2 строк, подтекст ≤20 слов
      и ≤4 строк, CTA видны без скролла, шрифт спланирован вместе с
      картинкой?
- [ ] **Hero top padding**: максимум `pt-24` на десктопе, контент не
      "плавает" на середине viewport?
- [ ] **Hero stack**: максимум 4 текстовых элемента (eyebrow ИЛИ brand
      strip, headline, subtext, CTA)? Без мелкого tagline под CTA, без
      trust-микрострипа в hero?
- [ ] **Eyebrow count (механически)**: посчитай `uppercase tracking`
      мелкие лейблы над заголовками секций по всем компонентам. Count ≤
      ceil(sectionCount / 3)? Hero считается за 1.
- [ ] **Split-Header Ban**: нет "слева большой заголовок + справа мелкий
      параграф" как хедера секции (вертикальный стек вместо этого)?
- [ ] **Zigzag Alternation Cap**: нет 3+ подряд секций с одинаковым
      image+text-split паттерном?
- [ ] **No Duplicate CTA Intent**: нет двух CTA с одним намерением на
      странице ("Get in touch" + "Let's talk" одновременно = fail)?
- [ ] **Logo wall = только логотипы**: без category-лейблов под логотипами?
- [ ] **Bento Background Diversity**: минимум 2-3 ячейки bento с реальной
      визуальной вариацией (картинка/градиент/паттерн), не все
      white-on-white?
- [ ] **"Used by/Trusted by" logo wall** живёт ПОД hero, не внутри, реальные
      SVG-логотипы (Simple Icons/devicon), не текстовые wordmark'и?
- [ ] **Copy Self-Audit**: перечитан каждый видимый текст, нет
      грамматически сломанных или AI-галлюцинированных фраз?
- [ ] **Motion мотивирован**: каждая анимация обоснована одним
      предложением (иерархия/сторителлинг/фидбек/переход состояния), без
      GSAP-ради-GSAP?
- [ ] **Marquee max-one-per-page**: не больше одного horizontal marquee
      на странице?
- [ ] **Nav на одной строке** на десктопе, высота ≤80px?
- [ ] **Section-Layout-Repetition**: ни одна layout-семья не повторяется
      дважды (минимум 4 разные семьи на 8 секций)?
- [ ] **Bento** — ритм есть И точное число ячеек (N айтемов → N ячеек, без
      пустых в середине/конце)?
- [ ] **Длинные списки** используют правильный UI-компонент (не дефолтный
      `<ul>`+`divide-y` для >5 айтемов)?
- [ ] **Реальные картинки** (gen-tool → Picsum-seed → явный
      плейсхолдер-слот) — БЕЗ div-based fake screenshots, БЕЗ
      hand-rolled декоративных SVG, БЕЗ чисто-текстового "минимализма"?
- [ ] **Без pills/лейблов поверх картинок** (`Plate · Brand`, `Field notes
      - journal`)?
- [ ] **Без photo-credit подписей как декорации** (`Field study no. 12 ·
      Ines Caetano`)?
- [ ] **Без version-футеров** (`v1.4.2`, `Build 0048`) на маркетинговых
      страницах?
- [ ] **Без микро-мета-предложений** под eyebrow?
- [ ] **Без decoration text strip** внизу hero (`BRAND. MOTION.
      SPATIAL.`)?
- [ ] **Без floating top-right под-текста** в хедерах секций?
- [ ] **Без scoring/progress bars с залитым фоном-треком** как сравнение?
- [ ] **Без locale/город/время/погода strips**, если бриф реально не про
      глобально-распределённую студию/место?
- [ ] **Без scroll cues** (`Scroll`, `↓ scroll`)?
- [ ] **Без version-лейблов в hero** (`V0.6`, `BETA`), если бриф не про
      launch?
- [ ] **Без section-numbering eyebrow** (`001 · Capabilities`)?
- [ ] **Без декоративных точек** (только для реального семантического
      статуса)?
- [ ] **Без `border-t`+`border-b` на каждой строке** длинных списков/
      spec-таблиц?
- [ ] **Content density адекватна**: без 20-строчных таблиц данных, без
      фейково-точных спеков без обоснования, subtext ≤25 слов по
      умолчанию?
- [ ] **Цитаты ≤3 строк** тела, атрибуция чистая (без em-dash)?
- [ ] **Motion заявлен = motion показан**: если `MOTION_INTENSITY > 4`,
      страница реально анимируется?
- [ ] **GSAP sticky-stack/horizontal-pan** реализованы по каноническому
      скелету (`tools/motion-skeletons.tsx`) — `start: "top top"`, `pin:
      true`, верный scrub?
- [ ] **Без `window.addEventListener('scroll')`** — только Motion
      `useScroll()`/ScrollTrigger/IntersectionObserver/CSS scroll-driven?
- [ ] **Reduced motion** обёрнут для всего с `MOTION_INTENSITY > 3`?
- [ ] **Dark mode** токены заданы и протестированы в обоих режимах?
- [ ] **Mobile collapse** явный (`w-full`, `px-4`, `max-w-7xl mx-auto`)
      для high-variance раскладок?
- [ ] **Viewport stability**: `min-h-[100dvh]`, никогда `h-screen`?
- [ ] **`useEffect`-анимации** имеют строгий cleanup?
- [ ] **Empty/loading/error** состояния предусмотрены?
- [ ] **Карточки опущены** в пользу spacing там, где можно?
- [ ] **Иконки** из разрешённой библиотеки (Phosphor/HugeIcons/Radix/
      Tabler), без hand-rolled SVG-путей?
- [ ] **Motion** изолирован в client-leaf компонентах с `'use client'`
      наверху, мемоизирован?
- [ ] **Без AI Tells** из общего списка (Inter-дефолт, AI-purple, три
      одинаковые карточки, Jane Doe, Acme, "Quietly in use at")?
- [ ] **Core Web Vitals** правдоподобно достижимы (LCP <2.5s, INP <200ms,
      CLS <0.1)?
- [ ] **Один design-фундамент** на проект (без смешивания систем)?
