/* Shared frame for the opt-in portfolio and preserved content pages. */
body.portfolio-v2-view {
	--portfolio-gutter: 32px;
	--portfolio-width: min(1116px, calc(100% - 2 * var(--portfolio-gutter)));
	font-size: 16px;
	line-height: 1.55;
}

.portfolio-v2-view *,
.portfolio-v2-view *::before,
.portfolio-v2-view *::after {
	box-sizing: border-box;
}

.portfolio-v2-view a:focus-visible,
.portfolio-v2-view button:focus-visible,
.portfolio-v2-view input:focus-visible {
	outline: 2px solid currentColor;
	outline-offset: 4px;
}

.portfolio-skip-link {
	position: absolute;
	z-index: 100;
	top: -100px;
	left: var(--portfolio-gutter);
	padding: 12px 20px;
	background: var(--portfolio-paper);
	color: var(--portfolio-ink);
}

.portfolio-skip-link:focus {
	top: 8px;
}

.portfolio-v2-view .header-main {
	width: var(--portfolio-width);
	max-width: none;
	min-height: 68px;
	padding: 0;
	gap: 12px 32px;
}

.portfolio-v2-view .site-title {
	font-weight: 600;
	letter-spacing: 0;
}

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

.portfolio-menu li {
	margin: 0;
	padding: 0;
}

.portfolio-primary-nav a {
	display: flex;
	align-items: center;
	min-height: 68px;
	border-bottom: 2px solid transparent;
	color: rgba(255, 255, 255, 0.86);
	font-size: 14px;
	font-weight: 500;
	text-decoration: none;
}

.portfolio-primary-nav a:hover,
.portfolio-primary-nav a[aria-current] {
	border-bottom-color: #e7ad88;
	color: #fff;
}

.portfolio-section-nav {
	width: var(--portfolio-width);
	margin: 0 auto;
	border-bottom: 1px solid var(--portfolio-line);
}

.portfolio-section-nav .portfolio-menu {
	gap: 0 26px;
}

.portfolio-section-nav a {
	display: flex;
	align-items: center;
	min-height: 52px;
	border-bottom: 2px solid transparent;
	color: var(--portfolio-muted);
	font-size: 14px;
	text-decoration: none;
}

.portfolio-section-nav a:hover,
.portfolio-section-nav a[aria-current],
.portfolio-section-nav .current-menu-parent > a,
.portfolio-section-nav .current-menu-ancestor > a {
	border-bottom-color: var(--portfolio-sea);
	color: var(--portfolio-sea);
}

.portfolio-v2-view .portfolio-page__content > :not(.portfolio-band):not(.portfolio-hero),
.portfolio-v2-view .portfolio-page__content > .portfolio-resource-content,
.portfolio-document,
.portfolio-blog-title,
.portfolio-post-index,
.portfolio-post,
.portfolio-blog-main .navigation.pagination,
.portfolio-empty-state,
.portfolio-post-navigation,
.portfolio-v2-view #comments,
.portfolio-footer {
	width: var(--portfolio-width);
	max-width: none;
	margin-right: auto;
	margin-left: auto;
}

.portfolio-page-title,
.portfolio-blog-title {
	padding: 40px 0 28px;
	border: 0;
}

.portfolio-page-title h1,
.portfolio-blog-title h1,
.portfolio-post__header h1,
.portfolio-introduction h1 {
	margin: 0;
	color: var(--portfolio-ink);
	font-family: var(--portfolio-font-sans);
	font-size: 38px;
	font-weight: 600;
	letter-spacing: -0.035em;
	line-height: 1.2;
	overflow-wrap: anywhere;
}

.portfolio-page-title p {
	max-width: 70ch;
	margin-top: 14px;
}

.portfolio-section,
.portfolio-section--compact {
	padding-top: 12px;
	padding-bottom: 44px;
}

