:root {
  --bg: #fffaf8;
  --surface: #ffffff;
  --surface-soft: #fff5f3;
  --text: #211d1d;
  --muted: #746b69;
  --line: #eadfdc;
  --accent: #cf4f62;
  --accent-dark: #a93649;
  --green: #2f6c45;
  --shadow: 0 18px 60px rgba(84, 41, 45, 0.08);
  --radius-xl: 34px;
  --radius-lg: 24px;
  --radius-md: 18px;
  --shell: 1180px;
}

* {
  box-sizing: border-box;
}

html {
  scroll-behavior: smooth;
}

body {
  margin: 0;
  font-family: "Manrope", sans-serif;
  color: var(--text);
  background:
    radial-gradient(circle at 0% 0%, rgba(244, 189, 197, 0.22), transparent 28rem),
    var(--bg);
}

button,
input {
  font: inherit;
}

button,
a {
  -webkit-tap-highlight-color: transparent;
  touch-action: manipulation;
}

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

button {
  color: inherit;
}

.shell {
  width: min(calc(100% - 32px), var(--shell));
  margin-inline: auto;
}

.site-header {
  position: sticky;
  top: 0;
  z-index: 30;
  border-bottom: 1px solid rgba(234, 223, 220, 0.8);
  background: rgba(255, 250, 248, 0.88);
  backdrop-filter: blur(18px);
}

.header-row {
  min-height: 76px;
  display: flex;
  align-items: center;
  gap: 28px;
}

.brand {
  display: inline-flex;
  align-items: center;
  gap: 12px;
  margin-right: auto;
}

.brand img {
  width: 44px;
  height: 44px;
  object-fit: cover;
  border-radius: 50%;
}

.brand-name {
  font-family: "Playfair Display", serif;
  font-size: 24px;
  font-weight: 700;
}

.nav {
  display: flex;
  gap: 26px;
  font-size: 14px;
  font-weight: 600;
}

.nav a,
.telegram-link {
  transition: 180ms ease;
}

.nav a:hover,
.telegram-link:hover {
  color: var(--accent);
}

.telegram-link {
  padding: 12px 18px;
  border: 1px solid var(--line);
  border-radius: 999px;
  font-size: 14px;
  font-weight: 700;
  background: var(--surface);
}

.trust-strip {
  padding: 18px 0 8px;
}

.trust-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 14px;
}

.trust-item {
  min-height: 108px;
  display: flex;
  align-items: flex-start;
  gap: 14px;
  padding: 20px;
  border: 1px solid var(--line);
  border-radius: var(--radius-lg);
  background: rgba(255, 255, 255, 0.72);
}

.trust-icon {
  flex: 0 0 auto;
  font-size: 26px;
}

.trust-item strong {
  display: block;
  margin-bottom: 5px;
  font-size: 15px;
}

.trust-item p {
  margin: 0;
  color: var(--muted);
  font-size: 13px;
  line-height: 1.45;
}

.hero {
  position: relative;
  padding-top: 18px;
}

.hero-main {
  display: grid;
  grid-template-columns: minmax(0, 1.15fr) minmax(380px, 0.85fr);
  min-height: 590px;
  overflow: hidden;
  border: 1px solid var(--line);
  border-radius: var(--radius-xl);
  background: var(--surface);
  box-shadow: var(--shadow);
}

.placeholder-photo {
  position: relative;
  display: grid;
  place-items: center;
  overflow: hidden;
  color: #9f8587;
  text-align: center;
  background:
    radial-gradient(circle at 36% 34%, rgba(241, 165, 176, 0.38), transparent 11rem),
    radial-gradient(circle at 67% 62%, rgba(207, 79, 98, 0.12), transparent 14rem),
    linear-gradient(145deg, #fff9f8, #f8ece9);
}

.placeholder-photo::before,
.placeholder-photo::after {
  content: "";
  position: absolute;
  width: 160px;
  height: 160px;
  border: 1px solid rgba(207, 79, 98, 0.18);
  border-radius: 52% 48% 56% 44%;
}

.placeholder-photo::before {
  transform: rotate(22deg);
}

.placeholder-photo::after {
  width: 120px;
  height: 120px;
  transform: rotate(-19deg);
}

.placeholder-photo span {
  position: relative;
  z-index: 2;
  max-width: 240px;
  padding: 14px;
  border-radius: 14px;
  background: rgba(255, 255, 255, 0.78);
  font-size: 13px;
  font-weight: 700;
}

.hero-photo {
  min-height: 590px;
}

.hero-copy {
  display: flex;
  flex-direction: column;
  justify-content: center;
  padding: clamp(32px, 5vw, 64px);
}

.eyebrow {
  display: block;
  margin-bottom: 12px;
  color: var(--accent);
  font-size: 12px;
  font-weight: 800;
  letter-spacing: 0.12em;
}

.hero h1 {
  max-width: 8ch;
  margin: 0;
  font-family: "Playfair Display", serif;
  font-size: clamp(48px, 6.7vw, 88px);
  line-height: 0.95;
  letter-spacing: -0.045em;
}

.stem-length {
  margin: 16px 0 0;
  font-size: 18px;
  font-weight: 700;
}

.price-row {
  display: flex;
  align-items: baseline;
  gap: 16px;
  margin-top: 30px;
}

.old-price {
  color: var(--muted);
  font-size: 18px;
  text-decoration: line-through;
}

.main-price {
  color: var(--accent);
  font-size: 38px;
  line-height: 1;
}

.benefit {
  align-self: flex-start;
  margin: 12px 0 0;
  padding: 8px 12px;
  color: var(--accent-dark);
  border-radius: 999px;
  background: #fff0f2;
  font-size: 12px;
  font-weight: 800;
}

.included-list {
  display: grid;
  gap: 8px;
  margin: 28px 0 0;
  padding: 0;
  list-style: none;
  color: #494140;
  font-size: 13px;
}

.included-list li::before {
  content: "✓";
  margin-right: 9px;
  color: var(--green);
  font-weight: 900;
}

.quick-color {
  margin-top: 26px;
}

.quick-color > p {
  margin: 0 0 10px;
  color: var(--muted);
  font-size: 12px;
  font-weight: 700;
}

.color-chip {
  display: inline-grid;
  grid-template-columns: auto auto;
  align-items: center;
  gap: 0 8px;
  margin: 0 8px 8px 0;
  padding: 10px 12px;
  border: 1px solid var(--line);
  border-radius: 14px;
  background: var(--surface);
  cursor: pointer;
}

.color-chip small {
  grid-column: 2;
  color: var(--muted);
  font-size: 10px;
}

.color-chip.is-active {
  border-color: rgba(207, 79, 98, 0.8);
  box-shadow: 0 0 0 3px rgba(207, 79, 98, 0.08);
}

.color-dot {
  grid-row: 1 / 3;
  width: 24px;
  height: 24px;
  border: 2px solid #fff;
  border-radius: 50%;
  box-shadow: 0 0 0 1px #ded1ce;
}

.color-red {
  background: #c41f35;
}

.color-pink {
  background: #f39baa;
}

.color-white {
  background: #f4f0e9;
}

.primary-cta,
.secondary-cta {
  width: 100%;
  min-height: 54px;
  display: inline-flex;
  justify-content: center;
  align-items: center;
  padding: 0 20px;
  border-radius: 16px;
  cursor: pointer;
  font-weight: 800;
  transition: 180ms ease;
}

.primary-cta {
  margin-top: 20px;
  color: #fff;
  border: 0;
  background: var(--accent);
}

.primary-cta:hover {
  background: var(--accent-dark);
  transform: translateY(-1px);
}

.secondary-cta {
  margin-top: 10px;
  color: var(--accent-dark);
  border: 1px solid rgba(207, 79, 98, 0.45);
  background: transparent;
}

.secondary-cta:hover {
  border-color: var(--accent);
  background: #fff7f8;
}

.configurator {
  position: fixed;
  top: 92px;
  right: max(16px, calc((100vw - var(--shell)) / 2));
  z-index: 40;
  width: min(460px, calc(100vw - 32px));
  max-height: calc(100vh - 112px);
  overflow: auto;
  padding: 22px;
  border: 1px solid var(--line);
  border-radius: 26px;
  background: rgba(255, 255, 255, 0.97);
  box-shadow: 0 28px 90px rgba(55, 25, 30, 0.18);
  transform: translateX(calc(100% + 40px));
  opacity: 0;
  pointer-events: none;
  transition: 260ms ease;
}

.configurator.is-open {
  transform: translateX(0);
  opacity: 1;
  pointer-events: auto;
}

.configurator-head {
  display: flex;
  justify-content: space-between;
  gap: 18px;
  align-items: flex-start;
}

.configurator-head span,
.configurator-head strong {
  display: block;
}

.configurator-head span {
  margin-bottom: 4px;
  color: var(--muted);
  font-size: 12px;
}

.configurator-head strong {
  font-size: 18px;
}

.icon-button {
  width: 40px;
  height: 40px;
  border: 1px solid var(--line);
  border-radius: 50%;
  background: #fff;
  cursor: pointer;
  font-size: 24px;
  line-height: 1;
}

.config-section {
  margin-top: 24px;
  padding-top: 22px;
  border-top: 1px solid var(--line);
}

.section-title {
  display: flex;
  justify-content: space-between;
  gap: 16px;
  margin-bottom: 14px;
}

.section-title span {
  font-size: 14px;
  font-weight: 800;
}

.section-title small {
  color: var(--muted);
}

.preset-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 8px;
}

.preset {
  min-height: 58px;
  display: grid;
  place-items: center;
  align-content: center;
  gap: 3px;
  border: 1px solid var(--line);
  border-radius: 12px;
  background: #fff;
  cursor: pointer;
  font-weight: 800;
}

.preset strong {
  font-size: 15px;
}

.preset small {
  color: var(--muted);
  font-size: 10px;
  font-weight: 600;
}

.preset.is-active small {
  color: rgba(255, 255, 255, 0.78);
}

.preset.is-active {
  color: #fff;
  border-color: var(--accent);
  background: var(--accent);
}

.count-adjuster {
  display: grid;
  grid-template-columns: 50px 1fr 50px;
  align-items: center;
  margin-top: 14px;
  overflow: hidden;
  border: 1px solid var(--line);
  border-radius: 14px;
}

.count-adjuster button {
  height: 50px;
  border: 0;
  background: #fff;
  cursor: pointer;
  font-size: 22px;
}

.count-input-wrap {
  min-width: 0;
  display: flex;
  justify-content: center;
  align-items: baseline;
  gap: 5px;
  padding-inline: 8px;
  text-align: center;
}

