/**
 * Gaya dasar tema Pintarin.
 *
 * Nilai skala desain — spasi, radius, tipografi, warna, dan sekarang
 * intensitas blur kaca — selalu mengacu ke custom property yang dihasilkan
 * theme.json, sehingga mengganti token cukup dilakukan di satu tempat.
 *
 * Sejumlah kecil literal px tetap sengaja dipertahankan karena bukan nilai
 * skala, melainkan konstanta aksesibilitas atau geometri garis rambut:
 * lebar dan offset ring fokus (3px, 2px, dan box-shadow fokus 3px), target
 * sentuh minimum WCAG (44px), border garis rambut (1px, dipakai kolom
 * isian, garis bawah header, dan border tombol varian outline), jarak angkat
 * mikro-interaksi tombol saat hover (-1px), tinggi indikator navigasi aktif
 * (2px), geometri scrollbar bawaan browser (10px, 3px), dan nilai probe
 * fitur di dalam @supports (blur(1px)) yang murni untuk mendeteksi
 * dukungan browser, bukan nilai desain. Daftar ini harus tetap sinkron
 * dengan kode; kalau salah satunya berubah, perbarui juga catatan ini.
 *
 * Sama seperti sections.css, lebar breakpoint di dalam media query (599px
 * dan 600px pada blok CTA header responsif) bukan bagian dari daftar di
 * atas — itu keputusan struktural yang meniru breakpoint navigasi milik
 * core, bukan konstanta bahasa visual komponen.
 */

/* ---------------------------------------------------------------------------
 * Dasar dokumen
 * ------------------------------------------------------------------------- */

/* Reset border-box universal.
 *
 * Tema ini sebelumnya tidak punya reset sama sekali, sehingga setiap elemen
 * memakai content-box bawaan browser: max-width menghitung kotak konten saja,
 * lalu padding dan border ditambahkan di luarnya. Akibatnya setiap kotak yang
 * sekaligus punya max-width dan padding menjadi lebih lebar dari kolom yang
 * membatasinya — .pintarin-casestudy meleset 66px terhadap kolom konten
 * 1200px karena padding 2x32px plus border 2x1px, dan kelas panel lain hanya
 * lolos karena kebetulan tidak pernah menjadi anak langsung layout
 * constrained.
 *
 * Ditegakkan di sini sebagai reset, bukan ditambal per selektor, karena
 * penambalan per selektor menyembuhkan gejala satu kelas sementara kelas
 * berikutnya lahir dengan cacat yang sama. ::before dan ::after ikut
 * disertakan supaya pseudo-element berukuran — penanda bullet, kotak
 * bayangan .pintarin-card::after — mengikuti model kotak yang sama dengan
 * elemen aslinya. */
.wp-block-group {
    box-sizing: border-box;
	margin-block-start:0px;
}
*,
*::before,
*::after {
	box-sizing: border-box;
}

html {
	scroll-behavior: smooth;
}

body {
	-webkit-font-smoothing: antialiased;
	-moz-osx-font-smoothing: grayscale;
	text-rendering: optimizeLegibility;
}

/* Batasi lebar baca teks panjang agar mata tidak kehilangan baris.
 * Sengaja dilingkupi ke .wp-block-post-content (isi artikel/halaman
 * yang sungguh panjang), bukan seluruh p/li di halaman — item navigasi
 * dan daftar footer memakai <li> untuk tautan pendek, bukan bacaan
 * panjang, dan tidak boleh ikut terbatasi. Varian rata-tengah diberi
 * margin-inline: auto supaya kotaknya ikut ke tengah bersama teksnya;
 * tanpa ini paragraf rata-tengah akan tampak nyata tidak center karena
 * kotaknya sendiri tetap rata kiri. */
.wp-block-post-content p,
.wp-block-post-content li {
	max-width: var(--pintarin-measure);
}

.wp-block-post-content p.has-text-align-center,
.wp-block-post-content li.has-text-align-center {
	margin-inline: auto;
}

