/**
 * Journal Pulse theme for OJS 3.5
 * Loaded after the parent (default) theme stylesheet, so these rules win.
 * Accent colour comes from --jm-accent (theme option).
 *
 * Breakpoints: the parent theme switches between the burger menu and the
 * desktop menu at 992px (its script depends on that value), so this theme
 * uses the same value. The main menu is one line from 1360px; between 992px
 * and 1359px it moves to its own line under the journal name.
 */

@import url("https://fonts.googleapis.com/css2?family=Manrope:wght@400;600;800&family=IBM+Plex+Mono:wght@500&display=swap");

:root {
	--jm-accent: #C2410C;
	--jm-ink: #141414;
	--jm-ink-soft: #4A4A4A;
	--jm-line: #E4E4E4;
	--jm-neutral: #F4F5F7;
	--jm-dark: #0A0A0A;
	--jm-container: 1560px;
	--jm-gutter: clamp(20px, 4vw, 56px);
	--jm-mono: "IBM Plex Mono", ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
}

/* ---------- Base ---------- */

body {
	font-family: "Manrope", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
	color: var(--jm-ink);
	background: #fff;
	-webkit-font-smoothing: antialiased;
}

a {
	color: var(--jm-accent);
}

a:focus-visible,
button:focus-visible {
	outline: 3px solid var(--jm-accent);
	outline-offset: 2px;
}

.jm_mono {
	font-family: var(--jm-mono);
	font-weight: 500;
}

.jm_accent {
	color: var(--jm-accent);
}

.jm_screen_reader {
	position: absolute;
	width: 1px;
	height: 1px;
	margin: -1px;
	padding: 0;
	overflow: hidden;
	clip: rect(0, 0, 0, 0);
	white-space: nowrap;
	border: 0;
}

/* Skip links: invisible, shown only to keyboard users. Parked past the start
   edge: on right-to-left pages a box past the left edge widens the page and
   phones zoom out to fit it. */
.cmp_skip_to_content {
	position: absolute;
	top: 0;
	inset-inline-start: -9999px;
	z-index: 10000;
	padding: 8px;
	background: #fff;
	box-shadow: 0 4px 20px rgba(0, 0, 0, 0.2);
}

.cmp_skip_to_content:focus-within {
	inset-inline-start: 8px;
	top: 8px;
}

.cmp_skip_to_content a {
	display: block;
	padding: 6px 10px;
	color: var(--jm-ink);
	font-weight: 600;
}

/* ---------- Layout: fluid, no fixed widths, no sidebar ---------- */

.pkp_structure_page {
	max-width: none;
	width: 100%;
	margin: 0;
	box-shadow: none;
	overflow-x: clip;
}

.pkp_site_name_wrapper,
.pkp_navigation_primary_wrapper,
.pkp_navigation_user,
.pkp_search_mobile,
.pkp_structure_content,
.pkp_structure_footer,
.has_site_logo .pkp_head_wrapper,
.has_site_logo .pkp_site_name,
.has_site_logo .pkp_navigation_primary_wrapper {
	width: auto;
	max-width: none;
}

.pkp_site_name_wrapper,
.pkp_navigation_primary_wrapper {
	margin-left: 0;
	margin-right: 0;
	padding-left: 0;
	padding-right: 0;
}

.pkp_structure_main::before,
.pkp_structure_main::after {
	display: none;
}

.pkp_structure_content,
.pkp_structure_head .pkp_head_wrapper,
.jm_topbar_inner,
.pkp_structure_footer,
.jm_wrap {
	max-width: var(--jm-container);
	margin-left: auto;
	margin-right: auto;
	padding-left: var(--jm-gutter);
	padding-right: var(--jm-gutter);
	box-sizing: border-box;
}

.pkp_structure_content {
	display: block;
	padding-top: 24px;
	padding-bottom: 64px;
}

.pkp_structure_content::before,
.pkp_structure_content::after {
	display: none;
}

.pkp_structure_main {
	display: block;
	float: none;
	width: auto;
	min-width: 0;
	padding: 0;
	margin: 0;
}

/* The home page is made of full-width bands, so it needs no container */
.pkp_page_index .pkp_structure_content {
	max-width: none;
	padding: 0;
}

/* Text pages keep a readable line length; list pages use the full width. The editorial
   team (a static page at about/editorialTeam since OJS 3.5 dropped it) lists people */
.pkp_structure_main > .page {
	max-width: 1080px;
}

.pkp_page_article .pkp_structure_main > .page,
.pkp_page_issue .pkp_structure_main > .page,
.pkp_page_search .pkp_structure_main > .page,
.pkp_page_catalog .pkp_structure_main > .page,
.pkp_op_editorialTeam .pkp_structure_main > .page {
	max-width: none;
}

/* ---------- Header: top bar ---------- */

.pkp_structure_head {
	background: #fff;
	border-bottom: 1px solid var(--jm-line);
}

.jm_topbar {
	position: relative;
	z-index: 20;
	background: var(--jm-neutral);
	border-bottom: 1px solid var(--jm-line);
	font-size: 13px;
}

.jm_topbar_inner {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 12px;
	min-height: 38px;
}

.jm_topbar_issn {
	font-family: var(--jm-mono);
	font-weight: 500;
	color: var(--jm-ink-soft);
	white-space: nowrap;
}

.jm_topbar_right {
	display: flex;
	align-items: center;
	gap: 8px 16px;
	min-width: 0;
}

.jm_lang {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 1px;
}

/* Language switcher: globe on the left, language buttons on the right */
.jm_lang {
	display: flex;
	flex-direction: row;
	align-items: center;
	gap: 6px;
}

/* Globe icon */
.jm_lang_icon {
	display: block;
	flex: 0 0 16px;
	width: 16px;
	height: 16px;
	color: var(--jm-ink-soft);
}

/* Language buttons container */
.jm_lang ul {
	display: flex;
	flex-direction: row;
	align-items: center;
	gap: 2px;
	margin: 0;
	padding: 0;
	list-style: none;
}

/* Language button item */
.jm_lang li {
	margin: 0;
	padding: 0;
}

/* Language button */
.jm_lang a {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	padding: 4px 10px;
	border-radius: 999px;
	color: var(--jm-ink);
	font-weight: 700;
	line-height: 1;
	text-decoration: none;
	white-space: nowrap;
}

/* Language button hover state */
.jm_lang a:hover {
	background: #fff;
}

/* Current language */
.jm_lang a.is_current {
	background: var(--jm-ink);
	color: #fff;
}

/* User menu (login, dashboard, profile, logout) as a compact dropdown */
.jm_topbar .jm_user {
	position: relative;
}

.jm_topbar .jm_user ul.pkp_navigation_user {
	display: flex;
	align-items: center;
	gap: 2px;
	margin: 0;
	padding: 0;
	border: 0;
	list-style: none;
	text-align: start;
}

.jm_topbar .jm_user ul.pkp_navigation_user > li {
	position: relative;
	display: block;
	margin: 0;
}

.jm_topbar .jm_user ul.pkp_navigation_user > li > a {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	padding: 5px 10px;
	border-radius: 6px;
	color: var(--jm-ink);
	font-size: 13px;
	font-weight: 700;
	line-height: 1.3;
	text-decoration: none;
}

.jm_topbar .jm_user ul.pkp_navigation_user > li > a:hover,
.jm_topbar .jm_user ul.pkp_navigation_user > li > a:focus {
	background: #fff;
	color: var(--jm-ink);
}

.jm_topbar .jm_user ul.pkp_navigation_user [aria-haspopup]::after {
	content: "";
	width: 0;
	height: 0;
	border-top: 4px solid currentColor;
	border-right: 4px solid transparent;
	border-left: 4px solid transparent;
}

/* Numbers of pending tasks are shown only inside the dropdown */
.jm_topbar .jm_user .task_count {
	display: none;
}

.jm_topbar .jm_user ul.pkp_navigation_user ul {
	position: absolute !important;
	top: 100% !important;
	inset-inline-end: 0 !important;
	inset-inline-start: auto !important;
	transform: none !important;
	z-index: 2000;
	display: none;
	min-width: 13rem;
	width: auto;
	margin: 4px 0 0;
	padding: 6px;
	list-style: none;
	background: #fff;
	border: 1px solid var(--jm-line);
	border-radius: 10px;
	box-shadow: 0 12px 32px rgba(0, 0, 0, 0.12);
}

