/* ==========================================================================
 * Mangwao Storefront Child — v1.2.40 (PDP gap-hole closure, build only)
 * Loads last (dependency: mangwao-139). This file does NOT re-trim any
 * value that v1.2.39 already set tight, and it does NOT guess at an
 * unidentified element. It closes the specific holes v1.2.39 left open
 * on the measured boundaries, so that no parent/store rule can inflate
 * a gap through a margin this theme never constrained.
 *
 * AUDIT (child code only, every rule read from the enqueued sheets:
 * style.css + mangwao-1.2.30/31/32/33/34/35/37/38/39.css; mangwao.css
 * and mangwao-1.2.29.css are NOT enqueued and cannot affect the page).
 * Design readings are the 23:10 session ONLY (Peach MG-23997 + CeraVe
 * MG-31028, consistent across both products and two loads):
 * stars->price ~110px, price->desc ~65px, desc->cart ~50-55px,
 * cart->Why ~30px, Why->Pay ~20-25px, meta pitch ~30px,
 * band (a) buy-box end -> tabs section edge ~65px (~85-90px to the tab
 * labels), band (d) related cards bottom -> footer headings ~105-115px
 * (~80-85px white + ~30px footer top padding).
 *
 * PROVEN CHILD STACKS (winning selectors verified, load order + spec):
 * - stars->price: .mg-pdp-rating mb 8px (1.2.37, (0,1,0), beats the
 *   identical 1.2.30 rule by load order) + p.price mt 0 (1.2.30
 *   shorthand, (0,3,2)) = 8px. NOT 110px.
 * - price->desc: p.price mb 8px (1.2.39, (0,4,2)) + desc mt 0 = 8px.
 * - desc->cart: desc mb 8px (1.2.39) + form mt 0 (1.2.39 shorthand) = 8px.
 * - cart->Why: form mb 8px (1.2.39, (0,4,4)) + .mg-love mt 8px
 *   (1.2.39, (0,4,3)) = 16px. Measured ~30px is inside the session's
 *   own ±20-30px visual-estimate error — already tight, untouched.
 * - Why->Pay: .mg-love mb 8px + .mg-paysecure mt 14px (1.2.35) = 22px,
 *   matching the measured 20-25px — untouched.
 * - band (a): summary mb 0 + pb 0 (1.2.39) + tabs mt 16px + pt 0
 *   (1.2.39, (0,3,2)) = 16px. NOT 65px.
 * - band (d): related mb 8px !important on the identical 1.2.30 line
 *   983 selector (1.2.39, load-last wins it) + content-area mb 0
 *   (1.2.39) + footer mt 20px (1.2.39, (0,1,1), beats style.css:375
 *   (0,1,0)) = 28px white + footer pt 28px = 56px total — ALREADY at
 *   the 56px target on paper, and the footer pt 28px matches the
 *   measured ~30px. The ~52-57px white residual is NOT footer.
 *
 * WHAT THE CHILD CODE NEVER CONSTRAINED (the holes this file closes):
 * 1. p.price margin-TOP: 1.2.39 sets only margin-bottom. Margin-top
 *    currently rests on the 1.2.30 shorthand (0,3,2). A parent rule
 *    with higher specificity setting price margin-top would survive.
 * 2. .mg-pdp-rating margins: only the weak (0,1,0) 1.2.37 rule. A
 *    generic parent rule on summary descendants could beat it.
 * 3. Summary LAST CHILD margin-bottom: nothing constrains it. The
 *    summary ends with .product_meta (+ .mg-share inside it) and the
 *    sharing stub; a parent margin-bottom on either would land
 *    directly in band (a).
 * 4. Related ul.products margin-bottom: 1.2.38 zeroed its padding
 *    only. A WooCommerce-core margin-bottom on ul.products would
 *    land directly in band (d).
 * 5. .site-main and .site-content margins/paddings: 1.2.39 zeroed
 *    only .content-area. Both wrappers sit between the related
 *    section and the footer; a Storefront bottom margin/padding on
 *    either (the classic 2.617924em rhythm is ~37-42px — the same
 *    order as band (d)'s white residual) would land in band (d).
 * 6. div.product padding-bottom on desktop: only a <=820px rule
 *    exists (1.2.35, cut to 16px by 1.2.39). A parent bottom padding
 *    on desktop would land in band (d).
 * Every rule below is scoped to body.single-product, beats the parent
 * rules named above by specificity (no !important anywhere — none is
 * needed, because no existing !important veto touches these
 * properties), and changes no font size, colour, padding of content,
 * tab strip, card, gallery, footer match, or mobile values.
 *
 * HONEST LIMIT (stated, not hidden): after these holes are closed,
 * the child-side stack for every listed gap is at minimum tight
 * spacing (8px / 16px / 28px-white / 56px-total). The 23:10 residuals
 * (~102px stars->price, ~57px price->desc, ~44px desc->cart, ~49px
 * band (a), ~54px band (d) white) cannot be produced by any rule in
 * this theme in any version, by any standard WooCommerce/Storefront
 * default on these elements, by any extra summary hook (functions.php
 * hooks exactly vendor 4, title 5, rating 6, price 10, excerpt 20,
 * cart 30, love/pay after the form, meta 40, sharing 50 — nothing
 * sits between rating and price), or by theme JS (no insertion into
 * .summary). If a large band persists after this install, its cause
 * is definitively outside the child CSS (a live-DOM element or a
 * parent rule on an element this theme does not style) and needs
 * live devtools inspection — not another blind trim. The earlier
 * session's much tighter readings on the same live 1.2.39
 * (stars->price ~35px, price->desc ~25px) also point at measurement
 * variance in the 23:10 session, which only a rendered re-check can
 * settle. No rule here pretends otherwise.
 *
 * DELIBERATELY NOT TOUCHED:
 * - Footer margin-top 20px / padding-top 28px (1.2.39): the footer
 *   match is user-approved (1.2.34) and its padding already matches
 *   the measured ~30px — cutting it to compensate for an unrelated
 *   white band would break the match without reaching the target.
 * - cart->Why 16px, Why->Pay 22px, meta rhythm: already at/inside
 *   the measured values; the brief allows a trim only on a safe
 *   proven rule, and none exists beyond the current values.
 * - Rating/price/desc font sizes, line-heights, star glyphs, tab
 *   strip padding (12px 24px), tab labels, panel internals, related
 *   grid/cards, gallery, lightbox, Quick View, header, cart,
 *   checkout: content/geometry, not bands.
 * - Mobile values: <=820px div.product padding-bottom stays 16px
 *   (re-asserted AFTER the desktop rule below, same pattern as
 *   1.2.39), <=768px panel padding stays 16px (re-asserted).
 * ========================================================================== */

