/*
Theme Name: Transnesia
Theme URI: https://transnesia.com
Author: Transnesia
Author URI: https://transnesia.com
Description: desain SAMA PERSIS situs resmi Transnesia — rental mobil 12 kota. Warna brand #0064d2, aksen gold #fdb714, CTA orange #ff5d0a, tombol WA hijau #25d366, footer brand-950 #082549, font Geist. Lengkap beranda (hero + quick booking + layanan + armada + kota + keunggulan + langkah + artikel + testimoni + FAQ), halaman kota & layanan kota, armada dengan filter, blog, FAQ, kontak, tentang, detail mobil /mobil/<slug>/, pencarian /cari/?s=, dan WA float. Bekerja berpasangan dengan plugin "Transnesia Core" (pengaturan situs + import konten demo anti-timeout). Semua konten dapat diedit dari dasbor.
Version: 1.4.0
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: transnesia
Tags: custom-colors, custom-logo, custom-menu, featured-images, one-column, responsive-layout, translation-ready
*/

/* ============================================================
   TRANSGNESIA — STYLESHEET LENGKAP
   Port 1:1 dari desain situs situs Transnesia (Tailwind 4):
   - Brand blue tiket/traveloka style #0064D2 (brand-600)
   - Gold accent #FDB714 (gold-400), CTA orange #FF5D0A (cta-500)
   - WA green #25D366 (hover #1EB455), dark brand-950 #082549
   - Radius 0.75rem/1rem/1.5rem (rounded-xl/2xl/3xl), font Geist
   - Body putih, teks slate-900, grid kartu mobil 2 kolom ponsel
     dan 3 kolom di >=1024px
   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(--tn-fg);
        font-family: var(--tn-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(--tn-border); margin: 2rem 0; }

:root {
        /* Font — Google Geist + fallback sistem. */
        --tn-font: 'Geist', ui-sans-serif, system-ui, -apple-system, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;

        /* Skala brand (design tokens situs resmi — brand blue tiket/traveloka). */
        --tn-brand-50:  #eef6ff;
        --tn-brand-100: #d9eaff;
        --tn-brand-200: #bcdcff;
        --tn-brand-300: #8ec6ff;
        --tn-brand-400: #59a6ff;
        --tn-brand-500: #3385fc;
        --tn-brand-600: #0064d2;
        --tn-brand-700: #0052ac;
        --tn-brand-800: #084586;
        --tn-brand-900: #0c3a6d;
        --tn-brand-950: #082549;

        /* Skala gold (aksen kuning #FDB714). */
        --tn-gold-50:  #fffaeb;
        --tn-gold-100: #fef1c7;
        --tn-gold-200: #fde288;
        --tn-gold-300: #fccf4a;
        --tn-gold-400: #fdb714;
        --tn-gold-500: #f59f00;
        --tn-gold-600: #d77e02;
        --tn-gold-700: #b45c06;
        --tn-gold-800: #92470c;
        --tn-gold-900: #783a0d;

        /* Skala CTA (orange #FF7B24). */
        --tn-cta-50:  #fff5ed;
        --tn-cta-100: #ffe8d4;
        --tn-cta-200: #ffcda8;
        --tn-cta-300: #ffaa71;
        --tn-cta-400: #ff7b24;
        --tn-cta-500: #ff5d0a;
        --tn-cta-600: #f54305;
        --tn-cta-700: #cc3309;

        /* Skala slate (netral). */
        --tn-slate-50:  #f8fafc;
        --tn-slate-100: #f1f5f9;
        --tn-slate-200: #e2e8f0;
        --tn-slate-300: #cbd5e1;
        --tn-slate-400: #94a3b8;
        --tn-slate-500: #64748b;
        --tn-slate-600: #475569;
        --tn-slate-700: #334155;
        --tn-slate-800: #1e293b;
        --tn-slate-900: #0f172a;

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

        /* Token turunan. */
        --tn-bg:           #ffffff;
        --tn-fg:           #0f172a;
        --tn-muted:        #f1f5f9;
        --tn-muted-fg:     #64748b;
        --tn-border:       #e2e8f0;
        --tn-ring:         #fdb714;

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

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

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

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

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

.tn-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. */
.tn-shell a[href="#tn-main"]:focus {
        position: fixed;
        top: .75rem; left: .75rem;
        z-index: 100;
        background: var(--tn-dark);
        color: #fff;
        padding: .75rem 1.25rem;
        border-radius: var(--tn-r-md);
        box-shadow: var(--tn-sh-lg);
}

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

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

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

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

