/* ========================================================================= */

:root {
	--rvz-maxw: 1200px;
	/* Plate border alphas here and throughout this file are set by plateedge_rpb.py —
	   see that script for why they were doubled (every plate composited to a 1.26:1
	   rim and read as an unbordered block of text) and for why the target is
	   perceivability rather than the 3:1 of WCAG 1.4.11, which does not apply while
	   every plate is identified by its own label at 14.8-18:1. Do not hand-tune one of
	   these in isolation: the custom properties cover only .rvz-card/.rvz-step/
	   .rvz-feature/.rvz-review/.rvz-compare, and every other plate carries its own
	   literal, so a lone edit moves five components and leaves sixty looking flat. */
	--rvz-card-border: 1px solid rgba(245, 239, 246, .24);
	--rvz-card-border-strong: 1px solid rgba(245, 239, 246, .34);
	--rvz-hairline: 1px solid rgba(255, 255, 255, .12);
}

/* ---- Base canvas & background chrome-soft ------------------------------------ */
body {
	background-color: var(--wp--preset--color--base);
	-webkit-font-smoothing: antialiased;
	text-rendering: optimizeLegibility;
	/* clip (not hidden) prevents sideways scroll without creating a scroll
	   container that would break the sticky header */
	overflow-x: clip;
}

/* Front-end only: the ambient blue wash (re-shaped in the identity layer). */
.wp-site-blocks {
	position: relative;
}
.wp-site-blocks::before {
	content: "";
	position: fixed;
	inset: 0;
	z-index: 0;
	pointer-events: none;
	background:
		radial-gradient(1200px 600px at 78% -8%, rgba(165, 41, 174, .16), transparent 60%),
		radial-gradient(900px 500px at 12% 4%, rgba(245, 239, 246, .08), transparent 55%);
}
.wp-site-blocks > * {
	position: relative;
	z-index: 1;
}

::selection {
	background: rgba(211, 196, 212, .3);
	color: #fff;
}

img {
	max-width: 100%;
	height: auto;
}

/* ---- Reusable section rhythm ------------------------------------------ */
.rvz-section {
	padding-top: clamp(40px, 6vw, 56px);
	padding-bottom: clamp(16px, 3vw, 24px);
}

/* ---- Eyebrow / labels -------------------------------------------------- */
.rvz-eyebrow {
	font-size: 13px;
	font-weight: 700;
	letter-spacing: 1.4px;
	text-transform: uppercase;
	color: var(--wp--preset--color--jewel-lit);
}

/* ---- Live / license badge --------------------------------------------- */
.rvz-badge {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	padding: 6px 13px;
	border-radius: 0;
	border: 1px solid rgba(211, 196, 212, .28);
	background: rgba(245, 239, 246, .06);
	font-size: 12.5px;
	font-weight: 600;
	letter-spacing: .4px;
	color: var(--wp--preset--color--chrome);
}
.rvz-badge::before {
	content: "";
	width: 7px;
	height: 7px;
	border-radius: 50%;
	background: var(--wp--preset--color--cyan);
	box-shadow: 0 0 8px var(--wp--preset--color--cyan);
}

/* ---- Cards ------------------------------------------------------------- */
.rvz-card,
.rvz-card-raised {
	border-radius: 0;
	background: var(--wp--preset--gradient--card);
	border: var(--rvz-card-border);
}
.rvz-card-raised {
	background: var(--wp--preset--gradient--card-raised);
	border: var(--rvz-card-border-strong);
	box-shadow: var(--wp--preset--shadow--card);
}

/* ---- Buttons ----------------------------------------------------------- */
.wp-block-button.rvz-btn-outline .wp-block-button__link,
.wp-block-button__link.rvz-btn-outline {
	background: rgba(255, 255, 255, .02) !important;
	color: var(--wp--preset--color--contrast) !important;
	border: 1px solid rgba(211, 196, 212, .3);
	box-shadow: none;
}
.wp-block-button.rvz-btn-outline .wp-block-button__link:hover {
	border-color: var(--wp--preset--color--chrome);
	color: var(--wp--preset--color--chrome-soft) !important;
}
/* Copper buttons: explicit gradient (theme.json color.background renders a
   gradient token as a flat colour, so we set the real gradient here). */
.wp-block-button:not(.rvz-btn-outline) > .wp-block-button__link {
	background: var(--wp--preset--gradient--chrome) !important;
	color: var(--wp--preset--color--ink) !important;
	border: none;
	box-shadow: var(--wp--preset--shadow--chrome);
}
.wp-block-button:not(.rvz-btn-outline) > .wp-block-button__link:hover { filter: brightness(1.05); }
/* keep button labels on one line (fixes "Giri / ş" wrapping in the header) */
.wp-block-button__link { white-space: nowrap; }
/* button sizing by context (kept out of block attrs so markup stays valid) */
.rvz-hero .wp-block-buttons .wp-block-button__link { padding: 15px 30px; font-size: 16px; }
.rvz-header .wp-block-button__link { padding: 10px 16px; font-size: 14px; }
.rvz-flame-text { background: linear-gradient(120deg, #EBDEED, #A529AE); -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent; color: #8A1C92; }
.wp-block-separator.rvz-sep { border: none; height: 1px; background: rgba(245, 239, 246, .12); opacity: 1; max-width: none; }

/* ---- Hero -------------------------------------------------------------- */
.rvz-hero {
	padding-top: clamp(36px, 6vw, 64px);
}
.rvz-hero__art img {
	border-radius: 0;
	border: 1px solid rgba(245, 239, 246, .34);
	box-shadow: var(--wp--preset--shadow--soft);
	aspect-ratio: 4 / 3;
	object-fit: cover;
	width: 100%;
}
.rvz-stats {
	gap: 26px 32px;
}
.rvz-stat__num {
	font-family: var(--wp--preset--font-family--heading);
	font-weight: 400;
	font-size: 26px;
	color: var(--wp--preset--color--chrome);
	line-height: 1;
}
.rvz-stat__label {
	font-size: 12.5px;
	color: var(--wp--preset--color--dim);
	font-weight: 600;
}

/* ---- Hero trust / payments row ---------------------------------------- */
/* Sits under the stats in the home hero so the (shorter) text column fills
   more of the height next to the tall image + offer card, killing the void
   that appeared when the columns were vertically centred. */
.rvz-trustrow {
	gap: 10px;
	margin-top: 24px;
	align-items: center;
}
.rvz-trust {
	display: inline-flex;
	align-items: center;
	gap: 7px;
	padding: 8px 13px;
	border-radius: 0;
	background: rgba(255, 255, 255, .03);
	border: 1px solid rgba(245, 239, 246, .28);
	font-size: 12.5px;
	font-weight: 600;
	color: var(--wp--preset--color--muted);
	white-space: nowrap;
}
.rvz-trust b { color: var(--wp--preset--color--contrast); font-weight: 700; }

/* ---- Bonus offer card -------------------------------------------------- */
.rvz-offer {
	position: relative;
	overflow: hidden;
	border-radius: 0;
	padding: 34px 30px;
	background: var(--wp--preset--gradient--card-raised);
	border: var(--rvz-card-border-strong);
	box-shadow: var(--wp--preset--shadow--card);
}
.rvz-offer::after {
	content: "";
	position: absolute;
	inset: 0;
	border-radius: 0;
	pointer-events: none;
	background: radial-gradient(400px 200px at 80% 0%, rgba(165, 41, 174, .22), transparent 65%);
}
.rvz-offer > * { position: relative; z-index: 1; }
.rvz-offer__amount {
	font-family: var(--wp--preset--font-family--heading);
	font-weight: 400;
	font-size: 46px;
	line-height: 1;
	color: var(--wp--preset--color--heading);
}
.rvz-offer__row {
	display: flex;
	justify-content: space-between;
	gap: 12px;
	font-size: 14px;
	padding: 9px 0;
	border-bottom: var(--rvz-hairline);
}
.rvz-offer__row span:first-child { color: var(--wp--preset--color--muted); }
.rvz-offer__row span:last-child  { color: var(--wp--preset--color--contrast); font-weight: 700; }

/* Floating animation (respect reduced motion) */
@keyframes rvz-float { 0%,100% { transform: translateY(0); } 50% { transform: translateY(-10px); } }
.rvz-float { animation: rvz-float 6s ease-in-out infinite; }
@media (prefers-reduced-motion: reduce) { .rvz-float { animation: none; } }

/* ---- Quick links ------------------------------------------------------- */
.rvz-quicklink {
	display: flex;
	flex-direction: column;
	gap: 8px;
	padding: 22px 18px;
	border-radius: 0;
	background: var(--wp--preset--gradient--card);
	border: var(--rvz-card-border);
	transition: transform .18s ease, border-color .18s ease;
}
.rvz-quicklink:hover { transform: translateY(-3px); border-color: rgba(211, 196, 212, .35); }
.rvz-quicklink__icon { font-size: 26px; }
.rvz-quicklink__title { font-size: 15.5px; font-weight: 700; color: var(--wp--preset--color--contrast); }
.rvz-quicklink__sub { font-size: 12.5px; color: var(--wp--preset--color--dim); }

/* ---- Game cards -------------------------------------------------------- */
.rvz-game {
	border-radius: 0;
	overflow: hidden;
	background: var(--wp--preset--color--surface);
	border: 1px solid rgba(245, 239, 246, .20);
	transition: transform .18s ease, border-color .18s ease;
}
.rvz-game:hover { transform: translateY(-4px); border-color: rgba(211, 196, 212, .3); }
.rvz-game__media {
	position: relative;
	aspect-ratio: 3 / 4;
	overflow: hidden;
}
.rvz-game__media img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.rvz-game__body { padding: 12px 13px; }
.rvz-game__title {
	font-size: 14px; font-weight: 700; color: var(--wp--preset--color--contrast);
	/* Wrap to two lines instead of ellipsing: at 360px the grid tracks are ~150px
	   and titles like "Mini Roulette" were being truncated with no way to read them. */
	line-height: 1.25;
	display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical;
	overflow: hidden;
}
.rvz-game__meta { display: flex; justify-content: space-between; align-items: center; margin-top: 8px; }
.rvz-game__provider { font-size: 11.5px; color: var(--wp--preset--color--dim); }
.rvz-game__play {
	/* Tap target: the 5px/12px pill rendered ~22px tall — under the 44px minimum.
	   Sized here rather than per-card so every game grid inherits the fix. */
	font-size: 12.5px; font-weight: 700; color: var(--wp--preset--color--ink);
	background: var(--wp--preset--gradient--chrome); padding: 10px 16px; border-radius: 0;
	display: inline-flex; align-items: center; justify-content: center;
	min-height: 44px; text-decoration: none;
	/* Owns its own top gap so the game cards don't each repeat an inline style
	   (18 identical style="" attributes were a network footprint tell). */
	margin-top: 10px;
}
.rvz-tag {
	position: absolute; top: 9px; left: 9px; z-index: 2;
	padding: 3px 9px; border-radius: 0; font-size: 10px; font-weight: 700; letter-spacing: .5px;
}
/* Crash-red labels carry white ink, so the background has to be the DEEP red:
   #FFFFFF on #F2AF88 is 3.03:1 (fails AA at 10px) while #FFFFFF on #1B1D3C is
   6.5:1. --wp--preset--color--warn stays reserved for red TEXT on graphite. */
:root { --rvz-hot: #631469; }
.rvz-tag--hot { background: var(--rvz-hot); color: #FFFFFF; }
.rvz-tag--jackpot { background: var(--wp--preset--gradient--chrome); color: var(--wp--preset--color--ink); }

/* ---- Filter chips ------------------------------------------------------ */
.rvz-chips .wp-block-button__link {
	padding: 9px 16px; border-radius: 0; font-size: 13.5px; font-weight: 700;
	background: transparent !important; color: var(--wp--preset--color--muted) !important;
	border: 1px solid rgba(245, 239, 246, .28); box-shadow: none;
}
.rvz-chips .wp-block-button.is-active .wp-block-button__link,
.rvz-chips .wp-block-button:first-child .wp-block-button__link {
	background: rgba(245, 239, 246, .12) !important; color: var(--wp--preset--color--chrome) !important;
	border-color: rgba(211, 196, 212, .4);
}

/* ---- Feature cards ----------------------------------------------------- */
.rvz-feature { padding: 26px 24px; border-radius: 0; background: var(--wp--preset--gradient--card); border: var(--rvz-card-border); }
.rvz-feature__icon {
	width: 48px; height: 48px; border-radius: 0; background: rgba(245, 239, 246, .1);
	display: flex; align-items: center; justify-content: center; font-size: 24px; margin-bottom: 16px;
}
.rvz-feature__title { font-size: 17px; font-weight: 700; color: var(--wp--preset--color--contrast); margin-bottom: 7px; }
.rvz-feature__text { font-size: 14px; line-height: 1.55; color: var(--wp--preset--color--muted); }

/* ---- App download ------------------------------------------------------ */
.rvz-app {
	position: relative; overflow: hidden;
	border-radius: 0; padding: clamp(28px, 4vw, 44px);
	background: var(--wp--preset--gradient--card-raised);
	border: 1px solid rgba(245, 239, 246, .32);
}
.rvz-app::after {
	content: ""; position: absolute; inset: 0; pointer-events: none;
	background: radial-gradient(500px 300px at 90% 50%, rgba(165, 41, 174, .16), transparent 60%);
}
.rvz-app > * { position: relative; z-index: 1; }
.rvz-app__art img { border-radius: 0; border: 1px solid rgba(245, 239, 246, .32); width: 100%; }
.rvz-store {
	display: inline-flex; align-items: center; gap: 10px; padding: 13px 22px; border-radius: 0;
	background: rgba(255, 255, 255, .05); border: 1px solid rgba(211, 196, 212, .25);
	font-weight: 700; color: var(--wp--preset--color--contrast);
}
.rvz-store:hover { border-color: var(--wp--preset--color--chrome); color: var(--wp--preset--color--chrome-soft); }

/* ---- Payments ---------------------------------------------------------- */
.rvz-pay {
	height: 64px; border-radius: 0; background: var(--wp--preset--color--surface);
	border: 1px solid rgba(245, 239, 246, .20); display: flex; align-items: center; justify-content: center;
	font-weight: 700; font-size: 14px; color: #EBDEED;
}

/* ---- Steps ------------------------------------------------------------- */
.rvz-step { padding: 28px 24px; border-radius: 0; background: var(--wp--preset--gradient--card); border: var(--rvz-card-border); }
.rvz-step__num { font-family: var(--wp--preset--font-family--heading); font-weight: 400; font-size: 40px; color: rgba(211, 196, 212, .35); line-height: 1; margin-bottom: 14px; }
.rvz-step__title { font-size: 18px; font-weight: 700; color: var(--wp--preset--color--contrast); margin-bottom: 7px; }
.rvz-step__text { font-size: 14px; line-height: 1.55; color: var(--wp--preset--color--muted); }

/* ---- Reviews & comparison --------------------------------------------- */
.rvz-review { padding: 20px 22px; border-radius: 0; background: var(--wp--preset--gradient--card); border: var(--rvz-card-border); }
.rvz-avatar {
	width: 34px; height: 34px; border-radius: 50%; flex: 0 0 auto;
	/* `chrome`, not `jewel`: the jewel gradient runs light->dark and a monogram on it is
	   illegible at one end whichever ink you choose. chrome is light at every stop. */
	background: var(--wp--preset--gradient--chrome);
	display: flex; align-items: center; justify-content: center; font-weight: 700; font-size: 14px; color: var(--wp--preset--color--ink);
}
.rvz-stars { color: var(--wp--preset--color--chrome); font-size: 13px; letter-spacing: 1px; }
.rvz-rating-pill {
	padding: 6px 12px; border-radius: 0; background: rgba(165, 41, 174, .12);
	color: var(--wp--preset--color--cyan-soft); font-size: 13px; font-weight: 700;
}
/* top clears the sticky header (topbar 34 + bar 74 + 12 breathing room). */
.rvz-compare { padding: 28px 26px; border-radius: 0; background: var(--wp--preset--gradient--card-raised); border: var(--rvz-card-border-strong); position: sticky; top: 124px; }
.rvz-compare__row { display: flex; justify-content: space-between; gap: 12px; font-size: 13.5px; padding: 8px 0; border-bottom: var(--rvz-hairline); }
.rvz-compare__row span:first-child { color: var(--wp--preset--color--muted); }
.rvz-compare__row span:last-child { color: var(--wp--preset--color--cyan-soft); font-weight: 700; }

/* ---- Blog cards -------------------------------------------------------- */
.rvz-post { border-radius: 0; overflow: hidden; background: var(--wp--preset--color--surface); border: var(--rvz-card-border); display: block; transition: transform .18s ease, border-color .18s ease; }
.rvz-post:hover { transform: translateY(-4px); border-color: rgba(211, 196, 212, .3); }
.rvz-post__cover { aspect-ratio: 16 / 9; overflow: hidden; }
.rvz-post__cover img { width: 100%; height: 100%; object-fit: cover; }
.rvz-post__body { padding: 18px 20px; }
.rvz-post__cat { font-size: 12px; font-weight: 700; color: var(--wp--preset--color--jewel-lit); }
.rvz-post__title { font-size: 16px; font-weight: 700; color: var(--wp--preset--color--contrast); line-height: 1.35; margin: 8px 0 6px; }
.rvz-post__date { font-size: 12.5px; color: var(--wp--preset--color--dim); }

/* ---- FAQ (native <details>) ------------------------------------------- */
.rvz-faq { border-radius: 0; background: var(--wp--preset--gradient--card); border: 1px solid rgba(245, 239, 246, .24); overflow: hidden; }
.rvz-faq + .rvz-faq { margin-top: 12px; }
.rvz-faq > summary {
	list-style: none; cursor: pointer; padding: 20px 22px;
	display: flex; justify-content: space-between; align-items: center; gap: 16px;
	font-size: 16px; font-weight: 700; color: var(--wp--preset--color--contrast);
}
.rvz-faq > summary::-webkit-details-marker { display: none; }
.rvz-faq > summary::after {
	content: "+"; flex: 0 0 auto; width: 26px; height: 26px; border-radius: 0;
	background: rgba(245, 239, 246, .12); color: var(--wp--preset--color--chrome);
	display: flex; align-items: center; justify-content: center; font-size: 18px; transition: transform .2s ease;
}
.rvz-faq[open] > summary::after { transform: rotate(45deg); }
.rvz-faq__answer { margin: 0; padding: 0 22px 20px; font-size: 15.5px; line-height: 1.65; color: var(--wp--preset--color--body); max-width: 62ch; }

/* ---- Responsible gaming banner ---------------------------------------- */
.rvz-18 {
	display: flex; align-items: center; gap: 16px; padding: 18px 24px; border-radius: 0;
	background: rgba(165, 41, 174, .06); border: 1px solid rgba(165, 41, 174, .2);
}
.rvz-18__badge {
	width: 44px; height: 44px; flex: 0 0 auto; border-radius: 0; background: rgba(165, 41, 174, .15);
	display: flex; align-items: center; justify-content: center; font-weight: 700; font-size: 15px; color: var(--wp--preset--color--jewel-lit);
}
.rvz-18__text { margin: 0; font-size: 13.5px; line-height: 1.55; color: var(--wp--preset--color--muted); }

/* =========================================================================
   INTERIOR PAGES — shared helpers
   ========================================================================= */
.rvz-breadcrumb { font-size: 12.5px; color: var(--wp--preset--color--dim); }
.rvz-breadcrumb a { color: var(--wp--preset--color--muted); }
.rvz-lead { font-size: 18px; line-height: 1.6; color: var(--wp--preset--color--body); max-width: 660px; }

/* Interior page hero (breadcrumb + eyebrow + H1 + lead + CTA) */
.rvz-hero:has(.rvz-breadcrumb) {
	position: relative;
	overflow: clip;
	text-align: center;
	padding-top: clamp(48px, 6vw, 76px);
	padding-bottom: clamp(28px, 4vw, 44px);
}
.rvz-hero:has(.rvz-breadcrumb)::before {
	content: "";
	position: absolute;
	inset: 0;
	z-index: 0;
	pointer-events: none;
	background:
		radial-gradient(680px 320px at 50% 8%, rgba(165, 41, 174, .16), transparent 62%),
		radial-gradient(420px 220px at 50% 4%, rgba(245, 239, 246, .07), transparent 60%);
}
.rvz-hero:has(.rvz-breadcrumb) > * { position: relative; z-index: 1; }
/* comfortable measure + real centring for the lead and buttons */
.rvz-hero:has(.rvz-breadcrumb) .rvz-lead {
	margin-left: auto;
	margin-right: auto;
}
.rvz-hero:has(.rvz-breadcrumb) .rvz-breadcrumb,
.rvz-hero:has(.rvz-breadcrumb) .rvz-eyebrow { text-align: center; }
.rvz-hero:has(.rvz-breadcrumb) .wp-block-buttons { justify-content: center; margin-top: 8px; }

/* Fallback for browsers without :has() — still readable, just left-aligned */
@supports not selector(:has(*)) {
	.rvz-hero .rvz-lead { margin-right: auto; }
}

/* generic stat tiles (aviator game info, payment facts) */
.rvz-statbox { display: grid; grid-template-columns: repeat(auto-fill, minmax(130px, 1fr)); gap: 12px; }
.rvz-stat-tile {
	padding: 16px 18px; border-radius: 0; background: var(--wp--preset--gradient--card);
	border: var(--rvz-card-border);
}
.rvz-stat-tile .k { font-size: 12px; color: var(--wp--preset--color--dim); font-weight: 600; }
.rvz-stat-tile .v { font-family: var(--wp--preset--font-family--heading); font-weight: 400; font-size: 22px; color: var(--wp--preset--color--chrome); }

/* bonus card = feature card + a price line + button (reuses .rvz-feature look) */
.rvz-bonus__amount { font-family: var(--wp--preset--font-family--heading); font-weight: 400; font-size: 30px; color: var(--wp--preset--color--chrome); line-height: 1; margin: 6px 0 8px; }

/* CTA banner */
.rvz-cta {
	position: relative; overflow: hidden; text-align: center;
	padding: clamp(28px, 4vw, 44px); border-radius: 0;
	background: var(--wp--preset--gradient--card-raised); border: var(--rvz-card-border-strong);
}
.rvz-cta::after { content: ""; position: absolute; inset: 0; pointer-events: none; background: radial-gradient(600px 240px at 50% 0%, rgba(165, 41, 174, .16), transparent 65%); }
.rvz-cta > * { position: relative; z-index: 1; }

/* comparison / payment tables (dense, kept in html blocks) */
.rvz-table-wrap { overflow-x: auto; -webkit-overflow-scrolling: touch; }
/* Pages emit <figure class="wp-block-table rvz-table">, so the figure itself is the
   horizontal scroll container on mobile; the inner <table> keeps the min width. */
.rvz-table { display: block; width: 100%; min-width: 0; margin-left: 0; margin-right: 0; overflow-x: auto; -webkit-overflow-scrolling: touch; font-size: 14px; }
.rvz-table > table { width: 100%; border-collapse: collapse; min-width: 560px; }
.rvz-table th, .rvz-table td { padding: 12px 14px; text-align: left; border-bottom: var(--rvz-hairline); }
.rvz-table thead th { color: var(--wp--preset--color--heading); font-weight: 700; }
.rvz-table tbody th { color: var(--wp--preset--color--muted); font-weight: 600; }
.rvz-table td { color: var(--wp--preset--color--contrast); }
.rvz-table .yes { color: var(--wp--preset--color--cyan-soft); font-weight: 700; }
.rvz-table .no { color: var(--wp--preset--color--dim); }
.rvz-table .rvz-col-hi { background: rgba(245, 239, 246, .08); color: var(--wp--preset--color--chrome); font-weight: 700; }
.rvz-table .rvz-badge-rec { display:inline-block; margin-left:6px; padding:1px 7px; border-radius:0; font-size:10px; font-weight:700; background:var(--wp--preset--gradient--chrome); color:var(--wp--preset--color--ink); }

/* warning-sign / checklist rows */
.rvz-warn { list-style: none; padding-left: 0; margin: 0; display: grid; gap: 10px; }
.rvz-warn li { position: relative; padding: 13px 14px 13px 42px; border-radius: 0; background: var(--wp--preset--gradient--card); border: var(--rvz-card-border); font-size: 15px; line-height: 1.55; color: var(--wp--preset--color--body); }
/* U+FE0E forces the text (not emoji) presentation of the warning sign so it picks
   up the ice accent instead of rendering as a colour emoji on Win/Android. */
.rvz-warn li::before { content: "\26A0\FE0E"; position: absolute; left: 14px; top: 13px; color: var(--wp--preset--color--chrome); }

/* =========================================================================
   HEADER
   ========================================================================= */
.rvz-header {
	position: sticky; top: 0; z-index: 50;
	backdrop-filter: blur(14px);
	background: rgba(7, 9, 28, .86);
	border-bottom: 1px solid rgba(245, 239, 246, .28);
}
.rvz-header__inner {
	min-height: 74px;
	max-width: var(--rvz-maxw);
	margin: 0 auto;
	padding: 0 24px;
	width: 100%;
	gap: 20px;
}
.rvz-instruments {
	max-width: var(--rvz-maxw);
	margin: 0 auto;
	padding: 6px 24px;
	width: 100%;
}
.rvz-header__actions { margin-left: auto; }
/* the nav lives in the middle and can shrink/scroll before the burger kicks in */
.rvz-nav { min-width: 0; }
/* Wordmark base layout */
.rvz-brand {
	display: flex;
	align-items: center;
	gap: 11px;
	text-decoration: none;
}
.rvz-brand__crest {
	flex: 0 0 auto;
	width: 36px;
	height: 36px;
	display: block;
	border-radius: 0;
	/* num emboss: warm rim light on the top rim, shadow under the bottom */
	box-shadow:
		inset 0 1px 0 rgba(250, 239, 251, .55),
		inset 0 -1px 0 rgba(0, 0, 0, .45),
		0 4px 14px rgba(245, 239, 246, .22);
}
.rvz-brand__lock {
	display: flex;
	align-items: baseline;
	gap: 7px;
	line-height: 1;
	min-width: 0;
}
.rvz-brand__word {
	font-family: var(--wp--preset--font-family--heading);
	font-weight: 400;
	font-size: 19px;
	line-height: 1;
	letter-spacing: -.6px;
	color: var(--wp--preset--color--heading);
}
.rvz-brand__cluster {
	font-family: var(--wp--preset--font-family--heading);
	font-weight: 400;
	font-size: 19px;
	line-height: 1;
	letter-spacing: -.6px;
	color: var(--wp--preset--color--chrome);
}
.rvz-brand:hover .rvz-brand__cluster { color: var(--wp--preset--color--chrome-soft); }
.rvz-brand--footer .rvz-brand__word,
.rvz-brand--footer .rvz-brand__cluster { font-size: 17px; }
/* Below 400px the lockup would push the burger off-screen. */
@media (max-width: 400px) {
	.rvz-brand__crest { width: 32px; height: 32px; }
	.rvz-brand__word,
	.rvz-brand__cluster { font-size: 16px; }
}

/* ---- Instrument rail under the header (replaces the sibling's topbar) ---- */
.rvz-instruments {
	max-width: var(--rvz-maxw);
	margin: 0 auto;
	padding: 8px 24px 10px;
	width: 100%;
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-between;
	gap: 8px 22px;
	border-top: 1px solid rgba(255, 255, 255, .10);
}
.rvz-instruments__rail {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 6px 10px;
	margin: 0;
}
.rvz-instruments__cell {
	display: inline-flex;
	align-items: baseline;
	gap: 6px;
	padding: 3px 9px;
	border-radius: 0;
	background: rgba(245, 239, 246, .07);
	border: 1px solid rgba(245, 239, 246, .32);
}
.rvz-instruments__cell dt {
	font-size: 11px;
	letter-spacing: .7px;
	text-transform: uppercase;
	color: var(--wp--preset--color--dim);
}
.rvz-instruments__cell dd {
	margin: 0;
	font-family: var(--wp--preset--font-family--mono);
	font-size: 12.5px;
	font-weight: 500;
	color: #DCECEF;
}
.rvz-instruments__legal { margin: 0; font-size: 12px; color: var(--wp--preset--color--dim); }
.rvz-instruments__legal a { color: var(--wp--preset--color--chrome-soft); }
.rvz-instruments__age {
	display: inline-block;
	padding: 1px 6px;
	margin-right: 4px;
	border-radius: 0;
	font-size: 11px;
	font-weight: 700;
	color: #FFFFFF;
	background: var(--rvz-hot, #631469);
}

/* ---- Footer payment rail (mirrors the header rail, sits at the bottom) --- */
.rvz-payrail {
	max-width: var(--rvz-maxw);
	margin: 34px auto 0;
	padding-top: 24px;
	border-top: 1px solid rgba(165, 41, 174, .16);
}
.rvz-payrail__title {
	margin: 0 0 12px;
	font-size: 13px;
	font-weight: 700;
	letter-spacing: .6px;
	color: var(--wp--preset--color--contrast);
}
.rvz-payrail__row { display: flex; flex-wrap: wrap; gap: 9px; }
.rvz-payrail__note { margin: 12px 0 0; font-size: 12px; line-height: 1.6; color: var(--wp--preset--color--dim); }

/* Navigation */
.rvz-nav { flex-wrap: nowrap; }
.rvz-nav .wp-block-navigation-item__content { font-size: 14px; font-weight: 600; color: var(--wp--preset--color--body); padding: 8px 11px; border-radius: 0; white-space: nowrap; }
.rvz-header__inner .wp-block-navigation__responsive-container:not(.is-menu-open) { background: transparent; }
.rvz-nav .current-menu-item .wp-block-navigation-item__content,
.rvz-nav .wp-block-navigation-item__content:hover { color: var(--wp--preset--color--contrast); background: rgba(245, 239, 246, .08); }

/* Language pills */
.rvz-lang { display: flex; align-items: center; gap: 2px; padding: 3px; border: 1px solid rgba(245, 239, 246, .34); border-radius: 0; background: rgba(255, 255, 255, .02); }
.rvz-lang a { padding: 5px 10px; border-radius: 0; font-size: 12.5px; font-weight: 700; color: var(--wp--preset--color--dim); }
.rvz-lang a.is-active { background: rgba(245, 239, 246, .16); color: var(--wp--preset--color--chrome); }

.rvz-instruments { min-height: 34px; font-size: 12px; color: var(--wp--preset--color--dim); }
.rvz-instruments__legal b { color: var(--wp--preset--color--chrome); }

/* =========================================================================
   FOOTER
   ========================================================================= */
.rvz-footer { border-top: 1px solid rgba(245, 239, 246, .24); background: var(--wp--preset--color--base-deep); }
.rvz-footer__col-title { font-size: 13px; font-weight: 700; letter-spacing: .6px; color: var(--wp--preset--color--contrast); margin-bottom: 14px; }
.rvz-footer a { font-size: 13px; color: var(--wp--preset--color--muted); }
.rvz-footer a:hover { color: var(--wp--preset--color--chrome); }
.rvz-footer .rvz-footer__links { list-style: none; padding-left: 0; margin: 0; display: flex; flex-direction: column; gap: 10px; }
.rvz-footer .rvz-brand__name { color: var(--wp--preset--color--heading); }
.rvz-footer__legal { font-size: 12px; color: var(--wp--preset--color--dim); }
.rvz-chip {
	padding: 8px 14px; border-radius: 0; background: rgba(255, 255, 255, .03);
	border: 1px solid rgba(255, 255, 255, .12); font-size: 12px; font-weight: 600; color: var(--wp--preset--color--dim);
}

/* =========================================================================
   RESPONSIVE  — the piece the original inline markup was missing entirely
   ========================================================================= */

/* Tablet */
@media (max-width: 900px) {
	.rvz-compare { position: static; }
	.rvz-offer__amount { font-size: 40px; }
}

/* Mobile */
@media (max-width: 600px) {
	body { --rvz-side: 16px; }
	.rvz-section { padding-top: 36px; }

	/* tighten root padding on small screens */
	.rvz-header__inner { min-height: 60px; }
	.rvz-brand__mark { width: 18px; height: 18px; }
	.rvz-brand__name { font-size: 17px; }

	/* stat row wraps to 2-up */
	.rvz-stats { gap: 18px 28px; }

	.rvz-offer { padding: 26px 20px; }
	.rvz-offer__amount { font-size: 38px; }

	/* buttons go full width so they are tappable */
	.rvz-hero .wp-block-buttons .wp-block-button,
	.rvz-app .wp-block-buttons .wp-block-button { width: 100%; }
	.rvz-hero .wp-block-buttons .wp-block-button__link,
	.rvz-app .wp-block-buttons .wp-block-button__link { display: block; text-align: center; }

	.rvz-faq > summary { font-size: 15px; padding: 16px 18px; }
	.rvz-18 { flex-direction: row; align-items: flex-start; }
}

/* Mobile header: keep only logo, burger and the primary CTA; the language
   switch and secondary link move out of the cramped bar. Core Navigation
   shows its hamburger below 600px. */
@media (max-width: 600px) {
	.rvz-header__inner { gap: 10px; padding: 0 16px; }
	.rvz-instruments { padding: 6px 16px; }
	.rvz-lang { display: none; }
	.rvz-header__actions .rvz-btn-outline { display: none; }
	.rvz-header__actions { gap: 10px; }
	/* let the nav (burger) sit just before the CTA on the right */
	.rvz-nav { order: 3; margin-left: auto; }
	.rvz-header__actions { order: 4; margin-left: 0; }
	.rvz-instruments { font-size: 11px; gap: 4px 12px; }
}

/* Very small */
@media (max-width: 400px) {
	.rvz-brand__name { display: none; }
	.rvz-header__actions .wp-block-button__link { padding: 9px 14px !important; }
}

/* =========================================================================== */

/* Skip-to-content: off-screen until it receives keyboard focus. */
.rvz-skip-link {
	position: absolute;
	left: 50%;
	top: 0;
	transform: translate(-50%, -130%);
	z-index: 2000;
	padding: 12px 22px;
	background: #06071A;
	color: #FFFFFF;
	font-family: "Overpass", system-ui, sans-serif;
	font-weight: 700;
	font-size: 15px;
	text-decoration: none;
	border-radius: 0 0 0 0;
	box-shadow: 0 8px 24px rgba(0, 0, 0, .45);
	transition: transform .18s ease-out;
}
.rvz-skip-link:focus {
	transform: translate(-50%, 0);
	outline: none;
}

/* Visible keyboard focus on every interactive element (WCAG 2.4.7).
   Only shows for keyboard users via :focus-visible, so mouse clicks stay clean. */
a:focus-visible,
button:focus-visible,
.wp-block-button__link:focus-visible,
.wp-block-navigation-item__content:focus-visible,
.wp-block-navigation__responsive-container-open:focus-visible,
.wp-block-navigation__responsive-container-close:focus-visible,
input:focus-visible,
textarea:focus-visible,
select:focus-visible,
summary:focus-visible,
[tabindex]:focus-visible {
	outline: 3px solid #EBDEED;
	outline-offset: 3px;
	border-radius: 0;
}

/* Mobile: guarantee 44px tap targets and remove the 300ms tap delay (WCAG 2.5.5). */
@media (max-width: 600px) {
	.wp-block-button__link,
	.rvz-nav .wp-block-navigation-item__content,
	.rvz-header__actions a,
	.rvz-lang a {
		min-height: 44px;
		display: inline-flex;
		align-items: center;
		touch-action: manipulation;
	}
}

/* Honour prefers-reduced-motion globally, not just the floating hero art. */
@media (prefers-reduced-motion: reduce) {
	*,
	*::before,
	*::after {
		animation-duration: .001ms !important;
		animation-iteration-count: 1 !important;
		transition-duration: .001ms !important;
		scroll-behavior: auto !important;
	}
}

/* ---- Supplement: native wp:table dark styling + mobile scroll, notes (added by builder) ---- */
.wp-block-table{margin:18px 0;}
.wp-block-table.rvz-table,.wp-block-table{overflow-x:auto;-webkit-overflow-scrolling:touch;}
.wp-block-table table{width:100%;border-collapse:collapse;min-width:520px;font-size:14px;}
.wp-block-table th,.wp-block-table td{padding:12px 14px;text-align:left;border-bottom:var(--rvz-hairline,1px solid rgba(255, 255, 255, .16));}
.wp-block-table thead th{color:var(--wp--preset--color--heading);font-weight:500;font-family:var(--wp--preset--font-family--mono);letter-spacing:.3px;}
.wp-block-table tbody td{color:var(--wp--preset--color--body);}
.wp-block-table tbody td:nth-child(n+2){font-family:var(--wp--preset--font-family--mono);color:var(--wp--preset--color--contrast);}
.rvz-note{font-size:13px;line-height:1.6;color:var(--wp--preset--color--dim);border-left:2px solid rgba(211, 196, 212, .3);padding:2px 0 2px 14px;margin:14px 0;}
.rvz-rating-pill{white-space:nowrap;}
@media (max-width:600px){.wp-block-table table{min-width:480px;}}

/* Static single-language marker (AZ-only site). */
.rvz-langtag {
	display: inline-flex; align-items: center; padding: 6px 11px; border-radius: 0;
	border: 1px solid rgba(211, 196, 212, .3); background: rgba(245, 239, 246, .07);
	font-family: var(--wp--preset--font-family--mono);
	font-size: 13px; font-weight: 400; letter-spacing: 1px;
	color: var(--wp--preset--color--chrome);
}

/* ---- Multiplier scale strip (green cash-out zone -> red crash zone) ------- */
.rvz-mult {
	display: grid; grid-template-columns: repeat(auto-fit, minmax(96px, 1fr)); gap: 10px;
	list-style: none; padding-left: 0; margin: 0;
}
.rvz-mult li {
	padding: 14px 12px; border-radius: 0; text-align: center;
	background: var(--wp--preset--gradient--card); border: 1px solid rgba(255, 255, 255, .12);
}
.rvz-mult .x {
	display: block; font-family: var(--wp--preset--font-family--mono);
	font-size: 22px; line-height: 1; color: var(--wp--preset--color--contrast);
}
.rvz-mult .t { display: block; margin-top: 7px; font-size: 12px; color: var(--wp--preset--color--dim); }
.rvz-mult li.is-safe   { border-color: rgba(92, 200, 224, .34); }
.rvz-mult li.is-safe   .x { color: var(--wp--preset--color--cyan-soft); }
.rvz-mult li.is-risky  { border-color: rgba(242, 175, 136, .3); }
.rvz-mult li.is-risky  .x { color: #F4DDF5; }

/* ---- RTP / provider fact card (mono figures) ----------------------------- */
.rvz-rtp {
	display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 1px;
	background: rgba(255, 255, 255,.07); border: 1px solid rgba(255, 255, 255, .14);
	border-radius: 0; overflow: hidden;
}
.rvz-rtp div { background: var(--wp--preset--color--surface); padding: 16px 18px; }
.rvz-rtp .k { font-size: 11.5px; letter-spacing: .8px; text-transform: uppercase; color: var(--wp--preset--color--muted); }
.rvz-rtp .v {
	font-family: var(--wp--preset--font-family--mono); font-size: 21px; line-height: 1.25;
	color: var(--wp--preset--color--chrome); margin-top: 5px;
}

/* ---- Signal / predictor warning callout ---------------------------------- */
.rvz-alert {
	display: flex; gap: 16px; align-items: flex-start;
	padding: 20px 22px; border-radius: 0;
	background: rgba(242, 175, 136, .07);
	border: 1px solid rgba(242, 175, 136, .28);
	border-left-width: 3px;
}
.rvz-alert__icon {
	flex: 0 0 auto; width: 38px; height: 38px; border-radius: 0;
	display: flex; align-items: center; justify-content: center; font-size: 19px;
	background: rgba(242, 175, 136, .14); color: #F4DDF5;
}
.rvz-alert h3 {
	font-size: 16px; margin: 0 0 6px; color: #FAEFFB;
	letter-spacing: .4px;
}
.rvz-alert p { margin: 0; font-size: 14px; line-height: 1.6; color: var(--wp--preset--color--body); }

/* ---- Demo vs real comparison strip --------------------------------------- */
.rvz-vs { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.rvz-vs > div {
	padding: 20px 20px 18px; border-radius: 0;
	background: var(--wp--preset--gradient--card); border: 1px solid rgba(255, 255, 255, .14);
}
.rvz-vs > div.is-real { border-color: rgba(211, 196, 212, .3); }
.rvz-vs h3 { font-size: 15px; margin: 0 0 12px; letter-spacing: .6px; }
.rvz-vs ul { list-style: none; padding-left: 0; margin: 0; display: grid; gap: 9px; }
.rvz-vs li { position: relative; padding-left: 22px; font-size: 13.5px; line-height: 1.5; color: var(--wp--preset--color--body); }
.rvz-vs li::before { content: "\2013"; position: absolute; left: 4px; color: var(--wp--preset--color--muted); }
.rvz-vs li.y::before { content: "\2713"; color: var(--wp--preset--color--cyan); }
.rvz-vs li.n::before { content: "\2715"; color: #F4DDF5; }
@media (max-width: 600px) { .rvz-vs { grid-template-columns: 1fr; } }

/* ---- Provider strip (Spribe & friends — text marks, no borrowed logos) ---- */
.rvz-provider {
	display: flex; align-items: center; justify-content: center; gap: 9px;
	height: 62px; border-radius: 0;
	background: var(--wp--preset--color--surface); border: 1px solid rgba(255, 255, 255, .14);
	font-family: var(--wp--preset--font-family--heading);
	font-size: 15px; font-weight: 400; letter-spacing: 1px; text-transform: uppercase;
	color: var(--wp--preset--color--contrast);
}
.rvz-provider small {
	font-family: var(--wp--preset--font-family--mono); font-size: 11px;
	letter-spacing: 0; text-transform: none; color: var(--wp--preset--color--muted);
}

/* Numeric emphasis: any mono run reads as instrument data. */
.rvz-num { font-family: var(--wp--preset--font-family--mono); color: var(--wp--preset--color--chrome); }

/* Eyebrows pick up the mono voice on this domain. */
.rvz-eyebrow {
	font-family: var(--wp--preset--font-family--mono);
	font-weight: 400; letter-spacing: 2.6px; font-size: 12.5px;
	color: var(--wp--preset--color--chrome);
}

/* Skeleton placeholder for the heavier grids (no images shipped). */
@keyframes rvz-shimmer { 0% { background-position: -420px 0; } 100% { background-position: 420px 0; } }
.rvz-skeleton {
	border-radius: 0; min-height: 120px;
	background: linear-gradient(90deg, #181B39 0%, #1C1F3F 50%, #181B39 100%);
	background-size: 840px 100%;
	animation: rvz-shimmer 1.6s linear infinite;
}
@media (prefers-reduced-motion: reduce) { .rvz-skeleton { animation: none; } }
/* Aspect-ratio variants so a skeleton can reserve the exact box of the block it
   stands in for (no layout shift when the real content lands). */
.rvz-skeleton--card { aspect-ratio: 3 / 4; min-height: 0; }
.rvz-skeleton--wide { aspect-ratio: 16 / 9; min-height: 0; }
.rvz-skeleton--row  { min-height: 64px; }


/* =========================================================================== */

/* A. Fragment navigation must clear the sticky header */
html {
	scroll-padding-top: 124px;
}
@media (max-width: 600px) {
	html { scroll-padding-top: 88px; }
}

/* B. Root gutter: 24px is too much on a 360px screen */
@media (max-width: 600px) {
	body {
		--wp--style--root--padding-right: 16px;
		--wp--style--root--padding-left: 16px;
	}
}

/* ---- C. Skip link ------------------------------------------------------- */
/* Core adds a second skip link (#wp-skip-link) pointing at the same #rvz-main.
   Two identical first tab stops is noise — keep the theme's styled one. */
#wp-skip-link {
	display: none !important;
}
/* The theme's own link killed its outline; give it a ring for the moment it
   slides in, and pull the ring inside so the rounded corners don't clip it. */
.rvz-skip-link:focus,
.rvz-skip-link:focus-visible {
	outline: 3px solid var(--wp--preset--color--chrome);
	outline-offset: -3px;
}

/* D. Interior page header */
.entry-content {
	position: relative;
}
.entry-content > .rvz-breadcrumb:first-child::after {
	content: "";
	position: absolute;
	left: 50%;
	top: -56px;
	transform: translateX(-50%);
	width: min(1180px, 132vw);
	height: 430px;
	z-index: -1;
	pointer-events: none;
	background:
		radial-gradient(640px 300px at 26% 22%, rgba(165, 41, 174, .15), transparent 62%),
		radial-gradient(430px 220px at 6% 6%, rgba(245, 239, 246, .08), transparent 60%);
}
.entry-content > .rvz-breadcrumb:first-child {
	margin-bottom: 16px;
}
.entry-content > .rvz-breadcrumb + h1 {
	margin-top: 0;
}

/* On these pages the eyebrow sits *after* the H1, so it reads as a kicker.
   Give it the flight-trail tick so it looks authored rather than misplaced. */
h1 + .rvz-eyebrow {
	display: flex;
	align-items: center;
	gap: 12px;
	margin-top: 18px;
	margin-bottom: 0;
}
h1 + .rvz-eyebrow::before {
	content: "";
	flex: 0 0 auto;
	width: 34px;
	height: 2px;
	border-radius: 0;
	background: linear-gradient(90deg, var(--wp--preset--color--chrome), rgba(211, 196, 212, 0));
}
h1 + .rvz-eyebrow + .rvz-lead {
	margin-top: 14px;
}

/* E. Vertical rhythm + prose measure */
.entry-content > h2,
.rvz-section > h2 {
	margin-top: clamp(44px, 5vw, 68px);
}
.entry-content > h3,
.rvz-section > h3 {
	margin-top: clamp(28px, 3vw, 38px);
}
.entry-content > .rvz-breadcrumb + h1,
.entry-content > h2:first-child,
.rvz-section > h2:first-child {
	margin-top: 0;
}
/* Flight-trail rule under every section head: identity marker + rhythm cue. */
.entry-content > h2::after,
.rvz-section > h2::after,
.rvz-cta > h2::after {
	content: "";
	display: block;
	width: 46px;
	height: 2px;
	margin-top: 14px;
	border-radius: 0;
	background: linear-gradient(90deg, var(--wp--preset--color--chrome) 0%, rgba(165, 41, 174, .55) 68%, rgba(165, 41, 174, 0) 100%);
}
.rvz-cta h2::after,
h2.has-text-align-center::after {
	margin-left: auto;
	margin-right: auto;
}

.entry-content > p,
.entry-content > ul,
.entry-content > ol,
.rvz-section > p,
.rvz-section > ul,
.rvz-section > ol {
	max-width: 62ch;
}
.entry-content > p.has-text-align-center,
.rvz-section > p.has-text-align-center,
.rvz-cta p {
	/* Match the content column exactly (NOT `none`: core sets max-width in the same
	   low-specificity :where() rule, so `none` here made prose full-bleed while the
	   headings stayed at 720px — the same misalignment mirrored). */
	max-width: var(--wp--style--global--content-size, 740px);
}
/* The lead already had its own 660px cap; keep whichever is narrower. */
.rvz-lead {
	max-width: min(660px, 62ch);
}

/* ---- F. Legibility: no prose below 15px --------------------------------- */
.rvz-feature__text,
.rvz-step__text,
.rvz-alert p {
	font-size: 15px;
	line-height: 1.6;
}
.rvz-vs li,
.rvz-18__text {
	font-size: 14.5px;
}
.rvz-note {
	font-size: 14px;
}
.rvz-breadcrumb {
	font-size: 13px;
}
.rvz-footer a {
	font-size: 14px;
}
.rvz-instruments {
	font-size: 12px;
}

/* ---- G. Tap targets: 44px everywhere, not just under 600px --------------
   WCAG 2.5.5 / 2.5.8. Inline links inside a sentence are exempt and are left
   alone; every standalone control below was under 44px. */
a,
button,
summary,
.wp-block-button__link {
	touch-action: manipulation;
}
.rvz-brand {
	min-height: 44px;
}
.rvz-nav .wp-block-navigation-item__content {
	min-height: 44px;
	display: flex;
	align-items: center;
}
.rvz-header .wp-block-button__link,
.rvz-chips .wp-block-button__link {
	min-height: 44px;
	display: inline-flex;
	align-items: center;
	justify-content: center;
}
/* Hamburger + overlay close button were 24px icon buttons. */
.rvz-nav .wp-block-navigation__responsive-container-open,
.rvz-nav .wp-block-navigation__responsive-container-close {
	min-width: 44px;
	min-height: 44px;
	align-items: center;
	justify-content: center;
	color: var(--wp--preset--color--contrast);
	border-radius: 0;
}
/* Overlay menu: core forces `padding:0` on the links at (0,4,0) specificity, so
   the burger menu inherited 14px links with no vertical reach. */
.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content .rvz-nav .wp-block-navigation-item__content {
	font-size: 19px;
	font-weight: 600;
	padding: 11px 4px;
	min-height: 48px;
	width: 100%;
}
/* Breadcrumb link was an 18px-tall inline target: pad the hit area out to 44px
   and pull it back with negative margin so the line box does not move. */
.rvz-breadcrumb a {
	display: inline-block;
	/* Grow the hit area to 44px tall without moving the text: the extra padding is
	   cancelled by an equal negative margin, and the left rim is left untouched so
	   the crumb still lines up with the H1 below it. */
	padding: 12px 8px 12px 0;
	margin: -12px -8px -12px 0;
}
.rvz-footer .rvz-footer__links {
	gap: 2px;
}
.rvz-footer .rvz-footer__links a {
	display: inline-flex;
	align-items: center;
	min-height: 44px;
}
/* 404 template: search field + pagination controls. */
.wp-block-search__input,
.wp-block-search__button {
	min-height: 44px;
}
.wp-block-search__input {
	background: var(--wp--preset--color--surface);
	border: 1px solid rgba(245, 239, 246, .34);
	color: var(--wp--preset--color--contrast);
	border-radius: 0;
	padding: 0 14px;
}
.wp-block-search__input::placeholder {
	/* muted #C5BAC7 is 7.3:1 on surface — a placeholder, never body copy. */
	color: var(--wp--preset--color--muted);
	opacity: 1;
}
.wp-block-query-pagination a,
.wp-block-query-pagination .page-numbers {
	min-height: 44px;
	min-width: 44px;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	padding: 0 10px;
	border-radius: 0;
}
.wp-block-query-pagination .page-numbers.current {
	background: rgba(245, 239, 246, .12);
	color: var(--wp--preset--color--chrome);
}

/* ---- H. Focus rings that are actually visible --------------------------- … */
.rvz-faq > summary:focus-visible {
	outline-offset: -4px;
}
.rvz-game .rvz-game__play:focus-visible,
.rvz-post:focus-visible {
	outline-offset: 2px;
}

/* ---- I. Complete the state matrix (hover / focus / active / disabled) ---- */
.wp-block-button__link:active,
.rvz-store:active,
.rvz-game__play:active,
.rvz-quicklink:active,
.rvz-sticky a:active {
	transform: translateY(1px);
}
.rvz-quicklink:focus-visible,
.rvz-quicklink:focus-within {
	border-color: rgba(211, 196, 212, .4);
}
.rvz-game:focus-within,
.rvz-post:focus-visible {
	border-color: rgba(211, 196, 212, .35);
}
.rvz-nav .wp-block-navigation-item__content:focus-visible {
	color: var(--wp--preset--color--contrast);
	background: rgba(245, 239, 246, .1);
}
.rvz-faq > summary:hover {
	background: rgba(245, 239, 246, .045);
}
.rvz-faq > summary:hover::after,
.rvz-faq > summary:focus-visible::after {
	background: rgba(245, 239, 246, .22);
	color: var(--wp--preset--color--chrome-soft);
}
.rvz-faq[open] > summary {
	border-bottom: var(--rvz-hairline);
}
.rvz-footer a:focus-visible,
.rvz-breadcrumb a:hover,
.rvz-breadcrumb a:focus-visible {
	color: var(--wp--preset--color--chrome);
}
button:disabled,
.wp-block-button__link[aria-disabled="true"],
.wp-block-button__link[disabled] {
	opacity: .45;
	cursor: not-allowed;
	box-shadow: none;
	filter: grayscale(.35);
	pointer-events: none;
}

/* J. Emoji are not an icon system */
.rvz-quicklink__icon {
	font-size: 0;
	width: 40px;
	height: 40px;
	border-radius: 0;
	flex: 0 0 auto;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 3px;
	background: rgba(245, 239, 246, .09);
	border: 1px solid rgba(245, 239, 246, .34);
	transition: background .18s ease, border-color .18s ease;
}
.rvz-quicklink__icon::before,
.rvz-quicklink__icon::after {
	content: "";
	width: 4px;
	height: 15px;
	border-radius: 0;
	background: var(--wp--preset--color--chrome);
	box-shadow: 7px 0 0 0 var(--wp--preset--color--chrome-deep);
}
.rvz-quicklink__icon::after {
	height: 9px;
	box-shadow: none;
	opacity: .55;
	margin-left: 7px;
}
.rvz-quicklink:hover .rvz-quicklink__icon,
.rvz-quicklink:focus-visible .rvz-quicklink__icon {
	background: rgba(245, 239, 246, .16);
	border-color: rgba(211, 196, 212, .42);
}
/* The alert callout's ⚠ comes from page markup — force text presentation so it
   inherits the crash-red tint rather than becoming a colour emoji. */
.rvz-alert__icon {
	font-variant-emoji: text;
}
/* J2. Two inherited rules carried latent contrast failures */
.rvz-brand__num {
	color: var(--wp--preset--color--ink);
}
.rvz-avatar {
	background: rgba(245, 239, 246, .14);
	border: 1px solid rgba(211, 196, 212, .28);
	color: var(--wp--preset--color--chrome);
}

/* Footer age chip: was "🔞 18+" (emoji as an icon). Now a typographic ice chip. */
.rvz-chip--age {
	color: var(--wp--preset--color--chrome);
	background: rgba(245, 239, 246, .07);
	border-color: rgba(211, 196, 212, .28);
	font-weight: 700;
	letter-spacing: .4px;
}

/* ---- K. Tables: nested scrollers + a scroll affordance ------------------ … */
.rvz-table-wrap {
	position: relative;
	overflow: visible;
}
.rvz-table:focus-visible {
	outline: 3px solid var(--wp--preset--color--chrome-soft);
	outline-offset: 2px;
}
@media (max-width: 600px) {
	/* Below 600px every table (min-width 520–560px) definitely overflows, so the
	   fade is always truthful. */
	.rvz-table-wrap::after {
		content: "";
		position: absolute;
		top: 0;
		right: -1px;
		bottom: 0;
		width: 34px;
		pointer-events: none;
		background: linear-gradient(to left, var(--wp--preset--color--base), rgba(7, 9, 28, 0));
	}
}

/* L. Header: collapse the nav before it runs out of room */
@media (min-width: 600px) and (max-width: 899px) {
	.rvz-nav .wp-block-navigation__responsive-container-open:not(.always-shown) {
		display: flex;
	}
	.rvz-nav .wp-block-navigation__responsive-container:not(.hidden-by-default):not(.is-menu-open) {
		display: none;
	}
	.rvz-nav {
		order: 3;
		margin-left: auto;
	}
	.rvz-header__actions {
		order: 4;
		margin-left: 0;
	}
}

/* ---- M. Small-screen layout fixes -------------------------------------- */
@media (max-width: 600px) {
	/* "10.00x+" at 22px mono overflowed a 3-up 96px track: go 2-up instead. */
	.rvz-mult {
		grid-template-columns: repeat(auto-fit, minmax(132px, 1fr));
	}
	/* The static AZ marker is decorative and repeated in the footer — reclaim the
	   space in a nowrap header instead of risking an overflow. */
	.rvz-header__actions .rvz-langtag {
		display: none;
	}
	.rvz-18 {
		gap: 12px;
		padding: 16px 16px;
	}
	.rvz-18__text {
		font-size: 14px;
	}
	.rvz-alert {
		padding: 16px 16px;
		gap: 12px;
	}
	.rvz-offer__row,
	.rvz-compare__row {
		/* long AZ labels + value on one 328px line: let the pair wrap. */
		flex-wrap: wrap;
	}
	/* `.rvz-rtp` clips its children, so "Provably fair" at 21px mono was being cut
	   off in a 128px cell at 360px. Same guard for the stat tiles ("20:00–21:00"). */
	.rvz-rtp .v {
		font-size: 17px;
	}
	.rvz-stat-tile .v {
		font-size: 19px;
	}
	.rvz-rtp .v,
	.rvz-stat-tile .v,
	.rvz-mult .x {
		line-height: 1.3;
		overflow-wrap: anywhere;
	}
	.entry-content > .rvz-breadcrumb:first-child::after {
		height: 340px;
	}
}

/* ---- N. Reduced motion: finish the job --------------------------------- */
@media (prefers-reduced-motion: reduce) {
	/* The global block above zeroes durations; also stop the two decorative
	   translate effects from moving at all and drop the blur work. */
	.rvz-quicklink:hover,
	.rvz-game:hover,
	.rvz-post:hover,
	.wp-block-button__link:active,
	.rvz-store:active,
	.rvz-game__play:active,
	.rvz-quicklink:active,
	.rvz-sticky a:active {
		transform: none !important;
	}
	.rvz-header {
		backdrop-filter: none;
	}
	html {
		scroll-behavior: auto !important;
	}
}

/* ---- O. Forced-colors / high-contrast safety net ----------------------- */
@media (forced-colors: active) {
	.rvz-card, .rvz-card-raised, .rvz-quicklink, .rvz-game, .rvz-feature, .rvz-step,
	.rvz-faq, .rvz-flight, .rvz-offer, .rvz-cta, .rvz-alert, .rvz-18, .rvz-stat-tile {
		border: 1px solid CanvasText;
	}
	a:focus-visible, button:focus-visible, summary:focus-visible {
		outline: 3px solid Highlight;
	}
}

/* Item/game card grid */
.rvz-games {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
	gap: 16px;
}
@media (max-width: 480px) {
	.rvz-games {
		grid-template-columns: 1fr;
	}
}

/* Tables authored as <div class="rvz-table-wrap"><table class="rvz-table"> */
.rvz-table-wrap {
	overflow-x: auto;
	-webkit-overflow-scrolling: touch;
}
table.rvz-table {
	display: table;
	width: 100%;
	min-width: 560px;
	border-collapse: collapse;
	overflow: visible;
}


/* =========================================================================== */

/* Reel strip: the signature hero ornament */
.rvz-reels {
	position: relative;
	overflow: hidden;
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 10px;
	padding: 16px;
	aspect-ratio: 4 / 3;
	border-radius: 0;
	background:
		radial-gradient(520px 260px at 82% 4%, rgba(165, 41, 174, .26), transparent 62%),
		var(--wp--preset--gradient--card-raised);
	border: 1px solid rgba(245, 239, 246, .34);
	box-shadow: var(--wp--preset--shadow--card);
}
.rvz-reels__reel {
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: space-around;
	border-radius: 0;
	background: rgba(6, 7, 26, .55);
	border: 1px solid rgba(245, 239, 246, .24);
	font-family: var(--wp--preset--font-family--heading);
	font-size: clamp(20px, 4.2vw, 30px);
	line-height: 1;
	color: var(--wp--preset--color--chrome);
	letter-spacing: 1px;
}
.rvz-reels__reel span { opacity: .38; }
.rvz-reels__reel span.is-hit { opacity: 1; text-shadow: 0 0 22px rgba(211, 196, 212, .55); }
.rvz-reels__line {
	position: absolute;
	left: 10px;
	right: 10px;
	top: 50%;
	height: 2px;
	transform: translateY(-1px);
	background: linear-gradient(90deg, rgba(211, 196, 212, 0), var(--wp--preset--color--chrome) 22%, var(--wp--preset--color--chrome) 78%, rgba(211, 196, 212, 0));
	opacity: .8;
}
.rvz-reels__tag {
	position: absolute;
	left: 16px;
	bottom: 14px;
	font-family: var(--wp--preset--font-family--mono);
	font-size: 12px;
	letter-spacing: .6px;
	color: var(--wp--preset--color--dim);
}

/* ---- Provider / genre filter rail ---------------------------------------
   A real horizontal scroller (not JS tabs): on 360px it swipes, on desktop it
   wraps. Each chip is a link to the section it filters, so it works with JS off. */
.rvz-filter {
	display: flex;
	gap: 9px;
	overflow-x: auto;
	-webkit-overflow-scrolling: touch;
	scrollbar-width: thin;
	padding: 4px 0 10px;
	margin: 0;
	list-style: none;
}
.rvz-filter li { flex: 0 0 auto; }
.rvz-filter a {
	display: inline-flex;
	align-items: center;
	min-height: 44px;
	padding: 0 16px;
	border-radius: 0;
	background: rgba(245, 239, 246, .05);
	border: 1px solid rgba(245, 239, 246, .34);
	font-size: 13.5px;
	font-weight: 700;
	color: var(--wp--preset--color--dim);
	text-decoration: none;
	white-space: nowrap;
	transition: background .16s ease, border-color .16s ease, color .16s ease;
}
.rvz-filter a:hover,
.rvz-filter a:focus-visible {
	background: rgba(245, 239, 246, .14);
	border-color: rgba(211, 196, 212, .46);
	color: var(--wp--preset--color--chrome);
}
.rvz-filter a[aria-current="true"] {
	background: var(--wp--preset--gradient--chrome);
	border-color: transparent;
	color: var(--wp--preset--color--ink);
}
@media (min-width: 782px) { .rvz-filter { flex-wrap: wrap; overflow: visible; } }

/* ---- Game tiles: portrait, blue light RTP badge --------------------------- */
.rvz-game { border-radius: 0; }
.rvz-game__rtp {
	position: absolute;
	right: 9px;
	bottom: 9px;
	z-index: 2;
	padding: 4px 9px;
	border-radius: 0;
	background: rgba(6, 7, 26, .82);
	border: 1px solid rgba(211, 196, 212, .34);
	font-family: var(--wp--preset--font-family--mono);
	font-size: 11.5px;
	color: var(--wp--preset--color--chrome);
}
/* Card art with no raster image: a reel-band gradient keeps the 3:4 box filled
   and palette-locked instead of shipping an empty grey well. */
.rvz-game__media--css {
	background:
		linear-gradient(115deg, rgba(245, 239, 246, .16), transparent 58%),
		repeating-linear-gradient(90deg, rgba(255, 255, 255, .045) 0 2px, transparent 2px 26px),
		var(--wp--preset--gradient--card-raised);
	display: flex;
	align-items: center;
	justify-content: center;
	font-family: var(--wp--preset--font-family--heading);
	font-size: 30px;
	/* This label ("SLOT" / "CANLI") NAMES the game family, so it is content, not … */
	color: var(--wp--preset--color--chrome-soft);
	letter-spacing: 2px;
}

/* ---- RTP meter: the number AND a bar, so the figure is scannable --------- */
.rvz-rtpbar { display: grid; gap: 12px; margin: 18px 0; }
.rvz-rtpbar__row {
	display: grid;
	grid-template-columns: minmax(120px, 1.4fr) minmax(90px, 3fr) auto;
	align-items: center;
	gap: 12px;
	padding: 12px 14px;
	border-radius: 0;
	background: var(--wp--preset--gradient--card);
	border: 1px solid rgba(245, 239, 246, .24);
}
.rvz-rtpbar__name { font-size: 14.5px; font-weight: 700; color: var(--wp--preset--color--contrast); }
.rvz-rtpbar__track {
	position: relative;
	height: 8px;
	border-radius: 0;
	background: rgba(255, 255, 255, .07);
	overflow: hidden;
}
.rvz-rtpbar__fill {
	position: absolute;
	inset: 0 auto 0 0;
	border-radius: 0;
	background: var(--wp--preset--gradient--chrome);
}
.rvz-rtpbar__val {
	font-family: var(--wp--preset--font-family--mono);
	font-size: 15px;
	color: var(--wp--preset--color--chrome);
	white-space: nowrap;
}
@media (max-width: 600px) {
	.rvz-rtpbar__row { grid-template-columns: 1fr auto; }
	.rvz-rtpbar__track { grid-column: 1 / -1; }
}

/* ---- Jackpot tiers ------------------------------------------------------
   Tier NAMES and how the pool grows — deliberately NOT a live ticker: this site
   has no feed, and a fake counter would be a fabricated figure. */
.rvz-jackpot {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
	gap: 12px;
	list-style: none;
	padding-left: 0;
	margin: 0;
}
.rvz-jackpot li {
	padding: 18px 16px;
	border-radius: 0;
	text-align: center;
	background: var(--wp--preset--gradient--card);
	border: 1px solid rgba(165, 41, 174, .22);
}
.rvz-jackpot .t {
	display: block;
	font-family: var(--wp--preset--font-family--heading);
	font-size: 15px;
	letter-spacing: 1.6px;
	text-transform: uppercase;
	color: var(--wp--preset--color--jewel-lit);
}
.rvz-jackpot .r {
	display: block;
	margin-top: 9px;
	font-family: var(--wp--preset--font-family--mono);
	font-size: 17px;
	color: var(--wp--preset--color--chrome);
}
.rvz-jackpot .d { display: block; margin-top: 8px; font-size: 13px; line-height: 1.5; color: var(--wp--preset--color--muted); }

/* ---- Demo callout ------------------------------------------------------- */
.rvz-demo {
	display: flex;
	align-items: center;
	gap: 18px;
	flex-wrap: wrap;
	padding: 22px 24px;
	border-radius: 0;
	background:
		radial-gradient(460px 200px at 92% 0%, rgba(165, 41, 174, .2), transparent 64%),
		var(--wp--preset--gradient--card-raised);
	border: 1px solid rgba(245, 239, 246, .34);
}
.rvz-demo__badge {
	flex: 0 0 auto;
	min-width: 62px;
	padding: 10px 12px;
	border-radius: 0;
	text-align: center;
	background: rgba(245, 239, 246, .12);
	border: 1px solid rgba(211, 196, 212, .3);
	font-family: var(--wp--preset--font-family--mono);
	font-size: 13px;
	color: var(--wp--preset--color--chrome);
}
.rvz-demo p { margin: 0; flex: 1 1 260px; font-size: 15px; line-height: 1.6; color: var(--wp--preset--color--body); }

/* ---- Amber grid (keno hit table / plinko rows) ------------------------- */
.rvz-amber {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(84px, 1fr));
	gap: 8px;
	list-style: none;
	padding-left: 0;
	margin: 16px 0;
}
.rvz-amber li {
	padding: 12px 8px;
	border-radius: 0;
	text-align: center;
	background: var(--wp--preset--color--surface);
	border: 1px solid rgba(255, 255, 255, .12);
}
.rvz-amber .h {
	display: block;
	font-size: 11.5px;
	letter-spacing: .7px;
	text-transform: uppercase;
	color: var(--wp--preset--color--muted);
}
.rvz-amber .x {
	display: block;
	margin-top: 6px;
	font-family: var(--wp--preset--font-family--mono);
	font-size: 17px;
	line-height: 1.3;
	color: var(--wp--preset--color--contrast);
	overflow-wrap: anywhere;
}
.rvz-amber li.is-top { border-color: rgba(211, 196, 212, .42); }
.rvz-amber li.is-top .x { color: var(--wp--preset--color--chrome); }

/* ---- Provider mark: text-only, never a borrowed logo file --------------- */
.rvz-provider { border-radius: 0; height: 66px; letter-spacing: 1.6px; }

/* ---- Section heads: swap the sibling's trail rule for a reel tick ------- */
.entry-content > h2::after,
.rvz-section > h2::after,
.rvz-cta > h2::after {
	width: 54px;
	height: 3px;
	border-radius: 0;
	background: linear-gradient(90deg, var(--wp--preset--color--chrome) 0%, rgba(165, 41, 174, .7) 62%, rgba(165, 41, 174, 0) 100%);
}
h1 + .rvz-eyebrow::before {
	background: linear-gradient(90deg, var(--wp--preset--color--chrome), rgba(211, 196, 212, 0));
}

/* ---- Ambient wash (superseded by the identity layer at the tail) ---- */
.wp-site-blocks::before {
	background:
		radial-gradient(1100px 560px at 84% -10%, rgba(165, 41, 174, .22), transparent 62%),
		radial-gradient(860px 480px at 8% 2%, rgba(245, 239, 246, .07), transparent 58%);
}

/* ---- Skeletons re-based on the jewel surfaces ------------------------ */
.rvz-skeleton {
	background: linear-gradient(90deg, #181B39 0%, #1C1F3F 50%, #181B39 100%);
	background-size: 840px 100%;
}

/* ---- Pill buttons need slightly tighter header padding ----------------- */
.rvz-header .wp-block-button__link { padding: 11px 20px; font-size: 14px; }
.rvz-game__play { border-radius: 0; }
.rvz-chips .wp-block-button__link { border-radius: 0; }

/* Trust rail sits BELOW the brand row on this domain (sibling-distinct) */
.rvz-header .rvz-instruments {
	border-top: 0;
	border-bottom: 1px solid rgba(245, 239, 246, .24);
	padding: 7px 24px;
	justify-content: flex-start;
}
@media (max-width: 600px) {
	.rvz-header .rvz-instruments { padding: 6px 16px; }
}

/* ---- Per-page last-updated line (inc/chrome.php appends it to the content) --- */
.rvz-updated {
	margin-top: clamp(34px, 4vw, 52px);
	padding-top: 16px;
	border-top: 1px solid rgba(245, 239, 246, .28);
	font-size: 13px;
	line-height: 1.6;
	color: var(--wp--preset--color--muted);
}
.rvz-updated .rvz-num { color: var(--wp--preset--color--chrome); }

/* UX pass: box-sizing for the raw (wp:html) components */
[class*="rvz-"],
[class*="rvz-"]::before,
[class*="rvz-"]::after {
	box-sizing: border-box;
}

/* UX pass: the interior-page chrome-soft must not widen the document */
.entry-content > .rvz-breadcrumb:first-child::after {
	left: 0;
	transform: none;
	width: 100%;
	height: 460px;
	top: -64px;
	background:
		radial-gradient(700px 330px at 24% 20%, rgba(165, 41, 174, .17), transparent 64%),
		radial-gradient(470px 240px at 4% 4%, rgba(245, 239, 246, .08), transparent 62%);
}
@media (max-width: 600px) {
	.entry-content > .rvz-breadcrumb:first-child::after {
		height: 360px;
	}
}

/* UX pass: one left rim for the whole text column */
.entry-content > p,
.entry-content > ul,
.entry-content > ol,
.rvz-section > p,
.rvz-section > ul,
.rvz-section > ol {
	/* Match the content column exactly (NOT `none`: core sets max-width in the same
	   low-specificity :where() rule, so `none` here made prose full-bleed while the
	   headings stayed at 720px — the same misalignment mirrored). */
	max-width: var(--wp--style--global--content-size, 740px);
}

/* UX pass: game-tile density */
.rvz-game__media {
	aspect-ratio: 4 / 5;
}
.rvz-games {
	grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
}
@media (max-width: 480px) {
	.rvz-games {
		grid-template-columns: repeat(2, minmax(0, 1fr));
		gap: 12px;
	}
	.rvz-game__body { padding: 11px 11px 12px; }
	.rvz-game__media--css { font-size: 24px; }
	.rvz-game__rtp { right: 7px; bottom: 7px; padding: 3px 7px; font-size: 11px; }
	/* At ~150px the pill label would wrap; keep it one line and full width. */
	.rvz-game__play { width: 100%; padding: 10px 8px; font-size: 12px; }
}

/* UX pass: game cards keep their CTA on one baseline */
.rvz-game {
	display: flex;
	flex-direction: column;
}
.rvz-game__body {
	display: flex;
	flex-direction: column;
	flex: 1 1 auto;
}
.rvz-game__meta {
	margin-bottom: 2px;
}
.rvz-game__play {
	margin-top: auto;
}


/* =========================================================================== */
/* =========================================================================== */

/* Long-word safety net */
h1, h2, h3, .rvz-brand__word, .rvz-brand__cluster {
	overflow-wrap: break-word;
	word-break: normal;
	hyphens: auto;
}
h1 { -webkit-hyphens: auto; }

/* ---- Focus ring: alarm-blue, visible on every surface -------------------------- */
:where(a, button, summary, input, select, textarea, [tabindex]):focus-visible {
	outline: 3px solid var(--wp--preset--color--chrome);
	outline-offset: 2px;
	border-radius: 0;
}

/* Dot-accent mark (header/footer wordmark) */
.rvz-brand__mark {
	flex: 0 0 auto;
	position: relative;
	width: 20px;
	height: 20px;
	display: grid;
	place-items: center;
	border-radius: 50%;
	border: 1px solid rgba(211, 196, 212, .38);
	background: transparent;
	transition: border-color .16s ease, box-shadow .16s ease;
}
.rvz-brand__mark::after {
	content: "";
	width: 7px;
	height: 7px;
	border-radius: 50%;
	background: var(--wp--preset--color--chrome);
}
.rvz-brand:hover .rvz-brand__mark {
	border-color: var(--wp--preset--color--chrome);
	box-shadow: 0 0 0 3px rgba(245, 239, 246, .1);
}
/* the old inline SVG monogram is no longer shipped; belt-and-braces if cached */
.rvz-brand__mark svg { display: none; }

/* ---- Game-category grid (the hub's primary navigation) --------------------
   Four equal cards on desktop, two on tablet, one on phone. Each card is a whole
   link (44px+ tap target by construction) with a mono count in num. */
.rvz-catgrid {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(230px, 1fr));
	gap: 14px;
	list-style: none;
	margin: 24px 0 0;
	padding-left: 0;
}
.rvz-cat {
	position: relative;
	display: flex;
	flex-direction: column;
	gap: 7px;
	padding: 20px 18px 18px;
	border-radius: 0;
	background: var(--wp--preset--gradient--card);
	border: 1px solid rgba(245, 239, 246, .28);
	transition: border-color .16s ease, transform .16s ease, background .16s ease;
}
.rvz-cat:hover { border-color: rgba(211, 196, 212, .42); transform: translateY(-2px); }
.rvz-cat__ico {
	width: 38px;
	height: 38px;
	display: grid;
	place-items: center;
	border-radius: 0;
	background: rgba(165, 41, 174, .14);
	border: 1px solid rgba(165, 41, 174, .3);
	font-size: 19px;
	line-height: 1;
}
.rvz-cat__title {
	font-family: var(--wp--preset--font-family--heading);
	font-size: 17px;
	font-weight: 400;
	letter-spacing: -.4px;
	color: var(--wp--preset--color--heading);
}
.rvz-cat__title a { color: inherit; text-decoration: none; }
/* Stretch the title link over the whole card so the entire tile is clickable. */
.rvz-cat__title a::after { content: ""; position: absolute; inset: 0; border-radius: 0; }
.rvz-cat__sub { font-size: 13.5px; line-height: 1.55; color: var(--wp--preset--color--muted); margin: 0; }
.rvz-cat__count {
	font-family: var(--wp--preset--font-family--mono);
	font-size: 12.5px;
	color: var(--wp--preset--color--chrome);
}
@media (prefers-reduced-motion: reduce) {
	.rvz-cat:hover { transform: none; }
}

/* ---- Live-dealer table list ----------------------------------------------
   A list, not a grid: live tables are read by limit and language, both of which
   are figures, so they belong in a mono column that lines up vertically. */
.rvz-tables { display: grid; gap: 10px; list-style: none; padding-left: 0; margin: 22px 0 0; }
.rvz-tbl {
	display: grid;
	grid-template-columns: minmax(0, 1.5fr) minmax(0, 1fr) auto;
	align-items: center;
	gap: 8px 16px;
	padding: 14px 16px;
	border-radius: 0;
	background: var(--wp--preset--gradient--card);
	border: 1px solid rgba(255, 255, 255, .12);
}
.rvz-tbl__name { font-weight: 600; font-size: 15px; color: var(--wp--preset--color--contrast); }
.rvz-tbl__prov { font-size: 13px; color: var(--wp--preset--color--muted); }
.rvz-tbl__lim {
	font-family: var(--wp--preset--font-family--mono);
	font-size: 13.5px;
	color: var(--wp--preset--color--figure);
	white-space: nowrap;
}
@media (max-width: 600px) {
	.rvz-tbl { grid-template-columns: 1fr auto; }
	.rvz-tbl__prov { grid-column: 1; }
	.rvz-tbl__lim { grid-column: 2; grid-row: 1 / span 2; }
}

/* ---- Crash-multiplier ladder (aviator) -----------------------------------
   Illustrates how a crash round ends, with the round-outcome bands the page
   explains in prose. Decorative bars only — no live data, no promised result. */
.rvz-ladder { display: grid; gap: 8px; list-style: none; padding-left: 0; margin: 22px 0 0; }
.rvz-ladder li {
	display: grid;
	grid-template-columns: 62px 1fr auto;
	align-items: center;
	gap: 12px;
	font-size: 14px;
	color: var(--wp--preset--color--body);
}
.rvz-ladder .x {
	font-family: var(--wp--preset--font-family--mono);
	font-size: 14.5px;
	color: var(--wp--preset--color--figure);
}
.rvz-ladder .bar {
	height: 9px;
	border-radius: 0;
	background: rgba(255, 255, 255, .07);
	overflow: hidden;
}
.rvz-ladder .bar i {
	display: block;
	height: 100%;
	border-radius: 0;
	background: var(--wp--preset--gradient--jewel);
}
.rvz-ladder .n { font-family: var(--wp--preset--font-family--mono); font-size: 13px; color: var(--wp--preset--color--muted); }

/* ---- Provider marks: wordmark chips, never a real brand logo file --------- */
.rvz-provider {
	display: grid;
	place-items: center;
	padding: 0 14px;
	border-radius: 0;
	background: rgba(255, 255, 255, .035);
	border: 1px solid rgba(245, 239, 246, .32);
	font-family: var(--wp--preset--font-family--heading);
	font-size: 12.5px;
	font-weight: 400;
	letter-spacing: 0;
	text-align: center;
	color: var(--wp--preset--color--dim);
}

/* ---- Inline TOC on the long guide pages ---------------------------------- */
.rvz-toc {
	margin: 26px 0 0;
	padding: 18px 20px;
	border-radius: 0;
	background: rgba(255, 255, 255, .03);
	border-left: 3px solid var(--wp--preset--color--chrome);
}
.rvz-toc p { margin: 0 0 10px; font-size: 13px; font-weight: 700; letter-spacing: .4px; text-transform: uppercase; color: var(--wp--preset--color--muted); }
.rvz-toc ul { margin: 0; padding-left: 18px; display: grid; gap: 6px; }
.rvz-toc li { font-size: 14.5px; }

/* ---- UX pass: chip rail, category grid, wide catalogue --------------------
   Found by shooting the built pages at 360/768/1024/1440. See polish_game.py. */

/* `.rvz-provider` is display:grid, so an unstyled `.rvz-chips` container stacked the
   studio marks one per row. This is a chip RAIL. */
.rvz-chips {
	display: flex;
	flex-wrap: wrap;
	gap: 10px;
	margin: 18px 0 0;
}
.rvz-chips .rvz-provider {
	height: 44px;
	min-width: 138px;
	flex: 0 1 auto;
}
@media (max-width: 420px) {
	.rvz-chips .rvz-provider { min-width: 0; flex: 1 1 calc(50% - 5px); }
}

/* Four category cards in a 740px column: 260px lands on 2x2, not 3 + orphan. */
.rvz-catgrid {
	grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
}

/* The catalogue grids get the wide column (see the alignwide wrappers in the page
   markup); inside it, ask for a denser tile so a row reads as a shelf. */
/* 272px resolves to FOUR tiles in the 1260px wide column, three at 1024 and two at */
.alignwide > .rvz-games,
.alignwide .rvz-games {
	grid-template-columns: repeat(auto-fit, minmax(272px, 1fr));
}

/* Azerbaijani headlines are long, so the last word of a hero regularly falls to a
   line of its own ("...Kazino / AZ"). Let the browser even the lines out instead of
   leaving a one-word widow under a 56px headline. */
h1, h2 { text-wrap: balance; }
.rvz-lead { text-wrap: pretty; }


/* =========================================================================== */

/* Squared geometry: knock ~40% off every inherited card radius. */
.rvz-cat,
.rvz-cat__title a::after,
.rvz-card,
.rvz-game,
.rvz-panel,
.rvz-note,
.rvz-steps li,
.rvz-faq,
.rvz-offer { border-radius: 0; }
.rvz-cat__ico,
.rvz-game__thumb,
.rvz-provider,
.rvz-chip { border-radius: 0; }

/* Wordmark: "game" is the weight-carrying half on this domain (royalevegas-az.net),
   so the emphasis order is flipped versus the sibling's "Royale"-first lockup. */
.rvz-brand__lock { gap: 4px; }
.rvz-brand__word {
	font-weight: 700;
	letter-spacing: -.2px;
	text-transform: lowercase;
}
.rvz-brand__cluster {
	font-weight: 500;
	letter-spacing: .6px;
	text-transform: lowercase;
	color: var(--wp--preset--color--muted);
}
.rvz-brand:hover .rvz-brand__cluster { color: var(--wp--preset--color--dim); }

/* Mono figures: Space Mono runs small at a given px, so nudge the tracking in
   and the brightness up — every number on this site is a claim being cited. */
.rvz-num,
.rvz-num * {
	font-family: var(--wp--preset--font-family--mono);
	letter-spacing: -.2px;
	font-variant-numeric: tabular-nums;
	color: var(--wp--preset--color--figure);
}

/* Ambient field: two cold alarm-blue washes instead of the inherited warm pair.
   Muted to .07/.05 because on a #0C0D2A canvas anything stronger greys the ink
   out and costs body copy its 4.5:1. */
.wp-site-blocks::before {
	background:
		radial-gradient(1100px 560px at 82% -10%, rgba(245, 239, 246, .07), transparent 62%),
		radial-gradient(820px 460px at 8% 2%, rgba(165, 41, 174, .05), transparent 58%);
}

/* Hairline rims read better than glows in a monochrome palette. */
.rvz-badge { border-radius: 0; }
:root {
	--rvz-card-border: 1px solid rgba(245, 239, 246, .20);
	--rvz-card-border-strong: 1px solid rgba(245, 239, 246, .34);
}

/* Provider chip rows */
.rvz-chips {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 10px;
}
.rvz-chips .rvz-provider {
	display: inline-flex;
	width: auto;
	height: auto;
	min-height: 44px;
	padding: 10px 16px;
	flex: 0 0 auto;
}

/* Step lists */
.rvz-steps {
	list-style: none;
	padding-left: 0;
	margin: 24px 0 0;
	display: grid;
	gap: 14px;
	counter-reset: none;
}
.rvz-steps > li::marker { content: none; }
@media (min-width: 780px) {
	.rvz-steps { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
.rvz-step__num { display: block; }
.rvz-step__title { margin-top: 0; }

/* Crash-mechanics panel */
.rvz-flight {
	position: relative;
	padding: 24px 22px;
	border-radius: 0;
	background: var(--wp--preset--gradient--card);
	border: var(--rvz-card-border);
	overflow: hidden;
}

/* RTP badge: work in BOTH slots it gets authored into */
.rvz-game__meta .rvz-game__rtp,
.rvz-game__body .rvz-game__rtp {
	position: static;
	right: auto;
	bottom: auto;
	display: inline-flex;
	align-items: center;
	flex: 0 0 auto;
}
/* The meta row is space-between with provider + tag + badge; let it wrap on the
   narrow tracks rather than squeeze the RTP figure out of legibility. */
.rvz-game__meta {
	flex-wrap: wrap;
	gap: 6px 8px;
}

/* Card labels outside the art: same escape, same fix */
.rvz-game__meta .rvz-tag,
.rvz-game__body .rvz-tag,
.rvz-tbl .rvz-tag,
.rvz-compare .rvz-tag,
p .rvz-tag,
li .rvz-tag {
	position: static;
	top: auto;
	left: auto;
	display: inline-flex;
	align-items: center;
	flex: 0 0 auto;
	background: rgba(245, 239, 246, .09);
	border: 1px solid rgba(245, 239, 246, .32);
	/* `muted`, not `dim`. The ground here is a COMPOSITE — a 9% bone wash over whatever
	   panel the tag lands on — so no palette-level checker can see the pair. Measured on
	   the raised panel it composites to rgb(36, 39, 73), where dim (#B8AEBA) is 4.38:1 and
	   muted (#C5BAC7) is 5.21:1. dim is this palette's 12px legal-line ink; a badge was
	   never its job. */
	color: var(--wp--preset--color--muted);
	letter-spacing: .3px;
	font-weight: 700;
	/* 10px/800 with tracking is at the rim of legible; the badge exemption from the
	   15px prose floor is not a reason to sit at the floor of that exemption either. */
	font-size: 11.5px;
}
/* the semantic variants keep their own ink wherever they sit */
.rvz-game__meta .rvz-tag--hot,
.rvz-game__body .rvz-tag--hot,
p .rvz-tag--hot,
li .rvz-tag--hot {
	background: var(--rvz-hot);
	border-color: var(--rvz-hot);
	color: #FFFFFF;
}
.rvz-game__meta .rvz-tag--jackpot,
.rvz-game__body .rvz-tag--jackpot,
p .rvz-tag--jackpot,
li .rvz-tag--jackpot {
	background: var(--wp--preset--gradient--chrome);
	border-color: transparent;
	color: var(--wp--preset--color--ink);
}

/* Card monogram tile */
.rvz-game__mono,
.rvz-game__media--css > span:not([class]) {
	font-family: var(--wp--preset--font-family--heading);
	font-weight: 400;
	font-size: clamp(30px, 8vw, 44px);
	letter-spacing: 1px;
	line-height: 1;
	color: rgba(211, 196, 212, .3);
	user-select: none;
}
/* A monogram needs far less room than a poster: the inherited 3/4 portrait well left
   a ~370px empty column above a 3-line card body. Squarer reads as a shelf label. */
.rvz-game .rvz-game__media--css {
	aspect-ratio: 5 / 4;
}
@media (max-width: 480px) {
	.rvz-game .rvz-game__media--css { aspect-ratio: 4 / 3; }
}

/* Highlight column on a NATIVE core/table */
.rvz-table--hi3 thead th:nth-child(3),
.rvz-table--hi3 tbody td:nth-child(3) {
	background: rgba(245, 239, 246, .08);
	color: var(--wp--preset--color--chrome);
	font-weight: 700;
}

/* =========================================================================== */

/* Wordmark: the jeton beside the letter */
.rvz-brand__lock {
	gap: 2px;
	align-items: flex-start;
	flex-direction: column;
}
.rvz-brand__word {
	font-family: var(--wp--preset--font-family--heading);
	font-weight: 400;
	font-size: 20px;
	line-height: 1.05;
	letter-spacing: -0.4px;
	text-transform: none;
	color: var(--wp--preset--color--heading);
	transition: color .18s ease;
}
.rvz-brand__cluster {
	font-family: var(--wp--preset--font-family--mono);
	font-weight: 400;
	font-size: 10.5px;
	letter-spacing: 2.4px;
	text-transform: uppercase;
	color: var(--wp--preset--color--jewel-lit);
}
.rvz-brand:hover .rvz-brand__word { color: var(--wp--preset--color--chrome); }
.rvz-brand:hover .rvz-brand__cluster { color: var(--wp--preset--color--chrome-soft); }
.rvz-brand--footer .rvz-brand__word { font-size: 19px; }
@media (max-width: 520px) {
	.rvz-brand__word { font-size: 17.5px; }
	.rvz-brand__cluster { font-size: 9.5px; letter-spacing: 1.8px; }
}

/* The jeton mark: engraved rim, no dot */
.rvz-brand__mark {
	width: 30px;
	height: 30px;
	border: 0;
	background: transparent;
	box-shadow: none;
	display: grid;
	place-items: center;
	flex: 0 0 auto;
}
.rvz-brand__mark::after { content: none; }
.rvz-brand__mark svg { display: block; }
.rvz-brand:hover .rvz-brand__mark { border-color: transparent; box-shadow: none; }
.rvz-shield { transition: transform .18s ease; }
.rvz-brand:hover .rvz-shield { transform: translateY(-1.5px); }
@media (max-width: 780px) {
	.rvz-brand__mark { width: 26px; height: 26px; }
	.rvz-shield { width: 26px; height: 26px; }
}
.rvz-brand { align-items: center; gap: 10px; }

/* Sharp geometry */
.rvz-card,
.rvz-card-raised,
.rvz-panel,
.rvz-cat,
.rvz-game,
.rvz-offer,
.rvz-flight,
.rvz-demo,
.rvz-statbox,
.rvz-stat-tile,
.rvz-quicklink,
.rvz-feature,
.rvz-step,
.rvz-alert,
.rvz-note,
.rvz-warn,
.rvz-jackpot,
.rvz-promo,
.rvz-table-wrap,
.rvz-toc { border-radius: 0; }
.rvz-cat__ico,
.rvz-quicklink__icon,
.rvz-feature__icon,
.rvz-game__thumb { border-radius: 0; }
.rvz-chip,
.rvz-provider,
.rvz-tag,
.rvz-badge,
.rvz-rating-pill,
.rvz-game__rtp,
.rvz-demo__badge,
.rvz-langtag,
.rvz-filter button,
.rvz-eyebrow { border-radius: 0; }
.rvz-game__media,
.rvz-game__media--css { border-radius: 0 0 0 0; }
.wp-block-button__link,
.wp-element-button { border-radius: 0; }

/* ---- Focus ring ------------------------------------------------------------- */
:where(a, button, summary, input, select, textarea, [tabindex]):focus-visible {
	outline: 3px solid var(--wp--preset--color--chrome);
	outline-offset: 2px;
	border-radius: 0;
}

/* Ambient field */
.wp-site-blocks::before {
	background:
		radial-gradient(900px 620px at 6% 104%, rgba(165, 41, 174, .16), transparent 62%),
		radial-gradient(1100px 300px at 60% -6%, rgba(245, 239, 246, .07), transparent 60%);
}

/* Sora headline guards */
h1, h2 {
	text-wrap: balance;
	-webkit-hyphens: auto;
	hyphens: auto;
}
h1 { word-break: break-word; }

/* ---- In-prose links: plat rule that thickens ------------------------------ */
.entry-content a:not(.wp-element-button):not(.rvz-game__play):not(.rvz-quicklink):not(.rvz-cat) {
	text-decoration-color: rgba(211, 196, 212, .5);
	text-decoration-thickness: 1px;
	text-underline-offset: 3px;
	transition: text-decoration-color .16s ease, text-decoration-thickness .16s ease;
}
.entry-content a:not(.wp-element-button):not(.rvz-game__play):not(.rvz-quicklink):not(.rvz-cat):hover {
	text-decoration-color: var(--wp--preset--color--chrome);
	text-decoration-thickness: 2px;
}

/* ---- Route/quick-nav tiles --------------------------------------------------
   Square-ish glyph plates in a neon tint rather than the sibling's warm accent
   circles, and four across at wide width. */
.rvz-cat__ico,
.rvz-feature__icon,
.rvz-quicklink__icon {
	width: 44px;
	height: 44px;
	font-size: 22px;
	background: rgba(165, 41, 174, .16);
	border-color: rgba(165, 41, 174, .34);
	color: var(--wp--preset--color--chrome);
}
.rvz-catgrid { grid-template-columns: repeat(auto-fit, minmax(min(100%, 258px), 1fr)); gap: 14px; }
.rvz-cat { padding: 20px 18px 18px; }
.rvz-cat__title { font-size: 17.5px; }
.rvz-stats { gap: 14px; }
.rvz-stat__num { font-size: clamp(27px, 3.2vw, 38px); }
@media (max-width: 520px) {
	.rvz-eyebrow { font-size: 11px; letter-spacing: 1.4px; line-height: 1.5; }
}

/* Promo-code field (new on this domain) */
.rvz-promo {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 12px;
	padding: 16px 18px;
	background: var(--wp--preset--gradient--card-raised);
	border: 1px solid rgba(245, 239, 246, .34);
}
.rvz-promo__label {
	font-family: var(--wp--preset--font-family--mono);
	font-size: 11.5px;
	letter-spacing: 1.8px;
	text-transform: uppercase;
	color: var(--wp--preset--color--muted);
	flex: 1 1 100%;
	margin: 0;
}
.rvz-promo__code {
	font-family: var(--wp--preset--font-family--mono);
	font-size: clamp(19px, 2.4vw, 25px);
	font-weight: 500;
	letter-spacing: 2px;
	color: var(--wp--preset--color--heading);
	padding: 10px 16px;
	border: 1px dashed rgba(211, 196, 212, .45);
	border-radius: 0;
	background: rgba(6, 7, 26, .5);
	user-select: all;
}
.rvz-promo__copy {
	font: inherit;
	font-weight: 700;
	font-size: 14px;
	min-height: 44px;
	padding: 11px 20px;
	border: 1px solid transparent;
	border-radius: 0;
	cursor: pointer;
	color: var(--wp--preset--color--ink);
	background: var(--wp--preset--gradient--chrome);
	touch-action: manipulation;
	transition: filter .16s ease, transform .12s ease;
}
.rvz-promo__copy:hover { filter: brightness(1.06); }
.rvz-promo__copy:active { transform: translateY(1px); }
.rvz-promo__done {
	font-family: var(--wp--preset--font-family--mono);
	font-size: 12.5px;
	color: var(--wp--preset--color--cyan);
	margin: 0;
	flex: 1 1 100%;
}
.rvz-promo__done[hidden] { display: none; }
@media (prefers-reduced-motion: reduce) {
	.rvz-promo__copy { transition: none; }
	.rvz-promo__copy:active { transform: none; }
	.rvz-shield, .rvz-brand__word { transition: none; }
	.rvz-brand:hover .rvz-shield { transform: none; }
}

/* Completing the half-inherited card families */
.rvz-catgrid,
.rvz-features,
.rvz-steps {
	display: grid;
	gap: 16px;
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 258px), 1fr));
	margin: 4px 0 0;
}
.rvz-steps { grid-template-columns: repeat(auto-fit, minmax(min(100%, 270px), 1fr)); }

.rvz-cat {
	display: block;
	background: var(--wp--preset--gradient--card);
	border: var(--rvz-card-border);
	text-decoration: none;
	transition: transform .18s ease, border-color .18s ease;
}
.rvz-cat:hover { transform: translateY(-3px); border-color: rgba(211, 196, 212, .34); }
.rvz-cat__title {
	display: block;
	font-weight: 700;
	color: var(--wp--preset--color--contrast);
	margin: 12px 0 6px;
	line-height: 1.3;
}
.rvz-cat__sub,
.rvz-cat__text {
	display: block;
	font-size: 13.5px;
	line-height: 1.55;
	color: var(--wp--preset--color--muted);
	margin: 0;
}
.rvz-cat__count {
	display: inline-block;
	margin-top: 10px;
	font-family: var(--wp--preset--font-family--mono);
	font-size: 11.5px;
	letter-spacing: 1.2px;
	text-transform: uppercase;
	color: var(--wp--preset--color--jewel-lit);
}
/* A whole card that is a link must not also underline its own label. */
a.rvz-cat,
a.rvz-cat:hover { text-decoration: none; }

@media (prefers-reduced-motion: reduce) {
	.rvz-cat { transition: none; }
	.rvz-cat:hover { transform: none; }
}

/* Trust-bar segments */
.rvz-instruments__legal {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 3px 8px;
}
.rvz-seg { display: inline-flex; align-items: center; gap: 5px; }
/* The separator is a TRAILING pseudo-element, not a leading one: as a ::before it */
.rvz-seg:not(:last-child)::after {
	content: "·";
	margin-left: 8px;
	color: rgba(211, 196, 212, .42);
}
.rvz-seg--narrow { display: none; }
@media (max-width: 560px) {
	.rvz-seg--wide { display: none; }
	.rvz-seg--narrow { display: inline-flex; }
	.rvz-seg--clock { display: none; }
	.rvz-instruments__legal { gap: 2px 7px; line-height: 1.45; }
	.rvz-seg:not(:last-child)::after { margin-left: 7px; }
	/* The clock is display:none here, so the RG link becomes the last VISIBLE
	   segment while :last-child still matches the hidden clock — which left a
	   trailing middot dangling after the final item. Silence it explicitly. */
	.rvz-seg:nth-last-child(2)::after { content: none; }
}

/* Core's own outline button style has to work too */
.wp-block-button.is-style-outline > .wp-block-button__link,
.wp-block-button.is-style-outline > .wp-block-button__link:not(.has-background) {
	background: rgba(255, 255, 255, .02) !important;
	color: var(--wp--preset--color--contrast) !important;
	border: 1px solid rgba(211, 196, 212, .3) !important;
	box-shadow: none;
}
.wp-block-button.is-style-outline > .wp-block-button__link:hover {
	border-color: var(--wp--preset--color--chrome) !important;
	color: var(--wp--preset--color--chrome-soft) !important;
	filter: none;
}


/* =========================================================================== */

/* Variable-width guard */
:root {
	font-stretch: 88%;
}

/* Zilla Slab display guards */
h1, h2, h3, .rvz-brand__word, .rvz-eyebrow--serif {
	font-variation-settings: "SOFT" 20, "WONK" 0, "opsz" 96;
	font-optical-sizing: none;
}
h1, h2, h3 {
	overflow-wrap: break-word;
	word-break: normal;
	hyphens: auto;
	text-wrap: balance;
}
h1 {
	-webkit-hyphens: auto;
	font-weight: 700;
}
/* Body copy keeps automatic optical sizing: at 17.5px Zilla Slab is never used,
   but a serif <strong> inside prose inherits the setting otherwise. */
p, li, dd, figcaption {
	font-variation-settings: normal;
}

/* Ambient field */
.wp-site-blocks::before {
	background:
		radial-gradient(680px 520px at 14% -10%, rgba(211, 196, 212, .16), transparent 64%),
		radial-gradient(900px 420px at 92% 106%, rgba(165, 41, 174, .16), transparent 62%);
}
::selection {
	background: rgba(211, 196, 212, .32);
	color: #FBF6FB;
}

/* Engraved plate geometry */
.rvz-card, .rvz-panel, .rvz-cat, .rvz-step, .rvz-faq, .rvz-toc, .rvz-note, .rvz-warn,
.rvz-table-wrap, .rvz-statbox, .rvz-shot, .rvz-kyc__row, .rvz-rail__plate {
	border-radius: 0;
}
.rvz-toc { border-radius: 0; }
.rvz-game__thumb, .rvz-game__media--css { border-radius: 0 0 0 0; }
.wp-element-button, .rvz-game__play, .rvz-quicklink { border-radius: 0; }
.rvz-badge, .rvz-eyebrow, .rvz-seg--clock { border-radius: 0; }

/* Wordmark: a monolithic display lockup */
.rvz-brand { align-items: center; gap: 11px; }
.rvz-brand__lock {
	gap: 3px;
	align-items: flex-start;
	flex-direction: column;
}
.rvz-brand__word {
	font-family: var(--wp--preset--font-family--heading);
	font-weight: 400;
	font-size: 21px;
	line-height: 1;
	letter-spacing: 0;
	text-transform: none;
	color: var(--wp--preset--color--heading);
	transition: color .18s ease;
}
.rvz-brand__cluster {
	font-family: var(--wp--preset--font-family--body);
	font-weight: 500;
	font-size: 11px;
	letter-spacing: .5px;
	text-transform: none;
	color: var(--wp--preset--color--muted);
	transition: color .18s ease;
}
.rvz-brand__mark {
	width: 34px;
	height: 34px;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	border: 0;
	background: none;
	box-shadow: none;
}
.rvz-brand__mark::after { content: none; }
.rvz-brand__mark svg { display: block; }
.rvz-shield rect[stroke], .rvz-shield path { transition: stroke .18s ease; }
.rvz-brand:hover .rvz-brand__word { color: var(--wp--preset--color--chrome-soft); }
.rvz-brand:hover .rvz-brand__cluster { color: var(--wp--preset--color--chrome); }
.rvz-brand:hover .rvz-shield { transform: none; }
.rvz-brand--footer .rvz-brand__word { font-size: 19px; }

/* Buttons: a struck blue plate */
.wp-element-button, .wp-block-button__link {
	box-shadow: inset 0 1px 0 rgba(255, 255, 255, .38), inset 0 -1px 0 rgba(3, 4, 17, .32);
	text-transform: none;
	letter-spacing: .1px;
}
.wp-element-button:hover, .wp-block-button__link:hover { filter: brightness(1.05); }
.wp-element-button:active, .wp-block-button__link:active { transform: translateY(1px); }

/* ---- In-prose links: blue light rule that thickens ---------------------------- */
.entry-content a:not(.wp-element-button):not(.rvz-game__play):not(.rvz-quicklink):not(.rvz-cat):not(.rvz-seg) {
	color: var(--wp--preset--color--chrome-soft);
	text-decoration-color: rgba(235, 222, 237, .5);
	text-decoration-thickness: 1px;
	text-underline-offset: 3px;
}
.entry-content a:not(.wp-element-button):not(.rvz-game__play):not(.rvz-quicklink):not(.rvz-cat):not(.rvz-seg):hover {
	color: #EDE5EE;
	text-decoration-color: currentColor;
	text-decoration-thickness: 2px;
}

/* Wizard-step figure */
.rvz-steps {
	display: grid;
	grid-template-columns: 1fr;
	gap: 0;
	margin: 26px 0 8px;
	padding: 0;
	list-style: none;
	border-left: 1px solid rgba(211, 196, 212, .28);
}
.rvz-steps > li, .rvz-step {
	position: relative;
	margin: 0;
	padding: 4px 0 26px 54px;
	border: 0;
	background: none;
	border-radius: 0;
}
.rvz-steps > li:last-child, .rvz-step:last-child { padding-bottom: 4px; }
/* The figure comes from the MARKUP (.rvz-step__num), not a CSS counter: the plate
   is content a screen reader should hear as part of the step, and a counter would
   also double up with the span the page authors already write. */
.rvz-step__num {
	position: absolute;
	left: -18px;
	top: 0;
	display: flex;
	align-items: center;
	justify-content: center;
	width: 36px;
	height: 36px;
	border-radius: 0;
	background: var(--wp--preset--gradient--chrome);
	color: var(--wp--preset--color--ink);
	font-family: var(--wp--preset--font-family--mono);
	font-size: 13px;
	font-weight: 500;
	letter-spacing: -0.5px;
	box-shadow: 0 6px 18px rgba(0, 0, 0, .5);
}
.rvz-step__title {
	display: block;
	font-family: var(--wp--preset--font-family--heading);
	font-weight: 400;
	font-size: 19px;
	line-height: 1.25;
	color: var(--wp--preset--color--heading);
	margin: 4px 0 6px;
}
.rvz-step__text, .rvz-steps > li > p {
	margin: 0 0 8px;
	color: var(--wp--preset--color--body);
	font-size: 16.5px;
	line-height: 1.62;
}
.rvz-step__hint {
	display: block;
	font-size: 14px;
	color: var(--wp--preset--color--muted);
}
.rvz-step__hint .rvz-num { color: var(--wp--preset--color--figure); }

/* CSS mock-UI frame ("skrinşot" without a screenshot) */
.rvz-shot {
	margin: 22px 0;
	border: 1px solid rgba(245, 239, 246, .28);
	background: linear-gradient(168deg, #181B39 0%, #0C0D2A 100%);
	overflow: hidden;
	box-shadow: 0 18px 44px rgba(0, 0, 0, .55);
}
.rvz-shot__bar {
	display: flex;
	align-items: center;
	gap: 7px;
	padding: 10px 14px;
	background: #242749;
	border-bottom: 1px solid rgba(245, 239, 246, .20);
}
.rvz-shot__dot {
	width: 9px;
	height: 9px;
	border-radius: 50%;
	background: rgba(245, 239, 246, .22);
	flex: none;
}
.rvz-shot__url {
	margin-left: 6px;
	font-family: var(--wp--preset--font-family--mono);
	font-size: 11px;
	letter-spacing: .2px;
	color: var(--wp--preset--color--muted);
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
}
.rvz-shot__body {
	display: grid;
	gap: 12px;
	padding: 20px 18px 22px;
}
.rvz-shot__label {
	display: block;
	font-family: var(--wp--preset--font-family--body);
	font-size: 12.5px;
	font-weight: 600;
	letter-spacing: .4px;
	text-transform: none;
	color: var(--wp--preset--color--muted);
	margin-bottom: 6px;
}
.rvz-shot__field {
	display: flex;
	align-items: center;
	min-height: 44px;
	padding: 0 14px;
	border: 1px solid rgba(245, 239, 246, .32);
	border-radius: 0;
	background: rgba(245, 239, 246, .04);
	font-family: var(--wp--preset--font-family--mono);
	font-size: 13px;
	color: var(--wp--preset--color--dim);
}
.rvz-shot__field--focus {
	border-color: var(--wp--preset--color--chrome);
	box-shadow: 0 0 0 3px rgba(211, 196, 212, .18);
}
.rvz-shot__check {
	display: flex;
	gap: 10px;
	align-items: flex-start;
	font-size: 14px;
	line-height: 1.5;
	color: var(--wp--preset--color--body);
}
.rvz-shot__box {
	flex: none;
	width: 18px;
	height: 18px;
	margin-top: 2px;
	border-radius: 0;
	border: 1px solid var(--wp--preset--color--chrome-deep);
	background: rgba(211, 196, 212, .12);
}
.rvz-shot__btn {
	display: flex;
	align-items: center;
	justify-content: center;
	min-height: 46px;
	border-radius: 0;
	background: var(--wp--preset--gradient--chrome);
	color: var(--wp--preset--color--ink);
	font-weight: 700;
	font-size: 15px;
	box-shadow: inset 0 1px 0 rgba(255, 255, 255, .38);
}
.rvz-shot__cap, .rvz-figcap {
	margin: 8px 0 0;
	font-size: 13px;
	line-height: 1.5;
	color: var(--wp--preset--color--muted);
}
.rvz-shot__cap strong { color: var(--wp--preset--color--dim); }

/* KYC document checklist */
.rvz-kyc {
	display: grid;
	gap: 10px;
	margin: 22px 0;
	padding: 0;
	list-style: none;
}
.rvz-kyc__row {
	display: grid;
	grid-template-columns: 34px 1fr auto;
	gap: 14px;
	align-items: center;
	padding: 14px 16px;
	border: 1px solid rgba(245, 239, 246, .24);
	background: rgba(245, 239, 246, .03);
}
.rvz-kyc__ico {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 34px;
	height: 34px;
	border-radius: 0;
	border: 1px solid rgba(211, 196, 212, .38);
	background: rgba(211, 196, 212, .1);
	color: var(--wp--preset--color--chrome);
	font-family: var(--wp--preset--font-family--mono);
	font-size: 12px;
	font-weight: 500;
}
.rvz-kyc__name {
	display: block;
	font-weight: 600;
	color: var(--wp--preset--color--heading);
	font-size: 16px;
	line-height: 1.35;
}
.rvz-kyc__meta {
	display: block;
	margin-top: 3px;
	font-family: var(--wp--preset--font-family--mono);
	font-size: 12px;
	color: var(--wp--preset--color--muted);
}
.rvz-kyc__state {
	font-size: 12.5px;
	font-weight: 600;
	letter-spacing: .3px;
	padding: 5px 10px;
	border-radius: 0;
	white-space: nowrap;
	border: 1px solid rgba(92, 200, 224, .4);
	background: rgba(92, 200, 224, .12);
	color: var(--wp--preset--color--cyan);
}
.rvz-kyc__state--wait {
	border-color: rgba(211, 196, 212, .4);
	background: rgba(211, 196, 212, .12);
	color: var(--wp--preset--color--chrome);
}
@media (max-width: 560px) {
	.rvz-kyc__row {
		grid-template-columns: 34px 1fr;
	}
	.rvz-kyc__state {
		grid-column: 2;
		justify-self: start;
	}
}

/* ---- Mascot plate ----------------------------------------------------------- */
.rvz-rail {
	margin: 24px 0;
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 10px;
}
.rvz-rail__plate {
	display: flex;
	align-items: flex-end;
	justify-content: center;
	width: 100%;
	padding: 18px 18px 0;
	border: 1px solid rgba(211, 196, 212, .22);
	border-radius: 0;
	background:
		radial-gradient(420px 220px at 50% 8%, rgba(211, 196, 212, .12), transparent 68%),
		linear-gradient(168deg, #181B39 0%, #0C0D2A 100%);
}
.rvz-rail__art { max-width: 100%; height: auto; }
.rvz-rail__cap {
	margin: 0;
	text-align: center;
	font-size: 13px;
	color: var(--wp--preset--color--muted);
}
.rvz-rail--inline { max-width: 320px; margin-inline: auto; }

/* ---- Trust rail: blue hairline separators ------------------------------------ */
.rvz-seg:not(:last-child)::after {
	background: rgba(211, 196, 212, .38);
}
.rvz-instruments {
	border-bottom: 1px solid rgba(211, 196, 212, .2);
}

/* ---- Focus ring: blue, visible on jewel and on blue fills ----------------- */
:where(a, button, summary, input, select, textarea, [tabindex]):focus-visible {
	outline: 3px solid var(--wp--preset--color--chrome-soft);
	outline-offset: 2px;
	border-radius: 0;
}

/* ---- Motion ----------------------------------------------------------------- */
@media (prefers-reduced-motion: reduce) {
	.rvz-cat:hover, .rvz-card:hover, .wp-element-button:active { transform: none; }
	* { transition-duration: .01ms !important; animation-duration: .01ms !important; }
}


/* ===========================================================================
   STEP-7 UX pass — fixes measured on the built pages (shoot_qeyd.js)
   =========================================================================== */

/* Table / figure captions */
.wp-element-caption,
figcaption.wp-element-caption,
.wp-block-table figcaption {
	color: var(--wp--preset--color--dim);
	font-size: 13px;
	line-height: 1.55;
	margin-top: 10px;
	padding-left: 12px;
	border-left: 2px solid rgba(211, 196, 212, .38);
	text-align: left;
}

/* Buttons must wrap */
.wp-element-button,
.wp-block-button__link {
	white-space: normal;
	overflow-wrap: anywhere;
	text-align: center;
	min-height: 44px;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	max-width: 100%;
}
.wp-block-button {
	max-width: 100%;
}


/* =========================================================================== */
.rvz-stat-tile {
	border-radius: 0;
	display: flex;
	flex-direction: column;
	gap: 6px;
}
.rvz-stat__num,
.rvz-stat__label {
	display: block;
}
.rvz-stat__num {
	font-size: clamp(22px, 2.4vw, 27px);
	letter-spacing: -0.3px;
}
.rvz-stat__label {
	line-height: 1.35;
	color: var(--wp--preset--color--muted);
}


/* =========================================================================== */
.rvz-nav { display: flex; align-items: center; min-width: 0; }
.rvz-nav ul { list-style: none; margin: 0; padding: 0; }
.rvz-nav__list { display: flex; align-items: center; gap: 2px; }
.rvz-nav__list a,
.rvz-nav__panel a {
	display: flex;
	align-items: center;
	font-size: 14px;
	font-weight: 600;
	color: var(--wp--preset--color--body);
	text-decoration: none;
	padding: 10px 12px;
	min-height: 44px;
	border-radius: 0;
	white-space: nowrap;
	transition: color .16s ease, background-color .16s ease;
}
.rvz-nav__list a:hover,
.rvz-nav__panel a:hover,
.rvz-nav__list a[aria-current="page"],
.rvz-nav__panel a[aria-current="page"] {
	color: var(--wp--preset--color--contrast);
	background: rgba(245, 239, 246, .08);
}
.rvz-nav__list a[aria-current="page"],
.rvz-nav__panel a[aria-current="page"] {
	box-shadow: inset 0 -2px 0 var(--wp--preset--color--chrome);
}
/* The current-page marker above is a RESTING box-shadow at specificity 0,2,1, and the
   site's focus ring is also a box-shadow but only 0,1,1 (`a:focus-visible`). So the
   marker won the cascade and REPLACED the ring: tabbing onto the nav item for the page
   you are already on produced the chrome underline and nothing else, and because the
   outline in that rule is deliberately transparent (kept only for forced-colors), the
   one nav link on every page had no visible focus indicator at all — WCAG 2.4.7/1.4.11.
   The same trap is already documented one section down for the primary CTA; the
   aria-current nav item was the case that got missed. Both shadows are composed here
   rather than the ring overriding the marker, so the current page stays identifiable
   while it is focused. Specificity 0,3,1 beats the marker. */
.rvz-nav__list a[aria-current="page"]:focus-visible,
.rvz-nav__panel a[aria-current="page"]:focus-visible {
	box-shadow:
		inset 0 -2px 0 var(--wp--preset--color--chrome),
		0 0 0 2px var(--wp--preset--color--base),
		0 0 0 5px #A529AE;
	outline: 3px solid transparent;
	outline-offset: 3px;
}
@media (forced-colors: active) {
	.rvz-nav__list a[aria-current="page"]:focus-visible,
	.rvz-nav__panel a[aria-current="page"]:focus-visible {
		outline: 3px solid CanvasText;
		box-shadow: none;
	}
}
.rvz-nav__mobile { display: none; position: relative; }
.rvz-nav__mobile > summary {
	display: flex;
	align-items: center;
	gap: 8px;
	min-height: 44px;
	padding: 10px 14px;
	border: 1px solid rgba(245, 239, 246, .34);
	border-radius: 0;
	font-size: 14px;
	font-weight: 600;
	color: var(--wp--preset--color--contrast);
	cursor: pointer;
	list-style: none;
	white-space: nowrap;
}
.rvz-nav__mobile > summary::-webkit-details-marker { display: none; }
.rvz-nav__bars {
	width: 16px;
	height: 2px;
	background: var(--wp--preset--color--chrome);
	box-shadow: 0 5px 0 var(--wp--preset--color--chrome), 0 -5px 0 var(--wp--preset--color--chrome);
}
.rvz-nav__mobile[open] > summary { border-color: rgba(211, 196, 212, .5); }
.rvz-nav__panel {
	position: absolute;
	right: 0;
	top: calc(100% + 8px);
	z-index: 60;
	min-width: 246px;
	display: flex;
	flex-direction: column;
	gap: 2px;
	padding: 8px;
	background: var(--wp--preset--color--surface-raised);
	border: 1px solid rgba(245, 239, 246, .28);
	border-radius: 0;
	box-shadow: 0 24px 64px rgba(0, 0, 0, .7);
}
.rvz-nav__panel a { white-space: normal; }

@media (max-width: 860px) {
	.rvz-nav__list { display: none; }
	.rvz-nav__mobile { display: block; }
}

/* Header at phone widths */
@media (max-width: 520px) {
	.rvz-brand__cluster { display: none; }
	.rvz-brand__word { font-size: 18px; }
	.rvz-brand { gap: 8px; }
	.rvz-brand__mark { width: 30px; height: 30px; }
	.rvz-brand__mark svg { width: 26px; height: 26px; }
}
@media (max-width: 400px) {
	.rvz-brand__word { font-size: 16.5px; }
	.rvz-nav__mobile > summary { padding: 10px 11px; }
}

/* Stat tiles: the value is not always a figure */
.rvz-statbox {
	grid-template-columns: repeat(auto-fill, minmax(min(100%, 152px), 1fr));
}
.rvz-stat__num {
	font-size: clamp(19px, 2.1vw, 25px);
	/* break-word, not anywhere: a mid-word break in a 25px display grotesque reads as a
	   rendering fault. Long values are shortened in the copy instead; this is the
	   safety net for the next author who forgets. */
	overflow-wrap: break-word;
	line-height: 1.12;
}


/* =========================================================================== */

/* Undo the inherited variable-width hack */
:root {
	font-stretch: normal;
}
.rvz-num, .rvz-figure__v, .rvz-flow__meta, code, kbd, samp {
	font-family: var(--wp--preset--font-family--mono);
	font-variant-numeric: tabular-nums;
	letter-spacing: -0.2px;
	font-size: .95em;
}

/* Zilla Slab guards */
h1, h2, h3, .rvz-brand__word, .rvz-eyebrow--serif {
	font-variation-settings: normal;
	font-optical-sizing: auto;
}
h1 { font-weight: 700; letter-spacing: -0.9px; }
h2 { font-weight: 600; }
h3 { font-weight: 600; letter-spacing: -0.3px; }
h1, h2, h3 {
	overflow-wrap: break-word;
	word-break: normal;
	hyphens: auto;
	text-wrap: balance;
}
p, li, dd, figcaption { font-variation-settings: normal; }

/* Ambient field */
.wp-site-blocks::before {
	background:
		linear-gradient(180deg, rgba(211, 196, 212, .13) 0%, rgba(211, 196, 212, 0) 42%),
		radial-gradient(760px 460px at 4% 108%, rgba(165, 41, 174, .17), transparent 66%);
}
::selection {
	background: rgba(211, 196, 212, .3);
	color: #FBF6FB;
}

/* ---- Ledger geometry: rounder than the plate it forked from ------------------ */
.rvz-card, .rvz-panel, .rvz-cat, .rvz-step, .rvz-faq, .rvz-toc, .rvz-note, .rvz-warn,
.rvz-table-wrap, .rvz-statbox, .rvz-shot, .rvz-method, .rvz-figure, .rvz-flow,
.rvz-cutoff, .rvz-check {
	border-radius: 0;
}
.rvz-toc { border-radius: 0; }
.rvz-game__thumb, .rvz-game__media--css { border-radius: 0 0 0 0; }
.wp-element-button, .wp-block-button__link, .rvz-game__play, .rvz-quicklink {
	border-radius: 0;
}
.rvz-badge, .rvz-eyebrow, .rvz-seg--clock, .rvz-chip { border-radius: 0; }

/* ---- Wordmark: shield + a tracked grotesk lockup ---------------------------- */
.rvz-brand { align-items: center; gap: 10px; }
.rvz-brand__lock { gap: 2px; align-items: flex-start; flex-direction: column; }
.rvz-brand__word {
	font-family: var(--wp--preset--font-family--heading);
	font-weight: 400;
	font-size: 19.5px;
	line-height: 1;
	letter-spacing: .3px;
	text-transform: uppercase;
	color: var(--wp--preset--color--heading);
	transition: color .18s ease;
}
.rvz-brand__cluster {
	font-family: var(--wp--preset--font-family--body);
	font-weight: 500;
	font-size: 10.5px;
	letter-spacing: .4px;
	text-transform: none;
	color: var(--wp--preset--color--muted);
	transition: color .18s ease;
}
.rvz-brand__mark {
	width: 34px; height: 34px;
	display: inline-flex; align-items: center; justify-content: center;
	border: 0; background: none; box-shadow: none;
}
.rvz-brand__mark::after { content: none; }
.rvz-brand__mark svg { display: block; }
.rvz-shield path[stroke], .rvz-shield circle { transition: stroke .18s ease; }
.rvz-brand:hover .rvz-brand__word { color: var(--wp--preset--color--chrome-soft); }
.rvz-brand:hover .rvz-brand__cluster { color: var(--wp--preset--color--chrome); }
.rvz-brand:hover .rvz-shield { transform: none; }
.rvz-brand--footer .rvz-brand__word { font-size: 17.5px; }

/* ---- Buttons: a minted coin rim -------------------------------------------- */
.wp-element-button, .wp-block-button__link {
	box-shadow: inset 0 1px 0 rgba(255, 255, 255, .34), inset 0 -1px 0 rgba(3, 4, 17, .3);
	text-transform: none;
	letter-spacing: .15px;
	font-weight: 700;
}
.wp-element-button:hover, .wp-block-button__link:hover { filter: brightness(1.05); }
.wp-element-button:active, .wp-block-button__link:active { transform: translateY(1px); }

/* ---- In-prose links --------------------------------------------------------- */
.entry-content a:not(.wp-element-button):not(.rvz-game__play):not(.rvz-quicklink):not(.rvz-cat):not(.rvz-seg) {
	color: var(--wp--preset--color--chrome-soft);
	text-decoration-color: rgba(235, 222, 237, .46);
	text-decoration-thickness: 1px;
	text-underline-offset: 3px;
}
.entry-content a:not(.wp-element-button):not(.rvz-game__play):not(.rvz-quicklink):not(.rvz-cat):not(.rvz-seg):hover {
	color: #EDE5EE;
	text-decoration-color: currentColor;
	text-decoration-thickness: 2px;
}

/* .rvz-flow — the transfer-rail schematic */
.rvz-flow {
	display: flex;
	flex-wrap: wrap;
	gap: 10px;
	align-items: stretch;
	margin: 24px 0;
	padding: 18px 16px;
	list-style: none;
	background: var(--wp--preset--gradient--card);
	border: 1px solid rgba(245, 239, 246, .24);
}
.rvz-flow__node {
	position: relative;
	flex: 1 1 190px;
	min-width: 0;
	margin: 0;
	padding: 14px 15px;
	border-radius: 0;
	background: rgba(245, 239, 246, .04);
	border: 1px solid rgba(245, 239, 246, .20);
	border-top: 2px solid var(--wp--preset--color--jewel);
}
.rvz-flow__node--money { border-top-color: var(--wp--preset--color--chrome); }
.rvz-flow__node + .rvz-flow__node::before {
	content: "";
	position: absolute;
	left: -10px; top: 50%;
	width: 10px; height: 2px;
	background: rgba(211, 196, 212, .5);
}
.rvz-flow__step {
	display: block;
	font-family: var(--wp--preset--font-family--mono);
	font-size: 10.5px;
	letter-spacing: 1.2px;
	text-transform: uppercase;
	color: var(--wp--preset--color--jewel-lit);
	margin-bottom: 6px;
}
.rvz-flow__node--money .rvz-flow__step { color: var(--wp--preset--color--chrome-soft); }
.rvz-flow__name {
	display: block;
	font-family: var(--wp--preset--font-family--heading);
	font-weight: 400;
	font-size: 16.5px;
	line-height: 1.24;
	color: var(--wp--preset--color--heading);
	margin-bottom: 5px;
}
.rvz-flow__meta {
	display: block;
	font-size: 13px;
	line-height: 1.55;
	color: var(--wp--preset--color--body);
}
.rvz-flow__who {
	display: block;
	margin-top: 7px;
	font-size: 12.5px;
	color: var(--wp--preset--color--muted);
}
@media (max-width: 700px) {
	.rvz-flow { flex-direction: column; }
	.rvz-flow__node { flex: 1 1 auto; }
	.rvz-flow__node + .rvz-flow__node::before {
		left: 50%; top: -10px;
		width: 2px; height: 10px;
	}
}

/* .rvz-methods — the method plates */
.rvz-methods {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(238px, 1fr));
	gap: 14px;
	margin: 24px 0;
	padding: 0;
	list-style: none;
}
.rvz-method {
	margin: 0;
	padding: 17px 17px 16px;
	background: var(--wp--preset--gradient--card-raised);
	border: 1px solid rgba(245, 239, 246, .22);
	border-left: 3px solid var(--wp--preset--color--chrome);
}
.rvz-method--wallet { border-left-color: var(--wp--preset--color--jewel); }
.rvz-method--crypto { border-left-color: var(--wp--preset--color--chrome-deep); }
.rvz-method__name {
	display: block;
	font-family: var(--wp--preset--font-family--heading);
	font-weight: 400;
	font-size: 17.5px;
	line-height: 1.2;
	color: var(--wp--preset--color--heading);
}
.rvz-method__type {
	display: block;
	margin: 5px 0 9px;
	font-family: var(--wp--preset--font-family--mono);
	font-size: 10.5px;
	letter-spacing: 1.1px;
	text-transform: uppercase;
	color: var(--wp--preset--color--jewel-lit);
}
.rvz-method__text {
	margin: 0 0 9px;
	font-size: 14.5px;
	line-height: 1.58;
	color: var(--wp--preset--color--body);
}
.rvz-method__check {
	display: block;
	padding-top: 9px;
	border-top: 1px solid rgba(245, 239, 246, .20);
	font-size: 13px;
	line-height: 1.5;
	color: var(--wp--preset--color--muted);
}
.rvz-method__check b { color: var(--wp--preset--color--chrome-soft); font-weight: 600; }

/* .rvz-figure — labelled rows */
.rvz-figure {
	margin: 22px 0;
	padding: 6px 0;
	border: 1px solid rgba(245, 239, 246, .24);
	background: rgba(245, 239, 246, .025);
}
.rvz-figure__row {
	display: flex;
	flex-wrap: wrap;
	gap: 4px 18px;
	align-items: baseline;
	padding: 13px 17px;
	border-bottom: 1px dashed rgba(245, 239, 246, .24);
}
.rvz-figure__row:last-child { border-bottom: 0; }
.rvz-figure__k {
	flex: 1 1 210px;
	min-width: 0;
	font-size: 14.5px;
	line-height: 1.5;
	color: var(--wp--preset--color--body);
}
.rvz-figure__v {
	flex: 0 1 auto;
	font-size: 14.5px;
	font-weight: 500;
	color: var(--wp--preset--color--figure);
	text-align: right;
}
.rvz-figure__v--open {
	font-family: var(--wp--preset--font-family--body);
	font-size: 13.5px;
	letter-spacing: 0;
	color: var(--wp--preset--color--jewel-lit);
	font-style: normal;
}

/* ---- .rvz-cutoff — the Baku processing window -------------------------------- */
.rvz-cutoff {
	display: flex;
	gap: 13px;
	align-items: flex-start;
	margin: 22px 0;
	padding: 15px 17px;
	background: rgba(165, 41, 174, .08);
	border: 1px solid rgba(165, 41, 174, .26);
}
.rvz-cutoff__clock {
	flex: none;
	font-family: var(--wp--preset--font-family--mono);
	font-size: 12px;
	font-weight: 500;
	letter-spacing: .4px;
	padding: 5px 9px;
	border-radius: 0;
	color: #06071A;
	background: var(--wp--preset--color--jewel);
}
.rvz-cutoff p { margin: 0; font-size: 14.5px; line-height: 1.6; color: var(--wp--preset--color--body); }

/* ---- .rvz-check — "nəyi yoxlamalı" list -------------------------------------- */
.rvz-check {
	margin: 22px 0;
	padding: 16px 18px 16px 20px;
	list-style: none;
	background: var(--wp--preset--gradient--card);
	border: 1px solid rgba(245, 239, 246, .24);
	border-left: 3px solid var(--wp--preset--color--jewel);
}
.rvz-check > li {
	position: relative;
	margin: 0 0 11px;
	padding-left: 26px;
	font-size: 15px;
	line-height: 1.6;
	color: var(--wp--preset--color--body);
}
.rvz-check > li:last-child { margin-bottom: 0; }
.rvz-check > li::before {
	content: "";
	position: absolute;
	left: 0; top: .52em;
	width: 13px; height: 7px;
	border-left: 2px solid var(--wp--preset--color--jewel);
	border-bottom: 2px solid var(--wp--preset--color--jewel);
	transform: rotate(-45deg) translateY(-2px);
}

/* ---- Tables: numbers right, labels left ------------------------------------- */
.entry-content .wp-block-table td.rvz-num,
.entry-content .wp-block-table td .rvz-num { white-space: nowrap; }
.entry-content .wp-block-table th { color: var(--wp--preset--color--chrome-soft); }

/* ---- Focus ring: blue, and legible ON a vermilion fill ----------------------- */
:where(a, button, summary, input, select, textarea, [tabindex]):focus-visible {
	outline: 2px solid var(--wp--preset--color--chrome-soft);
	outline-offset: 2px;
	border-radius: 0;
}
.wp-element-button:focus-visible, .wp-block-button__link:focus-visible {
	outline: 2px solid #06071A;
	outline-offset: -4px;
	box-shadow: 0 0 0 3px rgba(235, 222, 237, .85);
}

/* ---- Motion ----------------------------------------------------------------- */
@media (prefers-reduced-motion: reduce) {
	.rvz-brand__word, .rvz-brand__cluster, .rvz-shield path[stroke], .rvz-shield circle,
	.wp-element-button, .wp-block-button__link { transition: none; }
}


/* =========================================================================== */

.rvz-eyebrow,
.rvz-chip--age,
.rvz-langtag,
.rvz-cat__ico,
.rvz-instruments__age {
	color: var(--wp--preset--color--chrome-soft);
}

/* Figures are num, sitewide. The two exceptions are elements that paint their
   own light background and set their own dark ink — inheriting there would put a
   pale figure on a pale fill, which is the same bug in the other direction. */
.rvz-num {
	color: var(--wp--preset--color--figure);
}
/* `.rvz-updated .rvz-num` (two classes) outranks a bare `.rvz-num`, so the date
   line needs its own selector at the same specificity — the reason the first
   pass of this file left exactly one finding standing on all seven pages. */
.rvz-updated .rvz-num {
	color: var(--wp--preset--color--figure);
}

.rvz-cutoff__clock .rvz-num,
.rvz-step__num .rvz-num,
.rvz-shot__btn .rvz-num,
.wp-element-button .rvz-num,
.wp-block-button__link .rvz-num {
	color: inherit;
}

/* The cashier schematic's field labels are data labels, so they take the cyan
   voice rather than a paler blue. */
.rvz-shot__label {
	color: var(--wp--preset--color--jewel-lit);
}

/* The wordmark's cluster tag: quieter than the word above it, and legible on
   both the header canvas and the deeper footer band. */
.rvz-brand__cluster {
	color: var(--wp--preset--color--dim);
}
.rvz-brand:hover .rvz-brand__cluster,
.rvz-brand:focus-visible .rvz-brand__cluster {
	color: var(--wp--preset--color--chrome-soft);
}


/* ===========================================================================
   STEP-7 POLISH — header at phone widths   (appended last, wins)
   =========================================================================== */

/* One money CTA per screen. 781px is the sticky bar's own breakpoint (see */
@media (max-width: 781px) {
	.rvz-header__actions .wp-block-button:not(.rvz-btn-outline) {
		display: none;
	}
	.rvz-header__actions {
		gap: 8px;
	}
}

/* Prefer a word boundary. `anywhere` is kept out of the wrapping decision and
   only `break-word` remains, so a two-word Azerbaijani label wraps between the
   words instead of inside one. */
.wp-element-button,
.wp-block-button__link {
	overflow-wrap: break-word;
	word-break: normal;
}

/* =========================================================================== */

/* A. Zilla Slab is a single-weight, caps-only face */
h1,
h2,
h3,
h4,
.rvz-brand__word,
.rvz-plate__num,
.rvz-eyebrow--serif {
	font-weight: 400;
	font-variation-settings: normal;
	font-optical-sizing: auto;
	-webkit-font-smoothing: antialiased;
}
/* LEADING. The 0.94 / 1.0 above this line were inherited from the donor, whose display
   face was Bebas Neue: caps-only, essentially no descenders, so sub-1.0 leading was safe.
   Zilla Slab has lowercase, and its ink runs 1.036em above the baseline (İ, Ğ) and 0.218em
   below it (q, g, p, y, ğ) — so at leading 1.0 the second line's accents overlapped the
   first line's descenders by ~0.25em. 44 headings wrap to two lines at 360/768/1024px and
   Azerbaijani uses those glyphs in almost every sentence, so this was visible, not
   theoretical: the binding pair is ş/i, a cedilla directly above a dotted i.
   1.20 is not a guess — leading_rwa.js walks both lines of every wrapped heading glyph by
   glyph and measures the ink gap over horizontally OVERLAPPING pairs only. 1.16 still
   collides 8 times; 1.20 is the smallest value that clears everything (+0.018em to spare).
   Re-run `node leading_rwa.js` if the display face or the type scale ever changes. */
h1 { letter-spacing: 0.5px; line-height: 1.2; }
h2 { letter-spacing: 0.4px; line-height: 1.2; }
h3 { letter-spacing: 0.5px; line-height: 1.12; }
h4 { letter-spacing: 0.5px; }

/* Bebas has no lowercase, so a heading containing a lowercase word renders in */
h1, h2, h3, h4 {
	text-transform: uppercase;
	text-wrap: balance;
	overflow-wrap: break-word;
	word-break: normal;
	hyphens: manual;
}

/* Sentence-case is preserved where the "heading" is really prose: the FAQ */
.rvz-faq summary,
.rvz-step__title,
.rvz-faq__answer,
.rvz-cat__title,
.rvz-game__title {
	font-family: var(--wp--preset--font-family--body);
	font-weight: 600;
	text-transform: none;
	letter-spacing: 0;
	line-height: 1.35;
}

/* B. Ambient field */
.wp-site-blocks::before {
	background:
		linear-gradient(270deg, rgba(211, 196, 212, .14) 0%, rgba(211, 196, 212, 0) 38%),
		radial-gradient(680px 420px at 2% -6%, rgba(165, 41, 174, .15), transparent 68%);
}

/* C. The «1» anchor: this identity's dominant graphic anchor */
.rvz-plate {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: 2px;
	margin: 0 0 6px;
	line-height: 1;
}
.rvz-plate__num {
	font-family: var(--wp--preset--font-family--heading);
	font-size: clamp(84px, 17vw, 196px);
	line-height: 0.78;
	letter-spacing: 2px;
	color: var(--wp--preset--color--jewel);
	background: linear-gradient(168deg, #8A1C92 0%, #A529AE 26%, #D3C4D4 88%);
	-webkit-background-clip: text;
	background-clip: text;
	-webkit-text-fill-color: transparent;
	/* A hairline keeps the numerals from dissolving into the graphite where the
	   gradient reaches its darkest stop. */
	-webkit-text-stroke: 1px rgba(138, 28, 146, .16);
}
.rvz-plate__label {
	font-family: var(--wp--preset--font-family--mono);
	font-size: 12.5px;
	letter-spacing: 1.6px;
	text-transform: uppercase;
	color: var(--wp--preset--color--figure);
}
.rvz-plate--jewel .rvz-plate__num {
	background: linear-gradient(168deg, #97239F 0%, #8A1C92 40%, #A529AE 100%);
}
@supports not ((-webkit-background-clip: text) or (background-clip: text)) {
	.rvz-plate__num { -webkit-text-fill-color: currentColor; }
}
@media (forced-colors: active) {
	.rvz-plate__num {
		-webkit-text-fill-color: currentColor;
		-webkit-text-stroke: 0;
		background: none;
	}
}

/* D. Topline: the trust strip ABOVE the brand row */
.rvz-topline {
	background: var(--wp--preset--color--base-deep);
	border-bottom: 1px solid rgba(211, 196, 212, .18);
	padding: 7px 20px;
}
.rvz-topline__row {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 8px 14px;
	max-width: 1200px;
	margin: 0 auto;
	font-size: 12px;
	line-height: 1.5;
	color: var(--wp--preset--color--body);
}
.rvz-topline__age {
	font-family: var(--wp--preset--font-family--mono);
	font-weight: 500;
	font-size: 11.5px;
	letter-spacing: .6px;
	color: var(--wp--preset--color--ink);
	background: var(--wp--preset--gradient--chrome);
	border-radius: 0;
	padding: 2px 7px;
}
.rvz-topline .rvz-seg + .rvz-seg::before {
	content: "·";
	margin-right: 12px;
	color: var(--wp--preset--color--muted);
}
.rvz-topline .rvz-seg--rg {
	color: var(--wp--preset--color--chrome-soft);
	text-decoration: underline;
	text-underline-offset: 2px;
	/* 44px targets are enforced globally; inside a 7px strip the hit area is
	   grown with padding rather than height so the strip keeps its proportion. */
	padding: 6px 2px;
}
.rvz-topline .rvz-seg--rg:hover { color: var(--wp--preset--color--jewel-lit); }
.rvz-topline .rvz-seg--clock { margin-left: auto; }
.rvz-topline .rvz-num { color: var(--wp--preset--color--figure); letter-spacing: .4px; }
@media (max-width: 860px) {
	.rvz-topline .rvz-seg--wide { display: none; }
	.rvz-topline .rvz-seg--clock { margin-left: 0; }
}
@media (min-width: 861px) {
	.rvz-topline .rvz-seg--narrow { display: none; }
}

/* ---- E. Wordmark: the number is the brand --------------------------------- */
.rvz-brand__word {
	font-family: var(--wp--preset--font-family--heading);
	font-size: 25px;
	letter-spacing: 0.8px;
	text-transform: uppercase;
	color: var(--wp--preset--color--heading);
}
.rvz-brand__num {
	color: var(--wp--preset--color--jewel);
	/* The digits sit on the mono face so the brand's number reads as a figure —
	   the same rule the rest of the site follows for every figure. */
	font-family: var(--wp--preset--font-family--mono);
	font-size: 21px;
	font-weight: 500;
	letter-spacing: -0.5px;
}
.rvz-brand__cluster {
	font-size: 10.5px;
	letter-spacing: 1.3px;
	text-transform: uppercase;
	color: var(--wp--preset--color--muted);
}
.rvz-brand__mark { display: inline-flex; flex: 0 0 auto; }

/* F. Route tiles on the pillar */
.rvz-routes {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(212px, 1fr));
	gap: 14px;
	margin: 0;
	padding: 0;
	list-style: none;
}
.rvz-route__name {
	display: block;
	font-family: var(--wp--preset--font-family--heading);
	font-size: 22px;
	letter-spacing: 0.6px;
	text-transform: uppercase;
	color: var(--wp--preset--color--heading);
}
.rvz-route__sub {
	display: block;
	margin-top: 4px;
	font-size: 13.5px;
	line-height: 1.5;
	color: var(--wp--preset--color--body);
}
.rvz-route__idx {
	font-family: var(--wp--preset--font-family--mono);
	font-size: 11.5px;
	letter-spacing: 1px;
	color: var(--wp--preset--color--chrome-soft);
}

/* G. Platform table (/yukle) */
.rvz-plat__name {
	font-family: var(--wp--preset--font-family--heading);
	font-size: 19px;
	letter-spacing: 0.5px;
	text-transform: uppercase;
	color: var(--wp--preset--color--heading);
}
.rvz-plat__note {
	display: block;
	margin-top: 2px;
	font-size: 12.5px;
	color: var(--wp--preset--color--muted);
}

/* ---- H. The promo-code field, drawn rather than implemented ---------------
   Not an <input>: see inc/brand.php. The caret blinks only when the reader has
   not asked for reduced motion, and never carries meaning on its own. */
.rvz-codebox {
	background: var(--wp--preset--gradient--card-raised);
	border: 1px solid rgba(211, 196, 212, .22);
	border-radius: 0;
	padding: 18px 18px 14px;
	margin: 22px 0;
}
.rvz-codebox__label {
	margin: 0 0 10px;
	font-family: var(--wp--preset--font-family--mono);
	font-size: 11.5px;
	letter-spacing: 1.2px;
	text-transform: uppercase;
	color: var(--wp--preset--color--figure);
}
.rvz-codebox__field {
	display: flex;
	align-items: center;
	gap: 8px;
	min-height: 46px;
	padding: 0 14px;
	background: var(--wp--preset--color--base-deep);
	border: 1px dashed rgba(235, 222, 237, .45);
	border-radius: 0;
}
.rvz-codebox__caption {
	font-size: 14.5px;
	color: var(--wp--preset--color--muted);
}
.rvz-codebox__caret {
	width: 2px;
	height: 20px;
	background: var(--wp--preset--color--jewel);
	animation: rvz-caret 1.15s steps(2, start) infinite;
}
@keyframes rvz-caret { to { opacity: 0; } }
.rvz-codebox__note {
	margin: 12px 0 0;
	font-size: 13px;
	line-height: 1.6;
	color: var(--wp--preset--color--dim);
}
@media (prefers-reduced-motion: reduce) {
	.rvz-codebox__caret { animation: none; }
}

/* ---- I. Focus ring: electric blue, visible on graphite AND on a vermilion fill -- */
:where(a, button, summary, input, select, textarea, [tabindex]):focus-visible {
	outline: 2px solid #EBDEED;
	outline-offset: 2px;
	border-radius: 0;
}
.wp-element-button:focus-visible,
.wp-block-button__link:focus-visible {
	outline: 2px solid #0C0D2A;
	outline-offset: 2px;
	box-shadow: 0 0 0 4px rgba(235, 222, 237, .9);
}

/* J. Buttons: a struck chip rim */
.wp-element-button,
.wp-block-button__link {
	border-radius: 0;
	text-transform: uppercase;
	letter-spacing: 0.5px;
	box-shadow: inset 0 1px 0 rgba(255, 255, 255, .28);
}
.rvz-btn-outline .wp-block-button__link,
.rvz-btn-outline .wp-element-button {
	background: transparent;
	color: var(--wp--preset--color--chrome-soft);
	border: 1px solid rgba(235, 222, 237, .55);
	box-shadow: none;
}
.rvz-btn-outline .wp-block-button__link:hover,
.rvz-btn-outline .wp-element-button:hover {
	color: var(--wp--preset--color--jewel-lit);
	border-color: rgba(138, 28, 146, .75);
	background: rgba(211, 196, 212, .1);
}

/* ---- K. In-prose links: a blue rule that thickens ------------------------ */
.wp-block-post-content :is(p, li, dd, th, td, figcaption, blockquote) a:not(.wp-element-button):not(.rvz-seg):not(.rvz-quicklink),
.rvz-section p a:not(.wp-element-button):not(.rvz-quicklink) {
	color: var(--wp--preset--color--chrome-soft);
	text-decoration-line: underline;
	text-decoration-thickness: 1px;
	text-underline-offset: 2px;
	transition: text-decoration-thickness .14s ease, color .14s ease;
}
.wp-block-post-content :is(p, li, dd, th, td, figcaption, blockquote) a:not(.wp-element-button):not(.rvz-seg):not(.rvz-quicklink):hover,
.rvz-section p a:not(.wp-element-button):not(.rvz-quicklink):hover {
	color: var(--wp--preset--color--jewel-lit);
	text-decoration-thickness: 2px;
}

/* ---- L. Figures stay on the mono face ------------------------------------ */
.rvz-num,
.rvz-game__rtp,
.rvz-stat__num,
.rvz-offer__amount,
.rvz-step__num {
	font-family: var(--wp--preset--font-family--mono);
	font-variant-numeric: tabular-nums;
	letter-spacing: 0;
}
/* The COLOUR sweep deliberately skips .rvz-step__num. That one is not a figure sitting
   on the dark field: it is an ordinal inside a platinum-gradient plate, where `num`
   (a pale lume) measures 2.5:1 against the plate's darkest stop and ~1.1:1 against its
   lightest — the figure all but disappears. The plate carries `ink`, like a button. */
.rvz-num,
.rvz-game__rtp,
.rvz-stat__num,
.rvz-offer__amount {
	color: var(--wp--preset--color--figure);
}
/* Restated AFTER the sweep. `.rvz-step__num .rvz-num { color: inherit }` already existed
   earlier in the file, but the sweep repainted the plate itself, so `inherit` resolved
   to the pale tone and the fix silently did nothing. */
.rvz-step__num,
.rvz-step__num .rvz-num {
	color: var(--wp--preset--color--ink);
}

/* ---- M. Small-screen: the plate must not push the hero off the fold ------- */
@media (max-width: 600px) {
	.rvz-plate__num { font-size: clamp(72px, 26vw, 108px); }
	.rvz-brand__cluster { display: none; }
	.rvz-brand__word { font-size: 22px; }
	.rvz-brand__num { font-size: 19px; }
}

/* ---- N. Reduced motion ---------------------------------------------------- */
@media (prefers-reduced-motion: reduce) {
	.wp-element-button,
	.wp-block-button__link,
	.wp-block-post-content a,
	.rvz-game__play { transition: none; }
}

/* ---- O. Offer headline (/bonus) ------------------------------------------
   The one string the Offer JSON-LD node reads. It is a headline, not a heading:
   the page's H2 above it names the section, this names the package. */
.rvz-offer__headline {
	font-family: var(--wp--preset--font-family--heading);
	font-size: clamp(28px, 5vw, 42px);
	line-height: 1.04;
	letter-spacing: 0.5px;
	text-transform: uppercase;
	color: var(--wp--preset--color--heading);
	margin: 0 0 10px;
}
.rvz-offer__headline .rvz-num {
	font-size: .82em;
	color: var(--wp--preset--color--jewel);
}
.rvz-offer__sub {
	margin: 0 0 16px;
	font-size: 14.5px;
	line-height: 1.6;
	color: var(--wp--preset--color--body);
}

/* P. Warning callout: support BOTH authored shapes */
.rvz-warn > p {
	position: relative;
	margin: 0;
	padding: 13px 14px 13px 42px;
	border-radius: 0;
	background: var(--wp--preset--gradient--card);
	border: 1px solid rgba(242, 175, 136, .34);
	font-size: 15px;
	line-height: 1.55;
	color: var(--wp--preset--color--body);
}
.rvz-warn > p + p { margin-top: 10px; }
.rvz-warn > p::before {
	content: "\26A0\FE0E";
	position: absolute;
	left: 14px;
	top: 13px;
	color: var(--wp--preset--color--warn);
}
/* A <ul class="rvz-warn"> keeps its inherited blue marker; the paragraph form is
   used for the sharper "this will cost you money" warnings, so it gets warn. */


/* =========================================================================== */

/* 1. Card art lettermark: legible, and not a synthetic bold */
.rvz-game__mono,
.rvz-game__media--css > span:not([class]) {
	color: rgba(138, 28, 146, .55);
	font-weight: 400;
}

/* ---- 2. Demo badge: accent blue is a FILL, not 13px text ------------------
   #D3C4D4 on the raised surface measured 3.35:1, under AA for body-size text.
   blue-soft is the token whose role is accent-as-text (5.8:1 here). */
.rvz-demo__badge {
	color: var(--wp--preset--color--chrome-soft);
}

/* 3. The «1» anchor keeps real margin at its darkest stop */
.rvz-plate__num {
	background: linear-gradient(168deg, #8A1C92 0%, #A529AE 26%, #D5CCD7 88%);
	-webkit-background-clip: text;
	background-clip: text;
}
.rvz-plate--jewel .rvz-plate__num {
	background: linear-gradient(168deg, #97239F 0%, #8A1C92 40%, #D5CCD7 100%);
	-webkit-background-clip: text;
	background-clip: text;
}

/* 4. Four route tiles want a 2x2 block */
@media (min-width: 620px) {
	.rvz-routes {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}

/* 5. The game-card CTA owns its own colour */
.rvz-game__play,
.rvz-game__play:hover,
.rvz-game__play:focus {
	color: var(--wp--preset--color--ink);
	text-decoration: none;
}

/* ========================================================================== … */

/* ---- 1. Ambient field: a plat wedge from the BOTTOM-RIGHT plus one neon
   pool high on the LEFT. Deliberately the inverse of the inherited silhouette,
   so no two network pages share a background shape. ------------------------- */
.wp-site-blocks::before {
	background:
		linear-gradient(315deg, rgba(211, 196, 212, .17) 0%, rgba(211, 196, 212, 0) 42%),
		radial-gradient(720px 380px at 8% 4%, rgba(165, 41, 174, .13), transparent 70%),
		radial-gradient(520px 520px at 96% 92%, rgba(99, 20, 105, .22), transparent 72%);
}

/* ---- 3. The «1» anchor: a HOLLOW figure, a dot and a tick rail ---------- … */
.rvz-one {
	position: relative;
	display: grid;
	grid-template-columns: auto auto minmax(0, 1fr);
	align-items: end;
	gap: 0 clamp(12px, 2vw, 22px);
	margin: 0 0 14px;
	line-height: 1;
}
.rvz-one__rail {
	display: flex;
	flex-direction: column;
	justify-content: flex-end;
	gap: 7px;
	padding-bottom: 1.15em;
	order: -1;
}
.rvz-one__rail i {
	display: block;
	width: 20px;
	height: 3px;
	border-radius: 0;
	background: var(--wp--preset--color--chrome);
}
/* Descending weight down the rail, so it reads as a scale rather than as five
   identical dashes. Opacity is safe here: the rail is aria-hidden decoration and
   carries no information a reader has to resolve. */
.rvz-one__rail i:nth-child(2) { opacity: .72; width: 17px; }
.rvz-one__rail i:nth-child(3) { opacity: .52; width: 14px; }
.rvz-one__rail i:nth-child(4) { opacity: .34; width: 11px; }
.rvz-one__rail i:nth-child(5) { opacity: .2;  width: 8px; }
.rvz-one__num {
	position: relative;
	z-index: 1;
	font-family: var(--wp--preset--font-family--heading);
	/* The FLOOR is the mobile size: 24vw of a 360px phone is 86px, which clamps,
	   so the floor is the number to tune, not the ceiling. 138px keeps the anchor
	   dominant at 360px while leaving the mono label room beneath it. */
	font-size: clamp(138px, 24vw, 272px);
	line-height: 0.78;
	letter-spacing: -0.04em;
	color: var(--wp--preset--color--chrome);
}
@supports (-webkit-text-stroke: 1px black) or (text-stroke: 1px black) {
	.rvz-one__num {
		color: transparent;
		-webkit-text-stroke: clamp(3px, 0.6vw, 6px) var(--wp--preset--color--chrome);
	}
}
.rvz-one__dot {
	position: absolute;
	z-index: 2;
	top: .06em;
	left: calc(100% - .1em);
	width: clamp(16px, 2.6vw, 30px);
	height: clamp(16px, 2.6vw, 30px);
	border-radius: 50%;
	background: var(--wp--preset--color--jewel);
	pointer-events: none;
}
.rvz-one__label {
	position: relative;
	z-index: 1;
	align-self: end;
	padding-bottom: 1.15em;
	font-family: var(--wp--preset--font-family--mono);
	font-size: 12.5px;
	letter-spacing: 1.4px;
	line-height: 1.55;
	text-transform: uppercase;
	color: var(--wp--preset--color--figure);
}
.rvz-one--jewel .rvz-one__num { color: var(--wp--preset--color--jewel-lit); }
@supports (-webkit-text-stroke: 1px black) or (text-stroke: 1px black) {
	.rvz-one--jewel .rvz-one__num {
		color: transparent;
		-webkit-text-stroke: clamp(3px, 0.6vw, 6px) var(--wp--preset--color--jewel-lit);
	}
}
.rvz-one--jewel .rvz-one__dot { background: var(--wp--preset--color--chrome); }
/* Below 620px the label cannot sit beside a 138px glyph without wrapping to one
   word per line, and the rail eats width the figure needs. */
@media (max-width: 620px) {
	.rvz-one { grid-template-columns: auto minmax(0, 1fr); gap: 4px 14px; }
	.rvz-one__rail { flex-direction: row; justify-content: flex-start; padding: 0; grid-column: 1 / -1; order: 3; }
	.rvz-one__rail i { width: 3px; height: 16px; }
	.rvz-one__rail i:nth-child(2) { width: 3px; height: 13px; }
	.rvz-one__rail i:nth-child(3) { width: 3px; height: 11px; }
	.rvz-one__rail i:nth-child(4) { width: 3px; height: 8px; }
	.rvz-one__rail i:nth-child(5) { width: 3px; height: 6px; }
	.rvz-one__label { padding-bottom: 0; }
}
@media (forced-colors: active) {
	.rvz-one__num { color: currentColor; -webkit-text-stroke: 0; }
	.rvz-one__dot { background: currentColor; }
}

/* ---- 3a. The bracketed mark ---------------------------------------------- */
.rvz-mark { display: block; }
.rvz-brand__num {
	/* The «1» is the whole equity of this domain, so it takes the accent voice. … */
	color: var(--wp--preset--color--chrome);
	font-family: var(--wp--preset--font-family--mono);
	font-size: 21px;
	font-weight: 500;
	letter-spacing: 0;
}
.rvz-brand__word { letter-spacing: -0.3px; font-size: 23px; }
.rvz-brand:hover .rvz-brand__num { color: var(--wp--preset--color--jewel-lit); }

/* ---- 3b. The macro chip stack ------------------------------------------- … */
.rvz-rail { display: block; height: auto; }
.rvz-rail-slot {
	display: flex;
	justify-content: center;
	align-items: flex-end;
	flex: 0 0 auto;
}
@media (prefers-reduced-motion: no-preference) {
	.rvz-rail-slot .rvz-rail { transition: transform .35s ease; }
	.rvz-rail-slot:hover .rvz-rail { transform: translateY(-4px); }
}

/* ---- 4. Trust ribbon ------------------------------------------------------
   A pre-header strip above the brand row, so `.rvz-topline`'s own border-bottom
   is the correct rim and no `--under` variant is needed. The sibling's variant
   rule (border-top, gradient) is deleted rather than left in place: it matched
   nothing after the part was rewritten and would have shipped in every page's
   render-blocking stylesheet.

   What differs from the sibling is the ribbon's CONTENT, not just its place: it
   leads on "müstəqil bələdçi" (independent guide) instead of the negative
   "operator deyil", because the first thing a reader should learn is what this
   site IS. */
.rvz-topline__row { letter-spacing: .2px; }

/* ---- 5. Footer signature band --------------------------------------------- … */
.rvz-sig {
	position: relative;
	overflow: hidden;
	max-width: 1200px;
	margin: 0 auto;
	padding: 0 0 4px;
}
.rvz-sig__lock {
	position: relative;
	display: flex;
	align-items: center;
	gap: 11px;
	flex-wrap: wrap;
}
.rvz-sig__word {
	font-family: var(--wp--preset--font-family--heading);
	font-size: 21px;
	letter-spacing: 0.4px;
	text-transform: uppercase;
	color: var(--wp--preset--color--heading);
}
.rvz-sig__host {
	font-family: var(--wp--preset--font-family--mono);
	font-size: 12.5px;
	letter-spacing: .5px;
	color: var(--wp--preset--color--figure);
	padding: 3px 8px;
	border: 1px solid rgba(165, 41, 174, .32);
	border-radius: 0;
}
.rvz-sig__note {
	position: relative;
	max-width: 62ch;
	margin: 12px 0 0;
	font-size: 13.5px;
	line-height: 1.7;
	color: var(--wp--preset--color--dim);
}
@media (max-width: 620px) {
}

/* ---- 6. Payment rail as a full-width strip -------------------------------
   The sibling parked the rail inside a footer column, where five chips wrapped
   to three lines. Given the width it reads as one band. */
.rvz-payrail--strip {
	max-width: 1200px;
	margin: 30px auto 0;
	padding: 16px 18px;
	border-radius: 0;
	background: var(--wp--preset--gradient--card);
	border: 1px solid var(--wp--preset--color--rim);
}
.rvz-payrail__title {
	margin: 0 0 10px;
	font-size: 12px;
	letter-spacing: 1.2px;
	text-transform: uppercase;
	color: var(--wp--preset--color--muted);
}
.rvz-payrail--strip .rvz-payrail__row { flex-wrap: wrap; }
.rvz-payrail--strip .rvz-payrail__note {
	margin: 11px 0 0;
	font-size: 12.5px;
	line-height: 1.65;
	color: var(--wp--preset--color--dim);
}

/* ---- 7. Zilla Slab's metrics --------------------------------------------------- … */
h1, h2, h3,
.rvz-offer__headline,
.rvz-sig__word,
.rvz-brand__word {
	text-wrap: balance;
}
h1 { word-break: normal; overflow-wrap: break-word; }
.rvz-offer__headline { letter-spacing: 0.2px; }

/* The trust ribbon is a sentence, not a label row: leave it in sentence case. */
.rvz-topline__row { text-transform: none; }

/* ---- 8. Number-string band (the hyper-focus row) -------------------------- … */
.rvz-variants {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(215px, 1fr));
	gap: 12px;
	margin: 0;
	padding: 0;
	list-style: none;
}
.rvz-variant {
	padding: 15px 16px;
	border-radius: 0;
	background: var(--wp--preset--gradient--card);
	border: 1px solid var(--wp--preset--color--rim);
}
.rvz-variant__key {
	display: block;
	font-family: var(--wp--preset--font-family--mono);
	font-size: 15px;
	font-weight: 500;
	letter-spacing: .3px;
	color: var(--wp--preset--color--figure);
	margin-bottom: 6px;
}
.rvz-variant__what {
	margin: 0;
	font-size: 13.5px;
	line-height: 1.62;
	color: var(--wp--preset--color--body);
}
.rvz-variant--is .rvz-variant__key { color: var(--wp--preset--color--jewel-lit); }
.rvz-variant--isnt .rvz-variant__key { color: var(--wp--preset--color--warn); }

/* ---- 9. Focus ring: TWO-TONE, because the accent is light ----------------- … */
a:focus-visible,
button:focus-visible,
.wp-block-button__link:focus-visible,
.wp-block-navigation-item__content:focus-visible,
input:focus-visible,
textarea:focus-visible,
select:focus-visible,
summary:focus-visible,
[tabindex]:focus-visible,
.rvz-quicklink:focus-visible,
.rvz-cat:focus-visible,
.rvz-game .rvz-game__play:focus-visible,
.rvz-faq > summary:focus-visible,
.rvz-skip-link:focus-visible {
	outline: 3px solid var(--wp--preset--color--heading);
	outline-offset: 2px;
	box-shadow: 0 0 0 2px var(--wp--preset--color--ink);
	border-radius: 0;
}

/* ---- 10. Hero composition, measured on the real render ------------------- … */
.rvz-rail { pointer-events: none; }
@media (min-width: 1080px) {
	.rvz-section:has(> .rvz-lead + .rvz-rail) { position: relative; }
	.rvz-lead + .rvz-rail {
		position: absolute;
		top: 232px;
		right: clamp(16px, 3.4vw, 96px);
		margin: 0 !important;
		z-index: 1;
	}
}

/* ---- 11. Section rhythm --------------------------------------------------- … */
.rvz-section {
	padding-top: clamp(34px, 5vw, 50px);
	padding-bottom: clamp(20px, 3.6vw, 32px);
}

/* ---- 12. Footer, restructured --------------------------------------------
   The payment band now OPENS the footer instead of sitting between the columns and
   the legal text, and the brand signature has moved out of a full-width band into
   the third column. Two reasons, one editorial and one structural:

     - the AZN rails (m10 / Kapital / ABB / Pasha) are the strongest local trust
       cyan on the page, and they were buried three blocks down;
     - the sibling's signature band relied on `overflow:hidden` to clip a giant ghost
       figure. That figure is gone here (repeating the hero's own device in the
       footer is the sibling's signature, not this one), so the band no longer needs
       to be full width, and it reads better as the last of three columns — brand
       last, in reading order, after the reader has been offered the routes.

   The chip stack closes the column at 132px: the same object as the hero's, one
   scale down, which is what ties the two ends of the page together without a second
   display-sized graphic. */
.rvz-payrail--strip { margin-top: 0; }
.rvz-footer__sigcol {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: 10px;
}
.rvz-sig {
	position: static;
	overflow: visible;
	max-width: none;
	margin: 0;
	padding: 0;
}
.rvz-sig__note { max-width: 46ch; }
/* The stack is decorative and the column is narrow, so on a phone it would push the
   legal text down for nothing. */
@media (max-width: 781px) {
	.rvz-footer__sigcol .rvz-rail { display: none; }
}

/* ---- 13. Fixes found while authoring the pages ---------------------------
   Three inherited rules that were written for a layout this site does not use.

   a) `.rvz-compare` shipped `position: sticky; top: 124px`. It was authored for a
      SIDEBAR column on an ancestor theme; /yukle uses it full-width in the flow, and
      a full-width sticky block detaches and rides over the section below it while the
      reader scrolls past. Static is the correct behaviour for a block that is as wide
      as its container.
   b) `.rvz-plat__name` / `__note` existed with no CONTAINER, so three platform
      plates would have stacked as bare text. `.rvz-plats` lays them out as an
      auto-fit grid; the page pairs each with `.rvz-panel` for the card surface.
   c) `.rvz-store` is `inline-flex`, so a row of store labels needs a flex wrapper
      to gap and wrap properly on a phone. */
.rvz-compare { position: static; top: auto; }
.rvz-plats {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
	gap: 14px;
	margin: 0 0 18px;
}
.rvz-plats .rvz-plat { display: flex; flex-direction: column; gap: 6px; }
.rvz-store-row {
	display: flex;
	flex-wrap: wrap;
	gap: 10px;
	margin: 0 0 6px;
}
/* The comparison rows on /yukle carry THREE cells (aspect · app · browser), while the
   inherited rule only coloured the first and last. Without this the middle cell —
   the app's own behaviour, i.e. the answer — was the only one left at inherited body
   colour, so the row read as if the browser column were the emphasis. */
.rvz-compare__row > span:nth-child(2) {
	color: var(--wp--preset--color--chrome);
	font-weight: 700;
	text-align: right;
}
.rvz-compare__row > span:nth-child(3) { text-align: right; }
.rvz-compare__row > span:first-child { flex: 1 1 40%; text-align: left; }
@media (max-width: 560px) {
	.rvz-compare__row { flex-wrap: wrap; }
	.rvz-compare__row > span:first-child { flex: 1 1 100%; }
	.rvz-compare__row > span:nth-child(2),
	.rvz-compare__row > span:nth-child(3) { flex: 1 1 46%; text-align: left; }
}

/* ---- 14. The «1» anchor, corrected on the real render --------------------
   Two things only an eyeball pass catches (the UX harness checks overflow, tap
   targets and contrast — it cannot see that a composition has fallen apart):

   a) THE ACCENT DOT WAS STRANDED. It was `position:absolute; left:calc(100% - .1em)`
      inside `.rvz-one`, and `.rvz-one` is a GRID that spans the whole content
      column — so 100% was the column's width, not the figure's. The dot landed
      ~600px to the right of the glyph it belongs to, reading as a stray green
      circle floating in the hero. Fixed by giving the grid named areas and putting
      the dot in the SAME cell as the figure: an auto-width column is exactly as
      wide as the glyph, so `justify-self:end` parks the dot on the figure's own
      right rim whatever the viewport does.
   b) THE TICK RAIL WAS CLUMPED at the figure's baseline, because the grid is
      `align-items:end` and the rail had nothing to stretch against. It now spans
      the figure's full height and distributes, which is what makes it read as a
      scale beside the figure rather than as four stray dashes.

   Named areas also let the 620px layout be declared rather than re-derived from
   `order`, which is what made the mobile rule hard to follow. */
.rvz-one {
	grid-template-columns: auto auto minmax(0, 1fr);
	grid-template-areas: "rail num label";
	align-items: stretch;
}
.rvz-one__rail {
	grid-area: rail;
	order: 0;
	justify-content: space-between;
	padding: 0.14em 0 0.3em;
	gap: 0;
}
.rvz-one__num { grid-area: num; align-self: end; }
.rvz-one__dot {
	grid-area: num;
	position: relative;
	justify-self: end;
	align-self: start;
	top: 0.06em;
	left: 0;
	margin-right: -0.34em;
}
.rvz-one__label { grid-area: label; align-self: end; }
@media (max-width: 620px) {
	.rvz-one {
		grid-template-columns: auto minmax(0, 1fr);
		grid-template-areas:
			"num  num"
			"rail label";
	}
	.rvz-one__rail { flex-direction: row; align-items: flex-end; gap: 4px; padding: 8px 0 0; }
	.rvz-one__label { align-self: center; }
}
/* The anchor's flag was crossing the last line of the lead paragraph. WP's
   constrained layout forces margin-INLINE with !important but leaves the block
   axis alone, so a plain margin-top is enough here. */
.rvz-one { margin-top: 26px; }

/* ---- 15. The comparison component needs a header row ---------------------
   Found by looking at the render, not by the harness. Without column labels the
   two value cells in each row are just two strings side by side, and the reader has
   to infer which one describes the app — the colour difference (plat vs jade-soft)
   carries the distinction, which is exactly the kind of meaning colour must never
   carry alone (WCAG 1.4.1). The page now authors a header row; this styles it and
   puts a hairline between the two value columns so they stop reading as one phrase. */
.rvz-compare__row--head {
	border-bottom: 1px solid rgba(211, 196, 212, .34);
	padding-bottom: 12px;
	margin-bottom: 4px;
}
.rvz-compare__row--head > span {
	font-family: var(--wp--preset--font-family--mono);
	font-size: 11.5px;
	letter-spacing: 1.2px;
	text-transform: uppercase;
	font-weight: 500;
}
.rvz-compare__row--head > span:first-child { color: var(--wp--preset--color--muted); }
.rvz-compare__row--head > span:nth-child(2) { color: var(--wp--preset--color--chrome); }
.rvz-compare__row--head > span:nth-child(3) { color: var(--wp--preset--color--cyan-soft); }
/* Fixed value tracks + a divider: the two cells were running together into one
   sentence at 1024px and above. */
.rvz-compare__row > span:nth-child(2),
.rvz-compare__row > span:nth-child(3) { flex: 0 0 27%; }
.rvz-compare__row > span:nth-child(3) { padding-left: 14px; border-left: var(--rvz-hairline); }
@media (max-width: 560px) {
	.rvz-compare__row > span:nth-child(2),
	.rvz-compare__row > span:nth-child(3) { flex: 1 1 46%; }
	.rvz-compare__row > span:nth-child(3) { padding-left: 0; border-left: 0; }
	.rvz-compare__row--head { display: none; }
}
/* On a phone the header row is hidden (three columns of caps labels above a wrapped
   two-up grid is unreadable), so the labels move INTO the cells. Without this the
   mobile layout has the same defect the header row was added to fix — two values
   side by side distinguished only by colour. */
@media (max-width: 560px) {
	.rvz-compare__row:not(.rvz-compare__row--head) > span:nth-child(2)::before { content: "Tətbiqdə: "; }
	.rvz-compare__row:not(.rvz-compare__row--head) > span:nth-child(3)::before { content: "Brauzerdə: "; }
	.rvz-compare__row:not(.rvz-compare__row--head) > span:nth-child(2)::before,
	.rvz-compare__row:not(.rvz-compare__row--head) > span:nth-child(3)::before {
		display: block;
		font-family: var(--wp--preset--font-family--mono);
		font-size: 10.5px;
		letter-spacing: 1px;
		text-transform: uppercase;
		font-weight: 500;
		color: var(--wp--preset--color--muted);
	}
}

/* =========================================================================
   RZ IDENTITY LAYER — royalevegas-az.net · "Obsidian Blue & Platinum"
   Appended LAST on purpose. Two hard-won reasons:

   1. `:where()` has ZERO specificity, so an identity rule written that way loses
      to the inherited plain selector list it is meant to replace. Every override
      below is a plain selector at equal specificity, placed last, which is what
      actually wins.
   2. The inherited «1» anchor was a HOLLOW stroked figure with an accent dot and
      a tick rail. This build's anchor is an editorial MASTHEAD, so the container
      and the figure are fully re-declared here — including inside the
      `@supports (-webkit-text-stroke)` block, or the figure stays transparent
      and the hero renders an empty column.
   ========================================================================= */

/* ---- 1. The «1» anchor as an editorial masthead --------------------------
   Reading top to bottom: a DOUBLE hairline, the display face figure with a mono ordinal
   at its shoulder, then a single hairline whose own gap carries the kicker. What
   makes this a graphic is the ruling, not the glyph — which is exactly why the
   figure is a plain solid display cut here and not hollow or doubled.

   Grid, not flow: the ordinal has to sit against the figure's own left rim at
   every viewport. An `auto` column is exactly the glyph's width, so the ordinal
   parked in the SAME cell cannot drift — the trap on the sibling build was an
   absolutely-positioned dot resolving against the grid instead of the glyph and
   landing ~600px away. Nothing here is absolutely positioned. */
.rvz-one {
	position: relative;
	display: grid;
	grid-template-columns: minmax(0, 1fr);
	grid-template-areas: "rules" "figure" "kicker";
	align-items: stretch;
	gap: 0;
	margin: 0 0 18px;
	line-height: 1;
}

/* The double rule. One element, two borders — a second element would be a second
   thing to keep in sync at four breakpoints. */
.rvz-one__rules {
	grid-area: rules;
	display: block;
	height: 7px;
	border-top: 2px solid var(--wp--preset--color--chrome);
	border-bottom: 1px solid var(--wp--preset--color--rim);
}

.rvz-one__figure {
	grid-area: figure;
	display: grid;
	grid-template-columns: auto auto minmax(0, 1fr);
	align-items: start;
	gap: 0 clamp(6px, 1vw, 12px);
	padding: clamp(4px, 1vw, 10px) 0 0;
}

/* The ordinal mark. Mono, because the mono face is reserved for figures and an
   ordinal belongs to the figure it introduces. Aligned to the figure's cap, not
   its baseline — an ordinal on the baseline reads as a footnote. */
.rvz-one__ord {
	font-family: var(--wp--preset--font-family--mono);
	font-size: clamp(15px, 2.4vw, 30px);
	font-weight: 500;
	line-height: 1;
	padding-top: .34em;
	color: var(--wp--preset--color--jewel-lit);
}

/* The figure itself: Zilla Slab 900, solid. The clamp FLOOR is the number to tune,
   not the ceiling — 24vw of a 360px phone is 86px, which clamps, so 128px is what
   a phone actually renders. */
.rvz-one__num {
	position: static;
	z-index: auto;
	font-family: var(--wp--preset--font-family--heading);
	font-size: clamp(128px, 23vw, 252px);
	font-weight: 400;
	line-height: 0.8;
	letter-spacing: -0.04em;
	color: var(--wp--preset--color--chrome);
	-webkit-text-stroke: 0;
}

/* Undo the inherited hollow treatment. Without this the figure keeps
   `color: transparent` from the earlier @supports block and disappears. */
@supports (-webkit-text-stroke: 1px black) or (text-stroke: 1px black) {
	.rvz-one__num {
		color: var(--wp--preset--color--chrome);
		-webkit-text-stroke: 0;
	}
	.rvz-one--jewel .rvz-one__num {
		color: var(--wp--preset--color--jewel-lit);
		-webkit-text-stroke: 0;
	}
}

/* The kicker, set INTO the lower rule: the rule runs across the row and the text
   sits in it with the field showing through on both sides. A pseudo-element rule
   plus a padded span is the only way to get a real gap without hardcoding a text
   width. */
.rvz-one__kicker {
	grid-area: kicker;
	position: relative;
	display: flex;
	align-items: center;
	gap: 14px;
	margin-top: clamp(8px, 1.4vw, 16px);
	font-family: var(--wp--preset--font-family--mono);
	font-size: 12.5px;
	font-weight: 500;
	letter-spacing: .14em;
	line-height: 1.5;
	text-transform: uppercase;
	color: var(--wp--preset--color--figure);
}
.rvz-one__kicker::after {
	content: "";
	flex: 1 1 auto;
	height: 1px;
	background: var(--wp--preset--color--rim);
}

.rvz-one--jewel .rvz-one__num { color: var(--wp--preset--color--jewel-lit); }
.rvz-one--jewel .rvz-one__rules { border-top-color: var(--wp--preset--color--jewel-lit); }
.rvz-one--jewel .rvz-one__ord { color: var(--wp--preset--color--chrome); }

@media (max-width: 620px) {
	.rvz-one { grid-template-columns: minmax(0, 1fr); gap: 0; }
	.rvz-one__figure { grid-template-columns: auto minmax(0, 1fr); }
	.rvz-one__kicker { letter-spacing: .1em; }
}

@media (forced-colors: active) {
	.rvz-one__num,
	.rvz-one__ord { color: currentColor; -webkit-text-stroke: 0; }
	.rvz-one__rules { border-top-color: currentColor; border-bottom-color: currentColor; }
}

/* ---- 2. The dark-bokeh field --------------------------------------------
   Replaces the sibling's chip-stack entirely. Decorative and aria-hidden, with an
   intrinsic width/height on the <svg> so it costs no layout shift. */
.rvz-bokeh {
	display: block;
	max-width: 100%;
	height: auto;
	border: 1px solid var(--wp--preset--color--rim);
	border-radius: var(--wp--preset--border-radius--medium, 4px);
}
.rvz-bokeh-slot {
	display: block;
	margin: clamp(18px, 3vw, 30px) 0 0;
}
/* In the footer signature band the field is a quiet strip, not a picture. */
.rvz-footer .rvz-bokeh { opacity: .78; }

/* ---- 3. The trust band, now BELOW the brand row -------------------------
   The inherited topline sat above the header and read as a browser chrome strip.
   Moved under the brand row it becomes the identity's structural device: a ruled
   band. Hairline top and bottom, no fill — a filled bar would compete with the
   masthead. */
.rvz-topline--under {
	margin-top: 4px;
	border-top: 1px solid var(--wp--preset--color--rim);
	border-bottom: 1px solid var(--wp--preset--color--rim);
	background: transparent;
}

/* ---- 4. The footer signature as a full-width masthead band --------------- */
.rvz-sig--band {
	display: grid;
	grid-template-columns: minmax(0, 1fr);
	gap: 14px;
	padding-bottom: 26px;
	border-bottom: 1px solid var(--wp--preset--color--rim);
}
.rvz-sig--band .rvz-sig__lock {
	display: flex;
	align-items: center;
	flex-wrap: wrap;
	gap: 12px 16px;
}
.rvz-sig--band .rvz-sig__host {
	font-size: 12.5px;
	letter-spacing: .06em;
	color: var(--wp--preset--color--muted);
}
.rvz-sig--band .rvz-sig__note { max-width: 62ch; margin: 0; }
@media (min-width: 900px) {
	.rvz-sig--band {
		grid-template-columns: minmax(0, 22rem) minmax(0, 1fr);
		align-items: start;
		gap: 30px 44px;
	}
}

/* ---- 5. Editorial section rule ------------------------------------------
   A hairline above each section heading is this identity's one repeated device,
   which is what lets the pages carry no card borders and still read as ordered. */
.rvz-section > .wp-block-heading:first-child {
	padding-top: 16px;
	border-top: 1px solid var(--wp--preset--color--rim);
}

/* ---- 5b. GEOMETRY NORMALISATION -----------------------------------------
   The forked stylesheet carries ~20 pill and disc radii from an identity whose
   silhouette was round-cornered. This one is editorial: 0/4/18 with a 2px button, a
   mark that is a knocked-out SLAB, and the hairline as its structural device. A pill
   chip beside a square button is the kind of mismatch that reads as "unfinished"
   without ever being reportable as a bug.

   The worst of them was `.rvz-brand__mark { border-radius: 50% }`, which framed the
   new slab mark in a circle in the header and the footer signature.

   Round is KEPT where round is semantically right — a window-chrome dot on the mock
   UI frame, a bullet marker, an avatar — and nowhere else. */
.rvz-brand__mark,
.rvz-brand__mark::after { border-radius: 0; }

.rvz-chip,
.rvz-badge,
.rvz-eyebrow,
.rvz-seg--clock,
.rvz-game__rtp,
.rvz-kyc__state,
.rvz-cutoff__clock,
.rvz-filter a,
.rvz-chips .wp-block-button__link { border-radius: 0; }

.rvz-game__play { border-radius: 0; }

/* Bars with square ends read as RULES, which is this identity's one device. */
.rvz-rtpbar__track,
.rvz-rtpbar__fill,
.rvz-ladder .bar,
.rvz-ladder .bar i { border-radius: 0; }

/* The section-heading flourish becomes a plain rule rather than a rounded lozenge. */
.rvz-cta > h2::after { border-radius: 0; }

/* ---- 5a1. H1 AND H2 ARE MIXED CASE -------------------------------------
   theme.json sets `elements.heading.textTransform: none`, and it was losing. The
   stylesheet carries `h1, h2, h3, h4 { text-transform: uppercase }` under the comment
   "Bebas has no lowercase, so a heading containing a lowercase word renders in…" —
   a rule written for the FIRST site in this fork chain, whose display face was Bebas
   Neue. It has been inherited by every fork since, and element selectors in a
   stylesheet beat theme.json's generated `:root :where(h1)` output.

   Zilla Slab has a full lowercase, and mixed-case display headings are the premise of this
   identity, so h1 and h2 are reset here. h3/h4 KEEP their uppercase — they are set in
   the body face at label size, which is this build's deliberate inversion of the
   sibling convention. */
h1, h2,
h1.wp-block-heading, h2.wp-block-heading { text-transform: none; }

/* ---- 5a2. THE ANCHOR'S NUMERAL HAD A STALE GRID-AREA -------------------
   `.rvz-one__num { grid-area: num }` and `.rvz-one__label { grid-area: label }` refer to
   the SIBLING construction's `grid-template-areas: "rail num label"`. This build's
   container declares "rules" / "figure" / "kicker" instead, so `num` is an unknown area
   name: the figure fell out of the flow and auto-placed into a new implicit column at
   the far right of the hero, orphaning the mono ordinal on the left. Same failure class
   as an absolutely-positioned element resolving against the grid instead of the glyph,
   and equally invisible to the UX harness — it checks overflow, tap targets and
   contrast, all of which still passed.

   The figure's children live in a NESTED grid, so they take auto placement. */
.rvz-one__num,
.rvz-one__ord { grid-area: auto; align-self: start; }

/* ---- 5c. STEEL AS TEXT, AND A CLAMP THAT CROSSES THE AA THRESHOLD -------
   `.rvz-offer__headline .rvz-num` was painted in `neon`. At 1440px the figure renders
   at 34px, which WCAG counts as large text (need 3.0) and 4.13:1 passes — so the
   desktop view looked fine. Its font-size is a clamp, and at 360px it resolves to
   23px, just under the 24px large-text threshold, where the requirement becomes 4.5
   and the same colour measures 3.61:1. A contrast bug that only exists at one
   breakpoint because a clamp crosses a WCAG boundary.

   The fix is not a bigger font — it is the palette rule: neon is a FILL, and
   `neon-lit` is the token reserved for the second accent AS TEXT. It measures
   6.9:1 here, so the component is compliant at every size the clamp can produce. */
.rvz-offer__headline .rvz-num { color: var(--wp--preset--color--jewel-lit); }
.rvz-plate__num { color: var(--wp--preset--color--jewel-lit); }

/* ---- 5d. THE DISPLAY FACE IS SET MIXED CASE ----------------------------
   The forked stylesheet uppercased seven components in the display face, which was
   right when that face was condensed. Zilla Slab is a WIDE techno grotesque, and this
   identity's premise is mixed-case display headings with the hairline as its device — so
   an uppercased display line is the one voice on the site that contradicts the rest.

   Two specific consequences fixed here:
     * the WORDMARK read "ROYALE 1" in the header and the footer signature while the
       Open Graph card renders "Royale Vegas". A brand whose name is cased differently in
       the tab, the page and the social preview is a brand with three spellings;
     * `.rvz-offer__headline` is a 130-character SENTENCE (it is also the Offer
       schema's `name`), and a long uppercase display line is genuinely hard to read.

   Small labels keep their uppercase, but move to the BODY face — which is exactly the
   rule this theme already applies to h3. */
.rvz-brand__word,
.rvz-sig__word,
.rvz-offer__headline { text-transform: none; }

.rvz-brand__word { letter-spacing: -0.5px; }
.rvz-offer__headline { letter-spacing: -0.4px; }

.rvz-route__name,
.rvz-plat__name,
.rvz-provider {
	font-family: var(--wp--preset--font-family--body);
	font-weight: 700;
	letter-spacing: 0.07em;
}

/* ---- 6. THE FOCUS RING — TWO-TONE, AND THIS MUST BE LAST ----------------
   No single colour clears 3:1 on BOTH a near-black obsidian field and a light
   plat button fill. The sibling build shipped a ring that measured 1.31:1 on
   its own primary CTA for exactly this reason: one colour, two very different
   backgrounds. So the ring is two halves and always both:

     * `box-shadow: 0 0 0 2px ink`  — near-black, wins on a plat/jade FILL
       (12.5:1 and 9.1:1, asserted in contrast_rz.py);
     * `outline: 3px heading`       — near-white, wins on the FIELD and on cards
       (16.5:1 / 14.4:1 / 12.5:1).

   Whichever background the element has, one half of the ring is visible against
   it. Both halves are unconditional — a media query or an :is() wrapper here
   would reintroduce the specificity problem this block exists to solve. */
a:focus-visible,
button:focus-visible,
.wp-block-button__link:focus-visible,
.wp-block-navigation-item__content:focus-visible,
.wp-block-navigation__responsive-container-open:focus-visible,
.wp-block-navigation__responsive-container-close:focus-visible,
input:focus-visible,
textarea:focus-visible,
select:focus-visible,
summary:focus-visible,
details:focus-visible,
[tabindex]:focus-visible {
	outline: 3px solid var(--wp--preset--color--heading);
	outline-offset: 2px;
	box-shadow: 0 0 0 2px var(--wp--preset--color--ink);
	border-radius: 0;
}

/* Windows High Contrast strips both colours; the system ring must survive. */
@media (forced-colors: active) {
	a:focus-visible,
	button:focus-visible,
	.wp-block-button__link:focus-visible,
	summary:focus-visible,
	[tabindex]:focus-visible {
		outline: 3px solid currentColor;
		box-shadow: none;
	}
}
/* ================= END RZ IDENTITY LAYER ================= */

/* ================= LX IDENTITY LAYER — «Royale Vegas» =================
   Appended last on purpose: this stylesheet is a stack of successive re-skin layers
   and the cascade resolves in file order, so the identity that ships is whatever the
   tail says. Everything above this line belongs to the number micro-hub this theme
   was forked from; everything below is «Platinum & Onyx — Glacier».

   Three devices, and only three, so the site reads as one thing:
     1. the RULE      — a warm 1px hairline (--color--rim), the structural element;
     2. the SUIT      — the diamond knocked out of the R in the mark, spade+diamond as
                        pips on the wordmark's rule;
     3. BRUSHED METAL — a gleam-to-rose-to-chrome-deep ramp, used on the wordmark and
                        on primary buttons, never on body text.

   Geometry is 0/3/14 with SQUARE buttons. The fork's 0/4/18-and-2px-button geometry is
   normalised below, because a stylesheet this old carries radii from three identities
   at once and a rounded chip beside a square button reads as unfinished.
   ==================================================================== */

/* ---- 1. The wordmark in the header / footer signature -------------------
   "Royale" is the display face italic; "VIP" is the mono plate — the pair IS the equity.
   Not a gradient here: at 19px a clipped gradient loses its lit rim and just looks
   muddy. The gradient belongs to the page-anchor wordmark (section 2), which is 4x
   the size. */
/* The plate itself is defined once, in section 1 below («The brand lockup in the
   header»), and BOTH instances of the mark — header and footer signature — take it.
   An earlier teal-and-platinum treatment used to live here; its descendant selector
   `.rvz-sig__word .rvz-brand__vip` (0,2,0) outranked the plate rule (0,1,0), so the
   footer kept the old `color: plat` while still taking the plate's `background: plat`
   — platinum on platinum, i.e. an invisible «VIP» in the footer signature on every
   page. Removed rather than re-pointed: two rules for one mark is how it happened. */
/* The fork's figure span no longer exists in the markup; neutralise its rules so a
   stale copy of the header cannot paint a stray accent. */
.rvz-brand__num { color: inherit; -webkit-text-stroke: 0; }

/* ---- 2. The page anchor: «Royale Vegas» as display lettering --------------
   The brief asks for the brand's own lettering AS the page's main graphic anchor. So
   the anchor is type, not art: a mono kicker, the two-part lockup with a brushed-metal
   ramp clipped to the second word, and a suit rule under it.

   The ramp's dark stop (plat-deep, 4.1:1 on the field) is parked in the last 12% of
   the gradient, so the glyph body stays on plat/lume (12.9:1 / 15.9:1). At
   clamp-min 44px this is large text, where 3:1 applies — but a display face whose
   descenders sat in the dark stop would still look broken, hence the stop position.
   `color` is set BEFORE the clip so a browser without background-clip:text (or with
   the ramp disabled by forced-colors) still renders solid jewel rather than nothing. */
.rvz-wordmark {
	display: grid;
	gap: 10px;
	justify-items: start;
	margin: 0 0 6px;
}
/* The kicker is PROSE, not a figure: «Bonus və promokod bələdçisi · 2026» carries an
   ə and the whole line is uppercased. The mono slot on this build is reserved for
   figures precisely because an uppercased ə in a mono face is the network's recurring
   defect, so this label takes the BODY face. Letter-spacing keeps the mono-ish rhythm
   the lockup was drawn around. */
.rvz-wordmark__kicker {
	font-family: var(--wp--preset--font-family--body);
	font-size: 12.5px;
	font-weight: 600;
	letter-spacing: 0.2em;
	text-transform: uppercase;
	color: var(--wp--preset--color--figure);
}
.rvz-wordmark__lock {
	display: flex;
	align-items: baseline;
	flex-wrap: wrap;
	gap: 0 0.3em;
	font-family: var(--wp--preset--font-family--heading);
	line-height: 0.94;
}
.rvz-wordmark__royale {
	font-size: clamp(21px, 3.2vw, 32px);
	font-weight: 700;
	letter-spacing: -0.2px;
	color: var(--wp--preset--color--contrast);
}
.rvz-wordmark__vip {
	font-size: clamp(44px, 9vw, 96px);
	font-weight: 700;
	letter-spacing: -2.4px;
	color: var(--wp--preset--color--chrome);
	background-image: linear-gradient(122deg, #EBDEED 0%, #D3C4D4 54%, #A89EAB 88%, #634267 100%);
	-webkit-background-clip: text;
	background-clip: text;
	-webkit-text-fill-color: transparent;
}
.rvz-wordmark--jewel .rvz-wordmark__vip {
	background-image: linear-gradient(122deg, #97239F 0%, #A529AE 58%, #631469 100%);
	color: var(--wp--preset--color--jewel-lit);
}
.rvz-wordmark__rule {
	position: relative;
	display: flex;
	align-items: center;
	gap: 10px;
	width: min(100%, 20rem);
	padding-top: 12px;
	border-top: 1px solid var(--wp--preset--color--rim);
	font-size: 13px;
	line-height: 1;
}
/* The pips are U+2660 / U+2666, and NONE of this identity's three faces carries them
   (the same gap turned the first Open Graph card's pips into tofu boxes — see
   assets_lux.py, which draws them as polygons for that reason). A browser DOES fall
   back per character, but only to a family it can find, so the stack names the symbol
   fonts explicitly rather than trusting the platform default. */
.rvz-wordmark__pip {
	font-family: "Segoe UI Symbol", "Apple Symbols", "Noto Sans Symbols 2", "DejaVu Sans", sans-serif;
	line-height: 1;
}
.rvz-wordmark__pip--crown { color: var(--wp--preset--color--chrome-soft); }
.rvz-wordmark__pip--crown { color: var(--wp--preset--color--jewel-lit); }
@media (forced-colors: active) {
	.rvz-wordmark__vip {
		background-image: none;
		-webkit-text-fill-color: currentColor;
		color: CanvasText;
	}
}

/* ---- 3. The abstract light field ---------------------------------------
   Beams, not discs — see inc/brand.php for why the motif had to differ from the fork's
   bokeh. Fixed intrinsic size is set on the svg element itself (anti-CLS); this only
   places it and keeps it decorative. */
.rvz-light {
	display: block;
	width: 100%;
	height: auto;
	border: 1px solid var(--wp--preset--color--rim);
	border-radius: 0;
}
.rvz-footer .rvz-light { opacity: .72; }

/* ---- 4. The trust band sits ABOVE the brand row ------------------------
   The fork moved this band below the brand row. Two sites in one network with the same
   tree should not also share the same header stacking order, and above the brand row it
   behaves like a printed masthead's dateline: a thin ruled strip the eye reads once and
   then ignores. Hairline BOTTOM only — a top hairline against the viewport rim is a
   line nobody sees. */
.rvz-topline--over {
	margin: 0 0 2px;
	border-top: 0;
	border-bottom: 1px solid var(--wp--preset--color--rim);
	background: transparent;
}
.rvz-topline--over .rvz-topline__row { letter-spacing: .18px; }

/* ---- 5. Footer support column ------------------------------------------ */
.rvz-footer__support {
	margin: 0 0 10px;
	font-size: 14px;
	line-height: 1.62;
	color: var(--wp--preset--color--body);
}
.rvz-footer__support--muted { color: var(--wp--preset--color--muted); font-size: 13px; }
.rvz-footer__support a { color: var(--wp--preset--color--chrome-soft); }

/* ---- 6. GEOMETRY: 0 / 3 / 14, square buttons --------------------------
   theme.json now declares these radii, but around twenty hard-coded radii survive in
   the layers above (pills on chips, 50% on the mark frame, 2px on buttons, 8-10px on
   cards). They are restated here rather than hunted one by one: the tail wins, and a
   single block is auditable where twenty scattered edits are not. */
.rvz-chip,
.rvz-chips .wp-block-button__link,
.wp-block-button__link,
.wp-element-button,
.rvz-plate,
.rvz-route,
.rvz-codebox__field,
.rvz-agegate__row button,
.rvz-cookie__row button,
.rvz-sticky a { border-radius: 0; }
.rvz-card,
.rvz-panel,
.rvz-codebox,
.rvz-payrail--strip,
.wp-block-table { border-radius: 0; }
.rvz-brand__mark { border-radius: 0; }
.rvz-agegate__card,
.rvz-cookie { border-radius: 0; }
/* The age-gate badge is the one place a shape is allowed to be a plate: it is a stamp,
   not a control. Square, like everything else, but carrying the jewel ramp. */
.rvz-agegate__badge { border-radius: 0; }

/* ---- 7. Brushed platinum on primary buttons --------------------------------
   theme.json points the button background at the plat gradient and its text at ink
   (#0C0D2A on #D3C4D4 = 9.4:1). Restated here for the three chrome buttons that are
   NOT core buttons (they are inline-styled in inc/chrome.php) so the primary controls
   on a page cannot drift apart. */
.rvz-agegate__yes,
.rvz-cookie__row .rvz-cookie__ok,
.rvz-sticky a {
	background: linear-gradient(122deg, #EBDEED 0%, #D3C4D4 56%, #B7A2B9 100%);
	color: var(--wp--preset--color--ink);
}

/* ---- 8. The hairline rule keeps its warmth ---------------------------- */
.rvz-section > .wp-block-heading:first-child { border-top-color: var(--wp--preset--color--rim); }
hr.wp-block-separator { border-color: var(--wp--preset--color--rim); opacity: 1; }
/* ---- 9. An offer value that is a SENTENCE, not an amount ----------------
   `.rvz-offer__amount` is display-sized because it was built to hold «550 AZN». Three
   rows on this site legitimately hold prose instead — the wager multiplier and the
   validity window are values only the operator may state, so the honest cell reads
   «operatorun şərtlərində göstərilir». At 34px that sentence set two lines tall and
   made its own row label look like a footnote.

   Two selectors, deliberately. The explicit modifier is what the imported pages carry,
   so the fix is deterministic; the `:has()` rule is the safety net for any future page
   whose author forgets it — a value with no `.rvz-num` figure inside it is by definition
   not an amount. Older engines without `:has()` still get the modifier. */
.rvz-offer__amount--open,
.rvz-offer__amount:not(:has(.rvz-num)) {
	font-family: var(--wp--preset--font-family--body);
	font-size: 15.5px;
	font-weight: 500;
	line-height: 1.5;
	letter-spacing: 0;
	color: var(--wp--preset--color--muted);
	text-transform: none;
}
/* The same rule for the figure's open values, which share the problem and the reason. */
.rvz-figure__v--open {
	font-family: var(--wp--preset--font-family--body);
	font-size: 15.5px;
	font-weight: 500;
	letter-spacing: 0;
	color: var(--wp--preset--color--muted);
}
/* ================= END LX IDENTITY LAYER ================= */

/* === R1V IDENTITY LAYER — royalevegas-az.net · «Royale Vegas» ===================
   Appended AFTER every inherited layer, so each rule here wins on source order alone
   and none of them needs !important.

   Three themes have now been stacked into this stylesheet (RZ, LX, VY). The colour
   tokens were re-pointed by fork_r1v.py, but the inherited layers still LAY THINGS OUT
   like the sibling they came from: an italic didone wordmark with a filled «VIP» plate
   and a neon halo, 20px plates, 10px buttons. Two hubs in this network already ship a
   Platinum & Onyx field; if this one also ships the sibling's SHAPES it is the same
   site with a different hue, which is exactly the fingerprint the brief forbids.

   So this layer is the silhouette:
     - hard edges, not soft. 14px plates, 2px buttons, 0 on the rank chip.
     - the filled plate moves off «VIP» and onto the RANK NUMERAL, which is what this
       domain's name is actually about.
     - no italic anywhere in the display face. The sibling's whole voice is italic
       serif; this one is roman, and its emphasis device is a glacier ice mono kicker.
     - the decorative motif is a STEPPED TERRACE (see inc/brand.php), never arcs, never
       bokeh discs.
   ========================================================================== */

/* ---- 0. Weights the theme actually loads -------------------------------------
   Zilla Slab's variable range runs 100-900 but this build requests 600/700/800 only, so
   any 900 in an inherited rule is a synthetic bold: the browser smears the 800 master
   and the stem/joint ratio of a techno grotesque goes visibly soft at hero size.
   Every display weight is pinned to one that is really loaded. */
h1, .rvz-hero h1 { font-weight: 700; }
h2 { font-weight: 700; }
h3, h4 { font-weight: 700; }

/* Zilla Slab is a WIDE techno grotesque: it already sets loose, so it wants only a hair of
   negative tracking at hero size and none at all below 24px. The inherited -1.4px was
   cut for a geometric serif and closed Zilla Slab's counters into each other. */
h1 {
	letter-spacing: -0.6px;
	/* 1.2, not 1.05, and it must be repeated HERE: this bare `h1` rule sits ~1550 lines
	   after the leading block near h2's, carries the same 0,0,1 specificity, and therefore
	   won on document order. Setting only the earlier one left exactly one heading still
	   colliding — the wrapped H1 "Royale Vegas Mobil Tətbiq Yüklə" at 360px, y over b at
	   -0.094em. See the leading note earlier in this file and `node leading_rwa.js`. */
	line-height: 1.2;
}
h2 { letter-spacing: -0.25px; }

/* The one emphasis device in the type system: a name inside prose, set in the accent
   rather than in italic, because Zilla Slab ships no italic in this build.
   It takes the ROSE-GOLD family, not jewel. Verdigris is this identity's data colour
   and is spent only on measured figures; an emphasised proper noun in that colour reads as
   a value to compare, which is exactly the wrong signal on «MilliÖN» and «Azərlotereya» —
   the two names the page exists to tell apart from a payment rail. */
.rvz-em {
	font-style: normal;
	font-weight: 700;
	color: var(--wp--preset--color--chrome-soft);
}

/* ---- 1. The brand lockup in the header --------------------------------------
   «Royale Vegas» in the display face, and the rank as a small filled chip after it. The chip is
   the only glacier ice in the header, so the eye lands on the number — which is the half
   of the name that separates this domain from its siblings. */
.rvz-brand__word {
	font-weight: 700;
	letter-spacing: -0.4px;
}
.rvz-brand__vip {
	display: inline-block;
	margin-left: 0.3em;
	padding: 0.1em 0.34em;
	font-family: var(--wp--preset--font-family--body);
	font-size: 0.66em;
	font-weight: 700;
	letter-spacing: 0.16em;
	line-height: 1.2;
	color: var(--wp--preset--color--chrome);
	background: transparent;
	border: 1px solid var(--wp--preset--color--chrome-deep);
	border-radius: 0;
	vertical-align: 0.16em;
}
.rvz-brand__num {
	display: inline-block;
	margin-left: 0.26em;
	padding: 0.1em 0.42em;
	font-family: var(--wp--preset--font-family--mono);
	font-size: 0.62em;
	font-weight: 500;
	line-height: 1.24;
	color: var(--wp--preset--color--ink);
	background: var(--wp--preset--color--jewel);
	border-radius: 0;
	vertical-align: 0.2em;
}
.rvz-brand:hover .rvz-brand__vip,
.rvz-brand:focus-visible .rvz-brand__vip { border-color: var(--wp--preset--color--chrome); }
.rvz-brand:hover .rvz-brand__num,
.rvz-brand:focus-visible .rvz-brand__num { background: var(--wp--preset--color--jewel-lit); }
.rvz-brand__cluster { color: var(--wp--preset--color--muted); }
.rvz-brand__crest {
	border-radius: 0;
	box-shadow: inset 0 1px 0 rgba(235, 222, 237, .22);
}

/* ---- 2. The page wordmark ----------------------------------------------------
   Roman «Royale», an OUTLINED «VIP», then the rank on a filled glacier ice plate. Reading
   left to right the weight increases and the contrast increases, so the figure is the
   terminal beat of the lockup rather than an afterthought stuck on the end. */
.rvz-wordmark__lock {
	align-items: baseline;
	gap: 0 0.3em;
}
.rvz-wordmark__royale {
	font-size: clamp(36px, 7vw, 74px);
	font-style: normal;
	font-weight: 700;
	letter-spacing: -2.2px;
	color: var(--wp--preset--color--heading);
}
.rvz-wordmark__vip {
	position: static;
	padding: 0.2em 0.46em;
	font-family: var(--wp--preset--font-family--body);
	font-size: clamp(16px, 2.3vw, 25px);
	font-weight: 700;
	letter-spacing: 0.2em;
	line-height: 1;
	color: var(--wp--preset--color--chrome);
	background: transparent;
	background-image: none;
	-webkit-text-fill-color: currentColor;
	border: 1px solid var(--wp--preset--color--chrome-deep);
	border-radius: 0;
}
/* The halo the sibling paints behind its plate is gone with the plate. */
.rvz-wordmark__vip::after { content: none; }
.rvz-wordmark__rank {
	display: inline-block;
	padding: 0.16em 0.5em;
	font-family: var(--wp--preset--font-family--mono);
	font-size: clamp(18px, 2.6vw, 28px);
	font-weight: 500;
	line-height: 1;
	color: var(--wp--preset--color--ink);
	background: var(--wp--preset--color--jewel);
	border-radius: 0;
}
.rvz-wordmark--jewel .rvz-wordmark__rank {
	color: var(--wp--preset--color--heading);
	background: var(--wp--preset--color--jewel-deep);
}
.rvz-wordmark__rule {
	width: min(100%, 24rem);
	height: 2px;
	padding-top: 0;
	border-top: 0;
	background: linear-gradient(90deg,
		var(--wp--preset--color--jewel) 0%,
		var(--wp--preset--color--chrome-deep) 38%,
		transparent 100%);
}

/* ---- 3. [rvz_pull] — the citable Q -> A block ---------------------------------
   The passage an AI Overview is meant to lift. The sibling rules it on the inline-start
   rim and sets the answer in italic serif; here it is a BAND — hairlines above and
   below, roman serif inside — so the block reads as a plate cut out of the page rather
   than as a margin note. */
.rvz-pull {
	margin: 28px 0 32px;
	padding: 20px 0 22px;
	border-inline-start: 0;
	border-top: 1px solid var(--wp--preset--color--chrome-deep);
	border-bottom: 1px solid var(--wp--preset--color--rim);
}
.rvz-pull__q {
	margin: 0 0 12px;
	font-family: var(--wp--preset--font-family--mono);
	font-size: 12px;
	font-weight: 500;
	letter-spacing: 0.16em;
	text-transform: uppercase;
	color: var(--wp--preset--color--jewel-lit);
}
.rvz-pull__a > p {
	margin: 0 0 0.7em;
	font-family: var(--wp--preset--font-family--heading);
	font-style: normal;
	font-size: clamp(19px, 2.1vw, 23px);
	font-weight: 400;
	line-height: 1.46;
	letter-spacing: -0.3px;
	color: var(--wp--preset--color--contrast);
}
.rvz-pull__a > p:last-child { margin-bottom: 0; }
/* From the second paragraph the answer drops to the body face: the lifted passage is
   the FIRST paragraph, and three of them in display grotesque is a wall, not a quotation. */
.rvz-pull__a > p ~ p {
	font-family: var(--wp--preset--font-family--body);
	font-size: 16px;
	font-weight: 400;
	letter-spacing: 0;
	line-height: 1.66;
	color: var(--wp--preset--color--body);
}

/* ---- 4. [rvz_tiers] — the VIP ladder -----------------------------------------
   Five rows, rank / name / condition. Only the first rung is lit, because «1» is this
   domain's name and not a rating. Grid rather than a table: there is no data here to
   sort or compare across columns, and a three-cell row reflows to two lines on a phone
   far more gracefully than a table does.

   Note the CONDITION column carries no figures. The operator sets the turnover bands
   and changes them; printing a plausible number here would be a fabricated fact in
   front of a reader about to spend money. */
.rvz-ladder {
	display: grid;
	gap: 0;
	margin: 26px 0 0;
	padding: 0;
	list-style: none;
	border: 1px solid var(--wp--preset--color--rim);
	border-radius: 0;
	overflow: hidden;
	background: var(--wp--preset--color--surface);
}
.rvz-ladder__row {
	display: grid;
	grid-template-columns: 46px 1fr auto;
	align-items: center;
	gap: 14px;
	padding: 14px 16px;
	border-top: 1px solid var(--wp--preset--color--rim);
}
.rvz-ladder__row:first-child { border-top: 0; }
.rvz-ladder__row--lit { background: rgba(165, 41, 174, .07); }
.rvz-ladder__rank {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 34px;
	height: 34px;
	font-family: var(--wp--preset--font-family--mono);
	font-size: 14px;
	font-weight: 500;
	color: var(--wp--preset--color--figure);
	border: 1px solid var(--wp--preset--color--chrome-deep);
	border-radius: 0;
}
.rvz-ladder__row--lit .rvz-ladder__rank {
	color: var(--wp--preset--color--ink);
	background: var(--wp--preset--color--jewel);
	border-color: var(--wp--preset--color--jewel);
}
.rvz-ladder__name {
	font-family: var(--wp--preset--font-family--heading);
	font-size: 18px;
	font-weight: 400;
	letter-spacing: -0.2px;
	color: var(--wp--preset--color--heading);
}
.rvz-ladder__cond {
	font-size: 14px;
	line-height: 1.4;
	color: var(--wp--preset--color--muted);
	text-align: right;
}
.rvz-ladder__note {
	grid-column: 1 / -1;
	margin: 0;
	padding: 14px 16px 16px;
	border-top: 1px solid var(--wp--preset--color--rim);
	background: var(--wp--preset--color--base);
	font-size: 14px;
	line-height: 1.62;
	color: var(--wp--preset--color--body);
}
@media (max-width: 560px) {
	.rvz-ladder__row {
		grid-template-columns: 38px 1fr;
		row-gap: 4px;
	}
	.rvz-ladder__cond {
		grid-column: 2;
		text-align: left;
	}
	.rvz-ladder__rank { width: 30px; height: 30px; }
}

/* ---- 5. Focus ring -----------------------------------------------------------
   Bone white would be nearly the same value as the platinum accent, so on a platinum
   button the ring would vanish. Two-tone instead: a dark separator against the control
   and a glacier ice ring outside it, which is the one hue on the site that no surface
   uses as a large fill. The outline is kept (transparent) so Windows High Contrast
   still paints one. Radius 3px, to agree with the hard edges above rather than
   rounding a square button while it is focused. */
a:focus-visible,
button:focus-visible,
.wp-block-button__link:focus-visible,
.wp-block-navigation-item__content:focus-visible,
.wp-block-navigation__responsive-container-open:focus-visible,
.wp-block-navigation__responsive-container-close:focus-visible,
input:focus-visible,
textarea:focus-visible,
select:focus-visible,
summary:focus-visible,
[tabindex]:focus-visible {
	outline: 3px solid transparent;
	outline-offset: 3px;
	box-shadow:
		0 0 0 2px var(--wp--preset--color--base),
		0 0 0 5px #A529AE;
	border-radius: 0;
}
/* …and again at 0,4,0 for the primary CTA. The gradient-button rule
   `.wp-block-button:not(.rvz-btn-outline) > .wp-block-button__link` is 0,3,0 and carries
   a RESTING box-shadow, so a 0,2,0 focus rule loses to it and the one control the page
   is built around is the only one with no visible focus state. */
.wp-block-button:not(.rvz-btn-outline) > .wp-block-button__link:focus-visible,
.wp-block-button.rvz-btn-outline > .wp-block-button__link:focus-visible {
	outline: 3px solid transparent;
	outline-offset: 3px;
	box-shadow:
		0 0 0 2px var(--wp--preset--color--base),
		0 0 0 5px #A529AE;
}
@media (forced-colors: active) {
	a:focus-visible,
	button:focus-visible,
	.wp-block-button__link:focus-visible,
	.wp-block-button:not(.rvz-btn-outline) > .wp-block-button__link:focus-visible,
	summary:focus-visible,
	[tabindex]:focus-visible {
		outline: 3px solid CanvasText;
		box-shadow: none;
	}
}

/* ---- 6. Plate geometry -------------------------------------------------------
   The inherited layer softened every plate to 20px and every button to 10px for an
   italic-serif voice. This identity is struck metal: a 14px plate, a 2px button, and a
   hairline that does the work a shadow would. */
.rvz-card,
.rvz-card-raised,
.rvz-panel,
.rvz-plate,
.rvz-faq,
.rvz-offer,
.rvz-step,
.rvz-feature,
.rvz-quicklink,
.rvz-statbox { border-radius: 0; }
.wp-block-button__link,
.wp-element-button { border-radius: 0; }

/* ---- 7. The one saturated hue, spent deliberately -----------------------------
   Glacier ice appears in exactly four places sitewide: the crown in the mark, the rank
   chip, the lit rung of the ladder, and the focus ring. Anything the inherited layers
   painted in the old accent that is NOT one of those four is returned to metal, so the
   hue keeps its meaning. */
.rvz-eyebrow { color: var(--wp--preset--color--chrome); }
.rvz-badge::before {
	background: var(--wp--preset--color--chrome);
	box-shadow: 0 0 8px rgba(211, 196, 212, .5);
}

/* ---- 8. prefers-reduced-motion ------------------------------------------------ */
@media (prefers-reduced-motion: reduce) {
	.rvz-skeleton,
	.rvz-skeleton--card,
	.rvz-skeleton--row,
	.rvz-skeleton--wide { animation: none; }
	.rvz-sticky { transition: none; }
}
/* ================= END R1V IDENTITY LAYER ================= */

/* === R1V STEP-7 UX PASS — defects measured on the real render ================
   Both of these are things the headless audit reports as "clean": neither is an
   overflow, a tap target, a contrast pair or a console error. They were found by
   looking at the shots.
   ========================================================================== */

/* ---- 1. The trust strip was drawing TWO separators per gap -------------------
   Three inherited layers each added a divider to `.rvz-seg`: an `::after` middot,
   a later rule that gave that same `::after` a `background` (so it painted as a
   hairline BAR as well as a glyph), and finally a `.rvz-topline .rvz-seg + .rvz-seg::before`
   middot. Between two segments the reader therefore saw «| ·».

   Worse, the `::before` sits INSIDE the following element, so on the one segment
   that is a link (Məsuliyyətli oyun) the link's underline ran under the middot and
   the pair rendered as a colon. Underline decoration does not propagate into an
   inline-block, which is the fix for that half.

   One separator, owned by the `::before`, and never underlined. */
.rvz-topline .rvz-seg + .rvz-seg::before { content: none; }
.rvz-topline .rvz-seg:not(:last-child)::after {
	content: "·";
	background: none;
	margin: 0 0 0 10px;
	color: var(--wp--preset--color--muted);
}

/* …with ONE exception, and it is the whole reason this rule was hard: the RG link is
   itself a `:not(:last-child)` segment (the AZN/clock follows it), so it grew an
   `::after` of its own — inside the link again, underlined again, reading as a colon
   again. It gets none. Nothing is lost: `--clock` is pushed to the far right by
   `margin-left:auto`, so there is a 400px gap where the separator would have gone and
   a dot there would separate nothing. */
.rvz-topline .rvz-seg.rvz-seg--rg:not(:last-child)::after,
.rvz-topline .rvz-seg--rg::after { content: none; }

/* The separator has to live on the PRECEDING segment, never inside the following
   one — and `display:inline-block` is not enough to save it when the following
   segment is the «Məsuliyyətli oyun» link: Chrome draws a text-decoration line
   across atomic inline children too, so the middot kept its underline tick and the
   pair still read as a colon. A trailing `::after` on the previous, non-link segment
   cannot be underlined by anything.

   Below 700px the strip stops being a strip: the segments become their own lines, and
   a middot is then either dangling at the end of a line or leading the next one.
   Neither is a separator, so there is nothing to separate and the dots go. */
@media (max-width: 700px) {
	.rvz-topline .rvz-seg::after,
	.rvz-topline .rvz-seg:not(:last-child)::after { content: none; }
	.rvz-topline__row { row-gap: 4px; }
}

/* ---- 2. The hero masthead outranked the page's own H1 ------------------------
   `[rvz_wordmark]` sets «Royale» at clamp(36px, 7vw, 74px) — designed for a page
   that has no competing display line. On the home page it sits directly above an
   H1 at 56px, so the first two things in the document were the same word twice, in
   the same serif, with the SMALLER one being the actual heading. Inverted
   hierarchy, and the repetition read as a rendering bug rather than as a masthead.

   Scoped to the case that is wrong: a wordmark followed by an H1. Elsewhere the
   lockup keeps its full scale. */
.rvz-wordmark:has(~ h1) .rvz-wordmark__royale,
.rvz-hero .rvz-wordmark .rvz-wordmark__royale {
	font-size: clamp(26px, 3.4vw, 40px);
	letter-spacing: -1.1px;
}
.rvz-wordmark:has(~ h1) .rvz-wordmark__vip,
.rvz-hero .rvz-wordmark .rvz-wordmark__vip { font-size: clamp(12px, 1.3vw, 15px); }
.rvz-wordmark:has(~ h1) .rvz-wordmark__rank,
.rvz-hero .rvz-wordmark .rvz-wordmark__rank { font-size: clamp(13px, 1.5vw, 17px); }
.rvz-wordmark:has(~ h1) .rvz-wordmark__kicker,
.rvz-hero .rvz-wordmark .rvz-wordmark__kicker { font-size: 11.5px; }
.rvz-wordmark:has(~ h1) .rvz-wordmark__rule,
.rvz-hero .rvz-wordmark .rvz-wordmark__rule { width: min(100%, 15rem); }
/* ============ END R1V STEP-7 UX PASS ============ */


/* ===========================================================================
   royalevegas-az.net — identity layer
   Loaded last on purpose: everything below either re-shapes a component the fork
   inherited square, or replaces a device that belonged to the donor domain.
   =========================================================================== */

/* ---- Geometry -------------------------------------------------------------
   The donor is a square house (2/4/14, 2px buttons). This one is soft. The ramp is in
   theme.json, but a fork's hand-written components carry their own literal radii, so
   they are re-pointed at the tokens here rather than left at 2px in eleven places. */
.rvz-card, .rvz-plate, .rvz-step, .rvz-faq, .rvz-note, .rvz-alert,
.rvz-codebox, .rvz-codebox__field, .rvz-table, .rvz-quick__item,
.rvz-payrail, .rvz-pull, .rvz-mockform, .rvz-access__row {
	border-radius: var(--wp--preset--border-radius--large, 20px);
}
.rvz-chip, .rvz-seg, .rvz-langtag, .rvz-badge, .rvz-brand__vip, .rvz-tag {
	border-radius: 0;
}
.wp-block-button__link, .rvz-cta, .rvz-sticky__link, .rvz-agegate__row button {
	border-radius: 0;
}
/* The age-gate badge is a DISC here — the mark is a jeton, so the one large round
   shape on the site is the identity rather than an exception to it. */
.rvz-agegate__badge { border-radius: 50%; }

/* ---- The brand lockup -----------------------------------------------------
   Three registers for three parts of one name, as in the donor — but the third slot is
   the CLUSTER, not a rank. «Giriş» is what this domain owns; a figure here would be a
   borrowed device from a sibling. */
.rvz-brand__vip {
	font-family: var(--wp--preset--font-family--body);
	letter-spacing: 0.16em;
	border: 1px solid var(--wp--preset--color--chrome-deep);
	background: transparent;
	color: var(--wp--preset--color--chrome);
}
.rvz-brand__num,
.rvz-wordmark__rank {
	font-family: var(--wp--preset--font-family--body);
	font-weight: 700;
	letter-spacing: 0.1em;
	text-transform: uppercase;
	color: var(--wp--preset--color--ink);
	background: var(--wp--preset--color--jewel);
	border-radius: 0;
	padding: 0.14em 0.62em;
}
/* Source Code Pro is reserved for FIGURES. «Giriş» is a word, and an uppercase word in
   the mono face is exactly the class of bug that painted «BƏLƏDÇİSİ» as «BOLODÇİSİ» on
   an earlier build — so the lockup's third slot is explicitly moved off the mono face
   above, and this is the standing reminder of why. */

/* ---- The jeton mark -------------------------------------------------------
   Round, with an engraved rim. Given a hairline halo so it separates from the onyx
   header without needing a plate behind it. */
.rvz-mark { display: block; }
.rvz-brand__mark {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	border-radius: 50%;
	box-shadow: 0 0 0 1px rgba(211, 196, 212, .10);
}

/* ---- Access panel (replaces the donor's VIP ladder) -----------------------
   A login site's central figure is not a ladder of ranks — it is the question "am I on
   the real entry point or a copy". So the device is a checklist of what a genuine entry
   point looks like, with the one row a reader can verify themselves lit. */
.rvz-access {
	display: grid;
	gap: 10px;
	margin: 26px 0;
	padding: 20px;
	background: var(--wp--preset--gradient--card, #181B39);
	border: 1px solid var(--wp--preset--color--rim);
	border-radius: var(--wp--preset--border-radius--large, 20px);
}
.rvz-access__row {
	display: grid;
	grid-template-columns: 40px 1fr;
	gap: 14px;
	align-items: start;
	padding: 13px 14px;
	background: var(--wp--preset--color--surface-raised);
	border: 1px solid var(--wp--preset--color--rim);
}
.rvz-access__row--lit {
	border-color: var(--wp--preset--color--jewel);
	background: linear-gradient(180deg, rgba(165, 41, 174, .09), rgba(165, 41, 174, 0));
}
.rvz-access__no {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 34px;
	height: 34px;
	border-radius: 50%;
	font-family: var(--wp--preset--font-family--mono);
	font-size: 14px;
	font-weight: 500;
	color: var(--wp--preset--color--ink);
	background: var(--wp--preset--color--chrome);
}
.rvz-access__row--lit .rvz-access__no { background: var(--wp--preset--color--jewel); }
.rvz-access__what {
	margin: 0 0 3px;
	font-weight: 700;
	color: var(--wp--preset--color--heading);
	line-height: 1.32;
}
.rvz-access__why {
	margin: 0;
	font-size: 14.5px;
	line-height: 1.56;
	color: var(--wp--preset--color--body);
}
.rvz-access__note {
	grid-column: 1 / -1;
	margin: 4px 0 0;
	font-size: 13px;
	line-height: 1.6;
	color: var(--wp--preset--color--dim);
}
@media (max-width: 520px) {
	.rvz-access { padding: 14px; }
	.rvz-access__row { grid-template-columns: 32px 1fr; gap: 11px; padding: 12px; }
	.rvz-access__no { width: 30px; height: 30px; font-size: 13px; }
}

/* ---- Mock login form ------------------------------------------------------
   The DESIGN-KIT asks the how-to templates for a form ILLUSTRATION and is explicit that
   it must not be a live control. So it is a <div> that looks like a form and announces
   itself as a picture: no <input>, no name attribute, nothing focusable, nothing that
   could ever receive — let alone transmit — a real credential. */
.rvz-mockform {
	margin: 24px 0;
	padding: 20px;
	background: var(--wp--preset--gradient--card, #181B39);
	border: 1px solid var(--wp--preset--color--rim);
}
.rvz-mockform__title {
	margin: 0 0 4px;
	font-weight: 700;
	color: var(--wp--preset--color--heading);
}
.rvz-mockform__lede {
	margin: 0 0 16px;
	font-size: 14.5px;
	line-height: 1.58;
	color: var(--wp--preset--color--muted);
}
.rvz-mockform__field {
	margin-bottom: 12px;
	padding: 12px 15px;
	background: var(--wp--preset--color--base);
	border: 1px solid var(--wp--preset--color--chrome-deep);
	border-radius: 0;
}
.rvz-mockform__cap {
	display: block;
	font-size: 12.5px;
	letter-spacing: 0.09em;
	text-transform: uppercase;
	color: var(--wp--preset--color--dim);
}
.rvz-mockform__line {
	display: block;
	height: 11px;
	margin-top: 7px;
	border-radius: 0;
	background: linear-gradient(90deg, rgba(211, 196, 212, .26), rgba(211, 196, 212, .06));
}
.rvz-mockform__line--short { width: 42%; }
.rvz-mockform__btn {
	display: block;
	margin-top: 4px;
	padding: 14px 22px;
	text-align: center;
	font-weight: 700;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--wp--preset--color--ink);
	background: var(--wp--preset--gradient--chrome);
	border-radius: 0;
}
.rvz-mockform__note {
	margin: 14px 0 0;
	font-size: 13px;
	line-height: 1.6;
	color: var(--wp--preset--color--dim);
}

/* ---- «Güncəl keçid» alert -------------------------------------------------
   The kit asks for an alert on the how-to pages. Coral, not the accent: this one says
   "check before you type", and spending the brand colour on a warning would make every
   warning look like an offer. */
.rvz-alert {
	display: grid;
	grid-template-columns: auto 1fr;
	gap: 13px;
	align-items: start;
	margin: 24px 0;
	padding: 16px 18px;
	background: rgba(242, 175, 136, .07);
	border: 1px solid rgba(242, 175, 136, .34);
}
.rvz-alert__mark {
	font-family: var(--wp--preset--font-family--mono);
	font-weight: 500;
	color: var(--wp--preset--color--warn);
}
.rvz-alert p { margin: 0; font-size: 15px; line-height: 1.6; color: var(--wp--preset--color--body); }
.rvz-alert p + p { margin-top: 8px; }


/* ===========================================================================
   The mono face carries FIGURES; every uppercase LABEL uses a text face.
   ---------------------------------------------------------------------------
   Not a coverage fix — Source Code Pro's ə and Ə are both verified real, correctly
   drawn outlines (assets_rwa.py probe). It is the structural rule that removes the
   whole class of risk, because a cmap entry is not a correct letter: Inconsolata has
   U+018F and draws it as a plain «O», which set «BƏLƏDÇİSİ» as «BOLODÇİSİ» on a sibling
   build with no missing glyph, no fallback and nothing any checker in this pipeline can
   see. Auditing that per face has to be redone for every future mono; keeping uppercase
   Azerbaijani out of the mono face does not.

   `shoot_rwa.js` enforces this as a standing check, so a component that drifts back into
   the mono face shows up in the next UX run rather than in a screenshot nobody reads.
   =========================================================================== */

/* The page kicker: a short label, so it keeps its caps — in the body face. */
.rvz-eyebrow {
	font-family: var(--wp--preset--font-family--body);
	font-weight: 600;
	letter-spacing: 0.13em;
}

/* The citable question. A fifty-character question in uppercase monospace is the one
   passage on the page designed to be read whole and quoted whole, so it gets the display
   face in mixed case — the same treatment as every other heading in this identity. */
.rvz-pull__q {
	font-family: var(--wp--preset--font-family--heading);
	font-weight: 400;
	font-size: 21px;
	line-height: 1.3;
	letter-spacing: -0.2px;
	text-transform: none;
}
@media (max-width: 600px) {
	.rvz-pull__q { font-size: 18.5px; }
}

/* Offer-plate captions («İlk depozitə», «Yuxarı hədd», «Müddət») label the figure beside
   them; the FIGURE stays in the mono face, the caption does not. */
.rvz-plate__label,
.rvz-codebox__label {
	font-family: var(--wp--preset--font-family--body);
	font-weight: 600;
	letter-spacing: 0.11em;
}

/* Comparison-table column headers («Cəhət», «Tətbiqdə», «Brauzerdə») are words. */
.rvz-compare__row--head > span {
	font-family: var(--wp--preset--font-family--body);
	font-weight: 700;
	letter-spacing: 0.1em;
}


/* ===========================================================================
   A ROW of plates is a different component from ONE plate.
   ---------------------------------------------------------------------------
   `.rvz-plate__num` is a HERO figure: clamp(84px, 17vw, 196px), cut for one number that
   dominates a section. Five of them in a column is a summary table wearing a hero's
   clothes — on the hub it ran to about 1 500 px of numerals, which no lint, no SEO check
   and no viewport audit flags, because it is neither an overflow nor a contrast failure
   nor invalid markup. So the row gets its own component instead of the single-plate one
   being shrunk for everybody.
   =========================================================================== */
.rvz-plates {
	display: grid;
	/* 200px, not 168: the section is inside the 736px constrained measure, so 168 laid
	   the five plates out 4 + 1 — a widow that reads as a mistake. 200 gives three
	   columns and a deliberate 3 + 2, and leaves «550 AZN» room to set on one line. */
	grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
	gap: 14px;
	margin: 26px 0;
}
.rvz-plates .rvz-plate {
	display: flex;
	flex-direction: column;
	gap: 6px;
	padding: 18px 18px 20px;
	background: var(--wp--preset--gradient--card, #181B39);
	border: 1px solid var(--wp--preset--color--rim);
	border-radius: var(--wp--preset--border-radius--large, 20px);
}
.rvz-plates .rvz-plate__label {
	font-size: 12px;
	line-height: 1.3;
	color: var(--wp--preset--color--muted);
}
/* Summary size, not hero size. Still the display face and still the accent ramp, so the
   figures keep the identity — they just stop being the page. */
.rvz-plates .rvz-plate__num {
	font-size: clamp(27px, 3.4vw, 38px);
	line-height: 1.06;
	letter-spacing: 0;
	white-space: nowrap;
}
@media (max-width: 400px) {
	.rvz-plates { gap: 10px; }
	.rvz-plates .rvz-plate { padding: 14px 15px 16px; }
}

/* ---- AZ casing guard ---------------------------------------------------
   Under lang="az" the browser maps «i» to «İ», so uppercasing any label that
   contains «Giriş» ships «GİRİŞ» — and any i in a brand label the same way. The brand's own elements therefore
   opt out of text-transform for good; capped copy is authored in caps instead. */
.rvz-brand, .rvz-brand__word, .rvz-brand__cluster,
.rvz-wordmark, .rvz-wordmark__lock, .wp-block-site-title,
.rvz-brandline, .rvz-sig__word { text-transform: none; }

/* ---- 360px: a nowrap trust chip cannot be longer than the viewport -----------
   `.rvz-trust` sets white-space:nowrap so short chips («AZN balans», «Bakı UTC+4»)
   never break across two lines mid-phrase. On the hub the licence chip is a whole
   sentence — «Curaçao lisenziya № ___ — nömrə operatorun öz altlığında» — whose
   intrinsic nowrap width is 366px, so at a 360px viewport it pushed the document
   6px wide and the whole page scrolled sideways. Shortening that one string would
   fix today's instance and leave the trap; below 480px the chips are simply allowed
   to wrap, which is correct for any long chip on any page. */
@media (max-width: 480px) {
	.rvz-trust { white-space: normal; }
}

/* ---- Card and button links are not prose links -------------------------------
   theme.json sets elements.link.textDecoration = underline, which WordPress emits as a
   bare `a { text-decoration: underline }`. That is right for a link inside a sentence and
   wrong for a link that IS a card: the route tiles came out with «GİRİŞ» underlined and a
   rule under every tile's description, and the store buttons on /yukle/ the same. A
   probe of every <a> on all eight pages found exactly three components affected —
   .rvz-quicklink (19), .rvz-store (3), and .rvz-seg (8), the last of which is underlined
   ON PURPOSE (the responsible-gambling link in the trust strip, where underline is the
   only affordance a 7px strip can carry). So the reset is named, not global.
   These two keep a non-colour affordance without the rule: both are bordered boxes with
   a hover lift and the site's jewel focus ring. */
.rvz-quicklink,
.rvz-quicklink:hover,
.rvz-store,
.rvz-store:hover { text-decoration: none; }

/* ==== RPA IDENTITY LAYER — royalevegas-az.net ==== */
/* ====================================================================
   RPA IDENTITY LAYER — royalevegas-az.net  «Navy & Rose-Gold — Ink & Ember»
   Appended to assets/css/theme.css by identity_rpa.py, LAST, so it wins at equal
   specificity over every inherited layer in the fork chain (RZ / LX / R1V / RPN).

   Two jobs only:
     (a) undo assumptions the fork inherited about a NORMAL-WIDTH GROTESQUE display
         face with an 800 master — this build's display face is a SLAB that stops at
         700;
     (b) state this domain's own premise: an embossed chrome plate. Every corner is
         square, every plate carries a 3px marigold-gold rule along its TOP rim and a
         1px inner highlight under it, and the one saturated colour (jewel) is
         spent only on measured figures.
   Kept as one appended block so a re-run replaces it wholesale.
   ==================================================================== */

/* ---- 0. Weights: the display face tops out at 700 ------------------------
   Zilla Slab's real wght range is 300–700. css2 CLAMPS an out-of-range weight and
   still answers 200, so an inherited `font-weight: 800` does not fail loudly — it
   ships as a browser-synthesised smear that thickens the stems unevenly and closes
   the slab serifs. fork_rpa.py rewrote every 800 to 700; these rules state the
   hierarchy that the lost weight step used to carry, using SIZE and TRACKING
   instead, so h1 and h2 are still clearly different objects at 700/600. */
h1,
h2,
h3,
h4,
.rvz-brand__word,
.rvz-brand__cluster,
.rvz-plate__num,
.rvz-eyebrow--serif {
	font-variation-settings: normal;
	font-optical-sizing: auto;
}
h1 { font-weight: 700; }
h2 { font-weight: 600; }
.rvz-brand__word { font-weight: 700; }
.rvz-brand__cluster { font-weight: 600; }
.rvz-plate__num,
.rvz-stat-tile .v,
.rvz-bonus__amount,
.rvz-step__num { font-weight: 700; }

/* ---- 1. Tracking and leading for a SLAB ---------------------------------
   The inherited values were measured for Anek Latin, a normal-width grotesque set
   with negative tracking. A slab wants the opposite treatment: its serifs already
   bind adjacent letters optically, so negative tracking jams them, and its taller
   ascenders plus the serif overshoot need more room between wrapped lines than a
   grotesque does. h3/h4 stay positive because upstream sets them in the BODY face
   as uppercase labels, where positive tracking is what makes a label legible.
   Leading is verified per column by leading_rpa.js — the binding pair in
   Azerbaijani is ş over İ (a cedilla hanging under one line beneath a dotted
   capital on the next), and a slab's cedilla is heavier than a grotesque's. */
h1 { letter-spacing: -0.1px; line-height: 1.16; }
h2 { letter-spacing: 0; line-height: 1.22; }
h3 { letter-spacing: 0.05em; line-height: 1.34; }
h4 { letter-spacing: 0.05em; }

/* ---- 2. Plate geometry: SQUARE, with an embossed chrome top rule ----------
   The donor cut every plate 2px on the leading corners and 14px on the trailing
   ones. That cut is royalevegas-az.net's signature and this site must not share it, so
   fork_rpa.py flattened every px radius to 0 and the signature moves to the EDGE
   treatment instead: a 3px marigold-gold rule across the top of each plate with a 1px
   warm highlight immediately under it, which is what reads as chrome struck into a
   navy panel.

   Stated as inset box-shadows rather than borders so nothing reflows, and applied
   ONLY to containers that are never focusable — a resting box-shadow on a focusable
   element REPLACES its focus ring, a failure this codebase has already shipped
   twice. `.rvz-faq` is a <details>: the ring lives on its <summary>, so the
   container is safe. */
.rvz-card,
.rvz-panel,
.rvz-cat,
.rvz-step,
.rvz-faq,
.rvz-toc,
.rvz-note,
.rvz-table-wrap,
.rvz-statbox,
.rvz-shot,
.rvz-figure,
.rvz-flow,
.rvz-check,
.rvz-kyc__row,
.rvz-rail__plate,
.rvz-stat,
.rvz-game__thumb,
.rvz-game__media--css,
.rvz-offer,
.rvz-promo,
.rvz-mockform,
.rvz-codebox,
.rvz-access {
	border-radius: 0;
}
.rvz-card,
.rvz-panel,
.rvz-statbox,
.rvz-note,
.rvz-table-wrap,
.rvz-figure,
.rvz-stat,
.rvz-offer,
.rvz-access {
	box-shadow:
		inset 0 3px 0 0 var(--wp--preset--color--chrome),
		inset 0 4px 0 0 rgba(235, 222, 237, .34);
}
/* `.rvz-method` is deliberately absent: it already carries a 3px border-left whose
   COLOUR is the plate's semantic (chrome / jewel / chrome-deep). A second rule
   painted over it would destroy the distinction the component exists to make. */
.rvz-warn,
.rvz-cutoff {
	border-radius: 0;
	box-shadow:
		inset 0 3px 0 0 var(--wp--preset--color--warn),
		inset 0 4px 0 0 rgba(242, 175, 136, .30);
}

/* Buttons and chips lose their radius too, or the page would carry two geometries. */
.rvz-cta,
.rvz-btn-outline,
.rvz-chip,
.rvz-tag,
.rvz-badge,
.rvz-sticky__link,
.rvz-promo__copy,
.rvz-agegate__yes,
.rvz-cookie__ok,
.wp-block-button__link,
.wp-element-button {
	border-radius: 0;
}

/* ---- 3. Verdigris marks LABELS and MEASURED VALUES ----------------------
   The two accents have separate jobs and never swap: marigold-gold owns STRUCTURE, CTAs
   and prose emphasis; jewel — the single saturated slot — owns LABELS and
   MEASURED VALUES: the eyebrow, the citable question, the "is" side of a comparison,
   the 18+ badge, and every figure (RTP, wager, limits, version, clock). Keeping the
   two jobs apart is what stops the page reading like a sibling that recoloured its
   gold, and it is why the siblings' sage-green was moved out of this slot: cyan sits
   between the two and blurs both.
   `.rvz-em` is deliberately NOT jewel (see polish_rpa.py): an emphasised proper
   noun in prose is neither a label nor a value, and in the data colour «MilliÖN»
   read as a figure to compare. */
.rvz-rtp {
	border-radius: 0;
	border: 1px solid rgba(165, 41, 174, .38);
	background: rgba(165, 41, 174, .10);
	color: var(--wp--preset--color--jewel-lit);
}
.rvz-bar,
.rvz-rtpbar__track {
	border-radius: 0;
	background: rgba(211, 196, 212, .12);
}
.rvz-bar > i,
.rvz-rtpbar__fill {
	border-radius: 0;
	background: linear-gradient(90deg, var(--wp--preset--color--jewel-deep), var(--wp--preset--color--jewel));
}
.rvz-rtpbar__val {
	color: var(--wp--preset--color--jewel-lit);
}

/* Figures sit on tabular numerals, which is the only reason a mono face is in this
   identity at all. Azerbaijani LABELS never take the mono face — see the font
   rationale in functions.php. */
.rvz-num,
.rvz-rtp,
.rvz-table td,
.rvz-plate__num,
.rvz-stat-tile .v,
.rvz-stat__num,
.rvz-figure__v,
.rvz-tbl__lim {
	font-variant-numeric: tabular-nums;
}

/* ---- 4. The payment rail is this site's own component --------------------
   Row 49's angle is LOCAL: the AZN rails (m10 / Kapital Bank / ABB / Pasha Bank),
   Baku UTC+4 support hours and the Novruz/Qurban promo calendar — not the donor's
   RTP arithmetic. So the rail gets the identity's full treatment: an embossed strip
   whose cells are square, with the figure column in mono and the label column in
   the body face. */
.rvz-payrail {
	border-radius: 0;
	box-shadow:
		inset 0 3px 0 0 var(--wp--preset--color--chrome),
		inset 0 4px 0 0 rgba(235, 222, 237, .34);
}
.rvz-payrail__row {
	border-radius: 0;
}
.rvz-payrail__row + .rvz-payrail__row {
	border-top: 1px solid var(--wp--preset--color--rim);
}

/* ---- 5. Focus: a two-tone ring that survives on every ground -------------
   The accent is a warm marigold-gold; on a marigold-gold FILL a marigold-gold ring is invisible.
   So the ring is jewel with a dark spacer, which separates from the navy field,
   from a marigold-gold button and from a jewel data plate alike. Stated with
   :focus-visible AND a plain :focus fallback, and NOT inside :where() — :where() has
   zero specificity and any later class rule silently outranks it. */
a:focus-visible,
button:focus-visible,
summary:focus-visible,
[tabindex]:focus-visible,
.rvz-cta:focus-visible,
.rvz-btn-outline:focus-visible,
.rvz-sticky__link:focus-visible {
	outline: 3px solid var(--wp--preset--color--jewel);
	outline-offset: 2px;
	box-shadow: 0 0 0 6px rgba(6, 7, 26, .85);
}

/* ---- 6. Motion ----------------------------------------------------------- */
@media (prefers-reduced-motion: reduce) {
	*,
	*::before,
	*::after {
		animation-duration: .001ms !important;
		animation-iteration-count: 1 !important;
		transition-duration: .001ms !important;
		scroll-behavior: auto !important;
	}
}

/* ---- 7. The offer banner's headline -------------------------------------
   `inc/schema.php` builds the /bonus Offer node from `.rvz-offer__headline`, so the
   element has to be a real thing the READER sees, never a PHP constant. Restated
   here in the slab register. */
.rvz-offer__headline {
	margin: 0 0 4px;
	font-family: var(--wp--preset--font-family--heading);
	font-weight: 700;
	font-size: clamp(19px, 2.4vw, 24px);
	line-height: 1.24;
	letter-spacing: 0;
	color: var(--wp--preset--color--heading);
	text-transform: none;
}
/* Its honesty note. Found by classdiff_rpa.py, not by eye: the page USED
   `.rvz-offer__note` and no stylesheet in the chain DECLARED it, so the one sentence on
   /bonus/ that says the figures belong to the operator and change without notice was
   rendering as unstyled body text at full size — visually the loudest thing in the banner
   and semantically the quietest. Every other gate passed it, because unstyled text has no
   contrast, overflow or tap-target defect. */
.rvz-offer__note {
	margin: 14px 0 0;
	font-size: 12.5px;
	line-height: 1.6;
	color: var(--wp--preset--color--dim);
}
/* ==== END RPA IDENTITY LAYER ==== */

/* ==== RPB IDENTITY LAYER — royalevegas-az.net =================================
   «Deep Green & Neon Lime — Kupon & Voltaj»

   Appended last so it outranks every inherited layer in this fork chain by document
   order alone. Everything above it came from royale-pro-az.com (navy field, rose-gold
   accent, slab display, a 3px rule along the TOP of each plate); fork_rpb.py swapped the
   colours and patch_rvz_tokens.py renamed the palette slugs, but a re-skin is not an
   identity. This block is the identity: the type is re-fitted to an EXPANDED grotesque,
   and the plate signature moves from the top rim to the LEFT rim, where it becomes a
   ticket stub — a chrome spine, a perforation and a dashed tear line, with the two right
   corners chamfered off.

   Why a coupon: the row's cluster is bonus_promo and the brief asks for a playful register
   with the bonus banner promoted to the first screen. A ticket stub is the one motif that
   is literally about what the page is for.
   ------------------------------------------------------------------------- */

/* ---- 1. Type: fitted to Rowdies ------------------------------
   The inherited values (h1 1.16 / h2 1.22) were measured for Zilla Slab at a 56px hero.
   Two things changed at once here: the face is an EXPANDED grotesque, which sets wider
   and therefore wraps sooner at every width, and the hero ceiling dropped to 46px, so
   headings wrap MORE often — and every extra wrapped line is another chance for the
   binding Azerbaijani pair (ş over İ: a cedilla hanging beneath one line under a dotted
   capital on the next) to collide. Rowdies also carries a taller x-height
   and shorter descenders than the slab, which makes the cedilla sit closer to the line
   below at the same multiple.

   So the leading goes UP, not down, and it is verified per column by leading_rpb.js
   rather than eyeballed — see reference «royale-win-az»: a substituted display face that
   inherits its donor's sub-1.2 leading collided on 44 wrapped headings while every other
   gate reported the page clean.

   Tracking goes slightly NEGATIVE on the display sizes (an expanded face is already open)
   and stays positive on h3/h4, which are set in the BODY face as labels. */
h1 { letter-spacing: -0.6px; line-height: 1.26; }
h2 { letter-spacing: -0.3px; line-height: 1.32; }
h3 { letter-spacing: 0.01em; line-height: 1.42; }
h4 { letter-spacing: 0.02em; line-height: 1.42; }

/* The hero H1 is the one heading that is always the widest thing on its screen. Cap it
   below the fluid ceiling on narrow viewports so «Azərbaycan» cannot force a three-line
   hero at 360px. */
@media (max-width: 480px) {
	h1 { letter-spacing: -0.3px; }
}

/* ---- 2. Ambient field: radial only, never a page-tall linear ramp ---------
   The inherited rule opened with `linear-gradient(315deg, …)` across the whole
   `.wp-site-blocks::before` layer. On a long page that produces a hard diagonal rim
   where the ramp reaches its final stop — a seam that reads as a rendering fault rather
   than as light, and one this codebase has already shipped once (royale-vip.org). Every
   band here is a RADIAL pool with a soft outer stop, so there is no straight rim
   anywhere and no stop the eye can find.

   Positions are this domain's own: a chrome pool high RIGHT, an jewel pool at mid LEFT
   and a deep sink low CENTRE. */
.wp-site-blocks::before {
	background:
		radial-gradient(760px 420px at 88% -6%, rgba(211, 196, 212, .13), transparent 68%),
		radial-gradient(620px 620px at 2% 42%, rgba(165, 41, 174, .10), transparent 70%),
		radial-gradient(900px 380px at 50% 104%, rgba(99, 20, 105, .18), transparent 74%);
}

/* ---- 3. The plate signature: a ticket stub ---------------------------------
   The inherited signature was `inset 0 3px 0 0 <accent>` — a rule along the TOP of every
   plate. Restated along the LEFT rim instead, as three stacked inset columns that read
   as one stub:

       0–3px    the chrome spine
       3–10px   a dark gutter
       10–11px  a dashed-looking chrome hairline: the tear line

   Order matters and is the opposite of intuition: in `box-shadow` the FIRST layer paints
   on TOP, so the widest column is listed LAST and the narrow ones cover it. Written as
   inset shadows rather than borders so nothing reflows, and applied ONLY to containers
   that are never focusable — a resting box-shadow on a focusable element REPLACES its
   focus ring, a failure this fork chain has shipped twice (see the aria-current note
   further up this file). */
.rvz-card,
.rvz-panel,
.rvz-statbox,
.rvz-note,
.rvz-figure,
.rvz-stat,
.rvz-offer,
.rvz-kupon,
.rvz-payrail,
.rvz-mockform,
.rvz-codebox,
.rvz-promo,
.rvz-toc,
.rvz-pull {
	box-shadow:
		inset 3px 0 0 0 var(--wp--preset--color--chrome),
		inset 10px 0 0 0 rgba(6, 7, 26, .92),
		inset 11px 0 0 0 rgba(211, 196, 212, .34);
	/* The stub needs room to the left of the content or the spine sits under the text. */
	padding-left: max(24px, 1.4rem);
}
.rvz-warn,
.rvz-cutoff {
	box-shadow:
		inset 3px 0 0 0 var(--wp--preset--color--warn),
		inset 10px 0 0 0 rgba(6, 7, 26, .92),
		inset 11px 0 0 0 rgba(242, 175, 136, .30);
	padding-left: max(24px, 1.4rem);
}

/* The chamfer — the two RIGHT corners cut at 45°, opposite the stub spine, so the plate
   reads as torn away from a sheet.

   NOT applied to `.rvz-table-wrap`: it is a horizontal scroll container, and clipping a
   scrolling child at a corner looks like a bug rather than a cut. It keeps the spine and
   loses the chamfer, which is the right trade. */
.rvz-card,
.rvz-panel,
.rvz-statbox,
.rvz-note,
.rvz-figure,
.rvz-offer,
.rvz-kupon,
.rvz-mockform,
.rvz-codebox,
.rvz-promo,
.rvz-pull {
	clip-path: polygon(
		0 0,
		calc(100% - 13px) 0,
		100% 13px,
		100% calc(100% - 13px),
		calc(100% - 13px) 100%,
		0 100%
	);
}
/* A focus ring is painted OUTSIDE the element's box, so clipping a plate never eats a
   ring on the plate itself — but a focusable CHILD sitting hard against a chamfered
   corner would have the outer half of its ring clipped. Reserve the corner. */
.rvz-card > :last-child,
.rvz-panel > :last-child,
.rvz-offer > :last-child,
.rvz-kupon > :last-child,
.rvz-promo > :last-child {
	margin-bottom: 0;
}
.rvz-card,
.rvz-panel,
.rvz-offer,
.rvz-kupon,
.rvz-promo {
	padding-right: max(20px, 1.2rem);
}

/* ---- 4. [rvz_ticket] — the full coupon treatment --------------------------
   Everything the generic plate gets, plus a real perforation. Reserved for the two
   components whose whole subject IS a coupon (the promo-code illustration and the offer
   banner), because a perforation on every panel would stop reading as one. */
.rvz-ticket {
	position: relative;
}
.rvz-ticket::before {
	content: "";
	position: absolute;
	top: 10px;
	bottom: 10px;
	left: 5px;
	width: 3px;
	pointer-events: none;
	background-image: radial-gradient(circle at 1.5px 1.5px, var(--wp--preset--color--jewel) 1.4px, transparent 1.5px);
	background-size: 3px 13px;
	background-repeat: repeat-y;
	opacity: .85;
}

/* ---- 5. [rvz_kupon] — the promo-code anatomy ------------------------------
   Five numbered rows: an ordinal on a chrome stub, the rule, and the reason underneath.
   The lit row is the FIRST one, because "a code does not change the terms" is the single
   misconception the whole page exists to correct. */
.rvz-kupon {
	display: grid;
	gap: 0;
	background: var(--wp--preset--gradient--card);
	border: 1px solid var(--wp--preset--color--rim);
	padding-top: 6px;
	padding-bottom: 6px;
	margin: 22px 0;
}
.rvz-kupon__row {
	display: grid;
	grid-template-columns: 34px minmax(0, 1fr);
	gap: 0 15px;
	align-items: start;
	padding: 15px 4px;
}
.rvz-kupon__row + .rvz-kupon__row {
	border-top: 1px dashed rgba(211, 196, 212, .22);
}
.rvz-kupon__row--lit {
	background: rgba(211, 196, 212, .06);
}
.rvz-kupon__no {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 34px;
	height: 34px;
	font-size: 15px;
	font-weight: 500;
	color: var(--wp--preset--color--ink);
	background: var(--wp--preset--color--chrome);
	/* The ordinal stub carries the same chamfer as the plates, at a smaller radius. */
	clip-path: polygon(0 0, calc(100% - 7px) 0, 100% 7px, 100% 100%, 7px 100%, 0 calc(100% - 7px));
}
.rvz-kupon__what {
	display: block;
	font-family: var(--wp--preset--font-family--body);
	font-weight: 700;
	font-size: 16.5px;
	line-height: 1.44;
	color: var(--wp--preset--color--heading);
}
.rvz-kupon__why {
	display: block;
	margin-top: 6px;
	font-size: 15px;
	line-height: 1.66;
	color: var(--wp--preset--color--body);
}
.rvz-kupon__note {
	margin: 4px 4px 8px;
	padding-top: 12px;
	border-top: 1px solid var(--wp--preset--color--rim);
	font-size: 12.5px;
	line-height: 1.62;
	color: var(--wp--preset--color--dim);
}
@media (max-width: 480px) {
	.rvz-kupon__row {
		grid-template-columns: 28px minmax(0, 1fr);
		gap: 0 11px;
	}
	.rvz-kupon__no { width: 28px; height: 28px; font-size: 13.5px; }
	.rvz-kupon__what { font-size: 15.5px; }
}

/* ---- 6. The wordmark: «Royale Vegas» + a «.bet» stub chip ------------------
   Three registers, one name. «Play» is the half of the string this domain is built to
   own, so it takes the accent and the weight; «.bet» sits on a filled jewel chip so the
   visible mark says exactly what ROYALE_BRAND, og:site_name and the Organization node say
   — «Royale Vegas». The twin domain publishes plain «Royale Vegas», and two
   Organization nodes must not share a name. */
.rvz-wordmark__lock {
	line-height: 1.1;
	gap: 0 0.22em;
}
.rvz-wordmark__royale {
	font-weight: 500;
	letter-spacing: -0.9px;
	color: var(--wp--preset--color--contrast);
}
.rvz-wordmark__vip {
	font-size: clamp(38px, 7.4vw, 76px);
	font-weight: 700;
	letter-spacing: -1.6px;
	color: var(--wp--preset--color--chrome);
}
.rvz-wordmark__stub,
.rvz-brand__stub {
	display: inline-block;
	margin-left: .34em;
	padding: 2px 8px 3px;
	font-family: var(--wp--preset--font-family--body);
	font-weight: 700;
	font-size: .40em;
	line-height: 1.3;
	letter-spacing: .01em;
	color: var(--wp--preset--color--ink);
	background: var(--wp--preset--color--jewel);
	clip-path: polygon(0 0, calc(100% - 6px) 0, 100% 6px, 100% 100%, 6px 100%, 0 calc(100% - 6px));
	vertical-align: baseline;
	white-space: nowrap;
}
.rvz-brand__stub {
	font-size: 10.5px;
	margin-left: .3em;
	padding: 1px 6px 2px;
}
.rvz-brand__word {
	font-weight: 500;
	font-size: 19px;
	line-height: 1.2;
	letter-spacing: -0.55px;
}
.rvz-brand__vip {
	font-weight: 700;
	color: var(--wp--preset--color--chrome);
}
.rvz-wordmark__rule {
	display: block;
	height: 1px;
	margin-top: 14px;
	max-width: 320px;
	background-image: linear-gradient(90deg, var(--wp--preset--color--chrome) 0 12px, transparent 12px 20px);
	background-size: 20px 1px;
	background-repeat: repeat-x;
	opacity: .6;
}

/* ---- 7. Figures ----------------------------------------------------------
   The mono slot is Source Code Pro and it is reserved for figures. Its colour is the cool bone
   `figure`, NOT the accent: the accent's job on this build is structure, CTA and prose
   emphasis, and a page where every AZN amount is also chrome has no emphasis left. Measured
   values that need to stand out take `jewel-lit` through their own component class.

   Source Code Pro ships 300/400/500 only. patch_rvz_tokens.py rewrote every inherited
   `font-weight: 600|700` on a mono rule to 500 — css2 clamps a missing weight silently
   while still answering 200, and the browser then SYNTHESISES the bold by smearing the
   outline, which on a monospaced digit is where it shows most. */
.rvz-num,
.rvz-updated .rvz-num {
	color: var(--wp--preset--color--figure);
	font-feature-settings: "tnum" 1;
}

/* ---- 8. Focus: a bone ring, because the accent IS chrome -------------------
   The inherited ring was jewel. On this palette jewel is the one saturated FILL —
   the «.bet» chip, the demo badges, the positive chips — so an jewel ring vanishes on
   exactly the controls that carry it. A chrome ring is worse still: the primary button is a
   chrome gradient.

   The ring is therefore `contrast` bone, which separates from all four grounds this site
   has (the deep-green field, a surface panel, a chrome button, an jewel chip), plus a
   dark spacer so it reads on the pale fills too. Stated with :focus-visible at class-level
   specificity and NOT inside :where() — :where() has zero specificity and any later class
   rule silently outranks it. */
a:focus-visible,
button:focus-visible,
summary:focus-visible,
input:focus-visible,
select:focus-visible,
textarea:focus-visible,
[tabindex]:focus-visible,
.rvz-cta:focus-visible,
.rvz-btn-outline:focus-visible,
.rvz-sticky__link:focus-visible,
.wp-block-button__link:focus-visible,
.wp-element-button:focus-visible {
	outline: 3px solid var(--wp--preset--color--contrast);
	outline-offset: 2px;
	box-shadow: 0 0 0 6px rgba(6, 7, 26, .9);
}
/* The current-page nav marker is a resting box-shadow, so its focused state has to
   RE-COMPOSE the marker rather than let the ring replace it. Restated here because the
   ring colour changed above. */
.rvz-nav__list a[aria-current="page"]:focus-visible,
.rvz-nav__panel a[aria-current="page"]:focus-visible {
	box-shadow:
		inset 0 -2px 0 var(--wp--preset--color--chrome),
		0 0 0 2px var(--wp--preset--color--base),
		0 0 0 5px var(--wp--preset--color--contrast);
	outline: 3px solid transparent;
	outline-offset: 3px;
}

/* ---- 9. The offer banner — the coupon at full size ------------------------
   `inc/schema.php` builds the /bonus Offer node from `.rvz-offer__headline`, so the
   element has to be a real thing the READER sees, never a PHP constant. */
.rvz-offer {
	background: var(--wp--preset--gradient--card-raised);
	border: 1px solid var(--wp--preset--color--rim);
}
.rvz-offer__headline {
	margin: 0 0 6px;
	font-family: var(--wp--preset--font-family--heading);
	font-weight: 700;
	font-size: clamp(20px, 2.6vw, 27px);
	line-height: 1.3;
	letter-spacing: -0.2px;
	color: var(--wp--preset--color--heading);
	text-transform: none;
}
.rvz-offer__note {
	margin: 14px 0 0;
	font-size: 12.5px;
	line-height: 1.62;
	color: var(--wp--preset--color--dim);
}

/* ---- 10. Eyebrows and labels --------------------------------------------
   Uppercase labels stay in the BODY face. The mono face must never carry uppercase
   Azerbaijani: see reference_az_font_schwa_coverage — the mono slot is where Ə most often
   goes missing or is drawn as a plain O, and keeping mono to digits removes the whole
   class of risk instead of auditing for it every build. */
.rvz-eyebrow {
	font-family: var(--wp--preset--font-family--body);
	font-weight: 700;
	font-size: 12.5px;
	letter-spacing: 1.3px;
	text-transform: uppercase;
	color: var(--wp--preset--color--jewel-lit);
}

/* ---- 11. Motion ---------------------------------------------------------- */
@media (prefers-reduced-motion: reduce) {
	*,
	*::before,
	*::after {
		animation-duration: .001ms !important;
		animation-iteration-count: 1 !important;
		transition-duration: .001ms !important;
		scroll-behavior: auto !important;
	}
}

/* ---- 12. Forced colours -------------------------------------------------
   Every device in this layer draws itself with clip-path, box-shadow or a background
   image — all three are dropped in forced-colors mode, so the stub, the chamfer and the
   perforation disappear and the plates would lose their boundary entirely. Give them a
   real border back. */
@media (forced-colors: active) {
	.rvz-card,
	.rvz-panel,
	.rvz-statbox,
	.rvz-note,
	.rvz-figure,
	.rvz-offer,
	.rvz-kupon,
	.rvz-mockform,
	.rvz-codebox,
	.rvz-promo,
	.rvz-pull,
	.rvz-warn,
	.rvz-cutoff {
		border: 1px solid CanvasText;
		clip-path: none;
	}
	.rvz-ticket::before { display: none; }
	.rvz-kupon__no { clip-path: none; border: 1px solid CanvasText; }
	.rvz-wordmark__stub,
	.rvz-brand__stub { clip-path: none; border: 1px solid CanvasText; }
}
/* ==== END RPB IDENTITY LAYER ==== */


/* ==== RC1 IDENTITY LAYER — royalevegas-az.net ==================================
   «Deep Indigo & Marigold — Nömrə Bir»

   Appended last so it outranks every inherited layer in this fork chain by document
   order alone. Above this sit two earlier identities: royale-pro-az.com signed each
   plate along its TOP rim, and royaleplay.bet restated that signature along the LEFT
   rim as a ticket stub with chamfered right corners. fork_rc1.py swapped the colours
   and slugfix_rc1.py renamed the palette, but a re-skin is not an identity. This block
   is the identity, and it takes the one axis the chain has not used: a PLINTH.

   Why a plinth: the row's whole angle is the figure — «Royale Vegas», the first,
   the one. A figure wants a monument, so every plate is a block standing on a gilt
   base, and the mark is an obelisk with a «1» cut into it. That reading also survives
   the static export, because it is built from borders rather than from images.
   --------------------------------------------------------------------------- */

/* ---- 1. Type: fitted to Rowdies --------------------------------------
   The inherited metrics (h1 1.26 / -0.6px) were measured for Encode Sans Expanded at a
   46px hero. Rowdies is the opposite face: COMPACT geometric, tall x-height,
   short descenders, and it sets far narrower at the same size — so it wraps LESS often,
   and the leading that kept an expanded face legible now reads as a gap. Leading comes
   down and tracking goes further negative.

   H1/H2 STAY MIXED CASE, and that is a reversal worth recording. The first pass set them
   uppercase on the argument that a figure only reads as a wordmark when it is set as one.
   Two things killed it:

     1. It did not actually apply. Section 5a1 above carries
        `h1, h2, h1.wp-block-heading, h2.wp-block-heading { text-transform: none }`, and
        the compound selector outranks a bare `h1` however late it appears — so caps
        landed on the few headings authored inside wp:html and on none of the core ones.
        A rule that styles a minority of its targets is worse than no rule.
     2. Even applied, it was wrong here. These headings are long Azerbaijani sentences
        («Haradan başlamaq: beş bölmə, dörd addım»), and AZ sets more diacritics than any
        other Latin orthography in this network — ə ş ğ ç ö ü ı and the dotted İ. All-caps
        strips exactly the ascender/descender/dot cues those letters depend on, and it does
        it worst at 360px where the heading already wraps twice.

   The «figure as wordmark» job therefore belongs where it works: the `[rvz_wordmark]`
   lockup, whose chrome figure chip is set at display scale, and the `.rvz-ord` device
   in section 5 below. Neither costs the body copy anything.

   Leading is still re-fitted for Rowdies, which is the other half of the original
   note and remains true: it is a COMPACT geometric with a tall x-height and short
   descenders, so it sets narrower and wraps less often than the donor's Encode Sans
   Expanded, and the leading measured for that face reads as a gap here. leading_rc1.js
   confirms the AZ pairs stay clear all the way down to 1.00 — a substituted display face
   inheriting a donor's leading is exactly how royale-win-az.com shipped 44 colliding
   headings with every other gate green, so it is measured rather than eyeballed. */
   h3/h4 need `text-transform: none` SPELLED OUT, and dropping it is a regression this
   build actually shipped for one run. The inherited stylesheet carries
   `h3, h4 { text-transform: uppercase }` — h3/h4 are set in the body face at label size
   there, so caps are the donor's deliberate inversion. On this site h3 carries prose
   subheadings, and /reytinq-1/ has one that quotes a search string:
   «Lisenziya və sahiblik: «royale vegas casino owner» sualının cavabı». Uppercased under
   lang="az" the latin `i` in «casino» maps to `İ` and it renders «CASİNO» — a misspelling
   of the exact keyword the heading is about. shoot_rc1.js's brand-in-caps check caught it
   on all four breakpoints the moment the reset was removed. */
h1 { letter-spacing: -1px; line-height: 1.16; }
h2 { letter-spacing: -0.5px; line-height: 1.24; }
h3 { letter-spacing: 0.015em; line-height: 1.44; text-transform: none; }
h4 { letter-spacing: 0.025em; line-height: 1.44; text-transform: none; }

/* At 360px «Azərbaycan» is the widest single token on the page. Give the tracking back so
   it cannot force a third hero line. */
@media (max-width: 480px) {
	h1 { letter-spacing: -0.2px; line-height: 1.2; }
	h2 { letter-spacing: -0.1px; }
}

/* ---- 2. Ambient field ------------------------------------------------------
   Same radial-only construction as the donor (a page-tall linear ramp leaves a hard
   diagonal seam — shipped once already on royale-vip.org), but this domain's pools are
   its own and the accent switched sides: chrome high LEFT, jewel low RIGHT, and the
   deep sink in the MIDDLE rather than at the foot. */
.wp-site-blocks::before {
	background:
		radial-gradient(720px 460px at 8% -8%, rgba(211, 196, 212, .12), transparent 66%),
		radial-gradient(640px 560px at 98% 88%, rgba(165, 41, 174, .11), transparent 70%),
		radial-gradient(980px 420px at 46% 48%, rgba(99, 20, 105, .14), transparent 76%);
}

/* ---- 3. Geometry: 4px, not square -----------------------------------------
   The donor is square everywhere (163 explicit `border-radius: 0`). A small radius is
   the cheapest divergence that survives a screenshot diff, and 4px is small enough that
   the plinth still reads as a straight base. */
:root {
	--rvz-radius: 4px;
	--rvz-radius-sm: 3px;
}
.rvz-card,
.rvz-panel,
.rvz-statbox,
.rvz-note,
.rvz-figure,
.rvz-stat,
.rvz-offer,
.rvz-kupon,
.rvz-payrail,
.rvz-mockform,
.rvz-codebox,
.rvz-promo,
.rvz-toc,
.rvz-pull,
.rvz-warn,
.rvz-cutoff,
.rvz-table-wrap {
	border-radius: var(--rvz-radius);
}

/* ---- 4. The plate signature: a plinth --------------------------------------
   1px chrome hairline along the TOP, 3px chrome rule along the BOTTOM. Written as
   inset box-shadows so nothing reflows, and applied ONLY to containers that are never
   focusable — a resting box-shadow on a focusable element REPLACES its focus ring, a
   failure this fork chain has already shipped twice.

   The donor's three-column stub is REPLACED here, not layered over: `box-shadow` does
   not cascade per-layer, so re-declaring the property is what removes the spine. Its
   reserved left padding has to come back too, or every plate keeps a 24px gutter for a
   spine that is no longer painted. */
.rvz-card,
.rvz-panel,
.rvz-statbox,
.rvz-note,
.rvz-figure,
.rvz-stat,
.rvz-offer,
.rvz-kupon,
.rvz-payrail,
.rvz-mockform,
.rvz-codebox,
.rvz-promo,
.rvz-toc,
.rvz-pull {
	box-shadow:
		inset 0 1px 0 0 rgba(211, 196, 212, .38),
		inset 0 -3px 0 0 var(--wp--preset--color--chrome);
	padding-left: max(18px, 1.1rem);
	padding-bottom: max(16px, 1rem);
}
.rvz-warn,
.rvz-cutoff {
	box-shadow:
		inset 0 1px 0 0 rgba(242, 175, 136, .38),
		inset 0 -3px 0 0 var(--wp--preset--color--warn);
	padding-left: max(18px, 1.1rem);
	padding-bottom: max(16px, 1rem);
}

/* ---- 4b. The step rail: a shaft on a plinth ---------------------------------
   plinthprobe_rc1.js measured every plate class and found two with no plinth at all.
   `.rvz-faq` is deliberate — an accordion of 6-9 items with a gilt base each would
   out-shout the sections around it, so the FAQ stays a 1px-bordered secondary plate and
   edgecheck_rc1.js confirms each summary is identified by its own label at 14.6:1.

   `.rvz-steps` was not deliberate. It carries `border-left: 1px solid rgba(211, 196, 212,.28)`
   inherited from royaleplay.bet, where the LEFT rim was the house signature — so this one
   component was still signed on the donor's axis while every other plate had moved to the
   plinth. That is a footprint leftover, not a design decision.

   It is not fixed by deleting the rail: a numbered step list wants a vertical thread, and
   the thread is functional rather than decorative. So it is restated in THIS identity's
   language — a shaft standing on a base: the vertical rule stays (slightly stronger, so it
   actually reads) and a 3px chrome plinth closes it at the foot. A column with a plinth
   is the mark's own geometry at component scale. */
.rvz-steps {
	border-left: 1px solid rgba(211, 196, 212, .42);
	box-shadow: inset 0 -3px 0 0 var(--wp--preset--color--chrome);
	padding-bottom: 12px;
}

/* The chamfer belonged to the coupon reading and has to GO, not be overridden with a
   different polygon: a plate that is both rounded and clipped shows the clip winning at
   the corner and the radius nowhere, which looks like a bug. */
.rvz-card,
.rvz-panel,
.rvz-statbox,
.rvz-note,
.rvz-figure,
.rvz-offer,
.rvz-kupon,
.rvz-mockform,
.rvz-codebox,
.rvz-promo,
.rvz-pull {
	clip-path: none;
}

/* The perforation column was the coupon's tell. `.rvz-ticket` keeps its markup role
   (the offer banner and the promo-code plate both carry it) but is restated as a
   MONOLITH BAND: a single gilt column standing at the left inside rim, unbroken. */
.rvz-ticket::before {
	top: 8px;
	bottom: 8px;
	left: 7px;
	width: 2px;
	background-image: none;
	background-color: var(--wp--preset--color--chrome);
	opacity: .55;
	border-radius: 2px;
}

/* ---- 5. The ordinal tab ----------------------------------------------------
   The one new component this identity adds: a mono ordinal on a chrome plinth,
   used to number step groups and ranked rows. It is the figure angle stated at
   component scale, and it is the same plinth as every plate so it does not read as a
   foreign device. */
.rvz-ord {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 30px;
	min-height: 30px;
	padding: 0 7px;
	font-family: var(--wp--preset--font-family--mono);
	font-size: 14px;
	font-weight: 700;
	line-height: 1;
	color: var(--wp--preset--color--figure);
	background: var(--wp--preset--gradient--card-raised);
	border: 1px solid var(--wp--preset--color--rim);
	border-radius: var(--rvz-radius-sm);
	box-shadow: inset 0 -2px 0 0 var(--wp--preset--color--chrome);
}

/* ---- 6. The figure chip ---------------------------------------------------
   brand_rc1.py moved the wordmark's chip from «.bet» to «1». The inherited chip was
   sized and coloured for a three-character suffix: `.40em`, jewel fill, and the donor's
   45° chamfer on two corners. All three are wrong for a figure.

   - SIZE. The chip now carries the one character that separates this entity from
     royalecasino.az and royale-kazinom.com, both of which publish an Organization named
     plain «Royale Casino». A suffix may be small; the differentiator may not.
   - FILL. Marigold, not jewel. The palette doctrine reserves jewel as the one saturated
     fill for demo/RTP/positive states — a brand chip is none of those, and the figure
     is exactly what the accent exists to mark. ink-on-chrome measures 9.5:1.
   - SHAPE. The chamfer was the coupon reading. Replaced with the house plinth, so the
     chip is a monolith like every plate on the page.

   «Casino» has to be taken over WHOLESALE, not just recoloured. On the donor
   `.rvz-wordmark__vip` was itself a chip: 1px chrome-deep border, `0.2em 0.46em` padding,
   `0.2em` tracking, BODY face, chrome text — an outlined plate carrying the word «Play».
   The first pass here only set `color: heading`, which emptied the plate of its accent and
   left the border standing: the hero rendered «Royale [ Casino ] 1» with a stray rectangle
   round the middle word. Screenshot review caught it; no markup or contrast gate would
   have, because a border that is merely meaningless still measures fine.

   So the chip is dismantled: display face, display scale, heading colour, no border, no
   chip padding, and tracking back to a display value. The accent moves entirely to the
   figure beside it, which is the thing this brand owns. */
.rvz-wordmark__vip {
	padding: 0;
	border: 0;
	border-radius: 0;
	background: none;
	font-family: var(--wp--preset--font-family--heading);
	font-size: clamp(36px, 7vw, 74px);
	font-weight: 700;
	letter-spacing: -2.2px;
	line-height: 1;
	color: var(--wp--preset--color--heading);
}
/* The hero down-scaling rule further up keys on `.rvz-wordmark:has(~ h1)`; keep the two
   words in step when it fires, or «Royale» shrinks and «Casino» does not. */
.rvz-wordmark:has(~ h1) .rvz-wordmark__vip,
.rvz-hero .rvz-wordmark .rvz-wordmark__vip {
	font-size: clamp(26px, 3.4vw, 40px);
	letter-spacing: -1.1px;
}
/* The two display words need their own gap. `.rvz-wordmark__lock` sets `gap: 0 0.3em`, and
   an em gap on a FLEX CONTAINER resolves against the CONTAINER's font-size — which is the
   small inherited body size, not the 74px the children set on themselves. So the gap
   computed to a few pixels, `letter-spacing: -2.2px` ate what was left, and the hero read
   «RoyaleCasino». The margin has to live on the child, where 1em is the display em. */
.rvz-wordmark__royale {
	margin-right: 0.16em;
}
.rvz-wordmark__stub,
.rvz-brand__stub {
	font-family: var(--wp--preset--font-family--mono);
	/* Sized in vw, NOT in em, for the same reason as the gap above: `.52em` resolved
	   against the flex container's inherited size and printed the brand's one
	   differentiating character at ~9px beside two 74px words. */
	font-size: clamp(20px, 3.9vw, 41px);
	padding: 2px 10px 4px;
	letter-spacing: 0;
	background: var(--wp--preset--color--chrome);
	color: var(--wp--preset--color--ink);
	clip-path: none;
	border-radius: var(--rvz-radius-sm);
	box-shadow: inset 0 -3px 0 0 var(--wp--preset--color--chrome-deep);
}
.rvz-brand__stub {
	font-size: 13px;
	padding: 1px 7px 3px;
}
/* …and when the hero down-scaling rule fires, the figure scales with the words. */
.rvz-wordmark:has(~ h1) .rvz-wordmark__stub,
.rvz-hero .rvz-wordmark .rvz-wordmark__stub {
	font-size: clamp(15px, 1.9vw, 23px);
}
.rvz-brand__vip {
	color: var(--wp--preset--color--heading);
}

/* ---- 7. Forced colours -----------------------------------------------------
   The plinth is a box-shadow and the monolith band a background-colour; both are
   dropped in forced-colors mode, so the plates would lose their boundary entirely.
   Give them a real border back — and reset the clip-path the donor's own
   forced-colors block still names, so the two rules cannot disagree. */
@media (forced-colors: active) {
	.rvz-card,
	.rvz-panel,
	.rvz-statbox,
	.rvz-note,
	.rvz-figure,
	.rvz-offer,
	.rvz-kupon,
	.rvz-mockform,
	.rvz-codebox,
	.rvz-promo,
	.rvz-pull,
	.rvz-warn,
	.rvz-cutoff {
		border: 1px solid CanvasText;
		clip-path: none;
	}
	.rvz-ticket::before { display: none; }
	.rvz-ord { border: 1px solid CanvasText; }
}
/* ==== END RC1 IDENTITY LAYER ==== */

/* ==== RCL IDENTITY LAYER — royalevegas-az.net ==================================
   «Emerald & Brass — ÜZVLÜK LÖVHƏSİ» (the membership plate)

   Appended LAST to assets/css/theme.css by identity_rcl.py, so it outranks every
   inherited layer in this fork chain by document order alone. Above this sit six
   earlier identities (RZ / LX / R1V / RPA / RPB / RC1). fork_rcl.py swapped the
   colours, the palette slugs and the three typefaces — but a re-skin is not an
   identity, and the theme it produced still signed every plate on royalecasino1.net's
   axis. This block is the identity.

   THE PLATE SIGNATURE IS AN INSET FRAME, and the axis matters more than the drawing:

     royale-pro-az.com    signs the TOP rim
     royaleplay.bet       signs the LEFT rim, as a ticket stub with a cut corner
     royale-casino1.org   cuts CORNER brackets, a playing-card index
     royalecasino1.net    stands every plate on a BOTTOM plinth
     -> here                a HAIRLINE FRAME set 6px INSIDE all four edges

   An inset frame is not an edge treatment at all, which is why it reads as a different
   site rather than as a recolour of the same idea. It is also the correct metaphor for
   this row: a club register is an engraved plaque, and the frame is the first thing an
   engraver cuts. The crown recurs at body scale as a tick before every eyebrow, so the
   mark's own geometry is present on every section, not only in the header.

   WHY `outline` WITH A NEGATIVE OFFSET AND NOT A BACKGROUND LAYER.
   The obvious implementation is four 1px gradient strips positioned 6px in. That is what
   royale-casino1.org shipped, and it shipped BROKEN: the strips were written inside
   `background-image`, where position/size/repeat are not legal, so the parser dropped the
   whole declaration, `getComputedStyle` answered `none`, and the site's entire signature
   was missing on eight pages while block validation, seocheck, the contrast gate and the
   UX sweep were all clean. A background-layer frame also forces every plate's FILL to be
   restated in the same declaration — and the plates here have five different fills, so
   five chances to flatten one of them.

   `outline: 1px solid …; outline-offset: -6px` draws the identical hairline INSIDE the
   box in one declaration: it never touches the fill, never reflows, and survives
   forced-colors mode (where a box-shadow signature disappears entirely). probe_rcl.js
   reads the computed `outline-offset` on every plate class rather than trusting this file.

   THE ONE HAZARD, AND HOW IT IS AVOIDED. `outline` is also the focus-ring property, so a
   resting outline on a FOCUSABLE element would replace its focus ring — the failure this
   codebase has shipped twice with box-shadow. Every selector in section 2 is a container
   that is never focusable. `.rvz-faq` is a <details>: the ring lives on its <summary>,
   which is deliberately NOT in the list.
   --------------------------------------------------------------------------- */

/* ---- 0. Type: fitted to Rowdies ----------------------------------------
   The inherited metrics were measured for League Spartan — a compact geometric sans
   set tight and negative (h1 letter-spacing -2.2px at the hero). Rowdies is the
   opposite object: a text SERIF with bracketed serifs that already bind adjacent
   letters optically, so negative tracking jams them into each other, and its longer
   ascender/descender pair needs more room between wrapped lines than a geometric sans.
   Tracking goes to ~0 and leading comes up.

   Rowdies has a real 800 (variable 400–900), so the weight step the previous two
   identities had to fake with size is available again: h1 800 / h2 700 is a genuine
   two-stop hierarchy.

   THE OLD-STYLE FIGURE TRAP. Rowdies's DEFAULT figures are old-style (text) figures:
   «2026» sets with the 0 and 2 at x-height and the 6 rising, which in a hero next to
   the mono's lining figures reads as two different numbering systems on one screen —
   and «550 AZN» in a heading reads as a typesetting error rather than as a number.
   Every display element therefore asks for `lining-nums` explicitly. Verified on the
   render, not inferred: fontrender_rcl.py shows the roman face defaulting to old-style. */
h1, h2, h3, h4,
.rvz-wordmark__royale,
.rvz-wordmark__vip,
.rvz-brand__word,
.rvz-brand__cluster,
.rvz-eyebrow--serif,
.rvz-offer__headline,
.rvz-game__title,
.rvz-cat__title,
.rvz-feature__title,
.rvz-step__title,
.rvz-ladder__name {
	font-variant-numeric: lining-nums;
	font-feature-settings: "lnum" 1;
	font-optical-sizing: auto;
	font-variation-settings: normal;
}
h1 { font-weight: 800; letter-spacing: 0; line-height: 1.14; }
h2 { font-weight: 700; letter-spacing: 0; line-height: 1.2; }
h3 { line-height: 1.34; }
.rvz-wordmark__royale { font-weight: 800; letter-spacing: -0.4px; }
.rvz-wordmark__vip { font-weight: 600; letter-spacing: 0; }
.rvz-brand__word { font-weight: 700; letter-spacing: 0; }
.rvz-brand__cluster { font-weight: 500; }

/* ---- 0b. Lining figures site-wide, not just on the enumerated display slots ----
   The enumerated list above (h1–h4 plus the display components) missed the one place this
   actually shows: `[rvz_pull]`, the citable Q -> A passage, which the stylesheet sets in the
   DISPLAY face because it is «the passage designed to be read whole and quoted whole». A
   screenshot of the home page caught it — «ilk depozitə 100% … 550 AZN … 250 … 30 gündür»
   set with x-height zeros and a descending 3, so the one paragraph an answer engine is meant
   to lift read like a typesetting fault. No markup, contrast or validation gate can see this:
   the glyphs are all present and all correct, they are simply the wrong FIGURE STYLE.

   Enumerating the remaining display-face classes would leave the same hole open for the next
   component, so the default inverts instead: lining figures inherit from the root, and any
   component that genuinely wants old-style has to ask. Readex Pro and Source Code Pro ship
   lining figures anyway, so this changes nothing outside Rowdies. */
body,
.rvz-pull,
.rvz-pull__a {
	font-variant-numeric: lining-nums;
	font-feature-settings: "lnum" 1;
}

/* ---- 1. Mono weights: Source Code Pro ships 400 and 700, and nothing between ------
   The donor's mono was M PLUS 1 Code, a variable face used at 400 AND 500. Source Code Pro is
   a STATIC family with two upright weights, so css2 answers 200 for `wght@400;500` and
   every 500 becomes a browser-synthesised smear — thickened stems, closed counters, and
   figures that no longer align on the tabular grid, which is the one thing a mono is in
   this theme to do. Every mono slot is therefore pinned to a weight the file actually
   contains. Figures that carry meaning take 700; running mono text takes 400. */
.rvz-num,
.rvz-sig__host,
.rvz-langtag,
.rvz-seg,
.rvz-game__mono,
.rvz-codebox__field,
.rvz-tbl__lim { font-weight: 400; }

.rvz-plate__num,
.rvz-stat__num,
.rvz-step__num,
.rvz-one__num,
.rvz-ladder__rank,
.rvz-offer__amount,
.rvz-bonus__amount,
.rvz-game__rtp,
.rvz-figure__v,
.rvz-rtpbar__val,
.rvz-ord { font-weight: 700; }

/* ---- 1b. Uppercase LABELS leave the mono face -----------------------------
   probe_rcl.js flagged `.rvz-method__type` — the payment-rail label under each method name.
   The donor set it in the MONO face AND uppercased it, and the labels this build writes are
   Azerbaijani words («mobil pul kisəsi», «kart və köçürmə»), so a schwa lands in a capped
   mono slot on every page carrying the rail.

   Source Code Pro's Ə is drawn correctly (render-verified, fontrender_rcl.py), so this is not the
   Inconsolata «Ə drawn as a plain O» bug — but auditing that question per face every build is
   the expensive end state. The network already standardised the cheap one, and it is a
   CONTENT-vs-TYPE boundary rather than a per-face screen:

       the mono face carries FIGURES; every uppercase LABEL uses the body face.

   So the rule is removed rather than re-audited. Tracking is kept (a capped label needs it)
   and the size nudged up a little, because the body face sets narrower than the mono at the
   same px. */
.rvz-method__type,
.rvz-plat__name,
.rvz-cat__count {
	font-family: var(--wp--preset--font-family--body);
	letter-spacing: 0.08em;
	font-size: 11.5px;
	font-weight: 600;
}

/* ---- 1c. Accent AS TEXT is BRASS, never jewel ----------------------------
   contrast_rcl.js measured five components inheriting the donor's accent as a TEXT colour.
   fork_rcl.py had mapped the donor's teal (#DB58E4, a light mint that reads fine on indigo)
   onto jewel-lit (#8A1C92) — and jewel-lit on the baize field is **2.71:1**, well under AA
   for every one of them: the eyebrow (12.5px), the citable pull QUESTION (21px), the payment
   rail's method label, the variant key on the comparison rows, and `.rvz-game__mono`, which
   also carried a 0.55 alpha and measured **1.45:1**.

   This is the royale-win.net lesson in its other direction: every substitution in the colour
   map was individually correct, and the ROLE was wrong. The palette doctrine here is explicit
   — jewel is the one saturated FILL (the money CTA, the highlighted plate) and chrome carries
   every text accent — so the fix is to state the role, not to nudge the lightness of a colour
   that is doing the wrong job. Brass on the field measures 6.6:1; on a raised panel, 6.0:1.

   `.rvz-game__mono` is a caption rather than an accent, so it goes to `muted` (6.0:1 on the
   panel) and its alpha is reset: an accent at 55% opacity is not a lighter accent, it is an
   unreadable one. */
.rvz-eyebrow,
.rvz-pull__q,
.rvz-method__type {
	color: var(--wp--preset--color--chrome);
}
/* `.rvz-variant__key` needs the extra step: an earlier layer styles it through
   `.rvz-variant--is .rvz-variant__key`, a two-class selector that outranks a single class
   however late it appears. The class is repeated rather than reached for `!important`, which
   would be the last specificity this file could ever win. */
.rvz-variant__key.rvz-variant__key {
	color: var(--wp--preset--color--chrome);
}
.rvz-game__mono {
	color: var(--wp--preset--color--muted);
	opacity: 1;
}

/* ---- 1d. The brushed-metal ramp on headline figures stays in the LIGHT half ----
   `.rvz-plate__num` is not coloured — it is a `background-clip: text` gradient, so the ramp
   IS the letterform. fork_rcl.py mapped the donor's ramp stop-for-stop and produced
   jewel -> jewel -> pale tint, which means the first 40% of every 38px offer figure is
   jewel on deep green: **2.05:1**, against a 3:1 threshold. «550» — the single most
   important number on the site — was half unreadable, and no gate that reads `color` could
   see it, because the computed `color` is the fallback the ramp overrides.

   Restated as a chrome ramp entirely inside the light half of the palette: chrome-soft -> chrome ->
   figure, worst stop 5.6:1 on the plate. This also puts the figures back on the right side
   of the palette doctrine — jewel is a FILL, chrome carries figures. */
.rvz-plate__num,
.rvz-plate--jewel .rvz-plate__num,
.rvz-stat__num,
.rvz-offer__amount {
	background-image: linear-gradient(168deg, #EBDEED 0%, #D3C4D4 46%, #DCECEF 100%);
}

/* ---- 1e. Figures inside the offer banner are LEDGER, not the accent ---------
   Adding the offer banner that DESIGN-KIT template 04 asks for (and that the theme's Offer
   node reads its name from) re-opened the accent-as-text hole one level down: the headline
   wraps each amount in `.rvz-num` so the figures land on the mono face, and those spans
   inherited the donor accent — «100%», «550 AZN», «250» at 2.71:1 on the field.

   Same doctrine, stated for the nested case: jewel is a FILL, figures are figure ivory
   (10.8:1 here). Worth noting that the fix for a rule is not the rule for its children —
   1c coloured the headline correctly and its own numbers were still wrong. */
.rvz-offer__headline .rvz-num,
.rvz-offer__sub .rvz-num,
.rvz-offer__note .rvz-num {
	color: var(--wp--preset--color--figure);
}

/* ---- 2. THE SIGNATURE: an engraved inset frame ----------------------------
   One declaration per plate, and the inherited plinth is REPLACED rather than layered
   over: `box-shadow` does not cascade per layer, so re-declaring the property is the
   only way to remove the gilt base. Its reserved padding stays — the frame needs more
   inside room than the plinth did, not less. */
.rvz-card,
.rvz-card-raised,
.rvz-panel,
.rvz-statbox,
.rvz-note,
.rvz-figure,
.rvz-stat,
.rvz-offer,
.rvz-kupon,
.rvz-payrail,
.rvz-mockform,
.rvz-codebox,
.rvz-promo,
.rvz-toc,
.rvz-pull,
.rvz-faq,
.rvz-shot,
.rvz-flow,
.rvz-check,
.rvz-rail__plate,
.rvz-app__art,
.rvz-table-wrap {
	outline: 1px solid rgba(211, 196, 212, .5);
	outline-offset: -6px;
	box-shadow: none;
	padding: max(18px, 1.15rem);
}
.rvz-warn,
.rvz-cutoff,
.rvz-alert {
	outline: 1px solid rgba(242, 175, 136, .55);
	outline-offset: -6px;
	box-shadow: none;
	padding: max(16px, 1rem);
}

/* The step list is a THREAD, not a plaque: a numbered sequence wants a vertical rule
   down its side and would lose the sequence if it were boxed. So it keeps the rule,
   loses the inherited plinth, and gets no frame. */
.rvz-steps {
	border-left: 1px solid rgba(211, 196, 212, .42);
	box-shadow: none;
	padding-bottom: 4px;
}

/* The donor's monolith band down the inside-left of `.rvz-ticket` was royalecasino1.net's
   restatement of royaleplay.bet's perforation column. Both are somebody else's signature;
   the frame speaks for this site, so the column goes. */
.rvz-ticket::before { display: none; }

/* The ordinal chip: the same engraving at component scale, offset tighter because the
   chip is only ~22px tall and -6px would land outside its own padding box. */
.rvz-ord {
	outline: 1px solid rgba(211, 196, 212, .6);
	outline-offset: -3px;
	box-shadow: none;
}

/* ---- 3. THE CROWN TICK before every eyebrow ------------------------------
   A three-point crown drawn with clip-path on a pseudo-element — no fourth webfont, no
   request, no 404, and it cannot arrive late. Sized in em so it tracks the eyebrow at
   every breakpoint, and `vertical-align` lifts it onto the cap line rather than the
   baseline, where a 0.5em shape would sit visibly low.

   `content: ""` is stated explicitly: an inherited ::before from an earlier layer may
   carry a character, and a crown with a stray «·» inside it reads as a defect. */
.rvz-eyebrow::before {
	content: "";
	display: inline-block;
	width: 1.05em;
	height: 0.56em;
	margin-inline-end: 0.5em;
	vertical-align: 0.02em;
	background: var(--wp--preset--color--chrome);
	clip-path: polygon(0 100%, 0 38%, 25% 70%, 50% 0, 75% 70%, 100% 38%, 100% 100%);
}
.rvz-eyebrow::after { content: none; }

/* ---- 4. The lockup: «Royale Vegas» closed by a crown pip -------------------
   The donor's `__stub` was a mono chip carrying the figure digit «1». This brand has no
   digit — the differentiator is the WORD «Club» — so the chip is dismantled and the span
   becomes an empty, aria-hidden crown pip. The brand string stays exactly two selectable,
   translatable, quotable words, which is what an answer engine has to be able to lift.

   Sized in em on the SAME rule that sets font-size: an em width on a flex child resolves
   against the child's own font-size for width/height, but the inherited `gap: 0 0.3em` on
   `.rvz-wordmark__lock` resolves against the CONTAINER's size — the bug that once printed
   «RoyaleCasino» with no gap. The gap therefore stays a margin on the child. */
.rvz-wordmark__stub,
.rvz-brand__stub {
	font-size: clamp(18px, 2.6vw, 30px);
	display: inline-block;
	width: 0.95em;
	height: 0.52em;
	padding: 0;
	border: 0;
	border-radius: 0;
	box-shadow: none;
	margin-inline-start: 0.3em;
	align-self: center;
	background: var(--wp--preset--color--chrome);
	clip-path: polygon(0 100%, 0 38%, 25% 70%, 50% 0, 75% 70%, 100% 38%, 100% 100%);
}
.rvz-brand__stub { font-size: 13px; margin-inline-start: 0.34em; }
.rvz-wordmark:has(~ h1) .rvz-wordmark__stub,
.rvz-hero .rvz-wordmark .rvz-wordmark__stub { font-size: clamp(14px, 1.7vw, 21px); }
.rvz-wordmark__royale { margin-right: 0.16em; }
.rvz-brand__vip,
.rvz-wordmark__vip { color: var(--wp--preset--color--chrome); }

/* ---- 5. Focus ring: a plain selector list, and painted OUTSIDE the box ----
   Written as a plain list, NOT as `:where(a, button, …)`. `:where()` has ZERO
   specificity, so an inherited ring rule from any earlier layer wins and a handful of
   links keep the donor's colour — a defect this fork chain has now shipped twice.

   Two tones, because one is not enough on this palette: a chrome-soft ring reads at 12.9:1 on
   the baize field but only ~1.3:1 on a chrome FILL, and the money CTA is a jewel fill.
   `outline-offset: 3px` paints the ring outside the button, on the field, where the chrome-soft
   measures — and the jewel halo behind it separates the ring from any light plate the
   button happens to sit on. Measure the composited result (focusring_rcl.js) before
   "fixing" either number. */
a:focus-visible,
button:focus-visible,
summary:focus-visible,
[tabindex]:focus-visible,
.wp-block-button__link:focus-visible,
.rvz-quicklink:focus-visible,
.rvz-sticky__link:focus-visible,
.rvz-skip-link:focus-visible {
	outline: 3px solid var(--wp--preset--color--chrome-soft);
	outline-offset: 3px;
	box-shadow: 0 0 0 6px rgba(165, 41, 174, .6);
	border-radius: 2px;
}

/* ---- 6b. The sticky CTA reserves the safe area ----------------------------
   ux_rcl.js measured `bottom: 0` and a flat 10px pad on `.rvz-sticky` at 360px, which
   on any device with a home indicator puts the money button under the system gesture
   area — the brief asks for the opposite («sticky-CTA учитывает safe-area»). env() with
   a 0px fallback costs nothing on a device that has no inset. The height the rest of the
   layout reserves for the bar is a separate variable upstream, so the pad is added
   rather than replaced: shrinking the bar would leave a gap under it instead. */
.rvz-sticky {
	padding-bottom: calc(10px + env(safe-area-inset-bottom, 0px));
	bottom: env(safe-area-inset-bottom, 0px);
}

/* ---- 6c. The RG link in the trust ribbon is a 44px target ------------------
   ux_rcl.js measured `.rvz-seg--rg` at 108x30px on every breakpoint. Every other item
   in that ribbon is static text; this one is a LINK, and it is the route to
   /mesuliyyetli-oyun/ — the single control on the page that has to be effortless to
   hit. The ribbon grows 14px sitewide as a result, which is the correct trade.

   `inline-flex` + `align-items: center` rather than a padding block, so the text stays
   optically centred in the taller box instead of sitting on its old baseline. */
.rvz-seg--rg {
	display: inline-flex;
	align-items: center;
	min-height: 44px;
	min-width: 44px;
}

/* ---- 6d. The game card's meta line WRAPS -----------------------------------
   ux_rcl.js measured `.rvz-game__mono` running from x=198 to x=364 in a 360px viewport — the
   caption «nəzəri RTP · yüksək volatillik» pushed 4px past the edge, which is a horizontal
   spill on the hub's most-visible grid. The donor kept the caption on one line because its own
   captions were two words.

   Fixed at the COMPONENT, not in the copy: the meta row wraps and the caption is allowed to
   break, so any caption length is safe. Shortening the six strings on the home page would fix
   today's render and leave the next author the same trap. */
.rvz-game__meta {
	flex-wrap: wrap;
	row-gap: 2px;
}
.rvz-game__mono {
	white-space: normal;
	overflow-wrap: anywhere;
}

/* ---- 6. Forced colours ---------------------------------------------------
   The frame IS an outline, so unlike a box-shadow signature it survives forced-colors
   mode — but it is forced to the system border colour and the crown's clip-path shape
   loses its chrome fill, so the pips are given a real border to keep a silhouette. */
@media (forced-colors: active) {
	.rvz-eyebrow::before,
	.rvz-wordmark__stub,
	.rvz-brand__stub {
		background: CanvasText;
		forced-color-adjust: none;
	}
	.rvz-ticket::before { display: none; }
}
/* ==== END RCL IDENTITY LAYER ==== */

/* ==== RVZ IDENTITY LAYER — royalevegas-az.net =================================
   «Midnight Indigo & Neon Chrome — MARQUEE» (the bulb rail)

   Appended LAST to assets/css/theme.css by identity_rvz.py, which first TRUNCATES the
   inherited KRL layer (kralica-casino.com's quatrefoil + petal radius) rather than
   stacking on top of it: two mark systems in one stylesheet ship as two sites. Below this
   still sit eight earlier identities (RZ / LX / R1V / RPA / RPB / RC1 / RCL / KRL), so
   every device they signed a plate with is switched off explicitly here, not merely
   overpainted.

   fork_rvz.py swapped the colours, the palette slugs and the typefaces. A re-skin is not
   an identity. This block is the identity.

   THE PLATE SIGNATURE IS A MARQUEE BULB RAIL, and the axis matters more than the drawing:

     royale-pro-az.com    signs the TOP rim with one hairline
     royaleplay.bet       signs the LEFT rim as a solid ticket stub with a cut corner
     royale-casino1.org   cuts CORNER brackets, a playing-card index
     royalecasino1.net    stands every plate on a BOTTOM plinth
     royaleclub-az.com    cuts a HAIRLINE FRAME 6px inside all four edges
     royalspin.az         FLUTES the left edge (border-left: 3px double)
     kralica-casino.com   opens one diagonal pair of corners into a PETAL RADIUS
     -> here                a BULB RAIL: a repeating rhythm of small luminous dots set
                            just inside the plate's top edge, the way a Vegas marquee
                            board is lamped

   Why a rhythm and not another edge or corner device: the seven axes above are all STATIC
   GEOMETRY — a line, a shape, a radius. The eighth is a REPEATING LUMINOUS INTERVAL, which
   is a different property class again (background-image on a pseudo-strip), reads as
   signage rather than as stationery, and — the point for this row — is the one signature
   that says «Vegas» without a single cliché prop.

   Three things make it safe where earlier signatures broke:
     - it is drawn on a `::before` STRIP, not on the plate's own background, so it cannot
       collide with the five plate FILLS this theme carries (the trap that shipped
       royale-casino1.org's signature as nothing at all). Verified first: no plate class
       in this theme owns a ::before.
     - `background-image` is stated as a LONGHAND. An invalid `background` shorthand is
       what silently deleted a previous build's signature.
     - a background-image is DROPPED in forced-colours mode, so the plates also carry a
       real `border-top` that survives it (section 7).

   The recurring motif is the DIAMOND at three scales: one diamond is the eyebrow marker,
   one diamond closes the «ROYALE VEGAS» lockup, and a diamond on a stem is the mark
   itself (inc/brand.php) — the Vegas welcome-sign silhouette. It is deliberately NOT a
   crown: royaleclub-az.com already signs with a crowned plaque and kralica-casino.com
   refused the same crown one row earlier, so a third reach for it would put three sites on
   one symbol. The diamond is also what Rowdies already draws over every i and İ, so the
   marker and the typeface agree without being told to.
   ============================================================================ */

/* ---- 1. Type: what is actually true of Rowdies ---------------------------
   The inherited numbers were measured for a rounded playful display (Grandstander) at
   500–800 and they do not transfer.

     - Rowdies ships THREE static weights: 300, 400, 700. There is no 500, 600 or 800.
       css2 clamps an out-of-range weight silently and still answers 200, so the enqueue
       asks for 400;700 only and every heading is retargeted here — otherwise the browser
       synthesises a fake bold over a face that is already heavy.
     - Tracking goes slightly NEGATIVE at display size and stays at 0 below it. Rowdies is
       a wide, high-x-height poster face; the donor's `letter-spacing: 0` at h1 left
       display headings looking gappy.
     - Leading may NOT go below ~1.14. Azerbaijani stacks a dot on İ and a cedilla under ş
       in the same line box, and Rowdies' tittles are DIAMONDS that sit high — the two
       collide below that (the royale-win-az.com lesson, with less headroom than usual).
     - Rowdies' figures are lining by default, so the root `lining-nums` rule inherited
       from an earlier layer is a no-op here. Kept: it costs nothing and it is the standing
       guard for the next text serif in this lineage.

   WHY THE HEADING FACE IS NOT THE SIGNAGE FACE. Bungee was the first pick — it is a
   signage face, it has zero network uses and it passes the full Azerbaijani cmap check at
   every subset. It is also UNICASE, and `fontcase_rvz.py` renders its lowercase `i` as a
   DOTLESS `I`. In Azerbaijani i and ı are separate letters, so «giriş» would set as
   «GIRIŞ» — misspelled on every heading of the site, with no tofu, no fallback and nothing
   for a coverage check to see. It survives in section 4 only, scoped to the wordmark,
   whose string «ROYALE VEGAS» contains no i and no ı. */
h1 { font-weight: 700; letter-spacing: -0.010em; line-height: 1.14; }
h2 { font-weight: 700; letter-spacing: -0.004em; line-height: 1.22; }
h3 { font-weight: 400; letter-spacing: 0; line-height: 1.36; }
h4, h5, h6 { font-weight: 400; letter-spacing: 0; line-height: 1.40; }

/* Source Code Pro is a VARIABLE face (200–900); the enqueue asks 400;500;600;700. The
   figure slots take 500: this mono has a large x-height and at the tabular sizes here 600
   starts to fill its own counters. */
.rvz-plate__num,
.rvz-stat__num,
.rvz-step__num,
.rvz-one__num,
.rvz-offer__amount,
.rvz-bonus__amount,
.rvz-game__rtp,
.rvz-figure__v,
.rvz-rtpbar__val,
.rvz-marquee__v,
.rvz-ord { font-weight: 500; }

/* ---- 2. THE SIGNATURE: a marquee bulb rail -------------------------------
   Order matters: every inherited device is zeroed FIRST (`outline` = the RCL inset frame,
   `box-shadow` = the RC1 plinth, `border-left` = the RSP flute, `clip-path` = the RPB
   ticket chamfer, the asymmetric `border-radius` = the KRL petal), then the rail is
   stated.

   `position: relative` is required for the strip and is set on the same rule, not assumed.
   Top padding grows by 8px to make room for the lamps; nothing else changes, so no grid
   reflows. */
.rvz-card,
.rvz-card-raised,
.rvz-panel,
.rvz-statbox,
.rvz-note,
.rvz-figure,
.rvz-stat,
.rvz-offer,
.rvz-kupon,
.rvz-payrail,
.rvz-mockform,
.rvz-codebox,
.rvz-promo,
.rvz-toc,
.rvz-pull,
.rvz-faq,
.rvz-shot,
.rvz-flow,
.rvz-check,
.rvz-rail__plate,
.rvz-app__art,
.rvz-access,
.rvz-table-wrap {
	position: relative;
	outline: 0;
	outline-offset: 0;
	box-shadow: none;
	border-left: 0;
	clip-path: none;
	border-radius: 10px;
	border-top: 1px solid rgba(97, 103, 158, .55);
	padding: max(18px, 1.15rem);
	padding-top: max(26px, 1.6rem);
}
/* The lamps. `background-image` LONGHAND on a strip of its own, never a `background`
   shorthand on the plate. 13px pitch, 1.7px lamp; the second gradient is the halo that
   makes a 1.7px dot read as lit rather than as a speck. `pointer-events: none` keeps the
   strip out of the hit area; `overflow: hidden` is NOT used, because several of these
   plates legitimately overflow (tables scroll, tooltips escape). */
.rvz-card::before,
.rvz-card-raised::before,
.rvz-panel::before,
.rvz-statbox::before,
.rvz-note::before,
.rvz-figure::before,
.rvz-stat::before,
.rvz-offer::before,
.rvz-kupon::before,
.rvz-payrail::before,
.rvz-mockform::before,
.rvz-codebox::before,
.rvz-promo::before,
.rvz-toc::before,
.rvz-pull::before,
.rvz-faq::before,
.rvz-shot::before,
.rvz-flow::before,
.rvz-check::before,
.rvz-rail__plate::before,
.rvz-app__art::before,
.rvz-access::before,
.rvz-table-wrap::before {
	content: "";
	position: absolute;
	top: 0;
	left: 10px;
	right: 10px;
	height: 14px;
	pointer-events: none;
	background-repeat: repeat-x;
	background-position: 0 6px;
	background-size: 13px 14px;
	background-image:
		radial-gradient(circle at 4px 4px, rgba(211, 196, 212, .60) 0 1.7px, transparent 2.1px),
		radial-gradient(circle at 4px 4px, rgba(219, 88, 228, .22) 0 3.4px, transparent 4.6px);
}

/* The risk plates take the same rail in the warn colour and a warn rim, so a caution reads
   as the same family of object without becoming decorative. */
.rvz-warn,
.rvz-cutoff,
.rvz-alert {
	position: relative;
	outline: 0;
	outline-offset: 0;
	box-shadow: none;
	border-left: 0;
	clip-path: none;
	border-radius: 8px;
	border-top: 1px solid rgba(242, 175, 136, .60);
	padding: max(16px, 1rem);
	padding-top: max(24px, 1.45rem);
}
.rvz-warn::before,
.rvz-cutoff::before,
.rvz-alert::before {
	content: "";
	position: absolute;
	top: 0;
	left: 10px;
	right: 10px;
	height: 14px;
	pointer-events: none;
	background-repeat: repeat-x;
	background-position: 0 6px;
	background-size: 13px 14px;
	background-image:
		radial-gradient(circle at 4px 4px, rgba(242, 175, 136, .62) 0 1.7px, transparent 2.1px);
}

/* The step list is a THREAD, not a plate: a numbered sequence lamped like a board would
   lose its sequence. It keeps a single rule down its side — dotted, at the bulb pitch, so
   the two devices read as the same hand. */
.rvz-steps {
	border-left: 2px dotted rgba(211, 196, 212, .50);
	box-shadow: none;
	outline: 0;
	border-radius: 0;
	padding-bottom: 4px;
}
.rvz-steps::before { content: none; }

/* Somebody else's signatures, switched off explicitly rather than overpainted. */
.rvz-ticket::before { display: none; }
.rvz-ord {
	outline: 0;
	box-shadow: none;
	border-left: 0;
	border-radius: 6px;
}
.rvz-ord::before { content: none; }
/* Two donor ornaments that no page on this site uses; neutralised so that an inherited
   pattern accidentally re-inserting one cannot paint another site's motif on a Royale
   Vegas page. `.rvz-reels` is royalspin.az's reel band; `.rvz-rosette` is
   kralica-casino.com's quatrefoil. */
.rvz-reels,
.rvz-reel,
.rvz-rosette { display: none; }

/* ---- 3. THE DIAMOND before every eyebrow --------------------------------
   One lamp-diamond at text scale: a square rotated 45°, the same figure the mark is built
   from and the same figure Rowdies already draws over every i and İ. Drawn as a rotated
   background-COLOUR box on a pseudo-element — no fourth webfont in this slot, no request,
   nothing that can 404 or arrive late, and unlike a gradient pip it survives
   forced-colours mode.

   `clip-path: none`, `background-image: none` and `content: ""` are all stated because the
   inherited layers variously clip this same pseudo-element into a three-point crown, paint
   it with a three-stop gradient, open it into a petal radius, and put a «·» character in
   it. Any of those surviving is a previous site's mark living inside this one. */
.rvz-eyebrow::before {
	content: "";
	display: inline-block;
	width: 0.44em;
	height: 0.44em;
	margin-inline-end: 0.56em;
	vertical-align: 0.04em;
	clip-path: none;
	background-image: none;
	background-color: var(--wp--preset--color--cyan);
	border-radius: 1px;
	transform: rotate(45deg);
}
.rvz-eyebrow::after { content: none; }
/* An inherited layer carries `h1 + .rvz-eyebrow::before` — specificity (0,1,2) — which BEATS
   the rule above (0,1,1) on every page whose eyebrow directly follows the h1, and repaints
   the marker as a chrome linear-gradient. Three of the eight pages shipped that way and the
   other five did not, because an intervening `.rvz-lead` breaks the adjacency: the same
   component rendering as two different marks depending on its neighbour. Matched here at
   equal specificity rather than raised to `!important`, so a later legitimate override is
   still possible. Found by probe_rvz.js, which reads the COMPUTED value — the source alone
   says nothing about which of two rules won. */
h1 + .rvz-eyebrow::before {
	background-image: none;
	background-color: var(--wp--preset--color--cyan);
	border-radius: 1px;
	transform: rotate(45deg);
	width: 0.44em;
	height: 0.44em;
	clip-path: none;
}

/* ---- 4. The lockup: «ROYALE VEGAS» in the signage face -------------------
   The sheet asks for a wordmark with a crown over a letter. Read as a lockup rather than
   as an ornament: the brand string stays exactly two selectable, translatable, quotable
   words — «Royale Vegas» — because that string is the entire KPI of this row (own the
   exact-match sibling query with zero competitors) and an answer engine has to be able to
   lift it as text.

   THIS is where Bungee is allowed to live, and only here. Section 1 explains why it cannot
   set headings: it renders lowercase i as a dotless I. «ROYALE VEGAS» contains neither i
   nor ı, so the defect has no surface to appear on — and the string is fixed brand copy,
   not author-entered text, so it cannot drift into one. The scoping is enforced by a gate
   in shoot_rvz.js, not by convention.

   The «neon» lives in the GLOW around the lockup and in the bulb rail under it, not in the
   letterforms.

   Sized in em on the SAME rule that sets font-size: an em width on a flex child resolves
   against the child's own font-size, while the lockup's inherited `gap` resolves against
   the CONTAINER — the bug that once printed «RoyaleCasino» with no gap. The spacing
   therefore stays a margin on the child. */
.rvz-wordmark__royale,
.rvz-brand__word,
.rvz-wordmark__vip,
.rvz-brand__vip {
	font-family: "Bungee", Impact, "Haettenschweiler", sans-serif;
	font-weight: 400;
	letter-spacing: 0.005em;
	text-transform: none;
	color: inherit;
	border: 0;
	padding: 0;
	margin: 0;
	background: transparent;
	font-size: inherit;
	line-height: 1.18;
}
.rvz-wordmark__stub,
.rvz-brand__stub {
	font-size: clamp(18px, 2.6vw, 30px);
	display: inline-block;
	width: 0.38em;
	height: 0.38em;
	padding: 0;
	border: 0;
	border-radius: 1px;
	box-shadow: none;
	clip-path: none;
	transform: rotate(45deg);
	margin-inline-start: 0.42em;
	align-self: center;
	background-color: var(--wp--preset--color--cyan);
	background-image: none;
}
.rvz-brand__stub { font-size: 13px; margin-inline-start: 0.44em; }
.rvz-wordmark:has(~ h1) .rvz-wordmark__stub,
.rvz-hero .rvz-wordmark .rvz-wordmark__stub { font-size: clamp(14px, 1.7vw, 21px); }

/* The neon halo. `text-shadow` and not a filter: a filter would rasterise the text and
   soften the glyph edges at display size. Two stops, both in the DECORATIVE jewel-glow, at
   opacities low enough that the heading colour still carries the contrast — the halo is
   never load-bearing for legibility (measured on the field without it: 17.8:1). */
.rvz-hero .rvz-wordmark,
.rvz-wordmark--neon {
	text-shadow:
		0 0 16px rgba(219, 88, 228, .34),
		0 0 42px rgba(92, 200, 224, .18);
}

/* ---- 5. `.rvz-marquee` — the sign board at section scale -----------------
   The one component that is this domain and no other: a lamped marquee board — a deep
   bezel, a double bulb rail top and bottom, a neon bloom behind it, and a row of figure
   cells across the middle the way a casino board carries its numbers.

   Both pseudo-elements are on this component's own class. `overflow: hidden` keeps the
   bloom inside the bezel; `pointer-events: none` keeps both decorations out of the hit
   area. */
.rvz-marquee {
	position: relative;
	overflow: hidden;
	background-color: var(--wp--preset--color--base-deep);
	border: 1px solid rgba(97, 103, 158, .85);
	border-radius: 12px;
	padding: clamp(22px, 3vw, 30px) clamp(16px, 2.6vw, 24px);
}
/* The bloom, behind everything. */
.rvz-marquee::before {
	content: "";
	position: absolute;
	top: -30px;
	right: -26px;
	width: 150px;
	height: 150px;
	pointer-events: none;
	background-image: radial-gradient(circle at 50% 50%, rgba(219, 88, 228, .30), transparent 68%);
}
/* The double rail: lamps along the top edge AND the bottom edge, which is what separates a
   marquee board from a plate carrying the plain signature. Two background layers on one
   pseudo-element, positioned from opposite edges. */
.rvz-marquee::after {
	content: "";
	position: absolute;
	inset: 0;
	pointer-events: none;
	background-repeat: repeat-x, repeat-x;
	background-position: 0 7px, 0 calc(100% - 7px);
	background-size: 15px 15px, 15px 15px;
	background-image:
		radial-gradient(circle at 5px 5px, rgba(157, 225, 240, .70) 0 1.9px, transparent 2.4px),
		radial-gradient(circle at 5px 5px, rgba(157, 225, 240, .70) 0 1.9px, transparent 2.4px);
}
.rvz-marquee__strip {
	position: relative;
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(92px, 1fr));
	gap: 10px;
	z-index: 1;
}
.rvz-marquee__cell {
	background-color: rgba(24, 27, 57, .84);
	border: 1px solid rgba(97, 103, 158, .5);
	border-radius: 8px;
	padding: 10px 8px;
	text-align: center;
}
.rvz-marquee__v {
	display: block;
	font-family: var(--wp--preset--font-family--mono);
	font-size: clamp(19px, 3.4vw, 26px);
	line-height: 1.15;
	color: var(--wp--preset--color--figure);
	font-variant-numeric: lining-nums tabular-nums;
}
.rvz-marquee__k {
	display: block;
	margin-top: 4px;
	font-size: 11.5px;
	line-height: 1.4;
	letter-spacing: 0.05em;
	color: var(--wp--preset--color--muted);
}
.rvz-marquee__note {
	position: relative;
	z-index: 1;
	margin: 12px 0 0;
	font-size: 12.5px;
	line-height: 1.6;
	color: var(--wp--preset--color--dim);
}

/* ---- 5a. `.rvz-offer__headline` — two inherited defects the fork recoloured
   but never re-examined. Found by reading the component before using it, which is the
   procedure the kralica-casino.com chip incident produced.

   1. `line-height: 1.04`. This component is `text-transform: uppercase` and it carries
      Azerbaijani, so it stacks the dot of İ and the cedilla of ş in adjacent line boxes.
      Section 1 of this layer sets a floor of ~1.14 for exactly that reason and then the
      floor was not applied to the one component most likely to wrap — a 42px headline.
   2. `color: var(--wp--preset--color--jewel)` on `.rvz-num`. Jewel is this palette's ONE
      saturated FILL and measures 3.2:1 as text on the field. The donor's accent was a light
      rose that was safe as text; the fork swapped the VALUE and inherited the DOCTRINE, so
      «550 AZN» shipped sub-AA. At the clamp's low end the figure computes to ~23px, i.e.
      just under the 24px large-text threshold, so it does not even get the 3:1 allowance.
      Moved to chrome-soft: 14.6:1 on the field, and still visibly the figure.

   The third rule is positional: `.rvz-marquee` gives `__strip` and `__note` a stacking
   context but has no slot for a headline, so one placed inside it sits under the lamp
   overlay. */
.rvz-offer__headline {
	line-height: 1.16;
	letter-spacing: 0.02em;
}
.rvz-offer__headline .rvz-num {
	color: var(--wp--preset--color--chrome-soft);
}
.rvz-marquee .rvz-offer__headline {
	position: relative;
	z-index: 1;
	margin-bottom: 14px;
}

/* ---- 5b. `.rvz-game__cap` — the caption slot the card never had ----------
   Restated from the truncated layer, because the class it protects against is still live:
   `.rvz-game__mono` is this lineage's decorative ART LETTERMARK inside the media tile
   (`font-size: clamp(30px, 8vw, 44px)`), and two builds in a row shipped a game-card
   CAPTION on it — 18 cards setting «studiyanın açıqladığı nəzəri RTP» at 44px, wrapping
   five lines, three times the size of the game name. Valid markup, AA contrast, no
   overflow, no console error: four gates clean and the catalogue page unreadable. A
   caption is ~12px, on the body face, in `muted`, and it may wrap. */
.rvz-game__cap {
	display: inline;
	font-family: var(--wp--preset--font-family--body);
	font-size: 12px;
	font-weight: 400;
	line-height: 1.45;
	letter-spacing: 0;
	color: var(--wp--preset--color--muted);
	white-space: normal;
	overflow-wrap: anywhere;
}
.rvz-game__meta {
	font-size: 12px;
	line-height: 1.45;
	display: flex;
	flex-wrap: wrap;
	align-items: baseline;
	column-gap: 8px;
	row-gap: 2px;
}
.rvz-game__rtp { font-size: 15px; }

/* ---- 6. Jewel is a FILL; chrome and cyan are the accents AS TEXT ----------
   The palette's one saturated colour is the neon fuchsia #A529AE at hue 296 — a window
   with zero occupancy anywhere in this network. It is a FILL ONLY: as text on the field it
   measures 3.2:1, so nothing anywhere sets `color: jewel`. Accent-as-text is the violet
   chrome #D3C4D4 (11.4:1 on the field, 10.1:1 on a panel, 8.6:1 on a raised panel) and the
   marquee cyan #5CC8E0 (9.8 / 8.6 / 7.4).

   And the other direction, which is the direction that ships bugs (royale-win.net): jewel
   is a MID-DARK fill that must carry a LIGHT label — heading on jewel is 5.58:1, ink on
   jewel would be 3.3:1. So every label on a jewel fill is `heading`, and `ink` (#07091C)
   is spent only on the chrome / cyan / figure fills, where a dark label is the correct
   one. */
.rvz-sticky__link,
.rvz-agegate__yes,
.rvz-cookie__ok,
.wp-block-button:not(.rvz-btn-outline) > .wp-block-button__link {
	color: var(--wp--preset--color--heading);
}
/* NO ink rule for chips and badges. An earlier draft of the layer this one replaces said
   «chips and badges are accent fills, so they take the dark ink» and set `color: ink` on
   `.rvz-chip`, `.rvz-badge`, `.rvz-demo__badge` and `.rvz-tag`. The premise was false for
   all four — every one of them has a DARK fill (`rgba(255,255,255,.03)` and similar) or
   already carries a deliberate light label — so ink on any of them is near-black text on
   near-black: `.rvz-chip` measured ≈1.05:1. A doctrine sentence is not a measurement.
   These components choose their text colour against their own real background, at the
   point of use, and this layer leaves them alone. */

/* ---- 6a. THE DIRECTION INVERSION, swept — five inherited rules where the accent
   was a LIGHT colour and this palette's is DARK.

   This is the royale-win.net lesson in its most literal form. Every rule below was
   *correct* in a donor whose accent read as light text on a dark field; fork_rvz.py swapped
   the VALUE and inherited the DIRECTION, so `jewel-lit` (#8A1C92) — a mid-dark fuchsia that
   exists to be a HOVER FILL — shipped as body text at 2.08–2.41:1 across 30 elements on
   five pages. `contrast_rvz.js` at 1440 AND 360 is what found them; no markup, schema or
   validation gate can see a colour.

   The rule this build follows, stated once: jewel and jewel-lit are FILLS. A figure takes
   `figure`, a label takes `muted`/`chrome`, and a label ON a jewel fill takes `heading`. */
.rvz-18__badge {
	/* jewel-lit on the deep violet 18+ plate measured 2.08:1 at 15px/700. */
	color: var(--wp--preset--color--chrome-soft);
}
.rvz-rtpbar__val {
	/* A mono FIGURE, so it takes the figure token (14.7:1) — not the fill. */
	color: var(--wp--preset--color--figure);
}
.rvz-shot__label {
	/* A 12.5px UI label inside the screenshot illustration: 2.41:1 as jewel-lit. */
	color: var(--wp--preset--color--muted);
}
.rvz-cutoff__clock {
	/* ink ON the jewel fill is 3.35:1 — fine for a 1.4.11 non-text ring, NOT for a 12px
	   figure. The jewel fill carries a LIGHT label everywhere else on this build; this one
	   was the exception, and the exception was the bug. */
	color: var(--wp--preset--color--heading);
}

/* ---- 6b. THE JEWEL IS THE CTA — the palette's whole point ----------------
   The inherited rule is `.rvz-btn... { background: var(--wp--preset--gradient--chrome)
   !important }`, i.e. the fork's colour map recoloured a gradient this site does not want
   on its buttons at all: chrome is ORNAMENT, the jewel is the ACTION. Contrast and
   validation both stay clean while the site's single most important colour decision is
   simply not shipped, so this has to be matched at `!important` — a later non-important
   rule loses however specific it is — and caught by a screenshot, not by a gate.

   `background-image` and `background-color` are LONGHANDS, never another `background`
   shorthand: the longhand wins the image slot outright, and stating the colour separately
   means a browser (or a static export) that drops the gradient still paints a jewel button
   rather than a transparent one.

   NOT `--wp--preset--gradient--jewel`: that token runs into near-black, where no single
   label colour clears AA at both ends. These three stops are measured against `heading`
   #FBF6FB — 5.58:1, 6.4:1, 7.4:1 — so the label clears AA across the whole ramp. Hover
   DARKENS (the only direction that can keep a light label): 7.4:1 → 10.7:1.

   Radius is a plain 10px and deliberately NOT an asymmetric pair: the asymmetric pair is
   kralica-casino.com's signature, and at 360px a large asymmetric radius turns a
   full-width button into a lens that stops reading as a control. This site's signature is
   the bulb rail, so the button stays a board. */
.wp-block-button:not(.rvz-btn-outline) > .wp-block-button__link,
.rvz-sticky__link {
	background-image: linear-gradient(168deg, #A529AE 0%, #97239F 55%, #8A1C92 100%) !important;
	background-color: #A529AE !important;
	color: var(--wp--preset--color--heading) !important;
	border: none;
	box-shadow: none;
	border-radius: 10px;
}
.wp-block-button:not(.rvz-btn-outline) > .wp-block-button__link:hover,
.rvz-sticky__link:hover {
	background-image: linear-gradient(168deg, #8A1C92 0%, #58105D 55%, #631469 100%) !important;
	background-color: #8A1C92 !important;
}

/* The focus ring is CHROME-SOFT with a dark halo: it clears 1.4.11 on the jewel button
   (4.6:1) and reads at 14.6:1 on the field, and the halo separates the ring from both the
   button and any light plate the button sits on. Measured composited, not assumed. */
a:focus-visible,
button:focus-visible,
summary:focus-visible,
[tabindex]:focus-visible,
.wp-block-button__link:focus-visible,
.rvz-quicklink:focus-visible,
.rvz-sticky__link:focus-visible,
.rvz-skip:focus-visible {
	outline: 3px solid var(--wp--preset--color--chrome-soft);
	outline-offset: 3px;
	box-shadow: 0 0 0 6px rgba(6, 7, 26, .78);
	border-radius: 8px;
}

/* ---- 6c. The mobile nav panel must be anchored to the HEADER, not the burger ----
   Inherited fix, kept because the cause is structural and still present. Found at 360px on
   all pages of the donor: `.rvz-nav__panel` reported a box from x=-9 to x=237, i.e. nine
   pixels of a 246px-wide dropdown hanging off the LEFT edge of the viewport.

   The cause is the anchor, not the width. The panel is `position: absolute; right: 0`
   inside `.rvz-nav__mobile`, a narrow flex child sitting in the MIDDLE of the header row,
   so `right: 0` aligns the dropdown with the burger's right edge and the fixed min-width
   pushes its left edge past zero. Below the burger breakpoint the panel is anchored to
   `.rvz-header__inner` instead. */
@media (max-width: 860px) {
	.rvz-header__inner { position: relative; }
	.rvz-nav__mobile { position: static; }
	.rvz-nav__panel {
		right: 0;
		left: auto;
		top: calc(100% + 8px);
		min-width: 0;
		width: min(280px, calc(100vw - 32px));
	}
}

/* ---- 7. Forced colours --------------------------------------------------
   A bulb rail is a background-IMAGE, and forced-colours mode drops background images — so
   unlike the radius signature this one does NOT survive on its own. That is why every
   plate in section 2 also carries a real `border-top`: the rim is forced to the system
   border colour and the plate keeps a top edge, which is the same axis the rail draws on.
   The lamps themselves are dropped rather than pinned, because a forced-colour dot rhythm
   at 13px pitch reads as noise.

   The two diamonds are background-COLOUR (not image), so they survive — but their colour
   is forced, so they are pinned to CanvasText to stay visible. The neon halo and the
   marquee bloom are dropped, being pure decoration. */
@media (forced-colors: active) {
	.rvz-card::before, .rvz-card-raised::before, .rvz-panel::before, .rvz-statbox::before,
	.rvz-note::before, .rvz-figure::before, .rvz-stat::before, .rvz-offer::before,
	.rvz-kupon::before, .rvz-payrail::before, .rvz-mockform::before, .rvz-codebox::before,
	.rvz-promo::before, .rvz-toc::before, .rvz-pull::before, .rvz-faq::before,
	.rvz-shot::before, .rvz-flow::before, .rvz-check::before, .rvz-rail__plate::before,
	.rvz-app__art::before, .rvz-access::before, .rvz-table-wrap::before,
	.rvz-warn::before, .rvz-cutoff::before, .rvz-alert::before { display: none; }
	.rvz-eyebrow::before,
	.rvz-wordmark__stub,
	.rvz-brand__stub {
		background-color: CanvasText;
		forced-color-adjust: none;
	}
	.rvz-hero .rvz-wordmark,
	.rvz-wordmark--neon { text-shadow: none; }
	.rvz-marquee::before { display: none; }
	.rvz-marquee::after { display: none; }
	.rvz-ticket::before { display: none; }
}

/* ---- 8. Reduced motion ---------------------------------------------------
   Nothing in this layer animates, but the inherited layers do (the jackpot counter's pulse
   and the skeleton shimmer), and a marquee identity invites the next author to blink the
   lamps. Stated here so that the rule exists before the temptation does. */
@media (prefers-reduced-motion: reduce) {
	.rvz-marquee::after,
	.rvz-card::before,
	.rvz-panel::before { animation: none !important; }
}
/* ==== END RVZ IDENTITY LAYER ==== */
