/* ===== Rant Casino — casino-landing-3, собрано билдером, руками не править =====
   Вёрстка третьего набора. Модель блоков общая с novaspin: те же классы, что
   отдают генераторы разметки в build.py, поэтому набор меняет только внешний
   вид, а не контракт.

   Контраст здесь не выбирается на глаз. --accent-ink (текст на заливке),
   --accent-text (акцент как цвет текста) и --muted считает билдер из акцента и
   фона: белым по #a2abb5 получается 2.3:1, а красным #d80000 как текстом на
   тёмном — 3.6:1. Правило вёрстки: цветной текст только через --accent-text,
   текст на заливке только через --accent-ink, рамки — на сыром акценте.       */
:root{
  --bg:#090919;
  --accent:#b9202a;
  --heading-font:'Sora';
  --body-font:'Manrope';
  --radius:6px;

  --ink:#eaf1fb;
  --muted:#a4adb9;
  --panel:rgba(255,255,255,.045);
  --panel-2:rgba(255,255,255,.07);
  --line:rgba(255,255,255,.10);
  --accent-ink:#ffffff;
  --accent-text:#d26e75;
  --accent-hi:color-mix(in srgb, var(--accent), white 42%);
  --accent-lo:color-mix(in srgb, var(--accent), black 22%);
  --maxw:1160px;
}

*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{
  margin:0;background:var(--bg);color:var(--ink);
  font-family:var(--body-font),system-ui,sans-serif;font-size:16px;line-height:1.62;
  -webkit-font-smoothing:antialiased;
}
img{max-width:100%;display:block}
a{color:inherit;text-decoration:none}
h1,h2,h3,h4{font-family:var(--heading-font),system-ui,sans-serif;letter-spacing:-.015em;margin:0}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}

.container{max-width:var(--maxw);margin:0 auto;padding:0 20px}
.section{padding:38px 0;border-top:1px solid var(--line)}
.section-tight{padding:26px 0;border-top:0}

/* ===== кнопки ===== */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:8px;
  border-radius:var(--radius);border:1px solid transparent;cursor:pointer;
  font:inherit;font-weight:700;padding:11px 18px;white-space:nowrap;
}
.btn-primary{background:var(--accent);color:var(--accent-ink)}
.btn-primary:hover{background:var(--accent-hi)}
.btn-ghost{border-color:var(--line);color:var(--ink)}
.btn-ghost:hover{border-color:var(--accent);color:var(--accent-text)}
.btn-lg{padding:15px 24px;font-size:17px}

