.tw-project-container,
.tw-projects-container {
	box-sizing: border-box;
	margin: 0 auto;
	max-width: 1280px;
	padding: 0 24px;
	width: 100%;
}

.tw-project-single,
.tw-projects-archive {
	background: #f3f4f6;
	color: #202124;
	padding: 38px 0 80px;
}

.tw-project-breadcrumbs {
	align-items: center;
	color: #686b72;
	display: flex;
	flex-wrap: wrap;
	font-size: 0.9rem;
	gap: 8px;
	margin-bottom: 34px;
}

.tw-project-breadcrumbs a {
	color: #34363b;
	text-decoration: underline;
	text-underline-offset: 3px;
}

.tw-projects-archive-header {
	margin-bottom: 30px;
}

.tw-projects-archive-title {
	color: #17181a;
	font-size: clamp(2.25rem, 5vw, 4.75rem);
	letter-spacing: -0.04em;
	line-height: 1;
	margin: 12px 0 0;
}

.tw-project-single-title {
	color: #17181a;
	hyphens: none;
	letter-spacing: -0.035em;
	line-height: 1.06;
	margin: 12px 0 0;
	max-inline-size: 100%;
	overflow-wrap: normal;
	text-transform: none;
	text-wrap: balance;
	white-space: normal;
	width: 100%;
	word-break: normal;
}

.tw-project-single-title.tw-project-title--short {
	font-size: clamp(3rem, 5.8vw, 5.5rem);
}

.tw-project-single-title.tw-project-title--medium {
	font-size: clamp(2.7rem, 4.8vw, 4.5rem);
	line-height: 1.07;
}

.tw-project-single-title.tw-project-title--long {
	font-size: clamp(2.2rem, 3.8vw, 3.6rem);
	line-height: 1.1;
}

.tw-project-single-title.tw-project-title--xlong {
	font-size: clamp(1.9rem, 3vw, 3rem);
	line-height: 1.13;
}

.tw-projects-filters {
	align-items: end;
	background: #fff;
	border: 1px solid #dcdee2;
	border-radius: 16px;
	display: grid;
	gap: 14px;
	grid-template-columns: repeat(5, minmax(0, 1fr));
	margin-bottom: 36px;
	padding: 20px;
}

.tw-projects-filter label {
	display: block;
	font-size: 0.8rem;
	font-weight: 750;
	margin-bottom: 7px;
}

.tw-projects-filter select {
	background: #fff;
	border: 1px solid #b8bbc1;
	border-radius: 8px;
	color: #202124;
	min-height: 46px;
	padding: 8px 32px 8px 12px;
	width: 100%;
}

.tw-projects-filter-actions {
	align-items: center;
	display: flex;
	gap: 12px;
	grid-column: 1 / -1;
	justify-content: flex-end;
}

.tw-project-button {
	align-items: center;
	background: #d71920;
	border: 2px solid #d71920;
	border-radius: 8px;
	color: #fff;
	cursor: pointer;
	display: inline-flex;
	font-weight: 750;
	justify-content: center;
	min-height: 46px;
	padding: 10px 20px;
	text-decoration: none;
	transition: background-color 160ms ease, border-color 160ms ease, color 160ms ease;
}

.tw-project-button:hover {
	background: #ad1117;
	border-color: #ad1117;
	color: #fff;
}

.tw-project-button--secondary {
	background: transparent;
	border-color: #fff;
	color: #fff;
}

.tw-project-button--secondary:hover {
	background: #fff;
	border-color: #fff;
	color: #202124;
}

.tw-projects-reset {
	color: #44474d;
	font-weight: 650;
}

.tw-projects-results {
	min-height: 180px;
	position: relative;
}

.tw-projects-results[aria-busy="true"]::after {
	align-items: center;
	background: rgba(243, 244, 246, 0.9);
	border-radius: 14px;
	content: attr(data-loading-label);
	display: flex;
	font-weight: 700;
	inset: 0;
	justify-content: center;
	position: absolute;
	z-index: 3;
}

