
/* ============================================================
   Reset
   ============================================================ */

/* -------------------------------- 

Primary style

-------------------------------- */
*, *::after, *::before {
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
}

html * {
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

html, body, div, span, applet, object, iframe,
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
a, abbr, acronym, address, big, cite, code,
del, dfn, img, ins, kbd, q, s, samp,
small, strike, sub, sup, tt, var,
b, u, i, center,
dl, dt, dd, ol, ul, li,
fieldset, form, label, legend,
table, caption, tbody, tfoot, thead, tr, th, td,
article, aside, canvas, details, embed, 
figure, figcaption, footer, header, hgroup, 
menu, nav, output, ruby, section, summary,
time, mark, audio, video {
	margin: 0;
	padding: 0;
	border: 0;
	font-size: 100%;
	font: inherit;
	vertical-align: baseline;
}
/* HTML5 display-role reset for older browsers */
article, aside, details, figcaption, figure, 
footer, header, hgroup, menu, nav, section {
	display: block;
}
body {
	line-height: 1;
}
ol, ul {
	list-style: none;
}
blockquote, q {
	quotes: none;
}
blockquote:before, blockquote:after,
q:before, q:after {
	content: '';
	content: none;
}
table {
	border-collapse: collapse;
	border-spacing: 0;
}
/*************************

/* ============================================================
   Base
   ============================================================ */

    General
*************************/

body { 
  font-family: 'Cabin', sans-serif;
  font-size: 16px;
  font-weight: normal;
  line-height: 19px;
  color: #333333;
}
img{
    max-width: 100%;
	height:auto;
    transition: all 0.3s ease-out 0s;
}
a{
	color: #333333;
}
a:hover, a:focus{
	text-decoration:none;
}
a:focus{color:inherit}
.floatleft {float:left}
.floatright {float:right}
.alignleft {float:left;margin-right:15px;margin-bottom: 15px}
.alignright {float:right;margin-left:15px;margin-bottom: 15px}
.aligncenter {display:block;margin:0 auto 15px}

h1, h2, h3, h4, h5, h6 {
  font-family: 'Lora', serif;
  color:#333;
  letter-spacing:0.5px;
}
h1{
	font-size:30px;
	line-height:34px;
}
h2{
	font-size:22px;
	line-height:26px;
}
h3{
	font-size:16px;
	line-height:19px;
}
h4{
	font-size:13px;
	line-height:16px;
}
h5{
	font-size:12px;
	line-height:14.5px;
}
a:hover, a:focus{
	color:#777777;
}
ul {
    margin: 0px;
    padding: 0px;
}
li { 
	list-style: none;
}
p {
	font-family: 'Cabin', sans-serif;
    font-size: 16px;
    font-weight: normal;
	font-style:normal;
    line-height: 19px;
    color: #333333;
}
p:not(:last-child){
	margin-bottom: 20px;
}
hr{
	margin-top:32px;
	margin-bottom:0;
    border-color:#666666;
}

*::-moz-selection {
    background: #4fc1f0;
    color: #fff;
    text-shadow: none;
}
::-moz-selection {
    background: #4fc1f0;
    color: #fff;
    text-shadow: none;
}
::selection {
    background: #4fc1f0;
    color: #fff;
    text-shadow: none;
}

/*************************

/* ============================================================
   Utility — colour and text
   ============================================================ */

        Text color
*************************/
.text-white { color: #fff ;}
.text-theme {
  color: #4a90e2;
}

.text-white h1, .text-white p, .text-white h2{ color: #fff; }

.text-italic p{
	font-style:italic;
	font-family:'Lora',sans-serif;
}
/*************************
  Basic margin padding
*************************/
.m-0 {
    margin-top: 0;
    margin-right: 0;
    margin-bottom: 0;
    margin-left: 0;
}
.p-0 {
    padding-top: 0;
    padding-right: 0;
    padding-bottom: 0;
    padding-left: 0;
}
.p-t{padding-left:0}
.p-r{padding-right:0}

/*colored background*/
.white-text { color: white; }
/*************************

/* ============================================================
   Utility — spacing
   ============================================================ */

         Margin top
*************************/
.mt-0 { margin-top: 0 }
.mt-02 { margin-top: 0.2rem }
.mt-10 { margin-top: 10px }
.mt-12 { margin-top: 12px }
.mt-15 { margin-top: 15px }
.mt-20 { margin-top: 20px }
.mt-30 { margin-top: 30px }
.mt-40 { margin-top: 40px }
.mt-50 { margin-top: 50px }
.mt-60 { margin-top: 60px }
.mt-70 { margin-top: 70px }
.mt-80 { margin-top: 80px }
.mt-90 { margin-top: 90px }
.mt-100 { margin-top: 100px }
.mt-110 { margin-top: 110px }
.mt-120 { margin-top: 120px }
.mt-130 { margin-top: 130px }
.mt-140 { margin-top: 140px }
.mt-150 { margin-top: 150px }
/*************************
      Margin right
*************************/
.mr-0 { margin-right: 0px }
.mr-10 { margin-right: 10px }
.mr-15 { margin-right: 15px }
.mr-20 { margin-right: 20px }
.mr-30 { margin-right: 30px }
.mr-40 { margin-right: 40px }
.mr-50 { margin-right: 50px }
.mr-60 { margin-right: 60px }
.mr-70 { margin-right: 70px }
.mr-80 { margin-right: 80px }
.mr-90 { margin-right: 90px }
.mr-100 { margin-right: 100px }
.mr-110 { margin-right: 110px }
.mr-120 { margin-right: 120px }
.mr-130 { margin-right: 130px }
.mr-140 { margin-right: 140px }
.mr-150 { margin-right: 150px }
/*************************
      Margin bottom
*************************/
.mb-0 { margin-bottom: 0 }
.mb-02 { margin-bottom: 0.2rem }
.mb-10 { margin-bottom: 10px }
.mb-15 { margin-bottom: 15px }
.mb-20 { margin-bottom: 20px }
.mb-30 { margin-bottom: 30px }
.mb-40 { margin-bottom: 40px }
.mb-50 { margin-bottom: 50px }
.mb-60 { margin-bottom: 60px }
.mb-65 { margin-bottom: 65px }
.mb-70 { margin-bottom: 70px }
.mb-80 { margin-bottom: 80px }
.mb-85 { margin-bottom: 85px }
.mb-90 { margin-bottom: 90px }
.mb-100 { margin-bottom: 100px }
.mb-110 { margin-bottom: 110px }
.mb-120 { margin-bottom: 120px }
.mb-130 { margin-bottom: 130px }
.mb-140 { margin-bottom: 140px }
.mb-150 { margin-bottom: 150px }

/* WPBakery column padding reset */
.no-space.vc_column_container > .vc_column-inner { padding: 0; }
/* Row-level helper: zero horizontal column-inner padding so row Gap fully controls
   spacing between columns. First/last keep outer padding so the row doesn't kiss
   the viewport edge. Vertical padding untouched.
   Mobile (<768px) inherits default 15px both sides so stacked cards aren't lopsided. */
@media (min-width: 768px) {
	.row-no-space > .vc_column_container > .vc_column-inner { padding-left: 0; padding-right: 0; }
	.row-no-space > .vc_column_container:first-child > .vc_column-inner { padding-left: 15px; }
	.row-no-space > .vc_column_container:last-child  > .vc_column-inner { padding-right: 15px; }
}

/* Centred product column layout */
.center-products { display: flex; justify-content: center; }
.center-products .wpb_column { display: flex; justify-content: center; }

/* Constrained intro text block */
.intro-text { max-width: 800px; margin-left: auto; margin-right: auto; }
/*************************
        Margin left
*************************/
.ml-0 { margin-left: 0 }
.ml-10 { margin-left: 10px }
.ml-15 { margin-left: 15px }
.ml-20 { margin-left: 20px }
.ml-30 { margin-left: 30px }
.ml-40 { margin-left: 40px }
.ml-50 { margin-left: 50px }
.ml-60 { margin-left: 60px }
.ml-70 { margin-left: 70px }
.ml-80 { margin-left: 80px }
.ml-90 { margin-left: 90px }
.ml-100 { margin-left: 100px }
.ml-110 { margin-left: 110px }
.ml-120 { margin-left: 120px }
.ml-130 { margin-left: 130px }
.ml-140 { margin-left: 140px }
.ml-150 { margin-left: 150px }
/*************************
        Padding top
*************************/
.pt-0 { padding-top: 0 }
.pt- { padding-top: 10px }
.pt-10 { padding-top: 10px }
.pt-15 { padding-top: 15px }
.pt-20 { padding-top: 20px }
.pt-30 { padding-top: 30px }
.pt-35 { padding-top: 35px }
.pt-40 { padding-top: 40px }
.pt-50 { padding-top: 50px }
.pt-60 { padding-top: 60px }
.pt-70 { padding-top: 70px }
.pt-80 { padding-top: 80px }
.pt-90 { padding-top: 90px }
.pt-100 { padding-top: 100px }
.pt-110 { padding-top: 110px }
.pt-120 { padding-top: 120px }
.pt-130 { padding-top: 130px }
.pt-140 { padding-top: 140px }
.pt-150 { padding-top: 150px }
.pt-320 { padding-top: 320px }
/*************************
        Padding right
*************************/
.pr-0 { padding-right: 0 }
.pr-5 { padding-right: 5px }
.pr-10 { padding-right: 10px }
.pr-15 { padding-right: 15px }
.pr-20 { padding-right: 20px }
.pr-30 { padding-right: 30px }
.pr-40 { padding-right: 40px }
.pr-50 { padding-right: 50px }
.pr-60 { padding-right: 60px }
.pr-70 { padding-right: 70px }
.pr-80 { padding-right: 80px }
.pr-90 { padding-right: 90px }
.pr-100 { padding-right: 100px }
.pr-110 { padding-right: 110px }
.pr-120 { padding-right: 120px }
.pr-130 { padding-right: 130px }
.pr-140 { padding-right: 140px }
/*************************
        Padding bottom
*************************/
.pb-0 { padding-bottom: 0 }
.pb-10 { padding-bottom: 10px }
.pb-15 { padding-bottom: 15px }
.pb-20 { padding-bottom: 20px }
.pb-30 { padding-bottom: 30px }
.pb-40 { padding-bottom: 40px }
.pb-50 { padding-bottom: 50px }
.pb-60 { padding-bottom: 60px }
.pb-65 { padding-bottom: 65px }
.pb-70 { padding-bottom: 70px }
.pb-80 { padding-bottom: 80px }
.pb-85 { padding-bottom: 85px }
.pb-90 { padding-bottom: 90px }
.pb-100 { padding-bottom: 100px }
.pb-110 { padding-bottom: 110px }
.pb-120 { padding-bottom: 120px }
.pb-130 { padding-bottom: 130px }
.pb-140 { padding-bottom: 140px }
.pb-150 { padding-bottom: 150px }
.pb-210 { padding-bottom: 210px }
.pb-200 { padding-bottom: 200px }
.pb-250 { padding-bottom: 250px }
/*************************
        Padding left
*************************/
.pl-0 { padding-left: 0 }
.pl-5{ padding-left: 5px }
.pl-10 { padding-left: 10px }
.pl-15 { padding-left: 15px }
.pl-20 { padding-left: 20px }
.pl-30 { padding-left: 30px }
.pl-40 { padding-left: 40px }
.pl-50 { padding-left: 50px }
.pl-60 { padding-left: 60px }
.pl-70 { padding-left: 70px }
.pl-80 { padding-left: 80px }
.pl-90 { padding-left: 90px }
.pl-100 { padding-left: 100px }
.pl-110 { padding-left: 110px }
.pl-120 { padding-left: 120px }
.pl-130 { padding-left: 130px }
.pl-140 { padding-left: 140px }
.pl-150 { padding-left: 150px }

/***************************
    Page section padding 
****************************/
.ptb-0 { padding: 0 }
.ptb-10 { padding: 10px 0 }
.ptb-15 { padding: 15px 0 }
.ptb-20 { padding: 20px 0 }
.ptb-30 { padding: 30px 0 }
.ptb-40 { padding: 40px 0 }
.ptb-50 { padding: 50px 0 }
.ptb-55 { padding: 55px 0 }
.ptb-60 { padding: 60px 0 }
.ptb-70 { padding: 70px 0 }
.ptb-80 { padding: 80px 0 }
.ptb-90 { padding: 90px 0 }
.ptb-100 { padding: 100px 0 }
.ptb-110 { padding: 110px 0 }
.ptb-120 { padding: 120px 0 }
.ptb-130 { padding: 130px 0 }
.ptb-140 { padding: 140px 0 }
.ptb-150 { padding: 150px 0 }
.ptb-160 { padding: 160px 0 }
.ptb-170 { padding: 170px 0 }
.ptb-180 { padding: 180px 0 }
.ptb-190 { padding: 190px 0 }
.ptb-200 { padding: 200px 0 }
.ptb-210 { padding: 210px 0 }
.ptb-220 { padding: 220px 0 }
.ptb-250 { padding: 250px 0 }
.ptb-280 { padding: 280px 0 }

/***************************
    Page section margin 
****************************/
.mtb-0 { margin: 0 }
.mtb-10 { margin: 10px 0 }
.mtb-15 { margin: 15px 0 }
.mtb-20 { margin: 20px 0 }
.mtb-30 { margin: 30px 0 }
.mtb-40 { margin: 40px 0 }
.mtb-50 { margin: 50px 0 }
.mtb-60 { margin: 60px 0 }
.mtb-70 { margin: 70px 0 }
.mtb-80 { margin: 80px 0 }
.mtb-90 { margin: 90px 0 }
.mtb-100 { margin: 100px 0 }
.mtb-110 { margin: 110px 0 }
.mtb-120 { margin: 120px 0 }
.mtb-130 { margin: 130px 0 }
.mtb-140 { margin: 140px 0 }
.mtb-150 { margin: 150px 0; }

/*************************
        Extra class
*************************/

#page-wrapper{
	position:relative;
}

/* header-top-area */

/* ============================================================
   Header
   ============================================================ */

.header-top-area .container{
	height:100px;
}
.header-top-area .container .row{
	padding-top:10px;
	padding-bottom:10px;
}
.header-top-area #logo-row,.header-top-area #nav-row{
	height:50%;
}
.header-top-area #placeholder-row{
	background-color:#eee;
	height:50%;
}
.header-top-area #header-line{
	padding:0;
	position:relative;
	top:-1px;
}

.header-top-area #header-line .header-line-inner{
	height:1px;
	min-height:1px;
	background-color:#333333;
}

.hide-header-line .header-top-area #header-line{
	display:none;
}

.header-menu .scroll-header .main-menu.transparent-menu ul li  a {color:#000;}
.scroll-header {
  animation: 300ms ease-in-out 0s normal none 1 running fadeInDown;
  box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.2);
  left: 0;
  position: fixed;
  top: 0;
  width: 100%;
  z-index: 2;
}
.header-logo {
	position: absolute;
	z-index: 2;
	padding-left:30px;
}
.header-icons-col{
	text-align:right;
}

.header-icons{
	display:flex;
	flex-direction:row;
	flex-wrap:wrap;
	justify-content:flex-end;
	align-content:center;
}

.header-icons > li{
	margin-left:5px;
	margin-right:5px;
	padding:1px;
}

.header-icons > li > a{
	display:flex;
}

.header-icons > li img{
	width:14px;
	height:14px;
}
.header-icons > li a.cart-link{
	position:relative;
}

li#shop-at-our-header {
    font-family: 'Lora';
    font-weight: 600;
    line-height: 20px;
}

.header-icons #npp-enursery-header a{
	background-color:#adc087;
	border-radius:2px;
	font-size:12px;
	font-weight:bold;
	font-family:'Lora';
	color:#fff;
	line-height:22px;
	text-transform:uppercase;
	padding-left:10px;
	padding-right:10px;
}

.header-icons #npp-enursery-header a:hover{
	background-color:#333;
}

.header-icons #npp-enursery-header img{
	width:12px;
	height:16px;
	vertical-align: text-bottom;
	margin-right:2px;
}

/* ---------- Header icon buttons (enursery-btn, sale-btn) ---------- */
ul.header-icons {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 2px;
	margin: 0;
	padding: 0;
	list-style: none;
}

ul.header-icons li.enursery-btn a,
ul.header-icons li.sale-btn a {
	display: inline-block;
	font-family: 'Lora', serif;
	font-size: 12px;
	font-weight: 700;
	text-transform: uppercase;
	line-height: 22px;
	border-radius: 2px;
	color: #fff;
	text-decoration: none;
	padding: 4px 12px;
	transition: background-color .25s ease;
}

ul.header-icons li.enursery-btn a {
	background: #adc087;
	padding-left: 34px;
	position: relative;
}
ul.header-icons li.enursery-btn a::before {
	content: '';
	position: absolute;
	left: 10px;
	top: 50%;
	transform: translateY(-50%);
	width: 16px;
	height: 16px;
	background: url('/wp-content/uploads/2020/06/shopping-bag@2x.png') no-repeat center / 16px 16px;
}
ul.header-icons li.enursery-btn a:hover { background: #9ab476; }

ul.header-icons li.sale-btn a       { background: #f15648; }
ul.header-icons li.sale-btn a:hover { background: #d34234; }

li.shop-label {
	font-family: 'Lora';
	font-weight: 600;
}

@media (min-width: 768px) {
	li.shop-label,
	li.enursery-btn,
	li.sale-btn     { order: 0; }
	li.social-icons { order: 1; }
	#npp-cart       { order: 2; }
	#mobile-menu-icon { order: 3; }
}

@media (max-width: 767.98px) {
	li.shop-label,
	li.enursery-btn,
	li.sale-btn { display: none; }

	li.social-icons   { order: 0; }
	#npp-cart         { order: 2; }
	#mobile-menu-icon { order: 3; }

	ul.header-icons { gap: 2px; }
}

.header-top-area #npp-cart .widget_shopping_cart {
    background-color: #fff;
    color: #323232;
    position: absolute;
    top: 100%;
    right: 0;
    width: 320px;
    z-index: 9999;
    margin-top: 5px;
    opacity: 0;
    visibility: hidden;
    border-radius: 0;
    border: 10px solid #ffffff;
    -ms-box-shadow: 0 5px 25px rgba(0, 0, 0, 0.12);
    box-shadow: 0 5px 25px rgba(0, 0, 0, 0.12);
    transition: all .3s ease-in-out;
    -o-transition: all .3s ease-in-out;
    -ms-transition: all .3s ease-in-out;
}

.header-top-area #npp-cart .widget_shopping_cart .quantity,
.header-top-area #npp-cart .widget_shopping_cart .tc-av-price{
    display:none;
}

.header-top-area  #npp-cart:hover .widget_shopping_cart {
    margin-top: 0px;
    opacity: 1;
    visibility: visible;
    overflow-y: auto;
}

.header-top-area .cart-link .count {
    font-style: normal;
    font-size: 11px;
    position: absolute;
    top: 0;
    right: 50%;
    width: 16px;
    height: 16px;
    line-height: 16px;
    text-align: center;
    margin-top: -12px;
    margin-right: -17px;
    color: #ffffff;
    background: #333;
    border-radius: 50%;
}

#npp-cart .woocommerce ul.product_list_widget li{
	text-align:left;
}

#npp-cart .woocommerce ul.product_list_widget li a:not(.remove_from_cart_button){
	text-align:left;
	padding-left: 0;
}

#npp-cart .woocommerce ul.product_list_widget li dl {
    margin: 0;
    padding-left: 0;
    border-left: none;
}

#npp-cart .woocommerce ul.product_list_widget li img {
    width: 48px;
}

#npp-cart .woocommerce ul.product_list_widget li:not(:first-child){
	padding-top:6px;
	border-top:1px solid #f2f2f2;
}

#search-wrapper{
	text-align:right;
}
.search-form input{
	display:inline-block;
}
.search-form .search-field{
	border:1px solid #666666;
	border-radius:30px;
	padding:2px 10px;
	width:150px;
}
.search-form .search-submit{
	width:19px;
	height:19px;
	border:none;
	position:relative;
	top:3px;
	margin-left:8px;
	margin-right:8px;
}
/* main-menu-area-start */

/* ============================================================
   Navigation
   ============================================================ */

.main-menu ul{
	text-align:center;
}
.main-menu ul li {
  display: inline-block;
  position: relative;
}
.main-menu ul li>a {
  display: block;
  font-family: 'Lora', serif;
  font-size: 13px;
  font-weight: bold;
  line-height: 16px;
  letter-spacing: 0.03em;
  padding:0 5px 20px;
  text-transform: uppercase;
  transition: all 0.2s ease 0s;
}
.main-menu ul li:hover > a,
.main-menu > ul > li.menu-item.menu-item-has-children:hover > a:after,
.main-menu ul li.active > a{
	color:#666666;
}

.main-menu > ul > li.menu-item.menu-item-has-children > a:after{
	font-family:'Font Awesome 5 Free';
	content: '\f078';
    font-size: 13px;
    color: #666666;
    margin-left: 6px;
}
.logo {
  margin-top: 39px;
}
#mobile-menu-icon{
	text-align:right;
	cursor:pointer;
	position: relative;
  top: 3px;
}
#mobile-menu-icon i{
    position: relative;
    color: #666;
}
/* sub-menu */
.main-menu ul li .sub-menu {
  background: #ffffff none repeat scroll 0 0;
  left: 0;
  opacity: 0;
  position: absolute;
  top: 100%;
  transition: all 0.3s ease 0s;
  visibility: hidden;
  width: 220px;
  z-index: 9;
  text-align:left;
}
.main-menu ul li .sub-menu:before{
    content: '';
    height: 14px;
    width: 14px;
    position: absolute;
    left: 75.5px;
    background-color: #ffffff;
    top: -7px;
    transform: rotate(45deg);
    border-bottom: 1px solid #666;
    border-right: 1px solid #666;
}
.main-menu ul li:hover .sub-menu{
	opacity:1;top:100%;
	visibility:visible;
}
.main-menu ul li .sub-menu:not(.category-menu) li{
	display:block;
}
.main-menu ul li .sub-menu:not(.category-menu) li a {
  color: #666666;
  font-family: Cabin;
  font-size: 14px;
  font-weight: 400;
  margin: 0;
  padding: 13px 20px;
  text-transform: capitalize;
}
.main-menu ul li .sub-menu.category-menu{
	width:897px;
	height:184px;
	top:36px;
	border-top:1px solid #666666;
    -ms-box-shadow: 0px 4px 0px #05050533;
    box-shadow: 0px 4px 0px #05050533;
}
.main-menu ul li .sub-menu.category-menu li{
	display:inline-block;
	width:150px;
	margin-top:20px;
	margin-bottom:20px;
	vertical-align:top;
}
.main-menu ul li .sub-menu.category-menu li.menu-category-desc{
	font-family:'Lora',serif;
	font-size:13px;
	font-style:italic;
	line-height:16px;
	padding-left:20px;
	padding-right:20px;
	width:165px;

}
.main-menu ul li .sub-menu.category-menu li.menu-category-separator{
    width: 1px;
	height: 84%;
    background-color: #666666;
    position: relative;
    top: 15px;
    margin-top: 0;
    margin-bottom: 0;
}
.main-menu ul li .sub-menu.category-menu li.menu-article{
	padding-left:20px;
}
.main-menu ul li .sub-menu.category-menu li.menu-article .menu-article-title{
	font-family:'Lora',serif;
	font-size:13px;
	font-weight:bold;
	line-height:16px;
	text-align:center;
}

/* general-layout */

/* ============================================================
   Layout
   ============================================================ */

#banner-image{
	background-size:cover;
	background-repeat:no-repeat;
	background-position:center center;
}
#post-content,#sidebar-content,#category-content{
	padding-top:40px;
	padding-bottom:40px;
}
.single-product #post-content,
#post-content.no-banner{
	padding-top:120px;
}
.home #post-content{
	padding-top:0;
}
#post-content .page-title,
#category-content .category-title,
.woocommerce-products-header .category-title{
	font-size:30px;
	font-weight:bold;
	line-height:34px;
	text-transform:uppercase;
	text-align:center;
	padding-bottom:20px;
}
#post-content .page-title{
	margin-bottom:30px;
	border-bottom:1px solid #333333;
}
#post-content .wpb_text_column.wpb_content_element a{
	text-decoration:underline;
	color:#777777;
}
.category-intro-row{
	margin-bottom:15px;
}
.category-intro-row-inner{
	padding-top:30px;
	padding-bottom:30px;
	max-width:760px;
	margin:0 auto;
	text-align:center;
	padding-left: 6px;
    padding-right: 6px;
}
.post-intro,.category-intro{
	text-align:center;
}
#post-content .page-intro,.post-intro,.category-intro{
	font-family:'Lora',sans-serif;
	font-style:italic;
}
#post-content .page-intro{
	font-size:22px;
	line-height:26px;
	padding-bottom:30px;
}
#article-single-head .post-intro{
	font-size:19px;
	line-height:22px;
}
#post-content .page-intro{
	margin-bottom:30px;
	border-bottom:1px solid #333333;
}
#post-content .heading-underline{
	margin-top:6px;
	margin-bottom:15px;
	min-height:2px;
	max-width:80px;
	background-color:#bf1e2d;
}
#post-content .location-field:not(:first-child){
	margin-top:60px;
}

.article-single-meta.text-light .article-single-category,
.article-single-meta.text-light .article-single-tags,
.article-single-meta.text-light .post-title,
.article-single-meta.text-light .post-intro,
.category-intro.text-light{
	color:#ffffff;
}

.post-title > a {
  color: #383838;
  transition:.3s;
}
.post-title > a:hover{color:#bf1e2d;}
.post-title {
  font-size: 30px;
	font-weight:bold;
	margin-bottom:15px;
	margin-top:15px;
}

#nav-mobile{
	width:100%;
	padding:0 5px 20px;
	cursor:pointer;
	z-index: 10;
  position: absolute;
  background-color: #fff;
	text-align: center;
	border-top:1px solid #666666;
	border-bottom:1px solid #666666;
}

#nav-mobile .navigation li a{
	display: block;
	font-family: 'Lora', serif;
	font-size: 16px;
	font-weight: bold;
	line-height: 19px;
	padding: 15px 5px;
	text-transform: uppercase;
	transition: all 0.3s ease 0s;
	overflow: hidden;
}

#nav-mobile .navigation li:not(:last-child) a:after{
	content:'';
	display:block;
	text-align:center;
	height:1px;
	width: 120px;
	border-bottom:1px solid #666666;
	margin:0 auto;
	position:relative;
	top:10px;
}
#nav-mobile .search-form{
	position: relative;
	left: 16px;
}

#nav-mobile .search-form .search-field{
	width:240px;
}

/* ============================================================
   Footer
   ============================================================ */

#footer{
	position:relative;
}

.copyright{
	text-align:center;
	font-size: 12px;
	margin-bottom:0;
}

#footer-subscribe{
	text-align:center;
}