.portfolio-section h2,
.portfolio-home-row h2,
.portfolio-prose h2,
.portfolio-resource-content h2,
.portfolio-post__content h2 {
	font-size: 24px;
	font-weight: 600;
	letter-spacing: -0.02em;
	line-height: 1.3;
}

.portfolio-prose,
.portfolio-post__content {
	max-width: 70ch;
	font-size: 16px;
	line-height: 1.6;
	overflow-wrap: anywhere;
}

.portfolio-prose {
	padding-bottom: 44px;
}

.portfolio-prose h2,
.portfolio-prose h3 {
	margin: 30px 0 12px;
}

.portfolio-prose h3,
.portfolio-resource-content h3,
.portfolio-post__content h3 {
	font-size: 19px;
	font-weight: 600;
	line-height: 1.35;
}

.portfolio-prose p,
.portfolio-prose ul,
.portfolio-prose ol {
	margin-bottom: 20px;
}

.portfolio-prose a,
.portfolio-post__content a,
.portfolio-resource-content a,
.portfolio-link-list a {
	color: var(--portfolio-sea);
	text-underline-offset: 4px;
	text-decoration-thickness: 1px;
}

.portfolio-prose img,
.portfolio-prose video,
.portfolio-prose iframe,
.portfolio-prose .wp-caption {
	max-width: 100%;
}

.portfolio-prose img,
.portfolio-prose video {
	height: auto;
}

.portfolio-prose pre,
.portfolio-post__content pre,
.portfolio-resource-content pre {
	max-width: 100%;
	overflow-x: auto;
	font-size: 13px;
	overflow-wrap: normal;
}

.portfolio-prose .gallery {
	margin: 20px 0;
}

.portfolio-prose .gallery-item {
	max-width: 100%;
}

.portfolio-link-list {
	display: flex;
	flex-wrap: wrap;
	gap: 8px 24px;
	margin: 16px 0 0;
	padding: 0;
	list-style: none;
	font-size: 14px;
}

.portfolio-link-list li {
	margin: 0;
}

.portfolio-introduction {
	display: grid;
	grid-template-columns: minmax(0, 1fr) 140px;
	gap: 48px;
	align-items: center;
	padding: 48px 0 44px;
}

.portfolio-introduction p {
	max-width: 64ch;
	margin: 18px 0 0;
	font-size: 18px;
	line-height: 1.6;
}

.portfolio-introduction figure {
	margin: 0;
}

.portfolio-introduction img {
	display: block;
	width: 140px;
	height: auto;
	border-radius: 4px;
}

.portfolio-home-row {
	display: grid;
	grid-template-columns: 180px minmax(0, 1fr);
	gap: 32px;
	padding: 28px 0;
	border-top: 1px solid var(--portfolio-line);
}

.portfolio-home-row:last-child {
	padding-bottom: 48px;
}

.portfolio-home-row h2,
.portfolio-home-row p {
	margin: 0;
}

.portfolio-home-row h2 a {
	color: inherit;
	text-decoration: none;
}

.portfolio-home-row h2 a:hover {
	text-decoration: underline;
	text-underline-offset: 4px;
}

.portfolio-home-projects {
	display: flex;
	flex-wrap: wrap;
	gap: 16px 28px;
	margin-top: 22px;
}

.portfolio-home-projects a {
	display: inline-flex;
	align-items: center;
	gap: 10px;
	color: var(--portfolio-ink);
	font-size: 14px;
	font-weight: 500;
	text-decoration: none;
}

.portfolio-home-projects a:hover {
	text-decoration: underline;
	text-underline-offset: 4px;
}

.portfolio-home-projects img {
	width: 44px;
	height: 44px;
	object-fit: contain;
}

.portfolio-directory {
	padding-bottom: 44px;
}

.portfolio-directory article {
	display: grid;
	grid-template-columns: 240px minmax(0, 1fr);
	gap: 24px;
	padding: 22px 0;
	border-top: 1px solid var(--portfolio-line);
}

