/* ===========================================================================
   Helios — "Helios làm gì?" services slide

   Two cards: image, title, hairline, short description, link into the matching
   process slide. Modelled on the card layout the client showed us from
   Gạo Design (HELIOS_WEBSITE_ADJUSTMENT_BRIEF.md §6).
   ======================================================================== */

.hl-svcs {
	display: grid;
	grid-template-columns: repeat(var(--hl-svcs-cols, 2), minmax(0, 1fr));
	gap: clamp(20px, 2.4vw, 34px);
	width: 100%;
	max-width: 1280px;
	margin-inline: auto;
}

.hl-svc {
	display: flex;
	flex-direction: column;
	overflow: hidden;
	border: 1px solid var(--hl-w-border, var(--hl-line));
	border-radius: var(--hl-radius-card, 4px);
	background: rgba(20, 17, 16, .55);
	color: inherit;
	transition: transform .5s var(--hl-ease), border-color .5s var(--hl-ease);
}
.hl-svc:hover,
.hl-svc:focus-visible {
	border-color: var(--hl-w-accent, var(--hl-sun));
	transform: translateY(-6px);
}

/* ---------------------------------------------------------------------------
   The photo is sized off the VIEWPORT, not by aspect-ratio.

   A deck slide is exactly 100dvh and clips whatever overflows. At 1440x900 an
   aspect-ratio photo on a 623px-wide card came out 388px tall and pushed 79px
   of the second card's text out of sight — with no scrollbar to reach it, which
   reads as the text simply being missing.
   ------------------------------------------------------------------------ */
.hl-svc__ph {
	position: relative;
	height: clamp(150px, calc(100dvh - 630px), 355px);
	overflow: hidden;
}
.hl-svc__ph .hl-media {
	z-index: 0;
	transform: scale(1.04);
	transition: transform 1.4s var(--hl-ease);
}
.hl-svc:hover .hl-svc__ph .hl-media,
.hl-svc:focus-visible .hl-svc__ph .hl-media { transform: scale(1.1); }

.hl-svc__body {
	display: flex;
	flex: 1;
	flex-direction: column;
	padding: clamp(20px, 2vw, 30px);
}
.hl-svc__body h3 { margin: 0 0 14px; }
.hl-svc__body hr {
	margin: 0 0 16px;
	border: 0;
	border-top: 1px solid var(--hl-w-border, var(--hl-line));
}
.hl-svc__body p {
	margin: 0;
	font-size: .95rem;
	line-height: 1.8;
	color: var(--hl-w-body, var(--hl-cream-dim));
}
.hl-svc__body .hl-go {
	display: inline-flex;
	align-items: center;
	gap: 10px;
	margin-top: auto;
	padding-top: 22px;
	font-size: .76rem;
	font-weight: 500;
	letter-spacing: .1em;
	text-transform: uppercase;
	color: var(--hl-w-accent, var(--hl-sun));
	transition: gap .4s var(--hl-ease);
}
.hl-svc:hover .hl-go,
.hl-svc:focus-visible .hl-go { gap: 16px; }

/* On an ordinary page the cards sit on the paper canvas, where a dark
   translucent fill would composite to a grey slab. */
.hl-paper .hl-svc {
	background: var(--hl-w-bg, transparent);
}

/* Short viewports: tighten the body rather than let the last line clip. */
@media (min-width: 721px) and (max-height: 920px) {
	.hl-svc__body { padding-block: 18px; }
	.hl-svc__body h3 { margin-bottom: 10px; }
	.hl-svc__body p { font-size: .88rem; line-height: 1.7; }
	.hl-svc__body .hl-go { padding-top: 16px; }
}

@media (max-width: 720px) {
	.hl-svcs { grid-template-columns: minmax(0, 1fr); }
}