#footer-subscribe div.subscribe-text,#footer-subscribe div.wpcf7{
	display:inline-block;
}

#footer-subscribe .subscribe-text{
	font-family: 'Lora', serif;
	font-size:15px;
	font-weight:bold;
	margin-right:12px;
}

#footer-subscribe input.wpcf7-email{
	border:none;
	font-size:14px;
}

input.wpcf7-email, input.wpcf7-text, textarea{
	padding:5px 10px;
}

input.wpcf7-submit{
	font-family: 'Lora', serif;
	font-weight:bold;
	font-size:12px;
	padding:5px 15px;
	letter-spacing:0.05em;
	border:none;
	color:#fff;
	background-color:#666666;
}

#post-content input.wpcf7-email,
#post-content input.wpcf7-text,
#post-content textarea{
	width:90%;
	max-width:470px;
	border:1px solid #666666;
	font-size:14px;
}

#post-content .wpcf7 label{
	font-family:'Lora',sans-serif;
	font-weight:bold;
	font-size:16px;
	text-transform:uppercase;
	margin-bottom:10px;
}

/* PAGE CONTENT */

/* ============================================================
   Page content / articles
   ============================================================ */

.shop-now-block{
	background-size:cover;
	background-repeat:no-repeat;
	background-position:center center;

}

.shop-now-block.sidebar-layout{
	min-height:270px;
	height:auto;
	padding:20px;
}

.shop-now-block.content-layout{
	max-width:800px;
	margin:0 auto;
	padding:20px;
	margin-top:32px;
}

.page-template-page-enursery .shop-now-block.content-layout{
	margin-top:0;
}

.shop-now-block.content-layout.bottom-hr{
	margin-bottom:32px;
}

.shop-now-content{
	display:flex;
	justify-content:space-between;
}

.shop-now-block.sidebar-layout .shop-now-content{
	flex-direction:column;
}

.shop-now-block.content-layout .shop-now-content h3{
	margin: auto 0;
}

.shop-now-content h3{
	font-size:38px;
	font-weight:bold;
	line-height:46px;
	color:#ffffff;
	text-align:left;
	text-transform:uppercase;
}
.shop-now-content h3 span{
	display:block;
	font-size:28px;
	font-weight:normal;
	font-style:italic;
	text-transform:none;
	line-height:34px;
	color:#ffffff;
	text-align:left;
}
.shop-now-block.content-layout h3{
	padding-left:10px;
}
.shop-now-block.content-layout .shop-now-link{
	text-align:right;
}

.shop-now-block.sidebar-layout .shop-now-link{
	margin-top:56px;
	text-align:left;
}

.shop-now-block.sidebar-layout h3{
		max-width:230px;
}

.shop-now-link img{
	max-width:100px;
	height:auto;
}

.subscribe-widget{
	padding:20px 20px 15px;
	background-color:#edeced;
}

#post-content .subscribe-widget-title{
	font-family:'Lora',sans-serif;
	font-weight:bold;
	text-transform:uppercase;
	margin-bottom:5px;
}

#post-content .subscribe-widget-text{
	font-family:'Lora',sans-serif;
	font-style:italic;
	margin-bottom:15px;
	font-size:15px;
}

#post-content .subscribe-widget .wpcf7-email{
	border:none;
	width:100%;
}

#post-content .subscribe-widget .wpcf7-submit{
	margin-top:5px;
	float:right;
}

#post-content .subscribe-widget .wpcf7-submit:after{
	clear:both;
}

.subscribe-widget--home{
	display:grid;
	grid-template-columns:auto minmax(540px, 1fr) minmax(360px, 400px);
	align-items:center;
	column-gap:24px;
	padding:45px 0 48px;
	background-color:#ffffff;
	border-bottom:1px solid #333333;
	box-sizing:border-box;
}

.subscribe-widget--no-hairline{
	border-bottom:none;
}

.subscribe-widget--home.subscribe-widget--no-title{
	grid-template-columns:minmax(520px, 1fr) minmax(360px, 470px);
}

#post-content .subscribe-widget--home .subscribe-widget-title{
	margin-bottom:0;
	font-size:20px;
	line-height:1;
}

#post-content .subscribe-widget--home .subscribe-widget-text{
	margin-bottom:0;
	font-size:19px;
	line-height:1.35;
}

.subscribe-widget--home .wpcf7{
	width:100%;
	align-self:center;
}

.subscribe-widget--home .wpcf7 form{
	display:flex;
	flex-direction:column;
	justify-content:center;
	margin:0;
}

.subscribe-widget--home .wpcf7 form > p{
	display:grid;
	grid-template-columns:minmax(0, 1fr) 160px;
	gap:6px;
	align-items:center;
	margin:0;
}

.subscribe-widget--home .wpcf7-form-control-wrap{
	display:block;
}

#post-content .subscribe-widget--home .wpcf7-email{
	height:40px;
	margin:0;
	padding:0 18px;
	border:1px solid #c9c9c9;
}

#post-content .subscribe-widget--home .wpcf7-submit{
	width:100%;
	height:40px;
	margin:0;
	float:none;
	background-color:#666666;
}

.subscribe-widget--home .wpcf7-spinner,
.subscribe-widget--home .wpcf7-response-output{
	grid-column:1 / -1;
}
/* Collapse idle spinner — prevents phantom second grid row below email/button */
.subscribe-widget--home .wpcf7-spinner{
	display:none;
}
.subscribe-widget--home .wpcf7-form.submitting .wpcf7-spinner{
	display:inline-block;
}

.articles-like-block,.articles-latest-block,.community-block{
	margin-top:50px;
}

.articles-latest-block .article-item:hover .article-category{
	background-color:#333333;
}
.articles-latest-block .article-item:hover .article-link a{
	color:#333333;
}

.community-block .community-intro{
	margin-bottom:20px;
}

.full-width-title {
	font-family:'Lora',serif;
	font-weight:bold;
	font-size:22px;
	line-height:26px;
	text-align:center;
	text-transform:uppercase;
    overflow: hidden;
    text-align: center;
	margin-bottom:30px;
}
.full-width-title:before,
.full-width-title:after {
    background-color: #666666;
    content: "";
    display: inline-block;
    height: 1px;
    position: relative;
    vertical-align: middle;
    width: 50%;
}
.full-width-title:before {
    right: 0.5em;
    margin-left: -50%;
}
.full-width-title:after {
    left: 0.5em;
    margin-right: -50%;
}
/* Mobile: drop the side-lines — hide the line before the text, place a single
   centred line below the text instead. */
@media (max-width: 767px) {
	/* Drop the heading's own bottom margin on mobile — the stacked-element
	   spacing already provides the gap, so 30px here double-spaces it. */
	.full-width-title { margin-bottom: 0; }
	.full-width-title:before { display: none; }
	.full-width-title:after {
		display: block;
		width: 100%;
		margin: 12px auto 0;
		left: auto;
	}
}

/* E-nursery: guard against horizontal page scroll on mobile. A bottom
   vc_column-gap-30 row uses margin:0 -30px that nothing clips, pushing the
   page ~15px past the viewport. overflow-x:clip contains it without creating
   a scroll container (vertical scrolling and fixed bars are unaffected). */
#post-content.enursery { overflow-x: clip; }

/* E-nursery — section spacing migrated out of WPBakery per-row DB CSS
   (vc_custom_*) so the page-builder data stays vanilla. Hooks (el_id/el_class)
   live in the page content. The old margin-right:0 / padding-left:0 "gutter
   hacks" are simply dropped — rows now use the default even vc_row-fluid
   gutters. The hero keeps its contained, zero-column-padding look. */
#post-content.enursery #header-text-slider { margin-left: 0 !important; margin-right: 0 !important; }
#post-content.enursery #header-text-slider > .wpb_column > .vc_column-inner { padding: 0 !important; }
#post-content.enursery .enursery-head { margin-top: 50px; }
#post-content.enursery .enursery-section-mb { margin-bottom: 50px; }
#post-content.enursery #plantbox { margin-bottom: 60px; }
#post-content.enursery #plantbox > .wpb_column > .vc_column-inner { padding-top: 20px; }
#post-content.enursery .enursery-subtitle { padding-bottom: 30px; }
#post-content.enursery .enursery-faq-intro { padding: 20px 0; }

#article-single-head{
	border-top:3px solid #ffffff;
	background-color:#f7e65c;
	padding:15px 10px 20px;
}

.article-single-meta{
	max-width:760px;
	margin:0 auto;
	text-align:center;
}

.article-single-category,.article-single-tags{
	display:inline-block;
	font-family:'Lora',serif;
	font-weight:bold;
	font-size:12px;
	text-transform:uppercase;
}

.article-photo-block{
	margin-bottom:30px;
}

.article-text-block{
	margin-bottom:40px;
}

.article-text-block.enlarged-quote p{
	font-family:'Lora',serif;
	font-style:italic;
	font-size:22px;
	line-height:26px;
}

/* Article Text Block CTA — lead-in text + outlined button link (npp_article_text).
   20px gap from the article body (15px mobile); italic Lora lead-in, minimal
   rounded Cabin button. */
.article-cta{
	margin-top:20px;
	display:flex;
	flex-wrap:wrap;
	align-items:center;
	justify-content:center;
	gap:16px;
	text-align:center;
}
.article-cta__text{
	font-family:'Lora',serif;
	font-style:italic;
	font-size:1rem;
	line-height:1.4;
	color:inherit;
}
.article-cta__btn{
	display:inline-block;
	font-family:'Cabin',sans-serif;
	font-size:0.85rem;
	letter-spacing:0.04em;
	padding:9px 22px;
	border:1px solid currentColor;
	border-radius:50px;
	color:inherit;
	text-decoration:none;
	white-space:nowrap;
	transition:background-color 0.2s ease, color 0.2s ease, border-color 0.2s ease;
}
.article-cta__btn:hover,
.article-cta__btn:focus{
	background:#adc087;
	border-color:#adc087;
	color:#333;
}
@media (max-width: 767px){
	.article-cta{ margin-top:15px; gap:12px; }
	.article-cta__text{ font-size:0.95rem; }
	.article-cta__btn{ font-size:0.8rem; padding:8px 18px; }
}

.article-photo-block div[class^="col-"]{
	text-align:center;
}

.article-photo-block .caption,
.article-photo-block .photographer{
	text-align:left;
}

.article-photo-block.triple_b-layout .col-right img:last-child{
	margin-top:22px;
}
.article-photo-block.triple_a-layout .col-right img:last-child{
	margin-top:20px;
}

.article-item{
	margin-bottom:40px;
}

.article-category{
	text-transform:uppercase;
	font-weight:bold;
	text-align:center;
	background-color:#666666;
	padding:5px 0 5px;
	letter-spacing:0.5px;
}

.article-category a{
	color:#ffffff;
}

.article-image{
	margin-top:2px;
	margin-bottom:12px;
}

.article-image a{
	display:block;
}

.article-image img{
	max-width:100%;
	height:auto;
}

.article-title{
	font-weight:bold;
	text-align:center;
}

/* ── ARTICLE CAROUSEL — TO REPLACE WITH NEW SLIDER ─────────────────────────
   All rules in this section will be removed when the carousel widget
   is rebuilt. Search: TO REPLACE SLIDER
   ───────────────────────────────────────────────────────────────────────── */
.article-carousel-title{
	font-size:30px;
	line-height:34px;
	text-align:left;
	padding-top:40px;
}

.article-link{
	border-top:1px solid #666666;
	border-bottom:1px solid #666666;
	padding:2px 10px;
	text-align:right;
}

/* Border moves to the outer row so it spans full width and aligns with
   the category block height. article-link border is suppressed here. */
.article-footer {
	border-top: 1px solid #666666;
	border-bottom: 1px solid #666666;
	display: flex;
	align-items: stretch;
}
.article-footer > [class*="col-"] {
	padding-left: 0;
	padding-right: 0;
}
.article-footer .article-category {
	margin-bottom: 0;
	display: flex;
	align-items: center;
	justify-content: center;
	height: 100%;
}
.article-footer .article-link {
	border: none;
	display: flex;
	align-items: center;
	justify-content: flex-end;
	height: 100%;
}

.articles-like-block .article-link{
	margin-top:15px;
}

.article-excerpt{
	margin-top:8px;
	margin-bottom:30px;
	text-align:center;
}

.articles-latest-block .article-excerpt{
	min-height:40px;
	max-width:500px;
	margin-left:auto;
	margin-right:auto;
}
/* Thumb fills the (now wider, ~600px) 2-up column. The global .article-image
   img is only max-width:100%, so the 570px article-large crop stopped short of
   the column after the container widened to 1280 — force width:100% here. The
   ~5% upscale (570->~600) is imperceptible, so no thumbnail regen is needed. */
.articles-latest-block .article-image img{
	width:100%;
}

.article-carousel{
	height:300px;
	margin-bottom:3px;
}

.article-carousel .article-item{
	background-color:#f7e65c;
	padding:20px;
	margin-bottom:0;
	height:300px;
}

.article-carousel-excerpt{
	margin-top:30px;
	margin-bottom:40px;
}

.article-link a{
	font-family:'Lora',serif;
	font-size:12px;
	font-weight:bold;
	text-transform:uppercase;
	color:#666666;
}

.article-carousel-link a{
	font-family:'Lora',serif;
	font-size:12px;
	font-weight:bold;
	text-transform:uppercase;
	color:#333333;
}

.article-carousel .article-item.text-light .article-carousel-title,
.article-carousel .article-item.text-light .article-carousel-excerpt p,
.article-carousel .article-item.text-light .article-carousel-link a{
	color:#ffffff;
}

.npp-hero-carousel{
	height:auto;
	margin-bottom:0;
}

/* Owl's own stylesheet sets .owl-carousel{display:none} until its JS adds
   .owl-loaded. That leaves the hero blank during first paint even though the
   image has already downloaded. Render the first slide immediately and hide
   the rest until Owl takes over. */
.npp-hero-carousel .owl-carousel:not(.owl-loaded){
	display:block;
}

.npp-hero-carousel .owl-carousel:not(.owl-loaded) .article-item{
	display:none;
}

.npp-hero-carousel .owl-carousel:not(.owl-loaded) .article-item:first-child{
	display:block;
}

.npp-hero-carousel .article-item{
	position:relative;
	height:clamp(420px, 46vw, 552px);
	padding:0;
	overflow:hidden;
	background-color:#f4ccd6;
}

.npp-hero-slide-media{
	position:absolute;
	inset:0;
	display:block;
}

.npp-hero-slide-media img{
	width:100%;
	height:100%;
	object-fit:cover;
	display:block;
}

/* Box is bottom-anchored at the offset a 240px-tall centred box would have,
   so its bottom edge (LEARN MORE + dots row) stays fixed and any extra
   content growth extends upward. Keeps the dots calc below exact. */
.npp-hero-slide-content{
	position:absolute;
	bottom:calc((100% - 240px) / 2);
	left:4%;
	z-index:2;
	display:flex;
	flex-direction:column;
	width:29%;
	min-height:240px;
	padding:clamp(22px, 2.4vw, 34px) clamp(22px, 2.4vw, 34px) clamp(16px, 1.8vw, 24px);
	background-color:#f4ccd6;
	color:#333333;
}

.npp-hero-carousel .article-carousel-title{
	margin:0 0 12px;
	padding-top:0;
	color:#333333;
	font-size:2.2rem;
	line-height:1;
	font-weight:400;
}

.npp-hero-carousel .article-carousel-excerpt{
	margin:0 0 20px;
}

.npp-hero-carousel .article-carousel-excerpt p{
	margin:0;
	color:#666666;
	font-size:16px;
	line-height:1.35;
}

/* LEARN MORE — text link matching .npp-color-card__cta (Cabin uppercase +
   chevron), pinned to the box's bottom-left via margin-top:auto on the flex
   column. Dots share the bottom row, right corner. */
.npp-hero-carousel .article-carousel-link{
	margin-top:auto;
}

.npp-hero-carousel .article-carousel-link a,
.npp-hero-carousel .article-item.text-light .article-carousel-link a{
	display:inline-flex;
	align-items:center;
	gap:8px;
	padding:0;
	border:0;
	font-family:'Cabin', sans-serif;
	font-size:0.8rem;
	font-weight:400;
	letter-spacing:0.08em;
	text-transform:uppercase;
	color:#333333;
	background-color:transparent;
	line-height:1;
}

.npp-hero-carousel .article-carousel-link a::after{
	content:'\203A';
	font-size:1.2rem;
	line-height:0.8;
	transition:transform 0.2s ease;
}

.npp-hero-carousel .article-carousel-link a:hover::after,
.npp-hero-carousel .article-carousel-link a:focus::after{
	transform:translateX(3px);
}

.npp-hero-carousel .article-item.text-light .article-carousel-title,
.npp-hero-carousel .article-item.text-light .article-carousel-excerpt p,
.npp-hero-carousel .article-item.text-light .article-carousel-link a{
	color:#ffffff;
}

.npp-hero-carousel .article-carousel-link a:hover,
.npp-hero-carousel .article-carousel-link a:focus{
	color:#333333;
	text-decoration:none;
}

.npp-hero-carousel .article-item.text-light .article-carousel-link a:hover,
.npp-hero-carousel .article-item.text-light .article-carousel-link a:focus{
	color:#ffffff;
}

/* Slider dots sit inside the overlay box, bottom-right corner. The dots node
   lives at carousel level, so we give it the same left/width footprint as
   .npp-hero-slide-content and right-align the dots to land in its corner. The
   box is vertically centred with a fixed min-height, so its bottom edge is a
   predictable offset from the carousel bottom. */
.npp-hero-carousel .owl-theme .owl-nav.disabled + .owl-dots{
	top:auto;
	left:4%;
	right:auto;
	/* -3px: dot spans carry 5px internal margin, so the glyphs sit ~3px
	   higher than the LEARN MORE text's optical centre without it. */
	bottom:calc((100% - 240px) / 2 + clamp(16px, 1.8vw, 24px) - 3px);
	width:29%;
	padding-right:clamp(22px, 2.4vw, 34px);
	margin:0;
	transform:none;
	text-align:right;
	/* The container spans the box's full width (to right-align the dots) and
	   paints above the box — without this it swallows LEARN MORE's clicks. */
	pointer-events:none;
}

.npp-hero-carousel .owl-theme .owl-dots .owl-dot{
	pointer-events:auto;
}

/* Dot colour follows the active slide's box text colour — script.js toggles
   .is-light on .npp-hero-carousel when the active slide is .text-light. */
.npp-hero-carousel .owl-theme .owl-dots .owl-dot span{
	border-color:#777777;
}
.npp-hero-carousel .owl-theme .owl-dots .owl-dot.active span,
.npp-hero-carousel .owl-theme .owl-dots .owl-dot:hover span{
	background:#777777;
}
.npp-hero-carousel.is-light .owl-theme .owl-dots .owl-dot span{
	border-color:#ffffff;
}
.npp-hero-carousel.is-light .owl-theme .owl-dots .owl-dot.active span,
.npp-hero-carousel.is-light .owl-theme .owl-dots .owl-dot:hover span{
	background:#ffffff;
}

/* Hero — video background variant */
.npp-hero-carousel--video{
	position:relative;
	overflow:hidden;
}
.npp-hero-carousel--video .npp-hero-bg-video{
	position:absolute;
	inset:0;
	width:100%;
	height:100%;
	object-fit:cover;
	z-index:0;
	pointer-events:none;
}
.npp-hero-carousel--video > .owl-carousel{
	position:relative;
	z-index:1;
}
.npp-hero-carousel--video .article-item{
	background-color:transparent;
}
.npp-hero-carousel--video .owl-theme .owl-nav.disabled + .owl-dots{
	z-index:2;
}

.community-intro p{
	font-family:'Lora',serif;
	text-align:center;
}

.community-social{
	text-align:center;;
}
.community-social li{
	margin-left:5px;
	margin-right:5px;
	padding:1px;
	display:inline-block;
}
.community-social img{
	width:22px;
	height:22px;
}

.no-gutter {
  margin-right: 0;
  margin-left: 0;
}

.no-gutter > [class*="col-"] {
  padding-right: 0;
  padding-left: 0;
}

.caption{
	max-width:764px;
	margin-top:15px;
	padding-left:10px;
	padding-right:10px;
	font-family:'Lora',serif;
	font-size:13px;
	font-style:italic;
}
.caption p{
	font-size:12px;
}

.photographer{
	max-width:764px;
	margin-top:15px;
	padding-left:10px;
	padding-right:10px;
	font-family: 'Cabin',sans-serif;
	font-size:12px;
}

.photographer a{
	text-decoration:underline;
}

.spacer{
	height:40px;
}

.slider-image img{
	min-width: 100%;
    height: auto;
    max-height: 552px;
    overflow: auto;
	object-fit:cover;
}

.wp-pagenavi{margin-top:40px;margin-bottom:60px;}

.enursery-bg{background-color:#5a6d8c;}

/* OWL CAROUSEL */

/* ============================================================
   Owl Carousel
   ============================================================ */

.owl-theme .owl-nav {
  margin-top: 10px;
  text-align: center;
  -webkit-tap-highlight-color: transparent;
}
.owl-theme .owl-nav [class*='owl-'] {
	color: #FFF;
	font-size: 14px;
	margin: 5px;
	padding: 4px 7px;
	background: #D6D6D6;
	display: inline-block;
	cursor: pointer;
	border-radius: 3px;
}
.owl-theme .owl-nav [class*='owl-']:hover {
	background: #869791;
	color: #FFF;
	text-decoration: none;
}
.owl-theme .owl-nav .disabled {
	opacity: 0.5;
	cursor: default;
}
.owl-theme .owl-nav.disabled + .owl-dots {
	margin-top: 10px;
	position: absolute;
	top: 0;
	right: 20px;
}
.owl-theme .owl-dots {
  text-align: center;
  -webkit-tap-highlight-color: transparent;
}
.owl-theme .owl-dots .owl-dot {
	display: inline-block;
}
.owl-theme .owl-dots .owl-dot span {
	width: 8px;
	height: 8px;
	margin: 5px 5px;
	background: transparent;
	display: block;
	-webkit-backface-visibility: visible;
	backface-visibility: visible;
	transition: opacity 200ms ease;
	border-radius: 50%;
	border: 1px solid #ffffff;
}
.owl-theme .owl-dots .owl-dot.active span, .owl-theme .owl-dots .owl-dot:hover span {
	background: #ffffff;
}

/* E-Nursery — #video-mod responsive carousel heights
   Desktop falls back to global .article-carousel 300px. Specificity (1,1,0)
   matched below so these override the general .article-carousel media rules. */
@media (max-width: 1199px) {
	#video-mod .article-carousel,
	#video-mod .owl-carousel .owl-stage-outer { height: 190px; }
}
@media (max-width: 990px) {
	#video-mod .article-carousel,
	#video-mod .owl-carousel .owl-stage-outer { height: 160px; }
}
/* Hero row layout — slider/video at 16:9, right column flexes subscribe to fill */
#npp-slider {
	aspect-ratio: 16 / 9;
	width: 100%;
	overflow: hidden;
}
#npp-slider img,
#npp-slider .slider-image,
#npp-slider .slider-image img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
}
.vc_row-o-equal-height .vc_column-inner:has(> .wpb_wrapper > .article-carousel + .subscribe-widget),
.vc_row-o-equal-height .vc_column-inner > .wpb_wrapper:has(> .article-carousel + .subscribe-widget) {
	display: flex;
	flex-direction: column;
	height: 100%;
}
.vc_row-o-equal-height .vc_column-inner > .wpb_wrapper > .article-carousel + .subscribe-widget {
	flex: 1 1 auto;
	min-height: 0;
}
/* ── END ARTICLE CAROUSEL ──────────────────────────────────────────────────── */

/** WOOCOMMERCE **/

/* ============================================================
   WooCommerce
   ============================================================ */

.woocommerce .woocommerce-result-count,
.woocommerce .woocommerce-ordering select{
    display:none;
}

.woocommerce div.product p.stock{
    text-align:center;
}

.bundled_item_cart_details p.stock{
	display:none;
}

.woocommerce div.product .product_title{
	font-weight:bold;
	text-align:left;
	margin-top:0.9375rem;
	margin-bottom:0.9375rem;
}

.woocommerce div.product .bundled_product_title.product_title{
	margin-bottom:8px;
}

.woocommerce div.product .product_meta{
	text-align:left;
	font-family:'Lora',serif;
	font-size:1.375rem;
	font-style:italic;
}

.woocommerce div.product p.price{
	text-align:left;
	margin-top:1.875rem;
}

.woocommerce div.product .tc-extra-product-options.tc-show, .woocommerce div.product .tc-extra-product-options.tc-show-override{
	display: flex;
	justify-content: flex-start;
}

.woocommerce div.product p.price, .woocommerce div.product span.price{
	font-family:'Lora',serif;
	font-weight:bold;
	font-size:1rem;
	text-transform:uppercase;
	color:#999999;
}

.woocommerce div.product .entry-summary p.price{
	margin-bottom:0.3125rem;
}

.woocommerce div.product .tm-extra-product-options{
	margin-bottom:20px;
	padding-top:10px;
}

.woocommerce div.product .tm-extra-product-options .tm-extra-product-options-field{
	float:none;
}

.woocommerce div.product .tm-extra-product-options .tm-epo-field-label.tm-left{
	max-width:50%;
}

.woocommerce div.product .tm-extra-product-options-totals .tm-options-totals,
.woocommerce div.product .tm-extra-product-options-totals dt.tm-final-totals{
	display:none;
}

.woocommerce div.product .tm-extra-product-options-totals dd.tm-final-totals .price{
	padding-left:15px;
}

.woocommerce div.product .tc-totals-form{
	display: inline-block;
	width:64%;
	border-style:solid;
	border-width:1px 0 1px 0;
	border-color:#666666;
}

.woocommerce div.product .tc-totals-form .tm-epo-totals{
	padding-top:7px;
	padding-bottom:8px;
}

td.product-name a.tm-cart-edit-options, .tm-cart-edit-options{
	display:none;
}

.woocommerce div.product.product-type-simple form.cart{
	padding-top: 7px;
    border-style: solid;
    border-width: 1px 0 1px 0;
    border-color: #666666;
    display: flex;
    justify-content: flex-start;
    align-items: center;
    padding-bottom: 5px;
    margin-top: 2em;
}

.woocommerce div.product.product-type-simple form.cart .quantity-label{
    margin-right: 10px;
}

.woocommerce div.product.product-type-simple form.cart div.quantity {
    float: none;
    margin: 0 4px 0 0;
    flex-grow: 2;

}

.woocommerce div.product.product-type-simple form.cart div.quantity input{
	border: 0;
    background-color: #eee;
	padding-top: 5px;
    padding-bottom: 5px;
}

.woocommerce div.product.product-type-simple form.cart div.quantity::after {
	content: "QTY OF  BOXES";
	display: inline-block;
	margin-right: 8px;
	font-weight: normal;
	font-size: 14px;
	color: #333;
}