.portfolio-directory h2 {
	margin: 0;
	font-size: 20px;
	font-weight: 600;
	line-height: 1.4;
}

.portfolio-directory h2 a {
	color: var(--portfolio-sea);
	text-decoration: none;
}

.portfolio-directory h2 a:hover {
	text-decoration: underline;
	text-underline-offset: 4px;
}

.portfolio-directory p {
	max-width: 70ch;
	margin: 0;
	color: var(--portfolio-muted);
}

.portfolio-science-notes {
	padding-bottom: 44px;
}

.portfolio-science-notes h2 {
	font-size: 24px;
	font-weight: 600;
}

.portfolio-science-notes ul {
	max-width: 70ch;
	margin: 16px 0;
	padding-left: 20px;
}

.portfolio-science-notes li + li {
	margin-top: 10px;
}

.portfolio-science-notes a {
	color: var(--portfolio-sea);
	text-underline-offset: 4px;
}

.portfolio-publication-year {
	grid-template-columns: 66px minmax(0, 1fr);
	gap: 14px;
	padding: 14px 0 4px;
}

.portfolio-publication-year h2,
.portfolio-publication-year > h3 {
	position: static;
	margin-top: 12px;
	color: var(--portfolio-muted);
	font-size: 13px;
	font-weight: 500;
	letter-spacing: 0;
}

.portfolio-publication-entry,
.portfolio-post-summary {
	padding-top: 13px;
	padding-bottom: 15px;
}

.portfolio-publication-entry h3,
.portfolio-publication-entry h4,
.portfolio-post-summary__body h2,
.portfolio-related-item h3 {
	font-size: 16px;
	font-weight: 600;
	line-height: 1.4;
}

.portfolio-publication-entry__citation,
.portfolio-publication-entry__links a,
.portfolio-publication-entry__topics a,
.portfolio-publications span,
.portfolio-related-item p,
.portfolio-related-item__links a,
.portfolio-post-summary__meta,
.portfolio-post__header p,
.portfolio-post__back,
.portfolio-text-link,
.portfolio-card__links a,
.portfolio-resource-content .wp-caption-text,
.portfolio-prose .wp-caption-text,
.portfolio-image-meta,
.portfolio-image figcaption,
.portfolio-resource-context a,
.portfolio-post__content figcaption,
.portfolio-post__taxonomy,
.portfolio-post-navigation,
.portfolio-blog-main .navigation.pagination .page-numbers {
	font-size: 13px;
	line-height: 1.5;
	letter-spacing: 0;
}

.portfolio-publication-entry__links a,
.portfolio-text-link,
.portfolio-post-summary__meta {
	font-weight: 500;
}

.portfolio-publication-entry__links {
	gap: 8px 16px;
}

.portfolio-publication-entry__links a:hover,
.portfolio-publication-entry__links a:focus-visible {
	text-decoration: underline;
	text-underline-offset: 4px;
}

.portfolio-publication-entry__explainer {
	margin: 8px 0 0;
}

.portfolio-publication-entry .portfolio-explainer-link {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	color: var(--portfolio-sea);
	font-size: 16px;
	font-weight: 600;
	line-height: 1.5;
	text-decoration: none;
}

.portfolio-explainer-link:hover,
.portfolio-explainer-link:focus-visible {
	text-decoration: underline;
	text-decoration-thickness: 1px;
	text-underline-offset: 4px;
}

.portfolio-publication-entry--with-explainer {
	display: grid;
	grid-template-columns: minmax(0, 1fr) 160px;
	align-items: start;
	gap: 24px 32px;
}

.portfolio-publication-entry--with-explainer .portfolio-publication-entry__body {
	min-width: 0;
}

.portfolio-publication-entry--with-explainer .portfolio-publication-entry__explainer {
	margin: 0;
}

.portfolio-publication-entry--with-explainer .portfolio-explainer-link {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: 8px;
	font-size: 14px;
}

