diff --git a/curriculum/challenges/chinese-traditional/02-javascript-algorithms-and-data-structures/basic-javascript/multiple-identical-options-in-switch-statements.md b/curriculum/challenges/chinese-traditional/02-javascript-algorithms-and-data-structures/basic-javascript/multiple-identical-options-in-switch-statements.md index b94f5c079de..634cd2f46b3 100644 --- a/curriculum/challenges/chinese-traditional/02-javascript-algorithms-and-data-structures/basic-javascript/multiple-identical-options-in-switch-statements.md +++ b/curriculum/challenges/chinese-traditional/02-javascript-algorithms-and-data-structures/basic-javascript/multiple-identical-options-in-switch-statements.md @@ -13,7 +13,7 @@ dashedName: multiple-identical-options-in-switch-statements ```js let result = ""; -switch(val) { +switch (val) { case 1: case 2: case 3: @@ -127,7 +127,7 @@ sequentialSizes(1); function sequentialSizes(val) { let answer = ""; - switch(val) { + switch (val) { case 1: case 2: case 3: diff --git a/curriculum/challenges/chinese-traditional/02-javascript-algorithms-and-data-structures/basic-javascript/replacing-if-else-chains-with-switch.md b/curriculum/challenges/chinese-traditional/02-javascript-algorithms-and-data-structures/basic-javascript/replacing-if-else-chains-with-switch.md index 8ebaddff5bb..a1de91ea11c 100644 --- a/curriculum/challenges/chinese-traditional/02-javascript-algorithms-and-data-structures/basic-javascript/replacing-if-else-chains-with-switch.md +++ b/curriculum/challenges/chinese-traditional/02-javascript-algorithms-and-data-structures/basic-javascript/replacing-if-else-chains-with-switch.md @@ -24,7 +24,7 @@ if (val === 1) { 可以被下面替代: ```js -switch(val) { +switch (val) { case 1: answer = "a"; break; @@ -136,7 +136,7 @@ chainToSwitch(7); function chainToSwitch(val) { let answer = ""; - switch(val) { + switch (val) { case "bob": answer = "Marley"; break; diff --git a/curriculum/challenges/chinese-traditional/02-javascript-algorithms-and-data-structures/basic-javascript/selecting-from-many-options-with-switch-statements.md b/curriculum/challenges/chinese-traditional/02-javascript-algorithms-and-data-structures/basic-javascript/selecting-from-many-options-with-switch-statements.md index e1058894151..9709f84e64c 100644 --- a/curriculum/challenges/chinese-traditional/02-javascript-algorithms-and-data-structures/basic-javascript/selecting-from-many-options-with-switch-statements.md +++ b/curriculum/challenges/chinese-traditional/02-javascript-algorithms-and-data-structures/basic-javascript/selecting-from-many-options-with-switch-statements.md @@ -14,7 +14,7 @@ dashedName: selecting-from-many-options-with-switch-statements 這是 `switch` 語句的示例: ```js -switch(lowercaseLetter) { +switch (lowercaseLetter) { case "a": console.log("A"); break; @@ -96,7 +96,7 @@ caseInSwitch(1); function caseInSwitch(val) { let answer = ""; - switch(val) { + switch (val) { case 1: answer = "alpha"; break; diff --git a/curriculum/challenges/chinese/02-javascript-algorithms-and-data-structures/basic-javascript/multiple-identical-options-in-switch-statements.md b/curriculum/challenges/chinese/02-javascript-algorithms-and-data-structures/basic-javascript/multiple-identical-options-in-switch-statements.md index dfe62e3d652..8ee79a51507 100644 --- a/curriculum/challenges/chinese/02-javascript-algorithms-and-data-structures/basic-javascript/multiple-identical-options-in-switch-statements.md +++ b/curriculum/challenges/chinese/02-javascript-algorithms-and-data-structures/basic-javascript/multiple-identical-options-in-switch-statements.md @@ -13,7 +13,7 @@ dashedName: multiple-identical-options-in-switch-statements ```js let result = ""; -switch(val) { +switch (val) { case 1: case 2: case 3: @@ -127,7 +127,7 @@ sequentialSizes(1); function sequentialSizes(val) { let answer = ""; - switch(val) { + switch (val) { case 1: case 2: case 3: diff --git a/curriculum/challenges/chinese/02-javascript-algorithms-and-data-structures/basic-javascript/replacing-if-else-chains-with-switch.md b/curriculum/challenges/chinese/02-javascript-algorithms-and-data-structures/basic-javascript/replacing-if-else-chains-with-switch.md index 0416c6010be..4289d4fcaf6 100644 --- a/curriculum/challenges/chinese/02-javascript-algorithms-and-data-structures/basic-javascript/replacing-if-else-chains-with-switch.md +++ b/curriculum/challenges/chinese/02-javascript-algorithms-and-data-structures/basic-javascript/replacing-if-else-chains-with-switch.md @@ -24,7 +24,7 @@ if (val === 1) { 可以被下面替代: ```js -switch(val) { +switch (val) { case 1: answer = "a"; break; @@ -136,7 +136,7 @@ chainToSwitch(7); function chainToSwitch(val) { let answer = ""; - switch(val) { + switch (val) { case "bob": answer = "Marley"; break; diff --git a/curriculum/challenges/chinese/02-javascript-algorithms-and-data-structures/basic-javascript/selecting-from-many-options-with-switch-statements.md b/curriculum/challenges/chinese/02-javascript-algorithms-and-data-structures/basic-javascript/selecting-from-many-options-with-switch-statements.md index 8d191929e48..cfabbefda72 100644 --- a/curriculum/challenges/chinese/02-javascript-algorithms-and-data-structures/basic-javascript/selecting-from-many-options-with-switch-statements.md +++ b/curriculum/challenges/chinese/02-javascript-algorithms-and-data-structures/basic-javascript/selecting-from-many-options-with-switch-statements.md @@ -14,7 +14,7 @@ dashedName: selecting-from-many-options-with-switch-statements 这是 `switch` 语句的示例: ```js -switch(lowercaseLetter) { +switch (lowercaseLetter) { case "a": console.log("A"); break; @@ -96,7 +96,7 @@ caseInSwitch(1); function caseInSwitch(val) { let answer = ""; - switch(val) { + switch (val) { case 1: answer = "alpha"; break; diff --git a/curriculum/challenges/espanol/02-javascript-algorithms-and-data-structures/basic-javascript/multiple-identical-options-in-switch-statements.md b/curriculum/challenges/espanol/02-javascript-algorithms-and-data-structures/basic-javascript/multiple-identical-options-in-switch-statements.md index 6c95d8050f3..0f002d81832 100644 --- a/curriculum/challenges/espanol/02-javascript-algorithms-and-data-structures/basic-javascript/multiple-identical-options-in-switch-statements.md +++ b/curriculum/challenges/espanol/02-javascript-algorithms-and-data-structures/basic-javascript/multiple-identical-options-in-switch-statements.md @@ -13,7 +13,7 @@ Si la sentencia `break` es omitida en un caso (`case`) de una sentencia `switch` ```js let result = ""; -switch(val) { +switch (val) { case 1: case 2: case 3: @@ -127,7 +127,7 @@ sequentialSizes(1); function sequentialSizes(val) { let answer = ""; - switch(val) { + switch (val) { case 1: case 2: case 3: diff --git a/curriculum/challenges/espanol/02-javascript-algorithms-and-data-structures/basic-javascript/replacing-if-else-chains-with-switch.md b/curriculum/challenges/espanol/02-javascript-algorithms-and-data-structures/basic-javascript/replacing-if-else-chains-with-switch.md index 93d1594bc9c..af1290a3358 100644 --- a/curriculum/challenges/espanol/02-javascript-algorithms-and-data-structures/basic-javascript/replacing-if-else-chains-with-switch.md +++ b/curriculum/challenges/espanol/02-javascript-algorithms-and-data-structures/basic-javascript/replacing-if-else-chains-with-switch.md @@ -24,7 +24,7 @@ if (val === 1) { puede reemplazarse por: ```js -switch(val) { +switch (val) { case 1: answer = "a"; break; @@ -136,7 +136,7 @@ chainToSwitch(7); function chainToSwitch(val) { let answer = ""; - switch(val) { + switch (val) { case "bob": answer = "Marley"; break; diff --git a/curriculum/challenges/espanol/02-javascript-algorithms-and-data-structures/basic-javascript/selecting-from-many-options-with-switch-statements.md b/curriculum/challenges/espanol/02-javascript-algorithms-and-data-structures/basic-javascript/selecting-from-many-options-with-switch-statements.md index 50dbad3f081..3e5ccac0b65 100644 --- a/curriculum/challenges/espanol/02-javascript-algorithms-and-data-structures/basic-javascript/selecting-from-many-options-with-switch-statements.md +++ b/curriculum/challenges/espanol/02-javascript-algorithms-and-data-structures/basic-javascript/selecting-from-many-options-with-switch-statements.md @@ -14,7 +14,7 @@ Si tienes muchas opciones para elegir, usa una declaración switch. U Aquí hay un ejemplo de una declaración `switch`: ```js -switch(lowercaseLetter) { +switch (lowercaseLetter) { case "a": console.log("A"); break; @@ -96,7 +96,7 @@ caseInSwitch(1); function caseInSwitch(val) { let answer = ""; - switch(val) { + switch (val) { case 1: answer = "alpha"; break; diff --git a/curriculum/challenges/italian/02-javascript-algorithms-and-data-structures/basic-javascript/multiple-identical-options-in-switch-statements.md b/curriculum/challenges/italian/02-javascript-algorithms-and-data-structures/basic-javascript/multiple-identical-options-in-switch-statements.md index 75ac5877718..360bb423834 100644 --- a/curriculum/challenges/italian/02-javascript-algorithms-and-data-structures/basic-javascript/multiple-identical-options-in-switch-statements.md +++ b/curriculum/challenges/italian/02-javascript-algorithms-and-data-structures/basic-javascript/multiple-identical-options-in-switch-statements.md @@ -13,7 +13,7 @@ Se l'istruzione `break` viene omessa da un'istruzione `switch` e in particolare ```js let result = ""; -switch(val) { +switch (val) { case 1: case 2: case 3: @@ -127,7 +127,7 @@ sequentialSizes(1); function sequentialSizes(val) { let answer = ""; - switch(val) { + switch (val) { case 1: case 2: case 3: diff --git a/curriculum/challenges/italian/02-javascript-algorithms-and-data-structures/basic-javascript/replacing-if-else-chains-with-switch.md b/curriculum/challenges/italian/02-javascript-algorithms-and-data-structures/basic-javascript/replacing-if-else-chains-with-switch.md index 0495ccbb344..78f4e0690c4 100644 --- a/curriculum/challenges/italian/02-javascript-algorithms-and-data-structures/basic-javascript/replacing-if-else-chains-with-switch.md +++ b/curriculum/challenges/italian/02-javascript-algorithms-and-data-structures/basic-javascript/replacing-if-else-chains-with-switch.md @@ -24,7 +24,7 @@ if (val === 1) { può essere sostituito con: ```js -switch(val) { +switch (val) { case 1: answer = "a"; break; @@ -136,7 +136,7 @@ chainToSwitch(7); function chainToSwitch(val) { let answer = ""; - switch(val) { + switch (val) { case "bob": answer = "Marley"; break; diff --git a/curriculum/challenges/italian/02-javascript-algorithms-and-data-structures/basic-javascript/selecting-from-many-options-with-switch-statements.md b/curriculum/challenges/italian/02-javascript-algorithms-and-data-structures/basic-javascript/selecting-from-many-options-with-switch-statements.md index 155d38ab423..02e87033709 100644 --- a/curriculum/challenges/italian/02-javascript-algorithms-and-data-structures/basic-javascript/selecting-from-many-options-with-switch-statements.md +++ b/curriculum/challenges/italian/02-javascript-algorithms-and-data-structures/basic-javascript/selecting-from-many-options-with-switch-statements.md @@ -14,7 +14,7 @@ Se hai molte opzioni tra cui scegliere, usa un'istruzione switch. Un' Ecco un esempio di un'istruzione `switch`: ```js -switch(lowercaseLetter) { +switch (lowercaseLetter) { case "a": console.log("A"); break; @@ -96,7 +96,7 @@ caseInSwitch(1); function caseInSwitch(val) { let answer = ""; - switch(val) { + switch (val) { case 1: answer = "alpha"; break; diff --git a/curriculum/challenges/italian/14-responsive-web-design-22/learn-css-flexbox-by-building-a-photo-gallery/61537485c4f2a624f18d7794.md b/curriculum/challenges/italian/14-responsive-web-design-22/learn-css-flexbox-by-building-a-photo-gallery/61537485c4f2a624f18d7794.md new file mode 100644 index 00000000000..a777b662e71 --- /dev/null +++ b/curriculum/challenges/italian/14-responsive-web-design-22/learn-css-flexbox-by-building-a-photo-gallery/61537485c4f2a624f18d7794.md @@ -0,0 +1,110 @@ +--- +id: 61537485c4f2a624f18d7794 +title: Step 1 +challengeType: 0 +dashedName: step-1 +--- + +# --description-- + +Inizia con il testo HTML standard. Aggiungi la dichiarazione `DOCTYPE` e gli elementi `html`, `head` e `body`. + +# --hints-- + +Il codice dovrebbe contenere il riferimento `DOCTYPE`. + +```js +assert(code.match(/`. + +```js +assert(code.match(//gi)); +``` + +L'elemento `html` dovrebbe avere un tag di apertura. + +```js +assert(code.match(//gi)); +``` + +L'elemento `html` dovrebbe avere un tag di chiusura. + +```js +assert(code.match(/<\/html\s*>/)); +``` + +La dichiarazione `DOCTYPE` dovrebbe essere all'inizio del tuo HTML. + +```js +assert(__helpers.removeHtmlComments(code).match(/^\s*/i)); +``` + +Dovresti avere un tag `head` di apertura. + +```js +assert(code.match(/
/i)); +``` + +Dovresti avere un tag `head` di chiusura. + +```js +assert(code.match(/<\/head\s*>/i)); +``` + +Dovresti avere un tag `body` di apertura. + +```js +assert(code.match(//i)); +``` + +Dovresti avere un tag `body` di chiusura. + +```js +assert(code.match(/<\/body\s*>/i)); +``` + +Gli elementi `head` e `body` dovrebbero essere fratelli. + +```js +assert(document.querySelector('head')?.nextElementSibling?.localName === 'body'); +``` + +L'elemento `head` dovrebbe essere all'interno dell'elemento `html`. + +```js +assert([...document.querySelector('html')?.children].some(x => x?.localName === 'head')); +``` + +L' elemento `body` dovrebbe essere all'interno dell'elemento `html`. + +```js +assert([...document.querySelector('html')?.children].some(x => x?.localName === 'body')); +``` + +# --seed-- + +## --seed-contents-- + +```html +--fcc-editable-region-- + +--fcc-editable-region-- +``` + +```css + +``` diff --git a/curriculum/challenges/italian/14-responsive-web-design-22/learn-css-flexbox-by-building-a-photo-gallery/61537a8054753e2f1f2a1574.md b/curriculum/challenges/italian/14-responsive-web-design-22/learn-css-flexbox-by-building-a-photo-gallery/61537a8054753e2f1f2a1574.md new file mode 100644 index 00000000000..82b78dcee6c --- /dev/null +++ b/curriculum/challenges/italian/14-responsive-web-design-22/learn-css-flexbox-by-building-a-photo-gallery/61537a8054753e2f1f2a1574.md @@ -0,0 +1,58 @@ +--- +id: 61537a8054753e2f1f2a1574 +title: Step 2 +challengeType: 0 +dashedName: step-2 +--- + +# --description-- + +All'interno dell'elemento `head`, aggiungi un tag `meta` con l'attributo `name` impostato su `viewport` e l'attributo `content` con il valore `width=device-width, initial-scale=1`. + +Aggiungi anche un tag `meta` con l'attributo `charset` impostato su `UTF-8`. + +# --hints-- + +Dovresti avere due elementi `meta`. + +```js +const meta = document.querySelectorAll('meta'); +assert(meta?.length === 2); +``` + +Un elemento `meta` dovrebbe avere un attributo `name` con il valore `viewport` e un attributo `content` con il valore `width=device-width, initial-scale=1.0`. + +```js +const meta = [...document.querySelectorAll('meta')]; +const target = meta?.find(m => m?.getAttribute('name') === 'viewport' && m?.getAttribute('content').match(/width=device-width,\s?initial-scale=1(.0)?/) && !m?.getAttribute('charset')); +assert.exists(target); +``` + +L'altro elemento `meta` dovrebbe avere l'attributo `charset` con il valore `UTF-8`. + +```js +const meta = [...document.querySelectorAll('meta')]; +const target = meta?.find(m => !m?.getAttribute('name') && !m?.getAttribute('content') && m?.getAttribute('charset')?.toLowerCase() === 'utf-8'); +assert.exists(target); +``` + +# --seed-- + +## --seed-contents-- + +```html +--fcc-editable-region-- + + + + + + + + +--fcc-editable-region-- +``` + +```css + +``` diff --git a/curriculum/challenges/italian/14-responsive-web-design-22/learn-css-flexbox-by-building-a-photo-gallery/61537bb9b1a29430ac15ad38.md b/curriculum/challenges/italian/14-responsive-web-design-22/learn-css-flexbox-by-building-a-photo-gallery/61537bb9b1a29430ac15ad38.md new file mode 100644 index 00000000000..b9d669c7e76 --- /dev/null +++ b/curriculum/challenges/italian/14-responsive-web-design-22/learn-css-flexbox-by-building-a-photo-gallery/61537bb9b1a29430ac15ad38.md @@ -0,0 +1,62 @@ +--- +id: 61537bb9b1a29430ac15ad38 +title: Step 3 +challengeType: 0 +dashedName: step-3 +--- + +# --description-- + +All'interno dell'elemento `head`, aggiungi un elemento `title` con il testo `Photo Gallery` e un elemento `link` per collegare il file `styles.css` alla pagina. + +# --hints-- + +L'elemento `link` dovrebbe avere un attributo `href` con il valore `styles.css`. + +```js +assert.match(code, / + + + + + + + + + +--fcc-editable-region-- +``` + +```css + +``` diff --git a/curriculum/challenges/italian/14-responsive-web-design-22/learn-css-flexbox-by-building-a-photo-gallery/61537c5f81f0cf325b4a854c.md b/curriculum/challenges/italian/14-responsive-web-design-22/learn-css-flexbox-by-building-a-photo-gallery/61537c5f81f0cf325b4a854c.md new file mode 100644 index 00000000000..8b949603254 --- /dev/null +++ b/curriculum/challenges/italian/14-responsive-web-design-22/learn-css-flexbox-by-building-a-photo-gallery/61537c5f81f0cf325b4a854c.md @@ -0,0 +1,62 @@ +--- +id: 61537c5f81f0cf325b4a854c +title: Step 4 +challengeType: 0 +dashedName: step-4 +--- + +# --description-- + +All'interno dell'elemento `body`, crea un `div` con l'attributo `class` impostato su `header`. + +All'interno dell'elemento `.header` annida un elemento `h1` con il testo `CSS FLEXBOX PHOTO GALLERY`. + +# --hints-- + +Dovresti avere un elemento `div` all'interno dell'elemento `body`. + +```js +assert.exists(document.querySelector('body')?.querySelector('div')) +``` + +L'elemento `div` dovrebbe avere l'attributo `class` con il valore `header`. + +```js +assert(document?.querySelector('body')?.querySelector('div')?.classList?.contains('header')) +``` + +L'elemento `.header` dovrebbe avere un elemento `h1`. + +```js +assert.exists(document.querySelector('.header')?.querySelector('h1')); +``` + +L'elemento `h1` dovrebbe contenere il testo `CSS FLEXBOX PHOTO GALLERY`. Ricorda che le maiuscole contano. + +```js +assert(document?.querySelector('.header')?.querySelector('h1')?.innerText === 'CSS FLEXBOX PHOTO GALLERY') +``` + +# --seed-- + +## --seed-contents-- + +```html +--fcc-editable-region-- + + + + + +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ` e l'attributo `href` impostato a `https://fonts.googleapis.com/css?family=Open+Sans:400,700,800`.
+All'interno dell'elemento `head`, aggiungi un elemento `link` con l'attributo `rel` impostato su `stylesheet` e l'attributo `href` con il valore `https://fonts.googleapis.com/css?family=Open+Sans:400,700,800`.
-Questo importerà la famiglia di caratteri `Open Sans`, con spessori di `400`, `700`, e `800`.
+In questo modo, importerai la famiglia di caratteri `Open Sans`, con spessori di `400`, `700`, e `800`.
-Aggiungi anche un elemento `link` per collegare il tuo file `styles.css`.
+Aggiungi anche un elemento `link` per collegare il file `styles.css`.
# --hints--
@@ -21,19 +21,19 @@ Dovresti avere due elementi `link`.
assert(code.match(/ div')?.length === 3)
```
-Il nuovo elemento `div` dovrebbe avere l'attributo `class` impostato a `divider md`. Questo div dovrebbe essere l'ultimo elemento nell'elemento `.label`.
+Il nuovo elemento `div` dovrebbe avere l'attributo `class` con il valore `divider md`. Questo div dovrebbe essere l'ultimo elemento nell'elemento `.label`.
```js
const div = document.querySelector('.label')?.lastElementChild;
diff --git a/curriculum/challenges/italian/14-responsive-web-design-22/learn-typography-by-building-a-nutrition-label/615f666ac5edea782feb7e75.md b/curriculum/challenges/italian/14-responsive-web-design-22/learn-typography-by-building-a-nutrition-label/615f666ac5edea782feb7e75.md
index ac29a6066ff..5a364cdd3a6 100644
--- a/curriculum/challenges/italian/14-responsive-web-design-22/learn-typography-by-building-a-nutrition-label/615f666ac5edea782feb7e75.md
+++ b/curriculum/challenges/italian/14-responsive-web-design-22/learn-typography-by-building-a-nutrition-label/615f666ac5edea782feb7e75.md
@@ -7,7 +7,7 @@ dashedName: step-38
# --description--
-Creare un selettore `.md` e dargli una proprietà `height` di `5px`.
+Crea un selettore `.md` e assegnagli una proprietà `height` di `5px`.
# --hints--
@@ -17,7 +17,7 @@ Dovresti creare un selettore `.md`.
assert(new __helpers.CSSHelp(document).getStyle('.md'));
```
-Il selettore `.md` dovrebbe avere una proprietà `height` impostata a `5px`.
+Il selettore `.md` dovrebbe avere una proprietà `height` con il valore `5px`.
```js
assert(new __helpers.CSSHelp(document).getStyle('.md')?.height === '5px');
diff --git a/curriculum/challenges/italian/14-responsive-web-design-22/learn-typography-by-building-a-nutrition-label/615f671b6d1919792745aa5d.md b/curriculum/challenges/italian/14-responsive-web-design-22/learn-typography-by-building-a-nutrition-label/615f671b6d1919792745aa5d.md
index e8d2bd32cf8..a2911e82c9e 100644
--- a/curriculum/challenges/italian/14-responsive-web-design-22/learn-typography-by-building-a-nutrition-label/615f671b6d1919792745aa5d.md
+++ b/curriculum/challenges/italian/14-responsive-web-design-22/learn-typography-by-building-a-nutrition-label/615f671b6d1919792745aa5d.md
@@ -7,11 +7,11 @@ dashedName: step-39
# --description--
-Crea un nuovo elemento `div` sotto il tuo elemento `.md`. Dagli un attributo `class` impostato su `daily-value sm-text`. All'interno di questo nuovo `div`, crea un elemento `p` con il testo `% Daily Value *`, e imposta l'attributo `class` su `right bold`.
+Crea un nuovo elemento `div` sotto l'elemento `.md`. Assegnagli un attributo `class` impostato su `daily-value sm-text`. All'interno di questo nuovo `div`, crea un elemento `p` con il testo `% Daily Value *` e imposta l'attributo `class` con il valore `right bold`.
# --hints--
-Dovresti creare un nuovo elemento `div` dopo il tuo elemento `.md`.
+Dovresti creare un nuovo elemento `div` dopo l'elemento `.md`.
```js
assert(document.querySelector('.label')?.lastElementChild?.localName === 'div');
@@ -19,26 +19,26 @@ assert(document.querySelector('.label')?.lastElementChild?.previousElementSiblin
assert(document.querySelector('.label')?.lastElementChild?.previousElementSibling?.classList?.contains('md'));
```
-Il tuo nuovo `div` dovrebbe avere un attributo`class` impostato a `daily-value sm-text`.
+Il nuovo `div` dovrebbe avere un attributo `class` con il valore `daily-value sm-text`.
```js
assert(document.querySelector('.label')?.lastElementChild?.classList?.contains('daily-value'));
assert(document.querySelector('.label')?.lastElementChild?.classList?.contains('sm-text'));
```
-Il tuo nuovo elemento `div` dovrebbe avere un elemento `p`.
+Il nuovo elemento `div` dovrebbe avere un elemento `p`.
```js
assert(document.querySelector('.label')?.lastElementChild?.firstElementChild?.localName === 'p');
```
-Il tuo nuovo elemento `p` dovrebbe avere il testo `% Daily Value *`.
+Il nuovo elemento `p` dovrebbe avere il testo `% Daily Value *`.
```js
assert(document.querySelector('.label')?.lastElementChild?.firstElementChild?.textContent === '% Daily Value *');
```
-Il tuo nuovo elemento `p` dovrebbe avere un attributo`class` impostato su `right bold`.
+Il nuovo elemento `p` dovrebbe avere un attributo `class` con il valore `right bold`.
```js
assert(document.querySelector('.label')?.lastElementChild?.firstElementChild?.classList?.contains('right'));
diff --git a/curriculum/challenges/italian/14-responsive-web-design-22/learn-typography-by-building-a-nutrition-label/615f6823d0815b7a991f2a75.md b/curriculum/challenges/italian/14-responsive-web-design-22/learn-typography-by-building-a-nutrition-label/615f6823d0815b7a991f2a75.md
index 4b5c0af0b03..54c7004059b 100644
--- a/curriculum/challenges/italian/14-responsive-web-design-22/learn-typography-by-building-a-nutrition-label/615f6823d0815b7a991f2a75.md
+++ b/curriculum/challenges/italian/14-responsive-web-design-22/learn-typography-by-building-a-nutrition-label/615f6823d0815b7a991f2a75.md
@@ -7,23 +7,23 @@ dashedName: step-40
# --description--
-Lo stile `float` ha fatto sì che il nuovo elemento `p` sia al di fuori del bordo dell'etichetta. Usa l'elemento esistente `.divider` come esempio per aggiungere un nuovo divisore dopo l'elemento `p`.
+L'utilizzo di `float` ha fatto sì che il nuovo elemento `p` sia al di fuori del bordo del label. Usa l'elemento `.divider` esistente come esempio per aggiungere un nuovo divider dopo l'elemento `p`.
# --hints--
-Dovresti creare un nuovo `div` all'interno del tuo elemento`.daily-value.sm-text`.
+Dovresti creare un nuovo `div` all'interno dell'elemento`.daily-value.sm-text`.
```js
assert(document.querySelectorAll('.daily-value.sm-text > div')?.length === 1)
```
-Il nuovo elemento `div` dovrebbe avere l'attributo `class` impostato a `divider`.
+Il nuovo elemento `div` dovrebbe avere l'attributo `class` con il valore `divider`.
```js
assert(document.querySelector('.daily-value.sm-text > div')?.classList?.contains('divider'))
```
-Il nuovo elemento `div` dovrebbe venire dopo l'elemento `p`.
+Il nuovo elemento `div` dovrebbe trovarsi dopo l'elemento `p`.
```js
assert(document.querySelector('.daily-value.sm-text > div')?.previousElementSibling?.localName === 'p');
diff --git a/curriculum/challenges/italian/14-responsive-web-design-22/learn-typography-by-building-a-nutrition-label/615f6a7d4ba8037bc086c2c7.md b/curriculum/challenges/italian/14-responsive-web-design-22/learn-typography-by-building-a-nutrition-label/615f6a7d4ba8037bc086c2c7.md
index 83ae3ddbc74..2606745495a 100644
--- a/curriculum/challenges/italian/14-responsive-web-design-22/learn-typography-by-building-a-nutrition-label/615f6a7d4ba8037bc086c2c7.md
+++ b/curriculum/challenges/italian/14-responsive-web-design-22/learn-typography-by-building-a-nutrition-label/615f6a7d4ba8037bc086c2c7.md
@@ -7,11 +7,11 @@ dashedName: step-41
# --description--
-Dai al selettore `.divider` una proprietà `clear` con valore di `right`. Questo cancellerà la proprietà `float`, spingendo il divisore e qualsiasi contenuto seguente sotto il testo `float`.
+Assegna al selettore `.divider` una proprietà `clear` con il valore `right`. Questo cancellerà la proprietà `float`, spingendo il divider e qualsiasi contenuto seguente sotto il testo di `float`.
# --hints--
-Il selettore `.divider` dovrebbe avere una proprietà `clear` con valore di `right`.
+Il selettore `.divider` dovrebbe avere una proprietà `clear` con il valore `right`.
```js
assert(new __helpers.CSSHelp(document).getStyle('.divider')?.clear === 'right');
diff --git a/curriculum/challenges/italian/14-responsive-web-design-22/learn-typography-by-building-a-nutrition-label/615f6b2d164f81809efd9bdc.md b/curriculum/challenges/italian/14-responsive-web-design-22/learn-typography-by-building-a-nutrition-label/615f6b2d164f81809efd9bdc.md
index c82a158d412..50d5070990d 100644
--- a/curriculum/challenges/italian/14-responsive-web-design-22/learn-typography-by-building-a-nutrition-label/615f6b2d164f81809efd9bdc.md
+++ b/curriculum/challenges/italian/14-responsive-web-design-22/learn-typography-by-building-a-nutrition-label/615f6b2d164f81809efd9bdc.md
@@ -7,47 +7,47 @@ dashedName: step-42
# --description--
-Dopo il tuo ultimo elemento `.divider`, crea un elemento `p` e dagli il testo `Total Fat 8g 10%`. Avvolgi `Total Fat` in un elemento `span` con l'attributo `class` con valore di `bold`. Avvolgi `10%` in un altro elemento `span` con la `class` impostata a `bold right`.
+Dopo l'ultimo elemento `.divider`, crea un elemento `p` e assegnagli il testo `Total Fat 8g 10%`. Avvolgi `Total Fat` in un elemento `span` con l'attributo `class` con il valore `bold`. Avvolgi `10%` in un altro elemento `span` con la `class` impostata su `bold right`.
# --hints--
-Dovresti creare due nuovi elementi `p` alla fine del tuo elemento `.daily-value`.
+Dovresti creare due nuovi elementi `p` alla fine dell'elemento `.daily-value`.
```js
assert(document.querySelector('.daily-value.sm-text')?.lastElementChild?.localName === 'p');
```
-Il tuo nuovo elemento `p` dovrebbe avere il testo `Total Fat 8g 10%`.
+Il nuovo elemento `p` dovrebbe avere il testo `Total Fat 8g 10%`.
```js
assert(document.querySelector('.daily-value.sm-text')?.lastElementChild?.innerText?.match(/Total Fat 8g[\s|\n]+10%/));
```
-Il tuo nuovo elemento `p` dovrebbe avere due elementi `span`.
+L'elemento `p` dovrebbe avere due elementi `span`.
```js
assert(document.querySelector('.daily-value.sm-text')?.lastElementChild?.querySelectorAll('span')?.length === 2);
```
-Il tuo primo elemento `span` dovrebbe avvolgere il testo `Total Fat`.
+Il primo elemento `span` dovrebbe avvolgere il testo `Total Fat`.
```js
assert(document.querySelector('.daily-value.sm-text')?.lastElementChild?.querySelector('span')?.innerText === 'Total Fat');
```
-Il tuo primo elemento `span` dovrebbe avere l'attributo `class` impostato a `bold`.
+Il primo elemento `span` dovrebbe avere l'attributo `class` con il valore `bold`.
```js
assert(document.querySelector('.daily-value.sm-text')?.lastElementChild?.querySelector('span')?.className === 'bold');
```
-Il tuo primo elemento `span` dovrebbe avvolgere il testo `10%`.
+Il secondo elemento `span` dovrebbe avvolgere il testo `10%`.
```js
assert(document.querySelector('.daily-value.sm-text')?.lastElementChild?.querySelectorAll('span')?.[1]?.innerText === '10%');
```
-Il tuo primo elemento `span` dovrebbe avere l'attributo `class` impostato a `bold right`.
+Il secondo elemento `span` dovrebbe avere l'attributo `class` con il valore `bold right`.
```js
assert(document.querySelector('.daily-value.sm-text')?.lastElementChild?.querySelectorAll('span')?.[1]?.className === 'bold right');
diff --git a/curriculum/challenges/italian/14-responsive-web-design-22/learn-typography-by-building-a-nutrition-label/615f6cc778f7698258467596.md b/curriculum/challenges/italian/14-responsive-web-design-22/learn-typography-by-building-a-nutrition-label/615f6cc778f7698258467596.md
index 9a86dc30c58..58b01b8159f 100644
--- a/curriculum/challenges/italian/14-responsive-web-design-22/learn-typography-by-building-a-nutrition-label/615f6cc778f7698258467596.md
+++ b/curriculum/challenges/italian/14-responsive-web-design-22/learn-typography-by-building-a-nutrition-label/615f6cc778f7698258467596.md
@@ -7,37 +7,37 @@ dashedName: step-43
# --description--
-Sotto il tuo elemento con il testo `Total Fat`, crea un nuovo elemento `p` con il testo `Saturated Fat 1g 5%`. Avvolgi `5%` in un altro elemento `span` con la `class` impostata a `bold right`.
+Sotto L'elemento con il testo `Total Fat`, crea un nuovo elemento `p` con il testo `Saturated Fat 1g 5%`. Includi `5%` in un altro elemento `span` con l'attributo `class` impostato su `bold right`.
# --hints--
-Dovresti creare un nuovo elemento `p` sotto il tuo elemento con il testo `Total Fat`.
+Dovresti creare un nuovo elemento `p` sotto l'elemento con il testo `Total Fat`.
```js
assert(document.querySelector('.daily-value.sm-text')?.lastElementChild?.localName === 'p');
assert(document.querySelector('.daily-value.sm-text')?.lastElementChild?.previousElementSibling?.innerText.match(/Total Fat 8g\s*10%/));
```
-Il tuo secondo nuovo elemento `p` dovrebbe avere il testo `Saturated Fat 1g 5%`.
+Il nuovo elemento `p` dovrebbe avere il testo `Saturated Fat 1g 5%`.
```js
assert(document.querySelector('.daily-value.sm-text')?.lastElementChild?.innerText.match(/Saturated Fat 1g\s*5%/));
```
-Il tuo nuovo elemento `p` dovrebbe avere un elemento `span`.
+Il nuovo elemento `p` dovrebbe avere un elemento `span`.
```js
assert(document.querySelector('.daily-value.sm-text')?.lastElementChild?.lastElementChild?.localName === 'span');
```
-Il tuo nuovo elemento `span` dovrebbe avere l'attributo `class` impostato a `bold right`.
+L'elemento `span` dovrebbe avere l'attributo `class` con il valore `bold right`.
```js
assert(document.querySelector('.daily-value.sm-text')?.lastElementChild?.lastElementChild?.classList?.contains('bold'));
assert(document.querySelector('.daily-value.sm-text')?.lastElementChild?.lastElementChild?.classList?.contains('right'));
```
-Il tuo elemento `span` dovrebbe avvolgere il testo `5%`.
+L'elemento `span` dovrebbe racchiudere il testo `5%`.
```js
assert(document.querySelector('.daily-value.sm-text')?.lastElementChild?.lastElementChild?.innerText === "5%");
diff --git a/curriculum/challenges/italian/14-responsive-web-design-22/learn-typography-by-building-a-nutrition-label/615f6fddaac1e083502d3e6a.md b/curriculum/challenges/italian/14-responsive-web-design-22/learn-typography-by-building-a-nutrition-label/615f6fddaac1e083502d3e6a.md
index 3dda2c62733..aa188f49d23 100644
--- a/curriculum/challenges/italian/14-responsive-web-design-22/learn-typography-by-building-a-nutrition-label/615f6fddaac1e083502d3e6a.md
+++ b/curriculum/challenges/italian/14-responsive-web-design-22/learn-typography-by-building-a-nutrition-label/615f6fddaac1e083502d3e6a.md
@@ -7,11 +7,11 @@ dashedName: step-44
# --description--
-Questo nuovo elemento `p` dovrà essere indentato. Dagli un attributo `class` impostata a `indent`.
+Questo nuovo elemento `p` dovrà essere indentato. Dagli un attributo `class` impostato su `indent`.
# --hints--
-Il tuo elemento `p` con il testo `Saturated Fat 1g 5%` dovrebbe avere un attributo `class` impostato a `indent`.
+L'elemento `p` con il testo `Saturated Fat 1g 5%` dovrebbe avere un attributo `class` con il valore `indent`.
```js
assert(document.querySelector('.daily-value.sm-text')?.lastElementChild?.classList?.contains('indent'));
diff --git a/curriculum/challenges/italian/14-responsive-web-design-22/learn-typography-by-building-a-nutrition-label/615f70077a4ff98424236c1e.md b/curriculum/challenges/italian/14-responsive-web-design-22/learn-typography-by-building-a-nutrition-label/615f70077a4ff98424236c1e.md
index e819090b152..bab5b450545 100644
--- a/curriculum/challenges/italian/14-responsive-web-design-22/learn-typography-by-building-a-nutrition-label/615f70077a4ff98424236c1e.md
+++ b/curriculum/challenges/italian/14-responsive-web-design-22/learn-typography-by-building-a-nutrition-label/615f70077a4ff98424236c1e.md
@@ -17,7 +17,7 @@ Dovresti avere un nuovo selettore `.indent`.
assert(new __helpers.CSSHelp(document).getStyle('.indent'));
```
-Il nuovo selettore `.indent` dovrebbe avere una proprietà `margin-left` impostata a `1em`.
+Il nuovo selettore `.indent` dovrebbe avere una proprietà `margin-left` con il valore `1em`.
```js
assert(new __helpers.CSSHelp(document).getStyle('.indent')?.marginLeft === '1em');
diff --git a/curriculum/challenges/italian/14-responsive-web-design-22/learn-typography-by-building-a-nutrition-label/615f72a872354a850d4f533e.md b/curriculum/challenges/italian/14-responsive-web-design-22/learn-typography-by-building-a-nutrition-label/615f72a872354a850d4f533e.md
index b2b5e99325e..65403dba213 100644
--- a/curriculum/challenges/italian/14-responsive-web-design-22/learn-typography-by-building-a-nutrition-label/615f72a872354a850d4f533e.md
+++ b/curriculum/challenges/italian/14-responsive-web-design-22/learn-typography-by-building-a-nutrition-label/615f72a872354a850d4f533e.md
@@ -7,7 +7,7 @@ dashedName: step-46
# --description--
-Crea un selettore `.daily-value p` per selezionare tutti i tuoi elementi `p` nella sezione `daily-value`. Dai a questo nuovo selettore un `border-bottom` impostato su `1px solid #888989`.
+Crea un selettore `.daily-value p` per selezionare tutti gli elementi `p` nella sezione `daily-value`. Dai a questo nuovo selettore una proprietà `border-bottom` con il valore `1px solid #888989`.
# --hints--
@@ -17,7 +17,7 @@ Dovresti avere un nuovo selettore `.daily-value p`.
assert(new __helpers.CSSHelp(document).getStyle('.daily-value p'));
```
-Il tuo selettore `.daily-value p` dovrebbe avere una proprietà `border-bottom` impostata a `1px solid #888989`.
+Il tuo selettore `.daily-value p` dovrebbe avere una proprietà `border-bottom` con il valore `1px solid #888989`.
```js
assert(new __helpers.CSSHelp(document).getStyle('.daily-value p')?.borderBottom === '1px solid rgb(136, 137, 137)');
diff --git a/curriculum/challenges/italian/14-responsive-web-design-22/learn-typography-by-building-a-nutrition-label/615f74a71f1e498619e38ee8.md b/curriculum/challenges/italian/14-responsive-web-design-22/learn-typography-by-building-a-nutrition-label/615f74a71f1e498619e38ee8.md
index 77da5e5ee9c..77181dffb1c 100644
--- a/curriculum/challenges/italian/14-responsive-web-design-22/learn-typography-by-building-a-nutrition-label/615f74a71f1e498619e38ee8.md
+++ b/curriculum/challenges/italian/14-responsive-web-design-22/learn-typography-by-building-a-nutrition-label/615f74a71f1e498619e38ee8.md
@@ -7,11 +7,11 @@ dashedName: step-47
# --description--
-I bordi inferiori sotto i tuoi elementi `% Daily Value *` e `Saturated Fat 1g 5%` non estendono l'intera larghezza dell'etichetta. Aggiungi `no-divider` all'attributo `class` per questi due elementi.
+I bordi inferiori sotto gli elementi `% Daily Value *` e `Saturated Fat 1g 5%` non occupano l'intera larghezza dell'etichetta. Aggiungi `no-divider` all'attributo `class` per questi due elementi.
# --hints--
-Il tuo elemento `p` con il testo `% Daily Value *` dovrebbe avere `no-divider` aggiunto all'attributo `class`. Non rimuovere le classi esistenti.
+L'elemento `p` con il testo `% Daily Value *` dovrebbe avere `no-divider` aggiunto all'attributo `class`. Non rimuovere le classi esistenti.
```js
const p = document.querySelector('.daily-value.sm-text')?.firstElementChild;
@@ -20,7 +20,7 @@ assert(p?.classList?.contains('bold'));
assert(p?.classList?.contains('right'));
```
-Il tuo elemento `p` con il testo `Saturated Fat 1g 5%` dovrebbe avere `no-divider` aggiunto all'attributo `class`. Non rimuovere le classi esistenti.
+L'elemento `p` con il testo `Saturated Fat 1g 5%` dovrebbe avere `no-divider` aggiunto all'attributo `class`. Non rimuovere le classi esistenti.
```js
const p = document.querySelector('.daily-value.sm-text')?.lastElementChild;
diff --git a/curriculum/challenges/italian/14-responsive-web-design-22/learn-typography-by-building-a-nutrition-label/615f7ad94380408d971d14f6.md b/curriculum/challenges/italian/14-responsive-web-design-22/learn-typography-by-building-a-nutrition-label/615f7ad94380408d971d14f6.md
index 94776405b30..4c336f91468 100644
--- a/curriculum/challenges/italian/14-responsive-web-design-22/learn-typography-by-building-a-nutrition-label/615f7ad94380408d971d14f6.md
+++ b/curriculum/challenges/italian/14-responsive-web-design-22/learn-typography-by-building-a-nutrition-label/615f7ad94380408d971d14f6.md
@@ -15,19 +15,19 @@ div:not(#example) {
}
```
-Quanto sopra seleziona tutti gli elementi `div` senza un `id` di `example`.
+Quello qui sopra seleziona tutti gli elementi `div` senza un `id` con il valore `example`.
Modifica il selettore `.daily-value p` per escludere gli elementi `.no-divider`.
# --hints--
-Dovresti avere un nuovo selettore `.daily-value p:not(.no-divider)`.
+Dovresti avere un selettore `.daily-value p:not(.no-divider)`.
```js
assert(new __helpers.CSSHelp(document).getStyle('.daily-value p:not(.no-divider)'));
```
-Non dovresti avere un `.daily-value p` selector.
+Non dovresti avere un selettore `.daily-value p`.
```js
assert(!new __helpers.CSSHelp(document).getStyle('.daily-value p'));
diff --git a/curriculum/challenges/italian/14-responsive-web-design-22/learn-typography-by-building-a-nutrition-label/615f7bc680f7168ea01ebf99.md b/curriculum/challenges/italian/14-responsive-web-design-22/learn-typography-by-building-a-nutrition-label/615f7bc680f7168ea01ebf99.md
index 6157f411e48..34ade7dc979 100644
--- a/curriculum/challenges/italian/14-responsive-web-design-22/learn-typography-by-building-a-nutrition-label/615f7bc680f7168ea01ebf99.md
+++ b/curriculum/challenges/italian/14-responsive-web-design-22/learn-typography-by-building-a-nutrition-label/615f7bc680f7168ea01ebf99.md
@@ -7,19 +7,19 @@ dashedName: step-49
# --description--
-Ora dovrai aggiungere divisori separati sotto i tuoi elementi `.no-divider`.
+Ora dovrai aggiungere dei divider separati sotto gli elementi `.no-divider`.
-Il tuo primo elemento `.no-divider` ha un `.divider` dopo di esso. Crea un altro `.divider` dopo il tuo secondo elemento `.no-divider`.
+Il primo elemento `.no-divider` ha un `.divider` dopo di esso. Crea un altro `.divider` dopo il secondo elemento `.no-divider`.
# --hints--
-Dovresti creare un nuovo `div` alla fine del tuo elemento `.daily-value.sm-text`.
+Dovresti creare un nuovo `div` alla fine dell'elemento `.daily-value.sm-text`.
```js
assert(document.querySelector('.daily-value.sm-text')?.lastElementChild?.localName === 'div');
```
-Il tuo nuovo `div` dovrebbe avere l'attributo `class` impostato su `divider`.
+Il nuovo `div` dovrebbe avere l'attributo `class` con il valore `divider`.
```js
assert(document.querySelector('.daily-value.sm-text')?.lastElementChild?.classList?.contains('divider'));
diff --git a/curriculum/challenges/italian/14-responsive-web-design-22/learn-typography-by-building-a-nutrition-label/615f7c71eab8218f846e4503.md b/curriculum/challenges/italian/14-responsive-web-design-22/learn-typography-by-building-a-nutrition-label/615f7c71eab8218f846e4503.md
index 75bbe3c94db..1a178465011 100644
--- a/curriculum/challenges/italian/14-responsive-web-design-22/learn-typography-by-building-a-nutrition-label/615f7c71eab8218f846e4503.md
+++ b/curriculum/challenges/italian/14-responsive-web-design-22/learn-typography-by-building-a-nutrition-label/615f7c71eab8218f846e4503.md
@@ -7,23 +7,23 @@ dashedName: step-50
# --description--
-Dopo il tuo ultimo `.divider`, crea un altro elemento `p` con il testo `Trans Fat 0g`. Metti in corsivo la parola `Trans` annidandola in un elemento `i`. Dai al nuovo elemento `p` l'attributo `class` impostato a `indent no-divider`.
+Dopo l'ultimo `.divider`, crea un altro elemento `p` con il testo `Trans Fat 0g`. Metti in corsivo la parola `Trans` annidandola in un elemento `i`. Dai al nuovo elemento `p` l'attributo `class` con il valore `indent no-divider`.
# --hints--
-Dovresti creare un nuovo elemento `p` alla fine del tuo elemento `.daily-value.sm-text`.
+Dovresti creare un nuovo elemento `p` alla fine dell'elemento `.daily-value.sm-text`.
```js
assert(document.querySelector('.daily-value.sm-text')?.lastElementChild?.localName === 'p');
```
-Il tuo nuovo elemento `p` dovrebbe avere il testo `Trans Fat 0g`.
+Il nuovo elemento `p` dovrebbe avere il testo `Trans Fat 0g`.
```js
assert(document.querySelector('.daily-value.sm-text')?.lastElementChild?.innerText === 'Trans Fat 0g');
```
-Il tuo nuovo elemento `p` dovrebbe avere l'attributo `class` con valore di `indent no-divider`.
+Il nuovo elemento `p` dovrebbe avere l'attributo `class` con il valore `indent no-divider`.
```js
const p = document.querySelector('.daily-value.sm-text')?.lastElementChild;
@@ -31,13 +31,13 @@ assert(p?.classList?.contains('indent'));
assert(p?.classList?.contains('no-divider'));
```
-Il tuo nuovo elemento `p` dovrebbe avere un elemento `i`.
+Il nuovo elemento `p` dovrebbe avere un elemento `i`.
```js
assert(document.querySelector('.daily-value.sm-text')?.lastElementChild?.firstElementChild?.localName === 'i');
```
-Il tuo elemento `i` dovrebbe avvolgere il testo `Trans`.
+L'elemento `i` dovrebbe racchiudere il testo `Trans`.
```js
assert(document.querySelector('.daily-value.sm-text')?.lastElementChild?.firstElementChild?.innerText === 'Trans');
diff --git a/curriculum/challenges/italian/14-responsive-web-design-22/learn-typography-by-building-a-nutrition-label/615f7d489a581590d1350288.md b/curriculum/challenges/italian/14-responsive-web-design-22/learn-typography-by-building-a-nutrition-label/615f7d489a581590d1350288.md
index 64092cdf1e0..e0565dcb99e 100644
--- a/curriculum/challenges/italian/14-responsive-web-design-22/learn-typography-by-building-a-nutrition-label/615f7d489a581590d1350288.md
+++ b/curriculum/challenges/italian/14-responsive-web-design-22/learn-typography-by-building-a-nutrition-label/615f7d489a581590d1350288.md
@@ -7,17 +7,17 @@ dashedName: step-51
# --description--
-Crea un altro `.divider` dopo il tuo ultimo elemento `p`.
+Crea un altro `.divider` dopo l'ultimo elemento `p`.
# --hints--
-Dovresti anche creare un nuovo elemento `div` alla fine del tuo elemento `.daily-value.sm-text`.
+Dovresti anche creare un nuovo elemento `div` alla fine dell'elemento `.daily-value.sm-text`.
```js
assert(document.querySelector('.daily-value.sm-text')?.lastElementChild?.localName === 'div');
```
-Il nuovo elemento `div` dovrebbe avere l'attributo `class` impostato a `divider`.
+Il nuovo elemento `div` dovrebbe avere l'attributo `class` con il valore `divider`.
```js
assert(document.querySelector('.daily-value.sm-text')?.lastElementChild?.classList?.contains('divider'));
diff --git a/curriculum/challenges/italian/14-responsive-web-design-22/learn-typography-by-building-a-nutrition-label/615f7de4487b64919bb4aa5e.md b/curriculum/challenges/italian/14-responsive-web-design-22/learn-typography-by-building-a-nutrition-label/615f7de4487b64919bb4aa5e.md
new file mode 100644
index 00000000000..d233577f9fe
--- /dev/null
+++ b/curriculum/challenges/italian/14-responsive-web-design-22/learn-typography-by-building-a-nutrition-label/615f7de4487b64919bb4aa5e.md
@@ -0,0 +1,178 @@
+---
+id: 615f7de4487b64919bb4aa5e
+title: Step 52
+challengeType: 0
+dashedName: step-52
+---
+
+# --description--
+
+Dopo l'ultimo elemento `.divider`, crea un elemento `p` e dagli il testo `Cholesterol 0mg 0%`. Inserisci il testo `Cholesterol` in un elemento `span` e assegna a quest'elemento `span` un attributo `class` con il valore `bold`. Annida il testo `0%` in un altro elemento `span` con l'attributo `class` impostato su `bold right`.
+
+# --hints--
+
+Dovresti creare un nuovo elemento `p` alla fine dell'elemento `.daily-value.sm-text`.
+
+```js
+assert(document.querySelector('.daily-value.sm-text')?.lastElementChild?.localName === 'p');
+```
+
+Il nuovo elemento `p` dovrebbe avere il testo `Cholesterol 0mg 0%`.
+
+```js
+assert(document.querySelector('.daily-value.sm-text')?.lastElementChild?.innerText?.match(/Cholesterol 0mg[\s|\n]+0%/));
+```
+
+Il nuovo elemento `p` dovrebbe avere due elementi `span`.
+
+```js
+assert(document.querySelector('.daily-value.sm-text')?.lastElementChild?.querySelectorAll('span')?.length === 2);
+```
+
+Il primo elemento `span` dovrebbe avere l'attributo `class` con il valore `bold`.
+
+```js
+assert(document.querySelector('.daily-value.sm-text')?.lastElementChild?.firstElementChild?.classList?.contains('bold'));
+```
+
+Il primo elemento `span` dovrebbe racchiudere il testo `Cholesterol`.
+
+```js
+assert(document.querySelector('.daily-value.sm-text')?.lastElementChild?.firstElementChild?.innerText === 'Cholesterol');
+```
+
+Il secondo elemento `span` dovrebbe avere l'attributo `class` con il valore `bold right`.
+
+```js
+assert(document.querySelector('.daily-value.sm-text')?.lastElementChild?.lastElementChild?.classList?.contains('bold'));
+assert(document.querySelector('.daily-value.sm-text')?.lastElementChild?.lastElementChild?.classList?.contains('right'));
+```
+
+Il secondo elemento `span` dovrebbe racchiudere il testo `0%`.
+
+```js
+assert(document.querySelector('.daily-value.sm-text')?.lastElementChild?.lastElementChild?.innerText === '0%');
+```
+
+# --seed--
+
+## --seed-contents--
+
+```html
+
+
+
+
+ Nutrition Label
+
+
+
+
+
+
+ Nutrition Facts
+
+ 8 servings per container
+ Serving size 2/3 cup (55g)
+
+
+
+ Amount per serving
+ Calories 230
+
+
+
+--fcc-editable-region--
+ % Daily Value *
+
+ Total Fat 8g10%
+ Saturated Fat 1g 5%
+
+ Trans Fat 0g
+
+--fcc-editable-region--
+
+
+
+
+```
+
+```css
+* {
+ box-sizing: border-box;
+}
+
+html {
+ font-size: 16px;
+}
+
+body {
+ font-family: 'Open Sans', sans-serif;
+}
+
+.label {
+ border: 2px solid black;
+ width: 270px;
+ margin: 20px auto;
+ padding: 0 7px;
+}
+
+header h1 {
+ text-align: center;
+ margin: -4px 0;
+ letter-spacing: 0.15px
+}
+
+p {
+ margin: 0;
+}
+
+.divider {
+ border-bottom: 1px solid #888989;
+ margin: 2px 0;
+ clear: right;
+}
+
+.bold {
+ font-weight: 800;
+}
+
+.right {
+ float: right;
+}
+
+.lg {
+ height: 10px;
+}
+
+.lg, .md {
+ background-color: black;
+ border: 0;
+}
+
+.md {
+ height: 5px;
+}
+
+.sm-text {
+ font-size: 0.85rem;
+}
+
+.calories-info h1 {
+ margin: -5px -2px;
+ overflow: hidden;
+}
+
+.calories-info span {
+ font-size: 1.2em;
+ margin-top: -7px;
+}
+
+.indent {
+ margin-left: 1em;
+}
+
+.daily-value p:not(.no-divider) {
+ border-bottom: 1px solid #888989;
+}
+```
diff --git a/curriculum/challenges/italian/14-responsive-web-design-22/learn-typography-by-building-a-nutrition-label/615f7e7281626a92bbd62da8.md b/curriculum/challenges/italian/14-responsive-web-design-22/learn-typography-by-building-a-nutrition-label/615f7e7281626a92bbd62da8.md
index e8b39f9e6d3..292a13f4d38 100644
--- a/curriculum/challenges/italian/14-responsive-web-design-22/learn-typography-by-building-a-nutrition-label/615f7e7281626a92bbd62da8.md
+++ b/curriculum/challenges/italian/14-responsive-web-design-22/learn-typography-by-building-a-nutrition-label/615f7e7281626a92bbd62da8.md
@@ -7,48 +7,48 @@ dashedName: step-53
# --description--
-Sotto l' ultimo elemento `p`, crea un altro elemento `p` con il testo `Sodium 160mg 7%`. Atorrno al testo `Sodium` crea un elemento `span` con un attributo `class` impostato a `bold`. Annida il testo `7%` in un altro elemento `span` con l'attributo `class` impostato a `bold right`.
+Sotto l'ultimo elemento `p`, crea un altro elemento `p` con il testo `Sodium 160mg 7%`. Atorrno al testo `Sodium`, crea un elemento `span` con un attributo `class` impostato su `bold`. Annida il testo `7%` in un altro elemento `span` con l'attributo `class` impostato su `bold right`.
# --hints--
-Dovresti creare un nuovo elemento `p` alla fine del tuo elemento `.daily-value.sm-text`.
+Dovresti creare un nuovo elemento `p` alla fine dell'elemento `.daily-value.sm-text`.
```js
assert(document.querySelector('.daily-value.sm-text')?.lastElementChild?.localName === 'p');
```
-Il tuo nuovo elemento `p` dovrebbe avere il testo `Sodium 160mg 7%`.
+Il nuovo elemento `p` dovrebbe avere il testo `Sodium 160mg 7%`.
```js
assert(document.querySelector('.daily-value.sm-text')?.lastElementChild?.innerText?.match(/Sodium 160mg[\s|\n]+7%/));
```
-Il tuo nuovo elemento `p` dovrebbe avere due elementi `span`.
+Il nuovo elemento `p` dovrebbe avere due elementi `span`.
```js
assert(document.querySelector('.daily-value.sm-text')?.lastElementChild?.querySelectorAll('span')?.length === 2);
```
-Il tuo primo elemento `span` dovrebbe avere l'attributo `class` impostato su `bold`.
+Il primo elemento `span` dovrebbe avere l'attributo `class` con il valore `bold`.
```js
assert(document.querySelector('.daily-value.sm-text')?.lastElementChild?.firstElementChild?.classList?.contains('bold'));
```
-Il tuo primo elemento `span` dovrebbe avvolgere il testo `Sodium`.
+Il primo elemento `span` dovrebbe racchiudere il testo `Sodium`.
```js
assert(document.querySelector('.daily-value.sm-text')?.lastElementChild?.firstElementChild?.innerText === 'Sodium');
```
-Il tuo secondo elemento `span` dovrebbe avere l'attributo `class` impostato su `bold right`.
+Il secondo elemento `span` dovrebbe avere l'attributo `class` con il valore `bold right`.
```js
assert(document.querySelector('.daily-value.sm-text')?.lastElementChild?.lastElementChild?.classList?.contains('bold'));
assert(document.querySelector('.daily-value.sm-text')?.lastElementChild?.lastElementChild?.classList?.contains('right'));
```
-Il tuo secondo elemento `span` dovrebbe avvolgere il testo `7%`.
+Il secondo elemento `span` dovrebbe racchiudere il testo `7%`.
```js
assert(document.querySelector('.daily-value.sm-text')?.lastElementChild?.lastElementChild?.innerText === '7%');
diff --git a/curriculum/challenges/italian/14-responsive-web-design-22/learn-typography-by-building-a-nutrition-label/615f7ecb09de9a938ef94756.md b/curriculum/challenges/italian/14-responsive-web-design-22/learn-typography-by-building-a-nutrition-label/615f7ecb09de9a938ef94756.md
index 17107c260db..43df081c8dd 100644
--- a/curriculum/challenges/italian/14-responsive-web-design-22/learn-typography-by-building-a-nutrition-label/615f7ecb09de9a938ef94756.md
+++ b/curriculum/challenges/italian/14-responsive-web-design-22/learn-typography-by-building-a-nutrition-label/615f7ecb09de9a938ef94756.md
@@ -7,48 +7,48 @@ dashedName: step-54
# --description--
-Aggiungi un altro elemento `p` con il testo `Total Carbohydrate 37g 13%`. Come prima, usa gli elementi `span` per rendere il testo `Total Carbohydrate` in grassetto, e il testo `13%` grassetto e allineato a destra.
+Aggiungi un altro elemento `p` con il testo `Total Carbohydrate 37g 13%`. Come prima, usa gli elementi `span` per rendere il testo `Total Carbohydrate` in grassetto, e il testo `13%` in grassetto e allineato a destra.
# --hints--
-Dovresti creare un nuovo elemento `p` alla fine del tuo elemento `.daily-value.sm-text`.
+Dovresti creare un nuovo elemento `p` alla fine dell'elemento `.daily-value.sm-text`.
```js
assert(document.querySelector('.daily-value.sm-text')?.lastElementChild?.localName === 'p');
```
-Il tuo nuovo elemento `p` dovrebbe avere il testo `Total Carbohydrate 37g 13%`.
+Il nuovo elemento `p` dovrebbe avere il testo `Total Carbohydrate 37g 13%`.
```js
assert(document.querySelector('.daily-value.sm-text')?.lastElementChild?.innerText?.match(/Total Carbohydrate 37g[\s|\n]+13%/));
```
-Il tuo nuovo elemento `p` dovrebbe avere due elementi `span`.
+Il nuovo elemento `p` dovrebbe avere due elementi `span`.
```js
assert(document.querySelector('.daily-value.sm-text')?.lastElementChild?.querySelectorAll('span')?.length === 2);
```
-Il tuo primo elemento `span` dovrebbe avere l'attributo `class` impostato su `bold`.
+Il primo elemento `span` dovrebbe avere l'attributo `class` con il valore `bold`.
```js
assert(document.querySelector('.daily-value.sm-text')?.lastElementChild?.firstElementChild?.classList?.contains('bold'));
```
-Il tuo primo elemento `span` dovrebbe avvolgere il testo `Total Carbohydrate`.
+Il primo elemento `span` dovrebbe racchiudere il testo `Total Carbohydrate`.
```js
assert(document.querySelector('.daily-value.sm-text')?.lastElementChild?.firstElementChild?.innerText === 'Total Carbohydrate');
```
-Il tuo secondo elemento `span` dovrebbe avere l'attributo `class` impostato su `bold right`.
+Il secondo elemento `span` dovrebbe avere l'attributo `class` con il valore `bold right`.
```js
assert(document.querySelector('.daily-value.sm-text')?.lastElementChild?.lastElementChild?.classList?.contains('bold'));
assert(document.querySelector('.daily-value.sm-text')?.lastElementChild?.lastElementChild?.classList?.contains('right'));
```
-Il tuo secondo elemento `span` dovrebbe avvolgere il testo `13%`.
+Il secondo elemento `span` dovrebbe racchiudere il testo `13%`.
```js
assert(document.querySelector('.daily-value.sm-text')?.lastElementChild?.lastElementChild?.innerText === '13%');
diff --git a/curriculum/challenges/italian/14-responsive-web-design-22/learn-typography-by-building-a-nutrition-label/615f7fa959ab75948f96a0d6.md b/curriculum/challenges/italian/14-responsive-web-design-22/learn-typography-by-building-a-nutrition-label/615f7fa959ab75948f96a0d6.md
index ec065ee9a79..83075f0a4d3 100644
--- a/curriculum/challenges/italian/14-responsive-web-design-22/learn-typography-by-building-a-nutrition-label/615f7fa959ab75948f96a0d6.md
+++ b/curriculum/challenges/italian/14-responsive-web-design-22/learn-typography-by-building-a-nutrition-label/615f7fa959ab75948f96a0d6.md
@@ -7,11 +7,11 @@ dashedName: step-55
# --description--
-Sotto il tuo ultimo elemento `p`, aggiungi un altro elemento `p` con il testo `Dietary Fiber 4g`. Dai all'elemento `p` l'elemento `class` necessario per indentarlo e rimuovere il bordo di divisione. Quindi crea un divisore sotto quell'elemento `p`.
+Sotto l'ultimo elemento `p`, aggiungi un altro elemento `p` con il testo `Dietary Fiber 4g`. Dai all'elemento `p` l'attributo `class` necessario per indentarlo e rimuovere il bordo di divisione. Quindi crea un divider sotto quest'elemento `p`.
# --hints--
-Dovresti creare un nuovo elemento `p` e `div` alla fine del tuo elemento `.daily-value.sm-text`.
+Dovresti creare un nuovo elemento `p` e `div` alla fine dell'elemento `.daily-value.sm-text`.
```js
assert(document.querySelector('.daily-value.sm-text')?.lastElementChild?.previousElementSibling?.localName === 'p');
@@ -24,14 +24,14 @@ Il nuovo elemento `p` dovrebbe avere il testo `Dietary Fiber 4g`.
assert(document.querySelector('.daily-value.sm-text p:last-of-type')?.innerText.match(/Dietary Fiber[\s|\n]+4g/));
```
-Il tuo nuovo elemento `p` dovrebbe avere l'attributo `class` impostato a `indent no-divider`.
+Il nuovo elemento `p` dovrebbe avere l'attributo `class` con il valore `indent no-divider`.
```js
assert(document.querySelector('.daily-value.sm-text p:last-of-type')?.classList?.contains('indent'));
assert(document.querySelector('.daily-value.sm-text p:last-of-type')?.classList?.contains('no-divider'));
```
-Il nuovo `div` dovrebbe avere l'attributo `class` impostato su `divider`.
+Il nuovo `div` dovrebbe avere l'attributo `class` con il valore `divider`.
```js
assert(document.querySelector('.daily-value.sm-text')?.lastElementChild?.classList?.contains('divider'));
diff --git a/curriculum/challenges/italian/14-responsive-web-design-22/learn-typography-by-building-a-nutrition-label/615f808d85793195b0f53be9.md b/curriculum/challenges/italian/14-responsive-web-design-22/learn-typography-by-building-a-nutrition-label/615f808d85793195b0f53be9.md
index d6a406ad81d..6b2f1c2a16f 100644
--- a/curriculum/challenges/italian/14-responsive-web-design-22/learn-typography-by-building-a-nutrition-label/615f808d85793195b0f53be9.md
+++ b/curriculum/challenges/italian/14-responsive-web-design-22/learn-typography-by-building-a-nutrition-label/615f808d85793195b0f53be9.md
@@ -7,31 +7,31 @@ dashedName: step-56
# --description--
-Crea un altro elemento `p` dopo il tuo ultimo `.divider`, e dagli il testo `Total Sugars 12g`. Assegna a quell'elemento `p` i valori `class` necessari per indentarlo e rimuovere il bordo inferiore. Quindi crea un altro `.divider` sotto il tuo nuovo elemento `p`.
+Crea un altro elemento `p` dopo l'ultimo `.divider` e dagli il testo `Total Sugars 12g`. Assegna a quest'elemento `p` i valori `class` necessari per indentarlo e rimuovere il bordo inferiore. Quindi crea un altro `.divider` sotto il nuovo elemento `p`.
# --hints--
-Dovresti anche creare un nuovi elementi `p` e `div` alla fine del tuo elemento `.daily-value.sm-text`.
+Dovresti anche creare dei nuovi elementi `p` e `div` alla fine dell'elemento `.daily-value.sm-text`.
```js
assert(document.querySelector('.daily-value.sm-text')?.lastElementChild?.previousElementSibling?.localName === 'p');
assert(document.querySelector('.daily-value.sm-text')?.lastElementChild?.localName === 'div');
```
-Il tuo nuovo elemento `p` dovrebbe avere il testo `Total Sugars 12g`.
+Il nuovo elemento `p` dovrebbe avere il testo `Total Sugars 12g`.
```js
assert(document.querySelector('.daily-value.sm-text p:last-of-type')?.innerText.match(/Total Sugars[\s|\n]+12g/));
```
-Il tuo nuovo elemento `p` dovrebbe avere l'attributo `class` impostato a `indent no-divider`.
+Il nuovo elemento `p` dovrebbe avere l'attributo `class` con il valore `indent no-divider`.
```js
assert(document.querySelector('.daily-value.sm-text p:last-of-type')?.classList?.contains('indent'));
assert(document.querySelector('.daily-value.sm-text p:last-of-type')?.classList?.contains('no-divider'));
```
-Il tuo nuovo elemento `div` dovrebbe avere l'attributo `class` impostato a `divider`.
+Il nuovo elemento `div` dovrebbe avere l'attributo `class` con il valore `divider`.
```js
assert(document.querySelector('.daily-value.sm-text')?.lastElementChild?.classList?.contains('divider'));
diff --git a/curriculum/challenges/italian/14-responsive-web-design-22/learn-typography-by-building-a-nutrition-label/615f829d07b18f96f6f6684b.md b/curriculum/challenges/italian/14-responsive-web-design-22/learn-typography-by-building-a-nutrition-label/615f829d07b18f96f6f6684b.md
index 0c96eba6c34..4ca58ca2edc 100644
--- a/curriculum/challenges/italian/14-responsive-web-design-22/learn-typography-by-building-a-nutrition-label/615f829d07b18f96f6f6684b.md
+++ b/curriculum/challenges/italian/14-responsive-web-design-22/learn-typography-by-building-a-nutrition-label/615f829d07b18f96f6f6684b.md
@@ -7,11 +7,11 @@ dashedName: step-57
# --description--
-Il vantaggio di creare questi divisori è che è possibile applicare classi specifiche per dargli uno stile individualmente. Aggiungi `dbl-indent` all'attributo `class` per il tuo ultimo `.divider`.
+Il vantaggio di creare dei divider è che è possibile applicare classi specifiche per dargli uno stile individualmente. Aggiungi `dbl-indent` all'attributo `class` per l'ultimo `.divider`.
# --hints--
-Il tuo ultimo elemento `.divider` dovrebbe avere `dbl-indent` aggiunto all'attributo `class`. Non rimuovere il valore esistente.
+L'ultimo elemento `.divider` dovrebbe avere `dbl-indent` aggiunto all'attributo `class`. Non rimuovere il valore esistente.
```js
const last = document.querySelector('.daily-value.sm-text')?.lastElementChild;
diff --git a/curriculum/challenges/italian/14-responsive-web-design-22/learn-typography-by-building-a-nutrition-label/615f83ef928ec9982b785b6a.md b/curriculum/challenges/italian/14-responsive-web-design-22/learn-typography-by-building-a-nutrition-label/615f83ef928ec9982b785b6a.md
index 27c93b8dcf1..c74d6008508 100644
--- a/curriculum/challenges/italian/14-responsive-web-design-22/learn-typography-by-building-a-nutrition-label/615f83ef928ec9982b785b6a.md
+++ b/curriculum/challenges/italian/14-responsive-web-design-22/learn-typography-by-building-a-nutrition-label/615f83ef928ec9982b785b6a.md
@@ -17,7 +17,7 @@ Dovresti avere un nuovo selettore `.dbl-indent`.
assert(new __helpers.CSSHelp(document).getStyle('.dbl-indent'));
```
-Il selettore `.dbl-indent` dovrebbe avere una proprietà `margin-left` impostata a `2em`.
+Il selettore `.dbl-indent` dovrebbe avere una proprietà `margin-left` con il valore `2em`.
```js
assert(new __helpers.CSSHelp(document).getStyle('.dbl-indent')?.marginLeft === '2em');
diff --git a/curriculum/challenges/italian/14-responsive-web-design-22/learn-typography-by-building-a-nutrition-label/615f84f246e8ba98e3cd97be.md b/curriculum/challenges/italian/14-responsive-web-design-22/learn-typography-by-building-a-nutrition-label/615f84f246e8ba98e3cd97be.md
index 0644b3c80d4..8a27aef91f5 100644
--- a/curriculum/challenges/italian/14-responsive-web-design-22/learn-typography-by-building-a-nutrition-label/615f84f246e8ba98e3cd97be.md
+++ b/curriculum/challenges/italian/14-responsive-web-design-22/learn-typography-by-building-a-nutrition-label/615f84f246e8ba98e3cd97be.md
@@ -7,52 +7,52 @@ dashedName: step-59
# --description--
-Sotto il tuo elemento `.dbl-indent`, aggiungi un nuovo elemento `p` con il testo `Includes 10g Added Sugars 20%`. Il tuo nuovo elemento `p` dovrebbe essere anche doppiamente indentato, e non avere bordi inferiori. Usa un elemento `span` per rendere il `20%` in grassetto e allineato a destra.
+Sotto l'elemento `.dbl-indent`, aggiungi un nuovo elemento `p` con il testo `Includes 10g Added Sugars 20%`. Il nuovo elemento `p` dovrebbe essere anche doppiamente indentato e non avere il bordo inferiore. Usa un elemento `span` per rendere il `20%` in grassetto e allineato a destra.
-Poi crea un altro divisore dopo quell'elemento `p`.
+Poi crea un altro divider dopo l'elemento `p`.
# --hints--
-Dovresti creare un nuovo elemento `p` e un nuovo `div` alla fine del tuo elemento `.daily-value.sm-text`.
+Dovresti creare un nuovo elemento `p` e un nuovo `div` alla fine dell'elemento `.daily-value.sm-text`.
```js
assert(document.querySelector('.daily-value.sm-text')?.lastElementChild?.previousElementSibling?.localName === 'p');
assert(document.querySelector('.daily-value.sm-text')?.lastElementChild?.localName === 'div');
```
-Il tuo nuovo elemento `p` dovrebbe avere il testo `Includes 10g Added Sugars 20%`.
+Il nuovo elemento `p` dovrebbe avere il testo `Includes 10g Added Sugars 20%`.
```js
assert(document.querySelector('.daily-value.sm-text p:last-of-type')?.innerText.match(/Includes 10g Added Sugars[\s|\n]+20%/));
```
-Il tuo nuovo elemento `p` dovrebbe avere l'attributo `class` impostato a `dbl-indent no-divider`.
+Il nuovo elemento `p` dovrebbe avere l'attributo `class` con il valore `dbl-indent no-divider`.
```js
assert(document.querySelector('.daily-value.sm-text p:last-of-type')?.classList?.contains('dbl-indent'));
assert(document.querySelector('.daily-value.sm-text p:last-of-type')?.classList?.contains('no-divider'));
```
-Il tuo nuovo elemento `p` dovrebbe avere un elemento `span`.
+Il nuovo elemento `p` dovrebbe avere un elemento `span`.
```js
assert(document.querySelector('.daily-value.sm-text p:last-of-type')?.firstElementChild?.localName === 'span');
```
-Il tuo elemento `span` dovrebbe avere l'attributo `class` impostato a `bold right`.
+L'elemento `span` dovrebbe avere l'attributo `class` con il valore `bold right`.
```js
assert(document.querySelector('.daily-value.sm-text p:last-of-type')?.firstElementChild?.classList?.contains('bold'));
assert(document.querySelector('.daily-value.sm-text p:last-of-type')?.firstElementChild?.classList?.contains('right'));
```
-Il tuo elemento `span` dovrebbe avvolgere il testo `20%`.
+L'elemento `span` dovrebbe racchiudere il testo `20%`.
```js
assert(document.querySelector('.daily-value.sm-text p:last-of-type span')?.innerText === '20%');
```
-Il tuo nuovo elemento `div` dovrebbe avere l'attributo `class` impostato a `divider`.
+Il nuovo elemento `div` dovrebbe avere l'attributo `class` con il valore `divider`.
```js
assert(document.querySelector('.daily-value.sm-text')?.lastElementChild?.classList?.contains('divider'));
diff --git a/curriculum/challenges/italian/14-responsive-web-design-22/learn-typography-by-building-a-nutrition-label/615f887466db4ba14b5342cc.md b/curriculum/challenges/italian/14-responsive-web-design-22/learn-typography-by-building-a-nutrition-label/615f887466db4ba14b5342cc.md
index aa01d01c218..bbf550cdb39 100644
--- a/curriculum/challenges/italian/14-responsive-web-design-22/learn-typography-by-building-a-nutrition-label/615f887466db4ba14b5342cc.md
+++ b/curriculum/challenges/italian/14-responsive-web-design-22/learn-typography-by-building-a-nutrition-label/615f887466db4ba14b5342cc.md
@@ -7,13 +7,13 @@ dashedName: step-60
# --description--
-Dopo il tuo ultimo divisore, crea un altro elemento `p` con il testo `Protein 3g`. Usa le classi necessarie per rimuovere il bordo inferiore e un elemento `span` per rendere grassetto il testo `Protein`.
+Dopo l'ultimo divider, crea un altro elemento `p` con il testo `Protein 3g`. Usa le classi necessarie per rimuovere il bordo inferiore e un elemento `span` per rendere in grassetto il testo `Protein`.
-Dopo questo elemento, creare un grande divisore.
+Dopo questo elemento, crea un divider grande.
# --hints--
-Dovresti creare un nuovo elemento `p` e `div` alla fine del tuo elemento `.daily-value.sm-text`.
+Dovresti creare un nuovo elemento `p` e un nuovo `div` alla fine dell'elemento `.daily-value.sm-text`.
```js
assert(document.querySelector('.daily-value.sm-text')?.lastElementChild?.previousElementSibling?.localName === 'p');
@@ -26,13 +26,13 @@ Il nuovo elemento `p` dovrebbe avere il testo `Protein 3g`.
assert(document.querySelector('.daily-value.sm-text p:last-of-type')?.innerText.match(/Protein[\s|\n]+3g/));
```
-Il nuovo elemento `p` dovrebbe avere l'attributo `class` impostato a `no-divider`.
+Il nuovo elemento `p` dovrebbe avere l'attributo `class` con il valore `no-divider`.
```js
assert(document.querySelector('.daily-value.sm-text p:last-of-type')?.classList?.contains('no-divider'));
```
-Il nuovo elemento `div` dovrebbe avere l'attributo `class` impostato a `divider lg`.
+Il nuovo elemento `div` dovrebbe avere l'attributo `class` con il valore `divider lg`.
```js
assert(document.querySelector('.daily-value.sm-text')?.lastElementChild?.classList?.contains('divider'));
diff --git a/curriculum/challenges/italian/14-responsive-web-design-22/learn-typography-by-building-a-nutrition-label/615f89e055040ba294719d2f.md b/curriculum/challenges/italian/14-responsive-web-design-22/learn-typography-by-building-a-nutrition-label/615f89e055040ba294719d2f.md
index cfe9fb2f2e9..b68646e7687 100644
--- a/curriculum/challenges/italian/14-responsive-web-design-22/learn-typography-by-building-a-nutrition-label/615f89e055040ba294719d2f.md
+++ b/curriculum/challenges/italian/14-responsive-web-design-22/learn-typography-by-building-a-nutrition-label/615f89e055040ba294719d2f.md
@@ -7,29 +7,29 @@ dashedName: step-61
# --description--
-Crea un altro elemento `p` sotto il tuo grande divisore. Dai all'elemento `p` il testo `Vitamin D 2mcg 10%`. Usa un elemento `span` per allineare il `10%` a destra, ma non renderlo in grassetto.
+Crea un altro elemento `p` sotto il divider grande. Dai all'elemento `p` il testo `Vitamin D 2mcg 10%`. Usa un elemento `span` per allineare il `10%` a destra, ma non metterlo in grassetto.
# --hints--
-Dovresti creare un nuovo elemento `p` alla fine del tuo elemento `.daily-value.sm-text`.
+Dovresti creare un nuovo elemento `p` alla fine dell'elemento `.daily-value.sm-text`.
```js
assert(document.querySelector('.daily-value.sm-text')?.lastElementChild?.localName === 'p');
```
-Il tuo nuovo elemento `p` dovrebbe avere il testo `Vitamin D 2mcg 10%`.
+Il nuovo elemento `p` dovrebbe avere il testo `Vitamin D 2mcg 10%`.
```js
assert(document.querySelector('.daily-value.sm-text')?.lastElementChild?.innerText?.match(/Vitamin D 2mcg[\s|\n]+10%/));
```
-Il tuo nuovo elemento `p` dovrebbe avere un elemento `span`.
+Il nuovo elemento `p` dovrebbe avere un elemento `span`.
```js
assert(document.querySelector('.daily-value.sm-text')?.lastElementChild?.querySelectorAll('span')?.length === 1);
```
-Il tuo elemento `span` dovrebbe avere l'attributo `class` impostato a `right`. Ricorda che non dovresti farlo in grassetto.
+L'elemento `span` dovrebbe avere l'attributo `class` con il valore `right`. Ricorda di non metterlo in grassetto.
```js
assert(document.querySelector('.daily-value.sm-text')?.lastElementChild?.querySelector('span')?.classList?.contains('right'));
diff --git a/curriculum/challenges/japanese/02-javascript-algorithms-and-data-structures/basic-javascript/multiple-identical-options-in-switch-statements.md b/curriculum/challenges/japanese/02-javascript-algorithms-and-data-structures/basic-javascript/multiple-identical-options-in-switch-statements.md
index 97c4ffe410f..06dfe59f421 100644
--- a/curriculum/challenges/japanese/02-javascript-algorithms-and-data-structures/basic-javascript/multiple-identical-options-in-switch-statements.md
+++ b/curriculum/challenges/japanese/02-javascript-algorithms-and-data-structures/basic-javascript/multiple-identical-options-in-switch-statements.md
@@ -13,7 +13,7 @@ dashedName: multiple-identical-options-in-switch-statements
```js
let result = "";
-switch(val) {
+switch (val) {
case 1:
case 2:
case 3:
@@ -127,7 +127,7 @@ sequentialSizes(1);
function sequentialSizes(val) {
let answer = "";
- switch(val) {
+ switch (val) {
case 1:
case 2:
case 3:
diff --git a/curriculum/challenges/japanese/02-javascript-algorithms-and-data-structures/basic-javascript/replacing-if-else-chains-with-switch.md b/curriculum/challenges/japanese/02-javascript-algorithms-and-data-structures/basic-javascript/replacing-if-else-chains-with-switch.md
index cbdef99d520..2559731f205 100644
--- a/curriculum/challenges/japanese/02-javascript-algorithms-and-data-structures/basic-javascript/replacing-if-else-chains-with-switch.md
+++ b/curriculum/challenges/japanese/02-javascript-algorithms-and-data-structures/basic-javascript/replacing-if-else-chains-with-switch.md
@@ -24,7 +24,7 @@ if (val === 1) {
これは次のように置き換えることができます。
```js
-switch(val) {
+switch (val) {
case 1:
answer = "a";
break;
@@ -136,7 +136,7 @@ chainToSwitch(7);
function chainToSwitch(val) {
let answer = "";
- switch(val) {
+ switch (val) {
case "bob":
answer = "Marley";
break;
diff --git a/curriculum/challenges/japanese/02-javascript-algorithms-and-data-structures/basic-javascript/selecting-from-many-options-with-switch-statements.md b/curriculum/challenges/japanese/02-javascript-algorithms-and-data-structures/basic-javascript/selecting-from-many-options-with-switch-statements.md
index 63e1696c109..a5aeffb6a48 100644
--- a/curriculum/challenges/japanese/02-javascript-algorithms-and-data-structures/basic-javascript/selecting-from-many-options-with-switch-statements.md
+++ b/curriculum/challenges/japanese/02-javascript-algorithms-and-data-structures/basic-javascript/selecting-from-many-options-with-switch-statements.md
@@ -14,7 +14,7 @@ dashedName: selecting-from-many-options-with-switch-statements
次は `switch` ステートメントの例です。
```js
-switch(lowercaseLetter) {
+switch (lowercaseLetter) {
case "a":
console.log("A");
break;
@@ -96,7 +96,7 @@ caseInSwitch(1);
function caseInSwitch(val) {
let answer = "";
- switch(val) {
+ switch (val) {
case 1:
answer = "alpha";
break;
diff --git a/curriculum/challenges/japanese/14-responsive-web-design-22/learn-accessibility-by-building-a-quiz/6133d11ef548f51f876149e3.md b/curriculum/challenges/japanese/14-responsive-web-design-22/learn-accessibility-by-building-a-quiz/6133d11ef548f51f876149e3.md
new file mode 100644
index 00000000000..a9015bfb006
--- /dev/null
+++ b/curriculum/challenges/japanese/14-responsive-web-design-22/learn-accessibility-by-building-a-quiz/6133d11ef548f51f876149e3.md
@@ -0,0 +1,68 @@
+---
+id: 6133d11ef548f51f876149e3
+title: ステップ 6
+challengeType: 0
+dashedName: step-6
+---
+
+# --description--
+
+ナビゲーションはアクセシビリティの中核をなす部分であり、スクリーンリーダーは、あなたが提供するページの構造情報を頼りにしています。 これはセマンティックな HTML 要素を用いて実現します。
+
+ページに `header` 要素と `main` 要素を 1 つずつ追加してください。
+
+`header` 要素はナビゲーションメニューの提供と、ページの紹介に使用されます。
+
+`main` 要素にはページの中心的な内容を含めます。
+
+# --hints--
+
+`header` 要素を `body` 要素に追加する必要があります。
+
+```js
+assert.exists(document.querySelector('body > header'));
+```
+
+`main` 要素を `body` 要素に追加する必要があります。
+
+```js
+assert.exists(document.querySelector('body > main'));
+```
+
+`header` 要素は `main` 要素の前に来る必要があります。
+
+```js
+assert.exists(document.querySelector('header + main'));
+```
+
+# --seed--
+
+## --seed-contents--
+
+```html
+
+
+
+
+
+
+ Accessibility Quiz
+
+
+--fcc-editable-region--
+
+
+
+--fcc-editable-region--
+
+
+```
+
+```css
+body {
+ background: #f5f6f7;
+ color: #1b1b32;
+ font-family: Helvetica;
+ margin: 0;
+}
+```
diff --git a/curriculum/challenges/japanese/14-responsive-web-design-22/learn-accessibility-by-building-a-quiz/613e2546d0594208229ada50.md b/curriculum/challenges/japanese/14-responsive-web-design-22/learn-accessibility-by-building-a-quiz/613e2546d0594208229ada50.md
new file mode 100644
index 00000000000..55bb3d5dfdd
--- /dev/null
+++ b/curriculum/challenges/japanese/14-responsive-web-design-22/learn-accessibility-by-building-a-quiz/613e2546d0594208229ada50.md
@@ -0,0 +1,93 @@
+---
+id: 613e2546d0594208229ada50
+title: ステップ 7
+challengeType: 0
+dashedName: step-7
+---
+
+# --description--
+
+`header` 要素内に、`img`、`h1`、`nav` の各要素を 1 つずつ入れ子にし、このページの文脈を提供しましょう。
+
+`img` 要素は `https://cdn.freecodecamp.org/platform/universal/fcc_primary.svg` を指し、また、`logo` という `id` を持つようにしてください。
+
+`h1` 要素は `HTML/CSS Quiz` というテキストを含むようにしましょう。
+
+# --hints--
+
+`img` 要素を `header` 要素に 1 つ追加する必要があります。
+
+```js
+assert.exists(document.querySelector('header > img'));
+```
+
+`h1` 要素を `header` 要素に 1 つ追加する必要があります。
+
+```js
+assert.exists(document.querySelector('header > h1'));
+```
+
+`nav` 要素を `header` 要素に 1 つ追加する必要があります。
+
+```js
+assert.exists(document.querySelector('header > nav'));
+```
+
+`img`、`h1`、`nav` の各要素をこの順番で配置する必要があります。
+
+```js
+assert.exists(document.querySelector('img + h1 + nav'));
+```
+
+`img` 要素に、値が `https://cdn.freecodecamp.org/platform/universal/fcc_primary.svg` に設定されている `src` 属性を加える必要があります。
+
+```js
+assert.equal(document.querySelector('img')?.src, 'https://cdn.freecodecamp.org/platform/universal/fcc_primary.svg');
+```
+
+`img` 要素に、値が `logo` に設定されている `id` 属性を加える必要があります。
+
+```js
+assert.equal(document.querySelector('img')?.id, 'logo');
+```
+
+`h1` 要素に `HTML/CSS Quiz` というテキストを加える必要があります。
+
+```js
+assert.include(document.querySelector('h1')?.innerText?.toLowerCase(), 'html/css quiz');
+```
+
+# --seed--
+
+## --seed-contents--
+
+```html
+
+
+
+
+
+
+ Accessibility Quiz
+
+
+
+--fcc-editable-region--
+
+
+
+--fcc-editable-region--
+
+
+
+
+```
+
+```css
+body {
+ background: #f5f6f7;
+ color: #1b1b32;
+ font-family: Helvetica;
+ margin: 0;
+}
+```
diff --git a/curriculum/challenges/japanese/14-responsive-web-design-22/learn-accessibility-by-building-a-quiz/613e275749ebd008e74bb62e.md b/curriculum/challenges/japanese/14-responsive-web-design-22/learn-accessibility-by-building-a-quiz/613e275749ebd008e74bb62e.md
new file mode 100644
index 00000000000..f2e1a5f8071
--- /dev/null
+++ b/curriculum/challenges/japanese/14-responsive-web-design-22/learn-accessibility-by-building-a-quiz/613e275749ebd008e74bb62e.md
@@ -0,0 +1,66 @@
+---
+id: 613e275749ebd008e74bb62e
+title: ステップ 8
+challengeType: 0
+dashedName: step-8
+---
+
+# --description--
+
+_SVG_ (scalable vector graphics) の便利な特徴として、SVG は、画像の解像度に影響を与えずに拡大縮小することを可能にする `path` 属性を含みます。
+
+今、`img` 要素はデフォルトのサイズを想定していますが、大きすぎるようです。 正しく表示するため、`id` をセレクターとして使用し、`width` の値を `max(100px, 18vw)` に設定して画像を縮小してください。
+
+# --hints--
+
+`#logo` セレクターを使用して `img` 要素を選択する必要があります。
+
+```js
+assert.exists(new __helpers.CSSHelp(document).getStyle('#logo'));
+```
+
+`img` 要素の `width` を `max(100px, 18vw)` に設定する必要があります。
+
+```js
+assert.equal(new __helpers.CSSHelp(document).getStyle('#logo')?.width, 'max(100px, 18vw)');
+```
+
+# --seed--
+
+## --seed-contents--
+
+```html
+
+
+
+
+
+
+ Accessibility Quiz
+
+
+
+
+
+ HTML/CSS Quiz
+
+
+
+
+
+
+```
+
+```css
+body {
+ background: #f5f6f7;
+ color: #1b1b32;
+ font-family: Helvetica;
+ margin: 0;
+}
+
+--fcc-editable-region--
+
+--fcc-editable-region--
+
+```
diff --git a/curriculum/challenges/portuguese/01-responsive-web-design/css-flexbox/align-elements-using-the-justify-content-property.md b/curriculum/challenges/portuguese/01-responsive-web-design/css-flexbox/align-elements-using-the-justify-content-property.md
index fe39e1cec39..37bb9e0928a 100644
--- a/curriculum/challenges/portuguese/01-responsive-web-design/css-flexbox/align-elements-using-the-justify-content-property.md
+++ b/curriculum/challenges/portuguese/01-responsive-web-design/css-flexbox/align-elements-using-the-justify-content-property.md
@@ -11,7 +11,7 @@ dashedName: align-elements-using-the-justify-content-property
Às vezes, os flex items dentro de um flex container não preenchem todo o espaço no disponível no contêiner. É comum querer dizer ao CSS como alinhar e espaçar os flex items de uma certa maneira. Felizmente, a propriedade `justify-content` tem várias opções para fazer isso. Antes, no entanto, há uma terminologia importante para entender antes de aprender essas opções.
-[Aqui temos uma imagem útil do W3C, que ilustra os conceitos abaixo para um contêiner flex do tipo 'row' (linha).](https://www.w3.org/TR/css-flexbox-1/images/flex-direction-terms.svg)
+[Para mais informações sobre as propriedades do flex-box](https://www.freecodecamp.org/news/flexbox-the-ultimate-css-flex-cheatsheet/)
Lembre-se de que definir um flex container como uma linha coloca os flex items lado a lado da esquerda para a direita. Já um flex container como uma coluna coloca os flex items em uma pilha vertical de cima para baixo. Seja qual for a direção do flex container, a direção em que os flex items são posicionados é chamada de **eixo principal**. Para uma linha, o eixo principal é uma linha horizontal que passa através de cada item. E para uma coluna, o eixo principal é uma linha vertical que passa através de cada item.
diff --git a/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/multiple-identical-options-in-switch-statements.md b/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/multiple-identical-options-in-switch-statements.md
index b36c8a09da4..03b92f71309 100644
--- a/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/multiple-identical-options-in-switch-statements.md
+++ b/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/multiple-identical-options-in-switch-statements.md
@@ -13,7 +13,7 @@ Se a instrução `break` for omitida de uma instrução `case` de um `switch`, a
```js
let result = "";
-switch(val) {
+switch (val) {
case 1:
case 2:
case 3:
@@ -127,7 +127,7 @@ sequentialSizes(1);
function sequentialSizes(val) {
let answer = "";
- switch(val) {
+ switch (val) {
case 1:
case 2:
case 3:
diff --git a/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/replacing-if-else-chains-with-switch.md b/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/replacing-if-else-chains-with-switch.md
index c08b94c7c65..ea6de9e0177 100644
--- a/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/replacing-if-else-chains-with-switch.md
+++ b/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/replacing-if-else-chains-with-switch.md
@@ -24,7 +24,7 @@ if (val === 1) {
pode ser substituído por:
```js
-switch(val) {
+switch (val) {
case 1:
answer = "a";
break;
@@ -136,7 +136,7 @@ chainToSwitch(7);
function chainToSwitch(val) {
let answer = "";
- switch(val) {
+ switch (val) {
case "bob":
answer = "Marley";
break;
diff --git a/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/selecting-from-many-options-with-switch-statements.md b/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/selecting-from-many-options-with-switch-statements.md
index 82c837dbda5..13606b0b6b0 100644
--- a/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/selecting-from-many-options-with-switch-statements.md
+++ b/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/selecting-from-many-options-with-switch-statements.md
@@ -14,7 +14,7 @@ Se você possui muitas opções pra escolher, use uma instrução switch div')?.length, 3);
+```
+
+Você deve dar à `div` uma `class` de `left-mountain`.
+
+```js
+assert.include(document.querySelector('body > div:not(.ground, .penguin)')?.className, 'left-mountain');
+```
+
+Você deve colocar o `.left-mountain` antes de `.penguin`.
+
+```js
+assert.strictEqual(document.querySelector('.penguin')?.previousElementSibling, document.querySelector('.left-mountain'));
+```
+
+# --seed--
+
+## --seed-contents--
+
+```html
+
+
+
+
+
+
+ Penguin
+
+
+
+--fcc-editable-region--
+
+
+
+
+
+--fcc-editable-region--
+
+```
+
+```css
+body {
+ background: linear-gradient(45deg, rgb(118, 201, 255), rgb(247, 255, 222));
+ margin: 0;
+ padding: 0;
+ width: 100%;
+ height: 100vh;
+ overflow: clip;
+}
+
+.penguin {
+ width: 300px;
+ height: 300px;
+ margin: auto;
+ margin-top: 75px;
+}
+
+.ground {
+ width: 100vw;
+ height: 400px;
+ background: linear-gradient(90deg, rgb(88, 175, 236), rgb(182, 255, 255));
+ z-index: 3;
+ position: absolute;
+}
+```
diff --git a/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-css-transforms-by-building-a-penguin/61969c487ced6f12db8fef94.md b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-css-transforms-by-building-a-penguin/61969c487ced6f12db8fef94.md
new file mode 100644
index 00000000000..44342ab275e
--- /dev/null
+++ b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-css-transforms-by-building-a-penguin/61969c487ced6f12db8fef94.md
@@ -0,0 +1,89 @@
+---
+id: 61969c487ced6f12db8fef94
+title: Passo 14
+challengeType: 0
+dashedName: step-14
+---
+
+# --description--
+
+Coloque em foco o elemento `.left-mountain` e defina `width` e `height` como `300px`. Então, defina o `background` como um gradiente linear começando em `rgb(203, 241, 228)` e terminando em `rgb(80, 183, 255)`.
+
+# --hints--
+
+Você deve usar o seletor `.left-mountain`.
+
+```js
+assert.match(code, /\.left-mountain\s*\{/);
+```
+
+Você deve dar a `.left-mountain` uma `width` de `300px`. Encontrado `--fcc-actual--` ao invés de `--fcc-expected--`.
+
+```js
+assert.equal(new __helpers.CSSHelp(document).getStyle('.left-mountain')?.width, '300px');
+```
+
+Você deve dar a `.left-mountain` uma `height` de `300px`. Encontrado `--fcc-actual--` ao invés de `--fcc-expected--`.
+
+```js
+assert.equal(new __helpers.CSSHelp(document).getStyle('.left-mountain')?.height, '300px');
+```
+
+Você deve dar a `.left-mountain` um `background` de `linear-gradient(rgb(203, 241, 228), rgb(80, 183, 255))`.
+
+```js
+assert.include(['linear-gradient(rgb(203,241,228),rgb(80,183,255))', 'rgba(0,0,0,0)linear-gradient(rgb(203,241,228),rgb(80,183,255))repeatscroll0%0%'], new __helpers.CSSHelp(document).getStyle('.left-mountain')?.getPropVal('background', true));
+```
+
+# --seed--
+
+## --seed-contents--
+
+```html
+
+
+
+
+
+
+ Penguin
+
+
+
+
+
+
+
+
+
+```
+
+```css
+body {
+ background: linear-gradient(45deg, rgb(118, 201, 255), rgb(247, 255, 222));
+ margin: 0;
+ padding: 0;
+ width: 100%;
+ height: 100vh;
+ overflow: clip;
+}
+
+--fcc-editable-region--
+
+--fcc-editable-region--
+
+.penguin {
+ width: 300px;
+ height: 300px;
+ margin: auto;
+ margin-top: 75px;
+}
+
+.ground {
+ width: 100vw;
+ height: 400px;
+ background: linear-gradient(90deg, rgb(88, 175, 236), rgb(182, 255, 255));
+ z-index: 3;
+ position: absolute;
+}
+```
diff --git a/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-css-transforms-by-building-a-penguin/61969d66cfcdba137d021558.md b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-css-transforms-by-building-a-penguin/61969d66cfcdba137d021558.md
new file mode 100644
index 00000000000..0bcf4fb973b
--- /dev/null
+++ b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-css-transforms-by-building-a-penguin/61969d66cfcdba137d021558.md
@@ -0,0 +1,76 @@
+---
+id: 61969d66cfcdba137d021558
+title: Passo 15
+challengeType: 0
+dashedName: step-15
+---
+
+# --description--
+
+Para evitar que a montanha empurre o elemento `.ground`, ajuste a `position` para evitar que ocupe espaço no layout da página.
+
+# --hints--
+
+Você deve dar a `.left-mountain` uma `position` de `absolute`. Encontrado `--fcc-actual--` ao invés de `--fcc-expected--`.
+
+```js
+assert.equal(new __helpers.CSSHelp(document).getStyle('.left-mountain')?.position, 'absolute');
+```
+
+# --seed--
+
+## --seed-contents--
+
+```html
+
+
+
+
+
+
+ Penguin
+
+
+
+
+
+
+
+
+
+```
+
+```css
+body {
+ background: linear-gradient(45deg, rgb(118, 201, 255), rgb(247, 255, 222));
+ margin: 0;
+ padding: 0;
+ width: 100%;
+ height: 100vh;
+ overflow: clip;
+}
+
+--fcc-editable-region--
+.left-mountain {
+ width: 300px;
+ height: 300px;
+ background: linear-gradient(rgb(203, 241, 228), rgb(80, 183, 255));
+
+}
+--fcc-editable-region--
+
+.penguin {
+ width: 300px;
+ height: 300px;
+ margin: auto;
+ margin-top: 75px;
+}
+
+.ground {
+ width: 100vw;
+ height: 400px;
+ background: linear-gradient(90deg, rgb(88, 175, 236), rgb(182, 255, 255));
+ z-index: 3;
+ position: absolute;
+}
+```
diff --git a/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60f027099a15b00485563dd2.md b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60f027099a15b00485563dd2.md
new file mode 100644
index 00000000000..9424507de46
--- /dev/null
+++ b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60f027099a15b00485563dd2.md
@@ -0,0 +1,54 @@
+---
+id: 60f027099a15b00485563dd2
+title: Passo 2
+challengeType: 0
+dashedName: step-2
+---
+
+# --description--
+
+Adicione as tags de abertura e fechamento de `html` abaixo do `DOCTYPE` para que você tenha um lugar para começar a colocar algum código.
+
+# --hints--
+
+A declaração `DOCTYPE` deve estar no ínicio do HTML.
+
+```js
+assert(__helpers.removeHtmlComments(code).match(/^\s*/i));
+```
+
+O elemento `html` deve ter uma tag de abertura.
+
+```js
+assert(code.match(//gi));
+```
+
+O elemento `html` deve ter uma tag de fechamento.
+
+```js
+assert(code.match(/<\/html\s*>/));
+```
+
+As tags `html` devem estar na ordem correta.
+
+```js
+assert(code.match(/\s*<\/html\s*>/));
+```
+
+Você deve ter apenas um elemento `html`.
+
+```js
+// Possibly a redundant test, as browser fixes this
+assert(document.querySelectorAll('html').length === 1);
+```
+
+# --seed--
+
+## --seed-contents--
+
+```html
+--fcc-editable-region--
+
+
+--fcc-editable-region--
+```
diff --git a/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60f0286404aefb0562a4fdf9.md b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60f0286404aefb0562a4fdf9.md
new file mode 100644
index 00000000000..58e7b3a4aae
--- /dev/null
+++ b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60f0286404aefb0562a4fdf9.md
@@ -0,0 +1,99 @@
+---
+id: 60f0286404aefb0562a4fdf9
+title: Passo 4
+challengeType: 0
+dashedName: step-4
+---
+
+# --description--
+
+Adicione um elemento `title` ao `head`e dê ao projeto um título de `Registration Form`. Da mesma forma, aninhe um elemento `link` de fechamento automático ao elemento `head`. Dê a ele um atributo `rel` com o valor `stylesheet`, um atributo `type` com o valor `text/css` e um atributo `href` com o valor `styles.css`.
+
+# --hints--
+
+O código deve ter um elemento `title`.
+
+```js
+const title = document.querySelector('title');
+assert.exists(title);
+```
+
+O elemento `title` deve estar dentro do elemento `head`.
+
+```js
+assert.exists(document.querySelector('head > title'));
+```
+
+O projeto deve ter o título `Registration Form`.
+
+```js
+const title = document.querySelector('title');
+assert.equal(title.text.toLowerCase(), 'registration form')
+```
+
+Lembre-se, maiúsculas, minúsculas e a ortografia são importantes para o título.
+
+```js
+const title = document.querySelector('title');
+assert.equal(title.text, 'Registration Form');
+```
+
+O código deve ter um elemento `link`.
+
+```js
+assert.match(code, //i));
+```
+
+O elemento `link` deve estar dentro do elemento `head`.
+
+```js
+assert(code.match(/[\w\W\s]*[\w\W\s]*<\/head>/i))
+```
+
+O elemento `link` deve ter um atributo `rel` com o valor `stylesheet`.
+
+```js
+assert.match(code, /
+
+ --fcc-editable-region--
+
+
+
+
+
+--fcc-editable-region--
+
+```
diff --git a/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60f1922fcbd2410527b3bd89.md b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60f1922fcbd2410527b3bd89.md
new file mode 100644
index 00000000000..80c63410aa1
--- /dev/null
+++ b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60f1922fcbd2410527b3bd89.md
@@ -0,0 +1,54 @@
+---
+id: 60f1922fcbd2410527b3bd89
+title: Passo 7
+challengeType: 0
+dashedName: step-7
+---
+
+# --description--
+
+Para dar uma arrumada no projeto, vamos adicionar um pouco de CSS. Comece fornecendo ao `body` uma `width` de `100%`, e uma `height` de `100vh`.
+
+# --hints--
+
+Você deve usar o elemento `body`.
+
+```js
+assert.exists(new __helpers.CSSHelp(document).getStyle('body'));
+```
+
+Você deve dar ao `body` uma `width` de `100%`.
+
+```js
+assert.equal(new __helpers.CSSHelp(document).getStyle('body')?.width, '100%');
+```
+
+Você deve dar ao `body` uma `height` de `100vh`.
+
+```js
+assert.equal(new __helpers.CSSHelp(document).getStyle('body')?.height, '100vh');
+```
+
+# --seed--
+
+## --seed-contents--
+
+```html
+
+
+
+ Registration Form
+
+
+
+ Registration Form
+ Please fill out this form with the required information
+
+
+```
+
+```css
+--fcc-editable-region--
+
+--fcc-editable-region--
+```
diff --git a/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60f805f813eaf2049bc2ceea.md b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60f805f813eaf2049bc2ceea.md
new file mode 100644
index 00000000000..91f18ce1024
--- /dev/null
+++ b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60f805f813eaf2049bc2ceea.md
@@ -0,0 +1,94 @@
+---
+id: 60f805f813eaf2049bc2ceea
+title: Passo 15
+challengeType: 0
+dashedName: step-15
+---
+
+# --description--
+
+Adicione um elemento `input` dentro do elemento `label`. Não se esqueça de adicionar os elementos `input` após o texto `label` e de incluir um espaço após a vírgula.
+
+# --hints--
+
+Você deve adicionar um elemento `input` ao elemento `fieldset`.
+
+```js
+assert.equal(document.querySelectorAll('fieldset input')?.length, 4);
+```
+
+Você deve aninhar os elementos `input` dentro dos elementos `label`.
+
+```js
+assert.equal(document.querySelectorAll('label input')?.length, 4);
+```
+
+Você deve adicionar o primeiro `input` após o texto `Enter Your First Name:` do elemento `label` e incluir um espaço depois dos dois-pontos.
+
+```js
+assert.equal(document.querySelectorAll('label')?.[0]?.innerHTML, 'Enter Your First Name: ');
+```
+
+Você deve adicionar o segundo `input` após o texto `Enter Your Last Name:` do elemento `label` e incluir um espaço depois dos dois-pontos.
+
+```js
+assert.equal(document.querySelectorAll('label')?.[1]?.innerHTML, 'Enter Your Last Name: ');
+```
+
+Você deve adicionar o terceiro `input` após o texto `Enter Your Email:` do elemento `label` e incluir um espaço depois dos dois-pontos.
+
+```js
+assert.equal(document.querySelectorAll('label')?.[2]?.innerHTML, 'Enter Your Email: ');
+```
+
+Você deve adicionar o quarto `input` após o texto `Create a New Password:` do elemento `label` e incluir um espaço depois dos dois-pontos.
+
+```js
+assert.equal(document.querySelectorAll('label')?.[3]?.innerHTML, 'Create a New Password: ');
+```
+
+# --seed--
+
+## --seed-contents--
+
+```html
+
+
+
+ Registration Form
+
+
+
+ Registration Form
+ Please fill out this form with the required information
+
+
+
+```
+
+```css
+body {
+ width: 100%;
+ height: 100vh;
+ margin: 0;
+ background-color: #1b1b32;
+ color: #f5f6f7;
+}
+
+label {
+ display: block;
+ margin: 0.5rem 0;
+}
+
+```
diff --git a/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60f81167d0d4910809f88945.md b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60f81167d0d4910809f88945.md
new file mode 100644
index 00000000000..8ea2c1a5600
--- /dev/null
+++ b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60f81167d0d4910809f88945.md
@@ -0,0 +1,79 @@
+---
+id: 60f81167d0d4910809f88945
+title: Passo 17
+challengeType: 0
+dashedName: step-17
+---
+
+# --description--
+
+O primeiro elemento `input` com o `type` com valor de `submit` é definido automaticamente para que envie o elemento `form` pai mais próximo.
+
+Para lidar com o envio do formulário, depois do último elemento `fieldset`, adicione um elemento `input` com o atributo `type` definido como `submit` e o atributo `value` definido como `Submit`.
+
+# --hints--
+
+Você deve adicionar um elemento `input` após o último elemento `fieldset`.
+
+```js
+assert.exists(document.querySelectorAll('fieldset')?.[2]?.nextElementSibling?.tagName, 'input');
+```
+
+Você deve dar ao elemento `input` um atributo `type` de `submit`.
+
+```js
+assert.exists(document.querySelector('fieldset + input[type="submit"]'));
+```
+
+Você deve dar ao elemento `input` um atributo `value` de `Submit`.
+
+```js
+assert.exists(document.querySelector('fieldset + input[value="Submit"]'));
+```
+
+# --seed--
+
+## --seed-contents--
+
+```html
+
+
+
+ Registration Form
+
+
+
+ Registration Form
+ Please fill out this form with the required information
+
+
+
+```
+
+```css
+body {
+ width: 100%;
+ height: 100vh;
+ margin: 0;
+ background-color: #1b1b32;
+ color: #f5f6f7;
+}
+
+label {
+ display: block;
+ margin: 0.5rem 0;
+}
+
+```
diff --git a/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60f81616cff80508badf9ad5.md b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60f81616cff80508badf9ad5.md
new file mode 100644
index 00000000000..b8152ae25b4
--- /dev/null
+++ b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60f81616cff80508badf9ad5.md
@@ -0,0 +1,93 @@
+---
+id: 60f81616cff80508badf9ad5
+title: Passo 18
+challengeType: 0
+dashedName: step-18
+---
+
+# --description--
+
+Neste ponto, você deve conseguir enviar o formulário. No entanto, você vai notar que não acontece muita coisa.
+
+Para deixar o formulário mais interativo, adicione o atributo `required` aos elementos `input` no primeiro `fieldset`.
+
+Agora, se você tentar enviar o formulário sem preencher os campos obrigatórios, você verá uma mensagem de erro.
+
+# --hints--
+
+Você deve dar ao primeiro elemento `input` um atributo `required`.
+
+```js
+assert.equal(document.querySelector('input')?.required, true);
+```
+
+Você deve dar ao segundo elemento `input` um atributo `required`.
+
+```js
+assert.equal(document.querySelectorAll('input')?.[1]?.required, true);
+```
+
+Você deve dar ao terceiro elemento `input` um atributo `required`.
+
+```js
+assert.equal(document.querySelectorAll('input')?.[2]?.required, true);
+```
+
+Você deve dar ao quarto elemento `input` um atributo `required`.
+
+```js
+assert.equal(document.querySelectorAll('input')?.[3]?.required, true);
+```
+
+Remova o atributo `required` do `input` com valor `submit`.
+
+```js
+assert.equal(document.querySelector('input[type="submit"]')?.required, false);
+```
+
+# --seed--
+
+## --seed-contents--
+
+```html
+
+
+
+ Registration Form
+
+
+
+ Registration Form
+ Please fill out this form with the required information
+
+
+
+```
+
+```css
+body {
+ width: 100%;
+ height: 100vh;
+ margin: 0;
+ background-color: #1b1b32;
+ color: #f5f6f7;
+}
+
+label {
+ display: block;
+ margin: 0.5rem 0;
+}
+
+```
diff --git a/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60f852f645b5310a8264f555.md b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60f852f645b5310a8264f555.md
new file mode 100644
index 00000000000..363783cb9b8
--- /dev/null
+++ b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60f852f645b5310a8264f555.md
@@ -0,0 +1,75 @@
+---
+id: 60f852f645b5310a8264f555
+title: Passo 21
+challengeType: 0
+dashedName: step-21
+---
+
+# --description--
+
+Vamos para a próxima parte do formulário de registo. Esta seção pedirá o tipo de conta que o usuário está abrindo e confirmará que o usuário leu os termos e condições.
+
+Comece adicionando três elementos `label` ao segundo `fieldset`.
+
+# --hints--
+
+Você deve adicionar três elementos `label` ao segundo `fieldset`.
+
+```js
+assert.equal(document.querySelectorAll('fieldset')?.[1]?.querySelectorAll('label')?.length, 3);
+```
+
+Os elementos `label` devem ser irmãos.
+
+```js
+assert.exists(document.querySelector('fieldset:nth-child(2)')?.querySelector('label + label + label'));
+```
+
+# --seed--
+
+## --seed-contents--
+
+```html
+
+
+
+ Registration Form
+
+
+
+ Registration Form
+ Please fill out this form with the required information
+
+
+
+```
+
+```css
+body {
+ width: 100%;
+ height: 100vh;
+ margin: 0;
+ background-color: #1b1b32;
+ color: #f5f6f7;
+}
+
+label {
+ display: block;
+ margin: 0.5rem 0;
+}
+
+```
diff --git a/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60f8618d191b940d62038513.md b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60f8618d191b940d62038513.md
new file mode 100644
index 00000000000..d0f3f7672cc
--- /dev/null
+++ b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60f8618d191b940d62038513.md
@@ -0,0 +1,105 @@
+---
+id: 60f8618d191b940d62038513
+title: Passo 24
+challengeType: 0
+dashedName: step-24
+---
+
+# --description--
+
+Dentro de cada elemento `label` e imediatamente após o elemento `input`, adicione um espaço e adicione respectivamente o seguinte texto:
+
+```md
+Personal Account
+Business Account
+I accept the terms and conditions
+```
+
+# --hints--
+
+Você deve dar ao primeiro elemento `label` o texto `Personal Account`.
+
+```js
+assert.include(document.querySelector('fieldset:nth-child(2) > label')?.innerText, 'Personal Account');
+```
+
+Você deve dar ao segundo elemento `label` o texto `Business Account`.
+
+```js
+assert.include(document.querySelector('fieldset:nth-child(2) > label:nth-child(2)')?.innerText, 'Business Account');
+```
+
+Você deve dar ao terceiro `label` o texto `I accept the terms and conditions`.
+
+```js
+assert.include(document.querySelector('fieldset:nth-child(2) > label:nth-child(3)')?.innerText, 'I accept the terms and conditions');
+```
+
+Você deve dar ao primeiro elemento `label` espaço no início.
+
+```js
+assert.equal(document.querySelector('fieldset:nth-child(2) > label')?.innerText?.[0], ' ');
+```
+
+Você deve dar ao segundo elemento `label` espaço no início.
+
+```js
+assert.equal(document.querySelector('fieldset:nth-child(2) > label:nth-child(2)')?.innerText?.[0], ' ');
+```
+
+Você deve dar ao terceiro elemento `label` espaço no início.
+
+```js
+assert.equal(document.querySelector('fieldset:nth-child(2) > label:nth-child(3)')?.innerText?.[0], ' ');
+```
+
+# --seed--
+
+## --seed-contents--
+
+```html
+
+
+
+ Registration Form
+
+
+
+ Registration Form
+ Please fill out this form with the required information
+
+
+
+```
+
+```css
+body {
+ width: 100%;
+ height: 100vh;
+ margin: 0;
+ background-color: #1b1b32;
+ color: #f5f6f7;
+}
+
+label {
+ display: block;
+ margin: 0.5rem 0;
+}
+
+```
diff --git a/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60fab4a123ce4b04526b082b.md b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60fab4a123ce4b04526b082b.md
new file mode 100644
index 00000000000..b4edad8dcaf
--- /dev/null
+++ b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60fab4a123ce4b04526b082b.md
@@ -0,0 +1,83 @@
+---
+id: 60fab4a123ce4b04526b082b
+title: Passo 25
+challengeType: 0
+dashedName: step-25
+---
+
+# --description--
+
+Apenas uma entrada com botão de opção deve ser selecionável por vez. No entanto, o formulário não sabe se as entradas de botão de opção estão relacionadas.
+
+Para relacionar as entradas com botão de opção, dê a elas o mesmo atributo `name` atributo com um valor de `account-type`. Agora, não é possível selecionar ambas as entradas de botão de opção ao mesmo tempo.
+
+# --hints--
+
+Você deve dar à primeira entrada de botão de opção o atributo `name` com um valor de `account-type`.
+
+```js
+assert.equal(document.querySelector('fieldset:nth-child(2) label:nth-child(1) input[type="radio"]')?.name, 'account-type');
+```
+
+Você deve dar à segunda entrada de botão de opção o atributo `name` com um valor de `account-type`.
+
+```js
+assert.equal(document.querySelector('fieldset:nth-child(2) label:nth-child(2) input[type="radio"]')?.name, 'account-type');
+```
+
+O elemento `checkbox` não deve ter o atributo `name`.
+
+```js
+assert.isEmpty(document.querySelector('fieldset:nth-child(2) label:nth-child(3) input[type="checkbox"]')?.name);
+```
+
+# --seed--
+
+## --seed-contents--
+
+```html
+
+
+
+ Registration Form
+
+
+
+ Registration Form
+ Please fill out this form with the required information
+
+
+
+```
+
+```css
+body {
+ width: 100%;
+ height: 100vh;
+ margin: 0;
+ background-color: #1b1b32;
+ color: #f5f6f7;
+}
+
+label {
+ display: block;
+ margin: 0.5rem 0;
+}
+
+```
diff --git a/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60fab8367d35de04e5cb7929.md b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60fab8367d35de04e5cb7929.md
new file mode 100644
index 00000000000..e0b3d5b812d
--- /dev/null
+++ b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60fab8367d35de04e5cb7929.md
@@ -0,0 +1,85 @@
+---
+id: 60fab8367d35de04e5cb7929
+title: Passo 26
+challengeType: 0
+dashedName: step-26
+---
+
+# --description--
+
+Para terminar este `fieldset`, vincule o texto `terms and conditions` para a seguinte localização:
+
+```md
+https://www.freecodecamp.org/news/terms-of-service/
+```
+
+# --hints--
+
+Você deve usar um elemento `a` para vincular aos termos e condições.
+
+```js
+assert.exists(document.querySelector('fieldset:nth-child(2) > label:nth-child(3) > input + a'));
+```
+
+Você deve dar ao elemento `a` o atributo `href` de `https://www.freecodecamp.org/news/terms-of-service/`.
+
+```js
+assert.match(document.querySelector('fieldset:nth-child(2) > label:nth-child(3) > input + a')?.href, /https:\/\/www\.freecodecamp\.org\/news\/terms-of-service\/?/);
+```
+
+Você deve encapsular o elemento `a` em torno apenas do texto `terms and conditions`.
+
+```js
+assert.equal(document.querySelector('fieldset:nth-child(2) > label:nth-child(3) > input + a')?.textContent, 'terms and conditions');
+```
+
+# --seed--
+
+## --seed-contents--
+
+```html
+
+
+
+ Registration Form
+
+
+
+ Registration Form
+ Please fill out this form with the required information
+
+
+
+```
+
+```css
+body {
+ width: 100%;
+ height: 100vh;
+ margin: 0;
+ background-color: #1b1b32;
+ color: #f5f6f7;
+}
+
+label {
+ display: block;
+ margin: 0.5rem 0;
+}
+
+```
diff --git a/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60fab9f17fa294054b74228c.md b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60fab9f17fa294054b74228c.md
new file mode 100644
index 00000000000..6b992c75cd3
--- /dev/null
+++ b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60fab9f17fa294054b74228c.md
@@ -0,0 +1,88 @@
+---
+id: 60fab9f17fa294054b74228c
+title: Passo 27
+challengeType: 0
+dashedName: step-27
+---
+
+# --description--
+
+Agora vamos fazer o último `fieldset`. E se você quiser permitir que um usuário faça o upload de uma foto de perfil?
+
+Bom, o `input` de tipo `file` permite isso. Adicione um `label` com o texto `Upload a profile picture:` e adicione um `input` que aceita o upload de arquivos.
+
+# --hints--
+
+Você deve adicionar um `label` com o texto `Upload a profile picture:`.
+
+```js
+assert.match(document.querySelector('fieldset:nth-child(3) > label')?.innerText, /Upload a profile picture:/i);
+```
+
+Você deve aninhar um elemento `input` dentro do elemento `label`.
+
+```js
+assert.exists(document.querySelector('fieldset:nth-child(3) > label > input'));
+```
+
+Você deve dar ao elemento `input` um `type` de `file`.
+
+```js
+assert.equal(document.querySelector('fieldset:nth-child(3) > label > input')?.type, 'file');
+```
+
+# --seed--
+
+## --seed-contents--
+
+```html
+
+
+
+ Registration Form
+
+
+
+ Registration Form
+ Please fill out this form with the required information
+
+
+
+```
+
+```css
+body {
+ width: 100%;
+ height: 100vh;
+ margin: 0;
+ background-color: #1b1b32;
+ color: #f5f6f7;
+}
+
+label {
+ display: block;
+ margin: 0.5rem 0;
+}
+
+```
diff --git a/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60fabf0dd4959805dbae09e6.md b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60fabf0dd4959805dbae09e6.md
new file mode 100644
index 00000000000..14a7128a9c8
--- /dev/null
+++ b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60fabf0dd4959805dbae09e6.md
@@ -0,0 +1,102 @@
+---
+id: 60fabf0dd4959805dbae09e6
+title: Passo 28
+challengeType: 0
+dashedName: step-28
+---
+
+# --description--
+
+Adicione outro `label` após o primeiro, com o texto `Input your age (years):`. Depois, aninhe um `input` com o `type` de `number`.
+
+Como não queremos que os usuários com menos de 13 anos se registrem, adicione um atributo `min` ao `input` com o valor de `13`. Além disso, podemos presumir que os usuários com mais de 120 anos não se registrarão; adicione um atributo `max` com um valor de `120`.
+
+Agora, se alguém tentar enviar o formulário com valores fora do intervalo, um aviso aparecerá, e o formulário não será enviado. Faça uma tentativa.
+
+# --hints--
+
+Você deve adicionar um `label` ao terceiro `fieldset`, depois da `label` pré-existente.
+
+```js
+assert.exists(document.querySelector('fieldset:nth-child(3) > label + label'));
+```
+
+Você deve atribuir ao elemento `label` o texto `Input your age (years):`.
+
+```js
+assert.equal(document.querySelector('fieldset:nth-child(3) > label:nth-child(2)')?.textContent?.trim(), 'Input your age (years):');
+```
+
+Você deve dar ao `label` um `input` com o `type` de `number`.
+
+```js
+assert.exists(document.querySelector('fieldset:nth-child(3) > label:nth-child(2) > input[type="number"]'));
+```
+
+Você deve dar ao elemento `input` um atributo `min` com o valor de `13`.
+
+```js
+assert.equal(document.querySelector('fieldset:nth-child(3) > label:nth-child(2) > input[type="number"]')?.min, '13');
+```
+
+Você deve dar ao elemento `input` um atributo `max` com o valor de `120`.
+
+```js
+assert.equal(document.querySelector('fieldset:nth-child(3) > label:nth-child(2) > input[type="number"]')?.max, '120');
+```
+
+# --seed--
+
+## --seed-contents--
+
+```html
+
+
+
+ Registration Form
+
+
+
+ Registration Form
+ Please fill out this form with the required information
+
+
+
+```
+
+```css
+body {
+ width: 100%;
+ height: 100vh;
+ margin: 0;
+ background-color: #1b1b32;
+ color: #f5f6f7;
+}
+
+label {
+ display: block;
+ margin: 0.5rem 0;
+}
+
+```
diff --git a/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60fac4095512d3066053d73c.md b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60fac4095512d3066053d73c.md
new file mode 100644
index 00000000000..eeda0aa6dc5
--- /dev/null
+++ b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60fac4095512d3066053d73c.md
@@ -0,0 +1,84 @@
+---
+id: 60fac4095512d3066053d73c
+title: Passo 29
+challengeType: 0
+dashedName: step-29
+---
+
+# --description--
+
+Adicionar uma lista suspensa ao formulário é fácil com o elemento `select`. O elemento `select` é um repositório para um grupo de elementos `option` e o elemento `option` funciona como um rótulo para cada opção de seleção. Os dois elementos requerem tags de fechamento.
+
+Comece adicionando um elemento `select` abaixo dos dois elementos `label`. Você deve aninhar 5 elementos `option` dentro do elemento `select`.
+
+# --hints--
+
+Você deve adicionar um elemento `select` ao terceiro `fieldset`.
+
+```js
+assert.exists(document.querySelector('fieldset:nth-child(3) > select'));
+```
+
+Você deve aninhar cinco elementos `option` dentro do elemento `select`.
+
+```js
+assert.equal(document.querySelectorAll('fieldset:nth-child(3) > select > option')?.length, 5);
+```
+
+# --seed--
+
+## --seed-contents--
+
+```html
+
+
+
+ Registration Form
+
+
+
+ Registration Form
+ Please fill out this form with the required information
+
+
+
+```
+
+```css
+body {
+ width: 100%;
+ height: 100vh;
+ margin: 0;
+ background-color: #1b1b32;
+ color: #f5f6f7;
+}
+
+label {
+ display: block;
+ margin: 0.5rem 0;
+}
+
+```
diff --git a/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60fac56271087806def55b33.md b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60fac56271087806def55b33.md
new file mode 100644
index 00000000000..067ffcf2adc
--- /dev/null
+++ b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60fac56271087806def55b33.md
@@ -0,0 +1,94 @@
+---
+id: 60fac56271087806def55b33
+title: Passo 30
+challengeType: 0
+dashedName: step-30
+---
+
+# --description--
+
+Aninhe o elemento `select` dentro de um elemento `label` com o texto `How did you hear about us?`. O texto deve vir antes do elemento `select`.
+
+# --hints--
+
+Você deve aninhar apenas o elemento `select` dentro do elemento `label`.
+
+```js
+assert.exists(document.querySelector('fieldset:nth-child(3) > label:nth-child(3) > select'));
+```
+
+Você deve dar ao elemento `label` o texto `How did you hear about us?`.
+
+```js
+assert.equal(document.querySelector('fieldset:nth-child(3) > label:nth-child(3)')?.innerText?.trim(), 'How did you hear about us?');
+```
+
+Você deve colocar o texto antes do elemento `select`.
+
+```js
+assert.match(document.querySelector('fieldset:nth-child(3) > label:nth-child(3)')?.innerHTML?.replace(/[\t\n]+/g, ''), /^How did you hear about us\?/);
+```
+
+# --seed--
+
+## --seed-contents--
+
+```html
+
+
+
+ Registration Form
+
+
+
+ Registration Form
+ Please fill out this form with the required information
+
+
+
+```
+
+```css
+body {
+ width: 100%;
+ height: 100vh;
+ margin: 0;
+ background-color: #1b1b32;
+ color: #f5f6f7;
+}
+
+label {
+ display: block;
+ margin: 0.5rem 0;
+}
+
+```
diff --git a/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60fac8d7fdfaee0796934f20.md b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60fac8d7fdfaee0796934f20.md
new file mode 100644
index 00000000000..349c0b23a2e
--- /dev/null
+++ b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60fac8d7fdfaee0796934f20.md
@@ -0,0 +1,116 @@
+---
+id: 60fac8d7fdfaee0796934f20
+title: Passo 31
+challengeType: 0
+dashedName: step-31
+---
+
+# --description--
+
+As opções de lista suspensa estão atualmente vazias. Para dar conteúdo a elas, adicione o seguinte texto para cada elemento `option` abaixo:
+
+```md
+(select one)
+freeCodeCamp News
+freeCodeCamp YouTube Channel
+freeCodeCamp Forum
+Other
+```
+
+# --hints--
+
+Você deve dar ao primeiro elemento `option` o texto `(select one)`.
+
+```js
+assert.equal(document.querySelectorAll('fieldset:nth-child(3) > label:nth-child(3) option')?.[0]?.textContent, '(select one)');
+```
+
+Você deve dar ao segundo elemento `option` o texto `freeCodeCamp News`.
+
+```js
+assert.equal(document.querySelectorAll('fieldset:nth-child(3) > label:nth-child(3) option')?.[1]?.textContent, 'freeCodeCamp News');
+```
+
+Você deve dar ao terceiro elemento `option` o texto `freeCodeCamp YouTube Channel`.
+
+```js
+assert.equal(document.querySelectorAll('fieldset:nth-child(3) > label:nth-child(3) option')?.[2]?.textContent, 'freeCodeCamp YouTube Channel');
+```
+
+Você deve dar ao quarto elemento `option` o texto `freeCodeCamp Forum`.
+
+```js
+assert.equal(document.querySelectorAll('fieldset:nth-child(3) > label:nth-child(3) option')?.[3]?.textContent, 'freeCodeCamp Forum');
+```
+
+Você deve dar ao quinto elemento `option` o texto `Other`.
+
+```js
+assert.equal(document.querySelectorAll('fieldset:nth-child(3) > label:nth-child(3) option')?.[4]?.textContent, 'Other');
+```
+
+# --seed--
+
+## --seed-contents--
+
+```html
+
+
+
+ Registration Form
+
+
+
+ Registration Form
+ Please fill out this form with the required information
+
+
+
+```
+
+```css
+body {
+ width: 100%;
+ height: 100vh;
+ margin: 0;
+ background-color: #1b1b32;
+ color: #f5f6f7;
+}
+
+label {
+ display: block;
+ margin: 0.5rem 0;
+}
+
+```
diff --git a/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60faca286cb48b07f6482970.md b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60faca286cb48b07f6482970.md
new file mode 100644
index 00000000000..0a96cf5ccb9
--- /dev/null
+++ b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60faca286cb48b07f6482970.md
@@ -0,0 +1,110 @@
+---
+id: 60faca286cb48b07f6482970
+title: Passo 32
+challengeType: 0
+dashedName: step-32
+---
+
+# --description--
+
+Submeter um formulário com uma opção selecionada não enviaria um valor útil para o servidor. Dessa forma, cada `option` precisa receber um atributo `value`. Sem isso, o conteúdo de texto da `option` será enviado ao servidor.
+
+Dê ao primeiro `option` um `value` de `""` e aos elementos `option` subsequentes atributos `value` de `1` a `4`.
+
+# --hints--
+
+Você deve dar ao primeiro elemento `option` um `value` de `""`.
+
+```js
+assert.equal(document.querySelectorAll('fieldset:nth-child(3) > label:nth-child(3) option')?.[0]?.value, '');
+```
+
+Você deve dar ao segundo elemento `option` um `value` de `1`.
+
+```js
+assert.equal(document.querySelectorAll('fieldset:nth-child(3) > label:nth-child(3) option')?.[1]?.value, '1');
+```
+
+Você deve dar ao terceiro elemento `option` um `value` de `2`.
+
+```js
+assert.equal(document.querySelectorAll('fieldset:nth-child(3) > label:nth-child(3) option')?.[2]?.value, '2');
+```
+
+Você deve dar ao quarto elemento `option` um `value` de `3`.
+
+```js
+assert.equal(document.querySelectorAll('fieldset:nth-child(3) > label:nth-child(3) option')?.[3]?.value, '3');
+```
+
+Você deve dar ao quinto elemento `option` um `value` de `4`.
+
+```js
+assert.equal(document.querySelectorAll('fieldset:nth-child(3) > label:nth-child(3) option')?.[4]?.value, '4');
+```
+
+# --seed--
+
+## --seed-contents--
+
+```html
+
+
+
+ Registration Form
+
+
+
+ Registration Form
+ Please fill out this form with the required information
+
+
+
+```
+
+```css
+body {
+ width: 100%;
+ height: 100vh;
+ margin: 0;
+ background-color: #1b1b32;
+ color: #f5f6f7;
+}
+
+label {
+ display: block;
+ margin: 0.5rem 0;
+}
+
+```
diff --git a/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60facde2d0dc61085b41063f.md b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60facde2d0dc61085b41063f.md
new file mode 100644
index 00000000000..ede4418967f
--- /dev/null
+++ b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60facde2d0dc61085b41063f.md
@@ -0,0 +1,105 @@
+---
+id: 60facde2d0dc61085b41063f
+title: Passo 33
+challengeType: 0
+dashedName: step-33
+---
+
+# --description--
+
+O elemento `textarea` age como um elemento `input` do tipo `text`, mas vem com o benefício adicional de poder receber texto em várias linhas e um número inicial de linhas e colunas.
+
+Para permitir que os usuários se registrem com uma biografia, adicione um `label` com o texto `Provide a bio:` seguido de um elemento `textarea`, que requer uma tag de fechamento.
+
+# --hints--
+
+Você deve adicionar um `label` ao terceiro `fieldset`, depois da `label` pré-existente.
+
+```js
+assert.exists(document.querySelector('fieldset:nth-child(3) > label:nth-child(4)'));
+```
+
+Você deve atribuir ao elemento `label` o texto `Provide a bio:`.
+
+```js
+assert.match(document.querySelector('fieldset:nth-child(3) > label:nth-child(4)')?.innerText, /Provide a bio/);
+```
+
+Você deve adicionar um elemento `textarea` ao `label`.
+
+```js
+assert.exists(document.querySelector('fieldset:nth-child(3) > label:nth-child(4) > textarea'));
+```
+
+Você deve dar ao elemento `textarea` tags de abertura e fechamento.
+
+```js
+assert.match(code, /