/*
 * FitnessVolt Weightlifting: shared tokens and components.
 *
 * The bodybuilding plugin's Iron & Bone system, by way of the armwrestling port
 * (armwrestling/public/css/aw-base.css, owner-approved look 2026-10-29): bone page,
 * white cards, Archivo and IBM Plex Mono, the nav bar, the ink hero and page header,
 * section headings over an ink rule, row cards, tiles, tables, chips, stat cards,
 * place chips, breadcrumbs and the footer, renamed to the oly- prefix.
 * Light theme only. Flat fills and neutral 1px borders: no gradients, no coloured
 * edge strips, no card inside a card on phones.
 *
 * Every selector sits under .oly-app. Route-specific styles live in their own files.
 */

/*
 * Brand fonts, the same files bodybuilding serves (public/fonts/, OFL): Archivo
 * for text, IBM Plex Mono for every figure. Self-hosted so the routes do not
 * depend on the bodybuilding plugin being active. Archivo is the variable cut;
 * the font-stretch range is load-bearing, because display headings set 88% and a
 * face without the axis renders them at 100%.
 */
@font-face {
	font-family: 'Archivo';
	font-style: normal;
	font-weight: 400 800;
	font-stretch: 75% 125%;
	font-display: swap;
	src: url('../fonts/archivo-latin.woff2') format('woff2');
	unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
	font-family: 'Archivo';
	font-style: normal;
	font-weight: 400 800;
	font-stretch: 75% 125%;
	font-display: swap;
	src: url('../fonts/archivo-latin-ext.woff2') format('woff2');
	unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
	font-family: 'IBM Plex Mono';
	font-style: normal;
	font-weight: 400;
	font-display: swap;
	src: url('../fonts/plex-mono-400-latin.woff2') format('woff2');
	unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
	font-family: 'IBM Plex Mono';
	font-style: normal;
	font-weight: 400;
	font-display: swap;
	src: url('../fonts/plex-mono-400-latin-ext.woff2') format('woff2');
	unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
	font-family: 'IBM Plex Mono';
	font-style: normal;
	font-weight: 500;
	font-display: swap;
	src: url('../fonts/plex-mono-500-latin.woff2') format('woff2');
	unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
	font-family: 'IBM Plex Mono';
	font-style: normal;
	font-weight: 500;
	font-display: swap;
	src: url('../fonts/plex-mono-500-latin-ext.woff2') format('woff2');
	unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
	font-family: 'IBM Plex Mono';
	font-style: normal;
	font-weight: 600;
	font-display: swap;
	src: url('../fonts/plex-mono-600-latin.woff2') format('woff2');
	unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
	font-family: 'IBM Plex Mono';
	font-style: normal;
	font-weight: 600;
	font-display: swap;
	src: url('../fonts/plex-mono-600-latin-ext.woff2') format('woff2');
	unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

/* ---- Tokens ------------------------------------------------------------- */

.oly-app {
	--oly-ink: #221c18;
	--oly-bone: #faf6ef;
	--oly-paper: #ffffff;
	--oly-on-dark: #fffdf8;
	--oly-on-dark-muted: rgba(250, 246, 239, 0.66);
	--oly-on-dark-line: rgba(250, 246, 239, 0.14);
	--oly-amber: #d98b4a;
	--oly-amber-dark: #8f5a1e;
	--oly-moss: #45723f;
	--oly-tint: #f0e9dc;
	--oly-oxblood: #a8372a;
	--oly-oxblood-hover: #85291f;
	--oly-warm-grey: #5a524a;
	--oly-warm-grey-2: #6b6259;
	--oly-gray-50: #f6f3ed;
	--oly-gray-100: #eee8dd;
	--oly-gray-200: #dfd7cb;
	--oly-gray-400: #8a8076;
	--oly-gray-700: #3d372f;

	--oly-primary: var(--oly-oxblood);
	--oly-primary-hover: var(--oly-oxblood-hover);
	--oly-primary-light: rgba(168, 55, 42, 0.08);
	--oly-bg: var(--oly-bone);
	--oly-surface: var(--oly-paper);
	--oly-border: rgba(34, 28, 24, 0.14);
	--oly-border-card: var(--oly-gray-200);
	--oly-border-soft: rgba(34, 28, 24, 0.09);

	--oly-font-body: 'Archivo', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
	--oly-font-mono: 'IBM Plex Mono', ui-monospace, SFMono-Regular, 'SF Mono', Menlo, monospace;
	--oly-text-primary: var(--oly-ink);
	--oly-text-secondary: var(--oly-warm-grey);
	--oly-text-muted: var(--oly-warm-grey-2);

	--oly-radius-sm: 3px;
	--oly-radius: 4px;
	--oly-radius-lg: 8px;
	--oly-radius-full: 9999px;
	--oly-shadow-md: 0 8px 24px rgba(34, 28, 24, 0.08);
	--oly-shadow-lg: 0 18px 46px rgba(34, 28, 24, 0.12);
	--oly-focus-ring: 2px solid var(--oly-primary);
	--oly-transition: 150ms ease;
	--oly-container: 1240px;

	font-variant-numeric: tabular-nums;
	font-family: var(--oly-font-body);
	color: var(--oly-text-primary);
	line-height: 1.55;
	-webkit-font-smoothing: antialiased;
	-moz-osx-font-smoothing: grayscale;
}

.oly-app *,
.oly-app *::before,
.oly-app *::after {
	box-sizing: border-box;
}

/* The hidden attribute must beat component display rules (the bodybuilding
   lesson: the theme's [hidden] rule is load order, not a contract). */
.oly-app [hidden] {
	display: none !important;
}

/* The theme strips focus outlines with !important; a focus ring must survive. */
.oly-app a:focus-visible,
.oly-app button:focus-visible,
.oly-app input:focus-visible,
.oly-app select:focus-visible,
.oly-app summary:focus-visible,
.oly-app [tabindex]:focus-visible {
	outline: var(--oly-focus-ring) !important;
	outline-offset: 2px !important;
}

/* Skip link (bodybuilding's .bb-skip-link). It prints at wp_body_open, before the theme header and
   outside .oly-app, so it carries literal ink and paper colours rather than the scoped tokens. */
.oly-skip-link {
	position: absolute;
	top: -9999px;
	left: 16px;
	z-index: 100000;
	padding: 8px 16px;
	overflow: hidden;
	clip: rect(0, 0, 0, 0);
	border-radius: 4px;
	background: #221c18;
	color: #fffdf8 !important;
	font-size: 15px;
	font-weight: 600;
	text-decoration: none;
	transition: none;
}

.oly-skip-link:focus {
	top: 16px;
	overflow: visible;
	clip: auto;
	outline: 2px solid #a8372a !important;
	outline-offset: 2px !important;
}

/* Oxblood is too dark to see on ink: the dark bands take a light ring. */
.oly-app .oly-hero,
.oly-app .oly-page-head {
	--oly-focus-ring: 2px solid var(--oly-on-dark);
}

/* The theme puts a 40px line box on buttons and its own face on controls. */
.oly-app button,
.oly-app input,
.oly-app select {
	font-family: inherit;
	line-height: 1.2;
}

/* ---- Page frame (routes only, never inside a post) ----------------------- */

/* Bone page, white raised surfaces: bodybuilding's .bb-app frame. */
.oly-app:not(.oly-embed) {
	max-width: calc(var(--oly-container) + 40px);
	margin-inline: auto;
	padding-inline: 20px;
	background: var(--oly-bg);
	font-size: 15px;
}

.oly-app .oly-main {
	min-height: 50vh;
	padding-block: 8px 24px;
}

/* <main> wears single-post-outer for Mediavine (oly_header()); Foxiz draws a divider under it. */
.oly-app > .oly-main.single-post-outer {
	border-bottom: 0;
}

@media (max-width: 768px) {
	.oly-app:not(.oly-embed) {
		padding-inline: 16px;
	}
}

/* ---- Typography --------------------------------------------------------- */

.oly-app h1,
.oly-app h2,
.oly-app h3 {
	font-family: var(--oly-font-body);
	color: var(--oly-text-primary);
	text-transform: none;
}

.oly-app a {
	color: var(--oly-primary);
	text-decoration: none;
}

.oly-app a:hover {
	color: var(--oly-primary-hover);
	text-decoration: underline;
}

/* A plain link inside running text is underlined: the red alone sits 2.6:1 from the body text. */
.oly-app p a:not([class]),
.oly-app .oly-plain-list a:not([class]) {
	text-decoration: underline;
	text-decoration-thickness: 1px;
	text-underline-offset: 3px;
}

/*
 * Every route's header (H1, lead, title results) sits on the same ink band as
 * the hub hero: bodybuilding's dark contest and athlete headers, flat fill.
 */
.oly-app .oly-page-head {
	margin: 4px 0 40px;
	padding: 36px 40px;
	background: var(--oly-ink);
	border: 1px solid rgba(255, 253, 248, 0.12);
	border-radius: var(--oly-radius);
	box-shadow: 0 24px 70px rgba(27, 24, 21, 0.16);
	color: var(--oly-on-dark);
}

.oly-app .oly-page-head > * {
	max-width: 860px;
}

.oly-app .oly-page-head .oly-page-title {
	color: var(--oly-on-dark);
}

.oly-app .oly-page-head .oly-lead,
.oly-app .oly-page-head .oly-plain-list > li {
	color: rgba(250, 246, 239, 0.8);
}

.oly-app .oly-page-head .oly-plain-list > li {
	border-bottom-color: var(--oly-on-dark-line);
}

/* Links in the band's running text are underlined: amber alone is too close to the lead. */
.oly-app .oly-page-head a,
.oly-app .oly-hero .oly-lead a {
	color: var(--oly-amber);
	text-decoration: underline;
	text-decoration-thickness: 1px;
	text-underline-offset: 3px;
}

.oly-app .oly-page-head a:hover {
	color: var(--oly-on-dark);
}

.oly-app .oly-page-head .oly-search-form label {
	color: var(--oly-on-dark-muted);
}

@media (max-width: 768px) {
	.oly-app .oly-page-head {
		margin: 0 -16px 32px;
		padding: 28px 16px;
		border-inline: none;
		border-radius: 0;
		box-shadow: none;
	}
}

.oly-app .oly-page-title {
	margin: 0 0 14px;
	font-size: clamp(2rem, 4.2vw, 3.25rem);
	font-weight: 800;
	font-stretch: 88%;
	line-height: 1.04;
	letter-spacing: -0.02em;
	text-wrap: balance;
}

.oly-app .oly-lead {
	margin: 0 0 10px;
	font-size: 17px;
	line-height: 1.6;
	color: var(--oly-text-secondary);
}

.oly-app .oly-lead:last-child {
	margin-bottom: 0;
}

.oly-app .oly-section {
	margin-top: 56px;
}

.oly-app .oly-section:first-child {
	margin-top: 0;
}

/*
 * Section heading: bodybuilding's .bb-heading-section over a 2px ink rule. A
 * bare heading takes the rule itself; .oly-section-head groups an eyebrow, the
 * heading and an optional action link on one rule.
 */
.oly-app .oly-section-heading {
	margin: 0 0 18px;
	padding-bottom: 14px;
	border-bottom: 2px solid var(--oly-ink);
	font-size: clamp(1.5rem, 2.6vw, 2rem);
	font-weight: 700;
	font-stretch: 88%;
	line-height: 1.08;
	letter-spacing: -0.02em;
	text-wrap: balance;
}

.oly-app .oly-section-head {
	display: flex;
	flex-wrap: wrap;
	align-items: flex-end;
	justify-content: space-between;
	gap: 12px 20px;
	margin: 0 0 18px;
	padding-bottom: 16px;
	border-bottom: 2px solid var(--oly-ink);
}

.oly-app .oly-section-head .oly-section-heading {
	margin: 0;
	padding: 0;
	border: none;
}

.oly-app .oly-eyebrow {
	display: block;
	margin: 0 0 10px;
	color: var(--oly-oxblood-hover);
	font-size: 12px;
	font-weight: 700;
	letter-spacing: 0.06em;
	line-height: 1.4;
	text-transform: uppercase;
}

.oly-app .oly-subheading {
	margin: 0 0 8px;
	font-size: 18px;
	font-weight: 700;
	line-height: 1.3;
}

.oly-app .oly-section-intro {
	margin: 0 0 18px;
	max-width: 820px;
	color: var(--oly-text-primary);
	font-size: 16px;
	line-height: 1.65;
}

/* Figures and data labels in the mono face, as on every bodybuilding page. */
.oly-app .oly-mono {
	font-family: var(--oly-font-mono);
}

/* ---- Buttons (bodybuilding .bb-btn, flat fills) -------------------------- */

.oly-app .oly-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 8px;
	min-height: 44px;
	padding: 10px 20px;
	border: 1px solid transparent;
	border-radius: var(--oly-radius);
	font-size: 14px;
	font-weight: 600;
	line-height: 1.2;
	text-decoration: none;
	white-space: nowrap;
	cursor: pointer;
	transition: background-color var(--oly-transition), border-color var(--oly-transition), color var(--oly-transition);
}