.portfolio-publication-entry--with-explainer .portfolio-explainer-link img {
	display: block;
	width: 160px;
	max-width: 100%;
	height: 96px;
	margin: 0;
	object-fit: contain;
	object-position: center;
}

.portfolio-publication-entry--with-explainer .portfolio-explainer-link__label {
	display: inline-flex;
	align-items: center;
	gap: 6px;
}

.portfolio-publication-entry--with-explainer .portfolio-explainer-link:hover .portfolio-explainer-link__label,
.portfolio-publication-entry--with-explainer .portfolio-explainer-link:focus-visible .portfolio-explainer-link__label {
	text-decoration: underline;
	text-decoration-thickness: 1px;
	text-underline-offset: 4px;
}

.portfolio-tutorial-catalog > section > p {
	max-width: 70ch;
}

.portfolio-tutorial-catalog .numerical-model h3 {
	margin: 0;
	font-size: 16px;
	font-weight: 600;
	line-height: 1.4;
}

.portfolio-tutorial-catalog .numerical-model h3 a {
	text-decoration: none;
}

.portfolio-tutorial-catalog .numerical-model h3 a:hover,
.portfolio-tutorial-catalog .numerical-model h3 a:focus-visible {
	text-decoration: underline;
}

.portfolio-tutorial-catalog .portfolio-explainer-thumbnail {
	display: block;
	align-self: start;
}

.portfolio-tutorial-catalog .portfolio-explainer-thumbnail img {
	display: block;
	width: 160px;
	max-width: 100%;
	height: 120px;
	object-fit: contain;
	object-position: left top;
}

.portfolio-tutorial-catalog .portfolio-related-paper {
	display: inline-block;
	margin-top: 8px;
	font-size: 13px;
	line-height: 1.5;
}

.portfolio-post-summary__body p {
	max-width: 70ch;
	font-size: 16px;
	line-height: 1.55;
}

.portfolio-post-summary__meta {
	text-transform: none;
}

.portfolio-post {
	padding-top: 40px;
}

.portfolio-profile {
	grid-template-columns: 220px minmax(0, 1fr);
	align-items: start;
	gap: 36px;
}

.portfolio-profile__portrait {
	width: 220px;
	margin: 0;
	border-radius: 4px;
	box-shadow: none;
}

.portfolio-profile p {
	max-width: 70ch;
}

.portfolio-resource-content p,
.portfolio-resource-content li {
	font-size: 16px;
	line-height: 1.6;
}

.portfolio-resource-content > p,
.portfolio-resource-content > ul,
.portfolio-resource-content > ol {
	max-width: 70ch;
}

/* Detail pages keep the same left edge as their title and a readable measure. */
.portfolio-v2-view .portfolio-page__content:has(.portfolio-resource-context) > .portfolio-resource-content {
	max-width: 70ch;
	margin-left: max(var(--portfolio-gutter), calc((100% - 1116px) / 2));
	overflow-wrap: anywhere;
}

.portfolio-resource-context a {
	font-weight: 500;
}

.portfolio-image-meta {
	display: flex;
	flex-wrap: wrap;
	gap: 8px 20px;
	color: var(--portfolio-muted);
}

.portfolio-image {
	margin: 0 0 20px;
}

.portfolio-image img {
	display: block;
}

.portfolio-image figcaption {
	margin-top: 12px;
	color: var(--portfolio-muted);
}

.portfolio-prose .syntaxhighlighter {
	max-width: 100%;
	overflow-x: auto !important;
}

/* Older editor exports store code as inline-styled paragraphs. */
.portfolio-prose p[style*="Menlo"] {
	font-size: 13px !important;
	line-height: 1.5;
}

.portfolio-resource-content .numerical-model {
	grid-template-columns: 160px minmax(0, 1fr);
	gap: 24px;
	padding: 22px 0;
}

.portfolio-resource-content .numerical-model p {
	min-width: 0;
	max-width: 70ch;
	margin: 6px 0 0;
}

