/* reviews.css — компонент отзывов (карточки + медиа-карусель + лайтбокс).
   Извлечено из style.css; цвета — из CSS-переменных контейнера страницы.
   На /game палитра сливовая (задаётся на секции). Оживляет app.js. */
.reviews-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px;align-items:start}
.review-card{display:flex;flex-direction:column;gap:13px;align-self:start}
.rc-head{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}
.rc-head figcaption{font-weight:700;color:var(--brand-deep)}
.stars{display:flex;gap:3px}
.star{width:19px;height:19px;fill:#d7e4ec;flex:0 0 auto}
.star.on{fill:#f3b53f}

/* Медиа-карусель (вертикальный формат 9:16, свайп на смартфоне) */
.media-carousel{position:relative;border-radius:16px;overflow:hidden;background:#0b1418;box-shadow:0 8px 22px rgba(15,82,116,.12)}
.media-track{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;scrollbar-width:none}
.media-track::-webkit-scrollbar{display:none}
.media-slide{position:relative;flex:0 0 100%;scroll-snap-align:center;aspect-ratio:9/16;background:#0b1418}
.rv-media{display:block;width:100%;height:100%;border:0;margin:0;padding:0;background:#0b1418}
/* Видео-отзыв: постер + play-оверлей; без постера — брендовый градиент */
.rv-video{position:relative;width:100%;height:100%}
.rv-video.noposter{background:
  radial-gradient(circle at 26% 18%,rgba(207,226,243,.9),transparent 34%),
  radial-gradient(circle at 78% 84%,rgba(243,218,221,.72),transparent 38%),
  linear-gradient(145deg,#f8fbfc 0%,#dcecf3 100%)}
.rv-video.noposter video{background:transparent;opacity:0;pointer-events:none}
.rv-placeholder{position:absolute;inset:0;color:var(--brand-deep);pointer-events:none;text-align:center}
.rv-placeholder b{position:absolute;top:16%;left:50%;translate:-50% 0;display:grid;place-items:center;width:92px;height:92px;border:1px solid rgba(15,109,150,.22);border-radius:50%;
  background:rgba(255,255,255,.72);font-family:var(--font-script,"Caveat",cursive);font-size:52px;font-weight:600;box-shadow:0 14px 34px rgba(15,82,116,.12)}
.rv-placeholder strong{position:absolute;left:16px;right:16px;bottom:72px;font-size:16px;line-height:1.25}
.rv-placeholder small{position:absolute;left:20px;right:20px;bottom:44px;font-size:11px;font-weight:700;letter-spacing:.045em;text-transform:uppercase;line-height:1.35}
.rv-play{position:absolute;inset:0;margin:auto;width:72px;height:72px;border:0;border-radius:50%;cursor:pointer;
  background:rgba(255,255,255,.92);box-shadow:0 10px 28px rgba(11,82,116,.35);
  display:flex;align-items:center;justify-content:center;transition:transform .16s ease,background .16s}
.rv-play svg{width:30px;height:30px;fill:var(--brand-deep);margin-left:4px}
.rv-play:hover{transform:scale(1.07);background:var(--surface)}
.rv-video.playing .rv-play{display:none}
.rv-video.playing .rv-placeholder{display:none}
.rv-video.is-unavailable .rv-play{width:auto;min-width:142px;height:44px;padding:0 18px;border-radius:999px;font-size:13px;font-weight:700;color:var(--brand-deep)}
.rv-video.is-unavailable .rv-play svg{width:18px;height:18px}
.rv-img{cursor:zoom-in}
.media-slide img,.media-slide video{width:100%;height:100%;object-fit:cover;display:block}
.media-badge{position:absolute;left:10px;top:10px;background:rgba(11,20,24,.66);color:#fff;font-size:11px;font-weight:600;
  padding:4px 10px;border-radius:999px;letter-spacing:.02em;pointer-events:none;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}
.media-badge.vid{background:rgba(15,109,150,.88)}
.media-dots{position:absolute;left:0;right:0;bottom:11px;display:flex;justify-content:center;gap:6px;pointer-events:none}
.media-dots .dot{width:7px;height:7px;border-radius:50%;background:rgba(255,255,255,.5);transition:width .2s,height .2s,background .2s;pointer-events:auto;cursor:pointer}
.media-dots .dot.on{background:var(--surface);width:9px;height:9px}
.lightbox{position:fixed;inset:0;z-index:120;background:rgba(8,14,18,.93);display:flex;align-items:center;justify-content:center;
  padding:max(20px,env(safe-area-inset-top)) max(18px,env(safe-area-inset-right)) max(20px,env(safe-area-inset-bottom)) max(18px,env(safe-area-inset-left))}
.lightbox[hidden]{display:none}
.lb-img{max-width:100%;max-height:100%;border-radius:12px;object-fit:contain;box-shadow:0 24px 60px rgba(0,0,0,.55)}
.lb-close{position:fixed;top:max(14px,env(safe-area-inset-top));right:max(16px,env(safe-area-inset-right));width:42px;height:42px;font-size:26px;background:rgba(255,255,255,.14);border:0;border-radius:50%;color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;z-index:5} /* W140: канон style.css — крестик не уезжает при скролле */
.lb-close:hover{background:rgba(255,255,255,.28)}
.review-card .ba{display:flex;flex-direction:column;gap:9px;margin-top:2px}
.ba-row{display:flex;gap:10px;align-items:flex-start}
.ba-row p{margin:0;color:var(--ink);line-height:1.55}
.ba-tag{flex:0 0 auto;font-size:11px;font-weight:700;letter-spacing:.03em;text-transform:uppercase;padding:3px 10px;border-radius:999px;margin-top:3px}
.ba-before{background:#eef2f4;color:#6b8088}
.ba-after{background:#e7f2fa;color:var(--brand-deep)}
.review-card blockquote{margin:0;padding:11px 15px;background:var(--cream);border-radius:13px;border-left:3px solid var(--sky);color:var(--brand-deep);font-style:italic;line-height:1.55}
.rc-format{margin-left:auto;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;padding:4px 11px;border-radius:999px;background:var(--cream);color:var(--brand-deep);white-space:nowrap}
.rc-format.is-game{background:#efe7fb;color:#6b46c1}
.reviews-grid .review-card{cursor:pointer}
.reviews-grid .review-card .ba p{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.reviews-grid .review-card blockquote{display:-webkit-box;-webkit-line-clamp:6;-webkit-box-orient:vertical;overflow:hidden}
.rc-more{margin-top:auto;padding-top:4px;font-size:13.5px;font-weight:600;color:var(--sky,#3d9bc4)}
.review-card:hover .rc-more{text-decoration:underline}
.mc-arr{position:absolute;top:50%;transform:translateY(-50%);width:34px;height:34px;border:0;border-radius:50%;
  background:rgba(255,255,255,.9);color:#0b1418;font-size:22px;line-height:1;cursor:pointer;z-index:2;
  display:flex;align-items:center;justify-content:center;box-shadow:0 2px 10px rgba(0,0,0,.25);
  opacity:0;transition:opacity .18s}
.media-carousel:hover .mc-arr,.mc-arr:focus-visible{opacity:1}
@media (hover:none){.mc-arr{opacity:.85}}
.mc-arr.prev{left:8px}.mc-arr.next{right:8px}
/* адаптив сетки отзывов */
@media (max-width:980px){.reviews-grid{grid-template-columns:1fr 1fr}}
@media (max-width:640px){.reviews-grid{grid-template-columns:1fr}}
/* модалка полного отзыва (клик по карточке → openModal в app.js) */
.rvm{position:fixed;inset:0;z-index:110;background:rgba(8,14,18,.72);backdrop-filter:blur(4px);
  display:flex;align-items:center;justify-content:center;padding:20px}
.rvm-box{position:relative;width:100%;max-width:560px;max-height:88vh;overflow-y:auto;
  background:var(--surface,#fff);border-radius:18px;padding:22px;box-shadow:0 24px 60px rgba(0,0,0,.4)}
.rvm-close{position:sticky;top:0;float:right;width:34px;height:34px;border:0;border-radius:50%;
  background:var(--cream,#f2f7f9);color:var(--ink,#123);font-size:22px;line-height:1;cursor:pointer;z-index:3}
.rvm .review-card{cursor:auto}
.rvm .review-card blockquote,.rvm .review-card .ba p{display:block;-webkit-line-clamp:unset;overflow:visible}
.rvm .rc-more{display:none}
.rvm .media-slide{max-height:60vh}

/* Единый лайтбокс отзывов и регалий. */
.lb-stage{max-width:min(920px,92vw);max-height:88vh;display:flex;align-items:center;justify-content:center}
.lb-media{max-width:100%;max-height:88vh;border-radius:12px;box-shadow:0 24px 60px rgba(0,0,0,.55)}
.lb-video{position:relative;line-height:0}.lb-video video{background:#000;min-width:min(560px,80vw)}
.lb-play{width:84px;height:84px}
.lb-video-state{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:28px;text-align:center;
  color:#fff;background:linear-gradient(160deg,rgba(7,25,34,.74),rgba(15,82,116,.84));line-height:1.45;border-radius:12px}
.lb-video-state[hidden]{display:none}
.lb-video-state strong{font-size:19px}.lb-video-state span{max-width:380px;color:rgba(255,255,255,.82);font-size:14px}
.lb-retry{min-height:44px;border:1px solid rgba(255,255,255,.5);border-radius:999px;padding:0 18px;background:#fff;color:#164f68;font:700 14px/1 var(--font-body,system-ui);cursor:pointer}
.lb-arr{position:fixed;top:50%;transform:translateY(-50%);width:46px;height:46px;border:0;border-radius:50%;
  background:rgba(255,255,255,.14);color:#fff;font-size:28px;line-height:1;cursor:pointer;z-index:5;
  display:flex;align-items:center;justify-content:center;transition:background .15s,transform .15s}
.lb-arr:hover{background:rgba(255,255,255,.28);transform:translateY(-50%) scale(1.06)}
.lb-arr.prev{left:14px}.lb-arr.next{right:14px}
.lb-count{position:fixed;bottom:16px;left:50%;transform:translateX(-50%);color:#fff;font-size:13.5px;font-weight:600;
  background:rgba(255,255,255,.14);padding:4px 12px;border-radius:999px;font-variant-numeric:tabular-nums}

/* ── W167 (финальный аудит): карусель отзывов на мобиле ──
   reviews.css подключается ПОСЛЕ style.css, поэтому его безусловное
   .reviews-grid{display:grid} перебивало медиа-правило карусели из
   style.css — свайп на телефоне не работал. Правило продублировано здесь,
   в последнем по порядку файле: теперь порядок каскада на нашей стороне. */
@media (max-width:560px){
  .reviews-grid{display:flex;grid-template-columns:none;gap:14px;overflow-x:auto;
    scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;
    scroll-padding:0 16px;padding:2px 16px 14px;margin-inline:-16px;scrollbar-width:none}
  .reviews-grid::-webkit-scrollbar{display:none}
  .reviews-grid>.review-card{flex:0 0 86%;max-width:86%;scroll-snap-align:center;
    margin-inline:0;cursor:pointer;content-visibility:auto;contain-intrinsic-size:420px}
  .reviews-grid>.review-card::after{content:'Открыть →';display:block;margin-top:2px;
    font-size:12.5px;color:var(--brand);font-weight:600}
  .lb-arr{width:38px;height:38px;font-size:24px}.lb-arr.prev{left:6px}.lb-arr.next{right:6px}
}
