/*
	Custom additions on top of the Big Picture template: the cover
	screen, the gallery strip (Parallelism-style fixed-size tiles with
	gutters, in the spirit of html5up.net/parallelism), and the CV
	section/page. Two-color system throughout: white "paper"
	(#ffffff) and navy (#273254), plus mixed tints of the two — no
	other hues.
*/

/* Header — blends with whatever's directly behind it: navy while the
   cover is the topmost section, paper everywhere else. Toggled by
   assets/js/custom.js. */
#header {
	transition: background-color 0.3s ease, border-color 0.3s ease;
}

	#header.over-cover {
		background-color: #273254;
		border-bottom-color: #273254;
	}

		#header.over-cover h1,
		#header.over-cover nav ul li a {
			color: #ffffff;
		}

		#header.over-cover nav ul li a:hover {
			color: #ffffff;
		}

/* Tool detail pages — header matches the white page background. */
.workflow-page #header {
	background-color: #ffffff;
	border-bottom-color: #ffffff;
}

/* Project case card — thumbnail + number/title/description, shown on
   the coordination page before entering the full project page. */
.case-card {
	display: block;
	margin-bottom: 2.5em;
	background-color: #ffffff;
	border: solid 1px #d8dae0;
	border-radius: 2px;
	box-shadow: 0 4px 14px rgba(39,50,84,0.1);
	text-decoration: none;
	overflow: hidden;
	transition: transform 0.25s ease, box-shadow 0.25s ease, border-color 0.25s ease;
}

	.case-card:hover {
		transform: translateY(-0.25em);
		box-shadow: 0 10px 24px rgba(39,50,84,0.18);
		border-color: #273254;
	}

	.case-card__thumb {
		display: block;
		height: 18em;
		overflow: hidden;
	}

		.case-card__thumb img {
			display: block;
			width: 100%;
			height: 100%;
			object-fit: cover;
		}

	.case-card__body {
		display: block;
		padding: 1.5em 1.75em 1.75em 1.75em;
	}

	.case-card__number {
		display: block;
		font-size: 0.75em;
		letter-spacing: 0.08em;
		color: #7a7f90;
	}

	.case-card__title {
		display: block;
		margin: 0.25em 0 0.1em 0;
		font-size: 1.35em;
		font-weight: 600;
		color: #273254;
	}

	.case-card__type {
		display: block;
		font-size: 0.75em;
		letter-spacing: 0.08em;
		text-transform: uppercase;
		color: #7a7f90;
		margin-bottom: 0.85em;
	}

	.case-card__description {
		display: block;
		font-size: 0.9em;
		color: #273254;
		margin-bottom: 1em;
	}

	.case-card__meta {
		display: block;
		font-size: 0.8em;
		color: #7a7f90;
	}

.case-badge {
	display: inline-block;
	margin-left: 0.75em;
	padding: 0.15em 0.75em;
	border: solid 1px #273254;
	border-radius: 2em;
	font-size: 0.75em;
	font-weight: 600;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: #273254;
}

/* Project case page — meta grid, hero, and captioned figures,
   mirroring the card's project on its own page. */
.case-header__number {
	margin: 0;
	font-size: 0.85em;
	letter-spacing: 0.08em;
	color: #7a7f90;
}

/* Meta row — the meta grid with the location map sitting beside it. */
.case-meta-row {
	display: grid;
	grid-template-columns: 1fr 17em;
	gap: 0 3em;
	align-items: stretch;
	border-top: solid 1px #d8dae0;
	border-bottom: solid 1px #d8dae0;
	margin-bottom: 2.5em;
}

	.case-meta-map {
		margin: 0;
		padding: 1.75em 0;
		display: flex;
		flex-direction: column;
		justify-content: center;
	}

		.case-meta-map img {
			width: 100%;
			height: auto;
		}

