/* =========================================================
   Ulía — main stylesheet (чистый CSS, редактируется руками)
   1. Tokens            7. Categories
   2. Reset             8. Collection feature
   3. Typography/a11y   9. Products grid
   4. Buttons/forms    10. Legacy banner
   5. Header           11. Newsletter
   6. Hero             12. Footer + generic (blog/woo)
                       13. Single product
   ========================================================= */

/* 0. Local fonts (Avenir Next Cyr) ------------------------ */
@font-face {
  font-family: "Avenir Next Cyr";
  src:
    url("../fonts/AvenirNext/AvenirNextCyr-Light.woff2") format("woff2"),
    url("../fonts/AvenirNext/AvenirNextCyr-Light.woff") format("woff");
  font-weight: 300;
  font-style: normal;
  font-display: swap;
}
@font-face {
  font-family: "Avenir Next Cyr";
  src:
    url("../fonts/AvenirNext/AvenirNextCyr-Regular.woff2") format("woff2"),
    url("../fonts/AvenirNext/AvenirNextCyr-Regular.woff") format("woff");
  font-weight: 400;
  font-style: normal;
  font-display: swap;
}
@font-face {
  font-family: "Avenir Next Cyr";
  src:
    url("../fonts/AvenirNext/AvenirNextCyr-Italic.woff2") format("woff2"),
    url("../fonts/AvenirNext/AvenirNextCyr-Italic.woff") format("woff");
  font-weight: 400;
  font-style: italic;
  font-display: swap;
}
@font-face {
  font-family: "Avenir Next Cyr";
  src:
    url("../fonts/AvenirNext/AvenirNextCyr-Medium.woff2") format("woff2"),
    url("../fonts/AvenirNext/AvenirNextCyr-Medium.woff") format("woff");
  font-weight: 500;
  font-style: normal;
  font-display: swap;
}
@font-face {
  font-family: "Avenir Next Cyr";
  src:
    url("../fonts/AvenirNext/AvenirNextCyr-Demi.woff2") format("woff2"),
    url("../fonts/AvenirNext/AvenirNextCyr-Demi.woff") format("woff");
  font-weight: 600;
  font-style: normal;
  font-display: swap;
}
@font-face {
  font-family: "Avenir Next Cyr";
  src:
    url("../fonts/AvenirNext/AvenirNextCyr-Bold.woff2") format("woff2"),
    url("../fonts/AvenirNext/AvenirNextCyr-Bold.woff") format("woff");
  font-weight: 700;
  font-style: normal;
  font-display: swap;
}

/* 1. Tokens ----------------------------------------------- */
:root {
  --color-bg: #ffffff;
  --color-text: #15110e;
  --color-ink: #0c0a09;
  --color-muted: #6b6b6b;
  --color-muted-light: #a0a0a0;
  --color-line: #d4d1d1;
  --color-line-1: #f1f1f1;
  --color-accent: #6b4a3e;
  --color-accent-light: #b8735c;
  --color-accent-dark: #5c4a3a;

  --font-display: "Cormorant", Georgia, serif;
  --font-base: "Libre Baskerville", Georgia, serif;
  /* Цены: Playfair Display — люксовый сериф с ровными (lining) цифрами. */
  --font-price: "Playfair Display", Georgia, serif;

  --container: 1800px;
  --gutter: 24px;
  --radius: 0;
  --transition: 0.3s ease;
  --header-h: 72px;
}

/* 2. Reset ------------------------------------------------ */
*,
*::before,
*::after {
  box-sizing: border-box;
}
* {
  margin: 0;
}
html {
  -webkit-text-size-adjust: 100%;
  scroll-behavior: smooth;
}
body {
  min-height: 100vh;
  display: flex;
  flex-direction: column;
  -webkit-font-smoothing: antialiased;
}
img,
picture,
video,
canvas,
svg {
  display: block;
  max-width: 100%;
  height: auto;
}
input,
button,
textarea,
select {
  font: inherit;
  color: inherit;
}
button {
  cursor: pointer;
  background: none;
  border: none;
}
a {
  color: inherit;
  text-decoration: none;
}
ul,
ol {
  list-style: none;
  padding: 0;
}
h1,
h2,
h3,
h4,
h5,
h6 {
  font-weight: 500;
  line-height: 1.15;
}

/* 3. Typography & a11y ------------------------------------ */
body {
  font-family: var(--font-base);
  font-weight: 400;
  font-size: 16px;
  line-height: 1.5;
  color: var(--color-text);
  background: var(--color-bg);
}

h1,
h2,
h3,
h4 {
  font-family: var(--font-display);
}

p {
  margin-bottom: 1em;
}

a {
  transition:
    color var(--transition),
    opacity var(--transition);
}

.container {
  width: 100%;
  max-width: var(--container);
  margin-inline: auto;
  padding-inline: var(--gutter);
}

.section-title {
  font-family: var(--font-display);
  font-weight: 400;
  font-size: clamp(1.85rem, 6vw, 3rem);
  text-transform: uppercase;
}
.section-title--center {
  text-align: center;
}

.section-head {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 1rem;
  margin-bottom: 2rem;
}
.section-head__link {
  font-size: 0.75rem;
  text-transform: uppercase;
  border-bottom: 1px solid currentColor;
  padding-bottom: 2px;
}
.section-head__link:hover {
  color: var(--color-accent);
}

.screen-reader-text {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}
.skip-link {
  position: absolute;
  left: -9999px;
  z-index: 1000;
  padding: 0.75em 1em;
  background: var(--color-ink);
  color: #fff;
}
.skip-link:focus {
  left: 1rem;
  top: 1rem;
}

.is-home-template .site-main {
  padding: 0;
}

/* 4. Buttons & forms -------------------------------------- */
.btn {
  display: inline-block;
  padding: 0.9em 2em;
  font-size: 1rem;
  text-transform: uppercase;
  background: var(--color-ink);
  color: #fff;
  border-radius: 0;
  transition: background var(--transition);
}
.btn:hover {
  background: #000;
  color: #fff;
}
.btn--accent {
  background: var(--color-accent);
}
.btn--accent:hover {
  background: var(--color-accent-dark);
  color: #fff;
}
.btn--outline {
  background: transparent;
  color: var(--color-text);
  border: 1px solid var(--color-text);
}
.btn--outline:hover {
  background: var(--color-text);
  color: #fff;
}

input[type="text"],
input[type="email"],
input[type="search"],
input[type="password"],
input[type="tel"],
textarea,
select {
  width: 100%;
  padding: 0.75em 1em;
  border: 1px solid var(--color-line);
  border-radius: var(--radius);
  background: #fff;
  transition: border-color var(--transition);
}
input:focus,
textarea:focus,
select:focus {
  outline: none;
  border-color: var(--color-accent);
}

.search-form {
  display: flex;
  gap: 0.5rem;
}
.search-form__input {
  flex: 1;
}

/* 5. Header ----------------------------------------------- */
/* Header фиксирован у верха. Прозрачный по умолчанию; при скролле JS вешает
   класс .is-scrolled — сплошной белый фон с тенью. */
.site-header {
  position: fixed;
  top: 0;
  width: 100%;
  z-index: 100;
  border-bottom: 1px solid transparent;
  color: var(--color-ink);
  transition:
    background var(--transition),
    color var(--transition),
    box-shadow var(--transition),
    border-color var(--transition);
}
.site-header.is-scrolled {
  background: #fff;
  border-bottom-color: rgba(0, 0, 0, 0.08);
  box-shadow: 0 2px 16px rgba(0, 0, 0, 0.06);
}
/* Контент не должен прятаться под фиксированной шапкой. Исключение —
   страницы с верхним баннером (главная, каталог): там баннер/hero
   намеренно уходит под прозрачную шапку до самого верха. */
body:not(.has-top-banner) {
  padding-top: var(--header-h);
}
/* Главная: прозрачная шапка с белым текстом поверх hero; при скролле — белая. */
.site-header--overlay {
  background: transparent;
  color: #fff;
  border-bottom-color: rgba(255, 255, 255, 0.08);
  box-shadow: none;
}
.site-header--overlay.is-scrolled {
  color: var(--color-ink);
  border-bottom-color: rgba(0, 0, 0, 0.08);
}
.site-header__inner {
  max-width: var(--container);
  margin-inline: auto;
  padding-inline: var(--gutter);
  min-height: var(--header-h);
  display: flex;
  align-items: center;
  gap: 1rem;
}
.site-header__nav {
  flex: 1 1 0;
}
.site-header__logo {
  display: flex;
  text-align: center;
  align-items: center;
  justify-content: center;
  font-family: var(--font-display);
  font-size: 1.6rem;
  font-weight: 500;
  text-transform: uppercase;
  color: inherit;
}
.site-header__logo img {
  display: block;
  max-height: 30px;
  width: auto;
}
/* По умолчанию header белый → тёмный логотип. На прозрачной шапке главной
   (пока не прокрутили) — светлый логотип. */
.site-header__logo img.site-header__logo-img--light {
  display: none;
}
.site-header--overlay:not(.is-scrolled) .site-header__logo img.site-header__logo-img--light {
  display: block;
}
.site-header--overlay:not(.is-scrolled) .site-header__logo img.site-header__logo-img--dark {
  display: none;
}

.site-header__nav .menu {
  display: flex;
  align-items: center;
  gap: 1.8rem;
}
.site-header__nav a {
  font-size: 0.875rem;
  font-weight: 400;
  color: inherit;
  opacity: 1;
}
.site-header__nav a:hover {
  opacity: 1;
}

.site-header__actions {
  flex: 1 1 0;
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 1.1rem;
  color: inherit;
}
.site-header__action {
  position: relative;
  display: inline-flex;
  color: inherit;
  opacity: 0.85;
  transition: opacity var(--transition);
}
a.site-header__action {
  padding: 0 6px;
}
.site-header__action:hover {
  opacity: 1;
}
.site-header__icon {
  display: block;
  width: 20px;
  height: 20px;
  background-color: currentColor;
  -webkit-mask: var(--icon) center / contain no-repeat;
  mask: var(--icon) center / contain no-repeat;
}
.site-header__icon--globe {
  --icon: url("../images/globe.svg");
}
.site-header__icon--search {
  --icon: url("../images/search.svg");
}
.site-header__icon--heart {
  --icon: url("../images/heart.svg");
}
.site-header__icon--cart {
  --icon: url("../images/shopping-cart.svg");
}
.site-header__icon--user {
  --icon: url("../images/user.svg");
}
.site-header__cart-count,
.site-header__wish-count {
  position: absolute;
  top: -5px;
  right: -2px;
  min-width: 15px;
  height: 15px;
  padding: 0 3px;
  font-family: var(--font-base);
  font-size: 0.5rem;
  font-weight:700;
  line-height: 15px;
  text-align: center;
  /* Кружок всегда тёмный с белой цифрой — независимо от состояния шапки. */
  background: var(--color-ink);
  color: #fff;
  border-radius: 999px;
}
.site-header__wish-count[hidden] {
  display: none;
}

.site-header__burger {
  display: none;
  flex-direction: column;
  gap: 4px;
}
.site-header__burger span {
  display: block;
  width: 22px;
  height: 1.5px;
  background: currentColor;
}

/* Кнопка закрытия и вторичные ссылки — только внутри фуллскрин-меню. */
.site-header__nav-close,
.site-header__nav-footer,
.site-header__nav-secondary {
  display: none;
}
/* Соцсети в шапке показываем только в мобильном фуллскрин-меню.
   Селектор с родителем перебивает базовое .social-links { display: flex }. */
.site-header__nav .social-links--nav {
  display: none;
}

@media (max-width: 991px) {
  .site-header__inner {
    justify-content: space-between;
  }

  /* ---- Премиальное фуллскрин-меню ---- */
  .site-header__nav {
    position: fixed;
    inset: 0;
    z-index: 200;
    background: radial-gradient(120% 90% at 50% 0%, #181412 0%, #000 70%);
    color: #fff;
    display: flex;
    flex-direction: column;
    justify-content: center;
    padding: calc(var(--header-h) + 2rem) clamp(1.5rem, 8vw, 4rem) 10rem;
    opacity: 0;
    visibility: hidden;
    transform: scale(1.04);
    transition: opacity 0.5s ease, transform 0.6s cubic-bezier(0.16, 1, 0.3, 1), visibility 0s linear 0.5s;
  }
  .site-header__nav.is-open {
    opacity: 1;
    visibility: visible;
    transform: scale(1);
    transition: opacity 0.5s ease, transform 0.7s cubic-bezier(0.16, 1, 0.3, 1), visibility 0s;
  }

  .site-header__nav-close {
    display: inline-flex;
    position: absolute;
    top: calc((var(--header-h) - 26px) / 2);
    right: clamp(1.5rem, 8vw, 4rem);
    color: #fff;
    opacity: 0.7;
    transition: opacity var(--transition), transform var(--transition);
  }
  .site-header__nav-close:hover {
    opacity: 1;
    transform: rotate(90deg);
  }

  /* Выпадающее меню всегда тёмное — ссылки белые. */
  .site-header__nav a {
    color: #fff;
  }
  .site-header__nav .menu {
    flex-direction: column;
    align-items: flex-start;
    gap: clamp(1.1rem, 4vw, 2rem);
  }
  .site-header__nav .menu > li {
    opacity: 0;
    transform: translateY(24px);
    transition: opacity 0.6s ease, transform 0.6s cubic-bezier(0.16, 1, 0.3, 1);
  }
  .site-header__nav.is-open .menu > li {
    opacity: 1;
    transform: translateY(0);
  }
  /* Каскадное появление пунктов. */
  .site-header__nav.is-open .menu > li:nth-child(1) { transition-delay: 0.18s; }
  .site-header__nav.is-open .menu > li:nth-child(2) { transition-delay: 0.26s; }
  .site-header__nav.is-open .menu > li:nth-child(3) { transition-delay: 0.34s; }
  .site-header__nav.is-open .menu > li:nth-child(4) { transition-delay: 0.42s; }
  .site-header__nav.is-open .menu > li:nth-child(5) { transition-delay: 0.50s; }
  .site-header__nav.is-open .menu > li:nth-child(6) { transition-delay: 0.58s; }
  .site-header__nav .menu a {
    font-family: var(--font-display);
    font-size: clamp(2rem, 9vw, 3.25rem);
    line-height: 1.15;
    text-transform: uppercase;
    letter-spacing: 0.01em;
    opacity: 0.9;
    transition: opacity var(--transition);
  }
  .site-header__nav .menu a:hover {
    opacity: 1;
  }

  /* Нижний блок overlay: регион отдельной строкой, под ним ссылки слева и
     соцсети справа. Общая grid-сетка вместо двух абсолютных блоков — они
     больше не накладываются друг на друга при переносе длинной метки. */
  .site-header__nav-footer {
    position: absolute;
    left: clamp(1.5rem, 8vw, 4rem);
    right: clamp(1.5rem, 8vw, 4rem);
    bottom: 2.25rem;
    display: grid;
    grid-template-columns: 1fr auto;
    align-items: end;
    gap: 0.9rem 1.5rem;
    padding-top: 1.4rem;
    border-top: 1px solid rgba(255, 255, 255, 0.12);
    opacity: 0;
    transform: translateY(16px);
    transition: opacity 0.6s ease 0.5s, transform 0.6s cubic-bezier(0.16, 1, 0.3, 1) 0.5s;
  }
  .site-header__nav.is-open .site-header__nav-footer {
    opacity: 1;
    transform: translateY(0);
  }

  /* Регион занимает всю ширину — длинная метка не сжимает соседей. */
  .site-header__nav-footer .site-header__nav-region {
    grid-column: 1 / -1;
  }

  /* Вторичные ссылки (избранное / аккаунт) — слева, соцсети справа. */
  .site-header__nav-secondary {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.6rem 1.5rem;
    min-width: 0;
  }
  .site-header__nav-secondary a,
  .site-header__nav-footer .site-header__nav-region {
    color: rgba(255, 255, 255, 0.65);
    font-size: 0.8rem;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    transition: color var(--transition);
  }
  .site-header__nav-secondary a:hover,
  .site-header__nav-footer .site-header__nav-region:hover {
    color: #fff;
  }

  /* Соцсети — справа в нижнем блоке. Селектор с родителем, чтобы перебить
     десктопное .site-header__nav .social-links--nav { display: none }. */
  .site-header__nav .social-links--nav {
    display: flex;
    justify-content: flex-end;
  }

  .site-header__logo {
    justify-self: start;
  }
  .site-header__burger {
    display: flex;
  }
}

/* Блокировка прокрутки фона при открытом меню. */
body.nav-open {
  overflow: hidden;
}

/* 6. Hero ------------------------------------------------- */
.hero {
  position: relative;
  min-height: 100vh;
  display: flex;
  background-size: cover;
  background-position: center;
  background-color: #1a1410;
  color: #fff;
}
.hero__video {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  z-index: 0;
}
.hero__overlay {
  position: absolute;
  inset: 0;
  z-index: 1;
  background: linear-gradient(
    180deg,
    rgba(0, 0, 0, 0.35) 0%,
    rgba(0, 0, 0, 0.1) 40%,
    rgba(0, 0, 0, 0.55) 100%
  );
}
.hero__inner {
  position: relative;
  z-index: 2;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  justify-content: flex-end;
  padding-bottom: clamp(3rem, 8vh, 6rem);
  padding-top: calc(var(--header-h) + 2rem);
}
.hero__title {
  font-family: var(--font-display);
  font-weight: 400;
  text-transform: uppercase;
  font-size: clamp(2rem, 8.5vw, 3rem);
  line-height: 1.1;
}
.hero__cta {
  margin-top: 1.5rem;
  font-size: 1rem;
  text-transform: uppercase;
  border-bottom: 1px solid currentColor;
  padding-bottom: 3px;
}
.hero__cta:hover {
  color: var(--color-muted-light);
}
.hero__scroll {
  position: absolute;
  right: var(--gutter);
  bottom: clamp(2rem, 6vh, 4rem);
  z-index: 2;
  display: flex;
  align-items: center;
  gap: 0.5rem;
  font-size: 0.75rem;
  opacity: 0.8;
  /* button reset */
  appearance: none;
  border: 0;
  background: none;
  color: inherit;
  font-family: inherit;
  cursor: pointer;
  padding: 0;
  transition: opacity 0.2s ease;
}
.hero__scroll:hover,
.hero__scroll:focus-visible {
  opacity: 1;
}
.hero__scroll-arrow {
  animation: hero-scroll-bounce 1.8s ease-in-out infinite;
}
@keyframes hero-scroll-bounce {
  0%,
  100% {
    transform: translateY(0);
  }
  50% {
    transform: translateY(4px);
  }
}
@media (prefers-reduced-motion: reduce) {
  .hero__scroll-arrow {
    animation: none;
  }
}

/* 7. Categories ------------------------------------------- */
.categories {
  padding-block: clamp(1rem, 2vw, 1.5rem);
}
.categories__grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 14px;
}
.cat-tile {
  position: relative;
  display: block;
  border-radius: 0;
  overflow: hidden;
  color: #fff;
}
.cat-tile__media {
  display: block;
  aspect-ratio: 5 / 4;
  background: #ddd6cd;
}
.cat-tile__media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform var(--transition);
}
.cat-tile:hover .cat-tile__media img {
  transform: scale(1.05);
}
.cat-tile__label {
  position: absolute;
  left: 1rem;
  bottom: 1rem;
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  font-weight: 500;
  font-size: 1.25rem;
  line-height: 1;
  border-bottom: 1px solid rgba(255, 255, 255, 0.7);
  padding-bottom: 3px;
}

@media (max-width: 767px) {
  .categories__grid {
    grid-template-columns: repeat(1, 1fr);
  }
}

/* 8. Collection feature ----------------------------------- */
.feature {
  padding-block: clamp(3rem, 6vw, 5.5rem);
}
.feature .section-title {
  margin-bottom: 2.5rem;
}
.feature__inner {
  --feature-inset: max(var(--gutter), calc((100vw - var(--container)) / 2 + var(--gutter)));
  display: grid;
  grid-template-columns: 1fr 1fr;
  min-height: 560px;
  align-items: stretch;
}
.feature__panel {
  position: relative;
  background: #000;
  color: #fff;
  padding: clamp(1.75rem, 3vw, 2.75rem) clamp(2rem, 4vw, 4rem) clamp(1.75rem, 3vw, 2.75rem) var(--feature-inset);
  display: flex;
  flex-direction: column;
  justify-content: flex-start;
}
.feature__panel-body {
  position: relative;
}
.feature__name {
  font-family: var(--font-display);
  font-size: clamp(1.5rem, 5vw, 2rem);
  text-transform: uppercase;
  margin-bottom: 1rem;
}
.feature__links {
  display: flex;
  flex-wrap: wrap;
  gap: 1.25rem;
}
.feature__links a {
  font-size: 1.25rem;
  text-transform: capitalize;
  opacity: 0.9;
  border-bottom: 1px solid currentColor;
  padding-bottom: 2px;
  transition: opacity var(--transition);
}
.feature__links a:hover {
  opacity: 1;
}