/* ============================================================
   3. TOMBOL / BADGE / CHIP
   ============================================================ */
.tn-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;
}
.tn-btn svg { flex-shrink: 0; }

.tn-btn-primary {
        background: var(--tn-primary);
        color: #fff;
        box-shadow: var(--tn-sh-md);
}
.tn-btn-primary:hover { background: var(--tn-primary-dark); box-shadow: var(--tn-sh-lg); }

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

.tn-btn-gold {
        background: var(--tn-accent);
        color: var(--tn-dark);
        font-weight: 700;
        box-shadow: var(--tn-sh-md);
}
.tn-btn-gold:hover { background: var(--tn-gold-300); box-shadow: var(--tn-sh-lg); }

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

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

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

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

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

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

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

/* Badge umum. */
.tn-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;
}
.tn-badge-soft { background: var(--tn-brand-50); color: var(--tn-brand-700); }
.tn-badge-brand { background: var(--tn-primary); color: #fff; }
.tn-badge-gold { background: var(--tn-gold-400); color: var(--tn-dark); font-weight: 700; }
.tn-badge-glass {
        background: rgb(255 255 255 / .15);
        color: #fff;
        backdrop-filter: blur(4px);
}

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

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

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

/* Top strip — brand-950, h-9, text-xs. */
.tn-topbar {
        background: var(--tn-dark);
        color: rgb(255 255 255 / .9);
}
.tn-topbar-in {
        display: flex;
        align-items: center;
        justify-content: space-between;
        height: 2.25rem;
        max-width: var(--tn-maxw);
        margin: 0 auto;
        padding: 0 1rem;
        font-size: .75rem;
        gap: 1rem;
}
.tn-topbar-left {
        display: none;
        align-items: center;
        gap: .375rem;
}
.tn-topbar-left svg { color: var(--tn-gold-400); }
.tn-topbar-right {
        display: flex;
        align-items: center;
        gap: 1rem;
}
.tn-topbar-right > span { display: inline-flex; align-items: center; gap: .375rem; }
.tn-topbar-right svg { color: var(--tn-gold-400); }
.tn-topbar-link {
        font-weight: 500;
        color: var(--tn-gold-300);
        transition: color .2s ease;
}
.tn-topbar-link:hover { color: var(--tn-gold-200); }

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

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

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

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

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

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

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

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

/* Drawer mobile + overlay. */
.tn-overlay {
        position: fixed;
        inset: 0;
        background: rgb(15 23 42 / .5);
        opacity: 0;
        visibility: hidden;
        transition: opacity .25s ease, visibility .25s ease;
        z-index: 90;
}
.tn-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.tn-drawer-open { overflow: hidden; }
body.tn-drawer-open .tn-overlay { opacity: 1; visibility: visible; }
body.tn-drawer-open .tn-drawer { transform: none; }

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

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

/* ============================================================
   5. HERO BERANDA — foto + gradien brand-950→800
   ============================================================ */
.tn-hero {
        position: relative;
        overflow: hidden;
        background: var(--tn-dark);
}
.tn-hero > img {
        position: absolute;
        inset: 0;
        width: 100%;
        height: 100%;
        object-fit: cover;
}
.tn-hero-ol {
        position: absolute;
        inset: 0;
        background: linear-gradient(to right, rgb(8 37 73 / .92), rgb(12 58 109 / .7) 55%, rgb(8 69 134 / .3));
}
.tn-hero-in {
        position: relative;
        /* 1rem horizontal — elemen ini juga .tn-container; shorthand tanpa
           padding samping membuat teks hero menempel ke tepi layar. */
        padding: 3.5rem 1rem 7rem;
}
.tn-hero-badge {
        display: inline-flex;
        align-items: center;
        gap: .5rem;
        margin-bottom: .75rem;
        padding: .375rem 1rem;
        border-radius: 999px;
        background: rgb(255 255 255 / .1);
        backdrop-filter: blur(4px);
        font-size: .75rem;
        font-weight: 600;
        color: var(--tn-gold-300);
}
.tn-hero-badge svg { color: var(--tn-gold-400); fill: var(--tn-gold-400); }
.tn-hero-title {
        max-width: 42rem;
        font-size: 1.875rem;
        font-weight: 800;
        line-height: 1.2;
        letter-spacing: -.025em;
        color: #fff;
}
.tn-hero-sub {
        max-width: 36rem;
        margin-top: 1rem;
        font-size: .875rem;
        line-height: 1.75;
        color: var(--tn-slate-200);
}

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

/* Breadcrumb — chip kecil, chevron pemisah. */
.tn-breadcrumb ol {
        display: flex;
        flex-wrap: wrap;
        align-items: center;
        gap: .25rem;
        font-size: .75rem;
}
.tn-breadcrumb li { display: flex; align-items: center; gap: .25rem; }
.tn-breadcrumb li + li::before {
        content: "";
        width: 14px;
        height: 14px;
        flex-shrink: 0;
        background-color: var(--tn-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;
}
.tn-breadcrumb a {
        font-weight: 500;
        color: var(--tn-slate-500);
}
.tn-breadcrumb a:hover { color: var(--tn-primary-dark); text-decoration: underline; }
.tn-breadcrumb .tn-bc-current { font-weight: 600; color: var(--tn-slate-800); }
/* Varian terang di atas hero gelap. */
.tn-bc-light li + li::before { background-color: rgb(255 255 255 / .6); }
.tn-bc-light a { color: rgb(255 255 255 / .8); }
.tn-bc-light a:hover { color: #fff; }
.tn-bc-light .tn-bc-current { color: #fff; }

/* Hero kota/layanan — foto + gelap, min-height ala situs resmi. */
.tn-hero-city {
        position: relative;
        display: flex;
        align-items: flex-end;
        min-height: 52vh;
        overflow: hidden;
        background: var(--tn-dark);
}
.tn-hero-city.tn-hero-city-sm { min-height: 48vh; background: linear-gradient(to bottom right, var(--tn-brand-800), var(--tn-brand-950)); }
.tn-hero-city > img {
        position: absolute;
        inset: 0;
        width: 100%;
        height: 100%;
        object-fit: cover;
}
.tn-hero-city-ol {
        position: absolute;
        inset: 0;
        background: linear-gradient(to top, rgb(8 37 73 / .95), rgb(8 37 73 / .5) 50%, rgb(8 37 73 / .25));
}
.tn-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));
}
.tn-hero-city-in {
        position: relative;
        width: 100%;
        padding: 4rem 0 2.5rem;
}
.tn-hero-city-title {
        max-width: 48rem;
        margin-top: 1rem;
        font-size: 1.875rem;
        font-weight: 800;
        line-height: 1.2;
        letter-spacing: -.025em;
        color: #fff;
}
.tn-hero-city-desc {
        max-width: 42rem;
        margin-top: .75rem;
        font-size: .875rem;
        line-height: 1.75;
        color: var(--tn-slate-200);
}
.tn-hero-city-actions {
        display: flex;
        flex-wrap: wrap;
        align-items: center;
        gap: .75rem;
        margin-top: 1.5rem;
}

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

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

/* Baris heading kiri + tombol kanan. */
.tn-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
   ============================================================ */
.tn-quickwrap {
        position: relative;
        z-index: 10;
        max-width: 64rem;
        margin: -4rem auto 0;
        padding: 0 1rem;
}
.tn-quickbook {
        background: rgb(255 255 255 / .96);
        backdrop-filter: blur(6px);
        border: 1px solid var(--tn-border);
        border-radius: var(--tn-r-xl);
        padding: 1rem;
        box-shadow: var(--tn-sh-xl);
}
.tn-quickbook-grid {
        display: grid;
        gap: .75rem;
}
.tn-field { display: block; }
.tn-field-label {
        display: block;
        margin-bottom: .375rem;
        font-size: .75rem;
        font-weight: 700;
        text-transform: uppercase;
        letter-spacing: .04em;
        color: var(--tn-slate-500);
}
.tn-quickbook-actions { display: flex; align-items: flex-end; }
.tn-quickbook-actions .tn-btn {
        width: 100%;
        height: 3rem;
        border-radius: var(--tn-r-md);
        padding: 0 2rem;
        font-size: 1rem;
        font-weight: 700;
}
.tn-quicknote {
        margin-top: .75rem;
        font-size: .75rem;
        color: var(--tn-slate-500);
}
.tn-quicknote strong { color: var(--tn-primary-dark); font-weight: 700; }

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

/* Grid util — tn-grid-2/3/4 (sm:2, lg:3/4). */
.tn-grid { display: grid; gap: 1rem; }
.tn-grid-2 { grid-template-columns: 1fr; }
.tn-grid-3 { grid-template-columns: 1fr; }
.tn-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). */
.tn-grid-cars {
        display: grid;
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: .75rem;
}

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

