/* ═══════════════════════════════════════════════════════════
   Single Projet — Technical Precision design
   ═══════════════════════════════════════════════════════════ */

/* ── Variables (mirrors main.scss) ───────────────────────── */
:root {
	--ps-primary:          #00020e;
	--ps-secondary:        #545f73;
	--ps-surface:          #f7f9fb;
	--ps-surface-container: #eceef0;
	--ps-on-surface-variant: #45464e;
	--ps-outline-variant:  #c6c6cf;
	--ps-font-headline:    'Hanken Grotesk', sans-serif;
	--ps-font-body:        'Manrope', sans-serif;
	--ps-font-code:        'Geist', monospace;
	--ps-container:        1200px;
	--ps-gutter:           2rem;
	--ps-header-height:    73px; /* matches fixed header */
}

/* ── Layout ───────────────────────────────────────────────── */
.projet-single {
	padding-top: var(--ps-header-height);
	background-color: var(--ps-surface);
	font-family: var(--ps-font-body);
	color: var(--ps-primary);
}

.projet-single > * {
	max-width: var(--ps-container);
	margin-left: auto;
	margin-right: auto;
	padding-left: var(--ps-gutter);
	padding-right: var(--ps-gutter);
}

/* ── Hero ─────────────────────────────────────────────────── */
.ps-hero {
	padding-top: 3rem;
	padding-bottom: 3rem;
	max-width: 800px;
	/* override parent centering to keep full-width padding */
	margin-left: auto;
	margin-right: auto;
}

.ps-case-label {
	display: flex;
	align-items: center;
	gap: 0.5rem;
	font-family: var(--ps-font-code);
	font-size: 13px;
	font-weight: 500;
	letter-spacing: 0.05em;
	color: var(--ps-primary);
	margin: 0 0 0.75rem;
}

/* Diamond bullet */
.ps-diamond {
	display: inline-block;
	width: 16px;
	height: 16px;
	transform: rotate(45deg);
	flex-shrink: 0;
    margin: 5px;
}

.ps-diamond--filled {
	background-color: var(--ps-primary);
}

.ps-diamond--hollow {
	border: 1px solid var(--ps-primary);
}

.ps-title {
	font-family: var(--ps-font-headline);
	font-size: clamp(32px, 5vw, 48px);
	font-weight: 700;
	line-height: 1.1;
	letter-spacing: -0.02em;
	color: var(--ps-primary);
	margin: 0 0 1rem;
}

.ps-excerpt {
	font-family: var(--ps-font-body);
	font-size: 18px;
	font-weight: 400;
	line-height: 1.6;
	color: var(--ps-secondary);
	margin: 0;
	max-width: 640px;
}

/* ── Hero Image ───────────────────────────────────────────── */
.ps-hero-image {
	padding-top: 0;
	padding-bottom: 3rem;
}

.ps-hero-image .ps-thumbnail {
	display: block;
	width: 100%;
	aspect-ratio: 16 / 9;
	object-fit: cover;
	border: 1px solid var(--ps-outline-variant);
	filter: grayscale(0.2);
	transition: filter 0.7s ease;
}

.ps-hero-image .ps-thumbnail:hover {
	filter: grayscale(0);
}

/* ── Two-column grid ──────────────────────────────────────── */
.ps-grid {
	display: grid;
	grid-template-columns: 1fr 320px;
	gap: 3rem;
	padding-top: 0;
	padding-bottom: 4rem;
	align-items: start;
}

/* ── Section header (icon + title + trailing rule) ────────── */
.ps-section {
	margin-bottom: 3rem;
}

.ps-section-header {
	display: flex;
	align-items: center;
	gap: 1rem;
	margin-bottom: 1.5rem;
}

.ps-section-icon {
	width: 40px;
	height: 40px;
	border: 1px solid var(--ps-primary);
	display: flex;
	align-items: center;
	justify-content: center;
	flex-shrink: 0;
}

.ps-section-icon .material-symbols-outlined {
	font-size: 20px;
	color: var(--ps-primary);
}

.ps-section-title {
	font-family: var(--ps-font-headline);
	font-size: 20px;
	font-weight: 600;
	line-height: 1.4;
	text-transform: uppercase;
	letter-spacing: 0.05em;
	color: var(--ps-primary);
	margin: 0;
	white-space: nowrap;
}

