/* Native catalogue, basket and checkout. */
.shop-page {
    --shop-surface: #fff;
    color: var(--ink);
}
.shop-page::after { content: ""; display: block; clear: both; }
.shop-page .crumb { margin-bottom: clamp(1.5rem, 3.5vw, 3.5rem); }
.shop-heading {
    display: flex;
    flex-wrap: wrap;
    gap: 1rem 2rem;
    justify-content: space-between;
    align-items: end;
    margin: 0 0 clamp(1.6rem, 3.5vw, 3.2rem);
}
.shop-heading h1, .shop-detail-info h1 { max-width: 22ch; font-size: clamp(2.8rem, 5.5vw, 5.8rem); }
.shop-heading .lead-text { max-width: 54ch; margin: .8rem 0 0; }
.shop-inline-links, .shop-tail, .shop-cart-tools, .shop-downloads { display: flex; flex-wrap: wrap; align-items: center; gap: .7rem 1rem; }
.shop-inline-links, .shop-tail a:not(.button) { font-size: .9rem; }
.shop-catalog-cover { width: 100%; max-height: 26rem; object-fit: cover; margin: 0 0 2rem; }
.shop-catalog-body { max-width: 65ch; margin: 0 0 2rem; }
.shop-cards { display: grid; gap: 2rem 1.25rem; grid-template-columns: repeat(3,minmax(0,1fr)); }
.shop-card { min-width: 0; }
.shop-card-img, .shop-product-img, .shop-cart-img { display: grid; place-items: center; overflow: hidden; background: #fff; border: 1px solid var(--line); text-decoration: none; }
.shop-card-img { aspect-ratio: 6/7; }
.shop-card-img img { display: block; width: 100%; height: 100%; object-fit: contain; transition: transform .35s ease; }
.shop-card:focus-within .shop-card-img, .shop-card:hover .shop-card-img { border-color: var(--rose); }
@media (hover:hover) and (prefers-reduced-motion:no-preference) {
    .shop-card:hover .shop-card-img img { transform: scale(1.025); }
}
.shop-card-info { padding: .9rem .1rem 0; }
.shop-kicker { font-size: .72rem; line-height: 1.4; font-weight: 700; text-transform: uppercase; letter-spacing: .075em; color: var(--muted); margin: 0 0 .45rem; }
.shop-card h2, .shop-cart-item h2, .shop-summary h2, .shop-review h2, .shop-payment-box h2, .shop-empty h2, .shop-fieldset legend {
    font-family: var(--serif);
    color: var(--ink);
    font-weight: 500;
    line-height: 1.13;
    letter-spacing: -.025em;
}
.shop-card h2 { margin: 0; font-size: clamp(1.55rem, 2.6vw, 2.65rem); }
.shop-card h2 a, .shop-cart-item h2 a { color: inherit; text-decoration: none; }
.shop-card h2 a:hover, .shop-cart-item h2 a:hover { text-decoration: underline; }
.shop-price { display: flex; align-items: baseline; flex-wrap: wrap; gap: .45rem .75rem; margin: .45rem 0 0; font-variant-numeric: tabular-nums; }
.shop-price del { font-size: .86em; color: var(--muted); }
.shop-stock { font-size: .85rem; margin: .45rem 0 0; color: var(--muted); }
.shop-detail { display: grid; grid-template-columns: minmax(0,1.05fr) minmax(0,.95fr); align-items: start; gap: clamp(1.5rem,5.5vw,6rem); }
.shop-product-img { aspect-ratio: 1; }
.shop-product-img>a { display: block; width: 100%; height: 100%; cursor: zoom-in; }
.shop-product-img img { width: 100%; height: 100%; object-fit: contain; }
.shop-thumbs { display: flex; gap: .6rem; overflow-x: auto; padding: .8rem .2rem; }
.shop-thumbs a { flex: 0 0 4.5rem; border: 1px solid var(--line); background: white; }
.shop-thumbs img { width: 100%; height: 4.5rem; object-fit: contain; }
.shop-detail-info { padding-top: clamp(.25rem,2.4vw,2.5rem); min-width: 0; }
.shop-price-detail { font-size: 1.45rem; margin: 1.2rem 0; }
.shop-description { font-size: 1.02rem; margin-bottom: 1.6rem; max-width: 48ch; }
.shop-add, .shop-unavailable { display: flex; align-items: flex-end; gap: .8rem; flex-wrap: wrap; margin: 1.6rem 0; }
.shop-add input[type=number], .shop-quantity-form input { width: 5rem; text-align: center; }
.shop-detail-notes, .shop-facts, .shop-totals { margin: 0; }
.shop-detail-notes>div, .shop-facts>div, .shop-totals>div {
    border-top: 1px solid var(--line);
    padding: .85rem 0;
    display: grid;
    grid-template-columns: minmax(6rem,.6fr) minmax(0,1fr);
    gap: .4rem 1rem;
}
.shop-detail-notes { margin-top: 2rem; }
.shop-detail-notes strong, .shop-facts dt, .shop-totals dt { font-size: .88rem; font-weight: 600; }
.shop-detail-notes span, .shop-detail-notes a, .shop-facts dd, .shop-totals dd { overflow-wrap: anywhere; margin: 0; font-size: .92rem; }
.shop-product-body { width: min(100%, 800px); margin: clamp(2.4rem,5vw,5.2rem) auto 0; }
.shop-two-col { display: grid; grid-template-columns: minmax(0,1.55fr) minmax(17rem,.8fr); align-items: start; gap: clamp(1.5rem,4.5vw,5rem); }
.shop-summary { padding: clamp(1.15rem,2.5vw,2.2rem); background: var(--blush); color: var(--ink); min-width: 0; }
.shop-summary h2, .shop-review h2, .shop-payment-box h2, .shop-empty h2, .shop-fieldset legend { margin: 0 0 1.15rem; font-size: clamp(1.65rem,2.1vw,2.35rem); }
.shop-totals>div { border-color: #c7b6b6; grid-template-columns: auto 1fr; }
.shop-totals dd { text-align: right; }
.shop-grand { display: flex; align-items: baseline; justify-content: space-between; flex-wrap: wrap; gap: .35rem; padding-top: .9rem; border-top: 1px solid var(--ink); }
.shop-grand strong { font-size: 1.35rem; font-variant-numeric: tabular-nums; }
.shop-summary .button { width: 100%; text-align: center; margin-top: 1.2rem; }
.shop-cart-item { display: grid; grid-template-columns: minmax(4.2rem,7rem) minmax(0,1fr); align-items: start; gap: clamp(.8rem,2vw,1.35rem); padding: 1.15rem 0; border-top: 1px solid var(--line); }
.shop-cart-item:last-child { border-bottom: 1px solid var(--line); }
.shop-cart-img { aspect-ratio: 1; }
.shop-cart-img img { width: 100%; height: 100%; object-fit: contain; }
.shop-line-head { display: flex; justify-content: space-between; align-items: baseline; gap: .5rem 1rem; flex-wrap: wrap; }
.shop-line-head h2 { margin: 0; font-size: clamp(1.3rem,1.8vw,2rem); }
.shop-line-head strong, .shop-order-lines strong { white-space: nowrap; font-variant-numeric: tabular-nums; }
.shop-unit { font-size: .85rem; color: var(--muted); margin: .25rem 0 .65rem; }
.shop-cart-tools form, .shop-cart-tools .shop-unit { margin: 0; }
.shop-quantity-form { display: flex; align-items: center; gap: .5rem; }
.shop-field { display: grid; gap: .3rem; font-size: .88rem; font-weight: 600; }
.shop-field input, .shop-quantity-form input { min-width: 0; max-width: 100%; padding: .6rem .75rem; min-height: 45px; border: 1px solid #888; border-radius: 4px; color: var(--ink); background: var(--shop-surface); }
.shop-quantity-form input { padding: .3rem; min-height: 36px; width: 3.8rem; }
.shop-text-action { border: 0; padding: .3rem 0; background: none; color: var(--muted); text-decoration: underline; text-underline-offset: .2rem; font-size: .85rem; }
.shop-text-action:hover { color: var(--ink); }
.shop-empty { border: 1px solid var(--line); padding: clamp(1.4rem,4vw,3.5rem); background: var(--blush); }
.shop-empty .button { margin-top: .3rem; }
.shop-error { margin: 1rem 0 1.5rem; padding: .8rem 1rem; border-left: 4px solid #8d3d43; background: #fff; color: #67282e; }
.shop-account-note { margin: 0 0 1.2rem; }
.shop-checkout-form, .shop-place { display: grid; gap: 1.5rem; }
.shop-checkout-form>.button, .shop-place>.button { justify-self: start; }
.shop-fieldset { min-width: 0; margin: 0; padding: 1.1rem 0 0; border: 0; border-top: 1px solid var(--line); }
.shop-fieldset legend { float: none; width: auto; padding: 0 .65rem 0 0; margin: 0; }
.shop-fieldset>.shop-field, .shop-field-pair, .shop-fieldset>.shop-check { margin: .7rem 0 0; }
.shop-field-pair { display: grid; grid-template-columns: repeat(auto-fit,minmax(min(100%,13rem),1fr)); gap: .7rem 1rem; }
.shop-options { display: grid; gap: .45rem; margin: 0 0 1rem; }
.shop-option { display: flex; align-items: center; gap: .75rem; padding: .6rem .85rem; margin: 0; min-height: 48px; background: var(--shop-surface); border: 1px solid var(--line); border-radius: 4px; cursor: pointer; }
.shop-option:has(input:checked) { border-color: var(--ink); background: var(--blush); }
.shop-option strong { margin-left: auto; text-align: right; font-size: .87rem; white-space: nowrap; }
.shop-option input, .shop-check input { flex: 0 0 auto; width: 1.15rem; height: 1.15rem; accent-color: var(--navy); }
.shop-check { display: flex; align-items: flex-start; gap: .65rem; font-size: .92rem; line-height: 1.55; cursor: pointer; }
.shop-check input { margin-top: .17rem; }
.shop-checkout-form .button, .shop-place .button { white-space: normal; }
.shop-edit-details { border: 1px solid var(--line); border-radius: 4px; padding: .8rem 1rem; margin: 0 0 1.5rem; }
.shop-edit-details>summary { cursor: pointer; font-weight: 600; }
.shop-edit-details[open]>summary { margin-bottom: 1.2rem; }
.shop-place { gap: 1rem; margin: 1.5rem 0 0; }
.shop-payable { display: flex; align-items: baseline; justify-content: space-between; gap: .6rem; max-width: 30rem; margin: 0; padding: .9rem 0 0; border-top: 1px solid var(--line); }
.shop-payable strong { font-size: 1.2rem; }
.shop-order-lines { list-style: none; margin: 0 0 1rem; padding: 0; }
.shop-order-lines li { display: flex; justify-content: space-between; gap: 1rem; align-items: baseline; margin: .8rem 0; font-size: .93rem; }
.shop-order-lines li span { overflow-wrap: anywhere; min-width: 0; }
.shop-order-lines small { display: block; color: var(--muted); }
.shop-order-title { word-break: break-word; }
.shop-payment-box { margin-bottom: 1.5rem; padding: clamp(1rem,3vw,1.7rem); border: 1px solid var(--line); background: #fff; }
.shop-payment-box p:last-child { margin-bottom: 0; }
.shop-bank { white-space: pre-line; overflow-wrap: anywhere; }
.shop-tail { margin-top: 2rem; }
@media (max-width:850px) {
    .shop-two-col { grid-template-columns: minmax(0,1fr) minmax(14rem,.65fr); gap: 1rem; }
}
@media (max-width:700px) {
    .shop-two-col, .shop-detail { grid-template-columns: minmax(0,1fr); }
    .shop-checkout-form>.button, .shop-place>.button { justify-self: stretch; }
    .shop-detail-info { padding-top: 0; }
    .shop-cards { grid-template-columns: repeat(2,minmax(0,1fr)); gap: 1.5rem .8rem; }
    .shop-card h2 { font-size: clamp(1.25rem,5vw,1.7rem); }
    .shop-card-info { padding-top: .65rem; }
    .shop-card .shop-kicker { font-size: .65rem; letter-spacing: .035em; }
    .shop-cart-item { grid-template-columns: 4.5rem minmax(0,1fr); }
    .shop-detail-info h1 { font-size: clamp(2.7rem,11vw,4rem); }
    .shop-product-img { aspect-ratio: 6/5; }
}
@media (max-width:380px) {
    .shop-cart-item { grid-template-columns: 3.5rem minmax(0,1fr); }
    .shop-cart-tools { gap: .4rem .8rem; }
    .shop-check input { margin-top: .25rem; }
    .shop-summary { padding: 1rem; }
}
.pref-contrast .shop-summary, .pref-contrast .shop-option, .pref-contrast .shop-empty { border: 1px solid #000; }
.pref-contrast .shop-stock, .pref-contrast .shop-unit { color: #000; }
.category-tabs{display:flex;flex-wrap:wrap;gap:.5rem;margin:1.2rem 0 1.6rem}.category-tabs a{border-radius:2rem;padding:.55rem .9rem;border:1px solid #bfa3a5;color:#050b25;text-decoration:none}.category-tabs [aria-current]{background:#f7ebeb;font-weight:650}

.shop-option-note{display:block;font-size:.77rem;line-height:1.6;color:var(--muted);margin-top:.25rem}.shop-follow-up{padding:1.3rem 1.5rem;border:1px solid var(--line);border-radius:18px;background:var(--blush);margin:0 0 1.5rem}.shop-follow-up h2{font-size:1.3rem;margin-bottom:.6rem}.shop-follow-up p{margin:0;font-size:.9rem}
