/*
Altaficha Casino (es-AR) — kit base + componentes + familia hub-deck.
Generado por _build/mktheme (scratchpad); no editar a mano sin repetir la receta.
*/
/* ==========================================================================
   GAMBLING LAND — Dark Casino Theme
   Design tokens + base styles. Customize --brand and --grad-cta for each brand.
   ========================================================================== */

/* Google Fonts — customize per brand if needed */
@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&family=Plus+Jakarta+Sans:wght@600;700;800;900&family=JetBrains+Mono:wght@400;600;700&display=swap');

/* ==========================================================================
   1. DESIGN TOKENS
   ========================================================================== */
:root {
  /* Surfaces */
  --bg:            #0f0e0c;
  --bg-1:          #161513;
  --bg-2:          #221f1a;
  --bg-3:          #2e2a22;
  --bg-card:       #1a1815;
  --ink:           #f7f4ee;
  --ink-2:         #d6d1c6;
  --ink-3:         #9b9689;
  --ink-mute:      #6e6a5f;
  --border:        rgba(255,255,255,0.08);
  --border-strong: rgba(255,255,255,0.16);

  /* Brand — customize per brand (default: gold) */
  --brand:         #ffc536;
  --brand-deep:    #e0a400;
  --brand-glow:    rgba(255,197,54,0.45);
  --brand-ink:     #1a1300;

  /* Accents */
  --neon-green:      #12b886;
  --neon-green-glow: rgba(18,184,134,0.35);
  --hot-pink:        #e0554b;
  --hot-pink-glow:   rgba(224,85,75,0.30);
  --electric-blue:   #2bb3a3;
  --purple:          #12b886;
  --pos:             #12b886;
  --neg:             #e0554b;
  --warn:            #e0a400;

  /* Gradients */
  --grad-hero: radial-gradient(ellipse at top right, rgba(255,197,54,0.18), transparent 50%),
               radial-gradient(ellipse at bottom left, rgba(18,184,134,0.20), transparent 55%),
               linear-gradient(180deg, #0f0e0c, #161513);
  --grad-cta:  linear-gradient(135deg, #ffc536 0%, #d98b12 100%);
  --grad-gold: linear-gradient(135deg, #ffd45e, #d98b12);
  --grad-neon: linear-gradient(135deg, #12b886, #2bb3a3);
  --grad-hot:  linear-gradient(135deg, #e0554b, #12b886);

  /* Typography */
  --font-sans:    'Inter', -apple-system, BlinkMacSystemFont, system-ui, sans-serif;
  --font-display: 'Plus Jakarta Sans', 'Inter', system-ui, sans-serif;
  --font-mono:    'JetBrains Mono', ui-monospace, 'SF Mono', Menlo, Consolas, monospace;

  /* Type scale */
  --t-mega:    clamp(2.75rem, 7vw + 0.5rem, 5.5rem);
  --t-display: clamp(2.25rem, 5vw + 0.5rem, 3.5rem);
  --t-h1:      clamp(1.75rem, 3vw + 0.5rem, 2.25rem);
  --t-h2:      clamp(1.5rem, 2.5vw + 0.5rem, 2rem);
  --t-h3:      1.125rem;
  --t-body:    1rem;
  --t-sm:      0.875rem;
  --t-xs:      0.75rem;

  /* Spacing */
  --s-1: 4px; --s-2: 8px; --s-3: 12px; --s-4: 16px; --s-5: 24px;
  --s-6: 32px; --s-7: 48px; --s-8: 64px; --s-9: 96px;

  /* Layout */
  --max-w:       1200px;
  --max-w-prose: 680px;
  --radius:      10px;
  --radius-lg:   16px;
  --radius-xl:   24px;
  --radius-pill: 999px;

  /* Shadows */
  --shadow:    0 4px 24px rgba(0,0,0,0.4);
  --shadow-lg: 0 8px 40px rgba(0,0,0,0.5);
  --t: 180ms cubic-bezier(0.4, 0, 0.2, 1);
}

/* ==========================================================================
   2. BASE RESET
   ========================================================================== */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; }
body {
  margin: 0;
  background: var(--bg);
  color: var(--ink);
  font-family: var(--font-sans);
  font-size: var(--t-body);
  line-height: 1.55;
  -webkit-font-smoothing: antialiased;
}
img, svg { max-width: 100%; display: block; }
button { font: inherit; cursor: pointer; }
a { color: var(--brand); text-decoration: none; transition: color var(--t); }
a:hover { color: var(--brand-deep); }
h1, h2, h3, h4 { font-family: var(--font-display); font-weight: 800; letter-spacing: -0.025em; margin: 0; line-height: 1.1; color: var(--ink); }
h1 { font-size: var(--t-h1); }
h2 { font-size: var(--t-h2); letter-spacing: -0.02em; }
h3 { font-size: var(--t-h3); }
p { margin: 0 0 var(--s-4); color: var(--ink-2); }
strong { font-weight: 700; color: var(--ink); }
::selection { background: var(--brand); color: var(--brand-ink); }

/* ==========================================================================
   3. LAYOUT UTILITIES
   ========================================================================== */
.wrap { max-width: var(--max-w); margin: 0 auto; padding: 0 var(--s-5); }
@media (min-width: 640px) { .wrap { padding: 0 var(--s-6); } }
.section { padding: var(--s-8) 0; position: relative; }
.section-h { padding: var(--s-7) 0; }
.grid-2 { display: grid; grid-template-columns: 1fr 1fr; gap: var(--s-5); }
.grid-3 { display: grid; grid-template-columns: repeat(3,1fr); gap: var(--s-4); }
@media (max-width: 760px) { .grid-2, .grid-3 { grid-template-columns: 1fr; } }

/* Gradient text helpers */
.gold { background: var(--grad-gold); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; display: inline-block; }
.neon { background: var(--grad-neon); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; display: inline-block; }
.hot  { background: var(--grad-hot);  -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; display: inline-block; }

/* ==========================================================================
   4. STICKY OFFER BAR
   ========================================================================== */
.offer-bar {
  background: var(--grad-cta); color: var(--brand-ink);
  padding: 10px 0; font-weight: 700; font-size: var(--t-sm);
  position: relative; overflow: hidden;
}
.offer-bar::before {
  content: ''; position: absolute; top: 0; left: -100%; width: 100%; height: 100%;
  background: linear-gradient(90deg, transparent, rgba(255,255,255,0.4), transparent);
  animation: shimmer 3s infinite;
}
@keyframes shimmer { to { left: 100%; } }
.offer-bar .wrap { display: flex; align-items: center; justify-content: space-between; gap: var(--s-3); flex-wrap: wrap; position: relative; z-index: 1; }
.offer-amount { background: var(--brand-ink); color: var(--brand); padding: 3px 10px; border-radius: var(--radius-pill); font-family: var(--font-mono); font-weight: 700; }
.offer-cta { background: var(--brand-ink); color: var(--brand); padding: 6px 16px; border-radius: var(--radius-pill); font-weight: 700; text-decoration: none; }
.offer-cta:hover { color: var(--brand); transform: translateX(2px); }

/* ==========================================================================
   5. NAVIGATION
   ========================================================================== */
.nav { background: rgba(15,14,12,0.85); backdrop-filter: blur(14px); border-bottom: 1px solid var(--border); position: sticky; top: 0; z-index: 50; }
.nav-inner { display: grid; grid-template-columns: auto 1fr auto; gap: var(--s-5); align-items: center; padding: var(--s-3) 0; }
.brand { display: inline-flex; align-items: center; gap: var(--s-2); color: var(--ink); }
.brand:hover { color: var(--ink); }
.brand-mark { width: 40px; height: 40px; border-radius: 9px; background: var(--grad-cta); color: var(--brand-ink); display: inline-flex; align-items: center; justify-content: center; font-family: var(--font-display); font-weight: 800; font-size: 15px; box-shadow: 0 0 16px var(--brand-glow); }
.brand-name { font-family: var(--font-display); font-weight: 800; font-size: 1.05rem; letter-spacing: -0.02em; }
.nav-links { display: none; gap: var(--s-5); justify-self: center; }
.nav-links a { font-size: var(--t-sm); color: var(--ink-2); font-weight: 500; }
.nav-links a:hover { color: var(--brand); }
@media (min-width: 900px) { .nav-links { display: inline-flex; } }
.nav-cta { background: var(--grad-cta); color: var(--brand-ink); padding: 10px 20px; border-radius: var(--radius-pill); font-weight: 800; font-size: var(--t-sm); white-space: nowrap; box-shadow: 0 0 20px var(--brand-glow); }
.nav-cta:hover { transform: translateY(-1px); color: var(--brand-ink); }

/* ==========================================================================
   6. TICKER
   ========================================================================== */
.ticker { background: var(--bg-1); border-bottom: 1px solid var(--border); overflow: hidden; height: 40px; display: flex; align-items: center; position: relative; }
.ticker-label { position: absolute; left: 0; top: 0; bottom: 0; background: var(--neon-green); color: var(--bg); padding: 0 var(--s-4); font-family: var(--font-mono); font-size: var(--t-xs); font-weight: 800; display: flex; align-items: center; z-index: 2; letter-spacing: 0.06em; }
.ticker-label::before { content: '●'; animation: pulse-dot 1.4s infinite; margin-right: 6px; }
@keyframes pulse-dot { 0%, 100% { opacity: 1; } 50% { opacity: 0.3; } }
.ticker-track { display: flex; gap: var(--s-7); white-space: nowrap; padding-left: 120px; animation: ticker-scroll 50s linear infinite; font-family: var(--font-mono); font-size: var(--t-sm); color: var(--ink-2); }
.ticker-chip { display: inline-flex; align-items: center; gap: 6px; }
.ticker-dot { width: 6px; height: 6px; background: var(--neon-green); border-radius: 50%; }
@keyframes ticker-scroll { from { transform: translateX(0); } to { transform: translateX(-50%); } }
.ticker:hover .ticker-track { animation-play-state: paused; }

/* ==========================================================================
   7. HERO
   ========================================================================== */
.hero { background: var(--grad-hero); padding: var(--s-7) 0 var(--s-8); overflow: hidden; }
.hero-grid { display: grid; grid-template-columns: 7fr 5fr; gap: var(--s-7); align-items: start; }
@media (max-width: 900px) { .hero-grid { grid-template-columns: 1fr; } }
.eyebrow { display: inline-flex; align-items: center; gap: 6px; font-family: var(--font-mono); font-size: var(--t-xs); color: var(--neon-green); text-transform: uppercase; letter-spacing: 0.12em; margin-bottom: var(--s-4); font-weight: 700; }
.eyebrow::before { content: ''; width: 8px; height: 8px; background: var(--neon-green); border-radius: 50%; animation: pulse-dot 1.4s infinite; }
.mega { font-size: var(--t-mega); font-weight: 900; letter-spacing: -0.035em; line-height: 0.95; margin: 0 0 var(--s-5); }
.lede { font-size: 1.125rem; color: var(--ink-2); margin: 0 0 var(--s-6); max-width: 36ch; }
.hero-ctas { display: flex; flex-wrap: wrap; gap: var(--s-3); margin-bottom: var(--s-5); }
.hero-stats { display: grid; grid-template-columns: repeat(2,1fr); gap: var(--s-3); margin-top: var(--s-6); padding-top: var(--s-5); border-top: 1px solid var(--border); }
@media (min-width: 640px) { .hero-stats { grid-template-columns: repeat(4,1fr); } }
.stat { display: flex; flex-direction: column; }
.stat-num { font-family: var(--font-display); font-size: 1.625rem; font-weight: 800; color: var(--brand); line-height: 1; letter-spacing: -0.02em; }
.stat-num.neon { color: var(--neon-green); } .stat-num.hot { color: var(--hot-pink); }
.stat-label { font-size: var(--t-xs); color: var(--ink-3); text-transform: uppercase; letter-spacing: 0.06em; margin-top: 6px; font-family: var(--font-mono); }

/* ==========================================================================
   8. BUTTONS
   ========================================================================== */
.btn { display: inline-flex; align-items: center; justify-content: center; gap: var(--s-2); font-family: var(--font-display); font-weight: 800; font-size: 1rem; padding: 14px 28px; border-radius: var(--radius-pill); border: 0; cursor: pointer; text-decoration: none; transition: transform var(--t), box-shadow var(--t); white-space: nowrap; }
.btn-primary { background: var(--grad-cta); color: var(--brand-ink); box-shadow: 0 4px 24px var(--brand-glow); }
.btn-primary:hover { transform: translateY(-2px); color: var(--brand-ink); }
.btn-ghost { background: transparent; color: var(--ink); border: 2px solid var(--border-strong); }
.btn-ghost:hover { border-color: var(--brand); color: var(--brand); transform: translateY(-2px); }
.btn-lg { padding: 16px 32px; font-size: 1.0625rem; }
.btn-xl { padding: 20px 40px; font-size: 1.125rem; }

/* ==========================================================================
   9. SECTION HEADERS
   ========================================================================== */
.section-eyebrow { font-family: var(--font-mono); font-size: var(--t-xs); text-transform: uppercase; letter-spacing: 0.12em; color: var(--neon-green); font-weight: 700; margin-bottom: var(--s-2); display: block; }
.section-h2 { font-family: var(--font-display); font-size: var(--t-display); font-weight: 900; letter-spacing: -0.03em; margin: 0 0 var(--s-3); line-height: 1.05; }
.section-desc { color: var(--ink-3); font-size: 1.0625rem; max-width: 56ch; margin: 0 0 var(--s-6); }
.section-head { display: flex; justify-content: space-between; align-items: flex-end; flex-wrap: wrap; gap: var(--s-4); margin-bottom: var(--s-6); }
.section-link { font-weight: 700; font-size: var(--t-sm); color: var(--brand); }

/* ==========================================================================
   10. GAME CARDS
   ========================================================================== */
.games { display: grid; grid-template-columns: 1fr; gap: var(--s-4); }
@media (min-width: 720px) { .games { grid-template-columns: repeat(3,1fr); } }
.game { background: var(--bg-card); border: 1px solid var(--border); border-radius: var(--radius-lg); overflow: hidden; text-decoration: none; color: var(--ink); display: flex; flex-direction: column; transition: transform var(--t), border-color var(--t); }
.game:hover { transform: translateY(-4px); border-color: var(--brand); color: var(--ink); }
.game-art { height: 160px; display: flex; align-items: center; justify-content: center; font-size: 3.5rem; position: relative; }
.game-art-aviator  { background: linear-gradient(135deg, #e0554b, #12b886); }
.game-art-bonanza  { background: linear-gradient(135deg, #d98b12, #ffc536); }
.game-art-jetx     { background: linear-gradient(135deg, #2bb3a3, #2f6b57); }
.game-art-roulette { background: linear-gradient(135deg, #16a34a, #064e3b); }
.game-art-tiger    { background: linear-gradient(135deg, #dc2626, #7f1d1d); }
.game-art-football { background: linear-gradient(135deg, #12b886, #064e3b); }
.game-tag { position: absolute; top: 10px; right: 10px; background: var(--bg); color: var(--neon-green); font-family: var(--font-mono); font-size: 10px; font-weight: 700; padding: 3px 8px; border-radius: var(--radius-pill); border: 1px solid var(--neon-green); text-transform: uppercase; }
.game-tag.hot { color: var(--hot-pink); border-color: var(--hot-pink); }
.game-body { padding: var(--s-4); flex: 1; display: flex; flex-direction: column; gap: var(--s-2); }
.game-name { font-family: var(--font-display); font-weight: 800; font-size: 1.125rem; margin: 0; }
.game-meta { display: flex; gap: var(--s-3); font-family: var(--font-mono); font-size: var(--t-xs); color: var(--ink-3); }
.game-cta { margin-top: auto; padding-top: var(--s-3); font-weight: 700; font-size: var(--t-sm); color: var(--brand); }

/* ==========================================================================
   11. STEPS (3-step funnel)
   ========================================================================== */
.steps { display: grid; grid-template-columns: 1fr; gap: var(--s-4); counter-reset: stp; }
@media (min-width: 720px) { .steps { grid-template-columns: repeat(3,1fr); } }
.step { background: var(--bg-card); border: 1px solid var(--border); border-radius: var(--radius-lg); padding: var(--s-6) var(--s-5); position: relative; transition: transform var(--t), border-color var(--t); }
.step:hover { transform: translateY(-4px); border-color: var(--brand); }
.step::before { counter-increment: stp; content: counter(stp); position: absolute; top: -20px; left: var(--s-5); width: 40px; height: 40px; background: var(--grad-cta); color: var(--brand-ink); border-radius: 50%; display: flex; align-items: center; justify-content: center; font-family: var(--font-display); font-weight: 800; font-size: 1.125rem; box-shadow: 0 0 24px var(--brand-glow); }
.step h3 { margin: var(--s-2) 0; color: var(--ink); font-size: 1.25rem; }
.step p { color: var(--ink-3); font-size: var(--t-sm); margin: 0; }
.step-time { font-family: var(--font-mono); font-size: var(--t-xs); color: var(--neon-green); margin-top: var(--s-3); text-transform: uppercase; letter-spacing: 0.06em; font-weight: 700; }

/* ==========================================================================
   12. BONUS CARDS
   ========================================================================== */
.bonus-grid { display: grid; grid-template-columns: 1fr; gap: var(--s-4); }
@media (min-width: 640px) { .bonus-grid { grid-template-columns: repeat(2,1fr); } }
@media (min-width: 1020px) { .bonus-grid { grid-template-columns: repeat(4,1fr); } }
.bonus { background: var(--bg-card); border: 1px solid var(--border); border-radius: var(--radius-lg); padding: var(--s-5); display: flex; flex-direction: column; gap: var(--s-3); transition: transform var(--t), border-color var(--t); text-decoration: none; color: inherit; }
.bonus:hover { transform: translateY(-4px); border-color: var(--brand); }
.bonus-tag { font-family: var(--font-mono); font-size: var(--t-xs); text-transform: uppercase; letter-spacing: 0.08em; color: var(--brand); font-weight: 700; }
.bonus-amount { font-family: var(--font-display); font-size: 2.5rem; font-weight: 900; line-height: 1; background: var(--grad-gold); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; letter-spacing: -0.025em; }
.bonus-name { font-family: var(--font-display); font-weight: 800; font-size: 1.125rem; color: var(--ink); }
.bonus-desc { color: var(--ink-3); font-size: var(--t-sm); margin: 0; flex: 1; }
.bonus-cta { font-weight: 700; color: var(--brand); font-size: var(--t-sm); }

/* ==========================================================================
   13. COMPARE TABLE
   ========================================================================== */
.compare { background: var(--bg-card); border: 1px solid var(--border); border-radius: var(--radius-lg); overflow: hidden; }
.compare-table { width: 100%; border-collapse: collapse; font-size: var(--t-sm); }
.compare-table th, .compare-table td { padding: var(--s-3) var(--s-4); text-align: left; border-bottom: 1px solid var(--border); }
.compare-table th { background: var(--bg-2); font-family: var(--font-display); font-size: var(--t-xs); text-transform: uppercase; letter-spacing: 0.06em; color: var(--ink-3); font-weight: 700; text-align: center; }
.compare-table th:first-child { text-align: left; }
.compare-table td { text-align: center; font-family: var(--font-mono); }
.compare-table td:first-child { text-align: left; color: var(--ink); font-weight: 600; font-family: var(--font-sans); }
.compare-col-us { background: linear-gradient(180deg, rgba(255,197,54,0.10), rgba(255,197,54,0.04)); color: var(--brand); font-weight: 700; position: relative; }
.compare-table thead th.compare-col-us::before { content: 'OUR PICK'; position: absolute; top: 0; left: 50%; transform: translate(-50%,-50%); background: var(--brand); color: var(--brand-ink); font-family: var(--font-mono); font-size: 10px; font-weight: 700; padding: 3px 10px; border-radius: var(--radius-pill); letter-spacing: 0.08em; }
.compare-yes { color: var(--neon-green); font-weight: 800; }
.compare-no { color: var(--neg); }

/* ==========================================================================
   14. TRUST STRIP
   ========================================================================== */
.trust-strip { background: var(--bg-1); border-top: 1px solid var(--border); border-bottom: 1px solid var(--border); padding: var(--s-5) 0; }
.trust-strip-inner { display: grid; grid-template-columns: repeat(2,1fr); gap: var(--s-5); align-items: center; }
@media (min-width: 720px) { .trust-strip-inner { grid-template-columns: repeat(4,1fr); } }
.trust-item { text-align: center; }
.trust-item-icon { font-size: 1.75rem; margin-bottom: 6px; }
.trust-item-label { color: var(--ink-3); font-family: var(--font-mono); font-size: var(--t-xs); text-transform: uppercase; letter-spacing: 0.06em; }
.trust-item-val { color: var(--ink); font-family: var(--font-display); font-weight: 800; font-size: 1.125rem; }

/* ==========================================================================
   15. ARTICLE + TOC
   ========================================================================== */
.article { padding: var(--s-7) 0; }
.article-grid { display: grid; grid-template-columns: 1fr; gap: var(--s-7); }
@media (min-width: 1020px) { .article-grid { grid-template-columns: 1fr 280px; gap: var(--s-8); } }
.prose { max-width: var(--max-w-prose); font-size: 1.0625rem; line-height: 1.7; color: var(--ink-2); }
.prose > h2 { font-size: 1.625rem; margin: var(--s-7) 0 var(--s-4); color: var(--ink); }
.prose > h2:first-child { margin-top: 0; }
.prose > h3 { font-size: 1.25rem; margin: var(--s-6) 0 var(--s-3); color: var(--ink); }
.prose p { margin: 0 0 var(--s-4); }
.prose ul, .prose ol { margin: 0 0 var(--s-5) var(--s-5); padding: 0; }
.prose li { margin-bottom: var(--s-2); }
.prose strong { color: var(--ink); }
.prose a { color: var(--brand); }
.toc { position: sticky; top: 100px; align-self: start; }
.toc-title { font-size: var(--t-xs); font-family: var(--font-mono); text-transform: uppercase; letter-spacing: 0.08em; color: var(--neon-green); margin-bottom: var(--s-3); font-weight: 700; }
.toc ul { list-style: none; padding: 0; margin: 0; border-left: 1px solid var(--border); }
.toc a { display: block; padding: var(--s-2) var(--s-3); font-size: var(--t-sm); color: var(--ink-3); border-left: 2px solid transparent; margin-left: -1px; }
.toc a:hover, .toc a.is-active { color: var(--brand); border-left-color: var(--brand); }

/* Byline */
.byline { display: flex; align-items: center; gap: var(--s-3); margin: var(--s-3) 0 var(--s-6); padding: var(--s-3) 0; border-top: 1px solid var(--border); border-bottom: 1px solid var(--border); font-family: var(--font-mono); font-size: var(--t-xs); color: var(--ink-3); width: 100%; justify-content: space-between; flex-wrap: wrap; }
.byline strong { color: var(--brand); }

/* Author card */
.author-card { display: flex; gap: var(--s-4); margin: var(--s-7) 0 var(--s-5); padding: var(--s-5); background: var(--bg-1); border: 1px solid var(--border); border-left: 3px solid var(--brand); border-radius: var(--radius); }
.author-avatar { flex: 0 0 56px; width: 56px; height: 56px; border-radius: 50%; background: var(--bg-2); border: 2px solid var(--brand); display: flex; align-items: center; justify-content: center; font-family: var(--font-mono); font-weight: 700; font-size: 1rem; color: var(--brand); }
.author-name { font-size: var(--t-sm); color: var(--ink); margin-bottom: 4px; font-family: var(--font-mono); font-weight: 700; }
.author-role { font-size: var(--t-xs); color: var(--ink-3); margin-bottom: var(--s-3); font-family: var(--font-mono); }
.author-bio { font-size: var(--t-sm); color: var(--ink-2); margin: 0; }

/* Breadcrumb */
.breadcrumb { font-family: var(--font-mono); font-size: var(--t-xs); color: var(--ink-3); padding: var(--s-4) 0; }
.breadcrumb a { color: var(--ink-3); } .breadcrumb a:hover { color: var(--brand); }
.breadcrumb .sep { margin: 0 6px; }

/* ==========================================================================
   16. CTA BLOCK
   ========================================================================== */
.cta-block { background: linear-gradient(135deg,#1a1300,#3d2e00,#1a1300); border-radius: var(--radius-xl); padding: var(--s-8) var(--s-6); text-align: center; position: relative; overflow: hidden; border: 1px solid rgba(255,197,54,0.2); }
.cta-block::before { content: ''; position: absolute; inset: 0; background: radial-gradient(circle at 20% 50%,rgba(255,197,54,0.18),transparent 40%), radial-gradient(circle at 80% 50%,rgba(217,139,18,0.18),transparent 40%); pointer-events: none; }
.cta-block-inner { position: relative; z-index: 1; max-width: 720px; margin: 0 auto; }
.cta-block-eyebrow { font-family: var(--font-mono); font-size: var(--t-xs); text-transform: uppercase; letter-spacing: 0.12em; color: var(--brand); font-weight: 700; margin-bottom: var(--s-3); }
.cta-block-h { font-family: var(--font-display); font-size: clamp(2rem,4.5vw + 0.5rem,3.5rem); font-weight: 900; letter-spacing: -0.03em; margin: 0 0 var(--s-4); line-height: 1.05; }
.cta-block-sub { color: var(--ink-2); font-size: 1.0625rem; margin: 0 auto var(--s-5); max-width: 48ch; }
.cta-block-terms { font-family: var(--font-mono); font-size: 11px; color: var(--ink-mute); margin-top: var(--s-4); }

/* ==========================================================================
   17. FAQ ACCORDION
   ========================================================================== */
.faq-list { display: flex; flex-direction: column; gap: var(--s-2); }
.faq-item { background: var(--bg-card); border: 1px solid var(--border); border-radius: var(--radius); overflow: hidden; }
.faq-q { padding: var(--s-4) var(--s-5); font-family: var(--font-display); font-weight: 700; cursor: pointer; display: flex; justify-content: space-between; align-items: center; gap: var(--s-3); list-style: none; color: var(--ink); }
.faq-q::-webkit-details-marker { display: none; }
.faq-toggle { color: var(--brand); font-size: 1.25rem; font-weight: 400; flex-shrink: 0; transition: transform var(--t); }
details[open] .faq-toggle { transform: rotate(45deg); }
.faq-a { padding: 0 var(--s-5) var(--s-4); color: var(--ink-2); font-size: var(--t-sm); line-height: 1.6; }

/* ==========================================================================
   18. PROS / CONS
   ========================================================================== */
.pc-grid { display: grid; grid-template-columns: 1fr 1fr; gap: var(--s-5); }
@media (max-width: 640px) { .pc-grid { grid-template-columns: 1fr; } }
.pc-col { background: var(--bg-card); border: 1px solid var(--border); border-radius: var(--radius-lg); padding: var(--s-5); }
.pc-pros { border-top: 3px solid var(--neon-green); }
.pc-cons { border-top: 3px solid var(--neg); }
.pc-h { font-family: var(--font-display); font-size: 1rem; margin-bottom: var(--s-4); }
.pc-pros .pc-h { color: var(--neon-green); }
.pc-cons .pc-h { color: var(--neg); }
.pc-col ul { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: var(--s-3); }
.pc-col li { font-size: var(--t-sm); color: var(--ink-2); padding-left: var(--s-5); position: relative; }
.pc-pros li::before { content: '✓'; position: absolute; left: 0; color: var(--neon-green); font-weight: 700; }
.pc-cons li::before { content: '✗'; position: absolute; left: 0; color: var(--neg); font-weight: 700; }

/* Rating */
.rating-num { font-family: var(--font-display); font-size: 4rem; font-weight: 900; color: var(--brand); line-height: 1; letter-spacing: -0.04em; }
.rating-stars { color: var(--brand); font-size: 1.5rem; margin-bottom: var(--s-5); }
.rating-sub { display: grid; grid-template-columns: repeat(2,1fr); gap: var(--s-4); }
@media (min-width: 640px) { .rating-sub { grid-template-columns: repeat(4,1fr); } }
.rating-sub-item { text-align: center; }
.rating-sub-label { font-family: var(--font-mono); font-size: var(--t-xs); color: var(--ink-3); text-transform: uppercase; letter-spacing: 0.06em; margin-bottom: 4px; }
.rating-sub-value { font-family: var(--font-display); font-size: 1.5rem; font-weight: 800; color: var(--brand); }

/* ==========================================================================
   19. PAYMENTS TABLE
   ========================================================================== */
.payments-table { width: 100%; border-collapse: collapse; font-size: var(--t-sm); background: var(--bg-card); border-radius: var(--radius-lg); overflow: hidden; border: 1px solid var(--border); }
.payments-table th, .payments-table td { padding: var(--s-3) var(--s-4); text-align: left; border-bottom: 1px solid var(--border); }
.payments-table th { background: var(--bg-2); font-family: var(--font-mono); font-size: var(--t-xs); text-transform: uppercase; letter-spacing: 0.06em; color: var(--ink-3); font-weight: 700; }
.payments-table td { font-family: var(--font-mono); color: var(--ink-2); }
.payments-table td:first-child { color: var(--ink); font-weight: 600; }
.tag-ok { background: rgba(18,184,134,0.12); color: var(--neon-green); border: 1px solid rgba(18,184,134,0.3); font-family: var(--font-mono); font-size: 10px; font-weight: 700; padding: 2px 8px; border-radius: var(--radius-pill); letter-spacing: 0.06em; text-transform: uppercase; }
.tag-tbd { background: rgba(224,164,0,0.12); color: var(--warn); border: 1px solid rgba(224,164,0,0.3); font-family: var(--font-mono); font-size: 10px; font-weight: 700; padding: 2px 8px; border-radius: var(--radius-pill); letter-spacing: 0.06em; text-transform: uppercase; }

/* ==========================================================================
   20. FOOTER + STICKY BOTTOM BAR
   ========================================================================== */
.foot { background: var(--bg-1); border-top: 1px solid var(--border); padding: var(--s-8) 0 var(--s-5); margin-top: var(--s-9); margin-bottom: 80px; font-size: var(--t-sm); }
@media (min-width: 900px) { .foot { margin-bottom: 0; } }
.foot a { color: var(--ink-2); } .foot a:hover { color: var(--brand); }
.foot-top { display: grid; grid-template-columns: 1fr; gap: var(--s-6); padding-bottom: var(--s-6); border-bottom: 1px solid var(--border); }
@media (min-width: 720px) { .foot-top { grid-template-columns: 2fr 1fr 1fr 1fr; } }
.foot-col h4 { color: var(--brand); font-size: var(--t-xs); font-family: var(--font-mono); text-transform: uppercase; letter-spacing: 0.08em; margin-bottom: var(--s-3); font-weight: 700; }
.foot-col ul { list-style: none; padding: 0; margin: 0; }
.foot-col li { margin-bottom: var(--s-2); }
.foot-disclaimer { background: rgba(224,85,75,0.06); border: 1px solid rgba(224,85,75,0.2); padding: var(--s-3) var(--s-4); border-radius: var(--radius); margin-top: var(--s-5); font-size: var(--t-xs); font-family: var(--font-mono); line-height: 1.6; color: var(--ink-2); }
.foot-bottom { padding-top: var(--s-5); font-family: var(--font-mono); font-size: var(--t-xs); display: flex; justify-content: space-between; flex-wrap: wrap; gap: var(--s-3); color: var(--ink-mute); }
.bottom-cta { position: fixed; bottom: 0; left: 0; right: 0; background: var(--bg-card); border-top: 1px solid var(--border-strong); padding: var(--s-3) var(--s-4); z-index: 60; display: flex; justify-content: space-between; align-items: center; gap: var(--s-3); box-shadow: 0 -8px 32px rgba(0,0,0,0.4); }
.bottom-cta-text { font-size: var(--t-xs); color: var(--ink-2); flex: 1; }
.bottom-cta-text strong { color: var(--brand); font-family: var(--font-mono); }
.bottom-cta a { background: var(--grad-cta); color: var(--brand-ink); padding: 10px 18px; border-radius: var(--radius-pill); font-weight: 800; font-size: var(--t-sm); white-space: nowrap; }
@media (min-width: 900px) { .bottom-cta { display: none; } }

/* Skip link */
.skip-link { position: absolute; left: -9999px; top: 0; background: var(--brand); color: var(--brand-ink); padding: 8px 16px; z-index: 9999; font-weight: 700; border-radius: 0 0 8px 0; }
.skip-link:focus { left: 0; }

/* ==========================================================================
   21. REDUCED MOTION
   ========================================================================== */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration: 0.01ms !important; transition-duration: 0.01ms !important; }
  .ticker-track { animation: none; }
  .offer-bar::before { animation: none; }
}


/* ==========================================================================
   MEDIA & LAYOUT COMPONENTS — paste into every build's theme.css.
   Codified from the Realz AU build: parallel subagents INVENT layout classes
   for images/tables/breadcrumbs (mp-logo-row, mp-tile-grid, mp-card-grid,
   mp-figure, mp-media-grid, mp-table, mp-crumbs, mp-hero-cta-row, mp-pay-row…)
   that DON'T exist in a cloned theme.css — so those blocks collapse to a single
   column (block-level <img>/<div> stack) or render unstyled. Ship these classes
   up front and the media just works.

   Prefix note: these use the `mp-` prefix. For a `kb-` theme, s/mp-/kb-/.
   Depends on the standard token vars (--mp-bg-card, --mp-border, --mp-brand,
   --mp-ink*, --mp-s-*, --mp-radius*, --mp-shadow*, --mp-t-anim, --mp-font-*).
   ========================================================================== */

/* --- PROSE WIDTH TRAP -------------------------------------------------------
   If .mp-prose has `max-width: 72ch`, ANY grid placed inside it (steps, tiles,
   logo rows) is squeezed into that ~720px column. Fix: drop the cap on the
   container, re-apply it to TEXT children only, so grids/tables/media go full
   width while paragraphs stay readable. */
.mp-prose { max-width: none; }
.mp-prose > p, .mp-prose > ul:not(.mp-steps), .mp-prose > ol:not(.mp-steps),
.mp-prose > h1, .mp-prose > h2, .mp-prose > h3, .mp-prose > h4, .mp-prose > blockquote {
  max-width: 72ch;
}
/* …but generators routinely emit `<div class="wrap mp-prose">`, and on that element
   the rule above ALSO kills `.wrap`'s page container — the section then renders
   edge-to-edge at full viewport width while its neighbours stay in the 1200px column,
   which reads as a broken layout. Keep the container for the combined case. */
.wrap.mp-prose { max-width: var(--mp-max-w, var(--max-w, 1200px)); }

/* --- Provider / payment logo row (flex, never a column) --- */
.mp-logo-row { display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: 24px 40px; margin: var(--mp-s-5) 0; }
.mp-logo-row img { height: 38px; width: auto; opacity: 0.9; }
.mp-pay-row { display: flex; flex-wrap: wrap; gap: var(--mp-s-3); align-items: center; margin: var(--mp-s-4) 0; }
.mp-pay-row img { height: 30px; width: auto; }

/* --- Two-up cards (welcome fiat/crypto, compare) --- */
.mp-card-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: var(--mp-s-4); margin: var(--mp-s-5) 0; list-style: none; padding: 0; }
.mp-card { background: var(--mp-grad-card); border: 1px solid var(--mp-border-strong); border-radius: var(--mp-radius-lg); padding: var(--mp-s-5); box-shadow: var(--mp-shadow); }
.mp-card > h3 { font-family: var(--mp-font-display); font-size: 1.125rem; font-weight: 700; margin: 0 0 var(--mp-s-3); color: var(--mp-ink); }
.mp-card ul { padding-left: 20px; margin: var(--mp-s-3) 0 0; color: var(--mp-ink-2); font-size: var(--mp-t-sm); }
.mp-card li { margin: var(--mp-s-2) 0; }
.mp-card-big { font-family: var(--mp-font-display); font-weight: 800; font-size: 1.25rem; line-height: 1.2; color: var(--mp-brand-light); margin: 0 0 var(--mp-s-2); text-shadow: 0 0 24px var(--mp-brand-glow); letter-spacing: -0.01em; }

/* --- Game tiles (pokies, live, crash). ~5 across on desktop, 2 on mobile.
   minmax 190px reads as premium; 150px looks like a dense afterthought. --- */
.mp-tile-grid, .mp-pokie-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(190px, 1fr)); gap: var(--mp-s-4); margin: var(--mp-s-5) 0; }
.mp-tile, .mp-pokie-tile { margin: 0; border: 1px solid var(--mp-border); border-radius: var(--mp-radius); overflow: hidden; background: var(--mp-bg-card); text-decoration: none; display: block; transition: transform var(--mp-t-anim), border-color var(--mp-t-anim); }
.mp-tile:hover, .mp-pokie-tile:hover { transform: translateY(-3px); border-color: var(--mp-border-strong); }
.mp-tile img, .mp-pokie-tile img { width: 100%; height: auto; display: block; aspect-ratio: 3 / 4; object-fit: cover; }
.mp-tile figcaption, .mp-tile-cap, .mp-pokie-name { padding: 8px 10px; font-size: 0.8125rem; color: var(--mp-ink-2); font-family: var(--mp-font-mono); text-align: center; display: block; }
/* Game tiles ship as <a class="mp-tile"> pointing at /go/{slug}/ — every tile is a CTA.
   The caption is a <span class="mp-tile-cap">, because <figcaption> is only legal inside
   <figure>. .mp-tile already carries display:block + text-decoration:none, so swapping
   <figure> for <a> changes nothing visually. See build-qa-conventions.md §10. */
a.mp-tile:hover .mp-tile-cap { color: var(--mp-brand-light); }
@media (max-width: 560px) { .mp-tile-grid, .mp-pokie-grid { grid-template-columns: repeat(2, 1fr); } }

/* --- Promo banner strip: several reload/bonus banners in a row, not stacked --- */
.mp-promo-strip { display: flex; flex-wrap: wrap; gap: var(--mp-s-4); margin: var(--mp-s-5) 0; }
.mp-promo-strip img { flex: 1 1 260px; max-width: calc(50% - var(--mp-s-3)); height: auto; margin: 0; border-radius: var(--mp-radius-lg); border: 1px solid var(--mp-border); box-shadow: var(--mp-shadow); }
@media (max-width: 560px) { .mp-promo-strip img { max-width: 100%; } }

/* --- Lone promo banners in prose: CAP + centre. A raw 730px webp dominates the
   column and reads as "huge image". Place these LATE in theme.css: `.mp-prose > img`
   ties specificity with the base `.mp-prose img{max-width:100%}` and only wins if
   it comes AFTER it in source order. --- */
.mp-prose > img, .mp-prose > p > img, .mp-prose > figure:not([class]) > img {
  max-width: 460px; width: 100%; height: auto; display: block; margin: var(--mp-s-5) auto;
  border-radius: var(--mp-radius-lg); border: 1px solid var(--mp-border); box-shadow: var(--mp-shadow);
}
.mp-figure { margin: var(--mp-s-5) 0; text-align: center; }
.mp-figure > img { max-width: 460px; width: 100%; height: auto; margin: 0 auto; border-radius: var(--mp-radius-lg); border: 1px solid var(--mp-border); box-shadow: var(--mp-shadow); }
.mp-figure figcaption { font-size: 0.8125rem; color: var(--mp-ink-3); margin-top: 8px; font-family: var(--mp-font-mono); }
.mp-media-block { margin: var(--mp-s-5) 0; text-align: center; }
.mp-media-block > img { max-width: 520px; width: 100%; height: auto; margin: 0 auto; border-radius: var(--mp-radius-lg); border: 1px solid var(--mp-border); box-shadow: var(--mp-shadow); }
.mp-media-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: var(--mp-s-4); margin: var(--mp-s-5) 0; }
.mp-media-grid .mp-figure { margin: 0; }
.mp-media-grid .mp-figure > img { max-width: 100%; }

/* --- Tables: subagents emit <div class="mp-table-wrap"><table class="mp-table"> and
   leave them unstyled (no borders/padding). Style + keep them scrollable on mobile
   so a wide table never forces the whole PAGE into horizontal scroll. --- */
.mp-table-wrap { overflow-x: auto; margin: var(--mp-s-5) 0; -webkit-overflow-scrolling: touch; }
.mp-table { width: 100%; border-collapse: collapse; font-size: var(--mp-t-sm); background: var(--mp-bg-card); border: 1px solid var(--mp-border); border-radius: var(--mp-radius); overflow: hidden; }
.mp-table th, .mp-table td { padding: 10px 14px; text-align: left; border-bottom: 1px solid var(--mp-border); vertical-align: top; }
.mp-table thead th { background: rgba(232,178,74,0.09); color: var(--mp-ink); font-family: var(--mp-font-display); font-weight: 700; font-size: 0.8125rem; letter-spacing: -0.01em; }
.mp-table td { color: var(--mp-ink-2); }
.mp-table tbody tr:last-child td { border-bottom: 0; }
.mp-table tbody tr:hover td { background: rgba(255,255,255,0.02); }
/* (the th background rgba is the BRAND accent — swap 232,178,74 for your brand rgb) */

/* --- Breadcrumbs: an <ol class="mp-crumbs"> renders as a numbered vertical list
   until styled. Make it a horizontal flex row with "/" separators. --- */
.mp-breadcrumb { margin: 0 0 var(--mp-s-3); }
.mp-crumbs { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; list-style: none; padding: 0; margin: var(--mp-s-3) 0; font-family: var(--mp-font-mono); font-size: 0.75rem; color: var(--mp-ink-3); }
.mp-crumbs li { display: flex; align-items: center; gap: 6px; margin: 0; }
.mp-crumbs li:not(:last-child)::after { content: "/"; color: var(--mp-ink-mute); }
.mp-crumbs a { color: var(--mp-ink-2); text-decoration: none; border: 0; }
.mp-crumbs a:hover { color: var(--mp-brand-light); }

/* --- Hero copy/media/cta split + misc lists --- */
.mp-hero-cta-row { display: flex; flex-wrap: wrap; gap: var(--mp-s-3); margin: var(--mp-s-5) 0; }
.mp-hero-media { margin: 0; }
.mp-hero-media > img { width: 100%; height: auto; border-radius: var(--mp-radius-lg); border: 1px solid var(--mp-border-strong); box-shadow: var(--mp-shadow-lg); }
.mp-list { padding-left: 20px; color: var(--mp-ink-2); margin: var(--mp-s-4) 0; }
.mp-list li { margin: var(--mp-s-2) 0; }

/* --- Provider / payment logo CHIP (default, not per-build inline CSS) ---------------------
   Brand logos ship in ONE colour scheme (dark _dark marks, or white wordmarks). On a dark theme
   at least one family is invisible. Rendering every provider/payment logo on a light chip makes
   BOTH dark and white marks legible without editing each SVG. Reference implementation — keep in
   the starter set; the build should not re-invent it inline (see build-qa-conventions.md).
   Checklist for a logo that still disappears: it is a *white* wordmark on transparent → the chip
   fixes it; a mark that is itself near-white AND has no outline may need its fill recoloured. */
.mp-logo-row img,
.mp-pay-row img {
  height: 34px; width: auto; max-width: 132px; opacity: 1;
  object-fit: contain; background: #f4f1ea; border: 1px solid var(--mp-border);
  border-radius: 8px; padding: 7px 12px; box-shadow: none; flex: 0 0 auto;
}
.mp-pay-row { display: flex; flex-wrap: wrap; align-items: center; gap: 14px 18px; margin: var(--mp-s-5) 0; }


/* ==========================================================================
   CONVERSION COMPONENTS — paste into every build's theme.css.
   Codified from the HugeWin PT conversion pass (client feedback: "такие бонусы
   делать ярче и больше", "по таким CTA никто не кликнет", "снизу фикс блок с
   бонусом и кнопкой, чтобы всегда перед глазами").

   The default generated CTA is a grey note with a label-sized button sitting to
   the right of two lines of prose. It reads as an aside, not an offer, and it is
   the single highest-leverage thing on a monobrand page. Ship these classes and
   every CTA lands as an offer card instead.

   Prefix note: these use the `mp-` prefix. For a `kb-` theme, s/mp-/kb-/.
   Depends on the standard tokens (--mp-brand, --mp-brand-light, --mp-brand-ink,
   --mp-bg*, --mp-ink*, --mp-font-display, --mp-font-mono, --mp-radius-pill).

   ── THE FOUR SPECIFICITY TRAPS (all cost a debug cycle on the PT build) ──────
   1. `.mp-prose p` is (0,2,0). A bare `.mp-inline-cta-h { color }` LOSES to it,
      so the card heading silently paints the same muted grey as its own subline
      and the hierarchy goes flat. Every colour rule below is scoped to its
      parent on purpose — do not "simplify" them back to a single class.
   2. Gradient text needs `-webkit-text-fill-color: transparent` as well as
      `color: transparent`. With only `color`, the paint colour wins, the clipped
      background never shows, and the heading renders in the inherited grey.
   3. `.mp-bottom-cta * { color: inherit !important }` (a common kit rule meant
      for spans INSIDE the button) also matches the <a> itself — the gold button
      then inherits the light body ink at 2.17:1. Pin the button's ink back.
   4. The sticky bar's body spacer must be scoped with `:has()`, or legal/404
      pages that carry no bar get a phantom 76px gap at the bottom.
   ========================================================================== */

/* ── 1. OFFER BAR ────────────────────────────────────────────────────────────
   A quiet tinted strip reads as a cookie notice. Gold plate + dark ink is the
   highest-contrast pairing the palette allows (9.4:1) and it reads as an OFFER.
   The "get bonus" link must be a button, not text sitting next to the copy. */
.mp-offer-bar {
  background: linear-gradient(180deg, var(--mp-brand-light), var(--mp-brand)) !important;
  border-bottom: 1px solid rgba(0,0,0,0.35);
  box-shadow: 0 6px 22px -8px var(--mp-brand-glow, rgba(201,162,39,0.55));
}
.mp-offer-bar-inner { color: var(--mp-brand-ink); font-size: 0.9375rem; padding: 12px 0; gap: 0.9rem; }
.mp-offer-bar-inner strong {
  color: #1a1500; font-family: var(--mp-font-display); font-weight: 800;
  font-size: 1.0625rem; letter-spacing: -0.01em;
}
.mp-offer-pill {
  background: #1a1500 !important; color: var(--mp-brand-light) !important;
  border-color: #1a1500 !important; font-weight: 800;
}
.mp-offer-bar .mp-offer-link[data-cta-position] {
  background: #1a1500; color: var(--mp-brand-light) !important; font-weight: 800;
  padding: 9px 18px; border-radius: var(--mp-radius-pill, 999px); white-space: nowrap;
  box-shadow: 0 6px 16px -6px rgba(0,0,0,0.6);
}
.mp-offer-bar .mp-offer-link[data-cta-position]:hover { background: #000; transform: translateY(-1px); }
/* secondary (non-CTA) links must stay readable on the new gold plate */
.mp-offer-bar .mp-offer-link:not([data-cta-position]) { color: #33290a !important; text-decoration: underline; }

/* ── 2. STICKY BOTTOM CTA — on EVERY breakpoint, not just mobile ──────────────
   Kits ship this inside a `@media (max-width:640px)` block. Desktop is where the
   long-form review actually gets read, so that is exactly where a permanent
   bonus + button belongs. Markup:
     <div class="mp-bottom-cta">
       <div class="mp-bottom-cta-inner">
         <span class="mp-bottom-cta-text"><strong>Bonus 100% up to X</strong> + …</span>
         <a href="/go/<slug>/" … data-cta-position="sticky">Get bonus</a>
       </div>
     </div>                                                                     */
.mp-bottom-cta {
  display: flex; position: fixed; left: 0; right: 0; bottom: 0; z-index: 90;
  padding: 12px var(--mp-s-4); align-items: center;
  background: linear-gradient(180deg, rgba(15,26,21,0.97), rgba(8,15,12,0.99));
  backdrop-filter: blur(8px);
  border-top: 2px solid var(--mp-brand);
  box-shadow: 0 -12px 24px rgba(0,0,0,0.5);
}
.mp-bottom-cta-inner { width: min(1180px, 100%); margin: 0 auto; display: flex; align-items: center; gap: var(--mp-s-3); }
.mp-bottom-cta-text { flex: 1; font-size: 0.9375rem; color: var(--mp-ink); }
.mp-bottom-cta-text strong { color: var(--mp-brand-light); font-size: 1.0625rem; font-family: var(--mp-font-display); font-weight: 700; }
.mp-bottom-cta a {
  background: var(--mp-grad-cta); font-family: var(--mp-font-display); font-weight: 700;
  text-decoration: none; padding: 13px 26px; border-radius: var(--mp-radius); font-size: 1rem;
  box-shadow: 0 8px 18px -6px var(--mp-brand-glow); display: inline-flex; align-items: center; justify-content: center;
}
/* TRAP 3 — see header */
.mp-bottom-cta a, .mp-bottom-cta a * { color: var(--mp-brand-ink) !important; }
/* TRAP 4 — spacer only on pages that actually carry the bar */
body:has(.mp-bottom-cta) { padding-bottom: 76px; }
@media (max-width: 640px) {
  .mp-bottom-cta { padding: 10px var(--mp-s-3); gap: var(--mp-s-2); }
  .mp-bottom-cta-text { font-size: 0.8125rem; }
  .mp-bottom-cta-text strong { font-size: 0.9375rem; }
  .mp-bottom-cta a { padding: 11px 16px; font-size: 0.875rem; }
  body:has(.mp-bottom-cta) { padding-bottom: 70px; }
}
/* an RG/legal page must never carry a live offer */
.mp-rg .mp-bottom-cta, .mp-rg .mp-offer-bar, .mp-rg .mp-inline-cta { display: none !important; }

/* ── 3. INLINE CTA = "OFFER CARD" (the default for every in-body CTA) ─────────
   Badge → oversized figure → full-width action. Markup is UNCHANGED from the
   usual h/sub/button trio; the badge rides on a data-attribute so the HTML stays
   clean and the wording can track what each block actually offers:

     <div class="mp-inline-cta" data-badge="Welcome offer">
       <p class="mp-inline-cta-h">100% up to 1.000 € + 15% cashback</p>
       <p class="mp-inline-cta-sub">Rollover 50x · min. deposit ≈ 10 € · 18+.</p>
       <a class="mp-btn mp-btn-primary" href="/go/<slug>/" … >Get bonus</a>
     </div>

   Badge text comes from the block's own data-cta-position — one label per intent
   (Welcome offer / Rating / Payments / Live casino / Registration / Support …),
   never the same word on all of them. It is decorative and duplicated by the
   heading, so living in CSS costs assistive tech nothing.                      */
.mp-inline-cta {
  position: relative; overflow: hidden; display: block;
  border-radius: 20px; padding: 30px; margin: 2rem 0;
  background:
    radial-gradient(120% 130% at 0% 0%, rgba(201,162,39,0.26), transparent 55%),
    linear-gradient(160deg, #16241c, #0c1512);
  border: 1px solid rgba(201,162,39,0.45);
  box-shadow: 0 24px 60px -28px rgba(0,0,0,0.9), inset 0 1px 0 rgba(255,255,255,0.05);
}
/* the corner bloom is what makes it read as "promo" rather than "note" */
.mp-inline-cta::after {
  content: ""; position: absolute; inset: -40% -10% auto auto; width: 340px; height: 340px;
  background: radial-gradient(circle, rgba(232,199,102,0.20), transparent 65%); pointer-events: none;
}
.mp-inline-cta[data-badge]::before {
  content: "◆ " attr(data-badge);
  display: inline-flex; align-items: center;
  font-family: var(--mp-font-mono); font-size: 0.6875rem; letter-spacing: 0.14em;
  text-transform: uppercase; font-weight: 700; color: #1a1500;
  background: linear-gradient(180deg, var(--mp-brand-light), var(--mp-brand));
  padding: 5px 12px; border-radius: var(--mp-radius-pill, 999px); margin-bottom: 16px;
}
/* neutralises any 2-column grid the base theme put on this block */
.mp-inline-cta > .mp-inline-cta-h,
.mp-inline-cta > .mp-inline-cta-sub,
.mp-inline-cta > .mp-btn { position: relative; grid-column: auto; grid-row: auto; }
/* TRAP 1 — both scoped to the parent on purpose */
.mp-inline-cta .mp-inline-cta-h {
  font-family: var(--mp-font-display); font-weight: 800; letter-spacing: -0.03em;
  line-height: 1.06; font-size: clamp(1.5rem, 3.4vw, 2rem);
  color: var(--mp-ink); margin: 0 0 8px;
}
.mp-inline-cta .mp-inline-cta-sub { color: var(--mp-ink-2); font-size: 0.9375rem; line-height: 1.55; margin: 0 0 22px; }
.mp-inline-cta > .mp-btn {
  display: flex; width: 100%; align-items: center; justify-content: center; gap: 10px;
  padding: 16px 26px; font-size: 1.0625rem; font-weight: 800; border-radius: 12px;
  box-shadow: 0 14px 30px -10px rgba(201,162,39,0.65);
}
.mp-inline-cta > .mp-btn::after { content: "→"; font-size: 1.1em; line-height: 1; transition: transform .15s; }
.mp-inline-cta > .mp-btn:hover::after { transform: translateX(3px); }
@media (max-width: 560px) {
  .mp-inline-cta { padding: 22px 18px; border-radius: 16px; }
  .mp-inline-cta > .mp-btn { padding: 14px 20px; font-size: 1rem; }
}

/* ── 4. SPOTLIGHT — the loudest variant, MAX TWICE PER PAGE ───────────────────
   Reserve for the welcome-offer card and the closing block. Put it on all ten
   in-body CTAs and the page stops having a peak — the variant only works because
   the cards around it are quieter. */
.mp-inline-cta--spotlight { text-align: center; padding: 42px 28px; border-radius: 22px; }
.mp-inline-cta--spotlight::after { inset: -30% auto auto -20%; width: 420px; height: 420px; }
.mp-inline-cta--spotlight .mp-inline-cta-h { font-size: clamp(1.75rem, 5vw, 2.6rem); }
.mp-inline-cta--spotlight .mp-inline-cta-sub { max-width: 46ch; margin-left: auto; margin-right: auto; }
.mp-inline-cta--spotlight > .mp-btn { width: auto; display: inline-flex; padding: 18px 40px; border-radius: 999px; font-size: 1.125rem; }

/* the closing .mp-cta-block already ships the spotlight's markup
   (eyebrow / h / sub / actions / terms) — it only needs the matching intensity */
.mp-cta-block { border-color: rgba(201,162,39,0.45); box-shadow: 0 30px 70px -30px rgba(0,0,0,0.95); }
/* TRAP 1 + 2 — parent-scoped AND text-fill, or the gradient never appears */
.mp-cta-block .mp-cta-block-h {
  background: linear-gradient(180deg, #f5e2a8, var(--mp-brand));
  -webkit-background-clip: text; background-clip: text;
  color: transparent; -webkit-text-fill-color: transparent;
}
.mp-cta-block .mp-btn-xl {
  border-radius: 999px; padding: 18px 44px;
  box-shadow: 0 18px 40px -12px rgba(201,162,39,0.75);
}
.mp-cta-block .mp-btn-xl::after { content: "→"; margin-left: 10px; font-size: 1.1em; }

/* ── LIGHT-THEME / NON-GOLD BRANDS ───────────────────────────────────────────
   The hard-coded values above are the dark-gold house look. For another brand
   colour, only these need swapping: the two card gradients (#16241c/#0c1512),
   the bloom rgba, and the #1a1500 badge ink. Keep the CONTRAST, not the hue —
   button ink on the brand plate must clear 4.5:1 (the house pairing is 7.75:1).
   Verify with getComputedStyle, never by eye: a light theme flips which of
   ink/brand-ink is the readable one and the failure is silent.                 */

/* ==========================================================================
   PALETA ALTAFICHA — oro del logotipo (#ffc536) + jade (#12b886) sobre carbón.
   El oro NO se eligió a ojo: es el color medido del jaguar del logotipo
   (píxeles saturados, H42 S100 L60). El jade es el segundo acento y es lo que
   separa este land del ámbar-sobre-grafito que ya se gastó en caposino-ar.
   Los componentes del kit hablan `--mp-*`; acá se definen todos.
   ========================================================================== */
:root {
  --mp-bg: #0f0e0c; --mp-bg-1: #161513; --mp-bg-2: #221f1a; --mp-bg-3: #2e2a22;
  --mp-bg-card: #1a1815; --mp-bg-card-2: #221f1a;
  --mp-ink: #f7f4ee; --mp-ink-2: #d6d1c6; --mp-ink-3: #9b9689; --mp-ink-mute: #6e6a5f;
  --mp-border: rgba(255,197,54,0.16); --mp-border-strong: rgba(255,197,54,0.32);

  --mp-brand: #ffc536; --mp-brand-deep: #e0a400; --mp-brand-light: #ffd97a;
  --mp-brand-glow: rgba(255,197,54,0.40); --mp-brand-ink: #1b1503;

  --mp-leaf: #12b886; --mp-leaf-deep: #0e9670; --mp-leaf-glow: rgba(18,184,134,0.35);
  --mp-amber: #ffc536; --mp-amber-glow: rgba(255,197,54,0.35);
  --mp-red: #e0554b; --mp-red-deep: #c4402f; --mp-red-glow: rgba(224,85,75,0.35);
  --mp-pos: #12b886; --mp-neg: #e0554b; --mp-warn: #e0a400;
  --mp-sky: #2bb3a3; --mp-violet: #12b886; --mp-magenta: #e0554b;

  --mp-grad-hero: radial-gradient(ellipse at 92% -10%, rgba(255,197,54,0.20), transparent 55%),
                  radial-gradient(ellipse at 6% 110%, rgba(18,184,134,0.14), transparent 55%),
                  linear-gradient(180deg, #0f0e0c 0%, #161513 100%);
  --mp-grad-cta: linear-gradient(135deg, #ffc536 0%, #e0a400 100%);
  --mp-grad-leaf: linear-gradient(135deg, #12b886, #0e9670);
  --mp-grad-red: linear-gradient(135deg, #e0554b, #c4402f);
  --mp-grad-bleed: radial-gradient(80% 100% at 90% 0%, rgba(255,197,54,0.18), transparent 55%),
                   linear-gradient(160deg, #161513, #221f1a);
  --mp-grad-card: linear-gradient(180deg, var(--mp-bg-card), var(--mp-bg-card-2));

  --mp-font-body: 'Manrope', -apple-system, BlinkMacSystemFont, system-ui, sans-serif;
  --mp-font-display: 'Outfit', 'Manrope', system-ui, sans-serif;
  --mp-font-mono: 'Space Mono', ui-monospace, SFMono-Regular, monospace;

  --mp-t-display: clamp(2rem, 4.6vw + 0.5rem, 3rem);
  --mp-t-h1: clamp(1.75rem, 3vw + 0.5rem, 2.25rem);
  --mp-t-h2: clamp(1.5rem, 2.5vw + 0.5rem, 1.875rem);
  --mp-t-h3: 1.125rem; --mp-t-body: 1rem; --mp-t-sm: .9375rem; --mp-t-xs: .75rem;

  --mp-s-1: 4px; --mp-s-2: 8px; --mp-s-3: 12px; --mp-s-4: 16px; --mp-s-5: 24px;
  --mp-s-6: 32px; --mp-s-7: 48px; --mp-s-8: 64px;

  --mp-max-w: 1180px; --mp-radius: 10px; --mp-radius-lg: 16px; --mp-radius-xl: 24px;
  --mp-radius-pill: 999px;
  --mp-shadow: 0 4px 24px rgba(0,0,0,.45); --mp-shadow-lg: 0 12px 48px rgba(0,0,0,.55);
  --mp-t-anim: 180ms cubic-bezier(.4,0,.2,1);

  /* alias que espera el kit base */
  --bg: #0f0e0c; --surface: #161513; --surface2: #221f1a; --text: #f7f4ee;
  --muted: #d6d1c6; --accent: #ffc536; --accent-deep: #e0a400; --accent-light: #ffd97a;
  --accent-ink: #ffd97a; --accent-contrast: #1b1503; --secondary: #12b886;
  --container: 1180px;
}

/* Tipografía y base mínimas: el kit del skill asume que el land las trae. */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; }
body { margin: 0; background: var(--mp-bg); color: var(--mp-ink);
  font-family: var(--mp-font-body); font-size: var(--mp-t-body); line-height: 1.6;
  -webkit-font-smoothing: antialiased; }
img, svg { max-width: 100%; display: block; }
a { color: var(--mp-brand); text-decoration: none; transition: color var(--mp-t-anim); }
a:hover { color: var(--mp-brand-light); }
h1, h2, h3, h4 { font-family: var(--mp-font-display); font-weight: 800; margin: 0;
  line-height: 1.12; letter-spacing: -.02em; color: var(--mp-ink); }
h1 { font-size: var(--mp-t-h1); } h2 { font-size: var(--mp-t-h2); } h3 { font-size: var(--mp-t-h3); }
p { margin: 0 0 var(--mp-s-4); color: var(--mp-ink-2); }
strong { color: var(--mp-ink); }
table { border-collapse: collapse; }
.mp-table-wrap { overflow-x: auto; margin: var(--mp-s-4) 0; }
.mp-table { width: 100%; min-width: 460px; font-size: var(--mp-t-sm); }
.mp-table caption { text-align: left; color: var(--mp-ink-3); font-size: var(--mp-t-xs);
  padding-bottom: 8px; }
.mp-table th, .mp-table td { padding: 10px 12px; border-bottom: 1px solid var(--mp-border);
  text-align: left; color: var(--mp-ink-2); vertical-align: top; }
.mp-table thead th { background: rgba(255,197,54,.10); color: var(--mp-ink);
  font-family: var(--mp-font-mono); font-size: var(--mp-t-xs); text-transform: uppercase;
  letter-spacing: .08em; }
.mp-skip-link { position: absolute; left: -9999px; }
.mp-skip-link:focus { left: 8px; top: 8px; z-index: 99; background: var(--mp-brand);
  color: var(--mp-brand-ink); padding: 8px 14px; border-radius: 8px; }

/* ==== HUB DECK (templates/hub-deck/shell.css) — oro + jade ==== */
/*
Hub deck — четверта layout-родина. Префікс `mp-hd-*`. Підключати ПІСЛЯ theme.css ленда.

Це каркас під БАГАТОСТОРІНКОВИЙ сайт (hub-and-spoke), а не під одностраничник:
двоярусна шапка з повним меню → хлібні крихти → герой із «квитком» оферу → колода карток
розділів → стаття з липким змістом праворуч → липка смуга CTA.

LOBBY і SIDEBAR — оболонки одностраничника: там уся навігація це якорі. Тут навігація веде на
18 окремих URL, тож меню, крихти й перелінковка — головні елементи, а не додаток.

Усе кольорове — через токени ленда (--mp-*) плюс вісім --hd-* нижче.
*/

:root {
  --hd-brand:       var(--mp-brand);        /* акцент: крихти, номери, підкреслення */
  --hd-brand-deep:  var(--mp-brand-deep);
  --hd-brand-ink:   var(--mp-brand-ink);    /* текст НА акценті */
  --hd-second:      var(--mp-leaf);         /* другий акцент: квиток, «нове» */
  --hd-surface:     var(--mp-bg-card);
  --hd-line:        var(--mp-border);
  --hd-top-h:       56px;
  --hd-rail:        260px;                  /* ширина колонки змісту */
}

/* ==========================================================================
   1. ШАПКА — два яруси: марка/мова/CTA зверху, повне меню знизу
   ========================================================================== */
.mp-hd-top { position: sticky; top: 0; z-index: 60; background: var(--mp-bg-1); border-bottom: 1px solid var(--hd-line); }
.mp-hd-bar {
  max-width: var(--mp-max-w); margin: 0 auto; padding: 8px var(--mp-s-4);
  display: flex; align-items: center; gap: var(--mp-s-4); min-height: var(--hd-top-h);
}
.mp-hd-logo { display: flex; align-items: center; gap: 10px; flex-shrink: 0; }
.mp-hd-logo img { height: 30px; width: auto; }
.mp-hd-logo b { font-family: var(--mp-font-display); font-size: 1.05rem; color: var(--mp-ink); white-space: nowrap; }
.mp-hd-lang { display: flex; gap: 4px; margin-left: auto; flex-shrink: 0; }
.mp-hd-lang a {
  font-size: var(--mp-t-xs); font-weight: 700; letter-spacing: .04em; padding: 6px 10px;
  border: 1px solid var(--hd-line); border-radius: var(--mp-radius); color: var(--mp-ink-3);
}
.mp-hd-lang a.is-on { background: var(--hd-brand); color: var(--hd-brand-ink); border-color: transparent; }

/* Меню: РЯДКИ, які переносяться, а не горизонтальний скрол — на 18 розділів рейка
   ховає половину пунктів за краєм екрана, і користувач їх просто не бачить. */
.mp-hd-menu { border-top: 1px solid var(--hd-line); background: var(--mp-bg); }
.mp-hd-menu-in {
  max-width: var(--mp-max-w); margin: 0 auto; padding: 6px var(--mp-s-4) 8px;
  display: flex; flex-wrap: wrap; gap: 2px 4px;
}
.mp-hd-menu a {
  padding: 7px 10px; border-radius: var(--mp-radius); font-size: var(--mp-t-sm);
  color: var(--mp-ink-2); white-space: nowrap;
}
.mp-hd-menu a:hover { background: var(--mp-bg-2); color: var(--mp-ink); }
.mp-hd-menu a[aria-current] { color: var(--hd-brand); font-weight: 700; }
.mp-hd-cta-top { flex-shrink: 0; }

@media (max-width: 900px) {
  /* En el teléfono el menú completo ocupaba 212px de alto (18 enlaces en cinco filas) y, al ser
     pegajoso, se comía un tercio de la pantalla de forma permanente. Acá pasa a una sola fila
     con desplazamiento horizontal: sí, esconde parte de los enlaces fuera del borde, pero es
     preferible a una barra fija que tapa el contenido en cada scroll. En escritorio se mantiene
     el menú completo a la vista, que es donde de verdad sirve. */
  .mp-hd-menu-in {
    flex-wrap: nowrap; overflow-x: auto; scroll-snap-type: x proximity;
    scrollbar-width: none; -webkit-overflow-scrolling: touch;
  }
  .mp-hd-menu-in::-webkit-scrollbar { display: none; }
  .mp-hd-menu-in a { flex: 0 0 auto; scroll-snap-align: start; }
}

/* ==========================================================================
   2. КРИХТИ
   ========================================================================== */
.mp-hd-crumbs {
  max-width: var(--mp-max-w); margin: 0 auto; padding: 12px var(--mp-s-4) 0;
  font-size: var(--mp-t-xs); color: var(--mp-ink-3);
  display: flex; flex-wrap: wrap; gap: 6px; list-style: none;
}
.mp-hd-crumbs li { display: flex; gap: 6px; align-items: center; }
.mp-hd-crumbs li + li::before { content: "›"; color: var(--mp-ink-mute); }
.mp-hd-crumbs a { color: var(--mp-ink-3); }
.mp-hd-crumbs a:hover { color: var(--hd-brand); }

/* ==========================================================================
   3. ГЕРОЙ + КВИТОК ОФЕРУ
   Квиток — підпис родини: вирізи по боках роблять радіальні градієнти
   у `background`, а не картинка й не clip-path (clip-path з'їдає тінь).
   ========================================================================== */
.mp-hd-hero { max-width: var(--mp-max-w); margin: 0 auto; padding: var(--mp-s-5) var(--mp-s-4) var(--mp-s-6); }
.mp-hd-hero-in { display: grid; grid-template-columns: minmax(0,1.2fr) minmax(280px,.8fr); gap: var(--mp-s-6); align-items: center; }
.mp-hd-hero h1 { font-size: var(--mp-t-display); margin-bottom: var(--mp-s-3); }
.mp-hd-hero p { color: var(--mp-ink-2); max-width: 60ch; }

.mp-hd-ticket {
  position: relative; padding: 22px 24px; border-radius: 14px;
  background:
    radial-gradient(12px at 0 50%, transparent 98%, var(--hd-surface) 100%),
    radial-gradient(12px at 100% 50%, transparent 98%, var(--hd-surface) 100%),
    linear-gradient(160deg, var(--mp-bg-2), var(--hd-surface));
  border: 1px solid var(--hd-second);
  box-shadow: var(--mp-shadow-lg);
}
.mp-hd-ticket-k { font-family: var(--mp-font-mono); font-size: var(--mp-t-xs); letter-spacing: .12em; text-transform: uppercase; color: var(--hd-second); margin: 0 0 6px; }
.mp-hd-ticket-h { font-family: var(--mp-font-display); font-weight: 800; font-size: 1.6rem; color: var(--mp-ink); margin: 0 0 6px; line-height: 1.1; }
.mp-hd-ticket-p { font-size: var(--mp-t-sm); color: var(--mp-ink-2); margin: 0 0 16px; }
.mp-hd-ticket-cut { border-top: 1px dashed var(--hd-line); margin: 0 -24px 16px; }

.mp-hd-btn {
  display: inline-flex; align-items: center; justify-content: center; gap: 8px;
  padding: 13px 22px; font-weight: 800; font-size: var(--mp-t-sm); border-radius: 10px;
  color: var(--hd-brand-ink); background: var(--hd-brand); border: 0;
}
.mp-hd-btn:hover { color: var(--hd-brand-ink); background: var(--hd-brand-deep); }
.mp-hd-btn--wide { width: 100%; }
.mp-hd-btn--ghost { background: none; color: var(--mp-ink); border: 1px solid var(--mp-border-strong); }
.mp-hd-btn--ghost:hover { background: var(--mp-bg-2); color: var(--mp-ink); }

@media (max-width: 900px) { .mp-hd-hero-in { grid-template-columns: 1fr; } }

/* ==========================================================================
   4. КОЛОДА — картки розділів із великим номером (hub → spokes)
   ========================================================================== */
.mp-hd-deck { display: grid; grid-template-columns: repeat(3, 1fr); gap: 14px; margin: var(--mp-s-5) 0; }
@media (max-width: 900px) { .mp-hd-deck { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 560px) { .mp-hd-deck { grid-template-columns: 1fr; } }
.mp-hd-card {
  position: relative; overflow: hidden; display: block; padding: 18px 18px 16px;
  background: var(--hd-surface); border: 1px solid var(--hd-line); border-radius: 14px;
  transition: border-color var(--mp-t-anim), transform var(--mp-t-anim);
}
.mp-hd-card:hover { border-color: var(--hd-brand); transform: translateY(-2px); }
/* Номер картки: щільний чип, а не велика обведена цифра.
   Обведена цифра 3.2rem у кутку картки з `overflow:hidden` зрізалася зверху, налазила на
   заголовок і при `color:transparent` не мала контрасту взагалі. Чип читається, не ріжеться
   і не конкурує з текстом. */
.mp-hd-card-n {
  display: inline-flex; align-items: center; justify-content: center;
  width: 26px; height: 26px; margin-bottom: 10px; border-radius: 8px;
  background: var(--hd-brand); color: var(--hd-brand-ink);
  font-family: var(--mp-font-mono); font-size: .75rem; font-weight: 700; line-height: 1;
}
.mp-hd-card h3 { font-size: 1.05rem; margin: 0 0 6px; color: var(--mp-ink); }
.mp-hd-card p { font-size: var(--mp-t-sm); color: var(--mp-ink-2); margin: 0; }
.mp-hd-card-go { display: inline-block; margin-top: 10px; font-size: var(--mp-t-sm); font-weight: 700; color: var(--hd-brand); }

/* ==========================================================================
   5. СТАТТЯ + ЛИПКИЙ ЗМІСТ ПРАВОРУЧ
   ========================================================================== */
.mp-hd-wrap { max-width: var(--mp-max-w); margin: 0 auto; padding: 0 var(--mp-s-4) var(--mp-s-7); }
.mp-hd-layout { display: grid; grid-template-columns: minmax(0,1fr) var(--hd-rail); gap: var(--mp-s-6); align-items: start; }
.mp-hd-body { min-width: 0; }
.mp-hd-body > h2 { margin: var(--mp-s-7) 0 var(--mp-s-3); scroll-margin-top: calc(var(--hd-top-h) + 60px); }
.mp-hd-body > h3 { margin: var(--mp-s-5) 0 var(--mp-s-2); scroll-margin-top: calc(var(--hd-top-h) + 60px); }
.mp-hd-body > p, .mp-hd-body > ul, .mp-hd-body > ol { max-width: 72ch; }

.mp-hd-toc { position: sticky; top: calc(var(--hd-top-h) + 60px); }
.mp-hd-toc-in { background: var(--hd-surface); border: 1px solid var(--hd-line); border-radius: 14px; padding: 16px; }
.mp-hd-toc h4 { font-size: var(--mp-t-xs); text-transform: uppercase; letter-spacing: .1em; font-family: var(--mp-font-mono); color: var(--mp-ink-3); margin: 0 0 10px; }
.mp-hd-toc ol { list-style: none; margin: 0; padding: 0; display: grid; gap: 7px; counter-reset: toc; }
.mp-hd-toc li { counter-increment: toc; }
.mp-hd-toc a { font-size: var(--mp-t-sm); color: var(--mp-ink-2); display: flex; gap: 8px; }
.mp-hd-toc a::before { content: counter(toc, decimal-leading-zero); font-family: var(--mp-font-mono); font-size: .75rem; color: var(--hd-brand); }
.mp-hd-toc a:hover { color: var(--mp-ink); }

@media (max-width: 1000px) {
  .mp-hd-layout { grid-template-columns: 1fr; }
  /* Зміст на телефоні їде НАГОРУ і згортається: липка колонка під статтею
     нікому не потрібна, а перед текстом він працює як навігація по сторінці. */
  .mp-hd-toc { position: static; order: -1; }
  .mp-hd-toc-in { padding: 12px 14px; }
  .mp-hd-toc ol { grid-template-columns: 1fr 1fr; display: grid; }
}
@media (max-width: 520px) { .mp-hd-toc ol { grid-template-columns: 1fr; } }

/* ==========================================================================
   6. БЛОКИ ВСЕРЕДИНІ СТАТТІ
   ========================================================================== */
.mp-hd-note {
  border-left: 3px solid var(--hd-second); background: var(--mp-bg-1);
  padding: 14px 16px; border-radius: 0 12px 12px 0; margin: var(--mp-s-4) 0;
}
.mp-hd-note p:last-child { margin-bottom: 0; }
.mp-hd-note b { color: var(--hd-second); }

.mp-hd-steps { list-style: none; counter-reset: st; padding: 0; margin: var(--mp-s-4) 0; display: grid; gap: 10px; }
.mp-hd-steps li { counter-increment: st; position: relative; padding: 12px 14px 12px 50px; background: var(--hd-surface); border: 1px solid var(--hd-line); border-radius: 12px; color: var(--mp-ink-2); }
.mp-hd-steps li::before {
  content: counter(st); position: absolute; left: 14px; top: 12px; width: 24px; height: 24px;
  display: grid; place-items: center; border-radius: 7px;
  background: var(--hd-brand); color: var(--hd-brand-ink);
  font-family: var(--mp-font-display); font-weight: 800; font-size: .8125rem;
}

/* Плитки ігор: обкладинки з пакета оператора — різні пропорції, тому фіксуємо рамку */
.mp-hd-tiles { display: grid; grid-template-columns: repeat(4, 1fr); gap: 12px; margin: var(--mp-s-4) 0; }
@media (max-width: 860px) { .mp-hd-tiles { grid-template-columns: repeat(3, 1fr); } }
@media (max-width: 520px) { .mp-hd-tiles { grid-template-columns: repeat(2, 1fr); } }
.mp-hd-tile { display: block; border: 1px solid var(--hd-line); border-radius: 12px; overflow: hidden; background: var(--hd-surface); }
.mp-hd-tile img { width: 100%; height: 116px; object-fit: cover; display: block; }
.mp-hd-tile span { display: block; padding: 8px 10px 10px; font-size: .8125rem; color: var(--mp-ink-2); }
.mp-hd-tile:hover { border-color: var(--hd-brand); }

/* Ряд платіжних логотипів: біла плашка — галузева норма; світле мистецтво міряється
   в _build/media.py і отримує темну плашку, інакше воно зникає на білому. */
.mp-hd-pay { display: flex; flex-wrap: wrap; gap: 10px; margin: var(--mp-s-4) 0; }
.mp-hd-pay img {
  height: 42px !important; width: auto !important; object-fit: contain;
  background: #ffffff; border-radius: 9px; padding: 7px 12px; border: 1px solid var(--hd-line);
}
.mp-hd-pay img.is-light-art { background: #16130c; border-color: var(--mp-border-strong); }

/* ==========================================================================
   7. ЛИПКА СМУГА CTA + правові сторінки
   ========================================================================== */
.mp-hd-sticky {
  position: fixed; left: 0; right: 0; bottom: 0; z-index: 55;
  display: flex; align-items: center; gap: var(--mp-s-4); padding: 9px var(--mp-s-4);
  background: color-mix(in srgb, var(--mp-bg-1) 95%, transparent);
  backdrop-filter: blur(10px); border-top: 1px solid var(--hd-second);
}
.mp-hd-sticky p { margin: 0; font-size: var(--mp-t-sm); color: var(--mp-ink-2); }
.mp-hd-sticky b { color: var(--mp-ink); }
.mp-hd-sticky .mp-hd-btn { margin-left: auto; flex-shrink: 0; }
body:has(.mp-hd-sticky) { padding-bottom: 68px; }
@media (max-width: 560px) { .mp-hd-sticky p { font-size: var(--mp-t-xs); } }

/* Правило живе в РОДИНІ, а не в ленді: на sidebar-shell той самий недогляд відправив
   у продакшен живу кнопку «забрати бонус» на сторінці приватності (FIX-61). */
.mp-rg .mp-hd-sticky,
.mp-rg .mp-hd-cta-top,
.mp-rg .mp-hd-ticket { display: none !important; }
.mp-rg:has(.mp-hd-sticky) { padding-bottom: 0; }

/* ==========================================================================
   8. ПІДВАЛ, FAQ І ТИПОГРАФІЧНІ ДРІБНИЦІ
   Ці компоненти є на КОЖНІЙ сторінці ленда, але їх немає в базовому киті скіла — у флоті вони
   жили в theme.css кожного ленда окремо. Родина, зібрана з китa скіла, лишалася без них, і
   підвал виїжджав голими маркерами списку, а FAQ — стандартними трикутниками <details>.
   ========================================================================== */
.mp-foot { border-top: 1px solid var(--hd-line); background: var(--mp-bg-1); margin-top: var(--mp-s-7); }
.mp-foot .wrap { max-width: var(--mp-max-w); margin: 0 auto; padding: var(--mp-s-6) var(--mp-s-4); }
.mp-foot-top {
  display: grid; grid-template-columns: 1.6fr 1fr 1fr 1fr; gap: var(--mp-s-5);
  padding-bottom: var(--mp-s-5); border-bottom: 1px solid var(--hd-line);
}
.mp-foot-top > div > p { font-size: var(--mp-t-sm); color: var(--mp-ink-3); margin: 8px 0 0; }
.mp-brand-line { font-family: var(--mp-font-display); font-size: 1.05rem; color: var(--mp-ink); }
.mp-brand-line:hover { color: var(--hd-brand); }
.mp-foot-col h4 {
  font-family: var(--mp-font-mono); font-size: var(--mp-t-xs); text-transform: uppercase;
  letter-spacing: .1em; color: var(--mp-ink-3); margin: 0 0 10px; font-weight: 700;
}
.mp-foot-col ul { list-style: none; margin: 0; padding: 0; display: grid; gap: 7px; }
.mp-foot-col a { font-size: var(--mp-t-sm); color: var(--mp-ink-2); }
.mp-foot-col a:hover { color: var(--hd-brand); }
.mp-foot-disclaimer-box {
  display: grid; grid-template-columns: auto 1fr; gap: var(--mp-s-4); align-items: start;
  padding: var(--mp-s-5) 0; border-bottom: 1px solid var(--hd-line);
}
.mp-foot-disclaimer-box p { font-size: var(--mp-t-sm); color: var(--mp-ink-3); margin: 0; }
.mp-foot-disclaimer-box strong { color: var(--mp-ink-2); }
.mp-foot-age-mark {
  display: grid; place-items: center; width: 44px; height: 44px; border-radius: 50%;
  border: 2px solid var(--hd-second); color: var(--hd-second);
  font-family: var(--mp-font-display); font-weight: 800; font-size: .9375rem;
}
.mp-foot-bottom {
  display: grid; gap: 8px; padding-top: var(--mp-s-4);
  /* --mp-ink-mute daba 3,38:1 sobre el fondo del pie: por debajo de 4,5 para texto pequeño.
     Medido, no estimado. */
  font-size: var(--mp-t-xs); color: var(--mp-ink-3); line-height: 1.6;
}
@media (max-width: 860px) {
  .mp-foot-top { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 520px) {
  .mp-foot-top { grid-template-columns: 1fr; }
}

/* FAQ на <details>: працює без JS і друкується розгорнутим */
.mp-faq {
  background: var(--hd-surface); border: 1px solid var(--hd-line);
  border-radius: 12px; overflow: hidden; margin-bottom: 10px;
}
.mp-faq > summary {
  list-style: none; cursor: pointer; position: relative;
  padding: 15px 50px 15px 16px;
  font-family: var(--mp-font-display); font-weight: 700; font-size: 1.0313rem; color: var(--mp-ink);
}
.mp-faq > summary::-webkit-details-marker { display: none; }
.mp-faq > summary::after {
  content: "+"; position: absolute; right: 16px; top: 50%; transform: translateY(-50%);
  font-size: 1.3rem; line-height: 1; color: var(--hd-brand);
}
.mp-faq[open] > summary::after { content: "2"; }
.mp-faq > div { padding: 0 16px 16px; color: var(--mp-ink-2); font-size: var(--mp-t-sm); }
.mp-faq > div > p:last-child { margin-bottom: 0; }
.mp-faq:hover { border-color: var(--mp-border-strong); }

/* Лід і подпись автора */
.mp-lead { font-size: 1.0625rem; color: var(--mp-ink-2); }
.mp-byline {
  font-family: var(--mp-font-mono); font-size: var(--mp-t-xs); color: var(--mp-ink-3);
  border-left: 2px solid var(--hd-brand); padding-left: 10px; margin-bottom: var(--mp-s-5);
}

@media (prefers-reduced-motion: reduce) { .mp-hd-card { transition: none; } }

/* --------------------------------------------------------------------------
   Палітри (8 токенів у :root ленда):
     золото+нефрит (altaficha-ar): --hd-brand #ffc536 · deep #e0a400 · second #12b886
     індиго+корал:                 --hd-brand #5b6cff · deep #3d4ae0 · second #ff7a66
     мідь+бірюза:                  --hd-brand #d97742 · deep #b45c2e · second #2bb3a3
   -------------------------------------------------------------------------- */
