/* ============================================================
   style.css — WinSpirit-grade casino template component system
   Layout/structure layer. Brand values live in variables.css.
   ============================================================ */

/* ---------- reset / base ---------- */
*, *::before, *::after { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body {
  margin: 0;
  background: var(--c-bg);
  color: var(--c-ink);
  font-family: var(--font);
  font-size: var(--t-base);
  line-height: 1.55;
  -webkit-font-smoothing: antialiased;
}
img { max-width: 100%; height: auto; display: block; }
a { color: var(--brand-primary-20); text-decoration: none; }
a:hover { color: var(--brand-primary-10); }
h1, h2, h3, h4 { font-weight: 800; line-height: 1.2; margin: 0 0 var(--s-4); }
h1 { font-size: var(--t-h1); }
h2 { font-size: var(--t-h2); }
h3 { font-size: var(--t-h3); }
p { margin: 0 0 var(--s-4); color: var(--c-ink-muted); }
:focus-visible { outline: 2px solid var(--brand-primary-20); outline-offset: 2px; border-radius: var(--r-sm); }
.skip-link { position: absolute; left: -9999px; top: 0; background: var(--brand-primary-20); color: var(--brand-primary-ink); padding: var(--s-2) var(--s-4); z-index: 20000; border-radius: 0 0 var(--r-sm) 0; }
.skip-link:focus { left: 0; }

.wrap { max-width: var(--container); margin: 0 auto; padding: 0 var(--gutter); }
.section { padding: var(--s-7) 0; }

/* section head: centered title + right "Show all" */
.sec-head { display: flex; align-items: center; justify-content: center; position: relative; margin-bottom: var(--s-5); }
.sec-head h2 { margin: 0; text-align: center; }
.sec-head .show-all { position: absolute; right: 0; font-size: var(--t-sm); font-weight: 700; color: var(--c-ink-muted); }
.sec-head .show-all:hover { color: var(--c-ink); }
.sec-cta { display: flex; justify-content: center; margin-top: var(--s-5); }

/* ---------- buttons ---------- */
.btn {
  display: inline-flex; align-items: center; justify-content: center; gap: .45em;
  border: 0; cursor: pointer; white-space: nowrap;
  font: 700 14px/1.2 var(--font);
  padding: 10px 18px; border-radius: var(--r-lg);
  color: var(--c-ink); background: var(--c-surface-3);
  transition: transform var(--dur-fast) var(--ease-std), filter var(--dur-fast) var(--ease-std), box-shadow var(--dur-base) var(--ease-std);
}
.btn:hover { filter: brightness(1.12); transform: translateY(-1px); }
.btn:active { transform: translateY(0); }
.btn-primary { background: var(--brand-primary-20); color: var(--brand-primary-ink); }
.btn-primary:hover { background: var(--brand-primary-10); color: var(--brand-primary-ink); }
.btn-ghost { background: var(--c-surface-3); color: var(--c-ink); }
.btn-outline { background: transparent; box-shadow: var(--sh-hairline); }
.btn-sm { padding: 7px 14px; font-size: 13px; }
.btn-lg { padding: 13px 26px; font-size: 15px; }
.btn-icon { width: 38px; height: 38px; padding: 0; border-radius: var(--r-full); }
.link-more { font: 700 12px/1 var(--font); color: var(--brand-primary-20); letter-spacing: .02em; }

/* ---------- header ---------- */
.site-header {
  position: sticky; top: 0; z-index: 10000;
  height: var(--header-h);
  background: var(--c-header-bg);
  -webkit-backdrop-filter: blur(12px); backdrop-filter: blur(12px);
}
.header-in { display: flex; align-items: center; gap: var(--s-5); height: var(--header-h); }
.brand { display: flex; align-items: center; gap: 10px; color: var(--c-ink); }
.brand-mark { width: 40px; height: 40px; flex: none; }
.brand-name { font-weight: 800; font-style: italic; font-size: 13px; line-height: 1.05; letter-spacing: .04em; text-transform: uppercase; white-space: pre-line; }
.nav { display: flex; align-items: center; gap: var(--s-2); flex: 1; min-width: 0; }
.nav a {
  font: 700 14px/1 var(--font); color: var(--c-ink-muted);
  padding: 10px 12px; border-radius: var(--r-sm);
  transition: color var(--dur-fast) var(--ease-std);
}
.nav a:hover, .nav a.active { color: var(--c-ink); }
.nav a.vip { color: var(--c-gold); }
.header-auth { display: flex; align-items: center; gap: var(--s-2); margin-left: auto; }
.nav-toggle { display: none; }

/* ---------- floating bonus popups ---------- */
.popups { position: fixed; top: calc(var(--header-h) + 12px); right: 14px; z-index: 9000; display: grid; gap: 10px; width: min(330px, calc(100vw - 28px)); }
.popup {
  display: flex; align-items: center; gap: 12px;
  border-radius: var(--r-md); padding: 14px 40px 14px 14px;
  color: #fff; position: relative; box-shadow: var(--sh-card);
  animation: popup-in var(--dur-slow) var(--ease-out-expo) both;
}
.popup.p1 { background: var(--g-popup-1); }
.popup.p2 { background: var(--g-popup-2); animation-delay: .15s; }
.popup .p-icon { font-size: 30px; flex: none; filter: drop-shadow(0 4px 8px rgba(0,0,0,.35)); }
.popup .p-label { font: 700 11px/1 var(--font); opacity: .85; text-transform: capitalize; display: block; margin-bottom: 4px; }
.popup .p-label.gold { color: var(--c-gold); opacity: 1; }
.popup strong { font-size: 15px; line-height: 1.3; display: block; }
.popup .p-close { position: absolute; top: 8px; right: 8px; background: none; border: 0; color: #fff; font-size: 18px; cursor: pointer; opacity: .8; line-height: 1; padding: 4px; }
.popup .p-close:hover { opacity: 1; }
@keyframes popup-in { from { opacity: 0; transform: translateX(24px); } to { opacity: 1; transform: none; } }

/* ---------- cookie banner ---------- */
.cookie {
  position: fixed; left: 50%; bottom: 18px; transform: translateX(-50%);
  z-index: 11000; display: flex; align-items: center; gap: 12px;
  background: var(--c-surface-2); border-radius: var(--r-full);
  padding: 8px 10px 8px 16px; box-shadow: var(--sh-card), var(--sh-hairline);
  font-size: var(--t-sm); white-space: nowrap;
}
.cookie a { text-decoration: underline; }
.cookie .btn { padding: 7px 18px; }
.cookie.hidden { display: none; }

/* ---------- hero carousel ---------- */
.hero { padding-top: var(--s-5); }
.hero-track { display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--carousel-gap); }
.hero-card {
  position: relative; min-height: 300px; border-radius: var(--r-lg); overflow: hidden;
  padding: var(--s-6) var(--s-5); display: flex; flex-direction: column; justify-content: space-between;
  color: #fff; isolation: isolate;
  transition: transform var(--dur-base) var(--ease-out-expo), box-shadow var(--dur-base) var(--ease-std);
}
.hero-card:hover { transform: translateY(-4px); box-shadow: var(--glow-purple); }
.hero-card.h1 { background: var(--g-hero-1); }
.hero-card.h2 { background: var(--g-hero-2); }
.hero-card.h3 { background: var(--g-hero-3); }
.hero-card .h-label { font: 700 12px/1 var(--font); opacity: .8; margin-bottom: var(--s-3); }
.hero-card .h-title { font-size: clamp(1.3rem, 1.05rem + 1vw, 1.9rem); font-weight: 800; line-height: 1.25; margin: 0; max-width: 15ch; }
.hero-card .h-art { position: absolute; right: -10px; bottom: -14px; font-size: 110px; line-height: 1; opacity: .9; z-index: -1; filter: drop-shadow(0 10px 24px rgba(0,0,0,.45)); transform: rotate(-8deg); }
.hero-card .h-img { position: absolute; right: 6px; bottom: 6px; width: 150px; height: 150px; z-index: -1; filter: drop-shadow(0 10px 24px rgba(0,0,0,.5)); transform: rotate(-6deg); border-radius: var(--r-md); }
.hero-card .h-emblem { position: absolute; right: 14px; top: 50%; transform: translateY(-50%); width: 120px; height: 120px; z-index: -1; opacity: .95; }

/* ---------- advantage row ---------- */
.advantages { display: grid; grid-template-columns: repeat(4, 1fr); gap: var(--s-4); margin-top: var(--s-5); }
.adv {
  display: flex; align-items: center; gap: 12px;
  background: var(--c-surface-1); border-radius: var(--r-md);
  padding: 12px 16px; box-shadow: var(--glow-brand);
  color: var(--c-ink); font-size: var(--t-sm);
  transition: transform var(--dur-base) var(--ease-out-expo);
}
.adv:hover { transform: translateY(-3px); }
.adv .a-icon { font-size: 26px; flex: none; }
.adv b { display: block; font-size: 14px; }
.adv small { color: var(--c-ink-muted); font-size: 12px; }
.adv .new { background: var(--brand-primary-20); color: var(--brand-primary-ink); font: 700 10px/1 var(--font); border-radius: var(--r-full); padding: 3px 7px; margin-left: 4px; vertical-align: middle; }

/* ---------- category chip bar ---------- */
.chipbar { display: flex; align-items: center; gap: var(--s-2); overflow-x: auto; padding: var(--s-2) 0; scrollbar-width: none; }
.chipbar::-webkit-scrollbar { display: none; }
.chip {
  flex: none; font: 700 13px/1 var(--font); color: var(--c-ink-muted);
  background: var(--c-surface-1); border: 0; cursor: pointer;
  padding: 9px 16px; border-radius: var(--r-full);
  transition: background var(--dur-fast) var(--ease-std), color var(--dur-fast) var(--ease-std);
}
.chip:hover { color: var(--c-ink); background: var(--c-surface-2); }
.chip.active { background: var(--brand-secondary-30); color: #fff; }
.chip-search { box-shadow: inset 0 0 0 2px #8b7cbb; background: transparent; width: 38px; height: 38px; border-radius: var(--r-full); padding: 0; }

/* ---------- game cards ---------- */
.game-row { display: grid; grid-auto-flow: column; grid-auto-columns: 200px; gap: var(--carousel-gap); overflow-x: auto; padding: var(--s-2) 0 var(--s-4); scrollbar-width: thin; scrollbar-color: var(--c-surface-3) transparent; }
.game-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(160px, 1fr)); gap: var(--carousel-gap); }
.game {
  position: relative; border-radius: var(--r-md); overflow: hidden;
  aspect-ratio: 1 / 1; background: var(--c-surface-2); display: block;
  transition: transform var(--dur-base) var(--ease-out-expo), box-shadow var(--dur-base) var(--ease-std);
}
.game.hidden { display: none; }
.game img { width: 100%; height: 100%; object-fit: cover; transition: transform var(--dur-slow) var(--ease-out-expo); }
.game:hover { transform: translateY(-4px); box-shadow: var(--sh-card); }
.game:hover img { transform: scale(1.06); }
.game .g-rank {
  position: absolute; top: 8px; left: 8px; z-index: 2;
  width: 26px; height: 26px; border-radius: var(--r-full);
  background: rgba(17, 14, 27, .8); color: var(--c-gold);
  font: 800 13px/26px var(--font); text-align: center;
}
.game .g-badge {
  position: absolute; top: 8px; right: 8px; z-index: 2;
  background: var(--c-error); color: #fff; font: 800 10px/1 var(--font);
  padding: 4px 7px; border-radius: var(--r-sm);
}
.game .g-play {
  position: absolute; inset: 0; z-index: 3;
  display: grid; place-items: center;
  background: rgba(17, 14, 27, .55);
  opacity: 0; transition: opacity var(--dur-base) var(--ease-std);
}
.game:hover .g-play, .game:focus-visible .g-play { opacity: 1; }
.game .g-play span {
  background: var(--brand-primary-20); color: var(--brand-primary-ink);
  font: 700 14px/1 var(--font); padding: 11px 26px; border-radius: var(--r-lg);
}
.game .g-name {
  position: absolute; left: 0; right: 0; bottom: 0; z-index: 2;
  padding: 22px 10px 8px; font: 700 12px/1.25 var(--font); color: #fff;
  background: linear-gradient(to top, rgba(17, 14, 27, .92), transparent);
}
.game.live .g-enjoy {
  position: absolute; left: 50%; bottom: 10px; transform: translateX(-50%); z-index: 2;
  background: var(--brand-primary-20); color: var(--brand-primary-ink);
  font: 800 11px/1 var(--font); letter-spacing: .08em;
  padding: 7px 16px; border-radius: var(--r-lg);
}

/* ---------- provider cards ---------- */
.provider-row { display: grid; grid-auto-flow: column; grid-auto-columns: 176px; gap: var(--s-4); overflow-x: auto; padding: var(--s-2) 0 var(--s-4); scrollbar-width: none; }
.provider-row::-webkit-scrollbar { display: none; }
.provider {
  height: 128px; border-radius: var(--r-md); background: var(--c-surface-1);
  display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 8px;
  color: var(--c-ink); transition: transform var(--dur-base) var(--ease-out-expo), background var(--dur-base) var(--ease-std);
}
.provider:hover { transform: translateY(-3px); background: var(--c-surface-2); color: var(--c-ink); }
.provider .pv-logo { font: 800 15px/1.1 var(--font); letter-spacing: .03em; text-align: center; text-transform: uppercase; }
.provider small { color: var(--c-ink-muted); font-size: 12px; }

/* ---------- sports strip ---------- */
.sports-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: var(--s-4); }
.match { background: var(--c-surface-1); border-radius: var(--r-md); padding: var(--s-4); }
.match .m-meta { display: flex; justify-content: space-between; font-size: 12px; color: var(--c-ink-muted); margin-bottom: var(--s-3); }
.match .m-teams { display: grid; gap: 6px; font: 700 14px/1.3 var(--font); margin-bottom: var(--s-4); }
.match .m-teams span { display: flex; align-items: center; gap: 8px; }
.match .m-teams .flag { font-size: 16px; }
.odds { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; }
.odd {
  background: var(--c-surface-3); border: 0; border-radius: var(--r-sm); cursor: pointer;
  color: var(--c-ink); font: 700 13px/1 var(--font); padding: 10px 6px;
  display: flex; justify-content: space-between; gap: 6px;
  transition: background var(--dur-fast) var(--ease-std);
}
.odd:hover { background: var(--c-input); }
.odd small { color: var(--c-ink-muted); font-weight: 400; }
.odd b { color: var(--brand-primary-20); }

