You can build a page that responds to its visitor.
That is not a vague cheer. It is a concrete claim about what this act put in your hands. Run the page below. Scroll the preview to Skills for the cards and count, and to Contact for the form. Both sit below the header. If you already ran the exercises through the skills count, this sandbox should open with your own version. If not, it opens with the completed Act III starter, the same behaviour either way. Try the buttons, the theme toggle, the skills summary, and the contact form.
▸WHAT'S ALREADY IN THIS PAGE
New here? This starter already carries the standard HTML frame. You do not need to change it to do the exercise — each piece is taught in its own lesson.
<!DOCTYPE html>— Tells the browser to use modern rendering rules. Taught in lesson 2.<html> … </html>— The root element that wraps the whole document. Taught in lesson 2.lang="en"— Sets the page's language. Taught in lesson 6.<head>— Holds information about the page; nothing in it is drawn on screen. Taught in lesson 2.<meta charset="UTF-8" />— Sets how the browser decodes the text. Taught in lesson 6.<title>— Sets the browser-tab text. Taught in lesson 2.<body>— Holds everything a visitor actually sees. Taught in lesson 2.<script>— Holds JavaScript for the page. Taught in lesson 23.
What this page can do
Everything interactive on that page was added on purpose, one lesson at a time. Structure came from Act I. Styling came from Act II.
It runs JavaScript from a <script> at the end of body. It stores values, including lists and labeled objects. It finds elements with querySelector and updates text with textContent. It wraps repeated steps in functions and listens for clicks with addEventListener. It branches with if / else so one control can flip light and dark, and so the tagline button can alternate. It walks an array with for…of, builds skill cards with createElement and append, and reads skill.name from objects. It can count matching skills with a running total (count = count + 1 inside a loop). On this shared page the skills line is visitor-facing: "Skills listed: " + skills.length. It reads an input's .value on submit and answers on the page.
You can download those files from the sandbox and open them outside this site. The behaviour is real JavaScript, not a demo that only works here.
Real projects give JavaScript its own file the same way CSS got one. This track kept the script inline so each lesson could stay on one idea. When you leave the rails, a script.js next to index.html and styles.css is the usual next step.
What it cannot do yet
It responds on this profile page because the lessons led you there. That is not the same as building a second project from a blank file with no starter in front of you. Wiring a small app end to end, from a blank file, is what sits ahead. The scoring pieces themselves, the running total, the comparison, the loop, you have already written.
What comes next
The capstone asks you to prove it without the rails. You will build a mini quiz app from scratch: HTML structure, CSS layout, and JavaScript scoring over an array of question objects. It is a second thing, not another section on this profile page. One continuous track got you here. The capstone checks whether the pieces travel with you.