Compare commits

..

1 Commits
main ... pages

3 changed files with 1101 additions and 0 deletions

443
index.html Normal file
View File

@ -0,0 +1,443 @@
<!DOCTYPE html>
<html lang="kk">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>Formula For You Kazakhstan — Премиум косметика</title>
<meta name="description" content="Formula For You ресми өкілі Қазақстанда. Премиум косметика. Алматы және бүкіл Қазақстан бойынша жеткізу.">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Manrope:wght@400;500;600;700&family=Playfair+Display:wght@600;700&display=swap" rel="stylesheet">
<link rel="icon" href="data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'><text y='.9em' font-size='90'>✨</text></svg>">
<link rel="stylesheet" href="style.css">
</head>
<body>
<header class="header" id="header">
<div class="container header__container">
<a href="#" class="logo">
<span class="logo__text">Formula For You</span>
<span class="logo__sub">Kazakhstan</span>
</a>
<nav class="nav" id="nav">
<a href="#about" class="nav__link">Біз туралы</a>
<a href="#catalog" class="nav__link">Каталог</a>
<a href="#reviews" class="nav__link">Пікірлер</a>
<a href="#delivery" class="nav__link">Жеткізу</a>
<a href="#faq" class="nav__link">FAQ</a>
<a href="#contacts" class="nav__link">Байланыс</a>
</nav>
<div class="header__actions">
<button class="cart-btn" id="cartBtn">
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
<circle cx="9" cy="21" r="1"/><circle cx="20" cy="21" r="1"/>
<path d="M1 1h4l2.68 13.39a2 2 0 0 0 2 1.61h9.72a2 2 0 0 0 2-1.61L23 6H6"/>
</svg>
<span class="cart-count" id="cartCount">0</span>
</button>
<button class="btn btn--primary header__order-btn" id="headerOrderBtn">Тапсырыс</button>
<button class="burger" id="burgerBtn" aria-label="Мәзір">
<span></span><span></span><span></span>
</button>
</div>
</div>
</header>
<main>
<section class="hero">
<div class="hero__overlay"></div>
<div class="container hero__content reveal">
<h1 class="hero__title">Formula For You</h1>
<p class="hero__subtitle">Мінсіз терінің формуласы</p>
<p class="hero__desc">Премиум косметика — табиғи сұлулықты ашу үшін. Ғылыми тәсіл, табиғи компоненттер және көрінетін нәтиже.</p>
<div class="hero__buttons">
<a href="#catalog" class="btn btn--primary btn--large">Каталогқа өту</a>
<a href="#contacts" class="btn btn--outline btn--large">Байланысу</a>
</div>
</div>
</section>
<section class="section about" id="about">
<div class="container">
<h2 class="section__title reveal">Біз туралы</h2>
<p class="section__desc reveal">Formula For You Kazakhstan — премиум косметика брендінің ресми өкілі. Біз жоғары сапалы бет және дене күтімі өнімдерін ұсынамыз.</p>
<div class="about__grid">
<div class="feature-card reveal">
<div class="feature-card__icon">🌿</div>
<h3 class="feature-card__title">Табиғи компоненттер</h3>
<p class="feature-card__text">Нәзік күтім үшін тек сенімді табиғи ингредиенттер</p>
</div>
<div class="feature-card reveal">
<div class="feature-card__icon">🔬</div>
<h3 class="feature-card__title">Ғылыми тәсіл</h3>
<p class="feature-card__text">Дерматологтар әзірлеген, косметология жетістіктері</p>
</div>
<div class="feature-card reveal">
<div class="feature-card__icon">✨</div>
<div class="feature-card__title">Көрінетін нәтиже</div>
<p class="feature-card__text">Алғашқы өзгерістер бірнеше қолданудан кейін байқалады</p>
</div>
<div class="feature-card reveal">
<div class="feature-card__icon">🚚</div>
<h3 class="feature-card__title">Қазақстан бойынша жеткізу</h3>
<p class="feature-card__text">Елдің кез келген қаласына жылдам және мұқият жеткізу</p>
</div>
</div>
</div>
</section>
<section class="section catalog" id="catalog">
<div class="container">
<h2 class="section__title reveal">Өнім каталогы</h2>
<div class="catalog__filters reveal">
<button class="filter-btn active" data-filter="all">Барлығы</button>
<button class="filter-btn" data-filter="face">Бет</button>
<button class="filter-btn" data-filter="body">Дене</button>
<button class="filter-btn" data-filter="care">Күтім</button>
<button class="filter-btn" data-filter="sets">Жиынтықтар</button>
</div>
<div class="catalog__grid" id="catalogGrid"></div>
</div>
</section>
<section class="section benefits" id="benefits">
<div class="container">
<h2 class="section__title reveal">Неге бізді таңдайды</h2>
<div class="benefits__grid">
<div class="benefit-card reveal">
<div class="benefit-card__number">01</div>
<h3 class="benefit-card__title">Премиум сапа</h3>
<p class="benefit-card__text">Халықаралық стандарттарға сәйкес сертификатталған өнім</p>
</div>
<div class="benefit-card reveal">
<div class="benefit-card__number">02</div>
<h3 class="benefit-card__title">Түпнұсқа өнім</h3>
<p class="benefit-card__text">Әр тауардың түпнұсқалығына кепілдік. Өндірушімен тікелей жұмыс</p>
</div>
<div class="benefit-card reveal">
<div class="benefit-card__number">03</div>
<h3 class="benefit-card__title">Жылдам жеткізу</h3>
<p class="benefit-card__text">Тапсырысты сол күні жіберу. Алматы бойынша 1-2 күн, Қазақстан бойынша 3-7 күн</p>
</div>
<div class="benefit-card reveal">
<div class="benefit-card__number">04</div>
<h3 class="benefit-card__title">Қайтару кепілдігі</h3>
<p class="benefit-card__text">Тауар сәйкес келмесе, ақшаны қайтарамыз</p>
</div>
<div class="benefit-card reveal">
<div class="benefit-card__number">05</div>
<h3 class="benefit-card__title">Ыңғайлы тапсырыс</h3>
<p class="benefit-card__text">Сайт, Instagram немесе WhatsApp арқылы тапсырыс беріңіз</p>
</div>
<div class="benefit-card reveal">
<div class="benefit-card__number">06</div>
<h3 class="benefit-card__title">Клиенттерге қолдау</h3>
<p class="benefit-card__text">Жеке менеджер өнімді таңдауға және сұрақтарға жауап беруге көмектеседі</p>
</div>
</div>
</div>
</section>
<section class="section instagram" id="instagram">
<div class="container">
<h2 class="section__title reveal">Біз Instagram-да</h2>
<p class="section__desc reveal">Жаңа өнімдер, акциялар және тері күтімі бойынша пайдалы кеңестер үшін Instagram-ға жазылыңыз.</p>
<div class="instagram__grid reveal">
<div class="instagram__item"><img src="https://picsum.photos/seed/ffu1/400/400" alt="Instagram post"></div>
<div class="instagram__item"><img src="https://picsum.photos/seed/ffu2/400/400" alt="Instagram post"></div>
<div class="instagram__item"><img src="https://picsum.photos/seed/ffu3/400/400" alt="Instagram post"></div>
<div class="instagram__item"><img src="https://picsum.photos/seed/ffu4/400/400" alt="Instagram post"></div>
<div class="instagram__item"><img src="https://picsum.photos/seed/ffu5/400/400" alt="Instagram post"></div>
<div class="instagram__item"><img src="https://picsum.photos/seed/ffu6/400/400" alt="Instagram post"></div>
</div>
<a href="https://www.instagram.com/formulaforyou.kaz/" target="_blank" class="btn btn--instagram">
<svg width="20" height="20" viewBox="0 0 24 24" fill="currentColor"><path d="M12 2.163c3.204 0 3.584.012 4.85.07 3.252.148 4.771 1.691 4.919 4.919.058 1.265.069 1.645.069 4.849 0 3.205-.012 3.584-.069 4.849-.149 3.225-1.664 4.771-4.919 4.919-1.266.058-1.644.07-4.85.07-3.204 0-3.584-.012-4.849-.07-3.26-.149-4.771-1.699-4.919-4.92-.058-1.265-.07-1.644-.07-4.849 0-3.204.013-3.583.07-4.849.149-3.227 1.664-4.771 4.919-4.919 1.266-.057 1.645-.069 4.849-.069zm0-2.163c-3.259 0-3.667.014-4.947.072-4.358.2-6.78 2.618-6.98 6.98-.059 1.281-.073 1.689-.073 4.948 0 3.259.014 3.668.072 4.948.2 4.358 2.618 6.78 6.98 6.98 1.281.058 1.689.072 4.948.072 3.259 0 3.668-.014 4.948-.072 4.354-.2 6.782-2.618 6.979-6.98.059-1.28.073-1.689.073-4.948 0-3.259-.014-3.667-.072-4.947-.196-4.354-2.617-6.78-6.979-6.98-1.281-.059-1.69-.073-4.949-.073zm0 5.838c-3.403 0-6.162 2.759-6.162 6.162s2.759 6.163 6.162 6.163 6.162-2.759 6.162-6.163c0-3.403-2.759-6.162-6.162-6.162zm0 10.162c-2.209 0-4-1.79-4-4 0-2.209 1.791-4 4-4s4 1.791 4 4c0 2.21-1.791 4-4 4zm6.406-11.845c-.796 0-1.441.645-1.441 1.44s.645 1.44 1.441 1.44c.795 0 1.439-.645 1.439-1.44s-.644-1.44-1.439-1.44z"/></svg>
Instagram-ға жазылу
</a>
</div>
</section>
<section class="section reviews" id="reviews">
<div class="container">
<h2 class="section__title reveal">Клиенттердің пікірлері</h2>
<div class="reviews__slider reveal">
<div class="reviews__track" id="reviewsTrack"></div>
<div class="reviews__nav">
<button class="reviews__nav-btn reviews__nav-btn--prev" id="reviewsPrev">←</button>
<button class="reviews__nav-btn reviews__nav-btn--next" id="reviewsNext">→</button>
</div>
</div>
</div>
</section>
<section class="section delivery" id="delivery">
<div class="container">
<h2 class="section__title reveal">Жеткізу және төлем</h2>
<div class="delivery__grid">
<div class="delivery-card reveal">
<h3 class="delivery-card__title">📍 Алматы бойынша жеткізу</h3>
<ul class="delivery-card__list">
<li>Курьермен есікке дейін — 1 500 ₸</li>
<li>Өзіңіз алу пунктінен — тегін</li>
<li>Жеткізу мерзімі — 1-2 жұмыс күні</li>
<li>Экспресс жеткізу 3 сағат — 3 000 ₸</li>
</ul>
</div>
<div class="delivery-card reveal">
<h3 class="delivery-card__title">🚚 Қазақстан бойынша</h3>
<ul class="delivery-card__list">
<li>Қазпошта — 1 200 ₸</li>
<li>CDEK — 1 500 ₸-тен</li>
<li>Жеткізу мерзімі — 3-7 жұмыс күні</li>
<li>50 000 ₸ тапсырыстан тегін</li>
</ul>
</div>
<div class="delivery-card reveal">
<h3 class="delivery-card__title">💳 Төлем тәсілдері</h3>
<ul class="delivery-card__list">
<li>Алған кезде қолма-қол</li>
<li>Онлайн картамен</li>
<li>Картаға аудару</li>
<li>Бөліп төлеу 0-0-12 (Алматы)</li>
</ul>
</div>
</div>
</div>
</section>
<section class="section faq" id="faq">
<div class="container">
<h2 class="section__title reveal">Жиі қойылатын сұрақтар</h2>
<div class="faq__list reveal">
<div class="faq-item">
<button class="faq-item__header">
<span>Тапсырыс қалай жасауға болады?</span>
<span class="faq-item__icon">+</span>
</button>
<div class="faq-item__content">
<p>Сайт арқылы тауарларды себетке қосып, тапсырыс ресімдеңіз. Instagram немесе WhatsApp арқылы да жазуға болады — менеджер көмектеседі.</p>
</div>
</div>
<div class="faq-item">
<button class="faq-item__header">
<span>Тапсырысты қалай төлеуге болады?</span>
<span class="faq-item__icon">+</span>
</button>
<div class="faq-item__content">
<p>Біз қолма-қол, онлайн картамен, картаға аудару арқылы төлем қабылдаймыз. Алматы тұрғындарына 0-0-12 бөліп төлеу қолжетімді.</p>
</div>
</div>
<div class="faq-item">
<button class="faq-item__header">
<span>Қазақстан бойынша жеткізу бар ма?</span>
<span class="faq-item__icon">+</span>
</button>
<div class="faq-item__content">
<p>Иә, біз Қазпошта және CDEK арқылы бүкіл Қазақстанға жеткіземіз. Жеткізу құны қалаға және салмаққа байланысты. 50 000 ₸ тапсырыстан тегін.</p>
</div>
</div>
<div class="faq-item">
<button class="faq-item__header">
<span>Жеткізу қанша уақыт алады?</span>
<span class="faq-item__icon">+</span>
</button>
<div class="faq-item__content">
<p>Алматы бойынша 1-2 жұмыс күні (экспресс 3 сағат). Қазақстан бойынша 3-7 жұмыс күні.</p>
</div>
</div>
<div class="faq-item">
<button class="faq-item__header">
<span>Instagram арқылы тапсырыс беруге бола ма?</span>
<span class="faq-item__icon">+</span>
</button>
<div class="faq-item__content">
<p>Әрине! @formulaforyou.kaz Instagram немесе WhatsApp жазыңыз — менеджер өнімді таңдауға және тапсырыс ресімдеуге көмектеседі.</p>
</div>
</div>
<div class="faq-item">
<button class="faq-item__header">
<span>Менеджермен қалай байланысуға болады?</span>
<span class="faq-item__icon">+</span>
</button>
<div class="faq-item__content">
<p>WhatsApp жазу, телефон соғу немесе Instagram жазу арқылы байланысуға болады. Жұмыс күні бойы жауап береміз.</p>
</div>
</div>
</div>
</div>
</section>
<section class="section contacts" id="contacts">
<div class="container">
<h2 class="section__title reveal">Байланыс</h2>
<div class="contacts__grid">
<div class="contacts__info reveal">
<div class="contact-item">
<div class="contact-item__icon">📱</div>
<div class="contact-item__content">
<h4>Телефон</h4>
<p><a href="tel:+77771234567">+7 (777) 123-45-67</a></p>
</div>
</div>
<div class="contact-item">
<div class="contact-item__icon">💬</div>
<div class="contact-item__content">
<h4>WhatsApp</h4>
<p><a href="https://wa.me/77771234567" target="_blank">WhatsApp жазу</a></p>
</div>
</div>
<div class="contact-item">
<div class="contact-item__icon">📷</div>
<div class="contact-item__content">
<h4>Instagram</h4>
<p><a href="https://www.instagram.com/formulaforyou.kaz/" target="_blank">@formulaforyou.kaz</a></p>
</div>
</div>
<div class="contact-item">
<div class="contact-item__icon">📍</div>
<div class="contact-item__content">
<h4>Мекенжай</h4>
<p>Алматы қ., Абай даңғылы 10</p>
</div>
</div>
<div class="contact-item">
<div class="contact-item__icon">🕐</div>
<div class="contact-item__content">
<h4>Жұмыс кестесі</h4>
<p>Дс-Жм: 9:00 - 18:00<br>Сн-Жс: 10:00 - 16:00</p>
</div>
</div>
</div>
<div class="contacts__map reveal">
<iframe src="https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d2906.6!2d76.9!3d43.25!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x0%3A0x0!2zNDPCsDE1JzAwLjAiTiA3NsKwNTQnMDAuMCJF!5e0!3m2!1sru!2skz!4v1600000000000!5m2!1sru!2skz" width="100%" height="400" style="border:0;border-radius:12px" loading="lazy"></iframe>
</div>
</div>
<div class="contacts__cta reveal">
<a href="https://wa.me/77771234567?text=Сәлеметсіз бе!%20Тапсырыс%20бергім%20келеді" target="_blank" class="btn btn--whatsapp btn--large">
<svg width="24" height="24" viewBox="0 0 24 24" fill="currentColor"><path d="M17.472 14.382c-.297-.149-1.758-.867-2.03-.967-.273-.099-.471-.148-.67.15-.197.297-.767.966-.94 1.164-.173.199-.347.223-.644.075-.297-.15-1.255-.463-2.39-1.475-.883-.788-1.48-1.761-1.653-2.059-.173-.297-.018-.458.13-.606.134-.133.298-.347.446-.52.149-.174.198-.298.298-.497.099-.198.05-.371-.025-.52-.075-.149-.669-1.612-.916-2.207-.242-.579-.487-.5-.669-.51-.173-.008-.371-.01-.57-.01-.198 0-.52.074-.792.372-.272.297-1.04 1.016-1.04 2.479 0 1.462 1.065 2.875 1.213 3.074.149.198 2.096 3.2 5.077 4.487.709.306 1.262.489 1.694.625.712.227 1.36.195 1.871.118.571-.085 1.758-.719 2.006-1.413.248-.694.248-1.289.173-1.413-.074-.124-.272-.198-.57-.347m-5.421 7.403h-.004a9.87 9.87 0 01-5.031-1.378l-.361-.214-3.741.982.998-3.648-.235-.374a9.86 9.86 0 01-1.51-5.26c.001-5.45 4.436-9.884 9.888-9.884 2.64 0 5.122 1.03 6.988 2.898a9.825 9.825 0 012.893 6.994c-.003 5.45-4.437 9.884-9.885 9.884m8.413-18.297A11.815 11.815 0 0012.05 0C5.495 0 .16 5.335.157 11.892c0 2.096.547 4.142 1.588 5.945L.057 24l6.305-1.654a11.882 11.882 0 005.683 1.448h.005c6.554 0 11.89-5.335 11.893-11.893a11.821 11.821 0 00-3.48-8.413Z"/></svg>
WhatsApp жазу
</a>
</div>
</div>
</section>
</main>
<footer class="footer">
<div class="container">
<div class="footer__grid">
<div class="footer__brand">
<a href="#" class="logo logo--light">
<span class="logo__text">Formula For You</span>
<span class="logo__sub">Kazakhstan</span>
</a>
<p class="footer__desc">Премиум косметика. Қазақстандағы ресми өкіл.</p>
</div>
<div class="footer__nav">
<h4 class="footer__nav-title">Навигация</h4>
<a href="#about">Біз туралы</a>
<a href="#catalog">Каталог</a>
<a href="#reviews">Пікірлер</a>
<a href="#delivery">Жеткізу</a>
<a href="#contacts">Байланыс</a>
</div>
<div class="footer__contacts">
<h4 class="footer__nav-title">Байланыс</h4>
<p>📱 <a href="tel:+77771234567">+7 (777) 123-45-67</a></p>
<p>💬 <a href="https://wa.me/77771234567" target="_blank">WhatsApp</a></p>
<p>📷 <a href="https://www.instagram.com/formulaforyou.kaz/" target="_blank">@formulaforyou.kaz</a></p>
</div>
</div>
<div class="footer__bottom">
<p>&copy; 2026 Formula For You Kazakhstan. Барлық құқықтар қорғалған.</p>
</div>
</div>
</footer>
<div class="modal" id="productModal">
<div class="modal__overlay" id="modalOverlay"></div>
<div class="modal__content">
<button class="modal__close" id="modalClose">&times;</button>
<div class="modal__body" id="modalBody"></div>
</div>
</div>
<div class="modal" id="cartModal">
<div class="modal__overlay" id="cartOverlay"></div>
<div class="modal__content modal__content--cart">
<button class="modal__close" id="cartModalClose">&times;</button>
<div class="modal__body">
<h2 class="modal__title">Себет</h2>
<div class="cart__empty" id="cartEmpty">
<p>Себетіңіз бос</p>
<a href="#catalog" class="btn btn--primary">Каталогқа өту</a>
</div>
<div class="cart__content" id="cartContent">
<div class="cart__items" id="cartItems"></div>
<div class="cart__summary">
<div class="cart__summary-row">
<span>Тауарлар (<span id="cartTotalCount">0</span>)</span>
<span id="cartSubtotal">0 ₸</span>
</div>
<div class="cart__summary-row cart__summary-row--total">
<span>Барлығы</span>
<span id="cartTotal">0 ₸</span>
</div>
<button class="btn btn--primary btn--large btn--full" id="checkoutBtn">Тапсырыс ресімдеу</button>
</div>
</div>
</div>
</div>
</div>
<div class="modal" id="checkoutModal">
<div class="modal__overlay" id="checkoutOverlay"></div>
<div class="modal__content">
<button class="modal__close" id="checkoutModalClose">&times;</button>
<div class="modal__body">
<h2 class="modal__title">Тапсырыс ресімдеу</h2>
<form class="checkout-form" id="checkoutForm">
<div class="form-group">
<label for="checkoutName">Есімі *</label>
<input type="text" id="checkoutName" name="name" required placeholder="Есіміңіз">
</div>
<div class="form-group">
<label for="checkoutPhone">Телефон *</label>
<input type="tel" id="checkoutPhone" name="phone" required placeholder="+7 (___) ___-__-__">
</div>
<div class="form-group">
<label for="checkoutCity">Қала *</label>
<input type="text" id="checkoutCity" name="city" required placeholder="Алматы">
</div>
<div class="form-group">
<label for="checkoutAddress">Мекенжай *</label>
<input type="text" id="checkoutAddress" name="address" required placeholder="Көше, үй, пәтер">
</div>
<div class="form-group">
<label for="checkoutComment">Түсініктеме</label>
<textarea id="checkoutComment" name="comment" rows="3" placeholder="Қосымша ақпарат"></textarea>
</div>
<div class="checkout__total">
<span>Тапсырыс соммасы:</span>
<strong id="checkoutTotal">0 ₸</strong>
</div>
<button type="submit" class="btn btn--primary btn--large btn--full">Тапсырысты растау</button>
</form>
</div>
</div>
</div>
<div class="modal" id="successModal">
<div class="modal__overlay"></div>
<div class="modal__content modal__content--success">
<div class="success-icon">✓</div>
<h2 class="modal__title">Тапсырыс үшін рақмет!</h2>
<p>Өтініміңіз қабылданды. Жақын арада байланысамыз.</p>
<button class="btn btn--primary" id="successClose">Жарайды</button>
</div>
</div>
<div class="notification" id="notification"></div>
<script src="script.js"></script>
</body>
</html>