.jm_topbar .jm_user ul.pkp_navigation_user > li:hover > ul,
.jm_topbar .jm_user ul.pkp_navigation_user > li:focus-within > ul,
.jm_topbar .jm_user ul.pkp_navigation_user ul.show {
	display: block;
}

.jm_topbar .jm_user ul.pkp_navigation_user ul li {
	display: block;
	margin: 0;
}

.jm_topbar .jm_user ul.pkp_navigation_user ul a {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 12px;
	padding: 8px 12px;
	border: 0;
	border-radius: 6px;
	color: var(--jm-ink);
	font-size: 14px;
	font-weight: 600;
	text-decoration: none;
}

.jm_topbar .jm_user ul.pkp_navigation_user ul a:hover,
.jm_topbar .jm_user ul.pkp_navigation_user ul a:focus {
	background: var(--jm-neutral);
	outline: 0;
}

.jm_topbar .jm_user ul.pkp_navigation_user ul .task_count {
	display: inline-block;
	min-width: 22px;
	height: 22px;
	margin: 0;
	padding: 0 6px;
	border-radius: 11px;
	background: var(--jm-accent);
	color: #fff;
	font-size: 12px;
	line-height: 22px;
	text-align: center;
	box-sizing: border-box;
}

/* ---------- Header: journal name, main menu, burger ---------- */

.pkp_site_name .is_text {
	color: var(--jm-ink);
	font-weight: 800;
	letter-spacing: -0.01em;
}

.pkp_site_nav_toggle {
	box-shadow: none;
}

.pkp_navigation_primary_wrapper .jm_cta,
.jm_cta {
	display: inline-block;
	margin-inline-start: 12px;
	padding: 10px 18px;
	border-radius: 8px;
	background: var(--jm-accent);
	color: #fff !important;
	font-weight: 700;
	font-size: 14px;
	line-height: 1.2;
	text-decoration: none !important;
	white-space: nowrap;
}

.pkp_navigation_primary_wrapper .jm_cta:hover,
.pkp_navigation_primary_wrapper .jm_cta:focus {
	background: var(--jm-ink);
}

/* Small screens: burger menu, panel under the header */
@media (max-width: 991px) {
	.jm_cta_desktop {
		display: none;
	}

	.pkp_structure_head .pkp_head_wrapper {
		padding-top: 0;
		padding-bottom: 0;
	}

	.pkp_site_nav_menu {
		padding: 12px var(--jm-gutter) 20px;
		border-top: 1px solid var(--jm-line);
		box-shadow: 0 16px 32px rgba(0, 0, 0, 0.12);
		max-height: calc(100vh - 80px);
		overflow-y: auto;
	}

	.pkp_site_nav_menu .pkp_navigation_primary > li > a {
		display: block;
		padding: 10px 0;
		font-weight: 600;
		border-bottom: 1px solid var(--jm-line);
	}

	.pkp_site_nav_menu ul ul a {
		padding-inline-start: 12px;
		font-weight: 400;
	}

	.pkp_navigation_primary_wrapper .jm_cta_mobile {
		display: block;
		margin: 16px 0 0;
		padding: 14px 18px;
		text-align: center;
	}

	.pkp_site_name .is_text {
		font-size: 17px;
	}
}

/* Wide screens: first line is the journal name and the button, second line is the one-line menu */
@media (min-width: 992px) {
	.pkp_navigation_primary_wrapper .jm_cta_mobile {
		display: none;
	}

	.pkp_structure_head .pkp_head_wrapper {
		display: flex;
		flex-wrap: wrap;
		align-items: center;
		justify-content: space-between;
		gap: 0 32px;
		padding-top: 16px;
		padding-bottom: 0;
	}

	.pkp_site_name_wrapper {
		flex: 1 1 auto;
		height: auto;
	}

	.pkp_site_name {
		position: static;
		width: auto;
		padding: 0;
		font-size: 1rem;
		white-space: normal;
	}

	.pkp_site_name .is_text {
		font-size: 24px;
		line-height: 1.2;
	}

	.jm_cta_desktop {
		flex: 0 0 auto;
		margin-inline-start: 0;
	}

	.pkp_site_nav_menu {
		display: block;
		position: static;
		flex: 1 1 100%;
		min-width: 0;
		width: auto;
		margin-top: 12px;
		padding: 0;
		background: transparent;
		border-top: 1px solid var(--jm-line);
	}

	.pkp_navigation_primary_row {
		display: block;
	}

	.pkp_navigation_primary_wrapper {
		display: block;
	}

	.pkp_navigation_primary_wrapper .pkp_navigation_primary {
		display: flex;
		flex-wrap: wrap;
		align-items: center;
		gap: 0 clamp(14px, 1.7vw, 32px);
		max-width: none;
		margin: 0;
		padding: 0;
		text-align: start;
	}

	.pkp_site_nav_menu .pkp_navigation_primary > li {
		display: block;
		margin: 0;
	}

	.pkp_site_nav_menu .pkp_navigation_primary > li:first-child > a,
	.pkp_site_nav_menu .pkp_navigation_primary > li:last-child > a {
		margin-left: 0;
		margin-right: 0;
	}

	.pkp_site_nav_menu .pkp_navigation_primary > li > a {
		display: block;
		margin: 0;
		padding: 14px 0 12px;
		border-bottom: 2px solid transparent;
		color: var(--jm-ink);
		font-size: 14px;
		font-weight: 600;
		line-height: 1.3;
		white-space: nowrap;
	}

	.pkp_site_nav_menu .pkp_navigation_primary > li > a:hover,
	.pkp_site_nav_menu .pkp_navigation_primary > li > a:focus {
		border-bottom-color: var(--jm-accent);
		background: transparent;
		color: var(--jm-ink);
		outline: 0;
	}

	/* Submenus of the main menu */
	.pkp_site_nav_menu .pkp_navigation_primary ul {
		position: absolute !important;
		top: 100% !important;
		inset-inline-start: 0 !important;
		inset-inline-end: auto !important;
		transform: none !important;
		display: none;
		z-index: 2000;
		min-width: 14rem;
		width: auto;
		padding: 6px;
		background: #fff;
		border: 1px solid var(--jm-line);
		border-radius: 10px;
		box-shadow: 0 12px 32px rgba(0, 0, 0, 0.12);
	}

	.pkp_site_nav_menu .pkp_navigation_primary > li:hover > ul,
	.pkp_site_nav_menu .pkp_navigation_primary > li:focus-within > ul,
	.pkp_site_nav_menu .pkp_navigation_primary ul.show {
		display: block;
	}

	.pkp_site_nav_menu .pkp_navigation_primary ul a {
		display: block;
		padding: 8px 12px;
		border: 0;
		border-radius: 6px;
		color: var(--jm-ink);
		font-size: 14px;
		font-weight: 600;
		white-space: normal;
	}

	.pkp_site_nav_menu .pkp_navigation_primary ul a:hover,
	.pkp_site_nav_menu .pkp_navigation_primary ul a:focus {
		background: var(--jm-neutral);
		outline: 0;
	}
}

@media (min-width: 992px) and (max-width: 1279px) {
	.pkp_site_nav_menu .pkp_navigation_primary > li > a {
		font-size: 13px;
	}
}

/* ---------- Home: shared pieces ---------- */

.jm_home {
	margin: 0;
}

.jm_eyebrow {
	margin: 0 0 14px;
	font-size: 12px;
	font-weight: 800;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	color: var(--jm-accent);
}

.jm_eyebrow .jm_mono {
	margin-inline-start: 4px;
	letter-spacing: 0.06em;
}

.jm_eyebrow_muted {
	color: var(--jm-ink-soft);
}

.jm_eyebrow_light {
	color: #C9C9C9;
}

.jm_home h2 {
	margin: 0;
	font-size: clamp(26px, 3vw, 38px);
	font-weight: 800;
	line-height: 1.15;
	letter-spacing: -0.02em;
	color: inherit;
}

