/*
 * RosterSlots v4: boxed.
 *
 * Loaded last. Square corners throughout, visible rules, and grids drawn as
 * one ruled box with shared borders instead of floating cards with gaps. A
 * section heading is the top cell of the box that holds its content.
 */

:root {
	--r-sm: 0;
	--r-md: 0;
	--r-lg: 0;
	--r-pill: 0;

	--border-subtle: #24272b;
	--line: #2e3237;
	--line-strong: #464b52;
}

/* Square everywhere. A handful of literal radii in the older sheets do not go
   through the tokens, so this is the one place that catches them. Circles
   that carry meaning (the play button, drawn dots) are restored below. */
*,
*::before,
*::after {
	border-radius: 0 !important;
}

.rs-demo__play,
.rs-demo__play *,
.rs-byline > *::before {
	border-radius: 50% !important;
}

/* ---------------------------------------------------------------
   Masthead: the nav is a row of ruled cells
   --------------------------------------------------------------- */

.rs-masthead {
	border-bottom: 1px solid var(--line);
}

@media (min-width: 861px) {
	.rs-masthead__inner {
		align-items: stretch;
		min-height: 64px;
	}

	.rs-masthead__brand {
		display: flex;
		align-items: center;
	}

	.rs-masthead__end,
	.rs-masthead__nav,
	.rs-masthead__nav .rs-nav {
		display: flex;
		align-items: stretch;
		gap: 0;
	}

	.rs-masthead__nav .rs-nav {
		border-left: 1px solid var(--line);
	}

	.rs-masthead__nav .rs-nav > li {
		display: flex;
		border-right: 1px solid var(--line);
	}

	.rs-masthead__nav .rs-nav > li > a {
		display: flex;
		align-items: center;
		padding: 0 22px;
		transition: background var(--dur) var(--ease), color var(--dur) var(--ease);
	}

	.rs-masthead__nav .rs-nav > li > a:hover {
		background: var(--bg-surface);
	}

	.rs-masthead__nav .rs-nav > .current-menu-item > a,
	.rs-masthead__nav .rs-nav > .current-menu-ancestor > a,
	.rs-masthead__nav .rs-nav > .current-page-ancestor > a {
		color: var(--text-primary);
		box-shadow: inset 0 -2px 0 var(--accent);
	}

	.rs-masthead__age {
		align-self: center;
		margin-left: 20px;
	}

	.rs-nav .sub-menu {
		top: 100%;
		left: -1px;
		padding: 0;
		gap: 0;
		border: 1px solid var(--line);
		box-shadow: 0 12px 28px -12px rgba(0, 0, 0, 0.9);
	}

	.rs-nav .sub-menu li + li {
		border-top: 1px solid var(--line);
	}

	.rs-nav .sub-menu a {
		padding: 11px 18px;
	}
}

/* ---------------------------------------------------------------
   Buttons, tags, chips
   --------------------------------------------------------------- */

.rs-btn {
	min-height: 46px;
	padding-inline: 22px;
	letter-spacing: 0.005em;
}

.rs-btn--primary {
	background-image: none;
	background-color: var(--accent-fill);
}

.rs-btn--primary:hover {
	background-image: none;
	background-color: var(--accent-active);
}

.rs-btn--secondary {
	border-color: var(--line-strong);
}

.rs-masthead__age,
.rs-adtag,
.rs-verified {
	border-color: var(--line-strong);
}

/* ---------------------------------------------------------------
   Page header
   --------------------------------------------------------------- */

.rs-pagehead {
	display: grid;
	grid-template-columns: minmax(0, 5fr) minmax(0, 7fr);
	margin-block: var(--s5) var(--s5);
	border: 1px solid var(--line);
	background: var(--bg-base);
}

.rs-pagehead--solo {
	grid-template-columns: minmax(0, 1fr);
}

.rs-pagehead__main {
	display: flex;
	flex-direction: column;
	justify-content: flex-start;
	gap: var(--s2);
	padding: var(--s5) var(--s4);
	border-right: 1px solid var(--line);
}

