/* ==========================================================================
   NV Casino — brand layer
   Navy + hot pink. Stroke icons via #i-* sprite (see functions.php).
   ========================================================================== */

:root {
	--nv-glow-pink: 0 0 0 1px rgba(255, 46, 143, .3), 0 12px 34px -12px rgba(224, 28, 120, .65);
	--nv-glow-violet: 0 12px 40px -14px rgba(108, 76, 255, .6);
	--nv-radius: 18px;
	--nv-radius-sm: 12px;
	--nv-ring: 1px solid var(--wp--preset--color--border);
}

body {
	background:
		radial-gradient(55% 40% at 85% -5%, rgba(178, 60, 255, .16), transparent 60%),
		radial-gradient(45% 35% at 0% 0%, rgba(255, 46, 143, .12), transparent 60%),
		var(--wp--preset--color--base);
	background-attachment: fixed;
}

/* Our custom blocks always size with border-box */
.nv-card, .nv-card *,
.nv-btn, .nv-minicard, .nv-minicard *,
.nv-quicknav a, .nv-winner, .nv-winner *,
.nv-game, .nv-game *, .nv-pay span, .nv-eyebrow-pill {
	box-sizing: border-box;
}

/* ---- Icons ---------------------------------------------------------------- */
.nv-i {
	width: 1em; height: 1em;
	flex: 0 0 auto;
	vertical-align: -0.125em;
	stroke: currentColor;
	fill: none;
}

/* ---- Logo ----------------------------------------------------------------- */
.nv-logo { display: inline-flex; align-items: center; text-decoration: none; }
.nv-logo img { height: 34px; width: auto; display: block; }
.nv-logo--sm img { height: 30px; }

