/* components.css — komponen umum: kartu, panel, tabel, tombol, input, combobox, modal, toast, item-row */
@media(max-width:820px){
  body{display:block}
  .sidebar{display:none}
  .content{min-height:100vh}
  .topbar{position:sticky;top:0;background:rgba(255,244,236,.82);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);z-index:15;padding:calc(18px + var(--sat)) 18px 8px;align-items:center}
  .topbar .t-title{font-size:22px;font-weight:800;color:var(--ink)}
  .topbar .t-right{display:none}
  .t-word-img{display:block;height:25px;object-fit:contain;margin-left:auto}
  main{padding:6px 16px calc(120px + var(--sab))}
  h2.title{display:none}
  .desc{margin:-2px 0 16px}
  .cards{gap:12px;margin-bottom:16px}
  .card{border-radius:22px;padding:20px}
  .card .val{font-size:26px}.card .val.sm{font-size:19px}
  .card.accent{grid-column:1/-1}
  .panel{border-radius:22px;padding:18px}
  .flexbtns .btn{flex:1}
  .botnav{display:flex;position:fixed;left:14px;right:14px;bottom:calc(12px + var(--sab));z-index:40;background:#fff;border:none;border-radius:24px;padding:8px 6px;box-shadow:0 14px 36px rgba(120,20,10,.18);gap:2px}
  .botnav button{flex:1;min-width:0;background:none;border:none;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;font-size:9.5px;color:var(--muted);font-weight:700;cursor:pointer;padding:8px 2px;border-radius:16px;transition:.15s}
  .botnav button .bic{font-size:19px;line-height:1}
  .botnav button.active{color:var(--red);background:var(--cream)}
}
.view{display:none}.view.active{display:block}
h2.title{font-size:20px;margin-bottom:4px}
.desc{color:var(--muted);margin-bottom:18px;font-size:13px}
.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:14px;margin-bottom:22px}
.card{background:var(--card);border:none;border-radius:18px;padding:18px;box-shadow:0 6px 20px rgba(40,40,60,.05)}
.card .lbl{font-size:12px;color:var(--muted);margin-bottom:6px}
.card .val{font-size:22px;font-weight:700}.card .val.sm{font-size:17px}
.card.accent{background:linear-gradient(135deg,var(--red),var(--red-d));color:#fff;border:none}
.card.accent .lbl{color:#fff;opacity:.85}
.card.green .val{color:var(--green)}.card.amber .val{color:var(--amber)}
.panel{background:var(--card);border:none;border-radius:18px;padding:20px;margin-bottom:20px;box-shadow:0 6px 20px rgba(40,40,60,.05);overflow-x:auto}
.panel h3{font-size:15px;margin-bottom:14px;display:flex;align-items:center;justify-content:space-between;gap:8px}
table{width:100%;border-collapse:collapse;font-size:13px}
th,td{text-align:left;padding:9px 10px;border-bottom:1px solid var(--line)}
th{font-size:11px;text-transform:uppercase;letter-spacing:.03em;color:var(--muted);font-weight:600}
tbody tr:hover{background:#fbfafa}
td.num,th.num{text-align:right}
.btn{background:var(--red);color:#fff;border:none;padding:9px 16px;border-radius:9px;font-size:13px;font-weight:600;cursor:pointer}
.btn:hover{background:var(--red-d)}
.btn.ghost{background:#fff;color:var(--red);border:1.5px solid var(--red)}
.btn.sm{padding:5px 11px;font-size:12px}
.btn.gray{background:#eee;color:#555}.btn.gray:hover{background:#e0e0e0}
.btn.wa{background:#25D366;color:#fff}.btn.wa:hover{background:#1eb457}
.btn.dark{background:#333}.btn.dark:hover{background:#111}
input,select,textarea{font-family:inherit;font-size:13px;padding:8px 10px;border:1px solid #d8d8d8;border-radius:8px;width:100%;min-width:0;max-width:100%;background:#fff}
/* iOS/Safari: date/time input abaikan width:100% & melebar sesuai isi → normalkan */
input[type="date"],input[type="time"],input[type="datetime-local"]{-webkit-appearance:none;appearance:none}
input:focus,select:focus{outline:none;border-color:var(--red)}
label>input[type="checkbox"],label>input[type="radio"]{width:auto;min-width:0;margin:0;flex-shrink:0}
/* dropdown seragam: panah custom, tinggi & radius sama di semua tempat */
select,.combo-in{-webkit-appearance:none;appearance:none;background-color:#fff;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1.5l5 5 5-5' fill='none' stroke='%238a8f99' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 11px center;background-size:12px 8px;padding-right:32px;cursor:pointer;text-overflow:ellipsis;line-height:1.35}
select:hover,.combo-in:hover{border-color:#c9ccd1}
.combo.open .combo-in{border-color:var(--red)}
.combo-opt{line-height:1.35}
.combo-opt:hover{background:var(--cream)}
.monthsel{font-weight:600}
.cmpt{width:100%;border-collapse:separate;border-spacing:0;font-size:12.5px}
.cmpt th,.cmpt td{padding:5px 10px;border-bottom:1px solid var(--line);vertical-align:top;white-space:nowrap;text-transform:none;letter-spacing:0}
.cmpt th{font-size:11px;font-weight:700;color:var(--muted);text-align:right;vertical-align:bottom}
.cmpt td:first-child,.cmpt th:first-child{position:sticky;left:0;z-index:1;background:var(--card);white-space:normal;min-width:96px;max-width:120px;font-weight:600;text-align:left}
.cmpt tr.warn td{background:var(--amber-bg)}
.cmpt tr.sec td{background:var(--bg);font-weight:700;padding:6px 10px}
.cmpt tr.tot td{font-size:13.5px}
.cmpt .mini{font-size:11px;font-weight:400;line-height:1.3}
label.f{display:block;font-size:12px;color:var(--muted);margin-bottom:4px;font-weight:500}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.pill{display:inline-block;padding:3px 10px;border-radius:20px;font-size:11px;font-weight:700}
.pill.lunas{background:var(--green-bg);color:var(--green)}
.pill.belum{background:#fbe7e5;color:var(--red)}
.pill.sebagian{background:var(--amber-bg);color:var(--amber)}
.bar{height:9px;border-radius:6px;background:#eee;overflow:hidden}
.bar>span{display:block;height:100%;background:var(--red)}
.barrow{display:grid;grid-template-columns:150px 1fr 90px;gap:10px;align-items:center;margin-bottom:9px;font-size:12px}
.right{text-align:right}.muted{color:var(--muted)}.mini{font-size:12px;color:var(--muted)}
.up{color:var(--red);font-weight:700}.down{color:var(--green);font-weight:700}.flat{color:var(--muted)}
.empty{text-align:center;color:var(--muted);padding:26px;font-size:13px}
.modal-bg{position:fixed;inset:0;background:#0007;display:none;align-items:flex-start;justify-content:center;z-index:50;padding:calc(30px + var(--sat)) 14px calc(30px + var(--sab));overflow:auto}
.modal-bg.open{display:flex}
.modal{background:#fff;border-radius:16px;padding:22px;width:100%;max-width:640px;box-shadow:0 20px 60px #0004}
.modal h3{font-size:17px;margin-bottom:16px}
.modal .close{float:right;cursor:pointer;color:var(--muted);font-size:20px;line-height:1;border:none;background:none}
@media(max-width:820px){.modal-bg{padding:0;align-items:flex-end}.modal{max-width:100%;border-radius:20px 20px 0 0;max-height:92vh;overflow:auto;padding-bottom:calc(22px + var(--sab))}}
.dynrow{display:grid;grid-template-columns:2fr 1fr 1fr auto;gap:6px;margin-bottom:6px;align-items:center}
.dynrow.ops,.dynrow.out{grid-template-columns:2fr 1fr auto}
/* combobox bisa diketik */
.combo{position:relative}
.combo-in{width:100%}
.combo-menu{display:none;position:absolute;top:calc(100% + 4px);left:0;right:0;z-index:60;background:#fff;border:1px solid #e2e2e2;border-radius:12px;box-shadow:0 14px 34px rgba(0,0,0,.16);max-height:230px;overflow:auto}
.combo.open .combo-menu{display:block}
.combo-opt{padding:11px 12px;font-size:13px;cursor:pointer;border-bottom:1px solid var(--line)}
.combo-opt:last-child{border-bottom:none}
.combo-opt:active,.combo-opt:hover{background:var(--bg)}
.combo-empty{padding:12px;font-size:12px;color:var(--muted);text-align:center}
/* kartu baris input (produk/qty/harga) — enak di mobile */
.itemrow{background:var(--bg);border-radius:14px;padding:10px 10px 9px;margin-bottom:9px}
.itemrow .irtop{display:flex;gap:8px;align-items:center}
.itemrow .irtop .combo{flex:1;min-width:0}
.itemrow .irbot{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:8px}
.itemrow .irbot.one{grid-template-columns:1fr}
.itemrow>input,.itemrow>select{margin-top:8px}
.itemrow .irsub{text-align:right;font-size:12px;margin-top:7px;color:var(--muted);font-weight:600}
.x{background:#f2dede;color:var(--red);border:none;border-radius:7px;width:30px;height:32px;cursor:pointer;font-weight:700}
.sumbox{background:var(--bg);border-radius:10px;padding:12px 14px;margin-top:10px;font-size:13px}
.sumbox div{display:flex;justify-content:space-between;padding:2px 0}
.sumbox .big{font-weight:700;font-size:15px;border-top:1px solid var(--line);margin-top:5px;padding-top:7px}
.tag-cat{font-size:10px;padding:2px 7px;border-radius:6px;background:#f0f0f0;color:#666;margin-left:6px}
.pill-mini{display:inline-block;font-size:9px;font-weight:700;padding:1px 6px;border-radius:5px;background:var(--amber-bg);color:var(--amber);vertical-align:middle;letter-spacing:.02em}
.pill-mini.endorse{background:var(--blue-bg);color:var(--blue)}
.pill-mini.tester{background:#eef0f2;color:#5a6672}
.itemcell{line-height:1.4;min-width:150px}
.itemcell .li{display:flex;justify-content:space-between;gap:12px;align-items:baseline;padding:1.5px 0}
.itemcell .li .q{white-space:nowrap;font-weight:700}
.itemcell .free{margin-top:6px;padding-top:6px;border-top:1px dashed var(--line)}
.flexbtns{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:16px}
.acts{display:flex;gap:6px;justify-content:flex-end;flex-wrap:nowrap;white-space:nowrap}
.btn.del{background:#fbe7e5;color:var(--red);padding:5px 9px;font-size:13px;line-height:1}
.btn.del:hover{background:#f6d3ce}
.spark{display:flex;align-items:flex-end;gap:2px;height:26px}
.spark i{display:block;width:6px;background:var(--blue);border-radius:2px 2px 0 0;opacity:.7}
#toast{position:fixed;bottom:20px;left:50%;transform:translateX(-50%);background:#333;color:#fff;padding:10px 18px;border-radius:10px;font-size:13px;opacity:0;transition:.3s;pointer-events:none;z-index:99}
#toast.show{opacity:1}
@media(max-width:640px){.grid2{grid-template-columns:1fr}.dynrow,.dynrow.ops,.dynrow.out{grid-template-columns:1fr 1fr auto}.barrow{grid-template-columns:110px 1fr 70px}}