/* ===== шапка ===== */
.header{border-bottom:1px solid var(--line);background:color-mix(in srgb,var(--bg) 92%,#000);position:sticky;top:0;z-index:40}
/* min-width:0 обязателен: без него флекс-элемент не даёт себя ужать ниже
   содержимого, и на 375 px шапка вылезала за экран на 4 px — вся страница
   получала боковую прокрутку из-за кнопки с бургером. */
.header-inner{display:flex;align-items:center;gap:18px;height:66px;min-width:0}
.brand{flex:0 1 auto;min-width:0}
.logo{height:32px;width:auto;max-width:190px}
.nav{display:flex;gap:4px;margin-left:auto;flex-wrap:wrap}
.nav a{padding:8px 12px;border-radius:999px;font-size:14.5px;color:var(--muted);white-space:nowrap}
.nav a:hover,.nav a.active{color:var(--ink);background:var(--panel-2)}
.header-cta{display:flex;gap:8px;align-items:center;flex:0 0 auto;margin-left:auto}
.burger{display:none;background:transparent;border:1px solid var(--line);border-radius:var(--radius);color:var(--ink);font-size:18px;padding:6px 12px;cursor:pointer}
.mobile-nav{display:none;padding-bottom:14px}
.mobile-nav.open{display:block}
.mobile-nav-links{display:grid;gap:6px}
.mobile-nav-links a{padding:9px 12px;border-radius:var(--radius);background:var(--panel);color:var(--ink)}
@media (max-width:900px){
  .nav{display:none}
  .burger{display:inline-block}
  .header-cta .btn-ghost{display:none}
}

/* ===== первый экран =====
   Оффер лежит НА подложке, а не отдельным блоком рядом: у живых аффилиатов
   либо баннер фоном, либо цифры на баннере. Штора в зоне текста держит 92 %
   фона, поэтому самый светлый мыслимый баннер даёт поверхность не светлее
   той, против которой билдер считал токены. */
.hero{padding:40px 0 30px}
.hero-grid{display:grid;gap:26px;grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr);align-items:center}
.hero-eyebrow{
  font-family:var(--heading-font),sans-serif;font-weight:700;letter-spacing:.16em;
  text-transform:uppercase;font-size:12.5px;color:var(--accent-text);margin:0 0 12px;
}
.hero h1{font-size:clamp(29px,4.4vw,44px);line-height:1.08;margin:0 0 14px;text-wrap:balance}
.accent-text{color:var(--accent-text)}
.hero .sub{color:var(--muted);font-size:17px;margin:0 0 20px}
.hero-actions{display:flex;flex-wrap:wrap;gap:10px;align-items:center}
.hero-note{color:var(--muted);font-size:13.5px;margin:12px 0 0}

/* Оффер лежит НА подложке. Затемнение — только в нижней зоне, где стоит текст:
   если гасить всю площадь, логотип и баннер превращаются в пятно, что и было
   при сплошных 92%. В зоне текста фон доводится до 92% — ровно та поверхность,
   против которой билдер считал контрастные токены. */
.offer{
  position:relative;isolation:isolate;overflow:hidden;
  border:1px solid var(--line);border-radius:calc(var(--radius) * 2);
  background:var(--panel);min-height:360px;display:grid;align-content:end;
}
.offer-art{position:absolute;inset:0;z-index:0;overflow:hidden}
.offer-art img,.offer-art svg{width:100%;height:100%;object-fit:cover;display:block}
.offer-scrim{
  position:absolute;inset:0;z-index:1;
  background:linear-gradient(180deg,
    transparent 0%,
    color-mix(in srgb,var(--bg) 25%,transparent) 46%,
    color-mix(in srgb,var(--bg) 92%,transparent) 66%,
    color-mix(in srgb,var(--bg) 92%,transparent) 100%);
}
.offer-body{position:relative;z-index:2;padding:22px;display:grid;gap:16px}
.offer-figure{
  font-family:var(--heading-font),sans-serif;font-weight:800;line-height:1.12;margin:0;
  font-size:clamp(20px,2.6vw,28px);color:var(--ink);
}
.offer-actions{display:flex;flex-wrap:wrap;gap:9px}
@media (max-width:860px){
  .hero{padding:24px 0}
  .hero-grid{grid-template-columns:1fr}
}

/* ===== вводный абзац ===== */
.intro{color:var(--muted);font-size:16.5px;margin:0}
.intro-cta{margin-top:16px;display:flex;gap:10px;flex-wrap:wrap}

/* ===== шапка секции ===== */
.section-head{margin-bottom:20px}
.section-head .eyebrow{
  display:inline-block;font-family:var(--heading-font),sans-serif;font-weight:700;
  letter-spacing:.16em;text-transform:uppercase;font-size:12px;color:var(--accent-text);margin-bottom:10px;
}
.section-head h2{font-size:clamp(22px,2.8vw,30px);margin:0 0 8px;text-wrap:balance}
.section-head p{color:var(--muted);font-size:16px;margin:0}

/* ===== игры =====
   Пропорция плитки задана: без неё вёрстка прыгает, пока грузятся обложки.
   Кнопки видны всегда — на телефоне события наведения нет вовсе. */
.tabs{display:flex;gap:7px;margin-bottom:14px;flex-wrap:wrap}
.tab{
  font:inherit;font-size:14px;padding:8px 14px;border-radius:999px;cursor:pointer;
  background:transparent;border:1px solid var(--line);color:var(--muted);
}
.tab:hover{color:var(--ink);border-color:var(--accent)}
.tab.active{background:var(--accent);border-color:var(--accent);color:var(--accent-ink);font-weight:700}
.tab .dot{opacity:.7;font-size:12px}
.game-grid{display:grid;gap:12px;grid-template-columns:repeat(auto-fill,minmax(158px,1fr))}
/* Карточка — грид с растянутой подписью: названия занимают одну или две
   строки, а кнопки всех плиток ряда обязаны встать на одну линию, иначе ряд
   выглядит рваным. */
.game{
  border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;background:var(--panel);
  display:grid;grid-template-rows:auto 1fr;
}
.game:hover{border-color:var(--accent)}
.game-thumb{position:relative;aspect-ratio:3 / 4;display:grid;place-items:center}
.game-thumb-img{width:100%;height:100%;object-fit:cover}
.game-thumb .title{font-family:var(--heading-font),sans-serif;font-weight:800;font-size:15px;padding:0 10px;text-align:center}
.game-badge{position:absolute;top:8px;left:8px;background:var(--accent);color:var(--accent-ink);font-size:11px;font-weight:700;border-radius:999px;padding:2px 9px}
/* Кнопка живёт в подписи, а не поверх арта: у плиток название игры запечено в
   саму картинку внизу, и кнопка его срезала. Видна всегда — на телефоне hover
   недоступен. */
/* Кнопка ПОД названием, а не рядом: плитка ~170 px, и в строку название с
   кнопкой не помещается — на «3 Luxor Pots Holdand Win» колонка ужималась до
   44 px и текст сыпался в столбик по слову. */
.game-play{display:grid}
.game-play .btn{padding:7px 12px;font-size:12.5px;width:100%;justify-content:center}
.game-meta{padding:10px 11px;display:grid;grid-template-rows:minmax(0,1fr) auto;gap:9px;align-items:start}
/* Две строки под название резервируются всегда: без этого плитка с длинным
   именем переполняла подпись на пару пикселей и кнопка в ряду уезжала вниз. */
.game-title{min-height:2.6em}
.game-meta .name{font-size:13.5px;font-weight:600;line-height:1.3;min-width:0;overflow-wrap:anywhere}
.game-meta .prov{font-size:12px;color:var(--muted)}
.prov-strip{display:flex;flex-wrap:wrap;gap:12px;align-items:center;margin-top:18px;padding-top:16px;border-top:1px solid var(--line)}
.prov-mark img{height:22px;width:auto;opacity:.72}
.prov-mark img:hover{opacity:1}

/* ===== промо ===== */
.promo-grid{display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(232px,1fr))}
.promo{border:1px solid var(--line);border-radius:var(--radius);padding:17px;background:var(--panel)}
.promo .ic{font-size:22px;display:block;margin-bottom:9px}
.promo h3{font-size:16px;margin:0 0 6px}
.promo p{margin:0;font-size:14.5px;color:var(--muted)}
.promo .tag{
  display:inline-block;margin-top:11px;font-family:var(--heading-font),sans-serif;font-weight:800;
  font-size:12.5px;color:var(--accent-text);background:color-mix(in srgb,var(--accent) 16%,transparent);
  border-radius:999px;padding:3px 11px;
}

