body {
    background: linear-gradient(135deg, #FF8C00 0%, #1a1a1a 100%);
    background-attachment: fixed; /* biar gradient tidak "putus" saat halaman di-scroll */
    font-family: 'Segoe UI', Arial, sans-serif;
}
.login-bg {
    background: linear-gradient(135deg, #FF8C00 0%, #1a1a1a 100%);
}
.login-card {
    border-top: 4px solid #FF8C00;
}
.login-card .btn-dark {
    background-color: #1a1a1a;
    border-color: #1a1a1a;
}
.login-card .btn-dark:hover {
    background-color: #FF8C00;
    border-color: #FF8C00;
}

/* ===== Sidebar disamakan dengan tema login ===== */
.sidebar {
    width: 230px;
    min-height: 100vh;
    min-height: 100dvh; /* FIX: viewport dinamis, override baris di atas di browser yg support */
    background: #1a1a1a;
    display: flex;
    flex-direction: column;
}
.sidebar .nav-link {
    border-radius: 8px;
    margin-bottom: 4px;
}
.sidebar .nav-link.active {
    background: #FF8C00;
    color: #fff !important;
}
.sidebar .nav-link:not(.active):hover {
    background: rgba(255,140,0,0.15);
    color: #fff !important;
}

.content {
    width: calc(100% - 230px);
    min-width: 0;
}

/* ===== Card statistik: putih solid + aksen oranye ===== */
.card-stat {
  background: #ffffff;
  border: none;
  border-top: 3px solid #FF8C00;
  border-radius: 12px;
  box-shadow: 0 2px 10px rgba(0,0,0,0.15);
  color: #1a1a1a; /* default teks di dalam card jadi gelap */
}

.card-stat h3,
.card-stat h4,
.card-stat .fw-bold,
.card-stat .angka,
.card-stat .value {
  color: #1a1a1a !important;
  text-shadow: none;
}

/* ===== Judul halaman ("Dashboard Kasir") disesuaikan biar kontras dengan background gelap/oranye ===== */
.content h1,
.content h2,
.content h4.fw-bold {
    color: #ffffff;
    text-shadow: 0 1px 2px rgba(0,0,0,0.25);
}

/* ===== Mobile topbar disamakan dengan sidebar ===== */
.mobile-topbar {
    display: none;
    align-items: center;
    gap: 12px;
    background: #1a1a1a;
    color: #fff;
    padding: 10px 16px;
    position: sticky;
    top: 0;
    z-index: 1030;
}
.mobile-topbar .btn-toggle-sidebar {
    background: transparent;
    border: none;
    color: #fff;
    font-size: 1.5rem;
    line-height: 1;
    padding: 4px 8px;
}
.mobile-topbar .brand {
    font-weight: 600;
}

/* Overlay gelap di belakang sidebar saat dibuka di mobile */
.sidebar-overlay {
    display: none;
    position: fixed;
    inset: 0;
    background: rgba(0, 0, 0, 0.5);
    z-index: 1040;
}
.sidebar-overlay.show {
    display: block;
}

/* ===== Desktop/tablet besar: sidebar "menempel" penuh setinggi layar,
   logo di atas & info user/logout di bawah tetap diam di tempat, hanya
   daftar menu (ul.nav-pills) yang scroll sendiri kalau menu terlalu
   panjang (mis. role Super Admin dengan banyak menu). ===== */
@media (min-width: 992px) {
    .sidebar {
        height: 100vh;
        height: 100dvh; /* viewport dinamis, sama seperti di breakpoint mobile */
        position: sticky;
        top: 0;
        overflow: hidden; /* sidebar sendiri tidak ikut scroll bareng halaman */
    }
    .sidebar > ul.nav-pills {
        flex: 1 1 auto;
        min-height: 0; /* penting: mengizinkan area ini menyusut & scroll sendiri, bukan mendorong elemen lain keluar layar */
        flex-wrap: nowrap; /* WAJIB: override flex-wrap:wrap bawaan class .nav dari Bootstrap.
                               Tanpa ini, browser bikin KOLOM BARU ke samping begitu satu
                               kolom penuh (karena arah wrap masih aktif), bukan scroll ke bawah. */
        overflow-x: hidden; /* jaga-jaga: cegah scrollbar horizontal kalau ada label menu yang panjang */
        overflow-y: auto;
        -webkit-overflow-scrolling: touch;
    }
    /* Scrollbar tipis khusus area menu supaya lebih rapi (opsional, Chrome/Edge/Safari) */
    .sidebar > ul.nav-pills::-webkit-scrollbar {
        width: 5px;
    }
    .sidebar > ul.nav-pills::-webkit-scrollbar-thumb {
        background: rgba(255,255,255,.2);
        border-radius: 10px;
    }
}

/* ===== Breakpoint mobile & tablet kecil ===== */
@media (max-width: 991.98px) {
    .mobile-topbar { display: flex; }
    .sidebar {
        position: fixed;
        top: 0;
        left: 0;
        height: 100vh;
        height: 100dvh; /* FIX: pakai tinggi viewport aktual (toolbar Chrome ikut dihitung) */
        transform: translateX(-100%);
        transition: transform 0.25s ease;
        overflow-y: auto;
        -webkit-overflow-scrolling: touch; /* FIX: scroll lebih halus di iOS/Android WebKit */
        padding-bottom: env(safe-area-inset-bottom, 16px); /* FIX: jarak aman dari gesture bar Android */
        z-index: 1050;
    }
    .sidebar.show { transform: translateX(0); }
    .content {
        width: 100%;
        padding: 1rem !important;
    }
    .content .d-flex.justify-content-between {
        flex-wrap: wrap;
        gap: 8px;
    }
    h4.fw-bold { font-size: 1.15rem; }
    .card-stat h3 {
        font-size: 1.25rem;
        word-break: break-word;
    }
}
@media print {
    .no-print { display: none; }
}
@page {
    size: 80mm auto; /* ganti ke 58mm auto kalau kertas printer Anda 58mm */
    margin: 0;
}