.feature__slider {
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  padding: clamp(1rem, 2vw, 2rem) var(--feature-inset) clamp(1rem, 2vw, 2rem) clamp(2rem, 4vw, 4rem);
}
.feature__stage {
  position: relative;
  width: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
}
.feature__track {
  position: relative;
  width: 100%;
  height: clamp(280px, 32vw, 400px);
}
.feature__slide {
  display: none;
}
.feature__slide.is-active {
  display: flex;
}
/* Изображения слайдов сложены стопкой — переключение плавным кроссфейдом. */
.feature__media {
  position: absolute;
  inset: 0;
  display: flex;
  width: 100%;
  height: 100%;
  align-items: center;
  justify-content: center;
  opacity: 0;
  visibility: hidden;
  transform: scale(1.03);
  transition:
    opacity 0.6s ease,
    transform 0.9s cubic-bezier(0.16, 1, 0.3, 1),
    visibility 0s linear 0.6s;
}
.feature__media.is-active {
  opacity: 1;
  visibility: visible;
  transform: none;
  z-index: 1;
  transition:
    opacity 0.6s ease,
    transform 0.9s cubic-bezier(0.16, 1, 0.3, 1),
    visibility 0s;
}
.feature__media img {
  max-height: 100%;
  max-width: 100%;
  width: auto;
  object-fit: contain;
}
.feature__captions {
  width: 100%;
  margin-top: 1.75rem;
}
.feature__caption {
  flex-direction: column;
  align-items: center;
  text-align: center;
}
/* Подпись входящего слайда мягко всплывает снизу. */
.feature__caption.is-active {
  animation: uliaFeatureCaption 0.6s cubic-bezier(0.16, 1, 0.3, 1) both;
}
@keyframes uliaFeatureCaption {
  from {
    opacity: 0;
    transform: translateY(16px);
  }
  to {
    opacity: 1;
    transform: none;
  }
}
@media (prefers-reduced-motion: reduce) {
  .feature__media,
  .feature__media.is-active {
    transition: none;
    transform: none;
  }
  .feature__caption.is-active {
    animation: none;
  }
}
.feature__shape {
  font-family: var(--font-display);
  font-size: clamp(1.35rem, 4.5vw, 2rem);
  text-transform: uppercase;
  letter-spacing: 0.04em;
  margin-bottom: 1rem;
}
.feature__desc {
  max-width: 52ch;
  color: var(--color-muted);
  font-size: 1rem;
  line-height: 1.75;
  margin-bottom: 1.25rem;
}
.feature__price {
  font-family: var(--font-price);
  font-size: 1.05rem;
  font-weight: 500;
  font-variant-numeric: lining-nums tabular-nums;
  font-feature-settings: "lnum" 1, "tnum" 1;
  letter-spacing: 0.01em;
  margin-bottom: 1.25rem;
}
.feature__more {
  font-size: 0.75rem;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  border-bottom: 1px solid currentColor;
  padding-bottom: 4px;
}
.feature__more:hover {
  color: var(--color-accent);
}

.feature__arrow {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  color: var(--color-text);
  opacity: 0.55;
  transition: opacity var(--transition);
  z-index: 2;
}
.feature__arrow:hover {
  opacity: 1;
}
.feature__arrow--prev {
  left: 0;
}
.feature__arrow--next {
  right: 0;
}
.feature__dots {
  display: flex;
  gap: 0.5rem;
  margin-top: 1.5rem;
}
.feature__dot {
  width: 6px;
  height: 6px;
  border-radius: 999px;
  background: var(--color-line);
}
.feature__dot.is-active {
  background: var(--color-accent);
}

@media (max-width: 767px) {
  .feature__inner {
    grid-template-columns: 1fr;
    min-height: 0;
    gap: 2rem;
  }
  .feature__panel {
    min-height: 120px;
  }
  .feature__slider {
    padding-inline: 2.5rem;
  }
}

/* 9. Products grid ---------------------------------------- */
.story-products {
  padding-block: clamp(3rem, 6vw, 6rem);
}
.products-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 16px 8px;
}

.product-card {
  position: relative;
}
.product-card__media {
  display: block;
  border-radius: 0;
  overflow: hidden;
  background: #e9e9e9; /* Под студийный серый фон фото — чтобы поля contain сливались. */
  aspect-ratio: 3 / 2;
}
.product-card__media img {
  width: 100%;
  height: 100%;
  object-fit: contain;
  transition: transform var(--transition);
}
.product-card:hover .product-card__media img {
  transform: scale(1.04);
}
.product-card__wish {
  position: absolute;
  top: 0;
  right: 0;
  width: 48px;
  height: 48px;
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--color-text);
  transition: background var(--transition);
}
.product-card__wish:hover {
  background: rgba(255, 255, 255, 0.35);
  transition: 0.3s;
}
.ulia-heart {
  display: block;
  width: 18px;
  height: 18px;
  background-color: currentColor;
  -webkit-mask: url("../images/heart.svg") center / contain no-repeat;
  mask: url("../images/heart.svg") center / contain no-repeat;
  transition: background-color var(--transition);
}
.product-card__wish.is-active {
  color: var(--color-accent);
}
/* В избранном — сердце залито (не контур) и подсвечено акцентом. */
.product-card__wish.is-active .ulia-heart,
.product-summary__wish.is-active .ulia-heart {
  -webkit-mask-image: url("../images/heart-filled.svg");
  mask-image: url("../images/heart-filled.svg");
}
.product-card__title {
  margin-top: 0.75rem;
  font-family: var(--font-base);
  font-size: 1.25rem;
  font-weight: 500;
  line-height: 1.3;
}
/* Любая цена WooCommerce (корзина, checkout, заказы, поиск, мини-корзина) —
   единым шрифтом цен с ровными цифрами. Woo оборачивает каждую сумму в этот класс. */
.woocommerce-Price-amount,
.woocommerce-Price-amount.amount {
  font-family: var(--font-price);
  font-variant-numeric: lining-nums tabular-nums;
  font-feature-settings: "lnum" 1, "tnum" 1;
}

.product-card__price {
  margin-top: 0.25rem;
  font-family: var(--font-price);
  font-size: 1rem;
  font-weight: 500;
  font-variant-numeric: lining-nums tabular-nums;
  font-feature-settings: "lnum" 1, "tnum" 1;
  letter-spacing: 0.01em;
  color: var(--color-text);
}
.product-card__rating {
  display: flex;
  align-items: center;
  gap: 0.3rem;
  font-weight: 500;
  font-size: 1rem;
  color: var(--color-muted);
}
.product-card__reviews {
  color: var(--color-muted-light);
  font-weight: 400;
}

@media (max-width: 1024px) {
  .products-grid {
    grid-template-columns: repeat(3, 1fr);
  }
}

@media (max-width: 767px) {
  .products-grid {
    grid-template-columns: repeat(2, 1fr);
  }
}

/* 10. Legacy banner --------------------------------------- */
.legacy {
  position: relative;
  min-height: 90vh;
  display: flex;
  background-size: cover;
  background-position: center;
  background-color: #1a1410;
  color: #fff;
  overflow: hidden;
}
.legacy__overlay {
  position: absolute;
  inset: 0;
  background: linear-gradient(
    90deg,
    rgba(0, 0, 0, 0.55) 0%,
    rgba(0, 0, 0, 0.15) 60%,
    rgba(0, 0, 0, 0.1) 100%
  );
}
.legacy__mark {
  position: absolute;
  top: 2rem;
  left: max(var(--gutter), calc((100% - var(--container)) / 2 + var(--gutter)));
  z-index: 2;
}
.legacy__mark img {
  width: auto;
  height: 3.5rem;
}
.legacy__inner {
  position: relative;
  z-index: 2;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  justify-content: flex-end;
  padding-block: clamp(3rem, 8vh, 6rem);
}
.legacy__title {
  font-family: var(--font-display);
  text-transform: uppercase;
  font-size: clamp(1.85rem, 6vw, 3rem);
  line-height: 1.1;
  max-width: 480px;
}
.legacy__text {
  margin-top: 1rem;
  max-width: 480px;
  font-size: 1.25em;
  color: rgba(255, 255, 255, 0.85);
}
.legacy__link {
  margin-top: 1.5rem;
  font-size: 1rem;
  text-transform: uppercase;
  border-bottom: 1px solid currentColor;
  padding-bottom: 0;
}

/* 11. Newsletter ------------------------------------------ */
.newsletter {
  padding-block: clamp(3rem, 6vw, 5rem);
}
.newsletter__inner {
  max-width: 520px;
  margin-inline: auto;
  text-align: center;
}
.newsletter__title {
  font-family: var(--font-display);
  text-transform: uppercase;
  font-size: clamp(1.5rem, 5vw, 2rem);
  font-weight: 400;
}
.newsletter__subtitle {
  margin-top: 0.5rem;
  font-size: 1.25rem;
  color: var(--color-muted);
}
.newsletter__form {
  display: flex;
  gap: 0;
  margin-top: 1.75rem;
}
.newsletter__form input,
.newsletter__form button {
  border-radius: 0;
  padding: 0.6em 1.5em;
}
.newsletter__input {
  flex: 1;
}
.newsletter__submit {
  white-space: nowrap;
  text-transform: none;
}

@media (max-width: 479px) {
  .newsletter__form {
    flex-direction: column;
  }
}

/* Соцсети (иконки) — общий компонент -------------------- */
.social-links {
  display: flex;
  flex-wrap: wrap;
  gap: 0.6rem;
  margin: 0;
  padding: 0;
  list-style: none;
}
.social-links__link {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 40px;
  height: 40px;
  border: 1px solid var(--color-line);
  border-radius: 50%;
  color: var(--color-ink);
  transition: color var(--transition), background var(--transition),
    border-color var(--transition), transform var(--transition);
}
.social-links__link:hover {
  color: #fff;
  background: var(--color-accent);
  border-color: var(--color-accent);
  transform: translateY(-2px);
}
.social-links__link svg {
  display: block;
}

/* На тёмном фоне (подвал, мобильное меню) — светлые иконки. */
.social-links--footer,
.social-links--nav {
  gap: 0.55rem;
}
.social-links--footer {
  margin-top: 1.4rem;
  justify-content: flex-end;
}
.social-links--footer .social-links__link,
.social-links--nav .social-links__link {
  border-color: rgba(255, 255, 255, 0.22);
  color: rgba(255, 255, 255, 0.8);
}
.social-links--footer .social-links__link:hover {
  color: #fff;
  background: var(--color-accent);
  border-color: var(--color-accent);
}
.social-links--nav .social-links__link:hover {
  color: var(--color-ink);
  background: #fff;
  border-color: #fff;
}

/* Контакты — на светлом фоне, небольшой отступ от заголовка блока. */
.social-links--contact {
  margin-top: 0.5rem;
}

/* 12. Footer ---------------------------------------------- */
.site-footer {
  margin-top: auto;
  background: var(--color-ink);
  color: rgba(255, 255, 255, 0.7);
}

.site-footer__brand {
  padding: 60px 0 30px;
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
}
.site-footer__brand-row {
  display: flex;
  align-items: center;
  gap: 0.9rem;
}
.footer-menu-wrapper {
  display: flex;
  align-items: flex-start;
  margin-bottom: 36px;
  justify-content: space-between;
}
.site-footer__logo {
  font-family: var(--font-display);
  font-size: 1.5rem;
  text-transform: uppercase;
  color: #fff;
}
.site-footer__logo img {
  max-height: 30px;
  width: auto;
}
.site-footer__tagline {
  font-size: 0.875rem;
  color: var(--color-muted);
}
.site-footer__menu {
  display: flex;
  flex-direction: column;
  gap: 0.6rem;
  list-style: none;
  margin: 0;
  padding: 0;
}
.site-footer__brand .site-footer__menu {
  margin-top: 1.6rem;
}
.site-footer__col a,
.site-footer__col li {
  font-size: 1rem;
  color: rgba(255, 255, 255, 0.7);
}
.site-footer__col a:hover {
  color: #fff;
}
.site-footer__contacts {
  text-align: right;
}
.site-footer__mark {
  font-family: var(--font-display);
  font-size: 1.8rem;
  color: #fff;
  justify-self: end;
}
.site-footer__bottom {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  padding-block: 1.25rem;
  border-top: 1px solid rgba(255, 255, 255, 0.08);
  font-size: 0.875rem;
  color: var(--color-muted);
}
.site-footer__bottom a:hover {
  color: #fff;
}

@media (max-width: 991px) {
  .site-footer__contacts {
    text-align: left;
  }
  .site-footer__mark {
    display: none;
  }
}

/* 12b. Generic (blog / woo fallback) ---------------------- */
.posts-list {
  display: grid;
  gap: var(--gutter);
  grid-template-columns: repeat(3, 1fr);
}
.page-header {
  margin-block: 2rem;
}
.post-card {
  border: 1px solid var(--color-line);
  border-radius: var(--radius);
  overflow: hidden;
}
.post-card__body {
  padding: 1.25rem;
}
.post-card__meta {
  font-size: 0.875rem;
  color: var(--color-muted);
}

@media (max-width: 991px) {
  .posts-list {
    grid-template-columns: repeat(2, 1fr);
  }
}
@media (max-width: 575px) {
  .posts-list {
    grid-template-columns: 1fr;
  }
}

/* 13. Shop catalog (archive) ------------------------------ */

.category-top-banner {
  position: relative;
  display: flex;
  align-items: flex-end;
  min-height: 480px;
  height:60vh;
  margin-bottom: clamp(1.5rem, 4vw, 3rem);
  background-color: #F1F1F1;
  background-repeat: no-repeat;
  background-position: right center;
  background-size: contain;
  color: #fff;
}
.category-top-banner__inner {
  position: relative;
  z-index: 2;
  width: 100%;
  padding-top: 2rem;
  padding-bottom: 1rem;
}
.category-top-banner__title {
  max-width: 55%;
  margin: 0;
  font-family: var(--font-display);
  font-weight: 400;
  text-transform: uppercase;
  font-size: clamp(1.85rem, 6vw, 3rem);
  line-height: 1.08;
  color: var(--color-ink);
}
@media (max-width: 768px) {
  /* На мобильных баннер вдвое ниже, а картинка прижата к правому нижнему углу
     и масштабируется по высоте — без пустого поля вокруг модели. Высота
     картинки — за вычетом шапки, чтобы лицо не уходило под логотип. */
  .category-top-banner:not(.category-top-banner--search) {
    height: auto;
    min-height: clamp(280px, 72vw, 360px);
    /* Сдвиг на 10% ширины экрана вправо: у картинки собственное пустое поле
       справа, из-за него модель не доходила до края. */
    background-position: right -10vw bottom;
    background-size: auto calc(100% - var(--header-h));
  }
  /* Светлая подложка слева — заголовок читается, даже когда модель заходит
     под него (обложки коллекций загружаются из админки и бывают разными). */
  .category-top-banner:not(.category-top-banner--search)::after {
    content: "";
    position: absolute;
    inset: 0;
    z-index: 1;
    pointer-events: none;
  }
  .category-top-banner__title {
    max-width: 100%;
  }
}

/* Заголовок страницы результатов поиска: без баннера-модели, чистый текст.
   Тянем верхний отступ под фиксированную шапку (у body есть has-top-banner). */
.category-top-banner--search {
  display: block;
  min-height: 0;
  height: auto;
  background: none;
  color: var(--color-ink);
  padding-top: calc(var(--header-h) + clamp(2.5rem, 6vw, 4.5rem));
  margin-bottom: 0;
}
.category-top-banner--search .category-top-banner__inner {
  padding-bottom: 0;
}
.category-top-banner--search .category-top-banner__title {
  max-width: 100%;
}
.category-top-banner__eyebrow {
  display: block;
  margin-bottom: 0.9rem;
  font-size: 0.75rem;
  letter-spacing: 0.24em;
  text-transform: uppercase;
  color: var(--color-muted);
}

/* Тулбар результатов поиска: счётчик слева, сортировка справа, без фильтров. */
.shop-toolbar--search {
  border-top: 1px solid var(--color-line);
}
.shop-toolbar__results {
  font-size: 0.85rem;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--color-muted);
}
.shop-sort__link {
  display: block;
  color: inherit;
  text-decoration: none;
}

.woocommerce-products-header {
  padding-block: clamp(1rem, 3vw, 2rem) 0;
}
.woocommerce-products-header__title.page-title {
  margin: 0;
}

/* Описание архива (термина) — в контейнер, как остальной контент. */
.term-description {
  max-width: var(--container);
  margin-inline: auto;
  padding: clamp(1.5rem, 4vw, 2.5rem) var(--gutter) 0;
  color: var(--color-muted);
  font-size: 1rem;
  line-height: 1.7;
}
.term-description > :last-child {
  margin-bottom: 0;
}

/* Тулбар: «Filters» + сортировка — закреплён под шапкой при скролле */
.shop-toolbar {
  position: sticky;
  top: var(--header-h);
  z-index: 100;
  margin: 0 0 1.75rem;
  padding: 8px 0;
  background: var(--color-bg);

  border-bottom: 1px solid var(--color-line);
}
/* Открытое мобильное меню перекрывает липкий тулбар фильтров */
body.nav-open .shop-toolbar {
  z-index: 1;
}
.shop-toolbar > .container {
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: 0.5rem 1rem;
}
.shop-toolbar__left {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 1rem;
  min-width: 0;
}
.shop-toolbar__filters {
  display: inline-flex;
  align-items: center;
  gap: 0.4rem;
  background: none;
  border: none;
  padding: 0;
  cursor: pointer;
  color: var(--color-text);
  font-size: 1rem;
  font-weight: 400;
  text-transform: uppercase;
  text-decoration: underline;
  text-underline-offset: 4px;
  white-space: nowrap;
}
/* Подпись кнопки переключается Show filters ↔ Hide filters */
.shop-toolbar__label--close {
  display: none;
}
.js-filters-toggle[aria-expanded="true"] .shop-toolbar__label--open {
  display: none;
}
.js-filters-toggle[aria-expanded="true"] .shop-toolbar__label--close {
  display: inline;
}
.shop-toolbar__count {
  display: none;
}
.shop-toolbar__count.is-visible {
  display: inline;
}
.shop-toolbar__count.is-visible::before {
  content: "(";
}
.shop-toolbar__count.is-visible::after {
  content: ")";
}

/* Чипы выбранных фильтров в тулбаре */
.shop-toolbar__chips {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 0.5rem;
  min-width: 0;
}
.shop-toolbar__chips-list {
  display: contents;
}
.filter-chip {
  display: inline-flex;
  align-items: center;
  gap: 0.45rem;
  padding: 0.45rem 0.7rem;
  border: none;
  border-radius: 0;
  background: var(--color-accent);
  cursor: pointer;
  color: #fff;
  font-family: var(--font-price);
  font-size: 0.875rem;
  font-variant-numeric: lining-nums tabular-nums;
  font-feature-settings: "lnum" 1, "tnum" 1;
  line-height: 1.2;
  white-space: nowrap;
}
.filter-chip__x {
  font-size: 1rem;
  line-height: 1;
}
.filter-chip--clear {
  padding: 0.35rem 0.2rem;
  background: none;
  color: var(--color-muted);
  text-decoration: underline;
  text-underline-offset: 3px;
  text-transform: uppercase;
  font-size: 0.875rem;
}
.filter-chip--clear:hover {
  color: var(--color-text);
}
.filter-chip--clear[hidden] {
  display: none;
}
/* Сортировка — кастомный дропдаун */
.shop-sort {
  position: relative;
}
.shop-sort__toggle {
  display: inline-flex;
  align-items: center;
  gap: 0.4rem;
  padding: 0;
  border: 0;
  background: none;
  cursor: pointer;
  font-size: 1rem;
  text-transform: uppercase;
  color: var(--color-ink);
  white-space: nowrap;
}
.shop-sort__static::after {
  content: ":";
}
.shop-sort__current {
  text-decoration: underline;
  text-underline-offset: 4px;
}
.shop-sort__menu {
  position: absolute;
  top: calc(100% + 1rem);
  right: 0;
  min-width: 300px;
  margin: 0;
  padding: 1.5rem 1.75rem;
  list-style: none;
  background: var(--color-bg);
  box-shadow: 0 18px 48px rgba(12, 10, 9, 0.14);
  z-index: 96;
}
.shop-sort__menu[hidden] {
  display: none;
}
.shop-sort__option {
  display: flex;
  align-items: center;
  gap: 0.7rem;
  padding: 0.6rem 0;
  font-size: 1rem;
  text-transform: uppercase;
  color: var(--color-ink);
  cursor: pointer;
  transition: color var(--transition);
}
.shop-sort__option:hover,
.shop-sort__option.is-active {
  color: var(--color-accent);
}

