/* Font: Outfit. Loaded via <link> in _partials/head.tpl
   (NOT via @import — that causes a serial waterfall: theme CSS
   must download + parse before the @import fires its own request.
   <link> in <head> downloads in parallel with theme CSS.) */

/* ============================================================
   v186 — Revert v185's universal *::before/*::after font-family override.
   ------------------------------------------------------------
   v185 added:
     *, *::before, *::after { font-family: 'Outfit' !important; }

   That broke icons rendered via CSS pseudo-elements: classic uses
   `.btn-comment::before { content: "\E70F"; font-family: "Material Icons" }`
   for the review-write pen icon, and `.touchspin-up::after { content: "\E5CE" }`
   for quantity stepper arrows. Our universal override won the
   specificity+!important fight and replaced Material Icons with Outfit,
   so those pseudo-elements rendered the codepoints in Outfit (which
   doesn't have those glyphs) → tofu boxes / blank space.

   Reality check from theme.css inspection: Manrope WAS NEVER ACTUALLY
   downloaded — our existing body/html font-family rules already steered
   everything to Outfit. The 60 KiB woff2 we kept chasing is Material
   Icons, which is genuinely needed for visible UI (pen, arrows, cart,
   search, menu chevrons). Keeping Material Icons loaded is correct.

   Fix: remove the universal override entirely. Keep the html-level
   font-family for inheritance, keep Material Icons working as-is.
   ============================================================ */

/* html-level font-family — overrides classic's `html { font-family: Manrope }`
   so the inheritance default is Outfit. Body and other elements already
   covered by specific rules elsewhere in this file. */
html {
  font-family: 'Outfit', -apple-system, BlinkMacSystemFont, sans-serif;
}


:root {
  --k-olive: #7C9039;
  --k-olive-dark: #5E7A2A;
  --k-olive-darker: #4A6020;
  --k-deep: #2E3320;
  --k-amber: #A6792E;
  --k-amber-light: #F3E7D6;
  --k-bg: #F2F5EC;
  --k-surface: #FFFFFF;
  --k-tint: #EDF1E2;
  --k-border: #E6EAD9;
  --k-muted: #8A9170;
  --k-text: #2E3320;
  --k-text-soft: #5A6348;
  --k-dark-img: #11140C;
  --k-radius: 14px;
  --k-radius-sm: 10px;
  --k-radius-pill: 24px;
  --k-shadow: 0 1px 3px rgba(46,51,32,0.06), 0 4px 16px rgba(46,51,32,0.04);
  --k-shadow-hover: 0 6px 24px rgba(46,51,32,0.10);
  --k-maxw: 1280px;
}

body {
  font-family: 'Outfit', -apple-system, BlinkMacSystemFont, sans-serif;
  background: var(--k-bg);
  color: var(--k-text);
  font-weight: 400;
  -webkit-font-smoothing: antialiased;
}

h1, h2, h3, h4, h5, .h1, .h2, .h3 {
  font-family: 'Outfit', sans-serif;
  font-weight: 600;
  color: var(--k-deep);
  letter-spacing: -0.4px;
}

a { color: var(--k-olive-dark); }
a:hover { color: var(--k-olive); text-decoration: none; }

.container { max-width: var(--k-maxw); }
/* NOTE: .container-fluid intentionally excluded — it must stay full-width
   per Bootstrap conventions. Constraining it broke the checkout payment column. */

#wrapper { background: var(--k-bg); }
/* ---------- Buttons ---------- */
.btn-primary,
.btn.btn-primary {
  background: var(--k-olive);
  border-color: var(--k-olive);
  color: #fff;
  font-weight: 500;
  border-radius: var(--k-radius-sm);
  padding: 11px 22px;
  transition: background .15s ease, transform .1s ease;
}
.btn-primary:hover, .btn.btn-primary:hover {
  background: var(--k-deep);
  border-color: var(--k-deep);
  color: #fff;
}
.btn-primary:active { transform: scale(0.985); }

.btn-secondary {
  background: #fff;
  border: 1px solid var(--k-border);
  color: var(--k-deep);
  border-radius: var(--k-radius-sm);
  font-weight: 500;
}
.btn-secondary:hover { background: var(--k-tint); color: var(--k-deep); }

/* ---------- Green info bar (contact + lab-tested | sign-in + cart) ---------- */
.k-greenbar.header-nav {
  background: var(--k-olive);
  color: #fff;
  border: none;
  padding: 6px 0;
  margin: 0;
  min-height: 0;
}
.k-greenbar-row { display: flex; align-items: center; min-height: 24px; }
.k-greenbar-left { display: flex; align-items: center; gap: 20px; flex: 1 1 auto; }
.k-greenbar-right { display: flex; align-items: center; justify-content: flex-end; gap: 22px; flex: 0 0 auto; white-space: nowrap; }
.k-greenbar .k-tb-item { display: inline-flex; align-items: center; gap: 6px; color: #fff; font-size: 13px; }
.k-greenbar .k-tb-link { color: #fff !important; }
.k-greenbar .k-tb-link:hover { color: #fff !important; opacity: .85; }

/* cart + sign-in inside the green bar */
.k-greenbar #_desktop_cart,
.k-greenbar #_desktop_user_info,
.k-greenbar .blockcart,
.k-greenbar .user-info {
  background: transparent !important;
  margin: 0; padding: 0;
}
.k-greenbar a, .k-greenbar .blockcart a, .k-greenbar .user-info a {
  color: #fff !important;
  font-size: 13px;
  display: inline-flex;
  align-items: center;
  gap: 6px;
}
.k-greenbar a:hover, .k-greenbar a:hover * { color: #fff !important; opacity: .9; }
.k-greenbar .blockcart, .k-greenbar .blockcart.active,
.k-greenbar .blockcart:hover { background: transparent !important; }
.k-greenbar .blockcart .cart-products-count {
  background: #fff !important;
  color: var(--k-olive-dark) !important;
  min-width: 18px; height: 18px; padding: 0 5px;
  border-radius: 9px; font-size: 11px; font-weight: 600;
  display: inline-flex; align-items: center; justify-content: center;
  margin-left: 4px;
}
.k-greenbar .material-icons { font-size: 18px; vertical-align: middle; color: #fff; }
@media (max-width: 767px) {
  .k-tb-lab { display: none; }
  .k-greenbar { font-size: 12px; }
}

/* ---------- White header (logo + nav + search) ---------- */
.header-top, #header .header-top {
  background: var(--k-surface);
  border-bottom: 1px solid var(--k-border);
  box-shadow: none;
  padding: 14px 0;
}
#header { background: var(--k-surface); }

.k-logo {
  font-family: 'Outfit', sans-serif;
  font-size: 38px;
  font-weight: 600;
  letter-spacing: -1px;
  color: var(--k-olive-dark);
  text-decoration: none;
  line-height: 1;
  display: inline-block;
}
.k-logo:hover { color: var(--k-olive-dark); }
.k-logo .k-o { color: var(--k-amber); }

#_desktop_top_menu .top-menu a,
.header-top .menu a {
  color: var(--k-deep);
  font-weight: 400;
  font-size: 14.5px;
}
#_desktop_top_menu .top-menu a:hover,
#_desktop_top_menu .top-menu a:focus,
#_desktop_top_menu .top-menu .sub-menu a:hover,
#_desktop_top_menu .top-menu li:hover > a,
.header-top .menu a:hover,
.menu-dropdown a:hover {
  color: var(--k-olive) !important;
  background: transparent !important;
  background-color: transparent !important;
}
#_desktop_top_menu .top-menu a.dropdown-submenu:hover,
#_desktop_top_menu .top-menu .collapse a:hover {
  color: var(--k-olive) !important;
  background: var(--k-tint);
}
#header .header-top a:hover, #header .header-top a:focus,
.header-top a:hover {
  color: var(--k-olive) !important;
}
#header .blockcart:hover, #header .blockcart:hover * { color: #fff !important; }

/* general link hover safety net — kill Classic's default blue site-wide */
a:hover, a:focus { color: var(--k-olive); }
.header-top a:hover { color: var(--k-olive) !important; }

/* nuclear override for ps_mainmenu blue hover — target every rendered state */
#_desktop_top_menu a:hover,
#_desktop_top_menu a:focus,
#_desktop_top_menu a:active,
#_desktop_top_menu li:hover > a,
#_desktop_top_menu .top-menu > li > a:hover,
#_desktop_top_menu .top-menu .sub-menu a:hover,
#_desktop_top_menu .top-menu .sub-menu li:hover > a,
#_desktop_top_menu .top-menu li.menu-item:hover > a,
.menu .top-menu a:hover,
.top-menu a:hover,
.top-menu a:focus,
.top-menu li:hover > a,
.top-menu .sub-menu a:hover,
.top-menu .sub-menu li:hover > a,
ul.top-menu li a:hover,
#header .top-menu a:hover {
  color: var(--k-olive) !important;
  text-decoration: none !important;
  background: transparent !important;
  background-color: transparent !important;
}

.header-nav i, .header-top i { color: var(--k-text-soft); }
.header-nav a:hover i, .header-top a:hover i,
.header .search-widget a:hover, .header i:hover { color: var(--k-olive); }

.cart-preview .header { color: var(--k-deep); }
.blockcart { position: relative; }
/* kill Classic's blue cart block background */
.blockcart,
.blockcart.active,
.header-top .blockcart,
#_desktop_cart .blockcart {
  background: transparent !important;
  border-radius: var(--k-radius-sm);
}
.blockcart a, .blockcart .header a { color: #fff !important; }
/* Desktop only — mobile cart should always stay transparent on the olive bar */
@media (min-width: 992px) {
  .blockcart:hover, .blockcart.active { background: var(--k-tint) !important; }
}
@media (max-width: 991px) {
  .k-mh-cart, .k-mh-cart:hover,
  .k-mh-cart .blockcart, .k-mh-cart .blockcart.active,
  #_mobile_cart, #_mobile_cart .blockcart, #_mobile_cart .blockcart.active {
    background: transparent !important;
    border-radius: 0 !important;
  }
}
.blockcart:hover a, .blockcart.active a { color: #fff !important; }
.blockcart .cart-products-count {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 18px;
  height: 18px;
  padding: 0 5px;
  background: var(--k-olive);
  color: #fff;
  border-radius: 9px;
  font-size: 11px;
  font-weight: 500;
  line-height: 1;
  vertical-align: top;
  margin-left: 4px;
}
.blockcart.cart-empty .cart-products-count { display: none; }

/* ---------- Product grid card ---------- */
.products, .featured-products .products { gap: 16px; }

/* Product grid: 4 per row by default (home, full-width listings) */
#products .products,
.featured-products .products,
.products.product_list {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 16px;
}
#products .products .product-miniature,
.featured-products .products .product-miniature,
.products .js-product {
  width: 100% !important;
  max-width: 100% !important;
  margin: 0 !important;
}

/* When a left filter sidebar is present, drop to 3 per row so cards don't squeeze */
#content-wrapper.left-column #js-product-list .products,
#content-wrapper.left-column .products.product_list,
#content-wrapper.col-md-8 #js-product-list .products {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}

@media (max-width: 1199px) {
  #products .products, .featured-products .products, .products.product_list {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
}
@media (max-width: 991px) {
  #products .products, .featured-products .products, .products.product_list,
  #content-wrapper.left-column #js-product-list .products {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}
@media (max-width: 575px) {
  #products .products, .featured-products .products, .products.product_list,
  #content-wrapper.left-column #js-product-list .products {
    grid-template-columns: 1fr;
  }
}

.product-miniature {
  background: var(--k-surface);
  border: 1px solid var(--k-border);
  border-radius: var(--k-radius);
  overflow: hidden;
  transition: box-shadow .18s ease, transform .18s ease;
  display: flex;
  flex-direction: column;
  height: 100%;
}
.product-miniature .thumbnail-container { display: flex; flex-direction: column; height: 100%; }
.product-miniature .product-description {
  padding: 12px 13px 14px;
  display: flex;
  flex-direction: column;
  flex: 1 1 auto;
}
/* uniform product name height (2 lines) so prices/buttons align */
.product-miniature .product-title {
  min-height: 2.7em;
  margin-bottom: 4px;
}
.product-miniature .product-title a {
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
  line-height: 1.35;
}
/* push price + button to the bottom of every card */
.product-miniature .k-card-foot { margin-top: auto; }
/* make grid cells stretch so all cards in a row match the tallest */
#products .products, .featured-products .products, .products.product_list {
  align-items: stretch;
}
#products .products > *, .featured-products .products > *, .products .js-product {
  display: flex;
}
.product-miniature:hover {
  box-shadow: var(--k-shadow-hover);
  transform: translateY(-2px);
}
.product-miniature .thumbnail-container {
  background: var(--k-dark-img);
  border-radius: var(--k-radius) var(--k-radius) 0 0;
  margin: 0;
  box-shadow: none;
}
.product-miniature .thumbnail-top {
  position: relative;
  aspect-ratio: 1 / 1;
  overflow: hidden;
  background: var(--k-dark-img);
}
.product-miniature .thumbnail-top .product-thumbnail { display: block; height: 100%; }
.product-miniature .thumbnail-top img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.product-miniature .product-description { padding: 12px 13px 14px; }
.product-miniature .product-title a {
  color: var(--k-deep);
  font-size: 13.5px;
  font-weight: 500;
  line-height: 1.35;
}
.product-miniature .product-price-and-shipping .price {
  color: var(--k-deep);
  font-size: 16px;
  font-weight: 600;
}
.product-miniature .regular-price { color: var(--k-muted); font-size: 13px; }

.k-card-foot {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: 8px;
  margin-top: 10px;
}
.k-card-foot .k-add-form { width: 100%; margin: 0; }
.k-card-foot .product-price-and-shipping { display: flex; align-items: baseline; gap: 8px; }
/* compact add button that collapses on mobile */
.k-add-btn {
  border: none;
  background: var(--k-olive);
  color: #fff;
  font-family: 'Outfit', sans-serif;
  font-size: 13px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.3px;
  padding: 11px 14px;
  border-radius: var(--k-radius-sm);
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 7px;
  width: 100%;
  text-align: center;
  transition: background .15s ease;
  white-space: nowrap;
}
.k-add-btn, .k-add-btn:link, .k-add-btn:visited,
.k-add-btn .k-add-label,
a.k-add-btn, a.k-add-btn .k-add-label,
.k-add-btn svg { color: #fff !important; fill: #fff !important; }
.k-add-btn:hover { background: var(--k-deep); color: #fff !important; }
.k-add-btn:hover .k-add-label, .k-add-btn:hover svg { color: #fff !important; fill: #fff !important; }
.k-add-btn .k-add-label { display: inline; }

/* ---------- Sticky add-to-cart bar (product page) ---------- */
.k-sticky-cart {
  position: fixed;
  left: 0; right: 0; bottom: -100px;
  background: rgba(255,255,255,0.97);
  backdrop-filter: blur(8px);
  border-top: 1px solid var(--k-border);
  box-shadow: 0 -4px 20px rgba(46,51,32,0.08);
  padding: 12px 0;
  z-index: 1040;
  transition: bottom .3s cubic-bezier(.2,.8,.2,1);
}
.k-sticky-cart.k-visible { bottom: 0; }
.k-sticky-cart .container {
  display: flex; align-items: center; justify-content: space-between; gap: 16px;
}
.k-sticky-cart .k-sc-info { display: flex; align-items: center; gap: 14px; min-width: 0; }
.k-sticky-cart .k-sc-thumb {
  width: 44px; height: 44px; border-radius: 9px;
  background: var(--k-dark-img); flex-shrink: 0;
  object-fit: cover;
}
.k-sticky-cart .k-sc-name {
  font-weight: 500; font-size: 14px; color: var(--k-deep);
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.k-sticky-cart .k-sc-price { color: var(--k-olive-dark); font-weight: 600; font-size: 16px; }
.k-sticky-cart .btn { white-space: nowrap; }
@media (max-width: 600px) {
  .k-sticky-cart .k-sc-name { max-width: 130px; }
}

/* ---------- Product page ---------- */
.product-prices .current-price .current-price-value,
.product-prices .current-price .price,
.product-price, .h1 + .product-prices .price {
  color: var(--k-deep) !important; font-weight: 600; font-size: 28px;
}
/* v154 — was previously '.product-prices .current-price span' which
   matched kratomaloyal's cashback span and forced it to 28px. Now
   targets only the actual price class. */
.product-prices, .product-prices * { color: var(--k-deep); }
.product-information a, .product-description a, .tab-content a,
.product-tabs a:not(.nav-link) { color: var(--k-olive-dark); }
.product-information a:hover, .product-description a:hover { color: var(--k-olive); }
.product-discount .regular-price { color: var(--k-muted); }
.discount.discount-percentage, .product-flag.discount {
  background: #FCEBEB; color: #A32D2D;
  border-radius: var(--k-radius-pill);
  font-weight: 500;
}

/* volume / quantity discount tiles */
.k-volume-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(110px, 1fr));
  gap: 9px;
  margin: 14px 0 18px;
}
.k-volume-tile {
  border: 1.5px solid var(--k-border);
  border-radius: var(--k-radius-sm);
  padding: 11px 10px;
  cursor: pointer;
  position: relative;
  text-align: left;
  background: #fff;
  transition: border-color .12s ease, background .12s ease;
}
.k-volume-tile:hover { border-color: var(--k-olive); }
.k-volume-tile.k-selected {
  border-color: var(--k-olive);
  background: var(--k-tint);
}
.k-volume-tile .k-vt-units { font-weight: 600; font-size: 14px; color: var(--k-deep); }
.k-volume-tile .k-vt-price { font-size: 12.5px; color: var(--k-text-soft); margin-top: 2px; }
.k-volume-tile .k-vt-save {
  position: absolute; top: -8px; right: 8px;
  background: var(--k-olive); color: #fff;
  font-size: 10px; font-weight: 500;
  padding: 2px 7px; border-radius: var(--k-radius-pill);
}

/* quantity stepper */
.k-qty {
  display: inline-flex; align-items: center;
  border: 1px solid var(--k-border);
  border-radius: var(--k-radius-sm);
  overflow: hidden;
}
.k-qty button {
  border: none; background: #fff; width: 40px; height: 48px;
  font-size: 19px; color: var(--k-deep); cursor: pointer;
}
.k-qty button:hover { background: var(--k-tint); }
.k-qty input {
  width: 42px; height: 48px; text-align: center; border: none;
  font-weight: 600; font-size: 15px; color: var(--k-deep);
  background: #fff; -moz-appearance: textfield;
}
.k-qty input::-webkit-outer-spin-button,
.k-qty input::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }

/* product tabs */
.product-tabs .nav-tabs { border-bottom: 1px solid var(--k-border); gap: 4px; }

/* tabs are relocated below the product-container by JS and get this class */
.k-tabs-fullwidth {
  width: 100%;
  margin-top: 36px;
  clear: both;
}
.tabs .nav-tabs .nav-link,
.product-tabs .nav-tabs .nav-link {
  border: none; color: var(--k-text-soft) !important; font-weight: 500;
  padding: 12px 18px; border-radius: 0;
  border-bottom: 2px solid transparent;
}
.tabs .nav-tabs .nav-link.active,
.tabs .nav-tabs .nav-link.js-product-nav-active,
.product-tabs .nav-tabs .nav-link.active,
.nav-tabs .nav-link.active {
  color: var(--k-olive-dark) !important;
  border-bottom-color: var(--k-olive) !important;
  background: transparent !important;
}
.tabs .nav-tabs .nav-link:hover { color: var(--k-olive) !important; }

/* reassurance row */
.k-trust {
  display: flex;
  flex-wrap: wrap;
  gap: 10px 22px;
  margin: 20px 0;
}
.k-trust-item {
  display: flex; align-items: center; gap: 8px;
  font-size: 13px; color: var(--k-text-soft);
}
.k-trust-item i { color: var(--k-olive); }

/* keep product page content aligned, not pushed right */
#main .product-container { margin-left: 0; }
.product-information { padding-left: 0; }

/* rounded product page images + thumbnails */
#main .product-cover,
#main .product-cover img,
#main .images-container .product-cover {
  border-radius: var(--k-radius) !important;
  overflow: hidden;
}
#main .product-cover img { display: block; width: 100%; }
#main .product-images .thumb-container .thumb,
#main .js-qv-product-images img,
#main .product-images img,
#main .thumb {
  border-radius: var(--k-radius-sm) !important;
  overflow: hidden;
}
#main .product-cover .layer { border-radius: var(--k-radius); }

/* ---------- Age gate ---------- */
.k-agegate-overlay {
  position: fixed; inset: 0; z-index: 2000;
  background: rgba(17,20,12,0.72);
  backdrop-filter: blur(4px);
  display: flex; align-items: center; justify-content: center;
  padding: 20px;
}
.k-agegate {
  background: #fff; border-radius: var(--k-radius);
  max-width: 420px; width: 100%;
  padding: 36px 32px; text-align: center;
  box-shadow: 0 20px 60px rgba(0,0,0,0.3);
}
.k-agegate .k-ag-logo {
  font-size: 26px; font-weight: 600; color: var(--k-olive-dark);
  letter-spacing: -1px; margin-bottom: 18px;
}
.k-agegate .k-ag-logo .k-o { color: var(--k-amber); }
.k-agegate h2 { font-size: 21px; margin-bottom: 10px; }
.k-agegate p { color: var(--k-text-soft); font-size: 14px; margin-bottom: 24px; line-height: 1.5; }
.k-agegate .k-ag-btns { display: flex; gap: 12px; }
.k-agegate .k-ag-btns button {
  flex: 1; padding: 13px; border-radius: var(--k-radius-sm);
  font-weight: 600; font-size: 14px; cursor: pointer; border: none;
  font-family: 'Outfit', sans-serif;
}
.k-ag-yes { background: var(--k-olive); color: #fff; }
.k-ag-yes:hover { background: var(--k-olive-dark); }
.k-ag-no { background: #F1EFE8; color: var(--k-text-soft); }
.k-ag-no:hover { background: #E4E2D8; }
body.k-agegate-open { overflow: hidden; }

/* ---------- Footer ---------- */
#footer { background: var(--k-bg); color: var(--k-text-soft); padding-top: 40px; border-top: 1px solid #DCE3CB; }
#footer .k-logo, #footer .k-foot-logo {
  color: var(--k-olive-dark); font-size: 24px; font-weight: 600; letter-spacing: -1px;
}
#footer .k-foot-logo .k-o { color: var(--k-amber); }
#footer h3, #footer .h3,
#footer .links .title,
#footer .block-title,
#footer .footer__title { color: var(--k-deep) !important; font-size: 14px; margin-bottom: 14px; font-weight: 600; }
#footer,
#footer a, #footer li a, #footer p, #footer span, #footer li, #footer .toggle, #footer .navbar-toggler,
.footer-container, .footer-container a, .footer-container li a, .footer-container p, .footer-container span {
  color: var(--k-text-soft) !important;
}
#footer a:hover, .footer-container a:hover { color: var(--k-olive) !important; }
#footer .k-logo, #footer .k-foot-logo, #footer h3, #footer .h3 { color: var(--k-deep) !important; }
#footer .links ul { list-style: none; padding: 0; }
#footer .links li { margin-bottom: 8px; }
/* Brand block above footer columns */
.k-foot-brand {
  text-align: center;
  padding: 28px 0 18px;
  border-bottom: 1px solid #DCE3CB;
  margin-bottom: 24px;
}
.k-foot-brand .k-foot-logo {
  font-family: 'Outfit', sans-serif;
  font-size: 28px; font-weight: 600; letter-spacing: -1px;
  color: var(--k-olive-dark) !important;
  text-decoration: none;
  display: inline-block;
}
.k-foot-brand .k-foot-logo .k-o { color: var(--k-amber); }
.k-foot-brand .k-foot-tagline {
  font-size: 13px; color: var(--k-text-soft); margin: 6px 0 0;
}

/* Unified footer strip — legal disclaimer + cards/copyright together */
.k-foot-strip {
  background: #E8EDDD;
  border-top: 1px solid #DCE3CB;
  padding: 28px 0 22px;
}
.k-foot-strip .k-legal-disclaimer {
  background: transparent;
  padding: 0 0 18px;
  border: none;
}
.k-foot-strip .k-legal-disclaimer p {
  max-width: 1000px; margin: 0 auto; text-align: center;
  font-size: 12px; line-height: 1.7; color: var(--k-text-soft);
}
.k-foot-strip .k-foot-bottom {
  border-top: 1px solid #DCE3CB;
  margin-top: 0;
  padding: 18px 0 0;
  font-size: 12px; color: var(--k-muted);
  text-align: center;
}
.k-foot-cards {
  display: flex; gap: 9px; justify-content: center; flex-wrap: wrap;
  margin-bottom: 14px;
}
.k-foot-cards svg { border-radius: 4px; }
.k-foot-copy { margin: 0; color: var(--k-muted); }
/* kill Classic blue everywhere in header on hover/focus/active */
#header a,
#header a:link,
.header-top a,
.header-nav a { color: var(--k-deep); }

#header .header-top a:hover, #header .header-top a:focus,
.header-top a:hover, .header-top a:focus {
  color: var(--k-olive) !important;
}
#header .header-top a:hover *, .header-top a:hover * { color: var(--k-olive) !important; }

/* cart block — force no blue background anywhere */
#header .blockcart, #header .blockcart.active,
.header-top .blockcart, .header-top .blockcart.active,
#_desktop_cart > .blockcart, #_desktop_cart .blockcart.active {
  background-color: transparent !important;
  background-image: none !important;
}
@media (min-width: 992px) {
  #header .blockcart.active, #header .blockcart:hover {
    background-color: var(--k-tint) !important;
  }
}
#header .blockcart * { color: #fff !important; }
#header .blockcart:hover *, #header .blockcart.active * { color: #fff !important; }
#header .blockcart .cart-products-count { color: var(--k-olive-dark) !important; background: #fff !important; }

/* product page thumbnail selected state — olive rounded instead of blue square */
#main .product-images .thumb.selected,
#main .product-images li.selected img,
#main .thumb-container .thumb.selected {
  border: 2px solid var(--k-olive) !important;
  border-radius: var(--k-radius-sm) !important;
}

/* ===== Green bar cart/sign-in cleanup — kill the cart box ===== */
.k-greenbar .blockcart,
.k-greenbar .blockcart.active,
.k-greenbar .blockcart:hover,
.k-greenbar #_desktop_cart,
.k-greenbar #_desktop_cart .blockcart {
  background: transparent !important;
  background-color: transparent !important;
  box-shadow: none !important;
  border: none !important;
  border-radius: 0 !important;
  padding: 0 !important;
  margin: 0 !important;
}
.k-greenbar .header-top-right,
.k-greenbar .right-nav { padding: 0 !important; }
.k-greenbar-right { gap: 24px; }
.k-greenbar-right .blockcart a,
.k-greenbar-right .user-info a {
  padding: 0 !important;
  background: transparent !important;
  font-weight: 500;
}
.k-greenbar .cart-products,
.k-greenbar .header { background: transparent !important; }
/* vertically center everything in the green bar */
.k-greenbar-row { min-height: 24px; }
.k-greenbar-left, .k-greenbar-right { align-items: center; }

/* ===== Green bar: sign-in + cart rendered individually, side by side ===== */
.k-greenbar-right {
  display: flex !important;
  flex-direction: row !important;
  align-items: center !important;
  justify-content: flex-end !important;
  gap: 24px !important;
  flex-wrap: nowrap !important;
}
.k-gb-signin, .k-gb-cart {
  display: inline-flex !important;
  align-items: center !important;
}
.k-gb-signin *, .k-gb-cart * {
  display: inline-flex !important;
  flex-direction: row !important;
  align-items: center !important;
  float: none !important;
  margin: 0 !important;
  padding: 0 !important;
  background: transparent !important;
  border: none !important;
  box-shadow: none !important;
  border-radius: 0 !important;
}
/* white text + icons, readable size */
.k-greenbar-right, .k-greenbar-right *,
.k-gb-signin a, .k-gb-cart a,
.k-greenbar-right .material-icons {
  color: #fff !important;
  font-size: 15px !important;
}
.k-greenbar-right .material-icons { font-size: 20px !important; margin-right: 6px; }
.k-gb-cart a, .k-gb-signin a { gap: 6px; }
/* count badge: white circle, olive number */
.k-greenbar-right .cart-products-count {
  background: #fff !important;
  color: var(--k-olive-dark) !important;
  font-size: 12px !important;
  min-width: 20px; height: 20px; border-radius: 10px;
  display: inline-flex !important; align-items: center; justify-content: center;
  padding: 0 6px; margin-left: 5px;
}
.k-greenbar-left, .k-greenbar-left * { font-size: 14px !important; }

/* ===== Sticky header on scroll ===== */
#header {
  position: sticky;
  top: 0;
  z-index: 1030;
  background: var(--k-surface);
  transition: box-shadow .2s ease;
}
#header.k-stuck {
  box-shadow: 0 2px 12px rgba(46,51,32,0.10);
}
/* keep the age-gate and any modals above the sticky header */
.k-agegate-overlay { z-index: 2000; }

