/* ==========================================================================
   Wholesale Supplier UK - design system (ws.css)
   Theme: Wholesale/hyva-v3. Loaded in <head> on every page, after Hyvä's
   Tailwind build (styles.css), so plain single-class selectors here win over
   the utility classes of equal specificity that vendor templates still use.

   Rules of the system
   - One content width: 80rem (1280px). Header, nav, main and footer share it.
   - Type: 16px body, nothing under 13px, 12px only for short uppercase labels.
   - Colour semantics: navy = headings, blue = links/interactive, orange = the
     single primary action on a page, green = stock/success only, red =
     clearance/urgency only. Every text/background pair here is AA at its size.
   - Components are prefixed ws-* and styled here, not with utility classes,
     because Tailwind's purge only knows the vendor templates.
   ========================================================================== */

:root, .ws {
    /* brand (darkened from the logo for AA text contrast) */
    --ws-blue:        #0a6ba5;
    --ws-blue-700:    #085b8d;
    --ws-blue-600:    #0b7cbf;
    --ws-blue-50:     #eff8fd;
    --ws-blue-100:    #d7edf9;
    --ws-orange:      #e07d05;
    --ws-orange-500:  #f09014;
    --ws-orange-50:   #fff8ed;
    --ws-orange-100:  #feecd2;
    /* semantic */
    --ws-ink:         #0f1b2d;
    --ws-body:        #2f3b4e;   /* 11.5:1 on white */
    --ws-muted:       #5b6b80;   /* 5.5:1 on white, 5.1:1 on the tints */
    --ws-line:        #e3e8ef;
    --ws-line-soft:   #eef1f6;
    --ws-surface:     #ffffff;
    --ws-surface-alt: #f7f9fc;
    --ws-deal:        #c2320f;
    --ws-deal-50:     #fef4f1;
    --ws-deal-100:    #fde2da;
    --ws-good:        #0f7a52;
    --ws-good-50:     #eefaf4;
    --ws-good-100:    #d3f2e3;
    --ws-warn:        #8a4b02;
    --ws-warn-50:     #fff8ed;
    /* type scale */
    --ws-fs-label:  0.75rem;    /* 12px uppercase labels only */
    --ws-fs-sm:     0.8125rem;  /* 13px meta */
    --ws-fs-base:   0.9375rem;  /* 15px cards/nav */
    --ws-fs-body:   1rem;       /* 16px running text */
    --ws-fs-md:     1.0625rem;  /* 17px */
    --ws-fs-price:  1.25rem;    /* 20px card price */
    --ws-fs-h3:     1.125rem;
    --ws-fs-h2:     clamp(1.5rem, 1.2rem + 1.1vw, 2rem);      /* 24 -> 32 */
    --ws-fs-h1:     clamp(1.75rem, 1.3rem + 1.9vw, 2.75rem);  /* 28 -> 44 */
    /* shape */
    --ws-radius:      0.75rem;
    --ws-radius-sm:   0.5rem;
    --ws-radius-lg:   1.125rem;
    --ws-radius-pill: 999px;
    --ws-shadow:     0 1px 2px rgba(15,27,45,.05), 0 1px 3px rgba(15,27,45,.06);
    --ws-shadow-md:  0 4px 6px -2px rgba(15,27,45,.06), 0 12px 20px -8px rgba(15,27,45,.12);
    --ws-shadow-lg:  0 10px 15px -6px rgba(15,27,45,.08), 0 24px 40px -16px rgba(15,27,45,.18);
    --ws-container:  80rem;
    --ws-gutter:     1rem;
}
@media (min-width: 640px) { :root { --ws-gutter: 1.5rem; } }

/* --------------------------------------------------------------------------
   Base
   -------------------------------------------------------------------------- */
html { -webkit-text-size-adjust: 100%; }
body {
    color: var(--ws-body);
    font-size: var(--ws-fs-body);
    line-height: 1.55;
    background: var(--ws-surface);
}
h1, h2, h3, h4 { color: var(--ws-ink); letter-spacing: -0.015em; }
a { color: var(--ws-blue); }
a:hover { color: var(--ws-blue-700); }
[x-cloak] { display: none !important; }

a:focus-visible, button:focus-visible, input:focus-visible, select:focus-visible, [tabindex]:focus-visible {
    outline: 3px solid var(--ws-orange-500);
    outline-offset: 2px;
}

/* One width for everything. Hyvä's .container steps up to 1536px and .columns
   had its own max-width; both are pinned to 1280 here so header, page and
   footer edges line up. */
.container, .columns, .page-main {
    max-width: var(--ws-container);
    margin-inline: auto;
    padding-inline: var(--ws-gutter);
}
.container, .page-main { width: 100%; }  /* .page-wrapper is a flex column; auto margins would shrink-wrap */
/* The homepage paints full-bleed section bands and supplies its own
   .ws-container inside each. */
.cms-index-index .page-main, .cms-index-index .columns { max-width: none; padding-inline: 0; margin-inline: 0; }
.cms-index-index .page-main { margin-top: 0; }   /* hero band sits flush under the header (Hyvä adds 2rem) */
.ws-container { width: 100%; max-width: var(--ws-container); margin-inline: auto; padding-inline: var(--ws-gutter); }

/* Hyvä wraps page content in #maincontent > .columns; give pages breathing room. */
.columns { padding-block: 1.25rem 2.5rem; }
@media (min-width: 1024px) { .columns { padding-block: 1.5rem 3.5rem; } }
.cms-index-index .columns { padding-block: 0; }

/* Page title (Hyvä renders <h1 class="text-3xl font-bold ...">) */
.page-title-wrapper .page-title,
h1.page-title {
    font-size: var(--ws-fs-h1);
    font-weight: 800;
    line-height: 1.12;
    letter-spacing: -0.025em;
    color: var(--ws-ink);
}

/* Breadcrumbs */
.breadcrumbs { font-size: var(--ws-fs-sm); color: var(--ws-muted); }
.breadcrumbs a { color: var(--ws-muted); text-decoration: none; }
.breadcrumbs a:hover { color: var(--ws-blue); text-decoration: underline; }
.breadcrumbs .container { padding-block: 0.75rem 0; }

/* --------------------------------------------------------------------------
   Buttons
   -------------------------------------------------------------------------- */