/* ---------------------------------------------------------------------------
 * Fokus keyboard
 *
 * Ring fokus hanya muncul untuk navigasi keyboard, bukan saat diklik tetikus.
 * Outline bawaan tidak dihapus tanpa pengganti — menghapusnya tanpa ganti
 * membuat situs tidak dapat dipakai tanpa tetikus.
 * ------------------------------------------------------------------------- */

:where(a, button, input, textarea, select, summary, [tabindex]):focus-visible {
	outline: 3px solid var(--pintarin-focus-ring);
	outline-offset: 2px;
	border-radius: var(--pintarin-radius-sm);
}

/* ---------------------------------------------------------------------------
 * Skip link
 * ------------------------------------------------------------------------- */

.skip-link {
	position: absolute;
	left: var(--wp--preset--spacing--30);
	top: var(--wp--preset--spacing--30);
	z-index: 100;
	padding: var(--wp--preset--spacing--25) var(--wp--preset--spacing--30);
	background: var(--pintarin-surface-raised);
	color: var(--pintarin-text-primary);
	border-radius: var(--pintarin-radius-md);
	box-shadow: var(--pintarin-shadow-e2);
	text-decoration: none;
	transform: translateY(-200%);
	transition: transform var(--pintarin-duration-base) var(--pintarin-ease-out);
}

.skip-link:focus-visible {
	transform: translateY(0);
}

/* ---------------------------------------------------------------------------
 * Tombol
 *
 * .wp-element-button adalah kelas yang dipakai core maupun form plugin,
 * sehingga kontrak dengan pintarin-core terpenuhi di sini.
 * ------------------------------------------------------------------------- */

.wp-element-button,
.wp-block-button__link {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: var(--wp--preset--spacing--20);
	min-height: 44px;
	padding: var(--wp--preset--spacing--25) var(--wp--preset--spacing--40);
	border: 0;
	border-radius: var(--pintarin-radius-md);
	font-weight: 700;
	line-height: 1;
	text-decoration: none;
	cursor: pointer;
	/* Transform dan opacity tetap menjadi aturan untuk animasi berkelanjutan
	 * atau yang mengikuti scroll, karena pekerjaan render pada kasus itu
	 * berulang setiap frame. Perubahan status diskret pada kontrol kecil
	 * seperti ini boleh mentransisikan properti paint-only, sebab hanya
	 * menggambar sekali dan tidak pernah menyentuh layout. */
	transition:
		transform var(--pintarin-duration-fast) var(--pintarin-ease-out),
		box-shadow var(--pintarin-duration-fast) var(--pintarin-ease-out),
		background-color var(--pintarin-duration-fast) var(--pintarin-ease-out);
}

.wp-element-button:hover,
.wp-block-button__link:hover {
	transform: translateY(-1px);
	box-shadow: var(--pintarin-shadow-e2);
}

.wp-element-button:active,
.wp-block-button__link:active {
	transform: translateY(0);
}

.wp-element-button:disabled,
.wp-element-button[aria-disabled="true"] {
	cursor: not-allowed;
	opacity: 0.6;
	transform: none;
	box-shadow: none;
}

/* Varian outline milik tema sendiri.
 *
 * Core memang mengirim gaya untuk is-style-outline lewat
 * wp-includes/blocks/button/style.css, tetapi selektornya berspesifisitas
 * 0-1-0 — seri dengan aturan `border: 0` di atas — sehingga urutan muat yang
 * menentukan, dan pintarin-base terbit SETELAH gaya blok core. Hasilnya
 * tombol outline menghitung border-width 0px dan latar transparan: rupa
 * tombolnya hilang sama sekali dan yang tersisa hanya teks polos di samping
 * tombol primer solid. Bergantung pada lembar core juga rapuh dengan cara
 * lain — should_load_block_assets_on_demand membuat lembar itu hanya termuat
 * bila bloknya dipakai di halaman tersebut.
 *
 * Selektor di bawah berspesifisitas 0-3-0 sehingga menang atas keduanya
 * tanpa bergantung pada urutan muat, dan warnanya diambil dari token brand,
 * bukan dari palet core.
 *
 * Hover sengaja TIDAK ditambahkan ke daftar transition. Menganimasikan
 * `color` atau `border-color` akan melahirkan ulang cacat yang sudah
 * tercatat di carry-forward item 17: saat token tema berganti (toggle
 * terang/gelap), foreground beranimasi dari nilai lama sementara latar
 * halaman berpindah seketika, sehingga ada jendela di bawah ambang kontras.
 * Perubahan warna di sini karena itu diskret, sementara transform dan
 * box-shadow tetap beranimasi lewat aturan bersama di atas. */
