/* =========================================================================
   Emerging Papers — main stylesheet
   Editorial, light design system built around the brand's actual logo
   colors: #002465 (primary navy) and #336699 (secondary blue), with
   Source Serif 4 for headings/reading (matching the logo) and Poppins
   for UI chrome. Rounded cards/badges kept from the earlier pass.
   ========================================================================= */

/* --- Design tokens ------------------------------------------------------ */
:root {
	color-scheme: light;

	--ep-bg: #f5f7fa;
	--ep-bg-alt: #eef1f5;
	--ep-surface: #ffffff;
	--ep-surface-hover: #eef3f8;
	--ep-border: #dde3ea;
	--ep-border-strong: #c3ccd6;

	--ep-text: #16202b;
	--ep-text-soft: #4b5563;
	--ep-muted: #5f6b78;

	--ep-primary: #002465;
	--ep-primary-dark: #001a4d;
	--ep-secondary: #336699;
	--ep-secondary-soft: rgba(51, 102, 153, 0.12);
	--ep-on-primary: #ffffff;

	--ep-font-serif: 'Source Serif 4', Georgia, 'Times New Roman', serif;
	--ep-font-sans: 'Poppins', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;

	--ep-container: 1280px;
	--ep-content: 760px;
	--ep-radius: 4px;
	--ep-radius-lg: 6px;
	--ep-shadow-sm: 0 2px 10px rgba(15, 23, 32, 0.06);
	--ep-shadow-md: 0 16px 40px rgba(15, 23, 32, 0.12);
}

/* --- Reset ---------------------------------------------------------------*/
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; }
body {
	margin: 0;
	background: var(--ep-bg);
	color: var(--ep-text);
	font-family: var(--ep-font-sans);
	font-size: 16px;
	line-height: 1.6;
	-webkit-font-smoothing: antialiased;
}
img { max-width: 100%; height: auto; display: block; }
ul, ol { padding: 0; margin: 0; list-style: none; }
a { color: inherit; text-decoration: none; }
button { font: inherit; background: none; border: 0; cursor: pointer; }
input, textarea, select { font: inherit; color: inherit; }
table { border-collapse: collapse; width: 100%; }

h1, h2, h3, h4, h5, h6 {
	font-family: var(--ep-font-serif);
	font-weight: 600;
	line-height: 1.2;
	margin: 0 0 0.5em;
	color: var(--ep-text);
}
h1 { font-size: clamp(2rem, 1.5rem + 2vw, 3.25rem); font-weight: 700; }
h2 { font-size: clamp(1.5rem, 1.3rem + 1vw, 2.25rem); }
h3 { font-size: 1.4rem; }
h4 { font-size: 1.125rem; }
p { margin: 0 0 1.2em; }

/* --- Accessibility -------------------------------------------------------*/
:focus-visible {
	outline: 3px solid var(--ep-secondary);
	outline-offset: 2px;
}
.skip-link {
	position: absolute;
	left: -9999px;
	top: 0;
	background: var(--ep-primary);
	color: var(--ep-on-primary);
	padding: 0.75em 1.25em;
	z-index: 10000;
	border-radius: 0 0 var(--ep-radius) 0;
}
.skip-link:focus {
	left: 0;
}
.screen-reader-text {
	border: 0;
	clip: rect(1px, 1px, 1px, 1px);
	clip-path: inset(50%);
	height: 1px;
	width: 1px;
	overflow: hidden;
	position: absolute !important;
	word-wrap: normal !important;
}

/* --- Layout ---------------------------------------------------------------*/
.container {
	max-width: var(--ep-container);
	margin-inline: auto;
	padding-inline: clamp(24px, 4vw, 48px);
}
.content-width {
	max-width: var(--ep-content);
}
.section {
	padding-block: clamp(48px, 6vw, 96px);
}
.section--tight { padding-block: clamp(32px, 4vw, 56px); }
.section--tight-top { padding-top: clamp(16px, 2vw, 24px); }
.section--bordered { border-top: 1px solid var(--ep-border); }
.section--surface { background: var(--ep-surface); }
.section-head {
	display: flex;
	align-items: flex-end;
	justify-content: space-between;
	gap: 24px;
	margin-bottom: 32px;
	flex-wrap: wrap;
}
.section-head .eyebrow { margin-bottom: 0.35em; }
.section-head h2 { margin-bottom: 0; }

.eyebrow {
	display: inline-block;
	font-family: var(--ep-font-sans);
	font-size: 0.75rem;
	font-weight: 700;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	color: var(--ep-secondary);
}

.lede {
	font-size: 1.15rem;
	color: var(--ep-text-soft);
	max-width: 62ch;
}
/* Awards page only: this lede sits in a full-width column (no sidebar,
   no reading-width cap), so let it use the full width too instead of
   the sitewide 62ch line-length cap used elsewhere. */
.lede--full {
	max-width: none;
}

/* --- Logo / site title ---------------------------------------------------*/
.site-title {
	font-family: var(--ep-font-serif);
	font-size: 1.5rem;
	letter-spacing: -0.01em;
	white-space: nowrap;
}
.site-title__accent-1 { color: var(--ep-primary); font-weight: 700; }
.site-title__accent-2 { color: var(--ep-secondary); font-weight: 400; }
.site-title__cap { font-size: 1.0417em; }

/* --- Buttons ---------------------------------------------------------------*/
.btn {
	display: inline-flex;
	align-items: center;
	gap: 0.5em;
	padding: 0.85em 1.6em;
	border-radius: var(--ep-radius);
	font-weight: 600;
	font-size: 0.95rem;
	border: 1px solid transparent;
	transition: background-color 0.15s ease, color 0.15s ease, border-color 0.15s ease;
}
.btn-primary {
	background: var(--ep-primary);
	color: var(--ep-on-primary);
}
.btn-primary:hover, .btn-primary:focus-visible { background: var(--ep-primary-dark); }
.btn-secondary {
	background: transparent;
	color: var(--ep-primary);
	border-color: var(--ep-primary);
}
.btn-secondary:hover, .btn-secondary:focus-visible { background: var(--ep-primary); color: var(--ep-on-primary); }
.btn-ghost {
	background: transparent;
	color: var(--ep-text);
	border-color: var(--ep-border-strong);
}
.btn-ghost:hover, .btn-ghost:focus-visible { border-color: var(--ep-secondary); color: var(--ep-secondary); }
.btn-block { width: 100%; justify-content: center; }
.btn[disabled], .btn.is-disabled {
	opacity: 0.5;
	pointer-events: none;
}

/* --- Site header -----------------------------------------------------------*/
.site-header {
	position: sticky;
	top: 0;
	z-index: 100;
	background: var(--ep-surface);
	border-bottom: 1px solid var(--ep-border);
}
.site-header__bar {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 24px;
	padding-block: 18px;
}
.site-branding {
	display: flex;
	align-items: center;
	line-height: 1.15;
	flex-shrink: 0;
}
.site-branding a { display: block; }

.primary-menu {
	display: flex;
	align-items: center;
	gap: 42px;
}
.primary-menu li {
	position: relative;
}
.primary-menu > li > a {
	display: inline-flex;
	align-items: center;
	gap: 0.35em;
	font-weight: 600;
	font-size: 0.95rem;
	padding: 0.4em 0;
	border-bottom: 2px solid transparent;
	white-space: nowrap;
}
.primary-menu > li > a:hover,
.primary-menu > li > a:focus-visible,
.primary-menu > li.current-menu-item > a {
	border-bottom-color: var(--ep-secondary);
}
.primary-menu .menu-item-has-children > a::after {
	content: '';
	width: 6px;
	height: 6px;
	border-right: 1.5px solid currentColor;
	border-bottom: 1.5px solid currentColor;
	transform: rotate(45deg);
	margin-top: -4px;
	opacity: 0.6;
}
.primary-menu .menu-item-has-children .menu-item-has-children > a::after {
	transform: rotate(-45deg);
	margin-top: 0;
}

/* Dropdown / flyout panels (top-level opens down, nested levels open to the right) */
.primary-menu .sub-menu {
	display: none;
	position: absolute;
	top: 100%;
	left: 0;
	min-width: 240px;
	background: var(--ep-surface);
	border: 1px solid var(--ep-border);
	border-radius: var(--ep-radius);
	box-shadow: var(--ep-shadow-md);
	padding: 8px;
	z-index: 200;
}
.primary-menu .sub-menu .sub-menu {
	top: -8px;
	left: auto;
	right: 100%;
}
.primary-menu li.menu-item-has-children:hover > .sub-menu,
.primary-menu li.menu-item-has-children:focus-within > .sub-menu {
	display: block;
}
.primary-menu .sub-menu li {
	width: 100%;
}
.primary-menu .sub-menu a {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 0.5em;
	padding: 0.6em 0.75em;
	border-radius: var(--ep-radius);
	font-size: 0.9rem;
	font-weight: 500;
	white-space: nowrap;
}
.primary-menu .sub-menu a:hover,
.primary-menu .sub-menu a:focus-visible {
	background: var(--ep-surface-hover);
	color: var(--ep-primary);
}

.site-header__actions {
	display: flex;
	align-items: center;
	gap: 14px;
}
.account-nav-link {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 40px;
	height: 40px;
	border-radius: 50%;
	color: var(--ep-text);
}
.account-nav-link:hover, .account-nav-link:focus-visible { background: var(--ep-surface-hover); }
.header-search-toggle,
.mobile-menu-toggle {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 40px;
	height: 40px;
	border-radius: 50%;
	color: var(--ep-text);
}
.header-search-toggle:hover, .header-search-toggle:focus-visible,
.mobile-menu-toggle:hover, .mobile-menu-toggle:focus-visible {
	background: var(--ep-surface-hover);
}
.mobile-menu-toggle { display: none; }
.header-submit-btn,
.mobile-nav__submit {
	background: var(--ep-secondary);
	white-space: nowrap;
	box-shadow: 0 1px 2px rgba(0, 36, 101, 0.15);
	transition: background-color 0.15s ease, box-shadow 0.2s ease, transform 0.2s ease;
}
.header-submit-btn:hover, .header-submit-btn:focus-visible,
.mobile-nav__submit:hover, .mobile-nav__submit:focus-visible {
	background: var(--ep-primary);
	box-shadow: 0 6px 16px rgba(0, 36, 101, 0.3);
	transform: translateY(-1px);
}
.header-submit-btn:active,
.mobile-nav__submit:active {
	box-shadow: 0 1px 2px rgba(0, 36, 101, 0.15);
	transform: translateY(0);
}

.header-search {
	position: absolute;
	inset-inline: 0;
	top: 100%;
	background: var(--ep-surface);
	border-bottom: 1px solid var(--ep-border);
	padding: 20px 0;
	display: none;
}
.header-search.is-open { display: block; }
.header-search__form {
	display: flex;
	gap: 10px;
	max-width: 640px;
	margin-inline: auto;
}
.header-search__form input[type="search"] {
	flex: 1;
	padding: 0.75em 1em;
	border: 1px solid var(--ep-border-strong);
	border-radius: var(--ep-radius);
	background: var(--ep-bg);
}

.primary-navigation {
	display: block;
}

.mobile-nav {
	display: none;
}

@media (max-width: 1250px) {
	.primary-menu { gap: 26px; }
}

@media (max-width: 1100px) {
	.primary-navigation { display: none; }
	.mobile-menu-toggle { display: inline-flex; }
	.header-submit-btn { display: none; }
	.mobile-nav {
		display: none;
		position: absolute;
		top: 100%;
		left: 0;
		right: 0;
		background: var(--ep-surface);
		border-bottom: 1px solid var(--ep-border);
		box-shadow: var(--ep-shadow-md);
		z-index: 150;
	}
	.mobile-nav.is-open { display: block; max-height: calc(100vh - 64px); overflow-y: auto; }
	.mobile-nav ul { display: flex; flex-direction: column; padding: 8px 0; }
	.mobile-nav a { display: block; padding: 12px 24px; border-bottom: 1px solid var(--ep-border); }
	.mobile-nav .sub-menu a {
		padding-left: 40px;
		font-size: 0.92rem;
		color: var(--ep-text-soft);
		background: var(--ep-bg-alt);
	}
	.mobile-nav .sub-menu .sub-menu a { padding-left: 56px; }
	.mobile-nav__submit { display: flex; width: calc(100% - 48px); margin: 16px 24px; }

	/* Staggered reveal as the panel opens, instead of every item appearing
	   at once — a fixed, hand-numbered list since the menu is a known,
	   flat 6 items (see header.php), not worth computing in JS. */
	.mobile-nav .mobile-menu > li,
	.mobile-nav__submit {
		opacity: 0;
		transform: translateY(-6px);
	}
	.mobile-nav.is-open .mobile-menu > li,
	.mobile-nav.is-open .mobile-nav__submit {
		animation: ep-mobile-nav-item-in 0.25s ease forwards;
	}
	.mobile-nav.is-open .mobile-menu > li:nth-child(1) { animation-delay: 0.02s; }
	.mobile-nav.is-open .mobile-menu > li:nth-child(2) { animation-delay: 0.06s; }
	.mobile-nav.is-open .mobile-menu > li:nth-child(3) { animation-delay: 0.10s; }
	.mobile-nav.is-open .mobile-menu > li:nth-child(4) { animation-delay: 0.14s; }
	.mobile-nav.is-open .mobile-menu > li:nth-child(5) { animation-delay: 0.18s; }
	.mobile-nav.is-open .mobile-menu > li:nth-child(6) { animation-delay: 0.22s; }
	.mobile-nav.is-open .mobile-nav__submit { animation-delay: 0.26s; }
}
@keyframes ep-mobile-nav-item-in {
	to { opacity: 1; transform: translateY(0); }
}
@media (prefers-reduced-motion: reduce) {
	.mobile-nav .mobile-menu > li,
	.mobile-nav__submit { opacity: 1; transform: none; animation: none; }
}

