/* =========================================================
   Komponen: kartu menu, keranjang, tombol, form, toast
   ========================================================= */

/* ---------- Grid menu ---------- */
.menu-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 10px;
}

@media (min-width: 520px) { .menu-grid { grid-template-columns: repeat(3, 1fr); } }
@media (min-width: 800px) { .menu-grid { grid-template-columns: repeat(4, 1fr); } }

.menu-card {
  position: relative;
  min-height: 96px;
  padding: 13px 13px 12px;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  gap: 8px;
  text-align: left;
  border-radius: var(--radius);
  background: linear-gradient(160deg, var(--surface-2), var(--surface));
  border: 1px solid rgba(255, 255, 255, 0.05);
  box-shadow: var(--shadow-sm), var(--kilau);
  transition: transform 0.14s var(--gerak), border-color var(--cepat), box-shadow var(--cepat);
}

.menu-card:active { transform: scale(0.965); }

@media (hover: hover) {
  .menu-card:hover { border-color: var(--line-strong); transform: translateY(-2px); }
}

.menu-card.is-picked {
  border-color: var(--line-strong);
  background: linear-gradient(160deg, #2E2320, #241C1B);
  box-shadow: var(--shadow-sm), inset 0 0 0 1px rgba(232, 176, 75, 0.1);
}

.menu-card__name {
  font-size: 14.5px;
  font-weight: 700;
  line-height: 1.25;
  color: var(--text);
}

.menu-card__price {
  font-family: var(--font-num);
  font-size: 13px;
  font-weight: 600;
  color: var(--gold-dim);
  letter-spacing: 0.01em;
}

.menu-card.is-picked .menu-card__price { color: var(--gold); }

.menu-card__badge {
  position: absolute;
  top: -7px; right: -7px;
  min-width: 28px; height: 28px;
  padding: 0 7px;
  display: grid; place-items: center;
  border-radius: 999px;
  background: var(--red-bright);
  color: #fff;
  font-family: var(--font-num);
  font-size: 13.5px;
  font-weight: 800;
  border: 2px solid var(--bg);
  box-shadow: 0 3px 10px rgba(166, 39, 39, 0.5);
  animation: pop 0.18s ease;
}

@keyframes pop { from { transform: scale(0.5); } to { transform: scale(1); } }

/* Strip merah tipis di sisi kiri kartu topping — pembeda kategori sekilas pandang */
.menu-card--topping::before {
  content: "";
  position: absolute;
  left: 0; top: 16px; bottom: 16px;
  width: 3px;
  border-radius: 0 3px 3px 0;
  background: var(--red-bright);
  opacity: 0.65;
}

/* ---------- Keranjang mengambang ---------- */
.cart-dock {
  position: fixed;
  left: 10px; right: 10px;
  bottom: calc(var(--tabbar-h) + env(safe-area-inset-bottom) + 10px);
  z-index: 45;
  border-radius: var(--radius);
  background: linear-gradient(160deg, #2B1E1E, #201717);
  border: 1px solid var(--line-strong);
  box-shadow: var(--shadow);
  overflow: hidden;
  transform: translateY(140%);
  transition: transform 0.26s cubic-bezier(0.22, 1, 0.36, 1);
}

.cart-dock.is-open { transform: translateY(0); }

.cart-dock__summary {
  display: flex;
  align-items: center;
  gap: 12px;
  width: 100%;
  padding: 12px 14px;
  text-align: left;
}

.cart-dock__count {
  flex: 0 0 auto;
  min-width: 34px; height: 34px;
  padding: 0 9px;
  display: grid; place-items: center;
  border-radius: 9px;
  background: var(--red-bright);
  color: #fff;
  font-family: var(--font-num);
  font-weight: 800;
  font-size: 15px;
}

.cart-dock__label { flex: 1; min-width: 0; }
.cart-dock__label b { display: block; font-size: 13px; color: var(--text-mid); font-weight: 600; }
.cart-dock__total {
  font-family: var(--font-num);
  font-size: 19px;
  font-weight: 800;
  color: var(--gold);
  letter-spacing: -0.01em;
}
.cart-dock__chevron { color: var(--text-dim); font-size: 14px; transition: transform 0.2s ease; }
.cart-dock.is-expanded .cart-dock__chevron { transform: rotate(180deg); }

.cart-dock__body {
  display: none;
  border-top: 1px dashed var(--line);
  max-height: min(46vh, 380px);
  overflow-y: auto;
  padding: 6px 0;
}
.cart-dock.is-expanded .cart-dock__body { display: block; }

.cart-line {
  display: grid;
  grid-template-columns: 1fr auto;
  gap: 4px 12px;
  align-items: center;
  padding: 9px 14px;
}
.cart-line + .cart-line { border-top: 1px solid rgba(255, 255, 255, 0.04); }

.cart-line__name { font-size: 14px; font-weight: 600; }
.cart-line__sub {
  grid-column: 1;
  font-family: var(--font-num);
  font-size: 11.5px;
  color: var(--text-dim);
}

.stepper {
  grid-row: 1 / span 2;
  grid-column: 2;
  display: flex;
  align-items: center;
  gap: 2px;
  background: var(--surface);
  border: 1px solid rgba(255, 255, 255, 0.07);
  border-radius: 10px;
  padding: 3px;
}

.stepper__btn {
  width: 38px; height: 38px;
  display: grid; place-items: center;
  border-radius: 8px;
  font-size: 20px;
  font-weight: 700;
  line-height: 1;
  color: var(--text);
  background: var(--surface-3);
}
.stepper__btn:active { background: var(--red); }
.stepper__btn--minus { color: var(--text-mid); }

.stepper__qty {
  min-width: 34px;
  text-align: center;
  font-family: var(--font-num);
  font-size: 16px;
  font-weight: 800;
  color: var(--gold);
}

.cart-dock__foot {
  display: grid;
  grid-template-columns: 1fr 1.45fr;
  gap: 9px;
  padding: 11px 12px;
  border-top: 1px dashed var(--line);
  background: rgba(0, 0, 0, 0.22);
}

/* Kedua tombol wajib muat satu baris — label yang patah dua baris terbaca
   sebagai kesalahan, bukan desain. */
.cart-dock__foot .btn {
  padding-inline: 10px;
  font-size: 14.5px;
  white-space: nowrap;
}

/* ---------- Tombol ---------- */
.btn {
  min-height: var(--tap);
  padding: 0 20px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 9px;
  border-radius: 12px;
  font-size: 15.5px;
  font-weight: 700;
  letter-spacing: 0.02em;
  transition: transform 0.1s ease, filter 0.15s ease;
}
.btn:active { transform: scale(0.97); }
.btn:disabled { opacity: 0.42; pointer-events: none; }

.btn--primary {
  background: linear-gradient(160deg, var(--red-bright), var(--red-deep));
  color: var(--text);
  box-shadow: 0 6px 18px rgba(107, 22, 22, 0.45), inset 0 1px 0 rgba(255, 255, 255, 0.09);
}

.btn--gold {
  background: linear-gradient(160deg, var(--gold), var(--gold-dim));
  color: #241A08;
  box-shadow: 0 6px 18px rgba(196, 146, 58, 0.3);
}

.btn--ghost {
  background: var(--surface-2);
  color: var(--text-mid);
  border: 1px solid rgba(255, 255, 255, 0.07);
}

.btn--danger { background: rgba(217, 83, 79, 0.14); color: #E88; border: 1px solid rgba(217, 83, 79, 0.3); }

.btn--block { width: 100%; }
.btn--sm { min-height: 42px; font-size: 13.5px; padding: 0 14px; border-radius: 10px; }

/* ---------- Kondisi kosong ---------- */
.empty {
  padding: 52px 24px;
  text-align: center;
  color: var(--text-dim);
}
.empty__ico { font-size: 40px; opacity: 0.4; display: block; margin-bottom: 12px; }
.empty p { margin: 0; font-size: 14px; line-height: 1.6; }

/* ---------- Toast ---------- */
.toast {
  position: fixed;
  left: 50%;
  bottom: calc(var(--tabbar-h) + env(safe-area-inset-bottom) + 84px);
  transform: translate(-50%, 22px);
  z-index: 90;
  max-width: min(92vw, 380px);
  padding: 12px 18px;
  border-radius: 12px;
  background: #101010;
  border: 1px solid var(--line-strong);
  color: var(--text);
  font-size: 14px;
  font-weight: 600;
  text-align: center;
  box-shadow: var(--shadow);
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.22s ease, transform 0.22s ease;
}
.toast.is-show { opacity: 1; transform: translate(-50%, 0); }
.toast--ok { border-color: rgba(76, 175, 106, 0.5); }
.toast--err { border-color: rgba(217, 83, 79, 0.5); }