.wp-block-button.is-style-outline > .wp-block-button__link {
	background-color: transparent;
	color: var(--pintarin-brand-primary);
	border: 1px solid var(--pintarin-brand-primary);
}

.wp-block-button.is-style-outline > .wp-block-button__link:hover,
.wp-block-button.is-style-outline > .wp-block-button__link:focus-visible {
	background-color: transparent;
	color: var(--pintarin-brand-primary-hover);
	border-color: var(--pintarin-brand-primary-hover);
}

/* ---------------------------------------------------------------------------
 * Kolom isian
 * ------------------------------------------------------------------------- */

/* Deklarasi box-sizing yang dulu berdiri di sini sudah dihapus: reset
 * universal di bagian "Dasar dokumen" sekarang mencakup ketiga selektor ini
 * beserta seluruh elemen lain, sehingga menuliskannya ulang di sini hanya
 * menyisakan kesan bahwa kontrol form adalah pengecualian — padahal justru
 * dialah yang sudah benar sejak awal. */
input:where([type="text"], [type="email"], [type="tel"], [type="url"], [type="search"]),
textarea,
select {
	width: 100%;
	min-height: 44px;
	padding: var(--wp--preset--spacing--25) var(--wp--preset--spacing--30);
	background: var(--pintarin-surface-raised);
	color: var(--pintarin-text-primary);
	border: 1px solid var(--pintarin-border-strong);
	border-radius: var(--pintarin-radius-md);
	font-family: inherit;
	font-size: var(--wp--preset--font-size--body);
	transition:
		border-color var(--pintarin-duration-fast) var(--pintarin-ease-out),
		box-shadow var(--pintarin-duration-fast) var(--pintarin-ease-out);
}

input:focus-visible,
textarea:focus-visible,
select:focus-visible {
	border-color: var(--pintarin-brand-primary);
	box-shadow: 0 0 0 3px var(--pintarin-focus-ring);
	outline: none;
}

[aria-invalid="true"] {
	border-color: var(--pintarin-status-error);
}

/* ---------------------------------------------------------------------------
 * Scrollbar kustom
 *
 * Ditulis dua kali: properti standar untuk Firefox dan browser modern,
 * pseudo-element WebKit untuk Chrome dan Safari yang belum mendukungnya.
 * ------------------------------------------------------------------------- */

html {
	scrollbar-width: thin;
	scrollbar-color: var(--pintarin-border-strong) transparent;
}

::-webkit-scrollbar {
	width: 10px;
	height: 10px;
}

::-webkit-scrollbar-track {
	background: transparent;
}

::-webkit-scrollbar-thumb {
	background: var(--pintarin-border-strong);
	border: 3px solid transparent;
	background-clip: content-box;
	border-radius: var(--pintarin-radius-pill);
}

::-webkit-scrollbar-thumb:hover {
	background: var(--pintarin-text-muted);
	background-clip: content-box;
}

/* ---------------------------------------------------------------------------
 * Preferensi gerak
 *
 * Transisi dimatikan, bukan diperlambat. Memperlambat animasi tetap
 * memicu keluhan pengguna yang sensitif terhadap gerak.
 * ------------------------------------------------------------------------- */

@media (prefers-reduced-motion: reduce) {
	html {
		scroll-behavior: auto;
	}

	*,
	*::before,
	*::after {
		animation-duration: 0.01ms !important;
		animation-iteration-count: 1 !important;
		transition-duration: 0.01ms !important;
		scroll-behavior: auto !important;
	}
}