/* Иконки сортировки: в списке — подсказка, что означает вариант; в кнопке —
   единственный признак активной сортировки на телефоне, где подпись скрыта. */
.shop-sort__icon,
.shop-sort__toggle-icon {
  display: inline-flex;
  flex: 0 0 auto;
}
.shop-sort__icon svg {
  display: block;
}
.shop-sort__option .shop-sort__icon {
  opacity: 0.55;
  transition: opacity var(--transition);
}
.shop-sort__option:hover .shop-sort__icon,
.shop-sort__option.is-active .shop-sort__icon {
  opacity: 1;
}
/* Ссылка внутри варианта (тулбар поиска) — та же строка «иконка + подпись». */
.shop-sort__link {
  display: flex;
  align-items: center;
  gap: 0.7rem;
}
.shop-sort__toggle-icon svg {
  width: 14px;
  height: 14px;
}

/* Затемнение — от низа тулбара вниз (шапку и тулбар не закрывает) */
.shop-filters__backdrop {
  position: fixed;
  inset: 0;
  z-index: 999;
  background: rgba(12, 10, 9, 0.45);
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  transition:
    opacity var(--transition),
    visibility var(--transition);
}
.shop-filters__backdrop.is-open {
  opacity: 1;
  visibility: visible;
  pointer-events: auto;
}

/* ----- Панель фильтров: боковой drawer с аккордеонами -----
   Половина экрана, но не уже 640px. Группы свёрнуты, поэтому список
   заголовков помещается целиком на любой высоте; скроллится только
   середина, шапка и подвал закреплены. */
.shop-filters {
  position: fixed;
  top: 0;
  left: 0;
  bottom: 0;
  z-index: 1000;
  width: min(50vw, 100vw);
  min-width: min(640px, 100vw);
  display: flex;
  flex-direction: column;
  padding: 0;
  background: var(--color-bg);
  box-shadow: 30px 0 70px -50px rgba(12, 10, 9, 0.55);
  visibility: hidden;
  transform: translateX(-100%);
  transition:
    transform 0.45s cubic-bezier(0.22, 0.61, 0.36, 1),
    visibility 0.45s;
}
.shop-filters.is-open {
  visibility: visible;
  transform: translateX(0);
}

.shop-filters__head {
  flex: 0 0 auto;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  padding: 1.75rem clamp(1.5rem, 4vw, 3rem) 1.4rem;
}
.shop-filters__title {
  font-family: var(--font-display);
  font-size: clamp(1.5rem, 2.4vw, 2rem);
  line-height: 1;
  letter-spacing: 0.06em;
  text-transform: uppercase;
}
.shop-filters__close {
  display: inline-flex;
  padding: 0.35rem;
  margin-right: -0.35rem;
  border: none;
  background: none;
  cursor: pointer;
  color: var(--color-text);
  transition: color var(--transition);
}
.shop-filters__close:hover {
  color: var(--color-accent);
}

/* Середина — единственная прокручиваемая область */
.shop-filters__form {
  flex: 1 1 auto;
  overflow-y: auto;
  padding: 0 clamp(1.5rem, 4vw, 3rem);
  -webkit-overflow-scrolling: touch;
}

/* Аккордеон группы */
.filter-group {
  margin: 0;
  padding: 0;
  border: none;
  border-top: 1px solid var(--color-line);
}
.filter-group:last-of-type {
  border-bottom: 1px solid var(--color-line);
}
.filter-group__title {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  padding: 1.15rem 0;
  cursor: pointer;
  list-style: none;
  color: var(--color-text);
  font-family: var(--font-base);
  font-size: 0.8125rem;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  transition: color var(--transition);
}
.filter-group__title::-webkit-details-marker {
  display: none;
}
.filter-group__title:hover {
  color: var(--color-accent);
}
.filter-group__label {
  display: inline-flex;
  align-items: center;
  gap: 0.6rem;
}
.filter-group__count {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 18px;
  height: 18px;
  padding: 0 5px;
  border-radius: 9px;
  background: var(--color-accent);
  color: #fff;
  font-size: 0.6875rem;
  letter-spacing: 0;
  font-variant-numeric: tabular-nums;
}

/* Плюс → минус */
.filter-group__icon {
  position: relative;
  flex: 0 0 auto;
  width: 12px;
  height: 12px;
}
.filter-group__icon::before,
.filter-group__icon::after {
  content: "";
  position: absolute;
  top: 50%;
  left: 0;
  width: 12px;
  height: 1px;
  background: currentColor;
  transition: transform var(--transition);
}
.filter-group__icon::after {
  transform: rotate(90deg);
}
.filter-group[open] .filter-group__icon::after {
  transform: rotate(0deg);
}

.filter-pills {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
  padding: 0 0 1.4rem;
}
.filter-pill {
  padding: 0.5rem 0.95rem;
  border: 1px solid var(--color-line);
  border-radius: var(--radius);
  background: transparent;
  cursor: pointer;
  color: var(--color-text);
  font-family: var(--font-price);
  font-size: 0.9375rem;
  font-variant-numeric: lining-nums tabular-nums;
  font-feature-settings: "lnum" 1, "tnum" 1;
  line-height: 1.2;
  transition:
    border-color var(--transition),
    background var(--transition),
    color var(--transition);
}
.filter-pill:hover {
  border-color: var(--color-accent);
  color: var(--color-accent);
}
.filter-pill.is-active {
  background: var(--color-accent);
  border-color: var(--color-accent);
  color: #fff;
}

/* Подвал закреплён у нижней кромки */
.shop-filters__foot {
  flex: 0 0 auto;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  padding: 1.25rem clamp(1.5rem, 4vw, 3rem) 1.75rem;
  border-top: 1px solid var(--color-line);
  background: var(--color-bg);
}
.shop-filters__clear {
  background: none;
  border: none;
  padding: 0;
  cursor: pointer;
  color: var(--color-muted);
  font-size: 0.8125rem;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  text-decoration: underline;
  text-underline-offset: 4px;
  transition: color var(--transition);
}
.shop-filters__clear:hover {
  color: var(--color-text);
}
.shop-filters__done {
  padding: 0.75rem 2.5rem;
  border: 1px solid var(--color-accent);
  border-radius: var(--radius);
  background: var(--color-accent);
  color: #fff;
  cursor: pointer;
  font-size: 0.8125rem;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  transition:
    background var(--transition),
    color var(--transition);
}
.shop-filters__done:hover {
  background: transparent;
  color: var(--color-accent);
}

body.has-filters-open {
  overflow: hidden;
}

/* Результаты: состояние загрузки */
.shop-results {
  position: relative;
  padding-bottom: clamp(3rem, 6vw, 6rem);
  transition: opacity 0.2s ease;
}
.shop-results.is-loading {
  opacity: 0.45;
  pointer-events: none;
}
.shop-empty {
  padding: 3rem 0;
  color: var(--color-muted);
  text-align: center;
}

/* Пагинация каталога */
.shop-pagination {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 0.5rem;
  margin-top: clamp(2rem, 4vw, 3.5rem);
}
.shop-pagination__page {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 44px;
  height: 44px;
  padding: 0 0.5rem;
  border: 1px solid var(--color-line);
  border-radius: var(--radius);
  background: transparent;
  cursor: pointer;
  color: var(--color-text);
  font-family: var(--font-base);
  font-size: 1rem;
  text-decoration: none;
  transition:
    border-color var(--transition),
    background var(--transition),
    color var(--transition);
}
.shop-pagination__page:hover {
  border-color: var(--color-accent);
}
.shop-pagination__page.is-active {
  border-color: var(--color-ink);
  background: var(--color-ink);
  color: #fff;
  cursor: default;
}

/* 14. Single product -------------------------------------- */
/* Контейнер Woo-страницы товара чуть уже каталога — комфортнее читать. */
.single-product .woocommerce-page__inner {
  width: 100%;
  max-width: var(--container);
  margin-inline: auto;
  padding-inline: var(--gutter);
}

/* Woo-нотисы (added to cart / ошибки) — поверх нашей вёрстки. */
.single-product .woocommerce-notices-wrapper:empty {
  display: none;
}

.product-single__layout {
  display: grid;
  grid-template-columns: minmax(0, 1.45fr) minmax(320px, 1fr);
  gap: clamp(2rem, 4vw, 4.5rem);
  align-items: start;
  padding-block: clamp(1.5rem, 3vw, 3rem);
}

/* ----- Галерея (левая колонка, скроллится) ----- */
.product-gallery {
  display: grid;
  grid-template-columns: 64px minmax(0, 1fr);
  gap: clamp(0.6rem, 1.2vw, 1.1rem);
}
.product-gallery--single {
  grid-template-columns: minmax(0, 1fr);
}
.product-gallery__nav {
  position: sticky;
  top: calc(var(--header-h) + 1.2rem);
  align-self: start;
  display: flex;
  flex-direction: column;
  gap: 0.7rem;
  max-height: calc(100vh - var(--header-h) - 2.4rem);
  overflow: auto;
  scrollbar-width: none;
}
.product-gallery__nav::-webkit-scrollbar {
  display: none;
}
.product-gallery__thumb {
  width: 48px;
  height: 48px;
  flex: 0 0 auto;
  border-radius: 0;
  overflow: hidden;
  background: #fff;
  border: 1px solid transparent;
  opacity: 0.55;
  transition:
    opacity var(--transition),
    border-color var(--transition);
  cursor: pointer;
  padding: 0;
}
.product-gallery__thumb img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.product-gallery__thumb:hover {
  opacity: 0.85;
}
.product-gallery__thumb.is-active {
  opacity: 1;
  border-color: var(--color-accent);
}
.product-gallery__stack {
  display: flex;
  flex-direction: column;
  gap: clamp(0.9rem, 1.8vw, 1.6rem);
}
.product-gallery__item {
  border-radius: 0;
  overflow: hidden;
  scroll-margin-top: calc(var(--header-h) + 1.2rem);
}
.product-gallery__img {
  width: 100%;
  height: auto;
  object-fit: cover;
}

/* ----- Карточка товара (правая колонка, sticky) ----- */
.product-summary {
  /* Тянемся на всю высоту ряда (её задаёт галерея слева), чтобы у sticky
     __inner было пространство для прилипания, пока галерея скроллится. */
  align-self: stretch;
}
.product-summary__inner {
  position: sticky;
  top: var(--header-h);
}
.product-summary__head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 1rem;
  min-height: 1.5rem;
}
.product-summary__eyebrow {
  font-family: var(--font-display);
  font-style: italic;
  font-size: 1rem;
  color: var(--color-muted);
}
.product-summary__tools {
  position: relative;
  display: flex;
  gap: 0.4rem;
  margin-left: auto;
}

/* Share — всплывающее меню у кнопки «Поделиться» ---------- */
.share-menu {
  position: absolute;
  top: calc(100% + 8px);
  right: 0;
  z-index: 60;
  min-width: 176px;
  padding: 6px;
  background: var(--color-bg);
  border: 1px solid var(--color-line);
  box-shadow: 0 16px 40px rgba(12, 10, 9, 0.16);
  display: flex;
  flex-direction: column;
  animation: share-menu-in 0.18s ease;
}
@keyframes share-menu-in {
  from { opacity: 0; transform: translateY(-6px); }
  to { opacity: 1; transform: translateY(0); }
}
.share-menu__item {
  display: block;
  width: 100%;
  padding: 0.6rem 0.8rem;
  border: 0;
  background: none;
  color: var(--color-text);
  font: inherit;
  font-size: 0.9rem;
  text-align: left;
  text-decoration: none;
  cursor: pointer;
  transition: background var(--transition), color var(--transition);
}
.share-menu__item:hover {
  background: #f1ede7;
  color: var(--color-ink);
}
.share-menu__item--copy {
  border-top: 1px solid var(--color-line-1);
  margin-top: 2px;
}

/* Тост-уведомление (копирование ссылки и т.п.) ----------- */
.ulia-toast {
  position: fixed;
  left: 50%;
  bottom: 32px;
  z-index: 1500;
  max-width: calc(100vw - 2 * var(--gutter));
  padding: 0.8rem 1.4rem;
  background: var(--color-ink);
  color: #fff;
  font-size: 0.9rem;
  white-space: nowrap;
  border-radius: 999px;
  box-shadow: 0 12px 32px rgba(12, 10, 9, 0.28);
  opacity: 0;
  transform: translate(-50%, 12px);
  pointer-events: none;
  transition: opacity var(--transition), transform var(--transition);
}
.ulia-toast.is-visible {
  opacity: 1;
  transform: translate(-50%, 0);
}
.product-summary__wish,
.product-summary__share {
  position: static;
  width: 36px;
  height: 36px;
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--color-muted);
  background: transparent;
  border-radius: 999px;
  transition:
    color var(--transition),
    background var(--transition);
}
.product-summary__wish:hover,
.product-summary__share:hover {
  color: var(--color-text);
  background: #f1ede7;
}
.product-summary__wish.is-active {
  color: var(--color-accent);
}
.product-summary__title {
  margin-top: 0.6rem;
  font-family: var(--font-display);
  font-weight: 500;
  font-size: clamp(1.85rem, 6vw, 3rem);
  line-height: 1.1;
  text-transform: uppercase;
}
.product-summary__rating {
  display: inline-flex;
  align-items: center;
  gap: 0.45rem;
  margin-top: 1rem;
  font-size: 0.875rem;
  color: var(--color-text);
}
.product-summary__rating-stars {
  display: flex;
  gap: 0.2rem;
}
.product-summary__rating-value {
  font-weight: 500;
}
.product-summary__rating-count {
  color: var(--color-muted);
}
.product-summary__price {
  margin-top: 0.7rem;
  font-family: var(--font-price);
  font-size: 1.3rem;
  font-weight: 500;
  font-variant-numeric: lining-nums tabular-nums;
  font-feature-settings: "lnum" 1, "tnum" 1;
  letter-spacing: 0.01em;
  color: var(--color-text);
}
.product-summary__price del {
  color: var(--color-muted-light);
  margin-right: 0.5rem;
}
.product-summary__desc {
  margin-top: 1.6rem;
  color: var(--color-base);
  font-size: 1.15rem;
  line-height: 1.5;
}
.product-summary__desc-inner > * + * {
  margin-top: 0.7rem;
}
.product-summary__desc-inner p {
  margin: 0;
}
/* Свёрнутое состояние: ограничиваем высоту и затеняем низ. */
.product-summary__desc.is-clamped .product-summary__desc-inner {
  max-height: 9.5em;
  overflow: hidden;
  -webkit-mask-image: linear-gradient(#000 60%, transparent);
  mask-image: linear-gradient(#000 60%, transparent);
}
.product-summary__desc-toggle {
  margin-top: 0.6rem;
  padding: 0 0 2px;
  background: none;
  border: 0;
  border-bottom: 1px solid currentColor;
  font-size: 0.75rem;
  text-transform: uppercase;
  color: var(--color-text);
  cursor: pointer;
}
.product-summary__desc-toggle:hover {
  color: var(--color-accent);
}

/* ----- Форма «в корзину» (пилюли размеров) ----- */
.ulia-cart {
  margin-top: 1.6rem;
}
.ulia-cart__row + .ulia-cart__row {
  margin-top: 1.2rem;
}
.ulia-cart__label {
  display: flex;
  align-items: baseline;
  gap: 0.5rem;
  font-size: 0.875rem;
  text-transform: uppercase;
  color: var(--color-muted);
  margin-bottom: 0.7rem;
}
.ulia-cart__value {
  color: var(--color-text);
}
.ulia-sizes {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
}
.ulia-sizes[hidden] {
  display: none;
}
/* Вложенные опции атрибута (подчинённые термины) — видны только при выбранном
   родителе, см. initProductCart() в main.js. */
.ulia-sizes--sub {
  margin-top: 0.5rem;
  padding-left: 0.85rem;
  border-left: 1px solid var(--color-line);
}
.ulia-size {
  min-width: 38px;
  height: 38px;
  padding-inline: 0.5rem;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border: 1px solid var(--color-line);
  border-radius: 0;
  background: #fff;
  font-family: var(--font-price);
  font-size: 1rem;
  font-variant-numeric: lining-nums tabular-nums;
  font-feature-settings: "lnum" 1, "tnum" 1;
  color: var(--color-text);
  cursor: pointer;
  transition:
    border-color var(--transition),
    background var(--transition),
    color var(--transition);
}
.ulia-size:hover {
  border-color: var(--color-accent);
}
.ulia-size.is-active {
  background: var(--color-accent);
  border-color: var(--color-accent);
  color: #fff;
}
.ulia-size.is-disabled {
  opacity: 0.35;
  pointer-events: none;
  text-decoration: line-through;
}
.ulia-add {
  margin-top: 1.8rem;
  width: 100%;
  height: 56px;
  border: 0;
  border-radius: 0;
  background: var(--color-accent);
  color: #fff;
  font-size: 1rem;
  font-weight: 400;
  text-transform: uppercase;
  cursor: pointer;
  transition: background var(--transition);
}
.ulia-add:hover:not(:disabled) {
  background: var(--color-accent-dark);
}
.ulia-add:disabled {
  background: #cbc3b9;
  cursor: not-allowed;
}

/* ----- Аккордеоны карточки товара (Care / Delivery & Returns) ----- */
.product-accordions {
  margin-top: 2.2rem;
  border-top: 1px solid var(--color-line);
}
.product-accordion {
  border-bottom: 1px solid var(--color-line);
}
.product-accordion__head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  padding: 1.15rem 0;
  cursor: pointer;
  list-style: none;
  font-size: 0.85rem;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--color-ink);
  user-select: none;
}
.product-accordion__head::-webkit-details-marker {
  display: none;
}
.product-accordion__head:hover {
  color: var(--color-accent);
}

/* Иконка +/− из псевдоэлементов. */
.product-accordion__icon {
  position: relative;
  flex: none;
  width: 13px;
  height: 13px;
  color: currentColor;
}
.product-accordion__icon::before,
.product-accordion__icon::after {
  content: "";
  position: absolute;
  background: currentColor;
  transition: opacity var(--transition), transform var(--transition);
}
.product-accordion__icon::before {
  top: 50%;
  left: 0;
  width: 100%;
  height: 1px;
  transform: translateY(-50%);
}
.product-accordion__icon::after {
  left: 50%;
  top: 0;
  width: 1px;
  height: 100%;
  transform: translateX(-50%);
}
.product-accordion[open] .product-accordion__icon::after {
  opacity: 0;
  transform: translateX(-50%) rotate(90deg);
}

/* ----- Характеристики товара в аккордеоне «Specifications» ----- */
.product-specs {
  display: flex;
  flex-direction: column;
  gap: 0.6rem;
  margin: 0;
}
.product-specs__row {
  display: grid;
  grid-template-columns: minmax(90px, 34%) 1fr;
  gap: 0.4rem 1rem;
  align-items: baseline;
}
.product-specs__label {
  font-size: 0.8125rem;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  color: var(--color-muted);
}
.product-specs__value {
  margin: 0;
  color: var(--color-text);
}
@media (max-width: 480px) {
  .product-specs__row {
    grid-template-columns: 1fr;
    gap: 0.15rem;
  }
}
.product-accordion__body {
  padding: 0 0 1.4rem;
  font-size: 0.95rem;
  line-height: 1.7;
  color: var(--color-muted);
}
.product-accordion__body > :first-child {
  margin-top: 0;
}
.product-accordion__body > :last-child {
  margin-bottom: 0;
}
.product-accordion[open] .product-accordion__body {
  animation: ulia-accordion-in 0.35s ease;
}
@keyframes ulia-accordion-in {
  from { opacity: 0; transform: translateY(-4px); }
  to { opacity: 1; transform: translateY(0); }
}

