/* ci-shop single product — narrower centred card per the old design (~960px) */

body.ci-shop.single-product .shop-card { max-width: 980px; margin: 0 auto; }

.shop-single-product__header { display: flex; justify-content: space-between; align-items: flex-start; gap: 1rem; }
body.ci-shop .shop-single-product__header .product_title { margin: 0; font-size: 2.25rem; font-weight: 700; line-height: 1.2; }
.shop-single-product__currency { flex: 0 0 auto; }
.shop-single-product__columns { display: grid; grid-template-columns: 1fr 1fr; gap: 2.5rem; margin-top: 1.5rem; }
/* Kill the title -> price dead gap. p.price carries the UA <p> 1em top margin
   (~26px at 1.6rem); the grid item establishes a BFC so that margin can't collapse
   away and instead pushes the price down from the top of the column. Reset it — the
   columns margin-top alone then reproduces the old tight title/price spacing. */
.shop-single-product__price { margin: 0; }
.shop-single-product__price .ci-price,
.shop-single-product__price .price { font-size: 1.6rem; font-weight: 700; line-height: 1.3; margin: 0; }
/* woocommerce_before_single_product prints an (empty) notices wrapper above the
   card — keep it (holds add-to-cart / error notices) but neutralise any stray margin. */
body.ci-shop .woocommerce-notices-wrapper:empty { margin: 0; }
/* WooCommerce core paints p.price green via `.woocommerce:where(...) div.product
   p.price` (0,3,2 — :where adds none). Beat it at 0,4,1 for near-black prices. */
body.ci-shop .shop-single-product .shop-single-product__price .price,
body.ci-shop .shop-single-product .shop-single-product__price .ci-price { color: var(--shop-text); }
body.ci-shop .shop-single-product .woocommerce-variation-price .price { color: var(--shop-text); }
.shop-single-product__excerpt { margin: 1rem 0 1.5rem; }
.shop-single-product__gst-note { color: var(--hcl-neutral-11, #646464); font-size: 0.85rem; }
/* GST note is a direct grid child: desktop under the left column, mobile last */
.shop-single-product__gst-note--footer { grid-column: 1; margin: 0; }
.shop-single-product__bulk-heading { margin-top: 0; }

/* Old design: SIMPLE products stack the stepper ABOVE Buy Now; VARIABLE products
   run stepper + Buy Now INLINE below the Plan dropdown (verified against
   vp-old-sharptask/-maxxlink references — they genuinely differ). */
body.ci-shop form.cart { display: flex; flex-direction: column; align-items: flex-start; gap: 0.9rem; margin-top: 1.25rem; }
body.ci-shop form.cart .single_add_to_cart_button { background: var(--shop-accent); color: #fff; min-width: 10rem; text-align: center; }
/* Variable products: Plan label stacked above the select (old design), then an
   inline qty + Buy Now row */
body.ci-shop form.cart.variations_form { display: block; }
body.ci-shop form.cart table.variations { border: 0; margin: 0 0 1rem; width: 100%; }
body.ci-shop form.cart table.variations th,
body.ci-shop form.cart table.variations td { display: block; width: 100%; padding: 0; border: 0; text-align: left; }
body.ci-shop form.cart table.variations th.label { padding-bottom: 0.3rem; font-weight: 500; }
body.ci-shop form.cart table.variations label::after { content: ':'; }
body.ci-shop .woocommerce-variation-price { margin: 0.5rem 0; font-weight: 700; }
body.ci-shop form.cart .woocommerce-variation-add-to-cart { display: flex; flex-direction: row; align-items: center; gap: 0.9rem; }
body.ci-shop form.cart .reset_variations { font-size: 0.85rem; }
/* Disabled add-to-cart stays brand orange (old design) — WC paints it lavender
   (#7f54b3) via `.woocommerce button.button.alt.disabled` (0,4,1); the button
   carries classes `single_add_to_cart_button button alt disabled
   wc-variation-selection-needed`, so stack enough of them to win (0,5,2). */
body.ci-shop button.single_add_to_cart_button.button.alt.disabled,
body.ci-shop button.single_add_to_cart_button.button.alt.disabled:hover,
body.ci-shop button.single_add_to_cart_button.button.disabled.wc-variation-selection-needed,
body.ci-shop button.single_add_to_cart_button:disabled[disabled] {
    background: var(--shop-accent);
    border-color: var(--shop-accent);
    color: #fff;
    opacity: 0.5;
}

/* Bulk-discount table (ci-core shortcode) — ci_client.css styles it via now-dead
   Breakdance vars (--bde-woo-tables__*); re-supply with theme tokens */
body.ci-shop .ci-prices-discount-table th,
body.ci-shop .ci-prices-discount-table td { border: 1px solid var(--shop-border); padding: 0.6rem 0.9rem; }
body.ci-shop .ci-prices-discount-table th { background: var(--hcl-neutral-2, #f9f9f9); }

/* Price wrap tolerance: at narrow widths a long NZD figure (e.g.
   "From: $1,213.60 / year") must hold one line. Shrink the price a touch and keep
   each money figure unbreakable — wrapping is allowed only between the ci-price
   today/then segments (their inline spaces), never mid-figure. */
@media (max-width: 480px) {
    .shop-single-product__price .ci-price,
    .shop-single-product__price .price { font-size: 1.35rem; }
    .shop-single-product__price .woocommerce-Price-amount { white-space: nowrap; }
}

@media (max-width: 900px) {
    .shop-single-product__columns { grid-template-columns: 1fr; gap: 1.5rem; }
    /* Old mobile order: content column (bulk table / plan comparison) BEFORE the GST note */
    .shop-single-product__aside { order: 1; }
    .shop-single-product__main { order: 0; }
    .shop-single-product__gst-note--footer { order: 2; }
}