/* ===== таблица условий ===== */
.cond{border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;background:var(--panel)}
.cond-row{display:grid;grid-template-columns:minmax(0,42%) minmax(0,58%);border-bottom:1px solid var(--line)}
.cond-row:last-child{border-bottom:0}
.cond-row .k,.cond-row .v{padding:12px 16px;font-size:15px}
.cond-row .k{color:var(--muted)}
.cond-row.head{background:var(--panel-2)}
.cond-row.head .k,.cond-row.head .v{
  font-family:var(--heading-font),sans-serif;font-size:11.5px;letter-spacing:.1em;
  text-transform:uppercase;color:var(--muted);font-weight:700;
}

/* ===== проза ===== */
.prose{max-width:none}
.prose .lead{font-size:18px;color:var(--ink);margin:0 0 20px;padding-left:16px;border-left:2px solid var(--accent)}
.prose h3{font-size:20px;margin:26px 0 10px;text-wrap:balance;padding-top:22px;border-top:1px solid var(--line)}
.prose h3:first-of-type{padding-top:0;border-top:0;margin-top:0}
.prose p{margin:0 0 13px;color:var(--muted);font-size:16px}
.feat-grid{display:grid;gap:10px;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));margin:14px 0 4px}
.feat{display:grid;grid-template-columns:26px 1fr;gap:10px;align-items:start;background:var(--panel);border-left:2px solid var(--accent);border-radius:0 var(--radius) var(--radius) 0;padding:11px 14px}
.feat .fic{font-size:17px;line-height:1.4}
.feat h4{font-size:14.5px;margin:0 0 3px}
.feat p{margin:0;font-size:13.5px}

