/* Shared theme treatment for WooCommerce classic and block checkout.
 * Keep WooCommerce's fields, payment controls and responsive block layout intact. */
.zw-commerce :is(main, .zw-main) {
  background: linear-gradient(180deg, #f4f8f5 0, #f8fbfd 24rem, #fff 100%);
  padding-inline: clamp(1rem, 3vw, 2rem);
  padding-bottom: 2rem;
}
.zw-commerce :is(main, .zw-main) > .wp-block-group { max-width: 72rem; margin-inline: auto; }
.zw-commerce :is(main, .zw-main) .wp-block-post-title {
  font-size: clamp(2.25rem, 4vw, 3.25rem);
  line-height: 1.1;
  letter-spacing: -.035em;
  margin-bottom: 2rem;
  color: #071a0f;
}
.zw-commerce .woocommerce, .zw-commerce .wp-block-woocommerce-cart,
.zw-commerce .wp-block-woocommerce-checkout {
  color: #071a0f;
  font-family: var(--wp--preset--font-family--sans);
  font-size: 1rem;
  line-height: 1.6;
}
.zw-commerce .woocommerce :is(h2, h3),
.zw-commerce :is(.wp-block-woocommerce-cart, .wp-block-woocommerce-checkout) h2 {
  font-size: 1.375rem;
  line-height: 1.3;
  letter-spacing: -.02em;
  text-transform: none;
  color: #071a0f;
}
/* Classic cart: items and totals have distinct, aligned surfaces. */
.zw-commerce .woocommerce-cart-form,
.zw-commerce .cart_totals,
.zw-commerce #customer_details,
.zw-commerce #order_review,
.zw-commerce .woocommerce-order-details,
.zw-commerce .woocommerce-customer-details,
.zw-commerce .wp-block-woocommerce-cart,
.zw-commerce .wp-block-woocommerce-checkout {
  box-sizing: border-box;
  background: #fff;
  border: 1px solid #dce8de;
  border-radius: 1.5rem;
  padding: clamp(1.25rem, 3vw, 2rem);
  box-shadow: 0 12px 36px -24px rgb(30 53 116 / 20%);
}
.zw-commerce .woocommerce-cart-form { margin-bottom: 1.5rem; }
.zw-commerce .woocommerce .cart-collaterals .cart_totals { width: 100%; float: none; }
.zw-commerce .cart_totals h2 { margin-top: 0; }
.zw-commerce .woocommerce table.shop_table {
  border: 0; border-collapse: collapse; margin: 0 0 1rem;
  border-radius: 0; font-size: .9375rem;
}
.zw-commerce .woocommerce table.shop_table th { font-weight: 600; }
.zw-commerce .woocommerce table.shop_table :is(th, td) { padding: 1rem .6rem; border-color: #dce8de; }
.zw-commerce .woocommerce table.shop_table thead th { color: #59645d; font-size: .75rem; letter-spacing: .04em; text-transform: uppercase; }
.zw-commerce .woocommerce table.shop_table .product-name a { color: #071a0f; font-weight: 600; }
.zw-commerce .woocommerce table.shop_table .product-thumbnail img { width: 64px; border-radius: .6rem; }
.zw-commerce .woocommerce a.remove { display: inline-flex; align-items: center; justify-content: center; width: 36px; height: 36px; background: #f4f8f5; color: #59645d !important; font-weight: 400; }
.zw-commerce .woocommerce a.remove:hover { background: #fff0ef; color: #a82c25 !important; }
.zw-commerce .woocommerce .quantity .qty { width: 4rem; }
.zw-commerce .woocommerce .cart .actions { padding-top: 1.5rem; }
.zw-commerce .woocommerce .cart .coupon .input-text { width: 10rem; margin-right: .5rem; }
.zw-commerce .woocommerce .order-total { font-size: 1.125rem; color: #071a0f; }
.zw-commerce .woocommerce .wc-proceed-to-checkout { padding: 1rem 0 0; }
.zw-commerce .woocommerce .wc-proceed-to-checkout a { display: block; width: 100%; margin-bottom: 0; }
/* Forms: comfortable targets and visible keyboard/validation states. */
.zw-commerce .woocommerce form .form-row { padding: 0; margin: 0 0 1.125rem; }
.zw-commerce .woocommerce form .form-row label { font-size: .875rem; font-weight: 600; margin-bottom: .4rem; line-height: 1.6; }
.zw-commerce .woocommerce :is(input.input-text, textarea, select),
.zw-commerce .woocommerce .select2-container .select2-selection--single {
  box-sizing: border-box; min-height: 48px; padding: .75rem 1rem;
  border: 1px solid #ccd5e2; border-radius: .75rem;
  background: #fff; color: #071a0f; font: inherit; line-height: 1.5;
}
.zw-commerce .woocommerce textarea { min-height: 110px; resize: vertical; }
.zw-commerce .woocommerce .select2-container .select2-selection--single .select2-selection__rendered { padding: 0; line-height: 24px; color: #071a0f; }
.zw-commerce .woocommerce .select2-container .select2-selection--single .select2-selection__arrow { height: 46px; right: .5rem; }
.zw-commerce .woocommerce :is(input, textarea, select):focus-visible,
.zw-commerce :is(a, button):focus-visible { outline: 3px solid #8cc63e; outline-offset: 3px; }
.zw-commerce .woocommerce form .woocommerce-invalid :is(input.input-text, select, .select2-selection) { border-color: #b32d2e; }
.zw-commerce input:is([type=checkbox], [type=radio]) { accent-color: #16532f; }
.zw-commerce .woocommerce :is(a.button, button.button, input.button),
.zw-commerce .wc-block-components-button:not(.is-link) {
  box-sizing: border-box; min-height: 48px; padding: .875rem 1.5rem;
  border: 1px solid transparent; border-radius: 999px;
  background: #16532f; color: #fff;
  font-family: inherit; font-size: .9375rem; font-weight: 600;
  line-height: 1.4; text-align: center; text-decoration: none;
  box-shadow: none;
}
.zw-commerce .woocommerce :is(a.button, button.button, input.button):hover,
.zw-commerce .wc-block-components-button:not(.is-link):hover { background: #071a0f; color: #fff; }
.zw-commerce .woocommerce button.button:disabled { opacity: .5; cursor: not-allowed; }
.zw-commerce .woocommerce .coupon .button,
.zw-commerce .woocommerce button[name=update_cart] { color: #16532f; background: #f4f8f5; border-color: #dce8de; }
.zw-commerce .woocommerce #payment { background: #f4f9fc; border-radius: 1rem; }
.zw-commerce .woocommerce #payment ul.payment_methods { padding: 1.25rem; border-color: #dce8de; }
.zw-commerce .woocommerce #payment div.payment_box { background: #e8f2de; color: #071a0f; border-radius: .75rem; }
.zw-commerce .woocommerce #payment div.payment_box::before { border-bottom-color: #e8f2de; }
.zw-commerce .woocommerce #payment div.form-row { padding: 1.25rem; }
.zw-commerce .woocommerce #payment #place_order { width: 100%; margin-top: 1rem; }
.zw-commerce .woocommerce-privacy-policy-text { font-size: .8125rem; color: #59645d; }
.zw-commerce .woocommerce :is(.woocommerce-info, .woocommerce-message, .woocommerce-error) {
  background: #fff; color: #071a0f; border-radius: .75rem;
  box-shadow: 0 4px 20px -14px rgb(30 53 116 / 30%);
}
.zw-commerce .woocommerce :is(.woocommerce-info, .woocommerce-message) { border-top-color: #8cc63e; }
.zw-commerce .woocommerce :is(.woocommerce-info, .woocommerce-message)::before { color: #1f8a4c; }
.zw-commerce #customer_details .col-1,
.zw-commerce #customer_details .col-2 { float: none; width: 100%; }
.zw-commerce #customer_details h3:first-child { margin-top: 0; }
.zw-commerce #order_review_heading { margin: .5rem 0 0; }
.zw-commerce .woocommerce-checkout-review-order-table .product-name { width: 65%; }
.zw-commerce .woocommerce-order-overview { display: flex; flex-wrap: wrap; gap: 1.25rem; padding: 0; }
.zw-commerce .woocommerce ul.order_details li { float: none; margin: 0; padding-right: 1.25rem; }
/* Blocks retain WooCommerce's own responsive columns and payment UI. */
.zw-commerce .wp-block-woocommerce-checkout-order-summary-block,
.zw-commerce .wp-block-woocommerce-cart-order-summary-block { background: #f4f9fc; border-radius: 1rem; padding: 1rem; }
@media (min-width: 1000px) {
  .zw-commerce.woocommerce-cart .woocommerce:has(> .woocommerce-cart-form) { display: grid; grid-template-columns: minmax(0, 1fr) 23rem; gap: 1.5rem; align-items: start; }
  .zw-commerce.woocommerce-cart .woocommerce:has(> .woocommerce-cart-form)::before,
  .zw-commerce.woocommerce-cart .woocommerce:has(> .woocommerce-cart-form)::after { display: none; }
  .zw-commerce.woocommerce-cart .woocommerce > * { grid-column: 1 / -1; min-width: 0; }
  .zw-commerce.woocommerce-cart .woocommerce > .woocommerce-cart-form { grid-column: 1; }
  .zw-commerce.woocommerce-cart .woocommerce > .cart-collaterals { grid-column: 2; }
  .zw-commerce form.woocommerce-checkout { display: grid; grid-template-columns: minmax(0, 1fr) 25rem; gap: 1.25rem 2rem; align-items: start; }
  .zw-commerce form.woocommerce-checkout > * { grid-column: 1 / -1; min-width: 0; }
  .zw-commerce form.woocommerce-checkout > #customer_details { grid-column: 1; grid-row: 1 / 4; }
  .zw-commerce form.woocommerce-checkout > #order_review_heading { grid-column: 2; }
  .zw-commerce form.woocommerce-checkout > #order_review { grid-column: 2; }
}
@media (max-width: 999px) {
  .zw-commerce #order_review_heading { margin: 2rem 0 1rem; }
}
@media (max-width: 600px) {
  .zw-commerce :is(main, .zw-main) { padding-inline: 1rem; }
  .zw-commerce .woocommerce-cart-form,
  .zw-commerce .cart_totals,
  .zw-commerce #customer_details,
  .zw-commerce #order_review,
  .zw-commerce .wp-block-woocommerce-cart,
  .zw-commerce .wp-block-woocommerce-checkout { padding: 1rem; border-radius: 1rem; }
  .zw-commerce .woocommerce form .form-row-first,
  .zw-commerce .woocommerce form .form-row-last { float: none; width: 100%; }
  .zw-commerce .woocommerce table.shop_table :is(th, td) { padding: .875rem .25rem; }
  .zw-commerce .woocommerce table.shop_table_responsive tr:nth-child(2n) td { background: #f4f9fc; }
  .zw-commerce .woocommerce .cart .actions .coupon { display: flex; gap: .5rem; float: none; padding-bottom: .75rem; }
  .zw-commerce .woocommerce .cart .actions .coupon .input-text { width: 0; flex: 1; min-width: 0; margin: 0; }
  .zw-commerce .woocommerce .cart .actions .coupon .button { width: auto; flex: 1; padding-inline: .75rem; }
  .zw-commerce .woocommerce button[name=update_cart] { width: 100%; }
  .zw-commerce .woocommerce-order-overview { flex-direction: column; }
}

/* WooCommerce supplies its own page templates. Also cover saved templates
 * whose main block does not carry the theme's zw-main class. */
.zw-commerce .wp-site-blocks > .wp-block-woocommerce-page-content-wrapper { margin-block-start: 0; }
.zw-commerce :is(main, .zw-main) {
  box-sizing: border-box;
  width: 100%;
  max-width: none;
  margin: 0;
  padding-top: calc(var(--zw-header-h, 5.5rem) + 3rem);
  padding-bottom: clamp(3rem, 6vw, 5rem);
}
.zw-commerce :is(main, .zw-main) > :is(.wp-block-post-title, .wp-block-post-content, .woocommerce, .wp-block-woocommerce-store-notices, .wp-block-group) {
  box-sizing: border-box;
  width: 100%;
  max-width: 72rem;
  margin-inline: auto;
}
.zw-commerce :is(main, .zw-main) .wp-block-post-content > :is(.woocommerce, .wp-block-woocommerce-cart, .wp-block-woocommerce-checkout) {
  width: 100%;
  max-width: 72rem;
  margin-inline: auto;
}
.zw-commerce :is(main, .zw-main) > .wp-block-post-title { margin-top: 0; }
.zw-commerce :is(main, .zw-main) > .wp-block-post-content { margin-top: 2rem; }
.zw-commerce .woocommerce table.cart .product-name { min-width: 10rem; }
.zw-commerce .woocommerce table.cart :is(.product-price, .product-subtotal) { white-space: nowrap; }
.zw-commerce .woocommerce table.cart .product-thumbnail { width: 80px; }
.zw-commerce .woocommerce .select2-container .select2-selection--single { height: 48px; }
@media (max-width: 600px) {
  .zw-commerce :is(main, .zw-main) { padding-top: calc(var(--zw-header-h, 5.5rem) + 1.75rem); }
  .zw-commerce .woocommerce table.cart .product-name { min-width: 0; }
}

@media (max-width: 600px) {
 .zw-commerce .woocommerce-cart-form, .zw-commerce .cart_totals, .zw-commerce #customer_details, .zw-commerce #order_review, .zw-commerce .wp-block-woocommerce-cart, .zw-commerce .wp-block-woocommerce-checkout { padding: 1rem; border-radius: 1rem; }
 .zw-commerce .woocommerce table.shop_table :is(th,td) { overflow-wrap: anywhere; }
 .zw-commerce .woocommerce .cart .coupon .input-text { width: 100%; margin: 0 0 .5rem; }
 .zw-commerce .woocommerce .cart .coupon .button, .zw-commerce .woocommerce button[name=update_cart] { width: 100%; }
 .zw-commerce .woocommerce :is(input.input-text,textarea,select) { width: 100%; font-size: 16px; }
}
