.store-layout {
    min-width: 0;
    width: 100%;
    container-type: inline-size;
    --store-cols: 4;
    --store-gap: 24px;
}
.catalogue-grid.store-layout {
    grid-template-columns: repeat(var(--store-cols), minmax(0, 1fr));
    gap: var(--store-gap);
}
.store-layout .catalogue-media {
    position: relative;
    flex-shrink: 0;
    height: auto;
    aspect-ratio: 4/3;
    padding: 18px;
}
.store-layout .catalogue-media img {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    padding: inherit;
    object-fit: contain;
}
.store-fit-cover .catalogue-media img { object-fit: cover; }
.store-ratio-square .catalogue-media { aspect-ratio: 1; }
.store-ratio-landscape .catalogue-media { aspect-ratio: 4/3; }
.store-ratio-portrait .catalogue-media { aspect-ratio: 3/4; }
.store-ratio-wide .catalogue-media { aspect-ratio: 16/9; }
.store-ratio-auto .catalogue-media { aspect-ratio: 4/3; }
.store-shop-list.catalogue-grid { grid-template-columns: minmax(0, 1fr); }
.store-shop-list .catalogue-card>a,
.store-shop-list .catalogue-card>div {
    display: grid;
    grid-template-columns: minmax(0, 3fr) minmax(0, 9fr);
}
.store-shop-list .catalogue-card-copy { align-self: center; }
.store-shop-list .catalogue-media { height: 100%; min-height: 220px; }
.store-shop-editorial .catalogue-card:first-child { grid-column: span 2; }
.store-shop-editorial.store-d-1 .catalogue-card:first-child { grid-column: 1/-1; }
.store-shop-editorial .catalogue-card:first-child h2 { font-size: 28px; }
.store-shop-compact .catalogue-card-copy { padding: 16px; gap: 8px; }
.store-shop-compact .catalogue-card-copy h2 { font-size: 18px; }
.store-shop-compact .catalogue-media { padding: 10px; }
.store-price { font-weight: 700; font-size: 20px; }
.store-layout .catalogue-card { text-decoration: none; }
.store-layout .catalogue-card:hover h2 { color: var(--cc-accent); }
.store-layout a:focus-visible { outline: 3px solid var(--cc-accent); outline-offset: 3px; }
.store-categories-overlay .catalogue-card {
    position: relative;
    min-height: 280px;
    color: #fff;
    background: var(--cc-primary, #123c5a);
}
.store-categories-overlay .catalogue-media { padding: 0; position: absolute; inset: 0; height: 100%; }
.store-categories-overlay .catalogue-card-copy {
    position: relative;
    min-height: 280px;
    justify-content: end;
    background: linear-gradient(transparent, #061a2be8);
    color: #fff;
}
.store-categories-overlay .catalogue-card-copy>span { margin-top: 0; }
.store-categories-overlay .catalogue-card:hover h2 { color: #fff; }
.store-categories-list.catalogue-grid { grid-template-columns: minmax(0, 1fr); }
.store-categories-list .catalogue-card { display: grid; grid-template-columns: minmax(0, 3fr) minmax(0, 9fr); }
.store-categories-list .catalogue-card-copy { align-self: center; }
.store-categories-list .catalogue-media { min-height: 180px; height: 100%; }
.store-no-images.store-shop-list .catalogue-card>a,
.store-no-images.store-shop-list .catalogue-card>div,
.store-no-images.store-categories-list .catalogue-card { grid-template-columns: minmax(0, 1fr); }
.store-categories-minimal .catalogue-card { border-width: 0 0 2px; border-radius: 0; }
.store-categories-minimal .catalogue-media { max-height: 160px; padding: 12px; }
.store-categories-minimal .catalogue-card-copy { padding: 16px; }
.store-product { gap: 32px; }
.store-product-classic>.catalogue-detail-media { grid-column: span 5; }
.store-product-classic>.catalogue-detail-copy { grid-column: span 7; }
.store-product-showcase>.catalogue-detail-media { grid-column: span 8; }
.store-product-showcase>.catalogue-detail-copy { grid-column: span 4; }
.store-product-compact>.catalogue-detail-media { grid-column: span 4; }
.store-product-compact>.catalogue-detail-copy { grid-column: span 8; }
.store-product-centred>.catalogue-detail-media,
.store-product-centred>.catalogue-detail-copy { grid-column: span 12; width: 100%; }
.store-product-centred>.catalogue-detail-copy { max-width: 820px; justify-self: center; }
.store-product:has(>.catalogue-detail-media:empty)>.catalogue-detail-media { display: none; }
.store-product:has(>.catalogue-detail-media:empty)>.catalogue-detail-copy { grid-column: span 12; }
.store-product-kind { text-transform: uppercase; font-size: 12px; font-weight: 700; letter-spacing: .08em; }
.store-variant {
    border: 1px solid var(--cc-border, #d1dfe8);
    background: var(--cc-surface, #fff);
    border-radius: var(--cc-radius, 8px);
    padding: 24px;
    margin-bottom: 20px;
}
.store-variant h3 { margin-top: 0; font-size: 22px; }
.store-variant form { display: flex; align-items: end; gap: 16px; flex-wrap: wrap; }
.store-variant form>.field { width: 120px; margin: 0; }
.store-variant fieldset { display: flex; align-items: end; gap: 16px; border: 0; padding: 0; margin: 0; min-width: 0; }
.store-variant fieldset>.field { width: 120px; margin: 0; }
.store-availability { font-weight: 600; }
.store-sku { font-size: 13px; }
.store-description { margin-top: 24px; }
.store-information { border: 1px solid var(--cc-border); border-radius: 8px; padding: 16px 20px; margin-top: 24px; }
.store-information summary { font-weight: 700; cursor: pointer; }
.store-product .catalogue-product-gallery .ng-stage img { height: min(60vh, 520px); padding: 16px; object-fit: contain; }
.store-sticky>.catalogue-detail-copy { position: sticky; top: 110px; }
.store-thumbs-left .ng-thumbnails.ng-ready { display: grid; grid-template-columns: 80px minmax(0, 1fr); gap: 12px; }
.store-thumbs-left .ng-thumbnails>.ng-stage { grid-column: 2; grid-row: 1; }
.store-thumbs-left .ng-thumbnails>.ng-grid { grid-column: 1; grid-row: 1; grid-auto-flow: row; grid-auto-columns: auto; grid-template-columns: minmax(0, 1fr); align-content: start; max-height: 520px; overflow-y: auto; margin: 0; }
.store-thumbs-left .ng-thumbnails>.ng-controls { grid-column: 1/-1; }
.store-category-heading { display: grid; grid-template-columns: minmax(0, 3fr) minmax(0, 9fr); gap: 24px; align-items: center; margin-block: 24px; }
.store-category-heading .catalogue-media { height: 180px; }
.store-category-heading p { margin: 0; line-height: 1.7; }
.store-category-heading:not(:has(.catalogue-media)) { grid-template-columns: minmax(0, 1fr); }
.store-d-1 { --store-cols: 1; }.store-d-2 { --store-cols: 2; }.store-d-3 { --store-cols: 3; }.store-d-4 { --store-cols: 4; }.store-d-5 { --store-cols: 5; }.store-d-6 { --store-cols: 6; }
.store-gap-0 { --store-gap: 0px; }.store-gap-8 { --store-gap: 8px; }.store-gap-16 { --store-gap: 16px; }.store-gap-24 { --store-gap: 24px; }.store-gap-32 { --store-gap: 32px; }
@media(min-width: 768px) and (max-width: 991px) {
    .store-t-1 { --store-cols: 1; }.store-t-2 { --store-cols: 2; }.store-t-3 { --store-cols: 3; }.store-t-4 { --store-cols: 4; }.store-t-5 { --store-cols: 5; }.store-t-6 { --store-cols: 6; }
    .store-product-showcase>.catalogue-detail-media { grid-column: span 7; }
    .store-product-showcase>.catalogue-detail-copy { grid-column: span 5; }
    .store-shop-editorial.store-t-1 .catalogue-card:first-child { grid-column: 1/-1; }
}
@media(max-width: 767px) {
    .store-m-1 { --store-cols: 1; }.store-m-2 { --store-cols: 2; }.store-m-3 { --store-cols: 3; }.store-m-4 { --store-cols: 4; }.store-m-5 { --store-cols: 5; }.store-m-6 { --store-cols: 6; }
    .store-product>.catalogue-detail-media,.store-product>.catalogue-detail-copy { grid-column: span 12; }
    .store-sticky>.catalogue-detail-copy { position: static; }
    .store-product .catalogue-product-gallery .ng-stage img { height: 320px; }
    .store-thumbs-left .ng-thumbnails.ng-ready { display: block; }
    .store-thumbs-left .ng-thumbnails>.ng-grid { grid-auto-flow: column; grid-auto-columns: 80px; grid-template-columns: none; overflow-x: auto; margin-top: 12px; }
    .store-shop-editorial .catalogue-card:first-child { grid-column: 1/-1; }
    .store-shop-list .catalogue-card>a,.store-shop-list .catalogue-card>div,.store-categories-list .catalogue-card { grid-template-columns: 100px minmax(0, 1fr); }
    .store-shop-list .catalogue-media,.store-categories-list .catalogue-media { min-height: 140px; aspect-ratio: auto; padding: 10px; }
    .store-shop-list .catalogue-card-copy,.store-categories-list .catalogue-card-copy { padding: 14px; }
    .store-variant { padding: 20px; }
    .store-variant form,.store-variant fieldset { width: 100%; }
    .store-variant button { flex: 1; }
    .store-category-heading { grid-template-columns: minmax(0, 1fr); }
}
@container(max-width: 560px) {
    .store-product>.catalogue-detail-media,.store-product>.catalogue-detail-copy { grid-column: span 12; }
}

.store-shop-list .catalogue-card>a:not(:has(.catalogue-media)),
.store-shop-list .catalogue-card>div:not(:has(.catalogue-media)),
.store-categories-list .catalogue-card:not(:has(.catalogue-media)) { grid-template-columns: minmax(0, 1fr); }

.store-categories-overlay .catalogue-card-copy h2 { color: inherit; }

.store-product-actions,.store-print-controls { display:flex; flex-wrap:wrap; gap:12px; margin-block:20px; }
.store-print { width:min(90vw,900px); max-height:90svh; padding:30px; color:var(--cc-text,#172f40); background:var(--cc-surface,#fff); border:1px solid var(--cc-border); border-radius:8px; }
.store-print::backdrop { background:#071c32b3; }
.store-print dt { font-weight:700; margin-top:12px; }
.store-print dd { margin:4px 0 12px; }
@media print {
    body:has(>dialog.store-print[open])>*:not(dialog.store-print) { display:none!important; }
    dialog.store-print[open] { display:block; position:static; width:100%; max-width:none; max-height:none; margin:0; padding:0; border:0; overflow:visible; }
    dialog.store-print .store-print-controls { display:none; }
}

.catalogue-card > .product-enquiry {
    margin: 0;
    padding: 0 16px 16px;
}
.catalogue-card > .product-enquiry .button {
    max-width: 100%;
    white-space: normal;
}

.catalogue-detail.store-gallery-white .ng-stage,
.catalogue-detail.store-gallery-white .ng-image {
    background: #fff;
}
.catalogue-detail.store-gallery-surface .ng-stage,
.catalogue-detail.store-gallery-surface .ng-image {
    background: var(--cc-surface, #fff);
}
.catalogue-detail.store-gallery-transparent .ng-stage,
.catalogue-detail.store-gallery-transparent .ng-image {
    background: transparent;
}
.catalogue-detail:is(.store-gallery-white, .store-gallery-surface, .store-gallery-transparent) .ng-stage > button {
    background: inherit;
}
.catalogue-detail .product-enquiry-primary > .button {
    background: var(--template-accent, #b94e22);
    border-color: var(--template-accent, #b94e22);
    color: #fff;
}