.oly-app .oly-btn:hover {
	text-decoration: none;
}

.oly-app .oly-btn--primary {
	background: var(--oly-primary);
	color: var(--oly-on-dark);
}

.oly-app .oly-btn--primary:hover {
	background: var(--oly-primary-hover);
	color: var(--oly-on-dark);
}

.oly-app .oly-btn--secondary {
	border-color: var(--oly-border);
	background: var(--oly-surface);
	color: var(--oly-ink);
}

.oly-app .oly-btn--secondary:hover {
	border-color: var(--oly-ink);
	color: var(--oly-ink);
}

.oly-app .oly-btn--sm {
	min-height: 36px;
	padding: 8px 14px;
	font-size: 13px;
}

.oly-app .oly-muted {
	color: var(--oly-text-muted);
}

.oly-app .oly-nowrap {
	white-space: nowrap;
}

.oly-app .oly-more-link {
	display: inline-block;
	margin-top: 12px;
	font-weight: 600;
}

/* On phones the section's exit link moves below its content (the head button hides). */
.oly-app .oly-section-more {
	margin: 14px 0 0;
	font-size: 14px;
	font-weight: 600;
}

/* How current the data is, above the hero: bodybuilding's "data updated" line. */
.oly-app .oly-freshness {
	display: flex;
	align-items: center;
	gap: 8px;
	margin: 8px 0 12px;
	color: var(--oly-text-muted);
	font-family: var(--oly-font-mono);
	font-size: 12px;
	letter-spacing: 0.08em;
	text-transform: uppercase;
}

.oly-app .oly-freshness::before {
	content: "";
	flex: none;
	width: 7px;
	height: 7px;
	border-radius: 50%;
	background: var(--oly-moss);
}

/* ---- Navigation (bodybuilding.css section 5) ----------------------------- */

.oly-app .oly-nav {
	position: sticky;
	top: 0;
	z-index: 50;
	margin-inline: -20px;
	padding-inline: 20px;
	background: rgba(255, 255, 255, 0.95);
	-webkit-backdrop-filter: blur(12px);
	backdrop-filter: blur(12px);
	border-bottom: 1px solid var(--oly-gray-200);
	box-shadow: 0 1px 3px rgba(0, 0, 0, 0.04);
}

.oly-app .oly-nav-inner {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 16px;
	height: 52px;
}

.oly-app .oly-nav-logo {
	display: flex;
	align-items: center;
	gap: 8px;
	flex-shrink: 0;
	color: var(--oly-text-primary);
	text-decoration: none;
	transition: opacity 0.15s;
}

.oly-app .oly-nav-logo:hover {
	opacity: 0.8;
	color: var(--oly-text-primary);
	text-decoration: none;
}

.oly-app .oly-nav-logo-icon {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 30px;
	height: 30px;
	color: var(--oly-primary);
}

.oly-app .oly-nav-logo-text {
	font-size: 20px;
	font-weight: 900;
	letter-spacing: 0.06em;
	line-height: 1;
}

.oly-app .oly-brand-accent {
	color: var(--oly-primary);
}

.oly-app .oly-nav-links {
	display: none;
	flex: 1;
	align-items: center;
	justify-content: center;
	gap: 2px;
}

.oly-app .oly-nav-link {
	display: flex;
	align-items: center;
	gap: 3px;
	padding: 4px 12px;
	border: none;
	border-radius: 6px;
	background: none;
	color: var(--oly-text-muted);
	font-size: 15px;
	font-weight: 500;
	letter-spacing: normal;
	white-space: nowrap;
	text-decoration: none;
	cursor: pointer;
	transition: background 0.15s, color 0.15s;
}

.oly-app .oly-nav-link:hover,
.oly-app .oly-nav-group-active,
.oly-app .oly-nav-dropdown[data-open="true"] .oly-nav-dropdown-trigger {
	background: var(--oly-primary-light);
	color: var(--oly-text-primary);
	text-decoration: none;
}

.oly-app .oly-nav-group-active {
	font-weight: 600;
}

.oly-app .oly-nav-dropdown {
	position: relative;
	display: flex;
	align-items: center;
}

.oly-app .oly-nav-dropdown-trigger svg {
	width: 12px;
	height: 12px;
	opacity: 0.5;
	transition: transform 0.2s ease, opacity 0.2s ease;
}

.oly-app .oly-nav-dropdown[data-open="true"] .oly-nav-dropdown-trigger svg {
	opacity: 0.8;
	transform: rotate(180deg);
}

.oly-app .oly-nav-dropdown-menu {
	position: absolute;
	top: calc(100% + 8px);
	left: 50%;
	z-index: 50;
	min-width: 200px;
	padding: 8px 0;
	transform: translateX(-50%);
	background: var(--oly-surface);
	border: 1px solid var(--oly-gray-200);
	border-radius: var(--oly-radius-lg);
	box-shadow: var(--oly-shadow-lg);
}

.oly-app .oly-nav-dropdown-item {
	display: block;
	padding: 8px 16px;
	color: var(--oly-gray-700);
	font-size: 14px;
	font-weight: 500;
	white-space: nowrap;
	text-decoration: none;
}

.oly-app .oly-nav-dropdown-item:hover {
	background: var(--oly-gray-50);
	color: var(--oly-primary);
	text-decoration: none;
}

.oly-app .oly-nav-dropdown-item.oly-nav-link-active {
	color: var(--oly-primary);
	font-weight: 600;
}

.oly-app .oly-nav-actions {
	display: flex;
	flex-shrink: 0;
	align-items: center;
	gap: 12px;
}

.oly-app .oly-nav-auth-btn {
	display: flex;
	align-items: center;
	gap: 6px;
	padding: 6px 14px;
	border-radius: var(--oly-radius-full);
	background: var(--oly-ink);
	color: #fff;
	font-size: 13px;
	font-weight: 600;
	white-space: nowrap;
	text-decoration: none;
	transition: background 0.15s;
}

.oly-app .oly-nav-auth-btn:hover {
	background: var(--oly-primary);
	color: #fff;
	text-decoration: none;
}

.oly-app .oly-nav-auth-btn svg {
	opacity: 0.85;
}

