/* ==========================================================================
   WordPress + WooCommerce pages (cart, checkout, account, order received)
   Uses the tokens from main.css.
   ========================================================================== */

/* The fixed order bar only exists on the order page. */
body:not(.va-order-page){padding-bottom:0}

/* Admin bar: keep the sticky order panel clear of it. */
.admin-bar .summary{top:56px}
@media (max-width:1023px){.admin-bar .summary{top:auto}}

/* ---------- Page shell ---------- */
.va-page .wrap{padding-block:28px 56px;max-width:1100px}
.va-page__head{display:grid;gap:10px;margin-bottom:24px}
.va-page__head h1{margin:0;font-weight:900;font-size:clamp(2.25rem,9vw,4.5rem);line-height:.9;letter-spacing:-.02em;text-transform:uppercase;font-variation-settings:"wdth" 108}
.va-back{color:var(--dust);text-decoration:none;justify-self:start;padding:8px 0}
.va-back:hover{color:var(--signal)}
.va-page__body{min-width:0}
.va-page__body a{color:var(--signal)}
.va-page__body p{max-width:65ch}

/* ---------- Shared WooCommerce (classic + blocks) ---------- */
.va-page__body,
.va-page__body .wc-block-components-main,
.va-page__body .wc-block-components-sidebar{color:var(--bone)}

.va-page__body input[type="text"],
.va-page__body input[type="email"],
.va-page__body input[type="tel"],
.va-page__body input[type="password"],
.va-page__body input[type="number"],
.va-page__body select,
.va-page__body textarea,
.va-page__body .wc-block-components-text-input input,
.va-page__body .wc-block-components-textarea,
.va-page__body .wc-blocks-components-select__select,
.va-page__body .wc-block-components-combobox .wc-block-components-combobox-control input{
  background:var(--plate)!important;color:var(--bone)!important;border:1px solid var(--rule)!important;border-radius:0!important;
  font:500 1rem/1.4 var(--f-display);min-height:var(--tap)
}
.va-page__body input:focus,.va-page__body select:focus,.va-page__body textarea:focus{outline:none;border-color:var(--signal)!important;box-shadow:none!important}
.va-page__body label,
.va-page__body .wc-block-components-text-input label,
.va-page__body .wc-blocks-components-select__label{color:var(--dust)!important}

.va-page__body .button,
.va-page__body button.button,
.va-page__body .wc-block-components-button:not(.is-link),
.va-page__body .wc-block-cart__submit-button,
.va-page__body .wc-block-components-checkout-place-order-button{
  background:var(--signal)!important;color:var(--signal-ink)!important;border:0!important;border-radius:0!important;
  font:900 1rem/1 var(--f-display)!important;letter-spacing:.06em;text-transform:uppercase;min-height:56px;padding:0 24px!important
}
.va-page__body .button:hover,.va-page__body .wc-block-components-button:not(.is-link):hover{filter:brightness(1.07)}

.va-page__body table,
.va-page__body .wc-block-cart-items,
.va-page__body .wc-block-components-totals-wrapper,
.va-page__body .wc-block-components-order-summary-item{border-color:var(--rule)!important}
.va-page__body .wc-block-components-totals-footer-item .wc-block-components-totals-item__value,
.va-page__body .wc-block-components-totals-footer-item .wc-block-components-totals-item__label{font-weight:900;font-size:1.25rem}
.va-page__body .wc-block-components-panel,
.va-page__body .wc-block-components-checkout-step,
.va-page__body .wc-block-components-sidebar-layout .wc-block-components-sidebar{border-color:var(--rule)!important}
.va-page__body .wc-block-components-radio-control__option,
.va-page__body .wc-block-components-radio-control-accordion-option{border-color:var(--rule)!important;box-shadow:none!important}
.va-page__body .wc-block-components-notice-banner{background:var(--plate)!important;color:var(--bone)!important;border-color:var(--signal)!important}
.va-page__body .woocommerce-message,
.va-page__body .woocommerce-info,
.va-page__body .woocommerce-error{background:var(--plate);color:var(--bone);border-top-color:var(--signal)}
.va-page__body .wc-block-components-product-name{color:var(--bone)!important;font-weight:750}
.va-page__body img.wc-block-components-product-image,
.va-page__body .wc-block-components-order-summary-item__image{display:none}