/* ===== Force cart + account icons white in green bar ===== */
.k-greenbar .material-icons,
.k-greenbar i.material-icons,
.k-gb-signin .material-icons,
.k-gb-cart .material-icons,
.k-greenbar-right i,
.k-greenbar-right svg,
.k-greenbar-right .material-icons {
  color: #fff !important;
  fill: #fff !important;
}
.k-gb-signin a *, .k-gb-cart a * { color: #fff !important; }
/* the cart count badge stays olive-on-white though */
.k-greenbar-right .cart-products-count,
.k-greenbar-right .cart-products-count * { color: var(--k-olive-dark) !important; }

/* ===== DEFINITIVE green-bar colors (last = wins) ===== */
/* everything in the green bar is white, including on hover/focus */
.k-greenbar a, .k-greenbar a *, .k-greenbar span, .k-greenbar i,
.k-greenbar .material-icons, .k-greenbar svg,
.k-greenbar-left a, .k-greenbar-left a *,
.k-greenbar-right a, .k-greenbar-right a *,
.k-gb-signin a, .k-gb-signin a *, .k-gb-cart a, .k-gb-cart a * {
  color: #fff !important;
  fill: #fff !important;
}
.k-greenbar a:hover, .k-greenbar a:hover *, .k-greenbar a:focus, .k-greenbar a:focus *,
.k-greenbar-left a:hover, .k-greenbar-left a:hover *,
.k-greenbar-right a:hover, .k-greenbar-right a:hover *,
.k-gb-signin a:hover, .k-gb-signin a:hover *,
.k-gb-cart a:hover, .k-gb-cart a:hover * {
  color: #fff !important;
  fill: #fff !important;
  opacity: .85;
}
/* count badge is the ONE exception: olive number on white circle */
.k-greenbar .cart-products-count,
.k-greenbar .cart-products-count *,
.k-greenbar-right .cart-products-count {
  color: var(--k-olive-dark) !important;
  background: #fff !important;
}

/* ============================================================
   HOMEPAGE
   ============================================================ */
.k-home { padding: 6px 0 0; }
.k-home .container { max-width: var(--k-maxw); }

/* Section heading */
.k-section { margin: 48px 0; }
.k-section-head { text-align: center; margin-bottom: 24px; }
.k-section-head h2 { font-size: 26px; font-weight: 600; color: var(--k-deep); margin: 0 0 6px; letter-spacing: -0.5px; }
.k-section-head p { font-size: 14px; color: var(--k-text-soft); margin: 0; }

/* 1. Hero slider — rounded corners + no arrows */
.k-hero { margin-bottom: 0; border-radius: var(--k-radius); overflow: hidden; }
.k-hero .homeslider-container,
.k-hero .rslides,
.k-hero .slide,
.k-hero .slide img,
.k-hero .rslides_container {
  border-radius: var(--k-radius) !important;
  overflow: hidden;
}
.k-hero .slide img { display: block; width: 100%; height: auto; border-radius: var(--k-radius) !important; }
.k-hero .rslides_nav,
.k-hero a.rslides_nav,
.k-hero .rslides_nav.prev,
.k-hero .rslides_nav.next,
.k-hero .prev, .k-hero .next,
.k-hero a.prev, .k-hero a.next,
.homeslider-container .rslides_nav,
.homeslider-container .prev,
.homeslider-container .next,
.homeslider-container a.prev,
.homeslider-container a.next,
#homepage-slider .rslides_nav,
.rslides_nav { display: none !important; visibility: hidden !important; opacity: 0 !important; }
.k-hero .rslides_tabs { bottom: 14px; }
.k-hero .rslides_tabs a, .k-hero .rslides_tabs li a { background: rgba(255,255,255,0.5); border: none; }
.k-hero .rslides_tabs .rslides_here a, .k-hero .rslides_tabs li.rslides_here a { background: #fff; }
.k-hero .caption { background: rgba(0,0,0,0.35); color: #fff; border-radius: var(--k-radius-sm); }

/* 1b. Static hero (from kratomahome module).
 * Image fills the section, dark gradient overlay keeps text readable on
 * any background, CTA uses the same olive→black pattern as the cart drawer
 * checkout button so visual language stays consistent.
 */
.k-hero-static {
  position: relative;
  overflow: hidden;
  border-radius: var(--k-radius);
  min-height: 460px;
  display: flex;
}
.k-hero-static .k-hero-bg {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  z-index: 0;
}
.k-hero-static .k-hero-overlay {
  position: relative;
  z-index: 1;
  width: 100%;
  background: linear-gradient(90deg, rgba(0,0,0,0.55) 0%, rgba(0,0,0,0.25) 50%, rgba(0,0,0,0) 75%);
  display: flex;
  align-items: center;
}
.k-hero-static .k-hero-overlay-inner {
  padding: 48px 56px;
  max-width: 620px;
  color: #ffffff;
}
.k-hero-static .k-hero-title {
  font-size: 44px;
  line-height: 1.1;
  font-weight: 700;
  color: #ffffff;
  margin: 0 0 16px 0;
  text-shadow: 0 1px 2px rgba(0,0,0,0.25);
}
.k-hero-static .k-hero-subtitle {
  font-size: 18px;
  line-height: 1.5;
  color: #f0f0f0;
  margin: 0 0 28px 0;
  text-shadow: 0 1px 2px rgba(0,0,0,0.25);
  max-width: 520px;
}
.k-hero-static .k-hero-cta {
  display: inline-flex;
  align-items: center;
  padding: 14px 28px;
  background: #5b6b22;
  border: 1px solid #5b6b22;
  border-radius: 6px;
  font-size: 14px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.4px;
  text-decoration: none !important;
  transition: background 0.15s, border-color 0.15s;
}
/* Color forced white across every link state, matching the checkout button
 * pattern — defeats Classic theme's .btn-primary rules without an arms race. */
.k-hero-static .k-hero-cta,
.k-hero-static .k-hero-cta:link,
.k-hero-static .k-hero-cta:visited,
.k-hero-static .k-hero-cta:hover,
.k-hero-static .k-hero-cta:focus,
.k-hero-static .k-hero-cta:active,
.k-hero-static .k-hero-cta * {
  color: #ffffff !important;
  -webkit-text-fill-color: #ffffff !important;
}
.k-hero-static .k-hero-cta:hover,
.k-hero-static .k-hero-cta:focus {
  background: #1a1a1a;
  border-color: #1a1a1a;
}

/* Breathing room below the static hero before the trust strip.
 * (The trust strip has margin-top: -1px to overlap the slider hero by
 * design — looks tight with the static hero, so we cancel that here.) */
.k-hero-static { margin-bottom: 20px; }
.k-hero-static + .k-trust-strip { margin-top: 0; }

/* Mobile: stack overlay, smaller text, less padding */
@media (max-width: 768px) {
  .k-hero-static { min-height: 360px; }
  .k-hero-static .k-hero-overlay {
    background: linear-gradient(180deg, rgba(0,0,0,0.15) 0%, rgba(0,0,0,0.6) 100%);
    align-items: flex-end;
  }
  .k-hero-static .k-hero-overlay-inner { padding: 28px 22px; }
  .k-hero-static .k-hero-title { font-size: 30px; }
  .k-hero-static .k-hero-subtitle { font-size: 15px; margin-bottom: 20px; }
  .k-hero-static .k-hero-cta { padding: 12px 22px; font-size: 13px; }
}

/* 2. Trust strip */
.k-trust-strip {
  display: grid; grid-template-columns: repeat(4, 1fr); gap: 16px;
  margin: -1px 0 8px;
  padding: 22px 24px;
  background: #E8EDDD;
  border: 1px solid #DCE3CB;
  border-radius: var(--k-radius);
}
.k-trust-strip .k-trust-item {
  display: flex; align-items: center; gap: 12px;
  font-size: 13px; color: var(--k-text-soft);
}
.k-trust-strip .k-trust-item strong {
  display: block; color: var(--k-deep); font-weight: 600; font-size: 14px;
}
.k-trust-strip .k-trust-item span {
  display: block; font-size: 12px; color: var(--k-text-soft);
}
@media (max-width: 767px) {
  .k-trust-strip { grid-template-columns: repeat(2, 1fr); gap: 12px; padding: 14px; }
}

/* 3. Shop by form */
.k-form-grid {
  display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px;
}
.k-form-tile {
  position: relative; aspect-ratio: 16/10;
  border-radius: var(--k-radius); overflow: hidden;
  background: var(--k-dark-img);
  display: flex; align-items: flex-end;
  text-decoration: none;
  transition: transform .2s ease, box-shadow .2s ease;
}
.k-form-tile:hover { transform: translateY(-3px); box-shadow: var(--k-shadow-hover); }
.k-form-tile .k-form-tile-img {
  position: absolute; inset: 0;
  width: 100%; height: 100%;
  object-fit: cover;
  z-index: 1;
}
.k-form-tile .k-form-tile-shade {
  position: absolute; inset: 0;
  background: linear-gradient(180deg, transparent 40%, rgba(0,0,0,0.7) 100%);
  z-index: 2;
}
.k-form-tile .k-form-tile-label {
  position: relative; z-index: 3;
  color: #fff !important; font-size: 18px; font-weight: 600;
  padding: 16px 20px; width: 100%;
}
@media (max-width: 767px) {
  .k-form-grid { grid-template-columns: 1fr; }
}

/* 5. Shop by color */
.k-vein-grid {
  display: grid; grid-template-columns: repeat(4, 1fr); gap: 12px;
}
.k-vein-tile {
  display: flex; flex-direction: column; align-items: center;
  padding: 22px 14px; border-radius: var(--k-radius);
  text-decoration: none;
  border: 1.5px solid transparent;
  transition: transform .2s ease, border-color .2s ease;
  text-align: center;
}
.k-vein-tile:hover { transform: translateY(-3px); }
.k-vein-dot {
  width: 28px; height: 28px; border-radius: 50%;
  margin-bottom: 10px;
}
.k-vein-name { font-size: 15px; font-weight: 600; margin-bottom: 4px; }
.k-vein-desc { font-size: 12px; opacity: 0.85; }

.k-vein-red    { background: #FCEBEB; }
.k-vein-red    .k-vein-dot { background: #C0392B; }
.k-vein-red    .k-vein-name, .k-vein-red .k-vein-desc { color: #791F1F; }
.k-vein-red:hover { border-color: #C0392B; }

.k-vein-green  { background: #EAF3DE; }
.k-vein-green  .k-vein-dot { background: #5E7A2A; }
.k-vein-green  .k-vein-name, .k-vein-green .k-vein-desc { color: #27500A; }
.k-vein-green:hover { border-color: #5E7A2A; }

.k-vein-white  { background: #F4F4F0; }
.k-vein-white  .k-vein-dot { background: #fff; border: 2px solid #D3D1C7; box-sizing: content-box; width: 24px; height: 24px; }
.k-vein-white  .k-vein-name, .k-vein-white .k-vein-desc { color: #444441; }
.k-vein-white:hover { border-color: #888780; }

.k-vein-yellow { background: #FAEEDA; }
.k-vein-yellow .k-vein-dot { background: #D4A22F; }
.k-vein-yellow .k-vein-name, .k-vein-yellow .k-vein-desc { color: #633806; }
.k-vein-yellow:hover { border-color: #D4A22F; }

@media (max-width: 767px) {
  .k-vein-grid { grid-template-columns: repeat(2, 1fr); }
}

/* 6. Why Kratoma */
.k-why { background: var(--k-tint); border-radius: var(--k-radius); padding: 36px; margin-top: 48px; }
.k-why-inner {
  display: grid; grid-template-columns: 1.4fr 1fr; gap: 36px; align-items: center;
}
.k-why-text h2 { font-size: 26px; font-weight: 600; color: var(--k-deep); margin: 0 0 12px; letter-spacing: -0.5px; }
.k-why-text p { font-size: 14.5px; color: var(--k-text-soft); line-height: 1.65; margin: 0 0 16px; }
.k-why-list { list-style: none; padding: 0; margin: 0 0 22px; }
.k-why-list li {
  font-size: 14px; color: var(--k-deep);
  padding: 6px 0; display: flex; align-items: center; gap: 8px;
}
.k-why-list .k-check {
  display: inline-flex; align-items: center; justify-content: center;
  width: 22px; height: 22px; border-radius: 50%;
  background: var(--k-olive); color: #fff !important;
  font-size: 12px; font-weight: 600; flex-shrink: 0;
}
.k-why-btn { padding: 12px 24px; font-weight: 600; }

.k-why-stats {
  display: grid; grid-template-columns: 1fr; gap: 12px;
}
.k-stat {
  background: #fff; border: 1px solid var(--k-border);
  border-radius: var(--k-radius); padding: 18px 22px;
  text-align: center;
}
.k-stat-num { font-size: 32px; font-weight: 700; color: var(--k-olive-dark); line-height: 1; letter-spacing: -1px; }
.k-stat-lbl { font-size: 13px; color: var(--k-text-soft); margin-top: 6px; }

@media (max-width: 767px) {
  .k-why { padding: 22px; }
  .k-why-inner { grid-template-columns: 1fr; gap: 22px; }
}

/* ============================================================
   CHECKOUT — Personal Information cleanup
   Social title: handled in Back Office.
   Format helper text: removed at source via templates/_partials/form-fields.tpl override.
   ============================================================ */

/* ============================================================
   CHECKOUT — modern, rounded, on-brand styling
   ============================================================ */

/* --- Header (focused checkout header) --- */
.k-checkout-topbar {
  background: var(--k-olive);
  color: #fff;
  padding: 8px 0;
  min-height: 0;
  border: none;
  margin: 0;
}
.k-checkout-topbar-row {
  display: flex; align-items: center; justify-content: space-between;
  font-size: 13px;
}
.k-checkout-topbar .k-checkout-back,
.k-checkout-topbar .k-checkout-help {
  color: #fff !important;
  display: inline-flex; align-items: center; gap: 6px;
  text-decoration: none;
}
.k-checkout-topbar .k-checkout-back:hover { color: #fff !important; opacity: .85; }

.k-checkout-logo-bar {
  background: var(--k-surface);
  padding: 26px 0 22px;
  border-bottom: 1px solid var(--k-border);
}
.k-checkout-logo {
  font-family: 'Outfit', sans-serif;
  font-size: 36px; font-weight: 600; letter-spacing: -1.2px;
  color: var(--k-olive-dark) !important;
  text-decoration: none;
  display: inline-block;
}
.k-checkout-logo .k-o { color: var(--k-amber); }
.k-checkout-logo:hover { color: var(--k-olive-dark) !important; }
.k-checkout-tagline {
  font-size: 12px; color: var(--k-text-soft);
  margin: 8px 0 0;
  letter-spacing: 0.4px;
}

/* --- Body background to match site --- */
body#checkout, body.checkout { background: var(--k-bg); }

/* --- Step boxes (Personal Info / Addresses / Shipping / Payment) --- */
body#checkout section.checkout-step,
body.checkout section.checkout-step {
  background: var(--k-surface) !important;
  border: 1px solid var(--k-border) !important;
  border-radius: var(--k-radius) !important;
  margin-bottom: 16px !important;
  box-shadow: none !important;
  overflow: hidden;
}
body#checkout section.checkout-step .step-title,
body.checkout section.checkout-step .step-title {
  padding: 18px 22px !important;
  font-size: 16px !important;
  font-weight: 600 !important;
  color: var(--k-deep) !important;
  letter-spacing: 0.3px;
  text-transform: none !important;
  background: transparent !important;
  border-bottom: 1px solid var(--k-border);
}
body#checkout section.checkout-step .content,
body.checkout section.checkout-step .content {
  padding: 24px !important;
}
/* Hide the bottom border between header and content for unchecked steps */
body#checkout section.checkout-step.-unreachable .step-title,
body#checkout section.checkout-step.-current .step-title {
  border-bottom-color: var(--k-border);
}

/* Step number badges */
body#checkout .step-number,
body.checkout .step-number {
  background: var(--k-olive) !important;
  color: #fff !important;
  width: 28px; height: 28px;
  border-radius: 50%;
  font-weight: 600;
  display: inline-flex; align-items: center; justify-content: center;
  margin-right: 10px;
}
body#checkout section.checkout-step.-unreachable .step-number {
  background: #C5C9B8 !important;
}

/* Form inputs - rounded + theme styling */
body#checkout .form-control,
body.checkout .form-control,
body#checkout input[type=text],
body#checkout input[type=email],
body#checkout input[type=password],
body#checkout input[type=tel],
body#checkout select,
body#checkout textarea {
  border: 1px solid var(--k-border) !important;
  border-radius: var(--k-radius-sm) !important;
  padding: 10px 14px !important;
  font-size: 14px !important;
  background: #fff !important;
  transition: border-color .15s ease, box-shadow .15s ease;
}
body#checkout .form-control:focus,
body.checkout .form-control:focus {
  border-color: var(--k-olive) !important;
  box-shadow: 0 0 0 3px rgba(124, 144, 57, 0.15) !important;
  outline: none !important;
}

/* Form labels */
body#checkout .form-control-label,
body.checkout .form-control-label {
  color: var(--k-deep) !important;
  font-weight: 500 !important;
  font-size: 14px !important;
}

/* Continue/Save buttons */
body#checkout .btn-primary,
body.checkout .btn-primary,
body#checkout button.continue,
body.checkout button.continue {
  background: var(--k-olive) !important;
  border: none !important;
  color: #fff !important;
  padding: 12px 28px !important;
  border-radius: var(--k-radius-sm) !important;
  font-weight: 600 !important;
  font-size: 14px !important;
  letter-spacing: 0.3px;
  text-transform: uppercase;
  transition: background .15s ease;
}
body#checkout .btn-primary:hover,
body.checkout .btn-primary:hover {
  background: var(--k-deep) !important;
}

/* Cart summary sidebar (right side during checkout) */
body#checkout .cart-summary,
body.checkout .cart-summary,
body#checkout #js-checkout-summary,
body.checkout #js-checkout-summary {
  background: var(--k-surface) !important;
  border: 1px solid var(--k-border) !important;
  border-radius: var(--k-radius) !important;
  padding: 22px !important;
  box-shadow: none !important;
}
body#checkout .cart-summary .h6,
body#checkout .cart-summary .card-title {
  color: var(--k-deep) !important;
  font-weight: 600;
}
body#checkout .cart-summary-line { padding: 8px 0 !important; font-size: 14px; }
body#checkout .cart-summary-line .value { color: var(--k-deep) !important; font-weight: 500; }
body#checkout .cart-total .value,
body#checkout .cart-summary-totals .value { color: var(--k-olive-dark) !important; font-weight: 700; }

/* Carrier options (Shipping step) */
body#checkout .delivery-options .delivery-option {
  background: var(--k-tint) !important;
  border: 1px solid var(--k-border) !important;
  border-radius: var(--k-radius-sm) !important;
  padding: 14px 18px !important;
  margin-bottom: 10px !important;
  transition: border-color .15s ease, background .15s ease;
}
body#checkout .delivery-options .delivery-option:hover {
  border-color: var(--k-olive) !important;
}
body#checkout .delivery-options .delivery-option:has(input:checked) {
  background: rgba(124, 144, 57, 0.08) !important;
  border-color: var(--k-olive) !important;
}

/* Payment options */
body#checkout .payment-options .payment-option {
  background: var(--k-tint) !important;
  border: 1px solid var(--k-border) !important;
  border-radius: var(--k-radius-sm) !important;
  padding: 14px 18px !important;
  margin-bottom: 10px !important;
}
body#checkout .payment-options .payment-option:hover { border-color: var(--k-olive) !important; }

/* Place order button - extra emphasis */
body#checkout #payment-confirmation .btn-primary {
  font-size: 16px !important;
  padding: 14px 36px !important;
  border-radius: var(--k-radius-sm) !important;
  width: 100%;
}

/* Custom radio / checkbox to match theme olive */
body#checkout .custom-radio input[type="radio"]:checked + span,
body#checkout .custom-checkbox input[type="checkbox"]:checked + span {
  background: var(--k-olive) !important;
  border-color: var(--k-olive) !important;
}

/* Terms of service section */
body#checkout #conditions-to-approve {
  background: var(--k-tint);
  border-radius: var(--k-radius-sm);
  padding: 16px 18px;
  margin-top: 18px;
}
body#checkout #conditions-to-approve ul { margin: 0; padding: 0; list-style: none; }
body#checkout #conditions-to-approve li { padding: 4px 0; font-size: 14px; }

/* "Sign in" / "Create an account" toggle styling */
body#checkout .nav-inline {
  border-bottom: 1px solid var(--k-border);
  padding-bottom: 14px;
  margin-bottom: 22px;
}
body#checkout .nav-inline .nav-link {
  color: var(--k-text-soft) !important;
  font-weight: 500;
  padding: 0 16px 0 0;
}
body#checkout .nav-inline .nav-link.active {
  color: var(--k-olive-dark) !important;
  font-weight: 600;
}

/* Checkout footer styling */
.k-checkout-foot {
  margin-top: 32px;
}

/* Hide PrestaShop "Ecommerce software by PrestaShop" credit (replaced by Kratoma copyright) */
#footer .text-sm-center:not(.k-foot-bottom):not(.js-terms) {
  display: none;
}

/* ===== Address selector cards - olive instead of default blue ===== */
body#checkout .address-item,
body#checkout .address-selector .address,
body#checkout .address {
  border: 1px solid var(--k-border) !important;
  border-radius: var(--k-radius) !important;
  background: #fff !important;
  transition: border-color .15s ease, background .15s ease, box-shadow .15s ease;
}
body#checkout .address-item:hover,
body#checkout .address-selector .address:hover {
  border-color: var(--k-olive) !important;
}
/* Selected address — olive border instead of blue */
body#checkout .address-item.selected,
body#checkout .address-selector .address.selected,
body#checkout .address-item:has(input[type="radio"]:checked),
body#checkout .address-selector .address:has(input[type="radio"]:checked) {
  border-color: var(--k-olive) !important;
  background: rgba(124, 144, 57, 0.06) !important;
  box-shadow: 0 0 0 1px var(--k-olive);
}
/* The radio dot itself */
body#checkout .address-selector .custom-radio input[type="radio"]:checked + span,
body#checkout .address .custom-radio input[type="radio"]:checked + span {
  background: var(--k-olive) !important;
  border-color: var(--k-olive) !important;
}

/* ===== Kill the white inner box inside address cards ===== */
body#checkout .address-item .address,
body#checkout .address-selector .address-item .address,
body#checkout .address-item .alias,
body#checkout .address-item .address-alias,
body#checkout .address-item article,
body#checkout .address-item .address-body,
body#checkout .address-selector article {
  background: transparent !important;
  border: none !important;
  box-shadow: none !important;
  padding: 0 !important;
  margin: 0 !important;
}
/* Also when the address-item IS the .address element itself, ensure no inner whites */
body#checkout .address-item > *,
body#checkout .address-selector > .address > * {
  background: transparent !important;
}
/* Keep our outer card styling intact (re-assert) */
body#checkout .address-item {
  padding: 18px !important;
}
body#checkout .address-item.selected,
body#checkout .address-item:has(input[type="radio"]:checked) {
  background: rgba(124, 144, 57, 0.06) !important;
}

/* ============================================================
   CUSTOMER ACCOUNT — rounded, on-brand styling
   Applies to: Your account hub, Information, Addresses, Order history,
   Credit slips, Wishlist, GDPR, Login, Registration, Password recovery
   ============================================================ */

/* Page title styling */
body.customer-account .page-header,
body.my-account .page-header,
body.identity .page-header,
body.history .page-header,
body.order-detail .page-header,
body.address .page-header,
body.addresses .page-header,
body.password .page-header,
body.registration .page-header {
  margin-bottom: 24px;
  padding-bottom: 0;
  border-bottom: none;
}
body.customer-account h1.page-title,
body.my-account h1.page-title,
body.identity h1.page-title,
body.history h1.page-title,
body.order-detail h1.page-title,
body.address h1.page-title,
body.addresses h1.page-title {
  font-size: 28px !important;
  font-weight: 600 !important;
  color: var(--k-deep) !important;
  letter-spacing: -0.5px;
  text-transform: none !important;
}

/* --- "Your account" hub: the 6 link cards --- */
body.my-account .links {
  display: grid !important;
  grid-template-columns: repeat(3, 1fr);
  gap: 16px;
}
body.my-account .links .col-lg-4 {
  max-width: 100% !important;
  flex: none !important;
  padding: 0 !important;
}
body.my-account .links a {
  background: #fff !important;
  border: 1px solid var(--k-border) !important;
  border-radius: var(--k-radius) !important;
  padding: 28px 22px !important;
  box-shadow: none !important;
  transition: transform .2s ease, box-shadow .2s ease, border-color .2s ease !important;
  display: flex !important;
  flex-direction: column;
  align-items: center;
  text-align: center;
}
body.my-account .links a:hover {
  transform: translateY(-2px);
  border-color: var(--k-olive) !important;
  box-shadow: var(--k-shadow-hover) !important;
}
/* Icon styling */
body.my-account .links a i,
body.my-account .links a .material-icons {
  color: var(--k-olive) !important;
  font-size: 40px !important;
  margin-bottom: 12px;
  background: var(--k-tint);
  width: 64px; height: 64px;
  border-radius: 50%;
  display: inline-flex !important;
  align-items: center; justify-content: center;
}
/* Label styling — sentence case, theme color */
body.my-account .links a .link-item,
body.my-account .links a span {
  text-transform: none !important;
  font-size: 15px !important;
  font-weight: 600 !important;
  color: var(--k-deep) !important;
  letter-spacing: 0;
  margin-top: 4px;
  background: transparent !important;
  padding: 0 !important;
  border: none !important;
}

/* Sign out link at bottom */
body.my-account .logout {
  display: inline-block;
  margin-top: 24px;
  padding: 10px 28px;
  border: 1px solid var(--k-border);
  border-radius: var(--k-radius-sm);
  background: #fff;
  color: var(--k-deep) !important;
  font-weight: 500;
  text-decoration: none;
  transition: border-color .15s ease, background .15s ease;
}
body.my-account .logout:hover {
  border-color: var(--k-olive);
  background: var(--k-tint);
}

/* --- Account sub-pages: forms, address blocks, history tables --- */

/* Form panels (identity, password change, address forms) */
body.identity #content,
body.password #content,
body.address #content,
body.registration #content {
  background: #fff;
  border: 1px solid var(--k-border);
  border-radius: var(--k-radius);
  padding: 28px;
}

/* Form inputs to match checkout */
body.customer-account .form-control,
body.my-account .form-control,
body.identity .form-control,
body.password .form-control,
body.address .form-control,
body.addresses .form-control,
body.registration .form-control {
  border: 1px solid var(--k-border) !important;
  border-radius: var(--k-radius-sm) !important;
  padding: 10px 14px !important;
  background: #fff !important;
}
body.customer-account .form-control:focus,
body.my-account .form-control:focus,
body.identity .form-control:focus,
body.password .form-control:focus,
body.address .form-control:focus,
body.registration .form-control:focus,
body.authentication .form-control:focus {
  border-color: var(--k-olive) !important;
  box-shadow: 0 0 0 3px rgba(124, 144, 57, 0.15) !important;
  outline: none !important;
}

/* Login/registration: also style other input types (date, password show/hide buttons, etc.) */
body.registration input:focus,
body.registration select:focus,
body.registration textarea:focus,
body.authentication input:focus,
body.authentication select:focus,
body.authentication textarea:focus {
  border-color: var(--k-olive) !important;
  box-shadow: 0 0 0 3px rgba(124, 144, 57, 0.15) !important;
  outline: none !important;
}

/* Fallback: target by form action URL — works regardless of body class.
   This catches login + registration even if PrestaShop uses different body classes
   than the ones above. Specificity boosted with multiple selector levels. */
form[action*="login"] input:focus,
form[action*="login"] select:focus,
form[action*="login"] textarea:focus,
form[action*="authentication"] input:focus,
form[action*="authentication"] select:focus,
form[action*="authentication"] textarea:focus,
form[action*="registration"] input:focus,
form[action*="registration"] select:focus,
form[action*="registration"] textarea:focus,
form#login-form input:focus,
form#login-form select:focus,
form#customer-form input:focus,
form#customer-form select:focus,
form#customer-form textarea:focus,
form.js-customer-form input:focus,
form.js-customer-form select:focus,
form.js-customer-form textarea:focus,
section#content .form-control:focus,
#main .form-control:focus,
section.login-form .form-control:focus,
section.register-form .form-control:focus {
  border-color: var(--k-olive) !important;
  box-shadow: 0 0 0 3px rgba(124, 144, 57, 0.15) !important;
  outline: none !important;
  -webkit-box-shadow: 0 0 0 3px rgba(124, 144, 57, 0.15) !important;
}

/* Nuclear option: kill Bootstrap's default blue focus ring globally on form inputs.
   This is safe because we explicitly set our own focus colors above for known pages,
   and other pages get a sensible neutral fallback. */
.form-control:focus,
input.form-control:focus,
input[type="text"]:focus,
input[type="email"]:focus,
input[type="password"]:focus,
input[type="tel"]:focus,
input[type="search"]:focus,
input[type="number"]:focus,
input[type="url"]:focus,
select.form-control:focus,
textarea.form-control:focus {
  border-color: var(--k-olive) !important;
  box-shadow: 0 0 0 3px rgba(124, 144, 57, 0.15) !important;
  outline: none !important;
  -webkit-box-shadow: 0 0 0 3px rgba(124, 144, 57, 0.15) !important;
}