/* ---------- campaign / tournament cards (promotions) ---------- */
.tabsbar { display: flex; justify-content: center; gap: var(--s-2); margin-bottom: var(--s-6); }
.filters { display: flex; align-items: center; justify-content: space-between; margin-bottom: var(--s-4); }
.filters .f-label { font: 700 15px/1 var(--font); }
.campaigns { display: grid; gap: var(--s-4); }
.campaign {
  display: grid; grid-template-columns: 288px 1fr; gap: var(--s-5);
  background: var(--c-surface-1); border-radius: var(--r-md); padding: var(--s-4);
  transition: transform var(--dur-base) var(--ease-out-expo), box-shadow var(--dur-base) var(--ease-std);
}
.campaign:hover { transform: translateY(-2px); box-shadow: var(--sh-card); }
.campaign .c-art {
  position: relative; height: 168px; border-radius: var(--r-sm); overflow: hidden;
  background: var(--g-card-art); display: grid; place-items: center; font-size: 56px;
}
.campaign .c-art > img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.campaign .c-countdown {
  position: absolute; top: 8px; left: 8px;
  background: rgba(17, 14, 27, .85); color: #fff;
  font: 700 11px/1 var(--font); padding: 5px 9px; border-radius: var(--r-sm);
  display: flex; align-items: center; gap: 5px;
}
.campaign .c-countdown::before { content: ''; width: 7px; height: 7px; border-radius: 50%; background: var(--c-error); }
.campaign .c-chip { position: absolute; right: 8px; top: 8px; background: rgba(17,14,27,.85); color: var(--c-ink-muted); font: 700 10px/1 var(--font); padding: 5px 8px; border-radius: var(--r-sm); }
.campaign .c-meta { display: flex; flex-direction: column; justify-content: center; gap: 6px; }
.campaign .c-kind { font: 700 12px/1 var(--font); color: var(--c-ink-muted); }
.campaign h3 { margin: 0; font-size: var(--t-lg); }
.campaign .c-pool-label { font-size: 12px; color: var(--c-ink-muted); margin-top: 6px; }
.campaign .c-pool { font: 800 19px/1 var(--font); color: var(--brand-secondary-20); }
.campaign .c-req { font-size: 12px; color: var(--c-ink-muted); display: flex; align-items: center; gap: 6px; }
.campaign .c-actions { display: flex; gap: var(--s-2); margin-top: var(--s-3); }

