/* fonts.css is now linked from each page's <head> (was an @import here, which serialized
   the font request behind styles.css — see patch48). */
/* ==========================================================================
   WatchLab — Premium watch boutique
   Light premium palette · warm paper · neutral accent · serif headlines
   ========================================================================== */

:root {
  color-scheme: dark;
  --paper: #0b0b0d;
  --paper-soft: #141417;
  --paper-deep: #1c1c21;
  --ink: #f4f1ea;
  --ink-soft: #dad6cd;
  --ink-mute: #a8a299;
  --muted: #9b958b;
  --line: #2a2a31;
  --line-soft: #1e1e23;
  --copper: #8f8980;
  --copper-soft: #34343b;
  --copper-deep: #a92330;
  --night: #000000;
  --night-2: #0e0e10;
  --olive: #7f9173;
  --accent: #841a23;
  --accent-2: #a92330;
  --shadow-sm: 0 4px 14px rgba(0, 0, 0, 0.4);
  --shadow-md: 0 14px 40px rgba(0, 0, 0, 0.5);
  --shadow-lg: 0 30px 80px rgba(0, 0, 0, 0.65);
  --radius: 6px;
  --radius-lg: 10px;
  --header-h: 78px;
  --serif: "Playfair Display", "Cormorant Garamond", Georgia, "Times New Roman", serif;
  --sans: "Inter", ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
}

* {
  box-sizing: border-box;
}

/* No global smooth scroll: it fights momentum/wheel scrolling and programmatic
   scrollTo, causing the page to tremble/bounce on fast scroll. Smooth is opted into
   per-action in JS (scrollIntoView/scrollTo{behavior:'smooth'}) where deliberate. */

body {
  margin: 0;
  background: var(--paper);
  color: var(--ink);
  font-family: var(--sans);
  font-size: 16px;
  line-height: 1.55;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}

body.menu-open {
  overflow: hidden;
}

button,
input,
select,
textarea {
  font: inherit;
}

button {
  cursor: pointer;
}

a {
  color: inherit;
  text-decoration: none;
}

img {
  display: block;
  max-width: 100%;
}

.sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

.nowrap {
  white-space: nowrap;
}

.shell {
  width: min(1240px, calc(100% - 40px));
  margin: 0 auto;
}

/* Eyebrow / labels =========================================================*/
.eyebrow {
  margin: 0 0 14px;
  color: var(--copper-deep);
  font-family: var(--sans);
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.22em;
  text-transform: uppercase;
}

/* HEADER ===================================================================*/
.site-header {
  position: fixed;
  z-index: 1000;
  top: 0;
  left: 0;
  right: 0;
  height: var(--header-h);
  background: rgba(11, 11, 13, 0.98);
  border-bottom: 1px solid var(--line-soft);
  box-shadow: 0 1px 0 rgba(0, 0, 0, 0.02), 0 12px 40px rgba(0, 0, 0, 0.04);
  isolation: isolate;
  transform: translate3d(0, 0, 0);
  backface-visibility: hidden;
  will-change: transform;
}

.site-header__inner {
  display: grid;
  grid-template-columns: auto 1fr auto;
  gap: 32px;
  align-items: center;
  width: min(1240px, calc(100% - 40px));
  height: 100%;
  margin: 0 auto;
}

.brand {
  display: inline-flex;
  align-items: center;
  flex: 0 0 auto;
  height: 100%;
  min-width: max-content;
}

.brand img {
  width: clamp(250px, 22vw, 320px);
  height: auto;
  max-width: none;
  display: block;
  object-fit: contain;
}

.nav-links {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  padding: 6px;
  border: 1px solid rgba(255, 255, 255, 0.16);
  border-radius: 999px;
  background: linear-gradient(180deg, rgba(22, 22, 27, 0.55), rgba(255, 255, 255, 0.18));
  box-shadow: inset 0 1px 0 rgba(22, 22, 27, 0.5), 0 1px 0 rgba(255, 255, 255, 0.4);
  backdrop-filter: blur(6px);
  overflow: visible;
  isolation: isolate;
}

.nav-marker {
  position: absolute;
  z-index: 0;
  top: 6px;
  left: 6px;
  width: 0;
  height: 36px;
  border-radius: 999px;
  opacity: 0;
  pointer-events: none;
  transition: 
    left 0.46s cubic-bezier(0.22, 1, 0.36, 1),
    width 0.46s cubic-bezier(0.22, 1, 0.36, 1),
    opacity 0.18s ease,
    transform 0.28s ease,
    background 0.28s ease;
}

.nav-marker--hover {
  left: var(--nav-hover-x, 6px);
  width: var(--nav-hover-w, 0px);
  background: 
    linear-gradient(180deg, rgba(232, 229, 222, 0.96), rgba(213, 208, 197, 0.9));
  border: 1px solid rgba(255, 255, 255, 0.16);
  box-shadow: 0 7px 18px rgba(0, 0, 0, 0.08), inset 0 1px 0 rgba(22, 22, 27, 0.55);
}

.nav-marker--active {
  z-index: 1;
  left: var(--nav-active-x, 6px);
  width: var(--nav-active-w, 0px);
  background: linear-gradient(135deg, #16161b 0%, #292723 100%);
  box-shadow: 0 5px 16px rgba(14, 14, 12, 0.2), inset 0 1px 0 rgba(255, 255, 255, 0.06);
}

.nav-links.has-active .nav-marker--active,
.nav-links.has-hover .nav-marker--hover {
  opacity: 1;
}

.nav-links.is-committing .nav-marker--active {
  transition: 
    left 0.3s cubic-bezier(0.22, 1, 0.36, 1),
    width 0.3s cubic-bezier(0.22, 1, 0.36, 1),
    opacity 0.18s ease;
}

.nav-links--no-transition .nav-marker {
  transition: none !important;
}

.nav-item {
  position: relative;
  z-index: 2;
  display: inline-flex;
  align-items: center;
}

.nav-links a {
  position: relative;
  z-index: 1;
  display: inline-flex;
  align-items: center;
  height: 36px;
  padding: 0 18px;
  border-radius: 999px;
  color: var(--ink-mute);
  font-size: 14px;
  font-weight: 500;
  letter-spacing: 0.01em;
  transition: color 0.2s ease, background 0.2s ease, box-shadow 0.2s ease, transform 0.2s ease;
}

.nav-links a:hover {
  color: var(--ink);
  background: rgba(22, 22, 27, 0.7);
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.06);
}

.nav-links a.is-active {
  color: #fff;
  background: linear-gradient(135deg, #16161b 0%, #2a2722 100%);
  box-shadow: 0 4px 14px rgba(14, 14, 12, 0.18), inset 0 1px 0 rgba(255, 255, 255, 0.06);
}

.nav-links a.is-active:hover {
  background: linear-gradient(135deg, #000 0%, #16161b 100%);
  color: #fff;
}

.nav-links.has-active > a.is-active,
.nav-links.has-active > .nav-item > a.is-active,
.nav-links.has-active > a.is-active:hover,
.nav-links.has-active > .nav-item > a.is-active:hover {
  color: #fff;
  background: transparent;
  box-shadow: none;
}

.nav-links.has-hover > a.is-hover-target,
.nav-links.has-hover > .nav-item > a.is-hover-target,
.nav-links.has-hover > a.is-hover-target:hover,
.nav-links.has-hover > .nav-item > a.is-hover-target:hover {
  color: var(--ink);
  background: transparent;
  box-shadow: none;
}

.catalog-menu {
  position: absolute;
  z-index: 20;
  top: calc(100% + 14px);
  left: 50%;
  width: min(520px, calc(100vw - 32px));
  padding: 14px;
  border: 1px solid rgba(255, 255, 255, 0.18);
  border-radius: var(--radius-lg);
  background: rgba(11, 11, 13, 0.98);
  box-shadow: 0 28px 80px rgba(0, 0, 0, 0.16);
  backdrop-filter: blur(16px);
  opacity: 0;
  pointer-events: none;
  transform: translate(-50%, 10px) scale(0.98);
  transform-origin: 50% 0;
  transition: opacity 0.2s ease, transform 0.28s cubic-bezier(0.22, 1, 0.36, 1);
}

.catalog-menu::before {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  top: -16px;
  height: 16px;
}

.nav-item--catalog:hover .catalog-menu,
.nav-item--catalog:focus-within .catalog-menu {
  opacity: 1;
  pointer-events: auto;
  transform: translate(-50%, 0) scale(1);
}

.catalog-menu__top {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 4px 4px 12px;
}

.catalog-menu__top strong {
  font-family: var(--serif);
  font-size: 24px;
  font-weight: 500;
  line-height: 1;
}

.catalog-menu__cta {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  height: 36px;
  padding: 0 14px;
  border: 1px solid rgba(93, 90, 83, 0.22);
  border-radius: 999px;
  background: 
    radial-gradient(circle at 100% 0%, rgba(22, 22, 27, 0.9), transparent 48%),
    linear-gradient(135deg, #16161b 0%, #17171c 100%);
  color: var(--copper-deep);
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0.02em;
  transition: background 0.18s ease, border-color 0.18s ease, transform 0.18s ease, box-shadow 0.18s ease;
  box-shadow: 0 6px 16px rgba(0, 0, 0, 0.06);
}

.catalog-menu__cta svg {
  width: 14px;
  height: 14px;
  transition: transform 0.18s ease;
}

.catalog-menu__cta:hover {
  background: #16161b;
  border-color: var(--copper-deep);
  color: var(--ink);
  transform: translateY(-1px);
  box-shadow: 0 10px 24px rgba(0, 0, 0, 0.1);
}

.catalog-menu__cta:hover svg {
  transform: translateX(3px);
}

.catalog-menu__grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 10px;
}

.catalog-menu__group {
  display: grid;
  gap: 5px;
  padding: 10px;
  border: 1px solid rgba(255, 255, 255, 0.12);
  border-radius: var(--radius);
  background: rgba(22, 22, 27, 0.56);
}

.catalog-menu__group > span {
  margin-bottom: 2px;
  color: var(--muted);
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.12em;
  text-transform: uppercase;
}

.catalog-menu__group a {
  position: relative;
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: center;
  height: auto;
  min-height: 46px;
  gap: 4px 10px;
  padding: 9px 32px 9px 12px;
  border: 1px solid rgba(255, 255, 255, 0.14);
  border-radius: var(--radius);
  background: rgba(22, 22, 27, 0.78);
  color: var(--ink);
  box-shadow: 0 1px 0 rgba(22, 22, 27, 0.6) inset;
  transition: border-color 0.18s ease, background 0.18s ease, box-shadow 0.18s ease, transform 0.18s ease;
}

.catalog-menu__group a::after {
  content: "→";
  position: absolute;
  top: 50%;
  right: 12px;
  transform: translateY(-50%);
  color: var(--muted);
  font-size: 13px;
  line-height: 1;
  transition: color 0.18s ease, transform 0.18s ease;
}

.catalog-menu__group a:hover {
  background: #16161b;
  border-color: var(--copper-soft);
  box-shadow: 0 8px 18px rgba(0, 0, 0, 0.08);
  transform: translateY(-1px);
}

.catalog-menu__group a:hover::after {
  color: var(--copper-deep);
  transform: translate(2px, -50%);
}

.catalog-menu__group a strong {
  grid-column: 1;
  font-size: 13px;
  font-weight: 600;
  line-height: 1.15;
}

.catalog-menu__group a small {
  grid-column: 1;
  color: var(--muted);
  font-size: 11px;
  line-height: 1.3;
}

.header-actions {
  display: inline-flex;
  align-items: center;
  gap: 10px;
}

.account-link {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  height: 38px;
  padding: 0 14px;
  border: 1px solid var(--line);
  border-radius: var(--radius);
  background: rgba(22, 22, 27, 0.52);
  color: var(--ink);
  font-size: 13px;
  font-weight: 500;
  white-space: nowrap;
  transition: 0.18s ease;
}

.account-link:hover,
body[data-page="account"] .account-link {
  border-color: var(--ink);
  background: var(--accent);
  color: #fff;
}

.tg-link,
.avito-link {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  height: 38px;
  padding: 0 14px;
  border: 1px solid var(--line);
  border-radius: var(--radius);
  background: transparent;
  color: var(--ink);
  font-size: 13px;
  font-weight: 500;
  transition: 0.18s ease;
}

.tg-link:hover,
.avito-link:hover {
  border-color: var(--ink);
}

.tg-link svg {
  width: 16px;
  height: 16px;
}

.cart-button {
  position: relative;
  display: inline-flex;
  align-items: center;
  gap: 8px;
  height: 38px;
  padding: 0 14px;
  border: 0;
  border-radius: var(--radius);
  background: var(--accent);
  color: #fff;
  font-size: 13px;
  font-weight: 500;
  transition: background 0.18s ease;
}

.cart-button:hover {
  background: #000;
}

.cart-button svg {
  width: 16px;
  height: 16px;
}

.cart-button strong {
  display: inline-grid;
  min-width: 18px;
  height: 18px;
  place-items: center;
  padding: 0 5px;
  border-radius: 999px;
  background: var(--copper);
  color: #f1eee7;
  font-size: 11px;
  font-weight: 700;
}

.menu-toggle {
  display: none;
  position: relative;
  z-index: 1020;
  width: 40px;
  height: 40px;
  align-items: center;
  justify-content: center;
  flex-direction: column;
  gap: 4px;
  border: 1px solid var(--line);
  border-radius: var(--radius);
  background: transparent;
  touch-action: manipulation;
}

.menu-toggle span {
  display: block;
  width: 18px;
  height: 1.5px;
  background: var(--accent);
}

main {
  padding-top: var(--header-h);
}

/* HERO — Главная (sticky scroll story) =====================================*/
.hero-story {
  position: relative;
  z-index: 0;
  isolation: isolate;
  background: linear-gradient(180deg, var(--paper) 0%, var(--paper-soft) 100%);
}

.hero-story__shell {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  gap: 48px;
  width: min(1240px, calc(100% - 40px));
  margin: 0 auto;
  padding: 32px 0 0;
}

.hero-story__left {
  display: grid;
  gap: 0;
}

.hero-step {
  min-height: calc(100vh - var(--header-h) - 32px);
  display: grid;
  align-content: center;
  padding: 80px 0;
}

.hero-step h1,
.hero-step h2 {
  margin: 0 0 22px;
  font-family: var(--serif);
  font-weight: 500;
  font-size: clamp(40px, 5vw, 64px);
  line-height: 1.04;
  letter-spacing: -0.01em;
  color: var(--ink);
}

.hero-step h2 {
  font-size: clamp(34px, 4.4vw, 52px);
}

.hero-step h1 em,
.hero-step h2 em {
  font-style: italic;
  color: var(--copper-deep);
}

.hero-step p.lead {
  margin: 0 0 28px;
  max-width: 540px;
  font-size: 17px;
  line-height: 1.55;
  color: var(--muted);
}

.hero-step__ctas {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin-bottom: 32px;
}

.hero-step__lines {
  display: grid;
  gap: 12px;
}

.hero-step__line {
  display: grid;
  gap: 6px;
  padding: 18px 22px;
  background: linear-gradient(135deg, rgba(22, 22, 27, 0.7), rgba(255, 255, 255, 0.4));
  border: 1px solid rgba(116, 112, 104, 0.25);
  border-radius: var(--radius-lg);
  transition: 0.2s ease;
  text-decoration: none;
  color: inherit;
}

.hero-step__line:hover {
  border-color: var(--copper-soft);
  transform: translateX(4px);
  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.06);
}

.hero-step__line strong {
  font-family: var(--serif);
  font-size: 26px;
  font-weight: 500;
  color: var(--ink);
}

.hero-step__line span {
  font-size: 14px;
  color: var(--muted);
}

.hero-story__right {
  position: relative;
}

.hero-stage {
  position: sticky;
  z-index: 0;
  top: calc(var(--header-h) + 24px);
  height: calc(100vh - var(--header-h) - 48px);
  border-radius: var(--radius-lg);
  overflow: hidden;
  background: #191a1e;
  box-shadow: var(--shadow-md);
  transform: translate3d(0, 0, 0);
}

.hero-stage img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
  padding: 0;
  opacity: 0;
  transform: scale(1.025);
  filter: saturate(0.82) brightness(0.99);
  transition: 
    opacity 0.18s linear,
    transform 0.45s ease-out;
  will-change: opacity, transform;
  pointer-events: none;
}

.hero-stage img.is-active {
  opacity: 1;
  transform: scale(1);
}

.hero-stage__progress {
  position: absolute;
  left: 22px;
  bottom: 22px;
  display: flex;
  gap: 6px;
}

.hero-stage__progress span {
  display: block;
  width: 18px;
  height: 2px;
  border-radius: 2px;
  background: rgba(255, 255, 255, 0.45);
  transition: background 0.3s ease;
}

.hero-stage__progress span.is-active {
  background: rgba(22, 22, 27, 0.95);
  width: 28px;
}

/* Legacy hero (non-sticky alt) —————————————————————————————————————————— */
.hero {
  position: relative;
  padding: 64px 0 40px;
  background: var(--paper);
}

.hero__shell {
  display: grid;
  grid-template-columns: minmax(0, 1.05fr) minmax(0, 0.95fr);
  gap: 48px;
  align-items: center;
  width: min(1240px, calc(100% - 40px));
  margin: 0 auto;
}

.hero__copy h1 {
  margin: 0 0 22px;
  font-family: var(--serif);
  font-weight: 500;
  font-size: clamp(40px, 5vw, 64px);
  line-height: 1.04;
  letter-spacing: -0.01em;
  color: var(--ink);
}

.hero__copy h1 em {
  font-style: italic;
  color: var(--copper-deep);
}

.hero__lead {
  margin: 0 0 28px;
  max-width: 540px;
  font-size: 17px;
  line-height: 1.55;
  color: var(--muted);
}

.hero__ctas {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin-bottom: 32px;
}

.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  min-height: 48px;
  padding: 0 20px;
  border: 1px solid transparent;
  border-radius: var(--radius);
  font-size: 14px;
  font-weight: 500;
  letter-spacing: 0.01em;
  cursor: pointer;
  transition: 0.18s ease;
}

.btn--primary {
  background: var(--accent);
  color: #fff;
  border-color: var(--ink);
  box-shadow: 0 4px 12px rgba(14, 14, 12, 0.18);
}

.btn--primary:hover {
  background: #000;
  transform: translateY(-1px);
  box-shadow: 0 8px 22px rgba(14, 14, 12, 0.28);
}

.btn--primary:active {
  transform: translateY(0);
}

.btn--ghost {
  background: rgba(22, 22, 27, 0.5);
  color: var(--ink);
  border-color: var(--line);
}

.btn--ghost:hover {
  border-color: var(--ink);
  background: #16161b;
  transform: translateY(-1px);
  box-shadow: 0 4px 14px rgba(0, 0, 0, 0.06);
}

.btn--ghost:active {
  transform: translateY(0);
}