/* Buttons in account sections */
body.customer-account .btn-primary,
body.my-account .btn-primary,
body.identity .btn-primary,
body.password .btn-primary,
body.address .btn-primary,
body.addresses .btn-primary,
body.registration .btn-primary,
body.authentication .btn-primary {
  background: var(--k-olive) !important;
  border: none !important;
  color: #fff !important;
  padding: 11px 26px !important;
  border-radius: var(--k-radius-sm) !important;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.3px;
}
body.customer-account .btn-primary:hover,
body.my-account .btn-primary:hover,
body.identity .btn-primary:hover {
  background: var(--k-deep) !important;
}

/* --- Addresses page: saved address cards --- */
body.addresses .addresses-footer,
body.addresses .address {
  margin-bottom: 16px;
}
body.addresses article.address {
  background: #fff;
  border: 1px solid var(--k-border) !important;
  border-radius: var(--k-radius) !important;
  padding: 22px !important;
  box-shadow: none !important;
}
body.addresses article.address h4,
body.addresses article.address .h4 {
  color: var(--k-deep) !important;
  font-weight: 600;
  margin-bottom: 12px;
  padding-bottom: 12px;
  border-bottom: 1px solid var(--k-border);
}
body.addresses .address-body { padding: 0 !important; }
body.addresses .address-footer {
  background: transparent !important;
  padding: 12px 0 0 !important;
  border-top: 1px solid var(--k-border);
  margin-top: 12px;
}
body.addresses .address-footer a { color: var(--k-text-soft) !important; }
body.addresses .address-footer a:hover { color: var(--k-olive) !important; }

/* "Add new address" button */
body.addresses .addresses-footer a {
  display: inline-flex; align-items: center; gap: 8px;
  color: var(--k-olive) !important;
  font-weight: 600;
  text-decoration: none;
}
body.addresses .addresses-footer a:hover { color: var(--k-deep) !important; }

/* --- Order history table --- */
body.history #content,
body.order-detail #content {
  background: #fff;
  border: 1px solid var(--k-border);
  border-radius: var(--k-radius);
  padding: 24px;
}
body.history table.table,
body.order-detail table.table {
  border-radius: var(--k-radius-sm);
  overflow: hidden;
  border: 1px solid var(--k-border);
}
body.history .table thead th,
body.order-detail .table thead th {
  background: var(--k-tint) !important;
  border-bottom: 1px solid var(--k-border);
  color: var(--k-deep);
  font-weight: 600;
  text-transform: none;
  padding: 12px 14px;
}
body.history .table td,
body.order-detail .table td { padding: 12px 14px; }

/* Status badge (Awaiting, Delivered, etc.) */
body.history .label,
body.order-detail .label {
  padding: 4px 10px;
  border-radius: 12px;
  font-size: 12px;
  font-weight: 600;
}

/* --- Wishlist --- */
body.wishlist .wishlist-list,
body#module-blockwishlist-lists .wishlist-list {
  border: 1px solid var(--k-border);
  border-radius: var(--k-radius);
  background: #fff;
  padding: 20px;
}

/* --- Login + Registration pages --- */
body.authentication #content,
body.registration #content {
  max-width: 540px;
  margin: 0 auto;
  background: #fff;
  border: 1px solid var(--k-border);
  border-radius: var(--k-radius);
  padding: 32px;
}
body.authentication h1.page-title,
body.registration h1.page-title { text-align: center; }
body.authentication .forgot-password { text-align: center; margin-top: 12px; }
body.authentication .forgot-password a { color: var(--k-olive) !important; font-weight: 500; }
body.authentication .no-account a { color: var(--k-olive-dark) !important; font-weight: 600; }

/* Account sidebar (left nav on some sub-pages) */
body.customer-account .links-aside,
body.my-account .links-aside,
body.identity .links-aside,
body.history .links-aside,
body.order-detail .links-aside,
body.address .links-aside,
body.addresses .links-aside {
  background: #fff;
  border: 1px solid var(--k-border);
  border-radius: var(--k-radius);
  padding: 16px;
}
body.customer-account .links-aside li,
body.my-account .links-aside li,
body.identity .links-aside li {
  list-style: none;
  margin: 4px 0;
}
body.customer-account .links-aside li a,
body.my-account .links-aside li a {
  display: block;
  padding: 8px 12px;
  border-radius: var(--k-radius-sm);
  color: var(--k-deep) !important;
  text-decoration: none;
  font-size: 14px;
}
body.customer-account .links-aside li a:hover {
  background: var(--k-tint);
  color: var(--k-olive-dark) !important;
}
body.customer-account .links-aside li a.active,
body.customer-account .links-aside li.active a {
  background: var(--k-olive);
  color: #fff !important;
}

/* Responsive: stack cards on mobile */
@media (max-width: 767px) {
  body.my-account .links { grid-template-columns: 1fr; }
  body.identity #content,
  body.password #content,
  body.address #content,
  body.registration #content,
  body.authentication #content { padding: 20px; }
}

/* ============================================================
   QUICK VIEW — replace PrestaShop blues with theme olive
   ============================================================ */

.product-miniature .quick-view,
.product-miniature a.quick-view,
.product-miniature .js-quick-view {
  background: transparent !important;
  color: #000 !important;
  border: none !important;
  padding: 6px 10px !important;
  border-radius: 0 !important;
  font-size: 13px !important;
  font-weight: 500 !important;
  text-transform: none !important;
  letter-spacing: 0 !important;
  text-decoration: none !important;
}
.product-miniature .quick-view:hover,
.product-miniature a.quick-view:hover,
.product-miniature .js-quick-view:hover {
  background: transparent !important;
  color: #000 !important;
  text-decoration: underline !important;
}
.product-miniature .quick-view i,
.product-miniature .quick-view .material-icons {
  color: #000 !important;
  font-size: 14px !important;
  vertical-align: middle;
  margin-right: 2px;
}

/* --- Quick view modal --- */
.modal-content,
#blockcart-modal .modal-content,
.quickview .modal-content {
  border-radius: var(--k-radius) !important;
  border: 1px solid var(--k-border) !important;
}

/* Selected thumbnail border in quick view (and product page gallery) */
.quickview .product-images li.thumb-container .thumb.selected,
.quickview .product-images img.selected,
.quickview .images-container .thumb.selected,
#product .product-images li.thumb-container .thumb.selected,
#product .images-container .thumb.selected,
.product-images .thumb-container .thumb:hover,
.product-images .thumb.selected,
.product-images img.selected {
  border: 2px solid var(--k-olive) !important;
  outline: none !important;
  box-shadow: 0 0 0 1px var(--k-olive) !important;
}
.quickview .product-images li.thumb-container .thumb,
.quickview .images-container .thumb,
#product .product-images li.thumb-container .thumb,
.product-images .thumb-container .thumb,
.product-images .thumb {
  border: 1px solid var(--k-border) !important;
  border-radius: var(--k-radius-sm) !important;
  transition: border-color .15s ease !important;
}

/* Quick view product layout cleanup */
.quickview .product-actions .add-to-cart,
.quickview .product-add-to-cart .btn-primary {
  background: var(--k-olive) !important;
  border: none !important;
  color: #fff !important;
  border-radius: var(--k-radius-sm) !important;
  font-weight: 600;
  text-transform: uppercase;
}
.quickview .product-actions .add-to-cart:hover {
  background: var(--k-deep) !important;
}
.quickview .product-prices .current-price .price,
.quickview .current-price .price { color: var(--k-olive-dark) !important; }
.quickview .product-variants .input-color:checked + span,
.quickview .product-variants input:checked + .color {
  outline: 2px solid var(--k-olive) !important;
  outline-offset: 2px;
}

/* Modal close (X) */
.modal .close, .modal-header .close {
  color: var(--k-deep) !important;
  opacity: 0.6;
}
.modal .close:hover { opacity: 1; color: var(--k-olive) !important; }

/* "Item added to cart" modal — the one that pops up after Add to cart */
#blockcart-modal .modal-title,
#blockcart-modal .h6 { color: var(--k-deep) !important; }
#blockcart-modal .cart-content a.btn-primary {
  background: var(--k-olive) !important;
  border: none !important;
  color: #fff !important;
}
#blockcart-modal .cart-content a.btn-secondary {
  background: #fff !important;
  border: 1px solid var(--k-border) !important;
  color: var(--k-deep) !important;
}
#blockcart-modal .cart-content a.btn-secondary:hover {
  border-color: var(--k-olive) !important;
  color: var(--k-olive-dark) !important;
}

/* ============================================================
   CONTACT page — restyle the file upload "Choose file" button
   + footer "Contact us" link styling
   ============================================================ */

/* Footer Contact us link */
.k-footer-contact-link {
  display: inline-block;
  margin-top: 6px;
  color: var(--k-olive-dark) !important;
  font-weight: 500;
  text-decoration: none;
}
.k-footer-contact-link:hover {
  color: var(--k-olive) !important;
  text-decoration: underline;
}

/* Contact form file input — kill the browser blue button */
body#contact .form-control-file,
body#contact input[type="file"],
body.contact input[type="file"],
body#contact .input-file {
  background: var(--k-tint) !important;
  border: 1px dashed var(--k-border) !important;
  border-radius: var(--k-radius-sm) !important;
  padding: 14px 16px !important;
  color: var(--k-deep) !important;
  font-size: 14px;
  cursor: pointer;
  width: 100%;
}
/* The actual "Choose file" button inside the input (webkit / firefox) */
body#contact input[type="file"]::-webkit-file-upload-button,
body.contact input[type="file"]::-webkit-file-upload-button {
  background: var(--k-olive) !important;
  color: #fff !important;
  border: none !important;
  border-radius: var(--k-radius-sm) !important;
  padding: 8px 18px !important;
  font-weight: 600;
  font-size: 13px;
  text-transform: uppercase;
  letter-spacing: 0.3px;
  cursor: pointer;
  margin-right: 12px;
  transition: background .15s ease;
}
body#contact input[type="file"]::-webkit-file-upload-button:hover {
  background: var(--k-deep) !important;
}
/* Firefox */
body#contact input[type="file"]::file-selector-button,
body.contact input[type="file"]::file-selector-button {
  background: var(--k-olive) !important;
  color: #fff !important;
  border: none !important;
  border-radius: var(--k-radius-sm) !important;
  padding: 8px 18px !important;
  font-weight: 600;
  font-size: 13px;
  text-transform: uppercase;
  letter-spacing: 0.3px;
  cursor: pointer;
  margin-right: 12px;
}
body#contact input[type="file"]::file-selector-button:hover {
  background: var(--k-deep) !important;
}

/* The whole contact form panel */
body#contact #content-wrapper #content,
body.contact #content-wrapper #content {
  background: #fff;
  border: 1px solid var(--k-border);
  border-radius: var(--k-radius);
  padding: 32px;
}
body#contact .form-control,
body.contact .form-control {
  border: 1px solid var(--k-border) !important;
  border-radius: var(--k-radius-sm) !important;
  background: #fff !important;
}
body#contact .form-control:focus,
body.contact .form-control:focus {
  border-color: var(--k-olive) !important;
  box-shadow: 0 0 0 3px rgba(124, 144, 57, 0.15) !important;
  outline: none !important;
}
body#contact .btn-primary,
body.contact .btn-primary {
  background: var(--k-olive) !important;
  border: none !important;
  color: #fff !important;
  border-radius: var(--k-radius-sm) !important;
  text-transform: uppercase;
  font-weight: 600;
  padding: 11px 26px;
}
body#contact .btn-primary:hover,
body.contact .btn-primary:hover { background: var(--k-deep) !important; }

/* ===== Contact form: kill the blue CHOOSE FILE button ===== */
/* The button is a real <button> inside an input-group, not a file input pseudo */
body#contact .input-group .btn,
body#contact .input-group-btn .btn,
body#contact .input-group button,
body.contact .input-group .btn,
body.contact .input-group-btn .btn,
body.contact .input-group button,
body#contact button[class*="file"],
body#contact .file-upload-wrapper .btn {
  background: var(--k-olive) !important;
  background-color: var(--k-olive) !important;
  border: none !important;
  color: #fff !important;
  border-radius: 0 var(--k-radius-sm) var(--k-radius-sm) 0 !important;
  padding: 10px 18px !important;
  font-weight: 600 !important;
  font-size: 13px !important;
  text-transform: uppercase !important;
  letter-spacing: 0.4px !important;
  box-shadow: none !important;
}
body#contact .input-group .btn:hover,
body#contact .input-group-btn .btn:hover,
body.contact .input-group .btn:hover,
body.contact .input-group-btn .btn:hover {
  background: var(--k-deep) !important;
  background-color: var(--k-deep) !important;
  color: #fff !important;
}

/* The hidden file input visual (the input field beside the button) */
body#contact .input-group input[type="text"],
body#contact .input-group .form-control,
body.contact .input-group input[type="text"] {
  border: 1px solid var(--k-border) !important;
  border-right: none !important;
  border-radius: var(--k-radius-sm) 0 0 var(--k-radius-sm) !important;
  background: #fff !important;
}

/* ===== Kill huge empty space on short pages (cart with 1 item, etc.) =====
   PrestaShop sets aggressive min-heights on content areas which creates dead zones
   on pages with little content. Reduce them. */
#main, #content-wrapper, #content, .page-content, .page-wrapper {
  min-height: 0 !important;
}
body main { min-height: 0 !important; }

/* Add reasonable bottom spacing to the cart page specifically */
body#cart #content-wrapper,
body.cart #content-wrapper { padding-bottom: 40px; }

/* Same for other typically-short pages */
body.contact #content-wrapper,
body.password #content-wrapper,
body.authentication #content-wrapper,
body.identity #content-wrapper,
body.address #content-wrapper { padding-bottom: 40px; }

/* ===== Homepage: remove dead space between last section and footer ===== */
.k-home .k-section:last-child { margin-bottom: 24px; }
.k-home > *:last-child { margin-bottom: 24px; }
/* Make sure the page-content wrapper doesn't add extra padding on homepage */
body#index #wrapper, body.index #wrapper,
body#index #content-wrapper, body.index #content-wrapper { padding-bottom: 0 !important; }

/* ===== Add-to-cart popup: rounded corners + theme polish ===== */
#blockcart-modal .modal-content,
#blockcart-modal.modal .modal-content {
  border-radius: var(--k-radius) !important;
  border: 1px solid var(--k-border) !important;
  overflow: hidden;
  box-shadow: 0 12px 40px rgba(46,51,32,0.15);
}
#blockcart-modal .modal-header {
  background: var(--k-tint) !important;
  border-bottom: 1px solid var(--k-border) !important;
  padding: 18px 22px;
}
#blockcart-modal .modal-header .modal-title {
  color: var(--k-deep) !important;
  font-weight: 600;
  font-size: 16px;
  display: flex; align-items: center; gap: 8px;
}
#blockcart-modal .modal-header .material-icons { color: var(--k-olive) !important; }
#blockcart-modal .modal-body { padding: 22px; }
#blockcart-modal .product-image,
#blockcart-modal img { border-radius: var(--k-radius-sm); }
#blockcart-modal .cart-content { padding: 14px 0 0; }
#blockcart-modal .cart-content .btn {
  border-radius: var(--k-radius-sm) !important;
  padding: 11px 22px !important;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.3px;
  font-size: 13px;
}
#blockcart-modal .modal-footer {
  border-top: 1px solid var(--k-border);
  padding: 16px 22px;
}

/* ============================================================
   CONSISTENCY SWEEP — anything that should be rounded but wasn't covered
   ============================================================ */

/* Search bar (header) */
#search_widget input[type="text"],
#search_widget .form-control,
.search-widget input[type="text"],
.search-widget .form-control {
  border-radius: var(--k-radius-sm) !important;
  border: 1px solid var(--k-border) !important;
}
#search_widget input:focus, .search-widget input:focus {
  border-color: var(--k-olive) !important;
  box-shadow: 0 0 0 3px rgba(124, 144, 57, 0.15) !important;
  outline: none !important;
}

/* Alerts and notifications */
.alert, .alert-success, .alert-danger, .alert-warning, .alert-info {
  border-radius: var(--k-radius-sm) !important;
  border: 1px solid var(--k-border);
}
.alert-success { background: rgba(124, 144, 57, 0.08); color: var(--k-olive-dark); border-color: var(--k-olive); }
.alert-danger { background: #FCEBEB; color: #791F1F; border-color: #C0392B; }
.alert-warning { background: #FAEEDA; color: #633806; border-color: #D4A22F; }
.alert-info { background: var(--k-tint); color: var(--k-deep); border-color: var(--k-border); }

/* Pagination */
.pagination > li > a, .pagination > li > span,
.page-link {
  border-radius: var(--k-radius-sm) !important;
  border: 1px solid var(--k-border) !important;
  color: var(--k-deep) !important;
  margin: 0 3px;
}
.pagination > li.active > a,
.pagination > li > a:hover,
.page-link:hover, .page-item.active .page-link {
  background: var(--k-olive) !important;
  border-color: var(--k-olive) !important;
  color: #fff !important;
}

/* Breadcrumb */
.breadcrumb {
  background: transparent !important;
  padding: 12px 0 !important;
  border-radius: 0 !important;
  font-size: 13px;
}
.breadcrumb a { color: var(--k-text-soft) !important; }
.breadcrumb a:hover { color: var(--k-olive) !important; }
.breadcrumb .active, .breadcrumb [aria-current="page"] { color: var(--k-deep) !important; }

/* Generic .card / .panel anywhere */
.card, .panel, .card-block, .panel-body {
  border-radius: var(--k-radius) !important;
  border: 1px solid var(--k-border) !important;
}

/* Any input that wasn't caught */
.form-control, input.form-control, select.form-control, textarea.form-control {
  border-radius: var(--k-radius-sm) !important;
}

/* Buttons not yet caught */
.btn, button.btn {
  border-radius: var(--k-radius-sm) !important;
}

/* Modals beyond what's already styled */
.modal-content { border-radius: var(--k-radius) !important; }

/* Dropdown menus */
.dropdown-menu {
  border-radius: var(--k-radius-sm) !important;
  border: 1px solid var(--k-border) !important;
  box-shadow: 0 8px 24px rgba(46,51,32,0.10);
}

/* Tags / chips (e.g. on facet filter results) */
.tag, .ui-autocomplete .ui-menu-item {
  border-radius: var(--k-radius-pill) !important;
}

/* Tooltip */
.tooltip-inner {
  border-radius: var(--k-radius-sm) !important;
  background: var(--k-deep) !important;
}

/* Product list filter sidebar */
#search_filters .facet,
.block-categories,
#category-description {
  border-radius: var(--k-radius) !important;
}

/* ============================================================
   CONSISTENCY FIXES — square corners spotted in audit
   ============================================================ */

/* --- Image 1: Your Addresses page — address cards still square --- */
body.addresses .address-item,
body.addresses article.address,
body.addresses .col-lg-4 article,
body.addresses .col-md-6 article,
body.addresses #content article {
  background: #fff !important;
  border: 1px solid var(--k-border) !important;
  border-radius: var(--k-radius) !important;
  overflow: hidden;
  margin-bottom: 16px;
  box-shadow: none !important;
}
body.addresses .address-item .address-body,
body.addresses article.address .address-body {
  padding: 22px !important;
  background: transparent !important;
}
body.addresses .address-item .address-footer,
body.addresses article.address .address-footer {
  padding: 12px 22px !important;
  background: transparent !important;
  border-top: 1px solid var(--k-border) !important;
  margin-top: 0 !important;
}

/* --- Image 2/3: Cart count badge (8) in green bar --- */
.k-greenbar .cart-products-count,
.k-greenbar-right .cart-products-count,
.k-gb-cart .cart-products-count {
  background: #fff !important;
  color: var(--k-olive-dark) !important;
  border-radius: var(--k-radius-pill) !important;
  min-width: 22px;
  height: 22px;
  padding: 0 7px !important;
  font-size: 12px !important;
  font-weight: 700 !important;
  display: inline-flex !important;
  align-items: center;
  justify-content: center;
  margin-left: 5px;
}

/* --- Image 4: Your Account hub cards (6 cards) --- */
body.my-account #content,
body.my-account .links {
  background: transparent !important;
}
body.my-account .links a,
body.my-account #content .links a,
body.my-account .col-lg-4 a.bg-light,
body.my-account .col-md-4 a.bg-light,
body.my-account a[href*="my-account"],
body.my-account a[href*="identity"],
body.my-account a[href*="addresses"],
body.my-account a[href*="history"],
body.my-account a[href*="discount"],
body.my-account a[href*="order-slip"],
body.my-account a[href*="module-blockwishlist"],
body.my-account a[href*="psgdpr"] {
  background: #fff !important;
  border: 1px solid var(--k-border) !important;
  border-radius: var(--k-radius) !important;
  padding: 28px 22px !important;
  box-shadow: none !important;
  display: flex !important;
  flex-direction: column;
  align-items: center;
  text-align: center;
  transition: transform .2s ease, border-color .2s ease, box-shadow .2s ease;
  text-decoration: none !important;
}
body.my-account .links a:hover,
body.my-account #content .links a:hover {
  transform: translateY(-2px);
  border-color: var(--k-olive) !important;
  box-shadow: var(--k-shadow-hover) !important;
}
/* Card icons — olive in tinted circle */
body.my-account .links a i,
body.my-account .links a .material-icons,
body.my-account #content .links a i,
body.my-account #content .links a .material-icons {
  color: var(--k-olive) !important;
  font-size: 36px !important;
  margin-bottom: 14px !important;
  background: var(--k-tint) !important;
  width: 72px !important;
  height: 72px !important;
  border-radius: 50% !important;
  display: inline-flex !important;
  align-items: center;
  justify-content: center;
}
/* Card label — sentence case (NOT all caps) */
body.my-account .links a span,
body.my-account .links a .link-item,
body.my-account #content .links a span,
body.my-account #content .links a {
  text-transform: none !important;
  font-size: 15px !important;
  font-weight: 600 !important;
  color: var(--k-deep) !important;
  letter-spacing: 0 !important;
  background: transparent !important;
}

/* --- Image 5: Cart summary inner boxes --- */
.cart-summary,
#js-checkout-summary,
.cart-detailed-totals,
.cart-summary-products {
  background: #fff !important;
  border-radius: var(--k-radius) !important;
}
/* Kill the inner box around subtotal/shipping that creates double-box look */
.cart-summary .cart-summary-line,
.cart-summary .cart-detailed-totals .cart-summary-line,
.cart-summary .cart-summary-totals,
.cart-summary .cart-detailed-totals,
.cart-detailed-totals > div,
#js-checkout-summary .cart-summary-line,
#js-checkout-summary .card,
#js-checkout-summary .card-block {
  background: transparent !important;
  border: none !important;
  border-radius: 0 !important;
  box-shadow: none !important;
  padding: 4px 22px !important;
}
/* The summary card wrapper gets proper top/bottom padding (sides handled by rows above) */
.cart-summary, #js-checkout-summary {
  padding: 22px 0 !important;
}
.cart-summary .cart-summary-products,
.cart-summary > .h6,
.cart-summary > .card-title { padding: 0 22px !important; }
/* The Total row gets a top border separator instead of being its own box */
.cart-summary .cart-summary-totals,
#js-checkout-summary .cart-total {
  border-top: 1px solid var(--k-border) !important;
  margin-top: 14px !important;
  padding-top: 18px !important;
  padding-bottom: 4px !important;
  font-weight: 700;
}
.cart-summary .cart-summary-totals .value,
#js-checkout-summary .cart-total .value {
  font-size: 18px !important;
  color: var(--k-olive-dark) !important;
}

/* Checkout cart summary line items: shrink the line item product price
   so the TOTAL row stays visually dominant. The .product-price class is
   reused from the product page where it's 28px — too big in this context. */
body#checkout .cart-summary-products .product-price,
body#checkout .cart-summary-products .price,
body#checkout .cart-summary-products .current-price .price,
body#checkout .cart-summary-products .current-price span,
body.checkout .cart-summary-products .product-price,
body.checkout .cart-summary-products .price,
#js-checkout-summary .cart-summary-products .product-price,
#js-checkout-summary .cart-summary-products .price {
  font-size: 15px !important;
  font-weight: 600 !important;
}

/* Also tone down the line item product name (was inheriting the cart-summary olive color too brightly) */
body#checkout .cart-summary-products .product-name,
body#checkout .cart-summary-products .product-line-info,
body.checkout .cart-summary-products .product-name {
  font-size: 13px !important;
  color: var(--k-deep) !important;
}

/* Cart summary: proceed-to-checkout button and any inner buttons get side margin */
.cart-summary .btn-primary,
.cart-summary a.btn-primary,
.cart-summary .checkout > a,
.cart-summary .checkout {
  margin: 16px 22px 4px !important;
  width: calc(100% - 44px) !important;
  display: block;
}

/* ============================================================
   MOBILE FIXES — responsive issues from audit
   ============================================================ */
@media (max-width: 767px) {

  /* 1. Logo letter spacing — letters shouldn't have gaps */
  #header .k-logo,
  .k-logo,
  .k-checkout-logo {
    letter-spacing: -1px !important;
    white-space: nowrap;
    font-size: 18px !important;
  }
  #header .k-logo .k-o,
  .k-logo .k-o,
  .k-checkout-logo .k-o {
    margin: 0 !important;
    padding: 0 !important;
    display: inline !important;
  }

  /* 2. Cart badge — keep it small on mobile, not full-width pill */
  .k-greenbar .cart-products-count,
  .k-greenbar-right .cart-products-count,
  .k-gb-cart .cart-products-count,
  .k-greenbar #_mobile_cart .cart-products-count,
  #_mobile_cart .cart-products-count {
    min-width: 20px !important;
    height: 20px !important;
    padding: 0 6px !important;
    font-size: 11px !important;
    border-radius: 10px !important;
    line-height: 1 !important;
  }

  /* 3. Slider arrows — kill them harder on mobile (CSS belt + JS suspenders) */
  .k-hero .rslides_nav,
  .homeslider-container .rslides_nav,
  .homeslider-container .prev,
  .homeslider-container .next,
  .homeslider-container a.prev,
  .homeslider-container a.next,
  .k-hero .prev, .k-hero .next,
  .k-hero a.prev, .k-hero a.next {
    display: none !important;
    visibility: hidden !important;
    opacity: 0 !important;
    width: 0 !important;
    height: 0 !important;
    pointer-events: none !important;
  }

  /* 4a. Product title — sentence case on mobile, smaller */
  #product .h1, #product h1.h1, .product-title, #product .product-information h1 {
    text-transform: none !important;
    font-size: 22px !important;
    line-height: 1.3 !important;
    margin-bottom: 12px !important;
  }

  /* 4b. SAVE badge — smaller on mobile */
  #product .discount, #product .product-discount,
  #product .product-discount .discount-percentage,
  .discount-percentage, .product-flag.discount-percentage {
    font-size: 13px !important;
    padding: 4px 10px !important;
    border-radius: var(--k-radius-pill) !important;
  }

  /* 4c. (mobile-specific old No tax hide — now global below in v153) */

  /* 5. Quantity stepper — arrows beside input on mobile, not below */
  #product .product-quantity,
  #product .product-add-to-cart .qty {
    display: inline-flex !important;
    align-items: center !important;
    gap: 8px;
  }
  #product .qty .input-group,
  #product .product-quantity .input-group {
    display: inline-flex !important;
    flex-direction: row !important;
    align-items: stretch !important;
    width: auto !important;
  }
  #product .qty input.input-group-field,
  #product .product-quantity input,
  #product input#quantity_wanted {
    width: 50px !important;
    height: 44px !important;
    text-align: center !important;
    border: 1px solid var(--k-border) !important;
    border-radius: var(--k-radius-sm) 0 0 var(--k-radius-sm) !important;
    padding: 0 !important;
  }
  #product .input-group-btn-vertical,
  #product .qty .input-group-btn,
  #product .qty .bootstrap-touchspin-down,
  #product .qty .bootstrap-touchspin-up {
    display: inline-flex !important;
    flex-direction: column !important;
    width: 30px !important;
    height: 44px !important;
  }
  #product .input-group-btn-vertical button,
  #product .qty button.btn-touchspin,
  #product .qty .bootstrap-touchspin-up,
  #product .qty .bootstrap-touchspin-down {
    flex: 1 !important;
    width: 30px !important;
    height: 22px !important;
    padding: 0 !important;
    background: var(--k-tint) !important;
    border: 1px solid var(--k-border) !important;
    border-left: none !important;
    border-radius: 0 !important;
    margin: 0 !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
  }
  #product .input-group-btn-vertical button:first-child,
  #product .qty .bootstrap-touchspin-up {
    border-top-right-radius: var(--k-radius-sm) !important;
    border-bottom: none !important;
  }
  #product .input-group-btn-vertical button:last-child,
  #product .qty .bootstrap-touchspin-down {
    border-bottom-right-radius: var(--k-radius-sm) !important;
  }

  /* Wishlist heart button — fix oversize on mobile */
  #product .wishlist-button-product,
  #product .wishlist-button-add,
  .wishlist-button-product {
    width: 44px !important;
    height: 44px !important;
    padding: 0 !important;
    border-radius: 50% !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
  }

  /* Bonus: trust strip on mobile — 2-col grid with cleaner text wrap */
  .k-trust-strip { grid-template-columns: repeat(2, 1fr) !important; gap: 12px !important; padding: 16px !important; }
  .k-trust-strip .k-trust-item { font-size: 12px !important; }
  .k-trust-strip .k-trust-item strong { font-size: 13px !important; }
  .k-trust-strip .k-trust-item span { display: none !important; }

  /* Sticky add-to-cart bar — give the product title more room */
}