.woocommerce div.product form.cart .button.single_add_to_cart_button{
	float: none;
    display: inline-block;
    width: 35%;
	color:#ffffff;
	text-transform:uppercase;
	background-color:#666666;
	font-family:'Lora',serif;
	font-weight:bold;
	font-size:16px;
	border-radius:0;
	padding:10px 15px;
	position: relative;
    top: -1px;
}

.woocommerce div.product.product-type-bundle form.cart .bundle_button{
	border-style: solid;
    border-width: 1px 0 1px 0;
    border-color: #666666;
    width: 100%;
    bottom: 0;
    left: 0;
    z-index: 1;
    background-color: #f7f6f7;
	-o-transition: position 500ms ease-out;
	transition: position 500ms ease-out;
}

.woocommerce div.product.product-type-bundle form.cart .tc-totals-form{
	display:none!important;
}

.woocommerce div.product.product-type-bundle form.cart .bundle_button.bundle_button_fixed{
	position: fixed;
}

.woocommerce div.product.product-type-bundle form.cart .bundle_button .bundle_button_inner{
	max-width:962px;
	width:100%;
	margin:0 auto;
	display: flex;
    justify-content: flex-end;
    align-items: center;
}

.woocommerce div.product.product-type-bundle form.cart .bundle_button .bundle_button_inner .bundle_error{
	flex-grow:2;
}

.woocommerce div.product.product-type-bundle form.cart .bundle_button .bundle_error .woocommerce-info{
    margin-bottom: 0;
	padding-left:5px;
	padding-right:5px;
}

.woocommerce div.product.product-type-bundle form.cart .bundle_button .bundle_add_to_cart_button{
	width:auto;	
	margin:8px 5px;
}

.woocommerce div.product .woocommerce-product-details__short-description{
	text-align:left;
}

.woocommerce div.product .woocommerce-product-details__short-description p{
	font-family:'Lora',serif;
	font-size:1.125rem;
	font-style:italic;
	line-height:1.4;
}

.woocommerce div.product .npp-product-description{
	margin-top:1.25rem;
	text-align:left;
}

/* ============================================================
   NPP-BOX-SINGLE — Box (CPB) single product title + description
   Left-aligned redesign (mockup): uppercase title, italic-serif
   description, dark price with a muted "+ shipping & handling"
   suffix, and a divider rule before the "Please note" block.
   Scope: products of type cpb_custom_product_boxes only — standard
   plant products are unaffected beyond the shared left-align above.
   Order (title -> description -> price -> note) is set in PHP, see
   npp_box_reorder_summary() in functions.php.
   ============================================================ */
/* Visual order (mockup): title -> description -> price -> note. The CPB fork
   renders them as title, price, description, note; flex-order rearranges them
   without changing the markup. */
.woocommerce div.product-type-cpb_custom_product_boxes .summary.entry-summary{
	display:flex;
	flex-direction:column;
}
.woocommerce div.product-type-cpb_custom_product_boxes .summary.entry-summary > .product_title{ order:1; }
.woocommerce div.product-type-cpb_custom_product_boxes .summary.entry-summary > .npp-product-description{ order:2; }
.woocommerce div.product-type-cpb_custom_product_boxes .summary.entry-summary > .price{ order:3; }
.woocommerce div.product-type-cpb_custom_product_boxes .summary.entry-summary > .npp-product-note{ order:4; }

.woocommerce div.product-type-cpb_custom_product_boxes .product_title{
	text-transform:uppercase;
	margin-bottom:0.6rem;
}

/* Summary is a flex column, so adjacent margins don't collapse — keep one
   controlled gap (title margin-bottom) and zero the description's top margin. */
.woocommerce div.product-type-cpb_custom_product_boxes .npp-product-description{
	margin-top:0;
}

.woocommerce div.product-type-cpb_custom_product_boxes .npp-product-description p{
	font-family:var(--npp-font-serif);
	font-size:1.25rem;
	font-style:italic;
	line-height:1.45;
	margin:0 0 0.6rem;
}

.woocommerce div.product-type-cpb_custom_product_boxes .npp-product-description p:last-child{
	margin-bottom:0;
}

.woocommerce div.product-type-cpb_custom_product_boxes p.price{
	color:var(--npp-charcoal);
	font-size:1.5rem;
	margin-top:1.5rem;
	margin-bottom:0;
}

.woocommerce div.product-type-cpb_custom_product_boxes .npp-price-suffix{
	font-family:var(--npp-font-sans);
	font-weight:400;
	font-size:0.85rem;
	text-transform:none;
	color:var(--npp-grey);
}

.woocommerce div.product-type-cpb_custom_product_boxes .npp-product-note{
	margin-top:1.5rem;
	padding-top:1.5rem;
	border-top:1px solid var(--npp-line-soft);
}

.woocommerce div.product-type-cpb_custom_product_boxes .npp-product-note p{
	font-family:var(--npp-font-sans);
	font-size:0.85rem;
	font-style:normal;
	line-height:1.55;
	color:var(--npp-grey);
	margin-bottom:0.75rem;
}

.woocommerce div.product-type-cpb_custom_product_boxes .npp-product-note p:last-child{
	margin-bottom:0;
}

/* Gallery thumbnails: single scrollable row (no wrapping when >4 images).
   Scrollbar hidden — npp-gallery-thumbs.js adds chevron arrows at either
   end that fade out when there is nothing further to scroll. */
.woocommerce div.product div.images .flex-control-thumbs {
	margin-top:8px;
	display: flex;
	flex-wrap: nowrap;
	gap: 8px;
	overflow-x: auto;
	-webkit-overflow-scrolling: touch;
	scrollbar-width: none;
}

.woocommerce div.product div.images .flex-control-thumbs::-webkit-scrollbar { display: none; }

/* 4 thumbs + 3 gaps fill the feature-image width exactly */
.woocommerce div.product div.images .flex-control-thumbs li {
	flex: 0 0 calc(25% - 6px);
	float: none;
}

.npp-thumbs-wrap { position: relative; }

.npp-thumbs-arrow {
	position: absolute;
	top: 50%;
	transform: translateY(-50%);
	z-index: 2;
	display: flex;
	align-items: center;
	justify-content: center;
	width: 30px;
	height: 30px;
	padding: 0;
	border: 1px solid #e4e2dd;
	border-radius: 50%;
	background: #fff;
	color: #666;
	cursor: pointer;
	transition: opacity 0.15s ease, color 0.15s ease;
}
.npp-thumbs-arrow:hover { color: #3d3d3a; }
.npp-thumbs-arrow:focus { outline: none; }
.npp-thumbs-arrow:focus-visible { outline: 2px solid #2f6b3a; outline-offset: 2px; }
/* Half on / half off the strip edge */
.npp-thumbs-arrow--prev { left: -15px; }
.npp-thumbs-arrow--next { right: -15px; }
.npp-thumbs-arrow.is-hidden { opacity: 0; pointer-events: none; }

@media (max-width: 767px) {
	.woocommerce div.product div.images .flex-control-thumbs { gap: 6px; }
	.woocommerce div.product div.images .flex-control-thumbs li { flex-basis: calc(25% - 4.5px); }
}

.woocommerce div.product div.images .flex-control-thumbs li img{
	display: block;
	padding: 0;
}

/* Plant box builder + product video */
div#cpb_product_boxes_custom .cpb-feature-image {
	padding: 0 0 60px;
}

section.mwpfv_feature_video.slider {
	margin-bottom: 60px;
}

@media only screen and (min-width: 768px) {
	button.cpb_filters_button.button.alt {
		display: none;
	}
}

.vjs-poster {
	display: inline-block;
	vertical-align: middle;
	background-repeat: no-repeat;
	background-position: 50% 50%;
	background-size: cover;
	background-color: #fff;
	cursor: pointer;
	margin: 0;
	padding: 0;
	position: absolute;
	top: 0;
	right: 0;
	bottom: 0;
	left: 0;
	height: 100%;
}

.video-js .vjs-big-play-button {
	width: 2em;
	top: 40%;
	left: 45%;
	opacity: .7;
	border: 0.06666em solid #fff;
	background-color: #2B333F;
	background-color: rgba(43, 51, 63, 0.2);
}

.cpb-col-classic .cpb-col-filters {
	max-height: 95vh;
	overflow-x: hidden;
	overflow-y: auto;
	position: sticky;
	top: 0;
	float: none;
	scrollbar-width: thin;
	scrollbar-color: black transparent;
}

.cpb-col-classic .cpb-col-filters::-webkit-scrollbar {
	width: 8px;
}

.cpb-col-classic .cpb-col-filters::-webkit-scrollbar-track {
	background: transparent;
}

.cpb-col-classic .cpb-col-filters::-webkit-scrollbar-thumb {
	background-color: black;
	border-radius: 10px;
	border: 2px solid transparent;
	background-clip: content-box;
}

span.cpb_category_filters_item,
.cpb-boxes-filters li label {
	font-family: 'Cabin', sans-serif;
}

/* CPB box category filters — match the nursery (prdctfltr) button-chip look.
   CPB markup has no inner <span>, so the <label> itself is the chip and the
   active state is driven by :has(:checked) (the plugin adds no active class). */
.cpb_categories_filters .cbp_product_categories_ul {
	list-style: none;
	margin: 0;
	padding: 0;
	display: flex;
	flex-wrap: wrap;
}

.cpb_categories_filters .cbp_product_categories_ul li {
	list-style: none;
	margin: 0;
	padding: 0;
}

.cpb_categories_filters span.cpb_category_filters_item {
	display: inline-block;
	margin: 0 6px 8px 0;
}

/* the chip itself = the label */
.cpb_categories_filters span.cpb_category_filters_item label {
	display: inline-flex;
	align-items: center;
	margin: 0;
	cursor: pointer;
	padding: 9px 16px;
	border: 1px solid #c9c9c9;
	border-radius: 6px;
	background-color: #fff;
	color: #666;
	font-family: 'Cabin', sans-serif;
	font-size: 14px;
	letter-spacing: 0.04em;
	text-transform: uppercase;
	line-height: 1;
	transition: background-color 0.15s ease, border-color 0.15s ease, color 0.15s ease;
}

/* hide the native checkbox */
.cpb_categories_filters .cpb-box-cat-filter {
	position: absolute;
	opacity: 0;
	pointer-events: none;
	width: 0;
	height: 0;
}

/* hover */
.cpb_categories_filters span.cpb_category_filters_item label:hover {
	border-color: #adc087;
	color: #333;
}

/* active (checked) — sage green fill + white tick */
.cpb_categories_filters span.cpb_category_filters_item label:has(.cpb-box-cat-filter:checked) {
	background-color: #adc087;
	border-color: #adc087;
	color: #fff;
}

.cpb_categories_filters span.cpb_category_filters_item label:has(.cpb-box-cat-filter:checked)::before {
	content: '';
	display: inline-block;
	flex: 0 0 auto;
	width: 14px;
	height: 14px;
	margin: 0 8px 0 0;
	background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='white' stroke-width='2.8' stroke-linecap='round' stroke-linejoin='round'><polyline points='3 8.5 6.5 12 13 4.5'/></svg>");
	background-repeat: no-repeat;
	background-position: center;
	background-size: contain;
	vertical-align: middle;
}

/* hover an active chip → darker green + cross, signalling deselect */
.cpb_categories_filters span.cpb_category_filters_item label:has(.cpb-box-cat-filter:checked):hover {
	background-color: #8fa66c;
	border-color: #8fa66c;
	color: #fff;
}

.cpb_categories_filters span.cpb_category_filters_item label:has(.cpb-box-cat-filter:checked):hover::before {
	background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='white' stroke-width='2.8' stroke-linecap='round' stroke-linejoin='round'><line x1='4' y1='4' x2='12' y2='12'/><line x1='12' y1='4' x2='4' y2='12'/></svg>");
}

.cpb_product_boxes_carousel {
	width: 600px;
	clear: both;
	max-height: 50vh;
}

.cpb_boxes_item_data {
	max-height: 100vh;
	overflow-y: auto;
}

.cpb_product_quick_view {
	border: none;
}

.cpb-row {
	justify-content: space-around;
}

@media (min-width: 320px) and (max-width: 767px) {
	.cpb-col-filters {
		display: block;
		z-index: 999;
		max-height: 96vh;
		overflow-y: auto;
		position: fixed;
	}

	.cpb-row.cpb-boxes.box-below.cpb-mob-4 {
		position: relative;
		max-height: 40vh;
		overflow-y: scroll;
		padding-bottom: 5px;
		border-bottom: 1px solid #333;
		scrollbar-width: thin;
		scrollbar-color: black transparent;
	}

	.cpb_categories_filters {
		top: 48vh !important;
		position: relative;
		padding: 10px 0;
		overflow-y: scroll;
		max-height: 35vh;
	}

	.cpb-col-classic .cpb-col-filters .cpb-boxes-filters {
		overflow-x: unset;
		padding: 15px 2px 15px 15px;
		transition: 0.5s;
	}

	span.cpb_category_filters_item,
	.cpb_categories_filters span.cpb_category_filters_item label {
		font-size: 12px;
	}
}

/* The two max-height caps that used to sit here (320px <=640px, 280px <=480px) on
   .cpb_product_boxes_slide img were propping up the old box quick-view, where the
   photo ran full width under the text. The popup was rebuilt on 21 Aug 2026 to size
   its own photo area (npp-cpb-enhancements), and these caps only fought it. */

#diy-listings{
	margin-top:45px;
}

#diy-listings .woocommerce ul.products li.product .price{
	margin-top:10px;
	margin-bottom:15px;
}

.woocommerce .product.product-type-bundle table.bundled_products{
	margin-top:30px;
}

.woocommerce .product.product-type-bundle table.bundled_products td.bundled_item_col{
	padding-bottom:0;
}

.woocommerce .product.product-type-bundle table.bundled_products td.bundled_item_col .stock{
    text-align:left;
}

.woocommerce .product.product-type-bundle table.bundled_products td.bundled_item_details_col{
	width:60%;
}

.woocommerce .product.product-type-bundle table.bundled_products .bundled_product_excerpt.product_excerpt{
	display:none;
}

.woocommerce .product.product-type-bundle table.bundled_products .bundled_product_title.product_title{
  font-family: 'Cabin', sans-serif;
  font-size: 18px;
  font-weight: normal;
  line-height: 22px;
  color: #333333;
  text-align:left;
  margin-top:10px;
  margin-bottom:5px;
}

.woocommerce .product.product-type-bundle table.bundled_products .bundle_botanical{
	font-family: 'Lora',serif;
    font-size: 14px;
    font-style: italic;
    line-height: 16px;
    display: block;
    color: #333333;
    text-overflow: ellipsis;
	margin-bottom:5px;
}

.woocommerce .product.product-type-bundle table.bundled_products th.bundled_item_qty_head {
	text-align:right;
}

.woocommerce .product.product-type-bundle table.bundled_products .bundled_item_qty_col{
	padding-right:0;
}

.woocommerce .product.product-type-bundle table.bundled_products .bundled_item_qty_col .quantity{
	margin-top:18px;
	text-align:right;
}

.woocommerce .product.product-type-bundle table.bundled_products .bundled_item_qty_col .quantity input{
	font-family: 'Cabin', sans-serif;
	padding-top: 3px;
    padding-bottom: 3px;
}

.woocommerce .product.product-type-bundle table.bundled_products th.bundled_item_col{
	font-family:'Lora',serif;
	font-size:13px;
	line-height:16px;
	font-weight:bold;
	text-transform:uppercase;
	padding-bottom:5px;
	border-bottom:1px solid #666666;
}

.woocommerce .related.products{
	margin-top:40px;
}

.woocommerce ul.products .button.add_to_cart_button,
.woocommerce ul.products li.product .button,
.archive.woocommerce ul.products .button{
	display:none;
}

.woocommerce ul.products li.product .woocommerce-loop-product__title,
.bundled_product_title.product_title .item_title{
	font-family:'Lora',serif;
	font-size:16.5px;
	font-weight:bold;
	line-height:21px;
	padding-top:0;
	padding-bottom:0;
}

/* Loop product cards — left-aligned, tight (box-card look). Botanical name now
   lives INSIDE this <h3> via .npp-loop-title__botanical (see functions.php). */
.woocommerce ul.products li.product .woocommerce-loop-product__title{
	text-align:left;
	margin:0;
}
.woocommerce ul.products li.product .npp-loop-title__common{
	display:block;
	text-transform:uppercase;
}
.woocommerce ul.products li.product .npp-loop-title__botanical{
	display:block;
	font-family:'Lora',serif;
	font-size:14px;
	font-weight:normal;
	font-style:italic;
	line-height:16px;
	color:#333333;
	text-align:left;
	letter-spacing:0;
	margin-top:2px;
	white-space:normal;
	overflow:visible;
	text-overflow:clip;
}

/* Bundled (CPB box-builder) titles keep their original centred treatment. */
.bundled_product_title.product_title .item_title{
	font-size:17px;
	text-align:center;
}

.bundled_product .bundle_botanical{
	font-family:'Lora',serif;
	font-size:14px;
	font-style:italic;
	line-height:16px;
	display:block;
	text-align:center;
	color:#333333;
	height:20px;
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
}

.woocommerce ul.products li.product .woocommerce-product-details__short-description,
.woocommerce ul.products li.product .bundled_product_excerpt.product_excerpt{
	margin-top:10px;
	min-height:60px;
	text-align:center;
	font-size:14px;
}

.woocommerce ul.products li.product .woocommerce-product-details__short-description p,
.woocommerce ul.products li.product .bundled_product_excerpt.product_excerpt p{
	font-size:14px;
}

.bundled_product .bundled_product_image{
	cursor:pointer;
}

.bundled_product .bundled_product_title{
	cursor:pointer;
}

.bundle_excerpt_hidden,
.bundle_gallery_hidden{
	display:none!important;
}

#bundle-popup{
	display:none;
	position: fixed;
	top: 35%;
	left: 50%;
	transform: translate(-50%, -35%);
	max-width: 470px;
	width: 94%;
	max-height:80vh;
	background: #fff;
	box-shadow:0 0 20px #bbb;
	overflow-y:auto;
	z-index: 1;
}

#bundle-popup-header{
	padding:5px 10px;
	background: #5a6d8c;
}

#bundle-popup-title{
	color:#fff;
	width:80%;
	display:inline-block;
	text-align:left;
}

#bundle-popup-close{
	width:20%;
	color:#fff;
	display:inline-block;
	text-align:right;
	font-size:20px;
	cursor:pointer;
}

#bundle-popup-heading{
	padding-top:20px;
	padding-bottom:10px;
	text-align:center;
}

#bundle-popup .popup-gallery-img{
	width:100%;
	max-width:470px;
	height:353px;
	background-size:cover;
	background-position:center center;
	background-repeat:no-repeat;
}

#bundle-popup-gallery .owl-nav {
	margin-top:0;
    text-align: center;
    -webkit-tap-highlight-color: transparent;
}

#bundle-popup-gallery .owl-prev,
#bundle-popup-gallery .owl-next {
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
}

#bundle-popup-gallery .owl-prev{
	left:0;
}

#bundle-popup-gallery .owl-next{
	right:0;
}

#bundle-popup-gallery.owl-carousel .owl-nav button.owl-prev,
#bundle-popup-gallery.owl-carousel .owl-nav button.owl-next{
	color: #fff;
	font-size: 30px;
	line-height: 30px;
	padding: 5px!important;
	background: rgba(0,0,0,0.5);
	border-radius:3px;
	display: inline-block;
	cursor: pointer;
}

#bundle-popup-gallery .owl-nav button.owl-prev span,
#bundle-popup-gallery .owl-nav button.owl-next span {
    position: relative;
}

#bundle-popup .bundle-popup-excerpt{
	padding:10px 20px 20px;
}

#bundle-popup #bundle-popup-botanical{
	padding-bottom:10px;
	text-align:center;
	font-family: 'Lora',serif;
  font-size: 14px;
  font-style: italic;
  line-height: 16px;
  display: block;
  color: #333;
  height: 20px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

#bundle-popup .bundle-popup-excerpt p{
	text-align:center;
	font-family: 'Lora',serif;
	font-size: 16px;
	font-style: italic;
	line-height: 20px;
}

#bundle-footer-close{
	display:none;
	text-align:right;
	color:#fff;
	cursor:pointer;
	padding:5px;
}

.woocommerce ul.products li.product .price,.sim-price{
	font-family:'Lora',serif;
	font-size:14px;
	font-weight:bold;
	line-height:16px;
	text-transform:uppercase;
	text-align:center;
	display:block;
	padding:5px;
	border-top:1px solid #666666;
	border-bottom:1px solid #666666;
	color:#666666;
	margin-top:25px;
	margin-bottom:30px;
}

/* Product loop — display order (flex reorder). Botanical name now lives inside the
   <h3> title (order 1), so it no longer needs its own order slot. */
.products .product > a { display: flex; flex-direction: column; }
.products .product > a > .woocommerce-loop-product__title { order: 1; }
.products .product > a > .woocommerce-product-details__short-description { order: 3; }
.products .product > a > .price { order: 4; }


/* Sold-out overlay (Back In Stock plugin) */
.woocommerce ul.products li.product { container-type: inline-size; }

.woocommerce ul.products li.product .wcosm_soldout {
	margin: 0;
	width: 100%;
	min-height: 0 !important;
	border-radius: 0;
	position: absolute;
	top: clamp(52px, 27cqw, 73px);
	bottom: auto;
	left: 0;
	right: 0;
	overflow: visible;
	background: rgb(232 230 222 / 94%);
	color: #333;
	display: block;
	z-index: 2;
	pointer-events: none;
	font-family: 'Lora', serif;
	text-align: center;
	padding: clamp(11px, 4cqw, 16px) 12px;
}
.woocommerce ul.products li.product .wcosm_soldout p {
	margin: 0;
	padding: 0;
	font-family: 'Lora', serif;
	font-size: clamp(0.75rem, 6cqw, 1rem);
	font-style: italic;
	line-height: 1.1;
	text-align: center;
	white-space: nowrap;
}
.woocommerce ul.products li.product .wcosm_soldout p strong {
	display: block;
	font-size: clamp(0.75rem, 7cqw, 1.25rem);
	font-weight: 700;
	line-height: 1;
}

.woocommerce ul.products li.product .wcosm_soldout.onsale { margin: 0; }

.woocommerce ul.products li.product input.cwg_popup_submit {
	position: absolute;
	left: 50%;
	right: auto;
	top: clamp(142px, 75cqw, 205px);
	bottom: auto;
	transform: translateX(-50%);
	z-index: 3;
	width: auto;
	min-width: clamp(110px, 38cqw, 134px);
	margin: 0;
	padding: clamp(7px, 3cqw, 9px) clamp(14px, 5cqw, 18px);
	border: 0;
	border-radius: 0;
	background: #adc087;
	color: #fff;
	font-family: 'Lora', serif;
	font-size: clamp(1rem, 7cqw, 1.125rem);
	font-style: italic;
	font-weight: 500;
	line-height: 1.2;
	text-transform: none;
	box-shadow: 0 2px 6px rgba(51,51,51,0.18);
}
.woocommerce ul.products li.product input.cwg_popup_submit:hover,
.woocommerce ul.products li.product input.cwg_popup_submit:focus {
	background: #8fa66b;
	color: #fff;
}

.cwginstock-subscribe-form .panel-primary > .panel-heading {
	background-color: #adc087;
	border-color: #adc087;
	color: #fff;
}

.woocommerce.single-product .product .npp-single-product .npp-single-product-gallery-col {
	container-type: inline-size;
	position: relative;
}
.woocommerce.single-product .product .npp-single-product .wcosm_soldout {
	margin: 0;
	/* 100cqw = gallery column content box (where the image sits), so the banner
	   never overflows the image even though the Bootstrap col adds side padding. */
	width: 100cqw;
	margin-inline: auto;
	min-height: 0 !important;
	border-radius: 0;
	position: absolute;
	top: clamp(76px, 22cqw, 110px);
	left: 0;
	right: 0;
	overflow: visible;
	background: rgb(232 230 222 / 94%);
	display: block;
	z-index: 2;
	pointer-events: none;
}
.woocommerce.single-product .product .npp-single-product .wcosm_soldout.onsale { margin: 0; }

.woocommerce.single-product .product .npp-single-product .wcosm_soldout.onsale {
	width: 100cqw;
	margin-inline: auto;
}
.woocommerce.single-product .product .npp-single-product .wcosm_soldout p {
	margin: 0;
	padding: clamp(14px, 4.2cqw, 20px) 16px;
	font-family: 'Lora', serif;
	font-size: clamp(1rem, 3.8cqw, 1.25rem);
	font-style: italic;
	line-height: 1.1;
	text-align: center;
	white-space: nowrap;
}
.woocommerce.single-product .product .npp-single-product .wcosm_soldout p strong {
	display: block;
	font-size: clamp(1.125rem, 4.8cqw, 1.5rem);
	font-weight: 700;
	line-height: 1;
}
.woocommerce.single-product .product .npp-single-product .npp-single-product-notify input.cwg_popup_submit {
	position: absolute;
	left: 50%;
	right: auto;
	top: clamp(200px, 54cqw, 270px);
	bottom: auto;
	transform: translateX(-50%);
	z-index: 3;
	width: auto;
	min-width: clamp(132px, 35cqw, 170px);
	margin: 0;
	padding: clamp(9px, 2.5cqw, 12px) clamp(16px, 4.8cqw, 24px);
	border: 0;
	border-radius: 0;
	background: #adc087;
	color: #fff;
	font-family: 'Lora', serif;
	font-size: clamp(1.125rem, 4.4cqw, 1.5rem);
	font-style: italic;
	font-weight: 500;
	line-height: 1.2;
	text-transform: none;
	box-shadow: 0 2px 6px rgba(51,51,51,0.18);
}
.woocommerce.single-product .product .npp-single-product .npp-single-product-notify input.cwg_popup_submit:hover,
.woocommerce.single-product .product .npp-single-product .npp-single-product-notify input.cwg_popup_submit:focus {
	background: #8fa66b;
	color: #fff;
}

/* CWG In-Stock Notifier popup form submit button (inside the modal that opens after clicking Notify me!) */
input.cwgstock_button {
	width: auto;
	padding: 10px 18px;
	border: 0;
	background: #adc087;
	color: #fff;
	font-size: 14px;
	font-family: 'Cabin', sans-serif;
	cursor: pointer;
}
input.cwgstock_button:hover,
input.cwgstock_button:focus {
	background: #8fa66b;
	color: #fff;
}

