/* Furniture catalogue: portrait photographs with product titles. */
body.catalogue-page { background:#eeece6; }
.catalogue-page .page { --paper:#eeece6; --ink:#24241f; width:calc(100% - 80px); max-width:1240px; margin:48px auto; padding:22px 32px 32px; background:var(--paper); }
.catalogue-page .masthead { min-height:48px; border:0; margin-bottom:24px; }
.catalogue-page .wordmark { font-size:20px; }
.catalogue-page .catalogue-navigation { gap:20px; font-size:12px; }
.catalogue-page .cart-toggle { font-size:12px; }
.catalogue-heading { display:flex; flex-wrap:wrap; justify-content:space-between; align-items:baseline; gap:12px 16px; margin:0 0 22px; }
.catalogue-heading h1 { margin:0; font:400 12px/1.4 var(--mono); letter-spacing:0; }
.catalogue-heading h1 { text-transform:uppercase; }
.catalogue-filters { display:flex; flex-wrap:wrap; justify-content:flex-end; gap:12px 24px; margin-left:auto; }
.catalogue-filter { display:flex; align-items:center; gap:12px; font:400 12px/1.4 var(--mono); }
.catalogue-filter label { color:var(--muted); }
.filter-select { position:relative; }
.filter-select::after { content:''; position:absolute; right:2px; top:17px; width:5px; height:5px; border-right:1px solid currentColor; border-bottom:1px solid currentColor; transform:rotate(45deg); pointer-events:none; }
.catalogue-filter select { appearance:none; -webkit-appearance:none; width:19ch; max-width:100%; min-height:40px; padding:8px 20px 8px 0; border:0; border-bottom:1px solid var(--fine-line); border-radius:0; background:transparent; color:inherit; font:inherit; cursor:pointer; }
.catalogue-filter select:focus-visible { outline:1px solid var(--ink); outline-offset:4px; }
.catalogue-filter option { background:var(--paper); color:var(--ink); }
.catalogue-page .product-card[hidden] { display:none; }
.catalogue-page .product-grid { display:grid; grid-template-columns:repeat(5,minmax(0,1fr)); column-gap:16px; row-gap:15px; }
.catalogue-page .product-card { min-width:0; display:block; color:inherit; text-decoration:none; border-radius:0; }
.catalogue-page .product-thumbnail { position:relative; display:flex; align-items:center; aspect-ratio:4/5; overflow:hidden; border-radius:0; background:var(--photo-top); transition:transform 220ms ease,box-shadow 220ms ease; }
/* Preserve the complete 4:5 source photograph, including its studio backdrop. */
.catalogue-page .product-thumbnail img { display:block; width:100%; height:100%; object-fit:contain; border-radius:0; }
.catalogue-page .product-thumbnail>img[src$=".svg"] { padding:0; background:transparent; }
.catalogue-page .product-caption { position:static; display:block; padding:7px 0 0; margin:0; font:400 12px/1.4 var(--mono); }
.catalogue-title { display:block; overflow-wrap:anywhere; }
.drawing-status { display:block; margin-top:3px; color:#67675e; font-size:11px; }
.catalogue-page .page-footer { margin:64px 0 0; padding:0; border:0; font-size:11px; }
.catalogue-page .product-card:focus-visible { outline:1px solid var(--ink); outline-offset:5px; }
html.product-popup-open { overflow:hidden; }
#product-popup { width:calc(100% - 96px); max-width:1240px; height:calc(100dvh - 96px); max-height:none; margin:auto; padding:0; border:0; border-radius:0; color:var(--ink); background:#eeece6; overflow:hidden; }
#product-popup[open] { display:flex; flex-direction:column; }
#product-popup::backdrop { background:rgb(0 0 0 / .72); }
.product-popup-header { display:flex; align-items:center; justify-content:space-between; gap:16px; padding:12px 24px; border-bottom:1px solid var(--fine-line); }
.product-popup-header h2 { font:400 16px/1.4 var(--mono); margin:0; min-width:0; }
.product-popup-actions { display:flex; align-items:center; gap:20px; flex-shrink:0; }
.product-popup-actions button { min-height:44px; padding:8px 0; border:0; background:transparent; font:400 12px/1.4 var(--mono); cursor:pointer; }
.product-popup-actions button:disabled { opacity:.4; cursor:default; }
.product-popup-actions button:focus-visible { outline:1px solid var(--ink); outline-offset:4px; }
#close-product-popup span { font-size:20px; margin-left:8px; vertical-align:middle; }
.product-popup-content { position:relative; flex:1; min-height:0; }
#product-popup-frame { display:block; width:100%; height:100%; border:0; background:#eeece6; }
/* Keep the frame at its final size while its images prepare behind the loader. */
#product-popup-frame[hidden] { display:block; visibility:hidden; }
.product-popup-loading { position:absolute; inset:0; align-content:center; padding:24px; text-align:center; font:400 14px/1.5 var(--mono); }
.product-popup-loading button { min-height:44px; padding:10px 20px; border:1px solid currentColor; background:transparent; color:inherit; font:inherit; cursor:pointer; }
.product-loading-mark { display:block; width:57.6px; height:auto; margin:0 auto 18px; opacity:.4; transform-origin:center; }
#product-popup[open] .product-popup-loading:not([hidden]) .product-loading-mark { animation:product-loading-pulse 1.6s ease-in-out infinite; }
.product-popup-loading.is-error .product-loading-mark { display:none; }
@keyframes product-loading-pulse {
 0%,100% { opacity:.4; transform:scale(.94); }
 50% { opacity:1; transform:scale(1); }
}
@media (hover:hover) and (pointer:fine) {
 .catalogue-page .product-card:hover { position:relative; z-index:1; }
 .catalogue-page .product-card:hover .product-thumbnail { transform:translateY(-3px) scale(1.025); box-shadow:0 8px 20px -12px rgb(0 0 0 / .3); }
}
@media(max-width:1000px) {
 .catalogue-page .page { width:calc(100% - 48px); margin:24px auto; padding:20px 24px 28px; }
 .catalogue-page .product-grid { grid-template-columns:repeat(4,minmax(0,1fr)); gap:15px 14px; }
}
@media(max-width:600px) {
 #product-popup { width:calc(100% - 24px); height:calc(100dvh - 24px); }
 .product-popup-header { padding:10px 16px; gap:12px; }
 .product-popup-header h2 { font-size:14px; }
 .product-popup-actions { gap:12px; }
 body.catalogue-page { background:#eeece6; }
 .catalogue-page .page { width:100%; margin:0; padding:14px 18px 24px; }
 .catalogue-page .masthead { margin-bottom:20px; }
 .catalogue-page .wordmark { font-size:18px; }
 .catalogue-heading { margin-bottom:18px; }
 .catalogue-heading h1 { font-size:11px; }
 .catalogue-page .product-grid { grid-template-columns:repeat(2,minmax(0,1fr)); gap:16px 12px; }
 .catalogue-page .product-caption { padding-top:7px; font-size:12px; }
 .catalogue-page .page-footer { margin-top:44px; gap:18px; font-size:10px; }
}
@media(prefers-reduced-motion:reduce) {
 #product-popup[open] .product-popup-loading .product-loading-mark { animation:none; opacity:1; transform:none; }
 .catalogue-page .product-thumbnail { transition:none; }
 .catalogue-page .product-card:hover .product-thumbnail { transform:none; }
}
@media print {
 #product-popup { display:none!important; }
 body.catalogue-page { background:white; }
 .catalogue-page .page { width:100%; max-width:none; margin:0; padding:10mm; }
 .catalogue-page .header-actions { display:none; }
 .catalogue-page .product-grid { grid-template-columns:repeat(4,minmax(0,1fr)); gap:10px; }
 .catalogue-page .product-card { break-inside:avoid; }
 .catalogue-page .product-thumbnail { print-color-adjust:exact; -webkit-print-color-adjust:exact; }
}

.catalogue-empty { padding:48px 0; font-size:14px; line-height:1.6; }
.catalogue-empty button { padding:10px 0; background:transparent; color:inherit; border:0; border-bottom:1px solid var(--ink); cursor:pointer; }
@media(max-width:600px) { .catalogue-filters { width:100%; justify-content:space-between; gap:12px; } .catalogue-filter { display:block; flex:1; min-width:0; } .catalogue-filter label { display:block; } .filter-select { display:block; } .catalogue-filter select { width:100%; } }

.catalogue-page button.product-card { width:100%; padding:0; border:0; background:transparent; font:inherit; text-align:left; cursor:pointer; }
.catalogue-page button.product-card:focus-visible { outline:2px solid var(--ink); outline-offset:4px; }
.product-popup-header { flex-shrink:0; background:#fff; }
#product-popup,#product-popup-frame { background:#fff; }
@media(max-width:760px) {
 #product-popup { width:100%; height:100dvh; max-height:100dvh; margin:0; }
 .product-popup-header { padding: max(8px,env(safe-area-inset-top)) max(12px,env(safe-area-inset-right)) 8px max(12px,env(safe-area-inset-left)); }
 .product-popup-header h2 { font:400 14px/1.35 var(--mono); }
 .product-popup-actions { gap:12px; }
 .product-popup-actions button { min-width:44px; font:400 14px/1.4 var(--mono); }
 .product-popup-content { padding-bottom:env(safe-area-inset-bottom); }
}