/* ---------------------------------------------------------------------------
 * Header sticky berefek kaca
 *
 * Posisi sticky sengaja dipasang di <header class="wp-block-template-part">,
 * bukan di .pintarin-header. wp:template-part dengan tagName "header"
 * membungkus part ini dalam elemen <header> yang tingginya otomatis
 * menyusut pas dengan kontennya (dia bertetangga dengan <main> dan
 * <footer>, bukan leluhur yang tinggi). Containing block bagi elemen
 * sticky adalah induk langsungnya — bila sticky dipasang di
 * .pintarin-header, induknya (<header>) tidak pernah punya ruang lebih
 * untuk "ditinggal gulir", sehingga elemen ikut bergulir alih-alih
 * menempel. <header> sendiri beranak-cucu ke .wp-site-blocks setinggi
 * halaman, sehingga di situlah sticky punya ruang untuk benar-benar
 * bekerja. Latar dan efek kaca tetap tinggal di .pintarin-header karena
 * div itu mengisi penuh kotak <header>, sehingga tidak ada perbedaan
 * visual.
 *
 * Latar semi-transparan dengan blur hanya diterapkan bila browser memang
 * mendukung backdrop-filter. Tanpa penjagaan itu, browser yang tidak
 * mendukungnya akan menampilkan header tembus pandang dan teks bertumpuk.
 * ------------------------------------------------------------------------- */

header.wp-block-template-part:has(.pintarin-header) {
	position: sticky;
	top: 0;
	z-index: 50;
}

.pintarin-header {
	background: var(--pintarin-surface-base);
	border-bottom: 1px solid var(--pintarin-border-subtle);
}

@supports ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))) {
	.pintarin-header {
		background: var(--pintarin-surface-glass);
		-webkit-backdrop-filter: blur(var(--pintarin-glass-blur));
		backdrop-filter: blur(var(--pintarin-glass-blur));
	}
}

.pintarin-header__inner {
	padding-top: var(--wp--preset--spacing--25);
	padding-bottom: var(--wp--preset--spacing--25);
}

/* Bungkus logo agar area klik memenuhi target sentuh minimum 44px tanpa
 * mengubah ukuran render SVG-nya. inline-flex + align-items center
 * menjaga tanda tetap sejajar tengah secara vertikal terhadap paddingnya. */
.pintarin-header__logo {
	display: inline-flex;
	align-items: center;
	padding-block: var(--wp--preset--spacing--20);
	color: var(--pintarin-text-primary);
}

/* Indikator tautan navigasi aktif, bukan kotak tegas. */
.pintarin-header .wp-block-navigation-item__content {
	position: relative;
	text-decoration: none;
	padding-block: var(--wp--preset--spacing--25);
}

.pintarin-header .wp-block-navigation-item__content::after {
	content: "";
	position: absolute;
	left: 0;
	right: 0;
	bottom: 0;
	height: 2px;
	border-radius: var(--pintarin-radius-pill);
	background: var(--pintarin-brand-primary);
	transform: scaleX(0);
	transform-origin: center;
	transition: transform var(--pintarin-duration-base) var(--pintarin-ease-out);
}

.pintarin-header .wp-block-navigation-item__content:hover::after,
.pintarin-header .current-menu-item > .wp-block-navigation-item__content::after {
	transform: scaleX(1);
}

/* Tombol pengalih navigasi mobile bawaan core hanya membungkus svg 24x24
 * tanpa padding apa pun. Di bawah 600px ini satu-satunya jalan menuju
 * navigasi, sehingga wajib memenuhi target sentuh minimum 44px.
 *
 * JANGAN menambahkan `display` pada tombol BUKA. Core menyembunyikannya di
 * atas 600px lewat `.wp-block-navigation__responsive-container-open:not(.always-shown)
 * { display: none }` yang berspesifisitas 0-2-0 — sama dengan selektor di
 * bawah ini — sehingga urutan muat yang menentukan, dan `pintarin-base-css`
 * terbit setelah `wp-block-navigation-css`. Menyetel `display` di sini
 * mengalahkan aturan core dan memunculkan hamburger di header desktop pada
 * setiap halaman. Core sudah memberi tombol buka `display: flex`, jadi empat
 * deklarasi di bawah sudah cukup menghasilkan target sentuh 44x44. */