.ps-section-rule {
	flex-grow: 1;
	height: 1px;
	background-color: var(--ps-outline-variant);
}

/* ── Post content ─────────────────────────────────────────── */
.ps-content {
	font-family: var(--ps-font-body);
	font-size: 14px;
	font-weight: 400;
	line-height: 1.5;
	color: var(--ps-on-surface-variant);
}

.ps-content p {
	margin: 0 0 1rem;
}

.ps-content p:last-child {
	margin-bottom: 0;
}

/* ── Implementation timeline ──────────────────────────────── */
.ps-implementation {
	position: relative;
	padding-left: 2rem;
	border-left: 1px solid var(--ps-outline-variant);
	padding-top: 1rem;
	padding-bottom: 1rem;
	display: flex;
	flex-direction: column;
	gap: 3rem;
}

.ps-challenge {
	position: relative;
	display: flex;
	flex-direction: column;
	gap: 0.5rem;
}

.ps-challenge-marker {
	position: absolute;
	left: calc(-2rem - 8px);
	top: 2px;
	width: 16px;
	height: 16px;
	transform: rotate(45deg);
	flex-shrink: 0;
}

.ps-challenge-marker--filled {
	background-color: var(--ps-primary);
}

.ps-challenge-marker:not(.ps-challenge-marker--filled) {
	border: 1px solid var(--ps-primary);
	background-color: var(--ps-surface);
}

.ps-challenge-title {
	font-family: var(--ps-font-headline);
	font-size: 20px;
	font-weight: 600;
	color: var(--ps-primary);
	margin: 0;
}

.ps-challenge-desc {
	font-family: var(--ps-font-body);
	font-size: 14px;
	line-height: 1.5;
	color: var(--ps-on-surface-variant);
	margin: 0;
}

/* ── Sidebar ──────────────────────────────────────────────── */
.ps-sidebar {
	display: flex;
	flex-direction: column;
	gap: 2rem;
}

.ps-sidebar-section {
	/* no extra wrapper needed */
}

.ps-sidebar-title {
	font-family: var(--ps-font-code);
	font-size: 13px;
	font-weight: 700;
	letter-spacing: 0.1em;
	text-transform: uppercase;
	color: var(--ps-primary);
	margin: 0 0 1.25rem;
	padding-bottom: 0.5rem;
	border-bottom: 1px solid var(--ps-primary);
}

/* Tech stack chips */
.ps-stack-list {
	display: flex;
	flex-direction: column;
	gap: 0.5rem;
}

.ps-stack-item {
	font-family: var(--ps-font-code);
	font-size: 13px;
	font-weight: 500;
	letter-spacing: 0.02em;
	color: var(--ps-primary);
}

/* CTA button */
.ps-cta {
	display: flex;
	align-items: center;
	justify-content: space-between;
	padding: 1rem;
	border: 1px solid var(--ps-primary);
	color: var(--ps-primary);
	font-family: var(--ps-font-body);
	font-size: 14px;
	font-weight: 700;
	text-decoration: none;
	transition: background-color 0.3s ease, color 0.3s ease;
}

.ps-cta:hover {
	background-color: var(--ps-primary);
	color: #ffffff;
}

.ps-cta .material-symbols-outlined {
	font-size: 20px;
	transition: color 0.3s ease;
}

/* ── Responsive ───────────────────────────────────────────── */
@media (max-width: 1024px) {
	.ps-grid {
		grid-template-columns: 1fr;
	}

	.ps-sidebar {
		flex-direction: row;
		flex-wrap: wrap;
		align-items: flex-start;
		gap: 2rem;
	}

	.ps-sidebar-section {
		flex: 1 1 240px;
	}
}

@media (max-width: 640px) {
	.ps-hero {
		padding-top: 2rem;
		padding-bottom: 2rem;
	}

	.ps-title {
		font-size: 28px;
	}

	.ps-sidebar {
		flex-direction: column;
	}

	.ps-section-title {
		font-size: 16px;
	}

	.ps-implementation {
		padding-left: 1.5rem;
	}

	.ps-challenge-marker {
		left: calc(-1.5rem - 8px);
	}
}