.rs-pagehead--solo .rs-pagehead__main {
	border-right: 0;
}

.rs-pagehead__kicker {
	margin: 0;
	font: 400 10.5px/1 var(--font-mono);
	letter-spacing: 0.16em;
	text-transform: uppercase;
	color: var(--accent);
}

.rs-pagehead__title {
	margin: 0;
	font: 700 clamp(36px, 4.6vw, 64px)/0.95 var(--font-head);
	letter-spacing: -0.035em;
	text-transform: uppercase;
	color: var(--text-primary);
	overflow-wrap: break-word;
}

.rs-pagehead__dek {
	margin: 0;
	max-width: 52ch;
	font-size: 17px;
	line-height: 1.6;
	color: var(--text-secondary);
}

.rs-pagehead__intro {
	padding: var(--s5) var(--s4);
	font-size: 16.5px;
	line-height: 1.7;
	color: var(--text-secondary);
}

.rs-pagehead__intro > * {
	max-width: 66ch;
	margin: 0;
}

.rs-pagehead__intro > * + * {
	margin-top: 1em;
}

.rs-pagehead__intro > p:first-child {
	font-size: 18.5px;
	line-height: 1.6;
	color: var(--text-primary);
}

.rs-pagehead__intro a {
	color: var(--accent);
}

.rs-pagehead__facts {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	margin: auto calc(-1 * var(--s4)) calc(-1 * var(--s5));
	padding-top: 0;
	border-top: 1px solid var(--line);
}

.rs-pagehead__main {
	min-height: 100%;
}

.rs-pagehead__main > .rs-pagehead__facts {
	position: relative;
	top: 0;
}

.rs-pagehead__dek {
	margin-bottom: var(--s3);
}

.rs-pagehead__facts > div {
	display: flex;
	flex-direction: column-reverse;
	justify-content: flex-end;
	gap: 8px;
	padding: 18px var(--s4);
	border-right: 1px solid var(--line);
	border-bottom: 1px solid var(--line);
}

.rs-pagehead__facts > div:nth-child(2n),
.rs-pagehead__facts > div:last-child {
	border-right: 0;
}

/* The bottom row sits on the header's own frame. */
.rs-pagehead__facts > div:nth-last-child(1),
.rs-pagehead__facts > div:nth-last-child(2):nth-child(odd) {
	border-bottom: 0;
}

/* An odd fact out spans the row rather than leaving a hole. */
.rs-pagehead__facts > div:last-child:nth-child(odd) {
	grid-column: 1 / -1;
}

.rs-pagehead__facts dd {
	margin: 0;
	font: 700 28px/1 var(--font-head);
	letter-spacing: -0.03em;
	color: var(--text-primary);
}

.rs-pagehead__facts dt {
	font: 400 10px/1.3 var(--font-mono);
	letter-spacing: 0.14em;
	text-transform: uppercase;
	color: var(--text-muted);
}

/* A fact with no label is a phrase ("5 themes"), not a number. */
.rs-pagehead__facts dt:empty {
	display: none;
}

.rs-pagehead__facts dt:empty + dd {
	font: 400 11.5px/1.4 var(--font-mono);
	letter-spacing: 0.12em;
	text-transform: uppercase;
	color: var(--text-secondary);
}

@media (max-width: 900px) {
	.rs-pagehead {
		grid-template-columns: minmax(0, 1fr);
		margin-block: var(--s4);
	}

	.rs-pagehead__main {
		border-right: 0;
		border-bottom: 1px solid var(--line);
		padding: var(--s4) var(--s3);
	}

	.rs-pagehead--solo .rs-pagehead__main {
		border-bottom: 0;
	}

	.rs-pagehead__intro {
		padding: var(--s3);
		font-size: 16px;
	}

	.rs-pagehead__intro > p:first-child {
		font-size: 17px;
	}

	.rs-pagehead__facts {
		margin: var(--s3) calc(-1 * var(--s3)) calc(-1 * var(--s4));
	}

	.rs-pagehead__facts > div {
		padding: 14px var(--s3);
	}

	.rs-pagehead__facts dd {
		font-size: 22px;
	}
}

