/* [GRID-4 15.08] Отступы карточки отзыва приведены к шагу 4: rem-дроби давали
   25.6 / 22.4 / 7.2 / 6.4 / 4.8 / 2.4 / 0.96 px. Сдвиги — доли ступени, глазом
   не читаются; лента из 21 карточки стала короче на ~30px. Живёт только на семи
   страницах квартир (в живом DOM главной .rb__card нет — проверено). */
/* [РЕТРО-СНЯТ 14.08] Капс с разрядкой 0.16–0.32em при кегле 11–12px — «разряжённый микро-кегль
   капсом», в правилах проекта назван тиком 2016-го и снят в подвале 28.07. На страницах квартир
   он жил дальше: замер 14.08 дал 33 таких элемента на одной странице и 7 на «Нашем районе»
   (на главной и в отзывах — ноль). Снимаем капс и разрядку, кегль поднимаем в шкалу проекта. */
/* ReviewsBlock — static masonry, hairline cards, trust-first. */

.rb {
  padding: clamp(3rem, 6vw, 5rem) 0;
  background: hsl(var(--paper));
  content-visibility: auto;
  contain-intrinsic-size: auto 1px auto 1800px;
  /* [WEIGHT 04.08] Ключевое слово auto: браузер запоминает НАСТОЯЩУЮ высоту после первой
     отрисовки и больше не подставляет выдуманную. Без него заглушка врала, и при обновлении
     страницы восстановленная позиция указывала на другой контент — в Safari это видно как
     рывок, в Chrome скрыто его собственным механизмом запоминания.
     ОТКАТ: убрать оба слова auto. */
}

.rb__shell {
  width: min(100% - 2rem, 1280px);
  margin: 0 auto;
}

/* ── Header — split row: title+intro left, summary card right ──────── */
.rb__head {
  display: grid;
  grid-template-columns: 1fr;
  gap: 2rem;
  margin-bottom: clamp(2.5rem, 5vw, 4rem);
  align-items: end;
}
@media (min-width: 768px) {
  .rb__head--place-right { grid-template-columns: 1fr minmax(280px, 360px); gap: 3rem; }
  
  
  
}
/* Trustbar header: title+intro left, platform trust plates right, hairline below. */

.rb__head--place-swap .rb__head-main { justify-self: end; text-align: right; margin-left: auto; }

/* Hairline divider beneath the trustbar header. */


/* Controls row — verified-bookings count (left) + platform filter (right). */



.rb__filter {
  appearance: none;
  background: none;
  border: 0;
  padding: 0.15rem 0;
  cursor: pointer;
  font-family: var(--font-sans);
  font-size: var(--fs-2xs);
  font-weight: 600;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: hsl(var(--ink) / 0.4);
  border-bottom: 1.5px solid transparent;
  transition: color var(--dur-fast) var(--ease-standard),
    border-color var(--dur-fast) var(--ease-standard);
}
.rb__filter:hover { color: hsl(var(--ink) / 0.7); }
.rb__filter--active {
  color: hsl(var(--ink));
  border-bottom-color: hsl(var(--ink));
}
@media (prefers-reduced-motion: reduce) {
  .rb__filter { transition: none; }
}


/* ── Trust stats — container-less editorial score figures ───────────── */



/* Footer summary — centered card under the grid */

.rb__footer-summary .rb__scores {
  width: min(100%, 360px);
  margin: 0 auto;
}

