/*
Theme Name: Wilsons Hunting & Outdoors
Theme URI: https://wilsonshunting.co.nz/
Author: Harry Stirling
Description: Custom WooCommerce theme for Wilsons Hunting & Outdoors — a firearms and outdoor gear retailer in Whanganui, New Zealand. Classic PHP theme (not a block theme).
Version: 0.1.0
Requires at least: 6.4
Tested up to: 6.7
Requires PHP: 8.0
License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Text Domain: wilsons
*/

:root {
    --wilsons-ink: #0B0B0B;
    --wilsons-gold: #E0A020;
    --wilsons-cream: #F5F1EA;
    --wilsons-ink-soft: #1a1a1a;
    --wilsons-line: rgba(245, 241, 234, 0.12);
    --wilsons-font: 'Archivo', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
}

*, *::before, *::after { box-sizing: border-box; }

html { -webkit-text-size-adjust: 100%; }

body {
    margin: 0;
    font-family: var(--wilsons-font);
    font-weight: 400;
    background: var(--wilsons-ink);
    color: var(--wilsons-cream);
    line-height: 1.5;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
}

a { color: var(--wilsons-gold); text-decoration: none; }
a:hover, a:focus { text-decoration: underline; }

img { max-width: 100%; height: auto; display: block; }

.wilsons-container { max-width: 1280px; margin: 0 auto; padding: 0 24px; }
.wilsons-main { padding: 48px 0 96px; }

/* ---------- Announcement bar ---------- */
.wilsons-announce {
    background: #000;
    color: var(--wilsons-cream);
    font-size: 12px;
    font-weight: 500;
    letter-spacing: 0.14em;
    text-transform: uppercase;
}
.wilsons-announce__inner {
    max-width: 1280px;
    margin: 0 auto;
    padding: 10px 24px;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 16px;
    text-align: center;
    flex-wrap: wrap;
}
.wilsons-announce__sep { color: var(--wilsons-gold); }

/* ---------- Header ---------- */
.wilsons-header {
    position: sticky;
    top: 0;
    z-index: 100;
    background: var(--wilsons-ink);
    border-bottom: 1px solid var(--wilsons-line);
    box-shadow: 0 2px 24px rgba(0, 0, 0, 0.6);
}
.wilsons-header__inner {
    max-width: 1280px;
    margin: 0 auto;
    padding: 18px 24px;
    display: grid;
    grid-template-columns: auto 1fr auto;
    align-items: center;
    gap: 32px;
}

/* Logo */
.wilsons-logo {
    display: inline-flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 2px;
    color: var(--wilsons-cream);
    text-decoration: none;
    line-height: 1;
}
.wilsons-logo:hover, .wilsons-logo:focus { text-decoration: none; }
.wilsons-logo__mark {
    font-weight: 900;
    font-size: 26px;
    letter-spacing: 0.02em;
    color: var(--wilsons-cream);
}
.wilsons-logo__sub {
    font-weight: 700;
    font-size: 10px;
    letter-spacing: 0.32em;
    color: var(--wilsons-gold);
    text-transform: uppercase;
}
.wilsons-logo .custom-logo { max-height: 56px; width: auto; }

/* Nav */
.wilsons-nav__list {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 28px;
}
.wilsons-nav__list a {
    color: var(--wilsons-cream);
    font-weight: 500;
    font-size: 14px;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    text-decoration: none;
    padding: 8px 0;
    border-bottom: 2px solid transparent;
    transition: color 0.15s ease, border-color 0.15s ease;
}
.wilsons-nav__list a:hover,
.wilsons-nav__list a:focus,
.wilsons-nav__list .current-menu-item > a {
    color: var(--wilsons-gold);
    border-bottom-color: var(--wilsons-gold);
}

/* Header actions */
.wilsons-header__actions {
    display: flex;
    align-items: center;
    gap: 20px;
}
.wilsons-header__action {
    color: var(--wilsons-cream);
    font-size: 13px;
    font-weight: 500;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    text-decoration: none;
}
.wilsons-header__action:hover,
.wilsons-header__action:focus { color: var(--wilsons-gold); text-decoration: none; }
.wilsons-header__cart { position: relative; padding-right: 22px; }
.wilsons-header__cart-count {
    position: absolute;
    top: -6px;
    right: 0;
    min-width: 18px;
    height: 18px;
    padding: 0 5px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    background: var(--wilsons-gold);
    color: var(--wilsons-ink);
    border-radius: 999px;
    font-size: 11px;
    font-weight: 700;
    line-height: 1;
}

/* ---------- Footer ---------- */
.wilsons-footer {
    background: #000;
    color: var(--wilsons-cream);
    border-top: 1px solid var(--wilsons-line);
    margin-top: 64px;
}
.wilsons-footer__inner {
    max-width: 1280px;
    margin: 0 auto;
    padding: 64px 24px 40px;
    display: grid;
    grid-template-columns: 1.4fr 1fr 1fr 1.2fr;
    gap: 48px;
}
.wilsons-footer__col { min-width: 0; }
.wilsons-footer__brand .wilsons-logo__mark { font-size: 24px; }
.wilsons-footer__blurb {
    margin: 16px 0 20px;
    color: rgba(245, 241, 234, 0.7);
    font-size: 14px;
    line-height: 1.6;
    max-width: 320px;
}
.wilsons-footer__social {
    display: inline-block;
    padding: 10px 18px;
    border: 1px solid var(--wilsons-gold);
    color: var(--wilsons-gold);
    font-size: 12px;
    font-weight: 700;
    letter-spacing: 0.14em;
    text-transform: uppercase;
    text-decoration: none;
    transition: background 0.15s ease, color 0.15s ease;
}
.wilsons-footer__social:hover,
.wilsons-footer__social:focus {
    background: var(--wilsons-gold);
    color: var(--wilsons-ink);
    text-decoration: none;
}
.wilsons-footer__heading {
    margin: 0 0 18px;
    font-size: 12px;
    font-weight: 700;
    letter-spacing: 0.2em;
    text-transform: uppercase;
    color: var(--wilsons-gold);
}
.wilsons-footer__heading--tight { margin-top: 24px; }
.wilsons-footer__list {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 10px;
}
.wilsons-footer__list a {
    color: rgba(245, 241, 234, 0.75);
    font-size: 14px;
    text-decoration: none;
    transition: color 0.15s ease;
}
.wilsons-footer__list a:hover,
.wilsons-footer__list a:focus { color: var(--wilsons-gold); text-decoration: none; }
.wilsons-footer__address {
    font-style: normal;
    color: rgba(245, 241, 234, 0.85);
    font-size: 14px;
    line-height: 1.7;
    margin-bottom: 12px;
}
.wilsons-footer__contact a {
    color: var(--wilsons-cream);
    font-size: 20px;
    font-weight: 700;
    letter-spacing: 0.02em;
    text-decoration: none;
}
.wilsons-footer__contact a:hover,
.wilsons-footer__contact a:focus { color: var(--wilsons-gold); text-decoration: none; }
.wilsons-footer__hours {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 6px;
    color: rgba(245, 241, 234, 0.75);
    font-size: 14px;
}
.wilsons-footer__hours li {
    display: flex;
    justify-content: space-between;
    gap: 16px;
}
.wilsons-footer__bottom {
    border-top: 1px solid var(--wilsons-line);
    padding: 20px 24px;
    text-align: center;
    color: rgba(245, 241, 234, 0.55);
    font-size: 12px;
    letter-spacing: 0.08em;
    text-transform: uppercase;
}
.wilsons-footer__bottom > p { margin: 0; }
.wilsons-footer__bottom > p + p { margin-top: 6px; }
.wilsons-footer__legal {
    font-size: 11px;
    letter-spacing: 0.02em;
    text-transform: none;
    color: rgba(245, 241, 234, 0.4);
}
.wilsons-footer__credit {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
    margin-top: 12px !important;
    font-size: 10px;
    letter-spacing: 0.2em;
    text-transform: uppercase;
    color: rgba(245, 241, 234, 0.35);
}
.wilsons-footer__credit img {
    display: block;
    width: 140px;
    height: auto;
    border-radius: 3px;
    opacity: 0.85;
    transition: opacity 0.15s ease;
}
.wilsons-footer__credit:hover img,
.wilsons-footer__credit a:hover img,
.wilsons-footer__credit a:focus img { opacity: 1; }

/* ---------- Mobile nav toggle (hamburger) ---------- */
.wilsons-nav-toggle {
    display: none;
    background: transparent;
    border: 0;
    padding: 8px;
    margin: 0;
    cursor: pointer;
    width: 40px;
    height: 40px;
    flex-direction: column;
    justify-content: center;
    gap: 5px;
    color: var(--wilsons-cream);
}
.wilsons-nav-toggle__bar {
    display: block;
    width: 22px;
    height: 2px;
    background: currentColor;
    transition: transform 0.2s ease, opacity 0.2s ease;
}
.wilsons-nav-backdrop {
    display: none;
    position: fixed;
    inset: 0;
    background: rgba(11, 11, 11, 0.7);
    z-index: 90;
}