/* ---------- bonus offer cards ---------- */
.offer-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: var(--s-5); }
.offer {
  background: var(--c-surface-1); border-radius: var(--r-md); padding: var(--s-5);
  display: grid; grid-template-columns: 1fr 84px; gap: var(--s-3);
  transition: transform var(--dur-base) var(--ease-out-expo);
}
.offer:hover { transform: translateY(-3px); }
.offer h3 { font-size: var(--t-lg); margin: 0; }
.offer .o-icon { font-size: 56px; line-height: 1; text-align: center; align-self: start; filter: drop-shadow(0 6px 12px rgba(0,0,0,.4)); }
.offer .o-icon img { width: 84px; height: 84px; border-radius: var(--r-md); object-fit: cover; }
.offer p { grid-column: 1 / -1; margin: 0; font-size: var(--t-sm); }
.offer .o-actions { grid-column: 1 / -1; display: flex; gap: var(--s-2); margin-top: var(--s-2); }
.vip-strip {
  display: flex; align-items: center; gap: var(--s-4);
  background: var(--c-surface-1); border-radius: var(--r-md); padding: var(--s-4) var(--s-5);
  box-shadow: var(--glow-purple-edge), var(--glow-purple);
  margin: var(--s-6) 0;
}
.vip-strip .v-emblem { width: 64px; height: 64px; flex: none; }
.vip-strip .v-cta { margin-left: auto; }