.count-input-wrap input {
  width: 92px;
  padding: 0;
  color: var(--text);
  border: 0;
  outline: 0;
  background: transparent;
  text-align: right;
  font-size: 17px;
  font-weight: 800;
  appearance: textfield;
}

.count-input-wrap input::-webkit-inner-spin-button,
.count-input-wrap input::-webkit-outer-spin-button {
  margin: 0;
  appearance: none;
}

.count-input-wrap span {
  color: var(--muted);
  font-size: 12px;
}

.price-explain {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-top: 10px;
  padding: 10px 12px;
  border-radius: 12px;
  background: #f7fbf8;
  color: var(--green);
  font-size: 12px;
}

.price-explain strong {
  font-size: 13px;
}

.saving-hint {
  margin: 10px 0 0;
  color: var(--green);
  font-size: 12px;
  font-weight: 700;
}

.config-details {
  border-top: 1px solid var(--line);
}

.config-details summary {
  display: flex;
  justify-content: space-between;
  gap: 16px;
  padding: 18px 0;
  cursor: pointer;
  list-style: none;
  font-size: 14px;
  font-weight: 800;
}

.config-details summary::-webkit-details-marker {
  display: none;
}

.config-details summary small {
  color: var(--muted);
  font-weight: 500;
}

.radio-line,
.check-line {
  display: grid;
  grid-template-columns: auto 1fr auto;
  gap: 10px;
  align-items: center;
  padding: 10px 0;
  font-size: 13px;
}

.radio-line small,
.check-line small {
  color: var(--muted);
}

.config-bottom {
  position: sticky;
  bottom: -22px;
  margin: 20px -22px -22px;
  padding: 18px 22px 22px;
  border-top: 1px solid var(--line);
  background: rgba(255, 255, 255, 0.98);
}

.config-total {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
}

.config-total span {
  color: var(--muted);
  font-size: 13px;
}

.config-total strong {
  color: var(--accent);
  font-size: 26px;
}

.telegram-secondary {
  box-sizing: border-box;
}

.secondary-hits {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 14px;
  margin-top: 14px;
}

.mini-hit {
  min-height: 250px;
  display: grid;
  grid-template-columns: 0.9fr 1.1fr;
  overflow: hidden;
  border: 1px solid var(--line);
  border-radius: var(--radius-lg);
  background: var(--surface);
}

.mini-hit > div:last-child {
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: flex-start;
  padding: 24px;
}

.mini-kicker {
  margin: 0 0 7px;
  color: var(--muted);
  font-size: 11px;
}

.mini-hit h2 {
  margin: 0;
  font-family: "Playfair Display", serif;
  font-size: 27px;
  line-height: 1.04;
}

.mini-hit strong {
  margin-top: 16px;
  color: var(--accent);
  font-size: 20px;
}

.mini-hit button,
.product-card button {
  margin-top: 18px;
  padding: 10px 14px;
  color: var(--accent-dark);
  border: 1px solid rgba(207, 79, 98, 0.4);
  border-radius: 12px;
  background: transparent;
  cursor: pointer;
  font-weight: 800;
}

.how-order {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 1px;
  margin-top: 44px;
  overflow: hidden;
  border: 1px solid var(--line);
  border-radius: var(--radius-lg);
  background: var(--line);
}

.how-order > div {
  padding: 24px;
  background: var(--surface);
}

.how-order span,
.how-order strong {
  display: block;
}

.how-order span {
  margin-bottom: 6px;

  color: var(--text);

  font-size: 14px;
  font-weight: 800;
  line-height: 1.25;
}

.how-order strong {
  color: var(--muted);

  font-size: 12px;
  font-weight: 500;
  line-height: 1.4;
}

.catalog {
  padding-block: 72px;
}

.section-head {
  display: flex;
  justify-content: space-between;
  gap: 30px;
  align-items: flex-end;
}

.section-head h2 {
  margin: 0;
  font-family: "Playfair Display", serif;
  font-size: clamp(36px, 5vw, 64px);
  line-height: 1;
}

.catalog-tabs {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}

.catalog-tabs button {
  padding: 10px 14px;
  border: 1px solid var(--line);
  border-radius: 999px;
  background: transparent;
  cursor: pointer;
}

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

.product-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 12px;
  margin-top: 26px;
}

.product-card {
  padding: 10px 10px 14px;
  border: 1px solid var(--line);
  border-radius: 20px;
  background: #fff;
}

.product-photo {
  aspect-ratio: 1;
  border-radius: 14px;
}

.product-card h3 {
  margin: 16px 4px 0;
  font-size: 15px;
}

.product-card p {
  margin: 4px;
  color: var(--muted);
  font-size: 12px;
}

.product-card strong {
  display: block;
  margin: 16px 4px 0;
  color: var(--accent);
  font-size: 18px;
}

.product-card button {
  width: calc(100% - 8px);
  margin-inline: 4px;
}

.final-telegram {
  min-height: 240px;
  display: flex;
  justify-content: space-between;
  gap: 40px;
  align-items: center;
  margin-bottom: 64px;
  padding: 42px;
  border: 1px solid var(--line);
  border-radius: var(--radius-xl);
  background:
    radial-gradient(circle at 85% 25%, rgba(241, 165, 176, 0.28), transparent 17rem),
    #fff;
}

.final-telegram h2 {
  max-width: 680px;
  margin: 0;
  font-family: "Playfair Display", serif;
  font-size: clamp(32px, 4.7vw, 58px);
  line-height: 1;
}

.final-telegram p {
  max-width: 630px;
  margin: 16px 0 0;
  color: var(--muted);
}

.final-telegram > a {
  flex: 0 0 auto;
  padding: 17px 22px;
  color: #fff;
  border-radius: 15px;
  background: var(--accent);
  font-weight: 800;
}

.order-sheet {
  position: fixed;
  inset: 0;
  z-index: 60;
  pointer-events: none;
}

.order-sheet.is-open {
  pointer-events: auto;
}

.order-backdrop {
  position: absolute;
  inset: 0;
  background: rgba(31, 22, 23, 0.28);
  opacity: 0;
  transition: 220ms ease;
}

.order-sheet.is-open .order-backdrop {
  opacity: 1;
}

.order-panel {
  position: absolute;
  right: 0;
  top: 0;
  width: min(480px, 100%);
  height: 100%;
  padding: 28px;
  background: #fff;
  box-shadow: -30px 0 90px rgba(41, 25, 28, 0.16);
  transform: translateX(100%);
  transition: 260ms ease;
}

.order-sheet.is-open .order-panel {
  transform: translateX(0);
}

.order-summary {
  display: flex;
  justify-content: space-between;
  gap: 20px;
  margin: 34px 0 24px;
  padding: 18px;
  border-radius: 16px;
  background: var(--surface-soft);
}

.order-summary strong {
  color: var(--accent);
}

.field {
  display: block;
  margin-top: 16px;
}

.field span {
  display: block;
  margin-bottom: 8px;
  font-size: 12px;
  font-weight: 800;
}

.field input {
  width: 100%;
  height: 52px;
  padding: 0 14px;
  border: 1px solid var(--line);
  border-radius: 14px;
  outline: none;
}

.field input:focus {
  border-color: var(--accent);
  box-shadow: 0 0 0 3px rgba(207, 79, 98, 0.08);
}

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

@media (max-width: 980px) {
  .nav {
    display: none;
  }

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

  .hero-main {
    grid-template-columns: 1fr;
  }

  .hero-photo {
    min-height: 430px;
  }

  .hero-copy {
    padding: 32px;
  }

  .hero h1 {
    max-width: none;
  }
}

@media (max-width: 720px) {
  .shell {
    width: min(calc(100% - 22px), var(--shell));
  }

  .header-row {
    min-height: 66px;
    gap: 12px;
  }

  .brand-name {
    font-size: 19px;
  }

  .brand img {
    width: 38px;
    height: 38px;
  }

  .telegram-link {
    padding: 10px 13px;
    font-size: 12px;
  }

  .trust-grid {
    display: flex;
    overflow-x: auto;
    scroll-snap-type: x mandatory;
    padding-bottom: 8px;
  }

  .trust-item {
    min-width: 84%;
    scroll-snap-align: start;
  }

  .hero {
    padding-top: 8px;
  }

  .hero-main {
    border-radius: 24px;
  }

  .hero-photo {
    min-height: 330px;
  }

  .hero-copy {
    padding: 26px 20px 22px;
  }

  .hero h1 {
    font-size: 49px;
  }

  .main-price {
    font-size: 32px;
  }

  .color-chip {
    width: calc(50% - 6px);
    margin-right: 4px;
  }

  .configurator {
    top: auto;
    right: 0;
    bottom: 0;
    width: 100%;
    max-height: 84vh;
    border-radius: 26px 26px 0 0;
    transform: translateY(100%);
  }

  .configurator.is-open {
    transform: translateY(0);
  }

  .secondary-hits {
    grid-template-columns: 1fr;
  }

  .mini-hit {
    min-height: 210px;
  }

  .how-order {
    grid-template-columns: 1fr;
  }

  .section-head {
    align-items: flex-start;
    flex-direction: column;
  }

  .catalog {
    padding-block: 52px;
  }

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

  .final-telegram {
    align-items: flex-start;
    flex-direction: column;
    padding: 28px 22px;
  }

  .final-telegram > a {
    width: 100%;
    text-align: center;
  }
}