.btn--gold {
  background: linear-gradient(135deg, #3a3c3d 0%, var(--copper-deep) 100%);
  color: #fff;
  border-color: var(--copper-deep);
  box-shadow: 0 4px 14px rgba(18, 19, 20, 0.18);
}

.btn--gold:hover {
  background: linear-gradient(135deg, #101112 0%, #3c3e40 100%);
  border-color: var(--copper-deep);
  color: #fff;
  transform: translateY(-1px);
  box-shadow: 0 8px 22px rgba(18, 19, 20, 0.26);
}

.btn--gold:active {
  transform: translateY(0);
}

.hero__bullets {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 24px;
  padding-top: 28px;
  border-top: 1px solid var(--line);
  max-width: 600px;
}

.hero__bullets div strong {
  display: block;
  margin-bottom: 4px;
  font-family: var(--serif);
  font-size: 22px;
  font-weight: 500;
  color: var(--ink);
}

.hero__bullets div span {
  font-size: 13px;
  color: var(--muted);
  line-height: 1.45;
}

.hero__media {
  position: relative;
  aspect-ratio: 1 / 1;
  border-radius: var(--radius-lg);
  overflow: hidden;
  background: 
    radial-gradient(circle at 60% 30%, rgba(116, 112, 104, 0.32), transparent 55%),
    linear-gradient(160deg, #1c1c22, #101014);
  box-shadow: var(--shadow-md);
}

.hero__media img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform 0.5s ease, opacity 0.5s ease;
}

.hero__media img.is-changing {
  opacity: 0.4;
  transform: scale(1.04);
}

.hero__media-thumbs {
  position: absolute;
  left: 16px;
  bottom: 16px;
  display: flex;
  gap: 8px;
}

.hero__media-thumbs button {
  width: 56px;
  height: 56px;
  padding: 0;
  border-radius: var(--radius);
  border: 1.5px solid rgba(22, 22, 27, 0.5);
  background: rgba(22, 22, 27, 0.7);
  overflow: hidden;
  backdrop-filter: blur(8px);
  transition: 0.18s ease;
}

.hero__media-thumbs button.is-active {
  border-color: var(--copper);
  background: rgba(22, 22, 27, 0.95);
}

.hero__media-thumbs img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

/* PAGE HERO (catalog/service/...) =========================================*/
.page-hero {
  padding: 56px 0 30px;
  background: var(--paper);
  border-bottom: 1px solid var(--line-soft);
}

.page-hero__inner {
  width: min(1240px, calc(100% - 40px));
  margin: 0 auto;
}

.page-hero h1 {
  margin: 0 0 14px;
  max-width: 820px;
  font-family: var(--serif);
  font-size: clamp(32px, 4.4vw, 50px);
  font-weight: 500;
  line-height: 1.06;
  color: var(--ink);
  letter-spacing: -0.01em;
}

.page-hero h1 em {
  font-style: italic;
  color: var(--copper-deep);
}

.page-hero p {
  max-width: 720px;
  margin: 0;
  color: var(--muted);
  font-size: 16px;
}

/* SECTION ==================================================================*/
.section {
  padding: 72px 0;
}

.section--soft {
  background: var(--paper-soft);
}

.section--deep {
  background: var(--paper-deep);
}

.section--dark {
  background: var(--night);
  color: #fff;
}

.section--dark .eyebrow {
  color: var(--copper-soft);
}

.section--dark p {
  color: rgba(255, 255, 255, 0.72);
}

.section-heading {
  display: flex;
  align-items: end;
  justify-content: space-between;
  gap: 20px;
  margin-bottom: 28px;
}

.section-heading h2 {
  margin: 0;
  font-family: var(--serif);
  font-size: clamp(28px, 3.4vw, 40px);
  font-weight: 500;
  line-height: 1.1;
  letter-spacing: -0.01em;
}

.section-link {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  height: 40px;
  padding: 0 14px;
  border: 1px solid var(--line);
  border-radius: var(--radius);
  color: var(--ink);
  font-size: 14px;
  font-weight: 500;
  white-space: nowrap;
  transition: 0.18s ease;
}

.section-link:hover {
  border-color: var(--ink);
}

/* COLLECTION CARDS (lines: PRX/Seastar/Gentleman) =========================*/
.lines {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 16px;
}

.line-card {
  position: relative;
  display: block;
  padding: 24px;
  background: linear-gradient(180deg, #16161b 0%, rgba(22, 22, 27, 0.6) 100%);
  border: 1px solid var(--line-soft);
  border-radius: var(--radius-lg);
  transition: 0.25s ease;
  overflow: hidden;
}

.line-card::before {
  content: "";
  position: absolute;
  inset: 0;
  background: radial-gradient(circle at 80% 0%, rgba(116, 112, 104, 0.16), transparent 50%);
  opacity: 0;
  transition: opacity 0.25s ease;
  pointer-events: none;
}

.line-card:hover {
  transform: translateY(-4px);
  box-shadow: 0 18px 50px rgba(0, 0, 0, 0.1);
  border-color: var(--copper-soft);
}

.line-card:hover::before {
  opacity: 1;
}

.line-card__image {
  display: block;
  width: 100%;
  aspect-ratio: 1 / 1;
  margin-bottom: 18px;
  border-radius: var(--radius);
  object-fit: cover;
}

.line-card h3 {
  margin: 0 0 6px;
  font-family: var(--serif);
  font-size: 26px;
  font-weight: 500;
  letter-spacing: -0.01em;
}

.line-card p {
  margin: 0;
  color: var(--muted);
  font-size: 14px;
  line-height: 1.5;
}

.line-card__more {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  margin-top: 14px;
  font-size: 13px;
  font-weight: 500;
  color: var(--copper-deep);
}

/* PRODUCT GRID =============================================================*/
.product-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 18px;
}

/* Catalog pagination bar ("показать ещё" + count + infinite-scroll sentinel).
 * Built in JS and inserted right after #catalogGrid. Note: an author `display` on an element
 * beats the UA `[hidden]{display:none}` (author origin wins), so the [hidden] rules below are
 * required to actually hide the bar/button when there is nothing more to load. */
.catalog-more {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 12px;
  margin-top: 28px;
  text-align: center;
}
.catalog-more[hidden] { display: none; }
.catalog-more__status {
  margin: 0;
  font-size: 13px;
  letter-spacing: 0.03em;
  color: var(--ink-mute);
}
.catalog-more__btn {
  min-width: 220px;
}
.catalog-more__btn[hidden] { display: none; }
/* zero-footprint IntersectionObserver target; never intercepts pointer events */
.catalog-more__sentinel {
  width: 1px;
  height: 1px;
  pointer-events: none;
}

.product-card {
  display: grid;
  grid-template-rows: auto 1fr;
  background: #16161b;
  border: 1px solid var(--line-soft);
  border-radius: var(--radius-lg);
  overflow: hidden;
  cursor: pointer;
  user-select: none;
  -webkit-tap-highlight-color: transparent;
  transition: 0.2s ease;
}

.product-card:hover {
  border-color: var(--copper-soft);
  box-shadow: var(--shadow-md);
  transform: translateY(-3px);
}

.product-card:focus {
  outline: 0;
}

.product-card:focus-visible {
  outline: 2px solid var(--ink);
  outline-offset: 4px;
}

.product-media {
  position: relative;
  aspect-ratio: 1 / 1;
  background:
    radial-gradient(circle at 50% 40%, rgba(116, 112, 104, 0.18), transparent 60%),
    linear-gradient(155deg, #1b1b20, #121216);
  display: grid;
  place-items: center;
  overflow: hidden;
  /* scope the image's mix-blend-mode to this box so scrolling many cards doesn't
     re-composite against the whole page (the main cause of scroll jitter on mobile) */
  isolation: isolate;
}

.product-media img {
  width: 78%;
  height: 78%;
  object-fit: contain;
  mix-blend-mode: multiply;
  transition: transform 0.25s ease;
}

.product-card:hover .product-media img {
  transform: scale(1.04);
}

.stock-badge {
  position: absolute;
  bottom: 10px;
  right: 10px;
  padding: 4px 10px;
  border-radius: 999px;
  background: rgba(22, 22, 27, 0.95);
  border: 1px solid var(--line);
  color: var(--olive);
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.04em;
}

.stock-badge.is-out {
  color: var(--muted);
}

.product-body {
  display: grid;
  gap: 10px;
  padding: 18px 18px 20px;
}

.product-meta {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 10px;
}

.product-meta span {
  color: var(--muted);
  font-size: 12px;
  letter-spacing: 0.04em;
  text-transform: uppercase;
}

.product-meta strong {
  font-size: 16px;
  font-weight: 600;
  color: var(--ink);
}

.product-card h3 {
  margin: 0;
  min-height: 44px;
  font-family: var(--sans);
  font-size: 15px;
  font-weight: 500;
  line-height: 1.35;
  color: var(--ink);
}

.product-tags {
  display: flex;
  flex-wrap: wrap;
  gap: 4px;
  margin-top: 2px;
}

.product-tags span {
  padding: 3px 7px;
  border-radius: 4px;
  background: var(--paper-soft);
  color: var(--ink-mute);
  font-size: 11px;
  letter-spacing: 0.02em;
}

.product-actions {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 10px;
  margin-top: 10px;
}
/* out-of-stock cards: the long "Оставить заявку" / "Недоступно" gets its own full row
   (a half-column can't fit it, so it used to overflow the card) */
.product-actions:has(> button[data-waitlist]),
.product-actions:has(> button[disabled]) {
  grid-template-columns: 1fr;
}

.product-actions button,
.product-actions a {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 0;
  height: 40px;
  padding: 0 8px;
  border: 1px solid var(--ink);
  border-radius: var(--radius);
  background: var(--accent);
  color: #fff;
  font-size: 13px;
  font-weight: 500;
  transition: 0.2s ease;
  white-space: nowrap;
}

.product-actions button.primary,
.product-actions .add-cart-btn {
  background: var(--accent);
  color: #fff;
  border-color: var(--ink);
}

.product-actions button:hover {
  background: #000;
  border-color: #000;
}

.product-actions a {
  background: #16161b;
  color: var(--ink);
  border-color: var(--line);
}

.product-actions a:hover {
  border-color: var(--ink);
  background: var(--paper);
  transform: translateY(-1px);
  box-shadow: 0 6px 14px rgba(0, 0, 0, 0.06);
}

.product-card__qty {
  display: grid;
  grid-template-columns: 36px 1fr 36px;
  align-items: stretch;
  height: 40px;
  border: 1px solid var(--ink);
  border-radius: var(--radius);
  overflow: hidden;
  background: var(--accent);
  color: #fff;
}

.product-card__qty button {
  background: transparent;
  color: #fff;
  border: 0;
  font-size: 18px;
  font-weight: 500;
  line-height: 1;
  transition: background 0.18s ease;
  padding: 0;
  height: auto;
}

.product-card__qty button:hover {
  background: rgba(255, 255, 255, 0.12);
  transform: none;
  box-shadow: none;
}

.product-card__qty span {
  display: grid;
  place-items: center;
  font-size: 14px;
  font-weight: 600;
  letter-spacing: 0.02em;
}

.product-card__qty--lg {
  height: 48px;
  grid-template-columns: 44px 1fr 44px;
}

.product-card__qty--lg button {
  font-size: 22px;
}

.product-card__qty--lg span {
  font-size: 14px;
}

/* CATALOG ==================================================================*/
.catalog {
  display: grid;
  grid-template-columns: 240px minmax(0, 1fr);
  gap: 20px;
  padding: 32px 0 80px;
  width: min(1280px, calc(100% - 40px));
  margin: 0 auto;
}

.filter-shell {
  position: sticky;
  top: calc(var(--header-h) + 16px);
  align-self: start;
  padding: 20px;
  max-height: calc(100vh - var(--header-h) - 32px);
  overflow-y: auto;
  background: linear-gradient(180deg, #16161b 0%, rgba(22, 22, 27, 0.85) 100%);
  border: 1px solid var(--line-soft);
  border-radius: var(--radius-lg);
  box-shadow: 0 4px 20px rgba(0, 0, 0, 0.04);
  scrollbar-width: thin;
  scrollbar-color: var(--copper-soft) transparent;
}

.filter-shell::-webkit-scrollbar {
  width: 6px;
}

.filter-shell::-webkit-scrollbar-thumb {
  background: var(--copper-soft);
  border-radius: 3px;
}

.filter-shell::-webkit-scrollbar-track {
  background: transparent;
}

.filter-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 12px;
}

.filter-head__actions {
  display: inline-flex;
  align-items: center;
  gap: 8px;
}

.filter-head h2 {
  margin: 0;
  font-family: var(--sans);
  font-size: 16px;
  font-weight: 600;
}

.filter-head button {
  border: 0;
  background: transparent;
  color: var(--copper-deep);
  font-size: 13px;
  text-decoration: underline;
}

.mobile-filter-toggle,
.mobile-filter-close,
.catalog-filter-backdrop {
  display: none;
}

.mobile-account-link {
  display: none !important;
}

.price-filter {
  margin: 8px 0 14px;
}

.price-filter label {
  display: flex;
  justify-content: space-between;
  font-size: 13px;
  color: var(--muted);
  margin-bottom: 8px;
}

.price-filter strong {
  color: var(--ink);
  font-weight: 600;
}

.price-filter input {
  width: 100%;
  accent-color: var(--copper-deep);
}

.filter-block {
  border-top: 1px solid var(--line-soft);
  padding: 14px 0 8px;
}

.filter-block summary {
  cursor: pointer;
  font-size: 14px;
  font-weight: 600;
  color: var(--ink);
  list-style: none;
  display: flex;
  align-items: center;
  justify-content: space-between;
}

.filter-block summary::after {
  content: "+";
  color: var(--muted);
  font-weight: 400;
  font-size: 18px;
  line-height: 1;
}

.filter-block[open] summary::after {
  content: "–";
}

.filter-block > div {
  display: grid;
  gap: 6px;
  margin-top: 10px;
}

.filter-check {
  display: grid;
  grid-template-columns: auto 1fr auto;
  gap: 8px;
  align-items: center;
  padding: 4px 0;
  font-size: 13px;
  color: var(--ink-mute);
  cursor: pointer;
}

.filter-check small {
  color: var(--muted);
  font-size: 12px;
}

.filter-check input {
  accent-color: var(--ink);
  width: 14px;
  height: 14px;
}

.catalog-main {
  min-width: 0;
  min-height: calc(100vh - var(--header-h) - 80px);
}

.catalog-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
}

.catalog-head h2 {
  margin: 0;
  display: inline-flex;
  align-items: center;
  gap: 14px;
  font-family: var(--serif);
  font-size: 28px;
  font-weight: 500;
  line-height: 1;
}

.catalog-head h2 span {
  display: inline-grid;
  place-items: center;
  height: 28px;
  padding: 0 10px;
  border-radius: 999px;
  background: var(--paper-soft);
  border: 1px solid var(--line-soft);
  color: var(--muted);
  font-family: var(--sans);
  font-size: 13px;
  font-weight: 500;
  transform: translateY(3px);
}

.catalog-toolbar {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 220px;
  gap: 10px;
  margin: 18px 0 22px;
}

.catalog-control {
  height: 44px;
  padding: 0 14px;
  border: 1px solid var(--line);
  border-radius: var(--radius);
  background: #16161b;
  color: var(--ink);
  font-size: 14px;
  outline: 0;
}

.catalog-control:focus {
  border-color: var(--ink);
}

.empty-state {
  grid-column: 1 / -1;
  padding: 56px 24px;
  text-align: center;
  background: #16161b;
  border: 1px dashed var(--line);
  border-radius: var(--radius-lg);
}

.empty-state h3 {
  margin: 0 0 6px;
  font-family: var(--serif);
  font-size: 24px;
  font-weight: 500;
}

.empty-state p {
  margin: 0;
  color: var(--muted);
}

/* PRODUCT PAGE =============================================================*/
.product-detail {
  display: grid;
  grid-template-columns: minmax(0, 1.05fr) minmax(380px, 0.95fr);
  gap: 32px;
  padding: 40px 0 80px;
  width: min(1240px, calc(100% - 40px));
  margin: 0 auto;
}

.product-gallery {
  display: grid;
  gap: 12px;
  align-self: start;
  position: sticky;
  top: calc(var(--header-h) + 16px);
}

.product-gallery__main {
  position: relative;
  aspect-ratio: 1 / 1;
  background: 
    radial-gradient(circle at 50% 40%, rgba(116, 112, 104, 0.2), transparent 56%),
    linear-gradient(160deg, #1b1b20, #121216);
  border-radius: var(--radius-lg);
  overflow: hidden;
  touch-action: pan-y;
  cursor: grab;
}

.product-gallery__main.is-grabbing {
  cursor: grabbing;
}

.product-gallery__track {
  position: relative;
  width: 100%;
  height: 100%;
}

.product-gallery__track img {
  position: absolute;
  inset: 0;
  width: 80%;
  height: 80%;
  margin: auto;
  object-fit: contain;
  mix-blend-mode: multiply;
  opacity: 0;
  transition: opacity 0.4s ease, transform 0.4s ease;
  pointer-events: none;
}

.product-gallery__track img.is-active {
  opacity: 1;
}

.product-gallery__nav {
  position: absolute;
  top: 50%;
  width: 40px;
  height: 40px;
  transform: translateY(-50%);
  border: 1px solid var(--line);
  border-radius: 50%;
  background: rgba(22, 22, 27, 0.92);
  color: var(--ink);
  font-size: 18px;
  display: grid;
  place-items: center;
  cursor: pointer;
  transition: 0.18s ease;
  backdrop-filter: blur(8px);
  z-index: 2;
}

.product-gallery__nav:hover {
  background: var(--accent);
  color: #fff;
  border-color: var(--ink);
  transform: translateY(-50%) scale(1.06);
}

.product-gallery__nav.prev {
  left: 16px;
}

.product-gallery__nav.next {
  right: 16px;
}

.product-gallery__dots {
  position: absolute;
  left: 50%;
  bottom: 16px;
  transform: translateX(-50%);
  display: flex;
  gap: 6px;
  z-index: 2;
}

.product-gallery__dots span {
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: rgba(0, 0, 0, 0.2);
  transition: 0.2s ease;
}

.product-gallery__dots span.is-active {
  background: var(--copper);
  width: 18px;
  border-radius: 3px;
}

.product-gallery__thumbs {
  display: grid;
  grid-template-columns: repeat(5, 1fr);
  gap: 8px;
}

.product-gallery__thumbs button {
  aspect-ratio: 1 / 1;
  background: #16161b;
  border: 1px solid var(--line-soft);
  border-radius: var(--radius);
  padding: 4px;
  overflow: hidden;
  transition: 0.18s ease;
  cursor: pointer;
}

.product-gallery__thumbs button:hover {
  border-color: var(--copper-soft);
  transform: translateY(-1px);
}

.product-gallery__thumbs button.is-active {
  border-color: var(--copper);
  box-shadow: 0 0 0 1px var(--copper);
}

.product-gallery__thumbs img {
  width: 100%;
  height: 100%;
  object-fit: contain;
}

.product-info {
  display: grid;
  align-content: start;
  gap: 18px;
}

.product-info__crumbs {
  font-size: 13px;
  color: var(--muted);
}

.product-info h1 {
  margin: 0;
  font-family: var(--serif);
  font-size: clamp(28px, 3vw, 38px);
  font-weight: 500;
  line-height: 1.1;
  letter-spacing: -0.005em;
}

.product-info__lead {
  margin: 0;
  font-size: 16px;
  color: var(--muted);
  line-height: 1.6;
}

.product-info__price-row {
  display: flex;
  align-items: center;
  gap: 14px;
  padding: 16px 0;
  border-top: 1px solid var(--line);
  border-bottom: 1px solid var(--line);
}

.product-info__price {
  font-family: var(--serif);
  font-size: 32px;
  font-weight: 500;
  color: var(--ink);
}

.product-info__stock {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 4px 10px;
  border-radius: 999px;
  background: rgba(91, 107, 83, 0.1);
  color: var(--olive);
  font-size: 12px;
  font-weight: 600;
}

.product-info__stock::before {
  content: "";
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: var(--olive);
}

.product-info__actions {
  display: grid;
  grid-template-columns: 1fr 1fr;   /* adjacent CTAs equal width (was 1fr auto → uneven) */
  gap: 10px;
}
.product-info__actions > .btn,
.product-info__actions .product-card__qty--lg { min-height: 48px; }

.specs {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0;
  border: 1px solid var(--line-soft);
  border-radius: var(--radius-lg);
  overflow: hidden;
  background: #16161b;
}

.specs > div {
  display: grid;
  grid-template-columns: 1fr auto;
  gap: 12px;
  padding: 12px 16px;
  border-bottom: 1px solid var(--line-soft);
  font-size: 14px;
}

.specs > div:nth-last-child(-n + 2) {
  border-bottom: 0;
}

.specs > div:nth-child(odd) {
  border-right: 1px solid var(--line-soft);
}

.specs dt {
  margin: 0;
  color: var(--muted);
}

.specs dd {
  margin: 0;
  font-weight: 500;
  text-align: right;
  color: var(--ink);
}

.tabs {
  margin-top: 8px;
}

.tabs-nav {
  display: flex;
  gap: 6px;
  margin-bottom: 16px;
  border-bottom: 1px solid var(--line);
}

.tabs-nav button {
  position: relative;
  padding: 12px 16px;
  border: 0;
  background: transparent;
  color: var(--muted);
  font-size: 14px;
  font-weight: 500;
  transition: color 0.18s ease;
}

.tabs-nav button:hover {
  color: var(--ink);
}

.tabs-nav button.is-active {
  color: var(--ink);
}

.tabs-nav button.is-active::after {
  content: "";
  position: absolute;
  left: 14px;
  right: 14px;
  bottom: -1px;
  height: 2px;
  background: var(--copper);
}

.tabs-content {
  position: relative;
  min-height: 380px;
  /* all panels share one grid cell: the block is always as tall as the TALLEST panel,
     so switching Характеристики/Доставка/Гарантия can't shift the content below */
  display: grid;
}

.tab-panel {
  grid-area: 1 / 1;
  visibility: hidden;
  font-size: 14px;
  color: var(--ink-mute);
  line-height: 1.65;
}

.tab-panel p {
  margin: 0 0 10px;
}

.tab-panel ul {
  margin: 0;
  padding-left: 20px;
}

.tab-panel.is-active {
  visibility: visible;
}

/* ADVANTAGES grid ==========================================================*/
.advantages {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 14px;
}

.advantage {
  padding: 24px;
  background: #16161b;
  border: 1px solid var(--line-soft);
  border-radius: var(--radius-lg);
}

.advantage__icon {
  width: 36px;
  height: 36px;
  margin-bottom: 14px;
  display: grid;
  place-items: center;
  border-radius: var(--radius);
  background: rgba(255, 255, 255, 0.14);
  color: var(--copper-deep);
}

.advantage__icon svg {
  width: 20px;
  height: 20px;
  stroke: currentColor;
  fill: none;
  stroke-width: 1.6;
}

.advantage h3 {
  margin: 0 0 6px;
  font-family: var(--sans);
  font-size: 16px;
  font-weight: 600;
  color: var(--ink);
}

.advantage p {
  margin: 0;
  color: var(--muted);
  font-size: 13.5px;
  line-height: 1.55;
}

/* CONTACT BLOCK on page ====================================================*/
.contact-cta {
  display: grid;
  grid-template-columns: 1fr auto;
  gap: 24px;
  align-items: center;
  padding: 36px 40px;
  background: var(--night);
  color: #fff;
  border-radius: var(--radius-lg);
}

.contact-cta h2 {
  margin: 0 0 4px;
  font-family: var(--serif);
  font-size: clamp(24px, 2.6vw, 32px);
  font-weight: 500;
  letter-spacing: -0.01em;
}

.contact-cta p {
  margin: 0;
  color: rgba(255, 255, 255, 0.7);
  max-width: 540px;
  font-size: 15px;
}

.contact-cta-actions {
  display: flex;
  gap: 10px;
  flex-wrap: wrap;
}

.contact-cta-actions .btn--ghost {
  border-color: rgba(255, 255, 255, 0.2);
  color: #fff;
}

.contact-cta-actions .btn--ghost:hover {
  border-color: #16161b;
}

/* CONTACTS PAGE ============================================================*/
.contacts {
  display: grid;
  grid-template-columns: minmax(280px, 0.85fr) minmax(0, 1.15fr);
  gap: 28px;
  padding: 40px 0 80px;
}

.contact-list {
  display: grid;
  gap: 14px;
}

.contact-card {
  padding: 22px;
  background: #16161b;
  border: 1px solid var(--line);
  border-radius: var(--radius-lg);
}

.contact-card span {
  display: block;
  margin-bottom: 6px;
  color: var(--muted);
  font-size: 12px;
  letter-spacing: 0.06em;
  text-transform: uppercase;
}

.contact-card a,
.contact-card strong {
  display: block;
  font-family: var(--serif);
  font-size: 22px;
  font-weight: 500;
  color: var(--ink);
  letter-spacing: -0.005em;
}

.contact-card p {
  margin: 0;
  color: var(--ink-mute);
  font-size: 15px;
  line-height: 1.5;
}

.contact-map {
  position: relative;
  aspect-ratio: 4 / 3;
  border-radius: var(--radius-lg);
  overflow: hidden;
  background: var(--paper-deep);
  border: 1px solid var(--line);
}

.contact-map iframe {
  width: 100%;
  height: 100%;
  border: 0;
  display: block;
}

/* CART =====================================================================*/
.cart-page {
  padding: 40px 0 80px;
}

.cart-empty {
  max-width: 480px;
  margin: 40px auto;
  padding: 56px 32px;
  text-align: center;
  background: #16161b;
  border: 1px solid var(--line);
  border-radius: var(--radius-lg);
}

.cart-empty__icon {
  width: 56px;
  height: 56px;
  margin: 0 auto 18px;
  display: grid;
  place-items: center;
  border-radius: 50%;
  background: rgba(255, 255, 255, 0.14);
  color: var(--copper-deep);
}

.cart-empty h2 {
  margin: 0 0 8px;
  font-family: var(--serif);
  font-size: 28px;
  font-weight: 500;
}

.cart-empty p {
  margin: 0 0 22px;
  color: var(--muted);
}

.cart-empty__actions {
  display: flex;
  gap: 10px;
  justify-content: center;
  flex-wrap: wrap;
}

.cart-layout {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 360px;
  gap: 24px;
}

.cart-list {
  display: grid;
  gap: 12px;
}

.cart-item {
  display: grid;
  grid-template-columns: 110px minmax(0, 1fr) auto;
  gap: 16px;
  padding: 14px;
  background: #16161b;
  border: 1px solid var(--line-soft);
  border-radius: var(--radius-lg);
  align-items: center;
}

.cart-item__media {
  aspect-ratio: 1 / 1;
  border-radius: var(--radius);
  background: 
    radial-gradient(circle at 50% 40%, rgba(116, 112, 104, 0.18), transparent 60%),
    linear-gradient(155deg, #1b1b20, #121216);
  display: grid;
  place-items: center;
}

.cart-item__media img {
  width: 80%;
  height: 80%;
  object-fit: contain;
  mix-blend-mode: multiply;
}

.cart-item__info h3 {
  margin: 0 0 4px;
  font-family: var(--sans);
  font-size: 15px;
  font-weight: 500;
}

.cart-item__info p {
  margin: 0;
  font-size: 13px;
  color: var(--muted);
}

.cart-item__price {
  text-align: right;
}

.cart-item__price strong {
  display: block;
  font-family: var(--serif);
  font-size: 18px;
  font-weight: 500;
  color: var(--ink);
}

.cart-item__remove {
  background: transparent;
  border: 0;
  color: var(--muted);
  font-size: 12px;
  text-decoration: underline;
  margin-top: 4px;
}

.cart-summary {
  align-self: start;
  position: sticky;
  top: calc(var(--header-h) + 16px);
  padding: 24px;
  background: #16161b;
  border: 1px solid var(--line);
  border-radius: var(--radius-lg);
  display: grid;
  gap: 14px;
}

.cart-summary h3 {
  margin: 0;
  font-family: var(--serif);
  font-size: 22px;
  font-weight: 500;
}

.cart-summary__row {
  display: flex;
  justify-content: space-between;
  font-size: 14px;
  color: var(--ink-mute);
}

.cart-summary__total {
  display: flex;
  justify-content: space-between;
  font-family: var(--serif);
  font-size: 22px;
  font-weight: 500;
  padding-top: 14px;
  border-top: 1px solid var(--line);
  color: var(--ink);
}

/* PROSE PAGES (warranty / offer) ==========================================*/
.prose {
  width: min(820px, calc(100% - 40px));
  margin: 0 auto;
  padding: 40px 0 80px;
}

.prose h2 {
  margin: 28px 0 12px;
  font-family: var(--serif);
  font-size: 24px;
  font-weight: 500;
}

.prose h3 {
  margin: 22px 0 8px;
  font-family: var(--sans);
  font-size: 16px;
  font-weight: 600;
}

.prose p,
.prose li {
  font-size: 15.5px;
  line-height: 1.65;
  color: var(--ink-mute);
}

.prose ul {
  padding-left: 22px;
}

.prose strong {
  color: var(--ink);
}

.prose .lead {
  font-size: 17px;
  color: var(--ink-soft);
}

/* FOOTER ===================================================================*/
.site-footer {
  background: var(--night);
  color: rgba(255, 255, 255, 0.72);
  padding: 56px 0 32px;
}

.site-footer__grid {
  display: grid;
  grid-template-columns: minmax(260px, 1.25fr) minmax(130px, 0.75fr) minmax(170px, 0.85fr) minmax(230px, 1fr);
  gap: 32px;
  align-items: start;
  width: min(1240px, calc(100% - 40px));
  margin: 0 auto 40px;
}

.site-footer__brand img {
  height: 44px;
  width: auto;
  display: block;
  margin-bottom: 14px;
  filter: brightness(0) invert(1) opacity(0.95);
}

.site-footer__brand p {
  margin: 0;
  font-size: 14px;
  line-height: 1.6;
  color: rgba(255, 255, 255, 0.6);
  max-width: 320px;
}

.site-footer h4 {
  margin: 0 0 14px;
  font-family: var(--sans);
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: rgba(255, 255, 255, 0.85);
}

.site-footer ul {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  gap: 10px;
}

.site-footer a {
  color: rgba(255, 255, 255, 0.7);
  font-size: 14px;
  transition: color 0.18s ease;
}

.site-footer a:hover {
  color: #fff;
}

.site-footer__bottom {
  width: min(1240px, calc(100% - 40px));
  margin: 0 auto;
  padding-top: 28px;
  border-top: 1px solid rgba(255, 255, 255, 0.1);
  display: flex;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: 12px;
  font-size: 12px;
  color: rgba(255, 255, 255, 0.5);
}

/* DIALOG (quick view) ======================================================*/
.product-dialog {
  width: min(960px, calc(100% - 32px));
  max-height: calc(100vh - 32px);
  max-height: calc(100dvh - 32px);
  padding: 0;
  border: 0;
  border-radius: var(--radius-lg);
  background: #16161b;
  box-shadow: 0 30px 120px rgba(0, 0, 0, 0.36);
  overflow: auto;
  -webkit-overflow-scrolling: touch;
  overscroll-behavior: contain;
}

.product-dialog::backdrop {
  background: rgba(20, 17, 13, 0.62);
  backdrop-filter: blur(6px);
}

.dialog-back {
  position: absolute;
  z-index: 3;
  top: 16px;
  left: 16px;
  height: 38px;
  padding: 0 14px 0 10px;
  display: inline-flex;
  align-items: center;
  gap: 6px;
  border: 1px solid var(--line);
  border-radius: 999px;
  background: rgba(22, 22, 27, 0.94);
  color: var(--ink);
  font-size: 13px;
  font-weight: 500;
  cursor: pointer;
  backdrop-filter: blur(8px);
  transition: 0.18s ease;
}

.dialog-back:hover {
  background: var(--accent);
  color: #fff;
  border-color: var(--ink);
}

.dialog-back:focus,
.dialog-close:focus {
  outline: none;
}

.dialog-back:focus-visible,
.dialog-close:focus-visible {
  outline: none;
  border-color: var(--ink);
  box-shadow: 0 0 0 2px rgba(0, 0, 0, 0.12);
}

.dialog-back svg {
  width: 16px;
  height: 16px;
  flex: 0 0 auto;
}

/* keep the "Выйти из предпросмотра" label compact — it must never overrun the media edge */
.dialog-back {
  max-width: calc(100% - 28px);
}

.dialog-back span {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.dialog-close {
  position: absolute;
  z-index: 3;
  top: 16px;
  right: 16px;
  width: 38px;
  height: 38px;
  border: 1px solid var(--line);
  border-radius: 50%;
  background: rgba(22, 22, 27, 0.94);
  color: var(--ink);
  font-size: 22px;
  line-height: 1;
  display: grid;
  place-items: center;
  cursor: pointer;
  backdrop-filter: blur(8px);
  transition: 0.18s ease;
}

.dialog-close:hover {
  background: var(--accent);
  color: #fff;
  border-color: var(--ink);
}

.dialog-layout {
  display: grid;
  grid-template-columns: minmax(280px, 0.95fr) minmax(0, 1.05fr);
  align-items: stretch;
}

.dialog-media {
  position: relative;
  display: grid;
  grid-template-rows: minmax(0, 1fr) auto;
  background: 
    radial-gradient(circle at 50% 40%, rgba(116, 112, 104, 0.2), transparent 56%),
    linear-gradient(155deg, #1b1b20, #121216);
  min-height: 460px;
}

.dialog-media img#dialogMainImage {
  width: 84%;
  height: 84%;
  margin: auto;
  object-fit: contain;
  mix-blend-mode: multiply;
}

.dialog-thumbs {
  display: grid;
  grid-template-columns: repeat(5, 1fr);
  gap: 6px;
  padding: 12px;
}

.dialog-thumbs button {
  aspect-ratio: 1 / 1;
  padding: 4px;
  border: 1px solid var(--line);
  border-radius: var(--radius);
  background: rgba(22, 22, 27, 0.85);
  cursor: pointer;
  transition: 0.18s ease;
  overflow: hidden;
}

.dialog-thumbs button:hover {
  border-color: var(--copper-soft);
}

.dialog-thumbs button.is-active {
  border-color: var(--copper);
  box-shadow: 0 0 0 1px var(--copper);
}

.dialog-thumbs img {
  width: 100%;
  height: 100%;
  object-fit: contain;
  mix-blend-mode: multiply;
}

.dialog-info {
  display: grid;
  align-content: space-between;
  gap: 18px;
  padding: 56px 32px 28px;
  background: #16161b;
}

.dialog-info h3 {
  margin: 8px 0 0;
  font-family: var(--serif);
  font-size: clamp(22px, 2.4vw, 28px);
  font-weight: 500;
  line-height: 1.15;
  letter-spacing: -0.005em;
}

.dialog-info__lead {
  margin: 10px 0 0;
  font-size: 14px;
  line-height: 1.55;
  color: var(--muted);
}

.dialog-info__price-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 14px 0;
  border-top: 1px solid var(--line-soft);
  border-bottom: 1px solid var(--line-soft);
}

.dialog-info .price {
  font-family: var(--serif);
  font-size: 28px;
  font-weight: 500;
  color: var(--ink);
}

.dialog-info__stock {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 4px 10px;
  border-radius: 999px;
  background: rgba(91, 107, 83, 0.12);
  color: var(--olive);
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0.02em;
}

.dialog-info__stock::before {
  content: "";
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: var(--olive);
}

.dialog-info__stock--out {
  background: rgba(107, 99, 88, 0.1);
  color: var(--muted);
}

.dialog-info__stock--out::before {
  background: var(--muted);
}

.dialog-info .specs {
  grid-template-columns: 1fr 1fr;
  border-radius: var(--radius);
  background: var(--paper-soft);
  border-color: var(--line-soft);
}

.dialog-info .specs > div {
  padding: 10px 14px;
  background: transparent;
  border-color: var(--line-soft);
}

.dialog-info__note {
  margin: 0;
  font-size: 12px;
  color: var(--muted);
  text-align: center;
  padding-top: 6px;
  border-top: 1px dashed var(--line-soft);
}

.dialog-actions {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 8px;
}

.dialog-actions button,
.dialog-actions a {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  height: 46px;
  padding: 0 14px;
  border-radius: var(--radius);
  border: 1px solid var(--line);
  background: #16161b;
  color: var(--ink);
  font-size: 14px;
  font-weight: 500;
  cursor: pointer;
  transition: 0.2s ease;
}

.dialog-actions button.primary,
.dialog-actions a.primary {
  background: var(--accent);
  color: #fff;
  border-color: var(--ink);
  box-shadow: 0 4px 12px rgba(14, 14, 12, 0.18);
}

.dialog-actions button.primary:hover,
.dialog-actions a.primary:hover {
  background: #000;
  transform: translateY(-1px);
  box-shadow: 0 8px 20px rgba(14, 14, 12, 0.26);
}

.dialog-actions a:not(.primary):hover {
  border-color: var(--ink);
  background: var(--paper);
  transform: translateY(-1px);
}

.dialog-actions .product-card__qty {
  height: 46px;
}

/* TOAST ====================================================================*/
.toast {
  position: fixed;
  z-index: 90;
  right: 24px;
  bottom: 24px;
  max-width: 320px;
  padding: 14px 18px;
  border-radius: var(--radius);
  background: var(--accent);
  color: #fff;
  font-size: 14px;
  box-shadow: var(--shadow-lg);
  opacity: 0;
  transform: translateY(12px);
  pointer-events: none;
  transition: 0.24s ease;
}

.toast.is-visible {
  opacity: 1;
  transform: translateY(0);
}

/* RESPONSIVE ===============================================================*/
@media (max-width: 1180px) {
  .site-header__inner {
    width: min(1240px, calc(100% - 24px));
    gap: 16px;
  }

  .brand img {
    width: clamp(230px, 22vw, 285px);
    height: auto;
  }

  .nav-links a {
    padding: 0 12px;
  }

  .account-link,
  .tg-link,
  .avito-link,
  .cart-button {
    padding-left: 10px;
    padding-right: 10px;
  }
}

@media (max-width: 1100px) {
  .product-grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }

  .lines {
    grid-template-columns: repeat(3, 1fr);
  }

  .advantages {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .hero__shell {
    grid-template-columns: minmax(0, 1fr);
  }

  .hero__media {
    max-width: 540px;
    margin: 0 auto;
    width: 100%;
  }

  .catalog,
  .product-detail,
  .contacts,
  .cart-layout,
  .account-auth,
  .account-dashboard {
    grid-template-columns: 1fr;
  }

  .filter-shell,
  .cart-summary,
  .account-sidebar {
    position: static;
  }

  .site-footer__grid {
    grid-template-columns: minmax(220px, 1.2fr) minmax(120px, 0.8fr) minmax(160px, 0.9fr) minmax(200px, 1fr);
    gap: 24px;
  }
}

@media (max-width: 860px) {
  :root {
    --header-h: 64px;
  }

  .site-header__inner {
    grid-template-columns: auto 1fr auto;
    gap: 12px;
  }

  .brand img {
    width: clamp(190px, 36vw, 235px);
    max-width: calc(100vw - 148px);
    height: auto;
  }

  .nav-links,
  .account-link,
  .header-actions .avito-link,
  .header-actions .tg-link {
    display: none;
  }

  .menu-toggle {
    display: inline-flex;
    justify-self: end;
    grid-column: 3;
  }

  .header-actions {
    grid-column: 2;
    justify-self: end;
  }

  .cart-button span {
    display: none;
  }

  .cart-button {
    padding: 0 10px;
    gap: 6px;
  }

  .site-header {
    z-index: 1000;
  }

  body.menu-open .nav-links {
    display: flex !important;
    position: fixed;
    z-index: 1010;
    top: var(--header-h);
    left: 12px;
    right: 12px;
    flex-direction: column;
    gap: 4px;
    padding: 14px;
    background: rgba(11, 11, 13, 0.98);
    backdrop-filter: blur(14px);
    border: 1px solid var(--line-soft);
    border-radius: var(--radius-lg);
    box-shadow: 0 20px 60px rgba(0, 0, 0, 0.18);
  }

  body.menu-open .nav-links a {
    height: 48px;
    padding: 0 16px;
    border-radius: var(--radius);
    font-size: 16px;
    justify-content: flex-start;
  }

  body.menu-open .nav-links a:not(.is-active):hover {
    background: rgba(22, 22, 27, 0.7);
  }

  body.menu-open .nav-marker {
    display: none;
  }

  body.menu-open .nav-item {
    display: block;
    width: 100%;
  }

  body.menu-open .nav-links.has-active > a.is-active,
  body.menu-open .nav-links.has-active > .nav-item > a.is-active {
    background: var(--accent);
    color: #fff;
  }

  body.menu-open .catalog-menu {
    position: static;
    width: 100%;
    margin: 4px 0 10px;
    padding: 10px;
    opacity: 1;
    pointer-events: auto;
    transform: none;
    border-radius: var(--radius);
    box-shadow: inset 0 1px 0 rgba(22, 22, 27, 0.55);
  }

  body.menu-open .catalog-menu::before {
    display: none;
  }

  body.menu-open .catalog-menu__top {
    padding: 2px 2px 10px;
  }

  body.menu-open .catalog-menu__top strong {
    font-size: 22px;
  }

  body.menu-open .catalog-menu__grid {
    grid-template-columns: 1fr;
  }

  body.menu-open .nav-links .catalog-menu a {
    height: auto;
    min-height: 0;
    padding: 8px 10px;
    font-size: 13px;
    justify-content: stretch;
  }

  body.menu-open .nav-links .catalog-menu__top a {
    height: 32px;
    align-items: center;
    justify-content: center;
    padding: 0 12px;
    font-size: 12px;
  }

  .product-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .lines {
    grid-template-columns: 1fr;
  }

  .advantages {
    grid-template-columns: repeat(2, 1fr);
  }

  .section {
    padding: 56px 0;
  }

  .section-heading {
    flex-direction: column;
    align-items: flex-start;
    gap: 12px;
  }

  .contact-cta {
    grid-template-columns: 1fr;
    padding: 28px;
  }

  .dialog-layout {
    grid-template-columns: 1fr;
  }

  .product-dialog {
    width: calc(100% - 16px);
    max-height: calc(100vh - 16px);
    max-height: calc(100dvh - 16px);
    border-radius: var(--radius);
  }

  .dialog-media {
    min-height: auto;
    height: min(48vh, 360px);
    height: min(48dvh, 360px);
  }

  .dialog-info {
    padding: 24px;
    align-content: start;
  }

  .product-info__actions,
  .product-actions {
    grid-template-columns: 1fr;
  }

  .account-topbar,
  .account-two-col {
    grid-template-columns: 1fr;
  }

  .account-topbar {
    display: grid;
    align-items: start;
  }

  .account-stat-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .specs {
    grid-template-columns: 1fr;
  }

  .specs > div:nth-child(odd) {
    border-right: 0;
  }

  .specs > div {
    border-bottom: 1px solid var(--line-soft) !important;
  }

  .specs > div:last-child {
    border-bottom: 0 !important;
  }

  .site-footer__grid {
    grid-template-columns: minmax(0, 1.2fr) minmax(0, 0.8fr);
    gap: 28px 20px;
  }

  .site-footer__brand {
    grid-column: 1 / -1;
  }

  .site-footer__bottom {
    flex-direction: column;
  }
}

@media (max-width: 560px) {
  .site-footer {
    padding: 40px 0 28px;
  }

  .site-footer__grid {
    width: min(1240px, calc(100% - 28px));
    grid-template-columns: 1fr 1fr;
    gap: 24px 16px;
  }

  .site-footer__brand,
  .site-footer__grid > div:last-child {
    grid-column: 1 / -1;
  }

  .site-footer__brand p {
    max-width: none;
  }

  .site-footer__bottom {
    width: min(1240px, calc(100% - 28px));
  }

  .product-grid {
    grid-template-columns: 1fr;
  }

  .advantages {
    grid-template-columns: 1fr;
  }

  .catalog-toolbar {
    grid-template-columns: 1fr;
  }

  .cart-item {
    grid-template-columns: 80px minmax(0, 1fr);
  }

  .cart-item__price {
    grid-column: 1 / -1;
    text-align: left;
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding-top: 8px;
    border-top: 1px solid var(--line-soft);
  }

  .hero__bullets {
    grid-template-columns: 1fr;
    gap: 14px;
  }

  .dialog-actions {
    grid-template-columns: 1fr;
  }

  .dialog-media {
    height: min(42vh, 300px);
    height: min(42dvh, 300px);
  }

  .dialog-close,
  .dialog-back {
    top: 10px;
  }

  .dialog-close {
    right: 10px;
  }

  .dialog-back {
    left: 10px;
  }

  .account-form-grid,
  .checkout-delivery-grid,
  .account-stat-grid {
    grid-template-columns: 1fr;
  }
}

/* ETYMOLOGY block ==========================================================*/
.etymology {
  position: relative;
  padding: 36px 40px;
  margin: 0 auto;
  max-width: 920px;
  border-radius: var(--radius-lg);
  background: 
    radial-gradient(circle at 90% 0%, rgba(116, 112, 104, 0.25), transparent 50%),
    linear-gradient(135deg, var(--paper-soft) 0%, var(--paper-deep) 100%);
  border: 1px solid var(--line-soft);
  text-align: center;
  overflow: hidden;
}

.etymology::before {
  content: "";
  position: absolute;
  top: 24px;
  left: 50%;
  transform: translateX(-50%);
  width: 48px;
  height: 1px;
  background: var(--copper);
}

.etymology h3 {
  margin: 18px 0 12px;
  font-family: var(--serif);
  font-style: italic;
  font-size: clamp(22px, 2.4vw, 30px);
  font-weight: 500;
  color: var(--ink);
  letter-spacing: -0.005em;
}

.etymology h3 strong {
  font-style: normal;
  font-weight: 500;
}

.etymology__greek {
  display: inline-block;
  padding: 4px 12px;
  background: rgba(22, 22, 27, 0.5);
  border-radius: 999px;
  font-size: 13px;
  color: var(--copper-deep);
  letter-spacing: 0.04em;
  margin-bottom: 10px;
}

.etymology p {
  margin: 0 auto;
  max-width: 640px;
  font-size: 15.5px;
  line-height: 1.65;
  color: var(--ink-mute);
}

/* CART expanded — checkout / extras =======================================*/
.cart-checkout-card {
  display: grid;
  gap: 14px;
  padding: 24px;
  background: linear-gradient(180deg, #16161b 0%, rgba(22, 22, 27, 0.85) 100%);
  border: 1px solid var(--line-soft);
  border-radius: var(--radius-lg);
}

.cart-checkout-card h3 {
  margin: 0;
  font-family: var(--serif);
  font-size: 22px;
  font-weight: 500;
}

.cart-checkout-card label {
  display: grid;
  gap: 4px;
  font-size: 13px;
  color: var(--muted);
}

.cart-checkout-card input,
.cart-checkout-card select,
.cart-checkout-card textarea {
  height: 44px;
  padding: 0 12px;
  border: 1px solid var(--line);
  border-radius: var(--radius);
  background: #16161b;
  color: var(--ink);
  font-size: 14px;
  outline: 0;
  transition: 0.18s ease;
}

.cart-checkout-card textarea {
  height: auto;
  padding: 12px;
  min-height: 80px;
  resize: vertical;
}

.cart-checkout-card input:focus,
.cart-checkout-card select:focus,
.cart-checkout-card textarea:focus {
  border-color: var(--ink);
}

.cart-checkout-card .delivery-options {
  display: grid;
  gap: 8px;
}

.cart-checkout-card .delivery-options label {
  display: grid;
  grid-template-columns: auto 1fr auto;
  gap: 12px;
  align-items: center;
  padding: 14px 16px;
  border: 1px solid var(--line);
  border-radius: var(--radius);
  cursor: pointer;
  transition: 0.18s ease;
}

.cart-checkout-card .delivery-options label:hover {
  border-color: var(--copper-soft);
  background: rgba(22, 22, 27, 0.5);
}

.cart-checkout-card .delivery-options input:checked + .opt {
  font-weight: 600;
}

.cart-checkout-card .delivery-options label:has(input:checked) {
  border-color: var(--ink);
  background: var(--paper);
}

.cart-checkout-card .opt {
  display: grid;
  gap: 2px;
  color: var(--ink);
  font-size: 14px;
}

.cart-checkout-card .opt small {
  color: var(--muted);
  font-size: 12.5px;
}

.cart-checkout-card .price {
  font-weight: 600;
  color: var(--ink);
}

.checkout-delivery-fields {
  display: grid;
  gap: 12px;
  padding: 16px;
  border: 1px solid var(--line-soft);
  border-radius: var(--radius);
  background: var(--paper);
}

.checkout-delivery-fields[hidden] {
  display: none;
}

.checkout-delivery-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 10px;
}

.cart-info-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 14px;
  margin-top: 20px;
}

.cart-info-card {
  padding: 20px;
  background: #16161b;
  border: 1px solid var(--line-soft);
  border-radius: var(--radius-lg);
}

.cart-info-card h4 {
  margin: 0 0 6px;
  font-family: var(--sans);
  font-size: 14px;
  font-weight: 600;
}

.cart-info-card p {
  margin: 0;
  color: var(--muted);
  font-size: 13.5px;
  line-height: 1.5;
}

/* ACCOUNT ==================================================================*/
.account-page {
  padding: 40px 0 80px;
}

.account-auth {
  display: grid;
  grid-template-columns: minmax(0, 1.05fr) minmax(320px, 0.95fr);
  gap: 24px;
  align-items: stretch;
}

.account-auth__intro,
.account-login-card,
.account-sidebar,
.account-card {
  background: #16161b;
  border: 1px solid var(--line-soft);
  border-radius: var(--radius-lg);
  box-shadow: 0 10px 30px rgba(0, 0, 0, 0.04);
}

.account-auth__intro {
  display: grid;
  align-content: start;
  min-height: 360px;
  padding: 36px;
  background: 
    radial-gradient(circle at 100% 0%, rgba(116, 112, 104, 0.16), transparent 42%),
    linear-gradient(135deg, #16161b 0%, var(--paper-soft) 100%);
}

.account-auth__intro h2,
.account-topbar h2 {
  margin: 0 0 10px;
  font-family: var(--serif);
  font-size: clamp(30px, 3.2vw, 42px);
  font-weight: 500;
  line-height: 1.08;
}

.account-auth__intro p:not(.eyebrow),
.account-topbar p {
  margin: 0;
  max-width: 560px;
  color: var(--muted);
}

.account-auth__points {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-top: 28px;
}

.account-auth__points span {
  padding: 7px 10px;
  border: 1px solid var(--line);
  border-radius: 999px;
  background: rgba(22, 22, 27, 0.62);
  color: var(--ink-mute);
  font-size: 12px;
  font-weight: 600;
}

.account-login-card {
  display: grid;
  align-content: start;
  gap: 14px;
  padding: 30px;
  min-height: 568px; /* reserve the taller (register) height so toggling Вход/Регистрация never jumps */
}

.account-login-card h3,
.account-card h3 {
  margin: 0;
  font-family: var(--serif);
  font-size: 24px;
  font-weight: 500;
}

.account-login-card label,
.account-profile-form label {
  display: grid;
  gap: 6px;
  color: var(--muted);
  font-size: 13px;
}

.account-login-card input,
.account-profile-form input {
  height: 44px;
  padding: 0 12px;
  border: 1px solid var(--line);
  border-radius: var(--radius);
  background: #16161b;
  color: var(--ink);
  outline: 0;
  transition: 0.18s ease;
}

.account-login-card input:focus,
.account-profile-form input:focus {
  border-color: var(--ink);
}

.account-login-error {
  margin: 0;
  color: #b21f2d;
  font-size: 13px;
}

.account-demo-note {
  margin: 0;
  color: var(--muted);
  font-size: 12px;
  text-align: center;
}

.account-topbar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 20px;
  margin-bottom: 24px;
}

.account-dashboard {
  display: grid;
  grid-template-columns: 280px minmax(0, 1fr);
  gap: 24px;
  align-items: start;
}

.account-sidebar {
  position: sticky;
  top: calc(var(--header-h) + 16px);
  padding: 18px;
}

.account-person {
  display: grid;
  grid-template-columns: 48px minmax(0, 1fr);
  gap: 12px;
  align-items: center;
  padding-bottom: 16px;
  border-bottom: 1px solid var(--line-soft);
}

.account-avatar {
  width: 48px;
  height: 48px;
  display: grid;
  place-items: center;
  border-radius: 50%;
  background: var(--accent);
  color: #fff;
  font-weight: 700;
  letter-spacing: 0.04em;
}

.account-person strong,
.account-mini-product strong {
  display: block;
  color: var(--ink);
  font-size: 14px;
  font-weight: 600;
}

.account-person span,
.account-mini-product span {
  display: block;
  color: var(--muted);
  font-size: 12px;
}

.account-tabs {
  display: grid;
  gap: 6px;
  margin-top: 16px;
}

.account-tabs button {
  height: 42px;
  padding: 0 12px;
  border: 1px solid transparent;
  border-radius: var(--radius);
  background: transparent;
  color: var(--ink-mute);
  text-align: left;
  font-size: 14px;
  font-weight: 500;
  transition: 0.18s ease;
}

.account-tabs button:hover {
  background: var(--paper);
  color: var(--ink);
}

.account-tabs button.is-active {
  background: var(--accent);
  color: #fff;
}

.account-workspace {
  min-width: 0;
}

.account-panel {
  display: none;
}

.account-panel.is-active {
  display: grid;
  gap: 16px;
}

.account-stat-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 12px;
}

.account-stat,
.account-card {
  padding: 20px;
}

.account-stat {
  border: 1px solid var(--line-soft);
  border-radius: var(--radius-lg);
  background: #16161b;
}

.account-stat span {
  display: block;
  margin-bottom: 6px;
  color: var(--muted);
  font-size: 12px;
}

.account-stat strong {
  font-family: var(--serif);
  font-size: 30px;
  font-weight: 500;
  line-height: 1;
}

.account-two-col {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 16px;
}

.account-card {
  display: grid;
  gap: 16px;
}

.account-card__head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 12px;
}

.account-card__head span {
  color: var(--muted);
  font-size: 13px;
  font-weight: 500;
}

.account-card__actions {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}

.account-mini-list {
  display: grid;
  gap: 10px;
}

.account-mini-product {
  display: grid;
  grid-template-columns: 52px minmax(0, 1fr);
  gap: 10px;
  align-items: center;
}

.account-mini-product img {
  width: 52px;
  height: 52px;
  object-fit: contain;
  border-radius: var(--radius);
  background: var(--paper);
}

.account-empty-line {
  padding: 18px;
  border: 1px dashed var(--line);
  border-radius: var(--radius);
  color: var(--muted);
  font-size: 14px;
  text-align: center;
}

.account-data-list {
  display: grid;
  gap: 10px;
  margin: 0;
}

.account-data-list div {
  display: flex;
  justify-content: space-between;
  gap: 16px;
  padding-bottom: 10px;
  border-bottom: 1px solid var(--line-soft);
}

.account-data-list div:last-child {
  padding-bottom: 0;
  border-bottom: 0;
}

.account-data-list dt {
  color: var(--muted);
  font-size: 13px;
}

.account-data-list dd {
  margin: 0;
  color: var(--ink);
  font-size: 13px;
  font-weight: 500;
  text-align: right;
}

.account-empty-state {
  display: grid;
  justify-items: center; /* пустые состояния по центру — кнопки «съезжали» влево */
  text-align: center;
  gap: 10px;
  padding: 28px;
  border: 1px dashed var(--line);
  border-radius: var(--radius);
  background: var(--paper);
}

.account-empty-state h4 {
  margin: 0;
  font-size: 17px;
}

.account-empty-state p {
  margin: 0;
  color: var(--muted);
  font-size: 14px;
  line-height: 1.55;
}

.account-form-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 12px;
}

