@charset "UTF-8";
/* ==========================================================================
   CUSTOMER REVIEWS — "rq" INK & GOLD LEAF ISLAND PASS, 20 August 2026.
   Built against docs/design-authority/DUKES_DESIGN_AUTHORITY.md v1.0 and the
   island grammar measured off /properties/tenant-fees/, /properties/tenant-guide/,
   /sales/valuation/, / and /sales/.

   ROUND 2 (Aarav, 20 Aug, on the round-1 render):
     · "the green doesn't look good here, it looks ugly"  -> the olive anchor is
       gone. This page now anchors the house NAVY, the same family as the
       Seller's Guide, the homepage and /sales/valuation/, which are the three
       pages he has approved. It keeps its own identity through the pale blue
       MIST wall field, the gold-leaf identity and its three devices.
     · "images are being scrolled down when I scroll down, make them still,
       keep it in the middle"  -> the chapter-02 media is sticky and holds the
       lane while the ledger scrolls past it.
     · "images are not placeholders"  -> every crown placeholder is filled with
       Aarav's own generated art from the repo library. Nothing sourced.
     · "add images for every review"  -> all 24 wall cards carry one.
     · "add the animation we had for the review section"  -> the archive is now
       the homepage rw2 scrolling-columns wall, ported to this page's palette.

   PREFIX
   Everything is `rq-`. That prefix appears NOWHERE in dukes.css (verified 0
   hits), which matters: dukes.css carries six retired `.page--reviews .rvw-*`
   passes across ~15,000 lines and they are all live specificity hazards.

   COLOUR HAS JOBS. The job is stated next to every token.

   THE THREE DEVICES THIS PAGE OWNS (novelty mandate, §2):
     1. THE RECORD STRIP — a monospaced, tabular provenance line
        (SOURCE / CAPTURED / RATING / REVIEWS / SHOWN). No other Dukes page
        uses a mono face. It makes the page read as an audited record.
     2. THE SCORE CARD — the aggregate shipped as ONE aligned plate.
     3. THE VOICE INDEX — the eight reviewer faces as NAMED, tappable chips
        with their stars, not anonymous decoration circles.
   ========================================================================== */

/* ==========================================================================
   0.1 TOKENS
   ========================================================================== */

