/* РПК — гостевой каталог живого покера.
 *
 * КОНЦЕПТ: вечер в зале. Сверху — световое табло ближайших игр, ниже —
 * ведомость клубов под лампой; живая игра отмечена пульсом фишки.
 * Отсюда всё: сцена со светом и сукном, метал-цифра героя, строки на
 * волоске вместо карточек, красный — только на том, что происходит сейчас.
 *
 * Rare-правила проекта (AGENTS.md): золота нет ни пикселя; один герой на
 * экран; отклик материалом, а не сдвигом коробки; в покое не больше двух
 * бесконечных анимаций; prefers-reduced-motion гасит всё поимённо.
 */

:root{
  --r-bg:#06070a;
  --r-bg-2:#0a0b10;
  --r-surface:#101116;
  --r-surface-2:#15161d;
  --r-line:rgba(255,255,255,.07);
  --r-line-2:rgba(255,255,255,.13);
  --r-text:#f4f4f6;
  --r-dim:#a7a8b2;
  --r-mute:#70717c;
  --r-steel:#c7ceda;
  --r-red:#c8102e;
  --r-red-2:#e0304a;
  --r-live:#4ec27d;
  --r-wrap:1160px;
}

*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}

/* ── Сцена: свет лампы над столом + сукно + виньетка ───────────────────── */
body.rpc{
  margin:0;
  color:var(--r-text);
  background:var(--r-bg);
  font:16px/1.5 -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;
  font-variant-numeric:tabular-nums;
  -webkit-font-smoothing:antialiased;
  position:relative;
  overflow-x:hidden;
}
/* Свет: конус лампы сверху. Дышит очень медленно — это первая из двух
   бесконечных анимаций на всю страницу. */
body.rpc::before{
  content:"";position:fixed;inset:-26% -12% auto -12%;height:88vh;pointer-events:none;z-index:0;
  background:
    /* тёплое пятно прямо под плафоном */
    radial-gradient(34% 30% at 26% 2%, rgba(255,222,196,.13), transparent 68%),
    /* конус света от лампы влево-вниз, как над реальным столом */
    conic-gradient(from 168deg at 26% -6%, transparent 0 22deg, rgba(255,226,205,.055) 30deg, rgba(200,16,46,.10) 44deg, transparent 62deg),
    radial-gradient(62% 56% at 34% 0%, rgba(200,16,46,.26), transparent 70%);
  animation:r-lamp 16s ease-in-out infinite;
}
/* Виньетка: углы зала тонут в темноте, взгляд остаётся в круге света */
.rvign{
  position:fixed;inset:0;pointer-events:none;z-index:0;
  background:radial-gradient(120% 90% at 34% 0%, transparent 42%, rgba(0,0,0,.55) 100%);
}
/* Сукно: две саржевые нити на грани видимости. */
body.rpc::after{
  content:"";position:fixed;inset:0;pointer-events:none;z-index:0;
  background:
    repeating-linear-gradient(52deg, rgba(255,255,255,.014) 0 1px, transparent 1px 3px),
    repeating-linear-gradient(-38deg, rgba(0,0,0,.035) 0 1px, transparent 1px 3px);
}
/* Контент над слоями сцены; сама виньетка остаётся фиксированным слоем —
   иначе это правило перебило бы ей position и она уехала бы со скроллом. */
body.rpc > *:not(.rvign){position:relative;z-index:1}

@keyframes r-lamp{
  0%,100%{opacity:.85;transform:translateY(0) scale(1)}
  50%    {opacity:1;  transform:translateY(6px) scale(1.02)}
}

a{color:inherit;text-decoration:none}
img{max-width:100%;display:block}
.rwrap{max-width:var(--r-wrap);margin:0 auto;padding:0 20px}