/* ── Scores — typographic stack, no card, divider-led platform rows ──── */
.rb__scores {
  display: flex;
  flex-direction: column;
  max-width: 360px;
}
.rb__scores-num-row {
  display: inline-flex;
  align-items: baseline;
  gap: 0.5rem;
}
.rb__scores-num {
  font-size: clamp(3.25rem, 5.5vw, 4.5rem);
  font-weight: 500;
  letter-spacing: -0.035em;
  line-height: 1;
  color: hsl(var(--ink));
}
.rb__scores-of {
  font-size: var(--fs-lg);
  font-weight: 400;
  color: hsl(var(--ink) / 0.4);
}
.rb__scores-stars-row {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-top: 8px;
  margin-bottom: 1.75rem;
}
.rb__scores-count {
  font-size: var(--fs-sm);
  font-weight: 500;
  letter-spacing: -0.005em;
  color: hsl(var(--ink-soft));
}
.rb__scores-list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 1rem;
}
.rb__scores-row { display: flex; }
.rb__scores-row-link {
  display: grid;
  grid-template-columns: 1fr auto;
  align-items: end;
  gap: 0.75rem;
  width: 100%;
  text-decoration: none;
  color: inherit;
}
.rb__scores-row-link::before {
  content: "";
  grid-column: 1 / -1;
  display: block;
  height: 1px;
  width: 100%;
  background: hsl(var(--hairline));
  margin-bottom: 0.4rem;
  transition: background-color var(--dur-base) var(--ease-standard);
}
.rb__scores-row-link:hover::before { background: hsl(var(--ink) / 0.35); }
.rb__scores-row-left {
  display: flex;
  flex-direction: column;
  gap: 4px;
  min-width: 0;
}
.rb__scores-platform {
  font-size: var(--s-13, 13px);
  letter-spacing: 0;
  line-height: 1;
}
.rb__scores-row-count {
  font-size: var(--fs-sm);
  color: hsl(var(--ink) / 0.5);
  letter-spacing: -0.005em;
}
.rb__scores-row-value {
  display: inline-flex;
  align-items: baseline;
  gap: 4px;
  color: hsl(var(--ink));
}
.rb__scores-value-num {
  font-size: 1.35rem;
  font-weight: 500;
  letter-spacing: -0.02em;
  line-height: 1;
}
.rb__scores-value-of {
  font-size: var(--fs-xs);
  color: hsl(var(--ink) / 0.4);
  font-weight: 400;
}
@media (prefers-reduced-motion: reduce) {
  .rb__scores-row-link::before { transition: none; }
}


.rb__head-main {
  display: flex;
  flex-direction: column;
  gap: 1rem;
  max-width: 52ch;
}
.rb__title {
  font-size: clamp(2rem, 4.5vw, 3.25rem);
}
.rb__intro {
  margin: 0;
  font-size: var(--fs-base);
  line-height: 1.55;
  color: hsl(var(--ink) / 0.6);
}
/* Compliance disclaimer — closed-loop source statement (EU Omnibus). */


/* Summary card: hairline border, no shadow. Hero average on top, list below. */


/* Stars — filled portion overlays empty track. */
.rb__stars {
  position: relative;
  display: inline-block;
  font-size: var(--fs-lg);
  line-height: 1;
  letter-spacing: 0.08em;
  color: hsl(var(--ink) / 0.18);
}
.rb__stars-track { display: inline-block; }
.rb__stars-fill {
  position: absolute;
  inset: 0;
  overflow: hidden;
  white-space: nowrap;
  color: hsl(40 90% 52%);
}

/* Average-score tooltip trigger — looks like text, hints interactivity on hover. */


@keyframes rb-underline-pulse {
  0%, 100% { opacity: 0.55; }
  50%      { opacity: 1; }
}

/* Tooltip surface — paper, hairline, no shadow stack. Overrides shadcn defaults. */


@keyframes rb-tip-in {
  from { opacity: 0; transform: translateY(-4px) scale(0.98); }
  to   { opacity: 1; transform: translateY(0)    scale(1); }
}
@keyframes rb-tip-out {
  from { opacity: 1; transform: translateY(0)    scale(1); }
  to   { opacity: 0; transform: translateY(-2px) scale(0.99); }
}

@media (prefers-reduced-motion: reduce) {
  .rb__avg-trigger::after{ animation: none !important; transition: none !important; }
  .rb__avg-trigger:hover::after { transform: scaleX(1); opacity: 1; }
}

/* ── Compare label (A/B mode) ──────────────────────────────────────── */


/* ── Editorial header variant — big avg + platform breakdown rows ─── */



/* ── Masonry via CSS columns ────────────────────────────────────────── */
.rb__grid {
  list-style: none;
  padding: 0;
  margin: 0;
  column-count: 1;
  column-gap: 1.25rem;
}
@media (min-width: 640px)  { .rb__grid { column-count: 2; } }
@media (min-width: 1024px) { .rb__grid { column-count: 3; column-gap: 1.5rem; } }

.rb__grid-item {
  break-inside: avoid;
  page-break-inside: avoid;
  -webkit-column-break-inside: avoid;
  margin-bottom: 1.25rem;
}
@media (min-width: 1024px) {
  .rb__grid-item { margin-bottom: 1.5rem; }
}

