/**
 * BNL — Design System
 * Satu-satunya sumber warna, tipografi, spacing, dan gaya section.
 * Ikon dekoratif dibuat dari CSS mask supaya editor tidak perlu menyentuh SVG.
 */

/* =========================================================================
   1. TOKEN
   ========================================================================= */
:root {
	--lhc-navy-50: #f4f6fa;
	--lhc-navy-100: #dce4f2;
	--lhc-navy-200: #b6c4e0;
	--lhc-navy-400: #5f7ab5;
	--lhc-navy-700: #14337f;
	--lhc-navy-800: #102965;
	--lhc-navy-900: #0c1d4d;
	--lhc-navy-950: #081434;
	--lhc-gold: #e8b546;
	--lhc-gold-600: #8a6516;
	--lhc-accent: #f5b921;
	--lhc-ink: #28303b;
	--lhc-muted: #5d6675;

	--lhc-wrap: 76rem;
	--lhc-gut: 1.25rem;
	--lhc-radius: 12px;
	--lhc-radius-sm: 8px;

	--lhc-display: "Plus Jakarta Sans", system-ui, sans-serif;
	--lhc-body: Inter, system-ui, sans-serif;
	--lhc-mono: "IBM Plex Mono", ui-monospace, monospace;

	--lhc-ico-diamonds: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 10' fill='black'%3E%3Cpath d='M5 0l5 5-5 5-5-5z'/%3E%3Cpath d='M15 0l5 5-5 5-5-5z' opacity='.55'/%3E%3Cpath d='M25 0l5 5-5 5-5-5z' opacity='.25'/%3E%3C/svg%3E");
	--lhc-ico-check: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 12.5l5 5L20 6.5'/%3E%3C/svg%3E");
	--lhc-ico-arrow: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12h14M13 6l6 6-6 6'/%3E%3C/svg%3E");
	--lhc-ico-chevron: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M9 6l6 6-6 6'/%3E%3C/svg%3E");
	--lhc-ico-wa: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='black'%3E%3Cpath d='M12 2a10 10 0 00-8.6 15.1L2 22l5.1-1.3A10 10 0 1012 2zm0 1.8a8.2 8.2 0 110 16.4 8.1 8.1 0 01-4.2-1.2l-.3-.2-3 .8.8-2.9-.2-.3A8.2 8.2 0 0112 3.8zm-3.1 4c-.2 0-.5 0-.7.3-.2.3-.9.9-.9 2.1s.9 2.4 1 2.6c.2.2 1.8 2.9 4.4 3.9 2.2.9 2.6.7 3.1.7.5-.1 1.5-.6 1.7-1.2.2-.6.2-1.1.2-1.2l-.4-.3-1.5-.7c-.2-.1-.4-.1-.5.1l-.7.9c-.1.2-.3.2-.5.1a6.7 6.7 0 01-3.3-2.9c-.1-.2 0-.4.1-.5l.5-.6c.1-.2.2-.3.1-.5L10 8.2c-.1-.3-.3-.4-.5-.4h-.6z'/%3E%3C/svg%3E");
	--lhc-ico-person: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='8' r='4'/%3E%3Cpath d='M4 21c0-4 3.5-7 8-7s8 3 8 7'/%3E%3C/svg%3E");
}

/* =========================================================================
   2. DASAR
   ========================================================================= */
html {
	scroll-behavior: smooth;
	scroll-padding-top: 5rem;
}

body {
	font-family: var(--lhc-body);
	color: var(--lhc-ink);
	-webkit-font-smoothing: antialiased;
	/* `clip`, bukan `hidden`, supaya position:sticky tetap bekerja. */
	overflow-x: clip;
}

/* Container di bawah ini memakai CSS grid dengan `gap`, jadi jarak antar-blok
   bawaan WordPress (blockGap) harus dinolkan — kalau tidak, item ke-2 dst.
   turun sendiri dan barisnya jadi tidak rata. */
.lhc-header > *,
.lhc-hero > *,
.lhc-inner-hero > *,
.lhc-footer > *,
.lhc-grid > *,
.lhc-trust > *,
.lhc-band__grid > *,
.lhc-feats > *,
.lhc-logos > *,
.lhc-footer__cols > *,
.lhc-map > * {
	margin-block-start: 0;
	margin-block-end: 0;
}

/* Setiap section halaman (.lhc-hero, .lhc-sec, .lhc-band, .lhc-cta) sudah
   mengatur jarak vertikalnya sendiri lewat padding-block. Tanpa baris ini,
   WordPress tetap menambah margin-top ~19px bawaan di antara <main> dan
   header, dan di antara setiap section — paling kentara sebagai garis putih
   tipis di atas hero sebelum discroll (celahnya menyingkap latar <body>). */
main#konten,
.entry-content.wp-block-post-content > * {
	margin-block-start: 0;
}

main#konten + footer {
	margin-block-start: 0;
}

.lhc-sec h1,
.lhc-sec h2,
.lhc-sec h3,
.lhc-sec h4,
.lhc-header h1,
.lhc-footer h2,
.lhc-footer h3 {
	font-family: var(--lhc-display);
	letter-spacing: -0.02em;
}

.lhc-wrap {
	width: 100%;
	max-width: var(--lhc-wrap);
	margin-inline: auto;
	padding-inline: var(--lhc-gut);
}

.lhc-sec {
	padding-block: 3.5rem;
	background: #fff;
}

.lhc-sec > .lhc-wrap > *:first-child,
.lhc-sec > .lhc-wrap > .wp-block-columns:first-child {
	margin-top: 0;
}

.lhc-sec--tint {
	background: var(--lhc-navy-50);
}

.lhc-sec--dark {
	background: var(--lhc-navy-950);
	color: var(--lhc-navy-200);
}

.lhc-sec--dark h2,
.lhc-sec--dark h3 {
	color: #fff;
}

@media (min-width: 1024px) {
	.lhc-sec {
		padding-block: 8rem;
	}

	.lhc-wrap {
		padding-inline: 2rem;
	}
}

/* Eyebrow: label mono + tiga wajik emas */
.lhc-eyebrow {
	display: flex;
	align-items: center;
	gap: 0.75rem;
	margin: 0;
	font-family: var(--lhc-mono);
	font-size: 0.75rem;
	letter-spacing: 0.22em;
	text-transform: uppercase;
	color: var(--lhc-gold-600);
}

.lhc-eyebrow::before {
	content: "";
	flex: 0 0 auto;
	width: 30px;
	height: 10px;
	background: currentColor;
	-webkit-mask: var(--lhc-ico-diamonds) no-repeat center / contain;
	mask: var(--lhc-ico-diamonds) no-repeat center / contain;
}

.lhc-sec--dark .lhc-eyebrow,
.lhc-hero .lhc-eyebrow {
	color: var(--lhc-gold);
}

/* Judul & teks */
.lhc-h2 {
	margin: 1rem 0 0;
	font-size: clamp(1.875rem, 1.2rem + 2.4vw, 2.6rem);
	font-weight: 800;
	line-height: 1.15;
	color: var(--lhc-navy-950);
}

.lhc-lead {
	margin: 1.5rem 0 0;
	color: var(--lhc-muted);
	line-height: 1.75;
}

.lhc-sec--dark .lhc-lead,
.lhc-hero .lhc-lead {
	color: var(--lhc-navy-200);
}

.lhc-mono {
	font-family: var(--lhc-mono);
	font-size: 0.75rem;
	color: var(--lhc-muted);
}

/* Kepala section: judul kiri, tautan kanan */
.lhc-sechead {
	display: flex;
	flex-wrap: wrap;
	align-items: flex-end;
	justify-content: space-between;
	gap: 1.5rem;
}

.lhc-sechead > .wp-block-group {
	max-width: 42rem;
	flex: 1 1 22rem;
}

/* =========================================================================
   3. TOMBOL & TAUTAN
   ========================================================================= */
.lhc-cta-row {
	gap: 1rem;
	margin-top: 2.25rem;
}

.lhc-btn .wp-block-button__link {
	border-radius: 0;
	font-family: var(--lhc-display);
	font-weight: 700;
	font-size: 1rem;
	padding: 1rem 2rem;
	line-height: 1.2;
	transition: transform 0.15s ease, filter 0.15s ease, background-color 0.15s ease,
		border-color 0.15s ease, color 0.15s ease;
}

/* Primer: sudut terpotong 45° (motif pelat baja) */
.lhc-btn--primary .wp-block-button__link {
	background: var(--lhc-accent);
	color: var(--lhc-navy-950);
	border: 0;
	clip-path: polygon(0 0, calc(100% - 14px) 0, 100% 14px, 100% 100%, 0 100%);
	filter: drop-shadow(0 2px 4px rgba(8, 20, 52, 0.18));
}

.lhc-btn--primary .wp-block-button__link:hover,
.lhc-btn--primary .wp-block-button__link:focus {
	background: var(--lhc-gold);
	color: var(--lhc-navy-950);
	transform: translateY(-1px);
	filter: drop-shadow(0 5px 12px rgba(8, 20, 52, 0.28));
}

.lhc-btn--primary .wp-block-button__link:active {
	transform: translateY(1px);
}

/* Sekunder: garis tepi di atas latar gelap */
.lhc-btn--outline .wp-block-button__link {
	background: rgba(255, 255, 255, 0.05);
	border: 1px solid rgba(255, 255, 255, 0.3);
	color: #fff;
	font-weight: 600;
}

.lhc-btn--outline .wp-block-button__link:hover,
.lhc-btn--outline .wp-block-button__link:focus {
	background: rgba(255, 255, 255, 0.1);
	border-color: rgba(255, 255, 255, 0.6);
	color: #fff;
}

/* Sekunder di atas latar terang */
.lhc-btn--line .wp-block-button__link {
	background: transparent;
	border: 1px solid var(--lhc-navy-700);
	color: var(--lhc-navy-700);
	font-weight: 600;
	padding: 0.85rem 1.6rem;
}

.lhc-btn--line .wp-block-button__link:hover,
.lhc-btn--line .wp-block-button__link:focus {
	background: var(--lhc-navy-700);
	color: #fff;
}

/* Tautan teks + panah */
.lhc-arrow a {
	display: inline-flex;
	align-items: center;
	gap: 0.5rem;
	font-family: var(--lhc-display);
	font-weight: 600;
	color: var(--lhc-navy-700);
	text-decoration: none;
}

.lhc-arrow a::after {
	content: "";
	width: 1.05rem;
	height: 1.05rem;
	background: currentColor;
	-webkit-mask: var(--lhc-ico-arrow) no-repeat center / contain;
	mask: var(--lhc-ico-arrow) no-repeat center / contain;
	transition: transform 0.15s ease;
}

.lhc-arrow a:hover {
	color: var(--lhc-navy-950);
}

.lhc-arrow a:hover::after {
	transform: translateX(3px);
}

.lhc-arrow--sm a {
	font-size: 0.875rem;
	font-family: var(--lhc-body);
	font-weight: 600;
}

.lhc-arrow--sm a::after {
	width: 0.95rem;
	height: 0.95rem;
	-webkit-mask-image: var(--lhc-ico-chevron);
	mask-image: var(--lhc-ico-chevron);
}

.lhc-sec--dark .lhc-arrow a,
.lhc-arrow--gold a {
	color: var(--lhc-accent);
}

/* Kartu putih (.lhc-card) tetap kontras terang di dalam section gelap —
   tautan panah di dalamnya harus tetap navy seperti di section terang,
   bukan ikut menguning gara-gara section pembungkusnya .lhc-sec--dark. */
.lhc-sec--dark .lhc-card .lhc-arrow a {
	color: var(--lhc-navy-700);
}

.lhc-sec--dark .lhc-card .lhc-arrow a:hover {
	color: var(--lhc-navy-950);
}

/* Daftar bercentang */
.lhc-check {
	list-style: none;
	margin: 1.75rem 0 0;
	padding: 0;
	display: grid;
	gap: 0.75rem;
	font-size: 0.9375rem;
	font-weight: 500;
	color: var(--lhc-navy-800);
}

/* `align-items: center` dulu menengahkan centang terhadap SELURUH baris
   (termasuk yang membungkus 2+ baris), jadi mengambang di antara baris,
   bukan sejajar baris pertama. `flex-start` + margin-top kecil menyamai
   pola yang sudah dipakai di ikon kontak footer. */
.lhc-check li {
	display: flex;
	align-items: flex-start;
	gap: 0.625rem;
}

.lhc-check li::before {
	content: "";
	flex: 0 0 auto;
	width: 1.125rem;
	height: 1.125rem;
	margin-top: 0.2rem;
	background: var(--lhc-gold-600);
	-webkit-mask: var(--lhc-ico-check) no-repeat center / contain;
	mask: var(--lhc-ico-check) no-repeat center / contain;
}

@media (min-width: 640px) {
	.lhc-check {
		grid-template-columns: 1fr 1fr;
	}
}

/* =========================================================================
   4. GRID & KARTU
   ========================================================================= */
.lhc-grid {
	display: grid;
	gap: 1.25rem;
	margin-top: 3rem;
}