/* Hamburger <-> close icon swap on the mobile menu toggle button */
.mobile-menu-toggle__icon-close { display: none; }
.mobile-menu-toggle[aria-expanded="true"] .mobile-menu-toggle__icon-open { display: none; }
.mobile-menu-toggle[aria-expanded="true"] .mobile-menu-toggle__icon-close { display: block; }

/* --- Breadcrumbs -------------------------------------------------------- */
.breadcrumbs {
	padding-block: 16px;
	font-size: 0.85rem;
	color: var(--ep-muted);
	border-bottom: 1px solid var(--ep-border);
}
.breadcrumbs ol { display: flex; gap: 6px; align-items: center; min-width: 0; }
/* One line: the links keep their width, a long current-page title ends in "…"
   (full title on hover; Google reads the BreadcrumbList data, not this). */
.breadcrumbs li { flex: 0 0 auto; white-space: nowrap; }
.breadcrumbs li[aria-current] { flex: 0 1 auto; min-width: 0; overflow: hidden; text-overflow: ellipsis; }
.breadcrumbs a { color: var(--ep-primary); }
.breadcrumbs a:hover { text-decoration: underline; }
.breadcrumbs li:not(:last-child)::after {
	content: '/';
	margin-left: 6px;
	color: var(--ep-border-strong);
}
.breadcrumbs li[aria-current] { color: var(--ep-text); }
@media (max-width: 600px) {
	/* Phones: just the way back up — the page title sits right below as the heading. */
	.breadcrumbs ol { flex-wrap: wrap; }
	.breadcrumbs li[aria-current] { display: none; }
	.breadcrumbs li.breadcrumbs__before-current::after { content: none; }
}