.oly-app .oly-nav-hamburger {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 44px;
	height: 44px;
	padding: 0;
	border: none;
	border-radius: var(--oly-radius);
	background: transparent;
	cursor: pointer;
}

.oly-app .oly-nav-hamburger:hover {
	background: var(--oly-gray-100);
}

.oly-app .oly-nav-hamburger-icon {
	display: flex;
	flex-direction: column;
	gap: 5px;
}

.oly-app .oly-nav-hamburger-icon span {
	display: block;
	width: 22px;
	height: 2px;
	border-radius: 1px;
	background: var(--oly-gray-700);
	transform-origin: center;
	transition: transform 0.2s ease, opacity 0.2s ease;
}

.oly-app .oly-nav-hamburger[aria-expanded="true"] .oly-nav-hamburger-icon span:nth-child(1) {
	transform: rotate(45deg) translate(5px, 5px);
}

.oly-app .oly-nav-hamburger[aria-expanded="true"] .oly-nav-hamburger-icon span:nth-child(2) {
	opacity: 0;
	transform: scaleX(0);
}

.oly-app .oly-nav-hamburger[aria-expanded="true"] .oly-nav-hamburger-icon span:nth-child(3) {
	transform: rotate(-45deg) translate(5px, -5px);
}

.oly-app .oly-nav-mobile {
	margin-inline: -20px;
	padding: 8px 16px 12px;
	background: var(--oly-surface);
	border-top: 1px solid var(--oly-gray-100);
}

.oly-app .oly-nav-mobile-auth {
	display: flex;
	gap: 8px;
	padding: 8px 0 12px;
	border-bottom: 1px solid var(--oly-gray-100);
}

.oly-app .oly-nav-mobile-btn {
	flex: 1;
	display: flex;
	align-items: center;
	justify-content: center;
	min-height: 44px;
	padding: 8px 14px;
	border: 1px solid var(--oly-border);
	border-radius: var(--oly-radius-full);
	color: var(--oly-text-primary);
	font-size: 14px;
	font-weight: 600;
	text-decoration: none;
}

.oly-app .oly-nav-mobile-btn--primary {
	border-color: var(--oly-ink);
	background: var(--oly-ink);
	color: #fff;
}

.oly-app .oly-nav-mobile-btn:hover {
	text-decoration: none;
}

.oly-app .oly-nav-mobile-group {
	padding: 8px 0;
	border-bottom: 1px solid var(--oly-gray-100);
}

.oly-app .oly-nav-mobile-group-label {
	padding: 4px 16px;
	color: var(--oly-text-muted);
	font-size: 11px;
	font-weight: 600;
	letter-spacing: 0.05em;
	text-transform: uppercase;
}

.oly-app .oly-nav-mobile-links {
	display: flex;
	flex-direction: column;
	gap: 4px;
}

.oly-app .oly-nav-mobile-links + .oly-nav-mobile-links,
.oly-app .oly-nav-mobile-group + .oly-nav-mobile-links {
	padding-top: 4px;
}

.oly-app .oly-nav-mobile-link {
	display: block;
	padding: 12px 16px;
	border-radius: var(--oly-radius);
	color: var(--oly-gray-700);
	font-size: 15px;
	font-weight: 500;
	text-decoration: none;
}

.oly-app .oly-nav-mobile-link:hover,
.oly-app .oly-nav-mobile-link:focus {
	background: var(--oly-gray-50);
	color: var(--oly-ink);
	text-decoration: none;
}

.oly-app .oly-nav-mobile-link[aria-current="page"] {
	background: var(--oly-primary-light);
	color: var(--oly-primary);
}

/* One breakpoint, as bodybuilding's bar: the wordmark, eight links and Sign In need about 1,140px
   of bar (the viewport less its 40px gutter), so below 1200 the bar keeps the hamburger rather than
   pushing News and Sign In off the right edge. */
@media (min-width: 1200px) {
	.oly-app .oly-nav-links {
		display: flex;
	}

	.oly-app .oly-nav-hamburger,
	.oly-app .oly-nav-mobile {
		display: none !important;
	}
}

@media (max-width: 768px) {
	.oly-app .oly-nav {
		margin-inline: -16px;
		padding-inline: 12px;
	}

	.oly-app .oly-nav-mobile {
		margin-inline: -12px;
	}

	.oly-app .oly-nav-auth-btn {
		display: none;
	}
}

/* ---- Breadcrumb (bodybuilding .bb-breadcrumbs--light) -------------------- */

.oly-app .oly-breadcrumbs {
	padding: 20px 0 12px;
	font-size: 13px;
}

.oly-app .oly-breadcrumb-list {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 2px;
	margin: 0;
	padding: 0;
	list-style: none;
}

.oly-app .oly-breadcrumb-item {
	display: flex;
	align-items: center;
	gap: 4px;
	margin: 0;
	color: var(--oly-text-muted);
	font-size: 13px;
}

.oly-app .oly-breadcrumb-item a {
	color: var(--oly-text-muted);
}

.oly-app .oly-breadcrumb-item a:hover {
	color: var(--oly-primary);
}

.oly-app .oly-breadcrumb-sep {
	padding-right: 2px;
	color: var(--oly-gray-400);
	font-size: 14px;
	line-height: 1;
}

.oly-app .oly-breadcrumb-current span {
	color: var(--oly-text-primary);
	font-weight: 500;
}

/* ---- Tables (bodybuilding .bb-table / .bb-table-card) -------------------- */

.oly-app .oly-table-wrap {
	width: 100%;
	overflow-x: auto;
	-webkit-overflow-scrolling: touch;
	background: var(--oly-surface);
	border: 1px solid var(--oly-border);
	border-radius: var(--oly-radius-lg);
}

.oly-app .oly-table {
	width: 100%;
	margin: 0;
	border: none;
	border-collapse: collapse;
	font-size: 14px;
	line-height: 1.45;
}

/* The theme paints thead dark and borders every cell. */
.oly-app .oly-table thead,
.oly-app .oly-table thead tr {
	background: transparent !important;
	color: inherit !important;
}

.oly-app .oly-table th,
.oly-app .oly-table td {
	border: none !important;
	background: transparent;
	vertical-align: top;
	text-align: left;
}

/* A medallists-only meet's table fits a phone without scrolling: tighter cells, wrapping heads. */
@media (max-width: 768px) {
	.oly-app .oly-table.oly-table--medallists thead th {
		padding-right: 6px;
		padding-left: 6px;
		white-space: normal;
		letter-spacing: 0.04em;
	}

	.oly-app .oly-table.oly-table--medallists tbody th,
	.oly-app .oly-table.oly-table--medallists tbody td {
		padding-right: 6px;
		padding-left: 6px;
	}
}

.oly-app .oly-table thead th {
	padding: 12px 16px;
	border-bottom: 2px solid var(--oly-border) !important;
	color: var(--oly-text-muted) !important;
	font-family: var(--oly-font-mono);
	font-size: 11px;
	font-weight: 500;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	white-space: nowrap;
}

.oly-app .oly-table tbody td,
.oly-app .oly-table tbody th {
	padding: 12px 16px;
	border-bottom: 1px solid var(--oly-border) !important;
	color: var(--oly-text-secondary);
}

.oly-app .oly-table tbody th {
	color: var(--oly-text-primary);
	font-weight: 600;
}

.oly-app .oly-table tbody tr:last-child td,
.oly-app .oly-table tbody tr:last-child th {
	border-bottom: none !important;
}

/* The theme paints odd rows; rows separate by hairline only, no striping. */
.oly-app .oly-table tbody tr {
	background: transparent;
}

.oly-app .oly-table tbody tr:hover {
	background: var(--oly-gray-50);
}

.oly-app .oly-table .oly-num {
	font-family: var(--oly-font-mono);
	text-align: right;
	white-space: nowrap;
}

.oly-app .oly-table .oly-nowrap {
	white-space: nowrap;
}

.oly-app .oly-table td a,
.oly-app .oly-table th a {
	font-weight: 600;
}

.oly-app .oly-cell-sub {
	display: block;
	margin-top: 2px;
	color: var(--oly-text-muted);
	font-size: 12px;
	font-weight: 400;
}

/*
 * Phone table layout without a second markup: columns marked .oly-hide-phone drop
 * out at 768px and below, and the facts they held reappear as .oly-phone-only
 * sub-lines inside a cell that stays.
 */
.oly-app .oly-phone-only {
	display: none !important;
}

@media (max-width: 768px) {
	.oly-app .oly-hide-phone {
		display: none !important;
	}

	.oly-app .oly-phone-only {
		display: block !important;
	}
}

.oly-app .oly-table-note {
	margin: 8px 0 0;
	color: var(--oly-text-muted);
	font-size: 13px;
}

/* Text for screen readers only. */
.oly-app .oly-sr-only {
	position: absolute;
	width: 1px;
	height: 1px;
	padding: 0;
	margin: -1px;
	overflow: hidden;
	clip: rect(0, 0, 0, 0);
	white-space: nowrap;
	border: 0;
}

.oly-app .oly-table caption {
	padding: 0;
	caption-side: top;
}

/* Sortable headers: oly-table-sort.js adds a button inside each th[data-sort]. */
.oly-app .oly-sort-btn {
	display: inline-flex;
	align-items: center;
	gap: 4px;
	padding: 0;
	border: none;
	background: none;
	color: inherit;
	font: inherit;
	letter-spacing: inherit;
	text-transform: inherit;
	cursor: pointer;
}

.oly-app .oly-sort-btn::after {
	content: "";
	width: 0;
	height: 0;
	border-left: 4px solid transparent;
	border-right: 4px solid transparent;
	border-top: 5px solid currentColor;
	opacity: 0.3;
}

