/*
Theme Name:   ZoeDancewear
Theme URI:    https://zoedancewear.com
Description:  Storefront child theme for the ZoeDancewear ballet uniform store.
Author:       ZoeDancewear
Template:     storefront
Version:      2.0.0
Text Domain:  zoe-dancewear
*/

:root {
    --zw-bg: #fffaf7;
    --zw-tint: #f8ece9;
    --zw-pink: #e8b4c0;
    --zw-berry: #7a2e4d;
    --zw-berry-dark: #5e2039;
    --zw-ink: #2b2528;
    --zw-muted: #6f6468;
    --zw-line: #ecdcd8;
    --zw-radius: 10px;
    --zw-serif: 'Playfair Display', Georgia, serif;
    --zw-sans: 'Inter', system-ui, -apple-system, 'Segoe UI', sans-serif;
}

/* ── Base ─────────────────────────────────────────────────────────────── */
body { background: var(--zw-bg); color: var(--zw-ink); font-family: var(--zw-sans); font-size: 16px; line-height: 1.6; }
h1, h2, h3, h4 { font-family: var(--zw-serif); color: var(--zw-ink); font-weight: 500; letter-spacing: 0; }
a { color: var(--zw-berry); }
a:hover { color: var(--zw-berry-dark); }
.site-content { padding: 0; }
.col-full { max-width: 1200px; padding: 0 20px; margin: 0 auto; box-sizing: content-box; }
.zw-fullwidth .content-area, .zw-fullwidth #primary { width: 100%; float: none; margin: 0; }
.zw-fullwidth .widget-area { display: none; }
.screen-reader-text { clip: rect(1px,1px,1px,1px); position: absolute; height: 1px; width: 1px; overflow: hidden; }