/* Spin-size row on the free spins hub, now its own ruled strip. */
.rs-hubsizes {
	margin: calc(-1 * var(--s5) - 1px) 0 var(--s5);
	padding: 14px var(--s4);
	border: 1px solid var(--line);
}

.rs-hubsizes .rs-sizes {
	margin: 0;
}

/* Static pages: the body sits under the header box. */
.page .rs-review__body.rs-prose {
	max-width: var(--w-prose);
	margin-bottom: var(--s6);
}

/* ---------------------------------------------------------------
   Section heads: the top cell of the box below them
   --------------------------------------------------------------- */

.rs-section {
	padding-block: var(--s5);
}

.rs-section__head {
	display: grid;
	grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
	align-items: end;
	gap: var(--s1) var(--s5);
	margin: 0;
	padding: 22px var(--s3);
	border: 1px solid var(--line);
	border-bottom: 0;
	background: var(--bg-base);
}

.rs-section__head > :only-child,
.rs-section__head > .rs-kicker {
	grid-column: 1 / -1;
}

.rs-section__title {
	margin: 0;
	max-width: none;
	font-size: clamp(22px, 2.3vw, 30px);
	line-height: 1.05;
}

.rs-section__note,
.rs-section__sub {
	margin: 0;
	max-width: 62ch;
	font-size: 14.5px;
	line-height: 1.6;
	color: var(--text-secondary);
}

@media (max-width: 900px) {
	.rs-section__head {
		grid-template-columns: minmax(0, 1fr);
		padding: 18px var(--s2);
	}
}

/* Partner-offer heads carry a kicker line ("AD · Partner offers") first. */
.rs-offers .rs-section__head .rs-kicker {
	margin: 0 0 4px;
}

/* Whatever follows a head without its own frame gets one, so the head never
   hangs over open space. */
.rs-section__head + .rs-empty,
.rs-section__head + .rs-faq,
.rs-section__head + .rs-tablewrap,
.rs-section__head + .rs-tablebox,
.rs-section__head + .rs-spec,
.rs-section__head + dl,
.rs-section__head + table {
	margin-top: 0;
	border: 1px solid var(--line);
}

.rs-empty {
	border-style: solid;
	border-color: var(--line);
}

.rs-section__disclosure {
	margin-top: 14px;
	max-width: 80ch;
}

/* ---------------------------------------------------------------
   Ruled grids: one box, shared borders, no gaps
   --------------------------------------------------------------- */

.rs-gamegrid,
.rs-studiolist,
.rs-offers__list,
.rs-studios,
.rs-related__grid,
.rs-hublinks,
.rs-themetiles,
.rs-guidegrid,
.rs-grid,
.rs-browse,
.rs-drops,
.rs-mult__outcomes,
.rs-proscons,
.rs-lineup,
.rs-stats {
	gap: 0 !important;
	border-top: 1px solid var(--line);
	border-left: 1px solid var(--line);
}

.rs-gamegrid > li,
.rs-studiolist > li,
.rs-offers__list > li,
.rs-studios > li,
.rs-related__grid > li,
.rs-hublinks > li,
.rs-themetiles > li,
.rs-guidegrid > li,
.rs-grid > li,
.rs-browse > *,
.rs-drops > li,
.rs-mult__outcomes > *,
.rs-proscons > *,
.rs-lineup > li,
.rs-stats > li {
	margin: 0;
	border: 0;
	border-right: 1px solid var(--line);
	border-bottom: 1px solid var(--line);
	box-shadow: none;
}

/* Where the frame used to live on the link inside the cell. */
.rs-studios__link,
.rs-related__card,
.rs-hublink,
.rs-themetile,
.rs-guidecard__link,
.rs-browse__card,
.rs-card {
	height: 100%;
	border: 0 !important;
	box-shadow: none !important;
}

