Designing for Cultural Inclusion

CSS and accessibility as key tools
reggio emilia full stack logo Marco Pollacci 15/07/2025 - Reggio Emilia Full Stack
Hello Folks!
me Marco Pollacci Senior Frontend Developer
@ 40factory logo
gka
qr

Cultural accessibility and inclusion

What does the WCAG tell us? ๐Ÿค”

๐ŸŒŽ WCAG 2.1 and 2.2 include criteria concerning the comprehensibility of content, which depends not only on the user's physical ability but also on their literacy, native language, and cultural context.

wcag-logo

Some criteria to consider:

  • ๐Ÿ“Œ Education level and reading skills
  • ๐Ÿ“Œ Economic conditions
  • ๐Ÿ“Œ Socio-political context
  • ๐Ÿ“Œ Cultural background and norms
  • ๐Ÿ“Œ Religion and belief systems

Some examples

แ•™( โ€ขฬ€ แ—œ โ€ขฬ )แ•—

Cultural background

๐Ÿ‘ฑ๐Ÿปโ€โ™€๏ธ๐Ÿ‘ฉ๐Ÿปโ€๐Ÿฆฐ๐Ÿ‘ฉ๐Ÿป๐Ÿ‘ง๐Ÿฝ๐Ÿ‘ง๐Ÿพ
10 8 75 11

USA ๐Ÿ‡บ๐Ÿ‡ธ

China ๐Ÿ‡จ๐Ÿ‡ณ

Error-related

color

Fortune/success-related

color

10 8 75 11

USA ๐Ÿ‡บ๐Ÿ‡ธ

Egypt ๐Ÿ‡ช๐Ÿ‡ฌ

Attention-related

color

Prosperity-related

color

Colors based on the user's language

with CSS Variables ๐ŸŽจ

Let's Code ๐Ÿ‘จโ€๐Ÿ’ป

  
    :root {
        --background-color: #FFFFFF; /* Neutral white, default color */
    }

    [lang="zh"] { /* Chinese */
        --background-color: #ff5151; /* Blue tone for Chinese, avoiding white */
    }

    body {
        background-color: var(--background-color);
    }
  

Reading and Writing

ู…ู† ุงู„ูŠู…ูŠู† ุฅู„ู‰ ุงู„ูŠุณุงุฑ

(it says from right to left, just like the text is meant to be read in Arabic ๐Ÿ‘€)

โ†”๏ธ LTR <--> RTL

(หถแต” แต• แต”หถ)Lorem ipsum, dolor sit amet consectetur adipisicing elit.
( โ€ข แด– โ€ข ๏ฝก)ู„ูˆุฑูŠู… ุฅูŠุจุณูˆู… ู‡ูˆ ุจุจุณุงุทุฉ ู†ุต ุดูƒู„ูŠ ุจู…ุนู†ู‰ ุฃู† ุงู„ุบุงูŠุฉ ู‡ูŠ ุงู„ุดูƒู„ ูˆู„ูŠุณ

---> margin-right <---

โŒ

โœ… margin-inline-end โœ…

Some implementation tips

เดฆเตเดฆเดฟ(หต โ€ขฬ€ แด— - หต ) โœง

margin[block|inline]

Let's Code ๐Ÿ‘จโ€๐Ÿ’ป

  
    .example {
      margin-block-start: 10rem; //equivalent to margin-top in ltr
      margin-block-end: 10rem; //equivalent to margin-bottom in ltr
      
      margin-inline-start: 10rem; //equivalent to margin-left in ltr
      margin-inline-end: 10rem; //equivalent to margin-right in ltr
    }
  
    .example-together {
      margin-block: 10rem; //equivalent to margin-top and margin-bottom in ltr
      margin-inline: 10rem; //equivalent to margin-left and margin-right in ltr
    }
  

padding[block|inline]

Let's Code ๐Ÿ‘จโ€๐Ÿ’ป

  
    .example {
      padding-block-start: 10rem; //equivalent to padding-top in ltr
      padding-block-end: 10rem; //equivalent to padding-bottom in ltr
      
      padding-inline-start: 10rem; //equivalent to padding-left in ltr
      padding-inline-end: 10rem; //equivalent to padding-right in ltr
    }
  
    .example-together {
      padding-block: 10rem; //equivalent to padding-top and padding-bottom in ltr
      padding-inline: 10rem; //equivalent to padding-left and padding-right in ltr
    }
  

inset[block|inline]