.pintarin-header .wp-block-navigation__responsive-container-open {
	align-items: center;
	justify-content: center;
	min-width: 44px;
	min-height: 44px;
}

/* Tombol TUTUP hanya hidup di dalam overlay yang sedang terbuka; core
 * menyembunyikannya lewat selektor 0-4-0 yang tidak bisa dikalahkan aturan
 * ini, jadi `display` di sini aman dan tetap diperlukan supaya svg-nya
 * terpusat di dalam kotak 44x44. */
.pintarin-header .wp-block-navigation__responsive-container-close {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 44px;
	min-height: 44px;
}

/* ---------------------------------------------------------------------------
 * CTA header responsif (carry-forward item 22)
 *
 * .pintarin-header__cta ber-flexWrap: nowrap dengan logo dan pengalih
 * navigasi di baris yang sama. Di bawah 600px tombolnya terjepit sampai
 * labelnya pecah nyaris per suku kata dan header sticky memakan hampir
 * seluruh tinggi layar — diukur 329px pada 360px, 133px pada 390px. brief.md
 * §37 melarang memendekkan label CTA utama, dan membiarkan baris membungkus
 * hanya memperparah masalah (header sticky jadi makin tinggi). Keputusannya:
 * sembunyikan tombol ini dan pindahkan jalur konversi yang sama ke dalam
 * overlay navigasi (lihat blok .pintarin-header__cta-overlay di bawah, dan
 * wp:navigation-link keenam di patterns/header.php tempat tautannya
 * ditulis sebagai inner block navigasi).
 *
 * `display: none`, bukan `visibility`/`opacity` nol — keduanya menyisakan
 * elemen tetap bisa difokus keyboard walau tak terlihat, sebuah phantom tab
 * stop yang pernah terjadi di tema ini pada pengalih navigasi. `display`
 * menghapusnya sepenuhnya dari pohon aksesibilitas dan urutan tab.
 *
 * 600px meniru persis breakpoint yang dipakai core sendiri untuk pengalih
 * navigasi (`@media (min-width: 600px)` di
 * wp-includes/blocks/navigation/style.css, tempat pengalih hamburger
 * disembunyikan), sehingga hilangnya tombol ini dan munculnya hamburger
 * tetap selaras di lebar yang sama.
 *
 * Selektor sengaja berspesifisitas 0-3-0, bukan `.pintarin-header__cta`
 * satu kelas (0-1-0) saja. Core menyuntik gaya kritikal `wp-block-buttons`
 * ke <style> inline dengan selektor `.wp-block-buttons > .wp-block-button`
 * (0-2-0, `display: inline-block`) pada elemen div yang sama — spesifisitas
 * itu menang atas satu kelas berapa pun urutan medianya benar, sehingga
 * `display: none` di sini tidak pernah benar-benar berlaku sebelum
 * diperbaiki. Pola penambahan spesifisitas yang sama sudah dipakai di
 * varian tombol outline di atas, dengan alasan yang identik. */
@media (max-width: 599px) {
	.pintarin-header .wp-block-button.pintarin-header__cta {
		display: none;
	}

	/* Wadah pembungkusnya (.wp-block-buttons) tetap berupa item flex kosong
	 * selebar 0px walau isinya sudah disembunyikan oleh aturan di atas. Baris
	 * flex nowrap yang membungkusnya kini juga memuat language switcher (Task
	 * 10) di ujung kanan, sehingga dua blockGap 24px yang mengapit wadah
	 * kosong itu ikut terhitung dan mendorong total lebar baris 15px melewati
	 * viewport 390px -- terverifikasi lewat MCP Playwright sebelum aturan ini
	 * ada. Menyembunyikan WADAHNYA, bukan cuma tombol di dalamnya,
	 * menghapus item kosong itu beserta kedua gap-nya dari alur flex. */
	.pintarin-header .wp-block-buttons:has(.pintarin-header__cta) {
		display: none;
	}
}

