- פלטת צבעים מלאה לפרויקט האישי שלך — primary, secondary, accent, 5 neutrals ו-4 semantic colors, עם hex values, ממדי HSL/OKLCH, ובדיקת contrast שכולם עוברים
- קובץ design tokens ב-CSS custom properties — בלוק
:root { ... }מוכן להדבקה, עם תיעוד של כל משתנה ותפקידו - Dark mode שעובד עם toggle — אותו מבנה HTML, החלפת ערכי משתנים בלבד, כולל תמיכה ב-
prefers-color-schemeוב-toggle ידני - פרומפט טמפלייט ל-AI — עם 5 הקטגוריות כפלייסהולדרס, מבנה שמכריח את ה-AI להשתמש בפלטה ולא להמציא צבעים חדשים
- Contrast audit של הפלטה — טבלה עם כל צמדי הטקסט-על-רקע האפשריים וציון WCAG AA/AAA לכל אחד
- מילון של 15 מונחים מקצועיים — מ-complementary ו-analogous ועד oklch ו-prefers-color-scheme
- חלוקה מדויקת לפי חוק 60-30-10 — מיפוי: מה תופס 60% מהמסך, מה 30%, ומה 10% (CTA)
- תוכלו לבנות פלטה מקצועית שלמה (primary, secondary, accent, neutrals, semantic) באמצעות Coolors ב-10 דקות, עם הסבר מדוע כל צבע נבחר
- תוכלו לבדוק contrast ratio של כל צמד טקסט-רקע ולוודא שהוא עומד לפחות ב-WCAG AA (4.5:1 לטקסט רגיל, 3:1 לטקסט גדול)
- תוכלו להגדיר CSS custom properties (design tokens) ולהנחות AI להשתמש אך ורק בהם, במקום לקבוע hex values בתוך המחלקות
- תוכלו להוסיף dark mode לכל אתר עם החלפת משתנים בלבד — ללא שכפול כללי CSS וללא שבירה של contrast
- תוכלו לשלב פלטה בפרומפט ל-AI בפורמט שמכריח עקביות — גם אחרי 10 חידודים הצבעים לא ישתנו
- פרקים קודמים: אין — זה פרק עצמאי. מומלץ (אך לא חובה) לעבור קודם על פרקים 1-2 כדי להבין את הרקע של "AI slop" ו-"premium anatomy"
- ידע מקביל מומלץ: היכרות בסיסית עם Tailwind CSS או עם CSS רגיל (מה זה
colorומה זהbackground-color) — אם יש, מעולה. אם אין, תסתדרו גם בלי - כלים נדרשים: דפדפן Chrome / Edge / Firefox, גישה לכלי AI לבניית אתרים (Cursor / Bolt / Lovable / v0 / Claude — אחד מספיק), חשבון חינמי ב-Coolors.co (לשמירת פלטות)
- אופציונלי אך ממולץ: מסך calibrated (לא חובה — Chrome DevTools יעזור לראות איך הפלטה נראית בהגדרות שונות)
- זמן משוער: 100-120 דקות (כולל תרגילים, בניית פלטה אישית, והגדרת dark mode)
לאורך הקורס אתם בונים את היכולת לקחת אתר גנרי שAI בנה ולהפוך אותו לאתר שנראה כמו עבודת סטודיו — ה-capstone בפרק 13. בפרק הקודם (פרק 2) קיבלתם את האנטומיה של אתר פרימיום — המספרים המדויקים: 8px grid, letter-spacing -0.02em, hero H1 44-56px, ו-4 ה-archetypes. בפרק הזה אתם בונים את הציר הראשון של הזהות הויזואלית: הצבעים. פלטה היא הבסיס שעליו יושבים טיפוגרפיה, layout, ואנימציות. בלי פלטה מוגדרת — AI ממשיך לבחור defaults גנריים גם אם מפרטים כל דבר אחר. בפרק הבא (פרק 4) תלמדו את הציר השני של הזהות — טיפוגרפיה, זוגות פונטים ו-typographic hierarchy. ובפרק 9 (Glassmorphism ו-Aurora UI) תחזרו לפלטה שבניתם כאן — כל האפקטים הויזואליים מתבססים על הצבעים שהגדרתם כאן, כולל אלפא-channels ל-backdrop-filter.
| מונח (English) | תרגום | הגדרה בשורה אחת |
|---|---|---|
| Color Palette | פלטת צבעים | קבוצת הצבעים המוגדרת לפרויקט — בדרך כלל 8-12 צבעים בסך הכל |
| Primary Color | צבע ראשי | הצבע הדומיננטי של המותג — מה שאנשים זוכרים כ"הצבע של האתר" |
| Secondary Color | צבע משני | צבע תומך שיוצר עומק ומסגר את ה-primary, בלי להתחרות בו |
| Accent Color | צבע הדגשה | צבע ניגודי חזק ל-CTA (Call-To-Action) — צריך לעצור את העין |
| Neutral Palette | פלטת ניטרלים | 5 גוונים של אפור/בז' — רקעים, גבולות, טקסט משני |
| Semantic Colors | צבעים סמנטיים | צבעים בעלי משמעות קבועה: success (ירוק), warning (צהוב), error (אדום), info (כחול) |
| Color Harmony | הרמוניה צבעונית | יחס מתמטי בין צבעים בגלגל שיוצר שילוב מרגיש "נכון" |
| Complementary Colors | צבעים משלימים | צבעים מול-מול בגלגל (180°) — קונטרסט מקסימלי, יש להשתמש במינונים |
| Analogous Colors | צבעים סמוכים | 3 צבעים זה לצד זה בגלגל (30° בינהם) — הרמוני ורגוע |
| Contrast Ratio | יחס ניגוד | מספר בין 1:1 ל-21:1 שמודד כמה טקסט קריא על רקע נתון |
| WCAG | תקני נגישות | Web Content Accessibility Guidelines — תקנים של W3C לקריאות; AA = מינימום, AAA = גבוה |
| CSS Custom Properties | משתני CSS | משתנים בסגנון --color-primary: #... שאפשר להשתמש בהם בכל מקום ב-CSS |
| Design Tokens | אסימוני עיצוב | שמות מופשטים להחלטות עיצוביות (color, spacing, typography) — שפה משותפת למעצב, מפתח ו-AI |
| Dark Mode | מצב כהה | גרסה חלופית של האתר עם רקעים כהים וטקסט בהיר — מופעל ידנית או דרך העדפת מערכת |
| prefers-color-scheme | העדפת סכמת צבע | CSS media query שמזהה אם המשתמש העדיף dark/light ב-OS |
3.1 למה צבע הוא הדבר הראשון שמפריד גנרי ממקצועי
תנסו את הניסוי הבא: פתחו 10 אתרים של סטארטאפים ישראליים ב-10 טאבים. הסתכלו עליהם במבט חטוף של 2 שניות לכל אחד. מה תראו? כנראה — ים של כחול-לבן עם אפור. אולי עם מבצע קטן של צהוב. זו לא טעות של האתרים הספציפיים — זה דפוס של השוק כולו. וזה בדיוק מה שהופך אתר ל"נראה כמו כל שאר האתרים".
כשאנשים רואים אתר, הצבע הוא הדבר הראשון שהמוח מעבד — לפני הפונט, לפני ה-layout, לפני ה-copy. זה קורה תוך 90 מילישניות, לפני שהעין הספיקה לקרוא את הלוגו. צבע הוא ה-signature הויזואלי של המותג, ואם ה-signature הזה הוא "blue-600 ו-Tailwind gray-100" — המותג שלכם משדר "עוד SaaS אחד", גם אם המוצר מדהים.
עיצוב מקצועי לא מתחיל ב"איזה צבע יפה לי". הוא מתחיל בפלטה מוגדרת מראש — 8-12 ערכים צבעוניים ספציפיים, כל אחד עם תפקיד מוגדר, כולם עם contrast ratio מתועד. ברגע שהפלטה קיימת כ-CSS custom properties, AI לא יכול להמציא צבעים חדשים — הוא חייב לעבוד בתוך המערכת. זה המהלך היחיד שמעביר אתר מ"רנדומלי" ל"נראה שמישהו חשב על זה".
מה AI עושה בלי פלטה מוגדרת
כשאתם מבקשים מ-AI "build me a SaaS landing page" בלי להגדיר פלטה, מה שקורה הוא: ה-AI בוחר את הערך הסטטיסטי הסביר ביותר — blue-600 כ-primary, gray-100 כרקע, gray-900 לטקסט. אלה ה-Tailwind defaults, וכולם ראו אותם במיליון אתרים אחרים. התוצאה: פלטה גנרית שמשמשת כ-tell של "AI בנה את זה".
אפילו אם תגדירו רק צבע ראשי ("use emerald green") — AI עדיין יבחר secondary, neutrals ו-accents מה-defaults שלו, והתוצאה תהיה פלטה "רבע מוגדרת" שנראית לא עקבית. חייבים להגדיר את כל 5 התפקידים מראש, ולא רק את הצבע הראשי.
למה הפרק הזה הוא ה-ROI הכי גבוה בשלב ה-foundation
הפרק הזה הוא אחד משניים (יחד עם פרק 4 — טיפוגרפיה) שבהם ההשקעה הנמוכה ביותר מחזירה את התוצאה הויזואלית הגדולה ביותר. הנה למה:
- צבעים גלובליים — כל decision צבעוני משפיע על כל אחד מאות האלמנטים באתר. שינוי primary = שינוי של hundreds of buttons, borders, icons, links.
- design tokens הם compounding — פעם שמגדירים את הפלטה כ-CSS custom properties, כל אתר שתבנו אחר-כך עם AI מתחיל עם בסיס עקבי. זה חוסך שעות בכל פרויקט.
- Dark mode "חינם" — אם הפלטה שלכם עשויה נכון, dark mode מתווסף ב-5 שורות CSS. אם לא — זה שכתוב של כל האתר.
- Accessibility compliance — contrast ratio נכון מראש חוסך audit של שעות ותיקונים בדקה 90 של הפרויקט.
פתחו את 5 האתרים הישראליים שאתם מבקרים בהם הכי הרבה (חדשות, בנק, SaaS, e-commerce, portal של העבודה). לכל אחד רשמו 3 שדות: (א) הצבע הראשי, (ב) רקע דומיננטי, (ג) צבע CTA. כמה מהם נמצאים בקבוצת "כחול/לבן/אפור" גרידא? זו הבסיסלינה שאנחנו רוצים לחרוג ממנה.
פתחו אתר שאתם אוהבים ויזואלית (Stripe, Linear, Vercel, Raycast, Notion, Figma, Arc Browser). לחצו F12, בחרו כפתור primary, הסתכלו ב-Computed tab על background-color. רשמו את ה-hex. עכשיו בחרו טקסט רגיל ורשמו את צבעו. אלה 2 מתוך 8-12 הצבעים של הפלטה שלהם — כבר התחלתם reverse-engineering.
מה קורה: Vibe Coder אוסף 5 צבעים מ-Pinterest בלי מערכת — כל אחד מהם יפה לבד, אבל ביחד יוצרים כאוס.
למה זה מפתה: קל להתאהב בצבע יחיד ולהוסיף עוד אחד ועוד אחד מבלי לבדוק אם הם עובדים. ה"יופי" של צבע בודד לא חוזה על "עבודה" ביחד.
מה לעשות במקום: בחרו primary אחד (זה צריך להיות הכי קשה), ואז גזרו את שאר הצבעים ממנו דרך חוקי הרמוניה (הסעיף הבא). תמיד לבדוק על Realtime Colors לפני שמקבעים — אתר אמיתי הוא המבחן האמיתי.
3.2 גלגל הצבעים — ב-10 דקות למתחילים מוחלטים
גלגל הצבעים (Color Wheel) הוא התרשים החזותי הבסיסי של תורת הצבע. במקום לזכור כללים מופשטים, פשוט מסתכלים על מעגל עם 12 צבעים סדורים, ומשם קל להחליט. לא חייבים לזכור אותו בעל-פה — כל הכלים שנראה (Coolors, Adobe Color, Realtime Colors) משתמשים בגלגל באופן גרפי.
המבנה של הגלגל — 3 שכבות
- Primary colors (3): אדום, כחול, צהוב. אלה הצבעים שלא אפשר לייצר ממיקס של אחרים (במודל צבע מסורתי).
- Secondary colors (3): כתום (אדום+צהוב), ירוק (צהוב+כחול), סגול (אדום+כחול). תוצר של שני primary.
- Tertiary colors (6): כל השאר — red-orange, yellow-orange, yellow-green, blue-green, blue-violet, red-violet. תוצר של primary + secondary סמוך.
3 המימדים של כל צבע
כל צבע מתואר ב-3 ערכים שצריך להבין — הם יחזרו בכל כלי שתשתמשו בו:
| מימד | באנגלית | משמעות פשוטה | ערכים |
|---|---|---|---|
| גוון | Hue | "איזה צבע" — המיקום על הגלגל | 0°-360° |
| רוויה | Saturation | כמה הצבע "חי" או "דהוי" | 0%-100% (0 = אפור) |
| בהירות | Lightness | כמה הצבע בהיר או כהה | 0%-100% (0 = שחור, 100 = לבן) |
זהו ה-HSL model (Hue, Saturation, Lightness), והוא הדרך האינטואיטיבית הכי טובה לחשוב על צבע. כשאתם רוצים "אותו צבע, יותר כהה" — פשוט מקטינים את ה-Lightness. כשרוצים "אותו צבע, פחות צורח" — מקטינים את ה-Saturation. נסו את זה ב-Chrome DevTools: כשבוחרים אלמנט, אפשר לגרור את סרגלי ה-HSL ולראות את ההשפעה בזמן אמת.
OKLCH — ה-model החדש שכדאי להכיר
CSS מודרני (2023+) תומך ב-oklch() — מודל חדש שמתקן בעיה ישנה של HSL: ב-HSL, צבעים שונים עם אותה Lightness לא באמת נראים באותה בהירות למוח האנושי. ב-OKLCH — כן. זה אומר ש-gradients נראים חלקים יותר, ומדרגות בפלטה נראות מרווחות שווה.
/* HSL — מדרגות לא אחידות ויזואלית */
--blue-500: hsl(220, 80%, 50%);
--green-500: hsl(120, 80%, 50%); /* נראה בהיר יותר למרות אותו L */
/* OKLCH — מדרגות אחידות ויזואלית */
--blue-500: oklch(55% 0.2 240);
--green-500: oklch(55% 0.2 145); /* באמת נראה באותה בהירות */
לא חובה להשתמש ב-OKLCH מהיום הראשון — HSL ו-HEX עדיין תקינים לחלוטין — אבל כדאי להכיר, במיוחד אם אתם בונים פלטה של 10 shades לכל צבע. Tailwind v4 משתמש ב-OKLCH כברירת מחדל בצבעים שלו.
פתחו color.adobe.com (Adobe Color — חינמי, לא צריך חשבון). תראו גלגל צבעים אינטראקטיבי. סחרבו את הנקודה הראשית לצבע שאתם אוהבים. שנו את ה-"Color rule" מ-Analogous ל-Complementary ול-Triadic — שימו לב איך הצבעים שמסביב משתנים. זה הבסיס החזותי להרמוניות שנדבר עליהן בסעיף הבא.
3.3 חוקי הרמוניה — 4 הקומבינציות שעובדות תמיד
הרמוניה צבעונית (Color Harmony) = יחס מתמטי בין צבעים בגלגל שיוצר שילוב שהמוח תופס כ"נכון". יש כמה עשרות חוקים, אבל 4 מהם מכסים 95% מהמקרים. כל פלטה שתבנו בקורס הזה תתבסס על אחד מהם.
החוקים, עם תיאור וזמן שימוש
| שם | איך זה עובד | זווית בגלגל | מתי להשתמש | דוגמה |
|---|---|---|---|---|
| Complementary משלימים |
2 צבעים במרחק מקסימלי בגלגל | 180° בין הצבעים | CTA שצריך לבלוט, Landing pages אנרגטיים | כחול + כתום (Firefox, ING) |
| Analogous סמוכים |
3 צבעים זה לצד זה | 30° בין כל שניים | עיצוב רגוע, הרמוני, טבעי | ירוק + teal + כחול (Slack) |
| Triadic משולש |
3 צבעים במרחק שווה | 120° בין כל שניים | עיצוב צעיר, playful, עשיר | אדום + צהוב + כחול (Lego) |
| Split-Complementary משלימים פצלים |
צבע ראשי + 2 סמוכים למשלים שלו | 150° + 210° | רוצים קונטרסט אבל פחות אגרסיבי מ-complementary | כחול + כתום-אדום + כתום-צהוב |
הדגשה חשובה: הרמוניה לא מספיקה
שימו לב — אף פלטה מקצועית לא משתמשת רק ב-2 או 3 צבעים הרמוניים גרידא. הפלטה המלאה היא הרמוניה + neutrals + semantics. ההרמוניה קובעת את ה-primary/secondary/accent, והניטרלים והסמנטיים משלימים את התמונה (נראה את זה בסעיף 3.4).
המלצה ל-beginners: התחילו ב-Analogous
אם זו הפלטה הראשונה שאתם בונים — בחרו Analogous. זה הכי סלחני (כל 3 הצבעים מאותה משפחה, קשה לעשות תקלה), זה נראה הכי "פרופשיונלי" בעין לא מאומנת, וזה הכי קל לגזור ממנו neutrals (להוריד saturation ל-5-10% = אפור עם נגיעה של הצבע הראשי). רוב האתרים הפרימיום שאתם מכירים משתמשים ב-Analogous בסוף היום.
| אופי הפרויקט | המלצה ראשונה | חלופה | להימנע |
|---|---|---|---|
| B2B SaaS מקצועי / Fintech | Analogous (כחול-ירוק-teal) | Monochromatic כחול עם accent חם | Triadic (עשיר מדי) |
| יצירתי / Agency / Portfolio | Split-Complementary | Triadic אם רוצים חיוניות | Monochromatic (משעמם) |
| E-commerce luxury | Monochromatic (שחור-זהב, או crème-חום) | Analogous מאופק | Complementary חזק |
| אפליקציה לילדים / Playful | Triadic | Analogous חם (כתום-אדום-צהוב) | Monochromatic כהה |
| חדשות / Editorial | Monochromatic עם accent | Complementary מינימלי | Triadic |
| Wellness / Health / Natural | Analogous (ירוק-teal-כחול) | Earth-tones monochromatic | Complementary שזורח |
הכלל: בספק — לכו על Analogous. זה החוק עם ה-risk הנמוך ביותר והתוצאה הפרימיום הגבוהה ביותר ל-beginners.
פתחו Adobe Color או Coolors. בחרו Color Rule = Analogous. גררו את הנקודה הראשית ל-hue שמתאים למותג שלכם (טכנולוגיה = 200-240°, טבע = 90-150°, אנרגיה = 0-40°). שמרו screenshot של 3 הצבעים שיצאו. אלה הבסיס של primary/secondary/accent.
3.4 אנטומיית פלטה מקצועית — 5 התפקידים
פלטה מקצועית היא לא רק "הרבה צבעים יפים". זו מערכת של 5 תפקידים, כל אחד עם שימוש מוגדר. אם חסר תפקיד — ה-AI ימלא את הפער עם defaults, וחוזרים לגנריות. הנה המבנה המלא:
התפקידים
| תפקיד | מספר ערכים | שימוש | אחוז מהמסך |
|---|---|---|---|
| 1. Primary | 1-3 shades (base + darker + lighter) | לוגו, כותרות דגשים, כפתור ראשי | ~25% |
| 2. Secondary | 1-3 shades | אלמנטים תומכים, icons, highlights, badges | ~15% |
| 3. Accent | 1 shade (לפעמים + hover) | CTA יחיד, דגש ייחודי, מצב "new" או "featured" | ~5-10% |
| 4. Neutrals | 5 shades (50, 200, 400, 700, 900) | רקעים, גבולות, טקסט primary/secondary/muted | ~50-60% |
| 5. Semantic | 4 colors (success, warning, error, info) | הודעות, מצבי validation, toasts, alerts | ~1-5% (בהתאם לאתר) |
פירוט: למה 5 shades לניטרלים
חייבים 5 מדרגות של אפור כדי לכסות את כל ה-use cases:
neutral-50(כמעט לבן): רקע של האתרneutral-200(אפור בהיר): גבולות, dividers, disabled buttonsneutral-400(אפור בינוני): placeholder text, icons secondaryneutral-700(אפור כהה): body textneutral-900(כמעט שחור): headings
פלטה עם רק 2-3 ניטרלים תיאלץ אתכם להשתמש בשחור מוחלט (#000) לטקסט — וזה קשה מדי לעין. ניטרל-900 הוא לא שחור; הוא שחור-עם-נגיעה-של-הצבע-הראשי, וזה מה שנותן לאתר "חום" ויזואלי גם בלי להוסיף צבעים.
טריק מקצועי: neutrals צבועים
האפור שלכם לא חייב להיות אפור "טהור" (H=0°, S=0%). קחו את ה-hue של ה-primary והנמיכו את ה-saturation ל-3-8%. זה יוצר neutrals "חמים" או "קרים" שתורמים לאחדות ויזואלית של כל האתר. דוגמה:
/* Primary: כחול */
--color-primary: oklch(55% 0.18 240);
/* Neutral מסורתי — אפור "מת" */
--neutral-700-bad: oklch(35% 0 0); /* S=0, hue לא משפיע */
/* Neutral מקצועי — אפור "קר" עם נגיעה של primary */
--neutral-700-good: oklch(35% 0.02 240); /* אותו hue כמו primary! */
הטריק הזה לבד מעביר פלטה מ"חובבנית" ל"נראה שמעצב עבד עליה". זה משהו ש-AI לא יעשה אוטומטית — חייבים להגיד לו במפורש.
3.5 Coolors.co — יצירת פלטה ב-3 צעדים
Coolors (coolors.co) הוא הכלי הפופולרי ביותר ליצירת פלטות צבעים. חינמי לשימוש בסיסי, עם חשבון חינמי לשמירת פלטות. יש בו generator אוטומטי, נעילת צבעים, ויצוא לכל פורמט נפוץ (CSS, SCSS, Tailwind, JSON, PNG).
איך להשתמש — 3 צעדים
- צעד 1 — פתיחת Generator: כנסו ל-
coolors.co/generate. יופיעו 5 צבעים אקראיים. לחצו על מקש רווח (Space) — הצבעים מתחלפים. לחצו עוד פעם — חלופה אחרת. זה הלב של Coolors: generator שמייצר פלטות בזרם. - צעד 2 — נעילת הצבע הראשי: כשרואים צבע שאתם אוהבים בעמודה מסוימת (נניח העמודה השנייה), לחצו על סמל המנעול (lock icon) מעליו. מעכשיו לחיצה על רווח משנה את כל השאר חוץ ממנו. כך אתם בונים סביב primary שבחרתם.
- צעד 3 — ייצוא הפלטה: כשיש פלטה שאתם אוהבים, לחצו על הכפתור "Export" למעלה מימין. בחרו פורמט — ה-CSS הוא האופציה הכי שימושית לקורס הזה (יוצר
--color-1,--color-2וכו'). אפשר גם PNG להצגה, JSON ל-handoff, או Tailwind config.
פיצ'רים מתקדמים ב-Coolors — שווים להכיר
- Adjust panel (לחיצה על צבע): כוונון עדין של HSL, alpha, וחיפוש צבע דומה לפי שם.
- Explore (באתר הראשי): אלפי פלטות שמשתמשים בנו ודירגו. חיפוש לפי tag ("pastel", "vintage", "neon", "minimalist") או לפי צבע. מקור השראה מצוין.
- Contrast Checker (בתוך פלטה): Coolors מראה אוטומטית את ה-contrast ratio בין כל צמד צבעים. אדום = fail, ירוק = pass.
- Image palette extractor: מעלים תמונה (לוגו, תמונת מוצר, הר ביפן — מה שרוצים), ו-Coolors שולף את הצבעים הדומיננטיים ממנה.
Workflow מומלץ ב-Coolors
- בחרו את ה-hue של ה-primary לפי אופי המותג (ראו framework 3.14 בהמשך).
- צרו אותו ב-Coolors (אפשר דרך Adjust panel עם HSL מדויק).
- נעלו אותו. לחצו רווח עד שתקבלו secondary ו-accent שמתאימים.
- שמרו את הפלטה בחשבון (חינמי). Coolors נותן URL קבוע לפלטה — תעבירו אותו ל-AI.
- ייצאו ל-CSS ושמרו את ה-output.
כנסו ל-coolors.co/generate. לחצו רווח 10 פעמים — תרגישו כמה מהר אפשר לעבור על אופציות. עכשיו נעלו צבע אחד שאתם אוהבים. לחצו רווח עוד 10 פעמים — תראו איך השאר משתנים סביבו. שמרו את הפלטה (Save למעלה מימין, דורש חשבון חינמי). שמרו את ה-URL — נשתמש בו בסעיף 3.15.
מה קורה: בוחרים פלטה יפה ב-Coolors, מיישמים באתר, מגלים אחרי פרסום שטקסט gray-400 על gray-100 לא קריא למישהו עם ראיה פחות חדה או על מסך לא מקצועי.
למה זה מפתה: גרדיאנטים עדינים ו"אפורים רכים" נראים יפה ב-Pinterest mood boards, אבל לא מספקים קריאות על מסך אמיתי של משתמש אמיתי בתנאים אמיתיים (שמש על מסך laptop, מסך טלפון ישן, משתמש עם בעיית ראייה).
מה לעשות במקום: כל צמד של טקסט על רקע חייב להיבדק ב-WebAIM Contrast Checker (סעיף 3.8). יעד מינימלי: WCAG AA — 4.5:1 לטקסט רגיל, 3:1 לטקסט גדול (18pt+ או 14pt bold). אם לא עובר — כהים את הטקסט או מבהירים את הרקע עד שעובר. אין פשרות כאן.
3.6 Realtime Colors — לראות את הפלטה על אתר אמיתי
Realtime Colors (realtimecolors.com) — הכלי ה-missing link בין פלטה ב-Coolors לבין אתר אמיתי. מציג דף landing מדומה עם hero, features, testimonials, ו-CTA — ומאפשר לכם לשנות את 5 הצבעים של הפלטה (background, text, primary, secondary, accent) ולראות בזמן אמת איך הפלטה נראית על אלמנטים אמיתיים.
למה זה חשוב
פלטה של 5 ריבועים ב-Coolors לא אומרת כלום על איך היא תיראה בפועל. אותם 5 צבעים יכולים להיראות נפלא בתור ריבועים ואיומים כ-hero section עם טקסט. Realtime Colors סוגר את הפער: אתם מדביקים את הצבעים, ומיד רואים איך הם יושבים על לייוואוט סטנדרטי. זה כמו מדידת בגד במראה — הבד מעניין פחות ממה שהבגד נראה עליכם.
איך להשתמש — 3 צעדים
- צעד 1 — פתיחה: כנסו ל-
realtimecolors.com. תראו דף landing מדומה עם 5 פקדי צבע למעלה: Text, Background, Primary, Secondary, Accent. - צעד 2 — הזנת הצבעים: לחצו על כל פקד, הדביקו את ה-hex מהפלטה שלכם ב-Coolors. הדף מתעדכן מיידית — תראו את הכותרת, הכפתורים, ה-icons, וה-cards משתנים.
- צעד 3 — Test variants: יש כפתור "Randomize" למקרה שרוצים לראות חלופות מהירות. יש toggle ל-Dark mode — לחצו ותראו איך אותה פלטה נראית במצב הכהה. שמרו את ה-URL (הוא מקודד את הפלטה) — הוא משמש כ"link לפלטה שלכם ב-preview".
מה לבדוק ב-Realtime Colors
- קריאות של body text על הרקע — אם צריך לכווץ את העיניים, הפלטה לא עבדה.
- בולטות של ה-CTA (accent) — הוא חייב "לצוץ" מתוך הדף. אם הוא מתמזג עם הרקע או עם ה-primary — צריך לבחור accent ניגודי יותר.
- Headings (H1/H2) — הם מרגישים "נשימה" או "לחוצים"? אם לחוצים, אולי הרקע כהה מדי לטקסט השחור.
- Dark mode variant — לחצו על ה-toggle ובדקו אם בסיס הפלטה עובד גם כהה. זה מנבא אם ה-dark mode שלכם יעבוד חלק בהמשך.
קחו את הפלטה מ-Do-Now #5 (ב-Coolors). פתחו realtimecolors.com. הדביקו את 5 הצבעים. הסתכלו 30 שניות. לחצו על toggle ה-dark mode. הסתכלו 30 שניות נוספות. רשמו 2 תצפיות: (א) מה עבד? (ב) מה צריך לשנות? אם הכל עבד — מצוין, זו פלטה נקייה מראשונה. אם יש בעיה — חזרו ל-Coolors ושנו.
3.7 Contrast Ratio ו-WCAG — הכלל שחוסך שדרוגים
Contrast Ratio הוא יחס מספרי בין 1:1 (שני צבעים זהים — בלתי קריא) ל-21:1 (שחור מוחלט על לבן מוחלט — קריאות מקסימלית). המוח שלנו זקוק ליחס מסוים כדי לקרוא טקסט על רקע בלי להתעייף, ו-W3C הגדיר את ה-minimums בתקן WCAG (Web Content Accessibility Guidelines).
הרמות של WCAG
| רמה | טקסט רגיל | טקסט גדול (18pt+ / 14pt bold) | UI components (גבולות, icons) |
|---|---|---|---|
| WCAG AA (מינימום) | 4.5:1 | 3:1 | 3:1 |
| WCAG AAA (מומלץ) | 7:1 | 4.5:1 | לא נדרש |
איזו רמה ליישם בפועל
המטרה הריאלית: WCAG AA על הכל, WCAG AAA על body text. AAA הוא שאפתני מדי ליישום טוטלי (גוזם לכם את כל הניואנסים של אפורים עדינים), אבל AA צריך להיות מינימום מוחלט ולא לפספס. בישראל, ל-law 10838 על נגישות אתרים יש דרישות WCAG AA, אז זה גם חוק — אבל יותר חשוב, זו פשוט הדרך שבני אדם רואים.
3 הצבעים הכי מסוכנים מבחינת contrast
- gray-400 על רקע לבן: יוצר יחס של ~3:1 — עובר רק לטקסט גדול. placeholder זה בסדר, body text — לא.
- Light blue על white: ה"mistake הקלאסי של designer" —
#87CEEBעל#FFFFFFנותן ~1.6:1 — בלתי קריא. - Yellow/Orange accents על white: אם ה-accent הוא צהוב בהיר — הוא כנראה נכשל. יש לכהם אותו ל-amber-600 או dark orange.
הנוסחה (לא חייבים לזכור)
החישוב הוא:
Contrast = (L1 + 0.05) / (L2 + 0.05)
כש-L הוא ה-relative luminance של כל צבע (חישוב של ~10 שורות math). אין צורך לעשות את זה ידנית — WebAIM עושה בשבילכם (ראו סעיף 3.8).
3.8 WebAIM Contrast Checker — בדיקה ב-3 צעדים
WebAIM Contrast Checker (webaim.org/resources/contrastchecker) הוא הכלי הסטנדרטי בעולם לבדיקת contrast. חינמי, אין רישום, פועל מיד. WebAIM הוא ארגון non-profit מאוניברסיטת Utah State שעובד על accessibility כבר 25 שנה — הכלי שלהם מהימן והוא ה-reference של התעשייה.
איך להשתמש — 3 צעדים
- צעד 1 — הזנת 2 צבעים: בדף יש 2 שדות: "Foreground Color" (טקסט) ו-"Background Color" (רקע). הדביקו hex לכל אחד (בלי # — רק 6 תווים). Alternatively, אפשר לפתוח color picker ולבחור ויזואלית.
- צעד 2 — קריאת התוצאה: מספר גדול מופיע במרכז — ה-contrast ratio (למשל
7.25:1). מתחתיו 4 תוצאות: Normal Text AA/AAA, Large Text AA/AAA. כל אחת יכולה להיות "Pass" (ירוק) או "Fail" (אדום). - צעד 3 — תיקון אם fail: אם יש fail, יש 2 סרגלים למטה: "Lightness" לכל צבע. גרירה מורידה/מעלה את ה-lightness. מתעדכן בזמן אמת — תגרירו עד שיש "Pass" בכל השורות. העתיקו את ה-hex החדש ועדכנו בפלטה שלכם.
Workflow מומלץ — audit מלא של הפלטה
עם פלטה של 15 צבעים, יש ~210 צמדים אפשריים. לא חייבים לבדוק את כולם — רק את הצמדים שבפועל ישמשו באתר. רשימת הצמדים הקריטיים:
| Foreground (טקסט) | Background (רקע) | דוגמה |
|---|---|---|
| neutral-900 | neutral-50 | body text רגיל |
| neutral-700 | neutral-50 | body text secondary |
| neutral-500 | neutral-50 | muted text, captions |
| white | primary | טקסט על כפתור primary |
| white | accent | טקסט על CTA |
| neutral-900 | primary-100 | badge / highlight בצבע רך |
| primary | neutral-50 | link טקסט בתוך body |
| error | neutral-50 | הודעת שגיאה |
חייב לעבור את 8 האלה לפחות. אם אחד נכשל — לתקן את הצבע לפני כל דבר אחר. אין "נתקן בהמשך" על contrast.
Browser extensions שווים להכיר
- axe DevTools (Chrome/Firefox): סורק את כל הדף ומזהה בעיות contrast אוטומטית. חינמי, פועל ישירות ב-DevTools.
- WAVE (Web Accessibility Evaluation Tool): גם של WebAIM, סרוק עמוד לכל accessibility issues.
- Chrome Lighthouse: ה-audit ה-built-in של Chrome כולל בדיקת contrast. לחצו F12 → Lighthouse → Accessibility.
פתחו webaim.org/resources/contrastchecker. בדקו את 3 הצמדים האלה מהפלטה שלכם: (א) הטקסט הראשי על הרקע הראשי, (ב) לבן על ה-primary (זה טקסט על כפתור), (ג) ה-accent על הרקע הראשי. רשמו את 3 המספרים. כמה מהם עוברים WCAG AA? אם כולם כן — מעולה. אם לא — זהו מה שצריך לכהם/להבהיר.
| מצב | פעולה ראשונה | פעולה שנייה (אם הראשונה לא מספיקה) |
|---|---|---|
| טקסט סתמי, contrast 3.5:1 | לכהם את הטקסט ב-Lightness (מ-L=50% ל-L=30%) | אם הטקסט כבר כהה — להבהיר את הרקע |
| לבן על primary, contrast 3.2:1 | לכהם את ה-primary (מ-blue-500 ל-blue-700) | אם חייבים את ה-shade הזה — להשתמש בטקסט שחור בכפתור (עם ניגוד 10:1) |
| Accent יפה אבל nigua lav ka — 2.8:1 | לכהם את ה-accent עד שעובר AA | לשמור על ה-accent "יפה" רק ל-backgrounds גדולים (לא לטקסט) ולמצוא accent כהה יותר לטקסט |
| Gradient רקע וטקסט מעליו לא תמיד עובר | להוסיף overlay כהה (rgba 0,0,0,0.4) בין הגרדיאנט לטקסט | או להגביל את הגרדיאנט לאזור ללא טקסט (hero section עם טקסט בצד צבע אחיד) |
| Dark mode — הטקסט הכהה שעבד ב-light נעלם | להפוך את כל ה-scale ב-custom properties: light=neutral-50 → dark=neutral-900, ו-text=neutral-900 → text=neutral-50 | ראו סעיף 3.12 dark mode |
הכלל: בכל ספק — להקריב יופי למען קריאות. אתר מקצועי הוא אתר שאפשר לקרוא. אתר יפה שאי אפשר לקרוא הוא לא יפה, הוא גלריה.
3.9 המלכודת הישראלית — כחול-לבן בכל דבר
אם תסתובבו באתרים של סטארטאפים ישראליים, בנקים, חברות ביטוח, וחנויות online — תזהו דפוס מהר מאוד: כחול + לבן. לפעמים עם אפור. נדיר מאוד עם משהו אחר. למה זה קורה, וחשוב יותר — איך לצאת מזה?
למה כולם מגיעים לאותו כחול-לבן
- "כחול = אמינות" — כל קורס שיווק ראשון מלמד שכחול משדר אמינות (נכון ברמה פסיכולוגית), אז כל מותג שרוצה להיראות "רציני" בוחר כחול. בישראל זה מועצם: דגל המדינה כחול-לבן, אז זה מרגיש "לאומי".
- Tailwind defaults —
blue-600הוא ה-primary שמוצג בכל example ב-Tailwind docs, shadcn/ui, ו-v0 templates. AI פשוט פולט את זה. - "לקוחות אוהבים כחול" — כשאתם מציגים ללקוח שלא בעל רקע עיצובי, כחול תמיד "בסדר". אין התנגדות. זה הופך לבחירה של הססנות עסקית.
- פחד מ-accent חזק — רוב המעצבים הישראלים (ובעיקר של חברות B2B) מפחדים מ-accent "סוער" כמו כתום, אדום, או ורוד — "זה לא מקצועי". אז הם נשארים עם כחול בכל מקום.
למה זה הורג את המותג
כשכל המתחרים שלכם משתמשים באותו כחול-לבן, הצבע מפסיק להיות זהות ומתחיל להיות רעש. הלקוח שזז בין 5 אתרים בשוק שלכם לא יכול להבחין ויזואלית בין מותג א' למותג ב'. אתם משלמים מחיר של זיכרון מותגי נמוך בתמורה ל"אמינות" שממילא לא באמת משודרת אחרת מכולם.
איך לצאת — 3 אסטרטגיות
| אסטרטגיה | מה עושים | דוגמה מהעולם |
|---|---|---|
| Brand color משנה | נשאר כחול כ-primary, אבל accent לא-ברור (חום, ורוד, ירוק-תעשייתי) | Stripe (primary כחול, accent פסטל ורוד-סגול) |
| Hue אחר לגמרי | לא כחול בכלל. ירוק (Natural, fintech מודרני), סגול (creative), כתום (אנרגיה) | Notion (אין צבע — neutral בלבד עם accent), Figma (שחור+סגול) |
| Monochromatic עם accent | הכל neutrals + 1 accent בולט — הלוך ההפוך | Linear (כהה+סגול), Raycast (כהה+אדום) |
גם אם אתם חייבים להישאר עם כחול מסיבות brand, עשו אותו כחול ספציפי. לא blue-600 של Tailwind. משהו כמו:
#0B4F6C— Navy עמוק (Deep Navy), מזכיר Stripe/IBM#145374— Teal-blue, ייחודי יותר#01295F— Royal navy כמעט שחור, luxury#2563EB— לא לבחור! זה כמעט בדיוק blue-600 של Tailwind
אם האתר שלכם עובד עם כחול — פתחו DevTools, בדקו את ה-hex של ה-primary. אם הוא בטווח #2563EB-#3B82F6 — אתם בקלסתר של Tailwind blue-600/500. בחרו עכשיו navy יחודי מ-3 האופציות למעלה (או מ-Coolors עם S=50-60%, L=20-30%). זה שינוי של 5 דקות שמעביר את האתר מ"עוד אחד" ל"משלנו".
מה קורה: כותבים ל-AI "build me a SaaS landing page for fintech" בלי לצרף פלטה. AI בוחר blue-600 כ-primary, white רקע, gray-900 טקסט. אחר-כך מנסים לתקן דרך "make it more premium" — ה-AI מוסיף gradient סגול-כחול וחושב שסידר.
למה זה מפתה: הרבה יותר מהיר לכתוב "premium fintech" מאשר לבנות פלטה של 5 דקות ב-Coolors.
מה לעשות במקום: תמיד לבנות את הפלטה מראש (Coolors → Realtime Colors → WebAIM), ולהכניס אותה לפרומפט כ-CSS custom properties מדויקים. AI נהדר ביישום — לא ברוב הפעמים בבחירה. הפלטה היא החלטה של בעל המותג, לא של כלי. ראו סעיף 3.15 לפרומפט טמפלייט.
3.10 CSS Custom Properties ו-Design Tokens — השפה המשותפת
יש לכם פלטה. יש לכם hex values. עכשיו השאלה: איך שומרים אותם כך שגם אתם, גם מעצב עתידי, גם מפתח עתידי, וגם AI — כולם יוכלו להשתמש בהם בעקביות? התשובה: CSS custom properties (המכונים גם CSS variables), ולמעלה מזה — design tokens.
מה זה CSS custom properties
משתני CSS שמוגדרים פעם אחת ב-:root, ומשתמשים בהם בכל מקום. במקום לכתוב color: #0B4F6C; ב-50 מקומות (ולעדכן ב-50 מקומות אם משנים), כותבים פעם אחת:
:root {
--color-primary: #0B4F6C;
}
.button {
background-color: var(--color-primary);
}
.heading {
color: var(--color-primary);
}
רוצים לשנות את ה-primary? משנים שורה אחת — כל האתר מתעדכן. זו דרך "הפרופ" היחידה לעבוד.
מה זה design tokens
Design tokens הוא מושג רחב יותר. אלה שמות מופשטים להחלטות עיצוביות — לא רק צבעים. כוללים:
- Color tokens: primary, background, text-primary, semantic-success
- Spacing tokens: xs (8px), sm (16px), md (24px), lg (32px), xl (48px)
- Typography tokens: heading-1, body, caption
- Radius tokens: small, medium, large, full
- Shadow tokens: sm, md, lg, xl
בפרק הזה אנחנו מתמקדים בcolor tokens, אבל המושג חוזר לאורך כל הקורס. Spacing tokens יתרחשו בפרק 5, typography tokens בפרק 4, shadow tokens בפרק 2.
שמות טובים לtokens — convention
יש שני סגנונות מקובלים לשמות:
| סגנון | דוגמה | מתי להשתמש |
|---|---|---|
| Functional (תפקידי) | --color-text-primary, --color-background, --color-border |
רוב הפרויקטים — זה מה שאני ממליץ |
| Descriptive (צבעוני) | --color-blue-500, --color-gray-50 |
Design systems גדולים (כמו Tailwind) שצריכים scale |
הכי נכון לערבב: ברמה נמוכה — descriptive (--blue-500: #0B4F6C), וברמה גבוהה — functional (--color-primary: var(--blue-500)). זה מבנה של 2 שכבות, שמקל על dark mode (רק ה-functional משתנה, לא ה-descriptive).
דוגמת tokens מלא (טעימה)
:root {
/* ===== Descriptive tier ===== */
--blue-50: #F0F7FA;
--blue-100: #D9E8F0;
--blue-500: #0B4F6C;
--blue-700: #073449;
--blue-900: #041F2C;
--neutral-50: #FAFAF9;
--neutral-200: #E7E5E4;
--neutral-400: #A8A29E;
--neutral-700: #44403C;
--neutral-900: #1C1917;
/* ===== Functional tier ===== */
--color-primary: var(--blue-500);
--color-primary-hover: var(--blue-700);
--color-background: var(--neutral-50);
--color-surface: white;
--color-text-primary: var(--neutral-900);
--color-text-secondary: var(--neutral-700);
--color-text-muted: var(--neutral-400);
--color-border: var(--neutral-200);
}
זה יאפשר לכם לשנות את ה-primary מ-blue ל-green ב-שורה אחת (--color-primary), בלי לגעת בכל שימוש באתר. הפלטה המלאה תופיע בסעיף 3.11.
פתחו את הפלטה שלכם מ-Coolors. הכינו קובץ tokens.css (או פשוט בלוק ב-Notion). כתבו 5 שורות בלבד — functional tier: --color-primary, --color-background, --color-text-primary, --color-accent, --color-border. לכל אחד ה-hex שמתאים. זה הבסיס שתבנו עליו בסעיף 3.11.
3.11 פלטה מלאה לסטארטאפ ישראלי — דוגמה שלמה
נבנה עכשיו פלטה מלאה לדוגמה — סטארטאפ ישראלי fintech בשם "פסיפס" (שם פיקטיבי לצרכי הדוגמה). המטרה: פלטה שאיננה blue-600 של Tailwind, עם כל 5 התפקידים, design tokens מלאים, ועוברת WCAG AA בכל הצמדים הקריטיים.
ה-brief של "פסיפס"
- תחום: Fintech לעצמאים ועסקים קטנים
- אופי: אמין אבל לא משעמם; עכשווי אבל לא "טק-בובי"
- Archetype: SaaS (Stripe-esque)
- הרמוניה: Analogous (כחול + teal + ירוק) עם accent חם
הפלטה המלאה
| תפקיד | Token | HEX | שימוש |
|---|---|---|---|
| Primary | --color-primary | #0B4F6C | לוגו, כפתור ראשי, כותרות דגש |
| Primary-hover | --color-primary-hover | #073449 | Hover state של primary |
| Secondary | --color-secondary | #2EA39B | Teal — Icons, badges, secondary buttons |
| Accent | --color-accent | #F76E4C | כתום — CTA יחיד, "new" markers |
| Accent-hover | --color-accent-hover | #E55535 | Hover state של accent |
| Neutral-50 | --neutral-50 | #FAFBFC | רקע ראשי של האתר (כמעט לבן, נטייה קרה) |
| Neutral-200 | --neutral-200 | #E4E7EB | גבולות, dividers, disabled |
| Neutral-400 | --neutral-400 | #9AA5B1 | Placeholder text, icons משניים |
| Neutral-700 | --neutral-700 | #3E4C59 | Body text |
| Neutral-900 | --neutral-900 | #1F2933 | Headings, טקסט מודגש |
| Success | --color-success | #2F855A | הודעות הצלחה, checkmarks |
| Warning | --color-warning | #D69E2E | אזהרות לא-קריטיות |
| Error | --color-error | #C53030 | הודעות שגיאה, validation fail |
| Info | --color-info | #2B6CB0 | הודעות info, tooltips |
קוד CSS מלא ומוכן להדבקה
:root {
/* ===== Brand tier (descriptive) ===== */
--brand-blue-50: #E6F0F4;
--brand-blue-100: #C3DBE3;
--brand-blue-500: #0B4F6C;
--brand-blue-700: #073449;
--brand-blue-900: #041F2C;
--brand-teal-500: #2EA39B;
--brand-orange-500: #F76E4C;
--brand-orange-600: #E55535;
/* ===== Neutrals (cool-tinted) ===== */
--neutral-50: #FAFBFC;
--neutral-100: #F4F6F8;
--neutral-200: #E4E7EB;
--neutral-300: #CBD2D9;
--neutral-400: #9AA5B1;
--neutral-500: #7B8794;
--neutral-600: #616E7C;
--neutral-700: #3E4C59;
--neutral-800: #323F4B;
--neutral-900: #1F2933;
/* ===== Semantic ===== */
--semantic-success: #2F855A;
--semantic-warning: #D69E2E;
--semantic-error: #C53030;
--semantic-info: #2B6CB0;
/* ===== Functional tier (this is what components use) ===== */
--color-primary: var(--brand-blue-500);
--color-primary-hover: var(--brand-blue-700);
--color-primary-soft: var(--brand-blue-100);
--color-secondary: var(--brand-teal-500);
--color-accent: var(--brand-orange-500);
--color-accent-hover: var(--brand-orange-600);
--color-background: var(--neutral-50);
--color-surface: #FFFFFF;
--color-surface-raised: #FFFFFF;
--color-text-primary: var(--neutral-900);
--color-text-secondary: var(--neutral-700);
--color-text-muted: var(--neutral-500);
--color-text-on-primary: #FFFFFF;
--color-text-on-accent: #FFFFFF;
--color-border: var(--neutral-200);
--color-border-strong: var(--neutral-300);
--color-success: var(--semantic-success);
--color-warning: var(--semantic-warning);
--color-error: var(--semantic-error);
--color-info: var(--semantic-info);
}
Contrast audit של הפלטה
| Foreground | Background | Ratio | WCAG AA |
|---|---|---|---|
| neutral-900 (#1F2933) | neutral-50 (#FAFBFC) | 15.3:1 | Pass (AAA) |
| neutral-700 (#3E4C59) | neutral-50 | 8.9:1 | Pass (AAA) |
| neutral-500 (#7B8794) | neutral-50 | 4.7:1 | Pass (AA) |
| white | primary (#0B4F6C) | 9.1:1 | Pass (AAA) |
| white | accent (#F76E4C) | 3.3:1 | Pass (AA גדול בלבד) ⚠️ |
| neutral-900 | accent (#F76E4C) | 6.3:1 | Pass (AA) |
| primary | neutral-50 | 9.1:1 | Pass (AAA) |
| error (#C53030) | neutral-50 | 4.9:1 | Pass (AA) |
תובנה חשובה: הכפתור הכתום עם טקסט לבן עובר רק ל-large text (18pt+). לכן במקום טקסט לבן בכפתור ה-accent, נשתמש ב---color-text-on-accent: var(--neutral-900) — טקסט כהה על accent כתום עובר AA. זו ההחלטה הנכונה תמיד עם accents בהירים-חמים.
3.12 Dark Mode — החלפת משתנים בלבד
הנה המתנה: אם בניתם את הפלטה עם functional tokens (סעיף 3.10), dark mode זה 15 שורות CSS. לא שכפול של כל ה-components. לא media queries בכל מקום. פשוט: ב-dark mode, ערכי ה-functional משתנים.
המבנה הבסיסי
/* Light mode — ברירת מחדל */
:root {
--color-background: var(--neutral-50);
--color-surface: #FFFFFF;
--color-text-primary: var(--neutral-900);
--color-text-secondary: var(--neutral-700);
--color-border: var(--neutral-200);
}
/* Dark mode — automatic לפי העדפת OS */
@media (prefers-color-scheme: dark) {
:root {
--color-background: var(--neutral-900);
--color-surface: var(--neutral-800);
--color-text-primary: var(--neutral-50);
--color-text-secondary: var(--neutral-200);
--color-border: var(--neutral-700);
}
}
/* Dark mode — manual override (toggle) */
:root[data-theme="dark"] {
--color-background: var(--neutral-900);
--color-surface: var(--neutral-800);
--color-text-primary: var(--neutral-50);
--color-text-secondary: var(--neutral-200);
--color-border: var(--neutral-700);
}
זהו. ה-CSS של כל ה-components לא משתנה — הם ממשיכים להשתמש ב-var(--color-background) וב-var(--color-text-primary). אבל הערכים שמאחורי אותם שמות משתנים לפי המצב.
Toggle ידני — הקוד המלא
כדי לאפשר למשתמש לבחור (במקום להסתמך רק על preferences OS):
<!-- HTML -->
<button id="theme-toggle" aria-label="Toggle dark mode">🌙</button>
<script>
const toggle = document.getElementById('theme-toggle');
const root = document.documentElement;
// Initialize from localStorage or from OS preference
const saved = localStorage.getItem('theme');
const prefersDark = window.matchMedia('(prefers-color-scheme: dark)').matches;
const initial = saved || (prefersDark ? 'dark' : 'light');
root.setAttribute('data-theme', initial);
toggle.addEventListener('click', () => {
const current = root.getAttribute('data-theme');
const next = current === 'dark' ? 'light' : 'dark';
root.setAttribute('data-theme', next);
localStorage.setItem('theme', next);
});
</script>
זה הכל. 15 שורות JavaScript. המשתמש לוחץ, ה-data-theme="dark" נשמר, וה-CSS משתמש ב-attribute הזה להחלפת המשתנים. ה-preference נשמר ב-localStorage לטעינה הבאה.
מה חשוב בחירת הצבעים ל-dark mode
- לא שחור מוחלט לרקע —
#000יוצר קונטרסט חריף מדי. השתמשו ב-neutral-900(כמעט שחור, עם הצבע-מלוכלך של הברנד). - הפוך את ה-primary רק אם צריך — בדרך כלל blue-500 של light mode עובד גם ב-dark. אם ה-primary שלכם כהה מדי (#0B4F6C), ב-dark mode יעברו ל-blue-400 או blue-300 שיותר קריא על רקע כהה.
- Semantic colors: להבהיר — error צריך להיות #EF4444 בערך ב-dark (לא #C53030 שנשאר מהlight).
- Shadows עובדים פחות טוב ב-dark — במקום box-shadow רגיל, השתמשו ב-border דק או ב-background-color עם מדרגה אחת קלה יותר.
Dark palette לדוגמת "פסיפס"
:root[data-theme="dark"] {
--color-background: #121821; /* לא black טהור */
--color-surface: #1F2933;
--color-surface-raised: #323F4B;
--color-primary: #4FADC9; /* blue-500 מובהר ל-dark */
--color-primary-hover: #6DC1DA;
--color-primary-soft: #1A3544;
--color-accent: #FF8866; /* כתום מובהר קצת */
--color-text-primary: #F5F7FA;
--color-text-secondary: #CBD2D9;
--color-text-muted: #9AA5B1;
--color-border: #3E4C59;
--color-success: #68D391;
--color-warning: #F6AD55;
--color-error: #FC8181;
--color-info: #63B3ED;
}
ב-Realtime Colors (עם הפלטה שלכם מ-Do-Now #6), לחצו על ה-toggle ל-dark mode. איך זה נראה? אם הפלטה שלכם "לבן+כחול+לבן" — הרקע הופך לשחור אבל המראה נראה רע. זה מנבא מה יקרה אצלכם. תקנו: לחצו על color pickers והדביקו ערכים מהדוגמה למעלה (למשל surface=#1F2933). רענן ותראה את השיפור.
| אסטרטגיה | איך עובדת | מתי מתאימה | חיסרון |
|---|---|---|---|
| Auto-only (prefers-color-scheme) | Dark מופיע רק אם ה-OS ב-dark | אתר פשוט, brand, אפליקציה פנימית | משתמש לא יכול לבחור אחרת מ-OS שלו |
| Toggle-only (data-theme) | תמיד light כברירת מחדל, משתמש לוחץ כדי לקבל dark | אתרים marketing, landing pages, blogs | לא מכבד העדפת OS — יכול להיות annoying |
| Hybrid (מומלץ ל-90% מהמקרים) | Default = העדפת OS. משתמש יכול לשנות ולשמור. | רוב האתרים — SaaS, e-commerce, productivity | קוד מעט יותר מורכב (JavaScript לטוגל) |
| Dark-first | Default = dark, אפשר לעבור ל-light | Creative portfolios, dev tools, design agencies | קהל רחב מצפה ל-light כברירת מחדל; יכול להרגיש "שונה" |
| No dark mode | Light only | אתרים קטנים, landing page one-off, דף קמפיין | משתמשים בסביבה חשוכה יסבלו — לא רצוי ל-SaaS בשימוש ארוך |
הכלל: אם המוצר שלכם משמש יותר מ-10 דקות בפעם — חייבים dark mode (hybrid). אם זה landing page של 30 שניות — מיותר.
3.13 חוק 60-30-10 — חלוקת הצבעים שיוצרת איזון
חוק 60-30-10 הוא כלל זהב שמקורו בעיצוב פנים, אבל עובד מושלם באתרים: 60% dominant, 30% secondary, 10% accent. זו לא תיאוריה — זה המבנה שהעין האנושית מצפה לראות במרחב ויזואלי מאוזן.
הפירוק לאתר
| אחוז | תפקיד | צבע טיפוסי | מה זה באתר |
|---|---|---|---|
| 60% | Dominant / Background | Neutral (background + surface) | רקעים של sections, cards, ה-"bulk" של המסך |
| 30% | Secondary | Primary color | כותרות מודגשות, כפתורי primary, icons, links, borders מודגשים |
| 10% | Accent | Accent color | CTA אחד יחיד, badges "new", highlights חריגים |
דוגמה קונקרטית — Hero section של "פסיפס"
מדמיינים hero section של 1440×900 פיקסלים:
- 60% (~864×900 שטח) — רקע
--color-background(neutral-50 #FAFBFC) + טקסט--color-text-primary(neutral-900). כולל את ה-padding והרווח הלבן. - 30% (~432×900 שטח) — תמונת מוצר עם blue overlay (primary #0B4F6C). כולל את ה-navbar blue links, logo, heading dense blue.
- 10% (~144×900 שטח) — כפתור CTA אחד בצבע accent (#F76E4C) + badge "Beta" אחד ליד הלוגו בצבע accent.
התוצאה: העין מבינה מיד ש"הלחיצה" היא על הכתום — כי הוא היחיד. אם היו 5 כפתורים כתומים, אף אחד מהם לא היה בולט. החוק של 60-30-10 הוא בעצם הכלל של הגבלת ה-accent: יש רק accent אחד בכל מסך.
איך לדעת אם אתם עומדים בחוק
טיפ פרקטי: פתחו screenshot של ה-hero שלכם ב-Photoshop / Figma / Photopea. השתמשו ב-Eyedropper ודגמו 10 נקודות רנדומליות. ספרו כמה מהן Neutral vs Primary vs Accent. אם ה-distribution לא בערך 6:3:1 — יש לכם בעיית איזון. אם כל 10 הנקודות הן primary — אתם באזור ה"כחול בלי סוף" מסעיף 3.9.
חריגים ומצבים שבהם 60-30-10 לא עובד
- Dark immersive hero (Agency archetype): 80% dominant (רקע שחור), 15% primary, 5% accent.
- Colorful product (Lego, Apple at its peak): 50% dominant, 25% primary, 25% accent — יותר תפקיד לצבע.
- E-commerce luxury (Chanel): 70% dominant (שחור/לבן/crème), 25% primary (זהב/bronze), 5% accent.
פתחו screenshot של ה-hero הנוכחי שלכם (או של כל אתר שאתם בונים). ב-Figma/Photopea/Preview, דגמו 10 נקודות (לחיצה בגוון אקראי בכל אזור). ספרו את ה-distribution: כמה neutrals, כמה primary, כמה accent. רשמו את האחוזים. אם אתם לא באזור 60-30-10, רשמו מה צריך לשנות (בדרך כלל: להחליף שימושי primary בneutrals, או להקטין את היחס של ה-accent).
3.14 צבעים שמעבירים מסר — אמינות, אנרגיה, יוקרה, טבע
יש מחקרים רבים על השפעת צבע על תפיסה. הרבה מהם גבוליים מבחינה מדעית (color psychology הוא תחום עם הרבה adaptation תרבותית ופרטנית), אבל יש כמה חוקי-אצבע שעובדים מספיק טוב לשמש נקודת התחלה. השתמשו בזה כ-framework ראשוני, לא כאמת מוחלטת.
טבלת המסרים — הצבעים העיקריים
| Hue | מסר עיקרי | תעשיות טבעיות | שמות מוצרים מוכרים |
|---|---|---|---|
| כחול עמוק | אמינות, רצינות, יציבות | Fintech, Healthcare, Corporate, Enterprise | Stripe, PayPal, Intel, IBM |
| כחול בהיר / Teal | נקיון, מודרניות, טכנולוגיה | SaaS, Productivity, Cloud, Communications | Slack (teal), Twilio, Dropbox |
| ירוק | טבע, צמיחה, בריאות, אקולוגיה | Health, Fitness, Finance (growth), Sustainability | Spotify (green), Whole Foods, Duolingo |
| סגול | יצירתיות, יוקרה, רוחניות, אומנות | Creative tools, Beauty, Spirituality, Premium | Figma (purple), Twitch, Yahoo, Hallmark |
| אדום | אנרגיה, דחיפות, אהבה, מלחמה | Food, Entertainment, Sports, E-commerce | YouTube, Netflix, Coca-Cola, Target |
| כתום | ידידותיות, צעירות, אופטימיות | E-commerce, Entertainment, Food, Kids | Amazon (orange), HubSpot, Nickelodeon |
| צהוב | שמחה, אזהרה, אנרגיה חמה | Fast food, Children, Construction warnings | McDonald's, Snapchat, IKEA, DHL |
| ורוד / Rose | ספורטיביות בלי גסות, female-coded, playful | Beauty, Fashion, D2C brands, Social apps | T-Mobile (magenta), Glossier, Airbnb |
| שחור | יוקרה, מיניולציה, כח, סוד | Luxury, Fashion, High-end tech, Gaming | Chanel, Tesla, Linear, PlayStation |
| חום / Earth-tones | אותנטיות, warmth, מסורת, נוחות | Artisan, Food (organic), Travel, Home | UPS (brown), Patagonia, Hershey's |
3 חוקים לבחירה לפי מסר
- הבחירה הראשונה היא hue, לא shade — החליטו קודם "כחול / ירוק / סגול", ואז תתחילו לחפש את ה-shade הנכון בתוך אותה משפחה.
- ה-accent בדרך כלל מנוגד למסר של primary — אם primary הוא "אמין" (כחול), accent הוא "אנרגיה" (כתום/אדום). זה יוצר דינמיקה.
- Context תרבותי משנה — בישראל אדום יכול להיות "רציני/מלחמתי" (דגל, צבא), בעוד שבסין הוא "מזל ושגשוג". חושבים על הקהל המטרה לפני הבחירה.
3.15 פרומפט AI — הטמפלייט שמזין פלטה בלי שהוא יחליף אותה
עכשיו שיש לכם פלטה מלאה, design tokens, ו-dark mode — צריך להזין את זה ל-AI בצורה שלא תיתן לו לסטות. זה יותר קשה ממה שזה נשמע: ברירת המחדל של Bolt/Lovable/v0 היא לבחור צבעים בעצמם. אם לא מחזיקים אותם בקו — הם יחזרו לblue-600 אחרי 3 איטרציות.
הטמפלייט — ready to copy-paste
DESIGN TOKENS — USE THESE EXACTLY. DO NOT INVENT NEW COLORS.
Define these CSS custom properties in:rootand use only var(--...) references throughout the site. Never hardcode hex values in class attributes or style attributes.
Brand colors:
--color-primary: [PRIMARY_HEX]; /* [PRIMARY_DESCRIPTION, e.g. "deep navy, brand identity"] */
--color-primary-hover: [PRIMARY_HOVER_HEX];
--color-secondary: [SECONDARY_HEX]; /* [SECONDARY_DESCRIPTION] */
--color-accent: [ACCENT_HEX]; /* CTA only, used sparingly */
--color-accent-hover: [ACCENT_HOVER_HEX];
Neutrals (5 shades):
--neutral-50: [NEUTRAL_50_HEX]; /* page background */
--neutral-200: [NEUTRAL_200_HEX]; /* borders, dividers */
--neutral-400: [NEUTRAL_400_HEX]; /* muted text, placeholders */
--neutral-700: [NEUTRAL_700_HEX]; /* body text */
--neutral-900: [NEUTRAL_900_HEX]; /* headings */
Semantic colors:
--color-success: [SUCCESS_HEX];
--color-warning: [WARNING_HEX];
--color-error: [ERROR_HEX];
--color-info: [INFO_HEX];
RULES — enforce strictly:
1. The ONLY CTA color is--color-accent. There must be exactly ONE primary CTA per screen.
2. Follow the 60-30-10 rule: ~60% neutrals (background + surfaces), ~30% primary (headings, links, primary buttons), ~10% accent (single CTA, badges).
3. All text must pass WCAG AA contrast: body text 4.5:1 minimum against its background; large text 3:1.
4. Do NOT use Tailwind defaultblue-600,purple-600, orpurple-to-bluegradients anywhere. Do NOT introduce colors that aren't in the palette above.
5. Dark mode: implement with@media (prefers-color-scheme: dark)AND a manual toggle via[data-theme="dark"]. In dark mode, invert the neutrals: background → --neutral-900, surface → --neutral-800, text → --neutral-50.
6. At the end, output a contrast audit: list each critical text-on-background pair with its ratio. Flag any that don't meet AA.
איך להשתמש — 4 צעדים
- החליפו את כל ה-placeholders (הערכים בסוגריים מרובעים) עם ה-hex מהפלטה שלכם מסעיף 3.11.
- הדביקו את הטמפלייט בתחילת הפרומפט, לפני שמתחילים לתאר את תוכן האתר.
- הוסיפו תיאור שגרתי של האתר אחרי ("Build a landing page for a fintech startup for Israeli freelancers with sections: hero, features, pricing, testimonials, CTA").
- בסוף הפרומפט, הוסיפו: "At the end, verify that all colors used are from the palette above, with no additions. Flag any violations."
דוגמת פרומפט מלא עם פלטת "פסיפס"
DESIGN TOKENS — USE THESE EXACTLY. DO NOT INVENT NEW COLORS.
Brand colors:
--color-primary: #0B4F6C;
--color-primary-hover: #073449;
--color-secondary: #2EA39B;
--color-accent: #F76E4C;
--color-accent-hover: #E55535;
Neutrals:
--neutral-50: #FAFBFC; --neutral-200: #E4E7EB; --neutral-400: #9AA5B1; --neutral-700: #3E4C59; --neutral-900: #1F2933;
Semantic: --color-success: #2F855A; --color-warning: #D69E2E; --color-error: #C53030; --color-info: #2B6CB0;
[כאן — הכללים 1-6 מלמעלה]
Now build: A landing page for "Pesipas" — a fintech SaaS for Israeli freelancers managing invoices and taxes. Archetype: Stripe-esque. Sections: Hero, 3 features (auto-invoicing, tax prep, expense tracking), 2-tier pricing, 3 testimonials, final CTA. Hebrew copy, dir="rtl", Heebo for headings and Assistant for body.
תוספת ל-RTL / עברית
אם האתר בעברית, הוסיפו את הבלוק הזה בסוף הפרומפט:
HEBREW/RTL SPECIFIC:
- Language: Hebrew primary, dir="rtl" on the root.
- All semantic colors (success/warning/error/info) must be recognizable to Israeli users — avoid associations that differ (e.g., don't use green for "error" which some cultures do).
- Logo and primary buttons must appear on the correct RTL side (top-right for logo, CTAs on the right or centered).
- Dark mode especially important — many Israeli tech users work in dark environments.
קחו את הטמפלייט למעלה. החליפו את ה-placeholders עם הפלטה שלכם (מסעיפים 3.5 ו-3.11). הריצו ב-Bolt/Lovable/v0/Claude: "Build a landing page for [YOUR PROJECT] using the design tokens above." הרציתם את הגרסה הגנרית ב-Do-Now #1 של הפרק (אם עשיתם את פרק 1) — השוו את 2 התוצאות. רשמו 3 הבדלים ויזואליים בולטים.
- בחרו מותג / פרויקט אישי אמיתי (או פיקטיבי — "חנות קפה ב-תל אביב", "SaaS לאימון כושר", "פלטפורמת חינוך").
- בחרו Archetype (SaaS / Agency / Portfolio / E-commerce) — ראו פרק 2 אם צריך תזכורת.
- בחרו חוק הרמוניה (Analogous / Complementary / Triadic / Split-Complementary) — השתמשו ב-framework 3.3.
- פתחו
coolors.co/generateובנו פלטה של 5 צבעים: primary, secondary, accent, ו-2 neutrals. - הרחיבו את ה-neutrals ל-5 shades ע"י התאמת lightness (
coolors.co/adjust). - הוסיפו 4 semantic colors (success, warning, error, info) — בחרו מ-Tailwind palette או בנו בעצמכם.
- שמרו את הפלטה בחשבון Coolors ורשמו את ה-URL.
- ייצאו את הפלטה ל-CSS (
Export → CSS).
מה צריך להיות בסוף: URL של פלטה ב-Coolors, קובץ CSS עם 5+5+4 = 14 צבעים, וטבלה שמתעדת לכל צבע את תפקידו ואת ה-hex.
- לקחו את הפלטה מתרגיל 1.
- פתחו
webaim.org/resources/contrastchecker. - בדקו את 8 הצמדים הקריטיים מסעיף 3.8 (neutral-900 על neutral-50, white על primary, וכו').
- רשמו את ה-contrast ratio לכל אחד בטבלה.
- לכל צמד שנכשל ב-AA — גררו את ה-lightness עד שעובר, ועדכנו את הערך בפלטה.
- וודאו גם לעבור AAA על body text (7:1) — זה bonus אבל קריטי לקריאות ארוכה.
מה צריך להיות בסוף: טבלה של 8 שורות עם FG/BG/Ratio/WCAG-status, והוכחה שכל הצמדים עוברים AA לפחות.
- צרו קובץ בשם
tokens.css(או blok ב-style tag של index.html). - חלקו לשני tier: "Descriptive" (--blue-50, --blue-500, --neutral-200, וכו') ו-"Functional" (--color-primary, --color-text-primary, --color-background, וכו').
- הוסיפו תיעוד (CSS comments) לכל קבוצה.
- השתמשו בפלטה שעברה contrast audit מתרגיל 2.
- הוסיפו את כל 14 הצבעים + functional aliases (בסך הכל ~25 CSS custom properties).
- בדקו שה-file עובד: פתחו HTML פשוט, הוסיפו
<div style="background: var(--color-primary); color: var(--color-text-on-primary); padding: 24px">Hello</div>— ובדקו שהצבעים מופיעים.
מה צריך להיות בסוף: קובץ tokens.css מלא של 40-60 שורות, עם תיעוד, מוכן להדבקה לכל פרויקט עתידי.
- הרחיבו את
tokens.cssמתרגיל 3 עם@media (prefers-color-scheme: dark)שמחליף את ה-functional tokens. - הוסיפו גם
:root[data-theme="dark"] { ... }עם אותם ערכים — לתמיכה בtoggle ידני. - וודאו ש-contrast עובר AA גם בdark (רוב ה-neutrals פשוט מתהפכים — 50↔900, 200↔700 — אבל primary/accent יכולים להצריך התאמה).
- בנו דף HTML פשוט עם: navbar, hero, 2 cards, footer. השתמשו רק ב-
var(--...). - הוסיפו כפתור toggle ב-HTML + JavaScript (15 שורות מסעיף 3.12).
- בדקו: לחצו על toggle — הכל חייב להתחלף חלק. סגרו וחזרו — השמירה חייבת להישמר ב-localStorage.
- בדקו ב-DevTools → Application → Local Storage שהערך נשמר.
מה צריך להיות בסוף: דף HTML עצמאי עם dark mode תקין, toggle פעיל, ו-persistence ב-localStorage. שתי גרסאות שצריכות לעבור WCAG AA.
- קחו את הטמפלייט מסעיף 3.15 ואת הפלטה מתרגיל 1.
- מלאו את כל ה-placeholders עם הערכים הקונקרטיים שלכם.
- הריצו ב-2 כלי AI שונים (Bolt/Lovable/v0/Cursor) את אותו פרומפט.
- השוו את 2 התוצאות. הסתכלו במפרט: האם הצבעים מופיעים כ-CSS custom properties? האם השתמש בהם בלבד או המציא חדשים?
- אם AI הוסיף צבעים לא בפלטה — זהו אילו (נפוץ: הוא יוסיף shades נוספים של primary כמו blue-300/blue-400). הוסיפו לפרומפט: "Do not add any shades of primary or accent beyond those defined above."
- הריצו שוב. השוו.
- בדקו ב-DevTools: לחצו F12, בדקו ב-
:rootשכל ה-custom properties נמצאות. בדקו על אלמנט ש-background משתמש ב-var(--color-primary)ולא hex מקודד.
מה צריך להיות בסוף: 2 אתרים שנוצרו ב-2 כלי AI שונים עם אותה פלטה, בדיקה ויזואלית של consistency, ופרומפט מעודכן v1.1 עם כללים שהוספתם בעקבות מה שגיליתם.
| תדירות | מה לעשות | כמה זמן |
|---|---|---|
| בכל פרויקט חדש | לפני שכותבים שורת פרומפט — בונים פלטה ב-Coolors, מעבירים ב-Realtime Colors, בודקים ב-WebAIM. מסכמים ב-tokens.css. רק אז מתחילים build. | 30-45 דקות |
| יומי (בזמן פיתוח) | בכל סשן פיתוח עם AI — לוודא שהפרומפט כולל את הטמפלייט מ-3.15. בסוף הסשן, לבדוק ב-DevTools שאין hex values מקודדות (search "#" ב-inline styles). | 5 דקות בתחילה + 3 בסוף |
| שבועי | לבדוק את הפלטה של הפרויקט על 3 מכשירים שונים (laptop, phone, monitor גדול). בתנאי תאורה שונים (חדר בהיר, חשוך, שמש ישירה). לרשום אם יש בעיות contrast בפועל. | 15 דקות |
| חודשי | לפתוח את ה-library האישית של פלטות — לבדוק אם יש שניים שהתחילו להידמות מדי ("עוד כחול-teal"). להוסיף פלטה חדשה משמעותית שונה לקולקציה. | 30 דקות |
תגדירו עכשיו את הצבע הראשי שלכם — ובלבד שלא יהיה #2563EB / #3B82F6 / blue-600 / blue-500. בחרו עוד hue או shade. פתחו Coolors ל-30 שניות, לחצו רווח עד שמוצאים צבע שמרגיש לכם "שלכם", העתיקו את ה-hex, שמרו ב-tokens.css כ---color-primary. זהו. השינוי הזה לבד יעביר את האתר שלכם מ"עוד אחד בים של כחול ישראלי" ל"משהו שזוכרים". מ-החלטה של 30 שניות — תמורה שנמשכת לאורך כל חיי המותג.
- מה 5 התפקידים בפלטה מקצועית, וכמה shades צריך לכל אחד? (רמז: primary, secondary, accent, neutrals, semantic)
- מה ההבדל בין WCAG AA ל-AAA, ואיזה יעד ראוי לטקסט body בפועל? (רמז: 4.5:1 vs 7:1, AAA לbody AA לשאר)
- איך dark mode עובד עם החלפת משתנים בלבד, ולמה זה הופך functional tier חשוב יותר מ-descriptive? (רמז: ה-functional משתנה, ה-descriptive נשאר — components לא צריכים לדעת)
- למה "blue-600 של Tailwind" היא בחירה גרועה לסטארטאפ ישראלי ב-2026? (רמז: Tailwind default + דפוס השוק המקומי + קושי להיבדל)
- מה חוק 60-30-10 אומר בדיוק, ואיך לבדוק אם אתר שלכם עומד בו? (רמז: 60% neutrals, 30% primary, 10% accent; eyedropper על 10 נקודות)
בפרק הזה יצרתם את הציר הראשון של זהות ויזואלית מקצועית: פלטת צבעים שלמה עם design tokens ו-dark mode. התחלתם מאפס — גלגל צבעים, 4 חוקי הרמוניה, 5 התפקידים של פלטה מקצועית. הכרתם 3 כלים חינמיים שהם הסטנדרט בתעשייה: Coolors ליצירה, Realtime Colors לפריוויו על אתר אמיתי, ו-WebAIM Contrast Checker לוודא שהפלטה עוברת WCAG AA.
הצעד הקריטי היה המעבר מ"פלטה ברשימה" ל"פלטה כ-design tokens ב-CSS custom properties". 2 שכבות: descriptive tier (--blue-500) ו-functional tier (--color-primary). השכבה הפונקציונלית היא המפתח ל-dark mode בחינם: 15 שורות CSS שמחליפות את הערכים הפונקציונליים לפי @media (prefers-color-scheme) או data-theme="dark". ה-components לא משתנים — רק הערכים מאחורי השמות.
למדתם למה "blue-600 של Tailwind" היא מלכודת במיוחד בשוק הישראלי — ואיך לצאת ממנה עם navy מוגדר, monochromatic עם accent, או hue אחר לגמרי. חוק 60-30-10 שנותן לכם דרך מהירה לבדוק אם החלוקה הצבעונית באתר מאוזנת. וכמובן — פרומפט טמפלייט שמזין את הפלטה ל-AI באופן שלא נותן לו לסטות חזרה ל-defaults הגנריים.
יש לכם עכשיו 3 deliverables מוחשיים: (1) פלטת הצבעים האישית שלכם — 14 צבעים, בדוקת WCAG, (2) קובץ tokens.css שמוכן להדבקה בכל פרויקט עתידי, (3) dark mode שפועל עם toggle. שלושתם ביחד הופכים את ה-"מה הצבע שלנו?" משאלה לפתוח לכל פרויקט ל-decision שנעשה פעם אחת ונשמר לתמיד.
הגשר לפרק הבא: בפרק 4 — "טיפוגרפיה שמשנה הכל" — תבנו את הציר השני של זהות ויזואלית: פונטים ו-typographic hierarchy. תראו איך לבחור זוג פונטים (display + body) שעובדים יחד, תגדירו typography scale שלם (h1 עד h6 + body + caption) בתור CSS custom properties דומים לאלה מהפרק הזה, תלמדו להתמודד עם האתגרים הייחודיים של עברית (Heebo, Assistant, Rubik, Noto Sans Hebrew), ותוסיפו עוד בלוק לפרומפט הטמפלייט של AI — עכשיו עם צבעים + טיפוגרפיה.
- הבנתי את 3 המימדים של צבע (Hue, Saturation, Lightness) ויודע/ת לשנות כל אחד ב-DevTools
- מכיר/ה את 4 חוקי ההרמוניה (Complementary, Analogous, Triadic, Split-Complementary) ויודע/ת מתי להשתמש בכל אחד
- בחרתי חוק הרמוניה לפרויקט האישי שלי על בסיס framework 3.3
- פתחתי Coolors ובניתי פלטה של 5 צבעים (primary, secondary, accent, 2 neutrals)
- הרחבתי ל-5 shades של neutrals ו-4 semantic colors (סך הכל ~14 צבעים)
- הרצתי את הפלטה ב-Realtime Colors וראיתי אותה על landing page מדומה
- בדקתי 8+ צמדי contrast ב-WebAIM Contrast Checker — כולם עוברים WCAG AA
- יצרתי קובץ tokens.css עם descriptive tier + functional tier (כ-25 custom properties)
- הוספתי
@media (prefers-color-scheme: dark)block עם הצבעים המתהפכים - הוספתי
:root[data-theme="dark"]לtoggle ידני + JavaScript של 15 שורות - בדקתי שה-toggle עובד וששמירת ה-preference פועלת ב-localStorage
- מיפיתי את הפלטה לחוק 60-30-10 — דגמתי 10 נקודות וראיתי שה-distribution בערך נכון
- העתקתי את הטמפלייט של הפרומפט AI ומילאתי את ה-placeholders עם הפלטה שלי
- הרצתי את הפרומפט בכלי AI ו-אימתתי שהתוצאה משתמשת ב-
var(--...)ולא ב-hex מקודד - יישמתי את "Just One Thing" — בחרתי primary שהוא לא Tailwind's blue-600/500
- יודע/ת לענות על 5 שאלות ה-"בדקו את עצמכם"