/* ══════════════════════════════════════════════════════════════════════════
   PAGES — kepala halaman, konten prose, artikel tunggal, pencarian,
   status kosong, paginasi, komentar, dan 404.

   Dimuat di semua halaman kecuali beranda (beranda pakai home.css).
   ══════════════════════════════════════════════════════════════════════════ */

/* ══════════════════════════════════════════════════════════════════════════
   KEPALA HALAMAN GELAP
   ══════════════════════════════════════════════════════════════════════════ */
.phero {
  position: relative;
  isolation: isolate;
  overflow: hidden;
  padding: clamp(2.5rem, 6vw, 4.5rem) 0 clamp(2rem, 4vw, 3rem);
  color: #fff;
  background: linear-gradient(150deg, var(--c-ink) 0%, var(--c-ink-deep) 100%);
}

.phero__bg {
  position: absolute;
  inset: 0;
  z-index: -1;
  pointer-events: none;
}

/*
 * Foto latar diredupkan dan diberi kerudung gelap. Nilai opacity dipilih agar
 * teks putih di atasnya tetap lolos ambang kontras pada bagian gambar yang
 * paling terang sekalipun.
 */
/*
 * Foto ditempatkan di SISI KANAN pita, bukan direntang selebar penuh.
 *
 * Gambar dari klien adalah spanduk yang memuat tulisannya sendiri. Saat
 * direntang penuh lalu diredupkan, dua hal terjadi bersamaan: tulisan spanduk
 * bertabrakan dengan judul halaman, dan meredupkannya sampai tidak bertabrakan
 * membuat gambarnya nyaris tak terlihat.
 *
 * Karena itu yang dipakai bagian forkliftnya saja, ditaruh di kanan tempat
 * tidak ada teks. Tepi kirinya dilarutkan dengan mask supaya menyatu ke latar
 * gelap, jadi gambarnya terlihat jelas tanpa mengganggu keterbacaan judul.
 */