.page--reviews {
  /* --- ink (site standard) --------------------------------------------- */
  --rq-ink: #171a20;              /* JOB: primary text on light */
  --rq-ink-soft: #4f555b;         /* JOB: secondary text, meta, captions */

  /* --- the anchor ------------------------------------------------------- */
  --rq-navy: #12203a;             /* JOB: decisive dark islands ONLY */
  --rq-navy-2: #22334f;           /* JOB: plates sitting ON a dark island */
  --rq-navy-3: #2d4163;           /* JOB: the hover step of the above */

  /* --- grounds and THE one white ---------------------------------------- */
  --rq-cream: #fbf8f2;            /* JOB: THE premium white. Plates only.
                                     One white token across the whole page. */
  --rq-paper: #f2ede4;            /* JOB: warm paper — the wall stage plate */
  --rq-linen: #ece2cf;            /* JOB: deeper warm field — the voices island */
  --rq-mist: #dbe8ec;             /* JOB: pale blue field — the review wall.
                                     The Seller's Guide blue, so the page's one
                                     full-bleed band reads as a guide chapter. */

  /* --- the accent -------------------------------------------------------- */
  --rq-oxblood: #7b2430;          /* JOB: actions + kickers ONLY. Nowhere else. */
  --rq-oxblood-dk: #5e1924;       /* JOB: hover/active of the above */

  /* --- identity ---------------------------------------------------------- */
  --rq-gold: #c5a66a;             /* JOB: crown, seal, identity on dark */
  --rq-gold-lift: #e0c48c;        /* JOB: identity TEXT on dark */
  --rq-star: #8f6520;             /* JOB: star rows on LIGHT surfaces */
  --rq-star-dark: #e0bd7a;        /* JOB: star rows on DARK surfaces */

  /* --- structure --------------------------------------------------------- */
  --rq-rule: rgb(23 26 32 / 16%);
  --rq-rule-soft: rgb(23 26 32 / 9%);
  --rq-rule-dark: rgb(251 248 242 / 20%);
  --rq-rule-dark-soft: rgb(251 248 242 / 11%);

  /* --- the width ladder. Neighbouring bands never share a width (§2). ----- */
  --rq-shell-hero: min(96vw, 1780px);
  --rq-shell-voices: min(94vw, 1560px);
  --rq-shell-feat: min(95vw, 1720px);
  --rq-shell-archive: min(94vw, 1660px);
  --rq-shell-contact: min(92vw, 1440px);
  --rq-shell-notes: min(90vw, 1180px);

  /* --- geometry: the site's two radius regimes ---------------------------- */
  --rq-r-island: 30px;
  --rq-r-plate: 22px;
  --rq-r-small: 14px;
  --rq-tap: 48px;
  --rq-ease: cubic-bezier(0.22, 1, 0.36, 1);
  --rq-lift: 0 30px 70px -50px rgb(13 20 35 / 55%);
  --rq-lift-soft: 0 22px 48px -34px rgb(13 20 35 / 45%);

  /* --- type ---------------------------------------------------------------
     Gloock and Manrope stay: they are the house language and the shared shell
     already loads them. What is new on this page is a THIRD role — a tabular
     record face for provenance, indices, counts and dates. No other Dukes page
     has one, and it is what makes the page read as an archive. */
  --rq-mono: ui-monospace, "SFMono-Regular", "Cascadia Mono", "Segoe UI Mono",
             "Roboto Mono", Consolas, "Liberation Mono", monospace;

  /* the site island ground */
  background: linear-gradient(180deg, #dee9e7 0%, #d9e5e5 30%, #d9e5e5 100%);
  color: var(--rq-ink);
}

.page--reviews ::selection { background: var(--rq-gold); color: var(--rq-navy); }
.page--reviews :focus-visible { outline: 3px solid #f0bd77; outline-offset: 4px; }

/* dukes.css paints .main cream on this route; that would hide the ground. */
.page--reviews .main {
  overflow: clip;
  background: transparent;
  padding-bottom: clamp(2.5rem, 5vw, 4.5rem);
}

.page--reviews .main h1,
.page--reviews .main h2,
.page--reviews .main h3 { text-wrap: balance; }

/* ==========================================================================
   0.2 NEUTRALISE THE RETIRED PASSES
   reviews-page.mjs binds to .rvw-feat__card, .rvw-method and .rvw-method__body,
   so those names stay on the page. dukes.css styles all of them from six
   retired designs, some at (0,3,0) via :last-child, which beats a plain
   .page--reviews .rq-* rule regardless of file order. Everything below either
   restates the plate at matching specificity or removes a legacy pseudo.
   ========================================================================== */

.page--reviews .rq-feat::after,
.page--reviews .rq-feat::before { content: none; }

.page--reviews .rq-method.rvw-method {
  max-width: var(--rq-shell-notes);
  border: 1px solid var(--rq-rule-dark-soft);
  border-radius: var(--rq-r-plate);
  background: var(--rq-navy);
  color: var(--rq-cream);
}
.page--reviews .rq-method .rvw-method__body { max-width: none; border: 0; background: transparent; }

/* ==========================================================================
   1. SHARED DEVICES — kicker, register, actions, chips, heads, record strip
   ========================================================================== */

.page--reviews .crumbs {
  margin: 0;
  max-width: none;
  padding: 0.85rem 4vw 0.4rem;
  background: transparent;
  border: 0;
}
.page--reviews .crumbs__list { width: var(--rq-shell-hero); margin-inline: auto; }
.page--reviews .crumbs__link,
.page--reviews .crumbs__current,
.page--reviews .crumbs__item::after { color: var(--rq-ink-soft); }
.page--reviews .crumbs__link:hover { color: var(--rq-ink); }

/* dukes.css line 2861 sets `p { max-width: var(--measure) }` globally. Every
   composed element below that happens to be a <p> — the register, the action
   rows, the score numeral, the index note — was being clipped to a reading
   measure and stranded left of centre. They are layout, not prose, so the
   measure is released here and re-applied only where text actually reads. */
.page--reviews .rq-register,
.page--reviews .rq-actions,
.page--reviews .rq-wall__act,
.page--reviews .rq-score__num,
.page--reviews .rq-index__note,
.page--reviews .rq-note { max-width: none; }
.page--reviews .rq-score__num { margin: 0; }
.page--reviews .rq-actions--centre { justify-content: center; }

/* ---- the section register: number + label + rule ---------------------- */
.page--reviews .rq-register {
  display: flex;
  align-items: center;
  gap: 0.85rem;
  margin: 0 0 clamp(1rem, 1.8vw, 1.6rem);
}
.page--reviews .rq-register__no {
  font-family: var(--rq-mono);
  font-size: 0.78rem;
  font-weight: 700;
  letter-spacing: 0.08em;
  color: var(--rq-ink-soft);
}
.page--reviews .rq-register__label {
  font-size: 0.74rem;
  font-weight: 800;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--rq-oxblood);
}
.page--reviews .rq-register__rule { flex: 1 1 auto; height: 1px; background: var(--rq-rule); }
.page--reviews .rq-register--dark .rq-register__no { color: rgb(251 248 242 / 62%); }
.page--reviews .rq-register--dark .rq-register__label { color: var(--rq-gold-lift); }
.page--reviews .rq-register--dark .rq-register__rule { background: var(--rq-rule-dark); }

/* ---- display type ---------------------------------------------------- */
.page--reviews .rq-h1 {
  margin: 0 0 0.75rem;
  font-family: var(--font-display);
  font-weight: 400;
  font-size: clamp(2.55rem, 5.1vw, 4.5rem);
  line-height: 1.02;
  letter-spacing: -0.012em;
  color: var(--rq-cream);
}
.page--reviews .rq-h2 {
  margin: 0 0 0.7rem;
  font-family: var(--font-display);
  font-weight: 400;
  font-size: clamp(2rem, 3.5vw, 3.15rem);
  line-height: 1.05;
  letter-spacing: -0.01em;
  color: var(--rq-ink);
}
.page--reviews .rq-h2--dark { color: var(--rq-cream); }
.page--reviews .rq-lede {
  margin: 0;
  max-width: 46ch;                /* §10.4: body measure <= 46ch */
  font-size: clamp(1rem, 1.15vw, 1.1rem);
  line-height: 1.62;
  color: var(--rq-ink-soft);
}
.page--reviews .rq-lede--dark { color: rgb(251 248 242 / 80%); }

/* the small illustrative-imagery line that sits under a media band */
.page--reviews .rq-note {
  margin: 0.85rem 0 0;
  font-family: var(--rq-mono);
  font-size: 0.68rem;
  letter-spacing: 0.09em;
  text-transform: uppercase;
  color: var(--rq-ink-soft);
}
.page--reviews .rq-note--dark { color: rgb(251 248 242 / 66%); }

/* ---- actions --------------------------------------------------------- */
.page--reviews .rq-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.55rem;
  min-height: var(--rq-tap);
  padding: 0.85rem 1.7rem;
  border: 0;
  border-radius: 10px;
  background: var(--rq-oxblood);
  color: var(--rq-cream);
  font-size: 0.95rem;
  font-weight: 800;
  text-decoration: none;
  cursor: pointer;
  transition: background-color 180ms var(--rq-ease), transform 180ms var(--rq-ease);
}
.page--reviews .rq-btn:active { transform: translateY(1px); }
@media (hover: hover) {
  .page--reviews .rq-btn:hover { background: var(--rq-oxblood-dk); transform: translateY(-2px); }
}
.page--reviews .rq-btn--ghost {
  background: transparent;
  color: var(--rq-ink);
  border: 1.5px solid var(--rq-rule);
}
@media (hover: hover) {
  .page--reviews .rq-btn--ghost:hover { background: rgb(23 26 32 / 6%); border-color: var(--rq-ink); }
}
.page--reviews .rq-btn--ghost-dark {
  background: transparent;
  color: var(--rq-cream);
  border: 1.5px solid var(--rq-rule-dark);
}
@media (hover: hover) {
  .page--reviews .rq-btn--ghost-dark:hover { background: rgb(251 248 242 / 10%); border-color: var(--rq-gold); }
}
.page--reviews .rq-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 0.7rem 0.85rem;
  margin: clamp(1.2rem, 2vw, 1.8rem) 0 0;
}

