/* WooCommerce presentation layer. Product data, forms and gallery behavior stay intact. */
body.kn-visual-v1:not(.home):not(.page-id-4724).woocommerce :where(.woocommerce-products-header, .product-entry-wrapper, .woocommerce-tabs, .related.products),
body.kn-visual-v1:not(.home):not(.page-id-4724).woocommerce-page :where(.woocommerce-products-header, .product-entry-wrapper, .woocommerce-tabs, .related.products) {
  color: var(--kn-ink-soft);
}

body.kn-visual-v1:not(.home):not(.page-id-4724).woocommerce .woocommerce-products-header,
body.kn-visual-v1:not(.home):not(.page-id-4724).woocommerce-page .woocommerce-products-header {
  margin-bottom: 24px;
  border-bottom: 1px solid var(--kn-line);
  padding-bottom: 18px;
}

/* The shop hero already supplies a 50% dark media overlay; pair it with a
 * light title so the heading remains legible across bright and dark photos. */
body.kn-visual-v1:not(.home):not(.page-id-4724).woocommerce-shop .hero-section[data-type="type-2"] .page-title {
  color: var(--kn-white);
  text-shadow: 0 2px 18px rgba(17, 23, 34, 0.62);
}

body.kn-visual-v1:not(.home):not(.page-id-4724).woocommerce-shop .hero-section[data-type="type-2"] .ct-media-container::after {
  background-color: rgba(17, 23, 34, 0.62);
}

body.kn-visual-v1:not(.home):not(.page-id-4724).woocommerce ul.products li.product,
body.kn-visual-v1:not(.home):not(.page-id-4724).woocommerce-page ul.products li.product {
  border: 1px solid var(--kn-line);
  border-radius: 10px;
  background: var(--kn-white);
  box-shadow: 0 8px 24px rgba(17, 23, 34, 0.045);
  transition: border-color 180ms ease, box-shadow 180ms ease, transform 180ms ease;
}

body.kn-visual-v1:not(.home):not(.page-id-4724).woocommerce ul.products li.product:hover,
body.kn-visual-v1:not(.home):not(.page-id-4724).woocommerce-page ul.products li.product:hover {
  border-color: color-mix(in srgb, var(--kn-cobalt) 36%, var(--kn-line));
  box-shadow: var(--kn-shadow);
  transform: translateY(-4px);
}

body.kn-visual-v1:not(.home):not(.page-id-4724).woocommerce ul.products li.product :where(.ct-image-container, .woocommerce-loop-product__link > img),
body.kn-visual-v1:not(.home):not(.page-id-4724).woocommerce-page ul.products li.product :where(.ct-image-container, .woocommerce-loop-product__link > img) {
  border-bottom: 1px solid var(--kn-line);
}

body.kn-visual-v1:not(.home):not(.page-id-4724).woocommerce .woocommerce-loop-product__title,
body.kn-visual-v1:not(.home):not(.page-id-4724).woocommerce-page .woocommerce-loop-product__title {
  color: var(--kn-ink);
  font-family: Cambria, "Noto Serif", "Liberation Serif", "DejaVu Serif", "Times New Roman", serif;
  font-weight: 620;
}

body.kn-visual-v1:not(.home):not(.page-id-4724).single-product .woocommerce-product-gallery {
  border-radius: 10px;
  background: var(--kn-white);
  outline: 1px solid var(--kn-line);
  box-shadow: 0 12px 30px rgba(17, 23, 34, 0.065);
}

body.kn-visual-v1:not(.home):not(.page-id-4724).single-product .woocommerce-product-gallery__trigger {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-inline-size: 44px;
  min-height: 44px;
}

/*
 * Product 2738 leads with a 4:3 construction diagram rather than a square
 * product photograph. Override the generic Flexy square reservation only on
 * that product and neutralize Blocksy's inline square image ratio so the
 * diagram and the following process image remain fully visible, not cropped.
 */
body.kn-visual-v1:not(.home):not(.page-id-4724).single-product.postid-2738 .woocommerce-product-gallery .flexy-view {
  aspect-ratio: 4 / 3;
}

body.kn-visual-v1:not(.home):not(.page-id-4724).single-product.postid-2738 .woocommerce-product-gallery .flexy-view :where(.flexy-items, .flexy-item, .ct-media-container) {
  height: 100%;
}

body.kn-visual-v1:not(.home):not(.page-id-4724).single-product.postid-2738 .woocommerce-product-gallery .flexy-view .ct-media-container img {
  width: 100%;
  height: 100%;
  aspect-ratio: 4 / 3 !important;
  object-fit: contain;
  background: var(--kn-white);
}

body.kn-visual-v1:not(.home):not(.page-id-4724).single-product .summary {
  align-self: start;
  box-sizing: border-box;
  min-width: 0;
  border-radius: 10px;
  background: var(--kn-white);
  padding-block: clamp(22px, 2.2vw, 34px);
  padding-inline: clamp(24px, 2.6vw, 40px);
  box-shadow: inset 0 3px 0 var(--kn-amber), 0 12px 30px rgba(17, 23, 34, 0.045);
}