/* ---------- Header/footer responsive ---------- */
@media (max-width: 960px) {
    .wilsons-header__inner {
        grid-template-columns: auto 1fr auto;
        gap: 12px;
        padding: 14px 20px;
    }
    .wilsons-nav-toggle { display: inline-flex; order: -1; margin-right: 4px; color: var(--wilsons-cream); }
    .wilsons-nav {
        position: fixed;
        top: 0;
        left: 0;
        width: min(320px, 82vw);
        height: 100vh;
        background: var(--wilsons-ink);
        border-right: 1px solid var(--wilsons-line);
        padding: 96px 24px 32px;
        transform: translateX(-100%);
        transition: transform 0.25s ease;
        z-index: 95;
        overflow-y: auto;
    }
    .wilsons-nav__list {
        flex-direction: column;
        align-items: flex-start;
        gap: 4px;
    }
    .wilsons-nav__list a {
        display: block;
        padding: 14px 0;
        font-size: 15px;
        width: 100%;
        border-bottom: 1px solid var(--wilsons-line);
    }
    .wilsons-nav__list a:hover,
    .wilsons-nav__list a:focus,
    .wilsons-nav__list .current-menu-item > a {
        border-bottom-color: var(--wilsons-gold);
    }
    body.wilsons-nav-open .wilsons-nav { transform: translateX(0); }
    body.wilsons-nav-open .wilsons-nav-backdrop { display: block; }
    body.wilsons-nav-open { overflow: hidden; }
    /* Hamburger animates to an X when open. */
    body.wilsons-nav-open .wilsons-nav-toggle__bar:nth-child(1) { transform: translateY(7px) rotate(45deg); }
    body.wilsons-nav-open .wilsons-nav-toggle__bar:nth-child(2) { opacity: 0; }
    body.wilsons-nav-open .wilsons-nav-toggle__bar:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }

    .wilsons-header__actions { gap: 14px; }
    .wilsons-footer__inner {
        grid-template-columns: 1fr 1fr;
        gap: 40px;
        padding: 56px 24px 32px;
    }
}
@media (max-width: 560px) {
    .wilsons-announce__inner { gap: 6px 12px; font-size: 10px; padding: 8px 16px; }
    /* Hide the phone-number line on small phones — the top bar is already tight. */
    .wilsons-announce__inner > span:nth-child(5),
    .wilsons-announce__inner > span:nth-child(6) { display: none; }
    .wilsons-header__inner { padding: 12px 16px; gap: 8px; }
    .wilsons-logo__mark { font-size: 20px; }
    .wilsons-logo__sub { font-size: 8px; letter-spacing: 0.24em; }
    .wilsons-header__actions { gap: 10px; }
    .wilsons-header__action { font-size: 11px; letter-spacing: 0.08em; }
    /* Drop the "Search" label on tiny screens — Account + Cart are the survival minimum. */
    .wilsons-header__action[aria-label="Search"] { display: none; }
    .wilsons-footer__inner {
        grid-template-columns: 1fr;
        padding: 48px 20px 32px;
        gap: 40px;
    }
}

/* =====================================================
   HOMEPAGE
   ===================================================== */

.wilsons-home .wilsons-main { padding: 0; }

/* Shared section head */
.wilsons-section-head {
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    gap: 24px;
    margin-bottom: 40px;
    flex-wrap: wrap;
}
.wilsons-section-head__intro {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
}
.wilsons-section-head--center { justify-content: center; text-align: center; }
.wilsons-section-head--center .wilsons-section-head__intro { align-items: center; }
.wilsons-eyebrow {
    display: inline-block;
    font-size: 12px;
    font-weight: 700;
    letter-spacing: 0.22em;
    text-transform: uppercase;
    color: var(--wilsons-gold);
    margin-bottom: 8px;
}
.wilsons-eyebrow--dark { color: var(--wilsons-ink); }
.wilsons-section-title {
    margin: 0;
    font-size: clamp(28px, 4vw, 42px);
    font-weight: 900;
    letter-spacing: -0.01em;
    line-height: 1.1;
    color: var(--wilsons-cream);
}
.wilsons-section-link {
    color: var(--wilsons-gold);
    font-size: 13px;
    font-weight: 700;
    letter-spacing: 0.14em;
    text-transform: uppercase;
    text-decoration: none;
    white-space: nowrap;
}
.wilsons-section-link:hover, .wilsons-section-link:focus { text-decoration: underline; }

/* Buttons */
.wilsons-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 14px 28px;
    font-size: 13px;
    font-weight: 700;
    letter-spacing: 0.16em;
    text-transform: uppercase;
    text-decoration: none;
    border: 2px solid transparent;
    cursor: pointer;
    transition: background 0.15s ease, color 0.15s ease, border-color 0.15s ease;
}
.wilsons-btn--small { padding: 10px 18px; font-size: 12px; }
.wilsons-btn--gold {
    background: var(--wilsons-gold);
    color: var(--wilsons-ink);
    border-color: var(--wilsons-gold);
}
.wilsons-btn--gold:hover, .wilsons-btn--gold:focus {
    background: transparent;
    color: var(--wilsons-gold);
    text-decoration: none;
}
.wilsons-btn--ghost {
    background: transparent;
    color: var(--wilsons-cream);
    border-color: var(--wilsons-cream);
}
.wilsons-btn--ghost:hover, .wilsons-btn--ghost:focus {
    background: var(--wilsons-cream);
    color: var(--wilsons-ink);
    text-decoration: none;
}
.wilsons-btn--dark {
    background: var(--wilsons-ink);
    color: var(--wilsons-cream);
    border-color: var(--wilsons-ink);
}
.wilsons-btn--dark:hover, .wilsons-btn--dark:focus {
    background: transparent;
    color: var(--wilsons-ink);
    text-decoration: none;
}

/* ---------- Hero ---------- */
.wilsons-hero {
    position: relative;
    min-height: 640px;
    background-color: var(--wilsons-ink);
    background-position: center;
    background-size: cover;
    background-repeat: no-repeat;
    display: flex;
    align-items: center;
    color: var(--wilsons-cream);
    overflow: hidden;
}
.wilsons-hero__overlay {
    position: absolute; inset: 0;
    /* Diagonal darkens the left text-zone (guarantees 4.5:1 for gold eyebrow
       over bright forest highlights) and lets the image breathe on the right. */
    background:
        linear-gradient(105deg, rgba(11,11,11,0.86) 0%, rgba(11,11,11,0.72) 45%, rgba(11,11,11,0.4) 100%),
        linear-gradient(180deg, rgba(11,11,11,0) 0%, rgba(11,11,11,0.35) 100%);
}
.wilsons-hero__inner {
    position: relative;
    width: 100%;
    max-width: 1280px;
    margin: 0 auto;
    padding: 120px 24px;
}
.wilsons-hero__text {
    max-width: 640px;
}
.wilsons-hero__eyebrow {
    display: inline-block;
    font-size: 13px;
    font-weight: 700;
    letter-spacing: 0.22em;
    text-transform: uppercase;
    color: var(--wilsons-gold);
    margin-bottom: 20px;
}
.wilsons-hero__title {
    margin: 0 0 20px;
    font-size: clamp(40px, 6vw, 72px);
    font-weight: 900;
    line-height: 1.02;
    letter-spacing: -0.02em;
}
.wilsons-hero__lead {
    margin: 0 0 36px;
    font-size: 18px;
    line-height: 1.55;
    color: rgba(245, 241, 234, 0.88);
}
.wilsons-hero__ctas { display: flex; gap: 14px; flex-wrap: wrap; }

/* ---------- Trust strip ---------- */
.wilsons-trust {
    background: var(--wilsons-ink-soft);
    border-top: 1px solid var(--wilsons-line);
    border-bottom: 1px solid var(--wilsons-line);
}
.wilsons-trust__inner {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 32px;
    padding: 32px 24px;
}
.wilsons-trust__item { text-align: center; }
.wilsons-trust__title {
    margin: 0 0 4px;
    font-size: 14px;
    font-weight: 700;
    letter-spacing: 0.14em;
    text-transform: uppercase;
    color: var(--wilsons-gold);
}
.wilsons-trust__desc {
    margin: 0;
    font-size: 14px;
    color: rgba(245, 241, 234, 0.75);
}

/* ---------- Featured products ---------- */
.wilsons-featured { padding: 96px 0; background: var(--wilsons-ink); }
.wilsons-products {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 24px;
}
.wilsons-product {
    background: var(--wilsons-ink-soft);
    border: 1px solid var(--wilsons-line);
    display: flex;
    flex-direction: column;
    transition: border-color 0.15s ease, transform 0.15s ease;
}
.wilsons-product:hover { border-color: var(--wilsons-gold); transform: translateY(-2px); }
.wilsons-product__media {
    position: relative;
    display: block;
    aspect-ratio: 1 / 1;
    background: #ffffff;
    overflow: hidden;
    padding: 4%;
    box-sizing: border-box;
}
.wilsons-product__media img,
.wilsons-product__img {
    width: 100%;
    height: 100%;
    object-fit: contain;
    object-position: center;
    display: block;
    margin: 0;
}
/* Beats Woo core: `.woocommerce ul.products li.product a img { height: auto }` */
.woocommerce ul.products li.product .wilsons-product__media img,
.woocommerce ul.products li.product .wilsons-product__img {
    width: 100%;
    height: 100%;
    object-fit: contain;
    object-position: center;
    display: block;
    margin: 0;
}
.wilsons-product__badge {
    position: absolute;
    top: 12px;
    left: 12px;
    padding: 4px 10px;
    background: var(--wilsons-gold);
    color: var(--wilsons-ink);
    font-size: 11px;
    font-weight: 700;
    letter-spacing: 0.14em;
    text-transform: uppercase;
}
.wilsons-product__body { padding: 20px; display: flex; flex-direction: column; gap: 10px; flex: 1; }
.wilsons-product__title {
    margin: 0;
    font-size: 15px;
    font-weight: 700;
    line-height: 1.35;
}
.wilsons-product__title a { color: var(--wilsons-cream); text-decoration: none; }
.wilsons-product__title a:hover { color: var(--wilsons-gold); }
.wilsons-product__price {
    color: var(--wilsons-gold);
    font-weight: 700;
    font-size: 16px;
}
.wilsons-product__price del { color: rgba(245, 241, 234, 0.4); font-weight: 400; margin-right: 6px; }
.wilsons-product__body .wilsons-btn { margin-top: auto; align-self: flex-start; }
.wilsons-empty { color: rgba(245, 241, 234, 0.6); font-size: 14px; }