.tw-projects-grid {
	display: grid;
	gap: 24px;
	grid-template-columns: repeat(3, minmax(0, 1fr));
}

.tw-project-card {
	background: #fff;
	border: 1px solid #dfe1e4;
	border-radius: 16px;
	box-shadow: 0 12px 34px rgba(19, 20, 23, 0.07);
	display: flex;
	flex-direction: column;
	overflow: hidden;
}

.tw-project-card-media {
	aspect-ratio: 16 / 10;
	background: #dfe1e5;
	display: block;
	overflow: hidden;
}

.tw-project-card-image,
.tw-project-featured-image,
.tw-project-placeholder-image {
	display: block;
	height: 100%;
	object-fit: cover;
	width: 100%;
}

.tw-project-card-body {
	display: flex;
	flex: 1;
	flex-direction: column;
	padding: 22px;
}

.tw-project-status {
	align-self: flex-start;
	background: #fce7e8;
	border-radius: 999px;
	color: #a70f15;
	display: inline-block;
	font-size: 0.77rem;
	font-weight: 800;
	padding: 6px 10px;
}

.tw-project-card-title {
	font-size: 1.45rem;
	line-height: 1.2;
	margin: 14px 0 12px;
}

.tw-project-card-title a {
	color: #1b1b1d;
	text-decoration: none;
}

.tw-project-card-summary {
	color: #55585e;
	line-height: 1.6;
	margin: 0 0 18px;
}

.tw-project-card-details,
.tw-project-facts {
	display: grid;
	gap: 10px;
	margin: 0 0 22px;
}

.tw-project-card-details div,
.tw-project-facts div {
	align-items: baseline;
	border-bottom: 1px solid #ececef;
	display: flex;
	gap: 10px;
	justify-content: space-between;
	padding-bottom: 8px;
}

.tw-project-card-details dt,
.tw-project-facts dt {
	color: #696c72;
	font-size: 0.85rem;
}

.tw-project-card-details dd,
.tw-project-facts dd {
	font-weight: 700;
	margin: 0;
	text-align: right;
}

.tw-project-card-button {
	margin-top: auto;
	width: 100%;
}

.tw-project-hero {
	background: #242529;
	color: #fff;
	margin-bottom: 34px;
	padding: clamp(28px, 5vw, 64px) 0;
}

.tw-project-hero-grid {
	align-items: center;
	display: grid;
	gap: clamp(28px, 5vw, 64px);
	grid-template-columns: minmax(0, 0.8fr) minmax(0, 1.2fr);
}

.tw-project-hero-grid.tw-project-title--long {
	grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
}

.tw-project-hero-grid.tw-project-title--xlong {
	grid-template-columns: minmax(0, 1.25fr) minmax(0, 0.75fr);
}

.tw-project-hero-content {
	min-width: 0;
}

.tw-project-hero .tw-project-single-title {
	color: #fff;
}

.tw-project-hero-meta {
	display: flex;
	flex-wrap: wrap;
	gap: 10px 24px;
	margin: 28px 0 0;
}

.tw-project-hero-meta div {
	border-left: 2px solid #d71920;
	padding-left: 10px;
}

.tw-project-hero-meta dt {
	color: #bfc1c6;
	font-size: 0.77rem;
}

.tw-project-hero-meta dd {
	font-weight: 750;
	margin: 2px 0 0;
}

.tw-project-main-image {
	aspect-ratio: 16 / 10;
	background: #3a3c41;
	border-radius: 16px;
	overflow: hidden;
}

.tw-project-section {
	background: #fff;
	border: 1px solid #e0e1e4;
	border-radius: 16px;
	margin-bottom: 24px;
	padding: clamp(24px, 4vw, 42px);
}

.tw-project-section-title {
	color: #1b1b1d;
	font-size: clamp(1.5rem, 3vw, 2.25rem);
	margin: 0 0 24px;
}