.case-meta {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 1.5em 2.5em;
	padding: 1.75em 0;
	margin: 0;
}

	.case-meta__wide {
		grid-column: 1 / -1;
	}

	.case-meta__label {
		margin: 0 0 0.35em 0;
		font-size: 0.7em;
		letter-spacing: 0.1em;
		text-transform: uppercase;
		color: #7a7f90;
	}

	.case-meta__value {
		margin: 0;
		font-size: 0.9em;
		color: #273254;
	}

	.case-tools {
		margin: 0;
	}

		.case-tools span {
			display: inline-block;
			margin: 0 0.5em 0.5em 0;
			padding: 0.25em 0.9em;
			border: solid 1px #d8dae0;
			border-radius: 2em;
			font-size: 0.8em;
			color: #273254;
		}

.case-figure {
	margin: 0 0 2.5em 0;
}

	.case-figure img {
		display: block;
		width: 100%;
		height: auto;
	}

	.case-figure a {
		display: block;
		border-bottom: none;
		cursor: zoom-in;
	}

	.case-figure figcaption {
		margin-top: 0.75em;
		font-size: 0.75em;
		letter-spacing: 0.05em;
		color: #7a7f90;
	}

.case-hero {
	margin: 0 0 3em 0;
}

	/* The hero render is portrait — crop it into a wide banner, biased
	   toward the buildings rather than the sky. */
	.case-hero img {
		max-height: 30em;
		object-fit: cover;
		object-position: center 62%;
	}

/* Challenge figure — IFC logo badge overlaid on the handover model. */
.case-figure--ifc {
	position: relative;
}

	.case-ifc-badge {
		position: absolute;
		top: 1.25em;
		left: 1.25em;
		width: 4.5em !important;
		height: auto !important;
	}

/* Tool-used note — compact card linking back to the workflow tool. */
.case-tool-note {
	width: fit-content;
	margin: 0 0 1.5em auto;
	padding: 0.85em 1.25em;
	background-color: #ffffff;
	border: solid 1px #d8dae0;
	border-left: solid 3px #273254;
	border-radius: 2px;
	box-shadow: 0 4px 14px rgba(39,50,84,0.08);
}

	.case-tool-note__label {
		margin: 0 0 0.2em 0;
		font-size: 0.7em;
		letter-spacing: 0.1em;
		text-transform: uppercase;
		color: #7a7f90;
	}

	.case-tool-note a {
		font-size: 0.9em;
		font-weight: 600;
		color: #273254;
		text-decoration: none;
		border-bottom: none;
	}

		.case-tool-note a span {
			display: inline-block;
			transition: transform 0.2s ease;
		}

		.case-tool-note a:hover {
			text-decoration: underline;
		}

		.case-tool-note a:hover span {
			transform: translateX(0.25em);
		}

/* Step flow — figures chained left-to-right with arrows between. */
.case-flow {
	display: flex;
	align-items: center;
	gap: 1em;
	margin-bottom: 2.5em;
}

	.case-flow .case-figure {
		flex: 1 1 0;
		margin: 0;
	}

	.case-flow__arrow {
		flex: 0 0 auto;
		font-size: 2em;
		font-weight: 300;
		color: #273254;
	}

.case-figure--pair {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 1.5em;
	margin-bottom: 2.5em;
}

	.case-figure--pair .case-figure {
		margin: 0;
	}

@media screen and (max-width: 736px) {
	.case-meta {
		grid-template-columns: 1fr;
	}

	.case-meta-row {
		grid-template-columns: 1fr;
	}

	.case-meta-map {
		padding-top: 0;
		max-width: 16em;
	}

	.case-figure--pair {
		grid-template-columns: 1fr;
	}

	.case-card__thumb {
		height: 12em;
	}

	.case-flow {
		flex-direction: column;
		align-items: stretch;
	}

		.case-flow__arrow {
			align-self: center;
			transform: rotate(90deg);
		}

	.case-tool-note {
		margin-left: 0;
	}
}

/* Cover — first screen, plain navy, "portfolio." top-right, name/role
   bottom-left. */