/* ---- Header --------------------------------------------------------------- */
.nv-header {
	position: sticky; top: 0; z-index: 100;
	border-bottom: var(--nv-ring);
	backdrop-filter: blur(10px);
	background-color: rgba(23, 20, 58, .88) !important;
}
.nv-nav a { text-decoration: none; color: var(--wp--preset--color--contrast); }
.nv-nav a:hover { color: var(--wp--preset--color--primary); }
.nv-header-cta .wp-block-button__link { padding: .5rem 1.15rem; border-radius: 10px; }
.nv-login .wp-block-button__link {
	background: transparent; color: #fff;
	border: 1.5px solid var(--wp--preset--color--accent); box-shadow: none;
}
.nv-login .wp-block-button__link:hover { background: rgba(108, 76, 255, .22); color: #fff; }

/* ---- Buttons -------------------------------------------------------------- */
.wp-block-button.is-style-outline .wp-block-button__link {
	background: transparent; color: var(--wp--preset--color--contrast);
	border: 1.5px solid var(--wp--preset--color--border); box-shadow: none;
}
.wp-block-button.is-style-outline .wp-block-button__link:hover {
	border-color: var(--wp--preset--color--primary);
	color: var(--wp--preset--color--primary);
	background: rgba(255, 46, 143, .07);
}
.wp-block-button.nv-cta .wp-block-button__link { box-shadow: var(--nv-glow-pink); }

/* Plain-HTML buttons (used inside cards) */
.nv-btn {
	box-sizing: border-box;
	display: inline-flex; align-items: center; justify-content: center;
	gap: .5rem;
	padding: .78rem 1.3rem;
	border-radius: 12px;
	font-family: var(--wp--preset--font-family--heading);
	font-weight: 700; font-size: .9375rem;
	text-decoration: none;
	transition: transform .15s ease, background .15s ease, border-color .15s ease;
	width: 100%;
}
.nv-btn:hover { text-decoration: none; transform: translateY(-1px); }
.nv-btn--primary { background: var(--wp--preset--color--primary); color: #fff; box-shadow: var(--nv-glow-pink); }
.nv-btn--primary:hover { background: var(--wp--preset--color--primary-strong); color: #fff; }
.nv-btn--ghost { background: transparent; color: #fff; border: 1.5px solid var(--wp--preset--color--border); }
.nv-btn--ghost:hover { border-color: var(--wp--preset--color--primary); color: var(--wp--preset--color--primary); }

/* ---- Section rhythm ------------------------------------------------------- */
.nv-section { padding-block: clamp(1.75rem, 4vw, 3rem); }
.nv-eyebrow {
	text-transform: uppercase; letter-spacing: .16em;
	font-size: .78rem; font-weight: 700;
	color: var(--wp--preset--color--primary);
	margin-bottom: .35rem;
}
.nv-center { text-align: center; }

.nv-sechead {
	display: flex; align-items: baseline; justify-content: space-between;
	gap: 1rem; flex-wrap: wrap;
	margin-bottom: clamp(1.1rem, 2.5vw, 1.75rem);
}
.nv-sechead h2 { margin: 0; font-size: var(--wp--preset--font-size--xx-large); font-weight: 800; }
.nv-link {
	display: inline-flex; align-items: center; gap: .4rem;
	font-weight: 600; font-size: .92rem; text-decoration: none;
	color: var(--wp--preset--color--primary);
}
.nv-link:hover { text-decoration: none; color: #fff; }
.nv-link .nv-i { transition: transform .15s ease; }
.nv-link:hover .nv-i { transform: translateX(3px); }

/* ---- Hero ----------------------------------------------------------------- */
.nv-hero {
	position: relative; overflow: hidden;
	background-color: #0e0c26;
}
.nv-hero::before {
	content: ""; position: absolute; inset: 0;
	/* Source art is 1440x476 — cap it so wide screens don't upscale (and blur) it.
	   Beyond the cap the base colour + scrim take over seamlessly. */
	max-width: 1600px;
	left: 50%; margin-left: -800px; right: auto; width: 100%;
	background-image: url(hero.webp);
	background-size: cover;
	background-position: center top;
	z-index: 0;
	animation: nv-float 15s ease-in-out infinite;
}
@media (max-width: 1600px) {
	.nv-hero::before { left: 0; margin-left: 0; max-width: none; }
}
@keyframes nv-float {
	0%, 100% { transform: translate3d(0, 0, 0); }
	50%      { transform: translate3d(0, -0.9%, 0); }
}
/* Blend the capped art into the page on ultra-wide screens */
.nv-hero::after {
	content: ""; position: absolute; inset: 0;
	background:
		radial-gradient(48% 78% at 50% 52%, rgba(11, 9, 30, .93) 0%, rgba(11, 9, 30, .72) 45%, rgba(11, 9, 30, .18) 100%),
		linear-gradient(90deg, #0e0c26 0%, rgba(14, 12, 38, 0) 12%, rgba(14, 12, 38, 0) 88%, #0e0c26 100%),
		linear-gradient(180deg, rgba(11, 9, 30, .55) 0%, rgba(11, 9, 30, 0) 22%, rgba(11, 9, 30, 0) 72%, rgba(14, 12, 38, .96) 100%);
	z-index: 0;
}
.nv-hero > * { position: relative; z-index: 1; }

/* H1 = brand line, kept small and refined (the number is the visual hero) */
.nv-hero h1 {
	font-size: .95rem;
	font-weight: 700;
	letter-spacing: .3em;
	text-transform: uppercase;
	color: rgba(255, 255, 255, .78);
	margin: 0 0 .35rem;
}
.nv-hero-kicker {
	font-size: clamp(.95rem, .9rem + .3vw, 1.15rem);
	color: rgba(255, 255, 255, .82);
	font-weight: 500;
	margin: 0 0 .3rem;
}
.nv-hero-num {
	font-family: var(--wp--preset--font-family--heading);
	font-weight: 800; color: #fff;
	line-height: 1.02;
	font-size: clamp(2.1rem, 1.3rem + 4vw, 4rem);
	letter-spacing: -0.03em;
	margin: 0;
	text-shadow: 0 4px 30px rgba(0, 0, 0, .6);
}
.nv-hero-num span {
	display: block;
	font-size: .46em;
	font-weight: 700;
	letter-spacing: -0.01em;
	color: rgba(255, 255, 255, .92);
	margin-top: .15em;
}

/* Sleek eyebrow pill — gradient hairline + live dot + shimmer */
.nv-eyebrow-pill {
	position: relative;
	display: flex; align-items: center; gap: .55rem;
	width: fit-content; margin: 0 auto 1rem;
	padding: .4rem .95rem .4rem .7rem;
	border-radius: 999px;
	background: rgba(12, 10, 32, .62);
	backdrop-filter: blur(12px);
	overflow: hidden;
	font-size: .76rem; line-height: 1;
	box-shadow: 0 8px 28px -14px rgba(0, 0, 0, .9);
}
/* gradient hairline border */
.nv-eyebrow-pill::before {
	content: ""; position: absolute; inset: 0;
	border-radius: inherit; padding: 1px;
	background: linear-gradient(100deg, rgba(255,46,143,.9), rgba(178,60,255,.55) 45%, rgba(255,255,255,.14) 75%);
	-webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
	-webkit-mask-composite: xor; mask-composite: exclude;
	pointer-events: none;
}
/* shine sweep */
.nv-eyebrow-pill::after {
	content: ""; position: absolute; top: 0; bottom: 0; width: 38%;
	background: linear-gradient(100deg, transparent, rgba(255,255,255,.16), transparent);
	transform: skewX(-18deg);
	animation: nv-sheen 4.5s ease-in-out infinite;
	pointer-events: none;
}
@keyframes nv-sheen { 0%,72% { left: -45%; } 100% { left: 115%; } }

.nv-eyebrow-dot {
	width: .4rem; height: .4rem; border-radius: 50%; flex: 0 0 auto;
	background: var(--wp--preset--color--primary);
	box-shadow: 0 0 0 0 rgba(255, 46, 143, .7);
	animation: nv-dot 2.2s infinite;
}
@keyframes nv-dot {
	0% { box-shadow: 0 0 0 0 rgba(255,46,143,.65); }
	70% { box-shadow: 0 0 0 7px rgba(255,46,143,0); }
	100% { box-shadow: 0 0 0 0 rgba(255,46,143,0); }
}
.nv-eyebrow-pill b {
	font-family: var(--wp--preset--font-family--heading);
	font-weight: 700; letter-spacing: .12em; text-transform: uppercase;
	color: #fff; font-size: .7rem;
}
.nv-eyebrow-pill em {
	font-style: normal; color: rgba(255, 255, 255, .62);
	letter-spacing: .01em;
}
@media (max-width: 460px) { .nv-eyebrow-pill em { display: none; } }

/* ---- Hero mini bonus cards ------------------------------------------------ */
.nv-minicards {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: .6rem;
	max-width: 720px;
	margin: 1.35rem auto 0;
}
.nv-minicard {
	display: flex; align-items: center; gap: .6rem;
	background: rgba(16, 13, 42, .74);
	border: 1px solid rgba(255, 255, 255, .1);
	backdrop-filter: blur(8px);
	border-radius: 14px;
	padding: .55rem .8rem;
	text-align: left; text-decoration: none;
	transition: transform .16s ease, border-color .16s ease, background .16s ease;
}
.nv-minicard:hover {
	transform: translateY(-2px);
	border-color: rgba(255, 46, 143, .5);
	background: rgba(26, 20, 58, .88);
	text-decoration: none;
}
img.nv-minicard-ic {
	width: 2.3rem; height: 2.3rem; flex: 0 0 auto;
	object-fit: contain;
	filter: drop-shadow(0 3px 8px rgba(0, 0, 0, .5));
}
.nv-minicard-tx { display: flex; flex-direction: column; line-height: 1.25; min-width: 0; }
.nv-minicard-tx b { font-family: var(--wp--preset--font-family--heading); font-size: .88rem; color: #fff; }
.nv-minicard-tx i { font-style: normal; font-size: .74rem; color: var(--wp--preset--color--muted); }
@media (max-width: 620px) {
	.nv-minicards { grid-template-columns: 1fr; max-width: 340px; }
}

/* ---- Quick-nav ------------------------------------------------------------ */
.nv-quicknav {
	display: grid;
	grid-template-columns: repeat(5, minmax(0, 1fr));
	gap: .6rem;
	max-width: 760px; margin-inline: auto;
}
.nv-quicknav a {
	display: flex; flex-direction: column; align-items: center; gap: .45rem;
	padding: .9rem .5rem;
	border-radius: 14px;
	background: var(--wp--preset--color--surface);
	border: var(--nv-ring);
	color: #fff; text-decoration: none;
	font-size: .82rem; font-weight: 600;
	transition: transform .15s ease, border-color .15s ease, background .15s ease;
}
.nv-quicknav a img { height: 2.1rem; width: auto; object-fit: contain; }
.nv-quicknav a:hover {
	transform: translateY(-2px);
	border-color: rgba(255, 46, 143, .5);
	background: var(--wp--preset--color--surface-2);
	text-decoration: none;
}
@media (max-width: 560px) {
	.nv-quicknav { grid-template-columns: repeat(3, 1fr); }
}

/* ---- Cards (equal height everywhere) ------------------------------------- */
.nv-card {
	box-sizing: border-box;
	display: flex; flex-direction: column;
	background: var(--wp--preset--gradient--card);
	border: var(--nv-ring);
	border-radius: var(--nv-radius);
	padding: clamp(1.2rem, 1.8vw, 1.6rem);
	min-width: 0;
}
.nv-card.is-featured { border-color: rgba(255, 46, 143, .5); box-shadow: var(--nv-glow-pink); }
.nv-card h3 { margin: 0 0 .4rem; font-size: 1.05rem; font-weight: 700; }
.nv-card p { margin: 0; }
.nv-card-tx { color: var(--wp--preset--color--muted); font-size: .92rem; margin-bottom: 1rem !important; }
/* CTA always pinned to the bottom → buttons line up across cards */
.nv-card .nv-btn { margin-top: auto; }

.nv-bonus-grid {
	display: grid; gap: 1rem;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	align-items: stretch;
	margin-top: clamp(1.25rem, 3vw, 2rem);
}
@media (max-width: 900px) { .nv-bonus-grid { grid-template-columns: 1fr; max-width: 460px; margin-inline: auto; } }

.nv-amount {
	font-family: var(--wp--preset--font-family--heading);
	font-weight: 800; color: var(--wp--preset--color--primary);
	line-height: 1.08;
	font-size: clamp(1.45rem, 1.15rem + 1vw, 1.85rem);
	margin: .55rem 0 .6rem !important;
}
.nv-facts { list-style: none; margin: 0 0 1.15rem; padding: 0; display: grid; gap: .45rem; }
.nv-facts li {
	display: flex; align-items: center; gap: .5rem;
	font-size: .84rem; color: var(--wp--preset--color--muted);
}
.nv-facts .nv-i { font-size: 1rem; color: var(--wp--preset--color--primary); }

/* Bonus card header image */
.nv-card-img {
	width: calc(100% + 2 * clamp(1.2rem, 1.8vw, 1.6rem));
	margin: calc(-1 * clamp(1.2rem, 1.8vw, 1.6rem)) calc(-1 * clamp(1.2rem, 1.8vw, 1.6rem)) 1rem;
	height: auto; display: block;
	border-radius: var(--nv-radius) var(--nv-radius) 0 0;
	object-fit: cover; aspect-ratio: 614 / 392;
}

/* ---- Badges --------------------------------------------------------------- */
.nv-badge {
	display: inline-block; width: fit-content;
	font-size: .72rem; font-weight: 700; letter-spacing: .04em;
	text-transform: uppercase;
	padding: .3rem .7rem; border-radius: 8px;
	background: rgba(255, 46, 143, .14);
	color: #ff8ac0;
	border: 1px solid rgba(255, 46, 143, .35);
}
.nv-badge.is-gold { background: rgba(178, 60, 255, .16); color: #d7b6ff; border-color: rgba(178, 60, 255, .4); }

.nv-18 {
	display: inline-flex; align-items: center; justify-content: center;
	width: 1.7rem; height: 1.7rem; border-radius: 50%;
	border: 2px solid var(--wp--preset--color--muted);
	color: var(--wp--preset--color--muted);
	font-weight: 800; font-size: .72rem;
	font-family: var(--wp--preset--font-family--heading);
	vertical-align: middle;
}

/* ---- USP grid ------------------------------------------------------------- */
.nv-usp-grid {
	display: grid; gap: 1rem;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	align-items: stretch;
	margin-top: clamp(1.25rem, 3vw, 2rem);
}
@media (max-width: 900px) { .nv-usp-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 600px) { .nv-usp-grid { grid-template-columns: 1fr; } }
.nv-usp p { color: var(--wp--preset--color--muted); font-size: .9rem; }
.nv-ic-tile {
	display: grid; place-items: center;
	width: 2.6rem; height: 2.6rem;
	border-radius: 13px;
	margin-bottom: .85rem;
	font-size: 1.35rem;
	color: #fff;
	background: linear-gradient(140deg, rgba(255, 46, 143, .9), rgba(178, 60, 255, .85));
	box-shadow: 0 10px 24px -14px rgba(255, 46, 143, .9);
}

/* ---- Steps ---------------------------------------------------------------- */
.nv-steps {
	display: grid; gap: 1rem;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	align-items: stretch;
	margin-top: clamp(1.25rem, 3vw, 2rem);
}
@media (max-width: 800px) { .nv-steps { grid-template-columns: 1fr; max-width: 460px; margin-inline: auto; } }
.nv-step p { color: var(--wp--preset--color--muted); font-size: .9rem; }
.nv-step-num {
	display: grid; place-items: center;
	width: 2.4rem; height: 2.4rem; border-radius: 50%;
	margin-bottom: .8rem;
	font-family: var(--wp--preset--font-family--heading);
	font-weight: 800; font-size: 1.05rem;
	color: var(--wp--preset--color--primary);
	background: rgba(255, 46, 143, .12);
	border: 1px solid rgba(255, 46, 143, .35);
}

/* ---- Game grid ------------------------------------------------------------ */
.nv-grid {
	display: grid; gap: .75rem;
	grid-template-columns: repeat(6, minmax(0, 1fr));
}
@media (max-width: 1100px) { .nv-grid { grid-template-columns: repeat(4, 1fr); } }
/* CTA na konci každej bonusovej sekcie */
.nv-secta { margin: 1.2rem 0 2rem; }
/* Mriežka je stavaná na 6 hier v rade; kratšie zoznamy nechávali prázdne
   stĺpce vpravo, tak nech sa roztiahnu na plnú šírku. */
.nv-grid--fill { grid-template-columns: repeat(4, minmax(0, 1fr)); }
@media (max-width: 700px) { .nv-grid--fill { grid-template-columns: repeat(2, minmax(0, 1fr)); } }

@media (max-width: 780px)  { .nv-grid { grid-template-columns: repeat(3, 1fr); gap: .6rem; } }
@media (max-width: 520px)  { .nv-grid { grid-template-columns: repeat(2, 1fr); gap: .55rem; } }

.nv-game {
	position: relative;
	display: flex; align-items: flex-end;
	aspect-ratio: 3 / 4;
	border-radius: var(--nv-radius-sm);
	overflow: hidden;
	border: var(--nv-ring);
	background-size: cover; background-position: center;
	text-decoration: none;
	transition: transform .18s ease, box-shadow .18s ease;
}
.nv-game:hover { transform: translateY(-4px); box-shadow: var(--nv-glow-violet); text-decoration: none; }
.nv-game-meta {
	width: 100%;
	display: flex; flex-direction: column; gap: .1rem;
	padding: .85rem .6rem .5rem;
	background: linear-gradient(0deg, rgba(8, 6, 20, .95) 12%, rgba(8, 6, 20, 0) 100%);
}
.nv-game-meta b { font-size: .74rem; font-weight: 700; color: #fff; line-height: 1.2; }
.nv-game-meta i { font-style: normal; font-size: .64rem; color: rgba(255, 255, 255, .62); }

/* Real game art (webp portraits) */
.nv-g1 { background-image: url(game-sweet-bonanza.webp); }
.nv-g2 { background-image: url(game-gates-of-olympus.webp); }
.nv-g3 { background-image: url(game-book-of-fallen.webp); }
.nv-g4 { background-image: url(game-big-bass-splash.webp); }
.nv-g5 { background-image: url(game-joker-stoker.webp); }
.nv-g6 { background-image: url(game-hell-hot-100.webp); }
.nv-g7 { background-image: url(game-live-roulette.webp); }
.nv-g8 { background-image: url(game-blackjack-vip.webp); }
.nv-g9  { background-image: url(game-coin-win-hold.webp); }
.nv-g10 { background-image: url(game-coin-win-2.webp); }
.nv-g11 { background-image: url(game-blazing-crown.webp); }
.nv-g12 { background-image: url(game-sizzling-hot.webp); }
.nv-g13 { background-image: url(game-baccarat.webp); }
.nv-g14 { background-image: url(game-caribbean-stud.webp); }
.nv-g15 { background-image: url(game-auto-roulette.webp); }
.nv-g16 { background-image: url(game-speed-roulette.webp); }

/* ---- Live winners feed ---------------------------------------------------- */
.nv-live-dot {
	display: inline-block; width: .55rem; height: .55rem; border-radius: 50%;
	background: var(--wp--preset--color--primary);
	margin-right: .55rem; vertical-align: middle;
	animation: nv-pulse 1.8s infinite;
}
@keyframes nv-pulse {
	0% { box-shadow: 0 0 0 0 rgba(255, 46, 143, .6); }
	70% { box-shadow: 0 0 0 9px rgba(255, 46, 143, 0); }
	100% { box-shadow: 0 0 0 0 rgba(255, 46, 143, 0); }
}
.nv-live-tag {
	font-size: .68rem; font-weight: 800; letter-spacing: .14em; text-transform: uppercase;
	color: var(--wp--preset--color--primary);
	border: 1px solid rgba(255, 46, 143, .45);
	background: rgba(255, 46, 143, .12);
	padding: .28rem .6rem; border-radius: 7px;
}

.nv-feed {
	position: relative;
	height: 336px;
	overflow: hidden;
	-webkit-mask-image: linear-gradient(180deg, transparent 0, #000 9%, #000 88%, transparent 100%);
	mask-image: linear-gradient(180deg, transparent 0, #000 9%, #000 88%, transparent 100%);
}
.nv-feed-track {
	display: flex; flex-direction: column; gap: .55rem;
	animation: nv-scroll 34s linear infinite;
}
.nv-feed:hover .nv-feed-track { animation-play-state: paused; }
@keyframes nv-scroll { to { transform: translateY(-50%); } }
@media (prefers-reduced-motion: reduce) {
	.nv-feed { height: auto; -webkit-mask-image: none; mask-image: none; }
	.nv-feed-track { animation: none; }
	.nv-winner[aria-hidden="true"] { display: none; }
}

.nv-winner {
	display: flex; align-items: center; gap: .8rem;
	background: var(--wp--preset--color--surface);
	border: var(--nv-ring);
	border-radius: 14px;
	padding: .65rem .85rem;
	transition: border-color .15s ease, transform .15s ease;
}
.nv-winner:hover { border-color: rgba(255, 46, 143, .45); transform: translateX(3px); }
.nv-av {
	width: 2.4rem; height: 2.4rem; flex: 0 0 auto;
	border-radius: 10px;
	background-size: cover; background-position: center;
	border: 1px solid rgba(255, 255, 255, .1);
}
.nv-w-tx { display: flex; flex-direction: column; line-height: 1.3; min-width: 0; flex: 1 1 auto; }
.nv-w-tx b { font-size: .88rem; font-weight: 600; color: #fff; }
.nv-w-tx i { font-style: normal; font-size: .76rem; color: var(--wp--preset--color--muted); }
.nv-w-amt {
	display: flex; flex-direction: column; align-items: flex-end;
	line-height: 1.3; flex: 0 0 auto;
	font-family: var(--wp--preset--font-family--heading);
	font-weight: 800; font-size: .95rem; color: var(--wp--preset--color--win);
}
.nv-w-amt i { font-style: normal; font-weight: 500; font-size: .7rem; color: var(--wp--preset--color--muted); font-family: var(--wp--preset--font-family--body); }
.nv-feed-note { text-align: center; margin-top: .9rem; }

/* ---- App CTA -------------------------------------------------------------- */
.nv-appcta {
	flex-direction: row; align-items: center; gap: clamp(1rem, 3vw, 2.5rem);
	padding: clamp(1.4rem, 3vw, 2.4rem);
}
.nv-appcta-tx { flex: 1 1 auto; }
.nv-appcta-tx h2 { margin: 0 0 .55rem; font-size: clamp(1.4rem, 1.1rem + 1.2vw, 1.9rem); }
.nv-appcta .nv-btn { width: fit-content; margin-top: 0; }
.nv-appcta-img {
	flex: 0 0 auto;
	width: clamp(9rem, 20vw, 15rem); height: auto;
	margin-block: -1.5rem;
	filter: drop-shadow(0 22px 44px rgba(0, 0, 0, .6));
}
@media (max-width: 700px) {
	.nv-appcta { flex-direction: column-reverse; text-align: center; }
	.nv-appcta .nv-btn { width: 100%; }
}

/* ---- Payment chips -------------------------------------------------------- */
/* Flex, not grid: the method list changes length, and a short trailing row
   should centre rather than hang off to the left. */
.nv-pay {
	display: flex; flex-wrap: wrap; justify-content: center;
	gap: .55rem;
	margin: clamp(1.25rem, 3vw, 2rem) auto 1.25rem;
	max-width: 1060px;
}
/* Všetky čipy rovnako široké — šírku určuje najdlhší popisok („Bankovní převod“).
   Pri 0 1 118px sa čipy s popiskom roztiahli nad základ a rad vyzeral rozhádzane. */
.nv-pay > .nv-pay-chip { flex: 0 0 11.5rem; max-width: 100%; }
@media (max-width: 900px) { .nv-pay > .nv-pay-chip { flex: 0 0 10.5rem; } }
@media (max-width: 520px) { .nv-pay { gap: .45rem; } .nv-pay > .nv-pay-chip { flex: 0 0 calc(50% - .25rem); } }
/* Dark chips — the brand logos are white/colour on transparent */
.nv-pay-chip {
	display: grid; place-items: center;
	background: var(--wp--preset--color--surface);
	border: var(--nv-ring);
	border-radius: 12px;
	padding: .55rem .7rem;
	min-width: 0; height: 3.1rem;
	transition: transform .16s ease, border-color .16s ease, background .16s ease;
}
.nv-pay-chip:hover {
	transform: translateY(-2px);
	border-color: rgba(255, 46, 143, .45);
	background: var(--wp--preset--color--surface-2);
}
.nv-pay-chip img {
	max-height: 1.55rem; max-width: 100%; width: auto; height: auto;
	object-fit: contain; display: block;
}
/* Square brand icons carry no wordmark, so the chip supplies the label —
   the same shape the operator's own cashier uses. */
.nv-pay-chip--ico {
	grid-auto-flow: column; grid-template-columns: auto auto;
	justify-content: center; align-items: center; gap: .4rem;
}
.nv-pay-chip--ico img { max-height: 1.25rem; }
.nv-pay-chip--ico .nv-i { width: 1.25rem; height: 1.25rem; opacity: .92; }
.nv-pay-chip--ico > span {
	font-family: var(--wp--preset--font-family--heading);
	font-size: .72rem; font-weight: 700; letter-spacing: .01em;
	color: #fff; line-height: 1.1; white-space: nowrap;
}

/* Visa Secure trust line */
.nv-pay-secure {
	text-align: center;
	margin: 0 0 1.25rem;
	color: var(--wp--preset--color--muted); font-size: .82rem;
}

/* ---- Hero logo (H1) ------------------------------------------------------- */
.nv-hero-logo { margin: 0 0 .7rem; display: flex; justify-content: center; }
.nv-hero-logo img {
	height: clamp(2rem, 1.4rem + 2.4vw, 3.1rem);
	width: auto; display: block;
	filter: drop-shadow(0 6px 22px rgba(0, 0, 0, .55));
}

/* ---- Section heading icon ------------------------------------------------- */
.nv-h-ic { height: 1.5em; width: auto; vertical-align: -.32em; margin-right: .5rem; }

/* ---- App store buttons ---------------------------------------------------- */
.nv-stores { display: flex; gap: .6rem; flex-wrap: wrap; margin-top: .25rem; }
.nv-store {
	display: inline-flex; align-items: center; gap: .6rem;
	padding: .55rem 1.2rem .55rem 1rem;
	border-radius: 12px;
	background: var(--wp--preset--color--primary);
	border: none;
	color: #fff; text-decoration: none;
	box-shadow: var(--nv-glow-pink);
	transition: transform .16s ease, background .16s ease;
}
.nv-store:hover {
	transform: translateY(-2px); text-decoration: none; color: #fff;
	background: var(--wp--preset--color--primary-strong);
}
.nv-store i { color: rgba(255, 255, 255, .8) !important; }
.nv-store .nv-i { font-size: 1.6rem; }
.nv-store span { display: flex; flex-direction: column; line-height: 1.2; }
.nv-store i { font-style: normal; font-size: .66rem; color: rgba(255, 255, 255, .62); }
.nv-store b { font-family: var(--wp--preset--font-family--heading); font-size: .92rem; font-weight: 700; }

/* ---- FAQ ------------------------------------------------------------------ */
.nv-faq .wp-block-details {
	background: var(--wp--preset--color--surface);
	border: var(--nv-ring);
	border-radius: var(--nv-radius-sm);
	padding: .1rem 1.1rem;
	margin-bottom: .6rem;
}
.nv-faq summary { padding: .85rem 0; font-weight: 600; cursor: pointer; list-style: none; }
.nv-faq summary::-webkit-details-marker { display: none; }
.nv-faq summary::after {
	content: "+"; float: right;
	color: var(--wp--preset--color--primary);
	font-weight: 700; font-size: 1.15rem; line-height: 1;
}
.nv-faq details[open] summary::after { content: "–"; }

/* ---- Footer --------------------------------------------------------------- */
.nv-footer-nav a { text-decoration: none; color: var(--wp--preset--color--muted); }
.nv-footer-nav a:hover { color: var(--wp--preset--color--primary); }
.nv-footer .wp-block-heading { color: var(--wp--preset--color--contrast); text-transform: uppercase; letter-spacing: .1em; }
.nv-disclaimer { color: var(--wp--preset--color--muted); font-size: .82rem; line-height: 1.6; }

/* ---- Responsive tweaks ---------------------------------------------------- */
@media (max-width: 600px) {
	.nv-hero-cta .wp-block-button { flex: 1 1 auto; }
	.nv-hero-cta .wp-block-button__link { width: 100%; }
	.nv-header-cta { gap: .4rem; }
}

/* ---- Hero CTA: pulse + shine ---------------------------------------------- */
.nv-hero-cta .nv-cta .wp-block-button__link {
	position: relative;
	overflow: hidden;
	animation: nv-cta-pulse 2.8s ease-in-out infinite;
}
.nv-hero-cta .nv-cta .wp-block-button__link::after {
	content: ""; position: absolute; top: 0; bottom: 0; width: 45%;
	background: linear-gradient(100deg, transparent, rgba(255, 255, 255, .38), transparent);
	transform: skewX(-20deg);
	animation: nv-sheen 3.6s ease-in-out infinite;
	pointer-events: none;
}
@keyframes nv-cta-pulse {
	0%, 100% { box-shadow: 0 0 0 1px rgba(255,46,143,.3), 0 12px 34px -12px rgba(224,28,120,.65), 0 0 0 0 rgba(255,46,143,.5); }
	55%      { box-shadow: 0 0 0 1px rgba(255,46,143,.45), 0 16px 40px -12px rgba(224,28,120,.85), 0 0 0 12px rgba(255,46,143,0); }
}
.nv-hero-cta .wp-block-button__link { transition: transform .16s ease; }
.nv-hero-cta .wp-block-button__link:hover { transform: translateY(-2px); }

@media (prefers-reduced-motion: reduce) {
	.nv-hero::before,
	.nv-eyebrow-pill::after,
	.nv-eyebrow-dot,
	.nv-hero-cta .nv-cta .wp-block-button__link,
	.nv-hero-cta .nv-cta .wp-block-button__link::after { animation: none; }
}

/* ---- Game category nav (/hry/) ------------------------------------------ */
.nv-cats {
	display: flex; flex-wrap: wrap; gap: .5rem;
	margin: 1.5rem 0 2rem;
}
.nv-cats a {
	padding: .5rem 1rem;
	border-radius: 999px;
	background: var(--wp--preset--color--surface);
	border: var(--nv-ring);
	color: rgba(255, 255, 255, .82);
	font-size: .85rem; font-weight: 600; text-decoration: none;
	transition: border-color .15s ease, color .15s ease, background .15s ease;
}
.nv-cats a:hover, .nv-cats a.is-active {
	border-color: rgba(255, 46, 143, .5);
	color: #fff;
	background: rgba(255, 46, 143, .14);
	text-decoration: none;
}
.nv-cat-h {
	font-family: var(--wp--preset--font-family--heading);
	font-size: var(--wp--preset--font-size--xx-large);
	font-weight: 800;
	margin: 2.5rem 0 .5rem;
}
.nv-cat-tx { color: var(--wp--preset--color--muted); font-size: .92rem; margin: 0 0 1.1rem; }
.nv-cats + .nv-cat-h { margin-top: 0; }

/* ---- Inline-width button variant ------------------------------------------ */
.nv-btn--auto { width: auto; display: inline-flex; }

/* ---- Providers ------------------------------------------------------------ */
.nv-provs { display: flex; flex-wrap: wrap; gap: .6rem; }
.nv-prov {
	display: inline-flex; align-items: center; gap: .55rem;
	background: var(--wp--preset--color--surface);
	border: var(--nv-ring);
	border-radius: 12px;
	padding: .6rem 1.05rem;
	font-size: .88rem; font-weight: 600;
	color: rgba(255, 255, 255, .9);
	transition: border-color .15s ease, background .15s ease;
}
.nv-prov:hover { border-color: rgba(255, 46, 143, .45); background: var(--wp--preset--color--surface-2); }
.nv-prov img { width: 1.35rem; height: auto; object-fit: contain; }
.nv-prov.is-more { color: var(--wp--preset--color--muted); font-weight: 500; }

/* ---- Tournaments ---------------------------------------------------------- */
.nv-tourn-grid {
	display: grid; gap: 1rem;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	align-items: stretch;
}
@media (max-width: 980px) { .nv-tourn-grid { grid-template-columns: 1fr; max-width: 520px; margin-inline: auto; } }
.nv-tourn-top {
	display: flex; align-items: flex-start; justify-content: space-between;
	gap: 1rem; margin-bottom: .85rem;
}
.nv-tourn-pool { display: flex; flex-direction: column; align-items: flex-end; line-height: 1.15; }
.nv-tourn-pool i { font-style: normal; font-size: .68rem; color: var(--wp--preset--color--muted); text-transform: uppercase; letter-spacing: .1em; }
.nv-tourn-pool b {
	font-family: var(--wp--preset--font-family--heading);
	font-weight: 800; font-size: 1.25rem;
	color: var(--wp--preset--color--win);
}
.nv-count { display: grid; grid-template-columns: repeat(4, 1fr); gap: .4rem; margin: 0 0 1.1rem; }
.nv-count span {
	display: flex; flex-direction: column; align-items: center;
	background: rgba(255, 255, 255, .05);
	border: 1px solid rgba(255, 255, 255, .1);
	border-radius: 10px; padding: .45rem .2rem;
}
.nv-count b {
	font-family: var(--wp--preset--font-family--heading);
	font-weight: 800; font-size: 1.05rem; color: #fff;
	font-variant-numeric: tabular-nums;
}
.nv-count i { font-style: normal; font-size: .62rem; color: var(--wp--preset--color--muted); text-transform: uppercase; letter-spacing: .06em; }

/* description absorbs the extra height so countdown + CTA line up */
.nv-tourn .nv-card-tx { flex: 1 1 auto; }
.nv-tourn .nv-btn { margin-top: 0; }

/* ---- VIP club ------------------------------------------------------------- */
.nv-vip {
	display: grid; gap: .6rem;
	grid-template-columns: repeat(6, minmax(0, 1fr));
	margin: 1.5rem 0 1.1rem;
}
@media (max-width: 1000px) { .nv-vip { grid-template-columns: repeat(3, 1fr); } }
@media (max-width: 560px)  { .nv-vip { grid-template-columns: repeat(2, 1fr); } }
.nv-vip-tier {
	display: flex; flex-direction: column; gap: .18rem;
	background: var(--wp--preset--gradient--card);
	border: var(--nv-ring);
	border-radius: 14px;
	padding: .9rem .85rem;
	text-align: center;
}
.nv-vip-tier.is-top { border-color: rgba(55, 214, 122, .5); box-shadow: 0 0 0 1px rgba(55, 214, 122, .18), 0 12px 30px -14px rgba(55, 214, 122, .5); }
.nv-vip-name { font-family: var(--wp--preset--font-family--heading); font-weight: 800; font-size: .95rem; color: #fff; }
.nv-vip-lvl { font-size: .68rem; color: var(--wp--preset--color--muted); }
.nv-vip-cb {
	font-family: var(--wp--preset--font-family--heading);
	font-weight: 800; font-size: 1.35rem; color: var(--wp--preset--color--primary);
	margin-top: .2rem;
}
.nv-vip-tier.is-top .nv-vip-cb { color: var(--wp--preset--color--win); }
.nv-vip-rw { font-size: .7rem; color: rgba(255, 255, 255, .68); }

.nv-vip-perks { display: flex; flex-wrap: wrap; gap: .55rem; }
.nv-vip-perk {
	display: inline-flex; align-items: center; gap: .5rem;
	background: rgba(255, 46, 143, .09);
	border: 1px solid rgba(255, 46, 143, .28);
	border-radius: 999px;
	padding: .45rem .95rem;
	font-size: .82rem; color: rgba(255, 255, 255, .9);
}
.nv-vip-perk .nv-i { color: var(--wp--preset--color--primary); font-size: 1.05rem; }

/* ---- Registration CTA ----------------------------------------------------- */
.nv-reg {
	position: relative;
	display: grid;
	grid-template-columns: minmax(0, 1.02fr) minmax(0, 1fr);
	align-items: stretch;
	border-radius: var(--nv-radius);
	overflow: hidden;
	border: var(--nv-ring);
	background:
		radial-gradient(85% 120% at 0% 50%, #221a52 0%, #1a1540 45%, #141031 100%);
	box-sizing: border-box;
}

.nv-reg-tx {
	padding: clamp(1.6rem, 3.2vw, 2.9rem);
	display: flex; flex-direction: column;
	justify-content: center;
	position: relative; z-index: 2;
	max-width: 34rem;
}
.nv-reg-tx .nv-eyebrow { margin-bottom: .5rem; }
.nv-reg-tx h2 {
	margin: 0 0 .3rem;
	font-size: clamp(1.45rem, 1.1rem + 1.15vw, 2rem);
	line-height: 1.15;
	letter-spacing: -.02em;
}
.nv-reg-amount {
	margin: 0 0 .85rem;
	font-family: var(--wp--preset--font-family--heading);
	font-size: clamp(1.05rem, .95rem + .5vw, 1.35rem);
	font-weight: 600;
	color: rgba(255, 255, 255, .72);
	letter-spacing: -.01em;
}
.nv-reg-amount b { color: var(--wp--preset--color--primary); font-weight: 800; }
.nv-reg-lead {
	margin: 0 0 1.4rem;
	color: var(--wp--preset--color--muted);
	font-size: .95rem; line-height: 1.6;
	max-width: 30rem;
}

/* 2x2 benefit grid — compact and scannable */
.nv-reg-list {
	list-style: none; margin: 0 0 1.6rem; padding: 0;
	display: grid; grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: .85rem 1.1rem;
}
.nv-reg-list li { display: flex; align-items: flex-start; gap: .6rem; }
.nv-reg-list .nv-i {
	color: var(--wp--preset--color--win);
	font-size: 1.15rem; margin-top: .12rem;
}
.nv-reg-list span { display: flex; flex-direction: column; line-height: 1.3; min-width: 0; }
.nv-reg-list b {
	font-family: var(--wp--preset--font-family--heading);
	font-size: .9rem; font-weight: 700; color: #fff;
}
.nv-reg-list span { font-size: .78rem; color: var(--wp--preset--color--muted); }

.nv-reg-cta { display: flex; gap: .65rem; flex-wrap: wrap; }
.nv-reg-cta .nv-btn { width: auto; min-width: 9.5rem; }

.nv-reg-note {
	display: flex; align-items: flex-start; gap: .6rem;
	margin: 1.15rem 0 0;
	font-size: .76rem; line-height: 1.55;
	color: var(--wp--preset--color--muted);
	max-width: 30rem;
}
.nv-reg-note .nv-18 { flex: 0 0 auto; width: 1.55rem; height: 1.55rem; font-size: .66rem; }

/* Artwork column */
.nv-reg-art {
	position: relative;
	min-height: 100%;
	background-image: url(register-art.webp);
	background-size: cover;
	background-position: 62% center;
}
/* soften the seam into the panel + tone down the busy source background */
.nv-reg-art::before {
	content: ""; position: absolute; inset: 0;
	background:
		linear-gradient(90deg, #1c1648 0%, rgba(28, 22, 72, .82) 14%, rgba(28, 22, 72, .28) 34%, rgba(28, 22, 72, 0) 55%),
		radial-gradient(75% 95% at 62% 50%, rgba(20, 16, 49, 0) 45%, rgba(20, 16, 49, .72) 100%);
}

@media (max-width: 900px) {
	.nv-reg { grid-template-columns: 1fr; }
	.nv-reg-tx { max-width: none; padding-top: 1.4rem; }
	.nv-reg-art { order: -1; min-height: 230px; background-position: center 22%; }
	.nv-reg-art::before {
		background:
			radial-gradient(70% 80% at 50% 35%, rgba(20, 16, 49, 0) 40%, rgba(20, 16, 49, .55) 100%),
			linear-gradient(180deg, rgba(20, 16, 49, .35) 0%, rgba(20, 16, 49, 0) 35%, rgba(28, 22, 72, .92) 88%, #1c1648 100%);
	}
}
@media (max-width: 560px) {
	.nv-reg-list { grid-template-columns: 1fr; gap: .7rem; }
	.nv-reg-cta .nv-btn { width: 100%; }
}

/* VIP tier icon */
.nv-vip-ic {
	width: 3.2rem; height: auto;
	margin: 0 auto .45rem;
	display: block;
	filter: drop-shadow(0 6px 14px rgba(0, 0, 0, .5));
}
.nv-vip-tier { padding-top: 1rem; }
.nv-vip-tier.is-top .nv-vip-ic { filter: drop-shadow(0 6px 18px rgba(55, 214, 122, .45)); }

/* ---- Trust bar (footer) --------------------------------------------------- */
.nv-trust { margin: clamp(1.5rem, 3vw, 2.25rem) 0 .5rem; }

.nv-badges {
	display: flex; flex-wrap: wrap; align-items: center; justify-content: center;
	gap: .55rem .9rem;
}
.nv-badge-img {
	display: inline-grid; place-items: center;
	background: rgba(255, 255, 255, .05);
	border: 1px solid rgba(255, 255, 255, .1);
	border-radius: 10px;
	padding: .5rem .85rem;
	height: 2.9rem;
	transition: border-color .15s ease, background .15s ease;
}
.nv-badge-img:hover { border-color: rgba(255, 255, 255, .22); background: rgba(255, 255, 255, .08); }
.nv-badge-img img { max-height: 1.55rem; width: auto; display: block; }
/* GameCheck is a scannable QR seal — it has to stay on white to work, so we
   keep the light card but match the height/radius of the others so it reads
   as deliberate rather than as a broken transparency. */
.nv-badge-img.is-lic { background: rgba(255,255,255,.92); border-color: rgba(255,255,255,.16); padding: .35rem .5rem; }
.nv-badge-img.is-lic img { max-height: 1.85rem; }
.nv-badge-img.is-lic:hover { background: #fff; border-color: rgba(255,255,255,.32); }

/* responsible-gambling marks sit plain, slightly dimmed until hover */
.nv-badges--rg {
	margin-top: .9rem; padding-top: .9rem;
	border-top: 1px solid rgba(255, 255, 255, .07);
	gap: .5rem 1.35rem;
}
.nv-badges--rg img { height: 1.4rem; width: auto; opacity: .72; transition: opacity .15s ease; }
.nv-badges--rg img:hover { opacity: 1; }

.nv-trust-rg {
	display: grid; grid-template-columns: 1fr auto;
	align-items: center; gap: 1rem;
	margin-top: .9rem; padding-top: .9rem;
	border-top: 1px solid rgba(255, 255, 255, .07);
	font-size: .78rem; color: var(--wp--preset--color--muted); line-height: 1.6;
}
.nv-trust-lic b { color: rgba(255, 255, 255, .85); font-weight: 600; }
.nv-trust-help { text-align: right; }
.nv-trust-help a { color: var(--wp--preset--color--primary); text-decoration: none; }
.nv-trust-help a:hover { text-decoration: underline; }
@media (max-width: 760px) {
	.nv-trust-rg { grid-template-columns: 1fr; text-align: center; }
	.nv-trust-help { text-align: center; }
}

/* ---- Stats bar ------------------------------------------------------------ */
.nv-stats {
	display: grid; grid-template-columns: repeat(4, minmax(0, 1fr));
	gap: .8rem;
}
.nv-stat {
	display: flex; flex-direction: column; align-items: center; gap: .1rem;
	background: var(--wp--preset--gradient--card);
	border: var(--nv-ring);
	border-radius: var(--nv-radius);
	padding: 1.15rem .9rem;
	text-align: center;
}
.nv-stat b {
	font-family: var(--wp--preset--font-family--heading);
	font-weight: 800; letter-spacing: -.02em;
	font-size: clamp(1.4rem, 1.1rem + 1.1vw, 2rem);
	color: #fff;
}
.nv-stat i { font-style: normal; font-size: .82rem; color: var(--wp--preset--color--muted); }
.nv-stat .nv-i { font-size: 1.3rem; color: var(--wp--preset--color--primary); margin-bottom: .3rem; }
@media (max-width: 800px) { .nv-stats { grid-template-columns: repeat(2, 1fr); } }

/* ---- Game category chips (homepage) --------------------------------------- */
.nv-catrow {
	display: flex; flex-wrap: wrap; gap: .5rem;
	margin-bottom: clamp(1rem, 2.5vw, 1.5rem);
}
.nv-catrow a {
	display: inline-flex; align-items: center; gap: .45rem;
	padding: .5rem 1rem;
	border-radius: 999px;
	background: var(--wp--preset--color--surface);
	border: var(--nv-ring);
	color: rgba(255, 255, 255, .85);
	font-size: .84rem; font-weight: 600; text-decoration: none;
	transition: border-color .15s ease, background .15s ease, color .15s ease;
}
.nv-catrow a:hover { border-color: rgba(255,46,143,.5); background: rgba(255,46,143,.12); color: #fff; text-decoration: none; }
.nv-catrow a .nv-i { font-size: 1rem; color: var(--wp--preset--color--primary); }

/* ---- Provider cards ------------------------------------------------------- */
.nv-prov-grid {
	display: grid; gap: 1rem;
	grid-template-columns: repeat(4, minmax(0, 1fr));
	align-items: stretch;
	margin-top: 1.25rem;
}
@media (max-width: 1080px) { .nv-prov-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 600px)  { .nv-prov-grid { grid-template-columns: 1fr; } }

.nv-provcard {
	box-sizing: border-box;
	display: flex; flex-direction: column;
	background: var(--wp--preset--gradient--card);
	border: var(--nv-ring);
	border-radius: var(--nv-radius);
	padding: 1.2rem;
	transition: border-color .16s ease, transform .16s ease;
}
.nv-provcard:hover { border-color: rgba(255, 46, 143, .4); transform: translateY(-2px); }

.nv-provcard-top { display: flex; align-items: center; gap: .7rem; margin-bottom: .8rem; }
.nv-provcard-logo {
	display: grid; place-items: center; flex: 0 0 auto;
	width: 2.5rem; height: 2.5rem;
	border-radius: 11px;
	background: rgba(255, 255, 255, .07);
	border: 1px solid rgba(255, 255, 255, .1);
}
.nv-provcard-logo img { width: 1.4rem; height: auto; object-fit: contain; }
.nv-provcard h3 {
	margin: 0; font-size: 1rem; font-weight: 700; line-height: 1.2;
	font-family: var(--wp--preset--font-family--heading);
}
.nv-provcard-tag { font-size: .7rem; color: var(--wp--preset--color--primary); font-weight: 600; }
.nv-provcard > p {
	margin: 0 0 .9rem;
	font-size: .84rem; line-height: 1.55;
	color: var(--wp--preset--color--muted);
	flex: 1 1 auto;
}
.nv-provcard-games { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: .35rem; }
.nv-provcard-games li {
	font-size: .7rem; font-weight: 600;
	padding: .25rem .6rem;
	border-radius: 7px;
	background: rgba(255, 255, 255, .06);
	border: 1px solid rgba(255, 255, 255, .09);
	color: rgba(255, 255, 255, .82);
}

/* trailing list of the remaining studios */
.nv-prov-more {
	display: flex; flex-wrap: wrap; align-items: center; gap: .5rem .75rem;
	margin-top: 1.1rem; padding-top: 1.1rem;
	border-top: 1px solid rgba(255, 255, 255, .07);
	font-size: .82rem; color: var(--wp--preset--color--muted);
}
.nv-prov-more b {
	font-family: var(--wp--preset--font-family--heading);
	font-weight: 600; font-size: .8rem;
	color: rgba(255, 255, 255, .8);
	padding: .3rem .7rem;
	border-radius: 999px;
	background: var(--wp--preset--color--surface);
	border: var(--nv-ring);
}
.nv-prov-more-rest { font-style: italic; }

/* ---- Content pages: alerts, tables, terms --------------------------------- */
.nv-alert {
	display: flex; align-items: flex-start; gap: .75rem;
	background: rgba(255, 46, 143, .1);
	border: 1px solid rgba(255, 46, 143, .3);
	border-radius: var(--nv-radius-sm);
	padding: .9rem 1.1rem;
	font-size: .9rem; line-height: 1.6;
	margin: 1.25rem 0;
}
.nv-alert .nv-i { font-size: 1.25rem; color: var(--wp--preset--color--primary); margin-top: .1rem; }
.nv-alert b { color: #fff; }

/* deposit-tier cards */
.nv-dep-grid {
	display: grid; gap: 1rem;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	align-items: stretch;
	margin: 1.5rem 0;
}
@media (max-width: 900px) { .nv-dep-grid { grid-template-columns: 1fr; } }
.nv-dep .nv-amount { font-size: clamp(1.15rem, 1rem + .6vw, 1.45rem); }
.nv-dep .nv-facts { margin-bottom: 0; }
.nv-dep .nv-facts li { align-items: flex-start; }
.nv-dep .nv-facts .nv-i { margin-top: .15rem; }

/* key-value term blocks */
.nv-terms {
	display: grid; gap: .6rem;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	margin: 1.25rem 0;
}
@media (max-width: 900px) { .nv-terms { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 560px) { .nv-terms { grid-template-columns: 1fr; } }
.nv-term {
	display: flex; flex-direction: column; gap: .2rem;
	background: var(--wp--preset--color--surface);
	border: var(--nv-ring);
	border-radius: var(--nv-radius-sm);
	padding: .8rem .95rem;
}
.nv-term b {
	font-family: var(--wp--preset--font-family--heading);
	font-size: .8rem; color: var(--wp--preset--color--primary);
	text-transform: uppercase; letter-spacing: .06em;
}
.nv-term span { font-size: .85rem; color: rgba(255, 255, 255, .82); line-height: 1.5; }

/* data tables */
.nv-tbl { overflow-x: auto; margin: 1.25rem 0; }
.nv-tbl table {
	width: 100%; border-collapse: collapse;
	font-size: .88rem;
	background: var(--wp--preset--gradient--card);
	border: var(--nv-ring);
	border-radius: var(--nv-radius-sm);
	overflow: hidden;
}
.nv-tbl th {
	text-align: left; padding: .8rem 1rem;
	font-family: var(--wp--preset--font-family--heading);
	font-size: .76rem; font-weight: 700;
	text-transform: uppercase; letter-spacing: .07em;
	color: var(--wp--preset--color--primary);
	background: rgba(255, 255, 255, .04);
	border-bottom: 1px solid rgba(255, 255, 255, .09);
	white-space: nowrap;
}
.nv-tbl td {
	padding: .75rem 1rem;
	border-bottom: 1px solid rgba(255, 255, 255, .06);
	color: rgba(255, 255, 255, .86);
	vertical-align: top;
}
.nv-tbl tr:last-child td { border-bottom: 0; }
.nv-tbl tbody tr:hover td { background: rgba(255, 255, 255, .03); }
.nv-tbl tr.is-top td { background: rgba(55, 214, 122, .07); }
.nv-tbl tr.is-top td:first-child { color: var(--wp--preset--color--win); font-weight: 700; }

/* formula + definition list */
.nv-formula {
	font-family: var(--wp--preset--font-family--heading);
	font-size: clamp(.9rem, .82rem + .4vw, 1.05rem);
	font-weight: 700; text-align: center;
	background: var(--wp--preset--color--surface);
	border: 1px dashed rgba(255, 46, 143, .4);
	border-radius: var(--nv-radius-sm);
	padding: 1rem 1.1rem;
	margin: 1.25rem 0;
	color: #fff;
}
.nv-deflist { list-style: none; margin: 1rem 0; padding: 0; display: grid; gap: .5rem; }
.nv-deflist li {
	font-size: .88rem; line-height: 1.55;
	color: var(--wp--preset--color--muted);
	padding-left: 1rem; position: relative;
}
.nv-deflist li::before {
	content: ""; position: absolute; left: 0; top: .6em;
	width: .35rem; height: .35rem; border-radius: 50%;
	background: var(--wp--preset--color--primary);
}
.nv-deflist b { color: #fff; font-weight: 600; }

/* tournament name + how-it-works strip */
.nv-tourn-name {
	margin: 0 0 .5rem !important;
	font-size: 1.05rem !important; font-weight: 700;
	font-family: var(--wp--preset--font-family--heading);
}
.nv-tourn-how {
	display: grid; grid-template-columns: repeat(auto-fit, minmax(210px, 1fr));
	gap: .6rem; margin-top: 1.1rem;
}
@media (max-width: 900px) { .nv-tourn-how { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 520px) { .nv-tourn-how { grid-template-columns: 1fr; } }
.nv-tourn-step {
	display: flex; align-items: center; gap: .6rem;
	background: var(--wp--preset--color--surface);
	border: var(--nv-ring);
	border-radius: var(--nv-radius-sm);
	padding: .7rem .9rem;
	font-size: .82rem; line-height: 1.4;
	color: rgba(255, 255, 255, .82);
}
.nv-tourn-step b {
	display: grid; place-items: center; flex: 0 0 auto;
	width: 1.6rem; height: 1.6rem; border-radius: 50%;
	background: rgba(255, 46, 143, .14);
	border: 1px solid rgba(255, 46, 143, .35);
	color: var(--wp--preset--color--primary);
	font-family: var(--wp--preset--font-family--heading);
	font-size: .78rem; font-weight: 800;
}
.nv-alert2 {
	background: rgba(255, 255, 255, .05);
	border-left: 3px solid var(--wp--preset--color--primary);
	border-radius: 0 var(--nv-radius-sm) var(--nv-radius-sm) 0;
	padding: .8rem 1.1rem;
	font-size: .85rem; line-height: 1.6;
	color: var(--wp--preset--color--muted);
	margin: 1rem 0;
}
.nv-alert2 b { color: #fff; }
.nv-catrow a em {
	font-style: normal; font-size: .72rem; font-weight: 700;
	color: var(--wp--preset--color--muted);
	background: rgba(255, 255, 255, .07);
	padding: .1rem .4rem; border-radius: 5px;
}

/* app page spec strip */
.nv-appspecs {
	display: grid; grid-template-columns: repeat(4, minmax(0, 1fr));
	gap: .7rem; margin: 1.5rem 0;
}
@media (max-width: 700px) { .nv-appspecs { grid-template-columns: repeat(2, 1fr); } }
.nv-appspec {
	display: flex; flex-direction: column; align-items: center; gap: .1rem;
	background: var(--wp--preset--gradient--card);
	border: var(--nv-ring); border-radius: var(--nv-radius);
	padding: 1rem .8rem; text-align: center;
}
.nv-appspec b {
	font-family: var(--wp--preset--font-family--heading);
	font-weight: 800; font-size: clamp(1.05rem, .9rem + .6vw, 1.4rem); color: #fff;
}
.nv-appspec i { font-style: normal; font-size: .78rem; color: var(--wp--preset--color--muted); }
.nv-stores--lg { margin: 1.5rem 0; }
.nv-stores--lg .nv-store { padding: .7rem 1.4rem .7rem 1.1rem; }
.nv-stores--lg .nv-store .nv-i { font-size: 1.85rem; }

/* ---- Betting Predictions -------------------------------------------------- */
.nv-pred-grid {
	display: grid; gap: .8rem;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	margin: 1.25rem 0;
}
@media (max-width: 900px) { .nv-pred-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 560px) { .nv-pred-grid { grid-template-columns: 1fr; } }

.nv-pred {
	box-sizing: border-box;
	display: flex; flex-direction: column; gap: .15rem;
	background: var(--wp--preset--gradient--card);
	border: var(--nv-ring);
	border-radius: var(--nv-radius);
	padding: 1.1rem 1.2rem;
	text-decoration: none;
	transition: border-color .16s ease, transform .16s ease, background .16s ease;
}
.nv-pred:hover {
	border-color: rgba(108, 76, 255, .55);
	background: rgba(108, 76, 255, .09);
	transform: translateY(-2px);
	text-decoration: none;
}
.nv-pred-ic {
	display: grid; place-items: center;
	width: 2.4rem; height: 2.4rem;
	border-radius: 12px;
	margin-bottom: .6rem;
	font-size: 1.25rem; color: #fff;
	background: linear-gradient(140deg, rgba(108, 76, 255, .95), rgba(178, 60, 255, .8));
	box-shadow: 0 10px 24px -14px rgba(108, 76, 255, .95);
}
.nv-pred b {
	font-family: var(--wp--preset--font-family--heading);
	font-size: .98rem; font-weight: 700; color: #fff;
}
.nv-pred i { font-style: normal; font-size: .8rem; line-height: 1.5; color: var(--wp--preset--color--muted); }

/* ---- Long-form content & legal pages -------------------------------------- */
.nv-lead {
	font-size: 1.06rem; line-height: 1.75;
	color: rgba(255, 255, 255, .88);
	border-left: 3px solid var(--wp--preset--color--primary);
	padding-left: 1rem; margin: 0 0 1.6rem;
}
.nv-updated {
	display: inline-flex; align-items: center; gap: .45rem;
	font-size: .78rem; color: var(--wp--preset--color--muted);
	background: rgba(255, 255, 255, .04);
	border: var(--nv-ring); border-radius: 999px;
	padding: .3rem .8rem; margin-bottom: 1.3rem;
}
.nv-updated .nv-i { width: .95rem; height: .95rem; }

/* anchor list at the top of legal pages */
.nv-toc {
	background: var(--wp--preset--gradient--card);
	border: var(--nv-ring); border-radius: var(--nv-radius);
	padding: 1.15rem 1.35rem; margin: 0 0 2rem;
}
.nv-toc b {
	display: block; font-family: var(--wp--preset--font-family--heading);
	font-size: .74rem; letter-spacing: .12em; text-transform: uppercase;
	color: var(--wp--preset--color--muted); margin-bottom: .75rem;
}
.nv-toc ol { list-style: none; margin: 0; padding: 0; counter-reset: toc;
	display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .35rem .9rem; }
@media (max-width: 640px) { .nv-toc ol { grid-template-columns: 1fr; } }
.nv-toc li { counter-increment: toc; font-size: .87rem; }
.nv-toc a { color: rgba(255, 255, 255, .8); text-decoration: none; display: block; padding: .18rem 0; }
.nv-toc a::before {
	content: counter(toc) ". "; color: var(--wp--preset--color--muted);
	font-variant-numeric: tabular-nums;
}
.nv-toc a:hover { color: var(--wp--preset--color--primary); }

/* body copy inside legal pages */
.nv-legal h2 { scroll-margin-top: 6rem; }
.nv-legal h3 { font-size: 1.02rem; margin-top: 1.6rem; }
.nv-legal p, .nv-legal li { line-height: 1.75; }
.nv-legal ul, .nv-legal ol { padding-left: 1.15rem; }
.nv-legal li { margin: .35rem 0; }
.nv-legal li::marker { color: var(--wp--preset--color--primary); }

/* small callout used for "this is not legal advice" / warnings */
.nv-note {
	display: flex; gap: .7rem; align-items: flex-start;
	background: rgba(255, 255, 255, .04);
	border: var(--nv-ring); border-left: 3px solid var(--wp--preset--color--accent);
	border-radius: 12px; padding: .9rem 1.05rem;
	font-size: .87rem; line-height: 1.65; margin: 1.2rem 0;
	color: rgba(255, 255, 255, .82);
}
.nv-note .nv-i { flex: 0 0 auto; width: 1.15rem; height: 1.15rem; margin-top: .15rem; color: var(--wp--preset--color--accent); }

/* contact / channel cards */
.nv-contact-grid {
	display: grid; gap: .85rem; margin: 1.4rem 0;
	grid-template-columns: repeat(3, minmax(0, 1fr));
}
@media (max-width: 860px) { .nv-contact-grid { grid-template-columns: 1fr; } }
.nv-contact {
	box-sizing: border-box;
	background: var(--wp--preset--gradient--card);
	border: var(--nv-ring); border-radius: var(--nv-radius);
	padding: 1.25rem; display: flex; flex-direction: column;
}
.nv-contact .nv-ic-tile { margin-bottom: .85rem; }
.nv-contact b { font-family: var(--wp--preset--font-family--heading); font-size: 1rem; color: #fff; }
.nv-contact p { flex: 1 1 auto; font-size: .85rem; line-height: 1.6; color: var(--wp--preset--color--muted); margin: .35rem 0 .9rem; }
.nv-contact .nv-chan {
	font-size: .88rem; font-weight: 600; color: var(--wp--preset--color--primary);
	text-decoration: none; word-break: break-word;
}
.nv-contact .nv-chan:hover { text-decoration: underline; }
.nv-contact .nv-sla {
	display: block; margin-top: .5rem; font-size: .74rem;
	color: var(--wp--preset--color--muted);
}

/* ---- Inner-page vertical rhythm ------------------------------------------- */
/* Long-form pages were reading as one dense block: headings sat flush against
   the element above them. These rules give each section room to breathe and
   mark every H2 with a short accent bar so the page scans at a glance. */
.wp-block-post-content > h2,
.wp-block-post-content > .wp-block-heading:not(h1),
.nv-legal > h2 {
	position: relative;
	margin-top: clamp(2.6rem, 5vw, 4rem);
	margin-bottom: .9rem;
	padding-top: 1.1rem;
}
.wp-block-post-content > h2::before,
.nv-legal > h2::before {
	content: "";
	position: absolute; top: 0; left: 0;
	width: 2.2rem; height: 3px; border-radius: 3px;
	background: var(--wp--preset--gradient--brand);
}
.wp-block-post-content > h3,
.nv-legal > h3 { margin-top: 2.1rem; margin-bottom: .55rem; }

/* first heading after the lead paragraph doesn't need the full gap */
.nv-lead + h2, .nv-updated + .nv-lead + h2 { margin-top: clamp(1.8rem, 3vw, 2.4rem); }

/* space around the component blocks that sit between paragraphs */
.wp-block-post-content > .nv-usp-grid,
.wp-block-post-content > .nv-steps,
.wp-block-post-content > .nv-terms,
.wp-block-post-content > .nv-contact-grid,
.wp-block-post-content > .nv-pred-grid,
.wp-block-post-content > .nv-tbl,
.wp-block-post-content > .nv-faq { margin-block: 1.5rem; }

/* standalone CTA rows need air on both sides, not just above */
.nv-center { margin: 2rem 0; }
.nv-center + h2, .nv-center + .wp-block-heading { margin-top: clamp(2.6rem, 5vw, 4rem); }

/* callouts shouldn't collide with the heading that follows */
.nv-alert, .nv-alert2, .nv-note { margin-block: 1.3rem; }

/* .nv-term was written for <b> + <span>; the content pages use <p> */
.nv-term p { margin: 0; font-size: .85rem; color: rgba(255, 255, 255, .82); line-height: 1.55; }

/* cards inside long-form pages sit a touch tighter than on the homepage */
.wp-block-post-content .nv-usp h3,
.wp-block-post-content .nv-step h3 { margin: 0 0 .35rem; font-size: 1rem; }
.wp-block-post-content .nv-usp p,
.wp-block-post-content .nv-step p { font-size: .87rem; line-height: 1.6; color: var(--wp--preset--color--muted); }
.wp-block-post-content .nv-usp a,
.wp-block-post-content .nv-step a { color: var(--wp--preset--color--primary); text-decoration: none; }
.wp-block-post-content .nv-usp a:hover,
.wp-block-post-content .nv-step a:hover { text-decoration: underline; }

/* Orphan rows: a 4-card set in a 3-column grid leaves one card stranded on its
   own row. Match the column count to the item count instead of padding it out. */
@media (min-width: 1001px) {
	.wp-block-post-content .nv-usp-grid:has(> :nth-child(4):last-child),
	.wp-block-post-content .nv-steps:has(> :nth-child(4):last-child),
	.wp-block-post-content .nv-terms:has(> :nth-child(4):last-child),
	.wp-block-post-content .nv-terms:has(> :nth-child(8):last-child) {
		grid-template-columns: repeat(4, minmax(0, 1fr));
	}
	/* five items never divide evenly — centre the remainder so it reads as a choice */
	.wp-block-post-content .nv-usp-grid:has(> :nth-child(5):last-child),
	.wp-block-post-content .nv-steps:has(> :nth-child(5):last-child) {
		display: flex; flex-wrap: wrap; justify-content: center;
	}
	.wp-block-post-content .nv-usp-grid:has(> :nth-child(5):last-child) > *,
	.wp-block-post-content .nv-steps:has(> :nth-child(5):last-child) > * {
		flex: 1 1 15rem; max-width: 22rem;
	}
}
@media (max-width: 1000px) and (min-width: 601px) {
	.wp-block-post-content .nv-usp-grid,
	.wp-block-post-content .nv-steps,
	.wp-block-post-content .nv-contact-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

/* Text selection: Chrome's default highlight is an off-brand green on this
   dark palette. Use the brand pink so selecting copy still looks like NV. */
::selection { background: rgba(255, 46, 143, .35); color: #fff; }
::-moz-selection { background: rgba(255, 46, 143, .35); color: #fff; }

/* ---- Labelled how-it-works cards ------------------------------------------ */
/* Distinct from .nv-tourn-step, whose <b> is a 1.6rem numbered circle. Here the
   <b> is a real heading, so it needs its own block-level treatment. */
.nv-howto {
	display: grid; gap: .7rem; margin: 1.3rem 0;
	grid-template-columns: repeat(auto-fit, minmax(15rem, 1fr));
}
.nv-howto-item {
	box-sizing: border-box;
	background: var(--wp--preset--color--surface);
	border: var(--nv-ring);
	border-left: 3px solid var(--wp--preset--color--primary);
	border-radius: var(--nv-radius-sm);
	padding: .95rem 1.1rem;
}
.nv-howto-item b {
	display: block; margin-bottom: .3rem;
	font-family: var(--wp--preset--font-family--heading);
	font-size: .82rem; font-weight: 700;
	text-transform: uppercase; letter-spacing: .06em;
	color: var(--wp--preset--color--primary);
}
.nv-howto-item p { margin: 0; font-size: .87rem; line-height: 1.6; color: rgba(255, 255, 255, .84); }

/* ---- Fixes to shared components used on long-form pages -------------------- */
/* .nv-alert2 was block-level, so an inline icon sat on top of the copy. */
.nv-alert2 { display: flex; align-items: flex-start; gap: .75rem; }
.nv-alert2 .nv-i { flex: 0 0 auto; font-size: 1.15rem; color: var(--wp--preset--color--primary); margin-top: .15rem; }
.nv-alert2 b { color: #fff; }
.nv-alert .nv-i { flex: 0 0 auto; }

/* Tables stretched their last column across empty space. Size value columns to
   their content and let the first (label) column absorb the slack instead. */
.nv-tbl table { table-layout: auto; }
.nv-tbl th:not(:first-child),
.nv-tbl td:not(:first-child) { width: 1%; white-space: nowrap; }
.nv-tbl th:first-child, .nv-tbl td:first-child { width: auto; }
/* tables carrying prose in later columns opt out */
.nv-tbl.is-prose th, .nv-tbl.is-prose td { width: auto; white-space: normal; }

/* An H3 directly under an H2 is a sub-heading, not a new section. */
.wp-block-post-content > h2 + h3,
.nv-legal > h2 + h3 { margin-top: .9rem; }

/* Readable measure. Prose at the full 1140px column runs to ~150 characters
   a line, which is hard to track back to the next line.

   Two different mechanisms, because the two contexts behave differently:

   1. Top-level children of the post content are centred by WP's constrained
      layout with `margin-left/right: auto !important`. Capping their width
      would centre them (out of line with the headings) and zeroing the margin
      would throw them out of the column entirely — so the line is shortened
      with padding instead, which leaves the left edge exactly where it is.

   2. Children of .nv-legal sit inside a group that is already the content
      column, so there a max-width plus a zeroed left margin is correct. */
.wp-block-post-content > p:not(.nv-center):not(.nv-disclaimer),
.wp-block-post-content > ul,
.wp-block-post-content > ol,
.wp-block-post-content > .nv-lead {
	/* The padding must be measured against the CONTENT COLUMN, not the element's
	   containing block — a percentage resolves against the full-bleed wrapper,
	   which pushes the box past its 1140px cap, collapses the auto margins to 0
	   and drops the paragraph out to the viewport edge. box-sizing keeps the
	   padding inside the cap so the left edge stays on the column. */
	box-sizing: border-box;
	padding-right: max(0rem, var(--wp--style--global--content-size, 1140px) - 58rem);
}

.nv-legal > p, .nv-legal > ul, .nv-legal > ol {
	max-width: 58rem;
	margin-left: 0 !important;
	margin-right: auto !important;
}

/* ---- Interactive enhancements --------------------------------------------- */
/* All of these are driven by the script in functions.php and degrade to nothing
   without JS. Motion is disabled under prefers-reduced-motion. */

/* reading progress, pinned under the sticky header */
.nv-progress {
	position: fixed; inset: 0 0 auto 0; z-index: 60;
	height: 3px; background: transparent; pointer-events: none;
}
.nv-progress span {
	display: block; height: 100%; width: 0;
	background: var(--wp--preset--gradient--brand);
	box-shadow: 0 0 12px rgba(255, 46, 143, .6);
}

/* back to top */
.nv-totop {
	position: fixed; right: 1.25rem; bottom: 1.25rem; z-index: 55;
	display: grid; place-items: center;
	width: 2.9rem; height: 2.9rem; padding: 0;
	border-radius: 50%; cursor: pointer;
	color: #fff; background: var(--wp--preset--color--surface-2);
	border: 1px solid rgba(255, 255, 255, .16);
	box-shadow: 0 12px 30px -12px rgba(0, 0, 0, .8);
	opacity: 0; visibility: hidden; transform: translateY(.5rem);
	transition: opacity .22s ease, transform .22s ease, visibility .22s, background .18s ease;
}
.nv-totop.is-on { opacity: 1; visibility: visible; transform: none; }
.nv-totop:hover { background: var(--wp--preset--color--primary); border-color: transparent; }
.nv-totop .nv-i { width: 1.15rem; height: 1.15rem; transform: rotate(-90deg); }

/* scroll-spy state in the table of contents */
.nv-toc a.is-current {
	color: var(--wp--preset--color--primary);
	font-weight: 600;
}
.nv-toc a.is-current::before { color: var(--wp--preset--color--primary); }

/* reveal on scroll */
.nv-reveal > * {
	opacity: 0; transform: translateY(14px);
	transition: opacity .5s ease, transform .5s cubic-bezier(.22, .61, .36, 1);
}
.nv-reveal.is-in > * { opacity: 1; transform: none; }

/* In-page category nav (games page). Deliberately NOT sticky: pinning it under
   the already-sticky header left a strip of page content visible between the
   two and made the bar jump as it engaged. A plain filter row is predictable,
   and back-to-top covers long-page navigation. */
.nv-cats { margin: 1.5rem 0 2rem; }

@media (prefers-reduced-motion: reduce) {
	.nv-progress { display: none; }
	.nv-reveal > * { opacity: 1; transform: none; transition: none; }
	.nv-totop { transition: none; }
	html { scroll-behavior: auto; }
}
@media (prefers-reduced-motion: no-preference) {
	html { scroll-behavior: smooth; }
}

/* ---- Predictions: category explorer --------------------------------------- */
.nv-pex {
	background: var(--wp--preset--gradient--card);
	border: var(--nv-ring); border-radius: var(--nv-radius);
	padding: 1.1rem; margin: 1.5rem 0;
}
.nv-pex-tabs { display: flex; flex-wrap: wrap; gap: .45rem; margin-bottom: 1.1rem; }
.nv-pex-tabs button {
	display: inline-flex; align-items: center; gap: .45rem;
	padding: .5rem .95rem; border-radius: 999px; cursor: pointer;
	font-family: var(--wp--preset--font-family--heading);
	font-size: .84rem; font-weight: 600;
	color: rgba(255, 255, 255, .8);
	background: var(--wp--preset--color--surface);
	border: var(--nv-ring);
	transition: color .16s ease, background .16s ease, border-color .16s ease;
}
.nv-pex-tabs button .nv-i { width: 1rem; height: 1rem; }
.nv-pex-tabs button:hover { color: #fff; border-color: rgba(108, 76, 255, .5); }
.nv-pex-tabs button[aria-selected="true"] {
	color: #fff; border-color: transparent;
	background: linear-gradient(140deg, rgba(108, 76, 255, .95), rgba(178, 60, 255, .8));
	box-shadow: 0 10px 24px -14px rgba(108, 76, 255, .95);
}
.nv-pex-panel[hidden] { display: none; }
.nv-pex-scope {
	margin: 0 0 .8rem; font-size: .95rem; font-weight: 600; color: #fff;
}
.nv-pex-ex { list-style: none; margin: 0; padding: 0; display: grid; gap: .45rem; }
.nv-pex-ex li {
	position: relative; padding: .6rem .9rem .6rem 2.1rem;
	background: var(--wp--preset--color--surface);
	border: var(--nv-ring); border-radius: var(--nv-radius-sm);
	font-size: .87rem; line-height: 1.55; color: rgba(255, 255, 255, .84);
}
.nv-pex-ex li::before {
	content: "?"; position: absolute; left: .8rem; top: .58rem;
	font-family: var(--wp--preset--font-family--heading);
	font-weight: 800; color: var(--wp--preset--color--accent);
}
.nv-pex-note {
	display: flex; gap: .6rem; align-items: flex-start;
	margin: 1rem 0 0; padding-top: .9rem;
	border-top: 1px solid rgba(255, 255, 255, .08);
	font-size: .8rem; line-height: 1.55; color: var(--wp--preset--color--muted);
}
.nv-pex-note .nv-i { flex: 0 0 auto; width: 1rem; height: 1rem; margin-top: .15rem; color: var(--wp--preset--color--accent); }
.nv-pex-note b { color: rgba(255, 255, 255, .9); }
@media (prefers-reduced-motion: no-preference) {
	.nv-pex-panel:not([hidden]) { animation: nv-pex-in .28s ease both; }
	@keyframes nv-pex-in { from { opacity: 0; transform: translateY(6px); } to { opacity: 1; transform: none; } }
}

/* ---- Predictions: payout calculator --------------------------------------- */
.nv-calc {
	background: var(--wp--preset--gradient--card);
	border: var(--nv-ring); border-radius: var(--nv-radius);
	padding: 1.25rem; margin: 1.5rem 0;
}
.nv-calc-in { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .9rem; }
@media (max-width: 520px) { .nv-calc-in { grid-template-columns: 1fr; } }
.nv-calc-in label {
	display: grid; gap: .35rem;
	font-family: var(--wp--preset--font-family--heading);
	font-size: .75rem; font-weight: 700; letter-spacing: .08em;
	text-transform: uppercase; color: var(--wp--preset--color--muted);
}
.nv-calc-field {
	display: flex; align-items: center;
	background: var(--wp--preset--color--base);
	border: var(--nv-ring); border-radius: var(--nv-radius-sm);
	transition: border-color .16s ease;
}
.nv-calc-field:focus-within { border-color: rgba(255, 46, 143, .6); }
.nv-calc-field i {
	padding: 0 .3rem 0 .85rem; font-style: normal;
	color: var(--wp--preset--color--muted); font-size: 1rem;
}
.nv-calc-field input {
	flex: 1 1 auto; width: 100%; min-width: 0;
	background: none; border: 0; outline: none;
	padding: .7rem .9rem .7rem .1rem;
	font-family: var(--wp--preset--font-family--heading);
	font-size: 1.1rem; font-weight: 700; color: #fff;
	font-variant-numeric: tabular-nums;
}
.nv-calc-out {
	display: grid; grid-template-columns: repeat(4, minmax(0, 1fr));
	gap: .6rem; margin-top: 1rem;
}
.nv-calc-out--3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
@media (max-width: 860px) { .nv-calc-out { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 460px) { .nv-calc-out { grid-template-columns: 1fr; } }
.nv-calc-out > div {
	background: var(--wp--preset--color--surface);
	border: var(--nv-ring); border-radius: var(--nv-radius-sm);
	padding: .85rem 1rem; text-align: center;
}
.nv-calc-out b {
	display: block;
	font-family: var(--wp--preset--font-family--heading);
	font-size: clamp(1.1rem, 1rem + .6vw, 1.4rem); font-weight: 800;
	color: var(--wp--preset--color--win);
	font-variant-numeric: tabular-nums;
}
.nv-calc-out > div:first-child b { color: #fff; }
.nv-calc-out i {
	display: block; margin-top: .15rem; font-style: normal;
	font-size: .74rem; letter-spacing: .05em; text-transform: uppercase;
	color: var(--wp--preset--color--muted);
}
.nv-calc-out.is-invalid b { color: var(--wp--preset--color--muted); }
/* Word answers ("5 min – 48 timer") need a smaller face than money figures do. */
.nv-calc-out--text b { font-size: clamp(.92rem, .85rem + .32vw, 1.08rem); line-height: 1.35; }
.nv-calc-field i .nv-i { width: 1.05em; height: 1.05em; display: block; }
.nv-calc-foot { margin: .85rem 0 0; font-size: .76rem; color: var(--wp--preset--color--muted); }

/* ---- Predictions: headline figures ---------------------------------------- */
.nv-pstat {
	display: grid; grid-template-columns: repeat(4, minmax(0, 1fr));
	gap: .6rem; margin: 1.4rem 0;
}
@media (max-width: 720px) { .nv-pstat { grid-template-columns: repeat(2, 1fr); } }
.nv-pstat > div {
	background: var(--wp--preset--gradient--card);
	border: var(--nv-ring); border-radius: var(--nv-radius-sm);
	padding: .9rem 1rem; text-align: center;
}
.nv-pstat b {
	display: block;
	font-family: var(--wp--preset--font-family--heading);
	font-size: clamp(1.2rem, 1rem + .8vw, 1.6rem); font-weight: 800; color: #fff;
	font-variant-numeric: tabular-nums;
}
.nv-pstat i {
	display: block; margin-top: .1rem; font-style: normal;
	font-size: .72rem; letter-spacing: .06em; text-transform: uppercase;
	color: var(--wp--preset--color--muted);
}

/* count badge on the category tabs */
.nv-pex-tabs button em {
	font-style: normal; font-size: .74rem; font-weight: 700;
	padding: .05rem .4rem; border-radius: 999px;
	background: rgba(255, 255, 255, .1); color: rgba(255, 255, 255, .75);
}
.nv-pex-tabs button[aria-selected="true"] em { background: rgba(0, 0, 0, .28); color: #fff; }

/* ---- Predictions: annotated market card ----------------------------------- */
.nv-market {
	background: var(--wp--preset--gradient--card);
	border: var(--nv-ring); border-radius: var(--nv-radius);
	overflow: hidden; margin: 1.4rem 0;
}
.nv-market-head {
	display: flex; align-items: center; gap: .7rem;
	padding: .95rem 1.1rem;
	border-bottom: 1px solid rgba(255, 255, 255, .08);
}
.nv-market-ic {
	display: grid; place-items: center; flex: 0 0 auto;
	width: 2.1rem; height: 2.1rem; border-radius: 50%;
	color: #fff; background: linear-gradient(140deg, #f7931a, #b8690f);
}
.nv-market-head b {
	flex: 1 1 auto; font-family: var(--wp--preset--font-family--heading);
	font-size: .98rem; color: #fff;
}
.nv-market-tag {
	display: inline-flex; align-items: center; gap: .35rem; flex: 0 0 auto;
	font-size: .68rem; font-weight: 700; letter-spacing: .08em; text-transform: uppercase;
	color: var(--wp--preset--color--win);
}
.nv-market-tag.is-demo { color: var(--wp--preset--color--muted); }
.nv-market-tag i {
	width: .45rem; height: .45rem; border-radius: 50%;
	background: var(--wp--preset--color--win);
	box-shadow: 0 0 0 3px rgba(55, 214, 122, .2);
}
.nv-market-tbl { width: 100%; border-collapse: collapse; font-size: .88rem; }
.nv-market-tbl th {
	text-align: left; padding: .55rem 1.1rem;
	font-family: var(--wp--preset--font-family--heading);
	font-size: .68rem; font-weight: 700; letter-spacing: .07em; text-transform: uppercase;
	color: var(--wp--preset--color--muted);
	border-bottom: 1px solid rgba(255, 255, 255, .06);
}
.nv-market-tbl td {
	padding: .7rem 1.1rem; color: rgba(255, 255, 255, .88);
	border-bottom: 1px solid rgba(255, 255, 255, .05);
	font-variant-numeric: tabular-nums;
}
.nv-market-tbl tr:last-child td { border-bottom: 0; }
.nv-market-tbl th:not(:first-child), .nv-market-tbl td:not(:first-child) { text-align: right; }
.nv-market-tbl .is-yes { color: var(--wp--preset--color--win); font-weight: 700; }
.nv-market-tbl .is-no  { color: var(--wp--preset--color--primary); font-weight: 700; }
.nv-market-tbl .is-lock { color: var(--wp--preset--color--muted); }
.nv-market-foot {
	display: flex; justify-content: space-between; align-items: center; gap: 1rem;
	padding: .7rem 1.1rem;
	background: rgba(255, 255, 255, .03);
	font-size: .78rem; color: var(--wp--preset--color--muted);
}
.nv-market-clock {
	display: inline-flex; align-items: center; gap: .35rem;
	padding: .2rem .6rem; border-radius: 6px;
	background: rgba(255, 46, 143, .16); color: #fff;
	font-variant-numeric: tabular-nums; font-weight: 600;
}
.nv-market-clock .nv-i { width: .85rem; height: .85rem; }

/* auto-fit lands 6 how-to cards as 4 + 2, which leaves two dead cells.
   Pin the common counts to a layout that divides evenly. */
@media (min-width: 981px) {
	.nv-howto:has(> :nth-child(6):last-child),
	.nv-howto:has(> :nth-child(3):last-child) { grid-template-columns: repeat(3, minmax(0, 1fr)); }
	.nv-howto:has(> :nth-child(4):last-child),
	.nv-howto:has(> :nth-child(8):last-child) { grid-template-columns: repeat(4, minmax(0, 1fr)); }
	/* five or seven never divide — centre the short last row */
	.nv-howto:has(> :nth-child(5):last-child),
	.nv-howto:has(> :nth-child(7):last-child) {
		display: flex; flex-wrap: wrap; justify-content: center;
	}
	.nv-howto:has(> :nth-child(5):last-child) > *,
	.nv-howto:has(> :nth-child(7):last-child) > * { flex: 1 1 15rem; max-width: 22rem; }
}

/* market title: real English wording as it appears in the product, with a
   Norwegian gloss underneath — the platform has no Norwegian locale. */
.nv-market-q { flex: 1 1 auto; display: grid; gap: .1rem; }
.nv-market-q b { font-family: var(--wp--preset--font-family--heading); font-size: .98rem; color: #fff; }
.nv-market-tr { font-size: .78rem; color: var(--wp--preset--color--muted); font-style: italic; }

/* icons on labelled cards */
.nv-term b, .nv-howto-item b { display: flex; align-items: center; gap: .45rem; }
.nv-term b .nv-i, .nv-howto-item b .nv-i {
	flex: 0 0 auto; width: 1rem; height: 1rem;
	color: var(--wp--preset--color--primary);
}

/* provider rows: logo where we have one, monogram placeholder where we don't */
.nv-prov-cell { display: inline-flex; align-items: center; gap: .6rem; }
.nv-prov-cell img { width: 1.25rem; height: 1.25rem; object-fit: contain; flex: 0 0 auto; }
.nv-prov-cell b { font-weight: 500; color: inherit; }
.nv-pay-cell { display: inline-flex; align-items: center; gap: .6rem; }
.nv-pay-cell img {
	/* Every mark gets the same tile. The logos range from square coins to wide
	   wordmarks, so anything that only fixes the slot still leaves them ragged —
	   an identical plate is what makes the column read as a column. */
	box-sizing: border-box;
	flex: 0 0 2.9rem; width: 2.9rem; height: 2rem;
	padding: .22rem;
	border-radius: 7px;
	background: rgba(255, 255, 255, .06);
	border: 1px solid rgba(255, 255, 255, .09);
	object-fit: contain;
}
/* Bankovní převod nemá značkové logo, používá ikonu ze sprite — musí ale
   dostat úplně stejnou dlaždici jako loga, jinak se sloupec rozjede. */
.nv-pay-cell .nv-i {
	box-sizing: border-box;
	flex: 0 0 2.9rem; width: 2.9rem; height: 2rem;
	padding: .3rem;
	border-radius: 7px;
	background: rgba(255, 255, 255, .06);
	border: 1px solid rgba(255, 255, 255, .09);
}
.nv-pay-cell b { font-weight: 500; color: inherit; }
.nv-prov-mono {
	display: grid; place-items: center; flex: 0 0 auto;
	width: 1.25rem; height: 1.25rem; border-radius: 5px;
	font-family: var(--wp--preset--font-family--heading);
	font-size: .68rem; font-weight: 800;
	color: var(--wp--preset--color--muted);
	background: rgba(255, 255, 255, .07);
	border: 1px solid rgba(255, 255, 255, .1);
}

/* VIP tier cell */
.nv-tier { display: inline-flex; align-items: center; gap: .5rem; }
.nv-tier img { width: 1.15rem; height: 1.15rem; object-fit: contain; flex: 0 0 auto; }
.nv-tier b { font-weight: 500; color: inherit; }
tr.is-top .nv-tier b { color: var(--wp--preset--color--win); font-weight: 700; }

/* every table fills the content column and starts on the same left edge */


/* A buttons block sitting on its own between paragraphs is a section CTA, so it
   centres. Buttons inside cards, the header and the app-store row keep their
   own alignment because they are not direct children of the post content. */
.wp-block-post-content > .wp-block-buttons { justify-content: center; margin-block: 2rem; }

/* Blocks narrower than the content column are centred inside it — tables that
   size to their content, and the example market card. Prose stays flush left
   with the headings; only these self-sizing blocks centre. */
.nv-tbl { margin-inline: auto !important; }
.nv-tbl table { margin-inline: auto; }
.nv-colwrap { display: flex; justify-content: center; }

/* ---- Section illustration + text/image split ------------------------------ */
.nv-secimg {
	display: block; width: 100%; max-width: 38rem; height: auto;
	margin: 1.4rem auto 1.6rem;
	border-radius: var(--nv-radius);
	border: var(--nv-ring);
	object-fit: cover;
}
.nv-secimg.is-tall { max-width: 26rem; aspect-ratio: 16 / 10; object-position: center 22%; }

/* Section art comes in three native widths and one cap suited none of them.
   Where the art introduces a section it is now paired with that section's opening
   paragraph in .nv-bonus-lede below; these caps are the fallback for art that
   stands alone. */
.nv-secimg.is-wide { max-width: 63rem; }   /* 1004px banners  */
.nv-secimg.is-mid  { max-width: 52rem; }   /* 826px  banners  */

/* ---- Bonus lede: section art paired with its opening paragraph -------------
   A banner on its own line sat as an island in the middle of the column — too
   large, and detached from the text it belongs to. Pairing the two reads as a
   card, keeps the art at a sane size, and normalises three different source
   ratios to one shape. */
.nv-bonus-lede {
	display: grid;
	grid-template-columns: minmax(0, 21rem) 1fr;
	gap: clamp(1rem, 2.4vw, 1.75rem);
	align-items: start;
	margin: .7rem 0 1.5rem;
}
.nv-bonus-lede > a { display: block; }
.nv-bonus-lede img {
	display: block; width: 100%; height: auto; margin: 0;
	aspect-ratio: 614 / 392; object-fit: cover;
	border-radius: var(--nv-radius);
	border: var(--nv-ring);
}
.nv-bonus-lede p { margin: 0; }
@media (max-width: 720px) {
	.nv-bonus-lede { grid-template-columns: 1fr; gap: .9rem; }
}

/* Art that follows its own heading belongs to it. The default 1.4rem top margin
   plus the heading's own bottom margin left the two floating apart. */
h2 + .nv-imglink .nv-secimg,
h3 + .nv-imglink .nv-secimg,
h2 + .nv-secimg,
h3 + .nv-secimg { margin-top: .5rem; }


/* ---- Page-title spacing ---------------------------------------------------
   The H1 had no bottom margin of its own, so the gap under it came only from
   WP's 1.25rem blockGap — and .nv-lead cancelled even that with `margin: 0`,
   leaving the intro glued to the title. Giving the H1 its own bottom margin
   fixes both cases at once: adjacent margins collapse to the larger value, so
   this works whether the next block is a lead, a date badge or a paragraph. */
.wp-block-post-content > h1 { margin-bottom: 1.6rem; }
.wp-block-post-content > h1 + .nv-updated { margin-top: 0; }
.nv-updated + .nv-lead { margin-top: .4rem; }

/* The date pill is inline-flex, so on its own it lines up with the container
   edge rather than the content column. A block-level parent puts it back on
   the column, where it sits flush under the H1. */
.nv-metaline { margin: 0 0 1.3rem; }
.nv-metaline .nv-updated { margin-bottom: 0; }

/* ---- Two-column how-to (homepage account section) ------------------------- */
.nv-split2 {
	display: grid; grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 1rem; margin: 1.4rem 0;
}
@media (max-width: 860px) { .nv-split2 { grid-template-columns: 1fr; } }
.nv-split2-col {
	box-sizing: border-box; display: flex; flex-direction: column;
	background: var(--wp--preset--gradient--card);
	border: var(--nv-ring); border-radius: var(--nv-radius);
	padding: clamp(1.2rem, 1.8vw, 1.6rem);
}
.nv-split2-col h3 {
	display: flex; align-items: center; gap: .5rem;
	margin: 0 0 .9rem; font-size: 1.05rem; font-weight: 700;
}
.nv-split2-col h3 .nv-i { width: 1.1rem; height: 1.1rem; color: var(--wp--preset--color--primary); }
.nv-split2-col .nv-cat-tx { flex: 1 1 auto; margin-bottom: 1rem; }
.nv-split2-col .nv-btn { align-self: flex-start; margin-top: auto; }

.nv-numlist { counter-reset: nl; list-style: none; margin: 0 0 1rem; padding: 0; display: grid; gap: .6rem; }
.nv-numlist li {
	counter-increment: nl; position: relative; padding-left: 2rem;
	font-size: .9rem; line-height: 1.6; color: rgba(255, 255, 255, .84);
}
.nv-numlist li::before {
	content: counter(nl);
	position: absolute; left: 0; top: -.05rem;
	display: grid; place-items: center;
	width: 1.45rem; height: 1.45rem; border-radius: 50%;
	font-family: var(--wp--preset--font-family--heading);
	font-size: .74rem; font-weight: 800;
	color: var(--wp--preset--color--primary);
	background: rgba(255, 46, 143, .12);
	border: 1px solid rgba(255, 46, 143, .35);
}

/* ---- App page header: specs + stores beside the device shot --------------- */
.nv-apphead {
	display: grid; grid-template-columns: 1fr minmax(0, 15rem);
	gap: clamp(1.2rem, 3vw, 2.2rem); align-items: center;
	margin: 1.5rem 0 2rem;
}
@media (max-width: 820px) { .nv-apphead { grid-template-columns: 1fr; } }
.nv-apphead-tx { min-width: 0; }
.nv-apphead-tx .nv-appspecs { margin-top: 0; }
.nv-apphead-img {
	width: 100%; height: auto; display: block;
	filter: drop-shadow(0 26px 50px rgba(0, 0, 0, .55));
}
@media (max-width: 820px) {
	.nv-apphead-img { max-width: 13rem; margin-inline: auto; }
}

/* three-input calculator variant + native select styled like the inputs */
.nv-calc-in--3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
@media (max-width: 720px) { .nv-calc-in--3 { grid-template-columns: 1fr; } }
.nv-calc-field select {
	flex: 1 1 auto; width: 100%; min-width: 0;
	background: none; border: 0; outline: none; cursor: pointer;
	padding: .7rem .9rem;
	font-family: var(--wp--preset--font-family--heading);
	font-size: 1rem; font-weight: 700; color: #fff;
	appearance: none;
}
.nv-calc-field select option { background: var(--wp--preset--color--surface-2); color: #fff; }
.nv-calc .nv-formula { margin: 0 0 1.1rem; }

/* Game tile without artwork yet. We only put a game image on a tile when the
   image is actually that game — reusing another title's art misrepresents the
   catalogue. Titles still awaiting art get this branded placeholder instead. */
.nv-game--tba {
	background-image: none;
	background:
		radial-gradient(120% 90% at 30% 0%, rgba(108, 76, 255, .35), transparent 60%),
		var(--wp--preset--gradient--card);
}
.nv-game--tba::after {
	content: ""; position: absolute; inset: 0;
	background: radial-gradient(80% 60% at 50% 35%, rgba(255, 46, 143, .18), transparent 70%);
	pointer-events: none;
}
.nv-game--tba .nv-tba-mark {
	position: absolute; top: 50%; left: 50%;
	transform: translate(-50%, -60%);
	width: 2.6rem; height: 2.6rem;
	color: rgba(255, 255, 255, .28);
}
.nv-game--tba .nv-tba-mark .nv-i { width: 100%; height: 100%; }

/* provider mark on a how-to card, in place of the generic icon */
.nv-howto-item b .nv-howto-logo {
	flex: 0 0 auto; width: 1.15rem; height: 1.15rem;
	object-fit: contain;
}


/* ---- Tournament cards ----------------------------------------------------- */
.nv-tgrid {
	display: grid; gap: .7rem; margin: 1.5rem 0;
	/* The source artwork is only ~430px wide, so the tiles are kept narrow
	   enough that a 2x display never has to upscale them. */
	grid-template-columns: repeat(auto-fill, minmax(10.5rem, 1fr));
}
@media (max-width: 620px) { .nv-tgrid { grid-template-columns: repeat(2, 1fr); } }

.nv-tcard {
	position: relative; display: flex; flex-direction: column; justify-content: flex-end;
	aspect-ratio: 43 / 62; overflow: hidden;
	border-radius: var(--nv-radius); border: var(--nv-ring);
	background-size: cover; background-position: center top;
	text-decoration: none;
	transition: transform .18s ease, box-shadow .18s ease, border-color .18s ease;
}
.nv-tcard:hover {
	transform: translateY(-4px); text-decoration: none;
	border-color: rgba(255, 46, 143, .5); box-shadow: var(--nv-glow-pink);
}
.nv-tcard::after {
	content: ""; position: absolute; inset: 0;
	background: linear-gradient(to top, rgba(8, 6, 24, .96) 22%, rgba(8, 6, 24, .55) 48%, transparent 72%);
}
.nv-tcard-body { position: relative; z-index: 1; padding: .75rem .8rem .8rem; }
.nv-tcard-prov {
	display: inline-flex; align-items: center; gap: .35rem;
	font-size: .6rem; font-weight: 700; letter-spacing: .08em; text-transform: uppercase;
	color: var(--wp--preset--color--muted); margin-bottom: .25rem;
}
.nv-tcard-prov img { width: .75rem; height: .75rem; object-fit: contain; }
.nv-tcard b {
	display: block; font-family: var(--wp--preset--font-family--heading);
	font-size: .86rem; font-weight: 700; color: #fff; line-height: 1.25;
}
.nv-tcard-pool {
	display: block; margin-top: .3rem;
	font-family: var(--wp--preset--font-family--heading);
	font-size: .95rem; font-weight: 800;
	background: var(--wp--preset--gradient--brand);
	-webkit-background-clip: text; background-clip: text; color: transparent;
	font-variant-numeric: tabular-nums;
}
.nv-tcard-pool i { font-style: normal; font-size: .68rem; font-weight: 600; letter-spacing: .07em;
	text-transform: uppercase; color: var(--wp--preset--color--muted);
	-webkit-text-fill-color: var(--wp--preset--color--muted); display: block; margin-top: .1rem; }

/* Wide editorial banner — runs the full content column, no width cap. */
.nv-banner {
	/* Page-top banner. Without a cap the 1017px source was stretched to the 1280px
	   wide column — bigger than the original and dominating the whole first screen.
	   Capped at its native width and cropped a little shorter than 3.03:1, it still
	   reads as a hero strip without pushing the copy below the fold. The crop is
	   biased upward so the figure's head is never trimmed. */
	display: block; width: 100%; height: auto;
	max-width: 60rem;
	margin: 1.2rem auto 1.6rem;
	aspect-ratio: 1017 / 290;
	object-fit: cover;
	object-position: center 38%;
	border-radius: var(--nv-radius);
	border: var(--nv-ring);
}
@media (max-width: 640px) {
	.nv-banner { aspect-ratio: 16 / 10; }
}

/* ---- Wheel of Fortune (demo) ----------------------------------------------
   Modelled on the operator's wheel: separated wedges with rounded ends, a pale
   rim with gold studs on every boundary, teardrop pointer and a domed hub. */
.nv-wheel {
	display: grid; grid-template-columns: minmax(0, 26rem) 1fr;
	gap: clamp(1.2rem, 3vw, 2.6rem); align-items: center; margin: 1.8rem 0;
}
@media (max-width: 900px) { .nv-wheel { grid-template-columns: 1fr; justify-items: center; } }

.nv-wheel-stage { position: relative; width: 100%; max-width: 26rem; aspect-ratio: 1; }

.nv-wheel-ring {
	position: absolute; inset: 0; border-radius: 50%;
	background: linear-gradient(160deg, #fdfdff, #c9cbe0 45%, #8e90ad 60%, #eef0ff);
	box-shadow: 0 30px 70px -28px rgba(0, 0, 0, .95), inset 0 0 0 1px rgba(255, 255, 255, .5);
}
.nv-wheel-ring::after {
	content: ""; position: absolute; inset: 4.5%; border-radius: 50%;
	background: #0b0920;
	box-shadow: inset 0 0 22px rgba(0, 0, 0, .9);
}
.nv-wheel-studs { position: absolute; inset: 0; pointer-events: none; z-index: 2; }
.nv-wheel-studs span {
	position: absolute; inset: 0;
	transform: rotate(var(--a));
}
.nv-wheel-studs span::before {
	content: ""; position: absolute; left: 50%; top: 1.6%;
	width: .42rem; height: .42rem; margin-left: -.21rem;
	border-radius: 50%;
	background: radial-gradient(circle at 34% 30%, #fff6d5, #d8a53a 60%, #a97d24);
	box-shadow: 0 0 5px rgba(255, 210, 120, .9);
}

.nv-wheel-disc {
	position: absolute; inset: 5.5%;
	transition: transform 5.2s cubic-bezier(.1, .82, .14, 1);
	will-change: transform;
}
.nv-wheel-svg { width: 100%; height: 100%; display: block; }
.nv-wheel-svg path { filter: drop-shadow(0 2px 3px rgba(0, 0, 0, .45)); }
.nv-wheel-svg path.is-gold { stroke: #f5d98a; stroke-width: 4; }

.nv-wheel-lbl {
	position: absolute; inset: 0;
	display: flex; align-items: flex-start; justify-content: center;
	padding-top: 8%; transform: rotate(var(--a)); pointer-events: none;
}
.nv-wheel-lbl span { display: block; text-align: center; max-width: 40%;
	font-family: var(--wp--preset--font-family--heading); color: #fff;
	text-shadow: 0 2px 6px rgba(0, 0, 0, .8); }
.nv-wheel-lbl b { display: block; font-size: 1.25rem; font-weight: 800; line-height: 1; }
.nv-wheel-lbl i { display: block; font-style: normal; margin-top: .15rem;
	font-size: .55rem; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; opacity: .92; }

.nv-wheel-hub {
	position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%);
	width: 22%; height: 22%; border-radius: 50%; z-index: 3;
	display: grid; place-items: center;
	background: radial-gradient(circle at 32% 26%, #4b3aa0, #171338 72%);
	box-shadow: 0 12px 30px -10px #000, inset 0 3px 10px rgba(255, 255, 255, .25),
		0 0 0 4px rgba(11, 9, 32, .95);
}
.nv-wheel-hub img { width: 60%; height: auto; }

.nv-wheel-pin {
	position: absolute; left: 50%; top: -3%; transform: translateX(-50%); z-index: 4;
	width: 1.7rem; height: 2.3rem;
	background: linear-gradient(180deg, #fdfdff, #c9cbe0 55%, #9b9db8);
	clip-path: polygon(50% 100%, 8% 46%, 8% 20%, 30% 2%, 70% 2%, 92% 20%, 92% 46%);
	filter: drop-shadow(0 5px 10px rgba(0, 0, 0, .75));
}
.nv-wheel-pin::after {
	content: ""; position: absolute; left: 50%; top: 22%; transform: translateX(-50%);
	width: 46%; height: 34%; border-radius: 50%;
	background: radial-gradient(circle at 34% 28%, #f0e6ff, #8b6fd8 60%, #5b3fa8);
}

/* the croupier stands beside the wheel, as on the operator's page */
/* The wedge labels are the whole disc rotated, so each one's bounding box is
   ~1.4× the disc and pushed the page sideways on narrow screens. Clip on the
   disc, not the stage — clipping the stage also cut the croupier in half. */
.nv-wheel-disc { overflow: hidden; }

.nv-wheel-figure {
	position: absolute; left: -34%; bottom: -4%;
	width: 62%; height: auto; z-index: 1; pointer-events: none;
	filter: drop-shadow(0 22px 40px rgba(0, 0, 0, .7));
}
@media (max-width: 1100px) { .nv-wheel-figure { display: none; } }

.nv-wheel-side { min-width: 0; width: 100%; }
.nv-wheel-tabs { display: flex; gap: .4rem; margin-bottom: 1rem; }
.nv-wheel-tabs button {
	flex: 0 0 auto; padding: .5rem 1.1rem; border-radius: 999px; cursor: pointer;
	font-family: var(--wp--preset--font-family--heading); font-size: .84rem; font-weight: 700;
	color: rgba(255, 255, 255, .8); background: var(--wp--preset--color--surface);
	border: var(--nv-ring); transition: background .16s ease, color .16s ease, border-color .16s ease;
}
.nv-wheel-tabs button[aria-selected="true"] {
	color: #fff; border-color: transparent; background: var(--wp--preset--gradient--brand);
}
.nv-wheel-list { list-style: none; margin: 0 0 1rem; padding: 0;
	display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .3rem .9rem; }
.nv-wheel-list li { display: flex; align-items: center; gap: .5rem;
	font-size: .84rem; color: rgba(255, 255, 255, .84); }
.nv-wheel-list i { width: .6rem; height: .6rem; border-radius: 2px; flex: 0 0 auto; }
.nv-wheel-out {
	min-height: 3.4rem; margin: 0 0 1rem; padding: .85rem 1rem;
	border-radius: var(--nv-radius-sm); border: var(--nv-ring);
	background: var(--wp--preset--color--surface);
	font-size: .88rem; line-height: 1.55; color: rgba(255, 255, 255, .86);
}
.nv-wheel-out b { color: var(--wp--preset--color--win); }
.nv-wheel-cta { display: flex; flex-wrap: wrap; gap: .6rem; align-items: center; }
.nv-wheel-note { margin: .9rem 0 0; font-size: .76rem; line-height: 1.6; color: var(--wp--preset--color--muted); }
@media (prefers-reduced-motion: reduce) { .nv-wheel-disc { transition: none; } }

/* market grid + clickable odds cells */
.nv-mgrid { display: grid; gap: .9rem; grid-template-columns: repeat(2, minmax(0, 1fr)); margin: 1.5rem 0; }
@media (max-width: 900px) { .nv-mgrid { grid-template-columns: 1fr; } }
.nv-mgrid .nv-market { margin: 0; }
.nv-mgrid .nv-market-q b { font-size: .88rem; }
.nv-mgrid .nv-market-tbl { font-size: .82rem; }
.nv-mgrid .nv-market-tbl th, .nv-mgrid .nv-market-tbl td { padding: .5rem .85rem; }

.nv-mo {
	font: inherit; font-weight: 700; cursor: pointer;
	padding: .18rem .5rem; border-radius: 6px;
	background: rgba(255, 255, 255, .05); border: 1px solid transparent;
	font-variant-numeric: tabular-nums;
	transition: background .14s ease, border-color .14s ease, transform .14s ease;
}
.nv-mo.is-yes { color: var(--wp--preset--color--win); }
.nv-mo.is-no  { color: var(--wp--preset--color--primary); }
.nv-mo:hover  { background: rgba(255, 255, 255, .12); transform: translateY(-1px); }
.nv-mo.is-picked { border-color: currentColor; background: rgba(255, 255, 255, .14); }
.nv-market-tbl .is-lock { color: var(--wp--preset--color--muted); }

/* platform icon in the install headings */
.nv-oshead { display: flex; align-items: center; gap: .55rem; }
.nv-oshead .nv-i {
	width: 1.5rem; height: 1.5rem; flex: 0 0 auto;
	padding: .3rem; box-sizing: content-box;
	border-radius: 9px; color: #fff;
	background: linear-gradient(140deg, rgba(255, 46, 143, .9), rgba(178, 60, 255, .85));
	box-shadow: 0 8px 20px -12px rgba(255, 46, 143, .9);
}

/* The wheel doubles as the spin control. An outline follows the ELEMENT's
   border-radius, not its own — without a round stage the focus ring was drawn
   as a square. Mouse clicks get no ring at all; keyboard focus gets a circular
   one in the brand colour. */
.nv-wheel-stage[data-wheel-hit] { cursor: pointer; border-radius: 50%; }
.nv-wheel-stage[data-wheel-hit]:focus { outline: none; }
.nv-wheel-stage[data-wheel-hit]:focus-visible {
	outline: 2px solid var(--wp--preset--color--primary);
	outline-offset: 8px;
}
.nv-wheel-stage[data-wheel-hit]:hover .nv-wheel-ring { filter: brightness(1.06); }
.nv-wheel.is-spinning .nv-wheel-stage { cursor: default; }

/* linked responsible-gambling marks keep the plain look but gain a hover cue */
.nv-badges--rg a { display: inline-flex; line-height: 0; }
.nv-badges--rg a img { transition: opacity .15s ease; }
.nv-badges--rg a:hover img { opacity: 1; }

/* ---- Breadcrumbs ---------------------------------------------------------- */
.nv-crumbs { margin: 0 0 1.1rem; font-size: .82rem; }
.nv-crumbs ol {
	display: flex; flex-wrap: wrap; align-items: center; gap: .1rem .55rem;
	list-style: none; margin: 0; padding: 0;
}
.nv-crumbs li { display: flex; align-items: center; gap: .55rem; }
.nv-crumbs li + li::before {
	content: "/"; color: var(--wp--preset--color--border);
}
.nv-crumbs a { color: var(--wp--preset--color--muted); text-decoration: none; }
.nv-crumbs a:hover { color: #fff; text-decoration: underline; }
.nv-crumbs [aria-current] { color: var(--wp--preset--color--muted); }

/* ---- 404 ------------------------------------------------------------------ */
.nv-404 { text-align: center; padding: clamp(1.5rem, 5vw, 3.5rem) 0 clamp(1rem, 3vw, 2rem); }
.nv-404-code {
	display: block;
	font-family: var(--wp--preset--font-family--heading);
	font-size: clamp(5rem, 18vw, 11rem); font-weight: 800; line-height: .9;
	background: linear-gradient(135deg, var(--wp--preset--color--primary), var(--wp--preset--color--accent));
	-webkit-background-clip: text; background-clip: text; color: transparent;
	opacity: .9;
}
.nv-404 h1 { margin: .4rem 0 .8rem; }
.nv-404 .nv-lead { margin-left: auto; margin-right: auto; max-width: 44rem; border-left: 0; padding-left: 0; }
.nv-404 .nv-center { display: flex; flex-wrap: wrap; gap: .7rem; justify-content: center; margin-top: 1.6rem; }
a.nv-usp { text-decoration: none; color: inherit; display: block; }
a.nv-usp:hover { border-color: rgba(255, 46, 143, .45); transform: translateY(-2px); }

/* ---- Mobile tap targets --------------------------------------------------- */
/* Core's nav toggle ships at 24px. Apple and Android both ask for ~44–48px,
   and this is the only way into the menu on a phone. */
/* Size only — never touch `display`. Core hides the open button on desktop with
   a display rule, and forcing display here puts a hamburger on wide screens. */
.wp-block-navigation__responsive-container-open,
.wp-block-navigation__responsive-container-close {
	width: 44px; height: 44px;
	align-items: center; justify-content: center;
	padding: 0;
}
.wp-block-navigation__responsive-container-open svg,
.wp-block-navigation__responsive-container-close svg { width: 26px; height: 26px; }

@media (max-width: 781px) {
	.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item__content {
		display: block; padding: .7rem 0; min-height: 44px;
	}
	.wp-block-navigation__responsive-container.is-menu-open .nv-header-cta { margin-top: .6rem; }
	.wp-block-navigation__responsive-container.is-menu-open .nv-header-cta .wp-block-button__link {
		display: block; text-align: center; padding: .85rem 1.4rem;
	}
}

/* ---- Related pages -------------------------------------------------------- */
.nv-rel {
	display: grid; gap: .8rem;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	margin: 1rem 0 0;
}
@media (max-width: 860px) { .nv-rel { grid-template-columns: 1fr; } }
.nv-rel-card {
	display: grid; grid-template-columns: 1fr auto; align-items: center;
	gap: .2rem 1rem;
	background: var(--wp--preset--color--surface);
	border: var(--nv-ring); border-radius: var(--nv-radius-sm);
	padding: 1rem 1.15rem; text-decoration: none; color: inherit;
	transition: transform .16s ease, border-color .16s ease;
}
.nv-rel-card:hover { transform: translateY(-2px); border-color: rgba(255, 46, 143, .45); }
.nv-rel-card b { font-family: var(--wp--preset--font-family--heading); font-size: 1rem; }
.nv-rel-card span { grid-column: 1; font-size: .84rem; color: var(--wp--preset--color--muted); }
.nv-rel-card .nv-i { grid-row: 1 / span 2; grid-column: 2; width: 1.1rem; height: 1.1rem; color: var(--wp--preset--color--primary); }

/* ---- Consent banner ------------------------------------------------------- */
.nv-consent {
	position: fixed; inset: auto 0 0 0; z-index: 9999;
	display: flex; justify-content: center;
	padding: clamp(.6rem, 2vw, 1.2rem);
	background: linear-gradient(to top, rgba(8, 7, 20, .92), rgba(8, 7, 20, 0));
	animation: nv-consent-in .28s ease both;
}
@keyframes nv-consent-in { from { transform: translateY(14px); opacity: 0 } }
@media (prefers-reduced-motion: reduce) { .nv-consent { animation: none } }

.nv-consent-box {
	width: min(62rem, 100%);
	background: var(--wp--preset--color--surface);
	border: var(--nv-ring); border-radius: var(--nv-radius);
	box-shadow: 0 30px 70px -24px rgba(0, 0, 0, .9);
	padding: clamp(.9rem, 2.2vw, 1.25rem) clamp(1rem, 2.5vw, 1.4rem);
	max-height: 80vh; overflow-y: auto;
}
.nv-consent-h {
	margin: 0;
	font-family: var(--wp--preset--font-family--heading);
	font-size: clamp(1rem, .95rem + .35vw, 1.15rem); font-weight: 800; color: #fff;
}
.nv-consent-tx { margin: 0; font-size: .84rem; line-height: 1.5; color: var(--wp--preset--color--muted); }
.nv-consent-tx a { color: var(--wp--preset--color--primary); }

/* An author `display` beats the UA rule behind [hidden], so the panel stayed
   open however hard the JS hid it. Collapsed is the default state. */
.nv-consent-prefs { margin-top: 1rem; display: grid; gap: .5rem; }
.nv-consent-prefs[hidden] { display: none; }
.nv-consent-cat {
	background: var(--wp--preset--color--base);
	border: var(--nv-ring); border-radius: var(--nv-radius-sm);
	padding: .55rem .8rem;
}
.nv-consent-cat label { display: flex; gap: .7rem; align-items: flex-start; cursor: pointer; }
.nv-consent-cat input { margin-top: .25rem; width: 1.05rem; height: 1.05rem; accent-color: var(--wp--preset--color--primary); flex: 0 0 auto; }
.nv-consent-cat input:disabled { opacity: .55; cursor: not-allowed; }
.nv-consent-cat b { display: block; font-size: .9rem; color: #fff; }
.nv-consent-cat b i { font-style: normal; font-weight: 500; color: var(--wp--preset--color--muted); font-size: .8rem; }
.nv-consent-cat em { display: block; margin-top: .15rem; font-style: normal; font-size: .8rem; line-height: 1.5; color: var(--wp--preset--color--muted); }

.nv-consent-acts { display: flex; flex-wrap: wrap; align-items: center; gap: .5rem; margin-top: .75rem; }

/* Wide screens get a single row: message left, actions right. */
@media (min-width: 900px) {
	.nv-consent-box { display: flex; align-items: center; gap: 1.6rem; }
	.nv-consent-head { flex: 1 1 auto; min-width: 0; }
	.nv-consent-acts { margin-top: 0; flex: 0 0 auto; flex-wrap: nowrap; }
	.nv-consent-acts .nv-btn { flex: 0 0 auto; white-space: nowrap; }
	.nv-consent-box.is-open { display: block; }
	.nv-consent-box.is-open .nv-consent-acts { margin-top: .8rem; }
}
.nv-consent-acts .nv-btn { flex: 1 1 10rem; justify-content: center; min-height: 44px; padding-block: .6rem; }
.nv-consent-link {
	flex: 0 0 auto; margin-left: auto;
	background: none; border: 0; cursor: pointer;
	font-family: inherit; font-size: .85rem; font-weight: 600;
	color: var(--wp--preset--color--muted); text-decoration: underline;
	padding: .6rem .3rem; min-height: 44px;
}
.nv-consent-link:hover { color: #fff; }
@media (max-width: 560px) {
	.nv-consent-acts .nv-btn { flex: 1 1 100%; }
	.nv-consent-link { margin-left: 0; width: 100%; text-align: center; }
}
.nv-foot-consent {
	display: inline-block; padding: .25rem 0;
	color: var(--wp--preset--color--muted); font-size: .88rem; text-decoration: none;
}
.nv-foot-consent:hover { color: #fff; text-decoration: underline; }
/* Reject must not read as the weaker option: same size, same solidity, same
   position weight — only the colour differs. */
.nv-consent-acts .nv-btn--ghost {
	background: var(--wp--preset--color--surface-2);
	border-color: rgba(255, 255, 255, .22);
	color: #fff;
}
.nv-consent-acts .nv-btn--ghost:hover { background: var(--wp--preset--color--border); }

/* 44px is the touch minimum; a mouse does not need it, so the bar gets a lighter
   button on wide screens. Must come last — the base rule above sets 44px. */
@media (min-width: 900px) {
	.nv-consent .nv-consent-acts .nv-btn {
		min-height: 34px; padding: .38rem 1rem; font-size: .82rem;
	}
	.nv-consent .nv-consent-link { min-height: 34px; padding: .3rem .2rem; font-size: .79rem; }
}

/* Promo artwork is clickable. The wrapper must not introduce a box of its own —
   the images carry their own width, margins and negative offsets. */
.nv-imglink { display: contents; }
.nv-imglink img { cursor: pointer; transition: filter .16s ease, transform .16s ease; }
.nv-imglink:hover img { filter: brightness(1.06); }
.nv-imglink:focus-visible img { outline: 2px solid var(--wp--preset--color--primary); outline-offset: 3px; }

/* ---- CTA without a destination yet -----------------------------------------
   The operator's tracking URL has not been supplied, so these render with no
   href and are not links. They must still LOOK exactly like the finished design
   — an earlier version dimmed them with opacity/saturate to flag unwired CTAs to
   the team, which also hit the game tiles and washed out whole sections. Which
   CTAs are unwired belongs in the README, not on the page. Only the cursor
   changes, because a pointer on a non-link is a lie. */
[data-nv-cta-pending] {
	cursor: default;
}
