/* Owner-approved 3 November 2026: furniture uses one product per row and
   fabric overviews use two columns. Other page families retain their layout. */
main[data-assortment-area="furniture"] .fabric-existing .fabric-grid {
 display: grid;
 grid-template-columns: minmax(0, 1fr);
 gap: 12px;
 width: 100%;
 max-width: 1240px;
 margin-inline: auto;
 align-items: start;
}
main[data-assortment-area="furniture"] .fabric-grid > [data-assortment-card] {
 grid-column: auto;
 min-width: 0;
 max-width: none;
}
main[data-assortment-area="furniture"] .fabric-grid > [data-assortment-card] img.fabric-legacy-image {
 display: block;
 width: 100%;
 height: auto;
 max-width: 100%;
 aspect-ratio: auto;
 object-fit: contain;
}
main[data-photo-grid], main [data-photo-grid] {
 position: relative !important;
 display: block !important;
 height: var(--photo-grid-height) !important;
 min-height: 0;
}
main[data-photo-grid] > [data-photo-grid-item], main [data-photo-grid] > [data-photo-grid-item] {
 position: absolute !important;
 inset: auto;
 inset-inline-start: var(--photo-grid-x);
 top: var(--photo-grid-y);
 width: var(--photo-grid-width) !important;
 max-width: none !important;
 margin: 0 !important;
}

/* Owner correction 27 October 2026: two filled photos per phone viewport.
   Full-width photos meet with an 8px gap; there are no empty contain frames.
   Existing captions and actions count toward each row's available height. */
@media (max-width: 700px), (max-width: 1000px) and (hover: none) and (pointer: coarse) {
 main[data-photo-grid]:not([data-photo-grid-layout]), main [data-photo-grid]:not([data-photo-grid-layout]) {
  width: calc(var(--photo-grid-viewport-width, 100vw) - 16px) !important;
  max-width: none !important;
  margin-inline-start: calc((100% - var(--photo-grid-viewport-width, 100vw) + 16px) / 2) !important;
  margin-inline-end: 0 !important;
  gap: 8px !important;
 }
 main [data-photo-grid]:not([data-photo-grid-layout]) > [data-photo-grid-item], main[data-photo-grid]:not([data-photo-grid-layout]) > [data-photo-grid-item] {
  height: auto !important;
  min-height: 0 !important;
 }
 main [data-photo-grid]:not([data-photo-grid-layout]) > [data-photo-grid-item] [data-photo-grid-image],
 main[data-photo-grid]:not([data-photo-grid-layout]) > [data-photo-grid-item] [data-photo-grid-image] {
  position: static !important;
  display: block;
  width: 100% !important;
  height: var(--photo-grid-image-height, calc((100svh - 96px) / 2)) !important;
  min-height: 0 !important;
  max-height: none !important;
  aspect-ratio: auto !important;
  margin: 0 !important;
  padding: 0 !important;
  object-fit: cover !important;
  object-position: center;
 }
 main [data-photo-grid]:not([data-photo-grid-layout]) > [data-photo-grid-item] :is(a,span,picture,div):has(> [data-photo-grid-image]),main [data-photo-grid]:not([data-photo-grid-layout]) > [data-photo-grid-item] :is(a,span,div):has(> picture > [data-photo-grid-image]) {
  height: auto !important;
  min-height: 0 !important;
  max-height: none !important;
  aspect-ratio: auto !important;
 }
 /* Chesterfield and Classic keep the full photograph at its natural height.
    Other overview families retain their existing two-row phone framing. */
 html[data-ss-classic-gallery] main :is(.catalogue-grid, .catalogue-photo-sequence)[data-photo-grid] [data-photo-grid-image] {
  height: auto !important;
  object-fit: contain !important;
 }
 /* Keep the complete green Queen photograph in its homepage card. */
 body.home-page main.home-compact .category-feed > [data-photo-grid-item][data-home-queen-image] [data-photo-grid-image] {
  height: auto !important;
  object-fit: contain !important;
 }
}

