/* Antrean nota (bendahara) dan antrean persetujuan (ketua) gaya aplikasi lama: foto struk di kiri, keterangan dan
   jurnal di kanan, ceklis di bawah. Berkas terpisah dari styles.css agar tampilan dasar dapat diperbarui tanpa
   menyentuh alur persetujuan. Memakai token warna dari styles.css. */
.queue-hd{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}
.queue-tools{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.queue-tools select{height:36px;border:1px solid var(--line2);border-radius:8px;padding:0 10px;background:var(--input-bg);color:var(--ink);font-weight:500}
.card.ai-queue>.bd{overflow:visible}
.draft-list{display:flex;flex-direction:column;gap:12px}
.draft-card{margin:0;border:1px solid var(--line);box-shadow:none}
.draft-card.red{border:2px solid #d92d20;box-shadow:0 0 0 3px var(--danger-weak)}
.draft-row{display:flex;gap:16px;align-items:flex-start}
.draft-photo{flex:none;width:170px;display:block;position:relative;text-align:center;text-decoration:none;cursor:zoom-in;border-radius:8px}
.draft-photo img{display:block;max-width:160px;max-height:200px;margin:0 auto;border-radius:6px;border:1px solid var(--line);background:var(--surface2);object-fit:contain}
.draft-zoom{display:inline-block;margin-top:6px;font-size:12px;font-weight:600;color:var(--accent)}
.draft-photo:hover img,.draft-photo:focus-visible img{outline:2px solid var(--accent);outline-offset:2px}
.empty-photo{cursor:default;padding:28px 8px;font-size:12px;color:var(--muted);border:1px dashed var(--line2);border-radius:8px}
.draft-body{flex:1;min-width:0}
.draft-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap;line-height:1.4}
.draft-head b{font-size:15px}
.draft-sentence{margin:6px 0 8px;font-size:14px;line-height:1.5}
.draft-lines{margin:4px 0 8px}
.draft-lines td,.draft-lines th{padding-top:6px;padding-bottom:6px}
.draft-ctrl{display:flex;gap:14px;align-items:center;flex-wrap:wrap;margin-top:10px}
.draft-ctrl .check-label{font-size:14px;font-weight:600;color:var(--ink);cursor:pointer}
.draft-ctrl .check-label input{width:20px!important;height:20px!important}
/* Hanya red flag yang mencolok (keputusan pemilik produk); penanda lain kalem. */
/* Merah tua tetap di kedua tema: teks putih tetap terbaca (kontras ±6:1) juga pada tema gelap. */
.flag-red{margin:8px 0 0;padding:8px 10px;border-radius:8px;background:#b42318;color:#fff;font-size:13px;line-height:1.45}
.flag-red b{font-weight:700}
.flag-soft{margin:8px 0 0;font-size:12px;color:var(--muted);line-height:1.5}
/* Foto struk ukuran penuh. */
dialog.lightbox{padding:0;border:0;border-radius:12px;max-width:96vw;max-height:94vh;width:96vw;height:94vh;background:#0f1117;color:#fff;overflow:hidden}
dialog.lightbox::backdrop{background:rgba(5,7,12,.82)}
.lightbox-bar{display:flex;align-items:center;justify-content:flex-end;gap:8px;padding:10px 12px;background:#161a22}
.lightbox-hint{margin-right:auto;font-size:12px;color:#aab0bd}
.lightbox-bar .btn.ghost{color:#e8ebf1;border-color:#3a4150}
.lightbox-stage{height:calc(94vh - 56px);overflow:auto;display:flex;align-items:center;justify-content:center;cursor:zoom-out}
.lightbox-stage img{max-width:100%;max-height:100%;object-fit:contain;cursor:zoom-in;background:#fff;border-radius:4px}
.lightbox-stage.actual{display:block;text-align:center}
.lightbox-stage.actual img{max-width:none;max-height:none;cursor:zoom-out}
@media(max-width:600px){
  .draft-row{gap:10px}
  .draft-photo{width:96px}
  .draft-photo img{max-width:96px;max-height:130px}
  .draft-zoom{font-size:11px}
  .queue-tools{width:100%}
  .queue-tools select,.queue-tools .btn{flex:1 1 100%;min-height:44px}
  .draft-ctrl .btn{min-height:44px}
  dialog.lightbox{width:100vw;height:100vh;max-width:100vw;max-height:100vh;border-radius:0}
  .lightbox-stage{height:calc(100vh - 56px)}
  .lightbox-hint{display:none}
}
/* Kartu antrean di ponsel: foto di atas teks selebar kartu. Tanpa foto: tidak ada kotak kosong (teks di baris meta). */
@media(max-width:480px){
  .draft-row{flex-direction:column;gap:10px}
  .draft-photo{width:100%}
  .draft-photo img{max-width:100%;max-height:160px}
  .draft-body{width:100%}
}
/* Tolak dari kartu: formulir kecil di dalam kartu. */
.reject-form{margin-top:10px;padding:10px 12px;border:1px solid var(--line2);border-radius:8px;background:var(--surface2)}
.reject-form label{display:flex;flex-direction:column;gap:6px;font-size:13px;font-weight:600}
.reject-form textarea{width:100%;min-height:64px;resize:vertical;border:1px solid var(--line2);border-radius:8px;padding:8px 10px;background:var(--input-bg);color:var(--ink);font:inherit;font-weight:400}
.reject-form .form-error{margin:6px 0 0}
.reject-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:8px}
@media(max-width:600px){.reject-actions .btn{flex:1 1 0;min-height:44px}}
/* Hasil persetujuan sekaligus di atas daftar. */
.approve-notice{margin:0 0 14px}
.approve-notice p{margin:0 0 4px}
.approve-notice ul{margin:4px 0 0;padding-left:18px}
/* Riwayat pengajuan: status di atas judul, alasan ditolak terlihat; tabel tidak memaksa geser di ponsel. */
.badge.err{background:var(--danger-weak);color:var(--danger-ink)}
.history-status{margin-bottom:4px}
.decision-note{margin-top:4px;font-size:12.5px;line-height:1.45;color:var(--danger-ink);overflow-wrap:anywhere}
.decision-note b{font-weight:600}
.approval-history td{overflow-wrap:anywhere}
@media(max-width:480px){.approval-history table.tbl{min-width:0}.approval-history table.tbl th,.approval-history table.tbl td{padding:8px}}
.plain-explain{margin:10px 0 12px;padding:10px 12px;border-left:4px solid var(--accent);background:var(--surface2);border-radius:6px;font-size:14px;line-height:1.5}
/* Bilah aksi lengket di ponsel untuk antrean ketua (Persetujuan) dan bendahara (Foto Struk): muncul bila ada yang
   dicentang. Letakkan .queue-sticky di dalam kartu antrean (.card.ai-queue>.bd tidak memotong/menggulir sendiri). */
.queue-sticky{display:none}
@media(max-width:900px){
  .queue-sticky:not([hidden]){display:flex;align-items:center;justify-content:space-between;gap:12px;position:sticky;bottom:0;z-index:20;margin:12px 0 0;padding:10px 12px;padding-bottom:calc(10px + env(safe-area-inset-bottom,0px));background:var(--surface);border:1px solid var(--line2);border-radius:12px;box-shadow:0 -6px 20px rgba(0,0,0,.14)}
  .queue-sticky-text{flex:1 1 auto;min-width:0;font-size:14px;font-weight:600;line-height:1.35;color:var(--ink)}
  .queue-sticky .btn{flex:none;width:auto;height:48px;min-height:48px;padding:0 22px;font-size:15px;font-weight:600}
}
/* Simpanan: pengaturan jarang dipakai dilipat di bawah satu judul. */
.settings-group>.bd>.operation-card{margin-bottom:12px}
.settings-group>.bd>.operation-card:last-child{margin-bottom:0}
/* Impor buku kas manual. */
.cashbook-import textarea{width:100%;font-family:ui-monospace,Consolas,monospace;font-size:13px}
.cashbook-table td.num{text-align:right;white-space:nowrap}
.cashbook-table select{max-width:260px}
.cashbook-table tr.row-need td{background:var(--warn-weak,#fff4e5)}
.cashbook-table tr.row-bad td{background:var(--danger-weak,#fdecea)}
.cashbook-table tr.row-done td{color:var(--muted)}
.cashbook-saldo{margin:6px 0 10px;padding-left:18px}
.ok-mark{color:#067647;font-weight:600}
.warn-mark,.bad-text{color:#b42318;font-weight:600}
.need-text{color:#b54708}
@media(max-width:600px){.cashbook-table select{min-height:44px;width:auto;min-width:11rem;max-width:220px}.cashbook-table tr.note-row td{white-space:normal}.cashbook-table .check-label input{width:22px;height:22px}.cashbook-table tr.note-row td{border-top:0;padding-top:0}}
.cashbook-table td{overflow-wrap:anywhere}