/* ---------- Departments ---------- */
.wilsons-departments { padding: 96px 0; background: var(--wilsons-ink-soft); }
.wilsons-departments__grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 20px;
}
.wilsons-dept {
    position: relative;
    display: block;
    aspect-ratio: 4 / 3;
    background-color: #1c1c1c;
    /* contain + content-box + padding: icon fits inside a safe zone that
       stops above the label band, whole icon always visible, no crop. */
    background-size: contain;
    background-position: center;
    background-repeat: no-repeat;
    background-origin: content-box;
    padding: 28px 28px 76px 28px;
    color: var(--wilsons-cream);
    text-decoration: none;
    overflow: hidden;
    border: 1px solid var(--wilsons-line);
    transition: transform 0.2s ease;
}
.wilsons-dept:hover { transform: translateY(-3px); text-decoration: none; }
.wilsons-dept--empty {
    background: linear-gradient(135deg, #1a1a1a 0%, #0b0b0b 100%);
}
.wilsons-dept__overlay {
    position: absolute; inset: 0;
    /* Overlay confined to the bottom label band — top 65% is fully clear
       so gold-silhouette category icons keep their vibrance. */
    background: linear-gradient(180deg,
        rgba(11,11,11,0) 65%,
        rgba(11,11,11,0.6) 82%,
        rgba(11,11,11,0.94) 100%);
    transition: background 0.2s ease;
    pointer-events: none;
}
.wilsons-dept:hover .wilsons-dept__overlay {
    background: linear-gradient(180deg,
        rgba(11,11,11,0) 55%,
        rgba(11,11,11,0.7) 78%,
        rgba(11,11,11,0.96) 100%);
}
.wilsons-dept__label {
    position: absolute;
    left: 0;
    right: 0;
    bottom: 0;
    padding: 24px 28px;
    font-size: 22px;
    font-weight: 900;
    letter-spacing: 0.02em;
    text-transform: uppercase;
    line-height: 1;
}
.wilsons-dept:hover .wilsons-dept__label { color: var(--wilsons-gold); }

/* ---------- Finance Now band ---------- */
.wilsons-finance {
    background: var(--wilsons-gold);
    color: var(--wilsons-ink);
}
.wilsons-finance__inner {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 40px;
    padding: 56px 24px;
    flex-wrap: wrap;
}
.wilsons-finance__text { max-width: 720px; }
.wilsons-finance__title {
    margin: 0 0 10px;
    font-size: clamp(24px, 3.4vw, 36px);
    font-weight: 900;
    line-height: 1.15;
    letter-spacing: -0.01em;
    color: var(--wilsons-ink);
}
.wilsons-finance__lead {
    margin: 0;
    font-size: 16px;
    line-height: 1.55;
    color: rgba(11, 11, 11, 0.82);
}

/* ---------- Brands ---------- */
.wilsons-brands { padding: 80px 0; background: var(--wilsons-ink); }
.wilsons-brands__strip {
    display: flex;
    align-items: center;
    justify-content: center;
    flex-wrap: wrap;
    gap: 48px;
    padding: 32px 0;
    border-top: 1px solid var(--wilsons-line);
    border-bottom: 1px solid var(--wilsons-line);
}
.wilsons-brands__item {
    font-family: var(--wilsons-font);
    font-size: 20px;
    font-weight: 900;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: rgba(245, 241, 234, 0.55);
    transition: color 0.15s ease;
}
.wilsons-brands__item:hover { color: var(--wilsons-gold); }

/* ---------- Visit ---------- */
.wilsons-visit {
    position: relative;
    background-color: var(--wilsons-ink);
    background-size: cover;
    background-position: center;
    background-repeat: no-repeat;
    color: var(--wilsons-cream);
    overflow: hidden;
}
.wilsons-visit__overlay {
    position: absolute; inset: 0;
    background: linear-gradient(90deg, rgba(11,11,11,0.92) 0%, rgba(11,11,11,0.7) 60%, rgba(11,11,11,0.55) 100%);
}
.wilsons-visit__inner {
    position: relative;
    padding: 96px 24px;
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
    gap: 64px;
    align-items: center;
}
.wilsons-visit__text { max-width: 640px; }
.wilsons-visit__map {
    position: relative;
    aspect-ratio: 4 / 3;
    min-height: 360px;
    border: 1px solid rgba(224, 160, 32, 0.35);
    overflow: hidden;
}
.wilsons-visit__map iframe {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    border: 0;
    filter: brightness(0.92) saturate(0.95);
}
.wilsons-visit__title {
    margin: 0 0 16px;
    font-size: clamp(28px, 4vw, 44px);
    font-weight: 900;
    line-height: 1.1;
    letter-spacing: -0.01em;
}
.wilsons-visit__lead {
    margin: 0 0 32px;
    font-size: 17px;
    line-height: 1.55;
    color: rgba(245, 241, 234, 0.85);
}
.wilsons-visit__facts {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 28px;
    margin-bottom: 36px;
}
.wilsons-visit__fact h4 {
    margin: 0 0 6px;
    font-size: 11px;
    font-weight: 700;
    letter-spacing: 0.22em;
    text-transform: uppercase;
    color: var(--wilsons-gold);
}
.wilsons-visit__fact p {
    margin: 0;
    font-size: 15px;
    line-height: 1.5;
    color: var(--wilsons-cream);
}
.wilsons-visit__fact a { color: var(--wilsons-cream); text-decoration: none; }
.wilsons-visit__fact a:hover { color: var(--wilsons-gold); }

/* ---------- Home responsive ---------- */
@media (max-width: 1080px) {
    .wilsons-products { grid-template-columns: repeat(3, 1fr); }
    .wilsons-trust__inner { grid-template-columns: repeat(2, 1fr); gap: 24px; }
}
@media (max-width: 780px) {
    .wilsons-hero { min-height: 520px; }
    .wilsons-hero__inner { padding: 80px 24px; }
    /* Text fills viewport width on mobile — swap the diagonal for a uniform
       vertical darken so the eyebrow + lead still hit 4.5:1. */
    .wilsons-hero__overlay {
        background: linear-gradient(180deg, rgba(11,11,11,0.78) 0%, rgba(11,11,11,0.9) 100%);
    }
    .wilsons-products { grid-template-columns: repeat(2, 1fr); gap: 16px; }
    .wilsons-departments__grid { grid-template-columns: repeat(2, 1fr); }
    .wilsons-visit__facts { grid-template-columns: 1fr; gap: 20px; }
    .wilsons-featured, .wilsons-departments, .wilsons-brands { padding: 64px 0; }
    .wilsons-visit__inner {
        padding: 64px 24px;
        grid-template-columns: 1fr;
        gap: 40px;
    }
    .wilsons-visit__map { min-height: 300px; }
    .wilsons-finance__inner { padding: 40px 24px; }
}
@media (max-width: 560px) {
    .wilsons-departments__grid { grid-template-columns: 1fr; }
    .wilsons-trust__inner { grid-template-columns: 1fr; }
    .wilsons-section-head { flex-direction: column; align-items: flex-start; }
}
/* Keep product cards 2-up on phones — collapse to 1-col only on very tiny screens. */
@media (max-width: 360px) {
    .wilsons-products { grid-template-columns: 1fr; }
}

/* =====================================================
   INTERIOR PAGES (About, Contact)
   ===================================================== */

.wilsons-page .wilsons-main { padding: 0; }

/* Compact page hero shared by About & Contact */
.wilsons-page-hero {
    position: relative;
    background-color: var(--wilsons-ink-soft);
    background-size: cover;
    background-position: center;
    background-repeat: no-repeat;
    color: var(--wilsons-cream);
    overflow: hidden;
}
.wilsons-page-hero__overlay {
    position: absolute; inset: 0;
    /* Bumped from 0.7→0.88 to 0.78→0.9 — About hero image is a bright
       fluorescent-lit interior; the extra headroom keeps the gold eyebrow
       and lead paragraph above 4.5:1 over the ceiling highlights. */
    background: linear-gradient(180deg, rgba(11,11,11,0.78) 0%, rgba(11,11,11,0.9) 100%);
}
.wilsons-page-hero__inner {
    position: relative;
    padding: 96px 24px;
    max-width: 1280px;
    margin: 0 auto;
}
.wilsons-page-hero--compact .wilsons-page-hero__inner { padding: 72px 24px; }
.wilsons-page-hero__title {
    margin: 12px 0 20px;
    font-size: clamp(32px, 4.6vw, 54px);
    font-weight: 900;
    line-height: 1.08;
    letter-spacing: -0.015em;
    max-width: 720px;
}
.wilsons-page-hero__lead {
    margin: 0;
    font-size: 17px;
    line-height: 1.55;
    max-width: 640px;
    color: rgba(245, 241, 234, 0.85);
}

/* ---------- About: Story ---------- */
.wilsons-story { padding: 96px 0; background: var(--wilsons-ink); }
.wilsons-story__inner {
    display: grid;
    grid-template-columns: 1.1fr 1fr;
    gap: 64px;
    align-items: center;
}
.wilsons-story__text .wilsons-eyebrow { margin-bottom: 12px; }
.wilsons-story__text .wilsons-section-title { margin-bottom: 20px; }
.wilsons-story__text p {
    margin: 0 0 16px;
    font-size: 16px;
    line-height: 1.7;
    color: rgba(245, 241, 234, 0.82);
}
.wilsons-story__image {
    aspect-ratio: 4 / 5;
    background-color: var(--wilsons-ink-soft);
    background-size: cover;
    background-position: center;
    background-repeat: no-repeat;
    border: 1px solid var(--wilsons-line);
}

/* ---------- About: Values ---------- */
.wilsons-values { padding: 96px 0; background: var(--wilsons-ink-soft); }
.wilsons-values__grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 20px;
}
.wilsons-value {
    padding: 28px;
    background: var(--wilsons-ink);
    border: 1px solid var(--wilsons-line);
    border-top: 3px solid var(--wilsons-gold);
}
.wilsons-value__title {
    margin: 0 0 12px;
    font-size: 18px;
    font-weight: 700;
    letter-spacing: 0.01em;
    color: var(--wilsons-cream);
}
.wilsons-value__body {
    margin: 0;
    font-size: 14px;
    line-height: 1.6;
    color: rgba(245, 241, 234, 0.75);
}

/* ---------- About: CTA band ---------- */
.wilsons-cta-band {
    background: var(--wilsons-ink);
    border-top: 1px solid var(--wilsons-line);
}
.wilsons-cta-band__inner {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 32px;
    padding: 64px 24px;
    flex-wrap: wrap;
}
.wilsons-cta-band__title {
    margin: 0;
    font-size: clamp(24px, 3vw, 34px);
    font-weight: 900;
    line-height: 1.15;
    color: var(--wilsons-cream);
}

