/
set2701
/
Bautex_Design
Обзор
Документация
Войти
/
set2701
/
Bautex_Design
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
css/style.css
2 375 строк
45 KB
Stepan
Правкка для галереи
10 дек 2025, 11:00
10 дек 2025, 11:00
bddea64
Код
Авторство
О чём код?
:root { --brown: #735234; --brown-dark: #5b4129; --brown-red: #b74c35; --brown-alt: #725133; --brown-light: #ad937b; --gray: #f7f7f8; --gray-light: #efefef; --warm-dark: #b8a399; --white: #fff; --white-white: #fdfaf6; --white-yellow: #fff8eb; --primary-bg: #556b60; --light-bg: #fcfaf6; --form-bg: #f6f7f7; --green-teal: #1d9d7e; --brown-rgba-90: #735234e6; --brown-rgba-10: #7352341a; --brown-rgba-20: #73523433; --brown-rgba-50: #73523480; --white-rgba-10: #ffffff1a; --white-rgba-30: #ffffff4d; --white-rgba-65: #ffffffa6; --white-rgba-85: #ffffffd9; --black-rgba-03: #00000008; --light-bg-rgba-70: #fcfaf6b3; } * { margin: 0; padding: 0; box-sizing: border-box; } html, body { width: 100%; overflow-x: hidden; } body { font-family: "Gothic A1", Helvetica, sans-serif; background-color: var(--white); color: var(--brown); line-height: 1.6; font-size: 1rem; font-weight: 300; min-width: 360px; max-width: 100vw; } .wrapper { max-width: 1300px; margin-left: auto; margin-right: auto; padding-left: 16px; padding-right: 16px; } header { display: flex; justify-content: flex-end; padding-top: 0.875rem; padding-right: 0.625rem; } .hbuttons { display: flex; justify-content: flex-end; width: 100%; } .desktop-nav { display: none !important; } .container { max-width: 20rem; margin: 0 auto; width: 100%; padding: 0 0.625rem; } /* Sections */ section { width: 100%; padding: 2.5rem 0.625rem; } .about-us-section { background-color: var(--gray); padding: 0.875rem 0.625rem 2.5rem; } .footer-section { background-color: var(--gray); padding: 2.5rem 0.625rem; } .header-section { background-color: var(--gray); padding: 2.5rem 0.625rem; } .navigation-section { background-color: var(--light-bg); padding: 2.5rem 0.625rem; width: 20rem; min-height: 40.625rem; display: flex; flex-direction: column; } .main-content-section { background-color: var(--gray-light); padding: 2.5rem 0.625rem; } .feature-section { background-color: var(--warm-dark); padding: 2.5rem 0.625rem; overflow: hidden; } .testimonial-section { background-color: var(--light-bg); width: 100%; min-height: 100vh; display: flex; align-items: center; justify-content: center; overflow: hidden; position: relative; } .testimonial-section img { position: absolute; width: 100%; height: 100%; object-fit: cover; z-index: 1; } .testimonial-section .wrapper { padding-right: 0 !important; padding-left: 0 !important; position: relative; z-index: 2; display: flex; justify-content: center; align-items: center; min-height: 100vh; } .call-to-action-section { background-color: var(--primary-bg); color: var(--white-white); padding: 2.5rem 0.625rem; } /* Typography */ .section-title { font-family: "Prosto One", Helvetica, sans-serif; font-size: 2.25rem; font-weight: 400; line-height: 130%; margin-bottom: 1.6875rem; color: var(--brown); } .section-title.light-text { color: var(--white-white); } .section-description { font-size: 1rem; font-weight: 300; line-height: 140%; margin-bottom: 2.625rem; color: var(--brown); text-align: center; } .nav-title { font-family: "Gothic A1", Helvetica, sans-serif; font-size: 2rem; font-weight: 400; color: var(--brown); margin-bottom: 1.25rem; } .call-to-action-section .nav-title { font-size: 1.125rem; font-weight: 500; color: var(--white-white); margin-bottom: 1.1875rem; } /* Breadcrumb & Navigation */ .breadcrumb-nav { display: flex; align-items: flex-start; gap: 0.3rem; flex-wrap: wrap; max-width: 19rem; margin-bottom: 1.25rem; font-size: 0.75rem; font-weight: 300; color: var(--brown); } .breadcrumb-top-line { display: flex; gap: 0.625rem; align-items: center; justify-content: center; flex-wrap: wrap; } .breadcrumb-collection { color: var(--brown-light); text-decoration: none; } .breadcrumb-collection .breadcrumb-texture { flex-direction: column } .breadcrumb-separator { display: flex; align-items: center; gap: 0; opacity: 0.5; } .separator-dot { width: 0.1875rem; height: 0.1875rem; border-radius: 50%; border: 0.03125rem solid var(--brown); } .separator-line { width: 0.875rem; height: 0.0625rem; } .breadcrumb-text span.light { font-weight: 300; color: var(--brown-light); } .breadcrumb-text span.active { color: var(--brown-red); } /* Menu Button */ .menu-button { width: 1.875rem; padding: 1rem; display: flex; flex-direction: column; gap: 0.3125rem; border: none; background: none; cursor: pointer; margin-bottom: 0; margin-right: 1.6rem; } .menu-line { width: 1.875rem; height: 0.0625rem; background-color: var(--brown); } /* Product Gallery */ .product-gallery { margin-left: 1.5rem; margin-top: 10rem; margin-bottom: 1.875rem; } .gallery-frame { width: 3.125rem; height: 1.8125rem; border: 0.125rem solid var(--brown-red); border-radius: 0.3125rem; margin-bottom: 1.25rem; display: flex; align-items: center; justify-content: center; } .frame-placeholder { width: 100%; height: 100%; } .gallery-counter { display: flex; justify-content: space-between; align-items: center; margin-left: 1.1rem; } .counter-btn { border: none; background: none; cursor: pointer; padding: 0; display: flex; align-items: center; justify-content: center; } .counter-btn img { width: 2.4375rem; height: 1.25rem; } .counter-text { font-family: "Prosto One", Helvetica, sans-serif; font-size: 0.875rem; font-weight: 400; color: var(--brown-red); text-align: center; } .counter-text.light-text { color: var(--white-white); } /* Product Title */ .product-title { font-family: "Prosto One", Helvetica, sans-serif; font-size: 3rem; font-weight: 400; color: var(--brown-alt); margin-bottom: 1.875rem; line-height: 2.925rem; } /* Specs Grid */ .specs-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 1.9375rem; margin-bottom: 1.875rem; } .spec-item { display: flex; flex-direction: column; gap: 0.5rem; } .spec-label { font-size: 0.875rem; font-weight: 300; color: var(--brown-dark); line-height: 1.1375rem; } .spec-value { font-size: 1.25rem; font-weight: 300; color: var(--brown-dark); line-height: 1.625rem; } /* Buttons */ .button-group { display: flex; flex-direction: column; gap: 0.625rem; margin-bottom: 10rem; } .btn { width: 100%; height: 3.125rem; border: none; border-radius: 0.3125rem; font-family: "Gothic A1", Helvetica, sans-serif; font-size: 0.875rem; font-weight: 300; cursor: pointer; transition: all 0.3s ease; } .btn-primary { background-color: var(--brown); color: var(--white-white); } .btn-primary:hover { background-color: var(--brown-rgba-90); } .btn-outline { background-color: transparent; border: 0.0625rem solid var(--brown-dark); color: var(--brown-dark); } .btn-outline:hover { background-color: var(--brown-rgba-10); } .btn-testimonial { width: 100%; height: 3.125rem; background-color: transparent; border: 0.0625rem solid var(--white-white); color: var(--white-white); font-weight: 400; font-size: 0.875rem; border-radius: 0.3125rem; } .btn-testimonial:hover { transform: translateY(-3px) scale(1.05); box-shadow: 0 10px 25px rgba(255, 255, 255, 0.2); border-color: var(--white-white); background-color: var(--white-rgba-10); } .order-request .card .btn-primary:hover { transform: translateY(-3px) scale(1.05); box-shadow: 0 10px 25px rgba(115, 82, 52, 0.4); background-color: var(--brown-dark); } /* Cards */ .card { background-color: var(--gray); border-radius: 0.3125rem; border: 0.03125rem solid var(--brown-red); overflow: hidden; padding: 1.25rem; margin-bottom: 1.25rem; } .slider-controls-color { background-color: var(--white-white); } /* Remove borders from specific calculator cards */ .glue-selection.card, .materials-list.card, .cost-calculation .card { border: none; } .card-title { font-family: "Prosto One", Helvetica, sans-serif; font-size: 1.5rem; font-weight: 400; text-align: center; color: var(--brown); margin-bottom: 3.75rem; line-height: 1.95rem; } /* 1. Стилизация ::selection (дополнение) */ ::selection { background-color: var(--brown-red); color: var(--white-white); text-shadow: 0 1px 0 rgba(0, 0, 0, 0.3); } ::-moz-selection { background-color: var(--brown-red); color: var(--white-white); text-shadow: 0 1px 0 rgba(0, 0, 0, 0.3); } /* 3. Дополнение стилей для полей формы */ .input::placeholder, .textarea::placeholder { color: var(--brown-rgba-50); font-style: italic; transition: all 0.3s ease; } .input:focus::placeholder, .textarea:focus::placeholder { color: var(--brown-red); opacity: 0.7; transform: translateX(5px); } /* 4. Обязательные поля с псевдоклассом :required */ .input:required, .textarea:required { border-left: 3px solid var(--brown-red); background-image: linear-gradient(45deg, transparent 95%, var(--brown-red) 95%); background-size: 8px 8px; } .input:required:valid { border-left: 3px solid var(--green-teal); background-image: linear-gradient(45deg, transparent 95%, var(--green-teal) 95%); } .input:required:invalid:not(:placeholder-shown) { border-left: 3px solid #ff6b6b; background-color: rgba(255, 107, 107, 0.05); background-image: linear-gradient(45deg, transparent 95%, #ff6b6b 95%); } /* 5. Состояние :placeholder-shown */ .input:placeholder-shown, .textarea:placeholder-shown { border-color: var(--brown-light); } .input:not(:placeholder-shown), .textarea:not(:placeholder-shown) { border-color: var(--brown-red); } /* 6. Стилизация :disabled и :enabled */ .input:disabled, .textarea:disabled { background-color: var(--gray-light); color: var(--brown-light); cursor: not-allowed; opacity: 0.6; } .input:enabled, .textarea:enabled { background-color: var(--white-white); cursor: text; } /* 7. Стилизация :checked для чекбоксов и радио-кнопок */ input[type="checkbox"]:checked, input[type="radio"]:checked { accent-color: var(--brown-red); animation: checkAnim 0.3s ease; } @keyframes checkAnim { 0% { transform: scale(0.8); } 50% { transform: scale(1.2); } 100% { transform: scale(1); } } /* Текст рядом с отмеченными элементами */ input[type="checkbox"]:checked + span, input[type="radio"]:checked + span { color: var(--brown-red); font-weight: 500; position: relative; } input[type="checkbox"]:checked + span::before, input[type="radio"]:checked + span::before { content: '✓'; position: absolute; left: -20px; color: var(--brown-red); font-weight: bold; } /* 8. Псевдоэлементы для полей формы в testimonial-form */ .testimonial-form-container .form-field { position: relative; } /* Добавляем иконки через ::before для полей */ .testimonial-form-container .form-field:nth-child(1)::before { position: absolute; right: 15px; top: 50%; transform: translateY(-50%); opacity: 0.5; transition: all 0.3s ease; pointer-events: none; } .testimonial-form-container .form-field:nth-child(2)::before { position: absolute; right: 15px; top: 50%; transform: translateY(-50%); opacity: 0.5; transition: all 0.3s ease; pointer-events: none; } .testimonial-form-container .form-field:nth-child(3)::before { position: absolute; right: 15px; top: 25px; opacity: 0.5; transition: all 0.3s ease; pointer-events: none; } .testimonial-form-container .form-field:focus-within::before { opacity: 1; color: var(--brown-red); transform: translateY(-50%) scale(1.2); } /* Линия под полями при фокусе */ .testimonial-form-container .form-field::after { content: ''; position: absolute; bottom: 0; left: 0; width: 0; height: 2px; background: linear-gradient(90deg, var(--brown-red), var(--brown)); transition: width 0.4s ease; } .testimonial-form-container .form-field:focus-within::after { width: 100%; } /* 9. Улучшенные стили для ссылок с псевдоклассами */ .nav-links a, .contact-info a, .footer-links a, .gallery-btn, .breadcrumb-collection { position: relative; transition: all 0.3s ease; display: inline-block; } /* Подчеркивание при наведении */ .nav-links a::after, .contact-info a::after, .gallery-btn::after { content: ''; position: absolute; width: 0; height: 1px; bottom: -2px; left: 0; background-color: currentColor; transition: width 0.3s ease; } .nav-links a:hover::after, .contact-info a:hover::after, .gallery-btn:hover::after { width: 100%; } /* Состояния ссылок */ .nav-links a:hover, .contact-info a:hover, .footer-links a:hover, .gallery-btn:hover, .breadcrumb-collection:hover { color: var(--brown-red); transform: translateY(-2px); } .nav-links a:active, .contact-info a:active, .footer-links a:active, .gallery-btn:active, .breadcrumb-collection:active { transform: translateY(0); color: var(--brown-dark); } .nav-links a:focus, .contact-info a:focus, .footer-links a:focus, .gallery-btn:focus, .breadcrumb-collection:focus { outline: 2px solid var(--brown-red); outline-offset: 3px; border-radius: 2px; } /* 10. Улучшенные стили для кнопок с анимациями */ .btn { position: relative; overflow: hidden; transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1); } .btn-primary:hover { transform: translateY(-3px) scale(1.05); box-shadow: 0 10px 25px rgba(115, 82, 52, 0.4); background-color: var(--brown-dark); } .btn-outline:hover { transform: translateY(-3px); box-shadow: 0 5px 15px rgba(115, 82, 52, 0.2); background-color: var(--brown-rgba-10); border-color: var(--brown); } /* Активное состояние кнопок */ .btn:active { transform: translateY(-1px) scale(0.98); transition: all 0.1s ease; } /* Фокус состояние с анимацией */ .btn:focus { outline: none; animation: pulseFocus 1.5s infinite; } @keyframes pulseFocus { 0% { box-shadow: 0 0 0 0 rgba(183, 76, 53, 0.7); } 70% { box-shadow: 0 0 0 10px rgba(183, 76, 53, 0); } 100% { box-shadow: 0 0 0 0 rgba(183, 76, 53, 0); } } .color-swatches li:nth-child(odd) .swatch, .color-swatches li:nth-child(even) .swatch { transform: none; /* Убираем rotate */ } .color-swatches li:hover .swatch { transform: scale(1.05); /* Упрощаем анимацию */ box-shadow: 0 4px 10px rgba(0, 0, 0, 0.15); z-index: 10; } .swatch:focus { outline: 2px solid var(--brown-red); outline-offset: 2px; } .swatch.active { transform: scale(1.1); box-shadow: 0 0 0 2px var(--white), 0 0 0 4px var(--brown-red); } .glue-selection.card, .materials-list.card, .cost-calculation .card { transition: none !important; } .glue-selection.card:hover, .materials-list.card:hover, .cost-calculation .card:hover { transform: none !important; box-shadow: none !important; } /* 13. Улучшенные стили для кнопок навигации с анимацией */ .prev-btn, .next-btn, .counter-btn, .selector-btn { transition: all 0.3s ease !important; } .prev-btn:hover, .next-btn:hover, .counter-btn:hover, .selector-btn:hover { transform: scale(1.2); color: var(--brown-dark); } .prev-btn:active, .next-btn:active, .counter-btn:active, .selector-btn:active { transform: scale(0.9); } /* 14. Анимация для стрелочек в отзывах */ .counter-btn .prev-btn, .counter-btn .next-btn { transition: all 0.3s ease; } .counter-btn .prev-btn:hover, .counter-btn .next-btn:hover { transform: scale(1.3); } .counter-btn .prev-btn:active, .counter-btn .next-btn:active { transform: scale(0.9); } /* 15. Анимация для меню-бургера */ .menu-button:hover .menu-line { background-color: var(--brown-red); } .menu-button:active .menu-line { transform: scale(0.9); } .menu-line { transition: all 0.3s ease; } /* 16. УБИРАЕМ анимацию у testimonial-card (по требованию) */ /* .testimonial-card { transition: all 0.4s ease; } .testimonial-card:hover { transform: translateY(-10px); box-shadow: 0 20px 40px rgba(115, 82, 52, 0.15); } */ /* 17. Анимация появления формы */ @keyframes formAppear { from { opacity: 0; transform: translateY(30px) scale(0.95); } to { opacity: 1; transform: translateY(0) scale(1); } } .testimonial-form-container { animation: formAppear 0.6s ease-out 0.3s both; } /* 18. УБИРАЕМ анимацию у карточек "Оставьте заявку" */ .order-request .card { transition: none !important; } .order-request .card:hover { transform: none !important; box-shadow: none !important; } /* Центрируем кнопку в карточке "Оставьте заявку" */ .order-request .card { text-align: center; display: flex; flex-direction: column; align-items: center; } .order-request .card .btn-primary { margin-top: 2rem; width: auto; min-width: 200px; animation: buttonLoad 0.5s ease-out 0.8s both; position: relative; overflow: hidden; transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1); } @keyframes buttonLoad { 0% { opacity: 0; transform: translateY(20px); } 100% { opacity: 1; transform: translateY(0); } } /* 19. Центрируем и добавляем анимацию для кнопки "Оставить отзыв" */ .reviews .btn-testimonial { display: block; margin: 2rem auto 0 auto; width: auto; min-width: 200px; animation: buttonLoad 0.5s ease-out 0.8s both; } /* 20. Анимация для кнопки "Отправить" в форме */ .testimonial-form-container .form-buttons .btn-primary { animation: buttonLoad 0.5s ease-out 0.8s both; width: 100%; position: relative; overflow: hidden; transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1); } .footer-section { padding: 2.5rem 0; } /* Центрирование у картинки с домом и добавление margin */ .gallery-image { display: block; margin: 0 auto 2rem auto; } /* Object-position для карты */ .map-img { object-position: center center; } /* 23. Для анимации при prefers-reduced-motion */ @media (prefers-reduced-motion: reduce) { *, *::before, *::after { animation-duration: 0.01ms !important; animation-iteration-count: 1 !important; transition-duration: 0.01ms !important; } .btn-primary:hover, .btn-outline:hover, .prev-btn:hover, .next-btn:hover, .counter-btn:hover, .selector-btn:hover, .review-navigation .prev-btn:hover, .review-navigation .next-btn:hover { transform: none !important; } } /* Dividers */ .divider { border: none; height: 0.0625rem; background-color: var(--brown-rgba-20); margin: 0.8125rem 0; } .divider.light { background-color: var(--white-rgba-30); margin-top: 1.1875rem; margin-bottom: 1.1875rem; } .divider-line { width: 0.75rem; height: 0.03125rem; margin: 1.8125rem 0; } /* Location Info */ .location-info { font-size: 1.125rem; color: var(--brown); margin-bottom: 1.5625rem; font-weight: 400; } .location-info span.light { font-weight: 300; color: var(--brown-alt); } .location-info span.medium { font-weight: 500; color: var(--brown-alt); position: relative; } /* Features List */ .features-list { display: flex; flex-direction: column; gap: 0.6875rem; margin-bottom: 3.3125rem; } .feature-item { display: flex; align-items: center; gap: 0.6875rem; } .feature-icon { max-width: 0.9375rem; max-height: 0.9375rem; } .feature-text { font-size: 1.125rem; font-weight: 300; color: var(--brown-red); line-height: 1.4625rem; white-space: nowrap; } /* Color Picker */ .color-picker-section { position: relative; } .decorator-img { position: absolute; top: 0; right: 1.8125rem; width: 2.5625rem; height: 20.9375rem; } .color-preview { width: 100%; height: 12.5rem; background-color: var(--green-teal); border-radius: 0 4.6875rem 1.5625rem 1.5625rem; background-blend-mode: multiply; margin-bottom: 1.25rem; } .color-card { background-color: var(--white-rgba-65); border-radius: 0.3125rem 1.5625rem 0.3125rem 0.3125rem; backdrop-filter: blur(0.46875rem) brightness(100%); padding: 1.25rem; } .color-description { font-size: 0.875rem; font-weight: 300; color: var(--brown); text-align: center; margin-bottom: 3.75rem; line-height: 130%; } .color-counter { display: flex; justify-content: space-between; align-items: center; margin-bottom: 2.4375rem; } .color-swatches { display: flex; justify-content: space-between; margin-bottom: 0.8125rem; gap: 0.625rem; } .swatch { width: 3rem; height: 3rem; border-radius: 0.3125rem; border: none; cursor: pointer; box-shadow: 0 0 1.25rem var(--black-rgba-03); transition: transform 0.3s ease; } .swatch:hover { transform: scale(1.05); } .swatch-labels { display: flex; justify-content: space-between; margin-bottom: 2rem; font-size: 0.6875rem; font-weight: 300; color: var(--brown-dark); text-align: center; } .swatch-labels span { flex: 1; line-height: 0.6875rem; } .input-group { display: flex; gap: 0.625rem; } /* Forms */ .form-group { margin-bottom: 1.875rem; } .form-label { display: block; font-size: 0.875rem; font-weight: 300; color: var(--brown-red); margin-bottom: 0.5rem; line-height: 0.875rem; } .input { width: 100%; height: 3.125rem; background-color: var(--form-bg); border: none; border-radius: 0.3125rem; padding: 0 0.9375rem; font-family: "Gothic A1", Helvetica, sans-serif; font-size: 0.875rem; font-weight: 400; color: var(--brown-red); box-shadow: 0 0 1.25rem var(--black-rgba-03); } .input::placeholder { color: var(--brown-rgba-50); } .input-group .input { flex: 1; } .input-group .btn { width: auto; min-width: 8.75rem; } .textarea { width: 100%; height: 6.75rem; background-color: var(--white-white); border: 0.03125rem solid var(--brown); border-radius: 0.9375rem; padding: 0.875rem 0.9375rem; font-family: "Gothic A1", Helvetica, sans-serif; font-size: 0.875rem; font-weight: 300; color: var(--brown); resize: none; line-height: 1.1375rem; } .textarea::placeholder { color: var(--brown-rgba-50); } /* Adhesive Selector */ .adhesive-selector { display: flex; justify-content: space-between; align-items: center; height: 14.375rem; position: relative; margin-bottom: 3.125rem; } .selector-btn { border: none; background: none; cursor: pointer; padding: 0; display: flex; align-items: center; justify-content: center; } .selector-btn img { width: 1.375rem; height: 1.3125rem; } .adhesive-counter { font-family: "Gothic A1", Helvetica, sans-serif; font-size: 0.875rem; font-weight: 300; color: var(--brown-red); text-align: center; line-height: 0.875rem; } .adhesive-name { background-color: var(--gray); border-radius: 0.3125rem; padding: 0.9375rem; font-size: 0.8125rem; font-weight: 400; color: var(--brown-red); text-align: center; line-height: 0.8125rem; height: 3.125rem; display: flex; align-items: center; justify-content: center; box-shadow: 0 0 1.25rem var(--black-rgba-03); } /* Materials & Costs */ .material-item, .cost-item { padding: 0.5rem 0; } .material-name, .cost-name { font-size: 0.875rem; font-weight: 300; color: var(--brown); line-height: 0.875rem; margin-bottom: 0.25rem; } .material-qty { font-size: 0.875rem; font-weight: 500; color: var(--brown-red); line-height: 0.875rem; } .cost-calculation { font-size: 0.875rem; font-weight: 400; color: var(--brown-red); line-height: 0.875rem; } .cost-calculation span.light { font-weight: 300; color: var(--brown-alt); } .cost-calculation span.result { color: var(--brown-red); margin-left: 0.3125rem; } .total-item { display: flex; justify-content: space-between; align-items: center; padding: 0.5rem 0; margin-top: 0.5rem; } .total-label { font-size: 1.125rem; font-weight: 300; color: var(--brown); line-height: 1.125rem; } .total-value { font-size: 1.125rem; font-weight: 500; color: var(--brown-red); line-height: 1.125rem; } .disclaimer { font-size: 0.75rem; font-weight: 300; color: var(--brown-dark); text-align: center; opacity: 0.5; line-height: 0.975rem; } /* Gallery Section */ .interior-gallery { position: relative; margin-left: 0; margin-right: 0; height: 17.375rem; width: 100%; } .gallery-image { width: 100%; height: 100%; object-fit: cover; border-radius: 6.25rem 0.3125rem 0.3125rem 0; } .gallery-info { position: absolute; bottom: 0; left: 0; right: 0; height: 6.125rem; background-color: var(--white-rgba-85); border-radius: 0; backdrop-filter: blur(0.625rem); padding: 1.25rem 1.5625rem; display: flex; flex-direction: column; justify-content: center; } .gallery-info h3 { font-family: "Prosto One", Helvetica, sans-serif; font-size: 1.125rem; font-weight: 400; color: var(--brown-red); line-height: 1.4625rem; margin-bottom: 0.5rem; } .gallery-btn { display: flex; align-items: center; gap: 0.5rem; border: none; background: none; cursor: pointer; padding: 0; font-family: "Gothic A1", Helvetica, sans-serif; font-size: 0.875rem; font-weight: 300; color: var(--brown-red); line-height: 1.1375rem; } .nav-counter { display: flex; justify-content: space-between; align-items: center; margin: auto; } /* Testimonials */ .testimonial-wrapper { position: relative; margin-bottom: 1.5rem; } .testimonial-bg { position: absolute; top: -3.5rem; left: 3.75rem; width: 15.625rem; height: 29.4375rem; z-index: 0; } .testimonial-wrapper::before { content: ''; position: absolute; top: -8.5rem; right: 3.75rem; width: 15.625rem; height: 45rem; background-image: url('/img/reveiews_1.png'); background-repeat: no-repeat; background-size: contain; z-index: 0; } .testimonial-card { position: relative; z-index: 10; background-color: var(--light-bg-rgba-70); border-radius: 1.5625rem 6.25rem 3.125rem 6.25rem; border: 0.03125rem solid var(--brown); backdrop-filter: blur(0.25rem); padding: 2.5rem; padding-bottom: 3.75rem; } .testimonial-text { font-size: 0.875rem; font-weight: 300; color: var(--brown-dark); line-height: 130%; margin-bottom: 1rem; } .testimonial-author { font-size: 0.875rem; font-weight: 500; color: var(--brown-dark); line-height: 1.225rem; } .testimonial-counter { display: flex; justify-content: center; align-items: center; gap: 1.875rem; margin-bottom: 1.5rem; } /* Testimonial Form */ .testimonial-section { width: 100%; max-width: 100vw; } .testimonial-bg-full { z-index: 1; } .testimonial-form-container { position: relative; z-index: 2; max-width: 18.75rem; background-color: var(--white-white); border-radius: 3.125rem 0.3125rem 0.3125rem 1.5625rem; border: 0.0625rem solid var(--brown-red); padding: 1.875rem 1.25rem 1.25rem; text-align: center; } .close-btn { position: absolute; top: 0.9375rem; right: 1.125rem; width: 1.125rem; height: 1.125rem; background: none; border: none; cursor: pointer; padding: 0; display: flex; align-items: center; justify-content: center; } .form-title { font-family: "Prosto One", Helvetica, sans-serif; font-size: 1.5rem; font-weight: 400; color: var(--brown); margin-bottom: 1.875rem; line-height: 1.95rem; text-align: center; } .form-fields { display: flex; flex-direction: column; gap: 1.5625rem; margin-bottom: 1.5625rem; } .form-fields .input, .form-fields .textarea { background-color: var(--white-white); border: 0.03125rem solid var(--brown); border-radius: 0.9375rem; height: 2.875rem; font-size: 0.875rem; font-weight: 300; color: var(--brown); padding: 0 0.9375rem; } .form-fields .textarea { height: 6.75rem; padding: 0.875rem 0.9375rem; resize: none; } .form-disclaimer { font-size: 0.6875rem; font-weight: 300; color: var(--brown); text-align: center; margin-top: 0.9375rem; line-height: 0.89375rem; } .form-disclaimer span.medium { font-weight: 500; } .form-disclaimer span.underline, .form-disclaimer a.underline { font-weight: 500; color: var(--brown-red); text-decoration: underline; } /* Call to Action / Footer */ .call-to-action-section { padding: 2.5rem 0.625rem; padding-top: 2.5rem; } .nav-links { display: flex; flex-direction: column; gap: 1.25rem; margin-bottom: 3.75rem; } .nav-links a { font-size: 0.875rem; font-weight: 300; color: var(--white-white); text-decoration: none; line-height: 130%; transition: opacity 0.3s ease; white-space: nowrap; } .nav-links a:hover { text-decoration: underline; opacity: 0.8; } .contact-info { display: flex; flex-direction: column; gap: 1.25rem; margin-bottom: 3.75rem; font-style: normal; } .contact-info p { font-size: 0.875rem; font-weight: 300; color: var(--white-white); line-height: 130%; } .contact-info a { font-size: 0.875rem; font-weight: 300; color: var(--white-white); text-decoration: underline; line-height: 1.1375rem; transition: opacity 0.3s ease; white-space: nowrap; } .contact-info a:hover { opacity: 0.8; } .footer-links { display: flex; flex-direction: column; gap: 1.25rem; } .footer-links a { font-size: 0.875rem; font-weight: 300; color: var(--white-white); text-decoration: none; line-height: 130%; transition: opacity 0.3s ease; } .footer-links a:hover { text-decoration: underline; opacity: 0.8; } .prev-btn, .next-btn, .counter-btn, .selector-btn { background: transparent; border: none; color: var(--brown-red); font-size: 2.5rem; cursor: pointer; padding: 0.3125rem; display: flex; align-items: center; justify-content: center; transition: opacity 0.3s ease; } .prev-btn:hover, .next-btn:hover, .counter-btn:hover, .selector-btn:hover { opacity: 0.7; } .prev-btn:disabled, .next-btn:disabled, .counter-btn:disabled, .selector-btn:disabled { opacity: 0.3; cursor: not-allowed; } .slide-counter, .slide-counter-color, .counter-text, .adhesive-counter { font-family: "Prosto One", Helvetica, sans-serif; font-size: 0.875rem; font-weight: 400; color: var(--brown-red); text-align: center; } .counter-text.light-text, .slide-counter-color.light { color: var(--white-white); } .slider-controls, .gallery-counter, .color-counter, .adhesive-selector, .testimonial-counter, .nav-counter { display: flex; justify-content: space-between; align-items: center; gap: 2.5rem; } .review-navigation { display: flex; justify-content: center; align-items: center; gap: 3.75rem; } .testimonial-section { position: relative; overflow: hidden; } .testimonial-section img.form-image { position: absolute; width: 100%; height: 100%; object-fit: cover; z-index: 1; left: 0; top: 0; right: 0; bottom: 0; } .where-to-buy { position: relative; overflow: hidden; width: 100%; min-height: 100vh; display: flex; align-items: center; justify-content: center; } .where-to-buy img.map-img { width: 100%; height: auto; object-fit: cover; object-position: center; display: block; margin-top: 1rem; } @media screen and (min-width: 768px) { .wrapper { padding-left: 24px; padding-right: 24px; } /* Header для планшетов */ header { padding: 20px 0; } .hbuttons { justify-content: space-between; align-items: center; } .menu-button { order: 2; } /* Показываем десктопную навигацию на планшетах */ .desktop-nav { display: none !important; } .desktop-nav a { color: var(--brown); text-decoration: none; font-weight: 400; font-size: 1rem; white-space: nowrap; } .desktop-nav a:hover { color: var(--brown-red); } /* Product Page для планшетов */ .product-content { flex-direction: row; gap: 40px; align-items: flex-start; } .product-gallery { flex: 1; margin-top: 0; margin-left: 0; } .product-info { flex: 1; } .product-title { font-size: 3.5rem; } .specs-grid { grid-template-columns: repeat(4, 1fr); } .button-group { flex-direction: row; gap: 16px; } .btn { width: auto; min-width: 180px; } /* Features List для планшетов */ .features-list { flex-direction: row; flex-wrap: wrap; justify-content: center; gap: 24px; } .feature-item { flex-direction: column; text-align: center; gap: 8px; } /* Color Picker для планшетов */ .color-picker-section { display: flex; gap: 40px; align-items: flex-start; } .color-preview { flex: 1; height: 300px; } .color-card { flex: 1; } /* Calculator для планшетов */ .adhesive-selector { height: 200px; } .adhesive-selector img { width: auto; max-height: 180px; } /* Gallery для планшетов */ .interior-gallery { height: 300px; } .gallery-info { height: auto; padding: 20px 30px; } /* Testimonials для планшетов */ .testimonial-card { padding: 40px; max-width: 80%; margin: 0 auto; } /* Footer для планшетов */ .footer-nav { display: grid; grid-template-columns: 1fr 1fr; gap: 40px; } .factura-img { max-width: 450px; } } @media screen and (min-width: 1024px) { .wrapper { padding-left: 32px; padding-right: 32px; } .menu-button { display: none !important; /* Скрываем бургер */ } /* Header для десктопа */ header .wrapper { display: flex; justify-content: space-between; align-items: center; } .hbuttons { justify-content: flex-end; width: auto; } .desktop-nav { display: flex !important; gap: 32px; } /* Product Page для десктопа */ .product-content { gap: 60px; } .product-title { font-size: 4rem; } .gallery-frame { width: 50px; height: 28px; } .factura-img { max-width: 500px; } /* Color Picker для десктопа - применяем контейнерный запрос */ @container (min-width: 500px) { #color-container .color-swatches { grid-template-columns: repeat(10, 1fr); } #color-container .swatch-labels { display: grid; grid-template-columns: repeat(10, 1fr); } } /* Calculator для десктопа */ .calculation-results { display: grid; grid-template-columns: 1fr 1fr; gap: 40px; } /* Where to Buy для десктопа */ .where-to-buy .wrapper { display: grid; grid-template-columns: 1fr 1fr; gap: 60px; align-items: center; } .map-img { width: 100%; height: 400px; object-fit: cover; border-radius: 20px; } /* Interior Gallery для десктопа */ .project.interior-gallery { display: grid; grid-template-columns: 2fr 1fr; gap: 30px; } .gallery-image { border-radius: 20px; } .gallery-info { position: static; background: none; backdrop-filter: none; padding: 0; } /* Testimonials для десктопа */ .testimonial-wrapper { max-width: 800px; margin: 0 auto; } .testimonial-card { max-width: 600px; } /* Footer для десктопа */ .footer-nav { grid-template-columns: 1fr 1fr 1fr; } .footer-links { flex-direction: row; justify-content: space-between; align-items: center; } } @media screen and (min-width: 1300px) { .wrapper { max-width: 1300px; } .product-title { font-size: 4.5rem; } .section-title { font-size: 3rem; } .color-preview { height: 400px; } .adhesive-selector { height: 250px; } .map-img { height: 500px; } } #color-container { container-type: inline-size; container-name: color-picker; } @container color-picker (min-width: 400px) { .color-swatches { display: grid; grid-template-columns: repeat(5, 1fr); gap: 12px; } .swatch { width: 100%; aspect-ratio: 1; } .swatch-labels { display: grid; grid-template-columns: repeat(5, 1fr); gap: 12px; } } @container color-picker (min-width: 600px) { .color-swatches { grid-template-columns: repeat(10, 1fr); } .swatch-labels { grid-template-columns: repeat(10, 1fr); } } /* Убираем двойные отступы у второй секции */ .footer-section { padding: 2.5rem 0; } .gallery-image { display: block; margin: 0 auto; } .product-main-image { max-width: 550px; } /* Object-position для карты */ .map-img { object-position: center center; } @media screen and (max-width: 359px) { body { min-width: 360px; overflow-x: auto; } } @media screen and (min-width: 1920px) { .wrapper { max-width: 1600px; } } @media screen and (min-width: 2560px) { body { font-size: 1.125rem; } .wrapper { max-width: 2000px; } .section-title { font-size: 3.5rem; } .product-title { font-size: 5rem; } .factura-img { max-width: 600px; } } /* 1. Улучшенные стили фокуса для всех интерактивных элементов */ *:focus { outline: 3px solid var(--brown-red); outline-offset: 2px; } /* 2. Улучшенные стили фокуса для кнопок */ .btn:focus, button:focus, input:focus, textarea:focus, select:focus, .swatch:focus, .counter-btn:focus, .selector-btn:focus { outline: 3px solid var(--brown-red); outline-offset: 2px; border-radius: 3px; } /* 3. Улучшенная видимость для кнопок с outline */ .btn-outline:focus { outline: 3px solid var(--brown-red); outline-offset: 2px; border-color: var(--brown-red); } /* 4. Стили для фокуса в темных секциях */ .call-to-action-section *:focus { outline-color: var(--white-white); } /* 5. Улучшенная видимость для ссылок в футере */ .call-to-action-section a:focus { outline: 3px solid var(--white-white); outline-offset: 2px; border-radius: 2px; } /* 6. Улучшенные стили для полей формы при фокусе */ .input:focus, .textarea:focus { border-color: var(--brown-red); box-shadow: 0 0 0 3px rgba(183, 76, 53, 0.2); } /* 7. Улучшенная видимость для кнопок выбора цвета */ .swatch:focus { transform: scale(1.1); box-shadow: 0 0 0 2px var(--white), 0 0 0 4px var(--brown-red); } /* 8. Улучшенная контрастность текста */ /* Проверяем и улучшаем контрастность */ .section-title.light-text { color: var(--white-white); text-shadow: 0 1px 2px rgba(0, 0, 0, 0.3); } .nav-title { color: var(--brown); font-weight: 500; } /* Улучшаем контрастность в темных секциях */ .call-to-action-section .nav-title, .call-to-action-section .nav-links a, .call-to-action-section .contact-info p, .call-to-action-section .contact-info a, .call-to-action-section .footer-links a { color: var(--white-white); } .call-to-action-section .divider.light { background-color: rgba(255, 255, 255, 0.5); } /* 9. Улучшенная доступность для скринридеров */ /* Скрываем визуально, но оставляем доступными для скринридеров */ .sr-only { position: absolute; width: 1px; height: 1px; margin: -1px; border: 0; padding: 0; white-space: nowrap; clip-path: inset(100%); clip: rect(0 0 0 0); overflow: hidden; } /* 10. Skip link styles */ .skip-link { position: absolute; top: -40px; left: 0; background: var(--brown-red); color: white; padding: 12px 20px; text-decoration: none; font-weight: 600; z-index: 9999; border-radius: 0 0 4px 0; transition: top 0.3s ease; font-size: 1rem; } .skip-link:focus { top: 0; outline: 3px solid var(--white-white); outline-offset: 2px; } /* 11. Улучшенная доступность для декоративных изображений */ img[alt=""] { border: 0; } /* 12. Улучшенная читаемость для плейсхолдеров */ ::placeholder { color: var(--brown-rgba-50); opacity: 1; } /* 13. Улучшенная поддержка увеличения масштаба */ html { font-size: 100%; } @media screen and (min-width: 1400px) { html { font-size: 112.5%; /* 18px */ } } @media screen and (min-width: 1600px) { html { font-size: 125%; /* 20px */ } } /* 14. Улучшенная доступность для мобильных устройств */ @media (max-width: 767px) { .skip-link { padding: 10px 16px; font-size: 0.9rem; } /* Убедимся, что все тексты читаемы на маленьких экранах */ .section-title { font-size: 1.8rem; line-height: 1.3; } .product-title { font-size: 2.5rem; line-height: 1.2; } } /* 15. Улучшенная доступность для пользователей, предпочитающих уменьшенное движение */ @media (prefers-reduced-motion: reduce) { *, *::before, *::after { animation-duration: 0.01ms !important; animation-iteration-count: 1 !important; transition-duration: 0.01ms !important; } .btn-primary:hover, .btn-outline:hover, .prev-btn:hover, .next-btn:hover, .counter-btn:hover, .selector-btn:hover, .review-navigation .prev-btn:hover, .review-navigation .next-btn:hover { transform: none !important; } } /* 16. Улучшенная доступность для высококонтрастного режима */ @media (prefers-contrast: high) { .section-title.light-text { color: white; text-shadow: 0 0 3px black; } .btn-primary { background-color: black; color: white; border: 2px solid white; } .btn-outline { background-color: transparent; border: 2px solid black; color: black; } } /* 17. Улучшенная доступность для пользователей с дислексией */ @media (prefers-reading-line: yes) { .testimonial-text, .section-description, .color-description { line-height: 1.8; letter-spacing: 0.02em; } } /* 18. Проверка и улучшение контрастности для WCAG AA */ /* Белый текст на тёмном фоне должен иметь контрастность не менее 4.5:1 */ .call-to-action-section { background-color: var(--primary-bg); } .call-to-action-section .nav-title, .call-to-action-section .nav-links a, .call-to-action-section .contact-info p, .call-to-action-section .contact-info a, .call-to-action-section .footer-links a { color: var(--white-white); font-weight: 500; } .factura-img { width: 100%; max-width: 600px; height: auto; display: block; margin: 1.5rem auto; border-radius: 6px; } /* Коричневый текст на светлом фоне */ .section-title, .nav-title, .product-title { color: var(--brown); font-weight: 600; } /* Улучшаем контрастность для текста в карточках */ .card-title { color: var(--brown); font-weight: 600; } /* 19. Улучшенная доступность для клавиатурной навигации */ .tab-focus-visible:focus-visible { outline: 3px solid var(--brown-red); outline-offset: 2px; } /* 20. Улучшенная видимость для активных элементов */ .swatch.active { border: 3px solid var(--brown-red); transform: scale(1.1); } /* 22. Улучшенная доступность для увеличенного текста */ @media (min-width: 1920px) { body { font-size: 1.125rem; line-height: 1.8; } .section-title { font-size: 3.5rem; line-height: 1.3; } .product-title { font-size: 5rem; line-height: 1.2; } } /* 23. Улучшенная доступность для мобильных устройств с маленькими экранами */ @media (max-width: 360px) { body { font-size: 0.9375rem; /* 15px */ line-height: 1.6; } .section-title { font-size: 1.5rem; line-height: 1.3; } .product-title { font-size: 2rem; line-height: 1.2; } .btn { font-size: 0.875rem; padding: 12px 16px; min-height: 44px; } } /* 24. Улучшенная доступность для пользователей с тремором или сниженной моторикой */ @media (pointer: coarse) { .btn, button, .swatch, .counter-btn, .selector-btn { min-height: 44px; min-width: 44px; padding: 12px; } .input, .textarea { min-height: 44px; font-size: 16px; /* Предотвращает увеличение масштаба в iOS */ } } /* 25. Улучшенная доступность для пользователей, использующих только клавиатуру */ .keyboard-user *:focus { outline: 3px solid var(--brown-red); outline-offset: 2px; } /* git push web */