/* =========================================================================
   Aroma Luxe POS — tema premium hitam · putih · champagne gold
   ========================================================================= */
:root{
  /* ============ KONTRAK TEMA (diubah dari Pengaturan -> Tampilan) ============
     Nilai di bawah adalah tema bawaan "Rose". Halaman Tampilan menulis ulang
     variabel ini lewat berkas /theme.css sehingga berlaku untuk seluruh aplikasi. */
  /* permukaan gelap (sidebar, footer, header kasir, tombol utama) */
  --hitam:#8E1B4B; --hitam-2:#A6245A; --hitam-3:#C13370; --hitam-4:#B8386D;
  --tua-gelap:#6E1239; --tua-gelap-2:#7A1442; --tua-gelap-3:#9C2058; --tua-hover:#9A2154;
  /* aksen */
  --emas:#D6336C; --emas-2:#FFB4CD; --emas-3:#FFD3E2; --emas-tua:#A81E56; --emas-lembut:#FDE7F0;
  /* teks di atas permukaan gelap */
  --on-tua:#F6DCE7; --on-tua-2:#F0C7DA; --on-tua-3:#E2C2D1; --on-tua-4:#FBE0EB;
  /* latar terang */
  --putih:#ffffff; --krem:#FDE7F1; --krem-2:#FBD9E8; --krem-3:#FCE3EE; --krem-hover:#FFF9FC;
  --grad-1:#FDE0EC; --grad-2:#FDEBF3; --grad-3:#FEF4F8; --grad-4:#FDE4EF;
  /* teks & garis */
  --teks:#3B1226; --teks-2:#77525F; --teks-3:#7A5766;
  --garis:#F3DCE7; --garis-2:#E9C4D5;
  /* warna status (tidak ikut tema) */
  --ok:#26714F; --ok-bg:#E9F6EF; --ok-batas:#C3E4D3;
  --warn:#8F5A12; --warn-bg:#FDF3E3; --warn-batas:#F2DEBD;
  --err:#C0264A; --err-bg:#FDE9EF; --err-batas:#F3C4D3;
  --info:#2A6BA8; --info-bg:#EAF3FB;
  /* tripel RGB untuk lapisan transparan (bayangan, latar gelap transparan) */
  --rgb-tua:142,27,75; --rgb-tua-pekat:88,10,45; --rgb-aksen:214,51,108; --rgb-aksen-muda:255,180,205;
  /* bentuk & ukuran */
  --radius:14px; --radius-sm:10px; --radius-lg:20px;
  --bayang:0 12px 32px rgba(var(--rgb-tua),.13);
  --bayang-2:0 2px 12px rgba(var(--rgb-tua),.08);
  --sidebar:272px; --topbar:66px;
  --font:'Plus Jakarta Sans','Segoe UI',system-ui,-apple-system,'Helvetica Neue',sans-serif;
  --font-judul:'Playfair Display',Georgia,'Times New Roman',serif;
}
*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{font-family:var(--font);color:var(--teks);background:var(--krem);font-size:15px;line-height:1.65;
  -webkit-text-size-adjust:100%;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;
  font-feature-settings:'kern' 1,'liga' 1}
h1,h2,h3,h4,.brand-text b,.toko-brand b,.hero h1,.seksi-kepala h2,.polos-kode,
.nota-head h2,.detail-nama,.kartu-head h2,.struk-preview h3,.unggulan-kartu b,.kategori-kartu b{
  font-family:var(--font-judul);font-weight:700;line-height:1.26;letter-spacing:-.005em}
.stat-nilai,.tabel td,.tabel th,.struk-preview,.baris b,.grafik-nilai,.produk-harga{font-variant-numeric:tabular-nums}
a{color:inherit;text-decoration:none}
h1,h2,h3,h4{margin:0;font-weight:700;letter-spacing:-.01em}
img{max-width:100%;display:block}
button,input,select,textarea{font-family:inherit;font-size:inherit}
svg.ico{width:19px;height:19px;flex:0 0 19px}
.wrap{width:min(1240px,100% - 32px);margin:0 auto}
.kanan{text-align:right}
.center{text-align:center}
.muted{color:var(--teks-2)}
.kecil{font-size:13px}
.tebal{font-weight:700}
.nowrap{white-space:nowrap}
.mt-0{margin-top:0}.mt-8{margin-top:8px}.mt-16{margin-top:16px}.mt-24{margin-top:24px}
.mb-8{margin-bottom:8px}.mb-16{margin-bottom:16px}.mb-24{margin-bottom:24px}

/* ---------------------------------------------------------------- tombol */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;
  padding:10px 16px;border-radius:var(--radius-sm);border:1px solid transparent;
  background:var(--putih);color:var(--teks);font-weight:600;font-size:14px;cursor:pointer;
  transition:.16s ease;text-align:center;line-height:1.2}
