/*=============== GOOGLE FONTS ===============*/ @import url("https://fonts.googleapis.com/css2?family=Montagu+Slab:wght@500&family=Montserrat:wght@400;500;600&display=swap"); /*=============== VARIABLES CSS ===============*/ :root { --header-height: 3.5rem; /*========== Colors ==========*/ /*Color mode HSL(hue, saturation, lightness)*/ --first-color: #5e0011; --title-color: hsl(230, 70%, 16%); --text-color: hsl(230, 16%, 45%); --border-color: #a67c87; --white-color: hsl(0, 0%, 100%); --body-color: #f2dce0; --container-color: #f6d7df; /*========== Font and typography ==========*/ /*.5rem = 8px | 1rem = 16px ...*/ --body-font: "Montserrat", sans-serif; --second-font: "Montagu Slab", serif; --biggest-font-size: 2rem; --h1-font-size: 1.5rem; --h2-font-size: 1.25rem; --h3-font-size: 1rem; --normal-font-size: 0.938rem; --small-font-size: 0.813rem; --smaller-font-size: 0.75rem; /*========== Font weight ==========*/ --font-regular: 400; --font-medium: 500; --font-semi-bold: 600; /*========== z index ==========*/ --z-tooltip: 10; --z-fixed: 100; } /*========== Responsive typography ==========*/ @media screen and (min-width: 1150px) { :root { --biggest-font-size: 3.5rem; --h1-font-size: 2.25rem; --h2-font-size: 1.5rem; --h3-font-size: 1.25rem; --normal-font-size: 1rem; --small-font-size: 0.875rem; --smaller-font-size: 0.813rem; } } /*=============== BASE ===============*/ * { box-sizing: border-box; padding: 0; margin: 0; } html { scroll-behavior: smooth; } body, input, button { font-family: var(--body-font); font-size: var(--normal-font-size); } body { background-color: var(--body-color); color: var(--text-color); transition: background-color 0.4s; } input, button { border: none; outline: none; } h1, h2, h3, h4 { color: var(--title-color); font-family: var(--second-font); font-weight: var(--font-medium); } ul { list-style: none; } a { text-decoration: none; } img { display: block; max-width: 100%; height: auto; } /*=============== THEME ===============*/ /*========== Variables Dark theme ==========*/ body.dark-theme { --title-color: hsl(230, 48%, 85%); --text-color: hsl(230, 16%, 70%); --border-color: hsl(230, 12%, 18%); --body-color: hsl(230, 12%, 8%); --container-color: hsl(230, 12%, 12%); } /*========== Color changes in some parts of the website, in dark theme ==========*/ .dark-theme .shadow-header { box-shadow: 0 2px 16px hsla(0, 0%, 0%, 0.4); } .dark-theme .nav__menu { box-shadow: 0 -8px 32px hsla(0, 0%, 0%, 0.4); } .dark-theme .scrollup { box-shadow: 0 2px 8px hsla(0, 0%, 0%, 0.4); } .dark-theme .search, .dark-theme .login { background-color: hsla(230, 12%, 8%, 0.6); } .dark-theme::-webkit-scrollbar { background-color: hsl(230, 16%, 15%); } .dark-theme::-webkit-scrollbar-thumb { background-color: hsl(230, 16%, 25%); } .dark-theme::-webkit-scrollbar-thumb:hover { background-color: hsl(230, 16%, 35%); } /*=============== REUSABLE CSS CLASSES ===============*/ .container { max-width: 1220px; margin-inline: 1.5rem; } .grid { display: grid; gap: 1.5rem; } .section { padding-block: 5rem 1rem; } .section__title { text-align: center; font-size: var(--h1-font-size); font-family: var(--second-font); margin-bottom: 2rem; } .main { overflow: hidden; /* For animation ScrollReveal */ } /*=============== HEADER & NAV ===============*/ .header { position: fixed; top: 0; left: 0; width: 100%; background-color: var(--body-color); z-index: var(--z-fixed); transition: box-shadow 0.4s, background-color 0.4s; } .nav { height: var(--header-height); display: flex; justify-content: space-between; align-items: center; } .nav__logo { display: inline-flex; align-items: center; column-gap: 0.5rem; color: var(--first-color); font-weight: var(--font-medium); } .nav__logo i { font-size: 1.25rem; } /* Navigation for mobile devices */ @media screen and (max-width: 1150px) { .nav__menu { position: fixed; bottom: 0; left: 0; right: 0; width: 100%; background-color: var(--container-color); box-shadow: 0 -8px 32px hsla(0, 0%, 0%, 0.1); padding: 1.25rem 4rem; transition: background-color 0.4s; } } .nav__list { display: flex; justify-content: space-between; } .nav__link { color: var(--text-color); transition: color 0.4s; } .nav__link span { display: none; } .nav__link i { font-size: 1.25rem; } .nav__link:hover { color: var(--first-color); } .nav__actions { display: flex; align-items: center; column-gap: 1rem; } .nav__actions i { font-size: 1.25rem; color: var(--title-color); cursor: pointer; transition: color 0.4s; } .nav__actions i:hover { color: var(--first-color); } /* Add shadow header */ .shadow-header { box-shadow: 0 2px 16px hsla(0, 0%, 0%, 0.1); } /* Active link */ .active-link { color: var(--first-color); } /*=============== SEARCH ===============*/ .search { position: fixed; top: -100%; left: 0; width: 100%; height: 100%; z-index: var(--z-fixed); background-color: hsla(230, 62%, 96%, 0.6); backdrop-filter: blur(16px); padding: 8rem 1.5rem; transition: top 0.4s; } .search__form { display: flex; align-items: center; column-gap: 0.5rem; background-color: var(--container-color); border: 2px solid var(--border-color); padding-inline: 1rem; } .search__icon { font-size: 1.25rem; color: var(--title-color); } .search__input { width: 100%; padding-block: 1rem; background-color: var(--container-color); color: var(--text-color); } .search__close { position: absolute; top: 2rem; right: 2rem; font-size: 2rem; color: var(--title-color); cursor: pointer; } /* Show search */ .show-search { top: 0; } /* =============== SHOPPING BAG =============== */ .bag { position: fixed; top: -100%; left: 0; height: 100%; width: 100%; z-index: var(--z-fixed); background-color: hsla(230, 62%, 96%, 0.6); backdrop-filter: blur(16px); align-items: center; padding: 1.5rem; text-align: left; transition: top 0.4s; } .bag__form { background-color: var(--container-color); padding: 2rem 1.5rem; border: 2px solid var(--border-color); row-gap: 1.25rem; } .bag__title { font-size: var(--h2-font-size); } .bag__group { row-gap: 1.25rem; } .bag__close { position: absolute; top: 2rem; right: 2rem; font-size: 2rem; color: var(--title-color); cursor: pointer; } /* Show search */ .show-bag { top: 0; } .bag__qr { display: flex; justify-content: center; } .bag__qr img { width: 50%; } /*=============== LOGIN ===============*/ .login { position: fixed; top: -100%; left: 0; width: 100%; height: 100%; z-index: var(--z-fixed); background-color: hsla(230, 62%, 96%, 0.6); backdrop-filter: blur(16px); align-items: center; padding: 1.5rem; text-align: center; transition: top 0.4s; } .login__form { background-color: var(--container-color); padding: 2rem 1.5rem; border: 2px solid var(--border-color); row-gap: 1.25rem; } .login__title { font-size: var(--h2-font-size); } .login__group { row-gap: 1.25rem; } .login__label { display: block; text-align: initial; color: var(--title-color); font-weight: var(--font-medium); margin-bottom: 0.25rem; } .login__input { width: 100%; background-color: var(--container-color); border: 2px solid var(--border-color); padding: 1rem; color: var(--text-color); } .login__signup, .login__forgot { display: block; font-size: var(--small-font-size); } .login__signup { margin-bottom: 0.5rem; } .login__signup a { color: var(--first-color); font-weight: var(--font-medium); } .login__forgot { color: var(--first-color); margin-bottom: 1.25rem; } .login__button { width: 100%; cursor: pointer; } .login__close { position: absolute; top: 2rem; right: 2rem; font-size: 2rem; color: var(--title-color); cursor: pointer; } /* Show login */ .show-login { top: 0; } /*=============== HOME ===============*/ .home__swiper { margin: initial; } .home__container { padding-top: 2rem; row-gap: 2.5rem; } .home__data { text-align: center; } .home__title { font-size: var(--biggest-font-size); margin-bottom: 1rem; } .home__description { margin-bottom: 2rem; } .home__images { display: grid; } .home__article, .home__img { width: 220px; transition: scale 0.4s; } .home__article { scale: 0.8; } /* Swiper class */ .swiper-slide-active, .swiper-slide-duplicate-active { scale: 1; } /*=============== BUTTON ===============*/ .button { display: inline-block; background-color: var(--first-color); color: var(--white-color); font-weight: var(--font-semi-bold); padding: 1rem 1.5rem; transition: box-shadow 0.4s; border-radius: 10px; } .button:hover { /* box-shadow: 0 4px 32px hsla(230, 72%, 32%, 0.4); */ box-shadow: 0 4px 32px #a11f37; } /*=============== SERVICES ===============*/ .services__container { row-gap: 3rem; } .services__card { text-align: center; } .services__card i { display: block; font-size: 3rem; color: var(--first-color); margin-bottom: 1rem; } .services__title { font-size: var(--h3-font-size); margin-bottom: 0.5rem; } /*=============== FEATURED ===============*/ .featured__card { position: relative; text-align: center; background-color: var(--container-color); padding: 2rem; overflow: hidden; border: 2px solid var(--border-color); transition: border 0.4s, background-color 0.4s; border-radius: 10px; } .featured__img { width: 150px; margin: 0 auto 0.75rem; } .featured__title { font-size: var(--h2-font-size); margin-bottom: 0.5rem; } .featured__prices { display: flex; justify-content: center; align-items: center; column-gap: 0.75rem; margin-bottom: 1.25rem; } .featured__discount { color: var(--title-color); } .featured__price { font-size: var(--small-font-size); text-decoration: line-through; } .featured__card .button { cursor: pointer; } .featured__actions { display: inline-flex; flex-direction: column; row-gap: 0.75rem; position: absolute; top: 2rem; right: -1.5rem; transition: right 0.4s; } .featured__actions button { background: none; font-size: 1.25rem; color: var(--first-color); cursor: pointer; } .featured__card:hover .featured__actions { right: 1.5rem; } /* Swiper class */ .swiper-button-prev::after, .swiper-button-next::after { content: ""; } .swiper-button-prev, .swiper-button-next { width: initial; height: initial; background-color: var(--container-color); border: 2px solid var(--border-color); padding: 0.5rem; font-size: 1.5rem; color: var(--first-color); transition: border 0.4s, background-color 0.4s; border-radius: 10px; } /*=============== FEATURED CATEGORIES ===============*/ .featured__category { margin-bottom: 4rem; } .featured__category:last-child { margin-bottom: 0; } .featured__category-header { text-align: center; margin-bottom: 2rem; padding: 2rem 1rem; background: linear-gradient(135deg, var(--first-color) 0%, #8e0022 100%); border-radius: 20px; position: relative; overflow: hidden; } .featured__category-header::before { content: ""; position: absolute; top: 0; left: 0; right: 0; bottom: 0; background: url('data:image/svg+xml,'); pointer-events: none; } .featured__category-title { color: var(--white-color); font-size: var(--h2-font-size); font-weight: var(--font-semi-bold); margin-bottom: 0.5rem; display: flex; align-items: center; justify-content: center; gap: 0.75rem; position: relative; z-index: 1; } .featured__category-title i { font-size: 1.5rem; background: var(--white-color); color: var(--first-color); padding: 0.5rem; border-radius: 50%; } .featured__category-desc { color: var(--white-color); font-size: var(--normal-font-size); opacity: 0.9; max-width: 400px; margin: 0 auto; position: relative; z-index: 1; } /* Category specific styling */ .featured__category:nth-child(2) .featured__category-header { background: linear-gradient(135deg, #2ecc71 0%, #27ae60 100%); } .featured__category:nth-child(3) .featured__category-header { background: linear-gradient(135deg, #3498db 0%, #2980b9 100%); } .featured__category:nth-child(4) .featured__category-header { background: linear-gradient(135deg, #e74c3c 0%, #c0392b 100%); } /* Animation effects */ .featured__category-header { transition: transform 0.3s ease, box-shadow 0.3s ease; } .featured__category-header:hover { transform: translateY(-2px); box-shadow: 0 10px 30px rgba(0, 0, 0, 0.2); } /* Responsive */ @media screen and (max-width: 768px) { .featured__category { margin-bottom: 3rem; } .featured__category-title { font-size: var(--h3-font-size); flex-direction: column; gap: 0.5rem; } .featured__category-title i { font-size: 1.25rem; padding: 0.4rem; } .featured__category-desc { font-size: var(--small-font-size); } .featured__category-header { padding: 1.5rem 1rem; border-radius: 15px; } } @media screen and (max-width: 480px) { .featured__category-title { font-size: var(--normal-font-size); } .featured__category-desc { font-size: var(--smaller-font-size); } } /*=============== DISCOUNT ===============*/ .discount__container { row-gap: 3.5rem; } .discount__data { text-align: center; } .discount__title { margin-bottom: 1rem; } .discount__description { margin-bottom: 2rem; } .discount__images { display: flex; justify-content: center; } .discount__img-1, .discount__img-2 { width: 170px; } .discount__img-1 { transform: translateX(1rem) rotate(-10deg); } .discount__img-2 { transform: translateX(-1rem) rotate(10deg); } /*=============== NEW ===============*/ .new__card { display: flex; align-items: center; column-gap: 2.5rem; background-color: var(--container-color); padding: 1.5rem 1rem; color: var(--text-color); border: 2px solid var(--border-color); transition: border 0.4s, background-color 0.4s; border-radius: 10px; } .new__card:hover { border: 2px solid var(--text-color); } .new__img { width: 100px; } .new__title { font-size: var(--h2-font-size); margin-bottom: 0.5rem; } .new__prices { display: flex; align-items: center; column-gap: 0.75rem; margin-bottom: 0.75rem; } .new__discount { color: var(--title-color); } .new__price { font-size: var(--small-font-size); text-decoration: line-through; } .new__stars { color: var(--first-color); } .new__swiper:nth-child(1) { margin-bottom: 2rem; } /*=============== JOIN ===============*/ .join__container { position: relative; padding-block: 3rem; } .join__bg { position: absolute; top: 0; left: 0; width: 100%; height: 100%; object-fit: cover; object-position: center; } .join__data { position: relative; } .join__title { color: var(--white-color); } .join__form { display: grid; row-gap: 1rem; } .join__input { padding: 1.25rem 1rem; background-color: var(--body-color); color: var(--title-color); transition: background-color 0.4s; border-radius: 10px; } .join__input::placeholder { color: var(--text-color); } .join__button { padding-block: 1.25rem; cursor: pointer; } /*=============== TESTIMONIAL ===============*/ .testimonial__card { text-align: center; background-color: var(--container-color); padding: 2rem 3rem 2.5rem; border: 2px solid var(--border-color); transition: border 0.4s, background-color 0.4s; border-radius: 10px; } .testimonial__img { width: 100px; border-radius: 50%; margin: 0 auto 1.5rem; } .testimonial__title { font-size: var(--h2-font-size); margin-bottom: 0.75rem; } .testimonial__description { font-size: var(--small-font-size); margin-bottom: 1.25rem; } .testimonial__stars { color: var(--first-color); } /*=============== FOOTER ===============*/ .footer { padding-block: 4rem 6rem; } .footer__container { row-gap: 3rem; } .footer__logo { display: inline-flex; align-items: center; column-gap: 0.5rem; color: var(--first-color); font-size: var(--h3-font-size); font-family: var(--second-font); margin-bottom: 1.25rem; } .footer__logo i { font-size: 1.25rem; } .footer__data { grid-template-columns: repeat(2, max-content); gap: 3rem 2rem; } .footer__title { font-size: var(--h3-font-size); margin-bottom: 1.25rem; } .footer__links { display: grid; row-gap: 0.5rem; } .footer__link { color: var(--text-color); transition: color 0.4s; } .footer__link:hover { color: var(--first-color); } .footer__info { font-style: normal; } .footer__social { display: flex; column-gap: 1.25rem; } .footer__social-link { font-size: 1.25rem; color: var(--first-color); } .footer__copy { display: block; margin-top: 5rem; text-align: center; font-size: var(--small-font-size); } /*=============== SCROLL BAR ===============*/ ::-webkit-scrollbar { width: 0.6rem; border-radius: 0.5rem; background-color: hsl(230, 16%, 85%); } ::-webkit-scrollbar-thumb { background-color: hsl(230, 16%, 65%); border-radius: 0.5rem; } ::-webkit-scrollbar-thumb:hover { background-color: hsl(230, 16%, 55%); } /*=============== SCROLL UP ===============*/ .scrollup { position: fixed; right: 1rem; bottom: -50%; background-color: var(--container-color); box-shadow: 0 2px 8px hsla(0, 0%, 0%, 0.1); display: inline-flex; padding: 6px; font-size: 1.25rem; color: var(--title-color); z-index: var(--z-tooltip); transition: bottom 0.4s, transform 0.4s, background-color 0.4s; } .scrollup:hover { transform: translateY(-0.5rem); } /* Show Scroll Up */ .show-scroll { bottom: 6rem; } /*=============== BREAKPOINTS ===============*/ /* For small devices */ @media screen and (max-width: 320px) { .container { margin-inline: 1rem; } .featured__swiper { margin-bottom: 16px !important; } .nav__menu { padding-inline: 3rem; border-radius: 10px 10px 0px 0px; } .discount__img-1, .discount__img-2 { width: 140px; } .new__card { flex-direction: column; } .testimonial__card { padding-inline: 1rem; } .footer__data { grid-template-columns: 1fr; row-gap: 2rem; } } /* For medium devices */ @media screen and (min-width: 450px) { .featured__card { width: 290px; margin-bottom: 16px; } .new__card { width: 390px; } .testimonial__card { width: 320px; } } @media screen and (min-width: 576px) { .search__form, .bag__form { width: 500px; margin-inline: auto; } .login__form { width: 400px; justify-self: center; } .search__close, .bag__close, .login__close { width: max-content; top: 4rem; left: 0; right: 0; margin-inline: auto; } .nav__menu { width: 380px; margin-inline: auto; } .home__container, .discount__container { grid-template-columns: 420px; justify-content: center; } .join__form { width: 328px; justify-self: center; } .footer__data { grid-template-columns: repeat(3, max-content); } } @media screen and (min-width: 768px) { .home__container { grid-template-columns: 580px; } .home__data { width: 420px; justify-self: center; } .services__container { grid-template-columns: repeat(3, max-content); justify-content: center; column-gap: 5rem; } .footer__container { grid-template-columns: repeat(2, max-content); justify-content: space-between; } } /* For large devices */ @media screen and (min-width: 1150px) { .section { padding-block: 7rem 2rem; } .nav { height: calc(var(--header-height) + 2rem); column-gap: 4rem; } .nav__link i { display: none; } .nav__link span { display: block; } .nav__menu { width: initial; margin-inline: auto 0; } .nav__list { column-gap: 4rem; } .nav__link { font-weight: var(--font-medium); } .dark-theme .nav__menu { box-shadow: none; } .home__data { width: initial; } .services__container { column-gap: 10rem; } .services__card i { font-size: 3.5rem; } .featured__container { padding-top: 2rem; } .featured__title { font-size: var(--h3-font-size); } .discount__container { grid-template-columns: 615px 500px; justify-content: space-between; align-items: center; } .discount__data { order: 1; } .discount__data, .discount__title { text-align: initial; } .discount__description { margin-bottom: 3.5rem; } .discount__img-1, .discount__img-2 { width: 300px; } .new__container { padding-top: 2rem; } .new__card { padding: 1.5rem; } .new__img { width: 120px; } .new__title { font-size: var(--h3-font-size); } .join__bg { object-position: 0 -5rem; } .testimonial__container { padding-top: 2rem; } .testimonial__card { padding-inline: 2rem; } .testimonial__title { font-size: var(--h3-font-size); } .testimonial__description { font-size: var(--normal-font-size); } .footer { padding-block: 6rem 3rem; } .footer__data { grid-template-columns: repeat(4, max-content); column-gap: 4.5rem; } .footer__logo, .footer__title { font-size: var(--h2-font-size); margin-bottom: 1.5rem; } .footer__links { row-gap: 1rem; } .footer__social { column-gap: 1.5rem; } .footer__social-link { font-size: 1.5rem; } .footer__copy { margin-top: 7.5rem; } .scrollup { right: 3rem; } .show-scroll { bottom: 3rem; } } @media screen and (min-width: 1220px) { .container { margin-inline: auto; } .home__container { grid-template-columns: 435px 745px; align-items: center; padding-block: 7rem 2rem; } .home__data { text-align: initial; } .home__description { margin-bottom: 4rem; } .home__article, .home__img { width: 290px; } } /* ==================== PRODUCT DETAIL ==================== */ .product-detail { padding-top: 8rem; padding-bottom: 4rem; } .product-detail__header { text-align: center; margin-bottom: 3rem; } .product-detail__title { font-size: var(--h1-font-size); color: var(--title-color); margin-bottom: 1rem; line-height: 1.3; } .product-detail__breadcrumb { font-size: var(--small-font-size); color: var(--text-color); } .product-detail__breadcrumb a { color: var(--first-color); text-decoration: none; } .product-detail__breadcrumb a:hover { text-decoration: underline; } .product-detail__breadcrumb span { margin: 0 0.5rem; color: var(--text-color); } /* Product Content Layout */ .product-detail__content { display: grid; grid-template-columns: 1fr 1.2fr; gap: 3rem; margin-bottom: 4rem; align-items: start; } /* Product Image Section */ .product-detail__image { position: sticky; top: 2rem; } .product-detail__image-main { background-color: white; border: 2px solid var(--border-color); border-radius: 15px; padding: 2rem; margin-bottom: 1rem; text-align: center; } .product-detail__image-main img { width: 100%; max-width: 350px; height: auto; object-fit: contain; } .product-detail__image-gallery { display: flex; gap: 0.5rem; justify-content: center; flex-wrap: wrap; } .gallery-thumb { width: 70px; height: 70px; object-fit: cover; border: 2px solid var(--border-color); border-radius: 8px; cursor: pointer; opacity: 0.7; transition: all 0.3s ease; } .gallery-thumb:hover, .gallery-thumb.active { opacity: 1; border-color: var(--first-color); } /* Product Info Section */ .product-detail__info { padding: 1rem 0; } .product-detail__brand { display: flex; align-items: center; gap: 1rem; margin-bottom: 1rem; } .brand-tag { background-color: var(--first-color); color: var(--white-color); padding: 0.25rem 0.75rem; border-radius: 20px; font-size: var(--small-font-size); font-weight: var(--font-medium); } .product-code { font-size: var(--small-font-size); color: var(--text-color); } .product-detail__name { font-size: var(--h2-font-size); color: var(--title-color); margin-bottom: 1rem; line-height: 1.3; } .product-detail__rating { display: flex; align-items: center; gap: 1rem; margin-bottom: 1.5rem; } .rating-stars { color: var(--first-color); font-size: 1.1rem; } .rating-text { font-size: var(--small-font-size); color: var(--text-color); } .product-detail__price { display: flex; align-items: center; gap: 1rem; margin-bottom: 2rem; } .price-current { font-size: 1.75rem; font-weight: var(--font-semi-bold); color: var(--first-color); } .price-original { font-size: var(--normal-font-size); color: var(--text-color); text-decoration: line-through; } .price-discount { background-color: #ff4757; color: white; padding: 0.25rem 0.5rem; border-radius: 4px; font-size: var(--small-font-size); font-weight: var(--font-medium); } .product-detail__description { margin-bottom: 2rem; padding: 1.5rem; background-color: var(--container-color); border-radius: 10px; border: 1px solid var(--border-color); } .product-detail__description h3 { margin-bottom: 1rem; color: var(--title-color); font-size: var(--h3-font-size); } .product-detail__description ul { list-style: none; padding: 0; } .product-detail__description li { padding: 0.5rem 0; border-bottom: 1px solid var(--border-color); position: relative; padding-left: 1.5rem; } .product-detail__description li:last-child { border-bottom: none; } .product-detail__description li::before { content: "✓"; position: absolute; left: 0; color: var(--first-color); font-weight: bold; } .product-detail__quantity { display: flex; align-items: center; gap: 1rem; margin-bottom: 2rem; flex-wrap: wrap; } .quantity-label { font-weight: var(--font-medium); color: var(--title-color); } .quantity-controls { display: flex; align-items: center; border: 2px solid var(--border-color); border-radius: 8px; overflow: hidden; } .qty-btn { background-color: var(--container-color); border: none; padding: 0.75rem 1rem; cursor: pointer; font-size: 1.2rem; color: var(--title-color); transition: background-color 0.3s; } .qty-btn:hover { background-color: var(--first-color); color: var(--white-color); } .qty-input { border: none; padding: 0.75rem; width: 60px; text-align: center; font-size: var(--normal-font-size); background-color: var(--body-color); color: var(--title-color); } .stock-info { color: #27ae60; font-size: var(--small-font-size); font-weight: var(--font-medium); } .product-detail__actions { display: flex; gap: 1rem; margin-bottom: 2rem; flex-wrap: wrap; } .btn-add-cart { flex: 1; min-width: 200px; display: flex; align-items: center; justify-content: center; gap: 0.5rem; } .btn-buy-now { flex: 1; min-width: 150px; } .button--secondary { background-color: transparent; border: 2px solid var(--first-color); color: var(--first-color); } .button--secondary:hover { background-color: var(--first-color); color: var(--white-color); } .btn-wishlist { width: 50px; height: 50px; border: 2px solid var(--border-color); background-color: var(--container-color); border-radius: 8px; display: flex; align-items: center; justify-content: center; cursor: pointer; color: var(--text-color); transition: all 0.3s ease; } .btn-wishlist:hover { border-color: var(--first-color); color: var(--first-color); } .product-detail__features { display: flex; flex-direction: column; gap: 1rem; padding: 1.5rem; background-color: var(--container-color); border-radius: 10px; border: 1px solid var(--border-color); } .feature-item { display: flex; align-items: center; gap: 0.75rem; } .feature-item i { color: var(--first-color); font-size: 1.25rem; } .feature-item span { font-size: var(--small-font-size); color: var(--text-color); } /* Product Specifications */ .product-detail__specs { background-color: var(--container-color); padding: 2rem; border-radius: 15px; border: 2px solid var(--border-color); } .specs-title { font-size: var(--h2-font-size); color: var(--title-color); margin-bottom: 1.5rem; text-align: center; } .specs-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); gap: 1rem; } .spec-item { display: flex; justify-content: space-between; padding: 1rem; background-color: var(--body-color); border-radius: 8px; border: 1px solid var(--border-color); } .spec-label { font-weight: var(--font-medium); color: var(--title-color); } .spec-value { color: var(--text-color); text-align: right; } /* Responsive Design */ @media screen and (max-width: 1024px) { .product-detail__content { grid-template-columns: 1fr; gap: 2rem; } .product-detail__image { position: static; order: 1; } .product-detail__info { order: 2; } } @media screen and (max-width: 768px) { .product-detail { padding-top: 6rem; } .product-detail__title { font-size: var(--h2-font-size); } .product-detail__image-main { padding: 1rem; } .product-detail__image-main img { max-width: 250px; } .product-detail__actions { flex-direction: column; } .btn-add-cart, .btn-buy-now { min-width: 100%; } .specs-grid { grid-template-columns: 1fr; } .spec-item { flex-direction: column; gap: 0.5rem; } .spec-value { text-align: left; } } @media screen and (max-width: 480px) { .product-detail__quantity { flex-direction: column; align-items: flex-start; } .product-detail__price { flex-direction: column; align-items: flex-start; gap: 0.5rem; } .gallery-thumb { width: 60px; height: 60px; } } /*=============== LOGIN MESSAGE ===============*/ .login__message { padding: 0.75rem 1rem; margin: 1rem 0; border-radius: 5px; font-size: var(--small-font-size); text-align: center; font-weight: var(--font-medium); transition: all 0.3s ease; } .login__message--success { background-color: #d4edda; color: #155724; border: 1px solid #c3e6cb; } .login__message--error { background-color: #f8d7da; color: #721c24; border: 1px solid #f5c6cb; } /* Dark theme cho message */ .dark-theme .login__message--success { background-color: #1e4620; color: #75b798; border: 1px solid #2d5a31; } .dark-theme .login__message--error { background-color: #4a1e1e; color: #f1aeb5; border: 1px solid #5a2d2d; } /*=============== USER MENU ===============*/ .user-menu { position: fixed; top: -100%; left: 0; width: 100%; height: 100%; z-index: var(--z-fixed); background-color: hsla(230, 62%, 96%, 0.6); backdrop-filter: blur(16px); align-items: center; padding: 1.5rem; text-align: center; transition: top 0.4s; } .user-menu__container { background-color: var(--container-color); padding: 2rem 1.5rem; border: 2px solid var(--border-color); border-radius: 15px; width: 100%; max-width: 400px; margin: 0 auto; } .user-menu__header { display: flex; align-items: center; gap: 1rem; margin-bottom: 2rem; padding-bottom: 1.5rem; border-bottom: 1px solid var(--border-color); } .user-menu__avatar { width: 60px; height: 60px; background-color: var(--first-color); border-radius: 50%; display: flex; align-items: center; justify-content: center; } .user-menu__avatar i { font-size: 2rem; color: var(--white-color); } .user-menu__info { text-align: left; flex: 1; } .user-menu__name { font-size: var(--h3-font-size); color: var(--title-color); margin-bottom: 0.25rem; font-weight: var(--font-medium); } .user-menu__email { font-size: var(--small-font-size); color: var(--text-color); margin: 0; } .user-menu__actions { display: flex; flex-direction: column; gap: 0.75rem; } .user-menu__button { display: flex; align-items: center; gap: 0.75rem; width: 100%; padding: 0.75rem 1rem; background-color: transparent; border: 1px solid var(--border-color); border-radius: 8px; color: var(--text-color); font-size: var(--normal-font-size); cursor: pointer; transition: all 0.3s ease; text-align: left; } .user-menu__button:hover { background-color: var(--first-color); color: var(--white-color); border-color: var(--first-color); } .user-menu__button--logout { margin-top: 0.5rem; border-color: #dc3545; color: #dc3545; } .user-menu__button--logout:hover { background-color: #dc3545; color: var(--white-color); border-color: #dc3545; } .user-menu__button i { font-size: 1.25rem; } .user-menu__close { position: absolute; top: 2rem; right: 2rem; font-size: 2rem; color: var(--title-color); cursor: pointer; } /* Show user menu */ .show-user-menu { top: 0; } /* Dark theme cho user menu */ .dark-theme .user-menu { background-color: hsla(230, 12%, 8%, 0.6); } /* Responsive */ @media screen and (min-width: 576px) { .user-menu__close { width: max-content; top: 4rem; left: 0; right: 0; margin-inline: auto; } } /*=============== LOGOUT MESSAGE ===============*/ .logout-message { position: fixed; top: 2rem; right: 2rem; z-index: 1000; transform: translateX(100%); transition: transform 0.3s ease; } .logout-message.show { transform: translateX(0); } .logout-message__content { background-color: #28a745; color: white; padding: 1rem 1.5rem; border-radius: 8px; display: flex; align-items: center; gap: 0.5rem; box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15); font-weight: var(--font-medium); } .logout-message__content i { font-size: 1.25rem; } /* Dark theme */ .dark-theme .logout-message__content { background-color: #20c997; } /* Mobile responsive */ @media screen and (max-width: 768px) { .logout-message { top: 1rem; right: 1rem; left: 1rem; right: 1rem; } } /*=============== LOGIN BUTTON STATES ===============*/ .nav__actions i.logged-in { color: var(--first-color); background-color: var(--container-color); padding: 0.5rem; border-radius: 50%; border: 2px solid var(--first-color); } .nav__actions i.logged-in:hover { background-color: var(--first-color); color: var(--white-color); } /*=============== ANIMATIONS ===============*/ @keyframes fadeInUp { from { opacity: 0; transform: translateY(30px); } to { opacity: 1; transform: translateY(0); } } @keyframes pulse { 0%, 100% { transform: scale(1); } 50% { transform: scale(1.05); } } .featured__category-title i { animation: pulse 2s infinite; } /* Hover effects cho featured cards trong từng category */ .featured__category:nth-child(2) .featured__card:hover { border-color: #2ecc71; } .featured__category:nth-child(3) .featured__card:hover { border-color: #3498db; } .featured__category:nth-child(4) .featured__card:hover { border-color: #e74c3c; }