.phero__photo {
  position: absolute;
  top: 0;
  right: 0;
  bottom: 0;
  left: auto;
  width: min(46%, 34rem);
  height: 100%;
  object-fit: cover;
  object-position: center;
  opacity: 0.9;
  -webkit-mask-image: linear-gradient(to right, transparent 0%, #000 42%);
  mask-image: linear-gradient(to right, transparent 0%, #000 42%);
}

/* Kerudung tipis supaya sisi kanan tidak terlalu terang dibanding kiri. */
.phero__scrim {
  position: absolute;
  inset: 0;
  background: linear-gradient(
      100deg,
      var(--c-ink-deep) 30%,
      rgba(23, 23, 27, 0.55) 68%,
      rgba(23, 23, 27, 0.28) 100%
    ),
    linear-gradient(to bottom, rgba(23, 23, 27, 0.3), transparent 60%);
}

/* Di ponsel teks memakai seluruh lebar; foto tinggal jadi aksen samar. */
@media (max-width: 700px) {
  .phero__photo {
    width: 62%;
    opacity: 0.35;
  }
}

.phero__glow {
  position: absolute;
  top: -55%;
  right: -12%;
  width: min(46rem, 70%);
  aspect-ratio: 1;
  background: radial-gradient(circle, rgba(244, 183, 17, 0.22) 0%, transparent 68%);
  border-radius: 50%;
}

.phero__mesh {
  position: absolute;
  inset: 0;
  opacity: 0.5;
  background-image: linear-gradient(rgba(255, 255, 255, 0.045) 1px, transparent 1px),
    linear-gradient(90deg, rgba(255, 255, 255, 0.045) 1px, transparent 1px);
  background-size: 56px 56px;
  -webkit-mask-image: linear-gradient(to bottom, #000 0%, transparent 92%);
  mask-image: linear-gradient(to bottom, #000 0%, transparent 92%);
}

/*
 * Tanpa modifier, pita selebar .container (1240px) — sama dengan halaman toko,
 * keranjang, checkout, dan daftar artikel. Halaman konten yang memakai kolom
 * baca sempit menambahkan --narrow supaya tepinya sejajar.
 */
.phero__inner {
  position: relative;
}

.phero__inner--narrow {
  max-width: var(--w-narrow);
}

/* ── Spanduk sebagai kepala halaman ──────────────────────────────────── */

/*
 * Dipakai ketika gambar utama halaman berupa spanduk lebar rancangan desainer.
 * Spanduk ditampilkan utuh — bukan dipotong jadi latar — karena seluruh
 * pesannya (logo, judul, ikon layanan) ada di dalam gambar itu sendiri.
 *
 * Judul teks halaman tetap dicetak di markup tapi disembunyikan secara visual;
 * mesin pencari dan pembaca layar tetap mendapatkannya tanpa membuat judul
 * tampil dua kali di layar.
 */
.pbanner {
  background: var(--c-base);
}

.pbanner__crumbs {
  padding-block: var(--s-4) var(--s-3);
}

/*
 * Spanduk dibingkai di lebar halaman, bukan direntang mepet tepi layar.
 *
 * Versi mepet-tepi membuatnya terbaca sebagai dinding gambar: tidak ada jeda
 * antara header dan spanduk, dan pada monitor lebar tingginya jadi lebih dari
 * separuh layar. Dengan gutter kiri-kanan dan sudut membulat, spanduk terbaca
 * sebagai satu elemen yang memang ditempatkan di sana — sekaligus sejajar
 * dengan logo dan isi halaman di bawahnya.
 */
.pbanner__media {
  width: 100%;
  max-width: var(--w-container);
  margin-inline: auto;
  padding-inline: var(--pad-x);
  line-height: 0;
}

.pbanner__img {
  display: block;
  width: 100%;
  height: auto;
  border-radius: var(--r-lg);
}

.pbanner {
  padding-bottom: clamp(1.5rem, 3vw, 2.5rem);
}

/* Breadcrumb di atas latar gelap. */
.phero .crumbs {
  margin-bottom: var(--s-4);
  color: rgba(255, 255, 255, 0.62);
}

.phero .crumbs__item a {
  color: rgba(255, 255, 255, 0.78);
}

.phero .crumbs__item a:hover {
  color: var(--c-primary);
}

.phero .crumbs__item--current {
  color: #fff;
}

.phero__eyebrow {
  display: inline-flex;
  align-items: center;
  gap: 0.45rem;
  margin-bottom: 0.75rem;
  padding: 0.3rem 0.85rem;
  font-family: var(--f-display);
  font-size: var(--t-xs);
  font-weight: 700;
  letter-spacing: 0.09em;
  text-transform: uppercase;
  color: var(--c-primary);
  background: rgba(244, 183, 17, 0.12);
  border: 1px solid rgba(244, 183, 17, 0.3);
  border-radius: var(--r-full);
}

.phero__title {
  font-size: clamp(1.85rem, 4.2vw, 3rem);
  line-height: 1.12;
  letter-spacing: -0.02em;
  color: #fff;
  text-wrap: balance;
}

.phero__text {
  max-width: 46ch;
  margin-top: var(--s-4);
  font-size: var(--t-md);
  line-height: 1.7;
  color: rgba(255, 255, 255, 0.74);
}

/* ══════════════════════════════════════════════════════════════════════════
   KONTEN TULISAN (prose)
   ══════════════════════════════════════════════════════════════════════════ */
.prose {
  padding-block: clamp(2rem, 4vw, 3.25rem);
  font-size: 1.0625rem;
  line-height: 1.8;
  color: var(--c-ink-soft);
}

.prose > * + * {
  margin-top: 1.25em;
}

.prose h2,
.prose h3,
.prose h4,
.prose h5,
.prose h6 {
  color: var(--c-ink);
  line-height: 1.25;
  letter-spacing: -0.015em;
  scroll-margin-top: calc(var(--h-header) + 1.5rem);
}

.prose > h2 { margin-top: 2.25em; font-size: clamp(1.4rem, 2.6vw, 1.85rem); }
.prose > h3 { margin-top: 1.85em; font-size: clamp(1.2rem, 2.1vw, 1.45rem); }
.prose > h4 { margin-top: 1.6em;  font-size: 1.15rem; }

.prose > :first-child {
  margin-top: 0;
}

.prose a {
  color: var(--c-ink);
  text-decoration: underline;
  text-decoration-color: var(--c-primary);
  text-decoration-thickness: 2px;
  text-underline-offset: 3px;
  transition: color var(--dur) var(--ease), background-color var(--dur) var(--ease);
}

.prose a:hover {
  color: var(--c-primary-deep);
  background: var(--c-primary-tint);
}

.prose strong {
  color: var(--c-ink);
  font-weight: 700;
}

/*
 * base.css mematikan penanda daftar secara global (`ul, ol { list-style: none }`)
 * karena hampir semua daftar di tema ini adalah menu dan kartu. Di dalam konten
 * tulisan penanda itu harus dinyalakan lagi — tanpa ini butir dan nomor langkah
 * hilang, dan daftar terbaca seperti paragraf lepas yang menggantung.
 */
.prose ul {
  list-style: disc;
}

.prose ol {
  list-style: decimal;
}

.prose ul,
.prose ol {
  padding-left: 1.35em;
}

.prose li::marker {
  /* Bawaan browser memakai ukuran huruf butir; disamakan supaya sejajar. */
  font-size: 1em;
}

.prose li + li {
  margin-top: 0.5em;
}

.prose ul > li::marker {
  color: var(--c-primary-deep);
}

.prose ol > li::marker {
  color: var(--c-ink);
  font-family: var(--f-display);
  font-weight: 700;
}

.prose img,
.prose video,
.prose iframe {
  max-width: 100%;
  height: auto;
  border-radius: var(--r-lg);
}

.prose figure {
  margin-block: 2em;
}

.prose figcaption {
  margin-top: 0.75rem;
  font-size: var(--t-sm);
  color: var(--c-muted);
  text-align: center;
}

.prose blockquote {
  padding: var(--s-5) var(--s-6);
  font-size: 1.1rem;
  line-height: 1.65;
  color: var(--c-ink);
  background: var(--c-primary-tint);
  border-left: 4px solid var(--c-primary);
  border-radius: 0 var(--r-md) var(--r-md) 0;
}

.prose blockquote p + p {
  margin-top: 0.75em;
}

.prose blockquote cite {
  display: block;
  margin-top: 0.75rem;
  font-size: var(--t-sm);
  font-style: normal;
  font-weight: 700;
  color: var(--c-ink-soft);
}

.prose code {
  padding: 0.15em 0.4em;
  font-size: 0.9em;
  color: var(--c-ink);
  background: var(--c-surface);
  border: 1px solid var(--c-border);
  border-radius: var(--r-sm);
}

.prose pre {
  overflow-x: auto;
  padding: var(--s-5);
  color: #e9e9ef;
  background: var(--c-ink-deep);
  border-radius: var(--r-md);
}

.prose pre code {
  padding: 0;
  color: inherit;
  background: none;
  border: 0;
}

.prose hr {
  height: 1px;
  margin-block: 2.5em;
  background: var(--c-border);
  border: 0;
}

.prose table {
  width: 100%;
  border-collapse: collapse;
  font-size: var(--t-sm);
}

.prose th,
.prose td {
  padding: 0.75rem 1rem;
  text-align: left;
  border-bottom: 1px solid var(--c-border);
}

.prose thead th {
  font-family: var(--f-display);
  font-weight: 700;
  color: var(--c-ink);
  background: var(--c-surface);
}

.prose .alignwide,
.prose .alignfull {
  margin-inline: auto;
}

.prose .aligncenter {
  display: block;
  margin-inline: auto;
}

.prose .wp-caption {
  max-width: 100%;
}

/* Paginasi dalam satu artikel (<!--nextpage-->). */
.pagelinks {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
  margin-top: 2.5rem;
  padding-top: 1.5rem;
  font-family: var(--f-display);
  font-weight: 700;
  border-top: 1px solid var(--c-border);
}

.pagelinks a,
.pagelinks > span {
  display: grid;
  place-items: center;
  min-width: 2.5rem;
  height: 2.5rem;
  padding-inline: 0.75rem;
  color: var(--c-ink);
  border: 1px solid var(--c-border);
  border-radius: var(--r-md);
}

.pagelinks a:hover {
  color: var(--c-ink);
  border-color: var(--c-primary);
  background: var(--c-primary-tint);
}

.pagelinks > span {
  color: var(--c-ink-deep);
  background: var(--c-primary);
  border-color: var(--c-primary);
}

/* ══════════════════════════════════════════════════════════════════════════
   ARTIKEL TUNGGAL
   ══════════════════════════════════════════════════════════════════════════ */
.single__head {
  padding-top: clamp(1.5rem, 3vw, 2.5rem);
}

.single__meta {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.5rem 0.85rem;
  margin-block: var(--s-4) 0.85rem;
  font-size: var(--t-sm);
  color: var(--c-muted);
}

.single__meta > * + *::before {
  content: "";
  display: inline-block;
  width: 3px;
  height: 3px;
  margin-right: 0.85rem;
  vertical-align: middle;
  background: currentcolor;
  border-radius: 50%;
  opacity: 0.6;
}

.single__cat {
  padding: 0.25rem 0.7rem;
  font-family: var(--f-display);
  font-size: var(--t-xs);
  font-weight: 700;
  letter-spacing: 0.02em;
  color: #8a6400;
  background: var(--c-primary-tint);
  border-radius: var(--r-full);
}

.single__cat::before {
  display: none !important;
}

.single__cat:hover {
  color: #6d4f00;
  background: rgba(244, 183, 17, 0.28);
}

.single__title {
  font-size: clamp(1.7rem, 4vw, 2.65rem);
  line-height: 1.15;
  letter-spacing: -0.02em;
  color: var(--c-ink);
  text-wrap: balance;
}

.single__cover {
  margin-top: clamp(1.5rem, 3vw, 2.25rem);
}

.single__cover-img {
  width: 100%;
  aspect-ratio: 16 / 8;
  object-fit: cover;
  border-radius: var(--r-xl);
  box-shadow: var(--sh-lg);
}

/*
 * Spanduk buatan desainer sudah punya bingkai dan teksnya sendiri. Rasio
 * paksaan 16:8 akan memotong logo dan nomor telepon di dalamnya, jadi khusus
 * gambar yang jauh lebih lebar dari itu rasio aslinya dibiarkan utuh.
 */
.single__cover-img--banner {
  aspect-ratio: auto;
  height: auto;
  object-fit: contain;
  border-radius: var(--r-lg);
  box-shadow: var(--sh-md);
}

.single__foot {
  padding-bottom: var(--s-12);
}

.single__tags {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
  margin-bottom: var(--s-8);
}

.single__tags a {
  padding: 0.35rem 0.85rem;
  font-size: var(--t-sm);
  font-weight: 600;
  color: var(--c-ink-soft);
  background: var(--c-surface);
  border: 1px solid var(--c-border);
  border-radius: var(--r-full);
  transition: all var(--dur) var(--ease);
}

.single__tags a:hover {
  color: var(--c-ink);
  border-color: var(--c-primary);
  background: var(--c-primary-tint);
}

.single__cta {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: var(--s-4);
  padding: var(--s-6);
  background: var(--c-surface);
  border: 1px solid var(--c-border);
  border-radius: var(--r-lg);
}

.single__cta p {
  font-family: var(--f-display);
  font-size: var(--t-md);
  font-weight: 700;
  color: var(--c-ink);
}

/* ══════════════════════════════════════════════════════════════════════════
   FORMULIR PENCARIAN
   ══════════════════════════════════════════════════════════════════════════ */
.searchform {
  position: relative;
  display: flex;
  align-items: center;
  gap: 0.5rem;
  padding: 0.4rem 0.4rem 0.4rem 0.9rem;
  background: var(--c-base);
  border: 1px solid var(--c-border);
  border-radius: var(--r-full);
  transition: border-color var(--dur) var(--ease), box-shadow var(--dur) var(--ease);
}

.searchform:focus-within {
  border-color: var(--c-primary);
  box-shadow: 0 0 0 4px var(--c-primary-dim);
}

.searchform__icon {
  flex-shrink: 0;
  color: var(--c-muted);
}

.searchform__input {
  flex: 1;
  min-width: 0;
  padding: 0.55rem 0;
  font-family: inherit;
  font-size: var(--t-base);
  color: var(--c-ink);
  background: none;
  border: 0;
}

.searchform__input:focus {
  outline: none;
  box-shadow: none;
}

.searchform__input::placeholder {
  color: var(--c-muted);
}

.searchform__input::-webkit-search-cancel-button {
  cursor: pointer;
}

.searchform__submit {
  flex-shrink: 0;
}

.search-bar {
  max-width: 34rem;
  margin-bottom: clamp(1.75rem, 3vw, 2.5rem);
}

/* ══════════════════════════════════════════════════════════════════════════
   STATUS KOSONG
   ══════════════════════════════════════════════════════════════════════════ */
.empty {
  max-width: 34rem;
  margin-inline: auto;
  padding: clamp(2.5rem, 6vw, 4rem) var(--s-6);
  text-align: center;
  background: var(--c-surface);
  border: 1px dashed var(--c-border);
  border-radius: var(--r-xl);
}

.empty__icon {
  display: block;
  margin: 0 auto var(--s-4);
  padding: 1rem;
  box-sizing: content-box;
  color: var(--c-primary-deep);
  background: var(--c-base);
  border: 1px solid var(--c-border);
  border-radius: var(--r-full);
}

.empty__title {
  font-size: clamp(1.2rem, 2.4vw, 1.5rem);
  color: var(--c-ink);
}

.empty__text {
  max-width: 42ch;
  margin: 0.75rem auto 0;
  line-height: 1.7;
  color: var(--c-ink-soft);
}

.empty .btn,
.empty__actions {
  margin-top: var(--s-6);
}

.empty__actions {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 0.75rem;
}

.empty__actions .btn {
  margin-top: 0;
}

/* ══════════════════════════════════════════════════════════════════════════
   PAGINASI DAFTAR
   ══════════════════════════════════════════════════════════════════════════ */
.navigation.pagination {
  margin-top: clamp(2rem, 4vw, 3rem);
}

.navigation.pagination .nav-links {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 0.5rem;
}

.navigation.pagination .page-numbers {
  display: grid;
  place-items: center;
  min-width: 2.75rem;
  height: 2.75rem;
  padding-inline: 0.9rem;
  font-family: var(--f-display);
  font-size: var(--t-sm);
  font-weight: 700;
  color: var(--c-ink);
  background: var(--c-base);
  border: 1px solid var(--c-border);
  border-radius: var(--r-md);
  transition: all var(--dur) var(--ease);
}

.navigation.pagination a.page-numbers:hover {
  color: var(--c-ink);
  border-color: var(--c-primary);
  background: var(--c-primary-tint);
  transform: translateY(-2px);
}

.navigation.pagination .page-numbers.current {
  color: var(--c-ink-deep);
  background: var(--c-primary);
  border-color: var(--c-primary);
  box-shadow: var(--sh-brand);
}

.navigation.pagination .page-numbers.dots {
  border-color: transparent;
  background: none;
  color: var(--c-muted);
}

/* ══════════════════════════════════════════════════════════════════════════
   KOMENTAR
   ══════════════════════════════════════════════════════════════════════════ */
.comments {
  padding-bottom: var(--s-16);
}

.comments__title,
.comments__form-title {
  font-size: clamp(1.25rem, 2.4vw, 1.6rem);
  color: var(--c-ink);
  margin-bottom: var(--s-6);
}

.comments__list {
  list-style: none;
  margin-bottom: var(--s-10);
}

.comments__list ol.children {
  list-style: none;
  margin-left: clamp(1rem, 4vw, 2.5rem);
}

.comments__list li.comment,
.comments__list li.pingback {
  padding-block: var(--s-5);
  border-top: 1px solid var(--c-border);
}

.comments__list > li.comment:first-child {
  border-top: 0;
  padding-top: 0;
}

.comments__list .comment-meta {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.5rem 0.75rem;
  margin-bottom: 0.75rem;
  font-size: var(--t-sm);
  color: var(--c-muted);
}

.comments__list .avatar {
  border-radius: 50%;
}

.comments__list .fn {
  font-family: var(--f-display);
  font-style: normal;
  font-weight: 700;
  color: var(--c-ink);
}

.comments__list .says {
  display: none;
}

.comments__list .comment-content {
  line-height: 1.75;
  color: var(--c-ink-soft);
}

.comments__list .comment-content > * + * {
  margin-top: 1em;
}

.comments__list .reply a {
  display: inline-block;
  margin-top: 0.75rem;
  font-family: var(--f-display);
  font-size: var(--t-sm);
  font-weight: 700;
  color: var(--c-primary-deep);
}

.comments__list .bypostauthor > .comment-body .fn::after {
  content: "TMS";
  margin-left: 0.5rem;
  padding: 0.1rem 0.45rem;
  font-size: 0.65rem;
  letter-spacing: 0.04em;
  color: var(--c-ink-deep);
  background: var(--c-primary);
  border-radius: var(--r-full);
  vertical-align: middle;
}

.comments__closed {
  margin-bottom: var(--s-6);
  font-size: var(--t-sm);
  color: var(--c-muted);
}

.comments__form {
  padding: clamp(1.5rem, 3vw, 2.25rem);
  background: var(--c-surface);
  border: 1px solid var(--c-border);
  border-radius: var(--r-lg);
}

.comments__notes,
.comments__form .comment-notes {
  margin-bottom: var(--s-5);
  font-size: var(--t-sm);
  color: var(--c-muted);
}

.comments__form p {
  margin-bottom: var(--s-4);
}

.comments__form label {
  display: block;
  margin-bottom: 0.4rem;
  font-family: var(--f-display);
  font-size: var(--t-sm);
  font-weight: 700;
  color: var(--c-ink);
}

.comments__form .comment-form-cookies-consent {
  display: flex;
  align-items: flex-start;
  gap: 0.6rem;
}

.comments__form .comment-form-cookies-consent label {
  margin-bottom: 0;
  font-weight: 500;
  color: var(--c-ink-soft);
}

.comments__form .form-submit {
  margin-bottom: 0;
}

@media (min-width: 640px) {
  .comments__form .comment-form-author,
  .comments__form .comment-form-email {
    display: inline-block;
    width: calc(50% - 0.5rem);
  }

  .comments__form .comment-form-author {
    margin-right: 0.75rem;
  }
}

/* ══════════════════════════════════════════════════════════════════════════
   404
   ══════════════════════════════════════════════════════════════════════════ */
.e404 {
  position: relative;
  isolation: isolate;
  overflow: hidden;
  padding-block: clamp(3rem, 8vw, 6rem);
  text-align: center;
}

.e404__glow {
  position: absolute;
  top: -30%;
  left: 50%;
  z-index: -1;
  width: min(52rem, 110%);
  aspect-ratio: 1;
  transform: translateX(-50%);
  background: radial-gradient(circle, rgba(244, 183, 17, 0.16) 0%, transparent 65%);
  border-radius: 50%;
  pointer-events: none;
}

.e404__inner {
  max-width: 40rem;
}

.e404__code {
  font-family: var(--f-display);
  font-size: clamp(5rem, 18vw, 10rem);
  font-weight: 800;
  line-height: 0.9;
  letter-spacing: -0.05em;
  color: transparent;
  background: linear-gradient(160deg, var(--c-primary) 0%, var(--c-primary-deep) 55%, rgba(244, 183, 17, 0.25) 100%);
  -webkit-background-clip: text;
  background-clip: text;
}

.e404__title {
  margin-top: var(--s-4);
  font-size: clamp(1.4rem, 3.4vw, 2.1rem);
  letter-spacing: -0.02em;
  color: var(--c-ink);
  text-wrap: balance;
}

.e404__text {
  max-width: 46ch;
  margin: var(--s-4) auto 0;
  line-height: 1.75;
  color: var(--c-ink-soft);
}

.e404__search {
  max-width: 30rem;
  margin: var(--s-8) auto 0;
}

.e404__actions {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 0.75rem;
  margin-top: var(--s-6);
}

.e404__cats {
  margin-top: var(--s-10);
  padding-top: var(--s-8);
  border-top: 1px solid var(--c-border);
}

.e404__cats-label {
  margin-bottom: var(--s-4);
  font-family: var(--f-display);
  font-size: var(--t-xs);
  font-weight: 700;
  letter-spacing: 0.09em;
  text-transform: uppercase;
  color: var(--c-muted);
}

.e404__cats-list {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 0.5rem;
  list-style: none;
}

.e404__cats-list a {
  display: inline-block;
  padding: 0.45rem 1rem;
  font-size: var(--t-sm);
  font-weight: 600;
  color: var(--c-ink);
  background: var(--c-base);
  border: 1px solid var(--c-border);
  border-radius: var(--r-full);
  transition: all var(--dur) var(--ease);
}

.e404__cats-list a:hover {
  border-color: var(--c-primary);
  background: var(--c-primary-tint);
  transform: translateY(-2px);
}

/* ══════════════════════════════════════════════════════════════════════════
   KARTU KETERANGAN DI DALAM KONTEN
   ══════════════════════════════════════════════════════════════════════════ */

/*
 * Dipakai lewat blok Kolom dengan kelas tambahan `infogrid`, supaya keterangan
 * seperti kontak, alamat, dan jam operasional tampil sebagai kartu sejajar
 * alih-alih daftar teks yang menggantung. Stylesheet blok inti WordPress tidak
 * dimuat di tema ini, jadi tata letak kolomnya digambar di sini.
 */
/*
 * Jumlah kolom mengikuti isi, bukan dipaksa dua. Halaman Kontak memakai tiga
 * kartu; dengan `repeat(2, …)` kartu ketiga turun sendirian ke baris kedua dan
 * melar selebar setengah halaman.
 */
.prose .infogrid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 16rem), 1fr));
  gap: var(--s-4);
}