/* ---------- crypto block ---------- */
.crypto { text-align: center; }
.coins { display: flex; justify-content: center; gap: 10px; margin-bottom: var(--s-4); font-size: 26px; }
.coins span {
  width: 44px; height: 44px; border-radius: var(--r-full); display: grid; place-items: center;
  background: var(--c-surface-2); font-size: 22px;
  box-shadow: var(--glow-cyan);
}
.crypto p { max-width: 52ch; margin: 0 auto var(--s-5); }

/* ---------- winners tables ---------- */
.winners-tabs { display: flex; justify-content: center; gap: var(--s-2); margin-bottom: var(--s-5); }
.winners { display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--s-5); }
.wcol { background: var(--c-surface-1); border-radius: var(--r-md); overflow: hidden; }
.wcol .w-head {
  background: var(--g-table-head); color: #fff;
  font: 800 15px/1 var(--font); padding: 14px 16px;
  display: flex; align-items: center; justify-content: space-between;
}
.wcol .w-head .w-ico { font-size: 22px; }
.wrow { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 12px 16px; border-top: 1px solid rgba(76, 66, 107, .35); }
.wrow .w-game { font: 700 13px/1.3 var(--font); }
.wrow .w-player { display: block; font-size: 11px; color: var(--c-ink-muted); font-weight: 400; margin-top: 3px; }
.wrow .w-amt { font: 800 14px/1.2 var(--font); text-align: right; white-space: nowrap; }
.wrow .w-amt small { display: block; font-size: 10px; color: var(--c-ink-muted); font-weight: 400; }

/* ---------- app banner + phone ---------- */
.app-banner {
  display: flex; align-items: center; gap: var(--s-5);
  background: linear-gradient(90deg, #221c36 6.25%, #3f1c60 93.75%);
  border-radius: var(--r-lg); padding: var(--s-5) var(--s-6);
}
.app-banner .ab-icon { font-size: 54px; flex: none; }
.app-banner h2 { margin: 0 0 4px; font-size: var(--t-lg); }
.app-banner p { margin: 0; font-size: var(--t-sm); }
.app-banner .btn { margin-left: auto; flex: none; }
.phone {
  width: 280px; height: 560px; margin: 0 auto;
  border-radius: 38px; border: 10px solid var(--c-surface-2);
  background: var(--c-surface-1); position: relative; overflow: hidden;
  box-shadow: var(--sh-card), var(--glow-purple);
}
.phone::before { content: ''; position: absolute; top: 10px; left: 50%; transform: translateX(-50%); width: 90px; height: 20px; border-radius: var(--r-full); background: var(--c-surface-2); z-index: 2; }
.phone .ph-screen { position: absolute; inset: 0; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 14px; background: var(--g-vip-hero); padding: 24px; text-align: center; }
.phone .ph-screen img { width: 72px; height: 72px; }
.steps { display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--s-4); counter-reset: step; }
.step { background: var(--c-surface-1); border-radius: var(--r-md); padding: var(--s-5); position: relative; }
.step::before {
  counter-increment: step; content: counter(step);
  display: grid; place-items: center; width: 44px; height: 44px;
  border-radius: var(--r-full); background: var(--c-surface-3);
  font: 800 20px/1 var(--font); margin-bottom: var(--s-3);
}
.step.active { background: var(--g-vip-badge); }
.step.active::before { background: rgba(17, 14, 27, .35); color: #fff; }
.step.active p { color: rgba(255, 255, 255, .85); }
.step h3 { font-size: var(--t-base); margin-bottom: var(--s-2); }
.step p { font-size: var(--t-sm); margin: 0; }

/* ---------- VIP ---------- */
.vip-hero { background: var(--g-vip-hero); text-align: center; padding: var(--s-8) 0 var(--s-7); }
.vip-hero .emblem { width: 170px; height: 170px; margin: 0 auto var(--s-5); filter: drop-shadow(0 0 28px rgba(160, 70, 255, .65)); animation: emblem-pulse 3.2s var(--ease-std) infinite; }
@keyframes emblem-pulse { 0%, 100% { filter: drop-shadow(0 0 18px rgba(160, 70, 255, .5)); } 50% { filter: drop-shadow(0 0 34px rgba(252, 0, 255, .7)); } }
.vip-hero p { max-width: 46ch; margin: 0 auto; }
.rewards { display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--s-4); max-width: 900px; margin: var(--s-6) auto; }
.reward {
  display: flex; align-items: center; gap: 12px;
  background: rgba(34, 28, 54, .7); border: 1px solid var(--c-line);
  border-radius: var(--r-md); min-height: 88px; padding: 14px 16px;
  font: 700 14px/1.3 var(--font); text-align: left;
  transition: transform var(--dur-base) var(--ease-out-expo), border-color var(--dur-base) var(--ease-std);
}
.reward:hover { transform: translateY(-3px); border-color: var(--brand-secondary-40); }
.reward.special { box-shadow: inset 0 0 0 2px var(--brand-secondary-40); }
.reward .r-icon { font-size: 30px; flex: none; }
.reward small { display: block; color: var(--c-ink-muted); font-weight: 400; font-size: 12px; }