.cover {
	position: relative;
	height: 100vh;
	width: 100%;
	background: #273254;
	overflow: hidden;
}

	.cover-title {
		position: absolute;
		top: 28%;
		right: 10%;
		margin: 0;
		color: #ffffff;
		font-weight: 700;
		font-size: 2.75em;
		letter-spacing: -0.01em;
	}

	.cover-meta {
		position: absolute;
		left: 10%;
		bottom: 9%;
	}

	.cover-name {
		margin: 0 0 0.4em 0;
		color: #ffffff;
		font-weight: 300;
		font-size: 1.1em;
		letter-spacing: 0.12em;
	}

	.cover-role {
		margin: 0;
		color: rgba(255,255,255,0.55);
		font-weight: 300;
		font-size: 0.85em;
		letter-spacing: 0.1em;
	}

@media screen and (max-width: 736px) {
	.cover-title {
		top: 24%;
		right: 6%;
		font-size: 2em;
	}

	.cover-meta {
		left: 6%;
		bottom: 7%;
	}

	.cover-name {
		font-size: 0.9em;
	}

	.cover-role {
		font-size: 0.7em;
	}
}

/* Gallery strip */

.gallery-strip {
	position: relative;
	width: 100%;
	padding: 3em 0;
	background: #ffffff;
}

.gallery-strip-track {
	display: flex;
	overflow-x: auto;
	scroll-snap-type: x mandatory;
	scroll-behavior: smooth;
	padding: 0 3.5em;
	-ms-overflow-style: none;
	scrollbar-width: none;
}

	.gallery-strip-track::-webkit-scrollbar {
		display: none;
	}

.strip-item {
	position: relative;
	flex: 0 0 auto;
	width: 17em;
	height: 21em;
	margin: 0 0.35em;
	display: block;
	overflow: hidden;
	scroll-snap-align: start;
	background-color: #f2f3f5;
	background-size: cover;
	background-position: center;
	box-shadow: 0 1px 3px rgba(39,50,84,0.15);
	transition: transform 0.3s ease, box-shadow 0.3s ease;
}

	.strip-item:hover,
	.strip-item:focus {
		transform: scale(1.18);
		z-index: 5;
		box-shadow: 0 14px 32px rgba(39,50,84,0.35);
	}

	.strip-item::after {
		content: '';
		position: absolute;
		left: 0;
		right: 0;
		bottom: 0;
		height: 45%;
		background: linear-gradient(to top, rgba(20,26,44,0.8), rgba(20,26,44,0));
		opacity: 0;
		transition: opacity 0.35s ease;
		pointer-events: none;
	}

	.strip-item:hover::after,
	.strip-item:focus::after {
		opacity: 1;
	}

.strip-caption {
	position: absolute;
	left: 0;
	right: 0;
	bottom: 0;
	display: flex;
	align-items: center;
	gap: 0.6em;
	padding: 1.5em 1.25em;
	color: #ffffff;
	opacity: 0;
	transform: translateY(12px);
	transition: opacity 0.35s ease, transform 0.35s ease;
	font-family: 'Open Sans Condensed', system-ui, sans-serif;
}

	.strip-item:hover .strip-caption,
	.strip-item:focus .strip-caption {
		opacity: 1;
		transform: translateY(0);
	}

	.strip-caption h3 {
		margin: 0;
		font-size: 1.05em;
		font-weight: 600;
		letter-spacing: -0.01em;
		color: #ffffff;
	}

	.strip-logo {
		display: block;
		flex: 0 0 auto;
		height: 2.25em;
		width: auto;
		max-width: 40%;
		object-fit: contain;
		object-position: left bottom;
	}

	.strip-name {
		flex: 1 1 auto;
		font-size: 0.95em;
		font-weight: 600;
		line-height: 1.2;
		letter-spacing: -0.01em;
		color: #ffffff;
	}

/* Arrows — the template's own line-drawn "scroll" arrow icon
   (assets/css/images/dark-arrow.svg), inverted for a light button and
   rotated to point sideways, instead of a generic glyph. */