.prose .infogrid > .wp-block-column {
  padding: var(--s-5);
  background: var(--c-surface-2);
  border: 1px solid var(--c-border);
  border-radius: var(--r-lg);
}

.prose .infogrid h3 {
  margin: 0 0 0.5rem;
  font-family: var(--f-display);
  font-size: 1.0625rem;
  font-weight: 700;
  letter-spacing: -0.01em;
  color: var(--c-ink-deep);
}

.prose .infogrid p {
  margin: 0;
  font-size: var(--t-sm);
  line-height: 1.7;
}

.prose .infogrid p + p {
  margin-top: 0.5rem;
}

.prose .infogrid strong {
  display: block;
  color: var(--c-ink-deep);
}

@media (max-width: 640px) {
  .prose .infogrid {
    grid-template-columns: 1fr;
  }
}

/* ══════════════════════════════════════════════════════════════════════════
   LOKASI — peta + panel alamat
   ══════════════════════════════════════════════════════════════════════════ */

/*
 * Peta berdampingan dengan panel alamat, bukan berdiri sendiri selebar
 * halaman. Sebagai kotak tunggal, peta Google terbaca sebagai sisipan asing:
 * UI-nya milik Google, bukan milik situs ini. Dipasangkan dengan panel bergaya
 * tema, keduanya terbaca sebagai satu komponen.
 *
 * Alamat sengaja ditaruh di panel ini saja — sebelumnya ia juga tampil sebagai
 * kartu terpisah tepat di atas peta, jadi terbaca dua kali dalam satu layar.
 *
 * Keamanan: mu-plugins/10-tms-security.php sudah mengizinkan google.com pada
 * `frame-src`, jadi CSP tidak perlu dilonggarkan.
 */