/* --- Hero ----------------------------------------------------------------*/
.hero {
	background: linear-gradient(180deg, var(--ep-primary) 0%, var(--ep-primary-dark) 100%);
	color: var(--ep-on-primary);
	padding-block: clamp(40px, 5vw, 64px);
}
.hero__inner {
	max-width: 720px;
}
.hero .eyebrow { color: #aeccec; }
.hero h1 { color: #fff; margin-bottom: 0.35em; font-size: clamp(1.75rem, 1.4rem + 1.5vw, 2.6rem); }
.hero p.lede { color: rgba(255, 255, 255, 0.85); font-size: 1.05rem; margin-bottom: 28px; max-width: 56ch; }
.hero__actions {
	display: flex;
	flex-wrap: wrap;
	gap: 16px;
	margin-top: 24px;
}
.hero .btn-primary { background: #fff; color: var(--ep-primary); }
.hero .btn-primary:hover, .hero .btn-primary:focus-visible { background: rgba(255, 255, 255, 0.88); }
.hero .btn-secondary { color: #fff; border-color: rgba(255, 255, 255, 0.6); }
.hero .btn-secondary:hover, .hero .btn-secondary:focus-visible { background: #fff; color: var(--ep-primary); }

/* --- Homepage hero feature (latest issue's own cover, not stock art) ---- */
.hero-feature {
	position: relative;
	overflow: hidden;
	border-radius: var(--ep-radius-lg);
	min-height: clamp(260px, 28vw, 380px);
	display: flex;
	align-items: flex-end;
	color: #fff;
	background: linear-gradient(160deg, var(--ep-secondary) 0%, var(--ep-primary) 100%);
}
.hero-feature__media { position: absolute; inset: 0; z-index: 0; }
.hero-feature__media img { width: 100%; height: 100%; object-fit: cover; }
.hero-feature::after {
	content: '';
	position: absolute;
	inset: 0;
	background: linear-gradient(0deg, rgba(0, 26, 77, 0.92) 0%, rgba(0, 26, 77, 0.35) 55%, rgba(0, 36, 101, 0.15) 100%);
	z-index: 1;
}
.hero-feature--no-media::after { background: linear-gradient(0deg, rgba(0, 26, 77, 0.5) 0%, rgba(0, 26, 77, 0) 70%); }
.hero-feature--no-overlay::after { display: none; }
.hero-feature__content {
	position: relative;
	z-index: 2;
	max-width: 640px;
	padding: clamp(24px, 3.5vw, 40px);
}
.hero-feature__content .eyebrow { color: #aeccec; display: block; margin-bottom: 8px; }
.hero-feature__content .badge { background: rgba(255, 255, 255, 0.2); color: #fff; margin-bottom: 10px; }
.hero-feature__content h2 { font-size: clamp(1.4rem, 1.1rem + 1.4vw, 2rem); margin-bottom: 0.25em; }
.hero-feature__content h2 a { color: #fff; }
.hero-feature__content h2 a:hover, .hero-feature__content h2 a:focus-visible { color: rgba(255, 255, 255, 0.85); }
.hero-feature__meta { display: flex; gap: 10px; font-size: 0.88rem; color: rgba(255, 255, 255, 0.85); margin-bottom: 16px; }
.hero-feature__meta span:not(:last-child)::after { content: '\00b7'; margin-left: 10px; color: rgba(255, 255, 255, 0.5); }
.hero-feature .btn-primary { background: #fff; color: var(--ep-primary); }
.hero-feature .btn-primary:hover, .hero-feature .btn-primary:focus-visible { background: rgba(255, 255, 255, 0.88); }
.hero-feature__media a { display: block; width: 100%; height: 100%; }
.hero-feature__media picture { display: block; width: 100%; height: 100%; }
/* Phones: a designed image with no overlaid text (its text is part of the
   image), or any slide with its own mobile image, is shown whole at its
   own proportions instead of being cropped to fill the box. */
@media (max-width: 700px) {
	.hero-feature--no-overlay,
	.hero-feature--has-mobile { min-height: 0; }
	.hero-feature--no-overlay .hero-feature__media,
	.hero-feature--has-mobile .hero-feature__media { position: relative; inset: auto; width: 100%; }
	.hero-feature--no-overlay .hero-feature__content:empty,
	.hero-feature--no-overlay .hero-feature__content:not(:has(*)) { display: none; }
	.hero-feature--no-overlay .hero-feature__media img,
	.hero-feature--has-mobile .hero-feature__media img { height: auto; object-fit: contain; }
	.hero-feature--has-mobile:not(.hero-feature--no-overlay) .hero-feature__content { position: absolute; left: 0; right: 0; bottom: 0; }
}

/* --- Homepage hero carousel (Appearance > Hero Slides) -------------------*/
.hero-carousel { position: relative; }
.hero-carousel__track { position: relative; }
.hero-carousel__slide { position: relative; }
.hero-carousel__slide[hidden] { display: none; }
/* Arrows sit on the image's left/right edges, dots on its bottom edge —
   all absolutely positioned over the slide instead of in a bar below it.
   The wrapper itself takes no space/clicks of its own (pointer-events:
   none) so only the actual buttons are interactive. */
.hero-carousel__controls { position: absolute; inset: 0; z-index: 3; pointer-events: none; }
.hero-carousel__arrow {
	position: absolute;
	top: 50%;
	transform: translateY(-50%);
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 36px;
	height: 36px;
	border-radius: 50%;
	border: 1px solid rgba(255, 255, 255, 0.6);
	background: rgba(255, 255, 255, 0.15);
	color: #fff;
	font-size: 1rem;
	cursor: pointer;
	pointer-events: auto;
	backdrop-filter: blur(2px);
	transition: background 0.15s ease, border-color 0.15s ease;
}
.hero-carousel__arrow--prev { left: 16px; }
.hero-carousel__arrow--next { right: 16px; }
.hero-carousel__arrow:hover, .hero-carousel__arrow:focus-visible { background: rgba(255, 255, 255, 0.9); color: var(--ep-primary); border-color: #fff; }
.hero-carousel__dots {
	position: absolute;
	bottom: 16px;
	left: 50%;
	transform: translateX(-50%);
	display: flex;
	align-items: center;
	gap: 8px;
	pointer-events: auto;
}
.hero-carousel__dot {
	width: 9px;
	height: 9px;
	border-radius: 50%;
	border: none;
	padding: 0;
	background: rgba(255, 255, 255, 0.5);
	cursor: pointer;
}
.hero-carousel__dot.is-active { background: #fff; }
/* Give the text room to clear the overlaid arrows on either side. */
.hero-carousel .hero-feature__content { padding-left: 64px; padding-right: 64px; }

/* --- Grids -----------------------------------------------------------------*/
.grid {
	display: grid;
	gap: 28px;
}
.grid--3 { grid-template-columns: repeat(3, 1fr); }
/* Self-adjusting: with an unlimited number of journals/issues/authors,
   a fixed 4-column track left empty cells whenever the collection had
   fewer than 4 items (see e.g. Featured Journals with 3 journals).
   auto-fit reflows to however many items actually exist, at any width,
   without a manual breakpoint per column count. */
.grid--4 { grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); }
.grid--2 { grid-template-columns: repeat(2, 1fr); }
@media (max-width: 1000px) {
	.grid--3 { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 640px) {
	.grid--3, .grid--2 { grid-template-columns: 1fr; }
}

/* --- Cards -----------------------------------------------------------------*/
.card {
	background: var(--ep-surface);
	border: 1px solid var(--ep-border);
	border-radius: var(--ep-radius-lg);
	overflow: hidden;
	display: flex;
	flex-direction: column;
	height: 100%;
	transition: box-shadow 0.15s ease, border-color 0.15s ease, transform 0.15s ease;
}
.card:hover, .card:focus-within {
	box-shadow: var(--ep-shadow-md);
	border-color: var(--ep-border-strong);
	transform: translateY(-2px);
}

.card__media {
	aspect-ratio: 3 / 4;
	background: var(--ep-bg-alt);
	overflow: hidden;
}
.card__media img { width: 100%; height: 100%; object-fit: cover; }
.card--wide .card__media { aspect-ratio: 16 / 10; }
.card__media--placeholder {
	display: flex;
	align-items: center;
	justify-content: center;
	color: var(--ep-muted);
	font-family: var(--ep-font-serif);
	font-size: 0.85rem;
	text-align: center;
	padding: 12px;
}

.card__body {
	padding: 20px;
	display: flex;
	flex-direction: column;
	gap: 8px;
	flex: 1;
}
.card__kicker {
	display: inline-flex;
	align-self: flex-start;
	align-items: center;
	font-size: 0.7rem;
	font-weight: 700;
	letter-spacing: 0.06em;
	text-transform: uppercase;
	color: var(--ep-primary);
	background: var(--ep-secondary-soft);
	padding: 0.3em 0.75em;
	border-radius: 100px;
}
.card__title {
	font-family: var(--ep-font-serif);
	font-size: 1.15rem;
	margin: 0;
}
.card__title a::after { content: ''; position: absolute; inset: 0; }
.card__title a { position: static; }
.card { position: relative; }
.card__excerpt {
	color: var(--ep-text-soft);
	font-size: 0.92rem;
	margin: 0;
}
.card__meta {
	margin-top: auto;
	padding-top: 10px;
	font-size: 0.82rem;
	color: var(--ep-muted);
	display: flex;
	flex-wrap: wrap;
	gap: 4px 10px;
}
.card__meta span:not(:last-child)::after { content: '\00b7'; margin-left: 10px; color: var(--ep-border-strong); }

.author-card {
	text-align: center;
	padding: 24px 16px;
}
.author-card__avatar {
	width: 88px;
	height: 88px;
	border-radius: 50%;
	overflow: hidden;
	margin: 0 auto 14px;
	background: var(--ep-secondary-soft);
	display: flex;
	align-items: center;
	justify-content: center;
	font-family: var(--ep-font-serif);
	font-size: 1.6rem;
	color: var(--ep-primary);
}
.author-card__avatar img { width: 100%; height: 100%; object-fit: cover; }
.author-card__name { font-size: 1.05rem; margin-bottom: 2px; }
.author-card__affiliation { font-size: 0.85rem; color: var(--ep-muted); }

/* --- Value proposition -------------------------------------------------- */
.value-grid {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 32px;
}
@media (max-width: 800px) { .value-grid { grid-template-columns: 1fr; } }
.value-item h3 { margin-bottom: 0.4em; }
.value-item__index {
	font-family: var(--ep-font-serif);
	font-size: 0.85rem;
	color: var(--ep-secondary);
	font-weight: 700;
	margin-bottom: 12px;
	display: block;
}
.value-item p { color: var(--ep-text-soft); margin-bottom: 0; }

/* --- CTA band (full-bleed, sits directly above the footer) --------------- */
.cta-band {
	background: var(--ep-secondary);
	padding-block: clamp(48px, 6vw, 80px);
}
.cta-band__inner {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 32px;
	flex-wrap: wrap;
}
.cta-band__text { max-width: 600px; }
.cta-band__eyebrow {
	display: inline-flex;
	align-items: center;
	gap: 12px;
	color: #aeccec;
	margin-bottom: 18px;
}
.cta-band__eyebrow::before {
	content: '';
	width: 28px;
	height: 1px;
	background: currentColor;
	opacity: 0.7;
}
.cta-band__text h2 {
	color: #fff;
	margin-bottom: 0;
	font-size: clamp(1.6rem, 1.3rem + 1.2vw, 2.3rem);
}
.cta-band__actions {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: 16px;
}
.cta-band .btn-primary { background: #fff; color: var(--ep-primary); }
.cta-band .btn-primary:hover, .cta-band .btn-primary:focus-visible { background: rgba(255, 255, 255, 0.88); }
.cta-band__link {
	color: rgba(255, 255, 255, 0.85);
	font-size: 0.92rem;
	font-weight: 600;
	text-decoration: underline;
	text-underline-offset: 3px;
}
.cta-band__link:hover, .cta-band__link:focus-visible { color: #fff; }

/* --- Badges (colored pills, purely presentational — brand tones only) --- */
.badge {
	display: inline-flex;
	align-self: flex-start;
	align-items: center;
	padding: 0.3em 0.8em;
	border-radius: 100px;
	font-size: 0.7rem;
	font-weight: 700;
	letter-spacing: 0.04em;
	text-transform: uppercase;
	white-space: nowrap;
}
.badge--1 { background: var(--ep-secondary-soft); color: var(--ep-primary); }
.badge--2 { background: rgba(0, 36, 101, 0.08); color: var(--ep-primary-dark); }
.badge--3 { background: rgba(51, 102, 153, 0.2); color: var(--ep-secondary); }
.badge--4 { background: rgba(95, 107, 120, 0.14); color: var(--ep-muted); }

/* --- Story row (compact date-block cards, homepage "Recent Issues") ----- */
.story-row {
	display: flex;
	gap: 28px;
	overflow-x: auto;
	scroll-behavior: smooth;
	scroll-snap-type: x mandatory;
	scroll-padding-inline: 24px;
	padding-bottom: 4px;
	margin-bottom: -4px;
	-webkit-overflow-scrolling: touch;
	scrollbar-width: none;
}
.story-row::-webkit-scrollbar { display: none; }
.story-row .story-card {
	flex: 0 0 auto;
	width: min(300px, 84vw);
	scroll-snap-align: start;
}

.carousel-nav { display: flex; gap: 8px; flex-shrink: 0; }
.carousel-nav__btn {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 40px;
	height: 40px;
	border-radius: 50%;
	border: 1px solid var(--ep-border-strong);
	color: var(--ep-text);
	transition: background-color 0.15s ease, border-color 0.15s ease, color 0.15s ease;
}
.carousel-nav__btn:hover, .carousel-nav__btn:focus-visible {
	background: var(--ep-primary);
	border-color: var(--ep-primary);
	color: #fff;
}
.carousel-nav__btn[disabled] { opacity: 0.35; pointer-events: none; }
.story-card {
	position: relative;
	overflow: hidden;
	display: flex;
	flex-direction: column;
	gap: 16px;
	background: transparent;
	border-radius: var(--ep-radius-lg);
	padding: 20px 0;
	transition: transform 0.15s ease;
}
.story-card:hover, .story-card:focus-within {
	transform: translateY(-2px);
}
.story-card__top {
	display: flex;
	align-items: flex-start;
	gap: 14px;
}
.story-card__date {
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	width: 54px;
	height: 54px;
	flex-shrink: 0;
	line-height: 1.1;
	background: var(--ep-bg-alt);
	border-radius: 12px;
}
.story-card__date-day { font-family: var(--ep-font-serif); font-size: 1.2rem; font-weight: 700; color: var(--ep-primary); }
.story-card__date-month { font-size: 0.62rem; font-weight: 700; letter-spacing: 0.06em; text-transform: uppercase; color: var(--ep-muted); }
.story-card__body { display: flex; flex-direction: column; gap: 8px; min-width: 0; }
.story-card__title { font-size: 1.02rem; margin: 0; }
.story-card__title a { position: static; }
.story-card__title a::after { content: ''; position: absolute; inset: 0; }
.story-card:hover .story-card__title a,
.story-card:focus-within .story-card__title a { color: var(--ep-secondary); }
.story-card__byline { display: flex; gap: 8px; font-size: 0.82rem; color: var(--ep-muted); margin: 0; }
.story-card > .badge { max-width: 100%; white-space: normal; text-align: left; align-self: flex-start; }

/* --- Featured split (one big card + a list of rows, "Latest Articles") -- */
.featured-journal-grid { display: flex; flex-direction: column; gap: 28px; }
.featured-journal-row {
	display: grid;
	/* minmax(0, Nfr), not bare Nfr: a long unbreakable word (e.g. a
	   journal name or "Neurodegenerative") in either column otherwise
	   forces that track's auto minimum above its fr share, which skews
	   the whole ratio instead of just wrapping within the track. */
	grid-template-columns: minmax(0, 1fr) minmax(0, 2.2fr);
	gap: 28px;
	align-items: stretch;
}
.featured-journal-row__list {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 20px 28px;
	align-content: start;
}
.featured-main {
	position: relative;
	overflow: hidden;
	border-radius: var(--ep-radius-lg);
	background: var(--ep-primary);
	color: #fff;
	min-height: 220px;
	display: flex;
	flex-direction: column;
	justify-content: space-between;
	gap: 16px;
	padding: clamp(20px, 2.4vw, 28px);
}
.featured-main.fill--1 { background: var(--ep-primary); }
.featured-main.fill--2 { background: var(--ep-secondary); }
.featured-main.fill--3 { background: #0f3d57; }
.featured-main.fill--4 { background: #1c2f45; }
.featured-main__media { position: absolute; inset: 0; z-index: 0; }
.featured-main__media img { width: 100%; height: 100%; object-fit: cover; }
/* Which part of a wide image shows (journal's "Homepage card background" setting). */
.featured-main__media--left img { object-position: left center; }
.featured-main__media--right img { object-position: right center; }
.featured-main--has-media::after {
	content: '';
	position: absolute;
	inset: 0;
	background: linear-gradient(180deg, rgba(0, 36, 101, 0.1) 0%, rgba(0, 26, 77, 0.92) 100%);
	z-index: 1;
}
.featured-main__body { position: relative; z-index: 2; }
.featured-main .badge { background: rgba(255, 255, 255, 0.2); color: #fff; }
.featured-main__badge {
	position: relative;
	z-index: 2;
	align-self: flex-start;
	max-width: 100%;
	white-space: normal;
	text-align: left;
}
.featured-main h3 { color: #fff; margin: 0.5em 0 0.35em; font-size: 1.2rem; overflow-wrap: break-word; }
.featured-main h3 a { position: static; }
.featured-main h3 a::after { content: ''; position: absolute; inset: 0; }
.featured-main__byline { display: flex; align-items: center; gap: 8px; font-size: 0.85rem; color: rgba(255, 255, 255, 0.85); margin: 0; }

.featured-row {
	position: relative;
}
.featured-row__badges { margin-bottom: 8px; }
.featured-row__badges .badge {
	display: inline-block;
	max-width: min(100%, 200px);
	overflow: hidden;
	text-overflow: ellipsis;
}
.featured-row__title { font-size: 0.98rem; margin: 0 0 6px; overflow-wrap: break-word; }
.featured-row__title a { position: static; }
.featured-row__title a::after { content: ''; position: absolute; inset: 0; }
.featured-row:hover .featured-row__title a,
.featured-row:focus-within .featured-row__title a { color: var(--ep-secondary); }
.featured-row__byline { font-size: 0.8rem; color: var(--ep-muted); margin: 0; }

@media (max-width: 900px) {
	.featured-journal-row__list { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 700px) {
	.featured-journal-row { grid-template-columns: 1fr; }
	.featured-main { min-height: 160px; }
}
@media (max-width: 480px) {
	.featured-journal-row__list { grid-template-columns: 1fr; }
}

/* --- News & Comment (homepage + News archive) ---------------------------- */
.news-grid {
	display: grid;
	grid-template-columns: 1.1fr 1fr;
	gap: 40px;
}
@media (max-width: 900px) { .news-grid { grid-template-columns: 1fr; } }
.news-grid__list {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 28px 24px;
}
@media (max-width: 640px) { .news-grid__list { grid-template-columns: 1fr; } }

.news-feature { display: flex; flex-direction: column; }
.news-feature__media {
	display: block;
	aspect-ratio: 4 / 3;
	max-height: 460px;
	border-radius: var(--ep-radius-lg);
	overflow: hidden;
	margin-bottom: 16px;
}
.news-feature__media img { width: 100%; height: 100%; object-fit: cover; transition: transform 0.2s ease; }
.news-feature:hover .news-feature__media img { transform: scale(1.03); }
.news-feature__title { font-family: var(--ep-font-serif); font-size: 1.4rem; margin-bottom: 10px; }
.news-feature__title a:hover, .news-feature__title a:focus-visible { color: var(--ep-secondary); }
.news-feature__excerpt { color: var(--ep-text-soft); margin-bottom: 14px; }
.news-feature__meta,
.news-card__meta {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 10px;
	font-size: 0.85rem;
	color: var(--ep-muted);
}
/* Pin the byline to the bottom of the feature card so it lines up with
   the small-card grid's bottom edge once the grid stretches this column
   taller than its own natural content height, without inflating the
   image out of proportion to do it. */
.news-feature__meta { margin-top: auto; }
.news-feature__cat,
.news-card__cat {
	color: var(--ep-secondary);
	font-weight: 700;
	text-transform: uppercase;
	font-size: 0.72rem;
	letter-spacing: 0.06em;
}

.news-card { display: flex; flex-direction: column; }
.news-card__media {
	display: block;
	aspect-ratio: 16 / 10;
	border-radius: var(--ep-radius);
	overflow: hidden;
	margin-bottom: 10px;
}
.news-card__media img { width: 100%; height: 100%; object-fit: cover; transition: transform 0.2s ease; }
.news-card:hover .news-card__media img { transform: scale(1.03); }
.news-card__title { font-family: var(--ep-font-serif); font-size: 1.05rem; line-height: 1.3; margin-bottom: 8px; }
.news-card__title a:hover, .news-card__title a:focus-visible { color: var(--ep-secondary); }
.news-card__meta { font-size: 0.8rem; }

/* --- Footer ----------------------------------------------------------------*/
.site-footer {
	background: var(--ep-primary-dark);
	color: rgba(255, 255, 255, 0.75);
}
.site-footer__top {
	padding-block: 56px;
	display: grid;
	grid-template-columns: 1.3fr 1fr 1fr 0.8fr;
	gap: 32px;
}
@media (max-width: 900px) { .site-footer__top { grid-template-columns: 1fr 1fr; } }
@media (max-width: 560px) { .site-footer__top { grid-template-columns: 1fr; } }
.footer-social {
	display: flex;
	gap: 10px;
	margin-top: 20px;
}
.footer-social a {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 36px;
	height: 36px;
	border-radius: 50%;
	background: rgba(255, 255, 255, 0.08);
	color: rgba(255, 255, 255, 0.85);
	text-decoration: none;
	transition: background-color 0.15s ease, color 0.15s ease;
}
.footer-social a:hover, .footer-social a:focus-visible {
	background: rgba(255, 255, 255, 0.18);
	color: #fff;
}
.footer-social svg { width: 16px; height: 16px; }
.site-footer h3 {
	color: #fff;
	font-family: var(--ep-font-sans);
	font-size: 0.85rem;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	margin-bottom: 16px;
}
.site-footer .site-title__accent-1 { color: #fff; }
.site-footer .site-title__accent-2 { color: #aeccec; }
.site-footer p { color: rgba(255, 255, 255, 0.65); }
.site-footer ul li { margin-bottom: 10px; }
.site-footer a:hover, .site-footer a:focus-visible { color: #fff; text-decoration: underline; }
.site-footer__bottom {
	border-top: 1px solid rgba(255, 255, 255, 0.15);
	padding-block: 20px;
	font-size: 0.82rem;
	display: flex;
	justify-content: space-between;
	flex-wrap: wrap;
	gap: 12px;
	color: rgba(255, 255, 255, 0.55);
}

/* --- Pagination --------------------------------------------------------- */
.ep-pagination { margin-top: 40px; }
.ep-pagination ul { display: flex; flex-wrap: wrap; gap: 8px; }
.ep-pagination span, .ep-pagination a {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 40px;
	height: 40px;
	padding-inline: 10px;
	border: 1px solid var(--ep-border);
	border-radius: var(--ep-radius);
}
.ep-pagination a:hover, .ep-pagination a:focus-visible { border-color: var(--ep-primary); color: var(--ep-primary); }
.ep-pagination .current { background: var(--ep-primary); border-color: var(--ep-primary); color: #fff; }

/* --- Archive / listing pages --------------------------------------------*/
.page-header {
	padding-block: 32px;
	border-bottom: 1px solid var(--ep-border);
}
.page-header h1 {
	font-size: clamp(1.5rem, 1.2rem + 1vw, 2rem);
	font-weight: 700;
}
.page-header .eyebrow { margin-bottom: 10px; }
.page-header p.lede { margin-top: 10px; margin-bottom: 0; font-size: 1rem; max-width: 62ch; }

.article-archive-search { margin-bottom: 32px; margin-inline: 0; max-width: 100%; }
.filter-bar {
	display: flex;
	flex-wrap: wrap;
	gap: 12px;
	margin-bottom: 32px;
}
.filter-bar select, .filter-bar input {
	padding: 0.6em 1em;
	border: 1px solid var(--ep-border-strong);
	border-radius: var(--ep-radius);
	background: var(--ep-surface);
}

/* --- Journal single --------------------------------------------------------*/
.journal-hero-band {
	background: var(--ep-secondary-soft);
	padding-block: clamp(56px, 7vw, 96px);
}
.journal-hero-grid {
	display: grid;
	grid-template-columns: 1fr 280px;
	gap: 56px;
	align-items: start;
}
@media (max-width: 860px) { .journal-hero-grid { grid-template-columns: 1fr; } }
@media (max-width: 860px) { .journal-hero-grid__cover { max-width: 280px; } }
.journal-hero-grid__body .eyebrow { margin-bottom: 10px; }
.journal-hero-grid__body h1 { margin-bottom: 0.3em; }
.journal-hero-grid__body .lede { margin-bottom: 0; }

.journal-meta-row {
	display: flex;
	flex-wrap: wrap;
	gap: 20px 40px;
	margin-block: 28px;
	padding-top: 24px;
	border-top: 1px solid var(--ep-border-strong);
}
.journal-meta-row__item {
	display: flex;
	flex-direction: column;
	gap: 4px;
}
.journal-meta-row__label {
	font-size: 0.72rem;
	font-weight: 700;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--ep-muted);
}
.journal-meta-row__value {
	font-weight: 600;
	font-size: 0.95rem;
}

.journal-cover-card {
	position: relative;
	aspect-ratio: 3 / 4;
	border-radius: var(--ep-radius-lg);
	overflow: hidden;
	box-shadow: var(--ep-shadow-md);
}
.journal-cover-card img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
}
.journal-cover-card--placeholder {
	background: linear-gradient(165deg, var(--ep-primary) 0%, var(--ep-primary-dark) 100%);
	color: #fff;
	display: flex;
	flex-direction: column;
	justify-content: space-between;
	padding: 20px;
}
.journal-cover-card__top {
	display: flex;
	align-items: center;
	justify-content: space-between;
}
.journal-cover-card__mark {
	font-family: var(--ep-font-serif);
	font-size: 0.85rem;
	letter-spacing: 0.03em;
	opacity: 0.85;
}
.journal-cover-card__badge {
	width: 40px;
	height: 40px;
	margin-inline-start: auto;
	border-radius: 50%;
	background: rgba(255, 255, 255, 0.15);
	border: 1px solid rgba(255, 255, 255, 0.3);
	display: flex;
	align-items: center;
	justify-content: center;
	font-size: 0.7rem;
	font-weight: 700;
	letter-spacing: 0.02em;
}
.journal-cover-card__mark-large {
	font-family: var(--ep-font-serif);
	font-size: 3.25rem;
	font-weight: 700;
	line-height: 1;
}
.journal-cover-card__caption {
	margin-top: 14px;
	font-size: 0.8rem;
	letter-spacing: 0.04em;
	text-transform: uppercase;
	color: var(--ep-muted);
}

.section-head__link {
	font-weight: 600;
	font-size: 0.92rem;
	color: var(--ep-secondary);
	white-space: nowrap;
}
.section-head__link:hover, .section-head__link:focus-visible { color: var(--ep-primary); }

.journal-article-item {
	padding-block: 28px;
	border-bottom: 1px solid var(--ep-border);
}
.journal-article-item:first-child { padding-top: 0; }
.journal-article-item:last-child { border-bottom: 0; }
.journal-article-item__meta {
	display: flex;
	align-items: center;
	gap: 10px;
	font-size: 0.85rem;
	color: var(--ep-muted);
	margin-bottom: 10px;
}
.journal-article-item__title {
	font-family: var(--ep-font-serif);
	font-size: 1.3rem;
	margin-bottom: 0.3em;
}
.journal-article-item__authors {
	font-size: 0.9rem;
	color: var(--ep-text-soft);
	margin-bottom: 8px;
}
.journal-article-item__excerpt {
	color: var(--ep-text-soft);
	max-width: 72ch;
	margin-bottom: 0;
}

.journal-scope-grid {
	display: grid;
	grid-template-columns: 1.4fr 1fr;
	gap: 56px;
}
/* Scope, Paper Types and Explore side by side when all three are present. */
.journal-scope-grid--triple { grid-template-columns: 1.1fr 0.8fr 1fr; }
@media (max-width: 860px) { .journal-scope-grid, .journal-scope-grid--triple { grid-template-columns: 1fr; } }
.journal-scope-grid .eyebrow { margin-bottom: 10px; }
.journal-scope-grid h2 { margin-bottom: 16px; }
.journal-scope-title { color: var(--ep-secondary); }
.journal-scope-grid--single {
	grid-template-columns: 1fr;
	max-width: var(--ep-content);
}
.journal-more-links {
	display: flex;
	flex-direction: column;
	gap: 12px;
}
.journal-more-links a {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 12px;
	padding: 16px 20px;
	background: var(--ep-surface);
	border: 1px solid var(--ep-border);
	border-radius: var(--ep-radius);
	font-weight: 600;
	transition: border-color 0.15s ease;
}
.journal-more-links a:hover, .journal-more-links a:focus-visible { border-color: var(--ep-secondary); color: var(--ep-secondary); }

/* --- Manuscript template downloads (Author Guide) -------------------------*/
.template-grid {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(230px, 1fr));
	gap: 14px;
}
.template-card {
	display: flex;
	align-items: center;
	gap: 14px;
	padding: 16px;
	background: #fff;
	border: 1px solid var(--ep-border);
	border-radius: var(--ep-radius-lg);
	transition: border-color 0.15s ease, box-shadow 0.15s ease;
}
.template-card__icon {
	display: flex;
	align-items: center;
	justify-content: center;
	flex-shrink: 0;
	width: 38px;
	height: 38px;
	border-radius: 50%;
	background: var(--ep-primary);
	color: #fff;
}
.template-card__label { flex: 1; font-weight: 600; color: var(--ep-text); }
.template-card__text { flex: 1; display: flex; flex-direction: column; align-items: flex-start; gap: 6px; min-width: 0; }
.template-card__text .template-card__label { flex: none; }
.template-card .badge { flex-shrink: 0; }
.template-card__download { flex-shrink: 0; color: var(--ep-border-strong); transition: color 0.15s ease; }
a.template-card:hover, a.template-card:focus-visible { border-color: var(--ep-secondary); box-shadow: 0 4px 14px rgba(0, 36, 101, 0.08); }
a.template-card:hover .template-card__download, a.template-card:focus-visible .template-card__download { color: var(--ep-secondary); }
.template-card--disabled { cursor: default; }
.template-card--disabled .template-card__icon { background: var(--ep-surface); color: var(--ep-border-strong); border: 1px solid var(--ep-border); }
.template-card--disabled .template-card__label { color: var(--ep-muted); }

.journal-facts {
	display: grid;
	grid-template-columns: max-content max-content;
	justify-content: start;
	gap: 8px 32px;
	margin-top: 20px;
	font-size: 0.92rem;
}
.journal-facts dt { color: var(--ep-muted); font-weight: 500; }
.journal-facts dd { margin: 0; font-weight: 600; }

/* --- Issue single ------------------------------------------------------- */
.issue-hero {
	display: grid;
	grid-template-columns: 220px 1fr;
	gap: 40px;
	padding-block: 40px;
	border-bottom: 1px solid var(--ep-border);
}
@media (max-width: 780px) { .issue-hero { grid-template-columns: 1fr; } }
.issue-hero__cover {
	aspect-ratio: 3 / 4;
	background: var(--ep-bg-alt);
	border-radius: var(--ep-radius-lg);
	overflow: hidden;
}
.issue-hero--flush { border: 0; padding: 0; }
.hero__actions--tight { margin-top: 20px; }
.issue-hero__cover img { width: 100%; height: 100%; object-fit: cover; }
.issue-toc-item {
	display: flex;
	justify-content: flex-start;
	gap: 20px;
	padding: 20px 0;
	border-bottom: 1px solid var(--ep-border);
}
.issue-toc-item__number {
	font-family: var(--ep-font-serif);
	color: var(--ep-muted);
	min-width: 2ch;
}
.issue-toc-item__title { font-family: var(--ep-font-serif); font-size: 1.15rem; }
.issue-toc-item__title a { color: var(--ep-primary); }
.issue-toc-item__title a:hover { color: var(--ep-secondary); text-decoration: underline; text-underline-offset: 3px; }
.issue-hero .journal-facts a { color: var(--ep-secondary); }
#contents { scroll-margin-top: 96px; }
.issue-toc-item__authors { font-size: 0.88rem; color: var(--ep-muted); margin-top: 4px; }
.issue-toc-item__pages {
	flex: 0 0 7.5rem; /* A fixed column, left-aligned, so every range starts at the same point. */
	margin-left: auto;
	padding-left: 24px;
	box-sizing: content-box;
	text-align: left;
	white-space: nowrap;
	font-size: 0.88rem;
	font-weight: 600;
	color: var(--ep-text-soft);
	font-variant-numeric: tabular-nums;
}
@media (max-width: 600px) {
	.issue-toc-item { flex-wrap: wrap; row-gap: 6px; }
	.issue-toc-item > div { flex: 1 1 0; min-width: 0; }
	.issue-toc-item__pages { flex: 0 0 100%; margin-left: 0; padding-left: calc(2ch + 20px); box-sizing: border-box; font-weight: 500; }
}

/* --- Article single ----------------------------------------------------- */
.article-header {
	padding-block: 48px 32px;
	border-bottom: 1px solid var(--ep-border);
}
.article-header .eyebrow a { color: inherit; }
.article-type-badge {
	display: inline-block;
	margin-bottom: 16px;
	padding: 5px 12px;
	border-radius: 999px;
	background: var(--ep-secondary-soft);
	color: var(--ep-primary);
	font-size: 0.72rem;
	font-weight: 700;
	letter-spacing: 0.1em;
	text-transform: uppercase;
}
.article-title { max-width: 900px; }
.article-authors {
	display: flex;
	flex-wrap: wrap;
	gap: 6px 18px;
	margin-top: 22px;
	font-size: 1.05rem;
	font-weight: 500;
}
.article-authors sup { margin-left: 2px; font-size: 0.7em; color: var(--ep-secondary); font-weight: 600; }
.article-affiliations {
	margin: 10px 0 0;
	padding: 0;
	list-style: none;
	counter-reset: ep-affiliation;
	font-size: 0.85rem;
	color: var(--ep-muted);
}
.article-affiliations li { counter-increment: ep-affiliation; }
.article-affiliations li::before {
	content: counter(ep-affiliation);
	margin-right: 6px;
	font-size: 0.75em;
	vertical-align: super;
	color: var(--ep-secondary);
	font-weight: 600;
}
.article-authors a { color: var(--ep-primary); font-weight: 600; }
.article-authors a:hover { text-decoration: underline; }
.article-authors__affiliation { color: var(--ep-muted); font-size: 0.85rem; }

.article-meta-bar {
	display: flex;
	flex-wrap: wrap;
	gap: 10px 28px;
	margin-top: 24px;
	font-size: 0.88rem;
	color: var(--ep-text-soft);
}
.article-meta-bar a { color: var(--ep-text-soft); }
.article-meta-bar a:hover { color: var(--ep-primary); text-decoration: underline; }
.article-meta-bar > *:not(:last-child)::after { content: '\00b7'; margin-left: 14px; color: var(--ep-border-strong); }
.article-meta-bar .article-meta-bar__journal { color: var(--ep-primary); font-weight: 600; }
@media (max-width: 600px) {
	.article-meta-bar { flex-direction: column; gap: 4px; }
	.article-meta-bar > *:not(:last-child)::after { content: none; }
}

.article-layout {
	display: grid;
	grid-template-columns: minmax(0, var(--ep-content)) 280px;
	gap: 56px;
	padding-block: 48px;
	align-items: start;
}
.article-layout--wide { grid-template-columns: minmax(0, 1fr) 300px; } /* Article pages: sidebar reaches the site's right edge. */
@media (max-width: 980px) {
	.article-layout { grid-template-columns: 1fr; }
	.article-sidebar { position: static; top: auto; }
}

.article-body {
	font-family: var(--ep-font-serif);
	font-size: 1.08rem;
	line-height: 1.75;
	color: var(--ep-text);
}
.article-body h2, .article-body h3 { font-family: var(--ep-font-serif); }
.article-body p { margin-bottom: 1.4em; }

.abstract-block {
	background: var(--ep-surface);
	border: 1px solid var(--ep-border);
	border-left: 4px solid var(--ep-primary);
	padding: 24px 28px;
	border-radius: var(--ep-radius);
	margin-bottom: 32px;
}
.abstract-block h2 { font-size: 1rem; text-transform: uppercase; letter-spacing: 0.08em; margin-bottom: 0.6em; }

.keyword-list { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 12px; }

/* Paper articles: Abstract + Keywords, side by side (single-ep_article.php). */
.article-summary { display: grid; gap: 24px; margin-bottom: 32px; align-items: start; }
.article-summary--split { grid-template-columns: minmax(0, 2.3fr) minmax(0, 1fr); }
.article-summary .abstract-block { margin-bottom: 0; }
.keywords-block {
	padding: 24px;
	background: var(--ep-surface);
	border: 1px solid var(--ep-border);
	border-top: 4px solid var(--ep-secondary);
	border-radius: var(--ep-radius);
	font-family: var(--ep-font-sans);
}
.keywords-block h2 { margin-bottom: 0.6em; font-size: 1rem; letter-spacing: 0.08em; text-transform: uppercase; }
.keywords-block .keyword-list { margin-top: 0; }
@media (max-width: 700px) {
	.article-summary--split { grid-template-columns: 1fr; }
}
.keyword-chip {
	font-size: 0.82rem;
	padding: 0.4em 0.9em;
	border: 1px solid var(--ep-border-strong);
	border-radius: 100px;
	color: var(--ep-text-soft);
}

.article-sidebar {
	display: flex;
	flex-direction: column;
	gap: 20px;
	position: sticky;
	top: 96px;
}
.pdf-panel {
	background: var(--ep-surface);
	border: 1px solid var(--ep-border);
	border-radius: var(--ep-radius-lg);
	padding: 24px;
}
.cite-panel__text {
	margin: 0 0 16px;
	font-size: 0.85rem;
	line-height: 1.55;
	color: var(--ep-text-soft);
	overflow-wrap: anywhere;
}
.cite-panel__text a { color: var(--ep-secondary); }
.cite-panel .btn { margin-bottom: 8px; }
.cite-panel__style { display: block; font-size: 0.75rem; color: var(--ep-muted); text-align: center; }
.keyword-list__label {
	margin: 32px 0 0;
	font-family: var(--ep-font-sans);
	font-size: 0.78rem;
	font-weight: 700;
	letter-spacing: 0.1em;
	text-transform: uppercase;
	color: var(--ep-muted);
}
.pdf-panel h2 { font-size: 0.9rem; text-transform: uppercase; letter-spacing: 0.06em; margin-bottom: 16px; }
.pdf-panel .btn { width: 100%; margin-bottom: 12px; }
.pdf-panel__note { font-size: 0.8rem; color: var(--ep-muted); margin: 0; }

.pdf-viewer {
	margin-top: 24px;
	scroll-margin-top: 24px;
}

.related-articles {
	border-top: 1px solid var(--ep-border);
	padding-block: 48px;
}

/* --- Author single -------------------------------------------------------*/
.author-header {
	display: flex;
	align-items: center;
	gap: 24px;
	padding-block: 40px;
	border-bottom: 1px solid var(--ep-border);
	flex-wrap: wrap;
}
.author-header__avatar {
	width: 96px;
	height: 96px;
	border-radius: 50%;
	background: var(--ep-secondary-soft);
	overflow: hidden;
	display: flex;
	align-items: center;
	justify-content: center;
	font-family: var(--ep-font-serif);
	font-size: 2rem;
	color: var(--ep-primary);
}
.author-header__avatar img { width: 100%; height: 100%; object-fit: cover; }
.author-facts { display: flex; flex-wrap: wrap; gap: 6px 20px; margin-top: 10px; color: var(--ep-muted); font-size: 0.92rem; }
.author-facts a { color: var(--ep-primary); }

/* --- Search results ------------------------------------------------------*/
.search-result {
	padding-block: 24px;
	border-bottom: 1px solid var(--ep-border);
}
.search-result__type {
	font-size: 0.72rem;
	font-weight: 700;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--ep-secondary);
}
.search-result h2 { font-family: var(--ep-font-serif); font-size: 1.25rem; margin: 6px 0; }
.search-result p { color: var(--ep-text-soft); margin-bottom: 0; }

/* --- Contact page ---------------------------------------------------------*/
.contact-grid { margin-top: 8px; }
.contact-grid p { color: var(--ep-text-soft); }
.contact-email {
	display: inline-block;
	margin-top: 4px;
	font-family: var(--ep-font-serif);
	font-size: 1.4rem;
	font-weight: 700;
	color: var(--ep-primary);
}
.contact-email:hover, .contact-email:focus-visible { color: var(--ep-secondary); }
.contact-grid + .entry-content {
	max-width: var(--ep-content);
	margin: 48px auto 0;
}

/* --- Generic content (pages/posts) --------------------------------------*/
.entry-content {
	font-size: 1.05rem;
}
.entry-content > * + * { margin-top: 1.2em; }
.entry-content img { border-radius: var(--ep-radius); }
.entry-content a { color: var(--ep-primary); text-decoration: underline; }
.entry-content ul, .entry-content ol {
	padding-left: 1.4em;
	margin: 1em 0;
}
.entry-content ul { list-style: disc; }
.entry-content ol { list-style: decimal; }
.entry-content li { margin-bottom: 0.5em; color: var(--ep-text-soft); }
.entry-content li::marker { color: var(--ep-secondary); }

.empty-state {
	padding-block: 64px;
	text-align: center;
	color: var(--ep-muted);
}

/* --- 404 -------------------------------------------------------------------*/
.error-404 {
	text-align: center;
	padding-block: clamp(64px, 10vw, 128px);
}
.error-404 .lede { margin-inline: auto; }
.error-404 .header-search__form { margin: 32px auto 0; }
.error-404 .hero__actions { justify-content: center; margin-top: 32px; }
.error-404 .error-code {
	font-family: var(--ep-font-serif);
	font-size: 5rem;
	color: var(--ep-border-strong);
	font-weight: 700;
}

/* --- Info / policy pages -------------------------------------------------
   Shared components for the static informational pages (Open Access, APC,
   Editorial Process, Policies, Editorial Board, Author Guide, Contact,
   Actions/Awards placeholders). Long-form policy pages use a narrow
   .content-width column for reading comfort. */

.policy-nav {
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
	margin-bottom: 40px;
}
.policy-nav a {
	font-size: 0.85rem;
	font-weight: 600;
	padding: 0.5em 1em;
	border: 1px solid var(--ep-border);
	border-radius: 100px;
	color: var(--ep-text-soft);
}
.policy-nav a:hover, .policy-nav a:focus-visible {
	border-color: var(--ep-secondary);
	color: var(--ep-primary);
}
.policy-nav a[aria-current="page"] {
	background: var(--ep-primary);
	border-color: var(--ep-primary);
	color: #fff;
}

.policy-lede {
	font-size: 1.05rem;
	color: var(--ep-text-soft);
	margin-bottom: 40px;
}
.policy-lede--tight { margin-top: 16px; margin-bottom: 0; }
.section-follow { margin-top: 48px; }
.policy-back-link { margin-bottom: 24px; }
.policy-back-link a { color: var(--ep-secondary); font-weight: 600; font-size: 0.9rem; }

.policy-section {
	padding-block: 32px;
	border-top: 1px solid var(--ep-border);
	scroll-margin-top: 96px;
}
.policy-section:first-of-type { border-top: 0; padding-top: 0; }
.policy-section__head {
	display: flex;
	align-items: baseline;
	gap: 16px;
	margin-bottom: 16px;
}
.policy-section__index {
	font-family: var(--ep-font-serif);
	font-size: 1.5rem;
	font-weight: 700;
	color: var(--ep-secondary);
	line-height: 1;
	flex-shrink: 0;
}
.policy-section h2 { margin: 0; }
.policy-section h3 {
	font-family: var(--ep-font-sans);
	font-size: 1rem;
	font-weight: 700;
	margin-top: 1.6em;
}
.policy-section p { color: var(--ep-text-soft); }
.policy-section .policy-list {
	margin: 1em 0;
	display: flex;
	flex-direction: column;
	gap: 14px;
}
.policy-list li {
	padding-left: 22px;
	position: relative;
	color: var(--ep-text-soft);
}
.policy-list li::before {
	content: '';
	position: absolute;
	left: 0;
	top: 0.55em;
	width: 8px;
	height: 8px;
	border-radius: 2px;
	background: var(--ep-secondary);
}
.policy-list li strong { color: var(--ep-text); }
.policy-quote {
	background: var(--ep-bg-alt);
	border-left: 4px solid var(--ep-primary);
	border-radius: var(--ep-radius);
	padding: 20px 24px;
	margin: 24px 0;
	font-size: 0.95rem;
	color: var(--ep-text);
}

/* Scope / plain checklist (no ::before dash needed — used on the journal page) */
.plain-list { display: flex; flex-direction: column; gap: 10px; }
.plain-list li {
	padding: 10px 16px;
	background: var(--ep-bg-alt);
	border-radius: var(--ep-radius);
	font-weight: 500;
}

/* Placeholder / "to be provided" state — used for board names, emails,
   APC amounts and anything the client hasn't supplied yet. */
.tbd {
	display: inline-flex;
	align-items: center;
	gap: 0.5em;
	font-style: italic;
	color: var(--ep-muted);
	background: var(--ep-bg-alt);
	border: 1px dashed var(--ep-border-strong);
	border-radius: 100px;
	padding: 0.3em 0.9em;
	font-size: 0.9rem;
}

/* Editorial Board ---------------------------------------------------------*/
.board-role {
	padding-block: 32px;
	border-top: 1px solid var(--ep-border);
}
.board-role:first-of-type { border-top: 0; padding-top: 0; }
.board-role__title {
	font-family: var(--ep-font-sans);
	font-size: 0.78rem;
	font-weight: 700;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--ep-secondary);
	margin-bottom: 10px;
	display: block;
}
.board-role__name {
	font-family: var(--ep-font-serif);
	font-size: 1.3rem;
	margin: 0;
}
.board-role__list { display: flex; flex-direction: column; gap: 14px; }
.board-role__affiliation { margin: 2px 0 0; font-size: 0.95rem; color: var(--ep-text-soft); }

/* Awards page ---------------------------------------------------------- */
.award-item { padding-block: 28px; border-top: 1px solid var(--ep-border); }
.award-item:first-of-type { border-top: 0; padding-top: 0; }
.award-item__title { font-family: var(--ep-font-serif); font-size: 1.25rem; margin-bottom: 6px; }
.award-item__eligible {
	display: block;
	font-size: 0.78rem;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 0.06em;
	color: var(--ep-secondary);
	margin-bottom: 10px;
}
.award-item p { color: var(--ep-text-soft); margin: 0; }
.award-item__timeline { margin-top: 16px; }
.award-item .award-item__eligibility-period { font-weight: 400; color: var(--ep-text-soft); margin-bottom: 10px; }
.award-item .award-item__key-dates-label {
	font-size: 0.78rem;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 0.06em;
	color: var(--ep-secondary);
	margin-bottom: 6px;
}
.award-item .award-item__eligibility-label { margin-bottom: 0; margin-right: 2px; }
.award-item__key-dates { display: flex; flex-direction: column; gap: 4px; color: var(--ep-text-soft); }

/* Awards page: expandable "Governance & Selection Process" section, opened
   via a "+ More Information" toggle so the long committee/jury text doesn't
   push the eligibility period and key dates (the part visitors need first)
   further down the page. Built on native <details>/<summary> for built-in
   keyboard and screen-reader support. */
.award-more { margin-top: 6px; }
.award-more__toggle {
	display: inline-flex;
	align-items: center;
	gap: 10px;
	font-weight: 700;
	font-size: 0.95rem;
	color: var(--ep-secondary);
	cursor: pointer;
	list-style: none;
	padding: 6px 0;
}
.award-more__toggle::-webkit-details-marker { display: none; }
.award-more__toggle::marker { content: ""; }
.award-more__icon {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 22px;
	height: 22px;
	flex-shrink: 0;
	border-radius: 50%;
	border: 1.5px solid var(--ep-secondary);
	font-size: 1rem;
	line-height: 1;
}
.award-more__icon::before { content: "+"; }
.award-more[open] .award-more__icon::before { content: "\2212"; }
.award-more__toggle:hover .award-more__icon,
.award-more__toggle:focus-visible .award-more__icon { background: var(--ep-secondary); color: #fff; }
.award-more__toggle:focus-visible { outline: 3px solid var(--ep-secondary); outline-offset: 3px; }
.award-more__content { padding-top: 18px; }
.award-more__title {
	font-family: var(--ep-font-serif);
	font-size: 1.2rem;
	font-weight: 700;
	color: var(--ep-text);
	margin: 0 0 16px;
	padding-bottom: 12px;
	border-bottom: 1px solid var(--ep-border);
}
.award-more__subhead {
	font-family: var(--ep-font-serif);
	font-size: 1.05rem;
	color: var(--ep-secondary);
	margin: 22px 0 8px;
}
.award-more__content > .award-more__subhead:first-child { margin-top: 0; }
.award-more__content p { color: var(--ep-text-soft); margin: 0 0 10px; }
.award-more__content ul {
	margin: 0 0 10px;
	padding-left: 20px;
	color: var(--ep-text-soft);
	display: flex;
	flex-direction: column;
	gap: 6px;
}
.award-more__content li strong { color: var(--ep-text); }

/* One award's governance toggle, sitting at the edge of that award's own
   block rather than as a page-wide section — the summary right-aligns
   itself (an inline-flex element responds to the parent's text-align),
   while its revealed content resets back to normal left-aligned reading. */
.award-more--inline { margin-top: 14px; text-align: right; }
.award-more--inline .award-more__content { text-align: left; }

/* Editorial workflow (Editorial Process page) ------------------------------*/
.workflow {
	position: relative;
	padding-left: 52px;
}
.workflow::before {
	content: '';
	position: absolute;
	left: 19px;
	top: 8px;
	bottom: 8px;
	width: 2px;
	background: var(--ep-border);
}
.workflow-step {
	position: relative;
	padding-bottom: 40px;
}
.workflow-step:last-child { padding-bottom: 0; }
.workflow-step__index {
	position: absolute;
	left: -52px;
	top: 0;
	width: 40px;
	height: 40px;
	border-radius: 50%;
	background: var(--ep-primary);
	color: #fff;
	display: flex;
	align-items: center;
	justify-content: center;
	font-family: var(--ep-font-serif);
	font-weight: 700;
	font-size: 1.05rem;
}
.workflow-step__title { margin-bottom: 12px; }
.workflow-step__grid {
	display: grid;
	grid-template-columns: repeat(2, 1fr);
	gap: 16px;
	background: var(--ep-surface);
	border: 1px solid var(--ep-border);
	border-radius: var(--ep-radius);
	padding: 18px 20px;
}
@media (max-width: 560px) { .workflow-step__grid { grid-template-columns: 1fr; } }
.workflow-step__grid dt {
	font-size: 0.72rem;
	font-weight: 700;
	letter-spacing: 0.06em;
	text-transform: uppercase;
	color: var(--ep-muted);
	margin-bottom: 4px;
}
.workflow-step__grid dd { margin: 0; color: var(--ep-text); font-weight: 500; }
.workflow-step__outcome-line { display: block; }
.workflow-step__outcome-line + .workflow-step__outcome-line { margin-top: 4px; }

/* Pricing table (Article Processing Charge) / generic academic data table --*/
.pricing-table, .data-table {
	width: 100%;
	table-layout: fixed;
	border: 1px solid var(--ep-border);
	border-radius: var(--ep-radius);
	overflow: hidden;
	margin-block: 24px;
	border-collapse: separate;
	border-spacing: 0;
}
.pricing-table th, .pricing-table td,
.data-table th, .data-table td {
	padding: 14px 20px;
	text-align: left;
	border-bottom: 1px solid var(--ep-border);
	overflow-wrap: break-word;
}
.pricing-table thead th, .data-table thead th {
	background: var(--ep-bg-alt);
	font-size: 0.78rem;
	font-weight: 700;
	letter-spacing: 0.06em;
	text-transform: uppercase;
	color: var(--ep-text-soft);
}
.pricing-table tbody tr:last-child th,
.pricing-table tbody tr:last-child td,
.data-table tbody tr:last-child th,
.data-table tbody tr:last-child td { border-bottom: 0; }
.pricing-table td.is-amount { font-weight: 700; font-family: var(--ep-font-serif); font-size: 1.05rem; }

/* Actions archive (row list) ------------------------------------------------*/
.action-list { display: flex; flex-direction: column; }
.action-row { border-bottom: 1px solid var(--ep-border); }
.action-row:first-child { border-top: 1px solid var(--ep-border); }
.action-row__link {
	display: flex;
	align-items: center;
	gap: 20px;
	padding: 20px 4px;
	transition: background-color 0.15s ease;
}
.action-row__link:hover, .action-row__link:focus-visible { background: var(--ep-bg-alt); }
.action-row__number {
	flex-shrink: 0;
	font-family: var(--ep-font-serif);
	font-weight: 700;
	color: var(--ep-primary);
	background: var(--ep-secondary-soft);
	padding: 0.3em 0.75em;
	border-radius: 100px;
	font-size: 0.85rem;
}
.action-row__body { display: flex; flex-direction: column; gap: 4px; }
.action-row__title { font-family: var(--ep-font-serif); font-size: 1.15rem; color: var(--ep-text); }
.action-row__dates { font-size: 0.85rem; color: var(--ep-muted); }

/* Single Action page --------------------------------------------------------*/
/* Underline-style tabs — deliberately not the boxed "folder tab" look real
   COST Action pages use; a bottom-border indicator reads as editorial
   rather than software-portal, closer to the rest of this site. */
.action-tabs {
	display: flex;
	flex-wrap: wrap;
	gap: 4px 28px;
	border-bottom: 1px solid var(--ep-border);
	margin-bottom: 32px;
}
.action-tabs__tab {
	background: none;
	border: 0;
	border-bottom: 2px solid transparent;
	padding: 12px 2px;
	margin-bottom: -1px;
	font-family: var(--ep-font-sans);
	font-size: 0.92rem;
	font-weight: 600;
	color: var(--ep-muted);
	white-space: nowrap;
	cursor: pointer;
	outline: none;
	transition: color 0.15s ease, border-color 0.15s ease;
}
.action-tabs__tab:hover, .action-tabs__tab:focus-visible { color: var(--ep-primary); }
.action-tabs__tab:focus-visible { outline: 2px solid var(--ep-secondary); outline-offset: 3px; border-radius: 3px; }
.action-tabs__tab.is-active { color: var(--ep-primary); border-bottom-color: var(--ep-secondary); }
.action-tabs__panel[hidden] { display: none; }
.action-tabs__panel-title {
	font-family: var(--ep-font-sans);
	font-size: 0.78rem;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 0.06em;
	color: var(--ep-muted);
	margin-bottom: 16px;
}
.research-group { margin-bottom: 32px; }
.research-group:last-child { margin-bottom: 0; }
.research-group__title {
	display: flex;
	align-items: baseline;
	gap: 10px;
	font-family: var(--ep-font-serif);
	font-size: 1.05rem;
	margin-bottom: 12px;
}
.research-group__number { color: var(--ep-secondary); font-weight: 700; flex-shrink: 0; }

.action-panel {
	background: var(--ep-surface);
	border: 1px solid var(--ep-border);
	border-radius: var(--ep-radius-lg);
	padding: 24px;
	position: sticky;
	top: 96px;
}
.action-panel h2 { font-size: 0.9rem; text-transform: uppercase; letter-spacing: 0.06em; margin-bottom: 16px; }
.action-panel__facts { display: flex; flex-direction: column; gap: 10px; margin-bottom: 32px; font-size: 0.9rem; }
.action-panel__facts dt { color: var(--ep-muted); font-weight: 500; }
.action-panel__facts dd { margin: 2px 0 0; font-weight: 600; color: var(--ep-text); }
.action-panel__list { display: flex; flex-direction: column; gap: 12px; }
.action-panel__list a { color: var(--ep-primary); font-weight: 600; font-size: 0.92rem; }
.action-panel__list a:hover { text-decoration: underline; }
@media (max-width: 980px) { .action-panel { position: static; top: auto; } }
.action-panel__contact {
	display: flex;
	flex-direction: column;
	gap: 2px;
	margin: 20px 0 0;
	padding-top: 16px;
	border-top: 1px solid var(--ep-border);
	font-size: 0.88rem;
}
.action-panel__contact span { color: var(--ep-muted); font-weight: 500; }
.action-panel__contact a { color: var(--ep-secondary); font-weight: 600; overflow-wrap: anywhere; }
.action-panel__contact a:hover { text-decoration: underline; }
/* Taller than a short screen once metrics are in — don't pin it there,
   or its lower part can't be scrolled into view. */
@media (max-height: 920px) { .action-panel { position: static; top: auto; } }

/* Call Metrics: results of a call, 2×2 tiles under Details --------------- */
.call-metrics {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 10px;
	margin: 0 0 32px;
}
.call-metrics__item {
	display: flex;
	flex-direction: column-reverse; /* Number on top, its label beneath. */
	justify-content: flex-end;
	gap: 4px;
	padding: 14px 12px;
	border: 1px solid var(--ep-border);
	border-radius: var(--ep-radius);
	background: var(--ep-bg);
}
.call-metrics__item dd {
	margin: 0;
	font-family: var(--ep-font-serif);
	font-size: 1.6rem;
	font-weight: 700;
	line-height: 1.1;
	color: var(--ep-primary);
	font-variant-numeric: tabular-nums;
}
.call-metrics__item dt {
	font-size: 0.78rem;
	font-weight: 500;
	line-height: 1.3;
	color: var(--ep-muted);
}
.call-metrics__item--rate dd { color: var(--ep-secondary); }

/* Generic academic table styling for any WYSIWYG table content */
.entry-content table {
	margin-block: 24px;
	border: 1px solid var(--ep-border);
	border-radius: var(--ep-radius);
	overflow: hidden;
}
.entry-content th, .entry-content td {
	padding: 12px 16px;
	border-bottom: 1px solid var(--ep-border);
	text-align: left;
}
.entry-content thead th { background: var(--ep-bg-alt); }

/* "Coming soon" placeholder page (Actions, Awards) -------------------------*/
.coming-soon {
	text-align: center;
	margin-inline: auto;
	padding-block: clamp(64px, 10vw, 112px);
}
.coming-soon__badge {
	display: inline-block;
	font-size: 0.75rem;
	font-weight: 700;
	letter-spacing: 0.1em;
	text-transform: uppercase;
	color: var(--ep-secondary);
	background: var(--ep-secondary-soft);
	padding: 0.4em 1.1em;
	border-radius: 100px;
	margin-bottom: 20px;
}
.coming-soon p { color: var(--ep-muted); max-width: 46ch; margin-inline: auto; }
.coming-soon__content { text-align: left; margin-top: 32px; }

/* Author Guide quick links --------------------------------------------------*/
.guide-links {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 16px;
	margin-top: 16px;
}
@media (max-width: 780px) { .guide-links { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 520px) { .guide-links { grid-template-columns: 1fr; } }
.guide-links a {
	display: block;
	padding: 18px 20px;
	background: var(--ep-surface);
	border: 1px solid var(--ep-border);
	border-radius: var(--ep-radius);
	font-weight: 600;
	color: var(--ep-text);
	transition: border-color 0.15s ease, box-shadow 0.15s ease;
}
.guide-links a:hover, .guide-links a:focus-visible {
	border-color: var(--ep-secondary);
	box-shadow: var(--ep-shadow-sm);
	color: var(--ep-primary);
}

/* Archive grouped by year ---------------------------------------------------*/
.archive-year {
	margin-bottom: 56px;
}
.archive-year:last-child { margin-bottom: 0; }
.archive-year__head {
	display: flex;
	align-items: baseline;
	gap: 16px;
	margin-bottom: 24px;
	padding-bottom: 12px;
	border-bottom: 2px solid var(--ep-primary);
}
.archive-year__head h2 {
	font-size: 2rem;
	margin: 0;
	color: var(--ep-primary);
}
.archive-year__count {
	font-size: 0.85rem;
	color: var(--ep-muted);
}

/* --- Artwork pages (template-parts/artwork-viewer.php, assets/js/artwork.js) */
.artwork { margin: 0 0 40px; font-family: var(--ep-font-sans); }
.artwork__stage {
	padding: clamp(16px, 4vw, 40px);
	background: var(--ep-surface);
	border: 1px solid var(--ep-border);
	border-radius: var(--ep-radius-lg);
	box-shadow: var(--ep-shadow-sm);
}
.artwork__main {
	position: relative;
	display: block;
	width: 100%;
	padding: 0;
	border: 0;
	background: none;
	cursor: zoom-in;
}
.artwork__img {
	display: block;
	width: auto;
	max-width: 100%;
	height: auto;
	max-height: 70vh;
	margin: 0 auto;
	box-shadow: 0 10px 30px rgba(15, 23, 32, 0.18);
}
.artwork__zoom {
	position: absolute;
	right: 10px;
	bottom: 10px;
	display: inline-flex;
	align-items: center;
	gap: 6px;
	padding: 6px 12px;
	border-radius: 999px;
	background: rgba(0, 26, 77, 0.8);
	color: #fff;
	font-size: 0.75rem;
	font-weight: 600;
	opacity: 0;
	transition: opacity 0.2s ease;
}
.artwork__main:hover .artwork__zoom,
.artwork__main:focus-visible .artwork__zoom { opacity: 1; }
.artwork__main:focus-visible { outline: 3px solid var(--ep-secondary); outline-offset: 4px; }
.artwork__thumbs { display: flex; flex-wrap: wrap; gap: 10px; margin: 16px 0 0; padding: 0; list-style: none; }
.artwork__thumb {
	display: block;
	width: 72px;
	height: 72px;
	padding: 0;
	border: 2px solid transparent;
	border-radius: var(--ep-radius);
	background: var(--ep-bg-alt);
	overflow: hidden;
	cursor: pointer;
	opacity: 0.7;
	transition: opacity 0.15s ease, border-color 0.15s ease;
}
.artwork__thumb img { display: block; width: 100%; height: 100%; object-fit: cover; }
.artwork__thumb:hover { opacity: 1; }
.artwork__thumb.is-active { border-color: var(--ep-secondary); opacity: 1; }
.artwork__note { margin: 12px 0 0; font-size: 0.85rem; color: var(--ep-muted); font-style: italic; }
.artwork__caption {
	display: flex;
	flex-direction: column;
	gap: 2px;
	margin-top: 20px;
	padding-left: 14px;
	border-left: 3px solid var(--ep-secondary);
	font-size: 0.92rem;
	line-height: 1.5;
	color: var(--ep-text-soft);
}
.artwork__caption-title { font-family: var(--ep-font-serif); font-size: 1.1rem; color: var(--ep-text); }
.artwork__caption-meta { margin-top: 4px; font-size: 0.78rem; font-weight: 600; letter-spacing: 0.06em; text-transform: uppercase; color: var(--ep-secondary); }

.artwork-viewer {
	position: fixed;
	inset: 0;
	z-index: 100000;
	display: none;
	align-items: center;
	justify-content: center;
	padding: 64px 72px;
	background: var(--ep-primary-dark);
}
.artwork-viewer.is-open { display: flex; }
.artwork-viewer-open { overflow: hidden; }
.artwork-viewer__img { max-width: 100%; max-height: 100%; object-fit: contain; box-shadow: 0 20px 60px rgba(0, 0, 0, 0.45); }
.artwork-viewer__close,
.artwork-viewer__nav {
	position: absolute;
	display: flex;
	align-items: center;
	justify-content: center;
	width: 48px;
	height: 48px;
	padding: 0;
	border: 0;
	border-radius: 50%;
	background: rgba(255, 255, 255, 0.08);
	color: #fff;
	cursor: pointer;
	transition: background-color 0.15s ease;
}
.artwork-viewer__close:hover,
.artwork-viewer__nav:hover { background: rgba(255, 255, 255, 0.2); }
.artwork-viewer__close:focus-visible,
.artwork-viewer__nav:focus-visible { outline: 2px solid #fff; outline-offset: 2px; }
.artwork-viewer__close { top: 12px; right: 12px; }
.artwork-viewer__nav { top: 50%; transform: translateY(-50%); }
.artwork-viewer__nav--prev { left: 12px; }
.artwork-viewer__nav--next { right: 12px; }
.artwork-viewer__count,
.artwork-viewer__note {
	position: absolute;
	left: 50%;
	transform: translateX(-50%);
	margin: 0;
	color: rgba(255, 255, 255, 0.85);
	font-size: 0.85rem;
	text-align: center;
}
.artwork-viewer__count { bottom: 20px; font-weight: 600; letter-spacing: 0.08em; }
.artwork-viewer__note { bottom: 44px; max-width: 80%; font-style: italic; }
@media (max-width: 600px) {
	.artwork-viewer { padding: 64px 12px 88px; }
	.artwork-viewer__nav { top: auto; bottom: 12px; transform: none; }
	.artwork-viewer__count { bottom: 26px; }
	.artwork-viewer__note { bottom: 64px; }
}

/* --- dFlip lightbox (flipbook issues, inc/issue-flipbook.php) ---------- */
body .df-lightbox-bg,
body .df-lightbox-wrapper .df-bg { background-color: var(--ep-primary-dark) !important; }
body .df-lightbox-close { color: #fff; }

/* --- Issue tiles (template-parts/issue-card.php, issue archives) ------- */
.issue-grid {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
	gap: 40px 28px;
}
.issue-tile {
	display: flex;
	flex-direction: column;
	gap: 16px;
	color: inherit;
	text-decoration: none;
}
.issue-tile__cover {
	position: relative;
	aspect-ratio: 3 / 4;
	border-radius: var(--ep-radius-lg);
	overflow: hidden;
	background: var(--ep-bg-alt);
	border: 1px solid var(--ep-border);
	box-shadow: var(--ep-shadow-sm);
	transition: transform 0.2s ease, box-shadow 0.2s ease;
}
.issue-tile__cover img { display: block; width: 100%; height: 100%; object-fit: cover; }
.issue-tile:hover .issue-tile__cover,
.issue-tile:focus-visible .issue-tile__cover {
	transform: translateY(-4px);
	box-shadow: var(--ep-shadow-md);
}
.issue-tile:focus-visible { outline: none; }
.issue-tile:focus-visible .issue-tile__cover { outline: 3px solid var(--ep-secondary); outline-offset: 3px; }
.issue-tile__placeholder {
	position: absolute;
	inset: 0;
	display: flex;
	flex-direction: column;
	justify-content: space-between;
	padding: 22px 20px;
	background:
		radial-gradient(circle at 85% 12%, rgba(255, 255, 255, 0.12) 0 22%, transparent 23%),
		linear-gradient(160deg, var(--ep-secondary) 0%, var(--ep-primary) 55%, var(--ep-primary-dark) 100%);
	color: #fff;
}
.issue-tile__placeholder-journal {
	font-size: 0.7rem;
	font-weight: 600;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	opacity: 0.85;
}
.issue-tile__placeholder-main {
	font-family: var(--ep-font-serif);
	font-size: 1.6rem;
	font-weight: 700;
	line-height: 1.15;
	border-top: 1px solid rgba(255, 255, 255, 0.35);
	padding-top: 14px;
}
.issue-tile__placeholder-year { font-size: 0.85rem; opacity: 0.8; }
.issue-tile__badge {
	position: absolute;
	right: 12px;
	bottom: 12px;
	padding: 4px 10px;
	border-radius: 999px;
	background: var(--ep-surface);
	color: var(--ep-primary);
	font-size: 0.68rem;
	font-weight: 700;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	box-shadow: var(--ep-shadow-sm);
}
.issue-tile__journal {
	display: block;
	margin-bottom: 4px;
	font-size: 0.72rem;
	font-weight: 600;
	letter-spacing: 0.1em;
	text-transform: uppercase;
	color: var(--ep-secondary);
}
.issue-tile__title {
	margin: 0;
	font-family: var(--ep-font-serif);
	font-size: 1.15rem;
	font-weight: 600;
	line-height: 1.3;
	color: var(--ep-text);
}
.issue-tile:hover .issue-tile__title { color: var(--ep-primary); text-decoration: underline; text-underline-offset: 3px; }
.issue-tile__meta { margin: 6px 0 0; font-size: 0.85rem; color: var(--ep-muted); }
@media (max-width: 600px) {
	.issue-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 28px 16px; }
	.issue-tile__placeholder { padding: 16px 14px; }
	.issue-tile__placeholder-main { font-size: 1.2rem; }
}

/* --- Comments (pages only) --------------------------------------------- */
.comments-area { border-top: 1px solid var(--ep-border); padding-top: 32px; margin-top: 48px; }
.comment-list { margin-top: 24px; }
.comment-list > li { padding: 16px 0; border-bottom: 1px solid var(--ep-border); }
.comment-form input, .comment-form textarea {
	width: 100%;
	padding: 0.7em 1em;
	border: 1px solid var(--ep-border-strong);
	border-radius: var(--ep-radius);
	margin-bottom: 14px;
	background: var(--ep-surface);
}

/* --- Manuscript submission (temporary — see inc/submissions.php) -------- */
.form-notice {
	background: var(--ep-bg-alt);
	border: 1px solid var(--ep-border);
	border-radius: var(--ep-radius);
	padding: 20px 24px;
	margin-bottom: 32px;
}
.form-notice p:last-child { margin-bottom: 0; }
.form-notice--error {
	background: rgba(178, 46, 46, 0.08);
	border-color: rgba(178, 46, 46, 0.3);
	color: #8a2020;
}
.form-notice--success {
	background: rgba(30, 130, 76, 0.08);
	border-color: rgba(30, 130, 76, 0.3);
	color: #1c6b41;
}

.submission-form { display: flex; flex-direction: column; gap: 20px; max-width: 640px; }
.form-field { display: flex; flex-direction: column; gap: 8px; }
.form-field label { font-weight: 600; font-size: 0.92rem; }
.form-field input[type="text"],
.form-field input[type="email"],
.form-field input[type="file"],
.form-field select,
.form-field textarea {
	padding: 0.75em 1em;
	border: 1px solid var(--ep-border-strong);
	border-radius: var(--ep-radius);
	background: var(--ep-surface);
	font-size: 0.95rem;
}
.form-field textarea { resize: vertical; }

/* --- Submit Your Paper form (page-submit-manuscript.php) ---------------- */
.sub-form { max-width: none; gap: 28px; }
.sub-form__section {
	margin: 0;
	padding: 28px;
	border: 1px solid var(--ep-border);
	border-radius: var(--ep-radius-lg);
	background: var(--ep-surface);
	display: flex;
	flex-direction: column;
	gap: 20px;
	min-width: 0;
}
.sub-form__section legend {
	display: flex;
	align-items: center;
	gap: 10px;
	padding: 0 8px;
	margin-left: -8px;
	font-family: var(--ep-font-serif);
	font-size: 1.2rem;
	font-weight: 700;
	color: var(--ep-primary);
}
.sub-form__section legend span {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 28px;
	height: 28px;
	border-radius: 50%;
	background: var(--ep-primary);
	color: #fff;
	font-family: var(--ep-font-sans);
	font-size: 0.85rem;
}
.sub-form__grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px 20px; }
.sub-form__full { grid-column: 1 / -1; }
.sub-form .form-field input[type="number"] {
	padding: 0.75em 1em;
	border: 1px solid var(--ep-border-strong);
	border-radius: var(--ep-radius);
	background: var(--ep-surface);
	font-size: 0.95rem;
}
/* Only after the visitor has touched the field or tried to send. */
.sub-form .form-field input:user-invalid:not(:focus),
.sub-form .form-field select:user-invalid:not(:focus),
.sub-form .form-field textarea:user-invalid:not(:focus) { border-color: #b32d2e; }
.sub-form__req { color: #b32d2e; }
.sub-form__hint { font-size: 0.82rem; color: var(--ep-muted); margin: 0; }
.sub-form__author {
	padding: 18px;
	border: 1px solid var(--ep-border);
	border-radius: var(--ep-radius);
	background: var(--ep-bg);
}
.sub-form__author + .sub-form__author { margin-top: 14px; }
.sub-form__author-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 12px; font-size: 0.9rem; color: var(--ep-primary); }
.sub-form__remove { border: 0; background: none; color: #b32d2e; font-size: 0.85rem; font-weight: 600; cursor: pointer; padding: 0; }
.sub-form__add { align-self: flex-start; }
.sub-form__checks { display: flex; flex-direction: column; gap: 12px; }
.sub-form__check { display: flex; gap: 12px; align-items: flex-start; font-size: 0.92rem; line-height: 1.5; cursor: pointer; }
.sub-form__check input { margin-top: 3px; width: 18px; height: 18px; flex: 0 0 auto; accent-color: var(--ep-primary); }
.sub-form__check a { color: var(--ep-secondary); text-decoration: underline; }
/* Parts the form script hides (artwork images for paper journals, the
   guardian or adult note) stay hidden even where .form-field sets display. */
.sub-form [hidden] { display: none !important; }
/* Section 3: age choice — under 18 shows the parent / guardian fields,
   18 or older a note that the author consents by email. */
.sub-form__question { margin: 0 0 -14px; font-weight: 600; font-size: 0.92rem; color: var(--ep-text, inherit); }
.sub-form__choice { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
.sub-form__option {
	display: flex;
	align-items: center;
	gap: 12px;
	padding: 14px 16px;
	border: 1px solid var(--ep-border-strong);
	border-radius: var(--ep-radius);
	background: var(--ep-surface);
	font-size: 0.95rem;
	font-weight: 500;
	cursor: pointer;
	transition: border-color 0.15s, background-color 0.15s;
}
.sub-form__option:hover { background: var(--ep-surface-hover); }
.sub-form__option input { width: 18px; height: 18px; margin: 0; flex: 0 0 auto; accent-color: var(--ep-primary); }
.sub-form__option:has(input:checked) { border-color: var(--ep-primary); box-shadow: inset 0 0 0 1px var(--ep-primary); background: var(--ep-surface-hover); }
.sub-form__option:has(input:focus-visible) { outline: 2px solid var(--ep-secondary); outline-offset: 2px; }
.sub-form__age-note { padding: 14px 16px; border-left: 3px solid var(--ep-secondary); background: var(--ep-surface-hover); border-radius: 0 var(--ep-radius) var(--ep-radius) 0; }
.sub-form__age-note p { margin: 0; font-size: 0.9rem; line-height: 1.55; }
.sub-form__guardian:not([hidden]) { display: flex; flex-direction: column; gap: 14px; padding-top: 20px; border-top: 1px solid var(--ep-border); }
.sub-form__subhead { margin: 0; font-family: var(--ep-font-serif); font-size: 1.05rem; color: var(--ep-primary); }
/* Sections 2–5 and the button sit in one wrapper — space them like the form. */
.sub-form > [data-needs-journal]:not([hidden]) { display: flex; flex-direction: column; gap: 28px; }
.sub-form__submit { display: flex; align-items: center; gap: 16px; flex-wrap: wrap; padding-top: 4px; }
.sub-form__submit .btn { padding: 1em 2.6em; font-size: 1rem; }
.sub-form__submit .btn[disabled] { opacity: 0.6; cursor: progress; }
/* Submit and Contact forms: fields fill their column and may shrink with
   it (iPhone Safari gives text inputs a wide natural width that otherwise
   spills out of the card / page). */
.submission-form .form-field,
.contact-grid > * { min-width: 0; }
.submission-form .form-field input:not([type="checkbox"]),
.submission-form .form-field select,
.submission-form .form-field textarea { width: 100%; max-width: 100%; min-width: 0; box-sizing: border-box; }
@media (max-width: 600px) {
	.sub-form__section { padding: 20px 16px; }
	.sub-form__author { padding: 16px 14px; }
	.sub-form__grid { grid-template-columns: minmax(0, 1fr); }
	.sub-form__choice { grid-template-columns: minmax(0, 1fr); }
	/* 16px keeps iPhone from zooming in when a field is tapped. */
	.submission-form .form-field input:not([type="checkbox"]),
	.submission-form .form-field select,
	.submission-form .form-field textarea { font-size: 16px; }
	.sub-form__submit .btn { width: 100%; justify-content: center; }
}

.submission-status {
	display: inline-block;
	font-size: 0.78rem;
	font-weight: 700;
	padding: 0.3em 0.8em;
	border-radius: 100px;
	background: var(--ep-bg-alt);
	color: var(--ep-text-soft);
}
.submission-status--pending { background: rgba(200, 150, 20, 0.14); color: #8a6d0f; }
.submission-status--publish { background: rgba(30, 130, 76, 0.14); color: #1c6b41; }
.submission-status--draft { background: var(--ep-bg-alt); color: var(--ep-muted); }
.submission-status--revision { background: rgba(178, 46, 46, 0.12); color: #8a2020; }
.submission-status--rejected { background: rgba(107, 114, 128, 0.16); color: var(--ep-text-soft); }

.submission-list { display: flex; flex-direction: column; gap: 16px; margin-bottom: 32px; }
.submission-card {
	background: var(--ep-surface);
	border: 1px solid var(--ep-border);
	border-radius: var(--ep-radius);
	padding: 20px 24px;
}
.submission-card__row {
	display: flex;
	align-items: flex-start;
	justify-content: space-between;
	gap: 16px;
	flex-wrap: wrap;
}
.submission-card__title { font-size: 1.05rem; margin-bottom: 4px; }
.submission-card__meta { font-size: 0.85rem; color: var(--ep-muted); margin: 0; }
.submission-card__note {
	margin-top: 14px;
	padding: 14px 16px;
	background: var(--ep-bg-alt);
	border-radius: var(--ep-radius);
	font-size: 0.9rem;
}
.submission-card__note p { margin: 4px 0 0; color: var(--ep-text-soft); }
.revision-form {
	margin-top: 16px;
	padding-top: 16px;
	border-top: 1px solid var(--ep-border);
	display: flex;
	flex-wrap: wrap;
	align-items: flex-end;
	gap: 12px;
}
.revision-form label { display: block; font-size: 0.85rem; font-weight: 600; margin-bottom: 6px; }

/* --- Custom Log In / Register pages (temporary — see inc/submissions.php) */
.auth-page {
	display: flex;
	justify-content: center;
	padding-block: clamp(48px, 8vw, 96px);
}
.auth-card {
	width: 100%;
	max-width: 420px;
	text-align: center;
}
.auth-card__badge {
	width: 64px;
	height: 64px;
	margin: 0 auto 20px;
	border-radius: 50%;
	background: var(--ep-primary);
	color: #fff;
	display: flex;
	align-items: center;
	justify-content: center;
	font-family: var(--ep-font-serif);
	font-weight: 700;
	font-size: 1.4rem;
}
.auth-card h1 { font-size: clamp(1.6rem, 1.3rem + 1vw, 2.1rem); margin-bottom: 0.3em; }
.auth-card .lede { margin: 0 auto 32px; font-size: 1rem; }
.auth-card .form-notice { text-align: left; margin-bottom: 20px; }

.auth-form { display: flex; flex-direction: column; gap: 14px; text-align: left; }
.auth-form .form-field { gap: 0; }
.auth-form .form-field input {
	padding: 0.9em 1.2em;
	border: 1px solid transparent;
	border-radius: 14px;
	background: var(--ep-bg-alt);
	font-size: 0.95rem;
}
.auth-form .form-field input:focus-visible { border-color: var(--ep-secondary); background: var(--ep-surface); }
.auth-form__remember {
	display: flex;
	align-items: center;
	gap: 8px;
	font-size: 0.88rem;
	color: var(--ep-text-soft);
}
.auth-form .btn-block { border-radius: 14px; padding: 0.9em 1.2em; margin-top: 6px; }

.auth-links {
	display: flex;
	justify-content: space-between;
	gap: 16px;
	margin-top: 24px;
	font-size: 0.88rem;
}
.auth-links a { color: var(--ep-primary); font-weight: 600; }
.auth-links a:hover { text-decoration: underline; }
.auth-links--center { justify-content: center; }

/* --- News page byline (single.php) ----------------------------------- */
.news-byline { margin-top: 12px; font-size: 0.95rem; color: var(--ep-text-soft); }
.news-byline a { color: var(--ep-primary); font-weight: 600; }
.news-byline a:hover { text-decoration: underline; }

/* --- Parent / guardian consent page (/guardian-consent/{token}/, inc/guardian-consent.php) --- */
.consent-page { max-width: 760px; display: flex; flex-direction: column; gap: 20px; }
.consent-page .form-notice { margin: 0; }
.consent-page__intro { margin: 0; font-size: 1.05rem; color: var(--ep-text-soft); }
.consent-page__details {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 14px 24px;
	margin: 0;
	padding: 18px 20px;
	border: 1px solid var(--ep-border);
	border-left: 4px solid var(--ep-primary);
	border-radius: var(--ep-radius);
	background: var(--ep-surface);
}
.consent-page__details dt { font-size: 0.8rem; color: var(--ep-muted); }
.consent-page__details dd { margin: 2px 0 0; font-weight: 600; color: var(--ep-text); overflow-wrap: anywhere; }
.consent-page__text {
	padding: 20px 24px;
	border: 1px solid var(--ep-border);
	border-radius: var(--ep-radius);
	background: var(--ep-surface);
}
.consent-page__text ol { padding-left: 1.3em; }
.consent-page__text li { margin-bottom: 10px; }
.consent-page__form { display: flex; flex-direction: column; gap: 18px; }
.consent-page__check { display: flex; gap: 12px; align-items: flex-start; font-weight: 600; cursor: pointer; }
.consent-page__check input { margin-top: 4px; width: 18px; height: 18px; flex: 0 0 auto; accent-color: var(--ep-primary); }
.consent-page__form .form-field input { width: 100%; max-width: 420px; box-sizing: border-box; padding: 0.75em 1em; border: 1px solid var(--ep-border-strong); border-radius: var(--ep-radius); font-size: 16px; }
.consent-page__actions { display: flex; flex-wrap: wrap; gap: 12px; }
.consent-page__small { margin: 0; font-size: 0.82rem; color: var(--ep-muted); }
@media (max-width: 600px) {
	.consent-page__details { grid-template-columns: minmax(0, 1fr); }
	.consent-page__text { padding: 16px; }
	.consent-page__actions .btn { width: 100%; justify-content: center; }
}

/* Submit page: the result after sending (success or error) — the page opens at it. */
.submit-result { scroll-margin-top: 110px; }
.submit-result:focus { outline: none; }
.form-notice--success.submit-result { padding: 24px 28px; }
.submit-result h2 { margin: 0 0 10px; font-size: 1.35rem; color: inherit; }
.submit-result ol { margin: 0 0 14px; padding-left: 1.3em; }
.submit-result li { margin-bottom: 8px; }
.submit-result__small { font-size: 0.88rem; opacity: 0.85; }
.submit-result__actions { display: flex; flex-wrap: wrap; gap: 12px; margin: 16px 0 0; }
@media (max-width: 600px) {
	.form-notice--success.submit-result { padding: 18px 16px; }
	.submit-result__actions .btn { width: 100%; justify-content: center; }
}

/* --- Call Outcome (report PDF when a call ends; single-ep_action.php) --- */
.call-outcome__summary { font-size: 1.05rem; color: var(--ep-text-soft); }
.call-outcome__pdf {
	display: block;
	width: 100%;
	height: 80vh;
	min-height: 520px;
	margin: 16px 0 20px;
	border: 1px solid var(--ep-border);
	border-radius: var(--ep-radius);
	background: var(--ep-bg-alt);
}
@media (max-width: 760px) {
	/* Phones open PDFs in their own viewer — the button does the job. */
	.call-outcome__pdf { display: none; }
}
.call-outcome-panel { display: flex; flex-direction: column; align-items: flex-start; gap: 10px; margin-bottom: 32px; font-size: 0.9rem; }
.call-outcome-panel p { margin: 0; color: var(--ep-text-soft); }
.call-outcome-panel .btn { width: 100%; justify-content: center; }
.call-outcome-panel__view { color: var(--ep-primary); font-weight: 600; font-size: 0.88rem; }
.call-metrics__item:last-child:nth-child(odd) { grid-column: 1 / -1; } /* 5 metrics: the last spans both columns. */
.action-row__outcome {
	align-self: flex-start;
	padding: 2px 10px;
	border-radius: 100px;
	background: var(--ep-secondary-soft);
	color: var(--ep-secondary);
	font-size: 0.75rem;
	font-weight: 700;
	letter-spacing: 0.04em;
	text-transform: uppercase;
}

/* --- Submit page: "How it works" steps + "have ready" list (page-submit-manuscript.php) --- */
.submit-steps {
	list-style: none;
	margin: 28px 0 0;
	padding: 0;
	display: grid;
	grid-template-columns: repeat(4, minmax(0, 1fr));
	gap: 28px;
}
.submit-steps__item { position: relative; }
/* Line joining each step to the next. */
.submit-steps__item:not(:last-child)::after {
	content: '';
	position: absolute;
	top: 21px;
	left: 58px;
	right: -14px;
	height: 2px;
	background: linear-gradient(90deg, var(--ep-secondary), var(--ep-border));
}
.submit-steps__num {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 44px;
	height: 44px;
	border-radius: 50%;
	background: var(--ep-primary);
	color: #fff;
	font-family: var(--ep-font-serif);
	font-size: 1.15rem;
	font-weight: 700;
}
.submit-steps__title { margin: 18px 0 6px; font-size: 1.12rem; }
.submit-steps__text { margin: 0; font-size: 0.92rem; color: var(--ep-text-soft); line-height: 1.6; }

.submit-ready {
	display: grid;
	grid-template-columns: minmax(0, 1fr) minmax(0, 2fr);
	gap: 16px 32px;
	margin-top: 40px;
	padding: 24px 28px;
	border: 1px solid var(--ep-border);
	border-left: 4px solid var(--ep-primary);
	border-radius: var(--ep-radius-lg);
	background: var(--ep-surface);
}
.submit-ready__head h3 { margin: 0 0 6px; font-size: 1.1rem; }
.submit-ready__head p { margin: 0; font-size: 0.88rem; color: var(--ep-muted); }
.submit-ready__list { list-style: none; margin: 0; padding: 0; display: grid; gap: 10px; }
.submit-ready__list li { position: relative; padding-left: 28px; font-size: 0.93rem; line-height: 1.55; }
.submit-ready__list li::before {
	content: '';
	position: absolute;
	left: 0;
	top: 3px;
	width: 18px;
	height: 18px;
	border-radius: 50%;
	background: var(--ep-secondary-soft) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23336699' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12.5l4.5 4.5L19 7.5'/%3E%3C/svg%3E") center / 11px no-repeat;
}
.submit-ready__list a { color: var(--ep-secondary); text-decoration: underline; }

@media (max-width: 900px) {
	/* Phones/tablets: a vertical path. */
	.submit-steps { grid-template-columns: minmax(0, 1fr); gap: 0; }
	.submit-steps__item { padding: 0 0 26px 62px; min-height: 44px; }
	.submit-steps__num { position: absolute; left: 0; top: 0; }
	.submit-steps__title { margin-top: 9px; }
	.submit-steps__item:not(:last-child)::after { top: 52px; bottom: 6px; left: 21px; right: auto; width: 2px; height: auto; background: linear-gradient(180deg, var(--ep-secondary), var(--ep-border)); }
	.submit-ready { grid-template-columns: minmax(0, 1fr); padding: 20px; }
}