.strip-arrow {
	position: absolute;
	top: 50%;
	z-index: 10;
	width: 2.75em;
	height: 2.75em;
	margin-top: -1.375em;
	border-radius: 100%;
	border: solid 1px #d8dae0;
	background-color: #ffffff;
	box-shadow: 0 1px 4px rgba(39,50,84,0.18);
	cursor: pointer;
	padding: 0;
	transition: background-color 0.2s ease, border-color 0.2s ease;
}

	.strip-arrow::before {
		content: '';
		position: absolute;
		inset: 0;
		background-image: url('images/navy-arrow.svg');
		background-position: center center;
		background-repeat: no-repeat;
		background-size: 32% 32%;
	}

	.strip-arrow-prev::before {
		transform: rotate(90deg);
	}

	.strip-arrow-next::before {
		transform: rotate(-90deg);
	}

	.strip-arrow:hover {
		background-color: #f2f3f5;
		border-color: #273254;
	}

	.strip-arrow-prev {
		left: 1em;
	}

	.strip-arrow-next {
		right: 1em;
	}

@media screen and (max-width: 980px) {
	.strip-item {
		width: 14em;
		height: 17.5em;
	}
}

@media screen and (max-width: 736px) {
	.gallery-strip {
		padding: 2em 0;
	}

	.gallery-strip-track {
		padding: 0 1.5em;
	}

	.strip-item {
		width: 10em;
		height: 12.5em;
		margin: 0 0.25em;
	}

	.strip-caption {
		opacity: 1;
		transform: none;
		padding: 0.85em 0.7em;
		gap: 0.4em;
	}

	.strip-caption h3 {
		font-size: 0.95em;
	}

	.strip-logo {
		height: 1.5em;
		max-width: 35%;
	}

	.strip-name {
		font-size: 0.7em;
		line-height: 1.15;
	}

	.strip-item::after {
		opacity: 1;
	}

	.strip-arrow {
		width: 2.25em;
		height: 2.25em;
		margin-top: -1.125em;
	}
}

/* About — wider content column than the template default, two-column
   bio/skills layout matching the reference design. */
#about .content,
.about-page .content {
	width: 64em;
	text-align: left;
}

.eyebrow {
	margin: 0 0 0.5em 0;
	font-size: 0.75em;
	font-weight: 600;
	letter-spacing: 0.1em;
	text-transform: uppercase;
	color: #273254;
}

	.eyebrow a {
		color: inherit;
		text-decoration: none;
	}

	.eyebrow a:hover {
		text-decoration: underline;
	}

.about-heading {
	margin: 0 0 1.5em 0;
	font-size: 2.5em;
	line-height: 1.15;
}

.about-body {
	display: flex;
	gap: 4em;
	border-top: solid 1px #d8dae0;
	padding-top: 2em;
}

	.about-bio {
		flex: 1 1 45%;
	}

		.about-bio p {
			margin-bottom: 1.25em;
		}

	.about-skills {
		flex: 1 1 55%;
	}

.skills-grid {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 1.5em 2em;
	margin: 0 0 2em 0;
}

	.skills-grid h4 {
		margin: 0 0 0.5em 0;
		font-size: 1em;
	}

	.skills-grid ul {
		margin: 0;
		padding: 0;
		list-style: none;
	}

	.skills-grid li {
		font-size: 0.85em;
		color: #7a7f90;
		margin-bottom: 0.25em;
	}

.education-card {
	border: solid 1px #d8dae0;
	border-radius: 2px;
	padding: 1.25em 1.5em;
	margin-bottom: 1em;
}

	.education-card h4 {
		margin: 0 0 0.25em 0;
	}

	.education-card .muted {
		margin: 0 0 0.5em 0;
		font-size: 0.85em;
		color: #7a7f90;
	}

	.education-card .thesis {
		margin: 0;
		font-size: 0.8em;
		color: #7a7f90;
	}

.cv-preview {
	display: block;
}

	.cv-preview img {
		display: block;
		width: 100%;
		height: auto;
		box-shadow: 0 4px 18px rgba(39,50,84,0.2);
	}

@media screen and (max-width: 980px) {
	.about-body {
		flex-direction: column;
		gap: 2em;
	}
}

@media screen and (max-width: 736px) {
	.about-heading {
		font-size: 1.75em;
	}

	.skills-grid {
		grid-template-columns: 1fr;
	}
}

/* Footer — plain text links (copyright + GitHub/LinkedIn/Email),
   no icon set. */