.lokasi {
  display: grid;
  grid-template-columns: minmax(0, 1.75fr) minmax(0, 1fr);
  overflow: hidden;
  background: var(--c-base);
  border: 1px solid var(--c-border);
  border-radius: var(--r-lg);
}

.lokasi__peta {
  position: relative;
  min-height: 22rem;
  background: var(--c-surface);
}

.lokasi__peta iframe {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  border: 0;
  /* Menimpa .prose iframe { border-radius } — sudut diurus pembungkusnya. */
  border-radius: 0;
}

.lokasi__info {
  display: flex;
  flex-direction: column;
  justify-content: center;
  padding: var(--s-6);
  background: var(--c-surface-2);
  border-left: 1px solid var(--c-border);
}

.lokasi__label {
  margin: 0 0 0.35rem;
  font-family: var(--f-display);
  font-size: var(--t-xs);
  font-weight: 700;
  letter-spacing: 0.09em;
  text-transform: uppercase;
  color: var(--c-primary-deep);
}

.lokasi__nama {
  margin: 0 0 0.35rem;
  font-family: var(--f-display);
  font-size: var(--t-md);
  font-weight: 800;
  line-height: 1.3;
  color: var(--c-ink-deep);
}

.lokasi__alamat {
  margin: 0;
  font-size: var(--t-sm);
  font-style: normal;
  line-height: 1.7;
  color: var(--c-ink-soft);
}