/* These fallbacks apply before the photo-layout script runs. Category-area
   markers take priority over saved URLs; no category data is migrated. */
body:not(.home-page):not([data-hn-public="true"]):not(:has(main[data-category-template-area="kitchen"],main[data-assortment-area="kitchen"],main .kitchen-page)) main :is(.catalogue-grid,.catalogue-photo-sequence),body:not(.home-page):not([data-hn-public="true"]):not(:has(main[data-category-template-area="kitchen"],main[data-assortment-area="kitchen"],main .kitchen-page)) main.sofa-gallery-grid,body:not(.home-page):not([data-hn-public="true"]):not(:has(main[data-category-template-area="kitchen"],main[data-assortment-area="kitchen"],main .kitchen-page)) :is(main[data-category-template-area="furniture"],main[data-assortment-area="furniture"]) :is(.category-feed,.fabric-grid),body:not(.home-page):not([data-hn-public="true"]):not(:has(main[data-category-template-area="kitchen"],main[data-assortment-area="kitchen"],main .kitchen-page,main[data-category-template-area="fabric"],main[data-assortment-area="fabric"],main .materials-page,main.material-library)) main[data-template-2027="kategorie"] .category-feed {
 display: grid;
 grid-template-columns: minmax(0, 1fr);
 gap: 12px;
 align-items: start;
}
body:not(.home-page):not([data-hn-public="true"]):not(:has(main[data-category-template-area="kitchen"],main[data-assortment-area="kitchen"],main .kitchen-page)) :is(main[data-category-template-area="fabric"],main[data-assortment-area="fabric"],main[data-material-library],main.materials-page,main[data-assortment-page="fabric-overview"],main:has(.materials-page,.fabric-atelier,sofastil-fabrics)) :is(.fabric-grid,.catalogue-grid,.catalogue-photo-sequence,.category-feed),main.material-library :is(.ml-discovery-grid,.ml-collection-grid) {
 display: grid;
 grid-template-columns: repeat(2, minmax(0, 1fr));
 gap: 12px;
 align-items: start;
 max-width: none;
}
main.material-library [data-library-grid] { gap: 12px; }
:is(main[data-category-template-area="furniture"],main[data-assortment-area="furniture"]) .fabric-grid > .fabric-collection,:is(main[data-category-template-area="fabric"],main[data-assortment-area="fabric"],main.materials-page,main[data-assortment-page="fabric-overview"],main:has(.materials-page,.fabric-atelier,sofastil-fabrics)) .fabric-grid > .fabric-collection:not(.fabric-legacy-detail) {
 grid-column: auto;
 min-width: 0;
 max-width: none;
 width: 100%;
}
main[data-photo-grid-layout], main [data-photo-grid-layout] { gap: 12px; }
/* Preview images share a 4:3 surface. The image itself remains complete;
   original images and the enlarged viewers are not modified. */