@media (max-width: 470px) {
  .brand-name {
    display: none;
  }

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

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


.product-card.is-hidden {
  display: none;
}
/* =========================
   GROZFLOWERS PRODUCT GALLERY
   ========================= */

.product-gallery {
  display: flex;
  flex-direction: column;
  min-width: 0;
  padding: 18px;
  background: #fff8f8;
}

.gallery-main {
  flex: 1;
  min-height: 500px;
}

.gallery-image {
  width: 100%;
  height: 100%;
  min-height: 500px;
  border-radius: 24px;
  transition:
    opacity 220ms ease,
    transform 220ms ease;
}

.gallery-image.is-switching {
  opacity: 0;
  transform: scale(0.985);
}

.gallery-thumbs {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 9px;
  margin-top: 10px;
}

.gallery-thumb {
  padding: 0;
  overflow: hidden;
  border: 1px solid var(--line);
  border-radius: 14px;
  background: transparent;
  cursor: pointer;
  transition: 160ms ease;
}

.gallery-thumb > div {
  min-height: 84px;
}

.gallery-thumb .placeholder-photo span {
  padding: 7px 9px;
  font-size: 10px;
}

.gallery-thumb.is-active {
  border-color: var(--accent);
  box-shadow: 0 0 0 2px rgba(207, 79, 98, 0.08);
}


/* =========================
   COLOR SELECTOR
   ========================= */

.option-heading {
  display: flex;
  justify-content: space-between;
  gap: 20px;
  align-items: baseline;
  margin-bottom: 11px;
}

.option-heading p {
  margin: 0;
  color: var(--text);
  font-size: 13px;
  font-weight: 800;
}

.option-heading span {
  color: var(--muted);
  font-size: 11px;
}

.color-options {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}

.color-chip {
  width: auto;
  min-width: 132px;
  display: flex;
  grid-template-columns: none;
  gap: 10px;
  align-items: center;
  margin: 0;
  padding: 11px 13px;
}

.color-chip-copy {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
}

.color-chip-copy strong {
  font-size: 12px;
}

.color-chip-copy small {
  color: var(--muted);
  font-size: 10px;
}

.color-dot {
  flex: 0 0 auto;
}

.color-raspberry {
  background: #c02758;
}

.color-jumilia {
  background:
    linear-gradient(
      135deg,
      #fff2ee 0 48%,
      #dc557d 49% 70%,
      #f7a5b9 71%
    );
}


/* =========================
   DEFAULT PACKAGE
   ========================= */

.default-package {
  display: flex;
  justify-content: space-between;
  gap: 24px;
  align-items: center;
  margin-top: 18px;
  padding: 15px 16px;
  border: 1px solid var(--line);
  border-radius: 16px;
  background: #fff;
}

.default-package-copy {
  display: flex;
  flex-direction: column;
}

.default-package-label {
  margin-bottom: 3px;
  color: var(--muted);
  font-size: 10px;
}

.default-package-copy strong {
  font-size: 13px;
}

.default-package-copy small {
  margin-top: 2px;
  color: var(--muted);
  font-size: 10px;
}

.package-change-button {
  flex: 0 0 auto;
  padding: 8px 0;
  color: var(--accent-dark);
  border: 0;
  background: transparent;
  cursor: pointer;
  font-size: 11px;
  font-weight: 800;
}

.package-picker {
  display: flex;
  flex-wrap: wrap;
  gap: 7px;
  margin-top: 8px;
  padding: 12px;
  border: 1px solid var(--line);
  border-radius: 16px;
  background: #fff;
}

.package-picker[hidden] {
  display: none;
}

.package-option {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  padding: 8px 10px;
  border: 1px solid var(--line);
  border-radius: 999px;
  background: #fff;
  cursor: pointer;
  font-size: 10px;
}

.package-option.is-active {
  border-color: var(--accent);
}

.package-swatch {
  width: 15px;
  height: 15px;
  border: 1px solid #d8cdca;
  border-radius: 50%;
}

.package-white {
  background: #fff;
}

.package-red {
  background: #b52234;
}

.package-black {
  background: #272727;
}

.package-kraft {
  background: #bb8d62;
}

.package-clear {
  background:
    linear-gradient(
      135deg,
      #fff 0 42%,
      #d7e1e4 43% 50%,
      #fff 51%
    );
}

.package-blue {
  background: #b8d7e7;
}

.package-pink {
  background: #efbac8;
}


/* mobile */

@media (max-width: 720px) {

  .product-gallery {
    padding: 10px;
  }

  .gallery-main {
    min-height: 390px;
  }

  .gallery-image {
    min-height: 390px;
  }

  .gallery-thumb > div {
    min-height: 68px;
  }

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

  .color-chip {
    width: 100%;
    min-width: 0;
  }

  .option-heading {
    align-items: flex-start;
    flex-direction: column;
    gap: 3px;
  }

}
/* =========================
   FINAL HERO / PYRAMID
   ========================= */

/* Более компактная верхняя полоса преимуществ */
.trust-strip {
  padding: 10px 0 6px;
}

.trust-item {
  min-height: 78px;
  padding: 13px 16px;
}

.trust-icon {
  font-size: 22px;
}

.trust-item strong {
  margin-bottom: 3px;
  font-size: 14px;
}

.trust-item p {
  font-size: 12px;
}


/* Пирамида */
.hero {
  padding-top: 10px;
}

.hero-main {
  width: min(92%, 1080px);
  min-height: 0;

  margin-inline: auto;

  grid-template-columns:
    minmax(0, 1.05fr)
    minmax(390px, 0.95fr);
}


/* Левая часть */
.product-gallery {
  padding: 12px;
}

.gallery-main,
.gallery-image {
  min-height: 350px;
}

.gallery-thumbs {
  gap: 8px;
  margin-top: 8px;
}

.gallery-thumb > div {
  min-height: 58px;
}


/* Правая часть */
.hero-copy {
  min-width: 0;

  justify-content: flex-start;

  padding:
    22px
    clamp(24px, 2.6vw, 34px)
    24px;
}

.hero-copy .eyebrow {
  margin-bottom: 6px;
}


/* Главное изменение:
   заголовок теперь стараемся держать в одну строку */
.hero h1 {
  max-width: none;

  font-size:
    clamp(40px, 3.5vw, 50px);

  line-height: 0.98;
  letter-spacing: -0.04em;
}

.stem-length {
  margin-top: 8px;
  font-size: 15px;
}


/* Цена */
.hero-copy .price-row {
  gap: 12px;
  margin-top: 14px;
}

.hero-copy .old-price {
  font-size: 15px;
}

.hero-copy .main-price {
  font-size: 32px;
}

.hero-copy .benefit {
  margin-top: 7px;
  padding: 6px 10px;
}


/* Бесплатные дополнения делаем компактными */
.hero-copy .included-list {
  display: grid;

  grid-template-columns:
    repeat(3, minmax(0, 1fr));

  gap: 6px 10px;

  margin-top: 12px;

  font-size: 10px;
  line-height: 1.3;
}


/* Цвета */
.hero-copy .quick-color {
  margin-top: 14px;
}

.option-heading {
  margin-bottom: 6px;
}

.color-options {
  display: grid;

  grid-template-columns:
    repeat(3, minmax(0, 1fr));

  gap: 6px;
}

.color-chip {
  width: 100%;
  min-width: 0;

  gap: 7px;

  margin: 0;

  padding: 7px 8px;
}

.color-dot {
  width: 20px;
  height: 20px;
}

.color-chip-copy strong {
  font-size: 10px;
}

.color-chip-copy small {
  font-size: 8px;
}


/* Упаковка */
.default-package {
  width: 100%;

  margin-top: 12px;

  padding: 10px 12px;
}

.default-package-copy strong {
  font-size: 12px;
}

.default-package-copy small {
  font-size: 9px;
}

.package-picker {
  width: 100%;

  margin-top: 8px;
  margin-bottom: 2px;

  padding: 9px;
}


/* Кнопки */
.hero-copy > .primary-cta {
  min-height: 46px;

  flex: 0 0 auto;

  margin-top: 10px;
}

.hero-copy > .secondary-cta {
  min-height: 44px;

  flex: 0 0 auto;

  margin-top: 8px;
  margin-bottom: 0;
}


/* Нижняя часть пирамиды */
.secondary-hits {
  width: 100%;

  grid-template-columns:
    repeat(2, minmax(0, 1fr));

  gap: 16px;

  margin-top: 12px;
}

.mini-hit {
  min-height: 185px;

  grid-template-columns:
    minmax(145px, 0.8fr)
    minmax(0, 1.2fr);
}

.mini-hit > div:last-child {
  padding: 16px 20px;
}

.mini-kicker {
  margin-bottom: 5px;
}

.mini-hit h2 {
  font-size: 22px;
}

.mini-hit strong {
  margin-top: 9px;
  font-size: 18px;
}

.mini-hit button {
  margin-top: 10px;
  padding: 9px 13px;
}


/* ====================================
   НИЗКИЕ ЭКРАНЫ / НОУТБУКИ
   ==================================== */

@media (min-width: 981px) and (max-height: 850px) {

  .trust-strip {
    padding-top: 7px;
  }

  .trust-item {
    min-height: 60px;
    padding: 10px 14px;
  }

  .trust-item p {
    display: none;
  }

  .hero {
    padding-top: 7px;
  }

  .gallery-main,
  .gallery-image {
    min-height: 300px;
  }

  .gallery-thumb > div {
    min-height: 50px;
  }

  .hero-copy {
    padding:
      16px
      26px
      18px;
  }

  .hero h1 {
    font-size: 40px;
  }

  .hero-copy .included-list {
    display: none;
  }

  .hero-copy .quick-color {
    margin-top: 10px;
  }

  .default-package {
    margin-top: 9px;
  }

  .secondary-hits {
    margin-top: 10px;
  }

  .mini-hit {
    min-height: 160px;
  }

  .mini-hit h2 {
    font-size: 20px;
  }

}


/* ====================================
   TABLET
   ==================================== */

@media (max-width: 980px) {

  .hero-main {
    width: 100%;
    grid-template-columns: 1fr;
  }

  .gallery-main,
  .gallery-image {
    min-height: 420px;
  }

  .hero-copy {
    padding: 32px;
  }

  .hero h1 {
    max-width: none;
  }

  .hero-copy .included-list {
    grid-template-columns: 1fr;
  }

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

}


/* ====================================
   MOBILE
   ==================================== */

@media (max-width: 720px) {

  .hero-main {
    width: 100%;
  }

  .product-gallery {
    padding: 10px;
  }

  .gallery-main,
  .gallery-image {
    min-height: 360px;
  }

  .gallery-thumb > div {
    min-height: 66px;
  }

  .hero-copy {
    padding:
      26px
      20px
      30px;
  }

  .hero h1 {
    font-size: 46px;
  }

  .hero-copy .included-list {
    display: grid;
  }

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

  .secondary-hits {
    grid-template-columns: 1fr;

    gap: 12px;

    margin-top: 12px;
  }

  .mini-hit {
    min-height: 200px;
  }

}
/* =========================================
   PRODUCT MODAL
   ========================================= */

body.modal-open {
  overflow: hidden;
}

.product-modal {
  position: fixed;
  inset: 0;
  z-index: 55;

  pointer-events: none;
}

.product-modal.is-open {
  pointer-events: auto;
}

.product-modal-backdrop {
  position: absolute;
  inset: 0;

  background: rgba(31, 22, 23, 0.38);
  backdrop-filter: blur(5px);

  opacity: 0;

  transition: opacity 220ms ease;
}

.product-modal.is-open .product-modal-backdrop {
  opacity: 1;
}

.product-modal-panel {
  position: absolute;

  top: 50%;
  left: 50%;

  width: min(1080px, calc(100% - 32px));
  max-height: calc(100vh - 32px);

  overflow: auto;

  border: 1px solid var(--line);
  border-radius: 30px;

  background: #fff;

  box-shadow:
    0 35px 120px
    rgba(45, 22, 26, 0.22);

  opacity: 0;

  transform:
    translate(-50%, -47%)
    scale(0.985);

  transition:
    opacity 220ms ease,
    transform 260ms ease;
}

.product-modal.is-open
.product-modal-panel {
  opacity: 1;

  transform:
    translate(-50%, -50%)
    scale(1);
}

.product-modal-close {
  position: absolute;

  top: 18px;
  right: 18px;

  z-index: 3;
}

.product-modal-layout {
  display: grid;

  grid-template-columns:
    minmax(0, 1.05fr)
    minmax(360px, 0.95fr);
}

.product-modal-gallery {
  min-width: 0;

  padding: 18px;

  background: #fff8f8;
}

.product-modal-main-image {
  min-height: 560px;

  border-radius: 22px;
}

.product-modal-view-switcher {
  display: grid;

  grid-template-columns:
    repeat(3, 1fr);

  gap: 8px;

  margin-top: 10px;
}

.modal-view-button {
  min-height: 46px;

  border: 1px solid var(--line);
  border-radius: 13px;

  background: #fff;

  cursor: pointer;

  font-size: 11px;
  font-weight: 700;
}

.modal-view-button.is-active {
  color: var(--accent-dark);

  border-color: var(--accent);

  background: #fff7f8;
}

.product-modal-content {
  min-width: 0;

  padding:
    48px
    40px
    38px;
}

.product-modal-content h2 {
  margin: 0;

  font-family:
    "Playfair Display",
    serif;

  font-size:
    clamp(38px, 4vw, 58px);

  line-height: 0.98;

  letter-spacing: -0.035em;
}

.product-modal-subtitle {
  margin: 10px 0 0;

  color: var(--muted);

  font-size: 14px;
}

.product-modal-price {
  display: block;

  margin-top: 22px;

  color: var(--accent);

  font-size: 34px;
}

.product-modal-section {
  margin-top: 24px;
}

.product-modal-package-summary {
  display: flex;

  justify-content: space-between;
  align-items: center;

  gap: 20px;

  padding: 14px 16px;

  border: 1px solid var(--line);
  border-radius: 16px;
}

.product-modal-package-summary div {
  display: flex;
  flex-direction: column;
}

.product-modal-package-summary small {
  color: var(--muted);

  font-size: 10px;
}

.product-modal-package-summary strong {
  margin-top: 3px;

  font-size: 13px;
}

.product-modal-package-summary button {
  padding: 7px 0;

  color: var(--accent-dark);

  border: 0;

  background: transparent;

  cursor: pointer;

  font-size: 11px;
  font-weight: 800;
}

.product-modal-package-picker {
  display: flex;

  flex-wrap: wrap;

  gap: 7px;

  margin-top: 8px;

  padding: 10px;

  border: 1px solid var(--line);
  border-radius: 15px;
}

.product-modal-package-picker[hidden] {
  display: none;
}

.modal-package-option {
  display: inline-flex;

  align-items: center;

  gap: 7px;

  padding: 8px 10px;

  border: 1px solid var(--line);
  border-radius: 999px;

  background: #fff;

  cursor: pointer;

  font-size: 10px;
}

.modal-package-option.is-active {
  border-color: var(--accent);
}

.product-modal-content
> .primary-cta {
  margin-top: 26px;
}


@media (max-width: 850px) {

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

  .product-modal-main-image {
    min-height: 420px;
  }

  .product-modal-content {
    padding:
      30px
      24px
      30px;
  }

}


@media (max-width: 520px) {

  .product-modal-panel {
    width: 100%;
    max-height: 92vh;

    top: auto;
    bottom: 0;
    left: 0;

    border-radius:
      26px 26px 0 0;

    transform:
      translateY(100%);
  }

  .product-modal.is-open
  .product-modal-panel {
    transform:
      translateY(0);
  }

  .product-modal-gallery {
    padding: 10px;
  }

  .product-modal-main-image {
    min-height: 340px;
  }

  .product-modal-content h2 {
    font-size: 38px;
  }

}
/* =========================================
   DYNAMIC GALLERY IMAGES
   ========================================= */

.placeholder-photo.has-image::before,
.placeholder-photo.has-image::after {
  display: none;
}

.gallery-thumb
.placeholder-photo.has-image {
  background-repeat: no-repeat;
}

.gallery-thumb
.placeholder-photo.has-image span {
  padding: 6px 10px;

  background:
    rgba(255, 255, 255, 0.84);

  backdrop-filter: blur(5px);
}


/* Превью внутри product modal */

.modal-view-button.has-image {
  position: relative;

  overflow: hidden;

  color: #fff;

  background-repeat: no-repeat;

  text-shadow:
    0 1px 5px
    rgba(0, 0, 0, 0.55);

  border-color:
    rgba(207, 79, 98, 0.35);
}

.modal-view-button.has-image.is-active {
  border-color: var(--accent);

  box-shadow:
    inset 0 0 0 2px
    rgba(207, 79, 98, 0.2);
}
/* =========================================
   FINAL MOBILE PASS
   ========================================= */

@media (max-width: 720px) {

  html,
  body {
    overflow-x: hidden;
  }

  /* HEADER */

  .site-header {
    position: sticky;
    top: 0;
  }

  .header-row {
    min-height: 62px;
    gap: 10px;
  }

  .brand {
    gap: 8px;
  }

  .brand img {
    width: 36px;
    height: 36px;
  }

  .brand-name {
    font-size: 18px;
  }

  .telegram-link {
    padding: 9px 12px;
    font-size: 11px;
  }


  /* ПРЕИМУЩЕСТВА */

  .trust-strip {
    padding-top: 8px;
  }

  .trust-grid {
    display: flex;
    gap: 10px;

    overflow-x: auto;

    padding-bottom: 6px;

    scroll-snap-type: x mandatory;

    scrollbar-width: none;
  }

  .trust-grid::-webkit-scrollbar {
    display: none;
  }

  .trust-item {
    min-width: 84%;
    min-height: 76px;

    flex: 0 0 84%;

    padding: 13px 14px;

    scroll-snap-align: start;
  }

  .trust-item p {
    display: block;

    font-size: 11px;
  }


  /* HERO */

  .hero {
    padding-top: 6px;
  }

  .hero-main {
    width: 100%;

    grid-template-columns: 1fr;

    border-radius: 22px;
  }


  /* ГАЛЕРЕЯ */

  .product-gallery {
    padding: 9px;
  }

  .gallery-main,
  .gallery-image {
    min-height: 300px;
  }

  .gallery-image {
    border-radius: 18px;
  }

  .gallery-thumbs {
    gap: 6px;
    margin-top: 7px;
  }

  .gallery-thumb {
    border-radius: 11px;
  }

  .gallery-thumb > div {
    min-height: 58px;
  }


  /* ИНФОРМАЦИЯ О ТОВАРЕ */

  .hero-copy {
    padding:
      22px
      17px
      24px;
  }

  .hero-copy .eyebrow {
    margin-bottom: 7px;
  }

  .hero h1 {
    max-width: none;

    font-size: 41px;
    line-height: 0.98;
  }

  .stem-length {
    margin-top: 8px;

    font-size: 14px;
  }

  .hero-copy .price-row {
    margin-top: 15px;
  }

  .hero-copy .main-price {
    font-size: 30px;
  }

  .hero-copy .old-price {
    font-size: 14px;
  }

  .hero-copy .benefit {
    margin-top: 8px;
  }


  /* БЕСПЛАТНЫЕ ДОПОЛНЕНИЯ */

  .hero-copy .included-list {
    display: grid;

    grid-template-columns: 1fr;

    gap: 5px;

    margin-top: 14px;

    font-size: 11px;
  }


  /* ЦВЕТ */

  .hero-copy .quick-color {
    margin-top: 18px;
  }

  .option-heading {
    align-items: flex-start;
    flex-direction: column;

    gap: 3px;

    margin-bottom: 8px;
  }

  .color-options {
    display: grid;

    grid-template-columns:
      repeat(2, minmax(0, 1fr));

    gap: 7px;
  }

  .color-chip {
    width: 100%;
    min-width: 0;

    padding: 9px 10px;
  }

  .color-chip-copy strong {
    font-size: 11px;
  }

  .color-chip-copy small {
    font-size: 9px;
  }


  /* УПАКОВКА */

  .default-package {
    margin-top: 16px;

    padding: 12px 13px;
  }

  .package-picker {
    gap: 6px;

    padding: 9px;
  }

  .package-option {
    padding: 7px 9px;
  }


  /* ГЛАВНЫЕ CTA */

  .hero-copy > .primary-cta {
    min-height: 50px;

    margin-top: 12px;
  }

  .hero-copy > .secondary-cta {
    min-height: 48px;

    margin-top: 8px;
  }

  /* ДВА ОСТАЛЬНЫХ ХИТА */

.secondary-hits {
  display: grid;

  grid-template-columns:
    repeat(2, minmax(0, 1fr));

  gap: 9px;

  margin-top: 10px;
}

.mini-hit {
  min-width: 0;
  min-height: 0;

  display: grid;

  grid-template-columns: 1fr;
  grid-template-rows: 125px auto;

  overflow: hidden;
}

.mini-photo {
  width: 100%;
  min-height: 125px;
}

.mini-hit > div:last-child {
  min-width: 0;

  justify-content: flex-start;

  padding: 12px;
}

.mini-kicker {
  margin-bottom: 5px;

  font-size: 9px;
}

.mini-hit h2 {
  width: 100%;

  font-size: 17px;
  line-height: 1.05;

  overflow-wrap: anywhere;
}

.mini-hit strong {
  margin-top: 8px;

  font-size: 16px;
}

.mini-hit button {
  width: 100%;

  margin-top: 10px;

  padding: 9px 8px;

  font-size: 13px;
}


  /* КАК ЗАКАЗАТЬ */

  .how-order {
    grid-template-columns: 1fr;

    margin-top: 28px;
  }

  .how-order > div {
    padding: 18px;
  }


  /* КАТАЛОГ */

  .catalog {
    padding-block: 42px;
  }

  .section-head {
    gap: 18px;

    align-items: flex-start;
    flex-direction: column;
  }

  .section-head h2 {
    font-size: 40px;
  }

  .catalog-tabs {
    width: 100%;

    overflow-x: auto;

    flex-wrap: nowrap;

    padding-bottom: 3px;
  }

  .catalog-tabs button {
    flex: 0 0 auto;
  }

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

    gap: 9px;
  }

  .product-card {
    min-width: 0;
  }


  /* БОКОВОЙ КОНФИГУРАТОР */

  .configurator {
    top: auto;
    right: 0;
    bottom: 0;

    width: 100%;
    max-height: 88vh;

    padding: 20px;

    border-radius:
      24px 24px 0 0;

    transform:
      translateY(100%);
  }

  .configurator.is-open {
    transform:
      translateY(0);
  }

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


  /* PRODUCT MODAL */

  .product-modal-panel {
    top: auto;
    bottom: 0;
    left: 0;

    width: 100%;
    max-height: 92vh;

    border-radius:
      24px 24px 0 0;

    transform:
      translateY(100%);
  }

  .product-modal.is-open
  .product-modal-panel {
    transform:
      translateY(0);
  }

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

  .product-modal-gallery {
    padding: 9px;
  }

  .product-modal-main-image {
    min-height: 300px;

    border-radius: 18px;
  }

  .product-modal-content {
    padding:
      24px
      18px
      26px;
  }

  .product-modal-content h2 {
    padding-right: 30px;

    font-size: 37px;
  }

  .product-modal-price {
    margin-top: 15px;

    font-size: 29px;
  }

  .product-modal-section {
    margin-top: 20px;
  }

  .product-modal-close {
    top: 12px;
    right: 12px;
  }


  /* ОФОРМЛЕНИЕ */

  .order-panel {
    top: auto;
    bottom: 0;

    width: 100%;
    height: auto;
    max-height: 92vh;

    overflow-y: auto;

    padding: 22px 18px;

    border-radius:
      24px 24px 0 0;

    transform:
      translateY(100%);
  }

  .order-sheet.is-open
  .order-panel {
    transform:
      translateY(0);
  }

  .order-summary {
    margin-top: 26px;
  }

}