/*
 * The LED-vay owner page mixes landscape and portrait source photos. Give
 * every card a stable, no-crop media frame and let the lead image own one
 * complete row. This removes the empty grid cavities caused by intrinsic
 * image heights without changing image order, captions or their semantics.
 */
body.kn-visual-v1:not(.home):not(.page-id-4724).single-product .kn-r25 .gallery figure {
  display: flex;
  flex-direction: column;
  min-width: 0;
  height: 100%;
}

body.kn-visual-v1:not(.home):not(.page-id-4724).single-product .kn-r25 .gallery figure.hero {
  grid-column: 1 / -1;
}

body.kn-visual-v1:not(.home):not(.page-id-4724).single-product .kn-r25 .gallery figure img {
  width: 100%;
  aspect-ratio: 4 / 3;
  object-fit: contain;
  background: var(--kn-ink);
}

body.kn-visual-v1:not(.home):not(.page-id-4724).single-product .kn-r25 .gallery figure.hero img {
  aspect-ratio: 16 / 9;
}

body.kn-visual-v1:not(.home):not(.page-id-4724).single-product .kn-r25 .gallery figcaption {
  flex: 1 1 auto;
  background: var(--kn-white);
  color: var(--kn-ink-soft);
  padding: 14px 16px 16px;
  font-size: 1rem;
  font-weight: 400;
  line-height: 1.55;
}

body.kn-visual-v1:not(.home):not(.page-id-4724).single-product .product_title {
  color: var(--kn-ink);
  font-family: Cambria, "Noto Serif", "Liberation Serif", "DejaVu Serif", "Times New Roman", serif;
  font-weight: 650;
}

body.kn-visual-v1:not(.home):not(.page-id-4724).woocommerce .price,
body.kn-visual-v1:not(.home):not(.page-id-4724).woocommerce-page .price {
  color: var(--kn-cobalt);
  font-weight: 700;
}

body.kn-visual-v1:not(.home):not(.page-id-4724).single-product .woocommerce-tabs {
  margin-top: clamp(36px, 6vw, 72px);
  border: 1px solid var(--kn-line);
  border-radius: 10px;
  background: var(--kn-white);
  padding: clamp(18px, 3vw, 34px);
}

body.kn-visual-v1:not(.home):not(.page-id-4724).single-product .woocommerce-tabs .tabs a {
  color: var(--kn-ink-soft);
}

body.kn-visual-v1:not(.home):not(.page-id-4724).single-product .woocommerce-tabs .tabs .active a {
  color: var(--kn-cobalt);
}

body.kn-visual-v1:not(.home):not(.page-id-4724).woocommerce :where(.woocommerce-message, .woocommerce-info),
body.kn-visual-v1:not(.home):not(.page-id-4724).woocommerce-page :where(.woocommerce-message, .woocommerce-info) {
  border: 1px solid var(--kn-line);
  border-inline-start: 4px solid var(--kn-amber);
  border-radius: 10px;
  background: var(--kn-white);
  color: var(--kn-ink-soft);
}

body.kn-visual-v1:not(.home):not(.page-id-4724).woocommerce :where(.woocommerce-ordering select, .quantity input),
body.kn-visual-v1:not(.home):not(.page-id-4724).woocommerce-page :where(.woocommerce-ordering select, .quantity input) {
  border-color: var(--kn-line);
  border-radius: 6px;
  background: var(--kn-white);
}

@media (max-width: 689.98px) {
  body.kn-visual-v1:not(.home):not(.page-id-4724).single-product .summary {
    padding-block: 20px;
    padding-inline: 20px;
  }

  body.kn-visual-v1:not(.home):not(.page-id-4724).woocommerce-shop ul.products {
    grid-template-columns: minmax(0, 1fr);
  }

  /*
   * Blocksy's mobile sorter is icon-only at 34px. The visual layer exposes
   * the selected label, so its form and select need a real readable width.
   */
  body.kn-visual-v1:not(.home):not(.page-id-4724).woocommerce-shop .woo-listing-top {
    align-items: center;
    flex-wrap: nowrap;
  }

  body.kn-visual-v1:not(.home):not(.page-id-4724).woocommerce-shop .woocommerce-ordering {
    inline-size: clamp(10rem, 48vw, 11.75rem);
    min-width: 0;
    margin-inline-start: auto;
  }

  body.kn-visual-v1:not(.home):not(.page-id-4724).woocommerce-shop .woocommerce-ordering select {
    inline-size: 100%;
    min-width: 0;
    min-height: 44px;
    color: var(--kn-ink);
    font-size: 0.78rem;
    padding-inline: 12px 34px;
  }

  body.kn-visual-v1:not(.home):not(.page-id-4724).single-product .woocommerce-tabs {
    padding: 18px 16px;
  }
}

@media (max-width: 570px) {
  body.kn-visual-v1:not(.home):not(.page-id-4724).single-product .kn-r25 .gallery figure.hero img {
    aspect-ratio: 4 / 3;
  }
}