#footer {
	font-family: 'Open Sans Condensed', system-ui, sans-serif;
}

	#footer p {
		margin: 0;
		font-size: 0.85em;
	}

	#footer ul.menu li {
		font-size: 0.85em;
		text-transform: uppercase;
		letter-spacing: 0.05em;
	}

/* Projects — six-tile category grid (2x3): each tile is a workflow
   category rather than a single named project. */
#work .content {
	width: 64em;
}

.project-grid {
	display: grid;
	grid-template-columns: repeat(2, 1fr);
	gap: 1em;
	margin-top: 2em;
	text-align: left;
}

.project-tile {
	position: relative;
	display: block;
	aspect-ratio: 4 / 3;
	overflow: hidden;
	background-color: #f2f3f5;
	background-size: cover;
	background-position: center;
	box-shadow: 0 1px 3px rgba(39,50,84,0.15);
	transition: transform 0.6s ease, opacity 0.6s ease;
}

/* B and C — show the full photo instead of a cropped fill */
.project-grid > :nth-child(2),
.project-grid > :nth-child(3) {
	background-size: contain, cover;
	background-repeat: no-repeat, no-repeat;
	background-position: center, center;
}

/* Scroll-triggered slide-in, matching the template's original
   gallery from-left/from-right pattern: left column slides in from
   the left, right column from the right. Toggled by custom.js. */
.project-grid.inactive > :nth-child(odd) {
	opacity: 0;
	transform: translateX(-3em);
}

.project-grid.inactive > :nth-child(even) {
	opacity: 0;
	transform: translateX(3em);
}

.project-overlay {
	position: absolute;
	inset: 0;
	display: flex;
	flex-direction: column;
	justify-content: flex-end;
	gap: 0.75em;
	padding: 1.25em;
	background: linear-gradient(to top, rgba(20,26,44,0.85), rgba(20,26,44,0) 65%);
}

	.project-overlay h3 {
		margin: 0;
		font-size: 1.1em;
		font-weight: 600;
		letter-spacing: -0.01em;
		color: #ffffff;
	}

.project-logos {
	display: flex;
	align-items: center;
	gap: 0.9em;
}

	.project-logos img {
		display: block;
		height: 1.75em;
		width: auto;
	}

/* D — BIM + AI: no photo, all tool logos tiled instead */
.project-tile-logos {
	background-color: #ffffff;
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	gap: 1em;
}

	.project-tile-logos-grid {
		display: grid;
		grid-template-columns: repeat(2, 1fr);
		gap: 1.25em;
		padding: 1.5em;
	}

	.project-tile-logos-grid img {
		display: block;
		height: 2.25em;
		width: auto;
		margin: 0 auto;
	}

	.project-tile-logos h3 {
		margin: 0;
		font-size: 1.1em;
		font-weight: 600;
		color: #273254;
	}

/* E — Others: collage of the two projects with no category info */
.project-tile-collage {
	background-color: #f2f3f5;
}

	.project-tile-collage-grid {
		position: absolute;
		inset: 0;
		display: grid;
		grid-template-columns: 47% 53%;
	}

		.project-tile-collage-grid > div {
			background-size: cover;
			background-position: center;
		}

/* F — reserved, no content yet */
.project-tile-empty {
	background-color: #f2f3f5;
	border: 1px dashed #d8dae0;
	box-shadow: none;
}

@media screen and (max-width: 736px) {
	.project-grid {
		grid-template-columns: 1fr;
	}

	.project-grid.inactive > :nth-child(odd),
	.project-grid.inactive > :nth-child(even) {
		transform: translateY(1.5em);
	}
}

/* Intro "Hello" text — static, no scroll-triggered fade-in (overrides
   the template's default .main.style1 inactive/enter transition). */
#intro .main.style1.inactive > .content {
	opacity: 1;
}

/* Workflow page (tile A drill-down) — wider content column, left-
   aligned like About. */
.workflow-page .content,
#workflow-projects .content {
	width: 64em;
	text-align: left;
}

.workflow-intro {
	max-width: 42em;
	margin-bottom: 2em;
	color: #7a7f90;
}