/* =========================================
   SMALL PHONES
   ========================================= */

@media (max-width: 470px) {

  .shell {
    width:
      calc(100% - 18px);
  }

  .brand-name {
    display: inline;

    font-size: 17px;
  }

  .gallery-main,
  .gallery-image {
    min-height: 275px;
  }

  .hero h1 {
    font-size: 37px;
  }

  .color-options {
    grid-template-columns: 1fr 1fr;
  }

  .mini-hit {
    grid-template-columns:
      115px minmax(0, 1fr);
  }

  .mini-hit h2 {
    font-size: 18px;
  }

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

  .product-modal-main-image {
    min-height: 270px;
  }

  .product-modal-content h2 {
    font-size: 34px;
  }

}
/* =========================================
   MOBILE HIT CARDS — FINAL
   ========================================= */

@media (max-width: 720px) {

  .secondary-hits {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 8px;
    margin-top: 10px;
  }

  .secondary-hits .mini-hit {
    min-width: 0;
    min-height: 0;

    display: flex;
    flex-direction: column;

    border-radius: 18px;
  }

  .secondary-hits .mini-photo {
    width: 100%;
    min-height: 0;

    aspect-ratio: 1.3 / 1;

    flex: 0 0 auto;
  }

  .secondary-hits .mini-hit > div:last-child {
    min-width: 0;

    display: flex;
    flex-direction: column;
    align-items: stretch;
    justify-content: flex-start;

    flex: 1;

    padding: 12px;
  }

  .secondary-hits .mini-kicker {
    margin: 0 0 5px;

    font-size: 9px;
    line-height: 1.25;
  }

  .secondary-hits .mini-hit h2 {
    width: 100%;

    margin: 0;

    font-size: 16px;
    line-height: 1.08;

    overflow-wrap: normal;
    word-break: normal;
    hyphens: none;
  }

  .secondary-hits .mini-hit strong {
    display: block;

    margin-top: 9px;

    font-size: 16px;
    line-height: 1.1;
  }

  .secondary-hits .mini-hit button {
    width: 100%;

    margin-top: 11px;

    padding: 9px 8px;

    font-size: 13px;
  }

}
/* =========================================
   FINAL MOBILE GRID POLISH
   ========================================= */