.oly-app th[aria-sort="ascending"] .oly-sort-btn::after {
	border-top: none;
	border-bottom: 5px solid currentColor;
	opacity: 0.8;
}

.oly-app th[aria-sort="descending"] .oly-sort-btn::after {
	opacity: 0.8;
}

/* ---- Place chips (bodybuilding .bb-place-chip) -------------------------- */

.oly-app .oly-place-chip {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 44px;
	padding: 5px 10px;
	border-radius: var(--oly-radius-sm);
	background: var(--oly-tint);
	color: var(--oly-ink);
	font-size: 12px;
	font-weight: 600;
	line-height: 1;
}

.oly-app .oly-place-chip--win {
	background: var(--oly-primary);
	color: var(--oly-on-dark);
}

/* ---- Chips (bodybuilding .bb-chip) -------------------------------------- */

.oly-app .oly-chip-row {
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
	margin: 12px 0 0;
	padding: 0;
	list-style: none;
}

.oly-app .oly-chip {
	display: inline-flex;
	align-items: center;
	min-height: 32px;
	padding: 6px 14px;
	border: 1px solid var(--oly-border);
	border-radius: 999px;
	background: var(--oly-surface);
	color: var(--oly-text-secondary);
	font-size: 13px;
	font-weight: 600;
	text-decoration: none;
}

.oly-app a.oly-chip:hover {
	border-color: var(--oly-primary);
	background: var(--oly-primary-light);
	color: var(--oly-primary);
	text-decoration: none;
}

/* ---- Cards (bodybuilding .bb-card / .bb-stat-card / .bb-related-card) ---- */

.oly-app .oly-card {
	display: block;
	padding: 16px 20px;
	background: var(--oly-surface);
	border: 1px solid var(--oly-border);
	border-radius: var(--oly-radius-lg);
	color: inherit;
}

.oly-app a.oly-card--link {
	text-decoration: none;
	transition: border-color var(--oly-transition), box-shadow var(--oly-transition);
}

.oly-app a.oly-card--link:hover {
	border-color: var(--oly-primary);
	box-shadow: var(--oly-shadow-md);
	text-decoration: none;
	color: inherit;
}

.oly-app .oly-card-grid {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
	gap: 16px;
	margin: 0;
	padding: 0;
	list-style: none;
}

.oly-app .oly-card-grid > li {
	margin: 0;
}

.oly-app .oly-card-grid > li > .oly-card {
	height: 100%;
}

.oly-app .oly-stat-label {
	display: block;
	margin-bottom: 8px;
	color: var(--oly-text-muted);
	font-family: var(--oly-font-mono);
	font-size: 11px;
	font-weight: 500;
	letter-spacing: 0.14em;
	text-transform: uppercase;
}

.oly-app .oly-stat-value {
	display: block;
	color: var(--oly-text-primary);
	font-family: var(--oly-font-mono);
	font-size: 26px;
	font-weight: 500;
	line-height: 1.15;
	letter-spacing: -0.02em;
}

.oly-app .oly-stat-sub {
	display: block;
	margin-top: 4px;
	color: var(--oly-text-muted);
	font-size: 13px;
}

/* ---- Hero band (bodybuilding .bb-hero as a flat ink fill) ---------------- */

.oly-app .oly-hero {
	margin: 4px 0 56px;
	padding: 40px 40px 0;
	background: var(--oly-ink);
	border: 1px solid rgba(255, 253, 248, 0.12);
	border-radius: var(--oly-radius);
	box-shadow: 0 24px 70px rgba(27, 24, 21, 0.2);
	color: var(--oly-on-dark);
}

.oly-app .oly-hero-eyebrow {
	margin: 0 0 14px;
	color: var(--oly-amber);
	font-family: var(--oly-font-mono);
	font-size: 12px;
	font-weight: 500;
	letter-spacing: 0.14em;
	line-height: 1.5;
	text-transform: uppercase;
}

.oly-app .oly-hero .oly-page-title {
	max-width: 980px;
	color: var(--oly-on-dark);
	font-size: clamp(2.1rem, 4.6vw, 3.6rem);
}

.oly-app .oly-hero .oly-lead {
	max-width: 780px;
	color: rgba(250, 246, 239, 0.8);
	font-size: 18px;
}

.oly-app .oly-hero a:not(.oly-btn):not(.oly-hero-path) {
	color: var(--oly-amber);
}

.oly-app .oly-hero-search {
	display: flex;
	gap: 8px;
	max-width: 720px;
	margin: 28px 0 0;
	padding: 8px;
	background: rgba(250, 246, 239, 0.06);
	border: 1px solid var(--oly-on-dark-line);
	border-radius: var(--oly-radius);
}

.oly-app .oly-hero-search input {
	flex: 1;
	min-width: 0;
	height: 44px;
	margin: 0;
	padding: 10px 14px;
	background: rgba(255, 253, 248, 0.94);
	border: 1px solid var(--oly-border);
	border-radius: var(--oly-radius);
	color: var(--oly-gray-700);
	font-family: var(--oly-font-body);
	font-size: 15px;
}

.oly-app .oly-hero-paths {
	display: flex;
	flex-wrap: wrap;
	gap: 10px;
	margin: 18px 0 0;
}

.oly-app .oly-hero-path {
	display: inline-flex;
	align-items: center;
	min-height: 38px;
	padding: 8px 15px;
	background: rgba(255, 255, 255, 0.08);
	border: 1px solid rgba(255, 255, 255, 0.18);
	border-radius: var(--oly-radius-full);
	color: rgba(255, 255, 255, 0.92);
	font-size: 13px;
	font-weight: 700;
	text-decoration: none;
}

.oly-app .oly-hero-path:hover {
	background: rgba(255, 255, 255, 0.16);
	color: var(--oly-on-dark);
	text-decoration: none;
}

/* The figures along the foot of the band: bodybuilding's hero ledger. */
.oly-app .oly-ledger {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
	margin: 36px -40px 0;
	border-top: 1px solid var(--oly-on-dark-line);
}

.oly-app .oly-ledger-cell {
	display: flex;
	flex-direction: column-reverse;
	justify-content: flex-end;
	margin: 0;
	padding: 24px;
	border-left: 1px solid var(--oly-on-dark-line);
}

.oly-app .oly-ledger-cell:first-child {
	border-left: none;
}

.oly-app .oly-ledger-num {
	margin: 0;
	color: var(--oly-on-dark);
	font-family: var(--oly-font-mono);
	font-size: clamp(1.6rem, 2.6vw, 1.95rem);
	font-weight: 500;
	line-height: 1;
	letter-spacing: -0.02em;
}

.oly-app .oly-ledger-label {
	margin: 10px 0 0;
	color: var(--oly-on-dark-muted);
	font-family: var(--oly-font-mono);
	font-size: 11px;
	font-weight: 400;
	letter-spacing: 0.16em;
	line-height: 1.35;
	text-transform: uppercase;
}

@media (max-width: 768px) {
	/* Phones: the band runs edge to edge instead of floating inside the gutter. */
	.oly-app .oly-hero {
		margin: 0 -16px 40px;
		padding: 28px 16px 0;
		border-inline: none;
		border-radius: 0;
		box-shadow: none;
	}

	.oly-app .oly-hero .oly-lead {
		font-size: 16px;
	}

	/* One surface level on phones: the input and button sit straight on the band. */
	.oly-app .oly-hero-search {
		padding: 0;
		background: transparent;
		border: 0;
	}

	.oly-app .oly-hero-search .oly-btn {
		padding-inline: 16px;
	}

	.oly-app .oly-hero-paths {
		display: grid;
		grid-template-columns: 1fr 1fr;
		gap: 8px;
	}

	.oly-app .oly-hero-path {
		justify-content: center;
	}

	.oly-app .oly-ledger {
		grid-template-columns: 1fr 1fr;
		margin-inline: -16px;
	}

	.oly-app .oly-ledger-cell {
		padding: 18px 16px;
		border-left: none;
		border-top: 1px solid var(--oly-on-dark-line);
	}

	.oly-app .oly-ledger-cell:nth-child(-n+2) {
		border-top: none;
	}

	.oly-app .oly-ledger-cell:nth-child(even) {
		border-left: 1px solid var(--oly-on-dark-line);
	}

	.oly-app .oly-ledger-cell:last-child:nth-child(odd) {
		grid-column: 1 / -1;
	}
}

/* ---- Row cards (bodybuilding .bb-contest-row) ---------------------------- */

.oly-app .oly-rows {
	display: grid;
	gap: 12px;
	margin: 0;
	padding: 0;
	list-style: none;
}

.oly-app .oly-rows > li {
	margin: 0;
	min-width: 0;
}