/* ── Cards ──────────────────────────────────────────────────────────── */
.rb__card {
  display: flex;
  flex-direction: column;
  gap: 1rem;
  padding: clamp(1.25rem, 2vw, 1.75rem) !important;
  border-radius: 14px !important;
  transition: border-color var(--dur-base) var(--ease-standard), transform var(--dur-base) var(--ease-standard), background-color var(--dur-base) var(--ease-standard);
}
.rb__card:hover {
  border-color: hsl(var(--ink) / 0.18) !important;
  background: hsl(var(--paper-soft) / 0.4) !important;
  transform: translateY(-2px);
}

.rb__card-head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 0.75rem;
}
.rb__card-who {
  display: flex;
  align-items: center;
  gap: 0.75rem;
  min-width: 0;
  flex: 1 1 auto;
}
.rb__card-score {
  flex: 0 0 auto;
  display: inline-flex;
  align-items: baseline;
  gap: 0.25rem;
  color: hsl(var(--ink));
}
.rb__card-score-num {
  font-size: var(--fs-lg);
  font-weight: 600;
  letter-spacing: -0.015em;
  line-height: 1;
}
.rb__card-score-of {
  font-size: var(--fs-xs);
  font-weight: 500;
  color: hsl(var(--ink) / 0.4);
  line-height: 1;
}
.rb__card-who-text {
  display: flex;
  flex-direction: column;
  gap: 4px;
  min-width: 0;
}
.rb__card-author {
  font-weight: 600;
  font-size: var(--fs-md);
  color: hsl(var(--ink));
  letter-spacing: -0.005em;
}
.rb__card-meta {
  font-size: var(--fs-xs);
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: hsl(var(--ink) / 0.5);
}

.rb__card-body {
  margin: 0;
  font-size: var(--fs-base);
  line-height: 1.55;
  color: hsl(var(--ink) / 0.88);
  white-space: pre-wrap;
}

.rb__card-body--empty {
  color: hsl(var(--ink-muted));
  font-style: italic;
}