.ws-btn {
    display: inline-flex; align-items: center; justify-content: center; gap: 0.5rem;
    min-height: 2.75rem;
    padding: 0.625rem 1.25rem;
    border: 1px solid transparent;
    border-radius: var(--ws-radius);
    font-size: var(--ws-fs-base); font-weight: 700; line-height: 1.2;
    text-align: center; text-decoration: none; cursor: pointer; white-space: nowrap;
    transition: background-color .15s ease, border-color .15s ease, color .15s ease, box-shadow .15s ease, transform .15s ease;
}
.ws-btn svg { width: 1.0625rem; height: 1.0625rem; flex-shrink: 0; }
.ws-btn:active { transform: translateY(1px); }
.ws-btn:disabled { opacity: .6; cursor: default; transform: none; }
.ws-btn--primary { background: var(--ws-orange); color: var(--ws-ink); box-shadow: 0 1px 2px rgba(15,27,45,.12); }
.ws-btn--primary:hover { background: var(--ws-orange-500); color: var(--ws-ink); }
.ws-btn--blue { background: var(--ws-blue); color: #fff; }
.ws-btn--blue:hover { background: var(--ws-blue-700); color: #fff; }
.ws-btn--outline { background: var(--ws-surface); color: var(--ws-ink); border-color: var(--ws-line); box-shadow: var(--ws-shadow); }
.ws-btn--outline:hover { border-color: var(--ws-blue); color: var(--ws-blue); }
.ws-btn--ghost-light { background: rgba(255,255,255,.12); color: #fff; border-color: rgba(255,255,255,.35); }
.ws-btn--ghost-light:hover { background: rgba(255,255,255,.22); color: #fff; }
.ws-btn--sm { min-height: 2.5rem; padding: 0.5rem 0.875rem; font-size: var(--ws-fs-sm); border-radius: var(--ws-radius-sm); }
.ws-btn--block { width: 100%; }

/* Pills / badges */
.ws-pill {
    display: inline-flex; align-items: center; gap: 0.3rem;
    padding: 0.2rem 0.55rem;
    border-radius: var(--ws-radius-pill);
    font-size: var(--ws-fs-label); font-weight: 800; letter-spacing: .04em; text-transform: uppercase; line-height: 1.2;
    white-space: nowrap;
}
.ws-pill svg { width: .8rem; height: .8rem; }
.ws-pill--good { background: var(--ws-good-50); color: var(--ws-good); }
.ws-pill--deal { background: var(--ws-deal); color: #fff; }
.ws-pill--warn { background: var(--ws-orange-100); color: var(--ws-warn); }
.ws-pill--muted { background: var(--ws-surface-alt); color: var(--ws-muted); }
.ws-pill--blue { background: var(--ws-blue-50); color: var(--ws-blue); }

/* ==========================================================================
   HEADER
   Desktop: utility bar (36px) / main row (76px: logo, inline search, account,
   basket) / grouped nav (46px). Mobile: one 56px row - menu, logo, search
   toggle, basket - and the search field drops in beneath it on demand.
   ========================================================================== */
.ws-header { position: relative; z-index: 30; background: var(--ws-surface); border-bottom: 1px solid var(--ws-line); }

.ws-topbar { display: none; background: var(--ws-ink); color: #fff; font-size: var(--ws-fs-sm); }
@media (min-width: 1024px) { .ws-topbar { display: block; } }
.ws-topbar__inner { display: flex; align-items: center; justify-content: space-between; gap: 1rem; min-height: 2.25rem; }
.ws-topbar__usp { display: flex; gap: 1.5rem; list-style: none; margin: 0; padding: 0; }
.ws-topbar__usp li { display: inline-flex; align-items: center; gap: .4rem; color: rgba(255,255,255,.88); font-weight: 500; }
.ws-topbar__usp svg { width: .875rem; height: .875rem; color: #7fd4ab; }
.ws-topbar__links { display: flex; align-items: center; gap: 1.25rem; }
.ws-topbar__links a { display: inline-flex; align-items: center; gap: .4rem; color: #fff; text-decoration: none; font-weight: 600; }
.ws-topbar__links a:hover { color: var(--ws-orange-500); }
.ws-topbar__links svg { width: .9rem; height: .9rem; }

.ws-header__row { display: flex; align-items: center; gap: .5rem; min-height: 3.5rem; }
@media (min-width: 1024px) { .ws-header__row { gap: 1.75rem; min-height: 4.75rem; } }

.ws-header__logo { display: flex; align-items: center; flex-shrink: 0; margin-inline: auto; }
@media (min-width: 1024px) { .ws-header__logo { margin-inline: 0; } }
.ws-header__logo a { display: flex; align-items: center; }
/* Source logo is 200x73 (1x). It is shown at its native size until a larger
   file is supplied; the slot is sized so a 2x asset can drop in unchanged. */
.ws-header__logo img { display: block; width: auto; height: 2.75rem; }
@media (min-width: 1024px) { .ws-header__logo img { height: 4.5rem; } }

/* Search: Hyvä's search-form.phtml renders inside .container with its own
   padding; those are neutralised so it sits inline. */
.ws-header__search { display: none; flex: 1 1 auto; min-width: 0; }
.ws-header__search .container { max-width: none; padding: 0; margin: 0; }
@media (max-width: 1023.98px) {
    .ws-header__search { order: 10; flex-basis: 100%; padding-bottom: .625rem; }
    .ws-header__search.is-open { display: block; }
}
@media (min-width: 1024px) { .ws-header__search { display: block; max-width: 40rem; } }
.ws-header__search #search_mini_form { display: flex; border: 1.5px solid var(--ws-line); border-radius: var(--ws-radius); overflow: hidden; background: var(--ws-surface); transition: border-color .15s ease, box-shadow .15s ease; }
.ws-header__search #search_mini_form:focus-within { border-color: var(--ws-blue); box-shadow: 0 0 0 3px rgba(10,107,165,.16); }
.ws-header__search #search_mini_form input {
    flex: 1 1 auto; min-width: 0; border: 0; box-shadow: none; border-radius: 0;
    padding: .7rem .9rem; font-size: var(--ws-fs-base); color: var(--ws-ink); background: transparent;
}
.ws-header__search #search_mini_form input:focus { outline: none; box-shadow: none; }
.ws-header__search #search_mini_form button {
    flex-shrink: 0; border: 0; border-radius: 0; background: var(--ws-blue); color: #fff; padding-inline: 1.1rem; min-width: 3rem;
}
.ws-header__search #search_mini_form button:hover { background: var(--ws-blue-700); }
.ws-header__search #search_autocomplete { z-index: 40; }

.ws-header__actions { display: flex; align-items: center; gap: .125rem; flex-shrink: 0; margin-left: auto; }
@media (min-width: 1024px) { .ws-header__actions { gap: .375rem; margin-left: 0; } }
.ws-iconbtn {
    position: relative; display: inline-flex; flex-direction: column; align-items: center; justify-content: center; gap: .15rem;
    min-width: 2.75rem; min-height: 2.75rem; padding: .375rem .5rem;
    border: 0; border-radius: var(--ws-radius-sm); background: transparent; color: var(--ws-ink);
    font-size: var(--ws-fs-label); font-weight: 600; line-height: 1; text-decoration: none; cursor: pointer;
}
.ws-iconbtn:hover { background: var(--ws-surface-alt); color: var(--ws-blue); }
.ws-iconbtn svg { width: 1.5rem; height: 1.5rem; }
.ws-iconbtn__label { display: none; }
@media (min-width: 1024px) { .ws-iconbtn__label { display: block; } .ws-iconbtn { min-width: 3.5rem; } }
.ws-iconbtn--search { display: inline-flex; }
@media (min-width: 1024px) { .ws-iconbtn--search { display: none; } }
.ws-iconbtn__count {
    position: absolute; top: .125rem; right: .25rem;
    min-width: 1.125rem; height: 1.125rem; padding-inline: .3rem;
    border-radius: var(--ws-radius-pill); background: var(--ws-orange); color: var(--ws-ink);
    font-size: .6875rem; font-weight: 800; line-height: 1.125rem; text-align: center;
}
@media (min-width: 1024px) { .ws-iconbtn__count { top: 0; right: .5rem; } }
/* Account dropdown (Magento_Customer::header/customer-menu.phtml) */
.ws-account-menu {
    position: absolute; right: 0; top: calc(100% + .5rem); z-index: 60; min-width: 12rem; padding: .5rem;
    background: var(--ws-surface); border: 1px solid var(--ws-line); border-radius: var(--ws-radius); box-shadow: var(--ws-shadow-lg);
}
.ws-account-menu ul { list-style: none; margin: 0; padding: 0; }
.ws-account-menu a, .ws-account-menu button {
    display: block; width: 100%; padding: .5rem .75rem; border: 0; border-radius: var(--ws-radius-sm); background: transparent;
    color: var(--ws-ink); font-size: var(--ws-fs-body); font-weight: 500; text-align: left; text-decoration: none; cursor: pointer;
}
.ws-account-menu a:hover, .ws-account-menu button:hover { background: var(--ws-surface-alt); color: var(--ws-blue); }

.ws-header__burger { display: flex; flex-shrink: 0; }
@media (min-width: 1024px) { .ws-header__burger { display: none; } }

/* ---- Grouped desktop nav ---- */
.ws-nav { display: none; border-top: 1px solid var(--ws-line-soft); background: var(--ws-surface); }
@media (min-width: 1024px) { .ws-nav { display: block; } }
.ws-nav__inner { display: flex; align-items: center; justify-content: space-between; gap: 1rem; }
.ws-nav__list { display: flex; align-items: stretch; gap: .25rem; list-style: none; margin: 0; padding: 0; }
.ws-nav__item { position: relative; }
.ws-nav__top {
    display: inline-flex; align-items: center; gap: .35rem;
    min-height: 2.875rem; padding: 0 .875rem;
    border: 0; background: transparent; border-bottom: 3px solid transparent;
    color: var(--ws-ink); font-size: var(--ws-fs-base); font-weight: 700; text-decoration: none; cursor: pointer; white-space: nowrap;
}
.ws-nav__top svg { width: 1rem; height: 1rem; color: var(--ws-muted); transition: transform .15s ease; }
.ws-nav__top:hover, .ws-nav__top[aria-expanded="true"] { color: var(--ws-blue); border-bottom-color: var(--ws-blue); }
.ws-nav__top[aria-expanded="true"] svg { transform: rotate(180deg); }
.ws-nav__top--deal { color: var(--ws-deal); }
.ws-nav__top--deal:hover { color: var(--ws-deal); border-bottom-color: var(--ws-deal); }
.ws-nav__top--deal .ws-pill { margin-left: .25rem; }
.ws-nav__aside { display: inline-flex; align-items: center; gap: .4rem; font-size: var(--ws-fs-sm); font-weight: 700; color: var(--ws-blue); text-decoration: none; white-space: nowrap; }
.ws-nav__aside:hover { text-decoration: underline; }
.ws-nav__aside svg { width: 1rem; height: 1rem; }

.ws-mega {
    position: absolute; top: 100%; left: 0; z-index: 40;
    min-width: 18rem; padding: 1.25rem 1.5rem 1.5rem;
    background: var(--ws-surface); border: 1px solid var(--ws-line); border-top: 0;
    border-radius: 0 0 var(--ws-radius) var(--ws-radius); box-shadow: var(--ws-shadow-lg);
}
.ws-mega__cols { display: grid; grid-auto-flow: column; grid-auto-columns: minmax(11rem, 14rem); gap: 1.75rem; }
.ws-mega__col { min-width: 0; }
.ws-mega__head {
    display: block; margin-bottom: .5rem; padding-bottom: .5rem; border-bottom: 2px solid var(--ws-line-soft);
    color: var(--ws-ink); font-size: var(--ws-fs-base); font-weight: 800; text-decoration: none; white-space: nowrap;
}
.ws-mega__head:hover { color: var(--ws-blue); }
.ws-mega__list { list-style: none; margin: 0; padding: 0; display: grid; gap: .1rem; }
.ws-mega__list a { display: block; padding: .3rem 0; color: var(--ws-body); font-size: var(--ws-fs-sm); text-decoration: none; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.ws-mega__list a:hover { color: var(--ws-blue); }
.ws-mega__all { display: inline-block; margin-top: .5rem; color: var(--ws-blue); font-size: var(--ws-fs-sm); font-weight: 700; text-decoration: none; }
.ws-mega__all:hover { text-decoration: underline; }

/* ---- Mobile menu (full-height panel) ---- */
.ws-mmenu__backdrop { position: fixed; inset: 0; z-index: 60; background: rgba(15,27,45,.55); }
.ws-mmenu {
    position: fixed; top: 0; bottom: 0; left: 0; z-index: 61;
    width: min(22rem, 88vw); display: flex; flex-direction: column;
    background: var(--ws-surface); box-shadow: var(--ws-shadow-lg); overflow: hidden;
}
.ws-mmenu__head { display: flex; align-items: center; justify-content: space-between; gap: .5rem; padding: .625rem .75rem .625rem 1rem; border-bottom: 1px solid var(--ws-line); }
.ws-mmenu__head img { height: 2.25rem; width: auto; }
.ws-mmenu__body { flex: 1 1 auto; overflow-y: auto; -webkit-overflow-scrolling: touch; }
.ws-mmenu__group { border-bottom: 1px solid var(--ws-line-soft); }
.ws-mmenu__toggle {
    display: flex; align-items: center; justify-content: space-between; width: 100%;
    padding: .9rem 1rem; border: 0; background: transparent;
    color: var(--ws-ink); font-size: var(--ws-fs-md); font-weight: 800; text-align: left; cursor: pointer;
}
.ws-mmenu__toggle svg { width: 1.125rem; height: 1.125rem; color: var(--ws-muted); transition: transform .15s ease; }
.ws-mmenu__toggle[aria-expanded="true"] svg { transform: rotate(180deg); }
.ws-mmenu__toggle--deal { color: var(--ws-deal); text-decoration: none; }
.ws-mmenu__list { list-style: none; margin: 0; padding: 0 0 .5rem; background: var(--ws-surface-alt); }
.ws-mmenu__list a { display: block; padding: .6rem 1rem .6rem 1.25rem; color: var(--ws-body); font-size: var(--ws-fs-base); font-weight: 600; text-decoration: none; }
.ws-mmenu__list a.is-sub { padding-left: 2.25rem; font-weight: 500; color: var(--ws-muted); font-size: var(--ws-fs-sm); }
.ws-mmenu__list a:hover { color: var(--ws-blue); }
.ws-mmenu__foot { padding: 1rem; border-top: 1px solid var(--ws-line); display: grid; gap: .5rem; background: var(--ws-surface-alt); }
.ws-mmenu__foot a { display: flex; align-items: center; gap: .6rem; color: var(--ws-ink); font-size: var(--ws-fs-base); font-weight: 600; text-decoration: none; }
.ws-mmenu__foot svg { width: 1.125rem; height: 1.125rem; color: var(--ws-blue); }

/* ==========================================================================
   FOOTER
   ========================================================================== */
.ws-footer { background: var(--ws-surface-alt); border-top: 1px solid var(--ws-line); color: var(--ws-body); font-size: var(--ws-fs-base); }
.ws-footer__main { padding-block: 2.5rem 2rem; }
.ws-footer__grid { display: grid; grid-template-columns: 1fr; gap: 2rem; }
@media (min-width: 640px) { .ws-footer__grid { grid-template-columns: repeat(2, minmax(0,1fr)); } }
@media (min-width: 1024px) { .ws-footer__grid { grid-template-columns: 1.4fr 1fr 1fr 1fr 1.3fr; gap: 2.5rem; } }
.ws-footer h2 { font-size: var(--ws-fs-sm); font-weight: 800; letter-spacing: .07em; text-transform: uppercase; color: var(--ws-ink); margin: 0 0 .875rem; }
.ws-footer nav ul { list-style: none; margin: 0; padding: 0; display: grid; gap: .45rem; }
.ws-footer nav li a { color: var(--ws-body); text-decoration: none; }
.ws-footer nav li a:hover { color: var(--ws-blue); text-decoration: underline; }
.ws-footer__brand img { height: 3rem; width: auto; margin-bottom: .875rem; }
.ws-footer__brand p { margin: 0 0 1rem; font-size: var(--ws-fs-sm); line-height: 1.55; color: var(--ws-muted); max-width: 26rem; }
.ws-footer__rating { display: inline-flex; align-items: center; gap: .5rem; padding: .5rem .75rem; border-radius: var(--ws-radius-sm); background: var(--ws-surface); border: 1px solid var(--ws-line); color: var(--ws-ink); text-decoration: none; font-size: var(--ws-fs-sm); font-weight: 600; }
.ws-footer__rating:hover { border-color: var(--ws-blue); }
.ws-footer__stars { display: inline-flex; gap: .1rem; color: #f5a623; }
.ws-footer__stars svg { width: .95rem; height: .95rem; fill: currentColor; stroke: currentColor; }
.ws-footer__rating b { color: var(--ws-ink); }
.ws-footer__contact address { font-style: normal; line-height: 1.55; }
.ws-footer__contact a { color: var(--ws-ink); font-weight: 600; text-decoration: none; }
.ws-footer__contact a:hover { color: var(--ws-blue); }
.ws-footer__contact dl { display: grid; grid-template-columns: auto 1fr; gap: .3rem .75rem; margin: .875rem 0 0; font-size: var(--ws-fs-sm); }
.ws-footer__contact dt { color: var(--ws-muted); }
.ws-footer__contact dd { margin: 0; color: var(--ws-body); }
.ws-footer__news { margin-top: 2rem; padding-top: 2rem; border-top: 1px solid var(--ws-line); display: grid; gap: 1rem; }
@media (min-width: 900px) { .ws-footer__news { grid-template-columns: 1fr 1fr; align-items: center; } }
.ws-footer__news h2 { margin-bottom: .25rem; font-size: var(--ws-fs-h3); text-transform: none; letter-spacing: -0.01em; }
.ws-footer__news p { margin: 0; font-size: var(--ws-fs-sm); color: var(--ws-muted); }
.ws-footer__news form { display: block; max-width: 30rem; }
.ws-news__row { display: flex; gap: .5rem; }
.ws-news__row .ws-input { flex: 1 1 auto; min-width: 0; }
.ws-news__row .ws-btn { flex-shrink: 0; }
.ws-news__error { display: flex; align-items: center; gap: .5rem; margin: .5rem 0 0; color: var(--ws-deal); font-size: var(--ws-fs-sm); }
.ws-news__legal { margin-top: .5rem; font-size: var(--ws-fs-label); color: var(--ws-muted); }
.ws-news__legal a { color: var(--ws-muted); text-decoration: underline; }
.ws-input {
    min-height: 2.75rem; padding: .6rem .9rem; border: 1.5px solid var(--ws-line); border-radius: var(--ws-radius);
    background: var(--ws-surface); color: var(--ws-ink); font-size: var(--ws-fs-base);
}
.ws-input:focus { outline: none; border-color: var(--ws-blue); box-shadow: 0 0 0 3px var(--ws-blue-100); }
.ws-footer__bottom { border-top: 1px solid var(--ws-line); }
.ws-footer__bottom-inner { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: .75rem 1.5rem; padding-block: 1rem; font-size: var(--ws-fs-sm); color: var(--ws-muted); }
.ws-footer__bottom-inner p { margin: 0; }
.ws-footer__pay { display: flex; flex-wrap: wrap; align-items: center; gap: .4rem; list-style: none; margin: 0; padding: 0; }
.ws-footer__pay li { display: inline-flex; align-items: center; height: 1.75rem; padding: 0 .55rem; border: 1px solid var(--ws-line); border-radius: .375rem; background: var(--ws-surface); font-size: .6875rem; font-weight: 800; letter-spacing: .03em; color: var(--ws-ink); text-transform: uppercase; }
.ws-footer__legal { flex-basis: 100%; font-size: var(--ws-fs-sm); color: var(--ws-muted); margin: 0; }
.ws-footer__legal a { color: var(--ws-muted); }

/* ==========================================================================
   PRODUCT CARD (shared by homepage, category, search, related)
   ========================================================================== */
.ws-grid { display: grid; grid-template-columns: repeat(2, minmax(0,1fr)); gap: .75rem; list-style: none; margin: 0; padding: 0; }
@media (min-width: 560px)  { .ws-grid { grid-template-columns: repeat(3, minmax(0,1fr)); } }
@media (min-width: 900px)  { .ws-grid { grid-template-columns: repeat(4, minmax(0,1fr)); gap: 1rem; } }
@media (min-width: 1180px) { .ws-grid { grid-template-columns: repeat(5, minmax(0,1fr)); } }
/* Category pages have a sidebar, so one column fewer at each step. */
.ws-grid--plp { }
@media (min-width: 1180px) { .page-layout-2columns-left .ws-grid--plp { grid-template-columns: repeat(4, minmax(0,1fr)); } }
@media (min-width: 1400px) { .page-layout-2columns-left .ws-grid--plp { grid-template-columns: repeat(5, minmax(0,1fr)); } }
.ws-grid > li { display: flex; flex-direction: column; min-width: 0; }

.ws-card {
    position: relative; display: flex; flex-direction: column; height: 100%;
    background: var(--ws-surface); border: 1px solid var(--ws-line); border-radius: var(--ws-radius);
    box-shadow: var(--ws-shadow); overflow: hidden;
    transition: border-color .18s ease, box-shadow .18s ease, transform .18s ease;
}
.ws-card:hover { border-color: var(--ws-blue-100); box-shadow: var(--ws-shadow-md); transform: translateY(-3px); }
@media (prefers-reduced-motion: reduce) {
    .ws-card, .ws-deal, .ws-btn { transition: none; }
    .ws-card:hover { transform: none; }
}
.ws-card__media { position: relative; display: block; background: #fff; padding: .625rem; }
.ws-card__media img, .ws-card__media picture img {
    display: block; width: 100%; height: auto; aspect-ratio: 1 / 1; object-fit: contain; transition: transform .3s ease;
}
/* Magento's image template emits <span class="product-image-container-NNN">
   with an inline <style> fixing width:300px and a padding-bottom wrapper.
   Neutralise both so the image scales with the card. */
.ws-card__media .product-image-container { display: block; width: 100% !important; height: auto !important; }
.ws-card__media .product-image-wrapper { display: block; padding-bottom: 0 !important; height: auto !important; }
.ws-card__media picture { display: block; }
.ws-card:hover .ws-card__media img { transform: scale(1.04); }
.ws-card--oos .ws-card__media img { opacity: .55; filter: grayscale(.2); }
.ws-card__badges { position: absolute; top: .5rem; left: .5rem; z-index: 2; display: flex; flex-direction: column; align-items: flex-start; gap: .25rem; }
.ws-card__badge {
    padding: .1875rem .4375rem; border-radius: .375rem;
    font-size: var(--ws-fs-label); font-weight: 800; line-height: 1; letter-spacing: .02em; text-transform: uppercase;
    color: #fff; background: var(--ws-deal); box-shadow: 0 1px 2px rgba(15,27,45,.2);
}
.ws-card__badge--save { background: var(--ws-orange); color: var(--ws-ink); }
.ws-card__badge--bbe { background: var(--ws-surface); color: var(--ws-warn); border: 1px solid var(--ws-orange-100); text-transform: none; letter-spacing: 0; font-weight: 700; }
/* "N in basket" pill sits on the stock row, directly above the qty stepper,
   not floating over the image. */
.ws-card__inbasket { margin-left: auto; flex-shrink: 0; }
.ws-card__inbasket .ws-pill { text-transform: none; letter-spacing: 0; font-weight: 700; }

.ws-card__body { display: flex; flex-direction: column; flex: 1 1 auto; gap: .5rem; padding: 0 .75rem .75rem; }
.ws-card__brand { font-size: var(--ws-fs-label); font-weight: 700; letter-spacing: .05em; text-transform: uppercase; color: var(--ws-muted); margin: 0; }
.ws-card__name {
    font-size: var(--ws-fs-base); font-weight: 600; line-height: 1.35; color: var(--ws-ink); margin: 0;
    display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;
}
.ws-card__name a { color: inherit; text-decoration: none; }
.ws-card__name a::after { content: ""; position: absolute; inset: 0; z-index: 1; } /* whole card clickable */
.ws-card:hover .ws-card__name { color: var(--ws-blue); }
.ws-card__pack { display: inline-flex; align-items: center; gap: .35rem; font-size: var(--ws-fs-sm); color: var(--ws-muted); margin: 0; }
.ws-card__pack svg { width: .9rem; height: .9rem; }
.ws-card__pack b { color: var(--ws-body); font-weight: 700; }

.ws-card__prices { margin-top: auto; }
.ws-card__price { display: flex; align-items: baseline; flex-wrap: wrap; gap: .3125rem; }
.ws-card__price-value { font-size: var(--ws-fs-price); font-weight: 800; letter-spacing: -0.02em; color: var(--ws-ink); line-height: 1.15; }
.ws-card__price-vat { font-size: var(--ws-fs-sm); font-weight: 600; color: var(--ws-muted); }
.ws-card__price-was { font-size: var(--ws-fs-sm); color: var(--ws-muted); text-decoration: line-through; }
.ws-card__price-value .price, .ws-card__retail .price, .ws-card__unit .price { font: inherit; color: inherit; letter-spacing: inherit; }
.ws-card__unit { display: block; margin-top: .125rem; font-size: var(--ws-fs-sm); color: var(--ws-muted); }
.ws-card__unit b { color: var(--ws-body); font-weight: 700; }
/* Headline price is always the trade price and is labelled as such; the retail
   comparison is a separate muted line shown to guests and retail customers. */
.ws-card__retail { display: block; margin-top: .25rem; font-size: var(--ws-fs-sm); line-height: 1.35; color: var(--ws-muted); }
.ws-card__retail b { font-weight: 700; color: var(--ws-body); }
.ws-card__trade-tag { font-size: var(--ws-fs-label); font-weight: 800; text-transform: uppercase; letter-spacing: .04em; color: var(--ws-good); flex-shrink: 0; align-self: center; padding: .125rem .375rem; border-radius: .25rem; background: var(--ws-good-50); }
.ws-card__retail-tag { font-size: var(--ws-fs-label); font-weight: 800; text-transform: uppercase; letter-spacing: .04em; color: var(--ws-muted); padding: .125rem .375rem; border-radius: .25rem; background: var(--ws-surface-alt); margin-right: .25rem; }
.ws-card__inc { display: block; margin-top: .25rem; font-size: var(--ws-fs-sm); color: var(--ws-muted); }

.ws-card__stock { display: flex; align-items: center; gap: .35rem; font-size: var(--ws-fs-sm); font-weight: 600; color: var(--ws-good); margin: 0; }
.ws-card__stock svg { width: .9rem; height: .9rem; flex-shrink: 0; }
.ws-card__stock--low { color: var(--ws-deal); }
.ws-card__stock--oos { color: var(--ws-muted); }

/* Add-to-basket row: qty stepper + one orange button. Sits above the card's
   full-card link (z-index 2) so it stays clickable. */
.ws-card__buy { position: relative; z-index: 2; display: flex; gap: .375rem; align-items: stretch; margin-top: .25rem; }
.ws-qty { display: inline-flex; align-items: stretch; border: 1px solid var(--ws-line); border-radius: var(--ws-radius-sm); overflow: hidden; background: var(--ws-surface); flex-shrink: 0; }
.ws-qty button { width: 2.125rem; border: 0; background: transparent; color: var(--ws-body); font-size: 1rem; font-weight: 700; cursor: pointer; }
.ws-qty button:hover { background: var(--ws-surface-alt); color: var(--ws-blue); }
.ws-qty input {
    width: 2.375rem; border: 0; border-inline: 1px solid var(--ws-line); border-radius: 0; padding: 0; margin: 0;
    text-align: center; font-size: var(--ws-fs-sm); font-weight: 700; color: var(--ws-ink); background: var(--ws-surface);
    -moz-appearance: textfield; appearance: textfield;
}
.ws-qty input::-webkit-outer-spin-button, .ws-qty input::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }
.ws-qty input:focus { outline: none; box-shadow: inset 0 0 0 2px var(--ws-blue-100); }
.ws-card__buy .ws-btn { flex: 1 1 auto; min-height: 2.625rem; padding-inline: .75rem; font-size: var(--ws-fs-sm); border-radius: var(--ws-radius-sm); }
.ws-card__buy .ws-btn svg { width: 1rem; height: 1rem; }
/* Narrow 2-up cards (phones): compact stepper, icon-only Add, shorter pack line */
@media (max-width: 479px) {
    .ws-card__pack { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
    .ws-card__pack-suffix { display: none; }
    .ws-card__buy { gap: .25rem; }
    .ws-card__buy .ws-qty button { width: 1.625rem; font-size: .9rem; }
    .ws-card__buy .ws-qty input { width: 1.875rem; font-size: var(--ws-fs-label); }
    .ws-card__buy .ws-btn { min-width: 2.5rem; padding-inline: .375rem; }
    .ws-card__buy .ws-btn > span:last-child { display: none; }   /* label; aria-label remains */
    .ws-card__retail { white-space: normal; }
}
.ws-card__oos { position: relative; z-index: 2; margin-top: .25rem; display: flex; align-items: center; justify-content: center; min-height: 2.625rem; border: 1px dashed var(--ws-line); border-radius: var(--ws-radius-sm); color: var(--ws-muted); font-size: var(--ws-fs-sm); font-weight: 600; }
.ws-card__oos a { color: var(--ws-blue); text-decoration: none; }

/* ==========================================================================
   CATEGORY PAGE
   ========================================================================== */
.ws-plp-head { margin-bottom: 1rem; }
.ws-plp-head .page-title { margin: 0 0 .5rem; }
.ws-plp-head__count { font-size: var(--ws-fs-sm); color: var(--ws-muted); margin: 0; }
.ws-plp-intro { max-width: 46rem; font-size: var(--ws-fs-body); line-height: 1.6; color: var(--ws-body); margin: .5rem 0 0; }
.ws-plp-intro p { margin: 0 0 .5rem; }
.ws-chips { display: flex; gap: .5rem; overflow-x: auto; padding: .75rem 0 .25rem; margin: 0 0 .5rem; scrollbar-width: none; list-style: none; }
.ws-chips::-webkit-scrollbar { display: none; }
.ws-chips li { flex-shrink: 0; }
.ws-chips a {
    display: inline-flex; align-items: center; gap: .4rem; min-height: 2.375rem; padding: .375rem .875rem;
    border: 1px solid var(--ws-line); border-radius: var(--ws-radius-pill); background: var(--ws-surface);
    color: var(--ws-ink); font-size: var(--ws-fs-sm); font-weight: 600; text-decoration: none; white-space: nowrap;
}
.ws-chips a:hover, .ws-chips a[aria-current="page"] { border-color: var(--ws-blue); color: var(--ws-blue); background: var(--ws-blue-50); }
.ws-chips a small { color: var(--ws-muted); font-weight: 500; }

/* Two-column layout: filters 16rem + products. */
@media (min-width: 1024px) {
    .page-layout-2columns-left .columns { display: grid; grid-template-columns: 16rem minmax(0,1fr); gap: 2rem; align-items: start; }
    .page-layout-2columns-left .sidebar-main { grid-column: 1; grid-row: 1 / span 2; position: sticky; top: 1rem; }
    .page-layout-2columns-left .column.main { grid-column: 2; }
    .page-layout-2columns-left .sidebar-additional { grid-column: 1; }
}
.sidebar-main .block.filter, .sidebar-main #layered-filter-block { border: 1px solid var(--ws-line); border-radius: var(--ws-radius); background: var(--ws-surface); padding: 1rem; }

/* Intro: clamped description + optional image */
.ws-plp-head--image { display: flex; gap: 1.5rem; align-items: flex-start; justify-content: space-between; }
.ws-plp-head__text { min-width: 0; flex: 1 1 auto; }
.ws-plp-head__image { display: none; }
@media (min-width: 768px) {
    .ws-plp-head__image { display: block; flex: 0 0 auto; width: 10rem; height: 10rem; border-radius: var(--ws-radius); overflow: hidden; background: var(--ws-surface-alt); }
    .ws-plp-head__image img { width: 100%; height: 100%; object-fit: cover; }
}
.ws-plp-intro__body.is-clamped { display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }
.ws-plp-intro__more { display: inline-flex; align-items: center; gap: .25rem; margin-top: .25rem; padding: 0; border: 0; background: none; color: var(--ws-blue); font-size: var(--ws-fs-sm); font-weight: 700; cursor: pointer; }
.ws-plp-intro__more svg { transition: transform .2s; }
.ws-plp-intro__more svg.is-open { transform: rotate(180deg); }

/* Sticky filter / sort bar */
.ws-select {
    appearance: none; -webkit-appearance: none; min-height: 2.375rem; padding: .375rem 2rem .375rem .75rem;
    border: 1px solid var(--ws-line); border-radius: var(--ws-radius-sm); background: var(--ws-surface) no-repeat right .6rem center;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%230f1b2d' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");
    color: var(--ws-ink); font-size: var(--ws-fs-sm); font-weight: 600; line-height: 1.2; cursor: pointer;
}
.ws-select:focus { outline: none; border-color: var(--ws-blue); box-shadow: 0 0 0 3px var(--ws-blue-100); }
.ws-plp__bar {
    position: sticky; top: 0; z-index: 30;
    display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: .5rem .75rem;
    margin: 0 calc(-1 * var(--ws-gutter)) .875rem; padding: .625rem var(--ws-gutter);
    background: rgba(255,255,255,.96); backdrop-filter: blur(6px); border-bottom: 1px solid var(--ws-line-soft);
}
@media (min-width: 1024px) { .ws-plp__bar { margin-inline: 0; padding-inline: 0; } }
.ws-plp__bar.is-stuck { box-shadow: 0 6px 16px -10px rgba(15,27,45,.25); }
@media (min-width: 1024px) { .ws-plp__bar.is-stuck { margin-inline: calc(-1 * var(--ws-gutter)); padding-inline: var(--ws-gutter); } }
.ws-plp__bar--nofilters { justify-content: flex-end; }

.ws-filters { display: flex; flex-wrap: wrap; align-items: center; gap: .5rem; min-width: 0; }
.ws-filters__label { display: none; align-items: center; gap: .35rem; margin-right: .25rem; font-size: var(--ws-fs-label); font-weight: 700; letter-spacing: .06em; text-transform: uppercase; color: var(--ws-muted); }
@media (min-width: 640px) { .ws-filters__label { display: inline-flex; } }
.ws-filter { position: relative; }
.ws-filter__btn {
    display: inline-flex; align-items: center; gap: .4rem; min-height: 2.375rem; padding: .375rem .875rem;
    border: 1px solid var(--ws-line); border-radius: var(--ws-radius-pill); background: var(--ws-surface);
    color: var(--ws-ink); font-size: var(--ws-fs-sm); font-weight: 600; cursor: pointer; white-space: nowrap;
}
.ws-filter__btn:hover, .ws-filter__btn.is-open { border-color: var(--ws-blue); color: var(--ws-blue); background: var(--ws-blue-50); }
.ws-filter__btn svg { transition: transform .15s; }
.ws-filter__btn.is-open svg { transform: rotate(180deg); }
.ws-filter__menu {
    position: absolute; left: 0; top: calc(100% + .375rem); z-index: 40; min-width: 14rem; max-width: min(22rem, calc(100vw - 2 * var(--ws-gutter))); max-height: 20rem; overflow-y: auto;
    padding: .375rem; background: var(--ws-surface); border: 1px solid var(--ws-line); border-radius: var(--ws-radius); box-shadow: var(--ws-shadow-lg);
}
.ws-filter__list { list-style: none; margin: 0; padding: 0; }
.ws-filter__opt { display: flex; align-items: center; justify-content: space-between; gap: .75rem; padding: .5rem .625rem; border-radius: var(--ws-radius-sm); color: var(--ws-ink); font-size: var(--ws-fs-sm); font-weight: 500; text-decoration: none; }
.ws-filter__opt:hover { background: var(--ws-surface-alt); color: var(--ws-blue); }
.ws-filter__opt small { color: var(--ws-muted); font-size: var(--ws-fs-label); font-weight: 600; }
.ws-filter__opt.is-disabled { color: var(--ws-muted); }
.ws-filters__active { display: contents; list-style: none; margin: 0; padding: 0; }
.ws-filters__chip {
    display: inline-flex; align-items: center; gap: .35rem; min-height: 2.375rem; padding: .375rem .625rem .375rem .875rem;
    border-radius: var(--ws-radius-pill); background: var(--ws-ink); color: #fff; font-size: var(--ws-fs-sm); font-weight: 600; text-decoration: none; white-space: nowrap;
}
.ws-filters__chip:hover { background: var(--ws-blue); }
.ws-filters__chip-name { opacity: .7; font-weight: 500; }
.ws-filters__clear { font-size: var(--ws-fs-sm); font-weight: 700; color: var(--ws-blue); text-decoration: none; padding: .375rem .25rem; }
.ws-filters__clear:hover { text-decoration: underline; }

.ws-plp__sort { display: flex; align-items: center; gap: .625rem; margin-left: auto; }
.ws-plp__amount { margin: 0; font-size: var(--ws-fs-sm); color: var(--ws-muted); white-space: nowrap; }
.ws-plp__amount-word { display: none; }
@media (min-width: 640px) { .ws-plp__amount-word { display: inline; } }
.ws-plp__sorter { display: inline-flex; align-items: center; gap: .5rem; }
.ws-plp__sorter-label { display: none; font-size: var(--ws-fs-sm); color: var(--ws-muted); font-weight: 600; }
@media (min-width: 640px) { .ws-plp__sorter-label { display: inline; } }
.ws-plp__dir { display: inline-flex; align-items: center; justify-content: center; width: 2.375rem; height: 2.375rem; border: 1px solid var(--ws-line); border-radius: var(--ws-radius-sm); background: var(--ws-surface); color: var(--ws-body); cursor: pointer; }
.ws-plp__dir:hover { border-color: var(--ws-blue); color: var(--ws-blue); }

/* Bottom: amount + pager + per-page */
.ws-plp__foot { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: .75rem 1rem; margin-top: 1.5rem; padding-top: 1rem; border-top: 1px solid var(--ws-line-soft); }
.ws-plp__foot .pager { display: contents; }
.ws-plp__foot .pager > p, .ws-plp__foot .pager > .limiter { display: none; }   /* pager's own amount/limiter: we print ours */
.ws-plp__foot .pages { display: flex; gap: .25rem; align-items: center; }
.ws-plp__foot .pages ol { display: inline-flex; gap: .25rem; list-style: none; margin: 0; padding: 0; }
.ws-plp__foot .pages a, .ws-plp__foot .pages strong {
    display: inline-flex; align-items: center; justify-content: center; min-width: 2.375rem; height: 2.375rem; padding: 0 .5rem;
    border: 1px solid var(--ws-line) !important; border-radius: var(--ws-radius-sm) !important; background: var(--ws-surface) !important;
    color: var(--ws-ink) !important; font-size: var(--ws-fs-sm); font-weight: 600; text-decoration: none; box-shadow: none !important;
}
.ws-plp__foot .pages a:hover { border-color: var(--ws-blue) !important; color: var(--ws-blue) !important; }
.ws-plp__foot .pages a[aria-current="page"], .ws-plp__foot .pages strong { background: var(--ws-ink) !important; border-color: var(--ws-ink) !important; color: #fff !important; }
.ws-plp__foot .pages a[aria-disabled="true"] { opacity: .4; pointer-events: none; }
.ws-plp__foot .ws-plp__amount { order: 1; }
.ws-plp__limit { order: 3; display: inline-flex; align-items: center; gap: .5rem; font-size: var(--ws-fs-sm); color: var(--ws-muted); font-weight: 600; }
@media (max-width: 639px) { .ws-plp__foot .ws-plp__amount { display: none; } .ws-plp__foot .pages li.hidden { display: none; } }

/* ==========================================================================
   PRODUCT PAGE - purchase panel
   ========================================================================== */
.ws-pdp { display: grid; grid-template-columns: 1fr; gap: 1.5rem; }
@media (min-width: 1024px) { .ws-pdp { grid-template-columns: minmax(0, 1.05fr) minmax(0, 1fr); gap: 3rem; align-items: start; } }
.ws-pdp__gallery { min-width: 0; }
.ws-pdp__gallery .product-image-container, .ws-pdp__gallery img { border-radius: var(--ws-radius); }
.ws-pdp__panel { min-width: 0; }
.ws-pdp__brand { display: inline-flex; align-items: center; gap: .5rem; font-size: var(--ws-fs-sm); font-weight: 700; letter-spacing: .05em; text-transform: uppercase; color: var(--ws-muted); margin: 0 0 .5rem; text-decoration: none; }
.ws-pdp__brand:hover { color: var(--ws-blue); }
.ws-pdp__panel .page-title, .ws-pdp__title { font-size: clamp(1.375rem, 1.1rem + 1.2vw, 1.875rem); font-weight: 800; line-height: 1.2; letter-spacing: -0.02em; color: var(--ws-ink); margin: 0 0 .75rem; }
.ws-pdp__meta { display: flex; flex-wrap: wrap; align-items: center; gap: .5rem .875rem; font-size: var(--ws-fs-sm); color: var(--ws-muted); margin: 0 0 1.25rem; }
.ws-pdp__meta > span { display: inline-flex; align-items: center; gap: .3rem; }
.ws-pdp__meta span b { color: var(--ws-body); font-weight: 600; }

.ws-buy { border: 1px solid var(--ws-line); border-radius: var(--ws-radius-lg); background: var(--ws-surface); box-shadow: var(--ws-shadow); padding: 1.25rem; }
@media (min-width: 640px) { .ws-buy { padding: 1.5rem; } }
.ws-buy__badges { display: flex; flex-wrap: wrap; gap: .4rem; margin-bottom: .75rem; }
.ws-buy__price { display: flex; align-items: baseline; flex-wrap: wrap; gap: .5rem; }
.ws-buy__price-value { font-size: 2.125rem; font-weight: 800; letter-spacing: -0.03em; line-height: 1; color: var(--ws-ink); }
.ws-buy__price-value .price, .ws-buy .price { font: inherit; color: inherit; letter-spacing: inherit; }
.ws-buy__price-vat { font-size: var(--ws-fs-base); font-weight: 600; color: var(--ws-muted); }
.ws-buy__price-was { font-size: var(--ws-fs-base); color: var(--ws-muted); text-decoration: line-through; }
.ws-buy__unit { margin: .375rem 0 0; font-size: var(--ws-fs-base); color: var(--ws-muted); }
.ws-buy__unit b { color: var(--ws-body); }
.ws-buy__retail { margin: .5rem 0 0; font-size: var(--ws-fs-sm); color: var(--ws-muted); }
.ws-buy__retail b { color: var(--ws-body); }
.ws-buy__inc { display: block; font-size: var(--ws-fs-sm); color: var(--ws-muted); margin-top: .25rem; }
.ws-buy__stock { display: flex; flex-wrap: wrap; align-items: center; gap: .5rem .875rem; margin: 1rem 0; padding-top: 1rem; border-top: 1px solid var(--ws-line-soft); font-size: var(--ws-fs-base); font-weight: 600; color: var(--ws-good); }
.ws-buy__stock svg { width: 1.1rem; height: 1.1rem; }
.ws-buy__stock--low { color: var(--ws-deal); }
.ws-buy__stock--oos { color: var(--ws-muted); }
.ws-buy__stock .ws-pill { text-transform: none; letter-spacing: 0; font-weight: 700; }
.ws-buy__form { display: flex; flex-wrap: wrap; gap: .625rem; align-items: stretch; }
.ws-buy__form .ws-qty { min-height: 3rem; }
.ws-buy__form .ws-qty button { width: 2.75rem; font-size: 1.125rem; }
.ws-buy__form .ws-qty input { width: 3rem; font-size: var(--ws-fs-base); }
.ws-buy__form .ws-btn { flex: 1 1 12rem; min-height: 3rem; font-size: var(--ws-fs-md); }
.ws-buy__total { margin: .625rem 0 0; font-size: var(--ws-fs-sm); color: var(--ws-muted); }
.ws-buy__total b { color: var(--ws-ink); }
.ws-buy__trade { margin-top: 1rem; padding: .875rem 1rem; border-radius: var(--ws-radius); background: var(--ws-blue-50); border: 1px solid var(--ws-blue-100); font-size: var(--ws-fs-sm); color: var(--ws-body); }
.ws-buy__trade a { font-weight: 700; }
.ws-buy__notify { margin-top: .5rem; }
.ws-buy__notify a { display: inline-flex; }

.ws-assure { list-style: none; margin: 1.25rem 0 0; padding: 0; display: grid; grid-template-columns: 1fr; gap: .625rem; }
@media (min-width: 480px) { .ws-assure { grid-template-columns: repeat(2, minmax(0,1fr)); } }
.ws-assure li { display: flex; gap: .625rem; align-items: flex-start; padding: .75rem .875rem; border-radius: var(--ws-radius); background: var(--ws-surface-alt); font-size: var(--ws-fs-sm); color: var(--ws-body); line-height: 1.45; }
.ws-assure svg { width: 1.125rem; height: 1.125rem; flex-shrink: 0; color: var(--ws-blue); margin-top: .05rem; }
.ws-assure b { display: block; color: var(--ws-ink); font-weight: 700; }
.ws-assure a { color: var(--ws-blue); }

.ws-pdp__details { margin-top: 2.5rem; display: grid; grid-template-columns: 1fr; gap: 2rem; }
@media (min-width: 1024px) { .ws-pdp__details { grid-template-columns: minmax(0, 1.6fr) minmax(0, 1fr); gap: 3rem; } }
.ws-pdp__section h2 { font-size: var(--ws-fs-h3); font-weight: 800; margin: 0 0 .75rem; padding-bottom: .5rem; border-bottom: 2px solid var(--ws-line-soft); }
.ws-prose { font-size: var(--ws-fs-body); line-height: 1.65; color: var(--ws-body); max-width: 70ch; }
.ws-prose p { margin: 0 0 .875rem; }
.ws-prose ul, .ws-prose ol { margin: 0 0 .875rem 1.25rem; }
.ws-prose li { margin-bottom: .25rem; }
.ws-prose h2, .ws-prose h3 { margin: 1.5rem 0 .5rem; }
.ws-spec { width: 100%; border-collapse: collapse; font-size: var(--ws-fs-sm); }
.ws-spec th, .ws-spec td { text-align: left; padding: .55rem .25rem; border-bottom: 1px solid var(--ws-line-soft); vertical-align: top; }
.ws-spec th { width: 42%; font-weight: 600; color: var(--ws-muted); }
.ws-spec td { color: var(--ws-ink); word-break: break-word; }
.ws-related { margin-top: 3rem; }
.ws-related h2 { font-size: var(--ws-fs-h2); font-weight: 800; margin: 0 0 1rem; }
.ws-related__head { display: flex; align-items: baseline; justify-content: space-between; gap: 1rem; margin-bottom: 1rem; }
.ws-related__head h2 { margin: 0; }
.ws-link { color: var(--ws-blue); font-weight: 700; font-size: var(--ws-fs-sm); text-decoration: none; white-space: nowrap; }
.ws-link:hover { text-decoration: underline; }
.ws-pdp__titlewrap { display: block; }
.ws-pdp__short { margin: 0 0 1.25rem; }
.ws-buy__tiers { margin: .75rem 0 0; font-size: var(--ws-fs-sm); color: var(--ws-body); }
.ws-buy__tiers ul { list-style: none; margin: 0; padding: 0; display: grid; gap: .25rem; }
.ws-buy__shortcuts { margin-top: .75rem; }
.ws-buy__iwoca { margin-top: .75rem; font-size: var(--ws-fs-sm); }
.ws-buy__iwoca > * { max-width: 100%; border-radius: var(--ws-radius-sm); }
.ws-buy__oos-help { margin: .5rem 0 0; font-size: var(--ws-fs-sm); color: var(--ws-muted); }
.ws-buy__oos-help a { color: var(--ws-blue); }
.ws-buy__notify a.ws-btn, .ws-buy__notify .action.alert { display: inline-flex; align-items: center; gap: .4rem; min-height: 2.75rem; padding: .5rem 1rem; border: 1px solid var(--ws-line); border-radius: var(--ws-radius-sm); color: var(--ws-ink); font-weight: 700; font-size: var(--ws-fs-sm); text-decoration: none; }
.ws-buy__trade { display: flex; gap: .625rem; align-items: flex-start; }
.ws-buy__trade svg { flex-shrink: 0; color: var(--ws-blue); margin-top: .1rem; }
.ws-buy__price .ws-card__trade-tag { align-self: center; font-size: var(--ws-fs-sm); }
.ws-pdp__additional, .ws-pdp__actions { margin-top: 1rem; font-size: var(--ws-fs-sm); }
.ws-pdp .product-image-container, .ws-pdp .product-image-wrapper { max-width: 100%; }
.ws-pdp__gallery .product-image-photo, .ws-pdp__gallery img { background: var(--ws-surface); }
/* Hyvä product sliders (related / upsell) render our card */
.ws-related .snap-track { gap: 1rem; }
.ws-related .snap-track > * { min-width: 0; }

/* ==========================================================================
   CMS pages - reading column
   ========================================================================== */
.cms-page-view .column.main, .cms-no-route .column.main { max-width: 48rem; margin-inline: auto; }
.cms-page-view h1.page-title, .cms-no-route h1.page-title { max-width: 48rem; margin-inline: auto; }
.cms-page-view .column.main { font-size: var(--ws-fs-body); line-height: 1.65; }
.cms-page-view .column.main h2 { font-size: var(--ws-fs-h2); font-weight: 800; margin: 2rem 0 .75rem; }
.cms-page-view .column.main h3 { font-size: var(--ws-fs-h3); font-weight: 700; margin: 1.5rem 0 .5rem; }
.cms-page-view .column.main p { margin: 0 0 1rem; }
.cms-page-view .column.main ul, .cms-page-view .column.main ol { margin: 0 0 1rem 1.25rem; }
.cms-page-view .column.main li { margin-bottom: .35rem; }
.cms-page-view .column.main a { text-decoration: underline; }
/* Legacy CMS content carried its own Tailwind-style utility markup; some of
   those classes are not in the purged build. Keep the column readable. */
.cms-page-view .column.main img { max-width: 100%; height: auto; border-radius: var(--ws-radius); }
.cms-page-view .ws-terms-version { color: var(--ws-muted); font-size: var(--ws-fs-sm); margin-bottom: 1.25rem; }

/* ==========================================================================
   Registration - numbered steps + side panel
   ========================================================================== */
.customer-account-create .column.main { max-width: none; }
.ws-register { padding-block: .25rem 3rem; }
.ws-register__grid { display: grid; grid-template-columns: minmax(0, 40rem) minmax(15rem, 19rem); gap: 2rem; justify-content: center; align-items: start; }
@media (max-width: 899px) { .ws-register__grid { grid-template-columns: minmax(0, 40rem); } .ws-register__side { position: static; } }
.ws-register__form { min-width: 0; }
.ws-register__step { border: 1px solid var(--ws-line); border-radius: var(--ws-radius); padding: 1.25rem; margin: 0 0 1rem; background: var(--ws-surface); min-width: 0; }
.ws-register__legend { float: left; width: 100%; display: flex; align-items: center; gap: .625rem; font-size: var(--ws-fs-h3); font-weight: 800; color: var(--ws-ink); margin: 0 0 1rem; padding: 0; }
.ws-register__legend ~ * { clear: both; } /* first sibling may be a <style> tag, so clear every sibling */
.ws-register__num { display: inline-flex; flex: none; width: 1.625rem; height: 1.625rem; border-radius: 50%; background: var(--ws-blue); color: #fff; font-size: var(--ws-fs-sm); font-weight: 700; align-items: center; justify-content: center; }
.ws-register .field { margin: 0 0 .875rem; }
.ws-register .field .label { display: block; font-size: var(--ws-fs-sm); font-weight: 600; color: var(--ws-ink); margin: 0 0 .25rem; }
.ws-register .form-input {
    width: 100%; min-height: 2.75rem; padding: .6rem .9rem; border: 1.5px solid var(--ws-line); border-radius: var(--ws-radius-sm);
    background: var(--ws-surface); color: var(--ws-ink); font-size: var(--ws-fs-base); box-shadow: none;
}
.ws-register .form-input:focus { outline: none; border-color: var(--ws-blue); box-shadow: 0 0 0 3px var(--ws-blue-100); }
.ws-register .messages, .ws-register .field .control + p { font-size: var(--ws-fs-sm); }
.ws-register__check { display: flex; gap: .625rem; align-items: flex-start; font-size: var(--ws-fs-sm); color: var(--ws-body); margin: .25rem 0 0; cursor: pointer; }
.ws-register__check input { flex: none; width: 1.125rem; height: 1.125rem; margin-top: .1rem; accent-color: var(--ws-blue); }
.ws-register__pw { display: grid; gap: 0 1rem; }
@media (min-width: 640px) { .ws-register__pw { grid-template-columns: 1fr 1fr; } }
.ws-register__pwfield { position: relative; }
.ws-register__pwfield .form-input { padding-right: 3rem; }
.ws-register__eye { position: absolute; right: .125rem; top: 0; width: 2.75rem; height: 2.75rem; display: inline-flex; align-items: center; justify-content: center; color: var(--ws-muted); background: none; border: 0; cursor: pointer; }
.ws-register__eye:hover { color: var(--ws-ink); }
.ws-register__strength { font-size: var(--ws-fs-sm); color: var(--ws-muted); margin-top: .25rem; }
.ws-register__hint { font-size: var(--ws-fs-sm); color: var(--ws-muted); margin: 0; }
.ws-register__actions { display: flex; flex-wrap: wrap; align-items: center; gap: 1rem; margin-top: .5rem; }
.ws-register__actions .ws-btn { min-width: 14rem; }
.ws-register__back { color: var(--ws-muted); text-decoration: underline; }
.ws-register__legal { font-size: var(--ws-fs-label); color: var(--ws-muted); margin-top: .75rem; }
.ws-register__legal a { text-decoration: underline; }
.ws-register__side { display: grid; gap: 1rem; position: sticky; top: 5rem; }
.ws-register__panel { background: var(--ws-surface-alt); border-radius: var(--ws-radius); padding: 1.125rem 1.25rem; }
.ws-register__panel h2 { font-size: var(--ws-fs-base); font-weight: 800; margin: 0 0 .5rem; }
.ws-register__panel ul, .ws-register__panel ol { margin: 0; padding-left: 1.1rem; font-size: var(--ws-fs-sm); color: var(--ws-body); display: grid; gap: .35rem; }
.ws-register__panel ul { list-style: disc; }
.ws-register__panel ol { list-style: decimal; }
.ws-register__panel--contact p { margin: 0 0 .35rem; font-size: var(--ws-fs-sm); }
.ws-register__panel--contact a { color: var(--ws-blue); font-weight: 600; text-decoration: none; }
.ws-register__panel--contact a:hover { text-decoration: underline; }
.ws-register__panel--contact span { color: var(--ws-muted); margin-left: .35rem; }
/* The business-fields block (module template) carries its own tokens; align them with ours. */
.ws-register .ws-reg { --wt-blue: var(--ws-blue); --wt-blue-50: var(--ws-blue-100); --wt-line: var(--ws-line); --wt-line-soft: var(--ws-line-soft); --wt-radius: var(--ws-radius); --wt-ink: var(--ws-ink); --wt-body: var(--ws-body); --wt-muted: var(--ws-muted); margin-bottom: 0; }
.ws-register .ws-reg__legend { display: none; } /* step heading already says "Account type" */
.ws-register .ws-reg__steps { display: none; }  /* side panel already has "What happens next" */

/* ==========================================================================
   Messages (Hyvä page messages)
   ========================================================================== */
.message { border-radius: var(--ws-radius) !important; font-size: var(--ws-fs-base); }

/* ==========================================================================
   HOMEPAGE sections (ported from home-v2.css; scoped to .ws)
   ========================================================================== */
.ws { color: var(--ws-body); font-size: var(--ws-fs-base); }
.ws section[id] { scroll-margin-top: 5.5rem; }
.ws-section { padding-block: 2rem; }
@media (min-width: 768px) { .ws-section { padding-block: 3rem; } }
.ws-section--tint { background: var(--ws-surface-alt); }
.ws-section--deal { background: var(--ws-deal-50); }
.ws-section--plain { background: var(--ws-surface); }

.ws-head { display: flex; align-items: flex-end; justify-content: space-between; gap: 1rem; margin-bottom: 1.25rem; }
.ws-head__text { min-width: 0; }
.ws-head__eyebrow { display: inline-block; font-size: var(--ws-fs-label); font-weight: 700; letter-spacing: .07em; text-transform: uppercase; color: var(--ws-blue); margin-bottom: .375rem; }
.ws-section--deal .ws-head__eyebrow { color: var(--ws-deal); }
.ws-head h2 { font-size: var(--ws-fs-h2); font-weight: 800; letter-spacing: -0.02em; line-height: 1.2; color: var(--ws-ink); margin: 0; }
.ws-head p { margin: .375rem 0 0; font-size: var(--ws-fs-sm); color: var(--ws-muted); }
.ws-head__link { flex-shrink: 0; display: inline-flex; align-items: center; gap: .25rem; font-size: var(--ws-fs-base); font-weight: 700; color: var(--ws-blue); text-decoration: none; white-space: nowrap; padding-bottom: .125rem; border-bottom: 2px solid transparent; transition: border-color .15s ease, color .15s ease; }
.ws-head__link:hover { color: var(--ws-ink); border-bottom-color: var(--ws-orange-500); }
.ws-section--deal .ws-head__link { color: var(--ws-deal); }
.ws-head__link svg { width: 1rem; height: 1rem; }
@media (max-width: 30rem) { .ws-head { flex-direction: column; align-items: flex-start; gap: .5rem; } }

/* Hero: three lines of copy + two actions on the left, "New in stock" strip
   on the right. Header/top bar already carry search and the USPs, so nothing
   here repeats them. Target height ~260px at 1280. */
.ws-hero { position: relative; overflow: hidden; border-bottom: 1px solid var(--ws-line-soft);
    background: radial-gradient(50% 90% at 92% 10%, rgba(240,144,20,.06) 0%, rgba(240,144,20,0) 60%), linear-gradient(180deg, var(--ws-blue-50) 0%, #fff 100%); }
.ws-hero__inner { display: grid; grid-template-columns: 1fr; gap: 1.25rem; padding-block: 1.5rem 1.375rem; align-items: center; }
@media (min-width: 900px) { .ws-hero__inner { grid-template-columns: minmax(0,1fr) minmax(0,36rem); gap: 2.5rem; padding-block: 1.75rem; } }
.ws-hero h1 { font-size: clamp(1.625rem, 1.2rem + 1.5vw, 2.25rem); font-weight: 800; letter-spacing: -0.025em; line-height: 1.12; color: var(--ws-ink); margin: 0 0 .5rem; text-wrap: balance; }
.ws-hero h1 em { font-style: normal; color: var(--ws-blue); }
.ws-hero__sub { font-size: var(--ws-fs-base); line-height: 1.5; color: var(--ws-body); margin: 0 0 1rem; max-width: 32rem; }
.ws-hero__ctas { display: flex; flex-wrap: wrap; gap: .625rem; margin: 0; }

.ws-deals { display: none; }
@media (min-width: 900px) { .ws-deals { display: block; min-width: 0; } }
.ws-deals__head { display: flex; align-items: baseline; justify-content: space-between; gap: 1rem; margin-bottom: .5rem; }
.ws-deals__eyebrow { font-size: var(--ws-fs-label); font-weight: 700; letter-spacing: .06em; text-transform: uppercase; color: var(--ws-blue); }
.ws-deals__all { font-size: var(--ws-fs-sm); font-weight: 600; color: var(--ws-blue); text-decoration: none; white-space: nowrap; }
.ws-deals__all:hover { text-decoration: underline; }
.ws-deals__grid { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(2, minmax(0,1fr)); gap: .5rem; }
@media (min-width: 1100px) { .ws-deals__grid { grid-template-columns: repeat(4, minmax(0,1fr)); } }
.ws-deal { display: flex; flex-direction: column; gap: .375rem; height: 100%; padding: .625rem; background: var(--ws-surface); border: 1px solid var(--ws-line-soft); border-radius: var(--ws-radius); box-shadow: var(--ws-shadow); text-decoration: none; color: inherit; transition: border-color .15s ease, box-shadow .15s ease; }
.ws-deal:hover { border-color: var(--ws-blue-100); box-shadow: var(--ws-shadow-md); }
.ws-deal__media { display: block; height: 6rem; overflow: hidden; }   /* fixed frame: no shift when images land */
.ws-deal__media img { display: block; width: 100%; height: 100%; object-fit: contain; }
.ws-deal__name { font-size: var(--ws-fs-sm); line-height: 1.3; color: var(--ws-ink); display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; min-height: 2.6em; }
.ws-deal__price { font-size: var(--ws-fs-base); font-weight: 800; color: var(--ws-ink); letter-spacing: -0.01em; }
.ws-deal__price .price { font: inherit; color: inherit; }
.ws-deal__price small { font-size: var(--ws-fs-label); font-weight: 600; color: var(--ws-muted); letter-spacing: 0; }

.ws-trade { background: linear-gradient(135deg, #0a4a75 0%, #0a5f93 55%, var(--ws-blue) 100%); color: #fff; }
.ws-trade__inner { display: grid; grid-template-columns: 1fr; gap: 1.5rem; padding-block: 2rem; align-items: center; }
@media (min-width: 900px) { .ws-trade__inner { grid-template-columns: minmax(0,1.15fr) minmax(0,1fr); gap: 3rem; padding-block: 2.75rem; } }
.ws-trade h2 { font-size: var(--ws-fs-h2); font-weight: 800; letter-spacing: -0.02em; line-height: 1.2; color: #fff; margin: 0 0 .625rem; }
.ws-trade__sub { font-size: var(--ws-fs-md); line-height: 1.5; color: rgba(255,255,255,.85); margin: 0 0 1.25rem; max-width: 34rem; }
.ws-trade__ctas { display: flex; flex-wrap: wrap; gap: .625rem; }
.ws-trade__list { list-style: none; margin: 0; padding: 0; display: grid; gap: .75rem; }
.ws-trade__list li { display: flex; align-items: flex-start; gap: .625rem; font-size: var(--ws-fs-base); line-height: 1.45; color: rgba(255,255,255,.92); }
.ws-trade__list svg { width: 1.25rem; height: 1.25rem; flex-shrink: 0; margin-top: .0625rem; color: #7fd4ab; }
.ws-trade__list b { color: #fff; font-weight: 700; }

.ws-dealstrip { display: flex; align-items: center; flex-wrap: wrap; gap: .5rem .875rem; padding: .75rem 1rem; margin-bottom: 1.25rem; background: var(--ws-surface); border: 1px solid var(--ws-deal-100); border-left: 4px solid var(--ws-deal); border-radius: var(--ws-radius); box-shadow: var(--ws-shadow); }
.ws-dealstrip svg { width: 1.25rem; height: 1.25rem; color: var(--ws-deal); flex-shrink: 0; }
.ws-dealstrip p { margin: 0; font-size: var(--ws-fs-base); color: var(--ws-body); flex: 1 1 14rem; }
.ws-dealstrip b { color: var(--ws-ink); font-weight: 700; }

.ws-auction { display: grid; grid-template-columns: 1fr; gap: 1rem; }
@media (min-width: 768px) { .ws-auction { grid-template-columns: repeat(2, minmax(0,1fr)); gap: 1.25rem; } }
.ws-auction__card { display: flex; flex-direction: column; align-items: flex-start; gap: .625rem; padding: 1.5rem; border-radius: var(--ws-radius-lg); border: 1px solid var(--ws-line); background: var(--ws-surface); box-shadow: var(--ws-shadow); }
.ws-auction__card--bid { background: linear-gradient(140deg, var(--ws-orange-50) 0%, #fff 70%); border-color: var(--ws-orange-100); }
.ws-auction__badge { display: inline-flex; align-items: center; gap: .375rem; padding: .25rem .625rem; border-radius: var(--ws-radius-pill); background: var(--ws-orange-100); color: #8a4b02; font-size: var(--ws-fs-label); font-weight: 800; text-transform: uppercase; letter-spacing: .05em; }
.ws-auction__card--sell .ws-auction__badge { background: var(--ws-blue-100); color: #08557f; }
.ws-auction__badge svg { width: .875rem; height: .875rem; }
.ws-auction__card h3 { font-size: var(--ws-fs-h3); font-weight: 800; color: var(--ws-ink); margin: 0; letter-spacing: -0.01em; }
.ws-auction__card p { margin: 0; font-size: var(--ws-fs-base); line-height: 1.5; color: var(--ws-body); }
.ws-auction__card .ws-btn { margin-top: .375rem; }
.ws-auction__by { margin-top: 1.25rem; text-align: center; font-size: var(--ws-fs-sm); color: var(--ws-muted); }
.ws-auction__by a { color: var(--ws-blue); font-weight: 700; text-decoration: none; }
.ws-auction__by a:hover { text-decoration: underline; }

.ws-news { background: var(--ws-ink); color: #fff; }
.ws-news__inner { max-width: 38rem; margin-inline: auto; text-align: center; padding-block: 2.5rem; }
.ws-news h2 { font-size: var(--ws-fs-h2); font-weight: 800; color: #fff; margin: 0 0 .5rem; letter-spacing: -0.02em; }
.ws-news p { font-size: var(--ws-fs-base); color: rgba(255,255,255,.7); margin: 0 0 1.5rem; }
.ws-news form { display: flex; flex-direction: column; gap: .625rem; }
@media (min-width: 480px) { .ws-news form { flex-direction: row; } }
.ws-news input[type="email"] { flex: 1 1 auto; min-width: 0; padding: .8125rem 1rem; border-radius: var(--ws-radius); border: 1px solid rgba(255,255,255,.2); background: rgba(255,255,255,.08); color: #fff; font-size: var(--ws-fs-base); }
.ws-news input[type="email"]::placeholder { color: rgba(255,255,255,.5); }
.ws-news input[type="email"]:focus { outline: 0; border-color: var(--ws-orange-500); box-shadow: 0 0 0 3px rgba(240,144,20,.25); }

@media (max-width: 899px) {
    .ws { display: flex; flex-direction: column; }
    .ws-hero { order: 1; } .ws > #shop { order: 3; } .ws > #categories { order: 4; }
    .ws > #trade { order: 5; } .ws > #clearance { order: 6; } .ws > #auctions { order: 7; } .ws-news { order: 8; }
    .ws-hero__inner { padding-block: 1.25rem; gap: 0; }
}
@media (max-width: 599px) {
    .ws-hide-sm { display: none; }
    .ws-hero__ctas { display: grid; grid-template-columns: 1fr; gap: .5rem; }
    .ws-hero__cta-shop { display: none; }
    .ws-section { padding-block: 1.5rem; }
}