.tn-vcard-media {
        position: relative;
        aspect-ratio: 16 / 10;
        overflow: hidden;
        background: var(--tn-slate-100);
}
.tn-vcard-media img {
        width: 100%;
        height: 100%;
        object-fit: cover;
        transition: transform .5s ease;
}
.tn-vcard:hover .tn-vcard-media img { transform: scale(1.05); }

.tn-vcard-cat {
        position: absolute;
        left: .75rem; top: .75rem;
        background: rgb(255 255 255 / .95);
        color: var(--tn-brand-700);
        box-shadow: var(--tn-sh);
}
.tn-vcard-pop {
        position: absolute;
        right: .75rem; top: .75rem;
        background: var(--tn-gold-400);
        color: var(--tn-dark);
        border: 0;
        font-weight: 700;
        box-shadow: var(--tn-sh);
}
.tn-vcard-pop svg { fill: var(--tn-dark); color: var(--tn-dark); }

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

.tn-vcard-body {
        display: flex;
        flex: 1;
        flex-direction: column;
        padding: 1rem;
}
.tn-vcard-title { font-weight: 700; color: var(--tn-slate-900); }
.tn-vcard:hover .tn-vcard-title { color: var(--tn-primary-dark); }
.tn-vcard-tag {
        display: -webkit-box;
        -webkit-line-clamp: 2;
        -webkit-box-orient: vertical;
        overflow: hidden;
        margin-top: .25rem;
        font-size: .75rem;
        color: var(--tn-slate-500);
}
.tn-vcard-specs {
        display: flex;
        flex-wrap: wrap;
        column-gap: 1rem;
        row-gap: .25rem;
        margin-top: .75rem;
        font-size: .75rem;
        color: var(--tn-slate-600);
}
.tn-vcard-specs li { display: inline-flex; align-items: center; gap: .25rem; }
.tn-vcard-specs svg { color: var(--tn-primary); }
.tn-vcard-specs .spec-hide { display: none; }

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

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