/* ---------- FAQ ---------- */
.faq { max-width: 820px; margin: 0 auto; }
.faq details { border-bottom: 1px solid rgba(76, 66, 107, .4); }
.faq summary {
  cursor: pointer; list-style: none; display: flex; justify-content: space-between; align-items: center; gap: var(--s-4);
  font: 700 15px/1.4 var(--font); padding: 18px 4px;
}
.faq summary::-webkit-details-marker { display: none; }
.faq summary::after { content: '⌄'; color: var(--c-ink-muted); transition: transform var(--dur-base) var(--ease-std); }
.faq details[open] summary::after { transform: rotate(180deg); }
.faq details > p { padding: 0 4px 18px; margin: 0; font-size: var(--t-sm); }

/* ---------- support card ---------- */
.support-card { background: var(--c-surface-1); border-radius: var(--r-md); text-align: center; padding: var(--s-6); max-width: 640px; margin: var(--s-6) auto 0; }
.support-card .s-mail { font-weight: 700; color: var(--brand-primary-20); display: inline-block; margin-bottom: var(--s-4); }

/* ---------- footer ---------- */
.site-footer { background: var(--c-surface-1); margin-top: var(--s-8); padding: var(--s-7) 0 calc(var(--s-7) + 70px); }
.foot-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: var(--s-6); margin-bottom: var(--s-6); }
.foot-col h4 { font-size: 14px; margin-bottom: var(--s-3); color: var(--c-ink); }
.foot-col ul { list-style: none; margin: 0; padding: 0; display: grid; gap: 9px; }
.foot-col a { color: var(--c-ink-muted); font-size: 13px; }
.foot-col a:hover { color: var(--c-ink); }
.foot-social { display: flex; gap: 8px; margin-top: var(--s-3); }
.foot-social a { width: 34px; height: 34px; border-radius: var(--r-full); background: var(--c-surface-3); display: grid; place-items: center; font-size: 15px; }
.foot-band { border-top: 1px solid rgba(76, 66, 107, .4); padding-top: var(--s-5); margin-top: var(--s-5); }
.foot-band h4 { text-align: center; font-size: var(--t-lg); margin-bottom: var(--s-4); }
.awards-row { display: flex; flex-wrap: wrap; justify-content: center; gap: var(--s-5); }
.award { text-align: center; width: 150px; }
.award .aw-laurel { font-size: 30px; color: var(--c-gold); }
.award b { display: block; font-size: 11px; line-height: 1.35; text-transform: uppercase; margin: 6px 0 3px; }
.award small { color: var(--c-ink-muted); font-size: 10px; line-height: 1.3; display: block; }
.logo-row { display: flex; flex-wrap: wrap; justify-content: center; align-items: center; gap: 14px 34px; }
.pay-logo { height: 22px; width: auto; opacity: .92; }
.pay-logo.tall { height: 28px; }
.pay-word { font: 800 15px/1 var(--font); color: var(--c-ink-faint); letter-spacing: .01em; white-space: nowrap; }
.pay-word small { display: block; font: 400 8px/1 var(--font); letter-spacing: .12em; text-transform: uppercase; opacity: .65; margin-top: 2px; text-align: center; }
.pw-neosurf { color: #ff2882; font-style: italic; }
.pw-mifinity { color: #00b2a9; }
.pw-flexepin { color: #cfd6e4; } .pw-flexepin b { color: #82bc00; font-weight: inherit; }
.pw-cashtocode { color: #4da8da; } .pw-cashtocode b { color: #ffa300; font-weight: inherit; }
.pw-inpay, .pw-payid { color: #e8eaf0; }
.pw-interac { color: #fdb913; }
.partner { font: 800 13px/1 var(--font); color: var(--c-ink-faint); letter-spacing: .1em; text-transform: uppercase; opacity: .62; transition: opacity var(--dur-fast) var(--ease-std); }
.partner:hover { opacity: 1; }
.pn-plati { color: #fff; background: #e3001b; padding: 5px 8px; border-radius: 3px; opacity: .85; }
.pn-lucky { color: #ffe114; }
.pn-pateplay { color: #ffd23f; }
.ov-badge { font: 800 10px/1.2 var(--font); color: var(--c-ink-faint); letter-spacing: .06em; text-transform: uppercase; opacity: .75; }
.ov-badge.box { background: #c8102e; color: #fff; padding: 6px 9px; border-radius: 3px; opacity: .9; }
.trust-badge { font: 700 11px/1.3 var(--font); color: var(--c-ink-faint); background: var(--c-surface-2); border-radius: var(--r-sm); padding: 8px 12px; text-align: center; }
.licence { text-align: center; color: var(--c-ink-faint); font-size: 12px; line-height: 1.7; max-width: 80ch; margin: 0 auto; }
.licence .age { display: inline-grid; place-items: center; width: 34px; height: 34px; border-radius: var(--r-full); border: 2px solid var(--c-error); color: var(--c-error); font: 800 12px/1 var(--font); margin-right: 8px; vertical-align: middle; }

/* ---------- mobile bottom tab bar + sticky auth ---------- */
.tabbar {
  position: fixed; left: 0; right: 0; bottom: 0; z-index: 9500;
  display: none; grid-template-columns: repeat(4, 1fr);
  background: var(--c-surface-1); border-top: 1px solid rgba(76, 66, 107, .4);
  padding: 6px 0 max(6px, env(safe-area-inset-bottom));
}
.tabbar a { display: grid; place-items: center; gap: 2px; color: var(--c-ink-muted); font: 700 10px/1 var(--font); padding: 6px 0; }
.tabbar a.active, .tabbar a:hover { color: var(--c-ink); }
.tabbar .tb-ico { font-size: 20px; }
.authbar { position: fixed; left: 0; right: 0; bottom: 54px; z-index: 9400; display: none; gap: 10px; padding: 10px 14px; background: linear-gradient(to top, var(--c-bg) 60%, transparent); }
.authbar .btn { flex: 1; }

/* ---------- reveal on scroll (content visible by default; animation is an enhancement) ---------- */
.reveal { opacity: 1; transform: none; }
.reveal.in { animation: rise var(--dur-slow) var(--ease-out-expo) both; }
@keyframes rise { from { opacity: 0; transform: translateY(18px); } to { opacity: 1; transform: none; } }

/* ---------- responsive ---------- */
@media (max-width: 1100px) {
  .hero-track { grid-template-columns: repeat(2, 1fr); }
  .hero-card.h3 { display: none; }
  .advantages { grid-template-columns: repeat(2, 1fr); }
  .winners { grid-template-columns: 1fr; }
  .offer-grid { grid-template-columns: 1fr; }
}
@media (max-width: 860px) {
  .nav { display: none; position: fixed; top: var(--header-h); left: 0; right: 0; z-index: 9900; flex-direction: column; align-items: stretch; background: var(--c-surface-1); padding: var(--s-4); gap: 2px; box-shadow: var(--sh-card); }
  .nav.open { display: flex; }
  .nav a { padding: 13px 12px; border-radius: var(--r-sm); }
  .nav-toggle { display: inline-flex; }
  .header-auth .btn-ghost { display: none; }
  .hero-track { grid-template-columns: 1fr; }
  .hero-card.h2, .hero-card.h3 { display: flex; }
  .sports-grid { grid-template-columns: 1fr; }
  .campaign { grid-template-columns: 1fr; }
  .campaign .c-art { height: 150px; }
  .steps { grid-template-columns: 1fr; }
  .rewards { grid-template-columns: repeat(2, 1fr); }
  .foot-grid { grid-template-columns: repeat(2, 1fr); }
  .tabbar { display: grid; }
  .authbar { display: flex; }
  .site-footer { padding-bottom: 150px; }
  .cookie { bottom: 116px; font-size: 12px; }
  .popups { width: min(300px, calc(100vw - 20px)); }
}
@media (max-width: 520px) {
  .advantages { grid-template-columns: 1fr; }
  .rewards { grid-template-columns: 1fr; }
  .game-row { grid-auto-columns: 150px; }
  .game-grid { grid-template-columns: repeat(auto-fill, minmax(130px, 1fr)); }
  .foot-grid { grid-template-columns: 1fr; }
}

/* ---------- bonus details modal ---------- */
.modal-backdrop {
  position: fixed; inset: 0; z-index: 12000;
  background: rgba(10, 8, 18, .72); -webkit-backdrop-filter: blur(4px); backdrop-filter: blur(4px);
  display: none; align-items: center; justify-content: center; padding: var(--s-4);
}
.modal-backdrop.open { display: flex; }
.modal {
  width: min(420px, 100%); max-height: 90vh; overflow: auto;
  background: var(--c-surface-1); border-radius: var(--r-lg); padding: var(--s-5);
  text-align: center; position: relative;
  animation: modal-in var(--dur-base) var(--ease-out-expo) both;
}
@keyframes modal-in { from { opacity: 0; transform: translateY(14px) scale(.97); } to { opacity: 1; transform: none; } }
.modal .m-close { position: absolute; top: 14px; right: 14px; background: none; border: 0; color: var(--c-ink); font-size: 22px; cursor: pointer; padding: 4px; line-height: 1; }
.modal .m-icon { width: 110px; height: 110px; border-radius: var(--r-md); object-fit: cover; margin: var(--s-2) auto; }
.modal h3 { margin: var(--s-2) 0 var(--s-1); }
.modal .m-sub { color: var(--brand-secondary-10); font-weight: 700; margin-bottom: var(--s-4); }
.modal .m-rows { text-align: left; margin-bottom: var(--s-4); }
.modal .m-row { display: flex; justify-content: space-between; gap: var(--s-4); padding: 11px 2px; border-bottom: 1px solid rgba(76, 66, 107, .4); font-size: var(--t-sm); }
.modal .m-row span { color: var(--c-ink-muted); }
.modal .m-row b { white-space: nowrap; }
.modal .m-terms { display: inline-block; margin-bottom: var(--s-4); font-weight: 700; font-size: var(--t-sm); text-decoration: underline; }
.modal .btn { width: 100%; }

/* ---------- compliance band ---------- */
.comp-row { display: flex; flex-wrap: wrap; justify-content: center; align-items: center; gap: 14px 26px; margin-bottom: var(--s-5); }
.comp-badge {
  display: inline-flex; align-items: center; gap: 7px;
  font: 800 12px/1 var(--font); letter-spacing: .04em;
  color: #fff; background: var(--c-surface-2); border-radius: var(--r-sm);
  padding: 9px 13px;
}
.comp-badge .ci { font-size: 16px; }
.comp-gcb { background: #0c7a3d; }
.comp-18 { background: transparent; box-shadow: inset 0 0 0 2px var(--c-error); color: var(--c-error); border-radius: var(--r-full); }
.comp-ssl { background: #1d3557; }
.comp-gdpr { background: #2b2d42; color: #ffd23f; }
.comp-ecogra { background: #14213d; color: #9ef01a; }
.comp-rg { background: #3a0ca3; }
.legal-text { color: var(--c-ink-faint); font-size: 11.5px; line-height: 1.8; max-width: 110ch; margin: 0 auto; text-align: center; }
.legal-text a { color: var(--c-ink-muted); text-decoration: underline; }

/* ---------- winners live ticker ---------- */
.wrow.fresh { animation: w-in .5s var(--ease-out-expo) both; }
@keyframes w-in { from { opacity: 0; transform: translateY(-10px); background: rgba(0, 237, 166, .12); } 60% { background: rgba(0, 237, 166, .12); } to { opacity: 1; transform: none; background: transparent; } }

/* ---------- provider wordmark variants ---------- */
.provider .pv-logo { color: #fff; }
.pv-red { background: #e3001b; color: #fff; padding: 4px 9px; border-radius: 4px; }
.pv-gold { color: #ffd23f; }
.pv-teal { color: #2ec4b6; }
.pv-pink { color: #ff5d8f; }
.pv-green { color: #9ef01a; }
.pv-under { text-decoration: underline; text-underline-offset: 4px; }

/* ---------- guide article (verification / deposit) ---------- */
.guide { max-width: 760px; margin: 0 auto; }

/* WIDE layout v2: deliberate per-section composition instead of an
   algorithmic column flow. Sections are pre-grouped in the HTML:
   - .gsec-split  = text column | tables/notes column, tops aligned
   - .gsec-cols   = homogeneous text-only content in two even columns
   - lone tables and special blocks stay full width.
   All gaps come from the containers; children carry no margins, which
   gives one consistent rhythm everywhere. */
@media (min-width: 1100px) {
  .guide { max-width: none; }
  .guide .hub-grid { grid-template-columns: repeat(4, 1fr); }
  .guide .faq { max-width: none; display: grid; grid-template-columns: 1fr 1fr; gap: 0 var(--s-8); align-items: start; }
  .guide .faq h2 { grid-column: 1 / -1; }

  .gsec-split {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
    gap: var(--s-5) var(--s-8);
    align-items: start;
    margin: 0 0 var(--s-4);
  }
  .gsec-split .g-text, .gsec-split .g-media { display: flex; flex-direction: column; gap: var(--s-4); min-width: 0; }
  .gsec-split .g-text > *, .gsec-split .g-media > * { margin: 0; }
  .gsec-split .g-text h3 { margin-top: var(--s-2); }

  .gsec-cols { columns: 2; column-gap: var(--s-8); margin: 0 0 var(--s-4); }
  .gsec-cols > * { break-inside: avoid; margin: 0 0 var(--s-4); }
  .gsec-cols ol, .gsec-cols ul { break-inside: avoid; }

  /* uniform section rhythm */
  .guide h2 { margin: var(--s-6) 0 var(--s-4); }
  .guide h2:first-of-type { margin-top: var(--s-4); }
  /* lone full-width paragraphs stay readable (no 150-char lines) */
  .guide > p:not([style*="text-align:center"]) { max-width: 88ch; }
}
@media (max-width: 1099px) {
  /* on narrow screens the groups simply stack in source order */
  .gsec-split, .gsec-cols { display: block; }
}
.guide h1 { text-align: center; }
.guide h2 { margin-top: var(--s-7); }
.guide h3 { margin-top: var(--s-5); color: var(--brand-primary-20); font-size: var(--t-lg); }
.guide ol, .guide ul { color: var(--c-ink-muted); line-height: 1.9; padding-left: 1.3em; }
.guide .note {
  background: var(--c-surface-1); border-left: 3px solid var(--c-warning);
  border-radius: var(--r-sm); padding: var(--s-4); margin: var(--s-4) 0;
  font-size: var(--t-sm); color: var(--c-ink-muted);
}
.guide .note b { color: var(--c-warning); }
.mockups { display: flex; justify-content: center; gap: var(--s-5); margin: var(--s-5) 0; flex-wrap: wrap; }
.mock {
  width: 230px; border-radius: 26px; border: 7px solid #3f1c60;
  background: var(--c-surface-1); overflow: hidden; box-shadow: var(--sh-card);
}
.mock .mk-bar { height: 34px; background: var(--c-surface-2); display: flex; align-items: center; gap: 6px; padding: 0 10px; }
.mock .mk-bar i { width: 8px; height: 8px; border-radius: 50%; background: var(--c-line-soft); }
.mock .mk-body { padding: 14px; display: grid; gap: 9px; min-height: 240px; }
.mock .mk-title { font: 800 13px/1.3 var(--font); }
.mock .mk-line { height: 9px; border-radius: 5px; background: var(--c-surface-3); }
.mock .mk-line.w60 { width: 60%; }
.mock .mk-line.w80 { width: 80%; }
.mock .mk-field { height: 30px; border-radius: 7px; background: var(--c-input); }
.mock .mk-btn { height: 32px; border-radius: var(--r-full); background: var(--brand-primary-20); display: grid; place-items: center; color: var(--brand-primary-ink); font: 700 11px/1 var(--font); }
.mock .mk-ok { color: var(--c-success); font: 700 12px/1.3 var(--font); }
.mock figcaption, .mock-cap { text-align: center; font-size: 12px; color: var(--c-ink-muted); padding: 8px 0 10px; }

/* ---------- content article components (money pages + home hub) ---------- */
.answer {
  background: var(--c-surface-1); border-left: 3px solid var(--brand-primary-20);
  border-radius: var(--r-sm); padding: var(--s-4) var(--s-5); margin: var(--s-4) 0 var(--s-5);
  font-size: var(--t-base); color: var(--c-ink);
}
.answer b { color: var(--brand-primary-10); }
table.data {
  width: 100%; border-collapse: collapse; margin: var(--s-4) 0 var(--s-5);
  font-size: var(--t-sm); background: var(--c-surface-1); border-radius: var(--r-md); overflow: hidden;
}
table.data th {
  background: var(--c-surface-2); color: var(--c-ink); text-align: left;
  font: 700 13px/1.3 var(--font); padding: 11px 14px;
}
table.data td { padding: 11px 14px; border-top: 1px solid rgba(76, 66, 107, .35); color: var(--c-ink-muted); vertical-align: top; }
table.data td b, table.data td a { color: var(--c-ink); }
table.data .yes { color: var(--c-success); font-weight: 700; }
table.data .no { color: var(--c-error); font-weight: 700; }
.table-scroll { overflow-x: auto; }
.proscons { display: grid; grid-template-columns: 1fr 1fr; gap: var(--s-4); margin: var(--s-4) 0 var(--s-5); }
.proscons > div { background: var(--c-surface-1); border-radius: var(--r-md); padding: var(--s-4) var(--s-5); }
.proscons h3 { margin: 0 0 var(--s-3); font-size: var(--t-base); }
.proscons ul { margin: 0; padding-left: 1.2em; color: var(--c-ink-muted); line-height: 1.9; }
.proscons .pros h3 { color: var(--c-success); }
.proscons .cons h3 { color: var(--c-error); }
.rating-box {
  display: flex; align-items: center; gap: var(--s-5);
  background: var(--c-surface-1); border-radius: var(--r-md); padding: var(--s-4) var(--s-5); margin: var(--s-4) 0;
}
.rating-box .score { font: 800 44px/1 var(--font); color: var(--c-gold); }
.rating-box .stars { color: var(--c-gold); font-size: 18px; letter-spacing: 2px; }
.chips-cloud { display: flex; flex-wrap: wrap; gap: 10px; margin: var(--s-4) 0 var(--s-5); }
.chips-cloud a {
  font: 700 13px/1 var(--font); color: var(--c-ink-muted);
  background: var(--c-surface-1); box-shadow: var(--sh-hairline);
  padding: 10px 16px; border-radius: var(--r-full);
  transition: color var(--dur-fast) var(--ease-std), background var(--dur-fast) var(--ease-std), transform var(--dur-fast) var(--ease-std);
}
.chips-cloud a:hover { color: var(--c-ink); background: var(--c-surface-2); transform: translateY(-2px); }
.hub-article h2 { margin-top: var(--s-7); }
.hub-article .hub-grid { display: grid; grid-template-columns: 1fr 1fr; gap: var(--s-4); margin: var(--s-4) 0; }
.hub-article .hub-card { background: var(--c-surface-1); border-radius: var(--r-md); padding: var(--s-4) var(--s-5); }
.hub-article .hub-card h3 { margin: 0 0 var(--s-2); font-size: var(--t-base); }
.hub-article .hub-card h3 a { color: var(--c-ink); }
.hub-article .hub-card h3 a:hover { color: var(--brand-primary-20); }
.hub-article .hub-card p { font-size: var(--t-sm); margin: 0 0 var(--s-2); }
.aff-disclosure { font-size: 11.5px; color: var(--c-ink-faint); border-top: 1px solid rgba(76,66,107,.35); padding-top: var(--s-3); margin-top: var(--s-6); }
.byline { display: flex; align-items: center; gap: 12px; margin: var(--s-3) 0 var(--s-4); }
.byline img { width: 44px; height: 44px; border-radius: var(--r-full); object-fit: cover; }
.byline .b-meta { font-size: 13px; color: var(--c-ink-muted); line-height: 1.5; }
.byline .b-meta b { color: var(--c-ink); }
.author-card { display: flex; gap: var(--s-5); align-items: flex-start; background: var(--c-surface-1); border-radius: var(--r-md); padding: var(--s-5); margin-top: var(--s-6); }
.author-card img { width: 96px; height: 96px; border-radius: var(--r-full); object-fit: cover; flex: none; }
.author-card h3 { margin: 0 0 4px; font-size: var(--t-base); }
.author-card .a-role { font-size: 12px; color: var(--brand-primary-20); font-weight: 700; display: block; margin-bottom: var(--s-2); }
.author-card p { margin: 0; font-size: var(--t-sm); }
@media (max-width: 700px) { .proscons, .hub-article .hub-grid { grid-template-columns: 1fr; } }

/* ---------- reduced motion ---------- */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; }
  html { scroll-behavior: auto; }
}