/* ---------- Contact: Reach us ---------- */
.wilsons-reach { padding: 96px 0; background: var(--wilsons-ink); }
.wilsons-reach__inner {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 64px;
    align-items: start;
}
.wilsons-reach__details .wilsons-eyebrow { margin-bottom: 12px; }
.wilsons-reach__details .wilsons-section-title { margin-bottom: 32px; }
.wilsons-reach__list {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 28px;
}
.wilsons-reach__list > li h4 {
    margin: 0 0 6px;
    font-size: 11px;
    font-weight: 700;
    letter-spacing: 0.22em;
    text-transform: uppercase;
    color: var(--wilsons-gold);
}
.wilsons-reach__list > li p {
    margin: 0;
    font-size: 17px;
    color: var(--wilsons-cream);
}
.wilsons-reach__list a { color: var(--wilsons-cream); text-decoration: none; }
.wilsons-reach__list a:hover { color: var(--wilsons-gold); }
.wilsons-reach__hours {
    list-style: none;
    margin: 8px 0 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 6px;
    color: rgba(245, 241, 234, 0.85);
    font-size: 15px;
}
.wilsons-reach__hours li {
    display: flex;
    justify-content: space-between;
    max-width: 280px;
    gap: 16px;
}
.wilsons-reach__map {
    min-height: 480px;
    background: var(--wilsons-ink-soft);
    border: 1px solid var(--wilsons-line);
    overflow: hidden;
}
.wilsons-reach__map iframe {
    display: block;
    width: 100%;
    height: 100%;
    min-height: inherit;
    border: 0;
    /* Google Maps embeds are naturally light — dim slightly so the tile UI
       reads as part of the dark palette, not a bright interruption. */
    filter: brightness(0.92) saturate(0.95);
}

/* ---------- Contact: Enquiry form ---------- */
.wilsons-enquiry { padding: 96px 0; background: var(--wilsons-ink-soft); }
.wilsons-enquiry__inner { max-width: 780px; margin: 0 auto; }
.wilsons-enquiry__form {
    background: var(--wilsons-ink);
    border: 1px solid var(--wilsons-line);
    padding: 40px;
}
.wilsons-enquiry__placeholder {
    text-align: center;
    padding: 32px 20px;
    color: rgba(245, 241, 234, 0.75);
}
.wilsons-enquiry__placeholder p { margin: 0 0 8px; }
.wilsons-enquiry__placeholder strong { color: var(--wilsons-gold); }

/* Fluent Forms overrides so its output sits on the dark theme. */
.wilsons-enquiry__form .ff-el-form-control,
.wilsons-enquiry__form input:not([type="submit"]):not([type="checkbox"]):not([type="radio"]),
.wilsons-enquiry__form textarea,
.wilsons-enquiry__form select {
    background: var(--wilsons-ink-soft);
    border: 1px solid var(--wilsons-line);
    color: var(--wilsons-cream);
    padding: 12px 14px;
    font-family: var(--wilsons-font);
    font-size: 15px;
    width: 100%;
}
.wilsons-enquiry__form input:focus,
.wilsons-enquiry__form textarea:focus,
.wilsons-enquiry__form select:focus {
    outline: none;
    border-color: var(--wilsons-gold);
}
.wilsons-enquiry__form label {
    color: var(--wilsons-cream);
    font-size: 13px;
    font-weight: 700;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    margin-bottom: 6px;
    display: block;
}
.wilsons-enquiry__form button,
.wilsons-enquiry__form input[type="submit"] {
    background: var(--wilsons-gold);
    color: var(--wilsons-ink);
    border: 2px solid var(--wilsons-gold);
    padding: 14px 28px;
    font-family: var(--wilsons-font);
    font-size: 13px;
    font-weight: 700;
    letter-spacing: 0.16em;
    text-transform: uppercase;
    cursor: pointer;
    transition: background 0.15s ease, color 0.15s ease;
}
.wilsons-enquiry__form button:hover,
.wilsons-enquiry__form input[type="submit"]:hover {
    background: transparent;
    color: var(--wilsons-gold);
}

/* Fluent Forms — specific class hooks the generic rules above don't catch. */
.wilsons-enquiry__form .frm-fluent-form { color: var(--wilsons-cream); }
.wilsons-enquiry__form .ff-el-group { margin-bottom: 20px; }
.wilsons-enquiry__form .ff-el-input--label label,
.wilsons-enquiry__form .ff-el-form-check-label {
    color: var(--wilsons-cream);
    font-size: 13px;
    font-weight: 700;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    margin-bottom: 6px;
    display: block;
}
.wilsons-enquiry__form .ff-el-form-check-label {
    text-transform: none;
    letter-spacing: 0.02em;
    font-weight: 400;
    font-size: 14px;
}
.wilsons-enquiry__form .ff-el-is-required.asterisk-right label::after {
    color: var(--wilsons-gold);
}
.wilsons-enquiry__form input[type="checkbox"],
.wilsons-enquiry__form input[type="radio"] {
    accent-color: var(--wilsons-gold);
    width: 18px;
    height: 18px;
}
/* Fluent Forms submit — the form builder's "Style" tab writes an inline
   background/color on the button, so we must !important the theme colour. */
.wilsons-enquiry__form .ff-btn,
.wilsons-enquiry__form .ff_btn_style,
.wilsons-enquiry__form button.ff-btn-submit,
.wilsons-enquiry__form button[type="submit"],
.wilsons-enquiry__form input[type="submit"] {
    background: var(--wilsons-gold) !important;
    background-color: var(--wilsons-gold) !important;
    color: var(--wilsons-ink) !important;
    border: 2px solid var(--wilsons-gold) !important;
    padding: 14px 28px !important;
    font-family: var(--wilsons-font) !important;
    font-size: 13px !important;
    font-weight: 700 !important;
    letter-spacing: 0.16em !important;
    text-transform: uppercase !important;
    border-radius: 0 !important;
    box-shadow: none !important;
    cursor: pointer;
    transition: background 0.15s ease, color 0.15s ease;
}
.wilsons-enquiry__form .ff-btn:hover,
.wilsons-enquiry__form button.ff-btn-submit:hover,
.wilsons-enquiry__form button[type="submit"]:hover,
.wilsons-enquiry__form input[type="submit"]:hover {
    background: transparent !important;
    background-color: transparent !important;
    color: var(--wilsons-gold) !important;
}
.wilsons-enquiry__form .ff-el-input--content .text-danger,
.wilsons-enquiry__form .ff-el-is-error .error {
    color: #ff8b8b;
    font-size: 12px;
    letter-spacing: 0.02em;
    text-transform: none;
    font-weight: 500;
    margin-top: 4px;
}
.wilsons-enquiry__form .ff-message-success,
.wilsons-enquiry__form .ff_message_success {
    background: var(--wilsons-ink-soft);
    border-left: 3px solid var(--wilsons-gold);
    color: var(--wilsons-cream);
    padding: 16px 20px;
    font-size: 14px;
}
.wilsons-enquiry__form .ff-errors-in-stack {
    background: rgba(255, 139, 139, 0.08);
    border-left: 3px solid #ff8b8b;
    color: #ff8b8b;
    padding: 12px 16px;
    font-size: 13px;
    margin-bottom: 16px;
}

/* ---------- Page responsive ---------- */
@media (max-width: 960px) {
    .wilsons-story__inner { grid-template-columns: 1fr; gap: 48px; }
    /* Story image is portrait (~3:4) — keep the slot portrait on mobile too
       so we don't crop rifle-rack content into a landscape band. */
    .wilsons-story__image { aspect-ratio: 4 / 5; max-height: 60vh; }
    .wilsons-values__grid { grid-template-columns: repeat(2, 1fr); }
    .wilsons-reach__inner { grid-template-columns: 1fr; gap: 48px; }
    .wilsons-reach__map { min-height: 320px; }
}
@media (max-width: 560px) {
    .wilsons-page-hero__inner { padding: 64px 24px; }
    .wilsons-story, .wilsons-values, .wilsons-reach, .wilsons-enquiry { padding: 64px 0; }
    .wilsons-values__grid { grid-template-columns: 1fr; }
    .wilsons-enquiry__form { padding: 24px; }
}

/* =====================================================
   WOOCOMMERCE — reskin only, keep functionality intact
   ===================================================== */

.wilsons-shop .wilsons-main,
.wilsons-single .wilsons-main { padding: 0; }

/* Screen-reader helper (Woo needs one). */
.screen-reader-text {
    position: absolute;
    width: 1px; height: 1px;
    padding: 0; margin: -1px;
    overflow: hidden; clip: rect(0,0,0,0);
    white-space: nowrap; border: 0;
}

/* ---------- Shop toolbar ---------- */
.wilsons-shop-toolbar {
    background: var(--wilsons-ink-soft);
    border-bottom: 1px solid var(--wilsons-line);
}
.wilsons-shop-toolbar__inner {
    padding: 28px 24px;
    display: flex;
    flex-direction: column;
    gap: 20px;
}
.wilsons-shop-search { display: flex; gap: 0; max-width: 520px; width: 100%; }
.wilsons-shop-search input[type="search"] {
    flex: 1;
    background: var(--wilsons-ink);
    border: 1px solid var(--wilsons-line);
    color: var(--wilsons-cream);
    padding: 12px 16px;
    font-family: var(--wilsons-font);
    font-size: 15px;
}
.wilsons-shop-search input[type="search"]:focus {
    outline: none;
    border-color: var(--wilsons-gold);
}
.wilsons-shop-search button {
    background: var(--wilsons-gold);
    color: var(--wilsons-ink);
    border: 1px solid var(--wilsons-gold);
    padding: 12px 24px;
    font-family: var(--wilsons-font);
    font-size: 13px;
    font-weight: 700;
    letter-spacing: 0.14em;
    text-transform: uppercase;
    cursor: pointer;
    transition: background 0.15s ease, color 0.15s ease;
}
.wilsons-shop-search button:hover { background: transparent; color: var(--wilsons-gold); }

.wilsons-shop-cats {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
}
.wilsons-shop-cat {
    display: inline-flex;
    align-items: center;
    padding: 8px 16px;
    background: var(--wilsons-ink);
    border: 1px solid var(--wilsons-line);
    color: rgba(245, 241, 234, 0.8);
    font-size: 12px;
    font-weight: 700;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    text-decoration: none;
    transition: border-color 0.15s ease, color 0.15s ease, background 0.15s ease;
}
.wilsons-shop-cat:hover, .wilsons-shop-cat:focus {
    border-color: var(--wilsons-gold);
    color: var(--wilsons-gold);
    text-decoration: none;
}
.wilsons-shop-cat.is-active {
    background: var(--wilsons-gold);
    border-color: var(--wilsons-gold);
    color: var(--wilsons-ink);
}
.wilsons-shop-cats--sub {
    margin-top: 10px;
    padding-top: 10px;
    border-top: 1px solid var(--wilsons-line);
}
.wilsons-shop-cats--sub .wilsons-shop-cat {
    padding: 6px 12px;
    font-size: 11px;
    letter-spacing: 0.1em;
}