.rs-offer {
	border: 0;
	border-right: 1px solid var(--line);
	border-bottom: 1px solid var(--line);
}

.rs-stats {
	margin-top: 0;
}

/* A box straight after a section head shares its top rule with it. */
.rs-section__head + .rs-gamegrid,
.rs-section__head + .rs-studiolist,
.rs-section__head + .rs-offers__list,
.rs-section__head + .rs-studios,
.rs-section__head + .rs-guidegrid,
.rs-section__head + .rs-grid,
.rs-section__head + .rs-related__grid,
.rs-section__head + .rs-lineup,
.rs-section__head + .rs-proscons,
.rs-section__head + .rs-hublinks {
	margin-top: 0;
}

/* "All providers" style links under a grid sit flush under the box. */
.rs-studios__more {
	margin-top: 0;
	padding: 14px var(--s3);
	border: 1px solid var(--line);
	border-top: 0;
}

.rs-studios__more .rs-btn {
	min-height: 40px;
}

/* ---------------------------------------------------------------
   Homepage hero: copy, routes and stats in one ruled block
   --------------------------------------------------------------- */

.rs-hero--v3 {
	gap: 0;
	margin-top: var(--s5);
	padding: 0;
	border: 1px solid var(--line);
	border-bottom: 0;
	background: var(--bg-base);
}

.rs-hero--v3 .rs-hero__copy {
	padding: var(--s5) var(--s4);
}

.rs-hero--v3 > .rs-routes {
	align-self: stretch;
	display: flex;
	flex-direction: column;
	border: 0;
	border-top: 1px solid var(--line);
	background: transparent;
}

.rs-hero--v3 .rs-routes ol {
	display: flex;
	flex-direction: column;
	flex: 1;
}

.rs-hero--v3 .rs-routes li {
	flex: 1;
	display: flex;
}

.rs-hero--v3 .rs-routes__link {
	flex: 1;
	align-content: center;
	padding: 22px var(--s3);
}

.rs-hero--v3 .rs-routes li + li,
.rs-routes__head {
	border-color: var(--line);
}

@media (min-width: 1024px) {
	.rs-hero--v3 > .rs-routes {
		border-top: 0;
		border-left: 1px solid var(--line);
	}
}

.rs-hero--v3 + .rs-stats {
	margin-bottom: 0;
}

.rs-stats__item {
	padding: 20px var(--s3);
}

/* ---------------------------------------------------------------
   Offer cards
   --------------------------------------------------------------- */

.rs-offer {
	padding: var(--s4);
	background: var(--bg-base);
}

.rs-offer__facts {
	background: var(--line);
	border-color: var(--line);
}

/* ---------------------------------------------------------------
   Typeset game cover, for games without key art
   --------------------------------------------------------------- */