/* --- Gap 1: stars -> price. Hole 1 + 2: price margin-top and rating --- */
/* --- margins, re-asserted with selectors that beat every older child - */
/* --- rule and any parent rule up to (0,4,1). Values unchanged (8px) -- */
/* --- because 8px IS normal tight spacing; the 110px reading cannot --- */
/* --- come from these margins (see header). --------------------------- */
body.single-product div.product div.summary .mg-pdp-rating{margin:0 0 8px}
body.single-product div.product div.summary p.price,body.single-product div.product div.summary span.price{margin:0 0 8px}

/* --- Gaps 2-3: price -> desc, desc -> cart. Same treatment: full ----- */
/* --- shorthands at 1.2.39-beating specificity, values unchanged (8px). */
body.single-product div.product div.summary .woocommerce-product-details__short-description{margin:0 0 8px}
body.single-product div.product div.summary form.cart{margin:0 0 8px}

/* --- Gap: cart -> Why (LOW). Re-assert only, values unchanged (8/8). - */
body.single-product div.product div.summary .mg-love{margin:8px 0}

/* --- Band (a): summary last-child bottom margin (hole 3). The ------- */
/* --- summary ends with meta/share; a parent bottom margin there ----- */
/* --- would otherwise flow straight into the buy-box -> tabs band. --- */
body.single-product div.product div.summary > :last-child{margin-bottom:0}

/* --- Band (a): tabs top, re-asserted (value unchanged, 16px target). - */
body.single-product div.product .woocommerce-tabs{margin:16px 0 0;padding:0}

/* --- Band (d): related grid bottom margin (hole 4). ------------------ */
body.single-product section.related.products ul.products{margin-bottom:0}

/* --- Band (d): wrapper bottoms (holes 5 + 6). .site-main and --------- */
/* --- .site-content sit between the related section and the footer; -- */
/* --- div.product bottom padding would too. All zeroed, scoped to ---- */
/* --- single-product only, so no other page type is affected. -------- */
body.single-product .site-main{margin-bottom:0;padding-bottom:0}
body.single-product .site-content{margin-bottom:0;padding-bottom:0}
body.single-product div.product{padding-bottom:0}

/* --- Mobile values, preserved (same pattern as 1.2.39: these blocks - */
/* --- come AFTER the desktop rules above, so the phone values win --- */
/* --- back at their breakpoints). -------------------------------------- */
@media(max-width:820px){
  body.single-product div.product{padding-bottom:16px}
}
@media(max-width:768px){
  body.single-product div.product .woocommerce-tabs .woocommerce-Tabs-panel{padding:16px}
}
