.reviews-summary{margin:0 0 18px;max-width:100%}
.reviews-summary-line{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:18px;color:#f5f5f1;margin:0;line-height:1.3}
.reviews-stars{display:inline-flex;gap:2px;flex-shrink:0}
.reviews-star{color:#4b5750;font-size:18px;line-height:1}
.reviews-star.is-filled{color:var(--red,#d9252d)}
.reviews-number{color:#f5f5f1;font-weight:600;word-break:break-word}
.reviews-asof{margin:6px 0 0;font-size:13px;color:#b6c0b9}
.reviews-carousel{margin:18px 0 0;max-width:100%;box-sizing:border-box}
.reviews-carousel-viewport{overflow:hidden;max-width:100%}
.reviews-carousel-track{display:flex;transition:transform .45s ease}
.reviews-carousel-track.reviews-no-motion{transition:none}
.reviews-slide{min-width:0;box-sizing:border-box;background:#0b0f0c;border:1px solid #29372e;border-radius:14px;padding:18px;display:flex;flex-direction:column}
.reviews-carousel-static .reviews-carousel-track{flex-wrap:nowrap;justify-content:flex-start}
.reviews-slide-head{display:flex;align-items:flex-start;gap:10px}
.reviews-slide-head-text{min-width:0;flex:1 1 auto}
.reviews-avatar-wrap{flex:0 0 auto;width:44px;height:44px}
.reviews-avatar{display:block;width:44px;height:44px;border-radius:50%;object-fit:cover;background:#1c241e}
.reviews-avatar-initials{display:flex;align-items:center;justify-content:center;color:#f5f5f1;font-size:15px;font-weight:700;border:1px solid var(--green,#9acc81)}
.reviews-slide-text{color:#f5f5f1;font-size:15px;line-height:1.55;margin:10px 0 0;overflow-wrap:anywhere;display:-webkit-box;-webkit-line-clamp:6;-webkit-box-orient:vertical;overflow:hidden;flex:1 1 auto}
.reviews-slide-meta{color:var(--green,#9acc81);font-size:13px;margin:4px 0 0}
.reviews-slide-author-link{color:inherit;text-decoration:underline;text-underline-offset:2px}
.reviews-slide-author-link:hover,.reviews-slide-author-link:focus{color:var(--red,#d9252d)}
.reviews-slide-google-tag{display:block;color:#b6c0b9;font-weight:400;font-size:12px;margin-top:10px}
.reviews-carousel-controls{display:flex;align-items:center;justify-content:center;gap:12px;margin-top:16px;flex-wrap:wrap}
.reviews-nav{background:transparent;border:1px solid #354339;color:#f5f5f1;width:36px;height:36px;border-radius:50%;font-size:18px;line-height:1;cursor:pointer;flex-shrink:0}
.reviews-nav:hover:not(:disabled){border-color:var(--red,#d9252d);color:var(--red,#d9252d)}
.reviews-nav:disabled{opacity:.4;cursor:default}
.reviews-play-toggle{font-size:13px}
.reviews-carousel-status{color:#b6c0b9;font-size:13px;min-width:90px;text-align:center}

/* Enhanced layout: full-width section with a top info row (left text / right label+rating+CTA)
   and the carousel spanning the full content width below it. Only applied once JS has
   successfully rendered live data (class added by reviews.js); without it, the original
   two-column static layout from style.css/warsztat.css is untouched. */
.opinions.opinions--enhanced{display:grid;row-gap:20px}
.opinions.opinions--enhanced .google-card{display:contents}
.opinions.opinions--enhanced #reviews-enhanced{display:contents}
@media (min-width:701px){
  .opinions.opinions--enhanced{grid-template-columns:1.2fr 1fr;column-gap:40px;row-gap:14px;align-items:start}
  .opinions.opinions--enhanced>div:first-child{grid-column:1;grid-row:1/4}
  .opinions.opinions--enhanced .google-label{grid-column:2;grid-row:1}
  .opinions.opinions--enhanced .reviews-summary{grid-column:2;grid-row:2;margin:0}
  .opinions.opinions--enhanced #reviews-google-link{grid-column:2;grid-row:3;justify-self:start}
  .opinions.opinions--enhanced .reviews-carousel{grid-column:1/-1;grid-row:4;margin-top:10px}
}

@media (max-width:480px){
  .reviews-summary-line{font-size:16px}
  .reviews-slide{padding:14px}
  .reviews-carousel-status{min-width:70px;font-size:12px}
}
@media (prefers-reduced-motion:reduce){
  .reviews-carousel-track{transition:none}
}
/* The track holds all slides side by side (real slides plus loop clones) and is intentionally
   wider than the viewport; .reviews-carousel-viewport clips it with overflow:hidden. Everything
   else must keep min-width:0 / max-width:100% so the section/grid never grows to that width. */
#opinie>*,#opinie .google-card,#reviews-enhanced,.reviews-carousel,.reviews-carousel-viewport{min-width:0;max-width:100%}
#opinie .google-card,#reviews-enhanced,.reviews-carousel{width:100%}
.reviews-carousel-track{min-width:0}
/* telefon: dwie opinie jedna pod drugą zamiast karuzeli (reviews.js buildList, wariant B 27.10.2026) */
.reviews-list{display:grid;gap:10px;margin:14px 0 4px}
.reviews-list .reviews-slide-text{-webkit-line-clamp:3}
.reviews-read-more{align-self:flex-start;min-height:44px;background:none;border:0;padding:10px 0 0;color:var(--green,#9acc81);font-weight:700;text-decoration:underline;text-underline-offset:4px;font-size:14px;cursor:pointer}
.reviews-slide-text.is-expanded{display:block;-webkit-line-clamp:unset;overflow:visible}