.tw-project-story-grid,
.tw-project-spec-grid {
	display: grid;
	gap: 20px;
	grid-template-columns: repeat(2, minmax(0, 1fr));
}

.tw-project-story {
	background: #f4f5f6;
	border-radius: 12px;
	padding: 22px;
}

.tw-project-story--wide {
	grid-column: 1 / -1;
}

.tw-project-story h3,
.tw-project-spec h3 {
	font-size: 1.1rem;
	margin: 0 0 12px;
}

.tw-project-richtext > :first-child,
.tw-project-spec > :first-child {
	margin-top: 0;
}

.tw-project-richtext > :last-child,
.tw-project-spec > :last-child {
	margin-bottom: 0;
}

.tw-project-facts {
	grid-template-columns: repeat(2, minmax(0, 1fr));
	margin: 0 0 28px;
}

.tw-project-spec {
	background: #f4f5f6;
	border-radius: 12px;
	padding: 20px;
}

.tw-project-gallery {
	display: grid;
	gap: 12px;
	grid-template-columns: repeat(3, minmax(0, 1fr));
}

.tw-project-gallery-item {
	aspect-ratio: 4 / 3;
	border-radius: 10px;
	display: block;
	overflow: hidden;
}

.tw-project-gallery-item img {
	height: 100%;
	object-fit: cover;
	transition: transform 180ms ease;
	width: 100%;
}

.tw-project-gallery-item:hover img {
	transform: scale(1.025);
}

.tw-project-lightbox {
	align-items: center;
	background: rgba(10, 10, 12, 0.96);
	display: grid;
	grid-template-columns: minmax(48px, 0.12fr) minmax(0, 1fr) minmax(48px, 0.12fr);
	inset: 0;
	padding: 24px;
	position: fixed;
	z-index: 100000;
}

.tw-project-lightbox[hidden] {
	display: none;
}

.tw-project-lightbox-figure {
	align-items: center;
	display: flex;
	flex-direction: column;
	height: 100%;
	justify-content: center;
	margin: 0;
	min-width: 0;
}

.tw-project-lightbox-image {
	max-height: calc(100vh - 100px);
	max-width: 100%;
	object-fit: contain;
}

.tw-project-lightbox-caption {
	color: #fff;
	margin-top: 12px;
	text-align: center;
}

.tw-project-lightbox-close,
.tw-project-lightbox-prev,
.tw-project-lightbox-next {
	background: rgba(255, 255, 255, 0.12);
	border: 1px solid rgba(255, 255, 255, 0.4);
	border-radius: 50%;
	color: #fff;
	cursor: pointer;
	font-size: 2rem;
	height: 48px;
	width: 48px;
}

.tw-project-lightbox-close {
	position: absolute;
	right: 22px;
	top: 22px;
}

.tw-project-video {
	aspect-ratio: 16 / 9;
	background: #111;
	border-radius: 12px;
	overflow: hidden;
	position: relative;
}

.tw-project-video-preview,
.tw-project-video iframe {
	height: 100%;
	object-fit: cover;
	width: 100%;
}

.tw-project-video-play {
	align-items: center;
	background: #d71920;
	border: 0;
	border-radius: 50%;
	color: #fff;
	cursor: pointer;
	display: flex;
	font-size: 1.6rem;
	height: 72px;
	justify-content: center;
	left: 50%;
	padding-left: 5px;
	position: absolute;
	top: 50%;
	transform: translate(-50%, -50%);
	width: 72px;
}

.tw-project-cta {
	background: #242529;
	border-radius: 16px;
	color: #fff;
	padding: clamp(30px, 6vw, 64px);
	text-align: center;
}

.tw-project-cta h2 {
	color: #fff;
	font-size: clamp(1.7rem, 3.6vw, 3rem);
	margin: 0 0 24px;
}

.tw-project-cta-actions {
	display: flex;
	flex-wrap: wrap;
	gap: 12px;
	justify-content: center;
}