.portfolio-resource-content .numerical-model h2 {
	margin: 0;
	font-size: 16px;
	font-weight: 600;
	line-height: 1.4;
}

.portfolio-resource-content .numerical-model h2 a {
	text-decoration: none;
}

.portfolio-resource-content .numerical-model h2 a:hover {
	text-decoration: underline;
}

.portfolio-software-tile h2 {
	font-size: 20px;
}

.portfolio-software-tile p {
	font-size: 16px;
}

#research-software {
	scroll-margin-top: 24px;
}

.portfolio-footer {
	padding: 22px 0;
	font-size: 13px;
	letter-spacing: 0;
}

.portfolio-footer a {
	font-weight: 500;
}

@media screen and (max-width: 782px) {
	body.portfolio-v2-view {
		--portfolio-gutter: 20px;
	}

	.portfolio-v2-view .header-main {
		flex-wrap: wrap;
		padding: 10px 0;
	}

	.portfolio-primary-nav a {
		min-height: 44px;
	}

	.portfolio-primary-nav .portfolio-menu {
		gap: 0 24px;
	}

	.portfolio-section-nav .portfolio-menu {
		gap: 0 20px;
		padding: 6px 0;
	}

	.portfolio-section-nav a {
		min-height: 44px;
	}

	.portfolio-page-title,
	.portfolio-blog-title {
		padding: 30px 0 24px;
	}

	.portfolio-page-title h1,
	.portfolio-blog-title h1,
	.portfolio-post__header h1,
	.portfolio-introduction h1 {
		font-size: 32px;
	}

	.portfolio-home-row,
	.portfolio-directory article {
		grid-template-columns: 1fr;
		gap: 12px;
	}

	.portfolio-introduction {
		grid-template-columns: minmax(0, 1fr) 100px;
		gap: 24px;
		padding: 32px 0;
	}

	.portfolio-introduction img {
		width: 100px;
	}

	.portfolio-profile {
		grid-template-columns: 1fr;
		gap: 24px;
	}

	.portfolio-publication-year {
		grid-template-columns: 46px minmax(0, 1fr);
		gap: 12px;
	}

	.portfolio-post-summary {
		grid-template-columns: 1fr;
		gap: 5px;
	}

	.portfolio-resource-content .numerical-model {
		grid-template-columns: 100px minmax(0, 1fr);
		gap: 16px;
	}

	.portfolio-footer {
		flex-wrap: wrap;
		gap: 8px 24px;
	}
}

@media screen and (max-width: 767px) {
	.portfolio-publication-entry--with-explainer {
		grid-template-columns: 1fr;
		gap: 12px;
	}

	.portfolio-publication-entry--with-explainer .portfolio-explainer-link {
		flex-direction: row;
		align-items: center;
		gap: 12px;
		width: fit-content;
		max-width: 100%;
	}

	.portfolio-publication-entry--with-explainer .portfolio-explainer-link img {
		flex: 0 0 88px;
		width: 88px;
		height: 60px;
	}
}

@media screen and (max-width: 480px) {
	.portfolio-resource-content .wp-caption.alignleft,
	.portfolio-resource-content .wp-caption.alignright {
		float: none;
		margin: 20px 0;
	}

	.portfolio-introduction {
		grid-template-columns: 1fr;
	}

	.portfolio-introduction figure {
		grid-row: 1;
	}

	.portfolio-resource-content .numerical-model {
		grid-template-columns: 1fr;
	}

	.portfolio-publication-year {
		grid-template-columns: 1fr;
		gap: 0;
	}
}

@media (pointer: coarse) {
	.portfolio-publication-entry .portfolio-explainer-link {
		min-height: 44px;
	}

	.portfolio-link-list a,
	.portfolio-publication-entry__links a,
	.portfolio-footer a {
		display: inline-flex;
		align-items: center;
		min-height: 44px;
	}
}
