.shop-app { display: grid; gap: 1.5rem; }
@media (min-width: 900px) { .shop-app { grid-template-columns: 2fr 1fr; align-items: start; } }
.shop-grid { display: grid; gap: 1rem; grid-template-columns: repeat(auto-fill, minmax(14rem, 1fr)); }
.shop-card, .shop-product {
    background: var(--surface, #fff);
    border: 1px solid var(--border, #d9dee5);
    border-radius: var(--card-radius, 12px);
    padding: 1rem;
}
.shop-product img { display: block; width: 100%; aspect-ratio: 4 / 3; object-fit: cover; border-radius: 8px; margin-bottom: 0.75rem; }
.shop-product h3 { margin: 0 0 0.25rem; }
.shop-desc { margin: 0 0 0.5rem; opacity: 0.85; }
.shop-price { font-weight: 700; margin: 0 0 0.5rem; }
.shop-left { color: #b54708; margin: 0 0 0.5rem; }
.shop-basket label { display: block; font-weight: 600; margin: 0.9rem 0 0.25rem; }
.shop-basket input, .shop-basket select, .shop-basket textarea {
    width: 100%;
    font: inherit;
    padding: 0.55rem 0.65rem;
    border: 1px solid var(--border, #c8ced6);
    border-radius: 8px;
}
.shop-lines { list-style: none; margin: 0 0 1rem; padding: 0; }
.shop-lines li { display: grid; grid-template-columns: 1fr 4.5rem auto auto; gap: 0.5rem; align-items: center; padding: 0.4rem 0; border-top: 1px solid var(--border, #d9dee5); }
.shop-lines li:first-child { border-top: 0; }
.shop-lines input { width: 4.5rem; padding: 0.3rem 0.4rem; }
.shop-link { background: none; border: 0; padding: 0; color: inherit; text-decoration: underline; cursor: pointer; font: inherit; }
.shop-total { font-size: 1.15rem; font-weight: 700; margin: 1rem 0 0.75rem; }
.shop-note { margin: 0.4rem 0 0; opacity: 0.85; }
.shop-status { min-height: 1.4rem; margin: 0.6rem 0 0; }
.shop-status.is-error { color: #b42318; }
