:root{
  --ee:cubic-bezier(0.19,1,0.22,1);
  --eq:cubic-bezier(0.77,0,0.175,1);
  --es:cubic-bezier(0.34,1.56,0.64,1);
  --bg:#0a0e1a;
  --bg-2:#0d1220;
  --ink:#ffffff;
  --ink-2:rgba(255,255,255,.7);
  --ink-3:rgba(255,255,255,.5);
  --ink-4:rgba(255,255,255,.42);
  --line:rgba(255,255,255,.1);
  --line-2:rgba(255,255,255,.06);
  --glass-bg:linear-gradient(135deg,rgba(255,255,255,.06),rgba(255,255,255,.02));
  --glass-border:rgba(255,255,255,.1);
  --glass-blur:blur(26px);
  --indigo:#6366f1;
  --indigo-soft:#a5b4fc;
  --pink:#ec4899;
  --pink-soft:#f9a8d4;
  --cyan:#22d3ee;
  --green:#4ade80;
  --amber:#fbbf24;
  --red:#f87171;
  --grad-a:linear-gradient(135deg,#fff 0%,#a5b4fc 50%,#ec4899 100%);
  --grad-b:linear-gradient(135deg,#6366f1,#ec4899);
  --grad-c:linear-gradient(90deg,#6366f1,#a5b4fc);
  --grad-gold:linear-gradient(135deg,#fde68a,#fbbf24);
  --font-sans:'Space Grotesk',sans-serif;
  --font-body:'DM Sans',sans-serif;
  --font-mono:'JetBrains Mono',monospace;
  --r-sm:10px;
  --r-md:16px;
  --r-lg:22px;
  --r-xl:28px;
  --header-h:78px;
}

*{margin:0;padding:0;box-sizing:border-box}
/* Several components below set their own `display` (flex/inline-flex) for
   layout, which — same cascade origin, same specificity — silently beats
   the browser's built-in `[hidden]{display:none}` the moment an element has
   both. One blanket override here is simpler than chasing it per-component. */
[hidden]{display:none !important}
html{scroll-behavior:smooth}
html,body{width:100%;background:var(--bg);color:var(--ink);font-family:var(--font-sans);-webkit-font-smoothing:antialiased}
body{position:relative;overflow-x:hidden}

/* ============ Ambient background ============ */
.ambient{position:fixed;inset:0;z-index:0;pointer-events:none}
.ambient::before{content:'';position:fixed;inset:0;background:radial-gradient(circle at 15% 10%,rgba(99,102,241,.20) 0%,transparent 50%),radial-gradient(circle at 85% 30%,rgba(236,72,153,.13) 0%,transparent 50%),radial-gradient(circle at 50% 80%,rgba(34,211,238,.08) 0%,transparent 60%);animation:ambient 16s ease-in-out infinite alternate}
@keyframes ambient{to{opacity:.7;transform:scale(1.05)}}

::-webkit-scrollbar{width:10px;height:10px}
::-webkit-scrollbar-track{background:transparent}
::-webkit-scrollbar-thumb{background:linear-gradient(180deg,rgba(165,180,252,.4),rgba(236,72,153,.35));border-radius:100px;border:2px solid var(--bg);background-clip:padding-box}
*{scrollbar-width:thin;scrollbar-color:rgba(165,180,252,.4) transparent}

/* ============ Shared utilities (from template) ============ */
.reveal{opacity:0;transform:translateY(26px);transition:opacity .9s var(--ee),transform .9s var(--ee)}
.reveal.is-visible{opacity:1;transform:translateY(0)}

.eyebrow{display:inline-flex;align-items:center;gap:9px;background:rgba(99,102,241,.12);border:1px solid rgba(99,102,241,.3);padding:7px 16px;border-radius:100px;font-family:var(--font-body);font-size:12px;color:var(--indigo-soft);width:fit-content;letter-spacing:.02em}
.eyebrow .dt{width:6px;height:6px;border-radius:50%;background:var(--indigo);box-shadow:0 0 10px var(--indigo);animation:pip 2s infinite;flex-shrink:0}
@keyframes pip{0%,100%{opacity:1}50%{opacity:.3}}

/* ============ Heading hierarchy: h1 > h2 > h3 ============ */
.h-display{font-family:var(--font-sans);font-weight:500;line-height:1.05;letter-spacing:-.03em}
.h-display .grd{background:var(--grad-a);-webkit-background-clip:text;background-clip:text;color:transparent}

.body-lg{font-family:var(--font-body);font-size:clamp(15px,1.4vw,18px);line-height:1.65;color:var(--ink-2);font-weight:400}
.body-md{font-family:var(--font-body);font-size:14.5px;line-height:1.7;color:var(--ink-2)}
.body-sm{font-family:var(--font-body);font-size:12.5px;line-height:1.55;color:var(--ink-3)}

/* background is a solid color that never changes state — only the ::before
   overlay fades in/out via opacity on hover. Switching the `background`
   shorthand itself between a solid color and a gradient (as this used to do)
   makes background-color transition through `transparent` for a frame,
   flashing the dark page background through the button on mouse-out. */
.btn-primary{position:relative;isolation:isolate;overflow:hidden;background:#fff;color:var(--bg);padding:13px 24px;border-radius:100px;font-family:var(--font-body);font-size:14px;font-weight:600;display:inline-flex;align-items:center;gap:10px;cursor:pointer;transition:transform .3s,box-shadow .3s;border:none;text-decoration:none;white-space:nowrap}
.btn-primary::before{content:'';position:absolute;inset:0;z-index:-1;background:linear-gradient(135deg,var(--indigo-soft),#fff);opacity:0;transition:opacity .3s}
.btn-primary:hover{transform:translateY(-2px);box-shadow:0 10px 30px rgba(165,180,252,.25)}
.btn-primary:hover::before{opacity:1}

/* "Играть" CTA — the one button on the card people actually need to notice,
   so it gets the brand gradient + a slow breathing glow instead of the plain
   white treatment every other .btn-primary uses. */
.btn-play{background:linear-gradient(135deg,#6366f1,#ec4899);color:#fff;animation:btnPlayPulse 2.4s ease-in-out infinite}
.btn-play::before{background:linear-gradient(135deg,#818cf8,#f472b6)}
.btn-play:hover{animation-play-state:paused;box-shadow:0 12px 32px rgba(236,72,153,.55)}
@keyframes btnPlayPulse{
  0%,100%{box-shadow:0 6px 20px rgba(236,72,153,.35)}
  50%{box-shadow:0 8px 28px rgba(236,72,153,.65)}
}
@media(prefers-reduced-motion:reduce){
  .btn-play{animation:none}
}
.btn-secondary{background:rgba(255,255,255,.06);color:var(--ink);padding:13px 24px;border-radius:100px;font-family:var(--font-body);font-size:14px;font-weight:500;display:inline-flex;align-items:center;gap:10px;cursor:pointer;transition:all .3s;border:1px solid var(--glass-border);text-decoration:none;white-space:nowrap}
.btn-secondary:hover{background:rgba(255,255,255,.12)}
.btn-block{width:100%;justify-content:center}

/* No backdrop-filter on in-flow glass: behind these cards there is only the
   smooth ambient gradient, so the blur is visually a no-op, yet the compositor
   re-blurs every visible card on every scroll frame (measured: ~2x fewer
   frames drawn during a fast scroll). Blur stays only on surfaces that float
   over real content: header, dropdowns, gift panel, compare bar/modal. */
.glass-card{background:var(--glass-bg);border:1px solid var(--glass-border);border-radius:var(--r-lg);position:relative;overflow:hidden}

/* ============ Keyboard focus ============ */
/* :hover is covered everywhere; this is the missing keyboard-equivalent so
   tabbing through the page doesn't leave the user guessing where focus is */
:where(a,button,input,summary):focus-visible{
  outline:2px solid var(--indigo-soft);
  outline-offset:3px;
  border-radius:4px;
}

.wrap{max-width:1360px;margin:0 auto;padding:0 6vmin}
@media(max-width:640px){.wrap{padding:0 18px}}

/* ============ Header ============ */
.site-header{position:sticky;top:0;z-index:300;padding:16px 0;transition:background .3s,border-color .3s,padding .3s}
.site-header::before{content:'';position:absolute;inset:0;background:rgba(10,14,26,0);backdrop-filter:blur(0px);-webkit-backdrop-filter:blur(0px);border-bottom:1px solid transparent;transition:all .3s;z-index:-1}
.site-header.scrolled::before{background:rgba(10,14,26,.75);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border-bottom-color:var(--line)}
.site-header.scrolled{padding:12px 0}
.hdr-in{display:flex;align-items:center;justify-content:space-between;gap:24px}
.brand{display:flex;align-items:center;gap:11px;font-family:var(--font-sans);font-weight:600;font-size:17px;letter-spacing:-.01em;text-decoration:none;color:var(--ink);flex-shrink:0}
.brand-logo-img{height:36px;width:auto;display:block}
@media(max-width:480px){.brand-logo-img{height:30px}}
.brand .logo{width:30px;height:30px;border-radius:9px;background:var(--grad-b);position:relative;flex-shrink:0}
.brand .logo::after{content:'';position:absolute;inset:5px;background:var(--bg);border-radius:4px}
.brand .dim{color:var(--indigo-soft);font-weight:400}

.main-nav{display:flex;align-items:center;gap:4px;flex-wrap:wrap}
/* Regular items stay in normal case with tight, calm tracking; only the
   current page gets the caps treatment, so the nav doesn't read as a
   crypto/web3-style all-caps bar */
.main-nav a{position:relative;font-family:var(--font-body);font-size:13.5px;font-weight:500;letter-spacing:normal;color:var(--ink-2);text-decoration:none;padding:9px 14px;border-radius:100px;transition:color .25s,background .25s,letter-spacing .25s;white-space:nowrap}
.main-nav a:hover{color:var(--ink);background:rgba(255,255,255,.07)}
.main-nav a.is-active{color:var(--ink);background:rgba(255,255,255,.07);text-transform:uppercase;font-weight:600;letter-spacing:.04em;font-size:12.5px}
/* Underline grows out from the center on hover, and stays fully drawn for
   whichever link is the current page (.is-active) */
.main-nav a::after{content:'';position:absolute;left:16px;right:16px;bottom:5px;height:2px;border-radius:2px;background:var(--grad-c);transform:scaleX(0);transition:transform .3s var(--ee)}
.main-nav a:hover::after{transform:scaleX(1)}
.main-nav a.is-active::after{transform:scaleX(1)}
@media(max-width:1180px){.main-nav a{padding:9px 10px;font-size:13px}}
@media(max-width:1080px){.main-nav{gap:0}.main-nav a{padding:9px 7px;font-size:12.5px}.main-nav a::after{left:8px;right:8px}}

/* Dropdowns (Вывод / Бонусы): opened by hover or keyboard focus, no JS.
   The parent is a real link to the hub page, so touch users who tap it
   land on the hub, which lists the same child pages. */
.nav-dd{position:relative}
.nav-dd-top{display:inline-flex;align-items:center;gap:6px}
.nav-dd-chev{width:6px;height:6px;border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:translateY(-2px) rotate(45deg);transition:transform .25s var(--ee);opacity:.7}
.nav-dd:hover .nav-dd-chev,.nav-dd:focus-within .nav-dd-chev{transform:translateY(1px) rotate(-135deg)}
/* padding-top on the menu (not margin) bridges the gap to the trigger, so
   the pointer can travel down without the menu closing */
.nav-dd-menu{position:absolute;top:100%;left:0;padding-top:10px;min-width:220px;z-index:280;opacity:0;visibility:hidden;transform:translateY(-6px);transition:opacity .2s var(--ee),transform .25s var(--ee),visibility .2s}
.nav-dd-menu::before{content:'';position:absolute;inset:10px 0 0;background:linear-gradient(180deg,rgba(20,24,42,.97) 0%,rgba(13,18,32,.97) 100%);backdrop-filter:blur(30px);-webkit-backdrop-filter:blur(30px);border:1px solid rgba(255,255,255,.14);border-radius:14px;box-shadow:0 24px 60px rgba(0,0,0,.45);z-index:-1}
.nav-dd:hover .nav-dd-menu,.nav-dd:focus-within .nav-dd-menu{opacity:1;visibility:visible;transform:translateY(0)}
.main-nav .nav-dd-menu a{display:block;padding:10px 14px;margin:0 6px;border-radius:9px;font-size:13.5px;text-transform:none;letter-spacing:normal;font-weight:500}
.main-nav .nav-dd-menu a:first-child{margin-top:6px}
.main-nav .nav-dd-menu a:last-child{margin-bottom:6px}
.main-nav .nav-dd-menu a::after{display:none}
/* current page inside the dropdown: tinted row + gradient bar on the left
   (the parent "Вывод" gets the regular .is-active treatment) */
.main-nav .nav-dd-menu a.is-active{color:var(--ink);background:rgba(99,102,241,.18);font-weight:600;position:relative}
.main-nav .nav-dd-menu a.is-active::before{content:'';position:absolute;left:0;top:8px;bottom:8px;width:3px;border-radius:2px;background:var(--grad-c)}

.hdr-tools{display:flex;align-items:center;gap:10px;flex-shrink:0}
.icon-btn{background:rgba(255,255,255,.08);border:1px solid var(--glass-border);color:var(--ink);width:40px;height:40px;border-radius:50%;display:none;align-items:center;justify-content:center;cursor:pointer;font-size:16px;transition:background .25s,border-color .25s}
@media(max-width:900px){.icon-btn.burger{display:flex}}

/* ============ Gift button (promo codes dropdown) ============ */
.gift-wrap{position:relative;flex-shrink:0}
.icon-btn.gift-btn{display:flex}
.icon-btn.gift-btn:hover{background:rgba(99,102,241,.16);border-color:rgba(99,102,241,.4)}
.gift-svg{width:19px;height:19px;color:var(--ink)}
.gift-dot{position:absolute;top:6px;right:6px;width:8px;height:8px;border-radius:50%;background:var(--pink);box-shadow:0 0 9px var(--pink);animation:pip 1.7s infinite}

.gift-panel{position:absolute;top:calc(100% + 12px);right:0;width:360px;max-width:calc(100vw - 32px);background:linear-gradient(180deg,rgba(20,24,42,.97) 0%,rgba(13,18,32,.97) 100%);backdrop-filter:blur(30px);-webkit-backdrop-filter:blur(30px);border:1px solid rgba(255,255,255,.14);border-radius:18px;box-shadow:0 24px 60px rgba(0,0,0,.45),0 0 40px rgba(99,102,241,.14);z-index:260;opacity:0;visibility:hidden;transform:translateY(-10px) scale(.97);transform-origin:top right;transition:opacity .25s var(--ee),transform .3s var(--ee),visibility .25s;padding:10px}
.gift-panel.open{opacity:1;visibility:visible;transform:translateY(0) scale(1)}
.gift-panel-head{font-family:var(--font-body);font-size:11px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3);padding:10px 12px 10px}
.gift-list{display:flex;flex-direction:column;gap:8px;padding-bottom:4px}
.gift-item{display:flex;align-items:center;gap:12px;padding:12px;border-radius:14px;transition:background .2s;background:rgba(255,255,255,.03)}
.gift-item:hover{background:rgba(255,255,255,.06)}
.gift-item-logo{position:relative;overflow:hidden;width:46px;height:46px;border-radius:12px;display:flex;align-items:center;justify-content:center;font-family:var(--font-sans);font-weight:700;font-size:15px;color:#fff;flex-shrink:0}
.gift-item-logo img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block}
.gift-item-body{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px}
.gift-item-name{font-family:var(--font-body);font-size:14.5px;font-weight:600;color:var(--ink)}
.gift-item-bonus{font-family:var(--font-body);font-size:12px;line-height:1.35;color:var(--ink-3);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
/* Two explicit actions side by side: copy-code button stays put (a real
   <button>, not a link, since it doesn't navigate), "Играть" is a plain
   outbound link — stacked in their own column so they read as separate
   controls instead of one ambiguous combined click. */
.gift-item-actions{display:flex;flex-direction:column;gap:6px;flex-shrink:0;width:84px}
.gift-item-code{font-family:var(--font-mono);font-size:10.5px;font-weight:700;letter-spacing:.03em;color:#fff;background:var(--grad-b);padding:7px 8px;border-radius:8px;border:none;text-align:center;white-space:nowrap;cursor:pointer;transition:transform .2s,background .3s}
.gift-item-code:hover{transform:translateY(-1px)}
.gift-item .copied-txt{display:none}
.gift-item.is-copied .gift-item-code{background:linear-gradient(135deg,#22c55e,#4ade80);color:#052e12}
.gift-item.is-copied .default-txt{display:none}
.gift-item.is-copied .copied-txt{display:inline}
.gift-item-play{display:flex;align-items:center;justify-content:center;font-family:var(--font-body);font-size:11.5px;font-weight:600;color:var(--ink);background:rgba(255,255,255,.08);border:1px solid var(--line-2);padding:6px 8px;border-radius:8px;text-decoration:none;white-space:nowrap;transition:background .2s,border-color .2s}
.gift-item-play:hover{background:rgba(255,255,255,.16);border-color:rgba(255,255,255,.3)}
/* ≤900px the burger (40px + 10px gap) sits right of the gift button, so the
   panel is shifted under it to line up with the header's right edge; on
   phones it's also limited to the 18px side gutters — otherwise it ran off
   the left edge of the screen. */
@media(max-width:900px){.gift-panel{right:-50px}}
@media(max-width:640px){.gift-panel{max-width:calc(100vw - 36px)}}
.burger .icon{display:flex;flex-direction:column;gap:4px;align-items:center}
.burger .icon i{display:block;width:16px;height:1.5px;background:currentColor;border-radius:1px;transition:all .3s var(--ee)}
.burger.open .icon i:nth-child(1){transform:translateY(5.5px) rotate(45deg)}
.burger.open .icon i:nth-child(2){opacity:0}
.burger.open .icon i:nth-child(3){transform:translateY(-5.5px) rotate(-45deg)}

@media(max-width:900px){.main-nav{display:none}}
.mobile-nav{display:none;flex-direction:column;gap:2px;padding:14px 0 4px}
.mobile-nav.open{display:flex;max-height:calc(100vh - 90px);overflow-y:auto;overscroll-behavior:contain}
.mobile-nav-label{font-family:var(--font-body);font-size:11px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-4);padding:16px 16px 6px}
.mobile-nav a.is-sub{padding:10px 16px 10px 28px;font-size:14px}
.mobile-nav a{position:relative;font-family:var(--font-body);font-size:14.5px;font-weight:500;letter-spacing:normal;color:var(--ink-2);text-decoration:none;padding:12px 16px;border-radius:12px;transition:color .2s,background .2s}
.mobile-nav a:hover{background:rgba(255,255,255,.06);color:var(--ink)}
.mobile-nav a.is-active{text-transform:uppercase;font-weight:600;letter-spacing:.04em;font-size:13.5px;color:var(--ink);background:rgba(255,255,255,.05)}
.mobile-nav a::after{content:'';position:absolute;left:16px;right:16px;bottom:6px;height:2px;border-radius:2px;background:var(--grad-c);transform:scaleX(0);transition:transform .3s var(--ee)}
.mobile-nav a:hover::after{transform:scaleX(1)}
.mobile-nav a.is-active::after{transform:scaleX(1)}

/* ============ Hero (full-bleed band) ============ */
.hero-band{width:100%;position:relative;padding:48px 0 30px;overflow:hidden;border-bottom:1px solid var(--line-2);background:linear-gradient(180deg,rgba(99,102,241,.09),rgba(236,72,153,.03) 55%,transparent 100%)}
.hero-glow{position:absolute;top:-15%;left:50%;transform:translateX(-50%);width:1100px;max-width:160%;height:460px;background:radial-gradient(ellipse,rgba(99,102,241,.28),transparent 65%);filter:blur(55px);z-index:0;pointer-events:none}
/* align-items:stretch (not center) so the heading/paragraph boxes span the
   full wrap width, exactly like the article sections below the cards do;
   text-align:center still keeps the actual copy centered inside those boxes */
.hero-inner{max-width:100%;width:100%;margin:0 auto;display:flex;flex-direction:column;align-items:stretch;gap:13px;text-align:center;position:relative;z-index:1}
.hero-inner .eyebrow{margin:0 auto}

/* ============ Breadcrumbs (inner pages, above the eyebrow/H1) ============ */
.breadcrumbs ol{list-style:none;display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:4px 0;padding:0;margin:0;font-family:var(--font-body);font-size:12.5px;color:var(--ink-3)}
.breadcrumbs li{display:inline-flex;align-items:center}
.breadcrumbs li+li::before{content:'›';margin:0 9px;color:var(--ink-4)}
.breadcrumbs a{color:var(--ink-3);text-decoration:none;transition:color .2s}
.breadcrumbs a:hover{color:var(--indigo-soft)}
.breadcrumbs li[aria-current]{color:var(--ink-2)}
/* Was ".hero h1" — a container that doesn't exist in the markup (the section
   is .hero-band), so the rule never matched and h1 fell back to .h-display's
   bare font-size (which has none, hence the tiny/inconsistent size in the
   screenshot). Fixed selector, and dialed the size back from the old
   112px-max value — strong, but not landing-page-for-a-token scale. */
.hero-band h1{font-size:clamp(32px,3.8vw,56px);max-width:1000px;margin:8px auto 0}
.hero-lead{max-width:840px;margin:0 auto}
.hero-meta{display:flex;flex-wrap:wrap;gap:10px;margin-top:4px;justify-content:center}
.meta-chip{display:inline-flex;align-items:center;gap:8px;background:rgba(255,255,255,.05);border:1px solid var(--line);padding:8px 14px;border-radius:100px;font-family:var(--font-mono);font-size:11.5px;color:var(--ink-3);letter-spacing:.03em}
.meta-chip strong,.meta-chip time{color:var(--ink-2);font-weight:500;font-style:normal}
.meta-chip.accent{border-color:rgba(74,222,128,.35);color:var(--green)}
.meta-chip .dot{width:5px;height:5px;border-radius:50%;background:currentColor;flex-shrink:0}

/* ============ Back to top ============ */
/* Rounded square (not a circle) with a plain background-color so the hover
   swap is a true color interpolation the browser can animate smoothly —
   a gradient-to-gradient background transition would just snap instead. */
.back-to-top{position:fixed;right:24px;bottom:24px;width:48px;height:48px;border-radius:14px;background-color:rgba(255,255,255,.08);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border:1px solid var(--glass-border);color:var(--ink);font-size:18px;line-height:1;display:flex;align-items:center;justify-content:center;cursor:pointer;z-index:250;opacity:0;visibility:hidden;transform:translateY(12px);transition:background-color .4s var(--ee),color .4s var(--ee),border-color .4s var(--ee),transform .3s var(--ee),box-shadow .3s var(--ee),opacity .3s var(--ee),visibility .3s}
.back-to-top.visible{opacity:1;visibility:visible;transform:translateY(0)}
.back-to-top:hover{background-color:var(--indigo-soft);border-color:var(--indigo-soft);color:var(--bg);transform:translateY(-3px);box-shadow:0 10px 26px rgba(165,180,252,.35)}
@media(max-width:640px){.back-to-top{right:16px;bottom:16px;width:44px;height:44px;border-radius:12px;font-size:16px}}

/* ============ TOC (details/summary) ============ */
/* Capped narrower than the full hero width: at 100% it visually read as a
   second "section end" right under the meta row, making the hero feel like
   it wrapped up twice. 980px still comfortably fits the two-column link
   grid without stretching edge-to-edge. */
.toc-details{margin:8px auto 0;max-width:980px;width:100%;text-align:left}
.toc-details summary{list-style:none;cursor:pointer;display:flex;align-items:center;gap:10px;padding:11px 18px;font-family:var(--font-body);font-size:13px;font-weight:500;color:var(--ink);user-select:none}
.toc-details summary::-webkit-details-marker{display:none}
.toc-details summary .toc-ic{width:20px;height:20px;border-radius:6px;background:rgba(99,102,241,.18);color:var(--indigo-soft);display:grid;place-items:center;font-size:11px;flex-shrink:0}
.toc-details summary .toc-chev{margin-left:auto;transition:transform .3s var(--ee);color:var(--ink-3);font-size:12px}
.toc-details[open] summary .toc-chev{transform:rotate(180deg)}
.toc-details .toc-body{padding:0 20px 18px 52px;border-top:1px solid var(--line-2);margin-top:2px}
/* Two columns so the now full-width panel doesn't leave a long empty gap
   next to a single narrow list of short links */
.toc-details ol{list-style:none;display:grid;grid-template-columns:1fr 1fr;gap:2px 32px;padding-top:14px}
.toc-details li a{display:flex;align-items:center;gap:10px;font-family:var(--font-body);font-size:15.5px;font-weight:500;color:var(--ink);text-decoration:none;padding:8px 0;transition:color .2s}
.toc-details li a:hover{color:var(--indigo-soft)}
.toc-details li a .num{font-family:var(--font-mono);font-size:12px;color:var(--ink-2)}
@media(max-width:560px){.toc-details ol{grid-template-columns:1fr}}

/* ============ Layout: content + sidebar ============ */
.layout{display:grid;grid-template-columns:1fr 340px;gap:52px;align-items:start;padding-top:40px;padding-bottom:80px}
.content{display:flex;flex-direction:column;gap:72px;min-width:0}
/* Article + FAQ live outside .layout entirely, so they run full width with no
   sidebar next to them. */
.content-full{display:flex;flex-direction:column;gap:72px;padding-bottom:80px}
/* Not sticky on purpose: the sidebar scrolls in the normal document flow, at
   exactly the same rate as the casino-cards column beside it, instead of
   pinning in place while the cards scroll past. */
.sidebar{display:flex;flex-direction:column;gap:20px}

section.block{scroll-margin-top:calc(var(--header-h) + 16px)}
.block-head{max-width:760px;display:flex;flex-direction:column;gap:14px;margin-bottom:32px}
.block-head h2{font-size:clamp(30px,4vw,50px)}
.block-head p{max-width:640px}

/* ============ Casino cards ============ */
.cards-col{display:flex;flex-direction:column;gap:20px;padding-top:6px}
.ccard{display:grid;grid-template-columns:230px 1fr;transition:all .4s var(--ee)}
.ccard:hover{border-color:rgba(165,180,252,.35);transform:translateY(-2px)}
/* Three simultaneous effects (breathing glow + bobbing medal + looping
   button sweep) read more like an ad banner than an editorial ranking.
   Down to a single, one-shot effect: the border/glow is a static "this is
   the pick" marker, and the only motion is a light sweep across the CTA
   that plays once when the card scrolls into view. */
.ccard.top1{border-color:rgba(251,191,36,.42);box-shadow:0 0 28px rgba(251,191,36,.08)}
.ccard.top1:hover{border-color:rgba(251,191,36,.6)}
.ccard.top1 .ccard-side .btn-primary::after{
  content:'';position:absolute;top:0;left:-60%;width:40%;height:100%;
  background:linear-gradient(115deg,transparent,rgba(255,255,255,.65),transparent);
  transform:skewX(-20deg);
  opacity:0;
}
.ccard.top1.is-visible .ccard-side .btn-primary::after{
  animation:topBtnShineOnce 1.1s ease-out .9s 1 both;
}
@keyframes topBtnShineOnce{
  0%{left:-60%;opacity:0}
  15%{opacity:1}
  60%{left:130%;opacity:1}
  100%{left:130%;opacity:0}
}

.ccard-side{padding:20px;display:flex;flex-direction:column;align-items:center;text-align:center;gap:12px;border-right:1px solid var(--line-2);background:rgba(255,255,255,.02)}
.rank-medal{font-family:var(--font-mono);font-size:16px;font-weight:700;letter-spacing:.1em;color:var(--ink);display:flex;align-items:center;gap:6px}
.rank-medal .rk-emoji{font-size:18px;line-height:1}

.ccard-logo-box{position:relative;width:100%;aspect-ratio:4/3;border-radius:16px;overflow:hidden;display:flex;align-items:center;justify-content:center;box-shadow:inset 0 0 0 1px rgba(255,255,255,.1),0 10px 26px rgba(0,0,0,.35)}
.logo-frame{background:rgba(255,255,255,.04)}
.logo-frame .mark{visibility:hidden}
.logo-frame.logo-fallback{background:var(--logo-fallback)}
.logo-frame.logo-fallback .mark{visibility:visible}
.ccard-logo-box .mark{font-family:var(--font-sans);font-weight:700;font-size:27px;color:#fff;letter-spacing:-.02em;text-shadow:0 2px 14px rgba(0,0,0,.4)}
/* Real logo sits above the gradient+initials fallback; if the image 404s,
   its onerror sets display:none and the fallback mark shows through */
.ccard-logo-box img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block}
.ccard-ribbon{position:absolute;top:9px;left:9px;display:inline-flex;align-items:center;padding:5px 11px;border-radius:100px;font-family:var(--font-body);font-size:10px;font-weight:700;letter-spacing:.01em;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);background:rgba(10,14,26,.62);border:1px solid currentColor;max-width:calc(100% - 18px);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

.ccard-name{font-family:var(--font-sans);font-weight:500;font-size:16px;letter-spacing:-.01em}
/* A generic green "✓ Лицензия подтверждена" on every card reads like a
   system-verified badge (green is already our success/score color)
   rather than an actual fact. Two concrete lines — jurisdiction + licence
   number, and when it was checked — earn more trust than another glow. */
.ccard-trust{display:flex;flex-direction:column;align-items:center;gap:1px}
.ccard-trust-license{font-family:var(--font-body);font-size:10.5px;font-weight:600;color:var(--ink-2)}
.ccard-trust-checked{font-family:var(--font-body);font-size:9.5px;color:var(--ink-4)}

.btn-green{background:linear-gradient(135deg,#22c55e,#4ade80);color:#052e12;border:none;font-family:var(--font-body);font-weight:700;font-size:13.5px;padding:12px 18px;border-radius:100px;cursor:pointer;text-decoration:none;display:inline-flex;align-items:center;justify-content:center;gap:8px;transition:all .25s}
.btn-green:hover{transform:translateY(-2px);box-shadow:0 10px 24px rgba(74,222,128,.3)}

/* Horizontal bar: bonus label+title on the left, copy-code button pinned
   to the right — one line, spanning the same width as the specs-grid
   above it rather than the old centered vertical card. */
.promo-box{margin-top:2px;width:100%;padding:12px 14px;border-radius:14px;background:rgba(99,102,241,.08);border:1px dashed rgba(165,180,252,.35);display:flex;align-items:center;justify-content:space-between;gap:14px}
.promo-box .promo-info{display:flex;flex-direction:column;gap:2px;min-width:0}
.promo-box .pb-label{font-family:var(--font-body);font-size:9.5px;font-weight:500;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-3)}
.promo-box .pb-title{font-family:var(--font-sans);font-weight:500;font-size:13px;color:var(--ink);line-height:1.3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.promo-code-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;background:var(--grad-b);color:#fff;font-family:var(--font-mono);font-weight:700;font-size:12.5px;letter-spacing:.06em;padding:10px 16px;border-radius:10px;border:none;cursor:pointer;flex-shrink:0;white-space:nowrap;transition:transform .2s,background .3s}
.promo-code-btn:hover{transform:translateY(-1px)}
.promo-code-btn .copied-txt{display:none}
.promo-code-btn.is-copied{background:linear-gradient(135deg,#22c55e,#4ade80);color:#052e12}
.promo-code-btn.is-copied .default-txt{display:none}
.promo-code-btn.is-copied .copied-txt{display:inline}

.ccard-body{padding:22px 24px;display:flex;flex-direction:column;gap:18px}
.ccard-head{display:flex;justify-content:space-between;align-items:center;gap:20px;flex-wrap:wrap}
.ccard-offer .bonus-title{font-family:var(--font-sans);font-weight:500;font-size:20px;letter-spacing:-.01em;background:var(--grad-a);-webkit-background-clip:text;background-clip:text;color:transparent;display:inline-block}
.ccard-offer .bonus-sub{font-family:var(--font-body);font-size:12.5px;color:var(--ink-3);margin-top:4px}
/* Anchored to the offer with a divider, and vertically centered against it,
   so the eye reads "offer → score" as one line instead of the score
   floating disconnected in the corner */
.score-box{display:flex;flex-direction:column;align-items:center;flex-shrink:0;padding-left:20px;border-left:1px solid var(--line-2)}
/* Stars removed: they just repeated the number directly above the four
   ratings below. "4.8 / 5" reads as one clean measurement instead of two
   competing rating systems. */
.score-box .sb-v{font-family:var(--font-sans);font-weight:600;font-size:26px;letter-spacing:-.02em}
.score-box .sb-v .sb-max{font-family:var(--font-body);font-size:14px;font-weight:500;color:var(--ink-3)}
.score-box .sb-l{font-family:var(--font-body);font-size:12px;font-weight:600;color:var(--ink);letter-spacing:.1em;text-transform:uppercase}

.rt-badges{display:grid;grid-template-columns:1fr 1fr;gap:14px 24px}
.rt-badge{display:flex;align-items:center;gap:12px}
.rb-circle{width:42px;height:42px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-family:var(--font-sans);font-weight:700;font-size:13px;flex-shrink:0;border:2px solid;background:rgba(255,255,255,.03)}
.rb-circle.good{border-color:var(--green);color:var(--green)}
.rb-circle.mid{border-color:var(--amber);color:var(--amber)}
.rb-circle.low{border-color:var(--red);color:var(--red)}
.rb-label{font-family:var(--font-body);font-size:13px;color:var(--ink);font-weight:600}

.feats-grid{display:grid;grid-template-columns:1fr 1fr;gap:9px}
.chip{font-family:var(--font-body);font-size:13px;color:var(--ink-2);background:rgba(255,255,255,.05);border:1px solid var(--line-2);padding:8px 14px;border-radius:100px;display:flex;align-items:center;gap:7px}
.chip.feat::before{content:'\2713';color:var(--green);font-weight:700;font-size:10px}

.icon-block-row{display:flex;gap:32px;flex-wrap:wrap}
.icon-block{display:flex;flex-direction:column;gap:9px}
.icon-group-label{font-family:var(--font-body);font-size:10.5px;font-weight:500;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-4)}
.icon-row{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.icon-chip{width:34px;height:34px;border-radius:10px;overflow:hidden;flex-shrink:0;box-shadow:0 3px 10px rgba(0,0,0,.35)}
.icon-chip svg{display:block;width:100%;height:100%}
/* Real brand SVGs (payments + a subset of providers) sit on a white card,
   since the source logos assume a light background and use object-fit so
   non-square marks (e.g. Visa, Mastercard) don't get squashed into the
   34x34 chip. Anything not in REAL_ICONS keeps the old gradient+initials
   placeholder untouched below. */
.icon-chip.has-real-logo{background:#fff;display:flex;align-items:center;justify-content:center}
.icon-chip.has-real-logo img{width:100%;height:100%;object-fit:contain;padding:5px;box-sizing:border-box}
.icon-more{width:34px;height:34px;border-radius:10px;background:rgba(255,255,255,.06);border:1px solid var(--line);color:var(--ink-3);font-family:var(--font-mono);font-size:10.5px;font-weight:600;cursor:pointer;transition:all .2s;flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;line-height:1}
.icon-more:hover{color:var(--ink);border-color:rgba(255,255,255,.3)}

.specs-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px 20px;padding:14px 16px;background:rgba(255,255,255,.02);border:1px solid var(--line-2);border-radius:14px}
.spec{display:flex;flex-direction:column;gap:2px}
.spec .sp-k{font-family:var(--font-body);font-size:10px;font-weight:500;letter-spacing:.04em;text-transform:uppercase;color:var(--ink-4)}
.spec .sp-v{font-family:var(--font-sans);font-size:13px;font-weight:500}

/* ============ Collapsed vs. "Подробнее" ============ */
/* Each card was carrying score + stars + 4 ratings + 4 advantages +
   providers + payments + 7 specs + 2 CTAs + a promo code + a link — a
   mini-page repeated ten times. The collapsed state now only shows what's
   needed to compare and pick: offer, overall score, the 4 ratings, and the
   3 specs people actually decide on. Everything else (advantages,
   providers, payments, the rest of the specs, the promo code) sits behind
   one toggle, so a 10-card list stays scannable. */
.ccard-toggle{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;padding:11px 16px;background:rgba(255,255,255,.04);border:1px solid var(--line-2);border-radius:12px;color:var(--indigo-soft);font-family:var(--font-body);font-size:13px;font-weight:500;cursor:pointer;transition:background .2s,border-color .2s}
.ccard-toggle:hover{background:rgba(99,102,241,.1);border-color:rgba(99,102,241,.3)}
.ccard-toggle .ccard-toggle-chev{font-size:11px;transition:transform .3s var(--ee)}
.ccard-toggle[aria-expanded="true"] .ccard-toggle-chev{transform:rotate(180deg)}

/* margin-top cancels the parent .ccard-body's flex `gap` so a collapsed
   (max-height:0) panel leaves no dead space under the toggle button; the
   same 18px gap comes back once expanded via .ccard-more-in's padding-top */
.ccard-more-panel{max-height:0;overflow:hidden;margin-top:-18px;transition:max-height .4s var(--ee)}
.ccard-more-in{display:flex;flex-direction:column;gap:18px;padding-top:18px}

.ccard-foot{margin-top:-4px}
.ccard-more{font-family:var(--font-body);font-size:12.5px;color:var(--indigo-soft);font-weight:500;display:inline-flex;align-items:center;gap:6px;text-decoration:none}
.ccard-more span{transition:transform .3s;display:inline-block}
.ccard-more:hover span{transform:translateX(4px)}


/* ============ Filter bar ============ */
.filter-bar{padding:18px 20px;margin-bottom:20px}
.filter-bar-top{display:flex;align-items:center;gap:14px;flex-wrap:wrap}
.search-field{flex:1 1 220px;min-width:180px;display:flex;align-items:center;gap:10px;background:rgba(255,255,255,.05);border:1px solid var(--line);border-radius:100px;padding:10px 16px;color:var(--ink-3);transition:border-color .2s}
.search-field:focus-within{border-color:rgba(165,180,252,.4)}
.search-field svg{width:16px;height:16px;flex-shrink:0}
.search-field input{flex:1;min-width:0;background:none;border:none;outline:none;color:var(--ink);font-family:var(--font-body);font-size:13.5px}
.search-field input::placeholder{color:var(--ink-4)}

.sort-field{display:flex;align-items:center;gap:8px;flex-shrink:0}
.sort-field label{font-family:var(--font-body);font-size:11.5px;color:var(--ink-4);white-space:nowrap}
.sort-field select{background:rgba(255,255,255,.05);border:1px solid var(--line);border-radius:100px;padding:9px 14px;color:var(--ink);font-family:var(--font-body);font-size:12.5px;cursor:pointer;outline:none}
.sort-field select:focus{border-color:rgba(165,180,252,.4)}
.sort-field select option{background:var(--bg-2);color:var(--ink)}

.filter-toggle-btn{display:inline-flex;align-items:center;gap:8px;background:rgba(255,255,255,.05);border:1px solid var(--line);border-radius:100px;padding:10px 16px;color:var(--ink);font-family:var(--font-body);font-size:13px;font-weight:500;cursor:pointer;transition:background .2s,border-color .2s;flex-shrink:0}
.filter-toggle-btn:hover{background:rgba(99,102,241,.1);border-color:rgba(99,102,241,.3)}
.filter-toggle-btn svg{width:16px;height:16px}
.filter-count-badge{background:var(--grad-b);color:#fff;font-family:var(--font-mono);font-size:10.5px;font-weight:700;min-width:18px;height:18px;border-radius:9px;display:inline-flex;align-items:center;justify-content:center;padding:0 5px}
.filter-toggle-chev{font-size:10px;color:var(--ink-3);transition:transform .3s var(--ee)}
.filter-toggle-btn[aria-expanded="true"] .filter-toggle-chev{transform:rotate(180deg)}

.filter-groups{max-height:0;overflow:hidden;transition:max-height .35s var(--ee)}
.filter-group{padding:16px 0 4px;border-top:1px solid var(--line-2);margin-top:16px}
.filter-group-label{display:block;font-family:var(--font-body);font-size:10.5px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-4);margin-bottom:10px}
.filter-group-opts{display:flex;flex-wrap:wrap;gap:8px}

.filter-chip{font-family:var(--font-body);font-size:12.5px;color:var(--ink-2);background:rgba(255,255,255,.04);border:1px solid var(--line-2);padding:8px 14px;border-radius:100px;cursor:pointer;transition:all .2s;white-space:nowrap}
.filter-chip:hover{border-color:rgba(165,180,252,.35);color:var(--ink)}
.filter-chip.is-active{background:rgba(99,102,241,.18);border-color:rgba(99,102,241,.45);color:var(--ink)}
.filter-chip-icon{display:inline-flex;align-items:center;gap:8px;padding:6px 14px 6px 8px}
.filter-chip-icon img{width:22px;height:22px;border-radius:6px;background:#fff;object-fit:contain;padding:2px;box-sizing:border-box}

.filter-bar-bottom{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:14px}
.filter-results{font-family:var(--font-mono);font-size:11.5px;color:var(--ink-3);letter-spacing:.02em}
.filter-reset{font-family:var(--font-body);font-size:12px;color:var(--indigo-soft);background:none;border:none;cursor:pointer;padding:4px 0}
.filter-reset:hover{color:#fff}

.filter-empty{padding:36px 28px;text-align:center;display:flex;flex-direction:column;align-items:center;gap:10px}
.filter-empty p{max-width:420px}
.filter-empty .btn-secondary{margin-top:6px}

@media(max-width:640px){
  .filter-bar-top{flex-direction:column;align-items:stretch}
  /* flex:1 1 220px is a row-layout sizing (grow along a horizontal main
     axis, 220px min-width). Once the container above switches to a column,
     that same basis applies to height instead — a 220px-tall search box.
     Drop the grow/basis here so it just sizes to its own content. */
  .search-field{flex:none}
  .sort-field{justify-content:space-between}
  .filter-toggle-btn{justify-content:center}
}

/* ============ Compare: checkbox on card ============ */
.cmp-check{display:flex;align-items:center;justify-content:center;gap:7px;margin-top:2px;padding:8px 10px;border-radius:10px;cursor:pointer;font-family:var(--font-body);font-size:11.5px;color:var(--ink-3);transition:color .2s}
.cmp-check:hover{color:var(--ink)}
.cmp-check input{accent-color:var(--indigo);width:14px;height:14px;cursor:pointer}
.cmp-check input:disabled{cursor:not-allowed;opacity:.4}

/* ============ Compare: sticky bottom bar ============ */
.compare-bar{position:fixed;left:0;right:0;bottom:0;z-index:280;background:linear-gradient(180deg,rgba(13,18,32,.85),rgba(10,14,26,.97));backdrop-filter:blur(24px);-webkit-backdrop-filter:blur(24px);border-top:1px solid var(--glass-border);box-shadow:0 -16px 40px rgba(0,0,0,.35)}
.compare-bar-in{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:14px 6vmin}
.compare-bar-list{display:flex;align-items:center;gap:10px;flex-wrap:wrap;flex:1;min-width:0}
.compare-mini{display:flex;align-items:center;gap:8px;background:rgba(255,255,255,.06);border:1px solid var(--line-2);border-radius:100px;padding:5px 10px 5px 5px}
.compare-mini-logo{position:relative;overflow:hidden;width:26px;height:26px;border-radius:50%;display:grid;place-items:center;font-family:var(--font-sans);font-weight:700;font-size:9px;color:#fff;flex-shrink:0}
.compare-mini-logo img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.compare-mini-name{font-family:var(--font-body);font-size:12px;color:var(--ink);white-space:nowrap}
.compare-mini-remove{background:none;border:none;color:var(--ink-4);cursor:pointer;font-size:15px;line-height:1;padding:0 2px}
.compare-mini-remove:hover{color:var(--red)}
.compare-bar-actions{display:flex;align-items:center;gap:10px;flex-shrink:0}

/* ============ Compare: modal table ============ */
.compare-modal{position:fixed;inset:0;z-index:400;display:flex;align-items:center;justify-content:center;padding:24px}
.compare-modal-backdrop{position:absolute;inset:0;background:rgba(6,8,16,.72);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px)}
.compare-modal-panel{position:relative;width:100%;max-width:980px;max-height:84vh;overflow-y:auto;padding:26px 26px 30px;z-index:1;backdrop-filter:var(--glass-blur);-webkit-backdrop-filter:var(--glass-blur)}
.compare-modal-head{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:18px}
.compare-modal-title{font-family:var(--font-sans);font-weight:500;font-size:22px}
.compare-modal-close{width:36px;height:36px;border-radius:50%;background:rgba(255,255,255,.06);border:1px solid var(--line);color:var(--ink);font-size:18px;line-height:1;cursor:pointer;flex-shrink:0;display:flex;align-items:center;justify-content:center;transition:background .2s}
.compare-modal-close:hover{background:rgba(255,255,255,.14)}

/* Compare table: fixed label column, casino columns share the rest equally,
   long values (bonus, licence №) wrap inside their own column instead of
   running into the next one. Up to 900px it scrolls sideways instead, with
   150px casino columns (--cmp-n = number of casinos, set in JS) and the
   label column pinned. */
.compare-table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch;border-radius:var(--r-lg)}
table.crit.compare-table{table-layout:fixed;min-width:0}
table.crit.compare-table th:first-child,table.crit.compare-table td.cmp-row-label{width:170px}
table.crit.compare-table th,table.crit.compare-table td{white-space:normal;overflow-wrap:anywhere;vertical-align:middle;line-height:1.45}
table.crit.compare-table thead th{padding:16px 12px}
table.crit.compare-table tbody td{padding:13px 16px}
@media(max-width:900px){
  table.crit.compare-table{width:calc(112px + var(--cmp-n,4) * 150px);min-width:100%}
  table.crit.compare-table th:first-child,table.crit.compare-table td.cmp-row-label{width:112px;position:sticky;left:0;z-index:2;background:var(--bg-2)}
  table.crit.compare-table thead th:first-child{background:linear-gradient(180deg,rgba(99,102,241,.16),rgba(99,102,241,.03)),var(--bg-2)}
  table.crit.compare-table tbody td{padding:12px 12px;font-size:13px}
}
.cmp-th-in{display:flex;flex-direction:column;align-items:center;gap:8px;font-family:var(--font-sans);font-weight:500;font-size:13px;color:var(--ink);text-transform:none;letter-spacing:0}

.cmp-list-cell{display:flex;flex-wrap:wrap;align-items:center;gap:6px;white-space:normal}
.cmp-list-cell .icon-chip{width:28px;height:28px;border-radius:8px}
.cmp-list-more{flex-shrink:0;padding:5px 10px;border-radius:100px;background:rgba(99,102,241,.14);border:1px solid rgba(99,102,241,.35);color:var(--indigo-soft);font-family:var(--font-sans);font-weight:500;font-size:12px;cursor:pointer;transition:all .2s}
.cmp-list-more:hover{background:rgba(99,102,241,.22);color:var(--ink)}

/* Anchored flyout for a "+N"/"Все (N)" button (cards + compare table) —
   positioned in JS next to the button that opened it, no backdrop, page (or
   the compare modal underneath it) stays interactive. Needs a z-index above
   the compare modal (400) since it can open on top of it. */
.icon-popover{position:fixed;z-index:420;max-width:380px;background:var(--bg-2);border:1px solid var(--line);border-radius:14px;padding:14px;box-shadow:0 20px 50px rgba(0,0,0,.55)}
.icon-popover .icon-row{gap:8px}
.icon-popover-arrow{position:absolute;left:50%;bottom:-7px;width:14px;height:14px;background:var(--bg-2);border-right:1px solid var(--line);border-bottom:1px solid var(--line);transform:translateX(-50%) rotate(45deg)}
.icon-popover.is-below .icon-popover-arrow{bottom:auto;top:-7px;border-right:none;border-bottom:none;border-left:1px solid var(--line);border-top:1px solid var(--line)}
.compare-th-logo{position:relative;overflow:hidden;width:40px;height:40px;border-radius:12px;display:grid;place-items:center;font-family:var(--font-sans);font-weight:700;font-size:13px;color:#fff}
.compare-th-logo img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}

@media(max-width:640px){
  .compare-bar-in{flex-direction:column;align-items:stretch;gap:12px;padding:12px 18px}
  .compare-bar-list{order:2}
  .compare-bar-actions{order:1;justify-content:space-between}
  .compare-modal{padding:0}
  .compare-modal-panel{max-height:100vh;height:100%;border-radius:0}
}

/* The compare bar is fixed to the viewport bottom, so while it's visible it
   would otherwise sit on top of the back-to-top button and the last line of
   the footer disclaimer. */
body.has-compare-bar .back-to-top{bottom:96px}
body.has-compare-bar .site-footer{padding-bottom:90px}
@media(max-width:640px){
  body.has-compare-bar .back-to-top{bottom:150px}
  body.has-compare-bar .site-footer{padding-bottom:150px}
}

@media(max-width:960px){
  .ccard{grid-template-columns:1fr}
  .ccard-side{border-right:none;border-bottom:1px solid var(--line-2)}
  .ccard-logo-box{max-width:280px;margin:0 auto}
}
@media(max-width:640px){
  .specs-grid{grid-template-columns:repeat(2,1fr)}
  .icon-block-row{gap:20px}
}
@media(max-width:480px){
  .rt-badges{grid-template-columns:1fr}
  .feats-grid{grid-template-columns:1fr}
  /* the offer/score divider only makes sense on one line; drop it once the
     header wraps onto two lines on narrow phones */
  .score-box{padding-left:0;border-left:none;align-items:flex-start}
}

/* ============ Article ============ */
.article{display:flex;flex-direction:column;gap:44px}
.article h2{font-size:clamp(28px,3.6vw,44px);margin-bottom:16px}
.article h3{font-family:var(--font-sans);font-weight:500;font-size:21px;letter-spacing:-.01em;margin:4px 0 8px}
.article p{margin-bottom:14px}
.article p:last-child{margin-bottom:0}
.article ul,.article ol{padding-left:22px;display:flex;flex-direction:column;gap:8px;color:var(--ink-2);font-family:var(--font-body);font-size:15px;line-height:1.7}
.article strong{color:var(--ink);font-weight:600}
/* visual bold without <strong> semantics (lead-ins in article lists) */
.article .bold{color:var(--ink);font-weight:700}
/* Text-heavy article: body paragraphs, sub-headings, lists and callouts */
.article .block > p{font-family:var(--font-body);font-size:15px;line-height:1.75;color:var(--ink-2)}
.article .block > h3{margin-top:30px}
.article .block > ul,.article .block > ol{margin-bottom:16px}
.article li::marker{color:var(--indigo-soft);font-weight:600}
.article blockquote{margin:20px 0;padding:16px 20px 16px 22px;border-left:3px solid var(--indigo-soft);background:rgba(99,102,241,.08);border-radius:0 14px 14px 0;font-family:var(--font-body);font-size:15px;line-height:1.7;color:var(--ink)}
.article a,.faq-a a{color:var(--indigo-soft);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:3px;transition:color .2s}
.article a:hover,.faq-a a:hover{color:var(--ink)}

.info-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:16px;margin-top:24px}
.info-card{padding:22px;display:flex;flex-direction:column;gap:10px}
.info-card .ic-num{font-family:var(--font-mono);font-size:20px;font-weight:700;color:var(--indigo-soft);letter-spacing:.1em}
.info-card h3{margin:0}
.info-card p{font-size:13px;color:var(--ink-3);margin:0}
@media(max-width:640px){.info-grid{grid-template-columns:1fr}}

.tbl-wrap{overflow-x:auto;margin-top:20px;border:1px solid var(--glass-border);border-radius:var(--r-lg);background:var(--glass-bg)}
table.crit{width:100%;border-collapse:separate;border-spacing:0;font-family:var(--font-body);min-width:560px}
table.crit thead th{padding:16px 20px;text-align:left;font-family:var(--font-sans);font-weight:500;font-size:12.5px;letter-spacing:.04em;text-transform:uppercase;color:var(--indigo-soft);background:linear-gradient(180deg,rgba(99,102,241,.16),rgba(99,102,241,.03));border-bottom:1px solid rgba(99,102,241,.3);white-space:nowrap}
table.crit thead th:first-child{border-top-left-radius:var(--r-lg)}
table.crit thead th:last-child{border-top-right-radius:var(--r-lg)}
table.crit tbody td{padding:15px 20px;font-size:13.5px;color:var(--ink-2);border-bottom:1px solid var(--line-2);transition:background .2s}
table.crit tbody tr:nth-child(even) td{background:rgba(255,255,255,.02)}
table.crit tbody tr:hover td{background:rgba(99,102,241,.07)}
table.crit tbody tr:last-child td{border-bottom:none}
table.crit tbody tr:last-child td:first-child{border-bottom-left-radius:var(--r-lg)}
table.crit tbody tr:last-child td:last-child{border-bottom-right-radius:var(--r-lg)}
table.crit tbody td:first-child{color:var(--ink);font-weight:500}
/* Methodology table only (.crit-method) — the compare table shares the .crit
   look but has its own column layout below. Fixed column widths + centred
   "Вес" header, so the header lines up with the weight pills below it. */
table.crit-method{table-layout:fixed}
table.crit-method th:nth-child(1){width:26%}
table.crit-method th:nth-child(2){width:110px;text-align:center}
table.crit-method td.w{text-align:center}
table.crit-method tbody td:last-child{color:var(--ink-3);line-height:1.5}
/* Phones: stack each row as a mini card instead of a 560px table that
   scrolls sideways. */
@media(max-width:640px){
  table.crit-method{min-width:0}
  table.crit-method thead{display:none}
  table.crit-method,table.crit-method tbody,table.crit-method tr,table.crit-method td{display:block;width:auto}
  table.crit-method tbody tr{display:grid;grid-template-columns:1fr auto;gap:6px 12px;padding:14px 16px;border-bottom:1px solid var(--line-2)}
  table.crit-method tbody tr:last-child{border-bottom:none}
  table.crit-method tbody td{padding:0;border:none;background:none!important}
  table.crit-method tbody td:first-child{align-self:center}
  table.crit-method tbody td:last-child{grid-column:1/-1;font-size:13px}
}
.crit-weight{display:inline-block;padding:4px 13px;border-radius:100px;background:rgba(99,102,241,.16);border:1px solid rgba(99,102,241,.3);color:var(--indigo-soft);font-family:var(--font-mono);font-weight:700;font-size:12.5px}

/* ============ FAQ ============ */
/* Each question is now its own separate tile (glass-card), not one shared
   panel split by divider lines */
.faq-list{display:flex;flex-direction:column;gap:12px}
.faq-item{transition:border-color .25s}
.faq-item:hover{border-color:rgba(165,180,252,.3)}
.faq-item.open{border-color:rgba(99,102,241,.4)}
.faq-q{width:100%;background:none;border:none;color:var(--ink);font-family:var(--font-sans);font-size:15.5px;font-weight:500;text-align:left;padding:19px 22px;display:flex;justify-content:space-between;align-items:center;gap:16px;cursor:pointer;letter-spacing:-.005em}
/* A bigger, badge-styled toggle instead of a bare "+" character */
.faq-q .fq-plus{width:32px;height:32px;border-radius:50%;background:rgba(99,102,241,.14);display:flex;align-items:center;justify-content:center;font-size:20px;line-height:1;color:var(--indigo-soft);transition:transform .3s var(--ee),background .3s,color .3s;flex-shrink:0}
.faq-item.open .fq-plus{transform:rotate(135deg);background:var(--grad-b);color:#fff}
.faq-a{max-height:0;overflow:hidden;transition:max-height .4s var(--ee)}
.faq-a-in{padding:0 22px 20px;font-family:var(--font-body);font-size:13.5px;line-height:1.65;color:var(--ink-2)}

/* ============ Sidebar widgets ============ */
.widget{padding:22px}
.widget-title{font-family:var(--font-sans);font-weight:600;font-size:16px;letter-spacing:-.01em;margin-bottom:16px;display:flex;align-items:center;gap:9px}
.widget-title .wt-dot{width:6px;height:6px;border-radius:50%;background:var(--pink)}

/* Sidebar slot lists */
.slot-list{display:flex;flex-direction:column;gap:18px;padding-top:6px}
.slot-i{position:relative;display:flex;align-items:center;gap:14px;padding:12px;border-radius:16px;background:rgba(255,255,255,.04);border:1px solid var(--line-2)}
.slot-thumb{position:relative;overflow:hidden;width:48%;aspect-ratio:450/317;border-radius:12px;background:rgba(255,255,255,.04);flex-shrink:0}
.slot-thumb img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block}
/* RTP ribbon: flag with a notched tail, sticking out past the card's
   top-left corner, plus a darker "fold" triangle under its left end. */
/* clip-path lives on the inner span: on the outer one it would also clip
   away the ::after fold. */
.slot-rtp{position:absolute;top:-8px;left:-6px;z-index:2;filter:drop-shadow(0 4px 8px rgba(225,29,72,.35))}
.slot-rtp-in{display:block;padding:4px 16px 4px 9px;background:linear-gradient(135deg,#ef4444,#e11d48);color:#fff;font-family:var(--font-sans);font-weight:700;font-size:11.5px;letter-spacing:.01em;clip-path:polygon(0 0,100% 0,calc(100% - 8px) 50%,100% 100%,0 100%)}
.slot-rtp::after{content:"";position:absolute;left:0;top:100%;border-top:6px solid #7f1d1d;border-left:6px solid transparent}
.slot-b{flex:1;min-width:0;display:flex;flex-direction:column;align-items:center;gap:6px;text-align:center}
.slot-name{font-family:var(--font-sans);font-size:15px;font-weight:600;color:var(--ink);line-height:1.25}
.slot-rating{display:inline-flex;align-items:center;gap:4px;font-family:var(--font-mono);font-size:14px;font-weight:700;color:var(--pink-soft)}
.slot-star{color:var(--amber);font-size:15px}
/* Eight pulsing CTAs in a sidebar is noise — keep the gradient, drop the pulse */
.btn-play.slot-play{width:100%;justify-content:center;margin-top:4px;padding:10px 8px;font-size:12px;letter-spacing:.03em;text-transform:uppercase;border-radius:10px;animation:none}

.mini-list{display:flex;flex-direction:column;gap:5px}
.mini-i{display:flex;align-items:center;gap:12px;text-decoration:none;color:inherit;padding:9px 10px;border-radius:12px;transition:background .2s,border-color .2s;border:1px solid transparent}
.mini-i:hover{background:rgba(255,255,255,.05)}
/* Rank badge is a small filled pill instead of plain grey digits, and #1
   gets the same gold treatment as the top casino card, so the leader is
   recognizable at a glance even in this compact list */
.mini-n{font-family:var(--font-mono);font-size:10.5px;font-weight:700;color:var(--ink-3);width:20px;height:20px;border-radius:50%;background:rgba(255,255,255,.06);display:flex;align-items:center;justify-content:center;flex-shrink:0}
.mini-i--top{background:rgba(251,191,36,.07);border-color:rgba(251,191,36,.28)}
.mini-i--top:hover{background:rgba(251,191,36,.11)}
.mini-i--top .mini-n{background:var(--grad-gold);color:#3b2400}
.mini-logo{position:relative;overflow:hidden;width:34px;height:34px;border-radius:10px;display:grid;place-items:center;font-family:var(--font-sans);font-weight:700;font-size:11px;color:#fff;flex-shrink:0}
.mini-logo img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block}
.mini-b{display:flex;flex-direction:column;gap:1px;min-width:0;flex:1}
.mini-name{font-family:var(--font-body);font-size:13px;font-weight:500;color:var(--ink)}
/* Up to 2 lines instead of a one-line ellipsis: long offers like
   "300 000 ₽ + 500 FS FREEBET" otherwise lose their tail. */
.mini-bonus{font-family:var(--font-body);font-size:11px;line-height:1.35;color:var(--ink-3);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
/* Quick-glance quality signal next to each casino */
.mini-score{flex-shrink:0;font-family:var(--font-mono);font-size:11px;font-weight:700;color:var(--green);background:rgba(74,222,128,.13);padding:4px 8px;border-radius:100px}



@media(max-width:1180px){
  .layout{grid-template-columns:1fr}
  /* DOM order is content (10 cards) then aside, so on a single column that
     buried the Top-5 widget and the calculator below the entire ranking.
     `order` puts them first without touching the DOM or duplicating markup. */
  .sidebar{order:-1}
}

/* ============ Footer ============ */
.site-footer{border-top:1px solid var(--line-2);padding:52px 0 28px;position:relative;z-index:1}
.ftr-nav{display:grid;grid-template-columns:repeat(2,1fr);gap:28px 24px;padding-bottom:36px;margin-bottom:32px;border-bottom:1px solid var(--line-2)}
.ftr-col{display:flex;flex-direction:column;gap:9px}
.ftr-col-title{font-family:var(--font-body);font-size:11px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3);margin-bottom:4px}
.ftr-col a{font-family:var(--font-body);font-size:13.5px;color:var(--ink-3);text-decoration:none;transition:color .2s}
.ftr-col a:hover{color:var(--ink)}
.ftr-col a.is-active{color:var(--ink);font-weight:600}
@media(max-width:900px){.ftr-nav{grid-template-columns:repeat(2,1fr)}}
@media(max-width:420px){.ftr-nav{grid-template-columns:1fr}}
.ftr-pay{list-style:none;display:flex;flex-wrap:wrap;justify-content:space-around;align-items:center;gap:24px 32px;padding-bottom:32px}
.ftr-pay li{display:flex;align-items:center;gap:7px;opacity:.85;transition:opacity .2s}
.ftr-pay li:hover{opacity:1}
.ftr-pay img{height:26px;width:auto;display:block}
.ftr-pay img.is-mono{filter:brightness(0) invert(1);height:20px}
.ftr-pay span{font-family:var(--font-sans);font-weight:700;font-size:18px;color:var(--ink);letter-spacing:-.01em}
.ftr-disclaimer{border-top:1px solid var(--line-2);padding-top:24px;display:flex;flex-direction:column;gap:14px}
.ftr-disclaimer .fd-row{display:flex;gap:14px;align-items:flex-start;font-family:var(--font-body);font-size:11.5px;color:var(--ink-3);line-height:1.6}
.ftr-disclaimer .fd-row b{color:var(--ink-3)}
.ftr-bottom{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:12px;margin-top:20px;font-family:var(--font-mono);font-size:11px;color:var(--ink-3);letter-spacing:.05em}
.ftr-18{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;border:1px solid var(--ink-4);border-radius:6px;font-family:var(--font-sans);font-weight:700;font-size:11px;flex-shrink:0}

@media(max-width:560px){.ftr-pay{justify-content:center;gap:20px 26px}}

@media(max-width:640px){
  .hero-band{padding:40px 0 28px}
  .layout{gap:44px;padding-top:28px;padding-bottom:56px}
  .content{gap:52px}
  .block-head{margin-bottom:22px}
  .cmp-hide-mobile{display:none}
}

/* ============ Reduced motion ============ */
/* Previously only the #1 card's animation was gated. Everything else that
   moves on its own (ambient background, pulsing dots, reveal fade/slide,
   smooth-scroll, the one-shot CTA sweep) is covered here too. */
@media(prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  .ambient::before,
  .eyebrow .dt,
  .widget-title .wt-dot,
  .gift-dot,
  .ccard.top1 .ccard-side .btn-primary::after{
    animation:none !important;
  }
  .reveal{opacity:1;transform:none;transition:none}
  *{transition-duration:.01ms !important}
}
