Focus: CSS layouts, responsive design, accessible styling, Flexbox, Grid
Take the profile page you built in Week 1 and transform it into a polished, responsive, accessible interface. You won't write new HTML, because everything you build this week lives in CSS. By the end, your page should work on a phone, a tablet, and a desktop, and pass a basic accessibility audit.
Create an external styles.css and link it from your HTML
Add the universal box-sizing reset at the very top:
*, *::before, *::after { box-sizing: border-box;}
Set a consistent font-family on body using a system font stack or a Google Font
Use rem for all font sizes and spacing throughout — no px for typography or layout spacing
Add a fluid container: width: 90%; max-width: 1200px; margin: 0 auto;
grid-template-areas so the structure is readable at a glancegap — no manual margins between inputs!border-radius: 50%), have a fixed size, and never overflow its containerThe page must be built mobile-first: base styles target small screens, larger layouts are added with min-width media queries
Include the viewport meta tag in your HTML <head> if it isn't there already:
<meta name="viewport" content="width=device-width, initial-scale=1">
Define at least two breakpoints:
600px: the header shifts from stacked to a horizontal layout (image and text side by side)900px: the main content area gains a sidebar. Move your interests list or a short "Quick Facts" section into a second column using GridVerify your layout at each breakpoint using DevTools' device toolbar (Ctrl/Cmd + Shift + M)
No bare outline: none anywhere in your stylesheet without a replacement. Add custom :focus-visible styles for all interactive elements (links, the submit button, form inputs):
:focus-visible { outline: 3px solid #6366f1; outline-offset: 3px; border-radius: 4px;}
All text must pass WCAG AA contrast minimums: 4.5:1 for body text, 3:1 for large text. Check using DevTools' color picker or WebAIM Contrast Checker
Form inputs must have a visible focus state beyond the browser default: use border-color and box-shadow to indicate focus:
.form input:focus,.form textarea:focus { outline: none; border-color: #6366f1; box-shadow: 0 0 0 3px rgba(99, 102, 241, 0.25);}
The dark mode class from your Week 1 JavaScript (dark-mode on body) must actually change the visual appearance. Add CSS for it:
Make sure your dark mode text still passes contrast requirements
```css
.dark-mode { background-color: #1e293b; color: #f1f5f9;}
```
Add prefers-reduced-motion handling for any transitions or hover effects you include:
@media (prefers-reduced-motion: reduce) { *, *::before, *::after { transition-duration: 0.01ms; }}
transition to those hover states so they animate smoothly (and wrap it in a prefers-reduced-motion check)Open your finished page and verify the following, then take two screenshots:
mobile-screenshot.pngaxe-screenshot.pngstyles.css: your complete stylesheetindex.html: with viewport meta tag added if it was missingmobile-screenshot.pngaxe-screenshot.pngborder: 1px solid red to each section (seeing the boxes makes grid debugging much faster)Follow the Assignment submission guide to learn how to submit the assignment
The HackYourFuture curriculum is licensed under CC BY-NC-SA 4.0

Found a mistake or have a suggestion? Let us know in the feedback form.