/* Onsale badge — top-left corner triangle on tiles (fewer circles on the card) */
.woocommerce ul.products li.product .onsale {
	top: 0;
	left: 0;
	right: auto;
	margin: 0;
}
.woocommerce span.onsale {
	min-height: 3.336em;
	min-width: 3.336em;
	padding: 0;
	font-weight: 500;
	z-index: 100;
	border: 1px solid #fff;
}
.woocommerce ul.products li.product .onsale:not(.wcosm_soldout) {
	width: 90px;
	height: 90px;
	min-width: 0;
	min-height: 0;
	padding: 0;
	box-sizing: border-box;
	border: 0;
	border-radius: 0;
	/* Solid top-left corner triangle drawn with a gradient so the label sits on top. */
	background: linear-gradient(to top left, transparent 50%, #f4e500 50%);
	/* Hide WooCommerce's real "Sale!" text node (kept in the DOM for a11y); the
	   visible, angled label is rendered via ::before so the triangle stays put. */
	color: transparent;
	font-size: 0;
	display: block;
	transform: none;
	z-index: 100;
}
.woocommerce ul.products li.product .onsale:not(.wcosm_soldout)::before {
	content: "Sale";
	position: absolute;
	top: 50%;
	left: 50%;
	/* centre on the triangle's centroid (~1/3 from the corner), then rotate -45deg along the diagonal */
	transform: translate(-50%, -50%) translate(-16px, -16px) rotate(-45deg);
	color: #50485b;
	font-family: 'Lora', serif;
	font-style: italic;
	font-weight: 600;
	font-size: 15px;
	line-height: 1;
	letter-spacing: 0;
	white-space: nowrap;
}

/* Single product feature image — same corner-triangle Sale badge as the cards.
   Pinned to the image's top-left corner (gallery col has 15px side padding). */
.woocommerce.single-product .npp-single-product-gallery-col span.onsale:not(.wcosm_soldout) {
	top: 0;
	left: 15px;
	right: auto;
	margin: 0;
	width: 90px;
	height: 90px;
	min-width: 0;
	min-height: 0;
	padding: 0;
	box-sizing: border-box;
	border: 0;
	border-radius: 0;
	background: linear-gradient(to top left, transparent 50%, #f4e500 50%);
	color: transparent;
	font-size: 0;
	display: block;
	transform: none;
	z-index: 100;
}
.woocommerce.single-product .npp-single-product-gallery-col span.onsale:not(.wcosm_soldout)::before {
	content: "Sale";
	position: absolute;
	top: 50%;
	left: 50%;
	transform: translate(-50%, -50%) translate(-16px, -16px) rotate(-45deg);
	color: #50485b;
	font-family: 'Lora', serif;
	font-style: italic;
	font-weight: 600;
	font-size: 15px;
	line-height: 1;
	letter-spacing: 0;
	white-space: nowrap;
}
@media (max-width: 767px) {
	.woocommerce.single-product .npp-single-product-gallery-col span.onsale:not(.wcosm_soldout) {
		width: 66px;
		height: 66px;
	}
	.woocommerce.single-product .npp-single-product-gallery-col span.onsale:not(.wcosm_soldout)::before {
		transform: translate(-50%, -50%) translate(-11px, -11px) rotate(-45deg);
		font-size: 12px;
	}
}

.woocommerce table.cart img {
	max-width: 80px;
}

.woocommerce-cart table.cart th{
	font-family:'Lora',serif;
	font-size:13px;
	line-height:16px;
	text-transform:uppercase;
}

.woocommerce-cart .quantity-placeholder {
    display: inline-block;
    width: 3.631em;
    text-align: center;
    position: relative;
    left: -4px;
}

.woocommerce .cart-collaterals .cart_totals h2{
	font-family:'Lora',serif;
}

.woocommerce #respond input#submit, .woocommerce a.button, .woocommerce button.button, .woocommerce input.button,
.woocommerce #respond input#submit.alt, .woocommerce a.button.alt, .woocommerce button.button.alt, .woocommerce input.button.alt{
	color: #ffffff;
    text-transform: uppercase;
    background-color: #666666;
    font-family: 'Lora',serif;
    font-weight: bold;
    font-size: 13px;
	line-height:16px;
    border-radius: 0;
    padding: 10px 15px;
    position: relative;
}

.woocommerce #respond input#submit:hover, .woocommerce a.button:hover, .woocommerce button.button:hover, .woocommerce input.button:hover,
.woocommerce #respond input#submit.alt:hover, .woocommerce a.button.alt:hover, .woocommerce button.button.alt:hover, .woocommerce input.button.alt:hover{
	background-color: #666666;
    text-decoration: none;
    background-image: none;
    color: #ffffff;
}

#add_payment_method table.cart td.actions .coupon .input-text, .woocommerce-cart table.cart td.actions .coupon .input-text, .woocommerce-checkout table.cart td.actions .coupon .input-text {
	min-width:120px;	
}

.woocommerce form .form-row input.input-text, .woocommerce form .form-row textarea{
	padding:3px 6px;
}

.woocommerce table.shop_table td{
	padding:2px 10px;
}

.woocommerce table.shop_table tr.order-total td,
.woocommerce table.shop_table tr.cart-subtotal td{
	padding-top:9px;
	padding-bottom:9px;
}

.woocommerce #payment #place_order, .woocommerce-page #payment #place_order{
	margin-top:20px;
}

.woocommerce #order_review_heading{
	margin-top:30px;
	padding-bottom:10px;
}

.woocommerce-shipping-fields .woocommerce-form__label.woocommerce-form__label-for-checkbox.checkbox{
	margin-top:0;
	margin-bottom:0;
}

.woocommerce-info{
	border-top:none;
}
.woocommerce-info::before{
	display:none;
}

.npp-care-block{
	font-family:'Lora',serif;
	font-size:16px;
	font-style:italic;
	line-height:19px;
	text-align:center;
	padding:20px 30px;
	background-color:#ededed;
	color:#333333;
}

.npp-free-shipping{
	font-family:'Lora',serif;
	font-size:16px;
	font-weight:bold;
	line-height:19px;
	color:#ff5343;
	text-align:center;
	margin-bottom:20px;
}

/* My Account */
.woocommerce-MyAccount-navigation {
	margin-bottom: 50px;
}

li.woocommerce-MyAccount-navigation-link {
	padding: 10px 0;
	border-bottom: 1px solid #efefef;
	width: 300px;
}

.woocommerce-MyAccount-content address {
	padding-bottom: 20px;
}

.woocommerce-account .title h3 {
	float: left;
	padding-bottom: 10px;
	font-size: 18px;
}

.enursery .category-intro-row{
	margin-bottom:40px;
}

.enursery .category-intro-row .category-intro{
	color:#ffffff;
}

.category-intro{
    font-size: 22px;
    line-height: 26px;
}

.page-template-page-enursery .shop-now-block.content-layout {
	margin-top: 0;
	margin-bottom: 0;
}

.enursery-banners h4 {
	font-size: 36px;
	color: #ffffff;
	line-height: 1.3;
	text-align: left;
	font-family: Lora;
	font-weight: 700;
	font-style: normal;
}

/* Archive — hide short description in product loop */
body.archive .woocommerce-product-details__short-description {
	display: none;
}

/* Single-sale — hide DIY listings section */
.single-sale #diy-listings {
	display: none !important;
}

div.wpcf7-response-output{
	border:none!important;
}


/* Single product — feature image */
.woocommerce div.product div.images img {
	display: block;
	width: 100%;
	height: auto;
	box-shadow: none;
	max-height: 400px;
	object-fit: cover;
}

.woocommerce-variation-price {
	text-align: center;
	margin-bottom: 20px;
}

/* Standard product page — price and add-to-cart */
.standard-product-page .summary .price {
	font-size: 24px;
	color: #333;
	display: block;
	margin-bottom: 20px;
}

.standard-product-page div.product form.cart .button.single_add_to_cart_button {
	background-color: #adc087;
	color: white;
	padding: 15px 30px;
	border: none;
	font-weight: bold;
	display: block;
	margin: auto;
}

.woocommerce ul.products li.product .npp-free-shipping{
    text-transform:uppercase;
    font-size:12px;
    margin-bottom:25px;
    margin-top:-25px;
    color:#333;
}

.woocommerce div.product form.cart.bundle_form{
	margin-top:2em;
}

.woocommerce div.product form.cart.bundle_form .woocommerce-product-details__short-description{
	margin-bottom:1em;
}

.single-product div.product .bundled_product .bundled_item_wrap *+.bundled_item_button .quantity{
	margin:0;
}

.single-product div.product .bundled_product .bundled_item_wrap .bundled_item_cart_content{
    font-family: 'Lora',serif;
    font-size: 14px;
    font-weight: 700;
    line-height: 16px;
    text-transform: uppercase;
    text-align: center;
    display: block;
    padding: 5px;
    border-top: 1px solid #666;
    border-bottom: 1px solid #666;
    color: #666;
	margin-top: 0;
    margin-bottom: 30px;
}

.single-product div.product .bundled_product .bundled_item_wrap .bundled_item_after_cart_details{
	display: flex;
    align-items: center;
    justify-content: space-between;
}

.single-product div.product .bundled_product .bundled_item_wrap .bundled_item_after_cart_details .quantity .bundled_qty{
	border:0;
	background-color:#eee;
}

.woocommerce table.shop_table .woocommerce-shipping-totals.express-post td{
	padding-top: 10px;
    padding-bottom: 10px;
}
.woocommerce-shipping-totals.express-post td a{
	text-decoration:underline;
	background-color: #f7f6f7;
    padding: 5px;
}

/* Product filters */
.prdctfltr_collector_border>span {
    border: 1px solid #777;
    border-color: rgba(0,0,0,0.05);
    border-radius: 50px;
    background-color: #adc087;
    color: white;
		padding:5px 10px;
}
i.prdctfltr-delete {
    color: white;
}
.prdctfltr_filter .prdctfltr_regular_title {
    display: block;
    font-weight: 400;
    line-height: 26px;
    padding-bottom: 18px;
    margin-bottom: 20px;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    font-family: 'Lora';
    font-style: italic;
    font-size: 22px;
    color: #333;
}
.prdctfltr_wc .prdctfltr_filter {
    position: relative;
    float: left;
    display: block;
    padding: 0 10px 10px;
    box-sizing: border-box;
    text-align: center;
}

/* Modern button-chip filter labels */
.prdctfltr_wc .prdctfltr_woocommerce_ordering .prdctfltr_filter label,
.prdctfltr_woocommerce .prdctfltr_inline.prdctfltr_filter label {
    display: inline-block;
    margin: 0 6px 8px 0;
    cursor: pointer;
    line-height: 1;
}
.prdctfltr_wc .prdctfltr_woocommerce_ordering .prdctfltr_filter label > input[type="checkbox"],
.prdctfltr_wc .prdctfltr_woocommerce_ordering .prdctfltr_filter label > input[type="radio"] {
    position: absolute;
    opacity: 0;
    pointer-events: none;
    width: 0;
    height: 0;
}
.prdctfltr_wc .prdctfltr_woocommerce_ordering .prdctfltr_filter label > span {
    display: inline-flex;
    align-items: center;
    padding: 9px 16px;
    border: 1px solid #c9c9c9;
    border-radius: 6px;
    background-color: #fff;
    color: #666;
    font-family: 'cabin', sans-serif;
    font-size: 14px;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    line-height: 1;
    transition: background-color 0.15s ease, border-color 0.15s ease, color 0.15s ease;
}
/* Hide the plugin's inactive radio-circle pseudo */
.prdctfltr_wc.prdctfltr_round .prdctfltr_woocommerce_ordering .prdctfltr_filter label > span:before {
    content: none !important;
    display: none !important;
    border: 0 !important;
    background: none !important;
    width: 0 !important;
    height: 0 !important;
    margin: 0 !important;
}
.prdctfltr_wc .prdctfltr_woocommerce_ordering .prdctfltr_filter label:hover > span {
    border-color: #adc087;
    color: #333;
}
.prdctfltr_wc.prdctfltr_round .prdctfltr_woocommerce_ordering .prdctfltr_filter label.prdctfltr_active > span {
    background-color: #adc087;
    border-color: #adc087;
    color: #fff;
    font-weight: 400;
}
/* Tick on active */
.prdctfltr_wc.prdctfltr_round .prdctfltr_woocommerce_ordering .prdctfltr_filter label.prdctfltr_active > span:before {
    content: '' !important;
    display: inline-block !important;
    width: 14px !important;
    height: 14px !important;
    margin: 0 8px 0 0 !important;
    background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='white' stroke-width='2.8' stroke-linecap='round' stroke-linejoin='round'><polyline points='3 8.5 6.5 12 13 4.5'/></svg>") !important;
    background-repeat: no-repeat !important;
    background-position: center !important;
    background-size: contain !important;
    vertical-align: middle !important;
    border: 0 !important;
    border-radius: 0 !important;
    padding: 0 !important;
}
/* Hover an active chip → swap tick for cross, signal click will deselect */
.prdctfltr_wc.prdctfltr_round .prdctfltr_woocommerce_ordering .prdctfltr_filter label.prdctfltr_active:hover > span {
    background-color: #8fa66c;
    border-color: #8fa66c;
}
.prdctfltr_wc.prdctfltr_round .prdctfltr_woocommerce_ordering .prdctfltr_filter label.prdctfltr_active:hover > span:before {
    background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='white' stroke-width='2.8' stroke-linecap='round' stroke-linejoin='round'><line x1='4' y1='4' x2='12' y2='12'/><line x1='12' y1='4' x2='4' y2='12'/></svg>") !important;
}
/* Hide the top "selected filters" collector chip-list — chip state is shown in the buttons themselves */
.prdctfltr_woocommerce_ordering > .prdctfltr_collector,
form > .prdctfltr_collector:first-child {
    display: none !important;
}

/* ============================================================
   Sale pages — components
   ============================================================ */

/* Promo / hero block */
.how-to-order-intro { font-size: 19px; line-height: 24px; font-family: Lora, sans-serif; font-style: italic; }
.shop-now-link img { max-width: 100px; height: auto; }
.border-bottom { padding-bottom: 30px; margin-bottom: 30px; border-bottom: 1px solid #333; }
#shop-now { max-width: 100px; min-width: 100px; }

/* Shop-now block — alternate (larger) size */
.shop-now-block.alt-size { padding: 75px 20px; font-size: 36px; line-height: 1.3; }

/* Plant boxes — hide short description and dimension meta in product loop */
#plant-boxes .woocommerce-product-details__short-description { display: none; }
#plant-boxes .woocommerce ul.products li.product .npp-loop-title__botanical,
#plant-boxes .bundled_product .bundle_botanical { display: none; }

/* Steps — how to order component */
.steps h3,
.steps p { font-family: 'Lora'; font-style: italic; }
.steps h3 {
	font-size: 2rem;
	line-height: 2.3rem;
	position: relative;
	margin-bottom: 30px;
}
.steps h3::after {
	content: "";
	position: absolute;
	bottom: -20px;
	left: 0;
	right: 0;
	height: 0.01rem;
	background-color: white;
}
.steps p {
	font-size: 1.5rem;
	line-height: 1.8rem;
}
@media (max-width: 768px) {
	.steps h3 { font-size: 1.3rem; line-height: 1.5rem; margin-bottom: 20px; }
	.steps h3::after { bottom: -10px; }
	.steps p { font-size: 0.9rem; line-height: 1.15rem; }
}
@media (min-width: 769px) and (max-width: 1024px) {
	.steps h3 { font-size: 1.5rem; line-height: 1.8rem; margin-bottom: 25px; }
	.steps h3::after { bottom: -15px; }
	.steps p { font-size: 1.25rem; line-height: 1.5rem; }
}
@media (min-width: 1025px) {
	.steps h3 { font-size: 2rem; line-height: 2.3rem; margin-bottom: 30px; }
	.steps h3::after { bottom: -20px; }
	.steps p { font-size: 1.3rem; line-height: 1.5rem; }
}

/* ============================================================
   Helpers
   ============================================================ */

/***
====================================================================
	Helpers
====================================================================

***/

.responsive-map{
	overflow:hidden;
	padding-bottom:56.25%;
	position:relative;
	height:0;
}
.responsive-map iframe{
	left:0;
	top:0;
	height:100%;
	width:100%;
	position:absolute;
}

.grecaptcha-badge { 
    visibility: hidden;
}

/* ============================================================
   Responsive
   ============================================================ */

/* large pc :1920px. */
@media (min-width: 1200px){
	/* Wider modern content container — overrides Bootstrap's .container (1200px).
	   `body` prefix bumps specificity so it wins regardless of stylesheet order
	   (js_composer loads after style.css). width:auto + max-width grows fluidly
	   so there is no horizontal overflow on 1200–1280px viewports. */
	body .container{
		width:auto;
		max-width:1280px;
	}
	#npp-slider{
		margin-right:3px;
	}
	.no-space:first-child .vc_column-inner{
		padding-right:0;
	}
	.no-space:last-child .vc_column-inner{
		padding-left:0;
	}
}

/* Hamburger: hide once desktop main-menu becomes visible (Bootstrap md, ≥992px) */
@media (min-width: 992px){
	#mobile-menu-icon{
		display:none;
	}
}

/* large desktop :1366px. */
@media (min-width: 1200px) and (max-width: 1500px) {

}

/* Product grid — CSS Grid layout
   columns= shortcode attr sets the class; CSS handles responsive breakpoints
   ============================================================ */
.woocommerce ul.products,
.woocommerce-page ul.products {
	display: grid !important;
	gap: 1rem; /* flat 1rem to match the npp_grid (cards) widget spacing */
	grid-template-columns: repeat(4, minmax(0, 1fr));
}
/* Remove clearfix pseudo-elements — they become ghost grid items in grid layout */
.woocommerce ul.products::before,
.woocommerce ul.products::after,
.woocommerce-page ul.products::before,
.woocommerce-page ul.products::after { display: none !important; }
/* Honour the columns= shortcode attribute at desktop */
.woocommerce ul.products.columns-1 { grid-template-columns: minmax(0, 1fr); }
.woocommerce ul.products.columns-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.woocommerce ul.products.columns-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.woocommerce ul.products.columns-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.woocommerce ul.products.columns-5 { grid-template-columns: repeat(5, minmax(0, 1fr)); }
/* Reset float/width from woocommerce-layout.css; position:relative required for wcosm_soldout overlay */
.woocommerce ul.products li.product,
.woocommerce-page ul.products li.product { width: 100% !important; float: none; margin: 0; position: relative; }
/* Tablet — 2 columns regardless of shortcode setting */
@media (max-width: 991px) {
	.woocommerce ul.products[class*="columns-"]:not(.columns-1),
	.woocommerce-page ul.products[class*="columns-"]:not(.columns-1) { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	/* prdctfltr plugin may swap columns-4 to columns-1 on mobile — force 2 cols regardless */
	.prdctfltr_wc ul.products { display: grid !important; grid-template-columns: repeat(2, minmax(0, 1fr)) !important; }
	/* Neutralise WooCommerce's legacy float layout (woocommerce-smallscreen.css):
	   the grid handles columns + gaps, but its `margin: 0 0 2.992em` stacked ~48px
	   of dead space under every card on mobile. float/width/clear are inert on grid items. */
	.woocommerce ul.products[class*="columns-"] li.product,
	.woocommerce-page ul.products[class*="columns-"] li.product {
		width: auto;
		float: none;
		clear: none;
		margin: 0;
	}
	/* Sale badge — slightly smaller corner triangle on mobile grid */
	.woocommerce ul.products li.product .onsale:not(.wcosm_soldout) {
		width: 66px;
		height: 66px;
		transform: none;
	}
	.woocommerce ul.products li.product .onsale:not(.wcosm_soldout)::before {
		transform: translate(-50%, -50%) translate(-11px, -11px) rotate(-45deg);
		font-size: 12px;
	}
}

/* Normal desktop :992px. */
@media (min-width: 992px) and (max-width: 1200px) {

}

/* Product loop — desktop constraints. (Removed the min-height:360px on
   columns-4 cards — it padded short cards out and created dead space between
   rows; the grid now sizes each row to its content.) */
@media (min-width: 992px) {
	.woocommerce ul.products li.product a img { margin: 0 0 0.6em; }
}

@media (min-width: 768px){

	.shop-now-content h3{
		max-width:480px;
	}
	
	.woocommerce .related.products ul.products li.product:last-child,
	.woocommerce ul.products li.product.last{
		margin-right:0;
	}
}
 
/* Tablet desktop :768px. */
@media (min-width: 768px) and (max-width: 991px) {

}

@media (min-width: 600px) {
	.header-icons > li:nth-child(3),
	.header-icons > li:nth-child(5){
		margin-left:8px;
		margin-right:8px;
	}
}
 
/* small mobile :320px. */
@media (max-width: 1199px) {
	.header-top-area .container {
		height: 60px;
	}
	.header-top-area #logo-row{
		height:100%;
	}
	.header-logo{
		padding-left:10px;
	}
	.header-logo a img{
		max-height:145px;
		width:auto;
		padding-left:15px;
	}
	.header-top-area #header-line{
		top:1px;
	}
	#nav-row{
		display:none;
	}
	.owl-dots{
		display:none;
	}
	.article-carousel{
		margin-top:-2px;
	}
	.article-carousel,
	.article-carousel .article-item{
		height:190px;
		margin-top:0;
		margin-bottom:0;
	}
	.article-carousel .article-item{
		padding-top:15px;
		padding-bottom:15px;
	}
	.article-carousel-title{
		padding-top:0;
		font-size:18px;
		line-height:1em;
	}
		.article-carousel-excerpt{
			margin-top:10px;
			margin-bottom:10px;
		}
		.npp-hero-carousel{
			margin-top:0;
		}
		.npp-hero-carousel,
		.npp-hero-carousel .article-item{
			height:auto;
		}
		.npp-hero-carousel .article-item{
			display:flex;
			flex-direction:column;
			padding:0;
			height:100%;
		}
		/* Stretch every slide to the stage height (owl sizes the stage to the
		   tallest slide) so each box reaches the carousel bottom — keeps the
		   dots inside the box on every slide. */
		.npp-hero-carousel .owl-stage{
			display:flex;
		}
		.npp-hero-carousel .owl-item{
			display:flex;
		}
		.npp-hero-slide-media{
			position:relative;
			inset:auto;
			height:260px;
			order:1;
		}
		.npp-hero-carousel--video .npp-hero-bg-video{
			position:relative;
			inset:auto;
			width:100%;
			height:auto;
			aspect-ratio:16/9;
			/* Hard ceiling = natural 16:9 height at full viewport width.
			   No-op on real devices; stops the height running away (and
			   crashing the GPU) where the editor leaves width unconstrained. */
			max-height:56.25vw;
		}
		.npp-hero-carousel--video .article-item{
			min-height:0;
		}
		.npp-hero-slide-content{
			position:relative;
			top:auto;
			bottom:auto;
			left:auto;
			width:100%;
			min-height:0;
			flex:1;
			padding:22px 22px 20px;
			transform:none;
			order:2;
		}
		.npp-hero-carousel .article-carousel-title{
			margin-bottom:12px;
			font-size:30px;
			line-height:1.05;
		}
		.npp-hero-carousel .article-carousel-excerpt{
			margin:0 0 18px;
		}
		.npp-hero-carousel .owl-dots{
			display:block;
		}
		/* Dots inside the box, bottom-right, on the LEARN MORE row (colour
		   comes from the .is-light rules in the desktop block). */
		.npp-hero-carousel .owl-theme .owl-nav.disabled + .owl-dots{
			position:absolute;
			bottom:17px;
			left:auto;
			right:22px;
			width:auto;
			padding-right:0;
			text-align:right;
			transform:none;
			margin-top:0;
		}
		li#shop-at-our-header {
    	display: none;
}
}

@media (max-width: 991px) {
	.woocommerce-cart-form__cart-item.bundled_table_item .product-price,
	.woocommerce-cart-form__cart-item.bundled_table_item .product-subtotal{
		display:none;
	}
	.single-product div.product .bundled_product .bundled_item_wrap .bundled_item_after_cart_details .quantity .bundled_qty{
		font-size:16px;
	}
}

@media only screen and (max-width: 768px){
	.header-logo{
		padding-left:0;
	}
	#post-content.enursery,#category-content{
		padding-top:80px;
	}	
	.codeneric_ultimate_ads_manager_ad_wrapper{
		margin-bottom:60px;
	}
	.woocommerce .cart-collaterals .cart_totals, .woocommerce-page .cart-collaterals .cart_totals{
		width:100%;
		float:none;
	}
	.article-photo-block.triple_a-layout .col-right img:last-child{
		margin-top:0;
	}
	.article-photo-block.triple_b-layout .col-right img:last-child{
		margin-top:0;
	}
	#bundle-popup .bundle-popup-excerpt{
		padding:15px;
	}
	#bundle-footer-close{
		display:block;
	}
	/* Product loop — mobile typography */
	.woocommerce ul.products li.product a img { width: 100%; height: auto; display: block; margin: 0 0 5%; box-shadow: none; }
	.woocommerce ul.products li.product .woocommerce-loop-product__title,
	.bundled_product_title.product_title .item_title { font-family: 'Lora',serif; font-size: 0.9rem; font-weight: bold; line-height: 1.0rem; padding-top: 0; padding-bottom: 0; }
	.woocommerce ul.products li.product .woocommerce-loop-product__title { text-align: left; }
	.bundled_product_title.product_title .item_title { text-align: center; }
	.woocommerce ul.products li.product .npp-loop-title__botanical,
	.bundled_product .bundle_botanical { font-family: 'Lora',serif; font-size: 0.8rem; font-style: italic; line-height: 1.1rem; }
	/* Mobile: left-align + let the botanical name wrap to a second line instead of truncating. */
	.woocommerce ul.products li.product .npp-loop-title__botanical { text-align: left; white-space: normal; overflow: visible; text-overflow: clip; height: auto; }
	.woocommerce ul.products li.product .price, .sim-price { margin-top: 5px; margin-bottom: 10px; }
		/* Sale pages — mobile */
		.shop-now-content h3 { font-size: 1.4rem; line-height: 1.8rem; font-weight: bold; color: #ffffff; text-align: left; text-transform: uppercase; }
		#post-content .subscribe-widget:not(.subscribe-widget--home) { display: none; }
		.enursery-intro h2 { font-size: 1.1rem; line-height: 1.4rem; font-style: italic; text-align: center; margin-bottom: 10px; }
	/* (Removed) WPBakery element margin reset — keeping the default element
	   margin restores breathing room between stacked elements on mobile. */

}

@media only screen and (max-width: 990px) {
	/* TO REPLACE SLIDER — carousel height at narrowest breakpoint */
	.article-carousel,
	.article-carousel .article-item { height: 160px; }
	.npp-hero-carousel,
	.npp-hero-carousel .article-item { height: auto; }
		/* Subscribe widget responsive overrides (fwzy block — migrated from Customiser) */
		.subscribe-widget { padding: 15px 20px 0; }
		.subscribe-widget:not(.subscribe-widget--home) .subscribe-widget-text { display: none; }
		#post-content .subscribe-widget .wpcf7-email { margin-top: 15px; }
		#post-content .subscribe-widget .wpcf7-submit { margin-top: 15px; }
		/* Single product — hide bundle excerpt on tablet/mobile */
		.single-product .bundled_product_excerpt.product_excerpt { display: none; }
	/* E-nursery — hide short description on tablet/mobile */
	.enursery .woocommerce-product-details__short-description { display: none; }
}

