/*
Theme Name:   Storefront Aspley RLFC
Description:  Storefront Child Theme for the Aspley RLFC ordering portal
Author:       RU Digital
Author URI:   https://www.rudigital.com.au/
Template:     storefront
Version:      1.0.6
License:      GNU General Public License v2 or later
License URI:  http://www.gnu.org/licenses/gpl-2.0.html
Tags:         light, dark, two-columns, right-sidebar, responsive-layout, accessibility-ready
Text Domain:  storefront-aspley-rlfc

==============================================================================
ASPLEY RLFC BRAND PALETTE
==============================================================================
Source-of-truth for these colours is the WP Customizer (Appearance > Customize
> Colors) - stored in option theme_mods_storefront-aspley-rlfc. These CSS
variables mirror those values for documentation and reuse in custom rules
below.

CONFIRMED 3 June 2026: official Aspley Devils colours supplied by the club via
David (Aspley Devils Colours.pdf). Pantone references below. These replace the
earlier verbally-agreed placeholders.

------------------------------------------------------------------------------
| Colour      | Hex      | Pantone | Used for                                 |
|-------------|----------|---------|------------------------------------------|
| Maroon      | #6d1e46  | 222C    | Primary - headings, accent, header bg, primary CTA |
| Gold        | #f4a800  | 130C    | Secondary - footer headings + links      |
| Teal        | #005e64  | 323C    | Tertiary - alternate / secondary buttons |
| White       | #FFFFFF  |  -      | Text on dark backgrounds                 |
| Body text   | #333333  |  -      | Body copy                                |
| Footer bg   | #2A2A2A  |  -      | Near-black footer background for contrast|
==============================================================================
*/
:root {
    --aspley-maroon: #6d1e46;
    --aspley-gold: #f4a800;
    --aspley-teal: #005e64;
    --aspley-white: #FFFFFF;
    --aspley-text: #333333;
    --aspley-footer-bg: #2A2A2A;
}
/*
 * PG-28: Site title wordmark placeholder.
 * Text-only "Aspley RLFC" rendered via WordPress' default site_title block
 * (the .site-branding > .site-title is Storefront's default). Styled here to
 * read as an intentional wordmark rather than a default header label.
 * TODO (PG-15 follow-up): when David provides actual Aspley logo files, upload
 * via Customizer > Site Identity > Logo, then this CSS becomes inert (the .site-title
 * text node is replaced by an <img class="custom-logo">). Don't remove the CSS - it
 * keeps acting as the wordmark fallback if the logo ever fails to load.
 */
.site-title {
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    font-size: 1.6em;
}
.site-title a {
    color: var(--aspley-white) !important;
}
.site-title a:hover {
    color: var(--aspley-gold) !important;
}

/*
 * PG-28 (logo sizing): the Aspley logo is a 2000x2000 SQUARE mark. The inherited
 * asuria header CSS floats .site-branding right at 50% width with NO height cap
 * (it was written for small WIDE logos like the 350x73 Promo Gear one), so the
 * square logo balloons to ~half the header and turns it into a giant slab.
 * Cap the logo height; keep the inherited float layout otherwise.
 */
.site-header .site-branding img.custom-logo {
    height: auto;
    width: auto;
    max-height: 120px;
}

/*
 * Header co-branding (Promo Gear logo, far right of the branding row), full colour.
 */
.site-header .site-co-branded {
    display: flex;
    align-items: center;
}
.site-header .em-header-promogear-logo {
    max-height: 38px;
    width: auto;
    display: block;
}
/*
 * PG-29 / PG-85: Promo Gear secondary co-branding in footer right.
 * Image source: theme assets/images/promogear-logo-green-white.png. This is the
 * green/white PG logo, which reads natively on the dark footer
 * (--aspley-footer-bg #2A2A2A), so the previous brightness(0) invert(1) filter has
 * been removed (it would have crushed the green to white). Size cap 24px.
 */
/* Footer credit row: copyright + Powered-by on the left, links menu on the right. */
.em-footer-credit {
    display: flex;
    justify-content: space-between;
    align-items: center;
    flex-wrap: wrap;
    gap: 12px;
}
.em-footer-left {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 8px;
}
.em-footer-right {
    display: inline-flex;
    flex-direction: column;
    align-items: flex-end;
    gap: 10px;
}
.em-poweredby {
    display: inline-flex;
    align-items: center;
    gap: 8px;
}
/*
 * Footer Links menu (e.g. Privacy Policy). Clean horizontal, right-aligned list
 * on the dark footer (--aspley-footer-bg #2A2A2A). Light/legible links with a
 * gold (--aspley-gold) hover. Wraps gracefully; stacks/centres on mobile via the
 * existing 568px footer rule below.
 */
.em-footer-menu {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-wrap: wrap;
    justify-content: flex-start;
    align-items: center;
    gap: 6px 14px;
}
.em-footer-menu li {
    margin: 0;
    padding: 0;
    list-style: none;
}
.em-footer-menu li + li {
    border-left: 1px solid rgba(255, 255, 255, 0.25);
    padding-left: 14px;
}
/*
 * Storefront's .site-footer a:not(.button):not(.components-button) forces footer
 * links gold, which beats a plain .em-footer-menu a rule. Scope under .site-footer
 * and match its :not() chain to win the cascade: light/legible default, gold hover.
 */