/* Tautan CTA di dalam overlay navigasi mobile. Ditulis di patterns/header.php
 * sebagai wp:navigation-link keenam, item navigasi biasa (core/navigation-link)
 * bersebelahan dengan lima tautan menu utama — bukan disisipkan lewat filter
 * fallback (mekanisme lama di inc/navigation.php, dihapus setelah
 * wp:navigation diberi inner block eksplisit sehingga jalur fallback tidak
 * pernah lagi ditempuh; lihat docblock patterns/header.php) — supaya ikut
 * memakai <ul> yang sama, urutan tab yang sama, dan focus-trap dialog
 * overlay yang sama dengan item menu asli. className blok itu menempel di
 * elemen <li>, bukan pada <a>-nya, sehingga selektor di bawah menyasar
 * keduanya lewat descendant combinator.
 *
 * Disembunyikan di 600px ke atas: pada lebar itu overlay tidak pernah
 * terbuka (breakpoint sama seperti blok di atas), dan CTA baris header biasa
 * sudah terlihat, sehingga item ini hanya akan menjadi duplikat kalau ikut
 * dirender pada baris navigasi desktop.
 *
 * Spesifisitas 0-3-0 dengan alasan yang sama seperti blok di atas: elemen
 * <li> ini juga elemen `.wp-block-navigation-item`, kelas yang berpotensi
 * disasar gaya kritikal inline core dengan spesifisitas lebih dari satu
 * kelas. Dikunci di sini sebagai kebiasaan bertahan yang sama, bukan
 * menunggu ditemukan lewat regresi berikutnya. */
@media (min-width: 600px) {
	.pintarin-header .wp-block-navigation-item.pintarin-header__cta-overlay {
		display: none;
	}
}

/* ::after adalah indikator garis bawah tautan navigasi biasa (lihat blok
 * "Indikator tautan navigasi aktif" di atas) — tidak relevan untuk tautan
 * yang sudah tampil sebagai tombol solid, jadi dimatikan di sini. */
.pintarin-header .pintarin-header__cta-overlay .wp-block-navigation-item__content::after {
	content: none;
}

.pintarin-header .pintarin-header__cta-overlay .wp-block-navigation-item__content {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-height: 44px;
	margin-top: var(--wp--preset--spacing--20);
	padding: var(--wp--preset--spacing--25) var(--wp--preset--spacing--40);
	background-color: var(--pintarin-brand-primary);
	color: var(--pintarin-text-on-brand);
	border-radius: var(--pintarin-radius-md);
	font-weight: 700;
	transition: transform var(--pintarin-duration-fast) var(--pintarin-ease-out);
}

.pintarin-header .pintarin-header__cta-overlay .wp-block-navigation-item__content:hover {
	transform: translateY(-1px);
}

/* ---------------------------------------------------------------------------
 * Language switcher (Task 10)
 *
 * Dirender sebagai dua tautan sejajar (lihat docblock patterns/header.php),
 * bukan dropdown -- dua bahasa tidak memerlukan kontrol yang menyembunyikan
 * salah satunya. Indikator bahasa aktif meniru pola "scoop-tab" yang sama
 * persis dengan tautan navigasi utama di atas (garis bawah yang mengembang
 * lewat transform, bukan kotak tegas), supaya kedua kontrol di header
 * terbaca sebagai satu bahasa visual. aria-current="true" pada <a>-nya
 * sendiri adalah SATU-SATUNYA sumber kebenaran untuk gaya bahasa aktif --
 * tidak ada kelas terpisah yang bisa lupa disinkronkan dengan atributnya.
 * ------------------------------------------------------------------------- */

.pintarin-lang-switcher ul {
	display: flex;
	align-items: center;
	list-style: none;
	margin: 0;
	padding: 0;
	gap: var(--wp--preset--spacing--20);
}