/* ---------- Address suggestions (checkout) ---------- */
.va-addr{line-height:1.35;font-size:1rem;text-align:left;position:absolute;left:0;right:0;top:100%;z-index:50;margin:4px 0 0;padding:0;list-style:none;background:var(--plate);border:1px solid var(--signal);box-shadow:0 12px 32px rgba(0,0,0,.5);max-height:min(60vh,320px);overflow-y:auto;overflow-x:hidden}
.va-addr li{display:grid;grid-template-columns:minmax(0,1fr);gap:2px;padding:12px 14px;min-height:var(--tap);cursor:pointer;border-bottom:1px solid var(--rule)}
.va-addr li:last-child{border-bottom:0}
.va-addr li[aria-selected="true"],.va-addr li:hover{background:var(--plate-2)}
.va-addr__main{display:block;line-height:1.3;font-weight:750;color:var(--bone);overflow-wrap:anywhere}
.va-addr__sub{display:block;line-height:1.5;font-family:var(--f-mono);font-size:var(--t-xs);letter-spacing:.04em;color:var(--dust);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

/* ---------- Checkout order summary ---------- */
/* On phones and tablets WooCommerce shows the summary twice: the dropdown at the
   top and a second full copy above "Place order". Keep the dropdown only. */
.va-page__body .checkout-order-summary-block-fill-wrapper{display:none!important}
/* The research-use line is already in the site notice; don't repeat it under every item. */
.va-page__body .wc-block-components-product-metadata__description{display:none!important}

/* ==========================================================================
   Classic checkout (Square plugin needs it). Styling only: field names,
   #payment and the Place Order button are untouched so payments still work.
   ========================================================================== */
.va-page__body form.checkout{margin:0}
.va-page__body form.checkout::before,.va-page__body form.checkout::after{display:none}
.va-page__body #customer_details .col-1,
.va-page__body #customer_details .col-2{float:none!important;width:100%!important;max-width:none}
.va-page__body #customer_details::before,.va-page__body #customer_details::after{display:none}

/* Section headings: numbered like the order form */
.va-page__body .woocommerce-billing-fields > h3{margin:0 0 18px;font-weight:900;font-size:var(--t-xl);line-height:1;text-transform:uppercase;letter-spacing:-.01em;font-variation-settings:"wdth" 108}
.va-page__body .woocommerce-billing-fields > h3::before{content:"01 / Contact & delivery";display:block;margin-bottom:8px;font:400 var(--t-xs)/1 var(--f-mono);letter-spacing:.08em;color:var(--brass)}

/* Fields */
.va-page__body .woocommerce-billing-fields__field-wrapper,
.va-page__body .woocommerce-shipping-fields__field-wrapper{display:grid;grid-template-columns:1fr 1fr;gap:14px 12px}
.va-page__body form.checkout .form-row{float:none!important;width:auto!important;margin:0!important;padding:0!important;grid-column:1 / -1;display:grid;gap:6px}
.va-page__body form.checkout .form-row-first{grid-column:1}
.va-page__body form.checkout .form-row-last{grid-column:2}
.va-page__body form.checkout .form-row::before,.va-page__body form.checkout .form-row::after{display:none}
.va-page__body form.checkout .form-row label{margin:0;font:400 var(--t-xs)/1.3 var(--f-mono)!important;letter-spacing:.08em;text-transform:uppercase;color:var(--dust)!important}
.va-page__body form.checkout .form-row label .required{color:var(--signal);text-decoration:none;border:0}
.va-page__body form.checkout .form-row label .optional{text-transform:none;letter-spacing:0}
.va-page__body form.checkout .form-row .woocommerce-input-wrapper{display:block;position:relative}
.va-page__body form.checkout .form-row input.input-text{width:100%;padding:12px 14px}
.va-page__body form.checkout .form-row input::placeholder{color:#6f675a;opacity:1}
.va-page__body form.checkout .woocommerce-invalid input.input-text,
.va-page__body form.checkout .woocommerce-invalid .select2-selection{border-color:var(--signal)!important}
.va-page__body form.checkout .woocommerce-validated input.input-text{border-color:var(--rule)}
/* Browser autofill stays dark */
.va-page__body input:-webkit-autofill,
.va-page__body input:-webkit-autofill:hover,
.va-page__body input:-webkit-autofill:focus{-webkit-text-fill-color:var(--bone);-webkit-box-shadow:0 0 0 1000px var(--plate) inset;caret-color:var(--bone);transition:background-color 9999s}
/* Only shipping to Canada: the country row is just a label, so hide it */
.va-page__body form.checkout #billing_country_field:has(input[type="hidden"]),
.va-page__body form.checkout #shipping_country_field:has(input[type="hidden"]),
.va-page__body form.checkout #billing_country_field:has(.country_to_state--single),
.va-page__body form.checkout #shipping_country_field:has(.country_to_state--single){display:none!important}
/* Apartment line: no label, just the placeholder */
.va-page__body form.checkout #billing_address_2_field label,
.va-page__body form.checkout #shipping_address_2_field label{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}

/* Province dropdown (selectWoo) */
.va-page__body .select2-container{width:100%!important}
.va-page__body .select2-container .select2-selection--single{height:var(--tap);background:var(--plate)!important;border:1px solid var(--rule)!important;border-radius:0!important;display:flex;align-items:center}
.va-page__body .select2-container .select2-selection--single .select2-selection__rendered{color:var(--bone)!important;line-height:1.4!important;padding:0 40px 0 14px!important;font:500 1rem/1.4 var(--f-display)}
.va-page__body .select2-container .select2-selection--single .select2-selection__arrow{height:100%!important;top:0!important;right:10px!important}
.va-page__body .select2-container .select2-selection--single .select2-selection__arrow b{border-color:var(--dust) transparent transparent!important}
.va-page__body .select2-container--open .select2-selection--single,
.va-page__body .select2-container--focus .select2-selection--single{border-color:var(--signal)!important}
body:not(.va-order-page) .select2-dropdown{background:var(--plate)!important;border:1px solid var(--signal)!important;border-radius:0!important;color:var(--bone)!important}
body:not(.va-order-page) .select2-search--dropdown .select2-search__field{background:var(--ink)!important;color:var(--bone)!important;border:1px solid var(--rule)!important;border-radius:0!important;min-height:40px;font-size:1rem}
body:not(.va-order-page) .select2-results__option{padding:10px 14px!important;color:var(--bone)}
body:not(.va-order-page) .select2-results__option--highlighted,
body:not(.va-order-page) .select2-results__option[aria-selected="true"]{background:var(--plate-2)!important;color:var(--bone)!important}
.va-page__body select{color-scheme:dark}

/* Ship to a different address */
.va-page__body .woocommerce-shipping-fields{margin-top:20px}
.va-page__body #ship-to-different-address{margin:0 0 14px;font:600 var(--t-sm)/1.3 var(--f-display);text-transform:none;letter-spacing:0}
.va-page__body #ship-to-different-address label{display:inline-flex;align-items:center;gap:10px;cursor:pointer;min-height:var(--tap);color:var(--bone)}
.va-page__body form.checkout input[type="checkbox"]{width:20px;height:20px;margin:0;accent-color:var(--signal)}

/* Order panel: styled like the "Your Order" manifest (heading is printed inside #order_review by the theme) */
.va-page__body #order_review_heading{display:none!important}
.va-page__body .va-mani-head{display:grid;grid-template-columns:1fr auto;align-items:end;gap:8px 12px;margin:0;padding:14px 16px 12px;background:var(--signal);color:var(--signal-ink)}
.va-page__body .va-mani-head h3{margin:0;font-weight:900;font-size:2rem;line-height:.85;letter-spacing:-.02em;text-transform:uppercase;font-variation-settings:"wdth" 112}
.va-page__body .va-mani-head span{font:400 var(--t-xs)/1.3 var(--f-mono);letter-spacing:.08em;text-transform:uppercase;text-align:right}
.va-page__body .va-mani-stripes{height:10px;background:repeating-linear-gradient(90deg,var(--signal) 0 3px,transparent 3px 6px);opacity:.85}
.va-page__body #order_review{margin-top:32px;background:var(--plate);border:1px solid var(--rule)}
.va-page__body #order_review table.shop_table{margin:0!important;border:0!important;border-radius:0!important;width:100%;border-collapse:collapse}
.va-page__body #order_review table.shop_table th,
.va-page__body #order_review table.shop_table td{padding:12px 16px!important;border:0!important;border-bottom:1px solid var(--rule)!important;background:transparent!important;vertical-align:middle}
.va-page__body #order_review table.shop_table thead th{padding-block:10px!important;font:400 var(--t-xs)/1 var(--f-mono)!important;letter-spacing:.08em;text-transform:uppercase;color:var(--dust)}
.va-page__body #order_review table.shop_table thead th:last-child,
.va-page__body #order_review table.shop_table td:last-child{text-align:right}
.va-page__body #order_review .cart_item .product-name{font-weight:750;font-size:var(--t-sm);line-height:1.25}
.va-page__body #order_review .va-qty{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:10px;font-weight:400}
.va-page__body #order_review .va-qty .mono{font:400 var(--t-xs)/1 var(--f-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--dust)}
.va-page__body #order_review .va-qty .stepper button{height:36px;width:34px}
.va-page__body #order_review .va-qty .stepper button:disabled{opacity:.35;cursor:default}
.va-page__body #order_review .va-qty .stepper output{min-width:28px;font-size:var(--t-md);color:var(--bone)}
.va-page__body #order_review .va-qty.is-busy{opacity:.6;pointer-events:none}
.va-page__body #order_review .cart_item .product-quantity{font-family:var(--f-mono);font-weight:400;color:var(--signal);margin-left:4px}
.va-page__body #order_review .amount{font-family:var(--f-mono);font-variant-numeric:tabular-nums;font-weight:500}
.va-page__body #order_review tfoot th{font:400 var(--t-xs)/1.3 var(--f-mono)!important;letter-spacing:.08em;text-transform:uppercase;color:var(--dust);text-align:left}
.va-page__body #order_review tfoot td{font-size:var(--t-sm)}
.va-page__body #order_review #shipping_method{list-style:none;margin:0;padding:0}
.va-page__body #order_review #shipping_method li{margin:0;font-family:var(--f-mono);font-size:var(--t-sm);color:var(--bone)}
.va-page__body #order_review tr.order-total th,
.va-page__body #order_review tr.order-total td{border-top:1.5px solid var(--bone)!important;border-bottom:0!important;padding-block:16px!important;vertical-align:bottom}
.va-page__body #order_review tr.order-total .amount{font-family:var(--f-display);font-weight:900;font-size:2.5rem;line-height:.85;letter-spacing:-.03em;font-variation-settings:"wdth" 108}

/* Payment inside the panel */
.va-page__body #payment{background:transparent!important;border:0!important;border-top:1px solid var(--rule)!important;border-radius:0!important;color:var(--bone)}
.va-page__body #payment ul.payment_methods{border:0!important;border-bottom:1px solid var(--rule)!important;padding:14px 16px!important;margin:0}
.va-page__body #payment ul.payment_methods li{display:flex;flex-wrap:wrap;align-items:center;gap:8px;line-height:1.4;margin:0}
.va-page__body #payment ul.payment_methods li > input[type="radio"]{accent-color:var(--signal);margin:0}
.va-page__body #payment ul.payment_methods li > label{display:flex;flex-wrap:wrap;align-items:center;gap:8px;color:var(--bone);font-weight:750;margin:0}
.va-page__body #payment ul.payment_methods li img{float:none!important;height:20px!important;width:auto!important;max-height:20px!important;margin:0!important;border-radius:3px;vertical-align:middle}
.va-page__body #payment div.payment_box{flex-basis:100%;background:transparent!important;color:var(--dust)!important;border-radius:0!important;margin:2px 0 0!important;padding:0!important;font-size:var(--t-sm)}
.va-page__body #payment div.payment_box::before{display:none!important}
.va-page__body #payment div.payment_box p{margin:0;color:var(--dust)}
.va-page__body #payment .place-order{padding:16px!important;margin:0!important;display:grid;gap:12px}
.va-page__body .woocommerce-privacy-policy-text p{margin:0;color:var(--dust);font-size:var(--t-xs);line-height:1.5}
.va-page__body #payment #place_order{float:none!important;width:100%!important;min-height:60px;font-size:var(--t-md)!important}
.va-page__body .va-pay-note{margin:0;display:flex;align-items:center;justify-content:center;gap:8px;font:400 var(--t-xs)/1.3 var(--f-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--dust);text-align:center}
.va-page__body .va-pay-note::before{content:"";width:8px;height:8px;border-radius:50%;background:#4caf50;box-shadow:0 0 0 3px rgba(76,175,80,.18)}
.va-page__body #order_review .blockUI.blockOverlay{background:var(--ink)!important;opacity:.6!important}

/* Error notices at the top of the form */
.va-page__body .woocommerce-NoticeGroup{grid-column:1 / -1;margin-bottom:20px}
.va-page__body .woocommerce-error{margin:0!important;padding:14px 16px 14px 44px!important;border:1px solid var(--signal)!important;border-left-width:4px!important;list-style:none}
.va-page__body .woocommerce-error::before{color:var(--signal)!important;top:14px!important;left:16px!important}
.va-page__body .woocommerce-error li{margin:0;font-size:var(--t-sm)}

/* Desktop: details on the left, sticky order panel on the right */
@media (min-width:960px){
  .va-page__body form.checkout{display:grid;grid-template-columns:minmax(0,1fr) minmax(360px,420px);column-gap:56px;align-items:start}
  .va-page__body form.checkout > *{grid-column:1}
  .va-page__body form.checkout > #customer_details{grid-row:2}
  .va-page__body form.checkout > #order_review{grid-column:2;grid-row:2;margin-top:0;position:sticky;top:24px}
  .admin-bar .va-page__body form.checkout > #order_review{top:56px}
}
@media (max-width:420px){
  .va-page__body .woocommerce-billing-fields__field-wrapper,
  .va-page__body .woocommerce-shipping-fields__field-wrapper{gap:14px 10px}
}

/* Field order + widths by id: WooCommerce's address script re-sorts rows and
   resets their classes after load, so pin the layout here. */
.va-page__body #billing_email_field{order:1;grid-column:1 / -1}
.va-page__body #billing_phone_field{order:2;grid-column:1 / -1}
.va-page__body #billing_first_name_field,.va-page__body #shipping_first_name_field{order:3;grid-column:1}
.va-page__body #billing_last_name_field,.va-page__body #shipping_last_name_field{order:4;grid-column:2}
.va-page__body #billing_country_field,.va-page__body #shipping_country_field{order:5;grid-column:1 / -1}
.va-page__body #billing_address_1_field,.va-page__body #shipping_address_1_field{order:6;grid-column:1 / -1}
.va-page__body #billing_address_2_field,.va-page__body #shipping_address_2_field{order:7;grid-column:1 / -1}
.va-page__body #billing_city_field,.va-page__body #shipping_city_field{order:8;grid-column:1 / -1}
.va-page__body #billing_state_field,.va-page__body #shipping_state_field{order:9;grid-column:1}
.va-page__body #billing_postcode_field,.va-page__body #shipping_postcode_field{order:10;grid-column:2}

/* Postal code filled from address suggestions: quiet reminder to check it */
.va-page__body .va-pc-note{font:400 var(--t-xs)/1.3 var(--f-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--brass)}

/* Cart-reminder consent line under the checkout email field (Cart Abandonment Recovery plugin) */
.va-page__body #wcf_cf_gdpr_message_block{display:block;margin-top:6px;font:400 var(--t-xs)/1.5 var(--f-mono);letter-spacing:.04em;color:var(--dust)}
.va-page__body #wcf_ca_gdpr_no_thanks{color:var(--dust);text-decoration:underline;margin-left:4px}
.va-page__body #wcf_ca_gdpr_no_thanks:hover{color:var(--signal)}