/* ============================================================
   11. KARTU KOTA (CityCard) — foto 16/9 + gradien hitam + panah gold
   ============================================================ */
.tn-ccard {
        position: relative;
        display: flex;
        align-items: flex-end;
        overflow: hidden;
        aspect-ratio: 16 / 9;
        border-radius: var(--tn-r-lg);
        box-shadow: var(--tn-sh-sm);
        transition: transform .3s ease, box-shadow .3s ease;
}
.tn-ccard:hover { transform: translateY(-4px); box-shadow: var(--tn-sh-xl); }
/* Stretched-link — seluruh permukaan kartu kota klik ke halaman kota. */
.tn-ccard-link {
        position: absolute;
        inset: 0;
        z-index: 10;
        border-radius: var(--tn-r-lg);
}
.tn-ccard-link:focus-visible { outline-offset: -2px; }
.tn-ccard img {
        position: absolute;
        inset: 0;
        width: 100%;
        height: 100%;
        object-fit: cover;
        transition: transform .5s ease;
}
.tn-ccard:hover img { transform: scale(1.05); }
.tn-ccard-ol {
        position: absolute;
        inset: 0;
        background: linear-gradient(to top, rgb(0 0 0 / .8), rgb(0 0 0 / .25) 55%, transparent);
}
.tn-ccard-body {
        position: relative;
        width: 100%;
        padding: 1rem;
}
.tn-ccard-body h3 {
        font-size: 1.125rem;
        font-weight: 800;
        color: #fff;
}
.tn-ccard-prov {
        display: block;
        margin-top: .125rem;
        font-size: .75rem;
        color: rgb(255 255 255 / .8);
}
.tn-ccard-more {
        display: inline-flex;
        align-items: center;
        gap: .25rem;
        margin-top: .5rem;
        font-size: .75rem;
        font-weight: 600;
        color: var(--tn-gold-300);
        transition: gap .2s ease;
}
.tn-ccard:hover .tn-ccard-more { gap: .5rem; }

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

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