.lokasi__aksi {
  display: flex;
  flex-wrap: wrap;
  gap: 0.6rem;
  margin-top: var(--s-5);
}

.lokasi__aksi .btn {
  flex: 1 1 9rem;
  padding-inline: 1rem;
}

@media (max-width: 860px) {
  .lokasi {
    grid-template-columns: 1fr;
  }

  .lokasi__peta {
    min-height: 18rem;
  }

  .lokasi__info {
    border-left: 0;
    border-top: 1px solid var(--c-border);
  }
}

/* ══════════════════════════════════════════════════════════════════════════
   AJAKAN PENUTUP HALAMAN
   ══════════════════════════════════════════════════════════════════════════ */

/*
 * Halaman konten sebelumnya berhenti mendadak: paragraf terakhir, lalu ruang
 * kosong ratusan piksel, lalu footer. Pita ini menutup halaman dengan langkah
 * berikutnya yang jelas sekaligus menyeragamkan jarak ke footer di semua
 * halaman. Versi padat dari bagian CTA beranda — gaya beranda ada di home.css
 * yang hanya dimuat di beranda.
 */
.sec-pagecta {
  padding-block: 0 clamp(3rem, 6vw, 5rem);
}

.pagecta {
  position: relative;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: var(--s-6);
  padding: clamp(1.75rem, 3.5vw, 2.75rem) clamp(1.5rem, 3.5vw, 3rem);
  overflow: hidden;
  color: #fff;
  background: var(--c-ink-deep);
  border-radius: var(--r-xl);
}