/* ── Buttons ──────────────────────────────────────────────────────────── */
.zw-btn, .button, button.button, input[type=submit], .woocommerce a.button, .woocommerce button.button, .woocommerce #respond input#submit,
.woocommerce a.button.alt, .woocommerce button.button.alt, .single_add_to_cart_button.button.alt {
    display: inline-block; background: var(--zw-berry); color: #fff; border: 1px solid var(--zw-berry); border-radius: 999px;
    padding: 12px 26px; font: 600 15px/1.2 var(--zw-sans); text-decoration: none; cursor: pointer; transition: background .15s;
}
.zw-btn:hover, .button:hover, .woocommerce a.button:hover, .woocommerce button.button:hover, .woocommerce button.button.alt:hover { background: var(--zw-berry-dark); color: #fff; }
.zw-btn--ghost, .woocommerce a.button.zw-btn--ghost { background: transparent; color: var(--zw-berry); }
.zw-btn--ghost:hover { background: var(--zw-berry); color: #fff; }

/* ── Top bar + header ─────────────────────────────────────────────────── */
.zw-topbar { background: var(--zw-berry); color: #fff; text-align: center; font-size: 13px; padding: 7px 16px; }
.zw-header { background: #fff; border-bottom: 1px solid var(--zw-line); position: sticky; top: 0; z-index: 50; }
.admin-bar .zw-header { top: 32px; }
.zw-header__inner { max-width: 1200px; margin: 0 auto; padding: 14px 20px; display: flex; align-items: center; gap: 28px; }
.zw-logo { text-decoration: none; margin-right: auto; display: inline-flex; align-items: center; gap: 12px; }
.zw-logo__mark { height: 46px; width: auto; display: block; }
.zw-logo__word { font: 600 22px/1 var(--zw-serif); letter-spacing: .14em; text-transform: uppercase; color: var(--zw-berry); }
.zw-logo img { max-height: 48px; width: auto; }
.zw-menu { list-style: none; margin: 0; padding: 0; display: flex; gap: 26px; }
.zw-menu a { color: var(--zw-ink); text-decoration: none; font-size: 15px; font-weight: 500; padding: 6px 0; border-bottom: 2px solid transparent; }
.zw-menu a:hover, .zw-menu .current-menu-item > a { border-bottom-color: var(--zw-pink); color: var(--zw-berry); }
.zw-header__tools { display: flex; gap: 14px; align-items: center; }
.zw-tool { color: var(--zw-ink); position: relative; display: inline-flex; }
.zw-cart__count { position: absolute; top: -7px; right: -9px; background: var(--zw-berry); color: #fff; font-size: 11px; font-weight: 600; min-width: 18px; height: 18px; border-radius: 9px; line-height: 18px; text-align: center; }
.zw-burger { display: none; background: none; border: 0; padding: 6px; cursor: pointer; }
.zw-burger span { display: block; width: 22px; height: 2px; background: var(--zw-ink); margin: 5px 0; }

@media (max-width: 1080px) {
    .zw-header__inner { gap: 14px; }
    .zw-burger { display: block; order: -1; }
    .zw-logo { margin: 0 auto 0 0; }
    .zw-logo__word { font-size: 19px; }
    .zw-nav { display: none; position: absolute; left: 0; right: 0; top: 100%; background: #fff; border-bottom: 1px solid var(--zw-line); padding: 8px 20px 16px; }
    .zw-nav.is-open { display: block; }
    .zw-menu { flex-direction: column; gap: 0; }
    .zw-menu a { display: block; padding: 12px 0; border-bottom: 1px solid var(--zw-line); }
    .admin-bar .zw-header { top: 46px; }
}

/* ── Home ─────────────────────────────────────────────────────────────── */
.zw-wrap { max-width: 1200px; margin: 0 auto; padding: 0 20px; }
.zw-eyebrow { text-transform: uppercase; letter-spacing: .14em; font-size: 12px; font-weight: 600; color: var(--zw-berry); margin: 0 0 12px; }
.zw-h2 { font-size: 34px; margin: 0 0 8px; }
.zw-hero { max-width: 1200px; margin: 0 auto; padding: 56px 20px; display: grid; grid-template-columns: 1.05fr 1fr; gap: 48px; align-items: center; }
.zw-hero h1 { font-size: 46px; line-height: 1.15; margin: 0 0 18px; }
.zw-hero__lede { font-size: 18px; color: var(--zw-muted); margin: 0 0 28px; }
.zw-hero__cta { display: flex; gap: 14px; flex-wrap: wrap; }
.zw-hero__img img { width: 100%; height: auto; border-radius: 18px; display: block; box-shadow: 0 18px 50px rgba(122,46,77,.14); }
.zw-section { padding: 56px 0; }
.zw-section--tint { background: var(--zw-tint); }
.zw-section__lede { color: var(--zw-muted); margin: 0 0 28px; }
.zw-levels { display: grid; grid-template-columns: repeat(5, 1fr); gap: 18px; }
.zw-level { display: flex; flex-direction: column; text-decoration: none; color: var(--zw-ink); background: #fff; border: 1px solid var(--zw-line); border-radius: var(--zw-radius); overflow: hidden; transition: transform .15s, box-shadow .15s; }
.zw-level:hover { transform: translateY(-3px); box-shadow: 0 10px 28px rgba(122,46,77,.12); color: var(--zw-ink); }
.zw-level__img { aspect-ratio: 1 / 1.1; background: var(--zw-tint); overflow: hidden; }
.zw-level__img img { width: 100%; height: 100%; object-fit: cover; display: block; }
.zw-level__title { font: 500 19px/1.2 var(--zw-serif); padding: 14px 14px 2px; }
.zw-level__sub { font-size: 13px; color: var(--zw-muted); padding: 0 14px 16px; }
.zw-split { display: grid; grid-template-columns: 1.4fr 1fr; gap: 40px; align-items: center; }
.zw-split__card { background: var(--zw-tint); border-radius: 16px; padding: 32px; }
.zw-split__card h3 { margin-top: 0; font-size: 24px; }
.zw-trust { border-top: 1px solid var(--zw-line); border-bottom: 1px solid var(--zw-line); background: #fff; }
.zw-trust__grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 20px; padding-top: 28px; padding-bottom: 28px; }
.zw-trust strong { display: block; font-size: 15px; }
.zw-trust span { font-size: 13px; color: var(--zw-muted); }

@media (max-width: 1000px) { .zw-levels { grid-template-columns: repeat(3, 1fr); } }
@media (max-width: 760px) {
    .zw-hero, .zw-split { grid-template-columns: 1fr; gap: 28px; padding-top: 32px; }
    .zw-hero h1 { font-size: 32px; }
    .zw-h2 { font-size: 27px; }
    .zw-levels { grid-template-columns: repeat(2, 1fr); gap: 12px; }
    .zw-trust__grid { grid-template-columns: repeat(2, 1fr); }
    .zw-section { padding: 38px 0; }
}

/* ── Shop / product ───────────────────────────────────────────────────── */
.woocommerce-products-header__title, .entry-title, .product_title { font-size: 34px; margin: 32px 0 16px; }
.storefront-breadcrumb { background: none; padding: 18px 0 0; margin: 0; }
.woocommerce-breadcrumb { font-size: 13px; color: var(--zw-muted); }
.woocommerce ul.products li.product { text-align: left; }
.woocommerce ul.products li.product img { border-radius: var(--zw-radius); aspect-ratio: 1; object-fit: cover; background: var(--zw-tint); }
.woocommerce ul.products li.product .woocommerce-loop-product__title { font: 500 17px/1.3 var(--zw-serif); padding-top: 10px; }
.woocommerce ul.products li.product .price, .woocommerce div.product p.price { color: var(--zw-berry); font-weight: 600; }
.zoe-currency-code { font-size: .75em; margin-left: 4px; color: var(--zw-muted); font-weight: 500; }
.woocommerce span.onsale { background: var(--zw-berry); }
.zw-quote-note { font-size: 14px; color: var(--zw-muted); margin: 0 0 14px; }
.zw-notice { background: var(--zw-tint); border-left: 3px solid var(--zw-pink); padding: 12px 16px; font-size: 14px; border-radius: 4px; margin: 16px 0; }
.zw-missing { color: var(--zw-muted); font-style: italic; }

/* ── Size tables / size finder ────────────────────────────────────────── */
.zw-sizetable { width: 100%; border-collapse: collapse; margin: 12px 0 8px; font-size: 14px; background: #fff; }
.zw-sizetable th, .zw-sizetable td { border: 1px solid var(--zw-line); padding: 9px 12px; text-align: left; }
.zw-sizetable th { background: var(--zw-tint); font-weight: 600; }
.zw-sizetable-wrap { overflow-x: auto; }
.zw-finder { background: var(--zw-tint); border-radius: 16px; padding: 28px; margin: 24px 0; }
.zw-finder__row { display: flex; gap: 16px; flex-wrap: wrap; align-items: end; }
.zw-finder label { display: block; font-size: 13px; font-weight: 600; margin-bottom: 4px; }
.zw-finder input { width: 150px; }
.zw-finder__out { margin-top: 20px; display: grid; gap: 10px; }
.zw-finder__item { background: #fff; border: 1px solid var(--zw-line); border-radius: var(--zw-radius); padding: 12px 16px; display: flex; justify-content: space-between; gap: 12px; flex-wrap: wrap; }

/* ── Forms ────────────────────────────────────────────────────────────── */
input[type=text], input[type=email], input[type=tel], input[type=number], textarea, select {
    border: 1px solid var(--zw-line); border-radius: 8px; padding: 10px 12px; background: #fff; font: 15px var(--zw-sans); color: var(--zw-ink); box-sizing: border-box;
}
.zw-form { max-width: 880px; }
.zw-form fieldset { border: 1px solid var(--zw-line); border-radius: var(--zw-radius); padding: 18px 20px; margin: 0 0 22px; background: #fff; }
.zw-form legend { font: 500 19px var(--zw-serif); padding: 0 8px; }
.zw-form .zw-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
.zw-form label { display: block; font-size: 13px; font-weight: 600; margin-bottom: 4px; }
.zw-form input, .zw-form select, .zw-form textarea { width: 100%; }
.zw-form .zw-full { grid-column: 1 / -1; }
.zw-lines__row { display: grid; grid-template-columns: 2fr 1fr 1fr 1fr auto; gap: 10px; margin-bottom: 10px; align-items: end; }
.zw-lines__remove { background: none; border: 0; color: var(--zw-muted); font-size: 22px; cursor: pointer; padding: 6px; }
.zw-hp { position: absolute; left: -9999px; }
.zw-flash { padding: 14px 18px; border-radius: 8px; margin: 20px 0; }
.zw-flash--ok { background: #e9f6ec; border: 1px solid #b7dfc0; }
.zw-flash--err { background: #fdecec; border: 1px solid #f3b8b8; }
@media (max-width: 700px) {
    .zw-form .zw-grid { grid-template-columns: 1fr; }
    .zw-lines__row { grid-template-columns: 1fr 1fr; }
    .zw-lines__row > :first-child { grid-column: 1 / -1; }
}

/* ── Footer ───────────────────────────────────────────────────────────── */
.zw-footer { background: #2b2528; color: #d9ced0; margin-top: 64px; padding: 48px 20px 0; }
.zw-footer a { color: #d9ced0; text-decoration: none; }
.zw-footer a:hover { color: #fff; text-decoration: underline; }
.zw-footer__grid { max-width: 1200px; margin: 0 auto; display: grid; grid-template-columns: 1.6fr 1fr 1fr 1fr; gap: 36px; }
.zw-footer .zw-footer__title { color: #fff; font: 600 13px var(--zw-sans); text-transform: uppercase; letter-spacing: .12em; margin: 0 0 14px; }
.zw-footer ul { list-style: none; margin: 0; padding: 0; }
.zw-footer li { margin-bottom: 8px; font-size: 14px; }
.zw-footer__brand { font: 600 22px var(--zw-serif); letter-spacing: .16em; text-transform: uppercase; color: #fff; margin-bottom: 10px; }
.zw-footer__about { font-size: 14px; max-width: 320px; }
.zw-footer__bottom { max-width: 1200px; margin: 36px auto 0; border-top: 1px solid #4a4044; padding: 18px 0; display: flex; justify-content: space-between; gap: 12px; flex-wrap: wrap; font-size: 13px; color: #a89da0; }
@media (max-width: 760px) { .zw-footer__grid { grid-template-columns: 1fr 1fr; } }

/* ── Dropdown menus ───────────────────────────────────────────────────── */
.zw-menu li { position: relative; }
.zw-menu .sub-menu { display: none; position: absolute; top: 100%; left: -14px; min-width: 230px; background: #fff; border: 1px solid var(--zw-line); border-radius: var(--zw-radius); box-shadow: 0 12px 30px rgba(43,37,40,.1); list-style: none; margin: 0; padding: 8px 0; z-index: 60; }
.zw-menu li:hover > .sub-menu, .zw-menu li:focus-within > .sub-menu { display: block; }
.zw-menu .sub-menu a { display: block; padding: 8px 18px; border-bottom: 0; font-weight: 400; }
.zw-menu .sub-menu a:hover { background: var(--zw-tint); }
@media (max-width: 1080px) {
    .zw-menu .sub-menu { display: block; position: static; border: 0; box-shadow: none; padding: 0 0 0 14px; min-width: 0; }
    .zw-menu .sub-menu a { padding: 9px 0; border-bottom: 1px solid var(--zw-line); }
}

/* ── Product grid (own layout, independent of Storefront floats) ──────── */
.woocommerce ul.products, ul.products { display: grid; grid-template-columns: repeat(4, 1fr); gap: 28px 22px; margin: 0 0 32px; padding: 0; list-style: none; }
.woocommerce ul.products::before, .woocommerce ul.products::after { display: none; }
.woocommerce ul.products li.product, ul.products li.product { width: auto !important; float: none !important; margin: 0 !important; clear: none !important; }
.woocommerce ul.products li.product .button { margin-top: 8px; padding: 9px 18px; font-size: 14px; }
@media (max-width: 1000px) { .woocommerce ul.products, ul.products { grid-template-columns: repeat(3, 1fr); } }
@media (max-width: 700px) { .woocommerce ul.products, ul.products { grid-template-columns: repeat(2, 1fr); gap: 20px 14px; } }
.woocommerce .woocommerce-ordering, .woocommerce .woocommerce-result-count { margin-bottom: 18px; }
.zw-footer ul li a, .zw-footer .menu a { color: #d9ced0; }
.zw-footer ul li a:hover { color: #fff; }

/* ── Logo (footer), option chips ──────────────────────────────────────── */
.zw-footer__logo { width: 150px; height: auto; display: block; margin-bottom: 12px; }
@media (max-width: 1080px) { .zw-logo__mark { height: 38px; } .zw-logo__word { font-size: 16px; } .zw-logo { gap: 8px; } }
.zw-opts { margin: 0 0 12px; }
.zw-opts__label { display: block; font-size: 13px; font-weight: 600; margin-bottom: 6px; }
.zw-chip { display: inline-block; border: 1px solid var(--zw-line); background: #fff; border-radius: 999px; padding: 4px 12px; margin: 0 6px 6px 0; font-size: 13px; }

.zw-logo__word, .zw-menu a { white-space: nowrap; }
.zw-logo__mark { flex: none; }
.zw-menu { gap: 22px; }

/* ── Header logo lockup ───────────────────────────────────────────────── */
.zw-logo__img { height: 64px; width: auto; display: block; }
.zw-header__inner { padding-top: 10px; padding-bottom: 10px; }
@media (max-width: 1080px) { .zw-logo__img { height: 48px; } }

/* ── Colour gallery (product page) ────────────────────────────────────── */
.zw-colours { clear: both; margin: 40px 0; }
.zw-colour-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 18px; }
.zw-colour-grid figure { margin: 0; }
.zw-colour-grid img { width: 100%; height: auto; border-radius: var(--zw-radius); display: block; background: var(--zw-tint); }
.zw-colour-grid figcaption { font-size: 14px; text-align: center; padding-top: 6px; }
@media (max-width: 900px) { .zw-colour-grid { grid-template-columns: repeat(2, 1fr); } }

/* ── Filters, cookie notice, 404 ──────────────────────────────────────── */
.zw-filters { display: flex; flex-wrap: wrap; gap: 10px; align-items: center; margin: 0 0 20px; }
.zw-filters__label { font-weight: 600; font-size: 14px; margin-right: 4px; }
.zw-filters select { min-width: 150px; padding: 8px 12px; }
.zw-filters__reset { font-size: 14px; }
.zw-cookie { position: fixed; left: 16px; right: 16px; bottom: 16px; z-index: 100; max-width: 760px; margin: 0 auto; background: #fff; border: 1px solid var(--zw-line); border-radius: 14px; box-shadow: 0 12px 40px rgba(43,37,40,.18); padding: 14px 18px; display: flex; gap: 16px; align-items: center; }
.zw-cookie[hidden] { display: none; }
.zw-cookie p { margin: 0; font-size: 14px; }
.zw-cookie .zw-btn { padding: 9px 22px; flex: none; }
@media (max-width: 600px) { .zw-cookie { flex-direction: column; align-items: stretch; } }
.zw-404 { text-align: center; padding: 56px 0 24px; }
.zw-404 h1 { font-size: 40px; margin: 0 0 10px; }
.zw-404 .search-form { max-width: 460px; margin: 22px auto 34px; display: flex; gap: 8px; }
.zw-404 .search-form label { flex: 1; }
.zw-404 .search-form input[type=search] { width: 100%; }

/* ── Shipping hint, progress bar, drawer, sticky bar, swatches, complete-the-set ─ */
.zw-ship { border: 1px solid var(--zw-line); background: #fff; border-radius: var(--zw-radius); padding: 12px 14px; margin: 0 0 16px; font-size: 14px; }
.zw-ship[hidden] { display: none; }
.zw-ship__top { display: flex; align-items: center; gap: 8px; margin-bottom: 4px; color: var(--zw-berry); }
.zw-ship__top label { font-weight: 600; color: var(--zw-ink); }
.zw-ship__top select { padding: 4px 8px; font-size: 14px; }
.zw-ship p { margin: 0; color: var(--zw-muted); }
.zw-ship p strong { color: var(--zw-ink); }

.zw-progress { background: var(--zw-tint); border-radius: var(--zw-radius); padding: 12px 16px; margin: 0 0 18px; }
.zw-progress p { margin: 0 0 8px; font-size: 14px; }
.zw-progress__bar { height: 8px; background: #fff; border-radius: 99px; overflow: hidden; }
.zw-progress__bar span { display: block; height: 100%; background: var(--zw-berry); border-radius: 99px; transition: width .3s; }

.zw-noscroll { overflow: hidden; }
.zw-drawer-overlay { position: fixed; inset: 0; background: rgba(43,37,40,.45); z-index: 200; }
.zw-drawer { position: fixed; top: 0; right: 0; bottom: 0; width: min(420px, 100vw); background: #fff; z-index: 210; display: flex; flex-direction: column; padding: 20px; box-shadow: -10px 0 40px rgba(43,37,40,.2); overflow-y: auto; }
.zw-drawer[hidden], .zw-drawer-overlay[hidden] { display: none; }
.zw-drawer__head { display: flex; justify-content: space-between; align-items: center; margin-bottom: 12px; }
.zw-drawer__head h2 { margin: 0; font-size: 24px; }
.zw-drawer__close { background: none; border: 0; font-size: 32px; line-height: 1; cursor: pointer; color: var(--zw-ink); }
.zw-drawer__items { list-style: none; margin: 0 0 12px; padding: 0; flex: 1; }
.zw-drawer__items li { display: grid; grid-template-columns: 72px 1fr auto; gap: 12px; padding: 14px 0; border-bottom: 1px solid var(--zw-line); }
.zw-drawer__img img { width: 72px; height: 72px; object-fit: cover; border-radius: 8px; display: block; }
.zw-drawer__meta { font-size: 14px; display: flex; flex-direction: column; gap: 3px; }
.zw-drawer__meta a { color: var(--zw-ink); font-weight: 500; text-decoration: none; }
.zw-drawer__var { color: var(--zw-muted); font-size: 13px; }
.zw-drawer__row { display: flex; justify-content: space-between; align-items: center; margin-top: 6px; }
.zw-qty { display: inline-flex; align-items: center; border: 1px solid var(--zw-line); border-radius: 99px; }
.zw-qty button { background: none; border: 0; width: 30px; height: 30px; font-size: 18px; cursor: pointer; }
.zw-qty span { min-width: 22px; text-align: center; }
.zw-drawer__remove { background: none; border: 0; font-size: 22px; color: var(--zw-muted); cursor: pointer; align-self: start; }
.zw-drawer__sub { display: flex; justify-content: space-between; font-size: 17px; margin-bottom: 4px; }
.zw-drawer__note { font-size: 13px; color: var(--zw-muted); margin: 0 0 12px; }
.zw-drawer__checkout { display: block; text-align: center; width: 100%; box-sizing: border-box; }
.zw-drawer__view { display: block; text-align: center; margin-top: 10px; font-size: 14px; }
.zw-drawer__empty { color: var(--zw-muted); }

.zw-sticky { position: fixed; left: 0; right: 0; bottom: 0; z-index: 90; background: #fff; border-top: 1px solid var(--zw-line); padding: 10px 16px; display: flex; gap: 12px; align-items: center; box-shadow: 0 -6px 20px rgba(43,37,40,.08); }
.zw-sticky[hidden] { display: none; }
.zw-sticky__info { flex: 1; min-width: 0; display: flex; flex-direction: column; font-size: 13px; }
.zw-sticky__name { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; font-weight: 600; }
.zw-sticky__price { color: var(--zw-berry); font-weight: 600; }
.zw-sticky__btn { flex: none; padding: 11px 22px; }
.zw-pulse { animation: zwpulse 0.8s ease 2; }
@keyframes zwpulse { 50% { box-shadow: 0 0 0 6px rgba(122,46,77,.25); } }
@media (min-width: 801px) { .zw-sticky { display: none; } }

.zw-opts-pick { display: flex; flex-wrap: wrap; gap: 8px; margin: 4px 0 6px; }
.zw-opts-pick button { border: 1px solid var(--zw-line); background: #fff; border-radius: 99px; padding: 7px 16px; font: 500 14px var(--zw-sans); cursor: pointer; color: var(--zw-ink); }
.zw-opts-pick button.is-active { border-color: var(--zw-berry); box-shadow: 0 0 0 2px var(--zw-berry); }
.zw-opts-pick button:disabled { opacity: .4; cursor: not-allowed; text-decoration: line-through; }
.zw-opts-pick--color button.zw-swatch { padding: 3px; border-radius: 50%; width: 38px; height: 38px; display: inline-flex; align-items: center; justify-content: center; }
.zw-sw { display: block; width: 28px; height: 28px; border-radius: 50%; border: 1px solid rgba(0,0,0,.18); }
.zw-opts-pick__label { display: block; font-size: 14px; color: var(--zw-muted); min-height: 20px; }
.woocommerce div.product form.cart .variations td, .woocommerce div.product form.cart .variations th { display: block; padding: 0; }
.woocommerce div.product form.cart .variations .label { margin-top: 10px; }

.zw-complete { clear: both; margin: 40px 0 10px; }
.zw-complete h2 { font-size: 28px; margin: 0 0 16px; }

/* ── FAQ, breadcrumbs ─────────────────────────────────────────────────── */
.zw-faq h2 { font-size: 26px; margin: 32px 0 12px; }
.zw-faq details { border: 1px solid var(--zw-line); background: #fff; border-radius: var(--zw-radius); margin: 0 0 10px; }
.zw-faq summary { cursor: pointer; padding: 14px 18px; font-weight: 600; list-style: none; position: relative; padding-right: 44px; }
.zw-faq summary::-webkit-details-marker { display: none; }
.zw-faq summary::after { content: '+'; position: absolute; right: 18px; top: 50%; transform: translateY(-50%); font-size: 22px; color: var(--zw-berry); }
.zw-faq details[open] summary::after { content: '2'; }
.zw-faq__a { padding: 0 18px 14px; color: var(--zw-ink); }
.zw-faq__a p { margin: 0; }
.zw-crumbs { font-size: 13px; color: var(--zw-muted); margin: 18px 0 0; }
.zw-crumbs a { color: var(--zw-muted); }

/* ── Product page layout: balanced two columns, square gallery ────────── */
@media (min-width: 801px) {
    .woocommerce div.product { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); column-gap: 56px; align-items: start; }
    .woocommerce div.product div.images, .woocommerce div.product div.summary, .woocommerce div.product .woocommerce-product-gallery { float: none !important; width: 100% !important; max-width: none; margin: 0 !important; clear: none; }
    .woocommerce div.product div.images { grid-column: 1; }
    .woocommerce div.product div.summary { grid-column: 2; }
    .woocommerce div.product .woocommerce-tabs, .woocommerce div.product .zw-colours, .woocommerce div.product .zw-complete,
    .woocommerce div.product .related, .woocommerce div.product .upsells, .woocommerce div.product > .onsale { grid-column: 1 / -1; }
}
.woocommerce div.product div.images { position: relative; }
.woocommerce div.product div.images .woocommerce-product-gallery__image img { width: 100%; height: auto; aspect-ratio: 1 / 1; object-fit: contain; background: #fff; border-radius: 14px; display: block; }
.woocommerce div.product div.images .flex-viewport { border-radius: 14px; background: #fff; }
.woocommerce div.product div.images .flex-control-thumbs { display: grid; grid-template-columns: repeat(auto-fill, minmax(62px, 1fr)); gap: 10px; margin: 12px 0 0; padding: 0; list-style: none; }
.woocommerce div.product div.images .flex-control-thumbs li { width: auto !important; float: none !important; margin: 0 !important; }
.woocommerce div.product div.images .flex-control-thumbs img { width: 100%; aspect-ratio: 1 / 1; object-fit: cover; border-radius: 8px; border: 2px solid transparent; opacity: .65; cursor: pointer; }
.woocommerce div.product div.images .flex-control-thumbs img.flex-active, .woocommerce div.product div.images .flex-control-thumbs img:hover { opacity: 1; border-color: var(--zw-berry); }
.woocommerce div.product div.images .woocommerce-product-gallery__trigger { top: 14px; right: 14px; }
@media (max-width: 800px) { .woocommerce div.product div.images .flex-control-thumbs { grid-template-columns: repeat(auto-fill, minmax(56px, 1fr)); } }

/* ── Product video ────────────────────────────────────────────────────── */
.zw-video { clear: both; margin: 36px 0; }
.zw-video h2 { font-size: 28px; margin: 0 0 14px; }
.zw-video video { display: block; width: 100%; max-width: 860px; height: auto; border-radius: 14px; background: #000; }
@media (min-width: 801px) { .woocommerce div.product .zw-video { grid-column: 1 / -1; } }

/* ── Header search, cookie vs sticky bar ─────────────────────────────── */
.zw-search-toggle { background: none; border: 0; padding: 0; cursor: pointer; }
.zw-search { background: #fff; border-bottom: 1px solid var(--zw-line); padding: 12px 20px; display: flex; gap: 10px; max-width: none; justify-content: center; }
.zw-search[hidden] { display: none; }
.zw-search input[type=search] { flex: 1; max-width: 560px; }
.zw-search .zw-btn { padding: 10px 22px; }
body.zw-has-sticky .zw-cookie { bottom: 84px; }

.zw-detail-img { display: block; width: 100%; max-width: 720px; height: auto; margin: 24px auto 0; border-radius: 14px; }

/* ══ Motion (Tier A): calm, slow, GPU-friendly (opacity/transform only) ══ */
:root { --zw-ease: cubic-bezier(.22, .7, .2, 1); }

/* scroll reveal: only hidden when JS is running, so no-JS visitors still see everything */
.zw-js .zw-reveal { opacity: 0; transform: translateY(26px); transition: opacity .8s var(--zw-ease), transform .8s var(--zw-ease); transition-delay: var(--d, 0ms); will-change: opacity, transform; }
.zw-js .zw-reveal.is-in { opacity: 1; transform: none; will-change: auto; }

/* header shrinks on scroll */
.zw-header { transition: box-shadow .3s ease; }
.zw-header__inner { transition: padding .3s var(--zw-ease); }
.zw-logo__img { transition: height .3s var(--zw-ease); }
.zw-header.is-scrolled { box-shadow: 0 6px 24px rgba(43, 37, 40, .08); }
.zw-header.is-scrolled .zw-header__inner { padding-top: 5px; padding-bottom: 5px; }
@media (min-width: 1081px) { .zw-header.is-scrolled .zw-logo__img { height: 48px; } }

/* buttons */
.zw-btn, .button, button.button, input[type=submit], .woocommerce a.button, .woocommerce button.button, .single_add_to_cart_button.button.alt {
    transition: background .25s ease, color .25s ease, transform .2s var(--zw-ease), box-shadow .25s ease; }
.zw-btn:hover, .button:hover, .woocommerce a.button:hover, .woocommerce button.button:hover { transform: translateY(-2px); box-shadow: 0 10px 22px rgba(122, 46, 77, .22); }
.zw-btn:active, .button:active, .woocommerce a.button:active, .woocommerce button.button:active { transform: translateY(0) scale(.98); box-shadow: none; }
.single_add_to_cart_button.is-added { background: #2f7d57 !important; border-color: #2f7d57 !important; }

/* product cards: slow zoom + second image fades in */
.zw-card__img { display: block; position: relative; overflow: hidden; border-radius: var(--zw-radius); aspect-ratio: 1; background: var(--zw-tint); }
.woocommerce ul.products li.product .zw-card__img img { margin: 0; width: 100%; height: 100%; object-fit: cover; border-radius: 0; transition: transform 1s var(--zw-ease), opacity .6s ease; }
.zw-card__hover { position: absolute; inset: 0; opacity: 0; }
@media (hover: hover) {
    .woocommerce ul.products li.product:hover .zw-card__img img { transform: scale(1.06); }
    .woocommerce ul.products li.product:hover .zw-card__hover { opacity: 1; }
}

/* level cards: image slowly zooms */
.zw-level__img img { transition: transform 1s var(--zw-ease); }
@media (hover: hover) { .zw-level:hover .zw-level__img img { transform: scale(1.07); } }

/* nav dropdown: fade + gentle drop */
@media (min-width: 1081px) {
    .zw-menu .sub-menu { display: block; opacity: 0; visibility: hidden; transform: translateY(8px); transition: opacity .25s ease, transform .3s var(--zw-ease), visibility 0s linear .3s; }
    .zw-menu li:hover > .sub-menu, .zw-menu li:focus-within > .sub-menu { opacity: 1; visibility: visible; transform: none; transition-delay: 0s; }
}

/* cart drawer slides in / out; cart icon bumps */
.zw-drawer { animation: zwSlideIn .4s var(--zw-ease) both; }
.zw-drawer-overlay { animation: zwFadeIn .3s ease both; }
.zw-drawer.is-closing { animation: zwSlideOut .26s ease forwards; }
.zw-drawer-overlay.is-closing { animation: zwFadeOut .26s ease forwards; }
@keyframes zwSlideIn { from { transform: translateX(100%); } to { transform: none; } }
@keyframes zwSlideOut { to { transform: translateX(100%); } }
@keyframes zwFadeIn { from { opacity: 0; } to { opacity: 1; } }
@keyframes zwFadeOut { to { opacity: 0; } }
.zw-cart.zw-bump { animation: zwBump .5s var(--zw-ease); }
@keyframes zwBump { 30% { transform: scale(1.25); } 60% { transform: scale(.94); } 100% { transform: none; } }

/* swatches + gallery */
.zw-opts-pick button { transition: transform .2s var(--zw-ease), box-shadow .25s ease, border-color .25s ease; }
@media (hover: hover) { .zw-opts-pick button:not(:disabled):hover { transform: scale(1.1); } }
.zw-opts-pick button.is-active { transform: scale(1.06); }
.zw-fade { animation: zwImgFade .5s ease; }
@keyframes zwImgFade { from { opacity: .15; } to { opacity: 1; } }
.zw-progress__bar span { transition: width .8s var(--zw-ease); }
.zw-hero__img img { transition: transform 1.4s var(--zw-ease); }
@media (hover: hover) { .zw-hero__img:hover img { transform: scale(1.02); } }

/* respect "reduce motion" */
@media (prefers-reduced-motion: reduce) {
    *, *::before, *::after { animation-duration: .001ms !important; animation-iteration-count: 1 !important; transition-duration: .001ms !important; transition-delay: 0ms !important; scroll-behavior: auto !important; }
    .zw-js .zw-reveal { opacity: 1; transform: none; }
}

/* ══ Tier B: editorial home (Repetto / Xiaoxiao inspired) ══ */
.zw-hero2 { display: grid; grid-template-columns: 1fr 1fr; gap: 2px; height: calc(100vh - 112px); min-height: 520px; max-height: 860px; background: var(--zw-bg); }
.zw-hero2__panel { position: relative; overflow: hidden; display: block; color: #fff; text-decoration: none; background: var(--zw-tint); }
.zw-hero2__panel img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: center 30%; transform-origin: 50% 40%; animation: zwBreath 22s ease-in-out infinite alternate; }
.zw-hero2__panel::after { content: ''; position: absolute; inset: 0; background: linear-gradient(to top, rgba(43,37,40,.62) 0%, rgba(43,37,40,.18) 38%, rgba(43,37,40,0) 62%); transition: opacity .6s ease; }
@keyframes zwBreath { from { transform: scale(1); } to { transform: scale(1.08); } }
.zw-hero2__cap { position: absolute; left: clamp(20px, 3vw, 44px); bottom: clamp(24px, 4vw, 52px); z-index: 2; display: flex; flex-direction: column; gap: 6px; color: #fff; }
.zw-hero2__eyebrow { font: 600 12px var(--zw-sans); letter-spacing: .18em; text-transform: uppercase; opacity: .92; }
.zw-hero2__title { font: 500 clamp(30px, 4vw, 54px)/1.08 var(--zw-serif); }
.zw-hero2__link { font: 600 13px var(--zw-sans); letter-spacing: .16em; text-transform: uppercase; margin-top: 8px; padding-bottom: 4px; border-bottom: 1px solid rgba(255,255,255,.85); align-self: flex-start; transition: letter-spacing .35s var(--zw-ease), border-color .35s ease; }
.zw-hero2__panel:hover .zw-hero2__link { letter-spacing: .26em; }
.zw-hero2__panel:hover, .zw-hero2__panel:focus { color: #fff; }
/* caption lines rise one by one on load */
.zw-js .zw-hero2__cap > * { opacity: 0; transform: translateY(22px); animation: zwRise .9s var(--zw-ease) forwards; }
.zw-js .zw-hero2__cap > :nth-child(1) { animation-delay: .35s; }
.zw-js .zw-hero2__cap > :nth-child(2) { animation-delay: .5s; }
.zw-js .zw-hero2__cap > :nth-child(3) { animation-delay: .65s; }
.zw-js .zw-hero2__panel:nth-child(2) .zw-hero2__cap > * { animation-delay: calc(var(--zw-d, 0s) + .2s); }
.zw-js .zw-hero2__panel:nth-child(2) .zw-hero2__cap > :nth-child(1) { animation-delay: .55s; }
.zw-js .zw-hero2__panel:nth-child(2) .zw-hero2__cap > :nth-child(2) { animation-delay: .7s; }
.zw-js .zw-hero2__panel:nth-child(2) .zw-hero2__cap > :nth-child(3) { animation-delay: .85s; }
@keyframes zwRise { to { opacity: 1; transform: none; } }

.zw-statement { text-align: center; padding: clamp(56px, 9vw, 112px) 20px clamp(24px, 4vw, 48px); max-width: 940px; margin: 0 auto; }
.zw-statement h1 { font-size: clamp(30px, 4.4vw, 54px); line-height: 1.14; margin: 0 0 20px; }
.zw-statement__lede { color: var(--zw-muted); font-size: 18px; max-width: 680px; margin: 0 auto 28px; }

.zw-numbers { padding: 28px 0 8px; }
.zw-numbers__grid { display: grid; grid-template-columns: repeat(3, 1fr); text-align: center; gap: 20px; border-top: 1px solid var(--zw-line); border-bottom: 1px solid var(--zw-line); padding-top: 34px; padding-bottom: 34px; }
.zw-numbers strong { display: block; font: 500 clamp(40px, 6vw, 68px)/1 var(--zw-serif); color: var(--zw-berry); }
.zw-numbers span { display: block; margin-top: 8px; font-size: 13px; letter-spacing: .14em; text-transform: uppercase; color: var(--zw-muted); }

/* page transitions: gentle fade between pages */
.zw-js body { animation: zwPageIn .55s ease both; }
@keyframes zwPageIn { from { opacity: 0; } to { opacity: 1; } }
.zw-js body { transition: opacity .22s ease; }
.zw-leaving body { opacity: 0; }

/* size-finder results slide in; free-shipping bar shimmer when unlocked */
.zw-finder__item { animation: zwRise .6s var(--zw-ease) both; }
.zw-finder__item:nth-child(2) { animation-delay: .08s; } .zw-finder__item:nth-child(3) { animation-delay: .16s; } .zw-finder__item:nth-child(4) { animation-delay: .24s; }
.zw-progress[data-pct="100"] .zw-progress__bar span { background: linear-gradient(100deg, var(--zw-berry) 30%, #c0678a 50%, var(--zw-berry) 70%); background-size: 200% 100%; animation: zwShimmer 2.4s linear infinite; }
@keyframes zwShimmer { to { background-position: -200% 0; } }

@media (max-width: 760px) {
    .zw-hero2 { grid-template-columns: 1fr; height: auto; max-height: none; }
    .zw-hero2__panel { min-height: 96vw; }
    .zw-numbers__grid { gap: 8px; }
    .zw-numbers span { font-size: 11px; letter-spacing: .08em; }
}
@media (prefers-reduced-motion: reduce) {
    .zw-js .zw-hero2__cap > * { opacity: 1; transform: none; }
    .zw-hero2__panel img { animation: none; }
}

/* ══ Parallax hero images need a little extra height to move in ══ */
.zw-hero2__panel img { top: -8%; height: 116%; will-change: translate; }

/* ══ Level rail: sideways scroll, snap, drag, progress ══ */
.zw-railwrap { position: relative; }
.zw-rail { display: flex; gap: 20px; overflow-x: auto; scroll-snap-type: x mandatory; scrollbar-width: none; padding: 4px 0 6px; cursor: grab; overscroll-behavior-x: contain; -webkit-overflow-scrolling: touch; }
.zw-rail::-webkit-scrollbar { display: none; }
.zw-rail.is-dragging { cursor: grabbing; scroll-snap-type: none; scroll-behavior: auto; user-select: none; }
.zw-rail.is-dragging a { pointer-events: none; }
.zw-rail .zw-level { flex: 0 0 clamp(250px, 27vw, 340px); scroll-snap-align: start; }
.zw-rail .zw-level__img { aspect-ratio: 4 / 5; }
.zw-rail:focus-visible { outline: 2px solid var(--zw-berry); outline-offset: 4px; border-radius: 8px; }
.zw-rail__bar { display: flex; align-items: center; gap: 24px; margin-top: 22px; }
.zw-rail__track { position: relative; flex: 1; height: 2px; background: var(--zw-line); border-radius: 2px; }
.zw-rail__prog { position: absolute; top: 0; left: 0; height: 2px; width: 30%; background: var(--zw-berry); border-radius: 2px; transition: left .12s linear, width .2s ease; }
.zw-rail__btns { display: flex; gap: 10px; }
.zw-rail__btn { width: 44px; height: 44px; border-radius: 50%; border: 1px solid var(--zw-line); background: #fff; font-size: 18px; cursor: pointer; color: var(--zw-ink); transition: background .2s ease, color .2s ease, border-color .2s ease, transform .2s var(--zw-ease); }
.zw-rail__btn:hover { background: var(--zw-berry); color: #fff; border-color: var(--zw-berry); transform: translateY(-2px); }
.zw-railwrap.no-scroll .zw-rail__bar { display: none; }
@media (max-width: 760px) {
    .zw-rail .zw-level { flex-basis: 72vw; }
    .zw-rail__btns { display: none; }
    .zw-rail { cursor: auto; }
}

/* fade mode has no flex-viewport: make the wrapper contain its floated slides so the thumbnails sit below */
.woocommerce div.product div.images .woocommerce-product-gallery__wrapper { display: flow-root; }
.woocommerce div.product div.images.woocommerce-product-gallery { height: auto !important; }

/* cart drawer quantity stepper: reset theme button styles so the − / + sit centred on the number */
.zw-qty { display: inline-flex; align-items: center; height: 36px; border: 1px solid var(--zw-line); border-radius: 99px; background: #fff; padding: 0 2px; }
.zw-qty button { all: unset; box-sizing: border-box; display: inline-flex; align-items: center; justify-content: center; width: 32px; height: 32px; border-radius: 50%; font: 500 18px/1 var(--zw-sans); color: var(--zw-ink); cursor: pointer; text-align: center; transition: background .2s ease; }
.zw-qty button:hover { background: var(--zw-tint); }
.zw-qty button:focus-visible { outline: 2px solid var(--zw-berry); }
.zw-qty span { min-width: 26px; text-align: center; font: 500 15px/1 var(--zw-sans); }
.zw-drawer__remove { all: unset; box-sizing: border-box; width: 28px; height: 28px; display: inline-flex; align-items: center; justify-content: center; font: 400 22px/1 var(--zw-sans); color: var(--zw-muted); cursor: pointer; border-radius: 50%; }
.zw-drawer__remove:hover { background: var(--zw-tint); color: var(--zw-ink); }
.zw-drawer__close { all: unset; box-sizing: border-box; width: 36px; height: 36px; display: inline-flex; align-items: center; justify-content: center; font: 400 30px/1 var(--zw-sans); cursor: pointer; border-radius: 50%; color: var(--zw-ink); }
.zw-drawer__close:hover { background: var(--zw-tint); }
.zw-drawer__meta a { overflow-wrap: anywhere; line-height: 1.35; }

/* ── Upsell in drawer, fly-to-cart, colour dots ───────────────────────── */
.zw-upsell { border-top: 1px solid var(--zw-line); padding: 14px 0 6px; }
.zw-upsell__title { font: 600 13px var(--zw-sans); letter-spacing: .06em; text-transform: uppercase; color: var(--zw-berry); margin: 0 0 10px; }
.zw-upsell__item { display: grid; grid-template-columns: 52px 1fr auto; gap: 12px; align-items: center; padding: 8px 0; }
.zw-upsell__img img { width: 52px; height: 52px; object-fit: cover; border-radius: 8px; display: block; }
.zw-upsell__meta { display: flex; flex-direction: column; font-size: 14px; min-width: 0; }
.zw-upsell__meta a { color: var(--zw-ink); text-decoration: none; font-weight: 500; line-height: 1.3; overflow-wrap: anywhere; }
.zw-upsell__meta span { color: var(--zw-muted); font-size: 13px; }
.zw-upsell__add { all: unset; box-sizing: border-box; cursor: pointer; border: 1px solid var(--zw-berry); color: var(--zw-berry); border-radius: 99px; padding: 8px 16px; font: 600 13px/1 var(--zw-sans); text-align: center; transition: background .2s ease, color .2s ease; }
.zw-upsell__add:hover { background: var(--zw-berry); color: #fff; }
.zw-fly { position: fixed; z-index: 300; object-fit: cover; border-radius: 12px; pointer-events: none; box-shadow: 0 10px 28px rgba(43,37,40,.25); will-change: transform, opacity; }

.zw-dots { display: flex; align-items: center; gap: 8px; margin: 8px 0 2px; flex-wrap: wrap; }
.zw-dot { width: 18px; height: 18px; border-radius: 50%; background: var(--c); border: 1px solid rgba(0,0,0,.2); cursor: pointer; transition: transform .2s var(--zw-ease), box-shadow .2s ease; display: inline-block; }
.zw-dot:hover { transform: scale(1.25); }
.zw-dot.is-active { box-shadow: 0 0 0 2px #fff, 0 0 0 3.5px var(--zw-berry); }
.zw-dots__more { font-size: 12px; color: var(--zw-muted); }

/* ══ Cart & checkout (WooCommerce blocks) in the ZoeDancewear style ══ */
.woocommerce-cart .entry-title, .woocommerce-checkout .entry-title { text-align: center; font-size: clamp(30px, 4vw, 44px); margin: 28px 0 24px; }
.wp-block-woocommerce-cart, .wp-block-woocommerce-checkout { --zwb-radius: 12px; accent-color: var(--zw-berry); }

/* buttons: berry pill like the rest of the site */
.wc-block-components-button:not(.is-link), .wc-block-cart__submit-button, .wc-block-components-checkout-place-order-button {
    background: var(--zw-berry); color: #fff; border: 1px solid var(--zw-berry); border-radius: 999px; padding: 15px 30px;
    font: 600 16px/1.2 var(--zw-sans); letter-spacing: .01em; text-transform: none; transition: background .25s ease, transform .2s var(--zw-ease), box-shadow .25s ease; }
.wc-block-components-button:not(.is-link):hover, .wc-block-cart__submit-button:hover, .wc-block-components-checkout-place-order-button:hover {
    background: var(--zw-berry-dark); color: #fff; transform: translateY(-1px); box-shadow: 0 10px 22px rgba(122,46,77,.22); }
.wc-block-components-button:not(.is-link):active { transform: none; box-shadow: none; }
.wc-block-components-button.outlined, .wc-block-components-totals-coupon__button { background: transparent; color: var(--zw-berry); border: 1px solid var(--zw-berry); }
.wc-block-components-button.outlined:hover, .wc-block-components-totals-coupon__button:hover { background: var(--zw-berry); color: #fff; }
.wc-block-components-checkout-place-order-button { width: 100%; }
.wc-block-components-button.is-link, .wc-block-cart-item__remove-link, .wc-block-components-checkout-return-to-cart-button { color: var(--zw-berry); }

/* inputs */
.wc-block-components-text-input input, .wc-block-components-textarea, .wc-block-components-address-form select, .wc-blocks-components-select__select,
.wc-block-components-country-input select, .wc-block-components-state-input select, .wc-block-components-combobox .components-form-token-field__input-container {
    border: 1px solid var(--zw-line); border-radius: 10px; background: #fff; font-family: var(--zw-sans); color: var(--zw-ink); }
.wc-block-components-text-input input:focus, .wc-block-components-textarea:focus, .wc-blocks-components-select__select:focus {
    border-color: var(--zw-berry); box-shadow: 0 0 0 3px rgba(122,46,77,.14); outline: 0; }
.wc-block-components-text-input label, .wc-block-components-text-input.is-active label { font-family: var(--zw-sans); color: var(--zw-muted); }

/* steps and section titles */
.wc-block-components-checkout-step__title, .wc-block-components-title { font-family: var(--zw-serif); font-weight: 500; font-size: 24px; color: var(--zw-ink); }
.wc-block-components-checkout-step__description { color: var(--zw-muted); }

/* order summary: soft card */
.wc-block-components-sidebar, .wp-block-woocommerce-checkout-order-summary-block, .wp-block-woocommerce-cart-order-summary-block {
    background: #fff; border: 1px solid var(--zw-line); border-radius: 16px; padding: 22px 22px 8px; }
.wc-block-components-order-summary__button-text, .wc-block-cart__totals-title { font-family: var(--zw-serif); font-size: 22px; font-weight: 500; text-transform: none; letter-spacing: 0; }
.wc-block-components-totals-footer-item .wc-block-components-totals-item__value, .wc-block-components-totals-footer-item .wc-block-components-totals-item__label { font-size: 20px; font-weight: 600; color: var(--zw-ink); }
.wc-block-components-product-name { font-weight: 500; color: var(--zw-ink); text-decoration: none; }
.wc-block-components-order-summary-item__image img, .wc-block-cart-item__image img { border-radius: 10px; }
.wc-block-components-order-summary-item__quantity { background: var(--zw-berry); color: #fff; border: 2px solid #fff; box-shadow: none; }

/* shipping / payment options: radio cards */
.wc-block-components-radio-control__option, .wc-block-components-radio-control-accordion-option { border-radius: 12px; }
.wc-block-components-radio-control--highlight-checked .wc-block-components-radio-control__option-checked { border-color: var(--zw-berry); box-shadow: inset 0 0 0 1px var(--zw-berry); }
.wc-block-components-radio-control__input:checked::before, .wc-block-components-checkbox__input:checked { background-color: var(--zw-berry); }

/* cart page */
.wc-block-cart-items .wc-block-cart-items__row { border-color: var(--zw-line); }
.wc-block-cart-items__header th, .wc-block-cart-items__header-image, .wc-block-cart-items__header-product, .wc-block-cart-items__header-total { font: 600 12px var(--zw-sans); letter-spacing: .12em; text-transform: uppercase; color: var(--zw-muted); }
.wc-block-components-quantity-selector { border: 1px solid var(--zw-line); border-radius: 99px; background: #fff; }
.wc-block-components-quantity-selector::after { display: none; }
.wc-block-components-quantity-selector__button { color: var(--zw-ink); border-radius: 50%; }
.wc-block-components-quantity-selector__button:hover { background: var(--zw-tint); }
.wc-block-components-quantity-selector__input { font-family: var(--zw-sans); }

/* notices and the free-shipping bar above the cart */
.wc-block-components-notice-banner { border-radius: 12px; font-family: var(--zw-sans); }
.wc-block-components-notice-banner.is-error { background: #fdecec; border-color: #f3b8b8; }
.wc-block-components-notice-banner.is-success { background: #e9f6ec; border-color: #b7dfc0; }
.woocommerce-cart .zw-progress { max-width: 1100px; margin: 0 auto 22px; }

@media (max-width: 760px) {
    .wc-block-components-sidebar, .wp-block-woocommerce-checkout-order-summary-block, .wp-block-woocommerce-cart-order-summary-block { padding: 16px 16px 4px; border-radius: 14px; }
    .wc-block-components-checkout-step__title { font-size: 21px; }
    .wc-block-components-button:not(.is-link) { padding: 15px 22px; }
    .wc-block-components-text-input input { font-size: 16px; } /* avoids iOS zoom on focus */
}

/* specificity fixes for the block checkout */
.wc-block-components-text-input input[type="text"], .wc-block-components-text-input input[type="email"], .wc-block-components-text-input input[type="tel"],
.wc-block-components-text-input input[type="number"], .wc-block-components-text-input input[type="password"], .wc-block-components-address-form .wc-blocks-components-select__select,
.wc-blocks-components-select .wc-blocks-components-select__select, .wc-block-components-textarea { border-radius: 10px !important; border-color: var(--zw-line) !important; }
.wc-block-components-text-input input:focus, .wc-blocks-components-select .wc-blocks-components-select__select:focus { border-color: var(--zw-berry) !important; box-shadow: 0 0 0 3px rgba(122,46,77,.14) !important; }
.wp-block-woocommerce-checkout-order-summary-block, .wp-block-woocommerce-cart-order-summary-block, .wp-block-woocommerce-checkout-order-summary-cart-items-block { border: 0 !important; padding: 0 !important; background: transparent !important; }
.wc-block-components-order-summary .wc-block-components-order-summary-item__quantity { background: var(--zw-berry) !important; color: #fff !important; border: 2px solid #fff !important; box-shadow: none !important; }

/* ── Touch targets (mobile audit): at least ~40px ─────────────────────── */
.zw-header__tools { gap: 0; margin-right: -11px; }
.zw-tool { padding: 11px; box-sizing: content-box; align-items: center; justify-content: center; }
.zw-cart__count { top: 3px; right: 1px; font-size: 12px; }
.zw-footer li { margin-bottom: 0; }
.zw-footer li a { display: inline-block; padding: 9px 0; }
.zw-ship__top select { min-height: 40px; }
.woocommerce-pagination .page-numbers { min-width: 40px; min-height: 40px; display: inline-flex; align-items: center; justify-content: center; }
.zw-crumbs a { display: inline-block; padding: 6px 0; }
.wc-block-cart-item__remove-link { min-width: 36px; min-height: 36px; display: inline-flex; align-items: center; justify-content: center; }

/* ══ Catalog mode: "ordering opens soon" ══ */
.zw-soon { background: var(--zw-tint); border-radius: 14px; padding: 18px 20px; margin: 16px 0 20px; }
.zw-soon--wide { margin: 0 0 24px; padding: 20px 24px; }
.zw-soon__title { font: 500 22px/1.2 var(--zw-serif); margin: 0 0 4px; color: var(--zw-ink); }
.zw-soon__text { margin: 0 0 12px; color: var(--zw-muted); font-size: 14px; }
.zw-soon__form { display: flex; flex-wrap: wrap; gap: 10px; align-items: center; }
.zw-soon__form input[type=email] { flex: 1 1 220px; min-width: 0; }
.zw-soon__consent { flex: 1 1 100%; font-size: 12px; color: var(--zw-muted); font-weight: 400; display: flex; gap: 8px; align-items: flex-start; }
.zw-soon__consent input { width: auto; margin-top: 3px; }
.zw-catalog .zw-cart, .zw-catalog .zw-sticky, .zw-catalog .zw-drawer, .zw-catalog .zw-drawer-overlay { display: none !important; }
#wpadminbar .zw-adminbar-warn > a { background: #b32d2e !important; color: #fff !important; }

/* catalog-mode colour preview swatches */
.zw-preview .zw-swatch { cursor: pointer; }
.zw-opts .zw-opts-pick--color { margin-top: 6px; }

/* hero photos: keep the faces in frame whatever the panel shape */
.zw-hero2__panel img { object-position: center 14%; }
.zw-hero2__panel:nth-child(2) img { object-position: center 18%; }

/* Focus rings: no parent-theme purple; mouse clicks show nothing, keyboard shows berry */
a:focus, button:focus, input:focus, select:focus, textarea:focus, [tabindex]:focus { outline: 0; }
a:focus-visible, button:focus-visible, summary:focus-visible, [tabindex]:focus-visible { outline: 2px solid var(--zw-berry); outline-offset: 3px; }
.zw-logo:focus, .zw-logo:focus-visible { outline: 0; }
::selection { background: var(--zw-pink); color: var(--zw-ink); }
*:focus { outline: 0 !important; box-shadow: none; }
a:focus-visible, button:focus-visible, summary:focus-visible, [tabindex]:focus-visible { outline: 2px solid var(--zw-berry) !important; outline-offset: 3px; }
input:focus-visible, select:focus-visible, textarea:focus-visible { outline: 0 !important; }
.zw-logo:focus-visible, .zw-iconbtn:focus:not(:focus-visible) { outline: 0 !important; }

/* Level category banner */
.zw-banner { position: relative; width: 100vw; margin: 0 0 24px calc(50% - 50vw); height: clamp(300px, 38vw, 540px); overflow: hidden; background: var(--zw-tint); }
.zw-banner__img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: 50% 30%; display: block; }
.zw-banner--early-years .zw-banner__img { object-position: 50% 3%; }
.zw-banner--foundation .zw-banner__img { object-position: 50% 6%; }
.zw-banner--grades-1-5 .zw-banner__img { object-position: 50% 6%; }
.zw-banner--grades-6-8 .zw-banner__img { object-position: 50% 14%; }
.zw-banner--vocational .zw-banner__img { object-position: 50% 6%; }
.zw-banner__text { position: relative; height: 100%; max-width: 1200px; margin: 0 auto; padding: 0 24px; display: flex; flex-direction: column; justify-content: center; }
.zw-banner__eyebrow { margin: 0 0 6px; font: 600 12px/1 var(--zw-sans); letter-spacing: .16em; text-transform: uppercase; color: var(--zw-berry); }
.zw-banner__title { margin: 0; font-size: clamp(34px, 4.6vw, 64px); line-height: 1.05; }
@media (max-width: 700px) {
    .zw-banner { height: auto; background: var(--zw-bg); }
    .zw-banner__img { position: static; height: 62vw; }
    .zw-banner__text { padding: 18px 16px 4px; }
    .zw-banner__title { font-size: 34px; }
}
html, body { overflow-x: clip; }

/* Stripe express checkout (Apple Pay / Google Pay / Link): label sits above, Stripe lays out the buttons itself */
#wc-stripe-express-checkout-element { margin-top: 8px !important; }
.single-product form.cart:has(~ #wc-stripe-express-checkout-element:not([style*="none"]))::after { content: "Or checkout faster"; display: block; clear: both; margin: 22px 0 0; font: 600 12px/1 var(--zw-sans); letter-spacing: .12em; text-transform: uppercase; color: var(--zw-muted); }
#wc-stripe-express-checkout-button-separator { margin: 12px 0 0 !important; text-align: left !important; font-size: 12px; color: var(--zw-muted); }
.single-product #wc-stripe-express-checkout-button-separator { display: none !important; }

.zw-policy-updated { color: var(--zw-muted); font-size: 14px; margin: 0 0 8px; }
.page .entry-content h2 { margin-top: 36px; }

/* Level rail scrolls sideways only; room for the hover lift and shadow */
.zw-rail { overflow-y: hidden; padding: 10px 0 22px; margin: -6px 0 -16px; touch-action: pan-x pan-y; }

/* Headline line-rise (JS splits headings into masked lines) */
.zw-js .zw-hl:not(.zw-hl-ready) { opacity: 0; }
.zw-ln { display: block; overflow: hidden; padding-bottom: .14em; margin-bottom: -.14em; }
.zw-ln > span { display: block; transform: translateY(112%); transition: transform 1.05s var(--zw-ease); transition-delay: calc(var(--ln, 0) * 120ms); will-change: transform; }
.zw-hl.is-lines-in .zw-ln > span { transform: none; will-change: auto; }
.zw-hl.zw-nox .zw-ln > span { transition: none; }
@media (prefers-reduced-motion: reduce) { .zw-ln > span { transform: none; transition: none; } .zw-js .zw-hl:not(.zw-hl-ready) { opacity: 1; } }

/* Add-to-cart success: soft ring pulse and a small settle */
@keyframes zwAdded { 0% { box-shadow: 0 0 0 0 rgba(47, 125, 87, .45); transform: scale(1); } 35% { transform: scale(1.04); } 100% { box-shadow: 0 0 0 16px rgba(47, 125, 87, 0); transform: scale(1); } }
.single_add_to_cart_button.is-added { animation: zwAdded .9s var(--zw-ease); }

/* ── Delivery estimate, size helper, image fade-in, FAQ glide, top bar rotation, order ribbons ── */
.zw-ship__eta { margin: 8px 0 0; font-size: 14px; color: var(--zw-ink); }
.zw-ship__eta strong { color: var(--zw-berry); }
.zw-ship__eta span { color: var(--zw-muted); }

.zw-sizehelp__open { display: inline-block; margin-top: 10px; padding: 0; background: none; border: 0; color: var(--zw-berry); font: 600 14px var(--zw-sans); text-decoration: underline; text-underline-offset: 3px; cursor: pointer; box-shadow: none; }
.zw-sizehelp__open:hover { color: var(--zw-berry-dark); background: none; transform: none; box-shadow: none; }
.zw-sizehelp { margin-top: 12px; padding: 16px; background: var(--zw-tint); border-radius: 12px; animation: zwRise .4s var(--zw-ease) both; }
.zw-sizehelp[hidden] { display: none; }
.zw-sizehelp__row { display: flex; flex-wrap: wrap; gap: 12px; align-items: flex-end; }
.zw-sizehelp label { display: flex; flex-direction: column; gap: 4px; font: 600 12px var(--zw-sans); letter-spacing: .06em; text-transform: uppercase; color: var(--zw-muted); }
.zw-sizehelp input, .zw-sizehelp select { width: 120px; padding: 10px 12px; border: 1px solid var(--zw-line); border-radius: 10px; background: #fff; font: 16px var(--zw-sans); color: var(--zw-ink); text-transform: none; letter-spacing: 0; }
.zw-sh-go, .zw-sh-use { padding: 11px 20px; border: 0; border-radius: 999px; background: var(--zw-berry); color: #fff; font: 600 14px var(--zw-sans); cursor: pointer; transition: background .2s ease, transform .2s var(--zw-ease); }
.zw-sh-go:hover, .zw-sh-use:hover { background: var(--zw-berry-dark); transform: translateY(-1px); }
.zw-sh-use { margin-top: 4px; }
.zw-sh-out { margin-top: 12px; font-size: 15px; }
.zw-sh-out p { margin: 0 0 8px; }
.zw-sh-out strong { font-size: 20px; color: var(--zw-berry); }
.zw-sh-note { color: var(--zw-muted); font-size: 13px; }

.zw-js img.zw-lz { transition: opacity .8s ease; }
.zw-js img.zw-lz:not(.is-loaded) { opacity: 0; }
@keyframes zwShimmer { from { background-position: 120% 0; } to { background-position: -120% 0; } }
.zw-card__img:has(img.zw-lz:not(.is-loaded)), .zw-level__img:has(img.zw-lz:not(.is-loaded)), .woocommerce-product-gallery__image:has(img.zw-lz:not(.is-loaded)) {
    background: linear-gradient(100deg, var(--zw-tint) 30%, #fff 50%, var(--zw-tint) 70%) 0 0 / 220% 100%; animation: zwShimmer 1.6s linear infinite; }

:root { interpolate-size: allow-keywords; }
.zw-faq details::details-content { block-size: 0; overflow: clip; transition: block-size .4s var(--zw-ease), content-visibility .4s allow-discrete; }
.zw-faq details[open]::details-content { block-size: auto; }

.zw-topbar__msg { display: inline-block; transition: opacity .4s ease, transform .4s var(--zw-ease); }
.zw-topbar__msg.is-out { opacity: 0; transform: translateY(-6px); }

.zw-confetti { position: fixed; inset: 0; z-index: 90; pointer-events: none; overflow: hidden; }
.zw-confetti i { position: absolute; top: 0; border-radius: 2px; will-change: transform, opacity; }

@media (prefers-reduced-motion: reduce) { .zw-sizehelp { animation: none; } .zw-js img.zw-lz:not(.is-loaded) { opacity: 1; } .zw-confetti { display: none; } }

/* ── Phone comfort: finger-sized options, swipeable gallery, size shortcut ── */
.woocommerce-product-gallery { touch-action: pan-y pinch-zoom; }
.zw-gal-count { display: none; }
.zw-sticky__help { flex: none; background: none; border: 0; padding: 8px 4px; color: var(--zw-berry); font: 600 13px var(--zw-sans); text-decoration: underline; text-underline-offset: 3px; cursor: pointer; box-shadow: none; }
@media (max-width: 800px) {
    .zw-opts-pick { gap: 10px; }
    .zw-opts-pick button { min-height: 44px; min-width: 44px; padding: 10px 18px; font-size: 15px; }
    .zw-opts-pick--color button.zw-swatch { width: 44px; height: 44px; padding: 4px; }
    .zw-sizehelp__open { padding: 10px 0; font-size: 15px; }
    .zw-sizehelp input, .zw-sizehelp select { width: 100%; min-height: 44px; }
    .zw-sizehelp label { flex: 1 1 42%; }
    .zw-sh-go, .zw-sh-use { min-height: 44px; }
    .woocommerce div.product div.images .flex-control-thumbs { display: flex; overflow-x: auto; scroll-snap-type: x proximity; gap: 8px; padding-bottom: 4px; scrollbar-width: none; -webkit-overflow-scrolling: touch; }
    .woocommerce div.product div.images .flex-control-thumbs::-webkit-scrollbar { display: none; }
    .woocommerce div.product div.images .flex-control-thumbs li { flex: 0 0 64px; scroll-snap-align: center; }
    .woocommerce-product-gallery { position: relative; }
    .zw-gal-count { display: block; position: absolute; left: 12px; top: 12px; z-index: 5; padding: 4px 10px; border-radius: 99px; background: rgba(43, 37, 40, .62); color: #fff; font: 600 12px var(--zw-sans); letter-spacing: .04em; pointer-events: none; }
}

/* WhatsApp chat button */
.zw-wa { --wa-b: 20px; position: fixed; right: 18px; bottom: var(--wa-b); z-index: 80; display: inline-flex; align-items: center; gap: 8px; padding: 12px 18px; border-radius: 999px; background: var(--zw-berry); color: #fff; font: 600 14px var(--zw-sans); text-decoration: none; box-shadow: 0 8px 24px rgba(122, 46, 77, .28); transition: transform .25s var(--zw-ease), box-shadow .25s ease, bottom .3s var(--zw-ease), background .2s ease; }
.zw-wa:hover { background: var(--zw-berry-dark); color: #fff; transform: translateY(-2px); box-shadow: 0 12px 28px rgba(122, 46, 77, .34); }
.zw-wa svg { flex: none; }
body.zw-has-sticky .zw-wa { --wa-b: 86px; }
body:has(#zw-cookie:not([hidden])) .zw-wa { --wa-b: 110px; }
body.zw-noscroll .zw-wa { display: none; }
@media (max-width: 600px) {
    .zw-wa { padding: 0; width: 54px; height: 54px; justify-content: center; right: 14px; }
    .zw-wa__label { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
    body:has(#zw-cookie:not([hidden])) .zw-wa { --wa-b: 190px; }
}
@media print { .zw-wa { display: none; } }
