Fundacja Food & Mind · Ideavo · WEB 2

Food & Mind · WEB 2 · Handoff makiet dla wdrożenia w Astro

Dla: Dawid (wdrożenie Astro) · Od: Ideavo · Stan na 27.10.2026

Ten dokument opisuje komplet makiet strony foodandmind.org w kierunku „Edukacja przez doświadczenie” (WEB 1). Makiety są działającym prototypem HTML/CSS/JS: jedna strona = jeden widok, wszystkie zbudowane z jednego zestawu tokenów i komponentów. Prototyp jest wzorem wyglądu i zachowań, nie kodem produkcyjnym. Nic nie zostało opublikowane na domenie klienta.

Spis treści

  1. Co jest w paczce i jak to otworzyć
  2. Widoki (14) i ich zawartość
  3. Fundamenty: kolory i kontrast, typografia, odstępy, siatka, breakpointy
  4. Komponenty i ich odpowiedniki w Astro
  5. Stany komponentów
  6. Nawigacja: desktop i telefon
  7. Formularze, walidacja i komunikaty
  8. Klawiatura, focus i WCAG 2.1 AA
  9. Zdjęcia: przypisanie, źródła, proporcje
  10. SEO: adresy, nagłówki, meta, odstępstwa od specyfikacji Jakuba
  11. Pominięte moduły (brak potwierdzonych danych)
  12. Decyzje otwarte i rzeczy do dostarczenia przez fundację
  13. Testy wykonane i testy do wykonania po wdrożeniu

1. Co jest w paczce i jak to otworzyć

07_HANDOFF/
  HANDOFF.md                 ten dokument
  prototyp/
    index.html               przegląd: wszystkie widoki, zrzuty 1440 / 390 / 320, stany formularza
    handoff.html             ten dokument jako strona
    strona-glowna.html … 404.html   14 widoków (lista w rozdz. 2)
    system-ui.html           plansza systemu UI (tokeny, komponenty, stany, mapa Astro)
    nawigacja.html           specyfikacja nagłówka, menu mobilnego i stopki
    assets/fm.css            wszystkie tokeny i komponenty (jeden plik, komentarze po polsku)
    assets/fm.js             zachowania: panel Programy, menu mobilne, akordeony, formularze, kopiowanie e-maila
    assets/fonts/            WOFF2 Bricolage Grotesque i Instrument Sans (latin + latin-ext, licencja OFL)
    img/                     34 obrazy przygotowanych tylko do prototypu (zmniejszone kopie, rozdz. 9)
    shots/                   zrzuty całych stron i stanów
    dokumenty/               2 archiwa ZIP „W sieci reklam” (kopie 1:1 plików klientki, rozdz. 7.4)
    src/                     źródła widoków (treść + znaczniki partiali)
    build.py                 składa widoki z src/ i partiali (nagłówek, menu, stopka, formularze)
    shots.py                 testy (Playwright/Chromium) i zrzuty
    mkhub.py                 buduje index.html i handoff.html

Uruchomienie lokalne: w folderze prototyp/ python3 -m http.server 8765, potem http://localhost:8765/. Linki w prototypie używają docelowych adresów (/programy/ciastoterapia/ itd.); skrypt prototypu mapuje je na pliki HTML. Ciemny pasek na górze widoków służy tylko do przeglądu (link do przeglądu wszystkich widoków, na stronie Kontakt także przełącznik stanów formularza) i nie jest częścią strony.

Oryginalne zdjęcia i dokumenty klientki zostały nienaruszone (03_TRESCI_KLIENTA, 05_ZDJECIA). Obrazy w img/ to kopie zmniejszone do 1400 px wyłącznie dla prototypu; do Astro trzeba przygotować je z oryginałów (rozdz. 9).


2. Widoki (14) i ich zawartość

Każdy widok ma makietę desktop 1440 px i telefon 390 px; reflow sprawdzony przy 320 px (oraz 1024 i 768). Zrzuty: shots/{widok}-1440.jpg, -390.jpg, -320.jpg.

Zasada treści: wyłącznie prawdziwe treści, w pierwszej kolejności z dokumentów klientki (03_TRESCI_KLIENTA, najnowszy 1a zawiera temat „Oddech i zimno”), potem z obecnej strony foodandmind.org. Teksty wstawione w całości, bez skrótów i parafraz. Zdjęcia stockowe (przekazane 28.10.2026) są użyte wyłącznie jako ilustracje w sekcjach dla firm i w Nakarmionych Emocjach (rozdz. 9.1); placeholderów zdjęć nie ma. Sekcje bez danych zostały pominięte (rozdz. 11), nie oznaczone jako braki.

2.1 Strona główna / · strona-glowna.html

Źródło: obecna strona główna, „Nasza historia”, dla firm.docx (zajawka), w sieci reklam.docx (opis karty KMO).

  1. Hero: H1 Jakuba „Fundacja Food & Mind - edukacja żywieniowa, która karmi ciało i emocje”, lead, przyciski „Poznaj programy” / „Wellbeing w firmie: oferta dla firm”; zdjęcie: dziewczynki z warzywami (Ciastoterapia).
  2. Dlaczego to ważne: 3 fakty z obecnej strony (35% uczniów - źródło MEN / Nowa Era 2023; Horizon Europe; 30-60% żywności ultraprzetworzonej - na obecnej stronie bez źródła, więc bez linii źródła) + zdanie zamykające.
  3. Nasze programy: wstęp z obecnej strony, 3 karty (Ciastoterapia, Zdrowe wybory - nie daj się reklamie, Nakarmione Emocje).
  4. Komu pomagamy: lista-odnośniki (AudienceList).
  5. Współpraca z firmami: tekst z dla firm.docx, zdjęcie ilustracyjne (stock: współpracownicy przy stole, rozdz. 9.1).
  6. Partnerzy i finansujący: logo MEN + adnotacja grantu (jedyny potwierdzony finansujący).
  7. Zespół i eksperci: tekst w dwóch kolumnach (lewa: H2, lead i akapit o zespole; prawa: „Dlaczego powstało Food & Mind?” i link „Poznaj naszą misję”), pod spodem 4 osoby z etykietą grupy i link do /zespol/. Bez kompozycji zdjęć (usunięta 30.10.2026).
  8. Pas CTA „Porozmawiajmy” → „Napisz do nas”.

