/* AlphaSoft — portfolio archive, filters, single project case-study.
   Ported from the V4 prototype design system.
   Note: the shared "inner-page hero" component (.inner-hero and friends)
   lives in base.css, not here — it's used by content pages that never load
   this stylesheet (see inc/assets.php's conditional enqueue). */

.case-hero {
	min-height: 86svh;
	padding: 145px var(--side-padding) 50px;
	display: flex;
	flex-direction: column;
	justify-content: space-between;
}

.case-hero h1 {
	margin: auto 0;
	font-size: clamp(64px, 10vw, 156px);
	font-weight: 500;
	line-height: 0.89;
	letter-spacing: -0.08em;
}

/* Archive */
.archive-section {
	padding: 70px var(--side-padding) 140px;
}

.filters {
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
	margin-bottom: 55px;
}

.filter {
	padding: 11px 15px;
	border: 1px solid var(--ink);
	border-radius: 999px;
	background: transparent;
	font: 400 9px/1 var(--mono);
	text-transform: uppercase;
	cursor: pointer;
}

.filter.active {
	background: var(--ink);
	color: #fff;
}

.archive-list {
	border-top: 1px solid var(--ink);
}

.archive-project {
	position: relative;
	display: grid;
	grid-template-columns: 50px 1.2fr 1fr auto;
	align-items: center;
	min-height: 135px;
	border-bottom: 1px solid var(--ink);
	transition: padding 0.4s;
}

.archive-project:hover {
	padding-left: 16px;
}

.archive-project.hidden {
	display: none;
}

.archive-project > span {
	font: 400 9px/1 var(--mono);
}

.archive-project h2 {
	margin: 0;
	font-size: clamp(33px, 4vw, 59px);
	font-weight: 500;
	letter-spacing: -0.06em;
}

.archive-project p {
	margin: 0;
	font: 400 9px/1.5 var(--mono);
	text-transform: uppercase;
}

.archive-preview {
	position: absolute;
	z-index: 5;
	right: 8%;
	top: 50%;
	width: 320px;
	height: 210px;
	display: grid;
	place-items: center;
	pointer-events: none;
	opacity: 0;
	transform: translateY(-50%) scale(0.82) rotate(4deg);
	transition: 0.4s;
	color: #fff;
	overflow: hidden;
}

.archive-preview::before {
	content: "";
	position: absolute;
	inset: 10%;
	border: 1px solid currentcolor;
	opacity: 0.45;
}

.archive-preview strong {
	position: relative;
	font-size: 32px;
	letter-spacing: -0.06em;
	text-align: center;
}

.archive-project:hover .archive-preview {
	opacity: 1;
	transform: translateY(-50%) scale(1) rotate(-3deg);
}

.no-results {
	padding: 60px 0;
	font: 400 12px/1.6 var(--mono);
}

/* Single project — hero + main visual */
.case-tagline {
	max-width: 780px;
	margin: 30px 0 50px;
	font-size: clamp(21px, 2.5vw, 36px);
	line-height: 1.28;
	letter-spacing: -0.035em;
}

.case-meta {
	display: grid;
	grid-template-columns: 1fr 0.5fr 1fr;
	border-top: 1px solid var(--ink);
}

.case-meta > div {
	min-height: 130px;
	padding: 22px 20px;
	border-right: 1px solid var(--ink);
}

.case-meta > div:last-child {
	border-right: 0;
}

.case-meta small {
	display: block;
	margin-bottom: 24px;
	font: 400 9px/1 var(--mono);
	text-transform: uppercase;
}

.case-meta strong {
	font-size: 17px;
	font-weight: 500;
}

.case-meta .large-link {
	margin: 0;
	min-height: 44px;
}

.availability-note {
	font: 400 10px/1.5 var(--mono);
	text-transform: uppercase;
}

.case-main-visual {
	position: relative;
	padding: 70px var(--side-padding) 90px;
	display: grid;
	place-items: center;
	color: #fff;
}

/* Framed, natural-size presentation — these are pre-composed device
   mockups (or, for projects without one, a real product screenshot), never
   force-cropped or upscaled past their own resolution. */
.case-visual-image {
	display: block;
	width: auto;
	max-width: min(100%, 1600px);
	height: auto;
	max-height: 78vh;
	box-shadow: 0 50px 100px -20px rgb(0 0 0 / 35%);
}

.case-watermark {
	position: absolute;
	left: 3%;
	right: 3%;
	top: 4%;
	font-size: clamp(70px, 14vw, 220px);
	font-weight: 700;
	letter-spacing: -0.1em;
	color: transparent;
	-webkit-text-stroke: 1px currentcolor;
	opacity: 0.35;
	text-align: center;
}