/* ============================================================
   13. KARTU ARTIKEL (ArticleCard)
   ============================================================ */
.tn-acard {
        display: flex;
        height: 100%;
        flex-direction: column;
        overflow: hidden;
        border: 1px solid var(--tn-border);
        background: #fff;
        border-radius: var(--tn-r-lg);
        box-shadow: var(--tn-sh-sm);
        transition: transform .3s ease, box-shadow .3s ease;
}
.tn-acard:hover { transform: translateY(-4px); box-shadow: var(--tn-sh-lg); }
.tn-acard-media {
        position: relative;
        aspect-ratio: 16 / 9;
        overflow: hidden;
        background: var(--tn-slate-100);
}
.tn-acard-media img {
        width: 100%;
        height: 100%;
        object-fit: cover;
        transition: transform .5s ease;
}
.tn-acard:hover .tn-acard-media img { transform: scale(1.05); }
.tn-acard-cat {
        position: absolute;
        left: .75rem; top: .75rem;
        background: rgb(255 255 255 / .95);
        color: var(--tn-brand-700);
        box-shadow: var(--tn-sh);
}
.tn-acard-body {
        display: flex;
        flex: 1;
        flex-direction: column;
        padding: 1rem;
}
.tn-acard-title {
        display: -webkit-box;
        -webkit-line-clamp: 2;
        -webkit-box-orient: vertical;
        overflow: hidden;
        font-weight: 700;
        line-height: 1.375;
        color: var(--tn-slate-900);
}
.tn-acard:hover .tn-acard-title { color: var(--tn-primary-dark); }
.tn-acard-excerpt {
        display: -webkit-box;
        -webkit-line-clamp: 2;
        -webkit-box-orient: vertical;
        overflow: hidden;
        flex: 1;
        margin-top: .5rem;
        font-size: .75rem;
        color: var(--tn-slate-500);
}
.tn-acard-meta {
        margin-top: .75rem;
        font-size: .75rem;
        color: var(--tn-slate-400);
}

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

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

/* ============================================================
   16. FAQ ACCORDION — chevron rotate, satu terbuka per grup
   ============================================================ */
.tn-accwrap {
        border: 1px solid var(--tn-border);
        background: #fff;
        border-radius: var(--tn-r-lg);
        box-shadow: var(--tn-sh-sm);
        overflow: hidden;
}
.tn-acc-item + .tn-acc-item { border-top: 1px solid var(--tn-slate-200); }
.tn-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(--tn-slate-900);
        transition: background .2s ease;
        min-height: 44px;
}
.tn-acc-head:hover { background: var(--tn-brand-50); }
.tn-acc-ico { display: inline-flex; flex-shrink: 0; color: var(--tn-slate-500); transition: transform .2s ease; }
.tn-acc-item.is-open .tn-acc-ico { transform: rotate(180deg); }
.tn-acc-body { display: none; padding: 0 1rem 1rem; font-size: .875rem; line-height: 1.75; color: var(--tn-slate-600); }
.tn-acc-item.is-open .tn-acc-body { display: block; }

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

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

/* ============================================================
   19. PAGINASI
   ============================================================ */
.tn-pagi { margin-top: 2rem; }
.tn-pagi .nav-links {
        display: flex;
        flex-wrap: wrap;
        align-items: center;
        justify-content: center;
        gap: .375rem;
}
.tn-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(--tn-border);
        background: #fff;
        font-size: .875rem;
        font-weight: 600;
        color: var(--tn-slate-700);
        transition: all .2s ease;
}
.tn-pagi .page-numbers:hover { border-color: var(--tn-primary); color: var(--tn-primary); }
.tn-pagi .page-numbers.current {
        border-color: var(--tn-primary);
        background: var(--tn-primary);
        color: #fff;
}
.tn-pagi .page-numbers.dots { border: 0; background: none; }

/* ============================================================
   20. FORM — rounded-xl, focus ring gold
   ============================================================ */