/* ---- THE RECORD STRIP (device 1) -------------------------------------- */
.page--reviews .rq-record {
  display: flex;
  flex-wrap: wrap;
  gap: 0.55rem 2.1rem;
  margin: clamp(1.3rem, 2.2vw, 2rem) 0 0;
  padding: clamp(0.9rem, 1.4vw, 1.15rem) 0 0;
  border-top: 1px solid var(--rq-rule-dark);
  list-style: none;
  font-family: var(--rq-mono);
  font-size: 0.715rem;
  letter-spacing: 0.11em;
  text-transform: uppercase;
}
.page--reviews .rq-record li { display: grid; gap: 0.28rem; }
.page--reviews .rq-record .rq-record__k { margin: 0; color: rgb(251 248 242 / 62%); }
.page--reviews .rq-record .rq-record__v { margin: 0; font-weight: 700; color: var(--rq-gold-lift); }
.page--reviews .rq-record--light { border-top-color: var(--rq-rule); }
.page--reviews .rq-record--light .rq-record__k { color: var(--rq-ink-soft); }
.page--reviews .rq-record--light .rq-record__v { color: var(--rq-oxblood); }

/* ---- stars ----------------------------------------------------------- */
.page--reviews .rq-stars {
  color: var(--rq-star);
  letter-spacing: 0.13em;
  font-size: 0.88rem;
  line-height: 1;
  white-space: nowrap;
}
.page--reviews .rq-stars--dark { color: var(--rq-star-dark); }
.page--reviews .rq-stars--lg { font-size: 1.15rem; }

/* ---- the source chip (Google) ---------------------------------------- */
.page--reviews .rq-source {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  min-height: var(--rq-tap);
  padding: 0.5rem 1rem;
  border-radius: 999px;
  border: 1px solid var(--rq-rule);
  background: transparent;
  color: var(--rq-ink);
  font-size: 0.85rem;
  font-weight: 700;
  text-decoration: none;
  white-space: nowrap;
  transition: background-color 180ms var(--rq-ease), border-color 180ms var(--rq-ease);
}
.page--reviews .rq-source__arrow { transition: transform 220ms var(--rq-ease); }
@media (hover: hover) {
  .page--reviews .rq-source:hover { background: rgb(23 26 32 / 5%); border-color: var(--rq-ink); }
  .page--reviews .rq-source:hover .rq-source__arrow { transform: translateX(3px); }
}
.page--reviews .rq-source--dark { border-color: var(--rq-rule-dark); color: var(--rq-cream); }
@media (hover: hover) {
  .page--reviews .rq-source--dark:hover { background: rgb(251 248 242 / 10%); border-color: var(--rq-gold); }
}
.page--reviews .rq-glogo {
  display: inline-grid;
  place-items: center;
  width: 22px;
  height: 22px;
  border-radius: 50%;
  background: var(--rq-cream);
  flex: 0 0 auto;
}
.page--reviews .rq-glogo svg { display: block; }

/* ---- the quotation-mark device (§10.3) -------------------------------- */
.page--reviews .rq-quote { margin: 0; }
.page--reviews .rq-quote p { margin: 0; }
.page--reviews .rq-quote::before {
  content: "\201C";
  display: block;
  font-family: var(--font-display);
  font-size: 2.4rem;
  line-height: 0.62;
  color: var(--rq-oxblood);
  margin-bottom: 0.3rem;
}
.page--reviews .rq-quote--dark::before { color: var(--rq-gold); }
.page--reviews .rq-quote--lead::before { font-size: 3.6rem; margin-bottom: 0.42rem; }

/* ---- the island itself ------------------------------------------------ */
.page--reviews .rq-band {
  position: relative;
  margin-inline: auto;
  margin-block: clamp(1.1rem, 2.2vw, 2rem);
  padding: clamp(2rem, 3.6vw, 3.6rem) clamp(1.3rem, 3.2vw, 3.2rem);
  border-radius: var(--rq-r-island);
  scroll-margin-top: calc(var(--head-h, 65px) + 84px);
}
.page--reviews .rq-band--dark { background: var(--rq-navy); color: var(--rq-cream); }
.page--reviews .rq-band--linen { background: var(--rq-linen); }

/* the texture layer (§10.3) — two bands only, never behind body copy */
.page--reviews .rq-band--textured::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 0;
  pointer-events: none;
  border-radius: inherit;
  background-image: repeating-linear-gradient(-45deg, rgb(23 26 32 / 5%) 0 1px, transparent 1px 15px);
  mask-image: linear-gradient(to bottom right, #000, transparent 62%);
}
.page--reviews .rq-band--dark.rq-band--textured::before {
  background-image: repeating-linear-gradient(-45deg, rgb(251 248 242 / 6%) 0 1px, transparent 1px 15px);
}
.page--reviews .rq-band--textured > * { position: relative; z-index: 1; }

/* the three-layer nest (§4.2): band field -> frame -> plate */
.page--reviews .rq-frame {
  padding: clamp(20px, 2.6vw, 38px);
  border-radius: var(--rq-r-plate);
  background: var(--rq-cream);
  border: 1px solid var(--rq-rule-soft);
  box-shadow: var(--rq-lift);
}