.site-footer .em-footer-menu a:not(.button):not(.components-button) {
    color: rgba(255, 255, 255, 0.85);
    font-size: 0.85em;
    text-decoration: none;
    transition: color 0.2s ease;
}
.site-footer .em-footer-menu a:not(.button):not(.components-button):hover,
.site-footer .em-footer-menu a:not(.button):not(.components-button):focus,
.site-footer .em-footer-menu .current-menu-item > a:not(.button):not(.components-button) {
    color: var(--aspley-gold);
}
.em-poweredby-label {
    font-size: 0.85em;
    color: rgba(255, 255, 255, 0.7);
}
/* Copyright sits under the Footer Links menu (left column). */
.em-footer-copyright {
    font-size: 0.85em;
    color: rgba(255, 255, 255, 0.7);
    text-align: left;
}
.em-promogear-link {
    display: inline-flex;
    align-items: center;
}
.em-promogear-logo {
    max-height: 24px;
    width: auto;
    vertical-align: middle;
    opacity: 0.85;
    transition: opacity 0.2s ease;
}
.em-promogear-link:hover .em-promogear-logo {
    opacity: 1;
}
/*
 * PG-30: Mobile responsive QA.
 * Math at 320px (smallest common mobile): footer-left "Copyright © Aspley RLFC YYYY" + footer-right
 * "Powered by + 135px logo" = ~432px, would overflow on narrow screens. Stack vertically below 568px.
 * Also constrain the wordmark width on tiny screens so it doesn't push the burger menu offscreen.
 */
@media (max-width: 568px) {
    .em-footer-credit {
        flex-direction: column;
        align-items: center;
    }
    .em-footer-left,
    .em-footer-right {
        display: block;
        width: 100%;
        text-align: center;
        margin: 8px 0;
    }
    .em-footer-right {
        align-items: center;
    }
    .em-poweredby {
        justify-content: center;
    }
    .em-footer-menu {
        justify-content: center;
    }
    .site-title {
        font-size: 1.2em;
        letter-spacing: 0.04em;
    }
}
@media (max-width: 380px) {
    .site-title {
        font-size: 1.0em;
    }
    .em-promogear-logo {
        max-height: 22px;
    }
}
.hidden {
    display: none !important;
}
.site-header .site-co-branded {
    float: left;
    width: 50%;
}
.site-header .site-co-branded img {
    max-height: 60px;
    max-width: 250px;
}
body.home .hentry.type-page .entry-header {
    display: none;
}
.page-template-template-homepage .type-page.hentry>.col-full {
    margin-left: 0;
    margin-right: 0;
    padding-left: 0;
    padding-right: 0;
}
.page-template-template-homepage .entry-content,
.page-template-template-homepage .entry-header {
    max-width: none;
}
.wc-block-grid__products {
    margin-left: -8px;
}
.wc-block-grid__products li.product img,
.wc-block-grid__products .wc-block-grid__product img {
    width: 100%;
}
.storefront-full-width-content .woocommerce-products-header {
    padding-bottom: 50px;
}
.storefront-breadcrumb {
    margin-bottom: 20px;
}
/* ==========================================================================
 * PRODUCT CARD GRID (G-card, 8 June 2026)
 * --------------------------------------------------------------------------
 * The live archive markup is `ul.products.columns-3`, but the old custom grid
 * here targeted `ul.products.columns-4` (a column count that is never output),
 * so those rules were dead and the page fell back to bare Storefront defaults
 * (uneven heights, no card container, buttons not anchored).
 *
 * This block replaces that with a column-count-agnostic CSS Grid that styles
 * every product loop (shop archive, category archives, AND single-product
 * related/upsell `ul.products`). It is scoped to `.woocommerce ul.products
 * li.product` so the card/button styling never leaks to other `.button`s on
 * the site (hero, header, etc.).
 *
 * Internal card layout uses a 2-column grid on each `li.product`:
 *   - the loop link (image + title + price) spans both columns in row 1 (1fr,
 *     so it grows and fills the card),
 *   - the two action buttons sit in row 2 (auto), pinned to the bottom and
 *     side-by-side: teal "View details" (.button-blue, first in DOM) + maroon
 *     "Add to cart" (.add_to_cart_button, second in DOM).
 * Equal-height cards come for free from the OUTER grid stretching each li to
 * its row height (align-items: stretch is the grid default).
 * ========================================================================== */

/* Outer grid: 3-up desktop. Column-count-agnostic - works for .columns-3 and
 * the related-products loops regardless of the WC column count class. */
.woocommerce ul.products,
.woocommerce-page ul.products {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 24px;
    margin: 0 0 24px;
    padding: 0;
    list-style: none;
}
/* CRITICAL: Storefront's clearfix puts ::before/::after on ul.products. When the
 * UL becomes a grid container those pseudo-elements turn into GRID ITEMS and the
 * ::before takes the first cell - leaving an empty leading "card" that shoves
 * every product one cell to the right. Remove them. */