@media (max-width: 720px) {

  /* --- ХИТЫ: 2 карточки в ряд --- */
  .secondary-hits {
    display: grid !important;
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
    gap: 10px !important;
    margin-top: 10px !important;
    align-items: stretch;
  }

  .secondary-hits .mini-hit {
    min-width: 0;
    height: 100%;

    display: flex !important;
    flex-direction: column !important;

    overflow: hidden;
    border-radius: 18px;
  }

  .secondary-hits .mini-photo {
    width: 100%;
    aspect-ratio: 1.2 / 1;
    min-height: 0;
    flex: 0 0 auto;
  }

  .secondary-hits .mini-hit > div:last-child {
    flex: 1;

    display: flex !important;
    flex-direction: column !important;
    align-items: stretch !important;
    justify-content: flex-start !important;

    padding: 12px;
    min-width: 0;
  }

  .secondary-hits .mini-kicker {
    margin: 0 0 6px;
    min-height: 22px;

    font-size: 9px;
    line-height: 1.2;
  }

  .secondary-hits .mini-hit h2 {
    margin: 0;

    font-size: 16px;
    line-height: 1.08;

    word-break: normal;
    overflow-wrap: normal;
    hyphens: none;
  }

  .secondary-hits .mini-hit strong {
    margin-top: 8px;

    font-size: 16px;
    line-height: 1.1;
  }

  .secondary-hits .mini-hit button {
    width: 100%;
    margin-top: auto;

    padding: 9px 8px;
    font-size: 13px;
  }


  /* --- КАТАЛОГ: тоже 2 товара в ряд --- */
  .product-grid {
    display: grid !important;
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
    gap: 10px !important;
    align-items: stretch;
  }

  .product-card {
    min-width: 0;
    height: 100%;
  }

  .product-card .placeholder-photo,
.product-card .product-photo,
.product-card .catalog-photo,
.product-card .card-photo {
  aspect-ratio: 1 / 1;
  min-height: 0;
}

  .product-card h3 {
    min-height: 44px;
    line-height: 1.08;
  }

  .product-card .primary-cta,
  .product-card button {
    width: 100%;
  }

}


/* --- Совсем маленькие телефоны: всё равно оставляем 2 колонки --- */
@media (max-width: 470px) {

  .secondary-hits {
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
    gap: 8px !important;
  }

  .secondary-hits .mini-hit h2 {
  font-size: 15px;
}

  .secondary-hits .mini-hit strong {
    font-size: 15px;
  }

  .secondary-hits .mini-hit button {
    font-size: 12px;
    padding: 8px 6px;
  }

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

  .product-card h3 {
    min-height: 40px;
    font-size: 18px;
  }
}
/* =========================================
   MOBILE GUARANTEES — FINAL
   ========================================= */

@media (max-width: 720px) {

  .trust-strip {
    padding: 8px 0 6px;
  }

  .trust-grid {
    display: grid !important;
    grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
    gap: 6px !important;

    overflow: visible !important;
    padding-bottom: 0 !important;
  }

  .trust-item {
    min-width: 0 !important;
    width: 100% !important;
    min-height: 92px !important;

    display: flex !important;
    flex-direction: column;
    align-items: flex-start;

    gap: 7px;

    padding: 11px 10px !important;

    border-radius: 16px;
  }

  .trust-icon {
    font-size: 20px;
    line-height: 1;
  }

  .trust-item strong {
    margin: 0;

    font-size: 10px;
    line-height: 1.2;
  }

  .trust-item p {
    display: none !important;
  }

}
/* =========================================
   ORDER CHOICE / ZERO-LOSS CONVERSION
   ========================================= */

body.order-choice-open {
  overflow: hidden;
}


.order-choice {
  position: fixed;
  inset: 0;

  z-index: 70;

  pointer-events: none;
}


.order-choice.is-open {
  pointer-events: auto;
}


.order-choice-backdrop {
  position: absolute;
  inset: 0;

  background:
    rgba(31, 22, 23, 0.38);

  backdrop-filter:
    blur(6px);

  opacity: 0;

  transition:
    opacity 220ms ease;
}


.order-choice.is-open
.order-choice-backdrop {
  opacity: 1;
}


.order-choice-panel {
  position: absolute;

  top: 50%;
  left: 50%;

  width:
    min(460px, calc(100% - 30px));

  padding: 30px;

  border:
    1px solid var(--line);

  border-radius: 28px;

  background: #fff;

  box-shadow:
    0 32px 110px
    rgba(45, 22, 26, 0.22);

  opacity: 0;

  transform:
    translate(-50%, -47%)
    scale(0.98);

  transition:
    opacity 220ms ease,
    transform 260ms ease;
}


.order-choice.is-open
.order-choice-panel {
  opacity: 1;

  transform:
    translate(-50%, -50%)
    scale(1);
}


.order-choice-close {
  position: absolute;

  top: 16px;
  right: 16px;
}


.order-choice-panel h2 {
  margin: 0;

  padding-right: 42px;

  font-family:
    "Playfair Display",
    serif;

  font-size: 38px;
  line-height: 1;
}


.order-choice-description {
  margin:
    12px 0 0;

  color:
    var(--muted);

  font-size: 13px;
  line-height: 1.5;
}


.order-choice-product {
  display: flex;

  justify-content:
    space-between;

  gap: 20px;

  align-items: baseline;

  margin-top: 22px;

  padding: 14px 16px;

  border-radius: 15px;

  background:
    var(--surface-soft);
}


.order-choice-product span {
  font-size: 13px;
  font-weight: 700;
}


.order-choice-product strong {
  flex: 0 0 auto;

  color:
    var(--accent);

  font-size: 17px;
}


.order-choice-action {
  width: 100%;

  min-height: 68px;

  display: flex;

  flex-direction: column;
  align-items: flex-start;
  justify-content: center;

  gap: 3px;

  margin-top: 12px;

  padding:
    13px 16px;

  border-radius: 16px;

  cursor: pointer;

  text-align: left;

  transition:
    180ms ease;
}


.order-choice-action strong {
  font-size: 14px;
}


.order-choice-action span {
  font-size: 11px;

  opacity: 0.78;
}


.order-choice-primary {
  color: #fff;

  border: 0;

  background:
    var(--accent);
}


.order-choice-primary:hover {
  background:
    var(--accent-dark);

  transform:
    translateY(-1px);
}


.order-choice-config-wrap {
  margin-top: 10px;

  padding: 12px;

  border:
    1px solid
    rgba(207, 79, 98, 0.20);

  border-radius: 18px;

  background:
    #fff8f9;
}


.order-choice-gift {
  display: flex;

  flex-direction: column;

  gap: 2px;

  padding:
    2px 3px 8px;
}