/* ==========================================================================
   2. MEDIA
   Every image on this page is Aarav's own generated art from the repo
   library. Nothing is sourced, nothing is stock. The crown placeholder is
   kept for any slot that later empties.
   ========================================================================== */

.page--reviews .rq-media {
  position: relative;
  display: block;
  margin: 0;
  aspect-ratio: var(--rq-media-ar, 3 / 2);
  border-radius: var(--rq-r-plate);
  overflow: hidden;
  border: 1px solid var(--rq-rule);
  background: var(--rq-paper);
}
.page--reviews .rq-media--on-dark { border-color: var(--rq-rule-dark-soft); }
.page--reviews .rq-media img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  /* the house grade: never baked into the asset */
  filter: brightness(0.97) contrast(1.04) saturate(1.02);
}
.page--reviews .rq-slot {
  position: relative;
  display: block;
  margin: 0;
  aspect-ratio: var(--rq-media-ar, 3 / 2);
  border-radius: var(--rq-r-plate);
  overflow: hidden;
  border: 1px solid var(--rq-rule);
  background: linear-gradient(160deg, rgb(18 32 58 / 10%) 0%, rgb(18 32 58 / 22%) 100%), var(--rq-paper);
}
.page--reviews .rq-slot__crown {
  position: absolute;
  inset: 0;
  margin: auto;
  width: clamp(88px, 32%, 168px);
  height: auto;
  opacity: 0.15;
}
.page--reviews .rq-sprite { position: absolute; width: 0; height: 0; overflow: hidden; }

/* ==========================================================================
   3. CHAPTER 01 — THE HERO ISLAND
   Copy left, the score card right, the voice index across the foot.
   ========================================================================== */

.page--reviews .rq-hero {
  width: var(--rq-shell-hero);
  margin-top: clamp(0.5rem, 1.2vw, 1rem);
  padding: clamp(2.2rem, 4.4vw, 4.2rem) clamp(1.4rem, 3.6vw, 3.6rem) clamp(1.8rem, 3vw, 2.8rem);
  border-radius: 30px 30px 84px 30px;
  background:
    radial-gradient(118% 128% at 86% -12%, rgb(45 65 99 / 85%) 0%, rgb(45 65 99 / 0%) 56%),
    var(--rq-navy);
  color: var(--rq-cream);
}
.page--reviews .rq-hero__grid {
  display: grid;
  grid-template-columns: minmax(0, 1.12fr) minmax(0, 0.88fr);
  gap: clamp(1.8rem, 3.4vw, 3.6rem);
  align-items: start;
}
.page--reviews .rq-hero__copy { min-width: 0; }
.page--reviews .rq-hero__lede { max-width: 44ch; color: rgb(251 248 242 / 82%); }

/* ---- THE SCORE CARD (device 2) --------------------------------------- */
.page--reviews .rq-score {
  display: grid;
  gap: clamp(0.9rem, 1.4vw, 1.25rem);
  padding: clamp(1.5rem, 2.4vw, 2.2rem);
  border-radius: var(--rq-r-plate);
  background: var(--rq-cream);
  border: 1px solid var(--rq-rule-soft);
  box-shadow: var(--rq-lift);
  color: var(--rq-ink);
}
.page--reviews .rq-score__top {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  align-items: center;
  gap: 0 clamp(0.9rem, 1.6vw, 1.3rem);
}
.page--reviews .rq-score__num {
  font-family: var(--font-display);
  font-weight: 400;
  font-size: clamp(3.6rem, 6vw, 5.4rem);
  line-height: 0.82;
  color: var(--rq-navy);
}
.page--reviews .rq-score__of {
  display: block;
  font-family: var(--rq-mono);
  font-size: 0.7rem;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--rq-ink-soft);
  margin-top: 0.55rem;
}
.page--reviews .rq-score__label { display: grid; gap: 0.35rem; min-width: 0; }
.page--reviews .rq-score__count {
  font-family: var(--font-display);
  font-weight: 400;
  font-size: clamp(1.15rem, 1.6vw, 1.45rem);
  line-height: 1.12;
  color: var(--rq-ink);
}
.page--reviews .rq-score__when {
  font-family: var(--rq-mono);
  font-size: 0.7rem;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--rq-ink-soft);
}
.page--reviews .rq-score__facts { display: grid; margin: 0; border-top: 1px solid var(--rq-rule-soft); }
.page--reviews .rq-score__facts > div {
  display: grid;
  grid-template-columns: minmax(7.5rem, 0.42fr) 1fr;
  gap: 0.35rem 1rem;
  padding: 0.72rem 0;
  border-bottom: 1px solid var(--rq-rule-soft);
}
.page--reviews .rq-score__facts dt {
  margin: 0;
  font-family: var(--rq-mono);
  font-size: 0.7rem;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--rq-ink-soft);
  align-self: center;
}
.page--reviews .rq-score__facts dd {
  margin: 0;
  font-size: 0.92rem;
  font-weight: 600;
  line-height: 1.45;
  color: var(--rq-ink);
}
.page--reviews .rq-score .rq-source { align-self: start; }