@media only screen and (max-width: 990px) {
	/* Subscribe home widget — flex row so form div vertically centers beside text */
	.subscribe-widget--home{
		display:flex;
		align-items:center;
		column-gap:24px;
		padding:32px 22px 34px;
		border-bottom:1px solid #666666;
	}
	#post-content .subscribe-widget--home .subscribe-widget-title{
		margin-bottom:12px;
		font-size:18px;
	}
	#post-content .subscribe-widget--home .subscribe-widget-text{
		display:block;
		margin-bottom:0;
		font-size:17px;
		line-height:1.35;
		flex:1 1 55%;
	}
	.subscribe-widget--home .wpcf7{
		flex:1 1 45%;
		min-width:240px;
		align-self:center;
	}
	.subscribe-widget--home .wpcf7 form{
		margin:0;
	}
	.subscribe-widget--home .wpcf7 form > p{
		display:grid;
		grid-template-columns:minmax(0,1fr) 120px;
		gap:6px;
		align-items:center;
		margin:0;
	}
	#post-content .subscribe-widget--home .wpcf7-email{
		height:40px;
		margin:0;
	}
	#post-content .subscribe-widget--home .wpcf7-submit{
		height:40px;
		margin:0;
		width:100%;
	}
	/* Very small screens — stack */
	@media (max-width:560px){
		.subscribe-widget--home{
			flex-direction:column;
			align-items:flex-start;
			row-gap:20px;
		}
		.subscribe-widget--home .wpcf7{
			width:100%;
			min-width:unset;
		}
	}
}

/* Zero out WPBakery default margin-bottom (35px) on the e-nursery hero row at all viewports
   (covers both the left column's video raw_html wrapper and the right column #video-mod) */
#header-text-slider .wpb_content_element { margin-bottom: 0; }
/* E-nursery hero row — mobile full-width (migrated from WPCode snippet 23052) */
@media (max-width: 522px) {
	#header-text-slider { margin-right: -15px !important; width: 100%; }
}
@media only screen and (max-width: 599px){
	.header-top-area .container {
    height: 75px;
	}
	.header-icons > li{
		margin-left:7px;
		margin-bottom:5px;
	}
	.header-icons > li{
		order:3;
	}
	.header-icons #npp-enursery-header{
		order:0;	
	}
	.header-icons #npp-cart{
		order:1;
	}
	.header-icons > li:nth-child(3),
	.header-icons > li:nth-child(5){
		margin-left:10px;
		margin-right:4px;
	}
}
 
/* Large Mobile :480px. */
@media only screen and (min-width: 481px) and (max-width: 767px) {
	
}

@media only screen and (max-width: 480px){
	.woocommerce ul.products[class*=columns-] li.product,
	.woocommerce-page ul.products[class*=columns-] li.product {
		width: 100%;
		float:none!important;
		margin-bottom:0;
	}
	#post-content .page-title, #category-content .category-title, .woocommerce-products-header .category-title{
		font-size:20px;
		line-height:24px;
	}
	#post-content .page-intro,#post-content .post-intro, .category-intro{
		font-size:18px;
		line-height:22px;
	}
	.woocommerce div.product .tc-totals-form,
	.woocommerce div.product form.cart .button.single_add_to_cart_button{
		width:49%;
	}
	#footer-subscribe div.subscribe-text,#footer-subscribe div.wpcf7,
	#footer-subscribe .wpcf7-form-control-wrap{
		display:block;
	}
	#footer-subscribe .subscribe-text{
		margin-right:0;
		margin-bottom:10px;
	}
	#footer-subscribe .wpcf7-form-control-wrap{
		margin-bottom:10px;
	}
	#footer-subscribe input.wpcf7-submit{
		margin-left:20px;
	}
	/* Bundled product text wrapping */
	.bundled_product .bundle_botanical,
	.single-product ul.products li.product .npp-loop-title__botanical { height: auto; white-space: normal; }
	.single-product .bundled_product_excerpt.product_excerpt { display: none; }
	.single-product .bundle-add-to-cart-text { font-size: 10px; }
	.bundle_botanical { margin-bottom: 10px; }
	/* E-nursery — hide short description on mobile */
	.enursery .woocommerce-product-details__short-description { display: none; }
	/* E-nursery banners */
	.enursery-banners h4 { font-size: .5rem; }
	.enursery-banner h4 {
		font-size: 22px;
		color: #ffffff;
		line-height: 24px;
	}
}

@media only screen and (max-width: 380px){
	.woocommerce div.product.product-type-simple form.cart{
		flex-wrap:wrap;	
	}
	.popup-gallery-img{
		max-height:280px;
	}
}

@media only screen and (max-height: 640px){
	#bundle-popup{
		max-height:75vh;	
	}
}

@-webkit-keyframes fadeIn {
  0% {
    opacity: 0;
  }

  100% {
    opacity: 1;
  }
}

@keyframes fadeIn {
  0% {
    opacity: 0;
  }

  100% {
    opacity: 1;
  }
}

.fadeIn {
  -webkit-animation-name: fadeIn;
  animation-name: fadeIn;
}

@-webkit-keyframes fadeOut {
  0% {
    opacity: 1;
  }

  100% {
    opacity: 0;
  }
}

@keyframes fadeOut {
  0% {
    opacity: 1;
  }

  100% {
    opacity: 0;
  }
}

.fadeOut {
  -webkit-animation-name: fadeOut;
  animation-name: fadeOut;
}

.wpa-test-msg{display:none;}

/* ============================================================
   Garden Grow Competition (page-id-26185)
   ============================================================ */

.page-id-26185 b,
.page-id-26185 strong { font-weight: 600; letter-spacing: 1px; }

.page-id-26185 .garden-comp h3 {
    font-family: Lora, sans-serif;
    font-size: 1.3rem;
    line-height: 1.4;
    font-style: italic;
    margin-bottom: 10px;
}
.page-id-26185 .garden-comp p { margin-bottom: 5px; }

.npp-list-hyphen li,
.npp-list-tick li {
    position: relative;
    padding-left: 25px;
    margin-bottom: 10px;
    list-style-type: none;
}
.npp-list-tick li::before {
    content: "\2713";
    position: absolute;
    left: 0;
    color: white;
    font-weight: bold;
}
.npp-list-hyphen li::before {
    content: "-";
    position: absolute;
    left: 0;
    top: 0;
    color: #fff;
}
.npp-list-hyphen ul,
.npp-list-tick ul { margin-bottom: 10px; }

.npp-text-shadow { text-shadow: 0px 5px 20px #000; }
.page-id-26185 .garden-comp-enter-button { text-align: center; }
.page-id-26185 .garden-comp ol { list-style-type: decimal; margin-left: 20px; padding-left: 0; }
.page-id-26185 .garden-comp ol li { list-style: decimal; padding-left: 0; padding-bottom: 8px; }
.page-id-26185 .garden-comp ol li::marker { font-family: 'Lora', serif; font-weight: 400; }
.img-fill img { width: 100%; height: 100%; object-fit: cover; display: block; }

@media only screen and (max-width: 768px) {
    .page-id-26185 .comp-details-heading h3 { font-size: 24px; }
    .page-id-26185 .garden-comp-logo { padding-left: 60%; }
}

/* Kangaroo Paw sale pages — hide short description on product loop */
.page-id-25065 .woocommerce-product-details__short-description,
.page-id-32624 .woocommerce-product-details__short-description { display: none; }

/* ============================================================
   NPP product widgets — npp_sim_product_v2 / npp_product_v2
   Global styles for .npp-sim-* classes used by both shortcodes.
   ============================================================ */

/* Image wrap — required for npp-new-badge absolute positioning */
.npp-sim-image-wrap {
    position: relative;
    display: block;
}

/* "New" badge */
.npp-new-badge {
    position: absolute;
    top: 14px;
    left: 14px;
    background: #a0614a;
    color: #fff;
    font-style: italic;
    font-family: 'Lora', serif;
    font-size: 1rem;
    padding: 6px 16px;
    border-radius: 30px;
    z-index: 2;
    pointer-events: none;
}

/* Footer row — price + button */
.npp-sim-footer {
    display: flex;
    align-items: center;
    justify-content: space-between;
    border-top: 1px solid #666;
    border-bottom: 1px solid #666;
    padding: 5px 0;
    margin-top: 22px;
    width: 100%;
}

/* Strip WC price borders inside the footer — footer provides its own */
.npp-sim-footer .price {
    border: none !important;
    padding: 0 !important;
    margin: 0 !important;
    text-align: left !important;
    display: inline !important;
}

/* Order Now button — text link (Lora bold, uppercase, underlined) */
.npp-sim-buy-btn {
    display: inline-block;
    font-family: 'Lora', serif;
    font-weight: 700;
    font-size: 0.85rem;
    letter-spacing: 0.05em;
    text-transform: uppercase;
    text-decoration: underline !important;
    color: inherit;
    white-space: nowrap;
    background: none;
    border: none;
    padding: 0;
}
.npp-sim-buy-btn:hover {
    text-decoration: underline !important;
    color: inherit;
}


/* ---------- Main nav: e-nursery shop pill (.nav-btn-shop) ----------
   Class added in WP Menus admin to the E-nursery menu item. Mirrors the
   green pill from ul.header-icons li.enursery-btn but inside the main
   nav row. Icon reuses the existing shopping-bag@2x asset. */
.main-menu ul li.nav-btn-shop {
	vertical-align: middle;
}
.main-menu ul li.nav-btn-shop > a {
	position: relative;
	display: inline-block;
	background: #adc087;
	color: #fff;
	border-radius: 2px;
	padding: 2px 12px 3px 32px;
	font-family: 'Lora', serif;
	font-size: 12px;
	font-weight: 700;
	line-height: 22px;
	text-transform: uppercase;
	transition: background-color .25s ease;
	margin-left: 5px;
}
.main-menu ul li.nav-btn-shop > a::before {
	content: '';
	position: absolute;
	left: 10px;
	top: 50%;
	transform: translateY(-50%);
	width: 16px;
	height: 16px;
	background: url('/wp-content/uploads/2020/06/shopping-bag@2x.png') no-repeat center / 16px 16px;
}
.main-menu ul li.nav-btn-shop:hover > a,
.main-menu ul li.nav-btn-shop.active > a,
.main-menu ul li.nav-btn-shop.current-menu-item > a {
	background: #9ab476;
	color: #fff;
}


/* =============================================================
   Header redesign --- 25 May 2026
   Removes: shop-at-our, top-row enursery, social icons from header
   Adds: search toggle, cart label, footer social icons
   ============================================================= */

/* Screen-reader-only utility */
.screen-reader-text {
	clip: rect(1px, 1px, 1px, 1px);
	height: 1px;
	overflow: hidden;
	position: absolute;
	white-space: nowrap;
	width: 1px;
}

/* ---- Search field (#npp-search-toggle) ---- */
#npp-search-toggle { position: relative; }

.npp-search-form {
	display: flex;
	align-items: center;
	gap: 8px;
	background-color: #eee;
	border-radius: 999px;
	padding: 7px 16px;
	min-width: 220px;
}

.npp-search-icon {
	display: flex;
	align-items: center;
	color: #333;
	cursor: text;
	margin: 0;
}

.search-svg { flex-shrink: 0; display: block; }

.npp-search-form .search-field {
	flex: 1;
	min-width: 0;
	border: 0;
	background: transparent;
	outline: none;
	padding: 0;
	font-family: 'Lora', serif;
	font-size: 13px;
	font-style: italic;
	font-weight: 400;
	color: #333;
	border-radius: 0;
	box-shadow: none;
	line-height: 1.2;
}

.npp-search-form .search-field::placeholder {
	color: #333;
	opacity: 1;
	font-style: italic;
}

/* ---- Cart label ---- */

.header-top-area .cart-link .count {
	position: static;
	width: auto; height: auto;
	line-height: inherit; text-align: inherit;
	margin: 0; color: inherit;
	background: none; border-radius: 0; font-size: inherit;
}

.cart-link {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	color: #323232;
	text-decoration: none;
	font-family: 'Lora', serif;
	font-size: 12px;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: .03em;
	transition: color .2s ease;
	white-space: nowrap;
	line-height: 1;
}

.cart-link:hover { color: #adc087; }

.cart-label { display: flex; align-items: center; gap: 3px; white-space: nowrap; }

.cart-icon {
	position: relative;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 28px;
	height: 28px;
	background-color: #eee;
	border-radius: 50%;
	transition: background-color .2s ease;
}

.cart-icon img { display: block; width: 14px; height: 14px; transition: opacity .2s ease; }

.cart-icon .cart-icon-hover {
	position: absolute;
	top: 50%; left: 50%;
	transform: translate(-50%, -50%);
	opacity: 0;
}

/* Whole cart link acts as one hover target */
#npp-cart .cart-link:hover .cart-icon-default,
#npp-cart .cart-link:focus-visible .cart-icon-default { opacity: 0; }

#npp-cart .cart-link:hover .cart-icon-hover,
#npp-cart .cart-link:focus-visible .cart-icon-hover { opacity: 1; }

#npp-cart .cart-link:hover .cart-icon,
#npp-cart .cart-link:focus-visible .cart-icon { background-color: #ddd; }

/* ---- Footer social icons ---- */
.footer-social-area {
	padding: 12px 0 8px;
	text-align: center;
	border-top: 1px solid rgba(0,0,0,.08);
}

ul.footer-socials {
	display: flex;
	justify-content: center;
	align-items: center;
	gap: 10px;
	list-style: none;
	margin: 0; padding: 0;
}

ul.footer-socials li { margin: 0; padding: 0; }

ul.footer-socials li a { display: block; opacity: .75; transition: opacity .2s ease; }

ul.footer-socials li a:hover { opacity: 1; }

ul.footer-socials li img { width: 24px; height: 24px; display: block; }

/* ---- Mobile menu button reset ---- */
#mobile-menu-icon button {
	background: none; border: none; padding: 0;
	cursor: pointer; color: #323232; line-height: 1;
}

/* Hide search toggle below 1200px (mobile uses #nav-mobile search) */
@media (max-width: 1199px) { #npp-search-toggle { display: none; } }

/* Small mobile: updated flex order */
@media only screen and (max-width: 599px) {
	#npp-search-toggle { order: 0; }
	#npp-cart          { order: 1; }
	#mobile-menu-icon  { order: 2; }
	.npp-search-form { min-width: 0; padding: 6px 12px; }
}

/* Hide mini-cart dropdown when WC reports empty */
.cart-contents:has(.woocommerce-mini-cart__empty-message) { display: none; }

/* =========================================================
   NPP Card widget — [npp_card] shortcode
   Re-usable card with Shop (image button) or Discover (text+button) CTA.
   Drop 1–3 into a WPBakery row to match the homepage 3-up.
   ========================================================= */
.npp-card {
	--npp-card-bg: #adc087;
	--npp-card-fg: #fff;
	--npp-card-btn-border: rgba(255,255,255,0.6);
	background: var(--npp-card-bg);
	color: var(--npp-card-fg);
	padding: 32px 36px;
	min-height: 200px;
	height: 100%;          /* fill the column when row has equal_height="yes" */
	display: flex;
	box-sizing: border-box;
	position: relative;
}
/* Make the WPBakery column-inner stretch so .npp-card height:100% has something to fill */
.vc_row-o-equal-height > .vc_column_container,
.vc_row-o-equal-height > .vc_column_container > .vc_column-inner,
.vc_row-o-equal-height > .vc_column_container > .vc_column-inner > .wpb_wrapper { height: 100%; }
.npp-card--green { --npp-card-bg: #adc087; }
.npp-card--grey  { --npp-card-bg: #6c6c6c; }
.npp-card--blue  { --npp-card-bg: #6b7a92; }
.npp-card--pink  { --npp-card-bg: #f1d7d3; --npp-card-fg: #2a2a2a; --npp-card-btn-border: rgba(0,0,0,0.4); }

.npp-card__body {
	display: flex;
	flex-direction: column;
	width: 100%;
}
.npp-card__title {
	margin: 0 0 12px;
	color: inherit;
	font-size: 1.5rem;
	line-height: 1.15;
	letter-spacing: 0.01rem;
	font-style: italic;
}
.npp-card__intro {
	margin: 0 0 20px;
	color: inherit;
	font-size: 15px;
	line-height: 1.45;
	flex: 1 1 auto;
}

/* Shop variant: inline link sits in the CTA row, PNG floats absolute bottom-right
   so it doesn't push the CTA row taller than the Discover variant. */
.npp-card__cta--shop {
	margin-top: auto;
	display: flex;
	align-items: center;
	justify-content: flex-start;
	gap: 16px;
	flex-wrap: wrap;
	padding-right: 100px; /* reserve room for the absolute shop-now image */
}
.npp-card__shop-link,
.npp-card__cta--shop > .npp-card__shop-img {
	position: absolute;
	bottom: 10px;
	right: 20px;
	line-height: 0;
	display: inline-block;
}
.npp-card__shop-img  { display: block; max-width: 80px; height: auto; transition: transform 0.2s ease; }
.npp-card__shop-link:hover .npp-card__shop-img { transform: scale(1.05); }

/* Discover variant: inline link + outlined button on a row */
.npp-card__cta--discover {
	margin-top: auto;
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 16px;
	flex-wrap: wrap;
}
/* Match CTA row height across variants so card bodies align vertically */
.npp-card__cta { min-height: 44px; }
.npp-card__inline-link {
	color: inherit;
	font-family: 'Lora', serif;
	text-decoration: underline;
	font-weight: 600;
	letter-spacing: 0.04em;
	text-transform: uppercase;
	font-size: 13px;
}
.npp-card__inline-link:hover { opacity: 0.85; color: inherit; }
.npp-card__btn {
	display: inline-block;
	padding: 10px 22px;
	border: 1px solid var(--npp-card-btn-border);
	font-family: 'Lora', serif;
	color: inherit;
	background: transparent;
	font-weight: 600;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	font-size: 13px;
	text-decoration: none;
	transition: background 0.2s ease, color 0.2s ease;
}
.npp-card__btn:hover {
	background: var(--npp-card-fg);
	color: var(--npp-card-bg);
}

@media (max-width: 767px) {
	.npp-card { padding: 24px 24px; }
	.npp-card__title { font-size: 22px; }
}

/* =========================================================
   NPP Mini-cart (header dropdown)
   Markup defined in themes/npp/woocommerce/cart/mini-cart.php.
   Scoped via #npp-cart so default WC .cart_list / .mini_cart_item
   rules (in plugins/woocommerce + theme woocommerce-layout.css)
   are out-specificity'd without needing !important.
   ========================================================= */
#npp-cart .npp-mini-cart {
	list-style: none;
	margin: 0;
	padding: 0;
}
#npp-cart .npp-mini-cart__item {
	display: flex;
	align-items: center;
	gap: 10px;
	padding: 10px 0;
	margin: 0;
	border-bottom: 1px solid #eee;
}
#npp-cart .npp-mini-cart__item:last-child { border-bottom: 0; }

#npp-cart .npp-mini-cart__remove {
	flex: 0 0 auto;
	margin: 0;
	position: static;
	font-size: 18px;
	line-height: 1;
	color: #b54b4b;
	text-decoration: none;
}
#npp-cart .npp-mini-cart__remove:hover { color: #7c2828; }

#npp-cart .npp-mini-cart__link {
	display: flex;
	align-items: center;
	gap: 12px;
	flex: 1 1 auto;
	min-width: 0;
	color: inherit;
	text-decoration: none;
	font-weight: 600;
}
#npp-cart .npp-mini-cart__thumb {
	flex: 0 0 42px;
	display: block;
}
#npp-cart .npp-mini-cart__thumb img {
	display: block;
	width: 42px;
	height: 42px;
	object-fit: cover;
	margin: 0;
	float: none;
}
#npp-cart .npp-mini-cart__title {
	flex: 1 1 auto;
	min-width: 0;
	font-weight: 600;
	font-size: small;
	line-height: 1.3;
}
#npp-cart .npp-mini-cart__qty {
	display: block;
	font-size: 12px;
	color: #666;
	margin-top: 4px;
}
#npp-cart .npp-mini-cart__total {
	text-align: center;
	padding: 10px 0 0;
	margin: 0;
	border-top: 1px solid #ddd;
}
#npp-cart .npp-mini-cart__buttons {
	display: flex;
	gap: 8px;
	margin: 10px 0 0;
}
#npp-cart .npp-mini-cart__buttons .button {
	flex: 1 1 auto;
	text-align: center;
}


/* =====================================================================
   npp-steps-list — bordered step instruction box
   ===================================================================== */
/* WPBakery sets height:100% on equal-height columns, which disables flex stretch.
   Override so the column auto-sizes and lets flex stretch it to the row's cross-axis. */
.vc_row-o-equal-height > .vc_column_container:has(.npp-steps-list) {
	height: auto !important;
	align-self: stretch;
}
.npp-steps-list {
	border: 1px solid #333;
	padding: 2.25rem 1.5rem;
	box-sizing: border-box;
	display: flex;
	flex-direction: column;
	gap: 1.45rem;
}
.npp-steps-list__title {
	font-family: 'Lora', serif;
	font-style: italic;
	font-size: 1.7rem;
	line-height: 1.1;
	margin: 0;
	color: #333;
}
.npp-steps-list__steps {
	display: flex;
	flex-direction: column;
	/* Content-height box with a fixed gap so step spacing stays consistent.
	   (Previously the box stretched to the equal-height row and space-between
	   blew the gaps out to 200px+ next to the tall product column.) */
	gap: 1.1rem;
}
.npp-steps-list__item { margin: 0; }
.npp-steps-list__heading {
	font-family: 'Lora', serif;
	font-style: italic;
	font-size: 1.2rem;
	margin: 0 0 0.3rem;
}
.npp-steps-list__body {
	font-family: 'Cabin', sans-serif;
	margin: 0;
	font-size: 0.80rem;
	color: #666;
	line-height: 1.2;
}
/* On mobile the equal-height WPBakery row stays display:flex, so the
   Steps and product columns are flex items on the same line and a
   margin on the inner box can't separate them. Force that row (only the
   one containing the Steps box) to stack as normal blocks, then add a
   gap below the Steps box. */
@media (max-width: 768px) {
	.vc_row-o-equal-height:has(.npp-steps-list) { display: block; }
	.npp-steps-list { margin-bottom: 2rem; }
}

/* =====================================================================
   npp-list-product — horizontal product list row
   All selectors scoped to .npp-list-product — no shared classes used.
   ===================================================================== */
.npp-list-product {
	display: flex;
	align-items: center;
	gap: 1rem;
	padding: 0.75rem 0;
	border-bottom: 1px solid #333;
	margin: 0;
}
.npp-list-product__figure { margin: 0; }
.npp-list-product__thumb { flex-shrink: 0; }
.npp-list-product__thumb img {
	width: 70px;
	height: 70px;
	object-fit: cover;
	display: block;
}
.npp-list-product__body {
	flex: 1;
	min-width: 0;
}
.npp-list-product__title {
	margin: 0 0 0.4rem;
	font-size: 1rem;
	font-weight: 700;
}
.npp-list-product__title a {
	font-weight: 700;
	letter-spacing: 0.05em;
	text-transform: uppercase;
	color: #333;
	text-decoration: none;
}
.npp-list-product__title a:hover { text-decoration: underline; }
.npp-list-product__desc {
	margin: 0;
	font-size: 0.8rem;
	color: #666;
	line-height: 1.2;
}
.npp-list-product__offer {
	display: flex;
	flex-direction: column;
	align-items: flex-end;
	justify-content: space-between;
	align-self: stretch;
	flex-shrink: 0;
}
/* Filled olive button — scoped, does not affect npp-sim-buy-btn elsewhere */
.npp-list-product__btn {
	display: inline-flex;
	align-items: center;
	gap: 0.35rem;
	background: #adc087;
	color: #fff !important;
	font-family: 'Cabin', sans-serif;
	font-size: 0.75rem;
	font-weight: 400;
	letter-spacing: 0.02em;
	text-transform: uppercase;
	text-decoration: none !important;
	white-space: nowrap;
	padding: 0.45rem 0.65rem;
	border: none;
	cursor: pointer;
}
.npp-list-product__btn:hover {
	background: #8fa66b;
	color: #fff !important;
	text-decoration: none !important;
}
.npp-list-product__btn-icon {
	display: inline-block;
	width: 14px;
	height: auto;
	vertical-align: middle;
	flex-shrink: 0;
}
/* Price — Cabin font, neutralise WC .price borders/margins */
.npp-list-product__price {
	font-family: 'Cabin', sans-serif;
	font-size: 0.9rem;
	white-space: nowrap;
}
.npp-list-product__price .price {
	border: none !important;
	padding: 0 !important;
	margin: 0 !important;
	font-size: inherit !important;
	font-family: inherit !important;
	display: inline !important;
}

/* =====================================================================
   npp-list-products — multi-product grid (npp_list_products shortcode)
   ===================================================================== */
.npp-list-products {
	display: grid;
	grid-template-columns: repeat(var(--nlp-cols, 1), 1fr);
	gap: 0 1.2rem;
}
/* Top border on the first item in each column.
   nth-child(-n+N) selects items 1 through N — exactly the first row of a grid
   with N columns, which are the first items in each column track. */
.npp-list-products .npp-list-product:first-child,
.npp-list-products[style*="--nlp-cols:1"] .npp-list-product:nth-child(-n+1),
.npp-list-products[style*="--nlp-cols:2"] .npp-list-product:nth-child(-n+2),
.npp-list-products[style*="--nlp-cols:3"] .npp-list-product:nth-child(-n+3) {
	border-top: 1px solid #333;
}
/* Standalone npp_list_product shortcode always gets a top border */
.npp-list-product:first-of-type {
	border-top: 1px solid #333;
}
@media (max-width: 768px) {
	.npp-list-product__thumb img { width: 55px; height: 55px; }
	/* Single column on mobile — override grid-template-columns directly,
	   since the inline style="--nlp-cols:N" sets the variable and would
	   otherwise win over any --nlp-cols override here. */
	.npp-list-products { grid-template-columns: 1fr; }
	/* In one column only the first item needs a top border. Cancel the
	   2-/3-column first-row borders on items 2 and 3 (equal specificity,
	   later source order wins) to avoid a doubled rule against the
	   previous item's bottom border. */
	.npp-list-products[style*="--nlp-cols:2"] .npp-list-product:nth-child(-n+2):not(:first-child),
	.npp-list-products[style*="--nlp-cols:3"] .npp-list-product:nth-child(-n+3):not(:first-child) {
		border-top: none;
	}
}