2.2 Programy /programy/ · programy.html

Źródło: obecna strona Projekty i Oferta. Intro (pełny akapit z obecnej strony) · AnchorNav · wiersze programów: Ciastoterapia (zdjęcie warsztatów), Nakarmione Emocje (zdjęcie ilustracyjne: rozmowa w kręgu, jak w hero programu), Zdrowe wybory - nie daj się reklamie (infografika projektu) · Głodni Zmian: 3 projekty (H3 Jakuba) + galeria 4 zdjęć projektów bez przypisywania do konkretnego projektu · Który program wybrać? (tabela, na telefonie karty) · Instytut Food & Mind (zdjęcie z konferencji) · CTA „Dołącz do programu”.

2.3 Ciastoterapia /programy/ciastoterapia/ · ciastoterapia.html

Źródło: obecna strona (Projekty, Oferta), ciastoterapia.pl (link do kursu edukatora). Hero (H1 Jakuba, etykieta „Dla żłobków, przedszkoli i szkół”, zdjęcie: stół z przedszkolakami) · Czym jest Ciastoterapia · Jak wyglądają zajęcia (3 zdjęcia: ilustrowany przepis, karta pracy z roślinnym bohaterem, materiały na stole; podpisy to elementy metody wymienione w tekście) · Co rozwija u dzieci (lista + 2 zdjęcia) · Dla kogo (tekst + Chips) · Jak wdrożyć Ciastoterapię w placówce (5 form z obecnej Oferty jako OptionList z „Zapytaj”) · blok: edukatorzy Ciastoterapii w programie „W sieci reklam” · Zapytaj o wdrożenie (CTA) + Zostań edukatorem (link zewnętrzny ciastoterapia.pl).

2.4 Nakarmione Emocje /programy/nakarmione-emocje/ · nakarmione-emocje.html