/* ---- THE VOICE INDEX (device 3) --------------------------------------- */
.page--reviews .rq-index {
  margin-top: clamp(1.6rem, 2.6vw, 2.4rem);
  padding-top: clamp(1.2rem, 2vw, 1.7rem);
  border-top: 1px solid var(--rq-rule-dark);
}
.page--reviews .rq-index__head {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  justify-content: space-between;
  gap: 0.5rem 1.2rem;
  margin-bottom: 0.95rem;
}
.page--reviews .rq-index__title {
  margin: 0;
  font-size: 0.74rem;
  font-weight: 800;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--rq-gold-lift);
}
.page--reviews .rq-index__note {
  margin: 0;
  font-family: var(--rq-mono);
  font-size: 0.7rem;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: rgb(251 248 242 / 62%);
}
.page--reviews .rq-index__list {
  display: flex;
  flex-wrap: wrap;
  gap: 0.6rem;
  margin: 0;
  padding: 0;
  list-style: none;
}
.page--reviews .rq-voice {
  display: inline-flex;
  align-items: center;
  gap: 0.6rem;
  min-height: var(--rq-tap);
  padding: 0.35rem 1rem 0.35rem 0.35rem;
  border-radius: 999px;
  border: 1px solid var(--rq-rule-dark-soft);
  background: rgb(251 248 242 / 6%);
  color: var(--rq-cream);
  text-decoration: none;
  transition: background-color 180ms var(--rq-ease), border-color 180ms var(--rq-ease), transform 180ms var(--rq-ease);
}
.page--reviews .rq-voice__face { width: 38px; height: 38px; flex: 0 0 auto; }
.page--reviews .rq-voice__who { display: grid; gap: 0.1rem; }
.page--reviews .rq-voice__name { font-size: 0.9rem; font-weight: 700; line-height: 1.15; }
.page--reviews .rq-voice .rq-stars { font-size: 0.72rem; }
@media (hover: hover) {
  .page--reviews .rq-voice:hover {
    background: rgb(251 248 242 / 12%);
    border-color: var(--rq-gold);
    transform: translateY(-2px);
  }
}
.page--reviews .rq-voice--more {
  padding-inline: 1.1rem;
  background: transparent;
  border-style: dashed;
  border-color: var(--rq-rule-dark);
  font-family: var(--rq-mono);
  font-size: 0.74rem;
  letter-spacing: 0.09em;
  text-transform: uppercase;
  font-weight: 700;
  color: var(--rq-gold-lift);
}

/* ==========================================================================
   4. CHAPTER 02 — THE VOICES LEDGER (linen island)
   STICKY media left (Aarav, 20 Aug: "make them still, keep it in the
   middle"), four numbered themes right.
   ========================================================================== */

.page--reviews .rq-voices { width: var(--rq-shell-voices); }
.page--reviews .rq-head {
  display: grid;
  grid-template-columns: minmax(0, 1.35fr) minmax(0, 0.65fr);
  align-items: end;
  gap: clamp(1rem, 2.4vw, 2.6rem);
  margin-bottom: clamp(1.6rem, 2.6vw, 2.4rem);
}
.page--reviews .rq-head__note {
  margin: 0 0 0 auto;
  max-width: 40ch;
  text-align: right;
  font-size: 0.94rem;
  line-height: 1.55;
  color: var(--rq-ink-soft);
}
.page--reviews .rq-head__note strong { display: block; color: var(--rq-ink); }
.page--reviews .rq-head--dark .rq-head__note { color: rgb(251 248 242 / 76%); }
.page--reviews .rq-head--dark .rq-head__note strong { color: var(--rq-cream); }

.page--reviews .rq-voices__grid {
  display: grid;
  grid-template-columns: minmax(0, 0.7fr) minmax(0, 1.3fr);
  gap: clamp(1.4rem, 2.8vw, 2.8rem);
  align-items: start;
}
/* THE STICKY LANE. The media holds its position while the four themes scroll
   past it. The offset clears the header AND the floating section pill, and the
   plate is sized so the whole thing plus its note fits one 900px viewport,
   which is what makes it read as "still" rather than as a slow crawl. */
.page--reviews .rq-voices__media {
  position: sticky;
  top: calc(var(--head-h, 65px) + 96px);
  align-self: start;
}
.page--reviews .rq-voices__media .rq-media { --rq-media-ar: 4 / 5; }
.page--reviews .rq-voices__ledger { display: grid; gap: clamp(0.8rem, 1.3vw, 1.1rem); }

.page--reviews .rq-theme {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  gap: 0.3rem clamp(0.9rem, 1.6vw, 1.5rem);
  margin: 0;
  padding: clamp(1.2rem, 1.9vw, 1.7rem) clamp(1.2rem, 2vw, 1.8rem);
  border-radius: var(--rq-r-plate);
  background: var(--rq-cream);
  border: 1px solid var(--rq-rule-soft);
  box-shadow: var(--rq-lift-soft);
  transition: transform 220ms var(--rq-ease), box-shadow 220ms var(--rq-ease);
}
@media (hover: hover) {
  .page--reviews .rq-theme:hover { transform: translateY(-3px); box-shadow: var(--rq-lift); }
}
.page--reviews .rq-theme__no {
  grid-row: 1 / span 3;
  font-family: var(--font-display);
  font-weight: 400;
  font-size: clamp(2.1rem, 3.2vw, 3rem);
  line-height: 0.86;
  color: var(--rq-oxblood);
}
.page--reviews .rq-theme__title {
  margin: 0 0 0.5rem;
  font-family: var(--font-display);
  font-weight: 400;
  font-size: clamp(1.2rem, 1.7vw, 1.55rem);
  line-height: 1.15;
  color: var(--rq-ink);
}
.page--reviews .rq-theme__quote p { font-size: 1rem; line-height: 1.6; color: var(--rq-ink); max-width: 46ch; }
.page--reviews .rq-theme__foot {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 0.6rem 1rem;
  margin-top: 1rem;
  padding-top: 0.85rem;
  border-top: 1px solid var(--rq-rule-soft);
}
.page--reviews .rq-who { display: inline-flex; align-items: center; gap: 0.6rem; min-width: 0; }
.page--reviews .rq-who__face { width: 40px; height: 40px; flex: 0 0 auto; }
.page--reviews .rq-who__name { font-size: 0.92rem; font-weight: 700; color: var(--rq-ink); }

/* letters variant of the shared .face — this page's own colouring */
.page--reviews .face--letters {
  background: var(--rq-navy-2);
  color: var(--rq-cream);
  font-family: var(--font-display);
  font-weight: 400;
  font-size: 0.95rem;
  letter-spacing: 0.02em;
  border: 0;
}
.page--reviews .rq-voice .face--letters { background: var(--rq-oxblood); }