.order-choice-gift strong {
  color:
    var(--accent-dark);

  font-size: 12px;
}


.order-choice-gift span {
  color:
    var(--muted);

  font-size: 10px;
}


.order-choice-secondary {
  margin-top: 0;

  color:
    var(--text);

  border:
    1px solid var(--line);

  background: #fff;
}


.order-choice-secondary:hover {
  border-color:
    var(--accent);

  background:
    #fffdfd;
}


/* Плашка внутри конфигуратора */

.configurator-gift {
  display: flex;

  flex-direction: column;

  gap: 3px;

  margin-top: 22px;

  padding:
    13px 15px;

  border-radius: 15px;

  background:
    #fff0f2;
}


.configurator-gift strong {
  color:
    var(--accent-dark);

  font-size: 12px;
}


.configurator-gift span {
  color:
    var(--muted);

  font-size: 10px;
}


@media (max-width: 520px) {

  .order-choice-panel {
    top: auto;
    bottom: 0;
    left: 0;

    width: 100%;

    padding:
      25px 18px 22px;

    border-radius:
      24px 24px 0 0;

    transform:
      translateY(100%);
  }


  .order-choice.is-open
  .order-choice-panel {
    transform:
      translateY(0);
  }


  .order-choice-panel h2 {
    font-size: 34px;
  }

}

/* =========================================
   FLOWER HELP POPUP
   ========================================= */

.flower-help {
  position: fixed;

  right: 24px;
  bottom: 24px;

  z-index: 80;

  width: min(370px, calc(100% - 32px));

  padding: 24px;

  border: 1px solid var(--line);
  border-radius: 24px;

  background: rgba(255, 255, 255, 0.97);

  box-shadow:
    0 24px 80px
    rgba(55, 25, 30, 0.18);

  backdrop-filter: blur(14px);

  opacity: 0;

  pointer-events: none;

  transform:
    translateY(24px)
    scale(0.98);

  transition:
    opacity 240ms ease,
    transform 280ms ease;
}


.flower-help.is-open {
  opacity: 1;

  pointer-events: auto;

  transform:
    translateY(0)
    scale(1);
}


.flower-help-close {
  position: absolute;

  top: 13px;
  right: 13px;

  width: 34px;
  height: 34px;

  display: grid;
  place-items: center;

  padding: 0;

  border: 1px solid var(--line);
  border-radius: 50%;

  background: #fff;

  cursor: pointer;

  font-size: 20px;
  line-height: 1;
}


.flower-help-label {
  display: block;

  margin-bottom: 8px;

  color: var(--accent);

  font-size: 10px;
  font-weight: 800;

  letter-spacing: 0.1em;
}


.flower-help-title {
  display: block;

  padding-right: 36px;

  font-family:
    "Playfair Display",
    serif;

  font-size: 27px;
  line-height: 1.05;
}


.flower-help p {
  margin: 12px 0 0;

  color: var(--muted);

  font-size: 12px;
  line-height: 1.5;
}


.flower-help-button {
  min-height: 48px;

  display: flex;

  justify-content: center;
  align-items: center;

  margin-top: 18px;

  padding: 0 18px;

  color: #fff;

  border-radius: 14px;

  background: var(--accent);

  font-size: 13px;
  font-weight: 800;

  transition: 180ms ease;
}


.flower-help-button:hover {
  background: var(--accent-dark);

  transform: translateY(-1px);
}


@media (max-width: 720px) {

  .flower-help {
    right: 10px;
    bottom: 10px;

    width: calc(100% - 20px);

    padding: 20px;

    border-radius: 21px;
  }


  .flower-help-title {
    font-size: 24px;
  }

}
.bouquet-main-image {
  width: 100%;
  height: 100%;
  display: block;
  object-fit: contain;
  object-position: center;
}
/* =========================================
   NEW FLOWER COLOR SWATCHES
   ========================================= */

.color-redwhite {
  background:
    linear-gradient(
      135deg,
      #c41f35 0 50%,
      #f4f0e9 50% 100%
    );
}

.color-mix {
  background:
    conic-gradient(
      #c41f35 0 25%,
      #f4f0e9 25% 50%,
      #f39baa 50% 75%,
      #d45c83 75% 100%
    );
}

.color-pinkwhite {
  background:
    linear-gradient(
      135deg,
      #f39baa 0 50%,
      #f4f0e9 50% 100%
    );
}

.color-bluewhite {
  background:
    linear-gradient(
      135deg,
      #a9cfe8 0 50%,
      #f4f0e9 50% 100%
    );
}
/* =========================================
   PEONY COLORS
   ========================================= */

.color-coral {
  background:
    #f27f79;
}
/* =========================================
   DYNAMIC GALLERY VIEW BUTTONS
   ========================================= */

/* Основная галерея товара */
.gallery-thumbs {
  display: flex;
  width: 100%;
}

.gallery-thumbs > .gallery-thumb {
  flex: 1 1 0;
  min-width: 0;
  width: auto;
}


/* Галерея внутри модального окна */
.product-modal-view-switcher {
  display: flex;
  width: 100%;
}

.product-modal-view-switcher > .modal-view-button {
  flex: 1 1 0;
  min-width: 0;
  width: auto;
}


/* Скрытый ракурс вообще не занимает места */
.gallery-thumb[hidden],
.modal-view-button[hidden] {
  display: none !important;
}

/* =========================================
   FIX MINI HIT SPACING
   ========================================= */

.secondary-hits .mini-hit {
  display: grid !important;
  grid-template-columns: minmax(145px, 0.8fr) minmax(0, 1.2fr) !important;
}

.secondary-hits .mini-photo {
  display: block !important;
  width: 100% !important;
  height: 100% !important;
  min-height: 185px !important;

  background-size: cover !important;
  background-position: center !important;
  background-repeat: no-repeat !important;
}

.secondary-hits .mini-hit > div:last-child {
  display: flex;
  flex-direction: column;
  justify-content: flex-start;
}

.secondary-hits .mini-hit h2 {
  margin-top: 8px;
  margin-bottom: 16px;
}

.secondary-hits .mini-hit strong {
  margin-top: auto;
  margin-bottom: 8px;
}

.secondary-hits .mini-hit button {
  margin-top: 0;
}
/* =========================================
   MINI HIT CONTENT SPACING — FINAL FIX
   ========================================= */

@media (max-width: 720px) {

  .secondary-hits .mini-kicker {
    min-height: 0 !important;
    margin: 0 0 8px !important;
  }

  .secondary-hits .mini-hit h2 {
    min-height: 0 !important;
    margin: 0 0 14px !important;
  }

  .secondary-hits .mini-hit strong {
  margin: auto 0 10px !important;
}

  .secondary-hits .mini-hit button {
    margin-top: 0 !important;
  }

  .secondary-hits .mini-hit > div:last-child {
    justify-content: flex-start !important;
  }

}
/* =========================================
   MOBILE TRUST STRIP TEXT
   ========================================= */

@media (max-width: 720px) {

  .trust-item p {
    display: block !important;

    margin: 5px 0 0;

    font-size: 10px;
    line-height: 1.25;

    color: rgba(30, 30, 30, 0.62);
  }

}
@media (max-width: 720px) {

  .trust-item {
    min-height: 108px;
    padding: 12px 10px;
    align-items: flex-start;
  }

  .trust-item strong {
    font-size: 11px;
    line-height: 1.15;
  }

}
@media (max-width: 390px) {

  .trust-item {
    min-height: 112px;
    padding: 10px 8px;
  }

  .trust-item strong {
    font-size: 10px;
  }

  .trust-item p {
    font-size: 9px;
    line-height: 1.2;
  }

}
/* =========================================
   TELEGRAM FLOATING BUTTON — FINAL
   ========================================= */

.header-telegram-order {
  position: fixed !important;

  top: 12px !important;
  right: 16px !important;

  z-index: 10000 !important;

  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;

  width: auto !important;
  min-width: 190px !important;
  height: 48px !important;

  padding: 0 20px !important;
  margin: 0 !important;

  border-radius: 999px !important;

  white-space: nowrap;

  font-size: 14px;
  font-weight: 700;
  line-height: 1;

  background: #fff;
  color: #181818;

  border: 1px solid rgba(210, 80, 100, 0.22);

  box-shadow: 0 5px 18px rgba(0, 0, 0, 0.08);

  text-decoration: none;
}
@media (max-width: 720px) {

  .header-telegram-order {
    top: 8px !important;
    right: 12px !important;

    min-width: 184px !important;
    height: 44px !important;

    padding: 0 16px !important;

    font-size: 13px !important;
  }

}

/* =========================================
   DELIVERY / PICKUP
   ========================================= */

.fulfillment-switch {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 8px;

  margin: 18px 0;
  padding: 4px;

  border: 1px solid rgba(190, 70, 90, 0.16);
  border-radius: 16px;

  background: #fff8f8;
}

.fulfillment-option {
  min-height: 46px;
  padding: 8px 12px;

  border: 0;
  border-radius: 12px;

  background: transparent;

  font: inherit;
  font-weight: 600;

  cursor: pointer;
}

.fulfillment-option.is-active {
  background: #fff;
  box-shadow: 0 2px 10px rgba(0, 0, 0, 0.07);
}

[data-address-field][hidden] {
  display: none !important;
}

/* =========================================
   BEST DEAL — 101 КРАСНАЯ + БЕЛАЯ ОБЁРТКА
   ========================================= */

.gallery-main {
  position: relative;
  overflow: hidden;
  border-radius: 24px;
}

.deal-ribbon,
.catalog-deal-ribbon {
  position: absolute;
  z-index: 25;

  width: 190px;

  padding: 9px 0;

  color: #fff;
  background: #2f6fb5;

  text-align: center;

  font-size: 13px;
  font-weight: 800;
  letter-spacing: 0.08em;

  box-shadow:
    0 5px 18px
    rgba(0, 0, 0, 0.16);

  pointer-events: none;
}

.deal-ribbon {
  top: 26px;
  left: -52px;

  transform: rotate(-45deg);
}

.product-card {
  position: relative;
}

.product-photo {
  position: relative;
  overflow: hidden;
}

.product-photo > img {
  width: 100%;
  height: 100%;

  display: block;

  object-fit: contain !important;
  object-position: center center !important;
}

.catalog-deal-ribbon {
  top: 20px;
  left: -58px;

  transform: rotate(-45deg);

  width: 180px;

  padding: 7px 0;

  font-size: 10px;
}


/* =========================================
   DELIVERY / PICKUP — FINAL
   ========================================= */

.pickup-note {
  margin: -8px 0 14px;

  padding: 10px 12px;

  border-radius: 12px;

  color: var(--muted);
  background: #fff8f8;

  font-size: 11px;
  line-height: 1.35;
}

