/* PENJAGA HIDDEN atribut hidden HTML harus selalu menang.
   Banyak komponen memakai `node.hidden = true` untuk menutup panel, tetapi
   aturan seperti `.panel{display:flex}` lebih spesifik daripada [hidden]
   bawaan browser, sehingga panel tetap terlihat dan menutupi UI di bawahnya.
   Diletakkan paling atas agar berlaku untuk seluruh komponen di berkas ini. */
[hidden]{display:none!important}

/* Cascading combobox master wilayah dipakai Portal Member dan checkout publik.
   Token warna diambil dari konteks pemakai: --customer-* di portal, --commerce-* di checkout.
   Nilai fallback menjaga tampilan tetap benar bila keduanya tidak ada. */

.region-picker {
  display: grid;
  gap: 12px;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
}

.region-picker-field {
  position: relative;
  display: flex;
  flex-direction: column;
  gap: 6px;
  min-width: 0;
}

.region-picker-label {
  font-size: .85rem;
  font-weight: 600;
  color: var(--customer-text, var(--commerce-text, #10241b));
}

.region-picker-trigger {
  width: 100%;
  text-align: left;
  padding: 10px 34px 10px 12px;
  border: 1px solid var(--customer-line, var(--commerce-line, #dce7e0));
  border-radius: 10px;
  background: var(--customer-card, #fff);
  color: var(--customer-text, var(--commerce-text, #10241b));
  cursor: pointer;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.region-picker-trigger::after {
  content: '';
  position: absolute;
  right: 12px;
  bottom: 16px;
  width: 8px;
  height: 8px;
  border-right: 2px solid currentColor;
  border-bottom: 2px solid currentColor;
  transform: rotate(45deg);
  opacity: .55;
  pointer-events: none;
}

.region-picker-trigger:focus-visible,
.region-picker-search:focus-visible,
.region-picker-option:focus-visible,
.region-picker-postal-select:focus-visible {
  outline: 2px solid var(--customer-green, var(--commerce-green, #0b4d35));
  outline-offset: 2px;
}

.region-picker-field.is-disabled .region-picker-trigger {
  opacity: .55;
  cursor: not-allowed;
}

.region-picker-field.has-value .region-picker-trigger {
  border-color: var(--customer-green, var(--commerce-green, #0b4d35));
}

.region-picker-panel {
  position: absolute;
  z-index: 40;
  top: calc(100% + 4px);
  left: 0;
  right: 0;
  display: flex;
  flex-direction: column;
  gap: 6px;
  padding: 8px;
  border: 1px solid var(--customer-line, var(--commerce-line, #dce7e0));
  border-radius: 10px;
  background: var(--customer-card, #fff);
  box-shadow: var(--customer-shadow, 0 20px 60px rgba(11, 77, 53, .12));
}

.region-picker-search {
  width: 100%;
  padding: 8px 10px;
  border: 1px solid var(--customer-line, var(--commerce-line, #dce7e0));
  border-radius: 8px;
  background: var(--customer-bg, #f2f6f3);
  color: inherit;
}

.region-picker-listbox {
  display: flex;
  flex-direction: column;
  max-height: 240px;
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
}

.region-picker-option {
  padding: 9px 10px;
  border: 0;
  border-radius: 8px;
  background: transparent;
  color: inherit;
  text-align: left;
  cursor: pointer;
}

.region-picker-option:hover,
.region-picker-option.is-active {
  background: var(--customer-bg, #f2f6f3);
}

.region-picker-option[aria-selected='true'] {
  font-weight: 700;
  color: var(--customer-green, var(--commerce-green, #0b4d35));
}

.region-picker-status {
  margin: 0;
  padding: 4px 2px;
  font-size: .82rem;
  color: var(--customer-muted, #64746c);
}

.region-picker-status[data-tone='error'] {
  color: var(--customer-danger, var(--commerce-danger, #b42318));
}

.region-picker-postal-select {
  width: 100%;
  padding: 10px 12px;
  border: 1px solid var(--customer-line, var(--commerce-line, #dce7e0));
  border-radius: 10px;
  background: var(--customer-card, #fff);
  color: inherit;
}

.region-picker-postal-note {
  color: var(--customer-muted, #64746c);
  font-size: .8rem;
}

/* Kandidat vendor ongkir ambiguous (D-019): customer memilih sendiri saat
   isi alamat, tampil di bawah kombo kecamatan/kode pos, bukan panel terpisah. */
.region-picker-mapping {
  grid-column: 1 / -1;
  display: flex;
  flex-direction: column;
  gap: 8px;
  padding: 10px 12px;
  border: 1px solid var(--customer-line, var(--commerce-line, #dce7e0));
  border-radius: 10px;
  background: var(--customer-bg, #f2f6f3);
}

.region-picker-mapping-note {
  margin: 0;
  font-size: .85rem;
  color: var(--customer-text, var(--commerce-text, #10241b));
}

.region-picker-mapping-list {
  display: flex;
  flex-direction: column;
  gap: 6px;
}

.region-picker-mapping-option {
  display: flex;
  flex-direction: column;
  gap: 2px;
  padding: 9px 10px;
  border: 1px solid var(--customer-line, var(--commerce-line, #dce7e0));
  border-radius: 8px;
  background: var(--customer-card, #fff);
  color: inherit;
  text-align: left;
  cursor: pointer;
}

.region-picker-mapping-option:hover {
  border-color: var(--customer-green, var(--commerce-green, #0b4d35));
}

.region-picker-mapping-option.is-selected {
  border-color: var(--customer-green, var(--commerce-green, #0b4d35));
  background: var(--customer-bg, #f2f6f3);
}

.region-picker-mapping-option.is-selected strong::after {
  content: ' ✓';
}

.region-picker-mapping-option small {
  color: var(--customer-muted, #64746c);
}

/* Layar sempit: satu kolom penuh agar daftar pilihan tidak terpotong. */
@media (max-width: 640px) {
  .region-picker { grid-template-columns: 1fr; }
  .region-picker-listbox { max-height: 200px; }
}