/* ==========================================================================
   5. CHAPTER 03 — FEATURED (dark island)
   Portrait | the lead testimony at display size | two supports.
   ========================================================================== */

.page--reviews .rq-feature { width: var(--rq-shell-feat); }
.page--reviews .rq-feat__grid {
  display: grid;
  grid-template-columns: minmax(0, 0.68fr) minmax(0, 1.32fr) minmax(0, 1fr);
  gap: clamp(1.1rem, 1.9vw, 1.7rem);
  align-items: stretch;
}
.page--reviews .rq-feat.rvw-feat__card {
  display: flex;
  flex-direction: column;
  gap: 1rem;
  margin: 0;
  padding: clamp(1.4rem, 2.2vw, 2.1rem);
  border-radius: var(--rq-r-plate);
  border: 1px solid var(--rq-rule-dark-soft);
  background: var(--rq-navy-2);
  color: var(--rq-cream);
  transition: transform 220ms var(--rq-ease), background-color 220ms var(--rq-ease);
}
@media (hover: hover) {
  .page--reviews .rq-feat.rvw-feat__card:hover { transform: translateY(-3px); background: var(--rq-navy-3); }
}
.page--reviews .rq-feat--lead.rvw-feat__card {
  background: var(--rq-cream);
  color: var(--rq-ink);
  border-color: var(--rq-rule-soft);
  box-shadow: var(--rq-lift);
  justify-content: center;
  gap: 1.2rem;
}
@media (hover: hover) {
  .page--reviews .rq-feat--lead.rvw-feat__card:hover { background: var(--rq-cream); transform: translateY(-3px); }
}
.page--reviews .rq-feat__head {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  align-items: center;
  gap: 0.75rem;
}
.page--reviews .rq-feat__face { width: 46px; height: 46px; flex: 0 0 auto; }
.page--reviews .rq-feat__who { display: grid; gap: 0.12rem; min-width: 0; }
.page--reviews .rq-feat__name {
  font-family: var(--font-display);
  font-style: normal;
  font-weight: 400;
  font-size: 1.1rem;
  line-height: 1.15;
}
.page--reviews .rq-feat__when {
  font-family: var(--rq-mono);
  font-size: 0.68rem;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: rgb(251 248 242 / 66%);
}
.page--reviews .rq-feat--lead .rq-feat__when { color: var(--rq-ink-soft); }
.page--reviews .rq-feat__quote p { font-size: 1.02rem; line-height: 1.6; color: rgb(251 248 242 / 92%); max-width: 46ch; }
.page--reviews .rq-feat--lead .rq-feat__quote p {
  font-family: var(--font-display);
  font-weight: 400;
  font-size: clamp(1.45rem, 2.1vw, 2rem);
  line-height: 1.24;
  color: var(--rq-ink);
  max-width: 22ch;
}
.page--reviews .rq-feat__stack { display: grid; gap: clamp(1.1rem, 1.9vw, 1.7rem); align-content: stretch; }
.page--reviews .rq-feat__stack .rq-feat.rvw-feat__card { height: 100%; }
.page--reviews .rq-feat__media { display: grid; align-content: start; gap: 0.7rem; }
.page--reviews .rq-feat__media .rq-media { --rq-media-ar: 2 / 3; }

/* ==========================================================================
   6. CHAPTER 04 — THE REVIEW WALL (the page's one full-bleed band)
   The homepage rw2 scrolling-columns pattern, ported here and carrying all
   24 reviews. Motion is CSS only: each column holds two identical lists and
   runs a keyframe to -50%, so the loop is seamless. The seam gap lives as
   padding-bottom on each list; a flex `gap` would offset the loop by g/2 and
   visibly jump. Hover, focus-within and the explicit pause all hold it, and
   reduced motion gets a still grid of the 24 originals with no control.
   ========================================================================== */

.page--reviews .rq-archive {
  position: relative;
  width: 100vw;
  margin-inline: calc(50% - 50vw);
  margin-block: clamp(1.6rem, 3vw, 3rem);
  padding: clamp(2.4rem, 4.2vw, 4.4rem) 0 clamp(2.4rem, 4vw, 4rem);
  background: var(--rq-mist);
  scroll-margin-top: calc(var(--head-h, 65px) + 84px);
}
.page--reviews .rq-archive__inner { width: var(--rq-shell-archive); margin-inline: auto; }
.page--reviews .rq-archive__head {
  display: grid;
  grid-template-columns: minmax(0, 1.3fr) minmax(0, 0.7fr);
  align-items: end;
  gap: clamp(1rem, 2.4vw, 2.6rem);
  margin-bottom: clamp(1.6rem, 2.6vw, 2.4rem);
}