/* ---------- Product grid (Woo ul.products) ---------- */
.wilsons-shop-grid { padding: 64px 0 96px; background: var(--wilsons-ink); }
.woocommerce ul.products,
.woocommerce-page ul.products {
    list-style: none;
    margin: 0;
    padding: 0;
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 24px;
}
.woocommerce ul.products::before,
.woocommerce ul.products::after { content: none; display: none; }
/* Override Woo core `woocommerce-layout.css` which forces every li.product to
   width:22.05% + float:left based on the `columns-4` filter. We're using CSS
   Grid on ul.products; the floats have to lose. !important because the Woo
   sheet has equal-specificity selectors like `ul.products.columns-4 li.product`
   that outrank a plain override. */
.woocommerce ul.products li.product,
.woocommerce-page ul.products li.product,
.woocommerce ul.products.columns-2 li.product,
.woocommerce ul.products.columns-3 li.product,
.woocommerce ul.products.columns-4 li.product,
.woocommerce ul.products.columns-5 li.product,
.woocommerce ul.products.columns-6 li.product {
    width: auto !important;
    margin: 0 !important;
    padding: 0;
    float: none !important;
    clear: none !important;
}
/* Product card (shared with front-page featured) */
li.product.wilsons-product {
    background: var(--wilsons-ink-soft);
    border: 1px solid var(--wilsons-line);
    display: flex;
    flex-direction: column;
    transition: border-color 0.15s ease, transform 0.15s ease;
}
li.product.wilsons-product:hover { border-color: var(--wilsons-gold); transform: translateY(-2px); }

/* Pagination */
.woocommerce nav.woocommerce-pagination {
    margin-top: 48px;
    text-align: center;
}
.woocommerce nav.woocommerce-pagination ul {
    display: inline-flex;
    gap: 6px;
    border: 0;
    margin: 0;
    padding: 0;
    list-style: none;
}
.woocommerce nav.woocommerce-pagination ul li { border: 0; margin: 0; }
.woocommerce nav.woocommerce-pagination ul li a,
.woocommerce nav.woocommerce-pagination ul li span {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 40px;
    height: 40px;
    padding: 0 12px;
    background: var(--wilsons-ink-soft);
    border: 1px solid var(--wilsons-line);
    color: var(--wilsons-cream);
    font-size: 14px;
    font-weight: 700;
    text-decoration: none;
    transition: border-color 0.15s ease, color 0.15s ease;
}
.woocommerce nav.woocommerce-pagination ul li a:hover,
.woocommerce nav.woocommerce-pagination ul li span.current {
    border-color: var(--wilsons-gold);
    color: var(--wilsons-gold);
    background: var(--wilsons-ink);
}

/* Result count + sort dropdown */
.woocommerce .woocommerce-result-count,
.woocommerce .woocommerce-ordering {
    color: rgba(245, 241, 234, 0.75);
    font-size: 14px;
    margin-bottom: 16px;
}
.woocommerce .woocommerce-ordering select {
    background: var(--wilsons-ink-soft);
    border: 1px solid var(--wilsons-line);
    color: var(--wilsons-cream);
    padding: 8px 12px;
    font-family: var(--wilsons-font);
    font-size: 14px;
}

/* ---------- Single product ---------- */
.wilsons-single { padding: 64px 0 96px; background: var(--wilsons-ink); color: var(--wilsons-cream); }
.wilsons-single .product {
    display: grid;
    grid-template-columns: 1.1fr 1fr;
    gap: 64px;
    align-items: start;
}
.wilsons-single .woocommerce-product-gallery {
    width: auto !important;
    float: none !important;
    background: var(--wilsons-ink-soft);
    border: 1px solid var(--wilsons-line);
    padding: 16px;
}
.wilsons-single .woocommerce-product-gallery__wrapper img { display: block; width: 100%; height: auto; }
.wilsons-single .flex-control-thumbs {
    display: flex;
    gap: 8px;
    margin: 12px 0 0;
    padding: 0;
    list-style: none;
}
.wilsons-single .flex-control-thumbs li { width: 72px; }
.wilsons-single .flex-control-thumbs img { border: 1px solid var(--wilsons-line); cursor: pointer; }
.wilsons-single .flex-control-thumbs img.flex-active { border-color: var(--wilsons-gold); }

.wilsons-single .summary.entry-summary {
    width: auto !important;
    float: none !important;
    margin: 0;
}
.wilsons-single .product_title {
    margin: 0 0 12px;
    font-size: clamp(28px, 3.4vw, 40px);
    font-weight: 900;
    line-height: 1.15;
    letter-spacing: -0.01em;
    color: var(--wilsons-cream);
}
.wilsons-single .price,
.wilsons-single .price .woocommerce-Price-amount,
.wilsons-single .price .woocommerce-Price-currencySymbol {
    color: var(--wilsons-gold);
    font-size: 28px;
    font-weight: 900;
    margin-bottom: 20px;
    letter-spacing: -0.01em;
}
.wilsons-single .price small,
.wilsons-single .price .woocommerce-price-suffix {
    color: rgba(245, 241, 234, 0.55);
    font-size: 13px;
    font-weight: 400;
    letter-spacing: 0.04em;
    margin-left: 6px;
}
.wilsons-single .price del {
    color: rgba(245, 241, 234, 0.4);
    font-weight: 400;
    margin-right: 8px;
}
.wilsons-single .woocommerce-product-details__short-description {
    color: rgba(245, 241, 234, 0.85);
    font-size: 16px;
    line-height: 1.65;
    margin-bottom: 24px;
}
.wilsons-single .product_meta {
    margin-top: 24px;
    padding-top: 20px;
    border-top: 1px solid var(--wilsons-line);
    color: rgba(245, 241, 234, 0.65);
    font-size: 13px;
    letter-spacing: 0.04em;
}
.wilsons-single .product_meta a { color: var(--wilsons-gold); text-decoration: none; }

/* Quantity + add-to-cart */
.wilsons-single form.cart {
    display: flex;
    flex-wrap: wrap;
    gap: 12px;
    align-items: center;
    margin-bottom: 8px;
}
.wilsons-single .quantity input.qty {
    width: 72px;
    background: var(--wilsons-ink-soft);
    border: 1px solid var(--wilsons-line);
    color: var(--wilsons-cream);
    padding: 12px;
    text-align: center;
    font-family: var(--wilsons-font);
    font-size: 15px;
}
.wilsons-single .variations select {
    background: var(--wilsons-ink-soft);
    border: 1px solid var(--wilsons-line);
    color: var(--wilsons-cream);
    padding: 10px 12px;
    font-family: var(--wilsons-font);
    font-size: 15px;
}
.wilsons-single .variations th { color: rgba(245, 241, 234, 0.85); font-weight: 700; }

/* Tabs */
.wilsons-single .woocommerce-tabs {
    margin-top: 64px;
    grid-column: 1 / -1;
}
.wilsons-single .woocommerce-tabs ul.tabs {
    list-style: none;
    margin: 0 0 24px;
    padding: 0;
    display: flex;
    gap: 4px;
    border-bottom: 1px solid var(--wilsons-line);
}
.wilsons-single .woocommerce-tabs ul.tabs::before { content: none; display: none; }
.wilsons-single .woocommerce-tabs ul.tabs li {
    background: transparent;
    border: 0;
    padding: 0;
    margin: 0;
    border-radius: 0;
}
.wilsons-single .woocommerce-tabs ul.tabs li a {
    display: block;
    padding: 14px 20px;
    color: rgba(245, 241, 234, 0.65);
    font-size: 12px;
    font-weight: 700;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    text-decoration: none;
    border-bottom: 2px solid transparent;
}
.wilsons-single .woocommerce-tabs ul.tabs li.active a {
    color: var(--wilsons-gold);
    border-bottom-color: var(--wilsons-gold);
}
.wilsons-single .woocommerce-tabs .panel {
    color: rgba(245, 241, 234, 0.85);
    font-size: 15px;
    line-height: 1.7;
}
.wilsons-single .woocommerce-tabs .panel h2 {
    color: var(--wilsons-cream);
    font-size: 22px;
    margin: 0 0 16px;
}

/* Related products */
.wilsons-single .related.products,
.wilsons-single .up-sells.products {
    grid-column: 1 / -1;
    margin-top: 64px;
}
.wilsons-single .related.products > h2,
.wilsons-single .up-sells.products > h2 {
    margin: 0 0 32px;
    font-size: 24px;
    font-weight: 900;
    color: var(--wilsons-cream);
    letter-spacing: -0.01em;
}

/* ---------- Woo buttons ---------- */
.woocommerce a.button,
.woocommerce button.button,
.woocommerce input.button,
.woocommerce #respond input#submit,
.woocommerce a.button.alt,
.woocommerce button.button.alt,
.woocommerce input.button.alt,
.woocommerce #respond input#submit.alt {
    background: var(--wilsons-gold);
    color: var(--wilsons-ink);
    border: 2px solid var(--wilsons-gold);
    padding: 14px 28px;
    font-family: var(--wilsons-font);
    font-size: 13px;
    font-weight: 700;
    letter-spacing: 0.16em;
    text-transform: uppercase;
    border-radius: 0;
    text-shadow: none;
    box-shadow: none;
    cursor: pointer;
    transition: background 0.15s ease, color 0.15s ease;
}
.woocommerce a.button:hover,
.woocommerce button.button:hover,
.woocommerce input.button:hover,
.woocommerce #respond input#submit:hover,
.woocommerce a.button.alt:hover,
.woocommerce button.button.alt:hover,
.woocommerce input.button.alt:hover,
.woocommerce #respond input#submit.alt:hover {
    background: transparent;
    color: var(--wilsons-gold);
}