371
script.js Normal file
View File

@ -0,0 +1,371 @@
const PRODUCTS = [
{id: 1, title: "Ылғалдандырғыш бет кремі", category: "face", price: 18900, image: "https://picsum.photos/seed/ffup1/600/600", badge: "Хит", description: "Барлық тері түрлеріне арналған қарқынды ылғалдандыру. Гиалурон қышқылы мен табиғи майлар.", specs: {"Көлемі": "50 мл", "Тері түрі": "Барлығы", "Әсері": "Ылғалдандыру"}},
{id: 2, title: "С C дәрумені сарысуы", category: "face", price: 24500, image: "https://picsum.photos/seed/ffup2/600/600", badge: "Жаңа", description: "Пигментацияны ағартады, тері түсін тегістейді, коллаген өндірісін ынталандырады.", specs: {"Көлемі": "30 мл", "Тері түрі": "Барлығы", "Әсері": "Ағарту"}},
{id: 3, title: "Тазартушы гель", category: "care", price: 12900, image: "https://picsum.photos/seed/ffup3/600/600", description: "Қорғаныс кедергісін бұзбай нәзік тазартады. Күнделікті қолдануға жарамды.", specs: {"Көлемі": "200 мл", "Тері түрі": "Майлы, аралас", "Әсері": "Тазарту"}},
{id: 4, title: "Түнгі қалпына келтіруші крем", category: "face", price: 21900, image: "https://picsum.photos/seed/ffup4/600/600", description: "Ұйқы кезінде жұмыс істейді, теріні қалпына келтіреді және қартаю белгілерін азайтады.", specs: {"Көлемі": "50 мл", "Тері түрі": "Құрғақ, қалыпты", "Әсері": "Қалпына келтіру"}},
{id: 5, title: "Дене сүті", category: "body", price: 16500, image: "https://picsum.photos/seed/ffup5/600/600", description: "Бүкіл денеге нәзік ылғалдандыру. Жабыспай тез сіңеді.", specs: {"Көлемі": "250 мл", "Тері түрі": "Барлығы", "Әсері": "Ылғалдандыру"}},
{id: 6, title: "Дене скрабы", category: "body", price: 14900, image: "https://picsum.photos/seed/ffup6/600/600", description: "Нәзік эксфолиация, теріні жұмсақ әрі тегіс етеді. Тропиктік жеміс хош иісі.", specs: {"Көлемі": "200 мл", "Тері түрі": "Барлығы", "Әсері": "Эксфолиация"}},
{id: 7, title: "Бет тонигі", category: "care", price: 11900, image: "https://picsum.photos/seed/ffup7/600/600", description: "Тазартудан кейін терінің pH-ын теңестіреді, крем жағуға дайындайды.", specs: {"Көлемі": "200 мл", "Тері түрі": "Барлығы", "Әсері": "Тонус"}},
{id: 8, title: "Қол кремі", category: "body", price: 8900, image: "https://picsum.photos/seed/ffup8/600/600", description: "Құрғақ қол терісіне арналған қарқынды қорек. Тез сіңеді.", specs: {"Көлемі": "75 мл", "Тері түрі": "Құрғақ", "Әсері": "Қорек"}},
{id: 9, title: "'Базалық күтім' жиынтығы", category: "sets", price: 45900, image: "https://picsum.photos/seed/ffup9/600/600", badge: "15% үнемдеу", description: "Жиынтықта: тазартушы гель, тоник, ылғалдандырғыш крем. Күнделікті күтімге қажеттінің бәрі.", specs: {"Құрамы": "3 өнім", "Тері түрі": "Барлығы", "Үнемдеу": "15%"}},
{id: 10, title: "Бет маскасы", category: "care", price: 9900, image: "https://picsum.photos/seed/ffup10/600/600", description: "Қарқынды қорек және ылғалдандыру. Аптасына 2-3 рет 15 минут жағу.", specs: {"Көлемі": "75 мл", "Тері түрі": "Барлығы", "Әсері": "Қорек"}},
{id: 11, title: "Көз айналасына крем", category: "face", price: 19900, image: "https://picsum.photos/seed/ffup11/600/600", description: "Қара шеңберлер мен ісінуді азайтады. Нәзік аймаққа арналған формула.", specs: {"Көлемі": "15 мл", "Тері түрі": "Барлығы", "Әсері": "Жасарту"}},
{id: 12, title: "'Тері жылтыры' жиынтығы", category: "sets", price: 52900, image: "https://picsum.photos/seed/ffup12/600/600", badge: "Премиум", description: "Жиынтықта: С дәрумені сарысуы, түнгі крем, маска. Жылтыр реңк үшін.", specs: {"Құрамы": "3 өнім", "Тері түрі": "Барлығы", "Әсері": "Жылтыр"}}
];
const REVIEWS = [
{name: "Алия К.", avatar: "https://picsum.photos/seed/r1/100/100", rating: 5, text: "Ылғалдандырғыш кремді тапсырыс бердім — бірінші қолданудан ғашықпын! Тері жұмсақ, ылғалды болды. Тағы тапсырыс беремін."},
{name: "Мария В.", avatar: "https://picsum.photos/seed/r2/100/100", rating: 5, text: "Formula For You өнімдерін жарты жыл қолданамын. Сапасы жоғары, терім өзгерді. Жеткізу жылдам, қаптама әдемі."},
{name: "Елена С.", avatar: "https://picsum.photos/seed/r3/100/100", rating: 5, text: "С дәрумені сарысуы ғажайып! Пигментация айтарлықтай ағарды. Барлық құрбыларға ұсынамын."},
{name: "Динара Т.", avatar: "https://picsum.photos/seed/r4/100/100", rating: 5, text: "'Базалық күтім' жиынтығын алдым — бәрін бірден сынап көруге тамаша мүмкіндік. Бәрі сәйкес келді, тері риза!"}
];
let cart = JSON.parse(localStorage.getItem('ffu_cart')) || [];
let currentFilter = 'all';
let currentSlide = 0;
document.addEventListener('DOMContentLoaded', () => {
initHeader();
renderCatalog();
renderReviews();
initFilters();
initModals();
initFAQ();
initScrollAnimations();
updateCartCount();
initPhoneValidation();
});
function initHeader() {
const header = document.getElementById('header');
const burgerBtn = document.getElementById('burgerBtn');
const nav = document.getElementById('nav');
window.addEventListener('scroll', () => {
if (window.scrollY > 50) header.classList.add('scrolled');
else header.classList.remove('scrolled');
});
burgerBtn.addEventListener('click', () => {
burgerBtn.classList.toggle('active');
nav.classList.toggle('active');
});
document.querySelectorAll('.nav__link').forEach(link => {
link.addEventListener('click', () => {
burgerBtn.classList.remove('active');
nav.classList.remove('active');
});
});
document.getElementById('headerOrderBtn').addEventListener('click', () => {
document.getElementById('catalog').scrollIntoView({ behavior: 'smooth' });
});
}
function renderCatalog(filter = 'all') {
const grid = document.getElementById('catalogGrid');
const filtered = filter === 'all' ? PRODUCTS : PRODUCTS.filter(p => p.category === filter);
grid.innerHTML = filtered.map(product => `
<div class="product-card" data-id="${product.id}">
<div class="product-card__image">
<img src="${product.image}" alt="${product.title}" loading="lazy">
${product.badge ? `<span class="product-card__badge">${product.badge}</span>` : ''}
</div>
<div class="product-card__content">
<span class="product-card__category">${getCategoryName(product.category)}</span>
<h3 class="product-card__title">${product.title}</h3>
<p class="product-card__desc">${product.description}</p>
<div class="product-card__footer">
<span class="product-card__price">${formatPrice(product.price)}</span>
<div class="product-card__actions">
<button class="btn btn--secondary btn--small" onclick="openProductModal(${product.id})">Толығырақ</button>
<button class="btn btn--primary btn--small" onclick="addToCart(${product.id})">Тапсырыс</button>
</div>
</div>
</div>
</div>
`).join('');
}
function getCategoryName(cat) {
const names = {face: 'Бет', body: 'Дене', care: 'Күтім', sets: 'Жиынтықтар'};
return names[cat] || cat;
}
function formatPrice(price) {
return price.toLocaleString('ru-RU') + ' ₸';
}
function initFilters() {
document.querySelectorAll('.filter-btn').forEach(btn => {
btn.addEventListener('click', () => {
document.querySelectorAll('.filter-btn').forEach(b => b.classList.remove('active'));
btn.classList.add('active');
currentFilter = btn.dataset.filter;
renderCatalog(currentFilter);
});
});
}
function openProductModal(id) {
const product = PRODUCTS.find(p => p.id === id);
if (!product) return;
const modalBody = document.getElementById('modalBody');
modalBody.innerHTML = `
<div class="product-modal">
<div class="product-modal__image"><img src="${product.image}" alt="${product.title}"></div>
<div class="product-modal__info">
<h3>${product.title}</h3>
<p class="product-modal__price">${formatPrice(product.price)}</p>
<p class="product-modal__desc">${product.description}</p>
<div class="product-modal__specs">
<h4 class="product-modal__specs-title">Сипаттамасы</h4>
<ul class="product-modal__specs-list">
${Object.entries(product.specs).map(([key, value]) => `<li><span>${key}</span><span>${value}</span></li>`).join('')}
</ul>
</div>
<div class="product-modal__quantity">
<button class="quantity-btn" onclick="changeQuantity(-1)">−</button>
<span class="quantity-value" id="modalQuantity">1</span>
<button class="quantity-btn" onclick="changeQuantity(1)">+</button>
</div>
<button class="btn btn--primary btn--large btn--full" onclick="addToCartFromModal(${product.id})">Себетке қосу</button>
</div>
</div>
`;
openModal('productModal');
}
function changeQuantity(delta) {
const el = document.getElementById('modalQuantity');
let val = parseInt(el.textContent) + delta;
if (val < 1) val = 1;
el.textContent = val;
}
function addToCartFromModal(id) {
const qty = parseInt(document.getElementById('modalQuantity').textContent);
addToCart(id, qty);
closeModal('productModal');
}
function addToCart(id, qty = 1) {
const existing = cart.find(item => item.id === id);
if (existing) existing.quantity += qty;
else {
const product = PRODUCTS.find(p => p.id === id);
cart.push({...product, quantity: qty});
}
saveCart();
updateCartCount();
showNotification('Тауар себетке қосылды', 'success');
}
function saveCart() {
localStorage.setItem('ffu_cart', JSON.stringify(cart));
}
function updateCartCount() {
const count = cart.reduce((sum, item) => sum + item.quantity, 0);
document.getElementById('cartCount').textContent = count;
}
function initModals() {
document.getElementById('cartBtn').addEventListener('click', openCart);
document.getElementById('modalOverlay').addEventListener('click', () => closeModal('productModal'));
document.getElementById('modalClose').addEventListener('click', () => closeModal('productModal'));
document.getElementById('cartOverlay').addEventListener('click', () => closeModal('cartModal'));
document.getElementById('cartModalClose').addEventListener('click', () => closeModal('cartModal'));
document.getElementById('checkoutOverlay').addEventListener('click', () => closeModal('checkoutModal'));
document.getElementById('checkoutModalClose').addEventListener('click', () => closeModal('checkoutModal'));
document.getElementById('successClose').addEventListener('click', () => {
closeModal('successModal');
cart = [];
saveCart();
updateCartCount();
renderCart();
});
document.getElementById('checkoutBtn').addEventListener('click', openCheckout);
document.addEventListener('keydown', (e) => {
if (e.key === 'Escape') document.querySelectorAll('.modal.active').forEach(modal => modal.classList.remove('active'));
});
}
function openModal(id) {
document.getElementById(id).classList.add('active');
document.body.style.overflow = 'hidden';
}
function closeModal(id) {
document.getElementById(id).classList.remove('active');
document.body.style.overflow = '';
}
function openCart() {
renderCart();
openModal('cartModal');
}
function renderCart() {
const empty = document.getElementById('cartEmpty');
const content = document.getElementById('cartContent');
const itemsContainer = document.getElementById('cartItems');
if (cart.length === 0) {
empty.style.display = 'block';
content.style.display = 'none';
return;
}
empty.style.display = 'none';
content.style.display = 'block';
itemsContainer.innerHTML = cart.map(item => `
<div class="cart-item">
<div class="cart-item__image"><img src="${item.image}" alt="${item.title}"></div>
<div class="cart-item__content">
<h4 class="cart-item__title">${item.title}</h4>
<p class="cart-item__price">${formatPrice(item.price)} × ${item.quantity}</p>
<div class="cart-item__actions">
<div style="display:flex;align-items:center;gap:10px;">
<button class="quantity-btn" style="width:32px;height:32px;font-size:16px;" onclick="updateCartQuantity(${item.id}, -1)">−</button>
<span style="font-weight:600;min-width:30px;text-align:center;">${item.quantity}</span>
<button class="quantity-btn" style="width:32px;height:32px;font-size:16px;" onclick="updateCartQuantity(${item.id}, 1)">+</button>
</div>
<button class="cart-item__remove" onclick="removeFromCart(${item.id})">Жою</button>
</div>
</div>
</div>
`).join('');
const subtotal = cart.reduce((sum, item) => sum + item.price * item.quantity, 0);
document.getElementById('cartTotalCount').textContent = cart.reduce((sum, item) => sum + item.quantity, 0);
document.getElementById('cartSubtotal').textContent = formatPrice(subtotal);
document.getElementById('cartTotal').textContent = formatPrice(subtotal);
}
function updateCartQuantity(id, delta) {
const item = cart.find(i => i.id === id);
if (!item) return;
item.quantity += delta;
if (item.quantity <= 0) { removeFromCart(id); return; }
saveCart();
updateCartCount();
renderCart();
}
function removeFromCart(id) {
cart = cart.filter(item => item.id !== id);
saveCart();
updateCartCount();
renderCart();
showNotification('Тауар себеттен жойылды', 'success');
}
function openCheckout() {
const subtotal = cart.reduce((sum, item) => sum + item.price * item.quantity, 0);
document.getElementById('checkoutTotal').textContent = formatPrice(subtotal);
closeModal('cartModal');
openModal('checkoutModal');
}
function initPhoneValidation() {
const phoneInput = document.getElementById('checkoutPhone');
phoneInput.addEventListener('input', (e) => {
let value = e.target.value.replace(/\D/g, '');
if (value.length > 11) value = value.slice(0, 11);
if (value.length > 0 && (value[0] === '7' || value[0] === '8')) value = value.slice(1);
let formatted = '+7';
if (value.length > 0) formatted += ' (' + value.slice(0, 3);
if (value.length >= 3) formatted += ') ' + value.slice(3, 6);
if (value.length >= 6) formatted += '-' + value.slice(6, 8);
if (value.length >= 8) formatted += '-' + value.slice(8, 10);
e.target.value = formatted;
});
}
document.getElementById('checkoutForm').addEventListener('submit', (e) => {
e.preventDefault();
const formData = {
name: document.getElementById('checkoutName').value,
phone: document.getElementById('checkoutPhone').value,
city: document.getElementById('checkoutCity').value,
address: document.getElementById('checkoutAddress').value,
comment: document.getElementById('checkoutComment').value,
items: [...cart],
total: cart.reduce((sum, item) => sum + item.price * item.quantity, 0)
};
const message = `Сәлем! Тапсырыс: ${formData.name}\nТелефон: ${formData.phone}\nҚала: ${formData.city}\nМекенжай: ${formData.address}\nСомма: ${formatPrice(formData.total)}`;
window.open('https://wa.me/77771234567?text=' + encodeURIComponent(message));
closeModal('checkoutModal');
openModal('successModal');
document.getElementById('checkoutForm').reset();
});
function initFAQ() {
document.querySelectorAll('.faq-item__header').forEach(header => {
header.addEventListener('click', () => {
const expanded = header.getAttribute('aria-expanded') === 'true';
document.querySelectorAll('.faq-item__header').forEach(h => h.setAttribute('aria-expanded', 'false'));
document.querySelectorAll('.faq-item__content').forEach(content => content.style.maxHeight = null);
if (!expanded) {
header.setAttribute('aria-expanded', 'true');
const content = header.nextElementSibling;
content.style.maxHeight = content.scrollHeight + 'px';
}
});
});
}
function initScrollAnimations() {
const observer = new IntersectionObserver((entries) => {
entries.forEach(entry => { if (entry.isIntersecting) entry.target.classList.add('in'); });
}, { threshold: 0.1 });
document.querySelectorAll('.reveal').forEach(el => observer.observe(el));
}
function renderReviews() {
const track = document.getElementById('reviewsTrack');
track.innerHTML = REVIEWS.map(review => `
<div class="review-card">
<div class="review-card__header">
<img src="${review.avatar}" alt="${review.name}" class="review-card__avatar">
<div class="review-card__info">
<h4>${review.name}</h4>
<div class="review-card__stars">${'★'.repeat(review.rating)}${'☆'.repeat(5 - review.rating)}</div>
</div>
</div>
<p class="review-card__text">"${review.text}"</p>
</div>
`).join('');
updateReviewsSlider();
document.getElementById('reviewsPrev').addEventListener('click', () => {
currentSlide = Math.max(0, currentSlide - 1);
updateReviewsSlider();
});
document.getElementById('reviewsNext').addEventListener('click', () => {
const maxSlide = Math.max(0, Math.ceil(REVIEWS.length / getVisibleReviews()) - 1);
currentSlide = Math.min(maxSlide, currentSlide + 1);
updateReviewsSlider();
});
}
function getVisibleReviews() {
if (window.innerWidth <= 768) return 1;
if (window.innerWidth <= 1024) return 2;
return 3;
}
function updateReviewsSlider() {
const track = document.getElementById('reviewsTrack');
const cardWidth = track.querySelector('.review-card')?.offsetWidth || 0;
const gap = 30;
track.style.transform = `translateX(-${currentSlide * (cardWidth + gap)}px)`;
}
function showNotification(message, type = 'success') {
const notification = document.getElementById('notification');
notification.textContent = message;
notification.className = 'notification show ' + type;
setTimeout(() => notification.classList.remove('show'), 3000);
}
window.openProductModal = openProductModal;
window.changeQuantity = changeQuantity;
window.addToCartFromModal = addToCartFromModal;
window.addToCart = addToCart;
window.updateCartQuantity = updateCartQuantity;
window.removeFromCart = removeFromCart;

