diff --git a/- fonts.txt b/- fonts.txt new file mode 100644 index 00000000..e645abd8 --- /dev/null +++ b/- fonts.txt @@ -0,0 +1,4 @@ +Font - + +Poppins +https://fonts.google.com/specimen/Poppins \ No newline at end of file diff --git a/- read me.txt b/- read me.txt new file mode 100644 index 00000000..303ac0ad --- /dev/null +++ b/- read me.txt @@ -0,0 +1,8 @@ +IMPORTANT NOTICE: + +Please use this source code as best as possible. Download and save +this source code to your computer. Thank You. + + +------------------- +copyrigth © hellocode \ No newline at end of file diff --git a/.github/workflows/greetings.yml b/.github/workflows/greetings.yml index 704db0e2..be872536 100644 --- a/.github/workflows/greetings.yml +++ b/.github/workflows/greetings.yml @@ -1,16 +1,22 @@ -name: Greetings +name: 'Greetings' -on: [pull_request_target, issues] +on: + issues: + types: [opened] + pull_request_target: + types: [opened] +permissions: + issues: write + pull-requests: write jobs: - greeting: + welcome: runs-on: ubuntu-latest - permissions: - issues: write - pull-requests: write steps: - - uses: actions/first-interaction@v1 - with: - repo-token: ${{ secrets.GITHUB_TOKEN }} - issue-message: "Hi there! Thanks for opening this issue. We appreciate your contribution to this open-source project. We aim to respond or assign your issue as soon as possible." - pr-message: "Welcome to Our repository.🎊 Thank you so much for taking the time to point this out." + - uses: actions/checkout@v1 + - uses: EddieHubCommunity/gh-action-community/src/welcome@main + with: + github-token: ${{ secrets.GITHUB_TOKEN }} + issue-message: "Hi there! Thanks for opening this issue. We appreciate your contribution to this open-source project. We aim to respond or assign your issue as soon as possible." + pr-message: "Great job, @${{ github.actor }}! 🎉 Thank you for submitting your pull request. Your contribution is valuable and we appreciate your efforts to improve our project.We will promptly review your changes and offer feedback. Keep up the excellent work! Kindly remember to check our [contributing guidelines](https://github.com/Anshika14528/RAPIDOC-HEALTHCARE-WEBSITE-/blob/main/CONTRIBUTING.md)" + \ No newline at end of file diff --git a/README.md b/README.md index a132e6b9..f7b93577 100644 --- a/README.md +++ b/README.md @@ -1,16 +1,16 @@ -![RapidDoc](https://camo.githubusercontent.com/dd5e3080a7adc2ead8f86cbbd6577cee0a38439c0ebf195021ce41587b0a405f/68747470733a2f2f6d69726f2e6d656469756d2e636f6d2f6d61782f313430302f312a633459675258595161794f5657785633376f757272772e706e67) - -## RapiDoc +
-[💬 Join the community on Slack](https://join.slack.com/t/newworkspace-ley5153/shared_invite/zt-2isvflg78-tMexsn50mxdwY4BEJ_W11g)
+![RapidDoc](https://camo.githubusercontent.com/dd5e3080a7adc2ead8f86cbbd6577cee0a38439c0ebf195021ce41587b0a405f/68747470733a2f2f6d69726f2e6d656469756d2e636f6d2f6d61782f313430302f312a633459675258595161794f5657785633376f757272772e706e67) +
-# RapiDoc.com +#

RapiDoc.com

+[💬 Join the community on Slack](https://join.slack.com/t/newworkspace-ley5153/shared_invite/zt-2isvflg78-tMexsn50mxdwY4BEJ_W11g)
-An online platform providing comprehensive information on nearby hospitals and healthcare facilities! +

An online platform providing comprehensive information on nearby hospitals and healthcare facilities!

@@ -19,11 +19,11 @@ - + - - - + + + @@ -37,9 +37,9 @@
🌟 Stars Stars 🍴 Forks🐛 Issues🔔 Open PRs🔕 Closed PRs Issues Open PRs Closed PRs
-

Featured In

+

RocketFeatured In

- +
@@ -51,20 +51,23 @@
Event Name
-

Project Overview

-It is an online platform which enables you to get information about your nearest hospitals and healthcare facilities including important information like blood availablity in emergency, Opds and beds availability in your nearest/desired hospitals. It aims to address health-related issues. It is a one-stop destination for all your medical needs. +

RocketProject Overview

+

+It is an online platform which enables you to get information about your nearest hospitals and healthcare facilities including important information like blood availablity in emergency, Opds and beds availability in your nearest/desired hospitals. It aims to address health-related issues. It is a one-stop destination for all your medical needs.

-## Technology Stack +##

High VoltageTech Stack

+
+ + +
-- **Frontend**: HTML5, CSS, JavaScript, BootStrap -- **IDE**: VS Code/Google IDX -- **Version Control**: Git and GitHub +

-## Get Started +##

RocketGet Started

### Setup and Installation -To contribute to the RAPIDOC-HEALTHCARE-WEBSITE repository, follow these steps: +

To contribute to the RAPIDOC-HEALTHCARE-WEBSITE repository, follow these steps:

1. **Fork the Repository:** Click on the "Fork" button on the repository's GitHub page to create a copy of the repository in your GitHub account. @@ -103,8 +106,9 @@ To contribute to the RAPIDOC-HEALTHCARE-WEBSITE repository, follow these steps: ``` 9. **Create a Pull Request:** Go to the GitHub page of your forked repository. You should see a prompt to create a pull request (PR). Click on it, compare the changes, and create the PR. +

-To run the project locally in your System +

To run the project locally in your System

1. _Fork the Repository:_ Click on the "Fork" button on the repository's GitHub page to create a copy of the repository in your GitHub account. @@ -118,10 +122,9 @@ To run the project locally in your System ```bash git clone https://github.com//RAPIDOC-HEALTHCARE-WEBSITE - + ``` ![Screenshot (129)](https://github.com/Anishkagupta04/RAPIDOC-HEALTHCARE-WEBSITE-/assets/105973197/88249cc4-5849-4472-b190-9d9bad2bb236) - ``` 3. _Open the project in VS Code:_ Click on the open with vs code button , to make changes to the code using the text editor. @@ -139,48 +142,30 @@ To run the project locally in your System ![Screenshot (133)](https://github.com/Anishkagupta04/RAPIDOC-HEALTHCARE-WEBSITE-/assets/105973197/62044e1a-a644-467d-98ac-eabfac970ed9) -To contribute to the RAPIDOC-HEALTHCARE-WEBSITE repository using GitHub Desktop, follow these steps: +

Contributing -1. **Clone the repository:** - Open GitHub Desktop and log in to your GitHub account. Go to the "File" menu and select "Clone Repository." Select the RAPIDOC-HEALTHCARE-WEBSITE repository from the list and choose a local path to clone the repository. +

We love your input! We want to make contributing to this project as easy and transparent as possible, whether it's. -2. **Switch to the correct branch:** - Once the repository is cloned, make sure you are on the correct branch where you want to make your changes. You can switch branches using the "Branch" menu in GitHub Desktop. - -3. **Make and commit changes:** - Make the desired changes to the code in your local repository. After making changes, stage them by clicking the "+" button next to the changed files. Enter a commit message describing your changes and click the "Commit" button. - -4. **Push changes to GitHub:** - After committing your changes, push them to your fork of the repository on GitHub. Click the "Push origin" button in GitHub Desktop to push your changes. - -5. **Create a pull request:** - Go to your fork of the RAPIDOC-HEALTHCARE-WEBSITE repository on the GitHub website. You should see a notification that your branch is ahead of the original repository. Click on the "Compare & pull request" button to create a pull request for your changes. - -6. **Review and submit the pull request:** - On the pull request page, review your changes and add a title and description for your pull request. Once you're satisfied with your changes, click the "Create pull request" button to submit your pull request. - -If you find this project helpful, please consider giving it a star! ⭐️ - -### Contributing - -We love your input! We want to make contributing to this project as easy and transparent as possible, whether it's: +To contribute to the RAPIDOC-HEALTHCARE-WEBSITE repository using GitHub Desktop, follow these steps: -- Reporting a bug -- Discussing the current state of the code -- Submitting a fix -- Proposing new features + Reporting a bug
+Discussing the current state of the code
+Submitting a fix
+Proposing new features

-

Our Contributors ❤️

+

Our Contributors Red Heart

Thank you for contributing to our repository

- - - + -### Show some ❤️ by starring this awesome repository! +

Show some Red Heart by starring this awesome repository!

+
+

+If you find this project helpful, please consider giving it a star!

+

diff --git a/assets/css/styles.css b/assets/css/styles.css new file mode 100644 index 00000000..a74ef220 --- /dev/null +++ b/assets/css/styles.css @@ -0,0 +1,617 @@ +/*=============== GOOGLE FONTS ===============*/ +@import url("https://fonts.googleapis.com/css2?family=Poppins:wght@400;600;700&display=swap"); +/*=============== VARIABLES CSS ===============*/ +:root { + --header-height: 3rem; + /*========== Colors ==========*/ + --hue: 45; + --sat: 98%; + --first-color: hsl(var(--hue), var(--sat), 60%); + --first-color-light: hsl(var(--hue), var(--sat), 85%); + --first-color-lighten: hsl(var(--hue), var(--sat), 80%); + --first-color-alt: hsl(var(--hue), var(--sat), 53%); + --title-color: hsl(var(--hue), 4%, 15%); + --text-color: hsl(var(--hue), 4%, 35%); + --text-color-light: hsl(var(--hue), 4%, 65%); + --body-color: hsl(var(--hue), 0%, 100%); + --container-color: #FFF; + --scroll-bar-color: hsl(var(--hue), 4%, 85%); + --scroll-thumb-color: hsl(var(--hue), 4%, 75%); + /*========== Font and typography ==========*/ + --body-font: 'Poppins', sans-serif; + --biggest-font-size: 2rem; + --h2-font-size: 1.25rem; + --h3-font-size: 1.125rem; + --normal-font-size: .938rem; + --small-font-size: .813rem; + --smaller-font-size: .75rem; + /*========== Font weight ==========*/ + --font-semi-bold: 600; + --font-bold: 700; + /*========== Margenes ==========*/ + --mb-0-5: .5rem; + --mb-0-75: .75rem; + --mb-1: 1rem; + --mb-1-5: 1.5rem; + --mb-2: 2rem; + /*========== z index ==========*/ + --z-tooltip: 10; + --z-fixed: 100; +} + +@media screen and (min-width: 968px) { + :root { + --biggest-font-size: 3rem; + --h2-font-size: 1.75rem; + --h3-font-size: 1.25rem; + --normal-font-size: 1rem; + --small-font-size: .875rem; + --smaller-font-size: .813rem; + } +} + +/*=============== BASE ===============*/ +*, ::before, ::after { + box-sizing: border-box; + padding: 0; + margin: 0; +} + +html { + scroll-behavior: smooth; +} + +body { + margin: var(--header-height) 0 0 0; + font-family: var(--body-font); + font-size: var(--normal-font-size); + background-color: var(--body-color); + color: var(--text-color); + transition: .5s; +} + +h1, h2, h3 { + font-weight: var(--font-semi-bold); + color: var(--title-color); + line-height: 1.5; +} + +ul { + list-style: none; +} + +a { + text-decoration: none; +} + +img { + max-width: 100%; + height: auto; +} + +/*=============== THEME ===============*/ +/*========== Variables Dark theme ==========*/ +body.dark-theme { + --first-color-light: hsl(var(--hue), var(--sat), 75%); + --title-color: hsl(var(--hue), 4%, 95%); + --text-color: hsl(var(--hue), 4%, 80%); + --body-color: hsl(var(--hue), 8%, 13%); + --container-color: hsl(var(--hue), 8%, 16%); + --scroll-bar-color: hsl(var(--hue), 4%, 32%); + --scroll-thumb-color: hsl(var(--hue), 4%, 24%); +} + +/*========== Button Dark/Light ==========*/ +.change-theme { + position: absolute; + right: 1.5rem; + top: 2.2rem; + color: var(--title-color); + font-size: 1.8rem; + cursor: pointer; +} + +.dark-theme .footer { + background-color: var(--container-color); +} + +/*=============== REUSABLE CSS CLASSES ===============*/ +.section { + padding: 4.5rem 0 1rem; +} + +.section__title, .section__title-center { + font-size: var(--h2-font-size); + color: var(--title-color); + text-align: center; + margin-bottom: var(--mb-1); +} + +.svg__color { + fill: var(--first-color); +} + +.svg__blob { + fill: var(--first-color-light); +} + +.svg__img { + width: 300px; + justify-self: center; +} + +/*=============== LAYOUT ===============*/ +.container { + max-width: 968px; + margin-left: var(--mb-1-5); + margin-right: var(--mb-1-5); +} + +.grid { + display: grid; + gap: 1.5rem; +} + +/*=============== HEADER ===============*/ +.header { + width: 100%; + background-color: var(--body-color); + + top: 0; + left: 0; + z-index: var(--z-fixed); + transition: .5s; +} +.header img { + width: 100px; /* Adjust the width as needed */ + height: 100px; + margin-left: 1px; /* Adjust the margin as needed */ +} + +/*=============== NAV ===============*/ +.nav { + height: var(--header-height); + display: flex; + justify-content: space-between; + align-items: center; +} + +@media screen and (max-width: 767px) { + .nav__menu { + position: fixed; + background-color: var(--container-color); + box-shadow: 0 0 4px rgba(0, 0, 0, 0.1); + padding: 2.5rem 0; + width: 90%; + top: -100%; + left: 0; + right: 0; + margin: 0 auto; + transition: .4s; + border-radius: 2rem; + z-index: var(--z-fixed); + } +} + +.nav__list { + display: flex; + flex-direction: column; + align-items: center; + row-gap: 1.5rem; +} + +.nav__link, .nav__logo, .nav__toggle { + color: var(--title-color); + font-weight: var(--font-semi-bold); +} + +.nav__toggle { + font-size: 1.3rem; + cursor: pointer; +} + +/* Show menu */ +.show-menu { + top: calc(var(--header-height) + 1rem); +} + +/* Active link */ +.active-link { + position: relative; +} + +.active-link::before { + content: ''; + position: absolute; + bottom: -.75rem; + left: 45%; + width: 5px; + height: 5px; + background-color: var(--title-color); + border-radius: 50%; +} + +/* Change background header */ +.scroll-header { + box-shadow: 0 1px 4px rgba(0, 0, 0, 0.1); +} + +/*=============== HOME ===============*/ +.home__container { + row-gap: 3rem; +} + +.home__title { + font-size: var(--biggest-font-size); + font-weight: var(--font-bold); + margin-bottom: var(--mb-0-75); +} + +.home__description { + margin-bottom: var(--mb-2); +} +.home img { + max-width: 100%; + height: auto; + margin-left: 500px; /* Adjust the margin as needed */ + margin-top: -350px; +} +/*=============== BUTTONS ===============*/ +.button { + display: inline-block; + background-color: var(--first-color); + color: #1A1A1A; + padding: .75rem 1.5rem; + border-radius: 3rem; + font-weight: var(--font-semi-bold); + transition: .3s; +} + +.button:hover { + background-color: var(--first-color-alt); +} + +.button__header { + display: none; +} + +.button-link { + background: none; + padding: 0; + color: var(--title-color); +} + +.button-link:hover { + background-color: transparent; +} + +.button-flex { + display: inline-flex; + align-items: center; + column-gap: .25rem; + padding: .75rem 1rem; +} + +.button__icon { + font-size: 1.5rem; +} + +/*=============== ABOUT ===============*/ +.about__container { + gap: 2.5rem; +} + +.about__data { + text-align: center; +} +.about img { + max-width: 100%; + height: auto; + margin-left: 500px; /* Adjust the margin as needed */ + margin-top: -150px; +} + +/*=============== SECURITY ===============*/ +.security__container { + gap: 2.5rem; +} + +.security__data { + text-align: center; +} + +/*=============== SERVICES ===============*/ +.services__container { + padding-top: 1rem; +} + +.services__data { + display: grid; + row-gap: 1rem; + background-color: var(--container-color); + box-shadow: 0px 2px 6px hsla(var(--hue), 100%, 15%, 0.15); + padding: 2rem 1.5rem; + border-radius: 1rem; + text-align: center; +} + +.services__img { + width: 135px; + justify-self: center; + margin-bottom: var(--mb-0-5); +} + +/*=============== APP ===============*/ +.app__container { + gap: 2.5rem; +} + +.app__data { + text-align: center; +} + +.app__description { + margin-bottom: var(--mb-1-5); +} + +.app__buttons { + display: grid; + grid-template-columns: repeat(2, max-content); + justify-content: center; + gap: .5rem; +} + + +/*=============== CONTACT ===============*/ +.contact__container { + padding-bottom: 3rem; +} + +.contact__description { + text-align: center; +} + +.contact__content { + row-gap: .75rem; +} + +.contact__address { + font-size: var(--small-font-size); + font-weight: var(--font-semi-bold); + color: var(--title-color); +} + +.contact__information { + font-weight: initial; + color: var(--text-color); +} + +/*=============== FOOTER ===============*/ +.footer { + background-color: var(--first-color-lighten); + padding-bottom: 2rem; +} + +.footer__container { + row-gap: 2rem; +} + +.footer__logo, .footer__title { + font-size: var(--h3-font-size); + margin-bottom: var(--mb-0-75); +} + +.footer__logo { + display: inline-block; + font-weight: var(--font-semi-bold); + color: var(--title-color); +} + +.footer__description, .footer__link { + font-size: var(--small-font-size); +} + +.footer__links { + display: grid; + row-gap: .5rem; +} + +.footer__link { + color: var(--title-color); +} + +.footer__social { + display: flex; + column-gap: 1.5rem; +} + +.footer__social-link { + font-size: 1.25rem; + color: var(--title-color); +} + +.footer__copy { + margin-top: 6rem; + text-align: center; + font-size: var(--smaller-font-size); + color: var(--text-color); +} + +/*=============== SCROLL UP ===============*/ +.scrollup { + position: fixed; + background: var(--first-color); + right: 1rem; + bottom: -20%; + display: inline-flex; + padding: .3rem; + border-radius: .25rem; + z-index: var(--z-tooltip); + opacity: .8; + transition: .4s; +} + +.scrollup:hover { + background-color: var(--first-color); + opacity: 1; +} + +.scrollup__icon { + font-size: 1.25rem; + color: var(--title-color); +} + +/* Show Scroll Up*/ +.show-scroll { + bottom: 3rem; +} + +/*=============== SCROLL BAR ===============*/ +::-webkit-scrollbar { + width: .6rem; + border-radius: .5rem; + background-color: var(--scroll-bar-color); +} + +::-webkit-scrollbar-thumb { + background-color: var(--scroll-thumb-color); + border-radius: .5rem; +} + +::-webkit-scrollbar-thumb:hover { + background-color: var(--text-color-light); +} + +/*=============== MEDIA QUERIES ===============*/ +/* For small devices */ +@media screen and (max-width: 360px) { + .svg__img { + width: 100%; + } + .section { + padding: 3.5rem 0 1rem; + } + .services__img { + width: 100px; + } + .app__buttons { + grid-template-columns: max-content; + } +} + +/* For medium devices */ +@media screen and (min-width: 576px) { + .svg__img { + width: 100%; + } + .section__title-center { + text-align: initial; + } + .home__container, + .about__container, + .security__container, + .services__container, + .app__container, + .contact__container, + .footer__container { + grid-template-columns: repeat(2, 1fr); + } + .home__img { + order: 1; + } + .home__container, + .about__container, + .security__container, + .app__container, + .contact__container { + align-items: center; + } + .about__data, + .security__data, + .app__data, + .contact__description { + text-align: initial; + } + .about__img, + .app__img { + order: -1; + } +} + +@media screen and (min-width: 767px) { + body { + margin: 0; + } + .section { + padding: 6rem 0 2rem; + } + .nav { + height: calc(var(--header-height) + 1.5rem); + } + .nav__list { + flex-direction: row; + column-gap: 2.5rem; + } + .nav__toggle { + display: none; + } + .change-theme { + position: initial; + } + .home__container { + padding: 6rem 0 2rem; + } + .app__buttons { + justify-content: initial; + } +} + +/* For large devices */ +@media screen and (min-width: 968px) { + .button__header { + display: block; + } + .svg__img { + width: 470px; + } + .about__container, + .security__container, + .app__container, + .contact__container { + column-gap: 6rem; + } + .services__container { + grid-template-columns: repeat(3, 1fr); + } + .contact__container { + grid-template-columns: 3fr 1.5fr 1.25fr; + } + .footer__container { + grid-template-columns: repeat(5, 1fr); + } + .footer__social { + align-items: flex-start; + } + .footer__social-link { + font-size: 1.45rem; + } +} + +@media screen and (min-width: 1024px) { + .container { + margin-left: auto; + margin-right: auto; + } + .home__img { + width: 540px; + } + .home__description { + padding-right: 5rem; + } + .footer__container { + column-gap: 3rem; + } + .scrollup { + right: 2rem; + } +} diff --git a/assets/img/about.png b/assets/img/about.png new file mode 100644 index 00000000..49154b60 Binary files /dev/null and b/assets/img/about.png differ diff --git a/assets/img/rd.png b/assets/img/rd.png new file mode 100644 index 00000000..885be48c Binary files /dev/null and b/assets/img/rd.png differ diff --git a/assets/img/rd1.png b/assets/img/rd1.png new file mode 100644 index 00000000..b504bf24 Binary files /dev/null and b/assets/img/rd1.png differ diff --git a/assets/img/s1.jpg b/assets/img/s1.jpg new file mode 100644 index 00000000..25e2914f Binary files /dev/null and b/assets/img/s1.jpg differ diff --git a/assets/img/s2.jpg b/assets/img/s2.jpg new file mode 100644 index 00000000..3aa07e95 Binary files /dev/null and b/assets/img/s2.jpg differ diff --git a/assets/img/s3.jpg b/assets/img/s3.jpg new file mode 100644 index 00000000..83680b42 Binary files /dev/null and b/assets/img/s3.jpg differ diff --git a/assets/img/sec.png b/assets/img/sec.png new file mode 100644 index 00000000..fd83ea5d Binary files /dev/null and b/assets/img/sec.png differ diff --git a/assets/js/main.js b/assets/js/main.js new file mode 100644 index 00000000..3557fec5 --- /dev/null +++ b/assets/js/main.js @@ -0,0 +1,90 @@ +/*=============== SHOW MENU ===============*/ +const showMenu = (toggleId, navId) =>{ + const toggle = document.getElementById(toggleId), + nav = document.getElementById(navId) + + // Validate that variables exist + if(toggle && nav){ + toggle.addEventListener('click', ()=>{ + // We add the show-menu class to the div tag with the nav__menu class + nav.classList.toggle('show-menu') + }) + } +} +showMenu('nav-toggle','nav-menu') + +/*=============== REMOVE MENU MOBILE ===============*/ +const navLink = document.querySelectorAll('.nav__link') + +function linkAction(){ + const navMenu = document.getElementById('nav-menu') + // When we click on each nav__link, we remove the show-menu class + navMenu.classList.remove('show-menu') +} +navLink.forEach(n => n.addEventListener('click', linkAction)) + +/*=============== SCROLL SECTIONS ACTIVE LINK ===============*/ +const sections = document.querySelectorAll('section[id]') + +function scrollActive(){ + const scrollY = window.pageYOffset + + sections.forEach(current =>{ + const sectionHeight = current.offsetHeight, + sectionTop = current.offsetTop - 50, + sectionId = current.getAttribute('id') + + if(scrollY > sectionTop && scrollY <= sectionTop + sectionHeight){ + document.querySelector('.nav__menu a[href*=' + sectionId + ']').classList.add('active-link') + }else{ + document.querySelector('.nav__menu a[href*=' + sectionId + ']').classList.remove('active-link') + } + }) +} +window.addEventListener('scroll', scrollActive) + +/*=============== CHANGE BACKGROUND HEADER ===============*/ +function scrollHeader(){ + const nav = document.getElementById('header') + // When the scroll is greater than 80 viewport height, add the scroll-header class to the header tag + if(this.scrollY >= 80) nav.classList.add('scroll-header'); else nav.classList.remove('scroll-header') +} +window.addEventListener('scroll', scrollHeader) + +/*=============== SHOW SCROLL UP ===============*/ +function scrollUp(){ + const scrollUp = document.getElementById('scroll-up'); + // When the scroll is higher than 560 viewport height, add the show-scroll class to the a tag with the scroll-top class + if(this.scrollY >= 560) scrollUp.classList.add('show-scroll'); else scrollUp.classList.remove('show-scroll') +} +window.addEventListener('scroll', scrollUp) + +/*=============== DARK LIGHT THEME ===============*/ +const themeButton = document.getElementById('theme-button') +const darkTheme = 'dark-theme' +const iconTheme = 'bx-toggle-right' + +// Previously selected topic (if user selected) +const selectedTheme = localStorage.getItem('selected-theme') +const selectedIcon = localStorage.getItem('selected-icon') + +// We obtain the current theme that the interface has by validating the dark-theme class +const getCurrentTheme = () => document.body.classList.contains(darkTheme) ? 'dark' : 'light' +const getCurrentIcon = () => themeButton.classList.contains(iconTheme) ? 'bx-toggle-left' : 'bx-toggle-right' + +// We validate if the user previously chose a topic +if (selectedTheme) { + // If the validation is fulfilled, we ask what the issue was to know if we activated or deactivated the dark + document.body.classList[selectedTheme === 'dark' ? 'add' : 'remove'](darkTheme) + themeButton.classList[selectedIcon === 'bx-toggle-left' ? 'add' : 'remove'](iconTheme) +} + +// Activate / deactivate the theme manually with the button +themeButton.addEventListener('click', () => { + // Add or remove the dark / icon theme + document.body.classList.toggle(darkTheme) + themeButton.classList.toggle(iconTheme) + // We save the theme and the current icon that the user chose + localStorage.setItem('selected-theme', getCurrentTheme()) + localStorage.setItem('selected-icon', getCurrentIcon()) +}) diff --git a/assets/scss/base/_base.scss b/assets/scss/base/_base.scss new file mode 100644 index 00000000..86458bf7 --- /dev/null +++ b/assets/scss/base/_base.scss @@ -0,0 +1,36 @@ +/*=============== BASE ===============*/ +*,::before,::after{ + box-sizing: border-box; + padding: 0; + margin: 0; +} + +html{ + scroll-behavior: smooth; +} + +body{ + margin: var(--header-height) 0 0 0; + font-family: var(--body-font); + font-size: var(--normal-font-size); + background-color: var(--body-color); + color: var(--text-color); + transition: .5s; // For animation dark mode +} + +h1,h2,h3{ + font-weight: var(--font-semi-bold); + color: var(--title-color); + line-height: 1.5; +} + +ul{ + list-style: none; +} +a{ + text-decoration: none; +} +img{ + max-width: 100%; + height: auto; +} diff --git a/assets/scss/components/_about.scss b/assets/scss/components/_about.scss new file mode 100644 index 00000000..061603ef --- /dev/null +++ b/assets/scss/components/_about.scss @@ -0,0 +1,9 @@ +/*=============== ABOUT ===============*/ +.about{ + &__container{ + gap: 2.5rem; + } + &__data{ + text-align: center; + } +} diff --git a/assets/scss/components/_app.scss b/assets/scss/components/_app.scss new file mode 100644 index 00000000..c43abe37 --- /dev/null +++ b/assets/scss/components/_app.scss @@ -0,0 +1,18 @@ +/*=============== APP ===============*/ +.app{ + &__container{ + gap: 2.5rem; + } + &__data{ + text-align: center; + } + &__description{ + margin-bottom: var(--mb-1-5); + } + &__buttons{ + display: grid; + grid-template-columns: repeat(2, max-content); + justify-content: center; + gap: .5rem + } +} diff --git a/assets/scss/components/_buttons.scss b/assets/scss/components/_buttons.scss new file mode 100644 index 00000000..f5a721da --- /dev/null +++ b/assets/scss/components/_buttons.scss @@ -0,0 +1,39 @@ +/*=============== BUTTONS ===============*/ +.button{ + display: inline-block; + background-color: var(--first-color); + color: #1A1A1A; // Use color black for yellow + padding: .75rem 1.5rem; + border-radius: 3rem; + font-weight: var(--font-semi-bold); + transition: .3s; + + &:hover{ + background-color: var(--first-color-alt); + } + + &__header{ + display: none; + } + + &-link{ + background: none; + padding: 0; + color: var(--title-color); + + &:hover{ + background-color: transparent; + } + } + + &-flex{ + display: inline-flex; + align-items: center; + column-gap: .25rem; + padding: .75rem 1rem; + } + + &__icon{ + font-size: 1.5rem; + } +} diff --git a/assets/scss/components/_contact.scss b/assets/scss/components/_contact.scss new file mode 100644 index 00000000..4567fd94 --- /dev/null +++ b/assets/scss/components/_contact.scss @@ -0,0 +1,21 @@ +/*=============== CONTACT ===============*/ +.contact{ + &__container{ + padding-bottom: 3rem; + } + &__description{ + text-align: center; + } + &__content{ + row-gap: .75rem; + } + &__address{ + font-size: var(--small-font-size); + font-weight: var(--font-semi-bold); + color: var(--title-color); + } + &__information{ + font-weight: initial; + color: var(--text-color); + } +} diff --git a/assets/scss/components/_footer.scss b/assets/scss/components/_footer.scss new file mode 100644 index 00000000..8a4e36d9 --- /dev/null +++ b/assets/scss/components/_footer.scss @@ -0,0 +1,46 @@ +/*=============== FOOTER ===============*/ +.footer{ + background-color: var(--first-color-lighten); + padding-bottom: 2rem; + + &__container{ + row-gap: 2rem; + } + + &__logo, + &__title{ + font-size: var(--h3-font-size); + margin-bottom: var(--mb-0-75); + } + &__logo{ + display: inline-block; + font-weight: var(--font-semi-bold); + color: var(--title-color); + } + &__description, + &__link{ + font-size: var(--small-font-size); + } + &__links{ + display: grid; + row-gap: .5rem; + } + &__link{ + color: var(--title-color); + } + &__social{ + display: flex; + column-gap: 1.5rem; + + &-link{ + font-size: 1.25rem; + color: var(--title-color); + } + } + &__copy{ + margin-top: 6rem; + text-align: center; + font-size: var(--smaller-font-size); + color: var(--text-color); + } +} diff --git a/assets/scss/components/_header.scss b/assets/scss/components/_header.scss new file mode 100644 index 00000000..ebdcaeaf --- /dev/null +++ b/assets/scss/components/_header.scss @@ -0,0 +1,77 @@ +/*=============== HEADER ===============*/ +.header{ + width: 100%; + background-color: var(--body-color); + position: fixed; + top: 0; + left: 0; + z-index: var(--z-fixed); + transition: .5s; // For animation dark mode +} + +/*=============== NAV ===============*/ +.nav{ + height: var(--header-height); + display: flex; + justify-content: space-between; + align-items: center; + + &__menu{ + @media screen and (max-width: 767px){ + position: fixed; + background-color: var(--container-color); + box-shadow: 0 0 4px rgba(0,0,0,.1); + padding: 2.5rem 0; + width: 90%; + top: -100%; + left: 0; + right: 0; + margin: 0 auto; + transition: .4s; + border-radius: 2rem; + z-index: var(--z-fixed); + } + } + &__list{ + display: flex; + flex-direction: column; + align-items: center; + row-gap: 1.5rem; + } + &__link, + &__logo, + &__toggle{ + color: var(--title-color); + font-weight: var(--font-semi-bold); + } + &__toggle{ + font-size: 1.3rem; + cursor: pointer; + } +} + +/* Show menu */ +.show-menu{ + top: calc(var(--header-height) + 1rem); +} + +/* Active link */ +.active-link{ + position: relative; + + &::before{ + content: ''; + position: absolute; + bottom: -.75rem; + left: 45%; + width: 5px; + height: 5px; + background-color: var(--title-color); + border-radius: 50%; + } +} + +/* Change background header */ +.scroll-header{ + box-shadow: 0 1px 4px rgba(0,0,0,.1); +} diff --git a/assets/scss/components/_home.scss b/assets/scss/components/_home.scss new file mode 100644 index 00000000..b936872f --- /dev/null +++ b/assets/scss/components/_home.scss @@ -0,0 +1,14 @@ +/*=============== HOME ===============*/ +.home{ + &__container{ + row-gap: 3rem; + } + &__title{ + font-size: var(--biggest-font-size); + font-weight: var(--font-bold); + margin-bottom: var(--mb-0-75); + } + &__description{ + margin-bottom: var(--mb-2); + } +} diff --git a/assets/scss/components/_mediaqueries.scss b/assets/scss/components/_mediaqueries.scss new file mode 100644 index 00000000..8a9349b2 --- /dev/null +++ b/assets/scss/components/_mediaqueries.scss @@ -0,0 +1,161 @@ +/*=============== MEDIA QUERIES ===============*/ +/* For small devices */ +@media screen and (max-width: 360px){ + .svg__img{ + width: 100%; + } + + .section{ + padding: 3.5rem 0 1rem; + } + + .services__img{ + width: 100px; + } + + .app__buttons{ + grid-template-columns: max-content; + } +} + +/* For medium devices */ +@media screen and (min-width: 576px){ + .svg__img{ + width: 100%; + } + + .section__title-center{ + text-align: initial; + } + + .home__container, + .about__container, + .security__container, + .services__container, + .app__container, + .contact__container, + .footer__container{ + grid-template-columns: repeat(2, 1fr); + } + + .home__img{ + order: 1; + } + + .home__container, + .about__container, + .security__container, + .app__container, + .contact__container{ + align-items: center; + } + + .about__data, + .security__data, + .app__data, + .contact__description{ + text-align: initial; + } + + .about__img, + .app__img{ + order: -1; + } +} + +@media screen and (min-width: 767px){ + body{ + margin: 0; + } + + .section{ + padding: 6rem 0 2rem; + } + + .nav{ + height: calc(var(--header-height) + 1.5rem); + + &__list{ + flex-direction: row; + column-gap: 2.5rem; + } + &__toggle{ + display: none; + } + } + + .change-theme{ + position: initial; + } + + .home__container{ + padding: 6rem 0 2rem; + } + + .app__buttons{ + justify-content: initial; + } +} + +/* For large devices */ +@media screen and (min-width: 968px){ + .button__header{ + display: block; + } + + .svg__img{ + width: 470px; + } + + .about__container, + .security__container, + .app__container, + .contact__container{ + column-gap: 6rem; + } + + .services__container{ + grid-template-columns: repeat(3, 1fr); + } + + .contact__container{ + grid-template-columns: 3fr 1.5fr 1.25fr; + } + + .footer{ + &__container{ + grid-template-columns: repeat(5, 1fr); + } + &__social{ + align-items: flex-start; + + &-link{ + font-size: 1.45rem; + } + } + } +} + +@media screen and (min-width: 1024px){ + .container{ + margin-left: auto; + margin-right: auto; + } + + .home{ + &__img{ + width: 540px; + } + &__description{ + padding-right: 5rem; + } + } + + .footer__container{ + column-gap: 3rem; + } + + .scrollup{ + right: 2rem; + } +} diff --git a/assets/scss/components/_scroll.scss b/assets/scss/components/_scroll.scss new file mode 100644 index 00000000..ec88467e --- /dev/null +++ b/assets/scss/components/_scroll.scss @@ -0,0 +1,44 @@ +/*=============== SCROLL UP ===============*/ +.scrollup{ + position: fixed; + background: var(--first-color); + right: 1rem; + bottom: -20%; + display: inline-flex; + padding: .3rem; + border-radius: .25rem; + z-index: var(--z-tooltip); + opacity: .8; + transition: .4s; + + &:hover{ + background-color: var(--first-color); + opacity: 1; + } + + &__icon{ + font-size: 1.25rem; + color: var(--title-color); + } +} + +/* Show Scroll Up*/ +.show-scroll{ + bottom: 3rem; +} + +/*=============== SCROLL BAR ===============*/ +::-webkit-scrollbar{ + width: .6rem; + border-radius: .5rem; + background-color: var(--scroll-bar-color); + + &-thumb{ + background-color: var(--scroll-thumb-color); + border-radius: .5rem; + + &:hover{ + background-color: var(--text-color-light); + } + } +} diff --git a/assets/scss/components/_security.scss b/assets/scss/components/_security.scss new file mode 100644 index 00000000..1364b8fe --- /dev/null +++ b/assets/scss/components/_security.scss @@ -0,0 +1,9 @@ +/*=============== SECURITY ===============*/ +.security{ + &__container{ + gap: 2.5rem; + } + &__data{ + text-align: center; + } +} diff --git a/assets/scss/components/_services.scss b/assets/scss/components/_services.scss new file mode 100644 index 00000000..74cc90c3 --- /dev/null +++ b/assets/scss/components/_services.scss @@ -0,0 +1,20 @@ +/*=============== SERVICES ===============*/ +.services{ + &__container{ + padding-top: 1rem; + } + &__data{ + display: grid; + row-gap: 1rem; + background-color: var(--container-color); + box-shadow: 0px 2px 6px hsla(var(--hue), 100%, 15%, 0.15); + padding: 2rem 1.5rem; + border-radius: 1rem; + text-align: center; + } + &__img{ + width: 135px; + justify-self: center; + margin-bottom: var(--mb-0-5); + } +} diff --git a/assets/scss/config/_variables.scss b/assets/scss/config/_variables.scss new file mode 100644 index 00000000..669201e1 --- /dev/null +++ b/assets/scss/config/_variables.scss @@ -0,0 +1,58 @@ +/*=============== GOOGLE FONTS ===============*/ +@import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;600;700&display=swap'); + +/*=============== VARIABLES CSS ===============*/ +:root{ + --header-height: 3rem; + + /*========== Colors ==========*/ + --hue: 45; // Yellow: 45 | Red: 4 | Orange: 18 | Green: 118 + --sat: 98%; // Yellow: 98% | Red: 90% | Orange: 85% | Green: 50% + --first-color: hsl(var(--hue), var(--sat), 60%); + --first-color-light: hsl(var(--hue), var(--sat), 85%); + --first-color-lighten: hsl(var(--hue), var(--sat), 80%); + --first-color-alt: hsl(var(--hue), var(--sat), 53%); + --title-color: hsl(var(--hue), 4%, 15%); + --text-color: hsl(var(--hue), 4%, 35%); + --text-color-light: hsl(var(--hue), 4%, 65%); + --body-color: hsl(var(--hue), 0%, 100%); + --container-color: #FFF; + --scroll-bar-color: hsl(var(--hue), 4%, 85%); + --scroll-thumb-color: hsl(var(--hue), 4%, 75%); + + + /*========== Font and typography ==========*/ + --body-font: 'Poppins', sans-serif; + + --biggest-font-size: 2rem; + --h2-font-size: 1.25rem; + --h3-font-size: 1.125rem; + --normal-font-size: .938rem; + --small-font-size: .813rem; + --smaller-font-size: .75rem; + + // Responsive typography + @media screen and (min-width: 968px){ + --biggest-font-size: 3rem; + --h2-font-size: 1.75rem; + --h3-font-size: 1.25rem; + --normal-font-size: 1rem; + --small-font-size: .875rem; + --smaller-font-size: .813rem; + } + + /*========== Font weight ==========*/ + --font-semi-bold: 600; + --font-bold: 700; + + /*========== Margenes ==========*/ + --mb-0-5: .5rem; + --mb-0-75: .75rem; + --mb-1: 1rem; + --mb-1-5: 1.5rem; + --mb-2: 2rem; + + /*========== z index ==========*/ + --z-tooltip: 10; + --z-fixed: 100; +} diff --git a/assets/scss/layout/_layout.scss b/assets/scss/layout/_layout.scss new file mode 100644 index 00000000..b12442fa --- /dev/null +++ b/assets/scss/layout/_layout.scss @@ -0,0 +1,36 @@ +/*=============== REUSABLE CSS CLASSES ===============*/ +.section{ + padding: 4.5rem 0 1rem; + + &__title, &__title-center{ + font-size: var(--h2-font-size); + color: var(--title-color); + text-align: center; + margin-bottom: var(--mb-1); + } +} + +.svg{ + &__color{ + fill: var(--first-color); + } + &__blob{ + fill: var(--first-color-light); + } + &__img{ + width: 300px; + justify-self: center; + } +} + +/*=============== LAYOUT ===============*/ +.container{ + max-width: 968px; + margin-left: var(--mb-1-5); + margin-right: var(--mb-1-5); +} + +.grid{ + display: grid; + gap: 1.5rem; +} diff --git a/assets/scss/styles.scss b/assets/scss/styles.scss new file mode 100644 index 00000000..4919af13 --- /dev/null +++ b/assets/scss/styles.scss @@ -0,0 +1,16 @@ +// Import of partial files +@import 'config/variables'; +@import 'base/base'; +@import 'theme/theme'; +@import 'layout/layout'; +@import 'components/header'; +@import 'components/home'; +@import 'components/buttons'; +@import 'components/about'; +@import 'components/security'; +@import 'components/services'; +@import 'components/app'; +@import 'components/contact'; +@import 'components/footer'; +@import 'components/scroll'; +@import 'components/mediaqueries'; diff --git a/assets/scss/theme/_theme.scss b/assets/scss/theme/_theme.scss new file mode 100644 index 00000000..85540d41 --- /dev/null +++ b/assets/scss/theme/_theme.scss @@ -0,0 +1,25 @@ +/*=============== THEME ===============*/ +/*========== Variables Dark theme ==========*/ +body.dark-theme{ + --first-color-light: hsl(var(--hue), var(--sat), 75%); + --title-color: hsl(var(--hue), 4%, 95%); + --text-color: hsl(var(--hue), 4%, 80%); + --body-color: hsl(var(--hue), 8%, 13%); + --container-color: hsl(var(--hue), 8%, 16%); + --scroll-bar-color: hsl(var(--hue), 4%, 32%); + --scroll-thumb-color: hsl(var(--hue), 4%, 24%); +} + +/*========== Button Dark/Light ==========*/ +.change-theme { + position: absolute; + right: 1.5rem; + top: 2.2rem; + color: var(--title-color); + font-size: 1.8rem; + cursor: pointer; +} + +.dark-theme .footer{ + background-color: var(--container-color); +} diff --git a/chatbox.css b/chatbox.css new file mode 100644 index 00000000..c52918b5 --- /dev/null +++ b/chatbox.css @@ -0,0 +1,197 @@ +/* Import Google font - Poppins */ +@import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;500;600&display=swap'); + +* { + margin: 0; + padding: 0; + box-sizing: border-box; + font-family: "Poppins", sans-serif; +} +body { + +} +.chatbot-toggler { + + position: fixed; + bottom: 30px; + right: 35px; + outline: none; + border: none; + height: 50px; + width: 50px; + display: flex; + cursor: pointer; + align-items: center; + justify-content: center; + border-radius: 50%; + background: #4178c0; + transition: all 0.2s ease; +} +body.show-chatbot .chatbot-toggler { + transform: rotate(90deg); +} +.chatbot-toggler span { + color: #fff; + position: absolute; +} +.chatbot-toggler span:last-child, +body.show-chatbot .chatbot-toggler span:first-child { + opacity: 0; +} +body.show-chatbot .chatbot-toggler span:last-child { + opacity: 1; +} +.chatbot { + z-index: 1; + position: fixed; + right: 35px; + bottom: 90px; + width: 420px; + background: #fff; + border-radius: 15px; + overflow: hidden; + opacity: 0; + pointer-events: none; + transform: scale(0.5); + transform-origin: bottom right; + box-shadow: 0 0 128px 0 rgba(0,0,0,0.1), + 0 32px 64px -48px rgba(0,0,0,0.5); + transition: all 0.1s ease; +} +body.show-chatbot .chatbot { + opacity: 1; + pointer-events: auto; + transform: scale(1); +} +.chatbot header { + padding: 16px 0; + position: relative; + text-align: center; + color: #fff; + background: #4178c0; + box-shadow: 0 2px 10px rgba(0,0,0,0.1); +} +.chatbot header span { + position: absolute; + right: 15px; + top: 50%; + display: none; + cursor: pointer; + transform: translateY(-50%); +} +header h2 { + font-size: 1.4rem; +} +.chatbot .chatbox { + overflow-y: auto; + height: 510px; + padding: 30px 20px 100px; +} +.chatbot :where(.chatbox, textarea)::-webkit-scrollbar { + width: 6px; +} +.chatbot :where(.chatbox, textarea)::-webkit-scrollbar-track { + background: #fff; + border-radius: 25px; +} +.chatbot :where(.chatbox, textarea)::-webkit-scrollbar-thumb { + background: #ccc; + border-radius: 25px; +} +.chatbox .chat { + display: flex; + list-style: none; +} +.chatbox .outgoing { + margin: 20px 0; + justify-content: flex-end; +} +.chatbox .incoming span { + width: 32px; + height: 32px; + color: #fff; + cursor: default; + text-align: center; + line-height: 32px; + align-self: flex-end; + background: #4178c0; + border-radius: 4px; + margin: 0 10px 7px 0; +} +.chatbox .chat p { + white-space: pre-wrap; + padding: 12px 16px; + border-radius: 10px 10px 0 10px; + max-width: 75%; + color: #fff; + font-size: 0.95rem; + background: #4178c0; +} +.chatbox .incoming p { + border-radius: 10px 10px 10px 0; +} +.chatbox .chat p.error { + color: #721c24; + background: #f8d7da; +} +.chatbox .incoming p { + color: #000; + background: #f2f2f2; +} +.chatbot .chat-input { + display: flex; + gap: 5px; + position: absolute; + bottom: 0; + width: 100%; + background: #fff; + padding: 3px 20px; + border-top: 1px solid #ddd; +} +.chat-input textarea { + height: 55px; + width: 100%; + border: none; + outline: none; + resize: none; + max-height: 180px; + padding: 15px 15px 15px 0; + font-size: 0.95rem; +} +.chat-input span { + align-self: flex-end; + color: #4178c0; + cursor: pointer; + height: 55px; + display: flex; + align-items: center; + visibility: hidden; + font-size: 1.35rem; +} +.chat-input textarea:valid ~ span { + visibility: visible; +} + +@media (max-width: 490px) { + .chatbot-toggler { + right: 20px; + bottom: 20px; + } + .chatbot { + right: 0; + bottom: 0; + height: 100%; + border-radius: 0; + width: 100%; + } + .chatbot .chatbox { + height: 90%; + padding: 25px 15px 100px; + } + .chatbot .chat-input { + padding: 5px 15px; + } + .chatbot header span { + display: block; + } +} \ No newline at end of file diff --git a/chatboxx.js b/chatboxx.js new file mode 100644 index 00000000..c02fc282 --- /dev/null +++ b/chatboxx.js @@ -0,0 +1,143 @@ +const chatbotToggler = document.querySelector(".chatbot-toggler"); +const closeBtn = document.querySelector(".close-btn"); +const chatbox = document.querySelector(".chatbox"); +const chatInput = document.querySelector(".chat-input textarea"); +const sendChatBtn = document.querySelector(".chat-input span"); + +let userMessage = null; // Variable to store user's message +let appointmentStep = 0; // Variable to track the appointment scheduling steps +let selectedDoctor = null; // Variable to store the selected doctor +let appointmentDetails = {}; // Object to store appointment details + +const inputInitHeight = chatInput.scrollHeight; + +const predefinedQA = { + "Hi": "Hello", + "Hey":"Hello", + "How are you?": "I'm just a bot, but I'm doing great! How can I assist you today?", + "What is your name?": "I am a chatbot created to assist you.", + "Tell me a joke.": "Why don't scientists trust atoms? Because they make up everything!", + "What is RapiDoc?": "RapiDoc is an online platform which enables you to get information about your nearest hospitals and healthcare facilities. It aims to address health-related issues. It is a one-stop destination for all your medical needs.", + "How can RapiDoc help me?": "RapiDoc helps you find the nearest hospitals and healthcare facilities, ensuring you have access to necessary medical information and services quickly and easily.", + "What services does RapiDoc provide?": "RapiDoc provides information on nearby hospitals, healthcare facilities, and various medical services to address your health-related needs.", + "Make an appointment": "Sure, here are some doctors available for appointments:\n1. Dr. Vikas Chopra\n2. Dr. Ajay Aggarwal\n3. Dr. Soni Gupta\nPlease type the number of the doctor you want to make an appointment with." +}; + +const doctorsList = { + "1": "Dr. Vikas Chopra", + "2": "Dr. Ajay Aggarwal", + "3": "Dr. Soni Gupta" +}; + +const createChatLi = (message, className) => { + const chatLi = document.createElement("li"); + chatLi.classList.add("chat", `${className}`); + let chatContent = className === "outgoing" ? `

` : `smart_toy

`; + chatLi.innerHTML = chatContent; + chatLi.querySelector("p").textContent = message; + return chatLi; +} + +const generateResponse = (chatElement) => { + const API_URL = "https://api.openai.com/v1/chat/completions"; + const messageElement = chatElement.querySelector("p"); + + const requestOptions = { + method: "POST", + headers: { + "Content-Type": "application/json", + "Authorization": `Bearer ${API_KEY}` + }, + body: JSON.stringify({ + model: "gpt-3.5-turbo", + messages: [{ role: "user", content: userMessage }], + }) + } + + fetch(API_URL, requestOptions).then(res => res.json()).then(data => { + messageElement.textContent = data.choices[0].message.content.trim(); + }).catch(() => { + messageElement.classList.add("error"); + messageElement.textContent = "Oops! Something went wrong. Please try again."; + }).finally(() => chatbox.scrollTo(0, chatbox.scrollHeight)); +} + +const handleAppointment = (userMessage) => { + if (appointmentStep === 0) { + selectedDoctor = doctorsList[userMessage]; + if (!selectedDoctor) { + chatbox.appendChild(createChatLi("Invalid doctor number. Please try again.", "incoming")); + return; + } + chatbox.appendChild(createChatLi(`You selected ${selectedDoctor}. Please enter the date for your appointment (YYYY-MM-DD).`, "incoming")); + appointmentStep++; + } else if (appointmentStep === 1) { + const date = userMessage; + if (!date.match(/^\d{4}-\d{2}-\d{2}$/)) { + chatbox.appendChild(createChatLi("Invalid date format. Please enter the date in YYYY-MM-DD format.", "incoming")); + return; + } + appointmentDetails.date = date; + chatbox.appendChild(createChatLi("Please enter the time for your appointment (HH:MM).", "incoming")); + appointmentStep++; + } else if (appointmentStep === 2) { + const time = userMessage; + if (!time.match(/^\d{2}:\d{2}$/)) { + chatbox.appendChild(createChatLi("Invalid time format. Please enter the time in HH:MM format.", "incoming")); + return; + } + appointmentDetails.time = time; + chatbox.appendChild(createChatLi(`Appointment scheduled with ${selectedDoctor} on ${appointmentDetails.date} at ${appointmentDetails.time}.`, "incoming")); + appointmentStep = 0; + selectedDoctor = null; + appointmentDetails = {}; + } +} + +const handleChat = () => { + userMessage = chatInput.value.trim(); + if (!userMessage) return; + + chatInput.value = ""; + chatInput.style.height = `${inputInitHeight}px`; + + chatbox.appendChild(createChatLi(userMessage, "outgoing")); + chatbox.scrollTo(0, chatbox.scrollHeight); + + if (appointmentStep > 0) { + handleAppointment(userMessage); + } else if (predefinedQA[userMessage]) { + setTimeout(() => { + const incomingChatLi = createChatLi(predefinedQA[userMessage], "incoming"); + chatbox.appendChild(incomingChatLi); + chatbox.scrollTo(0, chatbox.scrollHeight); + }, 600); + } else if (Object.keys(doctorsList).includes(userMessage)) { + setTimeout(() => { + handleAppointment(userMessage); + }, 600); + } else { + setTimeout(() => { + const incomingChatLi = createChatLi("Thinking...", "incoming"); + chatbox.appendChild(incomingChatLi); + chatbox.scrollTo(0, chatbox.scrollHeight); + generateResponse(incomingChatLi); + }, 600); + } +} + +chatInput.addEventListener("input", () => { + chatInput.style.height = `${inputInitHeight}px`; + chatInput.style.height = `${chatInput.scrollHeight}px`; +}); + +chatInput.addEventListener("keydown", (e) => { + if (e.key === "Enter" && !e.shiftKey && window.innerWidth > 800) { + e.preventDefault(); + handleChat(); + } +}); + +sendChatBtn.addEventListener("click", handleChat); +closeBtn.addEventListener("click", () => document.body.classList.remove("show-chatbot")); +chatbotToggler.addEventListener("click", () => document.body.classList.toggle("show-chatbot")); diff --git a/dex.html b/dex.html new file mode 100644 index 00000000..7efc5fdc --- /dev/null +++ b/dex.html @@ -0,0 +1,221 @@ + + + + + + + + + + + + + RAPIDOC|Delivery + + + + + +
+ +
+
+
+

RAPIDOC|Delivery
Order Medicines

+

Order your Medicine at any time and we will deliver them right to where you are.

+ + Get Started +home +
+
+
+ + +
+
+
+

Find Out A Little More
About Us

+

We are a company dedicated to the distribution of products by delivery + to your home or to the place where you are, with the best quality of delivery. +

+ about +
+
+
+ + +
+
+
+

Your Safety Is
Important

+

When your order reaches you, we have the health safety protocols, + so that you are protected from any disease. Watch the video of how the delivery is made. +

+ +
+ about +
+
+ + +
+

Some Services We
Offer

+
+
+

Payment Done

+ imog +

Pay with a Visa or PayPal card and without much ado.

+ +
+ +
+

Find Your Product

+ imog +

We offer sale of products through the Internet.

+ +
+ +
+

Product Received

+ imog +

In our app you can see the delay time of your order.

+ +
+
+
+ + +
+
+
+

Watch Your Delivery
At Any Time

+

With our app you can view the route of your order, from our local headquarters to the + place where you are. Look for the app now!

+ + +
+ home1 +
+ +
+ + +
+
+
+

Contact Us From
Here

+

You can contact us from here, you can write to us, + call us or visit our service center, we will gladly assist you.

+
+ +
    +
  • Email: delivery@email.com
  • +
  • Location: New Delhi
  • +
+ + +
+
+
+ + + + + + + + + + + diff --git a/index.html b/index.html index 6236a25a..579433e1 100644 --- a/index.html +++ b/index.html @@ -115,11 +115,125 @@ right: 0; } } +/*Preloader CSS*/ +.pre{ + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; + display: flex; + justify-content: center; + align-items: center; + transition: opacity 2s ease-out, visibility 2s ease-out; + opacity: 1; + visibility: visible; + z-index: 9999; +} + +.pre--hidden { + opacity: 0; + visibility: hidden; +} + +.loader { + display: block; + position: relative; + width: 150px; + height: 150px; + border-radius: 50%; + border: 3px solid transparent; + border-top-color: #55a5ea; + animation: spin 3s linear infinite; +} +.loader:before { + content: ""; + position: absolute; + top: 5px; + left: 5px; + right: 5px; + bottom: 5px; + border-radius: 50%; + border: 3px solid transparent; + border-top-color: #3fbcc0c6; + animation: spin 3s linear infinite; +} + +.loader:after { + content: ""; + position: absolute; + top: 15px; + left: 15px; + right: 15px; + bottom: 15px; + border-radius: 50%; + border: 3px solid transparent; + border-top-color: #fff; + animation: spin 1.5s linear infinite; +} + +@keyframes spin { + 0% { + transform: rotate(0deg); + } + 100% { + transform: rotate(360deg); + } +} + + +.loader--hidden{ + opacity: 0; + visibility: hidden; +} + + + + + +
+
+
+ + +
+
+ +
+ + + + +
+
    +
  • + smart_toy +

    Hi there 👋
    How can I help you today?

    +
  • +
+
+ + send +
+ + @@ -146,8 +260,6 @@

RapiDoc

- -
@@ -168,7 +280,6 @@

- @@ -295,7 +406,7 @@

SERVICES

- +

Nearest Labs

Test labs and clinics near you.


@@ -329,59 +440,55 @@

Services

Our services are for your good health. We are with you at every digital step.

-
-
+

Clinics/Labs

-

Locate the best healthcare facilities around you hassle-free.

+

Locate the best healthcare facilities around you hassle-free.From routine check-ups to specialized treatments, find the right clinic or lab that meets your needs. Our database is updated regularly to ensure you have the most accurate information.

-
+

Pharmacy

-

Get your prescribed medicines delivered at your doorstep.

+

Get your prescribed medicines delivered at your doorstep.Our pharmacy service ensures you never miss a dose with timely reminders and easy refill options. Enjoy the convenience of home delivery and exclusive discounts on a wide range of medicines.

-
+

Daily Feed

-

Access to heath benefits like bootcamps, vaccination drives and much more - .

+

Access to heath benefits like bootcamps, vaccination drives and much more.Stay informed about the latest health trends, wellness tips, and upcoming events in your area. Participate in community health initiatives and boost your wellbeing. +

-
+

Blood Bank

-

Know the blood banks and blood groups available around you. No one should suffer ỉn emergencies.

+

Know the blood banks and blood groups available around you. No one should suffer ỉn emergencies.Find the nearest blood donation centers, check blood availability, and get information on how to donate or request blood in urgent situations.

-
+

Disabled Person

-

Convenient medical care is here. Wheelchair accessible hospitals and clinics, find all in one go.

+

Convenient medical care is here. Wheelchair accessible hospitals and clinics, find all in one go.Access resources and support tailored to the needs of individuals with disabilities, ensuring a seamless healthcare experience for everyone.

-
+

Health Post

-

Weekly, monthly, yearly or each day, however you like it!

+

Weekly, monthly, yearly or each day, however you like it! Subscribe to our health post for expert articles, tips, and insights to help you make informed health decisions.

-
- -
@@ -800,7 +907,7 @@

Quick Links

@@ -941,7 +1048,7 @@

RAPIDOC Newsletter

- + + diff --git a/js/login.js b/js/login.js new file mode 100644 index 00000000..270bd7f6 --- /dev/null +++ b/js/login.js @@ -0,0 +1,113 @@ +const signUpButton = document.getElementById("signUp"); +const signInButton = document.getElementById("signIn"); +const container = document.getElementById("container"); +let uppass = []; +let inpass = []; +let userImgPassInput = []; +signUpButton.addEventListener("click", () => { + container.classList.add("right-panel-active"); + inpass = []; + uppass = []; +}); + +signInButton.addEventListener("click", () => { + container.classList.remove("right-panel-active"); + inpass = []; + uppass = []; +}); +// adding and removing border +function upimg(element) { + var Image = element.querySelector("img"); + if (Image) { + if (Image.classList.contains("clicked")) { + Image.classList.remove("clicked"); + uppass.splice(uppass.indexOf(element.id), 1); + } else { + Image.classList.add("clicked"); + uppass.push(element.id); + } + } +} + +function inimg(element) { + var Image = element.querySelector("img"); + if (Image) { + if (Image.classList.contains("clicked")) { + Image.classList.remove("clicked"); + } else { + Image.classList.add("clicked"); + } + } +} +// element image recognition +function signup() { + sessionStorage.setItem("upname", document.getElementById("upmail").value); + sessionStorage.setItem("uppass", uppass); + sessionStorage.setItem("userpass", document.getElementById("s-pass").value); + var myText = "Account Created Succesfully"; + alert(myText); +} +// image pattern authentication +var v2 = new Boolean(false); +function signin() { + userImgPassInput = []; + const userEmailInput = document.getElementById("inmail").value; + const userPassInput = document.getElementById("l-pass").value; + const userImgPass = sessionStorage.getItem("uppass"); + const userEmail = sessionStorage.getItem("upname"); + const userPass = sessionStorage.getItem("userpass"); + const clickedImage = document.getElementsByClassName("clicked"); + for (let index = 0; index < clickedImage.length; index++) { + userImgPassInput.push(clickedImage[index].parentElement.id); + } + console.log(userPass, userPassInput); + if (!graphicMode) { + if ( + userImgPass === userImgPassInput.toString() && + userEmailInput === userEmail + ) { + var myText = "Login is successful"; + alert(myText); + NewTab(); + } else { + var myText = "Login Failed"; + alert(myText); + } + } else { + if ( + userImgPass === userImgPassInput.toString() && + userEmailInput === userEmail && + userPassInput.toString() == userPass.toString() + ) { + var myText = "Login is successful"; + alert(myText); + NewTab(); + } else { + var myText = "Login Failed"; + alert(myText); + } + } +} + +function NewTab() { + window.open("index.html", "_blank"); +} + +// TIMEPASS KA CODE // +// const inpassBtn = document.getElementsByClassName("inpass"); +// const timepassBtn = document.getElementsByClassName("timepass"); +// graphicMode = true; +// for (let index = 0; index < timepassBtn.length; index++) { +// timepassBtn[index].addEventListener("click", function (event) { +// console.log(event.target); +// if (graphicMode) { +// graphicMode = false; +// inpassBtn[0].style.display = "none"; +// inpassBtn[1].style.display = "none"; +// } else { +// graphicMode = true; +// inpassBtn[0].style.display = "block"; +// inpassBtn[1].style.display = "block"; +// } +// }); +// } \ No newline at end of file diff --git a/log/favicon.ico b/log/favicon.ico new file mode 100644 index 00000000..09cbadfe Binary files /dev/null and b/log/favicon.ico differ diff --git a/log/image.gif b/log/image.gif new file mode 100644 index 00000000..1eb81938 Binary files /dev/null and b/log/image.gif differ diff --git a/log/login.css b/log/login.css new file mode 100644 index 00000000..d933b3ba --- /dev/null +++ b/log/login.css @@ -0,0 +1,314 @@ +@import url("https://fonts.googleapis.com/css2?family=Poppins"); + +* { + box-sizing: border-box; +} + +body { + display: flex; + background-color: #f6f5f7; + justify-content: center; + align-items: center; + flex-direction: column; + font-family: "Poppins", sans-serif; + overflow: hidden; + height: 100vh; +} + +h1 { + font-weight: 700; + letter-spacing: -1.5px; + margin: 0; + margin-bottom: 15px; +} + +h1.title { + font-size: 45px; + line-height: 45px; + margin: 0; + text-shadow: 0 0 10px rgba(16, 64, 74, 0.5); +} + +p { + font-size: 14px; + font-weight: 100; + line-height: 20px; + letter-spacing: 0.5px; + margin: 20px 0 30px; + text-shadow: 0 0 10px rgba(16, 64, 74, 0.5); +} + +span { + font-size: 14px; + margin-top: 25px; +} + +a { + color: #333; + font-size: 14px; + text-decoration: none; + margin: 15px 0; + transition: 0.3s ease-in-out; +} + +a:hover { + color: #4bb6b7; +} + +.content { + display: flex; + width: 100%; + height: 50px; + align-items: center; + justify-content: space-around; +} + +.content .checkbox { + display: flex; + align-items: center; + justify-content: center; +} + +.content input { + accent-color: #333; + width: 12px; + height: 12px; +} + +.content label { + font-size: 14px; + user-select: none; + padding-left: 5px; +} + +button { + position: relative; + border-radius: 20px; + border: 1px solid #4bb6b7; + background-color: #4bb6b7; + color: #fff; + font-size: 15px; + font-weight: 700; + margin: 10px; + padding: 12px 80px; + letter-spacing: 1px; + text-transform: capitalize; + transition: 0.3s ease-in-out; +} + +button:hover { + letter-spacing: 3px; +} + +button:active { + transform: scale(0.95); +} + +button:focus { + outline: none; +} + +button.ghost { + background-color: rgba(225, 225, 225, 0.2); + border: 2px solid #fff; + color: #fff; +} + +button.ghost i{ + position: absolute; + opacity: 0; + transition: 0.3s ease-in-out; +} + +button.ghost i.register{ + right: 70px; +} + +button.ghost i.login{ + left: 70px; +} + +button.ghost:hover i.register{ + right: 40px; + opacity: 1; +} + +button.ghost:hover i.login{ + left: 40px; + opacity: 1; +} + +form { + background-color: #fff; + display: flex; + align-items: center; + justify-content: center; + flex-direction: column; + padding: 0 50px; + height: 100%; + text-align: center; +} + +input { + background-color: #eee; + border-radius: 10px; + border: none; + padding: 12px 15px; + margin: 8px 0; + width: 100%; +} + +.container { + background-color: #fff; + border-radius: 25px; + box-shadow: 0 14px 28px rgba(0, 0, 0, 0.25), 0 10px 10px rgba(0, 0, 0, 0.22); + position: relative; + overflow: hidden; + width: 768px; + max-width: 100%; + min-height: 500px; +} + +.form-container { + position: absolute; + top: 0; + height: 100%; + transition: all 0.6s ease-in-out; +} + +.login-container { + left: 0; + width: 50%; + z-index: 2; +} + +.container.right-panel-active .login-container { + transform: translateX(100%); +} + +.register-container { + left: 0; + width: 50%; + opacity: 0; + z-index: 1; +} + +.container.right-panel-active .register-container { + transform: translateX(100%); + opacity: 1; + z-index: 5; + animation: show 0.6s; +} + +@keyframes show { + 0%, + 49.99% { + opacity: 0; + z-index: 1; + } + + 50%, + 100% { + opacity: 1; + z-index: 5; + } +} + +.overlay-container { + position: absolute; + top: 0; + left: 50%; + width: 50%; + height: 100%; + overflow: hidden; + transition: transform 0.6s ease-in-out; + z-index: 100; +} + +.container.right-panel-active .overlay-container { + transform: translate(-100%); +} + +.overlay { + background-image: url('image.gif'); + background-repeat: no-repeat; + background-size: cover; + background-position: 0 0; + color: #fff; + position: relative; + left: -100%; + height: 100%; + width: 200%; + transform: translateX(0); + transition: transform 0.6s ease-in-out; +} + +.overlay::before { + content: ""; + position: absolute; + left: 0; + right: 0; + top: 0; + bottom: 0; + background: linear-gradient( + to top, + rgba(46, 94, 109, 0.4) 40%, + rgba(46, 94, 109, 0) + ); +} + +.container.right-panel-active .overlay { + transform: translateX(50%); +} + +.overlay-panel { + position: absolute; + display: flex; + align-items: center; + justify-content: center; + flex-direction: column; + padding: 0 40px; + text-align: center; + top: 0; + height: 100%; + width: 50%; + transform: translateX(0); + transition: transform 0.6s ease-in-out; +} + +.overlay-left { + transform: translateX(-20%); +} + +.container.right-panel-active .overlay-left { + transform: translateX(0); +} + +.overlay-right { + right: 0; + transform: translateX(0); +} + +.container.right-panel-active .overlay-right { + transform: translateX(20%); +} + +.social-container { + margin: 20px 0; +} + +.social-container a { + border: 1px solid #dddddd; + border-radius: 50%; + display: inline-flex; + justify-content: center; + align-items: center; + margin: 0 5px; + height: 40px; + width: 40px; + transition: 0.3s ease-in-out; +} + +.social-container a:hover { + border: 1px solid #4bb6b7; +} \ No newline at end of file diff --git a/log/script.js b/log/script.js new file mode 100644 index 00000000..cdde04e0 --- /dev/null +++ b/log/script.js @@ -0,0 +1,43 @@ +document.addEventListener("DOMContentLoaded", function() { + const registerButton = document.getElementById("register"); + const loginButton = document.getElementById("login"); + const container = document.getElementById("container"); + const registerForm = document.getElementById("registerForm"); + const loginForm = document.getElementById("loginForm"); + + registerButton.addEventListener("click", (event) => { + event.preventDefault(); + container.classList.add("right-panel-active"); + registerForm.scrollIntoView({ behavior: "smooth" }); + }); + + loginButton.addEventListener("click", (event) => { + event.preventDefault(); + container.classList.remove("right-panel-active"); + loginForm.scrollIntoView({ behavior: "smooth" }); + }); + + registerForm.addEventListener("submit", (event) => { + event.preventDefault(); + // Your registration logic goes here + + // Simulate registration success + document.getElementById("registerMessage").style.display = "block"; + setTimeout(() => { + container.classList.remove("right-panel-active"); + loginForm.scrollIntoView({ behavior: "smooth" }); + }, 2000); + }); + + loginForm.addEventListener("submit", (event) => { + event.preventDefault(); + // Your login logic goes here + + // Simulate login success + alert("Login successful!"); + // Redirect to the homepage after login + setTimeout(() => { + window.location.href = "index.html"; // Change "index.html" to your desired URL + }, 1000); // Redirect after 1 second (1000 milliseconds) + }); +}); diff --git a/login.html b/login.html new file mode 100644 index 00000000..d02fe988 --- /dev/null +++ b/login.html @@ -0,0 +1,93 @@ + + + + + + + RAPIDOC + + + + + +
+ +
+
+

RAPIDOC

+ + + + + + +
+
+ + + +
+
+
+

Hello
friends

+

if you have an account, login here and have fun

+ +
+
+

Start your
journey now

+

if you don't have an account yet, join us and start your journey.

+ +
+
+
+ +
+ + + + + diff --git a/style.css b/style.css index 9e74ab59..cc67eecf 100644 --- a/style.css +++ b/style.css @@ -34,6 +34,20 @@ h6 { transition: all 0.3s ease 0s; color: white; } +button { + position: relative; + border-radius: 10px; + border: 1px solid #4bb6b7; + background-color: #4bb6b7; + color: #fff; + font-size: 15px; + font-weight: 700; + margin: 8px; + padding: 8px 50px; + letter-spacing: 1px; + text-transform: capitalize; + transition: 0.3s ease-in-out; +} .nav_link li a:hover { color: #55a5ea; @@ -124,6 +138,7 @@ h6 { padding: 20px; margin-bottom: 20px; border-radius: 10px; + z-index: -1; } @@ -141,11 +156,13 @@ h6 { transition: 0.3s; font-size: 16px; font-weight: 600; + z-index: -1; display: inline-block; } .appointment-btn:hover { background: #55a5ea; + z-index: -1; color: #fff; } @@ -459,6 +476,7 @@ section { } .featured-services .icon-box { + z-index: -1; width: 230px; height: 270px; margin-left: 15px; @@ -476,6 +494,7 @@ section { } .featured-services .icon-box::before { + z-index: -1; content: ''; position: absolute; background: #000; @@ -488,16 +507,19 @@ section { } .featured-services .icon-box:hover::before { + z-index: -1; background: #3fbcc051; top: 0px; border-radius: 50px; } .featured-services .icon1 { + z-index: -1; margin-bottom: 15px; } .featured-services .icon1 i { + z-index: -1; font-size: 48px; line-height: 1; color: #3fbcc0a4; @@ -505,10 +527,12 @@ section { } .featured-services .icon2 { + z-index: -1; margin-bottom: 15px; } .featured-services .icon2 i { + z-index: -1; font-size: 48px; line-height: 1; color: #55a5ea; @@ -516,10 +540,12 @@ section { } .featured-services .icon3 { + z-index: -1; margin-bottom: 15px; } .featured-services .icon3 i { + z-index: -1; font-size: 48px; line-height: 1; color: #55a5ea; @@ -527,10 +553,12 @@ section { } .featured-services .icon4 { + z-index: -1; margin-bottom: 15px; } .featured-services .icon4 i { + z-index: -1; font-size: 48px; line-height: 1; color: #55a5ea; @@ -578,12 +606,14 @@ section { /*################----About----################*/ .about .icon-boxes h4 { + z-index: -1; font-size: 18px; color: #55a5ea; margin-bottom: 15px; } .about .icon-boxes h3 { + z-index: -1; font-size: 28px; font-weight: 700; color: #55a5ea; @@ -591,6 +621,7 @@ section { } .about .icon-box { + z-index: -1; background: #111111; border-radius: 10px; margin-top: 35px; @@ -599,6 +630,7 @@ section { } .about .icon-box .icon { + z-index: -1; float: left; display: flex; align-items: center; @@ -611,20 +643,24 @@ section { } .about .icon-box .icon i { + z-index: -1; color: #3fbcc0a4; font-size: 32px; } .about .icon-box:hover .icon { + z-index: -1; background: #55a5ea; border-color: #55a5ea; } .about .icon-box:hover .icon i { + z-index: -1; color: #fff; } .about .icon-box .title { + z-index: -1; margin-left: 85px; font-weight: 700; @@ -633,6 +669,7 @@ section { } .about .icon-box .title a { + z-index: -1; color: #fff; transition: 0.3s; font-size: 18px; @@ -640,16 +677,19 @@ section { } .about .icon-box .title a:hover { + z-index: -1; color: #55a5ea; } .about .icon-box .description { + z-index: -1; margin-left: 85px; line-height: 24px; font-size: 14px; } .about .video-box { + z-index: -1; background: url("../img/about.png") center center no-repeat; background-size: cover; height: 300px; @@ -658,6 +698,7 @@ section { .about .play-btn { width: 94px; + z-index: -1; height: 94px; background: radial-gradient(#55a5ea 50%, rgba(4, 196, 234, 0.4) 52%); border-radius: 50%; @@ -669,6 +710,7 @@ section { } .about .play-btn::after { + z-index: -1; content: ''; position: absolute; left: 50%; @@ -684,6 +726,7 @@ section { } .about .play-btn::before { + z-index: -1; content: ''; position: absolute; width: 120px; @@ -697,12 +740,14 @@ section { } .about .play-btn:hover::after { + z-index: -1; border-left: 15px solid #55a5ea; transform: scale(20); } .about .play-btn:hover::before { content: ''; + z-index: -1; position: absolute; left: 50%; top: 50%; @@ -748,10 +793,13 @@ section { /*################----Counts----################*/ .counts { /* padding-top: 30px; */ + justify-content: center; } + .counts .count-box { + z-index: -1; box-shadow: -10px -5px 40px 0 rgba(0, 0, 0, 0.1); padding: 50px 80px; margin: 5%; @@ -811,6 +859,7 @@ section { } .counts .count-box p { + z-index: -1; padding: 30px 0 0 0; /* margin: 0; */ font-family: "Roboto", sans-serif; @@ -819,6 +868,7 @@ section { } .counts .count-box a { + z-index: -1; font-weight: 600; display: block; /* margin-top: 10px; */ @@ -895,8 +945,13 @@ section { line-height: 24px; font-size: 14px; margin-bottom: 0; +} - +.services .container { + display: grid; + grid-template-columns: repeat(3, 1fr); + /* gap: 20px; */ + margin-top: 8px; } .services .icon-box:hover { @@ -921,6 +976,31 @@ section { color: #111111; } +/* Styles for medium screens */ +@media (max-width: 991px) { + .services .container { + grid-template-columns: repeat(2, 1fr); + } +} + +/* Styles for smaller screens */ +@media (max-width: 767px) { + .services .container { + grid-template-columns: 1fr; + } +} + +/* Additional smaller adjustments */ +@media (max-width: 575px) { + .services .icon-box { + padding: 20px; + } + .services .icon i { + font-size: 30px; + } +} + + /*################----Appointments----################*/