/* ---------- Notices ---------- */
.woocommerce-notices-wrapper { max-width: 1280px; margin: 0 auto; padding: 0 24px; }
.woocommerce-message,
.woocommerce-info,
.woocommerce-error {
    background: var(--wilsons-ink-soft);
    border-top: 3px solid var(--wilsons-gold);
    color: var(--wilsons-cream);
    padding: 14px 20px;
    margin: 16px 0;
    font-size: 14px;
    line-height: 1.5;
    display: flex;
    flex-direction: row;
    align-items: center;
    gap: 20px;
    /* No list bullets — WC's success notice is sometimes a <ul>. */
    list-style: none;
}
.woocommerce-message > li,
.woocommerce-info > li,
.woocommerce-error > li {
    list-style: none;
    display: flex;
    flex-direction: row;
    align-items: center;
    gap: 20px;
    width: 100%;
    margin: 0;
}
/* Kill the default WC tick/info glyph — it overlaps the message text on dark bg. */
.woocommerce-message::before,
.woocommerce-info::before,
.woocommerce-error::before { content: none; }
/* Right-pin the CTA regardless of DOM order (`margin-left: auto` wins whether
   the anchor comes before or after the message text). Vertically centred via
   the flex container's align-items:center. */
.woocommerce-message a.button,
.woocommerce-info a.button {
    margin: 0 0 0 auto !important;
    padding: 10px 18px !important;
    font-size: 12px !important;
    font-weight: 700 !important;
    letter-spacing: 0.14em !important;
    text-transform: uppercase !important;
    background: var(--wilsons-gold) !important;
    color: var(--wilsons-ink) !important;
    border: 2px solid var(--wilsons-gold) !important;
    border-radius: 0 !important;
    text-decoration: none !important;
    flex-shrink: 0;
    align-self: center;
    transition: background 0.15s ease, color 0.15s ease;
}
.woocommerce-message a.button:hover,
.woocommerce-info a.button:hover {
    background: transparent !important;
    color: var(--wilsons-gold) !important;
    text-decoration: none !important;
}
.woocommerce-error { border-top-color: #d64545; }

/* Mobile — stack the button under the message. */
@media (max-width: 560px) {
    .woocommerce-message,
    .woocommerce-info,
    .woocommerce-error,
    .woocommerce-message > li,
    .woocommerce-info > li,
    .woocommerce-error > li {
        flex-direction: column;
        align-items: stretch;
        gap: 12px;
    }
    .woocommerce-message a.button,
    .woocommerce-info a.button {
        margin: 0 !important;
        align-self: stretch;
        text-align: center;
    }
}

/* ---------- Cart page ---------- */
.woocommerce-cart .wilsons-main,
.woocommerce-checkout .wilsons-main,
.woocommerce-account .wilsons-main {
    padding: 64px 0 96px;
    background: var(--wilsons-ink);
    color: var(--wilsons-cream);
}
.woocommerce-cart .woocommerce,
.woocommerce-checkout .woocommerce,
.woocommerce-account .woocommerce {
    max-width: 1280px;
    margin: 0 auto;
    padding: 0 24px;
}
.woocommerce table.shop_table {
    width: 100%;
    background: var(--wilsons-ink-soft);
    border: 1px solid var(--wilsons-line);
    border-radius: 0;
    border-collapse: collapse;
    color: var(--wilsons-cream);
}
.woocommerce table.shop_table th {
    padding: 14px 16px;
    background: var(--wilsons-ink);
    color: var(--wilsons-gold);
    font-size: 12px;
    font-weight: 700;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    text-align: left;
    border-bottom: 1px solid var(--wilsons-line);
}
.woocommerce table.shop_table td {
    padding: 16px;
    border-top: 1px solid var(--wilsons-line);
    font-size: 15px;
    vertical-align: middle;
}
.woocommerce table.shop_table a { color: var(--wilsons-gold); text-decoration: none; }
.woocommerce table.shop_table img { width: 64px; height: auto; }

.woocommerce .cart_totals h2,
.woocommerce-checkout h3 {
    color: var(--wilsons-cream);
    font-size: 22px;
    margin: 24px 0 16px;
}
.woocommerce .cart-collaterals .cart_totals {
    background: var(--wilsons-ink-soft);
    border: 1px solid var(--wilsons-line);
    padding: 24px;
}

.woocommerce .coupon input.input-text,
.woocommerce form .form-row input.input-text,
.woocommerce form .form-row textarea,
.woocommerce form .form-row select {
    background: var(--wilsons-ink);
    border: 1px solid var(--wilsons-line);
    color: var(--wilsons-cream);
    padding: 12px 14px;
    font-family: var(--wilsons-font);
    font-size: 15px;
    border-radius: 0;
    width: 100%;
    box-sizing: border-box;
}
.woocommerce form .form-row label {
    color: var(--wilsons-cream);
    font-size: 13px;
    font-weight: 700;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    margin-bottom: 6px;
}
.woocommerce form .form-row input:focus,
.woocommerce form .form-row textarea:focus,
.woocommerce form .form-row select:focus {
    outline: none;
    border-color: var(--wilsons-gold);
}

/* ---------- Checkout ---------- */
.woocommerce-checkout #customer_details,
.woocommerce-checkout #order_review_heading,
.woocommerce-checkout #order_review { margin-bottom: 24px; }
.woocommerce-checkout #payment {
    background: var(--wilsons-ink-soft);
    border: 1px solid var(--wilsons-line);
    padding: 20px;
    border-radius: 0;
}
.woocommerce-checkout #payment ul.payment_methods {
    background: transparent;
    border: 0;
    padding: 0;
    margin: 0 0 16px;
}
.woocommerce-checkout #payment div.payment_box {
    background: var(--wilsons-ink);
    color: rgba(245, 241, 234, 0.85);
    border-radius: 0;
    padding: 16px;
    margin-top: 8px;
}
.woocommerce-checkout #payment div.payment_box::before { display: none; }

/* ---------- Responsive ---------- */
@media (max-width: 1080px) {
    .woocommerce ul.products,
    .woocommerce-page ul.products { grid-template-columns: repeat(3, 1fr); }
}
@media (max-width: 780px) {
    .woocommerce ul.products,
    .woocommerce-page ul.products { grid-template-columns: repeat(2, 1fr); gap: 16px; }
    .wilsons-single .product { grid-template-columns: 1fr; gap: 32px; }
    .wilsons-shop-grid { padding: 40px 0 64px; }
}
@media (max-width: 560px) {
    .wilsons-shop-search input[type="search"] { min-width: 0; }
    .woocommerce table.shop_table thead { display: none; }
    .woocommerce table.shop_table td { display: block; border: 0; padding: 8px 0; }
    /* Card typography — snug but readable at ~180px card width. */
    .wilsons-product__body { padding: 14px; gap: 8px; }
    .wilsons-product__title { font-size: 14px; line-height: 1.3; }
    .wilsons-product__price { font-size: 16px; }
    /* Move "incl. GST" suffix onto its own line so amount always fits on one row. */
    .wilsons-product__price .woocommerce-price-suffix,
    .wilsons-product__price small { display: block; font-size: 11px; margin: 2px 0 0; }
    /* Licence tag — reduce letter-spacing so "NZ FIREARMS LICENCE REQUIRED" doesn't ladder. */
    .wilsons-product__licence { font-size: 10px; letter-spacing: 0.1em; }
    .wilsons-product .wilsons-btn--small { padding: 10px 14px; font-size: 11px; }
    /* Shave outer container padding so cards get slightly more room on tight phones. */
    .wilsons-container { padding: 0 16px; }
}
/* Ultra-narrow phones (Galaxy Fold folded, older devices) — collapse to 1 col. */
@media (max-width: 400px) {
    .wilsons-products,
    .woocommerce ul.products,
    .woocommerce-page ul.products { grid-template-columns: 1fr; }
}

/* =====================================================
   FIREARMS COMPLIANCE — notices + card tag + checkout
   ===================================================== */

/* Card tag under price. */
.wilsons-product__licence {
    display: inline-block;
    margin-top: 2px;
    font-size: 11px;
    font-weight: 700;
    letter-spacing: 0.14em;
    text-transform: uppercase;
    color: var(--wilsons-gold);
}

/* Notice block used on single product + checkout. */
.wilsons-licence-notice {
    background: var(--wilsons-ink-soft);
    border: 1px solid var(--wilsons-line);
    border-left: 4px solid var(--wilsons-gold);
    padding: 20px 24px;
    margin: 24px 0;
    color: var(--wilsons-cream);
}
.wilsons-licence-notice h4 {
    margin: 0 0 10px;
    font-size: 13px;
    font-weight: 700;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    color: var(--wilsons-gold);
}
.wilsons-licence-notice p {
    margin: 0 0 10px;
    font-size: 14px;
    line-height: 1.6;
    color: rgba(245, 241, 234, 0.88);
}
.wilsons-licence-notice p:last-child { margin-bottom: 0; }

/* Checkout-specific — fields inside the notice. */
.wilsons-licence-notice--checkout .form-row {
    margin: 16px 0 0;
    padding: 0;
    display: block;
}
.wilsons-licence-notice--checkout label {
    display: block;
    color: var(--wilsons-cream);
    font-size: 13px;
    font-weight: 700;
    letter-spacing: 0.06em;
    margin-bottom: 6px;
    text-transform: none;
}
.wilsons-licence-notice--checkout .wilsons-licence-hint {
    color: rgba(245, 241, 234, 0.55);
    font-weight: 400;
    font-size: 12px;
    letter-spacing: 0;
    margin-left: 6px;
}
.wilsons-licence-notice--checkout input[type="text"].input-text {
    background: var(--wilsons-ink);
    border: 1px solid var(--wilsons-line);
    color: var(--wilsons-cream);
    padding: 12px 14px;
    font-family: var(--wilsons-font);
    font-size: 15px;
    width: 100%;
    max-width: 320px;
    box-sizing: border-box;
    border-radius: 0;
}
.wilsons-licence-notice--checkout input[type="text"].input-text:focus {
    outline: none;
    border-color: var(--wilsons-gold);
}
.wilsons-licence-notice--checkout .wilsons-licence-ack label.checkbox {
    display: flex;
    gap: 12px;
    align-items: flex-start;
    text-transform: none;
    letter-spacing: 0;
    font-weight: 400;
    font-size: 14px;
    line-height: 1.55;
    color: var(--wilsons-cream);
    cursor: pointer;
    margin: 0;
}
.wilsons-licence-notice--checkout .wilsons-licence-ack input[type="checkbox"] {
    margin-top: 3px;
    accent-color: var(--wilsons-gold);
    width: 18px;
    height: 18px;
    flex-shrink: 0;
}
.wilsons-licence-notice--checkout .wilsons-licence-ack abbr.required {
    color: var(--wilsons-gold);
    text-decoration: none;
    margin-left: 4px;
}

