/* ============================================================ АННА СОКОЛОВА — Нутрициолог · Premium Wellness Landing ============================================================ */ /* ---------- 1. CSS Reset / Normalize ---------- */ *, *::before, *::after { box-sizing: border-box; } * { margin: 0; padding: 0; } html { scroll-behavior: smooth; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; text-rendering: optimizeLegibility; } body { font-family: var(--font-body); font-size: 17px; line-height: 1.7; color: var(--c-text); background: var(--c-bg); overflow-x: hidden; } img, svg, picture { display: block; max-width: 100%; height: auto; } button { font: inherit; cursor: pointer; border: none; background: none; color: inherit; } a { color: inherit; text-decoration: none; transition: color .25s ease; } ul { list-style: none; } input, button, textarea, select { font: inherit; color: inherit; } /* ---------- 2. CSS Variables ---------- */ :root { /* Цвета */ --c-bg: #FAFAF7; --c-sage: #7A9A7E; --c-sage-dark: #5C7B62; --c-terracotta: #C4775E; --c-terracotta-d: #A65E45; --c-text: #2C2C2C; --c-text-light: #6B6B6B; --c-bg-soft: #F0EBE3; --c-bg-cream: #F7F2EA; --c-dark: #2D3B2E; --c-border: rgba(0, 0, 0, 0.08); --c-white: #FFFFFF; /* Шрифты */ --font-display: 'Cormorant Garamond', 'Times New Roman', serif; --font-body: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; /* Размеры */ --container-max: 1200px; --container-pad: 24px; /* Тени */ --shadow-sm: 0 2px 8px rgba(0,0,0,0.04); --shadow: 0 4px 24px rgba(0,0,0,0.06); --shadow-lg: 0 12px 48px rgba(0,0,0,0.08); --shadow-xl: 0 24px 64px rgba(0,0,0,0.12); /* Радиусы */ --r-sm: 12px; --r-md: 16px; --r-lg: 24px; --r-xl: 32px; /* Анимация */ --ease: cubic-bezier(0.4, 0, 0.2, 1); --ease-out: cubic-bezier(0.16, 1, 0.3, 1); } /* ---------- 3. Глобальные классы ---------- */ .container { max-width: var(--container-max); margin: 0 auto; padding: 0 var(--container-pad); width: 100%; } .visually-hidden { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; } /* Заголовки */ h1, h2, h3, h4 { font-family: var(--font-display); font-weight: 500; color: var(--c-text); letter-spacing: -0.01em; line-height: 1.15; } h1 { font-size: clamp(2.5rem, 5.5vw, 4.5rem); font-weight: 500; } h2 { font-size: clamp(2rem, 4vw, 2.75rem); } h3 { font-family: var(--font-body); font-weight: 600; font-size: 1.25rem; letter-spacing: -0.01em; line-height: 1.4; } h1 em, h2 em { font-style: italic; color: var(--c-terracotta); font-weight: 400; } /* Eyebrow (надзаголовок) */ .eyebrow { display: inline-flex; align-items: center; gap: 10px; font-size: 0.78rem; font-weight: 500; letter-spacing: 0.18em; text-transform: uppercase; color: var(--c-sage-dark); margin-bottom: 20px; } .eyebrow-light { color: rgba(255,255,255,0.85); } .eyebrow-dot { width: 6px; height: 6px; border-radius: 50%; background: var(--c-terracotta); display: inline-block; } .section-head { text-align: center; max-width: 720px; margin: 0 auto 64px; } .section-head .eyebrow { justify-content: center; } .section-lead { font-size: 1.125rem; color: var(--c-text-light); margin-top: 16px; } .link-arrow { display: inline-flex; align-items: center; gap: 8px; color: var(--c-terracotta); font-weight: 500; border-bottom: 1px solid transparent; padding-bottom: 2px; transition: gap .25s var(--ease), border-color .25s var(--ease); } .link-arrow:hover { gap: 12px; border-bottom-color: var(--c-terracotta); } /* ---------- 4. Кнопки ---------- */ .btn { display: inline-flex; align-items: center; justify-content: center; gap: 8px; padding: 14px 28px; border-radius: 999px; font-weight: 500; font-size: 0.95rem; letter-spacing: 0.01em; transition: all .3s var(--ease); white-space: nowrap; cursor: pointer; border: 1.5px solid transparent; } .btn-lg { padding: 18px 36px; font-size: 1rem; } .btn-xl { padding: 22px 44px; font-size: 1.05rem; } .btn-primary { background: var(--c-sage); color: var(--c-white); box-shadow: 0 4px 16px rgba(122, 154, 126, 0.25); } .btn-primary:hover { background: var(--c-sage-dark); transform: translateY(-2px); box-shadow: 0 8px 24px rgba(122, 154, 126, 0.35); } .btn-ghost { background: transparent; color: var(--c-text); border-color: rgba(0,0,0,0.15); } .btn-ghost:hover { background: var(--c-text); color: var(--c-white); border-color: var(--c-text); transform: translateY(-2px); } .btn-light { background: var(--c-white); color: var(--c-dark); box-shadow: 0 4px 16px rgba(0,0,0,0.12); } .btn-light:hover { background: var(--c-bg-soft); transform: translateY(-2px); box-shadow: 0 12px 32px rgba(0,0,0,0.18); } /* ---------- 5. ANNOUNCEMENT BAR ---------- */ .announcement-bar { background: var(--c-sage); color: var(--c-white); padding: 11px 0; font-size: 0.9rem; text-align: center; font-weight: 400; } .announcement-link { display: inline-flex; align-items: center; gap: 10px; color: var(--c-white); } .announcement-link .arrow { transition: transform .3s var(--ease); } .announcement-link:hover .arrow { transform: translateX(4px); } /* ---------- 6. NAVIGATION ---------- */ .nav { position: sticky; top: 0; z-index: 100; background: rgba(250, 250, 247, 0.85); backdrop-filter: saturate(180%) blur(20px); -webkit-backdrop-filter: saturate(180%) blur(20px); border-bottom: 1px solid transparent; transition: box-shadow .3s var(--ease), border-color .3s var(--ease); } .nav.scrolled { box-shadow: var(--shadow); border-bottom-color: var(--c-border); } .nav-container { display: flex; align-items: center; justify-content: space-between; padding-top: 18px; padding-bottom: 18px; gap: 24px; } .nav-logo { display: flex; flex-direction: column; line-height: 1.1; } .logo-name { font-family: var(--font-display); font-size: 1.4rem; font-weight: 600; letter-spacing: -0.01em; } .logo-tagline { font-size: 0.72rem; color: var(--c-text-light); letter-spacing: 0.04em; margin-top: 2px; } .nav-menu ul { display: flex; gap: 36px; } .nav-menu a { font-size: 0.95rem; color: var(--c-text); position: relative; padding: 4px 0; } .nav-menu a::after { content: ''; position: absolute; left: 0; right: 0; bottom: 0; height: 1.5px; background: var(--c-terracotta); transform: scaleX(0); transform-origin: left; transition: transform .3s var(--ease); } .nav-menu a:hover::after { transform: scaleX(1); } .nav-cta { padding: 12px 24px; font-size: 0.9rem; } .nav-toggle { display: none; width: 40px; height: 40px; flex-direction: column; justify-content: center; gap: 5px; padding: 8px; } .nav-toggle span { display: block; width: 22px; height: 1.5px; background: var(--c-text); transition: all .3s var(--ease); } .nav-toggle.active span:nth-child(1) { transform: translateY(6.5px) rotate(45deg); } .nav-toggle.active span:nth-child(2) { opacity: 0; } .nav-toggle.active span:nth-child(3) { transform: translateY(-6.5px) rotate(-45deg); } /* ---------- 7. HERO ---------- */ .hero { position: relative; padding: 80px 0 100px; overflow: hidden; } .blob { position: absolute; width: 700px; height: 700px; z-index: 0; pointer-events: none; } .blob-hero { top: -150px; right: -200px; animation: float 14s ease-in-out infinite; } @keyframes float { 0%, 100% { transform: translate(0, 0) rotate(0); } 50% { transform: translate(-20px, 30px) rotate(8deg); } } .hero-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 80px; align-items: center; position: relative; z-index: 1; } .hero-title { margin-bottom: 24px; } .hero-subtitle { font-size: 1.18rem; line-height: 1.6; color: var(--c-text-light); margin-bottom: 40px; max-width: 540px; } .hero-ctas { display: flex; gap: 16px; flex-wrap: wrap; margin-bottom: 56px; } .hero-stats { display: grid; grid-template-columns: repeat(3, 1fr); gap: 32px; padding-top: 32px; border-top: 1px solid var(--c-border); } .stat { display: flex; flex-direction: column; } .stat-number { font-family: var(--font-display); font-size: 2.4rem; font-weight: 600; color: var(--c-text); line-height: 1; } .stat-suffix { font-family: var(--font-display); font-size: 2.4rem; font-weight: 600; color: var(--c-terracotta); line-height: 1; } .stat-label { font-size: 0.85rem; color: var(--c-text-light); margin-top: 6px; line-height: 1.4; } /* HERO PHOTO */ .hero-photo { position: relative; } .photo-wrapper { position: relative; border-radius: var(--r-xl); overflow: hidden; box-shadow: var(--shadow-xl); aspect-ratio: 4/5; } .photo-wrapper::before { content: ''; position: absolute; inset: 0; background: linear-gradient(135deg, transparent 60%, rgba(196, 119, 94, 0.18)); z-index: 1; pointer-events: none; } .photo-wrapper img { width: 100%; height: 100%; object-fit: cover; transition: transform 1.2s var(--ease-out); } .photo-wrapper:hover img { transform: scale(1.04); } .photo-badge { position: absolute; bottom: 24px; left: 24px; background: rgba(255, 255, 255, 0.95); backdrop-filter: blur(10px); padding: 14px 18px; border-radius: var(--r-md); display: flex; align-items: center; gap: 10px; font-size: 0.78rem; font-weight: 500; line-height: 1.3; box-shadow: var(--shadow); z-index: 2; } .photo-badge i { font-size: 22px; color: var(--c-sage); } /* ---------- 8. SOCIAL PROOF ---------- */ .social-proof { background: var(--c-bg-soft); padding: 56px 0; } .social-proof-label { text-align: center; font-size: 0.78rem; letter-spacing: 0.22em; text-transform: uppercase; color: var(--c-text-light); margin-bottom: 32px; } .logos-grid { display: flex; justify-content: center; align-items: center; flex-wrap: wrap; gap: 48px; } .logo-item { font-family: var(--font-display); font-size: 1.05rem; font-weight: 500; letter-spacing: 0.04em; color: var(--c-text-light); opacity: 0.65; transition: opacity .3s var(--ease); } .logo-item:hover { opacity: 1; color: var(--c-text); } /* ---------- 9. PROBLEM ---------- */ .problem { padding: 120px 0; background: radial-gradient(ellipse at top right, rgba(122, 154, 126, 0.08), transparent 50%), var(--c-bg-cream); } .problem-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 20px; margin-bottom: 56px; } .problem-card { background: var(--c-white); padding: 28px 28px 28px 28px; border-radius: var(--r-md); border: 1px solid var(--c-border); display: flex; align-items: flex-start; gap: 16px; transition: transform .3s var(--ease), box-shadow .3s var(--ease); } .problem-card:hover { transform: translateY(-4px); box-shadow: var(--shadow); } .problem-card i { font-size: 28px; color: var(--c-sage); flex-shrink: 0; } .problem-card p { font-size: 1rem; line-height: 1.6; color: var(--c-text); } .problem-empathy { text-align: center; font-family: var(--font-display); font-size: clamp(1.5rem, 2.4vw, 2rem); font-style: normal; color: var(--c-text); max-width: 720px; margin: 0 auto; line-height: 1.4; } .problem-empathy em { color: var(--c-terracotta); font-style: italic; } /* ---------- 10. METHOD ---------- */ .method { padding: 120px 0; } .method-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 24px; margin-bottom: 64px; } .method-step { position: relative; background: var(--c-white); padding: 36px 28px 32px; border-radius: var(--r-lg); border: 1px solid var(--c-border); transition: transform .4s var(--ease), box-shadow .4s var(--ease), border-color .4s var(--ease); } .method-step:hover { transform: translateY(-6px); box-shadow: var(--shadow-lg); border-color: rgba(122, 154, 126, 0.3); } .step-number { position: absolute; top: 24px; right: 24px; font-family: var(--font-display); font-size: 1.4rem; font-weight: 500; color: var(--c-terracotta); opacity: 0.5; } .method-step i { font-size: 36px; color: var(--c-sage); margin-bottom: 24px; display: block; } .method-step h3 { margin-bottom: 12px; font-size: 1.15rem; } .method-step p { color: var(--c-text-light); font-size: 0.95rem; line-height: 1.6; } .method-cta { text-align: center; } /* ---------- 11. ABOUT ---------- */ .about { padding: 120px 0; background: var(--c-bg-soft); } .about-grid { display: grid; grid-template-columns: 5fr 6fr; gap: 80px; align-items: center; } .about-photo { border-radius: var(--r-xl); overflow: hidden; aspect-ratio: 4/5; box-shadow: var(--shadow-lg); } .about-photo img { width: 100%; height: 100%; object-fit: cover; } .about-content h2 { margin-bottom: 28px; } .about-content p { color: var(--c-text); margin-bottom: 18px; font-size: 1.02rem; } .about-credentials { display: grid; gap: 12px; margin: 32px 0; padding: 24px; background: var(--c-white); border-radius: var(--r-md); border: 1px solid var(--c-border); } .about-credentials li { display: flex; align-items: center; gap: 12px; font-size: 0.95rem; } .about-credentials i { font-size: 22px; color: var(--c-sage); flex-shrink: 0; } /* ---------- 12. SERVICES ---------- */ .services { padding: 120px 0; } .services-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 28px; align-items: stretch; } .service-card { position: relative; display: flex; flex-direction: column; background: var(--c-white); padding: 40px 32px 36px; border-radius: var(--r-lg); border: 1px solid var(--c-border); transition: transform .4s var(--ease), box-shadow .4s var(--ease); } .service-card:hover { transform: translateY(-6px); box-shadow: var(--shadow-lg); } .service-card-featured { background: var(--c-bg-cream); border: 1.5px solid var(--c-sage); transform: translateY(-12px); box-shadow: var(--shadow-lg); } .service-card-featured:hover { transform: translateY(-18px); box-shadow: var(--shadow-xl); } .service-badge { position: absolute; top: -12px; left: 50%; transform: translateX(-50%); background: var(--c-terracotta); color: var(--c-white); font-size: 0.72rem; font-weight: 500; letter-spacing: 0.1em; text-transform: uppercase; padding: 6px 16px; border-radius: 999px; white-space: nowrap; } .service-icon { font-size: 40px; color: var(--c-sage); margin-bottom: 20px; display: block; } .service-card h3 { font-size: 1.4rem; font-family: var(--font-display); font-weight: 500; margin-bottom: 8px; } .service-for { color: var(--c-text-light); font-size: 0.92rem; font-style: italic; margin-bottom: 24px; line-height: 1.5; } .service-includes { display: grid; gap: 10px; margin-bottom: 32px; flex: 1; } .service-includes li { font-size: 0.95rem; padding-left: 24px; position: relative; line-height: 1.5; } .service-includes li::before { content: ''; position: absolute; left: 0; top: 9px; width: 14px; height: 1.5px; background: var(--c-sage); } .service-price { font-size: 0.92rem; color: var(--c-text-light); margin-bottom: 20px; } .service-price strong { font-family: var(--font-display); font-size: 1.6rem; font-weight: 600; color: var(--c-text); margin-left: 6px; } .service-card .btn { align-self: stretch; } /* ---------- 13. TRANSFORMATION ---------- */ .transformation { padding: 120px 0; background: var(--c-dark); color: var(--c-white); } .transformation h2 { color: var(--c-white); } .transformation .section-head { margin-bottom: 64px; } .transformation-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 16px 32px; max-width: 1000px; margin: 0 auto; } .trans-row { display: grid; grid-template-columns: 1fr auto 1fr; align-items: center; gap: 20px; padding: 20px 24px; background: rgba(255,255,255,0.04); border: 1px solid rgba(255,255,255,0.08); border-radius: var(--r-md); transition: background .3s var(--ease); } .trans-row:hover { background: rgba(255,255,255,0.07); } .trans-label { display: block; font-size: 0.7rem; letter-spacing: 0.18em; text-transform: uppercase; color: rgba(255,255,255,0.5); margin-bottom: 4px; } .trans-before p { color: rgba(255,255,255,0.55); font-size: 0.95rem; text-decoration: line-through; text-decoration-color: rgba(196, 119, 94, 0.4); text-decoration-thickness: 1px; } .trans-after p { color: var(--c-white); font-size: 0.95rem; font-weight: 500; } .trans-arrow { color: var(--c-terracotta); font-size: 1.4rem; } .trans-disclaimer { text-align: center; margin-top: 48px; font-size: 0.82rem; color: rgba(255,255,255,0.5); font-style: italic; } /* ---------- 14. TESTIMONIALS ---------- */ .testimonials { padding: 120px 0; background: var(--c-bg-cream); } .testimonials-stats { display: flex; justify-content: center; gap: 64px; margin-bottom: 56px; flex-wrap: wrap; } .testimonials-stats div { font-size: 0.95rem; color: var(--c-text-light); } .testimonials-stats strong { font-family: var(--font-display); font-size: 1.6rem; font-weight: 600; color: var(--c-terracotta); display: block; line-height: 1; margin-bottom: 4px; } .testimonials-track { display: grid; grid-template-columns: repeat(2, 1fr); gap: 24px; } .testimonial-card { position: relative; background: var(--c-white); padding: 36px 32px 32px; border-radius: var(--r-lg); border: 1px solid var(--c-border); transition: transform .4s var(--ease), box-shadow .4s var(--ease); } .testimonial-card:hover { transform: translateY(-4px); box-shadow: var(--shadow); } .quote-mark { position: absolute; top: 12px; right: 28px; font-family: var(--font-display); font-size: 6rem; font-weight: 700; color: var(--c-sage); opacity: 0.15; line-height: 1; } .testimonial-text { font-family: var(--font-display); font-size: 1.18rem; font-style: italic; line-height: 1.55; color: var(--c-text); margin-bottom: 28px; position: relative; z-index: 1; } .testimonial-author { display: flex; align-items: center; gap: 14px; padding-top: 20px; border-top: 1px solid var(--c-border); } .avatar { width: 48px; height: 48px; border-radius: 50%; background: linear-gradient(135deg, var(--c-sage), var(--c-sage-dark)); color: var(--c-white); display: flex; align-items: center; justify-content: center; font-weight: 600; font-size: 0.9rem; letter-spacing: 0.04em; } .author-name { font-weight: 600; font-size: 0.95rem; } .author-meta { font-size: 0.82rem; color: var(--c-text-light); margin-top: 2px; } .testimonial-result { margin-top: 16px; font-size: 0.85rem; font-weight: 500; color: var(--c-terracotta); letter-spacing: 0.02em; } /* ---------- 15. LEAD MAGNET ---------- */ .lead-magnet { padding: 120px 0; background: linear-gradient(135deg, var(--c-sage) 0%, var(--c-sage-dark) 100%); color: var(--c-white); position: relative; overflow: hidden; } .lead-magnet::before { content: ''; position: absolute; top: -100px; right: -100px; width: 400px; height: 400px; border-radius: 50%; background: radial-gradient(circle, rgba(255,255,255,0.08), transparent 70%); } .lead-grid { display: grid; grid-template-columns: 6fr 5fr; gap: 80px; align-items: center; position: relative; z-index: 1; } .lead-content h2 { color: var(--c-white); margin-bottom: 20px; } .lead-description { font-size: 1.1rem; color: rgba(255,255,255,0.85); margin-bottom: 32px; line-height: 1.6; } .lead-includes { margin-bottom: 36px; display: grid; gap: 12px; } .lead-includes li { display: flex; align-items: center; gap: 12px; font-size: 1rem; } .lead-includes i { font-size: 22px; color: var(--c-bg-cream); background: rgba(255,255,255,0.12); border-radius: 50%; padding: 4px; } .lead-form { display: flex; flex-wrap: wrap; gap: 12px; align-items: stretch; } .lead-form input[type="email"] { flex: 1; min-width: 240px; padding: 16px 20px; border-radius: 999px; background: var(--c-white); border: 1.5px solid transparent; color: var(--c-text); font-size: 1rem; outline: none; transition: border-color .25s var(--ease); } .lead-form input[type="email"]:focus { border-color: var(--c-terracotta); } .lead-form input[type="email"]:invalid:not(:placeholder-shown) { border-color: #d97757; } .lead-form .btn { padding: 16px 28px; } .lead-form .btn-primary { background: var(--c-terracotta); box-shadow: 0 4px 16px rgba(0,0,0,0.18); } .lead-form .btn-primary:hover { background: var(--c-terracotta-d); } .form-disclaimer { width: 100%; font-size: 0.82rem; color: rgba(255,255,255,0.7); margin-top: 4px; } .form-success { width: 100%; display: flex; align-items: center; gap: 10px; padding: 14px 20px; background: rgba(255,255,255,0.18); border-radius: var(--r-md); font-size: 0.95rem; margin-top: 8px; } .form-success i { font-size: 22px; } .lead-visual { text-align: center; } .lead-visual img { border-radius: var(--r-lg); box-shadow: 0 20px 60px rgba(0,0,0,0.3); transform: rotate(-3deg); transition: transform .6s var(--ease); display: inline-block; } .lead-visual:hover img { transform: rotate(0); } /* ---------- 16. BLOG ---------- */ .blog { padding: 120px 0; } .blog-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 32px; margin-bottom: 48px; } .blog-card { background: var(--c-white); border-radius: var(--r-lg); overflow: hidden; border: 1px solid var(--c-border); transition: transform .4s var(--ease), box-shadow .4s var(--ease); } .blog-card:hover { transform: translateY(-6px); box-shadow: var(--shadow-lg); } .blog-link { display: block; } .blog-image { aspect-ratio: 5/3.2; overflow: hidden; } .blog-image img { width: 100%; height: 100%; object-fit: cover; transition: transform .8s var(--ease-out); } .blog-card:hover .blog-image img { transform: scale(1.06); } .blog-body { padding: 28px 28px 32px; } .blog-category { display: inline-block; font-size: 0.7rem; letter-spacing: 0.18em; text-transform: uppercase; color: var(--c-terracotta); font-weight: 500; margin-bottom: 12px; } .blog-card h3 { font-family: var(--font-display); font-size: 1.32rem; font-weight: 500; line-height: 1.3; margin-bottom: 14px; letter-spacing: -0.01em; transition: color .25s var(--ease); } .blog-card:hover h3 { color: var(--c-sage-dark); } .blog-date { font-size: 0.82rem; color: var(--c-text-light); } .blog-cta { text-align: center; } /* ---------- 17. FINAL CTA ---------- */ .final-cta { position: relative; padding: 140px 0; background: var(--c-dark); color: var(--c-white); text-align: center; overflow: hidden; } .blob-cta { bottom: -200px; left: -150px; animation: float 16s ease-in-out infinite reverse; } .final-cta-inner { position: relative; z-index: 1; max-width: 820px; } .final-cta h2 { color: var(--c-white); margin-bottom: 24px; font-size: clamp(2.2rem, 4.4vw, 3.4rem); line-height: 1.15; } .final-cta h2 em { color: var(--c-terracotta); font-style: italic; } .final-cta-sub { font-size: 1.1rem; color: rgba(255,255,255,0.8); margin-bottom: 40px; line-height: 1.6; } .final-cta-sub strong { color: var(--c-white); } .final-cta-mini { margin-top: 24px; font-size: 0.9rem; color: rgba(255,255,255,0.6); } .final-cta-mini a { color: var(--c-terracotta); border-bottom: 1px solid rgba(196, 119, 94, 0.4); } .final-cta-mini a:hover { border-bottom-color: var(--c-terracotta); } /* ---------- 18. FOOTER ---------- */ .footer { background: #1A2520; color: rgba(255,255,255,0.7); padding: 80px 0 0; } .footer-grid { display: grid; grid-template-columns: 2fr 1fr 1fr; gap: 56px; padding-bottom: 56px; } .footer-logo { font-family: var(--font-display); font-size: 1.6rem; font-weight: 600; color: var(--c-white); margin-bottom: 6px; } .footer-tagline { font-size: 0.88rem; color: rgba(255,255,255,0.5); margin-bottom: 24px; } .footer-contact a { color: rgba(255,255,255,0.85); font-size: 0.95rem; line-height: 1.8; } .footer-contact a:hover { color: var(--c-terracotta); } .footer-heading { font-size: 0.78rem; letter-spacing: 0.2em; text-transform: uppercase; color: var(--c-white); margin-bottom: 18px; font-weight: 500; } .footer-nav ul { display: grid; gap: 10px; } .footer-nav a { font-size: 0.92rem; color: rgba(255,255,255,0.7); } .footer-nav a:hover { color: var(--c-white); } .social-icons { display: flex; gap: 12px; } .social-icons a { width: 42px; height: 42px; border-radius: 50%; background: rgba(255,255,255,0.06); display: flex; align-items: center; justify-content: center; font-size: 20px; color: rgba(255,255,255,0.85); transition: all .3s var(--ease); } .social-icons a:hover { background: var(--c-terracotta); color: var(--c-white); transform: translateY(-2px); } .footer-bottom { padding: 28px 0; border-top: 1px solid rgba(255,255,255,0.08); } .footer-disclaimer { font-size: 0.78rem; color: rgba(255,255,255,0.45); margin-bottom: 16px; font-style: italic; line-height: 1.6; max-width: 800px; } .footer-legal { display: flex; flex-wrap: wrap; gap: 24px; font-size: 0.8rem; color: rgba(255,255,255,0.5); } .footer-legal a:hover { color: var(--c-white); } /* ---------- 19. POPUP ---------- */ .popup-overlay { position: fixed; inset: 0; background: rgba(45, 59, 46, 0.55); backdrop-filter: blur(6px); display: flex; align-items: center; justify-content: center; z-index: 1000; padding: 20px; opacity: 0; transition: opacity .35s var(--ease); } .popup-overlay.active { opacity: 1; } .popup-overlay[hidden] { display: none; } .popup { position: relative; background: var(--c-bg); border-radius: var(--r-xl); padding: 56px 44px 44px; max-width: 540px; width: 100%; box-shadow: var(--shadow-xl); transform: scale(0.92) translateY(20px); transition: transform .4s var(--ease-out); } .popup-overlay.active .popup { transform: scale(1) translateY(0); } .popup-close { position: absolute; top: 16px; right: 16px; width: 36px; height: 36px; border-radius: 50%; background: var(--c-bg-soft); display: flex; align-items: center; justify-content: center; font-size: 18px; transition: all .25s var(--ease); } .popup-close:hover { background: var(--c-text); color: var(--c-white); transform: rotate(90deg); } .popup-eyebrow { display: block; font-size: 0.82rem; font-weight: 500; color: var(--c-terracotta); margin-bottom: 12px; } .popup h3 { font-family: var(--font-display); font-size: 1.8rem; font-weight: 500; margin-bottom: 12px; letter-spacing: -0.01em; } .popup p { color: var(--c-text-light); margin-bottom: 24px; font-size: 0.98rem; } .popup-form input[type="email"] { background: var(--c-white); border: 1.5px solid var(--c-border); } .popup-form .btn-primary { background: var(--c-sage); } .popup-form .form-disclaimer { color: var(--c-text-light); } /* ---------- 20. SCROLL TO TOP ---------- */ .scroll-top { position: fixed; bottom: 28px; right: 28px; width: 48px; height: 48px; border-radius: 50%; background: var(--c-text); color: var(--c-white); display: flex; align-items: center; justify-content: center; font-size: 22px; box-shadow: var(--shadow-lg); z-index: 90; opacity: 0; pointer-events: none; transform: translateY(10px); transition: opacity .3s var(--ease), transform .3s var(--ease), background .25s var(--ease); } .scroll-top.visible { opacity: 1; pointer-events: auto; transform: translateY(0); } .scroll-top:hover { background: var(--c-terracotta); transform: translateY(-3px); } /* ---------- 21. ANIMATIONS — fade-in при скролле ---------- */ .reveal { opacity: 0; transform: translateY(28px); transition: opacity .9s var(--ease-out), transform .9s var(--ease-out); will-change: opacity, transform; } .reveal.visible { opacity: 1; transform: translateY(0); } /* Focus states (accessibility) */ :focus-visible { outline: 2px solid var(--c-terracotta); outline-offset: 3px; border-radius: 4px; } /* Reduced motion */ @media (prefers-reduced-motion: reduce) { *, *::before, *::after { animation-duration: 0.01ms !important; transition-duration: 0.01ms !important; } .reveal { opacity: 1; transform: none; } } /* ============================================================ АДАПТИВНОСТЬ — mobile first медиазапросы ============================================================ */ /* Tablet < 1024px */ @media (max-width: 1024px) { .hero { padding: 60px 0 80px; } .hero-grid { gap: 56px; } .nav-menu ul { gap: 28px; } .method-grid { grid-template-columns: repeat(2, 1fr); } .about-grid { gap: 48px; } .services-grid { grid-template-columns: 1fr; max-width: 540px; margin: 0 auto; gap: 24px; } .service-card-featured { transform: none; } .service-card-featured:hover { transform: translateY(-6px); } .lead-grid { grid-template-columns: 1fr; gap: 56px; } .lead-visual { order: -1; max-width: 360px; margin: 0 auto; } .blog-grid { grid-template-columns: repeat(2, 1fr); } .blog-grid > article:nth-child(3) { grid-column: span 2; max-width: 540px; margin: 0 auto; width: 100%; } .footer-grid { grid-template-columns: 1fr 1fr; } .footer-brand { grid-column: span 2; } } /* Mobile < 768px */ @media (max-width: 768px) { body { font-size: 16px; } /* Nav: hamburger menu */ .nav-menu { position: fixed; top: 0; right: 0; width: min(80vw, 320px); height: 100vh; background: var(--c-bg); box-shadow: var(--shadow-xl); transform: translateX(100%); transition: transform .4s var(--ease); padding: 100px 36px 40px; z-index: 99; } .nav-menu.active { transform: translateX(0); } .nav-menu ul { flex-direction: column; gap: 24px; } .nav-menu a { font-size: 1.15rem; font-family: var(--font-display); } .nav-cta { display: none; } .nav-toggle { display: flex; z-index: 101; } /* Hero */ .hero { padding: 40px 0 60px; } .hero-grid { grid-template-columns: 1fr; gap: 48px; } .hero-photo { order: -1; max-width: 420px; margin: 0 auto; width: 100%; } .hero-ctas .btn { flex: 1; justify-content: center; } .hero-stats { grid-template-columns: 1fr; gap: 20px; padding-top: 24px; } .stat { display: grid; grid-template-columns: auto 1fr; align-items: baseline; gap: 14px; } .stat-number, .stat-suffix { font-size: 1.8rem; } .stat-label { margin-top: 0; } .blob-hero { width: 500px; height: 500px; right: -300px; top: -100px; } /* Social proof */ .logos-grid { gap: 28px 32px; } .logo-item { font-size: 0.95rem; } /* Sections padding */ .problem, .method, .about, .services, .transformation, .testimonials, .lead-magnet, .blog, .final-cta { padding: 80px 0; } .section-head { margin-bottom: 48px; } /* Problem */ .problem-grid { grid-template-columns: 1fr; } /* Method */ .method-grid { grid-template-columns: 1fr; gap: 16px; } /* About */ .about-grid { grid-template-columns: 1fr; gap: 48px; } .about-photo { max-width: 420px; margin: 0 auto; width: 100%; } /* Transformation */ .transformation-grid { grid-template-columns: 1fr; } .trans-row { grid-template-columns: 1fr auto 1fr; gap: 12px; padding: 16px; } /* Testimonials — снап-карусель на mobile */ .testimonials-track { grid-template-columns: none; display: flex; overflow-x: auto; scroll-snap-type: x mandatory; gap: 16px; padding: 8px 4px 32px; margin: 0 -16px; padding-left: 16px; padding-right: 16px; scrollbar-width: thin; } .testimonial-card { flex: 0 0 88%; scroll-snap-align: start; } .testimonials-stats { gap: 32px; } .testimonials-stats strong { font-size: 1.4rem; } /* Lead magnet */ .lead-form input[type="email"] { min-width: 100%; } .lead-form .btn { width: 100%; } /* Blog */ .blog-grid { grid-template-columns: 1fr; gap: 24px; } .blog-grid > article:nth-child(3) { grid-column: auto; } /* Final CTA */ .final-cta { padding: 100px 0; } /* Footer */ .footer-grid { grid-template-columns: 1fr; gap: 40px; } .footer-brand { grid-column: auto; } .footer-legal { gap: 16px; flex-direction: column; } /* Popup */ .popup { padding: 48px 28px 32px; } .popup h3 { font-size: 1.5rem; } /* Scroll-top */ .scroll-top { width: 44px; height: 44px; bottom: 20px; right: 20px; } } /* Small mobile < 480px */ @media (max-width: 480px) { :root { --container-pad: 16px; } .announcement-bar { font-size: 0.78rem; padding: 9px 0; } .hero-title { font-size: 2.4rem; } .hero-subtitle { font-size: 1rem; } .hero-ctas { flex-direction: column; } .hero-ctas .btn { width: 100%; } .photo-badge { padding: 10px 12px; font-size: 0.7rem; } .btn-lg { padding: 16px 24px; font-size: 0.95rem; } .btn-xl { padding: 18px 28px; font-size: 1rem; } }