/* Product → cart → checkout. Loaded on product, cart, checkout and account pages (inc/shop-flow.php). */

/* ---------- Product page: Buy now ---------- */
.single-product form.cart .ct-cart-actions { flex-wrap:wrap; row-gap:10px; }
.pss-buy-now { flex:1 0 100%; order:5; min-height:50px; padding:12px 22px; border:2px solid var(--pss-ink); border-radius:var(--pss-pill); background:transparent; color:var(--pss-ink); font:800 16px/1 var(--pss-body, inherit); cursor:pointer; transition:background .15s, color .15s; }
.pss-buy-now:hover { background:var(--pss-ink); color:#fffaf3; }
.pss-buy-now:focus-visible { outline:3px solid #e29368; outline-offset:3px; }
.pss-buy-now:disabled { opacity:.7; cursor:wait; }

/* ---------- Page frame for cart / checkout / account ---------- */
.pss-flow { padding:30px 0 40px; }
.pss-flow-head { display:flex; flex-wrap:wrap; align-items:flex-end; justify-content:space-between; gap:12px 24px; margin-bottom:26px; padding-bottom:18px; border-bottom:1px solid var(--pss-line); }
.pss-flow-head h1 { margin:0; font-size:clamp(34px,4vw,48px); line-height:1.05; letter-spacing:-.02em; }
.pss-flow-steps { display:flex; gap:6px; margin:0; padding:0; list-style:none; font-size:13px; font-weight:700; color:var(--pss-ink-soft); }
.pss-flow-steps li { display:flex; align-items:center; gap:6px; opacity:.6; }
.pss-flow-steps li + li::before { content:""; width:22px; height:1.5px; background:currentColor; opacity:.45; }
.pss-flow-steps li.is-done, .pss-flow-steps li.is-current { opacity:1; }
.pss-flow-steps li.is-current { color:var(--pss-blue); }
.pss-flow-body > .woocommerce { max-width:none; }
.pss-flow .woocommerce-notices-wrapper:empty { display:none; }

.pss-flow .woocommerce-cart-form, .pss-flow .cart_totals, .pss-flow .ct-customer-details .col-1, .pss-flow .ct-customer-details .col-2, .pss-flow .ct-order-review {
	padding:22px 24px; border:1px solid var(--pss-line); border-radius:var(--pss-radius) !important; background:var(--pss-card); box-shadow:var(--pss-shadow);
}

/* ---------- Cart ---------- */
.pss-flow .ct-woocommerce-cart-form { display:grid; grid-template-columns:minmax(0,1fr) 360px; gap:28px; align-items:start; }
.pss-flow .woocommerce-cart-form table.shop_table { margin:0; border:0; border-radius:0 !important; background:transparent; box-shadow:none; }
.pss-flow .woocommerce-cart-form thead { display:none; }
.pss-flow .woocommerce-cart-form tbody, .pss-flow .woocommerce-cart-form tr { display:block; }
.pss-flow .woocommerce-cart-form tr.cart_item { display:grid; grid-template-columns:96px minmax(0,1fr) auto 90px 32px; align-items:center; gap:18px; padding:16px 0; border-bottom:1px dashed var(--pss-line); }
.pss-flow .woocommerce-cart-form tr.cart_item:first-child { padding-top:0; }
.pss-flow .woocommerce-cart-form td { display:block; padding:0 !important; border:0 !important; background:none; text-align:left; }
.pss-flow .woocommerce-cart-form td::before { display:none !important; }
.pss-flow .woocommerce-cart-form .product-thumbnail a, .pss-flow .woocommerce-cart-form .product-thumbnail img { display:block; width:96px; height:96px; border-radius:14px; object-fit:cover; background:var(--pss-photo); }
.pss-flow .woocommerce-cart-form .product-name > a { display:block; color:var(--pss-ink); font-family:var(--pss-display); font-size:19px; line-height:1.25; text-decoration:none; }
.pss-flow .woocommerce-cart-form .product-name > a:hover { color:var(--pss-blue); }
.pss-flow .woocommerce-cart-form .product-name .price, .pss-flow .woocommerce-cart-form .product-name > .amount { color:var(--pss-ink-soft); font-size:14px; }
.pss-flow .woocommerce-cart-form .product-name dl.variation { margin:4px 0 0; font-size:13px; color:var(--pss-ink-soft); }
.pss-flow .woocommerce-cart-form .product-subtotal { font-weight:800; text-align:right; }
.pss-flow .woocommerce-cart-form .product-remove a { display:grid; place-items:center; width:32px; height:32px; border-radius:50%; color:var(--pss-ink-soft); }
.pss-flow .woocommerce-cart-form .product-remove a:hover { background:#f1e2cf; color:var(--pss-blue); }
.pss-flow .woocommerce-cart-form .quantity { border-radius:var(--pss-pill); }
.pss-flow .woocommerce-cart-form .quantity[data-type] { border:1.5px solid var(--pss-line); background:#fffaf3; }
.pss-flow .woocommerce-cart-form td.actions { padding-top:18px !important; }
.pss-flow .woocommerce-cart-form .coupon { display:flex; flex-wrap:wrap; gap:10px; max-width:420px; }
.pss-flow .woocommerce-cart-form .coupon input { flex:1; min-width:150px; min-height:44px; border-radius:var(--pss-pill) !important; }
.pss-flow .woocommerce-cart-form .coupon .button { min-height:44px; padding:0 18px !important; border:2px solid var(--pss-ink) !important; background:transparent !important; color:var(--pss-ink) !important; box-shadow:none !important; }

.pss-flow .cart-collaterals, .pss-flow .cart_totals { width:auto; margin:0; float:none; }
.pss-flow .cart_totals { position:sticky; top:24px; }
.pss-flow .cart_totals > h2 { margin:0 0 12px; font-size:24px; }
.pss-flow .cart_totals table.shop_table { margin:0; border:0; background:none; box-shadow:none; border-radius:0 !important; }
.pss-flow .cart_totals tr { display:flex; flex-wrap:wrap; justify-content:space-between; gap:4px 12px; padding:12px 0; border-bottom:1px dashed var(--pss-line); }
.pss-flow .cart_totals th, .pss-flow .cart_totals td { display:block; padding:0 !important; border:0 !important; background:none; font-weight:600; }
.pss-flow .cart_totals td::before { display:none !important; }
.pss-flow .cart_totals tr.shipping td, .pss-flow .cart_totals tr.woocommerce-shipping-totals td { flex:1 0 100%; font-weight:400; font-size:14px; }
.pss-flow .cart_totals #shipping_method { margin:0; padding:0; list-style:none; }
.pss-flow .cart_totals .woocommerce-shipping-destination { margin:6px 0 0; color:var(--pss-ink-soft); font-size:13px; }
.pss-flow .cart_totals .shipping-calculator-button { font-size:13px; }
.pss-flow .cart_totals tr.order-total { border-bottom:0; font-size:20px; }
.pss-flow .cart_totals tr.order-total td { font-weight:800; }
.pss-flow .wc-proceed-to-checkout { padding:8px 0 0; }
.pss-flow .wc-proceed-to-checkout .checkout-button { display:flex; justify-content:center; width:100%; min-height:54px; margin:0; font-size:17px; }
.pss-cart-trust { margin:14px 0 0; padding:0; list-style:none; color:var(--pss-ink-soft); font-size:13px; line-height:1.9; }
.pss-cart-trust li::before { content:"✓  "; color:var(--pss-blue); font-weight:800; }

/* ---------- Checkout ---------- */
.pss-flow form.ct-woocommerce-checkout { display:grid; grid-template-columns:minmax(0,1fr) 420px; gap:28px; align-items:start; }
.pss-flow .ct-customer-details { display:grid; gap:22px; }
.pss-flow .ct-customer-details .col2-set { display:grid; gap:22px; }
.pss-flow .ct-customer-details .col-1, .pss-flow .ct-customer-details .col-2 { float:none; width:auto; max-width:none; }
.pss-flow .ct-customer-details h3 { margin:0 0 14px; font-size:26px; }
.pss-flow .woocommerce-additional-fields:empty { display:none; }
.pss-flow .ct-order-review { position:sticky; top:24px; }
.pss-flow #order_review_heading { margin:0 0 10px; font-size:24px; }
.pss-flow #order_review { padding:0; border:0; background:none; box-shadow:none; border-radius:0 !important; }
.pss-flow .woocommerce-checkout-review-order-table { margin:0 0 16px; border:0; background:none; box-shadow:none; border-radius:0 !important; }
.pss-flow .woocommerce-checkout-review-order-table thead { display:none; }
.pss-flow .woocommerce-checkout-review-order-table th, .pss-flow .woocommerce-checkout-review-order-table td { padding:10px 0 !important; border:0 !important; border-bottom:1px dashed var(--pss-line) !important; background:none; }
.pss-flow .woocommerce-checkout-review-order-table td:last-child, .pss-flow .woocommerce-checkout-review-order-table th + td { text-align:right; }
.pss-flow .woocommerce-checkout-review-order-table tr.order-total th, .pss-flow .woocommerce-checkout-review-order-table tr.order-total td { border-bottom:0 !important; font-size:20px; font-weight:800; }
.pss-flow .woocommerce-checkout-review-order-table .psga-delivery-item { margin-top:4px; font-size:12px; }

/* Payment choices: a tidy list; only the chosen one opens. */
.pss-flow #payment { padding:0; border:0; background:none; border-radius:0 !important; }
.pss-flow #payment ul.payment_methods { margin:0 0 14px; padding:0; overflow:hidden; border:1.5px solid var(--pss-line); border-radius:14px; background:#fffaf3; list-style:none; }
.pss-flow #payment li.wc_payment_method { margin:0; padding:14px 16px; border:0; border-top:1px solid var(--pss-line); background:none; }
.pss-flow #payment li.wc_payment_method:first-child { border-top:0; }
.pss-flow #payment li.wc_payment_method:has(> input:checked) { background:#f6ebde; }
.pss-flow #payment li.wc_payment_method > input { margin:0 10px 0 0; vertical-align:middle; accent-color:var(--pss-blue); }
.pss-flow #payment li.wc_payment_method > label { display:inline; margin:0; font-weight:700; cursor:pointer; }
.pss-flow #payment li.wc_payment_method > label img { display:none; } /* Card logos and similar icons. */
.pss-flow #payment .payment_box { margin:12px 0 2px; padding:0; border:0; background:none; color:var(--pss-ink-soft); font-size:14px; }
.pss-flow #payment .payment_box::before { display:none; }
.pss-flow .pss-venmo-method [data-pss-venmo-slot] { max-width:100%; }

/* Payment layout (inc/payment-layout.php): PayPal first, card selected, grouped choices. */
/* PayPal's section: its button (and Venmo's, on phones) full width, one under the other. */
.pss-flow #payment .payment_box.payment_method_ppcp-gateway .ppc-button-wrapper,
.pss-flow #payment .payment_box.payment_method_ppcp-gateway #ppc-button-ppcp-gateway-v6 { display:grid !important; gap:10px; margin:0 !important; }
.pss-flow #payment paypal-button, .pss-flow #payment venmo-button { display:block; width:100%; height:48px !important; max-height:48px; min-width:0; }
body:not(.pss-pay-phone) venmo-button, body:not(.pss-pay-phone) .pss-mock-venmo { display:none !important; }
/* Apple Pay (WooPayments, iPhone/iPad Safari) beside PayPal's button. Its button is drawn outside the payment list and
   laid over the spot kept for it (payment-layout.js); elsewhere it stays out of sight (Stripe still needs it drawn). */
.pss-flow .pss-pay-step { position:relative; }
.pss-apple-pay { position:absolute; left:-10000px; top:0; width:200px; visibility:hidden; pointer-events:none; z-index:2; }
.pss-apple-pay.is-placed { visibility:visible; pointer-events:auto; }
.pss-apple-pay #wcpay-express-checkout-button-separator, .pss-apple-pay #wcpay-woopay-button { display:none !important; }
.pss-apple-pay .wcpay-express-checkout-wrapper { margin:0 !important; }
.pss-express-buttons [data-pss-apple-slot] { display:none; }
/* Phones ("Express checkout"): PayPal | Apple Pay | Venmo on one line, slimmer buttons. */
body.pss-express-row .pss-express-buttons { display:grid; grid-template-columns:repeat(var(--pss-express-n, 2), minmax(0, 1fr)); gap:8px; align-items:start; }
body.pss-express-row .pss-flow #payment .payment_box.payment_method_ppcp-gateway .pss-express-buttons [data-pss-paypal-button-slot],
body.pss-express-row .pss-flow #payment .payment_box.payment_method_ppcp-gateway .pss-express-buttons .ppc-button-wrapper,
body.pss-express-row .pss-flow #payment .payment_box.payment_method_ppcp-gateway .pss-express-buttons #ppc-button-ppcp-gateway-v6,
body.pss-express-row .pss-express-buttons .pss-mock-buttons { display:contents !important; }
body.pss-express-row .pss-express-buttons > *, body.pss-express-row .pss-express-buttons [data-pss-paypal-button-slot] > *,
body.pss-express-row .pss-express-buttons #ppc-button-ppcp-gateway-v6 > *, body.pss-express-row .pss-express-buttons .pss-mock-buttons > * { grid-column:1 / -1; }
body.pss-express-row .pss-flow #payment .pss-express-buttons paypal-button, body.pss-express-row .pss-express-buttons .pss-mock-paypal { grid-column:1; grid-row:1; }
body.pss-express-row.pss-apple-ready .pss-express-buttons [data-pss-apple-slot] { display:block; grid-column:2; grid-row:1; height:var(--pss-express-h, 40px); }
body.pss-express-row .pss-flow #payment .pss-express-buttons venmo-button, body.pss-express-row .pss-express-buttons .pss-mock-venmo { grid-column:-2 / -1; grid-row:1; }
body.pss-express-row .pss-flow #payment paypal-button, body.pss-express-row .pss-flow #payment venmo-button { height:var(--pss-express-h, 40px) !important; max-height:var(--pss-express-h, 40px); }
.pss-flow #payment li.pss-pay-group { margin:0; padding:12px 16px 4px; border-top:1px solid var(--pss-line); background:#fbf3e8; font-size:12px; font-weight:800; letter-spacing:.06em; text-transform:uppercase; color:var(--pss-ink-soft); list-style:none; }
.pss-flow #payment li.pss-pay-group:first-child, .pss-flow #payment li[style*="display: none"] + li.pss-pay-group { border-top:0; }
.pss-flow #payment li.pss-pay-group + li.wc_payment_method { border-top:0; }
.pss-flow #payment li.wc_payment_method[hidden] { display:none; }
.pss-flow #payment .place-order { margin:0; padding:0; border:0; }
.pss-flow #payment .woocommerce-privacy-policy-text p { margin:0 0 10px; font-size:12.5px; color:var(--pss-ink-soft); }
.pss-flow #payment .woocommerce-terms-and-conditions-wrapper .form-row { margin:0 0 14px; font-size:14px; }
.pss-flow #payment #place_order { width:100%; min-height:54px; font-size:17px; }

/* Email and text update choices under email/phone. */
/* Update choices sit right under their field (text under phone, email under email), no box around them. */
.pss-flow .pss-field-consent { margin:-4px 0 6px !important; }
.pss-flow .pss-save-shipping { margin:6px 0 14px !important; }
/* Billing: "Same as shipping" / "Use a different address", two buttons instead of an open form. */
.pss-billing-choice { display:grid; grid-template-columns:1fr 1fr; gap:8px; margin:0 0 4px; }
.pss-billing-choice label { display:flex; align-items:center; gap:8px; min-height:46px; margin:0; padding:10px 12px; border:1.5px solid var(--pss-line); border-radius:12px; background:#fffaf3; font-weight:700; cursor:pointer; }
.pss-billing-choice label:has(input:checked) { border-color:var(--pss-blue); background:#f6ebde; }
.pss-billing-choice input { margin:0; accent-color:var(--pss-blue); }
/* Discount code box under the order totals. */
.pss-coupon-entry { margin:14px 0 0; padding:14px 0 0; border-top:1px dashed var(--pss-line); }
.pss-coupon-entry label { display:block; margin:0 0 6px; font-size:14px; font-weight:700; }
.pss-coupon-row { display:flex; gap:8px; }
.pss-coupon-row input { flex:1; min-width:0; min-height:44px; padding:0 14px; border:1.5px solid #bda68c; border-radius:12px; background:#fff; text-transform:uppercase; }
.pss-coupon-row input::placeholder { text-transform:none; }
.pss-coupon-apply { min-height:44px; padding:0 18px; border:2px solid var(--pss-ink); border-radius:var(--pss-pill); background:transparent; color:var(--pss-ink); font:inherit; font-weight:800; cursor:pointer; }
.pss-coupon-apply:hover { background:var(--pss-ink); color:#fffaf3; }
.pss-coupon-apply:disabled { opacity:.6; cursor:wait; }
.pss-coupon-message:empty { display:none; }
.pss-coupon-message { margin:8px 0 0; font-size:13.5px; font-weight:700; }
.pss-coupon-message.is-ok { color:#2e6b34; }
.pss-coupon-message.is-error { color:#b3261e; }
.pss-billing-choice-error { margin:6px 0 0; color:#b3261e; font-size:14px; font-weight:700; }
.pss-flow .pss-billing-summary { margin:10px 0 0; padding:12px 14px; border-left:3px solid var(--pss-sage); border-radius:0 10px 10px 0; background:#eef0e3; }
.pss-flow .pss-billing-summary address { margin:0; font-style:normal; white-space:pre-line; line-height:1.5; }
.pss-billing-choice label:has(input:focus-visible) { outline:2px solid var(--pss-blue); outline-offset:2px; }
/* Text terms popup: tabs for the text terms, Terms and Privacy Policy. */
.pss-terms-tabs { width:min(620px, calc(100vw - 24px)); max-height:min(80vh, 720px); }
.pss-terms-tablist { display:flex; gap:6px; margin:0 0 14px; border-bottom:1px solid var(--pss-line); }
.pss-terms-tablist button { margin:0 0 -1px; padding:8px 12px; border:0; border-bottom:3px solid transparent; background:none; color:var(--pss-ink-soft); font:inherit; font-size:14px; font-weight:700; cursor:pointer; }
.pss-terms-tablist button[aria-selected="true"] { border-bottom-color:var(--pss-blue); color:var(--pss-ink); }
.pss-terms-panel { max-height:calc(min(80vh, 720px) - 150px); overflow:auto; }
.pss-terms-page { font-size:14px; line-height:1.6; color:var(--pss-ink-soft); }
.pss-terms-page h1, .pss-terms-page h2, .pss-terms-page h3 { margin:16px 0 6px; font-size:17px; color:var(--pss-ink); }
.pss-terms-page p, .pss-terms-page ul, .pss-terms-page ol { margin:0 0 10px; }
.pss-consent { margin:0 !important; padding:0 !important; }
.pss-consent > label { display:flex; align-items:flex-start; gap:10px; margin:0; font-weight:700; cursor:pointer; }
.pss-consent > label input { margin-top:3px; accent-color:var(--pss-blue); }
.pss-consent-small { margin:3px 0 0 26px; color:var(--pss-ink-soft); font-size:12.5px; line-height:1.45; }
.pss-consent-more { padding:0; border:0; background:none; color:var(--pss-blue); font:inherit; font-weight:700; text-decoration:underline; cursor:pointer; }
.pss-terms-dialog { width:min(460px, calc(100vw - 32px)); padding:24px; border:0; border-radius:20px; background:var(--pss-card); box-shadow:var(--pss-shadow-lift); color:var(--pss-ink); }
.pss-terms-dialog::backdrop { background:rgba(46,30,20,.5); }
.pss-terms-dialog h3 { margin:0 0 10px; font-size:22px; }
.pss-terms-dialog p { margin:0 0 18px; font-size:14.5px; line-height:1.6; color:var(--pss-ink-soft); }

/* ---------- Smaller screens ---------- */
@media (max-width:1000px) {
	.pss-flow .ct-woocommerce-cart-form, .pss-flow form.ct-woocommerce-checkout { grid-template-columns:minmax(0,1fr); }
	.pss-flow .cart_totals, .pss-flow .ct-order-review { position:static; }
}
@media (max-width:640px) {
	.pss-flow { padding-top:18px; }
	.pss-flow-head { margin-bottom:18px; }
	.pss-flow .woocommerce-cart-form, .pss-flow .cart_totals, .pss-flow .ct-customer-details .col-1, .pss-flow .ct-customer-details .col-2, .pss-flow .ct-order-review { padding:18px 16px; }
	.pss-flow .woocommerce-cart-form tr.cart_item { grid-template-columns:72px minmax(0,1fr) auto; gap:12px; }
	.pss-flow .woocommerce-cart-form .product-thumbnail a, .pss-flow .woocommerce-cart-form .product-thumbnail img { width:72px; height:72px; }
	.pss-flow .woocommerce-cart-form td.product-quantity, .pss-flow .woocommerce-cart-form td.product-remove { display:none; } /* Shown in the name cell on phones. */
}

/* Fine-tuning after the first look. */
.pss-flow .quantity[data-type] { --quantity-initial-color:var(--pss-line); --quantity-hover-color:var(--pss-blue); border-color:var(--pss-line); }
/* Shipping row: one cell holding "Shipment" and the method list; label left, method right. */
.pss-flow tr.woocommerce-shipping-totals td { text-align:left !important; }
.pss-flow tr.woocommerce-shipping-totals td::after { content:""; display:block; clear:both; }
.pss-flow tr.woocommerce-shipping-totals .ct-shipping-heading { float:left; width:auto !important; margin:0 !important; padding:0; font-weight:600; }
.pss-flow tr.woocommerce-shipping-totals #shipping_method { float:right; width:auto !important; max-width:62%; margin:0 !important; padding:0; list-style:none; text-align:right; }
.pss-flow tr.woocommerce-shipping-totals #shipping_method li { margin:0; padding:0; }
.pss-flow tr.woocommerce-shipping-totals .woocommerce-shipping-destination, .pss-flow tr.woocommerce-shipping-totals .shipping-calculator-button, .pss-flow tr.woocommerce-shipping-totals form { clear:both; }
.pss-flow .woocommerce-checkout-review-order-table #shipping_method { margin:0; padding:0; list-style:none; }
.pss-flow #payment li.wc_payment_method:has(> input:checked) .payment_box { border-top:0; }
.pss-flow .woocommerce-shipping-fields .description { margin-top:6px; color:var(--pss-ink-soft); font-size:12.5px; }

/* PayPal buttons belong in checkout only (see inc/shop-flow.php); hide any leftover product-page container. */
.single-product .ppc-button-wrapper, .single-product #ppc-button-ppcp-gateway-v6 { display:none !important; }

/* Low stock note under the price (the label itself is styled site-wide in cozy.css). */
.pss-stock-note { display:flex; align-items:center; gap:8px; margin:-4px 0 14px; font-size:13px; font-weight:700; color:#7a4b13; }
/* Phones: the parent theme pulls the payment box 26px past the card edges, which left the terms checkbox at the
   screen edge. Keep it inside the card. */
@media (max-width:720px) { .pss-flow #payment { margin-left:0 !important; margin-right:0 !important; width:auto !important; } }

/* "Buy now, pay later": one option in the list; picking it opens a branded button per provider (inc/payment-layout.php). */
.pss-flow #payment li.wc_payment_method.pss-later-group { margin:0; padding:0; border-top:1px solid var(--pss-line); list-style:none; }
.pss-later-pick { display:flex; align-items:center; gap:10px; width:100%; min-height:52px; padding:14px 16px; border:0; border-radius:0; background:none; color:var(--pss-ink); font:inherit; font-weight:700; text-align:left; cursor:pointer; }
.pss-later-pick:hover .pss-later-dot { border-color:var(--pss-blue); }
.pss-later-dot { flex:none; width:16px; height:16px; border:1.5px solid #a8927a; border-radius:50%; background:#fff; }
.pss-later-group.is-open .pss-later-dot { border:5px solid var(--pss-blue); }
.pss-later-title { flex:1 1 auto; font-size:15px; } /* Same size as the other options. */
.pss-later-preview { display:flex; gap:6px; align-items:center; }
.pss-later-mini img { display:block; height:14px; width:auto; }
.pss-later-group.is-open .pss-later-preview { display:none; }
.pss-flow #payment li.pss-later-group.is-open { background:#f6ebde; }
.pss-later-buttons { display:grid; grid-template-columns:repeat(3, minmax(0, 1fr)); gap:8px; padding:0 16px 14px; }
.pss-later-buttons[hidden] { display:none; }
.pss-later-button { display:grid; place-items:center; min-height:46px; padding:8px; border:1.5px solid #d9c7b1; border-radius:12px; background:#fff; color:var(--pss-ink); font:inherit; font-size:13px; font-weight:800; cursor:pointer; }
.pss-later-button img { display:block; max-width:100%; height:20px; width:auto; }
.pss-later-button:hover { border-color:#a8927a; }
.pss-later-button:focus-visible { outline:2px solid var(--pss-ink); outline-offset:2px; }
/* Each provider's selected look in its own brand color. */
.pss-later-button.is-on { border-width:2px; }
.pss-later-button.pss-later-woocommerce_payments_afterpay_clearpay.is-on { border-color:#00d64f; box-shadow:0 0 0 3px rgba(0,214,79,.18); }
.pss-later-button.pss-later-woocommerce_payments_affirm.is-on { border-color:#4a4af4; box-shadow:0 0 0 3px rgba(74,74,244,.16); }
.pss-later-button.pss-later-woocommerce_payments_klarna.is-on { border-color:#ff8fb8; box-shadow:0 0 0 3px rgba(255,143,184,.25); }
.pss-later-button.pss-later-paylater.is-on { border-color:#003087; box-shadow:0 0 0 3px rgba(0,48,135,.15); }
/* The providers' own rows: no radio or name (the buttons do that); only the chosen one's details show. */
.pss-flow #payment li.wc_payment_method.pss-later-row { padding:0 16px; border-top:0; background:#f6ebde !important; }
.pss-flow #payment li.wc_payment_method.pss-later-row > input, .pss-flow #payment li.wc_payment_method.pss-later-row > label { position:absolute !important; width:1px; height:1px; overflow:hidden; clip:rect(0 0 0 0); white-space:nowrap; }
.pss-flow #payment li.wc_payment_method.pss-later-row:not(:has(> input:checked)) { display:none; }
.pss-flow #payment li.wc_payment_method.pss-later-row:has(> input:checked) { padding-bottom:0; }
.pss-flow #payment li.wc_payment_method.pss-later-row .payment_box { margin-top:0; }

/* Save this address: same card as the email and text choices above it. */
.pss-save-shipping { margin-top:4px; }

/* Sales tax line before an address is entered. */
.pss-tax-pending { font-size:13px; color:var(--pss-ink-soft); }

/* ---------- Checkout page order (inc/payment-layout.php, Oct 8 2026) ----------
   Desktop: forms, then payment, on the left; the order summary sticky on the right.
   Phone: your items, the forms, the order summary (totals and tax), then payment. */
.pss-flow form.ct-woocommerce-checkout { grid-template-columns:minmax(0,1fr) 400px; }
.pss-flow form.ct-woocommerce-checkout > .ct-customer-details { grid-column:1; grid-row:1; }
.pss-flow form.ct-woocommerce-checkout > .pss-pay-step { grid-column:1; grid-row:2; }
.pss-flow form.ct-woocommerce-checkout > .ct-order-review { grid-column:2; grid-row:1 / span 2; align-self:start; }
.pss-flow .pss-order-top { display:none; }
.pss-flow .pss-pay-step, .pss-flow .pss-order-top { padding:22px 24px; border:1px solid var(--pss-line); border-radius:var(--pss-radius) !important; background:var(--pss-card); box-shadow:var(--pss-shadow); }
.pss-flow .pss-pay-step h3 { margin:0 0 14px; font-size:26px; }
.pss-flow .pss-pay-step #payment { margin:0; }

/* Your items (phones): a compact list. */
.pss-order-top-head { display:flex; align-items:baseline; justify-content:space-between; gap:12px; margin:0 0 12px; }
.pss-order-top-head h2 { margin:0; font-size:24px; }
.pss-order-top-head span { color:var(--pss-ink-soft); font-size:14px; font-weight:700; }
.pss-order-top-items { display:grid; gap:10px; margin:0; padding:0; list-style:none; }
.pss-order-top-items li { display:grid; grid-template-columns:44px minmax(0,1fr) auto auto; align-items:center; gap:10px; font-size:14px; }
.pss-order-top-img { width:44px; height:44px; border-radius:10px; object-fit:cover; background:var(--pss-photo); }
.pss-order-top-name { overflow:hidden; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; line-height:1.3; }
.pss-order-top-qty { color:var(--pss-ink-soft); font-size:13px; font-weight:700; white-space:nowrap; }
.pss-order-top-price { font-weight:800; white-space:nowrap; }
.pss-order-top-sub { display:flex; justify-content:space-between; margin:12px 0 0; padding-top:10px; border-top:1px dashed var(--pss-line); font-size:15px; }
.pss-order-top .psga-delivery-order { margin:10px 0 0; font-size:13px; }
.pss-order-top .psga-delivery-order small { display:block; margin-top:2px; color:var(--pss-ink-soft); font-size:12px; }
.pss-order-top-note { margin:8px 0 0; color:var(--pss-ink-soft); font-size:12.5px; }

/* Order summary items: shorter (smaller title), the delivery estimate once after the items. */
.pss-flow .woocommerce-checkout-review-order-table td.product-name { font-size:14px; line-height:1.35; }
.pss-flow .woocommerce-checkout-review-order-table td.product-total { font-size:14px; font-weight:700; white-space:nowrap; }
.pss-flow .woocommerce-checkout-review-order-table tr.psga-delivery-row td { text-align:left !important; }
.pss-flow .woocommerce-checkout-review-order-table .psga-delivery-order { margin:0; font-size:13px; }
.pss-flow .woocommerce-checkout-review-order-table .psga-delivery-order small { display:block; margin-top:2px; color:var(--pss-ink-soft); font-size:12px; }

/* Card form: use the full width (Stripe puts expiry and security code side by side when there's room). */
.pss-flow #payment .payment_box.payment_method_woocommerce_payments fieldset, .pss-flow #payment .wcpay-upe-element { margin:0 !important; padding:0 !important; }
.pss-flow #payment .woocommerce-SavedPaymentMethods-saveNew { margin:12px 0 0 !important; display:flex; align-items:center; gap:8px; }

@media (max-width:1000px) {
	.pss-flow form.ct-woocommerce-checkout { grid-template-columns:minmax(0,1fr); }
	.pss-flow .pss-order-top { display:block; margin:0 0 22px; }
	.pss-flow form.ct-woocommerce-checkout > .ct-customer-details,
	.pss-flow form.ct-woocommerce-checkout > .ct-order-review,
	.pss-flow form.ct-woocommerce-checkout > .pss-pay-step { grid-column:1; grid-row:auto; }
	/* At the end, before payment: the totals with tax; its items repeat in smaller writing. */
	.pss-flow .woocommerce-checkout-review-order-table td.product-name, .pss-flow .woocommerce-checkout-review-order-table td.product-total { font-size:13px; }
}
@media (max-width:640px) {
	.pss-flow .pss-pay-step, .pss-flow .pss-order-top { padding:18px 14px; }
	/* Phones: the section cards reach the screen edges (no side edge, then padding, then content), for more room. */
	.pss-flow .woocommerce-cart-form, .pss-flow .cart_totals, .pss-flow .ct-customer-details .col-1, .pss-flow .ct-customer-details .col-2,
	.pss-flow .ct-order-review, .pss-flow .pss-pay-step, .pss-flow .pss-order-top { margin-left:-14px !important; margin-right:-14px !important; border-left:0 !important; border-right:0 !important; border-radius:0 !important; }
	.pss-flow #payment li.wc_payment_method { padding:12px 12px; }
	.pss-flow #payment .payment_box { margin:10px 0 0; }
	.pss-later-buttons { padding:0 12px 12px; gap:6px; }
	.pss-later-pick { padding:12px; }
	.pss-flow #payment li.wc_payment_method:not(.pss-later-group):not(.pss-later-row) > label { padding:12px 14px !important; }
	.pss-flow #payment li.wc_payment_method:not(.pss-later-group):not(.pss-later-row) > input { left:14px !important; top:16px !important; }
	.pss-flow #payment li.wc_payment_method:not(.pss-later-group):not(.pss-later-row) > .payment_box { padding:0 14px 14px !important; }
	/* The update and save-address boxes too: full width of the section, so their text has more room. */
	/* The payment choices run edge to edge too (no inset box inside the section). */
	.pss-flow #payment ul.payment_methods { margin:0 -14px 14px; border-left:0; border-right:0; border-radius:0; }
	.pss-later-pick { padding:12px 14px; }
	.pss-later-buttons { padding:0 14px 14px; }
}

/* Option rows: one layer of spacing, like "Buy now, pay later" (the parent theme adds its own padding to the label and
   the open box on top of the row's, which pushed the text in and left a gap above PayPal's buttons). */
.pss-flow #payment li.wc_payment_method:not(.pss-later-group):not(.pss-later-row) { padding:0 !important; }
.pss-flow #payment li.wc_payment_method:not(.pss-later-group):not(.pss-later-row) > label { display:flex !important; align-items:center; padding:14px 16px !important; }
.pss-flow #payment li.wc_payment_method:not(.pss-later-group):not(.pss-later-row) > input { left:16px !important; top:18px !important; margin:0 !important; }
.pss-flow #payment li.wc_payment_method:not(.pss-later-group):not(.pss-later-row) > .payment_box { margin:0 !important; padding:0 16px 16px !important; }

/* Address fields: short ones side by side (names; city, state, ZIP; phone, email), so payment is reached sooner. */
@media (min-width:641px) {
	.pss-flow .woocommerce-shipping-fields__field-wrapper, .pss-flow .pss-separate-billing-address { display:grid; grid-template-columns:repeat(6, minmax(0, 1fr)); column-gap:14px; }
	.pss-flow .woocommerce-shipping-fields__field-wrapper > .form-row, .pss-flow .pss-separate-billing-address > .form-row { grid-column:span 6; float:none !important; width:auto !important; margin-left:0 !important; margin-right:0 !important; }
	.pss-flow #shipping_first_name_field, .pss-flow #shipping_last_name_field, .pss-flow #billing_first_name_field, .pss-flow #billing_last_name_field,
	.pss-flow #billing_phone_field, .pss-flow #billing_email_field { grid-column:span 3; }
	.pss-flow #shipping_city_field, .pss-flow #shipping_state_field, .pss-flow #shipping_postcode_field,
	.pss-flow #billing_city_field, .pss-flow #billing_state_field, .pss-flow #billing_postcode_field { grid-column:span 2; }
	/* Phone | email side by side, each with its update choice under it. */
	.pss-flow .woocommerce-shipping-fields__field-wrapper > .pss-field-consent { grid-column:span 3; }
	.pss-flow .woocommerce-shipping-fields__field-wrapper > #billing_phone_field { order:1; }
	.pss-flow .woocommerce-shipping-fields__field-wrapper > #billing_email_field { order:2; }
	.pss-flow .woocommerce-shipping-fields__field-wrapper > .pss-text-consent { order:3; }
	.pss-flow .woocommerce-shipping-fields__field-wrapper > .pss-email-consent { order:4; }
}
@media (max-width:640px) {
	/* Phones: names side by side, the rest one per line. */
	.pss-flow .woocommerce-shipping-fields__field-wrapper, .pss-flow .pss-separate-billing-address { display:grid; grid-template-columns:1fr 1fr; column-gap:10px; }
	.pss-flow .woocommerce-shipping-fields__field-wrapper > .form-row, .pss-flow .pss-separate-billing-address > .form-row { grid-column:span 2; float:none !important; width:auto !important; margin-left:0 !important; margin-right:0 !important; }
	.pss-flow #shipping_first_name_field, .pss-flow #shipping_last_name_field, .pss-flow #billing_first_name_field, .pss-flow #billing_last_name_field,
	.pss-flow #shipping_state_field, .pss-flow #shipping_postcode_field, .pss-flow #billing_state_field, .pss-flow #billing_postcode_field { grid-column:span 1; }
}

/* Address cards use the full column (Blocksy caps them narrower), so they line up with the payment card. */
.pss-flow form .ct-customer-details .col2-set > .col-1, .pss-flow form .ct-customer-details .col2-set > .col-2 { width:auto !important; max-width:none !important; }
/* Sales tax note on one line. */
.pss-flow .woocommerce-checkout-review-order-table tr.pss-tax-line td { white-space:nowrap; }

/* Checkout messages (errors, price changes) stay at the top, above both columns. */
.pss-flow form.ct-woocommerce-checkout > .woocommerce-NoticeGroup, .pss-flow form.ct-woocommerce-checkout > .woocommerce-error { grid-column:1 / -1; grid-row:1; }
.pss-flow form.ct-woocommerce-checkout:has(> .woocommerce-NoticeGroup, > .woocommerce-error) > .ct-customer-details { grid-row:2; }
.pss-flow form.ct-woocommerce-checkout:has(> .woocommerce-NoticeGroup, > .woocommerce-error) > .pss-pay-step { grid-row:3; }
.pss-flow form.ct-woocommerce-checkout:has(> .woocommerce-NoticeGroup, > .woocommerce-error) > .ct-order-review { grid-row:2 / span 2; }
@media (max-width:1000px) {
	.pss-flow form.ct-woocommerce-checkout:has(> .woocommerce-NoticeGroup, > .woocommerce-error) > * { grid-row:auto; }
}
/* The shipping form is always open (it is the only address form); WooCommerce would slide it open on every load. */
.pss-flow .woocommerce-shipping-fields .shipping_address { display:block !important; }

/* Store Controls > Preview all payment options: stand-ins styled like Stripe's card form will be (see the
   wcpay_elements_appearance settings in inc/payment-layout.php). */
.pss-preview-banner { margin:0 0 14px; padding:10px 12px; border-radius:12px; background:#fff3cd; color:#5c4400; font-size:13px; line-height:1.45; }
.pss-preview-chip { display:inline-block; margin-left:6px; padding:1px 7px; border-radius:6px; background:#e9e1d6; font-size:11px; font-weight:800; vertical-align:middle; }
.pss-mock-stripe { display:grid; grid-template-columns:1fr 1fr; gap:12px; }
.pss-mock-field { display:grid; gap:6px; margin:0; color:#3a2a20; font-size:14px; font-weight:700; }
.pss-mock-field.is-wide { grid-column:1 / -1; }
.pss-mock-input { display:block; padding:12px 14px; border:1.5px solid #bda68c; border-radius:12px; background:#fff; color:#8f8174; font-weight:400; }
.pss-mock-note { margin:0; font-size:14px; color:var(--pss-ink-soft); }
/* Preview stand-ins for PayPal's, Venmo's and Apple Pay's buttons. */
.pss-mock-buttons { display:grid; gap:10px; }
.pss-mock-buttons button, .pss-mock-applepay { display:flex; align-items:center; justify-content:center; gap:3px; width:100%; height:var(--pss-express-h, 40px); min-height:0; margin:0; padding:0 8px; border:0; border-radius:6px; font:700 17px/1 system-ui, -apple-system, "Segoe UI", sans-serif; cursor:pointer; }
.pss-mock-applepay svg { width:15px; height:18px; margin-top:-3px; }
.pss-mock-paypal { gap:0 !important; background:#ffc439 !important; color:#003087 !important; font-style:italic !important; }
.pss-mock-paypal b { color:#003087; font-weight:800; } .pss-mock-paypal i { color:#0070e0; font-weight:800; }
.pss-mock-venmo { background:#008cff !important; color:#fff !important; font-style:italic !important; letter-spacing:.02em; }
.pss-mock-applepay { height:40px; background:#000 !important; color:#fff !important; font-weight:600; font-size:18px; letter-spacing:-.01em; }
.payment_box:has(.pss-mock-paypal) [data-pss-paypal-status], [data-pss-paypal-button-slot]:has(.pss-mock-paypal) [data-pss-paypal-unavailable] { display:none !important; }

/* Klarna's logo file has extra space around it: show it a little larger so the three look balanced. */
.pss-later-button.pss-later-woocommerce_payments_klarna img { height:28px; }

/* Pay later: no provider text under the buttons (plans differ by provider; each one's own window shows them). The
   details stay on the page, only shrunk to nothing, because WooPayments needs them there to start the payment. */
.pss-flow #payment li.wc_payment_method.pss-later-row .payment_box { height:0 !important; min-height:0 !important; margin:0 !important; padding:0 !important; overflow:hidden !important; }

/* Tiny item pictures in the checkout order summary and on order pages. */
/* The picture floats left; the name, "× 1" and style sit beside it. */
.pss-line-with-thumb { display: inline; }
.pss-line-thumb { float: left; width: 40px !important; height: 40px !important; margin: 0 10px 2px 0; border-radius: 8px; object-fit: cover; background: var(--pss-photo, #f3ece2); }
td.product-name:has(.pss-line-thumb)::after { content: ""; display: block; clear: both; }
td.product-name:has(.pss-line-thumb) { min-height: 42px; }

/* "View cart" after adding to the cart: a clear outlined button, not a faint grey box. */
.single-product form.cart a.added_to_cart, .single-product .ct-cart-actions a.added_to_cart { display:inline-flex; align-items:center; justify-content:center; min-height:54px; padding:12px 22px; border:2px solid var(--pss-clay, #9e4f2e); border-radius:var(--pss-pill); background:#fffaf3; color:var(--pss-clay, #9e4f2e); font:800 16px/1 var(--pss-body, inherit); text-decoration:none; box-shadow:none; }
.single-product form.cart a.added_to_cart:hover, .single-product .ct-cart-actions a.added_to_cart:hover { background:var(--pss-clay, #9e4f2e); color:#fffaf3; }
.single-product form.cart a.added_to_cart:focus-visible { outline:3px solid #e29368; outline-offset:3px; }

/* Phones, Apple Pay + Google Pay (stacked by Stripe): PayPal over Venmo on the left, Apple Pay over Google Pay on the
   right, all four the same size. */
body.pss-express-row.pss-express-stack .pss-express-buttons { grid-template-columns:repeat(2, minmax(0, 1fr)); row-gap:var(--pss-express-gap, 8px); column-gap:8px; }
body.pss-express-row.pss-express-stack .pss-flow #payment .pss-express-buttons paypal-button, body.pss-express-row.pss-express-stack .pss-express-buttons .pss-mock-paypal { grid-column:1; grid-row:1; }
body.pss-express-row.pss-express-stack .pss-flow #payment .pss-express-buttons venmo-button, body.pss-express-row.pss-express-stack .pss-express-buttons .pss-mock-venmo { grid-column:1; grid-row:2; }
body.pss-express-row.pss-express-stack.pss-apple-ready .pss-express-buttons [data-pss-apple-slot] { grid-column:2; grid-row:1 / span 2; height:var(--pss-express-stack-h, 104px); }

/* Card: WooPayments' "+3" (card brands that don't fit) and its pop-up, which looked like a stray field. */
.pss-flow #payment .payment-methods--logos-count, .pss-flow #payment .payment-methods--logos-popover, .pss-flow #payment .logo-popover { display:none !important; }