.jm_block {
	padding-top: clamp(40px, 6vw, 72px);
	padding-bottom: clamp(40px, 6vw, 72px);
}

.jm_source {
	margin: 14px 0 0;
	font-family: var(--jm-mono);
	font-size: 12px;
	line-height: 1.5;
	color: #5A5A5A;
}

/* IBM Plex Mono has no Arabic or Hebrew letters, which then fall back to a
   typewriter face: right-to-left notes use the text font */
[dir="rtl"] .jm_source {
	font-family: inherit;
}

.jm_btn {
	display: inline-block;
	padding: 14px 24px;
	border: 2px solid var(--jm-ink);
	border-radius: 8px;
	font-size: 15px;
	font-weight: 700;
	line-height: 1.2;
	text-decoration: none;
}

.jm_btn_primary {
	background: var(--jm-ink);
	color: #fff;
}

.jm_btn_primary:hover,
.jm_btn_primary:focus {
	background: var(--jm-accent);
	border-color: var(--jm-accent);
	color: #fff;
}

.jm_btn_ghost {
	background: #fff;
	color: var(--jm-ink);
}

.jm_btn_ghost:hover,
.jm_btn_ghost:focus {
	background: var(--jm-ink);
	color: #fff;
}

.jm_btn_accent {
	background: var(--jm-accent);
	border-color: var(--jm-accent);
	color: #fff;
}

.jm_btn_accent:hover,
.jm_btn_accent:focus {
	background: #fff;
	color: var(--jm-ink);
	border-color: #fff;
}

.jm_btn_light {
	background: transparent;
	border-color: #fff;
	color: #fff;
}

.jm_btn_light:hover,
.jm_btn_light:focus {
	background: #fff;
	color: var(--jm-ink);
}

.jm_link_arrow {
	font-weight: 700;
	text-decoration: none;
}

.jm_link_arrow::after {
	content: " →";
}

[dir="rtl"] .jm_link_arrow::after {
	content: " ←";
}

/* ---------- Home: hero ---------- */

.jm_hero {
	padding: clamp(24px, 3vw, 40px) 0 clamp(36px, 5vw, 64px);
}

.jm_hero_grid {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 40px 56px;
}

.jm_hero_text {
	flex: 1 1 520px;
	min-width: 0;
}

.jm_hero_stats {
	flex: 1 1 440px;
	min-width: 0;
}

.jm_hero h1 {
	margin: 0 0 24px;
	font-size: clamp(34px, 5vw, 60px);
	font-weight: 800;
	line-height: 1.05;
	letter-spacing: -0.03em;
	color: var(--jm-ink);
}

.jm_hero h1 .jm_accent {
	display: block;
}

.jm_lead {
	max-width: 620px;
	margin: 0 0 28px;
	font-size: 18px;
	line-height: 1.6;
	color: var(--jm-ink-soft);
}

.jm_hero_actions {
	display: flex;
	flex-wrap: wrap;
	gap: 12px;
	margin: 0;
}

.jm_stats {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 16px;
	margin: 0;
	padding: 0;
	list-style: none;
}

.jm_stats li {
	margin: 0;
	padding: 24px;
	border: 1px solid var(--jm-line);
	border-radius: 12px;
}

.jm_stat_value {
	display: block;
	font-size: clamp(40px, 4.4vw, 56px);
	font-weight: 800;
	line-height: 1;
	letter-spacing: -0.03em;
	color: var(--jm-ink);
}

.jm_stat_value.jm_accent {
	color: var(--jm-accent);
}

.jm_stat_label {
	display: block;
	margin-top: 10px;
	font-size: 14px;
	line-height: 1.4;
	color: var(--jm-ink-soft);
}

/* ---------- Home: journal information ---------- */

.jm_info {
	padding-bottom: clamp(40px, 6vw, 72px);
}

.jm_info_grid {
	display: flex;
	flex-wrap: wrap;
	align-items: flex-start;
	gap: 28px 40px;
	padding-top: clamp(40px, 6vw, 72px);
	border-top: 1px solid var(--jm-line);
}

.jm_info_grid > h2 {
	flex: 1 0 100%;
}

/* The fact sheet: one panel whose groups are divided by hairlines */
.jm_info_sheet {
	flex: 2 1 560px;
	min-width: 0;
	border: 1px solid var(--jm-line);
	border-radius: 12px;
	overflow: hidden;
}

.jm_info_group {
	display: flex;
	flex-wrap: wrap;
	margin: 0;
	overflow: hidden;
}

.jm_info_group + .jm_info_group {
	border-top: 1px solid var(--jm-line);
}

/* Every cell draws the hairline on its start and top edges. On the outer edges
   those lines sit 1px outside the group and are clipped, so the dividers stay
   right however the cells wrap. */
.jm_info_row {
	flex: 1 1 15rem;
	min-width: 0;
	margin: -1px 0 0;
	margin-inline-start: -1px;
	padding: 20px 24px;
	border-top: 1px solid var(--jm-line);
	border-inline-start: 1px solid var(--jm-line);
}

.jm_info_row dt {
	margin: 0 0 6px;
	font-size: 14px;
	font-weight: 600;
	line-height: 1.4;
	color: var(--jm-ink-soft);
}

.jm_info_row dd {
	margin: 0;
	font-size: 16px;
	line-height: 1.5;
	overflow-wrap: anywhere;
}

.jm_info_row dd p {
	margin: 0;
}

.jm_info_title dd {
	font-size: 20px;
	font-weight: 800;
	line-height: 1.3;
}

/* ISSN and DOI prefix are identifiers: set like the ISSN in the header */
.jm_info_identity .jm_info_row {
	flex-basis: 10rem;
}

.jm_info_identity dd {
	font-family: var(--jm-mono);
	font-size: 18px;
	font-weight: 500;
}

/* Key figures for authors: a large number followed by its words. The cells
   share their rows (subgrid), so the numbers stay level when a label wraps. */
.jm_info_figures {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(7rem, 1fr));
	background: var(--jm-neutral);
	background: color-mix(in srgb, var(--jm-accent) 6%, #fff);
}

.jm_info_figures .jm_info_row {
	display: grid;
	grid-row: span 2;
	grid-template-rows: subgrid;
}

.jm_info_figures dd {
	font-size: 15px;
	font-weight: 600;
	line-height: 1.35;
	color: var(--jm-ink-soft);
}

.jm_info_number {
	font-size: clamp(30px, 3vw, 40px);
	font-weight: 800;
	line-height: 1.1;
	color: var(--jm-ink);
}

/* Publication dates: every line of the field is a stop on one line through
   the year, in the order typed */
.jm_info_dates dd {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(8rem, 1fr));
	row-gap: 18px;
	padding-top: 8px;
}

.jm_info_dates dd ul,
.jm_info_dates dd ol {
	display: contents;
}

.jm_info_dates dd p,
.jm_info_dates dd li {
	position: relative;
	margin: 0;
	padding-top: 24px;
	padding-inline-end: 12px;
	font-weight: 700;
	list-style: none;
}

.jm_info_dates dd p::before,
.jm_info_dates dd li::before {
	content: "";
	position: absolute;
	top: 5px;
	inset-inline: 0;
	border-top: 2px solid var(--jm-line);
}

.jm_info_dates dd p::after,
.jm_info_dates dd li::after {
	content: "";
	position: absolute;
	top: 0;
	inset-inline-start: 0;
	width: 12px;
	height: 12px;
	border-radius: 50%;
	background: var(--jm-accent);
}

/* Indexing and citation analysis: every line of the field is a tag */
.jm_info_indexing dd {
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
}

.jm_info_indexing dd ul,
.jm_info_indexing dd ol {
	display: contents;
}

.jm_info_indexing dd p,
.jm_info_indexing dd li {
	margin: 0;
	padding: 4px 12px;
	border-radius: 6px;
	background: var(--jm-neutral);
	font-size: 15px;
	font-weight: 600;
	list-style: none;
}

/* Editors and organizer: the first line (the name) leads, the rest is quieter */
.jm_info_people dd p + p {
	font-size: 15px;
	color: var(--jm-ink-soft);
}

