/* ==========================================================================
   TokoATK — Design System
   Supplier & distributor ATK / peralatan kantor untuk kebutuhan B2B
   ========================================================================== */

:root {
  /* Brand */
  --primary: #550000;
  --primary-dark: #3a0000;
  --primary-tint: #f4e9e9;
  --secondary: #ff0000;
  --white: #ffffff;

  /* Neutrals */
  --ink: #221a19;
  --text-dark: #221a19;
  --text-muted: #6b5f5d;
  --bg-soft: #f7e2df;
  --bg-soft-2: #f0cec8;
  --line: #e6c9c4;

  /* Gradients (brand) */
  --gradient-primary: linear-gradient(135deg, #550000 0%, #ff0000 100%);
  --gradient-primary-soft: linear-gradient(135deg, rgba(85, 0, 0, .14) 0%, rgba(255, 0, 0, .14) 100%);
  --gradient-primary-wash: linear-gradient(135deg, rgba(85, 0, 0, .10) 0%, rgba(255, 0, 0, .10) 100%);
  --gradient-section-soft: linear-gradient(175deg, #fbe9e6 0%, #f3d2cc 100%);
  --gradient-hero: linear-gradient(175deg, #f8dedb 0%, #fdf5f4 55%, #ffffff 100%);

  /* System */
  --border-radius: 12px;
  --border-radius-sm: 8px;
  --border-radius-lg: 20px;
  --transition: .35s cubic-bezier(.4, 0, .2, 1);
  --ease-bounce: cubic-bezier(.34, 1.56, .64, 1);
  --ease-smooth: cubic-bezier(.22, 1, .36, 1);
  --shadow-sm: 0 2px 10px rgba(48, 10, 10, .06);
  --shadow-md: 0 10px 30px rgba(48, 10, 10, .10);
  --shadow-lg: 0 20px 50px rgba(48, 10, 10, .16);
  --shadow-glow: 0 16px 34px rgba(255, 0, 0, .16), 0 6px 14px rgba(85, 0, 0, .12);
  --container-pad: clamp(1rem, 4vw, 2rem);
}

/* ---------- Base ---------- */
* {
  box-sizing: border-box;
}

@media (prefers-reduced-motion: no-preference) {
  html {
    scroll-behavior: smooth;
  }
}

/* Safety net: mencegah horizontal scroll tak disengaja pada mobile.
   Hanya diterapkan pada <html>, BUKAN <body> — overflow-x pada <body>
   diketahui merusak position: sticky pada elemen turunannya (navbar
   jadi ikut tergeser saat scroll). Akar masalah overflow tetap
   diperbaiki satu per satu di bawah; ini hanya lapisan pengaman. */
html {
  max-width: 100%;
  overflow-x: hidden;
}

body {
  font-family: 'Poppins', sans-serif;
  color: var(--text-dark);
  background: linear-gradient(180deg, #fff7f6 0%, #fbe6e3 100%);
  font-weight: 400;
  line-height: 1.65;
  -webkit-font-smoothing: antialiased;
}

h1,
h2,
h3,
h4,
h5,
h6 {
  font-family: 'Poppins', sans-serif;
  font-weight: 700;
  color: var(--ink);
  letter-spacing: -.01em;
  margin-bottom: 0;
}

h1 {
  font-weight: 800;
  letter-spacing: -.02em;
}

p {
  color: var(--text-muted);
}

a {
  text-decoration: none;
  color: inherit;
  transition: color var(--transition);
}

img {
  max-width: 100%;
  height: auto;
  display: block;
}

::selection {
  background: var(--primary);
  color: var(--white);
}

:focus-visible {
  outline: 3px solid var(--secondary);
  outline-offset: 2px;
}

.section {
  padding: clamp(3.5rem, 6vw, 6rem) 0;
  position: relative;
}

.section-soft {
  background: var(--gradient-section-soft);
}

/* Reusable brand gradient wash — used on About Singkat, Why Choose Us, Kategori Produk, Testimoni */
.section-about,
.section-wash {
  position: relative;
  overflow: hidden;
  background: #550000;
}

.section-about::before,
.section-wash::before {
  content: "";
  position: absolute;
  inset: 0;
  background: var(--gradient-primary-wash);
  z-index: 0;
}

.section-about::after,
.section-wash::after {
  content: "";
  position: absolute;
  top: -140px;
  left: -120px;
  width: 380px;
  height: 380px;
  border-radius: 50%;
  background: radial-gradient(closest-side, rgba(255, 0, 0, .18), transparent);
  z-index: 0;
}

.section-about>.container-xl,
.section-wash>.container-xl {
  position: relative;
  z-index: 1;
}

.section-wash--alt::after {
  top: auto;
  left: auto;
  bottom: -140px;
  right: -120px;
}

/* Kontras teks & tautan di atas background gelap #550000
   (About Singkat, Kategori Produk, Why Choose Us, Testimoni) */
.section-about .section-title,
.section-wash .section-title {
  color: var(--white);
}

.section-about .section-sub,
.section-wash .section-sub {
  color: rgba(255, 255, 255, .78);
}

.section-about .btn-outline-atk,
.section-wash .btn-outline-atk {
  color: var(--white);
  border-color: rgba(255, 255, 255, .45);
}

.section-about .btn-outline-atk:hover,
.section-about .btn-outline-atk:focus-visible,
.section-wash .btn-outline-atk:hover,
.section-wash .btn-outline-atk:focus-visible {
  background: var(--white);
  color: var(--primary);
  border-color: var(--white);
}

.section-about .text-primary-atk,
.section-wash .text-primary-atk {
  color: var(--white) !important;
}

.section-about .text-primary-atk:hover,
.section-wash .text-primary-atk:hover {
  color: rgba(255, 255, 255, .75) !important;
}

.container-xl {
  max-width: 1320px;
  padding-left: clamp(1.25rem, 5vw, 4.5rem) !important;
  padding-right: clamp(1.25rem, 5vw, 4.5rem) !important;
}

/* ---------- Eyebrow / Kicker ---------- */
.eyebrow {
  display: inline-flex;
  align-items: center;
  gap: .5rem;
  font-size: .78rem;
  font-weight: 700;
  letter-spacing: .14em;
  text-transform: uppercase;
  color: var(--white);
  padding: .45rem 1rem;
  border: 1px solid transparent;
  background: var(--gradient-primary);
  border-radius: 100px;
  margin-bottom: 1rem;
  box-shadow: 0 8px 18px rgba(255, 0, 0, .22);
  transition: transform var(--transition), box-shadow var(--transition);
}

.eyebrow:hover {
  transform: translateY(-2px);
  box-shadow: 0 12px 24px rgba(255, 0, 0, .3);
}

.section-head {
  max-width: 680px;
  margin-bottom: 2.75rem;
}

.section-head.center {
  margin-left: auto;
  margin-right: auto;
  text-align: center;
}

/* Varian lebar penuh: dipakai saat section-head berisi link "Lihat Semua"
   agar link tersebut terdorong ke sisi kanan section, bukan menempel ke judul */
.section-head--wide {
  max-width: none;
  width: 100%;
}

.section-head--wide>a {
  white-space: nowrap;
}

.section-title {
  font-size: clamp(1.75rem, 3vw, 2.5rem);
  margin-bottom: .9rem;
}

.section-sub {
  font-size: 1.02rem;
  color: var(--text-muted);
  margin-bottom: 0;
}

/* ---------- Buttons ---------- */
.btn {
  font-weight: 600;
  border-radius: 100px;
  padding: .85rem 1.7rem;
  font-size: .95rem;
  transition: var(--transition);
  border: 1px solid transparent;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: .5rem;
  white-space: nowrap;
}

.btn-primary-atk {
  background: var(--primary);
  color: var(--white);
  border-color: var(--primary);
}

.btn-primary-atk:hover,
.btn-primary-atk:focus-visible {
  background: var(--primary-dark);
  border-color: var(--primary-dark);
  color: var(--white);
  transform: translateY(-2px);
  box-shadow: var(--shadow-md);
}

.btn-outline-atk {
  background: transparent;
  color: var(--primary);
  border-color: var(--primary);
}

.btn-outline-atk:hover,
.btn-outline-atk:focus-visible {
  background: var(--primary);
  color: var(--white);
  transform: translateY(-2px);
}

.btn-white-atk {
  background: var(--white);
  color: var(--primary);
  border-color: var(--white);
}

.btn-white-atk:hover {
  background: transparent;
  color: var(--white);
  border-color: var(--white);
}

.btn-wa {
  background: var(--secondary);
  color: var(--white);
  border-color: var(--secondary);
}

.btn-wa:hover,
.btn-wa:focus-visible {
  background: #d40000;
  border-color: #d40000;
  color: var(--white);
  transform: translateY(-2px);
  box-shadow: 0 12px 28px rgba(255, 0, 0, .28);
}

.btn-sm-atk {
  padding: .6rem 1.25rem;
  font-size: .85rem;
}

/* ==========================================================================
   NAVBAR
   ========================================================================== */
.atk-header {
  position: sticky;
  top: 0;
  z-index: 1040;
  background: rgba(255, 249, 248, .9);
  backdrop-filter: blur(10px);
  border-bottom: 1px solid var(--line);
}

.atk-topbar {
  background: var(--primary);
  color: rgba(255, 255, 255, .9);
  font-size: .8rem;
}

.atk-topbar a {
  color: var(--white);
}

.atk-topbar .divider {
  opacity: .35;
}

.navbar-atk {
  padding: .9rem 0;
}

.navbar-brand-atk {
  display: flex;
  align-items: center;
  gap: .6rem;
  font-family: 'Poppins', sans-serif;
  font-weight: 800;
  font-size: 1.35rem;
  color: var(--ink);
  line-height: 1;
}

.navbar-brand-atk .mark {
  width: 42px;
  height: 42px;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
}

.navbar-brand-atk .mark img {
  width: 100%;
  height: 100%;
  object-fit: contain;
  display: block;
}

.navbar-brand-atk small {
  display: block;
  margin-top: 4px;
  font-size: .65rem;
  font-weight: 500;
  line-height: 1.2;
  color: var(--muted);
}

.navbar-atk .nav-link {
  font-weight: 500;
  font-size: .94rem;
  color: var(--ink);
  padding: .6rem .95rem !important;
  position: relative;
}

.navbar-atk .nav-link:hover,
.navbar-atk .nav-link.active {
  color: var(--primary);
}

.navbar-atk .nav-link.active::after {
  content: "";
  position: absolute;
  left: .95rem;
  right: .95rem;
  bottom: .15rem;
  height: 2px;
  background: var(--secondary);
  border-radius: 2px;
}

.dropdown-menu-atk {
  border: 1px solid var(--line);
  border-radius: var(--border-radius);
  box-shadow: var(--shadow-md);
  padding: .6rem;
}

.dropdown-menu-atk .dropdown-item {
  border-radius: 8px;
  padding: .55rem .8rem;
  font-size: .92rem;
  font-weight: 500;
}

.dropdown-menu-atk .dropdown-item:hover {
  background: var(--primary-tint);
  color: var(--primary);
}

.navbar-cta {
  display: flex;
  align-items: center;
  gap: .6rem;
}

/* Hamburger: pastikan area sentuh nyaman (~44px) pada mobile & tablet */
@media (max-width: 991.98px) {
  .navbar-toggler {
    padding: .55rem .65rem;
    min-width: 44px;
    min-height: 44px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
  }
}

/* ==========================================================================
   HERO
   ========================================================================== */

.hero-atk {
  position: relative;
  overflow: hidden;

  /*
   * Background utama Hero
   * Foto berada di belakang seluruh konten Hero.
   */
  background-image:
    linear-gradient(90deg,
      rgba(255, 255, 255, .96) 0%,
      rgba(255, 255, 255, .90) 38%,
      rgba(255, 255, 255, .62) 68%,
      rgba(255, 255, 255, .38) 100%),
    url("../img/hero/bg-hero-lp.webp");

  background-size: cover;
  background-position: center center;
  background-repeat: no-repeat;

  padding-top: clamp(2.75rem, 6vw, 5rem);
  padding-bottom: clamp(3rem, 6vw, 5rem);
}


/*
 * Pastikan seluruh isi Hero berada di atas background.
 */
.hero-atk>.container-xl {
  position: relative;
  z-index: 2;
}


/*
 * Dekorasi cahaya merah di kanan atas.
 * Tetap dipertahankan dari desain sebelumnya.
 */
.hero-atk::before {
  content: "";
  position: absolute;

  top: -120px;
  right: -160px;

  width: 480px;
  height: 480px;

  background:
    radial-gradient(closest-side,
      rgba(255, 0, 0, .14),
      transparent);

  z-index: 1;
  pointer-events: none;
}


/*
 * Dekorasi warna merah gelap di kiri bawah.
 * Tetap dipertahankan dari desain sebelumnya.
 */
.hero-atk::after {
  content: "";
  position: absolute;

  bottom: -160px;
  left: -140px;

  width: 420px;
  height: 420px;

  background:
    radial-gradient(closest-side,
      rgba(85, 0, 0, .10),
      transparent);

  z-index: 1;
  pointer-events: none;
}


/* ---------- Hero Text ---------- */

.hero-badges {
  display: flex;
  flex-wrap: wrap;
  gap: .5rem 1.75rem;
  margin-top: 1.9rem;
}

.hero-badge {
  display: flex;
  align-items: center;
  gap: .5rem;

  font-size: .85rem;
  font-weight: 600;

  color: var(--ink);
}

.hero-badge i {
  color: var(--primary);
  font-size: 1rem;
}

.hero-title {
  font-size: clamp(2.1rem, 4vw, 3.15rem);
  line-height: 1.12;
  margin-bottom: 1.15rem;
}

.hero-title .accent {
  color: var(--primary);
}

.hero-sub {
  font-size: 1.08rem;
  max-width: 540px;
  margin-bottom: 2rem;
}

.hero-actions {
  display: flex;
  flex-wrap: wrap;
  gap: .9rem;
}


/* ---------- Star Border Frame on Hero Visual ---------- */

.hero-frame-star {
  position: relative;
  isolation: isolate;

  border-radius: var(--border-radius-lg);
  padding: 3px;
  overflow: hidden;
}

.hero-frame-star::before,
.hero-frame-star::after {
  content: "";
  position: absolute;

  z-index: 0;

  width: 300%;
  height: 55%;

  border-radius: 50%;

  opacity: .9;

  background:
    radial-gradient(circle,
      rgba(255, 60, 40, .95),
      rgba(255, 60, 40, 0) 72%);

  will-change: transform, opacity;
}

.hero-frame-star::before {
  bottom: -14px;
  right: -250%;

  animation:
    star-movement-bottom 3.6s linear infinite;
}

.hero-frame-star::after {
  top: -14px;
  left: -250%;

  animation:
    star-movement-top 3.6s linear infinite;
}

.hero-frame-star .hero-img-wrap {
  position: relative;
  z-index: 1;
}


@keyframes star-movement-bottom {
  0% {
    transform: translate(0%, 0%);
    opacity: 1;
  }

  100% {
    transform: translate(-100%, 0%);
    opacity: 0;
  }
}


@keyframes star-movement-top {
  0% {
    transform: translate(0%, 0%);
    opacity: 1;
  }

  100% {
    transform: translate(100%, 0%);
    opacity: 0;
  }
}


@media (prefers-reduced-motion: reduce) {

  .hero-frame-star::before,
  .hero-frame-star::after {
    animation: none;
    opacity: .4;
  }

}


/* ---------- Hero Visual ---------- */

.hero-visual {
  position: relative;
}

.hero-visual .hero-img-wrap {
  border-radius: var(--border-radius-lg);
  overflow: hidden;

  box-shadow: var(--shadow-lg);

  aspect-ratio: 4 / 3.1;
}


/* ---------- Hero Image Slider ---------- */

.hero-visual .hero-img-wrap {
  position: relative;

  border-radius: var(--border-radius-lg);
  overflow: hidden;

  box-shadow: var(--shadow-lg);

  aspect-ratio: 4 / 3.1;

  background: #f4e9e9;
}

.hero-visual .hero-img-wrap .hero-slide {
  position: absolute;

  inset: 0;

  width: 100%;
  height: 100%;

  object-fit: cover;

  opacity: 0;
  visibility: hidden;

  transform: scale(1.015);

  transition:
    opacity 1.2s cubic-bezier(.22, 1, .36, 1),
    transform 6s cubic-bezier(.22, 1, .36, 1),
    visibility 0s linear 1.2s;
}

.hero-visual .hero-img-wrap .hero-slide.is-active {
  opacity: 1;
  visibility: visible;

  transform: scale(1);

  transition:
    opacity 1.2s cubic-bezier(.22, 1, .36, 1),
    transform 6s cubic-bezier(.22, 1, .36, 1),
    visibility 0s linear 0s;
}


/* Accessibility: kurangi animasi jika user memilih reduced motion */

@media (prefers-reduced-motion: reduce) {

  .hero-visual .hero-img-wrap .hero-slide {
    transition: opacity .3s ease;
    transform: none;
  }

}


/* ---------- Hero Slider Navigation ---------- */

.hero-slider__arrow {
  position: absolute;

  top: 50%;
  z-index: 5;

  width: 42px;
  height: 70px;

  display: flex;
  align-items: center;
  justify-content: center;

  padding: 0;

  border: 0;
  border-radius: 8px;

  background: rgba(0, 0, 0, .12);

  color: rgba(255, 255, 255, .72);

  font-size: 1.45rem;

  transform: translateY(-50%);

  cursor: pointer;

  opacity: .45;

  transition:
    opacity .3s ease,
    background .3s ease,
    color .3s ease,
    transform .3s ease;
}

.hero-slider__arrow:hover {
  opacity: .9;

  background: rgba(0, 0, 0, .38);

  color: #fff;
}

.hero-slider__arrow:active {
  transform: translateY(-50%) scale(.95);
}

.hero-slider__arrow--prev {
  left: 14px;
}

.hero-slider__arrow--next {
  right: 14px;
}


/* ---------- Mobile ---------- */

@media (max-width: 576px) {

  .hero-atk {
    background-position: center center;

    /*
     * Pada mobile overlay sedikit lebih kuat
     * agar heading tetap mudah dibaca.
     */
    background-image:
      linear-gradient(180deg,
        rgba(255, 255, 255, .94) 0%,
        rgba(255, 255, 255, .86) 55%,
        rgba(255, 255, 255, .72) 100%),
      url("../img/hero/bg-hero-lp.webp");
  }

  .hero-slider__arrow {
    width: 34px;
    height: 54px;

    font-size: 1.15rem;

    opacity: .35;
  }

  .hero-slider__arrow--prev {
    left: 8px;
  }

  .hero-slider__arrow--next {
    right: 8px;
  }

}

.po-ticket {
  position: absolute;
  left: -1.25rem;
  bottom: -1.5rem;
  width: 245px;
  background: var(--white);
  border-radius: 14px;
  box-shadow: var(--shadow-lg);
  padding: 1.1rem 1.15rem;
  border: 1px solid var(--line);
}

.po-ticket .po-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  font-size: .68rem;
  font-weight: 700;
  letter-spacing: .08em;
  text-transform: uppercase;
  color: var(--text-muted);
  border-bottom: 1px dashed var(--line);
  padding-bottom: .6rem;
  margin-bottom: .6rem;
}

.po-ticket .po-head span.tag {
  background: var(--primary-tint);
  color: var(--primary);
  padding: .15rem .5rem;
  border-radius: 100px;
  letter-spacing: 0;
  text-transform: none;
  font-size: .68rem;
}

.po-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  font-size: .82rem;
  margin-bottom: .4rem;
}

.po-row span:first-child {
  color: var(--text-muted);
}

.po-row span:last-child {
  font-weight: 600;
  color: var(--ink);
}

.po-status {
  margin-top: .7rem;
  display: flex;
  align-items: center;
  gap: .4rem;
  font-size: .75rem;
  font-weight: 700;
  color: #1a7a3c;
}

.po-status i {
  font-size: .9rem;
}

.hero-stat-chip {
  position: absolute;
  top: 1.1rem;
  right: -.9rem;
  background: var(--primary);
  color: var(--white);
  border-radius: 14px;
  padding: .85rem 1.1rem;
  box-shadow: var(--shadow-lg);
  min-width: 150px;
}

.hero-stat-chip .num {
  font-size: 1.4rem;
  font-weight: 800;
  line-height: 1;
}

.hero-stat-chip .lbl {
  font-size: .72rem;
  opacity: .85;
  margin-top: .2rem;
}

/* ==========================================================================
   CATEGORY RAIL
   ========================================================================== */
.cat-scroller {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 1rem;
}

/* Tablet: 2 kolom */
@media (max-width: 991.98px) {
  .cat-scroller {
    grid-template-columns: repeat(2, 1fr);
    gap: 1rem;
  }
}

/* Mobile: 1 kolom — 1 card per baris berurutan */
@media (max-width: 767.98px) {
  .cat-scroller {
    grid-template-columns: 1fr;
    gap: 1.15rem;
  }
}

.cat-card {
  position: relative;
  background: var(--white);
  border: 1px solid var(--line);
  border-radius: 18px;
  display: flex;
  flex-direction: column;
  height: 100%;
  overflow: hidden;
  transform-style: preserve-3d;
  will-change: transform;
  box-shadow: 0 10px 30px rgba(48, 10, 10, .07);
  transition: transform .15s ease-out, box-shadow .3s ease, border-color .3s ease;
  backface-visibility: hidden;
}

.cat-card:hover {
  border-color: rgba(255, 0, 0, .16);
  box-shadow: 0 24px 50px rgba(48, 10, 10, .14), 0 0 0 1px rgba(255, 0, 0, .04);
}

/* ---------- Foto kategori ---------- */

.cat-image {
  position: relative;

  width: 100%;
  height: 190px;

  overflow: hidden;

  background: #f5eeee;

  transform-style: preserve-3d;

  transform: translateZ(20px);
}

/* =========================================================
   ABOUT FEATURE CARDS
   Terpisah dari .cat-card agar tidak terkena efek 3D
   ========================================================= */

.about-feature-card {
  position: relative;

  min-height: 145px;

  padding: 1.25rem 1rem;

  background: var(--white);

  border: 1px solid var(--line);

  border-radius: 16px;

  display: flex;
  flex-direction: column;

  align-items: center;
  justify-content: center;

  text-align: center;

  text-decoration: none;

  color: inherit;

  box-shadow:
    0 8px 24px rgba(48, 10, 10, .06);

  transition:
    transform .3s ease,
    box-shadow .3s ease,
    border-color .3s ease;
}


/* Hover card About */
.about-feature-card:hover {
  transform: translateY(-5px);

  border-color: rgba(255, 0, 0, .14);

  box-shadow:
    0 16px 32px rgba(48, 10, 10, .10);

  color: inherit;
  text-decoration: none;
}


/* =========================================================
   ICON ABOUT
   ========================================================= */

.about-feature-icon {
  width: 46px;
  height: 46px;

  margin-bottom: .75rem;

  border-radius: 12px;

  background: var(--gradient-primary);

  color: var(--white);

  display: flex;
  align-items: center;
  justify-content: center;

  font-size: 1.05rem;

  box-shadow:
    0 7px 16px rgba(255, 0, 0, .18);

  transition:
    transform .3s ease,
    box-shadow .3s ease;
}


/* Hover icon */
.about-feature-card:hover .about-feature-icon {
  transform: scale(1.06);

  box-shadow:
    0 10px 22px rgba(255, 0, 0, .25);
}


/* =========================================================
   NAMA KATEGORI ABOUT
   ========================================================= */

.about-feature-name {
  margin: 0;

  font-size: .82rem;

  font-weight: 700;

  line-height: 1.3;

  color: var(--ink);
}


/* =========================================================
   REDUCED MOTION
   ========================================================= */

@media (prefers-reduced-motion: reduce) {

  .about-feature-card,
  .about-feature-icon {
    transition: none;
  }

  .about-feature-card:hover,
  .about-feature-card:hover .about-feature-icon {
    transform: none;
  }

}


/* =========================================================
   ABOUT DEPTH CAROUSEL
   Kartu tersusun berlapis (depth) & bertransisi otomatis
   ========================================================= */

.about-carousel {
  --step-x: 148px;
  --step-y: 10px;
  --step-scale: .15;
  --card-w: 172px;

  position: relative;

  height: 240px;

  margin: 0 auto;

  perspective: 1400px;
}

.about-carousel__stage {
  position: relative;

  width: 100%;
  height: 100%;

  transform-style: preserve-3d;
}

.about-carousel__stage .about-feature-card {
  position: absolute;
  top: 50%;
  left: 50%;

  width: var(--card-w);
  margin: 0;

  cursor: pointer;

  transform:
    translate(-50%, -50%) translateX(calc(var(--pos, 0) * var(--step-x))) translateY(calc(var(--abs, 0) * var(--step-y))) scale(calc(1 - (var(--abs, 0) * var(--step-scale))));

  opacity: calc(1 - (var(--abs, 0) * .38));

  z-index: calc(10 - var(--abs, 0));

  pointer-events: auto;

  transition:
    transform .7s var(--ease-smooth),
    opacity .7s var(--ease-smooth),
    box-shadow .3s ease,
    border-color .3s ease;
}

.about-carousel__stage .about-feature-card[data-active="true"] {
  pointer-events: auto;

  box-shadow:
    0 20px 40px rgba(48, 10, 10, .16);

  border-color: rgba(255, 0, 0, .18);
}

.about-carousel__stage .about-feature-card[data-hidden="true"] {
  opacity: 0 !important;
  pointer-events: none !important;
}

.about-carousel__dots {
  position: absolute;
  left: 50%;
  bottom: -6px;

  transform: translateX(-50%);

  display: flex;
  align-items: center;
  gap: .4rem;
}

.about-carousel__dot {
  width: 7px;
  height: 7px;

  border: none;
  border-radius: 50%;

  background: var(--line);

  padding: 0;
  cursor: pointer;

  transition: background .3s ease, transform .3s ease, width .3s ease;
}

.about-carousel__dot.is-active {
  width: 20px;
  border-radius: 5px;

  background: var(--gradient-primary);
}

@media (max-width: 767.98px) {
  .about-carousel {
    --step-x: 96px;
    --step-y: 8px;
    --card-w: 140px;

    height: 200px;
  }
}

@media (max-width: 575.98px) {
  .about-carousel {
    --step-x: 64px;
    --card-w: 122px;

    height: 180px;
  }

  .about-carousel__stage .about-feature-card[data-abs="2"] {
    opacity: 0 !important;
    pointer-events: none !important;
  }
}

@media (prefers-reduced-motion: reduce) {
  .about-carousel__stage .about-feature-card {
    transition: opacity .3s ease;
  }
}

/* ---------- Varian lebih besar & terpusat (khusus wrapper .about-carousel-wide,
   dipakai di tentang-kami.html — tidak memengaruhi carousel yang sama di index.html) ---------- */
.about-carousel-wide {
  max-width: 620px;
}

.about-carousel-wide .about-carousel {
  --step-x: 168px;
  --step-y: 12px;
  --step-scale: .15;
  --card-w: 198px;
  height: 272px;
}

.about-carousel-wide .about-feature-card {
  min-height: 164px;
  padding: 1.5rem 1.15rem;
}

.about-carousel-wide .about-feature-icon {
  width: 54px;
  height: 54px;
  border-radius: 14px;
  font-size: 1.25rem;
  margin-bottom: .9rem;
}

.about-carousel-wide .about-feature-name {
  font-size: .94rem;
}

@media (max-width: 767.98px) {
  .about-carousel-wide .about-carousel {
    --step-x: 110px;
    --step-y: 9px;
    --card-w: 160px;
    height: 226px;
  }

  .about-carousel-wide .about-feature-icon {
    width: 48px;
    height: 48px;
    font-size: 1.1rem;
  }
}

@media (max-width: 575.98px) {
  .about-carousel-wide .about-carousel {
    --step-x: 74px;
    --card-w: 138px;
    height: 200px;
  }
}

.cat-image::after {
  content: "";

  position: absolute;
  inset: 0;

  background:
    linear-gradient(to bottom,
      rgba(0, 0, 0, 0) 40%,
      rgba(0, 0, 0, .18) 100%);

  pointer-events: none;

  z-index: 2;
}

.cat-image img {
  display: block;

  width: 100%;
  height: 100%;

  object-fit: cover;

  transform:
    translateZ(0) scale(1.02);

  transition:
    transform .7s cubic-bezier(.22, 1, .36, 1);
}

.cat-card:hover .cat-image img {
  transform:
    translateZ(12px) scale(1.08);
}

.cat-image .cat-icon {
  position: absolute;
  bottom: 14px;
  left: 14px;
  z-index: 3;
  width: 48px;
  height: 48px;
  border-radius: 12px;
  background: var(--gradient-primary);
  color: var(--white);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 1.25rem;
  box-shadow: 0 8px 18px rgba(255, 0, 0, .22);
  transform: translateZ(35px);
  transition: transform .25s ease, box-shadow .25s ease;
}

.cat-card:hover .cat-image .cat-icon {
  transform: translateZ(48px) scale(1.05);
  box-shadow: 0 12px 26px rgba(255, 0, 0, .32);
}

/* ---------- Isi card ---------- */
.cat-content {
  position: relative;
  padding: 1.35rem;
  flex: 1;
  display: flex;
  flex-direction: column;
  transform-style: preserve-3d;
}

.cat-card .cat-name {
  position: relative;
  z-index: 2;

  font-weight: 700;
  font-size: 1rem;
  color: var(--ink);

  margin-bottom: .15rem;

  transform: translateZ(30px);

  transition: transform .25s ease;
}

.cat-card .cat-desc {
  position: relative;
  z-index: 2;

  font-size: .83rem;
  color: var(--text-muted);

  margin-bottom: 0;

  transform: translateZ(25px);

  transition: transform .25s ease;
}

.cat-card .cat-link {
  position: relative;
  z-index: 2;

  margin-top: auto;

  font-size: .83rem;
  font-weight: 600;

  color: var(--primary);

  display: inline-flex;
  align-items: center;

  gap: .35rem;

  transform: translateZ(35px);

  transition:
    color var(--transition),
    transform .25s ease;
}

.cat-card:hover .cat-link {
  color: var(--secondary);

  transform: translateZ(42px);
}

.cat-card .cat-link i {
  transition:
    transform .4s var(--ease-bounce);
}

.cat-card:hover .cat-link i {
  transform: translateX(5px);
}

.cat-card::before {
  content: "";

  position: absolute;

  top: -100px;
  left: -100px;

  width: 220px;
  height: 220px;

  border-radius: 50%;

  background:
    radial-gradient(circle,
      rgba(255, 255, 255, .42) 0%,
      rgba(255, 255, 255, 0) 70%);

  opacity: 0;

  pointer-events: none;

  transform: translateZ(60px);

  transition: opacity .3s ease;

  z-index: 10;
}

.cat-card:hover::before {
  opacity: 1;
}

@media (hover: none),
(pointer: coarse) {

  .cat-card {
    transform:
      perspective(1000px) rotateX(0) rotateY(0) translateZ(0) !important;
  }

  .cat-card:hover {
    transform:
      perspective(1000px) rotateX(0) rotateY(0) translateZ(0);
  }

  .cat-card:hover .cat-image img {
    transform: scale(1.04);
  }
}

@media (prefers-reduced-motion: reduce) {

  .cat-card {
    transform: none !important;
    transition: none;
  }

  .cat-card *,
  .cat-card:hover * {
    transform: none !important;
    transition: none;
  }
}

/* ================================================================
   MOBILE CATALOG — 1 card per baris, full width
   Card tampil landscape proporsional (gambar atas, konten bawah)
   ================================================================ */
@media (max-width: 767.98px) {

  /* 1 card per baris berurutan seperti section Mengapa Memilih Kami */
  .cat-scroller {
    grid-template-columns: 1fr !important;
    gap: 1.15rem !important;
  }

  /* Pastikan card tetap column (gambar atas, konten bawah) */
  .cat-card {
    flex-direction: column !important;
    height: auto !important;
    transform: none !important;
    transform-style: flat !important;
  }

  /* Gambar: full width, tinggi proporsional landscape */
  .cat-image {
    width: 100% !important;
    flex: none !important;
    height: 195px !important;
    transform: none !important;
    transform-style: flat !important;
  }

  /* Gambar: nonaktifkan efek 3D */
  .cat-image img {
    transform: scale(1.02) !important;
    transition: transform .5s ease !important;
  }

  .cat-card:hover .cat-image img {
    transform: scale(1.06) !important;
  }

  /* Icon: posisi di pojok kiri bawah gambar */
  .cat-image .cat-icon,
  .cat-card .cat-icon {
    position: absolute !important;
    bottom: 12px !important;
    left: 14px !important;
    transform: none !important;
    margin-bottom: 0 !important;
  }

  /* Konten card */
  .cat-content {
    padding: 1.25rem 1.35rem 1.4rem !important;
  }

  /* Konten: normal, semua transform dimatikan */
  .cat-card .cat-name {
    font-size: 1.08rem !important;
    transform: none !important;
    margin-bottom: .35rem !important;
  }

  .cat-card .cat-desc {
    font-size: .88rem !important;
    line-height: 1.55 !important;
    margin-bottom: .85rem !important;
    transform: none !important;
  }

  .cat-card .cat-link {
    font-size: .88rem !important;
    transform: none !important;
  }

  /* Matikan glow pseudo */
  .cat-card::before {
    display: none !important;
  }

  .cat-card:hover .cat-icon,
  .cat-card:hover .cat-name,
  .cat-card:hover .cat-desc,
  .cat-card:hover .cat-link {
    transform: none !important;
  }
}


/* ---------- Reason Card: kartu "Apa yang Bisa Kami Bantu?" di kontak.html
   (komponen baru & independen, tidak berbagi CSS dengan .cat-card sehingga
   tidak memengaruhi halaman lain) ---------- */
.reason-card {
  display: flex;
  align-items: flex-start;
  gap: .9rem;
  height: 100%;
  padding: 1.25rem 1.35rem;
  background: var(--white);
  border: 1px solid var(--line);
  border-radius: var(--border-radius);
  text-decoration: none;
  transition: transform .35s var(--ease-smooth), box-shadow .35s var(--ease-smooth), border-color var(--transition);
}

.reason-card:hover {
  transform: translateY(-5px);
  box-shadow: var(--shadow-glow);
  border-color: transparent;
  text-decoration: none;
}

.reason-card__icon {
  flex: 0 0 auto;
  width: 46px;
  height: 46px;
  border-radius: 12px;
  background: var(--gradient-primary);
  color: var(--white);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 1.05rem;
  box-shadow: 0 7px 16px rgba(255, 0, 0, .18);
  transition: transform .3s ease, box-shadow .3s ease;
}

.reason-card:hover .reason-card__icon {
  transform: scale(1.06);
  box-shadow: 0 10px 22px rgba(255, 0, 0, .25);
}

.reason-card__body {
  min-width: 0;
}

.reason-card__title {
  margin: 0 0 .3rem;
  font-weight: 700;
  font-size: .96rem;
  color: var(--ink);
  overflow-wrap: break-word;
}

.reason-card__desc {
  font-size: .84rem;
  line-height: 1.55;
  color: var(--text-muted);
  overflow-wrap: break-word;
}

@media (prefers-reduced-motion: reduce) {
  .reason-card {
    transition: none;
  }

  .reason-card:hover {
    transform: none;
  }

  .reason-card:hover .reason-card__icon {
    transform: none;
  }
}

/* ---------- Target Layanan: loop otomatis (khusus wrapper .target-loop,
   dipakai di tentang-kami.html — tidak memengaruhi .cat-card di halaman lain) ---------- */
.target-loop {
  overflow: hidden;
  -webkit-mask-image: linear-gradient(90deg, transparent, #000 6%, #000 94%, transparent);
  mask-image: linear-gradient(90deg, transparent, #000 6%, #000 94%, transparent);
}

.target-loop__track {
  display: flex;
  width: max-content;
  gap: 1rem;
  animation: target-loop-scroll 26s linear infinite;
}

.target-loop:hover .target-loop__track {
  animation-play-state: paused;
}

.target-loop__item {
  flex: 0 0 auto;
  width: clamp(128px, 15vw, 158px);
}

.target-loop__item .cat-card {
  height: 100%;
  padding: 1.35rem 1rem;
  align-items: center;
}

@keyframes target-loop-scroll {
  from {
    transform: translateX(0);
  }

  to {
    transform: translateX(-50%);
  }
}

@media (prefers-reduced-motion: reduce) {
  .target-loop__track {
    animation: none;
  }

  .target-loop {
    overflow-x: auto;
  }
}

/* ==========================================================================
   VALUE PROPS
   ========================================================================== */
.vp-card {
  padding: 1.75rem;
  height: 100%;
  border-radius: var(--border-radius);
  background: var(--white);
  border: 1px solid var(--line);
  position: relative;
  overflow: hidden;
  transition: transform .45s var(--ease-smooth), box-shadow .45s var(--ease-smooth), border-color var(--transition);
}

.vp-card::before {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  height: 4px;
  background: var(--gradient-primary);
  transform: scaleX(0);
  transform-origin: left;
  transition: transform .5s var(--ease-smooth);
}

.vp-card:hover::before {
  transform: scaleX(1);
}

.vp-card:hover {
  box-shadow: var(--shadow-glow);
  border-color: transparent;
  transform: translateY(-6px);
}

.vp-num {
  font-size: .95rem;
  font-weight: 800;
  letter-spacing: .08em;
  margin-bottom: .9rem;
  display: block;
  background: var(--gradient-primary);
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
}

.vp-card i.vp-icon {
  width: 56px;
  height: 56px;
  border-radius: 14px;
  font-size: 1.5rem;
  margin-bottom: 1.1rem;
  display: flex;
  align-items: center;
  justify-content: center;
  background: var(--gradient-primary);
  color: var(--white);
  box-shadow: 0 8px 20px rgba(255, 0, 0, .22);
  transition: transform .5s var(--ease-bounce), box-shadow var(--transition);
}

.vp-card:hover i.vp-icon {
  transform: scale(1.08) rotate(-4deg);
  box-shadow: 0 12px 26px rgba(255, 0, 0, .32);
}

.vp-card.text-center i.vp-icon {
  margin-left: auto;
  margin-right: auto;
}

.vp-card h3 {
  font-size: 1.08rem;
  margin-bottom: .5rem;
}

.vp-card p {
  font-size: .9rem;
  margin-bottom: 0;
}

/* ---------- Varian ringkas: kartu info kontak yang ditumpuk vertikal
   (khusus .vp-card--compact di kontak.html). Menimpa height:100% bawaan
   .vp-card supaya kartu tidak ikut meregang mengikuti tinggi kolom
   sebelahnya, dan padding dipadatkan agar tampil minimalis. Tidak
   memengaruhi .vp-card polos yang dipakai di grid halaman lain. ---------- */
.vp-card--compact {
  height: auto;
  padding: 1.1rem 1.35rem;
}

/* ==========================================================================
   VALUE PROPS — MARQUEE LOOP (transisi otomatis satu baris)
   ========================================================================== */

.vp-marquee {
  position: relative;

  overflow: hidden;

  margin: 0 clamp(-4.5rem, -5vw, -1.25rem);
  padding: .35rem 0;

  -webkit-mask-image: linear-gradient(90deg,
      transparent 0,
      #000 6%,
      #000 94%,
      transparent 100%);
  mask-image: linear-gradient(90deg,
      transparent 0,
      #000 6%,
      #000 94%,
      transparent 100%);
}

.vp-marquee__track {
  display: flex;
  width: max-content;
  will-change: transform;
  animation: vp-marquee-scroll 34s linear infinite;
}

.vp-marquee:hover .vp-marquee__track {
  animation-play-state: paused;
}

.vp-marquee__group {
  display: flex;
  flex-shrink: 0;
  gap: 1.5rem;

  padding: 0 clamp(1.25rem, 5vw, 4.5rem);
}

.vp-marquee .vp-card {
  flex: 0 0 auto;
  width: min(320px, 78vw);
}

@keyframes vp-marquee-scroll {
  from {
    transform: translateX(0);
  }

  to {
    transform: translateX(-50%);
  }
}

@media (max-width: 767.98px) {
  .vp-marquee__track {
    animation-duration: 22s;
  }

  .vp-marquee .vp-card {
    width: min(268px, 82vw);
  }
}

@media (prefers-reduced-motion: reduce) {
  .vp-marquee__track {
    animation: none;
  }

  .vp-marquee {
    overflow-x: auto;
  }

  .vp-marquee__group[aria-hidden="true"] {
    display: none;
  }
}

/* ==========================================================================
   PRODUCT CARDS
   ========================================================================== */
.product-card {
  background: var(--white);
  border: 1px solid var(--line);
  border-radius: var(--border-radius);
  overflow: hidden;
  height: 100%;
  display: flex;
  flex-direction: column;
  transition: var(--transition);
}

.product-card:hover {
  box-shadow: var(--shadow-md);
  transform: translateY(-4px);
  border-color: transparent;
}

.product-card .pc-img {
  aspect-ratio: 4/3;
  overflow: hidden;
  background: var(--bg-soft-2);
  position: relative;
}

.product-card .pc-img img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform .5s ease;
}

.product-card:hover .pc-img img {
  transform: scale(1.06);
}

.pc-cat {
  position: absolute;
  top: .85rem;
  left: .85rem;
  background: rgba(255, 255, 255, .92);
  color: var(--primary);
  font-size: .68rem;
  font-weight: 700;
  letter-spacing: .05em;
  text-transform: uppercase;
  padding: .3rem .65rem;
  border-radius: 100px;
}

.pc-body {
  padding: 1.15rem 1.25rem 1.35rem;
  display: flex;
  flex-direction: column;
  flex: 1;
}

.pc-body h3 {
  font-size: 1rem;
  margin-bottom: .4rem;
}

.pc-body h3 a {
  color: var(--ink);
}

.pc-body h3 a:hover {
  color: var(--primary);
}

.pc-body p {
  font-size: .85rem;
  margin-bottom: 1rem;
}

.pc-actions {
  margin-top: auto;
  display: flex;
  gap: .6rem;
}

.pc-actions .btn {
  flex: 1;
  padding: .6rem 1rem;
  font-size: .83rem;
}

/* ==========================================================================
   PACKAGE CARDS
   ========================================================================== */
.pkg-card {
  background: var(--white);
  border: 1px solid var(--line);
  border-radius: var(--border-radius-lg);
  padding: 2rem 1.85rem;
  height: 100%;
  display: flex;
  flex-direction: column;
  transition: transform .45s var(--ease-smooth), box-shadow .45s var(--ease-smooth), border-color var(--transition);
  position: relative;
  overflow: hidden;
}

.pkg-card::after {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  height: 4px;
  background: var(--gradient-primary);
  transform: scaleX(0);
  transform-origin: left;
  transition: transform .5s var(--ease-smooth);
}

.pkg-card:hover::after {
  transform: scaleX(1);
}

.pkg-card:hover {
  box-shadow: var(--shadow-glow);
  border-color: transparent;
  transform: translateY(-6px);
}

.pkg-card.featured {
  border-color: transparent;
  background: linear-gradient(150deg, var(--primary) 0%, var(--secondary) 140%);
  color: var(--white);
}

.pkg-card.featured::after {
  display: none;
}

.pkg-card.featured .pkg-target,
.pkg-card.featured p,
.pkg-card.featured li {
  color: rgba(255, 255, 255, .85);
}

.pkg-card.featured h3 {
  color: var(--white);
}

.pkg-card .pkg-tag {
  display: inline-block;
  font-size: .7rem;
  font-weight: 700;
  letter-spacing: .08em;
  text-transform: uppercase;
  color: var(--secondary);
  margin-bottom: .9rem;
}

.pkg-card.featured .pkg-tag {
  color: #ffd9d9;
}

.pkg-card h3 {
  font-size: 1.25rem;
  margin-bottom: .35rem;
}

.pkg-target {
  font-size: .82rem;
  color: var(--text-muted);
  margin-bottom: 1.1rem;
}

.pkg-card ul {
  list-style: none;
  padding: 0;
  margin-bottom: 1.5rem;
}

.pkg-card ul li {
  font-size: .88rem;
  color: var(--text-muted);
  padding: .4rem 0;
  border-top: 1px solid var(--line);
  display: flex;
  align-items: flex-start;
  gap: .5rem;
}

.pkg-card.featured ul li {
  border-color: rgba(255, 255, 255, .18);
}

.pkg-card ul li:first-child {
  border-top: none;
}

.pkg-card ul li i {
  color: var(--primary);
  margin-top: .2rem;
  font-size: .8rem;
}

.pkg-card.featured ul li i {
  color: #ffd9d9;
}

.pkg-card .btn {
  margin-top: auto;
  width: 100%;
}

/* ==========================================================================
   PROCUREMENT FLOW (Alur Pengadaan)
   ========================================================================== */
.flow-wrap {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 1.25rem;
  position: relative;
}

.flow-step {
  background: var(--white);
  border: 1px solid var(--line);
  border-radius: var(--border-radius);
  padding: 1.75rem 1.5rem;
  position: relative;
  transition: transform .5s var(--ease-bounce), box-shadow .45s var(--ease-smooth), border-color var(--transition);
}

.flow-step:hover {
  transform: translateY(-8px) scale(1.035);
  box-shadow: var(--shadow-glow);
  border-color: transparent;
}

.flow-step .flow-index {
  font-family: 'Poppins', sans-serif;
  font-size: 2.2rem;
  font-weight: 800;
  line-height: 1;
  margin-bottom: .75rem;
  background: var(--gradient-primary);
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
  opacity: .88;
}

.flow-step h3 {
  font-size: 1.02rem;
  margin-bottom: .45rem;
}

.flow-step p {
  font-size: .85rem;
  margin-bottom: 0;
}

.flow-step:not(:last-child)::after {
  content: "\F231";
  font-family: "bootstrap-icons";
  position: absolute;
  top: 2rem;
  right: -1.65rem;
  color: var(--secondary);
  opacity: .5;
  font-size: 1rem;
  z-index: 2;
  transition: opacity var(--transition);
}

.flow-step:hover:not(:last-child)::after {
  opacity: .9;
}

/* ---------- Entrance ala reactbits "Bounce Cards" ---------- */
.flow-wrap .flow-step.reveal {
  opacity: 0;
  transform: translateY(46px) scale(.7) rotate(var(--flow-rot, 0deg));
  transition: opacity .6s var(--ease-smooth), transform .85s var(--ease-bounce);
}

.flow-wrap .flow-step.reveal.is-visible {
  opacity: 1;
  transform: translateY(0) scale(1) rotate(0deg);
}

.flow-wrap .flow-step:nth-child(1) {
  --flow-rot: -7deg;
}

.flow-wrap .flow-step:nth-child(2) {
  --flow-rot: 6deg;
}

.flow-wrap .flow-step:nth-child(3) {
  --flow-rot: -5deg;
}

.flow-wrap .flow-step:nth-child(4) {
  --flow-rot: 7deg;
}

@media (max-width:991.98px) {
  .flow-step:not(:last-child)::after {
    display: none;
  }
}

/* ==========================================================================
   TESTIMONIALS
   ========================================================================== */
.testi-card {
  background: var(--white);
  border: 1px solid var(--line);
  border-radius: var(--border-radius);
  padding: 1.85rem;
  height: 100%;
  transition: transform .45s var(--ease-smooth), box-shadow .45s var(--ease-smooth), border-color var(--transition);
}

.testi-card:hover {
  transform: translateY(-5px);
  box-shadow: var(--shadow-glow);
  border-color: transparent;
}

.testi-stars {
  color: var(--secondary);
  font-size: .85rem;
  margin-bottom: .9rem;
}

.testi-card p.testi-text {
  font-size: .92rem;
  color: var(--ink);
  margin-bottom: 1.3rem;
  font-style: italic;
}

.testi-person {
  display: flex;
  align-items: center;
  gap: .75rem;
}

.testi-avatar {
  width: 42px;
  height: 42px;
  border-radius: 50%;
  background: var(--gradient-primary);
  color: var(--white);
  display: flex;
  align-items: center;
  justify-content: center;
  font-weight: 700;
  font-size: .9rem;
  flex: none;
  box-shadow: 0 6px 14px rgba(255, 0, 0, .22);
}

.testi-name {
  font-size: .9rem;
  font-weight: 600;
  color: var(--ink);
  margin-bottom: 0;
}

.testi-role {
  font-size: .78rem;
  color: var(--text-muted);
}

.testi-placeholder {
  border: 1px dashed var(--line);
  background: var(--white);
}

.testi-placeholder p.testi-text {
  font-style: normal;
  color: var(--text-muted);
}

/* ==========================================================================
   FAQ
   ========================================================================== */
.accordion-atk .accordion-item {
  border: 1px solid var(--line);
  border-radius: var(--border-radius) !important;
  margin-bottom: .85rem;
  overflow: hidden;
  transition: box-shadow var(--transition), border-color var(--transition);
}

.accordion-atk .accordion-item:has(.accordion-button:not(.collapsed)) {
  border-color: transparent;
  box-shadow: var(--shadow-glow);
}

.accordion-atk .accordion-button {
  font-weight: 600;
  font-size: .98rem;
  color: var(--ink);
  padding: 1.15rem 1.4rem;
  background: var(--white);
  transition: background var(--transition), color var(--transition);
}

.accordion-atk .accordion-button:not(.collapsed) {
  color: var(--primary);
  background: var(--gradient-primary-soft);
  box-shadow: none;
}

.accordion-atk .accordion-button:focus {
  box-shadow: none;
  border-color: var(--line);
}

.accordion-atk .accordion-button::after {
  flex-shrink: 0;
}

.accordion-atk .accordion-body {
  padding: 0 1.4rem 1.3rem;
  font-size: .9rem;
  color: var(--text-muted);
}

/* ==========================================================================
   CTA BAND
   ========================================================================== */
.cta-band {
  background: linear-gradient(135deg, var(--primary) 0%, var(--secondary) 150%);
  border-radius: var(--border-radius-lg);
  padding: clamp(2.25rem, 5vw, 3.5rem);
  color: var(--white);
  position: relative;
  overflow: hidden;
}

.cta-band::before {
  content: "";
  position: absolute;
  inset: 0;
  background: radial-gradient(circle at 85% 20%, rgba(255, 255, 255, .18), transparent 55%);
}

.cta-band::after {
  content: "";
  position: absolute;
  top: 0;
  left: -60%;
  width: 35%;
  height: 100%;
  background: linear-gradient(120deg, transparent, rgba(255, 255, 255, .16), transparent);
  transform: skewX(-20deg);
  animation: cta-shine 7s ease-in-out infinite;
}

@keyframes cta-shine {
  0% {
    left: -60%;
  }

  45% {
    left: 130%;
  }

  100% {
    left: 130%;
  }
}

@media (prefers-reduced-motion: reduce) {
  .cta-band::after {
    animation: none;
    display: none;
  }
}

.cta-band .row {
  position: relative;
  z-index: 1;
}

.cta-band h2 {
  color: var(--white);
  font-size: clamp(1.5rem, 3vw, 2.1rem);
  margin-bottom: .6rem;
}

.cta-band p {
  color: rgba(255, 255, 255, .82);
  margin-bottom: 0;
}

/* ==========================================================================
   FOOTER
   ========================================================================== */
.footer-atk {
  background: #2a0a0a;
  color: rgba(255, 255, 255, .72);
  padding-top: 4rem;
}

.footer-atk h5 {
  color: var(--white);
  font-size: .92rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .06em;
  margin-bottom: 1.2rem;
}

.footer-atk a {
  color: rgba(255, 255, 255, .68);
  font-size: .9rem;
}

.footer-atk a:hover {
  color: var(--white);
}

.footer-atk ul {
  list-style: none;
  padding: 0;
  margin: 0;
}

.footer-atk ul li {
  margin-bottom: .7rem;
}

.footer-brand {
  display: flex;
  align-items: center;
  gap: .6rem;
  font-weight: 800;
  font-size: 1.25rem;
  color: var(--white);
  margin-bottom: 1rem;
}

.footer-brand .mark {
  width: 38px;
  height: 38px;
  border-radius: 9px;
  background: var(--white);
  color: var(--primary);
  display: flex;
  align-items: center;
  justify-content: center;
  font-weight: 800;
}

.footer-social {
  display: flex;
  gap: .6rem;
  margin-top: 1.3rem;
}

.footer-social a {
  width: 38px;
  height: 38px;
  border-radius: 50%;
  border: 1px solid rgba(255, 255, 255, .22);
  display: flex;
  align-items: center;
  justify-content: center;
  transition: var(--transition);
}

.footer-social a:hover {
  background: var(--white);
  color: var(--primary);
  border-color: var(--white);
}

.footer-bottom {
  border-top: 1px solid rgba(255, 255, 255, .12);
  margin-top: 3rem;
  padding: 1.4rem 0;
  font-size: .82rem;
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: .6rem;
}

.footer-city-strip {
  font-size: .8rem;
  color: rgba(255, 255, 255, .6);
}

/* ==========================================================================
   FLOATING WHATSAPP
   ========================================================================== */
.wa-float {
  position: fixed;
  right: 1.3rem;
  bottom: 1.3rem;
  bottom: calc(1.3rem + env(safe-area-inset-bottom));
  z-index: 1050;
  background: var(--secondary);
  color: var(--white);
  border-radius: 100px;
  display: flex;
  align-items: center;
  gap: .55rem;
  padding: .85rem 1.1rem;
  box-shadow: 0 12px 30px rgba(255, 0, 0, .35);
  font-weight: 600;
  font-size: .85rem;
  transition: var(--transition);
}

.wa-float:hover {
  background: #d40000;
  color: var(--white);
  transform: translateY(-3px);
}

.wa-float i {
  font-size: 1.3rem;
}

.wa-float .wa-text {
  display: inline;
}

/* ==========================================================================
   BACK TO TOP
   ========================================================================== */
.back-to-top {
  position: fixed;
  right: 1.3rem;
  bottom: calc(1.3rem + env(safe-area-inset-bottom) + 4.2rem + .7rem);
  z-index: 1049;
  width: 44px;
  height: 44px;
  border-radius: 50%;
  border: 2px solid rgba(255, 255, 255, .18);
  background: rgba(42, 10, 10, .72);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  color: var(--white);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 1.1rem;
  cursor: pointer;
  opacity: 0;
  visibility: hidden;
  transform: translateY(12px);
  transition: opacity .3s ease, visibility .3s ease, transform .3s ease, background .25s ease, border-color .25s ease;
  box-shadow: 0 6px 20px rgba(0, 0, 0, .25);
}

.back-to-top.is-visible {
  opacity: 1;
  visibility: visible;
  transform: translateY(0);
}

.back-to-top:hover {
  background: var(--primary);
  border-color: var(--primary);
  transform: translateY(-3px);
  box-shadow: 0 10px 28px rgba(180, 0, 0, .4);
}

/* ==========================================================================
   BREADCRUMB (reusable — dipakai di .page-header maupun berdiri sendiri,
   misalnya di halaman detail artikel blog)
   ========================================================================== */
.breadcrumb {
  --bs-breadcrumb-divider: '/';
  font-size: .82rem;
  margin-bottom: .9rem;
}

.breadcrumb a {
  color: var(--text-muted);
}

.breadcrumb a:hover {
  color: var(--primary);
}

.breadcrumb .active {
  color: var(--primary);
  font-weight: 600;
}

/* ==========================================================================
   PAGE HEADER (inner pages)
   ========================================================================== */
.page-header {
  background: var(--bg-soft);
  padding: clamp(2.5rem, 5vw, 4rem) 0 clamp(2rem, 4vw, 3rem);
  border-bottom: 1px solid var(--line);
}

.page-header h1 {
  font-size: clamp(1.75rem, 3.4vw, 2.5rem);
  margin-bottom: .7rem;
}

.page-header p {
  max-width: 640px;
  margin-bottom: 0;
}

/* ---------- Varian: page-header dengan slideshow foto latar (khusus halaman
   yang menambahkan class .page-header--photos, tidak berlaku di halaman lain) ---------- */
.page-header--photos {
  position: relative;
  overflow: hidden;
  isolation: isolate;
  border-bottom: none;
}

.page-header-bg {
  position: absolute;
  inset: 0;
  z-index: 0;
}

.page-header-bg__img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  opacity: 0;
  animation: page-header-bg-fade 13.5s ease-in-out infinite;
}

.page-header-bg__img:nth-of-type(1) {
  animation-delay: 0s;
}

.page-header-bg__img:nth-of-type(2) {
  animation-delay: 4.5s;
}

.page-header-bg__img:nth-of-type(3) {
  animation-delay: 9s;
}

.page-header-bg__overlay {
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, rgba(30, 4, 4, .82), rgba(30, 4, 4, .72));
}

.page-header--photos .container-xl {
  position: relative;
  z-index: 1;
}

.page-header--photos .breadcrumb a {
  color: rgba(255, 255, 255, .72);
}

.page-header--photos .breadcrumb a:hover {
  color: var(--white);
}

.page-header--photos .breadcrumb .active {
  color: var(--white);
}

.page-header--photos h1,
.page-header--photos p {
  color: var(--white);
}

.page-header--photos p {
  color: rgba(255, 255, 255, .88);
}

@keyframes page-header-bg-fade {
  0% {
    opacity: 0;
  }

  4% {
    opacity: 1;
  }

  30% {
    opacity: 1;
  }

  37% {
    opacity: 0;
  }

  100% {
    opacity: 0;
  }
}

@media (prefers-reduced-motion: reduce) {
  .page-header-bg__img {
    animation: none;
    opacity: 0;
  }

  .page-header-bg__img:first-of-type {
    opacity: 1;
  }
}

/* ==========================================================================
   MISC UTILITIES
   ========================================================================== */
.badge-soft {
  background: var(--primary-tint);
  color: var(--primary);
  font-weight: 600;
  font-size: .72rem;
  padding: .35rem .7rem;
  border-radius: 100px;
}

.text-primary-atk {
  color: var(--primary) !important;
}

.bg-primary-atk {
  background: var(--primary) !important;
}

.divider-line {
  height: 1px;
  background: var(--line);
  border: none;
}

.reveal {
  opacity: 0;
  transform: translateY(22px) scale(.98);
  transition: opacity .7s var(--ease-smooth), transform .7s var(--ease-smooth);
}

.reveal.is-visible {
  opacity: 1;
  transform: translateY(0) scale(1);
}

@media (prefers-reduced-motion: reduce) {
  .reveal {
    opacity: 1;
    transform: none;
    transition: none;
  }

  .flow-wrap .flow-step.reveal {
    opacity: 1;
    transform: none;
    transition: none;
  }

  * {
    scroll-behavior: auto !important;
  }
}

/* ==========================================================================
   RESPONSIVE
   ========================================================================== */
@media (max-width:991.98px) {
  .cat-scroller {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 1rem;

    perspective: 1200px;
  }

  .flow-wrap {
    grid-template-columns: repeat(2, 1fr);
  }

  .hero-stat-chip {
    right: .5rem;
  }

  .po-ticket {
    width: 210px;
    left: .75rem;
    bottom: -1.1rem;
    padding: .9rem;
  }
}

@media (max-width:767.98px) {
  .cat-scroller {
    grid-template-columns: 1fr;
    gap: 1.15rem;
  }

  .flow-wrap {
    grid-template-columns: 1fr;
  }

  .hero-visual {
    margin-top: 2.5rem;
  }

  .po-ticket {
    position: static;
    width: 100%;
    margin-top: 1rem;
  }

  .hero-stat-chip {
    position: static;
    display: inline-flex;
    flex-direction: column;
    margin-top: 1rem;
  }

  .wa-float .wa-text {
    display: none;
  }

  .wa-float {
    /* Ukuran tetap & sama (width = height) supaya benar-benar
       bulat, bukan oval — sebelumnya tinggi kotak ikon mengikuti
       line-height body (1.65) sehingga lebih tinggi dari lebar. */
    width: 52px;
    height: 52px;
    padding: 0;
    border-radius: 50%;
    justify-content: center;
    line-height: 1;
  }

  .wa-float i {
    line-height: 1;
  }

  /* CTA hero: teks "Konsultasi Pengadaan via WhatsApp" berpotensi lebih
     lebar dari layar karena .btn memakai white-space: nowrap. Susun
     stack full-width di mobile agar tidak memicu horizontal overflow
     dan lebih nyaman disentuh (sesuai target UX mobile). */
  .hero-actions {
    flex-direction: column;
    align-items: stretch;
  }

  .hero-actions .btn {
    width: 100%;
    white-space: normal;
    text-align: center;
  }

  /* Footer social icons: naikkan sedikit target sentuh di mobile */
  .footer-social a {
    width: 42px;
    height: 42px;
  }

  .footer-social {
    gap: .75rem;
  }
}

@media (max-width:575.98px) {
  .cat-scroller {
    grid-template-columns: 1fr;
    gap: 1.15rem;
  }

  .section {
    padding: 2.75rem 0;
  }

  /* Safety net tambahan: tombol lain yang berpasangan (mis. flex:1 pada
     .pc-actions) tetap boleh nowrap karena teksnya pendek, tapi jika ada
     teks panjang di button generik, izinkan wrap alih-alih overflow. */
  .btn {
    white-space: normal;
  }
}

/* ============================================================
   CSS KHUSUS TESTIMONI
   Dipindahkan dari index.html
   ============================================================ */

/* Area utama loop */
.testi-loop-section .testi-loop {
  width: 100%;
  overflow: hidden;
  position: relative;
  padding: 1rem 0 1.5rem;
}


/* Efek fade kiri dan kanan */
.testi-loop-section .testi-loop::before,
.testi-loop-section .testi-loop::after {
  content: "";
  position: absolute;
  top: 0;
  bottom: 0;
  width: 90px;
  z-index: 5;
  pointer-events: none;
}

.testi-loop-section .testi-loop::before {
  left: 0;

  background:
    linear-gradient(to right,
      #550000 0%,
      rgba(85, 0, 0, 0) 100%);
}

.testi-loop-section .testi-loop::after {
  right: 0;

  background:
    linear-gradient(to left,
      #550000 0%,
      rgba(85, 0, 0, 0) 100%);
}


/* Baris yang bergerak */
.testi-loop-section .testi-loop-track {
  display: flex;
  width: max-content;
  gap: 1.25rem;
  animation: testi-loop-animation 35s linear infinite;
  will-change: transform;
  contain: layout style;
}


/* Kartu Testimoni */
.testi-loop-section .testi-loop-card {
  width: 350px;
  min-width: 350px;
  min-height: 225px;

  padding: 1.5rem;

  background: #ffffff;

  border: 1px solid rgba(255, 255, 255, .45);

  border-radius: 18px;

  box-shadow:
    0 12px 30px rgba(0, 0, 0, .12);

  display: flex;
  flex-direction: column;

  transition:
    transform .35s ease,
    box-shadow .35s ease;
}


/* Hover kartu */
.testi-loop-section .testi-loop-card:hover {
  transform: translateY(-6px);

  box-shadow:
    0 20px 40px rgba(0, 0, 0, .18);
}


/* Bintang */
.testi-loop-section .testi-loop-stars {
  display: flex;
  gap: .2rem;

  margin-bottom: .8rem;

  color: var(--secondary);

  font-size: .8rem;
}


/* Isi Testimoni */
.testi-loop-section .testi-loop-text {
  margin: 0 0 1.25rem;

  color: var(--ink);

  font-size: .88rem;

  line-height: 1.7;

  font-style: italic;
}


/* Data orang / perusahaan */
.testi-loop-section .testi-loop-person {
  display: flex;
  align-items: center;

  gap: .75rem;

  margin-top: auto;
}


/* Avatar */
.testi-loop-section .testi-loop-avatar {
  width: 44px;
  height: 44px;

  min-width: 44px;

  display: flex;
  align-items: center;
  justify-content: center;

  border-radius: 50%;

  background: var(--gradient-primary);

  color: var(--white);

  font-size: .95rem;

  box-shadow:
    0 7px 16px rgba(255, 0, 0, .20);
}


/* Nama */
.testi-loop-section .testi-loop-person strong {
  display: block;

  color: var(--ink);

  font-size: .86rem;

  font-weight: 700;

  line-height: 1.3;
}


/* Jabatan / kategori */
.testi-loop-section .testi-loop-person span {
  display: block;

  margin-top: .2rem;

  color: var(--text-muted);

  font-size: .73rem;

  line-height: 1.3;
}


/* ============================================================
       ANIMASI LOOP
       ============================================================ */

@keyframes testi-loop-animation {

  from {
    transform: translateX(0);
  }

  to {
    transform: translateX(calc(-50% - .625rem));
  }

}


/* Pause ketika mouse berada di atas Testimoni */
.testi-loop-section .testi-loop:hover .testi-loop-track {
  animation-play-state: paused;
}


/* ============================================================
       TABLET
       ============================================================ */

@media (max-width: 991.98px) {

  .testi-loop-section .testi-loop-card {
    width: 320px;
    min-width: 320px;
  }

  .testi-loop-section .testi-loop::before,
  .testi-loop-section .testi-loop::after {
    width: 55px;
  }

}


/* ============================================================
       MOBILE
       ============================================================ */

@media (max-width: 575.98px) {

  .testi-loop-section .testi-loop-track {
    gap: .85rem;

    animation-duration: 28s;
  }

  .testi-loop-section .testi-loop-card {
    width: 285px;
    min-width: 285px;

    min-height: 215px;

    padding: 1.25rem;

    border-radius: 16px;
  }

  .testi-loop-section .testi-loop::before,
  .testi-loop-section .testi-loop::after {
    width: 35px;
  }

}


/* ============================================================
       REDUCED MOTION
       ============================================================ */

@media (prefers-reduced-motion: reduce) {

  .testi-loop-section .testi-loop-track {
    animation: none;

    width: 100%;

    flex-wrap: wrap;

    transform: none;
  }

  .testi-loop-section .testi-loop-card[aria-hidden="true"] {
    display: none;
  }

  .testi-loop-section .testi-loop-card:hover {
    transform: none;
  }

}

/* ==========================================================================
   PKG TEASER — hover animations (dipindahkan dari inline <style> di index.html)
   ========================================================================== */
.pkg-teaser .pkg-card:not(.featured) {
  transition:
    transform .45s var(--ease-smooth),
    box-shadow .45s var(--ease-smooth),
    border-color var(--transition),
    background .45s var(--ease-smooth),
    color var(--transition);
}

.pkg-teaser .pkg-card:not(.featured):hover {
  background: linear-gradient(150deg, var(--primary) 0%, var(--secondary) 140%);
  border-color: transparent;
}

.pkg-teaser .pkg-card:not(.featured):hover .pkg-tag {
  color: #ffd9d9;
}

.pkg-teaser .pkg-card:not(.featured):hover h3 {
  color: var(--white);
}

.pkg-teaser .pkg-card:not(.featured):hover .pkg-target,
.pkg-teaser .pkg-card:not(.featured):hover ul li {
  color: rgba(255, 255, 255, .85);
}

.pkg-teaser .pkg-card:not(.featured):hover ul li {
  border-color: rgba(255, 255, 255, .18);
}

.pkg-teaser .pkg-card:not(.featured):hover ul li i {
  color: #ffd9d9;
}

.pkg-teaser .pkg-card:not(.featured):hover .btn-outline-atk {
  background: var(--white);
  color: var(--primary);
  border-color: var(--white);
}

/* ==========================================================================
   ARTIKEL / BLOG DETAIL
   Komponen untuk halaman detail artikel blog (chip kategori, ringkasan,
   daftar isi, isi artikel, kotak "baca juga", sidebar penulis & artikel
   terkait). Namespace class unik — tidak memengaruhi komponen di halaman
   lain.
   ========================================================================== */
.chip {
  display: inline-flex;
  align-items: center;
  padding: .4rem 1rem;
  border-radius: 999px;
  background: var(--primary-tint);
  color: var(--primary);
  font-size: .8rem;
  font-weight: 600;
}

.article-cover {
  border-radius: var(--border-radius-lg);
  overflow: hidden;
  box-shadow: var(--shadow-md);
}

.article-cover img {
  width: 100%;
  height: auto;
  display: block;
}

.featured-caption {
  margin: .75rem 0 0;
  font-size: .85rem;
  color: var(--text-muted);
  text-align: center;
}

.summary-box {
  background: var(--primary-tint);
  border: 1px solid var(--line);
  border-radius: var(--border-radius-lg);
  padding: 1.75rem;
  margin-bottom: 2rem;
}

.summary-box h3 {
  font-size: 1.05rem;
  font-weight: 700;
  color: var(--primary);
  margin-bottom: .75rem;
}

.summary-box p {
  color: var(--text-dark);
  margin-bottom: .75rem;
}

.summary-box ul {
  margin: 0;
  padding-left: 1.1rem;
  color: var(--text-dark);
}

.summary-box ul li {
  margin-bottom: .4rem;
}

.toc-box {
  border: 1px solid var(--line);
  border-radius: var(--border-radius);
  margin-bottom: 2.25rem;
  overflow: hidden;
}

.toc-toggle {
  width: 100%;
  background: var(--white);
  border: 0;
  padding: 1rem 1.25rem;
  display: flex;
  align-items: center;
  justify-content: space-between;
  font-weight: 600;
  color: var(--text-dark);
  cursor: pointer;
}

.toc-chevron {
  transition: transform .25s ease;
}

.toc-toggle[aria-expanded="true"] .toc-chevron {
  transform: rotate(90deg);
}

.toc-content {
  max-height: 0;
  overflow: hidden;
  transition: max-height .35s ease;
  background: var(--bg-soft);
}

.toc-content ul {
  list-style: none;
  margin: 0;
  padding: 1rem 1.25rem;
  display: flex;
  flex-direction: column;
  gap: .5rem;
}

.toc-content a {
  color: var(--text-dark);
  text-decoration: none;
  font-size: .92rem;
}

.toc-content a:hover {
  color: var(--primary);
}

.article-body h2 {
  font-size: 1.4rem;
  font-weight: 700;
  color: var(--text-dark);
  margin: 2.25rem 0 1rem;
  scroll-margin-top: 100px;
}

.article-body p {
  color: var(--text-muted);
  line-height: 1.8;
  margin-bottom: 1.1rem;
}

.article-body ul {
  color: var(--text-muted);
  line-height: 1.8;
  padding-left: 1.2rem;
}

.baca-juga-box {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: .5rem;
  background: var(--primary-tint);
  border-left: 4px solid var(--primary);
  border-radius: var(--border-radius-sm);
  padding: .9rem 1.1rem;
  margin: 1.75rem 0;
  font-size: .92rem;
}

.baca-juga-box i {
  color: var(--primary);
}

.baca-juga-box .label {
  font-weight: 700;
  color: var(--text-dark);
}

.baca-juga-box a {
  color: var(--primary);
  font-weight: 600;
  text-decoration: none;
}

.baca-juga-box a:hover {
  text-decoration: underline;
}

.article-sidebar-sticky {
  position: sticky;
  top: 110px;
}

.sidebar-author-card {
  background: var(--white);
  border: 1px solid var(--line);
  border-radius: var(--border-radius-lg);
  padding: 1.75rem;
  text-align: center;
  box-shadow: var(--shadow-sm);
  margin-bottom: 1.75rem;
}

.sidebar-author-card img {
  width: 64px;
  height: 64px;
  border-radius: 50%;
  object-fit: cover;
  margin: 0 auto .75rem;
}

.sidebar-author-card h4 {
  font-size: 1rem;
  font-weight: 700;
  color: var(--text-dark);
  margin-bottom: .6rem;
}

.sidebar-social {
  display: flex;
  justify-content: center;
  gap: .5rem;
  margin-bottom: .9rem;
}

.sidebar-social a {
  width: 34px;
  height: 34px;
  border-radius: 50%;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: var(--primary-tint);
  color: var(--primary);
  transition: background .2s ease, color .2s ease;
}

.sidebar-social a:hover {
  background: var(--primary);
  color: var(--white);
}

.sidebar-author-card .desc {
  font-size: .85rem;
  color: var(--text-muted);
  margin: 0;
}

.sidebar-related {
  background: var(--white);
  border: 1px solid var(--line);
  border-radius: var(--border-radius-lg);
  padding: 1.5rem;
  box-shadow: var(--shadow-sm);
}

.sidebar-related h4 {
  font-size: 1rem;
  font-weight: 700;
  color: var(--text-dark);
  margin-bottom: 1rem;
}

.related-item {
  display: flex;
  gap: .75rem;
  align-items: center;
  text-decoration: none;
  margin-bottom: 1rem;
}

.related-item:last-child {
  margin-bottom: 0;
}

.related-item img {
  width: 64px;
  height: 64px;
  border-radius: var(--border-radius-sm);
  object-fit: cover;
  flex-shrink: 0;
}

.related-item h5 {
  font-size: .85rem;
  font-weight: 600;
  color: var(--text-dark);
  line-height: 1.35;
  margin-bottom: .2rem;
}

.related-item span {
  font-size: .75rem;
  color: var(--text-muted);
}

.related-item:hover h5 {
  color: var(--primary);
}

@media (max-width: 991.98px) {
  .article-sidebar-sticky {
    position: static;
  }
}

sidebar-author-card h4 {
  font-size: 1rem;
  font-weight: 700;
  color: var(--text-dark);
  margin-bottom: .6rem;
}

.sidebar-social {
  display: flex;
  justify-content: center;
  gap: .5rem;
  margin-bottom: .9rem;
}

.sidebar-social a {
  width: 34px;
  height: 34px;
  border-radius: 50%;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: var(--primary-tint);
  color: var(--primary);
  transition: background .2s ease, color .2s ease;
}

.sidebar-social a:hover {
  background: var(--primary);
  color: var(--white);
}

.sidebar-author-card .desc {
  font-size: .85rem;
  color: var(--text-muted);
  margin: 0;
}

.sidebar-related {
  background: var(--white);
  border: 1px solid var(--line);
  border-radius: var(--border-radius-lg);
  padding: 1.5rem;
  box-shadow: var(--shadow-sm);
}

.sidebar-related h4 {
  font-size: 1rem;
  font-weight: 700;
  color: var(--text-dark);
  margin-bottom: 1rem;
}

.related-item {
  display: flex;
  gap: .75rem;
  align-items: center;
  text-decoration: none;
  margin-bottom: 1rem;
}

.related-item:last-child {
  margin-bottom: 0;
}

.related-item img {
  width: 64px;
  height: 64px;
  border-radius: var(--border-radius-sm);
  object-fit: cover;
  flex-shrink: 0;
}

.related-item h5 {
  font-size: .85rem;
  font-weight: 600;
  color: var(--text-dark);
  line-height: 1.35;
  margin-bottom: .2rem;
}

.related-item span {
  font-size: .75rem;
  color: var(--text-muted);
}

.related-item:hover h5 {
  color: var(--primary);
}

@media (max-width: 991.98px) {
  .article-sidebar-sticky {
    position: static;
  }
}