@media (min-width: 640px) {
	.lhc-grid--2,
	.lhc-grid--3,
	.lhc-grid--4,
	.lhc-grid--5 {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	.lhc-span-2 {
		grid-column: span 2;
	}
}

@media (min-width: 1024px) {
	.lhc-grid--3 {
		grid-template-columns: repeat(3, minmax(0, 1fr));
	}

	.lhc-grid--4 {
		grid-template-columns: repeat(4, minmax(0, 1fr));
	}

	.lhc-grid--5 {
		grid-template-columns: repeat(5, minmax(0, 1fr));
	}
}

.lhc-card {
	background: #fff;
	border: 1px solid var(--lhc-navy-100);
	border-radius: var(--lhc-radius);
	padding: 1.5rem;
	transition: box-shadow 0.2s ease, transform 0.2s ease;
}

.lhc-card:hover {
	box-shadow: 0 6px 18px rgba(8, 20, 52, 0.08);
	transform: translateY(-2px);
}

/* Bayangan navy tipis di atas nyaris tidak kelihatan kalau section-nya
   sendiri sudah navy — dipertegas jadi bayangan hitam supaya kartu putih
   tetap terasa "terangkat" saat di-hover di dalam section gelap. */
.lhc-sec--dark .lhc-card:hover {
	box-shadow: 0 10px 28px rgba(0, 0, 0, 0.45);
}

.lhc-card > h3 {
	margin: 1rem 0 0;
	font-size: 1.0625rem;
	font-weight: 700;
	color: var(--lhc-navy-950);
	line-height: 1.35;
}

.lhc-card > p {
	margin: 0.5rem 0 0;
	font-size: 0.9375rem;
	color: var(--lhc-muted);
	line-height: 1.7;
}

.lhc-card > .lhc-arrow--sm {
	margin-top: 1rem;
}

/* Ikon kartu: ganti dengan menukar kelas lhc-ico--* pada blok Group kartu */
.lhc-card::before {
	content: "";
	display: block;
	width: 30px;
	height: 30px;
	background: var(--lhc-navy-700);
	-webkit-mask: var(--lhc-ico) no-repeat center / contain;
	mask: var(--lhc-ico) no-repeat center / contain;
}

.lhc-ico--build {
	--lhc-ico: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 21h18M5 21V8l7-4 7 4v13M9 21v-6h6v6'/%3E%3C/svg%3E");
}

.lhc-ico--road {
	--lhc-ico: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 19c2.5-6 5-9 8-9s5.5 3 8 9M4 19h16M9.5 10.5L8 5h8l-1.5 5.5'/%3E%3C/svg%3E");
}

.lhc-ico--water {
	--lhc-ico: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 8c2-2 4-2 6 0s4 2 6 0 4-2 6 0M3 13c2-2 4-2 6 0s4 2 6 0 4-2 6 0M3 18c2-2 4-2 6 0s4 2 6 0 4-2 6 0'/%3E%3C/svg%3E");
}

.lhc-ico--flood {
	--lhc-ico: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 3l8 4.5v9L12 21l-8-4.5v-9L12 3zM12 3v9m8-4.5L12 12 4 7.5'/%3E%3C/svg%3E");
}

.lhc-ico--land {
	--lhc-ico: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 20h18M6 20l3-9 4 4 3-8 2 13'/%3E%3C/svg%3E");
}

.lhc-ico--plant {
	--lhc-ico: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 21V9l5 3V9l5 3V9l6 3v9M4 21h16M8 17h.01M12 17h.01M16 17h.01'/%3E%3C/svg%3E");
}

.lhc-ico--procure {
	--lhc-ico: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M7 8V6a2 2 0 012-2h6a2 2 0 012 2v2M4 8h16v12H4V8zm4 4h8'/%3E%3C/svg%3E");
}

/* Kartu langkah bernomor (alur kerja Layanan) — angka mono besar di atas,
   sisanya sama seperti .lhc-card polos (tanpa ikon masker). */
.lhc-step {
	background: #fff;
	border: 1px solid var(--lhc-navy-100);
	border-radius: var(--lhc-radius);
	padding: 1.5rem;
}

.lhc-step__n {
	margin: 0;
	font-family: var(--lhc-mono);
	font-size: 1.75rem;
	font-weight: 700;
	color: var(--lhc-gold-600);
}

.lhc-step h3 {
	margin: 0.75rem 0 0;
	font-size: 1.0625rem;
	font-weight: 700;
	color: var(--lhc-navy-950);
}

.lhc-step p:last-child {
	margin: 0.5rem 0 0;
	font-size: 0.9375rem;
	color: var(--lhc-muted);
	line-height: 1.7;
}

/* =========================================================================
   5. FOTO & PLACEHOLDER
   ========================================================================= */
.lhc-shot {
	margin: 0;
	border-radius: var(--lhc-radius);
	overflow: hidden;
	background: linear-gradient(150deg, #102965 0%, #0c1d4d 55%, #081434 100%);
}

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

/* Foto latar penuh di dalam hero / kartu unggulan */
.lhc-shot.lhc-cover {
	position: absolute;
	inset: 0;
	z-index: -2;
	margin: 0;
	border-radius: 0;
}

.lhc-cover img {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.lhc-shot--4x3 {
	aspect-ratio: 4 / 3;
}

.lhc-shot--3x4 {
	aspect-ratio: 4 / 5;
}

.lhc-shot--16x10 {
	aspect-ratio: 16 / 10;
}

@media (min-width: 1024px) {
	.lhc-shot--3x4 {
		aspect-ratio: 3 / 4;
	}

	.lhc-shot--wide {
		aspect-ratio: 8 / 3;
	}
}

/* Kotak "foto belum ada": navy + garis hazard emas */
.lhc-ph {
	position: relative;
	isolation: isolate;
	display: flex;
	align-items: center;
	justify-content: center;
	overflow: hidden;
}

.lhc-ph::before {
	content: "";
	position: absolute;
	inset: 0;
	opacity: 0.12;
	background: repeating-linear-gradient(-45deg, transparent 0 22px, #e8b546 22px 30px);
}

.lhc-ph__label {
	position: relative;
	margin: 0;
	padding: 1rem;
	text-align: center;
	color: var(--lhc-navy-200);
	font-family: var(--lhc-mono);
	font-size: 0.72rem;
	letter-spacing: 0.08em;
}

/* =========================================================================
   6. HEADER
   ========================================================================= */
.lhc-header {
	position: fixed;
	inset-inline: 0;
	top: 0;
	z-index: 50;
	transition: background-color 0.3s ease, box-shadow 0.3s ease;
}

/* Header frontend tidak boleh menimpa toolbar WordPress saat pengujian login. */
body.admin-bar .lhc-header {
	top: var(--wp-admin--admin-bar--height, 32px);
}

/* WP mendorong seluruh halaman turun lewat `margin-top` di <html> saat toolbar
   admin tampil (bukan cuma elemen fixed). `.lhc-hero` ikut turun bersama alur
   dokumen, tapi tingginya tetap dikunci 100svh — akibatnya bagian bawah hero
   (CTA/pita statistik) terdorong sejauh tinggi toolbar ke luar layar yang
   kelihatan. Cuma relevan saat login (pengujian); pengunjung asli tidak
   pernah melihat toolbar ini. */
body.admin-bar .lhc-hero {
	height: calc(100svh - var(--wp-admin--admin-bar--height, 32px));
}

@media (max-width: 600px) {
	body.admin-bar #wpadminbar {
		position: fixed;
	}
}

.lhc-header.is-solid {
	background: rgba(8, 20, 52, 0.95);
	backdrop-filter: blur(8px);
	box-shadow: 0 10px 30px rgba(8, 20, 52, 0.35);
}

/* Halaman tanpa hero: header selalu solid supaya teks tetap terbaca */
body:not(.lhc-has-hero) .lhc-header {
	position: sticky;
	background: var(--lhc-navy-950);
}

.lhc-header__bar {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 1.5rem;
	min-height: 4rem;
}

@media (min-width: 1024px) {
	.lhc-header__bar {
		min-height: 4.5rem;
	}
}

.lhc-brand {
	display: flex;
	align-items: center;
	gap: 0.75rem;
	flex: 0 0 auto;
}

.lhc-brand .wp-block-site-logo img {
	display: block;
	height: 2.125rem;
	width: auto;
}

/* Dua baris merek dirapatkan: line-height dipaksa di elemen <a>, karena
   itulah kotak yang menentukan tinggi baris — bukan <p> pembungkusnya. */
.lhc-brand__txt {
	line-height: 1.1;
}

.lhc-brand .wp-block-site-title {
	margin: 0;
	line-height: 1.1;
}

.lhc-brand .wp-block-site-title a {
	display: block;
	font-family: var(--lhc-display);
	font-size: 1rem;
	font-weight: 800;
	line-height: 1.1;
	letter-spacing: 0.04em;
	text-transform: uppercase;
	color: #fff;
	text-decoration: none;
}

.lhc-brand__since {
	margin: 2px 0 0;
	font-family: var(--lhc-mono);
	font-size: 10px;
	line-height: 1.1;
	letter-spacing: 0.14em;
	color: var(--lhc-navy-200);
	white-space: nowrap;
}

/* Warna diletakkan di container: core memaksa `color: inherit` pada tautan menu
   dengan selektor kelas ganda, jadi mewarnai tautannya langsung tidak mempan. */
.lhc-nav {
	font-size: 0.875rem;
	font-weight: 500;
	color: #fff;
}

.lhc-nav .wp-block-navigation-item__content {
	text-decoration: none;
}

.lhc-nav .wp-block-navigation-item__content.wp-block-navigation-item__content:hover {
	color: var(--lhc-accent);
	text-decoration: none;
}

/* Halaman yang sedang dibuka ditandai warna aksen. */
.lhc-nav .current-menu-item .wp-block-navigation-item__content.wp-block-navigation-item__content {
	color: var(--lhc-accent);
}

.lhc-nav .wp-block-navigation__responsive-container-open,
.lhc-nav .wp-block-navigation__responsive-container-close {
	color: #fff;
}

/* Butir terakhir menu = CTA "Company Profile", hanya untuk tampilan seluler;
   di desktop sudah ada tombolnya sendiri di sebelah kanan bilah header. */
@media (min-width: 1024px) {
	.lhc-nav .wp-block-navigation__container > .wp-block-navigation-item:last-child {
		display: none;
	}
}

/* ---- Menu seluler: panel navy di bawah bilah header, rata kiri ---- */
@media (max-width: 1023px) {
	/* Core membuka menu desktop mulai 600px, terlalu cepat untuk brand + lima
	   tautan. Pertahankan hamburger sampai breakpoint desktop BNL (1024px). */
	.lhc-nav .wp-block-navigation__responsive-container:not(.is-menu-open) {
		display: none;
	}

	.lhc-nav .wp-block-navigation__responsive-container-open {
		display: flex;
	}

	/* Tanpa backdrop-filter: panelnya sudah navy pekat, jadi blur tidak terlihat —
	   dan filter apa pun membuat `position: fixed` anak-anaknya jadi relatif ke
	   panel, sehingga tombol tutup tidak bisa ditaruh di bilah header. */
	.lhc-nav .wp-block-navigation__responsive-container.is-menu-open {
		top: 4rem;
		bottom: auto;
		height: calc(100svh - 4rem);
		padding: 0;
		overflow-y: auto;
		border-top: 1px solid rgba(255, 255, 255, 0.1);
		/* Animasi fade bawaan core menyisakan `transform`, dan elemen ber-transform
		   jadi containing block — akibatnya tombol tutup tidak bisa ditaruh di
		   bilah header. Dimatikan; menu muncul langsung. */
		animation: none;
		transform: none;
	}

	body.admin-bar .lhc-nav .wp-block-navigation__responsive-container.is-menu-open {
		height: calc(100svh - var(--wp-admin--admin-bar--height, 0px) - 4rem);
	}

	/* Hamburger ditukar dengan ikon tutup di posisi yang sama, persis seperti
	   mockup — logo dan nama perusahaan tetap terlihat saat menu terbuka. */
	.lhc-header.lhc-menu-open .wp-block-navigation__responsive-container-open {
		visibility: hidden;
	}

	.lhc-header.lhc-menu-open .wp-block-navigation__responsive-container-close {
		position: fixed;
		top: 1.25rem;
		right: 1.15rem;
		z-index: 100001;
	}

	.lhc-nav .is-menu-open .wp-block-navigation__responsive-container-content,
	.lhc-nav .is-menu-open .wp-block-navigation__responsive-dialog {
		width: 100%;
	}

	/* Core menyisakan ruang untuk tombol tutup; tombolnya sudah kita pindah ke
	   bilah header, jadi ruangnya tidak diperlukan lagi. Selektor sengaja
	   dipanjangkan agar bobotnya menyamai aturan core yang memakai `:not()`. */
	.lhc-nav
		.wp-block-navigation__responsive-container.is-menu-open
		.wp-block-navigation__responsive-container-content {
		padding-top: 0;
	}

	/* `!important` dipakai karena core mewariskan block-gap ke daftar menu
	   lewat `gap: inherit`, dan itu membuat jarak antar butir terlalu renggang. */
	.lhc-nav .is-menu-open .wp-block-navigation__container {
		align-items: stretch;
		gap: 0.25rem !important;
		padding: 1.5rem 1.25rem 2.5rem !important;
		font-size: 1.0625rem;
	}

	.lhc-nav .is-menu-open .wp-block-navigation-item__content {
		display: block;
		width: 100%;
		padding: 1.125rem 0;
	}

	/* Garis tipis antar butir supaya daftar menu tidak terasa dempet —
	   `:not(:last-child)` mengecualikan CTA "Company Profile" di baris
	   terakhir, yang sudah punya pemisah visual sendiri (latar kuning). */
	.lhc-nav .is-menu-open .wp-block-navigation__container > .wp-block-navigation-item:not(:last-child) {
		border-bottom: 1px solid rgba(255, 255, 255, 0.1);
	}

	.lhc-nav .is-menu-open .wp-block-navigation__container > .wp-block-navigation-item:last-child {
		margin-top: 1.25rem;
	}

	.lhc-nav
		.is-menu-open
		.wp-block-navigation__container
		> .wp-block-navigation-item:last-child
		.wp-block-navigation-item__content.wp-block-navigation-item__content {
		background: var(--lhc-accent);
		color: var(--lhc-navy-950);
		font-family: var(--lhc-display);
		font-weight: 700;
		text-align: center;
		padding: 0.875rem 1.25rem;
		clip-path: polygon(0 0, calc(100% - 14px) 0, 100% 14px, 100% 100%, 0 100%);
	}
}

.lhc-header .lhc-btn--primary .wp-block-button__link {
	padding: 0.65rem 1.5rem;
	font-size: 0.875rem;
}

@media (max-width: 1023px) {
	.lhc-header .lhc-header__cta {
		display: none;
	}
}

/* Di layar kecil header dijaga tetap ramping. */
@media (max-width: 640px) {
	.lhc-brand .wp-block-site-logo img {
		height: 1.75rem;
	}

	.lhc-brand .wp-block-site-title a {
		font-size: 0.875rem;
	}

	.lhc-brand__since {
		font-size: 9px;
	}
}

/* =========================================================================
   7. HERO
   ========================================================================= */
.lhc-hero {
	position: relative;
	display: flex;
	flex-direction: column;
	justify-content: flex-end;
	/* `height`, bukan `min-height`: hero dikunci pas satu layar, tidak boleh
	   lebih tinggi dari viewport walau isinya bertambah panjang. */
	height: 100svh;
	overflow: hidden;
	background-color: var(--lhc-navy-950);
	color: #fff;
	isolation: isolate;
}


/* Video latar (atau foto, kalau video belum diunggah — lihat lhc_video_block()).
   Ambient zoom lambat: skala menyempit dari 112% ke 100% selama 20 detik,
   sekali saja saat halaman dimuat. */
.lhc-hero__video {
	position: absolute;
	inset: 0;
	z-index: -3;
	margin: 0;
	/* Wrapper INI yang di-transform JS parallax (lihat assets/bnl.js §6) —
	   video/img di dalamnya punya will-change sendiri untuk animasi zoom
	   satu kali, elemen berbeda. */
	will-change: transform;
}

.lhc-hero__video video,
.lhc-hero__video img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
	animation: lhc-hero-zoom 20s ease-out forwards;
	will-change: transform;
}

@keyframes lhc-hero-zoom {
	from {
		transform: scale(1.12);
	}
	to {
		transform: scale(1);
	}
}

/* Lapisan keterbacaan: gradasi gelap dua arah, sama seperti overlay foto
   sebelumnya — hanya sekarang berupa div terpisah, bukan pseudo-element,
   supaya bisa ditumpuk dengan lapisan mood/grid/vignette di bawah ini. */
.lhc-hero__scrim {
	position: absolute;
	inset: 0;
	z-index: -2;
	pointer-events: none;
	background: linear-gradient(
			180deg,
			rgba(8, 20, 52, 0.78) 0%,
			rgba(8, 20, 52, 0.32) 32%,
			rgba(8, 20, 52, 0.5) 60%,
			rgba(8, 20, 52, 0.96) 100%
		),
		linear-gradient(90deg, rgba(8, 20, 52, 0.85) 0%, rgba(8, 20, 52, 0.4) 46%, rgba(8, 20, 52, 0) 82%);
}

/* Tint tipis warna brand di atas video, supaya video terasa menyatu dengan
   palet navy situs, bukan sekadar foto stok yang ditempel. */
.lhc-hero__duotone {
	position: absolute;
	inset: 0;
	z-index: -2;
	pointer-events: none;
	background: var(--lhc-navy-700);
	mix-blend-mode: color;
	opacity: 0.16;
}

.lhc-hero__vignette {
	position: absolute;
	inset: 0;
	z-index: -2;
	pointer-events: none;
	background: radial-gradient(125% 120% at 50% 38%, transparent 52%, rgba(0, 0, 0, 0.55) 100%);
}

.lhc-motion-line {
	display: block;
	overflow: hidden;
	padding-bottom: 0.08em;
}

.lhc-motion-line > span {
	display: block;
}

.lhc-motion-on .lhc-hero .lhc-reveal--eyebrow {
	--lhc-motion-y: 8px;
	--lhc-motion-duration: 0.42s;
}

.lhc-motion-on .lhc-hero .lhc-reveal--title {
	--lhc-motion-y: 0;
	--lhc-motion-duration: 0.68s;
	--lhc-motion-delay: 0.08s;
}

.lhc-motion-on .lhc-hero .lhc-reveal--title .lhc-motion-line > span {
	transform: translateY(105%);
	transition: transform 0.68s cubic-bezier(0.16, 1, 0.3, 1);
}

.lhc-motion-on .lhc-hero .lhc-reveal--title .lhc-motion-line:nth-child(2) > span {
	transition-delay: 0.08s;
}

.lhc-motion-on .lhc-hero .lhc-reveal--title.is-in .lhc-motion-line > span {
	transform: none;
}

.lhc-motion-on .lhc-hero__body .lhc-reveal--calm {
	--lhc-motion-y: 10px;
	--lhc-motion-duration: 0.52s;
	--lhc-motion-delay: 0.28s;
}

.lhc-motion-on .lhc-hero > .lhc-wrap > .lhc-trust.lhc-reveal--calm {
	--lhc-motion-delay: 0.5s;
}

.lhc-hero > .lhc-wrap {
	padding-top: 9rem;
	padding-bottom: 3.5rem;
}

@media (min-width: 1024px) {
	.lhc-hero > .lhc-wrap {
		padding-bottom: 5rem;
	}
}

/* Jarak 9rem di atas pas untuk header desktop (4.5rem), tapi kebanyakan HP
   modern tingginya di atas 760px (tidak kena tier layar-pendek di bawah),
   jadi tanpa ini teks hero selalu jatuh terlalu jauh dari header — bukan
   cuma di layar pendek. Diturunkan lagi ke 5rem oleh tier `max-height`
   kalau layarnya juga pendek (urutan sumber: aturan ini duluan). */
@media (max-width: 767px) {
	.lhc-hero > .lhc-wrap {
		padding-top: 6rem;
	}
}

.lhc-hero__body {
	max-width: 48rem;
}

.lhc-h1 {
	margin: 1.25rem 0 0;
	font-family: var(--lhc-display);
	font-size: clamp(2.25rem, 1.1rem + 4.6vw, 3.9rem);
	font-weight: 800;
	line-height: 1.08;
	letter-spacing: -0.02em;
	color: #fff;
}

.lhc-h1 mark,
.lhc-hl {
	background: none;
	color: var(--lhc-accent);
}

/* Trust bar di bawah hero */
.lhc-trust {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	margin-top: 3.5rem;
	border-top: 1px solid rgba(255, 255, 255, 0.15);
}

.lhc-trust__item {
	display: flex;
	flex-direction: column;
	justify-content: space-between;
	padding-top: 1.25rem;
	padding-right: 1.5rem;
}

.lhc-trust__k {
	margin: 0;
	font-family: var(--lhc-mono);
	font-size: 0.75rem;
	letter-spacing: 0.16em;
	text-transform: uppercase;
	color: var(--lhc-navy-200);
}

.lhc-trust__v {
	margin: 0.25rem 0 0;
	font-family: var(--lhc-mono);
	font-size: 1.5rem;
	font-weight: 600;
	color: #fff;
}

.lhc-trust__v.is-pending {
	font-size: 1.125rem;
	color: var(--lhc-gold);
}

@media (min-width: 1024px) {
	.lhc-trust {
		grid-template-columns: repeat(4, minmax(0, 1fr));
	}

	.lhc-trust__item {
		padding-inline: 1.5rem;
		border-right: 1px solid rgba(255, 255, 255, 0.15);
	}

	.lhc-trust__item:first-child {
		padding-left: 0;
	}

	.lhc-trust__item:last-child {
		border-right: 0;
		padding-right: 0;
	}

	.lhc-trust__v {
		font-size: 1.875rem;
	}

	.lhc-trust__v.is-pending {
		font-size: 1.25rem;
	}
}

/* Jaring pengaman di layar pendek (laptop jendela kecil, HP mendatar):
   kurangi jarak atas supaya isi hero tidak terpotong `overflow: hidden`
   saat tingginya dikunci pas satu layar (lihat `.lhc-hero { height: 100svh }`).
   Sengaja ditaruh di UJUNG section ini, setelah semua aturan dasarnya —
   `@media` tidak menaikkan bobot selektor, jadi kalau ditaruh sebelum aturan
   dasar dengan selektor yang sama, aturan dasar itu yang menang meski media
   query-nya cocok (urutan sumber yang menentukan, bukan posisi @media). */
@media (max-height: 700px) {
	.lhc-hero > .lhc-wrap {
		padding-top: 5rem;
		padding-bottom: 1.5rem;
	}

	.lhc-trust {
		margin-top: 1.5rem;
	}
}

/* Ponsel pendek tidak punya ruang untuk judul, dua tombol, dan empat angka.
   Sembunyikan data sekundernya; pesan dan CTA tetap utuh di dalam 100svh. */
@media (max-width: 767px) and (max-height: 760px) {
	.lhc-hero > .lhc-wrap {
		padding-top: 5rem;
		padding-bottom: 2rem;
	}

	.lhc-h1 {
		font-size: clamp(1.75rem, 8.5vw, 2.35rem);
	}

	.lhc-hero__body .lhc-cta-row {
		margin-top: 1.5rem;
	}

	.lhc-trust {
		display: none;
	}
}

/* Tablet mendatar yang pendek: statistik dua baris adalah satu-satunya bagian
   yang membuat isi masuk ke bawah navbar. */
@media (min-width: 768px) and (max-width: 1023px) and (max-height: 620px) {
	.lhc-trust {
		display: none;
	}
}

/* Layar sangat pendek (HP mendatar, jendela laptop dikecilkan jauh): tier
   di atas saja tidak cukup — judul + pita statistik tetap lebih tinggi
   dari layar. Pita statistik disembunyikan supaya eyebrow, judul, dan tombol
   CTA — inti pesan hero — selalu utuh terlihat tanpa terpotong. */
@media (max-height: 480px) {
	.lhc-hero > .lhc-wrap {
		/* Header setinggi 4rem di lebar ini (lihat `.lhc-header__bar`) — beri
		   sedikit lebih dari itu supaya eyebrow tidak mepet langsung di
		   bawah bilah header. */
		padding-top: 4.75rem;
		padding-bottom: 1.5rem;
	}

	.lhc-h1 {
		font-size: clamp(1.5rem, 1rem + 3vw, 2.25rem);
	}

	.lhc-trust {
		display: none;
	}
}

/* =========================================================================
   8. KOLOM DUA / MEDIA
   ========================================================================= */
.lhc-2col {
	gap: 3rem;
	align-items: center;
	margin-top: 0;
}

.lhc-2col--top {
	align-items: flex-start;
	margin-top: 3rem;
}

/* Mockup memecah dua kolom di 1024px, bukan 782px bawaan WordPress.
   `!important` diperlukan karena core mengunci `flex-wrap: nowrap !important`
   pada blok Columns di atas 782px. */
@media (max-width: 1023px) {
	.lhc-2col {
		flex-wrap: wrap !important;
	}

	.lhc-2col > .wp-block-column {
		flex-basis: 100% !important;
	}
}

@media (min-width: 1024px) {
	.lhc-2col {
		gap: 5rem;
	}
}

.lhc-media {
	position: relative;
}

/* Tanda sudut emas di pojok kiri-atas foto — motif garis sudut sederhana,
   diwarnai emas supaya terbaca di atas latar putih. Ditaruh di .lhc-media
   (bukan di .lhc-shot) karena foto punya
   `overflow: hidden` untuk sudut membulat — pseudo-element di dalamnya
   akan terpotong begitu digeser keluar kotak foto, persis alasan .lhc-badge
   juga dikode sebagai elemen saudara, bukan bersarang di dalam foto.
   Disembunyikan otomatis kalau foto belum diunggah (masih placeholder). */
.lhc-media::before {
	content: "";
	position: absolute;
	top: -0.75rem;
	left: -0.75rem;
	width: 2.5rem;
	height: 2.5rem;
	border-top: 2px solid var(--lhc-gold);
	border-left: 2px solid var(--lhc-gold);
	pointer-events: none;
}

.lhc-media:has(> .lhc-ph)::before {
	display: none;
}

.lhc-badge {
	position: absolute;
	right: -0.75rem;
	bottom: -1.5rem;
	background: var(--lhc-navy-950);
	color: #fff;
	padding: 1.25rem 1.5rem;
	border-radius: var(--lhc-radius-sm);
	box-shadow: 0 10px 24px rgba(8, 20, 52, 0.25);
}

.lhc-badge__n {
	margin: 0;
	font-family: var(--lhc-mono);
	font-size: 1.875rem;
	font-weight: 600;
	color: var(--lhc-accent);
}

.lhc-badge__t {
	margin: 0.25rem 0 0;
	font-size: 0.75rem;
	letter-spacing: 0.02em;
	color: var(--lhc-navy-200);
	line-height: 1.4;
}

@media (min-width: 1024px) {
	.lhc-badge {
		right: -1.5rem;
	}
}

/* =========================================================================
   9. LAYANAN
   ========================================================================= */
.lhc-svc-feat {
	position: relative;
	isolation: isolate;
	display: flex;
	flex-direction: column;
	justify-content: flex-end;
	min-height: 16rem;
	padding: 1.75rem;
	border-radius: var(--lhc-radius);
	overflow: hidden;
	background-color: var(--lhc-navy-900);
	color: #fff;
	transition: transform 0.2s ease;
}

.lhc-svc-feat:hover {
	/* `!important`: .lhc-svc-feat selalu membawa class .lhc-reveal (lihat
	   inc/shortcode-layanan.php) — tanpa ini, begitu kartu ter-scroll ke
	   viewport, rule reset reveal (`.lhc-reveal.is-in { transform: none; }`)
	   menimpa translateY ini total, dan kartu ini (beda dari .lhc-unit/
	   .lhc-proj) tidak punya box-shadow sebagai sinyal hover cadangan —
	   jadi hover-nya bisa jadi tidak kelihatan sama sekali tanpa ini. */
	transform: translateY(-2px) !important;
}

.lhc-svc-feat .lhc-cover img {
	transition: transform 0.5s cubic-bezier(0.16, 1, 0.3, 1);
}

.lhc-svc-feat:hover .lhc-cover img {
	transform: scale(1.05);
}

.lhc-svc-feat::after {
	content: "";
	position: absolute;
	inset: 0;
	z-index: -1;
	background: linear-gradient(
		to top,
		var(--lhc-navy-950) 0%,
		rgba(8, 20, 52, 0.6) 60%,
		rgba(12, 29, 77, 0.2) 100%
	);
}

.lhc-tag {
	align-self: flex-start;
	margin: 0;
	background: var(--lhc-accent);
	color: var(--lhc-navy-950);
	border-radius: 999px;
	padding: 0.25rem 0.75rem;
	font-family: var(--lhc-mono);
	font-size: 0.75rem;
	font-weight: 600;
	letter-spacing: 0.04em;
}

.lhc-svc-feat h3 {
	margin: 0.75rem 0 0;
	font-size: 1.5rem;
	font-weight: 700;
	color: #fff;
}

.lhc-svc-feat p {
	margin: 0.5rem 0 0;
	max-width: 28rem;
	font-size: 0.9375rem;
	line-height: 1.7;
	color: var(--lhc-navy-100);
}

.lhc-svc-feat .lhc-arrow {
	margin-top: 1rem;
}

/* =========================================================================
   10. ARMADA ALAT BERAT
   ========================================================================= */
.lhc-filter {
	gap: 0.625rem;
	margin-top: 2.5rem;
	overflow-x: auto;
	padding-bottom: 0.5rem;
	flex-wrap: nowrap;
}

.lhc-filter .wp-block-button__link {
	border-radius: 999px;
	border: 1px solid var(--lhc-navy-200);
	background: transparent;
	color: var(--lhc-navy-800);
	font-family: var(--lhc-body);
	font-weight: 500;
	font-size: 0.875rem;
	padding: 0.5rem 1.25rem;
	white-space: nowrap;
}

.lhc-filter .wp-block-button__link:hover {
	border-color: var(--lhc-navy-700);
	color: var(--lhc-navy-800);
}

.lhc-filter .wp-block-button__link[aria-pressed="true"] {
	background: var(--lhc-navy-700);
	border-color: var(--lhc-navy-700);
	color: #fff;
}

.lhc-unit {
	border: 1px solid var(--lhc-navy-100);
	border-radius: var(--lhc-radius);
	overflow: hidden;
	background: #fff;
	transition: box-shadow 0.2s ease, transform 0.2s ease;
}

.lhc-unit:hover {
	box-shadow: 0 6px 18px rgba(8, 20, 52, 0.08);
	/* `!important`: .lhc-unit juga membawa class .lhc-reveal (lihat
	   inc/shortcode-alat-berat.php) — begitu kartu ter-scroll ke viewport,
	   `.lhc-motion-on .lhc-reveal.is-in { transform: none; }` (spesifisitas
	   lebih tinggi) menimpa translateY ini. Sama seperti pola `!important`
	   yang sudah dipakai di file ini untuk melawan rule reset reveal lain
	   (lihat `.lhc-stagger > .lhc-reveal` di bagian Motion & Aksesibilitas). */
	transform: translateY(-2px) !important;
}

.lhc-unit .lhc-shot {
	border-radius: 0;
}

/* Galeri PhotoSwipe (unit dengan >=2 foto) — lihat assets/alat-berat-gallery.js */
.lhc-unit-gallery {
	position: relative;
	display: block;
}

.lhc-unit-gallery .lhc-pswp-item {
	display: block;
	cursor: zoom-in;
}

.lhc-gallery-badge {
	position: absolute;
	right: 0.6rem;
	bottom: 0.6rem;
	padding: 0.25rem 0.6rem;
	border-radius: var(--lhc-radius-sm);
	background: rgba(8, 20, 52, 0.75);
	color: #fff;
	font-family: var(--lhc-mono);
	font-size: 0.7rem;
	letter-spacing: 0.02em;
}

.lhc-unit__body {
	padding: 1.25rem;
}

.lhc-unit__head {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 0.5rem;
}

.lhc-unit__head h3 {
	margin: 0;
	font-size: 1.0625rem;
	font-weight: 700;
	color: var(--lhc-navy-950);
}

.lhc-unit__n {
	margin: 0;
	font-family: var(--lhc-mono);
	font-size: 0.75rem;
	font-weight: 600;
	color: var(--lhc-gold-600);
	white-space: nowrap;
}

.lhc-unit__body .lhc-arrow--sm {
	margin-top: 1rem;
}

.lhc-unit.is-hidden {
	display: none;
}

/* =========================================================================
   11. KEUNGGULAN
   ========================================================================= */
.lhc-feats {
	display: grid;
	gap: 1.75rem 2rem;
	margin-top: 2.25rem;
}

@media (min-width: 640px) {
	.lhc-feats {
		grid-template-columns: 1fr 1fr;
	}
}

.lhc-feat h3 {
	display: flex;
	align-items: center;
	gap: 0.75rem;
	margin: 0;
	font-size: 1rem;
	font-weight: 700;
	color: var(--lhc-navy-950);
}

.lhc-feat h3::before {
	content: "";
	flex: 0 0 auto;
	width: 22px;
	height: 22px;
	background: var(--lhc-gold-600);
	-webkit-mask: var(--lhc-ico) no-repeat center / contain;
	mask: var(--lhc-ico) no-repeat center / contain;
}

.lhc-feat p {
	margin: 0.5rem 0 0;
	font-size: 0.9375rem;
	color: var(--lhc-muted);
	line-height: 1.7;
}

.lhc-ico--clock {
	--lhc-ico: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='9'/%3E%3Cpath d='M12 7v5l3 3'/%3E%3C/svg%3E");
}

.lhc-ico--bolt {
	--lhc-ico: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M13 3L4 14h6l-1 7 9-11h-6l1-7z'/%3E%3C/svg%3E");
}

.lhc-ico--shield {
	--lhc-ico: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 3l7 3v6c0 4.5-3 7.5-7 9-4-1.5-7-4.5-7-9V6l7-3z'/%3E%3Cpath d='M9 12l2 2 4-4'/%3E%3C/svg%3E");
}

.lhc-ico--wrench {
	--lhc-ico: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M14.7 6.3a4.5 4.5 0 00-6 6L4 17v3h3l4.7-4.7a4.5 4.5 0 006-6l-2.6 2.6-2.3-2.3 2.9-2.6z'/%3E%3C/svg%3E");
}

.lhc-ico--pulse {
	--lhc-ico: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 12h4l2-6 4 12 2-6h6'/%3E%3C/svg%3E");
}

.lhc-ico--globe {
	--lhc-ico: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='9'/%3E%3Cpath d='M3.5 9h17M3.5 15h17M12 3a15 15 0 010 18M12 3a15 15 0 000 18'/%3E%3C/svg%3E");
}

.lhc-note {
	margin: 2rem 0 0;
	border: 1px solid rgba(232, 181, 70, 0.4);
	background: rgba(232, 181, 70, 0.1);
	border-radius: var(--lhc-radius-sm);
	padding: 1rem 1.25rem;
	font-size: 0.9375rem;
	color: var(--lhc-navy-800);
	line-height: 1.7;
}

/* =========================================================================
   12. PITA STATISTIK
   ========================================================================= */
.lhc-band {
	background: var(--lhc-navy-900);
	border-top: 4px solid rgba(232, 181, 70, 0.7);
	border-bottom: 4px solid rgba(232, 181, 70, 0.7);
	padding-block: 3rem;
}

.lhc-band__grid {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 2.5rem 1.5rem;
	text-align: center;
}

.lhc-band__item {
	display: flex;
	flex-direction: column-reverse;
	gap: 0.5rem;
}

.lhc-band__k {
	margin: 0;
	font-family: var(--lhc-mono);
	font-size: 0.75rem;
	letter-spacing: 0.18em;
	text-transform: uppercase;
	color: var(--lhc-navy-200);
}

.lhc-band__v {
	margin: 0;
	font-family: var(--lhc-mono);
	font-size: 2.25rem;
	font-weight: 600;
	color: #fff;
	line-height: 1.1;
}

.lhc-band__v.is-pending {
	font-size: 1.5rem;
	color: var(--lhc-gold);
}

.lhc-band__item.is-wide {
	grid-column: span 2;
}

@media (min-width: 1024px) {
	.lhc-band {
		padding-block: 4rem;
	}

	.lhc-band__grid {
		grid-template-columns: repeat(5, minmax(0, 1fr));
	}

	.lhc-band__item.is-wide {
		grid-column: span 1;
	}

	.lhc-band__v {
		font-size: 3rem;
	}

	.lhc-band__v.is-pending {
		font-size: 1.875rem;
	}
}

/* =========================================================================
   13. PROYEK
   ========================================================================= */
.lhc-ruler {
	list-style: none;
	display: flex;
	align-items: flex-end;
	justify-content: space-between;
	gap: 0.25rem;
	margin: 3rem 0 0;
	padding: 0 0 0.75rem;
	border-bottom: 1px solid var(--lhc-navy-200);
	min-width: 40rem;
	font-family: var(--lhc-mono);
	font-size: 10px;
	color: var(--lhc-gold-600);
}

.lhc-ruler li {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 0.375rem;
}

.lhc-ruler li::after {
	content: "";
	width: 2px;
	height: 18px;
	background: var(--lhc-gold);
}

.lhc-ruler-cap {
	margin: 0.75rem 0 0;
	letter-spacing: 0.16em;
}

.lhc-sec--dark .lhc-ruler {
	color: var(--lhc-gold);
}

.lhc-sec--dark .lhc-ruler-cap {
	color: var(--lhc-navy-200);
}

.lhc-scroll-x {
	overflow-x: auto;
	margin-block-start: 0;
	margin-inline: calc(var(--lhc-gut) * -1);
	padding-inline: var(--lhc-gut);
}

@media (min-width: 1024px) {
	.lhc-scroll-x {
		margin-inline: 0;
		padding-inline: 0;
	}
}

.lhc-proj {
	border: 1px solid var(--lhc-navy-100);
	border-radius: var(--lhc-radius);
	overflow: hidden;
	background: #fff;
	transition: box-shadow 0.2s ease, transform 0.2s ease;
}

.lhc-proj:hover {
	box-shadow: 0 6px 18px rgba(8, 20, 52, 0.08);
	/* `!important`: .lhc-proj selalu dirender di dalam wrapper
	   .lhc-reveal--timeline (lihat inc/shortcode-proyek.php) — begitu
	   ter-scroll ke viewport, rule reset reveal dengan spesifisitas lebih
	   tinggi menimpa translateY ini. Sama alasannya dengan .lhc-unit di atas. */
	transform: translateY(-2px) !important;
}

.lhc-proj .lhc-shot {
	border-radius: 0;
}

.lhc-proj__body {
	padding: 1.5rem;
}

.lhc-proj__meta {
	margin: 0;
	font-family: var(--lhc-display);
	font-size: 0.75rem;
	font-weight: 700;
	letter-spacing: 0.04em;
	text-transform: uppercase;
	color: var(--lhc-gold-600);
}

.lhc-proj__body h3 {
	margin: 0.5rem 0 0;
	font-size: 1.0625rem;
	font-weight: 700;
	line-height: 1.4;
	color: var(--lhc-navy-950);
}

.lhc-proj__body p:last-child {
	margin: 0.5rem 0 0;
	font-size: 0.9375rem;
	color: var(--lhc-muted);
}

#proyek .lhc-scroll-x {
	display: none;
}

.lhc-project-video .lhc-h2 {
	max-width: 48rem;
}

.lhc-project-video__meta {
	margin-top: 0.75rem;
	color: var(--lhc-navy-200);
}

.lhc-project-video__frame {
	margin-top: 2rem;
	overflow: hidden;
	aspect-ratio: 16 / 9;
	border-radius: var(--lhc-radius);
	background: #000;
}

.lhc-project-video__frame video {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
}

/* Showcase video proyek unggulan — beberapa slide, tombol panah kalau
   lebih dari satu (lihat inc/shortcode-proyek.php & assets/bnl.js §8). */
.lhc-video-nav {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 1.25rem;
	margin-top: 1.5rem;
}

.lhc-video-prev,
.lhc-video-next {
	display: grid;
	place-items: center;
	width: 2.5rem;
	height: 2.5rem;
	border-radius: 50%;
	border: 1px solid rgba(255, 255, 255, 0.3);
	background: transparent;
	color: #fff;
	font-size: 1.25rem;
	line-height: 1;
	cursor: pointer;
	transition: background-color 0.15s ease, border-color 0.15s ease;
}

.lhc-video-prev:hover,
.lhc-video-next:hover {
	background: rgba(255, 255, 255, 0.1);
	border-color: rgba(255, 255, 255, 0.6);
}

.lhc-video-counter {
	color: var(--lhc-navy-200);
	min-width: 4ch;
	text-align: center;
}

.lhc-project-timeline {
	position: relative;
	grid-template-columns: minmax(0, 1fr);
	gap: 2rem;
	margin-top: 2.5rem;
}

.lhc-project-timeline::before {
	content: "";
	position: absolute;
	inset-block: 1rem;
	left: 50%;
	width: 2px;
	transform: translateX(-50%);
	background: linear-gradient(var(--lhc-gold), var(--lhc-navy-400));
}

.lhc-proj-group {
	display: grid;
	grid-template-columns: minmax(0, 1fr) 3.5rem minmax(0, 1fr);
	column-gap: 1rem;
	align-items: start;
}

.lhc-project-timeline .lhc-proj-year {
	z-index: 2;
	grid-column: 2;
	grid-row: 1;
	justify-self: center;
	display: flex;
	align-items: center;
	justify-content: center;
	width: 3.25rem;
	height: 1.75rem;
	margin: 0.5rem 0 0;
	border: 1px solid var(--lhc-gold);
	border-radius: 999px;
	background: var(--lhc-navy-950);
	font-family: var(--lhc-mono);
	font-size: 0.625rem;
	font-weight: 600;
	color: var(--lhc-gold);
}

.lhc-project-timeline .lhc-proj {
	z-index: 1;
	grid-row: 1;
	align-self: start;
	border-color: rgba(232, 181, 70, 0.45);
}

.lhc-project-timeline .lhc-proj--left {
	grid-column: 1;
}

.lhc-project-timeline .lhc-proj--right {
	grid-column: 3;
}

.lhc-project-timeline .lhc-proj__year-inline {
	display: none;
}

.lhc-motion-on .lhc-reveal--timeline {
	--lhc-motion-y: 0;
}

.lhc-motion-on .lhc-reveal--timeline:not(.is-in)::before {
	transform: translateX(-50%) scaleY(0);
	transform-origin: top;
}

.lhc-motion-on .lhc-reveal--timeline::before {
	transition: transform 0.72s cubic-bezier(0.16, 1, 0.3, 1);
}

.lhc-motion-on .lhc-reveal--timeline .lhc-proj-year,
.lhc-motion-on .lhc-reveal--timeline .lhc-proj {
	opacity: 0;
	transition:
		opacity 0.54s cubic-bezier(0.22, 1, 0.36, 1),
		transform 0.54s cubic-bezier(0.22, 1, 0.36, 1);
}

.lhc-motion-on .lhc-reveal--timeline .lhc-proj-year {
	transform: scale(0.96);
}

.lhc-motion-on .lhc-reveal--timeline .lhc-proj--left {
	transform: translateX(-12px);
}

.lhc-motion-on .lhc-reveal--timeline .lhc-proj--right {
	transform: translateX(12px);
}

.lhc-motion-on .lhc-reveal--timeline.is-in .lhc-proj-year,
.lhc-motion-on .lhc-reveal--timeline.is-in .lhc-proj {
	opacity: 1;
	transform: none;
}

.lhc-motion-on .lhc-reveal--timeline .lhc-proj-group:nth-child(1) > * { transition-delay: 0.12s; }
.lhc-motion-on .lhc-reveal--timeline .lhc-proj-group:nth-child(2) > * { transition-delay: 0.2s; }
.lhc-motion-on .lhc-reveal--timeline .lhc-proj-group:nth-child(3) > * { transition-delay: 0.28s; }
.lhc-motion-on .lhc-reveal--timeline .lhc-proj-group:nth-child(4) > * { transition-delay: 0.36s; }
.lhc-motion-on .lhc-reveal--timeline .lhc-proj-group:nth-child(5) > * { transition-delay: 0.44s; }

@media (max-width: 767px) {
	#proyek .lhc-ruler-cap {
		display: none;
	}

	.lhc-project-timeline {
		gap: 1.75rem;
		margin-top: 2rem;
	}

	.lhc-project-timeline::before {
		left: 1.625rem;
		transform: none;
	}

	.lhc-motion-on .lhc-reveal--timeline:not(.is-in)::before {
		transform: scaleY(0);
	}

	.lhc-proj-group {
		grid-template-columns: 3.25rem minmax(0, 1fr);
		column-gap: 0.75rem;
		row-gap: 1rem;
	}

	.lhc-project-timeline .lhc-proj-year {
		grid-column: 1;
	}

	.lhc-project-timeline .lhc-proj {
		grid-column: 2;
		grid-row: auto;
		border-radius: var(--lhc-radius-sm);
	}

	.lhc-motion-on .lhc-reveal--timeline .lhc-proj--left,
	.lhc-motion-on .lhc-reveal--timeline .lhc-proj--right {
		transform: translateY(10px);
	}

	.lhc-motion-on .lhc-reveal--timeline.is-in .lhc-proj {
		transform: none;
	}

	.lhc-project-timeline .lhc-proj__body {
		padding: 1rem;
	}

	.lhc-project-timeline .lhc-proj__meta {
		font-size: 0.625rem;
		letter-spacing: 0.02em;
		line-height: 1.35;
	}

	.lhc-project-timeline .lhc-proj__body h3 {
		margin-top: 0.375rem;
		font-size: 0.9375rem;
		line-height: 1.35;
	}

	.lhc-project-timeline .lhc-proj__body p:last-child {
		margin-top: 0.375rem;
		font-size: 0.8125rem;
		line-height: 1.45;
	}
}