/* ----- Отзывы ----- */
.product-reviews {
  padding-block: clamp(2.5rem, 5vw, 5rem);
  border-top: 1px solid var(--color-line);
}
.product-reviews__top {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 1.5rem;
  margin-bottom: clamp(1.5rem, 3vw, 2.5rem);
}
.product-reviews__title {
  margin: 0;
}
.product-reviews__head {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  gap: clamp(2rem, 5vw, 5rem);
  align-items: start;
}
.product-reviews__summary {
  position: sticky;
  top: calc(var(--header-h) + 1.5rem);
}
.product-reviews__score {
  font-family: var(--font-display);
  font-weight: 500;
  text-transform: uppercase;
  font-size: clamp(1.85rem, 6vw, 3rem);
  line-height: 1;
}
.product-reviews__stars {
  display: flex;
  gap: 0.2rem;
  margin-top: 0.6rem;
  color: var(--color-line);
}
.product-reviews__stars .is-on {
  color: var(--color-accent);
}
.product-reviews__based {
  margin-top: 0.5rem;
  font-size: 0.875rem;
  color: var(--color-muted);
}
.product-reviews__add-link {
  flex: 0 0 auto;
  margin-top: 0.4rem;
  padding: 0 0 2px;
  background: none;
  border: 0;
  font-size: 0.75rem;
  text-transform: uppercase;
  color: var(--color-text);
  cursor: pointer;
  border-bottom: 1px solid currentColor;
}
.product-reviews__add-link:hover {
  color: var(--color-accent);
}
.product-reviews__list {
  list-style: none;
  margin: 0;
  padding: 0;
}
.product-review {
  padding-bottom: 1.6rem;
  margin-bottom: 1.6rem;
  border-bottom: 1px solid var(--color-line);
}
.product-review.is-hidden {
  display: none;
}
.product-review__head {
  display: flex;
  align-items: center;
  gap: 0.7rem;
}
.product-review__avatar {
  width: 44px;
  height: 44px;
  flex: 0 0 auto;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 0;
  background: var(--color-accent);
  color: #fff;
  font-size: 0.875rem;
  line-height: 1;
  font-weight: 600;
}
.product-review__meta {
  display: flex;
  flex-direction: column;
  gap: 0.15rem;
}
.product-review__author {
  font-size: 1rem;
  font-weight: 500;
  line-height: 1;
}
.product-review__stars {
  display: inline-flex;
  gap: 0.1rem;
  color: var(--color-line);
}
.product-review__stars .is-on {
  color: var(--color-accent-light);
}
.product-review__date {
  margin-left: auto;
  font-size: 0.75rem;
  color: var(--color-muted-light);
}
.product-review__gallery {
  display: grid;
  grid-template-columns: repeat(6, 1fr);
  gap: 0.4rem;
  margin-top: 0.9rem;
}
.product-review__photo {
  width: 100%;
  aspect-ratio: 1 / 1;
  object-fit: cover;
  border-radius: 4px;
}
.product-review__title {
  margin-top: 0.9rem;
  font-size: 1rem;
  font-weight: 600;
}
.product-review__text {
  margin-top: 0.35rem;
  font-size: 0.875rem;
  line-height: 1.6;
  color: var(--color-muted);
}
.product-review__pending {
  margin-top: 0.4rem;
  font-size: 0.875rem;
  color: var(--color-accent);
}
.product-reviews__more {
  display: block;
  margin: 2rem auto 0;
  padding: 0 0 3px;
  background: none;
  border: 0;
  border-bottom: 1px solid currentColor;
  font-size: 0.75rem;
  text-transform: uppercase;
  color: var(--color-text);
  cursor: pointer;
}
.product-reviews__more:hover {
  color: var(--color-accent);
}
.product-reviews__form {
  margin-top: 2.5rem;
  max-width: 560px;
}
.product-reviews__nav {
  margin-top: 1.5rem;
  display: flex;
  gap: 0.5rem;
  font-size: 0.875rem;
}

/* ----- Форма отзыва: рейтинг звёздами ----- */
.ulia-rating {
  margin-bottom: 1.25rem;
}
.ulia-rating__label {
  display: block;
  font-size: 0.75rem;
  text-transform: uppercase;
  color: var(--color-muted);
  margin-bottom: 0.5rem;
}
.ulia-stars {
  display: inline-flex;
  gap: 0.25rem;
  color: var(--color-muted-light);
}
.ulia-star {
  cursor: pointer;
  line-height: 0;
  color: inherit;
  transition:
    color 0.15s ease,
    transform 0.15s ease;
}
.ulia-star:hover {
  transform: scale(1.1);
}
.ulia-star.is-on {
  color: var(--color-accent);
}
.ulia-star input {
  position: absolute;
  opacity: 0;
  width: 1px;
  height: 1px;
}
.ulia-star input:focus-visible + svg {
  outline: 2px solid var(--color-accent);
  outline-offset: 2px;
  border-radius: 2px;
}

/* ----- Форма отзыва: заголовок и текст ----- */
.comment-form-review-title label,
.comment-form-comment label,
.comment-form-photos__label {
  display: block;
  font-size: 0.75rem;
  text-transform: uppercase;
  color: var(--color-muted);
  margin-bottom: 0.5rem;
}
.comment-form-review-title input,
.comment-form-comment textarea {
  width: 100%;
  padding: 0.75rem 0.9rem;
  border: 1px solid var(--color-line);
  border-radius: 4px;
  background: var(--color-bg);
  color: var(--color-text);
  font: inherit;
}
.comment-form-review-title input:focus,
.comment-form-comment textarea:focus {
  outline: none;
  border-color: var(--color-accent);
}
.comment-form-review-title,
.comment-form-comment {
  margin-bottom: 1.25rem;
}
.comment-form-photos__label .optional {
  text-transform: none;
  color: var(--color-muted-light);
}

/* ----- Форма отзыва: загрузка фото ----- */
.comment-form-photos {
  margin-bottom: 1.5rem;
}
.ulia-upload {
  display: flex;
  align-items: center;
  gap: 0.6rem;
  padding: 0.85rem 1rem;
  border: 1px dashed var(--color-line);
  border-radius: 4px;
  color: var(--color-muted);
  cursor: pointer;
  transition:
    border-color 0.15s ease,
    background 0.15s ease;
}
.ulia-upload:hover,
.ulia-upload.is-drag {
  border-color: var(--color-accent);
  background: rgba(107, 74, 62, 0.04);
}
.ulia-upload__plus {
  font-size: 1.25rem;
  line-height: 1;
  color: var(--color-muted-light);
}
.ulia-upload__preview {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
  margin-top: 0.75rem;
}
.ulia-upload__preview:empty {
  margin-top: 0;
}
.ulia-upload__thumb {
  width: 64px;
  height: 64px;
  object-fit: cover;
  border-radius: 4px;
  border: 1px solid var(--color-line);
}

/* ----- Форма отзыва: блок «About you» (имя/телефон/email) ----- */
.ulia-aboutyou {
  margin: 0 0 1.5rem;
  padding: 0;
  border: 0;
}
.ulia-aboutyou__title {
  display: block;
  margin-bottom: 0.85rem;
  padding: 0;
  font-family: var(--font-base);
  font-size: 1.25rem;
  color: var(--color-ink);
}
.ulia-aboutyou p {
  margin: 0 0 1rem;
}
.ulia-aboutyou label {
  display: block;
  margin-bottom: 0.5rem;
  font-size: 0.75rem;
  text-transform: uppercase;
  color: var(--color-muted);
}
.ulia-aboutyou input {
  width: 100%;
  padding: 0.75rem 0.9rem;
  border: 1px solid var(--color-line);
  border-radius: 4px;
  background: var(--color-bg);
  color: var(--color-text);
  font: inherit;
}
.ulia-aboutyou input:focus {
  outline: none;
  border-color: var(--color-accent);
}
.ulia-aboutyou__row {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 1rem;
}
@media (max-width: 575px) {
  .ulia-aboutyou__row {
    grid-template-columns: 1fr;
    gap: 0;
  }
}

/* Кнопка отправки отзыва — приведена к акцентной кнопке (Brand/4). */
.ulia-add--review {
  display: block;
}

/* ----- «You may also admire» ----- */
.product-related {
  padding-block: clamp(3rem, 6vw, 6rem);
  border-top: 1px solid var(--color-line);
}
.product-related__title {
  text-align: center;
  font-family: var(--font-display);
  font-weight: 500;
  font-size: clamp(1.85rem, 6vw, 3rem);
  text-transform: uppercase;
  margin-bottom: clamp(2rem, 4vw, 3.5rem);
}
.product-related .product-card__media {
  aspect-ratio: 4 / 3;
}

/* ----- Адаптив ----- */
@media (max-width: 991px) {
  .product-single__layout {
    grid-template-columns: 1fr;
    gap: 2rem;
  }
  .product-summary__inner,
  .product-reviews__summary {
    position: static;
  }
  .product-reviews__head {
    grid-template-columns: 1fr;
    gap: 2rem;
  }
}
@media (max-width: 575px) {
  .product-gallery {
    grid-template-columns: 52px minmax(0, 1fr);
  }
  .product-gallery__thumb {
    width: 52px;
    height: 52px;
  }
  .product-related .products-grid {
    grid-template-columns: 1fr;
  }
  .product-review__gallery {
    grid-template-columns: repeat(5, 1fr);
  }
}

/* 15. About ----------------------------------------------- */
/* Полноширинное hero-фото под overlay-шапкой. */
.about-hero {
  min-height: clamp(420px, 56vw, 804px);
  background-size: cover;
  background-position: center;
  background-color: #1a1410;
}

/* Центрированная колонка: заголовок → абзац → фото → абзац. */
.about {
  padding-block: clamp(3rem, 6vw, 6rem);
}
.about__col {
  max-width: 921px;
  margin-inline: auto;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: clamp(2rem, 4vw, 3.5rem);
  text-align: center;
}
.about__title {
  margin: 0;
  max-width: 921px;
  font-family: var(--font-display);
  font-weight: 400;
  font-size: clamp(1.85rem, 6vw, 3rem);
  line-height: 1.1;
  text-transform: uppercase;
  color: var(--color-ink);
}
.about__text {
  max-width: 645px;
  font-size: 1rem;
  line-height: 1.7;
  color: var(--color-muted);
}
.about__text p {
  margin: 0 0 1em;
}
.about__text p:last-child {
  margin-bottom: 0;
}
.about__figure {
  width: 100%;
  margin: 0;
}
.about__figure img {
  width: 100%;
  height: auto;
  object-fit: cover;
}
.about__content {
  max-width: 645px;
  text-align: left;
}

/* ===== Side cart (drawer) ============================================ */
.cart-drawer {
  position: fixed;
  inset: 0;
  z-index: 1000;
  visibility: hidden;
  pointer-events: none;
}
.cart-drawer.is-open {
  visibility: visible;
  pointer-events: auto;
}

.cart-drawer__overlay {
  position: absolute;
  inset: 0;
  background: rgba(12, 10, 9, 0.45);
  opacity: 0;
  transition: opacity var(--transition);
}
.cart-drawer.is-open .cart-drawer__overlay {
  opacity: 1;
}

.cart-drawer__panel {
  position: absolute;
  top: 0;
  right: 0;
  display: flex;
  flex-direction: column;
  width: 45%;
  min-width: 595px;
  max-width: 100%;
  height: 100%;
  background: var(--color-bg);
  box-shadow: -16px 0 48px rgba(12, 10, 9, 0.12);
  transform: translateX(100%);
  transition: transform var(--transition);
}
.cart-drawer.is-open .cart-drawer__panel {
  transform: translateX(0);
}

.cart-drawer__head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 1.6rem 1.8rem 1.2rem;
  border-bottom: 1px solid var(--color-line-1);
}
.cart-drawer__title {
  margin: 0;
  font-family: var(--font-display);
  font-size: clamp(1.5rem, 4vw, 2rem);
  font-weight: 400;
  text-transform: uppercase;
}
.cart-drawer__close {
  border: 0;
  background: none;
  font-size: 1.6rem;
  line-height: 1;
  color: var(--color-ink);
  cursor: pointer;
  transition: color var(--transition);
}
.cart-drawer__close:hover {
  color: var(--color-accent);
}

.cart-drawer__body {
  display: flex;
  flex-direction: column;
  flex: 1 1 auto;
  min-height: 0;
}

.cart-drawer__items {
  flex: 1 1 auto;
  overflow-y: auto;
  padding: 0.5rem 1.8rem;
}

/* Позиция корзины */
.cart-item {
  position: relative;
  display: grid;
  grid-template-columns: 160px 1fr;
  gap: 1rem;
  align-items: start;
  margin-bottom:16px;
  padding: 0;
  transition: opacity var(--transition);
}
.cart-item.is-updating {
  opacity: 0.45;
  pointer-events: none;
}
.cart-item__media {
  width: 160px;
  height: 160px;
  overflow: hidden;
  background: #f6f4f2;
}
.cart-item__media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.cart-item__info {
  min-width: 0;
  display:flex;
  flex-direction: column;
  height:100%;
}
.cart-item__name {
  font-size: 1.25rem;
  font-weight:500;
  line-height: 1.3;
  color: var(--color-ink);
}
.cart-item__meta {
  margin-top: 0.3rem;
  font-size: 1rem;
  color: var(--color-muted);
}
.cart-item__meta p {
  margin: 0;
}
.cart-item__controls {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  margin-top: auto;
}
.cart-item__qty {
  display: inline-flex;
  align-items: center;
}
.cart-item__step {
  width: 28px;
  height: 28px;
  border: 0;
  background: none;
  font-size: 1rem;
  line-height: 1;
  color: var(--color-ink);
  cursor: pointer;
  transition: color var(--transition);
}
.cart-item__step:hover {
  color: var(--color-accent);
}
.cart-item__count {
  min-width: 28px;
  text-align: center;
  font-size: 1rem;
  font-weight:500;
}
.cart-item__price {
  font-size: 1rem;
  white-space: nowrap;
  font-weight:500;
}
.cart-item__remove {
  position: absolute;
  top: 1.2rem;
  right: 0;
  border: 0;
  background: none;
  font-size: 1.15rem;
  line-height: 1;
  color: var(--color-muted-light);
  cursor: pointer;
  transition: color var(--transition);
}
.cart-item__remove:hover {
  color: var(--color-accent);
}

/* Подвал drawer'а */
.cart-drawer__foot {
  flex: 0 0 auto;
  padding: 1.4rem 1.8rem 1.8rem;
  border-top: 1px solid var(--color-line-1);
}
.cart-drawer__subtotal {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  margin-bottom: 1.2rem;
  font-size: 1rem;
}
.cart-drawer__subtotal-value {
  font-weight: 600;
}
.cart-drawer__checkout {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  height: 56px;
  background: var(--color-accent);
  color: #fff;
  font-size: 1rem;
  text-transform: uppercase;
  transition: background var(--transition);
}
.cart-drawer__checkout:hover {
  background: var(--color-accent-dark);
  color: #fff;
}

/* Пустая корзина */
.cart-drawer__empty {
  flex: 1 1 auto;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 1.2rem;
  padding: 2rem;
  color: var(--color-muted);
}
.cart-drawer__continue {
  padding: 0.9rem 2rem;
  border: 1px solid var(--color-text);
  color: var(--color-text);
  text-transform: uppercase;
  font-size: 0.875rem;
  transition: background var(--transition), color var(--transition);
}
.cart-drawer__continue:hover {
  background: var(--color-text);
  color: #fff;
}

/* Состояние загрузки кнопки add-to-cart */
.ulia-add.is-loading {
  opacity: 0.7;
  pointer-events: none;
}

/* Блокируем прокрутку фона, когда корзина открыта */
body.cart-open {
  overflow: hidden;
}

@media (max-width: 640px) {
  .cart-drawer__panel {
    width: 100%;
    min-width: 0;
  }
}

/* 14b. Fullscreen search --------------------------------- */
.search-overlay {
  position: fixed;
  inset: 0;
  z-index: 1300;
  visibility: hidden;
  pointer-events: none;
}
.search-overlay.is-open {
  visibility: visible;
  pointer-events: auto;
}

.search-overlay__backdrop {
  position: absolute;
  inset: 0;
  background: rgba(12, 10, 9, 0.35);
  opacity: 0;
  transition: opacity 0.45s ease;
}
.search-overlay.is-open .search-overlay__backdrop {
  opacity: 1;
  -webkit-backdrop-filter: blur(4px);
  backdrop-filter: blur(4px);
}

.search-overlay__panel {
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  min-height: 62vh;
  max-height: 100%;
  overflow-y: auto;
  background: var(--color-bg);
  box-shadow: 0 24px 64px rgba(12, 10, 9, 0.14);
  transform: translateY(-100%);
  transition: transform 0.55s cubic-bezier(0.22, 1, 0.36, 1);
}
.search-overlay.is-open .search-overlay__panel {
  transform: translateY(0);
}

.search-overlay__close {
  position: absolute;
  top: 1.6rem;
  right: clamp(1rem, 4vw, 3rem);
  z-index: 2;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 44px;
  height: 44px;
  border: 0;
  background: none;
  color: var(--color-ink);
  cursor: pointer;
  opacity: 0.7;
  transition: opacity var(--transition), transform var(--transition);
}
.search-overlay__close:hover {
  opacity: 1;
  transform: rotate(90deg);
}

.search-overlay__inner {
  max-width: 820px;
  margin: 0 auto;
  padding: clamp(4rem, 10vh, 8rem) var(--gutter) clamp(2.5rem, 6vh, 4rem);
  opacity: 0;
  transform: translateY(18px);
  transition: opacity 0.5s ease 0.12s, transform 0.5s ease 0.12s;
}
.search-overlay.is-open .search-overlay__inner {
  opacity: 1;
  transform: translateY(0);
}

.search-overlay__eyebrow {
  display: block;
  margin-bottom: 1.1rem;
  font-size: 0.72rem;
  letter-spacing: 0.24em;
  text-transform: uppercase;
  color: var(--color-muted);
}

.search-overlay__field {
  position: relative;
  display: flex;
  align-items: center;
}

.search-overlay__input {
  flex: 1 1 auto;
  min-width: 0;
  border: 0;
  padding: 0.2rem 2.4rem 0.2rem 0;
  background: none;
  font-family: var(--font-display);
  font-size: clamp(1.4rem, 3.5vw, 2.2rem);
  font-weight: 400;
  line-height: 1.15;
  color: var(--color-ink);
}
.search-overlay__input::placeholder {
  color: var(--color-muted-light);
  opacity: 1;
}
.search-overlay__input:focus {
  outline: none;
}
.search-overlay__input::-webkit-search-cancel-button {
  -webkit-appearance: none;
}

.search-overlay__clear {
  position: absolute;
  top: 50%;
  right: 16px;
  transform: translateY(-50%);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 28px;
  height: 28px;
  border: 0;
  border-radius: 50%;
  background: none;
  color: var(--color-muted-light);
  cursor: pointer;
  transition: color var(--transition);
}
.search-overlay__clear:hover {
  color: var(--color-ink);
}
/* Пока идёт запрос — прячем крестик, показываем спиннер */
.search-overlay.is-loading .search-overlay__clear {
  visibility: hidden;
}

.search-overlay__spinner {
  position: absolute;
  top: 50%;
  right: 16px;
  width: 22px;
  height: 22px;
  margin-top: -11px;
  border: 2px solid var(--color-line);
  border-top-color: var(--color-accent);
  border-radius: 50%;
  opacity: 0;
  pointer-events: none;
}
.search-overlay.is-loading .search-overlay__spinner {
  opacity: 1;
  animation: ulia-spin 0.7s linear infinite;
}
@keyframes ulia-spin {
  to { transform: rotate(360deg); }
}

.search-overlay__hint {
  display: block;
  margin-top: 0.9rem;
  font-size: 0.78rem;
  letter-spacing: 0.04em;
  color: var(--color-muted-light);
}

.search-overlay__body {
  margin-top: clamp(1.8rem, 4vh, 2.8rem);
}

.search-overlay__suggest {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 0.7rem 0.9rem;
}
.search-overlay__suggest[hidden] {
  display: none;
}
.search-overlay__suggest-label {
  font-size: 0.72rem;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--color-muted);
}
.search-overlay__chips {
  display: flex;
  flex-wrap: wrap;
  gap: 0.6rem;
}
.search-overlay__chip {
  border: 1px solid var(--color-line);
  background: none;
  padding: 0.5rem 1.1rem;
  border-radius: 100px;
  font-family: var(--font-base);
  font-size: 0.9rem;
  color: var(--color-text);
  cursor: pointer;
  transition: border-color var(--transition), color var(--transition), background var(--transition);
}
.search-overlay__chip:hover {
  border-color: var(--color-accent);
  color: var(--color-accent);
}

.search-overlay__results {
  margin-top: 0.4rem;
}
.search-overlay__results.is-visible {
  margin-top: 1.6rem;
}

.search-result-list {
  list-style: none;
  margin: 0;
  padding: 0;
}
.search-result + .search-result {
  border-top: 1px solid var(--color-line-1);
}
.search-result__link {
  display: flex;
  align-items: center;
  gap: 1.1rem;
  padding: 0.9rem 0.25rem;
  color: inherit;
  text-decoration: none;
  transition: padding-left var(--transition);
}
.search-result__link:hover {
  padding-left: 0.8rem;
}
.search-result__media {
  flex: none;
  width: 64px;
  height: 64px;
  overflow: hidden;
  background: var(--color-line-1);
}
.search-result__media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.search-result__body {
  flex: 1 1 auto;
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 0.25rem;
}
.search-result__title {
  font-family: var(--font-display);
  font-size: 1.15rem;
  line-height: 1.2;
  color: var(--color-ink);
}
.search-result__price {
  font-size: 0.92rem;
  color: var(--color-muted);
}
.search-result__price ins {
  text-decoration: none;
  color: var(--color-accent);
}
.search-result__price del {
  opacity: 0.6;
  margin-right: 0.4rem;
}
.search-result__arrow {
  flex: none;
  color: var(--color-muted-light);
  opacity: 0;
  transform: translateX(-6px);
  transition: opacity var(--transition), transform var(--transition), color var(--transition);
}
.search-result__link:hover .search-result__arrow {
  opacity: 1;
  transform: translateX(0);
  color: var(--color-accent);
}

