diff --git a/curriculum/challenges/espanol/02-javascript-algorithms-and-data-structures/basic-data-structures/generate-an-array-of-all-object-keys-with-object.keys.md b/curriculum/challenges/espanol/02-javascript-algorithms-and-data-structures/basic-data-structures/generate-an-array-of-all-object-keys-with-object.keys.md
index 7a3d51c5b70..95efd7824f0 100644
--- a/curriculum/challenges/espanol/02-javascript-algorithms-and-data-structures/basic-data-structures/generate-an-array-of-all-object-keys-with-object.keys.md
+++ b/curriculum/challenges/espanol/02-javascript-algorithms-and-data-structures/basic-data-structures/generate-an-array-of-all-object-keys-with-object.keys.md
@@ -8,7 +8,7 @@ dashedName: generate-an-array-of-all-object-keys-with-object-keys
# --description--
-También podemos generar un arreglo que contenga todas las claves almacenadas en un objeto utilizando el método `Object.keys()` y pasando un objeto como argumento. Esto devolverá un arreglo con cadenas que representan cada propiedad del objeto. De nuevo, no habrá un orden específico para las entradas en el arreglo.
+También podemos generar un arreglo que contenga todas las claves almacenadas en un objeto utilizando el método `Object.keys()`. Este método toma un objeto como argumento y devuelve un arrelgo de cadenas que representan cada propiedad en el objeto. De nuevo, no habrá un orden específico para las entradas en el arreglo.
# --instructions--
diff --git a/curriculum/challenges/espanol/02-javascript-algorithms-and-data-structures/basic-javascript/declare-a-read-only-variable-with-the-const-keyword.md b/curriculum/challenges/espanol/02-javascript-algorithms-and-data-structures/basic-javascript/declare-a-read-only-variable-with-the-const-keyword.md
index 84f82acb273..f5dd984fe37 100644
--- a/curriculum/challenges/espanol/02-javascript-algorithms-and-data-structures/basic-javascript/declare-a-read-only-variable-with-the-const-keyword.md
+++ b/curriculum/challenges/espanol/02-javascript-algorithms-and-data-structures/basic-javascript/declare-a-read-only-variable-with-the-const-keyword.md
@@ -25,7 +25,7 @@ Siempre debes nombrar variables que no quieras reasignar usando la palabra clave
# --instructions--
-Cambia el código para que todas las variables se declaren con `let` o `const`. Usa `let` cuando quieras que la variable cambie y `const` cuando quieras que la variable permanezca constante. Además, renombra variables declaradas con `const` para adaptarse a las prácticas comunes.
+Cambia el código para que todas las variables se declaren con `let` o `const`. Usa `let` cuando quieras que la variable cambie y `const` cuando quieras que la variable permanezca constante. Además, renombra variables declaradas con `const` para adaptarse a las prácticas comunes. No debes cambiar las palabras asignadas a las variables.
# --hints--
@@ -45,10 +45,15 @@ assert.notMatch(code, /(fCC)/);
`FCC` debe ser una variable constante declarada con `const`.
```js
-assert.equal(FCC, 'freeCodeCamp');
assert.match(code, /const\s+FCC/);
```
+La cadena asignada a `FCC` no debe ser cambiada.
+
+```js
+assert.equal(FCC, 'freeCodeCamp');
+```
+
`fact` debe ser declarada con `let`.
```js
diff --git a/curriculum/challenges/espanol/14-responsive-web-design-22/build-a-personal-portfolio-webpage-project/build-a-personal-portfolio-webpage.md b/curriculum/challenges/espanol/14-responsive-web-design-22/build-a-personal-portfolio-webpage-project/build-a-personal-portfolio-webpage.md
new file mode 100644
index 00000000000..6ec9f38a4c3
--- /dev/null
+++ b/curriculum/challenges/espanol/14-responsive-web-design-22/build-a-personal-portfolio-webpage-project/build-a-personal-portfolio-webpage.md
@@ -0,0 +1,281 @@
+---
+id: bd7158d8c242eddfaeb5bd13
+title: Construye una página portafolio personal
+challengeType: 14
+forumTopicId: 301143
+dashedName: build-a-personal-portfolio-webpage
+---
+
+# --description--
+
+**Objetivo:**Crea una aplicación que sea funcionalmente similar a https://personal-portfolio.freecodecamp.rocks
+
+**Historias de usuario:**
+
+1. Tu portafolio debe tener una sección de bienvenida con un `id` de `welcome-section`
+1. La sección de bienvenida debe tener un elemento `h1` que contenga texto
+1. Tu portafolio debe tener una sección de proyectos con un `id` de `projects`
+1. La sección de proyectos debe tener al menos un elemento con una `class` de `project-tile` para tener un proyecto
+1. La sección de proyectos debe tener al menos un enlace a un proyecto
+1. Tu portafolio debe tener una barra de navegación con un id de `navbar`
+1. La barra de navegación debe tener al menos un enlace donde puedas hacer clic para navegar a diferentes secciones de la página
+1. Tu portafolio debe tener un enlace con un id de `profile-link`, el cual abra tu GitHub o perfil de freeCodeCamp en una pestaña nueva
+1. Tu portafolio debe tener al menos una consulta de medios
+1. La altura de la sección de bienvenida debe ser igual a la altura de viewport
+1. La barra de navegación siempre debe estar en la parte superior del viewport
+
+Completa las instrucciones y pasa todas las pruebas a continuación para completar este proyecto. Dale tu propio estilo personal. ¡Feliz día programando!
+
+**Nota:** Asegúrate de agregar `` en tu HTML para enlazar tu hoja de estilos y aplicar tu CSS
+
+# --hints--
+
+Tu portafolio debe tener una sección "Welcome" con un `id` de `welcome-section`.
+
+```js
+const el = document.getElementById('welcome-section')
+assert(!!el);
+```
+
+Tu elemento `#welcome-section` debe contener un elemento `h1`.
+
+```js
+assert.isAbove(
+ document.querySelectorAll('#welcome-section h1').length,
+ 0,
+ 'Welcome section should contain an h1 element '
+);
+```
+
+No debes tener ningún elemento `h1` vacío dentro del elemento `#welcome-section`.
+
+```js
+assert.isAbove(
+ document.querySelectorAll('#welcome-section h1')?.[0]?.innerText?.length,
+ 0,
+ 'h1 element in welcome section should contain your name or camper ' +
+ 'name '
+);
+```
+
+Debes tener una sección "Projects" con un `id` de `projects`.
+
+```js
+const el = document.getElementById('projects')
+assert(!!el);
+```
+
+Tu portafolio debe contener al menos un elemento con una clase `project-tile`.
+
+```js
+assert.isAbove(
+ document.querySelectorAll('#projects .project-tile').length,
+ 0
+);
+```
+
+Tu elemento `#projects` debe contener al menos un elemento `a`.
+
+```js
+assert.isAbove(document.querySelectorAll('#projects a').length, 0);
+```
+
+Tu portafolio debe tener una barra de navegación con un `id` de `navbar`.
+
+```js
+const el = document.getElementById('navbar');
+assert(!!el);
+```
+
+Tu elemento `#navbar` debe contener al menos un elemento `a` cuyo atributo `href` empiece con `#`.
+
+```js
+const links = [...document.querySelectorAll('#navbar a')].filter(
+ (nav) => (nav?.getAttribute('href') || '').substr(0, 1) === '#'
+);
+
+assert.isAbove(
+ links.length,
+ 0,
+ 'Navbar should contain an anchor link '
+);
+```
+
+Tu portafolio debe tener un elemento `a` con un `id` de `profile-link`.
+
+```js
+const el = document.getElementById('profile-link');
+assert(!!el && el.tagName === 'A')
+```
+
+Tu elemento `#profile-link` debe tener un atributo `target` de `_blank`.
+
+```js
+const el = document.getElementById('profile-link');
+assert(!!el && el.target === '_blank')
+```
+
+Tu portafolio debe usar al menos una consulta de medios.
+
+```js
+const htmlSourceAttr = Array.from(document.querySelectorAll('source')).map(el => el.getAttribute('media'))
+const cssCheck = new __helpers.CSSHelp(document).getCSSRules('media')
+assert(cssCheck.length > 0 || htmlSourceAttr.length > 0);
+```
+
+Tu elemento `#navbar` siempre debe estar en la parte superior del viewport.
+
+```js
+(async () => {
+ const timeout = (milliseconds) => new Promise((resolve) => setTimeout(resolve, milliseconds));
+
+ const navbar = document.getElementById('navbar');
+ assert.approximately(
+ navbar?.getBoundingClientRect().top,
+ 0,
+ 15,
+ "Navbar's parent should be body and it should be at the top of " +
+ 'the viewport '
+ );
+
+ window.scroll(0, 500);
+
+ await timeout(1);
+
+ assert.approximately(
+ navbar?.getBoundingClientRect().top,
+ 0,
+ 15,
+ 'Navbar should be at the top of the viewport even after ' +
+ 'scrolling '
+ );
+ window.scroll(0, 0);
+})();
+```
+
+# --seed--
+
+## --seed-contents--
+
+```html
+
+```
+
+```css
+
+```
+
+## --solutions--
+
+```html
+
+
+
+
+
+```
+
+```css
+* {
+ border: 1px solid black;
+ box-sizing: border-box;
+}
+
+body {
+ height: 100vh;
+ margin: 0;
+ overflow: hidden;
+}
+
+.background-buildings {
+ width: 100%;
+ height: 100%;
+}
+
+.bb1 {
+ width: 10%;
+ height: 70%;
+}
+
+```
+
diff --git a/curriculum/challenges/italian/14-responsive-web-design-22/learn-css-variables-by-building-a-city-skyline/5d822fd413a79914d39e98d4.md b/curriculum/challenges/italian/14-responsive-web-design-22/learn-css-variables-by-building-a-city-skyline/5d822fd413a79914d39e98d4.md
new file mode 100644
index 00000000000..03aa43eebc3
--- /dev/null
+++ b/curriculum/challenges/italian/14-responsive-web-design-22/learn-css-variables-by-building-a-city-skyline/5d822fd413a79914d39e98d4.md
@@ -0,0 +1,137 @@
+---
+id: 5d822fd413a79914d39e98d4
+title: Step 12
+challengeType: 0
+dashedName: step-12
+---
+
+# --description--
+
+Dai alle parti dell'edificio delle proprietà `width` e `height` con i seguenti valori: `70%` e `10%` a `.bb1a`, `80%` e `10%` a `.bb1b`, `90%` e `10%` a `.bb1c` e `100%` e `70%` a `.bb1d`. Ricorda che queste percentuali sono relative all'elemento genitore e nota che le altezze si sommeranno fino al 100% - riempendo verticalmente il genitore.
+
+# --hints--
+
+Dovresti usare un selettore di classe per lo stile di `.bb1a`.
+
+```js
+assert.exists(new __helpers.CSSHelp(document).getStyle('.bb1a'));
+```
+
+Dovresti dare a `.bb1a` una proprietà `width` del `70%`.
+
+```js
+assert.equal(new __helpers.CSSHelp(document).getStyle('.bb1a')?.width, '70%');
+```
+
+Dovresti dare `.bb1a` una proprietà `height` del `10%`.
+
+```js
+assert.equal(new __helpers.CSSHelp(document).getStyle('.bb1a')?.height, '10%');
+```
+
+Dovresti usare un selettore di classe per lo stile di `.bb1b`.
+
+```js
+assert.exists(new __helpers.CSSHelp(document).getStyle('.bb1b'));
+```
+
+Dovresti dare a `.bb1b` una proprietà `width` dell'`80%`.
+
+```js
+assert.equal(new __helpers.CSSHelp(document).getStyle('.bb1b')?.width, '80%');
+```
+
+Dovresti dare `.bb1b` una proprietà `height` del `10%`.
+
+```js
+assert.equal(new __helpers.CSSHelp(document).getStyle('.bb1b')?.height, '10%');
+```
+
+Dovresti usare un selettore di classe per lo stile di `.bb1c`.
+
+```js
+assert.exists(new __helpers.CSSHelp(document).getStyle('.bb1c'));
+```
+
+Dovresti dare a `.bb1c` una proprietà `width` del `90%`.
+
+```js
+assert.equal(new __helpers.CSSHelp(document).getStyle('.bb1c')?.width, '90%');
+```
+
+Dovresti dare `.bb1c` una proprietà `height` del `10%`.
+
+```js
+assert.equal(new __helpers.CSSHelp(document).getStyle('.bb1c')?.height, '10%');
+```
+
+Dovresti usare un selettore di classe per lo stile di `.bb1d`.
+
+```js
+assert.exists(new __helpers.CSSHelp(document).getStyle('.bb1d'));
+```
+
+Dovresti dare a `.bb1d` una proprietà `width` del `100%`.
+
+```js
+assert.equal(new __helpers.CSSHelp(document).getStyle('.bb1d')?.width, '100%');
+```
+
+Dovresti dare `.bb1d` una proprietà `height` del `70%`.
+
+```js
+assert.equal(new __helpers.CSSHelp(document).getStyle('.bb1d')?.height, '70%');
+```
+
+# --seed--
+
+## --seed-contents--
+
+```html
+
+
+
+ City Skyline
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+```css
+* {
+ border: 1px solid black;
+ box-sizing: border-box;
+}
+
+body {
+ height: 100vh;
+ margin: 0;
+ overflow: hidden;
+}
+
+.background-buildings {
+ width: 100%;
+ height: 100%;
+}
+
+.bb1 {
+ width: 10%;
+ height: 70%;
+}
+--fcc-editable-region--
+
+--fcc-editable-region--
+
+```
+
diff --git a/curriculum/challenges/italian/14-responsive-web-design-22/learn-css-variables-by-building-a-city-skyline/5d822fd413a79914d39e98d5.md b/curriculum/challenges/italian/14-responsive-web-design-22/learn-css-variables-by-building-a-city-skyline/5d822fd413a79914d39e98d5.md
new file mode 100644
index 00000000000..57e997861dc
--- /dev/null
+++ b/curriculum/challenges/italian/14-responsive-web-design-22/learn-css-variables-by-building-a-city-skyline/5d822fd413a79914d39e98d5.md
@@ -0,0 +1,111 @@
+---
+id: 5d822fd413a79914d39e98d5
+title: Step 13
+challengeType: 0
+dashedName: step-13
+---
+
+# --description--
+
+Dai all'elemento `.bb1` le proprietà `display: flex;`, `flex-direction: column;` e `align-items: center;`. Così centrerai le parti dell'edificio utilizzando "flex" o "flexbox". Ne imparerai di più in un altro progetto.
+
+# --hints--
+
+Non dovresti modificare le proprietà `width` o `height`di `.bb1`.
+
+```js
+const bb1Style = new __helpers.CSSHelp(document).getStyle('.bb1');
+assert.equal(bb1Style?.width, '10%');
+assert.equal(bb1Style?.height, '70%');
+```
+
+Dovresti dare all'elemento `.bb1` una proprietà `display` del valore `flex`.
+
+```js
+const bb1Style = new __helpers.CSSHelp(document).getStyle('.bb1');
+assert.equal(bb1Style?.display, 'flex');
+```
+
+Dovresti dare all'elemento `.bb1` una proprietà `flex-direction` del valore `column`.
+
+```js
+const bb1Style = new __helpers.CSSHelp(document).getStyle('.bb1');
+assert.equal(bb1Style?.flexDirection, 'column');
+```
+
+Dovresti dare all'elemento `.bb1` una proprietà `align-items` del valore `center`.
+
+```js
+const bb1Style = new __helpers.CSSHelp(document).getStyle('.bb1');
+assert.equal(bb1Style?.alignItems, 'center');
+```
+
+# --seed--
+
+## --seed-contents--
+
+```html
+
+
+
+ City Skyline
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+```css
+* {
+ border: 1px solid black;
+ box-sizing: border-box;
+}
+
+body {
+ height: 100vh;
+ margin: 0;
+ overflow: hidden;
+}
+
+.background-buildings {
+ width: 100%;
+ height: 100%;
+}
+--fcc-editable-region--
+.bb1 {
+ width: 10%;
+ height: 70%;
+}
+--fcc-editable-region--
+.bb1a {
+ width: 70%;
+ height: 10%;
+}
+
+.bb1b {
+ width: 80%;
+ height: 10%;
+}
+
+.bb1c {
+ width: 90%;
+ height: 10%;
+}
+
+.bb1d {
+ width: 100%;
+ height: 70%;
+}
+
+```
+
diff --git a/curriculum/challenges/italian/14-responsive-web-design-22/learn-css-variables-by-building-a-city-skyline/5d822fd413a79914d39e98d6.md b/curriculum/challenges/italian/14-responsive-web-design-22/learn-css-variables-by-building-a-city-skyline/5d822fd413a79914d39e98d6.md
new file mode 100644
index 00000000000..f2f0949112b
--- /dev/null
+++ b/curriculum/challenges/italian/14-responsive-web-design-22/learn-css-variables-by-building-a-city-skyline/5d822fd413a79914d39e98d6.md
@@ -0,0 +1,102 @@
+---
+id: 5d822fd413a79914d39e98d6
+title: Step 14
+challengeType: 0
+dashedName: step-14
+---
+
+# --description--
+
+Ora hai qualcosa che sta iniziando ad assomigliare a un edificio. È tempo di scrivere la tua prima variabile. Le dichiarazioni di variabili iniziano con due trattini (`-`) e hanno un nome e un valore come questo: `--nome-variabile: valore;`. Nella classe `.bb1`, crea una variabile chiamata `--building-color1` e dalle il valore `#999`.
+
+# --hints--
+
+Dovresti creare una nuova variabile chiamata `--building-color1`.
+
+```js
+assert(new __helpers.CSSHelp(document).isPropertyUsed('--building-color1'));
+```
+
+Dovresti definire la variabile `--building-color1` all'interno di `.bb1`.
+
+```js
+assert.exists(new __helpers.CSSHelp(document).getStyle('.bb1')?.getPropertyValue('--building-color1'));
+```
+
+Dovresti dare a `--building-color1` il valore `#999`.
+
+```js
+assert.equal(new __helpers.CSSHelp(document).getStyle('.bb1')?.getPropertyValue('--building-color1').trim(),'#999');
+```
+
+# --seed--
+
+## --seed-contents--
+
+```html
+
+
+
+ City Skyline
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+```css
+* {
+ border: 1px solid black;
+ box-sizing: border-box;
+}
+
+body {
+ height: 100vh;
+ margin: 0;
+ overflow: hidden;
+}
+
+.background-buildings {
+ width: 100%;
+ height: 100%;
+}
+--fcc-editable-region--
+.bb1 {
+ width: 10%;
+ height: 70%;
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+}
+--fcc-editable-region--
+.bb1a {
+ width: 70%;
+ height: 10%;
+}
+
+.bb1b {
+ width: 80%;
+ height: 10%;
+}
+
+.bb1c {
+ width: 90%;
+ height: 10%;
+}
+
+.bb1d {
+ width: 100%;
+ height: 70%;
+}
+
+```
diff --git a/curriculum/challenges/italian/14-responsive-web-design-22/learn-css-variables-by-building-a-city-skyline/5d822fd413a79914d39e98d7.md b/curriculum/challenges/italian/14-responsive-web-design-22/learn-css-variables-by-building-a-city-skyline/5d822fd413a79914d39e98d7.md
new file mode 100644
index 00000000000..fcf5ec924a7
--- /dev/null
+++ b/curriculum/challenges/italian/14-responsive-web-design-22/learn-css-variables-by-building-a-city-skyline/5d822fd413a79914d39e98d7.md
@@ -0,0 +1,97 @@
+---
+id: 5d822fd413a79914d39e98d7
+title: Step 15
+challengeType: 0
+dashedName: step-15
+---
+
+# --description--
+
+Per usare una variabile, inserisci il suo nome tra le parentesi con `var` di fronte: `var(--nome-variabile)`. Aggiungi la tua variabile come valore della proprietà `background-color` della classe `.bb1a`. Qualunque sia il valore che hai dato alla variabile verrà applicato a qualsiasi proprietà su cui la utilizzi. In questo caso, la tua variabile ha il valore `#999`. Quindi `#999` sarà utilizzato come valore per la proprietà `background-color`.
+
+# --hints--
+
+Dovresti impostare la proprietà `background-color` per l'elemento `bb1a`.
+
+```js
+assert.exists(new __helpers.CSSHelp(document).getStyle('.bb1a')?.backgroundColor)
+```
+
+Dovresti usare `var(--building-color1)` per impostare la proprietà `background-color` dell'elemento `.bb1a`.
+
+```js
+assert.equal(new __helpers.CSSHelp(document).getStyle('.bb1a')?.backgroundColor.trim(), 'var(--building-color1)');
+```
+
+# --seed--
+
+## --seed-contents--
+
+```html
+
+
+
+ City Skyline
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+```css
+* {
+ border: 1px solid black;
+ box-sizing: border-box;
+}
+
+body {
+ height: 100vh;
+ margin: 0;
+ overflow: hidden;
+}
+
+.background-buildings {
+ width: 100%;
+ height: 100%;
+}
+
+.bb1 {
+ width: 10%;
+ height: 70%;
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ --building-color1: #999;
+}
+--fcc-editable-region--
+.bb1a {
+ width: 70%;
+ height: 10%;
+}
+--fcc-editable-region--
+.bb1b {
+ width: 80%;
+ height: 10%;
+}
+
+.bb1c {
+ width: 90%;
+ height: 10%;
+}
+
+.bb1d {
+ width: 100%;
+ height: 70%;
+}
+
+```
diff --git a/curriculum/challenges/italian/14-responsive-web-design-22/learn-css-variables-by-building-a-city-skyline/5d822fd413a79914d39e98d8.md b/curriculum/challenges/italian/14-responsive-web-design-22/learn-css-variables-by-building-a-city-skyline/5d822fd413a79914d39e98d8.md
new file mode 100644
index 00000000000..bd7a3d047e2
--- /dev/null
+++ b/curriculum/challenges/italian/14-responsive-web-design-22/learn-css-variables-by-building-a-city-skyline/5d822fd413a79914d39e98d8.md
@@ -0,0 +1,123 @@
+---
+id: 5d822fd413a79914d39e98d8
+title: Step 16
+challengeType: 0
+dashedName: step-16
+---
+
+# --description--
+
+Imposta `background-color` per le classi `.bb1b`, `.bb1c` e `.bb1d` con la stessa variabile per riempire il resto dell'edificio.
+
+# --hints--
+
+Dovresti impostare la proprietà `background-color` per l'elemento `bb1b`.
+
+```js
+assert.exists(new __helpers.CSSHelp(document).getStyle('.bb1b')?.backgroundColor)
+```
+
+Dovresti usare `var(--building-color1)` per impostare la proprietà `background-color` dell'elemento `.bb1b`.
+
+```js
+assert.equal(new __helpers.CSSHelp(document).getStyle('.bb1b')?.backgroundColor.trim(), 'var(--building-color1)');
+```
+
+Dovresti impostare la proprietà `background-color` per l'elemento `bb1c`.
+
+```js
+assert.exists(new __helpers.CSSHelp(document).getStyle('.bb1c')?.backgroundColor)
+```
+
+Dovresti usare `var(--building-color1)` per impostare la proprietà `background-color` dell'elemento `.bb1c`.
+
+```js
+assert.equal(new __helpers.CSSHelp(document).getStyle('.bb1c')?.backgroundColor.trim(), 'var(--building-color1)');
+```
+
+Dovresti impostare la proprietà `background-color` per l'elemento `bb1d`.
+
+```js
+assert.exists(new __helpers.CSSHelp(document).getStyle('.bb1d')?.backgroundColor)
+```
+
+Dovresti usare `var(--building-color1)` per impostare la proprietà `background-color` dell'elemento `.bb1d`.
+
+```js
+assert.equal(new __helpers.CSSHelp(document).getStyle('.bb1d')?.backgroundColor.trim(), 'var(--building-color1)');
+```
+
+# --seed--
+
+## --seed-contents--
+
+```html
+
+
+
+ City Skyline
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+```css
+* {
+ border: 1px solid black;
+ box-sizing: border-box;
+}
+
+body {
+ height: 100vh;
+ margin: 0;
+ overflow: hidden;
+}
+
+.background-buildings {
+ width: 100%;
+ height: 100%;
+}
+
+.bb1 {
+ width: 10%;
+ height: 70%;
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ --building-color1: #999;
+}
+
+.bb1a {
+ width: 70%;
+ height: 10%;
+ background-color: var(--building-color1);
+}
+--fcc-editable-region--
+.bb1b {
+ width: 80%;
+ height: 10%;
+}
+
+.bb1c {
+ width: 90%;
+ height: 10%;
+}
+
+.bb1d {
+ width: 100%;
+ height: 70%;
+}
+--fcc-editable-region--
+
+```
diff --git a/curriculum/challenges/italian/14-responsive-web-design-22/learn-css-variables-by-building-a-city-skyline/5d822fd413a79914d39e98d9.md b/curriculum/challenges/italian/14-responsive-web-design-22/learn-css-variables-by-building-a-city-skyline/5d822fd413a79914d39e98d9.md
new file mode 100644
index 00000000000..96f3d4faa59
--- /dev/null
+++ b/curriculum/challenges/italian/14-responsive-web-design-22/learn-css-variables-by-building-a-city-skyline/5d822fd413a79914d39e98d9.md
@@ -0,0 +1,98 @@
+---
+id: 5d822fd413a79914d39e98d9
+title: Step 17
+challengeType: 0
+dashedName: step-17
+---
+
+# --description--
+
+Non mi piace molto quel colore. Modifica il valore della variabile da `#999` a `#aa80ff` e potrai vedere come viene applicato ovunque tu abbia utilizzato la variabile. Il principale vantaggio dell'uso delle variabili è proprio l'essere in grado di modificare rapidamente molti valori nel foglio di stile semplicemente modificando il valore di una variabile.
+
+# --hints--
+
+Dovresti modificare il valore della variabile della proprietà `--building-color1` da `#999` a `#aa80ff`.
+
+```js
+assert.equal(new __helpers.CSSHelp(document).getStyle('.bb1')?.getPropertyValue('--building-color1').trim(),'#aa80ff');
+```
+
+# --seed--
+
+## --seed-contents--
+
+```html
+
+
+
+ City Skyline
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+```css
+* {
+ border: 1px solid black;
+ box-sizing: border-box;
+}
+
+body {
+ height: 100vh;
+ margin: 0;
+ overflow: hidden;
+}
+
+.background-buildings {
+ width: 100%;
+ height: 100%;
+}
+
+.bb1 {
+ width: 10%;
+ height: 70%;
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+--fcc-editable-region--
+ --building-color1: #999;
+--fcc-editable-region--
+}
+
+.bb1a {
+ width: 70%;
+ height: 10%;
+ background-color: var(--building-color1);
+}
+
+.bb1b {
+ width: 80%;
+ height: 10%;
+ background-color: var(--building-color1);
+}
+
+.bb1c {
+ width: 90%;
+ height: 10%;
+ background-color: var(--building-color1);
+}
+
+.bb1d {
+ width: 100%;
+ height: 70%;
+ background-color: var(--building-color1);
+}
+
+```
+
diff --git a/curriculum/challenges/italian/14-responsive-web-design-22/learn-css-variables-by-building-a-city-skyline/5d822fd413a79914d39e98da.md b/curriculum/challenges/italian/14-responsive-web-design-22/learn-css-variables-by-building-a-city-skyline/5d822fd413a79914d39e98da.md
new file mode 100644
index 00000000000..6c2ca8cbfdc
--- /dev/null
+++ b/curriculum/challenges/italian/14-responsive-web-design-22/learn-css-variables-by-building-a-city-skyline/5d822fd413a79914d39e98da.md
@@ -0,0 +1,132 @@
+---
+id: 5d822fd413a79914d39e98da
+title: Step 18
+challengeType: 0
+dashedName: step-18
+---
+
+# --description--
+
+Il primo edificio ora ha un bell'aspetto. Facciamone altri! Annida tre nuovi elementi `div` nell'elemento `background-buildings` e assegna loro le classi `bb2`, `bb3` e `bb4` in quest'ordine. Saranno altri tre edifici dello sfondo.
+
+# --hints--
+
+Dovresti creare un `div` con la classe `bb2`.
+
+```js
+assert.exists(document.querySelector('div.bb2'));
+```
+
+Dovresti creare un `div` con la classe `bb3`.
+
+```js
+assert.exists(document.querySelector('div.bb3'));
+```
+
+Dovresti creare un `div` con la classe `bb4`.
+
+```js
+assert.exists(document.querySelector('div.bb4'));
+```
+
+Dovresti creare 3 nuovi elementi `div`.
+
+```js
+assert.equal(document.querySelectorAll('div')?.length, 9);
+```
+
+Dovresti posizionare questi elementi `div` all'interno dell'elemento `.background-buildings`.
+
+```js
+assert.equal(document.querySelector('div.background-buildings')?.children?.length, 4);
+```
+
+Dovresti posizionare gli elementi nell'ordine corretto.
+
+```js
+function __t(a, b) {
+ return [...document.querySelector(a)?.nextElementSibling?.classList]?.includes(b);
+}
+assert(__t('div.bb1','bb2') && __t('div.bb2','bb3') && __t('div.bb3','bb4'));
+```
+
+# --seed--
+
+## --seed-contents--
+
+```html
+
+
+
+ City Skyline
+
+
+
+
+
+
+
+```
+
+```css
+:root {
+ --building-color1: #aa80ff;
+ --building-color2: #66cc99;
+ --building-color3: #cc6699;
+ --building-color4: #538cc6;
+ --window-color1: black;
+ --window-color2: #8cd9b3;
+}
+
+* {
+ border: 1px solid black;
+ box-sizing: border-box;
+}
+
+body {
+ height: 100vh;
+ margin: 0;
+ overflow: hidden;
+}
+
+.background-buildings, .foreground-buildings {
+ width: 100%;
+ height: 100%;
+ display: flex;
+ align-items: flex-end;
+ justify-content: space-evenly;
+ position: absolute;
+ top: 0;
+}
+
+/* BACKGROUND BUILDINGS - "bb" stands for "background building" */
+.bb1 {
+ width: 10%;
+ height: 70%;
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+}
+
+.bb1a {
+ width: 70%;
+}
+
+.bb1b {
+ width: 80%;
+}
+
+.bb1c {
+ width: 90%;
+}
+
+.bb1d {
+ width: 100%;
+ height: 70%;
+ background: linear-gradient(
+ var(--building-color1) 50%,
+ var(--window-color1)
+ );
+}
+
+.bb1-window {
+ height: 10%;
+ background: linear-gradient(
+ var(--building-color1),
+ var(--window-color1)
+ );
+}
+
+.bb2 {
+ width: 10%;
+ height: 50%;
+ background-color: var(--building-color2);
+}
+--fcc-editable-region--
+.bb2b {
+ width: 100%;
+ height: 100%;
+ background: linear-gradient(
+ var(--building-color2),
+ var(--building-color2) 6%,
+ var(--window-color2) 6%,
+ var(--window-color2) 9%
+ );
+}
+--fcc-editable-region--
+.bb3 {
+ width: 10%;
+ height: 55%;
+ background-color: var(--building-color3);
+}
+
+.bb4 {
+ width: 11%;
+ height: 58%;
+ background-color: var(--building-color4);
+}
+
+/* FOREGROUND BUILDINGS - "fb" stands for "foreground building" */
+.fb1 {
+ width: 10%;
+ height: 60%;
+ background-color: var(--building-color4);
+}
+
+.fb2 {
+ width: 10%;
+ height: 40%;
+ background-color: var(--building-color3);
+}
+
+.fb3 {
+ width: 10%;
+ height: 35%;
+ background-color: var(--building-color1);
+}
+
+.fb4 {
+ width: 8%;
+ height: 45%;
+ background-color: var(--building-color1);
+ position: relative;
+ left: 10%;
+}
+
+.fb5 {
+ width: 10%;
+ height: 33%;
+ background-color: var(--building-color2);
+ position: relative;
+ right: 10%;
+}
+
+.fb6 {
+ width: 9%;
+ height: 38%;
+ background-color: var(--building-color3);
+}
+
+```
+
diff --git a/curriculum/challenges/italian/14-responsive-web-design-22/learn-css-variables-by-building-a-city-skyline/5d822fd413a79914d39e98fd.md b/curriculum/challenges/italian/14-responsive-web-design-22/learn-css-variables-by-building-a-city-skyline/5d822fd413a79914d39e98fd.md
index 5d9cecea293..068dc17b64d 100644
--- a/curriculum/challenges/italian/14-responsive-web-design-22/learn-css-variables-by-building-a-city-skyline/5d822fd413a79914d39e98fd.md
+++ b/curriculum/challenges/italian/14-responsive-web-design-22/learn-css-variables-by-building-a-city-skyline/5d822fd413a79914d39e98fd.md
@@ -7,11 +7,11 @@ dashedName: step-53
# --description--
-Nei prossimi passi, si stanno per utilizzare alcuni trucchi con bordi CSS per girare la sezione `.bb2a` in un triangolo nella parte superiore dell'edificio. Per prima cosa, rimuovi il `background-color` da `.bb2` poiché non ne hai più bisogno.
+Nei prossimi step, userai alcuni trucchi con i bordi per far diventare `.bb2a` un triangolo, cambiando la forma della parte superiore dell'edificio. Per prima cosa, rimuovi `background-color` da `.bb2` dato che non ne hai più bisogno.
# --hints--
-Dovresti rimuovere il `background-color` da `.bb2`.
+Dovresti rimuovere `background-color` da `.bb2`.
```js
assert.isEmpty(new __helpers.CSSHelp(document).getStyle(".bb2")?.backgroundColor);
diff --git a/curriculum/challenges/italian/14-responsive-web-design-22/learn-css-variables-by-building-a-city-skyline/5d822fd413a79914d39e98fe.md b/curriculum/challenges/italian/14-responsive-web-design-22/learn-css-variables-by-building-a-city-skyline/5d822fd413a79914d39e98fe.md
new file mode 100644
index 00000000000..8a4e0249cac
--- /dev/null
+++ b/curriculum/challenges/italian/14-responsive-web-design-22/learn-css-variables-by-building-a-city-skyline/5d822fd413a79914d39e98fe.md
@@ -0,0 +1,259 @@
+---
+id: 5d822fd413a79914d39e98fe
+title: Step 54
+challengeType: 0
+dashedName: step-54
+---
+
+# --description--
+
+Aggiungi queste proprietà a `.bb2a`:
+
+```css
+margin: auto;
+width: 5vw;
+height: 5vw;
+border-top: 1vw solid #000;
+border-bottom: 1vw solid #000;
+border-left: 1vw solid #999;
+border-right: 1vw solid #999;
+```
+
+Dopo averle aggiunte, potrai vedere come un bordo spesso su un elemento crea degli angoli dove i due lati si incontrano. Stai per utilizzare il bordo inferiore come la parte superiore dell'edificio.
+
+# --hints--
+
+Dovresti dare a `.bb2a` una proprietà `margin` impostata su`auto`.
+
+```js
+assert.equal(new __helpers.CSSHelp(document).getStyle('.bb2a')?.margin, "auto");
+```
+
+Dovresti dare a `.bb2a` una proprietà `width` impostata su `auto`.
+
+```js
+assert.equal(new __helpers.CSSHelp(document).getStyle('.bb2a')?.width, "5vw");
+```
+
+Dovresti dare a `.bb2a` una proprietà `height` di `5vw`.
+
+```js
+assert.equal(new __helpers.CSSHelp(document).getStyle('.bb2a')?.height, "5vw");
+```
+
+Dovresti dare a `.bb2a` una proprietà `border-top` con il valore `1vw solid #000`.
+
+```js
+assert.equal(new __helpers.CSSHelp(document).getStyle('.bb2a')?.borderTop, "1vw solid rgb(0, 0, 0)");
+```
+
+Dovresti dare a `.bb2a` una proprietà `border-bottom` con il valore `1vw solid #000`.
+
+```js
+assert.equal(new __helpers.CSSHelp(document).getStyle('.bb2a')?.borderBottom, "1vw solid rgb(0, 0, 0)");
+```
+
+Dovresti dare a `.bb2a` una proprietà `border-left` con il valore `1vw solid #999`.
+
+```js
+assert.equal(new __helpers.CSSHelp(document).getStyle('.bb2a')?.borderLeft, "1vw solid rgb(153, 153, 153)");
+```
+
+Dovresti dare a `.bb2a` una proprietà `border-right` con il valore `1vw solid #999`.
+
+```js
+assert.equal(new __helpers.CSSHelp(document).getStyle('.bb2a')?.borderRight, "1vw solid rgb(153, 153, 153)");
+```
+
+# --seed--
+
+## --seed-contents--
+
+```html
+
+
+
+ City Skyline
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+```css
+:root {
+ --building-color1: #aa80ff;
+ --building-color2: #66cc99;
+ --building-color3: #cc6699;
+ --building-color4: #538cc6;
+ --window-color1: black;
+ --window-color2: #8cd9b3;
+}
+
+* {
+ border: 1px solid black;
+ box-sizing: border-box;
+}
+
+body {
+ height: 100vh;
+ margin: 0;
+ overflow: hidden;
+}
+
+.background-buildings, .foreground-buildings {
+ width: 100%;
+ height: 100%;
+ display: flex;
+ align-items: flex-end;
+ justify-content: space-evenly;
+ position: absolute;
+ top: 0;
+}
+
+/* BACKGROUND BUILDINGS - "bb" stands for "background building" */
+.bb1 {
+ width: 10%;
+ height: 70%;
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+}
+
+.bb1a {
+ width: 70%;
+}
+
+.bb1b {
+ width: 80%;
+}
+
+.bb1c {
+ width: 90%;
+}
+
+.bb1d {
+ width: 100%;
+ height: 70%;
+ background: linear-gradient(
+ var(--building-color1) 50%,
+ var(--window-color1)
+ );
+}
+
+.bb1-window {
+ height: 10%;
+ background: linear-gradient(
+ var(--building-color1),
+ var(--window-color1)
+ );
+}
+
+.bb2 {
+ width: 10%;
+ height: 50%;
+}
+--fcc-editable-region--
+
+--fcc-editable-region--
+.bb2b {
+ width: 100%;
+ height: 100%;
+ background: repeating-linear-gradient(
+ var(--building-color2),
+ var(--building-color2) 6%,
+ var(--window-color2) 6%,
+ var(--window-color2) 9%
+ );
+}
+
+.bb3 {
+ width: 10%;
+ height: 55%;
+ background-color: var(--building-color3);
+}
+
+.bb4 {
+ width: 11%;
+ height: 58%;
+ background-color: var(--building-color4);
+}
+
+/* FOREGROUND BUILDINGS - "fb" stands for "foreground building" */
+.fb1 {
+ width: 10%;
+ height: 60%;
+ background-color: var(--building-color4);
+}
+
+.fb2 {
+ width: 10%;
+ height: 40%;
+ background-color: var(--building-color3);
+}
+
+.fb3 {
+ width: 10%;
+ height: 35%;
+ background-color: var(--building-color1);
+}
+
+.fb4 {
+ width: 8%;
+ height: 45%;
+ background-color: var(--building-color1);
+ position: relative;
+ left: 10%;
+}
+
+.fb5 {
+ width: 10%;
+ height: 33%;
+ background-color: var(--building-color2);
+ position: relative;
+ right: 10%;
+}
+
+.fb6 {
+ width: 9%;
+ height: 38%;
+ background-color: var(--building-color3);
+}
+
+```
+
diff --git a/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-data-structures/generate-an-array-of-all-object-keys-with-object.keys.md b/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-data-structures/generate-an-array-of-all-object-keys-with-object.keys.md
index dab881e7679..83a218408f3 100644
--- a/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-data-structures/generate-an-array-of-all-object-keys-with-object.keys.md
+++ b/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-data-structures/generate-an-array-of-all-object-keys-with-object.keys.md
@@ -8,7 +8,7 @@ dashedName: generate-an-array-of-all-object-keys-with-object-keys
# --description--
-Também podemos gerar um array o qual contém todas as chaves armazenadas em um objeto usando o método `Object.keys()` e passando um objeto como argumento. Isso retornará um array com strings representando cada propriedade do objeto. Novamente, não haverá uma ordem específica para as entradas no array.
+Também podemos gerar um array o qual contém todas as chaves armazenadas em um objeto com o método `Object.keys()`. Esse método recebe um objeto como argumento e retorna um array de strings que representam cada propriedade no objeto. Novamente, não haverá uma ordem específica para as entradas no array.
# --instructions--
diff --git a/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/declare-a-read-only-variable-with-the-const-keyword.md b/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/declare-a-read-only-variable-with-the-const-keyword.md
index 98f3849b7be..2bb942b2655 100644
--- a/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/declare-a-read-only-variable-with-the-const-keyword.md
+++ b/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/declare-a-read-only-variable-with-the-const-keyword.md
@@ -25,7 +25,7 @@ Você sempre deve nomear variáveis que você não quer reatribuir, usando a pal
# --instructions--
-Altere o código para que todas as variáveis sejam declaradas usando `let` ou `const`. Use `let` quando você quiser que a variável mude e `const` quando você quiser que a variável permaneça constante. Além disso, renomeie as variáveis declaradas com `const` para que estejam de acordo com as práticas comuns.
+Altere o código para que todas as variáveis sejam declaradas usando `let` ou `const`. Use `let` quando você quiser que a variável mude e `const` quando você quiser que a variável permaneça constante. Além disso, renomeie as variáveis declaradas com `const` para que estejam de acordo com as práticas comuns. Não altere as strings atribuídas às variáveis.
# --hints--
@@ -45,10 +45,15 @@ assert.notMatch(code, /(fCC)/);
`FCC` deve ser uma variável constante declarada com `const`.
```js
-assert.equal(FCC, 'freeCodeCamp');
assert.match(code, /const\s+FCC/);
```
+A string atribuída a `FCC` não deve ser alterada.
+
+```js
+assert.equal(FCC, 'freeCodeCamp');
+```
+
A variável `fact` deve ser declarada com `let`.
```js
diff --git a/curriculum/challenges/portuguese/10-coding-interview-prep/rosetta-code/deal-cards-for-freecell.md b/curriculum/challenges/portuguese/10-coding-interview-prep/rosetta-code/deal-cards-for-freecell.md
index 920e5201549..436d9961f67 100644
--- a/curriculum/challenges/portuguese/10-coding-interview-prep/rosetta-code/deal-cards-for-freecell.md
+++ b/curriculum/challenges/portuguese/10-coding-interview-prep/rosetta-code/deal-cards-for-freecell.md
@@ -8,11 +8,11 @@ dashedName: deal-cards-for-freecell
# --description--
-O *FreeCell* é o jogo de cartas de paciência que Paul Alfille introduziu no sistema PLATO, em 1978. Jim Horne, na Microsoft, mudou o nome para FreeCell e reimplementou o jogo para o [DOS](https://rosettacode.org/wiki/DOS "DOS") e, posteriormente, para o [Windows](https://rosettacode.org/wiki/Windows "Windows"). A versão do Windows apresentava 32 mil distribuições numeradas.
+O *FreeCell* é o jogo de cartas de paciência que Paul Alfille introduziu no sistema PLATO, em 1978. Jim Horne, da Microsoft, mudou o nome para FreeCell e implementou novamente o jogo no DOS e depois no Windows. A versão do Windows apresentava 32 mil distribuições numeradas.
À medida que o jogo se tornou popular, Jim Horne revelou o algoritmo, e outras implementações do FreeCell começaram a reproduzir as distribuições de cartas da versão da Microsoft. Estas distribuições eram numeradas de 1 a 32000. As versões mais recentes da Microsoft têm 1 milhão de distribuições, numeradas de 1 a 1000000. Algumas implementações permitem números fora desse intervalo.
-O algoritmo usa este [gerador de congruência linear](https://rosettacode.org/wiki/linear congruential generator "linear congruential generator") de Microsoft C:
+O algoritmo usa o gerador de congruência linear do C da Microsoft:
Faça o seed do RNG (intervalo) com o número da distribuição.
-
Crie um array de 52 cartas: Ás de Paus, Ás de Ouro, Ás de Copas, Ás de Espadas, 2 de Paus, 2 de Ouro, e assim por diante: Ás, 2, 3, 4, 5, 6, 7, 8, 9, 10, Valete, Rainha, Rei. Os índices do array vão de 0 a 51, estando o Ás de Paus no índice 0 e o Rei de Espadas no índice 51.
+
Crie um array de 52 cartas: Ás de Paus, Ás de Ouro, Ás de Copas, Ás de Espadas, 2 de Paus, 2 de Ouro, e assim por diante: Ás, 2, 3, 4, 5, 6, 7, 8, 9, 10, Valete, Rainha, Rei. Os índices do array vão de 0 a 51, estando o Ás de Paus no índice 0 e o Rei de Espadas no índice 51.
Até que o array esteja vazio:
Escolha uma carta aleatória no índice ≡ próximo número aleatório (tamanho do array mod).
@@ -79,8 +79,6 @@ Segue o algoritmo:
Escreva uma função para receber um número de distribuição e distribuir as cartas na mesma ordem que se encontram neste algoritmo. A função deve retornar um array bidimensional representando a mesa de Freecell.
-As distribuições também podem ser verificadas comparando-as às [soluções do FreeCell para 1.000.000 de jogos](https://freecellgamesolutions.com/). (Chame uma das solução por vídeo e ela mostra a distribuição inicial.)
-
# --hints--
`dealFreeCell` deve ser uma função.
diff --git a/curriculum/challenges/portuguese/10-coding-interview-prep/rosetta-code/dot-product.md b/curriculum/challenges/portuguese/10-coding-interview-prep/rosetta-code/dot-product.md
index f9540d55789..0d83171ebab 100644
--- a/curriculum/challenges/portuguese/10-coding-interview-prep/rosetta-code/dot-product.md
+++ b/curriculum/challenges/portuguese/10-coding-interview-prep/rosetta-code/dot-product.md
@@ -8,7 +8,7 @@ dashedName: dot-product
# --description--
-Crie uma função, para calcular o **[Produto escalar](https://en.wikipedia.org/wiki/Dot product)**, também conhecido como **produto interno** entre dois vetores.
+Crie uma função, para calcular o **produto escalar**, também conhecido como **produto interno** entre dois vetores.
# --hints--
diff --git a/curriculum/challenges/portuguese/10-coding-interview-prep/rosetta-code/heronian-triangles.md b/curriculum/challenges/portuguese/10-coding-interview-prep/rosetta-code/heronian-triangles.md
index dadba052562..5133fb34f92 100644
--- a/curriculum/challenges/portuguese/10-coding-interview-prep/rosetta-code/heronian-triangles.md
+++ b/curriculum/challenges/portuguese/10-coding-interview-prep/rosetta-code/heronian-triangles.md
@@ -8,7 +8,7 @@ dashedName: heronian-triangles
# --description--
-A [fórmula de Heron](https://en.wikipedia.org/wiki/Heron's formula "wp: Heron's formula") para a área de um triângulo dado o comprimento de seus três lados `a`, `b`, e `c`, é dada por:
+A fórmula de Hero para a área de um triângulo dado o comprimento de seus três lados `a`, `b` e `c` é dada por:
$A = \\sqrt{s(s-a)(s-b)(s-c)},$
diff --git a/curriculum/challenges/portuguese/10-coding-interview-prep/rosetta-code/jortsort.md b/curriculum/challenges/portuguese/10-coding-interview-prep/rosetta-code/jortsort.md
index c3c4c04ef99..7824882e12c 100644
--- a/curriculum/challenges/portuguese/10-coding-interview-prep/rosetta-code/jortsort.md
+++ b/curriculum/challenges/portuguese/10-coding-interview-prep/rosetta-code/jortsort.md
@@ -8,7 +8,7 @@ dashedName: jortsort
# --description--
-jortSort é um conjunto de ferramentas de ordenação que faz com que o usuário faça o trabalho e garante a eficiência porque você não tem que organizar novamente. Ele foi apresentado originalmente por Jenn "Moneydollars" Schiffer na prestigiada conferência [JSConf](https://www.youtube.com/watch?v=pj4U_W0OFoE).
+jortSort é um conjunto de ferramentas de ordenação que faz com que o usuário faça o trabalho e garante a eficiência porque você não tem que organizar novamente. Ela foi originalmente apresentada por Jenn "Moneydollars" Schiffer no prestigiado JSConf2014.
jortSort deve ser uma função que recebe um único array de objetos comparáveis como argumento. Ela ordena o array em ordem ascendente e compara o array ordenado ao array fornecido inicialmente. Se os arrays corresponderem (ou seja, se o array original já foi ordenado), a função retorna true. Se os arrays não corresponderem (ou seja, se o array original não estiver ordenado), a função retorna false.
diff --git a/curriculum/challenges/portuguese/10-coding-interview-prep/rosetta-code/kaprekar-numbers.md b/curriculum/challenges/portuguese/10-coding-interview-prep/rosetta-code/kaprekar-numbers.md
index 36ae6d0e6c7..28e3761add2 100644
--- a/curriculum/challenges/portuguese/10-coding-interview-prep/rosetta-code/kaprekar-numbers.md
+++ b/curriculum/challenges/portuguese/10-coding-interview-prep/rosetta-code/kaprekar-numbers.md
@@ -8,7 +8,7 @@ dashedName: kaprekar-numbers
# --description--
-Um número inteiro positivo é um [número de Kaprekar](https://en.wikipedia.org/wiki/Kaprekar number) se:
+Um número inteiro positivo é um número de Kaprekar se:
É o número 1, ou
@@ -21,7 +21,7 @@ Exemplo de números de Kaprekar:
2223 é um número de Kaprekar, pois 2223 * 2223 = 4941729, 4941729 pode ser dividido em 494 e 1729, e 494 + 1729 = 2223
-
A série de números de Kaprekar é conhecida como A006886 e começa assim: 1, 9, 45, 55, ...
+
A série de números de Kaprekar é conhecida como A006886 e começa com 1, 9, 45, 55, ...
# --instructions--
diff --git a/curriculum/challenges/portuguese/10-coding-interview-prep/rosetta-code/long-multiplication.md b/curriculum/challenges/portuguese/10-coding-interview-prep/rosetta-code/long-multiplication.md
index 1a3fc4b6d9a..31449d98a45 100644
--- a/curriculum/challenges/portuguese/10-coding-interview-prep/rosetta-code/long-multiplication.md
+++ b/curriculum/challenges/portuguese/10-coding-interview-prep/rosetta-code/long-multiplication.md
@@ -8,7 +8,7 @@ dashedName: long-multiplication
# --description--
-Implemente explicitamente a [multiplicação de números grandes](https://en.wikipedia.org/wiki/long multiplication).
+Implemente explicitamente uma multiplicação longa.
Esta é uma abordagem possível para a álgebra de números inteiros de precisão arbitrária.
diff --git a/curriculum/challenges/portuguese/10-coding-interview-prep/rosetta-code/longest-increasing-subsequence.md b/curriculum/challenges/portuguese/10-coding-interview-prep/rosetta-code/longest-increasing-subsequence.md
index d8f74b9151c..ccd5f9e175e 100644
--- a/curriculum/challenges/portuguese/10-coding-interview-prep/rosetta-code/longest-increasing-subsequence.md
+++ b/curriculum/challenges/portuguese/10-coding-interview-prep/rosetta-code/longest-increasing-subsequence.md
@@ -12,14 +12,14 @@ O problema da maior subsequência crescente é encontrar uma subsequência de um
Para o seguinte array:
-$\\{3, 10, 2, 1, 20\\}$
+```js
+const array = [3, 10, 2, 1, 20];
+```
A maior subsequência crescente é:
$\\{3, 10, 20\\}$
-Para obter mais informações sobre esse problema, consulte a [Wikipedia](https://en.wikipedia.org/wiki/Longest increasing subsequence).
-
# --instructions--
Escreva uma função que receba um array de números como parâmetro e retorne a maior subsequência crescente.
diff --git a/curriculum/challenges/portuguese/10-coding-interview-prep/rosetta-code/luhn-test-of-credit-card-numbers.md b/curriculum/challenges/portuguese/10-coding-interview-prep/rosetta-code/luhn-test-of-credit-card-numbers.md
index a8ec9e0ad36..73a74de613a 100644
--- a/curriculum/challenges/portuguese/10-coding-interview-prep/rosetta-code/luhn-test-of-credit-card-numbers.md
+++ b/curriculum/challenges/portuguese/10-coding-interview-prep/rosetta-code/luhn-test-of-credit-card-numbers.md
@@ -8,7 +8,7 @@ dashedName: luhn-test-of-credit-card-numbers
# --description--
-O [teste de Luhn](https://en.wikipedia.org/wiki/Luhn algorithm) é usado por algumas empresas de cartões de crédito para distinguir números válidos de cartão de crédito do que poderia ser uma seleção aleatória de dígitos.
+O teste de Luhn é usado por algumas empresas de cartões de crédito para distinguir números válidos de cartão de crédito do que poderia ser uma seleção aleatória de dígitos.
Essas empresas que usam números de cartão de crédito que podem ser validados pelo teste de Luhn têm números que passam no teste a seguir:
diff --git a/curriculum/challenges/portuguese/10-coding-interview-prep/rosetta-code/sorting-algorithms-bogosort.md b/curriculum/challenges/portuguese/10-coding-interview-prep/rosetta-code/sorting-algorithms-bogosort.md
index ac3b86a2d0b..b212bbf2fe4 100644
--- a/curriculum/challenges/portuguese/10-coding-interview-prep/rosetta-code/sorting-algorithms-bogosort.md
+++ b/curriculum/challenges/portuguese/10-coding-interview-prep/rosetta-code/sorting-algorithms-bogosort.md
@@ -8,7 +8,7 @@ dashedName: sorting-algorithmsbogosort
# --description--
-Faça o [Bogosort](https://en.wikipedia.org/wiki/Bogosort) de uma lista de números.
+Faça a ordenação Bogosort de uma lista de números.
O Bogosort simplesmente embaralha uma coleção aleatoriamente até que ela fica ordenada.
diff --git a/curriculum/challenges/portuguese/10-coding-interview-prep/rosetta-code/sorting-algorithms-pancake-sort.md b/curriculum/challenges/portuguese/10-coding-interview-prep/rosetta-code/sorting-algorithms-pancake-sort.md
index 77493260118..21307a91593 100644
--- a/curriculum/challenges/portuguese/10-coding-interview-prep/rosetta-code/sorting-algorithms-pancake-sort.md
+++ b/curriculum/challenges/portuguese/10-coding-interview-prep/rosetta-code/sorting-algorithms-pancake-sort.md
@@ -8,7 +8,7 @@ dashedName: sorting-algorithmspancake-sort
# --description--
-Escreva uma função para ordenar um array de inteiros (de qualquer tamanho conveniente) em ordem ascendente usando o método de ordenação [Pancake sorting](https://en.wikipedia.org/wiki/Pancake sorting). A função deve retornar o array ordenado.
+Escreva uma função para ordenar um array de números inteiros (de qualquer tamanho conveniente) em ordem ascendente usando a ordenação de Panqueca. A função deve retornar o array ordenado.
Em resumo, em vez de serem ordenados elementos individuais, a única operação permitida é "virar" uma extremidade da lista, assim:
diff --git a/curriculum/challenges/portuguese/10-coding-interview-prep/rosetta-code/sorting-algorithms-stooge-sort.md b/curriculum/challenges/portuguese/10-coding-interview-prep/rosetta-code/sorting-algorithms-stooge-sort.md
index 124973d4b1b..b3f13a23c1a 100644
--- a/curriculum/challenges/portuguese/10-coding-interview-prep/rosetta-code/sorting-algorithms-stooge-sort.md
+++ b/curriculum/challenges/portuguese/10-coding-interview-prep/rosetta-code/sorting-algorithms-stooge-sort.md
@@ -8,7 +8,7 @@ dashedName: sorting-algorithmsstooge-sort
# --description--
-Escreva uma função para executar a [ordenação fantoche](https://en.wikipedia.org/wiki/Stooge sort) em um array de números inteiros. A função deve retornar o array ordenado.
+Escreva uma função para executar ordenação Stooge Sort em um array de números inteiros. A função deve retornar o array ordenado.
O algoritmo de ordenação fantoche é o seguinte:
diff --git a/curriculum/challenges/portuguese/10-coding-interview-prep/rosetta-code/subleq.md b/curriculum/challenges/portuguese/10-coding-interview-prep/rosetta-code/subleq.md
index ff2deec3baf..f48d943aada 100644
--- a/curriculum/challenges/portuguese/10-coding-interview-prep/rosetta-code/subleq.md
+++ b/curriculum/challenges/portuguese/10-coding-interview-prep/rosetta-code/subleq.md
@@ -8,7 +8,7 @@ dashedName: subleq
# --description--
-O [Subleq](https://rosettacode.org/wiki/eso:Subleq) é um exemplo de um [One-Instruction Set Computer (OISC)](https://en.wikipedia.org/wiki/One_instruction_set_computer).
+Subleq é um exemplo de máquina de uma instrução (OISC).
Seu nome vem de sua única instrução, que é **SU**btract and **B**ranch if **L**ess than or **EQ**ual (subtraia e ramifique se for menor ou igual) a zero.
diff --git a/curriculum/challenges/portuguese/10-coding-interview-prep/rosetta-code/taxicab-numbers.md b/curriculum/challenges/portuguese/10-coding-interview-prep/rosetta-code/taxicab-numbers.md
index 7577b510205..4e0212f1fac 100644
--- a/curriculum/challenges/portuguese/10-coding-interview-prep/rosetta-code/taxicab-numbers.md
+++ b/curriculum/challenges/portuguese/10-coding-interview-prep/rosetta-code/taxicab-numbers.md
@@ -8,7 +8,7 @@ dashedName: taxicab-numbers
# --description--
-Um [Número taxicab](https://pt.wikipedia.org/wiki/N%C3%Bamero_taxicab) (a definição que está sendo usada aqui) é um inteiro positivo que pode ser expressado como a soma de dois cubos positivos em mais de uma maneira.
+Um número de taxicab (a definição que será usada aqui) é um número inteiro positivo que pode ser expresso como a soma de dois cubos positivos de mais de uma maneira.
O primeiro número taxicab é `1729`, que é:
@@ -29,13 +29,6 @@ Os números taxicab também são conhecidos como:
Escreva uma função que retorne o menor número taxicab de `n`. Para cada um dos números taxicab, mostre o número e os cubos que o constituem.
-**Veja também:**
-
-
-
# --hints--
`taxicabNumbers` deve ser uma função.
diff --git a/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-accessibility-by-building-a-quiz/6145ed1f22caab087630aaad.md b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-accessibility-by-building-a-quiz/6145ed1f22caab087630aaad.md
index 937a7088703..961d7b89bdf 100644
--- a/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-accessibility-by-building-a-quiz/6145ed1f22caab087630aaad.md
+++ b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-accessibility-by-building-a-quiz/6145ed1f22caab087630aaad.md
@@ -7,7 +7,7 @@ dashedName: step-33
# --description--
-Para prevenir repetição desnecessária, marque o pseudoelemento `before` do elemento `p` e dê a ele uma propriedade `content` de `Question #`.
+Para prevenir repetição desnecessária, marque o pseudoelemento `before` do elemento `p` e dê a ele uma propriedade `content` de `"Question #"`.
# --hints--
@@ -17,7 +17,7 @@ Você deve usar o seletor `p::before`.
assert.exists(new __helpers.CSSHelp(document).getStyle('p::before'));
```
-Você deve dar ao pseudoelemento `p::before` uma propriedade `content` de `Question #`.
+Você deve dar ao pseudoelemento `p::before` uma propriedade `content` de `"Question #"`.
```js
assert.include(new __helpers.CSSHelp(document).getStyle('p::before')?.content, 'Question #');
diff --git a/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-typography-by-building-a-nutrition-label/615f42a021625f656101ef93.md b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-typography-by-building-a-nutrition-label/615f42a021625f656101ef93.md
index d50922db604..187e6499612 100644
--- a/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-typography-by-building-a-nutrition-label/615f42a021625f656101ef93.md
+++ b/curriculum/challenges/portuguese/14-responsive-web-design-22/learn-typography-by-building-a-nutrition-label/615f42a021625f656101ef93.md
@@ -25,7 +25,7 @@ O novo elemento `span` deve ter o atributo `class` definido como `right`.
assert(document.querySelector('span')?.classList?.contains('right'));
```
-O elemento `.right` deve ter o texto `2/3 cup (55g)`.
+O elemento `span` deve ter o texto `2/3 cup (55g)`.
```js
assert(document.querySelector('span')?.textContent === '2/3 cup (55g)');