/*
Theme Name: Sindutrans
Theme URI: https://sindutrans.id
Author: Sindutrans
Author URI: https://sindutrans.id
Description: theme Sindutrans — rental mobil, sepeda, motor, truk & towing (6 layanan, seluruh Indonesia). Warna brand #0099cc (v1.9), tombol booking oranye #f29714, aksen coral #fd704f, tombol WA hijau #25d366, footer brand-950 #0a3d52, font Rubik. Lengkap beranda (hero + daftar harga + quick booking + 6 layanan + 15 armada + 12 kota + keunggulan + langkah + artikel + testimoni + FAQ), halaman kota rental mobil (12), layanan kota (lepas kunci & dengan driver), kendaraan×kota /sewa-<vs>-<kota>/ (15×12) dengan daftar harga detail per armada, hub layanan global sepeda/motor/truk/towing + layanan per kota, armada dengan filter, blog, FAQ, kontak, tentang, detail mobil /mobil/<slug>/, pencarian /cari/?s=, dan WA float. Bekerja berpasangan dengan plugin "Sindutrans Core" (pengaturan situs + import konten demo anti-timeout). Semua konten dapat diedit dari dasbor.
Version: 2.17
Requires at least: 6.0
Tested up to: 6.7
Requires PHP: 7.4
License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Text Domain: sindutrans
Tags: custom-colors, custom-logo, custom-menu, featured-images, one-column, responsive-layout, translation-ready
*/

/* ============================================================
   SINDUTRANS — STYLESHEET LENGKAP
   Port 1:1 dari desain situs Sindutrans, v1.9 recolor ke palet
   pilihan owner:
   - Brand blue #0099CC (brand-600, hover/active #0080AB)
   - Tombol primer booking oranye #F29714 (active #F79013) —
     token --st-gold-* (nama dipertahankan, nilai = skala oranye)
   - Highlight/aksen coral #FD704F (cta-500)
   - WA green #25D366 (hover #1EB455), dark brand-950 #0A3D52
   - Teks #3B4450 / #6A767E / #8691A0, border #E7EAF3, body putih
   - Radius 0.75rem/1rem/1.5rem (rounded-xl/2xl/3xl), font Rubik
   - Grid kartu mobil 2 kolom ponsel dan 3 kolom di >=1024px
   v1.1.0: recolor penuh ke palet asli sindutrans.id + section
   daftar harga (tabel flat .st-table, paritas Travelnesia v1.2.0).
   v1.1.2: kontrak 12 kota (slug /jabodetabek/ dihapus — lima kota
   Jabodetabek terpisah) + daftar harga detail per armada pada
   halaman kendaraan×kota (blok sendiri sebelum artikel) + link
   umum kartu armada ke detail CPT /mobil/<slug>/ (bukan kota
   tertentu).
   v1.1.3: opsi warna Top Bar & Footer tersendiri (--st-topbar-*,
   --st-footer-* — latar terang otomatis teks gelap) tanpa
   mengubah tampilan default; gaya lain TIDAK diubah.
   SELURUH gaya dimuat di file ini (bulletproof — WordPress selalu
   mengirim style.css walau folder assets/ tertinggal saat upload).
   Urutan: reset → token → base → tombol/badge → header/drawer →
   hero → kartu → section → halaman detail → footer → responsif.
   ============================================================ */

/* ============================================================
   1. RESET & DESIGN TOKENS
   ============================================================ */
*, *::before, *::after { box-sizing: border-box; }

html {
        -webkit-text-size-adjust: 100%;
        scroll-behavior: smooth;
        /* Cegah scroll horizontal oleh slug panjang — overflow-wrap
           diwariskan ke seluruh elemen. */
        overflow-wrap: break-word;
}

body {
        margin: 0;
        background: #ffffff;
        color: var(--st-fg);
        font-family: var(--st-font);
        font-size: 1rem;
        line-height: 1.5;
        -webkit-font-smoothing: antialiased;
        text-rendering: optimizeLegibility;
}

img, picture, video, canvas, svg {
        display: block;
        max-width: 100%;
        height: auto;
}
img { border-style: none; }

input, button, textarea, select {
        font: inherit;
        color: inherit;
        margin: 0;
}
button {
        background: none;
        border: 0;
        padding: 0;
        cursor: pointer;
}
button:disabled { cursor: not-allowed; opacity: .6; }

p, h1, h2, h3, h4, h5, h6, figure, blockquote, dl, dd, ul, ol { margin: 0; }
ul, ol { padding: 0; }
ul[class], ol[class] { list-style: none; }

a { color: inherit; text-decoration: none; }
a:hover { text-decoration: none; }

table { border-collapse: collapse; width: 100%; }

hr { border: 0; border-top: 1px solid var(--st-border); margin: 2rem 0; }

:root {
        /* Font — Google Rubik (situs resmi sindutrans.id) + fallback sistem. */
        --st-font: 'Rubik', ui-sans-serif, system-ui, -apple-system, 'Segoe UI', Roboto, Arial, sans-serif;

        /* Skala brand (v1.9 — brand #0099CC, tema pilihan owner). */
        --st-brand-50:  #f0f9fd;
        --st-brand-100: #dcf1f9;
        --st-brand-200: #bfe6f5;
        --st-brand-300: #93d5ef;
        --st-brand-400: #5fc0e8;
        --st-brand-500: #30aadb;
        --st-brand-600: #0099cc;
        --st-brand-700: #0080ab;
        --st-brand-800: #006a8f;
        --st-brand-900: #045c7c;
        --st-brand-950: #0a3d52;

        /* Skala oranye tombol CTA situs resmi (#F29714) — nama token
           --st-gold-* dipertahankan demi kompatibilitas (dipakai tombol
           booking/WA & aksen; nilainya kini skala oranye). */
        --st-gold-50:  #fef8ee;
        --st-gold-100: #fdeed4;
        --st-gold-200: #fbdaa8;
        --st-gold-300: #f8c271;
        --st-gold-400: #f5a83e;
        --st-gold-500: #f29714;
        --st-gold-600: #e08408;
        --st-gold-700: #bf6c06;
        --st-gold-800: #9c560a;
        --st-gold-900: #7e460c;

        /* Skala CTA (highlight coral #FD704F). */
        --st-cta-50:  #fff4f1;
        --st-cta-100: #ffe5de;
        --st-cta-200: #ffc9ba;
        --st-cta-300: #ffa690;
        --st-cta-400: #fe876c;
        --st-cta-500: #fd704f;
        --st-cta-600: #ee5c39;
        --st-cta-700: #c74b2e;

        /* Skala slate (netral biru-abu situs resmi — teks/border). */
        --st-slate-50:  #f8fafc;
        --st-slate-100: #f2f4f8;
        --st-slate-200: #e7eaf3;
        --st-slate-300: #cfd5e0;
        --st-slate-400: #8691a0;
        --st-slate-500: #6a767e;
        --st-slate-600: #566173;
        --st-slate-700: #4a5563;
        --st-slate-800: #414b59;
        --st-slate-900: #3b4450;

        /* Semantik — bisa ditimpa inline dari Pengaturan
           (sindutrans_css_variables(): primary/primary-dark/accent/dark/cta/wa). */
        --st-primary:      var(--st-brand-600);
        --st-primary-dark: var(--st-brand-700);
        --st-accent:       var(--st-gold-500);
        --st-dark:         var(--st-brand-950);
        --st-cta:          var(--st-cta-500);
        --st-wa:           #25d366;
        --st-wa-dark:      #1eb455;

        /* Token turunan. */
        --st-bg:           #ffffff;
        --st-fg:           #3b4450;
        --st-muted:        #6a767e;
        --st-muted-fg:     #8691a0;
        --st-border:       #e7eaf3;
        --st-ring:         #f5a83e;

        /* Radius (Tailwind). */
        --st-r-sm: .5rem;
        --st-r-md: .75rem;   /* rounded-xl */
        --st-r-lg: 1rem;     /* rounded-2xl */
        --st-r-xl: 1.5rem;   /* rounded-3xl */

        /* Shadow (Tailwind). */
        --st-sh-sm: 0 1px 2px 0 rgb(0 0 0 / .05);
        --st-sh:    0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);
        --st-sh-md: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);
        --st-sh-lg: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);
        --st-sh-xl: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);

        /* Layout. */
        --st-maxw: 80rem; /* max-w-7xl = 1280px */
}

/* ============================================================
   2. BASE — kontainer, util, fokus, aksesibilitas
   ============================================================ */
/* Shell flex — footer menempel bawah walau konten pendek. */
.st-shell {
        min-height: 100vh;
        display: flex;
        flex-direction: column;
}
.st-main { flex: 1 0 auto; }

.st-container {
        width: 100%;
        max-width: var(--st-maxw);
        margin-left: auto;
        margin-right: auto;
        padding-left: 1rem;
        padding-right: 1rem;
}

.st-sr-only {
        position: absolute !important;
        width: 1px; height: 1px;
        padding: 0; margin: -1px;
        overflow: hidden;
        clip: rect(0, 0, 0, 0);
        white-space: nowrap;
        border: 0;
}

/* Skip link — tampil saat fokus keyboard. */
.st-shell a[href="#st-main"]:focus {
        position: fixed;
        top: .75rem; left: .75rem;
        z-index: 100;
        background: var(--st-dark);
        color: #fff;
        padding: .75rem 1.25rem;
        border-radius: var(--st-r-md);
        box-shadow: var(--st-sh-lg);
}

/* Fokus keyboard konsisten — ring gold ala situs resmi. */
:focus-visible {
        outline: 2px solid var(--st-ring);
        outline-offset: 2px;
        border-radius: 4px;
}
.st-vcard-link:focus-visible,
.st-ccard:focus-visible,
.st-scard:focus-visible,
.st-acard:focus-visible {
        outline-offset: -2px;
        border-radius: var(--st-r-lg);
}

/* Scrollbar tipis (paritas .scroll-thin situs resmi). */
.st-scroll { scrollbar-width: thin; scrollbar-color: var(--st-slate-300) transparent; }
.st-scroll::-webkit-scrollbar { width: 6px; height: 6px; }
.st-scroll::-webkit-scrollbar-thumb { background: var(--st-slate-300); border-radius: 999px; }
.st-scroll::-webkit-scrollbar-track { background: transparent; }

/* Placeholder gambar rusak → gradien (main.js). */
.st-img-grad {
        background:
                radial-gradient(120% 120% at 20% 0%, var(--st-brand-100) 0%, transparent 55%),
                linear-gradient(135deg, var(--st-brand-50) 0%, var(--st-slate-100) 55%, var(--st-brand-100) 100%);
}

/* Animasi reveal (main.js menambah .st-in saat elemen masuk viewport;
   tanpa JS elemen tetap terlihat karena gate memakai .st-js). */
.st-reveal {
        opacity: 1;
        transform: none;
        transition: opacity .6s ease, transform .6s ease;
}
html.st-js .st-reveal {
        opacity: 0;
        transform: translateY(14px);
}
html.st-js .st-reveal.st-in {
        opacity: 1;
        transform: none;
}
@media (prefers-reduced-motion: reduce) {
        html { scroll-behavior: auto; }
        html.st-js .st-reveal { opacity: 1; transform: none; transition: none; }
        .st-wa-float .st-wa-ping { display: none; }
        *, *::before, *::after { transition-duration: .01ms !important; animation-duration: .01ms !important; }
}

/* ============================================================
   3. TOMBOL / BADGE / CHIP
   ============================================================ */
.st-btn {
        display: inline-flex;
        align-items: center;
        justify-content: center;
        gap: .5rem;
        padding: .625rem 1.25rem;
        border-radius: 999px;
        font-weight: 600;
        font-size: .875rem;
        line-height: 1.25;
        border: 1px solid transparent;
        transition: all .2s ease;
        min-height: 44px; /* target sentuh >=44px */
        text-align: center;
}
.st-btn svg { flex-shrink: 0; }

