/* Product constructions use the full content width instead of one 860px column (2026-10-23).
   Doubled class selectors outrank shopping.css (.constr-list{grid-template-columns:minmax(0,1fr)}),
   which loads later and had been collapsing even the PRO page's paired layout to one column.
   Two or more constructions sit side by side (the PRO page's paired layout); an odd last card and a
   single construction take the whole row, with long bullet lists split into two columns. */
.constr-list.constr-list--paired {
  max-width: none;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  align-items: stretch;
}
.constr-list--paired > .constr-block:last-child:nth-child(odd) { grid-column: 1 / -1; }
.constr-list--paired > .constr-block--wide { grid-column: 1 / -1; }
.constr-list--paired .constr-block.has-media {
  grid-template-columns: clamp(100px, 10vw, 160px) minmax(0, 1fr);
  gap: 20px;
  padding: 22px;
}
.constr-list--paired .constr-body { min-width: 0; }
.constr-list--paired .constr-media img {
  display: block;
  max-height: 240px;
  object-fit: contain;
  background: #fff;
}
.constr-list.constr-list--single { max-width: none; }
@media (min-width: 1100px) {
  .constr-list--single .desc-list,
  .constr-list--paired > .constr-block:last-child:nth-child(odd) .desc-list { columns: 2; column-gap: 40px; }
  .constr-list--single .desc-list li,
  .constr-list--paired > .constr-block:last-child:nth-child(odd) .desc-list li { break-inside: avoid; }
}
@media (max-width: 980px) {
  .constr-list.constr-list--paired { grid-template-columns: minmax(0, 1fr); }
  .constr-list--paired .constr-block.has-media {
    grid-template-columns: minmax(100px, 180px) minmax(0, 1fr);
  }
}
@media (max-width: 600px) {
  .constr-list--paired .constr-block.has-media {
    grid-template-columns: minmax(0, 1fr);
    gap: 18px;
    padding: 20px 18px;
  }
  .constr-list--paired .constr-media { width: 140px; margin: 0 auto; }
}