.woocommerce ul.products::before,
.woocommerce ul.products::after,
.woocommerce-page ul.products::before,
.woocommerce-page ul.products::after {
    content: none;
    display: none;
}

/* Each product becomes a card. Reset Storefront's float/width/margin so the
 * grid (not floats) controls layout, then add the card chrome. */
.woocommerce ul.products li.product,
.woocommerce-page ul.products li.product {
    display: grid;
    grid-template-columns: 1fr 1fr;
    grid-template-rows: 1fr auto;
    column-gap: 10px;
    row-gap: 12px;
    /* !important: Storefront's woocommerce.css (`ul.products li.product{float:left;
     * width:29.41%}`) loads AFTER this child stylesheet. A floated display:grid box
     * shrink-wraps to its content (~100px), collapsing the card inside its grid
     * column. Force it back to a full-width grid item. */
    float: none !important;
    clear: none !important;
    width: auto !important;
    max-width: none !important;
    margin: 0;
    padding: 16px;
    background-color: #ffffff;
    border: 1px solid #e6e1e4;
    border-radius: 8px;
    box-shadow: 0 1px 2px rgba(0, 0, 0, 0.04);
    transition: transform 0.2s ease, box-shadow 0.2s ease;
}
/* Neutralise Storefront's clearfix pseudo-elements on the card so they don't
 * create stray grid rows. */
.woocommerce ul.products li.product::before,
.woocommerce ul.products li.product::after {
    content: none;
}
/* Gentle hover lift. */
.woocommerce ul.products li.product:hover {
    transform: translateY(-4px);
    box-shadow: 0 8px 20px rgba(109, 30, 70, 0.12);
}

/* The loop link holds image + title + price; span both columns, fill row 1. */
.woocommerce ul.products li.product a.woocommerce-loop-product__link {
    grid-column: 1 / -1;
    display: flex;
    flex-direction: column;
    margin: 0;
}

/* Consistent image box: fixed height, contain, centered - so tall bottles and
 * square caps all align across cards. Overrides the earlier square aspect-ratio
 * rule for the loop (kept for the block grid below). */
.woocommerce ul.products li.product a.woocommerce-loop-product__link img,
.woocommerce ul.products li.product img.attachment-woocommerce_thumbnail,
.woocommerce ul.products li.product img.wp-post-image {
    width: 100%;
    height: 240px;
    aspect-ratio: auto;
    object-fit: contain;
    object-position: center;
    background-color: #ffffff;
    margin: 0 0 12px;
    display: block;
}

/* Title: centered, brand maroon, room for two lines without shifting price. */
.woocommerce ul.products li.product .woocommerce-loop-product__title {
    text-align: center;
    color: var(--aspley-maroon);
    font-size: 1.05em;
    line-height: 1.3;
    margin: 0 0 8px;
    padding: 0;
}

/* Price: centered, muted. */
.woocommerce ul.products li.product .price {
    text-align: center;
    color: #6b6b6b;
    font-weight: 600;
    margin: 0 0 4px;
    display: block;
}

/* Hide the inline quantity box inside the loop link so every card is uniform
 * (it was already hidden on the shop archive; extend to all product loops). */
.woocommerce ul.products li.product .product-list-quantity {
    display: none;
}

/* Action buttons: side-by-side in row 2, equal width, pinned to card bottom.
 * View details (.button-blue) is first in the DOM -> column 1; Add to cart
 * (.add_to_cart_button) is second -> column 2. */
.woocommerce ul.products li.product > .button,
.woocommerce ul.products li.product > .added_to_cart {
    margin: 0;
    width: auto;
    align-self: end;
    text-align: center;
    padding-left: 12px;
    padding-right: 12px;
    white-space: nowrap;
}
.woocommerce ul.products li.product > .button.button-blue {
    grid-column: 1;
    grid-row: 2;
    background-color: var(--aspley-teal); /* Aspley teal (Pantone 323C) */
    color: #ffffff;
}
.woocommerce ul.products li.product > .button.button-blue:hover {
    background-color: #00474c; /* darker teal */
}
.woocommerce ul.products li.product > .button.add_to_cart_button {
    grid-column: 2;
    grid-row: 2;
}
/* Variable products render ONLY a single "Select options" button (no "View
 * details" sibling). Span it the full card width instead of leaving an empty
 * half-column. (Same specificity as the rule above but later in source, so it
 * wins for the .product_type_variable button.) */
.woocommerce ul.products li.product > .button.product_type_variable {
    grid-column: 1 / -1;
    grid-row: 2;
}
/* The post-AJAX "View cart" link is an extra sibling; drop the stale absolute
 * positioning and sit it full-width on its own auto row below the buttons. */
.woocommerce ul.products li.product > .added_to_cart {
    grid-column: 1 / -1;
    grid-row: auto;
    position: static;
    bottom: auto;
    right: auto;
    width: auto;
    background-color: #333;
}
.woocommerce ul.products li.product > .added_to_cart:hover {
    background-color: #000;
}

/* Keep the legacy grey / popup-submit buttons usable if they ever render in a
 * loop card: full-width row beneath the action row, colours preserved. */