/* ===== платежи ===== */
.pay-strip{display:flex;flex-wrap:wrap;gap:12px}
.pay{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:11px 14px;display:grid;place-items:center}
.pay img{height:22px;width:auto}

/* ===== FAQ ===== */
.faq-item{border:1px solid var(--line);border-radius:var(--radius);background:var(--panel);margin-bottom:9px;overflow:hidden}
.faq-q{
  width:100%;text-align:left;background:transparent;border:0;cursor:pointer;color:var(--ink);
  font:inherit;font-weight:700;font-size:15.5px;padding:15px 17px;
  display:flex;justify-content:space-between;gap:12px;align-items:center;
}
.faq-q .pm{color:var(--accent-text);font-size:23px;line-height:1;flex:none;transition:transform .2s}
.faq-item.open .faq-q .pm{transform:rotate(45deg)}
.faq-a{max-height:0;overflow:hidden;transition:max-height .22s ease}
.faq-a p{margin:0;padding:0 17px 15px;color:var(--muted);font-size:15px}

/* ===== подстраница ===== */
.page-head{max-width:74ch}
.page-head .eyebrow{
  display:inline-block;font-family:var(--heading-font),sans-serif;font-weight:700;
  letter-spacing:.16em;text-transform:uppercase;font-size:12px;color:var(--accent-text);margin-bottom:10px;
}
.page-head h1{font-size:clamp(26px,3.6vw,38px);line-height:1.12;margin:0 0 12px;text-wrap:balance}
.page-head .lead{color:var(--muted);font-size:17px;margin:0}

/* ===== футер ===== */
.footer{border-top:1px solid var(--line);background:color-mix(in srgb,var(--bg) 92%,#000);margin-top:14px;padding:30px 0 36px}
.footer-inner{display:grid;gap:16px;justify-items:start}
.footer .logo{height:26px}
.footer-pays{display:flex;flex-wrap:wrap;gap:10px}
.footer-pays img{height:20px;width:auto;opacity:.75}
.footer-links{display:flex;flex-wrap:wrap;gap:8px 18px}
.footer-links a{font-size:14.5px;color:var(--muted)}
.footer-links a:hover{color:var(--accent-text)}
.age{display:flex;align-items:center;gap:8px;color:var(--muted);font-size:13px}
.age .n{
  border:1px solid var(--line);border-radius:999px;padding:2px 9px;
  font-family:var(--heading-font),sans-serif;font-weight:800;font-size:12px;color:var(--ink);
}
.licence{display:flex;align-items:center;gap:9px;color:var(--muted);font-size:13px}
.licence img{height:24px;width:auto}
.footer-legal{color:var(--muted);font-size:13px;margin:0;max-width:80ch}
.copyright{color:var(--muted);font-size:12.5px;margin:0;opacity:.8}
