/* Быстрая покупка в hero (14.10.2026). Карточку даёт .hero-banner .right-block form из app.css. */
.quick-buy {
  --qb-line: rgba(250, 250, 250, .16);
  --qb-on: #D4AF37;
  --qb-ink: #fafafa;
  --qb-mute: rgba(250, 250, 250, .62);
  --qb-ease: cubic-bezier(.16, 1, .3, 1);
}
.quick-buy .qb-list {
  border-top: 1px solid var(--qb-line);
  margin-bottom: 16px;
}
.quick-buy .qb-row {
  display: grid;
  grid-template-columns: 4.2em 1fr auto auto;
  align-items: center;
  gap: 12px;
  padding: 10px 0 10px 12px;
  border-bottom: 1px solid var(--qb-line);
  position: relative;
  transition: background-color .25s var(--qb-ease);
}
.quick-buy .qb-row::before {
  content: "";
  position: absolute;
  left: 0; top: 10px; bottom: 10px;
  width: 2px;
  background: var(--qb-on);
  transform: scaleY(0);
  transition: transform .3s var(--qb-ease);
}
.quick-buy .qb-row.is-on { background: rgba(212, 175, 55, .07); }
.quick-buy .qb-row.is-on::before { transform: scaleY(1); }
.quick-buy .qb-name {
  font-family: "Playfair Display", serif;
  font-weight: 700;
  font-size: 1.05em;
  color: var(--qb-ink);
}
.quick-buy .qb-pack { color: var(--qb-mute); font-size: .875em; }
.quick-buy .qb-price { color: var(--qb-ink); font-weight: 600; font-variant-numeric: tabular-nums; }
.quick-buy .qb-step { display: inline-flex; align-items: center; gap: 4px; }
.quick-buy .qb-step button {
  width: 34px; height: 34px;
  border-radius: 50%;
  border: 1px solid var(--qb-line);
  background: transparent;
  color: var(--qb-ink);
  font-size: 18px; line-height: 1;
  cursor: pointer;
  transition: border-color .2s, background-color .2s, transform .15s var(--qb-ease);
}
.quick-buy .qb-step button:hover:not(:disabled) { border-color: var(--qb-on); background: rgba(212, 175, 55, .12); }
.quick-buy .qb-step button:active:not(:disabled) { transform: scale(.9); }
.quick-buy .qb-step button:disabled { opacity: .3; cursor: default; }
.quick-buy .qb-step button:focus-visible { outline: 2px solid var(--qb-on); outline-offset: 2px; }
.quick-buy .qb-qty {
  min-width: 1.6em;
  text-align: center;
  color: var(--qb-ink);
  font-weight: 600;
  font-variant-numeric: tabular-nums;
}
.quick-buy .qb-qty.qb-tick { animation: qb-tick .3s var(--qb-ease); }
@keyframes qb-tick { 0% { transform: translateY(-35%); opacity: .2; } 100% { transform: none; opacity: 1; } }
.quick-buy .qb-sum {
  display: flex; justify-content: space-between; align-items: baseline;
  color: var(--qb-ink);
}
.quick-buy .qb-sum strong {
  font-family: "Playfair Display", serif;
  font-size: 1.6em;
  font-variant-numeric: tabular-nums;
}
.quick-buy .qb-ship { color: var(--qb-mute); font-size: .85em; margin: 4px 0 16px; min-height: 1.4em; }
.quick-buy .qb-buy { height: 52px; font-size: 16px; }
.quick-buy .qb-buy:disabled { opacity: .45; cursor: default; }
.quick-buy .form-trust { margin-top: 12px; }
.quick-buy.qb-flash { animation: qb-flash 1.1s var(--qb-ease); }
@keyframes qb-flash {
  0% { box-shadow: 0 0 0 0 rgba(212, 175, 55, .55); }
  100% { box-shadow: 0 0 0 18px rgba(212, 175, 55, 0); }
}
@media (max-width: 490px) {
  .quick-buy .qb-row { grid-template-columns: 3.6em 1fr auto; row-gap: 2px; padding-left: 10px; }
  .quick-buy .qb-price { grid-column: 2; grid-row: 2; font-size: .9em; color: var(--qb-mute); font-weight: 500; }
  .quick-buy .qb-pack { grid-column: 2; grid-row: 1; }
  .quick-buy .qb-step { grid-column: 3; grid-row: 1 / span 2; }
  .quick-buy .qb-name { grid-row: 1 / span 2; }
  .quick-buy .qb-step button { width: 40px; height: 40px; }
}
@media (prefers-reduced-motion: reduce) {
  .quick-buy .qb-qty.qb-tick, .quick-buy.qb-flash { animation: none; }
  .quick-buy .qb-row, .quick-buy .qb-row::before { transition: none; }
}
.quick-buy .qb-row { text-align: left; }
.quick-buy .qb-buy { text-transform: none; }
/* Плавающие Telegram/WhatsApp и «наверх» закрывали «+» на телефоне — пока карточка на экране, прячем их */
.float-tg, .float-wa, .scrollToTopBtn { transition: opacity .25s, visibility .25s; }
@media (max-width: 991px) {
  body.qb-in-view .float-tg, body.qb-in-view .float-wa,
  body.qb-in-view .scrollToTopBtn { opacity: 0; visibility: hidden; }
}