/* Semburat kuning tipis supaya pita tidak terasa sebagai kotak hitam polos. */
.pagecta::after {
  content: "";
  position: absolute;
  top: -60%;
  right: -10%;
  width: 26rem;
  height: 26rem;
  background: radial-gradient(circle, rgba(244, 183, 17, 0.28), transparent 62%);
  pointer-events: none;
}

.pagecta__text {
  position: relative;
  flex: 1 1 22rem;
  min-width: 0;
}

.pagecta__title {
  font-size: clamp(1.3rem, 2.4vw, 1.75rem);
  line-height: 1.2;
  letter-spacing: -0.02em;
  color: #fff;
}

.pagecta__desc {
  margin-top: 0.6rem;
  font-size: var(--t-sm);
  line-height: 1.65;
  color: rgba(255, 255, 255, 0.72);
}

.pagecta__actions {
  position: relative;
  display: flex;
  flex-wrap: wrap;
  gap: 0.6rem;
}

@media (max-width: 640px) {
  .pagecta {
    text-align: left;
  }

  .pagecta__actions {
    width: 100%;
  }

  .pagecta__btn {
    flex: 1 1 100%;
  }
}

/* ══════════════════════════════════════════════════════════════════════════
   PENYESUAIAN GERAK
   ══════════════════════════════════════════════════════════════════════════ */
@media (prefers-reduced-motion: reduce) {
  .navigation.pagination a.page-numbers:hover,
  .e404__cats-list a:hover,
  .single__tags a:hover {
    transform: none;
  }
}