/* Online submissions */
.jm_info_submit {
	flex: 1 1 320px;
	min-width: 0;
	padding: 28px;
	border-radius: 12px;
	background: var(--jm-neutral);
	font-size: 15px;
	line-height: 1.6;
}

.jm_home .jm_info_submit h3 {
	margin: 0 0 16px;
	font-size: 20px;
	font-weight: 800;
	line-height: 1.3;
}

.jm_info_note {
	margin-bottom: 24px;
	padding: 14px 16px;
	border-inline-start: 4px solid var(--jm-accent);
	border-radius: 4px;
	background: #fff;
}

.jm_info_note p {
	margin: 0;
}

.jm_info_note p + p {
	margin-top: 8px;
}

/* Files to download under the note (templates, forms): every line of the
   field is a button */
.jm_info_files {
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
	margin-top: 12px;
}

.jm_info_files:first-child {
	margin-top: 0;
}

.jm_info_files ul,
.jm_info_files ol {
	display: contents;
}

.jm_info_note .jm_info_files p,
.jm_info_note .jm_info_files li {
	margin: 0;
	list-style: none;
}

.jm_info_files a {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	padding: 8px 14px;
	border-radius: 8px;
	background: var(--jm-neutral);
	color: var(--jm-ink);
	font-size: 14px;
	line-height: 1.3;
	text-decoration: none;
}

/* Download symbol, drawn in the colour of the text */
.jm_info_files a::before {
	content: "";
	flex: none;
	width: 16px;
	height: 16px;
	background: currentColor;
	-webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M8 2v8M4.5 6.5 8 10l3.5-3.5M3 14h10'/%3E%3C/svg%3E") center / contain no-repeat;
	mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M8 2v8M4.5 6.5 8 10l3.5-3.5M3 14h10'/%3E%3C/svg%3E") center / contain no-repeat;
}

.jm_info_files a:hover,
.jm_info_files a:focus {
	background: var(--jm-ink);
	color: #fff;
}

.jm_info_submit > p {
	margin: 0 0 10px;
}

.jm_info_submit > .jm_info_buttons {
	display: flex;
	flex-wrap: wrap;
	gap: 10px;
	margin-bottom: 14px;
}

.jm_info_submit > .jm_info_fine {
	margin: 0;
	font-size: 13px;
	line-height: 1.5;
	color: var(--jm-ink-soft);
}

.jm_info_submit > :last-child {
	margin-bottom: 0;
}

.jm_info_submit a {
	font-weight: 700;
}

/* Video guides: every line of the field is one video, and its link covers the
   whole row */
.jm_info_videos {
	margin-top: 24px;
	padding-top: 22px;
	border-top: 1px solid var(--jm-line);
}

.jm_info_videos ul,
.jm_info_videos ol {
	margin: 0;
	padding: 0;
}

.jm_info_videos p,
.jm_info_videos li {
	position: relative;
	margin: 0 0 8px;
	padding: 14px 16px;
	padding-inline-start: 62px;
	border-radius: 8px;
	background: #fff;
	line-height: 1.4;
	list-style: none;
}

.jm_info_videos p:last-child,
.jm_info_videos li:last-child {
	margin-bottom: 0;
}

/* Play button; media symbols keep their direction on right-to-left pages */
.jm_info_videos p::before,
.jm_info_videos li::before {
	content: "";
	position: absolute;
	top: 50%;
	inset-inline-start: 16px;
	width: 32px;
	height: 32px;
	margin-top: -16px;
	border-radius: 50%;
	background: var(--jm-accent) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 10 12'%3E%3Cpath d='M0 0l10 6-10 6z' fill='%23fff'/%3E%3C/svg%3E") 55% 50% / 10px 12px no-repeat;
}

.jm_info_videos a {
	color: var(--jm-ink);
	text-decoration: none;
}

.jm_info_videos a::after {
	content: "";
	position: absolute;
	inset: 0;
	border-radius: 8px;
}

.jm_info_videos p:hover a,
.jm_info_videos li:hover a {
	text-decoration: underline;
}

.jm_info_videos p:hover::before,
.jm_info_videos li:hover::before {
	background-color: var(--jm-ink);
}

/* The keyboard focus ring goes round the whole row */
.jm_info_videos a:focus-visible {
	outline: none;
}

.jm_info_videos a:focus-visible::after {
	outline: 2px solid var(--jm-accent);
	outline-offset: 2px;
}

/* Arabic letters look smaller than Latin ones set at the same size */
[dir="rtl"] .jm_info_row dt,
[dir="rtl"] .jm_info_files a,
[dir="rtl"] .jm_info_submit > .jm_info_fine {
	font-size: 15px;
}

[dir="rtl"] .jm_info_submit,
[dir="rtl"] .jm_info_figures dd,
[dir="rtl"] .jm_info_people dd p + p {
	font-size: 16px;
}

@media (max-width: 600px) {
	.jm_info_row {
		padding: 16px 18px;
	}

	.jm_info_submit {
		padding: 22px;
	}

	.jm_info_submit > .jm_info_buttons .jm_btn {
		flex: 1 1 auto;
		text-align: center;
	}
}

/* ---------- Home: bands ---------- */

.jm_band {
	padding: clamp(40px, 6vw, 72px) 0;
	background: var(--jm-neutral);
}

.jm_band_dark {
	background: var(--jm-ink);
	color: #fff;
}

.jm_band_head {
	display: flex;
	flex-wrap: wrap;
	align-items: flex-end;
	justify-content: space-between;
	gap: 16px 32px;
	margin-bottom: 40px;
}

.jm_band_lead {
	max-width: 420px;
	margin: 0;
	font-size: 15px;
	line-height: 1.5;
	color: var(--jm-ink-soft);
}

/* Workflow band: the cover of the current issue at the end of the line, beside
   it on wide screens and under it when the line needs the room */
.jm_workflow_grid {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 32px clamp(32px, 4vw, 64px);
}

.jm_workflow_main {
	flex: 1 1 640px;
	min-width: 0;
}

.jm_workflow_cover {
	flex: 0 1 auto;
}

.jm_workflow_cover img {
	display: block;
	max-width: 100%;
	max-height: clamp(160px, 16vw, 240px);
	border-radius: 6px;
	box-shadow: 0 1px 2px rgba(0, 0, 0, 0.08), 0 12px 32px rgba(0, 0, 0, 0.14);
}

/* Workflow line */

.jm_flow {
	display: flex;
	gap: 4px;
	margin: 0;
	padding: 0;
	list-style: none;
}

.jm_flow li {
	position: relative;
	flex-basis: 0;
	min-width: 118px;
	margin: 0;
	padding: 0;
}

/* Short stages get only the minimum width: the current one widens to keep its
   badge and day line on one line, and shrinks back when the line runs out of room */
.jm_flow li.is_current {
	flex-basis: auto;
}

.jm_flow_bar {
	position: relative;
	display: block;
	height: 18px;
	background: var(--jm-ink);
	border-radius: 2px;
}

.jm_flow li:first-child .jm_flow_bar {
	border-radius: 0;
	border-start-start-radius: 4px;
	border-end-start-radius: 4px;
}

.jm_flow li:last-child .jm_flow_bar {
	border-radius: 0;
	border-start-end-radius: 4px;
	border-end-end-radius: 4px;
}

/* With the stage marker: finished stages dark, current accent, next ones light */
.jm_flow_tracked li .jm_flow_bar {
	background: #C9CCD2;
}

.jm_flow_tracked li.is_done .jm_flow_bar {
	background: var(--jm-ink);
}

/* Current stage: the track is a pale accent, the travelled part is solid accent
   and the round marker sits at the share of the typical term already elapsed */
