diff --git a/Day_29/index.html b/Day_29/index.html
new file mode 100644
index 0000000..a199d65
--- /dev/null
+++ b/Day_29/index.html
@@ -0,0 +1,46 @@
+
+
+
+
+
+ Countdown Timer
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Day_29/ruben-ramirez-xhKG01FN2uk-unsplash (1).jpg b/Day_29/ruben-ramirez-xhKG01FN2uk-unsplash (1).jpg
new file mode 100644
index 0000000..ace1cef
Binary files /dev/null and b/Day_29/ruben-ramirez-xhKG01FN2uk-unsplash (1).jpg differ
diff --git a/Day_29/script.js b/Day_29/script.js
new file mode 100644
index 0000000..3cf0a31
--- /dev/null
+++ b/Day_29/script.js
@@ -0,0 +1,56 @@
+let countdown;
+const timerDisplay = document.querySelector('.display__time-left');
+const endTime = document.querySelector('.display__end-time');
+const buttons = document.querySelectorAll('[data-time]');
+
+function timer(seconds) {
+ // clear any existing timers
+ clearInterval(countdown);
+
+ const now = Date.now();
+ const then = now + seconds * 1000;
+ displayTimeLeft(seconds);
+ displayEndTime(then);
+
+ countdown = setInterval(() => {
+ const secondsLeft = Math.round((then - Date.now()) / 1000);
+ // check if we should stop it!
+ if (secondsLeft < 0) {
+ clearInterval(countdown);
+ return;
+ }
+ // display it
+ displayTimeLeft(secondsLeft);
+ }, 1000);
+}
+
+function displayTimeLeft(seconds) {
+ const minutes = Math.floor(seconds / 60);
+ const remainderSeconds = seconds % 60;
+ const display = `${minutes}:${remainderSeconds < 10 ? '0' : ''}${remainderSeconds}`;
+ document.title = display;
+ timerDisplay.textContent = display;
+}
+
+function displayEndTime(timestamp) {
+ const end = new Date(timestamp);
+ const hour = end.getHours();
+ const adjustedHour = hour > 12 ? hour - 12 : hour;
+ const minutes = end.getMinutes();
+ endTime.textContent = `Be Back At ${adjustedHour}:${minutes < 10 ? '0' : ''}${minutes}`;
+}
+
+function startTimer() {
+ const seconds = parseInt(this.dataset.time);
+ timer(seconds);
+}
+
+buttons.forEach(button => button.addEventListener('click', startTimer));
+document.customForm.addEventListener('submit', function (e) {
+ e.preventDefault();
+ const mins = this.minutes.value;
+ console.log(mins);
+ timer(mins * 60);
+ this.reset();
+});
+
diff --git a/Day_29/style.css b/Day_29/style.css
new file mode 100644
index 0000000..fc00d08
--- /dev/null
+++ b/Day_29/style.css
@@ -0,0 +1,136 @@
+html {
+ box-sizing: border-box;
+ font-size: 16px;
+ /* opacity: 0.7; */
+ background: url(/Day_29/ruben-ramirez-xhKG01FN2uk-unsplash\ \(1\).jpg) no-repeat center center fixed;
+ -webkit-background-size: cover;
+ -moz-background-size: cover;
+ -o-background-size: cover;
+ background-size: cover;
+ z-index: -1; /* Place the pseudo-element behind other content */
+ opacity: 0.9; /* Adjust the opacity as needed */
+}
+
+*,
+*:before,
+*:after {
+ box-sizing: inherit;
+}
+
+body {
+ margin: 0;
+ text-align: center;
+ font-family:Georgia, 'Times New Roman', Times, serif;
+ position: relative; /* Ensure the ::before pseudo-element is positioned relative to the body */
+
+}
+
+.navigation {
+ position: fixed;
+ top: 20px;
+ left: 50%;
+ transform: translateX(-50%);
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ z-index: 1000;
+}
+
+.card-back {
+ left: auto;
+}
+
+.card {
+ width: 100px;
+ height: 50px;
+ margin: 5px;
+ font-size: 20px;
+ background-color: #A2748B;
+ color: #ffffff;
+ border: none;
+ border-radius: 5px;
+ cursor: pointer;
+ overflow: hidden;
+ transition: 1s ease;
+ text-align: center;
+ align-items: center;
+ justify-content: space-between;
+ line-height: 16px;
+ display: flex;
+ justify-content: center;
+ position: relative;
+}
+
+.display__time-left {
+ font-weight: 100;
+ font-size: 20rem;
+ margin: 0;
+ color: white;
+ text-shadow: 4px 4px 0 rgba(23, 12, 81, 0.05);
+}
+
+.timer {
+ display: flex;
+ min-height: 100vh;
+ flex-direction: column;
+ margin-top: 5%;
+}
+
+.timer__controls {
+ display: flex;
+}
+
+.timer__controls>* {
+ flex: 1;
+}
+
+.timer__controls form {
+ flex: 1;
+ display: flex;
+ margin: 2%;
+}
+
+.timer__controls input {
+ flex: 1;
+ border: 0;
+ padding: 2rem;
+}
+
+.timer__button {
+ background: none;
+ border: 0;
+ border-radius: 15px;
+ cursor: pointer;
+ color: Black;
+ font-size: 2rem;
+ text-transform: uppercase;
+ background: rgba(239, 134, 239, 0.9);
+ border-bottom: 3px solid rgba(221, 232, 150);
+ border-right: 1px solid rgba(221, 232, 150);
+ padding: 1rem;
+ font-family:Georgia, 'Times New Roman', Times, serif;
+ margin: 2%;
+ justify-content: space-between;
+}
+
+.timer__button:hover,
+.timer__button:focus {
+ background: rgba(245, 165, 228);
+ outline: 0;
+}
+
+.display {
+ flex: 1;
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ justify-content: center;
+}
+
+.display__end-time {
+ font-size: 5rem;
+ color: black;
+ font-weight: bolder;
+ background-color: wheat;
+ padding: 1%;
+}
\ No newline at end of file