/*
Theme Name:   Partdo Child
 Theme URI:    http://klbtheme.com/partdo/
 Description:  Partdo Child Theme
 Author:       KlbTheme
 Author URI:   http://themeforest.net/user/KlbTheme
 Template:     partdo
 Version:      1.0
 License:      GNU General Public License v2 or later
 License URI:  http://www.gnu.org/licenses/gpl-2.0.html
 Tags:         light, dark, two-columns, right-sidebar, responsive-layout, accessibility-ready
 Text Domain:  partdo-child
*/

/* Knoxx logo
   Partdo sizes the logo for its wide 4:1 wordmark (fixed 40px height, plus a
   164px width from the customizer). The Knoxx helmet mark is nearly square, so
   fix the height only and let the width follow. The extra `body` outranks the
   width that Kirki prints inline. */
body .site-header .header-main .site-brand img {
  height: 72px;
  width: auto;
}
body .site-header .header-mobile .site-brand img,
body .site-drawer .site-brand img {
  height: 44px;
  width: auto;
}

/* Footer: the white-on-transparent PNG logo sits straight on the black. */
body .site-footer .company-logo img {
  height: 72px;
  width: auto;
}
/* The mobile menu drawer is white: give the white logo a black badge there. */
.site-drawer .site-brand img {
  padding: 6px 10px;
  background: var(--knoxx-black);
  border-radius: 8px;
  box-sizing: content-box;
}

/* ------------------------------------------------------------------
   Knoxx colours, sampled from the logo: red #D71C17, yellow #F7C101,
   and a near-black for type and the footer.
   ------------------------------------------------------------------ */
:root {
  --knoxx-red: #D71C17;
  --knoxx-red-dark: #B01510;
  --knoxx-red-light: #FDECEC;
  --knoxx-yellow: #F7C101;
  --knoxx-black: #111111;
  --color-primary: var(--knoxx-red);
  --color-primary-dark: var(--knoxx-red-dark);
  --color-primary-lighter: var(--knoxx-red-light);
  --color-danger: var(--knoxx-red);
  --color-danger-dark: var(--knoxx-red-dark);
  --color-review: var(--knoxx-yellow);
  --color-review-dark: #D9A900;
  --color-warning: var(--knoxx-yellow);
  --color-warning-dark: #D9A900;
  --color-text-primary: #1A1A1A;
}

/* Partdo hard-codes its own red (#EF233C) in places instead of using the
   variable; repaint those. */
.site-header .header-border,
.site-header .dropdown-cats > a,
.site-header .quick-button .count { background-color: var(--knoxx-red); }
.site-header .klbth-menu-wrapper.topbar .klbth-menu > li > a:hover,
.site-header .klbth-menu-wrapper.topbar .klbth-menu > li:hover > a,
.site-header .klbth-menu-wrapper.primary .klbth-menu > .menu-item > a:hover,
.site-header .klbth-menu-wrapper.primary .klbth-menu > .menu-item:hover > a,
.site-header .mega-items .mega-item:hover > a,
.site-header .header-topbar .header-notice p a:hover,
.site-header .search-form-wrapper .search-form input:focus + .btn,
.site-header .notice-button .notice-link,
.site-drawer .site-copyright a { color: var(--knoxx-red); }
.site-header .klbth-menu-wrapper.topbar .klbth-menu .sub-menu li a:hover,
.site-header .klbth-menu-wrapper.primary .menu-item-has-children .sub-menu .menu-item a:hover,
.site-header .klbth-menu-wrapper.primary .menu-item-has-children .sub-menu .menu-item:hover > a {
  color: var(--knoxx-red);
  background-color: var(--knoxx-red-light);
}
.site-header .search-form-wrapper .search-form input:focus,
.site-header .search-form-wrapper .search-form input:active {
  border-color: var(--knoxx-red);
  box-shadow: 0 0 0 1px var(--knoxx-red);
}

/* Top promo bar: black with yellow accents instead of the rainbow gradient.
   The countdown was a demo sale timer, so it goes. */