.search-result-empty {
  margin: 0;
  padding: 1.4rem 0;
  font-family: var(--font-display);
  font-size: 1.2rem;
  color: var(--color-muted);
}

.search-overlay__all {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  margin-top: 1.4rem;
  font-size: 0.82rem;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--color-accent);
  text-decoration: none;
  transition: gap var(--transition);
}
.search-overlay__all:hover {
  gap: 0.85rem;
}

/* Тонкий индикатор загрузки поверх панели */
.search-overlay__panel::after {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  height: 2px;
  background: linear-gradient(90deg, transparent, var(--color-accent), transparent);
  transform: translateX(-100%);
  opacity: 0;
}
.search-overlay.is-loading .search-overlay__panel::after {
  opacity: 1;
  animation: ulia-search-bar 1s linear infinite;
}
@keyframes ulia-search-bar {
  from { transform: translateX(-100%); }
  to { transform: translateX(100%); }
}

body.search-open {
  overflow: hidden;
}

/* Enquire — модальная форма запроса цены (товары без цены) --- */
.product-summary__price--request {
  color: var(--color-muted);
  font-style: italic;
}

.ulia-enquire {
  background: var(--color-ink);
}
.ulia-enquire:hover:not(:disabled) {
  background: var(--color-accent);
}

.enquire-modal {
  position: fixed;
  inset: 0;
  z-index: 1400;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: var(--gutter);
  visibility: hidden;
  pointer-events: none;
}
.enquire-modal.is-open {
  visibility: visible;
  pointer-events: auto;
}

.enquire-modal__backdrop {
  position: absolute;
  inset: 0;
  background: rgba(12, 10, 9, 0.45);
  opacity: 0;
  transition: opacity 0.35s ease;
}
.enquire-modal.is-open .enquire-modal__backdrop {
  opacity: 1;
  -webkit-backdrop-filter: blur(4px);
  backdrop-filter: blur(4px);
}

.enquire-modal__panel {
  position: relative;
  width: 100%;
  max-width: 460px;
  max-height: 100%;
  overflow-y: auto;
  padding: clamp(2rem, 5vw, 3rem);
  background: var(--color-bg);
  box-shadow: 0 24px 64px rgba(12, 10, 9, 0.22);
  transform: translateY(18px);
  opacity: 0;
  transition: transform 0.4s cubic-bezier(0.22, 1, 0.36, 1), opacity 0.4s ease;
}
.enquire-modal.is-open .enquire-modal__panel {
  transform: translateY(0);
  opacity: 1;
}

.enquire-modal__close {
  position: absolute;
  top: 1rem;
  right: 1rem;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 40px;
  height: 40px;
  border: 0;
  background: none;
  color: var(--color-ink);
  cursor: pointer;
  opacity: 0.7;
  transition: opacity var(--transition);
}
.enquire-modal__close:hover {
  opacity: 1;
}

.enquire-modal__eyebrow {
  display: block;
  margin-bottom: 0.4rem;
  color: var(--color-muted);
  font-size: 0.75rem;
  letter-spacing: 0.14em;
  text-transform: uppercase;
}
.enquire-modal__title {
  margin: 0 0 0.4rem;
  font-size: 1.6rem;
}
.enquire-modal__product {
  margin: 0 0 1.5rem;
  color: var(--color-accent);
  font-size: 1rem;
}

.enquire-modal__field {
  display: block;
  margin-bottom: 1.1rem;
}
.enquire-modal__label {
  display: block;
  margin-bottom: 0.4rem;
  font-size: 0.85rem;
  color: var(--color-text);
}
.enquire-modal__field input,
.enquire-modal__field textarea {
  width: 100%;
  padding: 0.75rem 0.9rem;
  border: 1px solid var(--color-line);
  border-radius: var(--radius);
  background: var(--color-bg);
  color: var(--color-text);
  font: inherit;
  transition: border-color var(--transition);
}
.enquire-modal__field input:focus,
.enquire-modal__field textarea:focus {
  outline: none;
  border-color: var(--color-accent);
}
.enquire-modal__field textarea {
  resize: vertical;
}

.enquire-modal__submit {
  margin-top: 0.5rem;
}
.enquire-modal__form.is-sending .enquire-modal__submit {
  opacity: 0.7;
  pointer-events: none;
}

.enquire-modal__status {
  margin: 1rem 0 0;
  font-size: 0.9rem;
}
.enquire-modal__status.is-error {
  color: #b3261e;
}
.enquire-modal__status.is-success {
  color: var(--color-accent);
}

@media (max-width: 640px) {
  .search-overlay__panel {
    min-height: 100%;
  }
  .search-overlay__inner {
    padding-top: clamp(3.5rem, 12vh, 6rem);
  }
  .search-overlay__suggest {
    align-items: flex-start;
    flex-direction: column;
  }
}

/* 14c. WooCommerce notices → фирменный стиль -------------- */
/* Сбрасываем дефолтный вид Woo (серый блок, синяя полоса, иконка-глиф). */
.woocommerce-info,
.woocommerce-message,
.woocommerce-error,
ul.woocommerce-error {
  position: relative;
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 0.4rem 1rem;
  margin: 0 0 1.5rem;
  padding: 1.05rem 1.35rem;
  list-style: none;
  border: 0;
  border-left: 2px solid var(--color-accent);
  border-radius: 0;
  background: var(--color-line-1);
  color: var(--color-ink);
  font-family: var(--font-base);
  font-size: 0.95rem;
  line-height: 1.55;
}
.woocommerce-info::before,
.woocommerce-message::before,
.woocommerce-error::before {
  content: none !important;
}
.woocommerce-error {
  border-left-color: #a8432f;
  color: #7a2c1f;
}
.woocommerce-error li {
  list-style: none;
  margin: 0;
}
/* Кнопка-действие внутри уведомления (View cart / Update и т.п.). */
.woocommerce-info .button,
.woocommerce-message .button {
  margin-left: auto;
  padding: 0.55rem 1.2rem;
  border: 1px solid currentColor;
  border-radius: 0;
  background: none;
  color: inherit;
  font-size: 0.78rem;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  transition: color var(--transition), background var(--transition), border-color var(--transition);
}
.woocommerce-info .button:hover,
.woocommerce-message .button:hover {
  background: var(--color-accent);
  border-color: var(--color-accent);
  color: #fff;
}

/* Пустой результат каталога/поиска (наш loop/no-products-found.php). */
.wc-empty {
  padding: clamp(2.5rem, 7vw, 5rem) 0;
  text-align: center;
}
.wc-empty__text {
  margin: 0 0 1.4rem;
  font-family: var(--font-display);
  font-size: clamp(1.3rem, 3vw, 1.75rem);
  color: var(--color-muted);
}
.wc-empty__link {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  font-size: 0.82rem;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--color-accent);
  text-decoration: none;
  transition: gap var(--transition);
}
.wc-empty__link:hover {
  gap: 0.85rem;
}

/* 15. Checkout -------------------------------------------- */
:root {
  /* Акцент бренда — чтобы кнопка оплаты читалась как активная, а не «disabled». */
  --checkout-pay: var(--color-accent);
  --checkout-pay-dark: var(--color-accent-dark);
  --checkout-field-border: #d9d6d4;
}

/* Прячем дефолтный заголовок Woo и нотисы-обёртку на checkout. */

.woocommerce-checkout-page .woocommerce-notices-wrapper:empty {
  display: none;
}
/* Уведомления checkout — по ширине сетки, а не во всю страницу. */
.woocommerce-checkout-page .woocommerce-notices-wrapper,
.woocommerce-checkout-page > .woocommerce-error,
.woocommerce-checkout-page > .woocommerce-info,
.woocommerce-checkout-page > .woocommerce-message {
  max-width: var(--container);
  margin-inline: auto;
}

.ulia-checkout {
  margin-block: clamp(1.5rem, 4vw, 3rem);
}
.ulia-checkout__grid {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 500px;
  align-items: start;
  gap: 24px;
  max-width: var(--container);
}

/* Секции левой колонки */
.checkout-section {
  padding-block: 1.75rem;
  border-top: 1px solid var(--color-line-1);
}
.checkout-account {
  padding-top: 0;
  border-top: 0;
}
.checkout-section__head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 1rem;
}
.checkout-section__title {
  margin: 0 0 1.1rem;
  font-family: var(--font-display);
  font-size: 1.5rem;
  font-weight: 400;
  color: var(--color-ink);
}
.checkout-section__head .checkout-section__title {
  margin-bottom: 1.1rem;
}
.checkout-account__signin {
  font-size: 0.875rem;
  text-transform: uppercase;
  color: var(--color-ink);
  text-decoration: underline;
  text-underline-offset: 3px;
}
.checkout-account__signin:hover {
  color: var(--color-accent);
}

/* Поля Woo внутри секций */
.ulia-checkout .form-row {
  margin: 0 0 1rem;
  padding: 0;
}
.checkout-section .form-row > label {
  display: block;
  margin-bottom: 0.4rem;
  font-size: 0.75rem;
  text-transform: uppercase;
  color: var(--color-muted);
}
.checkout-section .form-row > label .optional {
  text-transform: none;
  color: var(--color-muted-light);
}
.checkout-section .form-row .required {
  color: var(--color-accent);
  text-decoration: none;
}
.ulia-checkout .woocommerce-input-wrapper {
  display: block;
  width: 100%;
}
.ulia-checkout input[type="text"],
.ulia-checkout input[type="email"],
.ulia-checkout input[type="tel"],
.ulia-checkout input[type="password"],
.ulia-checkout select,
.ulia-checkout .select2-container .select2-selection {
  width: 100%;
  height: 48px;
  padding: 0 1rem;
  border: 1px solid var(--checkout-field-border);
  border-radius: 2px;
  background: #fff;
  font-family: var(--font-base);
  font-size:1rem;
  color: var(--color-ink);
}
.ulia-checkout input::placeholder {
  color: var(--color-muted-light);
}
.ulia-checkout input:focus,
.ulia-checkout select:focus {
  outline: none;
  border-color: var(--color-ink);
}
/* select2 (страна) — высота/рамка как у инпутов */
.ulia-checkout .select2-container .select2-selection--single {
  display: flex;
  align-items: center;
}
.ulia-checkout .select2-container--default .select2-selection--single .select2-selection__rendered {
  padding: 0;
  line-height: normal;
  color: var(--color-ink);
}
.ulia-checkout .select2-container--default .select2-selection--single .select2-selection__arrow {
  height: 46px;
  right: 6px;
}

/* Адресный блок — города/имена в две колонки */
.checkout-delivery__address {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0 1rem;
}
.checkout-delivery__address .form-row-wide,
.checkout-delivery__address .form-row {
  grid-column: 1 / -1;
}
.checkout-delivery__address .form-row-first {
  grid-column: 1;
}
.checkout-delivery__address .form-row-last {
  grid-column: 2;
}
.checkout-delivery.is-address-hidden .checkout-delivery__address {
  display: none;
}

/* Чекбоксы Ulía */
.checkout-check {
  display: flex;
  align-items: center;
  gap: 0.6rem;
  margin-top: 0.4rem;
  font-size: 1rem;
  color: var(--color-text);
  cursor: pointer;
}
.checkout-check input[type="checkbox"] {
  width: 18px;
  height: 18px;
  margin: 0;
  accent-color: var(--color-accent);
  flex: 0 0 auto;
}
.checkout-check--save {
  margin: 0 0 1.2rem;
}

/* Способ доставки */
.checkout-shipping__list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
}
.checkout-shipping__item {
  display: flex;
  align-items: center;
  gap: 0.6rem;
  padding: 0.85rem 1rem;
  border: 1px solid var(--checkout-field-border);
  border-radius: 2px;
}
.checkout-shipping__item label {
  margin: 0;
  font-size: 1rem;
}
.checkout-shipping__empty {
  margin: 0;
  font-size: 1rem;
  color: var(--color-muted);
}

/* Payment / Pay button */
.checkout-payment #payment {
  background: transparent;
  padding: 0;
  border-radius: 0;
}
.checkout-payment #payment ul.payment_methods {
  list-style: none;
  margin: 0 0 1.2rem;
  padding: 0;
  border: 0;
}
.checkout-payment #payment ul.payment_methods li {
  margin-bottom: 0.6rem;
}
.checkout-payment #payment .payment_box {
  background: #faf9f8;
  border-radius: 2px;
  margin: 0.6rem 0 0;
  padding: 1rem;
  font-size: 1rem;
}
.checkout-payment #payment .payment_box::before {
  display: none;
}
.checkout-payment #place_order {
  display: block;
  width: 100%;
  height: 56px;
  margin-top: 0.5rem;
  border: 0;
  border-radius: 2px;
  background: var(--checkout-pay);
  color: #fff;
  font-size: 1rem;
  text-transform: uppercase;
  cursor: pointer;
  transition: background var(--transition);
}
.checkout-payment #place_order:hover {
  background: var(--checkout-pay-dark);
}
.checkout-payment .woocommerce-terms-and-conditions-wrapper {
  margin-bottom: 1rem;
  font-size: 0.875rem;
}

/* ---- Правая колонка: Cart ---- */
.ulia-checkout__aside {
  position: sticky;
  top: calc(var(--header-h) + 1rem);
}
.ulia-order {
  border: 1px solid var(--color-line-1);
  border-radius: 2px;
  padding: 1.6rem 1.5rem;
  background: #fff;
}
.ulia-order__title {
  margin: 0 0 1.2rem;
  font-family: var(--font-display);
  font-size: 1.5rem;
  font-weight: 400;
  color: var(--color-ink);
}
.ulia-order__items {
  display: flex;
  flex-direction: column;
  gap: 1.1rem;
}
.ulia-order__items.is-scrollable {
  position: relative;
  max-height: 320px;
  overflow-y: auto;
  padding-right: 0.4rem;
}
.ulia-order-item {
  display: grid;
  grid-template-columns: 100px 1fr;
  gap: 0.9rem;
  align-items: start;
}
.ulia-order-item__media {
  position: relative;
  width: 100px;
  height: 100px;
  background: #f6f4f2;
}
.ulia-order-item__media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.ulia-order-item__qty {
  position: absolute;
  top: 0;
  left: 0;
  z-index: 2;
  min-width: 20px;
  height: 20px;
  padding: 0;
  font-weight:600;
  text-align: center;
  display: flex;
  align-items: center;
  justify-content: center;
  background: #F1F1F1;
  color: var(--color-ink);
  font-size: 0.75rem;
  line-height: 1;
}
.ulia-order-item__body {
  display: flex;
  flex-direction: column;
  gap: 0.15rem;
  min-width: 0;
}
.ulia-order-item__name {
  font-size: 1.25rem;
  font-weight: 500;
  color: var(--color-ink);
  line-height: 1.3;
}
.ulia-order-item__meta {
  font-size: 1rem;
  color: var(--color-muted);
}
.ulia-order-item__meta p {
  margin: 0;
}
.ulia-order-item__price {
  margin-top: 0.25rem;
  font-size: 1em;
  font-weight: 500;
  color: var(--color-ink);
}
.ulia-order__scroll-hint {
  position: sticky;
  bottom: 0;
  align-self: center;
  margin-top: 0.2rem;
  padding: 0.3rem 0.8rem;
  border-radius: 0;
  background: rgba(12, 10, 9, 0.85);
  color: #fff;
  font-size: 0.75rem;
  white-space: nowrap;
}

/* Discount */
.checkout-discount {
  margin-top: 1.4rem;
  padding-top: 1.4rem;
  border-top: 1px solid var(--color-line-1);
}
.checkout-discount__label {
  display: block;
  margin-bottom: 0.5rem;
  font-size: 0.75rem;
  text-transform: uppercase;
  color: var(--color-muted);
}
.checkout-discount__row {
  display: flex;
  gap: 0.6rem;
}
.checkout-discount__input {
  flex: 1 1 auto;
  height: 44px;
  padding: 0 0.9rem;
  border: 1px solid var(--checkout-field-border);
  border-radius: 2px;
  font-size: 1rem;
}
.checkout-discount__input:focus {
  outline: none;
  border-color: var(--color-ink);
}
.checkout-discount__apply {
  flex: 0 0 auto;
  padding: 0 1.4rem;
  border: 0;
  border-radius: 2px;
  background: var(--checkout-pay);
  color: #fff;
  font-size: 0.875rem;
  cursor: pointer;
  transition: background var(--transition);
}
.checkout-discount__apply:hover {
  background: var(--checkout-pay-dark);
}
.checkout-discount__apply.is-loading {
  opacity: 0.6;
  pointer-events: none;
}
.checkout-discount__applied {
  list-style: none;
  margin: 0 0 0.7rem;
  padding: 0;
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
}
.checkout-discount__chip {
  display: inline-flex;
  align-items: center;
  gap: 0.4rem;
  padding: 0.3rem 0.6rem;
  border-radius: 2px;
  background: #f1efed;
  font-size: 0.875rem;
}
.checkout-discount__remove {
  border: 0;
  background: none;
  font-size: 1rem;
  line-height: 1;
  color: var(--color-muted);
  cursor: pointer;
}
.checkout-discount__remove:hover {
  color: var(--color-accent);
}
.checkout-discount__msg {
  margin: 0.5rem 0 0;
  min-height: 1em;
  font-size: 0.875rem;
  color: var(--color-muted);
}
.checkout-discount__msg.is-error {
  color: #b3261e;
}

/* Totals */
.ulia-order__totals {
  margin-top: 1.4rem;
  padding-top: 1.3rem;
  border-top: 1px solid var(--color-line-1);
  display: flex;
  flex-direction: column;
  gap: 0.7rem;
}
.ulia-order__row {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 1rem;
  font-size: 1rem;
  color: var(--color-text);
}
.ulia-order__row-sub {
  margin-left: 0.4rem;
  color: var(--color-muted-light);
}
.ulia-order__row--discount .ulia-order__row-value {
  color: var(--color-accent);
}
.ulia-order__row--total {
  margin-top: 0.4rem;
  font-size: 1.25rem;
  font-weight: 500;
  color: var(--color-ink);
}

/* Адаптив */
@media (max-width: 900px) {
  .ulia-checkout__grid {
    grid-template-columns: 1fr;
  }
  .ulia-checkout__aside {
    position: static;
    order: -1;
  }
}

/* Checkout рендерится через page.php — прячем заголовок «Checkout» и обложку. */
.woocommerce-checkout .entry__header,
.woocommerce-checkout .entry__thumb {
  display: none;
}
.woocommerce-checkout .entry__content {
  max-width: none;
}
.woocommerce-checkout .container > .entry--page {
  margin: 0;
}

/* 15b. Order flow: order-received / order details / order-pay --------- */

/* Заголовок «Order received» скрыт общим правилом checkout — возвращаем. */
.woocommerce-order-received .entry__header {
  display: block;
  margin-top: clamp(1.5rem, 5vw, 3.5rem);
  margin-bottom: 2rem;
  text-align: center;
}
.woocommerce-order-received .entry__title {
  font-family: var(--font-display);
  font-weight: 400;
  text-transform: uppercase;
  font-size: clamp(2rem, 5vw, 3rem);
  color: var(--color-ink);
}

.woocommerce-order,
.woocommerce-order-details,
.woocommerce-customer-details,
.woocommerce-verify-email {
  max-width: 860px;
  margin-inline: auto;
}

/* Блок подтверждения (замена дефолтного уведомления Woo) */
.ulia-thankyou__confirm {
  text-align: center;
  margin: 0 0 2.25rem;
  padding: clamp(1.5rem, 4vw, 2.75rem) 1.5rem;
}
.ulia-thankyou__badge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 3.4rem;
  height: 3.4rem;
  margin-bottom: 1.25rem;
  border-radius: 50%;
  background: var(--color-accent);
  color: #fff;
}
.ulia-thankyou__badge--failed {
  background: #a8432f;
  font-family: var(--font-display);
  font-size: 1.7rem;
}
.ulia-thankyou__headline {
  margin: 0 0 0.7rem;
  font-family: var(--font-display);
  font-weight: 400;
  font-size: clamp(1.6rem, 3.5vw, 2.1rem);
  line-height: 1.2;
  color: var(--color-ink);
}
.ulia-thankyou__lead {
  max-width: 30rem;
  margin: 0 auto;
  font-size: 1rem;
  line-height: 1.6;
  color: var(--color-muted);
}
.ulia-thankyou__lead strong {
  font-weight: 400;
  color: var(--color-ink);
}
.ulia-thankyou__actions {
  margin-top: 1.75rem;
}