/* QTY counter inside cart-item =============================================*/
.cart-item__qty {
  display: inline-grid;
  grid-template-columns: 32px 1fr 32px;
  align-items: stretch;
  height: 32px;
  margin-top: 6px;
  border: 1px solid var(--line);
  border-radius: var(--radius);
  overflow: hidden;
}

.cart-item__qty button {
  background: transparent;
  border: 0;
  font-size: 16px;
  color: var(--ink);
  cursor: pointer;
  transition: background 0.18s ease;
}

.cart-item__qty button:hover {
  background: var(--paper);
}

.cart-item__qty span {
  display: grid;
  place-items: center;
  font-size: 13px;
  font-weight: 600;
}

/* Section gradient dividers ================================================*/
.section--gradient-fade {
  background: linear-gradient(180deg, var(--paper) 0%, var(--paper-soft) 100%);
}

.section--cream-warm {
  background: 
    radial-gradient(circle at 100% 0%, rgba(116, 112, 104, 0.16), transparent 40%),
    linear-gradient(180deg, var(--paper-soft) 0%, var(--paper) 100%);
}

/* Mobile adjustments for new components ====================================*/
@media (max-width: 1100px) {
  .hero-story__shell {
    grid-template-columns: 1fr;
  }

  .hero-step {
    min-height: auto;
    padding: 40px 0;
  }

  .hero-story__right {
    order: -1;
  }

  .hero-stage {
    position: relative;
    top: 0;
    height: auto;
    aspect-ratio: 1 / 1;
    margin-bottom: 16px;
  }

  .product-gallery {
    position: static;
  }

  .cart-info-grid {
    grid-template-columns: 1fr;
  }
}

@media (max-width: 860px) {
  .nav-links {
    border-radius: var(--radius-lg);
    padding: 6px 8px;
  }

  .product-gallery__nav {
    width: 36px;
    height: 36px;
  }

  .etymology {
    padding: 28px 22px;
  }

  .filter-shell {
    max-height: none;
    overflow-y: visible;
  }
}

@media (max-width: 1100px) {
  .account-auth,
  .account-dashboard {
    grid-template-columns: 1fr;
  }

  .account-sidebar {
    position: static;
  }
}