/* ==========================================================================
   WooCommerce Cart/Checkout Blocks — dark theme
   Fixes white-on-white labels/inputs on the block-based checkout.
   ========================================================================== */

/* Section titles ("Contact information", "Billing address", etc.) */
.wp-block-woocommerce-checkout .wc-block-components-title,
.wp-block-woocommerce-checkout .wc-block-components-checkout-step__title,
.wp-block-woocommerce-cart .wc-block-components-title {
    color: var(--wilsons-cream);
}

/* Text / email / tel / number / password inputs, textareas, and comboboxes
   (country/region use a combobox wrapper AND an inner input — both need styling) */
.wp-block-woocommerce-checkout .wc-block-components-text-input input,
.wp-block-woocommerce-checkout .wc-block-components-textarea,
.wp-block-woocommerce-checkout .wc-block-components-combobox,
.wp-block-woocommerce-checkout .wc-block-components-combobox-control,
.wp-block-woocommerce-checkout .wc-block-components-combobox-control input,
.wp-block-woocommerce-checkout .wc-block-components-combobox .components-form-token-field__input-container,
.wp-block-woocommerce-checkout .wc-block-components-combobox .components-form-token-field__input,
.wp-block-woocommerce-checkout .wc-block-components-country-input input,
.wp-block-woocommerce-checkout .wc-block-components-state-input input,
.wp-block-woocommerce-checkout select,
.wp-block-woocommerce-cart .wc-block-components-text-input input,
.wp-block-woocommerce-cart .wc-block-components-textarea {
    background: var(--wilsons-ink-soft) !important;
    color: var(--wilsons-cream) !important;
    border: 1px solid var(--wilsons-line) !important;
    border-radius: 0 !important;
}

/* Combobox dropdown arrow (SVG) — invert to cream so it's visible on dark bg */
.wp-block-woocommerce-checkout .wc-block-components-combobox svg,
.wp-block-woocommerce-checkout .wc-block-components-combobox-control svg {
    fill: var(--wilsons-cream) !important;
}

/* Dropdown option list — dark panel with cream options, gold hover */
.wp-block-woocommerce-checkout .components-form-token-field__suggestions-list,
.wp-block-woocommerce-checkout .wc-block-components-combobox-control ul[role="listbox"] {
    background: var(--wilsons-ink-soft) !important;
    border: 1px solid var(--wilsons-line) !important;
    color: var(--wilsons-cream) !important;
}
.wp-block-woocommerce-checkout .components-form-token-field__suggestion,
.wp-block-woocommerce-checkout .wc-block-components-combobox-control li[role="option"] {
    color: var(--wilsons-cream) !important;
    background: transparent !important;
}
.wp-block-woocommerce-checkout .components-form-token-field__suggestion.is-selected,
.wp-block-woocommerce-checkout .components-form-token-field__suggestion:hover,
.wp-block-woocommerce-checkout .wc-block-components-combobox-control li[role="option"][aria-selected="true"],
.wp-block-woocommerce-checkout .wc-block-components-combobox-control li[role="option"]:hover {
    background: var(--wilsons-gold) !important;
    color: var(--wilsons-ink) !important;
}
.wp-block-woocommerce-checkout .wc-block-components-text-input input:focus,
.wp-block-woocommerce-checkout .wc-block-components-textarea:focus,
.wp-block-woocommerce-checkout .wc-block-components-combobox-control input:focus,
.wp-block-woocommerce-cart .wc-block-components-text-input input:focus,
.wp-block-woocommerce-cart .wc-block-components-textarea:focus {
    border-color: var(--wilsons-gold) !important;
    box-shadow: 0 0 0 1px var(--wilsons-gold) !important;
    outline: none !important;
}

/* Floating labels — resting (inside empty input) + active (raised) */
.wp-block-woocommerce-checkout .wc-block-components-text-input label,
.wp-block-woocommerce-checkout .wc-block-components-combobox-control label,
.wp-block-woocommerce-cart .wc-block-components-text-input label {
    color: rgba(245, 241, 234, 0.65) !important;
}
.wp-block-woocommerce-checkout .wc-block-components-text-input.is-active label,
.wp-block-woocommerce-checkout .wc-block-components-combobox-control.is-active label,
.wp-block-woocommerce-cart .wc-block-components-text-input.is-active label {
    color: var(--wilsons-gold) !important;
    background: var(--wilsons-ink) !important;
    padding: 0 4px;
}

/* Checkbox labels + radio labels (shipping methods, save-details, etc.) */
.wp-block-woocommerce-checkout .wc-block-components-checkbox__label,
.wp-block-woocommerce-checkout .wc-block-components-radio-control__label,
.wp-block-woocommerce-checkout .wc-block-components-radio-control__description,
.wp-block-woocommerce-checkout .wc-block-checkout__terms label,
.wp-block-woocommerce-cart .wc-block-components-checkbox__label {
    color: var(--wilsons-cream);
}

/* Order summary panel + totals text */
.wp-block-woocommerce-checkout .wc-block-components-order-summary,
.wp-block-woocommerce-checkout .wc-block-components-totals-wrapper,
.wp-block-woocommerce-checkout .wc-block-components-totals-item__label,
.wp-block-woocommerce-checkout .wc-block-components-totals-item__value,
.wp-block-woocommerce-checkout .wc-block-components-product-name,
.wp-block-woocommerce-checkout .wc-block-components-product-metadata {
    color: var(--wilsons-cream);
}

/* Primary "Place order" button */
.wp-block-woocommerce-checkout .wc-block-components-checkout-place-order-button {
    background: var(--wilsons-gold) !important;
    color: var(--wilsons-ink) !important;
    border: none !important;
    border-radius: 0 !important;
    font-weight: 700;
    letter-spacing: 0.08em;
    text-transform: uppercase;
}
.wp-block-woocommerce-checkout .wc-block-components-checkout-place-order-button:hover {
    background: #f0b030 !important;
}

/* Small helper / hint / error text */
.wp-block-woocommerce-checkout .wc-block-components-validation-error,
.wp-block-woocommerce-cart .wc-block-components-validation-error {
    color: #ff6b6b;
}

/* =====================================================
   POLISH — cross-template consistency + WC bleed-through
   ===================================================== */

/* Focus ring — visible on every focusable element, matches gold accent. */
a:focus-visible,
button:focus-visible,
input:focus-visible,
select:focus-visible,
textarea:focus-visible,
.wilsons-btn:focus-visible {
    outline: 2px solid var(--wilsons-gold);
    outline-offset: 2px;
}

/* WooCommerce default text bleeds — `mark` gets a yellow bg by default, `abbr`
   gets a dotted underline. Neutralise both. */
.woocommerce mark,
.wilsons-main mark {
    background: transparent;
    color: var(--wilsons-gold);
    font-weight: 700;
}
.woocommerce abbr[title],
.wilsons-main abbr[title] {
    text-decoration: none;
    border-bottom: 0;
}

/* Woo body/page containers can inherit unwanted body classes. Kill the built-in
   `.woocommerce-page` two-col float layout — our grid handles it. */
.woocommerce-page .site-content,
.woocommerce-page .wilsons-main { overflow-x: hidden; }

/* My-account: reskin the navigation + tables so the endpoint pages match. */
.woocommerce-account .wilsons-main { padding: 48px 0 96px; }
.woocommerce-account .woocommerce-MyAccount-navigation ul {
    list-style: none;
    margin: 0 0 24px;
    padding: 0;
    display: flex;
    flex-wrap: wrap;
    gap: 4px;
    border-bottom: 1px solid var(--wilsons-line);
}
.woocommerce-account .woocommerce-MyAccount-navigation ul li a {
    display: block;
    padding: 12px 18px;
    color: rgba(245, 241, 234, 0.75);
    font-size: 12px;
    font-weight: 700;
    letter-spacing: 0.16em;
    text-transform: uppercase;
    text-decoration: none;
    border-bottom: 2px solid transparent;
}
.woocommerce-account .woocommerce-MyAccount-navigation ul li.is-active a,
.woocommerce-account .woocommerce-MyAccount-navigation ul li a:hover {
    color: var(--wilsons-gold);
    border-bottom-color: var(--wilsons-gold);
}
.woocommerce-account table.shop_table,
.woocommerce-cart table.shop_table {
    background: var(--wilsons-ink-soft);
    border: 1px solid var(--wilsons-line);
    color: var(--wilsons-cream);
    border-collapse: collapse;
    width: 100%;
}
.woocommerce-account table.shop_table th,
.woocommerce-cart table.shop_table th {
    background: var(--wilsons-ink);
    color: var(--wilsons-gold);
    font-size: 12px;
    letter-spacing: 0.14em;
    text-transform: uppercase;
    padding: 14px 16px;
    text-align: left;
    border-bottom: 1px solid var(--wilsons-line);
}
.woocommerce-account table.shop_table td,
.woocommerce-cart table.shop_table td {
    padding: 14px 16px;
    border-bottom: 1px solid var(--wilsons-line);
    color: rgba(245, 241, 234, 0.85);
}

/* Cart cross-sells + order-totals headers */
.woocommerce .cross-sells > h2,
.woocommerce .cart_totals > h2 {
    font-size: 20px;
    font-weight: 900;
    color: var(--wilsons-cream);
    margin: 0 0 20px;
    letter-spacing: -0.01em;
}

/* Product-card price — match the gold + sizing rhythm of the single page. */
.wilsons-product__price {
    color: var(--wilsons-gold);
    font-weight: 900;
    font-size: 18px;
    letter-spacing: -0.01em;
}
.wilsons-product__price .woocommerce-Price-currencySymbol,
.wilsons-product__price .woocommerce-Price-amount { color: var(--wilsons-gold); }