/* Also kill duplicate reassurance block — happens because blockreassurance is hooked twice */
#product #product-additional-info ~ #product-additional-info,
#product .reassurance-tabs + .reassurance-tabs { display: none !important; }

/* ============================================================
   IMAGE LOGO sizing — when SEO team uploads a logo via Back Office
   ============================================================ */

/* Main header logo (desktop) — proportional cap, container-constrained.
   Width fits the column (no overflow into nav), height adjusts to keep
   aspect ratio, capped at 70px. To get more visible size we widen the
   logo column below from col-md-2 (~16.67%) to ~25%. */
#_desktop_logo img,
#_desktop_logo .logo {
  height: auto !important;
  max-height: 70px !important;
  width: auto !important;
  max-width: 100% !important;
  display: block;
}

/* Give the logo column more horizontal room — the default col-md-2 is too
   narrow for typical wide-aspect logos. Force ~25% / ~75% split. */
.header-top .row > #_desktop_logo,
.header-top #_desktop_logo {
  flex: 0 0 25% !important;
  max-width: 25% !important;
}
.header-top .row > .header-top-right,
.header-top .header-top-right {
  flex: 0 0 75% !important;
  max-width: 75% !important;
}
#_desktop_logo h1 { line-height: 1; margin: 0; }

/* Mobile logo in green bar */
#_mobile_logo img,
#_mobile_logo .logo {
  max-height: 32px;
  width: auto;
  margin: 0 auto;
  display: block;
}

/* Checkout logo — larger, prominent */
.k-checkout-logo-bar .k-checkout-logo-link img,
.k-checkout-logo-bar img.logo {
  max-height: 60px;
  width: auto;
  display: inline-block;
}

/* Footer brand logo — medium */
.k-foot-brand .k-foot-logo-link img,
.k-foot-brand img.logo {
  max-height: 44px;
  width: auto;
  display: inline-block;
}

/* Responsive — slightly smaller on mobile */
@media (max-width: 767px) {
  #_desktop_logo img { max-height: 36px; }
  .k-checkout-logo-bar img { max-height: 48px; }
  .k-foot-brand img { max-height: 36px; }
}

/* ============================================================
   MOBILE FIXES — cart badge oversize + sticky cart bar overflow
   ============================================================ */
@media (max-width: 767px) {

  /* Cart count badge — force small on mobile (v51 made it big with min-width 22) */
  .k-greenbar .cart-products-count,
  .k-greenbar-right .cart-products-count,
  .k-gb-cart .cart-products-count,
  #_mobile_cart .cart-products-count,
  .header-nav .cart-products-count,
  .blockcart .cart-products-count {
    min-width: 18px !important;
    width: auto !important;
    height: 18px !important;
    padding: 0 5px !important;
    font-size: 10px !important;
    line-height: 18px !important;
    border-radius: 9px !important;
    margin-left: 3px !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
  }

  /* Mobile cart icon area — don't let it expand to fill */
  #_mobile_cart, .k-greenbar #_mobile_cart {
    flex: 0 0 auto !important;
    width: auto !important;
    padding: 0 !important;
  }

  /* Sticky bottom add-to-cart bar — contain it properly within viewport */
  .k-sticky-cart, #k-sticky-cart {
    left: 0 !important;
    right: 0 !important;
    width: 100% !important;
    max-width: 100vw !important;
    box-sizing: border-box !important;
    padding: 10px 12px !important;
    display: flex !important;
    align-items: center !important;
    gap: 10px !important;
    overflow: hidden;
  }
  .k-sticky-cart > * > * { box-sizing: border-box; }
  .k-sticky-cart .k-sticky-cart img {
    flex: 0 0 44px !important;
    width: 44px !important;
    height: 44px !important;
  }
  .k-sticky-cart .k-sticky-add,
  .k-sticky-cart .btn-primary,
  .k-sticky-cart a.btn,
  .k-sticky-cart button {
    flex: 0 0 auto !important;
    margin-right: 0 !important;
    padding: 10px 16px !important;
    font-size: 13px !important;
    white-space: nowrap !important;
    max-width: 50% !important;
  }
}

/* ============================================================
   ROOT FIX — horizontal overflow on mobile (wishlist heart)
   The wishlist button was positioned outside its container causing the
   whole document width to exceed viewport, making everything else off-screen.
   ============================================================ */

/* Universal overflow guard — no element can push the page wider than viewport.
   Uses `clip` (not `hidden`) so position:sticky on #header still works. */
html, body { overflow-x: clip !important; max-width: 100vw !important; }
body { position: relative; }

/* Product page wishlist heart — contain it within the form area on mobile */
@media (max-width: 767px) {
  #product .wishlist-button-product,
  #product .wishlist-button-add,
  .wishlist-button-product,
  .product-add-to-cart .wishlist-button-product,
  .product-actions .wishlist-button-product {
    position: static !important;
    width: 44px !important;
    height: 44px !important;
    margin: 0 0 0 8px !important;
    padding: 0 !important;
    border-radius: 50% !important;
    flex: 0 0 44px !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    background: #fff !important;
    border: 1px solid var(--k-border) !important;
    box-shadow: none !important;
  }

  /* Product add-to-cart row layout — wrap everything cleanly */
  #product .product-add-to-cart,
  #product .product-actions {
    display: flex !important;
    flex-wrap: wrap !important;
    align-items: center !important;
    gap: 8px !important;
    max-width: 100% !important;
  }
  #product .product-add-to-cart > *,
  #product .product-actions > * { max-width: 100% !important; }

  /* The cart icon area in green bar — align with sign-in vertically */
  .k-greenbar-right {
    align-items: center !important;
    gap: 14px !important;
  }
  .k-gb-cart, .k-gb-signin,
  .k-gb-cart a, .k-gb-signin a {
    display: inline-flex !important;
    align-items: center !important;
    height: 24px;
  }
  .k-greenbar .material-icons,
  .k-greenbar svg { vertical-align: middle !important; }
}

/* ============================================================
   MOBILE — sticky header same as desktop
   ============================================================ */
@media (max-width: 991px) {
  #header {
    position: sticky !important;
    top: 0 !important;
    z-index: 1030 !important;
    background: var(--k-surface);
    transition: box-shadow .2s ease;
  }
  #header.k-stuck {
    box-shadow: 0 2px 12px rgba(46,51,32,0.10);
  }
  /* Make sure ancestors don't break the sticky behavior */
  body, #wrapper, #page, main { overflow-x: clip !important; }
}

/* ============================================================
   WISHLIST — fully hide. Module can also be uninstalled in BO.
   ============================================================ */
.wishlist-button-product,
.wishlist-button-add,
.wishlist-list-item,
.wishlist-add-to-new,
.wishlist-modal,
.product-actions .wishlist-button-product,
.product-add-to-cart .wishlist-button-product,
body.my-account .links a[href*="module-blockwishlist"],
body.my-account .links a[href*="blockwishlist"],
#blockwishlist,
.wishlist-toast {
  display: none !important;
}

/* ============================================================
   Sticky add-to-cart bar — proper right margin so ADD TO CART
   doesn't kiss the edge
   ============================================================ */
@media (max-width: 991px) {
  .k-sticky-cart, #k-sticky-cart {
    padding: 10px 14px !important;
    padding-right: 14px !important;
  }
  .k-sticky-cart .btn-primary,
  .k-sticky-cart a.btn,
  .k-sticky-cart button,
  .k-sticky-cart .k-sticky-add {
    margin-right: 0 !important;
  }
}

/* (v57 mobile header overrides removed — replaced with .k-mobile-header dedicated block) */

/* ============================================================
   MOBILE HEADER — dedicated, compact, 3 elements only
   ============================================================ */
.k-mobile-header {
  display: none;
  background: var(--k-olive);
  color: #fff;
  padding: 0;
  border: none;
  align-items: center;
  justify-content: space-between;
  height: 56px;
  position: relative;
  z-index: 100;
}
@media (max-width: 991px) {
  .k-mobile-header { display: flex; }
  /* Hide the desktop bars on mobile */
  .k-greenbar.hidden-sm-down,
  .header-top.hidden-sm-down { display: none !important; }
}

.k-mobile-header .k-mh-menu {
  background: transparent;
  border: none;
  color: #fff !important;
  padding: 0 16px;
  height: 56px;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  z-index: 2;
}
.k-mobile-header .k-mh-menu:hover { opacity: 0.85; }
.k-mobile-header .k-mh-menu svg { color: #fff !important; stroke: #fff !important; }
/* Logo absolutely centered in the bar — independent of side element widths */
.k-mobile-header .k-mh-logo {
  position: absolute !important;
  left: 50% !important;
  top: 50% !important;
  transform: translate(-50%, -50%) !important;
  text-decoration: none;
  display: inline-flex !important;
  align-items: center;
  justify-content: center;
  min-width: 0;
  max-width: 60%;
  z-index: 1;
}
.k-mobile-header .k-mh-logo img {
  max-height: 24px !important;
  width: auto;
  display: block;
  filter: brightness(0) invert(1);
}
.k-mobile-header .k-mh-logo .k-logo {
  color: #fff !important;
  font-family: 'Outfit', sans-serif;
  font-size: 18px;
  font-weight: 600;
  letter-spacing: -0.5px;
}
.k-mobile-header .k-mh-logo .k-logo .k-o { color: var(--k-amber); }

.k-mobile-header .k-mh-cart {
  background: transparent;
  border: none;
  color: #fff !important;
  padding: 0 16px 0 12px;
  height: 56px;
  display: flex;
  align-items: center;
  justify-content: center;
  text-decoration: none;
  position: relative;
  z-index: 2;
  margin-right: 4px;
}
.k-mobile-header .k-mh-cart:hover { opacity: 0.85; color: #fff !important; }
.k-mobile-header .k-mh-cart svg { color: #fff !important; stroke: #fff !important; }
.k-mobile-header .k-mh-cart-count {
  background: #fff;
  color: var(--k-olive-dark);
  font-size: 11px;
  font-weight: 700;
  min-width: 18px;
  height: 18px;
  border-radius: 9px;
  padding: 0 5px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  margin-left: 4px;
  line-height: 1;
}

/* Force any PrestaShop-rendered account icon white on the olive bar */
.k-mobile-header svg,
.k-mobile-header i,
.k-mobile-header .material-icons,
#_mobile_user_info, #_mobile_user_info i,
#_mobile_user_info .material-icons,
#_mobile_user_info svg,
#_mobile_user_info a,
.k-mobile-header #_mobile_user_info * {
  color: #fff !important;
  fill: #fff !important;
  stroke: #fff !important;
}

/* Sticky on mobile */
@media (max-width: 991px) {
  #header {
    position: sticky !important;
    top: 0 !important;
    z-index: 1030 !important;
    background: transparent;
  }
}

/* ============================================================
   Mobile menu — PrestaShop's native top-menu.js shows/hides #mobile_top_menu_wrapper.
   It adds `is-open` to #header when menu opens. We just style the result.
   ============================================================ */
#mobile_top_menu_wrapper {
  background: #fff;
  border-bottom: 1px solid var(--k-border);
  margin: 0;
  padding: 8px 0 16px;
}
/* Visible when PrestaShop reveals it (either inline style:block from JS or .is-open on header).
   IMPORTANT: do NOT use !important here. Classic theme's top-menu.js sets inline display:none
   after its slideToggle animation completes; if we use !important here, that inline style is
   ignored and the menu stays visually open even after classic tries to close it. */
#header.is-open #mobile_top_menu_wrapper {
  display: block;
}

/* Menu items list */
#mobile_top_menu_wrapper .js-top-menu ul,
#mobile_top_menu_wrapper .top-menu {
  list-style: none;
  padding: 0;
  margin: 0;
}
#mobile_top_menu_wrapper .js-top-menu li,
#mobile_top_menu_wrapper .top-menu li {
  border-bottom: 1px solid var(--k-tint);
}
#mobile_top_menu_wrapper .js-top-menu li:last-child,
#mobile_top_menu_wrapper .top-menu li:last-child { border-bottom: none; }
#mobile_top_menu_wrapper .js-top-menu li a,
#mobile_top_menu_wrapper .top-menu li a {
  display: block;
  padding: 14px 20px;
  color: var(--k-deep) !important;
  text-decoration: none;
  font-weight: 500;
  font-size: 15px;
}
#mobile_top_menu_wrapper .js-top-menu li a:hover,
#mobile_top_menu_wrapper .top-menu li a:hover {
  background: var(--k-tint);
  color: var(--k-olive-dark) !important;
}

/* Sign in / Create account links injected at the bottom */
.k-mh-drawer-account {
  border-top: 1px solid var(--k-border);
  margin-top: 8px;
  padding: 12px 0;
}
.k-mh-drawer-account a {
  display: block;
  padding: 12px 20px;
  color: var(--k-deep) !important;
  text-decoration: none;
  font-weight: 500;
  font-size: 14px;
}
.k-mh-drawer-account a:hover {
  background: var(--k-tint);
  color: var(--k-olive-dark) !important;
}

/* Hamburger rotates when menu opens — PrestaShop adds .is-open to #header */
#header.is-open .k-mh-menu svg {
  transform: rotate(90deg);
  transition: transform .15s ease;
}

/* ============================================================
   STICKY ADD-TO-CART BAR — final fix for right edge cut-off
   ============================================================ */
@media (max-width: 991px) {
  .k-sticky-cart, #k-sticky-cart, .product-add-to-cart-sticky {
    box-sizing: border-box !important;
    padding: 8px 12px !important;
    left: 0 !important;
    right: 0 !important;
    width: 100% !important;
    max-width: 100vw !important;
    gap: 10px !important;
  }
  .k-sticky-cart > *,
  .product-add-to-cart-sticky > * {
    box-sizing: border-box;
  }
  /* Thumbnail smaller on mobile */
  .k-sticky-cart .k-sticky-cart img,
  .product-add-to-cart-sticky img {
    flex: 0 0 40px !important;
    width: 40px !important;
    height: 40px !important;
  }
  /* Button smaller — fixed sensible size, not percentage */
  .k-sticky-cart .btn,
  .k-sticky-cart button,
  .k-sticky-cart a.btn-primary,
  .product-add-to-cart-sticky .btn-primary {
    margin-right: 0 !important;
    flex: 0 0 auto !important;
    max-width: none !important;
    width: auto !important;
    padding: 9px 16px !important;
    font-size: 12px !important;
    font-weight: 600 !important;
    letter-spacing: 0.3px !important;
    white-space: nowrap !important;
    border-radius: var(--k-radius-sm) !important;
  }
  /* Info column — give the product name + price proper room */
  .k-sticky-cart .product-add-to-cart-sticky .product-info {
    flex: 1 1 auto !important;
    min-width: 0 !important;
    overflow: hidden;
  }
  .k-sticky-cart .product-add-to-cart-sticky .product-name {
    font-size: 13px !important;
    line-height: 1.25 !important;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    margin: 0 0 2px;
  }
  .k-sticky-cart .product-add-to-cart-sticky .price {
    font-size: 14px !important;
    font-weight: 700 !important;
    color: var(--k-olive-dark) !important;
  }
}

/* Very narrow screens (≤375px) — even tighter */
@media (max-width: 375px) {
  .k-sticky-cart .btn,
  .k-sticky-cart button,
  .k-sticky-cart a.btn-primary,
  .product-add-to-cart-sticky .btn-primary {
    padding: 9px 12px !important;
    font-size: 11px !important;
  }
}

/* ============================================================
   Mobile bar — hide ALL traces of the user/account icon
   PrestaShop's ps_customersignin module injects into #_mobile_user_info
   regardless of our `d-none` class. Hide hard.
   ============================================================ */
@media (max-width: 991px) {
  .k-mobile-header #_mobile_user_info,
  #_mobile_user_info,
  .k-mobile-header .user-info,
  .k-mobile-header .header_user_info,
  .k-mobile-header [class*="user-info"] {
    display: none !important;
    visibility: hidden !important;
    width: 0 !important;
    height: 0 !important;
    overflow: hidden !important;
    position: absolute !important;
    left: -9999px !important;
  }
}

/* ============================================================
   Final mobile cart background killer — beats #header specificity
   ============================================================ */
@media (max-width: 991px) {
  .k-mobile-header .k-mh-cart,
  .k-mobile-header .k-mh-cart.active,
  .k-mobile-header .k-mh-cart:hover,
  .k-mobile-header #_mobile_cart,
  .k-mobile-header #_mobile_cart.active,
  #header .k-mobile-header .k-mh-cart,
  #header .k-mobile-header .k-mh-cart.active,
  #header .k-mobile-header #_mobile_cart,
  #header .k-mobile-header #_mobile_cart.active,
  #header .k-mobile-header .blockcart,
  #header .k-mobile-header .blockcart.active,
  #header .k-mobile-header .blockcart:hover {
    background: transparent !important;
    background-color: transparent !important;
    background-image: none !important;
    box-shadow: none !important;
    border-radius: 0 !important;
  }
}

/* ============================================================
   PAYMENT FORM FIELDS (Authorize.Net + others)
   Fix cramped expiration/CVC inputs visible in screenshot.
   ============================================================ */

/* Payment form container — give inputs room to breathe */
.payment-options form input[type="text"],
.payment-options form input[type="tel"],
.payment-options form input[type="number"],
.payment-options form input[type="email"],
.js-payment-form input[type="text"],
.js-payment-form input[type="tel"],
form[id*="payment"] input[type="text"],
form[id*="payment"] input[type="tel"],
form[id*="authorize"] input[type="text"],
form[id*="authorize"] input[type="tel"] {
  min-width: 0 !important;
  width: 100% !important;
  font-size: 15px !important;
  padding: 10px 14px !important;
}

/* Specific to Authorize.Net field IDs/names */
input[name="cc_number"],
input[name="card_number"],
input[name="cardNumber"],
input[id*="card-number"],
input[id*="card_number"] {
  width: 100% !important;
  min-width: 240px !important;
  letter-spacing: 1px !important;
  font-size: 16px !important;
}

input[name="cc_expiration"],
input[name="cc_expiry"],
input[name="cc_expire"],
input[name="expiration"],
input[name="expiry"],
input[id*="expir"] {
  width: 100% !important;
  min-width: 140px !important;
  font-size: 15px !important;
  letter-spacing: 1px !important;
}

input[name="cc_cvc"],
input[name="cc_cvv"],
input[name="cvc"],
input[name="cvv"],
input[id*="cvc"],
input[id*="cvv"],
input[id*="security"] {
  width: 100% !important;
  min-width: 100px !important;
  font-size: 15px !important;
  letter-spacing: 1px !important;
}
/* Ensure payment form input rows wrap and fields are visible.
   Some themes constrain .form-group widths too aggressively on checkout payment step. */
.payment-options .form-group,
.payment-options .row > .form-group,
form[id*="payment"] .form-group,
form[id*="authorize"] .form-group {
  max-width: 100% !important;
  margin-bottom: 16px !important;
}

/* Two-column layout for expiration + CVC (typical pattern) */
.payment-options .form-row,
.payment-options .row.cc-row {
  display: flex !important;
  gap: 16px !important;
  flex-wrap: wrap !important;
}
.payment-options .form-row > *,
.payment-options .row.cc-row > * {
  flex: 1 1 140px !important;
  min-width: 120px !important;
}

/* The card icon prefix box should not be square-crushed — make it taller for visual balance */
.payment-options .input-group-prepend,
.payment-options .input-group-text {
  padding: 0 14px !important;
}

/* Place Order button: slightly less imposing, still prominent */
.payment-options .btn-primary,
button[type="submit"][name*="confirm"],
button[type="submit"][id*="place-order"] {
  padding: 14px 32px !important;
  font-size: 16px !important;
  font-weight: 600 !important;
  letter-spacing: 0.5px !important;
}

/* Empty "[]" placeholder fix injection.
   The tfauthorizedotnet payment module has a translation key that renders as
   literal "[]" in input placeholders. Pure CSS cannot rewrite placeholder
   attribute content, so this style tag carries a JS fixup via the linked
   <style data-fix-placeholders> hook — see theme.yml + JS section below.
   Until the proper module fix is in, we rely on the CSS-only hack below
   which uses transparent text color on placeholders that contain "[]". */
input[placeholder="[]"]::placeholder,
input[placeholder="[ ]"]::placeholder {
  color: transparent !important;
}
input[placeholder="[]"]:focus::placeholder,
input[placeholder="[ ]"]:focus::placeholder {
  color: transparent !important;
}

/* ============================================================
   PAYMENT FORM — bulletproof containment
   The Authorize.Net (tfauthorizedotnet) module renders form fields
   that overflow the parent container on narrow viewports.
   Fix: constrain the whole payment options area + force inputs to
   respect their container width.
   ============================================================ */

/* Outer containment — keep the payment area inside its column */
#checkout-payment-step,
.payment-options,
.payment-options > *,
.payment-options form,
.payment-option,
.payment-option > *,
[id*="payment-form"],
[class*="payment-form"] {
  max-width: 100% !important;
  box-sizing: border-box !important;
  overflow: visible;
}

/* Force ALL inputs inside the payment area to shrink to container width */
.payment-options input[type="text"],
.payment-options input[type="tel"],
.payment-options input[type="number"],
.payment-options input[type="password"],
.payment-options input[type="email"],
.payment-options select,
.payment-options textarea,
[id*="payment-form"] input,
[id*="payment-form"] select,
[class*="payment-form"] input,
[class*="payment-form"] select,
form[id*="authorize"] input,
form[id*="authorize"] select {
  width: 100% !important;
  max-width: 100% !important;
  min-width: 0 !important;
  box-sizing: border-box !important;
  padding: 10px 14px !important;
  font-size: 15px !important;
}

/* Form groups inside payment options: shrink to fit, no horizontal overflow */
.payment-options .form-group,
.payment-options .row,
.payment-options [class*="col-"],
[id*="payment-form"] .form-group,
[id*="payment-form"] .row,
[id*="payment-form"] [class*="col-"] {
  max-width: 100% !important;
  box-sizing: border-box !important;
  margin-left: 0 !important;
  margin-right: 0 !important;
}

/* The grid row that holds card number / expiration / CVC inputs:
   stack on mobile, side-by-side on tablet+, but never overflow */
.payment-options .row {
  display: flex !important;
  flex-wrap: wrap !important;
  gap: 12px !important;
}
.payment-options .row > .col-md-6,
.payment-options .row > .col-md-4,
.payment-options .row > .col-sm-6,
.payment-options .row > .col-sm-4,
.payment-options .row > [class*="col-"] {
  flex: 1 1 200px !important;
  min-width: 0 !important;
  max-width: 100% !important;
  padding-left: 0 !important;
  padding-right: 0 !important;
}

/* Specific input-group prefix boxes (the card icon, calendar, padlock):
   keep them compact and aligned with the input */
.payment-options .input-group,
[id*="payment-form"] .input-group {
  display: flex !important;
  flex-wrap: nowrap !important;
  width: 100% !important;
  max-width: 100% !important;
}
.payment-options .input-group-prepend,
.payment-options .input-group-text,
[id*="payment-form"] .input-group-prepend,
[id*="payment-form"] .input-group-text {
  flex: 0 0 auto !important;
  padding: 0 12px !important;
  display: flex !important;
  align-items: center !important;
}
.payment-options .input-group input,
[id*="payment-form"] .input-group input {
  flex: 1 1 0% !important;
  min-width: 0 !important;
}

/* Hide the empty "[]" placeholder text via transparent color
   (the JS fixup in kratoma.js replaces it with proper text on most pages) */
input[placeholder="[]"]::placeholder,
input[placeholder="[ ]"]::placeholder {
  color: transparent !important;
}

/* Place Order button: ensure it fits the column */
.payment-options .btn,
.payment-options button[type="submit"],
#payment-confirmation .btn,
#payment-confirmation button[type="submit"] {
  max-width: 100% !important;
  box-sizing: border-box !important;
}

/* ================================================================
 * BLUE PURGE — overrides Bootstrap and PrestaShop Classic theme defaults
 * Maps all primary/info/link/focus blue accents to the olive palette.
 * v74 — kratomaloyal launch
 * ================================================================ */

/* Bootstrap CSS variable overrides — all "primary" and "info" become olive */
:root {
  --bs-primary: var(--k-olive);
  --bs-primary-rgb: 124, 144, 57;
  --bs-link-color: var(--k-olive);
  --bs-link-color-rgb: 124, 144, 57;
  --bs-link-hover-color: var(--k-olive-dark);
  --bs-link-hover-color-rgb: 94, 122, 42;
  --bs-info: var(--k-olive);
  --bs-info-rgb: 124, 144, 57;
  --bs-component-active-bg: var(--k-olive);
  --bs-form-select-bg-img: none;
}

/* Anchor / link color across all surfaces */
a, .text-primary, .link-primary {
  color: var(--k-olive);
}
a:hover, a:focus, .text-primary:hover, .link-primary:hover {
  color: var(--k-olive-dark);
}

/* Bootstrap buttons — primary / info → olive */
.btn-primary,
.btn-info,
.btn-outline-primary:hover,
.btn-outline-info:hover {
  background-color: var(--k-olive);
  border-color: var(--k-olive);
  color: #fff;
}
.btn-primary:hover,
.btn-info:hover,
.btn-primary:focus,
.btn-info:focus,
.btn-primary:active,
.btn-info:active {
  background-color: var(--k-olive-dark) !important;
  border-color: var(--k-olive-dark) !important;
  color: #fff !important;
}
.btn-outline-primary, .btn-outline-info {
  color: var(--k-olive);
  border-color: var(--k-olive);
}

/* Bootstrap form focus rings — turn off blue glow, use olive */
.form-control:focus,
.form-select:focus,
input:focus,
textarea:focus,
select:focus,
.input-group .form-control:focus {
  border-color: var(--k-olive) !important;
  box-shadow: 0 0 0 0.2rem rgba(124, 144, 57, 0.20) !important;
  outline: 0 !important;
}

/* Checkboxes and radios checked state */
.form-check-input:checked {
  background-color: var(--k-olive) !important;
  border-color: var(--k-olive) !important;
}
.form-check-input:focus {
  border-color: var(--k-olive) !important;
  box-shadow: 0 0 0 0.2rem rgba(124, 144, 57, 0.20) !important;
}

/* Alerts and badges */
.alert-primary, .alert-info {
  background-color: rgba(124, 144, 57, 0.10);
  border-color: rgba(124, 144, 57, 0.30);
  color: var(--k-deep);
}
.badge-primary, .badge-info, .badge.bg-primary, .badge.bg-info {
  background-color: var(--k-olive) !important;
  color: #fff;
}

/* Progress bars */
.progress-bar { background-color: var(--k-olive); }

/* Spinners */
.spinner-border-primary, .text-primary.spinner-border {
  color: var(--k-olive) !important;
}

/* PrestaShop Classic theme specifics */

/* Account dashboard "links" — they get a default blue color */
.account-link,
#main .page-content a,
.block-categories a,
.product-list a {
  color: var(--k-text);
}
.account-link:hover,
#main .page-content a:hover,
.block-categories a:hover,
.product-list a:hover {
  color: var(--k-olive);
}

/* "Continue shopping" link, "Forgot password" link etc */
.cart-continue-link,
.form-control-comment,
.btn-link,
small a {
  color: var(--k-olive);
}
.btn-link:hover { color: var(--k-olive-dark); }

/* Notification messages (cart updates, etc) */
.notification-success,
.notifications-success,
.alert.alert-success {
  background-color: rgba(124, 144, 57, 0.10);
  border-color: var(--k-olive);
  color: var(--k-deep);
}

/* Pagination current page */
.page-list .current a,
.page-item.active .page-link,
.pagination .active a {
  background-color: var(--k-olive) !important;
  border-color: var(--k-olive) !important;
  color: #fff !important;
}
.page-link {
  color: var(--k-olive);
}
.page-link:hover {
  background-color: var(--k-tint);
  color: var(--k-olive-dark);
}

/* Tabs — active tab indicator */
.nav-tabs .nav-link.active,
.nav-pills .nav-link.active {
  border-bottom-color: var(--k-olive);
  color: var(--k-olive);
}
.nav-tabs .nav-link:hover { color: var(--k-olive-dark); }

/* Breadcrumbs */
.breadcrumb a { color: var(--k-text-soft); }
.breadcrumb a:hover { color: var(--k-olive); }

/* Order status badges — anything blue → muted olive */
.label-primary, .label-info {
  background-color: var(--k-olive);
  color: #fff;
}

/* Quantity selector / spinner buttons */
.bootstrap-touchspin .input-group-btn-vertical button {
  color: var(--k-olive);
}

/* Selection highlights */
::selection {
  background-color: var(--k-olive);
  color: #fff;
}
::-moz-selection {
  background-color: var(--k-olive);
  color: #fff;
}

/* ================================================================
 * CART PAGE — promo code form is always visible
 * The template override at templates/checkout/_partials/cart-voucher.tpl
 * removes the Bootstrap collapse wrapper entirely. This block just
 * styles the always-open form.
 * ================================================================ */

/* Force the whole container chain to full width — must match the
   "Proceed to checkout" button beneath it. */