.site-header .header-notify {
  background: var(--knoxx-black);
  animation: none;
}
.site-header .header-notify .header-notify-messages li + li::before { color: var(--knoxx-yellow); }
.site-header .header-notify .column.right { display: none; }

.site-header .header-topbar .header-notice p a { color: var(--knoxx-black); font-weight: 600; }

/* Footer: solid black on every page. */
.site-footer .footer-row.custom-background-dark,
.site-footer .footer-row.custom-background-light.dark { background-color: var(--knoxx-black); }
.site-footer .footer-row.custom-background-dark a:hover { color: var(--knoxx-yellow); }

.knoxx-footer-contact .entry-title { margin-top: 1.5rem; }
.knoxx-address { margin: 0; font-size: .875rem; line-height: 1.6; }
.knoxx-address dt { color: #fff; font-weight: 600; }
.knoxx-address dd { margin: 0 0 .6rem; color: rgba(255, 255, 255, .7); }
.site-footer .knoxx-address a { color: var(--knoxx-yellow); }

.knoxx-social { display: flex; gap: .5rem; margin: 0; padding: 0; list-style: none; }
.knoxx-social a {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 2.5rem;
  height: 2.5rem;
  border-radius: 50%;
  background: rgba(255, 255, 255, .1);
  color: #fff;
  font-size: 1rem;
  transition: background .2s, color .2s;
}
.site-footer .knoxx-social a:hover { background: var(--knoxx-yellow); color: var(--knoxx-black); }

.site-footer .card-icons .credit-cards { height: 32px; width: auto; }

/* Equipment finder popup (replaces Partdo's car-parts finder). */
.knoxx-finder .service-search-form { margin-top: 1rem; }
.knoxx-finder .btn.primary { background-color: var(--knoxx-red); border-color: var(--knoxx-red); }
.knoxx-finder .btn.primary:hover { background-color: var(--knoxx-red-dark); border-color: var(--knoxx-red-dark); }

/* RFQ / RFP popups and the contact form. */
.knoxx-quote-modal .klbth-modal-inner { max-height: 90vh; overflow-y: auto; }
.knoxx-quote-intro { margin-bottom: 1rem; color: var(--color-text-description); }
.knoxx-form-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 1rem; }
.knoxx-form-grid p { margin-bottom: .75rem; }
.wpcf7 label { display: block; width: 100%; font-size: .8125rem; font-weight: 500; }
.wpcf7 label .wpcf7-form-control-wrap { display: block; margin-top: .25rem; }
.wpcf7 .required { color: var(--knoxx-red); }
.knoxx-rfq-heading { margin: .5rem 0 .75rem; font-size: 1rem; }
/* CF7 wraps each row's two labels in a <p>, so the grid goes on that. */
.knoxx-rfq-row > p { display: grid; grid-template-columns: 3fr 1fr; gap: 1rem; margin-bottom: .75rem; }
.knoxx-rfq-row.is-hidden { display: none; }
.knoxx-rfq-add { font-weight: 600; color: var(--knoxx-red); }
@media (max-width: 575px) {
  .knoxx-form-grid { grid-template-columns: 1fr; }
}

.knoxx-contact { display: grid; grid-template-columns: 1fr 1.4fr; gap: 3rem; margin: 2rem 0 4rem; }
.knoxx-contact h4 { margin: 1.25rem 0 .25rem; font-size: .9375rem; }
.knoxx-contact-details a { color: var(--knoxx-red); }
@media (max-width: 991px) {
  .knoxx-contact { grid-template-columns: 1fr; gap: 2rem; }
}

/* ------------------------------------------------------------------
   Header: same black as the footer.
   ------------------------------------------------------------------ */