Let's Code ๐Ÿ‘จโ€๐Ÿ’ป

  
    .example {
      position: absolute;
      inset-block-start: 10rem; //equivalent to top in ltr 
      inset-block-end: 10rem; //equivalent to bottom in ltr
      
      inset-inline-start: 10rem; //equivalent to left in ltr
      inset-inline-end: 10rem; //equivalent to right in ltr
    }
    .example-together {
      position: absolute;
      inset-block: 10rem; //equivalent to top and bottom in ltr
      inset-inline: 10rem; //equivalent to left and right in ltr
    }

Not only horizontal direction!

๐Ÿงง

Guess what?

CSS help us to write vertically with writing-mode property

Let's Code ๐Ÿ‘จโ€๐Ÿ’ป

  
    .vertical-left-aligned {
      writing-mode: vertical-lr;
    }
ๆˆ‘ๅฎถๆฒกๆœ‰็”ต่„‘ใ€‚

Let's Code ๐Ÿ‘จโ€๐Ÿ’ป

  
    .vertical-left-invert-aligned {
      writing-mode: sideways-lr;
    }
ๆˆ‘ๅฎถๆฒกๆœ‰็”ต่„‘ใ€‚

Let's Code ๐Ÿ‘จโ€๐Ÿ’ป

  
    .vertical-right-aligned {
      writing-mode: vertical-rl;
    }
ๆˆ‘ๅฎถๆฒกๆœ‰็”ต่„‘ใ€‚

Let's Code ๐Ÿ‘จโ€๐Ÿ’ป

  
    .vertical-right-inverted-aligned {
      writing-mode: sideways-rl;
    }
ๆˆ‘ๅฎถๆฒกๆœ‰็”ต่„‘ใ€‚

multilingual fonts

ู…ุฑุญุจู‹ุง! ไฝ ๅฅฝ! Hello! Bonjour! เคจเคฎเคธเฅเคคเฅ‡!

There are fonts that ensure compatibility with various glyphs characters ( เดฆเตเดฆเดฟ ห™แ—œห™ )

๐Ÿ“ Noto Fonts

๐Ÿ“ Arial Unicode MS

๐Ÿ“ DejaVu Fonts

๐Ÿ“ Roboto

๐Ÿ“ Code2000

๐Ÿš€ Ecc...

And if I can't use a multilingual font?

padre maronno
no-read

By default, browsers seamlessly switch to system fonts

fallout ok guys

BUT

Still a different font!

โ€ข๏ธตโ€ข

โš ๏ธ It's important to manage the font according to the language โš ๏ธ
     
    body {
      font-family: 'Lobster' // only Latin Font
    }
    
    body:lang(ar) {
      font-family: Noto Sans Arabic, sans-serif;
    }
    
    

๐Ÿšจ ALERT! ๐Ÿšจ

Bold opinion here!

bold opinion logo

Universal Design

the weekend blinding lights

What is Universal Design? ๐Ÿค”

The main goal is to create a single solution that works for everyone

The Illusion of the "Universal" User

illusion landscape
๐Ÿ“Œ Iconography: ๐Ÿ’พ

The 'save' icon is not universal, it's generational

floppy
๐Ÿ“Œ Workflows: ๐Ÿ› ๏ธ

A "universal" checkout process that prioritizes credit cards fails in contexts where other methods are the norm

How can we do better?

โˆ˜ โˆ˜ โˆ˜ ( ยฐใƒฎยฐ ) ?

๐Ÿฅ Welcome to ๐Ÿฅ

Plural Design: The Adaptive Approach

- Don't look for ONE solution for everyone

- Create a flexible system that recognizes diverse mental models and presents the most appropriate solution

End Bold opinion

bold opinion logo

เดฆเตเดฆเดฟ ห‰อˆฬ€๊’ณห‰อˆฬ )โœง

Users preferences

๐ŸŽจ

Besides culture, user preferences matter too.

What are they? What do they mean?

๐Ÿ“

Conclusions

๐Ÿ“
Culture and accessibility are two sides of the same coin.
๐ŸŒ
Designing with cultural sensitivity is not a detail or a plus, but the key to a truly inclusive and accessible experience.
thatsall

You can see this slide on

qrcode slide https://css-accessibility-cultural-inclusion-v2.pages.dev/reggio-emilia-full-stack-2025/
Thank you again!
me Marco Pollacci Senior Frontend Developer
@ 40factory logo
Leave some feedback
qrcode slide