Źródło: obecna strona główna i Oferta (#firmy). Hero (zdjęcie ilustracyjne: rozmowa w kręgu; nie przedstawia zajęć fundacji) · Dieta a zdrowie psychiczne: co mówią badania (manifest + fakt Horizon Europe) · Jak działa program (3 × H3 Jakuba: Warsztaty i szkolenia, Integracyjne warsztaty Ciastoterapii, Programy długofalowe) · Tematy programu (7) · Kto prowadzi program · Dla kogo · CTA z linkiem do /dla-firm/.

2.5 Zdrowe wybory żywieniowe - nie daj się reklamie /programy/nie-daj-sie-reklamie/ · w-sieci-reklam.html

Źródło: w sieci reklam.docx w całości i w kolejności dokumentu. Hero wariant A (R-01): nadtytuł „W sieci reklam” + H1 Jakuba · Wpływ reklamy na dzieci (z wyróżnionym „2,5-krotnie”) · Bezpłatne materiały #materialy (2 × DownloadCard z bezpośrednim pobieraniem archiwów ZIP od klientki: „Pobierz materiały dla klas 1–3 (ZIP)”, 21,5 MB i „Pobierz materiały dla klas 4–8 (ZIP)”, 20,3 MB; bez Dysku Google, rozdz. 7.4) · Projekt w skrócie (3 × H3) · Ekspertka projektu: dr Magdalena Muc · Dlaczego ten program jest potrzebny? (link do artykułu) · Edukacja medialna i żywieniowa (wprowadzenie jako lead, 5 cech jako RowList: numer, tytuł, opis w wierszach) · Cel programu (wprowadzenie, 3 równe etapy Rozpoznawanie / Rozumienie / Tworzenie, podsumowanie oddzielone linią: pytanie po lewej, wyjaśnienie i link po prawej) · Razem możemy wyplątać dzieci z sieci reklam (CTA; przyciski wyśrodkowane w pionie, ta sama szerokość i te same marginesy co blok wsparcia) · SupportBlock z przyciskiem „Wesprzyj nasze działania” → ten sam adres płatności co „Wesprzyj” w nagłówku (rozdz. 6.1) · GrantNotice (adnotacja MEN jako tekst HTML + logo). Korekta redakcyjna: „w etamacie” → „w temacie”.

2.6 Dla firm /dla-firm/ · dla-firm.html

Źródło: dla firm.docx, 1a. Szkolenia i warsztaty dla firm.docx, 1b. CSR dla firm.docx - wszystkie trzy w całości. Szkolenia i CSR to sekcje tej strony (#szkolenia, #csr), nie osobne adresy (R-02). Hero: H1 Jakuba w dwóch stopniach („Wellbeing w firmie:” / „warsztaty, programy i współpraca CSR”), hasło klientki, zdjęcie ilustracyjne (stock: współpracownicy przy stole) · AnchorNav (Korzyści, Formy współpracy, Szkolenia i warsztaty, CSR, Kontakt) · Co zyskuje Twój zespół (6) · Dlaczego Food & Mind? (4 × H3) · Formy współpracy (2 kafelki do kotwic ze zdjęciami ilustracyjnymi + link do Nakarmionych Emocji) · #szkolenia Tematy warsztatów: 5 tematów (OfferTile z numerem i zdjęciem ilustracyjnym; 04 „Oddech i zimno”) + bloki „Szkolenia wspierające cele CSR” i „Program dopasowany” · #csr Współpraca CSR (5 korzyści jako RowList: tytuł po lewej, opis po prawej, 3 obszary, link do /programy/, CTA) · #kontakt-firmy formularz z tematem „Współpraca z firmą / CSR” + kolumna kontaktowa: karta „Dane fundacji” (nazwa i adres, e-mail z kopiowaniem, Facebook i Instagram - te same dane co na stronie Kontakt) i „Gdzie działamy”.

2.7 Oferta /oferta/ · oferta.html

Źródło: obecna strona Oferta. Hero (zdjęcie: warsztat dla dorosłych przy stole) · AnchorNav · #placowki Warsztaty dla przedszkoli, szkół i placówek terapeutycznych (2 zdjęcia, 5 form, link do Ciastoterapii) · #firmy Dla firm (tekst Nakarmione Emocje + obowiązkowy link do /dla-firm/) · #instytucje Dla samorządów, uczelni i organizacji / Instytut Food & Mind (zakres współpracy, zdjęcie z konferencji) · Dlaczego Food & Mind (4 punkty) · CTA „Zostań naszym partnerem”.

2.8 Kontakt /kontakt/ · kontakt.html

H1 · lead z obecnej strony · formularz kontaktowy (pełne stany, rozdz. 7) · Dane fundacji (nazwa, adres, KRS, NIP, REGON, e-mail z przyciskiem „Kopiuj adres”, Facebook, Instagram) · Gdzie działamy · Szybkie linki do oferty (AudienceList). Temat formularza można ustawić z adresu: /kontakt/?temat=firma (w prototypie #temat-firma).

2.9 Artykuły /artykuly/ · artykuly.html

H1 Jakuba · kategoria „Projekty fundacji” · jedna wyróżniona karta artykułu (jedyny istniejący tekst) · CTA. Lista nie udaje większej liczby artykułów; siatka kart (ArticleCard) jest w planszy UI do użycia, gdy powstaną kolejne teksty.

2.10 Szablon artykułu /artykuly/wplyw-reklamy-na-dzieci/ · artykul.html

Szablon pokazany na prawdziwym tekście: fragmenty w sieci reklam.docx (adres i H1 z planu Jakuba). Okruszki · kategoria · H1 · lead · autor „Fundacja Food & Mind” · infografika z podpisem · spis treści (desktop: przyklejony obok tekstu; telefon: akordeon nad tekstem) · 3 × H2 z nagłówków dokumentu · wyróżnione zdanie · lista numerowana · RelatedProgram · CTA. Bez czasu czytania i dat (brak danych). Uwaga SEO: tekst powiela fragmenty strony KMO; docelowo potrzebny osobny tekst artykułu (rozdz. 10).

2.11 Misja /misja/ · misja.html

Źródło: obecna strona Misja w całości. Nagłówki Jakuba: Dlaczego to robimy · W co wierzymy · Jak działamy (z wyróżnionym zdaniem) · Co potwierdzają dane (35%, 30-60%) · Kto za tym stoi (po lewej nagłówek, oba akapity i link „Poznaj nasz zespół”; po prawej jedno zdjęcie z wydarzenia fundacji misja-wydarzenie-ciastoterapia.jpg w pełnym kadrze 4:3, z brązowym prostokątem i pomarańczowym akcentem .kadra--single; na mobile zdjęcie pod tekstem; kompozycja trzech portretów usunięta 30.10.2026) · myśl przewodnia · CTA „Zmieniamy edukację od kuchni”.

2.12 Zespół /zespol/ · zespol.html

Źródło: obecna strona Zespół + poprawione zdjęcia bio od klientki. Założycielka (Magdalena Przybyłka, pełny biogram, zdjęcie Magda.jpg) · Zespół programowy (4) · Zespół operacyjny (2) · Eksperci (2; dr Magdalena Muc z linkiem do KMO) · CTA. Imię i nazwisko każdej osoby jako H3 (wymóg Jakuba). Pełne biogramy, bez skracania.

2.13 Wariant dokumentu prawnego · /standardy-ochrony-maloletnich/ · standardy.html

Szablon dla stron dokumentów (standardy, polityka prywatności, regulamin newslettera). Pokazany na treści standardów fundacji opublikowanej dziś na ciastoterapia.pl (dokument fundacji, z numerem telefonu 512 029 139), przeniesionej dosłownie, + przycisk pobrania PDF. Żadnych dopisanych klauzul.

2.14 404 · 404.html

Duże „404”, H1 „Nie znaleźliśmy tej strony”, zdanie pomocy, 3 odnośniki (Programy, Oferta, Kontakt), przycisk „Strona główna”. Teksty to propozycja UI do akceptacji. noindex, status 404.

Wspólne dla wszystkich widoków: SkipLink, nagłówek, okruszki (poza główną i 404), pas CTA w kontenerze, stopka z newsletterem.


3. Fundamenty

3.1 Kolory (tokeny w :root w fm.css)

Token Wartość Status Rola
--ivory #F8F5EF WEB 1 tło podstawowe
--brown #594941 WEB 1 tekst, nagłówki, stopka, pas CTA
--sand #EEE5D9 WEB 1 tło sekcji wyróżnionych
--orange #D86A32 WEB 1 tylko grafika (kwadraty, kropki list, dekoracje, tekst ≥ 24 px)
--teal #4A8480 WEB 1 akcent dodatkowy, tylko grafika lub tekst ≥ 24 px
--orange-dark #A94417 WEB 1 przycisk główny, linki, numery
--teal-dark #346B67 WEB 1 etykiety, nadtytuły, focus
--white #FFFFFF karty, pola formularzy
--orange-darker #8B3813 propozycja hover / active przycisku głównego
--text-muted #6E6058 propozycja podpisy, meta (4.84 na Sand)
--border-input #7A6C64 propozycja obramowanie pól (3:1 do tła)
--teal-tint #DBE0DB propozycja tło komunikatu sukcesu
--orange-tint #F3E0D3 propozycja tło komunikatu błędu
--sand-deep #E4D8C8 propozycja active przycisku drugorzędnego
--line, --line-on-sand #DDD2C5, #D3C5B4 propozycja linie dekoracyjne (bez znaczenia informacyjnego)

Dozwolone pary (kontrast WCAG):

Para Kontrast Użycie
Brown na Ivory / Sand / Biały 7.86 / 6.86 / 8.56 tekst, nagłówki
Ivory na Brown 7.86 stopka, pas CTA
Orange Dark na Ivory / Biały 5.47 / 5.96 linki, nadtytuł H1, numery
Orange Dark na Sand 4.78 tylko linki ≥ 16 px; na Sand preferować Brown
Teal Dark na Ivory / Sand / Biały 5.60 / 4.89 / 6.10 etykiety, nadtytuły, focus
Biały na Orange Dark 5.96 przycisk główny
Brown na Ivory (przycisk na tle Brown) 7.86 przycisk jasny
Orange na Ivory 3.20 tylko ≥ 24 px i grafika

Zakazane: Orange jako zwykły tekst (3.20), jakikolwiek tekst Orange na Sand (2.79), biały zwykły tekst na Orange / Muted Teal (3.48 / 4.28), Orange / Orange Dark / Teal Dark na Brown (1.40-2.46; na Brown focus i tekst w Ivory), Sand jako jedyna granica karty na Ivory (1.15), kolor jako jedyny sygnał (linki podkreślone, błąd z ikoną i słowem „Błąd:”, aktywna pozycja menu z belką).

3.2 Typografia

Rola Telefon → desktop Interlinia
H1 38 → 60 px (700, -0.02em) 1.08
H1 część druga (.h1-split__sub) 20 → 24 px
H2 28 → 38 px (600) 1.15
H3 22 → 26 px (600) 1.25
H4 / tytuł w karcie 18 → 20 px (Instrument 600) 1.3
Lead 18 → 20 px 1.5
Treść 16 → 17 px 1.6
Mały 14 → 15 px
Nadtytuł 14 px, 600, wersaliki, odstęp 0.08em

3.3 Odstępy, siatka, breakpointy


4. Komponenty i odpowiedniki w Astro

Komponent Astro Klasa w prototypie Widoki Uwagi
BaseLayout + SEO szablon DOC w build.py wszystkie lang="pl", jeden H1, meta z rozdz. 10
SkipLink .skip-link wszystkie pierwszy element w kolejności focusu, cel #tresc
Header + NavDropdown .site-header, [data-dropdown] wszystkie wzorzec disclosure, aria-current="page"
MobileMenu .mobile-menu < 1024 px role="dialog", aria-modal, pułapka focusu
Breadcrumbs .breadcrumbs podstrony nav aria-label="Okruszki", ostatni element aria-current="page", BreadcrumbList
Button, ArrowLink .btn--primary/--secondary/--light, .btn--compact, .arrow-link wszystkie stany w rozdz. 5
Badge .badge, .badge--quiet hero programów, karty informacja, nie przycisk
HeroHome .hero, .photo-frame główna zdjęcie z ramką-kształtem Brown i kwadratem Orange (dekoracja aria-hidden)
PageHero .page-hero, .page-hero--text podstrony z zdjęciem lub tekstowy
SectionHeading / TwoCol .section-head, .two-col wiele H2 po lewej, treść po prawej na desktopie
FactsGrid .facts, .facts--2 główna, Misja tylko dane z obecnej strony ze źródłem, jeśli istnieje
ProgramCard / ProgramRow .program-card, .program-row główna, Programy cała karta klikalna jednym linkiem
AudienceList (nowy) .audience główna, Kontakt, 404 wiersz-odnośnik: nazwa + cel linku
AnchorNav (nowy) .anchor-nav Programy, Dla firm, Oferta, Zespół skróty do sekcji długiej strony
ComparisonTable .compare Programy tabela <th scope> na desktopie, karty < 768 px
Gallery (nowy) .gallery, .gallery--3 Programy, Ciastoterapia 2-4 zdjęcia, bez karuzeli
Chips (nowy) .chips Ciastoterapia lista <ul>, nie przyciski
BenefitList .benefits (+ --2, --list) Dla firm, NE, Oferta, Ciastoterapia znacznik kwadrat Orange (dekoracja)
SquareList .squares, .squares--cols wiele lista <ul> z kwadratem
NumberedList .numbered, .numbered--3 KMO, artykuł <ol>, tylko gdy kolejność ma znaczenie
OptionList .options Ciastoterapia formy do wyboru z linkiem „Zapytaj”
OfferTile .offer-tile, .tiles, .offer-tile__num Dla firm zdjęcie po lewej (kadr: --pos, na telefonie --pos-m); na telefonie miniatura 88 px opływana tekstem
Callout / Quote .callout, .callout--question, .manifesto główna, KMO, Misja, NE, artykuł bez atrybucji, jeśli to zdanie fundacji
DownloadCard .download, .downloads, .download__meta KMO, Standardy nazwa, zakres, typ i rozmiar pliku, przycisk z download (rozdz. 7.4)
ExpertCard .expert KMO zdjęcie + biogram + link
GrantNotice .grant KMO obowiązkowa adnotacja MEN jako tekst HTML
FundersStrip .funders, .funders--text główna, Ciastoterapia logo lub sam tekst
SupportBlock (nowy) .support KMO tekst klientki + „Wesprzyj nasze działania” ([data-support], adres z rozdz. 6.1)
RowList (nowy) .rows, .rows--num W sieci reklam (Co wyróżnia program?), Dla firm (CSR: dlaczego warto) lista w wierszach z liniami podziału: numer (opcjonalnie), tytuł, opis; na telefonie jedna kolumna
TeamPhotos (wycofany) / EventPhoto .kadra, .kadra__item, --pos; .kadra--single wariant trzech portretów nieużywany (usunięty z głównej i Misji 30.10.2026); wariant .kadra--single (jedno zdjęcie 4:3 bez kadrowania, brązowy prostokąt, pomarańczowy akcent) - Misja „Kto za tym stoi” jeden komponent i jedna lista zdjęć (rozdz. 9); bez propsów zmieniających kolejność
PersonCard / Founder / TeamGroup .person, .person-full, .founder, .team-group główna, Zespół imię jako H3
ContactForm [data-contact], .form, .contact-form Kontakt, Dla firm rozdz. 7
ContactCard + CopyButton .contact-card, .copy-row, [data-copy] Kontakt, Dla firm wynik kopiowania w role="status"
NewsletterForm .nl-form stopka rozdz. 7
Alert .alert--error/--success/--info formularze ikona + słowo, nie tylko kolor
Accordion [data-accordion], .acc-btn, .acc-panel menu mobilne, spis treści artykułu aria-expanded, aria-controls
ArticleCard / ArticleFeature .article-card, .article-feature Artykuły
TableOfContents .toc, .toc-mobile artykuł desktop przyklejony, telefon akordeon
RelatedProgram .related artykuł
Prose .prose, .prose-wrap artykuł, Misja, dokumenty treść z CMS / Markdown
CTABand .cta-band wszystkie panel Brown w kontenerze, oddzielony od stopki
Footer .site-footer wszystkie
Toast (tylko prototyp) .toast komunikat dla linków spoza zakresu makiet, nie wdrażać

Plansza system-ui.html pokazuje każdy komponent we wszystkich stanach.


5. Stany komponentów

Element Domyślny Hover Focus (klawiatura) Active Nieaktywny / inne
Przycisk główny biały na Orange Dark Orange Darker obrys 3 px Teal Dark, odsunięcie 3 px Orange Darker, przesunięcie 1 px aria-disabled, wyszarzony; wysyłanie: tekst „Wysyłanie…”, aria-busy="true"
Przycisk drugorzędny Brown, obramowanie 1.5 px tło Sand jak wyżej Sand Deep jak wyżej
Przycisk jasny (na Brown) Brown na Ivory tło Sand obrys Ivory
Link w treści / ArrowLink Orange Dark, podkreślony grubsze podkreślenie 3 px, strzałka przesuwa się obrys Teal Dark link zewnętrzny z ikoną i nazwą domeny
Karta programu zdjęcie powiększone 1.03, podkreślony tytuł obrys całej karty (:focus-within) cała karta klikalna jednym linkiem
Pozycja menu Brown podkreślenie obrys Teal Dark belka 3 px Orange Dark pod aktywną pozycją + aria-current „Dla firm” na stronie Dla firm: obrys pierścieniowy
Pole formularza obramowanie Border Input 1 px obrys 3 px Teal Dark błąd: obramowanie Orange Dark 2 px, aria-invalid, komunikat z ikoną pod polem; wypełnione
Akordeon znak „+” obrys rozwinięty: znak „−”, aria-expanded="true"
Ruch przejścia maks. 200 ms, wyłączone przy prefers-reduced-motion

6. Nawigacja

Pełna specyfikacja z zrzutami: nawigacja.html.

Menu (kolejność WEB 1): Programy ▾ (Ciastoterapia, W sieci reklam, Nakarmione Emocje, Wszystkie programy) · Oferta · Artykuły · Misja · Zespół · Kontakt · przyciski „Dla firm” (główny, btn--primary) i „Wesprzyj” (drugorzędny, btn--secondary: jasne tło, brązowy tekst i obramowanie) - oba stałe na każdej podstronie, „Wesprzyj” po prawej od „Dla firm”, odstęp 12 px.

Desktop (≥ 1024 px), panel „Programy” jako disclosure (nie ARIA menu):

Telefon i tablet (< 1024 px):

Stopka: tło Brown, tekst Ivory, linki podkreślone, focus Ivory. Kolumny: dane fundacji (nazwa, adres, KRS, NIP, e-mail) · Strony · Programy + social media · Newsletter; dolny pas: Statut (PDF), Polityka prywatności, Standardy ochrony małoletnich, Regulamin newslettera po lewej; po prawej © i „Wdrożenie strony: Ideavo”, wyrównane w jednej linii z linkami. Na telefonie jedna kolumna, dolny pas: linki, potem © i informacja o Ideavo. Logo bezpośrednio na tle Brown, bez jasnej plakietki: plik logo ma przezroczyste tło (tak samo SVG źródłowy - brak prostokąta tła), a białe litery znaku są czytelne na ciemnym tle. Plakietkę dawało wyłącznie tło kontenera .footer__logo w CSS, usunięte 28.10.2026. W Astro: ten sam plik logo co w nagłówku, bez tła kontenera.

6.1 Adres „Wesprzyj” (Stripe) - wymaganie konfiguracyjne

Wszystkie przyciski wsparcia fundacji („Wesprzyj” w nagłówku i w menu mobilnym, „Wesprzyj nasze działania” na stronie „W sieci reklam”) prowadzą do jednego adresu płatności Stripe (np. Stripe Payment Link fundacji). Nie ma osobnej podstrony darowizn ani formularza płatności na stronie.


7. Formularze, walidacja i komunikaty

7.1 Formularz kontaktowy (Kontakt, Dla firm)

Pola: Imię i nazwisko (wymagane, autocomplete="name") · E-mail (wymagane, email) · Nazwa placówki / firmy (organization) · Temat (wymagane, lista) · Wiadomość (wymagane) · ukryte pole-pułapka www (honeypot, poza widokiem i poza kolejnością Tab).

Lista tematów: Wdrożenie Ciastoterapii · Oferta dla placówek · Współpraca z firmą / CSR · Materiały „W sieci reklam” · Media i partnerstwa · Inne. Temat ustawiany z adresu (?temat=ciastoterapia|placowki|firma|materialy|media|inne); przyciski „Zapytaj…” na stronach programów prowadzą do formularza z wybranym tematem.

Etykiety zawsze nad polem, „(wymagane)” słownie. Pod formularzem: „Informacje o przetwarzaniu danych osobowych znajdziesz w Polityce prywatności.” (link). Treść klauzuli informacyjnej do dostarczenia przez fundację (B-13), nie została dopisana.

Walidacja:

  1. Pierwsza próba wysłania: walidacja wszystkich pól, nad formularzem podsumowanie „Formularz zawiera N błędy/błędów” z listą linków do pól; podsumowanie dostaje focus.
  2. Potem walidacja przy opuszczeniu pola; błąd znika w trakcie poprawiania (nie przy każdym znaku pokazuje nowy).
  3. Pole z błędem: aria-invalid="true", komunikat połączony przez aria-describedby, ikona + słowo „Błąd:”.

Komunikaty (propozycja Ideavo, do akceptacji):

Sytuacja Tekst
Puste imię Błąd: wpisz imię i nazwisko.
Pusty e-mail Błąd: wpisz adres e-mail.
Zły format e-mail Błąd: wpisz adres e-mail w formacie nazwa@domena.pl
Brak tematu Błąd: wybierz temat wiadomości.
Pusta wiadomość Błąd: wpisz treść wiadomości.
Wysyłanie przycisk „Wysyłanie…”, aria-busy="true", blokada podwójnego wysłania
Sukces formularz zastąpiony komunikatem role="status" z focusem: „Dziękujemy, wiadomość została wysłana” / „Odpowiemy na adres e-mail podany w formularzu.”
Błąd wysyłki role="alert": „Błąd: nie udało się wysłać wiadomości” / „Spróbuj ponownie za chwilę albo napisz bezpośrednio na adres kontakt@foodandmind.org. Wpisane dane pozostały w formularzu.”

Stany pokazane na zrzutach: shots/form-{pusty|bledy|wysylanie|wyslano|blad}-{1440|390}.jpg, form-podsumowanie.jpg; na żywo na stronie Kontakt (ciemny pasek przeglądu).

Technicznie (do ustalenia przez Dawida, B-27): obsługa formularza na Cloudflare, odbiorca wiadomości (klientka wskazała magda@foodandmind.org, na stronie widoczny kontakt@foodandmind.org, R-07), ochrona przed spamem bez CAPTCHA wizualnej (honeypot + limit po stronie serwera).

7.2 Newsletter (stopka)

Pole „Adres e-mail” + przycisk „Zapisz się”; pod polem tekst zgody klientki z linkiem do Polityki prywatności. Stany: pusty, błąd formatu („Błąd: wpisz adres e-mail w formacie nazwa@domena.pl”), wysyłanie, sukces „Sprawdź skrzynkę i potwierdź zapis” / „Wysłaliśmy wiadomość z linkiem potwierdzającym.” (double opt-in), błąd zapisu. Wariant ze zgodą jako pole wyboru na planszy UI (R-12, decyzja prawna). Integracja MailerLite do ustalenia.

7.3 Kopiowanie adresu e-mail

Przycisk „Kopiuj adres” obok widocznego adresu; wynik ogłaszany w role="status" („Skopiowano adres.” lub „Zaznacz adres i skopiuj go ręcznie.”). Adres zawsze widoczny i zaznaczalny.

7.4 Pobieranie materiałów „W sieci reklam” (ZIP)

Źródło: 03_TRESCI_KLIENTA/materialy-kmo/ - dwa archiwa przekazane przez klientkę. Bez formularza e-mail i bez dodatkowego etapu.

Przycisk Plik docelowy Rozmiar SHA-256 Zawartość
Pobierz materiały dla klas 1–3 (ZIP) /dokumenty/w-sieci-reklam-klasy-1-3.zip (źródło: Klasy 1-3.zip) 21 510 751 B (21,5 MB) 40fbea8f…b6f5e20a 4 pliki w folderze Klasy 1-3/
Pobierz materiały dla klas 4–8 (ZIP) /dokumenty/w-sieci-reklam-klasy-4-8.zip (źródło: Klasy 4-8.zip) 20 262 241 B (20,3 MB) e63b6472…7047edc4 17 plików w folderze Klasy 4-8/

Pełne sumy: 40fbea8fb9ad6696f14414fe997e9692dca5b3e7398de971885f08e5b6f5e20a (1-3), e63b6472505fa1c2e9845d887f7e87576a7dc599ca8ce8cd4dcf14d77047edc4 (4-8). Archiwa sprawdzone (unzip -t: bez błędów), nie są zamienione miejscami, zawartość i struktura bez zmian; zmieniona tylko nazwa pliku na adres bez spacji.

Wdrożenie w Astro:

  1. Skopiować oba pliki 1:1 do public/dokumenty/ pod nazwami z tabeli (Astro kopiuje public/ bez przetwarzania, pliki będą pod https://www.foodandmind.org/dokumenty/…). Po skopiowaniu porównać sumę SHA-256.
  2. Znacznik przycisku (jak w prototypie): ```html

    Archiwum ZIP, 21,5 MB

Pobierz materiały dla klas 1–3 (ZIP) `` Rozmiar na karcie zaktualizować przy każdej podmianie pliku (najprościej odczytać go w czasie budowania przezfs.statSync). 3. Nagłówki odpowiedzi:Content-Type: application/zip, opcjonalnieContent-Disposition: attachment(np. wpublic/_headersna Cloudflare: reguła dla/dokumenty/*.zip). 4. Limit Cloudflare Pages to 25 MiB na pojedynczy plik; obecne archiwa mają 20,5 MiB i 19,3 MiB. Jeśli kolejna wersja przekroczy limit, plik trzeba podać z R2 pod domeną fundacji (np. subdomena plików), nadal bez Dysku Google. 5. Nie dodawaćnoindex` do strony KMO z powodu plików; pliki ZIP nie są indeksowane jako strony.

Prototyp: w kodzie przycisku jest adres docelowy /dokumenty/…; skrypt prototypu zamienia go na ścieżkę względną i sprawdza, czy plik istnieje w danym podglądzie. W lokalnym prototypie pobieranie działa (test w Chromium: pobrany plik identyczny bajt w bajt ze źródłem). W opublikowanym podglądzie claude.ai pliki nie mogą być umieszczone (limit 16 MB na plik), więc przycisk wyświetla tam komunikat o braku pliku w podglądzie zamiast udawać pobieranie.


8. Klawiatura, focus i WCAG 2.1 AA

Kolejność focusu: Przejdź do treści → logo → Programy (→ 4 pozycje po otwarciu) → Oferta, Artykuły, Misja, Zespół, Kontakt → Dla firm → Wesprzyj → treść strony w kolejności wizualnej → stopka. Na telefonie: logo, Menu; w panelu: Zamknij, Programy, linki, Dla firm.

Focus: obrys 3 px Teal Dark z odsunięciem 2-3 px na jasnych tłach, Ivory na Brown; nigdy outline: none bez zamiennika.

Wymagania do zachowania przy wdrożeniu:

Projekt uwzględnia WCAG 2.1 AA, ale nie jest deklaracją zgodności; zgodność potwierdzają testy po wdrożeniu (rozdz. 13).


9. Zdjęcia

Zasada: zdjęcie przypisane do sekcji według tego, co faktycznie przedstawia, sprawdzone z kontekstem na foodandmind.org. Zdjęcia innych warsztatów nie są pokazywane jako projekt „W sieci reklam”; programy nie są mieszane.

Plik w prototypie Oryginał Co przedstawia Gdzie
ciastoterapia-dziewczynki-warzywa.jpg 05_ZDJECIA … DSC_8679 dziewczynki z marchewkami, zajęcia Ciastoterapii (to samo zdjęcie na obecnej stronie przy Ciastoterapii) hero głównej
ciastoterapia-chipsy-warzywne.jpg DSC_8696 zajęcia Ciastoterapii karta Ciastoterapii (główna)
ciastoterapia-przedszkole-stol.jpg IMG_3954 przedszkolaki przy wspólnym stole hero Ciastoterapii
ciastoterapia-zajecia-z-gory.jpg IMG_2015 karta pracy i materiały na stole (obecna Oferta, placówki) Ciastoterapia, Oferta
ciastoterapia-ilustrowany-przepis.jpg IMG_5344 ilustrowany przepis Ciastoterapia
ciastoterapia-karta-pracy.jpg IMG_1378 karta pracy z roślinnym bohaterem Ciastoterapia
ciastoterapia-praca-plastyczna.jpg IMG_2703 dziecko z pracą plastyczną Ciastoterapia
ciastoterapia-deser-owoce.jpg Kopia IMG_3749 deser z owocami Ciastoterapia
ciastoterapia-warsztaty-sala.jpg lato warsztaty warsztaty Ciastoterapii w sali Programy
oferta-warsztat-dorosli.jpg _MA_5413 warsztat dla dorosłych przy stole hero Oferty
oferta-szkolenie-przedszkole.jpg Kopia zdjęcie 2 szkolenie w przedszkolu z roll-upem Ciastoterapii (na obecnej stronie było przy Nakarmionych Emocjach - przeniesione, bo pokazuje Ciastoterapię) Oferta
glodni-zmian-seniorki.jpg, -rowery.jpg, -rodziny.jpg, -dzieci-kuchnia.jpg IMG_3586, IMG_4795, IMG_3393, IMG_3580 projekty Głodni Zmian (obecna strona: „Warsztaty Głodni Zmian z seniorami”) galeria Głodni Zmian, bez przypisania do pojedynczego projektu (B-21)
instytut-konferencja.jpg obecna strona (programy, Instytut) trzy kobiety na konferencji Programy, Oferta
w-sieci-reklam-infografika.jpg obraz z w sieci reklam.docx infografika projektu z adnotacją MEN KMO, Programy, artykuł
logo-ministerstwo-edukacji.png obecna strona (logos) logo MEN GrantNotice, główna
kadra-amelia-swislowska.jpg · kadra-magdalena-przybylka.jpg · kadra-karolina-bruchal-bak.jpg 05_ZDJECIA/zdjęcia bio/Amelia.jpg, Magda.jpg, Karolina.jpg - tylko przycięte i zmniejszone, bez retuszu portrety; przypisanie sprawdzone z wycinkami tych samych zdjęć na dawnym zdjęciu grupowym nieużywane od 30.10.2026 (komponent TeamPhotos wycofany)
misja-wydarzenie-ciastoterapia.jpg 05_ZDJECIA/zdjęcie - oferta/Kopia zdjęcie 2.jpg - kopia 1:1 (1600 × 1200, bez przycięcia i ponownej kompresji) prowadząca przy ekranie z prezentacją o błonniku i IG, obok roll-up Ciastoterapii Misja „Kto za tym stoi” (od 30.10.2026). To samo ujęcie co oferta-szkolenie-przedszkole.jpg (1200 × 900) - na Misji użyty oryginał zgodnie z poprawką; w Astro można trzymać jeden plik źródłowy i generować rozmiary
zespol-*.jpg (9) 05_ZDJECIA/zdjęcia bio portrety Zespół, główna, KMO
logo-food-and-mind.png render z 04_LOGO/foodmind logo_kolor.svg logo nagłówek, stopka, GrantNotice

Komponent TeamPhotos (wycofany 30.10.2026 ze strony głównej i z Misji zgodnie z poprawkami; kod i kadry zostają w prototypie na wypadek powrotu, w Astro nie wdrażać):

Pozycja Osoba Wycięcie z oryginału (x0, y0, x1, y1) Plik --pos (object-position kadru 4:5)
lewa Amelia Świsłowska Amelia.jpg 134, 175, 903, 1252 640 × 896 50% 33%
środek, największa Magdalena Przybyłka, założycielka Magda.jpg 37, 0, 1022, 1350 820 × 1124 50% 80%
prawa Karolina Bruchal-Bąk Karolina.jpg 19, 0, 2130, 2955 640 × 896 50% 10%

Uwagi:

9.1 Zdjęcia stockowe (ilustracyjne)

Przekazane 28.10.2026 jako komplet do sekcji szkoleń, CSR i Nakarmionych Emocji. Folder 05_ZDJECIA/stocki-foodmind/ nie istniał na dysku w chwili podmiany, więc pliki zidentyfikowano po zawartości na podstawie przesłanych zdjęć. Pozostałe przesłane zdjęcia (kobieta z kawą i burgerem, dłonie wałkujące ciasto, sałatka przy laptopie, notes z croissantami) nie mają przypisania w poprawkach i nie zostały użyte. Jedyne zdjęcie z dwoma możliwymi kandydatami to businesswoman-writing-diary-with-breakfast - użyto kalendarza z datami przy laptopie i owsiance (dosłowny „diary”), a nie notesu z croissantami; do potwierdzenia po dodaniu folderu.

Zdjęcia są ilustracjami: alty opisują to, co widać, bez sugerowania, że to zajęcia fundacji. W prototypie: kopie zmniejszone do 1600 px (bez powiększania, oryginały nienaruszone) w img/stock-<nazwa>.jpg. W Astro przygotować je z oryginałów przez astro:assets.

Miejsce Plik --pos desktop --pos-m telefon Alt
Dla firm - hero close-up-young-colleagues-meeting.jpg 50% 45% 52% 45% Czworo współpracowników przy okrągłym stole w biurze omawia rozłożone dokumenty
Dla firm - kafelek „Szkolenia i warsztaty dla firm” medium-shot-family-cooking-delicious-pizza.jpg 50% 30% 42% 30% Kobieta i mężczyzna wspólnie przygotowują pizzę w jasnej kuchni
Dla firm - kafelek „CSR dla firm” close-up-young-colleagues-meeting.jpg 50% 50% 58% 45% Współpracownicy przy wspólnym stole w biurze podczas rozmowy nad projektem
Temat 01 Stres, emocje i dobrostan serene-peaceful-people-meditating-park.jpg 50% 45% 50% 30% Grupa osób medytuje na matach w parku, przed nimi prowadząca
Temat 02 Komunikacja i współpraca close-up-young-colleagues-meeting.jpg 50% 45% 55% 45% Czworo współpracowników przy okrągłym stole w biurze omawia rozłożone dokumenty
Temat 03 Nawyki i efektywność businesswoman-writing-diary-with-breakfast.jpg 55% 55% 62% 62% Dłoń zapisująca plan w kalendarzu obok laptopa i zdrowego śniadania
Temat 04 Oddech i zimno yoga-action-exercise-healthy-park.jpg 50% 60% 30% 60% Trzy osoby w pozycji dziecka na matach do jogi na trawie
Temat 05 Warsztaty integracyjne i sezonowe middleaged-friends-enjoying-cooking-events.jpg 50% 35% 58% 30% Uśmiechnięci dorośli w fartuchach wspólnie gotują przy kuchennym blacie
Główna - „Współpraca z firmami” close-up-young-colleagues-meeting.jpg 50% 45% 50% 45% Czworo współpracowników przy okrągłym stole w biurze omawia rozłożone dokumenty (kontener 3:2 jak zdjęcie, więc bez przycinania)
Nakarmione Emocje - hero people-attending-therapy-meeting.jpg 62% 50% 60% 50% Grupa dorosłych siedzi w kręgu na pufach i rozmawia, prowadzący z notatnikiem
Programy - wiersz Nakarmione Emocje (spójność z hero) people-attending-therapy-meeting.jpg 72% 50% - jak wyżej
Główna - karta Nakarmione Emocje (spójność z hero) people-attending-therapy-meeting.jpg 55% 50% - pusty (karta ma nazwę programu w nagłówku)

Proporcje kadrów (w CSS aspect-ratio + object-fit: cover):

Miejsce Desktop Telefon
Hero głównej (.photo-frame) 6:5 4:5
Hero podstron 4:3 (z ramką 5:4) 4:3
Karta programu, artykułu, feature 3:2 3:2
Wiersz programu 4:3 3:2
Galeria 4:5 4:5; --3 → 3:2
Kafelek oferty 4:3 1:1, 88 px
Portret (osoba, ekspert, założycielka) 4:5 4:5
Infografika (artykuł, karta) 1:1 3:2 w karcie

Do Astro: obrazy z oryginałów przez astro:assets (AVIF/WebP, srcset, sizes), szerokości ok. 400 / 800 / 1200 / 1600; hero loading="eager" + fetchpriority="high", reszta lazy; zawsze width/height. Logo: zoptymalizowany SVG (obecny ma 2,28 MB, B-16).


10. SEO

Adresy zgodne z architekturą Jakuba; żadnych nowych adresów. Szkolenia i CSR są sekcjami /dla-firm/ (#szkolenia, #csr). /polityka-prywatnosci/ i /regulamin-newslettera/ są w planie Jakuba. Opcjonalna strona /wesprzyj/ z planu Jakuba nie powstaje: przyciski wsparcia prowadzą bezpośrednio do płatności Stripe (rozdz. 6.1).

URL Meta title (Jakub) H1 w makiecie Schema
/ Fundacja Food & Mind - edukacja żywieniowa i dobrostan = Jakub NGO, WebSite
/programy/ Programy: zdrowe odżywianie dzieci | Food & Mind = Jakub CollectionPage + ItemList, BreadcrumbList
/programy/ciastoterapia/ Zajęcia kulinarne w przedszkolu | Ciastoterapia = Jakub WebPage + Service, BreadcrumbList
/programy/nakarmione-emocje/ Dieta a zdrowie psychiczne - Nakarmione Emocje = Jakub WebPage + Service, BreadcrumbList
/programy/nie-daj-sie-reklamie/ Nie daj się reklamie - edukacja medialna w szkole = Jakub (+ nadtytuł „W sieci reklam”) WebPage, BreadcrumbList
/dla-firm/ Wellbeing w firmie - warsztaty i CSR | Food & Mind = Jakub WebPage + Service, BreadcrumbList
/oferta/ Warsztaty dla przedszkoli i szkół | Food & Mind = Jakub WebPage + Service, BreadcrumbList
/kontakt/ Kontakt | Fundacja Food & Mind = Jakub ContactPage + contactPoint
/artykuly/ Artykuły o żywieniu i emocjach dzieci | Food & Mind = Jakub CollectionPage + ItemList
/artykuly/wplyw-reklamy-na-dzieci/ Wpływ reklamy na dzieci i ich wybory żywieniowe = Jakub Article (BlogPosting)
/misja/ Misja Fundacji Food & Mind = Jakub AboutPage
/zespol/ Zespół i eksperci | Fundacja Food & Mind = Jakub AboutPage + Person
/standardy-ochrony-maloletnich/ Standardy ochrony małoletnich | Food & Mind = Jakub WebPage

Meta description: gotowe teksty w arkuszu Jakuba (zakładka „Struktura”), bez zmian. Przekierowania 301: zakładka „Przekierowania” (np. /nie-daj-sie-reklamie.html → /programy/nie-daj-sie-reklamie/, /projekty.html → /programy/). 404 i strony techniczne: noindex.

Odstępstwa od planu nagłówków Jakuba (wszystkie wynikają z braku treści albo z treści klientki):


11. Pominięte moduły (brak potwierdzonych danych)

Nie projektowano z wymyślonymi danymi; komponenty istnieją na planszy UI i można je włączyć, gdy fundacja dostarczy treści.

Moduł Widok Czego brakuje
Efekty w liczbach główna, Ciastoterapia ujednolicone liczby (dziś 80+, 140+, 260+, 500+) - B-01
Opinie / referencje / firmy, które zaufały główna, Ciastoterapia, Dla firm opinie z imieniem i zgodą, logotypy - B-02
Logotypy partnerów poza MEN główna potwierdzona lista - B-02
Najnowsze artykuły + sekcja newslettera na głównej główna jeden artykuł; newsletter jest w stopce
InfoBar Ciastoterapii (wiek, czas, grupa) Ciastoterapia B-03
FAQ, bezpieczeństwo i alergie Ciastoterapia B-04
Wideo „Zanim zaczniesz” KMO plik, napisy, transkrypcja - B-06
Harmonogram, Jak szkoła może dołączyć, Konkurs, Aktualności KMO daty i decyzje - B-07, R-14
Wyniki programu / raport KMO B-08
Krok po kroku, wycena, kto prowadzi (karty), wolontariat Dla firm B-10, B-11
Warsztaty dla szkół, Jak zamówić Oferta B-23
Daty, czas czytania, źródła artykułu artykuł B-05

12. Decyzje otwarte i rzeczy do dostarczenia

Decyzje (klientka / Jakub):

Do dostarczenia przez fundację:

Inne ustalenia redakcyjne w makietach:


13. Testy

Wykonane na prototypie (Playwright, Chromium), shots.py, wynik 272/272:

Przegląd wizualny: wszystkie 14 widoków obejrzane na zrzutach 1440 i 390 (i 320); poprawione m.in. łamanie bloku edukatorów na Ciastoterapii przy 768-1024 px, kafelki tematów na telefonie, układ faktów na Misji, wyrównanie kart CSR.

Do wykonania po wdrożeniu (lista kontrolna Jakuba + 04_WCAG_SEO_CHECKLIST.md):