.cart-voucher,
.cart-voucher .block-promo,
.cart-voucher .promo-code,
.cart-voucher .promo-code__content,
.cart-voucher .form__add-voucher {
  display: block !important;
  width: 100% !important;
  max-width: 100% !important;
  box-sizing: border-box !important;
}

.cart-voucher {
  padding: 0 16px 16px !important;   /* match cart-summary card horizontal padding */
}

.cart-voucher .k-promo-open {
  margin-top: 16px !important;
  padding-top: 14px !important;
  border-top: 1px solid var(--k-border) !important;
}

.cart-voucher .form__add-voucher .input-group,
.cart-voucher .promo-code .input-group,
.cart-voucher div.input-group {
  display: flex !important;
  flex-wrap: nowrap !important;
  width: 100% !important;
  max-width: 100% !important;
  position: relative;
  align-items: stretch;
}

.cart-voucher .form__add-voucher input,
.cart-voucher .form__add-voucher .form-control,
.cart-voucher .form__add-voucher input.form-control,
.cart-voucher .form__add-voucher .input-group .form-control,
.cart-voucher .form__add-voucher input[name="discount_name"] {
  flex: 1 1 100% !important;
  min-width: 0 !important;
  width: 100% !important;
  height: 44px !important;
  line-height: 1 !important;
  padding: 0 14px !important;
  border: 1px solid var(--k-border) !important;
  border-right: 0 !important;
  border-radius: var(--k-radius-sm) 0 0 var(--k-radius-sm) !important;
  background: #fff !important;
  font-size: 14px !important;
  box-sizing: border-box !important;
  margin: 0 !important;
}

.cart-voucher .form__add-voucher .input-group-append,
.cart-voucher .form__add-voucher .input-group-btn {
  display: flex !important;
  flex: 0 0 auto !important;
  margin-left: -1px !important;
  width: auto !important;
}

.cart-voucher .form__add-voucher .btn,
.cart-voucher .form__add-voucher .btn-primary,
.cart-voucher .form__add-voucher .input-group-append .btn,
.cart-voucher .form__add-voucher .input-group-append .btn-primary,
.cart-voucher .form__add-voucher button[type="submit"] {
  height: 44px !important;
  line-height: 1 !important;
  padding: 0 22px !important;
  border: 1px solid var(--k-olive) !important;
  background: var(--k-olive) !important;
  color: #fff !important;
  border-radius: 0 var(--k-radius-sm) var(--k-radius-sm) 0 !important;
  font-weight: 600 !important;
  letter-spacing: 0.5px !important;
  text-transform: uppercase !important;
  font-size: 13px !important;
  white-space: nowrap !important;
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  box-sizing: border-box !important;
  margin: 0 !important;
  flex: 0 0 auto !important;
}

/* The "Take advantage of our exclusive offers" highlighted box.
   We set highlight=0 on cashback vouchers at the module level so this
   shouldn't appear for KRA- vouchers, but if it does for other rules,
   tone down the visual loudness. */
.cart-summary .promo-highlighted,
.promo-highlighted {
  color: var(--k-text-soft);
  font-size: 13px;
  margin-top: 12px;
}
.cart-summary .promo-discounts,
.promo-discounts {
  color: var(--k-text-soft);
}

/* ================================================================
 * v82 fixes
 * ================================================================ */

/* --- Cart voucher form: full width on all viewports (button stays compact) --- */
.cart-voucher .form__add-voucher .input-group {
  width: 100% !important;
}
.cart-voucher .form__add-voucher input[name="discount_name"],
.cart-voucher .form__add-voucher .form-control {
  flex: 1 1 100% !important;
  width: auto !important;
  min-width: 0 !important;
}
.cart-voucher .form__add-voucher .btn,
.cart-voucher .form__add-voucher .btn-primary {
  padding: 0 18px !important;     /* smaller "ADD" button so input has more room */
  flex: 0 0 auto !important;
}

/* On mobile, give the input a bigger share */
@media (max-width: 640px) {
  .cart-voucher .form__add-voucher .btn,
  .cart-voucher .form__add-voucher .btn-primary {
    padding: 0 14px !important;
    font-size: 12px !important;
  }
  .cart-voucher .form__add-voucher input[name="discount_name"],
  .cart-voucher .form__add-voucher .form-control {
    font-size: 16px !important;   /* 16px prevents iOS auto-zoom on focus */
  }
}

/* --- My Account dashboard: hover state must stay olive, never blue --- */
body.my-account .links a,
body.my-account .links a:link,
body.my-account .links a:visited {
  color: var(--k-deep) !important;
}
body.my-account .links a:hover,
body.my-account .links a:focus,
body.my-account .links a:active,
body.my-account .links a:hover .link-item,
body.my-account .links a:hover span,
body.my-account .links a:hover small,
body.my-account .links a:hover i,
body.my-account .links a:hover .material-icons,
body.my-account .links a:hover svg {
  color: var(--k-olive) !important;
}
/* The SVG/icon inside the account card should also stay olive on hover */
body.my-account .links a svg {
  color: var(--k-olive);
  stroke: currentColor;
}
body.my-account .links a:hover svg {
  color: var(--k-olive-dark) !important;
}

/* --- Product page tabs (description / product details) hover stays olive --- */
.tabs .nav-tabs .nav-link,
.product-tabs .nav-tabs .nav-link,
#product .tabs .nav-tabs .nav-link {
  color: var(--k-text) !important;
}
.tabs .nav-tabs .nav-link:hover,
.tabs .nav-tabs .nav-link:focus,
.product-tabs .nav-tabs .nav-link:hover,
.product-tabs .nav-tabs .nav-link:focus,
#product .tabs .nav-tabs .nav-link:hover,
#product .tabs .nav-tabs .nav-link:focus {
  color: var(--k-olive) !important;
  border-color: transparent !important;
}
.tabs .nav-tabs .nav-link.active,
.tabs .nav-tabs .nav-link.js-product-nav-active,
.product-tabs .nav-tabs .nav-link.active,
#product .tabs .nav-tabs .nav-link.active {
  color: var(--k-olive) !important;
  border-bottom-color: var(--k-olive) !important;
}

/* --- Top green bar layout: "Sign out" and "Luke Luke" need spacing --- */
.k-greenbar .user-info,
.k-greenbar #_desktop_user_info,
.k-greenbar #_mobile_user_info {
  display: flex !important;
  align-items: center !important;
  gap: 16px !important;          /* space between Sign out and customer name */
}
.k-greenbar .user-info a {
  display: inline-flex !important;
  align-items: center !important;
  gap: 6px !important;            /* space between icon and label inside each link */
  white-space: nowrap !important;
}
.k-greenbar .user-info .account,
.k-greenbar .user-info .logout {
  display: inline-flex !important;
  align-items: center !important;
  gap: 6px !important;
}

/* Lab-tested / Free shipping banner — center the contact-text on desktop */
.k-greenbar {
  display: flex !important;
  align-items: center !important;
  justify-content: space-between !important;
}
.k-greenbar .contact-info,
.k-greenbar .header-banner {
  flex: 1 1 auto;
  text-align: center;
}
.k-greenbar .contact-info {
  text-align: left;
}
.k-greenbar .header-banner {
  text-align: center;
}
@media (max-width: 768px) {
  .k-greenbar {
    flex-wrap: wrap;
  }
  .k-greenbar .contact-info,
  .k-greenbar .header-banner {
    flex: 1 1 100%;
    text-align: center;
  }
}

/* ================================================================
 * v84 mobile fixes
 * ================================================================ */

/* --- 1. Hero slider: bottom corners also rounded on mobile --- */
.k-hero,
.k-hero .homeslider-container,
.k-hero .rslides,
.k-hero .rslides_container,
.k-hero .rslides li,
.k-hero .slide,
.k-hero .slide img,
.k-hero .rslides > li,
.k-hero .rslides > li img {
  border-radius: var(--k-radius) !important;
  overflow: hidden !important;
}
/* Force the image element itself to have all four corners rounded.
   Some slider plugins inline-style only top corners on mobile. */
.k-hero img,
.k-hero .slide a img,
.k-hero .rslides img {
  border-top-left-radius: var(--k-radius) !important;
  border-top-right-radius: var(--k-radius) !important;
  border-bottom-left-radius: var(--k-radius) !important;
  border-bottom-right-radius: var(--k-radius) !important;
  display: block;
}

/* --- 2. Product page tabs: remove the black focus outline rectangle --- */
.tabs .nav-tabs .nav-link,
.product-tabs .nav-tabs .nav-link,
#product .tabs .nav-tabs .nav-link,
.nav-tabs .nav-link {
  outline: none !important;
  box-shadow: none !important;
  border: none !important;
  border-bottom: 2px solid transparent !important;
}
.tabs .nav-tabs .nav-link:focus,
.tabs .nav-tabs .nav-link:focus-visible,
.tabs .nav-tabs .nav-link.active:focus,
.product-tabs .nav-tabs .nav-link:focus,
.product-tabs .nav-tabs .nav-link:focus-visible,
#product .tabs .nav-tabs .nav-link:focus,
#product .tabs .nav-tabs .nav-link:focus-visible,
.nav-tabs .nav-link:focus,
.nav-tabs .nav-link:focus-visible {
  outline: none !important;
  box-shadow: none !important;
  border: none !important;
  border-bottom: 2px solid var(--k-olive) !important;
}
.tabs .nav-tabs .nav-link.active,
.tabs .nav-tabs .nav-link.js-product-nav-active,
.product-tabs .nav-tabs .nav-link.active,
#product .tabs .nav-tabs .nav-link.active,
.nav-tabs .nav-link.active {
  border: none !important;
  border-bottom: 2px solid var(--k-olive) !important;
  background: transparent !important;
  color: var(--k-olive-dark) !important;
}

/* --- 3. Trust badges: one per line on mobile (not 2x2 grid) --- */
@media (max-width: 640px) {
  .k-trust-strip {
    grid-template-columns: 1fr !important;     /* single column */
    gap: 14px !important;
    padding: 18px !important;
  }
  .k-trust-strip .k-trust-item {
    display: flex !important;
    align-items: center !important;
    gap: 12px !important;
    text-align: left !important;
    justify-content: flex-start !important;
    font-size: 14px !important;
  }
  .k-trust-strip .k-trust-item strong {
    font-size: 14px !important;
    font-weight: 600 !important;
  }
  /* Show the descriptive sub-text on mobile too (we previously hid it) */
  .k-trust-strip .k-trust-item span {
    display: block !important;
    font-size: 12px !important;
    color: var(--k-text-soft) !important;
  }
}

/* ================================================================
 * v89 — aggressive voucher form full-width on cart
 * Zero out padding/margin on every container in the chain so the
 * input-group expands to the cart-summary card's full inner width.
 * ================================================================ */

.cart-summary .block-promo,
.cart-summary .cart-voucher,
.cart-summary .promo-code,
.cart-summary .promo-code__content,
.cart-summary .form__add-voucher,
#cart .block-promo,
#cart .cart-voucher,
#cart .promo-code,
#cart .promo-code__content,
#cart .form__add-voucher,
body#cart .block-promo,
body#cart .cart-voucher,
body#cart .promo-code,
body#cart .promo-code__content,
body#cart .form__add-voucher {
  width: 100% !important;
  max-width: 100% !important;
  margin-left: 0 !important;
  margin-right: 0 !important;
  padding-left: 0 !important;
  padding-right: 0 !important;
  box-sizing: border-box !important;
  display: block !important;
}

/* Keep vertical spacing on the .cart-voucher container only (top/bottom OK) */
.cart-summary .cart-voucher,
#cart .cart-voucher {
  padding-top: 0 !important;
  padding-bottom: 12px !important;
}

/* Border-top divider for visual separation from totals above */
.cart-summary .k-promo-open,
#cart .k-promo-open {
  margin-top: 16px !important;
  padding-top: 14px !important;
  border-top: 1px solid var(--k-border) !important;
}

/* Now the input-group itself — flex row spanning full width */
.cart-summary .form__add-voucher .input-group,
#cart .form__add-voucher .input-group {
  display: flex !important;
  flex-wrap: nowrap !important;
  width: 100% !important;
  max-width: 100% !important;
  align-items: stretch !important;
}

/* Input grows, button stays compact */
.cart-summary .form__add-voucher .form-control,
.cart-summary .form__add-voucher input[name="discount_name"],
#cart .form__add-voucher .form-control,
#cart .form__add-voucher input[name="discount_name"] {
  flex: 1 1 100% !important;
  width: auto !important;
  min-width: 0 !important;
  height: 44px !important;
  box-sizing: border-box !important;
}

.cart-summary .form__add-voucher .btn,
.cart-summary .form__add-voucher button[type="submit"],
#cart .form__add-voucher .btn,
#cart .form__add-voucher button[type="submit"] {
  flex: 0 0 auto !important;
  height: 44px !important;
  white-space: nowrap !important;
  box-sizing: border-box !important;
}

/* ================================================================
 * v90 — inline variant picker on product miniatures
 * Dropdown above Add to Cart button on category/listing tiles.
 * Powered by kratomacatalog module's k_combinations data.
 * ================================================================ */

.k-variant-picker {
  display: flex;
  flex-direction: column;
  gap: 6px;
  width: 100%;
  margin: 0;
}

.k-variant-picker .k-variant-select {
  height: 36px;
  padding: 0 32px 0 10px;
  border: 1px solid var(--k-border);
  border-radius: 6px;
  background: #fff;
  font-size: 13px;
  font-weight: 500;
  color: var(--k-text);
  cursor: pointer;
  width: 100%;
  appearance: none;
  -webkit-appearance: none;
  -moz-appearance: none;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 24 24' fill='none' stroke='%237C9039' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 10px center;
  background-size: 10px 10px;
  transition: border-color 0.15s;
}

.k-variant-picker .k-variant-select:hover,
.k-variant-picker .k-variant-select:focus {
  border-color: var(--k-olive);
  outline: none;
}

.k-variant-picker .k-variant-select option[disabled] {
  color: #999;
  font-style: italic;
}

/* Add-to-cart button inside the variant picker form keeps the existing
   .k-add-btn styling — no override needed. */

/* On small screens, keep dropdown and button stacked but ensure they
   stay tappable (44px target). */
@media (max-width: 640px) {
  .k-variant-picker .k-variant-select {
    height: 40px;
    font-size: 14px;
  }
}

/* ================================================================
 * v91 — center miniature price + prevent header wrap at medium widths
 * ================================================================ */

/* --- 1. Center the price under the product title on miniatures --- */
.product-miniature .product-price-and-shipping,
.product-miniature .k-card-foot .product-price-and-shipping {
  justify-content: center !important;
  text-align: center;
  width: 100%;
}

/* --- 2. Prevent header wrap on medium screens (980-1280px) --- */

/* On medium screens, tighten up nav item spacing so the search bar can
   stay on the same row as the menu instead of falling below. */
@media (max-width: 1280px) and (min-width: 980px) {
  /* Slightly tighter padding on top menu items */
  #_desktop_top_menu .top-menu > li > a,
  .top-menu > li > a {
    padding-left: 10px !important;
    padding-right: 10px !important;
    font-size: 14px !important;
  }

  /* Narrower search box so it fits */
  #search_widget,
  .search-widget {
    max-width: 220px !important;
  }
  #search_widget input[type="text"],
  #search_widget .form-control,
  .search-widget input[type="text"],
  .search-widget .form-control {
    max-width: 220px !important;
    font-size: 13px !important;
  }
}

/* On screens 1024-1180px (the worst-case zone where wrap happens) — push
   the search smaller still + shrink the logo a touch. */
@media (max-width: 1180px) and (min-width: 1024px) {
  .k-logo {
    font-size: 34px !important;
  }
  #_desktop_top_menu .top-menu > li > a,
  .top-menu > li > a {
    padding-left: 8px !important;
    padding-right: 8px !important;
    font-size: 13px !important;
    letter-spacing: 0 !important;
  }
  #search_widget,
  .search-widget {
    max-width: 180px !important;
  }
  #search_widget input[type="text"],
  #search_widget .form-control,
  .search-widget input[type="text"],
  .search-widget .form-control {
    max-width: 180px !important;
  }
}

/* Below 1024px, PrestaShop's classic theme switches to mobile menu (hamburger)
   so the wrap problem disappears naturally — no rules needed below this. */

/* ================================================================
 * v91.1 — slightly larger product name on miniatures (was 13.5px)
 * Bumps to 15.5px desktop, 14.5px mobile. Keeps 2-line clamp so cards
 * stay aligned vertically.
 * ================================================================ */
.product-miniature .product-title,
.product-miniature .product-title a {
  font-size: 15.5px !important;
  line-height: 1.35 !important;
}

/* Slightly shorter on mobile so longer names don't push the tile too tall */
@media (max-width: 640px) {
  .product-miniature .product-title,
  .product-miniature .product-title a {
    font-size: 14.5px !important;
  }
}

/* ===== Cart icon flash on add-to-cart (visual feedback since modal is suppressed) ===== */
.k-cart-flash {
  animation: k-cart-pulse 0.6s ease-out;
}
@keyframes k-cart-pulse {
  0%   { transform: scale(1);    filter: brightness(1); }
  35%  { transform: scale(1.18); filter: brightness(1.4); }
  70%  { transform: scale(0.96); filter: brightness(1.15); }
  100% { transform: scale(1);    filter: brightness(1); }
}
/* Mobile: stretch full width with edge margins */
@media (max-width: 600px) {
}

/* ===== Cart page: tone down attribute info (Size: 4oz, etc.) =====
   PrestaShop classic renders attributes as <div class="product-line-info">
     <span class="label">Size:</span><span class="value">4oz</span>
   </div>
   By default these print at body-text size, which is way too loud for a
   simple size badge. Make them small, gray, inline, and drop the
   "Size:" label since the value is self-explanatory.
*/
body#cart .cart-item .product-line-info,
body.cart .cart-item .product-line-info {
  display: inline-block !important;
  font-size: 12.5px !important;
  color: #888 !important;
  margin: 4px 8px 0 0 !important;
  line-height: 1.3 !important;
  font-weight: 400 !important;
}
body#cart .cart-item .product-line-info span.label,
body.cart .cart-item .product-line-info span.label {
  display: none !important;
}
body#cart .cart-item .product-line-info .value,
body.cart .cart-item .product-line-info .value {
  color: #666 !important;
  background: #f3f1ea;
  padding: 2px 8px;
  border-radius: 10px;
  font-weight: 500;
  font-size: 12px !important;
}

/* Slight breathing room between price and the size badge */
body#cart .cart-item .product-price,
body.cart .cart-item .product-price {
  margin-bottom: 2px;
}

/* ===== Cart page: scale down line-item prices =====
   Earlier in the stylesheet .product-price is set to 28px for the
   product detail page hero. PrestaShop reuses that same class on cart
   line items and order-summary rows, so the 28px bleeds in and makes
   the cart look shouty. Re-scope to sensible cart sizes.
*/
body#cart .cart-item .product-price,
body.cart .cart-item .product-price,
body#cart .cart-item .price,
body.cart .cart-item .price {
  font-size: 16px !important;
  font-weight: 600 !important;
  color: var(--k-deep) !important;
}

/* Line total (right side, larger because it's the actionable number) */
body#cart .cart-item .product-line-grid-right .price,
body#cart .cart-item .total,
body.cart .cart-item .product-line-grid-right .price,
body.cart .cart-item .total {
  font-size: 18px !important;
  font-weight: 700 !important;
}

/* Product name */
body#cart .cart-item .product-line-info-aside .product-line-info,
body#cart .cart-item .product-name,
body#cart .cart-item .product-line-grid-body .product-name,
body.cart .cart-item .product-name {
  font-size: 14.5px !important;
  font-weight: 600 !important;
  line-height: 1.3 !important;
}

/* ================================================================
 * v103 — fix navigation breakpoint gap + search wrap
 *
 * Problem 1: Desktop bars use Bootstrap's `hidden-sm-down` class which
 * hides them at <768px. But ps_mainmenu's internal CSS hides menu
 * items below ~991px (Bootstrap "lg"). Result: a 768-991px zone with
 * a visible nav bar and no menu inside.
 *
 * Problem 2: At 992-1279px the menu items + search input can't all
 * fit on one row, so search wraps to a second line ("small double
 * line in awkward sizes").
 *
 * Fix: force a single, consistent 992px breakpoint between desktop
 * and mobile (matches ps_mainmenu), and hide the search bar at
 * medium-desktop widths (992-1279px) so the menu has clean room.
 * ================================================================ */

/* Below 992px: full mobile mode. Hide both desktop bars, show mobile. */
@media (max-width: 991.98px) {
  .header-nav.k-greenbar,
  .header-top,
  #header .header-nav.k-greenbar,
  #header .header-top {
    display: none !important;
  }
  .k-mobile-header {
    display: flex !important;
  }
}

/* At 992px and up: desktop mode. Hide mobile bar, show desktop bars. */
@media (min-width: 992px) {
  .k-mobile-header,
  nav.k-mobile-header {
    display: none !important;
  }
  .header-nav.k-greenbar {
    display: block !important;
  }
}

/* At 992-1279px: hide the search box to prevent wrap. The menu and
   logo will use the freed horizontal space cleanly. */
@media (min-width: 992px) and (max-width: 1279.98px) {
  #header #search_widget,
  #header .search-widget,
  .header-top #search_widget,
  .header-top .search-widget,
  .header-top-right #search_widget,
  .header-top-right .search-widget {
    display: none !important;
  }
}

/* ================================================================
 * v104 — navigation polish
 *
 * Bundles fixes for:
 *   1) Mobile menu wrapper hidden at 768-991px (broken breakpoint)
 *   2) Search missing on mobile entirely
 *   3) Left sidebar category tree collapsed by default
 *   4) Subcategories block on category pages way too tall
 *   5) Blue hover state lingering on subcategory tiles
 *   6) Pagination wrapped in odd white pill with green sub-box
 * ================================================================ */

/* --- 1) Mobile menu wrapper: enforce 992px breakpoint --- */
/* At ≥992px we always hide the mobile wrapper (desktop nav is showing) */
@media (min-width: 992px) {
  #mobile_top_menu_wrapper,
  .k-mobile-menu-wrap {
    display: none !important;
  }
}
/* At <992px we let the inline `display:none` and PrestaShop's JS
   toggle control visibility; no override needed. */

/* --- 2) Mobile search styling --- */
.k-mobile-search {
  padding: 12px 16px 16px;
  border-top: 1px solid var(--k-border);
  background: #fff;
}
.k-mobile-search-form {
  display: flex;
  align-items: stretch;
  gap: 0;
  width: 100%;
}
.k-mobile-search-input {
  flex: 1 1 auto;
  min-width: 0;
  height: 42px;
  padding: 0 14px;
  border: 1px solid var(--k-border);
  border-right: none;
  border-radius: 6px 0 0 6px;
  font-size: 15px;
  color: var(--k-deep);
  background: #fff;
  outline: none;
}
.k-mobile-search-input:focus {
  border-color: var(--k-olive);
}
.k-mobile-search-btn {
  flex: 0 0 auto;
  width: 50px;
  height: 42px;
  background: var(--k-olive);
  border: 1px solid var(--k-olive);
  color: #fff;
  border-radius: 0 6px 6px 0;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
}
.k-mobile-search-btn:hover { background: var(--k-deep); border-color: var(--k-deep); }

/* --- 3) Left sidebar category tree: handled via JS in kratoma.js
       (auto-clicks each toggle on page load so all branches expand).
       We keep the +/- toggle visible AFTER expansion so user can still
       collapse manually if they want. Styling here is just for the
       sub-item links so they look consistent. */
.block-categories .category-sub-menu li a {
  font-weight: 400 !important;
  font-size: 14px !important;
  padding: 4px 0 !important;
  color: var(--k-deep);
}
.block-categories .category-sub-menu li a:hover {
  color: var(--k-olive) !important;
  background: transparent !important;
}
.block-categories .category-top-menu > li > a {
  font-weight: 600 !important;
}
/* Make the +/- toggle small and unobtrusive — olive color, no harsh border */
.block-categories .navbar-toggler {
  background: transparent !important;
  border: none !important;
  color: var(--k-olive) !important;
  padding: 0 4px !important;
  cursor: pointer;
}
.block-categories .navbar-toggler i,
.block-categories .navbar-toggler .material-icons {
  color: var(--k-olive) !important;
  font-size: 18px !important;
}

/* --- 4) Subcategories block on category pages: slimmer --- */
/* The default block adds huge white tiles per subcategory with
   tons of vertical padding — pushes products way below the fold.
   Tighten everything down. */
#subcategories,
.subcategories {
  padding: 16px 20px !important;
  margin-bottom: 16px !important;
}
#subcategories h2,
.subcategories h2,
#subcategories .h6,
.subcategories .h6 {
  font-size: 15px !important;
  margin-bottom: 10px !important;
  color: var(--k-deep);
}
#subcategories ul,
.subcategories ul,
.subcategories .subcategory-list {
  display: flex !important;
  flex-wrap: wrap !important;
  gap: 8px !important;
  margin: 0 !important;
  padding: 0 !important;
  list-style: none !important;
}
#subcategories ul li,
.subcategories ul li,
.subcategories .subcategory {
  flex: 0 0 auto !important;
  margin: 0 !important;
  padding: 0 !important;
  list-style: none !important;
}
/* Make each subcategory a small pill, not a giant tile */
.subcategories a,
.subcategories .subcategory-name,
#subcategories a {
  display: inline-flex !important;
  align-items: center !important;
  padding: 7px 14px !important;
  background: #fff !important;
  border: 1px solid var(--k-border) !important;
  border-radius: 20px !important;
  font-size: 13px !important;
  font-weight: 500 !important;
  color: var(--k-deep) !important;
  text-decoration: none !important;
  letter-spacing: 0 !important;
  text-transform: none !important;
  line-height: 1.2 !important;
  transition: background 0.15s, border-color 0.15s, color 0.15s;
}
/* Hide the empty image placeholders that were taking up huge space */
.subcategories .subcategory-image,
.subcategories img,
#subcategories .subcategory-image,
#subcategories img {
  display: none !important;
}

/* --- 5) Kill blue hover everywhere on subcategory pills + tiles --- */
.subcategories a:hover,
.subcategories .subcategory-name:hover,
.subcategories .subcategory:hover,
.subcategories .subcategory:hover a,
.subcategories a:focus,
#subcategories a:hover,
#subcategories a:focus,
.subcategory-image:hover,
.subcategory-image:hover *,
.subcategories *:hover {
  background: var(--k-olive) !important;
  border-color: var(--k-olive) !important;
  color: #fff !important;
  outline: none !important;
  box-shadow: none !important;
}
/* Belt-and-suspenders: nuke any blue inherited from default Bootstrap on these blocks */
.subcategories .subcategory::before,
.subcategories .subcategory::after,
#subcategories *::before,
#subcategories *::after {
  background: transparent !important;
  border-color: var(--k-olive) !important;
}

/* --- 6) Pagination: clean the white pill + green inner box mess --- */
/* The classic theme wraps pagination in a div with default white bg
   and the active page in another wrapper. We strip the outer wrap
   and just style each page-link as a discrete pill. */
.pagination,
.page-list,
nav .pagination,
#js-product-list-bottom .pagination {
  display: inline-flex !important;
  align-items: center !important;
  gap: 4px !important;
  padding: 0 !important;
  margin: 0 !important;
  background: transparent !important;
  border: none !important;
  list-style: none !important;
  box-shadow: none !important;
}
.pagination > li,
.page-list > li,
.pagination .page-item {
  display: inline-block !important;
  background: transparent !important;
  border: none !important;
  margin: 0 !important;
  padding: 0 !important;
}
.pagination > li > a,
.pagination > li > span,
.page-link,
.page-list > li > a,
.page-list > li > span {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  min-width: 36px !important;
  height: 36px !important;
  padding: 0 12px !important;
  border-radius: 6px !important;
  border: 1px solid var(--k-border) !important;
  background: #fff !important;
  color: var(--k-deep) !important;
  font-size: 14px !important;
  font-weight: 500 !important;
  margin: 0 !important;
  text-decoration: none !important;
  box-shadow: none !important;
  transition: background 0.15s, border-color 0.15s, color 0.15s;
}
.pagination > li.active > a,
.pagination > li.active > span,
.page-item.active .page-link,
.page-list .current a,
.page-list .current span {
  background: var(--k-olive) !important;
  border-color: var(--k-olive) !important;
  color: #fff !important;
}
.pagination > li > a:hover,
.pagination > li > span:hover,
.page-link:hover,
.page-list > li > a:hover {
  background: var(--k-tint) !important;
  border-color: var(--k-olive) !important;
  color: var(--k-deep) !important;
}
.page-item.active .page-link:hover {
  background: var(--k-deep) !important;
  border-color: var(--k-deep) !important;
  color: #fff !important;
}

/* ================================================================
 * v110 — sidebar hierarchy + hide subcategories block
 * (Forked clean from v105 — no mobile experiments)
 * ================================================================ */

/* --- CSS fallback for sidebar expansion (in case JS hasn't loaded) --- */
.block-categories ul.category-sub-menu,
.block-categories .category-sub-menu,
.block-categories li ul,
.block-categories li ul.collapse,
.block-categories li ul.collapse.show,
body .block-categories ul.category-sub-menu,
html body .block-categories ul {
  display: block !important;
  height: auto !important;
  overflow: visible !important;
  visibility: visible !important;
  opacity: 1 !important;
  max-height: none !important;
}