.case-screen {
	position: relative;
	z-index: 2;
	width: min(72%, 980px);
	min-height: 48%;
	padding: 35px;
	display: flex;
	flex-direction: column;
	justify-content: space-between;
	border: 1px solid currentcolor;
	background: rgb(8 8 8 / 82%);
	backdrop-filter: blur(12px);
}

.visual-emal .case-screen,
.visual-snezana .case-screen,
.visual-lorena .case-screen,
.visual-food .case-screen,
.visual-beauty .case-screen {
	background: rgb(255 255 255 / 82%);
	color: #080808;
}

.case-screen span,
.case-screen i {
	font: 400 9px/1 var(--mono);
	text-transform: uppercase;
}

.case-screen strong {
	font-size: clamp(42px, 7vw, 105px);
	font-weight: 500;
	letter-spacing: -0.07em;
}

.case-screen i {
	font-style: normal;
	align-self: flex-end;
}

.case-visual-a {
	position: absolute;
	inset: 8%;
	color: rgb(202 255 56 / 35%);
}

.case-visual-a i {
	width: 4px;
	height: 100%;
	top: 0;
}

.case-visual-a i:first-child {
	left: 28%;
	transform: rotate(22deg);
}

.case-visual-a i:nth-child(2) {
	right: 28%;
	transform: rotate(-22deg);
}

.case-visual-a b {
	width: 52%;
	height: 4px;
	left: 24%;
	top: 58%;
}

/* Single project — story sections */
.case-story {
	padding: 130px var(--side-padding);
	display: grid;
	grid-template-columns: 0.55fr 1.45fr;
	gap: 8vw;
}

.case-story-nav {
	display: flex;
	gap: 18px;
	font: 400 9px/1 var(--mono);
	text-transform: uppercase;
}

.case-lead {
	max-width: 900px;
	margin: 0;
	font-size: clamp(29px, 4.2vw, 62px);
	line-height: 1.12;
	letter-spacing: -0.05em;
}

/*
 * .case-lead is a <p> in the prototype, but here it wraps whatever
 * the_content produces for the project's excerpt/body — WP auto-wraps
 * plain text in its own <p>, which then carries the browser's default
 * 1em top/bottom margin and inflates the section's height.
 */
.case-lead > p {
	margin: 0;
}

.case-two-col {
	padding: 0 var(--side-padding) 130px;
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 1px;
	background: var(--ink);
}

.case-two-col article {
	padding: 55px;
	background: var(--paper);
}

.case-two-col span {
	font: 400 9px/1 var(--mono);
}

.case-two-col h2 {
	margin: 80px 0 24px;
	font-size: clamp(36px, 4vw, 60px);
	font-weight: 500;
	letter-spacing: -0.06em;
}

.case-two-col p {
	font-size: 16px;
	line-height: 1.75;
}

.case-features {
	padding: 130px var(--side-padding);
	display: grid;
	grid-template-columns: 0.8fr 1.2fr;
	gap: 8vw;
	background: #fff;
}

.case-features h2 {
	max-width: 600px;
	margin: 0;
	font-size: clamp(48px, 6vw, 90px);
	font-weight: 500;
	line-height: 0.95;
	letter-spacing: -0.07em;
}

.case-features ol {
	list-style: none;
	margin: 0;
	padding: 0;
	border-top: 1px solid var(--ink);
}

.case-features li {
	display: grid;
	grid-template-columns: 48px 1fr;
	padding: 20px 0;
	border-bottom: 1px solid var(--ink);
}

.case-features li span {
	font: 400 9px/1 var(--mono);
}

.case-features li p {
	margin: 0;
	font-size: 18px;
}

.case-gallery {
	padding: 130px var(--side-padding);
	display: grid;
	justify-content: center;
	/* Frames hold phone-shaped mobile screenshots (see .gallery-frame's
	   390:844 aspect-ratio below) — sized to fit that shape rather than
	   stretched across a desktop-width column. */
	grid-template-columns: repeat(auto-fit, minmax(260px, 340px));
	gap: 24px;
}

.gallery-frame {
	position: relative;
	aspect-ratio: 390 / 844;
	padding: 25px;
	display: flex;
	flex-direction: column;
	justify-content: space-between;
	background: var(--ink);
	color: #fff;
	overflow: hidden;
}

.gallery-frame img {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
	object-position: top;
	z-index: 0;
}

.gallery-frame span,
.gallery-frame strong {
	position: relative;
	z-index: 1;
}

.gallery-frame span {
	font: 400 9px/1 var(--mono);
	text-transform: uppercase;
}

.gallery-frame strong {
	font-size: clamp(43px, 7vw, 110px);
	font-weight: 500;
	letter-spacing: -0.07em;
}