.woocommerce ul.products li.product > .button.button-grey {
    grid-column: 1 / -1;
    background-color: #6d6d6d;
}
.woocommerce ul.products li.product > .button.button-grey:hover {
    background-color: #555;
}
.woocommerce ul.products li.product > input.cwg_popup_submit {
    grid-column: 1 / -1;
    margin: 0;
}

/* Reduced-motion: drop the hover lift transition/transform. */
@media (prefers-reduced-motion: reduce) {
    .woocommerce ul.products li.product {
        transition: none;
    }
    .woocommerce ul.products li.product:hover {
        transform: none;
    }
}

/* ==========================================================================
 * SHOP TOOLBAR (result count + sorting select) + PAGINATION - on-brand
 * ========================================================================== */
.woocommerce .woocommerce-result-count,
.woocommerce-page .woocommerce-result-count {
    color: #6b6b6b;
    font-size: 0.92em;
    line-height: 2.6;
    margin: 0;
}
.woocommerce .woocommerce-ordering select,
.woocommerce-page .woocommerce-ordering select {
    border: 1px solid #d9d2d6;
    border-radius: 4px;
    padding: 9px 14px;
    background-color: #fff;
    color: var(--aspley-maroon);
    font-size: 0.92em;
    cursor: pointer;
    max-width: 100%;
}
.woocommerce .woocommerce-ordering select:focus {
    outline: 2px solid var(--aspley-teal);
    outline-offset: 1px;
}

.woocommerce nav.woocommerce-pagination,
.woocommerce-page nav.woocommerce-pagination {
    margin: 24px 0 0;
}
.woocommerce nav.woocommerce-pagination ul,
.woocommerce-page nav.woocommerce-pagination ul {
    display: inline-flex;
    flex-wrap: wrap;
    gap: 6px;
    border: 0;
}
.woocommerce nav.woocommerce-pagination ul li,
.woocommerce-page nav.woocommerce-pagination ul li {
    border: 0;
    margin: 0;
    overflow: visible;
}
.woocommerce nav.woocommerce-pagination ul li a.page-numbers,
.woocommerce nav.woocommerce-pagination ul li span.page-numbers {
    display: inline-block;
    min-width: 42px;
    padding: 9px 13px;
    border: 1px solid var(--aspley-maroon);
    border-radius: 4px;
    color: var(--aspley-maroon);
    background-color: #fff;
    line-height: 1.2;
    font-weight: 600;
    transition: background-color 0.15s ease, color 0.15s ease;
}
.woocommerce nav.woocommerce-pagination ul li a.page-numbers:hover,
.woocommerce nav.woocommerce-pagination ul li span.page-numbers.current {
    background-color: var(--aspley-maroon);
    color: #ffffff;
}
.woocommerce nav.woocommerce-pagination ul li span.page-numbers.dots {
    border-color: transparent;
    background: transparent;
    color: #6b6b6b;
}

/* ==========================================================================
 * SINGLE PRODUCT: variation dropdown (Size etc), quantity + add-to-cart
 * ========================================================================== */
.woocommerce div.product form.cart .variations {
    margin-bottom: 18px;
}
.woocommerce div.product form.cart .variations th.label,
.woocommerce div.product form.cart .variations td.label,
.woocommerce div.product form.cart .variations label {
    color: var(--aspley-maroon);
    font-weight: 600;
    vertical-align: middle;
}
.woocommerce div.product form.cart .variations select {
    min-width: 220px;
    max-width: 100%;
    height: 46px;
    padding: 8px 36px 8px 14px;
    border: 1px solid #d9d2d6;
    border-radius: 4px;
    background-color: #fff;
    color: var(--aspley-text);
    font-size: 1em;
    line-height: 1.4;
    cursor: pointer;
}
.woocommerce div.product form.cart .variations select:focus {
    outline: 2px solid var(--aspley-teal);
    outline-offset: 1px;
    border-color: var(--aspley-teal);
}
.woocommerce div.product form.cart .reset_variations {
    display: inline-block;
    margin-left: 10px;
    color: var(--aspley-teal);
    font-size: 0.9em;
}

/* Quantity box: bordered, height-matched to the button. */
.woocommerce div.product form.cart .quantity .qty {
    height: 46px;
    width: 64px;
    text-align: center;
    border: 1px solid #d9d2d6;
    border-radius: 4px;
    background-color: #fff;
    color: var(--aspley-text);
}

/* Add to cart = primary maroon (matches the shop loop's Add to cart), height-
 * matched to the quantity box. Keeps WooCommerce's 0.5 opacity disabled state
 * while no variation is chosen. */
.woocommerce div.product form.cart .single_add_to_cart_button,
.woocommerce div.product form.cart .single_add_to_cart_button.alt {
    background-color: var(--aspley-maroon);
    color: #ffffff;
    height: 46px;
    border-radius: 4px;
    vertical-align: top;
}
.woocommerce div.product form.cart .single_add_to_cart_button:hover {
    background-color: #58173a;
}

/* ==========================================================================
 * WOOCOMMERCE NOTICES (My Account / cart / checkout) - on-brand
 * Storefront's default info notice is a solid blue (#3D9CD2). Recolour:
 * info -> teal, message/success -> maroon, error -> red. (`.woocommerce`-scoped
 * to beat Storefront's lower-specificity `.woocommerce-info` which loads later.)
 * ========================================================================== */