/* Сводка заказа — стабильная сетка ячеек с разделителями */
.ulia-thankyou__meta {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  margin: 0 0 2.75rem;
  border: 1px solid var(--color-line);
  background: #fbfaf9;
}
.ulia-thankyou__cell {
  display: flex;
  flex-direction: column;
  gap: 0.55rem;
  padding: 1.6rem 1.4rem;
  text-align: center;
  border-left: 1px solid var(--color-line-1);
}
.ulia-thankyou__cell:first-child {
  border-left: 0;
}
.ulia-thankyou__k {
  font-size: 0.66rem;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--color-muted);
}
.ulia-thankyou__v {
  font-family: var(--font-display);
  font-size: 1.25rem;
  color: var(--color-ink);
  overflow-wrap: anywhere;
}

/* Таблица позиций + итоги */
.woocommerce-order-details,
.woocommerce-customer-details {
  margin-top: 2.5rem;
}
.woocommerce-order-details__title,
.woocommerce-customer-details h2,
.woocommerce-column__title {
  margin: 0 0 1rem;
  font-family: var(--font-display);
  font-weight: 400;
  font-size: 1.6rem;
  color: var(--color-ink);
}
.woocommerce-table--order-details {
  width: 100%;
  border-collapse: collapse;
  font-size: 1rem;
}
.woocommerce-table--order-details th,
.woocommerce-table--order-details td {
  padding: 0.85rem 0;
  border-bottom: 1px solid var(--color-line-1);
  text-align: left;
  vertical-align: top;
}
.woocommerce-table--order-details thead th {
  font-family: var(--font-base);
  font-size: 0.7rem;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  font-weight: 400;
  color: var(--color-muted);
}
.woocommerce-table--order-details th:last-child,
.woocommerce-table--order-details td:last-child {
  text-align: right;
}
.woocommerce-table--order-details tfoot th {
  font-weight: 400;
  color: var(--color-muted);
}
.woocommerce-table--order-details tfoot tr:last-child th,
.woocommerce-table--order-details tfoot tr:last-child td {
  font-family: var(--font-display);
  font-size: 1.25rem;
  color: var(--color-ink);
}
.woocommerce-table--order-details .wc-item-meta {
  margin: 0.3rem 0 0;
  padding: 0;
  list-style: none;
  font-size: 0.85rem;
  color: var(--color-muted);
}
.woocommerce-table--order-details .wc-item-meta li { margin: 0; }

/* Адреса покупателя */
.woocommerce-customer-details .woocommerce-columns--addresses {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 2rem;
  margin: 0;
}
.woocommerce-customer-details address {
  font-style: normal;
  font-size: 1rem;
  line-height: 1.7;
  color: var(--color-ink);
  border: 0;
  padding: 0;
  border-radius: 0;
}
.woocommerce-customer-details--phone,
.woocommerce-customer-details--email {
  margin: 0.4rem 0 0;
  color: var(--color-muted);
}

/* Кнопки (order-again, действия заказа) */
.woocommerce-order .button,
.woocommerce-order-details .button,
.order-again .button {
  display: inline-block;
  height: 48px;
  line-height: 48px;
  padding: 0 1.6rem;
  border: 0;
  border-radius: 2px;
  background: var(--color-ink);
  color: #fff;
  font-size: 0.75rem;
  letter-spacing: 0.05em;
  text-transform: uppercase;
  transition: background var(--transition);
}
.woocommerce-order .button:hover,
.woocommerce-order-details .button:hover,
.order-again .button:hover {
  background: var(--color-accent);
}

/* Гейт «Verify email address» (просмотр заказа гостем) */
.woocommerce-verify-email {
  margin-block: 1.5rem 3rem;
  max-width: 440px;
}
.woocommerce-verify-email .form-row {
  margin: 0 0 1rem;
  padding: 0;
}
.woocommerce-verify-email label {
  display: block;
  margin-bottom: 0.4rem;
  font-size: 0.7rem;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--color-muted);
}
.woocommerce-verify-email input[type="email"] {
  width: 100%;
  height: 48px;
  padding: 0 1rem;
  border: 1px solid var(--checkout-field-border);
  border-radius: 2px;
  background: #fff;
  font-family: var(--font-base);
  font-size: 1rem;
  color: var(--color-ink);
}
.woocommerce-verify-email input[type="email"]:focus {
  outline: none;
  border-color: var(--color-ink);
}
.woocommerce-verify-email button {
  height: 48px;
  padding: 0 1.6rem;
  border: 0;
  border-radius: 2px;
  background: var(--checkout-pay);
  color: #fff;
  text-transform: uppercase;
  font-size: 0.8rem;
  cursor: pointer;
  transition: background var(--transition);
}
.woocommerce-verify-email button:hover {
  background: var(--checkout-pay-dark);
}

/* Страница дооплаты (order-pay) — обёрнута в .ulia-order-pay (form-pay.php) */
.ulia-order-pay {
  max-width: 860px;
  margin: clamp(1.5rem, 4vw, 3rem) auto;
}
.ulia-order-pay .shop_table {
  width: 100%;
  border-collapse: collapse;
  margin: 0 0 1.75rem;
  font-size: 1rem;
}
.ulia-order-pay .shop_table th,
.ulia-order-pay .shop_table td {
  padding: 0.85rem 0;
  border-bottom: 1px solid var(--color-line-1);
  text-align: left;
}
.ulia-order-pay .shop_table thead th {
  font-size: 0.7rem;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  font-weight: 400;
  color: var(--color-muted);
}
.ulia-order-pay .shop_table .product-total,
.ulia-order-pay .shop_table th:last-child,
.ulia-order-pay .shop_table td:last-child {
  text-align: right;
}
.ulia-order-pay .shop_table tfoot th {
  color: var(--color-muted);
  font-weight: 400;
}
.ulia-order-pay .shop_table tfoot tr:last-child th,
.ulia-order-pay .shop_table tfoot tr:last-child td {
  font-family: var(--font-display);
  font-size: 1.2rem;
  color: var(--color-ink);
}
.ulia-order-pay #payment {
  background: transparent;
  padding: 0;
}
.ulia-order-pay #payment ul.payment_methods {
  list-style: none;
  margin: 0 0 1.2rem;
  padding: 0;
  border: 0;
}
.ulia-order-pay #payment ul.payment_methods li {
  margin-bottom: 0.6rem;
}
.ulia-order-pay #payment .payment_box {
  background: #faf9f8;
  border-radius: 2px;
  margin: 0.6rem 0 0;
  padding: 1rem;
  font-size: 1rem;
}
.ulia-order-pay #payment .payment_box::before {
  display: none;
}
.ulia-order-pay #place_order {
  display: block;
  width: 100%;
  height: 56px;
  margin-top: 0.5rem;
  border: 0;
  border-radius: 2px;
  background: var(--checkout-pay);
  color: #fff;
  font-size: 1rem;
  text-transform: uppercase;
  cursor: pointer;
  transition: background var(--transition);
}
.ulia-order-pay #place_order:hover {
  background: var(--checkout-pay-dark);
}

@media (max-width: 640px) {
  .woocommerce-customer-details .woocommerce-columns--addresses {
    grid-template-columns: 1fr;
  }
  .ulia-thankyou__meta {
    grid-template-columns: 1fr 1fr;
  }
  .ulia-thankyou__cell {
    border-left: 1px solid var(--color-line-1);
    border-top: 1px solid var(--color-line-1);
  }
  .ulia-thankyou__cell:nth-child(2n+1) {
    border-left: 0;
  }
  .ulia-thankyou__cell:nth-child(-n+2) {
    border-top: 0;
  }
}

/* 15c. Cart (классический шорткод, override поверх стилей Woo) --------- */
.woocommerce-cart .entry__thumb {
  display: none;
}

/* Таблица корзины */
.woocommerce-cart table.cart {
  border: 0;
  border-collapse: collapse;
}
.woocommerce-cart table.cart thead th {
  padding: 0 0.75rem 1rem 0;
  text-align: left;
  font-family: var(--font-base);
  font-size: 0.7rem;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  font-weight: 400;
  color: var(--color-muted);
  border-bottom: 1px solid var(--color-line);
}
.woocommerce-cart table.cart td {
  padding: 1.25rem 0.75rem;
  border-top: 0;
  border-bottom: 1px solid var(--color-line-1);
  vertical-align: middle;
}
.woocommerce-cart table.cart td.product-remove {
  padding-left: 0;
  width: 2rem;
}
.woocommerce-cart table.cart td.product-subtotal,
.woocommerce-cart table.cart th.product-subtotal {
  padding-right: 0;
  text-align: right;
}
.woocommerce-cart td.product-thumbnail img {
  width: 72px;
  height: auto;
}
.woocommerce-cart td.product-name a {
  color: var(--color-ink);
  font-size: 1.05rem;
}
.woocommerce-cart td.product-name a:hover {
  color: var(--color-accent);
}
.woocommerce-cart td.product-subtotal {
  font-weight: 500;
  color: var(--color-ink);
}
.woocommerce-cart a.remove {
  color: var(--color-muted);
  font-size: 1.2rem;
  line-height: 1;
}
.woocommerce-cart a.remove:hover {
  background: transparent;
  color: var(--color-accent);
}

/* Количество */
.woocommerce-cart .quantity input.qty {
  height: 44px;
  width: 68px;
  padding: 0 0.4rem;
  border: 1px solid var(--checkout-field-border);
  border-radius: 2px;
  background: #fff;
  font-family: var(--font-base);
  font-size: 1rem;
  color: var(--color-ink);
}

/* Строка действий: купон + обновить */
.woocommerce-cart td.actions {
  padding: 1.25rem 0 0;
  border: 0;
}
.woocommerce-cart td.actions .coupon input#coupon_code {
  height: 48px;
  padding: 0 1rem;
  border: 1px solid var(--checkout-field-border);
  border-radius: 2px;
  background: #fff;
  font-family: var(--font-base);
  font-size: 1rem;
  vertical-align: middle;
}
.woocommerce-cart td.actions .button,
.woocommerce-cart td.actions button {
  height: 48px;
  padding: 0 1.5rem;
  border: 0;
  border-radius: 2px;
  background: var(--color-ink);
  color: #fff;
  text-transform: uppercase;
  font-size: 0.75rem;
  letter-spacing: 0.05em;
  font-weight: 400;
  cursor: pointer;
  transition: background var(--transition);
}
.woocommerce-cart td.actions .button:hover,
.woocommerce-cart td.actions button:hover {
  background: var(--color-accent);
}
.woocommerce-cart td.actions button[name="apply_coupon"] {
  background: var(--checkout-pay);
}
.woocommerce-cart td.actions button[name="apply_coupon"]:hover {
  background: var(--checkout-pay-dark);
}

/* Итоги корзины */
.woocommerce-cart .cart_totals h2 {
  margin: 0 0 1rem;
  font-family: var(--font-display);
  font-weight: 400;
  font-size: 1.6rem;
  color: var(--color-ink);
}
.woocommerce-cart .cart_totals table {
  border: 1px solid var(--color-line-1);
  border-collapse: collapse;
}
.woocommerce-cart .cart_totals table th,
.woocommerce-cart .cart_totals table td {
  padding: 0.9rem 1.1rem;
  border-bottom: 1px solid var(--color-line-1);
  border-top: 0;
  font-size: 1rem;
  font-weight: 400;
}
.woocommerce-cart .cart_totals table th {
  text-align: left;
  color: var(--color-muted);
}
.woocommerce-cart .cart_totals table td {
  text-align: right;
  color: var(--color-ink);
}
.woocommerce-cart .cart_totals .order-total th,
.woocommerce-cart .cart_totals .order-total td {
  font-family: var(--font-display);
  font-size: 1.25rem;
  color: var(--color-ink);
}
.woocommerce-cart .wc-proceed-to-checkout {
  padding: 1rem 0 0;
}
.woocommerce-cart .wc-proceed-to-checkout a.checkout-button {
  display: block;
  height: 56px;
  line-height: 56px;
  padding: 0;
  text-align: center;
  background: var(--checkout-pay);
  color: #fff;
  border-radius: 2px;
  text-transform: uppercase;
  font-size: 1rem;
  font-weight: 400;
  transition: background var(--transition);
}
.woocommerce-cart .wc-proceed-to-checkout a.checkout-button:hover {
  background: var(--checkout-pay-dark);
}

/* Пустая корзина */
.woocommerce-cart .cart-empty {
  font-family: var(--font-display);
  font-size: 1.5rem;
  color: var(--color-ink);
}
.woocommerce-cart .return-to-shop {
  margin-top: 1.25rem;
}
.woocommerce-cart .return-to-shop a.button {
  display: inline-block;
  height: 48px;
  line-height: 48px;
  padding: 0 1.6rem;
  background: var(--color-ink);
  color: #fff;
  border-radius: 2px;
  text-transform: uppercase;
  font-size: 0.75rem;
  letter-spacing: 0.05em;
  transition: background var(--transition);
}
.woocommerce-cart .return-to-shop a.button:hover {
  background: var(--color-accent);
}

/* 16. Contact Form 7 -------------------------------------- */
.ulia-form {
  max-width: 560px;
  margin-inline: auto;
}
.ulia-form__row {
  margin: 0 0 1.1rem;
}
.wpcf7 label {
  display: block;
  font-size: 0.75rem;
  text-transform: uppercase;
  color: var(--color-muted);
}
.wpcf7 .wpcf7-form-control-wrap {
  display: block;
  margin-top: 0.4rem;
}
.wpcf7 input[type="text"],
.wpcf7 input[type="email"],
.wpcf7 textarea {
  width: 100%;
  padding: 0 1rem;
  height: 48px;
  border: 1px solid var(--checkout-field-border, #d9d6d4);
  border-radius: 2px;
  background: #fff;
  font-family: var(--font-base);
  font-size: 1rem;
  color: var(--color-ink);
}
.wpcf7 textarea {
  height: auto;
  min-height: 140px;
  padding: 0.85rem 1rem;
  resize: vertical;
}
.wpcf7 input::placeholder,
.wpcf7 textarea::placeholder {
  color: var(--color-muted-light);
}
.wpcf7 input:focus,
.wpcf7 textarea:focus {
  outline: none;
  border-color: var(--color-ink);
}
.wpcf7 .wpcf7-submit {
  display: block;
  width: 100%;
  height: 56px;
  margin-top: 0.5rem;
  border: 0;
  border-radius: 2px;
  background: var(--color-ink);
  color: #fff;
  font-size: 1rem;
  text-transform: uppercase;
  cursor: pointer;
  transition: background var(--transition);
}
.wpcf7 .wpcf7-submit:hover {
  background: var(--color-accent);
}
.wpcf7 .wpcf7-spinner {
  margin: 0 auto;
}
/* Валидация / ответы CF7 */
.wpcf7 .wpcf7-not-valid-tip {
  margin-top: 0.35rem;
  font-size: 1rem;
  color: #b3261e;
}
.wpcf7 .wpcf7-not-valid {
  border-color: #b3261e;
}
.wpcf7-response-output {
  margin: 1rem 0 0 !important;
  padding: 0.85rem 1rem !important;
  border-radius: 2px;
  font-size: 1rem;
}
.wpcf7 form.invalid .wpcf7-response-output,
.wpcf7 form.unaccepted .wpcf7-response-output {
  border-color: #b3261e;
  color: #b3261e;
}
.wpcf7 form.sent .wpcf7-response-output {
  border-color: var(--color-accent);
  color: var(--color-accent);
}

/* 17. Contact page ---------------------------------------- */
:root {
  --contact-max: 1320px;
}

/* Hero-баннер под overlay-шапкой */
.contact-hero {
  position: relative;
  display: flex;
  min-height: clamp(420px, 56vh, 620px);
  background-size: cover;
  background-position: center;
  background-color: #1a1410;
  color: #fff;
}
.contact-hero__overlay {
  position: absolute;
  inset: 0;
  background: linear-gradient(
    180deg,
    rgba(0, 0, 0, 0.3) 0%,
    rgba(0, 0, 0, 0.1) 45%,
    rgba(0, 0, 0, 0.6) 100%
  );
}
.contact-hero__inner {
  position: relative;
  z-index: 2;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  justify-content: flex-end;
  padding-top: calc(var(--header-h) + 2rem);
  padding-bottom: clamp(2.5rem, 7vh, 5rem);
}
.contact-hero__title {
  margin: 0;
  font-family: var(--font-display);
  font-weight: 400;
  text-transform: uppercase;
  font-size: clamp(2rem, 7vw, 3rem);
  line-height: 1.1;
}
.contact-hero__subtitle {
  margin: 1rem 0 0;
  font-size: 1rem;
  font-weight: 500;
  color: rgba(255, 255, 255, 0.85);
}
.contact-hero__scroll {
  position: absolute;
  right: var(--gutter);
  bottom: clamp(1.5rem, 5vh, 3rem);
  z-index: 2;
  display: flex;
  align-items: center;
  gap: 0.5rem;
  font-size: 0.75rem;
  color: rgba(255, 255, 255, 0.8);
}

/* Контент: форма + контакты */
.contact {
  padding-block: clamp(2.5rem, 6vw, 5rem);
}
.contact__grid {
  margin-inline: auto;
  display: grid;
  grid-template-columns: minmax(0, 60%) minmax(0, 38%);
  justify-content: start;
  gap: clamp(2rem, 6vw, 6rem);
  align-items: start;
}
.contact__heading {
  margin: 0 0 1.8rem;
  font-family: var(--font-display);
  font-weight: 400;
  text-transform: uppercase;
  font-size: 2rem;
  color: var(--color-ink);
}

/* Контакты: заголовок на всю ширину, блоки в две колонки */
.contact__details {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 1.8rem 2rem;
}
.contact__details .contact__heading {
  grid-column: 1 / -1;
  margin-bottom: 0;
}

/* Блоки контактных данных */
.contact-block {
  display: flex;
  flex-direction: column;
  margin-bottom: 0;
}
.contact-block__label {
  margin-bottom: 0.5rem;
  font-size: 0.75rem;
  color: var(--color-muted);
}
.contact-block__value {
  font-size: 1rem;
  font-weight: 500;
  color: var(--color-ink);
  line-height: 1.5;
}
a.contact-block__value:hover {
  color: var(--color-accent);
}
.contact-block__note {
  margin-top: 0.4rem;
  font-size: 0.75rem;
  color: var(--color-muted-light);
}

/* Форма на странице контактов (CF7) — переопределяем generic-стиль */
.contact-form .ulia-form {
  max-width: none;
  margin: 0;
}
.contact-form .ulia-form__grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0 1.2rem;
}
.contact-form .wpcf7 .wpcf7-submit {
  width: auto;
  height: auto;
  margin-top: 0.4rem;
  padding: 1rem 2.4rem;
  background: var(--color-accent);
  text-transform: none;
  font-size: 1rem;
}
.contact-form .wpcf7 .wpcf7-submit:hover {
  background: var(--color-accent-dark);
}
.contact-form__hint {
  color: var(--color-muted);
  font-size: 1rem;
}

@media (max-width: 860px) {
  .contact__grid {
    grid-template-columns: 1fr;
  }
  .contact-form .ulia-form__grid {
    grid-template-columns: 1fr;
  }
}
@media (max-width: 560px) {
  .contact__details {
    grid-template-columns: 1fr;
  }
}

/* 18. Auth modal (passwordless OTP) ----------------------- */
.auth-modal {
  position: fixed;
  inset: 0;
  z-index: 1100;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 1.5rem;
  visibility: hidden;
  opacity: 0;
  transition: opacity var(--transition), visibility var(--transition);
}
.auth-modal.is-open {
  visibility: visible;
  opacity: 1;
}
.auth-modal__overlay {
  position: absolute;
  inset: 0;
  background: rgba(12, 10, 9, 0.5);
}
.auth-modal__panel {
  position: relative;
  z-index: 1;
  width: 100%;
  max-width: 480px;
  padding: clamp(2rem, 4vw, 3rem) clamp(1.5rem, 4vw, 3rem);
  background: var(--color-bg);
  box-shadow: 0 24px 64px rgba(12, 10, 9, 0.22);
  transform: translateY(12px);
  transition: transform var(--transition);
}
.auth-modal.is-open .auth-modal__panel {
  transform: translateY(0);
}
.auth-modal__close {
  position: absolute;
  top: 0.8rem;
  right: 1rem;
  border: 0;
  background: none;
  font-size: 1.6rem;
  line-height: 1;
  color: var(--color-muted);
  cursor: pointer;
  transition: color var(--transition);
}
.auth-modal__close:hover {
  color: var(--color-ink);
}