.rs-cover {
	container-type: inline-size;
	position: absolute;
	inset: 0;
	display: flex;
	flex-direction: column;
	justify-content: flex-end;
	gap: 6px;
	padding: 20px 22px;
	background:
		linear-gradient(var(--line) 1px, transparent 1px) 0 0 / 100% 25%,
		linear-gradient(90deg, var(--line) 1px, transparent 1px) 0 0 / 16.666% 100%,
		linear-gradient(160deg, #13233f 0%, var(--bg-base) 70%);
	color: var(--text-primary);
	text-align: left;
	overflow: hidden;
}

.rs-cover::before {
	content: "";
	position: absolute;
	top: 0;
	left: 0;
	width: 34%;
	height: 4px;
	background: var(--accent-fill);
}

.rs-cover__type {
	font: 400 max(9px, 3.2cqw)/1 var(--font-mono);
	letter-spacing: 0.16em;
	text-transform: uppercase;
	color: var(--accent);
}

.rs-cover__name {
	font: 700 max(13px, 8.6cqw)/0.95 var(--font-head);
	letter-spacing: -0.03em;
	text-transform: uppercase;
	overflow-wrap: break-word;
}

.rs-cover__studio {
	font: 400 max(9px, 3cqw)/1 var(--font-mono);
	letter-spacing: 0.12em;
	text-transform: uppercase;
	color: var(--text-muted);
}

/* The art boxes the cover lands in need to be its containing block. */
.rs-gamecard__art,
.rs-related__media,
.rs-lineup__art,
.rs-board__art {
	position: relative;
}

/* In small thumbnails only the name fits. */
.rs-related__media .rs-cover__type,
.rs-related__media .rs-cover__studio,
.rs-board__art .rs-cover__type,
.rs-board__art .rs-cover__studio {
	display: none;
}

.rs-related__media .rs-cover,
.rs-board__art .rs-cover {
	padding: 10px;
}

.rs-related__media .rs-cover__name,
.rs-board__art .rs-cover__name {
	font-size: max(11px, 13cqw);
}

/* ---------------------------------------------------------------
   Game cards
   --------------------------------------------------------------- */

.rs-gamecard {
	background: var(--bg-base);
}

.rs-gamecard__art {
	border-bottom: 1px solid var(--line);
}

/* ---------------------------------------------------------------
   Game review hero: main and stage as two cells
   --------------------------------------------------------------- */

.rs-gamehero {
	margin-top: var(--s5);
	padding: 0;
	gap: 0;
	border: 1px solid var(--line);
	background: var(--bg-base);
}

.rs-gamehero__main,
.rs-gamehero__side {
	padding: var(--s4);
	min-width: 0;
}

@media (min-width: 901px) {
	.rs-gamehero--demo .rs-gamehero__side {
		border-left: 1px solid var(--line);
	}
}

@media (max-width: 900px) {
	.rs-gamehero {
		margin-top: var(--s3);
	}

	.rs-gamehero__main,
	.rs-gamehero__side {
		padding: var(--s3) var(--s2);
	}

	.rs-gamehero--demo .rs-gamehero__side {
		border-bottom: 1px solid var(--line);
	}
}

.rs-verdict {
	border-left-width: 3px;
	background: var(--bg-surface);
}

/* Panels, tables, author box, FAQ, contents: same rule colour. */
.rs-panel,
.rs-scorecard,
.rs-tablewrap,
.rs-tablebox,
.rs-authorbox,
.rs-editorial__toc,
.rs-faq,
.rs-faq details,
.rs-faq__item,
.rs-safer,
.rs-related__card,
.rs-drop,
.rs-mult__outcome {
	border-color: var(--line) !important;
}

.rs-editorial__toc {
	background: var(--bg-base);
}

/* ---------------------------------------------------------------
   Footer: ruled columns
   --------------------------------------------------------------- */

.rs-footer {
	border-top: 1px solid var(--line);
}

.rs-footcols {
	gap: 0;
	margin-top: var(--s5);
	padding: 0;
	border-top: 1px solid var(--line);
	border-left: 1px solid var(--line);
}

.rs-footcols > * {
	padding: var(--s3);
	border-right: 1px solid var(--line);
	border-bottom: 1px solid var(--line);
}

.rs-safer {
	margin-top: var(--s4);
}

/* ---------------------------------------------------------------
   Fixes after the first staging pass
   --------------------------------------------------------------- */

/* Homepage headline: smaller, so the copy cell and routes cell balance. */
.rs-hero--v3 .rs-hero__title {
	max-width: none;
	font-size: clamp(38px, 4.2vw, 60px);
}

.rs-hero--v3 .rs-hero__copy {
	display: flex;
	flex-direction: column;
	justify-content: center;
}

.rs-hero--v3 .rs-routes li {
	flex: 1 1 auto;
}

/* The stat cells kept their old individual borders as well. */
.rs-stats > .rs-stats__item,
.rs-stats > .rs-stats__item + .rs-stats__item {
	border: 0;
	border-right: 1px solid var(--line);
	border-bottom: 1px solid var(--line);
}

@media (max-width: 640px) {
	.rs-hero--v3 .rs-hero__copy {
		padding: var(--s4) var(--s3);
	}

	.rs-hero--v3 .rs-routes__link {
		padding: 18px var(--s2);
	}
}

/* The demo's heading lives inside the game hero, which is already a box. */
.rs-demo .rs-section__head {
	display: block;
	padding: 0 0 var(--s2);
	margin: 0 0 var(--s2);
	border: 0;
	border-bottom: 1px solid var(--line);
	background: none;
}

/* Score strip values wrap rather than clip at any width. */
.rs-scorecard--strip .rs-scorecard__rows dd {
	white-space: normal;
	overflow: visible;
	overflow-wrap: anywhere;
}

/* Sections on review and provider pages open with a bare h2. It becomes the
   head cell of the box under it, same as a section head elsewhere. */
.rs-review > .rs-section,
.rs-provider > .rs-section {
	padding-top: var(--s5) !important;
}

.rs-review > .rs-section > h2:first-child,
.rs-provider > .rs-section > h2:first-child {
	margin: 0;
	padding: 20px var(--s3);
	border: 1px solid var(--line);
	border-bottom: 0;
	background: var(--bg-base);
	font: 700 clamp(20px, 2vw, 26px)/1.05 var(--font-head);
	letter-spacing: -0.02em;
	text-transform: uppercase;
}

.rs-review > .rs-section > h2:first-child + *,
.rs-provider > .rs-section > h2:first-child + * {
	margin-top: 0 !important;
}

.rs-scorecard--strip .rs-scorecard__rows {
	align-items: start;
}

/* Related games: eyebrow and title form the head cell. */
.rs-related {
	margin-block: var(--s5) 0;
	padding: 0;
	border: 0;
}

.rs-related__eyebrow,
.rs-related__title {
	display: block;
	margin: 0;
	padding: 0 var(--s3);
	border: 1px solid var(--line);
	background: var(--bg-base);
}

.rs-related__eyebrow {
	padding-top: 20px;
	border-bottom: 0;
}

.rs-related__title {
	padding-bottom: 20px;
	border-top: 0;
	border-bottom: 0;
	font: 700 clamp(20px, 2vw, 26px)/1.05 var(--font-head);
	letter-spacing: -0.02em;
	text-transform: uppercase;
}

.rs-related__grid {
	margin-top: 0;
}

/* Provider page header as a box. */
.rs-review__head {
	margin-top: var(--s5);
	padding: var(--s4);
	border: 1px solid var(--line);
	background: var(--bg-base);
}

.rs-review__head h1 {
	font: 700 clamp(34px, 4.4vw, 60px)/0.95 var(--font-head);
	letter-spacing: -0.035em;
	text-transform: uppercase;
}

/* Typeset cover: the art box styles every span inside it, so these need the
   extra weight to win. */
span.rs-cover.rs-cover {
	position: absolute;
	box-sizing: border-box;
	inset: 0;
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	justify-content: flex-end;
	width: auto;
	height: auto;
	margin: 0;
	transform: none;
}

span.rs-cover > .rs-cover__type,
span.rs-cover > .rs-cover__studio {
	display: block;
	width: auto;
	height: auto;
	padding: 0;
	background: none;
	border: 0;
}

span.rs-cover > .rs-cover__name {
	display: block;
	width: auto;
	height: auto;
	padding: 0;
	background: none;
	border: 0;
	font: 700 max(13px, 9.5cqw)/0.95 var(--font-head);
	letter-spacing: -0.03em;
	text-transform: uppercase;
	color: var(--text-primary);
}

span.rs-cover > .rs-cover__type {
	font: 400 max(9px, 3.2cqw)/1 var(--font-mono);
	letter-spacing: 0.16em;
	color: var(--accent);
}

span.rs-cover > .rs-cover__studio {
	font: 400 max(9px, 3cqw)/1 var(--font-mono);
	letter-spacing: 0.12em;
	color: var(--text-muted);
}

.rs-related__media span.rs-cover > .rs-cover__name,
.rs-board__art span.rs-cover > .rs-cover__name {
	font-size: max(10px, 12cqw);
}

.rs-related__media span.rs-cover > .rs-cover__type,
.rs-related__media span.rs-cover > .rs-cover__studio,
.rs-board__art span.rs-cover > .rs-cover__type,
.rs-board__art span.rs-cover > .rs-cover__studio {
	display: none;
}

/* Ruled grids inside article bodies lose the prose list indent and spacing. */
.rs-editorial__body :is(.rs-themetiles, .rs-hublinks, .rs-drops, .rs-gamegrid, .rs-studios, .rs-guidegrid),
.rs-prose :is(.rs-themetiles, .rs-hublinks, .rs-drops, .rs-gamegrid, .rs-studios, .rs-guidegrid) {
	padding-left: 0 !important;
	margin-left: 0 !important;
	list-style: none;
}

.rs-editorial__body :is(.rs-themetiles, .rs-hublinks, .rs-drops, .rs-gamegrid, .rs-studios, .rs-guidegrid) > li,
.rs-prose :is(.rs-themetiles, .rs-hublinks, .rs-drops, .rs-gamegrid, .rs-studios, .rs-guidegrid) > li {
	margin: 0 !important;
	padding-left: 0;
	transform: none !important;
}

.rs-editorial__body :is(.rs-themetiles, .rs-hublinks, .rs-drops) > li::before,
.rs-prose :is(.rs-themetiles, .rs-hublinks, .rs-drops) > li::before {
	content: none !important;
}

.rs-themetile {
	transform: none !important;
}

/* One-cell header: the facts run as a single row. */
.rs-pagehead--solo .rs-pagehead__facts {
	grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
}

.rs-pagehead--solo .rs-pagehead__facts > div {
	grid-column: auto !important;
	border-bottom: 0;
	border-right: 1px solid var(--line);
}

.rs-pagehead--solo .rs-pagehead__facts > div:last-child {
	border-right: 0;
}

@media (max-width: 900px) {
	.rs-pagehead--solo .rs-pagehead__facts > div {
		border-right: 0;
		border-bottom: 1px solid var(--line);
	}

	.rs-pagehead--solo .rs-pagehead__facts > div:last-child {
		border-bottom: 0;
	}
}

/* Article bodies stop at a reading measure, so section rules end with the
   text instead of running on into the empty right-hand side. */
.rs-editorial__body {
	max-width: 760px;
}

.rs-footcols {
	margin-top: 0;
}

/* ---------------------------------------------------------------
   Partner promo code card: its own card, beside the welcome offer
   --------------------------------------------------------------- */

.rs-offer__kicker {
	margin: 0;
	font: 400 10.5px/1.2 var(--font-mono);
	letter-spacing: 0.12em;
	text-transform: uppercase;
	color: var(--text-muted);
}

.rs-offer__code {
	display: inline-flex;
	align-items: center;
	align-self: flex-start;
	gap: 14px;
	padding: 8px 8px 8px 16px;
	border: 2px dashed var(--accent-fill);
	background: var(--bg-surface);
	color: var(--text-primary);
	font: inherit;
	cursor: pointer;
}

.rs-offer__code code {
	font: 700 clamp(24px, 2.6vw, 30px)/1 var(--font-mono);
	letter-spacing: 0.04em;
	color: var(--text-primary);
	background: none;
	padding: 0;
	user-select: all;
}

.rs-offer__code span {
	padding: 6px 10px;
	background: var(--accent-fill);
	color: var(--bg-base);
	font: 700 11px/1 var(--font-mono);
	letter-spacing: 0.1em;
	text-transform: uppercase;
}

.rs-offer__code:focus-visible {
	outline: 2px solid var(--accent-fill);
	outline-offset: 3px;
}

/* Code card: the code sits in a highlighted block, like the welcome headline. */
.rs-offer--code .rs-offer__code { align-self: stretch; justify-content: space-between; }
