+
+
+```
+
+```css
+h1 {
+ text-align: center;
+}
+
+.container {
+ background-color: rgb(255, 255, 255);
+ padding: 10px 0;
+}
+
+.marker {
+ width: 200px;
+ height: 25px;
+ margin: 10px auto;
+}
+
+.cap {
+ width: 60px;
+ height: 25px;
+}
+
+.sleeve {
+ width: 110px;
+ height: 25px;
+ background-color: rgba(255, 255, 255, 0.5);
+ border-left: 10px double rgba(0, 0, 0, 0.75);
+}
+
+.cap, .sleeve {
+ display: inline-block;
+}
+
+.red {
+ background: linear-gradient(rgb(122, 74, 14), rgb(245, 62, 113), rgb(162, 27, 27));
+ box-shadow: 0 0 20px 0 rgba(83, 14, 14, 0.8);
+}
+
+.green {
+ background: linear-gradient(#55680D, #71F53E, #116C31);
+ box-shadow: 0 0 20px 0 #3B7E20CC;
+}
+
+.blue {
+ background: linear-gradient(hsl(186, 76%, 16%), hsl(223, 90%, 60%), hsl(240, 56%, 42%));
+ box-shadow: 0 0 20px 0 hsla(223, 59%, 31%, 0.8);
+}
+
+```
diff --git a/curriculum/challenges/italian/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60eebd07ea685b0e777b5583.md b/curriculum/challenges/italian/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60eebd07ea685b0e777b5583.md
new file mode 100644
index 00000000000..4b6634f45fd
--- /dev/null
+++ b/curriculum/challenges/italian/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60eebd07ea685b0e777b5583.md
@@ -0,0 +1,52 @@
+---
+id: 60eebd07ea685b0e777b5583
+title: Step 1
+challengeType: 0
+dashedName: step-1
+---
+
+# --description--
+
+Benvenuto nel progetto Registration Form! Inizia ad aggiungere la dichiarazione `!DOCTYPE html` in cima al documento in modo che il browser sappia quale tipo di documento sta leggendo.
+
+# --hints--
+
+Il codice dovrebbe contenere il riferimento `DOCTYPE`.
+
+```js
+assert(code.match(/`.
+
+```js
+assert(code.match(/html\s*>/gi));
+```
+
+La dichiarazione `DOCTYPE` dovrebbe essere all'inizio del tuo documento HTML.
+
+```js
+assert(__helpers.removeHtmlComments(code).match(/^\s*/i));
+```
+
+# --seed--
+
+## --seed-contents--
+
+```html
+--fcc-editable-region--
+
+--fcc-editable-region--
+```
diff --git a/curriculum/challenges/italian/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60f027099a15b00485563dd2.md b/curriculum/challenges/italian/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60f027099a15b00485563dd2.md
new file mode 100644
index 00000000000..50b82070f3a
--- /dev/null
+++ b/curriculum/challenges/italian/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60f027099a15b00485563dd2.md
@@ -0,0 +1,54 @@
+---
+id: 60f027099a15b00485563dd2
+title: Step 2
+challengeType: 0
+dashedName: step-2
+---
+
+# --description--
+
+Aggiungi i tag di apertura e chiusura `html` sotto la dichiarazione `DOCTYPE` in modo da avere un posto dove iniziare a inserire del codice.
+
+# --hints--
+
+La dichiarazione `DOCTYPE` dovrebbe essere all'inizio del documento HTML.
+
+```js
+assert(__helpers.removeHtmlComments(code).match(/^\s*/i));
+```
+
+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*>/));
+```
+
+I tag `html` dovrebbero essere nell'ordine corretto.
+
+```js
+assert(code.match(/\s*<\/html\s*>/));
+```
+
+Dovresti avere un solo 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/italian/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60f027c87bc98f050395c139.md b/curriculum/challenges/italian/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60f027c87bc98f050395c139.md
new file mode 100644
index 00000000000..c1a4d9fd4d2
--- /dev/null
+++ b/curriculum/challenges/italian/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60f027c87bc98f050395c139.md
@@ -0,0 +1,67 @@
+---
+id: 60f027c87bc98f050395c139
+title: Step 3
+challengeType: 0
+dashedName: step-3
+---
+
+# --description--
+
+Adesso, aggiungi i tag di apertura e chiusura degli elementi `head` e `body` all'interno dell'elemento `html`.
+
+# --hints--
+
+Dovresti avere un tag di apertura `head`.
+
+```js
+assert(code.match(//i));
+```
+
+Dovresti avere un tag di chiusura `head`.
+
+```js
+assert(code.match(/<\/head\s*>/i));
+```
+
+Dovresti avere un tag di apertura `body`.
+
+```js
+assert(code.match(//i));
+```
+
+Dovresti avere un tag di chiusura `body`.
+
+```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--
+```
diff --git a/curriculum/challenges/italian/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60f0286404aefb0562a4fdf9.md b/curriculum/challenges/italian/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60f0286404aefb0562a4fdf9.md
new file mode 100644
index 00000000000..be80cdeb499
--- /dev/null
+++ b/curriculum/challenges/italian/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60f0286404aefb0562a4fdf9.md
@@ -0,0 +1,99 @@
+---
+id: 60f0286404aefb0562a4fdf9
+title: Step 4
+challengeType: 0
+dashedName: step-4
+---
+
+# --description--
+
+Aggiungi un elemento `title` all'elemento `head` e dai al tuo progetto il titolo `Registration Form`. Annida un elemento `link` autoconcludente nell'elemento `head`. Assegnagli un attributo `rel` con il valore `stylesheet`, un attributo `type` con il valore `text/css` e un attributo `href` con il valore `styles.css`.
+
+# --hints--
+
+Il codice dovrebbe avere un elemento `title`.
+
+```js
+const title = document.querySelector('title');
+assert.exists(title);
+```
+
+L'elemento `title` dovrebbe essere all'interno dell'elemento `head`.
+
+```js
+assert.exists(document.querySelector('head > title'));
+```
+
+Il progetto dovrebbe avere il titolo `Registration Form`.
+
+```js
+const title = document.querySelector('title');
+assert.equal(title.text.toLowerCase(), 'registration form')
+```
+
+Fai attenzione all'uso delle maiuscole/minuscole e all'ortografia nel titolo.
+
+```js
+const title = document.querySelector('title');
+assert.equal(title.text, 'Registration Form');
+```
+
+Il codice dovrebbe avere un elemento `link`.
+
+```js
+assert.match(code, //i));
+```
+
+L'elemento `link` dovrebbe essere all'interno dell'elemento `head`.
+
+```js
+assert(code.match(/[\w\W\s]*[\w\W\s]*<\/head>/i))
+```
+
+L'elemento `link` dovrebbe avere un attributo `rel` con il valore `stylesheet`.
+
+```js
+assert.match(code, /
+
+ --fcc-editable-region--
+
+
+
+
+
+--fcc-editable-region--
+
+```
diff --git a/curriculum/challenges/italian/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60f02e7361b68405e27b62a5.md b/curriculum/challenges/italian/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60f02e7361b68405e27b62a5.md
new file mode 100644
index 00000000000..f1bb0f2c5e1
--- /dev/null
+++ b/curriculum/challenges/italian/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60f02e7361b68405e27b62a5.md
@@ -0,0 +1,43 @@
+---
+id: 60f02e7361b68405e27b62a5
+title: Step 5
+challengeType: 0
+dashedName: step-5
+---
+
+# --description--
+
+All'interno dell'elemento `body`, aggiungi l'intestazione per il contenuto della pagina con un elemento un `h1` con il testo `Registration Form`.
+
+# --hints--
+
+Dovresti aggiungere l'elemento `h1` all'interno del `body`.
+
+```js
+assert.exists(document.querySelector('body > h1'));
+```
+
+Dovresti assegnare all'elemento `h1` il testo `Registration Form`.
+
+```js
+assert.equal(document.querySelector('body > h1')?.textContent, 'Registration Form');
+```
+
+# --seed--
+
+## --seed-contents--
+
+```html
+
+
+
+ Registration Form
+
+
+--fcc-editable-region--
+
+
+
+--fcc-editable-region--
+
+```
diff --git a/curriculum/challenges/italian/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60f030d388cb74067cf291c3.md b/curriculum/challenges/italian/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60f030d388cb74067cf291c3.md
new file mode 100644
index 00000000000..acfd94180b7
--- /dev/null
+++ b/curriculum/challenges/italian/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60f030d388cb74067cf291c3.md
@@ -0,0 +1,54 @@
+---
+id: 60f030d388cb74067cf291c3
+title: Step 6
+challengeType: 0
+dashedName: step-6
+---
+
+# --description--
+
+Sotto l'intestazione, utilizza il seguente testo all'interno di un elemento paragrafo per permettere agli utenti di registrarsi:
+
+```md
+Please fill out this form with the required information
+```
+
+# --hints--
+
+Dovresti aggiungere un elemento `p` all'elemento `body`.
+
+```js
+assert.exists(document.querySelector('body > p'));
+```
+
+Dovresti aggiungere l'elemento `p` al di sotto dell'elemento `h1`.
+
+```js
+assert.exists(document.querySelector('h1 + p'));
+```
+
+Dovresti assegnare all'elemento `p` il testo `Please fill out this form with the required information`.
+
+```js
+assert.equal(document.querySelector('p')?.innerText, 'Please fill out this form with the required information');
+```
+
+# --seed--
+
+## --seed-contents--
+
+```html
+
+
+
+ Registration Form
+
+
+--fcc-editable-region--
+
+
Registration Form
+
+
+--fcc-editable-region--
+
+```
diff --git a/curriculum/challenges/italian/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60f1922fcbd2410527b3bd89.md b/curriculum/challenges/italian/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60f1922fcbd2410527b3bd89.md
new file mode 100644
index 00000000000..4ea68a0440f
--- /dev/null
+++ b/curriculum/challenges/italian/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60f1922fcbd2410527b3bd89.md
@@ -0,0 +1,54 @@
+---
+id: 60f1922fcbd2410527b3bd89
+title: Step 7
+challengeType: 0
+dashedName: step-7
+---
+
+# --description--
+
+Adesso, iniziamo ad abbellire il progetto aggiungendo un po' di CSS. Inizia assegnando al `body` una proprietà `width` del `100%`, e una proprietà `height` di `100vh`.
+
+# --hints--
+
+Dovresti usare un selettore `body`.
+
+```js
+assert.exists(new __helpers.CSSHelp(document).getStyle('body'));
+```
+
+Dovresti assegnare al `body` una proprietà `width` del `100%`.
+
+```js
+assert.equal(new __helpers.CSSHelp(document).getStyle('body')?.width, '100%');
+```
+
+Dovresti assegnare al `body` una proprietà `height` di `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/italian/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60f1a5e2d2c23707a4f9a660.md b/curriculum/challenges/italian/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60f1a5e2d2c23707a4f9a660.md
new file mode 100644
index 00000000000..ac917e72e0d
--- /dev/null
+++ b/curriculum/challenges/italian/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60f1a5e2d2c23707a4f9a660.md
@@ -0,0 +1,51 @@
+---
+id: 60f1a5e2d2c23707a4f9a660
+title: Step 8
+challengeType: 0
+dashedName: step-8
+---
+
+# --description--
+
+Ora, rimuovi la barra di scorrimento orizzontale, impostando a `0` la proprietà `margin` dell'elemento `body` che a volte viene aggiunta di default da alcuni browser.
+
+# --hints--
+
+Dovresti aggiungere la proprietà `margin` all'interno del selettore `body`.
+
+```js
+assert.isNotEmpty(new __helpers.CSSHelp(document).getStyle('body')?.margin);
+```
+
+Dovresti assegnare allla proprietà `margin` il valore `0`.
+
+```js
+assert.equal(new __helpers.CSSHelp(document).getStyle('body')?.margin, '0px');
+```
+
+# --seed--
+
+## --seed-contents--
+
+```html
+
+
+
+ Registration Form
+
+
+
+
Registration Form
+
Please fill out this form with the required information
+
+
+```
+
+```css
+--fcc-editable-region--
+body {
+ width: 100%;
+ height: 100vh;
+}
+--fcc-editable-region--
+```
diff --git a/curriculum/challenges/italian/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60f1a9cbd23023082e149fee.md b/curriculum/challenges/italian/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60f1a9cbd23023082e149fee.md
new file mode 100644
index 00000000000..3baf5aef864
--- /dev/null
+++ b/curriculum/challenges/italian/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60f1a9cbd23023082e149fee.md
@@ -0,0 +1,64 @@
+---
+id: 60f1a9cbd23023082e149fee
+title: Step 9
+challengeType: 0
+dashedName: step-9
+---
+
+# --description--
+
+Adesso va meglio. Ora, fai in modo che lo sfondo sia più piacevole alla vista, cambiando la proprietà `background-color` dell'elemento `body` in `#1b1b32`. Poi, per rendere il testo leggibile, cambia la proprietà `color` in `#f5f6f7`.
+
+# --hints--
+
+Dovresti aggiungere la proprietà `background-color` all'interno del selettore `body`.
+
+```js
+assert.isNotEmpty(new __helpers.CSSHelp(document).getStyle('body')?.backgroundColor);
+```
+
+Dovresti assegnare alla proprietà `background-color` il valore `#1b1b32`.
+
+```js
+assert.equal(new __helpers.CSSHelp(document).getStyle('body')?.backgroundColor, 'rgb(27, 27, 50)');
+```
+
+Dovresti aggiungere la proprietà `color` all'interno del selettore `body`.
+
+```js
+assert.isNotEmpty(new __helpers.CSSHelp(document).getStyle('body')?.color);
+```
+
+Dovresti assegnare alla proprietà `color` il valore `#f5f6f7`.
+
+```js
+assert.equal(new __helpers.CSSHelp(document).getStyle('body')?.color, 'rgb(245, 246, 247)');
+```
+
+# --seed--
+
+## --seed-contents--
+
+```html
+
+
+
+ Registration Form
+
+
+
+
Registration Form
+
Please fill out this form with the required information
+
+
+```
+
+```css
+--fcc-editable-region--
+body {
+ width: 100%;
+ height: 100vh;
+ margin: 0;
+}
+--fcc-editable-region--
+```
diff --git a/curriculum/challenges/italian/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60f5c3e399ff1a05629964e4.md b/curriculum/challenges/italian/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60f5c3e399ff1a05629964e4.md
new file mode 100644
index 00000000000..ddfac940944
--- /dev/null
+++ b/curriculum/challenges/italian/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60f5c3e399ff1a05629964e4.md
@@ -0,0 +1,62 @@
+---
+id: 60f5c3e399ff1a05629964e4
+title: Step 10
+challengeType: 0
+dashedName: step-10
+---
+
+# --description--
+
+Come suggerito dal titolo, stai creando un modulo. Dopo l'elemento `p`, inserisci un elemento `form` con un attributo `action` con il valore `https://register-demo.freecodecamp.org`.
+
+# --hints--
+
+Dovresti aggiungere un elemento `form` vicino all'elemento `p`.
+
+```js
+assert.exists(document.querySelector('p + form'));
+```
+
+Dovresti assegnare all'elemento `form` un attributo `action`.
+
+```js
+// Default action points to window location
+assert.notEqual(document.querySelector('form')?.action, window?.location?.href);
+```
+
+Dovresti assegnare all'attributo `action` il valore `https://register-demo.freecodecamp.org`.
+
+```js
+assert.equal(document.querySelector('form')?.action, 'https://register-demo.freecodecamp.org/');
+```
+
+# --seed--
+
+## --seed-contents--
+
+```html
+
+
+
+ Registration Form
+
+
+--fcc-editable-region--
+
+
Registration Form
+
Please fill out this form with the required information
+
+
+--fcc-editable-region--
+
+```
+
+```css
+body {
+ width: 100%;
+ height: 100vh;
+ margin: 0;
+ background-color: #1b1b32;
+ color: #f5f6f7;
+}
+```
diff --git a/curriculum/challenges/italian/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60f5cb8875ab6a0610f05071.md b/curriculum/challenges/italian/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60f5cb8875ab6a0610f05071.md
new file mode 100644
index 00000000000..e6dd6cbb4d7
--- /dev/null
+++ b/curriculum/challenges/italian/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60f5cb8875ab6a0610f05071.md
@@ -0,0 +1,63 @@
+---
+id: 60f5cb8875ab6a0610f05071
+title: Step 11
+challengeType: 0
+dashedName: step-11
+---
+
+# --description--
+
+Dato che il progetto prevede tre sezioni distinte nel modulo, aggiungi tre elementi `fieldset` all'interno dell'elemento `form`.
+
+# --hints--
+
+Dovresti aggiungere 3 elementi `fieldset`.
+
+```js
+assert.equal(document.querySelectorAll('fieldset')?.length, 3);
+```
+
+I tre elementi `fieldset` dovrebbero essere all'interno dell'elemento `form`.
+
+```js
+assert.equal(document.querySelectorAll('form > fieldset')?.length, 3);
+```
+
+I tre elementi `fieldset` dovrebbero essere fratelli.
+
+```js
+assert.exists(document.querySelector('fieldset + fieldset + fieldset'));
+```
+
+# --seed--
+
+## --seed-contents--
+
+```html
+
+
+
+ Registration Form
+
+
+--fcc-editable-region--
+
+
Registration Form
+
Please fill out this form with the required information
+
+
+--fcc-editable-region--
+
+```
+
+```css
+body {
+ width: 100%;
+ height: 100vh;
+ margin: 0;
+ background-color: #1b1b32;
+ color: #f5f6f7;
+}
+```
diff --git a/curriculum/challenges/italian/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60f5d2776c854e069560fbe6.md b/curriculum/challenges/italian/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60f5d2776c854e069560fbe6.md
new file mode 100644
index 00000000000..94f4ab312cc
--- /dev/null
+++ b/curriculum/challenges/italian/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60f5d2776c854e069560fbe6.md
@@ -0,0 +1,61 @@
+---
+id: 60f5d2776c854e069560fbe6
+title: Step 12
+challengeType: 0
+dashedName: step-12
+---
+
+# --description--
+
+Il primo elemento `fieldset` conterrà i campi nome, email e password. Inizia aggiungendo quattro elementi `label` al primo `fieldset`.
+
+# --hints--
+
+Dovresti aggiungere quattro elementi `label`.
+
+```js
+assert.equal(document.querySelectorAll('label')?.length, 4);
+```
+
+Dovresti aggiungere gli elementi `label` al primo `fieldset`.
+
+```js
+assert.equal(document.querySelector('fieldset')?.querySelectorAll('label')?.length, 4);
+```
+
+# --seed--
+
+## --seed-contents--
+
+```html
+
+
+
+ Registration Form
+
+
+
+
Registration Form
+
Please fill out this form with the required information
+--fcc-editable-region--
+
+--fcc-editable-region--
+
+
+```
+
+```css
+body {
+ width: 100%;
+ height: 100vh;
+ margin: 0;
+ background-color: #1b1b32;
+ color: #f5f6f7;
+}
+```
diff --git a/curriculum/challenges/italian/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60f5dc35c07ac1078f140916.md b/curriculum/challenges/italian/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60f5dc35c07ac1078f140916.md
new file mode 100644
index 00000000000..d7487d8e4f4
--- /dev/null
+++ b/curriculum/challenges/italian/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60f5dc35c07ac1078f140916.md
@@ -0,0 +1,81 @@
+---
+id: 60f5dc35c07ac1078f140916
+title: Step 13
+challengeType: 0
+dashedName: step-13
+---
+
+# --description--
+
+Aggiungi il seguente testo all'interno degli elementi `label`:
+
+- `Enter Your First Name:`
+- `Enter Your Last Name:`
+- `Enter Your Email:`
+- `Create a New Password:`
+
+# --hints--
+
+Il primo `label` dovrebbe contenere il testo `Enter Your First Name:`.
+
+```js
+assert.match(document.querySelector('label')?.innerHTML, /Enter Your First Name:/i);
+```
+
+Il secondo `label` dovrebbe contenere il testo `Enter Your Last Name:`.
+
+```js
+assert.match(document.querySelector('fieldset > label:nth-child(2)')?.innerHTML, /Enter Your Last Name:/i);
+```
+
+Il terzo `label` dovrebbe contenere il testo `Enter Your Email:`.
+
+```js
+assert.match(document.querySelector('fieldset > label:nth-child(3)')?.innerHTML, /Enter Your Email:/i);
+```
+
+Il quarto `label` dovrebbe contenere il testo `Create a New Password:`.
+
+```js
+assert.match(document.querySelector('fieldset > label:nth-child(4)')?.innerHTML, /Create a New Password:/i);
+```
+
+# --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;
+}
+```
diff --git a/curriculum/challenges/italian/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60f803d5241e6a0433a523a1.md b/curriculum/challenges/italian/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60f803d5241e6a0433a523a1.md
new file mode 100644
index 00000000000..f20a40c43af
--- /dev/null
+++ b/curriculum/challenges/italian/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60f803d5241e6a0433a523a1.md
@@ -0,0 +1,72 @@
+---
+id: 60f803d5241e6a0433a523a1
+title: Step 14
+challengeType: 0
+dashedName: step-14
+---
+
+# --description--
+
+Poiché i `label` sono elementi `inline` come impostazione predefinita, appaiono sulla stessa riga del testo corrispondente. Per farli apparire su righe separate, aggiungi `display: block` all'elemento `label`, e aggiungi una proprietà `margin` con il valore `0.5rem 0`, per separarli gli uni dagli altri.
+
+# --hints--
+
+Dovresti usare un selettore `label`.
+
+```js
+assert.exists(new __helpers.CSSHelp(document).getStyle('label'));
+```
+
+È necessario aggiungere una proprietà `display` con il valore `block`.
+
+```js
+assert.equal(new __helpers.CSSHelp(document).getStyle('label')?.display, 'block');
+```
+
+Dovresti aggiungere una proprietà `margin` con il valore `0.5rem 0`.
+
+```js
+assert.equal(new __helpers.CSSHelp(document).getStyle('label')?.margin, '0.5rem 0px');
+```
+
+# --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;
+}
+
+--fcc-editable-region--
+
+--fcc-editable-region--
+```
diff --git a/curriculum/challenges/italian/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60f805f813eaf2049bc2ceea.md b/curriculum/challenges/italian/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60f805f813eaf2049bc2ceea.md
new file mode 100644
index 00000000000..ddaf56f21cc
--- /dev/null
+++ b/curriculum/challenges/italian/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60f805f813eaf2049bc2ceea.md
@@ -0,0 +1,94 @@
+---
+id: 60f805f813eaf2049bc2ceea
+title: Step 15
+challengeType: 0
+dashedName: step-15
+---
+
+# --description--
+
+Annida un elemento `input` in ogni elemento `label`. Assicurati di aggiungere ogni elemento `input` dopo il testo `label` e di includere uno spazio dopo i due punti.
+
+# --hints--
+
+Dovresti aggiungere quattro elementi `input` all'elemento `fieldset`.
+
+```js
+assert.equal(document.querySelectorAll('fieldset input')?.length, 4);
+```
+
+Dovresti annidare gli elementi `input` all'interno degli elementi `label`.
+
+```js
+assert.equal(document.querySelectorAll('label input')?.length, 4);
+```
+
+Dovresti aggiungere il primo `input` il testo `Enter Your First Name:` dell'elemento `label` e includere uno spazio dopo i due punti.
+
+```js
+assert.equal(document.querySelectorAll('label')?.[0]?.innerHTML, 'Enter Your First Name: ');
+```
+
+Dovresti aggiungere il secondo `input` dopo il testo `Enter Your Last Name:` dell'elemento `label` e includere uno spazio dopo i due punti.
+
+```js
+assert.equal(document.querySelectorAll('label')?.[1]?.innerHTML, 'Enter Your Last Name: ');
+```
+
+Dovresti aggiungere il terzo `input` dopo il testo `Enter Your Email:` dell'elemento `label` e includere uno spazio dopo i due punti.
+
+```js
+assert.equal(document.querySelectorAll('label')?.[2]?.innerHTML, 'Enter Your Email: ');
+```
+
+Dovresti aggiungere il quarto `input` dopo il testo `Create a New Password:` dell'elemento `label` e includere uno spazio dopo i due punti.
+
+```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/italian/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60f80e0081e0f2052ae5b505.md b/curriculum/challenges/italian/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60f80e0081e0f2052ae5b505.md
new file mode 100644
index 00000000000..6bf355cc451
--- /dev/null
+++ b/curriculum/challenges/italian/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60f80e0081e0f2052ae5b505.md
@@ -0,0 +1,86 @@
+---
+id: 60f80e0081e0f2052ae5b505
+title: Step 16
+challengeType: 0
+dashedName: step-16
+---
+
+# --description--
+
+Specificare l'attributo `type` di un elemento form è importante per far sì che il browser sappia con che tipo di dati ha a che fare. Se il `type` non è specificato, il browser userà il valore predefinito `text`.
+
+Assegna ai primi due elementi `input` un attributo `type` con il valore `text`, al terzo un attributo `type` con il valore `email` e al quarto un attributo `type` con il valore `password`.
+
+Il valore `email` assegnato all'attributo type, permette di inserire solo e-mail contenenti un carattere `@` e un carattere `.`. Il valore `password` dell'attributo type nasconde l'input e avvisa se il sito non utilizza HTTPS.
+
+# --hints--
+
+Dovresti assegnare al primo elemento `input` un attributo `type` con il valore `text`.
+
+```js
+assert.equal(document.querySelector('input')?.type, 'text');
+```
+
+Dovresti assegnare al secondo elemento `input` un attributo `type` con il valore `text`.
+
+```js
+assert.equal(document.querySelectorAll('input')?.[1]?.type, 'text');
+```
+
+Dovresti assegnare al terzo elemento `input` un attributo `type` con il valore `email`.
+
+```js
+assert.equal(document.querySelectorAll('input')?.[2]?.type, 'email');
+```
+
+Dovresti assegnare al quarto elemento `input` un attributo `type` con il valore `password`.
+
+```js
+assert.equal(document.querySelectorAll('input')?.[3]?.type, '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/italian/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60f81167d0d4910809f88945.md b/curriculum/challenges/italian/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60f81167d0d4910809f88945.md
new file mode 100644
index 00000000000..c13da2792b3
--- /dev/null
+++ b/curriculum/challenges/italian/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60f81167d0d4910809f88945.md
@@ -0,0 +1,79 @@
+---
+id: 60f81167d0d4910809f88945
+title: Step 17
+challengeType: 0
+dashedName: step-17
+---
+
+# --description--
+
+Il primo elemento `input` con l'attributo `type` con il valore `submit` viene automaticamente impostato per inviare l'elemento genitore `form` più vicino.
+
+Per gestire l'invio del modulo, dopo l'ultimo elemento `fieldset`, aggiungi un elemento `input` con un attributo `type` con il valore `submit` e un attributo `value` con il valore `Submit`.
+
+# --hints--
+
+Dovresti aggiungere l'elemento `input` dopo l'ultimo elemento `fieldset`.
+
+```js
+assert.exists(document.querySelectorAll('fieldset')?.[2]?.nextElementSibling?.tagName, 'input');
+```
+
+Dovresti assegnare all'elemento `input` un attributo `type` con il valore `submit`.
+
+```js
+assert.exists(document.querySelector('fieldset + input[type="submit"]'));
+```
+
+Dovresti assegnare all'elemento `input` un attributo `value` con il valore `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/italian/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60f81616cff80508badf9ad5.md b/curriculum/challenges/italian/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60f81616cff80508badf9ad5.md
new file mode 100644
index 00000000000..7a5f63793db
--- /dev/null
+++ b/curriculum/challenges/italian/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60f81616cff80508badf9ad5.md
@@ -0,0 +1,93 @@
+---
+id: 60f81616cff80508badf9ad5
+title: Step 18
+challengeType: 0
+dashedName: step-18
+---
+
+# --description--
+
+A questo punto, dovresti essere in grado di inviare il modulo. Tuttavia, come puoi notare, non succede molto.
+
+Per rendere il modulo più interattivo, aggiungi l'attributo `required` agli elementi `input` nel primo `fieldset`.
+
+Ora, se tenti di inviare il modulo senza compilare i campi richiesti, vedrai un messaggio di errore.
+
+# --hints--
+
+Dovresti assegnare al primo elemento `input` un attributo `required`.
+
+```js
+assert.equal(document.querySelector('input')?.required, true);
+```
+
+Dovresti assegnare al secondo elemento `input` un attributo `required`.
+
+```js
+assert.equal(document.querySelectorAll('input')?.[1]?.required, true);
+```
+
+Dovresti assegnare al terzo elemento `input` un attributo `required`.
+
+```js
+assert.equal(document.querySelectorAll('input')?.[2]?.required, true);
+```
+
+Dovresti assegnare al quarto elemento `input` un attributo `required`.
+
+```js
+assert.equal(document.querySelectorAll('input')?.[3]?.required, true);
+```
+
+L'`input` di `submit` non dovrebbe avere un attributo `required`.
+
+```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/italian/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60f83e7bfc09900959f41e20.md b/curriculum/challenges/italian/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60f83e7bfc09900959f41e20.md
new file mode 100644
index 00000000000..7481e8b8e5c
--- /dev/null
+++ b/curriculum/challenges/italian/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60f83e7bfc09900959f41e20.md
@@ -0,0 +1,73 @@
+---
+id: 60f83e7bfc09900959f41e20
+title: Step 19
+challengeType: 0
+dashedName: step-19
+---
+
+# --description--
+
+Alcuni valori dell'attributo `type` sono dotati di validazione integrata del modulo. Ad esempio, `type="email"` richiede che il valore sia un indirizzo email valido.
+
+Aggiungi una validazione personalizzata all'elemento `input` della password aggiungendo un attributo `minlength` con un valore di `8`. In questo modo si evita che vengano inviati input inferiori a 8 caratteri.
+
+# --hints--
+
+Dovresti assegnare all'elemento `input` della password un attributo `minlength`.
+
+```js
+assert.notEqual(document.querySelector('input[type="password"]')?.minLength, -1);
+```
+
+Dovresti assegnare all'attributo `minlength` il valore `8`.
+
+```js
+assert.equal(document.querySelector('input[type="password"]')?.minLength, 8);
+```
+
+# --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/italian/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60f84ec41116b209c280ba91.md b/curriculum/challenges/italian/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60f84ec41116b209c280ba91.md
new file mode 100644
index 00000000000..27ef5f24ac1
--- /dev/null
+++ b/curriculum/challenges/italian/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60f84ec41116b209c280ba91.md
@@ -0,0 +1,81 @@
+---
+id: 60f84ec41116b209c280ba91
+title: Step 20
+challengeType: 0
+dashedName: step-20
+---
+
+# --description--
+
+Con `type="password"` puoi usare l'attributo `pattern` per definire un'espressione regolare a cui la password deve corrispondere per essere considerata valida.
+
+Aggiungi un attributo `pattern` all'elemento `input` per richiedere la corrispondenza dell'input: `[a-z0-5]{8,}`
+
+Questa è un'espressione regolare che corrisponde a otto o più lettere minuscole o alle cifre da `0` a `5`. Rimuovi l'attributo `minlength` e fai una prova.
+
+# --hints--
+
+Dovresti assegnare all'elemento `input` della password un attributo `pattern`.
+
+```js
+assert.isNotEmpty(document.querySelector('input[type="password"]')?.pattern);
+```
+
+Dovresti assegnare all'attributo `pattern` il valore `[a-z0-5]{8,}`.
+
+```js
+assert.equal(document.querySelector('input[type="password"]')?.pattern, '[a-z0-5]{8,}');
+```
+
+Dovresti rimuovere l'attributo `minlength` dall'elemento `input` della password.
+
+```js
+assert.equal(document.querySelector('input[type="password"]')?.minLength, -1);
+```
+
+# --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/italian/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60f852f645b5310a8264f555.md b/curriculum/challenges/italian/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60f852f645b5310a8264f555.md
new file mode 100644
index 00000000000..38dd2d1eef1
--- /dev/null
+++ b/curriculum/challenges/italian/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60f852f645b5310a8264f555.md
@@ -0,0 +1,75 @@
+---
+id: 60f852f645b5310a8264f555
+title: Step 21
+challengeType: 0
+dashedName: step-21
+---
+
+# --description--
+
+Andiamo proseguiamo con la prossima parte del modulo di registrazione. Questa sezione chiederà il tipo di account che l'utente sta aprendo, e confermerà che l'utente abbia letto i termini e le condizioni.
+
+Inizia aggiungendo tre elementi `label` al secondo `fieldset`.
+
+# --hints--
+
+Dovresti aggiungere tre elementi `label` al secondo `fieldset`.
+
+```js
+assert.equal(document.querySelectorAll('fieldset')?.[1]?.querySelectorAll('label')?.length, 3);
+```
+
+Gli elementi `label` dovrebbero essere fratelli.
+
+```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/italian/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60f85a62fb30c80bcea0cedb.md b/curriculum/challenges/italian/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60f85a62fb30c80bcea0cedb.md
new file mode 100644
index 00000000000..186aefc760f
--- /dev/null
+++ b/curriculum/challenges/italian/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60f85a62fb30c80bcea0cedb.md
@@ -0,0 +1,84 @@
+---
+id: 60f85a62fb30c80bcea0cedb
+title: Step 22
+challengeType: 0
+dashedName: step-22
+---
+
+# --description--
+
+Gli utenti potranno scegliere tra `Personal Account` e `Business Account`.
+
+Per fare ciò, all'interno di ciascuno dei primi due elementi `label`, aggiungi un elemento `input` con `type="radio"`.
+
+# --hints--
+
+Dovresti aggiungere due elementi `input`.
+
+```js
+assert.equal(document.querySelectorAll('fieldset:nth-child(2) input')?.length, 2);
+```
+
+Dovresti aggiungere un `input` a ciascuno dei primi due elementi `label`.
+
+```js
+assert.exists(document.querySelector('fieldset:nth-child(2) > label:nth-child(1) > input'));
+assert.exists(document.querySelector('fieldset:nth-child(2) > label:nth-child(2) > input'));
+```
+
+Dovresti assegnare a entrambi gli elementi `input` un attributo `type` con il valore `radio`.
+
+```js
+assert.equal(document.querySelectorAll('fieldset:nth-child(2) input[type="radio"]')?.length, 2);
+```
+
+# --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/italian/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60f8604682407e0d017bbf7f.md b/curriculum/challenges/italian/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60f8604682407e0d017bbf7f.md
index c37e362284b..a19be557f50 100644
--- a/curriculum/challenges/italian/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60f8604682407e0d017bbf7f.md
+++ b/curriculum/challenges/italian/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60f8604682407e0d017bbf7f.md
@@ -7,7 +7,7 @@ dashedName: step-23
# --description--
-Per i termini e le condizioni, aggiungi un `input` con un `type` di `checkbox` al terzo elemento `label`. Inoltre, dato che non vogliamo che gli utenti si registrino senza aver letto i termini e le condizioni, rendilo `required`.
+Per i termini e le condizioni, aggiungi al terzo elemento `label` un `input` con un attributo `type` con il valore `checkbox`. Inoltre, dato che non vogliamo che gli utenti si registrino senza aver letto i termini e le condizioni, aggiungi un attributo `required`.
# --hints--
diff --git a/curriculum/challenges/italian/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60f8618d191b940d62038513.md b/curriculum/challenges/italian/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60f8618d191b940d62038513.md
new file mode 100644
index 00000000000..b223eec9cea
--- /dev/null
+++ b/curriculum/challenges/italian/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60f8618d191b940d62038513.md
@@ -0,0 +1,105 @@
+---
+id: 60f8618d191b940d62038513
+title: Step 24
+challengeType: 0
+dashedName: step-24
+---
+
+# --description--
+
+All'interno di ogni elemento `label` corrispondente, e subito dopo l'elemento `input`, aggiungi uno spazio seguito dal testo:
+
+```md
+Personal Account
+Business Account
+I accept the terms and conditions
+```
+
+# --hints--
+
+Dovresti assegnare al primo elemento `label` il testo `Personal Account`.
+
+```js
+assert.include(document.querySelector('fieldset:nth-child(2) > label')?.innerText, 'Personal Account');
+```
+
+Dovresti assegnare al secondo elemento `label` il testo `Business Account`.
+
+```js
+assert.include(document.querySelector('fieldset:nth-child(2) > label:nth-child(2)')?.innerText, 'Business Account');
+```
+
+Dovresti assegnare al terzo elemento `label` il testo `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');
+```
+
+Dovresti aggiungere uno spazio prima del testo del primo elemento `label`.
+
+```js
+assert.equal(document.querySelector('fieldset:nth-child(2) > label')?.innerText?.[0], ' ');
+```
+
+Dovresti aggiungere uno spazio prima del testo del secondo elemento `label`.
+
+```js
+assert.equal(document.querySelector('fieldset:nth-child(2) > label:nth-child(2)')?.innerText?.[0], ' ');
+```
+
+Dovresti aggiungere uno spazio prima del testo del terzo elemento `label`.
+
+```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/italian/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60fab4a123ce4b04526b082b.md b/curriculum/challenges/italian/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60fab4a123ce4b04526b082b.md
new file mode 100644
index 00000000000..d62d1d7c4cf
--- /dev/null
+++ b/curriculum/challenges/italian/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60fab4a123ce4b04526b082b.md
@@ -0,0 +1,83 @@
+---
+id: 60fab4a123ce4b04526b082b
+title: Step 25
+challengeType: 0
+dashedName: step-25
+---
+
+# --description--
+
+I pulsanti di opzione dovrebbero essere selezionabili uno alla volta. Tuttavia, il modulo non sa che gli input di opzione sono correlati.
+
+Per collegare gli input di opzione, assegna loro lo stesso attributo `name` con il valore `account-type`. Ora, non è possibile selezionare entrambi gli input di opzione allo stesso tempo.
+
+# --hints--
+
+Dovresti assegnare al primo input di opzione l'attributo `name` con il valore `account-type`.
+
+```js
+assert.equal(document.querySelector('fieldset:nth-child(2) label:nth-child(1) input[type="radio"]')?.name, 'account-type');
+```
+
+Dovresti assegnare al secondo input di opzione l'attributo `name` con il valore `account-type`.
+
+```js
+assert.equal(document.querySelector('fieldset:nth-child(2) label:nth-child(2) input[type="radio"]')?.name, 'account-type');
+```
+
+Non dovresti assegnare l'attributo `name` al `checkbox`.
+
+```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/italian/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60fab8367d35de04e5cb7929.md b/curriculum/challenges/italian/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60fab8367d35de04e5cb7929.md
new file mode 100644
index 00000000000..bfcae3924c9
--- /dev/null
+++ b/curriculum/challenges/italian/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60fab8367d35de04e5cb7929.md
@@ -0,0 +1,85 @@
+---
+id: 60fab8367d35de04e5cb7929
+title: Step 26
+challengeType: 0
+dashedName: step-26
+---
+
+# --description--
+
+Per completare questo `fieldset`, collega il testo `terms and conditions` a questo link:
+
+```md
+https://www.freecodecamp.org/news/terms-of-service/
+```
+
+# --hints--
+
+Dovresti usare un elemento `a` per linkare terms and conditions.
+
+```js
+assert.exists(document.querySelector('fieldset:nth-child(2) > label:nth-child(3) > input + a'));
+```
+
+Dovresti assegnare all'elemento `a` un attributo `href` con il valore `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\/?/);
+```
+
+L'elemento `a` dovrebbe racchiudere soltanto il testo `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/italian/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60fab9f17fa294054b74228c.md b/curriculum/challenges/italian/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60fab9f17fa294054b74228c.md
new file mode 100644
index 00000000000..1706218f679
--- /dev/null
+++ b/curriculum/challenges/italian/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60fab9f17fa294054b74228c.md
@@ -0,0 +1,88 @@
+---
+id: 60fab9f17fa294054b74228c
+title: Step 27
+challengeType: 0
+dashedName: step-27
+---
+
+# --description--
+
+Passiamo all'ultimo `fieldset`. Cosa succede se vuoi consentire a un utente di caricare un'immagine profilo?
+
+Beh, il valore `file` delll'attributo type di `input` ti permette esattamente di fare questo. Aggiungi un elemento `label` con il testo `Upload a profile picture:` e aggiungi un `input` che accetta il caricamento di un file.
+
+# --hints--
+
+Dovresti aggiungere un elemento `label` con il testo `Upload a profile picture:`.
+
+```js
+assert.match(document.querySelector('fieldset:nth-child(3) > label')?.innerText, /Upload a profile picture:/i);
+```
+
+Dovresti annidare un elemento `input` all'interno dell'elemento `label`.
+
+```js
+assert.exists(document.querySelector('fieldset:nth-child(3) > label > input'));
+```
+
+Dovresti assegnare all'elemento `input` un attributo `type` con il valore `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/italian/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60fabf0dd4959805dbae09e6.md b/curriculum/challenges/italian/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60fabf0dd4959805dbae09e6.md
new file mode 100644
index 00000000000..7b15fe3111b
--- /dev/null
+++ b/curriculum/challenges/italian/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60fabf0dd4959805dbae09e6.md
@@ -0,0 +1,102 @@
+---
+id: 60fabf0dd4959805dbae09e6
+title: Step 28
+challengeType: 0
+dashedName: step-28
+---
+
+# --description--
+
+Aggiungi un altro elemento `label` dopo il primo, con il testo `Input your age (years):`. Quindi, annida un `input` con l'attributo `type` con il valore `number`.
+
+Poiché non vogliamo che gli utenti di età inferiore ai 13 anni si registrino, aggiungi un attributo `min` all'`input` con il valore `13`. Inoltre, possiamo probabilmente presumere che non ci saranno utenti di età superiore ai 120 anni; aggiungi un attributo `max` con il valore `120`.
+
+Ora, se qualcuno tenta di inviare il modulo con valori al di fuori dell'intervallo, verrà visualizzato un avviso e il modulo non verrà inviato. Fai una prova.
+
+# --hints--
+
+Dovresti aggiungere un elemento `label` al terzo `fieldset`, dopo l'elemento `label` esistente.
+
+```js
+assert.exists(document.querySelector('fieldset:nth-child(3) > label + label'));
+```
+
+Dovresti assegnare all'elemento `label` il testo `Input your age (years):`.
+
+```js
+assert.equal(document.querySelector('fieldset:nth-child(3) > label:nth-child(2)')?.textContent?.trim(), 'Input your age (years):');
+```
+
+Dovresti assegnare all'elemento `label` un `input` con l'attributo `type` con il valore `number`.
+
+```js
+assert.exists(document.querySelector('fieldset:nth-child(3) > label:nth-child(2) > input[type="number"]'));
+```
+
+Dovresti assegnare all'elemento `input` un attributo `min` con il valore `13`.
+
+```js
+assert.equal(document.querySelector('fieldset:nth-child(3) > label:nth-child(2) > input[type="number"]')?.min, '13');
+```
+
+Dovresti assegnare all'elemento `input` un attributo `max` con il valore `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/italian/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60fac4095512d3066053d73c.md b/curriculum/challenges/italian/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60fac4095512d3066053d73c.md
new file mode 100644
index 00000000000..09004dfceea
--- /dev/null
+++ b/curriculum/challenges/italian/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60fac4095512d3066053d73c.md
@@ -0,0 +1,84 @@
+---
+id: 60fac4095512d3066053d73c
+title: Step 29
+challengeType: 0
+dashedName: step-29
+---
+
+# --description--
+
+Aggiungere al modulo un menu a discesa è piuttosto facile con l'elemento `select`. L'elemento `select` è un contenitore per un gruppo di elementi `option` e l'elemento `option` funge da etichetta per ciascuna opzione a discesa. Entrambi gli elementi richiedono tag di chiusura.
+
+Inizia aggiungendo un elemento `select` sotto i due elementi `label`. Poi, annida 5 elementi `option` all'interno dell'elemento `select`.
+
+# --hints--
+
+Dovresti aggiungere un elemento `select` al terzo `fieldset`.
+
+```js
+assert.exists(document.querySelector('fieldset:nth-child(3) > select'));
+```
+
+Dovresti annidare 5 elementi `option` all'interno dell'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/italian/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60fac56271087806def55b33.md b/curriculum/challenges/italian/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60fac56271087806def55b33.md
new file mode 100644
index 00000000000..7f4eccee66b
--- /dev/null
+++ b/curriculum/challenges/italian/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60fac56271087806def55b33.md
@@ -0,0 +1,94 @@
+---
+id: 60fac56271087806def55b33
+title: Step 30
+challengeType: 0
+dashedName: step-30
+---
+
+# --description--
+
+Annida l'elemento `select` in un elemento `label` con il testo `How did you hear about us?`. Il testo dovrebbe trovarsi prima dell'elemento `select`.
+
+# --hints--
+
+Dovresti annidare solo l'elemento `select` all'interno di un elemento `label`.
+
+```js
+assert.exists(document.querySelector('fieldset:nth-child(3) > label:nth-child(3) > select'));
+```
+
+Dovresti assegnare all'elemento `label` il testo `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?');
+```
+
+Dovresti posizionare il testo prima dell'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/italian/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60fac8d7fdfaee0796934f20.md b/curriculum/challenges/italian/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60fac8d7fdfaee0796934f20.md
new file mode 100644
index 00000000000..6814457ad3d
--- /dev/null
+++ b/curriculum/challenges/italian/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60fac8d7fdfaee0796934f20.md
@@ -0,0 +1,116 @@
+---
+id: 60fac8d7fdfaee0796934f20
+title: Step 31
+challengeType: 0
+dashedName: step-31
+---
+
+# --description--
+
+Le opzioni a discesa sono attualmente vuote. Per assegnare loro il contenuto, aggiungi in ordine il seguente testo a ogni elemento `option`:
+
+```md
+(select one)
+freeCodeCamp News
+freeCodeCamp YouTube Channel
+freeCodeCamp Forum
+Other
+```
+
+# --hints--
+
+Dovresti assegnare al primo elemento `option` il testo `(select one)`.
+
+```js
+assert.equal(document.querySelectorAll('fieldset:nth-child(3) > label:nth-child(3) option')?.[0]?.textContent, '(select one)');
+```
+
+Dovresti assegnare al secondo elemento `option` il testo `freeCodeCamp News`.
+
+```js
+assert.equal(document.querySelectorAll('fieldset:nth-child(3) > label:nth-child(3) option')?.[1]?.textContent, 'freeCodeCamp News');
+```
+
+Dovresti assegnare alla terzo elemento `option` il testo `freeCodeCamp YouTube Channel`.
+
+```js
+assert.equal(document.querySelectorAll('fieldset:nth-child(3) > label:nth-child(3) option')?.[2]?.textContent, 'freeCodeCamp YouTube Channel');
+```
+
+Dovresti assegnare al quarto elemento `option` il testo `freeCodeCamp Forum`.
+
+```js
+assert.equal(document.querySelectorAll('fieldset:nth-child(3) > label:nth-child(3) option')?.[3]?.textContent, 'freeCodeCamp Forum');
+```
+
+Dovresti assegnare al quinto elemento `option` il testo `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/italian/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60faca286cb48b07f6482970.md b/curriculum/challenges/italian/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60faca286cb48b07f6482970.md
new file mode 100644
index 00000000000..92ada1b47a4
--- /dev/null
+++ b/curriculum/challenges/italian/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60faca286cb48b07f6482970.md
@@ -0,0 +1,110 @@
+---
+id: 60faca286cb48b07f6482970
+title: Step 32
+challengeType: 0
+dashedName: step-32
+---
+
+# --description--
+
+Se il modulo viene inviato con un'opzione selezionata il server non ottiene un valore utile. Per questo motivo, ogni elemento `option` ha bisogno di un attributo `value`. Senza di esso, il contenuto del testo dell'elemento `option` verrà inviato al server.
+
+Assegna al primo elemento `option` un attributo `value` di `""` e agli elementi `option` successivi un attributo `value` con i valori da `1` a `4`.
+
+# --hints--
+
+Dovresti assegnare al primo elemento `option` un attributo `value` di `""`.
+
+```js
+assert.equal(document.querySelectorAll('fieldset:nth-child(3) > label:nth-child(3) option')?.[0]?.value, '');
+```
+
+Dovresti assegnare al secondo elemento `option` un attributo `value` di `1`.
+
+```js
+assert.equal(document.querySelectorAll('fieldset:nth-child(3) > label:nth-child(3) option')?.[1]?.value, '1');
+```
+
+Dovresti assegnare al terzo elemento `option` un attributo `value` di `2`.
+
+```js
+assert.equal(document.querySelectorAll('fieldset:nth-child(3) > label:nth-child(3) option')?.[2]?.value, '2');
+```
+
+Dovresti assegnare al quarto elemento `option` un attributo `value` di `3`.
+
+```js
+assert.equal(document.querySelectorAll('fieldset:nth-child(3) > label:nth-child(3) option')?.[3]?.value, '3');
+```
+
+Dovresti assegnare al quinto elemento `option` un attributo `value` di `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/italian/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60facf914c7b9b08d7510c2c.md b/curriculum/challenges/italian/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60facf914c7b9b08d7510c2c.md
new file mode 100644
index 00000000000..7fc61c63e9c
--- /dev/null
+++ b/curriculum/challenges/italian/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60facf914c7b9b08d7510c2c.md
@@ -0,0 +1,95 @@
+---
+id: 60facf914c7b9b08d7510c2c
+title: Step 34
+challengeType: 0
+dashedName: step-34
+---
+
+# --description--
+
+L'elemento `textarea` è troppo piccolo. Per assegnargli una dimensione iniziale, puoi aggiungere gli attributi `rows` e `cols`.
+
+Aggiungi una dimensione iniziale di `3` righe e `30` colonne.
+
+# --hints--
+
+Dovresti assegnare all'elemento `textarea` un attributo `rows` con il valore `3`.
+
+```js
+assert.equal(document.querySelector('fieldset:nth-child(3) > label:nth-child(4) > textarea')?.rows, 3);
+```
+
+Dovresti assegnare all'elemento `textarea` un attributo `cols` con il valore `30`.
+
+```js
+assert.equal(document.querySelector('fieldset:nth-child(3) > label:nth-child(4) > textarea')?.cols, 30);
+```
+
+# --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/italian/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60fad0a812d9890938524f50.md b/curriculum/challenges/italian/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60fad0a812d9890938524f50.md
new file mode 100644
index 00000000000..90776fb8ada
--- /dev/null
+++ b/curriculum/challenges/italian/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60fad0a812d9890938524f50.md
@@ -0,0 +1,95 @@
+---
+id: 60fad0a812d9890938524f50
+title: Step 35
+challengeType: 0
+dashedName: step-35
+---
+
+# --description--
+
+Per dare ai Campers un'idea di cosa mettere nella loro biografia, viene utilizzato l'attributo `placeholder`. Il `placeholder` accetta un valore di testo, che viene visualizzato fino a quando l'utente inizia a digitare.
+
+Dai all'elemento `textarea` un attributo `placeholder` con il valore `I like coding on the beach...`.
+
+# --hints--
+
+Dovresti assegnare all'elemento `textarea` un attributo `placeholder`.
+
+```js
+assert.isNotEmpty(document.querySelector('fieldset:nth-child(3) > label:nth-child(4) > textarea')?.placeholder);
+```
+
+Dovresti assegnare all'attributo `placeholder` il valore `I like coding on the beach...`.
+
+```js
+assert.equal(document.querySelector('fieldset:nth-child(3) > label:nth-child(4) > textarea')?.placeholder, 'I like coding on the beach...');
+```
+
+# --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/italian/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60fad1cafcde010995e15306.md b/curriculum/challenges/italian/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60fad1cafcde010995e15306.md
new file mode 100644
index 00000000000..dc53c9b9520
--- /dev/null
+++ b/curriculum/challenges/italian/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60fad1cafcde010995e15306.md
@@ -0,0 +1,155 @@
+---
+id: 60fad1cafcde010995e15306
+title: Step 36
+challengeType: 0
+dashedName: step-36
+---
+
+# --description--
+
+Per quanto riguarda l'invio dei moduli, è utile oltre che una buona pratica, fornire ogni elemento inviabile di un attributo `name`. Questo attributo è utilizzato per identificare l'elemento una volta che il modulo è stato inviato.
+
+Vai avanti, e assegna a ogni elemento inviabile un attributo `name` univoco di tua scelta. _Eccetto i due input `radio`._
+
+# --hints--
+
+Dovresti assegnare all'`input` relativo al nome un attributo `name`. _PS Io avrei scelto `first-name`_
+
+```js
+assert.isNotEmpty(document.querySelector('fieldset:nth-child(1) > label:nth-child(1) > input')?.name);
+```
+
+Dovresti assegnare all'`input` relativo al cognome un attributo `name`. _PS Io avrei scelto `last-name`_
+
+```js
+assert.isNotEmpty(document.querySelector('fieldset:nth-child(1) > label:nth-child(2) > input')?.name);
+```
+
+Dovresti assegnare all'`email` un attributo `name`. _PS Io avrei scelto `email`_
+
+```js
+assert.isNotEmpty(document.querySelector('input[type="email"]')?.name);
+```
+
+Dovresti assegnare alla `password` un attributo `name`. _PS Io avrei scelto `password`_
+
+```js
+assert.isNotEmpty(document.querySelector('input[type="password"]')?.name);
+```
+
+Dovresti assegnare alla `checkbox` un attributo `name`. _PS Io avrei scelto `terms`_
+
+```js
+assert.isNotEmpty(document.querySelector('input[type="checkbox"]')?.name);
+```
+
+Dovresti assegnare al `file` un attributo `name`. _PS Io avrei scelto `file`_
+
+```js
+assert.isNotEmpty(document.querySelector('input[type="file"]')?.name);
+```
+
+Dovresti assegnare al `number` un attributo `name`. _PS Io avrei scelto `age`_
+
+```js
+assert.isNotEmpty(document.querySelector('input[type="number"]')?.name);
+```
+
+Dovresti assegnare all'elemento `select` un attributo `name`. _PS Io avrei scelto `referrer`_
+
+```js
+assert.isNotEmpty(document.querySelector('select')?.name);
+```
+
+Dovresti assegnare all'elemento `textarea` un attributo `name`. _PS Io avrei scelto `bio`_
+
+```js
+assert.isNotEmpty(document.querySelector('textarea')?.name);
+```
+
+Non dovresti assegnare a nessun elemento `option` un attributo `name`.
+
+```js
+[...document.querySelectorAll('option')]?.forEach(option => assert.isUndefined(option?.name));
+```
+
+Non dovresti assegnare a nessun elemento `label` un attributo `name`.
+
+```js
+[...document.querySelectorAll('label')]?.forEach(label => assert.isUndefined(label?.name));
+```
+
+Non dovresti assegnare a nessun elemento `fieldset` un attributo `name`.
+
+```js
+[...document.querySelectorAll('fieldset')]?.forEach(fieldset => assert.isEmpty(fieldset?.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/italian/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60fad6dfcc0d930a59becf12.md b/curriculum/challenges/italian/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60fad6dfcc0d930a59becf12.md
new file mode 100644
index 00000000000..4df5b97af47
--- /dev/null
+++ b/curriculum/challenges/italian/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60fad6dfcc0d930a59becf12.md
@@ -0,0 +1,102 @@
+---
+id: 60fad6dfcc0d930a59becf12
+title: Step 37
+challengeType: 0
+dashedName: step-37
+---
+
+# --description--
+
+L'HTML per il modulo di registrazione è terminato. Ora puoi concentrarti ad abbellire un po' la pagina.
+
+Inizia cambiando il carattere del `body` in `Tahoma` e la dimensione del carattere in `16px`.
+
+# --hints--
+
+Dovresti usare la proprietà `font-family` per cambiare il carattere.
+
+```js
+assert.isNotEmpty(new __helpers.CSSHelp(document).getStyle('body')?.fontFamily);
+```
+
+Dovresti assegnare alla proprietà `font-family` il valore `Tahoma`.
+
+```js
+assert.equal(new __helpers.CSSHelp(document).getStyle('body')?.fontFamily, 'Tahoma');
+```
+
+Dovresti assegnare alla proprietà `font-size` il valore `16px`.
+
+```js
+assert.equal(new __helpers.CSSHelp(document).getStyle('body')?.fontSize, '16px');
+```
+
+# --seed--
+
+## --seed-contents--
+
+```html
+
+
+
+ Registration Form
+
+
+
+
Registration Form
+
Please fill out this form with the required information
+
+
+
+```
+
+```css
+--fcc-editable-region--
+body {
+ width: 100%;
+ height: 100vh;
+ margin: 0;
+ background-color: #1b1b32;
+ color: #f5f6f7;
+
+}
+--fcc-editable-region--
+
+label {
+ display: block;
+ margin: 0.5rem 0;
+}
+
+```
diff --git a/curriculum/challenges/italian/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60fad8e6148f310bba7890b1.md b/curriculum/challenges/italian/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60fad8e6148f310bba7890b1.md
new file mode 100644
index 00000000000..5f577c36290
--- /dev/null
+++ b/curriculum/challenges/italian/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60fad8e6148f310bba7890b1.md
@@ -0,0 +1,103 @@
+---
+id: 60fad8e6148f310bba7890b1
+title: Step 38
+challengeType: 0
+dashedName: step-38
+---
+
+# --description--
+
+Centra gli elementi `h1` e `p` dando loro una proprietà `margin` con il valore `1em auto`. Quindi, allinea anche il testo.
+
+# --hints--
+
+Dovresti usare la virgola all'interno di un unico selettore per agire sullo stile degli elementi `h1` e `p`.
+
+```js
+assert.exists(new __helpers.CSSHelp(document).getStyle('h1, p'));
+```
+
+Dovresti utilizzare una proprietà `margin` di `1em auto` per centrare gli elementi `h1` e `p`.
+
+```js
+assert.equal(new __helpers.CSSHelp(document).getStyle('h1, p')?.margin, '1em auto');
+```
+
+Dovresti usare una proprietà `text-align` con il valore `center` per centrare il testo degli elementi `h1` e `p`.
+
+```js
+assert.equal(new __helpers.CSSHelp(document).getStyle('h1, p')?.textAlign, 'center');
+```
+
+# --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;
+ font-family: Tahoma;
+ font-size: 16px;
+}
+
+--fcc-editable-region--
+
+--fcc-editable-region--
+
+label {
+ display: block;
+ margin: 0.5rem 0;
+}
+
+```
diff --git a/curriculum/challenges/italian/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60fad99e09f9d30c1657e790.md b/curriculum/challenges/italian/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60fad99e09f9d30c1657e790.md
new file mode 100644
index 00000000000..aa277a14949
--- /dev/null
+++ b/curriculum/challenges/italian/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60fad99e09f9d30c1657e790.md
@@ -0,0 +1,120 @@
+---
+id: 60fad99e09f9d30c1657e790
+title: Step 39
+challengeType: 0
+dashedName: step-39
+---
+
+# --description--
+
+Centra l'elemento `form`, assegnandogli una proprietà `margin` con il valore `0 auto`. Quindi, fissa la sua larghezza massima a `500px` e la larghezza minima a `300px`. In questo intervallo, assegnagli una proprietà `width` di `60vw`.
+
+# --hints--
+
+Dovresti usare un selettore `form` per lo stile dell'elemento `form`.
+
+```js
+assert.exists(new __helpers.CSSHelp(document).getStyle('form'));
+```
+
+Dovresti assegnare all'elemento `form` una proprietà `margin` con il valore `0 auto`.
+
+```js
+assert.equal(new __helpers.CSSHelp(document).getStyle('form')?.margin, '0px auto');
+```
+
+Dovresti assegnare all'elemento `form` una proprietà `max-width` con il valore `500px`.
+
+```js
+assert.equal(new __helpers.CSSHelp(document).getStyle('form')?.maxWidth, '500px');
+```
+
+Dovresti assegnare all'elemento `form` una proprietà `min-width` con il valore `300px`.
+
+```js
+assert.equal(new __helpers.CSSHelp(document).getStyle('form')?.minWidth, '300px');
+```
+
+Dovresti assegnare all'elemento `form` una proprietà `width` con il valore `60vw`.
+
+```js
+assert.equal(new __helpers.CSSHelp(document).getStyle('form')?.width, '60vw');
+```
+
+# --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;
+ font-family: Tahoma;
+ font-size: 16px;
+}
+
+h1, p {
+ margin: 1em auto;
+ text-align: center;
+}
+
+--fcc-editable-region--
+
+--fcc-editable-region--
+
+label {
+ display: block;
+ margin: 0.5rem 0;
+}
+
+```
diff --git a/curriculum/challenges/italian/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60fadb18058e950c73925279.md b/curriculum/challenges/italian/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60fadb18058e950c73925279.md
new file mode 100644
index 00000000000..de2ea8d9b2d
--- /dev/null
+++ b/curriculum/challenges/italian/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60fadb18058e950c73925279.md
@@ -0,0 +1,121 @@
+---
+id: 60fadb18058e950c73925279
+title: Step 40
+challengeType: 0
+dashedName: step-40
+---
+
+# --description--
+
+Durante lo sviluppo, è utile vedere i bordi predefiniti degli elementi `fieldset`. Tuttavia, rendono il contenuto troppo separato.
+
+Rimuovi i bordi agendo sul valore della proprietà `border` e aggiungi `2rem` di paddingsolo in alto e in basso per ogni `fieldset`. Assicurati di rimuovere il `padding` di sinistra e destra.
+
+# --hints--
+
+Puoi rimuovere i bordi utilizzando il valore `none` o `0` per la proprietà `border`.
+
+```js
+assert.match(new __helpers.CSSHelp(document).getStyle('fieldset')?.border, /(none)|(0px)/);
+```
+
+Dovresti aggiungere un `padding` di `2rem` nella parte superiore e inferiore di ogni `fieldset`.
+
+```js
+const fieldset = new __helpers.CSSHelp(document).getStyle('fieldset')
+assert.equal(fieldset?.paddingTop, '2rem');
+assert.equal(fieldset?.paddingBottom, '2rem');
+```
+
+Dovresti rimuovere il `padding` di sinistra e destra per ogni `fieldset`.
+
+```js
+const fieldset = new __helpers.CSSHelp(document).getStyle('fieldset')
+assert.equal(fieldset?.paddingLeft, '0px');
+assert.equal(fieldset?.paddingRight, '0px');
+```
+
+# --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;
+ font-family: Tahoma;
+ font-size: 16px;
+}
+
+h1, p {
+ margin: 1em auto;
+ text-align: center;
+}
+
+form {
+ width: 60vw;
+ max-width: 500px;
+ min-width: 300px;
+ margin: 0 auto;
+}
+
+--fcc-editable-region--
+
+--fcc-editable-region--
+
+label {
+ display: block;
+ margin: 0.5rem 0;
+}
+
+```
diff --git a/curriculum/challenges/italian/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60fadce90f85c50d0bb0dd4f.md b/curriculum/challenges/italian/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60fadce90f85c50d0bb0dd4f.md
new file mode 100644
index 00000000000..9e4e8b6173b
--- /dev/null
+++ b/curriculum/challenges/italian/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60fadce90f85c50d0bb0dd4f.md
@@ -0,0 +1,114 @@
+---
+id: 60fadce90f85c50d0bb0dd4f
+title: Step 41
+challengeType: 0
+dashedName: step-41
+---
+
+# --description--
+
+Per dare agli elementi `fieldset` un po' di separazione, seleziona tutti gli elementi `fieldset` tranne l'ultimo e assegna loro una proprietà `border-bottom` con il valore `3px solid #3b3b4f`.
+
+# --hints--
+
+Puoi usare la pseudo-classe `:not(:last-of-type)` per selezionare tutti gli elemento tranne l'ultimo.
+
+```js
+assert.exists(new __helpers.CSSHelp(document).getStyle('fieldset:not(:last-of-type)'));
+```
+
+Dovresti assegnare agli elementi `fieldset` una proprietà `border-bottom` con il valore `3px solid #3b3b4f`.
+
+```js
+assert.equal(new __helpers.CSSHelp(document).getStyle('fieldset:not(:last-of-type)')?.borderBottom, '3px solid rgb(59, 59, 79)');
+```
+
+# --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;
+ font-family: Tahoma;
+ font-size: 16px;
+}
+
+h1, p {
+ margin: 1em auto;
+ text-align: center;
+}
+
+form {
+ width: 60vw;
+ max-width: 500px;
+ min-width: 300px;
+ margin: 0 auto;
+}
+
+fieldset {
+ border: none;
+ padding: 2rem 0;
+}
+
+--fcc-editable-region--
+
+--fcc-editable-region--
+
+label {
+ display: block;
+ margin: 0.5rem 0;
+}
+
+```
diff --git a/curriculum/challenges/italian/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60fadd972e6ffe0d6858fa2d.md b/curriculum/challenges/italian/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60fadd972e6ffe0d6858fa2d.md
new file mode 100644
index 00000000000..f02733932b0
--- /dev/null
+++ b/curriculum/challenges/italian/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60fadd972e6ffe0d6858fa2d.md
@@ -0,0 +1,151 @@
+---
+id: 60fadd972e6ffe0d6858fa2d
+title: Step 42
+challengeType: 0
+dashedName: step-42
+---
+
+# --description--
+
+Sarebbe più carino far sì che il testo degli elementi `label` appaia sopra gli elementi form.
+
+Seleziona tutti gli elementi `input`, `textarea` e `select` e fai in modo di impostarli alla larghezza massima dei loro elementi genitori.
+
+Aggiungi anche una proprietà `margin` di `10px` nella parte superiore degli elementi selezionati. Imposta gli altri margini a `0`.
+
+# --hints--
+
+Dovresti usare un selettore di elementi separati da virgola per selezionare gli elementi `input`, `textarea` e `select`.
+
+```js
+assert.isTrue(['input, textarea, select', 'input, select, textarea', 'select, input, textarea', 'select, textarea, input', 'textarea, input, select', 'textarea, select, input'].some(selector => new __helpers.CSSHelp(document).getStyle(selector)));
+```
+
+Dovresti impostare la proprietà `width` al `100%`.
+
+```js
+const selFunc = (selector) => new __helpers.CSSHelp(document).getStyle(selector);
+assert.equal(selFunc(['input, textarea, select', 'input, select, textarea', 'select, input, textarea', 'select, textarea, input', 'textarea, input, select', 'textarea, select, input'].find(selFunc))?.width, '100%');
+```
+
+Dovresti impostare la proprietà `margin-top` a `10px`.
+
+```js
+const selFunc = (selector) => new __helpers.CSSHelp(document).getStyle(selector);
+assert.equal(selFunc(['input, textarea, select', 'input, select, textarea', 'select, input, textarea', 'select, textarea, input', 'textarea, input, select', 'textarea, select, input'].find(selFunc))?.marginTop, '10px');
+```
+
+Dovresti impostare la proprietà `margin-bottom` a `0`.
+
+```js
+const selFunc = (selector) => new __helpers.CSSHelp(document).getStyle(selector);
+assert.equal(selFunc(['input, textarea, select', 'input, select, textarea', 'select, input, textarea', 'select, textarea, input', 'textarea, input, select', 'textarea, select, input'].find(selFunc))?.marginBottom, '0px');
+```
+
+Dovresti impostare la proprietà `margin-left` a `0`.
+
+```js
+const selFunc = (selector) => new __helpers.CSSHelp(document).getStyle(selector);
+assert.equal(selFunc(['input, textarea, select', 'input, select, textarea', 'select, input, textarea', 'select, textarea, input', 'textarea, input, select', 'textarea, select, input'].find(selFunc))?.marginLeft, '0px');
+```
+
+Dovresti impostare la proprietà `margin-right` a `0`.
+
+```js
+const selFunc = (selector) => new __helpers.CSSHelp(document).getStyle(selector);
+assert.equal(selFunc(['input, textarea, select', 'input, select, textarea', 'select, input, textarea', 'select, textarea, input', 'textarea, input, select', 'textarea, select, input'].find(selFunc))?.marginRight, '0px');
+```
+
+# --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;
+ font-family: Tahoma;
+ font-size: 16px;
+}
+
+h1, p {
+ margin: 1em auto;
+ text-align: center;
+}
+
+form {
+ width: 60vw;
+ max-width: 500px;
+ min-width: 300px;
+ margin: 0 auto;
+}
+
+fieldset {
+ border: none;
+ padding: 2rem 0;
+}
+
+fieldset:not(:last-of-type) {
+ border-bottom: 3px solid #3b3b4f;
+}
+
+label {
+ display: block;
+ margin: 0.5rem 0;
+}
+
+--fcc-editable-region--
+
+--fcc-editable-region--
+
+```
diff --git a/curriculum/challenges/italian/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60fadfa2b540b70dcfa8b771.md b/curriculum/challenges/italian/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60fadfa2b540b70dcfa8b771.md
new file mode 100644
index 00000000000..0623265db9f
--- /dev/null
+++ b/curriculum/challenges/italian/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60fadfa2b540b70dcfa8b771.md
@@ -0,0 +1,131 @@
+---
+id: 60fadfa2b540b70dcfa8b771
+title: Step 43
+challengeType: 0
+dashedName: step-43
+---
+
+# --description--
+
+Per il secondo `fieldset`, fai sì che il testo degli elementi `input` e `label` appaia sulla stessa riga.
+
+Inizia, assegnando agli elementi `input` nel secondo `fieldset` la classe `inline`.
+
+# --hints--
+
+Dovresti assegnare al primo `input` la classe `inline`.
+
+```js
+assert(document.querySelectorAll('fieldset:nth-child(2) input')?.[0]?.classList?.contains('inline'));
+```
+
+Dovresti assegnare al secondo `input` la classe `inline`.
+
+```js
+assert(document.querySelectorAll('fieldset:nth-child(2) input')?.[1]?.classList?.contains('inline'));
+```
+
+Dovresti assegnare al terzo `input` la classe `inline`.
+
+```js
+assert(document.querySelectorAll('fieldset:nth-child(2) input')?.[2]?.classList?.contains('inline'));
+```
+
+# --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;
+ font-family: Tahoma;
+ font-size: 16px;
+}
+
+h1, p {
+ margin: 1em auto;
+ text-align: center;
+}
+
+form {
+ width: 60vw;
+ max-width: 500px;
+ min-width: 300px;
+ margin: 0 auto;
+}
+
+fieldset {
+ border: none;
+ padding: 2rem 0;
+}
+
+fieldset:not(:last-of-type) {
+ border-bottom: 3px solid #3b3b4f;
+}
+
+label {
+ display: block;
+ margin: 0.5rem 0;
+}
+
+input,
+textarea,
+select {
+ margin: 10px 0 0 0;
+ width: 100%;
+}
+
+```
diff --git a/curriculum/challenges/italian/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60fc219d333e37046f474a6e.md b/curriculum/challenges/italian/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60fc219d333e37046f474a6e.md
new file mode 100644
index 00000000000..9321b9b4ae7
--- /dev/null
+++ b/curriculum/challenges/italian/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60fc219d333e37046f474a6e.md
@@ -0,0 +1,125 @@
+---
+id: 60fc219d333e37046f474a6e
+title: Step 44
+challengeType: 0
+dashedName: step-44
+---
+
+# --description--
+
+Seleziona solo gli elementi `.inline` e assegna loro una proprietà `width` con il valore `unset`. In questo modo, rimuoverai la regola precedente che impostava tutti gli elementi `input` su `width: 100%`.
+
+# --hints--
+
+Dovresti usare il selettore `.inline`.
+
+```js
+assert.exists(new __helpers.CSSHelp(document).getStyle('.inline'));
+```
+
+Dovresti assegnare agli elementi `.inline` una proprietà `width` con il valore `unset`.
+
+```js
+assert.equal(new __helpers.CSSHelp(document).getStyle('.inline')?.width, 'unset');
+```
+
+# --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;
+ font-family: Tahoma;
+ font-size: 16px;
+}
+
+h1, p {
+ margin: 1em auto;
+ text-align: center;
+}
+
+form {
+ width: 60vw;
+ max-width: 500px;
+ min-width: 300px;
+ margin: 0 auto;
+}
+
+fieldset {
+ border: none;
+ padding: 2rem 0;
+}
+
+fieldset:not(:last-of-type) {
+ border-bottom: 3px solid #3b3b4f;
+}
+
+label {
+ display: block;
+ margin: 0.5rem 0;
+}
+
+input,
+textarea,
+select {
+ margin: 10px 0 0 0;
+ width: 100%;
+}
+
+--fcc-editable-region--
+
+--fcc-editable-region--
+
+```
diff --git a/curriculum/challenges/italian/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60fc22d1e64d1b04cdd4e602.md b/curriculum/challenges/italian/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60fc22d1e64d1b04cdd4e602.md
new file mode 100644
index 00000000000..0a8b861731c
--- /dev/null
+++ b/curriculum/challenges/italian/14-responsive-web-design-22/learn-html-forms-by-building-a-registration-form/60fc22d1e64d1b04cdd4e602.md
@@ -0,0 +1,140 @@
+---
+id: 60fc22d1e64d1b04cdd4e602
+title: Step 45
+challengeType: 0
+dashedName: step-45
+---
+
+# --description--
+
+Aggiungi un po' di spazio tra gli elementi `.inline` e il testo dei `label` usando una proprietà `margin` di `0.5em`. Inoltre, imposta tutti gli altri margini a `0`.
+
+# --hints--
+
+Dovresti assegnare agli elementi `.inline` una proprietà `margin-right` di `0.5em`.
+
+```js
+assert.equal(new __helpers.CSSHelp(document).getStyle('.inline')?.marginRight, '0.5em');
+```
+
+Dovresti assegnare agli elementi `.inline` una proprietà `margin-bottom` di `0`.
+
+```js
+assert.equal(new __helpers.CSSHelp(document).getStyle('.inline')?.marginBottom, '0px');
+```
+
+Dovresti assegnare agli elementi `.inline` una proprietà `margin-top` di `0`.
+
+```js
+assert.equal(new __helpers.CSSHelp(document).getStyle('.inline')?.marginTop, '0px');
+```
+
+Dovresti assegnare agli elementi `.inline` una proprietà `margin-left` di `0`.
+
+```js
+assert.equal(new __helpers.CSSHelp(document).getStyle('.inline')?.marginLeft, '0px');
+```
+
+# --seed--
+
+## --seed-contents--
+
+```html
+
+
+
+ Registration Form
+
+
+
+
Registration Form
+
Please fill out this form with the required information
+
+
+```
+
+```css
+html {
+ box-sizing: border-box;
+}
+
+*, *::before, *::after {
+ box-sizing: inherit;
+}
+
+#piano {
+ background-color: #00471b;
+ width: 992px;
+ height: 290px;
+ margin: 80px auto;
+ padding: 90px 20px 0 20px;
+ position: relative;
+ border-radius: 10px;
+}
+
+.keys {
+ background-color: #040404;
+ width: 949px;
+ height: 180px;
+ padding-left: 2px;
+ overflow: hidden;
+}
+
+.key {
+ background-color: #ffffff;
+ position: relative;
+ width: 41px;
+ height: 175px;
+ margin: 2px;
+ float: left;
+ border-radius: 0 0 3px 3px;
+}
+
+.key.black--key::after {
+ background-color: #1d1e22;
+ content: "";
+ position: absolute;
+ left: -18px;
+ width: 32px;
+ height: 100px;
+ border-radius: 0 0 3px 3px;
+}
+
+.logo {
+ width: 200px;
+ position: absolute;
+ top: 23px;
+}
+
+@media (max-width: 768px) {
+ #piano {
+ width: 358px;
+ }
+
+ .keys {
+ width: 318px;
+ }
+
+ .logo {
+ width: 150px;
+ }
+}
+
+@media (max-width: 1199px) and (min-width: 769px) {
+ #piano {
+ width: 675px;
+ }
+
+ .keys {
+ width: 633px;
+ }
+}
+```
diff --git a/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-basic-css-by-building-a-cafe-menu/5f331e55dfab7a896e53c3a1.md b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-basic-css-by-building-a-cafe-menu/5f331e55dfab7a896e53c3a1.md
index 386dcb3e5f2..6267dc227dc 100644
--- a/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-basic-css-by-building-a-cafe-menu/5f331e55dfab7a896e53c3a1.md
+++ b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-basic-css-by-building-a-cafe-menu/5f331e55dfab7a896e53c3a1.md
@@ -7,7 +7,7 @@ dashedName: step-3
# --description--
-O `title` é um dos vários elementos que fornecem informações extras que não são visíveis na página da web, mas ele pode ser útil para mecanismos de busca ou até mesmo em como a página é exibida.
+O `title` é um dos vários elementos que fornecem informações extras que não são visíveis na página da web, mas ele é útil para mecanismos de busca ou até mesmo em como a página é exibida.
Dentro do elemento `head`, adicione um elemento `meta` com um atributo chamado `charset` definido para o valor `utf-8` para dizer ao navegador como codificar caracteres para a página. Note que os elementos `meta` fecham em si mesmos.
diff --git a/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-basic-css-by-building-a-cafe-menu/5f356ed6199b0cdef1d2be8f.md b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-basic-css-by-building-a-cafe-menu/5f356ed6199b0cdef1d2be8f.md
index e3b4bdbb389..11cec77ab30 100644
--- a/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-basic-css-by-building-a-cafe-menu/5f356ed6199b0cdef1d2be8f.md
+++ b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-basic-css-by-building-a-cafe-menu/5f356ed6199b0cdef1d2be8f.md
@@ -7,7 +7,7 @@ dashedName: step-27
# --description--
-Até agora, você tem usado seletores de tipo para elementos de estilo. Um seletor de classe é definido por um nome com um ponto diretamente à sua frente, assim:
+Até agora, você tem usado seletores de tipo para elementos de estilo. Um seletor de classe é definido por um nome com um ponto diretamente na frente dele, como este:
```css
.class-name {
diff --git a/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-css-colors-by-building-a-set-of-colored-markers/61a5d7ef1cfcf45764df07a2.md b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-css-colors-by-building-a-set-of-colored-markers/61a5d7ef1cfcf45764df07a2.md
index 44ae263257d..0da480e5141 100644
--- a/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-css-colors-by-building-a-set-of-colored-markers/61a5d7ef1cfcf45764df07a2.md
+++ b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-css-colors-by-building-a-set-of-colored-markers/61a5d7ef1cfcf45764df07a2.md
@@ -13,7 +13,7 @@ Dentro do marcador vermelho `div`, crie um novo `div` e dê a ele uma classe de
# --hints--
-O novo elemento `div` deve estar aninhando dentro do elemento `div` do marcador vermelho.
+O novo elemento `div` deve estar aninhado dentro do elemento `div` do marcador vermelho.
```js
const redMarkerChildren = [...document.querySelector('.red')?.children];
diff --git a/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-css-colors-by-building-a-set-of-colored-markers/61b093429e7fc020b43b1bb6.md b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-css-colors-by-building-a-set-of-colored-markers/61b093429e7fc020b43b1bb6.md
index df5a8144941..d0d9dfc148a 100644
--- a/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-css-colors-by-building-a-set-of-colored-markers/61b093429e7fc020b43b1bb6.md
+++ b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-css-colors-by-building-a-set-of-colored-markers/61b093429e7fc020b43b1bb6.md
@@ -13,7 +13,7 @@ Adicione um novo `div` com a classe `cap` antes do elemento `div` da capa.
# --hints--
-O novo elemento `div` deve estar aninhando dentro do elemento `div` do marcador vermelho.
+O novo elemento `div` deve estar aninhado dentro do elemento `div` do marcador vermelho.
```js
const redMarkerChildren = [...document.querySelector('div.red')?.children];
diff --git a/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-css-grid-by-building-a-magazine/61437d575fb98f57fa8f7f36.md b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-css-grid-by-building-a-magazine/61437d575fb98f57fa8f7f36.md
new file mode 100644
index 00000000000..b8f5267a29f
--- /dev/null
+++ b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-css-grid-by-building-a-magazine/61437d575fb98f57fa8f7f36.md
@@ -0,0 +1,135 @@
+---
+id: 61437d575fb98f57fa8f7f36
+title: Passo 1
+challengeType: 0
+dashedName: step-1
+---
+
+# --description--
+
+Comece com o boilerplate padrão do HTML. Adicione a declaração `DOCTYPE` e os elementos `html`, `head` e `body`.
+
+Adicione a tag `` com o `charset` apropriado e uma tag `` para responsividade móvel dentro do elemento `head`.
+
+# --hints--
+
+O código deve conter a referência `DOCTYPE`.
+
+```js
+assert(code.match(/` após o tipo.
+
+```js
+assert(code.match(//gi));
+```
+
+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*>/));
+```
+
+A declaração `DOCTYPE` deve estar no ínicio do HTML.
+
+```js
+assert(__helpers.removeHtmlComments(code).match(/^\s*/i));
+```
+
+Você deve acrescentar uma tag de abertura ``.
+
+```js
+assert(code.match(//i));
+```
+
+Você deve acrescentar uma tag de fechamento ``.
+
+```js
+assert(code.match(/<\/head\s*>/i));
+```
+
+Você deve acrescentar uma tag de abertura ``.
+
+```js
+assert(code.match(//i));
+```
+
+Você deve acrescentar uma tag de fechamento ``.
+
+```js
+assert(code.match(/<\/body\s*>/i));
+```
+
+Os elementos `head` e `body` devem ser irmãos.
+
+```js
+assert(document.querySelector('head')?.nextElementSibling?.localName === 'body');
+```
+
+O elemento `head` deve ser filho do elemento `html`.
+
+```js
+assert([...document.querySelector('html')?.children].some(x => x?.localName === 'head'));
+```
+
+O elemento `body` deve ser filho do elemento `html`.
+
+```js
+assert([...document.querySelector('html')?.children].some(x => x?.localName === 'body'));
+```
+
+Você deve ter dois elementos `meta`.
+
+```js
+const meta = document.querySelectorAll('meta');
+assert(meta?.length === 2);
+```
+
+Um elemento `meta` deve ter o atributo `name` definido como `viewport` e o atributo `content` definido como `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') === 'width=device-width, initial-scale=1.0' && !m?.getAttribute('charset'));
+assert.exists(target);
+```
+
+O outro elemento `meta` deve ter o atributo `charset` com o valor `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/portuguese/14-responsive-web-design-22/learn-css-grid-by-building-a-magazine/614385513d91ae5c251c2052.md b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-css-grid-by-building-a-magazine/614385513d91ae5c251c2052.md
new file mode 100644
index 00000000000..da3841df1d0
--- /dev/null
+++ b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-css-grid-by-building-a-magazine/614385513d91ae5c251c2052.md
@@ -0,0 +1,102 @@
+---
+id: 614385513d91ae5c251c2052
+title: Passo 2
+challengeType: 0
+dashedName: step-2
+---
+
+# --description--
+
+Adicione um elemento `title` com o texto `Magazine`, um elemento `link` para a folha de estilo da fonte `https://fonts.googleapis.com/css?family=Anton|Baskervville|Raleway&display=swap`, um `link` para a folha de estilo do FontAwesome `https://use.fontawesome.com/releases/v5.8.2/css/all.css` e um `link` para sua folha de estilo `./styles.css`.
+
+A folha de estilos de fonte carregará três fontes separadas: `Anton`, `Baskervville`, e `Raleway`.
+
+# --hints--
+
+O código deve ter três elementos `link`.
+
+```js
+assert(code.match(//i) === null);
+```
+
+Os elementos `link` devem estar dentro do elemento `head`.
+
+```js
+const head = code.match(/(.|\r|\n)*<\/head>/i)?.[0];
+assert(head.match(/ link.getAttribute('href') === 'https://fonts.googleapis.com/css?family=Anton|Baskervville|Raleway&display=swap'));
+```
+
+Um dos elementos link deve ter o atributo `href` definido como `https://use.fontawesome.com/releases/v5.8.2/css/all.css`.
+
+```js
+const links = [...document.querySelectorAll('link')];
+assert(links.find(link => link.getAttribute('href') === 'https://use.fontawesome.com/releases/v5.8.2/css/all.css'));
+```
+
+Um dos elementos `link` deve ter o atributo `href` com o valor `styles.css`.
+
+```js
+assert.match(code, /
+
+--fcc-editable-region--
+
+
+
+
+--fcc-editable-region--
+
+
+
+```
+
+```css
+
+```
diff --git a/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-css-grid-by-building-a-magazine/6143862a5e54455d262c212e.md b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-css-grid-by-building-a-magazine/6143862a5e54455d262c212e.md
new file mode 100644
index 00000000000..5a34aa54e10
--- /dev/null
+++ b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-css-grid-by-building-a-magazine/6143862a5e54455d262c212e.md
@@ -0,0 +1,75 @@
+---
+id: 6143862a5e54455d262c212e
+title: Passo 3
+challengeType: 0
+dashedName: step-3
+---
+
+# --description--
+
+Dentro do `body`, crie um elemento `main`. Em seguida, nesse elemento, crie uma `section` com uma `class` chamada `heading`.
+
+# --hints--
+
+Você deve ter apenas um elemento `main`.
+
+```js
+assert.exists(document.querySelector('main'));
+```
+
+O elemento `main` deve estar dentro do elemento `body`.
+
+```js
+assert(document.querySelector('main')?.parentElement?.localName === 'body');
+```
+
+Você deve ter apenas um elemento `section`.
+
+```js
+assert.exists(document.querySelector('section'));
+```
+
+O elemento `section` deve estar dentro do elemento `main`.
+
+```js
+assert(document.querySelector('section')?.parentElement?.localName === 'main');
+```
+
+O elemento `section` deve ter o atributo `class` definido como `heading`.
+
+```js
+assert(document.querySelector('section')?.classList?.contains('heading'));
+```
+
+# --seed--
+
+## --seed-contents--
+
+```html
+
+
+
+
+
+ Magazine
+
+
+
+
+
+--fcc-editable-region--
+
+--fcc-editable-region--
+
+
+```
+
+```css
+
+```
diff --git a/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-css-grid-by-building-a-magazine/6143869bb45bd85e3b1926aa.md b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-css-grid-by-building-a-magazine/6143869bb45bd85e3b1926aa.md
new file mode 100644
index 00000000000..632791d3845
--- /dev/null
+++ b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-css-grid-by-building-a-magazine/6143869bb45bd85e3b1926aa.md
@@ -0,0 +1,109 @@
+---
+id: 6143869bb45bd85e3b1926aa
+title: Passo 4
+challengeType: 0
+dashedName: step-4
+---
+
+# --description--
+
+Dentro de `.heading`, crie um elemento `header` com o atributo `class` definido como `hero`.
+
+Neste elemento, crie um elemento `img` com o `src` definido como `https://cdn.freecodecamp.org/platform/universal/fcc_meta_1920X1080-indigo.png`, o `alt` definido como `freecodecamp logo`, e a `class` definida como `hero-img`.
+
+O atributo `loading` em um elemento `img` pode ser definido como `lazy` para dizer ao navegador que não carregue a imagem até que seja necessário (por exemplo, quando o usuário rola a imagem para visualização). Como um benefício adicional, os elementos carregados com atraso não serão carregados até que os elementos sem atrasdo sejam carregados - isso significa que os usuários com conexões de internet lentas podem visualizar o conteúdo da sua página sem ter que esperar o carregamento das imagens.
+
+Dê ao novo elemento `img` um atributo `loading` definido como `lazy`.
+
+# --hints--
+
+Você deve criar um elemento `header`.
+
+```js
+assert.exists(document.querySelector('header'));
+```
+
+O elemento `header` deve estar dentro do elemento `.heading`.
+
+```js
+assert(document.querySelector('header')?.parentElement?.className === 'heading');
+```
+
+O elemento `header` deve ter a `class` definida como `hero`.
+
+```js
+assert(document.querySelector('header')?.className === 'hero');
+```
+
+Você deve criar um elemento `img`.
+
+```js
+assert.exists(document.querySelector('img'));
+```
+
+O elemento `img` deve estar dentro do elemento `header`.
+
+```js
+assert(document.querySelector('img')?.parentElement?.localName === 'header');
+```
+
+O elemento `img` deve ter o `src` definido como `https://cdn.freecodecamp.org/platform/universal/fcc_meta_1920X1080-indigo.png`.
+
+```js
+assert(document.querySelector('img')?.getAttribute('src') === 'https://cdn.freecodecamp.org/platform/universal/fcc_meta_1920X1080-indigo.png');
+```
+
+O elemento `img` deve ter o atributo `alt` definido como `freecodecamp logo`.
+
+```js
+assert(document.querySelector('img')?.getAttribute('alt') === 'freecodecamp logo');
+```
+
+O elemento `img` deve ter o atributo `loading` definido como `lazy`.
+
+```js
+assert(document.querySelector('img')?.getAttribute('loading') === 'lazy');
+```
+
+O elemento `img` deve ter a `class` definida como `hero-img`.
+
+```js
+assert(document.querySelector('img')?.className === 'hero-img');
+```
+
+# --seed--
+
+## --seed-contents--
+
+```html
+
+
+
+
+
+ Magazine
+
+
+
+
+
+--fcc-editable-region--
+
+
+
+
+
+--fcc-editable-region--
+
+
+```
+
+```css
+
+```
diff --git a/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-css-grid-by-building-a-magazine/614387cbefeeba5f3654a291.md b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-css-grid-by-building-a-magazine/614387cbefeeba5f3654a291.md
new file mode 100644
index 00000000000..c530171025a
--- /dev/null
+++ b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-css-grid-by-building-a-magazine/614387cbefeeba5f3654a291.md
@@ -0,0 +1,152 @@
+---
+id: 614387cbefeeba5f3654a291
+title: Passo 7
+challengeType: 0
+dashedName: step-7
+---
+
+# --description--
+
+Após o elemento `header`, crie uma `div` com a `class` definida como `author`.
+
+Dentro dessa `div`, crie um elemento `p` com a `class` definida como `author-name` e dê a ele o texto `By freeCodeCamp`. Coloque o elemento `freeCodeCamp` dentro de um elemento `a` com o `href` definido como `https://freecodecamp.org` e o `target` definido como `_blank`.
+
+
+Abaixo disso, adicione um segundo elemento `p` com a classe `publish-date` e o texto `March 7, 2019`.
+
+# --hints--
+
+Crie um novo elemento `div`.
+
+```js
+assert.exists(document.querySelector('div'));
+```
+
+O elemento `div` deve vir depois do elemento `header`.
+
+```js
+assert(document.querySelector('div')?.previousElementSibling?.localName === 'header');
+```
+
+O elemento `div` deve ter a `class` definida como `author`.
+
+```js
+assert(document.querySelector('div')?.className === 'author');
+```
+
+Você deve criar dois novos elementos `p`.
+
+```js
+assert(document.querySelectorAll('p')?.length === 3);
+```
+
+Os dois novos elementos `p` devem estar dentro do elemento `div`.
+
+```js
+assert.exists(document.querySelector('div')?.querySelectorAll('p')?.length === 2);
+```
+
+O primeiro elemento `p` deve ter uma `class` definida como `author-name`.
+
+```js
+assert(document.querySelector('div')?.querySelector('p')?.className === 'author-name');
+```
+
+O primeiro elemento `p` deve ter o texto `By freeCodeCamp`.
+
+```js
+assert(document.querySelector('div')?.querySelector('p')?.innerText === 'By freeCodeCamp');
+```
+
+O segundo elemento `p` deve ter uma `class` definida como `publish-date`.
+
+```js
+assert(document.querySelector('div')?.querySelectorAll('p')?.[1]?.className === 'publish-date');
+```
+
+O segundo elemento `p` deve ter o texto `March 7, 2019`.
+
+```js
+assert(document.querySelector('div')?.querySelectorAll('p')?.[1]?.innerText === 'March 7, 2019');
+```
+
+Você deve criar um elemento `a`.
+
+```js
+assert.exists(document.querySelector('a'));
+```
+
+O elemento `a` deve estar dentro do primeiro elemento `p`.
+
+```js
+assert(document.querySelector('div')?.querySelector('p')?.firstElementChild?.localName === 'a');
+```
+
+O elemento `a` deve ter o `href` definido como `https://freecodecamp.org`.
+
+```js
+assert(document.querySelector('div')?.querySelector('p')?.firstElementChild?.getAttribute('href') === 'https://freecodecamp.org');
+```
+
+O elemento `a` deve ter o `target` definido como `_blank`.
+
+```js
+assert(document.querySelector('div')?.querySelector('p')?.firstElementChild?.getAttribute('target') === '_blank');
+```
+
+O elemento `a` deve envolver o texto `freeCodeCamp`.
+
+```js
+assert(document.querySelector('div')?.querySelector('p')?.firstElementChild?.textContent === 'freeCodeCamp');
+```
+
+# --seed--
+
+## --seed-contents--
+
+```html
+
+
+
+
+
+ Magazine
+
+
+
+
+
+
+
+
+
+
OUR NEW CURRICULUM
+
+ Our efforts to restructure our curriculum with a more project-based
+ focus
+
+
+--fcc-editable-region--
+
+
+
+--fcc-editable-region--
+
+
+```
+
+```css
+
+```
diff --git a/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-css-grid-by-building-a-magazine/614389f601bb4f611db98563.md b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-css-grid-by-building-a-magazine/614389f601bb4f611db98563.md
new file mode 100644
index 00000000000..93d7122969c
--- /dev/null
+++ b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-css-grid-by-building-a-magazine/614389f601bb4f611db98563.md
@@ -0,0 +1,134 @@
+---
+id: 614389f601bb4f611db98563
+title: Passo 9
+challengeType: 0
+dashedName: step-9
+---
+
+# --description--
+
+Abaixo do elemento `.author`, crie um elemento `div` com a classe `social-icons`.
+
+Adicione cinco elementos `a` dentro dessa nova `div` e dê a eles os seguintes atributos `href`.
+
+- O primeiro elemento `a` deve ter o `href` definido como `https://www.facebook.com/freecodecamp`.
+- O segundo elemento `a` deve ter o `href` definido como `https://twitter.com/freecodecamp`.
+- O terceiro elemento `a` deve ter o `href` definido como `https://instagram.com/freecodecamp`.
+- O quarto elemento `a` deve ter o `href` definido como `https://www.linkedin.com/school/free-code-camp`.
+- O quinto elemento `a` deve ter o `href` definido como `https://www.youtube.com/freecodecamp`.
+
+# --hints--
+
+Crie um elemento `div`.
+
+```js
+assert(document.querySelectorAll('div')?.length === 2);
+```
+
+O novo elemento `div` deve estar depois do elemento `.author`.
+
+```js
+assert(document.querySelector('.author')?.nextElementSibling?.localName === 'div');
+```
+
+O novo elemento `div` deve ter a classe `social-icons`.
+
+```js
+assert(document.querySelector('.author')?.nextElementSibling?.classList?.contains('social-icons'));
+```
+
+O elemento `.social-icons` deve ter cinco elementos `a`.
+
+```js
+assert(document.querySelector('.social-icons')?.querySelectorAll('a')?.length === 5);
+```
+
+O primeiro elemento `a` deve ter o `href` definido como `https://www.facebook.com/freecodecamp`.
+
+```js
+assert(document.querySelector('.social-icons')?.querySelectorAll('a')?.[0]?.getAttribute('href')?.includes('https://www.facebook.com/freecodecamp'));
+```
+
+O segundo elemento `a` deve ter o `href` definido como `https://twitter.com/freecodecamp`.
+
+```js
+assert.include(document.querySelector('.social-icons')?.querySelectorAll('a')?.[1]?.getAttribute('href'), 'https://twitter.com/freecodecamp');
+```
+
+O terceiro elemento `a` deve ter o `href` definido como `https://instagram.com/freecodecamp`.
+
+```js
+assert.include(document.querySelector('.social-icons')?.querySelectorAll('a')?.[2]?.getAttribute('href'), 'https://instagram.com/freecodecamp');
+```
+
+O quarto elemento `a` deve ter o `href` definido como `https://www.linkedin.com/school/free-code-camp`.
+
+```js
+assert.include(document.querySelector('.social-icons')?.querySelectorAll('a')?.[3]?.getAttribute('href'), 'https://www.linkedin.com/school/free-code-camp');
+```
+
+O quinto elemento `a` deve ter o `href` definido como `https://www.youtube.com/freecodecamp`.
+
+```js
+assert.include(document.querySelector('.social-icons')?.querySelectorAll('a')?.[4]?.getAttribute('href'), 'https://www.youtube.com/freecodecamp');
+```
+
+# --seed--
+
+## --seed-contents--
+
+```html
+
+
+
+
+
+ Magazine
+
+
+
+
+
+
+
+
+
+
OUR NEW CURRICULUM
+
+ Our efforts to restructure our curriculum with a more project-based
+ focus
+
+--fcc-editable-region--
+
+--fcc-editable-region--
+
+
+
+
+```
+
+```css
+
+```
diff --git a/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-css-grid-by-building-a-magazine/61438b5b66d76a6264430f2a.md b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-css-grid-by-building-a-magazine/61438b5b66d76a6264430f2a.md
new file mode 100644
index 00000000000..f648e0bfb7d
--- /dev/null
+++ b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-css-grid-by-building-a-magazine/61438b5b66d76a6264430f2a.md
@@ -0,0 +1,139 @@
+---
+id: 61438b5b66d76a6264430f2a
+title: Passo 10
+challengeType: 0
+dashedName: step-10
+---
+
+# --description--
+
+Dentro de cada um dos novos elementos `a`, adicione um elemento `i` e dê a eles as seguintes classes:
+
+- O primeiro elemento `i` deve ter a classe `fab fa-facebook-f`
+- O segundo elemento `i` deve ter a classe `fab fa-twitter`
+- O terceiro elemento `i` deve ter a classe `fab fa-instagram`
+- O quarto elemento `i` deve ter a classe `fab fa-linkedin-in`
+- O quinto elemento `i` deve ter a classe `fab fa-youtube`
+
+# --hints--
+
+Você deve ter cinco elementos `i`.
+
+```js
+assert(document.querySelectorAll('i')?.length === 5);
+```
+
+Cada elemento `a` deve ter apenas um elemento `i`.
+
+```js
+const aaaaa = [...document.querySelectorAll('.social-icons a')];
+assert(aaaaa?.every(a => a?.children?.length === 1 && a?.children?.[0]?.localName === 'i'));
+```
+
+Cada elemento `i` deve ter um atributo `class`, que inclui `fab`.
+
+```js
+const iiiii = [...document.querySelectorAll('i')];
+assert(iiiii?.every(i => i?.classList?.contains('fab')));
+```
+
+O primeiro elemento `i` deve ter um atributo `class` que inclui `fa-facebook-f`.
+
+```js
+assert(document.querySelectorAll('i')?.[0]?.classList?.contains('fa-facebook-f'));
+```
+
+O segundo elemento `i` deve ter um atributo `class` que inclui `fa-twitter`.
+
+```js
+assert(document.querySelectorAll('i')?.[1]?.classList?.contains('fa-twitter'));
+```
+
+O terceiro elemento `i` deve ter um atributo `class` que inclui `fa-instagram`.
+
+```js
+assert(document.querySelectorAll('i')?.[2]?.classList?.contains('fa-instagram'));
+```
+
+O quarto elemento `i` deve ter um atributo `class` que inclui `fa-linkedin-in`.
+
+```js
+assert(document.querySelectorAll('i')?.[3]?.classList?.contains('fa-linkedin-in'));
+```
+
+O quinto elemento `i` deve ter um atributo `class` que inclui `fa-youtube`.
+
+```js
+assert(document.querySelectorAll('i')?.[4]?.classList?.contains('fa-youtube'));
+```
+
+# --seed--
+
+## --seed-contents--
+
+```html
+
+
+
+
+
+ Magazine
+
+
+
+
+
+
+
+
+
+
OUR NEW CURRICULUM
+
+ Our efforts to restructure our curriculum with a more project-based
+ focus
+
+--fcc-editable-region--
+
+
+
+
+```
+
+```css
+
+```
diff --git a/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-css-grid-by-building-a-magazine/61438ec09438696391076d6a.md b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-css-grid-by-building-a-magazine/61438ec09438696391076d6a.md
new file mode 100644
index 00000000000..2760d44d8e1
--- /dev/null
+++ b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-css-grid-by-building-a-magazine/61438ec09438696391076d6a.md
@@ -0,0 +1,129 @@
+---
+id: 61438ec09438696391076d6a
+title: Passo 11
+challengeType: 0
+dashedName: step-11
+---
+
+# --description--
+
+Abaixo do elemento `.heading`, crie um elemento `section` com a `class` definida como `text`. Dentro dele, crie um elemento `p` com a `class` definida como `first-paragraph` e o seguinte texto:
+
+```markup
+Soon the freeCodeCamp curriculum will be 100% project-driven learning. Instead of a series of coding challenges, you'll learn through building projects - step by step. Before we get into the details, let me emphasize: we are not changing the certifications. All 6 certifications will still have the same 5 required projects. We are only changing the optional coding challenges.
+```
+
+# --hints--
+
+Você deve criar um elemento `section`.
+
+```js
+assert(document.querySelectorAll('section')?.length === 2);
+```
+
+O novo elemento `section` deve vir após o elemento `.heading`.
+
+```js
+assert(document.querySelectorAll('section')?.[1]?.previousElementSibling?.className === 'heading');
+```
+
+O novo elemento `section` deve ter a `class` definida como `text`.
+
+```js
+assert(document.querySelectorAll('section')?.[1]?.className === 'text');
+```
+
+Você deve criar um elemento `p` dentro do elemento `.text`.
+
+```js
+assert(document.querySelector('.text')?.querySelectorAll('p')?.length === 1);
+```
+
+O novo elemento `p` deve ter a `class` definida como `first-paragraph`.
+
+```js
+assert(document.querySelector('.text p')?.className === 'first-paragraph');
+```
+
+O novo elemento `p` deve ter o texto fornecido.
+
+```js
+assert(document.querySelector('.first-paragraph')?.innerText === 'Soon the freeCodeCamp curriculum will be 100% project-driven learning. Instead of a series of coding challenges, you\'ll learn through building projects - step by step. Before we get into the details, let me emphasize: we are not changing the certifications. All 6 certifications will still have the same 5 required projects. We are only changing the optional coding challenges.');
+```
+
+# --seed--
+
+## --seed-contents--
+
+```html
+
+
+
+
+
+ Magazine
+
+
+
+
+
+
+
+
+
+
OUR NEW CURRICULUM
+
+ Our efforts to restructure our curriculum with a more project-based
+ focus
+
+
+--fcc-editable-region--
+
+--fcc-editable-region--
+
+
+
+```
+
+```css
+
+```
diff --git a/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-css-grid-by-building-a-magazine/61439dc084fa5f659cf75d7c.md b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-css-grid-by-building-a-magazine/61439dc084fa5f659cf75d7c.md
new file mode 100644
index 00000000000..79480d612d9
--- /dev/null
+++ b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-css-grid-by-building-a-magazine/61439dc084fa5f659cf75d7c.md
@@ -0,0 +1,109 @@
+---
+id: 61439dc084fa5f659cf75d7c
+title: Passo 12
+challengeType: 0
+dashedName: step-12
+---
+
+# --description--
+
+Crie outro elemento `p` abaixo do seu elemento `.first-paragraph` e dê a ele o seguinte texto:
+
+```markup
+After years - years - of pondering these two problems and how to solve them, I slipped, hit my head on the sink, and when I came to I had a revelation! A vision! A picture in my head! A picture of this! This is what makes time travel possible: the flux capacitor!
+```
+
+# --hints--
+
+Você deve criar um segundo elemento `p` dentro do elemento `.text`.
+
+```js
+assert(document.querySelectorAll('.text p')?.length === 2)
+```
+
+O segundo elemento `p` deve possuir o texto fornecido.
+
+```js
+assert(document.querySelectorAll('.text p')?.[1]?.innerText === 'After years - years - of pondering these two problems and how to solve them, I slipped, hit my head on the sink, and when I came to I had a revelation! A vision! A picture in my head! A picture of this! This is what makes time travel possible: the flux capacitor!')
+```
+
+# --seed--
+
+## --seed-contents--
+
+```html
+
+
+
+
+
+ Magazine
+
+
+
+
+
+
+
+
+
+
OUR NEW CURRICULUM
+
+ Our efforts to restructure our curriculum with a more project-based
+ focus
+
+ Soon the freeCodeCamp curriculum will be 100% project-driven learning. Instead of a series of coding challenges, you'll learn through building projects - step by step. Before we get into the details, let me emphasize: we are not changing the certifications. All 6 certifications will still have the same 5 required projects. We are only changing the optional coding challenges.
+
+
+--fcc-editable-region--
+
+
+
+```
+
+```css
+
+```
diff --git a/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-css-grid-by-building-a-magazine/61439dfc811e12666b04be6f.md b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-css-grid-by-building-a-magazine/61439dfc811e12666b04be6f.md
new file mode 100644
index 00000000000..f399392affa
--- /dev/null
+++ b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-css-grid-by-building-a-magazine/61439dfc811e12666b04be6f.md
@@ -0,0 +1,113 @@
+---
+id: 61439dfc811e12666b04be6f
+title: Etapa 13
+challengeType: 0
+dashedName: step-13
+---
+
+# --description--
+
+Adicione um terceiro elemento `p` no final do elemento `.text` e dê a ele o seguinte texto:
+
+```markup
+It wasn't as dramatic as Doc's revelation in Back to the Future. It just occurred to me while I was going for a run. The revelation: the entire curriculum should be a series of projects. Instead of individual coding challenges, we'll just have projects, each with their own seamless series of tests. Each test gives you just enough information to figure out how to get it to pass. (And you can view hints if that isn't enough.)
+```
+
+# --hints--
+
+Você deve criar um terceiro elemento `p` no elemento `.text`.
+
+```js
+assert(document.querySelectorAll('.text p')?.length === 3);
+```
+
+O terceiro elemento `p` deve ter o texto fornecido.
+
+```js
+assert(document.querySelectorAll('.text p')?.[2]?.innerText === "It wasn't as dramatic as Doc's revelation in Back to the Future. It just occurred to me while I was going for a run. The revelation: the entire curriculum should be a series of projects. Instead of individual coding challenges, we'll just have projects, each with their own seamless series of tests. Each test gives you just enough information to figure out how to get it to pass. (And you can view hints if that isn't enough.)");
+```
+
+# --seed--
+
+## --seed-contents--
+
+```html
+
+
+
+
+
+ Magazine
+
+
+
+
+
+
+
+
+
+
OUR NEW CURRICULUM
+
+ Our efforts to restructure our curriculum with a more project-based
+ focus
+
+ Soon the freeCodeCamp curriculum will be 100% project-driven learning. Instead of a series of coding challenges, you'll learn through building projects - step by step. Before we get into the details, let me emphasize: we are not changing the certifications. All 6 certifications will still have the same 5 required projects. We are only changing the optional coding challenges.
+
+
+ After years - years - of pondering these two problems and how to solve them, I slipped, hit my head on the sink, and when I came to I had a revelation! A vision! A picture in my head! A picture of this! This is what makes time travel possible: the flux capacitor!
+
+--fcc-editable-region--
+
+--fcc-editable-region--
+
+
+
+
+```
+
+```css
+
+```
diff --git a/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-css-grid-by-building-a-magazine/61439e33e4fb7967609e0c83.md b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-css-grid-by-building-a-magazine/61439e33e4fb7967609e0c83.md
new file mode 100644
index 00000000000..a8efe8d8871
--- /dev/null
+++ b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-css-grid-by-building-a-magazine/61439e33e4fb7967609e0c83.md
@@ -0,0 +1,148 @@
+---
+id: 61439e33e4fb7967609e0c83
+title: Passo 14
+challengeType: 0
+dashedName: step-14
+---
+
+# --description--
+
+Após os três elementos `p` dentro do elemento `.text`, crie um elemento `blockquote`. Dentro dele, adicione um elemento `hr`, um elemento `p` com a `class` definida como `quote` e um segundo elemento `hr`.
+
+Adicione ao elemento `.quote` o texto `The entire curriculum should be a series of projects`.
+
+# --hints--
+
+Você deve criar um elemento `blockquote` dentro do elemento `.text`.
+
+```js
+assert.exists(document.querySelector('.text blockquote'));
+```
+
+O elemento `blockquote` deve vir depois dos três elementos `p`.
+
+```js
+assert(document.querySelector('.text')?.children?.[3]?.localName === 'blockquote');
+```
+
+O elemento `blockquote` deve ter dois elementos `hr`.
+
+```js
+assert(document.querySelectorAll('.text blockquote hr')?.length === 2);
+```
+
+O elemento `blockquote` deve ter um elemento `p`.
+
+```js
+assert.exists(document.querySelector('.text blockquote p'));
+```
+
+Os elementos filhos do `blockquote` devem estar na ordem correta.
+
+```js
+const children = document.querySelector('.text blockquote')?.children;
+assert(children?.[0]?.localName === 'hr');
+assert(children?.[1]?.localName === 'p');
+assert(children?.[2]?.localName === 'hr');
+```
+
+O novo elemento `p` deve ter `class` definido como `quote`.
+
+```js
+assert(document.querySelector('.text blockquote p')?.className === 'quote');
+```
+
+O novo elemento `p` deve ter o texto `The entire curriculum should be a series of projects`.
+
+```js
+assert(document.querySelector('.text blockquote p')?.innerText === 'The entire curriculum should be a series of projects');
+```
+
+# --seed--
+
+## --seed-contents--
+
+```html
+
+
+
+
+
+ Magazine
+
+
+
+
+
+
+
+
+
+
OUR NEW CURRICULUM
+
+ Our efforts to restructure our curriculum with a more project-based
+ focus
+
+ Soon the freeCodeCamp curriculum will be 100% project-driven learning. Instead of a series of coding challenges, you'll learn through building projects - step by step. Before we get into the details, let me emphasize: we are not changing the certifications. All 6 certifications will still have the same 5 required projects. We are only changing the optional coding challenges.
+
+
+ After years - years - of pondering these two problems and how to solve them, I slipped, hit my head on the sink, and when I came to I had a revelation! A vision! A picture in my head! A picture of this! This is what makes time travel possible: the flux capacitor!
+
+
+ It wasn't as dramatic as Doc's revelation in Back to the Future. It
+ just occurred to me while I was going for a run. The revelation: the entire curriculum should be a series of projects. Instead of individual coding challenges, we'll just have projects, each with their own seamless series of tests. Each test gives you just enough information to figure out how to get it to pass. (And you can view hints if that isn't enough.)
+
+--fcc-editable-region--
+
+--fcc-editable-region--
+
+
+
+
+```
+
+```css
+
+```
diff --git a/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-css-grid-by-building-a-magazine/6143a1a228f7d068ab16a130.md b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-css-grid-by-building-a-magazine/6143a1a228f7d068ab16a130.md
new file mode 100644
index 00000000000..284c78b4fd2
--- /dev/null
+++ b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-css-grid-by-building-a-magazine/6143a1a228f7d068ab16a130.md
@@ -0,0 +1,130 @@
+---
+id: 6143a1a228f7d068ab16a130
+title: Passo 15
+challengeType: 0
+dashedName: step-15
+---
+
+# --description--
+
+Abaixo do elemento `blockquote`, adicione outro elemento `p` com o seguinte texto:
+
+```markup
+No more walls of explanatory text. No more walls of tests. Just one test at a time, as you build up a working project. Over the course of passing thousands of tests, you build up projects and your own understanding of coding fundamentals. There is no transition between lessons and projects, because the lessons themselves are baked into projects. And there's plenty of repetition to help you retain everything because - hey - building projects in real life has plenty of repetition.
+```
+
+# --hints--
+
+Você deve adicionar um quarto elemento `p` no elemento `.text`.
+
+```js
+assert(document.querySelectorAll('.text p')?.length === 5);
+```
+
+O novo elemento `p` deve estar depois do elemento `blockquote`.
+
+```js
+assert(document.querySelectorAll('.text p')?.[4]?.previousElementSibling?.localName === 'blockquote');
+```
+
+O novo elemento `p` deve ter o texto fornecido.
+
+```js
+assert(document.querySelectorAll('.text p')?.[4]?.innerText === 'No more walls of explanatory text. No more walls of tests. Just one test at a time, as you build up a working project. Over the course of passing thousands of tests, you build up projects and your own understanding of coding fundamentals. There is no transition between lessons and projects, because the lessons themselves are baked into projects. And there\'s plenty of repetition to help you retain everything because - hey - building projects in real life has plenty of repetition.');
+```
+
+# --seed--
+
+## --seed-contents--
+
+```html
+
+
+
+
+
+ Magazine
+
+
+
+
+
+
+
+
+
+
OUR NEW CURRICULUM
+
+ Our efforts to restructure our curriculum with a more project-based
+ focus
+
+ Soon the freeCodeCamp curriculum will be 100% project-driven learning. Instead of a series of coding challenges, you'll learn through building projects - step by step. Before we get into the details, let me emphasize: we are not changing the certifications. All 6 certifications will still have the same 5 required projects. We are only changing the optional coding challenges.
+
+
+ After years - years - of pondering these two problems and how to solve them, I slipped, hit my head on the sink, and when I came to I had a revelation! A vision! A picture in my head! A picture of this! This is what makes time travel possible: the flux capacitor!
+
+
+ It wasn't as dramatic as Doc's revelation in Back to the Future. It
+ just occurred to me while I was going for a run. The revelation: the entire curriculum should be a series of projects. Instead of individual coding challenges, we'll just have projects, each with their own seamless series of tests. Each test gives you just enough information to figure out how to get it to pass. (And you can view hints if that isn't enough.)
+
+
+
+
+ The entire curriculum should be a series of projects
+
+
+
+--fcc-editable-region--
+
+--fcc-editable-region--
+
+
+
+
+```
+
+```css
+
+```
diff --git a/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-css-grid-by-building-a-magazine/6143a73279ce6369de4b9bcc.md b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-css-grid-by-building-a-magazine/6143a73279ce6369de4b9bcc.md
new file mode 100644
index 00000000000..a6d8635bc53
--- /dev/null
+++ b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-css-grid-by-building-a-magazine/6143a73279ce6369de4b9bcc.md
@@ -0,0 +1,128 @@
+---
+id: 6143a73279ce6369de4b9bcc
+title: Passo 16
+challengeType: 0
+dashedName: step-16
+---
+
+# --description--
+
+Crie um quinto elemento `p` no final do elemento `.text` e dê a ele o seguinte texto:
+
+```markup
+The main design challenge is taking what is currently paragraphs of explanation and instructions and packing them into a single test description text. Each project will involve dozens of tests like this. People will be coding the entire time, rather than switching back and forth from "reading mode" to "coding mode".
+```
+
+# --hints--
+
+Você deve adicionar um quinto elemento `p`.
+
+```js
+assert(document.querySelectorAll('.text p')?.length === 6);
+```
+
+O novo elemento `p` deve ter o texto fornecido.
+
+```js
+assert(document.querySelectorAll('.text p')?.[5]?.innerText === 'The main design challenge is taking what is currently paragraphs of explanation and instructions and packing them into a single test description text. Each project will involve dozens of tests like this. People will be coding the entire time, rather than switching back and forth from "reading mode" to "coding mode".');
+```
+
+# --seed--
+
+## --seed-contents--
+
+```html
+
+
+
+
+
+ Magazine
+
+
+
+
+
+
+
+
+
+
OUR NEW CURRICULUM
+
+ Our efforts to restructure our curriculum with a more project-based
+ focus
+
+ Soon the freeCodeCamp curriculum will be 100% project-driven learning. Instead of a series of coding challenges, you'll learn through building projects - step by step. Before we get into the details, let me emphasize: we are not changing the certifications. All 6 certifications will still have the same 5 required projects. We are only changing the optional coding challenges.
+
+
+ After years - years - of pondering these two problems and how to solve them, I slipped, hit my head on the sink, and when I came to I had a revelation! A vision! A picture in my head! A picture of this! This is what makes time travel possible: the flux capacitor!
+
+
+ It wasn't as dramatic as Doc's revelation in Back to the Future. It
+ just occurred to me while I was going for a run. The revelation: the entire curriculum should be a series of projects. Instead of individual coding challenges, we'll just have projects, each with their own seamless series of tests. Each test gives you just enough information to figure out how to get it to pass. (And you can view hints if that isn't enough.)
+
+
+
+
+ The entire curriculum should be a series of projects
+
+
+
+
+ No more walls of explanatory text. No more walls of tests. Just one
+ test at a time, as you build up a working project. Over the course of passing thousands of tests, you build up projects and your own understanding of coding fundamentals. There is no transition between lessons and projects, because the lessons themselves are baked into projects. And there's plenty of repetition to help you retain everything because - hey - building projects in real life has plenty of repetition.
+
+--fcc-editable-region--
+
+--fcc-editable-region--
+
+
+
+
+```
+
+```css
+
+```
diff --git a/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-css-grid-by-building-a-magazine/6143a778bffc206ac6b1dbe3.md b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-css-grid-by-building-a-magazine/6143a778bffc206ac6b1dbe3.md
new file mode 100644
index 00000000000..aa6e475fcd2
--- /dev/null
+++ b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-css-grid-by-building-a-magazine/6143a778bffc206ac6b1dbe3.md
@@ -0,0 +1,135 @@
+---
+id: 6143a778bffc206ac6b1dbe3
+title: Passo 17
+challengeType: 0
+dashedName: step-17
+---
+
+# --description--
+
+Crie um último elemento `p` no final do elemento `.text` e dê a ele o seguinte texto:
+
+```markup
+Instead of a series of coding challenges, people will be in their code
+editor passing one test after another, quickly building up a project.
+People will get into a real flow state, similar to what they
+experience when they build the required projects at the end of each
+certification. They'll get that sense of forward progress right from
+the beginning. And freeCodeCamp will be a much smoother experience.
+```
+
+# --hints--
+
+Você deve adicionar um sexto elemento `p` no elemento `.text`.
+
+```js
+assert(document.querySelectorAll('.text p')?.length === 7)
+```
+
+O sexto elemento `p` deve ter o texto fornecido.
+
+```js
+assert(document.querySelectorAll('.text p')?.[6]?.innerText === 'Instead of a series of coding challenges, people will be in their code editor passing one test after another, quickly building up a project. People will get into a real flow state, similar to what they experience when they build the required projects at the end of each certification. They\'ll get that sense of forward progress right from the beginning. And freeCodeCamp will be a much smoother experience.')
+```
+
+# --seed--
+
+## --seed-contents--
+
+```html
+
+
+
+
+
+ Magazine
+
+
+
+
+
+
+
+
+
+
OUR NEW CURRICULUM
+
+ Our efforts to restructure our curriculum with a more project-based
+ focus
+
+ Soon the freeCodeCamp curriculum will be 100% project-driven learning. Instead of a series of coding challenges, you'll learn through building projects - step by step. Before we get into the details, let me emphasize: we are not changing the certifications. All 6 certifications will still have the same 5 required projects. We are only changing the optional coding challenges.
+
+
+ After years - years - of pondering these two problems and how to solve them, I slipped, hit my head on the sink, and when I came to I had a revelation! A vision! A picture in my head! A picture of this! This is what makes time travel possible: the flux capacitor!
+
+
+ It wasn't as dramatic as Doc's revelation in Back to the Future. It
+ just occurred to me while I was going for a run. The revelation: the entire curriculum should be a series of projects. Instead of individual coding challenges, we'll just have projects, each with their own seamless series of tests. Each test gives you just enough information to figure out how to get it to pass. (And you can view hints if that isn't enough.)
+
+
+
+
+ The entire curriculum should be a series of projects
+
+
+
+
+ No more walls of explanatory text. No more walls of tests. Just one
+ test at a time, as you build up a working project. Over the course of passing thousands of tests, you build up projects and your own understanding of coding fundamentals. There is no transition between lessons and projects, because the lessons themselves are baked into projects. And there's plenty of repetition to help you retain everything because - hey - building projects in real life has plenty of repetition.
+
+
+ The main design challenge is taking what is currently paragraphs of explanation and instructions and packing them into a single test description text. Each project will involve dozens of tests like this. People will be coding the entire time, rather than switching back and forth from "reading mode" to "coding mode".
+
+
+--fcc-editable-region--
+
+
+
+```
+
+```css
+
+```
diff --git a/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-css-grid-by-building-a-magazine/6143a83fcc32c26bcfae3efa.md b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-css-grid-by-building-a-magazine/6143a83fcc32c26bcfae3efa.md
new file mode 100644
index 00000000000..018c7a1abf8
--- /dev/null
+++ b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-css-grid-by-building-a-magazine/6143a83fcc32c26bcfae3efa.md
@@ -0,0 +1,166 @@
+---
+id: 6143a83fcc32c26bcfae3efa
+title: Passo 18
+challengeType: 0
+dashedName: step-18
+---
+
+# --description--
+
+Abaixo do elemento `.text`, crie um novo elemento `section` e dê a `class` de `text text-with-images`. Dentro dele, criei um elemento `article` com a `class` definida como `brief-history` e um elemento `aside` com a `class` definida como `image-wrapper`.
+
+# --hints--
+
+Você deve criar um elemento `section`.
+
+```js
+assert(document.querySelectorAll('section')?.length === 3)
+```
+
+O novo elemento `section` deve vir após o elemento `.text`.
+
+```js
+assert(document.querySelectorAll('section')?.[2]?.previousElementSibling?.className === 'text')
+```
+
+O novo elemento `section` deve ter a `class` definida como `text text-with-images`.
+
+```js
+assert(document.querySelectorAll('section')?.[2]?.className === 'text text-with-images')
+```
+
+O novo elemento `section` deve ter um elemento `article`.
+
+```js
+assert.exists(document.querySelector('.text-with-images article'));
+```
+
+O novo elemento `section` deve ter um elemento `aside`.
+
+```js
+assert.exists(document.querySelector('.text-with-images aside'));
+```
+
+O elemento `article` deve vir antes do elemento `aside`.
+
+```js
+assert(document.querySelector('.text-with-images article')?.nextElementSibling?.localName === 'aside');
+```
+
+O elemento `article` deve ter a `class` definida como `brief-history`.
+
+```js
+assert(document.querySelector('.text-with-images article')?.className === 'brief-history');
+```
+
+O elemento `aside` deve ter a `class` definida como `image-wrapper`.
+
+```js
+assert(document.querySelector('.text-with-images aside')?.className === 'image-wrapper');
+```
+
+# --seed--
+
+## --seed-contents--
+
+```html
+
+
+
+
+
+ Magazine
+
+
+
+
+
+
+
+
+
+
OUR NEW CURRICULUM
+
+ Our efforts to restructure our curriculum with a more project-based
+ focus
+
+ Soon the freeCodeCamp curriculum will be 100% project-driven learning. Instead of a series of coding challenges, you'll learn through building projects - step by step. Before we get into the details, let me emphasize: we are not changing the certifications. All 6 certifications will still have the same 5 required projects. We are only changing the optional coding challenges.
+
+
+ After years - years - of pondering these two problems and how to solve them, I slipped, hit my head on the sink, and when I came to I had a revelation! A vision! A picture in my head! A picture of this! This is what makes time travel possible: the flux capacitor!
+
+
+ It wasn't as dramatic as Doc's revelation in Back to the Future. It
+ just occurred to me while I was going for a run. The revelation: the entire curriculum should be a series of projects. Instead of individual coding challenges, we'll just have projects, each with their own seamless series of tests. Each test gives you just enough information to figure out how to get it to pass. (And you can view hints if that isn't enough.)
+
+
+
+
+ The entire curriculum should be a series of projects
+
+
+
+
+ No more walls of explanatory text. No more walls of tests. Just one
+ test at a time, as you build up a working project. Over the course of passing thousands of tests, you build up projects and your own understanding of coding fundamentals. There is no transition between lessons and projects, because the lessons themselves are baked into projects. And there's plenty of repetition to help you retain everything because - hey - building projects in real life has plenty of repetition.
+
+
+ The main design challenge is taking what is currently paragraphs of explanation and instructions and packing them into a single test description text. Each project will involve dozens of tests like this. People will be coding the entire time, rather than switching back and forth from "reading mode" to "coding mode".
+
+
+ Instead of a series of coding challenges, people will be in their code editor passing one test after another, quickly building up a project. People will get into a real flow state, similar to what they experience when they build the required projects at the end of each certification. They'll get that sense of forward progress right from the beginning. And freeCodeCamp will be a much smoother experience.
+
+
+--fcc-editable-region--
+
+--fcc-editable-region--
+
+
+
+```
+
+```css
+
+```
diff --git a/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-css-grid-by-building-a-magazine/6143b97c06c3306d23d5da47.md b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-css-grid-by-building-a-magazine/6143b97c06c3306d23d5da47.md
new file mode 100644
index 00000000000..433f364f916
--- /dev/null
+++ b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-css-grid-by-building-a-magazine/6143b97c06c3306d23d5da47.md
@@ -0,0 +1,174 @@
+---
+id: 6143b97c06c3306d23d5da47
+title: Passo 19
+challengeType: 0
+dashedName: step-19
+---
+
+# --description--
+
+No elemento `article`, crie um elemento `h3` com a `class` definida como `list-title` e com o texto `A Brief History`. Abaixo disso, crie um elemento `p` com o texto `Of the Curriculum`. Em seguida, crie um elemento `ul` com a classe `lists`.
+
+# --hints--
+
+Você deve criar um elemento `h3` dentro do elemento `article`.
+
+```js
+assert.exists(document.querySelector('article h3'));
+```
+
+Você deve criar um elemento `p` dentro do elemento `article`.
+
+```js
+assert.exists(document.querySelector('article p'));
+```
+
+Você deve criar um elemento `ul` dentro do elemento `article`.
+
+```js
+assert.exists(document.querySelector('article ul'));
+```
+
+Os elementos dentro do elemento `article` devem estar na ordem correta.
+
+```js
+const children = document.querySelector('article')?.children;
+assert(children?.[0]?.localName === 'h3');
+assert(children?.[1]?.localName === 'p');
+assert(children?.[2]?.localName === 'ul');
+```
+
+O novo elemento `h3` deve ter a `class` definida como `list-title`.
+
+```js
+assert(document.querySelector('article h3')?.className === 'list-title');
+```
+
+O novo elemento `h3` deve ter o texto `A Brief History`.
+
+```js
+assert(document.querySelector('article h3')?.innerText === 'A Brief History');
+```
+
+O novo elemento `p` deve ter o texto `Of the Curriculum`.
+
+```js
+assert(document.querySelector('article p')?.innerText === 'Of the Curriculum');
+```
+
+O novo elemento `ul` deve ter a `class` definida como `lists`.
+
+```js
+assert(document.querySelector('article ul')?.className === 'lists');
+```
+
+# --seed--
+
+## --seed-contents--
+
+```html
+
+
+
+
+
+ Magazine
+
+
+
+
+
+
+
+
+
+
OUR NEW CURRICULUM
+
+ Our efforts to restructure our curriculum with a more project-based
+ focus
+
+ Soon the freeCodeCamp curriculum will be 100% project-driven learning. Instead of a series of coding challenges, you'll learn through building projects - step by step. Before we get into the details, let me emphasize: we are not changing the certifications. All 6 certifications will still have the same 5 required projects. We are only changing the optional coding challenges.
+
+
+ After years - years - of pondering these two problems and how to solve them, I slipped, hit my head on the sink, and when I came to I had a revelation! A vision! A picture in my head! A picture of this! This is what makes time travel possible: the flux capacitor!
+
+
+ It wasn't as dramatic as Doc's revelation in Back to the Future. It
+ just occurred to me while I was going for a run. The revelation: the entire curriculum should be a series of projects. Instead of individual coding challenges, we'll just have projects, each with their own seamless series of tests. Each test gives you just enough information to figure out how to get it to pass. (And you can view hints if that isn't enough.)
+
+
+
+
+ The entire curriculum should be a series of projects
+
+
+
+
+ No more walls of explanatory text. No more walls of tests. Just one
+ test at a time, as you build up a working project. Over the course of passing thousands of tests, you build up projects and your own understanding of coding fundamentals. There is no transition between lessons and projects, because the lessons themselves are baked into projects. And there's plenty of repetition to help you retain everything because - hey - building projects in real life has plenty of repetition.
+
+
+ The main design challenge is taking what is currently paragraphs of explanation and instructions and packing them into a single test description text. Each project will involve dozens of tests like this. People will be coding the entire time, rather than switching back and forth from "reading mode" to "coding mode".
+
+
+ Instead of a series of coding challenges, people will be in their code editor passing one test after another, quickly building up a project. People will get into a real flow state, similar to what they experience when they build the required projects at the end of each certification. They'll get that sense of forward progress right from the beginning. And freeCodeCamp will be a much smoother experience.
+
+
+
+--fcc-editable-region--
+
+
+
+--fcc-editable-region--
+
+
+
+
+
+```
+
+```css
+
+```
diff --git a/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-css-grid-by-building-a-magazine/6143b9e1f5035c6e5f2a8231.md b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-css-grid-by-building-a-magazine/6143b9e1f5035c6e5f2a8231.md
new file mode 100644
index 00000000000..bcfaf82d172
--- /dev/null
+++ b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-css-grid-by-building-a-magazine/6143b9e1f5035c6e5f2a8231.md
@@ -0,0 +1,228 @@
+---
+id: 6143b9e1f5035c6e5f2a8231
+title: Passo 20
+challengeType: 0
+dashedName: step-20
+---
+
+# --description--
+
+Dentro do elemento `ul`, crie seis elementos `li`. Adicione um elemento `h4` com a `class` definida como `list-subtitle` e um elemento `p` em cada um dos elementos `li`.
+
+Em seguida, dê aos elementos `h4` e `p` o seguinte conteúdo de texto, em ordem, com cada `h4` usando o que está do lado esquerdo dos dois-pontos e cada `p` usando o que está à direita:
+
+- `V1 - 2014`: `We launched freeCodeCamp with a simple list of 15 resources, including Harvard's CS50 and Stanford's Database Class.`
+- `V2 - 2015`: `We added interactive algorithm challenges.`
+- `V3 - 2015`: `We added our own HTML+CSS challenges (before we'd been relying on General Assembly's Dash course for these).`
+- `V4 - 2016`: `We expanded the curriculum to 3 certifications, including Front End, Back End, and Data Visualization. They each had 10 required projects, but only the Front End section had its own challenges. For the other certs, we were still using external resources like Node School.`
+- `V5 - 2017`: `We added the back end and data visualization challenges.`
+- `V6 - 2018`: `We launched 6 new certifications to replace our old ones. This was the biggest curriculum improvement to date.`
+
+# --hints--
+
+O elemento `ul` deve ter seis elementos `li`.
+
+```js
+assert(document.querySelectorAll('.lists li')?.length === 6);
+```
+
+Cada um dos elementos `li` deve tem um elemento `h4` e `p`.
+
+```js
+const lis = [...document.querySelectorAll('.lists li')];
+assert(lis?.every(li => li?.children?.[0]?.localName === 'h4' && li?.children?.[1]?.localName === 'p'));
+```
+
+O primeiro `h4` deve ter o texto `V1 - 2014`.
+
+```js
+assert(document.querySelectorAll('.lists li h4')?.[0]?.innerText === 'V1 - 2014');
+```
+
+O primeiro `p` deve ter o texto `We launched freeCodeCamp with a simple list of 15 resources, including Harvard's CS50 and Stanford's Database Class.`
+
+```js
+assert(document.querySelectorAll('.lists li p')?.[0]?.innerText === 'We launched freeCodeCamp with a simple list of 15 resources, including Harvard\'s CS50 and Stanford\'s Database Class.');
+```
+
+O segundo `h4` deve ter o texto `V2 - 2015`.
+
+```js
+assert(document.querySelectorAll('.lists li h4')?.[1]?.innerText === 'V2 - 2015');
+```
+
+O segundo `p` deve ter o texto `We added interactive algorithm challenges.`
+
+```js
+assert(document.querySelectorAll('.lists li p')?.[1]?.innerText === 'We added interactive algorithm challenges.');
+```
+
+O terceiro `h4` deve ter o texto `V3 - 2015`.
+
+```js
+assert(document.querySelectorAll('.lists li h4')?.[2]?.innerText === 'V3 - 2015');
+```
+
+O terceiro `p` deve ter o texto `We added our own HTML+CSS challenges (before we'd been relying on General Assembly's Dash course for these).`
+
+```js
+assert(document.querySelectorAll('.lists li p')?.[2]?.innerText === 'We added our own HTML+CSS challenges (before we\'d been relying on General Assembly\'s Dash course for these).');
+```
+
+O quarto `h4` deve ter o texto `V4 - 2016`.
+
+```js
+assert(document.querySelectorAll('.lists li h4')?.[3]?.innerText === 'V4 - 2016');
+```
+
+O quarto `p` deve ter o texto `We expanded the curriculum to 3 certifications, including Front End, Back End, and Data Visualization. They each had 10 required projects, but only the Front End section had its own challenges. For the other certs, we were still using external resources like Node School`.
+
+```js
+assert(document.querySelectorAll('.lists li p')?.[3]?.innerText === 'We expanded the curriculum to 3 certifications, including Front End, Back End, and Data Visualization. They each had 10 required projects, but only the Front End section had its own challenges. For the other certs, we were still using external resources like Node School.');
+```
+
+O quinto `h4` deve ter o texto `V5 - 2017`.
+
+```js
+assert(document.querySelectorAll('.lists li h4')?.[4]?.innerText === 'V5 - 2017');
+```
+
+O quinto `p` deve ter o texto `We added the back end and data visualization challenges.`
+
+```js
+assert(document.querySelectorAll('.lists li p')?.[4]?.innerText === 'We added the back end and data visualization challenges.');
+```
+
+O sexto `h4` deve ter o texto `V6 - 2018`.
+
+```js
+assert(document.querySelectorAll('.lists li h4')?.[5]?.innerText === 'V6 - 2018');
+```
+
+O sexto `p` deve ter o texto `We launched 6 new certifications to replace our old ones. This was the biggest curriculum improvement to date.`
+
+```js
+assert(document.querySelectorAll('.lists li p')?.[5]?.innerText === 'We launched 6 new certifications to replace our old ones. This was the biggest curriculum improvement to date.');
+```
+
+O seis elementos `h4` devem ter a classe `list-subtitle`.
+
+```js
+const h4s = [...document.querySelectorAll('.lists li h4')];
+assert(h4s?.every(h4 => h4?.classList?.contains('list-subtitle')));
+```
+
+# --seed--
+
+## --seed-contents--
+
+```html
+
+
+
+
+
+ Magazine
+
+
+
+
+
+
+
+
+
+
OUR NEW CURRICULUM
+
+ Our efforts to restructure our curriculum with a more project-based
+ focus
+
+ Soon the freeCodeCamp curriculum will be 100% project-driven learning. Instead of a series of coding challenges, you'll learn through building projects - step by step. Before we get into the details, let me emphasize: we are not changing the certifications. All 6 certifications will still have the same 5 required projects. We are only changing the optional coding challenges.
+
+
+ After years - years - of pondering these two problems and how to solve them, I slipped, hit my head on the sink, and when I came to I had a revelation! A vision! A picture in my head! A picture of this! This is what makes time travel possible: the flux capacitor!
+
+
+ It wasn't as dramatic as Doc's revelation in Back to the Future. It
+ just occurred to me while I was going for a run. The revelation: the entire curriculum should be a series of projects. Instead of individual coding challenges, we'll just have projects, each with their own seamless series of tests. Each test gives you just enough information to figure out how to get it to pass. (And you can view hints if that isn't enough.)
+
+
+
+
+ The entire curriculum should be a series of projects
+
+
+
+
+ No more walls of explanatory text. No more walls of tests. Just one
+ test at a time, as you build up a working project. Over the course of passing thousands of tests, you build up projects and your own understanding of coding fundamentals. There is no transition between lessons and projects, because the lessons themselves are baked into projects. And there's plenty of repetition to help you retain everything because - hey - building projects in real life has plenty of repetition.
+
+
+ The main design challenge is taking what is currently paragraphs of explanation and instructions and packing them into a single test description text. Each project will involve dozens of tests like this. People will be coding the entire time, rather than switching back and forth from "reading mode" to "coding mode".
+
+
+ Instead of a series of coding challenges, people will be in their code editor passing one test after another, quickly building up a project. People will get into a real flow state, similar to what they experience when they build the required projects at the end of each certification. They'll get that sense of forward progress right from the beginning. And freeCodeCamp will be a much smoother experience.
+
+
+
+--fcc-editable-region--
+
+
A Brief History
+
Of the Curriculum
+
+
+
+
+--fcc-editable-region--
+
+
+
+
+
+```
+
+```css
+
+```
diff --git a/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-css-grid-by-building-a-magazine/6143bb50e8e48c6f5ef9d8d5.md b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-css-grid-by-building-a-magazine/6143bb50e8e48c6f5ef9d8d5.md
new file mode 100644
index 00000000000..9a52e8355bc
--- /dev/null
+++ b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-css-grid-by-building-a-magazine/6143bb50e8e48c6f5ef9d8d5.md
@@ -0,0 +1,195 @@
+---
+id: 6143bb50e8e48c6f5ef9d8d5
+title: Passo 21
+challengeType: 0
+dashedName: step-21
+---
+
+# --description--
+
+Dentro do elemento `aside`, crie dois elementos `img`, um elemento `blockquote` e um terceiro elemento `img`. Dê ao elemento `blockquote` uma `class` definida como `image-quote`.
+
+# --hints--
+
+Você deve criar três elementos `img` dentro de seu elemento `aside`.
+
+```js
+assert(document.querySelectorAll('aside img')?.length === 3);
+```
+
+Você deve criar um elemento `blockquote` dentro de seu elemento `aside`.
+
+```js
+assert.exists(document.querySelector('aside blockquote'));
+```
+
+O elemento `blockquote` deve ter uma `class` definida como `image-quote`.
+
+```js
+assert(document.querySelector('aside blockquote')?.classList?.contains('image-quote'));
+```
+
+Os novos elementos devem estar na ordem correta.
+
+```js
+const children = document.querySelector('aside')?.children;
+assert(children?.[0]?.localName === 'img');
+assert(children?.[1]?.localName === 'img');
+assert(children?.[2]?.localName === 'blockquote');
+assert(children?.[3]?.localName === 'img');
+```
+
+# --seed--
+
+## --seed-contents--
+
+```html
+
+
+
+
+
+ Magazine
+
+
+
+
+
+
+
+
+
+
OUR NEW CURRICULUM
+
+ Our efforts to restructure our curriculum with a more project-based
+ focus
+
+ Soon the freeCodeCamp curriculum will be 100% project-driven learning. Instead of a series of coding challenges, you'll learn through building projects - step by step. Before we get into the details, let me emphasize: we are not changing the certifications. All 6 certifications will still have the same 5 required projects. We are only changing the optional coding challenges.
+
+
+ After years - years - of pondering these two problems and how to solve them, I slipped, hit my head on the sink, and when I came to I had a revelation! A vision! A picture in my head! A picture of this! This is what makes time travel possible: the flux capacitor!
+
+
+ It wasn't as dramatic as Doc's revelation in Back to the Future. It
+ just occurred to me while I was going for a run. The revelation: the entire curriculum should be a series of projects. Instead of individual coding challenges, we'll just have projects, each with their own seamless series of tests. Each test gives you just enough information to figure out how to get it to pass. (And you can view hints if that isn't enough.)
+
+
+
+
+ The entire curriculum should be a series of projects
+
+
+
+
+ No more walls of explanatory text. No more walls of tests. Just one
+ test at a time, as you build up a working project. Over the course of passing thousands of tests, you build up projects and your own understanding of coding fundamentals. There is no transition between lessons and projects, because the lessons themselves are baked into projects. And there's plenty of repetition to help you retain everything because - hey - building projects in real life has plenty of repetition.
+
+
+ The main design challenge is taking what is currently paragraphs of explanation and instructions and packing them into a single test description text. Each project will involve dozens of tests like this. People will be coding the entire time, rather than switching back and forth from "reading mode" to "coding mode".
+
+
+ Instead of a series of coding challenges, people will be in their code editor passing one test after another, quickly building up a project. People will get into a real flow state, similar to what they experience when they build the required projects at the end of each certification. They'll get that sense of forward progress right from the beginning. And freeCodeCamp will be a much smoother experience.
+
+
+
+
+
A Brief History
+
Of the Curriculum
+
+
+
V1 - 2014
+
+ We launched freeCodeCamp with a simple list of 15 resources,
+ including Harvard's CS50 and Stanford's Database Class.
+
+
+
+
V2 - 2015
+
We added interactive algorithm challenges.
+
+
+
V3 - 2015
+
+ We added our own HTML+CSS challenges (before we'd been relying
+ on General Assembly's Dash course for these).
+
+
+
+
V4 - 2016
+
+ We expanded the curriculum to 3 certifications, including Front
+ End, Back End, and Data Visualization. They each had 10 required
+ projects, but only the Front End section had its own challenges.
+ For the other certs, we were still using external resources like
+ Node School.
+
+
+
+
V5 - 2017
+
We added the back end and data visualization challenges.
+
+
+
V6 - 2018
+
+ We launched 6 new certifications to replace our old ones. This
+ was the biggest curriculum improvement to date.
+
+
+
+
+--fcc-editable-region--
+
+--fcc-editable-region--
+
+
+
+
+```
+
+```css
+
+```
diff --git a/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-css-grid-by-building-a-magazine/6143c2a363865c715f1a3f72.md b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-css-grid-by-building-a-magazine/6143c2a363865c715f1a3f72.md
new file mode 100644
index 00000000000..0959e9c74ff
--- /dev/null
+++ b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-css-grid-by-building-a-magazine/6143c2a363865c715f1a3f72.md
@@ -0,0 +1,206 @@
+---
+id: 6143c2a363865c715f1a3f72
+title: Passo 22
+challengeType: 0
+dashedName: step-22
+---
+
+# --description--
+
+Dentro do elemento `.image-wrapper`, dê ao primeiro elemento `img` um `src` com `https://cdn.freecodecamp.org/testable-projects-fcc/images/random-quote-machine.png`, um `alt` com `image of the quote machine project`, uma `class` com `image-1`, um atributo `loading` definido como `lazy`, um atributo `width` de `600` e um atributo `height` de `400`.
+
+# --hints--
+
+O primeiro elemento `img` deve ter o atributo `src` definido como `https://cdn.freecodecamp.org/testable-projects-fcc/images/random-quote-machine.png`.
+
+```js
+assert(document.querySelectorAll('.image-wrapper img')?.[0]?.getAttribute('src') === 'https://cdn.freecodecamp.org/testable-projects-fcc/images/random-quote-machine.png');
+```
+
+O primeiro elemento `img` deve ter o atributo `alt` definido como `image of the quote machine project`.
+
+```js
+assert(document.querySelectorAll('.image-wrapper img')?.[0]?.getAttribute('alt') === 'image of the quote machine project');
+```
+
+O primeiro elemento `img` deve ter o atributo `class` definido como `image-1`.
+
+```js
+assert(document.querySelectorAll('.image-wrapper img')?.[0]?.classList?.contains('image-1'));
+```
+
+O primeiro elemento `img` deve ter o atributo `loading` definido como `lazy`.
+
+```js
+assert(document.querySelectorAll('.image-wrapper img')?.[0]?.getAttribute('loading') === 'lazy');
+```
+
+O primeiro elemento `img` deve ter o atributo `width` definido como `600`.
+
+```js
+assert(document.querySelectorAll('.image-wrapper img')?.[0]?.getAttribute('width') === '600');
+```
+
+O primeiro elemento `img` deve ter o atributo `height` definido como `400`.
+
+```js
+assert(document.querySelectorAll('.image-wrapper img')?.[0]?.getAttribute('height') === '400');
+```
+
+# --seed--
+
+## --seed-contents--
+
+```html
+
+
+
+
+
+ Magazine
+
+
+
+
+
+
+
+
+
+
OUR NEW CURRICULUM
+
+ Our efforts to restructure our curriculum with a more project-based
+ focus
+
+ Soon the freeCodeCamp curriculum will be 100% project-driven learning. Instead of a series of coding challenges, you'll learn through building projects - step by step. Before we get into the details, let me emphasize: we are not changing the certifications. All 6 certifications will still have the same 5 required projects. We are only changing the optional coding challenges.
+
+
+ After years - years - of pondering these two problems and how to solve them, I slipped, hit my head on the sink, and when I came to I had a revelation! A vision! A picture in my head! A picture of this! This is what makes time travel possible: the flux capacitor!
+
+
+ It wasn't as dramatic as Doc's revelation in Back to the Future. It
+ just occurred to me while I was going for a run. The revelation: the entire curriculum should be a series of projects. Instead of individual coding challenges, we'll just have projects, each with their own seamless series of tests. Each test gives you just enough information to figure out how to get it to pass. (And you can view hints if that isn't enough.)
+
+
+
+
+ The entire curriculum should be a series of projects
+
+
+
+
+ No more walls of explanatory text. No more walls of tests. Just one
+ test at a time, as you build up a working project. Over the course of passing thousands of tests, you build up projects and your own understanding of coding fundamentals. There is no transition between lessons and projects, because the lessons themselves are baked into projects. And there's plenty of repetition to help you retain everything because - hey - building projects in real life has plenty of repetition.
+
+
+ The main design challenge is taking what is currently paragraphs of explanation and instructions and packing them into a single test description text. Each project will involve dozens of tests like this. People will be coding the entire time, rather than switching back and forth from "reading mode" to "coding mode".
+
+
+ Instead of a series of coding challenges, people will be in their code editor passing one test after another, quickly building up a project. People will get into a real flow state, similar to what they experience when they build the required projects at the end of each certification. They'll get that sense of forward progress right from the beginning. And freeCodeCamp will be a much smoother experience.
+
+
+
+
+
A Brief History
+
Of the Curriculum
+
+
+
V1 - 2014
+
+ We launched freeCodeCamp with a simple list of 15 resources,
+ including Harvard's CS50 and Stanford's Database Class.
+
+
+
+
V2 - 2015
+
We added interactive algorithm challenges.
+
+
+
V3 - 2015
+
+ We added our own HTML+CSS challenges (before we'd been relying
+ on General Assembly's Dash course for these).
+
+
+
+
V4 - 2016
+
+ We expanded the curriculum to 3 certifications, including Front
+ End, Back End, and Data Visualization. They each had 10 required
+ projects, but only the Front End section had its own challenges.
+ For the other certs, we were still using external resources like
+ Node School.
+
+
+
+
V5 - 2017
+
We added the back end and data visualization challenges.
+
+
+
V6 - 2018
+
+ We launched 6 new certifications to replace our old ones. This
+ was the biggest curriculum improvement to date.
+
+
+
+
+--fcc-editable-region--
+
+--fcc-editable-region--
+
+
+
+
+```
+
+```css
+
+```
diff --git a/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-css-grid-by-building-a-magazine/6143cd08fe927072ca3a371d.md b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-css-grid-by-building-a-magazine/6143cd08fe927072ca3a371d.md
new file mode 100644
index 00000000000..7767576ea11
--- /dev/null
+++ b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-css-grid-by-building-a-magazine/6143cd08fe927072ca3a371d.md
@@ -0,0 +1,213 @@
+---
+id: 6143cd08fe927072ca3a371d
+title: Passo 23
+challengeType: 0
+dashedName: step-23
+---
+
+# --description--
+
+Dentro do elemento `.image-wrapper`, dê ao segundo elemento `img` um `src` com `https://cdn.freecodecamp.org/testable-projects-fcc/images/calc.png`, um `alt` com `image of a calculator project`, um atributo `loading` definido como `lazy`, uma `class` definida como `image-2`, um atributo `width` definido como `400` e um atributo `height` definido como `400`.
+
+# --hints--
+
+O segundo elemento `img` deve ter o `src` definido como `https://cdn.freecodecamp.org/testable-projects-fcc/images/calc.png`.
+
+```js
+assert(document.querySelectorAll('.image-wrapper img')?.[1]?.getAttribute('src') === 'https://cdn.freecodecamp.org/testable-projects-fcc/images/calc.png');
+```
+
+O segundo elemento `img` deve ter o `alt` definido como `image of a calculator project`.
+
+```js
+assert(document.querySelectorAll('.image-wrapper img')?.[1]?.getAttribute('alt') === 'image of a calculator project');
+```
+
+O segundo elemento `img` deve ter o atributo `loading` definido como `lazy`.
+
+```js
+assert(document.querySelectorAll('.image-wrapper img')?.[1]?.getAttribute('loading') === 'lazy');
+```
+
+O segundo elemento `img` deve ter a `class` definida como `image-2`.
+
+```js
+assert(document.querySelectorAll('.image-wrapper img')?.[1]?.classList?.contains('image-2'));
+```
+
+O segundo elemento `img` deve ter a `width` definida como `400`.
+
+```js
+assert(document.querySelectorAll('.image-wrapper img')?.[1]?.getAttribute('width') === '400');
+```
+
+O segundo elemento `img` deve ter a `height` definida como `400`.
+
+```js
+assert(document.querySelectorAll('.image-wrapper img')?.[1]?.getAttribute('height') === '400');
+```
+
+# --seed--
+
+## --seed-contents--
+
+```html
+
+
+
+
+
+ Magazine
+
+
+
+
+
+
+
+
+
+
OUR NEW CURRICULUM
+
+ Our efforts to restructure our curriculum with a more project-based
+ focus
+
+ Soon the freeCodeCamp curriculum will be 100% project-driven learning. Instead of a series of coding challenges, you'll learn through building projects - step by step. Before we get into the details, let me emphasize: we are not changing the certifications. All 6 certifications will still have the same 5 required projects. We are only changing the optional coding challenges.
+
+
+ After years - years - of pondering these two problems and how to solve them, I slipped, hit my head on the sink, and when I came to I had a revelation! A vision! A picture in my head! A picture of this! This is what makes time travel possible: the flux capacitor!
+
+
+ It wasn't as dramatic as Doc's revelation in Back to the Future. It
+ just occurred to me while I was going for a run. The revelation: the entire curriculum should be a series of projects. Instead of individual coding challenges, we'll just have projects, each with their own seamless series of tests. Each test gives you just enough information to figure out how to get it to pass. (And you can view hints if that isn't enough.)
+
+
+
+
+ The entire curriculum should be a series of projects
+
+
+
+
+ No more walls of explanatory text. No more walls of tests. Just one
+ test at a time, as you build up a working project. Over the course of passing thousands of tests, you build up projects and your own understanding of coding fundamentals. There is no transition between lessons and projects, because the lessons themselves are baked into projects. And there's plenty of repetition to help you retain everything because - hey - building projects in real life has plenty of repetition.
+
+
+ The main design challenge is taking what is currently paragraphs of explanation and instructions and packing them into a single test description text. Each project will involve dozens of tests like this. People will be coding the entire time, rather than switching back and forth from "reading mode" to "coding mode".
+
+
+ Instead of a series of coding challenges, people will be in their code editor passing one test after another, quickly building up a project. People will get into a real flow state, similar to what they experience when they build the required projects at the end of each certification. They'll get that sense of forward progress right from the beginning. And freeCodeCamp will be a much smoother experience.
+
+
+
+
+
A Brief History
+
Of the Curriculum
+
+
+
V1 - 2014
+
+ We launched freeCodeCamp with a simple list of 15 resources,
+ including Harvard's CS50 and Stanford's Database Class.
+
+
+
+
V2 - 2015
+
We added interactive algorithm challenges.
+
+
+
V3 - 2015
+
+ We added our own HTML+CSS challenges (before we'd been relying
+ on General Assembly's Dash course for these).
+
+
+
+
V4 - 2016
+
+ We expanded the curriculum to 3 certifications, including Front
+ End, Back End, and Data Visualization. They each had 10 required
+ projects, but only the Front End section had its own challenges.
+ For the other certs, we were still using external resources like
+ Node School.
+
+
+
+
V5 - 2017
+
We added the back end and data visualization challenges.
+
+
+
V6 - 2018
+
+ We launched 6 new certifications to replace our old ones. This
+ was the biggest curriculum improvement to date.
+
+
+
+
+--fcc-editable-region--
+
+--fcc-editable-region--
+
+
+
+
+```
+
+```css
+
+```
diff --git a/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-css-grid-by-building-a-magazine/6143cdf48b634a747de42104.md b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-css-grid-by-building-a-magazine/6143cdf48b634a747de42104.md
new file mode 100644
index 00000000000..d405e044fb8
--- /dev/null
+++ b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-css-grid-by-building-a-magazine/6143cdf48b634a747de42104.md
@@ -0,0 +1,220 @@
+---
+id: 6143cdf48b634a747de42104
+title: Passo 24
+challengeType: 0
+dashedName: step-24
+---
+
+# --description--
+
+Dentro do elemento `.image-wrapper`, dê ao terceiro elemento `img` um `src` de `https://cdn.freecodecamp.org/testable-projects-fcc/images/survey-form-background.jpeg`, um `alt` de `four people working on code`, um atributo `loading` de `lazy`, uma `class` definida como `image-3`, um atributo `width` definido como `600` e um atributo `height` definido como `400`.
+
+# --hints--
+
+O terceiro elemento `img` deve ter o `src` definido como `https://cdn.freecodecamp.org/testable-projects-fcc/images/survey-form-background.jpeg`.
+
+```js
+assert(document.querySelectorAll('.image-wrapper img')?.[2]?.getAttribute('src') === 'https://cdn.freecodecamp.org/testable-projects-fcc/images/survey-form-background.jpeg');
+```
+
+O terceiro elemento `img` deve ter o `alt` definido como `four people working on code`.
+
+```js
+assert(document.querySelectorAll('.image-wrapper img')?.[2]?.getAttribute('alt') === 'four people working on code');
+```
+
+O terceiro elemento `img` deve ter o atributo `loading` definido como `lazy`.
+
+```js
+assert(document.querySelectorAll('.image-wrapper img')?.[2]?.getAttribute('loading') === 'lazy');
+```
+
+O terceiro elemento `img` deve ter a `class` definida como `image-3`.
+
+```js
+assert(document.querySelectorAll('.image-wrapper img')?.[2]?.classList?.contains('image-3'));
+```
+
+O terceiro elemento `img` deve ter o atributo `width` definido como `600`.
+
+```js
+assert(document.querySelectorAll('.image-wrapper img')?.[2]?.getAttribute('width') === '600');
+```
+
+O terceiro elemento `img` deve ter o atributo `height` definido como `400`.
+
+```js
+assert(document.querySelectorAll('.image-wrapper img')?.[2]?.getAttribute('height') === '400');
+```
+
+# --seed--
+
+## --seed-contents--
+
+```html
+
+
+
+
+
+ Magazine
+
+
+
+
+
+
+
+
+
+
OUR NEW CURRICULUM
+
+ Our efforts to restructure our curriculum with a more project-based
+ focus
+
+ Soon the freeCodeCamp curriculum will be 100% project-driven learning. Instead of a series of coding challenges, you'll learn through building projects - step by step. Before we get into the details, let me emphasize: we are not changing the certifications. All 6 certifications will still have the same 5 required projects. We are only changing the optional coding challenges.
+
+
+ After years - years - of pondering these two problems and how to solve them, I slipped, hit my head on the sink, and when I came to I had a revelation! A vision! A picture in my head! A picture of this! This is what makes time travel possible: the flux capacitor!
+
+
+ It wasn't as dramatic as Doc's revelation in Back to the Future. It
+ just occurred to me while I was going for a run. The revelation: the entire curriculum should be a series of projects. Instead of individual coding challenges, we'll just have projects, each with their own seamless series of tests. Each test gives you just enough information to figure out how to get it to pass. (And you can view hints if that isn't enough.)
+
+
+
+
+ The entire curriculum should be a series of projects
+
+
+
+
+ No more walls of explanatory text. No more walls of tests. Just one
+ test at a time, as you build up a working project. Over the course of passing thousands of tests, you build up projects and your own understanding of coding fundamentals. There is no transition between lessons and projects, because the lessons themselves are baked into projects. And there's plenty of repetition to help you retain everything because - hey - building projects in real life has plenty of repetition.
+
+
+ The main design challenge is taking what is currently paragraphs of explanation and instructions and packing them into a single test description text. Each project will involve dozens of tests like this. People will be coding the entire time, rather than switching back and forth from "reading mode" to "coding mode".
+
+
+ Instead of a series of coding challenges, people will be in their code editor passing one test after another, quickly building up a project. People will get into a real flow state, similar to what they experience when they build the required projects at the end of each certification. They'll get that sense of forward progress right from the beginning. And freeCodeCamp will be a much smoother experience.
+
+
+
+
+
A Brief History
+
Of the Curriculum
+
+
+
V1 - 2014
+
+ We launched freeCodeCamp with a simple list of 15 resources,
+ including Harvard's CS50 and Stanford's Database Class.
+
+
+
+
V2 - 2015
+
We added interactive algorithm challenges.
+
+
+
V3 - 2015
+
+ We added our own HTML+CSS challenges (before we'd been relying
+ on General Assembly's Dash course for these).
+
+
+
+
V4 - 2016
+
+ We expanded the curriculum to 3 certifications, including Front
+ End, Back End, and Data Visualization. They each had 10 required
+ projects, but only the Front End section had its own challenges.
+ For the other certs, we were still using external resources like
+ Node School.
+
+
+
+
V5 - 2017
+
We added the back end and data visualization challenges.
+
+
+
V6 - 2018
+
+ We launched 6 new certifications to replace our old ones. This
+ was the biggest curriculum improvement to date.
+
+
+
+
+
+
+
+
+
+```
+
+```css
+
+```
diff --git a/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-css-grid-by-building-a-magazine/6143d003ad9e9d76766293ec.md b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-css-grid-by-building-a-magazine/6143d003ad9e9d76766293ec.md
new file mode 100644
index 00000000000..208f098b95b
--- /dev/null
+++ b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-css-grid-by-building-a-magazine/6143d003ad9e9d76766293ec.md
@@ -0,0 +1,226 @@
+---
+id: 6143d003ad9e9d76766293ec
+title: Passo 25
+challengeType: 0
+dashedName: step-25
+---
+
+# --description--
+
+Dentro do elemento `.image-quote`, aninhe um elemento `hr`, um elemento `p` e um segundo elemento `hr`. Dê ao elemento `p` uma `class` definida como `quote` e o texto `The millions of people who are learning to code through freeCodeCamp will have an even better resource to help them learn these fundamentals.`.
+
+# --hints--
+
+Você deve adicionar dois elementos `hr` no elemento `.image-quote`.
+
+```js
+assert(document.querySelectorAll('.image-quote hr')?.length === 2);
+```
+
+Você deve adicionar um elemento `p` no elemento `.image-quote`.
+
+```js
+assert(document.querySelectorAll('.image-quote p')?.length === 1);
+```
+
+Os filhos de `.image-quote` devem estar na ordem correta.
+
+```js
+const children = document.querySelector('.image-quote')?.children;
+assert(children?.[0]?.localName === 'hr');
+assert(children?.[1]?.localName === 'p');
+assert(children?.[2]?.localName === 'hr');
+```
+
+O novo elemento `p` deve ter a `class` definida como `quote`.
+
+```js
+assert(document.querySelector('.image-quote p')?.classList.contains('quote'));
+```
+
+O novo elemento `p` deve ter o texto `The millions of people who are learning to code through freeCodeCamp will have an even better resource to help them learn these fundamentals.`.
+
+```js
+assert(document.querySelector('.image-quote p')?.innerText === 'The millions of people who are learning to code through freeCodeCamp will have an even better resource to help them learn these fundamentals.');
+```
+
+# --seed--
+
+## --seed-contents--
+
+```html
+
+
+
+
+
+ Magazine
+
+
+
+
+
+
+
+
+
+
OUR NEW CURRICULUM
+
+ Our efforts to restructure our curriculum with a more project-based
+ focus
+
+ Soon the freeCodeCamp curriculum will be 100% project-driven learning. Instead of a series of coding challenges, you'll learn through building projects - step by step. Before we get into the details, let me emphasize: we are not changing the certifications. All 6 certifications will still have the same 5 required projects. We are only changing the optional coding challenges.
+
+
+ After years - years - of pondering these two problems and how to solve them, I slipped, hit my head on the sink, and when I came to I had a revelation! A vision! A picture in my head! A picture of this! This is what makes time travel possible: the flux capacitor!
+
+
+ It wasn't as dramatic as Doc's revelation in Back to the Future. It
+ just occurred to me while I was going for a run. The revelation: the entire curriculum should be a series of projects. Instead of individual coding challenges, we'll just have projects, each with their own seamless series of tests. Each test gives you just enough information to figure out how to get it to pass. (And you can view hints if that isn't enough.)
+
+
+
+
+ The entire curriculum should be a series of projects
+
+
+
+
+ No more walls of explanatory text. No more walls of tests. Just one
+ test at a time, as you build up a working project. Over the course of passing thousands of tests, you build up projects and your own understanding of coding fundamentals. There is no transition between lessons and projects, because the lessons themselves are baked into projects. And there's plenty of repetition to help you retain everything because - hey - building projects in real life has plenty of repetition.
+
+
+ The main design challenge is taking what is currently paragraphs of explanation and instructions and packing them into a single test description text. Each project will involve dozens of tests like this. People will be coding the entire time, rather than switching back and forth from "reading mode" to "coding mode".
+
+
+ Instead of a series of coding challenges, people will be in their code editor passing one test after another, quickly building up a project. People will get into a real flow state, similar to what they experience when they build the required projects at the end of each certification. They'll get that sense of forward progress right from the beginning. And freeCodeCamp will be a much smoother experience.
+
+
+
+
+
A Brief History
+
Of the Curriculum
+
+
+
V1 - 2014
+
+ We launched freeCodeCamp with a simple list of 15 resources,
+ including Harvard's CS50 and Stanford's Database Class.
+
+
+
+
V2 - 2015
+
We added interactive algorithm challenges.
+
+
+
V3 - 2015
+
+ We added our own HTML+CSS challenges (before we'd been relying
+ on General Assembly's Dash course for these).
+
+
+
+
V4 - 2016
+
+ We expanded the curriculum to 3 certifications, including Front
+ End, Back End, and Data Visualization. They each had 10 required
+ projects, but only the Front End section had its own challenges.
+ For the other certs, we were still using external resources like
+ Node School.
+
+
+
+
V5 - 2017
+
We added the back end and data visualization challenges.
+
+
+
V6 - 2018
+
+ We launched 6 new certifications to replace our old ones. This
+ was the biggest curriculum improvement to date.
+
+
+
+
+
+
+
+
+
+```
+
+```css
+
+```
diff --git a/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-css-grid-by-building-a-magazine/6143d2842b497779bad947de.md b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-css-grid-by-building-a-magazine/6143d2842b497779bad947de.md
new file mode 100644
index 00000000000..01b1aadf0a7
--- /dev/null
+++ b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-css-grid-by-building-a-magazine/6143d2842b497779bad947de.md
@@ -0,0 +1,217 @@
+---
+id: 6143d2842b497779bad947de
+title: Passo 26
+challengeType: 0
+dashedName: step-26
+---
+
+# --description--
+
+Para iniciar seu CSS, normalize as regras do CSS tendo como destino todos os elementos com `*`, incluindo os pseudosseletores `::before` e `::after`. Defina as propriedades `padding` e `margin` como `0`.
+
+# --hints--
+
+Você deve ter o seletor `*, ::before, ::after`.
+
+```js
+assert(new __helpers.CSSHelp(document).getStyle('*, ::before, ::after'));
+```
+
+O seletor `*, ::before, ::after` deve ter a propriedade `padding` definida como `0`.
+
+```js
+assert(new __helpers.CSSHelp(document).getStyle('*, ::before, ::after')?.padding === '0px');
+```
+
+O seletor `*, ::before, ::after` deve ter a propriedade `margin` definida como `0`.
+
+```js
+assert(new __helpers.CSSHelp(document).getStyle('*, ::before, ::after')?.margin === '0px');
+```
+
+# --seed--
+
+## --seed-contents--
+
+```html
+
+
+
+
+
+ Magazine
+
+
+
+
+
+
+
+
+
+
OUR NEW CURRICULUM
+
+ Our efforts to restructure our curriculum with a more project-based
+ focus
+
+ Soon the freeCodeCamp curriculum will be 100% project-driven learning. Instead of a series of coding challenges, you'll learn through building projects - step by step. Before we get into the details, let me emphasize: we are not changing the certifications. All 6 certifications will still have the same 5 required projects. We are only changing the optional coding challenges.
+
+
+ After years - years - of pondering these two problems and how to solve them, I slipped, hit my head on the sink, and when I came to I had a revelation! A vision! A picture in my head! A picture of this! This is what makes time travel possible: the flux capacitor!
+
+
+ It wasn't as dramatic as Doc's revelation in Back to the Future. It
+ just occurred to me while I was going for a run. The revelation: the entire curriculum should be a series of projects. Instead of individual coding challenges, we'll just have projects, each with their own seamless series of tests. Each test gives you just enough information to figure out how to get it to pass. (And you can view hints if that isn't enough.)
+
+
+
+
+ The entire curriculum should be a series of projects
+
+
+
+
+ No more walls of explanatory text. No more walls of tests. Just one
+ test at a time, as you build up a working project. Over the course of passing thousands of tests, you build up projects and your own understanding of coding fundamentals. There is no transition between lessons and projects, because the lessons themselves are baked into projects. And there's plenty of repetition to help you retain everything because - hey - building projects in real life has plenty of repetition.
+
+
+ The main design challenge is taking what is currently paragraphs of explanation and instructions and packing them into a single test description text. Each project will involve dozens of tests like this. People will be coding the entire time, rather than switching back and forth from "reading mode" to "coding mode".
+
+
+ Instead of a series of coding challenges, people will be in their code editor passing one test after another, quickly building up a project. People will get into a real flow state, similar to what they experience when they build the required projects at the end of each certification. They'll get that sense of forward progress right from the beginning. And freeCodeCamp will be a much smoother experience.
+
+
+
+
+
A Brief History
+
Of the Curriculum
+
+
+
V1 - 2014
+
+ We launched freeCodeCamp with a simple list of 15 resources,
+ including Harvard's CS50 and Stanford's Database Class.
+
+
+
+
V2 - 2015
+
We added interactive algorithm challenges.
+
+
+
V3 - 2015
+
+ We added our own HTML+CSS challenges (before we'd been relying
+ on General Assembly's Dash course for these).
+
+
+
+
V4 - 2016
+
+ We expanded the curriculum to 3 certifications, including Front
+ End, Back End, and Data Visualization. They each had 10 required
+ projects, but only the Front End section had its own challenges.
+ For the other certs, we were still using external resources like
+ Node School.
+
+
+
+
V5 - 2017
+
We added the back end and data visualization challenges.
+
+
+
V6 - 2018
+
+ We launched 6 new certifications to replace our old ones. This
+ was the biggest curriculum improvement to date.
+
+
+
+
+
+
+
+
+
+```
+
+```css
+--fcc-editable-region--
+
+--fcc-editable-region--
+```
diff --git a/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-css-grid-by-building-a-magazine/6144d66a5358db0c80628757.md b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-css-grid-by-building-a-magazine/6144d66a5358db0c80628757.md
new file mode 100644
index 00000000000..d1938cac0ba
--- /dev/null
+++ b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-css-grid-by-building-a-magazine/6144d66a5358db0c80628757.md
@@ -0,0 +1,226 @@
+---
+id: 6144d66a5358db0c80628757
+title: Passo 27
+challengeType: 0
+dashedName: step-27
+---
+
+# --description--
+
+Crie um seletor `html` e dê a ele uma propriedade `font-size` definida como `62.5%`. Isto definirá o tamanho padrão da fonte para a página da web como 10px (o padrão do navegador é 16px).
+
+Isto facilitará para você trabalhar com unidades `rem` mais tarde, já que `2rem` seria 20px.
+
+Além disso, defina a propriedade `box-sizing` como `border-box`.
+
+# --hints--
+
+Você deve criar um seletor `html`.
+
+```js
+assert(new __helpers.CSSHelp(document).getStyle('html'));
+```
+
+O seletor `html` deve ter a propriedade `font-size` definida como `62.5%`.
+
+```js
+assert(new __helpers.CSSHelp(document).getStyle('html')?.fontSize === '62.5%');
+```
+
+O seletor `html` deve ter a propriedade `box-sizing` definida como `border-box`.
+
+```js
+assert(new __helpers.CSSHelp(document).getStyle('html')?.boxSizing === 'border-box');
+```
+
+# --seed--
+
+## --seed-contents--
+
+```html
+
+
+
+
+
+ Magazine
+
+
+
+
+
+
+
+
+
+
OUR NEW CURRICULUM
+
+ Our efforts to restructure our curriculum with a more project-based
+ focus
+
+ Soon the freeCodeCamp curriculum will be 100% project-driven learning. Instead of a series of coding challenges, you'll learn through building projects - step by step. Before we get into the details, let me emphasize: we are not changing the certifications. All 6 certifications will still have the same 5 required projects. We are only changing the optional coding challenges.
+
+
+ After years - years - of pondering these two problems and how to solve them, I slipped, hit my head on the sink, and when I came to I had a revelation! A vision! A picture in my head! A picture of this! This is what makes time travel possible: the flux capacitor!
+
+
+ It wasn't as dramatic as Doc's revelation in Back to the Future. It
+ just occurred to me while I was going for a run. The revelation: the entire curriculum should be a series of projects. Instead of individual coding challenges, we'll just have projects, each with their own seamless series of tests. Each test gives you just enough information to figure out how to get it to pass. (And you can view hints if that isn't enough.)
+
+
+
+
+ The entire curriculum should be a series of projects
+
+
+
+
+ No more walls of explanatory text. No more walls of tests. Just one
+ test at a time, as you build up a working project. Over the course of passing thousands of tests, you build up projects and your own understanding of coding fundamentals. There is no transition between lessons and projects, because the lessons themselves are baked into projects. And there's plenty of repetition to help you retain everything because - hey - building projects in real life has plenty of repetition.
+
+
+ The main design challenge is taking what is currently paragraphs of explanation and instructions and packing them into a single test description text. Each project will involve dozens of tests like this. People will be coding the entire time, rather than switching back and forth from "reading mode" to "coding mode".
+
+
+ Instead of a series of coding challenges, people will be in their code editor passing one test after another, quickly building up a project. People will get into a real flow state, similar to what they experience when they build the required projects at the end of each certification. They'll get that sense of forward progress right from the beginning. And freeCodeCamp will be a much smoother experience.
+
+
+
+
+
A Brief History
+
Of the Curriculum
+
+
+
V1 - 2014
+
+ We launched freeCodeCamp with a simple list of 15 resources,
+ including Harvard's CS50 and Stanford's Database Class.
+
+
+
+
V2 - 2015
+
We added interactive algorithm challenges.
+
+
+
V3 - 2015
+
+ We added our own HTML+CSS challenges (before we'd been relying
+ on General Assembly's Dash course for these).
+
+
+
+
V4 - 2016
+
+ We expanded the curriculum to 3 certifications, including Front
+ End, Back End, and Data Visualization. They each had 10 required
+ projects, but only the Front End section had its own challenges.
+ For the other certs, we were still using external resources like
+ Node School.
+
+
+
+
V5 - 2017
+
We added the back end and data visualization challenges.
+
+
+
V6 - 2018
+
+ We launched 6 new certifications to replace our old ones. This
+ was the biggest curriculum improvement to date.
+
+
+
+
+
+
+
+
+
+```
+
+```css
+*, ::before, ::after {
+ padding: 0;
+ margin: 0;
+}
+
+--fcc-editable-region--
+
+--fcc-editable-region--
+```
diff --git a/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-css-grid-by-building-a-magazine/6144d7dbdd3e580da730ff45.md b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-css-grid-by-building-a-magazine/6144d7dbdd3e580da730ff45.md
new file mode 100644
index 00000000000..39a6edf6939
--- /dev/null
+++ b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-css-grid-by-building-a-magazine/6144d7dbdd3e580da730ff45.md
@@ -0,0 +1,234 @@
+---
+id: 6144d7dbdd3e580da730ff45
+title: Passo 28
+challengeType: 0
+dashedName: step-28
+---
+
+# --description--
+
+Crie um seletor `body`. Defina a propriedade `font-family` como `Baskervville` com `serif` de alternativa. Defina a propriedade `color` como `linen` e a propriedade `background-color` como `rgb(20, 30, 40)`.
+
+# --hints--
+
+Você deve ter um seletor `body`.
+
+```js
+assert(new __helpers.CSSHelp(document).getStyle('body'));
+```
+
+O seletor `body` deve ter a propriedade `font-family` definida como `Baskervville` com `serif` de alternativa.
+
+```js
+const fontFamily = new __helpers.CSSHelp(document).getStyle('body')?.fontFamily;
+assert(fontFamily === 'Baskervville, serif' || fontFamily === `"Baskervville", serif`);
+```
+
+O seletor `body` deve ter a propriedade `color` definida como `linen`.
+
+```js
+assert(new __helpers.CSSHelp(document).getStyle('body')?.color === 'linen');
+```
+
+O seletor `body` deve ter a propriedade `background-color` definida como `rgb(20, 30, 40)`.
+
+```js
+assert(new __helpers.CSSHelp(document).getStyle('body')?.backgroundColor === 'rgb(20, 30, 40)');
+```
+
+# --seed--
+
+## --seed-contents--
+
+```html
+
+
+
+
+
+ Magazine
+
+
+
+
+
+
+
+
+
+
OUR NEW CURRICULUM
+
+ Our efforts to restructure our curriculum with a more project-based
+ focus
+
+ Soon the freeCodeCamp curriculum will be 100% project-driven learning. Instead of a series of coding challenges, you'll learn through building projects - step by step. Before we get into the details, let me emphasize: we are not changing the certifications. All 6 certifications will still have the same 5 required projects. We are only changing the optional coding challenges.
+
+
+ After years - years - of pondering these two problems and how to solve them, I slipped, hit my head on the sink, and when I came to I had a revelation! A vision! A picture in my head! A picture of this! This is what makes time travel possible: the flux capacitor!
+
+
+ It wasn't as dramatic as Doc's revelation in Back to the Future. It
+ just occurred to me while I was going for a run. The revelation: the entire curriculum should be a series of projects. Instead of individual coding challenges, we'll just have projects, each with their own seamless series of tests. Each test gives you just enough information to figure out how to get it to pass. (And you can view hints if that isn't enough.)
+
+
+
+
+ The entire curriculum should be a series of projects
+
+
+
+
+ No more walls of explanatory text. No more walls of tests. Just one
+ test at a time, as you build up a working project. Over the course of passing thousands of tests, you build up projects and your own understanding of coding fundamentals. There is no transition between lessons and projects, because the lessons themselves are baked into projects. And there's plenty of repetition to help you retain everything because - hey - building projects in real life has plenty of repetition.
+
+
+ The main design challenge is taking what is currently paragraphs of explanation and instructions and packing them into a single test description text. Each project will involve dozens of tests like this. People will be coding the entire time, rather than switching back and forth from "reading mode" to "coding mode".
+
+
+ Instead of a series of coding challenges, people will be in their code editor passing one test after another, quickly building up a project. People will get into a real flow state, similar to what they experience when they build the required projects at the end of each certification. They'll get that sense of forward progress right from the beginning. And freeCodeCamp will be a much smoother experience.
+
+
+
+
+
A Brief History
+
Of the Curriculum
+
+
+
V1 - 2014
+
+ We launched freeCodeCamp with a simple list of 15 resources,
+ including Harvard's CS50 and Stanford's Database Class.
+
+
+
+
V2 - 2015
+
We added interactive algorithm challenges.
+
+
+
V3 - 2015
+
+ We added our own HTML+CSS challenges (before we'd been relying
+ on General Assembly's Dash course for these).
+
+
+
+
V4 - 2016
+
+ We expanded the curriculum to 3 certifications, including Front
+ End, Back End, and Data Visualization. They each had 10 required
+ projects, but only the Front End section had its own challenges.
+ For the other certs, we were still using external resources like
+ Node School.
+
+
+
+
V5 - 2017
+
We added the back end and data visualization challenges.
+
+
+
V6 - 2018
+
+ We launched 6 new certifications to replace our old ones. This
+ was the biggest curriculum improvement to date.
+
+
+
+
+
+
+
+
+
+```
+
+```css
+*, ::before, ::after {
+ padding: 0;
+ margin: 0;
+}
+
+html {
+ font-size: 62.5%;
+ box-sizing: border-box;
+}
+
+--fcc-editable-region--
+
+--fcc-editable-region--
+```
diff --git a/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-css-grid-by-building-a-magazine/6144de308591ec10e27d5383.md b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-css-grid-by-building-a-magazine/6144de308591ec10e27d5383.md
new file mode 100644
index 00000000000..903c6dd240b
--- /dev/null
+++ b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-css-grid-by-building-a-magazine/6144de308591ec10e27d5383.md
@@ -0,0 +1,228 @@
+---
+id: 6144de308591ec10e27d5383
+title: Passo 29
+challengeType: 0
+dashedName: step-29
+---
+
+# --description--
+
+Crie um seletor `h1` e defina a propriedade `font-family` como `Anton` com `sans-serif` como alternativa.
+
+# --hints--
+
+Você deve ter um seletor `h1`.
+
+```js
+assert(new __helpers.CSSHelp(document).getStyle('h1'));
+```
+
+O seletor `h1` deve ter um propriedade `font-family` definida como `Anton` com `sans-serif` como alternativa.
+
+```js
+const fontFamily = new __helpers.CSSHelp(document).getStyle('h1')?.fontFamily;
+assert(fontFamily === 'Anton, sans-serif' || fontFamily === `"Anton", sans-serif`);
+```
+
+# --seed--
+
+## --seed-contents--
+
+```html
+
+
+
+
+
+ Magazine
+
+
+
+
+
+
+
+
+
+
OUR NEW CURRICULUM
+
+ Our efforts to restructure our curriculum with a more project-based
+ focus
+
+ Soon the freeCodeCamp curriculum will be 100% project-driven learning. Instead of a series of coding challenges, you'll learn through building projects - step by step. Before we get into the details, let me emphasize: we are not changing the certifications. All 6 certifications will still have the same 5 required projects. We are only changing the optional coding challenges.
+
+
+ After years - years - of pondering these two problems and how to solve them, I slipped, hit my head on the sink, and when I came to I had a revelation! A vision! A picture in my head! A picture of this! This is what makes time travel possible: the flux capacitor!
+
+
+ It wasn't as dramatic as Doc's revelation in Back to the Future. It
+ just occurred to me while I was going for a run. The revelation: the entire curriculum should be a series of projects. Instead of individual coding challenges, we'll just have projects, each with their own seamless series of tests. Each test gives you just enough information to figure out how to get it to pass. (And you can view hints if that isn't enough.)
+
+
+
+
+ The entire curriculum should be a series of projects
+
+
+
+
+ No more walls of explanatory text. No more walls of tests. Just one
+ test at a time, as you build up a working project. Over the course of passing thousands of tests, you build up projects and your own understanding of coding fundamentals. There is no transition between lessons and projects, because the lessons themselves are baked into projects. And there's plenty of repetition to help you retain everything because - hey - building projects in real life has plenty of repetition.
+
+
+ The main design challenge is taking what is currently paragraphs of explanation and instructions and packing them into a single test description text. Each project will involve dozens of tests like this. People will be coding the entire time, rather than switching back and forth from "reading mode" to "coding mode".
+
+
+ Instead of a series of coding challenges, people will be in their code editor passing one test after another, quickly building up a project. People will get into a real flow state, similar to what they experience when they build the required projects at the end of each certification. They'll get that sense of forward progress right from the beginning. And freeCodeCamp will be a much smoother experience.
+
+
+
+
+
A Brief History
+
Of the Curriculum
+
+
+
V1 - 2014
+
+ We launched freeCodeCamp with a simple list of 15 resources,
+ including Harvard's CS50 and Stanford's Database Class.
+
+
+
+
V2 - 2015
+
We added interactive algorithm challenges.
+
+
+
V3 - 2015
+
+ We added our own HTML+CSS challenges (before we'd been relying
+ on General Assembly's Dash course for these).
+
+
+
+
V4 - 2016
+
+ We expanded the curriculum to 3 certifications, including Front
+ End, Back End, and Data Visualization. They each had 10 required
+ projects, but only the Front End section had its own challenges.
+ For the other certs, we were still using external resources like
+ Node School.
+
+
+
+
V5 - 2017
+
We added the back end and data visualization challenges.
+
+
+
V6 - 2018
+
+ We launched 6 new certifications to replace our old ones. This
+ was the biggest curriculum improvement to date.
+
+ Soon the freeCodeCamp curriculum will be 100% project-driven learning. Instead of a series of coding challenges, you'll learn through building projects - step by step. Before we get into the details, let me emphasize: we are not changing the certifications. All 6 certifications will still have the same 5 required projects. We are only changing the optional coding challenges.
+
+
+ After years - years - of pondering these two problems and how to solve them, I slipped, hit my head on the sink, and when I came to I had a revelation! A vision! A picture in my head! A picture of this! This is what makes time travel possible: the flux capacitor!
+
+
+ It wasn't as dramatic as Doc's revelation in Back to the Future. It
+ just occurred to me while I was going for a run. The revelation: the entire curriculum should be a series of projects. Instead of individual coding challenges, we'll just have projects, each with their own seamless series of tests. Each test gives you just enough information to figure out how to get it to pass. (And you can view hints if that isn't enough.)
+
+
+
+
+ The entire curriculum should be a series of projects
+
+
+
+
+ No more walls of explanatory text. No more walls of tests. Just one
+ test at a time, as you build up a working project. Over the course of passing thousands of tests, you build up projects and your own understanding of coding fundamentals. There is no transition between lessons and projects, because the lessons themselves are baked into projects. And there's plenty of repetition to help you retain everything because - hey - building projects in real life has plenty of repetition.
+
+
+ The main design challenge is taking what is currently paragraphs of explanation and instructions and packing them into a single test description text. Each project will involve dozens of tests like this. People will be coding the entire time, rather than switching back and forth from "reading mode" to "coding mode".
+
+
+ Instead of a series of coding challenges, people will be in their code editor passing one test after another, quickly building up a project. People will get into a real flow state, similar to what they experience when they build the required projects at the end of each certification. They'll get that sense of forward progress right from the beginning. And freeCodeCamp will be a much smoother experience.
+
+
+
+
+
A Brief History
+
Of the Curriculum
+
+
+
V1 - 2014
+
+ We launched freeCodeCamp with a simple list of 15 resources,
+ including Harvard's CS50 and Stanford's Database Class.
+
+
+
+
V2 - 2015
+
We added interactive algorithm challenges.
+
+
+
V3 - 2015
+
+ We added our own HTML+CSS challenges (before we'd been relying
+ on General Assembly's Dash course for these).
+
+
+
+
V4 - 2016
+
+ We expanded the curriculum to 3 certifications, including Front
+ End, Back End, and Data Visualization. They each had 10 required
+ projects, but only the Front End section had its own challenges.
+ For the other certs, we were still using external resources like
+ Node School.
+
+
+
+
V5 - 2017
+
We added the back end and data visualization challenges.
+
+
+
V6 - 2018
+
+ We launched 6 new certifications to replace our old ones. This
+ was the biggest curriculum improvement to date.
+
+
+
+
+
+
+
+
+
+```
+
+```css
+*, ::before, ::after {
+ padding: 0;
+ margin: 0;
+}
+
+html {
+ font-size: 62.5%;
+ box-sizing: border-box;
+}
+
+body {
+ font-family: 'Baskervville', serif;
+ color: linen;
+ background-color: rgb(20, 30, 40);
+}
+
+h1 {
+ font-family: 'Anton', sans-serif;
+}
+
+--fcc-editable-region--
+
+--fcc-editable-region--
+```
diff --git a/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-css-grid-by-building-a-magazine/6144ee46a9d6e614c598cc05.md b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-css-grid-by-building-a-magazine/6144ee46a9d6e614c598cc05.md
new file mode 100644
index 00000000000..d50c5d8d305
--- /dev/null
+++ b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-css-grid-by-building-a-magazine/6144ee46a9d6e614c598cc05.md
@@ -0,0 +1,241 @@
+---
+id: 6144ee46a9d6e614c598cc05
+title: Passo 31
+challengeType: 0
+dashedName: step-31
+---
+
+# --description--
+
+Crie um seletor `a` e dê a ele a propriedade `text-decoration` definida como `none` e a propriedade `color` definida como `linen`.
+
+# --hints--
+
+Você deve ter um seletor `a`.
+
+```js
+assert(new __helpers.CSSHelp(document).getStyle('a'));
+```
+
+O seletor `a` deve ter a propriedade `text-decoration` definida como `none`.
+
+```js
+assert(new __helpers.CSSHelp(document).getStyle('a')?.textDecoration === 'none');
+```
+
+O seletor `a` deve ter a propriedade `color` definida como `linen`.
+
+```js
+assert(new __helpers.CSSHelp(document).getStyle('a')?.color === 'linen');
+```
+
+# --seed--
+
+## --seed-contents--
+
+```html
+
+
+
+
+
+ Magazine
+
+
+
+
+
+
+
+
+
+
OUR NEW CURRICULUM
+
+ Our efforts to restructure our curriculum with a more project-based
+ focus
+
+ Soon the freeCodeCamp curriculum will be 100% project-driven learning. Instead of a series of coding challenges, you'll learn through building projects - step by step. Before we get into the details, let me emphasize: we are not changing the certifications. All 6 certifications will still have the same 5 required projects. We are only changing the optional coding challenges.
+
+
+ After years - years - of pondering these two problems and how to solve them, I slipped, hit my head on the sink, and when I came to I had a revelation! A vision! A picture in my head! A picture of this! This is what makes time travel possible: the flux capacitor!
+
+
+ It wasn't as dramatic as Doc's revelation in Back to the Future. It
+ just occurred to me while I was going for a run. The revelation: the entire curriculum should be a series of projects. Instead of individual coding challenges, we'll just have projects, each with their own seamless series of tests. Each test gives you just enough information to figure out how to get it to pass. (And you can view hints if that isn't enough.)
+
+
+
+
+ The entire curriculum should be a series of projects
+
+
+
+
+ No more walls of explanatory text. No more walls of tests. Just one
+ test at a time, as you build up a working project. Over the course of passing thousands of tests, you build up projects and your own understanding of coding fundamentals. There is no transition between lessons and projects, because the lessons themselves are baked into projects. And there's plenty of repetition to help you retain everything because - hey - building projects in real life has plenty of repetition.
+
+
+ The main design challenge is taking what is currently paragraphs of explanation and instructions and packing them into a single test description text. Each project will involve dozens of tests like this. People will be coding the entire time, rather than switching back and forth from "reading mode" to "coding mode".
+
+
+ Instead of a series of coding challenges, people will be in their code editor passing one test after another, quickly building up a project. People will get into a real flow state, similar to what they experience when they build the required projects at the end of each certification. They'll get that sense of forward progress right from the beginning. And freeCodeCamp will be a much smoother experience.
+
+
+
+
+
A Brief History
+
Of the Curriculum
+
+
+
V1 - 2014
+
+ We launched freeCodeCamp with a simple list of 15 resources,
+ including Harvard's CS50 and Stanford's Database Class.
+
+
+
+
V2 - 2015
+
We added interactive algorithm challenges.
+
+
+
V3 - 2015
+
+ We added our own HTML+CSS challenges (before we'd been relying
+ on General Assembly's Dash course for these).
+
+
+
+
V4 - 2016
+
+ We expanded the curriculum to 3 certifications, including Front
+ End, Back End, and Data Visualization. They each had 10 required
+ projects, but only the Front End section had its own challenges.
+ For the other certs, we were still using external resources like
+ Node School.
+
+
+
+
V5 - 2017
+
We added the back end and data visualization challenges.
+
+
+
V6 - 2018
+
+ We launched 6 new certifications to replace our old ones. This
+ was the biggest curriculum improvement to date.
+
+
+
+
+
+
+
+
+
+```
+
+```css
+*, ::before, ::after {
+ padding: 0;
+ margin: 0;
+}
+
+html {
+ font-size: 62.5%;
+ box-sizing: border-box;
+}
+
+body {
+ font-family: 'Baskervville', serif;
+ color: linen;
+ background-color: rgb(20, 30, 40);
+}
+
+h1 {
+ font-family: 'Anton', sans-serif;
+}
+
+h2, h3, h4, h5, h6 {
+ font-family: 'Raleway', sans-serif;
+}
+
+--fcc-editable-region--
+
+--fcc-editable-region--
+```
diff --git a/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-css-grid-by-building-a-magazine/6144ee790af79815ad15a832.md b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-css-grid-by-building-a-magazine/6144ee790af79815ad15a832.md
new file mode 100644
index 00000000000..a911245bbfc
--- /dev/null
+++ b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-css-grid-by-building-a-magazine/6144ee790af79815ad15a832.md
@@ -0,0 +1,242 @@
+---
+id: 6144ee790af79815ad15a832
+title: Passo 32
+challengeType: 0
+dashedName: step-32
+---
+
+# --description--
+
+Agora você está pronto para começar a montar o layout da grade. O CSS Grid oferece um layout baseado em uma grade bidimensional, permitindo que você centralize itens horizontalmente e verticalmente enquanto ainda mantém o controle para fazer coisas como sobrepor elementos.
+
+Comece criando um seletor `main` e dando a ele a propriedade `display` definida como `grid`.
+
+# --hints--
+
+Você deve ter um seletor `main`.
+
+```js
+assert(new __helpers.CSSHelp(document).getStyle('main'));
+```
+
+O seletor `main` deve ter a propriedade `display` definida como `grid`.
+
+```js
+assert(new __helpers.CSSHelp(document).getStyle('main')?.display === 'grid');
+```
+
+# --seed--
+
+## --seed-contents--
+
+```html
+
+
+
+
+
+ Magazine
+
+
+
+
+
+
+
+
+
+
OUR NEW CURRICULUM
+
+ Our efforts to restructure our curriculum with a more project-based
+ focus
+
+ Soon the freeCodeCamp curriculum will be 100% project-driven learning. Instead of a series of coding challenges, you'll learn through building projects - step by step. Before we get into the details, let me emphasize: we are not changing the certifications. All 6 certifications will still have the same 5 required projects. We are only changing the optional coding challenges.
+
+
+ After years - years - of pondering these two problems and how to solve them, I slipped, hit my head on the sink, and when I came to I had a revelation! A vision! A picture in my head! A picture of this! This is what makes time travel possible: the flux capacitor!
+
+
+ It wasn't as dramatic as Doc's revelation in Back to the Future. It
+ just occurred to me while I was going for a run. The revelation: the entire curriculum should be a series of projects. Instead of individual coding challenges, we'll just have projects, each with their own seamless series of tests. Each test gives you just enough information to figure out how to get it to pass. (And you can view hints if that isn't enough.)
+
+
+
+
+ The entire curriculum should be a series of projects
+
+
+
+
+ No more walls of explanatory text. No more walls of tests. Just one
+ test at a time, as you build up a working project. Over the course of passing thousands of tests, you build up projects and your own understanding of coding fundamentals. There is no transition between lessons and projects, because the lessons themselves are baked into projects. And there's plenty of repetition to help you retain everything because - hey - building projects in real life has plenty of repetition.
+
+
+ The main design challenge is taking what is currently paragraphs of explanation and instructions and packing them into a single test description text. Each project will involve dozens of tests like this. People will be coding the entire time, rather than switching back and forth from "reading mode" to "coding mode".
+
+
+ Instead of a series of coding challenges, people will be in their code editor passing one test after another, quickly building up a project. People will get into a real flow state, similar to what they experience when they build the required projects at the end of each certification. They'll get that sense of forward progress right from the beginning. And freeCodeCamp will be a much smoother experience.
+
+
+
+
+
A Brief History
+
Of the Curriculum
+
+
+
V1 - 2014
+
+ We launched freeCodeCamp with a simple list of 15 resources,
+ including Harvard's CS50 and Stanford's Database Class.
+
+
+
+
V2 - 2015
+
We added interactive algorithm challenges.
+
+
+
V3 - 2015
+
+ We added our own HTML+CSS challenges (before we'd been relying
+ on General Assembly's Dash course for these).
+
+
+
+
V4 - 2016
+
+ We expanded the curriculum to 3 certifications, including Front
+ End, Back End, and Data Visualization. They each had 10 required
+ projects, but only the Front End section had its own challenges.
+ For the other certs, we were still using external resources like
+ Node School.
+
+
+
+
V5 - 2017
+
We added the back end and data visualization challenges.
+
+
+
V6 - 2018
+
+ We launched 6 new certifications to replace our old ones. This
+ was the biggest curriculum improvement to date.
+
+
+
+
+
+
+
+
+
+```
+
+```css
+*, ::before, ::after {
+ padding: 0;
+ margin: 0;
+}
+
+html {
+ font-size: 62.5%;
+ box-sizing: border-box;
+}
+
+body {
+ font-family: 'Baskervville', serif;
+ color: linen;
+ background-color: rgb(20, 30, 40);
+}
+
+h1 {
+ font-family: 'Anton', sans-serif;
+}
+
+h2, h3, h4, h5, h6 {
+ font-family: 'Raleway', sans-serif;
+}
+
+a {
+ text-decoration: none;
+ color: linen;
+}
+
+--fcc-editable-region--
+
+--fcc-editable-region--
+```
diff --git a/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-css-grid-by-building-a-magazine/6144f3818bfbc51844152e36.md b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-css-grid-by-building-a-magazine/6144f3818bfbc51844152e36.md
new file mode 100644
index 00000000000..8dee348522d
--- /dev/null
+++ b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-css-grid-by-building-a-magazine/6144f3818bfbc51844152e36.md
@@ -0,0 +1,239 @@
+---
+id: 6144f3818bfbc51844152e36
+title: Passo 34
+challengeType: 0
+dashedName: step-34
+---
+
+# --description--
+
+Use a função `minmax` para tornar suas colunas responsivas em qualquer dispositivo. A função `minmax` recebe dois argumentos, sendo o primeiro o valor mínimo e o segundo o máximo. Esses valores podem ser um comprimento, porcentagem, `fr` ou até mesmo uma palavra-chave como `max-content`.
+
+Envolva cada um dos seus valores já definidos da propriedade `grid-template-columns` em uma função `minmax`, usando cada valor como o segundo argumento. O primeiro argumento deve ser `2rem`, `min-content` e `2rem`, respectivamente.
+
+# --hints--
+
+O seletor `main` deve ter uma propriedade `grid-template-columns` definida como `minmax(2rem, 1fr) minmax(min-content, 94rem) minmax(2rem, 1fr)`.
+
+```js
+assert(new __helpers.CSSHelp(document).getStyle('main')?.gridTemplateColumns === 'minmax(2rem, 1fr) minmax(min-content, 94rem) minmax(2rem, 1fr)');
+```
+
+# --seed--
+
+## --seed-contents--
+
+```html
+
+
+
+
+
+ Magazine
+
+
+
+
+
+
+
+
+
+
OUR NEW CURRICULUM
+
+ Our efforts to restructure our curriculum with a more project-based
+ focus
+
+ Soon the freeCodeCamp curriculum will be 100% project-driven learning. Instead of a series of coding challenges, you'll learn through building projects - step by step. Before we get into the details, let me emphasize: we are not changing the certifications. All 6 certifications will still have the same 5 required projects. We are only changing the optional coding challenges.
+
+
+ After years - years - of pondering these two problems and how to solve them, I slipped, hit my head on the sink, and when I came to I had a revelation! A vision! A picture in my head! A picture of this! This is what makes time travel possible: the flux capacitor!
+
+
+ It wasn't as dramatic as Doc's revelation in Back to the Future. It
+ just occurred to me while I was going for a run. The revelation: the entire curriculum should be a series of projects. Instead of individual coding challenges, we'll just have projects, each with their own seamless series of tests. Each test gives you just enough information to figure out how to get it to pass. (And you can view hints if that isn't enough.)
+
+
+
+
+ The entire curriculum should be a series of projects
+
+
+
+
+ No more walls of explanatory text. No more walls of tests. Just one
+ test at a time, as you build up a working project. Over the course of passing thousands of tests, you build up projects and your own understanding of coding fundamentals. There is no transition between lessons and projects, because the lessons themselves are baked into projects. And there's plenty of repetition to help you retain everything because - hey - building projects in real life has plenty of repetition.
+
+
+ The main design challenge is taking what is currently paragraphs of explanation and instructions and packing them into a single test description text. Each project will involve dozens of tests like this. People will be coding the entire time, rather than switching back and forth from "reading mode" to "coding mode".
+
+
+ Instead of a series of coding challenges, people will be in their code editor passing one test after another, quickly building up a project. People will get into a real flow state, similar to what they experience when they build the required projects at the end of each certification. They'll get that sense of forward progress right from the beginning. And freeCodeCamp will be a much smoother experience.
+
+
+
+
+
A Brief History
+
Of the Curriculum
+
+
+
V1 - 2014
+
+ We launched freeCodeCamp with a simple list of 15 resources,
+ including Harvard's CS50 and Stanford's Database Class.
+
+
+
+
V2 - 2015
+
We added interactive algorithm challenges.
+
+
+
V3 - 2015
+
+ We added our own HTML+CSS challenges (before we'd been relying
+ on General Assembly's Dash course for these).
+
+
+
+
V4 - 2016
+
+ We expanded the curriculum to 3 certifications, including Front
+ End, Back End, and Data Visualization. They each had 10 required
+ projects, but only the Front End section had its own challenges.
+ For the other certs, we were still using external resources like
+ Node School.
+
+
+
+
V5 - 2017
+
We added the back end and data visualization challenges.
+
+
+
V6 - 2018
+
+ We launched 6 new certifications to replace our old ones. This
+ was the biggest curriculum improvement to date.
+
+ Soon the freeCodeCamp curriculum will be 100% project-driven learning. Instead of a series of coding challenges, you'll learn through building projects - step by step. Before we get into the details, let me emphasize: we are not changing the certifications. All 6 certifications will still have the same 5 required projects. We are only changing the optional coding challenges.
+
+
+ After years - years - of pondering these two problems and how to solve them, I slipped, hit my head on the sink, and when I came to I had a revelation! A vision! A picture in my head! A picture of this! This is what makes time travel possible: the flux capacitor!
+
+
+ It wasn't as dramatic as Doc's revelation in Back to the Future. It
+ just occurred to me while I was going for a run. The revelation: the entire curriculum should be a series of projects. Instead of individual coding challenges, we'll just have projects, each with their own seamless series of tests. Each test gives you just enough information to figure out how to get it to pass. (And you can view hints if that isn't enough.)
+
+
+
+
+ The entire curriculum should be a series of projects
+
+
+
+
+ No more walls of explanatory text. No more walls of tests. Just one
+ test at a time, as you build up a working project. Over the course of passing thousands of tests, you build up projects and your own understanding of coding fundamentals. There is no transition between lessons and projects, because the lessons themselves are baked into projects. And there's plenty of repetition to help you retain everything because - hey - building projects in real life has plenty of repetition.
+
+
+ The main design challenge is taking what is currently paragraphs of explanation and instructions and packing them into a single test description text. Each project will involve dozens of tests like this. People will be coding the entire time, rather than switching back and forth from "reading mode" to "coding mode".
+
+
+ Instead of a series of coding challenges, people will be in their code editor passing one test after another, quickly building up a project. People will get into a real flow state, similar to what they experience when they build the required projects at the end of each certification. They'll get that sense of forward progress right from the beginning. And freeCodeCamp will be a much smoother experience.
+
+
+
+
+
A Brief History
+
Of the Curriculum
+
+
+
V1 - 2014
+
+ We launched freeCodeCamp with a simple list of 15 resources,
+ including Harvard's CS50 and Stanford's Database Class.
+
+
+
+
V2 - 2015
+
We added interactive algorithm challenges.
+
+
+
V3 - 2015
+
+ We added our own HTML+CSS challenges (before we'd been relying
+ on General Assembly's Dash course for these).
+
+
+
+
V4 - 2016
+
+ We expanded the curriculum to 3 certifications, including Front
+ End, Back End, and Data Visualization. They each had 10 required
+ projects, but only the Front End section had its own challenges.
+ For the other certs, we were still using external resources like
+ Node School.
+
+
+
+
V5 - 2017
+
We added the back end and data visualization challenges.
+
+
+
V6 - 2018
+
+ We launched 6 new certifications to replace our old ones. This
+ was the biggest curriculum improvement to date.
+
+
+
+
+
+
+
+
+
+```
+
+```css
+*, ::before, ::after {
+ padding: 0;
+ margin: 0;
+}
+
+html {
+ font-size: 62.5%;
+ box-sizing: border-box;
+}
+
+body {
+ font-family: 'Baskervville', serif;
+ color: linen;
+ background-color: rgb(20, 30, 40);
+}
+
+h1 {
+ font-family: 'Anton', sans-serif;
+}
+
+h2, h3, h4, h5, h6 {
+ font-family: 'Raleway', sans-serif;
+}
+
+a {
+ text-decoration: none;
+ color: linen;
+}
+
+--fcc-editable-region--
+main {
+ display: grid;
+ grid-template-columns: minmax(2rem, 1fr) minmax(min-content, 94rem) minmax(2rem, 1fr);
+}
+--fcc-editable-region--
+```
diff --git a/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-css-grid-by-building-a-magazine/6144f47b7c631e1a6f304dd5.md b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-css-grid-by-building-a-magazine/6144f47b7c631e1a6f304dd5.md
new file mode 100644
index 00000000000..eecfe35e6c8
--- /dev/null
+++ b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-css-grid-by-building-a-magazine/6144f47b7c631e1a6f304dd5.md
@@ -0,0 +1,250 @@
+---
+id: 6144f47b7c631e1a6f304dd5
+title: Passo 36
+challengeType: 0
+dashedName: step-36
+---
+
+# --description--
+
+A revista terá três seções primárias. Você já definiu o layout geral na regra `main`, mas pode ajustar o posicionamento nas regras dos elementos filhos.
+
+Uma opção é a propriedade `grid-column`, que é a propriedade abreviada de `grid-column-start` e `grid-column-end`. A propriedade `grid-column` informa ao item de grade em qual linha de grade começar e terminar.
+
+Crie uma regra `.heading` e defina a propriedade `grid-column` como `2 / 3`. Isso dirá ao elemento `.heading` para começar na linha de grade 2 e terminar na linha de grade 3.
+
+# --hints--
+
+Você deve ter um seletor `.heading`.
+
+```js
+assert(new __helpers.CSSHelp(document).getStyle('.heading'));
+```
+
+O seletor `.heading` deve ter a propriedade `grid-column` definida como `2 / 3`.
+
+```js
+assert(new __helpers.CSSHelp(document).getStyle('.heading')?.gridColumn === '2 / 3');
+```
+
+# --seed--
+
+## --seed-contents--
+
+```html
+
+
+
+
+
+ Magazine
+
+
+
+
+
+
+
+
+
+
OUR NEW CURRICULUM
+
+ Our efforts to restructure our curriculum with a more project-based
+ focus
+
+ Soon the freeCodeCamp curriculum will be 100% project-driven learning. Instead of a series of coding challenges, you'll learn through building projects - step by step. Before we get into the details, let me emphasize: we are not changing the certifications. All 6 certifications will still have the same 5 required projects. We are only changing the optional coding challenges.
+
+
+ After years - years - of pondering these two problems and how to solve them, I slipped, hit my head on the sink, and when I came to I had a revelation! A vision! A picture in my head! A picture of this! This is what makes time travel possible: the flux capacitor!
+
+
+ It wasn't as dramatic as Doc's revelation in Back to the Future. It
+ just occurred to me while I was going for a run. The revelation: the entire curriculum should be a series of projects. Instead of individual coding challenges, we'll just have projects, each with their own seamless series of tests. Each test gives you just enough information to figure out how to get it to pass. (And you can view hints if that isn't enough.)
+
+
+
+
+ The entire curriculum should be a series of projects
+
+
+
+
+ No more walls of explanatory text. No more walls of tests. Just one
+ test at a time, as you build up a working project. Over the course of passing thousands of tests, you build up projects and your own understanding of coding fundamentals. There is no transition between lessons and projects, because the lessons themselves are baked into projects. And there's plenty of repetition to help you retain everything because - hey - building projects in real life has plenty of repetition.
+
+
+ The main design challenge is taking what is currently paragraphs of explanation and instructions and packing them into a single test description text. Each project will involve dozens of tests like this. People will be coding the entire time, rather than switching back and forth from "reading mode" to "coding mode".
+
+
+ Instead of a series of coding challenges, people will be in their code editor passing one test after another, quickly building up a project. People will get into a real flow state, similar to what they experience when they build the required projects at the end of each certification. They'll get that sense of forward progress right from the beginning. And freeCodeCamp will be a much smoother experience.
+
+
+
+
+
A Brief History
+
Of the Curriculum
+
+
+
V1 - 2014
+
+ We launched freeCodeCamp with a simple list of 15 resources,
+ including Harvard's CS50 and Stanford's Database Class.
+
+
+
+
V2 - 2015
+
We added interactive algorithm challenges.
+
+
+
V3 - 2015
+
+ We added our own HTML+CSS challenges (before we'd been relying
+ on General Assembly's Dash course for these).
+
+
+
+
V4 - 2016
+
+ We expanded the curriculum to 3 certifications, including Front
+ End, Back End, and Data Visualization. They each had 10 required
+ projects, but only the Front End section had its own challenges.
+ For the other certs, we were still using external resources like
+ Node School.
+
+
+
+
V5 - 2017
+
We added the back end and data visualization challenges.
+
+
+
V6 - 2018
+
+ We launched 6 new certifications to replace our old ones. This
+ was the biggest curriculum improvement to date.
+
+ Soon the freeCodeCamp curriculum will be 100% project-driven learning. Instead of a series of coding challenges, you'll learn through building projects - step by step. Before we get into the details, let me emphasize: we are not changing the certifications. All 6 certifications will still have the same 5 required projects. We are only changing the optional coding challenges.
+
+
+ After years - years - of pondering these two problems and how to solve them, I slipped, hit my head on the sink, and when I came to I had a revelation! A vision! A picture in my head! A picture of this! This is what makes time travel possible: the flux capacitor!
+
+
+ It wasn't as dramatic as Doc's revelation in Back to the Future. It
+ just occurred to me while I was going for a run. The revelation: the entire curriculum should be a series of projects. Instead of individual coding challenges, we'll just have projects, each with their own seamless series of tests. Each test gives you just enough information to figure out how to get it to pass. (And you can view hints if that isn't enough.)
+
+
+
+
+ The entire curriculum should be a series of projects
+
+
+
+
+ No more walls of explanatory text. No more walls of tests. Just one
+ test at a time, as you build up a working project. Over the course of passing thousands of tests, you build up projects and your own understanding of coding fundamentals. There is no transition between lessons and projects, because the lessons themselves are baked into projects. And there's plenty of repetition to help you retain everything because - hey - building projects in real life has plenty of repetition.
+
+
+ The main design challenge is taking what is currently paragraphs of explanation and instructions and packing them into a single test description text. Each project will involve dozens of tests like this. People will be coding the entire time, rather than switching back and forth from "reading mode" to "coding mode".
+
+
+ Instead of a series of coding challenges, people will be in their code editor passing one test after another, quickly building up a project. People will get into a real flow state, similar to what they experience when they build the required projects at the end of each certification. They'll get that sense of forward progress right from the beginning. And freeCodeCamp will be a much smoother experience.
+
+
+
+
+
A Brief History
+
Of the Curriculum
+
+
+
V1 - 2014
+
+ We launched freeCodeCamp with a simple list of 15 resources,
+ including Harvard's CS50 and Stanford's Database Class.
+
+
+
+
V2 - 2015
+
We added interactive algorithm challenges.
+
+
+
V3 - 2015
+
+ We added our own HTML+CSS challenges (before we'd been relying
+ on General Assembly's Dash course for these).
+
+
+
+
V4 - 2016
+
+ We expanded the curriculum to 3 certifications, including Front
+ End, Back End, and Data Visualization. They each had 10 required
+ projects, but only the Front End section had its own challenges.
+ For the other certs, we were still using external resources like
+ Node School.
+
+
+
+
V5 - 2017
+
We added the back end and data visualization challenges.
+
+
+
V6 - 2018
+
+ We launched 6 new certifications to replace our old ones. This
+ was the biggest curriculum improvement to date.
+
+ Soon the freeCodeCamp curriculum will be 100% project-driven learning. Instead of a series of coding challenges, you'll learn through building projects - step by step. Before we get into the details, let me emphasize: we are not changing the certifications. All 6 certifications will still have the same 5 required projects. We are only changing the optional coding challenges.
+
+
+ After years - years - of pondering these two problems and how to solve them, I slipped, hit my head on the sink, and when I came to I had a revelation! A vision! A picture in my head! A picture of this! This is what makes time travel possible: the flux capacitor!
+
+
+ It wasn't as dramatic as Doc's revelation in Back to the Future. It
+ just occurred to me while I was going for a run. The revelation: the entire curriculum should be a series of projects. Instead of individual coding challenges, we'll just have projects, each with their own seamless series of tests. Each test gives you just enough information to figure out how to get it to pass. (And you can view hints if that isn't enough.)
+
+
+
+
+ The entire curriculum should be a series of projects
+
+
+
+
+ No more walls of explanatory text. No more walls of tests. Just one
+ test at a time, as you build up a working project. Over the course of passing thousands of tests, you build up projects and your own understanding of coding fundamentals. There is no transition between lessons and projects, because the lessons themselves are baked into projects. And there's plenty of repetition to help you retain everything because - hey - building projects in real life has plenty of repetition.
+
+
+ The main design challenge is taking what is currently paragraphs of explanation and instructions and packing them into a single test description text. Each project will involve dozens of tests like this. People will be coding the entire time, rather than switching back and forth from "reading mode" to "coding mode".
+
+
+ Instead of a series of coding challenges, people will be in their code editor passing one test after another, quickly building up a project. People will get into a real flow state, similar to what they experience when they build the required projects at the end of each certification. They'll get that sense of forward progress right from the beginning. And freeCodeCamp will be a much smoother experience.
+
+
+
+
+
A Brief History
+
Of the Curriculum
+
+
+
V1 - 2014
+
+ We launched freeCodeCamp with a simple list of 15 resources,
+ including Harvard's CS50 and Stanford's Database Class.
+
+
+
+
V2 - 2015
+
We added interactive algorithm challenges.
+
+
+
V3 - 2015
+
+ We added our own HTML+CSS challenges (before we'd been relying on
+ General Assembly's Dash course for these).
+
+
+
+
V4 - 2016
+
+ We expanded the curriculum to 3 certifications, including Front
+ End, Back End, and Data Visualization. They each had 10 required
+ projects, but only the Front End section had its own challenges.
+ For the other certs, we were still using external resources like
+ Node School.
+
+
+
+
V5 - 2017
+
We added the back end and data visualization challenges.
+
+
+
V6 - 2018
+
+ We launched 6 new certifications to replace our old ones. This was
+ the biggest curriculum improvement to date.
+
+ Soon the freeCodeCamp curriculum will be 100% project-driven learning. Instead of a series of coding challenges, you'll learn through building projects - step by step. Before we get into the details, let me emphasize: we are not changing the certifications. All 6 certifications will still have the same 5 required projects. We are only changing the optional coding challenges.
+
+
+ After years - years - of pondering these two problems and how to solve them, I slipped, hit my head on the sink, and when I came to I had a revelation! A vision! A picture in my head! A picture of this! This is what makes time travel possible: the flux capacitor!
+
+
+ It wasn't as dramatic as Doc's revelation in Back to the Future. It
+ just occurred to me while I was going for a run. The revelation: the entire curriculum should be a series of projects. Instead of individual coding challenges, we'll just have projects, each with their own seamless series of tests. Each test gives you just enough information to figure out how to get it to pass. (And you can view hints if that isn't enough.)
+
+
+
+
+ The entire curriculum should be a series of projects
+
+
+
+
+ No more walls of explanatory text. No more walls of tests. Just one
+ test at a time, as you build up a working project. Over the course of passing thousands of tests, you build up projects and your own understanding of coding fundamentals. There is no transition between lessons and projects, because the lessons themselves are baked into projects. And there's plenty of repetition to help you retain everything because - hey - building projects in real life has plenty of repetition.
+
+
+ The main design challenge is taking what is currently paragraphs of explanation and instructions and packing them into a single test description text. Each project will involve dozens of tests like this. People will be coding the entire time, rather than switching back and forth from "reading mode" to "coding mode".
+
+
+ Instead of a series of coding challenges, people will be in their code editor passing one test after another, quickly building up a project. People will get into a real flow state, similar to what they experience when they build the required projects at the end of each certification. They'll get that sense of forward progress right from the beginning. And freeCodeCamp will be a much smoother experience.
+
+
+
+
+
A Brief History
+
Of the Curriculum
+
+
+
V1 - 2014
+
+ We launched freeCodeCamp with a simple list of 15 resources,
+ including Harvard's CS50 and Stanford's Database Class.
+
+
+
+
V2 - 2015
+
We added interactive algorithm challenges.
+
+
+
V3 - 2015
+
+ We added our own HTML+CSS challenges (before we'd been relying on
+ General Assembly's Dash course for these).
+
+
+
+
V4 - 2016
+
+ We expanded the curriculum to 3 certifications, including Front
+ End, Back End, and Data Visualization. They each had 10 required
+ projects, but only the Front End section had its own challenges.
+ For the other certs, we were still using external resources like
+ Node School.
+
+
+
+
V5 - 2017
+
We added the back end and data visualization challenges.
+
+
+
V6 - 2018
+
+ We launched 6 new certifications to replace our old ones. This was
+ the biggest curriculum improvement to date.
+
+
+
+
+
+
+
+
+
+```
+
+```css
+*,
+::before,
+::after {
+ padding: 0;
+ margin: 0;
+}
+
+html {
+ font-size: 62.5%;
+ box-sizing: border-box;
+}
+
+body {
+ font-family: 'Baskervville', serif;
+ color: linen;
+ background-color: rgb(20, 30, 40);
+}
+
+h1 {
+ font-family: 'Anton', sans-serif;
+}
+
+h2, h3, h4, h5, h6 {
+ font-family: 'Raleway', sans-serif;
+}
+
+a {
+ text-decoration: none;
+ color: linen;
+}
+
+main {
+ display: grid;
+ grid-template-columns: minmax(2rem, 1fr) minmax(min-content, 94rem) minmax(2rem, 1fr);
+ row-gap: 3rem;
+}
+
+.heading {
+ grid-column: 2 / 3;
+ display: grid;
+ grid-template-columns: repeat(2, 1fr);
+ row-gap: 1.5rem;
+}
+
+.text {
+ grid-column: 2 / 3;
+}
+
+--fcc-editable-region--
+.hero {
+ grid-column: 1 / -1;
+}
+--fcc-editable-region--
+```
diff --git a/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-css-grid-by-building-a-magazine/6148b59ef318e03875f35c4a.md b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-css-grid-by-building-a-magazine/6148b59ef318e03875f35c4a.md
new file mode 100644
index 00000000000..66082add277
--- /dev/null
+++ b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-css-grid-by-building-a-magazine/6148b59ef318e03875f35c4a.md
@@ -0,0 +1,271 @@
+---
+id: 6148b59ef318e03875f35c4a
+title: Passo 44
+challengeType: 0
+dashedName: step-44
+---
+
+# --description--
+
+Crie um seletor `img` e dê a ele a propriedade `width` definida como `100%` e a propriedade `object-fit` definida como `cover`.
+
+A propriedade `object-fit` diz ao navegador como posicionar o elemento dentro do contêiner. Nesse caso, `cover` definirá a imagem para preencher o contêiner, recortando conforme necessário para evitar alterar a proporção.
+
+# --hints--
+
+Você deve ter um seletor `img`.
+
+```js
+assert(new __helpers.CSSHelp(document).getStyle('img'));
+```
+
+O seletor `img` deve ter a propriedade `width` definida como `100%`.
+
+```js
+assert(new __helpers.CSSHelp(document).getStyle('img')?.width === '100%');
+```
+
+O seletor `img` deve ter uma propriedade `object-fit` definida como `cover`.
+
+```js
+assert(new __helpers.CSSHelp(document).getStyle('img')?.objectFit === 'cover');
+```
+
+# --seed--
+
+## --seed-contents--
+
+```html
+
+
+
+
+
+ Magazine
+
+
+
+
+
+
+
+
+
+
OUR NEW CURRICULUM
+
+ Our efforts to restructure our curriculum with a more project-based
+ focus
+
+ Soon the freeCodeCamp curriculum will be 100% project-driven learning. Instead of a series of coding challenges, you'll learn through building projects - step by step. Before we get into the details, let me emphasize: we are not changing the certifications. All 6 certifications will still have the same 5 required projects. We are only changing the optional coding challenges.
+
+
+ After years - years - of pondering these two problems and how to solve them, I slipped, hit my head on the sink, and when I came to I had a revelation! A vision! A picture in my head! A picture of this! This is what makes time travel possible: the flux capacitor!
+
+
+ It wasn't as dramatic as Doc's revelation in Back to the Future. It
+ just occurred to me while I was going for a run. The revelation: the entire curriculum should be a series of projects. Instead of individual coding challenges, we'll just have projects, each with their own seamless series of tests. Each test gives you just enough information to figure out how to get it to pass. (And you can view hints if that isn't enough.)
+
+
+
+
+ The entire curriculum should be a series of projects
+
+
+
+
+ No more walls of explanatory text. No more walls of tests. Just one
+ test at a time, as you build up a working project. Over the course of passing thousands of tests, you build up projects and your own understanding of coding fundamentals. There is no transition between lessons and projects, because the lessons themselves are baked into projects. And there's plenty of repetition to help you retain everything because - hey - building projects in real life has plenty of repetition.
+
+
+ The main design challenge is taking what is currently paragraphs of explanation and instructions and packing them into a single test description text. Each project will involve dozens of tests like this. People will be coding the entire time, rather than switching back and forth from "reading mode" to "coding mode".
+
+
+ Instead of a series of coding challenges, people will be in their code editor passing one test after another, quickly building up a project. People will get into a real flow state, similar to what they experience when they build the required projects at the end of each certification. They'll get that sense of forward progress right from the beginning. And freeCodeCamp will be a much smoother experience.
+
+
+
+
+
A Brief History
+
Of the Curriculum
+
+
+
V1 - 2014
+
+ We launched freeCodeCamp with a simple list of 15 resources,
+ including Harvard's CS50 and Stanford's Database Class.
+
+
+
+
V2 - 2015
+
We added interactive algorithm challenges.
+
+
+
V3 - 2015
+
+ We added our own HTML+CSS challenges (before we'd been relying on
+ General Assembly's Dash course for these).
+
+
+
+
V4 - 2016
+
+ We expanded the curriculum to 3 certifications, including Front
+ End, Back End, and Data Visualization. They each had 10 required
+ projects, but only the Front End section had its own challenges.
+ For the other certs, we were still using external resources like
+ Node School.
+
+
+
+
V5 - 2017
+
We added the back end and data visualization challenges.
+
+
+
V6 - 2018
+
+ We launched 6 new certifications to replace our old ones. This was
+ the biggest curriculum improvement to date.
+
+ Soon the freeCodeCamp curriculum will be 100% project-driven learning. Instead of a series of coding challenges, you'll learn through building projects - step by step. Before we get into the details, let me emphasize: we are not changing the certifications. All 6 certifications will still have the same 5 required projects. We are only changing the optional coding challenges.
+
+
+ After years - years - of pondering these two problems and how to solve them, I slipped, hit my head on the sink, and when I came to I had a revelation! A vision! A picture in my head! A picture of this! This is what makes time travel possible: the flux capacitor!
+
+
+ It wasn't as dramatic as Doc's revelation in Back to the Future. It
+ just occurred to me while I was going for a run. The revelation: the entire curriculum should be a series of projects. Instead of individual coding challenges, we'll just have projects, each with their own seamless series of tests. Each test gives you just enough information to figure out how to get it to pass. (And you can view hints if that isn't enough.)
+
+
+
+
+ The entire curriculum should be a series of projects
+
+
+
+
+ No more walls of explanatory text. No more walls of tests. Just one
+ test at a time, as you build up a working project. Over the course of passing thousands of tests, you build up projects and your own understanding of coding fundamentals. There is no transition between lessons and projects, because the lessons themselves are baked into projects. And there's plenty of repetition to help you retain everything because - hey - building projects in real life has plenty of repetition.
+
+
+ The main design challenge is taking what is currently paragraphs of explanation and instructions and packing them into a single test description text. Each project will involve dozens of tests like this. People will be coding the entire time, rather than switching back and forth from "reading mode" to "coding mode".
+
+
+ Instead of a series of coding challenges, people will be in their code editor passing one test after another, quickly building up a project. People will get into a real flow state, similar to what they experience when they build the required projects at the end of each certification. They'll get that sense of forward progress right from the beginning. And freeCodeCamp will be a much smoother experience.
+
+
+
+
+
A Brief History
+
Of the Curriculum
+
+
+
V1 - 2014
+
+ We launched freeCodeCamp with a simple list of 15 resources,
+ including Harvard's CS50 and Stanford's Database Class.
+
+
+
+
V2 - 2015
+
We added interactive algorithm challenges.
+
+
+
V3 - 2015
+
+ We added our own HTML+CSS challenges (before we'd been relying on
+ General Assembly's Dash course for these).
+
+
+
+
V4 - 2016
+
+ We expanded the curriculum to 3 certifications, including Front
+ End, Back End, and Data Visualization. They each had 10 required
+ projects, but only the Front End section had its own challenges.
+ For the other certs, we were still using external resources like
+ Node School.
+
+
+
+
V5 - 2017
+
We added the back end and data visualization challenges.
+
+
+
V6 - 2018
+
+ We launched 6 new certifications to replace our old ones. This was
+ the biggest curriculum improvement to date.
+
+ Soon the freeCodeCamp curriculum will be 100% project-driven learning. Instead of a series of coding challenges, you'll learn through building projects - step by step. Before we get into the details, let me emphasize: we are not changing the certifications. All 6 certifications will still have the same 5 required projects. We are only changing the optional coding challenges.
+
+
+ After years - years - of pondering these two problems and how to solve them, I slipped, hit my head on the sink, and when I came to I had a revelation! A vision! A picture in my head! A picture of this! This is what makes time travel possible: the flux capacitor!
+
+
+ It wasn't as dramatic as Doc's revelation in Back to the Future. It
+ just occurred to me while I was going for a run. The revelation: the entire curriculum should be a series of projects. Instead of individual coding challenges, we'll just have projects, each with their own seamless series of tests. Each test gives you just enough information to figure out how to get it to pass. (And you can view hints if that isn't enough.)
+
+
+
+
+ The entire curriculum should be a series of projects
+
+
+
+
+ No more walls of explanatory text. No more walls of tests. Just one
+ test at a time, as you build up a working project. Over the course of passing thousands of tests, you build up projects and your own understanding of coding fundamentals. There is no transition between lessons and projects, because the lessons themselves are baked into projects. And there's plenty of repetition to help you retain everything because - hey - building projects in real life has plenty of repetition.
+
+
+ The main design challenge is taking what is currently paragraphs of explanation and instructions and packing them into a single test description text. Each project will involve dozens of tests like this. People will be coding the entire time, rather than switching back and forth from "reading mode" to "coding mode".
+
+
+ Instead of a series of coding challenges, people will be in their code editor passing one test after another, quickly building up a project. People will get into a real flow state, similar to what they experience when they build the required projects at the end of each certification. They'll get that sense of forward progress right from the beginning. And freeCodeCamp will be a much smoother experience.
+
+
+
+
+
A Brief History
+
Of the Curriculum
+
+
+
V1 - 2014
+
+ We launched freeCodeCamp with a simple list of 15 resources,
+ including Harvard's CS50 and Stanford's Database Class.
+
+
+
+
V2 - 2015
+
We added interactive algorithm challenges.
+
+
+
V3 - 2015
+
+ We added our own HTML+CSS challenges (before we'd been relying on
+ General Assembly's Dash course for these).
+
+
+
+
V4 - 2016
+
+ We expanded the curriculum to 3 certifications, including Front
+ End, Back End, and Data Visualization. They each had 10 required
+ projects, but only the Front End section had its own challenges.
+ For the other certs, we were still using external resources like
+ Node School.
+
+
+
+
V5 - 2017
+
We added the back end and data visualization challenges.
+
+
+
V6 - 2018
+
+ We launched 6 new certifications to replace our old ones. This was
+ the biggest curriculum improvement to date.
+
+
+
+
+
+
+
+
+
+```
+
+```css
+*,
+::before,
+::after {
+ padding: 0;
+ margin: 0;
+}
+
+html {
+ font-size: 62.5%;
+ box-sizing: border-box;
+}
+
+body {
+ font-family: 'Baskervville', serif;
+ color: linen;
+ background-color: rgb(20, 30, 40);
+}
+
+h1 {
+ font-family: 'Anton', sans-serif;
+}
+
+h2, h3, h4, h5, h6 {
+ font-family: 'Raleway', sans-serif;
+}
+
+a {
+ text-decoration: none;
+ color: linen;
+}
+
+main {
+ display: grid;
+ grid-template-columns: minmax(2rem, 1fr) minmax(min-content, 94rem) minmax(2rem, 1fr);
+ row-gap: 3rem;
+}
+
+img {
+ width: 100%;
+ object-fit: cover;
+}
+
+.heading {
+ grid-column: 2 / 3;
+ display: grid;
+ grid-template-columns: repeat(2, 1fr);
+ row-gap: 1.5rem;
+}
+
+.text {
+ grid-column: 2 / 3;
+}
+
+.hero {
+ grid-column: 1 / -1;
+ position: relative;
+}
+
+.hero-title {
+ text-align: center;
+ color: orangered;
+ font-size: 8rem;
+}
+
+.hero-subtitle {
+ font-size: 2.4rem;
+ color: orangered;
+ text-align: center;
+}
+
+--fcc-editable-region--
+
+--fcc-editable-region--
+```
diff --git a/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-css-grid-by-building-a-magazine/6148ceaf5d897d4d8b3554b3.md b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-css-grid-by-building-a-magazine/6148ceaf5d897d4d8b3554b3.md
new file mode 100644
index 00000000000..8088321a4f9
--- /dev/null
+++ b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-css-grid-by-building-a-magazine/6148ceaf5d897d4d8b3554b3.md
@@ -0,0 +1,299 @@
+---
+id: 6148ceaf5d897d4d8b3554b3
+title: Passo 57
+challengeType: 0
+dashedName: step-57
+---
+
+# --description--
+
+Revistas geralmente usam texto justificado em seu conteúdo impresso para estruturar o layout e controlar o fluxo do conteúdo. Embora isso funcione na forma impressa, o texto justificado em sites pode ser uma preocupação em termos de acessibilidade, por exemplo, apresentando desafios para pessoas com dislexia.
+
+Para fazer com que o projeto pareça uma revista impressa, dê ao seletor `.text` uma propriedade `text-align` definida como `justify`.
+
+# --hints--
+
+O seletor `.text` deve definir a propriedade `text-align` como `justify`.
+
+```js
+assert(new __helpers.CSSHelp(document).getStyle('.text')?.textAlign === 'justify');
+```
+
+# --seed--
+
+## --seed-contents--
+
+```html
+
+
+
+
+
+ Magazine
+
+
+
+
+
+
+
+
+
+
OUR NEW CURRICULUM
+
+ Our efforts to restructure our curriculum with a more project-based
+ focus
+
+ Soon the freeCodeCamp curriculum will be 100% project-driven learning. Instead of a series of coding challenges, you'll learn through building projects - step by step. Before we get into the details, let me emphasize: we are not changing the certifications. All 6 certifications will still have the same 5 required projects. We are only changing the optional coding challenges.
+
+
+ After years - years - of pondering these two problems and how to solve them, I slipped, hit my head on the sink, and when I came to I had a revelation! A vision! A picture in my head! A picture of this! This is what makes time travel possible: the flux capacitor!
+
+
+ It wasn't as dramatic as Doc's revelation in Back to the Future. It
+ just occurred to me while I was going for a run. The revelation: the entire curriculum should be a series of projects. Instead of individual coding challenges, we'll just have projects, each with their own seamless series of tests. Each test gives you just enough information to figure out how to get it to pass. (And you can view hints if that isn't enough.)
+
+
+
+
+ The entire curriculum should be a series of projects
+
+
+
+
+ No more walls of explanatory text. No more walls of tests. Just one
+ test at a time, as you build up a working project. Over the course of passing thousands of tests, you build up projects and your own understanding of coding fundamentals. There is no transition between lessons and projects, because the lessons themselves are baked into projects. And there's plenty of repetition to help you retain everything because - hey - building projects in real life has plenty of repetition.
+
+
+ The main design challenge is taking what is currently paragraphs of explanation and instructions and packing them into a single test description text. Each project will involve dozens of tests like this. People will be coding the entire time, rather than switching back and forth from "reading mode" to "coding mode".
+
+
+ Instead of a series of coding challenges, people will be in their code editor passing one test after another, quickly building up a project. People will get into a real flow state, similar to what they experience when they build the required projects at the end of each certification. They'll get that sense of forward progress right from the beginning. And freeCodeCamp will be a much smoother experience.
+
+
+
+
+
A Brief History
+
Of the Curriculum
+
+
+
V1 - 2014
+
+ We launched freeCodeCamp with a simple list of 15 resources,
+ including Harvard's CS50 and Stanford's Database Class.
+
+
+
+
V2 - 2015
+
We added interactive algorithm challenges.
+
+
+
V3 - 2015
+
+ We added our own HTML+CSS challenges (before we'd been relying on
+ General Assembly's Dash course for these).
+
+
+
+
V4 - 2016
+
+ We expanded the curriculum to 3 certifications, including Front
+ End, Back End, and Data Visualization. They each had 10 required
+ projects, but only the Front End section had its own challenges.
+ For the other certs, we were still using external resources like
+ Node School.
+
+
+
+
V5 - 2017
+
We added the back end and data visualization challenges.
+
+
+
V6 - 2018
+
+ We launched 6 new certifications to replace our old ones. This was
+ the biggest curriculum improvement to date.
+
+ Soon the freeCodeCamp curriculum will be 100% project-driven learning. Instead of a series of coding challenges, you'll learn through building projects - step by step. Before we get into the details, let me emphasize: we are not changing the certifications. All 6 certifications will still have the same 5 required projects. We are only changing the optional coding challenges.
+
+
+ After years - years - of pondering these two problems and how to solve them, I slipped, hit my head on the sink, and when I came to I had a revelation! A vision! A picture in my head! A picture of this! This is what makes time travel possible: the flux capacitor!
+
+
+ It wasn't as dramatic as Doc's revelation in Back to the Future. It
+ just occurred to me while I was going for a run. The revelation: the entire curriculum should be a series of projects. Instead of individual coding challenges, we'll just have projects, each with their own seamless series of tests. Each test gives you just enough information to figure out how to get it to pass. (And you can view hints if that isn't enough.)
+
+
+
+
+ The entire curriculum should be a series of projects
+
+
+
+
+ No more walls of explanatory text. No more walls of tests. Just one
+ test at a time, as you build up a working project. Over the course of passing thousands of tests, you build up projects and your own understanding of coding fundamentals. There is no transition between lessons and projects, because the lessons themselves are baked into projects. And there's plenty of repetition to help you retain everything because - hey - building projects in real life has plenty of repetition.
+
+
+ The main design challenge is taking what is currently paragraphs of explanation and instructions and packing them into a single test description text. Each project will involve dozens of tests like this. People will be coding the entire time, rather than switching back and forth from "reading mode" to "coding mode".
+
+
+ Instead of a series of coding challenges, people will be in their code editor passing one test after another, quickly building up a project. People will get into a real flow state, similar to what they experience when they build the required projects at the end of each certification. They'll get that sense of forward progress right from the beginning. And freeCodeCamp will be a much smoother experience.
+
+
+
+
+
A Brief History
+
Of the Curriculum
+
+
+
V1 - 2014
+
+ We launched freeCodeCamp with a simple list of 15 resources,
+ including Harvard's CS50 and Stanford's Database Class.
+
+
+
+
V2 - 2015
+
We added interactive algorithm challenges.
+
+
+
V3 - 2015
+
+ We added our own HTML+CSS challenges (before we'd been relying on
+ General Assembly's Dash course for these).
+
+
+
+
V4 - 2016
+
+ We expanded the curriculum to 3 certifications, including Front
+ End, Back End, and Data Visualization. They each had 10 required
+ projects, but only the Front End section had its own challenges.
+ For the other certs, we were still using external resources like
+ Node School.
+
+
+
+
V5 - 2017
+
We added the back end and data visualization challenges.
+
+
+
V6 - 2018
+
+ We launched 6 new certifications to replace our old ones. This was
+ the biggest curriculum improvement to date.
+
+ Soon the freeCodeCamp curriculum will be 100% project-driven learning. Instead of a series of coding challenges, you'll learn through building projects - step by step. Before we get into the details, let me emphasize: we are not changing the certifications. All 6 certifications will still have the same 5 required projects. We are only changing the optional coding challenges.
+
+
+ After years - years - of pondering these two problems and how to solve them, I slipped, hit my head on the sink, and when I came to I had a revelation! A vision! A picture in my head! A picture of this! This is what makes time travel possible: the flux capacitor!
+
+
+ It wasn't as dramatic as Doc's revelation in Back to the Future. It
+ just occurred to me while I was going for a run. The revelation: the entire curriculum should be a series of projects. Instead of individual coding challenges, we'll just have projects, each with their own seamless series of tests. Each test gives you just enough information to figure out how to get it to pass. (And you can view hints if that isn't enough.)
+
+
+
+
+ The entire curriculum should be a series of projects
+
+
+
+
+ No more walls of explanatory text. No more walls of tests. Just one
+ test at a time, as you build up a working project. Over the course of passing thousands of tests, you build up projects and your own understanding of coding fundamentals. There is no transition between lessons and projects, because the lessons themselves are baked into projects. And there's plenty of repetition to help you retain everything because - hey - building projects in real life has plenty of repetition.
+
+
+ The main design challenge is taking what is currently paragraphs of explanation and instructions and packing them into a single test description text. Each project will involve dozens of tests like this. People will be coding the entire time, rather than switching back and forth from "reading mode" to "coding mode".
+
+
+ Instead of a series of coding challenges, people will be in their code editor passing one test after another, quickly building up a project. People will get into a real flow state, similar to what they experience when they build the required projects at the end of each certification. They'll get that sense of forward progress right from the beginning. And freeCodeCamp will be a much smoother experience.
+
+
+
+
+
A Brief History
+
Of the Curriculum
+
+
+
V1 - 2014
+
+ We launched freeCodeCamp with a simple list of 15 resources,
+ including Harvard's CS50 and Stanford's Database Class.
+
+
+
+
V2 - 2015
+
We added interactive algorithm challenges.
+
+
+
V3 - 2015
+
+ We added our own HTML+CSS challenges (before we'd been relying on
+ General Assembly's Dash course for these).
+
+
+
+
V4 - 2016
+
+ We expanded the curriculum to 3 certifications, including Front
+ End, Back End, and Data Visualization. They each had 10 required
+ projects, but only the Front End section had its own challenges.
+ For the other certs, we were still using external resources like
+ Node School.
+
+
+
+
V5 - 2017
+
We added the back end and data visualization challenges.
+
+
+
V6 - 2018
+
+ We launched 6 new certifications to replace our old ones. This was
+ the biggest curriculum improvement to date.
+
+ Soon the freeCodeCamp curriculum will be 100% project-driven learning. Instead of a series of coding challenges, you'll learn through building projects - step by step. Before we get into the details, let me emphasize: we are not changing the certifications. All 6 certifications will still have the same 5 required projects. We are only changing the optional coding challenges.
+
+
+ After years - years - of pondering these two problems and how to solve them, I slipped, hit my head on the sink, and when I came to I had a revelation! A vision! A picture in my head! A picture of this! This is what makes time travel possible: the flux capacitor!
+
+
+ It wasn't as dramatic as Doc's revelation in Back to the Future. It
+ just occurred to me while I was going for a run. The revelation: the entire curriculum should be a series of projects. Instead of individual coding challenges, we'll just have projects, each with their own seamless series of tests. Each test gives you just enough information to figure out how to get it to pass. (And you can view hints if that isn't enough.)
+
+
+
+
+ The entire curriculum should be a series of projects
+
+
+
+
+ No more walls of explanatory text. No more walls of tests. Just one
+ test at a time, as you build up a working project. Over the course of passing thousands of tests, you build up projects and your own understanding of coding fundamentals. There is no transition between lessons and projects, because the lessons themselves are baked into projects. And there's plenty of repetition to help you retain everything because - hey - building projects in real life has plenty of repetition.
+
+
+ The main design challenge is taking what is currently paragraphs of explanation and instructions and packing them into a single test description text. Each project will involve dozens of tests like this. People will be coding the entire time, rather than switching back and forth from "reading mode" to "coding mode".
+
+
+ Instead of a series of coding challenges, people will be in their code editor passing one test after another, quickly building up a project. People will get into a real flow state, similar to what they experience when they build the required projects at the end of each certification. They'll get that sense of forward progress right from the beginning. And freeCodeCamp will be a much smoother experience.
+
+
+
+
+
A Brief History
+
Of the Curriculum
+
+
+
V1 - 2014
+
+ We launched freeCodeCamp with a simple list of 15 resources,
+ including Harvard's CS50 and Stanford's Database Class.
+
+
+
+
V2 - 2015
+
We added interactive algorithm challenges.
+
+
+
V3 - 2015
+
+ We added our own HTML+CSS challenges (before we'd been relying on
+ General Assembly's Dash course for these).
+
+
+
+
V4 - 2016
+
+ We expanded the curriculum to 3 certifications, including Front
+ End, Back End, and Data Visualization. They each had 10 required
+ projects, but only the Front End section had its own challenges.
+ For the other certs, we were still using external resources like
+ Node School.
+
+
+
+
V5 - 2017
+
We added the back end and data visualization challenges.
+
+
+
V6 - 2018
+
+ We launched 6 new certifications to replace our old ones. This was
+ the biggest curriculum improvement to date.
+
+ Soon the freeCodeCamp curriculum will be 100% project-driven learning. Instead of a series of coding challenges, you'll learn through building projects - step by step. Before we get into the details, let me emphasize: we are not changing the certifications. All 6 certifications will still have the same 5 required projects. We are only changing the optional coding challenges.
+
+
+ After years - years - of pondering these two problems and how to solve them, I slipped, hit my head on the sink, and when I came to I had a revelation! A vision! A picture in my head! A picture of this! This is what makes time travel possible: the flux capacitor!
+
+
+ It wasn't as dramatic as Doc's revelation in Back to the Future. It
+ just occurred to me while I was going for a run. The revelation: the entire curriculum should be a series of projects. Instead of individual coding challenges, we'll just have projects, each with their own seamless series of tests. Each test gives you just enough information to figure out how to get it to pass. (And you can view hints if that isn't enough.)
+
+
+
+
+ The entire curriculum should be a series of projects
+
+
+
+
+ No more walls of explanatory text. No more walls of tests. Just one
+ test at a time, as you build up a working project. Over the course of passing thousands of tests, you build up projects and your own understanding of coding fundamentals. There is no transition between lessons and projects, because the lessons themselves are baked into projects. And there's plenty of repetition to help you retain everything because - hey - building projects in real life has plenty of repetition.
+
+
+ The main design challenge is taking what is currently paragraphs of explanation and instructions and packing them into a single test description text. Each project will involve dozens of tests like this. People will be coding the entire time, rather than switching back and forth from "reading mode" to "coding mode".
+
+
+ Instead of a series of coding challenges, people will be in their code editor passing one test after another, quickly building up a project. People will get into a real flow state, similar to what they experience when they build the required projects at the end of each certification. They'll get that sense of forward progress right from the beginning. And freeCodeCamp will be a much smoother experience.
+
+
+
+
+
A Brief History
+
Of the Curriculum
+
+
+
V1 - 2014
+
+ We launched freeCodeCamp with a simple list of 15 resources,
+ including Harvard's CS50 and Stanford's Database Class.
+
+
+
+
V2 - 2015
+
We added interactive algorithm challenges.
+
+
+
V3 - 2015
+
+ We added our own HTML+CSS challenges (before we'd been relying on
+ General Assembly's Dash course for these).
+
+
+
+
V4 - 2016
+
+ We expanded the curriculum to 3 certifications, including Front
+ End, Back End, and Data Visualization. They each had 10 required
+ projects, but only the Front End section had its own challenges.
+ For the other certs, we were still using external resources like
+ Node School.
+
+
+
+
V5 - 2017
+
We added the back end and data visualization challenges.
+
+
+
V6 - 2018
+
+ We launched 6 new certifications to replace our old ones. This was
+ the biggest curriculum improvement to date.
+
+ Soon the freeCodeCamp curriculum will be 100% project-driven learning. Instead of a series of coding challenges, you'll learn through building projects - step by step. Before we get into the details, let me emphasize: we are not changing the certifications. All 6 certifications will still have the same 5 required projects. We are only changing the optional coding challenges.
+
+
+ After years - years - of pondering these two problems and how to solve them, I slipped, hit my head on the sink, and when I came to I had a revelation! A vision! A picture in my head! A picture of this! This is what makes time travel possible: the flux capacitor!
+
+
+ It wasn't as dramatic as Doc's revelation in Back to the Future. It
+ just occurred to me while I was going for a run. The revelation: the entire curriculum should be a series of projects. Instead of individual coding challenges, we'll just have projects, each with their own seamless series of tests. Each test gives you just enough information to figure out how to get it to pass. (And you can view hints if that isn't enough.)
+
+
+
+
+ The entire curriculum should be a series of projects
+
+
+
+
+ No more walls of explanatory text. No more walls of tests. Just one
+ test at a time, as you build up a working project. Over the course of passing thousands of tests, you build up projects and your own understanding of coding fundamentals. There is no transition between lessons and projects, because the lessons themselves are baked into projects. And there's plenty of repetition to help you retain everything because - hey - building projects in real life has plenty of repetition.
+
+
+ The main design challenge is taking what is currently paragraphs of explanation and instructions and packing them into a single test description text. Each project will involve dozens of tests like this. People will be coding the entire time, rather than switching back and forth from "reading mode" to "coding mode".
+
+
+ Instead of a series of coding challenges, people will be in their code editor passing one test after another, quickly building up a project. People will get into a real flow state, similar to what they experience when they build the required projects at the end of each certification. They'll get that sense of forward progress right from the beginning. And freeCodeCamp will be a much smoother experience.
+
+
+
+
+
A Brief History
+
Of the Curriculum
+
+
+
V1 - 2014
+
+ We launched freeCodeCamp with a simple list of 15 resources,
+ including Harvard's CS50 and Stanford's Database Class.
+
+
+
+
V2 - 2015
+
We added interactive algorithm challenges.
+
+
+
V3 - 2015
+
+ We added our own HTML+CSS challenges (before we'd been relying on
+ General Assembly's Dash course for these).
+
+
+
+
V4 - 2016
+
+ We expanded the curriculum to 3 certifications, including Front
+ End, Back End, and Data Visualization. They each had 10 required
+ projects, but only the Front End section had its own challenges.
+ For the other certs, we were still using external resources like
+ Node School.
+
+
+
+
V5 - 2017
+
We added the back end and data visualization challenges.
+
+
+
V6 - 2018
+
+ We launched 6 new certifications to replace our old ones. This was
+ the biggest curriculum improvement to date.
+
+ Soon the freeCodeCamp curriculum will be 100% project-driven learning. Instead of a series of coding challenges, you'll learn through building projects - step by step. Before we get into the details, let me emphasize: we are not changing the certifications. All 6 certifications will still have the same 5 required projects. We are only changing the optional coding challenges.
+
+
+ After years - years - of pondering these two problems and how to solve them, I slipped, hit my head on the sink, and when I came to I had a revelation! A vision! A picture in my head! A picture of this! This is what makes time travel possible: the flux capacitor!
+
+
+ It wasn't as dramatic as Doc's revelation in Back to the Future. It
+ just occurred to me while I was going for a run. The revelation: the entire curriculum should be a series of projects. Instead of individual coding challenges, we'll just have projects, each with their own seamless series of tests. Each test gives you just enough information to figure out how to get it to pass. (And you can view hints if that isn't enough.)
+
+
+
+
+ The entire curriculum should be a series of projects
+
+
+
+
+ No more walls of explanatory text. No more walls of tests. Just one
+ test at a time, as you build up a working project. Over the course of passing thousands of tests, you build up projects and your own understanding of coding fundamentals. There is no transition between lessons and projects, because the lessons themselves are baked into projects. And there's plenty of repetition to help you retain everything because - hey - building projects in real life has plenty of repetition.
+
+
+ The main design challenge is taking what is currently paragraphs of explanation and instructions and packing them into a single test description text. Each project will involve dozens of tests like this. People will be coding the entire time, rather than switching back and forth from "reading mode" to "coding mode".
+
+
+ Instead of a series of coding challenges, people will be in their code editor passing one test after another, quickly building up a project. People will get into a real flow state, similar to what they experience when they build the required projects at the end of each certification. They'll get that sense of forward progress right from the beginning. And freeCodeCamp will be a much smoother experience.
+
+
+
+
+
A Brief History
+
Of the Curriculum
+
+
+
V1 - 2014
+
+ We launched freeCodeCamp with a simple list of 15 resources,
+ including Harvard's CS50 and Stanford's Database Class.
+
+
+
+
V2 - 2015
+
We added interactive algorithm challenges.
+
+
+
V3 - 2015
+
+ We added our own HTML+CSS challenges (before we'd been relying on
+ General Assembly's Dash course for these).
+
+
+
+
V4 - 2016
+
+ We expanded the curriculum to 3 certifications, including Front
+ End, Back End, and Data Visualization. They each had 10 required
+ projects, but only the Front End section had its own challenges.
+ For the other certs, we were still using external resources like
+ Node School.
+
+
+
+
V5 - 2017
+
We added the back end and data visualization challenges.
+
+
+
V6 - 2018
+
+ We launched 6 new certifications to replace our old ones. This was
+ the biggest curriculum improvement to date.
+
+ Soon the freeCodeCamp curriculum will be 100% project-driven learning. Instead of a series of coding challenges, you'll learn through building projects - step by step. Before we get into the details, let me emphasize: we are not changing the certifications. All 6 certifications will still have the same 5 required projects. We are only changing the optional coding challenges.
+
+
+ After years - years - of pondering these two problems and how to solve them, I slipped, hit my head on the sink, and when I came to I had a revelation! A vision! A picture in my head! A picture of this! This is what makes time travel possible: the flux capacitor!
+
+
+ It wasn't as dramatic as Doc's revelation in Back to the Future. It
+ just occurred to me while I was going for a run. The revelation: the entire curriculum should be a series of projects. Instead of individual coding challenges, we'll just have projects, each with their own seamless series of tests. Each test gives you just enough information to figure out how to get it to pass. (And you can view hints if that isn't enough.)
+
+
+
+
+ The entire curriculum should be a series of projects
+
+
+
+
+ No more walls of explanatory text. No more walls of tests. Just one
+ test at a time, as you build up a working project. Over the course of passing thousands of tests, you build up projects and your own understanding of coding fundamentals. There is no transition between lessons and projects, because the lessons themselves are baked into projects. And there's plenty of repetition to help you retain everything because - hey - building projects in real life has plenty of repetition.
+
+
+ The main design challenge is taking what is currently paragraphs of explanation and instructions and packing them into a single test description text. Each project will involve dozens of tests like this. People will be coding the entire time, rather than switching back and forth from "reading mode" to "coding mode".
+
+
+ Instead of a series of coding challenges, people will be in their code editor passing one test after another, quickly building up a project. People will get into a real flow state, similar to what they experience when they build the required projects at the end of each certification. They'll get that sense of forward progress right from the beginning. And freeCodeCamp will be a much smoother experience.
+
+
+
+
+
A Brief History
+
Of the Curriculum
+
+
+
V1 - 2014
+
+ We launched freeCodeCamp with a simple list of 15 resources,
+ including Harvard's CS50 and Stanford's Database Class.
+
+
+
+
V2 - 2015
+
We added interactive algorithm challenges.
+
+
+
V3 - 2015
+
+ We added our own HTML+CSS challenges (before we'd been relying on
+ General Assembly's Dash course for these).
+
+
+
+
V4 - 2016
+
+ We expanded the curriculum to 3 certifications, including Front
+ End, Back End, and Data Visualization. They each had 10 required
+ projects, but only the Front End section had its own challenges.
+ For the other certs, we were still using external resources like
+ Node School.
+
+
+
+
V5 - 2017
+
We added the back end and data visualization challenges.
+
+
+
V6 - 2018
+
+ We launched 6 new certifications to replace our old ones. This was
+ the biggest curriculum improvement to date.
+
+ Our efforts to restructure our curriculum with a more project-based
+ focus
+
+
+
+
+--fcc-editable-region--
+
+
+```
+
+```css
+
+```
diff --git a/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-css-grid-by-building-a-magazine/6165d3b702a5d92ad970b30c.md b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-css-grid-by-building-a-magazine/6165d3b702a5d92ad970b30c.md
new file mode 100644
index 00000000000..3f6f1605546
--- /dev/null
+++ b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-css-grid-by-building-a-magazine/6165d3b702a5d92ad970b30c.md
@@ -0,0 +1,104 @@
+---
+id: 6165d3b702a5d92ad970b30c
+title: Passo 5
+challengeType: 0
+dashedName: step-5
+---
+
+# --description--
+
+Após o elemento `img`, adicione um elemento `h1` com a `class` definida como `hero-title` e o texto definido como `OUR NEW CURRICULUM`, seguido por um elemento `p` com a `class` definida como `hero-subtitle` e o texto definido como `Our efforts to restructure our curriculum with a more project-based focus`.
+
+# --hints--
+
+Você deve criar um elemento `h1`.
+
+```js
+assert.exists(document.querySelector('h1'));
+```
+
+O elemento `h1` deve vir depois do elemento `img`.
+
+```js
+assert(document.querySelector('h1')?.previousElementSibling?.localName === 'img');
+```
+
+O elemento `h1` deve ter a `class` definida como `hero-title`.
+
+```js
+assert(document.querySelector('h1')?.className === 'hero-title');
+```
+
+O elemento `h1` deve ter o texto definido como `OUR NEW CURRICULUM`.
+
+```js
+assert(document.querySelector('h1')?.textContent === 'OUR NEW CURRICULUM');
+```
+
+Você deve criar um novo elemento `p`.
+
+```js
+assert.exists(document.querySelector('p'));
+```
+
+O elemento `p` deve vir depois do elemento `h1`.
+
+```js
+assert(document.querySelector('p')?.previousElementSibling?.localName === 'h1');
+```
+
+O elemento `p` deve ter a `class` definida como `hero-subtitle`.
+
+```js
+assert(document.querySelector('p')?.className === 'hero-subtitle');
+```
+
+O elemento `p` deve ter o texto definido como `Our efforts to restructure our curriculum with a more project-based focus`.
+
+```js
+assert.equal(document.querySelector('p')?.textContent?.trim()?.replace(/\s{2,}/, ' '), 'Our efforts to restructure our curriculum with a more project-based focus');
+```
+
+# --seed--
+
+## --seed-contents--
+
+```html
+
+
+
+
+
+ Magazine
+
+
+
+
+
+--fcc-editable-region--
+
+
+
+
+
+
+
+--fcc-editable-region--
+
+
+```
+
+```css
+
+```
diff --git a/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-css-transforms-by-building-a-penguin/619bcf239fc15905ecd66fce.md b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-css-transforms-by-building-a-penguin/619bcf239fc15905ecd66fce.md
new file mode 100644
index 00000000000..501c7fb54e3
--- /dev/null
+++ b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-css-transforms-by-building-a-penguin/619bcf239fc15905ecd66fce.md
@@ -0,0 +1,145 @@
+---
+id: 619bcf239fc15905ecd66fce
+title: Passo 39
+challengeType: 0
+dashedName: step-39
+---
+
+# --description--
+
+Posiciona o pseudoelemento em relação ao seu ancestral mais próximo.
+
+# --hints--
+
+Você deve dar ao `.penguin-body::before` o atributo `position` de `absolute`.
+
+```js
+assert.equal(new __helpers.CSSHelp(document).getStyle('.penguin-body::before')?.position, 'absolute');
+```
+
+# --seed--
+
+## --seed-contents--
+
+```html
+
+
+
+
+
+ Penguin
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+```css
+
+```
diff --git a/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-responsive-web-design-by-building-a-piano/612e6afc009b450a437940a1.md b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-responsive-web-design-by-building-a-piano/612e6afc009b450a437940a1.md
new file mode 100644
index 00000000000..ee1dfefafa8
--- /dev/null
+++ b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-responsive-web-design-by-building-a-piano/612e6afc009b450a437940a1.md
@@ -0,0 +1,131 @@
+---
+id: 612e6afc009b450a437940a1
+title: Passo 1
+challengeType: 0
+dashedName: step-1
+---
+
+# --description--
+
+Comece com a estrutura HTML básica. Adicione a declaração `DOCTYPE` e os elementos `html`, `head`, `body` e `title`. Defina o elemento `title` como `Piano`.
+
+# --hints--
+
+O código deve conter a referência `DOCTYPE`.
+
+```js
+assert(code.match(/` após o tipo.
+
+```js
+assert(code.match(//gi));
+```
+
+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*>/));
+```
+
+A declaração `DOCTYPE` deve estar no início do arquivo HTML.
+
+```js
+assert(__helpers.removeHtmlComments(code).match(/^\s*/i));
+```
+
+Você deve ter uma tag de abertura para `head`.
+
+```js
+assert(code.match(//i));
+```
+
+Você deve ter uma tag de fechamento para `head`.
+
+```js
+assert(code.match(/<\/head\s*>/i));
+```
+
+Você deve ter uma tag de abertura para o elemento `body`.
+
+```js
+assert(code.match(//i));
+```
+
+Você deve ter uma tag de fechamento para o elemento `body`.
+
+```js
+assert(code.match(/<\/body\s*>/i));
+```
+
+Os elementos `head` e `body` devem ser irmãos.
+
+```js
+assert(document.querySelector('head')?.nextElementSibling?.localName === 'body');
+```
+
+O elemento `head` deve ser filho do elemento `html`.
+
+```js
+assert([...document.querySelector('html')?.children].some(x => x?.localName === 'head'));
+```
+
+O elemento `body` deve ser filho do elemento `html`.
+
+```js
+assert([...document.querySelector('html')?.children].some(x => x?.localName === 'body'));
+```
+
+O código deve ter um elemento `title`.
+
+```js
+const title = document.querySelector('title');
+assert.exists(title);
+```
+
+O projeto deve ter o título `Piano`.
+
+```js
+const title = document.querySelector('title');
+assert.equal(title?.text?.trim()?.toLowerCase(), 'piano')
+```
+
+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?.trim(), 'Piano');
+```
+
+# --seed--
+
+## --seed-contents--
+
+```html
+--fcc-editable-region--
+
+--fcc-editable-region--
+```
+
+```css
+
+```
diff --git a/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-responsive-web-design-by-building-a-piano/612e77aba7ca691f598feb02.md b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-responsive-web-design-by-building-a-piano/612e77aba7ca691f598feb02.md
new file mode 100644
index 00000000000..f3e21880880
--- /dev/null
+++ b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-responsive-web-design-by-building-a-piano/612e77aba7ca691f598feb02.md
@@ -0,0 +1,64 @@
+---
+id: 612e77aba7ca691f598feb02
+title: Passo 2
+challengeType: 0
+dashedName: step-2
+---
+
+# --description--
+
+Adicione duas tags `meta`, uma para otimizar a página para dispositivos móveis e uma para especificar um `charset` aceito para a página.
+
+# --hints--
+
+Você deve adicionar dois elementos `meta` à página.
+
+```js
+const meta = document.querySelector('meta');
+assert.exists(meta);
+```
+
+Você deve ter dois elementos `meta`.
+
+```js
+const meta = document.querySelectorAll('meta');
+assert(meta?.length === 2);
+```
+
+Um elemento `meta` deve ter o atributo `name` definido como `viewport` e o atributo `content` definido como `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') === 'width=device-width, initial-scale=1.0' && !m?.getAttribute('charset'));
+assert.exists(target);
+```
+
+O outro elemento `meta` deve ter o atributo `charset` com o valor `UTF-8`.
+
+```js
+const meta = [...document.querySelectorAll('meta')];
+const target = meta?.find(m => !m?.getAttribute('name') && !m?.getAttribute('content') && m?.getAttribute('charset') === 'UTF-8');
+assert.exists(target);
+```
+
+
+# --seed--
+
+## --seed-contents--
+
+```html
+
+
+
+ Piano
+ --fcc-editable-region--
+
+ --fcc-editable-region--
+
+
+
+```
+
+```css
+
+```
diff --git a/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-responsive-web-design-by-building-a-piano/612e78af05201622d4bab8aa.md b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-responsive-web-design-by-building-a-piano/612e78af05201622d4bab8aa.md
new file mode 100644
index 00000000000..37ef2a044de
--- /dev/null
+++ b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-responsive-web-design-by-building-a-piano/612e78af05201622d4bab8aa.md
@@ -0,0 +1,57 @@
+---
+id: 612e78af05201622d4bab8aa
+title: Passo 3
+challengeType: 0
+dashedName: step-3
+---
+
+# --description--
+
+Hora de começar a trabalhar no piano. Crie um elemento `div` dentro do elemento `body` com o `id` definido como `piano`.
+
+# --hints--
+
+Você deve criar um elemento `div`.
+
+```js
+const div = document.querySelector('div');
+assert.exists(div);
+```
+
+O elemento `div` deve estar dentro do elemento `body`.
+
+```js
+const div = document.querySelector('div');
+assert(div?.parentElement?.localName === 'body');
+```
+
+O elemento `div` deve ter o `id` definido como `piano`.
+
+```js
+const div = document.querySelector('div');
+assert(div?.getAttribute('id') === 'piano');
+```
+
+# --seed--
+
+## --seed-contents--
+
+```html
+
+
+
+
+ Piano
+
+
+
+ --fcc-editable-region--
+
+ --fcc-editable-region--
+
+
+```
+
+```css
+
+```
diff --git a/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-responsive-web-design-by-building-a-piano/612e7d1c29fb872d6384379c.md b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-responsive-web-design-by-building-a-piano/612e7d1c29fb872d6384379c.md
new file mode 100644
index 00000000000..c8a94faa7c5
--- /dev/null
+++ b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-responsive-web-design-by-building-a-piano/612e7d1c29fb872d6384379c.md
@@ -0,0 +1,60 @@
+---
+id: 612e7d1c29fb872d6384379c
+title: Passo 4
+challengeType: 0
+dashedName: step-4
+---
+
+# --description--
+
+Coloque um segundo elemento `div` dentro da `div` existente e defina `class` como `keys`.
+
+# --hints--
+
+Crie um segundo elemento `div`.
+
+```js
+const divDiv = document.querySelectorAll('div');
+assert(divDiv?.length === 2);
+```
+
+O novo elemento `div` deve estar dentro do elemento `div` existente.
+
+```js
+const div = document.querySelector('div');
+assert(div?.children?.length === 1);
+assert(div?.children?.[0]?.localName === 'div');
+```
+
+O novo elemento `div` deve ter `class` definida como `keys`.
+
+```js
+const div = document.querySelector('div');
+assert(div?.children?.[0]?.className === 'keys');
+```
+
+# --seed--
+
+## --seed-contents--
+
+```html
+
+
+
+
+ Piano
+
+
+
+
+
+
+```
+
+```css
+
+```
diff --git a/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-responsive-web-design-by-building-a-piano/612e804c54d5e7308d7ebe56.md b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-responsive-web-design-by-building-a-piano/612e804c54d5e7308d7ebe56.md
new file mode 100644
index 00000000000..38d5e9807c6
--- /dev/null
+++ b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-responsive-web-design-by-building-a-piano/612e804c54d5e7308d7ebe56.md
@@ -0,0 +1,60 @@
+---
+id: 612e804c54d5e7308d7ebe56
+title: Passo 5
+challengeType: 0
+dashedName: step-5
+---
+
+# --description--
+
+Dentro do elemento `.keys`, adicione sete elementos `div`. Dê a todas elas a classe `key`.
+
+# --hints--
+
+Você deve criar sete novos elementos `div`.
+
+```js
+const divDivDiv = document.querySelectorAll('div');
+assert(divDivDiv?.length === 9);
+```
+
+Os sete novos elementos `div` devem estar dentro do elemento `.keys`.
+
+```js
+const keys = document.querySelector('.keys');
+assert([...keys?.children].length === 7);
+assert([...keys?.children].every(child => child?.tagName === 'DIV'));
+```
+
+Os sete novos elementos `div` devem ter `class` definida como `key`.
+
+```js
+const keys = document.querySelector('.keys');
+assert([...keys?.children].every(child => child?.classList?.contains('key')));
+```
+
+# --seed--
+
+## --seed-contents--
+
+```html
+
+
+
+
+ Piano
+
+
+
+ --fcc-editable-region--
+
+
+
+ --fcc-editable-region--
+
+
+```
+
+```css
+
+```
diff --git a/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-responsive-web-design-by-building-a-piano/612e813b3ba67633222cbe54.md b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-responsive-web-design-by-building-a-piano/612e813b3ba67633222cbe54.md
new file mode 100644
index 00000000000..7215412da5c
--- /dev/null
+++ b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-responsive-web-design-by-building-a-piano/612e813b3ba67633222cbe54.md
@@ -0,0 +1,95 @@
+---
+id: 612e813b3ba67633222cbe54
+title: Passo 6
+challengeType: 0
+dashedName: step-6
+---
+
+# --description--
+
+Lembre-se que um atributo `class` pode ter vários valores. Para separar as teclas brancas do piano das teclas pretas, você adicionará uma segunda `class` com o valor `black--key`. Adicione-a ao segundo, terceiro, quinto, sexto e sétimo elementos `.key`.
+
+# --hints--
+
+O segundo elemento `.key` deve ter o atributo `class` com o valor `black--key`.
+
+```js
+const key = document.querySelectorAll('.key')?.[1];
+assert(key?.className?.includes('black--key'));
+```
+
+O terceiro elemento `.key` deve ter a `class` `black--key`.
+
+```js
+const third = document.querySelectorAll('.key')?.[2];
+assert(third?.classList?.contains('black--key'));
+```
+
+O quinto elemento `.key` deve ter a `class` `black--key`.
+
+```js
+const fifth = document.querySelectorAll('.key')?.[4];
+assert(fifth?.classList?.contains('black--key'));
+```
+
+O sexto elemento `.key` deve ter a `class` `black--key`.
+
+```js
+const sixth = document.querySelectorAll('.key')?.[5];
+assert(sixth?.classList?.contains('black--key'));
+```
+
+O sétimo elemento `.key` deve ter a `class` `black--key`.
+
+```js
+const seventh = document.querySelectorAll('.key')?.[6];
+assert(seventh?.classList?.contains('black--key'));
+```
+
+Você deve ter cinco elementos `.black--key`.
+
+```js
+const blackKeys = document.querySelectorAll('.black--key');
+assert(blackKeys?.length === 5);
+```
+
+Você deve ter sete elementos `.key`.
+
+```js
+const keys = document.querySelectorAll('.key');
+assert(keys?.length === 7);
+```
+
+# --seed--
+
+## --seed-contents--
+
+```html
+
+
+
+
+ Piano
+
+
+
+ --fcc-editable-region--
+
+
+
+
+
+
+
+
+
+
+
+ --fcc-editable-region--
+
+
+```
+
+```css
+
+```
diff --git a/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-responsive-web-design-by-building-a-piano/612e8279827a28352ce83a72.md b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-responsive-web-design-by-building-a-piano/612e8279827a28352ce83a72.md
new file mode 100644
index 00000000000..99f23ea6b5b
--- /dev/null
+++ b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-responsive-web-design-by-building-a-piano/612e8279827a28352ce83a72.md
@@ -0,0 +1,74 @@
+---
+id: 612e8279827a28352ce83a72
+title: Passo 7
+challengeType: 0
+dashedName: step-7
+---
+
+# --description--
+
+Agora copie o conjunto dos sete elementos `.key` e cole mais dois conjuntos no div `.keys`.
+
+# --hints--
+
+Você deve ter 21 elementos `.key`.
+
+```js
+const keys = document.querySelectorAll('.key');
+assert(keys?.length === 21);
+```
+
+Você deve ter 15 elementos `.black--key`.
+
+```js
+const blackKeys = document.querySelectorAll('.black--key');
+assert(blackKeys?.length === 15);
+```
+
+Todos os elementos `.key` devem estar dentro do seu elemento `.keys`.
+
+```js
+const keys = document.querySelector('.keys');
+assert(keys?.querySelectorAll('.key')?.length === 21);
+```
+
+Todos os elementos `.black--key` devem estar dentro do seu elemento `.keys`.
+
+```js
+const keys = document.querySelector('.keys');
+assert(keys?.querySelectorAll('.black--key')?.length === 15);
+```
+
+# --seed--
+
+## --seed-contents--
+
+```html
+
+
+
+
+ Piano
+
+
+
+ --fcc-editable-region--
+
+
+
+
+
+
+
+
+
+
+
+ --fcc-editable-region--
+
+
+```
+
+```css
+
+```
diff --git a/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-responsive-web-design-by-building-a-piano/612e83ec2eca1e370f830511.md b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-responsive-web-design-by-building-a-piano/612e83ec2eca1e370f830511.md
new file mode 100644
index 00000000000..6e8e53331f9
--- /dev/null
+++ b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-responsive-web-design-by-building-a-piano/612e83ec2eca1e370f830511.md
@@ -0,0 +1,99 @@
+---
+id: 612e83ec2eca1e370f830511
+title: Passo 8
+challengeType: 0
+dashedName: step-8
+---
+
+# --description--
+
+Adicione um elemento `link` dentro do elemento `head`. Para esse elemento `link`, defina o atributo `rel` como `stylesheet` e `href` como `./styles.css`.
+
+# --hints--
+
+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 o atributo `rel` com o valor `stylesheet`.
+
+```js
+assert.match(code, /
+
+
+ --fcc-editable-region--
+
+ Piano
+
+ --fcc-editable-region--
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+```css
+
+```
diff --git a/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-responsive-web-design-by-building-a-piano/612e89562043183c86df287c.md b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-responsive-web-design-by-building-a-piano/612e89562043183c86df287c.md
new file mode 100644
index 00000000000..b5de0850a02
--- /dev/null
+++ b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-responsive-web-design-by-building-a-piano/612e89562043183c86df287c.md
@@ -0,0 +1,77 @@
+---
+id: 612e89562043183c86df287c
+title: Passo 9
+challengeType: 0
+dashedName: step-9
+---
+
+# --description--
+
+Navegadores podem aplicar valores padrão de margem e de preenchimento a elementos específicos. Para garantir que seu piano pareça correto, você precisa redefinir o box model.
+
+Adicione um seletor de regras `html` ao seu arquivo CSS e defina a propriedade `box-sizing` como `border-box`.
+
+# --hints--
+
+Você deve ter um seletor `html`.
+
+```js
+assert(new __helpers.CSSHelp(document).getStyle('html'));
+```
+
+O seletor `html` deve ter a propriedade `box-sizing` com o valor de `border-box`.
+
+```js
+assert(new __helpers.CSSHelp(document).getStyle('html')?.boxSizing === 'border-box');
+```
+
+# --seed--
+
+## --seed-contents--
+
+```html
+
+
+
+
+ Piano
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+```css
+--fcc-editable-region--
+
+--fcc-editable-region--
+```
diff --git a/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-responsive-web-design-by-building-a-piano/612e89d254fe5d3df7d6693d.md b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-responsive-web-design-by-building-a-piano/612e89d254fe5d3df7d6693d.md
new file mode 100644
index 00000000000..88250ebd3e2
--- /dev/null
+++ b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-responsive-web-design-by-building-a-piano/612e89d254fe5d3df7d6693d.md
@@ -0,0 +1,83 @@
+---
+id: 612e89d254fe5d3df7d6693d
+title: Passo 10
+challengeType: 0
+dashedName: step-10
+---
+
+# --description--
+
+Agora que você redefiniu o box model do `html`, é preciso passar isso para os elementos internos também. Para fazer isso, você pode definir a propriedade `box-sizing` como `inherit`, o que dirá aos elementos de destino que usemo mesmo valor que o elemento pai.
+
+Você também precisará apontar para os pseudoelementos, que são palavras-chave especiais que seguem um seletor. Os dois pseudoelementos que você usará são `::before` e `::after`.
+
+`::before` cria um pseudoelemento que é o primeiro filho do elemento selecionado, enquanto `::after` cria um pseudoelemento que é o último filho do elemento selecionado. Esses pseudoelementos são muitas vezes usados para criar conteúdo estético, algo que você verá mais tarde neste projeto.
+
+Por enquanto, crie um seletor de CSS que aponte para todos os elementos usando `*` e inclua os pseudoelementos com `::before` e `::after`. Defina a propriedade `box-sizing` para `inherit`.
+
+# --hints--
+
+Você deve ter um seletor `*, ::before, ::after`.
+
+```js
+assert(new __helpers.CSSHelp(document).getStyle('*, ::before, ::after'));
+```
+
+O seletor `*, ::before, ::after` deve ter a propriedade `box-sizing` definida como `inherit`.
+
+```js
+assert(new __helpers.CSSHelp(document).getStyle('*, ::before, ::after')?.boxSizing === 'inherit');
+```
+
+# --seed--
+
+## --seed-contents--
+
+```html
+
+
+
+
+ Piano
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+```css
+--fcc-editable-region--
+html {
+ box-sizing: border-box;
+}
+--fcc-editable-region--
+```
diff --git a/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-responsive-web-design-by-building-a-piano/612e8eebe3a6dc3fcc33a66f.md b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-responsive-web-design-by-building-a-piano/612e8eebe3a6dc3fcc33a66f.md
new file mode 100644
index 00000000000..999d4f94cef
--- /dev/null
+++ b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-responsive-web-design-by-building-a-piano/612e8eebe3a6dc3fcc33a66f.md
@@ -0,0 +1,95 @@
+---
+id: 612e8eebe3a6dc3fcc33a66f
+title: Passo 11
+challengeType: 0
+dashedName: step-11
+---
+
+# --description--
+
+Agora dê ao elemento `#piano` um seletor `id`. Defina a propriedade `background-color` como `#00471b`, uma propriedade `width` de `992px` e uma propriedade `height` de `290px`.
+
+# --hints--
+
+Você deve ter um seletor `#piano`.
+
+```js
+assert(new __helpers.CSSHelp(document).getStyle('#piano'));
+```
+
+O seletor `#piano` deve ter a propriedade `background-color` definida como `#00471b`.
+
+```js
+assert(new __helpers.CSSHelp(document).getStyle('#piano')?.backgroundColor === 'rgb(0, 71, 27)');
+```
+
+O seletor `#piano` deve ter a propriedade `width` definida como `992px`.
+
+```js
+assert(new __helpers.CSSHelp(document).getStyle('#piano')?.width === '992px');
+```
+
+O seletor `#piano` deve ter a propriedade `height` definida como `290px`.
+
+```js
+assert(new __helpers.CSSHelp(document).getStyle('#piano')?.height === '290px');
+```
+
+# --seed--
+
+## --seed-contents--
+
+```html
+
+
+
+
+ Piano
+
+
+
+
+
+
+
+```
+
+```css
+html {
+ box-sizing: border-box;
+}
+
+*, *::before, *::after {
+ box-sizing: inherit;
+}
+
+#piano {
+ background-color: #00471b;
+ width: 992px;
+ height: 290px;
+ margin: 80px auto;
+}
+
+--fcc-editable-region--
+.keys {
+ background-color: #040404;
+ width: 949px;
+ height: 180px;
+}
+--fcc-editable-region--
+```
diff --git a/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-responsive-web-design-by-building-a-piano/612e9a21381a1949327512e6.md b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-responsive-web-design-by-building-a-piano/612e9a21381a1949327512e6.md
new file mode 100644
index 00000000000..19aa617372a
--- /dev/null
+++ b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-responsive-web-design-by-building-a-piano/612e9a21381a1949327512e6.md
@@ -0,0 +1,89 @@
+---
+id: 612e9a21381a1949327512e6
+title: Passo 15
+challengeType: 0
+dashedName: step-15
+---
+
+# --description--
+
+Mova as teclas para a posição certa ajustando o seletor de `#piano`. Defina a propriedade `padding` como `90px 20px 0 20px`.
+
+# --hints--
+
+O seletor `#piano` deve ter uma propriedade `padding` definida como `90px 20px 0 20px`.
+
+```js
+assert(new __helpers.CSSHelp(document).getStyle('#piano')?.padding === '90px 20px 0px');
+```
+
+# --seed--
+
+## --seed-contents--
+
+```html
+
+
+
+
+ Piano
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+```css
+html {
+ box-sizing: border-box;
+}
+
+*, *::before, *::after {
+ box-sizing: inherit;
+}
+
+--fcc-editable-region--
+#piano {
+ background-color: #00471b;
+ width: 992px;
+ height: 290px;
+ margin: 80px auto;
+}
+--fcc-editable-region--
+
+.keys {
+ background-color: #040404;
+ width: 949px;
+ height: 180px;
+ padding-left: 2px;
+}
+```
diff --git a/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-responsive-web-design-by-building-a-piano/612e9d142affc44a453655db.md b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-responsive-web-design-by-building-a-piano/612e9d142affc44a453655db.md
new file mode 100644
index 00000000000..60c139f5ced
--- /dev/null
+++ b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-responsive-web-design-by-building-a-piano/612e9d142affc44a453655db.md
@@ -0,0 +1,117 @@
+---
+id: 612e9d142affc44a453655db
+title: Passo 16
+challengeType: 0
+dashedName: step-16
+---
+
+# --description--
+
+Hora de estilizar as teclas em si. Crie um seletor `class` para os elementos `.key`. Define `background-color` com o valor `#ffffff`, a propriedade `position` como `relative`, a propriedade `width` como `41px` e a propriedade `height` como `175px`.
+
+# --hints--
+
+Você deve ter um seletor `.key`.
+
+```js
+assert(new __helpers.CSSHelp(document).getStyle('.key'));
+```
+
+O seletor `.key` deve ter a propriedade `background-color` definida como `#ffffff`.
+
+```js
+assert(new __helpers.CSSHelp(document).getStyle('.key')?.backgroundColor === 'rgb(255, 255, 255)');
+```
+
+O seletor `.key` deve ter a propriedade `position` definida para `relative`.
+
+```js
+assert(new __helpers.CSSHelp(document).getStyle('.key')?.position === 'relative');
+```
+
+O seletor `.key` deve ter a propriedade `width` definida para `41px`.
+
+```js
+assert(new __helpers.CSSHelp(document).getStyle('.key')?.width === '41px');
+```
+
+O seletor `.key` deve ter a propriedade `height` definida como `175px`.
+
+```js
+assert(new __helpers.CSSHelp(document).getStyle('.key')?.height === '175px');
+```
+
+
+# --seed--
+
+## --seed-contents--
+
+```html
+
+
+
+
+ Piano
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+```css
+html {
+ box-sizing: border-box;
+}
+
+*, *::before, *::after {
+ box-sizing: inherit;
+}
+
+#piano {
+ background-color: #00471b;
+ width: 992px;
+ height: 290px;
+ margin: 80px auto;
+ padding: 90px 20px 0 20px;
+}
+
+.keys {
+ background-color: #040404;
+ width: 949px;
+ height: 180px;
+ padding-left: 2px;
+}
+
+--fcc-editable-region--
+
+--fcc-editable-region--
+```
diff --git a/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-responsive-web-design-by-building-a-piano/612e9f1e7e5ccd4fa9ada0be.md b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-responsive-web-design-by-building-a-piano/612e9f1e7e5ccd4fa9ada0be.md
new file mode 100644
index 00000000000..82c7567d1c9
--- /dev/null
+++ b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-responsive-web-design-by-building-a-piano/612e9f1e7e5ccd4fa9ada0be.md
@@ -0,0 +1,103 @@
+---
+id: 612e9f1e7e5ccd4fa9ada0be
+title: Passo 17
+challengeType: 0
+dashedName: step-17
+---
+
+# --description--
+
+Dê à `.key` uma `margin` de `2px` e a propriedade `float` definida como `left`.
+
+# --hints--
+
+O seletor `.key` deve ter uma propriedade `margin` definida como `2px`.
+
+```js
+assert(new __helpers.CSSHelp(document).getStyle('.key')?.margin === '2px');
+```
+
+O seletor `.key` deve ter uma propriedade `float` definida como `left`.
+
+```js
+assert(new __helpers.CSSHelp(document).getStyle('.key')?.float === 'left');
+```
+
+# --seed--
+
+## --seed-contents--
+
+```html
+
+
+
+
+ Piano
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+```css
+html {
+ box-sizing: border-box;
+}
+
+*, *::before, *::after {
+ box-sizing: inherit;
+}
+
+#piano {
+ background-color: #00471b;
+ width: 992px;
+ height: 290px;
+ margin: 80px auto;
+ padding: 90px 20px 0 20px;
+}
+
+.keys {
+ background-color: #040404;
+ width: 949px;
+ height: 180px;
+ padding-left: 2px;
+}
+
+--fcc-editable-region--
+.key {
+ background-color: #ffffff;
+ position: relative;
+ width: 41px;
+ height: 175px;
+}
+--fcc-editable-region--
+```
diff --git a/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-responsive-web-design-by-building-a-piano/612ea4c4993aba52ab4aa32e.md b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-responsive-web-design-by-building-a-piano/612ea4c4993aba52ab4aa32e.md
new file mode 100644
index 00000000000..a4d8c8e0d55
--- /dev/null
+++ b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-responsive-web-design-by-building-a-piano/612ea4c4993aba52ab4aa32e.md
@@ -0,0 +1,119 @@
+---
+id: 612ea4c4993aba52ab4aa32e
+title: Passo 18
+challengeType: 0
+dashedName: step-18
+---
+
+# --description--
+
+Agora é hora de usar os pseudosseletores que você preparou anteriormente. Para criar as teclas pretas, adicione um novo seletor `.key.black--key::after`. Ele terá como destino os elementos com a classe `key black--key`e selecionará o pseudoelemento após esses elementos no HTML.
+
+No novo seletor, defina a `background-color` como `#1d1e22`. Defina também a propriedade `content` para `""`. Isto deixará os pseudoelementos vazios.
+
+A propriedade `content` é usada para definir ou substituir o conteúdo do elemento. Por padrão, os pseudoelementos criados pelos pseudosseletores `::before` e `::after` estão vazios e os elementos não serão renderizados na página. Definir a propriedade `content` como uma string vazia `""` garantirá que o elemento seja renderizado na página embora ainda esteja vazio.
+
+Se você quiser experimentar, tente remover a propriedade `background-color` e definir valores diferentes para a propriedade `content`, tais como `"♥"`. Lembre-se de desfazer essas alterações quando terminar para que os testes passem.
+
+# --hints--
+
+Você deve ter um seletor `.key.black--key::after`.
+
+```js
+assert(new __helpers.CSSHelp(document).getStyle('.key.black--key::after'));
+```
+
+O seletor `.key.black--key::after` deve ter a propriedade `background-color` definida como `#1d1e22`.
+
+```js
+assert(new __helpers.CSSHelp(document).getStyle('.key.black--key::after')?.backgroundColor === 'rgb(29, 30, 34)');
+```
+
+O seletor `.key.black--key::after` deve ter a propriedade `content` definida como `""`.
+
+```js
+assert(new __helpers.CSSHelp(document).getStyle('.key.black--key::after')?.content === '""');
+```
+
+# --seed--
+
+## --seed-contents--
+
+```html
+
+
+
+
+ Piano
+
+
+
+
+
+
+
+```
+
+```css
+html {
+ box-sizing: border-box;
+}
+
+*, *::before, *::after {
+ box-sizing: inherit;
+}
+
+#piano {
+ background-color: #00471b;
+ width: 992px;
+ height: 290px;
+ margin: 80px auto;
+ padding: 90px 20px 0 20px;
+ position: relative;
+ border-radius: 10px;
+}
+
+.keys {
+ background-color: #040404;
+ width: 949px;
+ height: 180px;
+ padding-left: 2px;
+ overflow: hidden;
+}
+
+.key {
+ background-color: #ffffff;
+ position: relative;
+ width: 41px;
+ height: 175px;
+ margin: 2px;
+ float: left;
+ border-radius: 0 0 3px 3px;
+}
+
+.key.black--key::after {
+ background-color: #1d1e22;
+ content: "";
+ position: absolute;
+ left: -18px;
+ width: 32px;
+ height: 100px;
+ border-radius: 0 0 3px 3px;
+}
+
+.logo {
+ width: 200px;
+ position: absolute;
+ top: 23px;
+}
+
+@media (max-width: 768px) {
+ #piano {
+ width: 358px;
+ }
+
+ .keys {
+ width: 318px;
+ }
+
+ .logo {
+ width: 150px;
+ }
+}
+
+@media (max-width: 1199px) and (min-width: 769px) {
+ #piano {
+ width: 675px;
+ }
+
+ .keys {
+ width: 633px;
+ }
+}
+```
diff --git a/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-the-css-box-model-by-building-a-rothko-painting/60a3e3396c7b40068ad6996a.md b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-the-css-box-model-by-building-a-rothko-painting/60a3e3396c7b40068ad6996a.md
new file mode 100644
index 00000000000..d8ba3bebc26
--- /dev/null
+++ b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-the-css-box-model-by-building-a-rothko-painting/60a3e3396c7b40068ad6996a.md
@@ -0,0 +1,55 @@
+---
+id: 60a3e3396c7b40068ad6996a
+title: Passo 1
+challengeType: 0
+dashedName: step-1
+---
+
+# --description--
+
+Agora, você já deve estar familiarizado com os elementos básicos que uma página em HTML deve ter.
+
+Defina seu código com uma declaração `DOCTYPE` e com os elementos `html`, `head` e `body`.
+
+# --hints--
+
+O código deve ter a declaração ``.
+
+```js
+assert(code.match(//i));
+```
+
+O código deve ter um elemento `html`.
+
+```js
+assert(document.querySelectorAll('html').length === 1);
+```
+
+O código deve ter um elemento `head` dentro do elemento `html`.
+
+```js
+assert(document.querySelectorAll('head').length === 1);
+```
+
+O código deve ter um elemento `body` dentro do elemento `html`.
+
+```js
+assert(document.querySelectorAll('body').length === 1);
+```
+
+O elemento `head` deve estar antes do elemento `body`.
+
+```js
+assert(document.querySelector('body').previousElementSibling.tagName === 'HEAD');
+```
+
+# --seed--
+
+## --seed-contents--
+
+```html
+--fcc-editable-region--
+
+--fcc-editable-region--
+
+```
diff --git a/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-the-css-box-model-by-building-a-rothko-painting/60a3e3396c7b40068ad6996b.md b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-the-css-box-model-by-building-a-rothko-painting/60a3e3396c7b40068ad6996b.md
new file mode 100644
index 00000000000..d740c32437f
--- /dev/null
+++ b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-the-css-box-model-by-building-a-rothko-painting/60a3e3396c7b40068ad6996b.md
@@ -0,0 +1,65 @@
+---
+id: 60a3e3396c7b40068ad6996b
+title: Passo 2
+challengeType: 0
+dashedName: step-2
+---
+
+# --description--
+
+Dentro do elemento `head`, adicione uma tag `meta` que define o `charset` como `UTF-8` e um elemento `title` com o valor `Rothko Painting`.
+
+Dentro do elemento `body`, adicione um elemento `img` com um `src` de `https://cdn.freecodecamp.org/curriculum/css-box-model/diagram-1.png`.
+# --hints--
+
+O código deve ter uma tag `meta`.
+
+```js
+assert(document.querySelectorAll('meta').length === 1);
+```
+
+A tag `meta` deve definir o `charset` como `UTF-8`.
+
+```js
+assert(document.querySelector('meta').getAttribute('charset') === 'UTF-8');
+```
+
+O código deve ter um elemento `title`.
+
+```js
+assert(document.querySelectorAll('title').length === 1);
+```
+
+O `title` deve ser `Rothko Painting`.
+
+```js
+assert(document.querySelector('title').innerText === 'Rothko Painting');
+```
+
+O código deve ter um elemento `img`.
+
+```js
+assert(document.querySelectorAll('img').length === 1);
+```
+
+O elemento `img` deve ter para o atributo `src` o valor de `https://cdn.freecodecamp.org/curriculum/css-box-model/diagram-1.png`.
+
+```js
+assert(document.querySelector('img').getAttribute('src') === 'https://cdn.freecodecamp.org/curriculum/css-box-model/diagram-1.png');
+```
+
+# --seed--
+
+## --seed-contents--
+
+```html
+
+
+--fcc-editable-region--
+
+
+
+
+--fcc-editable-region--
+
+```
diff --git a/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-the-css-box-model-by-building-a-rothko-painting/60a3e3396c7b40068ad6996c.md b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-the-css-box-model-by-building-a-rothko-painting/60a3e3396c7b40068ad6996c.md
new file mode 100644
index 00000000000..4ac39113b3f
--- /dev/null
+++ b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-the-css-box-model-by-building-a-rothko-painting/60a3e3396c7b40068ad6996c.md
@@ -0,0 +1,42 @@
+---
+id: 60a3e3396c7b40068ad6996c
+title: Passo 3
+challengeType: 0
+dashedName: step-3
+---
+
+# --description--
+
+No modelo de caixa do CSS, todos os elementos do HTML são tratados como uma caixa com quatro áreas.
+
+Imagine que você recebeu uma caixa de sua loja on-line favorita -- o conteúdo é o item na caixa, ou, no nosso caso, um elemento de cabeçalho, de parágrafo ou de imagem.
+
+Altere o atributo `src` na `` de `https://cdn.freecodecamp.org/curriculum/css-box-model/diagram-1.png` para `https://cdn.freecodecamp.org/curriculum/css-box-model/diagram-2.png`.
+
+# --hints--
+
+O elemento `img` deve ter para o atributo `src` o valor de `https://cdn.freecodecamp.org/curriculum/css-box-model/diagram-2.png`
+
+```js
+assert(document.querySelector('img').getAttribute('src') === 'https://cdn.freecodecamp.org/curriculum/css-box-model/diagram-2.png');
+```
+
+# --seed--
+
+## --seed-contents--
+
+```html
+
+
+
+
+ Rothko Painting
+
+
+--fcc-editable-region--
+
+--fcc-editable-region--
+
+
+```
+
diff --git a/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-the-css-box-model-by-building-a-rothko-painting/60a3e3396c7b40068ad6996d.md b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-the-css-box-model-by-building-a-rothko-painting/60a3e3396c7b40068ad6996d.md
new file mode 100644
index 00000000000..a28a8c04e4c
--- /dev/null
+++ b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-the-css-box-model-by-building-a-rothko-painting/60a3e3396c7b40068ad6996d.md
@@ -0,0 +1,41 @@
+---
+id: 60a3e3396c7b40068ad6996d
+title: Passo 4
+challengeType: 0
+dashedName: step-4
+---
+
+# --description--
+
+O conteúdo é cercado por um espaço chamado preenchimento (padding), do mesmo modo que um plástico de bolha separa um item da caixa ao seu redor.
+
+Pense na borda como a caixa em que o item foi enviado.
+
+Altere o atributo `src` para `https://cdn.freecodecamp.org/curriculum/css-box-model/diagram-3.png`
+
+# --hints--
+
+O elemento `img` deve ter para o atributo `src` o valor de `https://cdn.freecodecamp.org/curriculum/css-box-model/diagram-3.png`
+
+```js
+assert(document.querySelector('img').getAttribute('src') === 'https://cdn.freecodecamp.org/curriculum/css-box-model/diagram-3.png');
+```
+
+# --seed--
+
+## --seed-contents--
+
+```html
+
+
+
+
+ Rothko Painting
+
+
+--fcc-editable-region--
+
+--fcc-editable-region--
+
+
+```
diff --git a/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-the-css-box-model-by-building-a-rothko-painting/60a3e3396c7b40068ad6996e.md b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-the-css-box-model-by-building-a-rothko-painting/60a3e3396c7b40068ad6996e.md
new file mode 100644
index 00000000000..a39f558d8a3
--- /dev/null
+++ b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-the-css-box-model-by-building-a-rothko-painting/60a3e3396c7b40068ad6996e.md
@@ -0,0 +1,43 @@
+---
+id: 60a3e3396c7b40068ad6996e
+title: Passo 5
+challengeType: 0
+dashedName: step-5
+---
+
+# --description--
+
+A margem é a área fora da caixa e pode ser usada para controlar o espaço entre outras caixas ou elementos.
+
+Aqui, o elemento inferior tem uma margem superior maior, empurrando-o mais para baixo na página.
+
+Agora que você entende o modelo da caixa do CSS, vamos começar a trabalhar na pintura de Rothko.
+
+Remova o elemento ``.
+
+# --hints--
+
+Você não deve ter um elemento `img` no código.
+
+```js
+assert(document.querySelector('img') === null);
+```
+
+# --seed--
+
+## --seed-contents--
+
+```html
+
+
+
+
+ Rothko Painting
+
+
+--fcc-editable-region--
+
+--fcc-editable-region--
+
+
+```
diff --git a/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-the-css-box-model-by-building-a-rothko-painting/60a3e3396c7b40068ad6996f.md b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-the-css-box-model-by-building-a-rothko-painting/60a3e3396c7b40068ad6996f.md
new file mode 100644
index 00000000000..3fcd4419124
--- /dev/null
+++ b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-the-css-box-model-by-building-a-rothko-painting/60a3e3396c7b40068ad6996f.md
@@ -0,0 +1,47 @@
+---
+id: 60a3e3396c7b40068ad6996f
+title: Passo 6
+challengeType: 0
+dashedName: step-6
+---
+
+# --description--
+
+Adicione um elemento `div` ao `body`.
+
+Defina o atributo `class` como `canvas`. Por exemplo, `
`.
+
+Esse elemento atuará como a tela para sua pintura.
+
+# --hints--
+
+O código deve ter um elemento `div`.
+
+```js
+assert(document.querySelectorAll('div').length === 1)
+```
+
+O elemento `div` deve uma `class` com o valor `canvas`.
+
+```js
+assert(document.querySelector('div').className.split(' ').includes('canvas'))
+```
+
+# --seed--
+
+## --seed-contents--
+
+```html
+
+
+
+
+ Rothko Painting
+
+
+--fcc-editable-region--
+
+--fcc-editable-region--
+
+
+```
diff --git a/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-the-css-box-model-by-building-a-rothko-painting/60a3e3396c7b40068ad69970.md b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-the-css-box-model-by-building-a-rothko-painting/60a3e3396c7b40068ad69970.md
new file mode 100644
index 00000000000..7671008f7bd
--- /dev/null
+++ b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-the-css-box-model-by-building-a-rothko-painting/60a3e3396c7b40068ad69970.md
@@ -0,0 +1,59 @@
+---
+id: 60a3e3396c7b40068ad69970
+title: Passo 7
+challengeType: 0
+dashedName: step-7
+---
+
+# --description--
+
+Antes de começar a estilizar a `div` que você adicionou, você precisa vincular o CSS ao HTML.
+
+Adicione um elemento `link` para vincular o arquivo `styles.css`. Defina o `href` como `./styles.css` e lembre-se de definir o atributo `rel` como `stylesheet`.
+
+# --hints--
+
+O código deve ter um elemento `link`.
+
+```js
+assert(//.test(code));
+```
+
+# --seed--
+
+## --seed-contents--
+
+```html
+
+
+
+
+ Rothko Painting
+--fcc-editable-region--
+
+--fcc-editable-region--
+
+
+
+
+
+
+```
diff --git a/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-the-css-box-model-by-building-a-rothko-painting/60a3e3396c7b40068ad69971.md b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-the-css-box-model-by-building-a-rothko-painting/60a3e3396c7b40068ad69971.md
new file mode 100644
index 00000000000..70171308dc3
--- /dev/null
+++ b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-the-css-box-model-by-building-a-rothko-painting/60a3e3396c7b40068ad69971.md
@@ -0,0 +1,67 @@
+---
+id: 60a3e3396c7b40068ad69971
+title: Passo 8
+challengeType: 0
+dashedName: step-8
+---
+
+# --description--
+
+É hora de usar o CSS.
+
+Mesmo que a `
` não tenha texto, ela ainda é tratada como uma caixa com conteúdo. Escreva uma nova regra de CSS que use o seletor `.canvas` e defina a `width` como 500 pixels. Aqui está uma regra de CSS que define a largura da classe `card` como 300 pixels:
+
+```css
+.card {
+ width: 300px;
+}
+```
+
+# --hints--
+
+Você deve ter um seletor `.canvas`.
+
+```js
+const hasCanvas = new __helpers.CSSHelp(document).getStyle('.canvas');
+assert(hasCanvas)
+```
+
+Você deve definir a propriedade `width` como `500px`.
+
+```js
+const hasWidth = new __helpers.CSSHelp(document).getCSSRules().some(x => x.style.width === '500px')
+assert(hasWidth);
+```
+
+O elemento `.canvas` deve ter um `width` com o valor de `500px`.
+
+```js
+const width = new __helpers.CSSHelp(document).getStyle('.canvas')?.getPropertyValue('width');
+assert(width === '500px');
+```
+
+# --seed--
+
+## --seed-contents--
+
+```css
+--fcc-editable-region--
+
+--fcc-editable-region--
+
+```
+
+```html
+
+
+
+
+ Rothko Painting
+
+
+
+
+
+
+
+```
diff --git a/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-the-css-box-model-by-building-a-rothko-painting/60a3e3396c7b40068ad69972.md b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-the-css-box-model-by-building-a-rothko-painting/60a3e3396c7b40068ad69972.md
new file mode 100644
index 00000000000..54da875c1c3
--- /dev/null
+++ b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-the-css-box-model-by-building-a-rothko-painting/60a3e3396c7b40068ad69972.md
@@ -0,0 +1,54 @@
+---
+id: 60a3e3396c7b40068ad69972
+title: Passo 9
+challengeType: 0
+dashedName: step-9
+---
+
+# --description--
+
+Adicione a propriedade `height` com o valor de `600px` à regra `.canvas`.
+
+# --hints--
+
+Você deve definir a propriedade `height` como `600px`.
+
+```js
+const hasHeight = new __helpers.CSSHelp(document).getCSSRules().some(x => x.style.height === '600px');
+assert(hasHeight);
+```
+
+O elemento `.canvas` deve ter uma `height` com o valor de `600px`.
+
+```js
+const canvasHeight = new __helpers.CSSHelp(document).getStyle('.canvas')?.getPropertyValue('height');
+assert(canvasHeight === '600px');
+```
+
+# --seed--
+
+## --seed-contents--
+
+```css
+.canvas {
+ width: 500px;
+--fcc-editable-region--
+
+--fcc-editable-region--
+}
+```
+
+```html
+
+
+
+
+ Rothko Painting
+
+
+
+
+
+
+
+```
diff --git a/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-the-css-box-model-by-building-a-rothko-painting/60a3e3396c7b40068ad69973.md b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-the-css-box-model-by-building-a-rothko-painting/60a3e3396c7b40068ad69973.md
new file mode 100644
index 00000000000..7c63b7bda68
--- /dev/null
+++ b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-the-css-box-model-by-building-a-rothko-painting/60a3e3396c7b40068ad69973.md
@@ -0,0 +1,55 @@
+---
+id: 60a3e3396c7b40068ad69973
+title: Passo 10
+challengeType: 0
+dashedName: step-10
+---
+
+# --description--
+
+Altere a `background-color` da tela para `#4d0f00`.
+
+# --hints--
+
+Você deve definir o valor da propriedade `background-color` para `#4d0f00`.
+
+```js
+const hasBackground = new __helpers.CSSHelp(document).getCSSRules().some(x => x.style['background-color'] === 'rgb(77, 15, 0)');
+assert(hasBackground);
+```
+
+O elemento `.canvas` deve ter a `background-color` com o valor de `#4d0f00`.
+
+```js
+const canvasBackground = new __helpers.CSSHelp(document).getStyle('.canvas')?.getPropertyValue('background-color');
+assert(canvasBackground === 'rgb(77, 15, 0)');
+```
+
+# --seed--
+
+## --seed-contents--
+
+```css
+.canvas {
+ width: 500px;
+ height: 600px;
+--fcc-editable-region--
+
+--fcc-editable-region--
+}
+```
+
+```html
+
+
+
+
+ Rothko Painting
+
+
+
+
+
+
+
+```
diff --git a/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-the-css-box-model-by-building-a-rothko-painting/60a3e3396c7b40068ad69974.md b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-the-css-box-model-by-building-a-rothko-painting/60a3e3396c7b40068ad69974.md
new file mode 100644
index 00000000000..6215ce2d2c3
--- /dev/null
+++ b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-the-css-box-model-by-building-a-rothko-painting/60a3e3396c7b40068ad69974.md
@@ -0,0 +1,67 @@
+---
+id: 60a3e3396c7b40068ad69974
+title: Passo 11
+challengeType: 0
+dashedName: step-11
+---
+
+# --description--
+
+Toda pintura precisa de uma moldura.
+
+Envolva o elemento `.canvas` em outra `div`. Dê à `div` a classe `frame`.
+# --hints--
+
+Você deve adicionar um novo elemento `div`.
+
+```js
+assert(document.querySelectorAll('div').length === 2)
+```
+
+O elemento `.canvas` deve estar dentro do novo elemento `div`.
+
+```js
+assert(document.querySelector('.canvas').parentElement.tagName === 'DIV');
+```
+
+O novo elemento `div` deve uma `class` com o valor `frame`.
+
+```js
+assert(document.querySelector('div').className.split(' ').includes('frame'));
+```
+
+O novo elemento `div` deve estar dentro do elemento `body`.
+
+```js
+assert(document.querySelector('div').parentElement.tagName === 'BODY');
+```
+
+# --seed--
+
+## --seed-contents--
+
+```css
+.canvas {
+ width: 500px;
+ height: 600px;
+ background-color: #4d0f00;
+}
+```
+
+```html
+
+
+
+
+ Rothko Painting
+
+
+
+--fcc-editable-region--
+
+
+
+
+--fcc-editable-region--
+
+ ```
diff --git a/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-the-css-box-model-by-building-a-rothko-painting/60a3e3396c7b40068ad69975.md b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-the-css-box-model-by-building-a-rothko-painting/60a3e3396c7b40068ad69975.md
new file mode 100644
index 00000000000..8acecdfc2a7
--- /dev/null
+++ b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-the-css-box-model-by-building-a-rothko-painting/60a3e3396c7b40068ad69975.md
@@ -0,0 +1,67 @@
+---
+id: 60a3e3396c7b40068ad69975
+title: Passo 12
+challengeType: 0
+dashedName: step-12
+---
+
+# --description--
+
+Escreva uma nova regra usando o seletor de classe `.frame`.
+
+Use a declaração abreviada de `border` para dar ao elemento `.frame` uma borda sólida e preta com uma largura de `50px`.
+
+# --hints--
+
+Você deve ter um seletor `.frame`.
+
+```js
+const hasFrame = new __helpers.CSSHelp(document).getStyle('.frame');
+assert(hasFrame);
+```
+
+Você deve definir a propriedade `border` como `50px solid black`.
+
+```js
+const hasBorder = new __helpers.CSSHelp(document).getCSSRules().some(x => x.style.border === '50px solid black');
+assert(hasBorder);
+```
+
+O elemento `.frame` deve ter o atributo `border` com o valor de `50px solid black`.
+
+```js
+const frameBorder = new __helpers.CSSHelp(document).getStyle('.frame')?.getPropertyValue('border');
+assert(frameBorder === '50px solid black');
+```
+
+# --seed--
+
+## --seed-contents--
+
+```css
+.canvas {
+ width: 500px;
+ height: 600px;
+ background-color: #4d0f00;
+}
+--fcc-editable-region--
+
+--fcc-editable-region--
+```
+
+```html
+
+
+
+
+ Rothko Painting
+
+
+
+
+
+
+
+
+
+```
diff --git a/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-the-css-box-model-by-building-a-rothko-painting/60a3e3396c7b40068ad69976.md b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-the-css-box-model-by-building-a-rothko-painting/60a3e3396c7b40068ad69976.md
new file mode 100644
index 00000000000..d9d4525322f
--- /dev/null
+++ b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-the-css-box-model-by-building-a-rothko-painting/60a3e3396c7b40068ad69976.md
@@ -0,0 +1,64 @@
+---
+id: 60a3e3396c7b40068ad69976
+title: Passo 13
+challengeType: 0
+dashedName: step-13
+---
+
+# --description--
+
+O quadro é muito largo.
+
+No seletor `.frame`, defina a `width` como 500 pixels.
+
+# --hints--
+
+Você deve definir a propriedade `width` como `500px`.
+
+```js
+const widthFilter = new __helpers.CSSHelp(document).getCSSRules().filter(x => x.style.width === '500px');
+assert(widthFilter.length === 2);
+```
+
+O elemento `.frame` deve ter um `width` com o valor de `500px`.
+
+```js
+const frameWidth = new __helpers.CSSHelp(document).getStyle('.frame')?.getPropertyValue('width');
+assert(frameWidth === '500px');
+```
+
+# --seed--
+
+## --seed-contents--
+
+```css
+.canvas {
+ width: 500px;
+ height: 600px;
+ background-color: #4d0f00;
+}
+
+.frame {
+ border: 50px solid black;
+--fcc-editable-region--
+
+--fcc-editable-region--
+}
+```
+
+```html
+
+
+
+
+ Rothko Painting
+
+
+
+
+
+
+
+
+
+```
diff --git a/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-the-css-box-model-by-building-a-rothko-painting/60a3e3396c7b40068ad69977.md b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-the-css-box-model-by-building-a-rothko-painting/60a3e3396c7b40068ad69977.md
new file mode 100644
index 00000000000..46750cf6484
--- /dev/null
+++ b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-the-css-box-model-by-building-a-rothko-painting/60a3e3396c7b40068ad69977.md
@@ -0,0 +1,65 @@
+---
+id: 60a3e3396c7b40068ad69977
+title: Passo 14
+challengeType: 0
+dashedName: step-14
+---
+
+# --description--
+
+Use o preenchimento (padding) para ajustar o espaçamento dentro de um elemento.
+
+Em `.frame`, use a propriedade abreviada `padding` para aumentar o espaço entre os elementos `.frame` e `.canvas` em `50px`. A propriedade abreviada aumentará o espaço acima, abaixo, na esquerda e na direita da borda do elemento e da tela dentro dele.
+
+# --hints--
+
+Você deve definir a propriedade `padding` como `50px`.
+
+```js
+const hasPadding = new __helpers.CSSHelp(document).getCSSRules().some(x => x.style.padding === '50px');
+assert(hasPadding);
+```
+
+O elemento `.frame` deve ter um valor de `padding` igual a `50px`.
+
+```js
+const framePadding = new __helpers.CSSHelp(document).getStyle('.frame')?.getPropertyValue('padding');
+assert(framePadding === '50px');
+```
+
+# --seed--
+
+## --seed-contents--
+
+```css
+.canvas {
+ width: 500px;
+ height: 600px;
+ background-color: #4d0f00;
+}
+
+.frame {
+ border: 50px solid black;
+ width: 500px;
+--fcc-editable-region--
+
+--fcc-editable-region--
+}
+```
+
+```html
+
+
+
+
+ Rothko Painting
+
+
+
+
+
+
+
+
+
+```
diff --git a/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-the-css-box-model-by-building-a-rothko-painting/60a3e3396c7b40068ad69978.md b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-the-css-box-model-by-building-a-rothko-painting/60a3e3396c7b40068ad69978.md
new file mode 100644
index 00000000000..3190830fb89
--- /dev/null
+++ b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-the-css-box-model-by-building-a-rothko-painting/60a3e3396c7b40068ad69978.md
@@ -0,0 +1,66 @@
+---
+id: 60a3e3396c7b40068ad69978
+title: Passo 15
+challengeType: 0
+dashedName: step-15
+---
+
+# --description--
+
+Use margens para ajustar o espaçamento fora de um elemento.
+
+Usando a propriedade `margin`, dê ao elemento `.frame` uma margem vertical de `20px` e uma margem horizontal de `auto`. Isso moverá o frame para baixo 20 pixels e o centralizará na página na horizontal.
+
+# --hints--
+
+Você deve dar à propriedade `margin` o valor de `20px auto`.
+
+```js
+const hasMargin = new __helpers.CSSHelp(document).getCSSRules().some(x => x.style.margin === '20px auto');
+assert(hasMargin);
+```
+
+O elemento `.frame` deve ter um valor de `margin` igual à `20px auto`.
+
+```js
+const frameMargin = new __helpers.CSSHelp(document).getStyle('.frame')?.getPropertyValue('margin');
+assert(frameMargin === '20px auto');
+```
+
+# --seed--
+
+## --seed-contents--
+
+```css
+.canvas {
+ width: 500px;
+ height: 600px;
+ background-color: #4d0f00;
+}
+
+.frame {
+ border: 50px solid black;
+ width: 500px;
+ padding: 50px;
+--fcc-editable-region--
+
+--fcc-editable-region--
+}
+```
+
+```html
+
+
+
+
+ Rothko Painting
+
+
+
+
+
+
+
+
+
+```
diff --git a/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-the-css-box-model-by-building-a-rothko-painting/60a3e3396c7b40068ad69979.md b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-the-css-box-model-by-building-a-rothko-painting/60a3e3396c7b40068ad69979.md
new file mode 100644
index 00000000000..f32ae27f2b7
--- /dev/null
+++ b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-the-css-box-model-by-building-a-rothko-painting/60a3e3396c7b40068ad69979.md
@@ -0,0 +1,71 @@
+---
+id: 60a3e3396c7b40068ad69979
+title: Passo 16
+challengeType: 0
+dashedName: step-16
+---
+
+# --description--
+
+Adicione um novo elemento `div` abaixo do elemento `.canvas`.
+
+Dê ao novo elemento `div` o atributo `class` com o valor de `one`. Esse será o seu primeiro retângulo.
+
+# --hints--
+
+Você deve criar um elemento `div`.
+
+```js
+assert(document.querySelectorAll('div').length === 3);
+```
+
+Você deve criar um elemento `div` dentro do elemento `.canvas`.
+
+```js
+assert(document.querySelector('.canvas').children[0].tagName === 'DIV');
+```
+
+O novo elemento `div` deve ter o atributo `class` definido como `one`.
+
+```js
+assert(document.querySelector('.canvas').children[0].className.split(' ').includes('one'));
+```
+
+# --seed--
+
+## --seed-contents--
+
+```css
+.canvas {
+ width: 500px;
+ height: 600px;
+ background-color: #4d0f00;
+}
+
+.frame {
+ border: 50px solid black;
+ width: 500px;
+ padding: 50px;
+ margin: 20px auto;
+}
+```
+
+```html
+
+
+
+
+ Rothko Painting
+
+
+
+
+
+
+```
diff --git a/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-the-css-box-model-by-building-a-rothko-painting/60a3e3396c7b40068ad6997a.md b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-the-css-box-model-by-building-a-rothko-painting/60a3e3396c7b40068ad6997a.md
new file mode 100644
index 00000000000..f3967c77a54
--- /dev/null
+++ b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-the-css-box-model-by-building-a-rothko-painting/60a3e3396c7b40068ad6997a.md
@@ -0,0 +1,74 @@
+---
+id: 60a3e3396c7b40068ad6997a
+title: Passo 17
+challengeType: 0
+dashedName: step-17
+---
+
+# --description--
+
+Escreva uma nova regra que tenha como destino `.one` e defina sua `width` como 425 pixels.
+
+# --hints--
+
+Você deve ter um seletor `.one`.
+
+```js
+const hasOne = new __helpers.CSSHelp(document).getStyle('.one');
+assert(hasOne);
+```
+
+Você deve definir a propriedade `width` para `425px`.
+
+```js
+const hasWidth = new __helpers.CSSHelp(document).getCSSRules().some(x => x.style.width === '425px');
+assert(hasWidth);
+```
+
+O elemento `.one` deve ter um valor de `width` de `425px`.
+
+```js
+const oneWidth = new __helpers.CSSHelp(document).getStyle('.one')?.getPropertyValue('width');
+assert(oneWidth === '425px');
+```
+
+# --seed--
+
+## --seed-contents--
+
+```css
+.canvas {
+ width: 500px;
+ height: 600px;
+ background-color: #4d0f00;
+}
+
+.frame {
+ border: 50px solid black;
+ width: 500px;
+ padding: 50px;
+ margin: 20px auto;
+}
+--fcc-editable-region--
+
+--fcc-editable-region--
+
+```
+
+```html
+
+
+
+
+ Rothko Painting
+
+
+
+
+
+
+
+
+
+
+```
diff --git a/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-the-css-box-model-by-building-a-rothko-painting/60a3e3396c7b40068ad6997b.md b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-the-css-box-model-by-building-a-rothko-painting/60a3e3396c7b40068ad6997b.md
new file mode 100644
index 00000000000..286538fa3da
--- /dev/null
+++ b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-the-css-box-model-by-building-a-rothko-painting/60a3e3396c7b40068ad6997b.md
@@ -0,0 +1,70 @@
+---
+id: 60a3e3396c7b40068ad6997b
+title: Passo 18
+challengeType: 0
+dashedName: step-18
+---
+
+# --description--
+
+Agora defina a `height` para `.one` como 150 pixels.
+
+# --hints--
+
+Você deve definir a propriedade `height` como `150px`.
+
+```js
+const hasHeight = new __helpers.CSSHelp(document).getCSSRules().some(x => x.style.height === '150px');
+assert(hasHeight);
+```
+
+O elemento `.one` deve ter um valor de `height` de `150px`.
+
+```js
+const oneHeight = new __helpers.CSSHelp(document).getStyle('.one')?.getPropertyValue('height');
+assert(oneHeight === '150px');
+```
+
+# --seed--
+
+## --seed-contents--
+
+```css
+.canvas {
+ width: 500px;
+ height: 600px;
+ background-color: #4d0f00;
+}
+
+.frame {
+ border: 50px solid black;
+ width: 500px;
+ padding: 50px;
+ margin: 20px auto;
+}
+
+.one {
+ width: 425px;
+--fcc-editable-region--
+
+--fcc-editable-region--
+}
+```
+
+```html
+
+
+
+
+ Rothko Painting
+
+
+
+
+
+
+
+
+
+
+```
diff --git a/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-the-css-box-model-by-building-a-rothko-painting/60a3e3396c7b40068ad6997c.md b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-the-css-box-model-by-building-a-rothko-painting/60a3e3396c7b40068ad6997c.md
new file mode 100644
index 00000000000..8f4dbeae414
--- /dev/null
+++ b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-the-css-box-model-by-building-a-rothko-painting/60a3e3396c7b40068ad6997c.md
@@ -0,0 +1,71 @@
+---
+id: 60a3e3396c7b40068ad6997c
+title: Passo 19
+challengeType: 0
+dashedName: step-19
+---
+
+# --description--
+
+Defina a `background-color` do elemento `.one` como `#efb762`.
+
+# --hints--
+
+Você deve definir o valor da propriedade `background-color` como `#efb762`.
+
+```js
+const hasBackground = new __helpers.CSSHelp(document).getCSSRules().some(x => x.style['background-color'] === 'rgb(239, 183, 98)');
+assert(hasBackground)
+```
+
+O elemento `.one` deve ter uma `background-color` com o valor de `#efb762`.
+
+```js
+const oneBackground = new __helpers.CSSHelp(document).getStyle('.one')?.getPropertyValue('background-color');
+assert(oneBackground === 'rgb(239, 183, 98)');
+```
+
+# --seed--
+
+## --seed-contents--
+
+```css
+.canvas {
+ width: 500px;
+ height: 600px;
+ background-color: #4d0f00;
+}
+
+.frame {
+ border: 50px solid black;
+ width: 500px;
+ padding: 50px;
+ margin: 20px auto;
+}
+
+.one {
+ width: 425px;
+ height: 150px;
+--fcc-editable-region--
+
+--fcc-editable-region--
+}
+```
+
+```html
+
+
+
+
+ Rothko Painting
+
+
+
+
+
+
+
+
+
+
+```
diff --git a/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-the-css-box-model-by-building-a-rothko-painting/60a3e3396c7b40068ad6997d.md b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-the-css-box-model-by-building-a-rothko-painting/60a3e3396c7b40068ad6997d.md
new file mode 100644
index 00000000000..8ff9a1cd5a4
--- /dev/null
+++ b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-the-css-box-model-by-building-a-rothko-painting/60a3e3396c7b40068ad6997d.md
@@ -0,0 +1,74 @@
+---
+id: 60a3e3396c7b40068ad6997d
+title: Passo 20
+challengeType: 0
+dashedName: step-20
+---
+
+# --description--
+
+Use margens para posicionar o elemento `.one` na tela.
+
+Adicione a propriedade abreviada `margin` com uma margem vertical de `20px` e uma margem horizontal de `auto`.
+
+# --hints--
+
+Você deve definir à propriedade `margin` como `20px auto`.
+
+```js
+const marginFilter = new __helpers.CSSHelp(document).getCSSRules().filter(x => x.style.margin === '20px auto');
+assert(marginFilter.length === 2);
+```
+
+O elemento `.one` deve ter um valor de `margin` igual à `20px auto`.
+
+```js
+const oneMargin = new __helpers.CSSHelp(document).getStyle('.one')?.getPropertyValue('margin');
+assert(oneMargin === '20px auto');
+```
+
+# --seed--
+
+## --seed-contents--
+
+```css
+.canvas {
+ width: 500px;
+ height: 600px;
+ background-color: #4d0f00;
+}
+
+.frame {
+ border: 50px solid black;
+ width: 500px;
+ padding: 50px;
+ margin: 20px auto;
+}
+
+.one {
+ width: 425px;
+ height: 150px;
+ background-color: #efb762;
+--fcc-editable-region--
+
+--fcc-editable-region--
+}
+```
+
+```html
+
+
+
+
+ Rothko Painting
+
+
+
+
+
+
+
+
+
+
+```
diff --git a/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-the-css-box-model-by-building-a-rothko-painting/60a3e3396c7b40068ad6997e.md b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-the-css-box-model-by-building-a-rothko-painting/60a3e3396c7b40068ad6997e.md
new file mode 100644
index 00000000000..4b05d06db64
--- /dev/null
+++ b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-the-css-box-model-by-building-a-rothko-painting/60a3e3396c7b40068ad6997e.md
@@ -0,0 +1,75 @@
+---
+id: 60a3e3396c7b40068ad6997e
+title: Passo 21
+challengeType: 0
+dashedName: step-21
+---
+
+# --description--
+
+Agora `.one` está centralizado na horizontal, mas sua margem superior está passando os limites da tela e entrando na borda do quadro, deslocando a tela inteira 20 pixels para baixo.
+
+Adicione um `padding` de `1px` para o elemento `.canvas` para dar ao elemento `.one` algo sólido como barreira.
+
+# --hints--
+
+Você deve dar à propriedade `padding` o valor de `1px`.
+
+```js
+const hasPadding = new __helpers.CSSHelp(document).getCSSRules().some(x => x.style.padding === '1px');
+assert(hasPadding);
+```
+
+O elemento `.canvas` deve ter um valor de `padding` igual a `1px`.
+
+```js
+const canvasPadding = new __helpers.CSSHelp(document).getStyle('.canvas')?.getPropertyValue('padding');
+assert(canvasPadding === '1px');
+```
+
+# --seed--
+
+## --seed-contents--
+
+```css
+.canvas {
+ width: 500px;
+ height: 600px;
+ background-color: #4d0f00;
+--fcc-editable-region--
+
+--fcc-editable-region--
+}
+
+.frame {
+ border: 50px solid black;
+ width: 500px;
+ padding: 50px;
+ margin: 20px auto;
+}
+
+.one {
+ width: 425px;
+ height: 150px;
+ background-color: #efb762;
+ margin: 20px auto;
+}
+```
+
+```html
+
+
+
+
+ Rothko Painting
+
+
+
+
+
+
+
+
+
+
+```
diff --git a/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-the-css-box-model-by-building-a-rothko-painting/60a3e3396c7b40068ad6997f.md b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-the-css-box-model-by-building-a-rothko-painting/60a3e3396c7b40068ad6997f.md
new file mode 100644
index 00000000000..d728e18dbce
--- /dev/null
+++ b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-the-css-box-model-by-building-a-rothko-painting/60a3e3396c7b40068ad6997f.md
@@ -0,0 +1,82 @@
+---
+id: 60a3e3396c7b40068ad6997f
+title: Passo 22
+challengeType: 0
+dashedName: step-22
+---
+
+# --description--
+
+A adição de 1 pixel de preenchimento às partes superior, inferior, esquerda e direita da tela mudou suas dimensões para 502 pixels x 602 pixels.
+
+Substitua a propriedade `padding` com `overflow` definido como `hidden` - o que faz com que a tela volte às dimensões originais.
+
+# --hints--
+
+Você deve remover a propriedade `padding` do seletor `.canvas`.
+
+```js
+const canvasPadding = new __helpers.CSSHelp(document).getStyle('.canvas').getPropertyValue('padding');
+assert(!canvasPadding);
+```
+
+Você deve definir a propriedade `overflow` com `hidden`.
+
+```js
+const hasOverflow = new __helpers.CSSHelp(document).getCSSRules().some(x => x.style.overflow === 'hidden');
+assert(hasOverflow);
+```
+
+O elemento `.canvas` deve ter um valor de `overflow` igual a `hidden`.
+
+```js
+const canvasOverflow = new __helpers.CSSHelp(document).getStyle('.canvas')?.getPropertyValue('overflow');
+assert(canvasOverflow === 'hidden')
+```
+
+# --seed--
+
+## --seed-contents--
+
+```css
+.canvas {
+ width: 500px;
+ height: 600px;
+ background-color: #4d0f00;
+--fcc-editable-region--
+ padding: 1px;
+--fcc-editable-region--
+}
+
+.frame {
+ border: 50px solid black;
+ width: 500px;
+ padding: 50px;
+ margin: 20px auto;
+}
+
+.one {
+ width: 425px;
+ height: 150px;
+ background-color: #efb762;
+ margin: 20px auto;
+}
+```
+
+```html
+
+
+
+
+ Rothko Painting
+
+
+
+
+
+
+
+
+
+
+```
diff --git a/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-the-css-box-model-by-building-a-rothko-painting/60a3e3396c7b40068ad69980.md b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-the-css-box-model-by-building-a-rothko-painting/60a3e3396c7b40068ad69980.md
new file mode 100644
index 00000000000..3de22c086ce
--- /dev/null
+++ b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-the-css-box-model-by-building-a-rothko-painting/60a3e3396c7b40068ad69980.md
@@ -0,0 +1,84 @@
+---
+id: 60a3e3396c7b40068ad69980
+title: Passo 23
+challengeType: 0
+dashedName: step-23
+---
+
+# --description--
+
+Adicione outra `div` com `class` tendo o valor `two` logo abaixo do seu elemento `one`. Este será seu segundo retângulo.
+
+# --hints--
+
+Você não deve mudar o elemento `.one` existente.
+
+```js
+assert(document.querySelectorAll('.one').length === 1);
+```
+
+Você deve ter um segundo elemento `div` no elemento `.canvas`.
+
+```js
+assert(document.querySelector('.canvas').children[1].tagName === 'DIV');
+```
+
+O segundo elemento `div` deve ter a `class` definida como `two`.
+
+```js
+assert(document.querySelector('.canvas').children[1].className.split(' ').includes('two'));
+```
+
+O elemento `.two` deve estar depois do elemento `.one`.
+
+```js
+assert(document.querySelector('.two').previousElementSibling.className.split(' ').includes('one'));
+```
+
+# --seed--
+
+## --seed-contents--
+
+```css
+.canvas {
+ width: 500px;
+ height: 600px;
+ background-color: #4d0f00;
+ overflow: hidden;
+}
+
+.frame {
+ border: 50px solid black;
+ width: 500px;
+ padding: 50px;
+ margin: 20px auto;
+}
+
+.one {
+ width: 425px;
+ height: 150px;
+ background-color: #efb762;
+ margin: 20px auto;
+}
+```
+
+```html
+
+
+
+
+ Rothko Painting
+
+
+
+
+
+
+```
+
+```css
+.canvas {
+ width: 500px;
+ height: 600px;
+ background-color: #4d0f00;
+ overflow: hidden;
+ filter: blur(2px);
+}
+
+.frame {
+ border: 50px solid black;
+ width: 500px;
+ padding: 50px;
+ margin: 20px auto;
+}
+
+.one {
+ width: 425px;
+ height: 150px;
+ background-color: #efb762;
+ margin: 20px auto;
+ box-shadow: 0 0 3px 3px #efb762;
+ border-radius: 9px;
+ transform: rotate(-0.6deg);
+}
+
+.two {
+ width: 475px;
+ height: 200px;
+ background-color: #8f0401;
+ margin: 0 auto 20px;
+ box-shadow: 0 0 3px 3px #8f0401;
+ border-radius: 8px 10px;
+ transform: rotate(0.4deg);
+}
+
+.one, .two {
+ filter: blur(1px);
+}
+
+.three {
+ width: 91%;
+ height: 28%;
+ background-color: #b20403;
+ margin: auto;
+ filter: blur(2px);
+ box-shadow: 0 0 5px 5px #b20403;
+ border-radius: 30px 25px 60px 12px;
+ transform: rotate(-0.2deg);
+}
+```
diff --git a/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-typography-by-building-a-nutrition-label/615f3b091162165948e1cb33.md b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-typography-by-building-a-nutrition-label/615f3b091162165948e1cb33.md
new file mode 100644
index 00000000000..3ae68f4a322
--- /dev/null
+++ b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-typography-by-building-a-nutrition-label/615f3b091162165948e1cb33.md
@@ -0,0 +1,70 @@
+---
+id: 615f3b091162165948e1cb33
+title: Passo 11
+challengeType: 0
+dashedName: step-11
+---
+
+# --description--
+
+Se você inspecionar o elemento `.label` com as ferramentas de desenvolvedor do seu navegador, poderá notar que ele de fato possui 288 pixels de largura ao invés de 270. Isto porque, por padrão, o navegador inclui a borda e o padding quando determina o tamanho de um elemento.
+
+Para resolver isso, redefina o modelo da caixa criando um seletor `*` e dê a ele o atributo de `box-sizing` que é propriedade de `border-box`.
+
+# --hints--
+
+Você deve criar o seletor `*`.
+
+```js
+assert(new __helpers.CSSHelp(document).getStyle('*'));
+```
+
+O seletor `*` deve ter a propriedade `box-sizing` com o valor de `border-box`.
+
+```js
+assert(new __helpers.CSSHelp(document).getStyle('*')?.boxSizing === 'border-box');
+```
+
+# --seed--
+
+## --seed-contents--
+
+```html
+
+
+
+
+ Nutrition Label
+
+
+
+
+
+
Nutrition Facts
+
8 servings per container
+
Serving size 2/3 cup (55g)
+
+
+
+```
+
+```css
+--fcc-editable-region--
+
+--fcc-editable-region--
+
+html {
+ font-size: 16px;
+}
+
+body {
+ font-family: 'Open Sans', sans-serif;
+}
+
+.label {
+ border: 2px solid black;
+ width: 270px;
+ margin: 20px auto;
+ padding: 0 7px;
+}
+```
diff --git a/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-typography-by-building-a-nutrition-label/615f3cafd794015aa9547a6d.md b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-typography-by-building-a-nutrition-label/615f3cafd794015aa9547a6d.md
new file mode 100644
index 00000000000..763968a6a76
--- /dev/null
+++ b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-typography-by-building-a-nutrition-label/615f3cafd794015aa9547a6d.md
@@ -0,0 +1,74 @@
+---
+id: 615f3cafd794015aa9547a6d
+title: Passo 12
+challengeType: 0
+dashedName: step-12
+---
+
+# --description--
+
+Lembre-se de que o uso de `h1`, `h2` e tags similares determinam a estrutura semântica do seu HTML. No entanto, você pode ajustar o CSS desses elementos para controlar o fluxo visual e a hierarquia.
+
+Crie uma regra para `h1` e defina a propriedade `font-weight` para `800`. Isto deixará o texto do elemento `h1` em negrito.
+
+# --hints--
+
+Você deve criar o seletor `h1`.
+
+```js
+assert(new __helpers.CSSHelp(document).getStyle('h1'));
+```
+
+O seletor `h1` deve ter a propriedade `font-weight` com o valor de `800`.
+
+```js
+assert(new __helpers.CSSHelp(document).getStyle('h1')?.fontWeight === '800');
+```
+
+# --seed--
+
+## --seed-contents--
+
+```html
+
+
+
+
+ Nutrition Label
+
+
+
+
+