diff --git a/.vscode/settings.json b/.vscode/settings.json
new file mode 100644
index 0000000..f673a71
--- /dev/null
+++ b/.vscode/settings.json
@@ -0,0 +1,3 @@
+{
+ "liveServer.settings.port": 5502
+}
\ No newline at end of file
diff --git a/Images/AI/ai-gen (1).jpg b/Images/AI/ai-gen (1).jpg
new file mode 100644
index 0000000..6f26235
Binary files /dev/null and b/Images/AI/ai-gen (1).jpg differ
diff --git a/Images/AI/ai-gen (10).jpg b/Images/AI/ai-gen (10).jpg
new file mode 100644
index 0000000..06be761
Binary files /dev/null and b/Images/AI/ai-gen (10).jpg differ
diff --git a/Images/AI/ai-gen (2).jpg b/Images/AI/ai-gen (2).jpg
new file mode 100644
index 0000000..10175f5
Binary files /dev/null and b/Images/AI/ai-gen (2).jpg differ
diff --git a/Images/AI/ai-gen (3).jpg b/Images/AI/ai-gen (3).jpg
new file mode 100644
index 0000000..25dd014
Binary files /dev/null and b/Images/AI/ai-gen (3).jpg differ
diff --git a/Images/AI/ai-gen (4).jpg b/Images/AI/ai-gen (4).jpg
new file mode 100644
index 0000000..78b936b
Binary files /dev/null and b/Images/AI/ai-gen (4).jpg differ
diff --git a/Images/AI/ai-gen (5).jpg b/Images/AI/ai-gen (5).jpg
new file mode 100644
index 0000000..13072a7
Binary files /dev/null and b/Images/AI/ai-gen (5).jpg differ
diff --git a/Images/AI/ai-gen (6).jpg b/Images/AI/ai-gen (6).jpg
new file mode 100644
index 0000000..3fecf0f
Binary files /dev/null and b/Images/AI/ai-gen (6).jpg differ
diff --git a/Images/AI/ai-gen (7).jpg b/Images/AI/ai-gen (7).jpg
new file mode 100644
index 0000000..031bb38
Binary files /dev/null and b/Images/AI/ai-gen (7).jpg differ
diff --git a/Images/AI/ai-gen (8).jpg b/Images/AI/ai-gen (8).jpg
new file mode 100644
index 0000000..3bfc869
Binary files /dev/null and b/Images/AI/ai-gen (8).jpg differ
diff --git a/Images/AI/ai-gen (9).jpg b/Images/AI/ai-gen (9).jpg
new file mode 100644
index 0000000..31518b6
Binary files /dev/null and b/Images/AI/ai-gen (9).jpg differ
diff --git a/Images/Animals/Birds.jpg b/Images/Animals/Birds.jpg
new file mode 100644
index 0000000..6156b01
Binary files /dev/null and b/Images/Animals/Birds.jpg differ
diff --git a/Images/Animals/Elephant.jpg b/Images/Animals/Elephant.jpg
new file mode 100644
index 0000000..8dd6962
Binary files /dev/null and b/Images/Animals/Elephant.jpg differ
diff --git a/Images/Animals/Polar bear.jpg b/Images/Animals/Polar bear.jpg
new file mode 100644
index 0000000..a2a9aa7
Binary files /dev/null and b/Images/Animals/Polar bear.jpg differ
diff --git a/Images/Animals/Tiger.jpg b/Images/Animals/Tiger.jpg
new file mode 100644
index 0000000..f8ace3c
Binary files /dev/null and b/Images/Animals/Tiger.jpg differ
diff --git a/Images/Animals/bird.jpg b/Images/Animals/bird.jpg
new file mode 100644
index 0000000..a16bfac
Binary files /dev/null and b/Images/Animals/bird.jpg differ
diff --git a/Images/Animals/deer.jpg b/Images/Animals/deer.jpg
new file mode 100644
index 0000000..054e7e0
Binary files /dev/null and b/Images/Animals/deer.jpg differ
diff --git a/Images/Animals/eagle.jpg b/Images/Animals/eagle.jpg
new file mode 100644
index 0000000..fd66602
Binary files /dev/null and b/Images/Animals/eagle.jpg differ
diff --git a/Images/Animals/fish.jpg b/Images/Animals/fish.jpg
new file mode 100644
index 0000000..0370acb
Binary files /dev/null and b/Images/Animals/fish.jpg differ
diff --git a/Images/Animals/fox.jpg b/Images/Animals/fox.jpg
new file mode 100644
index 0000000..532c891
Binary files /dev/null and b/Images/Animals/fox.jpg differ
diff --git a/Images/Animals/monkey.jpg b/Images/Animals/monkey.jpg
new file mode 100644
index 0000000..a256806
Binary files /dev/null and b/Images/Animals/monkey.jpg differ
diff --git a/Images/Landscape/beachLandscape.jpg b/Images/Landscape/beachLandscape.jpg
new file mode 100644
index 0000000..1682ad2
Binary files /dev/null and b/Images/Landscape/beachLandscape.jpg differ
diff --git a/Images/Landscape/cityLandscape.jpg b/Images/Landscape/cityLandscape.jpg
new file mode 100644
index 0000000..5d90d1c
Binary files /dev/null and b/Images/Landscape/cityLandscape.jpg differ
diff --git a/Images/Landscape/forestLandscape.jpg b/Images/Landscape/forestLandscape.jpg
new file mode 100644
index 0000000..61226f6
Binary files /dev/null and b/Images/Landscape/forestLandscape.jpg differ
diff --git a/Images/Landscape/frozenSeaLandscape.jpg b/Images/Landscape/frozenSeaLandscape.jpg
new file mode 100644
index 0000000..15308ad
Binary files /dev/null and b/Images/Landscape/frozenSeaLandscape.jpg differ
diff --git a/Images/Landscape/landscape1.jpg b/Images/Landscape/landscape1.jpg
new file mode 100644
index 0000000..55cfad5
Binary files /dev/null and b/Images/Landscape/landscape1.jpg differ
diff --git a/Images/Landscape/portLandscape.jpg b/Images/Landscape/portLandscape.jpg
new file mode 100644
index 0000000..49abdb1
Binary files /dev/null and b/Images/Landscape/portLandscape.jpg differ
diff --git a/Images/Landscape/snowyForestLandscape.jpg b/Images/Landscape/snowyForestLandscape.jpg
new file mode 100644
index 0000000..b52920c
Binary files /dev/null and b/Images/Landscape/snowyForestLandscape.jpg differ
diff --git a/Images/Landscape/winterLandscape.jpg b/Images/Landscape/winterLandscape.jpg
new file mode 100644
index 0000000..6bd4018
Binary files /dev/null and b/Images/Landscape/winterLandscape.jpg differ
diff --git a/Images/Night/night1.jpg b/Images/Night/night1.jpg
new file mode 100644
index 0000000..548d6b1
Binary files /dev/null and b/Images/Night/night1.jpg differ
diff --git a/Images/Night/night2.jpg b/Images/Night/night2.jpg
new file mode 100644
index 0000000..899eae2
Binary files /dev/null and b/Images/Night/night2.jpg differ
diff --git a/Images/Night/night3.jpg b/Images/Night/night3.jpg
new file mode 100644
index 0000000..55c851d
Binary files /dev/null and b/Images/Night/night3.jpg differ
diff --git a/Images/Night/night4.jpg b/Images/Night/night4.jpg
new file mode 100644
index 0000000..6d8ddab
Binary files /dev/null and b/Images/Night/night4.jpg differ
diff --git a/Images/Night/night5.jpg b/Images/Night/night5.jpg
new file mode 100644
index 0000000..2d4dd4d
Binary files /dev/null and b/Images/Night/night5.jpg differ
diff --git a/Images/Night/night6.jpg b/Images/Night/night6.jpg
new file mode 100644
index 0000000..40c53ae
Binary files /dev/null and b/Images/Night/night6.jpg differ
diff --git a/Images/Night/night7.jpg b/Images/Night/night7.jpg
new file mode 100644
index 0000000..043c7a7
Binary files /dev/null and b/Images/Night/night7.jpg differ
diff --git a/Images/People/People (1).jpg b/Images/People/People (1).jpg
new file mode 100644
index 0000000..cfe3499
Binary files /dev/null and b/Images/People/People (1).jpg differ
diff --git a/Images/People/People (2).jpg b/Images/People/People (2).jpg
new file mode 100644
index 0000000..bc014fe
Binary files /dev/null and b/Images/People/People (2).jpg differ
diff --git a/Images/People/People (3).jpg b/Images/People/People (3).jpg
new file mode 100644
index 0000000..9d85f54
Binary files /dev/null and b/Images/People/People (3).jpg differ
diff --git a/Images/People/People (4).jpg b/Images/People/People (4).jpg
new file mode 100644
index 0000000..aca01b4
Binary files /dev/null and b/Images/People/People (4).jpg differ
diff --git a/Images/People/People (5).jpg b/Images/People/People (5).jpg
new file mode 100644
index 0000000..35800a2
Binary files /dev/null and b/Images/People/People (5).jpg differ
diff --git a/Images/People/people.jpg b/Images/People/people.jpg
new file mode 100644
index 0000000..43065a9
Binary files /dev/null and b/Images/People/people.jpg differ
diff --git a/Images/foodAndDrink/f.a.d (1).jpg b/Images/foodAndDrink/f.a.d (1).jpg
new file mode 100644
index 0000000..a41d1e9
Binary files /dev/null and b/Images/foodAndDrink/f.a.d (1).jpg differ
diff --git a/Images/foodAndDrink/f.a.d (2).jpg b/Images/foodAndDrink/f.a.d (2).jpg
new file mode 100644
index 0000000..b27b3f0
Binary files /dev/null and b/Images/foodAndDrink/f.a.d (2).jpg differ
diff --git a/Images/foodAndDrink/f.a.d (3).jpg b/Images/foodAndDrink/f.a.d (3).jpg
new file mode 100644
index 0000000..7285998
Binary files /dev/null and b/Images/foodAndDrink/f.a.d (3).jpg differ
diff --git a/Images/foodAndDrink/f.a.d (4).jpg b/Images/foodAndDrink/f.a.d (4).jpg
new file mode 100644
index 0000000..5f37c54
Binary files /dev/null and b/Images/foodAndDrink/f.a.d (4).jpg differ
diff --git a/Images/foodAndDrink/f.a.d (5).jpg b/Images/foodAndDrink/f.a.d (5).jpg
new file mode 100644
index 0000000..6c095a1
Binary files /dev/null and b/Images/foodAndDrink/f.a.d (5).jpg differ
diff --git a/Images/logo.svg b/Images/logo.svg
new file mode 100644
index 0000000..e729245
--- /dev/null
+++ b/Images/logo.svg
@@ -0,0 +1,50 @@
+
+
+
+
diff --git a/Images/profileAvatar.eps b/Images/profileAvatar.eps
new file mode 100644
index 0000000..3dfe02d
Binary files /dev/null and b/Images/profileAvatar.eps differ
diff --git a/Images/profileAvatar.jpg b/Images/profileAvatar.jpg
new file mode 100644
index 0000000..160af3e
Binary files /dev/null and b/Images/profileAvatar.jpg differ
diff --git a/Images/wallpaper/WP (1).jpg b/Images/wallpaper/WP (1).jpg
new file mode 100644
index 0000000..77bc228
Binary files /dev/null and b/Images/wallpaper/WP (1).jpg differ
diff --git a/Images/wallpaper/WP (10).jpg b/Images/wallpaper/WP (10).jpg
new file mode 100644
index 0000000..7f22a2d
Binary files /dev/null and b/Images/wallpaper/WP (10).jpg differ
diff --git a/Images/wallpaper/WP (2).jpg b/Images/wallpaper/WP (2).jpg
new file mode 100644
index 0000000..6c42076
Binary files /dev/null and b/Images/wallpaper/WP (2).jpg differ
diff --git a/Images/wallpaper/WP (3).jpg b/Images/wallpaper/WP (3).jpg
new file mode 100644
index 0000000..2073678
Binary files /dev/null and b/Images/wallpaper/WP (3).jpg differ
diff --git a/Images/wallpaper/WP (4).jpg b/Images/wallpaper/WP (4).jpg
new file mode 100644
index 0000000..4ad6773
Binary files /dev/null and b/Images/wallpaper/WP (4).jpg differ
diff --git a/Images/wallpaper/WP (5).jpg b/Images/wallpaper/WP (5).jpg
new file mode 100644
index 0000000..d8d53e2
Binary files /dev/null and b/Images/wallpaper/WP (5).jpg differ
diff --git a/Images/wallpaper/WP (6).jpg b/Images/wallpaper/WP (6).jpg
new file mode 100644
index 0000000..0b67716
Binary files /dev/null and b/Images/wallpaper/WP (6).jpg differ
diff --git a/Images/wallpaper/WP (7).jpg b/Images/wallpaper/WP (7).jpg
new file mode 100644
index 0000000..4fb6253
Binary files /dev/null and b/Images/wallpaper/WP (7).jpg differ
diff --git a/Images/wallpaper/WP (8).jpg b/Images/wallpaper/WP (8).jpg
new file mode 100644
index 0000000..af4d973
Binary files /dev/null and b/Images/wallpaper/WP (8).jpg differ
diff --git a/Images/wallpaper/WP (9).jpg b/Images/wallpaper/WP (9).jpg
new file mode 100644
index 0000000..2de6c11
Binary files /dev/null and b/Images/wallpaper/WP (9).jpg differ
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..9f37e6c
--- /dev/null
+++ b/README.md
@@ -0,0 +1,20 @@
+This project features an interactive online photo gallery inspired by the dynamic layouts of popular platforms like Pinterest, Unsplash, Behance, and Dribbble. The gallery uses a Masonry layout, chosen for its ability to elegantly organize photos of varying sizes, creating a visually appealing, responsive, and space-efficient design. This layout enhances the user experience through its artistic arrangement, adaptability across different devices, and seamless integration with interactive features like hover effects and lightbox pop-ups.
+
+Future enhancements include the integration of a database, enabling user sign-ups for personalized experiences and additional functionality.
+
+Click on link below to see the final look.
+
+https://zohreh-sa.github.io/PhotoGallery-finalProject-RediSchool/
+
+
+laptop view:
+![laptop view](https://github.com/user-attachments/assets/3ad115e2-5787-40c7-9db7-bdfeda3dd756)
+
+
+Login view
+![Login view](https://github.com/user-attachments/assets/aea67581-2dd8-4404-846e-1996b1971669)
+
+
+
+tablet view
+![tablet view](https://github.com/user-attachments/assets/cd521637-7c6f-47f7-89ed-747132ddb5ee)
diff --git a/index.html b/index.html
new file mode 100644
index 0000000..2e9ddc7
--- /dev/null
+++ b/index.html
@@ -0,0 +1,85 @@
+
+
+
+
+
+
+ Final Project -FE- Fall2024- ReDi School
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/login.html b/login.html
new file mode 100644
index 0000000..6fc91b3
--- /dev/null
+++ b/login.html
@@ -0,0 +1,90 @@
+
+
+
+
+
+
+ Login
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Login
+
Welcome back
+
+
+
+
+
+
+
+
+
+
+ Don't have an account?Join
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/login.js b/login.js
new file mode 100644
index 0000000..8eaa727
--- /dev/null
+++ b/login.js
@@ -0,0 +1,53 @@
+// console.log("Hello user!");
+
+// Array of users (add more users as needed)
+const users = [
+ {
+ email: "user@gmail.com",
+ username: "Zohreh",
+ password: "123456"
+ }
+];
+
+
+const span = document.getElementById("log-alert")
+// Add an event listener for the form submission
+document.getElementById("loginForm").addEventListener("submit", function (event) {
+ event.preventDefault(); // Prevent the default form submission behavior
+
+ // Get email and password values
+ const email = document.getElementById("email").value.trim(); /* Trim used to remove white spaces */
+ const password = document.getElementById("password").value.trim();
+
+ // Validation checks
+ if (email === "" || password === "") {
+ alert("Both email and password fields are required.");
+ return false;
+ }
+
+ // Validate email format using a regular expression
+ const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
+ if (!emailRegex.test(email)) {
+ span.innerHTML = ("Please enter a valid email address.");
+ return;
+ }
+
+ // Check if the user exists in the array
+ const user = users.find(user => user.email === email && user.password === password);
+
+
+ if (user) {
+
+ //save user's data in localStorage
+ localStorage.setItem("loggedInUser", JSON.stringify(user));
+
+ // Redirect to index.html
+ window.location.href = "./index.html";
+
+ } else {
+
+
+ span.innerHTML = ("Invalid email or password. Please try again.");
+ }
+});
+
diff --git a/scripts.js b/scripts.js
new file mode 100644
index 0000000..9421c42
--- /dev/null
+++ b/scripts.js
@@ -0,0 +1,192 @@
+// // console.log("Hello World!");
+
+
+const photoDatabase = [
+ ["fish.jpg", "Animals"], ["bird.jpg", "Animals"], ["Elephant.jpg", "Animals"], ["deer.jpg", "Animals"], ["Tiger.jpg", "Animals"], ["monkey.jpg", "Animals"], ["eagle.jpg", "Animals"], ["fox.jpg", "Animals"], ["Polar bear.jpg", "Animals"],
+ ["ai-gen (1).jpg", "AI"], ["ai-gen (2).jpg", "AI"], ["ai-gen (3).jpg", "AI"], ["ai-gen (4).jpg", "AI"], ["ai-gen (5).jpg", "AI"], ["ai-gen (6).jpg", "AI"], ["ai-gen (7).jpg", "AI"], ["ai-gen (8).jpg", "AI"], ["ai-gen (9).jpg", "AI"], ["ai-gen (10).jpg", "AI"], ["f.a.d (1).jpg", "foodAndDrink"], ["f.a.d (2).jpg", "foodAndDrink"], ["f.a.d (3).jpg", "foodAndDrink"], ["f.a.d (4).jpg", "foodAndDrink"], ["f.a.d (5).jpg", "foodAndDrink"],
+ ["landscape1.jpg", "Landscape"], ["beachLandscape.jpg", "Landscape"], ["cityLandscape.jpg", "Landscape"], ["forestLandscape.jpg", "Landscape"], ["portLandscape.jpg", "Landscape"], ["snowyForestLandscape.jpg", "Landscape"], ["winterLandscape.jpg", "Landscape"], ["frozenSeaLandscape.jpg", "Landscape"],
+ ["night1.jpg", "Night"], ["night2.jpg", "Night"], ["night3.jpg", "Night"], ["night4.jpg", "Night"], ["night5.jpg", "Night"], ["night6.jpg", "Night"], ["night7.jpg", "Night"],
+ ["people.jpg", "People"], ["People (1).jpg", "People"], ["People (2).jpg", "People"], ["People (3).jpg", "People"], ["People (4).jpg", "People"], ["People (5).jpg", "People"],
+ ["WP (1).jpg", "wallpaper"], ["WP (2).jpg", "wallpaper"], ["WP (3).jpg", "wallpaper"], ["WP (4).jpg", "wallpaper"], ["WP (5).jpg", "wallpaper"], ["WP (6).jpg", "wallpaper"], ["WP (7).jpg", "wallpaper"], ["WP (8).jpg", "wallpaper"], ["WP (9).jpg", "wallpaper"], ["WP (10).jpg", "wallpaper"]
+]
+
+const baseFolder = "./Images/";
+const gallery = document.getElementById('photo-gallery');
+
+
+// Function to render photos dynamically
+function renderPhotos(categories) {
+ gallery.innerHTML = '';
+
+
+ // Loop through the selected categories and generate photos
+ photoDatabase.forEach(([filename, category]) => {
+ if (categories.includes('all') || categories.includes(category)) {
+ // Create a photo container
+ const photoDiv = document.createElement('div');
+ photoDiv.className = 'photo';
+
+ // Create an image element
+ const img = document.createElement('img');
+ img.src = `${baseFolder}${category}/${filename}`;
+ img.alt = `${category} photo`;
+ img.loading = "lazy";
+
+
+ photoDiv.appendChild(img);
+ gallery.appendChild(photoDiv);
+ }
+ });
+
+
+ // Wait for images to load before initializing Masonry
+ imagesLoaded(gallery, function () {
+ new Masonry(gallery, {
+ itemSelector: '.photo', // Target photo elements
+ columnWidth: '.photo', // Use photo width for columns
+ gutter: 10, // Space between items
+ fitWidth: true // Center the gallery
+ });
+ });
+
+
+}
+
+// Function to manage tab clicks
+function manageTabs() {
+ const tabs = document.querySelectorAll('.tab');
+ for (let i = 0; i < tabs.length; i++) {
+ const tab = tabs[i];
+ tab.addEventListener('click', () => {
+ const category = tab.dataset.category;
+ let selectedCategories;
+ if (category === 'all') {
+ selectedCategories = ['all'];
+ } else {
+ selectedCategories = [category];
+ }
+ renderPhotos(selectedCategories);
+ });
+ }
+}
+
+
+
+document.addEventListener('DOMContentLoaded', () => {
+ //manage userProfile
+ const loggedInUser = JSON.parse(localStorage.getItem("loggedInUser"));
+
+ if (loggedInUser) {
+ const loginLink = document.querySelector(".logIn");
+
+ if (loginLink) {
+ const profileElement = document.createElement("a");
+ profileElement.className = "profile-info";
+ profileElement.innerHTML = `
+ ${loggedInUser.username}
+
+ `;
+ loginLink.parentNode.replaceChild(profileElement, loginLink);
+
+ const logoutButton = document.querySelector(".logout-button");
+ logoutButton.addEventListener("click", () => {
+ localStorage.removeItem("loggedInUser");
+ window.location.href = "./login.html";
+ });
+ }
+ }
+
+
+ //render all photos on page load
+ manageTabs(); // Set up tab click listeners
+ renderPhotos(['all']); // Initial render of all categories
+});
+
+
+
+const toggleButton = document.querySelector('.toggle');
+const toggleItems = document.querySelector('.toggle-items');
+
+// Toggle menu visibility when the button is clicked
+toggleButton.addEventListener('click', (event) => {
+ toggleItems.classList.toggle('active');
+ event.stopPropagation(); // Stop click from propagating
+});
+
+// Close the menu when clicking outside
+document.addEventListener('click', () => {
+ if (toggleItems.classList.contains('active')) {
+ toggleItems.classList.remove('active');
+ }
+});
+
+// Prevent menu clicks from closing it
+toggleItems.addEventListener('click', (event) => {
+ event.stopPropagation();
+});
+
+
+
+
+
+
+const submitImageButton = document.querySelector(".submit-image");
+
+submitImageButton.addEventListener("click", () => {
+ const loggedInUser = JSON.parse(localStorage.getItem("loggedInUser"));
+ if (!loggedInUser) {
+ window.location.href = "./login.html";
+ return;
+ }
+ const dialogBox = document.createElement("dialog");
+ dialogBox.className = "SDialog";
+ document.body.appendChild(dialogBox);
+
+
+ const closeButton = document.createElement("button");
+ closeButton.className = "close-button";
+ closeButton.innerHTML = "×";
+ closeButton.addEventListener("click", () => dialogBox.close());
+ dialogBox.appendChild(closeButton);
+
+
+ //create container to take image Url
+ const urlDiv = document.createElement("div");
+ urlDiv.className = "urlDiv"
+
+ const urlInput = document.createElement("input");
+ urlInput.type = "url";
+ urlInput.placeholder = "Enter Image URL";
+ urlInput.style.width = "100%";
+ urlInput.style.height = "300px"
+ urlInput.required = true;
+ urlDiv.appendChild(urlInput);
+
+
+ const imageCat = document.createElement("select");
+ const categoriesOption = ["AI generated", "Animals", "foodAndDrink", "Landscape", "Night", "People", "Wallpaper"];
+
+ categoriesOption.forEach(cat => {
+ const option = document.createElement("option");
+ option.value = cat.toLowerCase().replace(/ /g, "");
+ option.textContent = cat;
+ imageCat.appendChild(option);
+ })
+
+
+ const submitButton = document.createElement("button");
+ submitButton.textContent = "Submit";
+ submitButton.style.marginTop = "10px"
+
+
+ dialogBox.appendChild(urlDiv);
+ dialogBox.appendChild(imageCat);
+ dialogBox.appendChild(submitButton);
+
+ dialogBox.showModal();
+
+
+});
+
+
+
diff --git a/styles.css b/styles.css
new file mode 100644
index 0000000..b052030
--- /dev/null
+++ b/styles.css
@@ -0,0 +1,397 @@
+/* body{
+ background-color: aqua;
+} */
+
+#foflex {
+ width: 100%;
+ height: fit-content;
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ text-align: center;
+
+}
+
+
+
+.fNote {
+ flex-direction: row;
+ width: 100%;
+ height: fit-content;
+ text-align: center;
+ position: -ms-page bottom;
+}
+
+.lo-design {
+ width: 100px;
+
+}
+
+
+
+.baseHead {
+ display: flex;
+ flex-direction: row;
+ align-items: center;
+ justify-content: space-between;
+ margin-bottom: 10px;
+ width: 100%;
+ padding-top: 15px;
+
+}
+
+.header-div {
+ display: flex;
+ justify-items: center;
+ justify-content: space-between;
+ text-align: center;
+ align-items: center;
+ flex-direction: row;
+ font-size: 16px;
+ width: 95%;
+
+}
+
+.catListContainer {
+ display: block;
+ font-size: 12pt;
+ margin: 30px 0;
+ width: 100%;
+}
+
+
+nav {
+ display: flex;
+ justify-items: center;
+ justify-content: space-between;
+ gap: 20px;
+ /* space between items*/
+ color: black;
+}
+
+nav a {
+ color: black;
+ text-decoration: none;
+}
+
+nav a:hover {
+ text-decoration: underline;
+}
+
+.toggle {
+ font-size: 30px;
+ cursor: pointer;
+ background: none;
+ border: none;
+ color: #333;
+}
+
+.toggle:hover {
+ color: #007Baa;
+}
+
+.toggle-items {
+ display: none;
+ flex-direction: column;
+ background-color: #f9f9f9;
+ position: absolute;
+ padding: 10px;
+ top: 50px;
+ right: 10px;
+ border: 1px solid #ccc;
+ border-radius: 5px;
+ z-index: 1000;
+}
+
+.toggle-items.active {
+ display: block;
+}
+
+.about-us,
+.contact-us {
+ display: block;
+ margin: 5px 0;
+ text-decoration: none;
+ color: #333;
+ font-size: 1em;
+ text-align: left;
+}
+
+/* space between elements */
+.sbe {
+ flex-shrink: 0;
+ width: 10px;
+}
+
+.search-container {
+ display: block;
+ position: relative;
+ width: 400px;
+ /* visibility: hidden; */
+
+}
+
+
+.search-input {
+ width: 300px;
+ padding: 10px 15px;
+ border: 2px solid #ccc;
+ border-radius: 25px;
+ outline: none;
+ transition: border-color 0.3s;
+
+}
+
+
+.search-input:focus {
+ border-color: #007BFF;
+}
+
+.search-button {
+ top: 50%;
+ border: none;
+ background: none;
+ cursor: pointer;
+}
+
+.search-button i {
+ font-size: 18px;
+ color: #888;
+}
+
+.subImage {
+ display: block;
+ width: max-content;
+}
+
+/* Login button */
+.logIn {
+ padding-top: 5px;
+ color: azure;
+ border-radius: 10px;
+ height: 30px;
+ width: 80px;
+ border: 0;
+ background-color: rgba(132, 20, 20, 0.9);
+}
+
+.signUp {
+
+ font-size: 18px;
+ border: 0;
+ height: 30px;
+ width: 80px;
+ border-radius: 10px;
+ background-color: red;
+}
+
+.photo-gallery {
+ margin: 20px auto;
+ display: block;
+ /* Fallback if Masonry fails */
+ gap: 10px;
+
+}
+
+.photo {
+ width: 300px;
+ margin-bottom: 10px;
+}
+
+.photo img {
+ width: 100%;
+ height: auto;
+ display: block;
+ border-radius: 10px;
+ box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);
+ transition: transform 0.3s ease, z-index 0s 0.3s;
+}
+
+
+.photo:hover {
+ transform: scale(1.50);
+ z-index: 10;
+ position: relative;
+
+}
+
+
+
+.SDialog {
+ padding: 20px;
+ border: 1px solid #ccc;
+ border-radius: 8px;
+ background-color: #f9f9f9;
+ position: relative;
+ width: 300px;
+ max-width: 100%;
+}
+
+.urlDiv {
+ margin-top: 20px;
+ margin-bottom: 10px;
+}
+
+.submit-image {
+ cursor: pointer;
+ display: inline-block;
+ padding: 10px 20px;
+ border: none;
+ border-radius: 5px;
+ text-decoration: none;
+}
+
+.close-button {
+ position: absolute;
+ top: 10px;
+ right: 10px;
+ background: none;
+ border: none;
+ font-size: 20px;
+ font-weight: bold;
+ cursor: pointer;
+ color: red;
+
+
+}
+
+.close-button:hover {
+ color: #000;
+}
+
+
+
+
+
+/* Login page */
+
+
+.l-route {
+ display: flex;
+ flex-shrink: 0;
+ margin-inline: auto;
+ box-sizing: border-box;
+ flex-direction: column;
+ align-items: center;
+ align-content: center;
+ margin-top: 45px;
+}
+
+
+.sfn {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ height: 100%;
+ text-align: center;
+ width: 300px;
+ border: 30px;
+}
+
+
+
+.gmb {
+ padding: 32px 32px 40px;
+ display: block;
+ width: inherit;
+
+}
+
+.l-h1 {
+ margin-block: 0;
+}
+
+.log-form {
+ display: flex;
+ flex-direction: column;
+ align-content: center;
+ margin-top: 24px;
+ text-align: left;
+ gap: 24px;
+
+}
+
+.uil {
+ display: flex;
+ flex-direction: column;
+
+
+}
+
+.uinf {
+ display: flex;
+ flex-shrink: 0;
+ width: 350px;
+
+
+}
+
+.fmp {
+ font-size: 12px;
+ margin-left: 160px;
+
+}
+
+.w800b {
+ height: 30px;
+
+
+}
+
+.btn-login {
+ height: 40px;
+ font-size: medium;
+
+}
+
+.span-box {
+ display: block;
+ height: 20px;
+ margin-top: 20px;
+ color: rgb(255, 0, 0);
+}
+
+
+/* Responsive to smaller screens */
+
+@media (max-width:430px) {
+
+ .search-container {
+ display: none;
+ }
+
+ .catListContainer {
+ display: none;
+ }
+
+ .photo-gallery {
+ width: 100%;
+ align-content: center;
+ }
+
+ .photo {
+ width: 10em;
+ margin-bottom: 10px;
+
+ }
+
+
+ .subImage {
+ font-size: 10pt;
+ }
+
+}
+
+@media(max-width:768px) {
+ .search-container {
+ width: 250px;
+ }
+
+ .search-input {
+ width: 150px;
+ }
+
+ .catListContainer {
+ font-size: 10pt;
+ }
+}
\ No newline at end of file