diff --git a/01 - JavaScript Drum Kit/Piano/0.mp3 b/01 - JavaScript Drum Kit/Piano/0.mp3
new file mode 100644
index 0000000000..f402847ee3
Binary files /dev/null and b/01 - JavaScript Drum Kit/Piano/0.mp3 differ
diff --git a/01 - JavaScript Drum Kit/Piano/1.mp3 b/01 - JavaScript Drum Kit/Piano/1.mp3
new file mode 100644
index 0000000000..b656f9e884
Binary files /dev/null and b/01 - JavaScript Drum Kit/Piano/1.mp3 differ
diff --git a/01 - JavaScript Drum Kit/Piano/2.mp3 b/01 - JavaScript Drum Kit/Piano/2.mp3
new file mode 100644
index 0000000000..2e11d971c3
Binary files /dev/null and b/01 - JavaScript Drum Kit/Piano/2.mp3 differ
diff --git a/01 - JavaScript Drum Kit/Piano/3.mp3 b/01 - JavaScript Drum Kit/Piano/3.mp3
new file mode 100644
index 0000000000..ea61bb1097
Binary files /dev/null and b/01 - JavaScript Drum Kit/Piano/3.mp3 differ
diff --git a/01 - JavaScript Drum Kit/Piano/4.mp3 b/01 - JavaScript Drum Kit/Piano/4.mp3
new file mode 100644
index 0000000000..c1ee33cf68
Binary files /dev/null and b/01 - JavaScript Drum Kit/Piano/4.mp3 differ
diff --git a/01 - JavaScript Drum Kit/Piano/5.mp3 b/01 - JavaScript Drum Kit/Piano/5.mp3
new file mode 100644
index 0000000000..22495c3b90
Binary files /dev/null and b/01 - JavaScript Drum Kit/Piano/5.mp3 differ
diff --git a/01 - JavaScript Drum Kit/Piano/6.mp3 b/01 - JavaScript Drum Kit/Piano/6.mp3
new file mode 100644
index 0000000000..f67eab24e1
Binary files /dev/null and b/01 - JavaScript Drum Kit/Piano/6.mp3 differ
diff --git a/01 - JavaScript Drum Kit/Piano/7.mp3 b/01 - JavaScript Drum Kit/Piano/7.mp3
new file mode 100644
index 0000000000..359568fccd
Binary files /dev/null and b/01 - JavaScript Drum Kit/Piano/7.mp3 differ
diff --git a/01 - JavaScript Drum Kit/Piano/8.mp3 b/01 - JavaScript Drum Kit/Piano/8.mp3
new file mode 100644
index 0000000000..a10a001f5f
Binary files /dev/null and b/01 - JavaScript Drum Kit/Piano/8.mp3 differ
diff --git a/01 - JavaScript Drum Kit/Piano/9.mp3 b/01 - JavaScript Drum Kit/Piano/9.mp3
new file mode 100644
index 0000000000..92ef8d8ca7
Binary files /dev/null and b/01 - JavaScript Drum Kit/Piano/9.mp3 differ
diff --git a/01 - JavaScript Drum Kit/Piano/autoplay.html b/01 - JavaScript Drum Kit/Piano/autoplay.html
new file mode 100644
index 0000000000..1c661491b2
--- /dev/null
+++ b/01 - JavaScript Drum Kit/Piano/autoplay.html
@@ -0,0 +1,81 @@
+
+
+
+
+
+ JS Drum Kit
+
+
+
+
+
+ Number:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/01 - JavaScript Drum Kit/Piano/css/style.css b/01 - JavaScript Drum Kit/Piano/css/style.css
new file mode 100644
index 0000000000..13471229fe
--- /dev/null
+++ b/01 - JavaScript Drum Kit/Piano/css/style.css
@@ -0,0 +1,99 @@
+*, *:before, *:after {
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box; }
+
+body {
+ margin: 0;
+ font-family: Arial, Helvetica, sans-serif; }
+
+.container {
+ width: 1300px;
+ margin: 50px auto 0; }
+
+.piano-board {
+ display: block;
+ padding: 20px;
+ background-color: black; }
+
+.piano {
+ display: -webkit-box;
+ display: -ms-flexbox;
+ display: flex;
+ color: black; }
+ .piano.hide-text {
+ color: white; }
+ .piano .piano-key {
+ background-color: white;
+ width: 30px;
+ margin-right: 2px;
+ padding: 200px 10px 30px;
+ border-radius: 0 0px 7px 7px; }
+ .piano .piano-key.pressed {
+ background-color: #ffdfa9; }
+
+.help {
+ display: -webkit-box;
+ display: -ms-flexbox;
+ display: flex;
+ width: 140px;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-box-pack: justify;
+ -ms-flex-pack: justify;
+ justify-content: space-between;
+ margin-bottom: 10px; }
+
+.switch {
+ position: relative;
+ display: inline-block;
+ width: 60px;
+ height: 34px; }
+
+.switch input {
+ opacity: 0;
+ width: 0;
+ height: 0; }
+
+.slider {
+ position: absolute;
+ cursor: pointer;
+ top: 0;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ background-color: #ccc;
+ -webkit-transition: .4s;
+ -o-transition: .4s;
+ transition: .4s; }
+
+.slider:before {
+ position: absolute;
+ content: "";
+ height: 26px;
+ width: 26px;
+ left: 4px;
+ bottom: 4px;
+ background-color: white;
+ -webkit-transition: .4s;
+ -o-transition: .4s;
+ transition: .4s; }
+
+input:checked + .slider {
+ background-color: #2196F3; }
+
+input:focus + .slider {
+ -webkit-box-shadow: 0 0 1px #2196F3;
+ box-shadow: 0 0 1px #2196F3; }
+
+input:checked + .slider:before {
+ -webkit-transform: translateX(26px);
+ -ms-transform: translateX(26px);
+ transform: translateX(26px); }
+
+/* Rounded sliders */
+.slider.round {
+ border-radius: 34px; }
+
+.slider.round:before {
+ border-radius: 50%; }
diff --git a/01 - JavaScript Drum Kit/Piano/css/style.scss b/01 - JavaScript Drum Kit/Piano/css/style.scss
new file mode 100644
index 0000000000..ae176ffca4
--- /dev/null
+++ b/01 - JavaScript Drum Kit/Piano/css/style.scss
@@ -0,0 +1,117 @@
+*, *:before, *:after {
+ box-sizing: border-box;
+}
+
+body {
+ margin: 0;
+ font-family: Arial, Helvetica, sans-serif;
+}
+
+.container {
+ width: 1300px;
+ margin: 50px auto 0;
+}
+
+.piano-board {
+ display: block;
+ padding: 20px;
+ background-color: black;
+}
+
+.piano {
+ display: flex;
+ color: black;
+ // justify-content: space-between;
+
+ &.hide-text {
+ color: white;
+ }
+
+ .piano-key {
+ background-color: white;
+ width: 30px;
+ margin-right: 2px;
+ padding: 200px 10px 30px;
+ border-radius: 0 0px 7px 7px;
+
+ &.pressed {
+ background-color: #ffdfa9;
+ }
+ }
+}
+
+
+
+.help {
+ display: flex;
+ width: 140px;
+ align-items: center;
+ justify-content: space-between;
+ margin-bottom: 10px;
+}
+
+
+//
+// Toggle Switch HTML5
+// https://www.w3schools.com/howto/tryit.asp?filename=tryhow_css_switch
+//
+
+.switch {
+ position: relative;
+ display: inline-block;
+ width: 60px;
+ height: 34px;
+}
+
+.switch input {
+ opacity: 0;
+ width: 0;
+ height: 0;
+}
+
+.slider {
+ position: absolute;
+ cursor: pointer;
+ top: 0;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ background-color: #ccc;
+ -webkit-transition: .4s;
+ transition: .4s;
+}
+
+.slider:before {
+ position: absolute;
+ content: "";
+ height: 26px;
+ width: 26px;
+ left: 4px;
+ bottom: 4px;
+ background-color: white;
+ -webkit-transition: .4s;
+ transition: .4s;
+}
+
+input:checked + .slider {
+ background-color: #2196F3;
+}
+
+input:focus + .slider {
+ box-shadow: 0 0 1px #2196F3;
+}
+
+input:checked + .slider:before {
+ -webkit-transform: translateX(26px);
+ -ms-transform: translateX(26px);
+ transform: translateX(26px);
+}
+
+/* Rounded sliders */
+.slider.round {
+ border-radius: 34px;
+}
+
+.slider.round:before {
+ border-radius: 50%;
+}
diff --git a/01 - JavaScript Drum Kit/Piano/index.html b/01 - JavaScript Drum Kit/Piano/index.html
new file mode 100644
index 0000000000..5a7acf8e66
--- /dev/null
+++ b/01 - JavaScript Drum Kit/Piano/index.html
@@ -0,0 +1,165 @@
+
+
+
+
+
+ JS Drum Kit
+
+
+
+
+
+
+
+
+
+
+ Hide Text
+
+
+
+
+
+
1
+
2
+
3
+
4
+
5
+
6
+
7
+
8
+
9
+
0
+
q
+
w
+
e
+
r
+
t
+
y
+
u
+
i
+
o
+
p
+
a
+
s
+
d
+
f
+
g
+
h
+
j
+
k
+
l
+
z
+
x
+
c
+
v
+
b
+
n
+
m
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/01 - JavaScript Drum Kit/Piano/media/a48.mp3 b/01 - JavaScript Drum Kit/Piano/media/a48.mp3
new file mode 100644
index 0000000000..f402847ee3
Binary files /dev/null and b/01 - JavaScript Drum Kit/Piano/media/a48.mp3 differ
diff --git a/01 - JavaScript Drum Kit/Piano/media/a49.mp3 b/01 - JavaScript Drum Kit/Piano/media/a49.mp3
new file mode 100644
index 0000000000..b656f9e884
Binary files /dev/null and b/01 - JavaScript Drum Kit/Piano/media/a49.mp3 differ
diff --git a/01 - JavaScript Drum Kit/Piano/media/a50.mp3 b/01 - JavaScript Drum Kit/Piano/media/a50.mp3
new file mode 100644
index 0000000000..2e11d971c3
Binary files /dev/null and b/01 - JavaScript Drum Kit/Piano/media/a50.mp3 differ
diff --git a/01 - JavaScript Drum Kit/Piano/media/a51.mp3 b/01 - JavaScript Drum Kit/Piano/media/a51.mp3
new file mode 100644
index 0000000000..ea61bb1097
Binary files /dev/null and b/01 - JavaScript Drum Kit/Piano/media/a51.mp3 differ
diff --git a/01 - JavaScript Drum Kit/Piano/media/a52.mp3 b/01 - JavaScript Drum Kit/Piano/media/a52.mp3
new file mode 100644
index 0000000000..c1ee33cf68
Binary files /dev/null and b/01 - JavaScript Drum Kit/Piano/media/a52.mp3 differ
diff --git a/01 - JavaScript Drum Kit/Piano/media/a53.mp3 b/01 - JavaScript Drum Kit/Piano/media/a53.mp3
new file mode 100644
index 0000000000..22495c3b90
Binary files /dev/null and b/01 - JavaScript Drum Kit/Piano/media/a53.mp3 differ
diff --git a/01 - JavaScript Drum Kit/Piano/media/a54.mp3 b/01 - JavaScript Drum Kit/Piano/media/a54.mp3
new file mode 100644
index 0000000000..f67eab24e1
Binary files /dev/null and b/01 - JavaScript Drum Kit/Piano/media/a54.mp3 differ
diff --git a/01 - JavaScript Drum Kit/Piano/media/a55.mp3 b/01 - JavaScript Drum Kit/Piano/media/a55.mp3
new file mode 100644
index 0000000000..359568fccd
Binary files /dev/null and b/01 - JavaScript Drum Kit/Piano/media/a55.mp3 differ
diff --git a/01 - JavaScript Drum Kit/Piano/media/a56.mp3 b/01 - JavaScript Drum Kit/Piano/media/a56.mp3
new file mode 100644
index 0000000000..a10a001f5f
Binary files /dev/null and b/01 - JavaScript Drum Kit/Piano/media/a56.mp3 differ
diff --git a/01 - JavaScript Drum Kit/Piano/media/a57.mp3 b/01 - JavaScript Drum Kit/Piano/media/a57.mp3
new file mode 100644
index 0000000000..92ef8d8ca7
Binary files /dev/null and b/01 - JavaScript Drum Kit/Piano/media/a57.mp3 differ
diff --git a/01 - JavaScript Drum Kit/Piano/media/a65.mp3 b/01 - JavaScript Drum Kit/Piano/media/a65.mp3
new file mode 100644
index 0000000000..2093556d20
Binary files /dev/null and b/01 - JavaScript Drum Kit/Piano/media/a65.mp3 differ
diff --git a/01 - JavaScript Drum Kit/Piano/media/a66.mp3 b/01 - JavaScript Drum Kit/Piano/media/a66.mp3
new file mode 100644
index 0000000000..c7de11c735
Binary files /dev/null and b/01 - JavaScript Drum Kit/Piano/media/a66.mp3 differ
diff --git a/01 - JavaScript Drum Kit/Piano/media/a67.mp3 b/01 - JavaScript Drum Kit/Piano/media/a67.mp3
new file mode 100644
index 0000000000..e119b1d081
Binary files /dev/null and b/01 - JavaScript Drum Kit/Piano/media/a67.mp3 differ
diff --git a/01 - JavaScript Drum Kit/Piano/media/a68.mp3 b/01 - JavaScript Drum Kit/Piano/media/a68.mp3
new file mode 100644
index 0000000000..00f978f7ed
Binary files /dev/null and b/01 - JavaScript Drum Kit/Piano/media/a68.mp3 differ
diff --git a/01 - JavaScript Drum Kit/Piano/media/a69.mp3 b/01 - JavaScript Drum Kit/Piano/media/a69.mp3
new file mode 100644
index 0000000000..dfe27fbb84
Binary files /dev/null and b/01 - JavaScript Drum Kit/Piano/media/a69.mp3 differ
diff --git a/01 - JavaScript Drum Kit/Piano/media/a70.mp3 b/01 - JavaScript Drum Kit/Piano/media/a70.mp3
new file mode 100644
index 0000000000..b36e01a32f
Binary files /dev/null and b/01 - JavaScript Drum Kit/Piano/media/a70.mp3 differ
diff --git a/01 - JavaScript Drum Kit/Piano/media/a71.mp3 b/01 - JavaScript Drum Kit/Piano/media/a71.mp3
new file mode 100644
index 0000000000..b00f0706de
Binary files /dev/null and b/01 - JavaScript Drum Kit/Piano/media/a71.mp3 differ
diff --git a/01 - JavaScript Drum Kit/Piano/media/a72.mp3 b/01 - JavaScript Drum Kit/Piano/media/a72.mp3
new file mode 100644
index 0000000000..d6c6c72675
Binary files /dev/null and b/01 - JavaScript Drum Kit/Piano/media/a72.mp3 differ
diff --git a/01 - JavaScript Drum Kit/Piano/media/a73.mp3 b/01 - JavaScript Drum Kit/Piano/media/a73.mp3
new file mode 100644
index 0000000000..b18b979e7c
Binary files /dev/null and b/01 - JavaScript Drum Kit/Piano/media/a73.mp3 differ
diff --git a/01 - JavaScript Drum Kit/Piano/media/a74.mp3 b/01 - JavaScript Drum Kit/Piano/media/a74.mp3
new file mode 100644
index 0000000000..f313ac6db6
Binary files /dev/null and b/01 - JavaScript Drum Kit/Piano/media/a74.mp3 differ
diff --git a/01 - JavaScript Drum Kit/Piano/media/a75.mp3 b/01 - JavaScript Drum Kit/Piano/media/a75.mp3
new file mode 100644
index 0000000000..78eee39186
Binary files /dev/null and b/01 - JavaScript Drum Kit/Piano/media/a75.mp3 differ
diff --git a/01 - JavaScript Drum Kit/Piano/media/a76.mp3 b/01 - JavaScript Drum Kit/Piano/media/a76.mp3
new file mode 100644
index 0000000000..59168c1110
Binary files /dev/null and b/01 - JavaScript Drum Kit/Piano/media/a76.mp3 differ
diff --git a/01 - JavaScript Drum Kit/Piano/media/a77.mp3 b/01 - JavaScript Drum Kit/Piano/media/a77.mp3
new file mode 100644
index 0000000000..cd98b59fa0
Binary files /dev/null and b/01 - JavaScript Drum Kit/Piano/media/a77.mp3 differ
diff --git a/01 - JavaScript Drum Kit/Piano/media/a78.mp3 b/01 - JavaScript Drum Kit/Piano/media/a78.mp3
new file mode 100644
index 0000000000..31e0834e26
Binary files /dev/null and b/01 - JavaScript Drum Kit/Piano/media/a78.mp3 differ
diff --git a/01 - JavaScript Drum Kit/Piano/media/a79.mp3 b/01 - JavaScript Drum Kit/Piano/media/a79.mp3
new file mode 100644
index 0000000000..58bd59c748
Binary files /dev/null and b/01 - JavaScript Drum Kit/Piano/media/a79.mp3 differ
diff --git a/01 - JavaScript Drum Kit/Piano/media/a80.mp3 b/01 - JavaScript Drum Kit/Piano/media/a80.mp3
new file mode 100644
index 0000000000..0f853bd7eb
Binary files /dev/null and b/01 - JavaScript Drum Kit/Piano/media/a80.mp3 differ
diff --git a/01 - JavaScript Drum Kit/Piano/media/a81.mp3 b/01 - JavaScript Drum Kit/Piano/media/a81.mp3
new file mode 100644
index 0000000000..84b8eefe99
Binary files /dev/null and b/01 - JavaScript Drum Kit/Piano/media/a81.mp3 differ
diff --git a/01 - JavaScript Drum Kit/Piano/media/a82.mp3 b/01 - JavaScript Drum Kit/Piano/media/a82.mp3
new file mode 100644
index 0000000000..f72bf3d69f
Binary files /dev/null and b/01 - JavaScript Drum Kit/Piano/media/a82.mp3 differ
diff --git a/01 - JavaScript Drum Kit/Piano/media/a83.mp3 b/01 - JavaScript Drum Kit/Piano/media/a83.mp3
new file mode 100644
index 0000000000..eed526c7a8
Binary files /dev/null and b/01 - JavaScript Drum Kit/Piano/media/a83.mp3 differ
diff --git a/01 - JavaScript Drum Kit/Piano/media/a84.mp3 b/01 - JavaScript Drum Kit/Piano/media/a84.mp3
new file mode 100644
index 0000000000..310a8c0788
Binary files /dev/null and b/01 - JavaScript Drum Kit/Piano/media/a84.mp3 differ
diff --git a/01 - JavaScript Drum Kit/Piano/media/a85.mp3 b/01 - JavaScript Drum Kit/Piano/media/a85.mp3
new file mode 100644
index 0000000000..108d3cf409
Binary files /dev/null and b/01 - JavaScript Drum Kit/Piano/media/a85.mp3 differ
diff --git a/01 - JavaScript Drum Kit/Piano/media/a86.mp3 b/01 - JavaScript Drum Kit/Piano/media/a86.mp3
new file mode 100644
index 0000000000..95254d3c30
Binary files /dev/null and b/01 - JavaScript Drum Kit/Piano/media/a86.mp3 differ
diff --git a/01 - JavaScript Drum Kit/Piano/media/a87.mp3 b/01 - JavaScript Drum Kit/Piano/media/a87.mp3
new file mode 100644
index 0000000000..723fa1a318
Binary files /dev/null and b/01 - JavaScript Drum Kit/Piano/media/a87.mp3 differ
diff --git a/01 - JavaScript Drum Kit/Piano/media/a88.mp3 b/01 - JavaScript Drum Kit/Piano/media/a88.mp3
new file mode 100644
index 0000000000..d66339e9d8
Binary files /dev/null and b/01 - JavaScript Drum Kit/Piano/media/a88.mp3 differ
diff --git a/01 - JavaScript Drum Kit/Piano/media/a89.mp3 b/01 - JavaScript Drum Kit/Piano/media/a89.mp3
new file mode 100644
index 0000000000..a0d3656ba5
Binary files /dev/null and b/01 - JavaScript Drum Kit/Piano/media/a89.mp3 differ
diff --git a/01 - JavaScript Drum Kit/Piano/media/a90.mp3 b/01 - JavaScript Drum Kit/Piano/media/a90.mp3
new file mode 100644
index 0000000000..29610a42f1
Binary files /dev/null and b/01 - JavaScript Drum Kit/Piano/media/a90.mp3 differ
diff --git a/01 - JavaScript Drum Kit/Piano/media/b49.mp3 b/01 - JavaScript Drum Kit/Piano/media/b49.mp3
new file mode 100644
index 0000000000..87e118a553
Binary files /dev/null and b/01 - JavaScript Drum Kit/Piano/media/b49.mp3 differ
diff --git a/01 - JavaScript Drum Kit/Piano/media/b50.mp3 b/01 - JavaScript Drum Kit/Piano/media/b50.mp3
new file mode 100644
index 0000000000..098ae2a2f3
Binary files /dev/null and b/01 - JavaScript Drum Kit/Piano/media/b50.mp3 differ
diff --git a/01 - JavaScript Drum Kit/Piano/media/b52.mp3 b/01 - JavaScript Drum Kit/Piano/media/b52.mp3
new file mode 100644
index 0000000000..9be173c9be
Binary files /dev/null and b/01 - JavaScript Drum Kit/Piano/media/b52.mp3 differ
diff --git a/01 - JavaScript Drum Kit/Piano/media/b53.mp3 b/01 - JavaScript Drum Kit/Piano/media/b53.mp3
new file mode 100644
index 0000000000..0aa506c207
Binary files /dev/null and b/01 - JavaScript Drum Kit/Piano/media/b53.mp3 differ
diff --git a/01 - JavaScript Drum Kit/Piano/media/b54.mp3 b/01 - JavaScript Drum Kit/Piano/media/b54.mp3
new file mode 100644
index 0000000000..35a7f03d1b
Binary files /dev/null and b/01 - JavaScript Drum Kit/Piano/media/b54.mp3 differ
diff --git a/01 - JavaScript Drum Kit/Piano/media/b56.mp3 b/01 - JavaScript Drum Kit/Piano/media/b56.mp3
new file mode 100644
index 0000000000..e5d3f48ff8
Binary files /dev/null and b/01 - JavaScript Drum Kit/Piano/media/b56.mp3 differ
diff --git a/01 - JavaScript Drum Kit/Piano/media/b57.mp3 b/01 - JavaScript Drum Kit/Piano/media/b57.mp3
new file mode 100644
index 0000000000..6dfef2823c
Binary files /dev/null and b/01 - JavaScript Drum Kit/Piano/media/b57.mp3 differ
diff --git a/01 - JavaScript Drum Kit/Piano/media/b66.mp3 b/01 - JavaScript Drum Kit/Piano/media/b66.mp3
new file mode 100644
index 0000000000..17d975a938
Binary files /dev/null and b/01 - JavaScript Drum Kit/Piano/media/b66.mp3 differ
diff --git a/01 - JavaScript Drum Kit/Piano/media/b67.mp3 b/01 - JavaScript Drum Kit/Piano/media/b67.mp3
new file mode 100644
index 0000000000..031b0b67a2
Binary files /dev/null and b/01 - JavaScript Drum Kit/Piano/media/b67.mp3 differ
diff --git a/01 - JavaScript Drum Kit/Piano/media/b68.mp3 b/01 - JavaScript Drum Kit/Piano/media/b68.mp3
new file mode 100644
index 0000000000..bffbbf61a0
Binary files /dev/null and b/01 - JavaScript Drum Kit/Piano/media/b68.mp3 differ
diff --git a/01 - JavaScript Drum Kit/Piano/media/b69.mp3 b/01 - JavaScript Drum Kit/Piano/media/b69.mp3
new file mode 100644
index 0000000000..e943a3717f
Binary files /dev/null and b/01 - JavaScript Drum Kit/Piano/media/b69.mp3 differ
diff --git a/01 - JavaScript Drum Kit/Piano/media/b71.mp3 b/01 - JavaScript Drum Kit/Piano/media/b71.mp3
new file mode 100644
index 0000000000..8321e1fd4a
Binary files /dev/null and b/01 - JavaScript Drum Kit/Piano/media/b71.mp3 differ
diff --git a/01 - JavaScript Drum Kit/Piano/media/b72.mp3 b/01 - JavaScript Drum Kit/Piano/media/b72.mp3
new file mode 100644
index 0000000000..8c6906f3a8
Binary files /dev/null and b/01 - JavaScript Drum Kit/Piano/media/b72.mp3 differ
diff --git a/01 - JavaScript Drum Kit/Piano/media/b73.mp3 b/01 - JavaScript Drum Kit/Piano/media/b73.mp3
new file mode 100644
index 0000000000..66fc36483b
Binary files /dev/null and b/01 - JavaScript Drum Kit/Piano/media/b73.mp3 differ
diff --git a/01 - JavaScript Drum Kit/Piano/media/b74.mp3 b/01 - JavaScript Drum Kit/Piano/media/b74.mp3
new file mode 100644
index 0000000000..39b5f811fa
Binary files /dev/null and b/01 - JavaScript Drum Kit/Piano/media/b74.mp3 differ
diff --git a/01 - JavaScript Drum Kit/Piano/media/b76.mp3 b/01 - JavaScript Drum Kit/Piano/media/b76.mp3
new file mode 100644
index 0000000000..d708753128
Binary files /dev/null and b/01 - JavaScript Drum Kit/Piano/media/b76.mp3 differ
diff --git a/01 - JavaScript Drum Kit/Piano/media/b79.mp3 b/01 - JavaScript Drum Kit/Piano/media/b79.mp3
new file mode 100644
index 0000000000..abe7fbde45
Binary files /dev/null and b/01 - JavaScript Drum Kit/Piano/media/b79.mp3 differ
diff --git a/01 - JavaScript Drum Kit/Piano/media/b80.mp3 b/01 - JavaScript Drum Kit/Piano/media/b80.mp3
new file mode 100644
index 0000000000..208e738780
Binary files /dev/null and b/01 - JavaScript Drum Kit/Piano/media/b80.mp3 differ
diff --git a/01 - JavaScript Drum Kit/Piano/media/b81.mp3 b/01 - JavaScript Drum Kit/Piano/media/b81.mp3
new file mode 100644
index 0000000000..a07fb1b19c
Binary files /dev/null and b/01 - JavaScript Drum Kit/Piano/media/b81.mp3 differ
diff --git a/01 - JavaScript Drum Kit/Piano/media/b83.mp3 b/01 - JavaScript Drum Kit/Piano/media/b83.mp3
new file mode 100644
index 0000000000..bf10d929da
Binary files /dev/null and b/01 - JavaScript Drum Kit/Piano/media/b83.mp3 differ
diff --git a/01 - JavaScript Drum Kit/Piano/media/b84.mp3 b/01 - JavaScript Drum Kit/Piano/media/b84.mp3
new file mode 100644
index 0000000000..7094cb6142
Binary files /dev/null and b/01 - JavaScript Drum Kit/Piano/media/b84.mp3 differ
diff --git a/01 - JavaScript Drum Kit/Piano/media/b86.mp3 b/01 - JavaScript Drum Kit/Piano/media/b86.mp3
new file mode 100644
index 0000000000..56c0668b4b
Binary files /dev/null and b/01 - JavaScript Drum Kit/Piano/media/b86.mp3 differ
diff --git a/01 - JavaScript Drum Kit/Piano/media/b87.mp3 b/01 - JavaScript Drum Kit/Piano/media/b87.mp3
new file mode 100644
index 0000000000..2e2890d331
Binary files /dev/null and b/01 - JavaScript Drum Kit/Piano/media/b87.mp3 differ
diff --git a/01 - JavaScript Drum Kit/Piano/media/b89.mp3 b/01 - JavaScript Drum Kit/Piano/media/b89.mp3
new file mode 100644
index 0000000000..d91381f87f
Binary files /dev/null and b/01 - JavaScript Drum Kit/Piano/media/b89.mp3 differ
diff --git a/01 - JavaScript Drum Kit/Piano/media/b90.mp3 b/01 - JavaScript Drum Kit/Piano/media/b90.mp3
new file mode 100644
index 0000000000..292bbdb9ed
Binary files /dev/null and b/01 - JavaScript Drum Kit/Piano/media/b90.mp3 differ
diff --git a/01 - JavaScript Drum Kit/Piano/prepros-6.config b/01 - JavaScript Drum Kit/Piano/prepros-6.config
new file mode 100644
index 0000000000..a1792dab21
--- /dev/null
+++ b/01 - JavaScript Drum Kit/Piano/prepros-6.config
@@ -0,0 +1,245 @@
+{
+ "name": "01 - Piano",
+ "firstRun": false,
+ "exportConfig": true,
+ "fileConfigs": [],
+ "fileTree": {
+ "expandedDirs": [],
+ "hideSystemFiles": true,
+ "systemFiles": [
+ ".*",
+ "desktop.ini",
+ "prepros.config",
+ "$RECYCLE.BIN",
+ "prepros.cfg",
+ "prepros-6.config",
+ "Prepros Export"
+ ],
+ "hideUnwatchedFiles": false
+ },
+ "imports": [],
+ "projectView": {
+ "selectedView": "file-tree"
+ },
+ "fileWatcher": {
+ "enabled": true,
+ "watchedExtensions": [
+ "less",
+ "sass",
+ "scss",
+ "styl",
+ "md",
+ "markdown",
+ "coffee",
+ "js",
+ "jade",
+ "haml",
+ "slim",
+ "ls",
+ "kit",
+ "png",
+ "jpg",
+ "jpeg",
+ "ts",
+ "pug",
+ "css",
+ "html",
+ "htm",
+ "php"
+ ]
+ },
+ "pathFilters": [
+ "node_modules",
+ ".*",
+ "bower_components",
+ "prepros.config",
+ "Prepros Export",
+ "prepros-6.config",
+ "prepros.cfg",
+ "wp-admin",
+ "wp-includes"
+ ],
+ "server": {
+ "port": 7879,
+ "assignNewPortAutomatically": true,
+ "enable": true,
+ "proxy": {
+ "enable": true,
+ "url": "http://localhost:7880/"
+ }
+ },
+ "browser-sync": {
+ "enable": false,
+ "clicks": true,
+ "forms": true,
+ "scroll": true
+ },
+ "live-reload": {
+ "enable": true,
+ "animate": true,
+ "delay": 0
+ },
+ "ftp-deploy": {
+ "connectionType": "ftp",
+ "remotePath": "",
+ "uploadTimeout": 20000,
+ "uploadOnChange": false,
+ "ftp": {
+ "secure": false,
+ "keepAlive": true,
+ "host": "",
+ "port": 21,
+ "user": "",
+ "password": ""
+ },
+ "sftp": {
+ "host": "",
+ "port": 22,
+ "usePrivateKey": false,
+ "username": "",
+ "password": "",
+ "privateKey": "",
+ "passphrase": ""
+ },
+ "pathFilters": [
+ "config.rb",
+ "prepros.config",
+ "prepros-6.config",
+ "node_modules",
+ "Prepros Export",
+ ".git",
+ ".idea",
+ ".sass-cache",
+ ".hg",
+ ".svn",
+ ".cache",
+ ".DS_Store",
+ "*.sass",
+ "*.scss",
+ "*.less",
+ "*.pug",
+ "*.jade",
+ "*.styl",
+ "*.haml",
+ "*.slim",
+ "*.coffee",
+ "*.ls",
+ "*.kit",
+ "*.ts"
+ ],
+ "history": []
+ },
+ "file-type-sass": "{\"compilers\":[\"node-sass\",\"autoprefixer\",\"minify-css\"]}",
+ "file-type-less": "{\"compilers\":[\"less\",\"autoprefixer\",\"minify-css\"]}",
+ "autoprefixer": {
+ "browsers": "last 5 versions"
+ },
+ "file-type-pug": "{\"compilers\":[\"pug\"]}",
+ "file-type-css": "{\"compilers\":[\"autoprefixer\",\"cssnext\",\"minify-css\"]}",
+ "file-type-javascript": "{\"compilers\":[\"concat-js\",\"babel\",\"uglify-js\"]}",
+ "file-type-stylus": "{\"compilers\":[\"stylus\",\"autoprefixer\",\"minify-css\"]}",
+ "file-type-markdown": "{\"compilers\":[\"markdown\"]}",
+ "file-type-haml": "{\"compilers\":[\"haml\"]}",
+ "file-type-slim": "{\"compilers\":[\"slim\"]}",
+ "file-type-coffee-script": "{\"compilers\":[\"coffee-script\",\"uglify-js\"]}",
+ "file-type-livescript": "{\"compilers\":[\"livescript\",\"uglify-js\"]}",
+ "file-type-kit": "{\"compilers\":[\"kit\"]}",
+ "uglify-js": {
+ "ie8": false,
+ "compress": {
+ "sequences": true,
+ "properties": true,
+ "dead_code": true,
+ "drop_debugger": true,
+ "unsafe": false,
+ "unsafe_comps": false,
+ "unsafe_math": false,
+ "unsafe_proto": false,
+ "unsafe_regexp": false,
+ "conditionals": true,
+ "comparisons": true,
+ "evaluate": true,
+ "booleans": true,
+ "loops": true,
+ "unused": true,
+ "toplevel": false,
+ "top_retain": "",
+ "hoist_funs": true,
+ "hoist_vars": false,
+ "if_return": true,
+ "join_vars": true,
+ "collapse_vars": true,
+ "reduce_vars": true,
+ "warnings": true,
+ "negate_iife": true,
+ "pure_getters": false,
+ "pure_funcs": [],
+ "drop_console": false,
+ "expression": false,
+ "keep_fargs": true,
+ "keep_fnames": false,
+ "passes": 1,
+ "keep_infinity": false,
+ "side_effects": true,
+ "global_defs": []
+ },
+ "output": {
+ "ascii_only": false,
+ "beautify": false,
+ "comments": "",
+ "indent_level": 4,
+ "indent_start": 0,
+ "inline_script": false,
+ "keep_quoted_props": false,
+ "max_line_len": false,
+ "preamble": "",
+ "preserve_line": false,
+ "quote_keys": false,
+ "quote_style": 0,
+ "semicolons": true,
+ "shebang": true,
+ "width": 80
+ }
+ },
+ "cssnext": {
+ "customProperties": true,
+ "applyRule": true,
+ "calc": false,
+ "nesting": true,
+ "customMedia": true,
+ "mediaQueriesRange": true,
+ "customSelectors": true,
+ "attributeCaseInsensitive": true,
+ "colorRebeccapurple": true,
+ "colorHwb": true,
+ "colorGray": true,
+ "colorHexAlpha": true,
+ "colorFunction": true,
+ "fontVariant": true,
+ "filter": true,
+ "initial": true,
+ "rem": true,
+ "pseudoElements": true,
+ "pseudoClassMatches": true,
+ "pseudoClassNot": true,
+ "pseudoClassAnyLink": true,
+ "colorRgba": true,
+ "overflowWrap": true
+ },
+ "file-type-typescript": "{\"compilers\":[\"typescript\",\"uglify-js\"]}",
+ "babel": {
+ "useBabelRc": true,
+ "presets": {
+ "babel-preset-es2015": true
+ },
+ "plugins": {
+ "babel-plugin-syntax-jsx": true,
+ "babel-plugin-transform-react-jsx": true,
+ "babel-plugin-transform-async-to-generator": true,
+ "babel-plugin-transform-class-properties": true,
+ "babel-plugin-transform-object-rest-spread": true
+ }
+ },
+ "file-type-png": "{\"compilers\":[\"png\"]}",
+ "file-type-jpg": "{\"compilers\":[\"jpg\"]}"
+}
\ No newline at end of file
diff --git a/01 - JavaScript Drum Kit/Working/b9r5sEL.jpg b/01 - JavaScript Drum Kit/Working/b9r5sEL.jpg
new file mode 100644
index 0000000000..590036d636
Binary files /dev/null and b/01 - JavaScript Drum Kit/Working/b9r5sEL.jpg differ
diff --git a/01 - JavaScript Drum Kit/Working/index-FINISHED.html b/01 - JavaScript Drum Kit/Working/index-FINISHED.html
new file mode 100644
index 0000000000..05ae312725
--- /dev/null
+++ b/01 - JavaScript Drum Kit/Working/index-FINISHED.html
@@ -0,0 +1,82 @@
+
+
+
+
+ JS Drum Kit
+
+
+
+
+
+
+ A
+ clap
+
+
+ S
+ hihat
+
+
+ D
+ kick
+
+
+ F
+ openhat
+
+
+ G
+ boom
+
+
+ H
+ ride
+
+
+ J
+ snare
+
+
+ K
+ tom
+
+
+ L
+ tink
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/01 - JavaScript Drum Kit/Working/index-START.html b/01 - JavaScript Drum Kit/Working/index-START.html
new file mode 100644
index 0000000000..789c7c1528
--- /dev/null
+++ b/01 - JavaScript Drum Kit/Working/index-START.html
@@ -0,0 +1,104 @@
+
+
+
+
+
+ JS Drum Kit
+
+
+
+
+
+
+ A
+ clap
+
+
+
+ S
+ hihat
+
+
+
+ D
+ kick
+
+
+ F
+ openhat
+
+
+
+ G
+
+ boom
+
+
+
+ H
+ ride
+
+
+ J
+ snare
+
+
+ K
+ tom
+
+
+ L
+ tink
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/01 - JavaScript Drum Kit/Working/sounds/boom.wav b/01 - JavaScript Drum Kit/Working/sounds/boom.wav
new file mode 100644
index 0000000000..8d6423bcdb
Binary files /dev/null and b/01 - JavaScript Drum Kit/Working/sounds/boom.wav differ
diff --git a/01 - JavaScript Drum Kit/Working/sounds/clap.wav b/01 - JavaScript Drum Kit/Working/sounds/clap.wav
new file mode 100644
index 0000000000..ef952e5eb4
Binary files /dev/null and b/01 - JavaScript Drum Kit/Working/sounds/clap.wav differ
diff --git a/01 - JavaScript Drum Kit/Working/sounds/hihat.wav b/01 - JavaScript Drum Kit/Working/sounds/hihat.wav
new file mode 100644
index 0000000000..885cb196a3
Binary files /dev/null and b/01 - JavaScript Drum Kit/Working/sounds/hihat.wav differ
diff --git a/01 - JavaScript Drum Kit/Working/sounds/kick.wav b/01 - JavaScript Drum Kit/Working/sounds/kick.wav
new file mode 100644
index 0000000000..8fe46dea0c
Binary files /dev/null and b/01 - JavaScript Drum Kit/Working/sounds/kick.wav differ
diff --git a/01 - JavaScript Drum Kit/Working/sounds/openhat.wav b/01 - JavaScript Drum Kit/Working/sounds/openhat.wav
new file mode 100644
index 0000000000..50637521dc
Binary files /dev/null and b/01 - JavaScript Drum Kit/Working/sounds/openhat.wav differ
diff --git a/01 - JavaScript Drum Kit/Working/sounds/ride.wav b/01 - JavaScript Drum Kit/Working/sounds/ride.wav
new file mode 100644
index 0000000000..e5829dfef9
Binary files /dev/null and b/01 - JavaScript Drum Kit/Working/sounds/ride.wav differ
diff --git a/01 - JavaScript Drum Kit/Working/sounds/snare.wav b/01 - JavaScript Drum Kit/Working/sounds/snare.wav
new file mode 100644
index 0000000000..c4edfc7534
Binary files /dev/null and b/01 - JavaScript Drum Kit/Working/sounds/snare.wav differ
diff --git a/01 - JavaScript Drum Kit/Working/sounds/tink.wav b/01 - JavaScript Drum Kit/Working/sounds/tink.wav
new file mode 100644
index 0000000000..f907ea2c0e
Binary files /dev/null and b/01 - JavaScript Drum Kit/Working/sounds/tink.wav differ
diff --git a/01 - JavaScript Drum Kit/Working/sounds/tom.wav b/01 - JavaScript Drum Kit/Working/sounds/tom.wav
new file mode 100644
index 0000000000..9e2cdf691e
Binary files /dev/null and b/01 - JavaScript Drum Kit/Working/sounds/tom.wav differ
diff --git a/01 - JavaScript Drum Kit/Working/style.css b/01 - JavaScript Drum Kit/Working/style.css
new file mode 100644
index 0000000000..20180992b5
--- /dev/null
+++ b/01 - JavaScript Drum Kit/Working/style.css
@@ -0,0 +1,52 @@
+html {
+ font-size: 10px;
+ background: url(b9r5sEL.jpg) bottom center;
+ background-size: cover;
+}
+
+body,
+html {
+ margin: 0;
+ padding: 0;
+ font-family: sans-serif;
+}
+
+.keys {
+ display: flex;
+ flex: 1;
+ min-height: 100vh;
+ align-items: center;
+ justify-content: center;
+}
+
+.key {
+ border: 0.4rem solid black;
+ border-radius: 0.5rem;
+ margin: 1rem;
+ font-size: 1.5rem;
+ padding: 1rem 0.5rem;
+ transition: all 0.07s ease;
+ width: 10rem;
+ text-align: center;
+ color: white;
+ background: rgba(0, 0, 0, 0.4);
+ text-shadow: 0 0 0.5rem black;
+}
+
+.playing {
+ transform: scale(1.1);
+ border-color: #ffc600;
+ box-shadow: 0 0 1rem #ffc600;
+}
+
+kbd {
+ display: block;
+ font-size: 4rem;
+}
+
+.sound {
+ font-size: 1.2rem;
+ text-transform: uppercase;
+ letter-spacing: 0.1rem;
+ color: #ffc600;
+}
diff --git a/01 - JavaScript Drum Kit/practice2/b9r5sEL.jpg b/01 - JavaScript Drum Kit/practice2/b9r5sEL.jpg
new file mode 100644
index 0000000000..590036d636
Binary files /dev/null and b/01 - JavaScript Drum Kit/practice2/b9r5sEL.jpg differ
diff --git a/01 - JavaScript Drum Kit/practice2/index-FINISHED.html b/01 - JavaScript Drum Kit/practice2/index-FINISHED.html
new file mode 100644
index 0000000000..1a16d0997c
--- /dev/null
+++ b/01 - JavaScript Drum Kit/practice2/index-FINISHED.html
@@ -0,0 +1,83 @@
+
+
+
+
+ JS Drum Kit
+
+
+
+
+
+
+
+ A
+ clap
+
+
+ S
+ hihat
+
+
+ D
+ kick
+
+
+ F
+ openhat
+
+
+ G
+ boom
+
+
+ H
+ ride
+
+
+ J
+ snare
+
+
+ K
+ tom
+
+
+ L
+ tink
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/01 - JavaScript Drum Kit/practice2/index-START.html b/01 - JavaScript Drum Kit/practice2/index-START.html
new file mode 100644
index 0000000000..0cfda93dfb
--- /dev/null
+++ b/01 - JavaScript Drum Kit/practice2/index-START.html
@@ -0,0 +1,84 @@
+
+
+
+
+ JS Drum Kit
+
+
+
+
+
+ A
+ clap
+
+
+ S
+ hihat
+
+
+ D
+ kick
+
+
+ F
+ openhat
+
+
+ G
+ boom
+
+
+ H
+ ride
+
+
+ J
+ snare
+
+
+ K
+ tom
+
+
+ L
+ tink
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/01 - JavaScript Drum Kit/practice2/sounds/boom.wav b/01 - JavaScript Drum Kit/practice2/sounds/boom.wav
new file mode 100644
index 0000000000..8d6423bcdb
Binary files /dev/null and b/01 - JavaScript Drum Kit/practice2/sounds/boom.wav differ
diff --git a/01 - JavaScript Drum Kit/practice2/sounds/clap.wav b/01 - JavaScript Drum Kit/practice2/sounds/clap.wav
new file mode 100644
index 0000000000..ef952e5eb4
Binary files /dev/null and b/01 - JavaScript Drum Kit/practice2/sounds/clap.wav differ
diff --git a/01 - JavaScript Drum Kit/practice2/sounds/hihat.wav b/01 - JavaScript Drum Kit/practice2/sounds/hihat.wav
new file mode 100644
index 0000000000..885cb196a3
Binary files /dev/null and b/01 - JavaScript Drum Kit/practice2/sounds/hihat.wav differ
diff --git a/01 - JavaScript Drum Kit/practice2/sounds/kick.wav b/01 - JavaScript Drum Kit/practice2/sounds/kick.wav
new file mode 100644
index 0000000000..8fe46dea0c
Binary files /dev/null and b/01 - JavaScript Drum Kit/practice2/sounds/kick.wav differ
diff --git a/01 - JavaScript Drum Kit/practice2/sounds/openhat.wav b/01 - JavaScript Drum Kit/practice2/sounds/openhat.wav
new file mode 100644
index 0000000000..50637521dc
Binary files /dev/null and b/01 - JavaScript Drum Kit/practice2/sounds/openhat.wav differ
diff --git a/01 - JavaScript Drum Kit/practice2/sounds/ride.wav b/01 - JavaScript Drum Kit/practice2/sounds/ride.wav
new file mode 100644
index 0000000000..e5829dfef9
Binary files /dev/null and b/01 - JavaScript Drum Kit/practice2/sounds/ride.wav differ
diff --git a/01 - JavaScript Drum Kit/practice2/sounds/snare.wav b/01 - JavaScript Drum Kit/practice2/sounds/snare.wav
new file mode 100644
index 0000000000..c4edfc7534
Binary files /dev/null and b/01 - JavaScript Drum Kit/practice2/sounds/snare.wav differ
diff --git a/01 - JavaScript Drum Kit/practice2/sounds/tink.wav b/01 - JavaScript Drum Kit/practice2/sounds/tink.wav
new file mode 100644
index 0000000000..1f3c7b9191
Binary files /dev/null and b/01 - JavaScript Drum Kit/practice2/sounds/tink.wav differ
diff --git a/01 - JavaScript Drum Kit/practice2/sounds/tom.wav b/01 - JavaScript Drum Kit/practice2/sounds/tom.wav
new file mode 100644
index 0000000000..9e2cdf691e
Binary files /dev/null and b/01 - JavaScript Drum Kit/practice2/sounds/tom.wav differ
diff --git a/01 - JavaScript Drum Kit/practice2/style.css b/01 - JavaScript Drum Kit/practice2/style.css
new file mode 100644
index 0000000000..b8cc8cf086
--- /dev/null
+++ b/01 - JavaScript Drum Kit/practice2/style.css
@@ -0,0 +1,51 @@
+html {
+ font-size: 10px;
+ background: url('b9r5sEL.jpg') bottom center;
+ background-size: cover;
+}
+
+body,html {
+ margin: 0;
+ padding: 0;
+ font-family: sans-serif;
+}
+
+.keys {
+ display: flex;
+ flex: 1;
+ min-height: 100vh;
+ align-items: center;
+ justify-content: center;
+}
+
+.key {
+ border: .4rem solid black;
+ border-radius: .5rem;
+ margin: 1rem;
+ font-size: 1.5rem;
+ padding: 1rem .5rem;
+ transition: all .07s ease;
+ width: 10rem;
+ text-align: center;
+ color: white;
+ background: rgba(0,0,0,0.4);
+ text-shadow: 0 0 .5rem black;
+}
+
+.playing {
+ transform: scale(1.1);
+ border-color: #ffc600;
+ box-shadow: 0 0 1rem #ffc600;
+}
+
+kbd {
+ display: block;
+ font-size: 4rem;
+}
+
+.sound {
+ font-size: 1.2rem;
+ text-transform: uppercase;
+ letter-spacing: .1rem;
+ color: #ffc600;
+}
diff --git a/02 - JS and CSS Clock/work1/bg.jpg b/02 - JS and CSS Clock/work1/bg.jpg
new file mode 100644
index 0000000000..3492af91ea
Binary files /dev/null and b/02 - JS and CSS Clock/work1/bg.jpg differ
diff --git a/02 - JS and CSS Clock/work1/index-START.html b/02 - JS and CSS Clock/work1/index-START.html
new file mode 100644
index 0000000000..7be1224625
--- /dev/null
+++ b/02 - JS and CSS Clock/work1/index-START.html
@@ -0,0 +1,91 @@
+
+
+
+
+ JS + CSS Clock
+
+
+
+
+
+
+
+
+
diff --git a/02 - JS and CSS Clock/work2/index.html b/02 - JS and CSS Clock/work2/index.html
new file mode 100644
index 0000000000..8dad26de0f
--- /dev/null
+++ b/02 - JS and CSS Clock/work2/index.html
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+ Hand Made Clock
+
+
+
+
+
+
+
+
+
1
+
2
+
3
+
4
+
5
+
6
+
7
+
8
+
9
+
10
+
11
+
12
+
+
+
\ No newline at end of file
diff --git a/02 - JS and CSS Clock/work2/prepros-6.config b/02 - JS and CSS Clock/work2/prepros-6.config
new file mode 100644
index 0000000000..8cfa045001
--- /dev/null
+++ b/02 - JS and CSS Clock/work2/prepros-6.config
@@ -0,0 +1,245 @@
+{
+ "name": "work2",
+ "firstRun": false,
+ "exportConfig": true,
+ "fileConfigs": [],
+ "fileTree": {
+ "expandedDirs": [],
+ "hideSystemFiles": true,
+ "systemFiles": [
+ ".*",
+ "desktop.ini",
+ "prepros.config",
+ "$RECYCLE.BIN",
+ "prepros.cfg",
+ "prepros-6.config",
+ "Prepros Export"
+ ],
+ "hideUnwatchedFiles": false
+ },
+ "imports": [],
+ "projectView": {
+ "selectedView": "settings"
+ },
+ "fileWatcher": {
+ "enabled": true,
+ "watchedExtensions": [
+ "less",
+ "sass",
+ "scss",
+ "styl",
+ "md",
+ "markdown",
+ "coffee",
+ "js",
+ "jade",
+ "haml",
+ "slim",
+ "ls",
+ "kit",
+ "png",
+ "jpg",
+ "jpeg",
+ "ts",
+ "pug",
+ "css",
+ "html",
+ "htm",
+ "php"
+ ]
+ },
+ "pathFilters": [
+ "node_modules",
+ ".*",
+ "bower_components",
+ "prepros.config",
+ "Prepros Export",
+ "prepros-6.config",
+ "prepros.cfg",
+ "wp-admin",
+ "wp-includes"
+ ],
+ "server": {
+ "port": 7880,
+ "assignNewPortAutomatically": true,
+ "enable": true,
+ "proxy": {
+ "enable": false,
+ "url": "http://localhost:7880/"
+ }
+ },
+ "browser-sync": {
+ "enable": false,
+ "clicks": true,
+ "forms": true,
+ "scroll": true
+ },
+ "live-reload": {
+ "enable": true,
+ "animate": true,
+ "delay": 0
+ },
+ "ftp-deploy": {
+ "connectionType": "ftp",
+ "remotePath": "",
+ "uploadTimeout": 20000,
+ "uploadOnChange": false,
+ "ftp": {
+ "secure": false,
+ "keepAlive": true,
+ "host": "",
+ "port": 21,
+ "user": "",
+ "password": ""
+ },
+ "sftp": {
+ "host": "",
+ "port": 22,
+ "usePrivateKey": false,
+ "username": "",
+ "password": "",
+ "privateKey": "",
+ "passphrase": ""
+ },
+ "pathFilters": [
+ "config.rb",
+ "prepros.config",
+ "prepros-6.config",
+ "node_modules",
+ "Prepros Export",
+ ".git",
+ ".idea",
+ ".sass-cache",
+ ".hg",
+ ".svn",
+ ".cache",
+ ".DS_Store",
+ "*.sass",
+ "*.scss",
+ "*.less",
+ "*.pug",
+ "*.jade",
+ "*.styl",
+ "*.haml",
+ "*.slim",
+ "*.coffee",
+ "*.ls",
+ "*.kit",
+ "*.ts"
+ ],
+ "history": []
+ },
+ "file-type-sass": "{\"compilers\":[\"node-sass\",\"autoprefixer\",\"minify-css\"]}",
+ "file-type-less": "{\"compilers\":[\"less\",\"autoprefixer\",\"minify-css\"]}",
+ "autoprefixer": {
+ "browsers": "last 5 versions"
+ },
+ "file-type-pug": "{\"compilers\":[\"pug\"]}",
+ "file-type-css": "{\"compilers\":[\"autoprefixer\",\"cssnext\",\"minify-css\"]}",
+ "file-type-javascript": "{\"compilers\":[\"concat-js\",\"babel\",\"uglify-js\"]}",
+ "file-type-stylus": "{\"compilers\":[\"stylus\",\"autoprefixer\",\"minify-css\"]}",
+ "file-type-markdown": "{\"compilers\":[\"markdown\"]}",
+ "file-type-haml": "{\"compilers\":[\"haml\"]}",
+ "file-type-slim": "{\"compilers\":[\"slim\"]}",
+ "file-type-coffee-script": "{\"compilers\":[\"coffee-script\",\"uglify-js\"]}",
+ "file-type-livescript": "{\"compilers\":[\"livescript\",\"uglify-js\"]}",
+ "file-type-kit": "{\"compilers\":[\"kit\"]}",
+ "uglify-js": {
+ "ie8": false,
+ "compress": {
+ "sequences": true,
+ "properties": true,
+ "dead_code": true,
+ "drop_debugger": true,
+ "unsafe": false,
+ "unsafe_comps": false,
+ "unsafe_math": false,
+ "unsafe_proto": false,
+ "unsafe_regexp": false,
+ "conditionals": true,
+ "comparisons": true,
+ "evaluate": true,
+ "booleans": true,
+ "loops": true,
+ "unused": true,
+ "toplevel": false,
+ "top_retain": "",
+ "hoist_funs": true,
+ "hoist_vars": false,
+ "if_return": true,
+ "join_vars": true,
+ "collapse_vars": true,
+ "reduce_vars": true,
+ "warnings": true,
+ "negate_iife": true,
+ "pure_getters": false,
+ "pure_funcs": [],
+ "drop_console": false,
+ "expression": false,
+ "keep_fargs": true,
+ "keep_fnames": false,
+ "passes": 1,
+ "keep_infinity": false,
+ "side_effects": true,
+ "global_defs": []
+ },
+ "output": {
+ "ascii_only": false,
+ "beautify": false,
+ "comments": "",
+ "indent_level": 4,
+ "indent_start": 0,
+ "inline_script": false,
+ "keep_quoted_props": false,
+ "max_line_len": false,
+ "preamble": "",
+ "preserve_line": false,
+ "quote_keys": false,
+ "quote_style": 0,
+ "semicolons": true,
+ "shebang": true,
+ "width": 80
+ }
+ },
+ "cssnext": {
+ "customProperties": true,
+ "applyRule": true,
+ "calc": false,
+ "nesting": true,
+ "customMedia": true,
+ "mediaQueriesRange": true,
+ "customSelectors": true,
+ "attributeCaseInsensitive": true,
+ "colorRebeccapurple": true,
+ "colorHwb": true,
+ "colorGray": true,
+ "colorHexAlpha": true,
+ "colorFunction": true,
+ "fontVariant": true,
+ "filter": true,
+ "initial": true,
+ "rem": true,
+ "pseudoElements": true,
+ "pseudoClassMatches": true,
+ "pseudoClassNot": true,
+ "pseudoClassAnyLink": true,
+ "colorRgba": true,
+ "overflowWrap": true
+ },
+ "file-type-typescript": "{\"compilers\":[\"typescript\",\"uglify-js\"]}",
+ "babel": {
+ "useBabelRc": true,
+ "presets": {
+ "babel-preset-es2015": true
+ },
+ "plugins": {
+ "babel-plugin-syntax-jsx": true,
+ "babel-plugin-transform-react-jsx": true,
+ "babel-plugin-transform-async-to-generator": true,
+ "babel-plugin-transform-class-properties": true,
+ "babel-plugin-transform-object-rest-spread": true
+ }
+ },
+ "file-type-png": "{\"compilers\":[\"png\"]}",
+ "file-type-jpg": "{\"compilers\":[\"jpg\"]}"
+}
\ No newline at end of file
diff --git a/02 - JS and CSS Clock/work2/script.js b/02 - JS and CSS Clock/work2/script.js
new file mode 100644
index 0000000000..c4feef100d
--- /dev/null
+++ b/02 - JS and CSS Clock/work2/script.js
@@ -0,0 +1,36 @@
+const handSecond = document.querySelector(".clock__hand-second");
+const handMinute = document.querySelector(".clock__hand-minute");
+const handHour = document.querySelector(".clock__hand-hour");
+
+function setRotation(e, rotationRatio) {
+ e.style.setProperty("--rotation", rotationRatio * 360);
+}
+
+function setClock(e) {
+ const getDate = new Date();
+ const seconds = getDate.getSeconds() / 60;
+ const minutes = (seconds + getDate.getMinutes()) / 60;
+ const hours = (minutes + getDate.getHours()) / 12;
+
+ // console.log(`S ${seconds} M ${minutes} Hours ${hours}`);
+
+ // handSecond.style.setProperty(
+ // "transform",
+ // `translateX(-50%) rotate(${seconds}deg)`
+ // );
+ // handMinute.style.setProperty(
+ // "transform",
+ // `translateX(-50%) rotate(${minutes}deg)`
+ // );
+ // handHour.style.setProperty(
+ // "transform",
+ // `translateX(-50%) rotate(${hours}deg)`
+ // );
+
+ setRotation(handSecond, seconds);
+ setRotation(handMinute, minutes);
+ setRotation(handHour, hours);
+}
+
+setInterval(setClock, 1000);
+setClock();
diff --git a/02 - JS and CSS Clock/work2/style.css b/02 - JS and CSS Clock/work2/style.css
new file mode 100644
index 0000000000..790cd79c07
--- /dev/null
+++ b/02 - JS and CSS Clock/work2/style.css
@@ -0,0 +1,110 @@
+*,
+*:after,
+*:before {
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box; }
+
+body {
+ margin: 0;
+ font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif;
+ background: -webkit-gradient(linear, left top, right top, from(#88fbff), to(#00adff));
+ background: -webkit-linear-gradient(left, #88fbff 0%, #00adff 100%);
+ background: -o-linear-gradient(left, #88fbff 0%, #00adff 100%);
+ background: linear-gradient(90deg, #88fbff 0%, #00adff 100%);
+ min-height: 100vh;
+ overflow: hidden;
+ display: -webkit-box;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-box-pack: center;
+ -ms-flex-pack: center;
+ justify-content: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center; }
+
+.clock {
+ width: 300px;
+ height: 300px;
+ border-radius: 50%;
+ border: 2px solid black;
+ position: relative;
+ background-color: rgba(255, 255, 255, 0.564); }
+ .clock:after {
+ content: "";
+ width: 15px;
+ height: 15px;
+ background-color: black;
+ border-radius: 50%;
+ position: absolute;
+ left: 50%;
+ top: 50%;
+ -webkit-transform: translate(-50%, -50%);
+ -ms-transform: translate(-50%, -50%);
+ transform: translate(-50%, -50%);
+ z-index: 1; }
+ .clock__hand {
+ --rotation: 0;
+ position: absolute;
+ left: 50%;
+ bottom: 50%;
+ -webkit-transform: translateX(-50%) rotate(calc(var(--rotation) * 1deg));
+ -ms-transform: translateX(-50%) rotate(calc(var(--rotation) * 1deg));
+ transform: translateX(-50%) rotate(calc(var(--rotation) * 1deg));
+ -webkit-transform-origin: bottom;
+ -ms-transform-origin: bottom;
+ transform-origin: bottom;
+ border-top-left-radius: 10px;
+ border-top-right-radius: 10px;
+ -webkit-transition: all 0.5s;
+ -o-transition: all 0.5s;
+ transition: all 0.5s; }
+ .clock__hand-hour {
+ height: 70px;
+ width: 7px;
+ background-color: black; }
+ .clock__hand-minute {
+ height: 110px;
+ width: 4px;
+ background-color: rebeccapurple; }
+ .clock__hand-second {
+ height: 130px;
+ width: 1px;
+ background-color: red; }
+
+.number {
+ --rotate-number: 0;
+ position: absolute;
+ font-weight: 500;
+ font-size: 1.5rem;
+ width: 100%;
+ height: 100%;
+ text-align: center;
+ -webkit-transform: rotate(calc(var(--rotate-number) * 1deg));
+ -ms-transform: rotate(calc(var(--rotate-number) * 1deg));
+ transform: rotate(calc(var(--rotate-number) * 1deg)); }
+ .number:nth-child(3n) {
+ font-size: 2.5rem;
+ color: brown; }
+ .number__1 {
+ --rotate-number: 30; }
+ .number__2 {
+ --rotate-number: 60; }
+ .number__3 {
+ --rotate-number: 90; }
+ .number__4 {
+ --rotate-number: 120; }
+ .number__5 {
+ --rotate-number: 150; }
+ .number__6 {
+ --rotate-number: 180; }
+ .number__7 {
+ --rotate-number: 210; }
+ .number__8 {
+ --rotate-number: 240; }
+ .number__9 {
+ --rotate-number: 270; }
+ .number__10 {
+ --rotate-number: 300; }
+ .number__11 {
+ --rotate-number: 330; }
diff --git a/02 - JS and CSS Clock/work2/style.scss b/02 - JS and CSS Clock/work2/style.scss
new file mode 100644
index 0000000000..9dc25ca537
--- /dev/null
+++ b/02 - JS and CSS Clock/work2/style.scss
@@ -0,0 +1,123 @@
+*,
+*:after,
+*:before {
+ box-sizing: border-box;
+}
+
+body {
+ margin: 0;
+ font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif;
+ background: linear-gradient(90deg, rgba(136, 251, 255, 1) 0%, rgba(0, 173, 255, 1) 100%);
+ min-height: 100vh;
+ overflow: hidden;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+}
+
+.clock {
+ width: 300px;
+ height: 300px;
+ border-radius: 50%;
+ border: 2px solid black;
+ position: relative;
+ background-color: rgba(255, 255, 255, 0.564);
+
+ &:after {
+ content: "";
+ width: 15px;
+ height: 15px;
+ background-color: black;
+ border-radius: 50%;
+ position: absolute;
+ left: 50%;
+ top: 50%;
+ transform: translate(-50%, -50%);
+ z-index: 1;
+ }
+
+ &__hand {
+ --rotation: 0;
+ position: absolute;
+ left: 50%;
+ bottom: 50%;
+ transform: translateX(-50%) rotate(calc(var(--rotation) * 1deg));
+ transform-origin: bottom;
+ border-top-left-radius: 10px;
+ border-top-right-radius: 10px;
+ transition: all 0.5s;
+
+ &-hour {
+ height: 70px;
+ width: 7px;
+ background-color: black;
+ // --rotation: 30deg;
+ }
+
+ &-minute {
+ height: 110px;
+ width: 4px;
+ background-color: rebeccapurple;
+ // --rotation: 60deg;
+ }
+
+ &-second {
+ height: 130px;
+ width: 1px;
+ background-color: red;
+ // --rotation: 90deg;
+ }
+ }
+}
+
+.number {
+ --rotate-number: 0;
+ // background-color: red;
+ position: absolute;
+ font-weight: 500;
+ font-size: 1.5rem;
+ width: 100%;
+ height: 100%;
+ text-align: center;
+ transform: rotate(calc(var(--rotate-number) * 1deg));
+
+ &:nth-child(3n) {
+ font-size: 2.5rem;
+ color: brown;
+ }
+
+ &__1 {
+ --rotate-number: 30;
+ }
+ &__2 {
+ --rotate-number: 60;
+ }
+ &__3 {
+ --rotate-number: 90;
+ }
+ &__4 {
+ --rotate-number: 120;
+ }
+ &__5 {
+ --rotate-number: 150;
+ }
+ &__6 {
+ --rotate-number: 180;
+ }
+ &__7 {
+ --rotate-number: 210;
+ }
+ &__8 {
+ --rotate-number: 240;
+ }
+ &__9 {
+ --rotate-number: 270;
+ }
+ &__10 {
+ --rotate-number: 300;
+ }
+ &__11 {
+ --rotate-number: 330;
+ }
+
+}
diff --git a/03 - CSS Variables/work1/img.jpg b/03 - CSS Variables/work1/img.jpg
new file mode 100644
index 0000000000..011ebd7e26
Binary files /dev/null and b/03 - CSS Variables/work1/img.jpg differ
diff --git a/03 - CSS Variables/work1/index-START.html b/03 - CSS Variables/work1/index-START.html
new file mode 100644
index 0000000000..da7d4c18f1
--- /dev/null
+++ b/03 - CSS Variables/work1/index-START.html
@@ -0,0 +1,93 @@
+
+
+
+
+ Scoped CSS Variables and JS
+
+
+ Update CSS Variables with JS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/03 - CSS Variables/work1/prepros-6.config b/03 - CSS Variables/work1/prepros-6.config
new file mode 100644
index 0000000000..8017f50e31
--- /dev/null
+++ b/03 - CSS Variables/work1/prepros-6.config
@@ -0,0 +1,245 @@
+{
+ "name": "work1",
+ "firstRun": false,
+ "exportConfig": true,
+ "fileConfigs": [],
+ "fileTree": {
+ "expandedDirs": [],
+ "hideSystemFiles": true,
+ "systemFiles": [
+ ".*",
+ "desktop.ini",
+ "prepros.config",
+ "$RECYCLE.BIN",
+ "prepros.cfg",
+ "prepros-6.config",
+ "Prepros Export"
+ ],
+ "hideUnwatchedFiles": false
+ },
+ "imports": [],
+ "projectView": {
+ "selectedView": "settings"
+ },
+ "fileWatcher": {
+ "enabled": true,
+ "watchedExtensions": [
+ "less",
+ "sass",
+ "scss",
+ "styl",
+ "md",
+ "markdown",
+ "coffee",
+ "js",
+ "jade",
+ "haml",
+ "slim",
+ "ls",
+ "kit",
+ "png",
+ "jpg",
+ "jpeg",
+ "ts",
+ "pug",
+ "css",
+ "html",
+ "htm",
+ "php"
+ ]
+ },
+ "pathFilters": [
+ "node_modules",
+ ".*",
+ "bower_components",
+ "prepros.config",
+ "Prepros Export",
+ "prepros-6.config",
+ "prepros.cfg",
+ "wp-admin",
+ "wp-includes"
+ ],
+ "server": {
+ "port": 7879,
+ "assignNewPortAutomatically": true,
+ "enable": true,
+ "proxy": {
+ "enable": false,
+ "url": "http://localhost:7880/"
+ }
+ },
+ "browser-sync": {
+ "enable": false,
+ "clicks": true,
+ "forms": true,
+ "scroll": true
+ },
+ "live-reload": {
+ "enable": true,
+ "animate": true,
+ "delay": 0
+ },
+ "ftp-deploy": {
+ "connectionType": "ftp",
+ "remotePath": "",
+ "uploadTimeout": 20000,
+ "uploadOnChange": false,
+ "ftp": {
+ "secure": false,
+ "keepAlive": true,
+ "host": "",
+ "port": 21,
+ "user": "",
+ "password": ""
+ },
+ "sftp": {
+ "host": "",
+ "port": 22,
+ "usePrivateKey": false,
+ "username": "",
+ "password": "",
+ "privateKey": "",
+ "passphrase": ""
+ },
+ "pathFilters": [
+ "config.rb",
+ "prepros.config",
+ "prepros-6.config",
+ "node_modules",
+ "Prepros Export",
+ ".git",
+ ".idea",
+ ".sass-cache",
+ ".hg",
+ ".svn",
+ ".cache",
+ ".DS_Store",
+ "*.sass",
+ "*.scss",
+ "*.less",
+ "*.pug",
+ "*.jade",
+ "*.styl",
+ "*.haml",
+ "*.slim",
+ "*.coffee",
+ "*.ls",
+ "*.kit",
+ "*.ts"
+ ],
+ "history": []
+ },
+ "file-type-sass": "{\"compilers\":[\"node-sass\",\"autoprefixer\",\"minify-css\"]}",
+ "file-type-less": "{\"compilers\":[\"less\",\"autoprefixer\",\"minify-css\"]}",
+ "autoprefixer": {
+ "browsers": "last 5 versions"
+ },
+ "file-type-pug": "{\"compilers\":[\"pug\"]}",
+ "file-type-css": "{\"compilers\":[\"autoprefixer\",\"cssnext\",\"minify-css\"]}",
+ "file-type-javascript": "{\"compilers\":[\"concat-js\",\"babel\",\"uglify-js\"]}",
+ "file-type-stylus": "{\"compilers\":[\"stylus\",\"autoprefixer\",\"minify-css\"]}",
+ "file-type-markdown": "{\"compilers\":[\"markdown\"]}",
+ "file-type-haml": "{\"compilers\":[\"haml\"]}",
+ "file-type-slim": "{\"compilers\":[\"slim\"]}",
+ "file-type-coffee-script": "{\"compilers\":[\"coffee-script\",\"uglify-js\"]}",
+ "file-type-livescript": "{\"compilers\":[\"livescript\",\"uglify-js\"]}",
+ "file-type-kit": "{\"compilers\":[\"kit\"]}",
+ "uglify-js": {
+ "ie8": false,
+ "compress": {
+ "sequences": true,
+ "properties": true,
+ "dead_code": true,
+ "drop_debugger": true,
+ "unsafe": false,
+ "unsafe_comps": false,
+ "unsafe_math": false,
+ "unsafe_proto": false,
+ "unsafe_regexp": false,
+ "conditionals": true,
+ "comparisons": true,
+ "evaluate": true,
+ "booleans": true,
+ "loops": true,
+ "unused": true,
+ "toplevel": false,
+ "top_retain": "",
+ "hoist_funs": true,
+ "hoist_vars": false,
+ "if_return": true,
+ "join_vars": true,
+ "collapse_vars": true,
+ "reduce_vars": true,
+ "warnings": true,
+ "negate_iife": true,
+ "pure_getters": false,
+ "pure_funcs": [],
+ "drop_console": false,
+ "expression": false,
+ "keep_fargs": true,
+ "keep_fnames": false,
+ "passes": 1,
+ "keep_infinity": false,
+ "side_effects": true,
+ "global_defs": []
+ },
+ "output": {
+ "ascii_only": false,
+ "beautify": false,
+ "comments": "",
+ "indent_level": 4,
+ "indent_start": 0,
+ "inline_script": false,
+ "keep_quoted_props": false,
+ "max_line_len": false,
+ "preamble": "",
+ "preserve_line": false,
+ "quote_keys": false,
+ "quote_style": 0,
+ "semicolons": true,
+ "shebang": true,
+ "width": 80
+ }
+ },
+ "cssnext": {
+ "customProperties": true,
+ "applyRule": true,
+ "calc": false,
+ "nesting": true,
+ "customMedia": true,
+ "mediaQueriesRange": true,
+ "customSelectors": true,
+ "attributeCaseInsensitive": true,
+ "colorRebeccapurple": true,
+ "colorHwb": true,
+ "colorGray": true,
+ "colorHexAlpha": true,
+ "colorFunction": true,
+ "fontVariant": true,
+ "filter": true,
+ "initial": true,
+ "rem": true,
+ "pseudoElements": true,
+ "pseudoClassMatches": true,
+ "pseudoClassNot": true,
+ "pseudoClassAnyLink": true,
+ "colorRgba": true,
+ "overflowWrap": true
+ },
+ "file-type-typescript": "{\"compilers\":[\"typescript\",\"uglify-js\"]}",
+ "babel": {
+ "useBabelRc": true,
+ "presets": {
+ "babel-preset-es2015": true
+ },
+ "plugins": {
+ "babel-plugin-syntax-jsx": true,
+ "babel-plugin-transform-react-jsx": true,
+ "babel-plugin-transform-async-to-generator": true,
+ "babel-plugin-transform-class-properties": true,
+ "babel-plugin-transform-object-rest-spread": true
+ }
+ },
+ "file-type-png": "{\"compilers\":[\"png\"]}",
+ "file-type-jpg": "{\"compilers\":[\"jpg\"]}"
+}
\ No newline at end of file
diff --git a/03 - CSS Variables/work2/img.jpg b/03 - CSS Variables/work2/img.jpg
new file mode 100644
index 0000000000..011ebd7e26
Binary files /dev/null and b/03 - CSS Variables/work2/img.jpg differ
diff --git a/03 - CSS Variables/work2/index-START.html b/03 - CSS Variables/work2/index-START.html
new file mode 100644
index 0000000000..3b0382b5e6
--- /dev/null
+++ b/03 - CSS Variables/work2/index-START.html
@@ -0,0 +1,80 @@
+
+
+
+
+ Scoped CSS Variables and JS
+
+
+ Update CSS Variables with JS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+