.st-bst-primary {
        background: var(--st-primary);
        color: #fff;
        box-shadow: var(--st-sh-md);
}
.st-bst-primary:hover { background: var(--st-primary-dark); box-shadow: var(--st-sh-lg); }
/* Active brand mengikuti palet v1.9 (#0080AB). */
.st-bst-primary:active { background: #0080ab; }

.st-bst-cta {
        background: var(--st-cta);
        color: #fff;
        font-weight: 700;
        box-shadow: var(--st-sh-md);
}
.st-bst-cta:hover { background: var(--st-cta-600); box-shadow: var(--st-sh-lg); }

.st-bst-gold {
        background: var(--st-accent);
        color: var(--st-dark);
        font-weight: 700;
        box-shadow: var(--st-sh-md);
}
.st-bst-gold:hover { background: var(--st-gold-300); box-shadow: var(--st-sh-lg); }
/* Tombol booking oranye — :active mengikuti situs resmi (#F79013). */
.st-bst-gold:active { background: #f79013; box-shadow: var(--st-sh-md); }

.st-bst-wa {
        background: var(--st-wa);
        color: #fff;
        box-shadow: var(--st-sh-md);
}
.st-bst-wa:hover { background: var(--st-wa-dark); box-shadow: var(--st-sh-lg); }

/* Tombol WA "terang" (di atas gradien hijau kontak). */
.st-bst-wa-light {
        background: #ffffff;
        color: #128c4b;
        box-shadow: var(--st-sh-md);
}
.st-bst-wa-light:hover { background: var(--st-gold-50); box-shadow: var(--st-sh-lg); }

.st-bst-outline {
        background: #fff;
        color: var(--st-slate-700);
        border-color: var(--st-slate-200);
}
.st-bst-outline:hover { border-color: var(--st-brand-300); color: var(--st-primary); }

/* Pill "Detail" kartu mobil — border brand-200 putih. */
.st-bst-detail {
        background: #fff;
        color: var(--st-primary);
        border: 1px solid var(--st-brand-200);
        min-height: 36px;
        padding: .25rem 1rem;
        font-size: .75rem;
        font-weight: 700;
}
.st-bst-detail:hover { border-color: var(--st-brand-300); background: var(--st-brand-50); }

/* Pill "Selengkapnya" ArticleCollapse — border-2 brand-200. */
.st-bst-more {
        background: #fff;
        color: var(--st-primary);
        border: 2px solid var(--st-brand-200);
        box-shadow: var(--st-sh-sm);
        min-height: 44px;
        padding: .625rem 1.5rem;
        font-weight: 700;
        font-size: .875rem;
}
.st-bst-more:hover { border-color: var(--st-brand-300); background: var(--st-brand-50); color: var(--st-brand-800); }

/* Outline putih transparan (CTA banner). */
.st-bst-ghost {
        background: transparent;
        color: #fff;
        border: 2px solid rgb(255 255 255 / .4);
        padding: .875rem 1.75rem;
        font-size: 1rem;
}
.st-bst-ghost:hover { border-color: var(--st-gold-300); color: var(--st-gold-300); }

.st-bst-lg {
        padding: .875rem 1.75rem;
        font-size: 1rem;
        min-height: 48px;
}
.st-bst-sm {
        padding: .5rem 1rem;
        font-size: .875rem;
        min-height: 40px;
}
.st-bst-block { width: 100%; }

/* Badge umum. */
.st-badge {
        display: inline-flex;
        align-items: center;
        gap: .25rem;
        padding: .25rem .75rem;
        border-radius: 999px;
        font-size: .75rem;
        font-weight: 600;
        line-height: 1.4;
}
.st-badge-soft { background: var(--st-brand-50); color: var(--st-brand-700); }
.st-badge-brand { background: var(--st-primary); color: #fff; }
/* v2.8 — teks badge oranye kini PUTIH ("Paling Populer", "Armada
   Unggulan", badge kota) — dulu gelap var(--st-dark), kontras kurang
   & tidak konsisten dgn badge hijau Unggulan kartu (sudah putih). */
.st-badge-gold { background: var(--st-gold-400); color: #fff; font-weight: 700; }
.st-badge-glass {
        background: rgb(255 255 255 / .15);
        color: #fff;
        backdrop-filter: blur(4px);
}

/* Chip filter (armada/blog) — markup .st-chip + .st-chip-active. */
.st-chip-row {
        display: flex;
        flex-wrap: wrap;
        gap: .5rem;
}
.st-chip {
        display: inline-flex;
        align-items: center;
        justify-content: center;
        border-radius: 999px;
        border: 1px solid var(--st-slate-200);
        background: #fff;
        padding: .5rem 1rem;
        font-size: .875rem;
        font-weight: 600;
        color: var(--st-slate-600);
        transition: all .2s ease;
        min-height: 44px;
}
.st-chip:hover { border-color: var(--st-brand-300); color: var(--st-primary); }
.st-chip:focus-visible { outline-offset: 2px; }
.st-chip-active,
.st-chip.st-chip-active {
        border-color: var(--st-primary);
        background: var(--st-primary);
        color: #fff;
}
.st-chip-active:hover,
.st-chip.st-chip-active:hover { border-color: var(--st-primary); color: #fff; }

/* Alias lama (kompatibilitas markup versi awal). */
.st-chips { display: flex; flex-wrap: wrap; gap: .5rem; }
.st-chip-btn {
        display: inline-flex;
        align-items: center;
        border-radius: 999px;
        border: 1px solid var(--st-slate-200);
        background: #fff;
        padding: .5rem 1rem;
        font-size: .875rem;
        font-weight: 600;
        color: var(--st-slate-600);
        transition: all .2s ease;
        min-height: 44px;
}
.st-chip-btn:hover { border-color: var(--st-brand-300); color: var(--st-primary); }
.st-chip-btn.is-active {
        border-color: var(--st-primary);
        background: var(--st-primary);
        color: #fff;
}

/* ============================================================
   4. HEADER — topbar + mainbar + mega dropdown + drawer
   ============================================================ */
.st-header {
        position: sticky;
        top: 0;
        z-index: 40;
        width: 100%;
}
.st-header.st-scrolled .st-mainbar { box-shadow: var(--st-sh-md); }

/* Top strip — latar opsional (--st-topbar-bg), h-9, text-xs.
   v1.1.3: warna top bar kini opsi tersendiri (latar + teks);
   latar terang otomatis memakai teks gelap via --st-topbar-*. */
.st-topbar {
        background: var(--st-topbar-bg);
        color: var(--st-topbar-fg-soft);
}
.st-topbar-in {
        display: flex;
        align-items: center;
        justify-content: space-between;
        height: 2.25rem;
        max-width: var(--st-maxw);
        margin: 0 auto;
        padding: 0 1rem;
        font-size: .75rem;
        gap: 1rem;
}
.st-topbar-left {
        display: none;
        align-items: center;
        gap: .375rem;
}
.st-topbar-left svg { color: var(--st-topbar-accent); }
.st-topbar-right {
        display: flex;
        align-items: center;
        gap: 1rem;
}
.st-topbar-right > span { display: inline-flex; align-items: center; gap: .375rem; }
.st-topbar-right svg { color: var(--st-topbar-accent); }
.st-topbar-link {
        font-weight: 500;
        color: var(--st-topbar-link);
        transition: color .2s ease;
}
.st-topbar-link:hover { color: var(--st-topbar-fg); }

/* Main bar — putih, border bawah, logo h-16. */
.st-mainbar {
        background: #fff;
        border-bottom: 1px solid var(--st-border);
        box-shadow: var(--st-sh-sm);
        transition: box-shadow .25s ease;
}
.st-mainbar-in {
        display: flex;
        align-items: center;
        justify-content: space-between;
        gap: .75rem;
        max-width: var(--st-maxw);
        margin: 0 auto;
        padding: .625rem 1rem;
}
.st-logo {
        display: inline-flex;
        align-items: center;
        flex-shrink: 0;
}
.st-logo-img {
        height: 4rem; /* h-16 — logo besar paritas situs resmi */
        width: auto;
}
.st-logo-text {
        font-size: 1.25rem;
        font-weight: 800;
        letter-spacing: -.02em;
        color: var(--st-slate-900);
}

/* Nav desktop. */
.st-nav {
        display: none;
        align-items: center;
        gap: .25rem;
}
.st-nav-item { position: relative; }
.st-nav-link,
.st-nav-drop {
        display: flex;
        align-items: center;
        gap: .25rem;
        border-radius: var(--st-r-sm);
        padding: .625rem .75rem;
        font-size: .875rem;
        font-weight: 600;
        color: var(--st-slate-700);
        transition: background .2s ease, color .2s ease;
        white-space: nowrap;
        min-height: 44px;
}
.st-nav-link:hover,
.st-nav-drop:hover,
.st-nav-item.is-open > .st-nav-drop,
.st-nav-link.is-active {
        background: var(--st-brand-50);
        color: var(--st-brand-700);
}
.st-nav-drop .st-chev { display: inline-flex; transition: transform .2s ease; }
.st-nav-item.is-open .st-chev { transform: rotate(180deg); }
/* Hover membuka dropdown di desktop (paritas onMouseEnter header.tsx);
   keyboard tetap lewat :focus-within & klik. */
@media (hover: hover) {
        .st-nav-item:hover > .st-dropdown { display: block; }
}

/* Mega dropdown — w-560 (layanan, 2 kolom) / w-520 (kota, 3 kolom). */
.st-dropdown {
        position: absolute;
        left: 0;
        top: 100%;
        width: 35rem;
        max-width: calc(100vw - 2rem);
        background: #fff;
        border: 1px solid var(--st-border);
        border-radius: var(--st-r-lg);
        padding: .75rem;
        box-shadow: var(--st-sh-xl);
        display: none;
        z-index: 30;
}
.st-dropdown.st-dd-kota { width: 32.5rem; padding: 1rem; }
.st-nav-item.is-open > .st-dropdown,
.st-nav-item:focus-within > .st-dropdown { display: block; }

.st-dropdown-head {
        display: flex;
        align-items: center;
        justify-content: space-between;
        margin-bottom: .5rem;
}
.st-dropdown-label {
        font-size: .75rem;
        font-weight: 700;
        text-transform: uppercase;
        letter-spacing: .05em;
        color: var(--st-slate-400);
}
.st-dropdown-all {
        font-size: .75rem;
        font-weight: 600;
        color: var(--st-primary);
}
.st-dropdown-all:hover { text-decoration: underline; }

.st-dropdown-grid {
        display: grid;
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: .25rem;
}
.st-dd-kota .st-dropdown-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.st-dd-item {
        display: block;
        border-radius: var(--st-r-md);
        padding: .75rem;
        transition: background .2s ease;
}
.st-dd-item:hover { background: var(--st-brand-50); }
.st-dd-item strong {
        display: block;
        font-size: .875rem;
        font-weight: 700;
        color: var(--st-brand-700);
}
.st-dd-item:hover strong { color: var(--st-brand-800); }
.st-dd-item span {
        display: -webkit-box;
        -webkit-line-clamp: 2;
        -webkit-box-orient: vertical;
        overflow: hidden;
        margin-top: .125rem;
        font-size: .75rem;
        color: var(--st-slate-500);
}
/* Item kota sederhana di dropdown kota. */
.st-dd-link {
        display: block;
        border-radius: var(--st-r-sm);
        padding: .5rem .75rem;
        font-size: .875rem;
        font-weight: 500;
        color: var(--st-slate-700);
        transition: background .2s ease, color .2s ease;
}
.st-dd-link:hover { background: var(--st-brand-50); color: var(--st-brand-700); }

/* Menu kustom admin (walker) — submenu datar dalam dropdown. */
.st-nav .sub-menu,
.st-nav .st-sub-menu {
        display: none;
        position: absolute;
        left: 0;
        top: 100%;
        min-width: 16rem;
        background: #fff;
        border: 1px solid var(--st-border);
        border-radius: var(--st-r-lg);
        box-shadow: var(--st-sh-xl);
        padding: .5rem;
        z-index: 30;
}
.st-nav li { position: relative; }
.st-nav li:hover > .sub-menu,
.st-nav li:focus-within > .sub-menu { display: block; }
.st-nav .sub-menu a {
        display: block;
        border-radius: var(--st-r-sm);
        padding: .5rem .75rem;
        font-size: .875rem;
        font-weight: 500;
        color: var(--st-slate-700);
}
.st-nav .sub-menu a:hover { background: var(--st-brand-50); color: var(--st-brand-700); }

.st-header-actions { display: flex; align-items: center; gap: .5rem; }
.st-header-actions .st-btn { display: none; }

/* Tombol burger — size-11. */
.st-burger {
        display: inline-flex;
        align-items: center;
        justify-content: center;
        width: 2.75rem;
        height: 2.75rem;
        border-radius: var(--st-r-sm);
        color: var(--st-slate-700);
        transition: background .2s ease;
}
.st-burger:hover { background: var(--st-brand-50); }

/* Drawer mobile + overlay. */
.st-overlay {
        position: fixed;
        inset: 0;
        background: rgb(18 58 85 / .55);
        opacity: 0;
        visibility: hidden;
        transition: opacity .25s ease, visibility .25s ease;
        z-index: 90;
}
.st-drawer {
        position: fixed;
        top: 0; right: 0;
        height: 100dvh;
        width: 100%;
        max-width: 22rem;
        background: #fff;
        z-index: 95;
        transform: translateX(100%);
        transition: transform .3s ease;
        display: flex;
        flex-direction: column;
}
body.st-drawer-open { overflow: hidden; }
body.st-drawer-open .st-overlay { opacity: 1; visibility: visible; }
body.st-drawer-open .st-drawer { transform: none; }

.st-drawer-head {
        display: flex;
        align-items: center;
        justify-content: space-between;
        gap: .5rem;
        padding: 1rem;
        border-bottom: 1px solid var(--st-border);
        flex-shrink: 0;
}
.st-drawer-head img { height: 3.5rem; width: auto; }
.st-drawer-close {
        display: inline-flex;
        align-items: center;
        justify-content: center;
        width: 2.5rem; height: 2.5rem;
        border-radius: var(--st-r-sm);
        color: var(--st-slate-700);
}
.st-drawer-close:hover { background: var(--st-slate-100); }

.st-drawer-nav {
        flex: 1;
        overflow-y: auto;
        padding: .5rem 1rem 1.5rem;
}
.st-drawer-group { border-bottom: 1px solid var(--st-slate-100); }
.st-drawer-group-btn {
        display: flex;
        width: 100%;
        align-items: center;
        justify-content: space-between;
        padding: .875rem 0;
        font-size: 1rem;
        font-weight: 700;
        color: var(--st-slate-800);
        text-align: left;
        min-height: 44px;
}
.st-drawer-group-btn .st-chev { display: inline-flex; transition: transform .2s ease; }
.st-drawer-group.is-open .st-drawer-group-btn .st-chev { transform: rotate(180deg); }
.st-drawer-panel {
        display: none;
        padding-bottom: .75rem;
}
.st-drawer-group.is-open .st-drawer-panel { display: block; }
.st-drawer-panel a {
        display: block;
        border-radius: var(--st-r-sm);
        padding: .625rem .75rem;
        font-size: .875rem;
        font-weight: 500;
        color: var(--st-slate-600);
}
.st-drawer-panel a:hover { background: var(--st-brand-50); color: var(--st-brand-700); }
.st-drawer-links a {
        display: block;
        border-radius: var(--st-r-sm);
        padding: .625rem .75rem;
        font-size: .9375rem;
        font-weight: 500;
        color: var(--st-slate-600);
}
.st-drawer-links a:hover { background: var(--st-brand-50); color: var(--st-brand-700); }
.st-drawer-cta {
        padding: 1rem;
        border-top: 1px solid var(--st-border);
        flex-shrink: 0;
}

/* ============================================================
   5. HERO BERANDA — paritas tn-hero Travelnesia (v1.2.0): foto + overlay
      gradien brand-950, badge emas, form pencarian (st-search) + trust.
   ============================================================ */
.st-hero {
        position: relative;
        display: flex;
        align-items: center;
        min-height: 540px;
        overflow: hidden;
        background: var(--st-dark);
}
.st-hero-bg {
        position: absolute;
        inset: 0;
        width: 100%;
        height: 100%;
        object-fit: cover;
        object-position: 50% 45%;
}
.st-hero-ol {
        position: absolute;
        inset: 0;
        background: linear-gradient(to bottom, rgb(18 58 85 / .82), rgb(18 58 85 / .38) 50%, rgb(18 58 85 / .88));
}
.st-hero-in {
        position: relative;
        width: 100%;
        /* 1rem horizontal — elemen ini juga .st-container; shorthand tanpa
           padding samping membuat teks hero menempel ke tepi layar. */
        padding: 3rem 1rem;
        color: #fff;
}
/* v2.9 — teks & ikon bintang badge hero kini PUTIH ("Rental mobil,
   sepeda, motor, truk & towing …") — dulu gelap var(--st-brand-950),
   kontras kurang; konsisten dgn badge oranye lain yang sudah putih. */
.st-hero-badge {
        display: inline-flex;
        align-items: center;
        gap: .375rem;
        margin-bottom: .875rem;
        padding: .375rem .875rem;
        border-radius: var(--st-r-sm);
        background: var(--st-gold-400);
        color: #fff;
        font-size: 11px;
        font-weight: 700;
}
.st-hero-badge svg { color: #fff; fill: #fff; }
.st-hero-title {
        max-width: 48rem;
        font-size: 1.875rem;
        font-weight: 800;
        line-height: 1.25;
        letter-spacing: -.02em;
        color: #fff;
        text-wrap: balance;
        text-shadow: 0 2px 10px rgb(2 6 23 / .55);
}
.st-hero-desc {
        max-width: 42rem;
        margin-top: .875rem;
        font-size: .875rem;
        line-height: 1.625;
        color: rgb(255 255 255 / .88);
        text-shadow: 0 1px 8px rgb(2 6 23 / .55);
}
/* Form pencarian hero — paritas tn-search (kartu kaca 2×2 + tombol full). */
.st-search {
        display: grid;
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: .625rem;
        align-items: center;
        max-width: 48rem;
        margin-top: 1.5rem;
        padding: .75rem;
        border-radius: var(--st-r-xl);
        background: rgb(255 255 255 / .95);
        backdrop-filter: blur(8px);
        box-shadow: var(--st-sh-lg);
}
.st-search-field {
        position: relative;
        grid-column: span 2 / span 2;
        display: block;
}
.st-search-field svg {
        position: absolute;
        left: .75rem;
        top: 50%;
        transform: translateY(-50%);
        color: var(--st-muted-fg);
        pointer-events: none;
}
.st-search input[type="text"],
.st-search select {
        height: 44px;
        width: 100%;
        border: 0;
        border-radius: var(--st-r-md);
        background: rgb(242 244 248 / .7);
        color: var(--st-fg);
        font-family: inherit;
        font-size: .875rem;
        padding: 0 .875rem;
        outline: none;
}
.st-search-field input[type="text"] { padding-left: 2.25rem; }
.st-search input:focus-visible { box-shadow: 0 0 0 2px var(--st-primary); }
.st-search select { appearance: none; cursor: pointer; }
.st-search-submit {
        grid-column: span 2 / span 2;
        display: inline-flex;
        align-items: center;
        justify-content: center;
        gap: .5rem;
        height: 44px;
        border: 0;
        cursor: pointer;
        border-radius: var(--st-r-md);
        background: var(--st-primary);
        color: #fff;
        font-family: inherit;
        font-size: .875rem;
        font-weight: 700;
        padding: 0 1.5rem;
        transition: background .2s ease;
}
.st-search-submit:hover { background: var(--st-primary-dark); }
.st-hero-actions {
        display: flex;
        flex-wrap: wrap;
        align-items: center;
        column-gap: .75rem;
        row-gap: .625rem;
        margin-top: 1.25rem;
}
.st-hero-trust {
        display: flex;
        flex-wrap: wrap;
        gap: .75rem 1rem;
        align-items: center;
        margin: 0;
        font-size: .75rem;
        color: rgb(255 255 255 / .92);
}
.st-hero-trust span { display: inline-flex; align-items: center; gap: .375rem; }
.st-hero-trust svg { color: var(--st-gold-300); }
.st-hero-trust .st-star-on { color: var(--st-gold-300); }
@media (min-width: 640px) {
        .st-hero-title { font-size: 2.25rem; }
}
@media (min-width: 768px) {
        .st-hero { min-height: 620px; }
        .st-hero-ol { background: linear-gradient(to right, rgb(18 58 85 / .92), rgb(29 103 151 / .55) 50%, rgb(18 58 85 / .06)); }
        .st-hero-title { font-size: 3.5rem; }
        .st-hero-badge { font-size: .75rem; border-radius: var(--st-r-md); }
        .st-hero-in { padding-top: 4rem; padding-bottom: 4rem; }
}

/* ============================================================
   6. HERO GRADIEN HALAMAN DALAM (armada/blog/kontak/404/artikel)
   ============================================================ */
.st-hero-grad {
        background: linear-gradient(to bottom right, var(--st-brand-700), var(--st-brand-950));
        padding: 3rem 0;
        border-bottom: 1px solid rgb(255 255 255 / .08);
}
.st-hero-grad-body { margin-top: 1rem; }
.st-hero-grad h1 {
        font-size: 1.875rem;
        font-weight: 800;
        letter-spacing: -.02em;
        /* v2.10 — "Warna Judul Halaman" (Pengaturan → Warna). */
        color: var(--st-judul-page, #fff);
}
.st-hero-grad-desc {
        max-width: 42rem;
        margin-top: .75rem;
        font-size: .9375rem;
        line-height: 1.7;
        color: var(--st-slate-300);
}

/* Breadcrumb — chip kecil, chevron pemisah. */
.st-breadcrumb ol {
        display: flex;
        flex-wrap: wrap;
        align-items: center;
        gap: .25rem;
        font-size: .75rem;
}
.st-breadcrumb li { display: flex; align-items: center; gap: .25rem; }
.st-breadcrumb li + li::before {
        content: "";
        width: 14px;
        height: 14px;
        flex-shrink: 0;
        background-color: var(--st-slate-400);
        -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m9 18 6-6-6-6'/%3E%3C/svg%3E") center / contain no-repeat;
        mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m9 18 6-6-6-6'/%3E%3C/svg%3E") center / contain no-repeat;
}
.st-breadcrumb a {
        font-weight: 500;
        color: var(--st-slate-500);
}
.st-breadcrumb a:hover { color: var(--st-primary-dark); text-decoration: underline; }
.st-breadcrumb .st-bc-current { font-weight: 600; color: var(--st-slate-800); }
/* Varian terang di atas hero gelap. */
.st-bc-light li + li::before { background-color: rgb(255 255 255 / .6); }
.st-bc-light a { color: rgb(255 255 255 / .8); }
.st-bc-light a:hover { color: #fff; }
.st-bc-light .st-bc-current { color: #fff; }

/* Hero kota/layanan — foto + gelap, min-height ala situs resmi. */
.st-hero-city {
        position: relative;
        display: flex;
        align-items: flex-end;
        min-height: 52vh;
        overflow: hidden;
        background: var(--st-dark);
}
.st-hero-city.st-hero-city-sm { min-height: 48vh; background: linear-gradient(to bottom right, var(--st-brand-800), var(--st-brand-950)); }
.st-hero-city > img {
        position: absolute;
        inset: 0;
        width: 100%;
        height: 100%;
        object-fit: cover;
}
.st-hero-city-ol {
        position: absolute;
        inset: 0;
        background: linear-gradient(to top, rgb(18 58 85 / .95), rgb(18 58 85 / .5) 50%, rgb(18 58 85 / .25));
}
.st-hero-city-ol-black {
        position: absolute;
        inset: 0;
        background: linear-gradient(to top, rgb(0 0 0 / .85), rgb(0 0 0 / .45) 50%, rgb(0 0 0 / .25));
}
.st-hero-city-in {
        position: relative;
        width: 100%;
        padding: 4rem 0 2.5rem;
}
.st-hero-city-title {
        max-width: 48rem;
        margin-top: 1rem;
        font-size: 1.875rem;
        font-weight: 800;
        line-height: 1.2;
        letter-spacing: -.025em;
        /* v2.10 — "Warna Judul Halaman" (Pengaturan → Warna). */
        color: var(--st-judul-page, #fff);
}
.st-hero-city-desc {
        max-width: 42rem;
        margin-top: .75rem;
        font-size: .875rem;
        line-height: 1.75;
        color: var(--st-slate-200);
}
.st-hero-city-actions {
        display: flex;
        flex-wrap: wrap;
        align-items: center;
        gap: .75rem;
        margin-top: 1.5rem;
}

/* ============================================================
   7. SECTION HEADING — eyebrow uppercase + h2 extrabold
   ============================================================ */
.st-section { padding: 3rem 0; }
.st-section-flush { padding: 3rem 0; }

.st-shead { max-width: 42rem; }
.st-shead-center { margin-left: auto; margin-right: auto; text-align: center; }
.st-shead-eyebrow {
        display: block;
        margin-bottom: .5rem;
        font-size: .75rem;
        font-weight: 700;
        text-transform: uppercase;
        letter-spacing: .1em;
        color: var(--st-cta-600);
}
.st-shead-title {
        font-size: 1.5rem;
        font-weight: 800;
        letter-spacing: -.02em;
        color: var(--st-slate-900);
}
.st-shead-desc {
        margin-top: .75rem;
        font-size: .875rem;
        line-height: 1.6;
        color: var(--st-slate-600);
}
/* Varian terang di section gelap. */
.st-shead-light .st-shead-eyebrow { color: var(--st-gold-300); }
.st-shead-light .st-shead-title { color: #fff; }
.st-shead-light .st-shead-desc { color: var(--st-slate-300); }
/* Shead di dalam baris (kiri) — lebar penuh utk grid armada. */
.st-shead-row .st-shead { max-width: none; flex: 1 1 24rem; }

/* Baris heading kiri + tombol kanan. */
.st-shead-row {
        display: flex;
        flex-wrap: wrap;
        align-items: flex-end;
        justify-content: space-between;
        gap: 1rem;
}

/* ============================================================
   8. QUICK BOOKING — kartu -mt-16 overlap rounded-3xl shadow-xl
   ============================================================ */
.st-quickwrap {
        position: relative;
        z-index: 10;
        max-width: 64rem;
        margin: -4rem auto 0;
        padding: 0 1rem;
}
.st-quickbook {
        background: rgb(255 255 255 / .96);
        backdrop-filter: blur(6px);
        border: 1px solid var(--st-border);
        border-radius: var(--st-r-xl);
        padding: 1rem;
        box-shadow: var(--st-sh-xl);
}
.st-quickbook-grid {
        display: grid;
        gap: .75rem;
}
.st-field { display: block; }
.st-field-label {
        display: block;
        margin-bottom: .375rem;
        font-size: .75rem;
        font-weight: 700;
        text-transform: uppercase;
        letter-spacing: .04em;
        color: var(--st-slate-500);
}
.st-quickbook-actions { display: flex; align-items: flex-end; }
.st-quickbook-actions .st-btn {
        width: 100%;
        height: 3rem;
        border-radius: var(--st-r-md);
        padding: 0 2rem;
        font-size: 1rem;
        font-weight: 700;
}
.st-quicknote {
        margin-top: .75rem;
        font-size: .75rem;
        color: var(--st-slate-500);
}
.st-quicknote strong { color: var(--st-primary-dark); font-weight: 700; }

/* ============================================================
   9. TRUST STRIP / KENAPA MEMILIH — 4 kartu
   ============================================================ */
.st-trust {
        display: grid;
        gap: 1rem;
        grid-template-columns: 1fr;
}
.st-trust-item {
        border: 1px solid var(--st-border);
        background: #fff;
        border-radius: var(--st-r-lg);
        padding: 1.25rem;
        box-shadow: var(--st-sh-sm);
}
.st-trust-item svg { color: var(--st-cta); width: 1.75rem; height: 1.75rem; }
.st-trust-item h3 { margin-top: .75rem; font-weight: 700; color: var(--st-slate-900); }
.st-trust-item p { margin-top: .25rem; font-size: .875rem; line-height: 1.5; color: var(--st-slate-600); }

/* Grid util — st-grid-2/3/4 (sm:2, lg:3/4). */
.st-grid { display: grid; gap: 1rem; }
.st-grid-2 { grid-template-columns: 1fr; }
.st-grid-3 { grid-template-columns: 1fr; }
.st-grid-4 { grid-template-columns: 1fr; }

/* Grid kartu mobil — 2 kolom ponsel, 3 kolom >=1024px
   (paritas grid-cols-2 gap-3 lg:grid-cols-3 lg:gap-4 situs resmi). */
.st-grid-cars {
        display: grid;
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: .75rem;
}

/* ============================================================
   10. KARTU MOBIL (VehicleCard)
   ============================================================ */
.st-vcard {
        position: relative;
        display: flex;
        height: 100%;
        flex-direction: column;
        overflow: hidden;
        border: 1px solid var(--st-border);
        background: #fff;
        border-radius: var(--st-r-lg);
        box-shadow: var(--st-sh-sm);
        transition: transform .3s ease, box-shadow .3s ease;
}
.st-vcard:hover {
        transform: translateY(-4px);
        box-shadow: var(--st-sh-lg);
}
/* Stretched-link — seluruh permukaan kartu klik ke detail. */
.st-vcard-link {
        position: absolute;
        inset: 0;
        z-index: 10;
        border-radius: var(--st-r-lg);
}
.st-vcard-link:focus-visible { outline-offset: -2px; }

.st-vcard-media {
        position: relative;
        aspect-ratio: 16 / 10;
        overflow: hidden;
        /* v1.6 — shimmer lembut selagi foto lazy-load: kotak tidak lagi
         * tampak putih kosong di halaman kota/layanan (efek putih). */
        background: linear-gradient(100deg, var(--st-slate-100) 40%, #f8fafc 50%, var(--st-slate-100) 60%);
        background-size: 200% 100%;
        animation: st-shimmer 1.6s linear infinite;
}
.st-vcard-media img {
        width: 100%;
        height: 100%;
        object-fit: cover;
        transition: transform .5s ease;
        color: transparent; /* v1.6 — alt tidak "bocor" saat memuat/gagal. */
}
@keyframes st-shimmer { to { background-position: -200% 0; } }
@media (prefers-reduced-motion: reduce) {
        .st-vcard-media, .st-acard-media { animation: none; }
}
.st-vcard:hover .st-vcard-media img { transform: scale(1.05); }

/* v1.9 — Transisi Gradasi Putih: foto kartu armada melebur halus ke
 * badan kartu putih (overlay gradasi putih di atas SEMUA foto kartu).
 * v2.2 — kekuatan gradasi diatur dasbor admin lewat --st-grad-s (0–1);
 * mati per area lewat body class st-grad-off-mobil (lihat blok v2.2). */
.st-vcard-media::after {
        content: '';
        position: absolute;
        inset: 0;
        background: linear-gradient(to bottom, transparent 40%, rgb(255 255 255 / calc(.28 * var(--st-grad-s, 1))) 68%, rgb(255 255 255 / calc(.62 * var(--st-grad-s, 1))) 88%, rgb(255 255 255 / calc(.92 * var(--st-grad-s, 1))) 100%);
        pointer-events: none;
}

/* v1.6 — foto produk kini dibakar 16:10 (paritas kotak media): object-fit
 * cover menampilkan foto PENUH tanpa kotak surat abu-abu (efek putih).
 * Aturan contain lama dihapus — unggahan admin persegi pun tampil penuh. */

.st-vcard-cat {
        position: absolute;
        left: .75rem; top: .75rem;
        background: rgb(255 255 255 / .95);
        color: var(--st-brand-700);
        box-shadow: var(--st-sh);
}
/* v2.8 — badge "★ Populer" kartu: teks & ikon bintang PUTIH
   (dulu gelap — owner minta putih, konsisten dgn badge Unggulan). */
.st-vcard-pop {
        position: absolute;
        right: .75rem; top: .75rem;
        background: var(--st-gold-400);
        color: #fff;
        border: 0;
        font-weight: 700;
        box-shadow: var(--st-sh);
}
.st-vcard-pop svg { fill: #fff; color: #fff; }

/* Armada Unggulan (v1.3.2) — badge hijau brand di kartu armada. */
.st-vcard-feat {
        position: absolute;
        right: .75rem; top: .75rem;
        background: var(--st-wa, #25d366);
        color: #fff;
        border: 0;
        font-weight: 700;
        box-shadow: var(--st-sh);
}
.st-vcard-feat svg { fill: #fff; color: #fff; }
.st-vcard-pop.st-vcard-feat,
.st-vcard-feat + .st-vcard-pop { top: 2.75rem; }

/* v1.5 — chip lokasi unit (Jogja/Bali) di kartu armada layanan:
 * di bawah badge kategori (kiri), latar brand lembut. */
.st-vcard-lokasi {
        position: absolute;
        left: .75rem; top: 2.75rem;
        background: rgb(255 255 255 / .95);
        color: var(--st-dark);
        border: 0;
        font-weight: 600;
        box-shadow: var(--st-sh);
}
.st-vcard-lokasi svg { color: var(--st-brand-600, #0099cc); fill: var(--st-brand-600, #0099cc); }

.st-vcard-body {
        display: flex;
        flex: 1;
        flex-direction: column;
        padding: 1rem;
}
/* v2.10 — warna judul produk/armada bisa diatur (Pengaturan → Warna). */
.st-vcard-title { font-weight: 700; color: var(--st-judul-produk, var(--st-slate-900)); }
.st-vcard:hover .st-vcard-title { color: var(--st-primary-dark); }
.st-vcard-tag {
        display: -webkit-box;
        -webkit-line-clamp: 2;
        -webkit-box-orient: vertical;
        overflow: hidden;
        margin-top: .25rem;
        font-size: .75rem;
        /* v2.11 — bisa diatur dari Pengaturan → Warna → "Warna Teks Card Produk". */
        color: var(--st-desc-produk, var(--st-slate-500));
}
.st-vcard-specs {
        display: flex;
        flex-wrap: wrap;
        column-gap: 1rem;
        row-gap: .25rem;
        margin-top: .75rem;
        font-size: .75rem;
        /* v2.11 — ikut "Warna Teks Card Produk". */
        color: var(--st-desc-produk, var(--st-slate-600));
}
.st-vcard-specs li { display: inline-flex; align-items: center; gap: .25rem; }
.st-vcard-specs svg { color: var(--st-primary); }
.st-vcard-specs .spec-hide { display: none; }

.st-vcard-foot { margin-top: auto; padding-top: 1rem; }
.st-vcard-foot-in { border-top: 1px solid var(--st-border); padding-top: .75rem; }
.st-price-label { font-size: .75rem; color: var(--st-slate-500); }
.st-price-now {
        display: block;
        font-size: 1rem;
        font-weight: 800;
        color: var(--st-primary-dark);
}
/* sm:text-lg — harga kartu lebih besar di layar >=640px (paritas situs resmi). */
@media (min-width: 640px) {
        .st-price-now { font-size: 1.125rem; }
}
.st-price-unit { font-size: .6875rem; color: var(--st-slate-500); }

/* Baris aksi [Detail][Chat WA] — satu baris h-9, WA di atas stretched-link. */
.st-vcard-actions {
        position: relative;
        z-index: 20;
        display: flex;
        align-items: center;
        gap: .5rem;
        margin-top: .75rem;
}
.st-vcard-actions .st-bst-detail { flex-shrink: 0; }
.st-vcard-actions .st-bst-wa {
        flex: 1;
        min-width: 0;
        height: 36px;
        min-height: 36px;
        padding: 0 .75rem;
        font-size: .75rem;
        white-space: nowrap;
        border-radius: 999px;
}
.st-vcard-actions .st-bst-wa svg { display: none; }

/* ============================================================
   11. KARTU KOTA (CityCard) — v1.9 Transisi Gradasi Putih: foto
   melebur ke putih di bawah + teks gelap (sebelumnya gradien hitam)
   ============================================================ */
.st-ccard {
        position: relative;
        display: flex;
        align-items: flex-end;
        overflow: hidden;
        aspect-ratio: 16 / 9;
        border-radius: var(--st-r-lg);
        box-shadow: var(--st-sh-sm);
        transition: transform .3s ease, box-shadow .3s ease;
}
.st-ccard:hover { transform: translateY(-4px); box-shadow: var(--st-sh-xl); }
/* Stretched-link — seluruh permukaan kartu kota klik ke halaman kota. */
.st-ccard-link {
        position: absolute;
        inset: 0;
        z-index: 10;
        border-radius: var(--st-r-lg);
}
.st-ccard-link:focus-visible { outline-offset: -2px; }
.st-ccard img {
        position: absolute;
        inset: 0;
        width: 100%;
        height: 100%;
        object-fit: cover;
        transition: transform .5s ease;
}
.st-ccard:hover img { transform: scale(1.05); }
.st-ccard-ol {
        position: absolute;
        inset: 0;
        /* v1.9 — Transisi Gradasi Putih (sebelumnya gradien hitam).
         * v2.2 — kekuatan --st-grad-s; mati → gradien gelap klasik (blok v2.2). */
        background: linear-gradient(to top, rgb(255 255 255 / calc(.96 * var(--st-grad-s, 1))) 0%, rgb(255 255 255 / calc(.82 * var(--st-grad-s, 1))) 30%, rgb(255 255 255 / calc(.38 * var(--st-grad-s, 1))) 58%, transparent 82%);
}
.st-ccard-body {
        position: relative;
        width: 100%;
        padding: 1rem;
}
.st-ccard-body h3 {
        font-size: 1.125rem;
        font-weight: 800;
        color: var(--st-slate-900);
}
.st-ccard-prov {
        display: block;
        margin-top: .125rem;
        font-size: .75rem;
        color: var(--st-slate-500);
}
.st-ccard-more {
        display: inline-flex;
        align-items: center;
        gap: .25rem;
        margin-top: .5rem;
        font-size: .75rem;
        font-weight: 600;
        color: var(--st-brand-700);
        transition: gap .2s ease;
}
.st-ccard:hover .st-ccard-more { gap: .5rem; }

/* ============================================================
   12. KARTU LAYANAN (ServiceCard) — tile ikon brand-50→hover invert
   ============================================================ */
.st-scard {
        display: flex;
        height: 100%;
        flex-direction: column;
        border: 1px solid var(--st-border);
        background: #fff;
        border-radius: var(--st-r-lg);
        padding: 1.25rem;
        box-shadow: var(--st-sh-sm);
        transition: transform .3s ease, border-color .3s ease, box-shadow .3s ease;
}
.st-scard:hover {
        transform: translateY(-4px);
        border-color: var(--st-brand-200);
        box-shadow: var(--st-sh-lg);
}
.st-scard-ico {
        display: inline-flex;
        align-items: center;
        justify-content: center;
        width: 3rem; height: 3rem;
        margin-bottom: 1rem;
        border-radius: var(--st-r-lg);
        background: var(--st-brand-50);
        color: var(--st-primary);
        transition: background .3s ease, color .3s ease;
}
.st-scard:hover .st-scard-ico { background: var(--st-primary); color: #fff; }
.st-scard h3 { font-weight: 700; color: var(--st-slate-900); }
.st-scard:hover h3 { color: var(--st-primary-dark); }
.st-scard p {
        flex: 1;
        margin-top: .375rem;
        font-size: .875rem;
        line-height: 1.5;
        color: var(--st-slate-600);
}
.st-scard-more {
        display: inline-flex;
        align-items: center;
        gap: .25rem;
        margin-top: 1rem;
        font-size: .875rem;
        font-weight: 600;
        color: var(--st-cta-600);
        transition: gap .2s ease;
}
.st-scard:hover .st-scard-more { gap: .5rem; }

/* Daftar layanan lain (link baris) — paritas city-service situs resmi. */
.st-rowlinks { display: grid; gap: .625rem; }
.st-rowlinks a {
        display: flex;
        align-items: center;
        justify-content: space-between;
        gap: .5rem;
        border: 1px solid var(--st-border);
        background: #fff;
        border-radius: var(--st-r-md);
        padding: .875rem 1rem;
        font-size: .875rem;
        font-weight: 600;
        color: var(--st-slate-700);
        box-shadow: var(--st-sh-sm);
        transition: border-color .2s ease, background .2s ease, color .2s ease;
}
.st-rowlinks a:hover { border-color: var(--st-brand-200); background: var(--st-brand-50); color: var(--st-brand-700); }

/* ============================================================
   13. KARTU ARTIKEL (ArticleCard)
   ============================================================ */
.st-acard {
        display: flex;
        height: 100%;
        flex-direction: column;
        overflow: hidden;
        border: 1px solid var(--st-border);
        background: #fff;
        border-radius: var(--st-r-lg);
        box-shadow: var(--st-sh-sm);
        transition: transform .3s ease, box-shadow .3s ease;
}
.st-acard:hover { transform: translateY(-4px); box-shadow: var(--st-sh-lg); }
.st-acard-media {
        position: relative;
        aspect-ratio: 16 / 9;
        overflow: hidden;
        /* v1.6 — shimmer paritas kartu armada (tidak putih kosong). */
        background: linear-gradient(100deg, var(--st-slate-100) 40%, #f8fafc 50%, var(--st-slate-100) 60%);
        background-size: 200% 100%;
        animation: st-shimmer 1.6s linear infinite;
}
.st-acard-media img {
        width: 100%;
        height: 100%;
        object-fit: cover;
        transition: transform .5s ease;
        color: transparent; /* v1.6 — alt tidak bocor. */
}
.st-acard:hover .st-acard-media img { transform: scale(1.05); }

/* v1.9 — Transisi Gradasi Putih: foto kartu artikel melebur ke badan
 * kartu putih (paritas kartu armada). */
.st-acard-media::after {
        content: '';
        position: absolute;
        inset: 0;
        /* v2.2 — kekuatan gradasi dari dasbor admin (--st-grad-s). */
        background: linear-gradient(to bottom, transparent 40%, rgb(255 255 255 / calc(.28 * var(--st-grad-s, 1))) 68%, rgb(255 255 255 / calc(.62 * var(--st-grad-s, 1))) 88%, rgb(255 255 255 / calc(.92 * var(--st-grad-s, 1))) 100%);
        pointer-events: none;
}
.st-acard-cat {
        position: absolute;
        left: .75rem; top: .75rem;
        background: rgb(255 255 255 / .95);
        color: var(--st-brand-700);
        box-shadow: var(--st-sh);
}
.st-acard-body {
        display: flex;
        flex: 1;
        flex-direction: column;
        padding: 1rem;
}
.st-acard-title {
        display: -webkit-box;
        -webkit-line-clamp: 2;
        -webkit-box-orient: vertical;
        overflow: hidden;
        font-weight: 700;
        line-height: 1.375;
        /* v2.10 — "Warna Judul Artikel" (Pengaturan → Warna). */
        color: var(--st-judul-artikel, var(--st-slate-900));
}
.st-acard:hover .st-acard-title { color: var(--st-primary-dark); }
.st-acard-excerpt {
        display: -webkit-box;
        -webkit-line-clamp: 2;
        -webkit-box-orient: vertical;
        overflow: hidden;
        flex: 1;
        margin-top: .5rem;
        font-size: .75rem;
        /* v2.11 — bisa diatur dari Pengaturan → Warna → "Warna Teks Card Artikel". */
        color: var(--st-desc-artikel, var(--st-slate-500));
}
.st-acard-meta {
        margin-top: .75rem;
        font-size: .75rem;
        color: var(--st-slate-400);
}

/* ============================================================
   14. ARTICLE COLLAPSE — artikel panjang + fade + Selengkapnya
   ============================================================ */
.st-article-wrap { margin-top: 3rem; border-top: 2px dashed var(--st-border); padding-top: 2.5rem; }
.st-article-head-badge {
        display: inline-flex;
        align-items: center;
        gap: .375rem;
        padding: .375rem 1rem;
        border-radius: 999px;
        background: var(--st-brand-50);
        font-size: .6875rem;
        font-weight: 700;
        text-transform: uppercase;
        letter-spacing: .1em;
        color: var(--st-brand-700);
}
.st-article-head-title {
        max-width: 42rem;
        margin: 1rem auto 0;
        font-size: 1.5rem;
        font-weight: 800;
        letter-spacing: -.02em;
        color: var(--st-slate-900);
        text-align: center;
}
.st-article-clip { position: relative; margin-top: 1.5rem; overflow: hidden; }
.st-article-clip.st-collapsed { max-height: 26rem; }
.st-article-fade {
        display: none;
        position: absolute;
        left: 0; right: 0; bottom: 0;
        height: 7rem;
        background: linear-gradient(to top, #ffffff, rgb(255 255 255 / .85) 60%, transparent);
        pointer-events: none;
}
.st-collapsed .st-article-fade { display: block; }
.st-article-toggle { margin-top: 1.5rem; text-align: center; }
.st-article-toggle .st-chev { display: inline-flex; transition: transform .2s ease; }
/* aria-expanded ada di tombolnya. */
.st-article-toggle-btn[aria-expanded="true"] .st-chev { transform: rotate(180deg); }
/* Tanpa JS (v1.3.1): artikel selalu terbuka penuh — tanpa lipatan, fade,
 * dan tombol. Gate .st-js dipasang main.js (initArticleToggle). */
html:not(.st-js) .st-article-clip { max-height: none; }
html:not(.st-js) .st-article-fade { display: none; }
html:not(.st-js) .st-article-toggle { display: none; }

/* ============================================================
   15. PROSE — konten artikel panjang (paritas Prose situs resmi)
   ============================================================ */
.st-prose { font-size: .9375rem; }
.st-prose h2 {
        margin: 2.5rem 0 1rem;
        font-size: 1.5rem;
        font-weight: 800;
        letter-spacing: -.02em;
        color: var(--st-slate-900);
}
.st-prose > h2:first-child { margin-top: 0; }
.st-prose h3 {
        margin: 1.75rem 0 .625rem;
        font-size: 1.125rem;
        font-weight: 700;
        color: var(--st-slate-900);
}
.st-prose p { margin-bottom: 1rem; line-height: 1.75; color: var(--st-slate-700); }
.st-prose ul, .st-prose ol { margin-bottom: 1rem; padding-left: 1.25rem; }
.st-prose ul { list-style: disc; }
.st-prose ol { list-style: decimal; }
.st-prose li { margin-bottom: .375rem; line-height: 1.75; color: var(--st-slate-700); }
.st-prose strong, .st-prose b { font-weight: 600; color: var(--st-slate-900); }
.st-prose a {
        font-weight: 600;
        color: var(--st-primary);
        text-decoration: underline;
        text-decoration-color: var(--st-brand-200);
        text-decoration-thickness: 2px;
        text-underline-offset: 2px;
}
.st-prose a:hover { color: var(--st-brand-800); }
/* Tabel panduan GFM (paritas Prose situs resmi: wrapper scroll-x + rounded
   border, thead brand-600 putih, td border-top) — dirender oleh importer
   md() sebagai <div class="st-tablewrap"><table>…. */
.st-prose .st-tablewrap {
        margin-bottom: 1.25rem;
        overflow-x: auto;
        border: 1px solid var(--st-border);
        border-radius: .75rem;
}
.st-prose .st-tablewrap table {
        width: 100%;
        min-width: 480px;
        border-collapse: collapse;
        font-size: .875rem;
}
.st-prose .st-tablewrap thead { background: var(--st-primary); color: #fff; }
.st-prose .st-tablewrap th {
        padding: .625rem 1rem;
        text-align: left;
        font-weight: 600;
}
.st-prose .st-tablewrap td {
        padding: .625rem 1rem;
        border-top: 1px solid var(--st-border);
        vertical-align: top;
        color: var(--st-slate-700);
}
.st-prose blockquote {
        margin: 1.25rem 0;
        padding: .75rem 1.25rem;
        border-left: 4px solid var(--st-gold-400);
        background: var(--st-gold-50);
        border-radius: 0 var(--st-r-md) 0 var(--st-r-md);
        color: var(--st-slate-700);
}
.st-prose img { margin: 1.5rem 0; border-radius: var(--st-r-lg); }
.st-prose table {
        margin-bottom: 1.25rem;
        min-width: 30rem;
        font-size: .875rem;
        border: 1px solid var(--st-border);
        border-radius: var(--st-r-md);
        overflow: hidden;
}
.st-prose thead { background: var(--st-primary); color: #fff; }
.st-prose th, .st-prose td { padding: .625rem 1rem; text-align: left; vertical-align: top; }
.st-prose td { border-top: 1px solid var(--st-border); }
/* Pembungkus tabel scroll horizontal. */
.st-tablewrap { margin-bottom: 1.25rem; overflow-x: auto; border: 1px solid var(--st-border); border-radius: var(--st-r-md); }

/* ============================================================
   16. FAQ ACCORDION — chevron rotate, satu terbuka per grup
   ============================================================ */
.st-accwrap {
        border: 1px solid var(--st-border);
        background: #fff;
        border-radius: var(--st-r-lg);
        box-shadow: var(--st-sh-sm);
        overflow: hidden;
}
.st-acc-item + .st-acc-item { border-top: 1px solid var(--st-slate-200); }
.st-acc-head {
        display: flex;
        width: 100%;
        align-items: center;
        justify-content: space-between;
        gap: 1rem;
        padding: 1rem;
        text-align: left;
        font-size: .875rem;
        font-weight: 600;
        color: var(--st-slate-900);
        transition: background .2s ease;
        min-height: 44px;
}
.st-acc-head:hover { background: var(--st-brand-50); }
.st-acc-ico { display: inline-flex; flex-shrink: 0; color: var(--st-slate-500); transition: transform .2s ease; }
.st-acc-item.is-open .st-acc-ico { transform: rotate(180deg); }
.st-acc-body { display: none; padding: 0 1rem 1rem; font-size: .875rem; line-height: 1.75; color: var(--st-slate-600); }
.st-acc-item.is-open .st-acc-body { display: block; }

/* ============================================================
   17. TESTIMONI — bintang gold + ikon quote
   ============================================================ */
.st-testi { display: grid; gap: 1rem; }
.st-testi-item {
        display: flex;
        height: 100%;
        flex-direction: column;
        border: 1px solid var(--st-border);
        background: #fff;
        border-radius: var(--st-r-lg);
        padding: 1.5rem;
        box-shadow: var(--st-sh-sm);
}
.st-testi-quote { color: var(--st-gold-400); width: 1.5rem; height: 1.5rem; }
.st-testi-item blockquote {
        flex: 1;
        margin-top: .75rem;
        font-size: .875rem;
        line-height: 1.75;
        color: var(--st-slate-700);
}
.st-testi-foot {
        display: flex;
        align-items: center;
        gap: .75rem;
        margin-top: 1rem;
        padding-top: 1rem;
        border-top: 1px solid var(--st-border);
}
.st-testi-ava {
        display: flex;
        align-items: center;
        justify-content: center;
        width: 2.5rem; height: 2.5rem;
        flex-shrink: 0;
        border-radius: 999px;
        background: var(--st-primary);
        color: #fff;
        font-weight: 700;
}
.st-testi-name { font-size: .875rem; font-weight: 700; color: var(--st-slate-900); }
.st-testi-city { font-size: .75rem; color: var(--st-slate-500); }
.st-stars { display: inline-flex; gap: .125rem; margin-left: auto; }
.st-stars svg { width: .875rem; height: .875rem; color: var(--st-gold-400); fill: var(--st-gold-400); }
.st-stars .off { color: var(--st-slate-300); fill: var(--st-slate-300); }

/* ============================================================
   18. CTA BANNER — brand-950 gradien + tombol gold
   ============================================================ */
.st-ctawrap { width: 100%; max-width: var(--st-maxw); margin: 0 auto; padding: 0 1rem 3rem; }
.st-cta {
        position: relative;
        overflow: hidden;
        border-radius: var(--st-r-xl);
        background: linear-gradient(to bottom right, var(--st-brand-700), var(--st-brand-800) 50%, var(--st-brand-950));
        padding: 2.5rem 1.5rem;
        text-align: center;
        box-shadow: var(--st-sh-xl);
}
.st-cta-blob {
        position: absolute;
        border-radius: 999px;
        pointer-events: none;
        filter: blur(40px);
}
.st-cta-blob-a { top: -4rem; right: -4rem; width: 16rem; height: 16rem; background: rgb(242 151 20 / .15); }
.st-cta-blob-b { bottom: -5rem; left: -2.5rem; width: 18rem; height: 18rem; background: rgb(253 112 79 / .15); }
.st-cta-in { position: relative; }
.st-cta-ico { margin: 0 auto 1rem; width: 2.5rem; height: 2.5rem; color: var(--st-gold-400); }
.st-cta h2 { font-size: 1.5rem; font-weight: 800; color: #fff; }
.st-cta p {
        max-width: 36rem;
        margin: .75rem auto 0;
        font-size: .875rem;
        line-height: 1.6;
        color: var(--st-slate-300);
}
.st-cta-actions {
        display: flex;
        flex-wrap: wrap;
        align-items: center;
        justify-content: center;
        gap: .75rem;
        margin-top: 1.75rem;
}

/* ============================================================
   19. PAGINASI
   ============================================================ */
.st-pagi { margin-top: 2rem; }
.st-pagi .nav-links {
        display: flex;
        flex-wrap: wrap;
        align-items: center;
        justify-content: center;
        gap: .375rem;
}
.st-pagi .page-numbers {
        display: inline-flex;
        align-items: center;
        justify-content: center;
        min-width: 2.5rem;
        min-height: 2.5rem;
        padding: 0 .75rem;
        border-radius: 999px;
        border: 1px solid var(--st-border);
        background: #fff;
        font-size: .875rem;
        font-weight: 600;
        color: var(--st-slate-700);
        transition: all .2s ease;
}
.st-pagi .page-numbers:hover { border-color: var(--st-primary); color: var(--st-primary); }
.st-pagi .page-numbers.current {
        border-color: var(--st-primary);
        background: var(--st-primary);
        color: #fff;
}
.st-pagi .page-numbers.dots { border: 0; background: none; }

/* ============================================================
   20. FORM — rounded-xl, focus ring gold
   ============================================================ */
.st-input,
.st-select,
.st-textarea {
        width: 100%;
        height: 3rem;
        border: 1px solid var(--st-border);
        border-radius: var(--st-r-md);
        background: #fff;
        padding: 0 .875rem;
        font-size: .9375rem;
        color: var(--st-slate-900);
        transition: border-color .2s ease, box-shadow .2s ease;
}
.st-textarea { height: auto; min-height: 6rem; padding: .75rem .875rem; resize: vertical; }
.st-select { appearance: none; -webkit-appearance: none; padding-right: 2.25rem; }
.st-select-wrap { position: relative; }
.st-select-wrap::after {
        content: "";
        position: absolute;
        right: .875rem; top: 50%;
        width: 16px; height: 16px;
        transform: translateY(-50%);
        pointer-events: none;
        background-color: var(--st-slate-500);
        -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E") center / contain no-repeat;
        mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E") center / contain no-repeat;
}
.st-input:focus,
.st-select:focus,
.st-textarea:focus {
        outline: none;
        border-color: var(--st-gold-400);
        box-shadow: 0 0 0 3px rgb(245 168 62 / .25);
}
.st-form { display: grid; gap: 1rem; }
.st-form-note { font-size: .75rem; color: var(--st-slate-500); }

/* ============================================================
   21. WA FLOAT — fixed bottom-6 right-6, hijau, ping
   ============================================================ */
.st-wa-float {
        position: fixed;
        right: 1.25rem; bottom: 1.25rem;
        z-index: 50;
        display: flex;
        align-items: center;
        justify-content: center;
        width: 3.5rem; height: 3.5rem;
        border-radius: 999px;
        background: var(--st-wa);
        color: #fff;
        box-shadow: var(--st-sh-xl);
        transition: transform .2s ease, opacity .3s ease, background .2s ease;
        opacity: 0;
        visibility: hidden;
        transform: translateY(12px);
}
/* md:bottom-6 md:right-6 (paritas FloatingWa situs resmi). */
@media (min-width: 768px) {
        .st-wa-float { right: 1.5rem; bottom: 1.5rem; }
}
.st-wa-float.st-show { opacity: 1; visibility: visible; transform: none; }
/* Varian state body (dari main.js: mobile tampil setelah scroll >200px). */
body.st-wa-show .st-wa-float { opacity: 1; visibility: visible; transform: none; }
.st-wa-float:hover { background: var(--st-wa-dark); transform: scale(1.08); }
.st-wa-float svg { width: 1.75rem; height: 1.75rem; }
.st-wa-ping {
        position: absolute;
        inset: 0;
        z-index: -1;
        border-radius: 999px;
        background: rgb(37 211 102 / .4);
        animation: st-ping 2.5s cubic-bezier(0, 0, .2, 1) infinite;
}
@keyframes st-ping {
        75%, 100% { transform: scale(1.6); opacity: 0; }
}
/* v1.8 — pil nama layanan (Sewa Sepeda/Motor/Truk/Jasa Towing) di kiri
 * tombol mengambang; tersembunyi di ponsel, tampil mulai md (≥768px)
 * saat halaman terdeteksi sebagai halaman layanan (.st-wa-float-svc). */
.st-wa-float-label {
        display: none;
        position: absolute;
        right: calc(100% + .75rem);
        top: 50%;
        transform: translateY(-50%);
        background: #fff;
        color: var(--st-dark);
        font-size: .8125rem;
        font-weight: 700;
        line-height: 1;
        padding: .55rem .875rem;
        border-radius: 999px;
        box-shadow: var(--st-sh-lg);
        white-space: nowrap;
}
@media (min-width: 768px) {
        .st-wa-float-svc .st-wa-float-label { display: block; }
        .st-wa-float-svc:hover .st-wa-float-label { transform: translateY(-50%) scale(1.05); }
}
@media (prefers-reduced-motion: reduce) {
        .st-wa-float-svc:hover .st-wa-float-label { transform: translateY(-50%); }
}

/* ============================================================
   22. FOOTER — latar opsional (--st-footer-bg) 4 kolom
   ============================================================ */
/* v1.1.3: warna footer kini opsi tersendiri (latar + teks);
   latar terang otomatis memakai teks gelap via --st-footer-*. */
.st-footer {
        margin-top: auto;
        background: var(--st-footer-bg);
        color: var(--st-footer-soft);
}
.st-footer-grid {
        display: grid;
        gap: 2.5rem;
        padding: 3rem 1rem;
        max-width: var(--st-maxw);
        margin: 0 auto;
}
.st-footer-logo {
        display: inline-flex;
        align-items: center;
        background: #fff;
        padding: .75rem 1rem;
        border-radius: var(--st-r-lg);
        box-shadow: var(--st-sh-lg);
}
.st-footer-logo img { height: 4rem; width: auto; }
.st-footer-about {
        margin-top: 1.25rem;
        font-size: .875rem;
        line-height: 1.6;
        color: var(--st-footer-soft);
}
.st-footer-wa { margin-top: 1.25rem; }
/* v2.17 — ikon media sosial footer (Pengaturan → Footer & Sosial). */
.st-footer-social {
        display: flex;
        flex-wrap: wrap;
        gap: .625rem;
        margin-top: 1.25rem;
}
.st-social-link {
        display: inline-flex;
        align-items: center;
        justify-content: center;
        width: 2.5rem;
        height: 2.5rem;
        border-radius: var(--st-r-md);
        border: 1px solid var(--st-footer-border);
        color: var(--st-footer-fg);
        transition: background .2s ease, color .2s ease, border-color .2s ease, transform .2s ease;
}
.st-social-link:hover,
.st-social-link:focus-visible {
        background: var(--st-footer-accent);
        border-color: var(--st-footer-accent);
        color: var(--st-footer-bg);
        transform: translateY(-2px);
}
.st-footer-col h3 {
        margin-bottom: 1rem;
        font-size: .875rem;
        font-weight: 700;
        text-transform: uppercase;
        letter-spacing: .06em;
        color: var(--st-footer-fg);
}
.st-footer-col ul { display: grid; gap: .625rem; font-size: .875rem; }
.st-footer-col a { color: var(--st-footer-soft); transition: color .2s ease; }
.st-footer-col a:hover { color: var(--st-footer-accent); }
.st-footer-cols-2 { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: 1rem; }
.st-footer-bottom { border-top: 1px solid var(--st-footer-border); }
.st-footer-bottom-in {
        display: flex;
        flex-direction: column;
        align-items: center;
        justify-content: space-between;
        gap: .5rem;
        max-width: var(--st-maxw);
        margin: 0 auto;
        padding: 1.25rem 1rem;
        font-size: .75rem;
        color: var(--st-footer-softer);
        text-align: center;
}

/* ============================================================
   23. HALAMAN DETAIL MOBIL (/mobil/<slug>/)
   ============================================================ */
.st-mobil { padding: 2rem 0 3rem; }
.st-mobil-grid {
        display: grid;
        gap: 2rem;
        margin-top: 1.5rem;
}
.st-mobil-photo {
        overflow: hidden;
        border: 1px solid var(--st-border);
        border-radius: var(--st-r-xl);
        box-shadow: var(--st-sh-sm);
        background: var(--st-slate-100);
}
.st-mobil-photo img { aspect-ratio: 16 / 10; width: 100%; object-fit: cover; }
.st-mobil-side { align-self: start; }
.st-mobil-badges { display: flex; flex-wrap: wrap; gap: .5rem; }
.st-mobil-title {
        margin-top: .75rem;
        font-size: 1.5rem;
        font-weight: 800;
        letter-spacing: -.02em;
        /* v2.10 — "Warna Judul Produk/Armada" (Pengaturan → Warna). */
        color: var(--st-judul-produk, var(--st-slate-900));
}
.st-mobil-tag { margin-top: .5rem; color: var(--st-slate-600); font-size: .9375rem; }
.st-mobil-specs {
        display: flex;
        flex-wrap: wrap;
        column-gap: 1.25rem;
        row-gap: .5rem;
        margin-top: 1rem;
        font-size: .875rem;
        color: var(--st-slate-700);
        list-style: none;
}
.st-mobil-specs li { display: inline-flex; align-items: center; gap: .375rem; }
.st-mobil-specs svg { color: var(--st-primary); }

/* Tabel harga — 4 baris kartu. */
.st-pricelist { display: grid; gap: .625rem; margin-top: 1.5rem; }
.st-pricelist-row {
        display: flex;
        align-items: center;
        justify-content: space-between;
        gap: 1rem;
        border: 1px solid var(--st-border);
        background: #fff;
        border-radius: var(--st-r-md);
        padding: .75rem 1rem;
}
.st-pricelist-row > span:first-child { font-size: .875rem; font-weight: 500; color: var(--st-slate-600); }
.st-pricelist-row > span:last-child { font-size: 1.125rem; font-weight: 800; color: var(--st-primary-dark); white-space: nowrap; }

.st-mobil-cta { display: flex; flex-wrap: wrap; gap: .75rem; margin-top: 1.5rem; }
.st-mobil-cta .st-bst-wa { padding: .875rem 1.75rem; font-size: 1rem; }

.st-mobil-desc h2, .st-h2 {
        font-size: 1.25rem;
        font-weight: 800;
        letter-spacing: -.01em;
        color: var(--st-slate-900);
}
.st-fasil {
        border: 1px solid var(--st-border);
        background: #fff;
        border-radius: var(--st-r-lg);
        padding: 1.25rem;
        box-shadow: var(--st-sh-sm);
}
.st-fasil h3 { font-weight: 700; color: var(--st-slate-900); }
.st-fasil ul {
        display: grid;
        gap: .5rem;
        margin-top: .75rem;
        font-size: .875rem;
        color: var(--st-slate-700);
        list-style: none;
}
.st-fasil li { display: flex; align-items: flex-start; gap: .5rem; }
.st-fasil li svg { flex-shrink: 0; margin-top: .125rem; color: var(--st-wa-dark); }

/* ============================================================
   24. HALAMAN KOTA / LAYANAN — kartu info, sidebar, checklist
   ============================================================ */
/* Jarak antara hero foto (kota/layanan) dan konten di bawahnya —
   paritas situs resmi py-10 → md:py-14.
   WAJIB longhand (padding-top/bottom) — elemen ini juga .st-container;
   shorthand `padding: 2.5rem 0 3.5rem` akan menghapus padding samping
   1rem dan membuat seluruh konten menempel ke tepi layar. */
.st-page-body {
        padding-top: 2.5rem;
        padding-bottom: 3.5rem;
}
@media (min-width: 768px) {
        .st-page-body { padding-top: 3.5rem; }
}
.st-page-grid { display: grid; gap: 2.5rem; }
.st-page-main { min-width: 0; }

.st-infogrid { display: grid; gap: 1rem; margin-top: 1.5rem; }
.st-infocard {
        border: 1px solid var(--st-border);
        background: #fff;
        border-radius: var(--st-r-lg);
        padding: 1.25rem;
        box-shadow: var(--st-sh-sm);
}
.st-infocard h3 {
        display: flex;
        align-items: center;
        gap: .5rem;
        font-weight: 700;
        color: var(--st-slate-900);
        font-size: 1rem;
}
.st-infocard h3 svg { color: var(--st-primary); width: 1.25rem; height: 1.25rem; }
.st-infocard p { margin-top: .5rem; font-size: .875rem; line-height: 1.6; color: var(--st-slate-600); }
.st-infocard ul { margin-top: .5rem; display: grid; gap: .375rem; font-size: .875rem; color: var(--st-slate-600); list-style: none; }
.st-infocard ul li { display: flex; align-items: flex-start; gap: .5rem; }
.st-infocard ul li svg { flex-shrink: 0; margin-top: .125rem; color: var(--st-primary); }
.st-areachips { display: flex; flex-wrap: wrap; gap: .375rem; margin-top: .75rem; }
.st-areachips span {
        background: var(--st-brand-50);
        color: var(--st-brand-800);
        border-radius: 999px;
        padding: .25rem .75rem;
        font-size: .75rem;
        font-weight: 600;
}

/* Checklist includes / requirements (layanan global). */
.st-checkgrid { display: grid; gap: 1rem; margin-top: 2rem; }
.st-checkcard { border-radius: var(--st-r-lg); padding: 1.25rem; border: 2px solid var(--st-brand-100); background: rgb(241 248 252 / .5); }
.st-checkcard.st-check-gold { border-color: var(--st-gold-100); background: rgb(254 248 238 / .6); }
.st-checkcard h3 { display: flex; align-items: center; gap: .5rem; font-weight: 700; color: var(--st-brand-800); }
.st-checkcard.st-check-gold h3 { color: var(--st-gold-800); }
.st-checkcard h3 svg { width: 1.25rem; height: 1.25rem; }
.st-checkcard ul { margin-top: .75rem; display: grid; gap: .5rem; font-size: .875rem; color: var(--st-slate-700); list-style: none; }
.st-checkcard ul li { display: flex; align-items: flex-start; gap: .5rem; }
.st-checkcard ul li svg { flex-shrink: 0; margin-top: .125rem; color: var(--st-primary); }
.st-checkcard.st-check-gold ul li::before {
        content: "";
        flex-shrink: 0;
        margin-top: .4rem;
        width: .375rem; height: .375rem;
        border-radius: 999px;
        background: var(--st-gold-500);
}

/* Sidebar halaman kota/layanan (sticky >=1024px). */
.st-side { display: grid; gap: 1.5rem; align-self: start; }
.st-side .st-infocard { position: static; }
.st-side-price { border: 1px solid var(--st-border); background: #fff; border-radius: var(--st-r-lg); padding: 1.25rem; box-shadow: var(--st-sh-sm); }
.st-side-price h3 { font-weight: 700; color: var(--st-slate-900); }
.st-side-price ul { margin-top: .75rem; display: grid; gap: .625rem; font-size: .875rem; list-style: none; }
.st-side-price li {
        display: flex;
        align-items: center;
        justify-content: space-between;
        gap: .5rem;
        padding-bottom: .5rem;
        border-bottom: 1px dashed var(--st-border);
}
.st-side-price li:last-child { border-bottom: 0; padding-bottom: 0; }
.st-side-price li a { font-weight: 500; color: var(--st-slate-700); }
.st-side-price li a:hover { color: var(--st-primary-dark); }
.st-side-price li span { font-weight: 700; color: var(--st-primary-dark); white-space: nowrap; }
.st-side-price .st-btn { margin-top: 1rem; }

/* Langkah "Cara Sewa" — lingkaran bernomor. */
.st-steps { display: grid; gap: 1rem; }
.st-step {
        position: relative;
        border: 1px solid var(--st-border);
        background: #fff;
        border-radius: var(--st-r-lg);
        padding: 1.5rem 1.25rem 1.25rem;
        box-shadow: var(--st-sh-sm);
}
.st-step-num {
        display: inline-flex;
        align-items: center;
        justify-content: center;
        width: 2.5rem; height: 2.5rem;
        border-radius: 999px;
        background: var(--st-primary);
        color: #fff;
        font-weight: 800;
        margin-bottom: .75rem;
}
.st-step h3 { font-weight: 700; color: var(--st-slate-900); }
.st-step p { margin-top: .375rem; font-size: .875rem; line-height: 1.6; color: var(--st-slate-600); }

/* ============================================================
   25. KONTAK — kartu info + form 2 kolom
   ============================================================ */
.st-kontak-grid { display: grid; gap: 2.5rem; }
.st-kontak-side { display: grid; gap: 1.25rem; align-self: start; }
.st-kontak-wa {
        border-radius: var(--st-r-lg);
        background: linear-gradient(to bottom right, var(--st-wa), var(--st-wa-dark));
        padding: 1.5rem;
        color: #fff;
        box-shadow: var(--st-sh-lg);
}
.st-kontak-wa svg { width: 2rem; height: 2rem; }
.st-kontak-wa h2 { margin-top: .75rem; font-size: 1.125rem; font-weight: 800; }
.st-kontak-wa p { margin-top: .375rem; font-size: .875rem; line-height: 1.6; color: rgb(255 255 255 / .9); }
.st-kontak-wa .st-btn { margin-top: 1rem; }
.st-kontak-form { display: grid; gap: 1rem; margin-top: 1.5rem; }
.st-form-2col { display: grid; gap: 1rem; }
.st-form .st-btn { height: 3rem; border-radius: var(--st-r-md); padding: 0 2.5rem; font-weight: 700; font-size: 1rem; }

/* ============================================================
   26. TENTANG KAMI — stats + dua kolom
   ============================================================ */
.st-about-grid {
        display: grid;
        gap: 2.5rem;
        align-items: center;
        margin-top: 2rem;
}
.st-about-img { width: 100%; border-radius: var(--st-r-xl); box-shadow: var(--st-sh-lg); object-fit: cover; }
.st-about-list { display: grid; gap: .75rem; margin-top: 1.5rem; list-style: none; }
.st-about-list li { display: flex; align-items: flex-start; gap: .75rem; font-size: .875rem; line-height: 1.6; color: var(--st-slate-700); }
.st-about-list svg { flex-shrink: 0; margin-top: .125rem; color: var(--st-cta); width: 1.25rem; height: 1.25rem; }
.st-about-list strong { color: var(--st-slate-900); font-weight: 700; }
.st-stats { display: grid; gap: 1rem; margin-top: 2rem; }
.st-stat {
        border: 1px solid var(--st-border);
        background: #fff;
        border-radius: var(--st-r-lg);
        padding: 1.25rem;
        text-align: center;
        box-shadow: var(--st-sh-sm);
}
.st-stat strong { display: block; font-size: 1.5rem; font-weight: 800; color: var(--st-primary); }
.st-stat span { font-size: .875rem; color: var(--st-slate-600); }

/* ============================================================
   27. 404
   ============================================================ */
.st-404 {
        max-width: 48rem;
        margin: 0 auto;
        padding: 4rem 0 5rem;
        text-align: center;
}
.st-404-code {
        font-size: 5rem;
        font-weight: 800;
        letter-spacing: -.05em;
        color: var(--st-brand-100);
        line-height: 1;
}
.st-404-ico { margin: 0 auto; width: 3.5rem; height: 3.5rem; color: var(--st-gold-400); }
.st-404 h1 { margin-top: 1.25rem; font-size: 1.875rem; font-weight: 800; color: var(--st-slate-900); }
.st-404 p { margin-top: .75rem; color: var(--st-slate-600); }
.st-404-links { display: grid; gap: .625rem; margin-top: 2rem; }
.st-404-links a {
        display: block;
        border: 1px solid var(--st-border);
        background: #fff;
        border-radius: var(--st-r-md);
        padding: .875rem 1rem;
        font-size: .875rem;
        font-weight: 600;
        color: var(--st-slate-700);
        box-shadow: var(--st-sh-sm);
        transition: border-color .2s ease, background .2s ease, color .2s ease;
}
.st-404-links a:hover { border-color: var(--st-brand-200); background: var(--st-brand-50); color: var(--st-brand-700); }
.st-404-chips { display: flex; flex-wrap: wrap; justify-content: center; gap: .5rem; margin-top: 1.5rem; }
.st-404-chips a {
        background: var(--st-brand-50);
        color: var(--st-brand-700);
        border-radius: 999px;
        padding: .5rem 1rem;
        font-size: .75rem;
        font-weight: 600;
        transition: background .2s ease;
        min-height: 44px;
        display: inline-flex;
        align-items: center;
}
.st-404-chips a:hover { background: var(--st-brand-100); }
.st-404-back { display: inline-flex; margin-top: 2rem; font-size: .875rem; font-weight: 600; color: var(--st-cta-600); }
.st-404-back:hover { text-decoration: underline; }

/* ============================================================
   28. ARTIKEL SINGLE — head + cover + share
   ============================================================ */
.st-single { max-width: 48rem; margin: 0 auto; padding: 2rem 1rem 0; }
.st-single-title {
        margin-top: .75rem;
        font-size: 1.5rem;
        font-weight: 800;
        line-height: 1.25;
        letter-spacing: -.02em;
        /* v2.10 — "Warna Judul Artikel" (Pengaturan → Warna). */
        color: var(--st-judul-artikel, var(--st-slate-900));
}
.st-single-meta {
        display: flex;
        flex-wrap: wrap;
        align-items: center;
        gap: .5rem 1rem;
        margin-top: 1rem;
        font-size: .875rem;
        color: var(--st-slate-500);
}
.st-single-meta span { display: inline-flex; align-items: center; gap: .375rem; }
.st-single-cover {
        margin-top: 1.5rem;
        aspect-ratio: 16 / 8;
        width: 100%;
        object-fit: cover;
        border-radius: var(--st-r-lg);
        box-shadow: var(--st-sh-md);
}
.st-single-lead {
        margin-top: 1.5rem;
        padding: 1rem 1.25rem;
        border-left: 4px solid var(--st-gold-400);
        background: rgb(254 248 238 / .7);
        font-size: .875rem;
        line-height: 1.75;
        color: var(--st-slate-700);
}
.st-share-box {
        margin-top: 2.5rem;
        border-radius: var(--st-r-lg);
        background: var(--st-brand-50);
        padding: 1.5rem;
        text-align: center;
}
.st-share-box p { font-weight: 700; color: var(--st-brand-900); }
.st-share-box p + p { margin-top: .25rem; font-weight: 400; font-size: .875rem; color: var(--st-slate-600); }
.st-share-box .st-btn { margin-top: 1rem; }

/* ============================================================
   28b. DAFTAR HARGA — tabel flat paritas tn_table Travelnesia (v1.2.0)
   Data: sindutrans_home_data()['harga'] (beranda) & st_data 'harga'
   (halaman kota/layanan) → dirender st_price_tables_html().
   HANYA di page (beranda/kota/layanan) — tidak di halaman armada.
   ============================================================ */
/* Section harga beranda — hero kini membawa form pencarian sendiri,
   padding bawah normal (tanpa overlap kartu Cari Kendaraan). */
.st-sec-harga { padding-bottom: 2rem; }

/* Tumpukan tabel — satu tabel flat full-width per grup (bukan grid kartu),
   diperbesar + responsif (scroll-x di layar sempit, harga tak terpotong).
   v1.3.0 — font & padding DIPERBESAR lagi agar mudah dibaca. */
.st-tables { display: grid; gap: 2.25rem; margin-top: 2rem; max-width: 68rem; margin-left: auto; margin-right: auto; }
.st-table-block { min-width: 0; }
.st-table-title {
        margin: 0 0 .875rem;
        font-size: 1.25rem;
        font-weight: 800;
        line-height: 1.4;
        color: var(--st-brand-700);
}
.st-table-wrap {
        overflow-x: auto;
        border: 1px solid var(--st-border);
        border-radius: var(--st-r-lg);
        background: #fff;
        box-shadow: var(--st-sh-sm);
}
.st-table { width: 100%; border-collapse: collapse; font-size: 1.0625rem; }
.st-table thead tr { background: rgb(0 153 204 / .07); }
.st-table th {
        padding: 1.05rem 1.15rem;
        text-align: left;
        font-weight: 700;
        line-height: 1.45;
        font-size: 1.0625rem;
        color: var(--st-brand-800);
        white-space: nowrap;
}
.st-table td {
        padding: 1rem 1.15rem;
        border-top: 1px solid rgb(231 234 243 / .7);
        color: var(--st-slate-700);
        vertical-align: middle;
        line-height: 1.55;
}
.st-table tbody tr:first-child td { border-top: 0; }
.st-table tbody tr:nth-child(even) td { background: rgb(248 250 252 / .7); }
.st-table tbody tr:hover td { background: var(--st-brand-50); }
/* Kolom pertama — tebal + aksen kiri (inset, tanpa geser layout). */
.st-table td:first-child {
        font-weight: 600;
        color: var(--st-slate-900);
        box-shadow: inset 3px 0 0 var(--st-brand-200);
}
/* Sel harga — tebal, warna brand, nowrap (angka tidak patah baris). */
.st-table th.st-num,
.st-table td.st-num { font-weight: 700; color: var(--st-primary); white-space: nowrap; }
/* Catatan harga — italic kecil di bawah tabel (paritas tn-price-note). */
.st-price-note {
        max-width: 68rem;
        margin: .875rem auto 0;
        font-size: .8125rem;
        color: var(--st-muted-fg);
        font-style: italic;
}
/* Ponsel sempit: font tetap besar & nyaman dibaca, kolom lebih rapat —
   scroll-x pada .st-table-wrap menjaga 4 kolom tetap terbaca penuh. */
@media (max-width: 480px) {
        .st-table { font-size: 1rem; }
        .st-table th { font-size: .9688rem; }
        .st-table th, .st-table td { padding: .8rem .85rem; }
        .st-table-title { font-size: 1.125rem; }
}

/* v1.3.0 — MODE SINGKAT + TOGGLE "SELENGKAPNYA" ------------------------
   Baris ke-7+ tiap tabel terlipat di tbody.st-rows-extra; tombol membuka
   seluruh baris (label berubah "Sembunyikan"). Gate .st-js (dipasang
   main.js) — tanpa JS seluruh baris tetap tampil, tombol disembunyikan
   (a11y & crawler aman, paritas initArticleToggle). */
html.st-js .st-rows-extra { display: none; }
html.st-js .st-table-block.is-open .st-rows-extra { display: table-row-group; }

/* v1.3.2 — 1 TABEL SAJA: tabel ke-2+ terlipat di .st-tables-extra;
   SATU tombol "Selengkapnya (N tabel lainnya)" membukanya. Tanpa JS
   semua tabel tetap tampil (gate .st-js). */
html.st-js .st-tables-extra { display: none; }
html.st-js .st-tables.is-open .st-tables-extra { display: grid; gap: 2.25rem; }
/* v1.4 — SATU TOMBOL PER HALAMAN: tombol antar-tabel juga membuka baris
   ke-7+ tabel pertama (tbody.st-rows-extra) — tidak ada tombol kedua. */
html.st-js .st-tables.is-open .st-rows-extra { display: table-row-group; }
.st-price-toggle-wrap { display: flex; justify-content: center; margin-top: .9rem; }
html:not(.st-js) .st-price-toggle-wrap { display: none; }
.st-price-toggle {
        display: inline-flex;
        align-items: center;
        gap: .5rem;
        min-height: 48px;
        padding: .7rem 1.6rem;
        border: 1.5px solid var(--st-brand-200);
        border-radius: 999px;
        background: #fff;
        color: var(--st-brand-700);
        font-weight: 700;
        font-size: 1rem;
        cursor: pointer;
        transition: background .18s ease, border-color .18s ease, color .18s ease;
}
.st-price-toggle:hover { background: var(--st-brand-50); border-color: var(--st-brand-300); }
.st-price-toggle:focus-visible { outline: 2px solid var(--st-brand-500); outline-offset: 2px; }
.st-price-toggle .st-chev { display: inline-flex; transition: transform .2s ease; }
.st-table-block.is-open .st-price-toggle .st-chev { transform: rotate(180deg); }
.st-table-block.is-open .st-price-toggle { color: var(--st-brand-800); }
.st-tables.is-open .st-price-toggle .st-chev { transform: rotate(180deg); }
.st-tables.is-open .st-price-toggle { color: var(--st-brand-800); }
/* v1.3.2 — daftar harga di dalam kolom artikel (kota & layanan):
   jarak dari blok artikel; tabel mengikuti lebar kolom utama. */
.st-harga-inpage { margin-top: 2.75rem; }
.st-harga-inpage .st-h2 { margin-bottom: 1.25rem; }

/* CTA kecil di bawah tabel (link .st-cta-link sudah ada di section 33). */
.st-price-more { margin-top: 1.75rem; }

/* ============================================================
   29. RESPONSIF — breakpoint 640 / 768 / 1024 (paritas Tailwind)
   ============================================================ */
@media (min-width: 640px) {
        .st-topbar-left { display: flex; }
        .st-hero-in { padding: 5rem 1rem 9rem; }
        .st-hero-title { font-size: 3rem; }
        .st-hero-sub { font-size: 1.125rem; line-height: 2; }
        .st-quickwrap { margin-top: -5rem; }
        .st-quickbook { padding: 1.5rem; }
        .st-trust { grid-template-columns: repeat(2, minmax(0, 1fr)); }
        .st-grid-2, .st-grid-3, .st-grid-4 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
        .st-testi { grid-template-columns: repeat(2, minmax(0, 1fr)); }
        .st-hero-grad h1, .st-hero-city-title { font-size: 2.25rem; }
        .st-hero-city-desc { font-size: 1.125rem; }
        .st-shead-title, .st-article-head-title { font-size: 1.875rem; }
        .st-cta h2 { font-size: 1.875rem; }
        /* Paritas kartu mobil situs resmi: spesifikasi "N koper" tampil sejak
           sm (640px) — <li class="hidden sm:flex"> pada kartu kendaraan. */
        .st-vcard-specs .spec-hide { display: inline-flex; }
        .st-404-links { grid-template-columns: repeat(2, minmax(0, 1fr)); }
        .st-form-2col { grid-template-columns: repeat(2, minmax(0, 1fr)); }
        .st-checkgrid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
        .st-stats { grid-template-columns: repeat(2, minmax(0, 1fr)); }
        .st-section, .st-section-flush { padding: 3.5rem 0; }
}
@media (min-width: 768px) {
        .st-quickbook-grid { grid-template-columns: 1fr 1fr auto; }
        /* Tombol "Chat WA" header tampil sejak md (paritas hidden md:inline-flex). */
        .st-header-actions .st-btn { display: inline-flex; }
        .st-steps { grid-template-columns: repeat(4, minmax(0, 1fr)); }
        /* md:grid-cols-3 — testimoni 3 kolom sejak 768px (paritas home.tsx). */
        .st-testi { grid-template-columns: repeat(3, minmax(0, 1fr)); }
        .st-infogrid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
        .st-mobil-title { font-size: 2.25rem; }
        .st-single-title { font-size: 2.25rem; }
        .st-404-code { font-size: 6rem; }
        .st-hero-grad { padding: 4rem 0; }
        .st-footer-bottom-in { flex-direction: row; text-align: left; }
}
@media (min-width: 1024px) {
        .st-nav { display: flex; }
        .st-burger { display: none; }
        .st-header-actions .st-btn { display: inline-flex; }
        .st-grid-cars { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1rem; }
        .st-grid-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
        .st-grid-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
        /* lg:grid-cols-4 — footer 4 kolom sejak 1024px (paritas situs resmi). */
        .st-footer-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); padding: 4rem 1rem; }
        .st-section, .st-section-flush { padding: 4rem 0; }
        .st-mobil-grid,
        .st-page-grid { grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr); }
        .st-page-grid-city { grid-template-columns: minmax(0, 1fr) 20rem; }
        .st-side { position: sticky; top: 8rem; }
        .st-mobil-side { position: sticky; top: 8rem; }
        .st-kontak-grid { grid-template-columns: minmax(0, 1.2fr) minmax(0, 1fr); }
        .st-about-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
        .st-quickbook-actions .st-btn { width: auto; }
        .st-stats { grid-template-columns: repeat(4, minmax(0, 1fr)); }
        .st-hero-city-in { padding: 4rem 0 3.5rem; }
}
@media (min-width: 1280px) {
        .st-hero-in { padding: 5.5rem 1rem 10rem; }
        .st-quickwrap { margin-top: -5.5rem; }
        .st-hero-title { font-size: 3rem; }
        .st-footer-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); }
        .st-st-cta, .st-cta { padding: 3.5rem 3rem; }
}

/* Layar kecil — perbaikan khusus ponsel. */
@media (max-width: 639px) {
        .st-dropdown { display: none !important; }
        .st-ccard-body { padding: .875rem; }
        .st-hero-city { min-height: 44vh; }
}

/* Utilitas kecil. */
.st-center { text-align: center; }
.st-mt-8 { margin-top: 2rem; }
.st-mt-6 { margin-top: 1.5rem; }
.st-muted { color: var(--st-muted-fg); font-size: .875rem; }
.st-sec-gray { background: var(--st-slate-50); }
.st-sec-dark { background: var(--st-dark); }
.st-pt-0 { padding-top: 0; }
.st-lead { font-size: 1rem; line-height: 1.75; color: var(--st-slate-700); }

/* ============================================================
   30. KOMPATIBILITAS WORDPRESS — kelas inti, galeri, komentar
   ============================================================ */
/* Kelas perataan editor blok (Gutenberg). */
.alignleft { float: left; margin: .5rem 1.5rem 1rem 0; }
.alignright { float: right; margin: .5rem 0 1rem 1.5rem; }
.aligncenter { display: block; margin: .5rem auto 1rem; }
.alignwide { width: 100%; max-width: 70rem; margin-left: auto; margin-right: auto; }
.alignfull {
        width: 100vw;
        max-width: 100vw;
        margin-left: calc(50% - 50vw);
        margin-right: calc(50% - 50vw);
}
@media (min-width: 768px) {
        .alignleft { margin-left: calc((100% - 70rem) / -2 - 1.5rem); }
}
.wp-caption { max-width: 100%; }
.wp-caption img { border-radius: var(--st-r-md); }
.wp-caption-text {
        margin-top: .5rem;
        font-size: .75rem;
        color: var(--st-slate-500);
        text-align: center;
}
/* Sticky post & penulis komentar. */
.sticky { position: relative; }
.sticky .st-acard { border-color: var(--st-brand-300); }
.bypostauthor { position: relative; }

/* Textarea WP yang lebih besar di form kontak. */
.st-form textarea { min-height: 7.5rem; }

/* Search form bawaan WP (get_search_form) — diberi gaya theme. */
.st-searchform {
        display: flex;
        gap: .5rem;
        max-width: 34rem;
}
.st-searchform input[type="search"] {
        flex: 1;
        height: 3rem;
        border: 1px solid var(--st-border);
        border-radius: var(--st-r-md);
        padding: 0 .875rem;
        font-size: .9375rem;
}
.st-searchform input[type="search"]:focus {
        outline: none;
        border-color: var(--st-gold-400);
        box-shadow: 0 0 0 3px rgb(245 168 62 / .25);
}
.st-searchform button {
        flex-shrink: 0;
        height: 3rem;
        padding: 0 1.25rem;
        border-radius: var(--st-r-md);
        background: var(--st-primary);
        color: #fff;
        font-weight: 600;
        display: inline-flex;
        align-items: center;
        gap: .375rem;
}
.st-searchform button:hover { background: var(--st-primary-dark); }

/* Status & pesan WP. */
.st-wp-msg {
        border-radius: var(--st-r-md);
        border: 1px solid var(--st-border);
        background: var(--st-slate-50);
        padding: 1rem 1.25rem;
        font-size: .875rem;
        color: var(--st-slate-700);
}
.st-wp-msg p { margin: 0; }

/* Navigasi komentar halaman (bila tema dipakai utk blog aktif komentar). */
.comment-navigation .nav-links {
        display: flex;
        justify-content: space-between;
        gap: 1rem;
        font-size: .875rem;
        margin: 1.5rem 0;
}
.comment-list {
        list-style: none;
        padding: 0;
        margin: 1.5rem 0;
        display: grid;
        gap: 1rem;
}
.comment-list .comment-body {
        border: 1px solid var(--st-border);
        border-radius: var(--st-r-lg);
        padding: 1.25rem;
        background: #fff;
}
.comment-list .children { list-style: none; margin-top: 1rem; padding-left: 1.25rem; }
.comment-meta { display: flex; align-items: center; gap: .5rem; font-size: .8125rem; color: var(--st-slate-500); }
.comment-meta .avatar { border-radius: 999px; }
.comment-content { margin-top: .5rem; font-size: .9375rem; line-height: 1.7; color: var(--st-slate-700); }
.comment-form { display: grid; gap: .875rem; }
.comment-form label { font-size: .8125rem; font-weight: 600; color: var(--st-slate-700); }
.comment-form input:not([type="submit"]):not([type="checkbox"]),
.comment-form textarea {
        width: 100%;
        border: 1px solid var(--st-border);
        border-radius: var(--st-r-md);
        padding: .625rem .875rem;
        font-size: .9375rem;
}
.comment-form input[type="submit"] {
        justify-self: start;
        background: var(--st-primary);
        color: #fff;
        border: 0;
        border-radius: 999px;
        padding: .75rem 1.75rem;
        font-weight: 600;
        cursor: pointer;
}
.comment-form input[type="submit"]:hover { background: var(--st-primary-dark); }

/* Galeri WP. */
.wp-block-gallery ul { padding-left: 0; }
.wp-block-image img { border-radius: var(--st-r-lg); }

/* Avatar & embed. */
.wp-block-embed { margin: 1.5rem 0; }
.wp-block-embed iframe { border-radius: var(--st-r-lg); }

/* Jaga konten editor agar tidak meluber. */
.st-prose > * { max-width: 100%; }
.st-prose pre {
        overflow-x: auto;
        background: var(--st-slate-900);
        color: var(--st-slate-100);
        padding: 1rem 1.25rem;
        border-radius: var(--st-r-md);
        font-size: .8125rem;
        line-height: 1.6;
}

/* ============================================================
   31. POLISH — status header, chip hero halaman, cta varian
   ============================================================ */
/* Chip putih transparan di hero kota/layanan (badge provinsi dsb). */
.st-hero-chip {
        display: inline-flex;
        align-items: center;
        gap: .25rem;
        background: rgb(255 255 255 / .15);
        backdrop-filter: blur(4px);
        color: #fff;
        border-radius: 999px;
        padding: .375rem .75rem;
        font-size: .75rem;
}
.st-hero-chip svg { color: var(--st-gold-400); }
/* Grup chip baris pada hero layanan. */
.st-hero-chips { display: flex; flex-wrap: wrap; gap: .5rem; }

/* Judul section kiri (grid armada/kota). */
.st-h2 { margin-top: 0; }
.st-h2-mt { margin-top: 3rem; }
.st-page-main .st-h2 { margin-bottom: 1rem; }
.st-page-main > .st-h2 { margin-top: 3rem; }
.st-page-main > .st-h2:first-child { margin-top: 0; }

/* Garis bantu antar blok konten kota/layanan. */
.st-block-sep { margin-top: 3rem; border-top: 2px dashed var(--st-border); padding-top: 2.5rem; }

/* Variasi cta banner dalam container penuh (tanpa bawah). */
.st-ctawrap.st-ctawrap-flush { padding-bottom: 0; }

/* Tabel responsif di prose — bungkus .st-tablewrap di main.js bila perlu. */
.st-prose table { min-width: 30rem; }

/* Hero halaman kota — overlay tambahan utk keterbacaan pada foto terang. */
.st-hero-city .st-breadcrumb a { text-shadow: 0 1px 2px rgb(18 58 85 / .4); }
.st-hero-city .st-breadcrumb .st-bc-current { text-shadow: 0 1px 2px rgb(18 58 85 / .4); }
.st-hero-city-title, .st-hero-city-desc { text-shadow: 0 1px 2px rgb(18 58 85 / .35); }

/* Penomoran langkah — varian gold utk langkah aktif pertama. */
.st-step:first-child .st-step-num { background: var(--st-accent); color: var(--st-dark); }

/* Kartu info di sidebar — jarak antar kartu. */
.st-side > * + * { margin-top: 0; }

/* Fokus tombol chip aktif. */
.st-chip-btn:focus-visible { outline-offset: 2px; }

/* Cegah layout shift pada grid kartu mobil saat gambar gagal. */
.st-vcard-media.st-img-grad { min-height: 10rem; }
.st-acard-media.st-img-grad { min-height: 9rem; }
.st-ccard.st-img-grad { background: linear-gradient(135deg, var(--st-brand-100), var(--st-brand-200)); }

/* Header custom menu fallback: item pertama (Beranda). */
.st-nav > li > a { display: flex; align-items: center; gap: .25rem; border-radius: var(--st-r-sm); padding: .625rem .75rem; font-size: .875rem; font-weight: 600; color: var(--st-slate-700); min-height: 44px; }
.st-nav > li > a:hover { background: var(--st-brand-50); color: var(--st-brand-700); }

/* ============================================================
   32. PENDALAMAN — seleksi, cetak, direktori kota, aksesibilitas
   ============================================================ */
/* Seleksi teks — brand lembut. */
::selection {
        background: rgb(0 153 204 / .18);
        color: inherit;
}

/* Cetak — sembunyikan chrome, tampilkan konten bersih. */
@media print {
        .st-header, .st-drawer, .st-overlay, .st-wa-float, .st-footer,
        .st-cta, .st-quickwrap, .st-pagi { display: none !important; }
        .st-hero, .st-hero-grad, .st-hero-city { background: #fff !important; }
        .st-hero *, .st-hero-grad *, .st-hero-city * { color: #3b4450 !important; }
        body { background: #fff; }
        .st-reveal { opacity: 1 !important; transform: none !important; }
}

/* Direktori kota — grid kartu kota 1/2/3 kolom (halaman Daftar Kota
   & section kota beranda: 1 kolom ponsel, 2 >=640px, 3 >=1024px). */
.st-grid-cities {
        display: grid;
        gap: 1rem;
        grid-template-columns: 1fr;
}
@media (min-width: 640px) {
        .st-grid-cities { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (min-width: 1024px) {
        .st-grid-cities { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}

/* Varian kartu kota tinggi (hero-ish) utk kartu populer. */
.st-ccard-lg { aspect-ratio: 16 / 10; }

/* Dropdown kota dengan thumbnail kecil (menu admin bergambar). */
.st-dd-thumb img {
        width: 100%;
        aspect-ratio: 16 / 9;
        object-fit: cover;
        border-radius: var(--st-r-sm);
        margin-bottom: .375rem;
}

/* Status "tanpa JS" — dropdown nav tetap bisa diakses via fokus. */
html:not(.st-js) .st-nav-item:hover > .st-dropdown { display: block; }

/* Pita headline kecil (eyebrow) di hero gradien halaman. */
.st-hero-eyebrow {
        display: block;
        margin-bottom: .5rem;
        font-size: .75rem;
        font-weight: 700;
        text-transform: uppercase;
        letter-spacing: .1em;
        color: var(--st-gold-300);
}

/* Hasil pencarian — header ringkas. */
.st-search-head {
        display: flex;
        flex-wrap: wrap;
        align-items: flex-end;
        justify-content: space-between;
        gap: 1rem;
        margin-bottom: 1.5rem;
}
.st-search-head p { font-size: .875rem; color: var(--st-muted-fg); }

/* Pesan kosong (pencarian tanpa hasil, armada kosong per jenis). */
.st-empty {
        padding: 3rem 1rem;
        text-align: center;
}
.st-empty strong { display: block; font-weight: 600; color: var(--st-slate-900); }
.st-empty span { display: block; margin-top: .25rem; font-size: .875rem; color: var(--st-muted-fg); }
.st-empty a { color: var(--st-primary); font-weight: 600; }
.st-empty a:hover { text-decoration: underline; }

/* Drawer — item grup terbuka diberi aksen brand halus. */
.st-drawer-group.is-open > .st-drawer-group-btn { color: var(--st-primary); }

/* Form kontak — kartu pembungkus form. */
.st-kontak-card {
        border: 1px solid var(--st-border);
        background: #fff;
        border-radius: var(--st-r-xl);
        padding: 1.5rem;
        box-shadow: var(--st-sh-sm);
}
.st-kontak-card h2 { font-size: 1.5rem; font-weight: 800; color: var(--st-slate-900); }
.st-kontak-card > p { margin-top: .5rem; font-size: .9375rem; line-height: 1.6; color: var(--st-slate-600); }

/* Statistik tentang-kami — angka besar. */
.st-stat strong { letter-spacing: -.02em; }

/* Gradien teks pendukung (aksen gold pada angka). */
.st-text-gold { color: var(--st-gold-400); }
.st-text-cta { color: var(--st-cta-600); }

/* Anti-loncat layout saat font Google belum termuat. */
.st-header, .st-shead-title, .st-hero-title, .st-footer-col h3 {
        font-synthesis: none;
        text-rendering: optimizeLegibility;
}

/* Header: jaga nav tidak menyusut saat dropdown terbuka. */
.st-nav-item { flex-shrink: 0; }

/* ============================================================
   33. PELENGKAP — util kelas yang dipakai template kota/layanan
   ============================================================ */
/* Tautan aksen CTA di kartu samping (Antar jemput bandara →, dst.). */
.st-cta-link {
        display: inline-flex;
        align-items: center;
        gap: .25rem;
        font-size: .875rem;
        font-weight: 600;
        color: var(--st-cta-600);
}
.st-cta-link:hover { text-decoration: underline; }

/* Daftar 2 kolom dalam kartu samping (layanan: Tersedia di Kota). */
.st-cols-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: 1rem; }
.st-cols-2 li a { display: block; padding: .125rem 0; }

/* Kartu samping — tautan list brand lembut. */
.st-infocard ul a { color: var(--st-slate-600); font-size: .875rem; }
.st-infocard ul a:hover { color: var(--st-primary-dark); text-decoration: underline; }

/* No-JS: jawaban FAQ tetap terbaca tanpa JavaScript. */
html:not(.st-js) .st-acc-body { display: block; }
html:not(.st-js) .st-acc-ico { display: none; }

/* Tautan "Lihat semua kota" pada section kota beranda (bg terang). */
.st-cities-all {
        display: inline-flex;
        align-items: center;
        gap: .375rem;
        font-size: .875rem;
        font-weight: 600;
        color: var(--st-brand-700);
        transition: color .2s ease, gap .2s ease;
        min-height: 44px;
}
.st-cities-all:hover { color: var(--st-brand-800); gap: .5rem; }
.st-cities-all svg { width: 1rem; height: 1rem; }

/* ============================================================
 * v2.2 — SETTING TRANSISI GRADASI PUTIH DARI DASBOR ADMIN
 * --st-grad-s (0–1) = kekuatan gradasi (Pengaturan → Tampilan Kartu).
 * Body class st-grad-off-<area> = gradasi putih DIMATIKAN untuk area
 * itu (mobil/layanan/kota/artikel): foto armada & artikel kembali polos
 * tanpa overlay, kartu kota & layanan kembali ke gradien GELAP klasik
 * (pre-v1.9) dengan teks terang agar tetap terbaca di atas foto.
 * ============================================================ */
body.st-grad-off-mobil .st-vcard-media::after,
body.st-grad-off-artikel .st-acard-media::after { content: none; }
body.st-grad-off-kota .st-ccard-ol {
        background: linear-gradient(to top, rgb(0 0 0 / .72), rgb(0 0 0 / .3) 55%, transparent 85%);
}
body.st-grad-off-kota .st-ccard-body h3,
body.st-grad-off-kota .st-ccard-prov,
body.st-grad-off-kota .st-ccard-more { color: #fff; text-shadow: 0 1px 3px rgb(0 0 0 / .45); }
body.st-grad-off-kota .st-ccard-prov { color: rgb(255 255 255 / .82); }
body.st-grad-off-kota .st-ccard-more { color: var(--st-gold-300, #ffd27a); }
body.st-grad-off-kota .st-ccard-more svg { color: var(--st-gold-300, #ffd27a); }
body.st-grad-off-layanan .st-catcard-ol {
        background: linear-gradient(to top, rgb(0 0 0 / .74), rgb(0 0 0 / .3) 55%, transparent 85%);
}
body.st-grad-off-layanan .st-catcard-body h3,
body.st-grad-off-layanan .st-catcard-desc,
body.st-grad-off-layanan .st-catcard-more { color: #fff; text-shadow: 0 1px 3px rgb(0 0 0 / .45); }
/* v2.10/v2.11 — warna pilihan owner (Pengaturan → Warna) tetap berlaku di
 * mode gradien gelap; kosong = putih (judul/deskripsi) & emas (link).
 * v2.11 — selektor mati .st-catcard-foot a diganti .st-catcard-more. */
body.st-grad-off-layanan .st-catcard-body h3 { color: var(--st-judul-card, #fff); }
body.st-grad-off-layanan .st-catcard-desc { color: var(--st-desc-layanan, rgb(255 255 255 / .85)); }
body.st-grad-off-layanan .st-catcard-more { color: var(--st-link-layanan, var(--st-gold-300, #ffd27a)); }

/* v2.2 — Direktori /rental-mobil-kota/: heading wilayah & provinsi. */
.st-cities-region-head {
        display: flex;
        align-items: baseline;
        justify-content: space-between;
        gap: 1rem;
        flex-wrap: wrap;
        padding-bottom: .75rem;
        border-bottom: 2px solid var(--st-brand-100, #e0f3fa);
}
.st-cities-region-count {
        font-size: .8125rem;
        font-weight: 600;
        color: var(--st-brand-700);
        background: var(--st-brand-50, #f0f9fd);
        padding: .25rem .75rem;
        border-radius: 999px;
}
.st-cities-prov {
        display: flex;
        align-items: center;
        gap: .375rem;
        margin: 1.75rem 0 0;
        font-size: 1rem;
        font-weight: 700;
        color: var(--st-slate-800, #1e293b);
}
.st-cities-prov svg { color: var(--st-brand-600, #0099cc); }
.st-cities-prov span { font-weight: 500; font-size: .8125rem; color: var(--st-slate-500); }

/* Placeholder gambar rusak (main.js) — gradien + pin + label. */
.st-img-fallback {
        position: absolute;
        inset: 0;
        z-index: 0;
        display: flex;
        align-items: center;
        justify-content: center;
        flex-direction: column;
        gap: .375rem;
        color: rgb(255 255 255 / .9);
        min-height: 8rem;
        overflow: hidden;
}
.st-img-fallback-label {
        max-width: 90%;
        font-size: .75rem;
        font-weight: 700;
        text-align: center;
        text-shadow: 0 1px 2px rgb(0 0 0 / .35);
}
.st-vcard-media, .st-acard-media, .st-ccard { position: relative; }

/* Semua konten halaman kota/layanan — kartu kategori 2 kolom >=640px. */
@media (min-width: 640px) {
        .st-page-grid-city .st-grid-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

/* Nav aktif bawaan vs walker kustom — samakan tinggi. */
.st-nav .st-dd-item { min-height: 0; }

/* ============================================================
   42. V1.2.0 — REDESAIN HOMEPAGE PARITAS THEME TRAVELNESIA
   Kartu kategori foto (catcard), ikonbox, langkah gelap kaca,
   section selang-seling, dan perapian kartu kota/armada/CTA.
   ============================================================ */
/* Section selang-seling + langkah gelap (paritas tn-section-alt/dark). */
.st-section-alt { background: rgb(242 244 248 / .5); }
.st-sec-steps {
        background: linear-gradient(to bottom right, var(--st-brand-800), var(--st-brand-950));
        color: #fff;
}

/* Kartu kategori layanan — v1.9 Transisi Gradasi Putih: foto melebur ke
   putih di bawah + teks gelap (paritas tn-catcard; foto lokal assets/).
   (Sebelumnya: overlay hitam + teks putih.) */
.st-catcard {
        position: relative;
        display: block;
        height: 320px;
        border-radius: var(--st-r-xl);
        overflow: hidden;
        box-shadow: var(--st-sh-sm);
        text-decoration: none;
        color: var(--st-slate-900);
        cursor: pointer;
        transition: box-shadow .3s ease;
        background: linear-gradient(to bottom right, var(--st-brand-100), var(--st-brand-200));
}
.st-catcard:hover { box-shadow: var(--st-sh-lg); }
.st-catcard-bg {
        position: absolute;
        inset: 0;
        width: 100%;
        height: 100%;
        object-fit: cover;
        transition: transform .5s ease;
}
.st-catcard:hover .st-catcard-bg { transform: scale(1.05); }
.st-catcard-ol {
        position: absolute;
        inset: 0;
        /* v1.9 — Transisi Gradasi Putih (sebelumnya gradien hitam).
         * v2.2 — kekuatan --st-grad-s; mati → gradien gelap klasik (blok v2.2). */
        background: linear-gradient(to top, rgb(255 255 255 / calc(.97 * var(--st-grad-s, 1))) 0%, rgb(255 255 255 / calc(.85 * var(--st-grad-s, 1))) 32%, rgb(255 255 255 / calc(.42 * var(--st-grad-s, 1))) 60%, transparent 84%);
}
.st-catcard-body { position: absolute; left: 0; right: 0; bottom: 0; padding: 1.25rem; display: block; }
.st-catcard-icon {
        display: inline-flex;
        align-items: center;
        justify-content: center;
        height: 44px;
        width: 44px;
        border-radius: var(--st-r-md);
        margin-bottom: .75rem;
        box-shadow: var(--st-sh-lg);
        color: #fff;
        background: linear-gradient(to bottom right, var(--st-cta-500), var(--st-gold-600));
}
/* Chip ikon berselang warna — 6 layanan (paritas tn-cat-icon-*). */
.st-catcard:nth-child(6n+2) .st-catcard-icon { background: linear-gradient(to bottom right, #f29714, #c74b2e); }
.st-catcard:nth-child(6n+3) .st-catcard-icon { background: linear-gradient(to bottom right, #30aadb, #0a3d52); }
.st-catcard:nth-child(6n+4) .st-catcard-icon { background: linear-gradient(to bottom right, #25d366, #0f7a3d); }
.st-catcard:nth-child(6n+5) .st-catcard-icon { background: linear-gradient(to bottom right, #f5a83e, #9c560a); }
.st-catcard:nth-child(6n) .st-catcard-icon { background: linear-gradient(to bottom right, #5fc0e8, #006a8f); }
.st-catcard-body h3 {
        margin: 0;
        /* v2.10 — bisa diatur dari Pengaturan → Warna → "Warna Judul Card Layanan". */
        color: var(--st-judul-card, var(--st-slate-900));
        font-size: 1.25rem;
        font-weight: 800;
}
.st-catcard-desc {
        display: -webkit-box;
        -webkit-line-clamp: 2;
        -webkit-box-orient: vertical;
        overflow: hidden;
        margin-top: .375rem;
        font-size: .75rem;
        /* v2.11 — bisa diatur dari Pengaturan → Warna → "Warna Teks Card Layanan". */
        color: var(--st-desc-layanan, var(--st-slate-600));
        line-height: 1.625;
}
.st-catcard-foot {
        margin-top: .75rem;
        display: flex;
        align-items: center;
        justify-content: space-between;
        gap: .5rem;
        flex-wrap: wrap;
}
.st-catcard-more {
        display: inline-flex;
        align-items: center;
        gap: .25rem;
        font-size: .875rem;
        font-weight: 700;
        /* v2.11 — bisa diatur dari Pengaturan → Warna → "Warna Link Card Layanan". */
        color: var(--st-link-layanan, var(--st-brand-700));
        transition: gap .2s ease;
}
.st-catcard:hover .st-catcard-more { gap: .625rem; }

/* v2.13 — kartu layanan ("Layanan Kami"): 2 KARTU PER BARIS SEJAK MOBILE
 * (permintaan owner; v2.12 sempat 1 kolom di < 768px — salah arah).
 * ≥1024px = 3 kolom seperti semula. Spesifisitas .st-grid.st-grid-services
 * mengalahkan .st-grid-3 tanpa peduli urutan. */
.st-grid.st-grid-services { grid-template-columns: repeat(2, minmax(0, 1fr)); }
@media (min-width: 1024px) { .st-grid.st-grid-services { grid-template-columns: repeat(3, minmax(0, 1fr)); } }

/* v2.13 — poles kartu layanan di layar sempit: font/padding/ikon lebih kecil
 * agar judul, deskripsi & link "Lihat Layanan" lega di kartu ±180px. */
@media (max-width: 767px) {
        .st-grid.st-grid-services { gap: .75rem; }
        .st-grid.st-grid-services .st-catcard-body { padding: .75rem; }
        .st-grid.st-grid-services .st-catcard-icon { height: 36px; width: 36px; margin-bottom: .5rem; }
        .st-grid.st-grid-services .st-catcard-body h3 { font-size: 1rem; }
        .st-grid.st-grid-services .st-catcard-desc { font-size: .6875rem; margin-top: .25rem; }
        .st-grid.st-grid-services .st-catcard-foot { margin-top: .5rem; }
        .st-grid.st-grid-services .st-catcard-more { font-size: .75rem; }
}

/* Ikonbox kenapa-memilih — paritas tn-iconbox. */
.st-iconbox {
        background: #fff;
        border: 1px solid var(--st-border);
        border-radius: var(--st-r-lg);
        padding: 1rem;
        transition: all .3s ease;
        min-width: 0;
}
.st-iconbox:hover { box-shadow: var(--st-sh-lg); border-color: rgb(0 153 204 / .4); }
.st-iconbox-icon {
        display: inline-flex;
        align-items: center;
        justify-content: center;
        height: 40px;
        width: 40px;
        border-radius: var(--st-r-md);
        background: rgb(0 153 204 / .1);
        color: var(--st-primary);
        margin-bottom: .75rem;
        transition: all .3s ease;
}
.st-iconbox:hover .st-iconbox-icon { background: var(--st-primary); color: #fff; }
.st-iconbox h3 { margin: 0; font-size: .875rem; font-weight: 700; color: var(--st-slate-900); }
.st-iconbox p { margin: .25rem 0 0; font-size: .75rem; color: var(--st-slate-600); line-height: 1.625; }
@media (min-width: 768px) {
        .st-iconbox { padding: 1.5rem; }
        .st-iconbox-icon { height: 48px; width: 48px; }
        .st-iconbox h3 { font-size: 1rem; }
        .st-iconbox p { font-size: .875rem; }
}

/* Langkah pemesanan — kartu kaca + chip nomor emas + panah
   (paritas tn-steps-wrap / tn-step pada section gelap). */
.st-steps-wrap { display: grid; gap: 1.25rem; }
@media (min-width: 640px) { .st-steps-wrap { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (min-width: 1024px) { .st-steps-wrap { grid-template-columns: repeat(4, minmax(0, 1fr)); } }
.st-sec-steps .st-step {
        position: relative;
        background: rgb(255 255 255 / .1);
        backdrop-filter: blur(8px);
        border: 1px solid rgb(255 255 255 / .15);
        border-radius: var(--st-r-lg);
        padding: 1.25rem;
        transition: background .2s ease;
}
.st-sec-steps .st-step:hover { background: rgb(255 255 255 / .16); }
.st-step-arrow {
        position: absolute;
        top: 50%;
        right: -1.1rem;
        z-index: 2;
        color: rgb(255 255 255 / .45);
        font-size: 1.25rem;
        line-height: 1;
        display: none;
}
@media (min-width: 1024px) { .st-step-arrow { display: block; } }
.st-step-icon {
        display: inline-flex;
        align-items: center;
        justify-content: center;
        height: 48px;
        width: 48px;
        border-radius: var(--st-r-md);
        background: var(--st-gold-400);
        color: var(--st-brand-950);
        margin-bottom: .875rem;
        font-size: 1.25rem;
        font-weight: 800;
        box-shadow: var(--st-sh-lg);
}
.st-sec-steps .st-step h3 { margin: 0; color: #fff; font-size: 1rem; font-weight: 800; }
.st-sec-steps .st-step p { margin: .375rem 0 0; font-size: .875rem; color: rgb(255 255 255 / .78); line-height: 1.625; }

/* Kartu kota — tile foto kecil 6 kolom (paritas tn-ccard + tn-grid-6). */
.st-grid-cities { grid-template-columns: repeat(2, minmax(0, 1fr)); }
@media (min-width: 768px) { .st-grid-cities { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
@media (min-width: 1024px) { .st-grid-cities { grid-template-columns: repeat(6, minmax(0, 1fr)); } }
.st-ccard { aspect-ratio: auto; height: 150px; border-radius: var(--st-r-md); }
.st-ccard-body { padding: .625rem; }
.st-ccard-body h3 { font-size: .875rem; }
.st-ccard-prov { font-size: 10px; }
.st-ccard-more { display: none; }
@media (min-width: 768px) {
        .st-ccard { height: 176px; }
        .st-ccard-body { padding: .875rem; }
        .st-ccard-body h3 { font-size: 1rem; }
        .st-ccard-prov { font-size: 11px; }
}