@media (max-width: 860px) {
  .account-topbar {
    display: grid;
    align-items: start;
  }

  .account-two-col {
    grid-template-columns: 1fr;
  }

  .account-stat-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (max-width: 560px) {
  .account-link {
    display: none;
  }

  .account-form-grid,
  .checkout-delivery-grid,
  .account-stat-grid {
    grid-template-columns: 1fr;
  }
}

/* Focused fixes: mobile menu, mobile quick-view, scaled laptops ============*/
.section-link {
  border-color: rgba(140, 137, 130, 0.32);
  background: 
    linear-gradient(180deg, rgba(22, 22, 27, 0.88), rgba(20, 20, 24, 0.72));
  color: var(--copper-deep);
  box-shadow: 0 8px 20px rgba(0, 0, 0, 0.06);
}

.section-link:hover {
  border-color: var(--copper-deep);
  background: #16161b;
  color: var(--ink);
  transform: translateY(-1px);
  box-shadow: 0 12px 28px rgba(0, 0, 0, 0.1);
}

#popular .section-link {
  border-color: rgba(93, 90, 83, 0.2);
  background: 
    radial-gradient(circle at 100% 0%, rgba(22, 22, 27, 0.9), transparent 48%),
    linear-gradient(135deg, #16161b 0%, #17171c 100%);
}

@media (max-width: 860px) {
  body.dialog-open {
    overflow: hidden;
  }

  .site-header__inner {
    position: relative;
  }

  .menu-toggle {
    background: rgba(22, 22, 27, 0.72);
    box-shadow: 0 8px 20px rgba(0, 0, 0, 0.08);
  }

  .menu-toggle.is-active {
    border-color: var(--ink);
    background: var(--accent);
  }

  .menu-toggle.is-active span {
    background: #16161b;
  }

  .menu-toggle.is-active span:nth-child(1) {
    transform: translateY(5.5px) rotate(45deg);
  }

  .menu-toggle.is-active span:nth-child(2) {
    opacity: 0;
  }

  .menu-toggle.is-active span:nth-child(3) {
    transform: translateY(-5.5px) rotate(-45deg);
  }

  body.menu-open .nav-links,
  .site-header.is-menu-open .nav-links {
    display: flex !important;
    position: fixed;
    z-index: 1100;
    top: calc(var(--header-h) + 8px);
    left: 12px;
    right: 12px;
    max-height: calc(100dvh - var(--header-h) - 24px);
    overflow-y: auto;
    -webkit-overflow-scrolling: touch;
    flex-direction: column;
    align-items: stretch;
    justify-content: flex-start;
    gap: 6px;
    padding: 12px;
    border-radius: var(--radius-lg);
    background: rgba(11, 11, 13, 0.98);
    border: 1px solid var(--line-soft);
    box-shadow: 0 22px 70px rgba(0, 0, 0, 0.2);
    backdrop-filter: blur(16px);
  }

  body.menu-open .nav-links a,
  .site-header.is-menu-open .nav-links a {
    width: 100%;
    min-height: 46px;
    height: auto;
    justify-content: flex-start;
    padding: 12px 14px;
    border-radius: var(--radius);
    font-size: 15px;
    line-height: 1.2;
  }

  .site-header.is-menu-open .nav-marker {
    display: none;
  }

  .site-header.is-menu-open .nav-item {
    display: block;
    width: 100%;
  }

  .site-header.is-menu-open .catalog-menu {
    position: static;
    width: 100%;
    margin: 4px 0 8px;
    padding: 10px;
    opacity: 1;
    pointer-events: auto;
    transform: none;
    border-radius: var(--radius);
    box-shadow: inset 0 1px 0 rgba(22, 22, 27, 0.55);
  }

  .site-header.is-menu-open .catalog-menu::before {
    display: none;
  }

  .site-header.is-menu-open .catalog-menu__grid {
    grid-template-columns: 1fr;
  }

  .site-header.is-menu-open .nav-links .catalog-menu a {
    min-height: 0;
    padding: 8px 10px;
    font-size: 13px;
  }

  .product-dialog {
    position: fixed;
    inset: 8px;
    width: auto;
    max-width: none;
    height: calc(100dvh - 16px);
    max-height: none;
    margin: 0;
    border-radius: var(--radius-lg);
    overflow-y: auto;
    overflow-x: hidden;
    -webkit-overflow-scrolling: touch;
  }

  .product-dialog::backdrop {
    background: rgba(20, 17, 13, 0.7);
  }

  .dialog-layout {
    display: block;
    min-height: 100%;
  }

  .dialog-media {
    display: grid;
    grid-template-rows: minmax(0, 1fr) auto;
    min-height: 0;
    /* крупный предпросмотр на телефоне: медиа ~пол-экрана; верхняя полоса
       (padding-top) зарезервирована под кнопку «Выйти» → часы сидят НИЖЕ неё
       и она их не перегораживает */
    height: min(52dvh, 460px);
    padding-top: 46px;
  }

  .dialog-media img#dialogMainImage {
    width: 90%;
    height: 90%;
  }

  .dialog-thumbs {
    display: grid;
    grid-auto-flow: column;
    grid-auto-columns: 58px;
    grid-template-columns: none;
    overflow-x: auto;
    gap: 6px;
    padding: 8px 12px 12px;
  }

  .dialog-info {
    display: grid;
    gap: 14px;
    padding: 22px 18px 24px;
    align-content: start;
  }

  .dialog-info h3 {
    font-size: 22px;
  }

  .dialog-info__price-row {
    padding: 12px 0;
  }

  .dialog-info .price {
    font-size: 24px;
  }

  .dialog-info .specs {
    grid-template-columns: 1fr;
  }

  .dialog-info .specs > div {
    border-right: 0;
  }

  .dialog-actions {
    position: sticky;
    bottom: 0;
    z-index: 2;
    grid-template-columns: 1fr;
    padding-top: 10px;
    background: linear-gradient(180deg, rgba(22, 22, 27, 0.82), #16161b 28%);
  }
}

@media (max-width: 560px) {
  .brand img {
    width: clamp(170px, 48vw, 210px);
    max-width: calc(100vw - 132px);
  }

  .site-header__inner {
    width: calc(100% - 20px);
    gap: 8px;
  }

  .cart-button {
    height: 36px;
    padding: 0 9px;
  }

  .menu-toggle {
    width: 38px;
    height: 38px;
  }

  .product-dialog {
    inset: 6px;
    height: calc(100dvh - 12px);
  }

  .dialog-media {
    height: min(52dvh, 420px);
    padding-top: 44px;
  }

  .dialog-back,
  .dialog-close {
    top: 10px;
  }

  .dialog-back {
    left: 10px;
  }

  .dialog-close {
    right: 10px;
  }

  /* компактнее кнопка «Выйти из предпросмотра» на телефоне — меньше места,
     не давит на часы (текст сохраняем, чтобы человек понимал, что он в превью) */
  .dialog-back {
    height: 32px;
    padding: 0 11px 0 8px;
    font-size: 11.5px;
    gap: 5px;
  }

  .dialog-back svg {
    width: 14px;
    height: 14px;
  }
}

@media (min-width: 861px) and (max-width: 1400px) {
  :root {
    --header-h: 72px;
  }

  .shell,
  .site-header__inner,
  .hero-story__shell,
  .page-hero__inner,
  .product-detail,
  .site-footer__grid,
  .site-footer__bottom {
    width: min(1160px, calc(100% - 36px));
  }

  .site-header__inner {
    gap: 18px;
  }

  .brand img {
    width: clamp(220px, 18vw, 270px);
  }

  .nav-links {
    gap: 4px;
    padding: 6px;
  }

  .nav-links a {
    height: 36px;
    padding: 0 14px;
    font-size: 13.5px;
  }

  .nav-marker {
    height: 36px;
  }

  .account-link,
  .tg-link,
  .avito-link,
  .cart-button {
    height: 36px;
    padding: 0 10px;
    font-size: 12.5px;
  }

  .hero-story__shell {
    gap: 34px;
    padding-top: 24px;
  }

  .hero-step {
    min-height: calc(100vh - var(--header-h) - 24px);
    padding: 60px 0;
  }

  .hero-step h1 {
    font-size: clamp(34px, 3.8vw, 52px);
  }

  .hero-step h2 {
    font-size: clamp(30px, 3.4vw, 42px);
  }

  .hero-step p.lead {
    max-width: 500px;
    font-size: 15.5px;
  }

  .hero-stage {
    top: calc(var(--header-h) + 18px);
    height: calc(100vh - var(--header-h) - 36px);
  }

  .section {
    padding: 60px 0;
  }

  .section-heading h2 {
    font-size: clamp(26px, 2.5vw, 34px);
  }

  .page-hero {
    padding: 44px 0 24px;
  }

  .page-hero h1 {
    font-size: clamp(30px, 3.4vw, 42px);
  }

  .catalog {
    width: min(1180px, calc(100% - 36px));
    grid-template-columns: 220px minmax(0, 1fr);
    gap: 18px;
  }

  .product-grid {
    gap: 14px;
  }

  .product-body {
    gap: 8px;
    padding: 15px;
  }

  .product-card h3 {
    min-height: 40px;
    font-size: 14px;
  }
}

/* Mobile navigation polish =================================================*/
@media (max-width: 860px) {
  .site-header__inner {
    grid-template-columns: minmax(0, 1fr) auto auto;
    width: calc(100% - 24px);
    gap: 8px;
  }

  .brand {
    min-width: 0;
    justify-self: start;
    align-self: center;
    padding-top: 0;
  }

  .brand img {
    width: clamp(158px, 42vw, 202px);
    max-width: 100%;
  }

  .menu-toggle {
    grid-column: 2;
    justify-self: end;
    width: 38px;
    height: 38px;
  }

  .header-actions {
    grid-column: 3;
    justify-self: end;
    min-width: auto;
  }

  .cart-button {
    width: 38px;
    height: 38px;
    padding: 0;
    justify-content: center;
    border-radius: var(--radius);
  }

  .cart-button svg {
    width: 17px;
    height: 17px;
  }

  .cart-button strong {
    position: absolute;
    top: -5px;
    right: -5px;
    min-width: 17px;
    height: 17px;
    padding: 0 4px;
    border: 1px solid var(--paper);
    font-size: 10px;
  }

  body.menu-open .nav-links,
  .site-header.is-menu-open .nav-links {
    gap: 8px;
    padding: 12px;
  }

  body.menu-open .nav-links > a,
  body.menu-open .nav-links > .nav-item > a,
  .site-header.is-menu-open .nav-links > a,
  .site-header.is-menu-open .nav-links > .nav-item > a {
    min-height: 48px;
    border: 1px solid rgba(255, 255, 255, 0.14);
    background: rgba(22, 22, 27, 0.72);
    box-shadow: 0 1px 0 rgba(22, 22, 27, 0.8) inset;
    color: var(--ink);
    font-weight: 600;
  }

  body.menu-open .nav-links > a.is-active,
  body.menu-open .nav-links > .nav-item > a.is-active,
  .site-header.is-menu-open .nav-links > a.is-active,
  .site-header.is-menu-open .nav-links > .nav-item > a.is-active {
    background: var(--accent);
    border-color: var(--ink);
    color: #fff;
  }

  .site-header.is-menu-open .nav-item--catalog > .nav-catalog-trigger,
  body.menu-open .nav-item--catalog > .nav-catalog-trigger {
    position: relative;
    padding-right: 44px;
  }

  .site-header.is-menu-open .nav-item--catalog > .nav-catalog-trigger::after,
  body.menu-open .nav-item--catalog > .nav-catalog-trigger::after {
    content: "";
    position: absolute;
    top: 50%;
    right: 16px;
    width: 8px;
    height: 8px;
    border-right: 1.5px solid currentColor;
    border-bottom: 1.5px solid currentColor;
    transform: translateY(-64%) rotate(45deg);
    transition: transform 0.18s ease;
  }

  .site-header.is-menu-open .nav-item--catalog.is-submenu-open > .nav-catalog-trigger::after,
  body.menu-open .nav-item--catalog.is-submenu-open > .nav-catalog-trigger::after {
    transform: translateY(-36%) rotate(225deg);
  }

  body.menu-open .nav-item--catalog:not(.is-submenu-open) .catalog-menu,
  .site-header.is-menu-open .nav-item--catalog:not(.is-submenu-open) .catalog-menu {
    display: none !important;
    opacity: 0;
    pointer-events: none;
  }

  body.menu-open .nav-item--catalog.is-submenu-open .catalog-menu,
  .site-header.is-menu-open .nav-item--catalog.is-submenu-open .catalog-menu {
    display: block !important;
    opacity: 1;
    pointer-events: auto;
  }

  .site-header.is-menu-open .catalog-menu,
  body.menu-open .catalog-menu {
    margin: 8px 0 2px;
    padding: 10px;
    background: 
      radial-gradient(circle at 100% 0%, rgba(22, 22, 27, 0.78), transparent 48%),
      linear-gradient(180deg, rgba(232, 227, 218, 0.96), rgba(216, 209, 197, 0.9));
    border: 1px solid rgba(255, 255, 255, 0.14);
  }

  .site-header.is-menu-open .catalog-menu__top,
  body.menu-open .catalog-menu__top {
    display: grid;
    grid-template-columns: 1fr;
    gap: 8px;
    padding: 2px 2px 10px;
  }

  .site-header.is-menu-open .catalog-menu__top strong,
  body.menu-open .catalog-menu__top strong {
    display: none;
  }

  .site-header.is-menu-open .catalog-menu__cta,
  body.menu-open .catalog-menu__cta {
    width: 100%;
    height: 42px;
    justify-content: center;
    font-size: 13px;
  }

  .site-header.is-menu-open .catalog-menu__group,
  body.menu-open .catalog-menu__group {
    padding: 9px;
    background: rgba(22, 22, 27, 0.52);
  }

  .site-header.is-menu-open .catalog-menu__group a,
  body.menu-open .catalog-menu__group a {
    min-height: 44px;
    background: rgba(22, 22, 27, 0.82);
    border-color: rgba(255, 255, 255, 0.16);
    box-shadow: 0 1px 0 rgba(22, 22, 27, 0.75) inset;
  }
}

@media (max-width: 380px) {
  .brand img {
    width: clamp(142px, 39vw, 172px);
  }

  .site-header__inner {
    width: calc(100% - 18px);
    gap: 6px;
  }
}

/* Mobile catalog: drawer filters + dense product grid ======================*/
@media (max-width: 860px) {
  body.catalog-filters-open {
    overflow: hidden;
  }

  .page-hero {
    padding: 34px 0 18px;
  }

  .page-hero h1 {
    font-size: 32px;
    margin-bottom: 10px;
  }

  .page-hero p {
    font-size: 14px;
    line-height: 1.5;
  }

  .catalog {
    display: block;
    width: min(100% - 24px, 680px);
    padding: 18px 0 56px;
  }

  .catalog-main {
    min-height: auto;
  }

  .catalog-head {
    position: sticky;
    z-index: 20;
    top: calc(var(--header-h) + 8px);
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    align-items: center;
    gap: 10px;
    margin: 0 -2px 12px;
    padding: 10px 2px;
    background: linear-gradient(180deg, var(--paper) 72%, rgba(11, 11, 13, 0));
  }

  .catalog-head h2 {
    font-size: 24px;
    gap: 8px;
    min-width: 0;
  }

  .catalog-head h2 span {
    height: 24px;
    padding: 0 8px;
    font-size: 12px;
    transform: none;
  }

  .mobile-filter-toggle {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 7px;
    height: 38px;
    padding: 0 12px;
    border: 1px solid rgba(93, 90, 83, 0.22);
    border-radius: var(--radius);
    background: 
      radial-gradient(circle at 100% 0%, rgba(22, 22, 27, 0.9), transparent 48%),
      linear-gradient(135deg, #16161b 0%, #17171c 100%);
    color: var(--ink);
    font-size: 13px;
    font-weight: 600;
    box-shadow: 0 8px 18px rgba(0, 0, 0, 0.07);
  }

  .mobile-filter-toggle strong {
    display: inline-grid;
    min-width: 18px;
    height: 18px;
    place-items: center;
    padding: 0 5px;
    border-radius: 999px;
    background: var(--accent);
    color: #fff;
    font-size: 10px;
    line-height: 1;
  }

  .mobile-filter-toggle strong[hidden] {
    display: none;
  }

  .catalog-toolbar {
    position: sticky;
    z-index: 19;
    top: calc(var(--header-h) + 66px);
    grid-template-columns: minmax(0, 1fr) 126px;
    gap: 8px;
    margin: 0 0 14px;
    padding: 0 0 10px;
    background: linear-gradient(180deg, var(--paper) 78%, rgba(11, 11, 13, 0));
  }

  .catalog-control {
    height: 40px;
    padding: 0 10px;
    font-size: 13px;
  }

  .catalog-control[type="search"] {
    min-width: 0;
  }

  .filter-shell {
    position: fixed !important;
    z-index: 1200;
    left: 0;
    right: 0;
    bottom: 0;
    top: auto;
    width: 100%;
    max-height: min(82dvh, 720px);
    padding: 18px 18px calc(18px + env(safe-area-inset-bottom));
    border-radius: 18px 18px 0 0;
    border: 1px solid rgba(255, 255, 255, 0.16);
    border-bottom: 0;
    background: rgba(11, 11, 13, 0.98);
    box-shadow: 0 -24px 80px rgba(20, 17, 13, 0.26);
    overflow-y: auto;
    -webkit-overflow-scrolling: touch;
    transform: translateY(105%);
    opacity: 0;
    pointer-events: none;
    transition: transform 0.26s cubic-bezier(0.22, 1, 0.36, 1), opacity 0.2s ease;
  }

  body.catalog-filters-open .filter-shell {
    transform: translateY(0);
    opacity: 1;
    pointer-events: auto;
  }

  .catalog-filter-backdrop {
    display: block;
    position: fixed;
    z-index: 1190;
    inset: 0;
    border: 0;
    padding: 0;
    background: rgba(20, 17, 13, 0.46);
    opacity: 0;
    pointer-events: none;
    transition: opacity 0.2s ease;
  }

  body.catalog-filters-open .catalog-filter-backdrop {
    opacity: 1;
    pointer-events: auto;
  }

  .filter-head {
    position: sticky;
    top: -18px;
    z-index: 2;
    margin: -18px -18px 14px;
    padding: 16px 18px 12px;
    background: rgba(11, 11, 13, 0.98);
    border-bottom: 1px solid var(--line-soft);
  }

  .filter-head h2 {
    font-size: 18px;
  }

  .mobile-filter-close {
    display: inline-grid;
    place-items: center;
    width: 34px;
    height: 34px;
    border: 1px solid var(--line) !important;
    border-radius: 50%;
    background: #16161b !important;
    color: var(--ink) !important;
    font-size: 22px !important;
    line-height: 1;
    text-decoration: none !important;
  }

  .filter-block {
    padding: 12px 0;
  }

  .filter-check {
    min-height: 34px;
    padding: 7px 0;
    font-size: 14px;
  }

  .catalog .product-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 10px;
  }

  .catalog .product-card {
    border-radius: 8px;
  }

  .catalog .product-media {
    aspect-ratio: 1 / 1;
  }

  .catalog .product-media img {
    width: 74%;
    height: 74%;
  }

  .catalog .stock-badge {
    bottom: 7px;
    right: 7px;
    padding: 3px 7px;
    font-size: 9px;
    letter-spacing: 0.02em;
  }

  .catalog .product-body {
    gap: 7px;
    padding: 10px;
  }

  .catalog .product-meta {
    display: grid;
    gap: 2px;
  }

  .catalog .product-meta span {
    font-size: 10px;
  }

  .catalog .product-meta strong {
    font-size: 13px;
  }

  .catalog .product-card h3 {
    min-height: 38px;
    font-size: 12px;
    line-height: 1.28;
  }

  .catalog .product-tags {
    display: none;
  }

  .catalog .product-actions {
    grid-template-columns: 1fr;
    gap: 0;
    margin-top: 4px;
  }

  .catalog .product-actions button,
  .catalog .product-actions a {
    height: 34px;
    font-size: 12px;
  }

  .catalog .product-actions button.secondary,
  .catalog .product-actions a:not(.primary) {
    display: none;
  }

  .catalog .product-card__qty {
    height: 34px;
    grid-template-columns: 30px minmax(24px, 1fr) 30px;
  }
}

@media (max-width: 380px) {
  .catalog {
    width: calc(100% - 18px);
  }

  .catalog .product-grid {
    gap: 8px;
  }

  .catalog .product-body {
    padding: 9px;
  }

  .catalog .product-card h3 {
    font-size: 11.5px;
  }
}

/* Home mobile product rail =================================================*/
@media (max-width: 860px) {
  #popular {
    padding: 48px 0 54px;
  }

  #popular .section-heading {
    margin-bottom: 18px;
  }

  #popular .section-link {
    width: 100%;
    justify-content: center;
  }

  #popular .product-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 10px;
  }

  #popular .product-card {
    border-radius: 8px;
  }

  #popular .product-media {
    aspect-ratio: 1 / 1;
  }

  #popular .product-media img {
    width: 74%;
    height: 74%;
  }

  #popular .stock-badge {
    bottom: 7px;
    right: 7px;
    padding: 3px 7px;
    font-size: 9px;
    letter-spacing: 0.02em;
  }

  #popular .product-body {
    gap: 7px;
    padding: 10px;
  }

  #popular .product-meta {
    display: grid;
    gap: 2px;
  }

  #popular .product-meta span {
    font-size: 10px;
  }

  #popular .product-meta strong {
    font-size: 13px;
  }

  #popular .product-card h3 {
    min-height: 38px;
    font-size: 12px;
    line-height: 1.28;
  }

  #popular .product-tags {
    display: none;
  }

  #popular .product-actions {
    grid-template-columns: 1fr;
    gap: 0;
    margin-top: 4px;
  }

  #popular .product-actions button,
  #popular .product-actions a {
    height: 34px;
    font-size: 12px;
  }

  #popular .product-actions button.secondary,
  #popular .product-actions a:not(.primary) {
    display: none;
  }

  #popular .product-card__qty {
    height: 34px;
    grid-template-columns: 30px minmax(24px, 1fr) 30px;
  }
}

@media (max-width: 380px) {
  #popular .product-grid {
    gap: 8px;
  }

  #popular .product-body {
    padding: 9px;
  }

  #popular .product-card h3 {
    font-size: 11.5px;
  }
}

