Каталог, карточка товара, корзина, оформление заказа и блог на WooCommerce. Стили разложены по слоям: токены из Figma, база, компоненты, страницы, брейкпоинты. Цвета, типографика, радиусы и отступы взяты из Variables и текстовых стилей макета, ниже по слоям хардкода нет. Иконки — Phosphor, вставляются инлайном как SVG, символами ничего не рисуется. Стили WooCommerce отключены, вёрстка своя, !important не используется.
301 lines
4.8 KiB
CSS
301 lines
4.8 KiB
CSS
/*
|
|
* Product page: gallery, summary, tabs
|
|
*/
|
|
|
|
/* Product page */
|
|
.product-layout {
|
|
display: grid;
|
|
margin-bottom: 40px;
|
|
grid-template-columns: 776px 544px;
|
|
align-items: start;
|
|
gap: 24px;
|
|
}
|
|
|
|
.product-gallery {
|
|
position: relative;
|
|
height: 580px;
|
|
overflow: hidden;
|
|
border: 1px solid var(--border-main);
|
|
border-radius: 16px;
|
|
background: var(--bg-secondary);
|
|
}
|
|
|
|
.gallery-images {
|
|
position: absolute;
|
|
z-index: 0;
|
|
inset: 0;
|
|
}
|
|
|
|
.gallery-image {
|
|
position: absolute;
|
|
inset: 0;
|
|
display: block;
|
|
width: 100%;
|
|
height: 100%;
|
|
object-fit: cover;
|
|
}
|
|
|
|
.gallery-image-placeholder {
|
|
background: var(--bg-secondary);
|
|
}
|
|
|
|
.gallery-badges {
|
|
position: absolute;
|
|
z-index: 2;
|
|
top: 16px;
|
|
left: 16px;
|
|
display: flex;
|
|
gap: 4px;
|
|
}
|
|
|
|
.gallery-favorite {
|
|
position: absolute;
|
|
z-index: 2;
|
|
top: 10px;
|
|
right: 10px;
|
|
width: 48px;
|
|
height: 48px;
|
|
border-radius: 50%;
|
|
}
|
|
|
|
.gallery-favorite .icon {
|
|
--icon-size: 24px;
|
|
}
|
|
|
|
.gallery-favorite.is-active {
|
|
background: var(--bg-main);
|
|
}
|
|
|
|
.gallery-favorite.is-active {
|
|
color: var(--notice-error);
|
|
}
|
|
|
|
.gallery-arrow {
|
|
position: absolute;
|
|
z-index: 2;
|
|
top: 50%;
|
|
width: 48px;
|
|
height: 48px;
|
|
border-radius: 50%;
|
|
transform: translateY(-50%);
|
|
}
|
|
|
|
.gallery-arrow-prev {
|
|
left: 8px;
|
|
}
|
|
|
|
.gallery-arrow-next {
|
|
right: 8px;
|
|
}
|
|
|
|
.gallery-dots {
|
|
position: absolute;
|
|
bottom: 10px;
|
|
left: 50%;
|
|
display: flex;
|
|
gap: 4px;
|
|
transform: translateX(-50%);
|
|
}
|
|
|
|
.gallery-dots i {
|
|
width: 6px;
|
|
height: 6px;
|
|
border-radius: 50%;
|
|
background: var(--text-caption);
|
|
}
|
|
|
|
.gallery-dots i.active {
|
|
background: var(--text-main);
|
|
}
|
|
|
|
.product-summary {
|
|
min-height: 652px;
|
|
padding: 32px;
|
|
border-radius: 16px;
|
|
background: var(--bg-main);
|
|
box-shadow: 0 16px 38px rgb(0 0 0 / 8%);
|
|
}
|
|
|
|
.product-summary h1 {
|
|
margin: 6px 0 3px;
|
|
font: var(--h4);
|
|
letter-spacing: var(--ls-tight);
|
|
}
|
|
|
|
.product-meta-line {
|
|
color: var(--text-caption);
|
|
font: var(--control-s);
|
|
}
|
|
|
|
.product-summary .woocommerce-product-details__short-description {
|
|
margin-bottom: 14px;
|
|
color: var(--text-caption);
|
|
font: var(--control-m);
|
|
}
|
|
|
|
.product-summary .woocommerce-product-details__short-description p {
|
|
margin: 0;
|
|
}
|
|
|
|
.attribute-table {
|
|
width: 100%;
|
|
margin: 10px 0 18px;
|
|
border-collapse: collapse;
|
|
}
|
|
|
|
.attribute-table td {
|
|
padding: 8px 0;
|
|
border-top: 1px solid var(--border-main);
|
|
font: var(--control-m);
|
|
}
|
|
|
|
.attribute-table tr:last-child td {
|
|
border-bottom: 1px solid var(--border-main);
|
|
}
|
|
|
|
.attribute-table td:first-child {
|
|
width: 42%;
|
|
color: var(--text-caption);
|
|
}
|
|
|
|
.product-option {
|
|
position: relative;
|
|
display: block;
|
|
margin: 14px 0 20px;
|
|
}
|
|
|
|
.product-option > span {
|
|
position: absolute;
|
|
z-index: 1;
|
|
top: 10px;
|
|
left: 20px;
|
|
color: var(--text-caption);
|
|
font: var(--caption);
|
|
}
|
|
|
|
.product-option select {
|
|
width: 100%;
|
|
height: 60px;
|
|
padding: 23px 50px 7px 20px;
|
|
border: 1px solid var(--border-main);
|
|
border-radius: 10px;
|
|
outline: 0;
|
|
background: var(--bg-main) var(--icon-caret-down) right 20px center / 16px no-repeat;
|
|
appearance: none;
|
|
}
|
|
|
|
.product-option .custom-select {
|
|
display: flex;
|
|
width: 100%;
|
|
}
|
|
|
|
.product-option .custom-select-trigger {
|
|
width: 100%;
|
|
height: 60px;
|
|
padding: 23px 50px 7px 20px;
|
|
border: 1px solid var(--border-main);
|
|
border-radius: 10px;
|
|
background: var(--bg-main);
|
|
}
|
|
|
|
.product-option .custom-select-trigger::after {
|
|
right: 20px;
|
|
}
|
|
|
|
.product-option .custom-select-menu {
|
|
width: 100%;
|
|
}
|
|
|
|
.product-summary > .price {
|
|
margin: 0 0 12px;
|
|
font: var(--h3);
|
|
letter-spacing: var(--ls-tight);
|
|
}
|
|
|
|
.product-summary form.cart {
|
|
display: grid;
|
|
margin: 0;
|
|
grid-template-columns: 144px minmax(0, 1fr);
|
|
gap: 12px;
|
|
}
|
|
|
|
.product-summary form.cart .quantity-control,
|
|
.product-summary form.cart .single_add_to_cart_button {
|
|
min-height: 56px;
|
|
}
|
|
|
|
.product-summary .single_add_to_cart_button {
|
|
width: 100%;
|
|
}
|
|
|
|
.product-summary .single_add_to_cart_button .icon {
|
|
--icon-size: 20px;
|
|
}
|
|
|
|
.buy-one-click {
|
|
display: flex;
|
|
width: 100%;
|
|
min-height: 56px;
|
|
margin-top: 8px;
|
|
}
|
|
|
|
.product-tabs {
|
|
margin: 0 0 64px;
|
|
}
|
|
|
|
.single-product .product-tabs {
|
|
margin-bottom: 46px;
|
|
}
|
|
|
|
.single-product .section {
|
|
padding: 16px 0 90px;
|
|
}
|
|
|
|
.tab-list {
|
|
display: flex;
|
|
margin: 0 0 28px;
|
|
padding: 0;
|
|
gap: 30px;
|
|
border-bottom: 1px solid var(--border-main);
|
|
list-style: none;
|
|
}
|
|
|
|
.tab-list a {
|
|
display: block;
|
|
padding: 14px 0 12px;
|
|
color: var(--text-caption);
|
|
text-transform: uppercase;
|
|
font: var(--upper-m);
|
|
letter-spacing: var(--ls-upper);
|
|
text-transform: uppercase;
|
|
}
|
|
|
|
.tab-list .active a {
|
|
color: var(--text-main);
|
|
border-bottom: 1px solid var(--text-main);
|
|
}
|
|
|
|
.prose {
|
|
max-width: 800px;
|
|
font: var(--body-m);
|
|
}
|
|
|
|
.prose h2,
|
|
.prose h3 {
|
|
margin: 28px 0 8px;
|
|
}
|
|
|
|
.prose h2 {
|
|
font: var(--h4);
|
|
letter-spacing: var(--ls-tight);
|
|
}
|
|
|
|
.prose h3 {
|
|
font: var(--h5);
|
|
letter-spacing: var(--ls-tight-s);
|
|
}
|
|
|
|
.prose p {
|
|
margin: 0 0 14px;
|
|
}
|