.cart-dock {
  position: fixed;
  right: 28px;
  bottom: 24px;
  z-index: 30;
  display: flex;
  gap: 8px;
  max-width: calc(100% - 32px);
  border-radius: 28px;
  box-shadow: 0 8px 30px #18331f28;
  animation: cart-dock-enter 180ms ease-out;
}
.cart-dock[hidden],
.cart-dock button[hidden],
body:has(dialog[open]) .cart-dock {
  display: none;
}
.dock-cart,
.dock-product {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 14px;
  min-height: 64px;
  padding: 12px 22px;
  border: 0;
  border-radius: 28px;
  background: var(--green);
  color: #fff9ef;
  font: inherit;
  cursor: pointer;
  text-align: left;
}
.dock-copy {
  display: grid;
  gap: 3px;
}
.dock-copy strong {
  font-size: 0.95rem;
}
.dock-copy small {
  font-size: 0.72rem;
  opacity: 0.9;
}
.dock-cart > span:first-child {
  display: flex;
}
.dock-cart:hover {
  background: #2d512e;
}
.dock-product {
  display: grid;
  gap: 3px;
  background: #e5edd6;
  color: var(--green);
}
.dock-product strong {
  font-size: 0.9rem;
}
.dock-product span {
  font-size: 0.75rem;
}
body.has-cart-dock footer {
  padding-bottom: 120px;
}
@keyframes cart-dock-enter {
  from {
    opacity: 0;
    transform: translateY(8px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}
@media (max-width: 600px) {
  .cart-dock {
    left: 12px;
    right: 12px;
    bottom: calc(12px + env(safe-area-inset-bottom));
    max-width: none;
  }
  .dock-cart {
    flex: 1;
    min-width: 0;
  }
  .dock-product {
    flex: 1;
    min-width: 0;
  }
  .cart-dock-combined {
    padding: 6px;
    background: #faf5e9;
    border: 1px solid #1c3c1c20;
  }
  .cart-dock-combined button {
    border-radius: 22px;
    padding: 10px 12px;
    gap: 8px;
  }
  .cart-dock-combined #dock-arrow {
    display: none;
  }
  .cart-dock-combined .dock-copy strong {
    font-size: 0.85rem;
  }
  .cart-dock-combined .dock-copy small {
    font-size: 0.67rem;
  }
  .cart-dock-combined .dock-product {
    flex: 0.9;
  }
}
@media (prefers-reduced-motion: reduce) {
  .cart-dock {
    animation: none;
  }
}