.jm_flow_tracked li.is_current .jm_flow_bar {
	background: #F5D9CB;
	background: color-mix(in srgb, var(--jm-accent) 22%, #fff);
	--jm-dot: 38px;
}

.jm_flow_fill {
	position: absolute;
	top: 0;
	bottom: 0;
	inset-inline-start: 0;
	width: calc(var(--jm-p, 0) * 1%);
	border-radius: inherit;
	background: var(--jm-accent);
}

.jm_flow_dot {
	position: absolute;
	top: 50%;
	inset-inline-start: calc(var(--jm-p, 0) * 1%);
	width: var(--jm-dot, 38px);
	height: var(--jm-dot, 38px);
	margin: calc(var(--jm-dot, 38px) / -2) 0 0;
	margin-inline-start: calc(var(--jm-p, 0) * var(--jm-dot, 38px) * -0.01);
	border: 5px solid #fff;
	border-radius: 50%;
	background: var(--jm-accent);
	box-shadow: 0 0 0 4px var(--jm-accent), 0 2px 8px rgba(0, 0, 0, 0.25);
}

.jm_flow_progress {
	display: block;
	margin-top: 8px;
	font-family: var(--jm-mono);
	font-size: 13px;
	font-weight: 600;
	line-height: 1.4;
	color: var(--jm-accent);
}

.jm_flow_name,
.jm_flow_term,
.jm_flow_now {
	display: block;
	overflow-wrap: anywhere;
}

.jm_flow_name {
	margin-top: 14px;
	font-size: 14px;
	font-weight: 800;
	line-height: 1.3;
}

.jm_flow_term {
	margin-top: 4px;
	font-size: 13px;
	line-height: 1.4;
	color: var(--jm-ink-soft);
}

.jm_flow_now {
	display: inline-block;
	margin-top: 10px;
	padding: 4px 10px;
	border-radius: 999px;
	background: var(--jm-accent);
	color: #fff;
	font-size: 10px;
	font-weight: 700;
	line-height: 1.3;
}

/* Most read */

.jm_mostread_list {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
	gap: 20px;
	margin: 32px 0 0;
	padding: 0;
	list-style: none;
}

.jm_mostread_list li {
	margin: 0;
	padding: 24px;
	border: 1px solid var(--jm-line);
	border-radius: 12px;
}

.jm_rank {
	display: block;
	margin-bottom: 12px;
	font-family: var(--jm-mono);
	font-size: 22px;
	font-weight: 500;
	color: var(--jm-accent);
}

.jm_home .jm_mostread_list h3 {
	margin: 0 0 8px;
	font-size: 18px;
	font-weight: 800;
	line-height: 1.35;
}

.jm_mostread_list h3 a {
	color: var(--jm-ink);
	text-decoration: none;
}

.jm_mostread_list h3 a:hover,
.jm_mostread_list h3 a:focus {
	color: var(--jm-accent);
	text-decoration: underline;
}

.jm_mostread_authors {
	margin: 0 0 14px;
	font-size: 14px;
	color: var(--jm-ink-soft);
}

.jm_mostread_numbers {
	display: flex;
	flex-wrap: wrap;
	justify-content: space-between;
	gap: 8px 16px;
	margin: 0;
	font-size: 14px;
	color: var(--jm-ink-soft);
}

.jm_mostread_numbers strong {
	font-size: 22px;
	font-weight: 800;
	color: var(--jm-ink);
}

.jm_mostread_numbers a {
	font-weight: 700;
}

/* Call-to-action band (latest announcement) */

.jm_cta_grid {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-between;
	gap: 28px 40px;
}

.jm_cta_grid > div {
	flex: 1 1 520px;
	min-width: 0;
}

.jm_cta_band h2 {
	margin-bottom: 12px;
}

.jm_cta_text {
	max-width: 720px;
	font-size: 16px;
	line-height: 1.6;
	color: #C9C9C9;
}

.jm_cta_text p {
	margin: 0;
}

.jm_cta_actions {
	display: flex;
	flex-wrap: wrap;
	gap: 12px;
	margin: 0;
}

/* Articles of the current issue */

.jm_articles {
	margin: 32px 0 0;
	padding: 0;
	list-style: none;
	border-bottom: 1px solid var(--jm-line);
}

.jm_article {
	margin: 0;
	padding: 0;
	border-top: 1px solid var(--jm-line);
}

.jm_article_row {
	display: flex;
	flex-wrap: wrap;
	align-items: flex-start;
	gap: 16px 32px;
	padding: 28px 0;
}

.jm_article_num {
	flex: 0 0 32px;
	font-family: var(--jm-mono);
	font-size: 20px;
	font-weight: 500;
	line-height: 1.4;
	color: var(--jm-accent);
}

.jm_article_main {
	flex: 1 1 420px;
	min-width: 0;
}

.jm_articles .jm_article_title {
	margin: 0 0 10px;
	font-size: clamp(18px, 1.8vw, 22px);
	font-weight: 800;
	line-height: 1.3;
}

.jm_article_title a {
	color: var(--jm-ink);
	text-decoration: none;
}

.jm_article_title a:hover,
.jm_article_title a:focus {
	color: var(--jm-accent);
	text-decoration: underline;
}

.jm_article_authors {
	margin: 0 0 8px;
	font-size: 15px;
	color: var(--jm-ink-soft);
}

.jm_article_doi {
	margin: 0;
	font-size: 13px;
	color: var(--jm-ink-soft);
	overflow-wrap: anywhere;
}

.jm_article_doi a {
	color: var(--jm-ink-soft);
	text-decoration: underline;
}

.jm_article_views {
	flex: 0 0 96px;
}

.jm_article_views_value {
	display: block;
	font-size: 28px;
	font-weight: 800;
	line-height: 1;
}

.jm_article_views_label {
	display: block;
	margin-top: 4px;
	font-size: 13px;
	color: var(--jm-ink-soft);
}

.jm_article_pdf {
	flex: 0 0 auto;
	padding: 11px 20px;
	border: 1.5px solid var(--jm-ink);
	border-radius: 8px;
	color: var(--jm-ink);
	font-size: 14px;
	font-weight: 700;
	text-decoration: none;
}

.jm_article_pdf:hover,
.jm_article_pdf:focus {
	background: var(--jm-ink);
	color: #fff;
}

.jm_issue_links {
	display: flex;
	flex-wrap: wrap;
	gap: 8px 28px;
	margin: 28px 0 0;
}

.jm_home .homepage_image img {
	display: block;
	max-width: 100%;
	height: auto;
	border-radius: 12px;
}

.jm_home .homepage_image,
.jm_home .additional_content {
	margin-left: auto;
	margin-right: auto;
}

/* ---------- Article page ---------- */

.jm_article_layout {
	display: flex;
	flex-wrap: wrap;
	align-items: flex-start;
	gap: 40px clamp(32px, 4vw, 64px);
}

.jm_article_body {
	flex: 1 1 640px;
	min-width: 0;
	max-width: 880px;
}

.jm_article_aside {
	flex: 0 1 340px;
	min-width: 260px;
	display: flex;
	flex-direction: column;
	gap: 20px;
}

/* The side column scrolls with the page: a sticky column taller than the screen
   would hide its lower part until the end of the article */
.jm_article_aside {
	align-self: flex-start;
}

.jm_article_page .jm_article_head {
	margin-bottom: 8px;
}

.jm_article_page .jm_eyebrow {
	margin-bottom: 18px;
}

.jm_article_page h1.page_title {
	margin: 0 0 16px;
	font-size: clamp(26px, 3.4vw, 40px);
	font-weight: 800;
	line-height: 1.15;
	letter-spacing: -0.02em;
	color: var(--jm-ink);
}

.jm_article_page .subtitle {
	margin: 0 0 16px;
	font-size: 20px;
	line-height: 1.4;
	color: var(--jm-ink-soft);
}

.jm_published {
	margin: 0 0 20px;
	font-size: 15px;
	font-weight: 600;
	color: var(--jm-ink);
}

.jm_published_label {
	margin-inline-end: 8px;
	font-size: 12px;
	font-weight: 800;
	letter-spacing: 0.1em;
	text-transform: uppercase;
	color: var(--jm-ink-soft);
}

.jm_article_page .item {
	margin: 0 0 36px;
	padding: 0;
	background: none;
	border: 0;
}

.jm_article_page .authors ul,
.jm_article_page ul.authors {
	margin: 0;
	padding: 0;
	list-style: none;
}

.jm_article_page .authors li {
	margin: 0 0 14px;
	padding: 0;
}

.jm_article_page .authors .name {
	display: block;
	font-size: 18px;
	font-weight: 800;
}

.jm_article_page .authors .affiliation,
.jm_article_page .authors .userGroup,
.jm_article_page .authors .orcid {
	display: block;
	font-size: 15px;
	line-height: 1.5;
	color: var(--jm-ink-soft);
}

.jm_article_page .authors .orcid a {
	font-family: var(--jm-mono);
	font-size: 14px;
}

.jm_doi {
	margin: 0 0 24px;
	font-size: 15px;
	overflow-wrap: anywhere;
}

.jm_doi_label {
	margin-inline-end: 8px;
	font-size: 12px;
	font-weight: 800;
	letter-spacing: 0.1em;
	text-transform: uppercase;
	color: var(--jm-ink-soft);
}

.jm_galleys .galleys_links {
	display: flex;
	flex-wrap: wrap;
	gap: 12px;
	margin: 0;
	padding: 0;
	list-style: none;
}

.jm_galleys .galleys_links li {
	margin: 0;
}

.jm_article_page .obj_galley_link,
.jm_article_page .obj_galley_link_supplementary {
	display: inline-block;
	padding: 13px 24px;
	border: 2px solid var(--jm-ink);
	border-radius: 8px;
	background: var(--jm-ink);
	color: #fff;
	font-size: 15px;
	font-weight: 700;
	line-height: 1.2;
	text-decoration: none;
}

.jm_article_page .obj_galley_link_supplementary {
	background: #fff;
	color: var(--jm-ink);
}

.jm_article_page .obj_galley_link:hover,
.jm_article_page .obj_galley_link:focus {
	background: var(--jm-accent);
	border-color: var(--jm-accent);
	color: #fff;
}

.jm_article_page section.item > h2.label,
.jm_article_page section.item h2.label,
.jm_article_page .item.keywords h2.label,
.jm_article_page .item.references h2.label,
.jm_article_page .item.author_bios h2.label {
	margin: 0 0 14px;
	padding: 0;
	font-size: 24px !important;
	font-weight: 800;
	letter-spacing: -0.01em;
	text-transform: none;
	color: var(--jm-ink);
}

.jm_article_page .abstract,
.jm_article_page .references .value,
.jm_bio_text {
	font-size: 17px;
	line-height: 1.7;
	color: #2A2A2A;
}

.jm_article_page .abstract p {
	margin: 0 0 1em;
}

.jm_keywords {
	display: flex;
	flex-wrap: wrap;
	gap: 0 4px;
	margin: 0;
	padding: 0;
	list-style: none;
}

.jm_keywords li {
	margin: 0;
	padding: 0;
	border: 0;
	font-size: 16px;
	line-height: 1.6;
}

.jm_keywords li:not(:last-child)::after {
	content: ";";
	margin-inline-end: 6px;
	color: var(--jm-ink-soft);
}

.jm_bios {
	margin: 0;
	padding: 0;
	list-style: none;
}

.jm_bio {
	margin: 0 0 18px;
	padding: 20px 24px;
	background: var(--jm-neutral);
	border-radius: 12px;
}

.jm_bio_name {
	margin: 0 0 8px;
	font-size: 17px;
	font-weight: 800;
}

.jm_bio_text p {
	margin: 0 0 0.6em;
}

.jm_bio_orcid {
	margin: 8px 0 0;
	font-size: 14px;
}

.jm_article_page .references .value p {
	margin: 0 0 10px;
	font-size: 16px;
	line-height: 1.65;
	overflow-wrap: anywhere;
}

/* How to cite, citation formats, download citation, sharing (side card) */
.jm_cite .item,
.jm_cite .sub_item {
	margin: 0 0 20px;
	padding: 0;
	border: 0;
	background: none;
}

.jm_cite > :last-child,
.jm_cite .item:last-child {
	margin-bottom: 0;
}

.jm_cite h2,
.jm_cite .item > .label,
.jm_cite .item > h2.label {
	margin: 0 0 12px;
	padding: 0;
	font-size: 18px !important;
	font-weight: 800;
	letter-spacing: 0;
	text-transform: none;
	color: var(--jm-ink);
}

.jm_cite h3,
.jm_cite .sub_item > .label,
.jm_cite .sub_item h3.label {
	margin: 0 0 10px;
	font-size: 14px;
	font-weight: 800;
	color: var(--jm-ink);
}

.jm_cite .citation_display .csl-entry,
.jm_cite .citation_display .csl-bib-body {
	padding: 14px 16px;
	background: var(--jm-neutral);
	border-radius: 10px;
	font-size: 14px;
	line-height: 1.6;
	overflow-wrap: anywhere;
}

.jm_cite .csl-entry + .csl-entry {
	margin-top: 8px;
}

.jm_card.jm_cite ul {
	display: flex;
	flex-wrap: wrap;
	gap: 6px 18px;
	margin: 0;
	padding: 0;
	list-style: none;
}

.jm_cite li {
	margin: 0;
	padding: 0;
}

.jm_cite ul a,
.jm_cite .citation_formats_button,
.jm_cite button {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	padding: 2px 0;
	border: 0 !important;
	border-radius: 0;
	background: none !important;
	box-shadow: none !important;
	outline-offset: 3px;
	color: var(--jm-ink);
	font-size: 14px;
	font-weight: 700;
	line-height: 1.4;
	text-decoration: underline;
	text-decoration-color: rgba(20, 20, 20, 0.3);
	text-underline-offset: 3px;
	cursor: pointer;
}

.jm_cite ul a:hover,
.jm_cite ul a:focus,
.jm_cite .citation_formats_button:hover,
.jm_cite .citation_formats_button:focus,
.jm_cite button:hover,
.jm_cite button:focus {
	color: var(--jm-accent);
	text-decoration-color: currentColor;
}

/* The list of citation styles (APA, MLA, ...) is a vertical list, not chips */
.jm_cite .citation_formats_styles {
	flex-direction: column;
	gap: 0;
	margin-top: 8px;
}

.jm_cite .citation_formats_styles a {
	display: block;
	padding: 8px 12px;
	border: 0;
	border-radius: 6px;
	background: none;
	font-weight: 600;
	text-decoration: none;
}

.jm_cite .citation_formats_styles a:hover,
.jm_cite .citation_formats_styles a:focus {
	background: var(--jm-neutral) !important;
	color: var(--jm-ink);
}

.jm_cite .citation_formats_list {
	margin-top: 8px;
}

/* Side cards */

.jm_card {
	margin: 0;
	padding: 24px;
	border: 1px solid var(--jm-line);
	border-radius: 12px;
	background: #fff;
}

.jm_card h2 {
	margin: 0 0 16px;
	font-size: 18px;
	font-weight: 800;
	letter-spacing: 0;
	text-transform: none;
	color: var(--jm-ink);
}

.jm_card_cover {
	padding: 0;
	overflow: hidden;
}

.jm_card_cover img {
	display: block;
	width: 100%;
	height: auto;
}

.jm_facts {
	margin: 0;
	font-size: 14px;
	line-height: 1.5;
}

.jm_facts dt {
	margin: 0;
	color: #5A5A5A;
}

.jm_facts dd {
	margin: 0 0 12px;
	font-weight: 600;
	overflow-wrap: anywhere;
}

.jm_facts dd:last-child {
	margin-bottom: 0;
}

.jm_usage_list {
	margin: 0;
}

.jm_usage_list div {
	display: flex;
	justify-content: space-between;
	align-items: baseline;
	gap: 12px;
	padding: 8px 0;
	border-bottom: 1px solid var(--jm-line);
}

.jm_usage_list div:last-child {
	border-bottom: 0;
}

.jm_usage_list dt {
	margin: 0;
	font-size: 14px;
	color: var(--jm-ink-soft);
}

.jm_usage_list dd {
	margin: 0;
	font-family: var(--jm-mono);
	font-size: 20px;
	font-weight: 500;
	color: var(--jm-ink);
}

.jm_card:not(.jm_cite) ul {
	margin: 0;
	padding-inline-start: 18px;
}

/* ---------- Text pages, issue pages, forms ---------- */

.pkp_structure_main h1,
.page h1 {
	font-size: clamp(28px, 4vw, 44px);
	font-weight: 800;
	line-height: 1.1;
	letter-spacing: -0.02em;
}

.pkp_structure_main h2 {
	font-weight: 800;
	letter-spacing: -0.01em;
}

.cmp_breadcrumbs {
	margin-bottom: 24px;
	font-size: 13px;
}

.cmp_button,
.pkp_button,
button[type="submit"],
input[type="submit"] {
	border-radius: 8px;
	font-weight: 700;
}

.obj_article_summary .title a {
	color: var(--jm-ink);
}

.obj_article_summary .title a:hover,
.obj_article_summary .title a:focus {
	color: var(--jm-accent);
}

.obj_galley_link {
	border-radius: 8px;
	font-weight: 700;
}

/* ---------- Login, registration, lost password ---------- */

/* CSS only: the OJS templates stay as they are, so captcha, ORCID and the
   plugins that add to these forms keep working. From 600px the page is a
   white sheet on a grey desk. The sheet rules are scoped to the page element,
   so a plugin page that nests a .page_login (OpenID) keeps its own layout. */

.pkp_structure_main > :is(.page_login, .page_lost_password, .page_register) {
	position: relative;
	box-sizing: border-box;
	max-width: 480px;
	margin: 0 auto;
}

.pkp_structure_main > .page_register {
	max-width: 880px;
}

:is(.page_login, .page_lost_password, .page_register) > .cmp_breadcrumbs ol {
	margin: 0;
	padding: 0;
}

:is(.page_login, .page_lost_password, .page_register) > h1 {
	margin: 0 0 10px;
	font-size: clamp(30px, 3.2vw, 40px);
}

:is(.page_login, .page_lost_password, .page_register) > p {
	margin: 0 0 28px;
	font-size: 14px;
	line-height: 1.55;
	color: var(--jm-ink-soft);
}

/* Why the visitor was sent here, e.g. to download a file */
.page_login > p:nth-of-type(2) {
	margin-top: -12px;
	padding: 12px 16px;
	border-radius: 8px;
	background: color-mix(in srgb, var(--jm-accent) 8%, #fff);
	color: var(--jm-ink);
}

:is(.page_login, .page_lost_password, .page_register) .required {
	border: 0;
	color: var(--jm-accent);
	text-decoration: none;
}

:is(.page_login, .page_lost_password, .page_register) .cmp_form {
	max-width: none;
	margin: 0;
}

:is(.page_login, .page_lost_password, .page_register) .cmp_form fieldset {
	min-width: 0;
	margin: 0;
	padding: 0;
	border: 0;
}

:is(.page_login, .page_lost_password, .page_register) .cmp_form .fields > div {
	padding-bottom: 0;
}

/* :where() keeps this spacing weaker than the rules for single fields below */
:is(.page_login, .page_lost_password, .page_register) .cmp_form :where(.fields > div + div, .fields > fieldset) {
	margin-top: 20px;
}

:is(.page_login, .page_lost_password, .page_register) .cmp_form .fields + .fields {
	margin-top: 14px;
}

:is(.page_login, .page_lost_password, .page_register) .cmp_form .label {
	display: block;
	margin: 0 0 8px;
	font-size: 14px;
	font-weight: 600;
	line-height: 1.4;
	color: var(--jm-ink);
}

/* Field edges keep 3:1 contrast with white, as WCAG asks of form controls */
:is(.page_login, .page_lost_password, .page_register) .cmp_form :is(input[type="text"], input[type="email"], input[type="password"], select) {
	box-sizing: border-box;
	width: 100%;
	max-width: none;
	height: 48px;
	padding: 0 14px;
	border: 1px solid #8C8C8C;
	border-radius: 8px;
	background-color: #fff;
	box-shadow: none;
	font: inherit;
	font-size: 16px;
	line-height: normal;
	color: var(--jm-ink);
	transition: border-color 0.15s, outline-color 0.15s;
}

:is(.page_login, .page_lost_password, .page_register) .cmp_form :is(input[type="text"], input[type="email"], input[type="password"], select):hover {
	border-color: var(--jm-ink-soft);
}

:is(.page_login, .page_lost_password, .page_register) .cmp_form :is(input[type="text"], input[type="email"], input[type="password"], select):focus {
	border-color: var(--jm-accent);
	outline: 3px solid color-mix(in srgb, var(--jm-accent) 28%, transparent);
	outline-offset: 0;
}

:is(.page_login, .page_lost_password, .page_register) .cmp_form select:not([multiple]) {
	appearance: none;
	padding-inline-end: 42px;
	background: #fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23141414' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m4 6 4 4 4-4'/%3E%3C/svg%3E") no-repeat right 14px center / 16px 16px;
}

[dir="rtl"] :is(.page_login, .page_lost_password, .page_register) .cmp_form select:not([multiple]) {
	background-position: left 14px center;
}

/* Login: "Forgot your password?" on the label line, the field below */
.page_login .cmp_form .password label {
	display: flex;
	flex-wrap: wrap;
	align-items: baseline;
	justify-content: space-between;
	column-gap: 16px;
}

.page_login .cmp_form .password input {
	order: 1;
}

.page_login .cmp_form .password a {
	margin-bottom: 8px;
	font-size: 14px;
	font-weight: 600;
	text-decoration: none;
}

.page_login .cmp_form .password a:hover {
	text-decoration: underline;
}

/* Checkboxes hang at the start of the line, so wrapped text stays aligned */
:is(.page_login, .page_lost_password, .page_register) .cmp_form :is(.remember, .optin, .context_privacy) label {
	position: relative;
	padding-inline-start: 30px;
	font-size: 15px;
	line-height: 1.5;
}

:is(.page_login, .page_lost_password, .page_register) .cmp_form :is(.remember, .optin, .context_privacy) input[type="checkbox"] {
	position: absolute;
	top: 2px;
	inset-inline-start: 0;
	width: 18px;
	height: 18px;
	margin: 0;
	accent-color: var(--jm-accent);
}

.page_login .cmp_form .remember .label {
	display: inline;
	margin: 0;
	font-size: inherit;
	font-weight: inherit;
}

/* Registration: Profile and Login sections, fields in pairs from 640px */
.page_register .cmp_form legend {
	margin: 0 0 16px;
	padding: 0;
	font-size: 18px;
	font-weight: 800;
	line-height: 1.3;
	letter-spacing: -0.01em;
	color: var(--jm-ink);
}

.page_register .cmp_form > :is(fieldset.identity, fieldset.login) {
	margin-bottom: 28px;
	padding-bottom: 28px;
	border-bottom: 1px solid var(--jm-line);
}

.page_register .cmp_form > fieldset.reviewer {
	margin-top: 14px;
}

.page_register .cmp_form .fields > .reviewer_interests {
	margin-top: 0;
}

.page_register .cmp_form .fields > .reviewer_interests.is_visible {
	margin-top: 16px;
	padding-bottom: 0;
}

@media (min-width: 640px) {
	.page_register .cmp_form :is(fieldset.identity, fieldset.login) .fields {
		display: grid;
		grid-template-columns: repeat(2, minmax(0, 1fr));
		gap: 20px 24px;
	}

	.page_register .cmp_form :is(fieldset.identity, fieldset.login) .fields > div {
		margin-top: 0;
	}
}

/* Buttons: the theme's primary and outline buttons */
:is(.page_login, .page_lost_password, .page_register) .cmp_form .buttons {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 12px;
	margin-top: 28px;
	padding: 0;
}

:is(.page_login, .page_lost_password, .page_register) .cmp_form .buttons::before,
:is(.page_login, .page_lost_password, .page_register) .cmp_form .buttons::after {
	content: none;
}

:is(.page_login, .page_lost_password) .cmp_form .buttons {
	flex-direction: column;
	align-items: stretch;
}

:is(.page_login, .page_lost_password, .page_register) .cmp_form .buttons :is(button, a) {
	float: none;
	box-sizing: border-box;
	height: auto;
	margin: 0;
	padding: 13px 24px;
	border: 2px solid var(--jm-ink);
	border-radius: 8px;
	box-shadow: none;
	text-shadow: none;
	font: inherit;
	font-size: 15px;
	font-weight: 700;
	line-height: 1.2;
	text-align: center;
	text-decoration: none;
	cursor: pointer;
}

:is(.page_login, .page_lost_password, .page_register) .cmp_form .buttons button {
	background: var(--jm-ink);
	color: #fff;
}

:is(.page_login, .page_lost_password, .page_register) .cmp_form .buttons button:hover,
:is(.page_login, .page_lost_password, .page_register) .cmp_form .buttons button:focus-visible {
	background: var(--jm-accent);
	border-color: var(--jm-accent);
}

:is(.page_login, .page_lost_password, .page_register) .cmp_form .buttons a {
	background: #fff;
	color: var(--jm-ink);
}

:is(.page_login, .page_lost_password, .page_register) .cmp_form .buttons a:hover,
:is(.page_login, .page_lost_password, .page_register) .cmp_form .buttons a:focus-visible {
	background: var(--jm-ink);
	color: #fff;
}

/* Errors: the login error, and the list of errors after a failed registration */
:is(.page_login, .page_lost_password, .page_register) .pkp_form_error,
.page_register #formErrors {
	margin: 0 0 24px;
	padding: 12px 16px;
	border: 1px solid #F3C4BE;
	border-radius: 8px;
	background: #FEF3F2;
	color: #A3190D;
	font-size: 14px;
	font-weight: 600;
	line-height: 1.5;
	/* the page opens at #formErrors: leave room above the box */
	scroll-margin-top: 32px;
}

.page_register #formErrors .pkp_form_error {
	margin: 0;
	padding: 0;
	border: 0;
	background: none;
}