/* =========================================================================
   14. AREA OPERASIONAL (peta titik)
   ========================================================================= */
.lhc-map {
	display: grid;
	gap: 4px;
	max-width: 56rem;
	margin-top: 3rem;
}

.lhc-map span {
	aspect-ratio: 1;
	border-radius: 999px;
}

.lhc-map .is-land {
	background: rgba(95, 122, 181, 0.5);
}

.lhc-map .is-site {
	background: var(--lhc-gold);
}

.lhc-motion-on .lhc-reveal--map.is-in .is-site {
	animation: lhc-site-focus 0.8s cubic-bezier(0.16, 1, 0.3, 1) both;
}

@keyframes lhc-site-focus {
	0% {
		opacity: 0.35;
		box-shadow: 0 0 0 0 rgba(232, 181, 70, 0.5);
	}
	100% {
		opacity: 1;
		box-shadow: 0 0 0 7px rgba(232, 181, 70, 0);
	}
}

.lhc-map:empty::before {
	content: "Peta titik lokasi proyek — dirender otomatis di halaman depan.";
	display: block;
	padding: 2rem;
	border: 1px dashed var(--lhc-navy-200);
	border-radius: var(--lhc-radius-sm);
	font-family: var(--lhc-mono);
	font-size: 0.75rem;
	color: var(--lhc-muted);
}