/* ---- the stage: one warm paper plate the columns live on -------------- */
.page--reviews .rq-wall {
  position: relative;
  padding: clamp(1.1rem, 1.8vw, 1.8rem);
  border-radius: 26px;
  background: var(--rq-paper);
  border: 1px solid var(--rq-rule-soft);
}
.page--reviews .rq-wall__pause {
  position: absolute;
  top: clamp(0.9rem, 1.4vw, 1.4rem);
  right: clamp(0.9rem, 1.4vw, 1.4rem);
  z-index: 3;
  display: inline-flex;
  align-items: center;
  gap: 0.55rem;
  min-height: var(--rq-tap);
  padding: 0.5rem 1.1rem;
  border: 1px solid var(--rq-rule);
  border-radius: 999px;
  background: var(--rq-cream);
  color: var(--rq-ink);
  font-size: 0.8rem;
  font-weight: 750;
  cursor: pointer;
}
.page--reviews .rq-wall__pause:focus-visible { outline: 3px solid #f0bd77; outline-offset: 2px; }
.page--reviews .rq-wall__glyph {
  width: 9px;
  height: 11px;
  border-left: 3px solid currentColor;
  border-right: 3px solid currentColor;
}
.page--reviews .rq-wall[data-paused] .rq-wall__glyph {
  width: 0;
  height: 0;
  border: 0;
  border-left: 9px solid currentColor;
  border-top: 6px solid transparent;
  border-bottom: 6px solid transparent;
}

.page--reviews .rq-wall__window {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: clamp(1rem, 1.6vw, 1.5rem);
  max-height: clamp(560px, 78vh, 780px);
  overflow: hidden;
  -webkit-mask-image: linear-gradient(to bottom, transparent, #000 9%, #000 91%, transparent);
  mask-image: linear-gradient(to bottom, transparent, #000 9%, #000 91%, transparent);
}
.page--reviews .rq-wall__col {
  display: flex;
  flex-direction: column;
  animation: rq-wall-scroll var(--rq-wall-dur, 52s) linear infinite;
  will-change: transform;
  min-width: 0;
}
@keyframes rq-wall-scroll {
  from { transform: translateY(0); }
  to { transform: translateY(-50%); }
}
.page--reviews .rq-wall__list {
  display: grid;
  gap: clamp(1rem, 1.6vw, 1.5rem);
  margin: 0;
  padding: 0 0 clamp(1rem, 1.6vw, 1.5rem);
  list-style: none;
}
.page--reviews .rq-wall__window:hover .rq-wall__col,
.page--reviews .rq-wall__col:focus-within,
.page--reviews .rq-wall[data-paused] .rq-wall__col { animation-play-state: paused; }

/* ---- the card, now carrying an image ---------------------------------- */
.page--reviews .rq-card {
  display: flex;
  flex-direction: column;
  gap: 0.9rem;
  margin: 0;
  padding: 0 0 clamp(1.1rem, 1.5vw, 1.4rem);
  overflow: hidden;
  border-radius: var(--rq-r-plate);
  background: var(--rq-cream);
  border: 1px solid var(--rq-rule-soft);
  box-shadow: var(--rq-lift-soft);
}
@media (hover: hover) and (prefers-reduced-motion: no-preference) {
  .page--reviews .rq-card { transition: transform 0.25s var(--rq-ease), box-shadow 0.25s var(--rq-ease); }
  .page--reviews .rq-card:hover { transform: translateY(-5px); box-shadow: var(--rq-lift); }
}
.page--reviews .rq-card__media {
  position: relative;
  display: block;
  margin: 0;
  aspect-ratio: 16 / 10;
  overflow: hidden;
  background: var(--rq-paper);
}
.page--reviews .rq-card__media img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  filter: brightness(0.97) contrast(1.04) saturate(1.02);
}
.page--reviews .rq-card__body {
  display: flex;
  flex-direction: column;
  gap: 0.9rem;
  padding: 0 clamp(1.1rem, 1.5vw, 1.4rem);
}
.page--reviews .rq-card__head {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  align-items: center;
  gap: 0.7rem;
}
.page--reviews .rq-card__face { width: 42px; height: 42px; flex: 0 0 auto; }
.page--reviews .rq-card__who { display: grid; gap: 0.1rem; min-width: 0; }
.page--reviews .rq-card__name {
  font-family: var(--font-display);
  font-style: normal;
  font-weight: 400;
  font-size: 1.02rem;
  line-height: 1.15;
  color: var(--rq-ink);
}
.page--reviews .rq-card__when {
  font-family: var(--rq-mono);
  font-size: 0.66rem;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--rq-ink-soft);
}
.page--reviews .rq-card__no {
  font-family: var(--rq-mono);
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.06em;
  color: #6b6f65;
}
.page--reviews .rq-card__quote p { font-size: 0.97rem; line-height: 1.58; color: var(--rq-ink); }
.page--reviews .rq-card__foot {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 0.6rem 0.9rem;
  margin-top: auto;
  padding-top: 0.85rem;
  border-top: 1px solid var(--rq-rule-soft);
}
.page--reviews .rq-wall__act { display: flex; justify-content: center; margin: clamp(1.4rem, 2.4vw, 2.2rem) 0 0; }

/* ---- the method plate ------------------------------------------------- */
.page--reviews .rq-method {
  width: var(--rq-shell-notes);
  margin: clamp(1.6rem, 2.8vw, 2.6rem) auto 0;
  border-radius: var(--rq-r-plate);
  background: var(--rq-navy);
  color: var(--rq-cream);
  border: 1px solid var(--rq-rule-dark-soft);
  overflow: hidden;
}
.page--reviews .rq-method__summary {
  display: flex;
  align-items: center;
  gap: 1rem;
  min-height: var(--rq-tap);
  padding: clamp(1rem, 1.6vw, 1.4rem) clamp(1.1rem, 2vw, 1.8rem);
  cursor: pointer;
  list-style: none;
}
.page--reviews .rq-method__summary::-webkit-details-marker { display: none; }
.page--reviews .rq-method__titles { display: grid; gap: 0.18rem; flex: 1 1 auto; min-width: 0; }
.page--reviews .rq-method__label {
  font-family: var(--font-display);
  font-weight: 400;
  font-size: clamp(1.1rem, 1.5vw, 1.35rem);
  line-height: 1.2;
  color: var(--rq-cream);
}
.page--reviews .rq-method__sub {
  font-family: var(--rq-mono);
  font-size: 0.68rem;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--rq-gold-lift);
}
.page--reviews .rq-method__pm {
  position: relative;
  width: 34px;
  height: 34px;
  flex: 0 0 auto;
  border-radius: 50%;
  border: 1px solid var(--rq-rule-dark);
}
.page--reviews .rq-method__pm::before,
.page--reviews .rq-method__pm::after {
  content: "";
  position: absolute;
  inset: 0;
  margin: auto;
  background: var(--rq-gold);
  transition: transform 220ms var(--rq-ease), opacity 220ms var(--rq-ease);
}
.page--reviews .rq-method__pm::before { width: 13px; height: 1.6px; }
.page--reviews .rq-method__pm::after { width: 1.6px; height: 13px; }
.page--reviews .rq-method[open] .rq-method__pm::after { transform: rotate(90deg); opacity: 0; }
.page--reviews .rq-method__body { padding: 0 clamp(1.1rem, 2vw, 1.8rem) clamp(1.1rem, 1.8vw, 1.6rem); }
.page--reviews .rq-method__list {
  display: grid;
  gap: 0.6rem;
  margin: 0;
  padding: 0 0 0 1.1rem;
  color: rgb(251 248 242 / 84%);
  font-size: 0.95rem;
  line-height: 1.6;
  max-width: 62ch;
}