.page_register #formErrors .pkp_form_error_list {
	margin: 6px 0 0;
	padding: 0;
	padding-inline-start: 20px;
	font-weight: 400;
}

.page_register #formErrors .pkp_form_error_list a {
	color: inherit;
}

@media (min-width: 600px) {
	.pkp_structure_page:has(.pkp_structure_main > :is(.page_login, .page_lost_password, .page_register)) {
		background: var(--jm-neutral);
	}

	.pkp_structure_main > :is(.page_login, .page_lost_password, .page_register) {
		margin-top: 44px;
		padding: clamp(28px, 4vw, 48px);
		border: 1px solid var(--jm-line);
		border-radius: 16px;
		background: #fff;
		box-shadow: 0 1px 2px rgba(20, 20, 20, 0.04), 0 12px 32px rgba(20, 20, 20, 0.06);
	}

	/* The breadcrumbs sit on the desk, above the sheet */
	.pkp_structure_main > :is(.page_login, .page_lost_password, .page_register) > .cmp_breadcrumbs {
		position: absolute;
		bottom: 100%;
		inset-inline-start: 0;
		margin: 0 0 12px;
	}
}

/* ---------- Footer ---------- */

.pkp_structure_footer_wrapper {
	background: var(--jm-dark);
	color: rgba(255, 255, 255, 0.78);
	border-top: 0;
}