.tw-projects-pagination,
.tw-projects-empty {
	margin-top: 36px;
}

.tw-projects-empty {
	background: #fff;
	border: 1px solid #e0e1e4;
	border-radius: 14px;
	padding: 28px;
	text-align: center;
}

.tw-projects-empty p {
	margin: 0;
}

.tw-projects-pagination .nav-links {
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
	justify-content: center;
}

.tw-projects-pagination .page-numbers {
	align-items: center;
	background: #fff;
	border: 1px solid #d5d7da;
	border-radius: 7px;
	color: #202124;
	display: inline-flex;
	justify-content: center;
	min-height: 42px;
	min-width: 42px;
	padding: 6px 10px;
	text-decoration: none;
}

.tw-projects-pagination .current {
	background: #d71920;
	border-color: #d71920;
	color: #fff;
}

.tw-projects-error {
	background: #fff0f0;
	border: 1px solid #d71920;
	border-radius: 10px;
	color: #7d1115;
	padding: 18px;
}

.tw-projects-modal-open {
	overflow: hidden;
}

/* Current Twister Wash visual language, scoped to the public archive only. */
.tw-projects-archive {
	--tw-projects-bg: #f4f7f8;
	--tw-projects-surface: #fff;
	--tw-projects-surface-soft: #edf2f4;
	--tw-projects-text: #172026;
	--tw-projects-muted: #65717a;
	--tw-projects-border: #d9e1e5;
	--tw-projects-accent: #d71920;
	background: var(--tw-projects-bg);
	color: var(--tw-projects-text);
}

.tw-projects-archive-header {
	padding: clamp(28px, 5vw, 64px) 0 10px;
}

.tw-projects-archive-eyebrow {
	color: var(--tw-projects-accent);
	font-size: .78rem;
	font-weight: 800;
	letter-spacing: .14em;
	margin: 0 0 12px;
	text-transform: uppercase;
}

.tw-projects-archive .tw-projects-archive-title,
.tw-projects-archive .tw-project-card-title a {
	color: var(--tw-projects-text);
}

.tw-projects-archive .tw-projects-filters,
.tw-projects-archive .tw-project-card,
.tw-projects-archive .tw-projects-empty,
.tw-projects-archive .tw-projects-pagination .page-numbers {
	background: var(--tw-projects-surface);
	border-color: var(--tw-projects-border);
}

.tw-projects-archive .tw-projects-filters {
	border-radius: 22px;
	box-shadow: 0 16px 42px rgba(15, 31, 42, .07);
	padding: clamp(18px, 2.5vw, 28px);
}

.tw-projects-archive .tw-projects-filter select {
	background: var(--tw-projects-surface-soft);
	border-color: var(--tw-projects-border);
	color: var(--tw-projects-text);
}

.tw-projects-archive .tw-project-card {
	border-radius: 24px;
	box-shadow: 0 18px 46px rgba(15, 31, 42, .09);
}

.tw-projects-archive .tw-project-card-media {
	background: var(--tw-projects-surface-soft);
}

.tw-projects-archive .tw-project-card-body {
	padding: clamp(22px, 3vw, 30px);
}

.tw-projects-archive .tw-project-card-summary,
.tw-projects-archive .tw-project-card-details dt,
.tw-projects-archive .tw-projects-reset {
	color: var(--tw-projects-muted);
}

.tw-projects-archive .tw-project-card-details div {
	border-color: var(--tw-projects-border);
}

.tw-projects-archive .tw-projects-pagination .current {
	background: var(--tw-projects-accent);
	border-color: var(--tw-projects-accent);
	color: #fff;
}

.tw-projects-archive .tw-projects-results[aria-busy="true"]::after {
	background: color-mix(in srgb, var(--tw-projects-bg) 92%, transparent);
	color: var(--tw-projects-text);
}