.lhc-legend {
	list-style: none;
	display: flex;
	flex-wrap: wrap;
	gap: 0.5rem 1.5rem;
	margin: 1.75rem 0 0;
	padding: 0;
	font-family: var(--lhc-mono);
	font-size: 0.75rem;
	color: var(--lhc-muted);
}

.lhc-legend li {
	display: flex;
	align-items: center;
	gap: 0.5rem;
}

.lhc-legend li::before {
	content: "";
	width: 0.5rem;
	height: 0.5rem;
	border-radius: 999px;
	background: rgba(95, 122, 181, 0.6);
}

.lhc-legend li:last-child::before {
	background: var(--lhc-gold);
}

.lhc-chips {
	list-style: none;
	display: flex;
	flex-wrap: wrap;
	gap: 0.5rem;
	margin: 1rem 0 0;
	padding: 0;
}

.lhc-chips li {
	border: 1px solid var(--lhc-navy-200);
	border-radius: 999px;
	padding: 0.25rem 0.75rem;
	font-family: var(--lhc-mono);
	font-size: 0.75rem;
	color: var(--lhc-navy-700);
}

.lhc-chips li:last-child {
	border-color: rgba(232, 181, 70, 0.4);
	color: var(--lhc-gold-600);
}

/* =========================================================================
   15. MUTU & LEGALITAS
   ========================================================================= */
