Files
f1den 29d10ce4cf Тема магазина по макету Figma
Каталог, карточка товара, корзина, оформление заказа и блог на WooCommerce.

Стили разложены по слоям: токены из Figma, база, компоненты, страницы,
брейкпоинты. Цвета, типографика, радиусы и отступы взяты из Variables и
текстовых стилей макета, ниже по слоям хардкода нет.

Иконки — Phosphor, вставляются инлайном как SVG, символами ничего не рисуется.
Стили WooCommerce отключены, вёрстка своя, !important не используется.
2026-07-30 22:38:49 +03:00

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;
}