287
style.css Normal file
View File

@ -0,0 +1,287 @@
:root {
--primary: #1a1a2e;
--primary-light: #16213e;
--accent: #d4a574;
--accent-hover: #c49564;
--white: #ffffff;
--off-white: #f8f6f4;
--gray-100: #f5f5f5;
--gray-200: #e8e8e8;
--gray-300: #d0d0d0;
--gray-500: #757575;
--gray-700: #424242;
--black: #1a1a1a;
--success: #27ae60;
--error: #e74c3c;
--shadow-sm: 0 2px 8px rgba(0,0,0,0.06);
--shadow-md: 0 4px 16px rgba(0,0,0,0.08);
--shadow-lg: 0 8px 32px rgba(0,0,0,0.12);
--shadow-xl: 0 12px 48px rgba(0,0,0,0.15);
--radius-sm: 8px;
--radius-md: 12px;
--radius-lg: 16px;
--radius-xl: 24px;
--transition: all 0.3s ease;
}
* { box-sizing: border-box; margin: 0; padding: 0; }
html { scroll-behavior: smooth; }
body { font-family: 'Manrope', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; color: var(--black); background: var(--white); line-height: 1.6; overflow-x: hidden; }
h1, h2, h3, h4, h5, h6 { font-family: 'Playfair Display', serif; font-weight: 700; line-height: 1.2; }
a { text-decoration: none; color: inherit; transition: var(--transition); }
img { max-width: 100%; height: auto; display: block; }
button { font-family: inherit; cursor: pointer; border: none; background: none; }
.container { max-width: 1200px; margin: 0 auto; padding: 0 20px; }
.section { padding: 100px 0; }
.section__title { font-size: 42px; text-align: center; margin-bottom: 20px; color: var(--primary); }
.section__desc { text-align: center; color: var(--gray-500); font-size: 18px; max-width: 700px; margin: 0 auto 60px; }
.btn { display: inline-flex; align-items: center; justify-content: center; gap: 10px; padding: 14px 28px; border-radius: var(--radius-sm); font-weight: 600; font-size: 15px; transition: var(--transition); cursor: pointer; border: 2px solid transparent; }
.btn--primary { background: var(--accent); color: var(--white); }
.btn--primary:hover { background: var(--accent-hover); transform: translateY(-2px); box-shadow: var(--shadow-md); }
.btn--outline { background: transparent; border-color: var(--white); color: var(--white); }
.btn--outline:hover { background: var(--white); color: var(--primary); }
.btn--large { padding: 16px 36px; font-size: 16px; }
.btn--full { width: 100%; }
.btn--instagram { background: linear-gradient(45deg, #f09433, #e6683c, #dc2743, #cc2366, #bc1888); color: var(--white); margin-top: 40px; }
.btn--instagram:hover { transform: translateY(-2px); box-shadow: 0 8px 24px rgba(220, 39, 67, 0.4); }
.btn--whatsapp { background: #25D366; color: var(--white); }
.btn--whatsapp:hover { background: #20bd5a; transform: translateY(-2px); box-shadow: 0 8px 24px rgba(37, 211, 102, 0.4); }
.header { position: fixed; top: 0; left: 0; right: 0; background: rgba(255, 255, 255, 0.98); backdrop-filter: blur(10px); z-index: 1000; box-shadow: var(--shadow-sm); transition: var(--transition); }
.header.scrolled { box-shadow: var(--shadow-md); }
.header__container { display: flex; align-items: center; justify-content: space-between; padding: 18px 20px; max-width: 1400px; margin: 0 auto; }
.logo { display: flex; flex-direction: column; }
.logo__text { font-family: 'Playfair Display', serif; font-size: 22px; font-weight: 700; color: var(--primary); letter-spacing: -0.5px; }
.logo__sub { font-size: 11px; color: var(--accent); letter-spacing: 2px; text-transform: uppercase; font-weight: 600; }
.logo--light .logo__text { color: var(--white); }
.logo--light .logo__sub { color: var(--accent); }
.nav { display: flex; gap: 30px; }
.nav__link { font-size: 14px; font-weight: 500; color: var(--gray-700); text-transform: uppercase; letter-spacing: 0.5px; position: relative; }
.nav__link::after { content: ''; position: absolute; bottom: -5px; left: 0; width: 0; height: 2px; background: var(--accent); transition: var(--transition); }
.nav__link:hover { color: var(--accent); }
.nav__link:hover::after { width: 100%; }
.header__actions { display: flex; align-items: center; gap: 15px; }
.cart-btn { position: relative; width: 44px; height: 44px; border-radius: 50%; background: var(--gray-100); display: flex; align-items: center; justify-content: center; color: var(--primary); transition: var(--transition); }
.cart-btn:hover { background: var(--accent); color: var(--white); }
.cart-count { position: absolute; top: -2px; right: -2px; width: 20px; height: 20px; background: var(--accent); color: var(--white); font-size: 11px; font-weight: 700; border-radius: 50%; display: flex; align-items: center; justify-content: center; }
.header__order-btn { display: block; }
.burger { display: none; flex-direction: column; gap: 5px; width: 30px; padding: 5px; }
.burger span { width: 100%; height: 2px; background: var(--primary); transition: var(--transition); }
.hero { position: relative; min-height: 100vh; display: flex; align-items: center; background: linear-gradient(135deg, var(--primary) 0%, var(--primary-light) 100%); overflow: hidden; }
.hero::before { content: ''; position: absolute; top: 0; left: 0; right: 0; bottom: 0; background: url('https://picsum.photos/seed/ffuhero/1920/1080') center/cover; opacity: 0.15; }
.hero__overlay { position: absolute; top: 0; left: 0; right: 0; bottom: 0; background: linear-gradient(180deg, rgba(26,26,46,0.7) 0%, rgba(22,33,62,0.8) 100%); }
.hero__content { position: relative; z-index: 1; text-align: center; max-width: 900px; margin: 0 auto; padding-top: 80px; }
.hero__title { font-size: 72px; color: var(--white); margin-bottom: 20px; letter-spacing: -1px; animation: fadeInUp 0.8s ease 0.2s both; }
.hero__subtitle { font-size: 24px; color: var(--accent); margin-bottom: 25px; font-weight: 500; letter-spacing: 3px; text-transform: uppercase; animation: fadeInUp 0.8s ease 0.4s both; }
.hero__desc { font-size: 18px; color: rgba(255,255,255,0.8); max-width: 650px; margin: 0 auto 40px; line-height: 1.8; animation: fadeInUp 0.8s ease 0.6s both; }
.hero__buttons { display: flex; gap: 20px; justify-content: center; flex-wrap: wrap; animation: fadeInUp 0.8s ease 0.8s both; }
@keyframes fadeInUp { from { opacity: 0; transform: translateY(30px); } to { opacity: 1; transform: translateY(0); } }
.about { background: var(--off-white); }
.about__grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 30px; margin-top: 50px; }
.feature-card { background: var(--white); padding: 40px 30px; border-radius: var(--radius-lg); text-align: center; box-shadow: var(--shadow-sm); transition: var(--transition); }
.feature-card:hover { transform: translateY(-8px); box-shadow: var(--shadow-xl); }
.feature-card__icon { font-size: 48px; margin-bottom: 20px; }
.feature-card__title { font-size: 20px; margin-bottom: 15px; color: var(--primary); }
.feature-card__text { color: var(--gray-500); font-size: 15px; line-height: 1.7; }
.catalog__filters { display: flex; justify-content: center; gap: 12px; flex-wrap: wrap; margin-bottom: 50px; }
.filter-btn { padding: 12px 24px; border-radius: 30px; background: var(--gray-100); color: var(--gray-700); font-weight: 600; font-size: 14px; transition: var(--transition); }
.filter-btn:hover, .filter-btn.active { background: var(--accent); color: var(--white); }
.catalog__grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 30px; }
.product-card { background: var(--white); border-radius: var(--radius-lg); overflow: hidden; box-shadow: var(--shadow-sm); transition: var(--transition); }
.product-card:hover { transform: translateY(-8px); box-shadow: var(--shadow-xl); }
.product-card__image { position: relative; height: 320px; overflow: hidden; background: var(--gray-100); }
.product-card__image img { width: 100%; height: 100%; object-fit: cover; transition: transform 0.5s ease; }
.product-card:hover .product-card__image img { transform: scale(1.08); }
.product-card__badge { position: absolute; top: 15px; left: 15px; background: var(--accent); color: var(--white); padding: 6px 14px; border-radius: 20px; font-size: 12px; font-weight: 700; text-transform: uppercase; }
.product-card__content { padding: 25px; }
.product-card__category { font-size: 12px; color: var(--accent); text-transform: uppercase; letter-spacing: 1px; font-weight: 600; margin-bottom: 8px; }
.product-card__title { font-size: 20px; color: var(--primary); margin-bottom: 10px; font-family: 'Playfair Display', serif; }
.product-card__desc { color: var(--gray-500); font-size: 14px; margin-bottom: 20px; line-height: 1.6; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.product-card__footer { display: flex; align-items: center; justify-content: space-between; gap: 15px; }
.product-card__price { font-size: 22px; font-weight: 700; color: var(--primary); }
.product-card__actions { display: flex; gap: 10px; }
.btn--small { padding: 10px 18px; font-size: 13px; }
.btn--secondary { background: var(--gray-200); color: var(--primary); }
.btn--secondary:hover { background: var(--gray-300); }
.benefits { background: var(--primary); color: var(--white); }
.benefits .section__title { color: var(--white); }
.benefits .section__desc { color: rgba(255,255,255,0.7); }
.benefits__grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 30px; margin-top: 50px; }
.benefit-card { position: relative; padding: 40px 30px; background: rgba(255,255,255,0.05); border-radius: var(--radius-lg); border: 1px solid rgba(255,255,255,0.1); transition: var(--transition); }
.benefit-card:hover { background: rgba(255,255,255,0.08); transform: translateY(-5px); }
.benefit-card__number { font-size: 56px; font-weight: 700; color: rgba(212, 165, 116, 0.3); line-height: 1; margin-bottom: 20px; font-family: 'Playfair Display', serif; }
.benefit-card__title { font-size: 22px; margin-bottom: 15px; color: var(--white); }
.benefit-card__text { color: rgba(255,255,255,0.7); font-size: 15px; line-height: 1.7; }
.instagram { background: var(--off-white); }
.instagram__grid { display: grid; grid-template-columns: repeat(6, 1fr); gap: 15px; margin-top: 50px; }
.instagram__item { position: relative; aspect-ratio: 1; border-radius: var(--radius-md); overflow: hidden; cursor: pointer; }
.instagram__item img { width: 100%; height: 100%; object-fit: cover; transition: transform 0.5s ease; }
.instagram__item:hover img { transform: scale(1.1); }
.instagram__item::after { content: ''; position: absolute; inset: 0; background: rgba(0,0,0,0.3); opacity: 0; transition: var(--transition); }
.instagram__item:hover::after { opacity: 1; }
.reviews { background: var(--white); }
.reviews__slider { position: relative; overflow: hidden; margin-top: 50px; }
.reviews__track { display: flex; gap: 30px; transition: transform 0.5s ease; }
.review-card { min-width: calc(33.333% - 20px); background: var(--off-white); padding: 40px; border-radius: var(--radius-lg); }
.review-card__header { display: flex; align-items: center; gap: 20px; margin-bottom: 20px; }
.review-card__avatar { width: 60px; height: 60px; border-radius: 50%; background: var(--gray-200); object-fit: cover; }
.review-card__info h4 { font-size: 18px; color: var(--primary); margin-bottom: 5px; }
.review-card__stars { display: flex; gap: 3px; color: #f1c40f; font-size: 16px; }
.review-card__text { color: var(--gray-700); line-height: 1.8; font-style: italic; }
.reviews__nav { display: flex; justify-content: center; gap: 15px; margin-top: 30px; }
.reviews__nav-btn { width: 50px; height: 50px; border-radius: 50%; background: var(--gray-100); color: var(--primary); font-size: 20px; display: flex; align-items: center; justify-content: center; transition: var(--transition); }
.reviews__nav-btn:hover { background: var(--accent); color: var(--white); }
.delivery__grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 30px; margin-top: 50px; }
.delivery-card { background: var(--off-white); padding: 40px; border-radius: var(--radius-lg); }
.delivery-card__title { font-size: 22px; color: var(--primary); margin-bottom: 25px; font-family: 'Playfair Display', serif; }
.delivery-card__list { list-style: none; }
.delivery-card__list li { padding: 12px 0; border-bottom: 1px solid var(--gray-200); color: var(--gray-700); display: flex; justify-content: space-between; }
.delivery-card__list li:last-child { border-bottom: none; }
.faq { background: var(--off-white); }
.faq__list { max-width: 800px; margin: 50px auto 0; }
.faq-item { background: var(--white); border-radius: var(--radius-md); margin-bottom: 15px; overflow: hidden; box-shadow: var(--shadow-sm); }
.faq-item__header { width: 100%; padding: 25px 30px; display: flex; justify-content: space-between; align-items: center; text-align: left; font-size: 17px; font-weight: 600; color: var(--primary); background: none; transition: var(--transition); }
.faq-item__header:hover { background: var(--gray-50); }
.faq-item__header[aria-expanded="true"] { background: var(--gray-50); }
.faq-item__icon { font-size: 24px; color: var(--accent); transition: transform 0.3s ease; }
.faq-item__header[aria-expanded="true"] .faq-item__icon { transform: rotate(45deg); }
.faq-item__content { max-height: 0; overflow: hidden; transition: max-height 0.3s ease; }
.faq-item__content p { padding: 0 30px 25px; color: var(--gray-700); line-height: 1.8; }
.contacts__grid { display: grid; grid-template-columns: 1fr 1fr; gap: 50px; margin-top: 50px; }
.contact-item { display: flex; gap: 20px; padding: 25px 0; border-bottom: 1px solid var(--gray-200); }
.contact-item:first-child { padding-top: 0; }
.contact-item__icon { font-size: 32px; }
.contact-item__content h4 { font-size: 16px; color: var(--primary); margin-bottom: 8px; font-family: 'Playfair Display', serif; }
.contact-item__content p { color: var(--gray-700); }
.contact-item__content a { color: var(--accent); font-weight: 600; }
.contact-item__content a:hover { text-decoration: underline; }
.contacts__map { border-radius: var(--radius-lg); overflow: hidden; box-shadow: var(--shadow-md); }
.contacts__cta { text-align: center; margin-top: 50px; }
.footer { background: var(--primary); color: var(--white); padding: 80px 0 30px; }
.footer__grid { display: grid; grid-template-columns: 2fr 1fr 1fr; gap: 60px; margin-bottom: 60px; }
.footer__desc { color: rgba(255,255,255,0.7); margin-top: 20px; line-height: 1.8; }
.footer__nav-title { font-size: 16px; color: var(--accent); margin-bottom: 25px; font-family: 'Playfair Display', serif; }
.footer__nav { display: flex; flex-direction: column; gap: 15px; }
.footer__nav a { color: rgba(255,255,255,0.8); font-size: 15px; }
.footer__nav a:hover { color: var(--accent); }
.footer__contacts p { margin-bottom: 15px; color: rgba(255,255,255,0.8); }
.footer__contacts a { color: rgba(255,255,255,0.8); }
.footer__contacts a:hover { color: var(--accent); }
.footer__bottom { padding-top: 30px; border-top: 1px solid rgba(255,255,255,0.1); text-align: center; color: rgba(255,255,255,0.5); font-size: 14px; }
.modal { position: fixed; inset: 0; z-index: 2000; display: none; align-items: center; justify-content: center; }
.modal.active { display: flex; }
.modal__overlay { position: absolute; inset: 0; background: rgba(0,0,0,0.7); backdrop-filter: blur(5px); }
.modal__content { position: relative; background: var(--white); border-radius: var(--radius-xl); max-width: 600px; width: 90%; max-height: 90vh; overflow-y: auto; padding: 50px 40px; z-index: 1; animation: modalIn 0.3s ease; }
.modal__content--cart { max-width: 800px; }
.modal__content--success { text-align: center; padding: 60px 40px; }
@keyframes modalIn { from { opacity: 0; transform: scale(0.95); } to { opacity: 1; transform: scale(1); } }
.modal__close { position: absolute; top: 20px; right: 20px; width: 36px; height: 36px; border-radius: 50%; background: var(--gray-100); color: var(--primary); font-size: 24px; display: flex; align-items: center; justify-content: center; transition: var(--transition); }
.modal__close:hover { background: var(--gray-200); }
.modal__title { font-size: 28px; text-align: center; margin-bottom: 30px; color: var(--primary); }
.modal__body { position: relative; }
.product-modal { display: grid; grid-template-columns: 1fr 1fr; gap: 40px; }
.product-modal__image { border-radius: var(--radius-lg); overflow: hidden; background: var(--gray-100); }
.product-modal__image img { width: 100%; height: 100%; object-fit: cover; }
.product-modal__info h3 { font-size: 28px; color: var(--primary); margin-bottom: 15px; font-family: 'Playfair Display', serif; }
.product-modal__price { font-size: 32px; font-weight: 700; color: var(--accent); margin-bottom: 25px; }
.product-modal__desc { color: var(--gray-700); line-height: 1.8; margin-bottom: 25px; }
.product-modal__specs { margin-bottom: 25px; }
.product-modal__specs-title { font-size: 16px; font-weight: 700; color: var(--primary); margin-bottom: 15px; }
.product-modal__specs-list { list-style: none; }
.product-modal__specs-list li { padding: 10px 0; border-bottom: 1px solid var(--gray-100); color: var(--gray-700); font-size: 14px; display: flex; justify-content: space-between; }
.product-modal__specs-list li:last-child { border-bottom: none; }
.product-modal__quantity { display: flex; align-items: center; gap: 15px; margin-bottom: 25px; }
.quantity-btn { width: 40px; height: 40px; border-radius: var(--radius-sm); background: var(--gray-100); color: var(--primary); font-size: 20px; font-weight: 700; display: flex; align-items: center; justify-content: center; transition: var(--transition); }
.quantity-btn:hover { background: var(--accent); color: var(--white); }
.quantity-value { font-size: 18px; font-weight: 700; min-width: 40px; text-align: center; }
.cart__empty { text-align: center; padding: 60px 20px; }
.cart__empty p { color: var(--gray-500); margin-bottom: 25px; font-size: 18px; }
.cart__items { display: flex; flex-direction: column; gap: 20px; margin-bottom: 30px; max-height: 400px; overflow-y: auto; }
.cart-item { display: flex; gap: 20px; padding: 20px; background: var(--gray-50); border-radius: var(--radius-md); }
.cart-item__image { width: 100px; height: 100px; border-radius: var(--radius-sm); overflow: hidden; background: var(--gray-100); flex-shrink: 0; }
.cart-item__image img { width: 100%; height: 100%; object-fit: cover; }
.cart-item__content { flex: 1; }
.cart-item__title { font-size: 16px; font-weight: 600; color: var(--primary); margin-bottom: 8px; }
.cart-item__price { color: var(--accent); font-weight: 700; margin-bottom: 15px; }
.cart-item__actions { display: flex; align-items: center; gap: 15px; }
.cart-item__remove { color: var(--error); font-size: 13px; font-weight: 600; transition: var(--transition); }
.cart-item__remove:hover { text-decoration: underline; }
.cart__summary { border-top: 2px solid var(--gray-200); padding-top: 25px; }
.cart__summary-row { display: flex; justify-content: space-between; padding: 12px 0; color: var(--gray-700); }
.cart__summary-row--total { font-size: 20px; font-weight: 700; color: var(--primary); border-top: 1px solid var(--gray-200); margin-top: 15px; padding-top: 20px; }
.checkout-form { display: flex; flex-direction: column; gap: 20px; }
.form-group { display: flex; flex-direction: column; gap: 8px; }
.form-group label { font-size: 14px; font-weight: 600; color: var(--primary); }
.form-group input, .form-group textarea { padding: 14px 18px; border: 2px solid var(--gray-200); border-radius: var(--radius-sm); font-size: 15px; font-family: inherit; transition: var(--transition); }
.form-group input:focus, .form-group textarea:focus { outline: none; border-color: var(--accent); }
.form-group textarea { resize: vertical; min-height: 100px; }
.checkout__total { display: flex; justify-content: space-between; align-items: center; padding: 20px; background: var(--gray-50); border-radius: var(--radius-md); font-size: 18px; }
.checkout__total strong { font-size: 24px; color: var(--accent); }
.success-icon { width: 80px; height: 80px; margin: 0 auto 25px; background: var(--success); color: var(--white); border-radius: 50%; display: flex; align-items: center; justify-content: center; font-size: 40px; animation: scaleIn 0.5s ease; }
@keyframes scaleIn { from { transform: scale(0); } to { transform: scale(1); } }
.notification { position: fixed; bottom: 30px; right: 30px; background: var(--primary); color: var(--white); padding: 18px 28px; border-radius: var(--radius-md); box-shadow: var(--shadow-xl); z-index: 3000; transform: translateX(150%); transition: transform 0.3s ease; }
.notification.show { transform: translateX(0); }
.notification.success { background: var(--success); }
.notification.error { background: var(--error); }
.reveal { opacity: 0; transform: translateY(30px); transition: opacity 0.6s ease, transform 0.6s ease; }
.reveal.in { opacity: 1; transform: translateY(0); }
@media (max-width: 1024px) {
.catalog__grid { grid-template-columns: repeat(2, 1fr); }
.instagram__grid { grid-template-columns: repeat(3, 1fr); }
.review-card { min-width: calc(50% - 15px); }
.benefits__grid, .delivery__grid { grid-template-columns: repeat(2, 1fr); }
.footer__grid { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 768px) {
.section { padding: 60px 0; }
.section__title { font-size: 32px; }
.section__desc { font-size: 16px; }
.nav { position: fixed; top: 80px; left: 0; right: 0; background: var(--white); flex-direction: column; padding: 30px; gap: 20px; box-shadow: var(--shadow-lg); transform: translateY(-150%); transition: var(--transition); }
.nav.active { transform: translateY(0); }
.burger { display: flex; }
.burger.active span:nth-child(1) { transform: rotate(45deg) translate(5px, 5px); }
.burger.active span:nth-child(2) { opacity: 0; }
.burger.active span:nth-child(3) { transform: rotate(-45deg) translate(7px, -6px); }
.header__order-btn { display: none; }
.hero__title { font-size: 42px; }
.hero__subtitle { font-size: 18px; }
.hero__desc { font-size: 16px; }
.hero__buttons { flex-direction: column; }
.btn--large { width: 100%; }
.about__grid { grid-template-columns: 1fr; }
.catalog__grid { grid-template-columns: 1fr; }
.benefits__grid, .delivery__grid, .instagram__grid { grid-template-columns: 1fr; }
.review-card { min-width: 100%; }
.contacts__grid { grid-template-columns: 1fr; }
.footer__grid { grid-template-columns: 1fr; gap: 40px; }
.product-modal { grid-template-columns: 1fr; }
.modal__content { padding: 40px 25px; }
.cart-item { flex-direction: column; text-align: center; }
.cart-item__image { margin: 0 auto; }
.cart-item__actions { justify-content: center; }
}
@media (max-width: 480px) {
.hero__title { font-size: 32px; }
.section__title { font-size: 26px; }
.catalog__filters { flex-direction: column; }
.filter-btn { width: 100%; }
.product-card__footer { flex-direction: column; align-items: stretch; }
.product-card__actions { flex-direction: column; }
.benefit-card__number { font-size: 40px; }
}