.tool-cards {
	display: flex;
	gap: 1em;
	margin-bottom: 2.5em;
}

.tool-card {
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	gap: 1em;
	flex: 1 1 0;
	min-height: 10em;
	padding: 2.5em 1.5em;
	background-color: #ffffff;
	border: solid 1px #d8dae0;
	border-radius: 2px;
	box-shadow: 0 4px 14px rgba(39,50,84,0.1);
	text-decoration: none;
	cursor: pointer;
	transition: transform 0.25s ease, box-shadow 0.25s ease, border-color 0.25s ease;
}

	.tool-card img {
		height: 4em;
		width: auto;
	}

	.tool-card span {
		font-size: 1.1em;
		font-weight: 600;
		color: #273254;
	}

	.tool-card:hover {
		transform: translateY(-0.25em);
		box-shadow: 0 10px 24px rgba(39,50,84,0.18);
		border-color: #273254;
	}

.tool-panel {
	display: none;
	background-color: #ffffff;
	border: solid 1px #d8dae0;
	border-radius: 2px;
	padding: 2em 2.25em;
	box-shadow: 0 4px 14px rgba(39,50,84,0.08);
}

	.tool-panel.active {
		display: block;
	}

	.tool-panel h3 {
		margin: 0 0 0.25em 0;
	}

.mono-label {
	margin: 0 0 1.5em 0;
	font-size: 0.75em;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: #7a7f90;
}

.tool-panel-stack {
	margin-bottom: 1.5em;
}

	.tool-panel-stack > div {
		margin-bottom: 1.5em;
	}

	.tool-panel-stack > div:last-child {
		margin-bottom: 0;
	}

	.tool-panel-stack h4 {
		margin: 0 0 0.5em 0;
		font-size: 1em;
	}

	.tool-panel-stack ol {
		margin: 0;
		padding-left: 1.2em;
	}

	.tool-panel-stack li {
		font-size: 0.9em;
		margin-bottom: 0.5em;
	}

	.tool-panel-stack p {
		font-size: 0.9em;
	}

.tool-projects {
	font-size: 0.85em;
	color: #7a7f90;
	border-top: solid 1px #d8dae0;
	padding-top: 1.25em;
}

.content.infographic-page {
	width: 100%;
	max-width: calc(100% - 4em);
}

	.content.infographic-page img {
		display: block;
		width: 88%;
		height: auto;
		margin: 0 auto;
	}

#workflow-detail.style3.primary {
	background: #ffffff;
}

/* Recreated workflow diagram — a numbered step sequence, built from
   real HTML/icons, not copied from any exported design file. */
.workflow-diagram {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
	gap: 1.75em 1em;
	margin: 2em 0 2.5em 0;
	padding: 2em 1.5em;
	background-color: #ffffff;
	border-radius: 2px;
}

.workflow-step {
	text-align: center;
}

	.workflow-step .step-icon {
		position: relative;
		width: auto;
		min-width: 3.5em;
		height: 3.5em;
		margin: 0 auto 0.75em auto;
		padding: 0 0.6em;
		border-radius: 1.75em;
		background-color: #ffffff;
		border: solid 1px #d8dae0;
		display: flex;
		align-items: center;
		justify-content: center;
		font-size: 1.3em;
		color: #273254;
	}

		.workflow-step .step-icon img {
			max-width: 5em;
			max-height: 70%;
			width: auto;
			height: auto;
		}

		.workflow-step .step-icon::after {
			content: attr(data-step);
			position: absolute;
			top: -0.4em;
			right: -0.4em;
			width: 1.5em;
			height: 1.5em;
			border-radius: 100%;
			background-color: #273254;
			color: #ffffff;
			font-size: 0.5em;
			font-weight: 700;
			display: flex;
			align-items: center;
			justify-content: center;
		}

	.workflow-step p {
		margin: 0;
		font-size: 0.8em;
		color: #273254;
	}

.workflow-project {
	margin-bottom: 2.5em;
}

	.workflow-project h4 {
		margin: 0 0 1em 0;
	}

@media screen and (max-width: 736px) {
	.tool-cards {
		flex-direction: column;
	}
}
