/* ==========================================================================
   REPORT SYSTEM v3 (Finn, 22 Oct 2026). Full v3 (.rpt) on every research
   article and the Email v3 review copy (Email, SAT and Browser from 6 Nov
   2026); loaded after style.css and charts.css. On top of the report
   baseline in charts.css, v3 adds four things only (Finn, 22 Oct: the ones
   most likely to be accepted):
     contents      a numbered contents list and key findings in place of the
                   four contents cards
     numbers       a number and rule over every section heading, and figures
                   numbered by section (Figure 2.1)
     rail          sticky contents with the current section and progress, in
                   the left margin from 1400px
     running bar   the same contents under the header below 1400px, slim
                   enough to leave room for the subscribe bar at the bottom
   .rpt-nav (rail, running bar and chapter headings only, with the old
   contents cards) carried Email, SAT and Browser from 5 to 6 Nov 2026.
   Key findings show only where they sit beside the contents (992px up).
   ========================================================================== */

.lab-frozen-article:is(.rpt, .rpt-nav) {
	--rpt-rule: var(--grey-10);
	--rpt-quiet: var(--grey-25);
	--rpt-text: var(--black);
	--rpt-header: 73px;
	--rpt-bar: 44px;
}
.lab-frozen-article:is(.rpt, .rpt-nav) .bkg-black {
	--rpt-rule: rgba(255, 255, 255, 0.2);
	--rpt-quiet: rgba(255, 255, 255, 0.55);
	--rpt-text: var(--white);
}
@media (min-width: 768px) {
	.lab-frozen-article:is(.rpt, .rpt-nav) {
		--rpt-header: 81px;
	}
}

/* Anchored chapters land below the header and the running bar. */
html:has(.lab-frozen-article:is(.rpt, .rpt-nav)) {
	scroll-padding-top: calc(73px + 44px + 16px);
}
@media (min-width: 768px) {
	html:has(.lab-frozen-article:is(.rpt, .rpt-nav)) {
		scroll-padding-top: calc(81px + 44px + 16px);
	}
}
@media (min-width: 1400px) {
	html:has(.lab-frozen-article:is(.rpt, .rpt-nav)) {
		scroll-padding-top: calc(81px + 24px);
	}
}

/* ---------- Shared labels ---------- */
.lab-frozen-article:is(.rpt, .rpt-nav) :is(.rpt-label, .rpt-kicker) {
	margin: 0;
	font-family: 'Inter Tight', 'Arial', sans-serif;
	font-size: 14px;
	font-weight: 800;
	line-height: 1.3;
	letter-spacing: 0.06em;
	text-transform: uppercase;
	color: var(--rpt-quiet);
}

/* ---------- Masthead ---------- */
.lab-frozen-article.rpt .rpt-mast {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 60px;
}
.lab-frozen-article.rpt :is(.rpt-contents, .rpt-findings) ol {
	margin: 16px 0 0;
	padding: 0;
	list-style: none;
}
.lab-frozen-article.rpt :is(.rpt-contents, .rpt-findings) li {
	border-top: 1px solid var(--rpt-rule);
}
.lab-frozen-article.rpt :is(.rpt-contents, .rpt-findings) li:last-child {
	border-bottom: 1px solid var(--rpt-rule);
}
.lab-frozen-article.rpt :is(.rpt-contents, .rpt-findings) a {
	display: flex;
	align-items: baseline;
	gap: 16px;
	padding: 14px 0;
	color: var(--black);
	text-decoration: none;
}
.lab-frozen-article.rpt .rpt-contents a {
	font-family: 'Inter Tight', 'Arial', sans-serif;
	font-size: 22px;
	font-weight: 700;
	line-height: 1.3;
	letter-spacing: -0.02em;
}
.lab-frozen-article.rpt :is(.rpt-contents__no, .rpt-findings__ref) {
	flex: 0 0 auto;
	font-family: 'Inter Tight', 'Arial', sans-serif;
	font-size: 14px;
	font-weight: 800;
	letter-spacing: 0.06em;
	font-variant-numeric: tabular-nums;
	color: var(--grey-25);
	transition: color 0.2s ease;
}
.lab-frozen-article.rpt .rpt-contents__no {
	width: 24px;
}
.lab-frozen-article.rpt .rpt-contents .toc-chip {
	align-self: center;
}
.lab-frozen-article.rpt .rpt-findings a {
	justify-content: space-between;
	font-size: 17px;
	font-weight: 600;
	line-height: 1.45;
}
.lab-frozen-article.rpt :is(.rpt-contents, .rpt-findings) a:hover :is(.rpt-contents__no, .rpt-findings__ref) {
	color: var(--black);
}
.lab-frozen-article.rpt :is(.rpt-contents, .rpt-findings) a:focus-visible {
	outline: 2px solid var(--black);
	outline-offset: 4px;
}