.gallery-frame:nth-child(2) {
	background: var(--blue);
}

.gallery-frame:nth-child(3) {
	grid-column: 1 / 3;
	min-height: 650px;
	background: var(--acid);
	color: var(--ink);
}

.case-note {
	padding: 110px var(--side-padding);
	display: grid;
	grid-template-columns: 60px 1fr;
	background: var(--ink);
	color: #fff;
}

.case-note > span {
	font: 400 9px/1 var(--mono);
}

.case-note h2 {
	margin: 0;
	font-size: clamp(40px, 5vw, 75px);
	font-weight: 500;
	letter-spacing: -0.06em;
}

.case-note p {
	max-width: 850px;
	color: #aaa;
	font-size: 16px;
	line-height: 1.75;
}

/* Credits / testimonial */
.case-credits {
	padding: 0 var(--side-padding) 130px;
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
	gap: 1px;
	background: var(--ink);
}

.case-credits article {
	padding: 40px;
	background: var(--paper);
}

.case-credits span {
	display: block;
	margin-bottom: 18px;
	font: 400 9px/1 var(--mono);
	text-transform: uppercase;
	color: #5c5c5c; /* on --paper background; #777 measured under the 4.5:1 AA minimum here */
}

.case-credits strong {
	font-size: 20px;
	font-weight: 500;
}

.case-testimonial {
	padding: 130px var(--side-padding);
	background: #fff;
}

.case-testimonial blockquote {
	max-width: 900px;
	margin: 0 0 30px;
	font-size: clamp(24px, 3vw, 40px);
	line-height: 1.3;
	letter-spacing: -0.03em;
	font-style: normal;
}

.case-testimonial cite {
	font: 400 10px/1 var(--mono);
	text-transform: uppercase;
	font-style: normal;
}

.next-project {
	padding: 120px var(--side-padding);
}

.next-project > a:first-of-type {
	display: flex;
	justify-content: space-between;
	align-items: center;
	padding: 30px 0;
	border-top: 1px solid var(--ink);
	border-bottom: 1px solid var(--ink);
	font-size: clamp(48px, 8vw, 120px);
	letter-spacing: -0.07em;
}

.next-project > a i {
	font-style: normal;
}

.text-link {
	display: inline-block;
	margin-top: 30px;
	padding-bottom: 6px;
	border-bottom: 1px solid var(--ink);
	font-size: 13px;
}

/* Responsive */
@media (width <= 960px) {
	.inner-hero,
	.case-hero,
	.contact-page-hero {
		padding: 120px 20px 35px;
	}

	.inner-indent {
		margin-left: 0;
	}

	.archive-section,
	.case-story,
	.case-features,
	.case-gallery,
	.case-note,
	.next-project {
		padding-left: 20px;
		padding-right: 20px;
	}

	.archive-project {
		grid-template-columns: 38px 1fr auto;
	}

	.archive-project p {
		display: none;
	}

	.archive-preview {
		display: none;
	}

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

	.case-meta > div {
		border-right: 0;
		border-bottom: 1px solid var(--ink);
	}

	.case-story,
	.case-features {
		grid-template-columns: 1fr;
		gap: 50px;
	}

	.case-two-col {
		padding-left: 20px;
		padding-right: 20px;
		grid-template-columns: 1fr;
	}

	.gallery-frame:nth-child(3) {
		grid-column: auto;
	}

	.case-screen {
		width: 86%;
	}

	.case-credits {
		padding-left: 20px;
		padding-right: 20px;
		grid-template-columns: 1fr;
	}
}

@media (width <= 600px) {
	.inner-hero h1,
	.case-hero h1,
	.contact-page-hero h1 {
		font-size: 53px;
	}

	.inner-hero-bottom {
		grid-template-columns: 1fr;
		gap: 25px;
	}

	.archive-project {
		grid-template-columns: 34px 1fr;
	}

	.archive-project > span:last-of-type {
		display: none;
	}

	.archive-project h2 {
		font-size: 31px;
	}

	.case-tagline {
		font-size: 21px;
	}

	.case-main-visual {
		padding: 40px 20px 60px;
	}

	.case-screen {
		min-height: 58%;
		padding: 20px;
	}

	.case-screen strong {
		font-size: 40px;
	}

	.case-two-col {
		grid-template-columns: 1fr;
	}

	.case-two-col article {
		padding: 35px 25px;
	}

	.case-features li p {
		font-size: 15px;
	}

	.case-gallery {
		padding-top: 80px;
		padding-bottom: 80px;
	}

	.gallery-frame:nth-child(3) {
		min-height: 480px;
	}

	.case-note {
		grid-template-columns: 35px 1fr;
	}

	.next-project > a:first-of-type {
		font-size: 46px;
	}
}