.pkp_structure_footer {
	padding-top: 48px;
	padding-bottom: 32px;
	text-align: start;
}

.pkp_structure_footer a {
	color: #fff;
}

.jm_footer_grid {
	display: flex;
	flex-wrap: wrap;
	justify-content: space-between;
	gap: 32px;
	margin-bottom: 32px;
	padding-bottom: 32px;
	border-bottom: 1px solid rgba(255, 255, 255, 0.16);
}

.jm_footer_name {
	margin: 0 0 8px;
	font-size: 20px;
	font-weight: 800;
	color: #fff;
}

.jm_footer_meta {
	margin: 0 0 4px;
	font-family: var(--jm-mono);
	font-size: 13px;
}

.jm_footer_nav ul {
	display: flex;
	flex-wrap: wrap;
	gap: 8px 28px;
	margin: 0;
	padding: 0;
	list-style: none;
}

.jm_footer_nav li {
	margin: 0;
}

.jm_footer_nav a {
	font-weight: 600;
	text-decoration: none;
}

.jm_footer_nav a:hover,
.jm_footer_nav a:focus {
	text-decoration: underline;
}

.jm_footer_bottom {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-between;
	gap: 12px 32px;
	margin-top: 24px;
}

.jm_footer_credit {
	margin: 0;
	font-size: 14px;
	line-height: 1.4;
	color: rgba(255, 255, 255, 0.6);
}