.woocommerce .woocommerce-info,
.woocommerce-page .woocommerce-info {
    background-color: var(--aspley-teal);
    color: #ffffff;
}
.woocommerce .woocommerce-message,
.woocommerce-page .woocommerce-message {
    background-color: var(--aspley-maroon);
    color: #ffffff;
}
.woocommerce .woocommerce-error,
.woocommerce-page .woocommerce-error {
    background-color: #b00020;
    color: #ffffff;
}
.woocommerce .woocommerce-info::before,
.woocommerce .woocommerce-message::before,
.woocommerce .woocommerce-error::before {
    color: #ffffff;
}
.woocommerce .woocommerce-info a,
.woocommerce .woocommerce-message a,
.woocommerce .woocommerce-error a {
    color: #ffffff;
    text-decoration: underline;
}
.woocommerce .woocommerce-info a.button,
.woocommerce .woocommerce-message a.button {
    color: #ffffff;
    background-color: rgba(0, 0, 0, 0.18);
    text-decoration: none;
}
.woocommerce .woocommerce-info a.button:hover,
.woocommerce .woocommerce-message a.button:hover {
    background-color: rgba(0, 0, 0, 0.3);
}

/* ==========================================================================
 * MINI-CART DROPDOWN - clean white panel + brand buttons
 * (Storefront tints it a dark maroon off the header colour; make it a readable
 * white panel with a shadow, Checkout = maroon primary, View cart = teal.)
 * ========================================================================== */
.site-header-cart .widget_shopping_cart,
.site-header .widget_shopping_cart.widget {
    background-color: #ffffff !important;
    color: var(--aspley-text);
    border: 1px solid #e6e1e4;
    border-radius: 8px;
    box-shadow: 0 12px 30px rgba(0, 0, 0, 0.18);
    padding: 16px;
    min-width: 320px;
}
.site-header-cart .widget_shopping_cart .cart_list,
.site-header-cart .widget_shopping_cart .total,
.site-header-cart .widget_shopping_cart p {
    color: var(--aspley-text);
}
.site-header-cart .widget_shopping_cart .cart_list li {
    border-bottom: 1px solid #eee;
    color: var(--aspley-text);
}
.site-header-cart .widget_shopping_cart .cart_list li a:not(.remove) {
    color: var(--aspley-maroon);
    font-weight: 600;
}
.site-header-cart .widget_shopping_cart .total {
    background-color: transparent !important; /* Storefront tints these maroon off the header colour */
    border-top: 2px solid #eee;
    padding-top: 10px;
    color: var(--aspley-text);
}
.site-header-cart .widget_shopping_cart .total strong,
.site-header-cart .widget_shopping_cart .amount {
    color: var(--aspley-maroon);
}
.site-header-cart .widget_shopping_cart .buttons {
    background-color: transparent !important;
    display: flex;
    gap: 8px;
    margin-bottom: 0;
}
.site-header-cart .widget_shopping_cart .buttons a.button {
    flex: 1 1 0;
    margin: 0;
    text-align: center;
    background-color: var(--aspley-teal); /* View cart = secondary */
    color: #ffffff;
}
.site-header-cart .widget_shopping_cart .buttons a.button.checkout {
    background-color: var(--aspley-maroon); /* Checkout = primary */
}
.site-header-cart .widget_shopping_cart .buttons a.button:hover {
    opacity: 0.92;
}