.pickup-note[hidden] {
  display: none !important;
}

@media (max-width: 520px) {

  .fulfillment-switch {
    gap: 5px;

    margin: 16px 0;

    padding: 4px;
  }

  .fulfillment-option {
    min-height: 44px;

    padding: 7px 8px;

    font-size: 11px;
    line-height: 1.15;
  }

}


/* =========================================
   PERFORMANCE / MOBILE RESPONSIVENESS
   ========================================= */

.product-card {
  content-visibility: auto;
  contain-intrinsic-size: 360px;
}

.product-modal-panel,
.order-panel,
.order-choice-panel,
.configurator {
  will-change: transform;
}

@media (max-width: 720px) {

  .product-modal-backdrop,
  .order-choice-backdrop {
    backdrop-filter: none;
    -webkit-backdrop-filter: none;
  }

  .deal-ribbon {
    top: 23px;
    left: -58px;

    width: 185px;

    padding: 8px 0;

    font-size: 11px;
  }

  .catalog-deal-ribbon {
    top: 17px;
    left: -61px;

    width: 175px;

    font-size: 9px;
  }

}

@media (max-width: 768px) {
  .nav {
    display: none;
  }

  .header-row {
    align-items: center;
    justify-content: space-between;
    gap: 12px;
  }

  .telegram-link {
    position: sticky;
    top: 10px;
    z-index: 30;
    margin-left: auto;
    flex-shrink: 0;
  }
}
/* =========================================
   CATALOG IMAGES — FINAL FIX
   ========================================= */

.product-card .product-photo {
  width: 100% !important;

  aspect-ratio: 1 / 1 !important;

  padding: 0 !important;

  overflow: hidden;

  border-radius: 14px;
}

.product-card .product-photo > img {
  width: 100% !important;
  height: 100% !important;

  display: block;

  object-fit: contain !important;
  object-position: center center !important;
}
/* Верхняя навигация больше не нужна */
.site-header .nav {
  display: none !important;
}
/* =========================================
   CATALOG PHOTOS — ABSOLUTE FINAL
   ========================================= */

.product-card .product-photo {
  position: relative;

  width: 100% !important;
  aspect-ratio: 1 / 1 !important;

  display: flex;
  align-items: center;
  justify-content: center;

  padding: 0 !important;

  overflow: hidden;

  border-radius: 14px;
}

.product-card .product-photo > img {
  width: 100% !important;
  height: 100% !important;

  display: block !important;

  object-fit: contain !important;
  object-position: center center !important;

  transform: none !important;
}
/* =========================================
   DELIVERY TIME CHIPS
   ========================================= */

.time-choice-chips {
  display: flex;
  flex-wrap: wrap;
  gap: 7px;

  margin:
    0 0 10px;
}

.time-choice-chip {
  min-height: 38px;

  padding:
    8px 12px;

  border:
    1px solid var(--line);

  border-radius:
    999px;

  background: #fff;

  cursor: pointer;

  font-size: 11px;
  font-weight: 700;

  transition:
    160ms ease;
}

.time-choice-chip:hover {
  border-color:
    var(--accent);
}

.time-choice-chip.is-active {
  color:
    var(--accent-dark);

  border-color:
    var(--accent);

  background:
    #fff0f2;

  box-shadow:
    0 0 0 2px
    rgba(207, 79, 98, 0.06);
}


/* =========================================
   TELEGRAM CHECKOUT TRUST
   ========================================= */

.telegram-confirm-button {
  min-height: 58px;

  font-size: 15px;
}

.checkout-trust {
  display: grid;
  gap: 6px;

  margin-top: 12px;
}

.checkout-trust p {
  margin: 0;

  color:
    var(--muted);

  font-size: 11px;
  line-height: 1.4;
}


@media (max-width: 520px) {

  .time-choice-chips {
    display: grid;

    grid-template-columns:
      1fr 1fr;

    gap: 6px;
  }

  .time-choice-chip {
    width: 100%;

    min-height: 42px;

    padding:
      7px 8px;

    font-size: 10px;
    line-height: 1.15;
  }

  .telegram-confirm-button {
    min-height: 58px;

    padding-inline: 12px;

    font-size: 14px;
  }

  .checkout-trust p {
    font-size: 10px;
  }

}
/* =========================================
   ULTRA DEAL
   ========================================= */

.deal-ribbon {
  width: 230px !important;

  top: 30px !important;
  left: -66px !important;

  padding:
    9px 0 !important;

  font-size:
    12px !important;

  letter-spacing:
    0.06em !important;
}


@media (max-width: 720px) {

  .deal-ribbon {
    width: 220px !important;

    top: 26px !important;
    left: -68px !important;

    font-size:
      10px !important;
  }

}
/* =========================================
   TELEGRAM BUTTON BELOW MODALS
   ========================================= */

.header-telegram-order {
  z-index: 45 !important;
}
/* =========================================
   TELEGRAM MINI APP
   ========================================= */

html.telegram-mini-app {
  min-height:
    var(
      --tg-viewport-stable-height,
      100%
    );
}

html.telegram-mini-app body {
  min-height:
    var(
      --tg-viewport-stable-height,
      100vh
    );

  padding-top:
    var(
      --tg-content-safe-area-inset-top,
      0px
    );

  padding-right:
    var(
      --tg-content-safe-area-inset-right,
      0px
    );

  padding-bottom:
    var(
      --tg-content-safe-area-inset-bottom,
      0px
    );

  padding-left:
    var(
      --tg-content-safe-area-inset-left,
      0px
    );
}


/*
  Плавающая кнопка заказа
  учитывает интерфейс Telegram.
*/

html.telegram-mini-app
.header-telegram-order {
  top:
    max(
      8px,
      var(
        --tg-content-safe-area-inset-top,
        0px
      )
    ) !important;
}

/* =========================================
   SECONDARY PRODUCTS — HORIZONTAL CAROUSEL
   ========================================= */

.secondary-hits {
  display: flex !important;
  align-items: stretch;

  width: 100%;

  gap: 10px !important;

  margin-top: 12px;

  overflow-x: auto !important;
  overflow-y: hidden !important;

  scroll-snap-type: x mandatory;
  scroll-behavior: smooth;

  -webkit-overflow-scrolling: touch;

  overscroll-behavior-x: contain;

  padding: 0 0 10px;

  cursor: grab;

  scrollbar-width: thin;
  scrollbar-color:
    rgba(207, 79, 98, 0.45)
    transparent;
}


/* Полоса прокрутки на компьютере */

.secondary-hits::-webkit-scrollbar {
  height: 6px;
}

.secondary-hits::-webkit-scrollbar-track {
  background: transparent;
}

.secondary-hits::-webkit-scrollbar-thumb {
  background:
    rgba(207, 79, 98, 0.35);

  border-radius: 999px;
}


/* Сама карточка */

.secondary-hits .product-card {
  /*
    2 полных карточки
    + уже заметная часть третьей
  */
  flex:
    0 0
    calc((100% - 20px) / 2.52)
    !important;

  min-width: 0 !important;

  height: auto !important;

  display: flex !important;
  flex-direction: column !important;

  scroll-snap-align: start;

  content-visibility: visible !important;
}


/* Фото остаётся ровно таким же,
   как в карточке каталога */

.secondary-hits
.product-card
.product-photo {
  width: 100% !important;

  aspect-ratio: 1 / 1 !important;

  flex: 0 0 auto;
}


/* Кнопки стоят на одном уровне */

.secondary-hits
.product-card
button {
  width: 100%;

  margin-top: 8px !important;
}


/* Состояние перетаскивания мышкой */

.secondary-hits.is-dragging {
  cursor: grabbing;

  user-select: none;

  scroll-snap-type: none;
}


/* =========================================
   MOBILE
   ========================================= */

@media (max-width: 720px) {

  .secondary-hits {
    gap: 8px !important;

    /*
      На телефоне скроллбар не нужен —
      пользователь свайпает пальцем.
    */
    scrollbar-width: none;

    padding-bottom: 4px;
  }


  .secondary-hits::-webkit-scrollbar {
    display: none;
  }


.secondary-hits .product-card {
  /*
    На телефоне даём ещё больше намёка,
    что ленту можно свайпать вправо.
  */
  flex:
    0 0
    calc((100% - 16px) / 2.52)
    !important;
}

}

/* =========================================
   BASKET FORMAT SELECTOR
   ========================================= */

.basket-format-section {
  margin-top: 24px;
}

.basket-format-options {
  display: grid;
  grid-template-columns:
    repeat(2, minmax(0, 1fr));

  gap: 8px;
}

.basket-format-option {
  min-width: 0;
  min-height: 54px;

  display: flex;
  flex-direction: column;
  align-items: flex-start;
  justify-content: center;

  gap: 2px;

  padding: 10px 12px;

  border: 1px solid var(--line);
  border-radius: 14px;

  background: #fff;

  cursor: pointer;

  text-align: left;
}

.basket-format-option strong {
  font-size: 12px;
  line-height: 1.2;
}

.basket-format-option small {
  color: var(--muted);
  font-size: 10px;
}

.basket-format-option.is-active {
  border-color:
    rgba(207, 79, 98, 0.85);

  background:
    rgba(207, 79, 98, 0.06);

  box-shadow:
    0 0 0 2px
    rgba(207, 79, 98, 0.07);
}

.basket-format-option.is-active strong {
  color: var(--accent-dark);
}
.product-card {
  cursor: pointer;
}

.product-card:active {
  transform: scale(0.99);
}

.product-card {
  transition:
    transform 120ms ease,
    border-color 180ms ease,
    box-shadow 180ms ease;
}

@media (hover: hover) {
  .product-card:hover {
    border-color: rgba(207, 79, 98, 0.45);
    box-shadow: 0 10px 30px rgba(84, 41, 45, 0.07);
  }
}
/* =========================================
   PRODUCT CARDS — FINAL ALIGNMENT
   ========================================= */

.product-card {
  display: flex !important;
  flex-direction: column !important;
  height: 100% !important;
}


/* Названия занимают одинаковую зону */

.product-card h3 {
  min-height: 44px;

  margin:
    14px
    4px
    0 !important;

  line-height: 1.15;
}


/* Подзаголовки тоже занимают
   одинаковую зону */

.product-card p {
  min-height: 34px;

  margin:
    6px
    4px
    0 !important;

  line-height: 1.35;
}


/* Цена всегда идёт
   на одном уровне */

.product-card > strong {
  margin:
    12px
    4px
    0 !important;
}


/* Кнопка у всех карточек
   прижимается к низу */