/* =====================================================================
   npp-grid-product / npp-grid-products — image-top product card grid
   (npp_grid_product card + npp_grid_products container).
   Grid-layout sibling of npp-list-product. All selectors scoped to
   .npp-grid-product* — no shared classes, distinct from the WooCommerce
   single-variety product grid further down the e-nursery page.
   ===================================================================== */
.npp-grid-products {
	display: grid;
	grid-template-columns: repeat(var(--npg-cols, 4), 1fr);
	gap: 2rem 1.5rem;
}
.npp-grid-product {
	margin: 0;
	display: flex;
	flex-direction: column;
}
.npp-grid-product__thumb { display: block; }
.npp-grid-product__figure {
	margin: 0 0 0.85rem;
	overflow: hidden;
	position: relative;
	aspect-ratio: 1 / 1;
}
.npp-grid-product__figure img {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
	transition: transform 0.45s ease;
}
/* Card hover — image zooms and the cart icon lights up as one unit.
   focus-within covers keyboard users tabbing into the title/icon links. */
.npp-grid-product:hover .npp-grid-product__figure img,
.npp-grid-product:focus-within .npp-grid-product__figure img {
	transform: scale(1.08);
}
.npp-grid-product:hover .npp-grid-product__btn,
.npp-grid-product:focus-within .npp-grid-product__btn {
	background: #adc087;
}
.npp-grid-product__title {
	margin: 0;
	font-size: 1rem;
	font-weight: 700;
}
.npp-grid-product__title a {
	font-weight: 700;
	letter-spacing: 0.05em;
	text-transform: uppercase;
	color: #333;
	text-decoration: none;
}
.npp-grid-product__title a:hover { text-decoration: underline; }
.npp-grid-product__meta {
	display: flex;
	align-items: center;
	flex-wrap: wrap;
	gap: 0.3rem;
	margin-top: auto;
}
/* Price — Cabin font, neutralise WC .price borders/margins */
.npp-grid-product__price {
	font-family: 'Cabin', sans-serif;
	font-size: 0.95rem;
	font-weight: 400;
	color: #666;
	white-space: nowrap;
}
.npp-grid-product__price .price {
	border: none !important;
	padding: 0 !important;
	margin: 0 !important;
	font-size: inherit !important;
	font-family: inherit !important;
	display: inline !important;
}
.npp-grid-product__caption {
	margin-left: auto;
	font-family: 'Lora', serif;
	font-style: italic;
	color: #666;
	font-size: 0.85rem;
	white-space: nowrap;
}
/* Shorter wording on narrow phone columns — swapped via markup, not truncation */
.npp-grid-product__caption-short { display: none; }
@media (max-width: 575px) {
	.npp-grid-product__caption-full { display: none; }
	.npp-grid-product__caption-short { display: inline; }
}
/* Dark circular cart button — scoped, distinct from .npp-list-product__btn */
.npp-grid-product__btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 24px;
	height: 24px;
	border-radius: 50%;
	background: #999;
	flex-shrink: 0;
	text-decoration: none !important;
	transition: background-color 0.25s ease;
}
.npp-grid-product__btn:hover { background: #adc087; }
.npp-grid-product__btn-icon {
	display: inline-block;
	width: 12px;
	height: auto;
}
@media (max-width: 768px) {
	.npp-grid-products { grid-template-columns: repeat(2, 1fr); gap: 1.5rem 1rem; }
}

/* =====================================================================
   npp-color-card — generic heading + body colour block (npp_color_card).
   Background + text colour set inline per card; children inherit colour.
   Scoped — no shared classes.
   ===================================================================== */
.npp-color-card {
	padding: 2rem 1.75rem;
	height: 100%;
	box-sizing: border-box;
}
/* Swatches — same hex + text colour as the npp_banner palette */
.npp-color-card--charcoal   { background: #333;    color: #fff; }
.npp-color-card--slate      { background: #5a6d8c; color: #fff; }
.npp-color-card--sage       { background: #c3d1a9; color: #333; }
.npp-color-card--sky        { background: #bbcdda; color: #2a2a2a; }
.npp-color-card--taupe      { background: #c3c1b6; color: #333; }
.npp-color-card--yellow     { background: #f8e75d; color: #2a2a2a; }
.npp-color-card--blush      { background: #f4cfd7; color: #2a2a2a; }
.npp-color-card--light-grey { background: #666;    color: #fff; }
.npp-color-card--red        { background: #ff8074; color: #333; }
.npp-color-card__heading {
	margin: 0 0 1rem;
	font-family: 'Lora', serif;
	font-style: italic;
	font-weight: 400;
	font-size: 1.6rem;
	line-height: 1.2;
	color: inherit;
}
.npp-color-card__body,
.npp-color-card__body p {
	margin: 0;
	font-family: 'Cabin', sans-serif;
	font-size: 0.95rem;
	line-height: 1.3;
	color: inherit;
}
.npp-color-card__body p + p { margin-top: 0.75rem; }
/* Whole-card link (Link field set) — card itself is the <a>. */
a.npp-color-card { text-decoration: none; transition: filter 0.2s ease; }
a.npp-color-card:hover,
a.npp-color-card:focus-visible { filter: brightness(1.06); }
/* Nav type — compact section-link segment: italic label left, CTA + chevron
   right, on one row. Drop three into a 3-col npp_grid (Gap 2px) to rebuild the
   under-hero nav strip from brand-palette cards. */
.npp-color-card--nav {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 16px;
	padding: 22px 28px;
}
.npp-color-card__label {
	font-family: 'Lora', serif;
	font-style: italic;
	font-weight: 400;
	font-size: 1.2rem;
	line-height: 1;
	color: inherit;
}
.npp-color-card__cta {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	font-family: 'Cabin', sans-serif;
	font-size: 0.8rem;
	font-weight: 400;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	white-space: nowrap;
	color: inherit;
}
.npp-color-card__arrow { font-size: 1.2rem; line-height: 1; transition: transform 0.2s ease; }
a.npp-color-card--nav:hover .npp-color-card__arrow { transform: translateX(3px); }
@media (max-width: 767px) {
	.npp-color-card--nav { padding: 18px 22px; }
}
/* Stretch to the row's tallest sibling in a WPBakery equal-height row.
   WPBakery sets height:100% on the column which disables flex stretch;
   reset it to auto only for columns containing a colour card (see §10). */
.vc_row-o-equal-height > .vc_column_container:has(.npp-color-card) {
	height: auto !important;
	align-self: stretch;
}

/* =====================================================================
   npp-grid — generic CSS-grid container for NPP cards (npp_grid).
   Columns via --ng-cols, gap via --ng-gap (responsive clamp default).
   Holds npp_color_card + npp_grid_product children; modern gap-based
   spacing replaces WPBakery fixed-px column padding so stacked grids
   align by construction.
   ===================================================================== */
.npp-grid {
	display: grid;
	grid-template-columns: repeat(var(--ng-cols, 4), minmax(0, 1fr));
	gap: var(--ng-gap, clamp(1rem, 2vw, 2rem));
}
@media (max-width: 991px) {
	.npp-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 575px) {
	.npp-grid { grid-template-columns: repeat(var(--ng-cols-m, 1), minmax(0, 1fr)); }
}
/* Modifier: reverse card order when the grid stacks to a single column on
   phones (≤575px). Visual only — DOM/tab order is unchanged. Intended for
   1-column mobile grids (e.g. the under-hero nav strip: puts "shop at our
   e-nursery" on top). Flex column-reverse keeps the --ng-gap spacing. */
@media (max-width: 575px) {
	.npp-grid--reverse-mobile {
		display: flex;
		flex-direction: column-reverse;
	}
}
/* Modifier: add a top gap above the grid equal to the inter-card gap, so a
   flush-stacked grid (e.g. the under-hero nav strip sitting directly below the
   hero) gets the same thin band of space above the first row as sits between
   the cards. Tracks --ng-gap, so it stays in sync with the Gap setting. */
.npp-grid--gap-above {
	margin-top: var(--ng-gap, clamp(1rem, 2vw, 2rem));
}

/* =====================================================================
   npp-gift-voucher — text + circular badge row, optional top/bottom borders
   Scoped — no shared classes.
   ===================================================================== */
.npp-gift-voucher {
	display: block;
	padding: 1.25rem 0;
	margin: 0;
}
.npp-gift-voucher.has-top-border { border-top: 1px solid #333; }
.npp-gift-voucher.has-bottom-border { border-bottom: 1px solid #333; }
.npp-gift-voucher__link,
.npp-gift-voucher {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 1.5rem;
	color: inherit;
	text-decoration: none;
}
.npp-gift-voucher__link:hover { text-decoration: none; }
.npp-gift-voucher__link:hover .npp-gift-voucher__text { text-decoration: underline; }
.npp-gift-voucher__text {
	font-family: 'Lora', serif;
	font-style: italic;
	font-size: 1.2rem;
	line-height: 1.3;
	color: #333;
	text-align: center;
}
.npp-gift-voucher__badge {
	width: 80px;
	height: auto;
	flex-shrink: 0;
	display: block;
}
@media (max-width: 768px) {
	.npp-gift-voucher__link,
	.npp-gift-voucher { flex-direction: column; gap: 0.75rem; }
	.npp-gift-voucher__text { font-size: 1.15rem; }
	.npp-gift-voucher__badge { width: 75px; }
}

/* =====================================================================
   npp-shipping-notice — reusable shipping availability row
   ===================================================================== */
.npp-shipping-notice {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 2.2rem;
	margin: 0;
	padding: 1.5rem 0;
}
.npp-shipping-notice__figure {
	flex: 0 0 150px;
	margin: 0;
	text-align: right;
}
.npp-shipping-notice__map {
	display: block;
	width: 150px;
	height: auto;
}
.npp-shipping-notice__content {
	flex: 0 1 auto;
	max-width: 920px;
}
.npp-shipping-notice__title {
	font-family: 'Lora', serif;
	font-size: 1rem;
	font-weight: 700;
	line-height: 1.15;
	margin: 0 0 0.15rem;
	color: #333;
}
.npp-shipping-notice__text {
	font-family: 'Cabin', sans-serif;
	font-size: 0.9rem;
	line-height: 1.2;
	margin: 0;
	color: #333;
}
@media (max-width: 767px) {
	.npp-shipping-notice {
		flex-direction: column;
		gap: 0.85rem;
		text-align: center;
		padding: 1.25rem 0;
	}
	.npp-shipping-notice__figure {
		flex-basis: auto;
		text-align: center;
	}
	.npp-shipping-notice__map {
		width: 120px;
	}
	.npp-shipping-notice__content {
		max-width: 100%;
	}
	/* Smaller, note-like text on mobile. */
	.npp-shipping-notice__title { font-size: 0.9rem; }
	.npp-shipping-notice__text { font-size: 0.78rem; line-height: 1.3; }
}

/* =========================================================
   NPP Banner — two-column promo (text + image), 900px wide,
   stacks on mobile. Markup in includes/vc_templates/npp_banner.php.
   ========================================================= */
.npp-banner {
	display: flex;
	width: 100%;
	max-width: 900px;
	margin-left: auto;
	margin-right: auto;
	color: #fff;
	text-decoration: none;
	overflow: hidden;
	box-sizing: border-box;
	position: relative;
	transition: transform 0.35s ease, box-shadow 0.35s ease;
}
.npp-banner:hover {
	transform: translateY(-3px);
	box-shadow: 0 14px 32px rgba(0,0,0,0.18);
}
/* Sheen sweep across the text panel on hover */
.npp-banner__text { position: relative; overflow: hidden; }
.npp-banner__text::after {
	content: "";
	position: absolute;
	top: 0;
	left: -60%;
	width: 40%;
	height: 100%;
	background: linear-gradient(120deg, transparent 0%, rgba(255,255,255,0.18) 50%, transparent 100%);
	transform: skewX(-20deg);
	pointer-events: none;
	transition: left 0.7s ease;
}
.npp-banner:hover .npp-banner__text::after { left: 120%; }
.npp-banner.npp-banner--blue,  a.npp-banner.npp-banner--blue,
.npp-banner.npp-banner--blue:hover,  a.npp-banner.npp-banner--blue:hover,
.npp-banner.npp-banner--blue:focus,  a.npp-banner.npp-banner--blue:focus,
.npp-banner.npp-banner--blue:visited, a.npp-banner.npp-banner--blue:visited { background: #6b7a92; color: #fff; }

.npp-banner.npp-banner--green, a.npp-banner.npp-banner--green,
.npp-banner.npp-banner--green:hover, a.npp-banner.npp-banner--green:hover,
.npp-banner.npp-banner--green:focus, a.npp-banner.npp-banner--green:focus,
.npp-banner.npp-banner--green:visited, a.npp-banner.npp-banner--green:visited { background: #adc087; color: #fff; }

.npp-banner.npp-banner--grey, a.npp-banner.npp-banner--grey,
.npp-banner.npp-banner--grey:hover, a.npp-banner.npp-banner--grey:hover,
.npp-banner.npp-banner--grey:focus, a.npp-banner.npp-banner--grey:focus,
.npp-banner.npp-banner--grey:visited, a.npp-banner.npp-banner--grey:visited { background: #6c6c6c; color: #fff; }

.npp-banner.npp-banner--pink, a.npp-banner.npp-banner--pink,
.npp-banner.npp-banner--pink:hover, a.npp-banner.npp-banner--pink:hover,
.npp-banner.npp-banner--pink:focus, a.npp-banner.npp-banner--pink:focus,
.npp-banner.npp-banner--pink:visited, a.npp-banner.npp-banner--pink:visited { background: #f1d7d3; color: #2a2a2a; }

.npp-banner.npp-banner--charcoal, a.npp-banner.npp-banner--charcoal,
.npp-banner.npp-banner--charcoal:hover, a.npp-banner.npp-banner--charcoal:hover,
.npp-banner.npp-banner--charcoal:focus, a.npp-banner.npp-banner--charcoal:focus,
.npp-banner.npp-banner--charcoal:visited, a.npp-banner.npp-banner--charcoal:visited { background: #333; color: #fff; }

.npp-banner.npp-banner--sage, a.npp-banner.npp-banner--sage,
.npp-banner.npp-banner--sage:hover, a.npp-banner.npp-banner--sage:hover,
.npp-banner.npp-banner--sage:focus, a.npp-banner.npp-banner--sage:focus,
.npp-banner.npp-banner--sage:visited, a.npp-banner.npp-banner--sage:visited { background: #c3d1a9; color: #333; }

.npp-banner.npp-banner--sky, a.npp-banner.npp-banner--sky,
.npp-banner.npp-banner--sky:hover, a.npp-banner.npp-banner--sky:hover,
.npp-banner.npp-banner--sky:focus, a.npp-banner.npp-banner--sky:focus,
.npp-banner.npp-banner--sky:visited, a.npp-banner.npp-banner--sky:visited { background: #bbcdda; color: #2a2a2a; }

.npp-banner.npp-banner--taupe, a.npp-banner.npp-banner--taupe,
.npp-banner.npp-banner--taupe:hover, a.npp-banner.npp-banner--taupe:hover,
.npp-banner.npp-banner--taupe:focus, a.npp-banner.npp-banner--taupe:focus,
.npp-banner.npp-banner--taupe:visited, a.npp-banner.npp-banner--taupe:visited { background: #c3c1b6; color: #333; }

.npp-banner.npp-banner--yellow, a.npp-banner.npp-banner--yellow,
.npp-banner.npp-banner--yellow:hover, a.npp-banner.npp-banner--yellow:hover,
.npp-banner.npp-banner--yellow:focus, a.npp-banner.npp-banner--yellow:focus,
.npp-banner.npp-banner--yellow:visited, a.npp-banner.npp-banner--yellow:visited { background: #f8e75d; color: #2a2a2a; }

.npp-banner.npp-banner--blush, a.npp-banner.npp-banner--blush,
.npp-banner.npp-banner--blush:hover, a.npp-banner.npp-banner--blush:hover,
.npp-banner.npp-banner--blush:focus, a.npp-banner.npp-banner--blush:focus,
.npp-banner.npp-banner--blush:visited, a.npp-banner.npp-banner--blush:visited { background: #f4cfd7; color: #2a2a2a; }

.npp-banner.npp-banner--light-grey, a.npp-banner.npp-banner--light-grey,
.npp-banner.npp-banner--light-grey:hover, a.npp-banner.npp-banner--light-grey:hover,
.npp-banner.npp-banner--light-grey:focus, a.npp-banner.npp-banner--light-grey:focus,
.npp-banner.npp-banner--light-grey:visited, a.npp-banner.npp-banner--light-grey:visited { background: #666; color: #fff; }

.npp-banner.npp-banner--slate, a.npp-banner.npp-banner--slate,
.npp-banner.npp-banner--slate:hover, a.npp-banner.npp-banner--slate:hover,
.npp-banner.npp-banner--slate:focus, a.npp-banner.npp-banner--slate:focus,
.npp-banner.npp-banner--slate:visited, a.npp-banner.npp-banner--slate:visited { background: #5a6d8c; color: #fff; }

.npp-banner.npp-banner--red, a.npp-banner.npp-banner--red,
.npp-banner.npp-banner--red:hover, a.npp-banner.npp-banner--red:hover,
.npp-banner.npp-banner--red:focus, a.npp-banner.npp-banner--red:focus,
.npp-banner.npp-banner--red:visited, a.npp-banner.npp-banner--red:visited { background: #ff8074; color: #333; }

a.npp-banner, a.npp-banner:hover, a.npp-banner:focus, a.npp-banner:visited { text-decoration: none; }
.npp-banner .npp-banner__title,
.npp-banner .npp-banner__subtitle,
.npp-banner .npp-banner__body,
.npp-banner:hover .npp-banner__title,
.npp-banner:hover .npp-banner__subtitle,
.npp-banner:hover .npp-banner__body { color: inherit; }

.npp-banner__text {
	flex: 0 0 50%;
	max-width: 50%;
	padding: 40px 36px;
	box-sizing: border-box;
	display: flex;
	flex-direction: column;
	justify-content: center;
}
.npp-banner--no-image .npp-banner__text {
	flex: 1 1 100%;
	max-width: 100%;
}
.npp-banner__title {
	margin: 0 0 8px;
	font-family: 'Lora', serif;
	font-size: 2.3rem;
	line-height: 1.1;
	letter-spacing: 0.02em;
	text-transform: uppercase;
	color: inherit;
	font-weight: 700;
}
.npp-banner__subtitle {
	margin: 0 0 18px;
	font-family: 'Lora', serif;
	font-style: italic;
	font-size: 1.6rem;
	line-height: 1.25;
	color: inherit;
}
.npp-banner__body {
	margin: 0;
	font-size: 15px;
	line-height: 1.3;
	color: inherit;
}

.npp-banner__media {
	flex: 0 0 50%;
	max-width: 50%;
	position: relative;
	min-height: 260px;
	background-size: cover;
	background-position: center;
	background-repeat: no-repeat;
	transition: transform 1.2s ease;
	transform: scale(1);
}
.npp-banner:hover .npp-banner__media { transform: scale(1.04); }

.npp-banner__video {
	position: absolute;
	top: 0;
	left: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
	pointer-events: none;
}

.npp-banner__badge {
	position: absolute;
	top: 14px;
	right: 14px;
	width: 90px;
	height: auto;
	display: block;
	filter: drop-shadow(0 4px 10px rgba(0,0,0,0.25));
}

/* Respect users who prefer reduced motion — kill the loops, keep hover lift */
@media (prefers-reduced-motion: reduce) {
	.npp-banner,
	.npp-banner__media,
	.npp-banner__badge,
	.npp-banner__text::after {
		transition: none;
		animation: none;
	}
	.npp-banner:hover { transform: none; box-shadow: none; }
	.npp-banner:hover .npp-banner__media { transform: none; }
}

@media (max-width: 767px) {
	/* column-reverse: DOM is text then media, so image stacks on top on mobile */
	.npp-banner { flex-direction: column-reverse; }
	.npp-banner__text,
	.npp-banner__media {
		flex: 0 0 auto;
		max-width: 100%;
		width: 100%;
	}
	.npp-banner__text { padding: 28px 24px; }
	.npp-banner__media { min-height: 220px; }
	.npp-banner__title { font-size: 1.6rem; }
	.npp-banner__subtitle { font-size: 1.1rem; }
	.npp-banner__badge { width: 70px; top: 10px; right: 10px; }
}

/* ---------------------------------------------------------------------
   Archive promo: a homepage [npp_banner] re-used as a single tile inside
   the 3-column category archive grid (injected in category.php). The
   banner is normally a 50/50 text+image row capped at 900px; here it
   stacks vertically (image on top, like the surrounding article cards)
   and fills its column. Markup wrapper: .npp-archive-promo > .npp-banner.
   --------------------------------------------------------------------- */
.npp-archive-promo { margin-bottom: 40px; }
.npp-archive-promo .npp-banner {
	/* column-reverse: DOM is text then media, so image sits on top */
	flex-direction: column-reverse;
	max-width: none;
	margin: 0;
	height: 100%;
}
.npp-archive-promo .npp-banner__text,
.npp-archive-promo .npp-banner__media {
	flex: 0 0 auto;
	max-width: 100%;
	width: 100%;
}
.npp-archive-promo .npp-banner__text { padding: 26px 24px; }
.npp-archive-promo .npp-banner__media { min-height: 200px; }
.npp-archive-promo .npp-banner__title { font-size: 1.6rem; }
.npp-archive-promo .npp-banner__subtitle { font-size: 1.15rem; margin-bottom: 0; }
.npp-archive-promo .npp-banner__badge { width: 70px; top: 10px; right: 10px; }

/* =====================================================================
   npp-nav-strip — compact 3-up navigation strip (npp_nav_strip).
   Replaces the row of three tall .npp-card blocks with one low strip of
   linked colour segments (italic label + uppercase CTA + chevron), so the
   home page's section nav is short on mobile instead of three tall cards.
   Scoped — no shared classes.
   ===================================================================== */
.npp-nav-strip {
	display: flex;
	flex-wrap: wrap;
	gap: 2px;
}
.npp-nav-strip__seg {
	flex: 1 1 0;
	min-width: 0;
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 16px;
	padding: 24px 30px;
	background: var(--npp-seg-bg, #adc087);
	color: var(--npp-seg-fg, #fff);
	text-decoration: none;
	transition: filter 0.2s ease;
}
.npp-nav-strip__seg:hover,
.npp-nav-strip__seg:focus-visible {
	filter: brightness(1.06);
	color: var(--npp-seg-fg, #fff);
}
/* Palette — aligned with the npp_card / npp_banner swatches */
.npp-nav-strip__seg--green    { --npp-seg-bg: #adc087; }
.npp-nav-strip__seg--sage     { --npp-seg-bg: #c3d1a9; --npp-seg-fg: #333; }
.npp-nav-strip__seg--charcoal { --npp-seg-bg: #333; }
.npp-nav-strip__seg--grey     { --npp-seg-bg: #6c6c6c; }
.npp-nav-strip__seg--slate    { --npp-seg-bg: #5a6d8c; }
.npp-nav-strip__seg--sky      { --npp-seg-bg: #bbcdda; --npp-seg-fg: #2a2a2a; }
.npp-nav-strip__seg--pink     { --npp-seg-bg: #f1d7d3; --npp-seg-fg: #2a2a2a; }
.npp-nav-strip__label {
	font-family: 'Lora', serif;
	font-style: italic;
	font-weight: 400;
	font-size: 1.2rem;
	line-height: 1;
}
.npp-nav-strip__cta {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	font-family: 'Cabin', sans-serif;
	font-size: 0.80rem;
	font-weight: 400;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	white-space: nowrap;
}
.npp-nav-strip__arrow {
	font-size: 1.2rem;
	line-height: 1;
	transition: transform 0.2s ease;
}
.npp-nav-strip__seg:hover .npp-nav-strip__arrow { transform: translateX(3px); }
@media (max-width: 767px) {
	.npp-nav-strip { flex-direction: column; }
	.npp-nav-strip__seg { padding: 18px 22px; }
	.npp-nav-strip__label { font-size: 1.25rem; }
}

/* NPP-CART-CSS-START =======================================================
   CART REDESIGN — "Box Cards" (Option B)            [npp-cart-redesign-plan.md]
   Box cards + "Inside this box" contents panel. Single (non-box) products
   render as the SAME card minus the contents panel. Totals sidebar matches the
   design: a bordered box around the header + rows only; CTA / keep-shopping /
   notes sit outside it.
   Colours come from the :root tokens below (added here because the theme has no
   token layer yet). Font sizes are in rem (root = 16px). Overrides that must
   beat WC/theme CSS are scoped under .woocommerce-cart for specificity instead
   of using !important.
   Revert: delete everything between NPP-CART-CSS-START and NPP-CART-CSS-END,
   plus the cart/cart.php (and cart-totals.php) overrides → default WC cart.
   ========================================================================= */
:root {
	--npp-sage: #adc087;
	--npp-sage-hover: #8fa66b;
	--npp-charcoal: #333333;
	--npp-charcoal-ink: #323232;
	--npp-grey: #666666;
	--npp-coral: #ff8074;
	--npp-coral-ink: #d9685c;          /* coral at AA contrast for text/labels */
	--npp-line: #999999;                /* 1px hairline standard */
	--npp-line-soft: rgba(51, 51, 51, .18);
	--npp-plant-divider: rgba(51, 51, 51, .10);
	--npp-surface: #ffffff;
	--npp-surface-soft: #f6f5f1;        /* "inside this box" wash */
	--npp-font-sans: 'Cabin', -apple-system, sans-serif;
	--npp-font-serif: 'Lora', Georgia, serif;
}

.npp-cart { font-family: var(--npp-font-sans); color: var(--npp-charcoal); }

/* Cart-scoped WooCommerce notices: softer brand surfaces with clear status accents. */
.woocommerce-cart .woocommerce-error,
.woocommerce-cart .woocommerce-message,
.woocommerce-cart .woocommerce-info {
	--npp-notice-accent: #5a6d8c;
	--npp-notice-surface: #fff;
	position: relative;
	margin: 0 0 26px;
	padding: 16px 18px 16px 54px;
	border: 0;
	border-left: 4px solid var(--npp-notice-accent);
	border-radius: 0;
	background: var(--npp-notice-surface);
	box-shadow: none;
	color: var(--npp-charcoal);
	font: 400 0.9375rem/1.45 var(--npp-font-sans);
	list-style: none;
}
.woocommerce-cart .woocommerce-error { --npp-notice-accent: #b64a3d; }
.woocommerce-cart .woocommerce-message { --npp-notice-accent: var(--npp-sage-hover); }
.woocommerce-cart .woocommerce-error::before,
.woocommerce-cart .woocommerce-message::before,
.woocommerce-cart .woocommerce-info::before {
	left: 16px;
	top: 50%;
	transform: translateY(-50%);
	display: flex;
	align-items: center;
	justify-content: center;
	width: 24px;
	height: 24px;
	border-radius: 50%;
	background: var(--npp-notice-accent);
	color: #fff;
	font-size: 0.75rem;
	line-height: 1;
}
.woocommerce-cart .woocommerce-error a,
.woocommerce-cart .woocommerce-message a,
.woocommerce-cart .woocommerce-info a { color: var(--npp-charcoal); font-weight: 600; }
.woocommerce-cart .woocommerce-error a:focus-visible,
.woocommerce-cart .woocommerce-message a:focus-visible,
.woocommerce-cart .woocommerce-info a:focus-visible { outline: 2px solid var(--npp-notice-accent); outline-offset: 3px; }

/* Head: keep-shopping action */
/* Phase 6: pull the cart up under the nav line — the generic .no-banner rule
   reserves 120px for a page banner/title the cart doesn't have. The Keep
   Shopping pill then reads as part of the header zone instead of pushing the
   first card down the page. */
.woocommerce-cart #post-content.no-banner { padding-top: 28px; }
/* …but the header logo hangs ~87px below the nav bar. When WC notices render
   at the top of the cart (add-to-cart, coupon/stock messages), give them
   clearance so the text doesn't run behind the logo. */
.woocommerce-cart #post-content.no-banner:has(.woocommerce-notices-wrapper > *) { padding-top: 100px; }
.npp-cart-head { display: flex; align-items: center; justify-content: flex-end; margin: 0 0 16px; }
.npp-keep-shopping,
.npp-cart .npp-keep-shopping { display: inline-flex; align-items: center; justify-content: center; height: 40px; box-sizing: border-box; padding: 0 16px; border: 1px solid var(--npp-sage-hover); border-radius: 999px; background: var(--npp-surface); color: var(--npp-sage-hover); font: 400 0.8125rem/1 var(--npp-font-sans); text-transform: uppercase; letter-spacing: .04em; text-decoration: none; transition: background-color .12s ease, border-color .12s ease, color .12s ease; }
.woocommerce-cart .npp-cart .npp-keep-shopping:hover { border-color: var(--npp-sage-hover); background: var(--npp-sage-hover); color: #fff; }
.woocommerce-cart .npp-cart .npp-keep-shopping:focus-visible { outline: 2px solid var(--npp-charcoal); outline-offset: 3px; }

.npp-cart-items { margin: 0 0 8px; }

/* ---- Card (shared by box cards and single-product cards) ---- */
.npp-cart-box { border: 1px solid var(--npp-line); background: var(--npp-surface); margin: 0 0 22px; }
.npp-box-header { display: flex; gap: 20px; padding: 22px 24px; align-items: flex-start; }
.npp-box-thumb img { width: 92px; height: 92px; object-fit: cover; display: block; border-radius: 0; }
.npp-box-body { flex: 1 1 auto; min-width: 0; }
.npp-box-name { font-family: var(--npp-font-serif); font-size: 1.4375rem; font-weight: 600; line-height: 1.1; margin: 4px 0 6px; color: var(--npp-charcoal-ink); text-transform: uppercase; }
.npp-box-name a { color: inherit; text-decoration: none; }
.npp-box-name a:hover { color: var(--npp-sage-hover); }
.npp-box-desc { margin: 0 0 4px; color: var(--npp-grey); font-size: 0.8125rem; }
/* Phase 6/7: gift-card cards — point buyers to the checkout gift-message form. */
.npp-gift-note { margin: 2px 0 6px; font-family: var(--npp-font-serif); font-style: italic; font-size: 0.8125rem; color: var(--npp-grey); }
.npp-box-actions { display: flex; gap: 18px; margin-top: 14px; align-items: center; }
.npp-edit-box { font-size: 0.75rem; font-weight: 600; text-transform: uppercase; letter-spacing: .04em; color: var(--npp-sage-hover); text-decoration: none; border-bottom: 1px solid var(--npp-sage); padding-bottom: 1px; }
.npp-edit-box:hover { color: var(--npp-sage-hover); border-color: var(--npp-sage-hover); }
.npp-cart .npp-remove-box { font-size: 0.75rem; font-weight: 600; text-transform: uppercase; letter-spacing: .04em; color: var(--npp-grey); text-decoration: none; }
.npp-cart .npp-remove-box:hover { color: var(--npp-coral-ink); }

.npp-box-rail { text-align: right; flex: 0 0 auto; }
.npp-box-price { display: block; font-family: var(--npp-font-serif); font-size: 1.5rem; color: var(--npp-charcoal-ink); }
.npp-box-price del { color: #999; font-size: .8em; }
.npp-box-price-cap { display: block; font-size: 0.75rem; color: var(--npp-grey); margin: 2px 0 10px; }
.npp-cart-product .npp-box-price { margin-bottom: 10px; }

/* Quantity pill */
.npp-box-qty .quantity { display: inline-flex; align-items: center; }
.npp-box-qty .qty { width: 56px; height: 36px; text-align: center; border: 1px solid var(--npp-line); border-radius: 30px; background: var(--npp-surface); font-family: var(--npp-font-sans); font-size: 0.875rem; color: var(--npp-charcoal); padding: 0 4px 0 16px; }
.npp-box-qty .qty::-webkit-inner-spin-button { -webkit-appearance: inner-spin-button; opacity: .65; cursor: pointer; }
.npp-box-qty .qty:hover::-webkit-inner-spin-button,
.npp-box-qty .qty:focus::-webkit-inner-spin-button { opacity: .9; }

/* ---- Contents panel (box cards only) ---- */
.npp-box-contents { background: var(--npp-surface-soft); border-top: 1px solid var(--npp-line); padding: 16px 24px 18px; }
.npp-contents-label { display: block; font-size: 0.6875rem; font-weight: 600; text-transform: uppercase; letter-spacing: .12em; color: var(--npp-charcoal); margin: 0 0 8px; }
.npp-plant-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 6px 28px; }
.npp-plant-row { display: flex; align-items: center; gap: 12px; padding: 8px 0; border-top: 1px solid var(--npp-plant-divider); }
.npp-plant-thumb img { width: 46px; height: 46px; object-fit: cover; display: block; border-radius: 0; }
.npp-plant-body { flex: 1 1 auto; min-width: 0; }
.npp-plant-name { display: block; font-family: var(--npp-font-serif); font-size: 0.875rem; font-weight: 600; color: var(--npp-charcoal-ink); line-height: 1.2; }
.npp-plant-botanical { display: block; font-family: var(--npp-font-serif); font-style: italic; font-size: 0.75rem; color: var(--npp-grey); }
.npp-plant-qty { font-family: var(--npp-font-sans); font-size: 0.8125rem; font-weight: 600; color: var(--npp-charcoal); white-space: nowrap; }

/* ---- Cart update action (promo code lives in the totals sidebar) ---- */
.npp-cart-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 12px 16px; margin: 4px 0 26px; }
/* Scope under .woocommerce-cart so these beat the theme's charcoal .button style. */
.woocommerce-cart .npp-cart-actions button.npp-update-cart { font-family: var(--npp-font-sans); font-size: 0.75rem; font-weight: 700; text-transform: uppercase; letter-spacing: .08em; border-radius: 30px; padding: 0 24px; height: 40px; cursor: pointer; }
.woocommerce-cart .npp-cart-actions button.npp-update-cart { background: var(--npp-surface); color: var(--npp-grey); border: 1px solid var(--npp-line-soft); margin-left: auto; }
.woocommerce-cart .npp-cart-actions button.npp-update-cart:hover { background: var(--npp-sage); border-color: var(--npp-sage); color: #fff; }
/* Hide "Update cart" until a quantity change enables it (WC toggles [disabled]). */
.woocommerce-cart .npp-cart-actions button.npp-update-cart[disabled],
.woocommerce-cart .npp-cart-actions button.npp-update-cart:disabled { display: none; }

/* ---- Two-column layout: items + sticky totals sidebar ---- */
.npp-cart { display: grid; grid-template-columns: minmax(0, 1fr) 360px; gap: 34px; align-items: start; }
.npp-cart-head { grid-column: 1 / -1; }
.npp-cart-form { grid-column: 1; min-width: 0; }
.npp-cart-collaterals { grid-column: 2; width: auto; float: none; margin: 0; padding: 0; position: sticky; top: 20px; }
.npp-cart-collaterals .cross-sells { display: none; } /* design omits cross-sells in the cart */

/* ---- Totals sidebar ---- */
/* The card also carries WC's .cart_totals class (core CSS: width:48%; float:right).
   Scope under .woocommerce-cart to win on specificity instead of !important. */
.woocommerce-cart .npp-cart-collaterals .cart_totals.npp-cart-totals { width: 100%; float: none; margin: 0; }
.npp-cart-totals { background: transparent; }

/* Bordered box = sage header + rows only (per design). No rounded corners. */
.npp-totals-box { border: 1px solid var(--npp-line); border-radius: 0; background: var(--npp-surface); overflow: hidden; }
.npp-totals-head { margin: 0; background: var(--npp-sage); color: #fff; font-family: var(--npp-font-serif); font-size: 1.25rem; font-weight: 600; padding: 14px; text-transform: uppercase; }

/* table-layout:fixed keeps the table inside the sidebar; long content wraps. */
.npp-cart-totals .npp-totals-table { width: 100%; min-width: 0; margin: 0; border: 0; border-collapse: collapse; table-layout: fixed; font-family: var(--npp-font-sans); }
/* High specificity: WC core sets .cart_totals tr td/th { border-top:1px } and
   table.shop_table { border-radius; border; border-collapse:separate }. The
   table no longer carries .shop_table, and these win over .cart_totals tr td to
   give clean single row-dividers (no inner-table look). */
.woocommerce-cart .npp-cart-collaterals .npp-cart-totals .npp-totals-table th,
.woocommerce-cart .npp-cart-collaterals .npp-cart-totals .npp-totals-table td { padding: 12px 14px; border: 0; border-top: 0; border-bottom: 1px solid var(--npp-line-soft); font-size: 0.8125rem; line-height: 1.45; font-weight: 400; color: var(--npp-charcoal); vertical-align: top; background: none; overflow-wrap: break-word; }
.npp-cart-totals .npp-totals-table th { width: 32%; text-align: left; font-weight: 600; }
.npp-cart-totals .npp-totals-table td { width: 68%; text-align: right; color: var(--npp-charcoal-ink); }
.woocommerce-cart .npp-cart-collaterals .npp-cart-totals .npp-totals-table tr:last-child th,
.woocommerce-cart .npp-cart-collaterals .npp-cart-totals .npp-totals-table tr:last-child td { border-bottom: 0; }

/* Normalise the markup WC injects into the shipping/express cells. */
.npp-cart-totals .woocommerce-shipping-methods { margin: 0; padding: 0; list-style: none; }
.npp-cart-totals .woocommerce-shipping-methods li { margin: 0 0 2px; padding: 0; list-style: none; }
.npp-cart-totals .woocommerce-shipping-methods label { font: 400 0.8125rem/1.45 var(--npp-font-sans); color: var(--npp-charcoal-ink); cursor: pointer; }
.npp-cart-totals .woocommerce-shipping-destination { margin: 6px 0 0; font: 400 0.8rem/1.45 var(--npp-font-sans); color: var(--npp-grey); }
.npp-cart-totals .woocommerce-shipping-destination strong { font-weight: 600; color: var(--npp-charcoal); }
.npp-cart-totals .npp-totals-table small { font-size: 0.6875rem; font-weight: 400; color: var(--npp-grey); }
.npp-cart-totals .npp-totals-table a { font: 600 0.75rem/1.4 var(--npp-font-sans); color: var(--npp-sage-hover); text-decoration: none; }
.npp-cart-totals .npp-totals-table a:hover { color: var(--npp-sage-hover); text-decoration: underline; }
/* "Change address" toggle: normal weight, not the semibold of other links */
.npp-cart-totals .npp-totals-table a.shipping-calculator-button { font-weight: 400; }
/* Prices share the table's light weight. The competing bold rule is itself
   !important, so this one needs !important to win (specificity alone can't). */
.woocommerce-cart .npp-cart-totals .npp-totals-table td .woocommerce-Price-amount,
.woocommerce-cart .npp-cart-totals .npp-totals-table td .woocommerce-Price-amount bdi,
.woocommerce-cart .npp-cart-totals .npp-totals-table td .amount { font-weight: 400 !important; }

/* Subtotal/Total labels share the promo label treatment; the total figure stays
   larger than the other prices. Scoped to match the high-specificity base rules. */
.woocommerce-cart .npp-cart-collaterals .npp-cart-totals .npp-totals-table .cart-subtotal th,
.woocommerce-cart .npp-cart-collaterals .npp-cart-totals .npp-totals-table .order-total th { font-size: 0.8rem; font-weight: 400; letter-spacing: .05em; text-transform: uppercase; }
.woocommerce-cart .npp-cart-collaterals .npp-cart-totals .npp-totals-table .cart-subtotal td { font-size: 1rem; }
.woocommerce-cart .npp-cart-collaterals .npp-cart-totals .npp-totals-table .order-total td { font-family: var(--npp-font-serif); font-size: 1.5rem; font-weight: 400; color: var(--npp-charcoal-ink); }
.woocommerce-cart .npp-cart-collaterals .npp-cart-totals .npp-totals-table .order-total td small { display: block; font-family: var(--npp-font-sans); font-size: 0.75rem; font-weight: 400; color: var(--npp-grey); }

/* Promo code — visually part of the totals sidebar, submitted by #npp-cart-form. */
.npp-sidebar-coupon { margin-top: 14px; padding: 13px 14px 14px; border: 1px solid var(--npp-line); background: transparent; }
.npp-sidebar-coupon__label { display: block; margin: 0 0 8px; color: var(--npp-charcoal); font: 400 0.8rem/1.2 var(--npp-font-sans); letter-spacing: .05em; text-transform: uppercase; }
.npp-sidebar-coupon__controls { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 8px; align-items: center; }
.woocommerce-cart .npp-sidebar-coupon .npp-sidebar-coupon__input { width: 100%; min-width: 0; height: 40px; box-sizing: border-box; margin: 0; padding: 0 14px; border: 1px solid var(--npp-line); border-radius: 999px; background: var(--npp-surface); color: var(--npp-charcoal); font: 400 0.8125rem/1 var(--npp-font-sans); }
.woocommerce-cart .npp-sidebar-coupon .npp-sidebar-coupon__input:focus { border-color: var(--npp-sage-hover); outline: 2px solid rgba(143, 166, 107, .32); outline-offset: 1px; }
.woocommerce-cart .npp-sidebar-coupon button.npp-sidebar-coupon__apply { height: 40px; box-sizing: border-box; margin: 0; padding: 0 16px; border: 1px solid var(--npp-line); border-radius: 999px; background: var(--npp-surface); color: var(--npp-grey); font: 600 0.6875rem/1 var(--npp-font-sans); letter-spacing: .08em; text-transform: uppercase; cursor: pointer; transition: background-color .12s ease, border-color .12s ease, color .12s ease; }
.woocommerce-cart .npp-sidebar-coupon button.npp-sidebar-coupon__apply:hover { border-color: var(--npp-sage-hover); background: var(--npp-sage-hover); color: #fff; }
.woocommerce-cart .npp-sidebar-coupon button.npp-sidebar-coupon__apply:focus-visible { outline: 2px solid var(--npp-charcoal); outline-offset: 3px; }

/* Proceed to checkout — full-width sage pill OUTSIDE the box (+ express-pay) */
.npp-proceed { margin-top: 14px; }
.woocommerce-cart .npp-cart-totals a.checkout-button.button { display: block; width: 100%; box-sizing: border-box; text-align: center; background: var(--npp-sage); color: #fff; border: 0; border-radius: 30px; padding: 16px 18px; font-family: var(--npp-font-sans); font-size: 0.8125rem; font-weight: 700; text-transform: uppercase; letter-spacing: .08em; text-decoration: none; }
.woocommerce-cart .npp-cart-totals a.checkout-button.button:hover { background: var(--npp-sage-hover); color: #fff; }

/* On-brand accent-rule notes (outside the box) */
.npp-cart-notes { margin-top: 22px; border-top: 1px solid var(--npp-line-soft); padding-top: 18px; display: grid; gap: 16px; }
.npp-note { border-left: 3px solid var(--npp-sage); padding: 1px 0 1px 14px; }
.npp-note--coral { border-left-color: var(--npp-coral); }
.npp-note-label { display: block; font-family: var(--npp-font-sans); font-size: 0.6875rem; font-weight: 600; text-transform: uppercase; letter-spacing: .12em; color: var(--npp-sage-hover); }
.npp-note--coral .npp-note-label { color: var(--npp-coral-ink); }
.npp-note-body { margin: 4px 0 0; font-family: var(--npp-font-serif); font-style: italic; font-size: 0.8125rem; color: var(--npp-grey); line-height: 1.45; }
/* Same note, injected under the checkout state field when NT/WA/TAS is picked */
.npp-state-warning { margin-top: 10px; }

/* ---- Overrides: beat WooCommerce global a.remove styling ---- */
.npp-cart .npp-box-actions a.npp-remove-box {
	display: inline; width: auto; height: auto; float: none;
	font-size: 0.75rem !important; font-weight: 600 !important; line-height: 1.4 !important;
	color: var(--npp-grey) !important; text-transform: uppercase; letter-spacing: .04em; text-decoration: none;
}
.npp-cart .npp-box-actions a.npp-remove-box:hover { color: var(--npp-coral-ink) !important; background: none !important; }

/* ---- Mobile (Phase 3) — Option B mobile frame ---- */
@media (max-width: 760px) {
	/* Single column: items, then the totals sidebar inline beneath them. */
	.npp-cart { grid-template-columns: 1fr; gap: 24px; }
	.npp-cart-form, .npp-cart-collaterals { grid-column: 1; }
	.npp-cart-collaterals { position: static; top: auto; }

	/* Card reflow: 72px thumb + body up top; price + qty share a full-width row
	   below (grid areas keep it robust regardless of meta in the body). */
	.npp-cart-box { margin-bottom: 16px; }
	.npp-box-header {
		display: grid;
		grid-template-columns: 72px minmax(0, 1fr);
		grid-template-areas: "thumb body" "rail rail";
		column-gap: 14px;
		row-gap: 12px;
		padding: 16px;
		align-items: start;
	}
	.npp-box-thumb { grid-area: thumb; }
	.npp-box-thumb img { width: 72px; height: 72px; }
	.npp-box-body { grid-area: body; }
	.npp-box-name { font-size: 1.25rem; margin: 0 0 2px; }   /* 20px */
	.npp-box-desc { display: none; }                          /* design omits desc on mobile */
	.npp-box-actions { margin-top: 10px; }

	/* Price + qty on one baseline row, full width under the body. */
	.npp-box-rail {
		grid-area: rail;
		text-align: left;
		width: auto;
		margin: 0;
		display: flex;
		align-items: center;
		justify-content: space-between;
		gap: 16px;
	}
	.npp-box-price { font-size: 1.1875rem; }                  /* 19px */
	.npp-box-price-cap { display: none; }
	.npp-box-qty { flex: 0 0 auto; }
	.npp-cart-product .npp-box-price { margin-bottom: 0; }

	/* Tighter contents panel to match the mobile frame padding. */
	.npp-box-contents { padding: 14px 16px; }

	/* CTA carries the running total on mobile ("PROCEED TO CHECKOUT · $XX.XX").
	   --npp-cart-total is set server-side on .npp-proceed in cart-totals.php. */
	.woocommerce-cart .npp-cart-totals a.checkout-button.button::after { content: " \00b7\00a0" var(--npp-cart-total, ''); }
}
@media (max-width: 560px) {
	.woocommerce-cart .woocommerce-error,
	.woocommerce-cart .woocommerce-message,
	.woocommerce-cart .woocommerce-info { padding: 14px 14px 14px 48px; font-size: 0.875rem; }
	.woocommerce-cart .woocommerce-error::before,
	.woocommerce-cart .woocommerce-message::before,
	.woocommerce-cart .woocommerce-info::before { left: 13px; }
	.npp-cart .npp-keep-shopping { height: 38px; padding-inline: 14px; font-size: 0.75rem; }
	.npp-sidebar-coupon__controls { grid-template-columns: minmax(0, 1fr) auto; }
	.woocommerce-cart .npp-sidebar-coupon button.npp-sidebar-coupon__apply { padding-inline: 14px; }

	/* Contents collapse to a single column of smaller plant rows. */
	.npp-plant-grid { grid-template-columns: 1fr; gap: 0; }
	.npp-plant-row { padding: 7px 0; gap: 10px; }
	.npp-plant-thumb img { width: 40px; height: 40px; }
	.npp-plant-name { font-size: 0.8125rem; }                 /* 13px */
	.npp-plant-botanical { font-size: 0.6875rem; }            /* 11px */
}
/* NPP-CART-CSS-END ======================================================== */

/* NPP-CHECKOUT-CSS-START ===================================================
   CHECKOUT REDESIGN (Phase 8)                       [npp-cart-redesign-plan.md]
   Restyles WooCommerce's default checkout to match the "Box Cards" cart:
   two-column grid (fields left, order-review sidebar right), branded
   form fields, Smart Coupons gift form panel, sage PLACE ORDER pill.
   The review-order template removes its visual header while preserving every
   WooCommerce checkout hook; all presentation remains scoped here.
   Tokens come from the :root block in NPP-CART-CSS. Scoped under
   .woocommerce-checkout (body class) for specificity instead of !important.
   Revert: delete everything between NPP-CHECKOUT-CSS-START and -END.
   ========================================================================= */

/* Page frame: lifted like the cart, but the checkout always renders the
   shipping-Mondays info notice at the top and the header logo hangs ~87px
   below the nav bar — 100px keeps the notice text clear of the logo. */
.woocommerce-checkout #post-content.no-banner { padding-top: 100px; }
.woocommerce-checkout .woocommerce { font-family: var(--npp-font-sans); color: var(--npp-charcoal); }

/* ---- Notices: same treatment as the cart ---- */
.woocommerce-checkout .woocommerce-error,
.woocommerce-checkout .woocommerce-message,
.woocommerce-checkout .woocommerce-info {
	--npp-notice-accent: #5a6d8c;
	--npp-notice-surface: #fff;
	position: relative;
	margin: 0 0 22px;
	padding: 16px 18px 16px 54px;
	border: 0;
	border-left: 4px solid var(--npp-notice-accent);
	border-radius: 0;
	background: var(--npp-notice-surface);
	box-shadow: none;
	color: var(--npp-charcoal);
	font: 400 0.9375rem/1.45 var(--npp-font-sans);
	list-style: none;
}
.woocommerce-checkout .woocommerce-error { --npp-notice-accent: #b64a3d; }
.woocommerce-checkout .woocommerce-message { --npp-notice-accent: var(--npp-sage-hover); }
.woocommerce-checkout .woocommerce-error::before,
.woocommerce-checkout .woocommerce-message::before,
.woocommerce-checkout .woocommerce-info::before {
	left: 16px;
	top: 50%;
	transform: translateY(-50%);
	display: flex;
	align-items: center;
	justify-content: center;
	width: 24px;
	height: 24px;
	border-radius: 50%;
	background: var(--npp-notice-accent);
	color: #fff;
	font-size: 0.75rem;
	line-height: 1;
}
.woocommerce-checkout .woocommerce-error a,
.woocommerce-checkout .woocommerce-message a,
.woocommerce-checkout .woocommerce-info a { color: var(--npp-charcoal); font-weight: 600; }
.woocommerce-checkout .woocommerce-error a:focus-visible,
.woocommerce-checkout .woocommerce-message a:focus-visible,
.woocommerce-checkout .woocommerce-info a:focus-visible { outline: 2px solid var(--npp-notice-accent); outline-offset: 3px; }

/* ---- Coupon toggle ("Have a coupon?") + slide-down form ---- */
.woocommerce-checkout .woocommerce-form-coupon-toggle .woocommerce-info { margin-bottom: 22px; }
.woocommerce-checkout form.checkout_coupon.woocommerce-form-coupon {
	margin: 0 0 22px;
	padding: 16px 18px;
	border: 1px solid var(--npp-line-soft);
	border-radius: 0;
	background: var(--npp-surface-soft);
}
.woocommerce-checkout form.checkout_coupon p { margin: 0 0 10px; font: 400 0.8125rem/1.45 var(--npp-font-sans); color: var(--npp-grey); }
.woocommerce-checkout form.checkout_coupon .form-row { margin-bottom: 0; }
.woocommerce-checkout form.checkout_coupon input[name="coupon_code"] {
	height: 40px; box-sizing: border-box; padding: 0 14px;
	border: 1px solid var(--npp-line-soft); border-radius: 999px;
	background: var(--npp-surface); color: var(--npp-charcoal);
	font: 400 0.8125rem/1 var(--npp-font-sans);
}
.woocommerce-checkout form.checkout_coupon button[name="apply_coupon"] {
	height: 40px; box-sizing: border-box; padding: 0 16px;
	border: 1px solid var(--npp-sage-hover); border-radius: 999px;
	background: var(--npp-surface); color: var(--npp-sage-hover);
	font: 600 0.6875rem/1 var(--npp-font-sans); letter-spacing: .08em; text-transform: uppercase;
	cursor: pointer; transition: background-color .12s ease, color .12s ease;
}
.woocommerce-checkout form.checkout_coupon button[name="apply_coupon"]:hover { background: var(--npp-sage-hover); color: #fff; }

/* ---- Two-column layout: fields left, order review sidebar right ---- */
.woocommerce-checkout form.checkout.woocommerce-checkout {
	display: grid;
	grid-template-columns: minmax(0, 1fr) 380px;
	gap: 0 34px;
	align-items: start;
}
.woocommerce-checkout form.checkout .col2-set { grid-column: 1; width: 100%; float: none; }
.woocommerce-checkout form.checkout .gift-certificate { grid-column: 1; }
.woocommerce-checkout form.checkout #order_review_heading { grid-column: 2; grid-row: 1; }
.woocommerce-checkout form.checkout #order_review { grid-column: 2; grid-row: 2 / span 4; }

/* Billing + additional fields stack full-width in the left column. */
.woocommerce-checkout form.checkout .col2-set .col-1,
.woocommerce-checkout form.checkout .col2-set .col-2 { width: 100%; float: none; margin: 0; padding: 0; }
.woocommerce-checkout form.checkout .col2-set .col-2 { margin-top: 18px; }

/* Compact billing grid: related fields share a row without changing WC field
   names, validation, address updates or tab order. */
.woocommerce-checkout .woocommerce-billing-fields__field-wrapper {
	display: grid;
	grid-template-columns: repeat(12, minmax(0, 1fr));
	gap: 12px;
}
.woocommerce-checkout .woocommerce-billing-fields__field-wrapper .form-row {
	grid-column: 1 / -1;
	width: auto;
	float: none;
	margin: 0;
}
.woocommerce-checkout #billing_first_name_field { grid-column: 1 / span 6; }
.woocommerce-checkout #billing_last_name_field { grid-column: 7 / span 6; }
.woocommerce-checkout #billing_city_field { grid-column: 1 / span 6; }
.woocommerce-checkout #billing_state_field { grid-column: 7 / span 3; }
.woocommerce-checkout #billing_postcode_field { grid-column: 10 / span 3; }
.woocommerce-checkout #billing_phone_field { grid-column: 1 / span 5; }
.woocommerce-checkout #billing_email_field { grid-column: 6 / span 7; }

/* Section headings (Billing details / order notes heading) as serif titles. */
.woocommerce-checkout form.checkout h3 {
	margin: 0 0 16px;
	font-family: var(--npp-font-serif);
	font-size: 1.25rem;
	font-weight: 600;
	color: var(--npp-charcoal);
}

/* ---- Form fields ---- */
.woocommerce-checkout form.checkout .form-row label {
	font: 400 0.8125rem/1.4 var(--npp-font-sans);
	color: var(--npp-charcoal);
	margin-bottom: 4px;
}
.woocommerce-checkout form.checkout .form-row label .required { color: var(--npp-coral-ink); text-decoration: none; }
.woocommerce-checkout form.checkout .form-row .input-text,
.woocommerce-checkout form.checkout .form-row select,
.woocommerce-checkout form.checkout .form-row textarea {
	width: 100%;
	box-sizing: border-box;
	min-height: 42px;
	padding: 9px 12px;
	border: 1px solid var(--npp-line-soft);
	border-radius: 0;
	background: var(--npp-surface);
	color: var(--npp-charcoal);
	font: 400 0.875rem/1.4 var(--npp-font-sans);
	box-shadow: none;
}
/* Override the legacy #post-content textarea 90% / 470px cap on checkout. */
.woocommerce-checkout #post-content form.checkout textarea { width: 100%; max-width: none; }
.woocommerce-checkout form.checkout .form-row textarea { min-height: 96px; }
.woocommerce-checkout form.checkout .form-row .input-text:focus,
.woocommerce-checkout form.checkout .form-row select:focus,
.woocommerce-checkout form.checkout .form-row textarea:focus {
	border-color: var(--npp-sage-hover);
	outline: 2px solid rgba(143, 166, 107, .32);
	outline-offset: 1px;
}
/* Select2 (country/state dropdowns) to match the flat inputs. */
.woocommerce-checkout form.checkout .select2-container .select2-selection--single {
	height: 42px; border: 1px solid var(--npp-line-soft); border-radius: 0; background: var(--npp-surface);
}
.woocommerce-checkout form.checkout .select2-container .select2-selection--single .select2-selection__rendered { line-height: 40px; padding-left: 12px; color: var(--npp-charcoal); font-family: var(--npp-font-sans); font-size: 0.875rem; }
.woocommerce-checkout form.checkout .select2-container .select2-selection--single .select2-selection__arrow { height: 40px; }
/* Validation states */
.woocommerce-checkout form.checkout .form-row.woocommerce-invalid .input-text,
.woocommerce-checkout form.checkout .form-row.woocommerce-invalid select { border-color: #b64a3d; }
.woocommerce-checkout form.checkout .form-row.woocommerce-validated .input-text,
.woocommerce-checkout form.checkout .form-row.woocommerce-validated select { border-color: var(--npp-sage); }

/* ---- Smart Coupons gift form: clean per-card message panel ---- */
.woocommerce-checkout form.checkout .gift-certificate.sc_info_box {
	margin: 18px 0 0 !important;
	padding: 28px 30px 30px !important;
	border: 1px solid rgba(51, 51, 51, .35);
	background: var(--npp-surface);
}
.woocommerce-checkout form.checkout .gift-certificate h3 {
	margin: 0;
	font: 400 1.375rem/1.3 var(--npp-font-serif);
	letter-spacing: 0;
	text-transform: none;
	color: var(--npp-charcoal);
}
.woocommerce-checkout .gift-certificate .gift-certificate-show-form > p { display: none; }
.woocommerce-checkout .gift-certificate ul.show_hide_list { display: flex; flex-wrap: wrap; gap: 12px; margin: 22px 0 0; padding: 0; list-style: none; }
.woocommerce-checkout .gift-certificate ul.show_hide_list > li { margin: 0; }
.woocommerce-checkout .gift-certificate ul.single_multi_list { display: flex; flex-wrap: wrap; gap: 8px 18px; margin: 8px 0 0 22px; padding: 0; list-style: none; }
/* JS activates Smart Coupons' native per-card mode before this redundant choice is hidden. */
body.woocommerce-checkout.npp-gift-per-card .gift-certificate ul.single_multi_list { display: none !important; }
.woocommerce-checkout .gift-certificate .show_hide_list > li > input[type="radio"] {
	position: absolute;
	width: 1px;
	height: 1px;
	margin: -1px;
	opacity: 0;
	overflow: hidden;
}
.woocommerce-checkout .gift-certificate label[for="hide_form"],
.woocommerce-checkout .gift-certificate label[for="show_form"] {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 118px;
	height: 44px;
	box-sizing: border-box;
	padding: 0 20px;
	border: 1px solid rgba(51, 51, 51, .35);
	border-radius: 999px;
	background: var(--npp-surface);
	color: var(--npp-charcoal);
	font: 600 0.75rem/1 var(--npp-font-sans);
	letter-spacing: .04em;
	text-transform: uppercase;
	cursor: pointer;
	transition: background-color .12s ease, border-color .12s ease, color .12s ease;
}
.woocommerce-checkout .gift-certificate #hide_form:checked + label,
.woocommerce-checkout .gift-certificate #show_form:checked + label {
	border-color: var(--npp-sage);
	background: var(--npp-sage);
	color: #fff;
}
.woocommerce-checkout .gift-certificate #hide_form:focus-visible + label,
.woocommerce-checkout .gift-certificate #show_form:focus-visible + label {
	outline: 2px solid var(--npp-charcoal);
	outline-offset: 3px;
}
.woocommerce-checkout .gift-certificate .gift-certificate-receiver-detail-form {
	margin-top: 26px;
	padding-top: 0;
	border-top: 0;
}
.woocommerce-checkout .gift-certificate .npp-gift-form__message-title {
	margin: 0 0 20px;
	font: 400 1.25rem/1.3 var(--npp-font-serif);
	color: var(--npp-charcoal);
}
.woocommerce-checkout .gift-certificate .form_table {
	width: 100%;
	box-sizing: border-box;
	padding: 0;
	border: 0;
}
.woocommerce-checkout .gift-certificate .form_table + .form_table {
	margin-top: 30px;
	padding-top: 0;
	border-top: 0;
}
.woocommerce-checkout .gift-certificate .email_amount .amount {
	margin: 0 0 12px;
	font: 400 0.875rem/1.4 var(--npp-font-serif);
	letter-spacing: .02em;
	text-transform: uppercase;
	color: var(--npp-charcoal);
}
.woocommerce-checkout .gift-certificate .email_amount .email,
.woocommerce-checkout .gift-certificate .message_row,
.woocommerce-checkout .gift-certificate .message_row .message,
.woocommerce-checkout .gift-certificate .message_row .sc_message { width: 100%; }
.woocommerce-checkout .gift-certificate .message_row { margin-top: 12px; }
/* Per-card recipient blocks (email + message per gift card) */
.woocommerce-checkout .gift-certificate input[type="text"],
.woocommerce-checkout .gift-certificate input[type="email"],
.woocommerce-checkout .gift-certificate textarea {
	width: 100%;
	box-sizing: border-box;
	min-height: 50px;
	margin: 0;
	padding: 12px 14px;
	border: 1px solid rgba(51, 51, 51, .35);
	border-radius: 0;
	background: var(--npp-surface);
	color: var(--npp-charcoal);
	font: 400 0.875rem/1.4 var(--npp-font-sans);
}
.woocommerce-checkout .gift-certificate textarea { min-height: 128px; resize: vertical; }
/* Smart Coupons sets .sc_message textarea width:90% — pin the per-card email +
   message fields to the full panel width. */
.woocommerce-checkout .gift-certificate .sc_message textarea,
.woocommerce-checkout .gift-certificate .message textarea,
.woocommerce-checkout .gift-certificate .sc_message input,
.woocommerce-checkout .gift-certificate .form-row input,
.woocommerce-checkout .gift-certificate .email_sending_form input[type="text"] { width: 100%; }
.woocommerce-checkout .gift-certificate input:focus,
.woocommerce-checkout .gift-certificate textarea:focus {
	border-color: var(--npp-sage-hover);
	outline: 2px solid rgba(143, 166, 107, .32);
	outline-offset: 1px;
}

/* ---- Order review sidebar: sage band + bordered box (mirrors cart totals) ----
   Keep the heading and review in normal flow. They are separate WooCommerce
   siblings, so making both sticky causes them to split when the grid reaches
   its lower boundary. */
.woocommerce-checkout form.checkout #order_review_heading {
	margin: 0;
	padding: 14px;
	background: var(--npp-sage);
	color: #fff;
	font-family: var(--npp-font-serif);
	font-size: 1.25rem;
	font-weight: 600;
	text-transform: uppercase;
	border: 1px solid var(--npp-line);
	border-bottom: 0;
}
.woocommerce-checkout form.checkout #order_review {
	border: 0;
	background: transparent;
}

/* Review table */
.woocommerce-checkout #order_review table.shop_table {
	width: 100%; margin: 0; border: 1px solid var(--npp-line); border-top: 0; border-radius: 0; border-collapse: collapse;
	font-family: var(--npp-font-sans); background: var(--npp-surface);
}
.woocommerce-checkout #order_review table.shop_table th,
.woocommerce-checkout #order_review table.shop_table td {
	padding: 12px 14px; border: 0; border-bottom: 1px solid var(--npp-line-soft);
	font-size: 0.8125rem; line-height: 1.45; font-weight: 400; color: var(--npp-charcoal);
	background: none; vertical-align: top; overflow-wrap: break-word;
}
.woocommerce-checkout #order_review table.shop_table tbody td.product-name { font-size: 0.8rem; font-weight: 400; letter-spacing: .05em; text-transform: uppercase; }
.woocommerce-checkout #order_review table.shop_table tbody td.product-total { font-size: 1rem; }
.woocommerce-checkout #order_review table.shop_table .product-quantity { font-weight: 400; }
.woocommerce-checkout #order_review table.shop_table tfoot th { font-weight: 400; text-align: left; }
.woocommerce-checkout #order_review table.shop_table td { text-align: right; }
.woocommerce-checkout #order_review table.shop_table td.product-name { text-align: left; }
.woocommerce-checkout #order_review table.shop_table .woocommerce-Price-amount,
.woocommerce-checkout #order_review table.shop_table .woocommerce-Price-amount bdi { font-weight: 400 !important; }
.woocommerce-checkout #order_review table.shop_table tr.cart-subtotal th,
.woocommerce-checkout #order_review table.shop_table tr.order-total th { font-size: 0.8rem; font-weight: 400; letter-spacing: .05em; text-transform: uppercase; }
.woocommerce-checkout #order_review table.shop_table tr.cart-subtotal td { font-size: 1rem; }
.woocommerce-checkout #order_review table.shop_table tr.order-total td { font-family: var(--npp-font-serif); font-size: 1.5rem; color: var(--npp-charcoal-ink); }
.woocommerce-checkout #order_review table.shop_table tr.order-total td small { display: block; font-family: var(--npp-font-sans); font-size: 0.75rem; color: var(--npp-grey); }

/* Plant box contents collapse behind a toggle in the order summary. CPB adds
   every chosen plant as its own cart line, so a 4-plant box is five rows.
   The children are hidden only once the script has added
   npp-box-accordion-ready to <body>: if the JS fails, every line stays visible
   rather than hiding items the customer is paying for. */
body.npp-box-accordion-ready .woocommerce-checkout #order_review table.shop_table tr.npp-box-child { display: none; }
body.npp-box-accordion-ready .woocommerce-checkout #order_review table.shop_table tr.npp-box-child.is-open { display: table-row; }
.woocommerce-checkout #order_review table.shop_table tr.npp-box-child td { border-bottom-color: transparent; }
.woocommerce-checkout #order_review table.shop_table tr.npp-box-child.is-open + tr:not(.npp-box-child) td,
.woocommerce-checkout #order_review table.shop_table tr.npp-box-child:last-child td { border-bottom-color: var(--npp-line-soft); }
.woocommerce-checkout #order_review table.shop_table tr.npp-box-child td.product-name {
	padding-left: 28px;
	padding-top: 7px;
	padding-bottom: 7px;
	font-size: 0.75rem;
	line-height: 1.3;
	color: var(--npp-grey);
}
.woocommerce-checkout #order_review table.shop_table tr.npp-box-child td.product-name .cart-botanical-name { margin: 1px 0 0; line-height: 1.3; }
.woocommerce-checkout #order_review table.shop_table tr.npp-box-child td.product-total { padding-top: 7px; padding-bottom: 7px; }
.woocommerce-checkout #order_review table.shop_table .npp-box-toggle {
	/* Sits beside the box name. Chevron only, so the box is sized for the tap
	   target rather than for its content, with the margins pulled back in so it
	   does not push the row taller. */
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 26px;
	height: 26px;
	margin: -6px 0 -6px 4px;
	padding: 0;
	vertical-align: middle;
	border: 0;
	background: none;
	color: var(--npp-grey);
	cursor: pointer;
	transition: color .12s ease;
}
.woocommerce-checkout #order_review table.shop_table .npp-box-toggle:hover { color: var(--npp-charcoal); }
.woocommerce-checkout #order_review table.shop_table .npp-box-toggle::after {
	content: "";
	width: 6px;
	height: 6px;
	border-right: 1px solid currentColor;
	border-bottom: 1px solid currentColor;
	transform: translateY(-2px) rotate(45deg);
	transition: transform .12s ease;
}
.woocommerce-checkout #order_review table.shop_table .npp-box-toggle[aria-expanded="true"]::after { transform: translateY(1px) rotate(-135deg); }
.woocommerce-checkout #order_review table.shop_table .npp-box-toggle:focus-visible { outline: 2px solid var(--npp-charcoal); outline-offset: 0; border-radius: 50%; }

/* ---- Payment methods sit outside the bordered order summary ---- */
.woocommerce-checkout #payment { margin-top: 22px; background: transparent; border: 0; border-radius: 0; }
.woocommerce-checkout #payment ul.payment_methods {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	column-gap: 12px;
	row-gap: 22px;
	/* Same 22px separating whatever renders below the list: PLACE ORDER, the
	   Stripe wallet button, or PPCP's PayPal buttons. */
	margin: 0 0 22px;
	padding: 0;
	border: 0;
	list-style: none;
}
.woocommerce-checkout #payment ul.payment_methods li { margin: 0 0 8px; padding: 0; list-style: none; }
.woocommerce-checkout #payment ul.payment_methods li label { font: 400 0.8rem/1.4 var(--npp-font-sans); letter-spacing: .05em; text-transform: uppercase; color: var(--npp-charcoal); cursor: pointer; }
.woocommerce-checkout #payment ul.payment_methods input[type="radio"] { accent-color: var(--npp-sage-hover); margin-right: 6px; }
.woocommerce-checkout #payment li.payment_method_stripe_cc > label { display: flex; align-items: center; min-height: 28px; }
.woocommerce-checkout #payment li.payment_method_stripe_cc > label img:first-of-type { margin-left: auto; }
.woocommerce-checkout #payment li.payment_method_stripe_cc > label img { float: none; max-height: 22px; margin-right: 4px; }
.woocommerce-checkout #payment li.payment_method_stripe_cc {
	grid-column: 1 / -1;
	grid-row: 1;
	box-sizing: border-box;
	margin-bottom: 0;
	padding: 14px !important;
	border: 1px solid var(--npp-line);
	background: var(--npp-surface);
}
.woocommerce-checkout #payment div.payment_box {
	margin: 8px 0 10px;
	padding: 12px 14px;
	border-radius: 0;
	background: var(--npp-surface-soft);
	color: var(--npp-charcoal);
	font: 400 0.8125rem/1.5 var(--npp-font-sans);
}
.woocommerce-checkout #payment div.payment_box::before { display: none; }

/* Compact wallet selector row. display:contents lets the two gateway labels
   share one row while the selected provider's native button spans the width
   beneath them, preserving Stripe's checkout flow. */
.woocommerce-checkout #payment li.payment_method_stripe_applepay,
.woocommerce-checkout #payment li.payment_method_stripe_googlepay { display: contents; }
.woocommerce-checkout #payment li.payment_method_stripe_cc > input[type="radio"],
.woocommerce-checkout #payment li.payment_method_stripe_applepay > input[type="radio"],
.woocommerce-checkout #payment li.payment_method_stripe_googlepay > input[type="radio"] {
	position: absolute;
	width: 1px;
	height: 1px;
	margin: -1px;
	opacity: 0;
	overflow: hidden;
}
.woocommerce-checkout #payment ul.payment_methods li.payment_method_stripe_applepay > label,
.woocommerce-checkout #payment ul.payment_methods li.payment_method_stripe_googlepay > label {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 100%;
	height: 42px;
	box-sizing: border-box;
	padding: 0 14px;
	border: 1px solid var(--npp-line);
	border-radius: 999px;
	background: var(--npp-surface);
	font-size: 0;
	line-height: 0;
	cursor: pointer;
	transition: border-color .12s ease, background-color .12s ease, box-shadow .12s ease;
}
.woocommerce-checkout #payment ul.payment_methods li.payment_method_stripe_applepay > label { grid-column: 1; grid-row: 2; }
.woocommerce-checkout #payment ul.payment_methods li.payment_method_stripe_googlepay > label { grid-column: 2; grid-row: 2; }
.woocommerce-checkout #payment ul.payment_methods:not(:has(li.payment_method_stripe_googlepay)) li.payment_method_stripe_applepay > label,
.woocommerce-checkout #payment ul.payment_methods:not(:has(li.payment_method_stripe_applepay)) li.payment_method_stripe_googlepay > label { grid-column: 1 / -1; }
.woocommerce-checkout #payment li.payment_method_stripe_applepay > label img,
.woocommerce-checkout #payment li.payment_method_stripe_googlepay > label img {
	float: none;
	max-height: 24px;
	max-width: 96px;
	margin: 0;
}
.woocommerce-checkout #payment li.payment_method_stripe_applepay > input:checked + label,
.woocommerce-checkout #payment li.payment_method_stripe_googlepay > input:checked + label {
	border-color: var(--npp-sage-hover);
	background: var(--npp-surface-soft);
	box-shadow: inset 0 0 0 1px var(--npp-sage-hover);
}
.woocommerce-checkout #payment li.payment_method_stripe_applepay > input:focus-visible + label,
.woocommerce-checkout #payment li.payment_method_stripe_googlepay > input:focus-visible + label {
	outline: 2px solid var(--npp-charcoal);
	outline-offset: 3px;
}
/* Stripe mounts the wallet button in .form-row.place-order, not here, so these
   boxes hold nothing but hidden inputs. Keep them in the DOM and out of the
   grid: pinned to the first cell they cannot open an implicit row. */
.woocommerce-checkout #payment li.payment_method_stripe_applepay div.payment_box,
.woocommerce-checkout #payment li.payment_method_stripe_googlepay div.payment_box {
	grid-area: 1 / 1;
	height: 0;
	min-height: 0;
	margin: 0;
	padding: 0;
	overflow: hidden;
	background: transparent;
}
/* WooCommerce gives every payment <li> a ::before/::after clearfix pair. The
   two wallet <li>s are display:contents, so THEIR pseudo-elements, and their
   radios, are grid items of this list rather than of the <li>. Six stray
   items were opening three empty rows, each costing a full 22px row-gap
   below the list. That was the dead space above the wallet and PayPal
   buttons. Placing them explicitly stops the implicit rows. */
.woocommerce-checkout #payment ul.payment_methods::before,
.woocommerce-checkout #payment ul.payment_methods::after,
.woocommerce-checkout #payment li.payment_method_stripe_applepay::before,
.woocommerce-checkout #payment li.payment_method_stripe_applepay::after,
.woocommerce-checkout #payment li.payment_method_stripe_googlepay::before,
.woocommerce-checkout #payment li.payment_method_stripe_googlepay::after { grid-area: 1 / 1; content: none; }
.woocommerce-checkout #payment li.payment_method_stripe_applepay > input[type="radio"],
.woocommerce-checkout #payment li.payment_method_stripe_googlepay > input[type="radio"] { grid-area: 1 / 1; }
.woocommerce-checkout #payment li.payment_method_stripe_applepay div.payment_box iframe,
.woocommerce-checkout #payment li.payment_method_stripe_googlepay div.payment_box iframe { width: 100% !important; max-width: 100%; }

/* PayPal (PPCP): the third pill, full width under the two wallet buttons.
   The grid places cards on row 1 and the wallet pills on row 2; an unplaced
   gateway would be auto-placed into a half-width cell, so PayPal is placed
   explicitly like the others. Same height and shape as the wallet pills, and
   the gateway description sits inline so selecting it never changes the
   height. NOTE: the PPCP merchant connection is domain-bound, so this gateway
   never renders on staging. Verify changes against live. */
.woocommerce-checkout #payment ul.payment_methods li.payment_method_ppcp-gateway {
	grid-column: 1 / -1;
	grid-row: 3;
	position: relative;
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 8px;
	height: 42px;
	box-sizing: border-box;
	margin: 0;
	padding: 0 14px;
	border: 1px solid var(--npp-line);
	border-radius: 999px;
	background: var(--npp-surface);
	overflow: hidden;
	transition: border-color .12s ease, background-color .12s ease, box-shadow .12s ease;
}
.woocommerce-checkout #payment li.payment_method_ppcp-gateway > input[type="radio"] {
	position: absolute;
	top: 0;
	left: 0;
	width: 1px;
	height: 1px;
	margin: -1px;
	opacity: 0;
	overflow: hidden;
}
.woocommerce-checkout #payment li.payment_method_ppcp-gateway > label {
	display: flex;
	align-items: center;
	min-height: 0;
	margin: 0;
}
.woocommerce-checkout #payment li.payment_method_ppcp-gateway div.payment_box {
	margin: 0;
	padding: 0;
	background: transparent;
	font: 400 0.75rem/1 var(--npp-font-sans);
	letter-spacing: 0;
	text-transform: none;
}
.woocommerce-checkout #payment li.payment_method_ppcp-gateway div.payment_box p {
	margin: 0;
	font: inherit;
	color: var(--npp-charcoal);
	opacity: .7;
}

/* Selected state. The card box is square, the three pills are round, so they
   take the ring differently but read the same. */
.woocommerce-checkout #payment li.payment_method_stripe_cc:has(> input:checked) {
	border-color: var(--npp-sage-hover);
	box-shadow: inset 0 0 0 1px var(--npp-sage-hover);
}
.woocommerce-checkout #payment li.payment_method_ppcp-gateway:has(> input:checked) {
	border-color: var(--npp-sage-hover);
	background: var(--npp-surface-soft);
	box-shadow: inset 0 0 0 1px var(--npp-sage-hover);
}

.woocommerce-checkout #payment .form-row.place-order { margin: 0; padding: 0; }
.woocommerce-checkout #payment .woocommerce-privacy-policy-text { display: none; }

/* PLACE ORDER — full-width sage pill, same as the cart CTA. */
.woocommerce-checkout #payment button#place_order {
	display: block; width: 100%; box-sizing: border-box; text-align: center;
	background: var(--npp-sage); color: #fff; border: 0; border-radius: 30px;
	/* The list's own 22px bottom margin does the separating now. */
	margin: 0; padding: 16px 18px; float: none;
	font-family: var(--npp-font-sans); font-size: 0.8125rem; font-weight: 700;
	text-transform: uppercase; letter-spacing: .08em;
	cursor: pointer; transition: background-color .12s ease;
}
.woocommerce-checkout #payment button#place_order:hover { background: var(--npp-sage-hover); color: #fff; }
.woocommerce-checkout #payment button#place_order:focus-visible { outline: 2px solid var(--npp-charcoal); outline-offset: 3px; }

/* Delivery guidance now sits under Place Order, matching the cart sidebar. */
.woocommerce-checkout .npp-checkout-notes {
	margin: 44px 0 0;
	padding: 26px 0 0;
	border-top: 1px solid var(--npp-line-soft);
	gap: 16px;
}
.woocommerce-checkout .npp-checkout-notes .npp-note-body a { color: var(--npp-sage-hover); text-decoration: underline; }
.woocommerce-checkout .npp-checkout-notes .npp-note-body a:hover { color: var(--npp-charcoal); }

/* Mailchimp opt-in — clearly optional and separated from the billing fields. */
.woocommerce-checkout .mailchimp-newsletter.form-row {
	float: none;
	width: 100%;
	margin: 20px 0 0;
	padding: 16px 0 0;
	border-top: 1px solid var(--npp-line-soft);
}
.woocommerce-checkout .mailchimp-newsletter .woocommerce-form__label {
	display: flex;
	align-items: flex-start;
	gap: 10px;
	margin: 0;
	font-family: var(--npp-font-sans);
	font-size: 0.875rem;
	font-weight: 400;
	line-height: 1.45;
}
.woocommerce-checkout .mailchimp-newsletter input[type="checkbox"] {
	flex: 0 0 auto;
	width: 17px;
	height: 17px;
	margin: 2px 0 0;
}

/* ---- Mobile ---- */
@media (max-width: 900px) {
	.woocommerce-checkout form.checkout.woocommerce-checkout { grid-template-columns: 1fr; }
	.woocommerce-checkout form.checkout .col2-set,
	.woocommerce-checkout form.checkout .gift-certificate { grid-column: 1; }
	.woocommerce-checkout form.checkout #order_review_heading { grid-column: 1; grid-row: auto; position: static; margin-top: 22px; }
	.woocommerce-checkout form.checkout #order_review { grid-column: 1; grid-row: auto; position: static; }
}
@media (max-width: 560px) {
	.woocommerce-checkout #billing_city_field,
	.woocommerce-checkout #billing_phone_field,
	.woocommerce-checkout #billing_email_field { grid-column: 1 / -1; }
	.woocommerce-checkout #billing_state_field { grid-column: 1 / span 6; }
	.woocommerce-checkout #billing_postcode_field { grid-column: 7 / span 6; }
	.woocommerce-checkout .woocommerce-error,
	.woocommerce-checkout .woocommerce-message,
	.woocommerce-checkout .woocommerce-info { padding: 14px 14px 14px 48px; font-size: 0.875rem; }
	.woocommerce-checkout .woocommerce-error::before,
	.woocommerce-checkout .woocommerce-message::before,
	.woocommerce-checkout .woocommerce-info::before { left: 13px; }
	.woocommerce-checkout form.checkout .gift-certificate.sc_info_box { padding: 20px 18px 22px !important; }
	.woocommerce-checkout .gift-certificate ul.single_multi_list { display: grid; gap: 7px; }
	.woocommerce-checkout #order_review table.shop_table th,
	.woocommerce-checkout #order_review table.shop_table td { padding: 10px 10px; }
}
/* NPP-CHECKOUT-CSS-END ==================================================== */
