/* ============================================================
   Client reviews carousel. Shared by every page that has the
   .reviews-text section; behaviour lives in /reviews.js.
   The reviews stay as static HTML in each page so they remain
   crawlable. One row, 4 / 2 / 1 cards depending on width.
   ============================================================ */
.reviews-text{padding:72px 0;background:#fff;}
.reviews-text .rvx-container{max-width:1680px;margin:0 auto;padding:0 32px;}
.rvx-intro{text-align:center;max-width:660px;margin:0 auto 40px;}
.rvx-intro h2{font-size:clamp(28px,4vw,40px);line-height:1.1;letter-spacing:-.02em;margin:12px 0 10px;}
.rvx-intro p{color:#55606e;font-size:17px;margin:0;}

.rvx-carousel{position:relative;}
/* The padding and matching negative margin stop the track clipping card shadows. */
.rvx-track{--rvx-gap:18px;--rvx-visible:4;display:flex;gap:var(--rvx-gap);overflow-x:auto;scroll-snap-type:x mandatory;scroll-padding-left:8px;scrollbar-width:none;-webkit-overflow-scrolling:touch;padding:8px 8px 32px;margin:-8px -8px -32px;}
.rvx-track::-webkit-scrollbar{display:none;}
.rvx-track:focus-visible{outline:2px solid #E23A6A;outline-offset:2px;border-radius:14px;}

.rvx-card{flex:0 0 calc((100% - var(--rvx-gap) * (var(--rvx-visible) - 1)) / var(--rvx-visible));box-sizing:border-box;scroll-snap-align:start;margin:0;background:#fff;border:1px solid rgba(16,16,21,.1);border-radius:14px;padding:22px;box-shadow:0 8px 24px rgba(16,16,21,.06);display:flex;flex-direction:column;gap:14px;}
.rvx-head{display:flex;align-items:center;gap:12px;}
.rvx-av{width:44px;height:44px;border-radius:50%;object-fit:cover;flex:0 0 44px;}
.rvx-av-initial{flex:0 0 44px;height:44px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;color:#fff;font-weight:700;font-size:18px;}
.rvx-name{font-weight:700;font-size:15px;color:#16161a;line-height:1.2;}
.rvx-src{display:flex;align-items:center;gap:5px;font-size:12.5px;color:#8a93a0;margin-top:3px;}
.rvx-src svg{width:13px;height:13px;}
.rvx-stars{color:#FBBC05;letter-spacing:2px;font-size:15px;}
.rvx-quote{margin:0;font-size:15.5px;line-height:1.6;color:#20262e;}
.rvx-more-wrap{text-align:center;margin-top:34px;}

.rvx-nav{position:absolute;top:50%;z-index:2;width:44px;height:44px;margin-top:-22px;padding:0;display:flex;align-items:center;justify-content:center;border-radius:50%;background:#fff;border:1px solid rgba(16,16,21,.14);box-shadow:0 8px 20px rgba(16,16,21,.14);color:#16161a;cursor:pointer;transition:background 200ms,color 200ms,border-color 200ms;}
.rvx-nav[hidden]{display:none;}
.rvx-nav svg{width:20px;height:20px;}
.rvx-nav:hover{background:#E23A6A;border-color:#E23A6A;color:#fff;}
.rvx-nav:focus-visible{outline:2px solid #E23A6A;outline-offset:2px;}
.rvx-prev{left:-22px;}
.rvx-next{right:-22px;}

@media (max-width:1024px){
  .rvx-track{--rvx-visible:2;}
}
@media (max-width:768px){
  .reviews-text{padding-top:56px;padding-bottom:56px;}
  .reviews-text .rvx-container{padding:0 24px;}
  /* Arrows move below the row so they don't sit on top of the text. */
  .rvx-carousel{display:flex;flex-wrap:wrap;justify-content:center;gap:12px;}
  .rvx-track{flex:0 0 calc(100% + 16px);max-width:calc(100% + 16px);}
  .rvx-nav{position:static;margin-top:12px;}
}
@media (max-width:560px){
  /* One card, with the next one peeking in to signal the row can be swiped. */
  .rvx-card{flex-basis:86%;}
}
@media (max-width:480px){
  .reviews-text{padding-top:44px;padding-bottom:44px;}
}