/* Hide collapse toggle buttons entirely */
.block-categories .navbar-toggler,
.block-categories [data-toggle="collapse"],
.block-categories [data-bs-toggle="collapse"],
.block-categories .arrows,
.block-categories .toggle-category,
.block-categories .collapse-icons,
.block-categories .category-arrow {
  display: none !important;
}

/* --- Sidebar visual hierarchy ---
   Customer needs to see at a glance which sub-items belong to Kratom Powder
   vs Kratom Capsules vs Kratom Extracts. Top-level items get bold weight,
   larger font, and a top border to separate the groups. Sub-items get
   indent + smaller + lighter. */

/* Top-level (depth 1: Kratom Powder, Kratom Capsules, Kratom Extracts) */
.block-categories .category-sub-menu > li > a,
.block-categories ul.category-top-menu > li > ul.category-sub-menu > li > a,
.block-categories li > a[data-depth="0"] {
  font-size: 15.5px !important;
  font-weight: 700 !important;
  color: var(--k-deep) !important;
  padding: 14px 0 6px !important;
  margin-top: 4px !important;
  border-top: 1px solid var(--k-border) !important;
  display: block !important;
  letter-spacing: 0.2px !important;
  text-transform: none !important;
}
/* First top-level item: no top border (no need to separate from HOME above) */
.block-categories .category-sub-menu > li:first-child > a {
  border-top: none !important;
  margin-top: 0 !important;
  padding-top: 4px !important;
}

/* Sub-items (depth 2: Red Vein, Veggie Capsules, Gummies, etc.) */
.block-categories .category-sub-menu .category-sub-menu li a,
.block-categories ul ul ul li a,
.block-categories li[data-depth="1"] a,
.block-categories li > a[data-depth="2"] {
  font-size: 13.5px !important;
  font-weight: 400 !important;
  padding: 4px 0 4px 16px !important;
  margin: 0 !important;
  border-top: none !important;
  color: var(--k-deep) !important;
  letter-spacing: 0 !important;
  opacity: 0.85;
  text-transform: none !important;
}
.block-categories .category-sub-menu .category-sub-menu li a:hover,
.block-categories ul ul ul li a:hover {
  color: var(--k-olive) !important;
  opacity: 1;
}

/* Strip list markers */
.block-categories ul,
.block-categories ul ul,
.block-categories li {
  list-style: none !important;
}

/* --- Hide subcategories block on category pages ---
   NARROW: only target the specific #subcategories ID. Broader class
   selectors (.subcategories) hit header navigation elements in some
   PS configurations, taking down the logo/search row. ID-only is safe. */
#subcategories,
section#subcategories,
div#subcategories {
  display: none !important;
}

/* ============================================================
 * v113 — Cart drawer (side-sliding panel)
 *
 * Replaces the previous after-add toast with a richer experience.
 * Slides in from the right, shows full cart contents, allows
 * quantity changes + removal, and provides clear paths to either
 * continue shopping or check out.
 * ============================================================ */

/* Container fills the viewport but is non-interactive when closed */
.k-drawer {
  position: fixed;
  inset: 0;
  z-index: 1080;
  visibility: hidden;
  pointer-events: none;
  transition: visibility 0s linear 0.3s;
}
.k-drawer.is-open {
  visibility: visible;
  pointer-events: auto;
  transition: visibility 0s linear 0s;
}

/* Backdrop — fades in/out */
.k-drawer-overlay {
  position: absolute;
  inset: 0;
  background: rgba(43, 48, 21, 0.45);
  opacity: 0;
  transition: opacity 0.25s ease-out;
}
.k-drawer.is-open .k-drawer-overlay {
  opacity: 1;
}

/* Panel — slides in from right */
.k-drawer-panel {
  position: absolute;
  top: 0;
  right: 0;
  bottom: 0;
  width: 380px;            /* v115: was 420 — too wide, dominated viewport */
  max-width: 100vw;
  background: #ffffff;
  display: flex;
  flex-direction: column;
  box-shadow: -8px 0 32px rgba(0, 0, 0, 0.12);
  transform: translateX(100%);
  transition: transform 0.3s cubic-bezier(0.32, 0.72, 0, 1);
}
.k-drawer.is-open .k-drawer-panel {
  transform: translateX(0);
}

/* Header */
.k-drawer-header {
  flex: 0 0 auto;
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 20px 24px;
  border-bottom: 1px solid #ebe8df;
}
.k-drawer-title {
  font-family: inherit;
  font-size: 18px;
  font-weight: 700;
  color: #2b3015;
  margin: 0;
  letter-spacing: 0.3px;
  text-transform: uppercase;
}
.k-drawer-close {
  border: 0;
  background: transparent;
  color: #2b3015;
  padding: 4px;
  cursor: pointer;
  border-radius: 6px;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: background 0.15s, color 0.15s;
}
.k-drawer-close:hover {
  background: #f3f1ea;
  color: #5b6b22;
}

/* Body — scrollable item list */
.k-drawer-body {
  flex: 1 1 auto;
  overflow-y: auto;
  padding: 0;
  -webkit-overflow-scrolling: touch;
}

/* Empty state */
.k-drawer-empty {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  text-align: center;
  padding: 60px 24px;
  color: #888;
  height: 100%;
}
.k-drawer-empty svg {
  color: #c8c4b3;
  margin-bottom: 16px;
}
.k-drawer-empty p {
  margin: 0;
  font-size: 15px;
}

/* Item row */
.k-drawer-item {
  display: flex;
  gap: 12px;
  padding: 16px 24px;
  border-bottom: 1px solid #f5f3ec;
  align-items: flex-start;
}
.k-drawer-item:last-child {
  border-bottom: 0;
}

.k-drawer-item-image {
  flex: 0 0 64px;
  width: 64px;
  height: 64px;
  border-radius: 6px;
  overflow: hidden;
  background: #f6f5ef;
  border: 1px solid #ebe8df;
}
.k-drawer-item-image img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

.k-drawer-item-info {
  flex: 1 1 auto;
  min-width: 0;
}
.k-drawer-item-name {
  font-size: 14px;
  font-weight: 600;
  color: #2b3015;
  margin: 0 0 4px;
  line-height: 1.3;
}
.k-drawer-item-name a {
  color: inherit;
  text-decoration: none;
}
.k-drawer-item-name a:hover {
  color: #5b6b22;
}
.k-drawer-item-attrs {
  font-size: 12px;
  color: #6c6e5e;
  margin: 0 0 8px;
  line-height: 1.4;
}
.k-drawer-item-attrs span {
  display: inline-block;
}

/* Row: qty stepper on left, price on right */
.k-drawer-item-controls {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
}

.k-drawer-qty {
  display: inline-flex;
  align-items: center;
  border: 1px solid #d8d4c4;
  border-radius: 6px;
  overflow: hidden;
  background: #fff;
}
.k-drawer-qty-btn {
  background: transparent;
  border: 0;
  color: #2b3015;
  width: 28px;
  height: 28px;
  line-height: 28px;
  font-size: 16px;
  font-weight: 600;
  cursor: pointer;
  padding: 0;
  display: flex;
  align-items: center;
  justify-content: center;
}
.k-drawer-qty-btn:hover:not(:disabled) {
  background: #f3f1ea;
  color: #5b6b22;
}
.k-drawer-qty-btn:disabled {
  cursor: not-allowed;
  opacity: 0.4;
}
.k-drawer-qty-value {
  min-width: 28px;
  text-align: center;
  font-size: 14px;
  font-weight: 600;
  color: #2b3015;
  padding: 0 4px;
}

.k-drawer-item-price {
  font-size: 14px;
  font-weight: 700;
  color: #2b3015;
  white-space: nowrap;
}

.k-drawer-item-remove {
  background: transparent;
  border: 0;
  color: #b3a59d;
  padding: 4px 0 0 8px;
  cursor: pointer;
  font-size: 11px;
  text-decoration: underline;
  text-underline-offset: 2px;
  margin-left: auto;
  transition: color 0.15s;
}
.k-drawer-item-remove:hover {
  color: #c0392b;
}

/* Footer */
.k-drawer-footer {
  flex: 0 0 auto;
  padding: 18px 24px 22px;
  border-top: 1px solid #ebe8df;
  background: #fafaf6;
}
.k-drawer-subtotal-row {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  margin-bottom: 4px;
}
.k-drawer-subtotal-label {
  font-size: 14px;
  font-weight: 600;
  color: #2b3015;
  text-transform: uppercase;
  letter-spacing: 0.5px;
}
.k-drawer-subtotal-value {
  font-size: 20px;
  font-weight: 700;
  color: #2b3015;
}
.k-drawer-tax-note {
  font-size: 11px;
  color: #888;
  margin: 0 0 14px;
  text-align: right;
}
.k-drawer-actions {
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.k-drawer .k-drawer-continue,
.k-drawer .k-drawer-checkout {
  width: 100%;
  padding: 12px 18px;
  font-size: 14px;
  font-weight: 600;
  letter-spacing: 0.3px;
  border-radius: 6px;
  text-transform: uppercase;
  text-align: center;
  transition: background 0.15s, color 0.15s, border-color 0.15s;
}
.k-drawer .k-drawer-continue {
  background: #fff;
  color: #2b3015;
  border: 1px solid #d8d4c4;
  cursor: pointer;
}
.k-drawer .k-drawer-continue:hover {
  background: #f3f1ea;
  border-color: #5b6b22;
  color: #5b6b22;
}
.k-drawer .k-drawer-checkout {
  background: #5b6b22;
  border: 1px solid #5b6b22;
  text-decoration: none !important;
  display: flex;
  align-items: center;
  justify-content: center;
  font-weight: 700;
}
/* Force white text on the checkout button across every state. We use:
 *   - 3-level descendant selector + a.k-drawer-checkout (specificity 0,4,1)
 *   - !important on color
 *   - explicit opacity:1 in case something inherits reduced opacity
 *   - color set on direct children via * selector to cover any nested spans
 * This is more aggressive than usual because PS Classic + some other
 * stylesheets we don't control kept winning the cascade. */
.k-drawer .k-drawer-footer a.k-drawer-checkout,
.k-drawer .k-drawer-footer a.k-drawer-checkout:link,
.k-drawer .k-drawer-footer a.k-drawer-checkout:visited,
.k-drawer .k-drawer-footer a.k-drawer-checkout:hover,
.k-drawer .k-drawer-footer a.k-drawer-checkout:focus,
.k-drawer .k-drawer-footer a.k-drawer-checkout:active,
.k-drawer .k-drawer-footer a.k-drawer-checkout * {
  color: #ffffff !important;
  -webkit-text-fill-color: #ffffff !important; /* defeats themes that gradient-fill text */
  opacity: 1 !important;
}
.k-drawer .k-drawer-footer a.k-drawer-checkout svg {
  stroke: #ffffff !important;
}
/* Hover: switch to black background, keep white text — high-contrast CTA pattern */
.k-drawer .k-drawer-footer a.k-drawer-checkout:hover,
.k-drawer .k-drawer-footer a.k-drawer-checkout:focus {
  background: #1a1a1a !important;
  border-color: #1a1a1a !important;
  color: #ffffff !important;
}

/* Disabled state — applied via JS when cart is empty */
.k-drawer .k-drawer-checkout.disabled,
.k-drawer .k-drawer-checkout[aria-disabled="true"] {
  background: #c8c4b3 !important;
  border-color: #c8c4b3 !important;
  pointer-events: none;
  cursor: not-allowed;
}

/* Drawer is loading state */
.k-drawer-body.is-loading {
  opacity: 0.5;
  pointer-events: none;
  transition: opacity 0.15s;
}

/* Mobile: full-screen drawer */
@media (max-width: 480px) {
  .k-drawer-panel {
    width: 100vw;
  }
  .k-drawer-header,
  .k-drawer-item,
  .k-drawer-footer {
    padding-left: 16px;
    padding-right: 16px;
  }
  .k-drawer-actions {
    flex-direction: column-reverse; /* Checkout on top on mobile */
  }
}

/* Body scroll lock for drawer-open state is now applied via inline styles
 * in lockBodyScroll() so we can save+restore scroll position properly.
 * Only kept .k-drawer-open class on body for potential future hooks. */

/* ---------------------------------------------------------------
 * v135: Kill leftover Quick-View hover overlay from classic parent.
 *
 * Classic theme renders a .highlighted-informations container inside
 * each product card. On hover it slides up from the bottom and
 * normally contains the Quick View button + variant swatches. When
 * Quick View is disabled or the button is removed but the container
 * still ships, the empty container slides up as a thick white strip
 * — visible on hover over any product image. This kills it everywhere.
 * --------------------------------------------------------------- */
.thumbnail-container .highlighted-informations,
.product-miniature .highlighted-informations,
.products .highlighted-informations {
    display: none !important;
}
/* Belt-and-braces: cancel the hover transform that classic applies,
 * in case any residual movement leaks through. */
.thumbnail-container:hover .highlighted-informations,
.product-miniature:hover .highlighted-informations {
    bottom: -100% !important;
}

/* ---------------------------------------------------------------
 * v136: Desktop header layout fix — nav same baseline as search,
 *       tighten the logo → nav gap.
 *
 * .header-top-right (75% wide column right of the logo) contains
 * displayTop's output: ps_mainmenu (#_desktop_top_menu / .top-menu)
 * and ps_searchbar (.search-widgets / #search_widget). By default
 * those stack/center because classic theme doesn't enforce a flex
 * row here — the menu is centered inside its own container (huge
 * gap from logo) and the search drops onto a second visual row.
 *
 * Fix: force .header-top-right into a flex row, vertically centered,
 * with menu pushed left (against the logo) and search pinned right.
 * Also override .top-menu's internal centering so its items hug the
 * left edge of the menu container instead of centering themselves.
 * --------------------------------------------------------------- */
.header-top .header-top-right {
    display: flex !important;
    flex-direction: row !important;
    align-items: center !important;
    justify-content: space-between !important;
    gap: 24px;
    flex-wrap: nowrap;
}

/* Menu wrapper fills the available space on the left */
.header-top .header-top-right #_desktop_top_menu,
.header-top .header-top-right .js-top-menu {
    flex: 1 1 auto;
    min-width: 0;
}

/* Override classic's centered top-menu — items now hug the left */
.header-top .header-top-right .top-menu {
    display: flex !important;
    flex-direction: row !important;
    justify-content: flex-start !important;
    align-items: center !important;
    flex-wrap: wrap;
    margin: 0;
    padding: 0;
    list-style: none;
}

/* Search widget sits on the right, fixed minimum width, no float */
.header-top .header-top-right .search-widgets,
.header-top .header-top-right #search_widget {
    flex: 0 0 auto;
    margin: 0 !important;
    float: none !important;
}
.header-top .header-top-right #search_widget {
    width: auto;
    min-width: 260px;
}

/* ---------------------------------------------------------------
 * v137: Close the logo → nav gap and stop the menu wrapping.
 *
 * Background: v134/135 widened the logo column to 25% so a wide
 * 4:1 aspect logo could display at full 70px height. But on a
 * typical 1140px container, 25% reserves ~285px for the logo while
 * the logo's natural rendered width at 70px is usually narrower —
 * leaving a big empty band before the nav starts. It also crunched
 * the menu into 75% of the row, which wasn't enough for 5 items +
 * search at desktop widths → "Contact Us" wrapped to a second row.
 *
 * Fix: let the logo column auto-size to the logo's natural width
 * (capped at 280px max) with a small right-side gutter, and give
 * ALL remaining space to .header-top-right. Force the menu not to
 * wrap, and slightly tighten menu item horizontal padding so 5
 * items + search comfortably fit at ≥992px widths.
 * --------------------------------------------------------------- */
.header-top .row > #_desktop_logo,
.header-top #_desktop_logo {
    flex: 0 0 auto !important;
    width: auto !important;
    max-width: 280px !important;
    padding-right: 24px;
}
.header-top .row > .header-top-right,
.header-top .header-top-right {
    flex: 1 1 auto !important;
    width: auto !important;
    max-width: none !important;
}

/* Stop the top menu from wrapping to a second line */
.header-top .header-top-right .top-menu {
    flex-wrap: nowrap !important;
}

/* Tighten menu item spacing so all items + search fit on one row */
.header-top .header-top-right .top-menu > li > a,
.header-top .header-top-right #_desktop_top_menu .top-menu > li > a {
    padding-left: 12px !important;
    padding-right: 12px !important;
}

/* Tighten the gap between menu and search slightly */
.header-top .header-top-right {
    gap: 16px;
}

/* ---------------------------------------------------------------
 * v138: Constrain dropdown sub-menus to the width of the nav strip.
 *
 * Background: the header.tpl applies Bootstrap's `position-static`
 * class to .header-top-right. That removes it as a positioning
 * ancestor, so the sub-menu's `position: absolute` (set by classic
 * theme on .top-menu .sub-menu) walks further up the DOM tree and
 * anchors itself to .container or <body> — meaning the dropdown
 * panel spans the FULL header width, including the logo column and
 * search bar. Visually weird.
 *
 * Fix: turn #_desktop_top_menu (the menu wrapper inside .header-top-
 * right) into a positioning context. The sub-menu will then anchor
 * to it, with left/right=0 spanning only the nav strip's width.
 * --------------------------------------------------------------- */
.header-top .header-top-right #_desktop_top_menu {
    position: relative !important;
}

/* Sub-menu now spans only the menu strip, not the full header */
.header-top .header-top-right #_desktop_top_menu .sub-menu,
.header-top .header-top-right #_desktop_top_menu .top-menu .sub-menu {
    left: 0 !important;
    right: 0 !important;
    width: auto !important;
    max-width: 100% !important;
}

/* ---------------------------------------------------------------
 * v139: Compact pipe-separated sub-menu — horizontal items with
 *       vertical-line dividers, minimal spacing.
 *
 * Replaces the default sub-menu layout (wide-spaced items that
 * don't all fit in the constrained nav-strip width from v138) with
 * a tight horizontal list:
 *
 *   Red Vein | Green Vein | White Vein | Yellow Vein | Specialty…
 *
 * Items wrap to a second row only if the viewport gets very narrow.
 * --------------------------------------------------------------- */
.header-top .header-top-right #_desktop_top_menu .top-menu .sub-menu {
    display: flex !important;
    flex-direction: row !important;
    flex-wrap: wrap;
    justify-content: center;
    align-items: center;
    padding: 8px 16px !important;
    margin: 0 !important;
    list-style: none;
}

.header-top .header-top-right #_desktop_top_menu .top-menu .sub-menu > li {
    flex: 0 0 auto;
    padding: 0 !important;
    margin: 0 !important;
    border-right: 1px solid var(--k-border, #d6dac8);
    line-height: 1.2;
}

.header-top .header-top-right #_desktop_top_menu .top-menu .sub-menu > li:last-child {
    border-right: none;
}

/* Tight padding on each link, no wrapping within an item */
.header-top .header-top-right #_desktop_top_menu .top-menu .sub-menu > li > a {
    padding: 4px 14px !important;
    white-space: nowrap;
    display: inline-block;
    line-height: 1.3;
}

/* ---------------------------------------------------------------
 * v140: Sub-menu left-anchored, organic right-growth.
 *
 * v139 used justify-content:center which packed items in the middle
 * of the nav-strip-width container — when only a few items existed,
 * a big empty band appeared on both sides (the "thumb-sized space"
 * issue). Visually disconnected from the parent nav item too.
 *
 * Fix: left-anchor the sub-menu, size it to its content (not the
 * full nav strip), and let it grow rightward freely — overflowing
 * into the search-bar area when sub-categories demand more room.
 * --------------------------------------------------------------- */
.header-top .header-top-right #_desktop_top_menu .top-menu .sub-menu {
    justify-content: flex-start !important;
    flex-wrap: nowrap !important;
    width: max-content !important;
    max-width: none !important;
    left: 0 !important;
    right: auto !important;
}

/* ---------------------------------------------------------------
 * v141: KILL the inherited flex-grow on sub-menu items.
 *
 * The screenshot showed sub-categories visually aligned under the
 * PARENT top-menu items (Red Vein roughly under Kratom Powder,
 * Green Vein under Kratom Capsules, etc.) with massive gaps. That
 * pattern is what flex-grow:1 produces — each <li> stretches to
 * equal width across the sub-menu container, not the tight content-
 * width layout I intended.
 *
 * This block re-asserts EVERY flex dimension on .sub-menu > li
 * with !important so the inherited stretching is fully suppressed.
 * Also hardcodes the pipe-separator border colour (the previous
 * CSS variable may not have resolved in classic context) and forces
 * the sub-menu UL's gap to 0 so flex gap can't add invisible space.
 * --------------------------------------------------------------- */
.header-top .header-top-right #_desktop_top_menu .top-menu .sub-menu {
    display: flex !important;
    flex-direction: row !important;
    flex-wrap: nowrap !important;
    justify-content: flex-start !important;
    align-items: center !important;
    gap: 0 !important;
    column-gap: 0 !important;
    row-gap: 0 !important;
    width: max-content !important;
    max-width: none !important;
    padding: 8px 16px !important;
    margin: 0 !important;
    list-style: none !important;
    left: 0 !important;
    right: auto !important;
}

.header-top .header-top-right #_desktop_top_menu .top-menu .sub-menu > li {
    display: inline-flex !important;
    flex: 0 0 auto !important;
    flex-grow: 0 !important;
    flex-shrink: 0 !important;
    flex-basis: auto !important;
    width: auto !important;
    min-width: 0 !important;
    max-width: none !important;
    padding: 0 !important;
    margin: 0 !important;
    border-right: 1px solid #bcc4b0 !important;
    line-height: 1.2 !important;
    text-align: left !important;
    box-sizing: border-box;
}

.header-top .header-top-right #_desktop_top_menu .top-menu .sub-menu > li:last-child {
    border-right: none !important;
}

.header-top .header-top-right #_desktop_top_menu .top-menu .sub-menu > li > a {
    padding: 4px 14px !important;
    margin: 0 !important;
    white-space: nowrap !important;
    display: inline-block !important;
    line-height: 1.3 !important;
}

/* ---------------------------------------------------------------
 * v142: Target the RIGHT element for the dropdown.
 *
 * Root cause for v138–v141 failing: PrestaShop's standard
 * ps_mainmenu module renders the dropdown as a NESTED <ul> with
 * class="top-menu" data-depth="1" — it does NOT add a .sub-menu
 * class. So every selector targeting .top-menu .sub-menu has been
 * matching zero elements. The huge spacing visible in screenshots
 * is classic theme's untouched default behaviour.
 *
 * This version targets the actual rendered structure using both
 * data-depth attribute selectors AND nested .top-menu descendant
 * selectors, so it works regardless of which ps_mainmenu version
 * is installed.
 * --------------------------------------------------------------- */

/* The nested dropdown UL — left-anchored, content-width, flex row */
.header-top .header-top-right #_desktop_top_menu .top-menu[data-depth="1"],
.header-top .header-top-right #_desktop_top_menu .top-menu .top-menu {
    display: flex !important;
    flex-direction: row !important;
    flex-wrap: nowrap !important;
    justify-content: flex-start !important;
    align-items: center !important;
    gap: 0 !important;
    column-gap: 0 !important;
    row-gap: 0 !important;
    width: max-content !important;
    max-width: none !important;
    min-width: 0 !important;
    padding: 8px 16px !important;
    margin: 0 !important;
    list-style: none !important;
    left: 0 !important;
    right: auto !important;
    position: absolute !important;
    top: 100% !important;
}

/* Each dropdown item — content-width, NO flex-grow stretching */
.header-top .header-top-right #_desktop_top_menu .top-menu[data-depth="1"] > li,
.header-top .header-top-right #_desktop_top_menu .top-menu .top-menu > li {
    display: inline-flex !important;
    flex: 0 0 auto !important;
    flex-grow: 0 !important;
    flex-shrink: 0 !important;
    flex-basis: auto !important;
    width: auto !important;
    min-width: 0 !important;
    max-width: none !important;
    padding: 0 !important;
    margin: 0 !important;
    border-right: 1px solid #bcc4b0 !important;
    line-height: 1.2 !important;
    text-align: left !important;
    box-sizing: border-box;
}

.header-top .header-top-right #_desktop_top_menu .top-menu[data-depth="1"] > li:last-child,
.header-top .header-top-right #_desktop_top_menu .top-menu .top-menu > li:last-child {
    border-right: none !important;
}

/* Dropdown link padding */
.header-top .header-top-right #_desktop_top_menu .top-menu[data-depth="1"] > li > a,
.header-top .header-top-right #_desktop_top_menu .top-menu .top-menu > li > a {
    padding: 4px 14px !important;
    margin: 0 !important;
    white-space: nowrap !important;
    display: inline-block !important;
    line-height: 1.3 !important;
}

/* ---------------------------------------------------------------
 * v143: Dropdown background + drop the pipe separators.
 *
 * v142 fixed the spacing but the dropdown UL itself was transparent
 * — text floated over whatever was below the header. Also with the
 * spacing now sane, the pipe separators between items aren't needed
 * and looked over-engineered.
 * --------------------------------------------------------------- */

/* Solid white panel with subtle border + shadow, matching theme look */
.header-top .header-top-right #_desktop_top_menu .top-menu[data-depth="1"],
.header-top .header-top-right #_desktop_top_menu .top-menu .top-menu {
    background: #fff !important;
    border: 1px solid #e0e6dc !important;
    border-radius: 0 0 6px 6px !important;
    box-shadow: 0 6px 18px rgba(46, 51, 32, 0.10) !important;
}

/* No more pipe separators between items */
.header-top .header-top-right #_desktop_top_menu .top-menu[data-depth="1"] > li,
.header-top .header-top-right #_desktop_top_menu .top-menu .top-menu > li {
    border-right: none !important;
}
/* "Write your review" → top-right corner of the info column, green */
.product-container > .col-md-6:last-child {
  position: relative;
}
.product-comments-additional-info {
  position: absolute;
  top: 0;
  right: 0;
  margin: 0;
  z-index: 5;
}
.product-comments-additional-info .post-product-comment,
.product-comments-additional-info .post-product-comment.btn-comment {
  background: #fff;
  color: #5d7a1f;
  border: 1px solid #cfdab5;
  border-radius: 6px;
  padding: 6px 12px;
  font-size: 13px;
  font-weight: 600;
  box-shadow: none;
  text-transform: none;
}
.product-comments-additional-info .post-product-comment:hover,
.product-comments-additional-info .post-product-comment.btn-comment:hover {
  background: #f4f7ee;
  border-color: #7C9039;
  color: #4c6519;
}
.product-comments-additional-info .post-product-comment .material-icons {
  color: #7C9039;
  font-size: 16px;
  vertical-align: middle;
}

/* Keep the product title clear of the absolutely-positioned review button */
.product-container > .col-md-6:last-child > .h1 {
  padding-right: 160px;
}

/* ============================================================
   v162 — productcomments buttons: real selectors edition.
   v161 targeted .btn-primary, but productcomments doesn't use
   that class. Real classes (from PS productcomments module
   source on GitHub):
     • Submit "Send"      → .btn-comment.btn-comment-big
     • Cancel             → .btn-comment-inverse.btn-comment-big
     • "Write a review"   → .btn-comment (corner + empty state)
     • Empty-state CTA    → same .btn-comment opening the modal

   .btn-comment ships with the module's CSS painting it blue.
   Override with kratoma green, !important to beat module CSS
   load order (modules' CSS loads after the theme's by default).
   ============================================================ */

/* Primary review buttons (green) — "Write a review" / "Be the first to write a review" / "Send" */
.btn-comment,
.btn-comment-big,
.btn.btn-comment,
a.btn-comment,
button.btn-comment,
#post-product-comment-modal .btn-comment,
#post-product-comment-modal button[type="submit"] {
  background-color: #7C9039 !important;
  border: 1px solid #7C9039 !important;
  color: #ffffff !important;
  text-transform: none !important;
  font-weight: 600;
  box-shadow: none !important;
  border-radius: 6px;
  padding: 8px 18px;
  transition: background-color 0.15s ease, border-color 0.15s ease;
}
.btn-comment:hover,
.btn-comment:focus,
.btn-comment-big:hover,
.btn-comment-big:focus,
.btn.btn-comment:hover,
a.btn-comment:hover,
button.btn-comment:hover,
#post-product-comment-modal .btn-comment:hover,
#post-product-comment-modal button[type="submit"]:hover {
  background-color: #6a7d31 !important;
  border-color: #6a7d31 !important;
  color: #ffffff !important;
  text-decoration: none;
}

/* Inverse (Cancel) — ghost style, neutral grey */
.btn-comment-inverse,
.btn-comment-inverse.btn-comment-big,
#post-product-comment-modal .btn-comment-inverse {
  background-color: #ffffff !important;
  border: 1px solid #d9d9d9 !important;
  color: #555555 !important;
  text-transform: none !important;
  font-weight: 500;
  box-shadow: none !important;
  border-radius: 6px;
  padding: 8px 18px;
}
.btn-comment-inverse:hover,
.btn-comment-inverse:focus,
#post-product-comment-modal .btn-comment-inverse:hover {
  background-color: #f4f4f4 !important;
  border-color: #c0c0c0 !important;
  color: #222222 !important;
}