/* ==========================================================================
   7. CHAPTER 05 — THE CLOSE (dark bookend island)
   ========================================================================== */

.page--reviews .rq-close {
  width: var(--rq-shell-contact);
  border-radius: 30px 30px 84px 30px;
  background:
    radial-gradient(112% 130% at 12% -14%, rgb(45 65 99 / 82%) 0%, rgb(45 65 99 / 0%) 58%),
    var(--rq-navy);
  color: var(--rq-cream);
  margin-bottom: clamp(1.6rem, 3vw, 3rem);
}
.page--reviews .rq-close__grid {
  display: grid;
  grid-template-columns: minmax(0, 1.05fr) minmax(0, 0.95fr);
  gap: clamp(1.6rem, 3vw, 3.2rem);
  align-items: center;
}
.page--reviews .rq-close__media .rq-media { --rq-media-ar: 3 / 2; }

/* ==========================================================================
   8. RESPONSIVE
   ========================================================================== */

@media (max-width: 74.99em) {
  .page--reviews .rq-feat__grid { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); }
  .page--reviews .rq-feat__media { grid-column: 1 / -1; }
  /* the display crop is capped; a 2:3 frame spanning a full tablet row would
     be 1150px of image */
  .page--reviews .rq-feat__media .rq-media { --rq-media-ar: auto; height: clamp(17rem, 40vw, 24rem); }
  .page--reviews .rq-wall__col--3 { display: none; }
  .page--reviews .rq-wall__window { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 61.99em) {
  .page--reviews .rq-hero__grid,
  .page--reviews .rq-voices__grid,
  .page--reviews .rq-close__grid { grid-template-columns: minmax(0, 1fr); }
  /* sticky is meaningless in a single column: the media would pin over the
     content it is meant to sit beside */
  .page--reviews .rq-voices__media { position: static; }
  .page--reviews .rq-voices__media .rq-media { --rq-media-ar: 16 / 10; }
  .page--reviews .rq-head,
  .page--reviews .rq-archive__head { grid-template-columns: minmax(0, 1fr); align-items: start; }
  .page--reviews .rq-head__note { text-align: left; margin-inline: 0; }
  .page--reviews .rq-feat__grid { grid-template-columns: minmax(0, 1fr); }
  .page--reviews .rq-close__grid > .rq-close__media { order: -1; }
}

@media (max-width: 47.99em) {
  .page--reviews .rq-hero,
  .page--reviews .rq-close { border-radius: 22px 22px 52px 22px; }
  .page--reviews .rq-band { border-radius: 22px; padding-inline: clamp(1rem, 4vw, 1.5rem); }
  .page--reviews .rq-wall__col--2 { display: none; }
  .page--reviews .rq-wall__window { grid-template-columns: 1fr; max-height: min(74vh, 580px); }
  .page--reviews .rq-wall__pause { position: static; margin: 0 0 1rem; }
  .page--reviews .rq-record { gap: 0.7rem 1.4rem; }
  .page--reviews .rq-theme { grid-template-columns: minmax(0, 1fr); }
  .page--reviews .rq-theme__no { grid-row: auto; font-size: 1.9rem; }
  .page--reviews .rq-feat--lead .rq-feat__quote p { max-width: none; }
  .page--reviews .rq-score__top { grid-template-columns: minmax(0, 1fr); gap: 0.6rem; }
  .page--reviews .rq-score__facts > div { grid-template-columns: minmax(0, 1fr); gap: 0.2rem; }
}

@media (max-width: 30em) {
  .page--reviews .rq-btn,
  .page--reviews .rq-actions > * { width: 100%; }
}

/* ==========================================================================
   9. MOTION DISCIPLINE
   ========================================================================== */

@media (prefers-reduced-motion: reduce) {
  .page--reviews .rq-btn,
  .page--reviews .rq-source,
  .page--reviews .rq-source__arrow,
  .page--reviews .rq-voice,
  .page--reviews .rq-theme,
  .page--reviews .rq-card,
  .page--reviews .rq-feat,
  .page--reviews .rq-method__pm::before,
  .page--reviews .rq-method__pm::after {
    transition: none !important;
    transform: none !important;
  }
  /* the wall becomes a still grid of the 24 originals */
  .page--reviews .rq-wall__col { animation: none; }
  .page--reviews .rq-wall [data-rq-wall-dupe] { display: none; }
  .page--reviews .rq-wall__window {
    max-height: none;
    overflow: visible;
    -webkit-mask-image: none;
    mask-image: none;
  }
  .page--reviews .rq-wall__col--2,
  .page--reviews .rq-wall__col--3 { display: flex; }
  .page--reviews .rq-wall__pause { display: none; }
  .page--reviews .rq-wall__list { padding-bottom: 0; }
  .page--reviews .rq-voices__media { position: static; }
}

@media print {
  .page--reviews .rq-band,
  .page--reviews .rq-archive { box-shadow: none; }
  .page--reviews .rq-wall__col { animation: none; }
  .page--reviews .rq-wall__window { max-height: none; overflow: visible; mask-image: none; }
  .page--reviews .rq-wall [data-rq-wall-dupe] { display: none; }
}