/* ---------- Section numbers ---------- */
.lab-frozen-article:is(.rpt, .rpt-nav) .rpt-kicker {
	display: flex;
	align-items: center;
	gap: 16px;
	max-width: 799px;
	margin-bottom: 40px;
}
.lab-frozen-article:is(.rpt, .rpt-nav) .rpt-kicker::after {
	content: "";
	flex: 1 1 auto;
	height: 1px;
	background: var(--rpt-rule);
}
.lab-frozen-article:is(.rpt, .rpt-nav) .rpt-kicker__no {
	font-variant-numeric: tabular-nums;
	color: var(--rpt-text);
}
/* The Foreword is front matter: the numbered label sits over its opening
   sentence, with no section heading. */
.lab-frozen-article:is(.rpt, .rpt-nav) #section-foreword .section-quote {
	margin-top: 0;
}

/* ---------- Security Outcomes as a split index (Finn, 23 Oct: option B
   from /review/lab/outcomes-explore) ----------
   The sticky menu's language inside the module: one white card in the CTA
   family, the four outcomes as a numbered list on a track at the left, the
   open one black with a bar on the track, its statement and points on
   hairlines at the right, and the diamond lattice in the corner in place of
   the blue wash. Same markup and behaviour as the original (core.js). */
.lab-frozen-article.rpt .lab-xgrid {
	position: relative;
	isolation: isolate;
	overflow: hidden;
	display: grid;
	grid-template-columns: 250px minmax(0, 1fr);
	gap: 50px;
	padding: 50px;
	border-radius: 30px;
	background: var(--white);
	box-shadow: inset 0 0 0 1px rgba(20, 20, 20, 0.08), 0 1px 2px rgba(20, 20, 20, 0.04), 0 10px 28px rgba(20, 20, 20, 0.05);
}
.lab-frozen-article.rpt .lab-xgrid::after {
	content: '';
	position: absolute;
	z-index: -1;
	inset: 0;
	background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='28' height='28' viewBox='0 0 28 28'%3E%3Cg fill='none' stroke='%23000' stroke-opacity='0.08'%3E%3Crect x='6.5' y='6.5' width='15' height='15' rx='3' transform='rotate(45 14 14)'/%3E%3Crect x='-7.5' y='-7.5' width='15' height='15' rx='3' transform='rotate(45 0 0)'/%3E%3Crect x='20.5' y='-7.5' width='15' height='15' rx='3' transform='rotate(45 28 0)'/%3E%3Crect x='-7.5' y='20.5' width='15' height='15' rx='3' transform='rotate(45 0 28)'/%3E%3Crect x='20.5' y='20.5' width='15' height='15' rx='3' transform='rotate(45 28 28)'/%3E%3C/g%3E%3C/svg%3E") right top / 28px 28px repeat;
	-webkit-mask-image: radial-gradient(45% 70% at 100% 0%, #000 20%, transparent 100%);
	mask-image: radial-gradient(45% 70% at 100% 0%, #000 20%, transparent 100%);
	pointer-events: none;
}
.lab-frozen-article.rpt .lab-xgrid__tiles {
	position: relative;
	align-self: start;
	grid-template-columns: minmax(0, 1fr);
	gap: 0;
	padding-left: 18px;
}
.lab-frozen-article.rpt .lab-xgrid__tiles::before {
	content: '';
	position: absolute;
	top: 0;
	bottom: 0;
	left: 0;
	width: 1px;
	background: rgba(20, 20, 20, 0.12);
}
.lab-frozen-article.rpt .lab-xgrid__tile,
.lab-frozen-article.rpt .lab-xgrid__tile:hover,
.lab-frozen-article.rpt .lab-xgrid__tile[aria-selected='true'] {
	position: relative;
	gap: 12px;
	min-height: 0;
	padding: 12px 0;
	border-radius: 0;
	background: none;
	box-shadow: none;
	font-size: 17px;
	font-weight: 600;
	line-height: 1.3;
	letter-spacing: 0;
	color: var(--grey-25);
	transition: color 0.2s ease;
}
.lab-frozen-article.rpt .lab-xgrid__tile:hover,
.lab-frozen-article.rpt .lab-xgrid__tile[aria-selected='true'] {
	color: var(--black);
}
.lab-frozen-article.rpt .lab-xgrid__tile[aria-selected='true'] {
	font-weight: 700;
}
.lab-frozen-article.rpt .lab-xgrid__tile[aria-selected='true']::before {
	content: '';
	position: absolute;
	top: 8px;
	bottom: 8px;
	left: -18px;
	width: 2px;
	margin-left: -0.5px;
	background: var(--black);
}
.lab-frozen-article.rpt .lab-xgrid__tile .outcome-number {
	flex: 0 0 auto;
	width: auto;
	height: auto;
	margin: 0;
	padding-top: 2px;
	border-radius: 0;
	background: none;
	font-size: 14px;
	font-weight: 800;
	line-height: inherit;
	letter-spacing: 0.06em;
	font-variant-numeric: tabular-nums;
	text-align: left;
	color: inherit;
}
.lab-frozen-article.rpt .lab-xgrid__area {
	margin: 0;
	padding: 0;
	border-radius: 0;
	background: none;
	box-shadow: none;
}
.lab-frozen-article.rpt .lab-xgrid__panel,
.lab-frozen-article.rpt .lab-xgrid__panel.is-open {
	display: block;
}
.lab-frozen-article.rpt .lab-xgrid__name {
	max-width: 640px;
	margin: 0 0 16px;
	font-size: 22px;
	line-height: 1.3;
	letter-spacing: -0.02em;
}
.lab-frozen-article.rpt .lab-xgrid__panel .vef-outcome-list {
	max-width: 640px;
	border-top: 1px solid rgba(20, 20, 20, 0.12);
}
.lab-frozen-article.rpt .lab-xgrid__panel .vef-outcome-list li,
.lab-frozen-article.rpt .lab-xgrid__panel .vef-outcome-list li:first-child,
.lab-frozen-article.rpt .lab-xgrid__panel .vef-outcome-list li:last-child {
	padding: 12px 0;
	border-top: 0;
	border-bottom: 1px solid rgba(20, 20, 20, 0.12);
}
@media (max-width: 991.98px) {
	.lab-frozen-article.rpt .lab-xgrid {
		grid-template-columns: minmax(0, 1fr);
		gap: 30px;
		padding: 30px;
		border-radius: 20px;
	}
	.lab-frozen-article.rpt .lab-xgrid__name {
		font-size: 20px;
	}
}

/* ---------- Contents rail (1400px and up) ---------- */
.lab-frozen-article:is(.rpt, .rpt-nav) .rpt-rail {
	display: none;
}
@media (min-width: 1400px) {
	.lab-frozen-article:is(.rpt, .rpt-nav) .rpt-rail {
		display: block;
		position: fixed;
		z-index: 20;
		top: calc(var(--rpt-header) + 48px);
		left: 48px;
		width: 184px;
		padding-left: 16px;
		opacity: 0;
		visibility: hidden;
		transition: opacity 0.25s ease, visibility 0.25s;
		--rpt-rule: var(--grey-10);
		--rpt-quiet: var(--grey-25);
		--rpt-text: var(--black);
	}
	.lab-frozen-article:is(.rpt, .rpt-nav) .rpt-rail.is-visible {
		opacity: 1;
		visibility: visible;
	}
	.lab-frozen-article:is(.rpt, .rpt-nav) .rpt-rail.is-dark {
		--rpt-rule: rgba(255, 255, 255, 0.2);
		--rpt-quiet: rgba(255, 255, 255, 0.55);
		--rpt-text: var(--white);
	}
}
.lab-frozen-article:is(.rpt, .rpt-nav) .rpt-rail__label {
	margin: 0 0 12px;
	font-family: 'Inter Tight', 'Arial', sans-serif;
	font-size: 14px;
	font-weight: 800;
	letter-spacing: 0.06em;
	text-transform: uppercase;
	color: var(--rpt-text);
}
.lab-frozen-article:is(.rpt, .rpt-nav) .rpt-rail__list {
	margin: 0;
	padding: 0;
	list-style: none;
}
.lab-frozen-article:is(.rpt, .rpt-nav) .rpt-rail__link {
	display: flex;
	gap: 10px;
	padding: 6px 0;
	font-family: 'Inter Tight', 'Arial', sans-serif;
	font-size: 14px;
	font-weight: 600;
	line-height: 1.3;
	color: var(--rpt-quiet);
	text-decoration: none;
	transition: color 0.2s ease;
}
.lab-frozen-article:is(.rpt, .rpt-nav) .rpt-rail__no {
	font-variant-numeric: tabular-nums;
}
.lab-frozen-article:is(.rpt, .rpt-nav) .rpt-rail__link:hover,
.lab-frozen-article:is(.rpt, .rpt-nav) .rpt-rail__link[aria-current="true"] {
	color: var(--rpt-text);
}
.lab-frozen-article:is(.rpt, .rpt-nav) .rpt-rail__link[aria-current="true"] {
	font-weight: 700;
}
.lab-frozen-article:is(.rpt, .rpt-nav) .rpt-rail__track {
	position: absolute;
	top: 32px;
	bottom: 34px;
	left: 0;
	width: 1px;
	background: var(--rpt-rule);
}
.lab-frozen-article:is(.rpt, .rpt-nav) .rpt-rail__fill {
	position: absolute;
	inset: 0 -0.5px auto;
	height: calc(var(--rpt-progress, 0) * 100%);
	background: var(--rpt-text);
}
.lab-frozen-article:is(.rpt, .rpt-nav) .rpt-rail__top {
	display: inline-block;
	margin-top: 14px;
	font-size: 14px;
	font-weight: 600;
	color: var(--rpt-quiet);
	text-decoration: none;
}
.lab-frozen-article:is(.rpt, .rpt-nav) .rpt-rail__top::before {
	content: "\2191";
	margin-right: 6px;
}
.lab-frozen-article:is(.rpt, .rpt-nav) .rpt-rail__top:hover {
	color: var(--rpt-text);
}

/* ---------- Running bar (below 1400px) ---------- */
.lab-frozen-article:is(.rpt, .rpt-nav) .rpt-bar {
	position: fixed;
	z-index: 29;
	top: var(--rpt-header);
	left: 0;
	right: 0;
	border-bottom: 1px solid var(--grey-10);
	background: rgba(255, 255, 255, 0.92);
	-webkit-backdrop-filter: blur(12px);
	backdrop-filter: blur(12px);
	transform: translateY(-8px);
	opacity: 0;
	visibility: hidden;
	transition: opacity 0.25s ease, transform 0.25s ease, visibility 0.25s;
}
.lab-frozen-article:is(.rpt, .rpt-nav) .rpt-bar.is-visible {
	transform: none;
	opacity: 1;
	visibility: visible;
}
@media (min-width: 1400px) {
	.lab-frozen-article:is(.rpt, .rpt-nav) .rpt-bar {
		display: none;
	}
}
.lab-frozen-article:is(.rpt, .rpt-nav) .rpt-bar__toggle {
	display: flex;
	align-items: center;
	gap: 10px;
	width: 100%;
	height: var(--rpt-bar);
	padding: 0 16px;
	border: 0;
	background: none;
	color: var(--black);
	font-family: 'Inter Tight', 'Arial', sans-serif;
	text-align: left;
	cursor: pointer;
}
@media (min-width: 577px) {
	.lab-frozen-article:is(.rpt, .rpt-nav) .rpt-bar__toggle {
		padding: 0 42px;
	}
}
.lab-frozen-article:is(.rpt, .rpt-nav) .rpt-bar__no {
	font-size: 14px;
	font-weight: 800;
	letter-spacing: 0.06em;
	font-variant-numeric: tabular-nums;
	color: var(--grey-25);
}
.lab-frozen-article:is(.rpt, .rpt-nav) .rpt-bar__name {
	overflow: hidden;
	font-size: 15px;
	font-weight: 700;
	white-space: nowrap;
	text-overflow: ellipsis;
}
.lab-frozen-article:is(.rpt, .rpt-nav) .rpt-bar__chev {
	flex: 0 0 auto;
	width: 12px;
	height: 12px;
	margin-left: auto;
	transition: transform 0.2s ease;
}
.lab-frozen-article:is(.rpt, .rpt-nav) .rpt-bar__toggle[aria-expanded="true"] .rpt-bar__chev {
	transform: rotate(180deg);
}
.lab-frozen-article:is(.rpt, .rpt-nav) .rpt-bar__toggle:focus-visible {
	outline: 2px solid var(--black);
	outline-offset: -4px;
}
.lab-frozen-article:is(.rpt, .rpt-nav) .rpt-bar__progress {
	position: absolute;
	left: 0;
	right: 0;
	bottom: -1px;
	height: 2px;
}
.lab-frozen-article:is(.rpt, .rpt-nav) .rpt-bar__fill {
	display: block;
	height: 100%;
	background: var(--black);
	transform: scaleX(var(--rpt-progress, 0));
	transform-origin: left;
}
.lab-frozen-article:is(.rpt, .rpt-nav) .rpt-sheet {
	max-height: calc(100dvh - var(--rpt-header) - var(--rpt-bar) - 96px);
	overflow-y: auto;
	padding: 4px 16px 20px;
	border-top: 1px solid var(--grey-10);
	background: var(--white);
	box-shadow: 0 16px 30px rgba(0, 0, 0, 0.08);
}
@media (min-width: 577px) {
	.lab-frozen-article:is(.rpt, .rpt-nav) .rpt-sheet {
		padding: 4px 42px 20px;
	}
}
.lab-frozen-article:is(.rpt, .rpt-nav) .rpt-sheet__list {
	margin: 0;
	padding: 0;
	list-style: none;
}
.lab-frozen-article:is(.rpt, .rpt-nav) .rpt-sheet__list li + li {
	border-top: 1px solid var(--grey-10);
}
.lab-frozen-article:is(.rpt, .rpt-nav) .rpt-sheet__link {
	display: flex;
	align-items: baseline;
	gap: 12px;
	padding: 13px 0;
	font-family: 'Inter Tight', 'Arial', sans-serif;
	font-size: 17px;
	font-weight: 600;
	color: var(--grey-50);
	text-decoration: none;
}
.lab-frozen-article:is(.rpt, .rpt-nav) .rpt-sheet__link[aria-current="true"] {
	font-weight: 700;
	color: var(--black);
}
.lab-frozen-article:is(.rpt, .rpt-nav) .rpt-sheet__no {
	width: 22px;
	font-size: 14px;
	font-weight: 800;
	letter-spacing: 0.06em;
	font-variant-numeric: tabular-nums;
	color: var(--grey-25);
}
.lab-frozen-article:is(.rpt, .rpt-nav) .rpt-sheet__top {
	display: inline-block;
	margin-top: 8px;
	font-size: 14px;
	font-weight: 700;
	color: var(--black);
}
.lab-frozen-article:is(.rpt, .rpt-nav) .rpt-sheet__top::before {
	content: "\2191";
	margin-right: 6px;
}

/* ---------- Smaller screens ---------- */
@media (max-width: 991.98px) {
	.lab-frozen-article.rpt .rpt-mast {
		grid-template-columns: 1fr;
		gap: 40px;
		margin-top: 40px;
	}
}
/* Where the masthead stacks, the key findings drop out and the contents lead
   straight into the article (Finn, 4 Nov 2026). */
@media (max-width: 991.98px) {
	.lab-frozen-article.rpt .rpt-findings {
		display: none;
	}
}
@media (max-width: 576px) {
	.lab-frozen-article.rpt .rpt-contents a {
		font-size: 20px;
	}
}
@media (prefers-reduced-motion: reduce) {
	.lab-frozen-article:is(.rpt, .rpt-nav) :is(.rpt-rail, .rpt-bar, .rpt-bar__chev) {
		transition: none;
	}
}