/* ── Шапка ─────────────────────────────────────────────────────────────── */
.rhead{
  position:sticky;top:0;z-index:20;
  background:rgba(6,7,10,.82);
  backdrop-filter:saturate(150%) blur(12px);
  border-bottom:1px solid var(--r-line);
}
.rhead__in{display:flex;align-items:center;gap:22px;height:62px}
.rbrand{display:flex;align-items:center;gap:11px;font-weight:800;letter-spacing:.15em;text-transform:uppercase;font-size:14px}
/* Знак — керамическая фишка с насечкой по борту, не «кружок с градиентом» */
.rbrand__mark{
  position:relative;width:24px;height:24px;border-radius:50%;flex:none;
  background:radial-gradient(circle at 34% 28%, #f0405c, var(--r-red) 56%, #79091b);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.35), 0 2px 8px rgba(200,16,46,.35);
}
.rbrand__mark::before{
  content:"";position:absolute;inset:-3px;border-radius:50%;
  background:repeating-conic-gradient(rgba(255,255,255,.5) 0 14deg, transparent 16deg 40deg);
  -webkit-mask:radial-gradient(closest-side, transparent calc(100% - 4px), #000 calc(100% - 3px));
          mask:radial-gradient(closest-side, transparent calc(100% - 4px), #000 calc(100% - 3px));
}
.rbrand__full{
  font-weight:500;letter-spacing:.02em;text-transform:none;
  font-size:13px;color:var(--r-mute);border-left:1px solid var(--r-line-2);
  padding-left:11px;
}
.rnav{display:flex;gap:20px;margin-left:auto;font-size:15px;color:var(--r-dim)}
.rnav a{position:relative;padding:4px 0;transition:color .18s ease}
.rnav a::after{
  content:"";position:absolute;left:0;right:0;bottom:0;height:1px;
  background:var(--r-red-2);transform:scaleX(0);transform-origin:left;
  transition:transform .22s cubic-bezier(.23,1,.32,1);
}
.rnav a:hover{color:#fff}
.rnav a:hover::after{transform:scaleX(1)}
.rhead__add{
  font-size:14px;color:var(--r-dim);border:1px solid var(--r-line-2);
  border-radius:999px;padding:8px 15px;
  transition:color .18s ease, border-color .18s ease, background .18s ease;
}
.rhead__add:hover{color:#fff;border-color:rgba(255,255,255,.32);background:rgba(255,255,255,.04)}

/* ── Первый экран: один герой ──────────────────────────────────────────── */
.rhero{padding:68px 0 34px;position:relative}
/* Кант под первым экраном: свет гаснет к краям, как борт стола */
.rhero::after{
  content:"";position:absolute;left:20px;right:20px;bottom:0;height:1px;
  background:linear-gradient(90deg,transparent,rgba(200,16,46,.5) 22%,rgba(199,206,218,.18) 55%,transparent);
}
.rhero__k{
  margin:0;font-size:12px;letter-spacing:.2em;text-transform:uppercase;
  color:var(--r-red-2);font-weight:700;
}
.rhero h1{
  margin:14px 0 0;font-size:clamp(36px,5.6vw,60px);line-height:1.03;
  letter-spacing:-.025em;font-weight:800;max-width:15ch;
}

/* Герой-число: холодный металл. Ровно одно такое на страницу. */
.rtoday{display:flex;align-items:flex-end;gap:20px;margin:26px 0 4px;flex-wrap:wrap}
.rnum{
  font-size:clamp(62px,15vw,92px);font-weight:900;line-height:.88;
  letter-spacing:-.045em;font-variant-numeric:tabular-nums;
  background:linear-gradient(180deg,#fff 25%,var(--r-steel) 75%,#96a0b0 100%);
  -webkit-background-clip:text;background-clip:text;
  -webkit-text-fill-color:transparent;
}
@supports not ((-webkit-background-clip:text) or (background-clip:text)){
  .rnum{background:none;-webkit-text-fill-color:currentColor;color:#e6eaf1}
}
.rnum__cap{padding-bottom:9px;font-size:17px;color:var(--r-text);line-height:1.35}
.rnum__cap i{display:block;font-style:normal;font-size:14px;color:var(--r-mute);margin-top:3px}
.rhero__sub{margin:18px 0 0;color:var(--r-dim);font-size:16px}
.rhero__sub b{color:var(--r-text);font-weight:600}

.rsearch{display:flex;gap:10px;margin-top:24px;max-width:540px}
.rsearch input{
  flex:1;min-width:0;height:52px;padding:0 17px;
  background:linear-gradient(180deg,var(--r-surface-2),var(--r-surface));
  border:1px solid var(--r-line-2);border-radius:13px;color:#fff;font-size:16px;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.04);
  transition:border-color .18s ease, box-shadow .18s ease;
}
.rsearch input::placeholder{color:var(--r-mute)}
.rsearch input:focus{
  outline:none;border-color:rgba(200,16,46,.55);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.05), 0 0 0 3px rgba(200,16,46,.13);
}
.rbtn{
  display:inline-flex;align-items:center;justify-content:center;
  height:52px;padding:0 24px;border:0;border-radius:13px;cursor:pointer;
  background:linear-gradient(180deg,#d81b36,var(--r-red));color:#fff;
  font:600 16px/1 inherit;
  box-shadow:0 10px 24px rgba(200,16,46,.24), inset 0 1px 0 rgba(255,255,255,.18);
  transition:filter .18s ease, box-shadow .18s ease;
}
.rbtn:hover{filter:brightness(1.08);box-shadow:0 12px 28px rgba(200,16,46,.3), inset 0 1px 0 rgba(255,255,255,.22)}
.rbtn:active{filter:brightness(.96)}
.rbtn--quiet{
  background:linear-gradient(180deg,#1b1d25,#14161c);color:var(--r-text);
  border:1px solid var(--r-line-2);box-shadow:none;
}
.rbtn--quiet:hover{background:linear-gradient(180deg,#22242d,#191b22);filter:none}

/* ── Секции ────────────────────────────────────────────────────────────── */
.rsec{padding:46px 0}
.rsec__head{display:flex;align-items:baseline;gap:16px;margin-bottom:18px}
.rsec h2{margin:0;font-size:clamp(22px,3vw,30px);letter-spacing:-.015em;font-weight:800}
.rsec__more{margin-left:auto;color:var(--r-mute);font-size:14px}
.rsec__note{color:var(--r-mute);font-size:14px;margin:0 0 18px}

/* ── Табло ближайших игр ───────────────────────────────────────────────── */
.rboard{border-top:1px solid var(--r-line)}
.rday{
  display:flex;align-items:baseline;gap:12px;
  padding:22px 0 9px;color:var(--r-mute);
  font-size:12px;letter-spacing:.18em;text-transform:uppercase;font-weight:700;
}
.rday b{color:#fff;letter-spacing:.07em}
.rgame{
  display:grid;grid-template-columns:88px 1fr auto;align-items:center;gap:18px;
  padding:15px 14px 15px 0;border-top:1px solid var(--r-line);
  position:relative;isolation:isolate;
}
/* Отклик материалом: поверхность светлеет, грань крепнет, блок не двигается */
.rgame::before{
  content:"";position:absolute;inset:0 -14px;z-index:-1;
  background:linear-gradient(90deg,rgba(255,255,255,.045),rgba(255,255,255,.012) 60%,transparent);
  opacity:0;transition:opacity .18s ease;
}
.rgame:hover::before{opacity:1}
.rgame__t{font-size:20px;font-weight:700;letter-spacing:-.02em;color:#eef0f4}
.rgame__t i{display:block;font-style:normal;font-size:12.5px;color:var(--r-mute);margin-top:3px;font-weight:500}
.rgame__n{font-size:16.5px;font-weight:600;line-height:1.3}
.rgame__n span{display:block;font-weight:400;font-size:14px;color:var(--r-dim);margin-top:4px}
.rgame__go{
  color:var(--r-dim);font-size:14px;font-weight:600;white-space:nowrap;
  display:inline-flex;align-items:center;gap:7px;transition:color .18s ease;
}
.rgame__go::after{content:"→";transition:transform .22s cubic-bezier(.23,1,.32,1)}
.rgame:hover .rgame__go{color:var(--r-red-2)}
.rgame:hover .rgame__go::after{transform:translateX(4px)}

/* Идёт сейчас — единственное место, где красный оживает пульсом */
.rlive{color:var(--r-live);font-weight:600;position:relative;padding-left:14px}
.rlive::before{
  content:"";position:absolute;left:0;top:50%;width:7px;height:7px;margin-top:-3.5px;
  border-radius:50%;background:var(--r-live);
}
.rlive::after{
  content:"";position:absolute;left:-2px;top:50%;width:11px;height:11px;margin-top:-5.5px;
  border-radius:50%;border:1px solid var(--r-live);opacity:0;
  animation:r-pulse 2.2s ease-out infinite;
}
@keyframes r-pulse{
  0%  {transform:scale(.5);opacity:.75}
  70% {transform:scale(1.5);opacity:0}
  100%{transform:scale(1.5);opacity:0}
}

/* ── Ведомость клубов ──────────────────────────────────────────────────── */
.rlist{border-top:1px solid var(--r-line)}
.rclub{
  position:relative;display:grid;grid-template-columns:54px 1fr auto;gap:17px;
  align-items:center;padding:17px 14px 17px 0;border-top:1px solid var(--r-line);
  isolation:isolate;
}
.rclub::before{
  content:"";position:absolute;inset:0 -14px;z-index:-1;
  background:linear-gradient(90deg,rgba(255,255,255,.045),rgba(255,255,255,.012) 60%,transparent);
  opacity:0;transition:opacity .18s ease;
}
.rclub:hover::before{opacity:1}
/* Оплаченная строка: планка у края + подсветка в прозрачность (без золота) */
.rclub--promo{box-shadow:inset 2px 0 0 var(--r-red)}
.rclub--promo::before{
  background:linear-gradient(90deg,rgba(200,16,46,.13),rgba(200,16,46,.02) 55%,transparent);
  opacity:1;
}
.rclub--promo:hover::before{background:linear-gradient(90deg,rgba(200,16,46,.19),rgba(255,255,255,.02) 55%,transparent)}

/* Монограмма = керамическая фишка с насечкой, а не квадратик с буквой */
.rclub__logo{
  position:relative;width:54px;height:54px;border-radius:50%;overflow:hidden;
  background:linear-gradient(180deg,#262a33,#181b21);
  display:flex;align-items:center;justify-content:center;
  font-weight:800;font-size:17px;color:#aab2bf;letter-spacing:.02em;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.07), 0 1px 3px rgba(0,0,0,.5);
}
.rclub__logo img{width:100%;height:100%;object-fit:cover}
.rclub__logo::after{
  content:"";position:absolute;inset:0;border-radius:50%;pointer-events:none;
  background:repeating-conic-gradient(rgba(199,206,218,.34) 0 12deg, transparent 14deg 42deg);
  -webkit-mask:radial-gradient(closest-side, transparent calc(100% - 5px), #000 calc(100% - 4px));
          mask:radial-gradient(closest-side, transparent calc(100% - 5px), #000 calc(100% - 4px));
}
.rclub__k{
  font-size:11px;letter-spacing:.16em;text-transform:uppercase;font-weight:700;
  color:var(--r-dim);margin-bottom:5px;
}
.rclub__k em{font-style:normal;color:var(--r-mute)}
.rclub__n{font-size:17px;font-weight:700;letter-spacing:-.01em}
.rclub__a{font-size:14px;color:var(--r-dim);margin-top:4px}
.rclub__r{text-align:right;font-size:13.5px;color:var(--r-mute);white-space:nowrap}
.rclub__r b{display:block;color:#e8eaef;font-weight:700;font-size:14.5px;margin-bottom:2px}

/* ── Города ────────────────────────────────────────────────────────────── */
.rcities{display:flex;flex-wrap:wrap;gap:2px 26px;padding-top:6px}
.rcity{
  font-size:16px;color:var(--r-text);padding:6px 0;
  transition:color .16s ease;
}
.rcity:hover{color:var(--r-red-2)}
.rcity span{color:var(--r-mute);font-size:13px;margin-left:6px}
.rcity[hidden]{display:none}
.rcities__empty{color:var(--r-mute);font-size:15px;padding:8px 0}

/* ── Текст и FAQ ───────────────────────────────────────────────────────── */
.rtext{max-width:70ch;color:var(--r-dim);font-size:16px}
.rtext p{margin:0 0 15px}
.rtext strong{color:#fff;font-weight:600}
.rfaq{border-top:1px solid var(--r-line);max-width:820px}
.rfaq details{border-bottom:1px solid var(--r-line);padding:17px 0}
.rfaq summary{cursor:pointer;font-weight:600;font-size:17px;list-style:none;transition:color .16s ease}
.rfaq summary:hover{color:#fff}
.rfaq summary::-webkit-details-marker{display:none}
.rfaq summary:after{content:"+";float:right;color:var(--r-mute);font-weight:400;transition:transform .2s ease}
.rfaq details[open] summary:after{content:"−"}
.rfaq p{margin:11px 0 0;color:var(--r-dim);max-width:66ch}

/* ── Страница клуба ────────────────────────────────────────────────────── */
.rclubhead{display:flex;gap:22px;align-items:flex-start;padding:40px 0 8px}
.rclubhead__logo{
  position:relative;width:92px;height:92px;border-radius:50%;flex:none;overflow:hidden;
  background:linear-gradient(180deg,#262a33,#181b21);
  display:flex;align-items:center;justify-content:center;font-weight:800;font-size:30px;color:#aab2bf;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.07), 0 4px 14px rgba(0,0,0,.5);
}
.rclubhead__logo img{width:100%;height:100%;object-fit:cover}
.rclubhead__logo::after{
  content:"";position:absolute;inset:0;border-radius:50%;pointer-events:none;
  background:repeating-conic-gradient(rgba(199,206,218,.34) 0 12deg, transparent 14deg 42deg);
  -webkit-mask:radial-gradient(closest-side, transparent calc(100% - 8px), #000 calc(100% - 7px));
          mask:radial-gradient(closest-side, transparent calc(100% - 8px), #000 calc(100% - 7px));
}
.rclubhead h1{margin:0;font-size:clamp(28px,4vw,42px);letter-spacing:-.025em;font-weight:800}
.rclubhead__c{color:var(--r-dim);margin-top:9px;font-size:16px}
.ractions{display:flex;flex-wrap:wrap;gap:10px;margin:24px 0 8px}
.rmeta{border-top:1px solid var(--r-line);margin-top:28px}
.rmeta__row{display:grid;grid-template-columns:190px 1fr;gap:16px;padding:15px 0;border-bottom:1px solid var(--r-line)}
.rmeta__k{color:var(--r-mute);font-size:14px}
.rmeta__v{font-size:16px}
.rmeta__v a{color:var(--r-red-2)}

/* ── Крошки ────────────────────────────────────────────────────────────── */
.rcrumbs{padding:18px 0 0;font-size:14px;color:var(--r-mute)}
.rcrumbs a{transition:color .16s ease}
.rcrumbs a:hover{color:#fff}
.rcrumbs i{font-style:normal;padding:0 8px;opacity:.45}

/* ── Форма ─────────────────────────────────────────────────────────────── */
.rform{max-width:560px;margin-top:24px}
.rfield{margin-bottom:16px}
.rfield label{display:block;font-size:14px;color:var(--r-dim);margin-bottom:7px}
.rfield input,.rfield textarea{
  width:100%;background:linear-gradient(180deg,var(--r-surface-2),var(--r-surface));
  border:1px solid var(--r-line-2);border-radius:13px;color:#fff;
  font:16px/1.45 inherit;padding:13px 15px;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.04);
  transition:border-color .18s ease, box-shadow .18s ease;
}
.rfield textarea{min-height:112px;resize:vertical}
.rfield input:focus,.rfield textarea:focus{
  outline:none;border-color:rgba(200,16,46,.55);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.05), 0 0 0 3px rgba(200,16,46,.13);
}
.rnote{color:var(--r-mute);font-size:13px;margin-top:14px;max-width:60ch}
.rok{border:1px solid rgba(78,194,125,.35);background:rgba(78,194,125,.07);border-radius:14px;padding:17px 19px;margin:20px 0;max-width:560px}
.rerr{color:#ff8497;font-size:14px;margin:0 0 14px}

.rempty{
  border:1px solid var(--r-line);border-radius:16px;padding:28px;color:var(--r-dim);max-width:660px;
  background:linear-gradient(180deg,rgba(255,255,255,.022),transparent);
}
.rempty b{display:block;color:#fff;margin-bottom:7px;font-size:17px}

/* ── Подвал ────────────────────────────────────────────────────────────── */
.rfoot{border-top:1px solid var(--r-line);margin-top:64px;padding:36px 0 48px;background:rgba(10,11,16,.72)}
.rfoot__row{display:flex;flex-wrap:wrap;gap:18px 30px;align-items:baseline}
.rfoot__brand{font-weight:700}
.rfoot__nav{display:flex;flex-wrap:wrap;gap:20px;margin-left:auto;color:var(--r-dim);font-size:15px}
.rfoot__nav a:hover{color:#fff}
.rfoot__legal{margin:22px 0 0;color:var(--r-mute);font-size:13px;max-width:80ch;line-height:1.65}
.rfoot__owner{margin:12px 0 0;color:var(--r-mute);font-size:13px}
.rfoot__owner a{color:var(--r-dim);border-bottom:1px solid var(--r-line-2)}
.rage{
  display:inline-block;border:1px solid var(--r-line-2);border-radius:5px;
  padding:1px 6px;margin-right:8px;font-weight:700;color:var(--r-dim);font-size:12px;
}

/* ── Хореография: раздача строк ────────────────────────────────────────── */
/* Гейт ставит только JS (rpc.js) и только один раз на блок — иначе строки
   пляшут при каждом ресайзе. Летят transform/opacity, fill backwards. */
.r-deal > .rgame,
.r-deal > .rclub,
.r-deal > .rday{
  animation:r-deal .42s cubic-bezier(.23,1,.32,1) backwards;
  animation-delay:calc(var(--i,0) * 42ms);
}
@keyframes r-deal{
  from{opacity:0;transform:translateY(14px)}
  to  {opacity:1;transform:none}
}
.r-rise{animation:r-rise .5s cubic-bezier(.16,1,.3,1) backwards}
@keyframes r-rise{
  from{opacity:0;transform:translateY(18px)}
  to  {opacity:1;transform:none}
}

/* ── Телефон ───────────────────────────────────────────────────────────── */
@media (max-width:760px){
  .rnav{display:none}
  .rbrand__full{display:none}
  .rhead__in{gap:12px}
  .rhead__add{margin-left:auto;padding:7px 13px;font-size:13px}
  .rhero{padding:38px 0 26px}
  .rtoday{gap:14px;margin-top:22px}
  .rnum__cap{padding-bottom:4px;font-size:16px}
  /* В колонку flex:1 растянул бы поле по высоте и схлопнул его в полоску */
  .rsearch{flex-direction:column;max-width:none}
  .rsearch input{flex:none;width:100%}
  .rsearch .rbtn{width:100%}
  .rsec{padding:34px 0}
  .rsec__head{flex-wrap:wrap;gap:4px 14px}
  .rsec__more{margin-left:0;flex-basis:100%;font-size:13px}
  .rgame{grid-template-columns:70px 1fr;gap:13px;padding:14px 0}
  .rgame__go{grid-column:2;justify-self:start;margin-top:3px}
  .rclub{grid-template-columns:46px 1fr;gap:13px}
  .rclub__logo{width:46px;height:46px;font-size:15px}
  .rclub__r{grid-column:2;text-align:left;margin-top:5px}
  .rclub__r b{display:inline;margin-right:6px}
  .rmeta__row{grid-template-columns:1fr;gap:4px}
  .rclubhead{flex-direction:column;gap:16px;padding-top:26px}
  /* Две кнопки клуба — в ряд и равной ширины: столбиком они выглядели
     как разные по важности, хотя это просто «записаться» и «доехать». */
  .ractions{display:grid;grid-template-columns:1fr 1fr;gap:10px}
  .ractions .rbtn{width:100%;padding:0 12px;font-size:15px}
  .rfoot__nav{margin-left:0}
}

/* ── Уважение к настройке «меньше движения» ────────────────────────────── */
@media (prefers-reduced-motion:reduce){
  body.rpc::before{animation:none}
  .rlive::after{animation:none;display:none}
  .r-deal > .rgame,
  .r-deal > .rclub,
  .r-deal > .rday,
  .r-rise{animation:none}
  .rnav a::after{transition:none}
  .rgame__go::after{transition:none}
  *{scroll-behavior:auto}
}

/* ── Сцена первого экрана: раздача ─────────────────────────────────────────
   Правая половина героя пустовала — это и читалось «дёшево». Ставим то, что
   на самом деле происходит в зале: две карты, только что вылетевшие из-под
   стопки фишек. Никаких картинок — карты, масти и насечка фишек нарисованы
   градиентами, поэтому сцена ничего не весит и не мылится на ретине.
   Масти чёрные: красный на странице остаётся только у бренда и у «сейчас». */
.rscene{
  position:absolute;right:1%;top:50%;width:372px;height:252px;
  transform:translateY(-46%);pointer-events:none;z-index:0;
}
.rscene::before{
  content:"";position:absolute;left:8%;right:6%;bottom:6px;height:34px;border-radius:50%;
  background:radial-gradient(50% 50% at 50% 50%, rgba(0,0,0,.55), transparent 72%);
}
.rscene__card{
  position:absolute;left:150px;top:16px;width:126px;height:178px;border-radius:11px;
  background:linear-gradient(160deg,#f5f7fa 0%,#e4e9f0 62%,#c9d1dd 100%);
  box-shadow:0 18px 34px rgba(0,0,0,.55), inset 0 1px 0 rgba(255,255,255,.9);
  display:flex;flex-direction:column;justify-content:space-between;padding:11px 12px;
  font:800 21px/1 -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Arial,sans-serif;
  color:#15171c;transform-origin:50% 100%;
}
.rscene__card:last-of-type{color:#15171c}
.rscene__card b{display:block;letter-spacing:-.02em}
.rscene__card i{font-style:normal;font-size:26px;line-height:1;align-self:flex-end;transform:rotate(180deg)}
/* «Рубашка» второй карты чуть холоднее — стопка не выглядит копией одной карты */
.rscene__card--a{transform:rotate(-13deg) translate(-58px,6px)}
.rscene__card--k{transform:rotate(7deg) translate(26px,-4px)}

/* Стопка фишек: три диска с керамической насечкой по борту */
.rscene__chips{position:absolute;left:6px;bottom:10px;width:104px;height:80px}
.rchip{
  position:absolute;left:0;width:96px;height:96px;border-radius:50%;
  background:linear-gradient(180deg,#2b303a,#171a20);
  box-shadow:
    0 6px 14px rgba(0,0,0,.55),
    inset 0 1px 0 rgba(255,255,255,.10),
    0 0 0 1px rgba(199,206,218,.14);   /* стальной торец: диски не сливаются */
  transform:scaleY(.34);transform-origin:50% 100%;
}
.rchip::after{
  content:"";position:absolute;inset:0;border-radius:50%;
  background:repeating-conic-gradient(rgba(199,206,218,.30) 0 11deg, transparent 13deg 40deg);
  -webkit-mask:radial-gradient(closest-side, transparent calc(100% - 9px), #000 calc(100% - 8px));
          mask:radial-gradient(closest-side, transparent calc(100% - 9px), #000 calc(100% - 8px));
}
.rchip--1{bottom:0}
.rchip--2{bottom:11px}
/* Верхняя фишка — единственный красный предмет сцены, перекликается со знаком */
.rchip--3{bottom:22px;background:linear-gradient(180deg,#d8253d,#8d0d21);box-shadow:0 6px 14px rgba(0,0,0,.55), inset 0 1px 0 rgba(255,255,255,.2), 0 0 0 1px rgba(255,255,255,.14)}
.rchip--3::after{background:repeating-conic-gradient(rgba(255,255,255,.5) 0 11deg, transparent 13deg 40deg)}

/* Раздача при загрузке: карты вылетают из стопки, одноразово, ~1с бюджета */
.rscene .rscene::before{
  content:"";position:absolute;left:8%;right:6%;bottom:6px;height:34px;border-radius:50%;
  background:radial-gradient(50% 50% at 50% 50%, rgba(0,0,0,.55), transparent 72%);
}
.rscene__card{animation:r-toss .62s cubic-bezier(.16,1,.3,1) backwards}
.rscene__card--a{animation-delay:.18s}
.rscene__card--k{animation-delay:.30s}
.rscene .rchip{animation:r-stack .42s cubic-bezier(.23,1,.32,1) backwards}
.rchip--1{animation-delay:.02s}
.rchip--2{animation-delay:.09s}
.rchip--3{animation-delay:.16s}
@keyframes r-toss{
  from{opacity:0;transform:translate(-120px,52px) rotate(-30deg) scale(.86)}
}
@keyframes r-stack{
  from{opacity:0;transform:scaleY(.34) translateY(26px)}
}

@media (max-width:1080px){ .rscene{right:-4%;width:300px;transform:translateY(-46%) scale(.85)} }
@media (max-width:900px){ .rscene{display:none} }

@media (prefers-reduced-motion:reduce){
  .rscene .rscene__card,
  .rscene .rchip{animation:none}
}

/* Клуб, у которого игра сегодня: метка без пульса — пульс зарезервирован
   за турниром, который идёт прямо сейчас, иначе смысл размывается. */
.rclub__r b.rtoday-mark{position:relative;padding-left:14px;color:#e8eaef}
.rclub__r b.rtoday-mark::before{
  content:"";position:absolute;left:0;top:50%;width:7px;height:7px;margin-top:-3.5px;
  border-radius:50%;background:var(--r-live);box-shadow:0 0 8px rgba(78,194,125,.45);
}

/* ── Полоса города ─────────────────────────────────────────────────────────
   Первое решение гостя. Липнет под шапкой: в длинной афише всегда видно,
   чей это город, и можно переключить не уезжая наверх. */
.rcitybar{
  position:sticky;top:62px;z-index:15;
  background:rgba(8,9,13,.9);backdrop-filter:saturate(140%) blur(10px);
  border-bottom:1px solid var(--r-line);
}
.rcitybar__in{display:flex;align-items:center;gap:12px;min-height:52px;flex-wrap:wrap;padding-top:8px;padding-bottom:8px}
.rcitybar__lbl{color:var(--r-mute);font-size:13px}
.rcitybar__lbl--empty{color:var(--r-text);font-weight:600;font-size:15px}
/* Город выбран — прячем предложение выбрать, и наоборот */
.rcitybar:not(.is-empty) [data-lbl-empty],
.rcitybar:not(.is-empty) .rcitybar__quick{display:none}
.rcitybar.is-empty [data-lbl-chosen],
.rcitybar.is-empty .rpick{display:none}
.rcitybar__quick{display:flex;flex-wrap:wrap;gap:8px}
.rcitybar__quick a{
  border:1px solid var(--r-line-2);border-radius:999px;padding:7px 14px;font-size:14px;
  background:linear-gradient(180deg,#181a21,#121319);
  transition:border-color .16s ease, background .16s ease;
}
.rcitybar__quick a:hover{border-color:rgba(200,16,46,.55);background:linear-gradient(180deg,#1f2129,#15171d)}
.rcitybar__more{color:var(--r-dim)}
.rcitybar__near{
  margin-left:auto;border:1px solid var(--r-line-2);background:transparent;color:var(--r-dim);
  border-radius:999px;padding:7px 14px;font:14px/1 inherit;cursor:pointer;
  transition:color .16s ease, border-color .16s ease;
}
.rcitybar__near:hover{color:#fff;border-color:rgba(255,255,255,.32)}
.rcitybar__near:disabled{opacity:.6;cursor:default}

/* Выбор города списком: обычный <details>, работает и без скриптов */
.rpick{position:relative}
.rpick summary{
  list-style:none;cursor:pointer;display:inline-flex;align-items:center;gap:8px;
  border:1px solid var(--r-line-2);border-radius:11px;padding:8px 14px;
  background:linear-gradient(180deg,#181a21,#121319);font-size:15px;
}
.rpick summary::-webkit-details-marker{display:none}
.rpick summary::after{content:"▾";color:var(--r-mute);font-size:12px}
.rpick summary b{font-weight:700}
.rpick__pop{
  position:absolute;left:0;top:calc(100% + 8px);z-index:30;width:min(92vw,520px);
  background:#0e1015;border:1px solid var(--r-line-2);border-radius:14px;padding:12px;
  box-shadow:0 24px 48px rgba(0,0,0,.6);
}
.rpick__all{display:block;padding:8px 10px;border-radius:9px;color:var(--r-dim);font-size:14px}
.rpick__all:hover{background:rgba(255,255,255,.05);color:#fff}
.rpick__list{
  display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:2px;
  max-height:46vh;overflow-y:auto;margin-top:6px;
}
.rpick__list a{display:flex;justify-content:space-between;gap:8px;padding:8px 10px;border-radius:9px;font-size:14.5px}
.rpick__list a:hover{background:rgba(255,255,255,.05)}
.rpick__list span{color:var(--r-mute);font-size:12.5px}

/* ── Герой: таймер до ближайшего старта ────────────────────────────────── */
.rnext{display:grid;grid-template-columns:auto 1fr;gap:4px 22px;align-items:center;margin:26px 0 2px}
.rnext__k{
  grid-column:1/-1;font-size:12px;letter-spacing:.2em;text-transform:uppercase;
  color:var(--r-mute);font-weight:700;
}
.rnext .rnum{font-size:clamp(46px,9vw,72px);line-height:1;font-variant-numeric:tabular-nums}
.rnext .rnum.is-now{
  background:none;-webkit-text-fill-color:currentColor;color:var(--r-live);
  font-size:clamp(34px,6vw,52px);
}
.rnext__who b{display:block;font-size:18px;font-weight:700;letter-spacing:-.01em}
.rnext__who i{display:block;font-style:normal;font-size:14px;color:var(--r-dim);margin-top:4px}

/* ── Переключатель дней ────────────────────────────────────────────────── */
.rchips{display:flex;gap:8px;flex-wrap:wrap;margin:0 0 4px}
.rchip-btn{
  border:1px solid var(--r-line-2);background:linear-gradient(180deg,#16181f,#111318);
  color:var(--r-dim);border-radius:11px;padding:9px 15px;font:600 14.5px/1 inherit;cursor:pointer;
  display:inline-flex;align-items:center;gap:8px;
  transition:color .16s ease, border-color .16s ease, background .16s ease;
}
.rchip-btn span{color:var(--r-mute);font-weight:600;font-size:12.5px}
.rchip-btn:hover{color:#fff;border-color:rgba(255,255,255,.28)}
.rchip-btn.is-on{
  color:#fff;border-color:rgba(200,16,46,.6);
  background:linear-gradient(180deg,rgba(200,16,46,.22),rgba(200,16,46,.10));
}
.rchip-btn.is-on span{color:rgba(255,255,255,.8)}

/* ── Строка афиши: действие прямо в строке ─────────────────────────────── */
/* Кликабельна вся строка, а не только заголовок: ссылка растягивается на
   строку невидимым слоем. Строка при этом остаётся div — вложить ссылку
   в ссылку нельзя, а кнопка действия обязана остаться отдельной целью. */
.rgame{cursor:pointer}
.rgame--flat{cursor:default}
.rgame__link{display:inline-block}
.rgame__link:hover{color:var(--r-red-2)}
.rgame__link::after{content:"";position:absolute;inset:0;z-index:1}
.rgame__act{position:relative;z-index:2}
.rgame--flat:hover::before{opacity:0}
.rgame__act{
  border:1px solid var(--r-line-2);border-radius:10px;padding:9px 15px;
  font:600 14px/1 inherit;white-space:nowrap;
  background:linear-gradient(180deg,#d81b36,var(--r-red));color:#fff;border-color:transparent;
  box-shadow:0 6px 16px rgba(200,16,46,.22), inset 0 1px 0 rgba(255,255,255,.18);
  transition:filter .16s ease;
}
.rgame__act:hover{filter:brightness(1.09)}
.rgame__act--quiet{
  background:linear-gradient(180deg,#1b1d25,#14161c);color:var(--r-dim);
  border-color:var(--r-line-2);box-shadow:none;
}
.rgame__act--quiet:hover{color:#fff;filter:none;background:linear-gradient(180deg,#22242d,#191b22)}
.rday.is-off{display:none}

/* ── Карта ─────────────────────────────────────────────────────────────── */
.rmap{
  border:1px solid var(--r-line);border-radius:16px;overflow:hidden;
  background:linear-gradient(180deg,rgba(255,255,255,.025),transparent);
  min-height:96px;display:flex;align-items:center;justify-content:center;padding:22px;
}
.rmap:has(iframe){padding:0;min-height:0}
.rmap iframe{width:100%;height:min(62vh,520px);border:0;display:block;filter:saturate(.9) contrast(1.02)}

@media (max-width:760px){
  .rcitybar{top:60px}
  .rcitybar__in{gap:8px;min-height:46px}
  .rcitybar__near{margin-left:0;padding:6px 12px;font-size:13px}
  /* Телефон: до первой игры не должно быть скролла, поэтому шапка экрана
     ужимается — герой здесь таймер, а не заголовок. */
  .rhero{padding:22px 0 20px}
  .rhero h1{font-size:clamp(27px,7.4vw,40px);margin-top:9px;max-width:none}
  .rnext{grid-template-columns:1fr;gap:4px;margin:16px 0 0}
  .rnext .rnum{font-size:clamp(40px,12vw,56px)}
  .rnext__who b{font-size:16px}
  .rhero__sub{margin-top:12px;font-size:15px}
  .rsec--board{padding-top:24px}
  /* Кнопки дней — лентой со скроллом, а не в две строки */
  .rchips{gap:6px;flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;padding-bottom:2px;margin-right:-20px;padding-right:20px}
  .rchips::-webkit-scrollbar{display:none}
  .rchip-btn{padding:8px 12px;font-size:14px;flex:0 0 auto}
  /* Кнопка остаётся в строке: отдельной строкой она добавляла ~60px высоты
     каждому турниру, и до третьей игры приходилось скроллить. */
  .rgame{grid-template-columns:58px 1fr auto;gap:11px;padding:13px 0}
  .rgame__act{padding:8px 11px;font-size:13px;align-self:center}
  .rgame__n{font-size:15.5px}
  .rgame__n span{font-size:13px}
  .rgame__t{font-size:18px}
  .rmap iframe{height:56vh}
}

/* ── Карточка клуба: главный объект каталога ───────────────────────────────
   Не ряд одинаковых строк, а место, куда можно поехать: знак клуба, адрес,
   ритм игры и одно действие. Красный — только на действии и на «сегодня». */
/* minmax(0,1fr): у элементов сетки min-width по умолчанию auto, и длинный
   адрес распирал карточку шире экрана — кнопка уезжала за правый край. */
.rcards{display:grid;grid-template-columns:minmax(0,1fr);gap:12px}
.rcard{
  position:relative;display:grid;grid-template-columns:64px minmax(0,1fr) auto;gap:18px;align-items:center;
  min-width:0;overflow:hidden;
  padding:18px 20px;border-radius:16px;
  background:linear-gradient(180deg,#14161c,#0f1115);
  border:1px solid var(--r-line);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.045);
  transition:border-color .18s ease, background .18s ease;
}
.rcard:hover{border-color:rgba(255,255,255,.16);background:linear-gradient(180deg,#181a21,#111318)}
/* Играют сегодня — планка у края, а не вторая краска на всей карточке */
.rcard--today{box-shadow:inset 3px 0 0 var(--r-red), inset 0 1px 0 rgba(255,255,255,.045)}
.rcard--promo{
  background:linear-gradient(180deg,rgba(200,16,46,.10),rgba(15,17,21,1) 62%);
  border-color:rgba(200,16,46,.28);
}
.rcards--quiet .rcard{background:linear-gradient(180deg,#121419,#0e1014)}

.rcard__logo{
  position:relative;width:64px;height:64px;border-radius:50%;overflow:hidden;
  background:linear-gradient(180deg,#262a33,#181b21);
  display:flex;align-items:center;justify-content:center;
  font-weight:800;font-size:19px;color:#aab2bf;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.07), 0 2px 8px rgba(0,0,0,.45);
}
.rcard__logo img{width:100%;height:100%;object-fit:cover}
.rcard__logo::after{
  content:"";position:absolute;inset:0;border-radius:50%;pointer-events:none;
  background:repeating-conic-gradient(rgba(199,206,218,.32) 0 12deg, transparent 14deg 42deg);
  -webkit-mask:radial-gradient(closest-side, transparent calc(100% - 6px), #000 calc(100% - 5px));
          mask:radial-gradient(closest-side, transparent calc(100% - 6px), #000 calc(100% - 5px));
}

.rcard__body{min-width:0;display:block}
.rcard__k{
  display:block;font-size:11px;letter-spacing:.16em;text-transform:uppercase;
  font-weight:700;color:var(--r-dim);margin-bottom:5px;
}
.rcard__k em{font-style:normal;color:var(--r-mute)}
.rcard__name{
  display:block;font-size:19px;font-weight:700;letter-spacing:-.015em;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
/* Кликается вся карточка: ссылка имени растягивается невидимым слоем,
   кнопка записи лежит выше и остаётся отдельной целью. */
.rcard__name::after{content:"";position:absolute;inset:0;z-index:1}
.rcard:hover .rcard__name{color:#fff}
.rcard__addr{display:block;font-size:14.5px;color:var(--r-dim);margin-top:5px;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rcard__rhythm{display:block;font-size:13.5px;color:var(--r-mute);margin-top:6px}

.rcard__side{display:flex;flex-direction:column;align-items:flex-end;gap:7px;text-align:right;white-space:nowrap;min-width:0}
.rcard__side b{font-size:15px;font-weight:700;color:#e9ecf2}
.rcard__hot{color:#fff}
.rcard__hot::before{
  content:"";display:inline-block;width:7px;height:7px;border-radius:50%;
  background:var(--r-red);margin-right:8px;vertical-align:middle;
  box-shadow:0 0 10px rgba(200,16,46,.7);
}
.rcard__quiet{color:var(--r-mute)!important;font-weight:600!important}
.rcard__seats{font-size:13px;color:var(--r-live)}
.rcard__seats--none{color:var(--r-mute)}
.rcard__act{
  position:relative;z-index:2;margin-top:2px;
  border-radius:11px;padding:10px 18px;font:600 14.5px/1 inherit;
  background:linear-gradient(180deg,#d81b36,var(--r-red));color:#fff;
  box-shadow:0 8px 20px rgba(200,16,46,.26), inset 0 1px 0 rgba(255,255,255,.18);
  transition:filter .16s ease;
}
.rcard__act:hover{filter:brightness(1.09)}
.rsec__link{color:var(--r-red-2)!important}
.rsec__link:hover{color:#fff!important}
.rhero--slim{padding:26px 0 8px}

@media (max-width:760px){
  .rcards{gap:10px}
  .rcard{grid-template-columns:48px minmax(0,1fr);gap:13px;padding:15px 16px;align-items:start}
  .rcard__logo{width:48px;height:48px;font-size:16px}
  .rcard__name{font-size:17px;white-space:normal}
  .rcard__addr{white-space:normal}
  /* Правый столбец уезжает под текст и разворачивается в строку: так карточка
     остаётся высотой в один взгляд, а кнопка не жмётся к краю. */
  .rcard__side{
    grid-column:2;flex-direction:row;align-items:center;justify-content:space-between;
    flex-wrap:wrap;gap:10px;text-align:left;margin-top:11px;white-space:normal;
  }
  .rcard__side b{font-size:14.5px}
  .rcard__seats{order:3;flex-basis:100%;margin-top:-2px}
  .rcard__act{margin-top:0;padding:9px 15px;flex:0 0 auto}
}

/* ── Страница клуба ────────────────────────────────────────────────────── */
.rclubhead__rhythm{margin:8px 0 0;color:var(--r-text);font-size:16px;font-weight:600}

/* Ближайший турнир — единственный крупный блок расписания */
.rnextbig{
  display:grid;grid-template-columns:92px 1fr auto;gap:20px;align-items:center;
  padding:20px 22px;border-radius:16px;margin-bottom:18px;
  background:linear-gradient(180deg,#171920,#101217);
  border:1px solid var(--r-line-2);
  box-shadow:inset 3px 0 0 var(--r-red), inset 0 1px 0 rgba(255,255,255,.05);
}
.rnextbig__when b{display:block;font-size:30px;font-weight:800;letter-spacing:-.02em;color:#f1f3f7}
.rnextbig__when i{display:block;font-style:normal;font-size:13px;color:var(--r-mute);margin-top:3px}
.rnextbig__t{font-size:19px;font-weight:700;letter-spacing:-.01em;line-height:1.25}
.rnextbig__s{margin-top:7px;font-size:13.5px}
.rnextbig__src{color:var(--r-dim);border-bottom:1px solid var(--r-line-2)}
.rnextbig__src:hover{color:#fff}

/* Остальная неделя — плотной таблицей, без семи одинаковых кнопок */
.rweek{border-top:1px solid var(--r-line)}
.rweek__h{
  padding:16px 0 6px;font-size:12px;letter-spacing:.18em;text-transform:uppercase;
  color:var(--r-mute);font-weight:700;
}
.rweek__row{
  display:grid;grid-template-columns:150px 62px 1fr auto;gap:14px;align-items:baseline;
  padding:11px 0;border-top:1px solid var(--r-line);font-size:15px;
}
.rweek__d{color:var(--r-dim)}
.rweek__d i{font-style:normal;color:var(--r-mute);font-size:13px}
.rweek__t{font-weight:700;color:#e9ecf2}
.rweek__n{color:var(--r-text);min-width:0}
.rweek__s{color:var(--r-mute);font-size:13px;white-space:nowrap}

@media (max-width:760px){
  .rnextbig{grid-template-columns:70px 1fr;gap:14px;padding:16px;align-items:start}
  .rnextbig__when b{font-size:26px}
  .rnextbig .rcard__act{grid-column:2;justify-self:start;margin-top:12px}
  .rnextbig__t{font-size:17px}
  .rweek__row{grid-template-columns:56px 1fr;gap:4px 12px;padding:12px 0}
  .rweek__d{grid-column:1/-1;font-size:12.5px;letter-spacing:.06em;text-transform:uppercase}
  .rweek__t{grid-row:2}
  .rweek__n{grid-row:2;font-size:15px}
  .rweek__s{grid-column:2;font-size:12.5px}
}