/* Modal close (×) button — keep neutral, not blue */
#post-product-comment-modal .close,
#post-product-comment-modal button.close {
  color: #555555;
  opacity: 0.7;
}
#post-product-comment-modal .close:hover {
  color: #222222;
  opacity: 1;
}

/* Star rating in modal — kratoma green when filled */
#post-product-comment-modal .star-on,
#post-product-comment-modal .star.checked,
#post-product-comment-modal .grade-stars .star-on,
.product-comment-modal .star-on {
  color: #7C9039 !important;
}

/* v164 — pen icon on the green review button.
   v145 set material-icons inside .post-product-comment to green
   (which looked fine when the button background was white). After
   v162 turned the button green, the pen icon was green-on-green
   and invisible. Force it to white wherever it sits on a green
   .btn-comment background. !important needed to beat v145's
   higher-specificity (.product-comments-additional-info .post-product-comment .material-icons). */
.btn-comment .material-icons,
.btn-comment-big .material-icons,
a.btn-comment .material-icons,
button.btn-comment .material-icons,
.product-comments-additional-info .btn-comment .material-icons,
.product-comments-additional-info .post-product-comment .material-icons {
  color: #ffffff !important;
}

/* Mobile: drop the review button back into normal flow */
@media (max-width: 767px) {
  .product-comments-additional-info {
    position: static;
    margin: 10px 0;
  }
  .product-container > .col-md-6:last-child > .h1 {
    padding-right: 0;
  }
}/* the price itself stays large; only the cashback/extra line is shrunk */

/* ============================================================
   v158 — image-zoom modal DISABLED entirely.
   Clicking the product cover no longer opens the big-image modal.
   Removes the entire class of bugs we hit (white sliver, broken
   thumb arrows, layout glitches) by removing the feature itself.
   Customers see the product at its normal size — no second-class
   zoom UI to maintain.

   Three layers of defense:
     1. Hide the magnifier-icon overlay so there's no visual cue
        that clicking does anything special
     2. Reset cursor to default (was 'zoom-in')
     3. Hide the modal itself + its backdrop globally so even if
        something somewhere fires .modal('show') it's not visible

   Thumbnail clicking (switch which image shows in main cover)
   keeps working — that's useful UX. Only the cover-click-to-zoom
   is removed.
   ============================================================ */

/* 1. Hide the hover overlay (magnifier icon) so nothing hints "click me to zoom" */
#product .product-cover .layer,
#product .product-cover .layer * {
  display: none !important;
}

/* 2. Default cursor — was 'zoom-in' / 'pointer' on cover */
#product .product-cover,
#product .product-cover img,
#product .images-container .product-cover {
  cursor: default !important;
}

/* 3. Hide the modal entirely. Even if JS still fires .modal('show'),
   the modal + its backdrop never render visually. */
#product-modal,
.product-images-modal,
.js-product-images-modal {
  display: none !important;
  visibility: hidden !important;
}
/* When PS tries to open the modal it appends .modal-open + a backdrop to
   body. Catch that too — only when triggered by our specific modal,
   not for blockcart/quickview which legitimately use backdrops. */
body.modal-open[data-bs-target="#product-modal"],
body.product-modal-open {
  overflow: auto !important;
}.k-trust-cashback > div {
  /* the loyalty hook's wrapping div: strip its inline margin/font */
  margin: 0 !important;
  padding: 0 !important;
  font-size: 13px !important;
  line-height: 1.4 !important;
  display: flex !important;
  align-items: center !important;
  gap: 6px !important;
}
.k-trust-cashback,
.k-trust-cashback * {
  font-size: 13px !important;
  line-height: 1.4 !important;
}
.k-trust-cashback svg {
  width: 18px !important;
  height: 18px !important;
  flex-shrink: 0;
}
.k-trust-cashback strong { font-weight: 700 !important; }

/* ============================================================
   v153 — bulletproof old-cashback-location hide.
   Globally remove the tax-shipping-delivery-label everywhere
   (was previously only hidden inside the mobile media query —
   bug). The cashback now lives only in the trust row.
   Belt-and-suspenders: even if a parent template renders, this
   CSS kills the old location across all viewports.
   ============================================================ */
#product .tax-shipping-delivery-label,
.product-prices .tax-shipping-delivery-label,
.product-information .tax-shipping-delivery-label,
body#product .tax-shipping-delivery-label {
  display: none !important;
  visibility: hidden !important;
  height: 0 !important;
  margin: 0 !important;
  padding: 0 !important;
}

/* ============================================================
   v153 — side-cart drawer cashback indicator.
   Shown above the subtotal in the drawer footer (2% of items
   subtotal — matches the storefront's site-wide cashback rate).
   ============================================================ */
.k-drawer-cashback-row {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 8px 12px;
  margin: 0 0 10px 0;
  background: #f4f7ec;
  border-radius: var(--k-radius-sm);
  font-size: 13px;
  color: #5e6e2c;
}
.k-drawer-cashback-row svg {
  width: 16px;
  height: 16px;
  flex-shrink: 0;
  color: #7C9039;
}
.k-drawer-cashback-row strong {
  color: #7C9039;
  font-weight: 700;
}
.k-drawer-cashback-row.is-empty { display: none; }

/* ============================================================
   v154 — product thumbnail strip layout fix.
   - Center thumbs horizontally below the cover image
   - Hide the < > arrow navigation since with 3 thumbs they're
     redundant AND PS's arrow JS doesn't wire up in our theme
   - Hide any caption / label text under thumbs (the "errors"
     showing as filename-like text below each thumb)
   ============================================================ */

/* Center the thumb strip under the big image */
#product .product-images,
#product .images-container .product-images,
#product .js-qv-product-images {
  display: flex !important;
  justify-content: center !important;
  align-items: center !important;
  flex-wrap: wrap !important;
  gap: 10px !important;
  margin: 14px 0 0 0 !important;
  padding: 0 !important;
  list-style: none !important;
}

#product .product-images .thumb-container,
#product .product-images li {
  list-style: none !important;
  margin: 0 !important;
  padding: 0 !important;
  display: inline-block !important;
}

/* Hide the < > arrow navigation buttons — they don't work in our theme
   AND with only 3 thumbs there's nothing to scroll anyway. */
#product .product-images .arrow-up,
#product .product-images .arrow-down,
#product .product-images-arrow,
#product .scroll-box-arrows,
#product .scroll-box-arrows .left,
#product .scroll-box-arrows .right,
#product .scroll-button,
#product .scroll-button.scroll-prev,
#product .scroll-button.scroll-next,
.product-images .arrow-up,
.product-images .arrow-down {
  display: none !important;
  visibility: hidden !important;
}

/* Hide any thumbnail caption / filename text — these were the
   "errors below small images" Luke flagged. PS classic and some
   modules inject alt text or captions below each thumb; not
   useful UX, just visual noise. */
#product .product-images .thumb-container figcaption,
#product .product-images figcaption,
#product .product-images .thumb-container .thumb-caption,
#product .product-images .thumb-caption,
#product .product-images .image-caption,
#product .image-caption,
#product .product-images .alt-text {
  display: none !important;
}

/* Tighten the thumb tile itself — clean square, no extra spacing */
#product .product-images .thumb-container {
  width: auto !important;
  border: none !important;
  background: transparent !important;
}
#product .product-images .thumb {
  margin: 0 !important;
}



/* ============================================================
   v188 — Inline SVG icon styles + classic CSS pseudo-element overrides.
   ------------------------------------------------------------
   Templates we've overridden now render <svg class="k-icon">...</svg>
   instead of <i class="material-icons">...</i>. This block:

   1. Adds a small baseline rule for .k-icon to keep alignment consistent
      across all the templates we've patched.

   2. Overrides classic's CSS pseudo-element icon rules. Those don't go
      through templates — they're injected by classic's CSS itself via
      content:"\E5CE" etc. We have to replace them at the CSS level by
      redeclaring the same selector with content:"" and a background-image
      SVG.

   Phase-A coverage:
     - Templates overridden: pagination, miniatures/product, cart-detailed-product-line,
       our 4 own checkout templates (cart-voucher, shipping, addresses, form-fields)
     - CSS pseudo-elements overridden: bootstrap-touchspin up/down arrows,
       product-flag online_only star (which kratoma doesn't use → hidden).

   Material Icons font is STILL loaded for now — non-overridden templates
   still need it. After Phase B+C+D cover all remaining customer-facing
   templates, we'll remove the @font-face declaration from classic theme.css.
   ============================================================ */

/* Baseline alignment for inline SVG icons in our templates. */
.k-icon {
  display: inline-block;
  vertical-align: middle;
  flex-shrink: 0;
}

/* ---- Touchspin quantity stepper +/- arrows ----
   Classic has:
     .bootstrap-touchspin .input-group-btn-vertical .touchspin-up::after { content: "\E5CE"; font-family: "Material Icons" }
     .bootstrap-touchspin .input-group-btn-vertical .touchspin-down::after { content: "\E5CF"; font-family: "Material Icons" }
   We override each with an SVG background-image. Color is hardcoded as
   var(--k-deep) #2E3320 (URL-encoded as %232E3320) since background-image
   can't use currentColor.

   History:
   v194 tried to flex-center the buttons for pixel-perfect alignment,
   but the combination of padding:0 + fixed-size inner <i> collapsed
   the buttons entirely and the chevrons disappeared. Reverted to
   v188's known-working CSS — there's a half-pixel cosmetic asymmetry
   between up/down baselines, but the icons are visible and clickable. */
.bootstrap-touchspin .input-group-btn-vertical .touchspin-up::after,
.bootstrap-touchspin .input-group-btn-vertical .touchspin-down::after {
  content: '' !important;
  font-family: inherit !important;
  display: inline-block;
  width: 14px;
  height: 14px;
  background-repeat: no-repeat;
  background-position: center;
  background-size: contain;
  vertical-align: middle;
}
.bootstrap-touchspin .input-group-btn-vertical .touchspin-up::after {
  background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%232E3320' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='18 15 12 9 6 15'/%3E%3C/svg%3E");
}
.bootstrap-touchspin .input-group-btn-vertical .touchspin-down::after {
  background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%232E3320' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");
}

/* ---- Hide classic's "online_only" product flag pseudo-element ----
   Classic uses .product-flags li.product-flag.online-only::before with
   content:"\E30A" (star). Kratoma doesn't sell online-only products,
   so this rule fires never — hide preemptively to avoid Material Icons
   font being needed for it. */
.product-flags li.product-flag.online-only::before {
  content: '' !important;
  font-family: inherit !important;
  display: none;
}


/* ============================================================
   v192 — Inline SVG icon positioning fixes
   ------------------------------------------------------------
   v191 replaced <i class="material-icons"> elements with <svg
   class="k-icon">. Some classic CSS rules used the `i` element
   selector or the `.material-icons` class for sizing/positioning,
   so the SVG replacements lost layout where the icons rendered
   inline rather than absolutely-positioned or block-sized.

   This block adds the missing positioning rules with SVG-aware
   selectors so the icons sit the way they used to.
   ============================================================ */

/* ---- 1. Searchbar icons (ps_searchbar.tpl) ----
   The bare <i class="material-icons search"> originally rendered as
   inline glyphs that classic positioned via its absolute rules on
   button[type=submit]. Since the template uses bare elements (no
   button wrapper), classic's positioning never actually applied —
   the icons stacked next to the input. Make our SVG version place
   the magnifier on the left, the clear-X on the right (inside),
   and add padding to the input so its text isn't underneath them. */
#search_widget,
.search-widgets {
  position: relative;
}
#search_widget form,
.search-widgets form {
  position: relative;
  display: flex;
  align-items: center;
}
#search_widget form input[type="text"],
.search-widgets form input[type="text"] {
  flex: 1;
  padding-left: 2.5rem;
  padding-right: 2.2rem;
}
#search_widget form svg.k-icon.search,
.search-widgets form svg.k-icon.search {
  position: absolute;
  left: 0.75rem;
  top: 50%;
  transform: translateY(-50%);
  color: var(--k-text-soft, #7a7a7a);
  pointer-events: none;
  z-index: 2;
}
#search_widget form svg.k-icon.clear,
.search-widgets form svg.k-icon.clear {
  position: absolute;
  right: 0.6rem;
  top: 50%;
  transform: translateY(-50%);
  color: var(--k-text-soft, #7a7a7a);
  cursor: pointer;
  z-index: 2;
}
/* Subtle hover state on the clear X */
#search_widget form svg.k-icon.clear:hover,
.search-widgets form svg.k-icon.clear:hover {
  color: var(--k-deep, #2E3320);
}

/* ---- 2. My account dashboard tile icons (customer/my-account.tpl) ----
   Classic CSS was:
     .page-my-account #content .links a i {
       display: block; width: 100%; padding-bottom: 3.4rem;
       font-size: 2.6rem; color: #232323
     }
   That `i { }` selector doesn't match our <svg>. Reproduce the same
   layout (block, centered, generous spacing below) with an SVG-aware
   selector so tiles match the kratomaloyal CASHBACK tile in
   visual weight. */
.page-my-account #content .links a svg.k-icon {
  display: block;
  width: 44px;
  height: 44px;
  margin: 0 auto 1.5rem auto;
  color: var(--k-deep, #232323);
  stroke-width: 1.5;
}
/* On hover keep the original color shift */
.page-my-account #content .links a:hover svg.k-icon {
  color: var(--k-olive, #7C9039);
}


/* ============================================================
   v198 — Product gallery: swipeable carousel
   ------------------------------------------------------------
   Replaces classic's cover + thumb strip with a swipeable
   horizontal carousel. All product images become slides, each
   100% width, with native CSS scroll-snap providing the swipe
   gesture. No carousel library needed.

   Components:
     .k-product-gallery   — outer relative-positioned container
     .k-gallery-track     — horizontally scrolling flex row
     .k-gallery-slide     — each slide, 100% width, aspect 1/1
     .k-gallery-arrow     — desktop prev/next buttons (hidden mobile)
     .k-gallery-dots      — pagination indicator
     .k-thumbs-hidden     — legacy <ul> kept in DOM but display:none
   ============================================================ */

.k-product-gallery {
  position: relative;
  overflow: hidden;
  border-radius: var(--k-radius);
  background: rgba(0, 0, 0, 0.02);
}

/* The scrolling track. Hide scrollbar — the dots are the UI. */
.k-gallery-track {
  display: flex;
  overflow-x: auto;
  overflow-y: hidden;
  scroll-snap-type: x mandatory;
  -webkit-overflow-scrolling: touch;
  scrollbar-width: none;
}
.k-gallery-track::-webkit-scrollbar {
  display: none;
}

/* Each slide takes the full width of the gallery and snaps. */
.k-gallery-slide {
  flex: 0 0 100%;
  scroll-snap-align: start;
  scroll-snap-stop: always;
  aspect-ratio: 1 / 1;
  position: relative;
}

.k-gallery-slide picture {
  display: block;
  width: 100%;
  height: 100%;
}

.k-gallery-img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  cursor: zoom-in;
}

/* Desktop arrow buttons. 38px circles with subtle background.
   Hidden by default, fade in on hover of the gallery container. */
.k-gallery-arrow {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  width: 38px;
  height: 38px;
  padding: 0;
  background: rgba(255, 255, 255, 0.9);
  border: 1px solid rgba(0, 0, 0, 0.08);
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  z-index: 2;
  color: var(--k-deep, #2E3320);
  opacity: 0;
  transition: opacity 0.18s, background 0.15s;
}
.k-product-gallery:hover .k-gallery-arrow {
  opacity: 1;
}
.k-gallery-arrow:hover {
  background: #fff;
}
.k-gallery-arrow:focus-visible {
  opacity: 1;
  outline: 2px solid var(--k-olive, #7C9039);
  outline-offset: 2px;
}
.k-gallery-prev { left: 12px; }
.k-gallery-next { right: 12px; }

/* Hide arrows on mobile — swipe IS the gesture there. */
@media (max-width: 768px) {
  .k-gallery-arrow {
    display: none !important;
  }
}

/* Pagination dots — pill-shaped container with white dots */
.k-gallery-dots {
  position: absolute;
  bottom: 12px;
  left: 50%;
  transform: translateX(-50%);
  display: flex;
  gap: 6px;
  padding: 6px 10px;
  background: rgba(0, 0, 0, 0.35);
  border-radius: 999px;
  z-index: 2;
  pointer-events: auto;
}
.k-gallery-dot {
  width: 6px;
  height: 6px;
  padding: 0;
  border-radius: 50%;
  background: rgba(255, 255, 255, 0.55);
  border: none;
  cursor: pointer;
  transition: background 0.15s, transform 0.15s;
}
.k-gallery-dot:hover {
  background: rgba(255, 255, 255, 0.85);
}
.k-gallery-dot.k-active {
  background: #fff;
  transform: scale(1.3);
}
.k-gallery-dot:focus-visible {
  outline: 2px solid var(--k-olive, #7C9039);
  outline-offset: 2px;
}

/* Hide the legacy thumbnail list — kept in DOM for PS variant
   logic + zoom modal to read its data-* attrs, but invisible. */
.k-thumbs-hidden {
  display: none !important;
}

/* Hide classic's scroll-box-arrows just in case anything renders them */
#main .images-container .scroll-box-arrows {
  display: none !important;
}


/* ============================================================
   v204 — Compact product action row + price to right
   ============================================================
   What this does:
   1. Wraps .product-variants and .product-add-to-cart in a
      .k-action-row container (via product.tpl block override).
   2. Uses display:contents on the inner wrappers so qty input
      and add-to-cart button become flex peers with the size
      selector.
   3. Mobile (<576px): Size + Qty share row 1, Add-to-Cart row 2.
   4. Desktop (≥576px): Size + Qty + Add-to-Cart all on row 1.
   5. Size selector and Qty input forced to same height (44px).
   6. Tighter spacing between price and the action row.
   7. Desktop only: price floats to top-right corner via abs pos.
   8. Narrowed material-icons catch-all that uses :not(:empty)
      to avoid hiding touchspin chevrons (which use .material-icons
      class but have empty content — icon comes from ::after).
   ============================================================ */

/* === The action row container === */

.k-action-row {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-end;
  gap: 12px;
  margin: 0.5rem 0;
}

/* === Size selector (column 1) === */

.k-action-row .product-variants {
  flex: 0 1 auto;
  margin: 0 !important;
  order: 1;
  min-width: 0;
}
.k-action-row .product-variants .product-variants-item {
  margin: 0 !important;
}
.k-action-row .product-variants .control-label {
  display: block;
  margin: 0 0 4px 0;
  font-size: 0.85rem;
  font-weight: 500;
  color: var(--k-deep);
}
.k-action-row .product-variants select,
.k-action-row .product-variants .input-color {
  height: 44px;
}

/* === Add-to-cart wrapper: transparent for layout === */

.k-action-row .product-add-to-cart {
  display: contents;
}
.k-action-row .product-add-to-cart > .product-quantity {
  display: contents;
}

/* === Quantity column (label inside .qty stacks above input) === */

.k-action-row .product-add-to-cart .qty {
  flex: 0 0 auto;
  order: 2;
  margin: 0;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
}
.k-action-row .qty .control-label {
  display: block;
  margin: 0 0 4px 0;
  font-size: 0.85rem;
  font-weight: 500;
  color: var(--k-deep);
}

/* Force the qty input + touchspin wrapper to 44px height */
.k-action-row .qty input[type="number"],
.k-action-row .qty input#quantity_wanted,
.k-action-row .qty .input-group.bootstrap-touchspin,
.k-action-row .qty .bootstrap-touchspin {
  height: 44px;
}
.k-action-row .qty .input-group-btn-vertical {
  height: 44px;
}
.k-action-row .qty .input-group-btn-vertical button {
  height: 22px;  /* half so up+down stack to 44 */
}

/* === Add-to-cart button (column 3) === */

.k-action-row .product-add-to-cart .add {
  flex: 1 1 220px;
  order: 3;
  margin: 0;
}
.k-action-row .product-add-to-cart .add .add-to-cart {
  width: 100%;
  height: 44px;
}

/* Other hooks inside .product-quantity (wishlist etc.) — leave them */
.k-action-row .product-add-to-cart > .product-quantity > *:not(.qty):not(.add) {
  flex: 0 0 auto;
  order: 4;
}

/* Availability + min-quantity messages: full row BELOW the action row */
.k-action-row .product-add-to-cart > #product-availability,
.k-action-row .product-add-to-cart > .js-product-availability,
.k-action-row .product-add-to-cart > .product-minimal-quantity {
  flex: 1 1 100%;
  order: 5;
  margin: 0.25rem 0 0 0;
}

/* === Mobile: Size + Qty share row 1, Add-to-Cart full row 2 === */

@media (max-width: 575.98px) {
  .k-action-row .product-variants {
    flex: 1 1 calc(50% - 6px);
    min-width: 0;
  }
  .k-action-row .product-add-to-cart .qty {
    flex: 1 1 calc(50% - 6px);
    min-width: 0;
  }
  .k-action-row .product-add-to-cart .add {
    flex: 1 1 100%;
  }
}

/* === Tighten gap between price and action row === */

.product-information .product-prices {
  margin-bottom: 0.5rem !important;
}
.product-information .product-actions {
  margin-top: 0.5rem !important;
}

/* === Desktop only: price floats to top-right of name === */

@media (min-width: 768px) {
  /* Try multiple potential parent containers to be robust */
  .product-information,
  #main .col-md-6:last-child,
  #main .row > div:nth-child(2) {
    position: relative;
  }
  /* Position .product-prices absolutely top-right */
  .product-information .product-prices,
  .product-information .js-product-prices,
  #main .col-md-6 > .product-prices,
  #main .col-md-6 .product-prices.js-product-prices {
    position: absolute;
    top: 0;
    right: 0;
    margin: 0;
    text-align: right;
    z-index: 1;
  }
  /* Padding-right on H1 to keep title from overflowing into price */
  .product-information h1.h1,
  #main h1.h1,
  .page-header h1.h1 {
    padding-right: 160px;
  }
}

/* === Narrowed material-icons hide (does NOT hit touchspin) === */

.material-icons:not(:empty),
i.material-icons:not(:empty) {
  display: none !important;
}


/* ============================================================
   v205 — Action row refinements
   ------------------------------------------------------------
   v204 got the layout right but the touchspin wrapper rendered
   taller than the size dropdown (classic's defaults for input
   + button stack don't naturally compose to 44px), and the
   Add-to-Cart button was too dominant on desktop (flex-grew
   to fill the entire remaining row).
   
   Three precise fixes:
   1. Force all touchspin components to compose to exactly 44px
      with !important — input is 44px, button stack is 44px with
      two 22px buttons, all bordered consistently.
   2. Cap the Add-to-Cart button at 280px max width on desktop
      so it doesn't dominate the row visually. Mobile keeps full
      width.
   3. Give the size dropdown a 120px min-width so it has visual
      weight beside the qty input.
   ============================================================ */

/* === Force matching heights on size selector === */
.k-action-row .product-variants select,
.k-action-row .product-variants .input-color {
  height: 44px !important;
  min-width: 120px;
  box-sizing: border-box;
}

/* === Force touchspin to compose to exactly 44px === */
.k-action-row .qty .input-group.bootstrap-touchspin,
.k-action-row .qty .bootstrap-touchspin {
  height: 44px !important;
  display: inline-flex !important;
  align-items: stretch !important;
  width: auto !important;
  box-sizing: border-box;
}

.k-action-row .qty input[type="number"],
.k-action-row .qty input#quantity_wanted,
.k-action-row .qty .bootstrap-touchspin input,
.k-action-row .qty .bootstrap-touchspin .input-group-field {
  height: 44px !important;
  width: 56px !important;
  padding: 0 6px !important;
  text-align: center !important;
  box-sizing: border-box !important;
  border-radius: var(--k-radius-sm) 0 0 var(--k-radius-sm) !important;
}

.k-action-row .qty .input-group-btn-vertical {
  display: inline-flex !important;
  flex-direction: column !important;
  height: 44px !important;
  width: 30px !important;
  box-sizing: border-box;
}

.k-action-row .qty .input-group-btn-vertical button,
.k-action-row .qty .btn-touchspin,
.k-action-row .qty .bootstrap-touchspin-up,
.k-action-row .qty .bootstrap-touchspin-down {
  height: 22px !important;
  width: 30px !important;
  padding: 0 !important;
  margin: 0 !important;
  flex: 0 0 22px !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  border-radius: 0 !important;
  box-sizing: border-box !important;
}

.k-action-row .qty .bootstrap-touchspin-up {
  border-top-right-radius: var(--k-radius-sm) !important;
  border-bottom: none !important;
}
.k-action-row .qty .bootstrap-touchspin-down {
  border-bottom-right-radius: var(--k-radius-sm) !important;
}

/* === Cap Add-to-Cart button so it doesn't dominate === */

/* Desktop: Add stays at sensible width, doesn't fill remaining row */
@media (min-width: 576px) {
  .k-action-row .product-add-to-cart .add {
    flex: 0 1 260px !important;
    max-width: 280px;
  }
  .k-action-row .product-add-to-cart .add .add-to-cart {
    height: 44px;
    width: 100%;
    font-size: 0.95rem;
    padding: 0 1.25rem;
  }
}

/* Mobile: Add to Cart goes back to full width (already on its own row) */
@media (max-width: 575.98px) {
  .k-action-row .product-add-to-cart .add {
    flex: 1 1 100% !important;
    max-width: none;
  }
  .k-action-row .product-add-to-cart .add .add-to-cart {
    width: 100%;
    height: 44px;
  }
}


/* ============================================================
   v206 — Action row visual refinements
   ------------------------------------------------------------
   v205 had the right heights but two cosmetic issues remained:
   - Touchspin up/down buttons had sharp right corners (rounding
     was set via var(--k-radius-sm) which may have been too small
     or unset to render visibly).
   - Size dropdown was wider than needed at 120px min-width.

   v206 fixes:
   - Explicit 6px radius on touchspin button outer corners so
     the qty stepper visually composes as one rounded shape.
   - Reduce size dropdown min-width from 120px → 90px.
   - Slightly tighten size dropdown padding so "4 OZ" doesn't
     swim in whitespace.
   ============================================================ */

/* Visible rounding on touchspin up/down outer corners */
.k-action-row .qty .bootstrap-touchspin-up {
  border-top-right-radius: 6px !important;
  border-top-left-radius: 0 !important;
  border-bottom-left-radius: 0 !important;
  border-bottom-right-radius: 0 !important;
  border-bottom: none !important;
}
.k-action-row .qty .bootstrap-touchspin-down {
  border-bottom-right-radius: 6px !important;
  border-bottom-left-radius: 0 !important;
  border-top-left-radius: 0 !important;
  border-top-right-radius: 0 !important;
}

/* Make sure the input itself uses matching 6px rounding on left side */
.k-action-row .qty input[type="number"],
.k-action-row .qty input#quantity_wanted,
.k-action-row .qty .bootstrap-touchspin input,
.k-action-row .qty .bootstrap-touchspin .input-group-field {
  border-top-left-radius: 6px !important;
  border-bottom-left-radius: 6px !important;
  border-top-right-radius: 0 !important;
  border-bottom-right-radius: 0 !important;
}

/* Size dropdown: smaller, tighter */
.k-action-row .product-variants select {
  min-width: 90px !important;
  max-width: 130px;
  padding: 0 30px 0 10px !important;
  border-radius: 6px !important;
  font-size: 0.95rem;
}


/* ============================================================
   v207 — Right-align Add to Cart on desktop
   ------------------------------------------------------------
   v205/206 capped Add-to-Cart at 260-280px so it stopped
   dominating the row, but left it left-flowed after the qty
   stepper, with empty space sitting awkwardly on the right.
   margin-left: auto on the flex item pushes it to the row's
   end, balancing the layout.
   
   Mobile keeps full-width Add-to-Cart on its own row (the
   media-query rule already handles that).
   ============================================================ */

@media (min-width: 576px) {
  .k-action-row .product-add-to-cart .add {
    margin-left: auto !important;
  }
}


/* ============================================================
   v208 — Mobile parity for the new action row
   ------------------------------------------------------------
   The existing mobile CSS at ~line 2509 uses high-specificity
   selectors like `#product .product-quantity` and
   `#product input#quantity_wanted` with !important, designed
   for the OLD mobile layout (qty stepper inline with add btn).
   
   Those rules outranked the new `.k-action-row` rules from
   v204-v207 on mobile, so mobile kept rendering the old
   layout despite our v204+ changes.
   
   Fix: add new mobile rules with matching/higher specificity
   (#product prefix + !important) so they win on mobile.
   
   Target mobile layout (<576px):
     Row 1:  [Size: ▾]  [Qty: 1 ⇅]
     Row 2:  [    ADD TO CART (full width)    ]
   ============================================================ */

@media (max-width: 575.98px) {

  /* The action row container — clear margin from the form parent */
  #product .product-actions .k-action-row,
  #product .k-action-row {
    display: flex !important;
    flex-wrap: wrap !important;
    align-items: flex-end !important;
    gap: 10px !important;
    margin: 0.5rem 0 !important;
  }

  /* Size selector — share row 1 with qty, 50% width */
  #product .k-action-row .product-variants,
  #product .product-actions .k-action-row .product-variants {
    flex: 1 1 calc(50% - 5px) !important;
    min-width: 0 !important;
    margin: 0 !important;
    order: 1 !important;
  }
  #product .k-action-row .product-variants .product-variants-item {
    margin: 0 !important;
  }
  #product .k-action-row .product-variants select {
    width: 100% !important;
    max-width: none !important;
    min-width: 0 !important;
    height: 44px !important;
    border-radius: 6px !important;
    padding: 0 30px 0 10px !important;
    box-sizing: border-box !important;
  }

  /* Quantity column — share row 1 with size, 50% width */
  #product .k-action-row .qty,
  #product .product-add-to-cart .k-action-row .qty,
  #product .product-actions .k-action-row .qty {
    flex: 1 1 calc(50% - 5px) !important;
    min-width: 0 !important;
    max-width: 50% !important;
    display: flex !important;
    flex-direction: column !important;
    align-items: flex-start !important;
    gap: 0 !important;
    margin: 0 !important;
    order: 2 !important;
  }
  
  /* Quantity label inside .qty */
  #product .k-action-row .qty .control-label {
    display: block !important;
    margin: 0 0 4px 0 !important;
    font-size: 0.85rem !important;
    font-weight: 500 !important;
    color: var(--k-deep) !important;
  }

  /* Touchspin wrapper - keep it inline-flex but bounded */
  #product .k-action-row .qty .input-group.bootstrap-touchspin,
  #product .k-action-row .qty .bootstrap-touchspin {
    display: inline-flex !important;
    align-items: stretch !important;
    width: auto !important;
    height: 44px !important;
    box-sizing: border-box !important;
  }

  /* Qty input - override old 50px width with explicit fluid sizing */
  #product .k-action-row .qty input#quantity_wanted,
  #product .k-action-row input#quantity_wanted,
  #product .k-action-row .qty .bootstrap-touchspin input,
  #product .k-action-row .qty input[type="number"] {
    width: 56px !important;
    height: 44px !important;
    padding: 0 6px !important;
    text-align: center !important;
    border: 1px solid var(--k-border) !important;
    border-radius: 6px 0 0 6px !important;
    box-sizing: border-box !important;
  }

  /* Touchspin vertical button stack */
  #product .k-action-row .qty .input-group-btn-vertical {
    display: inline-flex !important;
    flex-direction: column !important;
    width: 30px !important;
    height: 44px !important;
    box-sizing: border-box !important;
  }
  #product .k-action-row .qty .input-group-btn-vertical button,
  #product .k-action-row .qty .bootstrap-touchspin-up,
  #product .k-action-row .qty .bootstrap-touchspin-down {
    flex: 0 0 22px !important;
    width: 30px !important;
    height: 22px !important;
    padding: 0 !important;
    margin: 0 !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    box-sizing: border-box !important;
  }
  #product .k-action-row .qty .bootstrap-touchspin-up {
    border-top-right-radius: 6px !important;
    border-top-left-radius: 0 !important;
    border-bottom-left-radius: 0 !important;
    border-bottom-right-radius: 0 !important;
    border-bottom: none !important;
  }
  #product .k-action-row .qty .bootstrap-touchspin-down {
    border-bottom-right-radius: 6px !important;
    border-bottom-left-radius: 0 !important;
    border-top-left-radius: 0 !important;
    border-top-right-radius: 0 !important;
  }

  /* Add to Cart — full width on its own row below */
  #product .k-action-row .product-add-to-cart .add,
  #product .product-add-to-cart .add {
    flex: 1 1 100% !important;
    max-width: none !important;
    margin: 0 !important;
    margin-left: 0 !important;  /* override v207's right-align */
    order: 3 !important;
  }
  #product .k-action-row .product-add-to-cart .add .add-to-cart {
    width: 100% !important;
    height: 44px !important;
  }
}


