-
-
-
- RD
-
- rdjarbeng
-
-
-
-
-
-
-
-
- Nat
-
- Nyakotey
-
-
-
-
-
-
-
-
-
-
- Back to clock
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/clock.js b/clock.js
deleted file mode 100644
index 3f78d692..00000000
--- a/clock.js
+++ /dev/null
@@ -1,30 +0,0 @@
-export default class Clock {
- constructor() {
- this.setEndDate()
- this.countDown();
- }
- setEndDate() {
- this.endDate = new Date(`Jan 1, ${new Date().getFullYear() + 1} 00:00:00`)
- //account for leap year
- this.dayLength = ((this.endDate.getFullYear() % 4 != 0) ? 365 : 366)
- }
- countDown() {
- // Set the date we're counting down to
- let countDownDate = this.endDate.getTime();
- let now = new Date().getTime();
- var distance = countDownDate - now;
- // account for case of the countdown being reached, reset
- if (distance >= 0) {
- // Time calculations for days, hours, minutes and seconds
- this.days = Math.floor(distance / (1000 * 60 * 60 * 24));
- this.hours = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
- this.minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60));
- this.seconds = Math.floor((distance % (1000 * 60)) / 1000);
- } else {
- this.setEndDate()
- }
- }
- countDays() {
- return this.dayLength - this.days
- }
-}
\ No newline at end of file
diff --git a/css/authors.css b/css/authors.css
new file mode 100644
index 00000000..b9c88b0c
--- /dev/null
+++ b/css/authors.css
@@ -0,0 +1,366 @@
+@import url("https://fonts.googleapis.com/css2?family=Nunito:wght@500&display=swap");
+/* basic reset */
+*,
+*::before,
+*::after {
+ box-sizing: border-box;
+ margin: 0;
+ padding: 0;
+ user-select: none;
+}
+
+/* mode variables */
+:root{
+ --color-muted: rgba(255, 255, 255, 0.15);
+ --color-banner: #7b68ee;
+ --timer-grad: rgba(255, 255, 255, 0.5);
+ --bg-url: url("../img/bg.svg");
+ --bg-sidebar: var(--color-banner);
+ --bg-modeToggle: rgba(0, 0, 0, 0.2);
+ --bg-sidebar: #7b68ee;
+ --bg-sidebarListHover: rgba(0, 0, 0, 0.1);
+ --color-sidebar: white;
+}
+.dark{
+ --bg-color: #1b182c;
+ --color-text: white;
+ --bg-timer: #474650;
+}
+.light {
+ --bg-color: #dbdbdb;
+ --color-muted: rgba(255, 255, 255, 0.3);
+ --color-text: var(--color-banner);
+ --bg-timer: whitesmoke;
+ --timer-grad: rgba(255, 255, 255, 0.8);
+ --timer-box: 0 0 5px 1px rgba(0, 0, 0, 0.1);
+}
+body {
+ background: var(--bg-url) var(--bg-color) center no-repeat fixed;
+ background-size: cover;
+ background-blend-mode: overlay;
+ transition: background-color 0.2s ease, color 0.2s ease;
+ color: var(--color-text);
+ font-family: "Nunito", sans-serif;
+ width: 100vw;
+ height: 100vh;
+}
+.header{
+ position: fixed;
+ top: 0;
+ background: var(--color-banner);
+ width: 100vw;
+ height: 10vh;
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ z-index: 1;
+}
+.logo{
+ display: inline-flex;
+ gap: 1rem;
+ height: 7vh;
+}
+.logo-name{
+ text-align: center;
+ font-size: 5vh;
+ color: var(--color-sidebar);
+ /* margin-left: 1rem; incase logo gap doesn't work on mobile browsers */
+}
+.logo-ico img{
+ width: 7vh;
+ height: 7vh;
+ border-radius: 0.9rem;
+}
+.sidebar{
+ position: fixed;
+ top: 0;
+ left: -100%;
+ z-index: 3;
+ width: 65vmin;
+ height: 100vh;
+ background: var(--bg-sidebar);
+ color: var(--color-sidebar);
+ box-shadow: var(--timer-box);
+ overflow: hidden;
+ transition: left .02s ease-in;
+ backdrop-filter: blur(1px);
+ box-shadow: 0 1px 5px 1px rgba(0, 0, 0, 0.2);
+}
+.sidebar-content{
+ display: flex;
+ justify-content: start;
+ align-items: flex-start;
+ flex-direction: column;
+ width: 100%;
+ height: 100%;
+ margin-left: 5vmin;
+}
+.sidebar-show{
+ left: 0%;
+}
+.sidebar-hide{
+ left: -100%;
+}
+.nav,.sidebar-close{
+ display: inline-flex;
+ align-items: center;
+ justify-content: center;
+ padding: 0.3rem 0.4rem;
+ border-radius: 1vmin;
+ border: 0.13rem solid white;
+}
+.sidebar-close{
+ right: 0%;
+ position: absolute;
+}
+.nav{
+ width: 6vh;
+ height: 6vh;
+ color: var(--color-sidebar);
+ margin-left: 5vmin;
+}
+.brand{
+ display: flex;
+ width: 100%;
+ margin: 3vmin 0 3vmin 4vmin;
+}
+.brand-name{
+ align-self: center;
+ font-size: 1.3em;
+ margin-left: 2vmin;
+}
+.brand-logo img{
+ width: 13vmin;
+ height: 13vmin;
+ border-radius: 5vmin;
+}
+.opt-group{
+ color: rgba(255, 255, 255, 0.575);
+ font-size: 0.7rem;
+ align-self: center;
+ width: 90%;
+ margin: 5vmin 0 1vmin 0vmin;
+}
+hr{color:rgba(255, 255, 255, 0.2); width: 85%;}
+.sidebar-list{
+ width: 90%;
+}
+.sidebar-list-items{
+ padding: 2.5vmin 0vmin 2.5vmin 4vmin;
+ border-radius: 2.5vmin;
+ margin: 0.5rem auto;
+}
+.sidebar-list-items:hover{
+ background: var(--bg-sidebarListHover);
+}
+.pick-color{
+ justify-content: center;
+ align-items: flex-end;
+ gap: 0.4rem;
+ display: none;
+ width: 90%;
+ margin: 0.7rem;
+}
+.pick-color-ico{
+ width: 1.8rem;
+ height: 1.8rem;
+ border-radius: 50%;
+ box-shadow: 0px 0px 1px 0px rgba(0, 0, 0, 0.15);
+ border: white solid 2px;
+}
+.pick-color-ico:nth-child(1){
+ background: #fe2164;
+ outline: #fe2164 solid 2px;
+}
+.pick-color-ico:nth-child(6){
+ background: #7b68ee;
+ outline: #7b68ee solid 2px;
+}
+.pick-color-ico:nth-child(4){
+ background: #1cb65d;
+ outline: #1cb65d solid 2px;
+}
+.pick-color-ico:nth-child(5){
+ background: #2f8bfc;
+ outline: #2f8bfc solid 2px;
+}
+.pick-color-ico:nth-child(3){
+ background: #ffc000;
+ outline: #ffc000 solid 2px;
+}
+.pick-color-ico:nth-child(2){
+ background: #e685b5;
+ outline: #e685b5 solid 2px;
+}
+.show-color{
+ display: inline-flex;
+}
+
+main{
+ width: 100vw;
+ height: 100vh;
+}
+.container {
+ height: 100vh;
+ width: 100vw;
+ display: flex;
+ align-items: center;
+ flex-direction: column;
+ gap: 2.5em;
+ overflow-x: hidden;
+ padding-top: 13vh;
+}
+
+.mode-info {
+ background: var(--bg-color);
+ border-radius: 0.3rem;
+ color: var(--color-text);
+ padding: 0.2rem 0.8rem;
+ -webkit-animation: slide-in 0.2s ease-in forwards, fade-out 2s ease 0.9s forwards;
+ animation: slide-in 0.2s ease-in forwards, fade-out 2s ease 0.9s forwards;
+ position: fixed;
+ left: 50%;
+ top: -10rem;
+ transform: translateX(-50%);
+ z-index: 100;
+}
+
+.light .mode-info {
+ background: aliceblue;
+}
+@keyframes slide-in {
+ to {
+ top: 2rem;
+ }
+}
+@keyframes fade-out {
+ to {
+ opacity: 0;
+ }
+}
+a{
+ text-decoration: none; color: inherit;
+}
+
+.toggleMode {
+ font-size: 1.4em;
+ right: 0.8rem;
+ top: 0.3rem;
+ width: 1.5em;
+ height: 1.5em;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ border-radius: 50%;
+ background: var(--bg-modeToggle);
+ color: #f2e7ac;
+ z-index: 1;
+ margin-right: 5vmin;
+}
+
+.banner-row {
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ font-weight: bold;
+ font-size: 5vmin;
+ text-align: center;
+ width: 100%;
+}
+
+.banner {
+ padding: 0.5em 1rem;
+ border-radius: 0.1em;
+ min-width: 80vmin;
+ color: var(--color-text);
+ border-bottom: 0.5rem solid var(--color-banner);
+}
+.day{
+ font-size: 1.7em;
+ color: var(--color-text);
+}
+
+.clock-row {
+ position: relative;
+ display: flex;
+ flex-direction: column;
+ text-align: center;
+ width: 100vw;
+ align-items: center;
+ justify-content: center;
+ border-radius: 0.2em;
+ padding: 10px;
+ gap: 5vmin;
+}
+
+.timer{
+ font-size: 1rem;
+ position: relative;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ width: 36vmin;height: 35vmin;
+ border: 2px solid rgba(255, 255, 255, 0.2);
+ border-radius: .7em;
+ background: linear-gradient(90deg,var(--color-muted) 50%, var(--timer-grad) 50%);
+ margin-bottom: 1rem;
+ backdrop-filter: blur(1px);
+ color: var(--color-text);
+}
+.light .timer{
+ border: 2px solid rgba(255, 255, 255, 0.7);
+ box-shadow: var(--timer-box);
+}
+.timer-num{
+ font-size: 13vmin;
+}
+.timer-text{
+ content: "";
+ position: absolute;
+ bottom: -1em;
+ background: var(--bg-timer);
+ border-radius: 0.3em;
+ padding: .5em;
+ text-align: center;
+ width: 18vmin;
+ overflow: clip;
+ transition: background-color 0.2s ease;
+}
+.light .timer-text{
+ box-shadow: var(--timer-box);
+}
+/* desktop */
+@media screen and (min-width: 750px) and (orientation: landscape) {
+ body {
+ overflow-y: hidden;
+ }
+ .container{
+ gap: 4em;
+ }
+ .banner {
+ width: 21em;
+ }
+ .clock-row {
+ font-size: 25vmin;
+ flex-direction: row;
+ gap: 10vmin;
+ }
+}
+/* mobile and small screens */
+@media screen and (max-width: 427px) {
+ .container{
+ gap: 1.6em;
+ }
+ .logo-name{
+ display: none;
+ }
+ .timer-text{
+ font-size: 0.75rem;
+ }
+ .sidebar{
+ width: 75vmin;
+ }
+ .new-item{
+ bottom: 10vh;
+ }
+}
\ No newline at end of file
diff --git a/css/countdown-list.css b/css/countdown-list.css
new file mode 100644
index 00000000..01f74b90
--- /dev/null
+++ b/css/countdown-list.css
@@ -0,0 +1,501 @@
+@import url("https://fonts.googleapis.com/css2?family=Nunito:wght@500&display=swap");
+/* basic reset */
+*,
+*::before,
+*::after {
+ box-sizing: border-box;
+ margin: 0;
+ padding: 0;
+ user-select: none;
+}
+
+/* mode variables */
+:root{
+ --color-muted: rgba(255, 255, 255, 0.15);
+ --color-banner: #7b68ee;
+ --timer-grad: rgba(255, 255, 255, 0.5);
+ --bg-url: url("../img/bg.svg");
+ --bg-sidebar: var(--color-banner);
+ --bg-modeToggle: rgba(0, 0, 0, 0.2);
+ --bg-sidebar: #7b68ee;
+ --bg-sidebarListHover: rgba(0, 0, 0, 0.1);
+ --color-sidebar: white;
+ --color-cdList: white;
+ --bg-cdListHover: #303041;
+ overflow-x: hidden;
+}
+.dark{
+ --bg-color: #1b182c;
+ --color-text: white;
+ --bg-timer: #474650;
+ --bg-cdList: #3b3b50;
+}
+.light {
+ --bg-color: #dbdbdb;
+ --color-muted: rgba(255, 255, 255, 0.3);
+ --color-text: var(--color-banner);
+ --bg-timer: whitesmoke;
+ --timer-grad: rgba(255, 255, 255, 0.8);
+ --timer-box: 0 0 5px 1px rgba(0, 0, 0, 0.1);
+ --color-cdList: var(--color-banner);
+ --bg-cdList: #f0f0f0;
+ --bg-cdListHover: #ffffff;
+}
+/* hide the custom clock at start */
+#customDisplay{
+ display: none;
+}
+body {
+ background: var(--bg-url) var(--bg-color) center no-repeat fixed;
+ background-size: cover;
+ background-blend-mode: overlay;
+ transition: background-color 0.2s ease, color 0.2s ease;
+ color: var(--color-text);
+ font-family: "Nunito", sans-serif;
+ width: 100vw;
+ height: 100vh;
+}
+main{
+ width: 100vw;
+ height: 100%;
+ padding-top: 10vh;
+}
+.container {
+ height: 100%;
+ width: 100vw;
+ display: flex;
+ align-items: center;
+ flex-direction: column;
+ gap: 2em;
+ overflow: hidden;
+ position: relative;
+}
+
+.mode-info {
+ background: var(--bg-color);
+ border-radius: 0.3rem;
+ color: var(--color-text);
+ padding: 0.2rem 0.8rem;
+ -webkit-animation: slide-in 0.2s ease-in forwards, fade-out 2s ease 0.9s forwards;
+ animation: slide-in 0.2s ease-in forwards, fade-out 2s ease 0.9s forwards;
+ position: fixed;
+ left: 50%;
+ top: -10rem;
+ transform: translateX(-50%);
+ z-index: 100;
+}
+
+.light .mode-info {
+ background: aliceblue;
+}
+
+@-webkit-keyframes slide-in {
+ to {
+ top: 2rem;
+ }
+}
+@keyframes slide-in {
+ to {
+ top: 2rem;
+ }
+}
+@-webkit-keyframes fade-out {
+ to {
+ opacity: 0;
+ }
+}
+@keyframes fade-out {
+ to {
+ opacity: 0;
+ }
+}
+
+
+.toggleMode {
+ font-size: 1.4em;
+ right: 0.8rem;
+ top: 0.3rem;
+ width: 1.5em;
+ height: 1.5em;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ border-radius: 50%;
+ background: var(--bg-modeToggle);
+ color: #f2e7ac;
+ z-index: 1;
+ margin-right: 5vmin;
+}
+
+.banner-row {
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ font-weight: bold;
+ font-size: 1.7rem;
+ text-align: center;
+ width: 100%;
+}
+
+.banner {
+ padding: 0.5em 1rem;
+ border-radius: 0.1em;
+ min-width: 80vmin;
+ color: var(--color-text);
+ border-bottom: 0.5rem solid var(--color-banner);
+}
+.banner-h2{
+ font-size: 0.7em;
+ font-weight: lighter;
+ letter-spacing: 0.3em;
+}
+.day{
+ font-size: 1.77em;
+}
+
+.clock-row {
+ position: sticky;
+ display: flex;
+ flex-direction: row;
+ text-align: center;
+ /* width: 100vw; */
+ align-items: center;
+ justify-content: center;
+ border-radius: 0.2em;
+ gap: 1rem;
+ display: none;
+ animation: expand 0.05s forwards ease;
+ animation-play-state: paused;
+}
+@keyframes expand {
+ from{
+ width: 0;
+ }
+ to{
+ width: 100vw;
+ }
+}
+
+.timer{
+ font-size: 1rem;
+ position: relative;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ width: 18vmin;
+ height: 18vmin;
+ border: 2px solid rgba(255, 255, 255, 0.2);
+ border-radius: .5rem;
+ background: linear-gradient(90deg,var(--color-muted) 50%, var(--timer-grad) 50%);
+ margin-bottom: 1rem;
+ backdrop-filter: blur(1px);
+}
+.light .timer{
+ border: 2px solid rgba(255, 255, 255, 0.7);
+ box-shadow: var(--timer-box);
+}
+.timer-num{
+ font-size: 9vmin;
+}
+.timer-text{
+ font-size: 2.5vmin;
+ content: "";
+ position: absolute;
+ bottom: -1em;
+ background: var(--bg-timer);
+ border-radius: 0.3em;
+ padding: .5em;
+ text-align: center;
+ width: 13vmin;
+ overflow: clip;
+ transition: background-color 0.2s ease;
+}
+.light .timer-text{
+ box-shadow: var(--timer-box);
+}
+.header{
+ position: fixed;
+ top: 0;
+ background: var(--color-banner);
+ width: 100vw;
+ height: 10vh;
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ z-index: 1;
+}
+.logo{
+ display: inline-flex;
+ gap: 1rem;
+ height: 7vh;
+}
+.logo-name{
+ text-align: center;
+ font-size: 2rem;
+ color: var(--color-sidebar);
+ /* margin-left: 1rem; incase logo gap doesn't work on mobile browsers */
+}
+.logo-ico img{
+ width: 7vh;
+ height: 7vh;
+ border-radius: 0.9rem;
+}
+.sidebar{
+ position: fixed;
+ top: 0;
+ left: -100%;
+ z-index: 3;
+ width: 65vmin;
+ height: 100vh;
+ background: var(--bg-sidebar);
+ color: var(--color-sidebar);
+ box-shadow: var(--timer-box);
+ overflow: hidden;
+ transition: left .02s ease-in;
+ backdrop-filter: blur(1px);
+ box-shadow: 0 1px 5px 1px rgba(0, 0, 0, 0.2);
+}
+.sidebar-content{
+ display: flex;
+ justify-content: start;
+ align-items: flex-start;
+ flex-direction: column;
+ width: 100%;
+ height: 100%;
+ margin-left: 5vmin;
+}
+.sidebar-show{
+ left: 0%;
+}
+.sidebar-hide{
+ left: -100%;
+}
+.nav,.sidebar-close{
+ display: inline-flex;
+ align-items: center;
+ justify-content: center;
+ padding: 0.3rem 0.4rem;
+ border-radius: 1vmin;
+ border: 0.13rem solid white;
+}
+.sidebar-close{
+ right: 0%;
+ position: absolute;
+}
+.nav{
+ width: 6vh;
+ height: 6vh;
+ color: var(--color-sidebar);
+ margin-left: 5vmin;
+}
+.brand{
+ display: flex;
+ width: 100%;
+ margin: 3vmin 0 3vmin 4vmin;
+}
+.brand-name{
+ align-self: center;
+ font-size: 1.3em;
+ margin-left: 2vmin;
+}
+.brand-logo img{
+ width: 13vmin;
+ height: 13vmin;
+ border-radius: 5vmin;
+}
+.opt-group{
+ color: rgba(255, 255, 255, 0.575);
+ font-size: 0.7rem;
+ align-self: center;
+ width: 90%;
+ margin: 5vmin 0 1vmin 0vmin;
+}
+hr{color:rgba(255, 255, 255, 0.2); width: 85%;}
+.sidebar-list{
+ width: 90%;
+}
+.sidebar-list-items{
+ padding: 2.5vmin 0vmin 2.5vmin 4vmin;
+ border-radius: 2.5vmin;
+ margin: 0.5rem auto;
+}
+.sidebar-list-items:hover{
+ background: var(--bg-sidebarListHover);
+}
+.pick-color{
+ justify-content: center;
+ align-items: flex-end;
+ gap: 0.4rem;
+ display: none;
+ width: 90%;
+ margin: 0.7rem;
+}
+.pick-color-ico{
+ width: 1.8rem;
+ height: 1.8rem;
+ border-radius: 50%;
+ box-shadow: 0px 0px 1px 0px rgba(0, 0, 0, 0.15);
+ border: white solid 2px;
+}
+.pick-color-ico:nth-child(1){
+ background: #fe2164;
+ outline: #fe2164 solid 2px;
+}
+.pick-color-ico:nth-child(6){
+ background: #7b68ee;
+ outline: #7b68ee solid 2px;
+}
+.pick-color-ico:nth-child(4){
+ background: #1cb65d;
+ outline: #1cb65d solid 2px;
+}
+.pick-color-ico:nth-child(5){
+ background: #2f8bfc;
+ outline: #2f8bfc solid 2px;
+}
+.pick-color-ico:nth-child(3){
+ background: #ffc000;
+ outline: #ffc000 solid 2px;
+}
+.pick-color-ico:nth-child(2){
+ background: #e685b5;
+ outline: #e685b5 solid 2px;
+}
+.show-color{
+ display: inline-flex;
+}
+
+.new-item{
+ position: fixed;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ width: 3.5rem;
+ height: 3.5rem;
+ border-radius: 50%;
+ background-color: var(--bg-newItem);
+ box-shadow: 0 0 5px 1px rgba(0, 0, 0, 0.1);
+ z-index: 2;
+ color: var(--color-text);
+ bottom: 6vh;
+ right: 50%;
+ transform: translateX(50%);
+}
+
+.list-container{
+ width: 100vw;
+ height: 100vh;
+ overflow-y: auto;
+ overflow-x: hidden;
+}
+.countdown-list{
+ display: flex;
+ width: 100vw;
+ flex-direction: column-reverse;
+ justify-content: center;
+ align-items: center;
+ gap: 0.9rem;
+ overflow-y: auto;
+ padding-bottom: 10vh;
+}
+.countdown-list-item:hover{
+background: var(--bg-cdListHover);
+box-shadow: inset 0 0 0vmin .4vmin var(--color-banner);
+/* border: solid .2vmin var(--color-banner); */
+}
+.countdown-list-item{
+ background: var(--bg-cdList);
+ color: var(--color-cdList);
+ border-radius: .3rem;
+ width: 80vmin;
+ display: grid;
+ grid-template-areas:
+ 'note options'
+ 'date options';
+grid-template-columns: 6fr 1fr;
+padding: 0 0 0 1rem;
+}
+.countdown-list-text{
+ grid-area: note;
+ font-size: 1.25rem;
+ padding: 1rem;
+ border-right: 1px solid rgba(0, 0, 0, 0.1);
+
+}
+.countdown-list-options{
+ grid-area: options;
+ display: flex;
+ width: 100%;
+ height: 100%;
+ justify-content: center;
+ align-items: center;
+ /* border: #1cb65d solid 2px; */
+ position: relative;
+}
+.countdown-list-date{
+ grid-area: date;
+ font-size: 0.65rem;
+ padding-left: 1rem;
+ padding-bottom: 0.2rem;
+ border-right: 1px solid rgba(0, 0, 0, 0.1);
+}
+
+.menu{
+ box-shadow: 0 0 5px 1px rgba(0, 0, 0, 0.2); ;
+ position: absolute;
+ right: 0;
+ top: 60%;
+ width: 30vmin;
+ border-radius: 0.2rem;
+ color: var(--color-text);background: var(--bg-timer);
+ z-index: 2;
+}
+.menu-opts{
+ padding: .2rem;
+ border-bottom: 1px solid rgba(0, 0, 0, 0.05);
+}
+.menu-opts:hover{
+ background:rgba(0, 0, 0, 0.1);
+}
+
+/* desktop */
+@media screen and (min-width: 750px) and (orientation: landscape) {
+ .banner {
+ width: 21em;
+ }
+ .clock-row {
+ /* font-size: 25vmin; */
+ gap: 2rem;
+ }
+ .clock-row::after,
+ .clock-row::before {
+ width: 1.8em;
+ height: 1.8em;
+ }
+ .new-item{
+ right: 10vmin;
+ bottom: 10vmin;
+ transform: translateX(0%);
+ }
+}
+/* mobile and small screens */
+@media screen and (max-width: 427px) {
+ .container{
+ gap: 1em;
+ }
+ .banner-row{
+ font-size: 1.3rem;
+ }
+ .logo-name{
+ display: none;
+ }
+ .sidebar{
+ width: 75vmin;
+ }
+.countdown-list-item{
+ grid-template-columns: 5.7fr 1.3fr;
+}
+.menu{
+ width: 38vmin;
+}
+}
\ No newline at end of file
diff --git a/css/form.css b/css/form.css
new file mode 100644
index 00000000..a1fac10f
--- /dev/null
+++ b/css/form.css
@@ -0,0 +1,122 @@
+/* generic */
+.pop-up-container{
+ position: absolute;
+ top: 0;
+ width: 100vw;
+ height: 100vh;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ backdrop-filter: blur(5px);
+ z-index: 10;
+}
+.pop-up-form{
+ position: relative;
+ width: 80vmin;
+ height: 80vmin;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ flex-flow: column nowrap;
+ background: #f0f0f0;
+ box-shadow: var(--timer-box);
+ border-radius: 0.2rem;
+ gap: 3vmin;
+ color: var(--color-banner);
+}
+.form-header{
+ position: absolute;
+ top: 5vmin;
+ font-size: 6vmin;
+ text-transform: uppercase;
+ font-weight: bold;
+}
+.close-form{
+ position: absolute;
+ bottom: 3vmin;
+}
+.close-form button{
+ padding: 2vmin 5vmin;
+ border-radius: .3rem;
+ border: solid 1px var(--color-banner);
+ color: var(--color-banner);
+}
+
+/* create countdown form */
+input[type="text"],input[type="datetime-local"]{
+ width: 65vmin;
+ padding: 3vmin;
+ border-radius: 2vmin;
+ border: var(--color-banner) solid 1px;
+ outline: none;
+}
+input[type="submit"],.reset button{
+ padding: 2vmin 6vmin;
+ border-radius: .3rem;
+ border: none;
+ background: var(--color-banner);
+ color: white;
+}
+input[type="submit"]:hover,.reset button:hover{
+ background: var(--color-banner);
+ filter:saturate(1.5);
+ box-shadow: inset 0px 0px 0px 2px var(--color-sidebar),
+ inset 0px 0px 0px 2px var(--color-sidebar),
+ 0 0 0 1px var(--color-banner);
+}
+input[type="submit"]:disabled{
+ background: grey;
+ color: white;
+ cursor: not-allowed;
+ /* border: 1px solid grey; */
+ box-shadow: inset 0px 0px 0px 2px var(--color-sidebar),
+ inset 0px 0px 0px 2px var(--color-sidebar),
+ 0 0 0 1px grey;
+}
+.form-sections{
+ display: inline-flex;
+ flex-direction: column;
+ gap: 2vmin;
+}
+
+/* upload image form */
+.bg-presets {
+ display: flex;
+ width: 82%;
+ align-items: center;
+ justify-content: center;
+ flex-flow: row wrap;
+ overflow: hidden;
+ gap: 1vmin;
+}
+.bg-presets-preview {
+ width: 16vmin;
+ height: 16vmin;
+}
+.bg-presets-preview img {
+ width: 16vmin;
+ height: 16vmin;
+}
+label[for="upload"] {
+ display: flex;
+ width: 100%;
+ height: 100%;
+ align-items: center;
+ justify-content: center;
+ background-color: rgba(0, 0, 0, 0.1);
+}
+label[for="upload-info"] {
+ font-size: 0.6rem;
+ font-style: italic;
+}
+input[type="file"] {
+ display: none;
+ appearance: none;
+}
+
+/* mobile and small screens */
+@media screen and (max-width: 427px) {
+ .pop-up-form {
+ height: 90vmin;
+ }
+}
\ No newline at end of file
diff --git a/css/styles.css b/css/styles.css
new file mode 100644
index 00000000..29f313d4
--- /dev/null
+++ b/css/styles.css
@@ -0,0 +1,448 @@
+@import url("https://fonts.googleapis.com/css2?family=Nunito:wght@500&display=swap");
+/* basic reset */
+*,
+*::before,
+*::after {
+ box-sizing: border-box;
+ margin: 0;
+ padding: 0;
+}
+
+/* mode variables */
+:root{
+ --color-muted: rgba(255, 255, 255, 0.15);
+ --color-banner: #7b68ee;
+ --timer-grad: rgba(255, 255, 255, 0.5);
+ --bg-url: url("../img/bg.svg");
+ --bg-sidebar: var(--color-banner);
+ --bg-modeToggle: rgba(0, 0, 0, 0.2);
+ --bg-sidebar: #7b68ee;
+ --bg-sidebarListHover: rgba(0, 0, 0, 0.1);
+ --color-sidebar: white;
+}
+.dark{
+ --bg-color: #1b182c;
+ --color-text: white;
+ --bg-timer: #474650;
+}
+.light {
+ --bg-color: #dbdbdb;
+ --color-muted: rgba(255, 255, 255, 0.3);
+ --color-text: var(--color-banner);
+ --bg-timer: whitesmoke;
+ --timer-grad: rgba(255, 255, 255, 0.8);
+ --timer-box: 0 0 5px 1px rgba(0, 0, 0, 0.1);
+}
+/* hide the custom clock at start */
+#customDisplay{
+ display: none;
+}
+body {
+ background: var(--bg-url) var(--bg-color) center no-repeat fixed;
+ background-size: cover;
+ background-blend-mode: overlay;
+ transition: background-color 0.2s ease, color 0.2s ease;
+ color: var(--color-text);
+ font-family: "Nunito", sans-serif;
+ width: 100vw;
+ height: 100vh;
+}
+main{
+ width: 100vw;
+ height: 100vh;
+ margin-top: 10vh;
+}
+.container {
+ height: 100vh;
+ width: 100vw;
+ display: flex;
+ align-items: center;
+ flex-direction: column;
+ gap: 2.5em;
+ overflow-x: hidden;
+}
+
+.mode-info {
+ background: var(--bg-color);
+ border-radius: 0.3rem;
+ color: var(--color-text);
+ padding: 0.2rem 0.8rem;
+ -webkit-animation: slide-in 0.2s ease-in forwards, fade-out 2s ease 0.9s forwards;
+ animation: slide-in 0.2s ease-in forwards, fade-out 2s ease 0.9s forwards;
+ position: fixed;
+ left: 50%;
+ top: -10rem;
+ transform: translateX(-50%);
+ z-index: 100;
+}
+
+.light .mode-info {
+ background: aliceblue;
+}
+
+.link{
+ color: var(--color-text);
+ text-decoration: none;
+}
+@-webkit-keyframes slide-in {
+ to {
+ top: 2rem;
+ }
+}
+@keyframes slide-in {
+ to {
+ top: 2rem;
+ }
+}
+@-webkit-keyframes fade-out {
+ to {
+ opacity: 0;
+ }
+}
+@keyframes fade-out {
+ to {
+ opacity: 0;
+ }
+}
+
+
+.toggleMode {
+ font-size: 1.4em;
+ right: 0.8rem;
+ top: 0.3rem;
+ width: 1.5em;
+ height: 1.5em;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ border-radius: 50%;
+ background: var(--bg-modeToggle);
+ color: #f2e7ac;
+ z-index: 1;
+ margin-right: 5vmin;
+}
+
+.banner-row {
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ font-weight: bold;
+ font-size: 1.7rem;
+ text-align: center;
+ width: 100%;
+}
+
+.banner {
+ padding: 0.5em 1rem;
+ border-radius: 0.1em;
+ min-width: 80vmin;
+ color: var(--color-text);
+ border-bottom: 0.5rem solid var(--color-banner);
+}
+.banner-h2{
+ font-size: 0.7em;
+ font-weight: lighter;
+ letter-spacing: 0.3em;
+}
+.day{
+ font-size: 1.77em;
+}
+
+.clock-row {
+ position: relative;
+ display: flex;
+ flex-direction: column;
+ text-align: center;
+ width: 100vw;
+ align-items: center;
+ justify-content: center;
+ border-radius: 0.2em;
+ padding: 10px;
+ gap: 1rem;
+}
+
+.timer{
+ font-size: 1rem;
+ position: relative;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ width: 25vmin;
+ height: 25vmin;
+ border: 2px solid rgba(255, 255, 255, 0.2);
+ border-radius: .7em;
+ background: linear-gradient(90deg,var(--color-muted) 50%, var(--timer-grad) 50%);
+ margin-bottom: 1rem;
+ backdrop-filter: blur(1px);
+}
+.light .timer{
+ border: 2px solid rgba(255, 255, 255, 0.7);
+ box-shadow: var(--timer-box);
+}
+.timer-num{
+ font-size: 13vmin;
+}
+.timer-text{
+ content: "";
+ position: absolute;
+ bottom: -1em;
+ background: var(--bg-timer);
+ border-radius: 0.3em;
+ padding: .5em;
+ text-align: center;
+ width: 18vmin;
+ overflow: clip;
+ transition: background-color 0.2s ease;
+}
+.light .timer-text{
+ box-shadow: var(--timer-box);
+}
+
+.controls-row {
+ display: flex;
+ flex-flow: column nowrap;
+ margin-bottom: 5vh;
+ gap: 1em;
+ width: 100vw;
+ height: 20vh;
+ align-items: center;
+ justify-content: center;
+}
+
+.author{
+ /* position: absolute;
+ bottom: 15px;
+ left: 20px; */
+ font-size: 0.7em;
+ color: var(--color-text)
+}
+
+.author:hover{
+ color: var(--color-banner)
+}
+.header{
+ position: fixed;
+ top: 0;
+ background: var(--color-banner);
+ width: 100vw;
+ height: 10vh;
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ z-index: 1;
+}
+.logo{
+ display: inline-flex;
+ gap: 1rem;
+ height: 7vh;
+}
+.logo-name{
+ text-align: center;
+ font-size: 5vh;
+ color: var(--color-sidebar);
+ /* margin-left: 1rem; incase logo gap doesn't work on mobile browsers */
+}
+.logo-ico img{
+ width: 7vh;
+ height: 7vh;
+ border-radius: 0.9rem;
+}
+.sidebar{
+ position: fixed;
+ top: 0;
+ left: -100%;
+ z-index: 3;
+ width: 65vmin;
+ height: 100vh;
+ background: var(--bg-sidebar);
+ color: var(--color-sidebar);
+ box-shadow: var(--timer-box);
+ overflow: hidden;
+ transition: left .02s ease-in;
+ backdrop-filter: blur(1px);
+ box-shadow: 0 1px 5px 1px rgba(0, 0, 0, 0.2);
+}
+.sidebar-content{
+ display: flex;
+ justify-content: start;
+ align-items: flex-start;
+ flex-direction: column;
+ width: 100%;
+ height: 100%;
+ margin-left: 5vmin;
+}
+.sidebar-show{
+ left: 0%;
+}
+.sidebar-hide{
+ left: -100%;
+}
+.nav,.sidebar-close{
+ display: inline-flex;
+ align-items: center;
+ justify-content: center;
+ padding: 0.3rem 0.4rem;
+ border-radius: 1vmin;
+ border: 0.13rem solid white;
+}
+.sidebar-close{
+ right: 0%;
+ position: absolute;
+}
+.nav{
+ width: 6vh;
+ height: 6vh;
+ color: var(--color-sidebar);
+ margin-left: 5vmin;
+}
+.brand{
+ display: flex;
+ width: 100%;
+ margin: 3vmin 0 3vmin 4vmin;
+}
+.brand-name{
+ align-self: center;
+ font-size: 1.3em;
+ margin-left: 2vmin;
+}
+.brand-logo img{
+ width: 13vmin;
+ height: 13vmin;
+ border-radius: 5vmin;
+}
+.opt-group{
+ color: rgba(255, 255, 255, 0.575);
+ font-size: 0.7rem;
+ align-self: center;
+ width: 90%;
+ margin: 5vmin 0 1vmin 0vmin;
+}
+hr{color:rgba(255, 255, 255, 0.2); width: 85%;}
+.sidebar-list{
+ width: 90%;
+}
+.sidebar-list-items{
+ padding: 2.5vmin 0vmin 2.5vmin 4vmin;
+ border-radius: 2.5vmin;
+ margin: 0.5rem auto;
+}
+.sidebar-list-items:hover{
+ background: var(--bg-sidebarListHover);
+}
+.pick-color{
+ justify-content: center;
+ align-items: flex-end;
+ gap: 0.4rem;
+ display: none;
+ width: 90%;
+ margin: 0.7rem;
+}
+.pick-color-ico{
+ width: 1.8rem;
+ height: 1.8rem;
+ border-radius: 50%;
+ box-shadow: 0px 0px 1px 0px rgba(0, 0, 0, 0.15);
+ border: white solid 2px;
+}
+.pick-color-ico:nth-child(1){
+ background: #fe2164;
+ outline: #fe2164 solid 2px;
+}
+.pick-color-ico:nth-child(6){
+ background: #7b68ee;
+ outline: #7b68ee solid 2px;
+}
+.pick-color-ico:nth-child(4){
+ background: #1cb65d;
+ outline: #1cb65d solid 2px;
+}
+.pick-color-ico:nth-child(5){
+ background: #2f8bfc;
+ outline: #2f8bfc solid 2px;
+}
+.pick-color-ico:nth-child(3){
+ background: #ffc000;
+ outline: #ffc000 solid 2px;
+}
+.pick-color-ico:nth-child(2){
+ background: #e685b5;
+ outline: #e685b5 solid 2px;
+}
+.show-color{
+ display: inline-flex;
+}
+
+.new-item{
+ position: fixed;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ width: 3.5rem;
+ height: 3.5rem;
+ border-radius: 50%;
+ right: 10vmin;
+ bottom: 10vmin;
+ background-color: var(--bg-newItem);
+ box-shadow: 0 0 5px 1px rgba(0, 0, 0, 0.1);
+ z-index: 2;
+ color: var(--color-text);
+}
+
+/* desktop */
+@media screen and (min-width: 750px) and (orientation: landscape) {
+ body {
+ overflow-y: hidden;
+ }
+ .container{
+ gap: 4em;
+ }
+ .banner {
+ width: 21em;
+ }
+ .clock-row {
+ font-size: 25vmin;
+ flex-direction: row;
+ gap: 2rem;
+ }
+ .clock-row::after,
+ .clock-row::before {
+ width: 1.8em;
+ height: 1.8em;
+ }
+ .controls-row {
+ flex-flow: row nowrap;
+ gap: 4em;
+ }
+ #sendWhatsappButton{
+ display: none;
+ }
+}
+/* mobile and small screens */
+@media screen and (max-width: 427px) {
+ .container{
+ gap: 1.6em;
+ }
+ .banner-row{
+ font-size: 1.3rem;
+ }
+ .logo-name{
+ display: none;
+ }
+ .timer-text{
+ font-size: 0.75rem;
+ }
+ .sidebar{
+ width: 75vmin;
+ }
+ .new-item{
+ bottom: 10vh;
+ }
+/* temporary fix */
+ .clock-row{
+ justify-content: normal;
+ }
+}
+
+.countdown-list-item:hover{
+ background-color: #130752;
+}
\ No newline at end of file
diff --git a/css/themes.css b/css/themes.css
new file mode 100644
index 00000000..3174aac9
--- /dev/null
+++ b/css/themes.css
@@ -0,0 +1,96 @@
+[data-theme="blue"] {
+ --color-banner: #2f8bfc;
+ --color-text: var(--color-banner);
+ --bg-modeToggle: rgba(0, 0, 0, 0.2);
+ --bg-sidebar: rgba(47, 139, 252, 0.95);
+ --bg-sidebarListHover: rgba(0, 0, 0, 0.1);
+ --bg-newItem: white;
+}
+.dark[data-theme="blue"] {
+ --bg-color: #182635;
+ --color-text: white;
+ --bg-timer: #56636f;
+ --bg-cdList:#3f4d61;
+ --bg-cdListHover: #384557;
+ --bg-newItem: var(--color-banner);
+}
+[data-theme="green"] {
+ --color-banner: #1cb65d;
+ --color-text: var(--color-banner);
+ --bg-modeToggle: rgba(0, 0, 0, 0.2);
+ --bg-sidebar: rgba(28, 182, 92, 0.95);
+ --bg-sidebarListHover: rgba(0, 0, 0, 0.1);
+ --bg-newItem: white;
+}
+.dark[data-theme="green"] {
+ --bg-color: #18351e;
+ --color-text: white;
+ --bg-timer: #506b51;
+ --bg-cdList:#3a644c;
+ --bg-cdListHover: #2a553d;
+ --bg-newItem: var(--color-banner);
+}
+[data-theme="red"] {
+ --color-banner: #fe2164;
+ --color-text: var(--color-banner);
+ --bg-modeToggle: rgba(0, 0, 0, 0.2);
+ --bg-sidebar: rgba(254, 33, 99, 0.95);
+ --bg-sidebarListHover: rgba(0, 0, 0, 0.1);
+ --bg-newItem: white;
+}
+.dark[data-theme="red"] {
+ --bg-color: #35181d;
+ --color-text: white;
+ --bg-timer: #826a6a;
+ --bg-cdList: #4e383d;
+ --bg-cdListHover: #462f35;
+ --bg-newItem: var(--color-banner);
+}
+[data-theme="purple"] {
+ --color-banner: #7b68ee;
+ --color-text: var(--color-banner);
+ --bg-modeToggle: rgba(0, 0, 0, 0.2);
+ --bg-sidebar: hsla(249, 80%, 67%, 0.95);
+ --bg-sidebarListHover: rgba(0, 0, 0, 0.1);
+ --bg-newItem: white;
+}
+.dark[data-theme="purple"] {
+ --bg-color: #1b182c;
+ --color-text: white;
+ --bg-timer: #474650;
+ --bg-cdList: #3b3b50;
+ --bg-cdListHover: #303041;
+ --bg-newItem: var(--color-banner);
+}
+[data-theme="yellow"] {
+ --color-banner: #ffc000;
+ --color-text: var(--color-banner);
+ --bg-modeToggle: rgba(0, 0, 0, 0.2);
+ --bg-sidebar: rgba(255, 191, 0, 0.95);
+ --bg-sidebarListHover: rgba(0, 0, 0, 0.1);
+ --bg-newItem: white;
+}
+.dark[data-theme="yellow"] {
+ --bg-color: #352e19;
+ --color-text: white;
+ --bg-timer: #746b50;
+ --bg-cdList:#584f31;
+ --bg-cdListHover: #504727;
+ --bg-newItem: var(--color-banner);
+}
+[data-theme="pink"] {
+ --color-banner: #e685b5;
+ --color-text: var(--color-banner);
+ --bg-modeToggle: rgba(0, 0, 0, 0.2);
+ --bg-sidebar: rgba(230, 132, 181, 0.95);
+ --bg-sidebarListHover: rgba(0, 0, 0, 0.1);
+ --bg-newItem: white;
+}
+.dark[data-theme="pink"] {
+ --bg-color: #472a39;
+ --color-text: white;
+ --bg-timer: #8b7982;
+ --bg-cdList: #644e59;
+ --bg-cdListHover: #58464f;
+ --bg-newItem: var(--color-banner);
+}
\ No newline at end of file
diff --git a/html/authors.html b/html/authors.html
new file mode 100644
index 00000000..3bac60d7
--- /dev/null
+++ b/html/authors.html
@@ -0,0 +1,117 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ RD
+
+ rdjarbeng
+
+
+
+
+
+
+
+
+ Nat
+
+ Nyakotey
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/html/countdown-list.html b/html/countdown-list.html
new file mode 100644
index 00000000..9d3276a6
--- /dev/null
+++ b/html/countdown-list.html
@@ -0,0 +1,122 @@
+
+
+
+
+
+
+
+
+
+
Final Countdown
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 00
+ Days
+
+
+ 00
+ Hours
+
+
+ 00
+ Minutes
+
+
+ 00
+ Seconds
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/fallback.html b/html/fallback.html
similarity index 51%
rename from fallback.html
rename to html/fallback.html
index dd9dd7bd..00532886 100644
--- a/fallback.html
+++ b/html/fallback.html
@@ -8,19 +8,21 @@
Final Countdown
-
+
-
-
-
-
-
+
+
+
+
+
+
+
-
-
-
+
+
+
-
+
@@ -31,14 +33,14 @@
- Cannot view this page offline
+ Oops, try again later
-
+
-