main [data-photo-grid-layout] > [data-photo-grid-item] [data-photo-grid-image],
main[data-photo-grid-layout] > [data-photo-grid-item] [data-photo-grid-image],
:where(body:not(.home-page):not([data-hn-public="true"]):not(:has(main[data-category-template-area="kitchen"],main[data-assortment-area="kitchen"],main .kitchen-page))) main :is(.catalogue-grid,.catalogue-photo-sequence) > :is(figure,article,a) img,
:where(body:not(.home-page):not([data-hn-public="true"]):not(:has(main[data-category-template-area="kitchen"],main[data-assortment-area="kitchen"],main .kitchen-page))) main.sofa-gallery-grid > :is(a,figure,article) img,
:is(main[data-category-template-area="furniture"],main[data-assortment-area="furniture"]) .category-feed .category-card__image img,
:is(main[data-category-template-area="furniture"],main[data-assortment-area="furniture"]) .fabric-grid img.fabric-legacy-image,
:is(main[data-category-template-area="fabric"],main[data-assortment-area="fabric"],main.materials-page,main[data-assortment-page="fabric-overview"],main:has(.materials-page,.fabric-atelier,sofastil-fabrics)) .fabric-grid > .fabric-collection:not(.fabric-collection-row):not(.fabric-legacy-detail) .fabric-photo-sequence > figure:first-child img {
 position: static !important;
 display: block;
 width: 100% !important;
 height: auto !important;
 min-height: 0 !important;
 max-width: 100%;
 max-height: none !important;
 aspect-ratio: 4 / 3 !important;
 object-fit: contain !important;
 object-position: center;
 inset: auto !important;
 margin: 0 !important;
 padding: 0 !important;
 border-radius: 18px !important;
 background: var(--ref-studio, var(--flaeche)) !important;
 transform: none !important;
}
:is(main [data-photo-grid-layout],main[data-photo-grid-layout]) > [data-photo-grid-item] :is(a,span,picture,div):has(> [data-photo-grid-image]),:is(main [data-photo-grid-layout],main[data-photo-grid-layout]) > [data-photo-grid-item] :is(a,span,div):has(> picture > [data-photo-grid-image]) {
 display: block;
 height: auto !important;
 min-height: 0 !important;
 max-height: none !important;
 aspect-ratio: auto !important;
}
/* The material article list owns its separate two-column layout script. Its
   frames match the catalogue without enrolling it in the photo-grid script. */
main.material-library :is([data-library-grid],.ml-discovery-grid,.ml-collection-grid) .ml-card-media {
 display: block;
 position: relative;
 width: 100%;
 height: auto;
 aspect-ratio: 4 / 3;
 background: var(--ref-studio, var(--flaeche));
 border-radius: 18px;
}
main.material-library :is([data-library-grid],.ml-discovery-grid,.ml-collection-grid) .ml-card-media :is(a,picture,.favorite-photo-shell) {
 display: block;
 width: 100%;
 height: 100%;
}
main.material-library :is([data-library-grid],.ml-discovery-grid,.ml-collection-grid) .ml-card-media img {
 display: block;
 width: 100% !important;
 height: 100% !important;
 aspect-ratio: auto !important;
 object-fit: contain !important;
 border-radius: 18px;
 background: var(--ref-studio, var(--flaeche));
}

/* Furniture previews remain 4:3 but fit two complete rows on the screen.
   This conservative first-paint bound reserves the fixed header and a short
   caption/action block; JavaScript then measures the real controls and text. */
:is(
 body:not(.home-page):not([data-hn-public="true"]) main:not([data-category-template-area="fabric"]):not([data-assortment-area="fabric"]):not([data-material-library]):not(.material-library):not(.materials-page):not([data-category-template-area="kitchen"]):not([data-assortment-area="kitchen"]):not(:has(.kitchen-page,.materials-page,.fabric-atelier,sofastil-fabrics)) :is(.catalogue-grid,.catalogue-photo-sequence),
 body:not(.home-page):not([data-hn-public="true"]) main.sofa-gallery-grid,
 body:not(.home-page):not([data-hn-public="true"]) :is(main[data-category-template-area="furniture"],main[data-assortment-area="furniture"]) :is(.category-feed,.fabric-grid),
 body:not(.home-page):not([data-hn-public="true"]):not(:has(main[data-category-template-area="kitchen"],main[data-assortment-area="kitchen"],main .kitchen-page,main[data-category-template-area="fabric"],main[data-assortment-area="fabric"],main .materials-page,main.material-library)) main[data-template-2027="kategorie"] .category-feed
) > :is(figure,article,a,.category-card-wrap,.fabric-collection) {
 box-sizing: border-box;
 width: min(100%,760px,calc(max(72px,calc((100svh - var(--kopf-h,80px) - 26px - var(--photo-grid-fallback-dock,0px) - 12px) / 2 - 5.5rem)) * 1.333333333));
 max-width: 760px;
 margin-inline: auto;
}
@media(max-width:63.999rem) {
 body:has(.shop-priority-header) { --photo-grid-fallback-dock: calc(86px + env(safe-area-inset-bottom,0px)); }
}

[data-seo-heading]{display:block}
.kitchen-planner-heading{padding-bottom:0}