/* Шаги */
.auth-step {
  display: none;
  flex-direction: column;
  text-align: center;
}
.auth-step.is-active {
  display: flex;
}
.auth-modal__title {
  margin: 0 0 1.6rem;
  font-family: var(--font-display);
  font-weight: 400;
  text-transform: uppercase;
  font-size: 2rem;
  color: var(--color-ink);
}
.auth-modal__sub {
  margin: -0.8rem 0 1.6rem;
  font-size: 1rem;
  color: var(--color-muted);
}
.auth-modal__sub span {
  color: var(--color-ink);
  font-weight: 500;
}

/* Поле email */
.auth-field {
  text-align: left;
  margin-bottom: 0.9rem;
}
.auth-field label {
  display: block;
  margin-bottom: 0.45rem;
  font-size: 0.75rem;
  text-transform: uppercase;
  color: var(--color-muted);
}
.auth-field input {
  width: 100%;
  height: 52px;
  padding: 0 1rem;
  border: 1px solid var(--checkout-field-border, #d9d6d4);
  border-radius: 2px;
  background: #faf9f8;
  font-family: var(--font-base);
  font-size: 1rem;
  color: var(--color-ink);
}
.auth-field input::placeholder {
  color: var(--color-muted-light);
}
.auth-field input:focus {
  outline: none;
  border-color: var(--color-ink);
}

/* Чекбокс внутри модалки (используем общий .checkout-check) */
.auth-step .checkout-check {
  text-align: left;
  margin: 0 0 1.4rem;
}

/* Кнопка Continue */
.auth-modal__submit {
  width: 100%;
  height: 56px;
  border: 0;
  border-radius: 2px;
  background: var(--color-accent);
  color: #fff;
  font-size: 1rem;
  text-transform: uppercase;
  cursor: pointer;
  transition: background var(--transition);
}
.auth-modal__submit:hover {
  background: var(--color-accent-dark);
}
.auth-modal__submit.is-loading {
  opacity: 0.65;
  pointer-events: none;
}

/* OTP-инпуты */
.auth-otp {
  display: flex;
  justify-content: center;
  gap: 0.6rem;
  margin-bottom: 1.4rem;
}
.auth-otp__cell {
  width: 52px;
  height: 60px;
  padding: 0;
  text-align: center;
  border: 1px solid var(--checkout-field-border, #d9d6d4);
  border-radius: 2px;
  background: #faf9f8;
  font-size: 1.4rem;
  font-weight: 500;
  color: var(--color-ink);
}
.auth-otp__cell:focus {
  outline: none;
  border-color: var(--color-ink);
  background: #fff;
}
.auth-otp__cell:nth-child(3) {
  margin-right: 0.9rem;
}

/* Сообщения / повторная отправка */
.auth-modal__msg {
  margin: 0 0 1rem;
  min-height: 1em;
  font-size: 0.875rem;
  color: var(--color-muted);
}
.auth-modal__msg.is-error {
  color: #b3261e;
}
.auth-modal__resend {
  margin-top: 1rem;
  border: 0;
  background: none;
  font-size: 0.875rem;
  text-transform: uppercase;
  color: var(--color-ink);
  cursor: pointer;
}
.auth-modal__resend .auth-modal__resend-label {
  text-decoration: underline;
  text-underline-offset: 3px;
}
.auth-modal__resend:disabled {
  color: var(--color-muted-light);
  cursor: default;
}
.auth-modal__resend:disabled .auth-modal__resend-label {
  text-decoration: none;
}
.js-auth-timer {
  margin-left: 0.4rem;
  color: var(--color-muted);
}

@media (max-width: 420px) {
  .auth-otp__cell {
    width: 44px;
    height: 52px;
    font-size: 1.25rem;
  }
}

/* 19. My Account ------------------------------------------ */
/* Прячем заголовок страницы «My account» (рендерится через page.php). */
.woocommerce-account .entry__header,
.woocommerce-account .entry__thumb {
  display: none;
}
.woocommerce-account .entry__content {
  max-width: none;
}

.account {
  margin-block: clamp(1.5rem, 4vw, 3rem);
}
.account__grid {
  display: grid;
  grid-template-columns: 280px minmax(0, 1fr);
  gap: clamp(2rem, 5vw, 5rem);
  align-items: start;
}

/* Карточка пользователя */
.account-card {
  border: 1px solid var(--color-line);
  border-radius: 2px;
  padding: 1.5rem 1.4rem;
  text-align: center;
  margin-bottom: 1.4rem;
}
.account-card__name {
  display: block;
  font-size: 1rem;
  font-weight: 600;
  color: var(--color-ink);
}
.account-card__email {
  display: block;
  margin-top: 0.3rem;
  font-size: 0.875rem;
  color: var(--color-muted);
}
.account-card__change {
  margin-left: 0.4rem;
  color: var(--color-accent);
  text-decoration: underline;
  text-underline-offset: 2px;
}
.account-card__stats {
  list-style: none;
  margin: 1.2rem 0 0;
  padding: 0;
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 0.5rem;
}
.account-card__stats li {
  display: flex;
  flex-direction: column;
  gap: 0.15rem;
}
.account-card__stats b {
  font-size: 1rem;
  font-weight: 600;
  color: var(--color-ink);
}
.account-card__stats span {
  font-size: 0.72rem;
  color: var(--color-muted);
}

/* Меню кабинета */
.account-nav__menu {
  list-style: none;
  margin: 0;
  padding: 0;
}
.account-nav__item a {
  display: block;
  padding: 0.85rem 1.1rem;
  font-size:1rem;
  color: var(--color-text);
  transition: background var(--transition), color var(--transition);
}
.account-nav__item a:hover {
  color: var(--color-accent);
}
.account-nav__item.is-active a {
  background: var(--color-accent);
  color: #fff;
}
.account-nav__item--logout a {
  color: var(--color-muted);
}

/* Order History */
.orders__head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 1rem;
  margin-bottom: 1.4rem;
}
.orders__title {
  margin: 0;
  font-family: var(--font-display);
  font-weight: 400;
  text-transform: uppercase;
  font-size: 2rem;
  color: var(--color-ink);
}
.orders__total {
  font-size:1rem;
  color: var(--color-muted-light);
  white-space: nowrap;
}
.orders__tabs {
  display: flex;
  gap: 0.6rem;
  margin-bottom: 1.6rem;
}
.orders__tab {
  padding: 0.55rem 1.1rem;
  border: 1px solid var(--color-line);
  border-radius: 2px;
  font-size: 1rem;
  color: var(--color-text);
  transition: background var(--transition), color var(--transition), border-color var(--transition);
}
.orders__tab:hover {
  border-color: var(--color-ink);
}
.orders__tab.is-active {
  background: var(--color-accent);
  border-color: var(--color-accent);
  color: #fff;
}
.orders__empty {
  color: var(--color-muted);
}

/* Карточка заказа */
.order-card {
  border: 1px solid var(--color-line);
  border-radius: 2px;
  padding: 1.3rem 1.5rem;
  margin-bottom: 1.2rem;
}
.order-card__head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 1rem;
  margin-bottom: 1rem;
}
.order-card__status {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  font-size: 1rem;
  font-weight: 600;
  color: var(--color-ink);
}
.order-card__status--dot::before {
  content: "";
  width: 9px;
  height: 9px;
  border-radius: 50%;
  background: #d23b3b;
  flex: 0 0 auto;
}
.order-card__date {
  font-size: 0.875rem;
  color: var(--color-muted-light);
  white-space: nowrap;
}
.order-card__items {
  display: flex;
  flex-direction: column;
  gap: 0.9rem;
}
.order-item {
  display: grid;
  grid-template-columns: 48px minmax(0, 1fr) auto;
  gap: 1rem;
  align-items: center;
}
.order-item__media {
  width: 48px;
  height: 48px;
  background: #f6f4f2;
  border-radius: 2px;
  overflow: hidden;
}
.order-item__media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.order-item__body {
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 0.2rem;
}
.order-item__name {
  font-size: 1rem;
  font-weight: 500;
  color: var(--color-ink);
}
.order-item__meta {
  font-size: 0.8rem;
  color: var(--color-muted);
}
.order-item__price {
  font-size: 1rem;
  font-weight: 600;
  color: var(--color-ink);
  white-space: nowrap;
}
.order-card__foot {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  margin-top: 1.1rem;
  padding-top: 1rem;
  border-top: 1px solid var(--color-line-1);
}
.order-card__action {
  font-size: 0.875rem;
  text-transform: uppercase;
  color: var(--color-ink);
  text-decoration: underline;
  text-underline-offset: 3px;
}
.order-card__action:hover {
  color: var(--color-accent);
}
.order-card__total {
  font-size: 1rem;
  color: var(--color-muted);
}
.order-card__total b {
  margin-left: 0.3rem;
  font-weight: 600;
  color: var(--color-ink);
}

/* Гостевой экран кабинета */
.account-login {
  max-width: 460px;
  margin: clamp(2rem, 6vw, 4rem) auto;
  text-align: center;
}
.account-login__title {
  font-family: var(--font-display);
  font-weight: 400;
  text-transform: uppercase;
  font-size: 2rem;
  margin: 0 0 0.8rem;
}
.account-login__text {
  color: var(--color-muted);
  margin: 0 0 1.6rem;
}
.account-login__btn {
  height: 56px;
  padding: 0 2.4rem;
  border: 0;
  border-radius: 2px;
  background: var(--color-accent);
  color: #fff;
  text-transform: uppercase;
  font-size: 1rem;
  cursor: pointer;
  transition: background var(--transition);
}
.account-login__btn:hover {
  background: var(--color-accent-dark);
}

/* Залогиненный аккаунт в хедере */
.site-header__user {
  position: relative;
}
.site-header__user-toggle {
  display: inline-flex;
  align-items: center;
  gap: 0.4rem;
  background: none;
  border: 0;
  cursor: pointer;
  color: inherit;
}
.site-header__user-name {
  font-size: 1rem;
  white-space: nowrap;
}
.site-header__user-caret {
  transition: transform var(--transition);
}
.site-header__user.is-open .site-header__user-caret {
  transform: rotate(180deg);
}
.site-header__menu {
  position: absolute;
  top: calc(100% + 0.6rem);
  right: 0;
  min-width: 200px;
  background: #fff;
  border: 1px solid var(--color-line);
  box-shadow: 0 16px 40px rgba(12, 10, 9, 0.12);
  padding: 0.4rem 0;
  z-index: 60;
}
.site-header__menu[hidden] {
  display: none;
}
.site-header__menu a {
  display: block;
  padding: 0.7rem 1.1rem;
  font-size: 1rem;
  color: var(--color-text);
  transition: background var(--transition), color var(--transition);
}
.site-header__menu a:hover {
  background: var(--color-line-1);
  color: var(--color-accent);
}

@media (max-width: 860px) {
  .account__grid {
    grid-template-columns: 1fr;
  }
  .site-header__user-name {
    display: none;
  }
}

/* 19b. Account empty state + Addresses --------------------- */
.account-empty {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  text-align: center;
  min-height: 240px;
  padding: 2rem 1rem;
}
.account-empty[hidden] {
  display: none;
}
.account-empty__title {
  margin: 0 0 0.6rem;
  font-family: var(--font-display);
  font-weight: 400;
  text-transform: uppercase;
  font-size: 2rem;
  color: var(--color-ink);
}
.account-empty__text {
  margin: 0;
  color: var(--color-muted);
  font-size: 1rem;
}
.account-empty__link {
  margin-top: 1.2rem;
  font-size: 1rem;
  text-transform: uppercase;
  color: var(--color-ink);
  text-decoration: underline;
  text-underline-offset: 3px;
}
.account-empty__link:hover {
  color: var(--color-accent);
}

/* Адресная книга */
.address-book {
  border: 1px solid var(--color-line);
  border-radius: 2px;
}
.address-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  padding: 1.1rem 1.4rem;
  border-bottom: 1px solid var(--color-line-1);
}
.address-row__text {
  font-size: 1rem;
  color: var(--color-ink);
}
.address-row__actions {
  display: flex;
  gap: 0.9rem;
  flex: 0 0 auto;
}
.address-row__edit,
.address-row__delete {
  color: var(--color-muted);
  transition: color var(--transition);
}
.address-row__edit:hover {
  color: var(--color-ink);
}
.address-row__delete:hover {
  color: #b3261e;
}
.address-book__add {
  display: block;
  padding: 1rem 1.4rem;
  text-align: center;
  font-size: 0.875rem;
  text-transform: uppercase;
  color: var(--color-ink);
  text-decoration: underline;
  text-underline-offset: 3px;
}
.address-book__add:hover {
  color: var(--color-accent);
}

/* Форма адреса */
.address-edit .orders__title,
.addresses .orders__title {
  margin-bottom: 1.4rem;
}
.address-form {
  max-width: 560px;
}
.address-form__row {
  margin-bottom: 1rem;
}
.address-form__grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0 1.2rem;
}
.address-form label {
  display: block;
  margin-bottom: 0.4rem;
  font-size: 0.75rem;
  text-transform: uppercase;
  color: var(--color-muted);
}
.address-form input,
.address-form select {
  width: 100%;
  height: 48px;
  padding: 0 1rem;
  border: 1px solid var(--checkout-field-border, #d9d6d4);
  border-radius: 2px;
  background: #fff;
  font-family: var(--font-base);
  font-size: 1rem;
  color: var(--color-ink);
}
.address-form input:focus,
.address-form select:focus {
  outline: none;
  border-color: var(--color-ink);
}
.address-form__actions {
  display: flex;
  align-items: center;
  gap: 1.4rem;
  margin-top: 0.6rem;
}
.address-form__save {
  height: 52px;
  padding: 0 2.2rem;
  border: 0;
  border-radius: 2px;
  background: var(--color-accent);
  color: #fff;
  font-size: 1rem;
  text-transform: uppercase;
  cursor: pointer;
  transition: background var(--transition);
}
.address-form__save:hover {
  background: var(--color-accent-dark);
}
.address-form__cancel {
  font-size: 0.875rem;
  color: var(--color-muted);
  text-decoration: underline;
  text-underline-offset: 3px;
}
.address-form__cancel:hover {
  color: var(--color-ink);
}

@media (max-width: 560px) {
  .address-form__grid {
    grid-template-columns: 1fr;
  }
}

/* 20. Wishlist page --------------------------------------- */
.wishlist {
  margin-block: clamp(1.5rem, 4vw, 3rem);
}
/* Внутри кабинета отступ не нужен — контент выровнен по верху с сайдбаром. */
.account__content.wishlist {
  margin-block: 0;
}
.wishlist__title {
  margin: 0 0 1.6rem;
  font-family: var(--font-display);
  font-weight: 400;
  text-transform: uppercase;
  font-size: 2rem;
  color: var(--color-ink);
}

/* 21. Collections index + cards --------------------------- */
.collections-page {
  margin-block: clamp(1.5rem, 4vw, 3rem);
}
.collections-page__title,
.collections-section__title {
  margin: 0 0 1.6rem;
  font-family: var(--font-display);
  font-weight: 400;
  text-transform: uppercase;
  font-size: 2rem;
  color: var(--color-ink);
}
.collections-page__empty {
  color: var(--color-muted);
}

.collections-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: clamp(1.5rem, 3vw, 2.5rem) 8px;
}
.collection-card {
  display: flex;
  flex-direction: column;
  color: inherit;
}
.collection-card__thumb {
  display: block;
  aspect-ratio: 4 / 5;
  overflow: hidden;
  background: #ece7e0;
}
.collection-card__thumb img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform var(--transition);
}
.collection-card:hover .collection-card__thumb img {
  transform: scale(1.04);
}
.collection-card__name {
  margin-top: 0.9rem;
  font-family: var(--font-display);
  font-size: 1.25rem;
  text-transform: uppercase;
  letter-spacing: 0.02em;
  color: var(--color-ink);
}
.collection-card:hover .collection-card__name {
  color: var(--color-accent);
}
.collection-card__count {
  margin-top: 0.25rem;
  font-size: 0.875rem;
  color: var(--color-muted);
}

@media (max-width: 768px) {
  .collections-grid {
    grid-template-columns: repeat(2, 1fr);
  }
}
@media (max-width: 480px) {
  .collections-grid {
    grid-template-columns: 1fr;
  }
}

/* 22. 404 ------------------------------------------------- */
.error-404 {
  padding-block: clamp(3rem, 8vw, 6rem);
}
.error-404__card {
  border: 1px solid var(--color-line);
  background: #fff;
  text-align: center;
  padding: clamp(3rem, 9vw, 6.5rem) 1.5rem;
}
.error-404__title {
  margin: 0;
  font-family: var(--font-display);
  font-weight: 400;
  text-transform: uppercase;
  font-size: clamp(1.85rem, 6vw, 3rem);
  letter-spacing: 0.02em;
  color: var(--color-ink);
}
.error-404__text {
  margin: 1rem auto 0;
  max-width: 46ch;
  color: var(--color-muted);
  font-size: 1rem;
  line-height: 1.6;
}
.error-404__link {
  display: inline-block;
  margin-top: 2.2rem;
  font-size: 1rem;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--color-ink);
  text-decoration: underline;
  text-underline-offset: 5px;
  transition: color var(--transition);
}
.error-404__link:hover {
  color: var(--color-accent);
}

/* 23. Inner pages: gray header banner + narrower container --- */
.page-banner {
  background: #f2f0ed;
  border-bottom: 1px solid var(--color-line-1);
  margin-bottom: clamp(2rem, 4vw, 3rem);
}
.page-banner__inner {
  padding-block: clamp(2rem, 5vw, 3.5rem);
}
.page-banner__title {
  margin: 0;
  font-family: var(--font-display);
  font-weight: 400;
  text-transform: uppercase;
  font-size: clamp(1.75rem, 6vw, 3rem);
  letter-spacing: 0.02em;
  color: var(--color-ink);
}
.page-banner__desc {
  margin-top: 0.6rem;
  max-width: 60ch;
  color: var(--color-muted);
  font-size: 1rem;
}

/* Контейнер внутренних страниц — уже, 1440 */
body.is-inner .container {
  max-width: 1440px;
}

/* Заголовок уже показан в баннере — прячем дубль в контенте */
body.is-inner .entry--page .entry__header {
  display: none;
}
body.is-inner .entry--single .entry__title {
  display: none;
}

/* =========================================================
   24. Адаптив — общие правила для планшетов и телефонов
   (точечные сетки описаны в своих секциях выше; здесь — то,
   что охватывает несколько блоков сразу)
   ========================================================= */

/* ----- Планшет (≤768px) ----- */
@media (max-width: 768px) {
  /* Подвал: колонки меню в две полосы, бренд переносится */
  .footer-menu-wrapper {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 2rem 1.5rem;
  }
  .site-footer__brand {
    flex-wrap: wrap;
    gap: 1rem;
    padding: 40px 0 24px;
  }
  .site-footer__contacts {
    text-align: left;
  }

  /* Панель фильтров каталога — во всю ширину экрана */
  .shop-filters {
    width: 100vw;
    min-width: 0;
  }
  .shop-sort__menu {
    min-width: 0;
    width: max-content;
    max-width: calc(100vw - 2 * var(--gutter));
  }
}

/* ----- Каталог на мобильных: тулбар в одну строку без наложений ----- */
@media (max-width: 767px) {
  /* Кнопка фильтров и сортировка сжимаются; при нехватке места сортировка
     переносится на вторую строку, а не наезжает на «Show filters». */
  .shop-toolbar > .container {
    column-gap: 0.75rem;
  }
  .shop-toolbar__left {
    flex: 0 1 auto;
    gap: 0.5rem;
  }
  .shop-toolbar__sort {
    flex: 0 1 auto;
    min-width: 0;
    margin-left: auto;
  }
  .shop-toolbar__filters,
  .shop-sort__toggle {
    font-size: 0.8125rem;
    letter-spacing: 0.02em;
  }

  /* Текущее значение сортировки визуально не выводим — длинные подписи
     («Price — low to high») уводили тулбар на вторую строку. Вместо текста —
     иконка активной сортировки; сама подпись остаётся в доступном дереве,
     чтобы скринридер озвучил её вместе с «Sort by». */
  .shop-sort__current {
    position: absolute;
    width: 1px;
    height: 1px;
    margin: -1px;
    padding: 0;
    overflow: hidden;
    clip-path: inset(50%);
    white-space: nowrap;
  }
  .shop-sort__toggle-icon svg {
    width: 15px;
    height: 15px;
  }
  .shop-sort__static::after {
    content: none;
  }
  .shop-sort__static {
    text-decoration: underline;
    text-underline-offset: 4px;
  }

  /* Выбранные фильтры чипами на телефоне не показываем — они дублируют
     панель фильтров и ломают высоту липкого тулбара. Активное количество
     видно в счётчике у кнопки, сброс остаётся доступен. */
  .shop-toolbar__chips-list {
    display: none;
  }
  .shop-toolbar__chips {
    gap: 0;
  }
}