.site-header,
.site-header .header-topbar,
.site-header .header-main,
.site-header .header-nav,
.site-header .header-mobile { background-color: var(--knoxx-black); }
.site-header .header-topbar,
.site-header .border-bottom-full,
.site-header .header-nav { border-color: rgba(255, 255, 255, .1); }
.site-header .header-topbar .header-notice p,
.site-header .header-topbar .header-notice p span { color: rgba(255, 255, 255, .65); }
.site-header .header-topbar .header-notice p a { color: #fff; }
.site-header .header-topbar .header-notice p a:hover { color: var(--knoxx-yellow); }

body .site-header .header-main .site-brand img { height: 66px; }

.site-header .quick-button .quick-icon,
.site-header .quick-button .quick-icon i,
.site-header .quick-button .quick-text,
.site-header .quick-button .quick-text-title,
.site-header .quick-button .quick-text-subtitle,
.site-header .quick-button .cart-price,
.site-header .quick-button .quick-text .cart-price .amount,
.site-header .header-mobile .quick-icon i { color: #fff; }
.site-header .quick-button.custom-button .quick-icon { background-color: rgba(255, 255, 255, .1); }
.site-header .quick-button .quick-text-subtitle,
.site-header .quick-button .quick-text .count-text { color: rgba(255, 255, 255, .6); }

.site-header .klbth-menu-wrapper.primary .klbth-menu > .menu-item > a { color: #fff; }
.site-header .klbth-menu-wrapper.primary .klbth-menu > .menu-item > a:hover,
.site-header .klbth-menu-wrapper.primary .klbth-menu > .menu-item:hover > a,
.site-header .klbth-menu-wrapper.primary .klbth-menu > .current-menu-item > a { color: var(--knoxx-yellow); }
.site-header .notice-button .notice-link,
.site-header .notice-button .notice-link .notice-icon i { color: var(--knoxx-yellow); }

/* ------------------------------------------------------------------
   Homepage slider: Home 2's full-width layout. The Knoxx plates are 16:9,
   so crop them to Home 2's 1920x660 banner shape and darken them a little
   more, since the copy now sits centred over the photo.
   ------------------------------------------------------------------ */
.klbth-module-slider .klbth-banner .entry-media img {
  width: 100%;
  height: clamp(380px, 34.4vw, 660px);
  object-fit: cover;
  object-position: center;
}
.klbth-module-slider .klbth-banner .entry-media::after {
  content: "";
  position: absolute;
  inset: 0;
  background: rgba(0, 0, 0, .35);
  pointer-events: none;
}
.klbth-module-slider .klbth-banner .entry-footer .price:empty,
.klbth-module-slider .klbth-banner .entry-footer .price del:only-child { display: none; }

/* ------------------------------------------------------------------
   Equipment finder: homepage section and shop sidebar.
   ------------------------------------------------------------------ */
.knoxx-finder--module .btn.primary { width: 100%; }
.knoxx-finder--sidebar .knoxx-finder-intro { font-size: .8125rem; color: var(--color-text-description); }
.knoxx-finder--sidebar .knoxx-finder-field { margin-bottom: .625rem; }
.knoxx-finder--sidebar .select2-container { width: 100% !important; }
.knoxx-finder--sidebar .btn.primary { width: 100%; }
body .site-header .quick-button .arrow,
body .site-header .quick-button .arrow i { color: rgba(255, 255, 255, .7); }
body .site-header .quick-button.custom-button .quick-button-inner .quick-icon { background-color: rgba(255, 255, 255, .12); color: #fff; }
body .site-header .quick-button.custom-button .quick-button-inner .quick-icon:hover { background-color: var(--knoxx-yellow); color: var(--knoxx-black); }
body .site-header .quick-button.custom-button .quick-button-inner .quick-icon:hover i { color: var(--knoxx-black); }
.knoxx-finder--module .btn.primary { background-color: var(--knoxx-black); border-color: var(--knoxx-black); color: #fff; }
.knoxx-finder--module .btn.primary:hover { background-color: var(--knoxx-yellow); border-color: var(--knoxx-yellow); color: var(--knoxx-black); }

/* Shop banner reuses the 16:9 wholesale slide plate; crop it to a strip. */
.klbth-banner.shop-banner .entry-media img {
  width: 100%;
  height: clamp(220px, 22vw, 300px);
  object-fit: cover;
  object-position: center right;
}

/* Partdo's teal accent and green add-to-cart are off-brand; "In Stock"
   keeps its green. */
:root {
  --color-secondary: var(--knoxx-red);
  --color-secondary-dark: var(--knoxx-red-dark);
  --color-secondary-lighter: var(--knoxx-red-light);
}
.single-product .single_add_to_cart_button.button.alt {
  background-color: var(--knoxx-red);
  border-color: var(--knoxx-red);
}
.single-product .single_add_to_cart_button.button.alt:hover {
  background-color: var(--knoxx-black);
  border-color: var(--knoxx-black);
}
.product-assistant a { color: var(--knoxx-red); font-weight: 600; }
body .site-header .header-mobile .site-brand img { height: 40px; }

/* ------------------------------------------------------------------
   Popups (header finder, RFQ, RFP): opened by knoxx.js with
   .knoxx-modal-open. Black panel, white content, and the page behind
   washed out to white so the popup holds the attention.
   ------------------------------------------------------------------ */
.klbth-modal-holder { transition: opacity .2s ease, visibility .2s ease; }
.klbth-modal-holder .klbth-modal-inner { transition: opacity .2s ease, transform .2s ease; }
.klbth-modal-holder.knoxx-modal-open { opacity: 1; visibility: visible; }
.klbth-modal-holder.knoxx-modal-open .klbth-modal-inner { opacity: 1; transform: none; }

.klbth-modal-holder .klbth-modal-overlay {
  background-color: rgba(255, 255, 255, .78);
  -webkit-backdrop-filter: blur(3px);
  backdrop-filter: blur(3px);
}
.klbth-modal-holder .klbth-modal-inner {
  background-color: var(--knoxx-black);
  color: #fff;
  border: 1px solid rgba(255, 255, 255, .08);
  box-shadow: 0 24px 60px rgba(0, 0, 0, .35);
}
.klbth-modal-holder .klbth-modal-header .entry-title,
.klbth-modal-holder h3, .klbth-modal-holder h4,
.klbth-modal-holder label,
.klbth-modal-holder .entry-description p { color: #fff; }
.klbth-modal-holder .knoxx-quote-intro,
.klbth-modal-holder .service-description p { color: rgba(255, 255, 255, .65); }
.klbth-modal-holder .site-close a {
  background-color: rgba(255, 255, 255, .1);
  color: #fff;
}
.klbth-modal-holder .site-close a:hover { background-color: var(--knoxx-yellow); color: var(--knoxx-black); }

.klbth-modal-holder input[type="text"],
.klbth-modal-holder input[type="email"],
.klbth-modal-holder input[type="tel"],
.klbth-modal-holder textarea,
.klbth-modal-holder .select2-container .select2-selection {
  background-color: #1d1d1d;
  border-color: rgba(255, 255, 255, .18);
  color: #fff;
}
.klbth-modal-holder input::placeholder,
.klbth-modal-holder textarea::placeholder { color: rgba(255, 255, 255, .45); }
.klbth-modal-holder input:focus,
.klbth-modal-holder textarea:focus { border-color: var(--knoxx-yellow); box-shadow: 0 0 0 1px var(--knoxx-yellow); }
.klbth-modal-holder .select2-container .select2-selection__rendered { color: #fff; }
.klbth-modal-holder .select2-container .select2-selection__placeholder { color: rgba(255, 255, 255, .5); }
.klbth-modal-holder .select2-container--disabled .select2-selection { background-color: #161616; opacity: .6; }
.klbth-modal-holder .knoxx-rfq-add { color: var(--knoxx-yellow); }
.klbth-modal-holder .wpcf7-response-output { color: #fff; }

/* Category sections: variable products show a price range
   ("₦12,500.00 – ₦22,500.00") that is wider than a 3-up column. */
.klbth-module-category-products .product .price {
  display: flex;
  flex-wrap: wrap;
  column-gap: .25rem;
  font-size: .9375rem;
  white-space: normal;
}

/* Newsletter band: Partdo places a <button> inside the email box; the
   Contact Form 7 fallback submits with an <input>, so give it the same
   treatment. */
.site-footer .klbth-newsletter .klbth-newsletter-form .knoxx-newsletter-fields { position: relative; }
.site-footer .klbth-newsletter .klbth-newsletter-form .knoxx-newsletter-fields .wpcf7-form-control-wrap { display: block; }
.site-footer .klbth-newsletter .klbth-newsletter-form .knoxx-newsletter-fields input[type="email"] { width: 100%; padding-right: 8.5rem; }
.site-footer .klbth-newsletter .klbth-newsletter-form .knoxx-newsletter-fields input[type="submit"] {
  position: absolute;
  top: 4px;
  right: 4px;
  height: 2.75rem;
  font-size: .875rem;
  border-radius: var(--theme-theme-radius-small);
}
.site-footer .klbth-newsletter .klbth-newsletter-form .wpcf7-spinner { position: absolute; right: 8.75rem; top: .9rem; margin: 0; }
.site-footer .klbth-newsletter .klbth-newsletter-form .wpcf7-response-output { margin: .75rem 0 0; font-size: .8125rem; }
.site-footer .klbth-newsletter .text-icon i { color: var(--knoxx-red); }

/* Less dead space between the last homepage section and the band. */
@media screen and (min-width: 992px) {
  .site-footer { margin-top: 3rem; }
}

/* ------------------------------------------------------------------
   Compact footer: Partdo's spacing (60px band padding, 80px widget
   padding, 60px copyright padding) made it ~1000px tall.
   ------------------------------------------------------------------ */
.site-footer .footer-newsletter .klbth-newsletter { padding-top: 2rem; padding-bottom: 2rem; }
.site-footer .footer-newsletter .klbth-newsletter .entry-title { font-size: 1.375rem; margin-bottom: .375rem; }
.site-footer .footer-newsletter .klbth-newsletter .entry-subtitle { margin-bottom: .25rem; }
.site-footer .footer-newsletter .klbth-newsletter .entry-description p { margin-bottom: 0; }

.site-footer .footer-widgets .footer-sidebar { padding-top: 2.75rem; padding-bottom: 2.25rem; }
.site-footer .footer-widgets .widget-title { margin-bottom: .875rem; }
.site-footer .footer-widgets .widget_nav_menu li a { font-size: .875rem; line-height: 1.45; }
.site-footer .footer-widgets .widget_nav_menu li + li { margin-top: .3rem; }

body .site-footer .company-logo img { height: 64px; }
.knoxx-footer-contact .company-logo { margin-bottom: 1rem; }
.knoxx-footer-contact .entry-title { margin: 0 0 .625rem; font-size: 1rem; }
.knoxx-address {
  display: grid;
  grid-template-columns: auto 1fr;
  gap: .3rem .5rem;
  font-size: .8125rem;
  line-height: 1.45;
}
.knoxx-address dd { margin: 0; }

.site-footer .footer-copyright .footer-inner { padding-top: 1.25rem; padding-bottom: 1.25rem; }
.site-footer .card-icons .credit-cards { height: 28px; }

@media screen and (max-width: 991px) {
  .site-footer .footer-widgets .footer-sidebar { padding-top: 2rem; padding-bottom: 1rem; }
  .site-footer .footer-widgets .widget { margin-bottom: 1.5rem; }
}

/* RFQ / RFP: breathing room above Send Message (RFQ: below "+ Add More";
   RFP: below the email fields). */
.knoxx-quote-modal .knoxx-rfq-add { display: inline-block; margin-top: .25rem; }
.knoxx-quote-modal .wpcf7-form p:has(.wpcf7-submit) { margin-top: 1.5rem; margin-bottom: 0; }
.knoxx-quote-modal .knoxx-form-grid + p { margin-top: 1.25rem; }

/* RFQ: the lines "+ Add More" reveals get a × to take them out again. */
.knoxx-rfq-row.is-removable > p { grid-template-columns: 3fr 1fr auto; }
button.knoxx-rfq-remove {
  align-self: end;
  width: 2.5rem;
  height: 2.75rem;
  padding: 0;
  border: 1px solid rgba(255, 255, 255, .25);
  border-radius: 6px;
  background: transparent;
  color: #fff;
  font-size: .875rem;
  cursor: pointer;
}
button.knoxx-rfq-remove:hover { background: var(--knoxx-red); border-color: var(--knoxx-red); }

/* "Added to cart" popup: Knoxx black with a yellow edge, not Partdo's green.
   Raised above the WhatsApp button. */
.klb-notice-ajax { bottom: 96px; }
.klb-notice-ajax .woocommerce-message {
  background: var(--knoxx-black);
  border-left: 5px solid var(--knoxx-yellow);
  box-shadow: 0 10px 30px rgba(0, 0, 0, .25);
}
.klb-notice-ajax .woocommerce-message a.button { color: var(--knoxx-yellow); }

/* Category banners carry the category's write-up, which can run long: let
   the copy set the banner's height and the plate fill behind it. */
.klbth-banner.knoxx-category-banner { min-height: clamp(220px, 22vw, 300px); }
.klbth-banner.knoxx-category-banner .entry-wrapper { position: relative; z-index: 2; min-height: inherit; }
.klbth-banner.knoxx-category-banner .entry-media { position: absolute; inset: 0; }
.klbth-banner.knoxx-category-banner .entry-media img { width: 100%; height: 100%; object-fit: cover; object-position: center right; }
.klbth-banner.knoxx-category-banner .entry-excerpt p { max-width: 38rem; }
@media (max-width: 767.98px) {
  .klbth-banner.knoxx-category-banner .entry-inner { width: 100%; }
}

/* WhatsApp chat. */
.knoxx-whatsapp { position: fixed; right: 20px; bottom: 20px; z-index: 9990; }
button.knoxx-whatsapp-toggle {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 60px;
  height: 60px;
  border: 0;
  border-radius: 50%;
  background: #25D366;
  color: #fff;
  font-size: 32px;
  box-shadow: 0 6px 20px rgba(0, 0, 0, .25);
  cursor: pointer;
  transition: transform .2s;
}
button.knoxx-whatsapp-toggle:hover { transform: scale(1.06); }
.knoxx-whatsapp-card {
  position: absolute;
  right: 0;
  bottom: 76px;
  width: min(320px, calc(100vw - 40px));
  overflow: hidden;
  border-radius: 12px;
  background: #fff;
  box-shadow: 0 12px 40px rgba(0, 0, 0, .25);
}
.knoxx-whatsapp-card[hidden] { display: none; }
.knoxx-whatsapp-head { display: flex; align-items: center; gap: .75rem; padding: 1rem; background: var(--knoxx-black); color: #fff; }
.knoxx-whatsapp-head strong { display: block; font-size: .9375rem; }
.knoxx-whatsapp-head span { font-size: .75rem; opacity: .75; }
.knoxx-whatsapp-avatar { display: flex; align-items: center; justify-content: center; flex: 0 0 40px; height: 40px; border-radius: 50%; background: #25D366; font-size: 22px; }
button.knoxx-whatsapp-close { margin-left: auto; padding: .25rem; border: 0; background: none; color: #fff; cursor: pointer; }
.knoxx-whatsapp-body { padding: 1.25rem 1rem; background: #efeae2; }
.knoxx-whatsapp-bubble { position: relative; margin: 0; padding: .75rem .875rem; border-radius: 0 8px 8px 8px; background: #fff; color: #111; font-size: .875rem; line-height: 1.5; box-shadow: 0 1px 1px rgba(0, 0, 0, .08); }
.knoxx-whatsapp-start { display: flex; align-items: center; justify-content: center; gap: .5rem; margin: 1rem; padding: .75rem; border-radius: 8px; background: #25D366; color: #fff; font-weight: 600; }
.knoxx-whatsapp-start:hover { background: #1ebe5a; color: #fff; }
.knoxx-whatsapp-start svg { font-size: 1.25rem; }
/* Above Partdo's mobile bottom menu. */
@media (max-width: 1024px) {
  .knoxx-whatsapp { right: 14px; bottom: 76px; }
  .knoxx-whatsapp-toggle { width: 52px; height: 52px; font-size: 28px; }
  .klb-notice-ajax { bottom: 142px; }
}
.knoxx-whatsapp svg { width: 1em; height: 1em; flex: none; }

/* Product page: the "Downloads:" line (PDFs) under Categories / Tags / Brand. */
.product-downloads.posted_in { display: flex; flex-wrap: wrap; align-items: center; gap: .25rem 1rem; }
.product-downloads.posted_in > span { margin-right: -.5rem; }
.product-downloads .knoxx-download { display: inline-flex; align-items: center; gap: .25rem; color: var(--knoxx-red); font-weight: 500; }
.product-downloads .knoxx-download:hover { color: var(--knoxx-red-dark); text-decoration: underline; }
.product-downloads .knoxx-download svg { width: 1.05em; height: 1.05em; flex: none; }
/* Mid-size screens (992-1279px) have no room for the contact block beside
   four columns: put it above them. */
@media screen and (min-width: 992px) and (max-width: 1279.98px) {
  .site-footer .footer-widgets .footer-sidebar > .custom-column { flex: 0 0 100%; max-width: 100%; border-right: 0; padding-right: .9375rem; margin-bottom: 2rem; }
  .site-footer .footer-widgets .footer-sidebar > .custom-column + .widgets-column { flex: 0 0 100%; padding-left: .9375rem; }
}
/* Never split a phone number over two lines. */
.knoxx-address a[href^="tel:"] { white-space: nowrap; }
/* The same thin divider as between Contact Info and Information, between
   every footer column (desktop; on phones the columns stack). The columns
   share one row, each as wide as its links, with the spare room spread
   evenly. */
@media screen and (min-width: 992px) {
  .site-footer .footer-widgets .widgets-column .row { flex-wrap: nowrap; }
  .site-footer .footer-widgets .widgets-column .row > .col:nth-child(n) { flex: 1 1 auto; max-width: none; width: auto; }
  .site-footer .footer-widgets .widgets-column .row > .col + .col {
    border-left: 1px solid rgba(255, 255, 255, .15);
    padding-left: 1.5rem;
  }
  .site-footer .footer-widgets .widgets-column .widget_nav_menu li a { white-space: nowrap; }
}
@media screen and (min-width: 1280px) {
  .site-footer .footer-widgets .footer-sidebar > .custom-column { flex-basis: 310px; max-width: 310px; padding-right: 2rem; }
  .site-footer .footer-widgets .footer-sidebar > .custom-column + .widgets-column { padding-left: 1.5rem; }
  /* Run the column dividers the full height of the Contact Info one. */
  .site-footer .footer-widgets .footer-sidebar { align-items: stretch; }
  .site-footer .footer-widgets .footer-sidebar > .custom-column + .widgets-column > .row { height: 100%; }
}
/* Never split a phone number over two lines. */
.knoxx-address a[href^="tel:"] { white-space: nowrap; }

/* ------------------------------------------------------------------
   Wide layout: the site is 1440px wide (Partdo: 1280px) from header to
   footer. The homepage's own Elementor width is set to match by
   tools/knoxx-setup.php. Product grids get one more column to use the
   room (Featured 6, category sections 4 x 2, shop 5, related 6).
   ------------------------------------------------------------------ */
:root { --theme-container: 1440px; }
@media screen and (min-width: 1280px) {
  .elementor-section.elementor-section-boxed > .elementor-container { max-width: var(--theme-container); }
}
/* Homepage category sections (Partdo "style-4": banner + products, built for
   3 x 2): narrower banner and a 4 x 2 grid with its dividers redrawn. The
   plates crop (object-fit) rather than stretch; keep their bottom, where the
   product and hazard stripe are. */
@media screen and (min-width: 992px) {
  .klbth-module-category-products.style-4 .klbth-module-wrapper .banner-column { flex: 0 0 36%; max-width: 36%; }
  .klbth-module-category-products.style-4 .klbth-module-wrapper .banner-column .entry-media img { object-position: center bottom; }
  .klbth-module-category-products.style-4 .klbth-module-wrapper .products-column .column-item:nth-child(n) { border-left: 0; border-bottom: 0; }
  .klbth-module-category-products.style-4 .klbth-module-wrapper .products-column .column-item:nth-child(-n+4) { border-bottom: 1px solid var(--color-info); }
  .klbth-module-category-products.style-4 .klbth-module-wrapper .products-column .column-item:not(:nth-child(4n+1)) { border-left: 1px solid var(--color-info); }
}