/* Mobile header/cart/account + seamless catalog sticky bars ================*/
@media (max-width: 860px) {
  .cart-button strong {
    top: -4px;
    right: -4px;
  }

  .site-header.is-menu-open .mobile-account-link,
  body.menu-open .mobile-account-link {
    display: flex !important;
    width: 100%;
    min-height: 48px;
    justify-content: flex-start;
    align-items: center;
    padding: 12px 14px;
    border-radius: var(--radius);
    border: 1px solid rgba(255, 255, 255, 0.14);
    background: 
      radial-gradient(circle at 100% 0%, rgba(22, 22, 27, 0.84), transparent 46%),
      linear-gradient(135deg, #16161b 0%, #1a1a1f 100%);
    color: var(--ink);
    font-size: 15px;
    font-weight: 600;
    box-shadow: 0 1px 0 rgba(22, 22, 27, 0.78) inset;
  }

  .catalog-head {
    top: var(--header-h);
    min-height: 54px;
    margin: 0 -12px;
    padding: 8px 12px 6px;
    background: var(--paper);
    border-bottom: 1px solid rgba(255, 255, 255, 0.08);
  }

  .catalog-toolbar {
    top: calc(var(--header-h) + 54px);
    margin: 0 -12px 12px;
    padding: 0 12px 10px;
    background: var(--paper);
    border-bottom: 1px solid rgba(255, 255, 255, 0.06);
  }

  .catalog-control {
    background: #16161b;
  }
}


/* === WatchLab dark theme — premium black + red === */
.btn--primary{background:var(--accent);border-color:var(--accent);color:#fff;}
.btn--primary:hover{background:var(--accent-2);border-color:var(--accent-2);}
.price,.product__price,.cart-item__price strong,.cart-summary__total strong{color:var(--accent-2);}


/* === WatchLab patch: red accents (no gold) + product photo tiles === */
.product-media,
.product-gallery__main,
.cart-item__media,
.dialog-media,
.dialog-thumbs button { background: #f2ede5; }
.btn--gold { background: #15151a; background-image: none; border: 1px solid #2a2a31; color: var(--ink); }
.btn--gold:hover { border-color: var(--accent); color: #fff; background: #1b1b21; }


/* === WatchLab logo + brand wordmark === */
.wl { color: var(--ink); }
.wl-lab { color: var(--accent-2); }
.brand { gap: 11px; }
.brand__mark { display: inline-flex; align-items: center; color: var(--ink); flex: 0 0 auto; }
.brand__word { font-family: var(--sans); font-weight: 800; font-size: 23px; letter-spacing: 0.015em; line-height: 1; white-space: nowrap; }
.site-footer__brand { display: flex; align-items: center; gap: 10px; }
.site-footer__brand .brand__word { font-size: 20px; }
.site-footer__brand .brand__mark svg { width: 30px; height: 30px; }


/* === nav markers + focus rings (fix white) === */
.nav-marker--hover {
  background: linear-gradient(180deg, rgba(46, 32, 35, 0.96), rgba(30, 22, 24, 0.92));
  border: 1px solid rgba(169, 35, 48, 0.4);
  box-shadow: 0 7px 18px rgba(0, 0, 0, 0.4);
}
.nav-marker--active {
  background: linear-gradient(135deg, #a92330 0%, #7a141d 100%);
  box-shadow: 0 6px 16px rgba(0, 0, 0, 0.45), inset 0 1px 0 rgba(255, 255, 255, 0.1);
}
.nav-links a.is-active { background: linear-gradient(135deg, #a92330 0%, #7a141d 100%); color: #fff; }
.nav-links a.is-active:hover { background: linear-gradient(135deg, #be2a37 0%, #841a23 100%); color: #fff; }
.product-card:focus-visible { outline-color: var(--accent-2); }
:focus-visible { outline-color: var(--accent-2); }


/* ==================================================================
   WATCHLAB — BRUTAL HOROLOGY LAB  (Cyrillic-safe: Oswald/Manrope/JetBrains Mono)
   ================================================================== */
:root {
  --display: "Oswald", system-ui, sans-serif;
  --head: "Manrope", system-ui, sans-serif;
  --sans: "Manrope", system-ui, -apple-system, "Segoe UI", sans-serif;
  --mono: "JetBrains Mono", ui-monospace, "SFMono-Regular", monospace;
  --serif: "Oswald", system-ui, sans-serif;
  --radius: 2px;
  --radius-lg: 3px;
  --blood: #841a23;
  --blood-bright: #a92330;
}
body { font-family: var(--sans); }
::selection { background: var(--blood-bright); color: #fff; }
::-moz-selection { background: var(--blood-bright); color: #fff; }

/* custom scrollbar */
* { scrollbar-color: var(--blood) #121214; scrollbar-width: thin; }
::-webkit-scrollbar { width: 12px; height: 12px; }
::-webkit-scrollbar-track { background: #0e0e10; }
::-webkit-scrollbar-thumb { background: #4e0f17; border: 3px solid #0e0e10; }
::-webkit-scrollbar-thumb:hover { background: var(--blood-bright); }

/* grain overlay */
body::after {
  content: ""; position: fixed; inset: 0; z-index: 9999; pointer-events: none; opacity: 0.04;
  mix-blend-mode: soft-light; background-size: 130px 130px;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
}

/* ---- brutal headings ---- */
h1, h2 {
  font-family: var(--display); font-weight: 600; text-transform: uppercase;
  letter-spacing: 0.012em; line-height: 0.92;
}
h1 { font-size: clamp(44px, 7vw, 96px); font-weight: 700; }
h2 { font-size: clamp(30px, 4.4vw, 58px); }
h1 em, h2 em { font-style: normal; color: var(--blood-bright); }
h3, h4 { font-family: var(--head); font-weight: 800; letter-spacing: -0.012em; }

/* ---- mono technical labels ---- */
.eyebrow {
  font-family: var(--mono) !important; font-weight: 700; text-transform: uppercase;
  letter-spacing: 0.22em; font-size: 11px; color: var(--blood-bright) !important;
  display: inline-flex; align-items: center; gap: 9px;
}
.eyebrow::before { content: ""; width: 22px; height: 2px; background: var(--blood-bright); flex: 0 0 auto; }
.section-link, .line-card__more, .product-meta span, .product-meta strong,
.stock-badge, .product-tags span, .nav-links a, .account-link, .avito-link,
.tg-link span, .cart-button span, .btn, .product-actions button, .product-actions a,
.filters__title, .filter-group__title, .catalog-count, .search-trigger {
  font-family: var(--mono);
}
.btn, .product-actions button, .product-actions a, .product-actions .add-cart-btn {
  text-transform: uppercase; letter-spacing: 0.06em; font-weight: 700;
}
.product-meta strong { letter-spacing: 0.01em; }

/* ---- sharpen corners (brutal) ---- */
.product-card, .btn, .product-actions button, .product-actions a, .account-link,
.cart-button, .avito-link, .tg-link, .nav-links, .nav-marker, .product-media,
.line-card__image, input, select, textarea, .product-card__qty, .stock-badge,
.product-tags span, .filters, .search-trigger { border-radius: 2px !important; }

/* ---- FIX 1: white borders on action buttons -> blood ---- */
.product-actions button, .product-actions .add-cart-btn,
.product-actions button.primary { border-color: var(--blood) !important; background: var(--blood); }
.product-card__qty { border-color: var(--blood) !important; }
.product-actions button:hover, .product-actions .add-cart-btn:hover { background: var(--blood-bright); border-color: var(--blood-bright); }
.product-actions a { border-color: rgba(255,255,255,0.16) !important; }
.product-actions a:hover { border-color: var(--blood-bright) !important; background: #15151a; box-shadow: none; transform: translateY(-1px); }

/* ---- FIX 2: "В наличии" -> neutral stone (not green, not red) ---- */
.stock-badge { color: #cbc3b4 !important; text-transform: uppercase; letter-spacing: 0.1em; font-size: 10px; border-color: rgba(255,255,255,0.14); }
.stock-badge.is-out { color: var(--muted) !important; }

/* ---- FIX 3: footer brand layout (logo row + tagline below) ---- */
.site-footer__brand { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 11px; }
.site-footer__brand p { flex-basis: 100%; margin: 12px 0 0; font-family: var(--sans); }

/* ---- brutal buttons + hover ---- */
.btn--primary { background: var(--blood); border: 1px solid var(--blood); color: #fff; }
.btn--primary:hover { background: var(--blood-bright); border-color: var(--blood-bright); }
.btn--ghost { background: transparent; border: 1px solid rgba(255,255,255,0.22); color: var(--ink); }
.btn--ghost:hover { border-color: var(--blood-bright); color: #fff; background: rgba(169,35,48,0.12); }

/* ---- card hover (brutal) ---- */
.product-card { border: 1px solid rgba(255,255,255,0.07); transition: border-color .18s ease, transform .18s ease, box-shadow .18s ease; }
.product-card:hover { border-color: var(--blood-bright); transform: translateY(-3px); box-shadow: 0 14px 40px rgba(0,0,0,0.5); }

/* ---- MARQUEE TICKER ---- */
.ticker { position: relative; z-index: 5; background: var(--blood); color: #fff; border-bottom: 1px solid #000; overflow: hidden; }
.ticker__track { display: inline-flex; white-space: nowrap; will-change: transform; animation: wl-ticker 30s linear infinite; }
.ticker__track span { font-family: var(--mono); font-weight: 700; text-transform: uppercase; letter-spacing: 0.18em; font-size: 11px; padding: 9px 0; }
.ticker__track span::after { content: "✦"; margin: 0 26px; opacity: 0.55; }
.ticker:hover .ticker__track { animation-play-state: paused; }
@keyframes wl-ticker { to { transform: translateX(-50%); } }

/* ---- HEADER SEARCH ---- */
.search-trigger {
  text-transform: uppercase; letter-spacing: 0.08em; font-size: 12px; font-weight: 700;
  display: inline-flex; align-items: center; gap: 8px; height: 38px; padding: 0 14px;
  border: 1px solid rgba(255,255,255,0.16); background: rgba(22,22,27,0.5);
  color: var(--ink-mute); cursor: pointer; transition: .2s;
}
.search-trigger:hover { border-color: var(--blood-bright); color: var(--ink); }
.search-trigger svg { width: 15px; height: 15px; }
.search-overlay { position: fixed; inset: 0; z-index: 9000; display: none; }
.search-overlay.open { display: block; }
.search-overlay__backdrop { position: absolute; inset: 0; background: rgba(0,0,0,0.66); backdrop-filter: blur(3px); animation: wl-fade .2s ease; }
.search-panel { position: absolute; top: 0; left: 0; right: 0; background: #0c0c0e; border-bottom: 2px solid var(--blood); box-shadow: 0 30px 80px rgba(0,0,0,.65); animation: wl-drop .26s cubic-bezier(.2,1,.3,1); }
.search-panel__inner { width: min(1100px, calc(100% - 40px)); margin: 0 auto; padding: 26px 0 30px; }
.search-field { display: flex; align-items: center; gap: 14px; border-bottom: 2px solid var(--blood); padding-bottom: 12px; }
.search-field input { flex: 1; min-width: 0; background: transparent; border: 0; outline: 0; color: var(--ink); font-family: var(--display); font-weight: 600; text-transform: uppercase; font-size: clamp(26px, 4.6vw, 52px); letter-spacing: 0.01em; }
.search-field input::placeholder { color: #34343a; }
.search-close { font-family: var(--mono); font-size: 11px; font-weight: 700; letter-spacing: .1em; color: var(--muted); background: transparent; border: 1px solid rgba(255,255,255,0.18); padding: 6px 10px; cursor: pointer; }
.search-close:hover { border-color: var(--blood-bright); color: #fff; }
.search-hint { font-family: var(--mono); font-size: 11px; text-transform: uppercase; letter-spacing: .14em; color: var(--muted); margin-top: 12px; }
.search-results { margin-top: 16px; display: grid; gap: 4px; max-height: 56vh; overflow: auto; }
.search-result { display: grid; grid-template-columns: 56px 1fr auto; gap: 16px; align-items: center; padding: 10px 12px; text-decoration: none; border-left: 2px solid transparent; transition: .14s; }
.search-result:hover, .search-result.is-active { background: #15151a; border-left-color: var(--blood-bright); }
.search-result__img { width: 56px; height: 56px; background: #f2ede5; object-fit: contain; }
.search-result__name { font-family: var(--sans); font-weight: 700; font-size: 14px; color: var(--ink); line-height: 1.3; }
.search-result__line { font-family: var(--mono); font-size: 10.5px; text-transform: uppercase; letter-spacing: .1em; color: var(--muted); margin-top: 4px; }
.search-result__price { font-family: var(--mono); font-weight: 700; color: var(--ink); white-space: nowrap; }
.search-empty { font-family: var(--mono); text-transform: uppercase; letter-spacing: .14em; color: var(--muted); padding: 22px 4px; font-size: 12px; }
@keyframes wl-drop { from { transform: translateY(-14px); opacity: 0; } }
@keyframes wl-fade { from { opacity: 0; } }
@media (max-width: 720px) { .search-trigger span { display: none; } .search-trigger { padding: 0 11px; } }


/* === patch6: ticker above fixed header + nav active alignment === */
.ticker { position: fixed; top: 0; left: 0; right: 0; z-index: 1001; height: 32px; display: flex; align-items: center; overflow: hidden; }
.ticker__track span { padding: 0; }
.site-header { top: 32px !important; }
main { padding-top: calc(var(--header-h) + 32px) !important; }
.nav-marker--active { display: none !important; }
.nav-links.has-active > a.is-active,
.nav-links.has-active > .nav-item > a.is-active,
.nav-links a.is-active {
  background: linear-gradient(135deg, #a92330 0%, #7a141d 100%) !important;
  color: #fff !important;
  box-shadow: 0 4px 14px rgba(0, 0, 0, 0.4);
}


/* === patch7: MODERN REFRESH (clean grotesque, no caps, clean nav, ambient) === */
:root {
  --display: "Manrope", system-ui, -apple-system, "Segoe UI", sans-serif;
  --serif: "Manrope", system-ui, sans-serif;
}
/* clean modern headings: sentence-case, tight, heavy */
h1, h2 { font-family: var(--display) !important; text-transform: none !important; font-weight: 800; letter-spacing: -0.03em; line-height: 1.0; }
h1 { font-size: clamp(38px, 5.4vw, 78px); }
h2 { font-size: clamp(27px, 3.5vw, 47px); }
h1 em, h2 em { font-style: normal; color: var(--blood-bright); font-weight: 800; }
h3, h4 { font-family: var(--head); letter-spacing: -0.02em; }

/* logo wordmark = same as headings (Manrope), Watch white / Lab red */
.brand__word { font-family: var(--display) !important; text-transform: none; font-weight: 800; font-size: 21px; letter-spacing: -0.02em; }
.brand__mark svg { width: 30px; height: 30px; }

/* CLEAN NAV — remove the gray pill box */
.nav-links { background: transparent !important; border: 0 !important; box-shadow: none !important; backdrop-filter: none !important; padding: 0 !important; gap: 4px; }
.nav-links a { color: var(--ink-mute); height: 38px; }
.nav-links a:hover { background: rgba(255, 255, 255, 0.06); color: var(--ink); box-shadow: none; }
.nav-marker--hover { background: rgba(255, 255, 255, 0.06) !important; border: 0 !important; box-shadow: none !important; }
.nav-links.has-active > a.is-active,
.nav-links.has-active > .nav-item > a.is-active,
.nav-links a.is-active { background: var(--blood) !important; color: #fff !important; box-shadow: none !important; }

/* modern ambient: subtle blood glow + tamer grain + softer corners */
body { background: radial-gradient(1100px 560px at 80% -10%, rgba(169, 35, 48, 0.07), transparent 62%), #0b0b0d !important; }
body::after { display: none !important; }
/* ticker: smooth (GPU, no pause) + clickable links */
.ticker { height: 32px; }
.ticker__track { animation: wl-ticker 26s linear infinite; will-change: transform; backface-visibility: hidden; }
.ticker:hover .ticker__track { animation-play-state: running !important; }
.ticker__link { font-family: var(--mono); font-weight: 700; text-transform: uppercase; letter-spacing: 0.16em; font-size: 11px; color: #fff; text-decoration: none; opacity: 0.9; }
.ticker__link:hover { opacity: 1; text-decoration: underline; text-underline-offset: 3px; }
/* separator is a standalone empty span between links (ticker builder in app.js) — an ::after
   inside the <a> made the whole 24px gap up to the next label part of the clickable box */
@keyframes wl-ticker { from { transform: translate3d(0, 0, 0); } to { transform: translate3d(-33.333%, 0, 0); } }
.product-card, .btn, .product-actions button, .product-actions a, .account-link,
.cart-button, .avito-link, .tg-link, .search-trigger, .product-media, .line-card__image,
.product-card__qty, input, select { border-radius: 5px !important; }
.search-trigger, .account-link, .avito-link, .tg-link, .cart-button { border-radius: 6px !important; }

/* === patch8: nav radius consistency (hover pill = active pill) === */
.nav-marker, .nav-marker--hover, .nav-marker--active { border-radius: 999px !important; }
.nav-links a, .nav-links a.is-active { border-radius: 999px !important; }


/* ==================================================================
   patch9: CONSISTENCY PASS
   ================================================================== */

/* NAV: kill fragile JS markers, style links directly (always centered) */
.nav-marker, .nav-marker--hover, .nav-marker--active { display: none !important; }
.nav-links { gap: 4px; padding: 0 !important; background: transparent !important; border: 0 !important; box-shadow: none !important; backdrop-filter: none !important; }
.nav-links a {
  display: inline-flex; align-items: center; justify-content: center;
  height: 38px; padding: 0 16px; border-radius: 999px !important;
  color: var(--ink-mute); box-shadow: none !important;
  transition: background 0.16s ease, color 0.16s ease;
}
.nav-links a:hover { background: rgba(255, 255, 255, 0.08); color: var(--ink); transform: none; box-shadow: none !important; }
.nav-links a.is-active,
.nav-links.has-active > a.is-active,
.nav-links.has-active > .nav-item > a.is-active,
.nav-links a.is-active:hover { background: var(--blood) !important; color: #fff !important; box-shadow: none !important; }

/* CATALOG MEGA-MENU: fits cleanly */
.catalog-menu { width: min(660px, calc(100vw - 32px)) !important; padding: 16px !important; border-radius: 14px !important; }
.catalog-menu__top { padding: 4px 4px 14px; }
.catalog-menu__top strong { font-family: var(--display) !important; font-weight: 800; font-size: 19px; letter-spacing: -0.01em; }
.catalog-menu__cta { font-family: var(--mono); text-transform: uppercase; letter-spacing: 0.06em; color: #fff; border-color: rgba(255,255,255,0.16); }
.catalog-menu__cta:hover { border-color: var(--blood-bright); }
.catalog-menu__grid { gap: 12px; }
.catalog-menu__group { padding: 12px !important; border-radius: 10px !important; }
.catalog-menu__group > span { font-family: var(--mono) !important; letter-spacing: 0.14em; }
.catalog-menu__group a { min-height: 0 !important; height: auto !important; padding: 10px 30px 10px 12px !important; border-radius: 8px !important; }
.catalog-menu__group a strong { font-size: 13px; }
.catalog-menu__group a small { white-space: normal !important; font-size: 11px; line-height: 1.3; }

/* UNIFIED RADII */
.btn, .product-actions button, .product-actions a, .account-link, .cart-button,
.avito-link, .tg-link, .search-trigger, .product-card, .product-media, .line-card__image,
input, select, textarea, .product-card__qty, .catalog-menu__cta, .search-result__img,
.contact-card { border-radius: 8px !important; }
.catalog-menu, .search-panel, .filters, .dialog-info, .product-dialog { border-radius: 14px !important; }
.nav-links a, .stock-badge, .product-tags span { border-radius: 999px !important; }

/* LOGO wordmark = catalog-heading font */
.brand__word { font-family: var(--display) !important; font-weight: 800; font-size: 21px; letter-spacing: -0.02em; text-transform: none; }
.brand__mark { color: var(--ink); }

/* ACCOUNT-LINK: subtle active (not loud red) */
.account-link:hover,
body[data-page="account"] .account-link {
  background: rgba(169, 35, 48, 0.12) !important;
  border-color: var(--blood-bright) !important;
  color: var(--ink) !important;
}

/* SEARCH button: wider / more prominent (search-field look) */
.search-trigger { min-width: 188px; justify-content: flex-start; gap: 10px; height: 38px; padding: 0 16px; background: rgba(255,255,255,0.05); border: 1px solid rgba(255,255,255,0.2); color: var(--ink-mute); }
.search-trigger:hover { border-color: var(--blood-bright); color: var(--ink); background: rgba(255,255,255,0.08); }
.search-trigger svg { opacity: 0.85; }

/* CART qty label breathing room */
.product-card__qty span { letter-spacing: 0.02em; }

/* LINE CARDS: align "Смотреть ..." to the same baseline */
.line-card { display: flex; flex-direction: column; }
.line-card__more { margin-top: auto; padding-top: 14px; }

/* CONTACT cards: whole card clickable */
.contact-card { cursor: pointer; transition: border-color .18s ease, transform .18s ease, box-shadow .18s ease; }
.contact-card:hover { border-color: var(--blood-bright); transform: translateY(-2px); box-shadow: 0 12px 30px rgba(0,0,0,0.35); }

/* TICKER: kill stuck-hover (compositor anim never clears :hover without mousemove) -> hover == base; always-underlined affordance */
.ticker__link, .ticker__link:hover { opacity: 0.95 !important; text-decoration: underline !important; text-decoration-thickness: 1px !important; text-underline-offset: 3px !important; text-decoration-color: rgba(255, 255, 255, 0.3) !important; }
.ticker__track { animation-duration: 52s !important; }


/* ================= patch10: prices, mega-menu, filters, dialog, nav drop, ticker ================= */

/* PRICES / SALE */
.product-meta strong { display: inline-flex; align-items: baseline; gap: 8px; font-family: var(--mono); }
.price-old { font-size: 12px; color: var(--muted); text-decoration: line-through; font-weight: 400; }
.price-now { color: var(--ink); font-weight: 700; }
.dialog-info__price-row .price { display: inline-flex; align-items: baseline; gap: 10px; }
.dialog-info__price-row .price-old { font-size: 15px; }
.sale-badge { position: absolute; top: 10px; left: 10px; z-index: 2; font-family: var(--mono); font-weight: 700; font-size: 11px; letter-spacing: 0.03em; color: #fff; background: var(--blood); padding: 4px 9px; border-radius: 999px; box-shadow: 0 4px 12px rgba(0,0,0,0.32); }

/* COUNT 'N из M' breathing room */
.catalog-count { width: auto !important; min-width: 0 !important; padding: 3px 13px !important; border-radius: 999px !important; word-spacing: 0.26em; letter-spacing: 0.03em; }

/* MEGA-MENU — clean & airy */
.catalog-menu { width: min(720px, calc(100vw - 32px)) !important; padding: 20px !important; }
.catalog-menu__grid { gap: 16px 26px !important; }
.catalog-menu__group { padding: 0 !important; border: 0 !important; background: transparent !important; }
.catalog-menu__group > span { display: block; margin-bottom: 8px; font-family: var(--mono) !important; font-size: 10.5px; letter-spacing: 0.18em; color: var(--muted); }
.catalog-menu__group a { display: grid !important; grid-template-columns: 1fr auto; align-items: center; gap: 1px 12px !important; min-height: 0 !important; height: auto !important; padding: 8px 10px !important; border: 0 !important; border-radius: 8px !important; background: transparent !important; box-shadow: none !important; }
.catalog-menu__group a strong { grid-column: 1; font-family: var(--sans); font-size: 14px; font-weight: 700; color: var(--ink); }
.catalog-menu__group a small { grid-column: 1; font-size: 11.5px; line-height: 1.3; color: var(--muted); white-space: normal !important; }
.catalog-menu__group a::after { position: static !important; grid-column: 2; grid-row: 1 / span 2; transform: none !important; color: var(--muted); }
.catalog-menu__group a:hover { background: rgba(255,255,255,0.05) !important; transform: none !important; box-shadow: none !important; }
.catalog-menu__group a:hover::after { color: var(--blood-bright); transform: none !important; }

/* FILTERS — brand style */
.filter-head h2 { font-family: var(--display); font-weight: 800; font-size: 20px; text-transform: none; }
.price-filter label { font-family: var(--mono); font-size: 11px; text-transform: uppercase; letter-spacing: 0.1em; }
.price-filter label strong { font-family: var(--mono); color: var(--ink); }
#maxPrice { accent-color: var(--blood); }
.filter-block { border-top: 1px solid var(--line-soft); padding: 14px 0; }
.filter-block summary { list-style: none; cursor: pointer; display: flex; align-items: center; justify-content: space-between; font-family: var(--mono); font-size: 11px; text-transform: uppercase; letter-spacing: 0.14em; color: var(--ink-mute); }
.filter-block summary::-webkit-details-marker { display: none; }
.filter-block summary::after { content: "+"; color: var(--muted); font-size: 15px; }
.filter-block[open] summary::after { content: "−"; }
.filter-block[open] summary { color: var(--ink); margin-bottom: 10px; }
.filter-block > div { display: grid; gap: 1px; }
.filter-check { display: grid; grid-template-columns: auto 1fr auto; align-items: center; gap: 10px; padding: 7px 8px; border-radius: 8px; cursor: pointer; transition: background 0.14s; }
.filter-check:hover { background: rgba(255,255,255,0.04); }
.filter-check input { appearance: none; -webkit-appearance: none; width: 16px; height: 16px; border: 1.5px solid var(--line); border-radius: 4px; background: transparent; cursor: pointer; position: relative; transition: 0.15s; flex: 0 0 auto; }
.filter-check input:checked { background: var(--blood); border-color: var(--blood); }
.filter-check input:checked::after { content: "✓"; position: absolute; inset: 0; display: grid; place-items: center; color: #fff; font-size: 11px; }
.filter-check span { font-size: 13px; color: var(--ink); }
.filter-check small { font-family: var(--mono); font-size: 11px; color: var(--muted); }

/* DIALOG: grey button border (not white) + gallery arrows */
.dialog-actions button.primary, .dialog-actions a.primary { border-color: var(--line) !important; }
.dialog-nav { position: absolute; top: 50%; transform: translateY(-50%); width: 40px; height: 40px; display: grid; place-items: center; border: 1px solid var(--line); border-radius: 999px; background: rgba(12,12,14,0.86); color: var(--ink); font-size: 20px; line-height: 1; cursor: pointer; z-index: 3; transition: 0.16s; }
.dialog-nav:hover { background: var(--blood); border-color: var(--blood); color: #fff; }
.dialog-nav.prev { left: 12px; }
.dialog-nav.next { right: 12px; }

/* NAV sliding 'drop' pill */
.nav-links { position: relative; }
.wl-nav-pill { position: absolute; top: 50%; transform: translateY(-50%); height: 38px; border-radius: 999px; background: var(--blood); z-index: 0; opacity: 0; transition: left .42s cubic-bezier(.22,1,.36,1), width .42s cubic-bezier(.22,1,.36,1), opacity .22s ease; pointer-events: none; }
/* wl-103: пилюля встаёт на место сразу на первой раскладке (nav-pill.ts снимает класс через 2 rAF), без «въезда» слева; чуть мягче кривая добегания */
.wl-nav-pill--instant { transition: none !important; }
.nav-links a { position: relative; z-index: 1; }
/* wl-103: шире зоны наведения — ::before мостит 6px-зазор между верхнеуровневыми ссылками (не пункты мега-меню); прозрачный, только расширяет hover-зону */
.nav-links > a::before,
.nav-links > .nav-item > a::before { content: ""; position: absolute; inset: 0 -3px; z-index: -1; }
.nav-links a, .nav-links a:hover, .nav-links a.is-active, .nav-links.has-active > a.is-active, .nav-links.has-active > .nav-item > a.is-active { background: transparent !important; box-shadow: none !important; }
.nav-links a.wl-on, .nav-links a.is-active { color: #fff !important; }
.nav-links a:not(.wl-on):not(.is-active) { color: var(--ink-mute); }

/* TICKER: hover underline via JS .is-hover (no stuck), base clean */
.ticker__link, .ticker__link:hover { text-decoration: none !important; opacity: 0.92 !important; }
.ticker__link.is-hover { text-decoration: underline !important; text-underline-offset: 3px !important; opacity: 1 !important; }

/* patch10b: count #catalogCount spacing (was targeting wrong class) */
#catalogCount { word-spacing: 0.3em; letter-spacing: 0.04em; padding: 3px 13px !important; }

/* patch10c: mega-menu — align columns to top so first items line up */
.catalog-menu__grid { align-items: start !important; }
.catalog-menu__group { align-self: start !important; align-content: start !important; }


/* patch11: uniform product cards (fixed title + tags height) */
.product-card h3 { height: 40px !important; min-height: 0 !important; display: -webkit-box; -webkit-line-clamp: 2; line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.product-tags { height: 24px; overflow: hidden; align-content: start; }

/* price spacing — universal margin so old+new never stick (detail page, etc.) */
.price-old { margin-right: 9px !important; }
.product-meta strong, .dialog-info__price-row .price { gap: 0 !important; }

/* patch11b: lock product-meta to one line (kill 8px height variance) */
.product-meta { white-space: nowrap; min-width: 0; flex-wrap: nowrap; }
.product-meta > span:first-child { overflow: hidden; text-overflow: ellipsis; min-width: 0; }
.product-meta strong { flex: 0 0 auto; }


/* patch12: crisp centered checkmark + faceted (0-result) options */
.filter-check input:checked::after {
  content: "" !important;
  position: absolute; left: 5px; top: 2px; width: 4px; height: 8px;
  border: solid #fff; border-width: 0 2px 2px 0; transform: rotate(45deg);
  display: block !important; background: none !important; inset: auto;
}
.filter-check.is-zero { opacity: 0.36; }
.filter-check.is-zero input { pointer-events: none; }

/* patch12b: nudge checkmark right (was too far left) */
.filter-check input:checked::after { left: 6.5px !important; }

/* patch12c: center checkmark (5px left, 6.5px right -> 5.75px) */
.filter-check input:checked::after { left: 5.75px !important; }


/* patch13: product image lightbox */
.product-gallery__main { cursor: zoom-in !important; }
.wl-lightbox { position: fixed; inset: 0; z-index: 9500; display: none; align-items: center; justify-content: center; background: rgba(8,8,9,0.94); backdrop-filter: blur(4px); overflow: hidden; }
.wl-lightbox.open { display: flex; }
/* wl-105: transform теперь у движка зума (zoom.ts) — колесо/пинч/пан; CSS scale(2.2) убран */
.wl-lb-img { max-width: 88vw; max-height: 86vh; object-fit: contain; background: #f2ede5; border-radius: 6px; cursor: zoom-in; touch-action: none; user-select: none; -webkit-user-drag: none; }
.wl-lb-img.is-zoomed { cursor: grab; }
.wl-lb-img.is-zoomed:active { cursor: grabbing; }
.wl-lb-close { position: absolute; top: 22px; right: 26px; width: 44px; height: 44px; border-radius: 999px; border: 1px solid rgba(255,255,255,0.22); background: rgba(20,20,22,0.7); color: #fff; font-size: 24px; line-height: 1; cursor: pointer; z-index: 2; }
.wl-lb-close:hover { background: var(--blood); border-color: var(--blood); }
.wl-lb-nav { position: absolute; top: 50%; transform: translateY(-50%); width: 52px; height: 52px; border-radius: 999px; border: 1px solid rgba(255,255,255,0.22); background: rgba(20,20,22,0.7); color: #fff; font-size: 26px; line-height: 1; cursor: pointer; z-index: 2; display: grid; place-items: center; }
.wl-lb-nav:hover { background: var(--blood); border-color: var(--blood); }
.wl-lb-nav.prev { left: 24px; }
.wl-lb-nav.next { right: 24px; }
@media (max-width: 640px) { .wl-lb-nav { width: 42px; height: 42px; } .wl-lb-nav.prev { left: 10px; } .wl-lb-nav.next { right: 10px; } }


/* patch14: full-width, consistent empty states */
.cart-empty { max-width: none !important; margin: 40px 0 !important; }
.account-empty-state { max-width: none !important; width: 100%; margin: 24px 0 !important; }

/* patch14b: checkmark a touch more left (5.75 -> 5.5px) */
.filter-check input:checked::after { left: 5.5px !important; }

/* patch15: hero — show full image (no crop) + remove scale wobble on scroll */
.hero-stage { background: #0b0b0d; }
.hero-stage img {
  object-fit: contain !important;
  object-position: center !important;
  transform: none !important;
  filter: none !important;
  transition: opacity 0.2s linear !important;
}

/* patch16: hero — full-bleed vertical image, no framing box, bigger (match image aspect) */
.hero-stage {
  height: auto !important;
  max-height: none !important;
  aspect-ratio: 941 / 1672;
  width: 100%;
  background: transparent !important;
  box-shadow: none !important;
  border-radius: 16px;
  top: calc(var(--header-h) + 20px);
}
.hero-stage img { object-fit: cover !important; transform: none !important; filter: none !important; }

/* patch17: hero — flat dark bg (kill the dark->grey gradient so left matches the dark image on the right) */
.hero-story { background: #0b0b0d !important; }

/* patch18: new dial logo mark (PNG) — size + crisp render on dark header/footer */
.brand__mark-img { width: 30px !important; height: 30px !important; max-width: none !important; display: block; object-fit: contain; }
.site-footer__brand .brand__mark-img { width: 30px !important; height: 30px !important; }

/* ============================================================
   patch19 (alt): HERO — "top-glow, settle dark."
   The tall section carries a premium charcoal + faint blood-red
   glow at the TOP that resolves to flat #0b0b0d by ~40% down and
   stays solid #0b0b0d to the bottom. Below 40% both columns are
   PROVABLY identical flat black (no possible mismatch). The photo
   mirrors the same top glow (::before) and fades its top/bottom
   edges into the same #0b0b0d (::after), so left & right converge
   at every scroll position. No JS/HTML, no framing box, edge-only
   overlays keep the watch fully visible.
   ============================================================ */

/* 1) Section bg: glow concentrated in the top ~40% (~1.2 viewports of the
   ~3x-tall section), flat #0b0b0d everywhere below. Stops are % of the
   WHOLE section. The radial echoes the body's top-right blood glow. */
.hero-story {
  background:
    radial-gradient(1200px 620px at 82% -6%,
      rgba(169, 35, 48, 0.10) 0%,
      rgba(169, 35, 48, 0.05) 26%,
      rgba(169, 35, 48, 0.00) 58%),
    linear-gradient(180deg,
      #17171b 0%,
      #121216 14%,
      #0e0e11 26%,
      #0b0b0d 40%,
      #0b0b0d 100%)
    !important;
}

/* Keep the left column + wrappers transparent so the section gradient shows
   through; the line-cards keep their own grey panels on top. */
.hero-story__shell,
.hero-story__left,
.hero-story__right { background: transparent !important; }

/* 2) Photo: full-bleed cover, transparent, no box, 16px radius. */
.hero-stage {
  background: transparent !important;
  box-shadow: none !important;
  border-radius: 16px !important;
  overflow: hidden !important;
  isolation: isolate;
}
.hero-stage img {
  object-fit: cover !important;
  transform: none !important;
  filter: none !important;
}

/* TOP overlay on the photo — mirrors the section's warm/charcoal top glow.
   Edge-only: strongest at the very top, gone by ~34% so the watch is clear. */
.hero-stage::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 3;
  pointer-events: none;
  border-radius: inherit;
  background:
    radial-gradient(120% 70% at 80% -10%,
      rgba(169, 35, 48, 0.11) 0%,
      rgba(169, 35, 48, 0.00) 46%),
    linear-gradient(180deg,
      rgba(11, 11, 13, 0.48) 0%,
      rgba(11, 11, 13, 0.18) 12%,
      rgba(11, 11, 13, 0.00) 34%);
}

/* BOTTOM edge — fade the photo into the same #0b0b0d the left resolves to,
   so once the glow has settled both columns are continuous black. */
.hero-stage::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 3;
  pointer-events: none;
  border-radius: inherit;
  background: linear-gradient(0deg,
    rgba(11, 11, 13, 0.45) 0%,
    rgba(11, 11, 13, 0.16) 11%,
    rgba(11, 11, 13, 0.00) 30%);
}

/* Keep progress dots above the overlays. */
.hero-stage__progress { z-index: 4 !important; }

/* Mobile: stacked square photo — ease the overlays so it doesn't read heavy. */
@media (max-width: 1100px) {
  .hero-stage::before {
    background: linear-gradient(180deg,
      rgba(11, 11, 13, 0.40) 0%,
      rgba(11, 11, 13, 0.00) 30%);
  }
  .hero-stage::after {
    background: linear-gradient(0deg,
      rgba(11, 11, 13, 0.40) 0%,
      rgba(11, 11, 13, 0.00) 28%);
  }
}


/* patch20: kill harsh hero->catalog seam — start #popular at the hero's bottom color (#0b0b0d), drop old grey 'cream-warm' glow */
.section--cream-warm { background: linear-gradient(180deg, #0b0b0d 0%, #0c0c0f 100%) !important; }

/* patch21: section--soft matched the page bg (was lighter #141417 -> read as a separate panel) */
.section--soft { background: var(--paper) !important; }

/* patch22: filter checkmark — nudge a touch further left (5.5 -> 4.5px) */
.filter-check input:checked::after { left: 4.5px !important; }

/* patch23: new WL monogram is a wide lockup — size by height, preserve aspect (was forced 30x30 square) */
.brand__mark-img, .site-footer__brand .brand__mark-img { width: auto !important; height: 30px !important; max-width: none !important; }

/* patch24 (re-confirmed by the owner): no progress bars over the hero photo at all —
   frames follow the page scroll on desktop and swipe on touch, no extra chrome */
.hero-stage__progress { display: none !important; }

/* patch25: catalog mega-menu hover — clean CTA (no vertical jump, smooth arrow slide) + clear item highlight */
.catalog-menu__cta:hover { transform: none !important; }
.catalog-menu__cta svg { transition: transform 0.18s ease !important; }
.catalog-menu__cta:hover svg { transform: translateX(3px) !important; }
.catalog-menu__group a { transition: background 0.16s ease, box-shadow 0.16s ease, color 0.16s ease !important; }
.catalog-menu__group a:hover { background: rgba(168, 35, 48, 0.14) !important; box-shadow: inset 0 0 0 1px rgba(168, 35, 48, 0.32) !important; transform: none !important; }
.catalog-menu__group a:hover strong { color: #fff !important; }
.catalog-menu__group a:hover small { color: rgba(255, 255, 255, 0.72) !important; }
.catalog-menu__group a:hover::after { color: var(--blood-bright) !important; transform: translateX(2px) !important; }

/* patch26: filter checkmark — a touch more left (4.5 -> 3.5px) */
.filter-check input:checked::after { left: 3.5px !important; }

/* patch27: nudge the header WL logo mark toward the top-left corner */
.brand__mark-img { transform: translate(-4px, -3px); }

/* patch28: custom themed sort dropdown (replaces the native <select>) */
.sort-select { position: relative; }
.sort-select__trigger {
  display: grid;
  grid-template-columns: 1fr auto;
  grid-template-rows: auto auto;
  align-items: center;
  gap: 0 8px;
  width: 100%;
  height: 44px;
  padding: 0 12px 0 14px;
  border: 1px solid var(--line);
  border-radius: var(--radius);
  background: #16161b;
  color: var(--ink);
  text-align: left;
  cursor: pointer;
  font-family: inherit;
  transition: border-color 0.18s ease, background 0.18s ease;
}
.sort-select__trigger:hover { border-color: rgba(168, 35, 48, 0.5); }
.sort-select.is-open .sort-select__trigger { border-color: var(--blood-bright); background: #1a1a20; }
.sort-select__eyebrow {
  grid-area: 1 / 1;
  font-family: var(--mono);
  font-size: 9px;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--muted);
  line-height: 1;
  margin-bottom: 2px;
}
.sort-select__current {
  grid-area: 2 / 1;
  font-size: 13.5px;
  line-height: 1.1;
  color: var(--ink);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.sort-select__chev {
  grid-area: 1 / 2 / span 2 / 3;
  width: 16px;
  height: 16px;
  color: var(--muted);
  transition: transform 0.2s ease, color 0.2s ease;
}
.sort-select.is-open .sort-select__chev { transform: rotate(180deg); color: var(--blood-bright); }
.sort-select__menu {
  position: absolute;
  top: calc(100% + 6px);
  right: 0;
  left: auto;
  min-width: 100%;
  z-index: 40;
  margin: 0;
  padding: 6px;
  list-style: none;
  background: #131318;
  border: 1px solid rgba(255, 255, 255, 0.1);
  border-radius: 12px;
  box-shadow: 0 18px 44px rgba(0, 0, 0, 0.45);
  opacity: 0;
  visibility: hidden;
  transform: translateY(-6px);
  transition: opacity 0.16s ease, transform 0.16s ease, visibility 0.16s;
}
.sort-select.is-open .sort-select__menu { opacity: 1; visibility: visible; transform: translateY(0); }
.sort-select__opt {
  padding: 9px 12px;
  border-radius: 8px;
  font-size: 13.5px;
  color: var(--ink);
  white-space: nowrap;
  cursor: pointer;
  user-select: none;
  transition: background 0.14s ease, color 0.14s ease;
}
.sort-select__opt:hover { background: rgba(168, 35, 48, 0.14); }
.sort-select__opt.is-selected { color: #fff; background: rgba(168, 35, 48, 0.22); }
.sort-select__opt.is-selected::after { content: "✓"; float: right; margin-left: 14px; color: var(--blood-bright); }

/* patch29: header search width (desktop) + compact mobile header + clean mobile hero */
.search-trigger { min-width: 150px !important; }

/* patch69: the full desktop header (brand+nav+search+account+cart+Авито+Telegram) was
   ~1400px wide and got CLIPPED off the right edge on every laptop < ~1580px (Telegram
   unclickable). Between 861–1440 keep the nav but drop the two rightmost secondary links
   (Авито/Telegram — also reachable in the footer + hamburger) and shrink the search to an
   icon, so the row always fits. Below 860 the existing hamburger takes over. */
@media (max-width: 1440px) {
  .header-actions .avito-link,
  .header-actions .tg-link { display: none !important; }
  .search-trigger { min-width: 0 !important; width: 40px !important; padding: 0 !important; justify-content: center !important; gap: 0 !important; flex: 0 0 auto; }
  .search-trigger span { display: none !important; }
  .site-header__inner { gap: 18px; }
}

@media (max-width: 860px) {
  /* search collapses to a compact icon so the mobile header stops overflowing */
  .search-trigger { min-width: 0 !important; width: 40px !important; height: 40px !important; padding: 0 !important; justify-content: center !important; gap: 0 !important; flex: 0 0 auto; }
  .search-trigger span { display: none !important; }
  .search-trigger svg { width: 18px !important; height: 18px !important; }
  .header-actions { gap: 8px !important; }
}

@media (max-width: 1100px) {
  /* mobile hero: image first, no full-viewport empty blocks, tidy spacing */
  .hero-story__shell { padding-top: 14px !important; gap: 6px !important; }
  .hero-story__right { order: -1 !important; }
  .hero-step { min-height: auto !important; padding: 22px 0 26px !important; }
  .hero-stage {
    position: relative !important; top: 0 !important;
    height: auto !important; max-height: none !important;
    /* Match the hero photo's own aspect (~844x1500) so object-fit:cover shows the
       whole frame — the 4/5 box cropped off the "WatchLab" wordmark at the top. */
    aspect-ratio: 941 / 1672 !important; width: 100% !important;
    margin: 0 0 6px !important; border-radius: 14px !important;
  }
}

/* ===================================================================
   patch30: deep mobile refactor — opaque full-height menu, real tap
   targets (cart stepper / remove / buttons / footer), no iOS input
   zoom, anchor scroll-offset under fixed header.
   =================================================================== */
@media (max-width: 860px) {
  /* --- mobile menu: solid, near-full-height drawer (was a transparent
     floating card — the page-wide `.nav-links{background:transparent}`
     theme override leaked in and made items unreadable over the hero) --- */
  body.menu-open .nav-links,
  .site-header.is-menu-open .nav-links {
    left: 10px !important;
    right: 10px !important;
    min-height: calc(100dvh - var(--header-h) - 56px) !important;
    max-height: calc(100dvh - var(--header-h) - 20px) !important;
    background: #0d0d10 !important;
    backdrop-filter: blur(16px) !important;
    -webkit-backdrop-filter: blur(16px) !important;
    border: 1px solid rgba(255, 255, 255, 0.10) !important;
    border-radius: 16px !important;
    box-shadow: 0 30px 90px rgba(0, 0, 0, 0.55) !important;
    overflow-y: auto !important;
    -webkit-overflow-scrolling: touch;
  }

  /* dim the rest of the page behind the menu (sits below the header,
     above page content; purely visual so the × in the header still closes) */
  body.menu-open::after {
    content: "";
    position: fixed;
    inset: 0;
    z-index: 999;
    background: rgba(7, 7, 9, 0.62);
    /* no pointer-events:none here: the dim must swallow the tap — otherwise the same tap
       that closes the menu also activates whatever card/link sits underneath */
  }

  /* --- cart: thumb-friendly quantity stepper + remove control --- */
  .cart-item__qty {
    grid-template-columns: 44px 1fr 44px !important;
    height: 44px !important;
  }
  .cart-item__qty button {
    min-width: 44px;
    min-height: 44px;
    font-size: 20px !important;
  }
  .cart-item__qty span {
    font-size: 15px !important;
  }
  .cart-item__remove {
    display: inline-flex;
    align-items: center;
    min-height: 40px;
    padding: 8px 6px;
    font-size: 13px;
  }

  /* --- bigger primary CTAs (were ~34px tall) --- */
  button.primary,
  a.primary,
  .product-actions button.primary,
  .line-card .primary,
  .hero-step .primary {
    min-height: 46px;
  }

  /* --- footer link rows: real tap height --- */
  .site-footer__grid ul li a {
    display: inline-flex;
    align-items: center;
    min-height: 38px;
    padding: 6px 0;
  }

  /* --- larger, easier-to-aim filter controls --- */
  .filter-check input {
    width: 18px !important;
    height: 18px !important;
  }

  /* --- prevent iOS auto-zoom on focus: text fields must be >=16px --- */
  input:not([type="range"]):not([type="radio"]):not([type="checkbox"]),
  textarea,
  select {
    font-size: 16px !important;
  }
}

/* anchor jumps shouldn't land under the fixed header */
:target {
  scroll-margin-top: calc(var(--header-h) + 36px);
}

/* ===================================================================
   patch31: mobile catalog submenu — make the expanded "Каталог" preview
   match the dark drawer. It was inheriting the desktop dropdown's cream
   paper gradient (rgba(232,227,218)) which rendered as a washed-out milky
   grey panel with a near-invisible dark-red CTA on the dark menu.
   =================================================================== */
@media (max-width: 860px) {
  body.menu-open .catalog-menu,
  .site-header.is-menu-open .catalog-menu {
    background: rgba(18, 18, 22, 0.96) !important;
    border: 1px solid rgba(255, 255, 255, 0.08) !important;
    backdrop-filter: none !important;
    -webkit-backdrop-filter: none !important;
    box-shadow: none !important;
  }

  /* primary "Перейти в каталог" pill — solid blood-red, readable */
  body.menu-open .catalog-menu__cta,
  .site-header.is-menu-open .catalog-menu__cta {
    background: var(--blood) !important;
    border-color: var(--blood) !important;
    color: #fff !important;
    box-shadow: none !important;
  }
  body.menu-open .catalog-menu__cta svg,
  .site-header.is-menu-open .catalog-menu__cta svg {
    color: #fff !important;
  }

  /* category groups: crisp dark cards consistent with the nav items */
  body.menu-open .catalog-menu__group,
  .site-header.is-menu-open .catalog-menu__group {
    background: rgba(255, 255, 255, 0.035) !important;
    border-radius: 12px;
  }
  body.menu-open .catalog-menu__group > span,
  .site-header.is-menu-open .catalog-menu__group > span {
    color: var(--ink-mute) !important;
  }
  body.menu-open .catalog-menu__group a,
  .site-header.is-menu-open .catalog-menu__group a {
    background: rgba(12, 12, 15, 0.9) !important;
    border-color: rgba(255, 255, 255, 0.10) !important;
  }
  body.menu-open .catalog-menu__group a strong,
  .site-header.is-menu-open .catalog-menu__group a strong {
    color: var(--ink) !important;
  }
  body.menu-open .catalog-menu__group a small,
  .site-header.is-menu-open .catalog-menu__group a small {
    color: var(--muted) !important;
  }
}

/* ===================================================================
   patch32: account 2.0 — orders, wishlist, addresses, order success,
   wishlist toggles. Dark, on-brand, fully responsive.
   =================================================================== */

/* small button variant */
.btn--sm { min-height: 38px; padding: 0 14px; font-size: 13px; }

/* sidebar count badges + support link */
.account-tabs button i {
  font-style: normal; font-size: 11px; font-weight: 700;
  margin-left: 6px; padding: 1px 7px; border-radius: 999px;
  background: var(--blood); color: #fff; vertical-align: middle;
}
.account-tabs button.is-active i { background: rgba(255,255,255,0.22); }
.account-sidebar__support {
  display: block; margin-top: 14px; padding: 12px 14px;
  border: 1px solid var(--line-soft); border-radius: var(--radius);
  color: var(--ink-mute); font-size: 13px; text-align: center;
  transition: 0.18s ease;
}
.account-sidebar__support:hover { color: var(--ink); border-color: var(--line); background: rgba(255,255,255,0.03); }

.account-card__actions { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 16px; }

/* status pills */
.account-status {
  display: inline-flex; align-items: center; gap: 6px;
  padding: 4px 11px; border-radius: 999px;
  font-size: 12px; font-weight: 600; letter-spacing: 0.01em; white-space: nowrap;
  border: 1px solid transparent;
}
.account-status::before { content: ""; width: 7px; height: 7px; border-radius: 50%; background: currentColor; }
.account-status.is-pending   { color: #d8a23a; background: rgba(216,162,58,0.12); border-color: rgba(216,162,58,0.28); }
.account-status.is-confirmed { color: #6ea8fe; background: rgba(110,168,254,0.12); border-color: rgba(110,168,254,0.28); }
.account-status.is-shipped   { color: #c08adf; background: rgba(192,138,223,0.12); border-color: rgba(192,138,223,0.28); }
.account-status.is-done      { color: #5fc27e; background: rgba(95,194,126,0.12); border-color: rgba(95,194,126,0.28); }
.account-status.is-cancelled { color: var(--muted); background: rgba(155,149,139,0.1); border-color: rgba(155,149,139,0.25); }

/* orders */
.account-orders { display: grid; gap: 14px; }
.account-order {
  border: 1px solid var(--line-soft); border-radius: var(--radius-lg);
  padding: 16px; background: rgba(255,255,255,0.015);
}
.account-order__head { display: flex; align-items: center; justify-content: space-between; gap: 10px 12px; margin-bottom: 12px; flex-wrap: wrap; }
.account-order__head > div:first-child { flex: 0 0 auto; }
.account-order__head strong { font-family: var(--mono, monospace); font-size: 14px; letter-spacing: 0.02em; white-space: nowrap; }
.account-order__date { display: block; font-size: 12px; color: var(--muted); margin-top: 3px; }
.account-order__items { display: grid; gap: 10px; }
.account-order__meta {
  display: flex; align-items: center; justify-content: space-between; gap: 12px;
  margin-top: 12px; padding-top: 12px; border-top: 1px solid var(--line-soft);
}
.account-order__meta span { font-size: 13px; color: var(--ink-mute); }
.account-order__meta strong { font-size: 16px; }
.account-order__actions { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 14px; }
.account-order__del, .btn.account-order__del:hover { color: var(--muted); }
.btn.account-order__del:hover { border-color: var(--blood); color: #e0707a; }

/* wishlist grid in account */
.account-wishlist { display: grid; grid-template-columns: repeat(2, minmax(0,1fr)); gap: 14px; }
.account-wish-item { border: 1px solid var(--line-soft); border-radius: var(--radius-lg); overflow: hidden; display: flex; flex-direction: column; background: rgba(255,255,255,0.015); }
.account-wish-item__media { display: block; aspect-ratio: 1/1; background: #fff; }
.account-wish-item__media img { width: 100%; height: 100%; object-fit: contain; }
.account-wish-item__body { padding: 12px 14px 14px; display: flex; flex-direction: column; gap: 6px; flex: 1; }
/* clamp the name to two lines and pin the buttons to the card bottom — cards in a row used to
   end at different heights with «Убрать» floating on разных уровнях */
.account-wish-item__body strong { font-size: 14px; line-height: 1.3; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.account-wish-item__body .price-now { font-size: 15px; }
.account-wish-item__actions { display: flex; gap: 8px; margin-top: auto; padding-top: 8px; }
.account-wish-item__actions .btn { flex: 1; }

/* addresses */
.account-address-list { display: grid; grid-template-columns: repeat(2, minmax(0,1fr)); gap: 14px; }
.account-address {
  border: 1px solid var(--line-soft); border-radius: var(--radius-lg);
  padding: 16px; background: rgba(255,255,255,0.015);
}
.account-address.is-default { border-color: rgba(169,35,48,0.5); box-shadow: inset 0 0 0 1px rgba(169,35,48,0.18); }
.account-address__top { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-bottom: 8px; }
.account-address__top strong { font-size: 15px; }
.account-address__badge { font-size: 11px; font-weight: 700; color: #fff; background: var(--blood); padding: 2px 9px; border-radius: 999px; }
.account-address p { margin: 0; font-size: 14px; color: var(--ink-soft); line-height: 1.45; }
.account-address__sub { font-size: 12px !important; color: var(--muted) !important; margin-top: 4px !important; }
.account-address__actions { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 14px; }

/* address / profile forms */
.account-address-form .account-form-grid,
.account-profile-form .account-form-grid { display: grid; grid-template-columns: repeat(2, minmax(0,1fr)); gap: 12px; margin-top: 6px; }
.account-form-grid__wide { grid-column: 1 / -1; }
.account-form-grid label,
.account-address-form label:not(.account-check),
.account-profile-form label { display: flex; flex-direction: column; gap: 6px; font-size: 13px; color: var(--ink-mute); }
.account-form-grid input,
.account-address-form input:not([type="checkbox"]),
.account-profile-form input {
  height: 44px; padding: 0 13px; border-radius: var(--radius);
  background: #101013; border: 1px solid var(--line); color: var(--ink); font-size: 15px;
}
.account-form-grid input:focus,
.account-address-form input:focus,
.account-profile-form input:focus { outline: none; border-color: var(--copper-deep); }
.account-check { display: flex !important; flex-direction: row !important; align-items: center; gap: 9px; margin-top: 12px; font-size: 14px; color: var(--ink-soft); cursor: pointer; }
.account-check input { width: 18px; height: 18px; accent-color: var(--blood); }
.account-form-error { margin: 10px 0 0; color: #e0707a; font-size: 13px; }

/* checkout save-address row */
.checkout-save-addr { display: flex !important; flex-direction: row !important; align-items: center; gap: 9px; margin-top: 12px; font-size: 14px; color: var(--ink-soft); cursor: pointer; }
.checkout-save-addr input { width: 18px; height: 18px; accent-color: var(--blood); }

/* order success on cart page */
.cart-success {
  max-width: 560px; margin: 10px auto; text-align: center;
  border: 1px solid var(--line-soft); border-radius: var(--radius-lg);
  padding: 36px 28px; background: #16161b;
}
.cart-success__icon {
  width: 64px; height: 64px; margin: 0 auto 18px; border-radius: 50%;
  display: grid; place-items: center; color: #5fc27e;
  background: rgba(95,194,126,0.12); border: 1px solid rgba(95,194,126,0.3);
}
.cart-success h2 { margin: 6px 0 10px; }
.cart-success p { color: var(--ink-mute); margin: 0 auto 18px; max-width: 440px; }
.cart-success__items { display: grid; gap: 10px; text-align: left; margin: 18px 0; }
.cart-success__total { display: flex; align-items: center; justify-content: space-between; padding: 14px 0; border-top: 1px solid var(--line-soft); border-bottom: 1px solid var(--line-soft); margin-bottom: 20px; }
.cart-success__total strong { font-size: 20px; }
.cart-success .cart-empty__actions { justify-content: center; }

/* wishlist toggle (heart) on cards */
.wishlist-toggle {
  width: 36px; height: 36px; display: grid; place-items: center;
  border-radius: 50%; cursor: pointer;
  background: rgba(11,11,13,0.72); border: 1px solid rgba(255,255,255,0.16);
  transition: 0.16s ease;
}
.wishlist-toggle svg { width: 19px; height: 19px; fill: transparent; stroke: #fff; stroke-width: 1.7; transition: 0.16s ease; }
.wishlist-toggle:hover { background: rgba(11,11,13,0.78); transform: scale(1.06); }
.wishlist-toggle.is-active { background: var(--blood); border-color: var(--blood); }
.wishlist-toggle.is-active svg { fill: #fff; stroke: #fff; }

/* wishlist toggle on product page (text button) */
.product-info__wish {
  display: inline-flex; align-items: center; gap: 9px; margin-top: 12px;
  padding: 10px 16px; border-radius: var(--radius); cursor: pointer;
  background: rgba(22,22,27,0.5); border: 1px solid var(--line); color: var(--ink-mute);
  font-size: 14px; font-weight: 500; transition: 0.16s ease;
}
.product-info__wish svg { width: 18px; height: 18px; fill: transparent; stroke: currentColor; stroke-width: 1.7; }
.product-info__wish:hover { color: var(--ink); border-color: var(--line); }
.product-info__wish.is-active { color: #e0707a; border-color: rgba(169,35,48,0.45); background: rgba(169,35,48,0.08); }
.product-info__wish.is-active svg { fill: #e0707a; }

/* responsive */
@media (max-width: 720px) {
  .account-wishlist, .account-address-list { grid-template-columns: 1fr; }
  .account-address-form .account-form-grid,
  .account-profile-form .account-form-grid { grid-template-columns: 1fr; }
  .account-order__actions .btn, .account-address__actions .btn { flex: 1 1 auto; }
}

/* patch33: order details + unavailable-item + checkout transparency (audit follow-ups) */
.account-order__details {
  display: grid; gap: 6px; margin: 12px 0 0;
  padding: 12px; border-radius: var(--radius);
  background: rgba(255,255,255,0.02); border: 1px solid var(--line-soft);
}
.account-order__details > div { display: flex; gap: 10px; font-size: 13px; }
.account-order__details dt { color: var(--muted); min-width: 110px; margin: 0; }
.account-order__details dd { color: var(--ink-soft); margin: 0; }
.account-mini-product.is-gone { opacity: 0.55; }
.account-mini-product.is-gone em { color: #e0707a; font-style: normal; font-size: 11px; }

/* patch34: accessibility — skip-link + reduced-motion */
.skip-link {
  position: fixed; top: -60px; left: 12px; z-index: 4000;
  padding: 10px 16px; border-radius: var(--radius);
  background: var(--blood); color: #fff; font-weight: 600; font-size: 14px;
  text-decoration: none; transition: top 0.18s ease;
}
.skip-link:focus { top: 12px; outline: 2px solid #fff; outline-offset: 2px; }
:focus-visible { outline: 2px solid var(--copper-deep); outline-offset: 2px; }

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.001ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.001ms !important;
    scroll-behavior: auto !important;
  }
  .ticker__track { animation: none !important; }
}

/* patch35: backend-account auth tabs (phone / email) */
/* auth tabs — sliding pill (mirrors the nav drop-pill), no layout jump */
.wl-auth-tabs{position:relative;display:flex;gap:0;margin-bottom:16px;border:1px solid var(--line-soft);border-radius:999px;padding:4px}
.wl-auth-pill{position:absolute;top:4px;bottom:4px;left:4px;width:calc(50% - 4px);border-radius:999px;background:var(--blood);z-index:0;pointer-events:none;transition:transform .34s cubic-bezier(.22,1,.36,1);will-change:transform}
.wl-auth-tabs[data-mode="register"] .wl-auth-pill{transform:translateX(100%)}
.wl-auth-tab{position:relative;z-index:1;flex:1;height:36px;border:0;background:transparent;color:var(--ink-mute);font-weight:600;font-size:13px;border-radius:999px;cursor:pointer;transition:color .2s ease}
.wl-auth-tab.is-active{color:#fff}
/* auth form: grid layout + full-width buttons so the CTA never crams to the left */
.account-login-card #wlForm,.account-login-card #wlVForm{display:grid;gap:14px;margin:0}
.account-login-card #wlForm .btn,.account-login-card #wlVForm .btn{width:100%}
/* hide the "Назад" button in the compare view so it can't overlap the first image */
#productDialog:has(.compare-view) .dialog-back{display:none}

/* patch36: cookie consent banner (minimal) + register consent checkbox */
/* z-index 79: below the cart drawer/overlay (80/81) so the checkout CTA is never covered */
.wl-cookie{position:fixed;left:12px;right:12px;bottom:12px;z-index:79;max-width:640px;margin:0 auto;
  background:#141417;border:1px solid var(--line);border-radius:12px;padding:14px 16px;
  display:flex;flex-wrap:wrap;align-items:center;gap:10px 16px;box-shadow:0 20px 60px rgba(0,0,0,.5)}
.wl-cookie p{margin:0;flex:1 1 260px;font-size:13px;color:var(--ink-soft);line-height:1.45}
.wl-cookie a{color:var(--copper-deep);text-decoration:underline}
.wl-cookie__btns{display:flex;gap:8px}
.wl-cookie__ok{height:36px;padding:0 16px;border-radius:8px;border:1px solid var(--blood-d,#841a23);background:var(--blood,#a92330);color:#fff;font-weight:600;font-size:13px;cursor:pointer}
.wl-cookie__no{height:36px;padding:0 14px;border-radius:8px;border:1px solid var(--line);background:transparent;color:var(--ink-mute);font-size:13px;cursor:pointer}
.wl-cookie__ok:hover{background:#000}
.wl-consent{display:flex !important;flex-direction:row !important;align-items:flex-start;gap:9px;margin:4px 0 12px;font-size:12.5px;color:var(--ink-mute);line-height:1.4;cursor:pointer}
.wl-consent input{margin-top:2px;width:16px;height:16px;flex:0 0 auto;accent-color:var(--blood,#a92330)}
.wl-consent a{color:var(--copper-deep);text-decoration:underline}
.legal-doc{max-width:820px;margin:0 auto;padding:20px 0 60px}
.legal-doc h1{font-size:28px;margin:0 0 6px}
.legal-doc .legal-meta{color:var(--muted);font-size:13px;margin-bottom:24px}
.legal-doc h2{font-size:18px;margin:26px 0 10px}
.legal-doc p,.legal-doc li{color:var(--ink-soft);line-height:1.6;font-size:14px}
.legal-doc ul{padding-left:20px}

/* ===================================================================
   patch37: product reviews — rating summary, review cards with photos,
   the write form (star picker + photo add/remove uploader).
   =================================================================== */
.reviews{max-width:920px;margin:0 auto}
.reviews h2{font-family:var(--serif);font-size:26px;margin:0 0 18px}
.reviews .muted{color:var(--muted)}
.rev-top{display:grid;grid-template-columns:auto 1fr;gap:28px;align-items:center;padding:18px 20px;border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--paper-soft);margin-bottom:22px}
.rev-score{text-align:center;min-width:120px}
.rev-score strong{display:block;font-family:var(--serif);font-size:44px;line-height:1}
/* the count sits on its own centered line UNDER the stars — inline it hugged the stars'
   baseline and looked glued to their side ("0 оценок" криво, S11/bug-6) */
.rev-score .muted{display:block;font-size:12px;margin-top:4px}
.stars{display:inline-flex;gap:2px;color:#4a4a52;font-size:18px;line-height:1}
.stars .star.on{color:#d8a24a}
.stars--pick{font-size:30px;cursor:pointer}
.stars--pick .star{cursor:pointer;transition:transform .08s ease}
.stars--pick .star:hover{transform:scale(1.12)}
.rev-dist{display:grid;gap:6px}
.rev-bar{display:grid;grid-template-columns:28px 1fr 28px;gap:10px;align-items:center;font-size:12px;color:var(--muted)}
.rev-bar__track{height:7px;border-radius:4px;background:var(--copper-soft);overflow:hidden}
.rev-bar__track>div{height:100%;background:#d8a24a}
.rev-bar__c{text-align:right}
.rev-list{display:grid;gap:14px;margin-top:22px}
.rev-card{border:1px solid var(--line);border-radius:var(--radius-lg);padding:16px 18px;background:var(--paper-soft)}
.rev-card__head{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:8px}
.rev-card__head strong{font-size:14px}
.rev-card__head .muted{font-size:12px;margin-left:auto}
.rev-verified{font-size:11px;color:var(--olive);border:1px solid var(--copper-soft);border-radius:20px;padding:2px 8px}
.rev-card h4{margin:6px 0 4px;font-size:15px}
.rev-card p{margin:0;color:var(--ink-soft);line-height:1.6;font-size:14px}
.rev-photos{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}
.rev-photos img{width:76px;height:76px;object-fit:cover;border-radius:6px;border:1px solid var(--line);cursor:zoom-in}
.rev-reply{margin-top:12px;padding:10px 12px;border-left:2px solid var(--accent);background:var(--night-2);border-radius:0 6px 6px 0;font-size:13px;color:var(--ink-soft)}
.rev-reply strong{color:var(--accent-2)}
.rev-cta{margin:6px 0 8px}
.rev-form{border:1px solid var(--line);border-radius:var(--radius-lg);padding:18px 20px;background:var(--paper-deep);margin-bottom:22px;display:grid;gap:12px}
.rev-form h3{margin:0;font-size:17px;display:flex;align-items:center;gap:10px}
.rev-status{font-size:11px;padding:2px 9px;border-radius:20px;font-weight:600}
.rev-status--approved{background:rgba(127,145,115,.18);color:var(--olive)}
.rev-status--pending{background:rgba(216,162,74,.16);color:#d8a24a}
.rev-status--rejected{background:rgba(169,35,48,.18);color:var(--accent-2)}
.rev-form input,.rev-form textarea{width:100%;background:var(--night-2);border:1px solid var(--line);border-radius:6px;color:var(--ink);padding:10px 12px;font:inherit;font-size:14px}
.rev-form textarea{min-height:96px;resize:vertical}
.rev-form input:focus,.rev-form textarea:focus{outline:none;border-color:var(--accent-2)}
.rev-err{color:var(--accent-2);font-size:13px;margin:0}
.rev-form .btn{justify-self:start}
.rev-upl{margin-bottom:22px}
.rev-upl__grid{display:flex;gap:10px;flex-wrap:wrap;margin-top:8px}
.rev-upl__item{position:relative;width:76px;height:76px}
.rev-upl__item img{width:100%;height:100%;object-fit:cover;border-radius:6px;border:1px solid var(--line)}
.rev-upl__item button{position:absolute;top:-8px;right:-8px;width:22px;height:22px;border-radius:50%;border:1px solid var(--line);background:var(--night);color:var(--ink);cursor:pointer;font-size:15px;line-height:1;display:grid;place-items:center}
.rev-upl__item button:hover{background:var(--accent);border-color:var(--accent)}
.rev-upl__add{width:76px;height:76px;border:1px dashed var(--copper);border-radius:6px;display:grid;place-items:center;font-size:28px;color:var(--muted);cursor:pointer}
.rev-upl__add:hover{color:var(--ink);border-color:var(--ink)}
@media (max-width:640px){.rev-top{grid-template-columns:1fr;gap:16px;text-align:center}.rev-score{min-width:0}}

/* ===================================================================
   patch38: support tickets — contact-page form + cabinet thread.
   =================================================================== */
.support-form{display:grid;grid-template-columns:0.9fr 1.1fr;gap:34px;align-items:start;border:1px solid var(--line);border-radius:var(--radius-lg);padding:26px;background:var(--paper-soft)}
.support-form__intro h2{font-family:var(--serif);margin:6px 0 10px}
.support-form__intro p{color:var(--ink-soft);line-height:1.6}
.support-form__fields{display:grid;gap:12px}
.support-form__fields label{display:grid;gap:5px;font-size:13px;color:var(--muted)}
.support-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.support-form input,.support-form textarea{background:var(--night-2);border:1px solid var(--line);border-radius:6px;color:var(--ink);padding:10px 12px;font:inherit;font-size:14px}
.support-form input:focus,.support-form textarea:focus{outline:none;border-color:var(--accent-2)}
.support-form__err{color:var(--accent-2);font-size:13px;margin:0}
.support-form .btn{justify-self:start}
@media (max-width:820px){.support-form{grid-template-columns:1fr;gap:20px}.support-row{grid-template-columns:1fr}}

/* cabinet tickets */
.ticket-list{display:grid;gap:8px}
.ticket-row{display:grid;gap:3px;text-align:left;background:var(--paper-soft);border:1px solid var(--line);border-radius:8px;padding:12px 14px;cursor:pointer;color:var(--ink);font:inherit}
.ticket-row:hover{border-color:var(--copper)}
.ticket-row__subj{font-weight:600}
.ticket-row__meta{font-size:12px;color:var(--muted)}
.ticket-status{display:inline-block;padding:1px 8px;border-radius:20px;font-size:11px;font-weight:600}
.ticket-status--open{background:rgba(216,162,74,.16);color:#d8a24a}
.ticket-status--pending{background:rgba(110,168,254,.14);color:#6ea8fe}
.ticket-status--closed{background:rgba(155,149,139,.12);color:var(--muted)}
.ticket-thread{margin-top:16px;border-top:1px solid var(--line);padding-top:14px}
.ticket-thread h4{margin:0 0 10px;display:flex;gap:10px;align-items:center}
.ticket-msgs{display:grid;gap:10px;margin-bottom:12px;max-height:360px;overflow:auto}
.tmsg{border:1px solid var(--line);border-radius:8px;padding:8px 12px;max-width:85%}
.tmsg--customer{justify-self:end;background:var(--night-2)}
.tmsg--admin{justify-self:start;background:rgba(169,35,48,.08);border-color:rgba(169,35,48,.25)}
.tmsg__who{display:block;font-size:11px;color:var(--muted);margin-bottom:3px}
#ticketReplyForm{display:flex;gap:8px;align-items:flex-start}
#ticketReplyForm textarea{flex:1;background:var(--night-2);border:1px solid var(--line);border-radius:6px;color:var(--ink);padding:9px 11px;font:inherit;resize:vertical}

/* ===================================================================
   patch39: returns / RMA — cabinet list + create-return form.
   =================================================================== */
.ret-head{margin-bottom:12px}
.ret-list{display:grid;gap:8px;margin-bottom:14px}
.ret-row{border:1px solid var(--line);border-radius:8px;padding:12px 14px;background:var(--paper-soft)}
.ret-row__meta{font-size:12px;color:var(--muted);margin-top:3px}
.ret-status{display:inline-block;padding:1px 8px;border-radius:20px;font-size:11px;font-weight:600;margin-left:6px}
.ret-status--requested{background:rgba(216,162,74,.16);color:#d8a24a}
.ret-status--approved{background:rgba(110,168,254,.14);color:#6ea8fe}
.ret-status--received{background:rgba(192,138,223,.14);color:#c08adf}
.ret-status--refunded{background:rgba(127,145,115,.18);color:var(--olive)}
.ret-status--rejected,.ret-status--cancelled{background:rgba(155,149,139,.12);color:var(--muted)}
.ret-empty{color:var(--muted);font-size:14px;padding:10px 0}
.ret-form{border:1px solid var(--line);border-radius:var(--radius-lg);padding:16px 18px;background:var(--paper-deep);display:grid;gap:12px;margin-top:12px}
.ret-form h4{margin:0;font-size:16px}
.ret-field{display:grid;gap:5px;font-size:13px;color:var(--muted)}
.ret-form select,.ret-form input,.ret-form textarea{background:var(--night-2);border:1px solid var(--line);border-radius:6px;color:var(--ink);padding:9px 11px;font:inherit;font-size:14px}
.ret-form select:focus,.ret-form input:focus,.ret-form textarea:focus{outline:none;border-color:var(--accent-2)}
.ret-item{display:grid;grid-template-columns:1fr auto 72px;gap:10px;align-items:center;padding:8px 0;border-bottom:1px solid var(--line-soft)}
.ret-item label{display:flex;gap:8px;align-items:center;color:var(--ink);font-size:14px}
.ret-qty{width:72px}
.ret-form .btn{justify-self:start}
@media (max-width:560px){.ret-item{grid-template-columns:1fr auto;grid-auto-rows:auto}.ret-qty{width:100%}}

/* ===================================================================
   patch40: cart promo code (coupons).
   =================================================================== */
.promo-box{display:flex;gap:8px;margin:10px 0 4px}
.promo-box input{flex:1;background:var(--night-2);border:1px solid var(--line);border-radius:6px;color:var(--ink);padding:9px 11px;font:inherit;font-size:14px;text-transform:uppercase}
.promo-box input:focus{outline:none;border-color:var(--accent-2)}
.promo-box input:disabled{opacity:.7}
.promo-msg{color:var(--accent-2);font-size:12px;margin:2px 0 0}
.cart-summary__row--promo{color:var(--olive)}
.cart-summary__row--promo button{background:none;border:none;color:var(--muted);cursor:pointer;font-size:15px;line-height:1;padding:0 2px}
.cart-summary__row--promo button:hover{color:var(--accent-2)}

/* ===================================================================
   patch41: product compare — card tool, floating tray, compare table.
   =================================================================== */
.product-media__tools{position:absolute;top:10px;right:10px;display:flex;flex-direction:column;gap:8px;z-index:2}
.compare-toggle{width:36px;height:36px;display:grid;place-items:center;border-radius:50%;border:1px solid var(--line);background:rgba(11,11,13,.82);color:var(--ink-soft);cursor:pointer;transition:all .15s}
.compare-toggle svg{width:18px;height:18px}
.compare-toggle:hover{border-color:var(--ink);color:var(--ink)}
.compare-toggle.is-active{background:var(--accent);border-color:var(--accent);color:#fff}
.product-info__secondary{display:flex;gap:10px;flex-wrap:wrap}
.compare-tray{position:fixed;left:50%;bottom:20px;transform:translateX(-50%);z-index:60;display:flex;align-items:center;gap:14px;padding:10px 16px;border:1px solid var(--line);border-radius:40px;background:var(--paper-deep);box-shadow:var(--shadow-md)}
.compare-tray__count{font-size:13px;color:var(--ink-soft);font-weight:600}
.compare-tray__clear{background:none;border:none;color:var(--muted);cursor:pointer;font-size:13px}
.compare-tray__clear:hover{color:var(--accent-2)}
.compare-view h2{font-family:var(--serif);margin:0 0 16px}
.compare-scroll{overflow-x:auto}
.compare-table{border-collapse:collapse;width:100%;min-width:520px}
.compare-table th,.compare-table td{border:1px solid var(--line);padding:10px 12px;text-align:left;vertical-align:top;font-size:14px}
.compare-table thead th{text-align:center;background:var(--paper-soft)}
.compare-table thead img{width:120px;height:120px;object-fit:cover;border-radius:8px;display:block;margin:0 auto 8px}
.compare-table thead span{display:block;font-size:13px;margin-bottom:4px}
.compare-table thead strong{display:block;color:var(--ink);margin-bottom:8px}
.compare-table td:first-child{color:var(--muted);font-weight:600;white-space:nowrap;background:var(--paper-soft)}
.compare-remove{background:none;border:1px solid var(--line);border-radius:6px;color:var(--muted);cursor:pointer;padding:4px 10px;font-size:12px}
.compare-remove:hover{border-color:var(--accent-2);color:var(--accent-2)}
@media (max-width:640px){.compare-tray{width:calc(100% - 32px);justify-content:space-between}}

/* ===================================================================
   patch42: availability states + waitlist form.
   =================================================================== */
.stock-badge.is-soon{background:rgba(216,162,74,.16);color:#d8a24a}
.product-info__stock--out{color:var(--muted)}
.waitlist-form{padding:8px 4px;display:grid;gap:12px;max-width:420px}
.waitlist-form h2{font-family:var(--serif);margin:0}
.waitlist-form p{color:var(--ink-soft);margin:0}
.waitlist-form label{display:grid;gap:5px;font-size:13px;color:var(--muted)}
.waitlist-form input{background:var(--night-2);border:1px solid var(--line);border-radius:6px;color:var(--ink);padding:10px 12px;font:inherit;font-size:14px}
.waitlist-form input:focus{outline:none;border-color:var(--accent-2)}
.waitlist-err{color:var(--accent-2);font-size:13px}

/* patch43: loyalty points */
.points-ledger{display:grid;gap:6px;margin-top:6px}
.points-row{display:flex;justify-content:space-between;font-size:13px;padding:5px 0;border-bottom:1px solid var(--line-soft)}
.points-row .pl-pos{color:var(--olive)}
.points-row .pl-neg{color:var(--accent-2)}

/* patch44: honeypot anti-bot field (visually hidden, off-screen) */
.hp-field{position:absolute!important;left:-9999px!important;top:auto;width:1px;height:1px;opacity:0;pointer-events:none}

/* patch45: blog / журнал */
.blog-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:18px;margin-top:20px}
.blog-card{display:flex;flex-direction:column;border:1px solid var(--line);border-radius:var(--radius-lg);overflow:hidden;background:var(--paper-soft);text-decoration:none;color:inherit;transition:border-color .15s}
.blog-card:hover{border-color:var(--copper)}
.blog-card img{width:100%;height:170px;object-fit:cover}
.blog-card>div{padding:14px 16px}
.blog-card h3{margin:0 0 6px;font-family:var(--serif)}
.blog-card p{margin:0;color:var(--muted);font-size:14px}

/* patch46: product variations picker */
.variation-picker{display:flex;flex-wrap:wrap;gap:8px;margin:6px 0 14px}
.variation-pill{display:flex;flex-direction:column;gap:2px;align-items:flex-start;border:1px solid var(--line);border-radius:8px;padding:8px 14px;background:var(--paper-soft);color:var(--ink);cursor:pointer;font:inherit;font-size:14px;transition:border-color .15s}
.variation-pill span{font-size:12px;color:var(--muted)}
.variation-pill:hover{border-color:var(--copper)}
.variation-pill.is-active{border-color:var(--accent-2);background:rgba(169,35,48,.08)}
.variation-pill.is-out{opacity:.5;cursor:not-allowed;text-decoration:line-through}

/* ===================================================================
   patch47: performance — smooth cross-document View Transitions (MPA).
   Progressive enhancement (Chromium); ignored elsewhere.
   =================================================================== */
/* MPA View Transitions REMOVED — they animated every page navigation (the cabinet
   "slid up from the bottom with lag") and cross-faded the ticker between pages
   (the marquee "shake" on tab switch). Instant navigation is smoother/predictable. */

/* ===================================================================
   patch48: performance — CLS-proof media + off-screen skip for the grid.
   =================================================================== */
/* fixed box for card images → zero layout shift while they load */
.product-media{aspect-ratio:1/1;overflow:hidden}
.product-media img{width:100%;height:100%;object-fit:cover;display:block}
/* NOTE: content-visibility:auto was REMOVED here — with a variable card height its
   size estimate was wrong, so the document height churned during fast scroll and the
   page "teleported"/shook. 98 cards render fine without it. */

/* ===================================================================
   patch49: order status timeline + tracking (cabinet).
   =================================================================== */
.order-timeline{display:flex;gap:0;margin:12px 0;justify-content:space-between;position:relative}
.order-timeline--cancelled{color:var(--accent-2);font-size:13px;justify-content:flex-start}
.order-step{flex:1;display:flex;flex-direction:column;align-items:center;gap:5px;font-size:11px;color:var(--muted);position:relative}
.order-step:not(:last-child)::after{content:"";position:absolute;top:7px;left:50%;width:100%;height:2px;background:var(--line)}
.order-step.is-on:not(:last-child)::after{background:var(--olive)}
.order-dot{width:14px;height:14px;border-radius:50%;background:var(--line);border:2px solid var(--paper-soft);z-index:1}
.order-step.is-on .order-dot{background:var(--olive)}
.order-step.is-on{color:var(--ink-soft)}
.order-track{font-size:13px;color:var(--ink-soft);margin:2px 0 8px}

/* ===================================================================
   patch50: cart drawer (mini-cart flyout).
   =================================================================== */
.cart-drawer__overlay{position:fixed;inset:0;background:rgba(0,0,0,.5);z-index:80;opacity:0;transition:opacity .25s}
.cart-drawer__overlay.is-open{opacity:1}
.cart-drawer{position:fixed;top:calc(var(--header-h) + 32px);right:0;height:calc(100% - var(--header-h) - 32px);width:400px;max-width:92vw;background:var(--paper-deep);border-left:1px solid var(--line);border-top:1px solid var(--line);z-index:81;display:flex;flex-direction:column;transform:translateX(100%);transition:transform .25s ease;box-shadow:var(--shadow-lg)}
.cart-drawer.is-open{transform:none}
.cart-drawer__head{display:flex;justify-content:space-between;align-items:center;padding:18px 20px;border-bottom:1px solid var(--line)}
.cart-drawer__head strong{font-family:var(--serif);font-size:18px}
.cart-drawer__close{background:none;border:none;color:var(--ink);font-size:26px;line-height:1;cursor:pointer}
.cart-drawer__body{flex:1;overflow:auto;display:flex;flex-direction:column}
.cart-drawer__empty{color:var(--muted);padding:24px 20px}
.cart-drawer__items{padding:8px 20px}
.cart-drawer__item{display:grid;grid-template-columns:64px 1fr auto;gap:12px;padding:12px 0;border-bottom:1px solid var(--line-soft)}
.cart-drawer__item img{width:64px;height:64px;object-fit:cover;border-radius:6px;border:1px solid var(--line)}
.cart-drawer__info a{color:var(--ink);text-decoration:none;font-size:14px;display:block}
.cart-drawer__info .muted{font-size:12px}
.cart-drawer__qty{display:inline-flex;align-items:center;gap:10px;margin-top:6px;border:1px solid var(--line);border-radius:20px;padding:2px 8px}
.cart-drawer__qty button{background:none;border:none;color:var(--ink);cursor:pointer;font-size:16px;line-height:1}
.cart-drawer__price{text-align:right;display:flex;flex-direction:column;gap:6px;align-items:flex-end}
.cart-drawer__rm{background:none;border:none;color:var(--muted);font-size:12px;cursor:pointer}
.cart-drawer__rm:hover{color:var(--accent-2)}
.cart-drawer__foot{padding:16px 20px;border-top:1px solid var(--line);display:grid;gap:10px;background:var(--paper-soft)}
.cart-drawer__total{display:flex;justify-content:space-between;font-size:16px}
.cart-drawer__total strong{font-family:var(--serif)}
.cart-drawer .btn{justify-content:center}

/* patch51: in-stock toggle */
.instock-toggle{display:inline-flex;align-items:center;gap:8px;font-size:14px;color:var(--ink-soft);cursor:pointer;user-select:none;white-space:nowrap}
.instock-toggle input{width:16px;height:16px;accent-color:var(--accent-2)}

/* patch52: СДЭК delivery calculator */
.cdek-panel{margin:6px 0 10px;padding:12px;border:1px solid var(--line);border-radius:8px;background:var(--paper-soft)}
.cdek-calc-row{display:flex;gap:8px}
.cdek-calc-row input{flex:1;background:var(--night-2);border:1px solid var(--line);border-radius:6px;color:var(--ink);padding:9px 11px;font:inherit;font-size:14px}
.cdek-msg{color:var(--muted);font-size:13px;margin:8px 0 0}
.cdek-opts{display:grid;gap:8px;margin-top:10px}
.cdek-opt{display:flex;justify-content:space-between;align-items:center;gap:10px;border:1px solid var(--line);border-radius:8px;padding:10px 12px;background:var(--night-2);color:var(--ink);cursor:pointer;font:inherit;text-align:left}
.cdek-opt:hover{border-color:var(--copper)}
.cdek-opt__info small{display:block;color:var(--muted);font-size:12px;margin-top:2px}
.cdek-opt__price{font-weight:600;white-space:nowrap}
.cdek-pvz{display:grid;gap:5px;margin-top:10px;font-size:13px;color:var(--muted)}
.cdek-pvz select{background:var(--night-2);border:1px solid var(--line);border-radius:6px;color:var(--ink);padding:9px 11px;font:inherit;font-size:14px}

/* patch53: payment choice at checkout + pay button in cabinet orders */
.pay-choice{display:grid;gap:8px;padding:12px;border:1px solid var(--line);border-radius:8px;background:var(--paper-soft);margin:4px 0}
.pay-choice__label{font-size:13px;color:var(--muted)}
.pay-choice label{display:flex;align-items:center;gap:8px;font-size:14px;color:var(--ink-soft);cursor:pointer}
.pay-choice input{width:16px;height:16px;accent-color:var(--accent-2)}
.order-pay{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:8px 0 4px}
.order-pay .muted{font-size:12px}

/* ===== patch64: scroll-teleport follow-ups + dialog/compare polish ===== */
/* reserve space while the catalog renders async, so scroll position never shifts */
#catalogGrid:empty, #productGrid:empty { min-height: 90vh; }

/* compare table: fixed layout → even, consistent product columns (was ragged/auto) */
.compare-table { table-layout: fixed; }
.compare-table th:first-child, .compare-table td:first-child { width: 128px; }
.compare-table thead th { vertical-align: bottom; padding-top: 14px; }
.compare-table thead img { width: 92px; height: 92px; }
.compare-table thead strong { font-size: 13px; line-height: 1.3; }
.compare-view { padding: 6px 2px 2px; }
.compare-view h2 { text-align: left; }

/* dialog: let the "Назад" pill sit JUST outside the top-left corner (crisp), while the
   form/content scrolls inside — the frame no longer clips it */
.product-dialog { overflow: visible; }
#dialogContent {
  max-height: calc(100dvh - 46px);
  overflow-y: auto;
  overscroll-behavior: contain;
  -webkit-overflow-scrolling: touch;
  border-radius: var(--radius-lg);
}
/* keep the back pill inside the dialog corner (S4) — negative offsets poked past the rounded edge */
.dialog-back { top: 14px; left: 14px; }
@media (max-width: 560px) { .dialog-back { top: 12px; left: 10px; } }
/* focus is parked on the scroll container after showModal (S4) — no ring on it */
#dialogContent:focus { outline: none; }

/* ===== patch65: favorites = logged-in only + clean heart ===== */
/* guest localStorage favorites are pointless (lost on device change) — hide the heart
   until the /auth/me probe confirms a logged-in customer (body.wl-authed) */
body:not(.wl-authed) .wishlist-toggle,
body:not(.wl-authed) .product-info__wish[data-wishlist] { display: none !important; }
.wishlist-toggle svg { width: 18px; height: 18px; }

/* ===== patch66: compare label column must wrap (long labels like "Материал браслета"
   were overflowing into the value column) ===== */
.compare-table th:first-child, .compare-table td:first-child { width: 152px; white-space: normal; line-height: 1.25; }

/* ===== patch67: returns/support — reserve height so the "Загрузка…"→content swap
   doesn't change the panel height (that jump was the shake) ===== */
/* reserve ≥ the empty-state height so the "Загрузка…"→content swap has ZERO height change;
   centering applies ONLY to the lone loading line — grid-centering the real content made the
   whole panel visibly squash and re-expand while it loaded */
#wlReturnsHost, #wlTicketsHost { min-height: 220px; }
#wlReturnsHost > .muted:only-child, #wlTicketsHost > .muted:only-child { display: grid; place-items: center; min-height: 220px; text-align: center; margin: 0; }

/* ===== patch70: full-QA storefront fixes ===== */
/* product page: reserve height while the ~1.8MB catalog JSON loads (was teleport/CLS on load) */
#productPage:empty { min-height: 90vh; }
/* cart: reserve height during async render (CLS ~0.55) */
#cartRoot:empty { min-height: 78vh; }
/* cart mobile: minmax(0,1fr) so a wide child can't push the page sideways (17px h-overflow) */
@media (max-width: 1024px) { .cart-layout { grid-template-columns: minmax(0, 1fr); } }
/* compare tray covered the footer legal text + card CTAs — reserve space for it on ALL viewports */
body.has-compare-tray { padding-bottom: 92px; }
/* mobile catalog toolbar: search (40px) and sort (44px) didn't align — match them */
@media (max-width: 640px) { .sort-select__trigger { height: 40px !important; } }
/* product-detail secondary buttons: match radius + height of the CTA row above (were radius 2px) */
.product-info__wish { min-height: 44px; border-radius: 8px !important; }

/* ===== patch71: cabinet order card — savings + expandable detail ===== */
.account-order__save { margin: 8px 0 0; font-size: 13px; color: var(--accent, #a92330); font-weight: 600; }
.account-order__more { margin-top: 10px; border-top: 1px solid var(--line); padding-top: 8px; }
.account-order__more > summary { cursor: pointer; font-size: 13px; color: var(--muted); list-style: none; display: inline-flex; align-items: center; gap: 6px; }
.account-order__more > summary::-webkit-details-marker { display: none; }
.account-order__more > summary::before { content: "▸"; font-size: 11px; transition: transform .15s; }
.account-order__more[open] > summary::before { transform: rotate(90deg); }
.account-order__detail { display: grid; gap: 8px; margin-top: 10px; font-size: 13px; }
.account-order__detail > div { display: flex; justify-content: space-between; gap: 14px; }
.account-order__detail > div > span:first-child { color: var(--muted); flex: 0 0 auto; }
.account-order__detail > div > span:last-child { text-align: right; }
.account-order__ladder { display: grid; gap: 5px; margin-top: 4px; padding-top: 8px; border-top: 1px dashed var(--line); }
.account-order__ladder > div { display: flex; justify-content: space-between; gap: 14px; }
.account-order__ladder > div > span:first-child { color: var(--muted); }
.account-order__ladder-total { font-weight: 700; }
.account-order__ladder-total b { font-size: 15px; }

/* ===== B3: cart/checkout show the old price + savings ===== */
.cart-summary__row--save { color: var(--copper-deep); font-weight: 600; }
.cart-drawer__save { display: flex; justify-content: space-between; align-items: baseline; color: var(--copper-deep); font-weight: 600; font-size: 13px; margin-bottom: 8px; }
.cart-success__save { display: flex; justify-content: space-between; align-items: baseline; color: var(--copper-deep); font-weight: 600; margin: 6px 0; }
.cart-item__price .price-old, .cart-drawer__price .price-old { display: block; font-size: 12px; margin-bottom: 2px; text-align: right; }

/* ===== Wave 3 polish (S7 compare, S2 certificate disclosure) ===== */
.compare-name { display: block; font-weight: 600; text-decoration: none; color: inherit; }
.compare-name:hover, .compare-price:hover { color: var(--copper-deep); }
.compare-price { display: block; text-decoration: none; color: inherit; }
@keyframes wl-shake { 0%,100%{transform:translateX(-50%)} 20%{transform:translateX(calc(-50% - 7px))} 40%{transform:translateX(calc(-50% + 7px))} 60%{transform:translateX(calc(-50% - 5px))} 80%{transform:translateX(calc(-50% + 5px))} }
.compare-tray.shake { animation: wl-shake .45s ease; }
.promo-disclose { margin-top: 10px; }
.promo-disclose > summary { cursor: pointer; font-size: 13px; color: var(--copper-deep); list-style: none; display: inline-flex; align-items: center; gap: 6px; padding: 4px 0; }
.promo-disclose > summary::-webkit-details-marker { display: none; }
.promo-disclose > summary::before { content: "+"; font-weight: 700; }
.promo-disclose[open] > summary::before { content: "–"; }

/* ===== S12-5: change/delete contact buttons in the cabinet profile ===== */
.wl-contact-actions{display:inline-flex;gap:6px;margin-left:8px;vertical-align:middle}

/* ===== drawer must not reflow on +/−: qty and price get reserved, digit-stable boxes,
   otherwise the title shifts under the cursor and the next tap opens the product ===== */
.cart-drawer__price{min-width:112px;font-variant-numeric:tabular-nums}
.cart-drawer__qty span{min-width:2.6ch;text-align:center;font-variant-numeric:tabular-nums}
/* cart PAGE rows: same reflow class as the drawer — reserve digit-stable boxes */
.cart-item__price{min-width:132px;font-variant-numeric:tabular-nums}
.cart-item__qty span{min-width:3ch;text-align:center;font-variant-numeric:tabular-nums}
.product-card__qty span{font-variant-numeric:tabular-nums}
/* form errors keep a reserved line — appearing text must not shove the submit button
   under the cursor (promo/gift, support, cabinet, waitlist) */
.promo-msg, .support-form__err, .account-form-error, .waitlist-err { display: block; min-height: 1.2em; }
.promo-msg[hidden], .support-form__err[hidden], .account-form-error[hidden], .waitlist-err[hidden] { display: block; visibility: hidden; }
/* promo apply button: «Применить»→«✓» must not collapse the button and stretch the input */
.promo-box .btn { min-width: 96px; }
/* header cart badge: 2-digit count must not push the header icons */
.cart-button strong { min-width: 24px; }
/* first visit: the cookie banner occupies the bottom band — lift the compare tray above it */
body:has(.wl-cookie) .compare-tray { bottom: 96px; }
/* status pills baseline-hang next to larger inline text — center them optically */
.account-address__badge, .ret-status, .ticket-status { vertical-align: middle; }
/* wave8: cabinet skeletons — Возвраты/Обращения загружаются без «мигания» текста */
.wl-skel { display: flex; flex-direction: column; gap: 12px; min-height: 96px; padding: 6px 0; }
.wl-skel span { display: block; height: 14px; border-radius: 7px;
  background: linear-gradient(90deg, rgba(0,0,0,.06) 25%, rgba(0,0,0,.13) 50%, rgba(0,0,0,.06) 75%);
  background-size: 200% 100%; animation: wl-skel 1.2s ease-in-out infinite; }
@keyframes wl-skel { 0% { background-position: 200% 0 } 100% { background-position: -200% 0 } }
@media (prefers-reduced-motion: reduce) { .wl-skel span { animation: none; } }
/* wave8.2: НИКАКИХ анимаций появления у Возвратов/Обращений — скрытая (display:none)
   панель перезапускает CSS-анимацию при каждом показе, и контент «моргал» на каждом
   открытии таба. Контент рендерится вместе с кабинетом и просто есть. */
/* account first-paint skeleton (заменяется рендером кабинета/формы входа) */
.account-boot { display: grid; gap: 18px; padding: 26px 0 40px; }
.account-boot__grid { display: grid; grid-template-columns: 260px 1fr; gap: 18px; }
@media (max-width: 860px) { .account-boot__grid { grid-template-columns: 1fr; } }
/* wave8.3: чекаут — выбор сохранённого адреса; поддержка — залоченный контакт аккаунта */
.saved-addr { display: grid; gap: 8px; margin-bottom: 14px; }
.saved-addr__t { font-size: 12px; letter-spacing: .08em; text-transform: uppercase; color: var(--muted); }
.saved-addr__opt { display: flex !important; align-items: flex-start; gap: 10px; padding: 10px 12px; border: 1px solid var(--line); border-radius: 10px; cursor: pointer; transition: border-color .15s; }
.saved-addr__opt:hover { border-color: var(--copper-deep, #a05c2c); }
.saved-addr__opt:has(input:checked) { border-color: var(--copper-deep, #a05c2c); background: rgba(160, 92, 44, .05); }
.saved-addr__opt input { margin-top: 3px; flex: 0 0 auto; }
.saved-addr__opt strong { display: block; font-size: 14px; font-weight: 600; }
.saved-addr__opt small { display: block; color: var(--muted); font-size: 12.5px; margin-top: 2px; }
.saved-addr__def { font-style: normal; color: var(--copper-deep, #a05c2c); font-size: 11px; margin-left: 8px; }
.support-form__fields input[readonly] { opacity: .65; cursor: not-allowed; }
.support-form__hint { margin: -6px 0 0; font-size: 12.5px; color: var(--muted); }
/* wave8.4: пикер адресов — подсказка и бейдж «по умолчанию» как пилюля */
.saved-addr__hint { font-size: 13px; color: var(--muted); margin: -4px 0 2px; }
.saved-addr__def { display: inline-block; font-style: normal; font-size: 11px; color: var(--copper-deep, #a05c2c); border: 1px solid currentColor; border-radius: 999px; padding: 1px 8px; margin-top: 6px; }
#manualAddrFields { display: grid; gap: 12px; }
/* wave8.4: лид товара — фраза + чипы характеристик + сервисная строка (вместо одного скомканного абзаца) */
.lead-chips { display: flex; flex-wrap: wrap; gap: 8px; margin: 12px 0 0; }
.lead-chips span { display: inline-block; padding: 5px 12px; border: 1px solid var(--line); border-radius: 999px; font-size: 13px; color: var(--ink-soft); background: rgba(255,255,255,.03); white-space: nowrap; }
.lead-note { margin: 10px 0 0; font-size: 13px; color: var(--muted); }
.product-info__lead { line-height: 1.6; }
.dialog-info__lead { line-height: 1.55; }
.dialog-info .lead-note { font-size: 12.5px; }

/* perf-1: product images render inside a <picture> that offers an optimized WebP <source> with the
   original <img> kept as the fallback. display:contents makes the <picture> wrapper transparent to
   layout, so every existing `.product-media img` / `.product-gallery__track img` / thumb rule (grid
   placement, absolute positioning, sizing, blend modes) keeps applying to the <img> unchanged. */
.product-media picture,
.product-gallery__track picture,
.product-gallery__thumbs picture,
.dialog-thumbs picture { display: contents; }

/* =====================================================================
   Mobile bugfixes (feat/mobile-fixes)
   ===================================================================== */

/* [1] Mobile-nav jitter: locking body scroll (body.menu-open{overflow:hidden})
   removes the vertical scrollbar and widens the viewport, so the fixed header /
   ticker and centred content jump sideways on every open/close. JS records the
   scrollbar width in --wl-sbw (set before the lock); pad the flow content and the
   two fixed bars by that amount so nothing shifts. */
body.menu-open { padding-right: var(--wl-sbw, 0px); }
body.menu-open .site-header,
body.menu-open .ticker {
  padding-right: var(--wl-sbw, 0px);
  box-sizing: border-box;
}

/* [2] The nav "drop pill" (.wl-nav-pill) is a HOVER affordance — a pill that slides under
   the hovered link. On DESKTOP (mouse) that red pill is intentional and fine, so we leave
   it exactly as it was. The bug was on TOUCH/MOBILE: with no hover, taps left the pill
   stuck in random spots and it floated as a stray red bar in the hamburger menu. So keep
   desktop untouched and hide the pill entirely where there's no hover / on the mobile layout. */
@media (hover: none), (max-width: 1100px) {
  .wl-nav-pill { display: none !important; }
}

/* [4] Toast covered the "Сравнить" button: the bottom-right toast (bottom:24px) sat
   on top of the floating compare tray (bottom:20px, full-width on mobile). When the
   tray is present, lift the toast clear above it (and above the higher position the
   tray takes while the cookie banner is up). */
/* Only the MOBILE compare tray is full-width and overlaps the bottom-right toast. On desktop
   the tray is a centred pill, so the toast must stay in its normal bottom-right corner. */
@media (max-width: 640px) {
  body.has-compare-tray .toast { bottom: 96px; }
  body:has(.wl-cookie).has-compare-tray .toast { bottom: 172px; }
}

/* [5] Comparison cells: long values (e.g. "Нержавеющая сталь") in the fixed-layout
   compare table overflowed their narrow mobile columns onto the neighbour. Let long
   words break/wrap inside the cell. */
.compare-table td,
.compare-table th { overflow-wrap: break-word; word-break: break-word; }

/* [6] Product page horizontal scroll on very narrow phones (≤360px): the single-column
   .product-detail used grid-template-columns:1fr (=minmax(auto,1fr)), which refuses to
   shrink below the min-content of its children — chiefly the 3-tab .tabs-nav (a nowrap
   flex row ~344px wide), and also .product-info's implicit auto column. Let the tracks
   shrink to 0 and let the tab strip scroll within itself instead of pushing the page.
   Scoped to ≤1100px (the site's mobile breakpoint) so at 1100–1180px desktop keeps 2 columns. */
@media (max-width: 1100px) {
  .product-detail { grid-template-columns: minmax(0, 1fr); }
  .product-gallery,
  .product-gallery__thumbs,
  .product-info { min-width: 0; }
  .product-info { grid-template-columns: minmax(0, 1fr); }
  .tabs-nav { overflow-x: auto; scrollbar-width: none; }
  .tabs-nav::-webkit-scrollbar { display: none; }
  .tabs-nav button { flex: 0 0 auto; }
}

/* ==========================================================================
   WATCHLAB BRUTAL — фикс вспышки при MPA-переходах (wl-87)
   ========================================================================== */

/* Cross-document View Transitions: браузер снапшотит старую страницу и
   кроссфейдит в новую — blank-кадр между документами исчезает визуально.
   Chrome/Edge 126+, Safari 26; старые браузеры игнорируют (progressive
   enhancement). Требование same-origin выполняется (MPA на одном хосте). */
@view-transition {
  navigation: auto;
}

@media (prefers-reduced-motion: reduce) {
  @view-transition {
    navigation: none;
  }
}

/* wl-103: заскоупить MPA-переход. wl-87 включил его БЕЗ скоупа → браузер кроссфейдит
   всю страницу целиком, включая движущуюся бегущую строку и пилюлю навигации — это и
   есть «дёрганность» при переключении вкладок (#6/#7/#8). Решение: шапку и бегущую
   строку делаем неподвижными (hard-cut — animation:none и на group, И на old/new,
   иначе кроссфейд остаётся на old/new-снимках), а контенту (root = всё, кроме
   именованных) даём мягкое проявление по opacity. Под reduced-motion весь переход
   уже выключен (@view-transition navigation:none выше), так что эти правила не
   генерируются. На браузерах без cross-document VT (Firefox) — обычная мгновенная
   навигация без изменений. */
.site-header {
  view-transition-name: wl-header;
}
.ticker {
  view-transition-name: wl-ticker;
}
::view-transition-group(wl-header),
::view-transition-group(wl-ticker),
::view-transition-old(wl-header),
::view-transition-new(wl-header),
::view-transition-old(wl-ticker),
::view-transition-new(wl-ticker) {
  animation: none;
}
::view-transition-old(root) {
  animation: wl-vt-out 0.18s ease both;
}
::view-transition-new(root) {
  animation: wl-vt-in 0.24s ease both;
}
@keyframes wl-vt-out {
  to { opacity: 0; }
}
@keyframes wl-vt-in {
  from { opacity: 0; }
}

/* Скелетон каталога: статичные заглушки в #catalogGrid (catalog.html) занимают
   сетку до renderCatalog()/фолбэка ошибки — оба пере-записывают grid.innerHTML,
   так что скелетоны исчезают сами. Габариты повторяют .product-card:
   квадратная медиа-зона (aspect-ratio 1/1, как .product-media) + тело ~200px
   (.product-body: meta + h3 + теги + кнопки). */
.card-skel {
  position: relative;
  display: grid;
  grid-template-rows: auto 200px;
  background: #16161b;
  border: 1px solid var(--line-soft);
  border-radius: var(--radius-lg);
  overflow: hidden;
}

.card-skel::before {
  content: "";
  aspect-ratio: 1 / 1;
  background:
    radial-gradient(circle at 50% 40%, rgba(116, 112, 104, 0.12), transparent 60%),
    linear-gradient(155deg, #1b1b20, #121216);
}

/* лёгкий shimmer поверх всей карточки */
.card-skel::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(100deg, transparent 38%, rgba(244, 241, 234, 0.05) 50%, transparent 62%) 0 0 / 200% 100% no-repeat;
  animation: card-skel-shimmer 1.6s linear infinite;
}

@keyframes card-skel-shimmer {
  from { background-position: 200% 0; }
  to { background-position: -200% 0; }
}

@media (prefers-reduced-motion: reduce) {
  .card-skel::after { animation: none; }
}
/* ===== W15: «Контакты для входа» — карточки контактов + двухшаговое подтверждение =====
   Вид согласован с адресами ЛК (.account-address): те же рамки, радиусы и бейджи;
   is-primary подсвечен как адрес «по умолчанию». */
.wl-contacts { display: flex; flex-direction: column; gap: 10px; margin-top: 4px; }
.wl-contact {
  display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap;
  border: 1px solid var(--line-soft); border-radius: var(--radius-lg);
  padding: 12px 16px; background: rgb(255 255 255 / 1.5%);
}
.wl-contact.is-primary { border-color: rgb(169 35 48 / 50%); box-shadow: inset 0 0 0 1px rgb(169 35 48 / 18%); }
.wl-contact__body { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; min-width: 0; }
.wl-contact__kind { font-size: 12px; color: var(--muted); min-width: 62px; }
.wl-contact__value { font-size: 15px; word-break: break-all; }
.wl-contact__badges { display: inline-flex; gap: 6px; }
.wl-badge { font-size: 11px; font-weight: 700; color: #fff; padding: 2px 9px; border-radius: 999px; white-space: nowrap; }
.wl-badge--primary { background: var(--blood); }
.wl-badge--ok { background: #1f6f43; }
.wl-badge--warn { background: #8a6d1f; }
.wl-contact__actions { display: flex; gap: 8px; flex-wrap: wrap; }
.wl-contacts-empty { font-size: 14px; color: var(--muted); padding: 4px 0; }
.wl-contact-flow { margin-top: 14px; border-top: 1px solid var(--line-soft); padding-top: 14px; }

.wl-contact-add label,
.wl-contact-confirm label { display: flex; flex-direction: column; gap: 6px; font-size: 13px; color: var(--ink-mute); }
.wl-contact-add input,
.wl-contact-confirm input {
  height: 44px; padding: 0 13px; border-radius: var(--radius);
  background: #101013; border: 1px solid var(--line); color: var(--ink); font-size: 15px;
}
.wl-contact-add input:focus,
.wl-contact-confirm input:focus { outline: none; border-color: var(--copper-deep); }
.wl-contact-confirm input { max-width: 220px; letter-spacing: 4px; font-variant-numeric: tabular-nums; }
.wl-contact-sent { margin: 0 0 10px; font-size: 14px; color: var(--ink-soft); }
.wl-contact-note { margin: 0 0 10px; font-size: 13px; color: var(--muted); }
.wl-contact-confirm__actions { flex-wrap: wrap; }

@media (width <= 640px) {
  .wl-contact { flex-direction: column; align-items: flex-start; }
  .wl-contact__kind { min-width: 0; }
}
/* ==========================================================================
   WATCHLAB — зум изображений (движок apps/storefront/src/zoom.ts, wl-105)
   Клип-рамка для превью-диалога + курсоры/скрытие native-drag. will-change
   движок ставит транзиентно (только пока зумлено) — постоянного слоя нет,
   поэтому mix-blend в покое не ломается.
   ========================================================================== */

/* превью-диалог: рамка — это ячейка row-1 грида .dialog-media; обрезает
   зумленное/панорамированное фото по своей области, центрирует картинку */
.dialog-media__frame {
  position: relative;
  min-height: 0;
  overflow: hidden;
  display: grid;
  place-items: center;
}

.dialog-media__frame #dialogMainImage {
  cursor: zoom-in;
  touch-action: none;
  transform-origin: center center;
  user-select: none;
  -webkit-user-drag: none;
}

.dialog-media__frame.is-zoomed #dialogMainImage {
  cursor: grab;
  /* пока зумлено — трансформ создаёт stacking context, multiply не композится
     против тёмного градиента медиа → показываем часы «как есть», без multiply */
  mix-blend-mode: normal;
}

.dialog-media__frame.is-zoomed:active #dialogMainImage {
  cursor: grabbing;
}

@media (prefers-reduced-motion: reduce) {
  #dialogMainImage,
  .wl-lb-img {
    transition: none !important;
  }
}