@media (min-width: 900px) {
	.oly-app .oly-rows--2 {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}

.oly-app .oly-row {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 16px;
	height: 100%;
	padding: 16px 22px;
	background: var(--oly-surface);
	border: 1px solid var(--oly-border-card);
	border-radius: var(--oly-radius-lg);
	color: var(--oly-ink);
	text-decoration: none;
	transition: border-color var(--oly-transition), box-shadow var(--oly-transition);
}

.oly-app a.oly-row:hover {
	border-color: var(--oly-ink);
	box-shadow: var(--oly-shadow-md);
	color: var(--oly-ink);
	text-decoration: none;
}

.oly-app .oly-row-main {
	display: flex;
	flex-direction: column;
	gap: 4px;
	min-width: 0;
}

.oly-app .oly-row-title {
	color: var(--oly-ink);
	font-size: 16px;
	font-weight: 700;
	line-height: 1.3;
}

.oly-app a.oly-row:hover .oly-row-title {
	color: var(--oly-primary);
}

.oly-app .oly-row-meta {
	color: var(--oly-text-muted);
	font-size: 14px;
	line-height: 1.4;
}

.oly-app .oly-row-aside {
	display: flex;
	flex: none;
	align-items: center;
	gap: 14px;
	color: var(--oly-text-secondary);
	font-family: var(--oly-font-mono);
	font-size: 13px;
	text-align: right;
}

.oly-app .oly-row-chev {
	display: flex;
	color: var(--oly-gray-400);
}

/* ---- Tiles (bodybuilding's data-platform grid) --------------------------- */

/* Two or four across, so the hub's eight tiles always fill their rows. */
.oly-app .oly-tiles {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 16px;
	margin: 0;
	padding: 0;
	list-style: none;
}

@media (min-width: 1024px) {
	.oly-app .oly-tiles {
		grid-template-columns: repeat(4, minmax(0, 1fr));
	}
}

.oly-app .oly-tile {
	display: flex;
	flex-direction: column;
	gap: 8px;
	height: 100%;
	padding: 22px 22px 20px;
	background: var(--oly-surface);
	border: 1px solid var(--oly-border-card);
	border-radius: var(--oly-radius-lg);
	color: var(--oly-ink);
	text-decoration: none;
	transition: border-color var(--oly-transition), box-shadow var(--oly-transition);
}

.oly-app a.oly-tile:hover {
	border-color: var(--oly-ink);
	box-shadow: var(--oly-shadow-md);
	color: var(--oly-ink);
	text-decoration: none;
}

.oly-app .oly-tile-kicker {
	color: var(--oly-amber-dark);
	font-family: var(--oly-font-mono);
	font-size: 11px;
	font-weight: 500;
	letter-spacing: 0.14em;
	text-transform: uppercase;
}

.oly-app .oly-tile-title {
	color: var(--oly-ink);
	font-size: 18px;
	font-weight: 700;
	line-height: 1.25;
}

.oly-app .oly-tile-desc {
	color: var(--oly-text-secondary);
	font-size: 14px;
	line-height: 1.55;
}

.oly-app .oly-tile-go {
	display: inline-flex;
	align-items: center;
	gap: 4px;
	margin-top: auto;
	padding-top: 6px;
	color: var(--oly-primary);
	font-size: 13px;
	font-weight: 600;
}

@media (max-width: 768px) {
	/* Phones: tiles become rows on the page, not boxes, one per line. */
	.oly-app .oly-tiles {
		grid-template-columns: minmax(0, 1fr);
		gap: 0;
		border-top: 1px solid var(--oly-border-soft);
	}

	/* Each row keeps a chevron, the same tap cue as the row cards below it. */
	.oly-app .oly-tile {
		display: grid;
		grid-template-columns: minmax(0, 1fr) 18px;
		align-items: center;
		gap: 4px 12px;
		padding: 14px 0;
		background: transparent;
		border: none;
		border-bottom: 1px solid var(--oly-border-soft);
		border-radius: 0;
		box-shadow: none;
	}

	.oly-app .oly-tile-kicker,
	.oly-app .oly-tile-title,
	.oly-app .oly-tile-desc {
		grid-column: 1;
	}

	.oly-app .oly-tile-go {
		grid-column: 2;
		grid-row: 1 / span 3;
		margin: 0;
		padding: 0;
		color: var(--oly-gray-400);
		font-size: 0;
	}

	.oly-app .oly-tile-go svg {
		width: 18px;
		height: 18px;
	}

	.oly-app .oly-row {
		padding: 14px 16px;
	}
}

/* ---- Notes, lists, pager ------------------------------------------------ */

.oly-app .oly-note {
	margin: 0 0 24px;
	padding: 12px 16px;
	max-width: 760px;
	background: var(--oly-gray-50);
	border: 1px solid var(--oly-border-soft);
	border-radius: var(--oly-radius-lg);
	color: var(--oly-text-secondary);
	font-size: 14px;
}

.oly-app .oly-plain-list {
	margin: 0;
	padding: 0;
	list-style: none;
}

.oly-app .oly-plain-list > li {
	margin: 0;
	padding: 10px 0;
	border-bottom: 1px solid var(--oly-border-soft);
}

.oly-app .oly-plain-list > li:last-child {
	border-bottom: none;
}

.oly-app .oly-plain-list .oly-cell-sub {
	display: inline;
	margin: 0 0 0 8px;
}

.oly-app .oly-pager {
	display: flex;
	flex-wrap: wrap;
	justify-content: space-between;
	gap: 12px;
	margin-top: 40px;
}

/* Previous / next: bodybuilding's secondary buttons. */
.oly-app .oly-pager a {
	display: inline-flex;
	align-items: center;
	min-height: 40px;
	padding: 8px 16px;
	background: var(--oly-surface);
	border: 1px solid var(--oly-border);
	border-radius: var(--oly-radius);
	color: var(--oly-ink);
	font-size: 14px;
	font-weight: 600;
	text-decoration: none;
}

.oly-app .oly-pager a:hover {
	border-color: var(--oly-ink);
	color: var(--oly-ink);
	text-decoration: none;
}

.oly-app .oly-pager-next {
	margin-left: auto;
}

/* ---- Footer: sources, disclaimer, brand (bodybuilding .bb-source-line) --- */

.oly-app .oly-footer {
	margin-top: 48px;
	padding: 20px 0 24px;
	border-top: 1px solid var(--oly-border);
	color: var(--oly-text-muted);
	font-size: 13px;
	line-height: 1.55;
}

.oly-app .oly-sources {
	margin-bottom: 16px;
}

.oly-app .oly-sources-heading {
	margin: 0 0 6px;
	color: var(--oly-text-secondary);
	font-size: 13px;
	font-weight: 700;
	letter-spacing: 0.06em;
	text-transform: uppercase;
}

.oly-app .oly-sources-list {
	margin: 0;
	padding: 0;
	list-style: none;
}

.oly-app .oly-sources-list li {
	margin: 0 0 4px;
}

.oly-app .oly-footer a {
	color: var(--oly-text-secondary);
	font-weight: 600;
}

.oly-app .oly-footer a:hover {
	color: var(--oly-primary);
}

.oly-app .oly-disclaimer {
	margin: 0 0 16px;
	max-width: 760px;
	color: var(--oly-text-muted);
	font-size: 12.5px;
}

.oly-app .oly-footer-bar {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-between;
	gap: 8px 20px;
	padding-top: 14px;
	border-top: 1px solid var(--oly-border-soft);
}

.oly-app .oly-footer .oly-footer-brand {
	color: var(--oly-text-primary);
	font-weight: 800;
}

.oly-app .oly-footer-links {
	display: flex;
	flex-wrap: wrap;
	gap: 4px 18px;
}

.oly-app .oly-footer-links a {
	display: block;
	padding-block: 3px;
	font-weight: 500;
}

@media (max-width: 768px) {
	.oly-app .oly-section {
		margin-top: 32px;
	}

	.oly-app .oly-table thead th,
	.oly-app .oly-table tbody td,
	.oly-app .oly-table tbody th {
		padding: 10px 12px;
	}

	/* One surface level on phones: a card's content runs flat. */
	.oly-app .oly-card .oly-card,
	.oly-app .oly-card .oly-table-wrap {
		border: none;
		padding: 0;
	}
}


.oly-app .oly-flag {
	display: inline-block;
	width: 20px;
	height: 15px;
	margin: 0 4px 0 0;
	border: 1px solid var(--oly-border-soft);
	vertical-align: -2px;
	object-fit: cover;
}



.oly-app .oly-two-col {
	grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
	align-items: start;
}

.oly-app .oly-stat-grid {
	grid-template-columns: repeat(auto-fill, minmax(170px, 1fr));
	margin: 0 0 32px;
}

.oly-app .oly-title-results {
	margin: 12px 0 0;
}

.oly-app .oly-title-results li {
	margin: 0 0 6px;
	font-size: 16px;
}

.oly-app .oly-method-list li {
	margin: 0 0 10px;
	line-height: 1.6;
}

.oly-app .oly-chip-row {
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
	margin: 0;
	padding: 0;
	list-style: none;
}

.oly-app .oly-search-form {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 8px;
	margin: 16px 0 0;
}

.oly-app .oly-search-form label {
	flex: 0 0 100%;
	color: var(--oly-text-secondary);
	font-size: 14px;
	font-weight: 600;
}

.oly-app .oly-search-form input[type="search"] {
	flex: 1 1 220px;
	max-width: 360px;
	height: 42px;
	padding: 0 12px;
	border: 1px solid var(--oly-border);
	border-radius: var(--oly-radius);
	background: var(--oly-paper);
	color: var(--oly-text-primary);
	font-family: var(--oly-font-body);
	font-size: 16px;
}

.oly-app .oly-search-form button {
	height: 42px;
	padding: 0 18px;
	border: 1px solid var(--oly-primary);
	border-radius: var(--oly-radius);
	background: var(--oly-primary);
	color: var(--oly-on-dark);
	font-size: 15px;
	font-weight: 700;
	line-height: 1;
	cursor: pointer;
}

.oly-app .oly-search-form button:hover {
	background: var(--oly-primary-hover);
	border-color: var(--oly-primary-hover);
}

@media (max-width: 768px) {
	/* Phones: one surface level. Stat cards become a plain row of numbers. */
	.oly-app .oly-stat-grid {
		grid-template-columns: repeat(2, minmax(0, 1fr));
		gap: 0;
		border-top: 1px solid var(--oly-border-soft);
	}

	/* Three figures sit in one row instead of 2 + 1. */
	.oly-app .oly-stat-grid:has(> :nth-child(3):last-child) {
		grid-template-columns: repeat(3, minmax(0, 1fr));
		column-gap: 12px;
	}

	.oly-app .oly-stat-grid .oly-card {
		padding: 12px 0;
		border: none;
		border-bottom: 1px solid var(--oly-border-soft);
		border-radius: 0;
		box-shadow: none;
	}

	.oly-app .oly-two-col {
		grid-template-columns: 1fr;
	}

	.oly-app .oly-search-form input[type="search"] {
		max-width: none;
	}
}

/* ---- Label tables and boards on phones ---------------------------------- */
/* .oly-stack-labels: the first cell is the row's title; every other cell is a line
   (names) or an inline figure (.oly-num), each introduced by its data-label.
   .oly-stack-board: rank | lifter | figure on one line, then up to three detail lines. */

.oly-app .oly-event-list li {
	margin: 0 0 8px;
}

.oly-app .oly-event-list .oly-muted {
	display: block;
	font-size: 13px;
}

@media (max-width: 768px) {
	.oly-app .oly-stack-labels,
	.oly-app .oly-stack-labels tbody,
	.oly-app .oly-stack-board,
	.oly-app .oly-stack-board tbody {
		display: block;
		width: 100%;
		min-width: 0;
	}

	.oly-app .oly-stack-labels thead,
	.oly-app .oly-stack-board thead {
		position: absolute;
		width: 1px;
		height: 1px;
		overflow: hidden;
		clip: rect(0, 0, 0, 0);
		white-space: nowrap;
	}

	.oly-app .oly-stack-labels tr {
		display: block;
		padding: 12px 14px;
		border-bottom: 1px solid var(--oly-border-soft);
	}

	.oly-app .oly-stack-labels tbody th,
	.oly-app .oly-stack-labels tbody td {
		display: block;
		padding: 0;
		border: 0 !important;
		text-align: left;
		white-space: normal;
	}

	.oly-app .oly-stack-labels tbody th,
	.oly-app .oly-stack-labels tbody td:first-child {
		margin: 0 0 4px;
		font-weight: 700;
	}

	.oly-app .oly-stack-labels tbody td + td {
		font-size: 14px;
	}

	.oly-app .oly-stack-labels tbody td.oly-num {
		display: inline-block;
		margin: 2px 14px 0 0;
		color: var(--oly-text-secondary);
		font-size: 13px;
	}

	.oly-app .oly-stack-labels tbody td.oly-hide-phone {
		display: none;
	}

	.oly-app .oly-stack-labels td[data-label]::before,
	.oly-app .oly-stack-board td[data-label]::before {
		content: attr(data-label) ": ";
		color: var(--oly-text-muted);
		font-weight: 400;
	}

	.oly-app .oly-stack-board tr {
		display: grid;
		grid-template-columns: auto minmax(0, 1fr) auto;
		gap: 2px 12px;
		align-items: baseline;
		padding: 12px 14px;
		border-bottom: 1px solid var(--oly-border-soft);
	}

	.oly-app .oly-stack-board tbody td {
		display: block;
		padding: 0;
		border: 0 !important;
		text-align: left;
		white-space: normal;
	}

	.oly-app .oly-stack-board td:nth-child(3) {
		text-align: right;
	}

	.oly-app .oly-stack-board td:nth-child(n+4) {
		grid-column: 1 / -1;
		display: inline;
		color: var(--oly-text-secondary);
		font-size: 13px;
	}

	.oly-app .oly-stack-board td:nth-child(4) { grid-row: 2; grid-column: 2; }
	.oly-app .oly-stack-board td:nth-child(5) { grid-row: 3; grid-column: 2; }
	.oly-app .oly-stack-board td:nth-child(6) { grid-row: 4; grid-column: 2; }
}
/* ---- Weightlifting components (built on the tokens above) ----------------- */

/* The ledger can close a page header as well as the hub hero. */
.oly-app .oly-page-head--ledger {
	padding-bottom: 0;
}

.oly-app .oly-page-head .oly-hero-eyebrow {
	margin-bottom: 12px;
}

@media (max-width: 768px) {
	.oly-app .oly-page-head--ledger .oly-ledger {
		margin-inline: -16px;
	}
}

/* Forms: bodybuilding's .bb-form-group, .bb-label, .bb-input and .bb-select. */
.oly-app .oly-form {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
	align-items: end;
	gap: 14px 16px;
	max-width: 820px;
	margin: 0;
}

.oly-app .oly-label {
	display: block;
	margin: 0 0 6px;
	color: var(--oly-text-secondary);
	font-size: 13px;
	font-weight: 600;
}

.oly-app .oly-input,
.oly-app .oly-select {
	display: block;
	width: 100%;
	height: 44px;
	margin: 0;
	padding: 0 12px;
	border: 1px solid var(--oly-border);
	border-radius: var(--oly-radius);
	background: var(--oly-paper);
	color: var(--oly-text-primary);
	font-family: var(--oly-font-body);
	font-size: 16px;
	transition: border-color var(--oly-transition), box-shadow var(--oly-transition);
}

.oly-app .oly-select {
	padding-right: 34px;
	-webkit-appearance: none;
	appearance: none;
	cursor: pointer;
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%235a524a' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");
	background-repeat: no-repeat;
	background-position: right 12px center;
	background-size: 12px;
}

.oly-app .oly-input:focus,
.oly-app .oly-select:focus {
	border-color: var(--oly-primary);
	box-shadow: 0 0 0 3px var(--oly-primary-light);
	outline: none;
}

.oly-app .oly-form .oly-btn {
	width: 100%;
}

.oly-app .oly-hint {
	margin: 10px 0 0;
	color: var(--oly-text-muted);
	font-size: 13px;
}

.oly-app .oly-error {
	margin: 12px 0 0;
	color: var(--oly-oxblood-hover);
	font-weight: 600;
}

/* A tool's form sits on one white surface; on phones it runs flat on the page. */
.oly-app .oly-tool {
	padding: 24px;
	background: var(--oly-surface);
	border: 1px solid var(--oly-border-card);
	border-radius: var(--oly-radius-lg);
}

.oly-app .oly-tool + .oly-tool,
.oly-app .oly-tool + .oly-result {
	margin-top: 16px;
}

@media (max-width: 768px) {
	.oly-app .oly-tool {
		padding: 0;
		background: transparent;
		border: none;
	}
}

/* A calculator's answer: the figure in the mono face, then what it means. */
.oly-app .oly-result {
	margin: 16px 0 0;
	padding: 24px;
	background: var(--oly-surface);
	border: 1px solid var(--oly-ink);
	border-radius: var(--oly-radius-lg);
}

.oly-app .oly-result-label {
	display: block;
	margin: 0 0 6px;
	color: var(--oly-text-muted);
	font-family: var(--oly-font-mono);
	font-size: 11px;
	letter-spacing: 0.14em;
	text-transform: uppercase;
}

.oly-app .oly-result-figure {
	display: block;
	margin: 0 0 10px;
	color: var(--oly-ink);
	font-family: var(--oly-font-mono);
	font-size: clamp(2rem, 5vw, 2.75rem);
	font-weight: 500;
	line-height: 1;
	letter-spacing: -0.02em;
}

.oly-app .oly-result p {
	margin: 0 0 8px;
	max-width: 760px;
}

.oly-app .oly-result p:last-child {
	margin-bottom: 0;
}

.oly-app .oly-result .oly-table-wrap {
	margin: 14px 0 16px;
}

@media (max-width: 768px) {
	.oly-app .oly-result {
		padding: 18px 16px;
	}

	/* Phones: one surface level. The score table reads as rows inside the result card. */
	.oly-app .oly-result .oly-table-wrap {
		background: transparent;
		border: none;
		border-radius: 0;
	}
}

/* Attempts: a miss is struck through and muted, never colour alone. */
.oly-app .oly-att {
	font-family: var(--oly-font-mono);
}

/* Muted, not faint: a missed weight is still a figure to read (6:1 on white; the lighter grey failed 4.5:1). */
.oly-app .oly-miss {
	color: var(--oly-text-muted);
	text-decoration: line-through;
	text-decoration-thickness: 1px;
}

.oly-app .oly-table .oly-total {
	color: var(--oly-ink);
	font-weight: 600;
}

/* Podium places: the number on a tint, gold, silver and bronze in flat fills. */
.oly-app .oly-place-chip {
	min-width: 32px;
	padding: 5px 8px;
	font-family: var(--oly-font-mono);
}

.oly-app .oly-place-chip--1 {
	background: #f1dfa6;
	color: #4d3a00;
}

.oly-app .oly-place-chip--2 {
	background: #e2e2de;
	color: #34332f;
}

.oly-app .oly-place-chip--3 {
	background: #ecd3bd;
	color: #5c3315;
}

/* Medal counts: gold-silver-bronze as three small figures. */
.oly-app .oly-medals {
	display: inline-flex;
	gap: 4px;
	font-family: var(--oly-font-mono);
	font-size: 12px;
	white-space: nowrap;
}

.oly-app .oly-medal {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 24px;
	height: 22px;
	padding: 0 5px;
	border-radius: var(--oly-radius-sm);
	background: var(--oly-gray-100);
	color: var(--oly-text-muted);
}

.oly-app .oly-medal--g { background: #f1dfa6; color: #4d3a00; }
.oly-app .oly-medal--s { background: #e2e2de; color: #34332f; }
.oly-app .oly-medal--b { background: #ecd3bd; color: #5c3315; }

/* Wide result tables: place and lifter stay put while the attempts scroll. */
.oly-app .oly-table--sticky {
	min-width: 760px;
}

/* The second header row holds the attempt numbers; only the first row and the body stay put. */
.oly-app .oly-table--sticky thead tr:first-child > :nth-child(-n+2),
.oly-app .oly-table--sticky tbody tr > :nth-child(-n+2) {
	position: sticky;
	z-index: 1;
	background: var(--oly-surface);
}

.oly-app .oly-table--sticky thead tr:first-child > :first-child,
.oly-app .oly-table--sticky tbody tr > :first-child {
	left: 0;
	width: 56px;
	min-width: 56px;
}

.oly-app .oly-table--sticky thead tr:first-child > :nth-child(2),
.oly-app .oly-table--sticky tbody tr > :nth-child(2) {
	left: 56px;
	min-width: 180px;
	box-shadow: 1px 0 0 var(--oly-border);
}

.oly-app .oly-table--sticky tbody tr:hover > :nth-child(-n+2) {
	background: var(--oly-gray-50);
}

.oly-app .oly-table .oly-group-start {
	border-left: 1px solid var(--oly-border) !important;
}

/* "Snatch" and "Clean and jerk" over their three attempts. */
.oly-app .oly-table thead .oly-group-head {
	padding-bottom: 4px;
	border-bottom: 1px solid var(--oly-border) !important;
	text-align: center;
}

.oly-app .oly-table thead .oly-thead-attempts th {
	padding-top: 6px;
}

@media (max-width: 768px) {
	.oly-app .oly-table--sticky thead tr:first-child > :first-child,
	.oly-app .oly-table--sticky tbody tr > :first-child {
		width: 48px;
		min-width: 48px;
	}

	.oly-app .oly-table--sticky thead tr:first-child > :nth-child(2),
	.oly-app .oly-table--sticky tbody tr > :nth-child(2) {
		left: 48px;
		min-width: 168px;
	}
}

/* Swipe cue above a table that scrolls sideways on narrow screens. */
.oly-app .oly-scroll-note {
	display: none;
	margin: 0 0 8px;
	color: var(--oly-text-muted);
	font-size: 13px;
}

@media (max-width: 900px) {
	.oly-app .oly-scroll-note {
		display: block;
	}
}

/* Jump links along a long page (classes on a meet, years on the index). */
.oly-app .oly-jump {
	margin: 0 0 24px;
}

.oly-app .oly-jump .oly-chip-row {
	margin: 0;
}

.oly-app .oly-jump-label {
	display: block;
	margin: 0 0 8px;
	color: var(--oly-text-muted);
	font-family: var(--oly-font-mono);
	font-size: 11px;
	letter-spacing: 0.14em;
	text-transform: uppercase;
}

/* Small label chips inside rows and cells: "Olympic", "Junior", "Worlds". */
.oly-app .oly-tag {
	display: inline-flex;
	align-items: center;
	padding: 2px 7px;
	border: 1px solid var(--oly-border);
	border-radius: var(--oly-radius-sm);
	background: var(--oly-gray-50);
	color: var(--oly-text-secondary);
	font-family: var(--oly-font-mono);
	font-size: 10.5px;
	font-weight: 500;
	letter-spacing: 0.08em;
	line-height: 1.5;
	text-transform: uppercase;
	white-space: nowrap;
	vertical-align: 1px;
}

.oly-app .oly-tag--olympic {
	border-color: rgba(168, 55, 42, 0.35);
	background: var(--oly-primary-light);
	color: var(--oly-oxblood-hover);
}

/* Explainer pairs (the two lifts, how scoring works). */
.oly-app .oly-explain {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
	gap: 16px;
}

.oly-app .oly-explain .oly-card {
	padding: 20px 22px;
}

.oly-app .oly-explain .oly-card h3 {
	margin: 0 0 8px;
	font-size: 18px;
}

.oly-app .oly-explain .oly-card p {
	margin: 0;
	color: var(--oly-text-secondary);
}

@media (max-width: 768px) {
	.oly-app .oly-explain {
		gap: 0;
		border-top: 1px solid var(--oly-border-soft);
	}

	.oly-app .oly-explain .oly-card {
		padding: 14px 0;
		background: transparent;
		border: none;
		border-bottom: 1px solid var(--oly-border-soft);
		border-radius: 0;
	}
}

/* Two tables side by side (men and women) from 900px. */
.oly-app .oly-pair {
	display: grid;
	gap: 24px;
}

@media (min-width: 900px) {
	.oly-app .oly-pair {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}

.oly-app .oly-pair-title {
	margin: 0 0 10px;
	font-size: 16px;
	font-weight: 700;
}

/* Old-to-new class map: one block per earlier list, each with men and women side by side. */
.oly-app .oly-map-list {
	margin: 28px 0 12px;
}

.oly-app .oly-section-intro + .oly-map-list {
	margin-top: 8px;
}

/* Old-to-new class map: one line per class today, with the bodyweights it takes from the old class. */
.oly-app .oly-map-to {
	display: block;
}

.oly-app .oly-map-to + .oly-map-to {
	margin-top: 4px;
}

.oly-app .oly-map-to .oly-tag {
	margin-left: 4px;
	vertical-align: 1px;
}

/* A horizontal bar for a share or a percentile, flat fill. */
.oly-app .oly-bar {
	position: relative;
	height: 10px;
	margin: 8px 0 4px;
	background: var(--oly-gray-100);
	border-radius: var(--oly-radius-full);
	overflow: hidden;
}

.oly-app .oly-bar > span {
	position: absolute;
	inset: 0 auto 0 0;
	background: var(--oly-ink);
	border-radius: var(--oly-radius-full);
}

.oly-app .oly-bar--primary > span {
	background: var(--oly-primary);
}

/* Paired share bars on a study (national against elite): one row per attempt, figure at the end. */
.oly-app .oly-pairs-key {
	display: flex;
	flex-wrap: wrap;
	gap: 6px 20px;
	margin: 0 0 8px;
	color: var(--oly-text-secondary);
	font-size: 13px;
}

.oly-app .oly-pairs-swatch {
	display: inline-block;
	width: 12px;
	height: 12px;
	margin-right: 6px;
	background: var(--oly-ink);
	border-radius: 2px;
	vertical-align: -1px;
}

.oly-app .oly-pairs-swatch--primary {
	background: var(--oly-primary);
}

.oly-app .oly-pairs-row {
	display: grid;
	grid-template-columns: 170px 1fr;
	gap: 4px 16px;
	align-items: center;
	padding: 10px 0;
	border-top: 1px solid var(--oly-border);
}

.oly-app .oly-pairs-label {
	margin: 0;
	color: var(--oly-text-primary);
	font-size: 14px;
	font-weight: 600;
}

.oly-app .oly-pairs-line {
	display: grid;
	grid-template-columns: 1fr 52px;
	gap: 10px;
	align-items: center;
}

.oly-app .oly-pairs-line .oly-bar {
	margin: 3px 0;
}

.oly-app .oly-pairs-value {
	color: var(--oly-text-secondary);
	font-family: var(--oly-font-mono);
	font-size: 13px;
	text-align: right;
	white-space: nowrap;
}

@media (max-width: 600px) {
	.oly-app .oly-pairs-row {
		grid-template-columns: 1fr;
	}
}

/* Inline SVG charts (career totals, distributions), drawn server-side. */
.oly-app .oly-chart {
	display: block;
	width: 100%;
	height: auto;
	margin: 0;
}

.oly-app .oly-chart-wrap {
	padding: 16px 16px 8px;
	background: var(--oly-surface);
	border: 1px solid var(--oly-border-card);
	border-radius: var(--oly-radius-lg);
}

.oly-app .oly-chart-caption {
	margin: 8px 0 0;
	color: var(--oly-text-muted);
	font-size: 13px;
}

@media (max-width: 768px) {
	.oly-app .oly-chart-wrap {
		padding: 8px 0 0;
		background: transparent;
		border: none;
	}
}

/* Key facts as label and value rows (profile facts, meet facts). */
.oly-app .oly-facts {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));
	gap: 0 24px;
	margin: 0;
	border-top: 1px solid var(--oly-border-soft);
}

.oly-app .oly-facts > div {
	padding: 12px 0;
	border-bottom: 1px solid var(--oly-border-soft);
}

.oly-app .oly-facts dt {
	margin: 0 0 2px;
	color: var(--oly-text-muted);
	font-family: var(--oly-font-mono);
	font-size: 11px;
	letter-spacing: 0.12em;
	text-transform: uppercase;
}

.oly-app .oly-facts dd {
	margin: 0;
	color: var(--oly-ink);
	font-weight: 600;
}

/* Six tiles fill two rows of three from 1024px. */
@media (min-width: 1024px) {
	.oly-app .oly-tiles--3 {
		grid-template-columns: repeat(3, minmax(0, 1fr));
	}
}

.oly-app .oly-hub-tool {
	margin-top: 20px;
}

.oly-app .oly-tool .oly-subheading {
	margin-bottom: 14px;
}

.oly-app .oly-class-chips .oly-chip {
	gap: 6px;
	color: var(--oly-ink);
}

/* Wide tables whose first column names the row (a profile's competitions): it stays put. */
.oly-app .oly-table--sticky1 {
	min-width: 880px;
}

.oly-app .oly-table--sticky1 th:first-child,
.oly-app .oly-table--sticky1 td:first-child {
	position: sticky;
	left: 0;
	z-index: 1;
	min-width: 230px;
	background: var(--oly-surface);
	box-shadow: 1px 0 0 var(--oly-border);
}

.oly-app .oly-table--sticky1 tbody tr:hover > :first-child {
	background: var(--oly-gray-50);
}

/* A sticky first column that holds a short label (a weight class): no reserved width. */
.oly-app .oly-table--sticky1.oly-table--short1 {
	min-width: 0;
}

.oly-app .oly-table--sticky1.oly-table--short1 th:first-child,
.oly-app .oly-table--sticky1.oly-table--short1 td:first-child {
	min-width: 0;
	max-width: none;
	white-space: nowrap;
}

/* A long ranking opens its lower rows on request: the toggle reads as a link, not a box. */
.oly-app .oly-more-rows {
	margin-top: 12px;
}

.oly-app .oly-more-rows > summary {
	display: inline-block;
	padding: 8px 0;
	color: var(--oly-primary);
	font-weight: 600;
	cursor: pointer;
	list-style: none;
}

.oly-app .oly-more-rows > summary::-webkit-details-marker {
	display: none;
}

.oly-app .oly-more-rows > summary::after {
	content: " +";
}

.oly-app .oly-more-rows[open] > summary::after {
	content: " -";
}

.oly-app .oly-more-rows[open] > summary {
	margin-bottom: 8px;
}

/* Rules: the two-column disc table needs no more than a narrow column. */
.oly-app .oly-rules-discs {
	max-width: 420px;
}

/* Prilepin's chart: the filled-in zones sit under the form as their own block, no box around the table. */
.oly-app .oly-prilepin-result {
	margin-top: 28px;
}

/* A subheading after a chart starts a new block, not a caption line. */
.oly-app .oly-chart-wrap + .oly-subheading {
	margin-top: 32px;
}

/* Long column labels ("Clean and jerk") may wrap on a phone so the figures fit without a sideways swipe. */
@media (max-width: 600px) {
	.oly-app .oly-table--wraphead thead th,
	.oly-app .oly-table--wraphead thead th.oly-num {
		white-space: normal;
	}
}

@media (max-width: 768px) {
	.oly-app .oly-table--sticky1 th:first-child,
	.oly-app .oly-table--sticky1 td:first-child {
		min-width: 170px;
		max-width: 200px;
		white-space: normal;
	}
}

/* A flag inside the ink band's eyebrow. */
.oly-app .oly-hero-eyebrow .oly-flag {
	margin-right: 6px;
	border-color: rgba(255, 253, 248, 0.25);
	vertical-align: -3px;
}

/* A career chart sits under the medal lines. */
.oly-app .oly-profile .oly-chart-wrap {
	margin: 20px 0 0;
}

/* The figures along a page header span the whole band, not the 860px text measure. */
.oly-app .oly-page-head > .oly-ledger {
	max-width: none;
}

/* Charts fill their card: the template draws a wide version and a phone version of each. */
.oly-app .oly-chart {
	width: 100%;
	max-width: none;
}

/* Record standards read as targets, not records. */
.oly-app .oly-standard-row .oly-num {
	color: var(--oly-text-muted);
}

/* Ranking tables fit a phone: smaller medal figures and tighter cells. */
@media (max-width: 768px) {
	.oly-app .oly-medal {
		min-width: 20px;
		height: 20px;
		padding: 0 3px;
		font-size: 11px;
	}

	.oly-app .oly-medals {
		gap: 2px;
	}

	.oly-app .oly-ranking th,
	.oly-app .oly-ranking td {
		padding-inline: 8px !important;
	}
}

/* The scorer's six fields sit on one row on wide screens. */
.oly-app .oly-scorer .oly-form {
	max-width: none;
	grid-template-columns: repeat(auto-fit, minmax(130px, 1fr));
}

.oly-app .oly-constants th[scope="row"],
.oly-app .oly-result-table th[scope="row"] {
	white-space: nowrap;
}

/* The archive's date column stays narrow; the name column carries the kind beneath it. */
.oly-app .oly-archive td:first-child {
	width: 90px;
}

.oly-app .oly-year-block + .oly-year-block {
	margin-top: 28px;
}

.oly-app .oly-year-count {
	margin-left: 8px;
	font-size: 13px;
	font-weight: 500;
}

.oly-app .oly-class-block {
	margin-top: 40px;
	/* The 2023 Worlds holds 692 lifters in 20 class tables (17,000 elements): tables off screen are not
	   drawn until they near the viewport. Find-in-page, links and anchors still reach them. */
	content-visibility: auto;
	contain-intrinsic-size: auto 900px;
}

/* A jump to a class lands on its heading only when every block above it has its real height:
   oly-nav.js draws those blocks just before an in-page link or a deep link scrolls. */
.oly-app .oly-class-block.is-drawn {
	content-visibility: visible;
}

/* A jump target clears the 53px sticky nav, with a little air. A heading under an eyebrow clears
   it with the eyebrow (17px line and 10px gap) in view. */
.oly-app [id] {
	scroll-margin-top: 64px;
}

.oly-app .oly-eyebrow + [id] {
	scroll-margin-top: 91px;
}

/* Running text inside a section: a readable measure. */
.oly-app .oly-prose p,
.oly-app .oly-section > p:not([class]) {
	max-width: 820px;
	margin: 0 0 14px;
	font-size: 16px;
	line-height: 1.65;
}

.oly-app .oly-prose p:last-child {
	margin-bottom: 0;
}

/* Lists in running text keep their bullets inside the page gutter. */
.oly-app .oly-prose ul {
	max-width: 820px;
	margin: 0 0 14px;
	padding-left: 1.25em;
	font-size: 16px;
	line-height: 1.6;
}

.oly-app .oly-prose li + li {
	margin-top: 6px;
}

.oly-app .oly-prose ul:last-child {
	margin-bottom: 0;
}

/* Follow and Share under a page's H1, on the ink band (bodybuilding's outline hero buttons). */
.oly-app .oly-actions {
	display: flex;
	flex-wrap: wrap;
	gap: 10px;
	margin: 18px 0 0;
}

.oly-app .oly-btn--on-dark {
	border-color: rgba(250, 246, 239, 0.5);
	background: transparent;
	color: var(--oly-on-dark);
}

.oly-app .oly-btn--on-dark:hover,
.oly-app .oly-btn--on-dark[aria-expanded="true"] {
	border-color: var(--oly-on-dark);
	color: var(--oly-on-dark);
}

.oly-app .oly-btn--on-dark.is-following {
	border-color: var(--oly-on-dark);
	background: var(--oly-on-dark);
	color: var(--oly-ink);
}

.oly-app .oly-btn--on-dark.is-following svg {
	fill: currentColor;
}

.oly-app .oly-btn[disabled],
.oly-app .oly-btn[aria-disabled="true"] {
	cursor: default;
	opacity: 0.7;
}

.oly-app .oly-share {
	position: relative;
}

.oly-app .oly-share-menu {
	position: absolute;
	top: calc(100% + 6px);
	left: 0;
	z-index: 20;
	min-width: 200px;
	margin: 0;
	padding: 6px 0;
	list-style: none;
	background: var(--oly-surface);
	border: 1px solid var(--oly-border);
	border-radius: var(--oly-radius);
	box-shadow: var(--oly-shadow-lg);
	--oly-focus-ring: 2px solid var(--oly-primary);
}

.oly-app .oly-share-menu[hidden] {
	display: none;
}

.oly-app .oly-share-menu li {
	margin: 0;
}

.oly-app .oly-page-head .oly-share-menu a,
.oly-app .oly-share-menu a,
.oly-app .oly-share-menu button {
	display: block;
	width: 100%;
	min-height: 44px;
	padding: 12px 16px;
	border: 0;
	background: none;
	color: var(--oly-ink);
	font: inherit;
	font-size: 14px;
	font-weight: 500;
	line-height: 20px;
	text-align: left;
	text-decoration: none;
	cursor: pointer;
}

.oly-app .oly-page-head .oly-share-menu a:hover,
.oly-app .oly-share-menu a:hover,
.oly-app .oly-share-menu button:hover,
.oly-app .oly-share-menu a:focus-visible,
.oly-app .oly-share-menu button:focus-visible {
	background: var(--oly-tint);
	color: var(--oly-ink);
}

/* Buttons side by side (sign in, create account). */
.oly-app .oly-btn-row {
	display: flex;
	flex-wrap: wrap;
	gap: 10px;
	margin: 16px 0 0;
}

/* A text button inside a table row (remove a saved lift). */
.oly-app .oly-link-btn {
	padding: 0;
	border: 0;
	background: none;
	color: var(--oly-primary);
	font: inherit;
	font-weight: 600;
	cursor: pointer;
}

.oly-app .oly-link-btn:hover {
	color: var(--oly-primary-hover);
	text-decoration: underline;
}

/* Records table: the figure, then the holder, then when and where. */
.oly-app .oly-records td {
	min-width: 200px;
}

.oly-app .oly-record-kg {
	display: block;
	color: var(--oly-ink);
	font-family: var(--oly-font-mono);
	font-size: 16px;
	font-weight: 600;
}

.oly-app .oly-record-holder {
	display: block;
	margin-top: 2px;
}

.oly-app .oly-history-title {
	margin-top: 28px;
}

.oly-app .oly-history td {
	min-width: 120px;
}

/* A long list of linked names, in columns on wide screens. */
.oly-app .oly-name-list {
	columns: 4 200px;
	column-gap: 24px;
	margin: 0;
	padding: 0;
	list-style: none;
}

.oly-app .oly-name-list li {
	break-inside: avoid;
	margin: 0;
	padding: 6px 0;
	border-bottom: 1px solid var(--oly-border-soft);
}

/* Menus and hover fades stop moving for readers who ask the system for less motion. */
@media (prefers-reduced-motion: reduce) {
	.oly-app *,
	.oly-app *::before,
	.oly-app *::after {
		transition-duration: 0.01ms !important;
		animation-duration: 0.01ms !important;
		scroll-behavior: auto !important;
	}
}