.tn-input,
.tn-select,
.tn-textarea {
        width: 100%;
        height: 3rem;
        border: 1px solid var(--tn-border);
        border-radius: var(--tn-r-md);
        background: #fff;
        padding: 0 .875rem;
        font-size: .9375rem;
        color: var(--tn-slate-900);
        transition: border-color .2s ease, box-shadow .2s ease;
}
.tn-textarea { height: auto; min-height: 6rem; padding: .75rem .875rem; resize: vertical; }
.tn-select { appearance: none; -webkit-appearance: none; padding-right: 2.25rem; }
.tn-select-wrap { position: relative; }
.tn-select-wrap::after {
        content: "";
        position: absolute;
        right: .875rem; top: 50%;
        width: 16px; height: 16px;
        transform: translateY(-50%);
        pointer-events: none;
        background-color: var(--tn-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;
}
.tn-input:focus,
.tn-select:focus,
.tn-textarea:focus {
        outline: none;
        border-color: var(--tn-gold-400);
        box-shadow: 0 0 0 3px rgb(253 183 20 / .25);
}
.tn-form { display: grid; gap: 1rem; }
.tn-form-note { font-size: .75rem; color: var(--tn-slate-500); }

/* ============================================================
   21. WA FLOAT — fixed bottom-6 right-6, hijau, ping
   ============================================================ */
.tn-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(--tn-wa);
        color: #fff;
        box-shadow: var(--tn-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) {
        .tn-wa-float { right: 1.5rem; bottom: 1.5rem; }
}
.tn-wa-float.tn-show { opacity: 1; visibility: visible; transform: none; }
/* Varian state body (dari main.js: mobile tampil setelah scroll >200px). */
body.tn-wa-show .tn-wa-float { opacity: 1; visibility: visible; transform: none; }
.tn-wa-float:hover { background: var(--tn-wa-dark); transform: scale(1.08); }
.tn-wa-float svg { width: 1.75rem; height: 1.75rem; }
.tn-wa-ping {
        position: absolute;
        inset: 0;
        z-index: -1;
        border-radius: 999px;
        background: rgb(37 211 102 / .4);
        animation: tn-ping 2.5s cubic-bezier(0, 0, .2, 1) infinite;
}
@keyframes tn-ping {
        75%, 100% { transform: scale(1.6); opacity: 0; }
}

/* ============================================================
   22. FOOTER — brand-950 4 kolom
   ============================================================ */
.tn-footer {
        margin-top: auto;
        background: var(--tn-dark);
        color: var(--tn-slate-300);
}
.tn-footer-grid {
        display: grid;
        gap: 2.5rem;
        padding: 3rem 1rem;
        max-width: var(--tn-maxw);
        margin: 0 auto;
}
.tn-footer-logo {
        display: inline-flex;
        align-items: center;
        background: #fff;
        padding: .75rem 1rem;
        border-radius: var(--tn-r-lg);
        box-shadow: var(--tn-sh-lg);
}
.tn-footer-logo img { height: 4rem; width: auto; }
.tn-footer-about {
        margin-top: 1.25rem;
        font-size: .875rem;
        line-height: 1.6;
        color: var(--tn-slate-400);
}
.tn-footer-wa { margin-top: 1.25rem; }
.tn-footer-col h3 {
        margin-bottom: 1rem;
        font-size: .875rem;
        font-weight: 700;
        text-transform: uppercase;
        letter-spacing: .06em;
        color: #fff;
}
.tn-footer-col ul { display: grid; gap: .625rem; font-size: .875rem; }
.tn-footer-col a { color: var(--tn-slate-400); transition: color .2s ease; }
.tn-footer-col a:hover { color: var(--tn-gold-300); }
.tn-footer-cols-2 { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: 1rem; }
.tn-footer-bottom { border-top: 1px solid rgb(255 255 255 / .1); }
.tn-footer-bottom-in {
        display: flex;
        flex-direction: column;
        align-items: center;
        justify-content: space-between;
        gap: .5rem;
        max-width: var(--tn-maxw);
        margin: 0 auto;
        padding: 1.25rem 1rem;
        font-size: .75rem;
        color: var(--tn-slate-500);
        text-align: center;
}

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

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

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

.tn-mobil-desc h2, .tn-h2 {
        font-size: 1.25rem;
        font-weight: 800;
        letter-spacing: -.01em;
        color: var(--tn-slate-900);
}
.tn-fasil {
        border: 1px solid var(--tn-border);
        background: #fff;
        border-radius: var(--tn-r-lg);
        padding: 1.25rem;
        box-shadow: var(--tn-sh-sm);
}
.tn-fasil h3 { font-weight: 700; color: var(--tn-slate-900); }
.tn-fasil ul {
        display: grid;
        gap: .5rem;
        margin-top: .75rem;
        font-size: .875rem;
        color: var(--tn-slate-700);
        list-style: none;
}
.tn-fasil li { display: flex; align-items: flex-start; gap: .5rem; }
.tn-fasil li svg { flex-shrink: 0; margin-top: .125rem; color: var(--tn-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 .tn-container;
   shorthand `padding: 2.5rem 0 3.5rem` akan menghapus padding samping
   1rem dan membuat seluruh konten menempel ke tepi layar. */
.tn-page-body {
        padding-top: 2.5rem;
        padding-bottom: 3.5rem;
}
@media (min-width: 768px) {
        .tn-page-body { padding-top: 3.5rem; }
}
.tn-page-grid { display: grid; gap: 2.5rem; }
.tn-page-main { min-width: 0; }

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

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

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

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

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

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

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

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

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

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

/* Utilitas kecil. */
.tn-center { text-align: center; }
.tn-mt-8 { margin-top: 2rem; }
.tn-mt-6 { margin-top: 1.5rem; }
.tn-muted { color: var(--tn-muted-fg); font-size: .875rem; }
.tn-sec-gray { background: var(--tn-slate-50); }
.tn-sec-dark { background: var(--tn-dark); }
.tn-pt-0 { padding-top: 0; }
.tn-lead { font-size: 1rem; line-height: 1.75; color: var(--tn-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(--tn-r-md); }
.wp-caption-text {
        margin-top: .5rem;
        font-size: .75rem;
        color: var(--tn-slate-500);
        text-align: center;
}
/* Sticky post & penulis komentar. */
.sticky { position: relative; }
.sticky .tn-acard { border-color: var(--tn-brand-300); }
.bypostauthor { position: relative; }

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

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

/* Status & pesan WP. */
.tn-wp-msg {
        border-radius: var(--tn-r-md);
        border: 1px solid var(--tn-border);
        background: var(--tn-slate-50);
        padding: 1rem 1.25rem;
        font-size: .875rem;
        color: var(--tn-slate-700);
}
.tn-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(--tn-border);
        border-radius: var(--tn-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(--tn-slate-500); }
.comment-meta .avatar { border-radius: 999px; }
.comment-content { margin-top: .5rem; font-size: .9375rem; line-height: 1.7; color: var(--tn-slate-700); }
.comment-form { display: grid; gap: .875rem; }
.comment-form label { font-size: .8125rem; font-weight: 600; color: var(--tn-slate-700); }
.comment-form input:not([type="submit"]):not([type="checkbox"]),
.comment-form textarea {
        width: 100%;
        border: 1px solid var(--tn-border);
        border-radius: var(--tn-r-md);
        padding: .625rem .875rem;
        font-size: .9375rem;
}
.comment-form input[type="submit"] {
        justify-self: start;
        background: var(--tn-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(--tn-primary-dark); }

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

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

/* Jaga konten editor agar tidak meluber. */
.tn-prose > * { max-width: 100%; }
.tn-prose pre {
        overflow-x: auto;
        background: var(--tn-slate-900);
        color: var(--tn-slate-100);
        padding: 1rem 1.25rem;
        border-radius: var(--tn-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). */
.tn-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;
}
.tn-hero-chip svg { color: var(--tn-gold-400); }
/* Grup chip baris pada hero layanan. */
.tn-hero-chips { display: flex; flex-wrap: wrap; gap: .5rem; }

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

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

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

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

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

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

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

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

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

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

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

/* Cetak — sembunyikan chrome, tampilkan konten bersih. */
@media print {
        .tn-header, .tn-drawer, .tn-overlay, .tn-wa-float, .tn-footer,
        .tn-cta, .tn-quickwrap, .tn-pagi { display: none !important; }
        .tn-hero, .tn-hero-grad, .tn-hero-city { background: #fff !important; }
        .tn-hero *, .tn-hero-grad *, .tn-hero-city * { color: #0f172a !important; }
        body { background: #fff; }
        .tn-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). */
.tn-grid-cities {
        display: grid;
        gap: 1rem;
        grid-template-columns: 1fr;
}
@media (min-width: 640px) {
        .tn-grid-cities { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (min-width: 1024px) {
        .tn-grid-cities { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

/* Placeholder gambar rusak (main.js) — gradien + pin + label. */
.tn-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;
}
.tn-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);
}
.tn-vcard-media, .tn-acard-media, .tn-ccard { position: relative; }

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

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