.lhc-cert {
	padding: 1rem;
	border-radius: var(--lhc-radius);
	background: #fff;
}

.lhc-cert__preview {
	background: #fff;
	border-radius: var(--lhc-radius-sm);
}

.lhc-cert__preview img {
	height: auto;
	object-fit: contain;
}

.lhc-cert__caption {
	margin: 0.875rem 0 0;
	font-size: 0.875rem;
	line-height: 1.6;
	color: var(--lhc-muted);
}

.lhc-cert__actions {
	margin-top: 1rem;
}

.lhc-cert-section .lhc-mono {
	color: var(--lhc-navy-200);
}

.lhc-legal {
	list-style: none;
	display: grid;
	gap: 0.75rem;
	margin: 1.5rem 0 0;
	padding: 0;
}

@media (min-width: 640px) {
	.lhc-legal {
		grid-template-columns: 1fr 1fr;
	}
}

.lhc-legal li {
	background: var(--lhc-navy-50);
	border-radius: var(--lhc-radius-sm);
	padding: 0.875rem 1rem;
	font-size: 0.875rem;
	font-weight: 500;
	color: var(--lhc-navy-800);
}

.lhc-legal li::before {
	content: "";
	display: inline-block;
	vertical-align: -0.2em;
	width: 1.125rem;
	height: 1.125rem;
	margin-right: 0.75rem;
	background: var(--lhc-gold-600);
	-webkit-mask: var(--lhc-ico-check) no-repeat center / contain;
	mask: var(--lhc-ico-check) no-repeat center / contain;
}

.lhc-legal li em {
	display: block;
	margin-top: 0.375rem;
	padding-left: 1.875rem;
	font-family: var(--lhc-mono);
	font-size: 0.75rem;
	font-style: normal;
	font-weight: 400;
	color: var(--lhc-muted);
}

/* =========================================================================
   16. KLIEN
   ========================================================================= */
.lhc-sec--klien {
	padding-block: 3.5rem;
	border-top: 1px solid var(--lhc-navy-100);
	border-bottom: 1px solid var(--lhc-navy-100);
}

@media (min-width: 1024px) {
	.lhc-sec--klien {
		padding-block: 5rem;
	}
}

.lhc-klien-cap {
	margin: 0;
	text-align: center;
	font-family: var(--lhc-mono);
	font-size: 0.75rem;
	letter-spacing: 0.22em;
	text-transform: uppercase;
	color: var(--lhc-muted);
}

.lhc-logos {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 1rem;
	margin-top: 2rem;
}

@media (min-width: 640px) {
	.lhc-logos {
		grid-template-columns: repeat(4, minmax(0, 1fr));
	}
}

.lhc-logos figure {
	display: flex;
	align-items: center;
	justify-content: center;
	height: 6rem;
	margin: 0;
	padding: 1.25rem;
	background: #fff;
	border: 1px solid var(--lhc-navy-100);
	border-radius: var(--lhc-radius-sm);
}

.lhc-logos img {
	max-height: 100%;
	max-width: 100%;
	width: auto;
	height: auto;
	object-fit: contain;
}

/* =========================================================================
   17. CTA BESAR
   ========================================================================= */
.lhc-cta {
	position: relative;
	isolation: isolate;
	background: var(--lhc-navy-950);
	color: #fff;
	overflow: hidden;
	padding-block: 5rem;
	text-align: center;
}

