gitextract_a46r8vfx/ ├── .github/ │ └── CODEOWNERS ├── .gitignore ├── .prettierignore ├── .prettierrc.json ├── .vscode/ │ ├── cspell.json │ ├── extensions.json │ └── project-words.txt ├── CODE_OF_CONDUCT.md ├── LICENSE ├── README.md ├── SECURITY.md ├── accessibility/ │ ├── aria/ │ │ ├── aria-div-buttons.html │ │ ├── aria-live.html │ │ ├── aria-no-live.html │ │ ├── aria-tabbed-info-box.html │ │ ├── form-validation-checkbox-disabled.html │ │ ├── form-validation-updated.html │ │ ├── quotes.json │ │ ├── validation-checkbox-disabled.js │ │ ├── validation.js │ │ ├── website-aria-roles/ │ │ │ ├── index.html │ │ │ └── style.css │ │ └── website-no-roles/ │ │ ├── index.html │ │ └── style.css │ ├── assessment-finished/ │ │ ├── index.html │ │ ├── main.js │ │ ├── marking-guide.md │ │ ├── media/ │ │ │ └── bear.ogg │ │ ├── style.css │ │ └── transcript.html │ ├── assessment-start/ │ │ ├── assessment-files/ │ │ │ ├── index.html │ │ │ ├── main.js │ │ │ ├── media/ │ │ │ │ └── bear.ogg │ │ │ └── style.css │ │ ├── index.html │ │ ├── main.js │ │ ├── media/ │ │ │ └── bear.ogg │ │ └── style.css │ ├── css/ │ │ ├── form-css.html │ │ ├── form-validation.html │ │ ├── mouse-and-keyboard-events.html │ │ ├── table-css.html │ │ └── validation.js │ ├── html/ │ │ ├── accessible-image.html │ │ ├── bad-form.html │ │ ├── bad-links.html │ │ ├── bad-semantics.html │ │ ├── bad-table.html │ │ ├── dino-info.html │ │ ├── good-form.html │ │ ├── good-links.html │ │ ├── good-semantics.html │ │ ├── native-keyboard-accessibility.html │ │ ├── style.css │ │ └── table-layout.html │ ├── mobile/ │ │ ├── common-job-types.html │ │ ├── html5-form-examples.html │ │ ├── multi-control-box-drag.html │ │ ├── simple-box-drag.html │ │ └── simple-button-example.html │ ├── multimedia/ │ │ ├── audio-transcript-ui/ │ │ │ ├── index.html │ │ │ └── main.js │ │ ├── custom-controls-OOJS/ │ │ │ ├── index.html │ │ │ └── main.js │ │ ├── custom-controls-basic/ │ │ │ ├── index.html │ │ │ └── main.js │ │ ├── custom-controls-start.html │ │ ├── custom-controls.css │ │ ├── native-controls.html │ │ ├── rabbit320.webm │ │ └── viper.ogg │ └── tasks/ │ ├── html-css/ │ │ ├── aria/ │ │ │ ├── aria1-download.html │ │ │ ├── aria1.html │ │ │ ├── aria2-download.html │ │ │ ├── aria2.html │ │ │ └── marking.md │ │ ├── css/ │ │ │ ├── css-a11y1-download.html │ │ │ ├── css-a11y1.html │ │ │ ├── css-a11y2-download.html │ │ │ ├── css-a11y2.html │ │ │ └── marking.md │ │ ├── html/ │ │ │ ├── html-a11y1-download.html │ │ │ ├── html-a11y1.html │ │ │ ├── html-a11y2-download.html │ │ │ ├── html-a11y2.html │ │ │ ├── html-a11y3-download.html │ │ │ ├── html-a11y3.html │ │ │ ├── html-a11y4-download.html │ │ │ ├── html-a11y4.html │ │ │ └── marking.md │ │ ├── playable.js │ │ └── styles.css │ └── js/ │ ├── aria/ │ │ └── aria-js1-download.html │ ├── js/ │ │ └── js1-download.html │ ├── playable.js │ └── styles.css ├── css/ │ ├── css-layout/ │ │ ├── flexbox/ │ │ │ ├── complex-flexbox.html │ │ │ ├── flex-align0.html │ │ │ ├── flex-align1.html │ │ │ ├── flex-ordering.html │ │ │ ├── flexbox-wrap0.html │ │ │ ├── flexbox-wrap1.html │ │ │ ├── flexbox0.html │ │ │ ├── flexbox1.html │ │ │ └── flexbox2.html │ │ ├── floats/ │ │ │ ├── 0_two-column-layout.html │ │ │ ├── 1-basic-example.html │ │ │ ├── 1_three-column-layout.html │ │ │ ├── 2-line-boxes.html │ │ │ ├── 2_float-disaster.html │ │ │ ├── 2a_fixed-by-clear.html │ │ │ ├── 3-clearing.html │ │ │ ├── 3_broken-layout.html │ │ │ ├── 4-clearfix.html │ │ │ ├── 4_fixed-layout-border-box.html │ │ │ ├── 5-overflow.html │ │ │ ├── 5_fixed-height-columns.html │ │ │ ├── 6-flow-root.html │ │ │ ├── fixed-layout-adjusted-percentages.html │ │ │ ├── simple-float.html │ │ │ ├── three-column-layout-wrong-order.html │ │ │ └── two-column-layout-fixed.html │ │ ├── fundamental-layout-comprehension/ │ │ │ ├── index.html │ │ │ └── styles.css │ │ ├── fundamental-layout-comprehension-finish/ │ │ │ ├── index.html │ │ │ ├── marking-guide.md │ │ │ └── styles.css │ │ ├── grids/ │ │ │ ├── 0-starting-point.html │ │ │ ├── 1-fixed-columns.html │ │ │ ├── 10-template-completed.html │ │ │ ├── 11-grid-system-starting-point.html │ │ │ ├── 12-grid-system-completed.html │ │ │ ├── 2-fr-tracks.html │ │ │ ├── 3-gaps.html │ │ │ ├── 4-repeat.html │ │ │ ├── 5-auto-rows.html │ │ │ ├── 6-min-max.html │ │ │ ├── 7-auto-fill.html │ │ │ ├── 8-placement-starting-point.html │ │ │ ├── 9-placement-completed.html │ │ │ ├── css-grid-finished.html │ │ │ ├── css-grid.html │ │ │ ├── css-tables-as-grid.html │ │ │ ├── flexbox-grid.html │ │ │ ├── fluid-grid-calc.html │ │ │ ├── fluid-grid-offset.html │ │ │ ├── fluid-grid.html │ │ │ ├── html-skeleton-finished.html │ │ │ ├── html-skeleton.html │ │ │ ├── normalize.css │ │ │ ├── simple-grid-finished.html │ │ │ ├── simple-grid.html │ │ │ └── skeleton.css │ │ ├── multicol/ │ │ │ ├── 0-starting-point.html │ │ │ ├── 1-simple-example.html │ │ │ ├── 2-simple-example-width.html │ │ │ ├── 3-gaps-rules.html │ │ │ └── 4-breaking.html │ │ ├── positioning/ │ │ │ ├── 0_basic-flow.html │ │ │ ├── 1_static-positioning.html │ │ │ ├── 2_relative-positioning.html │ │ │ ├── 3_absolute-positioning.html │ │ │ ├── 4_positioning-context.html │ │ │ ├── 5_z-index.html │ │ │ ├── 6_fixed-positioning.html │ │ │ └── 7_sticky-positioning.html │ │ ├── practical-positioning-examples/ │ │ │ ├── fixed-info-box.html │ │ │ ├── hidden-info-panel-start.html │ │ │ ├── hidden-info-panel.html │ │ │ ├── tabbed-info-box-start.html │ │ │ ├── tabbed-info-box.html │ │ │ └── tabs-manual.js │ │ └── stacking-and-float/ │ │ └── index.html │ ├── introduction-to-css/ │ │ ├── box-model/ │ │ │ ├── app/ │ │ │ │ └── sass │ │ │ ├── index.html │ │ │ └── style.css │ │ ├── cascade-and-inheritance/ │ │ │ ├── index.html │ │ │ └── style.css │ │ ├── css-selectors/ │ │ │ ├── combinators.html │ │ │ ├── index.html │ │ │ └── style.css │ │ ├── css-values-and-units/ │ │ │ ├── index.html │ │ │ └── style.css │ │ ├── debugging-css/ │ │ │ ├── index.html │ │ │ └── style.css │ │ ├── debugging-css-finished/ │ │ │ ├── index.html │ │ │ └── style.css │ │ ├── fundamental-css-comprehension/ │ │ │ ├── index.html │ │ │ └── style-resources.txt │ │ ├── fundamental-css-comprehension-finished/ │ │ │ ├── index.html │ │ │ ├── marking-guide.md │ │ │ └── style.css │ │ └── how-css-works/ │ │ ├── index.html │ │ └── style.css │ ├── styling-boxes/ │ │ ├── advanced_box_effects/ │ │ │ ├── background-clip-text.html │ │ │ ├── blend-modes.html │ │ │ ├── box-shadow.html │ │ │ └── filters.html │ │ ├── backgrounds/ │ │ │ ├── background-attachment.css │ │ │ ├── background-attachment.html │ │ │ ├── index.html │ │ │ └── repeating-background.html │ │ ├── borders/ │ │ │ ├── border-image.html │ │ │ ├── border-longhand.html │ │ │ └── rounded-corners.html │ │ ├── box-model-recap/ │ │ │ ├── box-sizing-example.css │ │ │ ├── box-sizing-example.html │ │ │ ├── css-tables-example.html │ │ │ ├── flexbox-example.html │ │ │ ├── min-max-container.css │ │ │ ├── min-max-container.html │ │ │ ├── min-max-image-container.css │ │ │ └── min-max-image-container.html │ │ ├── cool-information-box-finished/ │ │ │ ├── index.html │ │ │ ├── marking-guide.md │ │ │ └── style.css │ │ ├── cool-information-box-start/ │ │ │ ├── index.html │ │ │ └── style.css │ │ ├── letterheaded-paper-finished/ │ │ │ ├── index.html │ │ │ ├── marking-guide.md │ │ │ └── style.css │ │ ├── letterheaded-paper-start/ │ │ │ ├── index.html │ │ │ └── style.css │ │ └── styling-tables/ │ │ ├── punk-bands-complete.html │ │ ├── punk-bands-unstyled.html │ │ └── style.css │ └── styling-text/ │ ├── fundamentals/ │ │ └── index.html │ ├── styling-links/ │ │ ├── default-styles.html │ │ ├── external-link-icon.html │ │ ├── link-buttons.html │ │ └── styled-links.html │ ├── styling-lists/ │ │ ├── index.html │ │ └── unstyled-list.html │ ├── typesetting-a-homepage-finished/ │ │ ├── index.html │ │ ├── marking-guide.md │ │ ├── original-font-files/ │ │ │ ├── Lovato Light-Webfont/ │ │ │ │ ├── Licenses/ │ │ │ │ │ └── Webfont EULA 1.6.txt │ │ │ │ ├── Reference/ │ │ │ │ │ └── How_to_use_webfonts.html │ │ │ │ └── Webfonts/ │ │ │ │ └── lovato_light_macroman/ │ │ │ │ ├── Lovato-Light-demo.html │ │ │ │ ├── specimen_files/ │ │ │ │ │ ├── easytabs.js │ │ │ │ │ ├── grid_12-825-55-15.css │ │ │ │ │ └── specimen_stylesheet.css │ │ │ │ └── stylesheet.css │ │ │ ├── josefin-slab/ │ │ │ │ └── SIL Open Font License.txt │ │ │ └── webfontkit-20160419-074110/ │ │ │ ├── generator_config.txt │ │ │ ├── josefinslab-bold-demo.html │ │ │ ├── specimen_files/ │ │ │ │ ├── grid_12-825-55-15.css │ │ │ │ └── specimen_stylesheet.css │ │ │ └── stylesheet.css │ │ └── style.css │ ├── typesetting-a-homepage-start/ │ │ ├── index.html │ │ └── style.css │ └── web-fonts/ │ ├── fonts/ │ │ ├── cicle_fina-demo.html │ │ ├── generator_config.txt │ │ ├── specimen_files/ │ │ │ ├── grid_12-825-55-15.css │ │ │ └── specimen_stylesheet.css │ │ ├── stylesheet.css │ │ └── zantroke-demo.html │ ├── google-font.css │ ├── google-font.html │ ├── web-font-finished.css │ ├── web-font-finished.html │ ├── web-font-start.css │ ├── web-font-start.html │ └── zantroke/ │ ├── SIL Open Font License.txt │ └── Zantroke.otf ├── html/ │ ├── forms/ │ │ ├── basic-input-examples/ │ │ │ └── index.html │ │ ├── color-example/ │ │ │ └── index.html │ │ ├── date-picker-fallback/ │ │ │ └── index.html │ │ ├── datetime-local-example/ │ │ │ └── index.html │ │ ├── datetime-local-picker-fallback/ │ │ │ └── index.html │ │ ├── editable-input-example/ │ │ │ └── editable_input.html │ │ ├── file-examples/ │ │ │ ├── file-example.html │ │ │ ├── file-with-accept.html │ │ │ └── simple-file.html │ │ ├── form-validation/ │ │ │ ├── custom-error-message.html │ │ │ ├── detailed-custom-validation.html │ │ │ ├── fruit-length.html │ │ │ ├── fruit-pattern.html │ │ │ ├── fruit-required.html │ │ │ ├── fruit-start.html │ │ │ ├── full-example.html │ │ │ └── min-max.html │ │ ├── hidden-input-example/ │ │ │ └── index.html │ │ ├── html-form-structure/ │ │ │ ├── checkbox-label.html │ │ │ ├── fieldset-legend.html │ │ │ └── required-labels.html │ │ ├── image-type-example/ │ │ │ ├── index.html │ │ │ └── xy-coordinates-example.html │ │ ├── indeterminate-example/ │ │ │ └── index.html │ │ ├── month-examples/ │ │ │ └── month-validation.html │ │ ├── native-form-widgets/ │ │ │ ├── advanced-examples.html │ │ │ ├── button-examples.html │ │ │ ├── checkable-items.html │ │ │ ├── drop-down-content.html │ │ │ ├── multi-line-text-field.html │ │ │ ├── other-examples.html │ │ │ ├── positioned-legend.html │ │ │ └── single-line-text-fields.html │ │ ├── number-example/ │ │ │ └── index.html │ │ ├── postcard-example/ │ │ │ ├── index.html │ │ │ └── postcard-start.html │ │ ├── pseudo-classes/ │ │ │ ├── basic-required-optional.html │ │ │ ├── enabled-disabled-shipping.html │ │ │ ├── out-of-range.html │ │ │ ├── radios-checked-default.html │ │ │ ├── radios-checked-indeterminate.html │ │ │ ├── readonly-confirmation.html │ │ │ ├── required-optional-generated.html │ │ │ ├── user-valid-invalid.html │ │ │ └── valid-invalid.html │ │ ├── range-example/ │ │ │ └── index.html │ │ ├── select-example/ │ │ │ └── select-multiple.html │ │ ├── sending-form-data/ │ │ │ ├── get-method.html │ │ │ ├── php-example.html │ │ │ ├── php-example.php │ │ │ ├── post-method.html │ │ │ ├── python-example.py │ │ │ └── templates/ │ │ │ ├── form.html │ │ │ └── greeting.html │ │ ├── styling-examples/ │ │ │ ├── appearance-tester.html │ │ │ ├── checkboxes-styled.html │ │ │ ├── radios-styled.html │ │ │ ├── search-appearance.html │ │ │ ├── styled-file-picker.html │ │ │ ├── styled-search.html │ │ │ └── ugly-controls.html │ │ ├── tasks/ │ │ │ ├── advanced-styling/ │ │ │ │ ├── advanced-styling1-download.html │ │ │ │ ├── advanced-styling1.html │ │ │ │ ├── advanced-styling2-download.html │ │ │ │ ├── advanced-styling2.html │ │ │ │ ├── advanced-styling3-download.html │ │ │ │ └── marking.md │ │ │ ├── basic-controls/ │ │ │ │ ├── basic-controls1-download.html │ │ │ │ ├── basic-controls1.html │ │ │ │ ├── basic-controls2-download.html │ │ │ │ ├── basic-controls2.html │ │ │ │ ├── basic-controls3-download.html │ │ │ │ ├── basic-controls3.html │ │ │ │ └── marking.md │ │ │ ├── form-structure/ │ │ │ │ ├── form-structure1-download.html │ │ │ │ ├── form-structure1.html │ │ │ │ └── marking.md │ │ │ ├── form-validation/ │ │ │ │ ├── form-validation1-download.html │ │ │ │ ├── form-validation2-download.html │ │ │ │ ├── form-validation3-download.html │ │ │ │ └── marking.md │ │ │ ├── html5-controls/ │ │ │ │ ├── html5-controls1-download.html │ │ │ │ ├── html5-controls1.html │ │ │ │ ├── html5-controls2-download.html │ │ │ │ ├── html5-controls2.html │ │ │ │ └── marking.md │ │ │ ├── other-controls/ │ │ │ │ ├── marking.md │ │ │ │ ├── other-controls1-download.html │ │ │ │ ├── other-controls1.html │ │ │ │ ├── other-controls2-download.html │ │ │ │ ├── other-controls2.html │ │ │ │ ├── other-controls3-download.html │ │ │ │ └── other-controls3.html │ │ │ ├── playable.js │ │ │ ├── styles.css │ │ │ └── styling-basics/ │ │ │ ├── marking.md │ │ │ └── styling-basics1-download.html │ │ ├── tel-example/ │ │ │ └── index.html │ │ ├── text-example/ │ │ │ └── index.html │ │ ├── time-example/ │ │ │ └── index.html │ │ ├── toggle-switch-example/ │ │ │ └── index.html │ │ ├── url-example/ │ │ │ └── index.html │ │ ├── week-example/ │ │ │ └── index.html │ │ └── your-first-HTML-form/ │ │ ├── first-form-styled.html │ │ └── first-form.html │ ├── introduction-to-html/ │ │ ├── advanced-text-formatting/ │ │ │ ├── description-list.html │ │ │ ├── other-semantics.html │ │ │ └── quotations.html │ │ ├── creating-hyperlinks/ │ │ │ ├── contacts.html │ │ │ ├── index.html │ │ │ └── projects/ │ │ │ └── index.html │ │ ├── debugging-html/ │ │ │ ├── debug-example-fixed.html │ │ │ └── debug-example.html │ │ ├── document_and_website_structure/ │ │ │ ├── index.html │ │ │ └── style.css │ │ ├── getting-started/ │ │ │ └── index.html │ │ ├── html-text-formatting/ │ │ │ ├── text-complete.html │ │ │ └── text-start.html │ │ ├── marking-up-a-letter-finished/ │ │ │ ├── index.html │ │ │ └── marking-guide.md │ │ ├── marking-up-a-letter-start/ │ │ │ ├── css.txt │ │ │ └── letter-text.txt │ │ ├── navigation-menu-marked-up/ │ │ │ ├── index.html │ │ │ ├── pictures.html │ │ │ ├── projects.html │ │ │ └── social.html │ │ ├── navigation-menu-start/ │ │ │ ├── index.html │ │ │ ├── pictures.html │ │ │ ├── projects.html │ │ │ └── social.html │ │ ├── structuring-a-page-of-content-finished/ │ │ │ ├── index.html │ │ │ ├── marking-guide.md │ │ │ └── style.css │ │ ├── structuring-a-page-of-content-start/ │ │ │ ├── index.html │ │ │ └── style.css │ │ ├── tasks/ │ │ │ ├── advanced-text/ │ │ │ │ ├── advanced-text1-download.html │ │ │ │ ├── advanced-text1-finished.html │ │ │ │ ├── advanced-text1.html │ │ │ │ ├── advanced-text2-download.html │ │ │ │ ├── advanced-text2-finished.html │ │ │ │ ├── advanced-text2.html │ │ │ │ └── marking.md │ │ │ ├── basic-text/ │ │ │ │ ├── basic-text1-download.html │ │ │ │ ├── basic-text1-finished.html │ │ │ │ ├── basic-text1.html │ │ │ │ ├── basic-text2-download.html │ │ │ │ ├── basic-text2-finished.html │ │ │ │ ├── basic-text2.html │ │ │ │ ├── basic-text3-download.html │ │ │ │ ├── basic-text3-finished.html │ │ │ │ ├── basic-text3.html │ │ │ │ └── marking.md │ │ │ ├── links/ │ │ │ │ ├── links1-download.html │ │ │ │ ├── links1.html │ │ │ │ ├── links2-download.html │ │ │ │ ├── links2.html │ │ │ │ ├── links3-download.html │ │ │ │ ├── links3.html │ │ │ │ ├── marking.md │ │ │ │ ├── narwhals.html │ │ │ │ └── whales.html │ │ │ ├── playable.js │ │ │ └── styles.css │ │ └── the-html-head/ │ │ ├── css-and-js.html │ │ ├── meta-example.html │ │ ├── script.js │ │ ├── style.css │ │ └── title-example.html │ ├── multimedia-and-embedding/ │ │ ├── adding-vector-graphics-to-the-web/ │ │ │ └── vector-versus-raster.html │ │ ├── images-in-html/ │ │ │ └── index.html │ │ ├── mdn-splash-page-finished/ │ │ │ ├── index.html │ │ │ └── marking-guide.md │ │ ├── mdn-splash-page-start/ │ │ │ └── index.html │ │ ├── other-embedding-technologies/ │ │ │ ├── iframe-detail.html │ │ │ ├── iframe-youtube.html │ │ │ ├── object-image.html │ │ │ └── object-pdf.html │ │ ├── responsive-images/ │ │ │ ├── not-responsive.html │ │ │ ├── responsive.html │ │ │ └── srcset-resolutions.html │ │ ├── tasks/ │ │ │ ├── images/ │ │ │ │ ├── images1-download.html │ │ │ │ ├── images1.html │ │ │ │ ├── images2-download.html │ │ │ │ ├── images2.html │ │ │ │ ├── images3-download.html │ │ │ │ ├── images3.html │ │ │ │ └── marking.md │ │ │ ├── media-embed/ │ │ │ │ ├── marking.md │ │ │ │ ├── media/ │ │ │ │ │ ├── subtitles_en.vtt │ │ │ │ │ └── video.webm │ │ │ │ ├── mediaembed1-download.html │ │ │ │ ├── mediaembed1.html │ │ │ │ ├── mediaembed2-download.html │ │ │ │ ├── mediaembed2.html │ │ │ │ ├── mediaembed3-download.html │ │ │ │ └── mediaembed3.html │ │ │ ├── playable.js │ │ │ └── styles.css │ │ └── video-and-audio-content/ │ │ ├── extra-video-features.html │ │ ├── multiple-audio-formats.html │ │ ├── multiple-video-formats-no-controls.html │ │ ├── multiple-video-formats.html │ │ ├── rabbit320.webm │ │ ├── simple-video.html │ │ └── viper.ogg │ └── tables/ │ ├── advanced/ │ │ ├── items-sold-headers.html │ │ ├── items-sold-scope.html │ │ ├── items-sold.html │ │ ├── minimal-table.css │ │ ├── nested-tables.html │ │ ├── spending-record-finished.html │ │ ├── spending-record.html │ │ └── timetable-caption.html │ ├── assessment-finished/ │ │ ├── marking-guide.md │ │ ├── minimal-table.css │ │ └── planets-data.html │ ├── assessment-start/ │ │ ├── blank-template.html │ │ ├── minimal-table.css │ │ └── planets-data.txt │ └── basic/ │ ├── animals-table-fixed.html │ ├── animals-table.html │ ├── blank-template.html │ ├── dogs-table-fixed.html │ ├── dogs-table.html │ ├── minimal-table.css │ ├── personal-pronouns-styled.html │ ├── personal-pronouns.html │ ├── simple-table.html │ ├── timetable-fixed.html │ └── timetable.html ├── javascript/ │ ├── apis/ │ │ ├── client-side-storage/ │ │ │ ├── cache-sw/ │ │ │ │ └── video-store-offline/ │ │ │ │ ├── index.html │ │ │ │ ├── index.js │ │ │ │ ├── style.css │ │ │ │ ├── sw.js │ │ │ │ └── videos/ │ │ │ │ ├── crystal.webm │ │ │ │ ├── elf.webm │ │ │ │ ├── frog.webm │ │ │ │ ├── monster.webm │ │ │ │ ├── pig.webm │ │ │ │ └── rabbit.webm │ │ │ ├── indexeddb/ │ │ │ │ ├── notes/ │ │ │ │ │ ├── index-start.js │ │ │ │ │ ├── index.html │ │ │ │ │ ├── index.js │ │ │ │ │ └── style.css │ │ │ │ └── video-store/ │ │ │ │ ├── index.html │ │ │ │ ├── index.js │ │ │ │ ├── style.css │ │ │ │ └── videos/ │ │ │ │ ├── crystal.webm │ │ │ │ ├── elf.webm │ │ │ │ ├── frog.webm │ │ │ │ ├── monster.webm │ │ │ │ ├── pig.webm │ │ │ │ └── rabbit.webm │ │ │ └── web-storage/ │ │ │ ├── index.html │ │ │ ├── index.js │ │ │ └── personal-greeting.html │ │ ├── document-manipulation/ │ │ │ ├── dom-example-manipulated.html │ │ │ ├── dom-example.html │ │ │ ├── shopping-list-finished.html │ │ │ └── shopping-list.html │ │ ├── drawing-graphics/ │ │ │ ├── getting-started/ │ │ │ │ ├── 0_canvas_start/ │ │ │ │ │ ├── index.html │ │ │ │ │ ├── script.js │ │ │ │ │ └── style.css │ │ │ │ ├── 1_canvas_template/ │ │ │ │ │ ├── index.html │ │ │ │ │ ├── script.js │ │ │ │ │ └── style.css │ │ │ │ ├── 2_canvas_rectangles/ │ │ │ │ │ ├── index.html │ │ │ │ │ ├── script.js │ │ │ │ │ └── style.css │ │ │ │ ├── 3_canvas_paths/ │ │ │ │ │ ├── index.html │ │ │ │ │ ├── script.js │ │ │ │ │ └── style.css │ │ │ │ ├── 4_canvas_text/ │ │ │ │ │ ├── index.html │ │ │ │ │ ├── script.js │ │ │ │ │ └── style.css │ │ │ │ └── 5_canvas_images/ │ │ │ │ ├── index.html │ │ │ │ ├── script.js │ │ │ │ └── style.css │ │ │ ├── loops_animation/ │ │ │ │ ├── 6_canvas_for_loop/ │ │ │ │ │ ├── index.html │ │ │ │ │ ├── script.js │ │ │ │ │ └── style.css │ │ │ │ ├── 7_canvas_walking_animation/ │ │ │ │ │ ├── index.html │ │ │ │ │ ├── script.js │ │ │ │ │ └── style.css │ │ │ │ └── 8_canvas_drawing_app/ │ │ │ │ ├── index.html │ │ │ │ ├── script.js │ │ │ │ └── style.css │ │ │ ├── threejs-cube/ │ │ │ │ ├── index.html │ │ │ │ ├── script.js │ │ │ │ └── style.css │ │ │ └── threejs-video-cube/ │ │ │ ├── index.html │ │ │ ├── script.js │ │ │ └── style.css │ │ ├── fetching-data/ │ │ │ ├── can-store/ │ │ │ │ ├── can-script.js │ │ │ │ ├── can-style.css │ │ │ │ ├── index.html │ │ │ │ └── products.json │ │ │ ├── can-store-xhr/ │ │ │ │ ├── can-script.js │ │ │ │ ├── can-style.css │ │ │ │ ├── index.html │ │ │ │ └── products.json │ │ │ ├── fetch-finish.html │ │ │ ├── fetch-start.html │ │ │ ├── verse1.txt │ │ │ ├── verse2.txt │ │ │ ├── verse3.txt │ │ │ └── verse4.txt │ │ ├── introduction/ │ │ │ ├── bouncing-balls.html │ │ │ ├── main.js │ │ │ ├── style.css │ │ │ └── web-audio/ │ │ │ └── index.html │ │ ├── third-party-apis/ │ │ │ ├── mapquest/ │ │ │ │ ├── finished/ │ │ │ │ │ ├── index.html │ │ │ │ │ ├── script.js │ │ │ │ │ └── style.css │ │ │ │ └── start/ │ │ │ │ ├── index.html │ │ │ │ ├── script.js │ │ │ │ └── style.css │ │ │ ├── nytimes/ │ │ │ │ ├── finished/ │ │ │ │ │ ├── index.html │ │ │ │ │ ├── script.js │ │ │ │ │ └── style.css │ │ │ │ └── start/ │ │ │ │ ├── index.html │ │ │ │ ├── script.js │ │ │ │ └── style.css │ │ │ └── youtube/ │ │ │ ├── index.html │ │ │ ├── script.js │ │ │ └── youtube.css │ │ └── video-audio/ │ │ ├── finished/ │ │ │ ├── custom-player.js │ │ │ ├── index.html │ │ │ ├── style.css │ │ │ └── video/ │ │ │ └── sintel-short.webm │ │ └── start/ │ │ ├── index.html │ │ ├── style.css │ │ └── video/ │ │ └── sintel-short.webm │ ├── asynchronous/ │ │ ├── sequencing-animations/ │ │ │ ├── finished/ │ │ │ │ ├── index.html │ │ │ │ ├── main.js │ │ │ │ └── style.css │ │ │ ├── marking-guide.md │ │ │ └── start/ │ │ │ ├── index.html │ │ │ ├── main.js │ │ │ └── style.css │ │ └── workers/ │ │ ├── finished/ │ │ │ ├── generate.js │ │ │ ├── index.html │ │ │ ├── main.js │ │ │ └── style.css │ │ └── start/ │ │ ├── generate.js │ │ ├── index.html │ │ ├── main.js │ │ └── style.css │ ├── building-blocks/ │ │ ├── allowance-updater.html │ │ ├── calendar-finished.html │ │ ├── events/ │ │ │ ├── preventdefault-validation.html │ │ │ ├── rabbit320.webm │ │ │ ├── random-color-addeventlistener.html │ │ │ ├── random-color-eventhandlerattributes.html │ │ │ ├── random-color-eventhandlerproperty.html │ │ │ ├── random-color-eventobject.html │ │ │ ├── show-video-box-fixed.html │ │ │ ├── show-video-box.html │ │ │ └── useful-eventtarget.html │ │ ├── functions/ │ │ │ ├── conflict.html │ │ │ ├── first.js │ │ │ ├── function-library-finished.html │ │ │ ├── function-library.html │ │ │ ├── function-scope.html │ │ │ ├── function-stage-2.html │ │ │ ├── function-stage-3.html │ │ │ ├── function-stage-4.html │ │ │ ├── function-start.html │ │ │ └── second.js │ │ ├── gallery/ │ │ │ ├── index.html │ │ │ ├── main.js │ │ │ ├── marking-guide.md │ │ │ └── style.css │ │ ├── loops/ │ │ │ ├── basic-for-improved.html │ │ │ ├── basic-for.html │ │ │ ├── contact-search.html │ │ │ ├── do-while.html │ │ │ ├── guest-list.html │ │ │ ├── integer-squares.html │ │ │ ├── launch-countdown.html │ │ │ ├── random-canvas-circles.html │ │ │ └── while.html │ │ ├── more-color-choices-finished.html │ │ ├── simple-else-if.html │ │ ├── simple-switch.html │ │ ├── simple-ternary.html │ │ └── tasks/ │ │ ├── conditionals/ │ │ │ ├── conditionals1-download.html │ │ │ ├── conditionals1.html │ │ │ ├── conditionals2-download.html │ │ │ ├── conditionals2.html │ │ │ ├── conditionals3-download.html │ │ │ ├── conditionals3.html │ │ │ └── marking.md │ │ ├── events/ │ │ │ ├── events1-download.html │ │ │ ├── events1.html │ │ │ ├── events2-download.html │ │ │ ├── events2.html │ │ │ ├── events3-download.html │ │ │ ├── events3.html │ │ │ └── marking.md │ │ ├── functions/ │ │ │ ├── functions1-download.html │ │ │ ├── functions1.html │ │ │ ├── functions2-download.html │ │ │ ├── functions2.html │ │ │ ├── functions3-download.html │ │ │ ├── functions3.html │ │ │ ├── functions4-download.html │ │ │ ├── functions4.html │ │ │ └── marking.md │ │ ├── loops/ │ │ │ ├── loops1-download.html │ │ │ ├── loops2-download.html │ │ │ ├── loops3-download.html │ │ │ └── marking.md │ │ ├── playable.js │ │ └── styles.css │ ├── introduction-to-js-1/ │ │ ├── assessment-finished/ │ │ │ ├── index.html │ │ │ ├── main.js │ │ │ └── marking-guide.md │ │ ├── assessment-start/ │ │ │ ├── index.html │ │ │ └── raw-text.txt │ │ ├── first-splash/ │ │ │ ├── number-guessing-game-start.html │ │ │ └── number-guessing-game.html │ │ ├── maths/ │ │ │ ├── conditional.html │ │ │ └── editable_canvas.html │ │ ├── tasks/ │ │ │ ├── arrays/ │ │ │ │ ├── arrays1-download.html │ │ │ │ ├── arrays1.html │ │ │ │ ├── arrays2-download.html │ │ │ │ ├── arrays2.html │ │ │ │ ├── arrays3-download.html │ │ │ │ ├── arrays3.html │ │ │ │ ├── arrays4-download.html │ │ │ │ ├── arrays4.html │ │ │ │ └── marking.md │ │ │ ├── math/ │ │ │ │ ├── marking.md │ │ │ │ ├── math1-download.html │ │ │ │ ├── math1.html │ │ │ │ ├── math2-download.html │ │ │ │ ├── math2.html │ │ │ │ ├── math3-download.html │ │ │ │ └── math3.html │ │ │ ├── playable.js │ │ │ ├── strings/ │ │ │ │ ├── marking.md │ │ │ │ ├── strings1-download.html │ │ │ │ ├── strings1.html │ │ │ │ ├── strings2-download.html │ │ │ │ ├── strings2.html │ │ │ │ ├── strings3-download.html │ │ │ │ ├── strings3.html │ │ │ │ ├── strings4-download.html │ │ │ │ └── strings4.html │ │ │ ├── styles.css │ │ │ └── variables/ │ │ │ ├── marking.md │ │ │ ├── variables1-download.html │ │ │ ├── variables1.html │ │ │ ├── variables2-download.html │ │ │ ├── variables2.html │ │ │ ├── variables3-download.html │ │ │ └── variables3.html │ │ ├── troubleshooting/ │ │ │ └── number-game-errors.html │ │ └── what-is-js/ │ │ ├── apply-javascript-external.html │ │ ├── apply-javascript-internal.html │ │ ├── apply-javascript.html │ │ ├── javascript-label.html │ │ └── script.js │ └── oojs/ │ ├── advanced/ │ │ ├── es2015-class-inheritance.html │ │ ├── es2015-getters-setters.html │ │ ├── oojs-class-inheritance-finished.html │ │ ├── oojs-class-inheritance-start.html │ │ ├── oojs-class-inheritance-student.html │ │ └── oojs-class-prototype.html │ ├── assessment/ │ │ ├── index.html │ │ ├── main.js │ │ ├── marking-guide.md │ │ └── style.css │ ├── bouncing-balls/ │ │ ├── index-finished.html │ │ ├── index.html │ │ ├── main-finished.js │ │ ├── main.js │ │ └── style.css │ ├── introduction/ │ │ ├── oojs-class-finished.html │ │ ├── oojs-class-further-exercises.html │ │ ├── oojs-finished.html │ │ └── oojs.html │ ├── json/ │ │ ├── JSONTest.html │ │ ├── heroes-finished-json-parse.html │ │ ├── heroes-finished.html │ │ ├── heroes.html │ │ ├── style.css │ │ └── superheroes.json │ └── tasks/ │ ├── json/ │ │ ├── json1-download.html │ │ ├── json1.html │ │ ├── marking.md │ │ └── sample.json │ ├── object-basics/ │ │ ├── marking.md │ │ ├── object-basics1-download.html │ │ ├── object-basics1.html │ │ ├── object-basics2-download.html │ │ ├── object-basics2.html │ │ ├── object-basics3-download.html │ │ ├── object-basics3.html │ │ ├── object-basics4-download.html │ │ └── object-basics4.html │ ├── oojs/ │ │ ├── marking.md │ │ ├── oojs1-download.html │ │ ├── oojs1.html │ │ ├── oojs2-download.html │ │ └── oojs2.html │ ├── playable.js │ └── styles.css └── tools-testing/ └── cross-browser-testing/ ├── accessibility/ │ ├── bad-semantics.html │ ├── fake-div-buttons.html │ ├── good-semantics.html │ └── native-keyboard-accessibility.html ├── automation/ │ ├── call_bstack.js │ ├── call_sauce.js │ ├── gulpfile.js │ ├── index.html │ ├── main.js │ └── style.css ├── feature-detection/ │ ├── basic-styling.css │ ├── css-feature-detect-finished.html │ ├── css-feature-detect.html │ ├── flex-layout.css │ ├── float-layout.css │ ├── modernizr-css.css │ ├── modernizr-css.html │ ├── modernizr-custom.js │ ├── modernizr-js.html │ ├── supports-feature-detect.html │ └── supports-styling.css ├── html-css/ │ ├── MooTools-Core-1.6.0.js │ ├── button-with-fallback.html │ ├── forms-test.html │ ├── selectivizr-example-start.html │ ├── selectivizr-example.html │ ├── selectivizr-min.js │ └── style.css ├── javascript/ │ ├── .eslintrc.js │ ├── arrow-function.html │ ├── bad-for-loop.html │ ├── broken-js-test.js │ ├── es6-promise.js │ ├── fetch-broken/ │ │ ├── index.html │ │ ├── script.js │ │ └── style.css │ ├── fetch-fixed/ │ │ ├── index.html │ │ ├── script.js │ │ └── style.css │ ├── fetch-polyfill-finished.html │ ├── fetch-polyfill-only-when-needed.html │ ├── fetch-polyfill.html │ ├── fetch.js │ ├── good-for-loop.html │ ├── polyfills.js │ └── style.css ├── selenium/ │ ├── bstack_google_test.js │ ├── google_test.js │ ├── google_test_multiple.js │ ├── google_test_remote.js │ ├── mocha_test.js │ ├── quick_test.js │ └── sauce_google_test.js └── strategies/ └── hidden-info-panel.html