.btn:hover{transform:translateY(-1px)}
.btn:active{transform:translateY(0)}
.btn[disabled],.btn:disabled{opacity:.45;cursor:not-allowed;transform:none}
.btn-primary{background:linear-gradient(135deg,var(--tua-gelap-2),var(--tua-gelap-3));color:var(--emas-3);border-color:var(--tua-gelap)}
.btn-primary:hover{background:linear-gradient(135deg,var(--tua-gelap),var(--hitam))}
.btn-gold{background:linear-gradient(135deg,var(--hitam-3),var(--hitam));color:var(--putih);border-color:var(--tua-gelap-2)}
.btn-outline{background:transparent;border-color:var(--garis-2);color:var(--teks)}
.btn-outline:hover{border-color:var(--emas);background:var(--emas-lembut)}
.btn-danger{background:var(--putih);border-color:var(--err-batas);color:var(--err)}
.btn-danger:hover{background:var(--err-bg)}
.btn-ok{background:var(--ok);color:#fff;border-color:var(--ok)}
.btn-kecil{padding:7px 11px;font-size:13px;border-radius:8px}
.btn-besar{padding:14px 24px;font-size:16px}
.btn-lebar{width:100%}
.btn-putih{background:rgba(255,255,255,.12);border-color:rgba(255,255,255,.3);color:#fff}
.form-inline{display:inline-flex;gap:6px;align-items:center}

/* ---------------------------------------------------------------- alert */
.alert{padding:12px 16px;border-radius:var(--radius-sm);margin-bottom:18px;font-size:14px;font-weight:500;border:1px solid}
.alert-ok{background:var(--ok-bg);color:var(--ok);border-color:var(--ok-batas)}
.alert-error{background:var(--err-bg);color:var(--err);border-color:var(--err-batas)}
.alert-warning{background:var(--warn-bg);color:var(--warn);border-color:var(--warn-batas)}

/* ------------------------------------------------------- kerangka panel */
.app{display:flex;min-height:100vh}
.sidebar{position:fixed;inset:0 auto 0 0;width:var(--sidebar);background:var(--hitam);
  color:var(--on-tua);display:flex;flex-direction:column;z-index:40;overflow-y:auto}
.sidebar-brand{display:flex;align-items:center;padding:16px 16px 14px;border-bottom:1px solid var(--hitam-2)}
.brand-link{display:flex;align-items:center;gap:10px;width:100%}
.brand-inisial{width:40px;height:40px;flex:0 0 40px;border-radius:11px;display:grid;place-items:center;
  background:linear-gradient(135deg,var(--emas),var(--hitam));color:#fff;font-weight:800;font-size:19px}
.brand-logo{width:40px;height:40px;flex:0 0 40px;border-radius:11px;object-fit:cover;background:#fff}
.brand-text{display:flex;flex-direction:column;min-width:0}
.brand-text b{font-size:14px;color:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.brand-text span{font-size:10.5px;color:var(--emas-2);letter-spacing:.02em;text-transform:uppercase;white-space:nowrap}
.sidebar-outlet{padding:12px 16px;border-bottom:1px solid var(--hitam-2)}
.sidebar-outlet label{display:block;font-size:10.5px;text-transform:uppercase;letter-spacing:.06em;color:var(--on-tua-2);margin-bottom:5px}
.sidebar-outlet select{width:100%;padding:8px 10px;border-radius:9px;background:var(--hitam-2);color:var(--on-tua);border:1px solid var(--hitam-4)}
.sidebar-nav{padding:10px 10px 20px;flex:1}
.nav-judul{font-size:10px;text-transform:uppercase;letter-spacing:.1em;color:var(--on-tua-2);margin:16px 8px 6px}
.nav-item{display:flex;align-items:center;gap:10px;padding:9px 11px;border-radius:9px;color:var(--on-tua);
  font-size:14px;font-weight:500;position:relative}
.nav-item:hover{background:var(--tua-hover);color:#fff}
.nav-item.aktif{background:linear-gradient(90deg,rgba(var(--rgb-aksen),.22),rgba(var(--rgb-aksen),.05));color:var(--emas-2);font-weight:600}
.nav-item.aktif::before{content:'';position:absolute;left:0;top:8px;bottom:8px;width:3px;border-radius:0 3px 3px 0;background:var(--emas)}
.nav-badge{margin-left:auto;background:var(--hitam-3);color:#fff;font-size:11px;font-weight:700;border-radius:20px;padding:1px 7px}
.sidebar-kaki{padding:12px 16px 20px;border-top:1px solid var(--hitam-2)}
.sidebar-kaki .nav-item{font-size:13px}
.sidebar-backdrop{display:none;position:fixed;inset:0;background:rgba(var(--rgb-tua-pekat),.42);z-index:35}
.konten{margin-left:var(--sidebar);flex:1;min-width:0;display:flex;flex-direction:column;min-height:100vh}
.topbar{position:sticky;top:0;z-index:30;display:flex;align-items:center;gap:14px;
  padding:12px 24px;background:rgba(255,255,255,.92);backdrop-filter:blur(10px);border-bottom:1px solid var(--garis)}
.btn-menu{display:none;background:none;border:1px solid var(--garis);border-radius:9px;font-size:18px;padding:6px 11px;cursor:pointer}
.topbar-judul{flex:1;min-width:0}
.topbar-judul h1{font-size:19px}
.topbar-judul p{margin:2px 0 0;font-size:13px;color:var(--teks-2)}
.topbar-aksi{display:flex;align-items:center;gap:10px}
.topbar-user{display:flex;align-items:center;gap:9px;padding:5px 10px;border-radius:12px}
.topbar-user:hover{background:var(--krem)}
.avatar{width:34px;height:34px;border-radius:50%;background:linear-gradient(135deg,var(--emas),var(--hitam));
  color:#FFFFFF;display:grid;place-items:center;font-weight:800}
.topbar-user-teks{display:flex;flex-direction:column;line-height:1.2}
.topbar-user-teks b{font-size:13.5px}
.topbar-user-teks small{font-size:11.5px;color:var(--teks-2)}
.isi{padding:24px;flex:1;min-width:0;display:flex;flex-direction:column;gap:22px}
.isi.lebar-penuh{max-width:none}
.kaki-app{padding:16px 24px 26px;color:var(--teks-3);font-size:12.5px;text-align:center}

/* ---------------------------------------------------------------- kartu */
.kartu{background:var(--putih);border:1px solid var(--garis);border-radius:var(--radius);box-shadow:var(--bayang-2);overflow:hidden}
.kartu-head{display:flex;align-items:center;gap:12px;padding:14px 18px;border-bottom:1px solid var(--garis);flex-wrap:wrap}
.kartu-head h2{font-size:15.5px;flex:1;min-width:120px}
.kartu-aksi{display:flex;gap:8px;flex-wrap:wrap}
.kartu-isi{padding:18px}
.kartu-isi.tanpa-pad{padding:0}
.kartu-polos{background:var(--putih);border:1px solid var(--garis);border-radius:var(--radius);padding:18px;box-shadow:var(--bayang-2)}
.grid{display:grid;gap:18px}
.grid-2{grid-template-columns:repeat(2,minmax(0,1fr))}
.grid-3{grid-template-columns:repeat(3,minmax(0,1fr))}
.grid-4{grid-template-columns:repeat(4,minmax(0,1fr))}
.grid-5{grid-template-columns:repeat(5,minmax(0,1fr))}
.grid-6{grid-template-columns:repeat(auto-fill,minmax(150px,1fr))}
.grid>*{min-width:0}
.baris-split{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(0,1fr);gap:18px;align-items:start}
.baris-split>*{min-width:0}

/* --------------------------------------------------------------- statistik */
.stat{display:flex;gap:13px;align-items:flex-start;background:var(--putih);border:1px solid var(--garis);
  border-radius:var(--radius);padding:16px;box-shadow:var(--bayang-2);min-width:0}
.stat-link:hover{border-color:var(--emas);box-shadow:var(--bayang)}
.stat-ikon{width:42px;height:42px;flex:0 0 42px;border-radius:12px;display:grid;place-items:center;
  background:var(--emas-lembut);color:var(--emas-tua)}
.stat-ikon svg{width:21px;height:21px}
.stat-teks{display:flex;flex-direction:column;min-width:0;gap:2px}
.stat-label{font-size:12.5px;color:var(--teks-2);font-weight:600;text-transform:uppercase;letter-spacing:.03em}
.stat-nilai{font-size:21px;font-weight:800;letter-spacing:-.03em;word-break:break-word}
.stat-sub{font-size:12.5px;color:var(--teks-3)}
.stat-tren{font-size:12px;font-weight:700}
.stat-tren.naik{color:var(--ok)}.stat-tren.turun{color:var(--err)}
.stat.emas .stat-ikon{background:linear-gradient(135deg,var(--emas),var(--hitam));color:#fff}
.stat.hitam{background:var(--hitam);border-color:#000}
.stat.hitam .stat-label{color:var(--on-tua-2)}.stat.hitam .stat-nilai{color:var(--emas-2)}
.stat.hitam .stat-sub{color:var(--on-tua-2)}.stat.hitam .stat-ikon{background:rgba(var(--rgb-aksen),.16);color:var(--emas-2)}

/* ----------------------------------------------------------------- tabel */
.tabel-bungkus{overflow-x:auto}
.tabel{width:100%;border-collapse:collapse;font-size:14px}
.tabel th{text-align:left;padding:11px 14px;background:var(--krem-3);color:var(--teks-2);
  font-size:11.5px;text-transform:uppercase;letter-spacing:.05em;font-weight:700;white-space:nowrap;border-bottom:1px solid var(--garis)}
.tabel td{padding:11px 14px;border-bottom:1px solid var(--garis);vertical-align:middle}
.tabel tbody tr:hover{background:var(--krem-hover)}
.tabel tbody tr:last-child td{border-bottom:0}
.tabel .aksi-sel{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}
.tabel-mini{font-size:13px}
.tabel-mini th,.tabel-mini td{padding:8px 10px}
.badge{display:inline-block;padding:3px 9px;border-radius:20px;font-size:11.5px;font-weight:700;text-transform:capitalize;white-space:nowrap}
.badge-ok{background:var(--ok-bg);color:var(--ok)}
.badge-warn{background:var(--warn-bg);color:var(--warn)}
.badge-merah{background:var(--err-bg);color:var(--err)}
.badge-info{background:var(--info-bg);color:var(--info)}
.badge-netral{background:var(--krem-2);color:var(--teks-2)}
.badge-emas{background:var(--emas-lembut);color:var(--emas-tua)}

/* ------------------------------------------------------------ form/field */
.field{display:flex;flex-direction:column;gap:6px;min-width:0}
.field label{font-size:13px;font-weight:600;color:var(--teks)}
.field .wajib{color:var(--err)}
.field input,.field select,.field textarea{padding:10px 12px;border:1px solid var(--garis-2);
  border-radius:var(--radius-sm);background:#fff;color:var(--teks);width:100%;transition:.15s}
.field input:focus,.field select:focus,.field textarea:focus{outline:none;border-color:var(--emas);box-shadow:0 0 0 3px rgba(var(--rgb-aksen),.16)}
.field input:disabled,.field select:disabled{background:var(--krem);color:var(--teks-2)}
.field .bantuan{font-size:12px;color:var(--teks-3)}
.form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:16px}
.form-grid .lebar-2{grid-column:span 2}
.form-aksi{display:flex;gap:10px;flex-wrap:wrap;margin-top:20px;padding-top:18px;border-top:1px solid var(--garis)}
.centang{display:flex;align-items:center;gap:9px;font-size:14px;padding:10px 12px;border:1px solid var(--garis-2);border-radius:var(--radius-sm);background:#fff;cursor:pointer;flex-wrap:wrap}
.centang input{width:18px;height:18px;accent-color:var(--emas)}
.filter-baris{display:flex;gap:10px;flex-wrap:wrap;align-items:flex-end}
.filter-baris .field{min-width:150px}
.pilihan-grup{display:flex;gap:8px;flex-wrap:wrap}
.pilihan{display:flex;align-items:center;gap:7px;padding:8px 12px;border:1px solid var(--garis-2);border-radius:20px;background:#fff;font-size:13.5px;cursor:pointer}
.pilihan input{accent-color:var(--emas)}

/* ------------------------------------------------------------------ tabs */
.tabs{display:flex;gap:6px;overflow-x:auto;border-bottom:1px solid var(--garis);padding-bottom:2px;margin-bottom:4px;scrollbar-width:none}
.tabs::-webkit-scrollbar{display:none}
.tab{padding:9px 14px;border-radius:9px 9px 0 0;font-size:14px;font-weight:600;color:var(--teks-2);white-space:nowrap}
.tab:hover{background:var(--krem)}
.tab.aktif{background:var(--putih);color:var(--teks);border:1px solid var(--garis);border-bottom-color:transparent;margin-bottom:-1px}

/* --------------------------------------------------------------- kosong */
.kosong{padding:44px 20px;text-align:center;color:var(--teks-2)}
.kosong-ikon{font-size:30px;color:var(--emas);margin-bottom:8px}
.kosong p{margin:0 0 12px}

/* ------------------------------------------------------------- paginasi */
.paginasi{display:flex;gap:6px;align-items:center;flex-wrap:wrap;padding:14px 18px;border-top:1px solid var(--garis)}
.hal-tombol{padding:6px 11px;border-radius:8px;border:1px solid var(--garis-2);font-size:13px;background:#fff}
.hal-tombol.aktif{background:var(--hitam);color:var(--emas-2);border-color:#000}
.hal-titik{color:var(--teks-3);padding:0 4px}
.hal-info{margin-left:auto;font-size:12.5px;color:var(--teks-2)}

/* -------------------------------------------------------------- grafik */
.grafik{display:flex;align-items:flex-end;gap:8px;height:calc(var(--tinggi,180px) + 42px);padding-top:20px;overflow-x:auto}
.grafik-batang{flex:1;min-width:34px;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;height:100%;position:relative}
.grafik-bar{width:100%;max-width:56px;background:linear-gradient(180deg,var(--emas-2),var(--emas));border-radius:7px 7px 2px 2px;min-height:3px;transition:.3s}
.grafik-batang:hover .grafik-bar{filter:brightness(1.08)}
.grafik-nilai{font-size:10.5px;color:var(--teks-3);margin-bottom:4px;white-space:nowrap}
.grafik-label{font-size:11px;color:var(--teks-2);margin-top:6px;white-space:nowrap;text-align:center}
.grafik-garis svg{width:100%;height:220px;overflow:visible}
.legenda{display:flex;gap:14px;flex-wrap:wrap;justify-content:center;padding-top:8px;font-size:12.5px;color:var(--teks-2)}
.legenda i{display:inline-block;width:11px;height:11px;border-radius:3px;margin-right:6px}

/* --------------------------------------------------------------- modal */
.modal{position:fixed;inset:0;z-index:60;display:grid;place-items:center;padding:16px}
.modal[hidden]{display:none}
.modal-latar{position:absolute;inset:0;background:rgba(var(--rgb-tua),.5)}
.modal-kotak{position:relative;background:#fff;border-radius:var(--radius-lg);width:min(640px,100%);
  max-height:88vh;overflow:auto;box-shadow:0 20px 60px rgba(var(--rgb-tua-pekat),.3)}
.modal-head{display:flex;align-items:center;padding:16px 20px;border-bottom:1px solid var(--garis);position:sticky;top:0;background:#fff;z-index:2}
.modal-head h3{flex:1;font-size:16px}
.modal-tutup{background:none;border:0;font-size:24px;line-height:1;cursor:pointer;color:var(--teks-2);padding:0 4px}
.modal-isi{padding:20px}
.modal-aksi{display:flex;gap:10px;justify-content:flex-end;padding:16px 20px;border-top:1px solid var(--garis);position:sticky;bottom:0;background:#fff}

/* ============================== KASIR POS ============================== */
.pos{display:grid;grid-template-columns:minmax(0,1fr) 400px;height:100vh;background:var(--krem)}
.pos-kiri{display:flex;flex-direction:column;min-width:0}
.pos-kanan{display:flex;flex-direction:column;background:#fff;border-left:1px solid var(--garis);min-width:0}
.pos-header{display:flex;align-items:center;gap:12px;padding:12px 18px;background:var(--hitam);color:#fff}
.pos-header h1{font-size:16px;color:#fff}
.pos-header .pos-outlet{font-size:12px;color:var(--emas-2)}
.pos-header a{color:var(--emas-2);font-size:13px;font-weight:600}
.pos-cari{display:flex;gap:8px;padding:12px 18px;background:#fff;border-bottom:1px solid var(--garis);align-items:center}
.pos-cari input{flex:1 1 auto;min-width:0;padding:12px 14px;border:2px solid var(--garis-2);border-radius:var(--radius-sm);font-size:16px}
.pos-cari input:focus{outline:none;border-color:var(--emas)}
.pos-produk{padding:14px 18px;overflow-y:auto;flex:1;display:grid;
  grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px;align-content:start}
.produk-tombol{background:#fff;border:1px solid var(--garis);border-radius:12px;padding:10px;text-align:left;cursor:pointer;display:flex;flex-direction:column;gap:4px;transition:.15s}
.produk-tombol:hover{border-color:var(--emas);box-shadow:var(--bayang-2);transform:translateY(-1px)}
.produk-tombol b{font-size:13.5px;line-height:1.3;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.produk-tombol small{color:var(--teks-3);font-size:11.5px}
.produk-tombol .harga{color:var(--emas-tua);font-weight:800;font-size:14px}
.produk-tombol .stok{font-size:11px;color:var(--teks-2)}
.produk-tombol.habis{opacity:.55}
.keranjang-head{display:flex;align-items:center;gap:10px;padding:14px 16px;border-bottom:1px solid var(--garis)}
.keranjang-head h2{font-size:15px;flex:1}
.keranjang-list{flex:1;overflow-y:auto;padding:10px 12px;display:flex;flex-direction:column;gap:9px}
.keranjang-item{border:1px solid var(--garis);border-radius:11px;padding:10px 11px;display:flex;flex-direction:column;gap:7px}
.keranjang-item .kj-atas{display:flex;gap:8px;align-items:flex-start}
.keranjang-item .kj-nama{flex:1;font-size:13.5px;font-weight:600;min-width:0}
.keranjang-item .kj-hapus{background:none;border:0;color:var(--err);cursor:pointer;font-size:17px;line-height:1;padding:0 3px}
.kj-bawah{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.qty-kendali{display:flex;align-items:center;border:1px solid var(--garis-2);border-radius:8px;overflow:hidden}
.qty-kendali button{background:var(--krem);border:0;padding:5px 10px;font-size:15px;cursor:pointer;font-weight:700}
.qty-kendali input{width:58px;border:0;text-align:center;padding:5px 2px;font-weight:600}
.kj-harga{font-size:13px;margin-left:auto;font-weight:700}
.pos-ringkas{border-top:1px solid var(--garis);padding:14px 16px;display:flex;flex-direction:column;gap:9px;background:var(--krem)}
.pos-ringkas .baris{display:flex;justify-content:space-between;font-size:14px}
.pos-ringkas .baris.total{font-size:20px;font-weight:800;border-top:1px dashed var(--garis-2);padding-top:9px}
.pos-aksi{padding:12px 16px;border-top:1px solid var(--garis);display:flex;flex-direction:column;gap:9px;background:#fff}
.pos-aksi-baris{display:flex;gap:9px}
.pos-aksi-baris .btn{flex:1}
.pos-pelanggan{display:flex;gap:8px;padding:10px 16px;border-bottom:1px solid var(--garis);align-items:center;flex-wrap:wrap}
.pos-pelanggan select{flex:1;min-width:130px;padding:9px 10px;border:1px solid var(--garis-2);border-radius:var(--radius-sm)}
.pembayaran-grid{display:grid;grid-template-columns:1fr 1fr;gap:9px}
.metode-pilih{display:flex;align-items:center;justify-content:center;padding:11px;border:2px solid var(--garis-2);border-radius:11px;cursor:pointer;font-weight:600;font-size:13.5px;background:#fff}
.metode-pilih input{display:none}
.metode-pilih.aktif{border-color:var(--emas);background:var(--emas-lembut);color:var(--emas-tua)}
.bayar-cepat{display:grid;grid-template-columns:repeat(3,1fr);gap:7px}
.bayar-cepat button{padding:9px;border:1px solid var(--garis-2);border-radius:9px;background:#fff;cursor:pointer;font-size:13px;font-weight:600}
.bayar-cepat button:hover{border-color:var(--emas);background:var(--emas-lembut)}
.kembalian{font-size:17px;font-weight:800;text-align:center;padding:10px;border-radius:11px;background:var(--ok-bg);color:var(--ok)}
.kembalian.kurang{background:var(--err-bg);color:var(--err)}

/* --------------------------------------------------------------- struk */
.struk-preview{background:#fff;border:1px dashed var(--garis-2);padding:16px;font-family:'Courier New',monospace;font-size:12px;max-width:300px;margin:0 auto}
.struk-preview h3{text-align:center;font-size:14px;margin-bottom:4px}
.struk-preview .sp-baris{display:flex;justify-content:space-between;gap:8px}
.struk-preview hr{border:0;border-top:1px dashed #999;margin:7px 0}
.struk-preview .sp-total{font-weight:800;font-size:14px}
@page struk{size:58mm auto;margin:2mm}

/* ------------------------------------------------- pengaturan tampilan */
.preset-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:14px}
.preset-tema{display:flex;flex-direction:column;gap:7px;align-items:flex-start;text-align:left;cursor:pointer;
  background:var(--putih);border:1.5px solid var(--garis-2);border-radius:var(--radius);padding:13px;transition:.16s}
.preset-tema:hover{border-color:var(--emas);transform:translateY(-1px)}
.preset-tema.aktif{border-color:var(--emas);box-shadow:0 0 0 3px rgba(var(--rgb-aksen),.16)}
.preset-tema b{font-size:13.5px;font-family:var(--font-judul)}
.preset-tema small{font-size:12px;color:var(--teks-2);line-height:1.45}
.preset-warna{display:flex;gap:0;border-radius:8px;overflow:hidden;border:1px solid var(--garis)}
.preset-warna i{display:block;width:34px;height:22px}
.warna-baris{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:18px}
.warna-pilih{display:flex;gap:8px;align-items:center}
.warna-pilih input[type=color]{width:52px;height:42px;padding:2px;border:1px solid var(--garis-2);border-radius:var(--radius-sm);background:var(--putih);cursor:pointer}
.warna-pilih input[type=text]{flex:1;min-width:0;font-family:ui-monospace,'SF Mono',Menlo,monospace;letter-spacing:.03em;text-transform:uppercase}
.contoh-warna{display:inline-block;padding:5px 12px;border-radius:8px;font-size:12.5px;font-weight:700;
  border:1px solid var(--garis)}


/* ------------------------------------------------------------- cetak struk */
.status-printer{font-size:13px;color:var(--teks-2);background:var(--krem);border:1px solid var(--garis);
  border-radius:var(--radius-sm);padding:9px 12px;line-height:1.5}
.status-printer.ok{background:var(--ok-bg);border-color:var(--ok-batas);color:var(--ok)}
.status-printer.error{background:var(--err-bg);border-color:var(--err-batas);color:var(--err)}
.progres-cetak{margin:12px 0;height:8px;border-radius:20px;background:var(--krem-2);overflow:hidden}
.progres-cetak i{display:block;height:100%;width:0;background:linear-gradient(90deg,var(--emas),var(--hitam));
  transition:width .18s ease}
details summary::-webkit-details-marker{color:var(--emas)}


/* Bar aksi menempel di bawah halaman struk (khusus HP) */
.cetak-bar-hp{display:none}
@media (max-width:860px){
  .cetak-bar-hp{display:flex;gap:8px;position:fixed;left:0;right:0;bottom:0;z-index:40;
    padding:10px 12px calc(10px + env(safe-area-inset-bottom,0px));
    background:rgba(255,255,255,.97);backdrop-filter:blur(10px);border-top:1px solid var(--garis);
    box-shadow:0 -6px 24px rgba(var(--rgb-tua),.12)}
  .cetak-bar-hp .btn{flex:1;padding:13px}
  .cetak-bar-hp .btn-outline{flex:0 0 92px}
  body .isi{padding-bottom:82px}
}

/* ------------------------------------------------------- hapus data master */
.hapus-grup{display:block;cursor:pointer;transition:.15s}
.hapus-grup:hover{border-color:var(--err-batas)}
.hapus-kepala{display:flex;align-items:center;gap:9px;flex-wrap:wrap;margin-bottom:6px}
.hapus-kepala input{width:18px;height:18px;accent-color:var(--err)}
.hapus-kepala b{font-size:14px}
.hapus-rincian{margin:8px 0 0 18px;padding:0}
.hapus-rincian li{margin:2px 0}

/* ------------------------------------------------- pasang aplikasi (PWA) */
.tombol-pasang{width:100%;background:transparent;border:0;color:var(--on-tua);cursor:pointer;
  border-radius:9px;text-align:left;font-family:inherit;font-size:13px;margin-top:4px}
.tombol-pasang:hover{background:var(--tua-hover);color:#fff}
.tombol-pasang-toko{background:linear-gradient(135deg,var(--emas),var(--hitam));color:#fff!important;
  border-radius:20px;font-size:12.5px;padding:8px 12px;box-shadow:0 4px 14px rgba(var(--rgb-aksen),.3)}
.tautan-tombol{background:none;border:0;padding:0;color:inherit;font:inherit;cursor:pointer;text-align:left}
.tautan-tombol:hover{color:var(--emas-2)}
@media (max-width:860px){
  .tombol-pasang-toko{display:none!important}
}


/* ---------------------------------------------- baris navigasi toko */
.baris-nav{border-top:1px solid var(--garis);background:var(--putih)}
.baris-nav-isi{display:flex;align-items:stretch;gap:14px;min-height:46px}
.toko-nav{flex:1;min-width:0}
.nav-baris{display:flex;gap:2px;overflow-x:auto;scrollbar-width:none;height:100%;align-items:stretch}
.nav-baris::-webkit-scrollbar{display:none}
.nav-baris a{padding:12px 12px;font-size:13.5px;font-weight:600;color:var(--teks-2);white-space:nowrap;
  border-bottom:2px solid transparent;display:flex;align-items:center}
.nav-baris a:hover{color:var(--teks)}
.nav-baris a.aktif{color:var(--teks);border-bottom-color:var(--emas)}

@media print{
  body.cetak-struk .app,body.cetak-struk .toko-header,body.cetak-struk .toko-footer{display:none!important}
  body.cetak-struk .isi{padding:0}
  .cetak-struk .cetak-area{display:block!important}
  .cetak-struk .tanpa-cetak{display:none!important}
  .struk-preview{border:0;max-width:none;width:100%;padding:0;font-size:11.5px}
}
.cetak-area{display:none}

/* ------------------------------------------------------------- label grid */
.label-grid{display:flex;flex-wrap:wrap;gap:8px;background:#fff;padding:12px;border:1px solid var(--garis);border-radius:var(--radius)}
.label-item{border:1px dashed #ccc;padding:6px 8px;background:#fff;display:flex;flex-direction:column;align-items:center;gap:3px;overflow:hidden}
.label-item .lbl-toko{font-size:8px;text-transform:uppercase;letter-spacing:.05em;color:#555}
.label-item .lbl-nama{font-size:10.5px;font-weight:700;text-align:center;line-height:1.15}
.label-item .lbl-ukuran{font-size:9px;color:#444}
.label-item .lbl-harga{font-size:13px;font-weight:800}
.label-item .lbl-harga-promo{font-size:9px;text-decoration:line-through;color:#888}
.label-item .lbl-sku{font-size:8px;color:#666}
.label-item svg{max-width:100%;height:auto}
.label-40x30{width:40mm;height:30mm}
.label-50x30{width:50mm;height:30mm}
.label-58x40{width:58mm;height:40mm}
.label-70x50{width:70mm;height:50mm}
.label-a4-3x8{width:63mm;height:33mm}
@media print{
  body.cetak-label .sidebar,body.cetak-label .topbar,body.cetak-label .kaki-app,
  body.cetak-label .tanpa-cetak{display:none!important}
  body.cetak-label .konten{margin:0}
  body.cetak-label .isi{padding:0;gap:0}
  body.cetak-label .label-grid{display:grid;grid-template-columns:repeat(var(--kolom,3),auto);gap:2mm;padding:0;border:0}
  body.cetak-label .label-item{border:1px dashed #bbb;page-break-inside:avoid}
  body.cetak-label{background:#fff}
}

/* ------------------------------------------------------------- tiket/QR */
.kartu-qr{display:flex;gap:16px;align-items:flex-start;flex-wrap:wrap;border:1px solid var(--garis);border-radius:var(--radius);padding:16px;background:#fff}
.kartu-qr img{width:180px;height:180px}
.barcode-svg{max-width:100%;height:auto}

/* ============================== TOKO ONLINE ============================== */
/* Latar toko online: paduan pink dan putih (pink di atas & bawah, putih di tengah) */
body.toko{background:linear-gradient(180deg,var(--grad-1) 0%,var(--grad-2) 26%,#FFFFFF 52%,var(--grad-3) 76%,var(--grad-4) 100%)}
/* Pita putih solid agar pergantian pink–putih terlihat jelas pada layar lebar */
body.toko .seksi-alt{background:#FFFFFF;border-top:1px solid var(--garis);border-bottom:1px solid var(--garis)}
body.toko .katalog-baris,body.toko .detail-grid,body.toko .keranjang-grid,body.toko .form-checkout{position:relative}
.toko-header{position:sticky;top:0;z-index:30;background:rgba(255,255,255,.96);backdrop-filter:blur(12px);border-bottom:1px solid var(--garis)}
.header-baris{display:flex;align-items:center;gap:18px;padding:13px 0}
.toko-brand{display:flex;align-items:center;gap:11px;flex:0 0 auto}
.toko-brand img,.toko-brand .brand-inisial{width:42px;height:42px;border-radius:12px}
.toko-brand b{display:block;font-size:16px;letter-spacing:.02em}
.toko-brand small{font-size:11px;color:var(--teks-2);text-transform:uppercase;letter-spacing:.08em}
.header-cari{flex:1;display:flex;max-width:460px;margin:0 auto}
.header-cari input{flex:1;padding:11px 15px;border:1px solid var(--garis-2);border-right:0;border-radius:24px 0 0 24px;background:var(--krem)}
.header-cari input:focus{outline:none;border-color:var(--emas)}
.header-cari button{padding:0 20px;border:1px solid var(--hitam);background:var(--hitam);color:var(--emas-2);border-radius:0 24px 24px 0;font-weight:600;cursor:pointer}
.header-aksi{display:flex;align-items:center;gap:6px;margin-left:auto}
.ikon-tombol{display:flex;align-items:center;gap:6px;padding:9px 13px;border-radius:22px;font-size:13.5px;font-weight:600;position:relative}
.ikon-tombol:hover{background:var(--krem)}
.keranjang-jumlah{background:var(--hitam-3);color:#fff;border-radius:20px;font-size:11px;padding:1px 7px;font-weight:800}
.btn-menu-toko{display:none;background:none;border:1px solid var(--garis);border-radius:9px;padding:6px 11px;font-size:17px;cursor:pointer}
.toko-nav{border-top:1px solid var(--garis);background:#fff}
.nav-baris{display:flex;gap:4px;overflow-x:auto;scrollbar-width:none}
.nav-baris::-webkit-scrollbar{display:none}
.nav-baris a{padding:12px 14px;font-size:13.5px;font-weight:600;color:var(--teks-2);white-space:nowrap;border-bottom:2px solid transparent}
.nav-baris a:hover{color:var(--teks)}
.nav-baris a.aktif{color:var(--teks);border-bottom-color:var(--emas)}
.toko-isi{min-height:52vh}
/* ============================ HERO: banner lebar, teks menumpang di atas foto ============================
   Konsep mengikuti referensi: gambar sebagai banner lebar bersudut membulat (bukan full-bleed
   sampai tepi layar), teks diletakkan di sisi kiri menumpang di atas foto dengan lapisan
   gelap bergradasi dari kiri agar tulisan tetap terbaca. */
.hero{padding:18px 0 0;background:transparent;color:#fff;position:relative;overflow:visible}
.hero::after{display:none}
.hero-banner{
  position:relative;overflow:hidden;
  width:min(1240px,100% - 32px);margin:0 auto;
  border-radius:18px;
  min-height:clamp(360px,42vw,520px);
  background:linear-gradient(135deg,var(--tua-gelap) 0%,var(--tua-gelap-3) 52%,var(--hitam-3) 100%);
  box-shadow:0 18px 46px rgba(var(--rgb-tua),.18);
  display:flex;align-items:center;
}
/* gambar latar penuh di dalam banner */
.hero-banner .hero-foto{position:absolute;inset:0;margin:0;border:0;border-radius:0;box-shadow:none;
  background:var(--tua-gelap-2);z-index:0;overflow:hidden}
.hero-banner .hero-foto img{width:100%;height:100%;object-fit:cover;object-position:center;
  display:block;transform:none}
.hero-banner .hero-foto:hover img{transform:none}
/* tirai: gelap di kiri (tempat teks) → transparan ke kanan (foto tetap terlihat) */
.hero-tirai{position:absolute;inset:0;z-index:1;pointer-events:none;
  background:linear-gradient(90deg,
    rgba(var(--rgb-tua-pekat),.94) 0%,
    rgba(var(--rgb-tua-pekat),.88) 34%,
    rgba(var(--rgb-tua-pekat),.62) 58%,
    rgba(var(--rgb-tua-pekat),.18) 82%,
    rgba(var(--rgb-tua-pekat),0) 100%)}
.hero-banner .hg-keterangan{left:auto;right:14px;bottom:14px;z-index:3}

/* isi teks: rata kiri, di tengah tinggi banner, tidak melebihi ~52% lebar */
.hero-isi{position:relative;z-index:2;width:100%;max-width:none;
  padding:clamp(26px,4vw,54px) clamp(24px,5vw,64px);
  max-width:min(660px,58%);display:flex;flex-direction:column;align-items:flex-start}
.hero-eyebrow{display:block;font-family:var(--font);font-size:clamp(10.5px,1vw,12.5px);font-weight:700;
  letter-spacing:.18em;text-transform:uppercase;color:var(--emas-2);margin-bottom:clamp(10px,1.4vw,16px)}
.hero-banner h1{font-family:var(--font-judul);font-size:clamp(26px,3.4vw,46px);line-height:1.14;
  letter-spacing:-.015em;margin:0 0 clamp(12px,1.6vw,18px);max-width:19ch;
  text-shadow:0 2px 18px rgba(var(--rgb-tua-pekat),.45)}
.hero-deskripsi{font-family:var(--font);font-size:clamp(13.5px,1.15vw,16.5px);line-height:1.6;
  color:var(--on-tua-4);margin:0 0 clamp(16px,2.2vw,26px);max-width:52ch;
  text-shadow:0 1px 12px rgba(var(--rgb-tua-pekat),.5)}
.hero-aksi{display:flex;align-items:center;gap:clamp(12px,1.6vw,20px);flex-wrap:wrap}
.hero-aksi .btn-gold{box-shadow:0 10px 26px rgba(var(--rgb-tua-pekat),.35)}
.hero-cta2{font-size:clamp(12.5px,1.05vw,14px);font-weight:700;color:var(--on-tua);
  border-bottom:1px solid rgba(var(--rgb-aksen-muda),.55);padding-bottom:2px}
.hero-cta2:hover{color:#fff;border-bottom-color:#fff}
.hero-toko{font-size:clamp(11px,1vw,12.5px);color:var(--on-tua-3);margin:clamp(14px,1.8vw,20px) 0 0;
  text-shadow:0 1px 10px rgba(var(--rgb-tua-pekat),.6)}
.hero-toko b{color:#fff}

/* Pita ajakan dengan latar foto */
.band-foto{color:#fff;border-radius:var(--radius-lg);padding:34px;display:flex;gap:20px;align-items:center;flex-wrap:wrap;
  background-image:linear-gradient(115deg,rgba(var(--rgb-tua-pekat),.94),rgba(var(--rgb-aksen),.72)),var(--foto-band,none);
  background-size:cover;background-position:center;box-shadow:var(--bayang)}
.band-foto h3{color:#fff;font-size:21px}
.band-foto p{color:var(--on-tua-4)}
.seksi{padding:48px 0}
.seksi-kepala{display:flex;align-items:flex-end;gap:16px;margin-bottom:26px;flex-wrap:wrap}
.seksi-kepala h2{font-size:clamp(20px,2.4vw,27px);flex:1}
.seksi-kepala p{margin:4px 0 0;color:var(--teks-2);font-size:14.5px}
.seksi-kepala a{font-size:13.5px;font-weight:700;color:var(--emas-tua)}
.seksi-alt{background:var(--krem)}
.produk-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:20px}
.produk-kartu{background:#fff;border:1px solid var(--garis);border-radius:var(--radius);overflow:hidden;
  display:flex;flex-direction:column;transition:.2s;box-shadow:var(--bayang-2)}
.produk-kartu:hover{transform:translateY(-3px);box-shadow:var(--bayang);border-color:var(--garis-2)}
.produk-foto{position:relative;aspect-ratio:1/1;background:var(--krem-2);display:block}
.produk-foto img{width:100%;height:100%;object-fit:cover}
.produk-foto-kosong{display:grid;place-items:center;width:100%;height:100%;font-size:44px;color:var(--teks-3);font-weight:800}
.produk-label{position:absolute;top:10px;left:10px;padding:3px 9px;border-radius:20px;font-size:10.5px;font-weight:800;letter-spacing:.05em}
.produk-label.promo{background:var(--err);color:#fff}
.produk-label.habis{background:rgba(var(--rgb-tua),.82);color:#fff}
.produk-label.unggulan{background:linear-gradient(135deg,var(--hitam-3),var(--hitam));color:#fff}
.produk-isi{padding:14px;display:flex;flex-direction:column;gap:5px;flex:1}
.produk-brand{font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--teks-2)}
.produk-nama{font-size:14.5px;font-weight:700;line-height:1.3}
.produk-ukuran{font-size:12.5px;color:var(--teks-2)}
.produk-rating{font-size:12.5px;color:var(--emas-tua);font-weight:700}
.produk-rating small{color:var(--teks-3);font-weight:500}
.produk-harga{margin-top:auto;font-size:16px;display:flex;align-items:baseline;gap:7px}
.produk-harga s{color:var(--teks-3);font-size:12.5px;font-weight:500}
.produk-harga b{color:var(--emas-tua)}
.produk-aksi{display:flex;gap:7px;margin-top:8px}
.produk-aksi .btn{flex:1}
.kategori-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:16px}
.kategori-kartu{background:#fff;border:1px solid var(--garis);border-radius:var(--radius);padding:20px 16px;text-align:center;transition:.18s;display:flex;flex-direction:column;gap:6px;align-items:center}
.kategori-kartu:hover{border-color:var(--emas);transform:translateY(-2px);box-shadow:var(--bayang-2)}
.kategori-ikon{font-size:26px}
.kategori-kartu b{font-size:14px}
.kategori-kartu small{color:var(--teks-2);font-size:12px}
.unggulan-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:20px}
.unggulan-kartu{background:#fff;border:1px solid var(--garis);border-radius:var(--radius);padding:22px;display:flex;flex-direction:column;gap:8px}
.unggulan-kartu .k-ikon{width:44px;height:44px;border-radius:12px;background:var(--emas-lembut);display:grid;place-items:center;font-size:20px}
.unggulan-kartu b{font-size:15px}
.unggulan-kartu p{margin:0;color:var(--teks-2);font-size:13.5px}
.ulasan-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:18px}
.ulasan-kartu{background:#fff;border:1px solid var(--garis);border-radius:var(--radius);padding:20px}
.ulasan-bintang{color:var(--emas);font-size:15px;letter-spacing:2px}
.ulasan-kartu p{font-size:14px;color:var(--teks-2);margin:9px 0}
.ulasan-kartu footer{font-size:12.5px;color:var(--teks-3)}
.katalog-baris{display:grid;grid-template-columns:260px minmax(0,1fr);gap:26px;align-items:start;padding:28px 0}
.filter-panel{background:#fff;border:1px solid var(--garis);border-radius:var(--radius);padding:18px;position:sticky;top:130px}
.filter-panel h3{font-size:14px;margin-bottom:12px}
.filter-panel .field{margin-bottom:13px}
.filter-panel .field label{font-size:12.5px}
.urut-baris{display:flex;align-items:center;gap:12px;margin-bottom:18px;flex-wrap:wrap}
.urut-baris select{padding:9px 12px;border:1px solid var(--garis-2);border-radius:var(--radius-sm);background:#fff}
.urut-baris .hasil{font-size:13.5px;color:var(--teks-2);margin-right:auto}
.detail-grid{display:grid;grid-template-columns:minmax(0,.95fr) minmax(0,1.05fr);gap:34px;padding:32px 0}
.galeri-utama{background:var(--krem-2);border-radius:var(--radius-lg);overflow:hidden;aspect-ratio:1/1}
.galeri-utama img{width:100%;height:100%;object-fit:cover}
.galeri-thumb{display:flex;gap:9px;margin-top:11px;flex-wrap:wrap}
.galeri-thumb button{width:66px;height:66px;border-radius:11px;overflow:hidden;border:2px solid transparent;padding:0;background:var(--krem-2);cursor:pointer}
.galeri-thumb button.aktif{border-color:var(--emas)}
.galeri-thumb img{width:100%;height:100%;object-fit:cover}
.detail-brand{font-size:12px;text-transform:uppercase;letter-spacing:.1em;color:var(--teks-3)}
.detail-nama{font-size:clamp(22px,2.8vw,31px);margin:6px 0 10px}
.detail-harga{display:flex;align-items:baseline;gap:12px;margin:16px 0}
.detail-harga b{font-size:31px;color:var(--emas-tua)}
.detail-harga s{color:var(--teks-3)}
.detail-varian{display:flex;gap:9px;flex-wrap:wrap;margin:10px 0 18px}
.varian-pil{padding:9px 15px;border:1.5px solid var(--garis-2);border-radius:10px;background:#fff;cursor:pointer;font-size:13.5px;font-weight:600}
.varian-pil.aktif{border-color:var(--emas);background:var(--emas-lembut)}
.varian-pil:disabled{opacity:.45;cursor:not-allowed}
.detail-beli{display:flex;gap:11px;flex-wrap:wrap;align-items:center;margin:18px 0}
.detail-info{display:flex;flex-direction:column;gap:12px;border-top:1px solid var(--garis);padding-top:18px;margin-top:18px}
.detail-info .baris-info{display:flex;gap:10px;font-size:13.5px;color:var(--teks-2)}
.detail-info .baris-info b{color:var(--teks);min-width:120px}
.spesifikasi{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:14px}
.spesifikasi div{background:var(--krem);border-radius:var(--radius-sm);padding:12px 14px}
.spesifikasi span{display:block;font-size:11.5px;text-transform:uppercase;letter-spacing:.05em;color:var(--teks-3)}
.spesifikasi b{font-size:14.5px}
.keranjang-grid{display:grid;grid-template-columns:minmax(0,1.7fr) minmax(0,1fr);gap:24px;padding:30px 0;align-items:start}
.keranjang-item-baris{display:flex;gap:14px;padding:15px 0;border-bottom:1px solid var(--garis);align-items:center}
.keranjang-item-baris img,.kj-foto{width:74px;height:74px;border-radius:11px;object-fit:cover;background:var(--krem-2);display:grid;place-items:center;font-size:24px;color:var(--teks-3)}
.keranjang-item-baris .kj-info{flex:1;min-width:0}
.kj-info b{font-size:14.5px}
.kj-info small{display:block;color:var(--teks-2);font-size:12.5px}
.ringkasan{background:#fff;border:1px solid var(--garis);border-radius:var(--radius);padding:20px;position:sticky;top:130px}
.ringkasan .baris{display:flex;justify-content:space-between;padding:8px 0;font-size:14px}
.ringkasan .baris.total{font-size:19px;font-weight:800;border-top:1px solid var(--garis);margin-top:8px;padding-top:14px}
.form-checkout{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(0,1fr);gap:24px;padding:30px 0;align-items:start}
.langkah{display:flex;gap:9px;align-items:center;margin-bottom:18px;font-size:13.5px;color:var(--teks-2);flex-wrap:wrap}
.langkah b{display:flex;align-items:center;gap:7px;font-weight:600}
.langkah .n{width:23px;height:23px;border-radius:50%;background:var(--krem-2);display:grid;place-items:center;font-size:12px;font-weight:700}
.langkah b.aktif .n{background:var(--emas);color:#FFFFFF}
.status-timeline{display:flex;flex-direction:column;gap:0;margin-top:8px}
.tl-item{display:flex;gap:14px;padding-bottom:20px;position:relative}
.tl-item:not(:last-child)::before{content:'';position:absolute;left:11px;top:24px;bottom:0;width:2px;background:var(--garis)}
.tl-titik{width:24px;height:24px;border-radius:50%;background:var(--krem-2);border:2px solid var(--garis-2);flex:0 0 24px;display:grid;place-items:center;font-size:12px;z-index:1}
.tl-item.aktif .tl-titik{background:var(--emas);border-color:var(--emas);color:#FFFFFF;font-weight:800}
.tl-teks b{display:block;font-size:14px}
.tl-teks small{color:var(--teks-3);font-size:12.5px}
.toko-footer{background:var(--hitam);color:var(--on-tua-3);padding:46px 0 20px;margin-top:40px}
.footer-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:30px}
.footer-grid h4{color:#fff;font-size:14.5px;margin-bottom:13px}
.footer-grid p{font-size:13.5px;line-height:1.7;margin:0 0 10px;color:var(--on-tua-3)}
.footer-grid ul{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:8px;font-size:13.5px}
.footer-grid a:hover{color:var(--emas-2)}
.footer-kontak{font-size:12.5px!important}
.footer-bawah{display:flex;justify-content:space-between;gap:14px;flex-wrap:wrap;border-top:1px solid var(--hitam-2);
  margin-top:30px;padding-top:18px;font-size:12.5px;color:var(--on-tua-3)}
.halaman-polos{display:grid;place-items:center;padding:70px 16px}
.polos-kartu{background:#fff;border:1px solid var(--garis);border-radius:var(--radius-lg);padding:44px 36px;text-align:center;max-width:520px;box-shadow:var(--bayang)}
.polos-kode{font-size:58px;font-weight:800;color:var(--emas);line-height:1}
.polos-kartu h1{font-size:22px;margin:12px 0}
.polos-kartu p{color:var(--teks-2);margin-bottom:22px}
.polos-kartu .btn{margin:4px}
body.halaman-polos{background:linear-gradient(180deg,var(--grad-1),#FFFFFF 60%,var(--krem));display:grid;place-items:center;min-height:100vh;margin:0}
.nota{background:#fff;border:1px solid var(--garis);border-radius:var(--radius);padding:26px;max-width:820px;margin:0 auto}
.nota-head{display:flex;justify-content:space-between;gap:18px;flex-wrap:wrap;border-bottom:2px solid var(--hitam);padding-bottom:16px;margin-bottom:18px}
.nota-head h2{font-size:20px}
.stepper{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:20px}
.stepper span{padding:5px 12px;border-radius:20px;background:var(--krem-2);font-size:12.5px;font-weight:600;color:var(--teks-2)}
.stepper span.aktif{background:var(--hitam);color:var(--emas-2)}
.stepper span.selesai{background:var(--ok-bg);color:var(--ok)}
.peta-kotak{border:1px solid var(--garis);border-radius:var(--radius);overflow:hidden;background:#fff}
.peta-kotak iframe{width:100%;height:280px;border:0}

/* ============================ MOBILE ============================ */
@media (max-width:1080px){
  .baris-split{grid-template-columns:minmax(0,1fr)}
  .katalog-baris,.detail-grid,.keranjang-grid,.form-checkout{grid-template-columns:minmax(0,1fr)}
  .filter-panel{position:static}
  .pos{grid-template-columns:minmax(0,1fr) 350px}
  .grid-5{grid-template-columns:repeat(3,minmax(0,1fr))}
}
.pos-bar-mobile{display:none}
.pos-backdrop{display:none}
@media (max-width:860px){
  .sidebar{transform:translateX(-100%);transition:.25s;box-shadow:0 0 40px rgba(var(--rgb-tua-pekat),.38)}
  body.menu-terbuka .sidebar{transform:none}
  body.menu-terbuka .sidebar-backdrop{display:block}
  .konten{margin-left:0}
  .btn-menu{display:block}
  .topbar{padding:10px 14px;gap:10px}
  .topbar-judul h1{font-size:16.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .topbar-user-teks{display:none}
  .isi{padding:16px;gap:16px}
  .grid-2,.grid-3,.grid-4,.grid-5{grid-template-columns:repeat(2,minmax(0,1fr))}
  .hero{padding:38px 0}
  .hero-aksi .btn{flex:1}
  .hero{padding:12px 0 0}
  .hero-banner{width:calc(100% - 24px);min-height:clamp(380px,62vw,470px);border-radius:16px;align-items:flex-end}
  .hero-banner .hero-foto{position:absolute}
  .hero-tirai{background:linear-gradient(to top,
    rgba(var(--rgb-tua-pekat),.95) 0%,
    rgba(var(--rgb-tua-pekat),.86) 34%,
    rgba(var(--rgb-tua-pekat),.45) 64%,
    rgba(var(--rgb-tua-pekat),.10) 86%,
    rgba(var(--rgb-tua-pekat),0) 100%)}
  .hero-isi{max-width:none;padding:clamp(20px,4vw,32px)}
  .hero-banner h1{max-width:22ch;font-size:clamp(23px,4.6vw,34px)}
  .hero-deskripsi{max-width:none}
  .hero-banner .hg-keterangan{top:12px;right:12px;bottom:auto}
  .band-foto{padding:24px}
  .header-cari{display:none}
  .btn-menu-toko{display:block}
  .baris-nav{display:none}
  /* BUG yang pernah terjadi: .toko-nav berada di dalam .baris-nav yang display:none,
     sehingga tombol ☰ seolah tidak berfungsi. Induknya harus ikut ditampilkan. */
  body.menu-toko-terbuka .baris-nav{display:block}
  body.menu-toko-terbuka .baris-nav-isi{display:block;min-height:0;padding:0}
  body.menu-toko-terbuka .toko-nav{display:block;border-top:1px solid var(--garis);background:var(--putih)}
  body.menu-toko-terbuka .nav-baris{flex-direction:column;align-items:stretch;gap:0}
  body.menu-toko-terbuka .nav-baris a{border-bottom:1px solid var(--garis);padding:12px 4px;font-size:14px}
  body.menu-toko-terbuka .nav-baris a.aktif{border-bottom-color:var(--garis);color:var(--emas-tua);font-weight:700}
  .header-baris{padding:10px 0;gap:10px}
  .toko-brand small{display:none}
  .seksi{padding:32px 0}
  .produk-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
  .produk-isi{padding:11px;gap:4px}
  .produk-nama{font-size:13px}
  .produk-aksi{flex-direction:column}
  .pos{grid-template-columns:minmax(0,1fr);height:auto;min-height:100vh}
  /* Lembar keranjang: menutupi sebagian layar, bisa digulir, tombol bayar selalu terlihat */
  .pos-kanan{position:fixed;inset:auto 0 0 0;max-height:92vh;height:auto;border-left:0;
    border-top:2px solid var(--emas);border-radius:18px 18px 0 0;
    transform:translateY(105%);transition:transform .28s ease;z-index:60;
    box-shadow:0 -10px 40px rgba(var(--rgb-tua-pekat),.28);
    padding-bottom:env(safe-area-inset-bottom,0)}
  body.keranjang-terbuka .pos-kanan{transform:none}
  .keranjang-pegangan{display:block;width:46px;height:5px;border-radius:20px;background:var(--garis-2);
    margin:8px auto 2px}
  .keranjang-head{padding:6px 14px 12px}
  .keranjang-head h2{font-size:15px}
  #btnTutupKeranjang{display:inline-flex!important;font-size:16px;line-height:1;padding:6px 10px}
  .keranjang-list{max-height:none;flex:1 1 auto;min-height:90px;padding:8px 12px}
  /* area total + tombol bayar: selalu menempel di bawah lembar */
  .pos-ringkas,.pos-aksi{flex:0 0 auto}
  .pos-aksi{padding:10px 12px calc(12px + env(safe-area-inset-bottom,0px));position:sticky;bottom:0;background:var(--putih)}
  .pos-aksi .btn-besar{padding:15px;font-size:16px}
  .pos-produk{grid-template-columns:repeat(2,minmax(0,1fr));padding:12px;padding-bottom:96px}
  /* Bar bawah: info keranjang + tombol bayar langsung */
  .pos-bar-mobile{display:flex;position:fixed;left:0;right:0;bottom:0;z-index:55;gap:8px;
    padding:10px 12px calc(10px + env(safe-area-inset-bottom,0px));
    background:rgba(255,255,255,.97);backdrop-filter:blur(10px);
    border-top:1px solid var(--garis);box-shadow:0 -6px 24px rgba(var(--rgb-tua),.12)}
  body.keranjang-terbuka .pos-bar-mobile{display:none}
  .pos-backdrop{display:none;position:fixed;inset:0;background:rgba(var(--rgb-tua-pekat),.42);z-index:58}
  body.keranjang-terbuka .pos-backdrop{display:block}
  .pos-bar-info{flex:1;min-width:0;display:flex;flex-direction:column;align-items:flex-start;gap:1px;
    background:var(--krem);border:1px solid var(--garis-2);border-radius:12px;padding:8px 12px;
    cursor:pointer;text-align:left}
  .pos-bar-judul{font-size:12px;color:var(--teks-2);font-weight:600}
  .pos-bar-jumlah{font-size:13.5px;color:var(--teks)}
  .pos-bar-jumlah b{font-variant-numeric:tabular-nums}
  .pos-bar-bayar{flex:0 0 auto;min-width:118px;border:0;border-radius:12px;cursor:pointer;
    background:linear-gradient(135deg,var(--emas),var(--hitam));color:#fff;font-weight:800;font-size:15.5px;
    padding:12px 18px;box-shadow:0 6px 18px rgba(var(--rgb-aksen),.35)}
  .pos-bar-bayar:disabled{opacity:.45;box-shadow:none;cursor:not-allowed}
  /* header kasir dipadatkan agar produk dapat ruang */
  .pos-header{padding:8px 12px;gap:8px}
  .pos-header h1{font-size:14px;line-height:1.25}
  .pos-outlet{font-size:11px;line-height:1.35}
  .pos-aksi-header{gap:6px;margin-left:0;width:100%}
  .pos-aksi-header .pos-tautan,.pos-keluar{display:none}
  .pos-menu{display:block;margin-left:auto}
  .pos-menu summary{list-style:none;cursor:pointer;background:rgba(255,255,255,.14);border:1px solid rgba(255,255,255,.3);
    color:#fff;border-radius:9px;width:34px;height:32px;display:grid;place-items:center;font-size:18px;line-height:1}
  .pos-menu summary::-webkit-details-marker{display:none}
  .pos-menu-isi{position:absolute;right:12px;top:64px;z-index:70;background:var(--putih);color:var(--teks);
    border:1px solid var(--garis);border-radius:12px;box-shadow:var(--bayang);min-width:190px;overflow:hidden}
  .pos-menu-isi a,.pos-menu-isi button{display:block;width:100%;text-align:left;padding:11px 14px;font-size:13.5px;
    color:var(--teks);background:none;border:0;border-bottom:1px solid var(--garis);cursor:pointer}
  .pos-menu-isi a:hover,.pos-menu-isi button:hover{background:var(--krem)}
  .pos-menu-isi form{margin:0}
}
@media (max-width:520px){
  .grid-2,.grid-3,.grid-4,.grid-5{grid-template-columns:minmax(0,1fr)}
  /* dialog pembayaran: hampir layar penuh, isi bisa digulir, aksi menempel di bawah */
  .modal{padding:0}
  .modal-kotak{width:100%;max-height:100dvh;height:100dvh;border-radius:0;display:flex;flex-direction:column}
  .modal-isi{flex:1 1 auto;overflow-y:auto;padding:16px}
  .modal-aksi{position:sticky;bottom:0;flex:0 0 auto;padding:12px 16px calc(12px + env(safe-area-inset-bottom,0px))}
  .modal-aksi .btn{flex:1}
  .bayar-cepat{grid-template-columns:repeat(3,1fr)}
  .pos-cari{flex-wrap:wrap;padding:10px 12px}
  .pos-cari input{flex:1 1 100%}
  .pos-cari .btn{flex:1 1 auto}
  .pos-header{flex-wrap:wrap;gap:6px;padding:10px 12px}
  .pos-header h1{font-size:14.5px}
  .pos-pelanggan{padding:8px 12px}
  .keranjang-list{max-height:34vh}
  .toko-brand{min-width:0;max-width:42%}
  .toko-brand b{font-size:13.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .toko-brand img,.toko-brand .brand-inisial{width:34px;height:34px}
  .header-aksi{gap:2px;flex:0 0 auto}
  .ikon-tombol{padding:7px 8px;font-size:12px}
  .keranjang-jumlah{padding:1px 5px;font-size:10.5px}
  .header-aksi .ikon-teks{display:none}
  .ikon-keranjang::before{content:'🛒';font-size:16px;line-height:1}
  .ikon-akun::before{content:'👤';font-size:15px;line-height:1}
  .ikon-akun,#tokoMenuBtn{position:relative}
  .tombol-pasang-toko{display:none!important}
  .footer-bawah{font-size:12px}
  .stat-nilai{font-size:19px}
  .produk-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  /* di layar HP pendek (mis. 360×640) hero tetap 9:16 selebar layar, tetapi dibatasi
     satu layar dikurangi header supaya tidak melewati batas tampilan */
  .hero{padding:10px 0 0}
  .hero-banner{width:calc(100% - 20px);border-radius:14px;min-height:clamp(360px,96vw,430px)}
  .hero-isi{padding:18px 16px 20px}
  .hero-banner h1{font-size:clamp(21px,6.2vw,27px);line-height:1.18;max-width:100%}
  .hero-deskripsi{font-size:13px;line-height:1.55;margin-bottom:14px}
  .hero-eyebrow{font-size:9.5px;letter-spacing:.14em;margin-bottom:8px}
  .hero-aksi{gap:12px}
  .hero-aksi .btn-besar{padding:12px 18px;font-size:14.5px}
  .hero-toko{margin-top:12px;font-size:10.5px}
  .hero-isi{max-width:none}
  .hero-banner .hg-keterangan{font-size:9.5px;padding:4px 9px}
  .nota{padding:16px}
  .wrap{width:calc(100% - 24px)}
  .form-grid .lebar-2{grid-column:span 1}
}
.pos-menu{display:none}
.keranjang-pegangan{display:none}
.pos-aksi-header{display:flex;gap:10px;align-items:center;margin-left:auto;flex-wrap:wrap}
.pos-aksi-header a{color:var(--emas-2);font-size:13px;font-weight:600}
.pos-keluar{display:inline}
@media print{
  body.cetak-laporan .sidebar,body.cetak-laporan .topbar,body.cetak-laporan .kaki-app,
  body.cetak-laporan .tanpa-cetak,body.cetak-laporan .kartu-aksi{display:none!important}
  body.cetak-laporan .konten{margin:0}
  body.cetak-laporan .isi{padding:0}
  body.cetak-laporan .kartu{border:0;box-shadow:none}
  table{font-size:11px}
}