.jm_footer_credit a {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	font-weight: 700;
	text-decoration: none;
}

.jm_footer_credit a:hover,
.jm_footer_credit a:focus {
	text-decoration: underline;
}

.jm_orcid_icon {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 18px;
	height: 18px;
	border-radius: 50%;
	background: #A6CE39;
	color: #fff;
	font-size: 9px;
	font-weight: 800;
	line-height: 1;
}

.pkp_brand_footer {
	margin-top: 0;
	padding: 0;
	text-align: start;
}

.pkp_brand_footer img {
	filter: brightness(0) invert(1);
	opacity: 0.7;
}

/* ---------- Small screens: content ---------- */

@media (max-width: 767px) {
	.jm_flow {
		flex-direction: column;
		gap: 16px;
	}

	.jm_flow li {
		flex-grow: 1 !important;
	}

	.jm_article_views {
		flex: 0 0 auto;
		display: flex;
		align-items: baseline;
		gap: 8px;
	}

	.jm_article_row {
		gap: 12px 16px;
	}

	.jm_article_num {
		flex-basis: 28px;
	}

	.jm_topbar_issn {
		display: none;
	}

	.jm_topbar_inner {
		justify-content: flex-end;
	}
}

@media print {
	.jm_topbar,
	.jm_cta,
	.jm_lang,
	.jm_article_aside {
		display: none;
	}
}


/* Archive of issues: cover in its own column, title and description in the other */
.page_issue_archive .issues_archive,
.page_issue_archive .issues_archive > li {
	margin: 0;
	padding: 0;
	list-style: none;
}

.page_issue_archive .issues_archive > li {
	padding: 28px 0;
	border-top: 1px solid var(--jm-line);
}

.page_issue_archive .obj_issue_summary {
	display: block;
	min-width: 0;
}

.page_issue_archive .obj_issue_summary::before,
.page_issue_archive .obj_issue_summary::after {
	display: none;
	content: none;
}

.page_issue_archive .obj_issue_summary h2 {
	margin: 0 0 10px;
	font-size: 22px;
	line-height: 1.3;
}

.page_issue_archive .obj_issue_summary .description {
	min-width: 0;
	font-size: 16px;
	line-height: 1.65;
	overflow-wrap: anywhere;
}

.page_issue_archive .obj_issue_summary .description img {
	max-width: 100%;
	height: auto;
}

@media (min-width: 700px) {
	.page_issue_archive .obj_issue_summary:has(> .cover) {
		display: grid;
		grid-template-columns: minmax(140px, 220px) minmax(0, 1fr);
		grid-template-rows: auto 1fr;
		column-gap: clamp(20px, 3vw, 40px);
		align-items: start;
	}

	.page_issue_archive .obj_issue_summary > .cover {
		grid-column: 1;
		grid-row: 1 / span 2;
		float: none;
		width: auto;
		margin: 0;
	}

	.page_issue_archive .obj_issue_summary > .cover img {
		width: 100%;
		max-height: none;
		height: auto;
	}

	.page_issue_archive .obj_issue_summary > h2,
	.page_issue_archive .obj_issue_summary > .description {
		grid-column: 2;
		float: none;
		clear: none;
	}
}

@media (max-width: 699px) {
	.page_issue_archive .obj_issue_summary > .cover {
		float: none;
		width: auto;
		margin: 0 0 16px;
	}

	.page_issue_archive .obj_issue_summary > .cover img {
		max-width: 180px;
		height: auto;
	}
}

.page_issue_archive .obj_issue_summary .series {
	margin: 4px 0 0;
	font-family: var(--jm-mono);
	font-size: 14px;
	font-weight: 500;
	line-height: 1.4;
	color: var(--jm-ink-soft);
}