/* min-width + min-height, bukan padding saja, menumbuhkan target sentuh ke
 * 44x44 dari titik tengahnya walau labelnya sekadar dua huruf ("ID"/"EN") --
 * pola yang sama dipakai .pintarin-footer__list a. */
.pintarin-lang-switcher a {
	position: relative;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 44px;
	min-height: 44px;
	padding-inline: var(--wp--preset--spacing--20);
	color: var(--pintarin-text-secondary);
	font-weight: 500;
	font-size: var(--wp--preset--font-size--body-sm);
	text-decoration: none;
}

.pintarin-lang-switcher a::after {
	content: "";
	position: absolute;
	left: var(--wp--preset--spacing--20);
	right: var(--wp--preset--spacing--20);
	bottom: 4px;
	height: 2px;
	border-radius: var(--pintarin-radius-pill);
	background: var(--pintarin-brand-primary);
	transform: scaleX(0);
	transform-origin: center;
	transition: transform var(--pintarin-duration-base) var(--pintarin-ease-out);
}

.pintarin-lang-switcher a:hover::after,
.pintarin-lang-switcher a[aria-current="true"]::after {
	transform: scaleX(1);
}

.pintarin-lang-switcher a[aria-current="true"] {
	color: var(--pintarin-text-primary);
	font-weight: 700;
}

/* Bahasa yang TIDAK punya terjemahan halaman ini. Polylang tetap memberi
 * entri ini sebuah URL, tetapi URL BERANDA bahasa itu, bukan padanan halaman
 * yang sedang dibuka -- lihat komentar no_translation di patterns/header.php.
 * Tautannya sengaja tidak disembunyikan (itu akan menghapus satu-satunya
 * jalan ke bahasa lain), hanya dibedakan: garis bawah putus menyatakan
 * "bukan pertukaran halaman-ke-halaman" secara visual, sejajar dengan
 * aria-label yang menyatakannya untuk pembaca layar. Tidak ada transisi baru
 * di sini -- satu-satunya transisi switcher tetap transform pada ::after. */
.pintarin-lang-switcher a.pintarin-lang-switcher__link--no-translation {
	color: var(--pintarin-text-secondary);
	text-decoration: underline dotted;
	text-underline-offset: 0.35em;
}

.pintarin-lang-switcher a.pintarin-lang-switcher__link--no-translation::after {
	background: var(--pintarin-text-secondary);
}

/* ---------------------------------------------------------------------------
 * Footer
 * ------------------------------------------------------------------------- */

.pintarin-footer__list {
	list-style: none;
	padding-left: 0;
	margin-top: var(--wp--preset--spacing--30);
	display: grid;
	gap: var(--wp--preset--spacing--20);
}

/* Kotak sentuh tautan navigasi footer. Sapuan Task 10 mengukur 41x18 sampai
 * 90x18 px di 390px sebelum aturan ini — tautannya sekadar teks inline di
 * dalam <li>, tanpa kotak sentuh sendiri, gagal target 44x44 proyek pada
 * KEDUA sumbu (bukan cuma tinggi seperti .pintarin-card__title a). Mengikuti
 * pola yang sama: inline-flex plus align-items:center menumbuhkan tinggi
 * lewat min-block-size tanpa menggeser baseline. min-inline-size menumbuhkan
 * lebar dengan cara yang setara di sumbu horizontal — box tumbuh ke kanan
 * dari titik awalnya, teksnya sendiri tidak didorong lewat padding sehingga
 * posisi awal setiap tautan di kolomnya tidak berubah. */
.pintarin-footer__list a {
	display: inline-flex;
	align-items: center;
	min-block-size: 2.75rem;
	min-inline-size: 2.75rem;
	color: var(--pintarin-text-secondary);
	text-decoration: none;
	transition: color var(--pintarin-duration-fast) var(--pintarin-ease-out);
}

.pintarin-footer__list a:hover {
	color: var(--pintarin-brand-primary);
}