/* Совсем узкие экраны (≤360px): мельче подписи и плотнее отступы, чтобы
   «Show filters», «Clear all» и «Sort by» помещались в одну строку. */
@media (max-width: 360px) {
  .shop-toolbar__filters,
  .shop-sort__toggle,
  .filter-chip--clear {
    font-size: 0.75rem;
  }
  .shop-toolbar > .container {
    column-gap: 0.5rem;
  }
  .shop-toolbar__left {
    gap: 0.35rem;
  }
  .shop-toolbar__filters,
  .shop-sort__toggle {
    gap: 0.25rem;
  }
  .shop-sort__toggle-icon svg {
    width: 13px;
    height: 13px;
  }
}

/* ----- Телефон (≤575px) ----- */
@media (max-width: 575px) {
  :root {
    --gutter: 16px;
  }

  /* Минималистичная шапка: оставляем поиск, корзину и бургер.
     Язык, избранное и аккаунт прячем — они доступны в меню/на страницах. */
  .site-header__actions {
    gap: 0.9rem;
  }
  .site-header__action:has(.site-header__icon--globe),
  .site-header__wish,
  .site-header__user,
  a.site-header__action:has(.site-header__icon--user) {
    display: none;
  }
  .site-header__burger {
    margin-left: 0.3rem;
  }

  /* Нижний блок меню: компактнее, чтобы «Wishlist» и «Sign in» помещались
     в одну строку рядом с соцсетями. */
  .site-header__nav-secondary {
    gap: 0.5rem 1.1rem;
  }
  .site-header__nav .social-links--nav {
    gap: 0.45rem;
  }
  .site-header__nav .social-links--nav .social-links__link {
    width: 36px;
    height: 36px;
  }

  /* Подвал: меню в одну колонку */
  .footer-menu-wrapper {
    grid-template-columns: 1fr;
    gap: 1.5rem;
  }
  .site-footer__bottom {
    flex-direction: column;
    align-items: flex-start;
    gap: 0.5rem;
  }

  /* Hero/баннеры: ниже на телефоне, чтобы не занимать весь экран */
  .hero {
    min-height: 90vh;
  }
  .legacy {
    min-height: 70vh;
  }

  /* Позиция в корзине: компактнее превью */
  .cart-item {
    grid-template-columns: 110px 1fr;
  }
  .cart-item__media {
    width: 110px;
    height: 110px;
  }
}

/* Телефон с выбором страны (intl-tel-input) — под стиль полей темы.
   Библиотека настраивается своими CSS-переменными: так её собственная
   раскладка (в т.ч. отступ текста в инпуте) пересчитывается корректно. */
.iti {
  --iti-border-color: var(--color-line);
  --iti-icon-color: var(--color-muted);
  --iti-hover-color: rgba(12, 10, 9, 0.05);
  --iti-spacer-horizontal: 12px;
  --iti-arrow-padding: 8px;
  display: block;
  width: 100%;
}
.iti__tel-input,
.iti input[type="tel"] {
  width: 100%;
}
/* Блок «флаг + код»: воздух вокруг кода и тонкий разделитель до поля ввода. */
.iti__selected-country {
  border-right: 1px solid var(--color-line);
  background: none;
}
.iti__selected-country:hover,
.iti__selected-country[aria-expanded="true"] {
  background: var(--iti-hover-color);
}
.iti__selected-dial-code {
  margin-left: 6px;
  padding-right: 12px;
  color: var(--color-muted);
  font-size: 1rem;
  font-variant-numeric: lining-nums tabular-nums;
}

/* Выпадающий список стран: шрифт, цвета и ширина как у поля. */
.iti__country-container,
.iti__country-selector,
.iti__country-list {
  font-family: var(--font-base);
  font-size: 0.9375rem;
}
.iti__country-selector,
.iti__dropdown-content {
  width: 100%;
  border: 1px solid var(--color-line);
  border-radius: 0;
  box-shadow: 0 18px 48px rgba(12, 10, 9, 0.14);
}
.iti__country-list {
  max-height: 260px;
}
.iti input.iti__search-input {
  font-family: var(--font-base);
  font-size: 0.9375rem;
  /* Слева оставляем место под иконку лупы самой библиотеки. */
  padding: 0.7rem 0.9rem 0.7rem 2.4rem;
  border-bottom: 1px solid var(--color-line);
}
.iti__country {
  padding: 0.55rem 0.9rem;
}
.iti__country-name {
  color: var(--color-ink);
}
.iti__dial-code {
  color: var(--color-muted);
}
/* Красная рамка ошибки — на всей обёртке, а не только на инпуте. */
.iti:has(input[aria-invalid="true"]) .iti__selected-country {
  border-color: #a4322b;
}

/* Ошибки валидации форм — под полем, а не «пузырём» браузера (main.js). */
.field-error {
  display: block;
  margin: 0.45rem 0 0;
  color: #a4322b;
  font-size: 0.8125rem;
  line-height: 1.45;
  letter-spacing: 0.01em;
}
.field-error::before {
  content: "!";
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 14px;
  height: 14px;
  margin-right: 0.4rem;
  border: 1px solid currentColor;
  border-radius: 50%;
  font-size: 0.625rem;
  line-height: 1;
  vertical-align: -2px;
}
input[aria-invalid="true"],
textarea[aria-invalid="true"],
select[aria-invalid="true"] {
  border-color: #a4322b;
}
/* Звёзды рейтинга: подсвечиваем сам блок — инпуты визуально скрыты. */
.ulia-rating [aria-invalid="true"] ~ svg,
.ulia-stars:has([aria-invalid="true"]) .ulia-star svg {
  color: #a4322b;
}

/* =========================================================
   25. Прелоадер + плавное появление секций (fade-in on scroll)
   ========================================================= */

/* Блокируем прокрутку, пока активен прелоадер (только при включённом JS). */
html.is-loading {
  overflow: hidden;
}

/* Прелоадер: скрыт без JS (progressive enhancement). */
.preloader {
  display: none;
}
.js .preloader {
  position: fixed;
  inset: 0;
  z-index: 2000;
  display: flex;
  align-items: center;
  justify-content: center;
  background: radial-gradient(135% 105% at 50% 42%, #fbfaf8 0%, var(--color-bg) 58%, #f1ede7 100%);
  transition: opacity 0.9s cubic-bezier(0.16, 1, 0.3, 1), visibility 0s linear 0.9s;
}
.js .preloader.is-hidden {
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
}
.preloader__inner {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 1.75rem;
  transition:
    opacity 0.6s ease,
    transform 0.9s cubic-bezier(0.16, 1, 0.3, 1);
}
/* Премиальный уход — логотип мягко уплывает вверх, пока занавес растворяется. */
.js .preloader.is-hidden .preloader__inner {
  opacity: 0;
  transform: translateY(-10px);
}
.preloader__logo {
  display: block;
  opacity: 0;
  transform: translateY(8px) scale(0.98);
  filter: blur(6px);
  animation: uliaPreloaderLogo 1.2s cubic-bezier(0.16, 1, 0.3, 1) forwards;
}
.preloader__logo-img {
  display: block;
  width: auto;
  height: clamp(28px, 4.5vw, 40px);
}
.preloader__bar {
  display: block;
  width: 56px;
  height: 1px;
  background: rgba(12, 10, 9, 0.1);
  overflow: hidden;
  opacity: 0;
  animation: uliaPreloaderBarIn 0.7s ease 0.35s forwards;
}
/* Лёгкий световой блик, бесконечно скользящий по линии. */
.preloader__bar-fill {
  display: block;
  height: 100%;
  width: 100%;
  background: linear-gradient(90deg, transparent 0%, var(--color-ink) 50%, transparent 100%);
  transform: translateX(-100%);
  animation: uliaPreloaderBar 1.6s cubic-bezier(0.65, 0, 0.35, 1) 0.5s infinite;
}
@keyframes uliaPreloaderLogo {
  to {
    opacity: 1;
    transform: none;
    filter: blur(0);
  }
}
@keyframes uliaPreloaderBarIn {
  to {
    opacity: 1;
  }
}
@keyframes uliaPreloaderBar {
  0% {
    transform: translateX(-100%);
  }
  100% {
    transform: translateX(100%);
  }
}

/* Плавное появление секций главной. Активно только при JS. */
.js .page-home > section {
  opacity: 0;
  transform: translateY(32px);
  transition:
    opacity 1s cubic-bezier(0.16, 1, 0.3, 1),
    transform 1s cubic-bezier(0.16, 1, 0.3, 1);
  will-change: opacity, transform;
}
.js .page-home > section.is-visible {
  opacity: 1;
  transform: none;
}

/* Hero, Legacy и Collection: секцию показываем сразу, а её содержимое
   поднимается снизу отдельным каскадом. */
.js .page-home > section.hero,
.js .page-home > section.legacy,
.js .page-home > section.feature {
  opacity: 1;
  transform: none;
  transition: none;
}
.js .hero__title,
.js .hero__cta,
.js .hero__scroll,
.js .legacy__title,
.js .legacy__text,
.js .legacy__link {
  opacity: 0;
  transform: translateY(30px);
  transition:
    opacity 0.9s cubic-bezier(0.16, 1, 0.3, 1),
    transform 0.9s cubic-bezier(0.16, 1, 0.3, 1);
  will-change: opacity, transform;
}
.js .hero.is-visible .hero__title,
.js .hero.is-visible .hero__cta,
.js .hero.is-visible .hero__scroll,
.js .legacy.is-visible .legacy__title,
.js .legacy.is-visible .legacy__text,
.js .legacy.is-visible .legacy__link {
  opacity: 1;
  transform: none;
}
/* Каскад появления. */
.js .hero.is-visible .hero__title { transition-delay: 0.1s; }
.js .hero.is-visible .hero__cta { transition-delay: 0.3s; }
.js .hero.is-visible .hero__scroll { transition-delay: 0.5s; }
.js .legacy.is-visible .legacy__title { transition-delay: 0.1s; }
.js .legacy.is-visible .legacy__text { transition-delay: 0.26s; }
.js .legacy.is-visible .legacy__link { transition-delay: 0.42s; }

/* Collection: заголовок секции, панель (имя + ссылки) и слайдер каскадом. */
.js .feature .section-title,
.js .feature__name,
.js .feature__links,
.js .feature__slider {
  opacity: 0;
  transform: translateY(28px);
  transition:
    opacity 0.9s cubic-bezier(0.16, 1, 0.3, 1),
    transform 0.9s cubic-bezier(0.16, 1, 0.3, 1);
  will-change: opacity, transform;
}
.js .feature.is-visible .section-title,
.js .feature.is-visible .feature__name,
.js .feature.is-visible .feature__links,
.js .feature.is-visible .feature__slider {
  opacity: 1;
  transform: none;
}
.js .feature.is-visible .section-title { transition-delay: 0.05s; }
.js .feature.is-visible .feature__name { transition-delay: 0.2s; }
.js .feature.is-visible .feature__links { transition-delay: 0.32s; }
.js .feature.is-visible .feature__slider { transition-delay: 0.4s; }

/* Уважение к настройке «меньше движения». */
@media (prefers-reduced-motion: reduce) {
  .js .page-home > section,
  .js .hero__title,
  .js .hero__cta,
  .js .hero__scroll,
  .js .legacy__title,
  .js .legacy__text,
  .js .legacy__link,
  .js .feature .section-title,
  .js .feature__name,
  .js .feature__links,
  .js .feature__slider {
    opacity: 1;
    transform: none;
    transition: none;
  }
  .preloader__logo,
  .preloader__bar,
  .preloader__bar-fill {
    animation: none;
    opacity: 1;
    transform: none;
    filter: none;
  }
}
/* 14. Region & currency popup ----------------------------- */
body.region-open {
  overflow: hidden;
}

.region-popup[hidden] {
  display: none;
}

.region-popup {
  position: fixed;
  inset: 0;
  z-index: 9999;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: var(--gutter);
  overflow-y: auto;
}

.region-popup__overlay {
  position: fixed;
  inset: 0;
  background: rgba(12, 10, 9, 0.6);
  -webkit-backdrop-filter: blur(6px) saturate(115%);
  backdrop-filter: blur(6px) saturate(115%);
  opacity: 0;
  transition: opacity 0.5s ease;
}

.region-popup__box {
  position: relative;
  width: min(460px, 100%);
  /* margin:auto вместо align-items — при высоком содержимом верх не обрезается. */
  margin: auto;
  padding: 56px 48px 44px;
  background: var(--color-bg);
  box-shadow: 0 30px 80px -30px rgba(12, 10, 9, 0.45);
  text-align: center;
  opacity: 0;
  transform: translateY(18px) scale(0.985);
  transition:
    opacity 0.6s cubic-bezier(0.16, 1, 0.3, 1),
    transform 0.6s cubic-bezier(0.16, 1, 0.3, 1);
}

/* Двойная рамка-паспарту — тонкая линия по краю и вторая внутри. */
.region-popup__box::before,
.region-popup__box::after {
  content: "";
  position: absolute;
  pointer-events: none;
}
.region-popup__box::before {
  inset: 0;
  border: 1px solid var(--color-line);
}
.region-popup__box::after {
  inset: 8px;
  border: 1px solid var(--color-line-1);
}

/* --- Появление --- */
.region-popup.is-open .region-popup__overlay {
  opacity: 1;
}
.region-popup.is-open .region-popup__box {
  opacity: 1;
  transform: translateY(0) scale(1);
  transition-delay: 0.08s;
}

.region-popup__head > *,
.region-popup__fields,
.region-popup__submit {
  opacity: 0;
  transform: translateY(10px);
  transition:
    opacity 0.55s ease,
    transform 0.55s cubic-bezier(0.16, 1, 0.3, 1);
}
.region-popup.is-open .region-popup__head > *,
.region-popup.is-open .region-popup__fields,
.region-popup.is-open .region-popup__submit {
  opacity: 1;
  transform: translateY(0);
}
.region-popup.is-open .region-popup__eyebrow { transition-delay: 0.22s; }
.region-popup.is-open .region-popup__title   { transition-delay: 0.29s; }
.region-popup.is-open .region-popup__rule    { transition-delay: 0.36s; }
.region-popup.is-open .region-popup__note    { transition-delay: 0.42s; }
.region-popup.is-open .region-popup__fields  { transition-delay: 0.48s; }
.region-popup.is-open .region-popup__submit  { transition-delay: 0.56s; }

/* --- Закрытие --- */
.region-popup.is-closing .region-popup__overlay {
  opacity: 0;
  transition-duration: 0.24s;
}
.region-popup.is-closing .region-popup__box {
  opacity: 0;
  transform: translateY(8px) scale(0.99);
  transition-duration: 0.24s;
  transition-delay: 0s;
}

/* --- Шапка --- */
.region-popup__close {
  position: absolute;
  top: 18px;
  right: 18px;
  z-index: 2;
  display: flex;
  padding: 6px;
  border: 0;
  background: none;
  color: var(--color-muted);
  cursor: pointer;
  transition:
    color var(--transition),
    transform var(--transition);
}
.region-popup__close:hover {
  color: var(--color-ink);
  transform: rotate(90deg);
}
.region-popup__close:focus-visible {
  outline: 1px solid var(--color-accent);
  outline-offset: 2px;
}

.region-popup__eyebrow {
  font-family: var(--font-base);
  font-size: 10px;
  font-weight: 400;
  letter-spacing: 0.28em;
  text-transform: uppercase;
  color: var(--color-muted-light);
  margin-bottom: 14px;
}

.region-popup__title {
  font-family: var(--font-display);
  font-size: clamp(26px, 4.4vw, 32px);
  font-weight: 400;
  line-height: 1.2;
  letter-spacing: 0.01em;
  color: var(--color-ink);
}

.region-popup__rule {
  display: block;
  width: 44px;
  height: 1px;
  margin: 20px auto 0;
  background: var(--color-accent);
  transform-origin: center;
}
.region-popup.is-open .region-popup__rule {
  animation: region-rule 0.7s cubic-bezier(0.16, 1, 0.3, 1) 0.36s both;
}

@keyframes region-rule {
  from { transform: scaleX(0); }
  to   { transform: scaleX(1); }
}

.region-popup__note {
  margin-top: 18px;
  font-family: var(--font-base);
  font-size: 13px;
  line-height: 1.65;
  color: var(--color-muted);
}

/* --- Поля --- */
.region-popup__fields {
  /* transform в анимации появления создаёт стек-контекст: без явного порядка
     кнопка перекрывала бы выпадающее меню последнего поля. */
  position: relative;
  z-index: 2;
  display: flex;
  flex-direction: column;
  gap: 20px;
  margin: 32px 0 28px;
  text-align: left;
}

.region-popup__label {
  display: block;
  margin-bottom: 8px;
  font-family: var(--font-base);
  font-size: 10px;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--color-muted-light);
}

/* --- Кастомный селект --- */
.region-select {
  position: relative;
}

.region-select__toggle {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  width: 100%;
  padding: 14px 16px;
  border: 1px solid var(--color-line);
  background: var(--color-bg);
  color: var(--color-text);
  font-family: var(--font-base);
  font-size: 14px;
  text-align: left;
  cursor: pointer;
  transition:
    border-color 0.15s ease,
    background 0.15s ease;
}
.region-select__toggle:hover {
  border-color: var(--color-accent);
}
.region-select__toggle:focus-visible {
  outline: 1px solid var(--color-accent);
  outline-offset: 2px;
}
.region-select.is-open .region-select__toggle {
  border-color: var(--color-ink);
}

.region-select__value {
  overflow: hidden;
  white-space: nowrap;
  text-overflow: ellipsis;
}

.region-select__chevron {
  flex: none;
  color: var(--color-muted);
  transition: transform 0.18s ease;
}
.region-select.is-open .region-select__chevron {
  transform: rotate(180deg);
}

.region-select__menu {
  position: absolute;
  top: calc(100% + 6px);
  left: 0;
  right: 0;
  z-index: 3;
  max-height: 232px;
  overflow-y: auto;
  margin: 0;
  padding: 6px 0;
  list-style: none;
  background: var(--color-bg);
  border: 1px solid var(--color-line);
  box-shadow: 0 18px 40px -22px rgba(12, 10, 9, 0.5);
  opacity: 0;
  transform: translateY(-6px);
  transition:
    opacity 0.15s ease,
    transform 0.15s cubic-bezier(0.16, 1, 0.3, 1);
}
.region-select__menu[hidden] {
  display: none;
}
.region-select.is-open .region-select__menu {
  opacity: 1;
  transform: translateY(0);
}

.region-select__option {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  padding: 11px 16px;
  font-family: var(--font-base);
  font-size: 14px;
  color: var(--color-text);
  cursor: pointer;
  /* Быстрее общего --transition: подсветка пункта должна успевать за курсором. */
  transition:
    background 0.12s ease,
    color 0.12s ease;
}
.region-select__option:hover,
.region-select__option.is-highlighted {
  background: var(--color-line-1);
}
.region-select__option.is-active {
  color: var(--color-accent);
}

.region-select__option-label {
  overflow: hidden;
  white-space: nowrap;
  text-overflow: ellipsis;
}

.region-select__check {
  flex: none;
  opacity: 0;
  transform: scale(0.8);
  transition:
    opacity 0.15s ease,
    transform 0.15s ease;
}
.region-select__option.is-active .region-select__check {
  opacity: 1;
  transform: scale(1);
}

/* Триггер в мобильном меню — под стать ссылкам site-header__nav-secondary. */
.site-header__nav-region {
  padding: 0;
  border: 0;
  background: none;
  color: inherit;
  font: inherit;
  text-align: left;
  cursor: pointer;
}

/* --- Кнопка --- */
.region-popup__submit {
  position: relative;
  z-index: 1;
  width: 100%;
  padding: 16px;
  border: 0;
  background: var(--color-ink);
  color: #fff;
  font-family: var(--font-base);
  font-size: 11px;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  cursor: pointer;
  transition: background var(--transition);
}
.region-popup__submit:hover {
  background: var(--color-accent);
}
.region-popup__submit:focus-visible {
  outline: 1px solid var(--color-accent);
  outline-offset: 3px;
}
@media (max-width: 480px) {
  .region-popup__box {
    padding: 44px 24px 32px;
  }
  .region-popup__box::after {
    inset: 6px;
  }
}

@media (prefers-reduced-motion: reduce) {
  .region-popup__overlay,
  .region-popup__box,
  .region-popup__head > *,
  .region-popup__fields,
  .region-popup__submit,
  .region-select__menu,
  .region-select__chevron,
  .region-select__check,
  .region-popup__close {
    transition: none;
    animation: none;
  }
  .region-popup.is-open .region-popup__rule {
    animation: none;
  }
}