.lhc-cta::before {
	content: "";
	position: absolute;
	inset: 0;
	z-index: -1;
	opacity: 0.06;
	background: repeating-linear-gradient(-45deg, transparent 0 26px, #e8b546 26px 34px);
}

.lhc-cta--video::before {
	opacity: 1;
	background:
		linear-gradient(180deg, rgba(8, 20, 52, 0.86), rgba(8, 20, 52, 0.76)),
		linear-gradient(90deg, rgba(8, 20, 52, 0.78), rgba(8, 20, 52, 0.42), rgba(8, 20, 52, 0.78));
}

.lhc-cta__video {
	position: absolute;
	inset: 0;
	z-index: -2;
	margin: 0;
	border-radius: 0;
}

.lhc-cta__video video,
.lhc-cta__video img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.lhc-cta h2 {
	margin: 0 auto;
	max-width: 48rem;
	font-size: clamp(1.875rem, 1.1rem + 2.8vw, 2.9rem);
	font-weight: 800;
	line-height: 1.15;
	color: #fff;
}

.lhc-cta > .lhc-wrap > p {
	margin: 1.25rem auto 0;
	max-width: 36rem;
	color: var(--lhc-navy-200);
	line-height: 1.75;
}

.lhc-cta .lhc-cta-row {
	justify-content: center;
}

@media (min-width: 1024px) {
	.lhc-cta {
		padding-block: 8rem;
	}
}

/* =========================================================================
   18. FOOTER
   ========================================================================= */
.lhc-footer {
	background: var(--lhc-navy-950);
	border-top: 1px solid rgba(255, 255, 255, 0.1);
	color: var(--lhc-navy-200);
}

.lhc-footer a {
	color: var(--lhc-navy-200);
	text-decoration: none;
}

.lhc-footer a:hover {
	color: #fff;
}

.lhc-footer__cols {
	display: grid;
	gap: 2.5rem;
	padding-block: 3.5rem;
}

@media (min-width: 1024px) {
	.lhc-footer__cols {
		grid-template-columns: 2fr 1fr 1fr 1.4fr;
		padding-block: 5rem;
	}
}

.lhc-footer h3 {
	margin: 0;
	font-family: var(--lhc-display);
	font-size: 0.875rem;
	font-weight: 700;
	letter-spacing: 0.04em;
	color: #fff;
}

.lhc-footer ul {
	list-style: none;
	margin: 1rem 0 0;
	padding: 0;
	display: grid;
	gap: 0.625rem;
	font-size: 0.9375rem;
}

.lhc-footer__about p {
	margin: 1.25rem 0 0;
	max-width: 24rem;
	font-size: 0.9375rem;
	line-height: 1.7;
}

.lhc-footer__social {
	display: flex;
	align-items: center;
	gap: 0.875rem;
	margin-top: 1.5rem;
	color: var(--lhc-navy-200);
}

.lhc-footer__social-icon {
	display: grid;
	place-items: center;
	width: 1.5rem;
	height: 1.5rem;
	color: inherit;
	transition: color 0.15s ease;
}

.lhc-footer__social-icon:hover,
.lhc-footer__social-icon:focus-visible {
	color: var(--lhc-gold);
}

.lhc-footer__social-icon svg {
	display: block;
	width: 100%;
	height: 100%;
}

.lhc-footer__contact ul {
	gap: 0.75rem;
	font-size: 0.875rem;
}

.lhc-footer__contact li {
	display: flex;
	gap: 0.75rem;
}

.lhc-footer__contact li::before {
	content: "";
	flex: 0 0 auto;
	width: 17px;
	height: 17px;
	margin-top: 0.15rem;
	background: var(--lhc-gold);
	-webkit-mask: var(--lhc-ico) no-repeat center / contain;
	mask: var(--lhc-ico) no-repeat center / contain;
}

/* Ikon per baris kontak. core/list-item tidak mendukung atribut kelas,
   jadi ikon dipetakan berdasarkan urutan: telepon, email, jam, alamat. */
.lhc-footer__contact li:nth-child(4) {
	--lhc-ico: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 21s-7-6.1-7-11a7 7 0 0114 0c0 4.9-7 11-7 11z'/%3E%3Ccircle cx='12' cy='10' r='2.5'/%3E%3C/svg%3E");
}

.lhc-footer__contact li:nth-child(1) {
	--lhc-ico: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 4h4l2 5-2.5 1.5a12 12 0 005 5L15 13l5 2v4a2 2 0 01-2 2A16 16 0 013 6a2 2 0 012-2z'/%3E%3C/svg%3E");
}

.lhc-footer__contact li:nth-child(2) {
	--lhc-ico: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='5' width='18' height='14' rx='2'/%3E%3Cpath d='M3 7l9 6 9-6'/%3E%3C/svg%3E");
}

.lhc-footer__contact li:nth-child(3) {
	--lhc-ico: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='9'/%3E%3Cpath d='M12 7v5l3 3'/%3E%3C/svg%3E");
}

.lhc-footer__map {
	margin-top: 1rem;
}

.lhc-footer__map iframe {
	display: block;
	width: 100%;
	aspect-ratio: 4 / 3;
	border: 0;
	border-radius: var(--lhc-radius);
	background: var(--lhc-navy-900);
}

.lhc-footer__map p {
	margin: 0.75rem 0 0;
	font-family: var(--lhc-mono);
	font-size: 0.75rem;
}

.lhc-footer__map a {
	color: var(--lhc-gold);
	text-decoration: underline;
	text-underline-offset: 0.2em;
}

.lhc-footer__bar {
	border-top: 1px solid rgba(255, 255, 255, 0.1);
}

.lhc-footer__bar .lhc-wrap {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-between;
	gap: 0.75rem;
	padding-block: 1.25rem;
	font-size: 0.75rem;
}

.lhc-footer__bar p {
	margin: 0;
}

/* Tombol WhatsApp mengambang */
.lhc-wa {
	position: fixed;
	right: 1.25rem;
	bottom: 1.25rem;
	z-index: 40;
	margin: 0;
}

.lhc-wa a {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 3rem;
	height: 3rem;
	border-radius: 999px;
	background: #25d366;
	box-shadow: 0 8px 20px rgba(8, 20, 52, 0.3);
	font-size: 0;
	transition: transform 0.15s ease;
}

.lhc-wa a::before {
	content: "";
	width: 1.625rem;
	height: 1.625rem;
	background: #fff;
	-webkit-mask: var(--lhc-ico-wa) no-repeat center / contain;
	mask: var(--lhc-ico-wa) no-repeat center / contain;
}

.lhc-wa a:hover {
	transform: scale(1.05);
}

@media (min-width: 1024px) {
	.lhc-wa a {
		width: 3.5rem;
		height: 3.5rem;
	}
}

/* =========================================================================
   19. HALAMAN DALAM — hero pendek, breadcrumb, visi/misi, manajemen
   (dipakai pertama kali di halaman Tentang Kami, ditulis generik supaya
   bisa dipakai ulang di halaman dalam lain nanti — Layanan, Alat Berat, dst.)
   ========================================================================= */

/* --- Hero pendek: video latar (kelas .lhc-hero__video dkk. dipakai ulang
   apa adanya, lihat patterns/20-tentang-hero.php) + breadcrumb, bukan
   full-bleed 100vh seperti hero Beranda — sengaja tetap tinggi intrinsik
   (padding-block), bukan `height:100svh`. Kelas `lhc-sec--dark` dipasang
   bareng di markup supaya eyebrow/heading otomatis ikut skema warna gelap
   yang sudah ada. */
.lhc-inner-hero {
	position: relative;
	overflow: hidden;
	/* Tanpa `isolation: isolate`, elemen ini TIDAK membentuk stacking context
	   sendiri (position:relative tanpa z-index eksplisit belum cukup) —
	   z-index negatif video/overlay di dalamnya lalu dibandingkan terhadap
	   context di luar section ini, bukan lokal, dan videonya jadi tidak
	   kelihatan sama sekali (persis kasus yang bikin .lhc-hero di Beranda
	   sengaja pakai baris ini juga). */
	isolation: isolate;
	padding-block: 9rem 4rem;
}

@media (min-width: 1024px) {
	.lhc-inner-hero {
		padding-block: 11rem 6rem;
	}
}

.lhc-breadcrumb {
	margin: 0;
	font-family: var(--lhc-mono);
	font-size: 0.75rem;
	color: var(--lhc-navy-200);
}

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

.lhc-breadcrumb a:hover {
	color: #fff;
}

.lhc-breadcrumb .lhc-sep {
	margin-inline: 0.5rem;
	color: var(--lhc-navy-400);
}

.lhc-breadcrumb .lhc-current {
	color: #fff;
}

.lhc-inner-hero .lhc-eyebrow {
	margin-top: 1.5rem;
}

/* H1 di hero pendek jauh lebih kecil daripada H1 hero Beranda yang
   full-bleed — override lokal, bukan token baru. */
.lhc-inner-hero .lhc-h1 {
	margin-top: 1rem;
	font-size: clamp(1.875rem, 1rem + 3.5vw, 3.25rem);
	max-width: 40rem;
}

/* --- Visi & Misi: kotak navy (visi) + kotak putih (misi) berdampingan --- */
.lhc-vm {
	display: grid;
	gap: 1.5rem;
	margin-top: 3rem;
}

@media (min-width: 1024px) {
	.lhc-vm {
		grid-template-columns: 2fr 3fr;
	}
}

/* Latar emas (sama seperti .lhc-btn--primary) supaya kartu Visi jadi
   penekanan visual, bukan sekadar kotak navy seperti sebelumnya. Warna
   teks isinya mengikuti pasangan yang sama dengan tombol itu (navy tua di
   atas emas) supaya tetap terbaca — putih di atas emas kontrasnya lemah. */
.lhc-vm__visi {
	background: var(--lhc-accent);
	color: var(--lhc-navy-950);
	border-radius: var(--lhc-radius);
	padding: 2.5rem;
	display: flex;
	flex-direction: column;
	justify-content: center;
}

.lhc-vm__visi .lhc-mono {
	color: #fff;
	letter-spacing: 0.22em;
}

.lhc-vm__visi p:last-child {
	margin: 1rem 0 0;
	font-family: var(--lhc-display);
	font-weight: 700;
	font-size: 1.375rem;
	line-height: 1.45;
}

.lhc-vm__misi {
	border: 1px solid var(--lhc-navy-100);
	border-radius: var(--lhc-radius);
	background: #fff;
	padding: 2.5rem;
}

.lhc-vm__misi .lhc-mono {
	color: var(--lhc-gold-600);
	letter-spacing: 0.22em;
}

/* Daftar misi satu kolom — .lhc-check dasarnya 2 kolom di layar sm+
   (dipakai di section Tentang Beranda), di sini sengaja dikunci 1 kolom. */
.lhc-vm__misi .lhc-check {
	margin-top: 1.25rem;
	grid-template-columns: 1fr;
	gap: 1rem;
}

/* --- Nilai perusahaan: baris kartu ikon kecil --- */
.lhc-values {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 1rem;
	margin-top: 1.5rem;
}

.lhc-vm > *,
.lhc-values > * {
	margin-block-start: 0;
}

.lhc-value--wide {
	grid-column: span 2;
}

/* Aturan dasar di atas HARUS mendahului media query ini dalam urutan
   sumber: keduanya berbobot sama (satu kelas), jadi kalau media query
   yang menang-nolkan grid-column ditaruh lebih dulu, aturan dasar yang
   datang belakangan akan tetap menang di semua lebar layar. */
@media (min-width: 640px) {
	.lhc-values {
		grid-template-columns: repeat(5, minmax(0, 1fr));
	}

	.lhc-value--wide {
		grid-column: auto;
	}
}

.lhc-value {
	border: 1px solid var(--lhc-navy-100);
	border-radius: var(--lhc-radius);
	background: #fff;
	padding: 1.5rem 1rem;
	text-align: center;
}

.lhc-value::before {
	content: "";
	display: block;
	width: 26px;
	height: 26px;
	margin-inline: auto;
	background: var(--lhc-gold-600);
	-webkit-mask: var(--lhc-ico) no-repeat center / contain;
	mask: var(--lhc-ico) no-repeat center / contain;
}

.lhc-value__label {
	margin: 0.75rem 0 0;
	font-family: var(--lhc-display);
	font-weight: 700;
	font-size: 0.875rem;
	color: var(--lhc-navy-950);
}

.lhc-ico--quality {
	--lhc-ico: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='9'/%3E%3Cpath d='M8.5 12.5l2.5 2.5 5-5'/%3E%3C/svg%3E");
}

.lhc-ico--brief {
	--lhc-ico: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='7' width='18' height='13' rx='2'/%3E%3Cpath d='M8 7V5a2 2 0 012-2h4a2 2 0 012 2v2'/%3E%3Cpath d='M3 12h18'/%3E%3C/svg%3E");
}

.lhc-ico--star {
	--lhc-ico: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 3l2.6 5.6 6.1.6-4.6 4.1 1.3 6-5.4-3.2-5.4 3.2 1.3-6-4.6-4.1 6.1-.6z'/%3E%3C/svg%3E");
}

.lhc-ico--leaf {
	--lhc-ico: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 14c0-6 4-10 14-10 0 10-4 14-10 14a4 4 0 01-4-4z'/%3E%3Cpath d='M9 18c2-3 5-6 10-10'/%3E%3C/svg%3E");
}

/* --- Susunan manajemen: kartu avatar generik (bukan foto sungguhan —
   nama & foto direksi menyusul dari klien, lihat CLAUDE.md §2.5) --- */
.lhc-mgmt {
	display: grid;
	gap: 1.5rem;
	margin-top: 3rem;
}

@media (min-width: 640px) {
	.lhc-mgmt {
		grid-template-columns: repeat(3, minmax(0, 1fr));
	}
}

.lhc-mgmt-card {
	border: 1px solid var(--lhc-navy-100);
	background: var(--lhc-navy-50);
	border-radius: var(--lhc-radius);
	padding: 2rem;
	text-align: center;
}

.lhc-mgmt-card__avatar {
	width: 5rem;
	height: 5rem;
	margin-inline: auto;
	border-radius: 999px;
	background: #fff;
	border: 1px solid var(--lhc-navy-100);
	display: flex;
	align-items: center;
	justify-content: center;
}

.lhc-mgmt-card__avatar::before {
	content: "";
	width: 2.25rem;
	height: 2.25rem;
	background: var(--lhc-navy-400);
	-webkit-mask: var(--lhc-ico-person) no-repeat center / contain;
	mask: var(--lhc-ico-person) no-repeat center / contain;
}

/* Foto pengurus asli menggantikan ikon generik: ikonnya disembunyikan dan
   fotonya mengisi penuh lingkaran avatar. Selama foto belum dipasang,
   ::before di atas tetap berlaku dan kartunya tampil seperti sebelumnya. */
.lhc-mgmt-card__avatar:has(img)::before {
	content: none;
}

.lhc-mgmt-card__avatar img {
	width: 100%;
	height: 100%;
	border-radius: 999px;
	object-fit: cover;
}

.lhc-mgmt-card__role {
	margin: 1.25rem 0 0;
	font-family: var(--lhc-mono);
	font-size: 0.75rem;
	letter-spacing: 0.16em;
	text-transform: uppercase;
	color: var(--lhc-gold-600);
}

.lhc-mgmt-card__name {
	margin: 0.5rem 0 0;
	font-family: var(--lhc-display);
	font-weight: 700;
	color: var(--lhc-navy-950);
}

.lhc-mgmt-note {
	margin: 1.5rem 0 0;
	font-size: 0.75rem;
	font-style: italic;
	color: var(--lhc-muted);
}

/* =========================================================================
   20. MOTION & AKSESIBILITAS
   ========================================================================= */
.lhc-reveal {
	--lhc-motion-y: 12px;
	--lhc-motion-duration: 0.6s;
	--lhc-motion-delay: 0s;
	--lhc-motion-ease: cubic-bezier(0.22, 1, 0.36, 1);
	opacity: 1;
	transform: none;
}


.lhc-motion-on .lhc-reveal {
	opacity: 0;
	transform: translateY(var(--lhc-motion-y));
	transition:
		opacity var(--lhc-motion-duration) var(--lhc-motion-ease) var(--lhc-motion-delay),
		transform var(--lhc-motion-duration) var(--lhc-motion-ease) var(--lhc-motion-delay);
}

.lhc-motion-on .lhc-reveal.is-in {
	opacity: 1;
	transform: none;
}

.lhc-motion-on .lhc-reveal--section {
	--lhc-motion-y: 12px;
	--lhc-motion-duration: 0.6s;
}

.lhc-motion-on .lhc-reveal--card {
	--lhc-motion-y: 10px;
	--lhc-motion-duration: 0.54s;
}

.lhc-motion-on .lhc-reveal--minimal {
	--lhc-motion-y: 8px;
	--lhc-motion-duration: 0.5s;
}

.lhc-motion-on .lhc-reveal--map {
	--lhc-motion-y: 10px;
}

.lhc-motion-on .lhc-reveal--cta {
	--lhc-motion-y: 12px;
	--lhc-motion-duration: 0.62s;
	--lhc-motion-ease: cubic-bezier(0.16, 1, 0.3, 1);
}

.lhc-motion-on .lhc-reveal--inner-hero {
	--lhc-motion-y: 12px;
	--lhc-motion-duration: 0.62s;
	--lhc-motion-ease: cubic-bezier(0.16, 1, 0.3, 1);
}

.lhc-motion-on .lhc-reveal--image {
	opacity: 0;
	clip-path: inset(0 7% 0 0);
	transform: translateY(8px) scale(1.025);
	transition:
		opacity 0.68s cubic-bezier(0.22, 1, 0.36, 1),
		clip-path 0.68s cubic-bezier(0.22, 1, 0.36, 1),
		transform 0.68s cubic-bezier(0.22, 1, 0.36, 1);
}

.lhc-motion-on .lhc-reveal--image.is-in {
	opacity: 1;
	clip-path: inset(0);
	transform: none;
}

.lhc-stagger > .lhc-reveal:nth-child(1) {
	--lhc-motion-delay: 0s;
}

.lhc-stagger > .lhc-reveal:nth-child(2) {
	--lhc-motion-delay: 0.06s;
}

.lhc-stagger > .lhc-reveal:nth-child(3) {
	--lhc-motion-delay: 0.12s;
}

.lhc-stagger > .lhc-reveal:nth-child(4) {
	--lhc-motion-delay: 0.18s;
}

.lhc-stagger > .lhc-reveal:nth-child(n + 5) {
	--lhc-motion-delay: 0.18s;
}

:focus-visible {
	outline: 2px solid var(--lhc-accent);
	outline-offset: 2px;
}

.lhc-sec--dark :focus-visible,
.lhc-header :focus-visible,
.lhc-footer :focus-visible {
	box-shadow: 0 0 0 5px var(--lhc-navy-950);
}

.lhc-skip {
	position: absolute;
	left: -9999px;
}

.lhc-skip:focus {
	left: 0.5rem;
	top: 0.5rem;
	z-index: 60;
	background: var(--lhc-accent);
	color: var(--lhc-navy-950);
	padding: 0.5rem 1rem;
	border-radius: 4px;
}

@media (prefers-reduced-motion: reduce) {
	.lhc-motion-on .lhc-reveal,
	.lhc-motion-on .lhc-hero .lhc-reveal--title .lhc-motion-line > span,
	.lhc-motion-on .lhc-reveal--timeline::before,
	.lhc-motion-on .lhc-reveal--timeline:not(.is-in)::before,
	.lhc-motion-on .lhc-reveal--timeline .lhc-proj-year,
	.lhc-motion-on .lhc-reveal--timeline .lhc-proj,
	.lhc-motion-on .lhc-reveal--image.is-in {
		opacity: 1;
		transform: none;
		clip-path: none;
		transition: none;
		animation: none;
	}

	.lhc-map .is-site {
		animation: none;
	}

	.lhc-hero__video video,
	.lhc-hero__video img {
		animation: none;
	}

	/* `!important` diperlukan: selektor nth-child di .lhc-stagger sengaja
	   dibuat lebih spesifik daripada `.lhc-reveal` di atas (supaya menang
	   dari base rule di luar media query ini), jadi harus dilawan eksplisit
	   di sini juga — bukan cuma diserahkan ke urutan sumber. */
	.lhc-stagger > .lhc-reveal {
		transition-delay: 0s !important;
	}

	*,
	*::before,
	*::after {
		transition-duration: 0.001ms !important;
		animation-duration: 0.001ms !important;
		scroll-behavior: auto !important;
	}
}

/* =========================================================================
   21. PROYEK: FILTER & DAFTAR
   ========================================================================= */
.lhc-proj-filters {
	display: grid;
	gap: 1rem;
	margin-top: 2.5rem;
}

@media (min-width: 640px) {
	.lhc-proj-filters {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}

@media (min-width: 1024px) {
	.lhc-proj-filters {
		grid-template-columns: repeat(4, minmax(0, 1fr));
	}

	.lhc-field--wide {
		grid-column: span 2;
	}
}

.lhc-field label {
	display: block;
	margin-bottom: 0.375rem;
	font-size: 0.75rem;
	font-weight: 500;
	color: var(--lhc-navy-800);
}

.lhc-select {
	width: 100%;
	border: 1px solid var(--lhc-navy-200);
	border-radius: var(--lhc-radius-sm);
	background: #fff
		url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%2314337F' stroke-width='2'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E")
		no-repeat right 0.75rem center / 1.1em;
	appearance: none;
	padding: 0.625rem 2.25rem 0.625rem 0.875rem;
	font-family: var(--lhc-body);
	font-size: 0.875rem;
	color: var(--lhc-navy-800);
}

.lhc-select:focus-visible {
	border-color: var(--lhc-navy-700);
}

.lhc-proj-status {
	margin-top: 1rem;
}

.lhc-empty-note {
	margin-top: 1.5rem;
	border: 1px dashed var(--lhc-navy-200);
	border-radius: var(--lhc-radius-sm);
	padding: 2rem 1.5rem;
	text-align: center;
	font-size: 0.875rem;
	color: var(--lhc-muted);
}

.lhc-empty-note[hidden] {
	display: none;
}

.lhc-pill {
	display: inline-flex;
	align-items: center;
	border-radius: 999px;
	background: var(--lhc-navy-50);
	padding: 0.25rem 0.75rem;
	font-size: 0.75rem;
	font-weight: 500;
	color: var(--lhc-navy-700);
	white-space: nowrap;
}

/* Grid kartu foto — cover proyek + badge status di atas foto, deskripsi
   singkat muncul saat kartu di-hover (kalau diisi). Dulu tabel di desktop +
   list ringkas di mobile; sekarang satu tata letak kartu di semua ukuran
   layar (lihat inc/shortcode-proyek.php). */
.lhc-proj-grid {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 1.75rem;
	margin-top: 2rem;
}

.lhc-proj-card {
	border: 1px solid var(--lhc-navy-100);
	border-radius: var(--lhc-radius);
	overflow: hidden;
	background: #fff;
	transition: box-shadow 0.2s ease, transform 0.2s ease;
}

.lhc-proj-card:hover {
	box-shadow: 0 10px 28px rgba(8, 20, 52, 0.12);
	transform: translateY(-2px);
}

.lhc-proj-card[hidden] {
	display: none;
}

.lhc-proj-card__media {
	position: relative;
	isolation: isolate;
}

.lhc-proj-card__media .lhc-shot {
	border-radius: 0;
}

.lhc-proj-card__status {
	position: absolute;
	top: 0.875rem;
	right: 0.875rem;
	background: #fff;
	box-shadow: 0 2px 8px rgba(8, 20, 52, 0.2);
}

.lhc-pill--ongoing {
	background: var(--lhc-gold);
	color: var(--lhc-navy-950);
}

.lhc-proj-card__overlay {
	position: absolute;
	inset: 0;
	display: flex;
	align-items: flex-end;
	padding: 1.25rem;
	background: linear-gradient(to top, rgba(8, 20, 52, 0.92) 0%, rgba(8, 20, 52, 0.55) 50%, transparent 80%);
	opacity: 0;
	transition: opacity 0.25s ease;
	pointer-events: none;
}

.lhc-proj-card:hover .lhc-proj-card__overlay,
.lhc-proj-card:focus-within .lhc-proj-card__overlay {
	opacity: 1;
}

.lhc-proj-card__overlay-text {
	margin: 0;
	color: #fff;
	font-size: 0.875rem;
	line-height: 1.6;
}

.lhc-proj-card__body {
	padding: 1.25rem 1.375rem 1.5rem;
}

.lhc-proj-card__meta {
	margin: 0;
	font-size: 0.75rem;
	color: var(--lhc-gold-600);
	text-transform: uppercase;
	letter-spacing: 0.04em;
}

.lhc-proj-card__body h3 {
	margin: 0.5rem 0 0;
	font-family: var(--lhc-display);
	font-weight: 700;
	font-size: 1.0625rem;
	line-height: 1.4;
	color: var(--lhc-navy-950);
}

.lhc-proj-card__loc {
	margin: 0.5rem 0 0;
	font-size: 0.875rem;
	color: var(--lhc-muted);
}

@media (max-width: 767px) {
	.lhc-proj-grid {
		grid-template-columns: 1fr;
	}
}

/* =========================================================================
   22. ARTIKEL (halaman Posts bawaan WordPress)
   ========================================================================= */
.lhc-art-card {
	border: 1px solid var(--lhc-navy-100);
	border-radius: var(--lhc-radius);
	overflow: hidden;
	background: #fff;
	transition: box-shadow 0.2s ease, transform 0.2s ease;
}

.lhc-art-card:hover {
	box-shadow: 0 6px 18px rgba(8, 20, 52, 0.08);
	/* `!important`: .lhc-art-card membawa class .lhc-reveal langsung
	   (lihat patterns/39-artikel-loop.php) — sama seperti kasus .lhc-unit/
	   .lhc-proj/.lhc-svc-feat, tanpa ini translateY kalah lawan rule reset
	   scroll-reveal begitu kartu ter-scroll ke viewport. */
	transform: translateY(-2px) !important;
}

.lhc-art-card .lhc-shot {
	border-radius: 0;
}

.lhc-art-card .lhc-shot img {
	transition: transform 0.5s cubic-bezier(0.16, 1, 0.3, 1);
}

.lhc-art-card:hover .lhc-shot img {
	transform: scale(1.06);
}

.lhc-art-card__body {
	padding: 1.5rem;
}

.lhc-art-card__body .lhc-mono {
	display: block;
}

.lhc-art-card__body h3 {
	margin: 0.5rem 0 0;
	font-family: var(--lhc-display);
	font-size: 1.0625rem;
	font-weight: 700;
	line-height: 1.35;
}

.lhc-art-card__body h3 a {
	color: var(--lhc-navy-950);
	text-decoration: none;
}

.lhc-art-card__body h3 a:hover {
	color: var(--lhc-navy-700);
}

.lhc-art-card__excerpt {
	margin: 0.5rem 0 0;
	font-size: 0.9375rem;
	color: var(--lhc-muted);
	line-height: 1.7;
}

/* `core/read-more` merender satu <a> tunggal (bukan .lhc-arrow membungkus
   <a> seperti pola lain di situs ini) — jadi kelasnya digabung di elemen
   yang sama, bukan turunan, makanya perlu selektor sendiri di sini. */
.wp-block-read-more.lhc-arrow {
	display: inline-flex;
	align-items: center;
	gap: 0.5rem;
	margin-top: 1rem;
	font-family: var(--lhc-body);
	font-weight: 600;
	font-size: 0.875rem;
	color: var(--lhc-navy-700);
	text-decoration: none;
}

.wp-block-read-more.lhc-arrow::after {
	content: "";
	width: 0.95rem;
	height: 0.95rem;
	background: currentColor;
	-webkit-mask: var(--lhc-ico-chevron) no-repeat center / contain;
	mask: var(--lhc-ico-chevron) no-repeat center / contain;
	transition: transform 0.15s ease;
}

.wp-block-read-more.lhc-arrow:hover {
	color: var(--lhc-navy-950);
}

.wp-block-read-more.lhc-arrow:hover::after {
	transform: translateX(3px);
}

.lhc-pagination {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 0.375rem;
	margin-top: 3rem;
	flex-wrap: wrap;
}

/* Cuma 1 halaman artikel = prev/numbers/next tidak merender apa-apa, tapi
   div-nya sendiri tetap ada (cuma teks kosong/whitespace) — tanpa ini,
   margin-top di atas masih menyisakan spasi kosong menggantung. */
.lhc-pagination:not(:has(*)) {
	display: none;
}

.lhc-pagination a,
.lhc-pagination span {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 2.25rem;
	height: 2.25rem;
	padding-inline: 0.5rem;
	border-radius: var(--lhc-radius-sm);
	font-family: var(--lhc-mono);
	font-size: 0.8125rem;
	color: var(--lhc-navy-700);
	text-decoration: none;
}

.lhc-pagination a:hover {
	background: var(--lhc-navy-50);
}

.lhc-pagination .current {
	background: var(--lhc-navy-700);
	color: #fff;
	font-weight: 600;
}

/* --- Header judul satu artikel (template "single") --- */
.lhc-post-header {
	padding-block: 8rem 3rem;
}

@media (min-width: 1024px) {
	.lhc-post-header {
		padding-block: 10rem 4rem;
	}
}

.lhc-post-header .lhc-h1 {
	max-width: 44rem;
}

.lhc-post-meta {
	gap: 1rem;
	margin-top: 1.25rem;
	font-family: var(--lhc-mono);
	font-size: 0.8125rem;
	color: var(--lhc-navy-200);
}

/* --- Isi satu artikel --- */
.lhc-post-body {
	max-width: 42rem;
	margin-inline: auto;
	padding-inline: var(--lhc-gut);
}

.lhc-post-featured {
	margin: 0 0 2.5rem;
}

.lhc-post-featured img {
	aspect-ratio: 16 / 9;
	object-fit: cover;
}

.lhc-post-content {
	color: var(--lhc-ink);
	line-height: 1.8;
}

.lhc-post-content > * + * {
	margin-top: 1.5rem;
}

.lhc-post-content h2 {
	margin-top: 2.5rem;
	font-family: var(--lhc-display);
	font-size: 1.5rem;
	font-weight: 700;
	color: var(--lhc-navy-950);
}

.lhc-post-content h3 {
	margin-top: 2rem;
	font-family: var(--lhc-display);
	font-size: 1.25rem;
	font-weight: 700;
	color: var(--lhc-navy-950);
}

.lhc-post-content img {
	border-radius: var(--lhc-radius);
}

.lhc-post-content blockquote {
	margin: 0;
	border-left: 3px solid var(--lhc-gold);
	padding-left: 1.25rem;
	font-style: italic;
	color: var(--lhc-muted);
}

.lhc-post-nav {
	margin-top: 3rem;
	padding-top: 2rem;
	border-top: 1px solid var(--lhc-navy-100);
}


/* --- Berita unggulan: kartu besar di atas daftar artikel ---------------
   Satu artikel unggulan = kartu diam. Lebih dari satu = carousel; tombol
   panah & penghitung slide dirender oleh inc/shortcode-artikel.php dan
   digerakkan oleh assets/bnl.js §9. */
.lhc-news-featured {
	position: relative;
	margin-top: 2.5rem;
}

.lhc-news-feat {
	display: grid;
	border: 1px solid var(--lhc-navy-100);
	border-radius: var(--lhc-radius);
	overflow: hidden;
	background: #fff;
}

@media (min-width: 900px) {
	.lhc-news-feat {
		grid-template-columns: 1.05fr 1fr;
		align-items: stretch;
	}
}

/* Rasio dipakai hanya di layar sempit (kartu menumpuk). Di layar lebar foto
   ikut meninggi mengikuti kolom teks di sebelahnya, jadi rasionya dilepas —
   `min-height` menjaga kartu tetap berwibawa saat teksnya pendek. */
.lhc-news-feat__media {
	aspect-ratio: 16 / 10;
	border-radius: 0;
}

@media (min-width: 900px) {
	.lhc-news-feat__media {
		aspect-ratio: auto;
		height: 100%;
		min-height: 23rem;
	}
}

.lhc-news-feat__body {
	display: flex;
	flex-direction: column;
	justify-content: center;
	padding: 1.75rem;
	background: var(--lhc-navy-50);
}

@media (min-width: 900px) {
	.lhc-news-feat__body {
		padding: 3rem;
	}
}

.lhc-news-feat__tags {
	display: flex;
	align-items: center;
	flex-wrap: wrap;
	gap: 0.75rem;
	margin: 0;
}

.lhc-news-feat__badge {
	display: inline-flex;
	align-items: center;
	border-radius: var(--lhc-radius-sm);
	background: var(--lhc-gold);
	padding: 0.25rem 0.625rem;
	font-family: var(--lhc-mono);
	font-size: 0.6875rem;
	font-weight: 600;
	letter-spacing: 0.18em;
	text-transform: uppercase;
	color: var(--lhc-navy-950);
}

.lhc-news-feat__cat {
	font-family: var(--lhc-mono);
	font-size: 0.6875rem;
	letter-spacing: 0.18em;
	text-transform: uppercase;
	color: var(--lhc-gold-600);
}

.lhc-news-feat__title {
	margin: 1rem 0 0;
	font-family: var(--lhc-display);
	font-size: clamp(1.375rem, 2.4vw, 1.875rem);
	font-weight: 800;
	line-height: 1.25;
}

.lhc-news-feat__title a {
	color: var(--lhc-navy-950);
	text-decoration: none;
}

.lhc-news-feat__title a:hover {
	color: var(--lhc-navy-700);
}

.lhc-news-feat__excerpt {
	display: -webkit-box;
	-webkit-line-clamp: 3;
	line-clamp: 3;
	-webkit-box-orient: vertical;
	overflow: hidden;
	margin: 1rem 0 0;
	color: var(--lhc-muted);
	line-height: 1.75;
}

.lhc-news-feat__date {
	margin: 1.25rem 0 0;
}

.lhc-news-feat__more {
	margin: 1.25rem 0 0;
}

/* Kontrol carousel. Bentuknya mengikuti showcase video proyek (§13), tapi
   warnanya navy — section artikel latarnya terang, bukan gelap. */
.lhc-news-nav {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 1.25rem;
	margin-top: 1.5rem;
}

.lhc-news-prev,
.lhc-news-next {
	display: grid;
	place-items: center;
	width: 2.5rem;
	height: 2.5rem;
	border-radius: 50%;
	border: 1px solid var(--lhc-navy-100);
	background: #fff;
	color: var(--lhc-navy-700);
	font-size: 1.25rem;
	line-height: 1;
	cursor: pointer;
	transition: background-color 0.15s ease, border-color 0.15s ease;
}

.lhc-news-prev:hover,
.lhc-news-next:hover {
	background: var(--lhc-navy-50);
	border-color: var(--lhc-navy-400);
}

.lhc-news-counter {
	min-width: 4ch;
	text-align: center;
}

/* --- Kartu artikel bertumpuk foto (varian overlay) ---------------------
   Teks duduk DI ATAS foto dengan gradasi gelap, bukan di bawahnya seperti
   varian kartu putih. Tinggi kartu ditentukan rasio fotonya; `.lhc-art-card
   __body` diangkat jadi absolut sehingga tidak lagi menambah tinggi. */
/* Foto dan badan kartu ditumpuk di SATU sel grid yang sama, bukan badan kartu
   yang di-absolute-kan di atas foto. Bedanya menentukan: dengan penumpukan
   grid, tinggi kartu = mana yang lebih tinggi antara foto dan teksnya.

   Versi absolute sempat lolos di desktop tapi jebol di layar sempit — badan
   kartu tidak lagi menyumbang tinggi, jadi kartu selebar 335px hanya setinggi
   209px (16:10) sementara teksnya butuh 224px: teks meluber 15px ke luar
   kartu dan gradasinya menutupi seluruh foto sampai kartunya terlihat seperti
   kotak navy polos.

   Cara ini sekaligus menghapus kebutuhan min-height untuk kartu tanpa Gambar
   Andalan — tanpa foto, tinggi kartu ditentukan teksnya sendiri. */
.lhc-art-card--overlay {
	position: relative;
	border: 0;
	display: grid;
	/* Kartu ini anak dari <li> Query Loop, bukan grid item-nya langsung. <li>
	   sudah meregang setinggi baris, tapi kartunya sendiri setinggi isinya —
	   artikel tanpa Gambar Andalan jadi hanya 195px di sebelah tetangganya
	   yang 354px, menyisakan lubang di dalam baris. `height: 100%` membuat
	   kartu mengisi penuh selnya sehingga tinggi antar-kartu selalu rata. */
	height: 100%;
	background: linear-gradient(150deg, #102965 0%, #0c1d4d 55%, #081434 100%);
}

.lhc-art-card--overlay > .lhc-shot,
.lhc-art-card--overlay > .lhc-art-card__body {
	grid-column: 1;
	grid-row: 1;
}

.lhc-art-card--overlay .lhc-shot {
	margin: 0;
}

/* WordPress inti menyetel `.wp-block-post-featured-image { position: relative }`.
   Akibatnya tautan sekartu di bawah (`a::after` dengan `inset: 0`) mengacu ke
   KOTAK FOTO, bukan ke kartu — pada kartu yang teksnya lebih tinggi daripada
   fotonya, sisa kartu di bawah foto jadi mati klik. Dikembalikan ke `static`
   supaya acuannya naik ke `.lhc-art-card--overlay`.

   Efek sampingnya justru diperlukan: elemen absolut yang acuannya berada DI
   LUAR kotak ini tidak lagi ikut terpangkas `overflow: hidden` milik
   `.lhc-shot`, jadi tautannya benar-benar menutup seluruh kartu — tanpa perlu
   melepas `overflow: hidden` (yang kalau dilepas malah membuat ukuran minimum
   grid item kembali ke lebar asli file gambar dan menjebol tata letak di
   layar sempit). Ornamen sudut emas tidak dipakai kartu ini, jadi tidak ada
   yang bergantung pada `relative` di sini. */
.lhc-art-card--overlay > .lhc-shot {
	position: static;
}

/* `z-index` wajib di sini. core/post-featured-image merender <a><img></a>,
   dan `a` itu INLINE — dalam urutan cat CSS, konten inline berada di atas
   *background* elemen blok. Jadi tanpa penaikan lapisan, gradasi gelap milik
   badan kartu ini tercetak DI BAWAH foto: fotonya tampil terang penuh dan
   judul putih di atasnya tidak terbaca. Bukan soal urutan DOM — menukar
   posisi blok di template tidak akan menolongnya. */
.lhc-art-card--overlay .lhc-art-card__body {
	position: relative;
	z-index: 2;
	align-self: end;
	padding: 4.5rem 1.25rem 1.25rem;
	background: linear-gradient(
		to top,
		rgba(8, 20, 52, 0.94) 0%,
		rgba(8, 20, 52, 0.78) 42%,
		rgba(8, 20, 52, 0) 100%
	);
}

.lhc-art-card--overlay .lhc-art-card__body .lhc-mono {
	color: rgba(255, 255, 255, 0.72);
}

.lhc-art-card--overlay .lhc-art-card__body h3 {
	display: -webkit-box;
	-webkit-line-clamp: 2;
	line-clamp: 2;
	-webkit-box-orient: vertical;
	overflow: hidden;
	font-size: 1.125rem;
}

.lhc-art-card--overlay .lhc-art-card__body h3 a,
.lhc-art-card--overlay .lhc-art-card__body h3 a:hover {
	color: #fff;
}

.lhc-art-card--overlay:hover .lhc-art-card__body h3 a {
	color: var(--lhc-gold);
}

.lhc-art-card--overlay .lhc-art-card__excerpt {
	display: -webkit-box;
	-webkit-line-clamp: 2;
	line-clamp: 2;
	-webkit-box-orient: vertical;
	overflow: hidden;
	color: rgba(255, 255, 255, 0.82);
	font-size: 0.875rem;
}

/* Seluruh permukaan kartu jadi satu target klik. Tautan gambar yang
   dilebarkan (bukan tautan judul): judul ada DI DALAM badan kartu yang
   absolut, jadi `inset: 0` di sana cuma akan menutupi badan kartu, bukan
   seluruh kartu. */
.lhc-art-card--overlay .wp-block-post-featured-image a::after {
	content: "";
	position: absolute;
	inset: 0;
	/* 3 = DI ATAS badan kartu (2). Lapisannya transparan, jadi gradasi dan
	   teks di bawahnya tetap terlihat utuh — yang naik cuma target kliknya,
	   supaya area tanggal/judul/ringkasan ikut bisa diklik, bukan cuma
	   judulnya saja. */
	z-index: 3;
}

/* Badge kategori di sudut kanan atas foto — z-index di atas tautan yang
   dilebarkan supaya tetap bisa diklik menuju arsip kategorinya. */
.lhc-art-card__cat {
	position: absolute;
	top: 0.875rem;
	right: 0.875rem;
	/* Paling atas: badan kartu di lapisan 2 dan tautan sekartu di lapisan 3,
	   jadi badge harus di 4 supaya tautan kategorinya tetap bisa diklik. */
	z-index: 4;
	border-radius: 999px;
	background: var(--lhc-gold);
	padding: 0.25rem 0.625rem;
	font-family: var(--lhc-mono);
	font-size: 0.6875rem;
	font-weight: 600;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	color: var(--lhc-navy-950);
}

.lhc-art-card__cat a {
	color: inherit;
	text-decoration: none;
}

/* =========================================================================
   23. PENYESUAIAN EDITOR
   ========================================================================= */
.editor-styles-wrapper .lhc-header,
.editor-styles-wrapper .lhc-wa {
	position: relative;
	inset: auto;
}

.editor-styles-wrapper .lhc-hero {
	min-height: 40rem;
}

.editor-styles-wrapper .lhc-reveal {
	opacity: 1;
	transform: none;
	animation: none;
}

/* Badge dibuat mengalir normal di editor supaya mudah diklik & tidak menutupi
   blok lain; di halaman jadi tetap menumpuk di sudut foto. */
.editor-styles-wrapper .lhc-badge {
	position: static;
	display: inline-block;
	margin-top: 1rem;
}