html[data-theme="dark"] .tw-projects-archive,
html.dark .tw-projects-archive,
body.dark-mode .tw-projects-archive,
body.tw-theme-dark .tw-projects-archive,
[data-bs-theme="dark"] .tw-projects-archive {
	--tw-projects-bg: #0d151b;
	--tw-projects-surface: #151f26;
	--tw-projects-surface-soft: #101a21;
	--tw-projects-text: #f4f7f8;
	--tw-projects-muted: #b4c0c8;
	--tw-projects-border: #2d3b44;
}

@media (prefers-color-scheme: dark) {
	.tw-projects-archive {
		--tw-projects-bg: #0d151b;
		--tw-projects-surface: #151f26;
		--tw-projects-surface-soft: #101a21;
		--tw-projects-text: #f4f7f8;
		--tw-projects-muted: #b4c0c8;
		--tw-projects-border: #2d3b44;
	}
}

.tw-projects-filter select:focus,
.tw-project-button:focus,
.tw-projects-reset:focus,
.tw-project-gallery-item:focus,
.tw-project-lightbox-close:focus,
.tw-project-lightbox-prev:focus,
.tw-project-lightbox-next:focus,
.tw-project-video-play:focus {
	outline: 3px solid rgba(215, 25, 32, 0.4);
	outline-offset: 3px;
}

@media (max-width: 1100px) {
	.tw-projects-filters {
		grid-template-columns: repeat(3, minmax(0, 1fr));
	}
}

@media (max-width: 900px) {
	.tw-projects-grid {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	.tw-project-hero-grid,
	.tw-project-hero-grid.tw-project-title--long,
	.tw-project-hero-grid.tw-project-title--xlong {
		grid-template-columns: 1fr;
	}

	.tw-project-single-title.tw-project-title--short {
		font-size: clamp(2.7rem, 7.2vw, 4.5rem);
	}

	.tw-project-single-title.tw-project-title--medium {
		font-size: clamp(2.35rem, 6.2vw, 3.8rem);
	}

	.tw-project-single-title.tw-project-title--long {
		font-size: clamp(1.95rem, 5.2vw, 3.1rem);
	}

	.tw-project-single-title.tw-project-title--xlong {
		font-size: clamp(1.7rem, 4.5vw, 2.65rem);
	}
}

@media (max-width: 640px) {
	.tw-project-container,
	.tw-projects-container {
		padding: 0 16px;
	}

	.tw-project-single,
	.tw-projects-archive {
		padding: 28px 0 56px;
	}

	.tw-projects-filters,
	.tw-projects-grid,
	.tw-project-facts,
	.tw-project-spec-grid,
	.tw-project-story-grid {
		grid-template-columns: 1fr;
	}

	.tw-projects-filter-actions {
		align-items: stretch;
		flex-direction: column;
	}

	.tw-projects-reset {
		padding: 10px;
		text-align: center;
	}

	.tw-project-story--wide {
		grid-column: auto;
	}

	.tw-project-single-title.tw-project-title--short {
		font-size: clamp(2.15rem, 10vw, 3rem);
	}

	.tw-project-single-title.tw-project-title--medium {
		font-size: clamp(1.85rem, 8.8vw, 2.55rem);
		line-height: 1.09;
	}

	.tw-project-single-title.tw-project-title--long {
		font-size: clamp(1.55rem, 7.6vw, 2.15rem);
		line-height: 1.13;
	}

	.tw-project-single-title.tw-project-title--xlong {
		font-size: clamp(1rem, 4.8vw, 1.55rem);
		line-height: 1.17;
	}

	.tw-project-gallery {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	.tw-project-lightbox {
		grid-template-columns: 48px minmax(0, 1fr) 48px;
		padding: 12px;
	}

	.tw-project-lightbox-close {
		right: 12px;
		top: 12px;
	}

	.tw-project-cta-actions {
		align-items: stretch;
		flex-direction: column;
	}
}

@media (prefers-reduced-motion: reduce) {
	.tw-project-button,
	.tw-project-gallery-item img {
		transition: none;
	}
}