/* Hero + section rhythm on small screens (tighten padding + font). */
@media (max-width: 560px) {
    .wilsons-main { padding: 32px 0 56px; }
    .wilsons-hero { min-height: 460px; }
    .wilsons-hero__inner { padding: 56px 20px; }
    .wilsons-hero__lead { font-size: 16px; margin-bottom: 24px; }
    .wilsons-hero__ctas .wilsons-btn { flex: 1 1 auto; }

    .wilsons-featured, .wilsons-departments, .wilsons-brands { padding: 48px 0; }

    .wilsons-shop-toolbar__inner { padding: 20px 16px; }
    .wilsons-shop-grid { padding: 32px 0 56px; }

    .wilsons-single { padding: 40px 0 64px; }
    .wilsons-single form.cart { flex-direction: column; align-items: stretch; }
    .wilsons-single form.cart .quantity,
    .wilsons-single form.cart .quantity input.qty { width: 100%; box-sizing: border-box; }
    .wilsons-single form.cart .single_add_to_cart_button { width: 100%; }

    /* Footer hours — align to a two-column pair so day + time stack cleanly. */
    .wilsons-footer__hours li { font-size: 13px; }
    .wilsons-footer__contact a { font-size: 18px; }
}

/* At the intermediate 780–960px band the single-product grid can still feel
   cramped — bump gap and keep the summary column readable. */
@media (max-width: 960px) and (min-width: 781px) {
    .wilsons-single .product { gap: 40px; }
    .wilsons-single .product_title { font-size: 30px; }
}

/* =====================================================
   MOBILE POLISH — tap targets, cart table, checkout ack
   ===================================================== */
@media (max-width: 560px) {
    /* Category pills — bump to 44px min tap target. */
    .wilsons-shop-cat {
        padding: 12px 16px;
        min-height: 44px;
        box-sizing: border-box;
    }
    /* Card "View" button — bump to ~44px so it clears the WCAG minimum
       (the whole card is also tappable via the image link). */
    .wilsons-product .wilsons-btn--small {
        padding: 12px 16px;
        font-size: 12px;
        min-height: 44px;
        box-sizing: border-box;
    }
    /* Cart table — the ≤560 rule already stacks cells as blocks; add a data-label
       pattern via `::before` reading the column header so rows are legible. */
    .woocommerce-cart table.shop_table tr { display: block; padding: 12px 0; border-bottom: 1px solid var(--wilsons-line); }
    .woocommerce-cart table.shop_table td { display: flex; justify-content: space-between; align-items: center; gap: 12px; }
    .woocommerce-cart table.shop_table td::before {
        content: attr(data-title);
        color: var(--wilsons-gold);
        font-size: 11px;
        font-weight: 700;
        letter-spacing: 0.12em;
        text-transform: uppercase;
    }
    /* Stack cart totals above the button on the cart page. */
    .woocommerce-cart .wc-proceed-to-checkout a.button { width: 100%; text-align: center; }
}

/* Blocks-checkout: dark-theme the new additional Wilsons fields (licence + ack). */
.wp-block-woocommerce-checkout .wc-block-components-checkbox {
    align-items: flex-start;
    gap: 10px;
}
.wp-block-woocommerce-checkout .wc-block-components-checkbox input[type="checkbox"] {
    accent-color: var(--wilsons-gold);
    width: 20px;
    height: 20px;
    margin-top: 2px;
    flex-shrink: 0;
}
.wp-block-woocommerce-checkout .wc-block-components-checkbox .wc-block-components-checkbox__label {
    font-size: 13px;
    line-height: 1.5;
    color: var(--wilsons-cream);
}

/* =====================================================
   BLOCKS CHECKOUT — conditional firearms panel (JS-rendered)
   ===================================================== */
.wilsons-blocks-firearms {
    background: var(--wilsons-ink-soft);
    border: 1px solid var(--wilsons-line);
    border-left: 4px solid var(--wilsons-gold);
    padding: 20px 24px;
    margin: 24px 0;
    color: var(--wilsons-cream);
}
.wilsons-blocks-firearms__title {
    margin: 0 0 10px;
    font-size: 13px;
    font-weight: 700;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    color: var(--wilsons-gold);
}
.wilsons-blocks-firearms__lead {
    margin: 0 0 16px;
    font-size: 14px;
    line-height: 1.6;
    color: rgba(245, 241, 234, 0.88);
}
.wilsons-blocks-firearms__label {
    display: block;
    font-size: 13px;
    font-weight: 700;
    letter-spacing: 0.06em;
    color: var(--wilsons-cream);
    margin-bottom: 6px;
}
.wilsons-blocks-firearms__hint {
    color: rgba(245, 241, 234, 0.55);
    font-weight: 400;
    font-size: 12px;
    letter-spacing: 0;
    margin-left: 6px;
}
.wilsons-blocks-firearms__input {
    display: block;
    width: 100%;
    max-width: 320px;
    background: var(--wilsons-ink);
    border: 1px solid var(--wilsons-line);
    color: var(--wilsons-cream);
    padding: 12px 14px;
    font-family: var(--wilsons-font);
    font-size: 15px;
    box-sizing: border-box;
    border-radius: 0;
    margin-bottom: 18px;
}
.wilsons-blocks-firearms__input:focus {
    outline: none;
    border-color: var(--wilsons-gold);
}
.wilsons-blocks-firearms__ack {
    display: flex;
    gap: 12px;
    align-items: flex-start;
    text-transform: none;
    letter-spacing: 0;
    font-weight: 400;
    font-size: 14px;
    line-height: 1.5;
    color: var(--wilsons-cream);
    cursor: pointer;
    margin: 0;
}
.wilsons-blocks-firearms__ack input[type="checkbox"] {
    margin-top: 3px;
    accent-color: var(--wilsons-gold);
    width: 18px;
    height: 18px;
    flex-shrink: 0;
}
.wilsons-blocks-firearms__req {
    color: var(--wilsons-gold);
    text-decoration: none;
    margin-left: 4px;
}

/* ---------- Shop mega-menu (desktop dropdown, mobile inline) ---------- */
.wilsons-nav__list .wilsons-has-mega { position: relative; }
.wilsons-mega {
    position: absolute;
    top: 100%;
    left: 50%;
    transform: translateX(-50%);
    min-width: 720px;
    max-width: 92vw;
    /* Safety net: if the panel ever gets too tall (extra departments added, etc.),
       cap its height at ~viewport-minus-header and scroll internally rather than
       overflowing off-screen. */
    max-height: calc(100vh - 140px);
    overflow-y: auto;
    overscroll-behavior: contain;
    background: var(--wilsons-ink);
    border: 1px solid var(--wilsons-line);
    border-top: 2px solid var(--wilsons-gold);
    padding: 28px 32px;
    box-shadow: 0 24px 48px rgba(0, 0, 0, 0.6);
    display: none;
    z-index: 100;
}
.wilsons-has-mega:hover > .wilsons-mega,
.wilsons-has-mega:focus-within > .wilsons-mega {
    display: block;
}
.wilsons-mega__inner {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 24px 28px;
}
.wilsons-mega__col { min-width: 0; }
.wilsons-mega__head {
    display: block;
    color: var(--wilsons-gold);
    font-size: 12px;
    font-weight: 700;
    letter-spacing: 0.14em;
    text-transform: uppercase;
    padding: 0 0 8px;
    margin-bottom: 8px;
    border-bottom: 1px solid var(--wilsons-line);
    text-decoration: none;
}
.wilsons-mega__head:hover,
.wilsons-mega__head:focus { color: var(--wilsons-cream); border-bottom-color: var(--wilsons-gold); }
.wilsons-mega__list {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 2px;
}
.wilsons-mega__list a {
    display: block;
    padding: 4px 0;
    color: rgba(245, 241, 234, 0.82);
    font-size: 13px;
    letter-spacing: 0.04em;
    text-transform: none;
    text-decoration: none;
    border: 0;
}
.wilsons-mega__list a:hover,
.wilsons-mega__list a:focus { color: var(--wilsons-gold); border: 0; }

@media (max-width: 960px) {
    /* Inline the mega-menu inside the mobile drawer under the Shop link. */
    .wilsons-mega {
        position: static;
        transform: none;
        display: block;
        min-width: 0;
        max-width: none;
        border: 0;
        border-top: 0;
        box-shadow: none;
        padding: 4px 0 12px 12px;
        background: transparent;
    }
    .wilsons-mega__inner {
        display: block;
    }
    .wilsons-mega__col + .wilsons-mega__col { margin-top: 14px; }
    .wilsons-mega__head {
        border-bottom: 0;
        padding: 6px 0;
        margin-bottom: 2px;
        font-size: 11px;
    }
    .wilsons-mega__list a {
        padding: 8px 0;
        font-size: 14px;
        border-bottom: 1px solid var(--wilsons-line);
    }
    /* Mobile: the drawer already scrolls, so no per-panel cap needed. */
    .wilsons-mega {
        max-height: none;
        overflow: visible;
    }
}

/* ---------- Payment card logos (footer + checkout) ---------- */
.wilsons-payments {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: center;
    gap: 14px 20px;
    padding: 24px;
    border-top: 1px solid var(--wilsons-line);
}
.wilsons-payments__label {
    font-size: 11px;
    font-weight: 700;
    letter-spacing: 0.2em;
    text-transform: uppercase;
    color: rgba(245, 241, 234, 0.6);
}
.wilsons-payments__list {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 10px;
}
.wilsons-payments__item {
    display: inline-flex;
    align-items: center;
    line-height: 0;
}
.wilsons-payments__item img {
    display: block;
    width: 52px;
    height: 34px;
    border-radius: 4px;
    box-shadow: 0 0 0 1px rgba(245, 241, 234, 0.08);
    background: transparent;
}

/* Dedicated strip that appears above the site footer on the checkout page,
   so the marks are visible during the purchase flow (Blocks checkout has no
   PHP hook near the payment methods themselves). */
.wilsons-checkout-payments {
    background: var(--wilsons-ink);
    border-top: 1px solid var(--wilsons-line);
}
.wilsons-checkout-payments .wilsons-payments {
    border-top: 0;
    padding: 20px 0;
}

@media (max-width: 560px) {
    .wilsons-payments {
        padding: 20px 16px;
        gap: 10px 14px;
    }
    .wilsons-payments__list { gap: 8px; }
    .wilsons-payments__item img { width: 46px; height: 30px; }
}