.product-card > button {
  width: calc(100% - 8px);

  margin:
    12px
    4px
    0 !important;

  margin-top: auto !important;
}


/* =========================================
   MOBILE
   ========================================= */

@media (max-width: 720px) {

  .product-card h3 {
    /*
      Место под название
      до трёх строк.
    */
    min-height: 62px !important;

    font-size: 18px;
    line-height: 1.12 !important;
  }


  .product-card p {
    /*
      Место под описание
      до двух строк.
    */
    min-height: 38px !important;

    font-size: 12px;
    line-height: 1.35;
  }


  .product-card > strong {
    min-height: 24px;

    display: flex;
    align-items: center;

    margin-top: 8px !important;
  }


  .product-card > button {
    min-height: 46px;

    margin-top: 10px !important;
  }

}
/* =========================================
   PRODUCT CARDS — COMPACT ALIGNMENT
   ========================================= */

.product-card {
  display: flex !important;
  flex-direction: column !important;
  height: 100% !important;
}


/* Название — без искусственной высоты */

.product-card h3 {
  min-height: 0 !important;

  margin:
    12px
    4px
    0 !important;

  line-height: 1.12 !important;
}


/* Описание сразу под названием */

.product-card p {
  min-height: 0 !important;

  margin:
    6px
    4px
    0 !important;

  line-height: 1.3 !important;
}


/* Всё свободное место уходит только сюда.
   Поэтому цены остаются строго на одном уровне */

.product-card > strong {
  margin:
    auto
    4px
    0 !important;

  padding-top: 12px !important;
}


/* Кнопки тоже всегда ровные */

.product-card > button {
  width: calc(100% - 8px) !important;

  margin:
    10px
    4px
    0 !important;
}


/* МОБИЛЬНАЯ ВЕРСИЯ */

@media (max-width: 720px) {

  .product-card {
    padding:
      8px
      8px
      10px !important;
  }

  .product-card h3 {
    min-height: 0 !important;
    margin-top: 10px !important;

    font-size: 18px !important;
    line-height: 1.08 !important;
  }

  .product-card p {
    min-height: 0 !important;

    margin-top: 5px !important;

    font-size: 12px !important;
    line-height: 1.25 !important;
  }

  .product-card > strong {
    min-height: 0 !important;

    padding-top: 10px !important;

    font-size: 18px !important;
  }

  .product-card > button {
    min-height: 44px !important;

    margin-top: 8px !important;
  }

}
/* =========================================
   FINAL ORDER FLOW
   ========================================= */

.product-modal-actions {
  display: grid;
  gap: 8px;
  margin-top: 16px;
}

.product-modal-actions .primary-cta,
.product-modal-actions .secondary-cta {
  margin-top: 0 !important;
}


/* =========================================
   COMPACT BOTTOM SHEET
   ========================================= */

.order-panel {
  left: 50% !important;
  right: auto !important;

  top: auto !important;
  bottom: 0 !important;

  width:
    min(
      560px,
      calc(100% - 24px)
    )
    !important;

  height: auto !important;
  max-height: 86vh !important;

  overflow-y: auto !important;

  padding: 18px !important;

  border-radius:
    24px 24px 0 0 !important;

  background: #fff;

  box-shadow:
    0 -18px 60px
    rgba(41, 25, 28, 0.16)
    !important;

  transform:
    translate(
      -50%,
      110%
    )
    !important;
}


.order-sheet.is-open
.order-panel {
  transform:
    translate(
      -50%,
      0
    )
    !important;
}


/* ШАПКА */

.order-panel
.configurator-head {
  align-items: center;
}

.order-panel
.configurator-head span {
  margin-bottom: 3px;

  font-size: 10px;
  letter-spacing: 0.08em;
}

.order-panel
.configurator-head strong {
  font-size: 20px;
}


/* КРАТКОЕ РЕЗЮМЕ */

.order-summary {
  align-items: flex-start;

  margin:
    14px 0 10px
    !important;

  padding:
    11px 13px
    !important;

  gap:
    12px !important;

  border-radius:
    13px !important;
}

.order-summary span {
  min-width: 0;

  font-size: 12px;
  line-height: 1.3;
}

.order-summary strong {
  flex: 0 0 auto;

  white-space: nowrap;

  font-size: 14px;
}


/* ДОСТАВКА / САМОВЫВОЗ */

.fulfillment-switch {
  margin:
    10px 0
    !important;

  gap:
    5px !important;

  padding:
    3px !important;
}

.fulfillment-option {
  min-height:
    42px !important;
}


/* ПОЛЯ */

.order-panel .field {
  margin-top:
    10px !important;
}

.order-panel
.field span {
  margin-bottom:
    6px !important;
}

.order-panel
.field span small {
  margin-left: 4px;

  color: var(--muted);

  font-weight: 500;
}


.order-panel
.field input,
.order-panel
.field textarea {
  width: 100%;

  border:
    1px solid var(--line);

  border-radius:
    12px;

  outline: none;

  background: #fff;

  font: inherit;
}


.order-panel
.field input {
  height:
    46px !important;

  padding:
    0 12px !important;
}


.order-panel
.field textarea {
  min-height: 66px;

  padding:
    11px 12px;

  resize: none;
}


.order-panel
.field input:focus,
.order-panel
.field textarea:focus {
  border-color:
    var(--accent);

  box-shadow:
    0 0 0 3px
    rgba(207, 79, 98, 0.08);
}


/* ВРЕМЯ */

.order-panel
.time-choice-chips {
  margin-bottom: 6px;

  gap: 5px;
}


/* САМОВЫВОЗ */

.order-panel
.pickup-note {
  margin:
    8px 0 0
    !important;

  padding:
    10px 12px
    !important;

  border-radius:
    12px !important;
}


/* КНОПКА */

.order-panel
.telegram-confirm-button {
  min-height:
    50px !important;

  margin-top:
    14px !important;
}


/* MOBILE */

@media (max-width: 720px) {

  .order-panel {
    width:
      100% !important;

    max-height:
      88vh !important;

    padding:
      16px !important;
  }

}
/* =========================================
   PRODUCT MODAL — FINAL FULFILLMENT
   ========================================= */

.modal-fulfillment-section {
  margin-top: 22px;
}


.modal-fulfillment-switch {
  display: grid;

  grid-template-columns:
    repeat(2, minmax(0, 1fr));

  gap: 10px;

  margin-top: 8px;
}


.modal-fulfillment-option {
  min-height: 52px;

  padding:
    10px
    12px;

  border:
    1px solid var(--line);

  border-radius: 14px;

  background: #fff;

  cursor: pointer;

  font-size: 14px;
  font-weight: 700;

  transition:
    border-color 150ms ease,
    box-shadow 150ms ease;
}


/* АКТИВНЫЙ ВАРИАНТ —
   ЧЁРНАЯ РАМКА */

.modal-fulfillment-option.is-active {
  color: var(--text);

  border-color: #111;

  background: #fff;

  box-shadow:
    inset 0 0 0 1px #111;
}


/* =========================================
   PRODUCT MODAL —
   FIXED BOTTOM ORDER BUTTON
   ========================================= */

/*
  Сама шторка больше НЕ скроллится.
  Она делится на:
  1. скроллящийся контент
  2. постоянную кнопку снизу
*/

.product-modal-panel {
  display: flex !important;
  flex-direction: column !important;

  overflow: hidden !important;
}


/*
  Здесь скроллится абсолютно всё:
  фото, название, цвет, упаковка,
  получение и подарок.
*/

.product-modal-layout {
  flex:
    1 1 auto;

  min-height: 0;

  overflow-y: auto !important;
  overflow-x: hidden;

  overscroll-behavior: contain;

  -webkit-overflow-scrolling: touch;
}


/*
  Эта панель НЕ скроллится.
  Поэтому кнопка всегда остаётся
  перед глазами.
*/

.product-modal-bottom-bar {
  position: relative;

  z-index: 10;

  flex:
    0 0 auto;

  padding:
    12px
    18px
    calc(
      12px +
      env(safe-area-inset-bottom)
    );

  border-top:
    1px solid var(--line);

  background: #fff;

  box-shadow:
    0 -10px 28px
    rgba(45, 22, 26, 0.08);
}


.product-modal-bottom-bar
.primary-cta {
  margin-top: 0 !important;
}


/* =========================================
   MOBILE
   ========================================= */

@media (max-width: 520px) {

  /*
    Шторка фиксированной высоты.
    Верхний контент скроллится,
    нижняя кнопка всегда видна.
  */

  .product-modal-panel {
    height: 92vh !important;
    max-height: 92vh !important;
  }


  .product-modal-layout {
    flex:
      1 1 auto;

    min-height: 0;
  }


  .product-modal-bottom-bar {
    padding:
      10px
      18px
      calc(
        10px +
        env(safe-area-inset-bottom)
      );
  }

}
/* =========================================
   SWIPE GALLERY
   ========================================= */

[data-gallery-main],
[data-modal-gallery-main] {
  touch-action: pan-y;

  user-select: none;
  -webkit-user-select: none;

  cursor: grab;
}


[data-gallery-main]:active,
[data-modal-gallery-main]:active {
  cursor: grabbing;
}
/* =========================================
   PRODUCT CARDS — FINAL STABLE ALIGNMENT
   ========================================= */

.secondary-hits {
  align-items: stretch !important;
}

.secondary-hits .product-card {
  align-self: stretch !important;

  display: flex !important;
  flex-direction: column !important;

  height: auto !important;
}

.secondary-hits .product-card > strong {
  margin-top: auto !important;
  padding-top: 10px !important;
}

.secondary-hits .product-card > button {
  margin-top: 8px !important;
}
/* =========================================
   REAL SWIPE GALLERY
   ========================================= */

[data-gallery-main],
[data-modal-gallery-main] {
  position: relative;

  overflow: hidden;

  touch-action: pan-y;

  user-select: none;
  -webkit-user-select: none;
}


/*
  Два физических изображения:
  текущее + соседнее.
*/

.gallery-swipe-layer {
  position: absolute;

  inset: 0;

  z-index: 3;

  width: 100%;
  height: 100%;

  background-size: contain;
  background-position: center;
  background-repeat: no-repeat;

  will-change: transform;

  transform:
    translate3d(0, 0, 0);

  backface-visibility: hidden;
  -webkit-backface-visibility: hidden;
}


/*
  Пока палец двигается —
  transition НЕТ.

  Поэтому фотография буквально
  следует за пальцем.
*/

.gallery-swipe-layer.is-animating {
  transition:
    transform
    300ms
    cubic-bezier(
      0.22,
      0.61,
      0.36,
      1
    );
}