ul.products + .storefront-sorting {
    margin-top: 50px;
}
.custom-product-filter form {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    grid-column-gap: 30px;
}
.custom-product-filter .yith-wcan-filters.horizontal:not(.filters-modal) .yith-wcan-filter .filter-title.collapsable {
    font-size: 18px;
    margin-right: 0;
}
.single-product div.product p.price {
    color: #333;
    font-weight: bold;
}
.products .added_to_cart {
    background-color: #333;
    bottom: 50px;
    padding-left: 5px;
    padding-right: 5px;
    position: absolute;
    right: 10px;
    width: calc(50% - 15px);
}
.products .added_to_cart:hover {
    background-color: #000;
}
/*.product-list-quantity {
    bottom: 50px;
    left: 10px;
    position: absolute;
    width: calc(50% - 15px);
}
.product-list-quantity .quantity .qty {
    width: 100%;
}*/
#size-guide {
    max-width: 100%;
    width: 800px;
}
.size-guide-wrapper {
    padding: 50px;
}
.product-custom-tags {
    align-items: center;
    display: flex;
    flex-wrap: wrap;
    list-style: none;
    margin: 20px -5px -5px;
    padding: 0;
}
.product-custom-tags li {
    padding: 0 5px;
}
.product-custom-tags li img {
    width: 70px;
    margin: 0;
}
.hentry .entry-content .wp-block-columns.home-ctas .wp-block-column:not(:last-child) {
    margin-right: 0;
    padding: 0;
}
.cta-style-1::before {
    content: "";
    display: block;
    padding-top: 56.561086%;
}
.cta-style-1 {
    border-radius: 10px;
    min-height: 1px;
    overflow: hidden;
    padding: 0;
}
.cta-style-1.wp-block-cover .wp-block-cover__image-background {
    border-radius: 10px;
    height: 100%;
    left: 0;
    object-fit: cover;
    object-position: center;
    position: absolute;
    top: 0;
    width: 100%;
}
.cta-style-1.wp-block-cover .wp-block-cover__background {
    background-color: rgba(0, 0, 0, 0);
    background-image: linear-gradient(180deg, #FFFFFF00 50%, #000000 100%);
    border-radius: 10px;
    transition: all 0.3s;
}
.cta-style-1.wp-block-cover:hover .wp-block-cover__background {
    background-color: #000;
}
.hentry .entry-content .cta-style-1.wp-block-cover .wp-block-cover__inner-container {
    bottom: 20px;
    left: 0;
    padding: 0 20px;
    position: absolute;
    right: 0;
    text-align: left;
    width: auto;
}
.hentry .entry-content .cta-style-1.wp-block-cover .wp-block-cover__inner-container p:not(.has-text-color) {
    text-align: left;
}
.hentry .entry-content .cta-style-1.wp-block-cover .wp-block-cover__inner-container p:not(.has-text-color) a::before {
    bottom: -99em;
    content: "";
    left: -99em;
    position: absolute;
    right: -99em;
    top: -99em;
}
.hentry .entry-content .cta-style-1.wp-block-cover .wp-block-cover__inner-container p:not(.has-text-color) a {
    color: #fff;
    text-decoration: none;
}
table.shop_table_responsive tbody tr td.product-price,
table.shop_table_responsive thead tr th.product-price,
.cart-collaterals .cart_totals h2,
.cart-collaterals .cart_totals .shop_table,
.shop_table.woocommerce-checkout-review-order-table thead th.product-total,
.shop_table.woocommerce-checkout-review-order-table tbody td.product-total,
.shop_table.woocommerce-checkout-review-order-table tfoot,
.woocommerce-order-overview .woocommerce-order-overview__total,
.woocommerce-table--order-details .woocommerce-table__product-table.product-total,
.woocommerce-table--order-details .woocommerce-table__product-total.product-total {
/*     display: none; */
}
.order_details>li.woocommerce-order-overview__date {
    border-bottom: none;
}
body.page-login-main .entry-header .entry-title {
    text-align: center;
}
body.page-login-main .gform_wrapper,
body.page-login-main .gf_login_links {
    text-align: center;
}
body.page-login-main .gf_login_links::before {
    content: "If you do not have an account, please register now!";
    display: block;
    margin-bottom: 10px;
}
body.page-login-main .gform_wrapper.gravity-theme .gform_footer {
    justify-content: center;
}
body.page-login-main .gform_wrapper.gravity-theme .gfield input[type="text"],
body.page-login-main .gform_wrapper.gravity-theme .gfield input[type="password"] {
    width: 300px;
}
.product-field-note {
    margin-top: 20px;
}
a.em-button {
    background-color: #73b138;
    border-color: #73b138;
    color: #ffffff;
    display: inline-block;
    font-weight: 600;
    padding: 0.6180469716em 1.41575em;
    text-decoration: none;
    transition: all .3s linear;
}
a.em-button:hover {
    background-color: #5a981f;
    border-color: #5a981f;
}
.woocommerce-products-header {
    position: relative;
}
.woocommerce-products-header h1 {
	padding: 0 230px;
}
.custom-woo-contact-for-products {
    position: absolute;
    right: 0;
    top: 0;
}
body.page-popup-content {
    background: #F5F5F5;
    padding: 5% 10%;
}
body.page-popup-content h2 {
    font-weight: 600;
    margin-bottom: 50px;
}
.contact-for-products-frm_wrapper {
    margin: 0 auto;
    max-width: 760px;
}
.contact-for-products-frm_wrapper .gform_heading {
    display: none;
}
.contact-for-products-frm_wrapper form {
    margin: 0;
}
.contact-for-products-frm_wrapper.gform_wrapper.gravity-theme input[type=color],
.contact-for-products-frm_wrapper.gform_wrapper.gravity-theme input[type=date],
.contact-for-products-frm_wrapper.gform_wrapper.gravity-theme input[type=datetime-local],
.contact-for-products-frm_wrapper.gform_wrapper.gravity-theme input[type=datetime],
.contact-for-products-frm_wrapper.gform_wrapper.gravity-theme input[type=email],
.contact-for-products-frm_wrapper.gform_wrapper.gravity-theme input[type=month],
.contact-for-products-frm_wrapper.gform_wrapper.gravity-theme input[type=number],
.contact-for-products-frm_wrapper.gform_wrapper.gravity-theme input[type=password],
.contact-for-products-frm_wrapper.gform_wrapper.gravity-theme input[type=search],
.contact-for-products-frm_wrapper.gform_wrapper.gravity-theme input[type=tel],
.contact-for-products-frm_wrapper.gform_wrapper.gravity-theme input[type=text],
.contact-for-products-frm_wrapper.gform_wrapper.gravity-theme input[type=time],
.contact-for-products-frm_wrapper.gform_wrapper.gravity-theme input[type=url],
.contact-for-products-frm_wrapper.gform_wrapper.gravity-theme input[type=week],
.contact-for-products-frm_wrapper.gform_wrapper.gravity-theme select,
.contact-for-products-frm_wrapper.gform_wrapper.gravity-theme textarea {
	background: #fff;
	border: 1px solid #D5D2D2;
	border-radius: 4px;
	box-shadow: none;
    font-size: 15px;
}
.contact-for-products-frm_wrapper.gform_wrapper.gravity-theme input[type=color],
.contact-for-products-frm_wrapper.gform_wrapper.gravity-theme input[type=date],
.contact-for-products-frm_wrapper.gform_wrapper.gravity-theme input[type=datetime-local],
.contact-for-products-frm_wrapper.gform_wrapper.gravity-theme input[type=datetime],
.contact-for-products-frm_wrapper.gform_wrapper.gravity-theme input[type=email],
.contact-for-products-frm_wrapper.gform_wrapper.gravity-theme input[type=month],
.contact-for-products-frm_wrapper.gform_wrapper.gravity-theme input[type=number],
.contact-for-products-frm_wrapper.gform_wrapper.gravity-theme input[type=password],
.contact-for-products-frm_wrapper.gform_wrapper.gravity-theme input[type=search],
.contact-for-products-frm_wrapper.gform_wrapper.gravity-theme input[type=tel],
.contact-for-products-frm_wrapper.gform_wrapper.gravity-theme input[type=text],
.contact-for-products-frm_wrapper.gform_wrapper.gravity-theme input[type=time],
.contact-for-products-frm_wrapper.gform_wrapper.gravity-theme input[type=url],
.contact-for-products-frm_wrapper.gform_wrapper.gravity-theme input[type=week],
.contact-for-products-frm_wrapper.gform_wrapper.gravity-theme select {
	height: 58px;
}
.contact-for-products-frm_wrapper.gform_wrapper.gravity-theme .gfield_label {
	color: #000;
	font-weight: normal;
}
.contact-for-products-frm_wrapper.gform_wrapper.gravity-theme .gform_footer {
	justify-content: center;
    padding-bottom: 0;
	padding-top: 40px;
	text-align: center;
}
.contact-for-products-frm_wrapper.gform_wrapper.gravity-theme .gform_footer input[type="submit"] {
	background: none;
	border: 1px solid #8EBB54;
	border-radius: 4px;
	color: #8EBB54;
	font-size: 18px;
	height: 54px;
    margin: 0 aauto;
    vertical-align: top;
}
.contact-for-products-note {
	color: #000;
	margin: 20px auto 0;
	max-width: 380px;
}
.custom-woo-contact-for-products-single {
	margin-top: 20px;
}

@media (min-width: 768px) {
    /* The header has TWO .col-full rows: an outer BRANDING row (Aspley logo +
     * Promo Gear co-brand) and the inner .storefront-primary-navigation row
     * (nav + search + cart). Handle them separately.
     *
     * Branding row: make the OUTER .col-full a flex row containing only the
     * Aspley logo (left) and the Promo Gear co-brand (pushed hard right with
     * margin-inline-start:auto). The nav wrapper is forced onto its own
     * full-width row below via flex-basis:100% + order so it never sits on the
     * branding row. We use the child combinator (.site-header > .col-full) so
     * this targets ONLY the outer container, never the inner nav .col-full. */
    .site-header > .col-full {
        display: flex;
        flex-wrap: wrap;
        align-items: center;
    }
    .woocommerce-active .site-header .site-branding {
        clear: none;
        float: none;
        width: auto;
        margin: 0;
        order: 1;
    }
    .site-header .site-branding img.custom-logo {
        margin: 0;
    }
    /* Override the inherited asuria rule (.site-header .site-co-branded {
     * float:left; width:50% } around line 158) that was leaving the logo
     * half-width and floated, landing it in the centre. Reset float/width and
     * push the whole co-brand block to the right edge of the branding row. */
    .site-header .site-co-branded {
        order: 2;
        float: none;
        width: auto;
        margin: 0;
        margin-inline-start: auto; /* hard right within the flex row */
        justify-content: flex-end; /* anchor the inner <a>/img to the right */
    }
    /* The inherited img rule (.site-header .site-co-branded img) sets
     * max-height:60px / max-width:250px at higher specificity than the
     * .em-header-promogear-logo base rule, so re-assert the 46px cap here. */
    .site-header .site-co-branded img.em-header-promogear-logo {
        max-height: 38px;
        max-width: none;
    }
    /* Force the nav wrapper onto its own full-width row beneath the branding. */
    .site-header .storefront-primary-navigation {
        order: 3;
        flex-basis: 100%;
        width: 100%;
        clear: both;
    }

    /* Nav row (inner col-full): nav left, search + cart pushed right. */
    .storefront-primary-navigation .col-full {
        display: flex;
        flex-wrap: wrap;
        align-items: center;
        column-gap: 28px;
    }
    .woocommerce-active .site-header .main-navigation {
        float: none;
        width: auto;
        margin: 0 auto 0 0; /* margin-right:auto pushes search+cart to the right */
        order: 1;
    }
    .woocommerce-active .site-header .site-search {
        order: 2;
        float: none;
        margin: 0;
        padding-right: 10px;
    }
    .site-header .site-header-cart {
        order: 3;
        float: none;
        margin: 0;
    }
}
@media (min-width: 992px) {
    .woocommerce-active .site-header .site-search {
        padding-right: 20px;
    }
}
@media (max-width: 991px) {
    /* Tablet: 2-up product grid (retargeted from the dead .columns-4 rules to
     * the real grid). */
    .woocommerce ul.products,
    .woocommerce-page ul.products {
        grid-template-columns: repeat(2, 1fr);
        gap: 20px;
    }
    .woocommerce ul.products li.product > .button {
        padding-left: 12px;
        padding-right: 12px;
    }
}
@media (max-width: 767px) {
    .site-header .site-co-branded {
        padding-bottom: 30px;
        width: 100%;
    }
    .site-header .site-co-branded img {
        margin: 0 auto;
    }
    .woocommerce-active .site-header .site-branding {}
    .storefront-full-width-content .woocommerce-products-header {
        padding-bottom: 20px;
    }
    /* Mobile: 1-up product grid (retargeted from the dead .columns-4 rules). */
    .woocommerce ul.products,
    .woocommerce-page ul.products {
        grid-template-columns: 1fr;
        gap: 16px;
    }
    .custom-product-filter form {
        grid-template-columns: 100%;
    }
    .woocommerce ul.products li.product > .button {
        padding-left: 18px;
        padding-right: 18px;
    }
    .size-guide-wrapper {
        padding: 10px;
    }
    .custom-woo-contact-for-products {
        margin-bottom: 20px;
        position: static;
    }
	.woocommerce-products-header h1 {
		padding: 0;
	}
	body.page-popup-content {
	    padding: 20px;
	}
	body.page-popup-content h2 {
		font-size: 24px;
		margin-bottom: 20px;
	}
	.contact-for-products-frm_wrapper.gform_wrapper.gravity-theme input[type=color],
	.contact-for-products-frm_wrapper.gform_wrapper.gravity-theme input[type=date],
	.contact-for-products-frm_wrapper.gform_wrapper.gravity-theme input[type=datetime-local],
	.contact-for-products-frm_wrapper.gform_wrapper.gravity-theme input[type=datetime],
	.contact-for-products-frm_wrapper.gform_wrapper.gravity-theme input[type=email],
	.contact-for-products-frm_wrapper.gform_wrapper.gravity-theme input[type=month],
	.contact-for-products-frm_wrapper.gform_wrapper.gravity-theme input[type=number],
	.contact-for-products-frm_wrapper.gform_wrapper.gravity-theme input[type=password],
	.contact-for-products-frm_wrapper.gform_wrapper.gravity-theme input[type=search],
	.contact-for-products-frm_wrapper.gform_wrapper.gravity-theme input[type=tel],
	.contact-for-products-frm_wrapper.gform_wrapper.gravity-theme input[type=text],
	.contact-for-products-frm_wrapper.gform_wrapper.gravity-theme input[type=time],
	.contact-for-products-frm_wrapper.gform_wrapper.gravity-theme input[type=url],
	.contact-for-products-frm_wrapper.gform_wrapper.gravity-theme input[type=week],
	.contact-for-products-frm_wrapper.gform_wrapper.gravity-theme select {
		height: 42px;
	}
	.contact-for-products-frm_wrapper.gform_wrapper.gravity-theme textarea.medium {
		height: 80px;
	}
}

/*
 * Product image fit (G16, 28 May 2026).
 * WC's default thumbnails are square-cropped (object-fit: cover) which clips
 * tall garments (puffer hem cut off, hoodie hood cut off) and tall portrait
 * mockups like the bottle. Use object-fit: contain so the whole mockup is
 * visible. Letterbox area is white to look intentional.
 *
 * NOTE: the WooCommerce loop/archive cards (`ul.products li.product`) now get
 * their image box from the fixed-height rule in the PRODUCT CARD GRID block
 * above (height:240px). This G16 block now only covers the BLOCK grid
 * (`.wc-block-grid__products`, e.g. homepage featured-products blocks) which
 * still wants a square contain box.
 */
.wc-block-grid__products li.product img,
.wc-block-grid__products .wc-block-grid__product img {
	aspect-ratio: 1 / 1;
	width: 100%;
	height: auto;
	object-fit: contain;
	background-color: #ffffff;
}

/* Single-product main image - same treatment so the product page hero shows
   the whole mockup rather than a centered crop. */
.single-product div.product .woocommerce-product-gallery__image img {
	object-fit: contain;
	background-color: #ffffff;
}

/* Cascading variation gate: the Size dropdown is disabled until a Range is
   chosen (see assets/js/variation-range-gate.js). Give the gated state a clear
   greyed, not-allowed look so it reads as "pick a Range first". */
.variations_form select.range-gate-disabled,
.variations_form select[name="attribute_pa_size"]:disabled {
	cursor: not-allowed;
	opacity: 0.55;
	background-color: #f2f2f2;
}