/* ============================================================
   v209 — Mobile fixes: price-to-right + working action row
   ------------------------------------------------------------
   v204-v208 had two persistent mobile bugs:

   1. Price stayed on the LEFT on mobile because my price-to-right
      CSS was wrapped in @media (min-width: 768px). Mobile never
      saw it.
      
   2. Action row stayed broken on mobile because the legacy CSS
      at ~line 2509 forced .product-quantity to display:inline-flex
      with !important — my display:contents declaration (without
      !important) was being overridden, so qty + add stayed nested
      and couldn't become flex peers with .product-variants.

   This block:
   - Removes the desktop-only media query around price-to-right
     (now applies at all widths, with smaller font on mobile).
   - Forces display:contents on .product-add-to-cart and
     .product-quantity with !important + high specificity, so
     it wins against the legacy mobile rules at all widths.
   ============================================================ */

/* ----- FIX 1: Price to top-right at ALL widths ----- */

#product .product-information,
.product-information {
  position: relative;
}

#product .product-information .product-prices,
#product .product-information .js-product-prices,
.product-information > .product-prices,
.product-information .product-prices.js-product-prices {
  position: absolute !important;
  top: 0;
  right: 0;
  margin: 0 !important;
  text-align: right;
  z-index: 1;
}

/* H1 needs padding-right so its text doesn't overlap the price */
#product .product-information h1.h1,
#product .product-information h1,
.product-information h1.h1,
.product-information h1 {
  padding-right: 90px;
}

@media (min-width: 768px) {
  #product .product-information h1.h1,
  .product-information h1.h1 {
    padding-right: 160px;
  }
}

/* Smaller price font on mobile so it fits in the corner */
@media (max-width: 575.98px) {
  #product .product-information .product-prices .current-price .price,
  #product .product-information .product-prices .current-price-value,
  #product .product-prices .current-price-value,
  #product .product-prices .current-price .price,
  .product-information .product-prices .current-price .price,
  .product-information .product-prices .current-price-value {
    font-size: 22px !important;
  }
}

/* ----- FIX 2: Force display:contents on wrappers with !important
   so they override the legacy mobile inline-flex rules ----- */

#product .k-action-row .product-add-to-cart,
.k-action-row .product-add-to-cart {
  display: contents !important;
}

#product .k-action-row .product-add-to-cart > .product-quantity,
#product .k-action-row .product-quantity,
.k-action-row .product-add-to-cart > .product-quantity,
.k-action-row .product-quantity {
  display: contents !important;
}

/* ----- FIX 3: Reinforce mobile layout now that wrappers are contents ----- */

@media (max-width: 575.98px) {
  /* Reset action row container with high specificity */
  #product .product-actions .k-action-row,
  #product .k-action-row {
    display: flex !important;
    flex-wrap: wrap !important;
    align-items: flex-end !important;
    gap: 10px !important;
    margin: 0.5rem 0 !important;
  }

  /* Size: 50% of row 1 */
  #product .k-action-row .product-variants,
  #product .product-actions .k-action-row .product-variants {
    flex: 1 1 calc(50% - 5px) !important;
    width: calc(50% - 5px) !important;
    max-width: calc(50% - 5px) !important;
    min-width: 0 !important;
    margin: 0 !important;
    order: 1 !important;
    box-sizing: border-box;
  }

  /* Qty: 50% of row 1 */
  #product .k-action-row .qty,
  #product .product-actions .k-action-row .qty {
    flex: 1 1 calc(50% - 5px) !important;
    width: calc(50% - 5px) !important;
    max-width: calc(50% - 5px) !important;
    min-width: 0 !important;
    margin: 0 !important;
    order: 2 !important;
    display: flex !important;
    flex-direction: column !important;
    align-items: flex-start !important;
    gap: 0 !important;
    box-sizing: border-box;
  }

  /* Add to Cart: full width row 2 */
  #product .k-action-row .add,
  #product .product-actions .k-action-row .add {
    flex: 1 1 100% !important;
    width: 100% !important;
    max-width: 100% !important;
    margin: 0 !important;
    margin-left: 0 !important;
    order: 3 !important;
  }
}


/* ============================================================
   v210 — Clean action row CSS (matches new HTML structure)
   ------------------------------------------------------------
   v210 template change removed the .product-quantity wrapper so
   the HTML structure is now flat:
     <div class="product-add-to-cart k-action-row">
       <section class="product-variants">...size...</section>
       <div class="qty">...quantity...</div>
       <div class="add">...add button...</div>
       <span id="product-availability">...</span>
       <p class="product-minimal-quantity">...</p>
     </div>
   
   No display:contents needed. Size, qty, and add are direct
   children of .k-action-row.
   ============================================================ */

/* ----- The action row itself ----- */

.product-add-to-cart.k-action-row {
  display: flex !important;
  flex-wrap: wrap !important;
  align-items: flex-end !important;
  gap: 12px !important;
  margin: 0.75rem 0 !important;
  padding: 0 !important;
  /* Reset any inherited block layout from .product-add-to-cart legacy CSS */
  width: 100%;
  box-sizing: border-box;
}

/* ----- Size selector (column 1) ----- */

.k-action-row .product-variants {
  flex: 0 1 auto;
  margin: 0 !important;
  order: 1;
  min-width: 0;
}
.k-action-row .product-variants .product-variants-item {
  margin: 0 !important;
}
.k-action-row .product-variants .control-label {
  display: block;
  margin: 0 0 4px 0;
  font-size: 0.85rem;
  font-weight: 500;
  color: var(--k-deep);
}
.k-action-row .product-variants select {
  height: 44px;
  min-width: 90px;
  max-width: 130px;
  padding: 0 30px 0 10px;
  border-radius: 6px;
  font-size: 0.95rem;
  box-sizing: border-box;
}

/* ----- Quantity column (column 2) ----- */

.k-action-row .qty {
  flex: 0 0 auto;
  order: 2;
  margin: 0;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
}
.k-action-row .qty .control-label {
  display: block;
  margin: 0 0 4px 0;
  font-size: 0.85rem;
  font-weight: 500;
  color: var(--k-deep);
}
.k-action-row .qty input[type="number"],
.k-action-row .qty input#quantity_wanted {
  height: 44px;
  width: 60px;
  padding: 0 6px;
  text-align: center;
  border: 1px solid var(--k-border);
  border-radius: 6px 0 0 6px;
  box-sizing: border-box;
}

/* Touchspin-applied wrapper (added by JS at runtime) */
.k-action-row .qty .input-group.bootstrap-touchspin,
.k-action-row .qty .bootstrap-touchspin {
  display: inline-flex !important;
  align-items: stretch !important;
  width: auto !important;
  height: 44px !important;
  box-sizing: border-box;
}
.k-action-row .qty .input-group-btn-vertical {
  display: inline-flex !important;
  flex-direction: column !important;
  width: 30px !important;
  height: 44px !important;
  box-sizing: border-box;
}
.k-action-row .qty .input-group-btn-vertical button,
.k-action-row .qty .bootstrap-touchspin-up,
.k-action-row .qty .bootstrap-touchspin-down {
  flex: 0 0 22px !important;
  width: 30px !important;
  height: 22px !important;
  padding: 0 !important;
  margin: 0 !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  box-sizing: border-box;
}
.k-action-row .qty .bootstrap-touchspin-up {
  border-top-right-radius: 6px !important;
  border-bottom: none !important;
}
.k-action-row .qty .bootstrap-touchspin-down {
  border-bottom-right-radius: 6px !important;
}

/* ----- Add to Cart (column 3) ----- */

.k-action-row .add {
  flex: 1 1 200px;
  order: 3;
  margin: 0;
  min-width: 0;
}
.k-action-row .add .add-to-cart {
  width: 100%;
  height: 44px;
  font-size: 0.95rem;
  padding: 0 1.25rem;
}

/* ----- Availability + min qty: full row below ----- */

.k-action-row > #product-availability,
.k-action-row > .js-product-availability,
.k-action-row > .product-minimal-quantity,
.k-action-row > .k-action-fullrow {
  flex: 1 1 100%;
  order: 5;
  margin: 0.25rem 0 0 0;
}

/* ----- Desktop: cap add-to-cart width + right-align ----- */

@media (min-width: 576px) {
  .k-action-row .add {
    flex: 0 1 260px !important;
    max-width: 280px !important;
    margin-left: auto !important;  /* right-align */
  }
}

/* ----- Mobile: size + qty share row 1, add full row 2 ----- */

@media (max-width: 575.98px) {
  .k-action-row .product-variants {
    flex: 1 1 calc(50% - 6px) !important;
    width: calc(50% - 6px) !important;
    max-width: calc(50% - 6px) !important;
  }
  .k-action-row .product-variants select {
    width: 100% !important;
    max-width: none !important;
    min-width: 0 !important;
  }
  .k-action-row .qty {
    flex: 1 1 calc(50% - 6px) !important;
    width: calc(50% - 6px) !important;
    max-width: calc(50% - 6px) !important;
  }
  .k-action-row .add {
    flex: 1 1 100% !important;
    max-width: none !important;
    margin-left: 0 !important;  /* no right-align on mobile */
  }
}


/* ============================================================
   v211 — Price-to-right: shotgun selectors + JS backup
   ------------------------------------------------------------
   The action row works on mobile via v210's clean HTML rebuild,
   but the price-to-right still doesn't apply. Best guess: my
   selectors target .product-information but classic 8.2's
   actual structure uses different wrapping classes
   (#content, .page-content, just .col-md-6, etc).
   
   This block sets position:relative on EVERY possible container
   the price could be inside, and position:absolute on .product-
   prices with multiple selector variants — whichever matches
   the actual DOM, applies.
   
   Plus a JS fallback that moves the price element into the page
   header (next to the H1) if CSS positioning doesn't work for
   whatever reason. Inline styles via JS will guarantee at least
   one approach takes effect.
   ============================================================ */

/* Set position:relative on any plausible price-containing ancestor */
#main #product,
#product,
#product #content,
#product .page-content,
#product .product-information,
#main .col-md-6,
#main .col-12,
#main .row > div:nth-child(2),
.product-information,
.page-content,
section.page-content,
section#content,
#content.page-content {
  position: relative !important;
}

/* Position the price absolutely - try every plausible selector */
#product .product-prices,
#product .product-prices.js-product-prices,
#product #content .product-prices,
#product #content > .product-prices,
#product .page-content .product-prices,
#product .product-information .product-prices,
.product-prices.js-product-prices,
section#content > .product-prices,
.page-content > .product-prices {
  position: absolute !important;
  top: 0 !important;
  right: 0 !important;
  margin: 0 !important;
  padding: 0 !important;
  text-align: right !important;
  z-index: 10 !important;
}

/* H1 needs padding-right so the title doesn't overlap the price */
#main h1.h1,
#main .h1,
#product h1.h1,
#product .h1,
.page-header h1,
.page-header h1.h1,
.page-header .h1 {
  padding-right: 100px !important;
}

@media (min-width: 768px) {
  #main h1.h1,
  #product h1.h1,
  .page-header h1.h1 {
    padding-right: 180px !important;
  }
}

/* Smaller price on mobile so it fits in the corner */
@media (max-width: 575.98px) {
  #product .product-prices .current-price .price,
  #product .product-prices .current-price-value,
  .product-prices .current-price .price,
  .product-prices .current-price-value {
    font-size: 22px !important;
  }
}


/* ============================================================
   v212 — Top spacing tighten + size dropdown content-width
   ------------------------------------------------------------
   1. Reduce dead space between green nav header and breadcrumb.
   2. Stop the size dropdown stretching to 100% of its mobile
      column — size to content with a sensible cap.
   ============================================================ */

/* Tighten the wrapper / breadcrumb area at the top of the page */
#wrapper {
  padding-top: 0 !important;
}
#wrapper > .container {
  padding-top: 0;
}
nav.breadcrumb,
#wrapper nav.breadcrumb,
section.breadcrumb,
.breadcrumb {
  margin-top: 0 !important;
  margin-bottom: 0.5rem !important;
  padding-top: 0.5rem !important;
  padding-bottom: 0.25rem !important;
  background: transparent;
}

/* Size dropdown: content-width on mobile (not 100% of column) */
@media (max-width: 575.98px) {
  .k-action-row .product-variants {
    flex: 0 1 auto !important;
    width: auto !important;
    max-width: 50% !important;
  }
  .k-action-row .product-variants select {
    width: auto !important;
    min-width: 90px !important;
    max-width: 100% !important;
  }
  .k-action-row .qty {
    flex: 0 0 auto !important;
    width: auto !important;
    max-width: 50% !important;
  }
  /* Push qty to right of row 1 so size and qty sit at opposite ends */
  .k-action-row .qty {
    margin-left: auto !important;
  }
}


/* ============================================================
   v213 — Two precise fixes:
   1. Size dropdown content-width on mobile (override v208's
      forced 50% width with matching specificity).
   2. Side padding on the page header so the price doesn't
      stick to the right edge of the screen.
   ============================================================ */

/* ----- Fix 1: Size dropdown should be content-sized on mobile.
   v208 has `#product .k-action-row .product-variants` rules
   forcing 50% width with !important. To win, match specificity. */
@media (max-width: 575.98px) {
  #product .k-action-row .product-variants,
  #product .product-actions .k-action-row .product-variants {
    flex: 0 0 auto !important;
    width: auto !important;
    max-width: 50% !important;
    min-width: 0 !important;
  }
  #product .k-action-row .product-variants select,
  #product .product-actions .k-action-row .product-variants select {
    width: auto !important;
    min-width: 90px !important;
    max-width: 100% !important;
  }
  /* Qty pushed to right of row 1 */
  #product .k-action-row .qty,
  #product .product-actions .k-action-row .qty {
    flex: 0 0 auto !important;
    width: auto !important;
    max-width: 50% !important;
    margin-left: auto !important;
  }
}

/* ----- Fix 2: Side padding on page header so content doesn't
   stick to screen edges. The container above page-header has
   padding on desktop but on mobile the gap is too tight after
   our JS made it a flex space-between row. */
#main .page-header,
.product-detail .page-header,
header.page-header {
  padding-left: 0.75rem !important;
  padding-right: 0.75rem !important;
  box-sizing: border-box !important;
}

@media (min-width: 768px) {
  #main .page-header,
  .product-detail .page-header,
  header.page-header {
    padding-left: 0 !important;
    padding-right: 0 !important;
  }
}


/* ============================================================
   v215 — Price moved BACK to natural location below the
   product name. Overrides all positioning attempts from
   v203 → v213 (multiple shotgun rules, absolute positioning,
   header flex layout, h1 padding-right).
   ============================================================ */

/* Reset price to static positioning (natural flow) */
.product-prices,
.product-prices.js-product-prices,
#product .product-prices,
#product .product-prices.js-product-prices,
#product #content .product-prices,
#product #content > .product-prices,
#product .page-content .product-prices,
#product .product-information .product-prices,
.product-information .product-prices,
.product-information .js-product-prices,
#main .col-md-6 > .product-prices,
#main .col-md-6 .product-prices.js-product-prices,
section#content > .product-prices,
section.page-content > .product-prices,
.page-content .product-prices {
  position: static !important;
  top: auto !important;
  right: auto !important;
  z-index: auto !important;
  margin: 0.5rem 0 1rem 0 !important;
  padding: 0 !important;
  text-align: left !important;
}

/* Reset H1 padding-right (was reserving space for the corner price) */
.page-header h1,
.page-header h1.h1,
.page-header .h1,
#main h1.h1,
#product .h1,
#product h1.h1 {
  padding-right: 0 !important;
}
@media (min-width: 768px) {
  .page-header h1.h1,
  #main h1.h1,
  #product h1.h1 {
    padding-right: 0 !important;
  }
}

/* Reset .page-header flex layout (no more H1+price side-by-side) */
#main .page-header,
header.page-header,
.product-detail .page-header {
  display: block !important;
  padding-left: 0 !important;
  padding-right: 0 !important;
}
@media (max-width: 575.98px) {
  #main .page-header,
  header.page-header {
    padding-left: 0 !important;
    padding-right: 0 !important;
  }
}

/* Make price prominent in its natural slot below the name */
.product-prices .current-price,
.product-prices .product-price,
.product-prices .current-price .price {
  font-size: 1.75rem !important;
  font-weight: 700 !important;
  color: var(--k-olive-dark, #4a5d23) !important;
  line-height: 1.2 !important;
}

@media (max-width: 575.98px) {
  .product-prices .current-price,
  .product-prices .product-price,
  .product-prices .current-price .price {
    font-size: 1.5rem !important;
  }
}


/* ============================================================
   v216 — Form input focus + Chrome autofill colors.
   Was showing default Bootstrap blue focus ring + Chrome blue
   autofill background. Recolor to olive to match the theme.
   ============================================================ */

/* Focus ring on text/password/email/etc. inputs -> olive instead of blue */
input:focus,
input[type="text"]:focus,
input[type="email"]:focus,
input[type="password"]:focus,
input[type="search"]:focus,
input[type="tel"]:focus,
input[type="url"]:focus,
input[type="number"]:focus,
textarea:focus,
select:focus,
.form-control:focus,
.input-group .form-control:focus {
  border-color: var(--k-olive) !important;
  box-shadow: 0 0 0 0.2rem rgba(124, 144, 57, 0.25) !important;
  outline: none !important;
}

/* Chrome / Edge / Safari autofill: kill the blue/yellow background */
input:-webkit-autofill,
input:-webkit-autofill:hover,
input:-webkit-autofill:focus,
input:-webkit-autofill:active,
textarea:-webkit-autofill,
select:-webkit-autofill {
  /* Inset shadow paints over the autofill background */
  -webkit-box-shadow: 0 0 0 1000px #ffffff inset !important;
  box-shadow: 0 0 0 1000px #ffffff inset !important;
  -webkit-text-fill-color: #1a1a1a !important;
  caret-color: var(--k-olive) !important;
  /* Prevent the autofill animation from snapping back to blue */
  transition: background-color 9999s ease-in-out 0s,
              color 9999s ease-in-out 0s !important;
}

/* On focus while autofilled: add olive ring on top of the white inset */
input:-webkit-autofill:focus,
textarea:-webkit-autofill:focus,
select:-webkit-autofill:focus {
  -webkit-box-shadow: 0 0 0 1000px #ffffff inset,
                      0 0 0 0.2rem rgba(124, 144, 57, 0.25) !important;
  box-shadow: 0 0 0 1000px #ffffff inset,
              0 0 0 0.2rem rgba(124, 144, 57, 0.25) !important;
  border-color: var(--k-olive) !important;
}

/* Firefox-specific autofill background */
input:autofill {
  background-color: #ffffff !important;
  color: #1a1a1a !important;
}

/* Kill the blue text-selection highlight inside inputs too */
input::selection,
textarea::selection {
  background: rgba(124, 144, 57, 0.3);
  color: inherit;
}


/* ============================================================
   v217 — Layout when "Write your review" is moved into header.
   Class k-has-review is added by JS only when button exists.
   So headers without review (e.g. logged-out users) stay normal.
   ============================================================ */

.page-header.k-has-review {
  display: flex !important;
  flex-wrap: wrap !important;
  align-items: center !important;
  justify-content: space-between !important;
  column-gap: 1rem !important;
  row-gap: 0.5rem !important;
}

.page-header.k-has-review h1,
.page-header.k-has-review h1.h1,
.page-header.k-has-review .h1 {
  flex: 1 1 auto !important;
  margin: 0 !important;
  padding-right: 0 !important;
  min-width: 0 !important;
}

.page-header .k-header-review-btn {
  flex: 0 0 auto !important;
  margin: 0 !important;
  white-space: nowrap;
}

/* Mobile: H1 takes full width, review button drops below left-aligned */
@media (max-width: 575.98px) {
  .page-header.k-has-review {
    align-items: flex-start !important;
  }
  .page-header.k-has-review h1,
  .page-header.k-has-review h1.h1 {
    flex: 1 1 100% !important;
  }
  .page-header .k-header-review-btn {
    flex: 0 0 auto !important;
    margin-top: 0 !important;
  }
}


/* ============================================================
   v218 — Layout for synthetic header (fallback when no
   .page-header exists in markup, JS adds .k-synthetic-header
   to the H1's parent).
   ============================================================ */

.k-synthetic-header.k-has-review {
  display: flex !important;
  flex-wrap: wrap !important;
  align-items: center !important;
  justify-content: space-between !important;
  column-gap: 1rem !important;
  row-gap: 0.5rem !important;
}

.k-synthetic-header.k-has-review h1,
.k-synthetic-header.k-has-review h1.h1,
.k-synthetic-header.k-has-review .h1 {
  flex: 1 1 auto !important;
  margin: 0 !important;
  padding-right: 0 !important;
  min-width: 0 !important;
}

@media (max-width: 575.98px) {
  .k-synthetic-header.k-has-review {
    align-items: flex-start !important;
  }
  .k-synthetic-header.k-has-review h1,
  .k-synthetic-header.k-has-review h1.h1 {
    flex: 1 1 100% !important;
  }
}


/* ============================================================
   v219 — Dedicated wrapper around H1 + review button.
   .k-title-row is a fresh div with no parent layout fighting it.
   Old v217/v218 layout rules (.page-header.k-has-review,
   .k-synthetic-header.k-has-review) still in CSS as defensive
   no-ops — they won't apply unless the synthetic class exists.
   ============================================================ */

.k-title-row {
  display: flex !important;
  flex-wrap: wrap !important;
  align-items: center !important;
  justify-content: space-between !important;
  column-gap: 1rem !important;
  row-gap: 0.5rem !important;
  margin: 0 0 0.5rem 0 !important;
  padding: 0 !important;
}

.k-title-row h1,
.k-title-row h1.h1,
.k-title-row .h1 {
  flex: 1 1 auto !important;
  margin: 0 !important;
  padding-right: 0 !important;
  min-width: 0 !important;
  /* allow the title to wrap normally */
  word-break: normal;
}

.k-title-row .post-product-comment,
.k-title-row .k-header-review-btn,
.k-title-row button.post-product-comment,
.k-title-row .open-comment-form {
  flex: 0 0 auto !important;
  margin: 0 !important;
  white-space: nowrap;
  align-self: center;
}

/* Mobile: title full-width, button drops below left-aligned */
@media (max-width: 575.98px) {
  .k-title-row {
    align-items: flex-start !important;
  }
  .k-title-row h1,
  .k-title-row h1.h1,
  .k-title-row .h1 {
    flex: 1 1 100% !important;
  }
  .k-title-row .post-product-comment,
  .k-title-row .k-header-review-btn {
    margin-top: 0 !important;
  }
}


/* ============================================================
   v220 — Hide duplicate review buttons (module renders the
   button in multiple hooks). Only the one moved to .k-title-row
   stays visible.
   ============================================================ */

.k-duplicate-review-btn {
  display: none !important;
  visibility: hidden !important;
}

/* Make sure the icon inside the moved button stays visible */
.k-title-row .post-product-comment .material-icons,
.k-title-row .post-product-comment i.material-icons {
  display: inline-block !important;
  visibility: visible !important;
  margin-right: 0.25rem;
  vertical-align: middle;
  font-size: inherit;
}


/* ============================================================
   v222 — Review button SVG icon + Reviews tab styling.
   ============================================================ */

/* SVG pencil icon inside the review button — match font color */
.k-title-row .k-header-review-btn .k-review-icon,
.k-title-row .post-product-comment .k-review-icon {
  width: 18px !important;
  height: 18px !important;
  margin-right: 0.4rem !important;
  vertical-align: -3px;
  flex-shrink: 0;
  stroke: currentColor;
  fill: none;
}

/* Make sure the button flex-aligns icon + text correctly */
.k-title-row .k-header-review-btn,
.k-title-row .post-product-comment {
  display: inline-flex !important;
  align-items: center;
  gap: 0.4rem;
}

/* New Reviews tab: match existing tab styling (inherits from .nav-link) */
.k-reviews-tab-item .nav-link {
  cursor: pointer;
}

/* When the reviews tab pane is active, ensure the content fits */
.k-reviews-tab-pane {
  padding: 1rem 0;
}

/* Hide the now-empty page-footer-product container if module left it */
.page-footer-product:empty {
  display: none !important;
}


/* ============================================================
   v223 — Force the review button to the RIGHT side of title row.
   v222 added `gap` + display: inline-flex which interacted with
   v219's `margin: 0 !important` and broke right-alignment.
   Defensive fix: margin-left: auto + explicit order.
   ============================================================ */

.k-title-row .k-header-review-btn,
.k-title-row .post-product-comment,
.k-title-row button.post-product-comment,
.k-title-row .open-comment-form {
  margin-left: auto !important;
  margin-right: 0 !important;
  order: 99 !important;
}

/* H1 stays first in flex order */
.k-title-row h1,
.k-title-row h1.h1,
.k-title-row .h1 {
  order: 1 !important;
}

/* Mobile: button drops below H1, but stays left-aligned (no auto-right) */
@media (max-width: 575.98px) {
  .k-title-row .k-header-review-btn,
  .k-title-row .post-product-comment {
    margin-left: 0 !important;
    order: 99 !important;
  }
}


/* ============================================================
   v224 — Gallery images: no click affordance (modal-on-tap
   removed). Carousel still works via swipe / arrows / dots.
   ============================================================ */

.k-gallery-img {
  cursor: default;
}

/* Hard-hide any leftover #product-modal in case JS cleanup races */
#product-modal,
.modal#product-modal {
  display: none !important;
}


/* ============================================================
   v225 — Bigger product name on mobile miniatures.
   Was 14.5px (set earlier in CSS), bumping to 16.5px for
   better readability. Desktop stays at 15.5px.
   ============================================================ */
@media (max-width: 640px) {
  .product-miniature .product-title,
  .product-miniature .product-title a {
    font-size: 16.5px !important;
    line-height: 1.3 !important;
  }
}
