diff --git a/.vscode/settings.json b/.vscode/settings.json
new file mode 100644
index 0000000..6f3a291
--- /dev/null
+++ b/.vscode/settings.json
@@ -0,0 +1,3 @@
+{
+ "liveServer.settings.port": 5501
+}
\ No newline at end of file
diff --git a/README.md b/README.md
index c4ce09f..ae74994 100644
--- a/README.md
+++ b/README.md
@@ -1 +1,34 @@
+[](https://classroom.github.com/a/LlYauwvp)
[](https://classroom.github.com/online_ide?assignment_repo_id=10811035&assignment_repo_type=AssignmentRepo)
+
+
+## CSS ball shooter
+
+This project is a CSS ball shooting game that allows users to shoot/click balls dropping before the time runs out. The game is made by just using CSS/SASS and HTML. Its intent is to make us, the developers be more familiar with Git and GitHub, and using it in a collaborative manner.
+
+## Why the project is useful
+
+The project helps us develop our coding skills while also using Git/GitHub.
+
+## How to get started
+
+To get started, users can follow these steps:
+
+1. Clone the repository to their local environment using git clone https://github.com/AdvancedCSS2023/assignment-2---css-games-group_4.git
+
+2. Open the index.html file in their browser.
+
+3. Click on some balls!
+
+## Where an users seek help
+
+If users where to need help, they can reach out to the contributors via the GitHub repository. Additionally, we've added some short instructions on the start screen.
+
+## Which technology is used
+
+The project is developed using pure CSS/SASS and HTML and is hosted on GitHub.
+
+## Who are the creators/maintainers
+
+The project is developed and maintained by the group members of group 4 of the Advanced CSS course at NTNU. Contributions are welcome from anyone that would like to improve the game experience. Please submit a pull request if you would like to contribute!
+
diff --git a/images/clapping-shia.gif b/images/clapping-shia.gif
new file mode 100644
index 0000000..2183569
Binary files /dev/null and b/images/clapping-shia.gif differ
diff --git a/index.html b/index.html
new file mode 100644
index 0000000..0bf798a
--- /dev/null
+++ b/index.html
@@ -0,0 +1,74 @@
+
+
+
+
+
+
+ CSS - Game | Stage One
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
POP ALL THE BALL'S BEFORE THE TIME RUNS OUT
+ YOU HAVE 20 SECONDS!
+
+
+
GAME OVER, YOU FAILED
+
Press F5 to try again
+
+
+
+
How to play
+
Click on each of the moving balls before the time runs out.
+
Good Luck!
+
PS, press F11(fullscreen) for the best gaming experience. A mouse is also recommended ;-)
+
+
+
About this game
+
+ This is a game developed by students at NTNU as part of the Avanced CSS
+ course. Our goal with this project is to enhance our proficiency in Git
+ and collaborate using GitHub.
+
+
+
+
diff --git a/stage-four.html b/stage-four.html
new file mode 100644
index 0000000..4dd8445
--- /dev/null
+++ b/stage-four.html
@@ -0,0 +1,44 @@
+
+
+
+
+
+
+ CSS - Game | stage Four
+
+
+
+
+
+
+
STAGE FOUR | FINAL STAGE
+ YOU HAVE 22 SECONDS!
+
+
+
GAME OVER, YOU FAILED
+
Press F5 to try again
+
+
+
diff --git a/stage-three.html b/stage-three.html
new file mode 100644
index 0000000..ef2c230
--- /dev/null
+++ b/stage-three.html
@@ -0,0 +1,41 @@
+
+
+
+
+
+
+ CSS - Game | stage Three
+
+
+
+
+
+
+
STAGE THREE
+ YOU HAVE 18 SECONDS!
+
+
+
GAME OVER, YOU FAILED
+
Press F5 to try again
+
+
+
diff --git a/stage-two.html b/stage-two.html
new file mode 100644
index 0000000..4f67bd7
--- /dev/null
+++ b/stage-two.html
@@ -0,0 +1,41 @@
+
+
+
+
+
+
+ CSS - Game | stage Two
+
+
+
+
+
+
+
STAGE TWO
+ YOU HAVE 18 SECONDS!
+
+
+
GAME OVER, YOU FAILED
+
Press F5 to try again
+
+
+
diff --git a/styles/_colors.scss b/styles/_colors.scss
new file mode 100644
index 0000000..db911ad
--- /dev/null
+++ b/styles/_colors.scss
@@ -0,0 +1,28 @@
+:root {
+ --header-color: rgb(240, 248, 255);
+ --paragraph-color: rgb(245, 245, 245);
+ --stage-one-body-linear-gradient: linear-gradient(
+ 0deg,
+ rgba(2, 0, 36, 1) 0%,
+ rgba(0, 152, 194, 1) 100%
+ );
+ --stage-two-body-linear-gradient: linear-gradient(
+ 0deg,
+ rgb(17, 17, 0) 0%,
+ rgb(229, 255, 0) 100%
+ );
+ --stage-three-body-linear-gradient: linear-gradient(
+ 0deg,
+ rgb(0, 0, 0) 0%,
+ rgb(88, 235, 2) 100%
+ );
+ --stage-four-body-linear-gradient: linear-gradient(
+ 0deg,
+ rgb(130, 0, 134),
+ rgb(8, 0, 20)
+ );
+ --info-container-color: rgba(15, 12, 32);
+ --next-stage-hover-color: rgba(255, 0, 0);
+ --next-stage-color: rgba(255, 255, 255);
+ --next-stage-anchor-color: rgb(0, 0, 0);
+}
diff --git a/styles/_key-frames.scss b/styles/_key-frames.scss
new file mode 100644
index 0000000..1251cdd
--- /dev/null
+++ b/styles/_key-frames.scss
@@ -0,0 +1,98 @@
+@keyframes info-box {
+ 0% {
+ opacity: 1;
+ transform: translateX(0);
+ }
+
+ 100% {
+ opacity: 0;
+ transform: translateX(5000px);
+ }
+}
+
+@keyframes fall {
+ 0% {
+ transform: translateY(0px);
+ }
+
+ 100% {
+ transform: translateY(1000px);
+ }
+}
+
+@keyframes game-over-animation {
+ 0% {
+ transform: translateY(-1000px) scaleY(2.5) scaleX(0.2);
+ transform-origin: 50% 0%;
+ filter: blur(40px);
+ opacity: 0;
+ top: 200dvh;
+ margin-top: 500px;
+ }
+ 100% {
+ transform: translateY(0) scaleY(1) scaleX(1);
+ transform-origin: 50% 50%;
+ filter: blur(0);
+ opacity: 1;
+ top: 0dvh;
+ margin-top: 0px;
+ }
+}
+
+@keyframes fall-side-to-side {
+ 0% {
+ transform: translateY(0px) translateX(0px);
+ }
+
+ 25% {
+ transform: translateY(250px) translateX(-50px);
+ }
+
+ 50% {
+ transform: translateY(500px) translateX(30px);
+ }
+
+ 75% {
+ transform: translateY(750px) translateX(-170px);
+ }
+
+ 100% {
+ transform: translateY(1000px) translateX(0px);
+ }
+}
+
+@keyframes fall-odd {
+ 0% {
+ transform: translateY(0px) translateX(0px);
+ }
+ 25% {
+ transform: translateY(250px) translateX(150px);
+ }
+ 50% {
+ transform: translateY(450px) translateX(-100px);
+ }
+ 75% {
+ transform: translateY(400px) translateX(200px);
+ }
+ 100% {
+ transform: translateY(1000px) translateX(150px);
+ }
+}
+
+@keyframes fall-even {
+ 0% {
+ transform: translateY(0px) translateX(-50px);
+ }
+ 25% {
+ transform: translateY(300px) translateX(100px);
+ }
+ 50% {
+ transform: translateY(550px) translateX(200px);
+ }
+ 75% {
+ transform: translateY(450px) translateX(-200px);
+ }
+ 100% {
+ transform: translateY(1000px) translateX(-10px);
+ }
+}
diff --git a/styles/_mixins.scss b/styles/_mixins.scss
new file mode 100644
index 0000000..c6c4cbb
--- /dev/null
+++ b/styles/_mixins.scss
@@ -0,0 +1,23 @@
+@mixin flex-centered {
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ flex-direction: column;
+}
+
+@mixin main-background($gradient) {
+ background: $gradient fixed;
+}
+
+@mixin game-over-screen($animation-delay) {
+ height: 100vh;
+ width: 100vw;
+ background-color: var(--info-container-color);
+ @include flex-centered;
+ position: absolute;
+ bottom: 0vh;
+ animation: game-over-animation 0.6s cubic-bezier(0.23, 1, 0.32, 1)
+ $animation-delay both;
+ top: 200vh;
+ margin-top: 500px;
+}
diff --git a/styles/_stage-four.scss b/styles/_stage-four.scss
new file mode 100644
index 0000000..ae7e14f
--- /dev/null
+++ b/styles/_stage-four.scss
@@ -0,0 +1,74 @@
+.stage__four--body {
+ @include main-background(var(--stage-four-body-linear-gradient));
+ }
+
+ .game__info--game-over-stage-four {
+ @include game-over-screen(27s);
+ }
+
+ input.stage-four:nth-child(odd) {
+ animation-name: fall-odd;
+ animation-duration: 5s;
+ animation-timing-function: ease-out;
+ animation-fill-mode: forwards;
+ animation-iteration-count: infinite;
+ }
+
+ input.stage-four:nth-child(even) {
+ animation-name: fall-even;
+ animation-duration: 5s;
+ animation-timing-function: ease-out;
+ animation-fill-mode: forwards;
+ animation-direction: reverse;
+ animation-iteration-count: infinite;
+ }
+
+
+
+ .ball-one.stage-four {
+ animation-delay: 8s;
+ }
+
+ .ball-two.stage-four {
+ animation-delay: 8.5s;
+ }
+
+ .ball-three.stage-four {
+ animation-delay: 9s;
+ }
+
+
+ .ball-four.stage-four {
+ animation-delay: 9.5s;
+ }
+
+ .ball-five.stage-four {
+ animation-delay: 10s;
+ }
+
+ .ball-six.stage-four {
+ animation-delay: 10.5s;
+ }
+
+ .ball-seven.stage-four {
+ animation-delay: 11s;
+ }
+
+ .ball-eight.stage-four {
+ animation-delay: 11.5s;
+ }
+
+ .ball-nine.stage-four {
+ animation-delay: 12s;
+ }
+
+ .ball-ten.stage-four {
+ animation-delay: 12.5s;
+ }
+
+ .ball-eleven.stage-four {
+ animation-delay: 13s;
+ }
+
+
+
\ No newline at end of file
diff --git a/styles/_stage-one.scss b/styles/_stage-one.scss
new file mode 100644
index 0000000..19f52b9
--- /dev/null
+++ b/styles/_stage-one.scss
@@ -0,0 +1,170 @@
+.stage__one--body {
+ @include main-background(var(--stage-one-body-linear-gradient));
+}
+
+#start-game:checked ~ .game__info--container {
+ height: 100%;
+ width: 100dvw;
+ top: 0;
+ background-color: var(--info-container-color);
+ animation: info-box 1s linear 5s 1 normal both;
+ position: absolute;
+}
+
+#start-game:checked ~ .game__info--game-over {
+ @include game-over-screen(25s);
+}
+
+#start-game,
+#game-rules,
+#about-game {
+ display: none;
+}
+
+#start-game:checked ~ .menu-label,
+#game-rules:checked ~ .menu-label,
+#about-game:checked ~ .menu-label {
+ display: none;
+}
+
+.menu-label {
+ @include flex-centered;
+ position: absolute;
+ width: 20vw;
+ height: 10vh;
+ left: 40vw;
+ color: var(--paragraph-color);
+ z-index: 11;
+ border: var(--paragraph-color) 2px solid;
+}
+
+.menu-label-close:hover,
+.menu-label:hover {
+ border: 2px solid;
+ border-color: var(--next-stage-hover-color);
+}
+
+#start-game-button {
+ top: 20dvh;
+}
+
+#game-rules-button {
+ top: 35dvh;
+}
+
+#about-game-button {
+ top: 50dvh;
+}
+
+.game__info--start-game {
+ position: absolute;
+ width: 100%;
+ height: 100%;
+ background-color: var(--info-container-color);
+ z-index: 10;
+ top: 0;
+}
+
+#start-game:checked ~ .game__info--start-game {
+ display: none;
+}
+
+#start-game-button:before {
+ content: "Ball shooting game";
+ position: absolute;
+ bottom: 130%;
+ font-size: 2rem;
+ width: 199%;
+ font-weight: bolder;
+ text-align: center;
+}
+
+.game__info--rules,
+.game__info--about-game {
+ display: none;
+}
+
+#game-rules:checked ~ .game__info--rules,
+#about-game:checked ~ .game__info--about-game {
+ @include flex-centered;
+ position: absolute;
+ width: 100%;
+ height: 100%;
+ background-color: var(--info-container-color);
+ z-index: 11;
+ top: 0;
+}
+
+.game__info--about-game p,
+.game__info--rules p {
+ max-width: 50ch;
+ margin-top: 1rem;
+}
+
+.menu-label-close {
+ border: solid white 2px;
+ width: 30px;
+ height: 30px;
+ display: none;
+}
+
+#game-rules:checked ~ #game-rules-close,
+#about-game:checked ~ #about-game-close {
+ @include flex-centered;
+ position: absolute;
+ width: 10vw;
+ bottom: 5vh;
+ left: 45vw;
+ z-index: 12;
+ color: var(--paragraph-color);
+}
+
+.game__info--rules p:last-child {
+ font-style: italic;
+ font-size: 1rem;
+ width: 46ch;
+}
+
+.ball-one {
+ animation-delay: 8s;
+}
+
+.ball-two {
+ animation-delay: 8.5s;
+}
+
+.ball-three {
+ animation-delay: 9s;
+}
+
+.ball-four {
+ animation-delay: 9.5s;
+}
+
+.ball-five {
+ animation-delay: 10s;
+}
+
+.ball-six {
+ animation-delay: 10.5s;
+}
+
+.ball-seven {
+ animation-delay: 11s;
+}
+
+.ball-eight {
+ animation-delay: 11.5s;
+}
+
+.ball-nine {
+ animation-delay: 12s;
+}
+
+.ball-ten {
+ animation-delay: 12.5s;
+}
+
+.ball-eleven {
+ animation-delay: 13s;
+}
diff --git a/styles/_stage-three.scss b/styles/_stage-three.scss
new file mode 100644
index 0000000..9f09a27
--- /dev/null
+++ b/styles/_stage-three.scss
@@ -0,0 +1,66 @@
+.stage__three--body {
+ @include main-background(var(--stage-three-body-linear-gradient));
+ top: 0;
+}
+
+.game__info--game-over-stage-three {
+ @include game-over-screen(23s);
+}
+
+.ball-container {
+ .ball-one.stage-three {
+ animation-delay: 8s;
+ }
+
+ .ball-two.stage-three {
+ animation-delay: 8.5s;
+ }
+
+ .ball-three.stage-three {
+ animation-delay: 9s;
+ }
+
+ .ball-four.stage-three {
+ animation-delay: 9.5s;
+ }
+
+ .ball-five.stage-three {
+ animation-delay: 10s;
+ }
+
+ .ball-six.stage-three {
+ animation-delay: 10.5s;
+ }
+
+ .ball-seven.stage-three {
+ animation-delay: 11s;
+ }
+
+ .ball-eight.stage-three {
+ animation-delay: 11.5s;
+ }
+
+ .ball-nine.stage-three {
+ animation-delay: 12s;
+ }
+
+ .ball-ten.stage-three {
+ animation-delay: 12.5s;
+ }
+
+ .ball-eleven.stage-three {
+ animation-delay: 13s;
+ }
+}
+
+input.stage-three:nth-child(odd) {
+ animation: fall-side-to-side 5s reverse;
+ animation-delay: 7s;
+ animation-iteration-count: infinite;
+}
+
+input.stage-three:nth-child(even) {
+ animation: fall-side-to-side 5s linear;
+ animation-delay: 7s;
+ animation-iteration-count: infinite;
+}
diff --git a/styles/_stage-two.scss b/styles/_stage-two.scss
new file mode 100644
index 0000000..bae90d2
--- /dev/null
+++ b/styles/_stage-two.scss
@@ -0,0 +1,57 @@
+.stage__two--body {
+ @include main-background(var(--stage-two-body-linear-gradient));
+}
+
+.game__info--game-over-stage-two {
+ @include game-over-screen(23s);
+}
+
+.ball-one.stage-two {
+ animation-delay: 8s;
+}
+
+.ball-two.stage-two {
+ animation-delay: 8.5s;
+}
+
+.ball-three.stage-two {
+ animation-delay: 9s;
+}
+
+.ball-four.stage-two {
+ animation-delay: 9.5s;
+}
+
+.ball-five.stage-two {
+ animation-delay: 10s;
+}
+
+.ball-six.stage-two {
+ animation-delay: 10.5s;
+}
+
+.ball-seven.stage-two {
+ animation-delay: 11s;
+}
+
+.ball-eight.stage-two {
+ animation-delay: 11.5s;
+}
+
+.ball-nine.stage-two {
+ animation-delay: 12s;
+}
+
+.ball-ten.stage-two {
+ animation-delay: 12.5s;
+}
+
+.ball-eleven.stage-two {
+ animation-delay: 13s;
+}
+
+input.stage-two {
+ animation: fall-side-to-side 5s linear;
+ animation-delay: 7s;
+ animation-iteration-count: infinite;
+}
diff --git a/styles/_styles.scss b/styles/_styles.scss
new file mode 100644
index 0000000..f8b06a9
--- /dev/null
+++ b/styles/_styles.scss
@@ -0,0 +1,114 @@
+*,
+*::before,
+*::after {
+ cursor: crosshair;
+ margin: 0;
+ font-family: sans-serif;
+ box-sizing: border-box;
+}
+
+h1,
+h2 {
+ color: var(--header-color);
+}
+
+h2 {
+ font-size: 2rem;
+}
+
+p {
+ font-size: 1.3rem;
+ color: var(--paragraph-color);
+}
+
+body {
+ overflow: hidden;
+ height: 100dvh;
+}
+
+.ball-container {
+ display: flex;
+ justify-content: space-evenly;
+ flex-wrap: wrap;
+ position: relative;
+ bottom: 100px;
+}
+
+input {
+ appearance: none;
+ content: url(https://www.pngall.com/wp-content/uploads/5/Red-Ball-Transparent.png);
+ height: 60px;
+ width: 70px;
+ animation: fall 5s linear;
+ animation-delay: 7s;
+ animation-iteration-count: infinite;
+}
+
+input:checked {
+ opacity: 0;
+}
+
+.game__info--game-over {
+ display: none;
+}
+
+.game__info--win-screen {
+ height: 115dvh;
+ width: 100dvw;
+ background-color: var(--info-container-color);
+ @include flex-centered;
+ position: absolute;
+ top: -110dvh;
+ transition: 200ms;
+ z-index: 5;
+}
+
+input:checked
+ + input:checked
+ + input:checked
+ + input:checked
+ + input:checked
+ + input:checked
+ + input:checked
+ + input:checked
+ + input:checked
+ + input:checked
+ + input:checked
+ ~ .game__info--win-screen {
+ top: 9.7dvh;
+}
+
+.game__info--next-stage {
+ height: 50px;
+ width: 180px;
+ background-color: var(--next-stage-color);
+ font-size: 1rem;
+ border-radius: 20px;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ margin-top: 1rem;
+}
+.game__info--next-stage a {
+ text-decoration: none;
+ color: var(--next-stage-anchor-color);
+ font-weight: bold;
+}
+
+.game__info--next-stage:hover {
+ background-color: var(--next-stage-hover-color);
+}
+
+.game__info--container-stage-two-four {
+ height: 100%;
+ width: 100dvw;
+ background-color: var(--info-container-color);
+ @include flex-centered;
+ animation: info-box 1s linear 5s 1 normal both;
+ position: absolute;
+ top: 0;
+}
+
+.game__info--container {
+ @include flex-centered;
+}
diff --git a/styles/index.css b/styles/index.css
new file mode 100644
index 0000000..3069f0b
--- /dev/null
+++ b/styles/index.css
@@ -0,0 +1,638 @@
+:root {
+ --header-color: rgb(240, 248, 255);
+ --paragraph-color: rgb(245, 245, 245);
+ --stage-one-body-linear-gradient: linear-gradient(
+ 0deg,
+ rgba(2, 0, 36, 1) 0%,
+ rgba(0, 152, 194, 1) 100%
+ );
+ --stage-two-body-linear-gradient: linear-gradient(
+ 0deg,
+ rgb(17, 17, 0) 0%,
+ rgb(229, 255, 0) 100%
+ );
+ --stage-three-body-linear-gradient: linear-gradient(
+ 0deg,
+ rgb(0, 0, 0) 0%,
+ rgb(88, 235, 2) 100%
+ );
+ --stage-four-body-linear-gradient: linear-gradient(
+ 0deg,
+ rgb(130, 0, 134),
+ rgb(8, 0, 20)
+ );
+ --info-container-color: rgba(15, 12, 32);
+ --next-stage-hover-color: rgba(255, 0, 0);
+ --next-stage-color: rgba(255, 255, 255);
+ --next-stage-anchor-color: rgb(0, 0, 0);
+}
+
+*,
+*::before,
+*::after {
+ cursor: crosshair;
+ margin: 0;
+ font-family: sans-serif;
+ box-sizing: border-box;
+}
+
+h1,
+h2 {
+ color: var(--header-color);
+}
+
+h2 {
+ font-size: 2rem;
+}
+
+p {
+ font-size: 1.3rem;
+ color: var(--paragraph-color);
+}
+
+body {
+ overflow: hidden;
+ height: 100dvh;
+}
+
+.ball-container {
+ display: flex;
+ justify-content: space-evenly;
+ flex-wrap: wrap;
+ position: relative;
+ bottom: 100px;
+}
+
+input {
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ appearance: none;
+ content: url(https://www.pngall.com/wp-content/uploads/5/Red-Ball-Transparent.png);
+ height: 60px;
+ width: 70px;
+ animation: fall 5s linear;
+ animation-delay: 7s;
+ animation-iteration-count: infinite;
+}
+
+input:checked {
+ opacity: 0;
+}
+
+.game__info--game-over {
+ display: none;
+}
+
+.game__info--win-screen {
+ height: 115dvh;
+ width: 100dvw;
+ background-color: var(--info-container-color);
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ flex-direction: column;
+ position: absolute;
+ top: -110dvh;
+ transition: 200ms;
+ z-index: 5;
+}
+
+input:checked + input:checked + input:checked + input:checked + input:checked + input:checked + input:checked + input:checked + input:checked + input:checked + input:checked ~ .game__info--win-screen {
+ top: 9.7dvh;
+}
+
+.game__info--next-stage {
+ height: 50px;
+ width: 180px;
+ background-color: var(--next-stage-color);
+ font-size: 1rem;
+ border-radius: 20px;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ margin-top: 1rem;
+}
+
+.game__info--next-stage a {
+ text-decoration: none;
+ color: var(--next-stage-anchor-color);
+ font-weight: bold;
+}
+
+.game__info--next-stage:hover {
+ background-color: var(--next-stage-hover-color);
+}
+
+.game__info--container-stage-two-four {
+ height: 100%;
+ width: 100dvw;
+ background-color: var(--info-container-color);
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ flex-direction: column;
+ animation: info-box 1s linear 5s 1 normal both;
+ position: absolute;
+ top: 0;
+}
+
+.game__info--container {
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ flex-direction: column;
+}
+
+.stage__one--body {
+ background: var(--stage-one-body-linear-gradient) fixed;
+}
+
+#start-game:checked ~ .game__info--container {
+ height: 100%;
+ width: 100dvw;
+ top: 0;
+ background-color: var(--info-container-color);
+ animation: info-box 1s linear 5s 1 normal both;
+ position: absolute;
+}
+
+#start-game:checked ~ .game__info--game-over {
+ height: 100vh;
+ width: 100vw;
+ background-color: var(--info-container-color);
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ flex-direction: column;
+ position: absolute;
+ bottom: 0vh;
+ animation: game-over-animation 0.6s cubic-bezier(0.23, 1, 0.32, 1) 25s both;
+ top: 200vh;
+ margin-top: 500px;
+}
+
+#start-game,
+#game-rules,
+#about-game {
+ display: none;
+}
+
+#start-game:checked ~ .menu-label,
+#game-rules:checked ~ .menu-label,
+#about-game:checked ~ .menu-label {
+ display: none;
+}
+
+.menu-label {
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ flex-direction: column;
+ position: absolute;
+ width: 20vw;
+ height: 10vh;
+ left: 40vw;
+ color: var(--paragraph-color);
+ z-index: 11;
+ border: var(--paragraph-color) 2px solid;
+}
+
+.menu-label-close:hover,
+.menu-label:hover {
+ border: 2px solid;
+ border-color: var(--next-stage-hover-color);
+}
+
+#start-game-button {
+ top: 20dvh;
+}
+
+#game-rules-button {
+ top: 35dvh;
+}
+
+#about-game-button {
+ top: 50dvh;
+}
+
+.game__info--start-game {
+ position: absolute;
+ width: 100%;
+ height: 100%;
+ background-color: var(--info-container-color);
+ z-index: 10;
+ top: 0;
+}
+
+#start-game:checked ~ .game__info--start-game {
+ display: none;
+}
+
+#start-game-button:before {
+ content: "Ball shooting game";
+ position: absolute;
+ bottom: 130%;
+ font-size: 2rem;
+ width: 199%;
+ font-weight: bolder;
+ text-align: center;
+}
+
+.game__info--rules,
+.game__info--about-game {
+ display: none;
+}
+
+#game-rules:checked ~ .game__info--rules,
+#about-game:checked ~ .game__info--about-game {
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ flex-direction: column;
+ position: absolute;
+ width: 100%;
+ height: 100%;
+ background-color: var(--info-container-color);
+ z-index: 11;
+ top: 0;
+}
+
+.game__info--about-game p,
+.game__info--rules p {
+ max-width: 50ch;
+ margin-top: 1rem;
+}
+
+.menu-label-close {
+ border: solid white 2px;
+ width: 30px;
+ height: 30px;
+ display: none;
+}
+
+#game-rules:checked ~ #game-rules-close,
+#about-game:checked ~ #about-game-close {
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ flex-direction: column;
+ position: absolute;
+ width: 10vw;
+ bottom: 5vh;
+ left: 45vw;
+ z-index: 12;
+ color: var(--paragraph-color);
+}
+
+.game__info--rules p:last-child {
+ font-style: italic;
+ font-size: 1rem;
+ width: 46ch;
+}
+
+.ball-one {
+ animation-delay: 8s;
+}
+
+.ball-two {
+ animation-delay: 8.5s;
+}
+
+.ball-three {
+ animation-delay: 9s;
+}
+
+.ball-four {
+ animation-delay: 9.5s;
+}
+
+.ball-five {
+ animation-delay: 10s;
+}
+
+.ball-six {
+ animation-delay: 10.5s;
+}
+
+.ball-seven {
+ animation-delay: 11s;
+}
+
+.ball-eight {
+ animation-delay: 11.5s;
+}
+
+.ball-nine {
+ animation-delay: 12s;
+}
+
+.ball-ten {
+ animation-delay: 12.5s;
+}
+
+.ball-eleven {
+ animation-delay: 13s;
+}
+
+.stage__two--body {
+ background: var(--stage-two-body-linear-gradient) fixed;
+}
+
+.game__info--game-over-stage-two {
+ height: 100vh;
+ width: 100vw;
+ background-color: var(--info-container-color);
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ flex-direction: column;
+ position: absolute;
+ bottom: 0vh;
+ animation: game-over-animation 0.6s cubic-bezier(0.23, 1, 0.32, 1) 23s both;
+ top: 200vh;
+ margin-top: 500px;
+}
+
+.ball-one.stage-two {
+ animation-delay: 8s;
+}
+
+.ball-two.stage-two {
+ animation-delay: 8.5s;
+}
+
+.ball-three.stage-two {
+ animation-delay: 9s;
+}
+
+.ball-four.stage-two {
+ animation-delay: 9.5s;
+}
+
+.ball-five.stage-two {
+ animation-delay: 10s;
+}
+
+.ball-six.stage-two {
+ animation-delay: 10.5s;
+}
+
+.ball-seven.stage-two {
+ animation-delay: 11s;
+}
+
+.ball-eight.stage-two {
+ animation-delay: 11.5s;
+}
+
+.ball-nine.stage-two {
+ animation-delay: 12s;
+}
+
+.ball-ten.stage-two {
+ animation-delay: 12.5s;
+}
+
+.ball-eleven.stage-two {
+ animation-delay: 13s;
+}
+
+input.stage-two {
+ animation: fall-side-to-side 5s linear;
+ animation-delay: 7s;
+ animation-iteration-count: infinite;
+}
+
+.stage__three--body {
+ background: var(--stage-three-body-linear-gradient) fixed;
+ top: 0;
+}
+
+.game__info--game-over-stage-three {
+ height: 100vh;
+ width: 100vw;
+ background-color: var(--info-container-color);
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ flex-direction: column;
+ position: absolute;
+ bottom: 0vh;
+ animation: game-over-animation 0.6s cubic-bezier(0.23, 1, 0.32, 1) 23s both;
+ top: 200vh;
+ margin-top: 500px;
+}
+
+.ball-container .ball-one.stage-three {
+ animation-delay: 8s;
+}
+.ball-container .ball-two.stage-three {
+ animation-delay: 8.5s;
+}
+.ball-container .ball-three.stage-three {
+ animation-delay: 9s;
+}
+.ball-container .ball-four.stage-three {
+ animation-delay: 9.5s;
+}
+.ball-container .ball-five.stage-three {
+ animation-delay: 10s;
+}
+.ball-container .ball-six.stage-three {
+ animation-delay: 10.5s;
+}
+.ball-container .ball-seven.stage-three {
+ animation-delay: 11s;
+}
+.ball-container .ball-eight.stage-three {
+ animation-delay: 11.5s;
+}
+.ball-container .ball-nine.stage-three {
+ animation-delay: 12s;
+}
+.ball-container .ball-ten.stage-three {
+ animation-delay: 12.5s;
+}
+.ball-container .ball-eleven.stage-three {
+ animation-delay: 13s;
+}
+
+input.stage-three:nth-child(odd) {
+ animation: fall-side-to-side 5s reverse;
+ animation-delay: 7s;
+ animation-iteration-count: infinite;
+}
+
+input.stage-three:nth-child(even) {
+ animation: fall-side-to-side 5s linear;
+ animation-delay: 7s;
+ animation-iteration-count: infinite;
+}
+
+.stage__four--body {
+ background: var(--stage-four-body-linear-gradient) fixed;
+}
+
+.game__info--game-over-stage-four {
+ height: 100vh;
+ width: 100vw;
+ background-color: var(--info-container-color);
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ flex-direction: column;
+ position: absolute;
+ bottom: 0vh;
+ animation: game-over-animation 0.6s cubic-bezier(0.23, 1, 0.32, 1) 27s both;
+ top: 200vh;
+ margin-top: 500px;
+}
+
+input.stage-four:nth-child(odd) {
+ animation-name: fall-odd;
+ animation-duration: 5s;
+ animation-timing-function: ease-out;
+ animation-fill-mode: forwards;
+ animation-iteration-count: infinite;
+}
+
+input.stage-four:nth-child(even) {
+ animation-name: fall-even;
+ animation-duration: 5s;
+ animation-timing-function: ease-out;
+ animation-fill-mode: forwards;
+ animation-direction: reverse;
+ animation-iteration-count: infinite;
+}
+
+.ball-one.stage-four {
+ animation-delay: 8s;
+}
+
+.ball-two.stage-four {
+ animation-delay: 8.5s;
+}
+
+.ball-three.stage-four {
+ animation-delay: 9s;
+}
+
+.ball-four.stage-four {
+ animation-delay: 9.5s;
+}
+
+.ball-five.stage-four {
+ animation-delay: 10s;
+}
+
+.ball-six.stage-four {
+ animation-delay: 10.5s;
+}
+
+.ball-seven.stage-four {
+ animation-delay: 11s;
+}
+
+.ball-eight.stage-four {
+ animation-delay: 11.5s;
+}
+
+.ball-nine.stage-four {
+ animation-delay: 12s;
+}
+
+.ball-ten.stage-four {
+ animation-delay: 12.5s;
+}
+
+.ball-eleven.stage-four {
+ animation-delay: 13s;
+}
+
+@keyframes info-box {
+ 0% {
+ opacity: 1;
+ transform: translateX(0);
+ }
+ 100% {
+ opacity: 0;
+ transform: translateX(5000px);
+ }
+}
+@keyframes fall {
+ 0% {
+ transform: translateY(0px);
+ }
+ 100% {
+ transform: translateY(1000px);
+ }
+}
+@keyframes game-over-animation {
+ 0% {
+ transform: translateY(-1000px) scaleY(2.5) scaleX(0.2);
+ transform-origin: 50% 0%;
+ filter: blur(40px);
+ opacity: 0;
+ top: 200dvh;
+ margin-top: 500px;
+ }
+ 100% {
+ transform: translateY(0) scaleY(1) scaleX(1);
+ transform-origin: 50% 50%;
+ filter: blur(0);
+ opacity: 1;
+ top: 0dvh;
+ margin-top: 0px;
+ }
+}
+@keyframes fall-side-to-side {
+ 0% {
+ transform: translateY(0px) translateX(0px);
+ }
+ 25% {
+ transform: translateY(250px) translateX(-50px);
+ }
+ 50% {
+ transform: translateY(500px) translateX(30px);
+ }
+ 75% {
+ transform: translateY(750px) translateX(-170px);
+ }
+ 100% {
+ transform: translateY(1000px) translateX(0px);
+ }
+}
+@keyframes fall-odd {
+ 0% {
+ transform: translateY(0px) translateX(0px);
+ }
+ 25% {
+ transform: translateY(250px) translateX(150px);
+ }
+ 50% {
+ transform: translateY(450px) translateX(-100px);
+ }
+ 75% {
+ transform: translateY(400px) translateX(200px);
+ }
+ 100% {
+ transform: translateY(1000px) translateX(150px);
+ }
+}
+@keyframes fall-even {
+ 0% {
+ transform: translateY(0px) translateX(-50px);
+ }
+ 25% {
+ transform: translateY(300px) translateX(100px);
+ }
+ 50% {
+ transform: translateY(550px) translateX(200px);
+ }
+ 75% {
+ transform: translateY(450px) translateX(-200px);
+ }
+ 100% {
+ transform: translateY(1000px) translateX(-10px);
+ }
+}/*# sourceMappingURL=index.css.map */
\ No newline at end of file
diff --git a/styles/index.css.map b/styles/index.css.map
new file mode 100644
index 0000000..7b99590
--- /dev/null
+++ b/styles/index.css.map
@@ -0,0 +1 @@
+{"version":3,"sources":["_colors.scss","index.css","_styles.scss","_mixins.scss","_stage-one.scss","_stage-two.scss","_stage-three.scss","_stage-four.scss","_key-frames.scss"],"names":[],"mappings":"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","file":"index.css"}
\ No newline at end of file
diff --git a/styles/index.scss b/styles/index.scss
new file mode 100644
index 0000000..baa21d4
--- /dev/null
+++ b/styles/index.scss
@@ -0,0 +1,8 @@
+@import "colors";
+@import "mixins";
+@import "styles";
+@import "stage-one";
+@import "stage-two";
+@import "stage-three";
+@import "stage-four";
+@import "key-frames";