.rb__card-reply {
  margin-top: 0.25rem;
  padding: 0.85rem 1rem;
  background: hsl(var(--paper-soft));
  border-left: 2px solid hsl(var(--ink) / 0.35);
  border-radius: 6px;
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.rb__card-reply-label {
  font-size: var(--fs-2xs);
  font-weight: 700;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: hsl(var(--ink) / 0.55);
}
.rb__card-reply-body {
  margin: 0;
  font-size: var(--fs-md);
  line-height: 1.5;
  color: hsl(var(--ink) / 0.82);
}

.rb__card-foot {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 0.5rem;
  padding-top: 0.9rem;
  border-top: 1px solid hsl(var(--ink) / 0.08);
}

.rb__card-verify {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-size: var(--fs-xs);
  font-weight: 700;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: hsl(var(--ink));
  text-decoration: none;
  transition: opacity var(--dur-fast) var(--ease-standard);
}
.rb__card-verify:hover { opacity: 0.65; }
.rb__card-verify-mark {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 0.95rem;
  height: 0.95rem;
  border-radius: var(--radius-full);
  background: hsl(var(--ink));
  color: hsl(var(--paper));
  font-size: 0.58rem;
  font-weight: 700;
}
.rb__card-verify-src { color: hsl(var(--ink) / 0.4); }

/* ── WhatsApp CTA ───────────────────────────────────────────────────── */

.rb__wa {
  display: inline-flex;
  align-items: center;
  gap: 0.7rem;
  padding: 1rem 2rem;
  border-radius: var(--radius-full);
  background: var(--wa);
  color: #fff;
  text-decoration: none;
  font-weight: 600;
  font-size: var(--fs-base);
  letter-spacing: -0.005em;
  transition: background-color var(--dur-base) var(--ease-standard), transform var(--dur-base) var(--ease-standard);
}
.rb__wa:hover { background: var(--wa-hover); transform: translateY(-1px); }
.rb__wa:active { transform: translateY(0) scale(0.992); }

@media (prefers-reduced-motion: reduce) {
  .rb__card-verify, .rb__card, .rb__wa{ transition: none; }
  .rb__wa:hover,
  .rb__card:hover { transform: none; }
}

/* ── Verdict header — word anchor + compact score, no breakdown ────── */


/* ── Promise — behavioral claim as anchor, score as quiet proof ──────── */


/* ── Silence — section title + one meta line, scores dissolve into cards ── */




/* ── Compare label (when rendering multiple variants for review) ────── */


/* ═══ Editorial card (Batch 3, July 2026) — sub-pages match the home's reviews
   tile: flat warm paper-soft plate, 24px radius, QUOTE leads, attribution sinks
   to the card bottom. Markup untouched — flex `order` re-arranges head/body/foot
   (body 1 → head 2 → foot 3). Later-in-file + !important beats the p-surface
   hairline chrome and the legacy rules above. Home does NOT load this file. ═══ */
.rb__card {
  gap: 0;
  background: hsl(var(--paper-soft)) !important;
  border-color: transparent !important;
  border-radius: var(--radius-lg) !important;
  padding: clamp(24px, 2.3vw, 32px) !important;
  transition: background-color var(--dur-base) var(--ease-standard);
}
.rb__card:hover {
  background: hsl(36 13% 88%) !important;
  border-color: transparent !important;
  transform: none;
}
/* Quote leads */
.rb__card-body {
  order: 1;
  font-size: 1.0625rem;
  line-height: 1.58;
  color: hsl(var(--ink) / 0.86);
  letter-spacing: -0.003em;
  text-wrap: pretty;
}
/* Owner reply follows the quote (rvx-style quiet nested note) */
.rb__card-reply {
  order: 1;
  margin-top: 1.15rem;
  padding: 0 0 0 0.9rem;
  background: transparent;
  border-left: 2px solid hsl(var(--ink) / 0.2);
  border-radius: 0;
  gap: 0.28rem;
}
.rb__card-reply-label {
  text-transform: none;
  letter-spacing: normal;
  font-size: var(--fs-sm);
  color: hsl(var(--ink) / 0.62);
}
.rb__card-reply-body { color: hsl(var(--ink) / 0.68); }
/* Attribution anchors the bottom: name+meta left, ★score right */
.rb__card-head {
  order: 2;
  margin-top: auto;
  padding-top: clamp(24px, 2.4vw, 32px); /* [GRID-4 15.08] 22.4 → 24 */
  align-items: flex-end;
}
.rb__card-author { font-size: var(--fs-base); }
.rb__card-meta {
  text-transform: none;
  letter-spacing: -0.002em;
  font-size: var(--fs-md);
  color: hsl(var(--ink) / 0.64);
  font-variant-numeric: tabular-nums;
}
.rb__card-score { align-items: baseline; gap: 0; }
.rb__card-score::before {
  content: "★";
  align-self: center;
  font-size: 0.8em;
  color: hsl(var(--ink) / 0.6);
  margin-right: 0.18rem;
}
.rb__card-score-num { font-size: 0.95rem; font-weight: 700; letter-spacing: -0.01em; }
.rb__card-score-of { font-weight: 600; color: hsl(var(--ink) / 0.55); }
/* Verify link — quiet sentence-case source line, bottom-right under the score */
.rb__card-foot {
  order: 3;
  border-top: 0;
  padding-top: 8px;
  justify-content: flex-end;
}
.rb__card-verify {
  font-size: var(--fs-sm);
  font-weight: 500;
  letter-spacing: normal;
  text-transform: none;
  color: hsl(var(--ink) / 0.64);
  transition: color var(--dur-fast) var(--ease-standard);
}
.rb__card-verify:hover { opacity: 1; color: hsl(var(--ink) / 0.85); }
.rb__card-verify-mark {
  width: 0.9rem;
  height: 0.9rem;
  background: hsl(var(--ink) / 0.72);
}
.rb__card-verify-src { color: hsl(var(--ink) / 0.5); }
@media (prefers-reduced-motion: reduce) {
  .rb__card, .rb__card-verify { transition: none; }
}


/* ═══ [КАРТОЧКИ-ЭТАЛОН 27.08] Стили карточки rvx — копия <style id="dr-reviews-editorial">
   с главной: карточки квартирных страниц приведены к эталону её словом («карточка отзыва
   нормально сделана на главной»). Правишь вид карточки — правь в обоих местах. ═══ */

    #reviews .rvx__grid {
      list-style: none; padding: 0; margin: 0;
      column-gap: clamp(1.1rem, 1.6vw, 1.5rem);
    }
    #reviews .rvx__grid > li { break-inside: avoid; -webkit-column-break-inside: avoid; page-break-inside: avoid; margin-bottom: clamp(1.1rem, 1.6vw, 1.5rem); }
    /* JS-placed masonry: real column containers; JS drops each card into the currently
       shortest column, and the «show more» batch is appended PER COLUMN inside a
       per-column curtain — columns stay continuous in both states (no seam voids),
       no card is ever cut, visible cards never move. */
    #reviews .rvx__cols { display: grid; grid-template-columns: 1fr; gap: 0 clamp(1.1rem, 1.6vw, 1.5rem); align-items: start; }
    @media (min-width: 640px) { #reviews .rvx__cols { grid-template-columns: repeat(2, 1fr); } }
    @media (min-width: 1024px) { #reviews .rvx__cols { grid-template-columns: repeat(3, 1fr); } }
    #reviews .rvx__cols { --rvx-gap: clamp(1.1rem, 1.6vw, 1.5rem); --rvx-collapse: 560ms; }
    #reviews .rvx__col { display: flex; flex-direction: column; gap: var(--rvx-gap); min-width: 0; }
    /* Curtain = grid-template-rows 0fr↔1fr: height animates to auto-content
       purely in CSS (no scrollHeight measuring, no reflow/settle machinery),
       symmetric by construction, interruptible mid-flight. margin-top −gap→0
       cancels the column gap before the empty curtain when closed (flush) and
       lets it reappear as the separator when open. Inner wrapper clips content. */
    #reviews .rvx__colmore { display: grid; grid-template-rows: 0fr; margin-top: calc(-1 * var(--rvx-gap)); visibility: hidden; transition: grid-template-rows var(--rvx-collapse) var(--ease-standard), margin-top var(--rvx-collapse) var(--ease-standard), visibility 0s linear var(--rvx-collapse);  align-items:start; /* [FILM 01.08·2.6] то же у шторок отзывов */}
    #reviews .rvx__colmore.is-open { grid-template-rows: 1fr; margin-top: 0; visibility: visible; transition: grid-template-rows var(--rvx-collapse) var(--ease-standard), margin-top var(--rvx-collapse) var(--ease-standard), visibility 0s; }
    #reviews .rvx__cminner { overflow: hidden; min-height: 0; display: flex; flex-direction: column; gap: var(--rvx-gap); }
    /* Reveal: the curtain opens INSTANTLY (no height tween → no per-column speed
       mismatch, nothing races the scroll); the new cards arrive in the site's own
       reveal language — fade + 14px rise on --ease-standard, staggered per column
       (--stag set inline by JS). visibility:hidden keeps collapsed cards out of
       the Tab order and away from screen readers. */
    #reviews .rvx__colmore .rvx__item { opacity: 0; transform: translateY(14px); transition: opacity var(--dur-slower) var(--ease-standard) var(--stag, 0ms), transform var(--dur-slower) var(--ease-standard) var(--stag, 0ms); }
    #reviews .rvx__colmore.is-open .rvx__item { opacity: 1; transform: none; }
    @media print { #reviews .rvx__colmore { grid-template-rows: 1fr; margin-top: 0; visibility: visible; } #reviews .rvx__colmore .rvx__item { opacity: 1; transform: none; } }
    /* Heading = FIRST masonry cell: title + intro + platform list occupy the top-left
       column cell so the review cards flow AROUND it and fill the tops of columns 2-3
       (same idea as the map cell embedded in the apartment grid). */
    #reviews .rvx__lead { display: flex; flex-direction: column; gap: clamp(0.85rem, 1.7vw, 1.3rem); padding: 0.1rem 0 clamp(0.6rem, 1.6vw, 1.15rem); }
    #reviews .rvx__lead-meta { display: flex; flex-direction: column; gap: clamp(1rem, 2vw, 1.4rem); }
    #reviews .rvx__lead-meta .rvx__intro, #reviews .rvx__lead-meta .rvx__breakdown { margin-top: 0; }
    #reviews .rvx__title { margin: 0; font-size: clamp(1.7rem, 3.2vw, 2.4rem); font-weight: 700; letter-spacing: -0.02em; line-height: 1.06; color: hsl(var(--ink)); text-wrap: balance; }
    #reviews .rvx__intro { margin: clamp(1rem, 2vw, 1.5rem) 0 0; max-width: 56ch; font-size: 0.95rem; line-height: 1.55; color: hsl(var(--ink) / 0.66); text-wrap: pretty; }
    #reviews .rvx__breakdown { list-style: none; margin: clamp(1.1rem, 2vw, 1.5rem) 0 0; padding: 0; display: grid; grid-template-columns: max-content max-content; justify-content: start; align-items: baseline; column-gap: 1.15rem; row-gap: 0.6rem; }
    #reviews .rvx__bd { display: contents; }
    #reviews .rvx__bd-name { font-size: 0.9375rem; font-weight: 600; color: hsl(var(--ink) / 0.72); letter-spacing: -0.005em; }
    #reviews .rvx__bd-val { display: inline-flex; align-items: baseline; gap: 0.7rem; white-space: nowrap; } /* [MW2] gap 0.5→0.7 — воздух вместо точек */
    #reviews .rvx__bd-score { font-size: 0.9375rem; font-weight: 700; color: hsl(var(--ink)); letter-spacing: -0.01em; }
    #reviews .rvx__bd-of { font-weight: 600; color: hsl(var(--ink) / 0.55); }
    #reviews .rvx__bd-count { font-size: 0.8125rem; font-weight: 500; color: hsl(var(--ink) / 0.6); }
    /* [MW2 11.07] точки-разделители «·» сняты (user: «точки ваще не в тему, как в отзывах») —
       иерархию несут вес/цвет + gap; касается и префикса перед Superhost. */
    #reviews .rvx__score { display: inline-flex; align-items: baseline; gap: 0.06rem; font-size: 0.95rem; font-variant-numeric: tabular-nums; letter-spacing: -0.01em; line-height: 1; }
    #reviews .rvx__score b { font-weight: 700; color: hsl(var(--ink)); }
    #reviews .rvx__score-of { font-weight: 600; color: hsl(var(--ink) / 0.55); }
    #reviews .rvx__star { align-self: center; font-size: 0.8em; color: hsl(var(--ink) / 0.6); margin-right: 0.18rem; }
    #reviews .rvx__foot { margin: clamp(1.7rem, 2.8vw, 2.4rem) 0 0; font-size: 0.9rem; line-height: 1.55; color: hsl(var(--ink) / 0.62); text-align: center; text-wrap: pretty; }
    #reviews .rvx__morewrap { display: flex; justify-content: center; margin: clamp(1.6rem, 2.6vw, 2.3rem) 0 0; }
    #reviews .rvx__more { font: inherit; font-weight: 600; font-size: 0.95rem; letter-spacing: -0.01em; color: hsl(var(--ink) / 0.8); background: transparent; border: 1px solid hsl(var(--ink) / 0.16); border-radius: 999px; padding: 0.72rem 1.6rem; cursor: pointer; transition: background-color var(--dur-fast) var(--ease-standard), border-color var(--dur-fast) var(--ease-standard), color var(--dur-fast) var(--ease-standard); }
    #reviews .rvx__more:hover { background: hsl(var(--ink) / 0.045); border-color: hsl(var(--ink) / 0.3); color: hsl(var(--ink)); }
    #reviews .rvx__more:focus-visible { outline: 2px solid hsl(var(--ink)); outline-offset: 3px; }
    /* [REVIEWS-PAGE 31.07] Ссылка на архив вместо кнопки-раскрывашки. Вид тот же, чтобы не заводить
       ещё один вокабуляр: это по-прежнему «дальше есть ещё», просто ведёт на страницу, а не вниз. */
    #reviews .rvx__all { display: inline-block; white-space: nowrap; font-weight: 600; font-size: 0.95rem; letter-spacing: -0.01em; color: hsl(var(--ink) / 0.8); text-decoration: none; border: 1px solid hsl(var(--ink) / 0.16); border-radius: 999px; padding: 0.72rem 1.6rem; transition: background-color var(--dur-fast) var(--ease-standard), border-color var(--dur-fast) var(--ease-standard), color var(--dur-fast) var(--ease-standard); }
    #reviews .rvx__all:hover { background: hsl(var(--ink) / 0.045); border-color: hsl(var(--ink) / 0.3); color: hsl(var(--ink)); }
    #reviews .rvx__all:focus-visible { outline: 2px solid hsl(var(--ink)); outline-offset: 3px; }
    @media (prefers-reduced-motion: reduce) { #reviews .rvx__colmore { transition-duration: 0ms !important; } #reviews .rvx__colmore .rvx__item { transition: none; } }
    #reviews .rvx__card { display: flex; flex-direction: column; background: hsl(var(--paper-soft)); border-radius: var(--radius-lg); padding: clamp(1.6rem, 2.3vw, 2.1rem); transition: background-color var(--dur-base) var(--ease-standard); }
    #reviews .rvx__card:hover { background: hsl(36 13% 88%); }
    @media (prefers-reduced-motion: reduce) { #reviews .rvx__card { transition: none; } }
    #reviews .rvx__quote { margin: 0; font-size: 1.0625rem; line-height: 1.58; color: hsl(var(--ink) / 0.86); letter-spacing: -0.003em; white-space: pre-wrap; text-wrap: pretty; }
    /* [REVIEW-PHOTOS 31.07] Фото гостя внутри его отзыва — ряд квадратных превью сразу под текстом,
       ДО ответа хозяев (ответ — реплика на сказанное гостем, значит идёт после всего гостевого).
       Тап открывает оригинал. Ряд горизонтально прокручивается, чтобы шесть снимков не ломали колонку. */
    #reviews .rvx__shots { list-style: none; margin: 1.1rem 0 0; padding: 0; display: flex; gap: 8px; overflow-x: auto; overscroll-behavior-x: contain; scrollbar-width: none; }
    #reviews .rvx__shots::-webkit-scrollbar { display: none; }
    #reviews .rvx__shots > li { flex: 0 0 auto; }
    #reviews .rvx__shot { display: block; width: 74px; height: 74px; border-radius: var(--radius-sm); overflow: hidden; background: hsl(34 18% 88%); }
    #reviews .rvx__shot img { width: 100%; height: 100%; object-fit: cover; display: block; transition: transform var(--dur-base) var(--ease-standard); }
    @media (hover: hover) { #reviews .rvx__shot:hover img { transform: scale(1.05); } }
    #reviews .rvx__shot:focus-visible { outline: 2px solid hsl(var(--focus-ring)); outline-offset: 2px; }
    @media (prefers-reduced-motion: reduce) { #reviews .rvx__shot img { transition: none; } }
    #reviews .rvx__reply { margin-top: 1.15rem; padding-left: 0.9rem; border-left: 2px solid hsl(var(--ink) / 0.2); }
    #reviews .rvx__reply-by { display: block; font-size: 0.8125rem; font-weight: 600; color: hsl(var(--ink) / 0.62); margin-bottom: 0.28rem; }
    #reviews .rvx__reply p { margin: 0; font-size: 0.9rem; line-height: 1.5; color: hsl(var(--ink) / 0.68); text-wrap: pretty; }
    #reviews .rvx__by { display: flex; align-items: flex-end; justify-content: space-between; gap: 1rem; margin-top: auto; padding-top: clamp(1.4rem, 2.4vw, 1.9rem); }
    #reviews .rvx__byleft { display: flex; align-items: center; gap: 0.75rem; min-width: 0; }
    #reviews .rvx__byright { display: flex; flex-direction: column; align-items: flex-end; gap: 0.4rem; flex: 0 0 auto; }
    #reviews .rvx__id { display: flex; flex-direction: column; gap: 0.12rem; min-width: 0; }
    #reviews .rvx__name { font-weight: 600; font-size: 1rem; color: hsl(var(--ink)); letter-spacing: -0.01em; }
    #reviews .rvx__from { font-weight: 500; color: hsl(var(--ink) / 0.6); }
    #reviews .rvx__apt { white-space: nowrap; }
    #reviews .rvx__meta { font-size: 0.875rem; color: hsl(var(--ink) / 0.64); letter-spacing: -0.002em; font-variant-numeric: tabular-nums; }
    #reviews .rvx__source { flex: 0 0 auto; display: inline-flex; align-items: center; gap: 0.22rem; font-size: 0.8125rem; font-weight: 500; color: hsl(var(--ink) / 0.64); text-decoration: none; transition: color var(--dur-fast) var(--ease-standard); align-self: flex-end; }
    #reviews .rvx__source:hover { color: hsl(var(--ink) / 0.85); }
    #reviews .rvx__src-arr { width: 0.78em; height: 0.78em; stroke: currentColor; stroke-width: 2.2; stroke-linecap: round; stroke-linejoin: round; transition: transform var(--dur-base) var(--ease-standard); }
    #reviews .rvx__source:hover .rvx__src-arr { transform: translate(1px, -1px); }
    @media (max-width: 639px) { #reviews .rvx__lead { padding-right: 0; padding-bottom: 0.6rem; } }
    @media (prefers-reduced-motion: reduce) { #reviews .rvx__source, #reviews .rvx__src-arr { transition: none; } }
  