/*
Theme Name: Tsixlis
Theme URI: https://www.tsixlis.gr/
Description: WooCommerce θέμα του Τεχνικού Πολυκαταστήματος Τσιχλής — TSIXLIS design system (modern industrial × premium e-commerce).
Version: 0.7.9
Requires at least: 6.6
Requires PHP: 8.1
Text Domain: tsixlis
WC requires at least: 9.0
*/

/* =========================================================================
   TSIXLIS design system — tokens (docs/premium-plan.md §1, BRAND.md)
   Ratio: ~60% white/light gray · 25% blue · 10% dark navy · 5% orange.
   This file is frozen after WS0: the partials in assets/css/ use these
   names and never introduce new colour, size or shadow values.
   ========================================================================= */
:root {
	/* Brand */
	--c-blue: #134685;          /* primary: logo, nav, links, icons, dark sections */
	--c-blue-hover: #0f3a70;
	--c-navy: #0b2545;          /* main text, footer, strong headings */
	--c-orange: #ef7f1b;        /* accent only: primary CTA, sale badge, active dot, highlights */
	--c-orange-hover: #d96d10;
	--c-white: #fff;
	--c-gray: #f4f6f8;          /* section backgrounds, filters */
	--c-border: #e2e6ea;        /* cards, inputs, dividers */
	/* Roles (§1.6) */
	--c-orange-text: #b35a0c;   /* orange as TEXT (sale price): 4.8:1 on white — the BRAND.md "for AA" switch (parity #29) */
	--c-navy-2: #0f2e55;        /* raised surface on navy: newsletter band, step cards, payment chips */
	--c-gray-2: #eaeef2;        /* hover on gray, dividers on gray */
	--c-border-strong: #c9d1da; /* card hover, checkbox and input outlines */
	--c-tint: #eef3f9;          /* blue-tinted info panels: delivery box, selected filters, toast */
	--c-on-dark: #c9d6e6;       /* body text on navy/blue */
	--c-line-dark: rgba(255, 255, 255, .14); /* dividers on navy/blue */
	--c-glass-dark: rgba(255, 255, 255, .06); /* chips and quiet tiles on navy/blue */
	--c-scrim: rgba(11, 37, 69, .55);       /* backdrop behind the drawer, filter sheet and dialogs */
	--c-dot-on-dark: rgba(255, 255, 255, .55); /* inactive slider dots on navy/blue or photos */
	--c-dot-on-light: rgba(11, 37, 69, .3);    /* inactive slider dots on white/gray */
	--g-shade-bottom: linear-gradient(180deg, rgba(11, 37, 69, 0) 0%, rgba(11, 37, 69, .82) 100%); /* caption legibility over media */
	--g-media: linear-gradient(180deg, #f8fafc 0%, #eef2f6 100%);       /* product image panels (~3% luminance) */
	--g-media-hover: linear-gradient(180deg, #f4f7fa 0%, #e8edf3 100%);
	/* Functional (UI states only) */
	--c-muted: #5a6b80;         /* secondary text: 5.4:1 on white */
	--c-success: #1f7a3a;
	--c-error: #c62828;

	/* Type (§1.2) — Manrope variable 400–800; clamps are linear between 390 and 1440 px */
	--font: "Manrope", "Manrope Fallback", "Manrope Fallback R", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
	--fs-hero: clamp(28px, 1.143vw + 23.54px, 40px);   /* hero slide + campaign titles · 800 / 1.08 / -.025em */
	--fs-h1: clamp(28px, 1.143vw + 23.54px, 40px);     /* page titles · 800 / 1.15 / -.02em */
	--fs-product: clamp(22px, .952vw + 18.29px, 32px); /* single-product H1 · 700 / 1.2 / -.015em */
	--fs-h2: clamp(24px, 1.143vw + 19.54px, 36px);     /* section titles · 700 / 1.15 / -.02em */
	--fs-h3: clamp(20px, .571vw + 17.77px, 26px);      /* rail, feature, step titles · 700 / 1.25 / -.01em */
	--fs-h4: 17px;                                     /* widget, footer, card-group titles · 700 / 1.3 */
	--fs-lead: clamp(16px, .19vw + 15.26px, 18px);     /* hero text, section intros · 500 / 1.55 */
	--fs-body: 16px;                                   /* 400 / 1.6 */
	--fs-small: 14px;                                  /* filters, footer links, meta · 500 / 1.5 */
	--fs-meta: 13px;                                   /* SKU, stock, breadcrumb · 500–600 / 1.4 */
	--fs-label: 12px;                                  /* UPPERCASE labels only (eyebrow, card brand, badges) · 700–800 / .08em; the only size below 13 */
	--fs-xs: var(--fs-meta);                           /* back-compat alias */
	--fs-card-price: 22px;                             /* 800 / 1.15, tabular figures */
	--fs-price: clamp(26px, .19vw + 25.26px, 28px);    /* single-product price · 800 / 1.1, tabular */
	--fs-btn: 15px;
	--fs-btn-sm: 14px;
	--tr-label: .08em;

	/* Space (4 px base, BRAND.md) — no other values */
	--s-1: 4px; --s-2: 8px; --s-3: 12px; --s-4: 16px; --s-6: 24px; --s-8: 32px;
	--s-12: 48px; --s-16: 64px; --s-20: 80px; --s-24: 96px;
	--section-y: clamp(40px, 2.29vw + 31.1px, 64px);  /* section padding: 40 at 390 → 64 at 1440 */
	--container: 1360px;                               /* 1312 px content at ≥768 (24 px gutters), 16 px gutters below */

	/* Radius (§1.5) — nested: inner = outer − padding, never below 4; nothing above 10 except circles */
	--r-xs: 4px;      /* badges, filter chips, payment marks */
	--r-btn: 6px;     /* buttons, inputs, selects, tabs, toasts, price chips */
	--r-input: 6px;   /* alias of --r-btn */
	--r-media: 8px;   /* image panels inside cards, gallery thumbs, small hero tiles */
	--r-card: 10px;   /* cards, banners, slider viewport, widgets, service and steps panels */
	--r-pill: 999px;  /* slider dots and counters only */

	/* Elevation (§1.4) — borders first, shadows only when something lifts */
	--shadow-1: 0 1px 2px rgba(11, 37, 69, .06);                                     /* inputs, resting tiles on gray */
	--shadow-2: 0 4px 12px rgba(11, 37, 69, .06), 0 1px 3px rgba(11, 37, 69, .05);   /* scrolled sticky header, toolbars */
	--shadow-3: 0 12px 28px rgba(11, 37, 69, .10), 0 2px 6px rgba(11, 37, 69, .05);  /* card hover, mega menu, toast */
	--shadow-4: 0 24px 48px rgba(11, 37, 69, .16), 0 4px 12px rgba(11, 37, 69, .06); /* drawer, filter sheet, dialogs */
	--shadow-2-up: 0 -4px 12px rgba(11, 37, 69, .06), 0 -1px 3px rgba(11, 37, 69, .05); /* --shadow-2 mirrored: bars fixed to the bottom */
	--shadow-on-dark: 0 16px 36px rgba(3, 12, 26, .35);                              /* white tiles on blue/navy */
	--shadow-sm: var(--shadow-1);                                                    /* back-compat aliases */
	--shadow: var(--shadow-3);

	/* Motion (§1.8) */
	--dur-1: 120ms;                            /* colour, opacity, press */
	--dur-2: 200ms;                            /* shadow, small transforms, dropdowns */
	--dur-3: 320ms;                            /* drawer, filter sheet, toast, card image zoom */
	--ease: cubic-bezier(.2, .7, .2, 1);       /* standard ease-out */
	--ease-in-out: cubic-bezier(.65, 0, .35, 1); /* sheets */

	/* Layers */
	--z-header: 100;
	--z-drawer: 1000;

	/* Brand graphic: the "T" symbol (monochrome mask for watermarks). */
	--t-mark: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 57 52'%3E%3Cpath d='M3 0h51a3 3 0 0 1 3 3v20l-15-6.5V12h-6v29H21V12h-6v4.5L0 23V3a3 3 0 0 1 3-3Z'/%3E%3Cpath d='M0 26.5 15 20v23h27V20l15 6.5V49a3 3 0 0 1-3 3H3a3 3 0 0 1-3-3Z'/%3E%3C/svg%3E");
}

/* =========================================================================
   Base
   ========================================================================= */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; }
body { margin: 0; font-family: var(--font); font-size: var(--fs-body); font-weight: 400; line-height: 1.6; color: var(--c-navy); background: var(--c-white); -webkit-font-smoothing: antialiased; }
img { max-width: 100%; height: auto; display: block; }
a { color: var(--c-blue); text-decoration: none; transition: color var(--dur-1) var(--ease); }
a:hover { color: var(--c-blue-hover); }
h1, h2, h3, h4, h5, h6 { font-family: var(--font); color: var(--c-navy); font-weight: 700; margin: 0 0 .5em; text-wrap: balance; }
h1 { font-size: var(--fs-h1); font-weight: 800; line-height: 1.15; letter-spacing: -.02em; }
h2 { font-size: var(--fs-h2); line-height: 1.15; letter-spacing: -.02em; }
h3 { font-size: var(--fs-h3); line-height: 1.25; letter-spacing: -.01em; }
h4 { font-size: var(--fs-h4); line-height: 1.3; }
h5, h6 { font-size: var(--fs-body); line-height: 1.4; }
p { margin: 0 0 1em; text-wrap: pretty; }
address { font-style: normal; }
button, input, select, textarea { font: inherit; color: inherit; }
/* Focus: blue on light surfaces (9.4:1), orange on dark ones. */
:focus-visible { outline: 3px solid var(--c-blue); outline-offset: 2px; }
:is(.on-dark, .topbar, .header-nav, .site-footer, .hero-slide, .feature__panel, .service-cta__body) :focus-visible { outline-color: var(--c-orange); }
:is(.on-light, .cat-menu) :focus-visible { outline-color: var(--c-blue); }
/* Links that fill a clipping box (overflow hidden/auto) draw the ring inside, or it is cut off. A banner's
   media box is positioned and would paint over the link's own inset outline, so the ring goes on the media. */
:is(.banner-feature__media, .banner-slide) a.banner:focus-visible { outline: 0; }
:is(.banner-feature__media, .banner-slide) a.banner:focus-visible > .banner__media { outline: 3px solid var(--c-blue); outline-offset: -3px; }
/* Links inside running text are underlined: blue on navy text is only 1.6:1 (WCAG 1.4.1). Classed links are UI,
   and so are links inside a <nav> (My Account menu); WooCommerce's privacy and terms sentences are text. */
:is(.entry-content, .woocommerce-MyAccount-content, .term-description, .woocommerce-product-details__short-description, .woocommerce-Tabs-panel) :is(p, li, td, dd, figcaption) a:not([class], nav a), :is(.woocommerce-privacy-policy-text, .woocommerce-terms-and-conditions-checkbox-text, .wc-block-checkout__terms) a { text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: 2px; }
:is(.entry-content, .woocommerce-MyAccount-content, .term-description, .woocommerce-product-details__short-description, .woocommerce-Tabs-panel) :is(p, li, td, dd, figcaption) a:not([class], nav a):hover, :is(.woocommerce-privacy-policy-text, .woocommerce-terms-and-conditions-checkbox-text, .wc-block-checkout__terms) a:hover { text-decoration-thickness: 2px; }
.screen-reader-text { position: absolute !important; width: 1px; height: 1px; overflow: hidden; clip: rect(1px, 1px, 1px, 1px); white-space: nowrap; }
.skip-link:focus { position: fixed; top: 8px; left: 8px; z-index: 9999; width: auto; height: auto; clip: auto; padding: var(--s-3) var(--s-4); background: var(--c-white); color: var(--c-blue); border-radius: var(--r-btn); }
.container { width: 100%; max-width: var(--container); margin: 0 auto; padding: 0 var(--s-4); }
@media (min-width: 768px) { .container { padding: 0 var(--s-6); } }
.eyebrow { display: inline-flex; align-items: center; gap: var(--s-2); margin-bottom: var(--s-2); font-size: var(--fs-label); font-weight: 800; line-height: 1.3; letter-spacing: var(--tr-label); text-transform: uppercase; color: var(--c-blue); }
.eyebrow::before { content: ""; width: 20px; height: 3px; border-radius: 2px; background: var(--c-orange); }
.on-dark .eyebrow, .eyebrow--light { color: var(--c-white); }
.on-dark :is(h1, h2, h3, h4) { color: var(--c-white); }
.on-light :is(h1, h2, h3, h4) { color: var(--c-navy); } /* white tiles inside dark panels */
.lead { font-size: var(--fs-lead); font-weight: 500; line-height: 1.55; max-width: 60ch; }

/* =========================================================================
   Buttons (§1.11) — sentence case, letter-spacing 0, radius 6, icon 20 left.
   Primary (orange) = the one commerce action of a view · .btn = secondary
   (blue) · outline · light (on dark) · outline-light · text · link-arrow.
   ========================================================================= */
.btn, .button, .woocommerce a.button, .woocommerce button.button, .woocommerce input.button, .wp-element-button, .wc-block-components-button:not(.is-link) {
	display: inline-flex; align-items: center; justify-content: center; gap: var(--s-2);
	min-height: 48px; padding: var(--s-2) var(--s-6); border: 1.5px solid transparent; border-radius: var(--r-btn);
	background: var(--c-blue); color: var(--c-white); font-family: var(--font); font-weight: 700; font-size: var(--fs-btn); line-height: 1.2; letter-spacing: 0; text-transform: none; text-align: center;
	cursor: pointer; text-decoration: none; -webkit-tap-highlight-color: transparent;
	transition: background-color var(--dur-1) var(--ease), color var(--dur-1) var(--ease), border-color var(--dur-1) var(--ease), transform var(--dur-1) var(--ease);
}
.btn:hover, .button:hover, .woocommerce a.button:hover, .woocommerce button.button:hover { background: var(--c-blue-hover); color: var(--c-white); }
.btn:active, .button:active, .woocommerce a.button:active, .woocommerce button.button:active, .wp-element-button:active, .wc-block-components-button:not(.is-link):active { transform: translateY(1px); }
.btn svg, .button svg { flex: none; width: 20px; height: 20px; }
.btn:disabled, .btn[aria-disabled=true], .button:disabled, .button.disabled { opacity: .45; cursor: not-allowed; }
.btn:disabled:active, .btn[aria-disabled=true]:active, .button:disabled:active, .button.disabled:active { transform: none; }
/* Loading: a 16 px spinner replaces the icon (set aria-busy="true"). */
.btn[aria-busy=true] { pointer-events: none; }
.btn[aria-busy=true] svg { display: none; }
.btn[aria-busy=true]::before { content: ""; flex: none; width: 16px; height: 16px; border: 2px solid currentColor; border-right-color: transparent; border-radius: 50%; animation: tsixlis-spin .7s linear infinite; }
@keyframes tsixlis-spin { to { transform: rotate(360deg); } }
/* 1. Primary: orange / white */
.btn--primary, .woocommerce a.button.alt, .woocommerce button.button.alt, .single_add_to_cart_button, .wc-block-components-checkout-place-order-button, .wc-block-cart__submit-button, .woocommerce a.checkout-button {
	background: var(--c-orange) !important; border-color: var(--c-orange) !important; color: var(--c-white) !important;
}
.btn--primary:hover, .woocommerce a.button.alt:hover, .woocommerce button.button.alt:hover, .woocommerce a.checkout-button:hover, .single_add_to_cart_button:hover, .wc-block-components-checkout-place-order-button:hover, .wc-block-cart__submit-button:hover { background: var(--c-orange-hover) !important; border-color: var(--c-orange-hover) !important; }
/* 3. Outline: transparent / blue */
.btn--outline { background: transparent; border-color: var(--c-blue); color: var(--c-blue); }
.btn--outline:hover { background: var(--c-blue); border-color: var(--c-blue); color: var(--c-white); }
/* 4. Light: any call to action on navy/blue except the hero's main one */
.btn--light { background: var(--c-white); border-color: var(--c-white); color: var(--c-navy); }
.btn--light:hover { background: var(--c-gray); border-color: var(--c-gray); color: var(--c-navy); }
/* 5. Outline-light: secondary on dark */
.btn--outline-light { background: transparent; border-color: rgba(255, 255, 255, .6); color: var(--c-white); }
.btn--outline-light:hover { background: var(--c-white); border-color: var(--c-white); color: var(--c-navy); }
/* 6. Text: secondary actions (Σύγκριση, Στα αγαπημένα, Ερώτηση) */
.btn--text { min-height: 44px; padding: 0 var(--s-2); border: 0; background: transparent; color: var(--c-blue); font-size: var(--fs-small); font-weight: 600; }
.btn--text svg { width: 18px; height: 18px; }
.btn--text:hover { background: transparent; color: var(--c-blue-hover); text-decoration: underline; text-underline-offset: 3px; }
/* Sizes: lg 52 · md 48 (default) · sm 40 */
.btn--lg { min-height: 52px; }
.btn--sm { position: relative; min-height: 40px; padding: var(--s-1) var(--s-4); font-size: var(--fs-btn-sm); }
.btn--sm::after { content: ""; position: absolute; inset: -3.5px; } /* 40 px visual, 44 px hit area (§1.3), also on touch laptops: 2 px past the 1.5 px border */
@media (hover: none) { .btn--sm { min-height: 44px; } }
/* 7. Link arrow: section links */
.link-arrow { display: inline-flex; align-items: center; gap: var(--s-1); min-height: 44px; font-weight: 700; font-size: var(--fs-small); white-space: nowrap; color: var(--c-blue); }
.link-arrow::after { content: "→"; transition: transform var(--dur-2) var(--ease); }

/* =========================================================================
   Top bar
   ========================================================================= */
.topbar { background: var(--c-navy); color: var(--c-on-dark); font-size: var(--fs-meta); }
.topbar .container { display: flex; justify-content: space-between; align-items: center; min-height: 36px; gap: var(--s-4); }
.topbar p { margin: 0; }
.topbar a { color: var(--c-white); }
.topbar a:hover { color: var(--c-white); text-decoration: underline; text-underline-offset: 3px; }
.topbar__links { display: flex; gap: var(--s-6); list-style: none; margin: 0; padding: 0; }
.topbar strong { color: var(--c-white); font-weight: 700; }

/* =========================================================================
   Header: logo · big search · actions  /  blue nav bar with categories
   ========================================================================= */
.site-header { position: sticky; top: 0; z-index: var(--z-header); background: var(--c-white); transition: box-shadow var(--dur-2) var(--ease); }
.admin-bar .site-header { top: 32px; }
@media (max-width: 782px) { .admin-bar .site-header { top: 0; } }
.site-header.is-scrolled { box-shadow: var(--shadow-2); }
/* Fixed row height: only the logo shrinks (transform), so nothing below moves (§1.8, CLS 0). */
.header-main .container { display: grid; grid-template-columns: auto 1fr auto; align-items: center; gap: var(--s-8); min-height: 88px; }
.site-logo { display: block; flex: none; }
.site-logo img { width: 216px; height: auto; transform-origin: left center; transition: transform var(--dur-2) var(--ease); }
.site-header.is-scrolled .site-logo img { transform: scale(.852); }

.header-search { display: flex; width: 100%; max-width: 760px; justify-self: center; height: 52px; border: 2px solid var(--c-blue); border-radius: var(--r-input); overflow: hidden; background: var(--c-white); }
/* Focus (§1.6): the bar clips outlines drawn outside its children (overflow: hidden), so the field's
   ring goes around the whole bar and the select and button get an inset ring of their own. */
.header-search:has(input:focus-visible) { outline: 3px solid var(--c-blue); outline-offset: 2px; }
@supports not selector(:has(*)) { .header-search:focus-within { outline: 3px solid var(--c-blue); outline-offset: 2px; } }
.header-search select:focus-visible { outline-offset: -3px; }
.header-search button:focus-visible { outline-color: var(--c-white); outline-offset: -6px; }
.header-search select { width: 200px; border: 0; border-right: 1px solid var(--c-border); padding: 0 var(--s-3); background: var(--c-gray); color: var(--c-navy); font-size: var(--fs-small); font-weight: 600; cursor: pointer; }
.header-search input[type=search] { flex: 1; min-width: 0; border: 0; padding: 0 var(--s-4); font-size: 16px; background: transparent; }
.header-search input[type=search]::placeholder { color: var(--c-muted); }
.header-search input[type=search]:focus { outline: none; }
.header-search button { display: inline-flex; align-items: center; gap: var(--s-2); border: 0; padding: 0 var(--s-6); background: var(--c-blue); color: var(--c-white); font-weight: 700; font-size: var(--fs-small); letter-spacing: 0; cursor: pointer; transition: background-color var(--dur-1) var(--ease); }
.header-search button:hover { background: var(--c-blue-hover); }
.header-search button svg { width: 20px; height: 20px; }

.header-icons { display: flex; align-items: center; gap: var(--s-1); }
.header-icon { position: relative; display: inline-flex; align-items: center; justify-content: center; gap: var(--s-2); min-width: 48px; min-height: 48px; padding: 0 var(--s-1); border-radius: var(--r-btn); color: var(--c-blue); transition: background-color var(--dur-1) var(--ease); }
.header-icon:hover { background: var(--c-gray); color: var(--c-blue); }
.header-icon svg { width: 24px; height: 24px; stroke-width: 1.75; }
.header-icon__count { position: absolute; top: 2px; left: 24px; min-width: 18px; height: 18px; padding: 0 var(--s-1); border-radius: var(--r-pill); background: var(--c-orange); color: var(--c-navy); font-size: var(--fs-label); font-weight: 800; line-height: 18px; text-align: center; }
.header-icon__label { padding-left: var(--s-3); font-size: var(--fs-meta); line-height: 1.25; text-align: left; white-space: nowrap; color: var(--c-muted); }
.header-icon__label strong { display: block; color: var(--c-navy); font-size: var(--fs-small); font-weight: 700; }
.menu-toggle { display: none; border: 0; background: none; cursor: pointer; }

.header-nav { background: var(--c-blue); color: var(--c-white); }
.header-nav .container { display: flex; align-items: stretch; gap: var(--s-6); min-height: 52px; }
.cat-menu-wrap { position: relative; display: flex; }
.cat-toggle { display: inline-flex; align-items: center; gap: var(--s-3); width: 288px; padding: 0 var(--s-4); border: 0; background: var(--c-navy); color: var(--c-white); font-weight: 700; font-size: 15px; letter-spacing: 0; cursor: pointer; }
.cat-toggle svg { width: 20px; height: 20px; }
.cat-toggle__chev { margin-left: auto; transition: transform var(--dur-2) var(--ease); }
.cat-toggle[aria-expanded=true] .cat-toggle__chev { transform: rotate(180deg); }
.primary-nav { display: flex; align-items: stretch; flex: 1; }
.primary-nav ul { display: flex; align-items: stretch; gap: 0; list-style: none; margin: 0; padding: 0; }
.primary-nav a { display: flex; align-items: center; height: 100%; padding: 0 var(--s-4); color: var(--c-white); font-weight: 700; font-size: 15px; line-height: 1.2; position: relative; }
.primary-nav a::after { content: ""; position: absolute; left: var(--s-4); right: var(--s-4); bottom: 0; height: 3px; background: var(--c-white); transform: scaleX(0); transition: transform var(--dur-2) var(--ease); }
.primary-nav a:hover, .primary-nav .current-menu-item > a { color: var(--c-white); }
.primary-nav a:hover::after, .primary-nav .current-menu-item > a::after { transform: scaleX(1); }
/* «Προσφορές»: orange text on blue is 3.4:1 (fails at 15 px), so the text stays white and an orange dot carries the accent. */
.primary-nav .menu-offers > a { gap: var(--s-2); }
.primary-nav .menu-offers > a::before { content: ""; flex: none; width: 8px; height: 8px; border-radius: 50%; background: var(--c-orange); }
.header-phone { display: flex; align-items: center; gap: var(--s-2); margin-left: auto; color: var(--c-white); font-size: var(--fs-meta); line-height: 1.25; }
.header-phone:hover { color: var(--c-white); }
.header-phone svg { width: 22px; height: 22px; color: inherit; }
.header-phone strong { display: block; font-size: 15px; font-weight: 700; }

/* Categories menu + mega panels */
.cat-menu { position: absolute; top: 100%; left: 0; width: 288px; background: var(--c-white); border: 1px solid var(--c-border); border-top: 0; border-radius: 0 0 var(--r-card) var(--r-card); box-shadow: var(--shadow-3); display: none; z-index: calc(var(--z-header) + 1); }
.cat-menu.is-open, .home .cat-menu.is-pinned { display: block; }
.home .cat-menu.is-pinned { box-shadow: none; }
.site-header.is-scrolled .cat-menu.is-pinned:not(.is-open) { display: none; }
.site-header.is-scrolled .cat-menu.is-pinned.is-open { box-shadow: var(--shadow-3); }
.cat-menu > ul { list-style: none; margin: 0; padding: var(--s-2) 0; }
.cat-menu li { position: static; }
.cat-menu > ul > li > a { display: flex; justify-content: space-between; align-items: center; gap: var(--s-2); min-height: 42px; padding: 0 var(--s-4); color: var(--c-navy); font-size: var(--fs-small); font-weight: 600; }
.cat-menu > ul > li:hover > a, .cat-menu > ul > li:focus-within > a { color: var(--c-blue); background: var(--c-gray); box-shadow: inset 3px 0 0 var(--c-blue); }
.cat-menu > ul > li.has-children > a::after { content: ""; width: 7px; height: 7px; border-right: 2px solid currentColor; border-top: 2px solid currentColor; transform: rotate(45deg); opacity: .5; }
.cat-menu > ul > li:nth-child(n+14) { display: none; }
.home .cat-menu.is-pinned:not(.show-all) > ul > li:nth-child(n+11) { display: none; }
.cat-menu.show-all > ul > li { display: block; }
/* Level 2 = mega panel with columns; level 3 = links under each heading */
.cat-menu > ul > li > .children { display: none; position: absolute; top: 0; left: 100%; width: min(760px, calc(100vw - 360px)); min-height: 100%; max-height: 72vh; overflow-y: auto; margin: 0; padding: var(--s-6) var(--s-8); list-style: none; background: var(--c-white); border: 1px solid var(--c-border); border-radius: 0 var(--r-card) var(--r-card) 0; box-shadow: var(--shadow-3); column-count: 3; column-gap: var(--s-8); }
.cat-menu > ul > li:hover > .children, .cat-menu > ul > li:focus-within > .children { display: block; }
.cat-menu > ul > li > .children > li { break-inside: avoid; padding-bottom: var(--s-4); }
.cat-menu > ul > li > .children > li > a { display: block; padding: 4px 0; color: var(--c-blue); font-weight: 700; font-size: var(--fs-small); }
.cat-menu .children .children { list-style: none; margin: 0; padding: 0; }
.cat-menu .children .children a { display: block; padding: var(--s-1) 0; color: var(--c-muted); font-size: var(--fs-small); font-weight: 500; }
.cat-menu .children a:hover { color: var(--c-blue); }
.cat-menu__more { display: flex; align-items: center; justify-content: space-between; width: 100%; min-height: 44px; padding: 0 var(--s-4); border: 0; border-top: 1px solid var(--c-border); background: none; font-weight: 700; font-size: var(--fs-small); color: var(--c-blue); cursor: pointer; }

/* =========================================================================
   Page title bar
   ========================================================================= */
.page-hero { position: relative; overflow: hidden; background: var(--c-gray); padding: var(--s-8) 0; border-bottom: 1px solid var(--c-border); }
.page-hero::after { content: ""; position: absolute; right: -40px; top: 50%; width: 220px; height: 200px; transform: translateY(-50%); background: var(--c-blue); opacity: .05; -webkit-mask: var(--t-mark) center / contain no-repeat; mask: var(--t-mark) center / contain no-repeat; pointer-events: none; }
.page-hero h1 { margin: var(--s-2) 0 0; font-size: var(--fs-h1); }
.woocommerce-breadcrumb, .breadcrumb { margin: 0; font-size: var(--fs-meta); font-weight: 500; color: var(--c-muted); }
.woocommerce-breadcrumb a { color: var(--c-muted); }
.woocommerce-breadcrumb a:hover { color: var(--c-blue); }

/* =========================================================================
   Sections (§1.3): one rhythm token, white sections in a row share a gap
   ========================================================================= */
.section { padding-block: var(--section-y); }
.section--tight { padding-block: calc(var(--section-y) / 2); }
.section--gray { background: var(--c-gray); }
/* Coloured bands (.section--gray, .section--band) keep both paddings; two white ones collapse. */
.section:not(.section--band, .section--gray) + .section:not(.section--band, .section--gray) { padding-top: 0; }
.section-head { display: flex; align-items: flex-end; align-items: last baseline; justify-content: space-between; gap: var(--s-4) var(--s-6); margin-bottom: var(--s-6); }
.section-head h2 { margin: 0; }
.section-head p { margin: var(--s-2) 0 0; max-width: 60ch; color: var(--c-muted); font-size: var(--fs-lead); font-weight: 500; line-height: 1.55; }
.section-head .link-arrow { flex: none; }
/* Product rows (§1.12): title at h3 size, hairline under the head, link arrow on the right. */
.section--rail .section-head { padding-bottom: var(--s-3); border-bottom: 1px solid var(--c-border); }
.section--rail .section-head h2 { font-size: var(--fs-h3); line-height: 1.25; letter-spacing: -.01em; }

/* Hero */
.hero { position: relative; overflow: hidden; background: var(--c-blue); color: var(--c-white); }
.hero::before { content: ""; position: absolute; right: -6%; bottom: -18%; width: 620px; height: 566px; background: var(--c-white); opacity: .05; -webkit-mask: var(--t-mark) center / contain no-repeat; mask: var(--t-mark) center / contain no-repeat; pointer-events: none; }
.hero .container { position: relative; display: grid; grid-template-columns: 288px 1.1fr .9fr; gap: var(--s-12); align-items: center; min-height: 480px; padding-top: var(--s-12); padding-bottom: var(--s-12); }
.hero__spacer { min-height: 1px; }
.hero__title { color: var(--c-white); font-size: var(--fs-hero); font-weight: 800; line-height: 1.08; letter-spacing: -.025em; margin-bottom: var(--s-4); }
.hero__title span { color: var(--c-orange); }
.hero__text { color: var(--c-on-dark); font-size: var(--fs-lead); font-weight: 500; line-height: 1.55; max-width: 46ch; margin-bottom: var(--s-8); }
.hero__actions { display: flex; flex-wrap: wrap; gap: var(--s-3); }
.hero__product { position: relative; display: block; padding: var(--s-6); border-radius: var(--r-card); background: var(--c-white); color: var(--c-navy); box-shadow: var(--shadow-on-dark); }
.hero__product:hover { color: var(--c-navy); }
.hero__product img { width: 100%; max-height: 300px; object-fit: contain; }
.hero__product-meta { display: flex; justify-content: space-between; align-items: flex-end; gap: var(--s-4); margin-top: var(--s-4); padding-top: var(--s-4); border-top: 1px solid var(--c-border); }
.hero__product-name { font-size: 15px; font-weight: 600; line-height: 1.35; }
.hero__product .price { font-size: 24px; white-space: nowrap; }
.hero__badge { position: absolute; top: var(--s-4); left: var(--s-4); padding: 2px 6px; border-radius: var(--r-xs); background: var(--c-orange); color: var(--c-navy); font-size: var(--fs-label); font-weight: 800; line-height: 16px; letter-spacing: var(--tr-label); text-transform: uppercase; }

/* Trust strip */
.usp { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: var(--s-6); padding: var(--s-8) 0; }
.usp__item { display: flex; align-items: center; gap: var(--s-4); }
.usp__icon { flex: 0 0 52px; display: inline-flex; align-items: center; justify-content: center; width: 52px; height: 52px; border-radius: var(--r-card); background: var(--c-gray); color: var(--c-blue); }
.usp__icon svg { width: 24px; height: 24px; stroke-width: 1.75; }
.usp__item strong { display: block; color: var(--c-navy); font-size: 15px; font-weight: 700; }
.usp__item span { font-size: var(--fs-small); color: var(--c-muted); }
.usp-bar { border-bottom: 1px solid var(--c-border); }

/* Category grid */
.cat-slider { position: relative; }
/* The scroller clips: 8 px of inline padding (pulled back by the negative margin, so cards do not move) leaves room for the first and last card's focus ring. */
.cat-slider__track { --per: 7; --gap: var(--s-4); display: grid; grid-auto-flow: column; grid-auto-columns: calc((100% - (var(--per) - 1) * var(--gap)) / var(--per)); gap: var(--gap); margin: 0 calc(var(--s-2) * -1); padding: var(--s-1) var(--s-2) var(--s-3); scroll-padding-inline: var(--s-2); list-style: none; overflow-x: auto; scroll-snap-type: x mandatory; scroll-behavior: smooth; overscroll-behavior-x: contain; scrollbar-width: none; }
.cat-slider__track::-webkit-scrollbar { display: none; }
.cat-slider__track:focus-visible { outline: 3px solid var(--c-blue); outline-offset: 4px; border-radius: var(--r-card); }
.cat-slider__track > li { display: flex; scroll-snap-align: start; }
.cat-slider__track .cat-card { flex: 1; }
.cat-slider__nav { position: absolute; inset: 0; pointer-events: none; }
.cat-slider__nav[hidden] { display: none; }
.cat-slider__btn { position: absolute; top: calc(50% - 22px); z-index: 2; display: inline-flex; align-items: center; justify-content: center; width: 44px; height: 44px; border: 1px solid var(--c-border); border-radius: 50%; background: var(--c-white); color: var(--c-blue); box-shadow: var(--shadow-2); cursor: pointer; pointer-events: auto; transition: background-color var(--dur-1) var(--ease), color var(--dur-1) var(--ease), opacity var(--dur-2) var(--ease); }
.cat-slider__btn svg { width: 20px; height: 20px; }
.cat-slider__btn:hover { background: var(--c-blue); color: var(--c-white); }
.cat-slider__btn:disabled { opacity: 0; pointer-events: none; }
.js-cat-prev { left: -22px; }
.js-cat-next { right: -22px; }
.cat-card { position: relative; display: flex; flex-direction: column; align-items: center; gap: var(--s-3); padding: var(--s-6) var(--s-3) var(--s-4); border: 1px solid var(--c-border); border-radius: var(--r-card); background: var(--c-white); color: var(--c-navy); text-align: center; font-size: var(--fs-small); font-weight: 700; line-height: 1.3; transition: border-color var(--dur-2) var(--ease), box-shadow var(--dur-2) var(--ease), transform var(--dur-2) var(--ease), color var(--dur-1) var(--ease); }
.cat-card::after { content: ""; position: absolute; left: 50%; bottom: -1px; width: 32px; height: 3px; border-radius: 2px; background: var(--c-blue); transform: translateX(-50%) scaleX(0); transition: transform var(--dur-2) var(--ease); }
.cat-card img { width: 88px; height: 88px; object-fit: contain; }
.cat-card small { display: block; color: var(--c-muted); font-weight: 500; font-size: var(--fs-meta); }
.cat-card__placeholder { display: flex; align-items: center; justify-content: center; width: 88px; height: 88px; border-radius: var(--r-media); background: var(--c-gray); color: var(--c-blue); }
.cat-card__placeholder svg { width: 36px; height: 36px; stroke-width: 1.5; }

/* Promo banners */
.promo-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--s-6); }
.promo { position: relative; overflow: hidden; display: grid; grid-template-columns: 1fr 40%; align-items: center; gap: var(--s-6); min-height: 240px; padding: var(--s-8) var(--s-8); border-radius: var(--r-card); background: var(--c-blue); color: var(--c-white); transition: transform var(--dur-2) var(--ease), box-shadow var(--dur-2) var(--ease); }
.promo:hover { color: var(--c-white); }
.promo::before { content: ""; position: absolute; left: -30px; bottom: -40px; width: 220px; height: 200px; background: var(--c-white); opacity: .06; -webkit-mask: var(--t-mark) center / contain no-repeat; mask: var(--t-mark) center / contain no-repeat; pointer-events: none; }
.promo--navy { background: var(--c-navy); }
.promo--light { background: var(--c-gray); color: var(--c-navy); border: 1px solid var(--c-border); }
.promo--light:hover { color: var(--c-navy); }
.promo--light::before { background: var(--c-blue); }
.promo > div { position: relative; }
.promo__eyebrow { display: inline-block; margin-bottom: var(--s-2); font-size: var(--fs-label); font-weight: 800; letter-spacing: var(--tr-label); text-transform: uppercase; color: var(--c-on-dark); }
.promo--light .promo__eyebrow { color: var(--c-blue); }
.promo__title { margin: 0 0 var(--s-6); font-size: var(--fs-h3); font-weight: 800; line-height: 1.15; letter-spacing: -.01em; color: inherit; }
.promo__img { position: relative; justify-self: end; width: 100%; max-width: 220px; aspect-ratio: 1; padding: var(--s-3); border-radius: var(--r-media); background: var(--c-white); }
.promo__img img { width: 100%; height: 100%; object-fit: contain; }
.promo--wide { grid-template-columns: 1fr 34%; min-height: 300px; padding: var(--s-12); }
.promo--wide .promo__title { font-size: var(--fs-hero); letter-spacing: -.025em; }
.promo--wide .promo__img { max-width: 300px; }

/* Tabs */
.tabs { display: flex; gap: var(--s-2); flex-wrap: wrap; }
.tabs button { min-height: 40px; padding: 0 var(--s-4); border: 1px solid var(--c-border); border-radius: var(--r-btn); background: var(--c-white); color: var(--c-navy); font-weight: 700; font-size: var(--fs-small); cursor: pointer; transition: border-color var(--dur-1) var(--ease), background-color var(--dur-1) var(--ease), color var(--dur-1) var(--ease); }
.tabs button:hover { border-color: var(--c-blue); color: var(--c-blue); }
.tabs button[aria-selected=true] { background: var(--c-blue); border-color: var(--c-blue); color: var(--c-white); }
@media (hover: none) { .tabs button { min-height: 44px; } }
.tab-panel[hidden] { display: none; }

/* Brands */
.brand-grid { display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); gap: var(--s-4); }
.brand-tile { display: flex; align-items: center; justify-content: center; min-height: 88px; padding: var(--s-3); border: 1px solid var(--c-border); border-radius: var(--r-card); background: var(--c-white); color: var(--c-blue); font-weight: 800; font-size: var(--fs-h4); letter-spacing: 0; text-align: center; transition: border-color var(--dur-1) var(--ease), color var(--dur-1) var(--ease); }
.brand-tile:hover { border-color: var(--c-blue); color: var(--c-navy); }

/* Service CTA */
.service-cta { position: relative; overflow: hidden; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); background: var(--c-navy); color: var(--c-on-dark); border-radius: var(--r-card); }
.service-cta::before { content: ""; position: absolute; right: -60px; top: -40px; width: 360px; height: 330px; background: var(--c-white); opacity: .05; -webkit-mask: var(--t-mark) center / contain no-repeat; mask: var(--t-mark) center / contain no-repeat; pointer-events: none; }
.service-cta__media { display: flex; align-items: center; justify-content: center; padding: var(--s-12); background: var(--c-white); }
.service-cta__media img { max-height: 320px; width: auto; }
.service-cta__body { position: relative; padding: var(--s-16) var(--s-12); }
.service-cta__body h2 { color: var(--c-white); }
.service-cta__body ul { list-style: none; margin: 0 0 var(--s-8); padding: 0; }
.service-cta__body li { display: flex; gap: var(--s-3); padding: var(--s-1) 0; color: var(--c-white); }
.service-cta__body li svg { flex: 0 0 20px; width: 20px; height: 20px; color: var(--c-on-dark); margin-top: calc(.8em - 10px); } /* centred on the first line (line-height 1.6) */

/* =========================================================================
   Product cards — P0-1 grid fix.
   WooCommerce's general CSS styles cards at specificity (0,4,2), e.g.
   ".woocommerce ul.products li.product .price" (olive, 13.7 px, 400). The
   front-end rules therefore use ".site-content ul.products …" (same
   specificity, loaded later). The unscoped twin in each selector list keeps
   the block-editor previews styled (no .site-content there). Partials
   (30-shop.css) override with the scoped form.
   ========================================================================= */
ul.products, .site-content ul.products { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: var(--s-4); list-style: none; margin: 0; padding: 0; }
ul.products::before, ul.products::after, .site-content ul.products::before, .site-content ul.products::after { content: none; display: none; }
ul.products li.product, .site-content ul.products li.product { position: relative; display: flex; flex-direction: column; float: none; clear: none; width: auto; min-width: 0; margin: 0; padding: var(--s-4); border: 1px solid var(--c-border); border-radius: var(--r-card); background: var(--c-white); text-align: left; transition: box-shadow var(--dur-2) var(--ease), border-color var(--dur-2) var(--ease); }
ul.products li.product a.woocommerce-loop-product__link, .site-content ul.products li.product a.woocommerce-loop-product__link { display: flex; flex-direction: column; flex: 1; color: inherit; }
ul.products li.product a img, .site-content ul.products li.product a img { width: 100%; height: auto; aspect-ratio: 1 / 1; object-fit: contain; margin: 0 0 var(--s-3); background: var(--c-white); box-shadow: none; transition: transform var(--dur-3) var(--ease); }
ul.products li.product .card-brand, .site-content ul.products li.product .card-brand { margin-bottom: var(--s-1); font-size: var(--fs-label); font-weight: 700; line-height: 1.3; letter-spacing: var(--tr-label); text-transform: uppercase; color: var(--c-blue); }
ul.products li.product .woocommerce-loop-product__title, .site-content ul.products li.product .woocommerce-loop-product__title { display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; min-height: calc(3 * 1.4em); margin: 0 0 var(--s-1); padding: 0; font-family: var(--font); font-size: 16px; font-weight: 600; line-height: 1.4; letter-spacing: 0; color: var(--c-navy); }
.card-sku { font-size: var(--fs-meta); font-weight: 500; line-height: 1.4; color: var(--c-muted); font-variant-numeric: tabular-nums; }
.card-stock { display: inline-flex; align-items: center; gap: var(--s-2); margin-top: var(--s-2); font-size: var(--fs-meta); font-weight: 600; line-height: 1.4; color: var(--c-success); }
.card-stock::before { content: ""; flex: none; width: 7px; height: 7px; border-radius: 50%; background: currentColor; }
.card-stock.is-out { color: var(--c-error); }
.card-stock.is-backorder { color: var(--c-muted); }
.price { color: var(--c-navy); font-weight: 800; font-variant-numeric: tabular-nums; }
.price del { color: var(--c-muted); font-weight: 500; font-size: .7em; margin-right: var(--s-2); opacity: 1; }
.price ins { text-decoration: none; color: var(--c-orange-text); }
/* Price block at the card bottom (§1.10): the sale badge, the old price, then the current price. */
ul.products li.product .price, .site-content ul.products li.product .price { display: block; order: 1; margin: auto 0 0; padding-top: var(--s-2); font-size: var(--fs-card-price); font-weight: 800; line-height: 1.15; color: var(--c-navy); }
ul.products li.product .price del, .site-content ul.products li.product .price del { display: inline-block; margin-right: var(--s-2); font-size: var(--fs-small); font-weight: 500; color: var(--c-muted); opacity: 1; }
ul.products li.product .price ins, .site-content ul.products li.product .price ins { display: block; font-weight: 800; color: var(--c-orange-text); }
ul.products li.product .card-stock, .site-content ul.products li.product .card-stock { order: 1; }
.woocommerce span.onsale, span.onsale { position: absolute; top: var(--s-3); left: var(--s-3); z-index: 2; display: inline-flex; align-items: center; min-width: 0; min-height: 0; height: 20px; margin: 0; padding: 2px 6px; border-radius: var(--r-xs); background: var(--c-orange); color: var(--c-navy); font-size: var(--fs-label); font-weight: 800; line-height: 16px; }
/* Never over the image (maker logo top-left, watermark bottom-right): the badge joins the price block. */
ul.products li.product .onsale, .site-content ul.products li.product .onsale { position: static; order: 1; align-self: flex-start; margin: auto 0 0; }
ul.products li.product .onsale ~ .price, .site-content ul.products li.product .onsale ~ .price { margin-top: 0; }
ul.products li.product .button, .site-content ul.products li.product .button { position: relative; display: inline-flex; width: 100%; min-height: 40px; margin-top: var(--s-3); padding: var(--s-1) var(--s-3); background: transparent; border-color: var(--c-blue); color: var(--c-blue); font-size: var(--fs-btn-sm); }
/* 40 px visual, 44 px hit area (§1.11). Not in the loading/added states: WooCommerce draws those icons with ::after. */
ul.products li.product .button:not(.loading, .added)::after, .site-content ul.products li.product .button:not(.loading, .added)::after { content: ""; position: absolute; inset: -3.5px; }
ul.products li.product .button:hover, .site-content ul.products li.product .button:hover { background: var(--c-blue); border-color: var(--c-blue); color: var(--c-white); }
ul.products li.product .button.loading, .site-content ul.products li.product .button.loading { opacity: .6; }
ul.products li.product .added_to_cart, .site-content ul.products li.product .added_to_cart { display: block; margin-top: var(--s-2); padding: 0; text-align: center; font-size: var(--fs-meta); font-weight: 700; }
@media (hover: none) { ul.products li.product .button, .site-content ul.products li.product .button { min-height: 44px; } }
/* WooCommerce product-grid blocks (e.g. «Νέες παραλαβές» in the empty cart) use core's dark pill
   .wp-block-button__link; same outline card button. (0,3,1) beats WC's (0,3,0) in any load order. */
.wc-block-grid__product-add-to-cart.wp-block-button a.wp-block-button__link:not(.loading, .added)::after { content: ""; position: absolute; inset: -3.5px; } /* 44 px hit area; WC draws its state icons with ::after */
.wc-block-grid__product-add-to-cart.wp-block-button a.wp-block-button__link { position: relative; display: inline-flex; align-items: center; justify-content: center; width: 100%; min-height: 40px; padding: var(--s-1) var(--s-3); border: 1.5px solid var(--c-blue); border-radius: var(--r-btn); background: transparent; color: var(--c-blue); font-family: var(--font); font-size: var(--fs-btn-sm); font-weight: 700; line-height: 1.2; letter-spacing: 0; text-transform: none; text-decoration: none; transition: background-color var(--dur-1) var(--ease), color var(--dur-1) var(--ease); }
.wc-block-grid__product-add-to-cart.wp-block-button a.wp-block-button__link:hover { background: var(--c-blue); color: var(--c-white); }
.wc-block-grid__product-add-to-cart.wp-block-button a.wp-block-button__link:active { transform: translateY(1px); }
@media (hover: none) { .wc-block-grid__product-add-to-cart.wp-block-button a.wp-block-button__link { min-height: 44px; } }

/* Card quick actions (wishlist / compare / quick view) */
ul.products li.product .woosw-btn, ul.products li.product .woosc-btn, ul.products li.product .woosq-btn {
	position: absolute; right: var(--s-3); z-index: 3; display: inline-flex !important; align-items: center; justify-content: center; width: 40px; height: 40px; min-height: 0; margin: 0 !important; padding: 0 !important;
	border: 1px solid var(--c-border) !important; border-radius: 50% !important; background: var(--c-white) !important; font-size: 0 !important; line-height: 0; color: var(--c-blue) !important; cursor: pointer;
	box-shadow: var(--shadow-1); opacity: 0; transform: translateX(6px); transition: opacity var(--dur-2) var(--ease), transform var(--dur-2) var(--ease), background-color var(--dur-1) var(--ease), color var(--dur-1) var(--ease);
}
ul.products li.product .woosw-btn::before, ul.products li.product .woosc-btn::before, ul.products li.product .woosq-btn::before { content: ""; display: block; width: 18px; height: 18px; background: currentColor; -webkit-mask: var(--icon) center / contain no-repeat; mask: var(--icon) center / contain no-repeat; }
ul.products li.product .woosw-btn { top: var(--s-3); --icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.75' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M19 14c1.5-1.5 3-3.2 3-5.5A5.5 5.5 0 0 0 16.5 3c-1.8 0-3 .5-4.5 2-1.5-1.5-2.7-2-4.5-2A5.5 5.5 0 0 0 2 8.5c0 2.3 1.5 4 3 5.5l7 7Z'/%3E%3C/svg%3E"); }
ul.products li.product .woosc-btn { top: calc(var(--s-3) + 40px + var(--s-2)); --icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.75' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m16 3 4 4-4 4M20 7H4M8 21l-4-4 4-4M4 17h16'/%3E%3C/svg%3E"); }
ul.products li.product .woosq-btn { top: calc(var(--s-3) + 2 * (40px + var(--s-2))); --icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.75' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M2 12s3.5-7 10-7 10 7 10 7-3.5 7-10 7S2 12 2 12Z'/%3E%3Ccircle cx='12' cy='12' r='3'/%3E%3C/svg%3E"); }
ul.products li.product:focus-within :is(.woosw-btn, .woosc-btn, .woosq-btn) { opacity: 1; transform: none; }
ul.products li.product :is(.woosw-btn, .woosc-btn, .woosq-btn):hover, ul.products li.product .woosw-btn.woosw-added { background: var(--c-blue) !important; border-color: var(--c-blue) !important; color: var(--c-white) !important; }
@media (hover: none) {
	ul.products li.product :is(.woosw-btn, .woosc-btn) { opacity: 1; transform: none; }
	/* 40 px visual, 44 px hit area (§1.3); the plugins only use ::after with font-size 0 while adding. */
	ul.products li.product :is(.woosw-btn, .woosc-btn)::after { content: ""; position: absolute; inset: -3px; } /* 2 px past the 1 px border */
	ul.products li.product .woosq-btn { display: none !important; }
	ul.products li.product .woosc-btn { top: calc(var(--s-3) + 40px + var(--s-1)); }
	.woocommerce-ordering select { min-height: 44px; }
}
/* Single product buttons from the same plugins */
.summary :is(.woosw-btn, .woosc-btn) { display: inline-flex !important; align-items: center; gap: var(--s-2); min-height: 44px; padding: var(--s-2) var(--s-4) !important; margin: 0 var(--s-2) var(--s-2) 0 !important; border: 1px solid var(--c-border) !important; border-radius: var(--r-btn) !important; background: var(--c-white) !important; color: var(--c-blue) !important; font-size: var(--fs-small) !important; font-weight: 700 !important; letter-spacing: 0; text-transform: none; cursor: pointer; }
.summary :is(.woosw-btn, .woosc-btn):hover { border-color: var(--c-blue) !important; }

/* Compact list (featured) */
.mini-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--s-4); }
.mini-card { display: grid; grid-template-columns: 104px minmax(0, 1fr); gap: var(--s-4); align-items: center; padding: var(--s-4); border: 1px solid var(--c-border); border-radius: var(--r-card); background: var(--c-white); transition: border-color var(--dur-2) var(--ease), box-shadow var(--dur-2) var(--ease); }
.mini-card:hover { border-color: var(--c-blue); }
.mini-card img { width: 104px; height: 104px; object-fit: contain; }
.mini-card h3 { font-size: 15px; font-weight: 600; line-height: 1.4; letter-spacing: 0; margin: 0 0 var(--s-2); }
.mini-card h3 a { color: var(--c-navy); }
.mini-card h3 a:hover { color: var(--c-blue); }
.mini-card .price { font-size: 18px; }

/* =========================================================================
   Shop archive
   ========================================================================= */
.shop-layout { display: grid; grid-template-columns: 288px minmax(0, 1fr); gap: var(--s-8); padding: var(--s-8) var(--s-6) var(--s-16); }
.shop-sidebar .widget { border: 1px solid var(--c-border); border-radius: var(--r-card); padding: var(--s-4) var(--s-6) var(--s-6); margin-bottom: var(--s-4); background: var(--c-white); }
.shop-sidebar .widget-title { font-size: var(--fs-h4); font-weight: 700; line-height: 1.3; letter-spacing: 0; padding-bottom: var(--s-3); margin-bottom: var(--s-3); border-bottom: 1px solid var(--c-border); }
.shop-sidebar ul { list-style: none; margin: 0; padding: 0; max-height: 360px; overflow: auto; }
.shop-sidebar li { padding: var(--s-1) 0; font-size: var(--fs-small); }
/* The list scrolls (overflow: auto), which would clip a ring drawn 2 px outside a link. */
.shop-sidebar ul:not(.children) { padding-inline: var(--s-1); margin-inline: calc(var(--s-1) * -1); }
.shop-sidebar ul a:focus-visible { outline-offset: 1px; }
.shop-sidebar li a { color: var(--c-navy); }
.shop-sidebar li a:hover, .shop-sidebar .current-cat > a { color: var(--c-blue); font-weight: 700; }
.shop-sidebar .count { color: var(--c-muted); font-size: var(--fs-meta); }
.shop-sidebar .children { padding-left: var(--s-4); max-height: none; overflow: visible; }
.shop-toolbar { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: var(--s-3) var(--s-4); margin-bottom: var(--s-6); padding: var(--s-3) var(--s-4); border: 1px solid var(--c-border); border-radius: var(--r-card); background: var(--c-gray); font-size: var(--fs-small); }
.shop-toolbar .woocommerce-result-count, .shop-toolbar .woocommerce-ordering { margin: 0; float: none; color: var(--c-muted); }
.woocommerce-ordering select { min-height: 40px; padding: 0 var(--s-3); border: 1px solid var(--c-border); border-radius: var(--r-input); background: var(--c-white); font-weight: 600; }
.site-content .shop-main ul.products { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.shop-main .woocommerce-notices-wrapper:not(:empty) { margin-bottom: var(--s-4); }
.woocommerce nav.woocommerce-pagination ul { border: 0; display: flex; flex-wrap: wrap; gap: var(--s-2); justify-content: center; margin-top: var(--s-12); } /* 9 links × 44 px do not fit a phone: wrap */
/* WC clips each li (overflow: hidden), which hid the whole focus ring, and greys a focused link (#e9e6ed, 1.25:1). */
.woocommerce nav.woocommerce-pagination ul li { border: 0; overflow: visible; }
.woocommerce nav.woocommerce-pagination ul li a:focus { background: var(--c-white); color: var(--c-navy); }
.woocommerce nav.woocommerce-pagination ul li a, .woocommerce nav.woocommerce-pagination ul li span { min-width: 44px; min-height: 44px; display: inline-flex; align-items: center; justify-content: center; border: 1px solid var(--c-border); border-radius: var(--r-btn); font-weight: 700; color: var(--c-navy); }
.woocommerce nav.woocommerce-pagination ul li a:hover { border-color: var(--c-blue); background: var(--c-white); color: var(--c-blue); }
.woocommerce nav.woocommerce-pagination ul li span.current { background: var(--c-blue); color: var(--c-white); border-color: var(--c-blue); }
.term-description { margin-bottom: var(--s-6); color: var(--c-muted); }
.sidebar-toggle { display: none; }
.woocommerce .widget_price_filter .ui-slider .ui-slider-range, .woocommerce .widget_price_filter .ui-slider .ui-slider-handle { background: var(--c-blue); }
.woocommerce .widget_price_filter .ui-slider .ui-slider-handle:focus-visible { outline: 3px solid var(--c-blue); outline-offset: 2px; } /* WC sets outline: 0 at (0,4,0) */
.woocommerce .widget_price_filter .price_slider_wrapper .ui-widget-content { background: var(--c-border); }
.woocommerce .widget_price_filter .price_slider_amount .button { min-height: 40px; padding: var(--s-1) var(--s-4); font-size: var(--fs-btn-sm); }

/* Notices */
.woocommerce-message, .woocommerce-info, .woocommerce-error { border-radius: var(--r-card); border-top-color: var(--c-blue); background: var(--c-gray); color: var(--c-navy); }
.woocommerce-message::before, .woocommerce-info::before { color: var(--c-blue); }
.woocommerce-error { border-top-color: var(--c-error); }
.woocommerce-message .button { margin-left: var(--s-3); }
.woocommerce :is(.woocommerce-message, .woocommerce-info, .woocommerce-error) .button { float: right; }

/* =========================================================================
   Single product
   ========================================================================= */
.single-wrap { padding: var(--s-8) var(--s-6) var(--s-16); }
.woocommerce div.product { position: relative; display: grid; grid-template-columns: minmax(0, 1.05fr) minmax(0, .95fr); gap: var(--s-12); }
.woocommerce div.product div.images, .woocommerce div.product div.summary, .woocommerce-page div.product div.images, .woocommerce-page div.product div.summary { width: auto !important; float: none !important; margin: 0 !important; min-width: 0; }
.woocommerce div.product div.images { border: 1px solid var(--c-border); border-radius: var(--r-card); padding: var(--s-6); background: var(--c-white); }
.woocommerce div.product div.images.woocommerce-product-gallery .flex-viewport { touch-action: pan-y pinch-zoom; }
.woocommerce div.product div.images .flex-control-thumbs { display: flex; gap: var(--s-2); margin-top: var(--s-3); }
.woocommerce div.product div.images .flex-control-thumbs li { width: 72px !important; border: 1px solid var(--c-border); border-radius: var(--r-media); overflow: hidden; }
.woocommerce div.product .woocommerce-tabs, .woocommerce div.product .related, .woocommerce div.product .upsells { grid-column: 1 / -1; }
.woocommerce div.product .product_title { font-size: var(--fs-product); font-weight: 700; line-height: 1.2; letter-spacing: -.015em; margin-bottom: var(--s-3); }
.woocommerce div.product p.price, .woocommerce div.product span.price { font-size: var(--fs-price); line-height: 1.1; color: var(--c-navy); margin: var(--s-3) 0 var(--s-4); }
/* WC fades the old price (opacity .7 at (0,3,3)): 3:1 on white. Same specificity, loaded later. */
.woocommerce div.product p.price del, .woocommerce div.product span.price del { color: var(--c-muted); opacity: 1; }
.single-meta { display: flex; flex-wrap: wrap; align-items: center; gap: var(--s-2) var(--s-4); margin-bottom: var(--s-3); font-size: var(--fs-small); color: var(--c-muted); }
.single-meta a { color: var(--c-blue); font-weight: 700; }
.single-meta .card-stock { margin: 0; }
.woocommerce div.product .stock { display: none; }
.woocommerce-product-details__short-description { padding: var(--s-4) 0; border-top: 1px solid var(--c-border); color: var(--c-navy); }
.woocommerce-product-details__short-description ul { margin: 0; padding-left: var(--s-6); }
.woocommerce-product-details__short-description li { padding: var(--s-1) 0; }
.woocommerce div.product form.cart { display: flex; flex-wrap: wrap; gap: var(--s-3); margin: var(--s-4) 0; }
.woocommerce div.product form.cart .quantity .qty { width: 88px; min-height: 52px; border: 1px solid var(--c-border); border-radius: var(--r-input); text-align: center; font-weight: 700; font-size: 16px; }
.woocommerce div.product form.cart .single_add_to_cart_button { flex: 1; min-height: 52px; font-size: var(--fs-btn); }
/* Variations (select → chips via product.js). Chips are 48 px like the select they replace, so the swap moves nothing. */
.woocommerce div.product form.cart.variations_form { display: block; }
.woocommerce div.product form.cart table.variations { width: 100%; margin: 0 0 var(--s-4); border: 0; }
.woocommerce div.product form.cart table.variations tr { display: block; margin-bottom: var(--s-4); }
.woocommerce div.product form.cart table.variations th, .woocommerce div.product form.cart table.variations td { display: block; padding: 0; line-height: 1.4; text-align: left; }
.woocommerce div.product form.cart table.variations th label { display: block; margin-bottom: var(--s-2); font-size: var(--fs-small); font-weight: 700; color: var(--c-navy); }
.woocommerce div.product form.cart table.variations select { display: block; width: 100%; min-width: 0; max-width: 420px; min-height: 48px; padding: 0 40px 0 var(--s-3); border: 1px solid var(--c-border-strong); border-radius: var(--r-input); background: var(--c-white); font-weight: 600; font-size: 15px; color: var(--c-navy); }
.woocommerce div.product form.cart table.variations select:focus { border-color: var(--c-blue); } /* ring: the global :focus-visible */
.woocommerce div.product form.cart .reset_variations { display: block; width: fit-content; margin-top: var(--s-2); font-size: var(--fs-meta); font-weight: 700; color: var(--c-muted); } /* own line before and after the chip swap (no shift) */
.variation-chips { display: flex; flex-wrap: wrap; gap: var(--s-2); }
.variation-chips button { min-height: 48px; min-width: 56px; padding: var(--s-2) var(--s-4); border: 1px solid var(--c-border-strong); border-radius: var(--r-btn); background: var(--c-white); color: var(--c-navy); font-weight: 600; font-size: var(--fs-small); cursor: pointer; transition: border-color var(--dur-1) var(--ease), background-color var(--dur-1) var(--ease), color var(--dur-1) var(--ease); }
.variation-chips button:hover { border-color: var(--c-blue); color: var(--c-blue); }
.variation-chips button[aria-checked=true] { border-color: var(--c-blue); background: var(--c-blue); color: var(--c-white); }
.variation-chips button:disabled { opacity: .45; cursor: not-allowed; text-decoration: line-through; }
.has-chips select { position: absolute !important; width: 1px !important; height: 1px !important; opacity: 0; pointer-events: none; }
.woocommerce div.product .woocommerce-variation-price .price { font-size: var(--fs-price); margin: 0 0 var(--s-2); }
.woocommerce div.product .woocommerce-variation-add-to-cart { display: flex; flex-wrap: wrap; gap: var(--s-3); }
.product-actions { display: flex; flex-wrap: wrap; align-items: center; gap: var(--s-2); padding-bottom: var(--s-4); }
.product-actions > a { display: inline-flex; align-items: center; gap: var(--s-2); min-height: 44px; padding: var(--s-2) var(--s-4); border: 1px solid var(--c-border); border-radius: var(--r-btn); color: var(--c-blue); font-size: var(--fs-small); font-weight: 700; letter-spacing: 0; }
.product-actions > a:hover { border-color: var(--c-blue); }
.product-actions svg { width: 18px; height: 18px; }
.phone-order { display: flex; align-items: center; gap: var(--s-4); margin: 0 0 var(--s-4); padding: var(--s-4); border-radius: var(--r-card); background: var(--c-gray); font-size: var(--fs-small); color: var(--c-muted); }
.phone-order svg { flex: 0 0 24px; width: 24px; height: 24px; color: var(--c-blue); }
.phone-order a { display: block; font-weight: 800; font-size: 18px; color: var(--c-navy); }
.trust-strip { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); border: 1px solid var(--c-border); border-radius: var(--r-card); overflow: hidden; }
.trust-strip div { display: flex; align-items: center; gap: var(--s-2); padding: var(--s-3) var(--s-4); font-size: var(--fs-meta); font-weight: 700; color: var(--c-navy); line-height: 1.3; }
.trust-strip div + div { border-left: 1px solid var(--c-border); }
.trust-strip svg { flex: 0 0 22px; width: 22px; height: 22px; color: var(--c-blue); stroke-width: 1.75; }
.woocommerce div.product .woocommerce-tabs { margin-top: var(--s-8); border: 1px solid var(--c-border); border-radius: var(--r-card); padding: 0 var(--s-8) var(--s-8); }
.woocommerce div.product .woocommerce-tabs ul.tabs { display: flex; gap: var(--s-8); margin: 0 calc(var(--s-8) * -1) var(--s-8); padding: 0 var(--s-8); border-bottom: 1px solid var(--c-border); overflow: visible; } /* WC's overflow: hidden cut the focus ring */
.woocommerce div.product .woocommerce-tabs ul.tabs::before, .woocommerce div.product .woocommerce-tabs ul.tabs li::before, .woocommerce div.product .woocommerce-tabs ul.tabs li::after { display: none; }
.woocommerce div.product .woocommerce-tabs ul.tabs li { border: 0; background: none; margin: 0; padding: 0; }
.woocommerce div.product .woocommerce-tabs ul.tabs li a { display: block; padding: var(--s-4) 0; color: var(--c-muted); font-weight: 700; }
.woocommerce div.product .woocommerce-tabs ul.tabs li.active a { color: var(--c-navy); box-shadow: inset 0 -3px 0 var(--c-blue); }
.woocommerce div.product .woocommerce-tabs .panel { max-width: 80ch; }
.woocommerce div.product .woocommerce-tabs .panel h2:first-child { display: none; }
.woocommerce div.product #reviews .comment img { float: right; height: auto; }
.woocommerce table.shop_attributes { border-radius: var(--r-card); overflow: hidden; }
.woocommerce table.shop_attributes th { width: 34%; background: var(--c-gray); color: var(--c-navy); font-weight: 700; }
.related > h2, .upsells > h2 { font-size: var(--fs-h3); line-height: 1.25; letter-spacing: -.01em; margin: var(--s-16) 0 var(--s-6); }

/* Cart / checkout / forms */
.content-wrap { padding: var(--s-8) var(--s-6) var(--s-16); }
/* The single-country "select" stays WooCommerce's plain bold text (no box). */
.woocommerce form .form-row input.input-text, .woocommerce form .form-row textarea, .woocommerce form .form-row select:not(.country_to_state--single), .wc-block-components-text-input input, .wc-block-components-combobox .components-combobox-control input { min-height: 48px; padding: 8px 12px; border: 1px solid var(--c-border-strong) !important; border-radius: var(--r-input) !important; font-size: 16px; }
/* selectWoo (region field in My Account): same box as the inputs. WC's invalid/valid border colours (0,6,1) still win. */
.woocommerce form .form-row .select2-container .select2-selection--single { display: flex; align-items: center; height: auto; min-height: 48px; margin: 0; border: 1px solid var(--c-border-strong); border-radius: var(--r-input); background: var(--c-white); }
.woocommerce form .form-row .select2-container .select2-selection--single .select2-selection__rendered { flex: 1; min-width: 0; padding: 0 40px 0 12px; color: var(--c-navy); font-size: 16px; line-height: 1.4; }
.woocommerce form .form-row .select2-container .select2-selection--single .select2-selection__arrow { top: 0; right: 12px; height: 100%; }
.woocommerce form .form-row label { font-weight: 600; color: var(--c-navy); }
.wc-block-components-totals-item__value, .wc-block-components-product-price { font-variant-numeric: tabular-nums; }
.wc-block-components-totals-footer-item .wc-block-components-totals-item__value { font-size: 24px; font-weight: 800; color: var(--c-navy); }
.wc-block-components-sidebar-layout .wc-block-components-main, .wc-block-components-sidebar { font-size: 15px; }
.entry-content { max-width: 80ch; }
/* Cart, checkout and account need the full width (two-column block layouts); 80ch is for reading text. */
.woocommerce-cart .entry-content, .woocommerce-checkout .entry-content, .woocommerce-account .entry-content { max-width: none; }
.entry-content h2, .entry-content h3 { margin-top: var(--s-8); }

/* WooCommerce layout replacements. woocommerce-layout.css / -smallscreen.css are dequeued
   (functions.php); these are the parts of them the theme still relies on. */
.woocommerce .col2-set { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--s-8); width: 100%; }
.woocommerce .col2-set::before, .woocommerce .col2-set::after { content: none; }
.woocommerce .col2-set .col-1, .woocommerce .col2-set .col-2 { float: none; width: auto; min-width: 0; }
.woocommerce form .form-row::before, .woocommerce form .form-row::after { content: " "; display: table; }
.woocommerce form .form-row::after { clear: both; }
.woocommerce form .form-row label { display: block; }
.woocommerce form .form-row label.checkbox, .woocommerce form .form-row label.inline { display: inline; }
.woocommerce form .form-row select, .woocommerce form .form-row .input-text { width: 100%; }
.woocommerce form .form-row-first, .woocommerce form .form-row-last { width: calc(50% - var(--s-2)); overflow: visible; }
.woocommerce form .form-row-first { float: left; }
.woocommerce form .form-row-last { float: right; }
.woocommerce form .form-row-wide { clear: both; }
.woocommerce form .password-input { position: relative; display: flex; flex-direction: column; justify-content: center; }
.woocommerce form .password-input input[type=password], .woocommerce form .password-input input[type=text] { padding-right: 48px; }
.woocommerce form .password-input input::-ms-reveal { display: none; }
.woocommerce form .show-password-input { position: absolute; top: 50%; right: 2px; display: inline-flex; align-items: center; justify-content: center; width: 44px; height: 44px; margin: 0; padding: 0; border: 0; border-radius: var(--r-btn); background: transparent; color: var(--c-blue); cursor: pointer; transform: translateY(-50%); }
.woocommerce form .show-password-input::before { content: ""; width: 20px; height: 20px; background: currentColor; -webkit-mask: var(--icon) center / contain no-repeat; mask: var(--icon) center / contain no-repeat; --icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.75' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M2 12s3.5-7 10-7 10 7 10 7-3.5 7-10 7S2 12 2 12Z'/%3E%3Ccircle cx='12' cy='12' r='3'/%3E%3C/svg%3E"); }
.woocommerce form .show-password-input.display-password::before { --icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.75' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M10.7 5.1A10 10 0 0 1 22 12a17 17 0 0 1-2.2 3.2M6.6 6.6A17 17 0 0 0 2 12s3.5 7 10 7a9.7 9.7 0 0 0 5.4-1.6M9.9 9.9a3 3 0 0 0 4.2 4.2M2 2l20 20'/%3E%3C/svg%3E"); }
.woocommerce-account .woocommerce:has(> .woocommerce-MyAccount-navigation) { display: grid; grid-template-columns: 240px minmax(0, 1fr); gap: var(--s-8); align-items: start; }
.woocommerce-account .woocommerce:has(> .woocommerce-MyAccount-navigation) > :not(.woocommerce-MyAccount-navigation, .woocommerce-MyAccount-content) { grid-column: 1 / -1; }
.woocommerce-account .woocommerce:has(> .woocommerce-MyAccount-navigation)::before, .woocommerce-account .woocommerce:has(> .woocommerce-MyAccount-navigation)::after { content: none; } /* WC's clearfix would become a grid item */
.woocommerce-MyAccount-navigation ul { list-style: none; margin: 0; padding: 0; border: 1px solid var(--c-border); border-radius: var(--r-card); overflow: hidden; }
.woocommerce-MyAccount-navigation li + li { border-top: 1px solid var(--c-border); }
.woocommerce-MyAccount-navigation a { display: block; padding: var(--s-3) var(--s-4); color: var(--c-navy); font-size: var(--fs-small); font-weight: 600; }
.woocommerce-MyAccount-navigation a:hover { background: var(--c-gray); color: var(--c-blue); }
.woocommerce-MyAccount-navigation a:focus-visible { outline-offset: -3px; } /* the rounded list clips (overflow: hidden) */
.woocommerce-MyAccount-navigation .is-active a { color: var(--c-blue); box-shadow: inset 3px 0 0 var(--c-blue); }
.woocommerce-account .woocommerce-MyAccount-content mark { background: transparent; color: inherit; font-weight: 700; }
/* Content headings in the account and order views sit under the 40 px page H1: one step down (§1.2). */
:is(.woocommerce-MyAccount-content, .woocommerce-order) h2 { font-size: var(--fs-h3); line-height: 1.25; letter-spacing: -.01em; }
/* Address cards: «Επεξεργασία …» on its own line under the title in both columns (WC floats it right of an
   h3, but prints an h2 since 9.x, so it landed on a stray line of its own). */
.woocommerce-account .addresses .title { margin: var(--s-6) 0 var(--s-3); }
.woocommerce-account .addresses .title::before, .woocommerce-account .addresses .title::after { content: none; }
.woocommerce-account .addresses .title :is(h2, h3) { float: none; margin: 0 0 var(--s-1); }
.woocommerce-account .addresses .title .edit { float: none; display: inline-block; padding-block: var(--s-1); font-size: var(--fs-small); font-weight: 700; }
.woocommerce ul.cart_list li::after, .woocommerce ul.product_list_widget li::after { content: ""; display: table; clear: both; }
.woocommerce ul.cart_list li img, .woocommerce ul.product_list_widget li img { float: right; height: auto; }
/* Classic cart / checkout fallbacks (the store uses the cart and checkout blocks). */
.woocommerce table.cart td.actions { text-align: right; }
.woocommerce table.cart td.actions .coupon { float: left; }
.woocommerce .cart-collaterals .cart_totals { float: right; width: 48%; }
.woocommerce #payment #place_order { float: right; }

/* =========================================================================
   Footer
   ========================================================================= */
.footer-usp { background: var(--c-gray); border-top: 1px solid var(--c-border); }
.site-footer { position: relative; overflow: hidden; background: var(--c-navy); color: var(--c-on-dark); font-size: 15px; }
.site-footer::before { content: ""; position: absolute; right: -80px; bottom: -60px; width: 420px; height: 384px; background: var(--c-white); opacity: .04; -webkit-mask: var(--t-mark) center / contain no-repeat; mask: var(--t-mark) center / contain no-repeat; pointer-events: none; }
/* :where() keeps (0,1,1) / (0,2,1) so classed footer links still override, and .btn colours apply to buttons. */
.site-footer a:where(:not(.btn)) { color: var(--c-on-dark); }
.site-footer a:where(:not(.btn)):hover { color: var(--c-white); }
.footer-cols { position: relative; display: grid; grid-template-columns: 1.4fr 1fr 1fr 1fr 1.3fr; gap: var(--s-8); padding: var(--s-16) var(--s-6) var(--s-12); }
.footer-cols h3 { color: var(--c-white); font-size: var(--fs-h4); font-weight: 700; line-height: 1.3; letter-spacing: 0; margin-bottom: var(--s-4); }
.footer-cols ul { list-style: none; margin: 0; padding: 0; }
.footer-cols li { padding: var(--s-1) 0; }
.footer-contact li { display: flex; gap: var(--s-3); }
.footer-contact svg { flex: 0 0 18px; width: 18px; height: 18px; color: var(--c-on-dark); margin-top: 4px; }
.footer-logo { display: inline-block; background: var(--c-white); padding: var(--s-3) var(--s-4); border-radius: var(--r-card); margin-bottom: var(--s-6); }
.footer-logo img { width: 184px; }
.footer-hours { margin-bottom: var(--s-4) !important; }
.footer-hours li { display: flex; justify-content: space-between; gap: var(--s-3); padding: 8px 0 !important; border-bottom: 1px solid var(--c-line-dark); font-size: var(--fs-small); }
.footer-hours strong { color: var(--c-white); font-weight: 700; font-variant-numeric: tabular-nums; white-space: nowrap; }
.footer-bottom { position: relative; border-top: 1px solid var(--c-line-dark); }
.footer-bottom .container { display: flex; justify-content: space-between; align-items: center; gap: var(--s-4); min-height: 72px; font-size: var(--fs-meta); flex-wrap: wrap; }
.socials { display: flex; gap: var(--s-2); }
.socials a { display: inline-flex; align-items: center; justify-content: center; width: 44px; height: 44px; border: 1px solid rgba(255, 255, 255, .2); border-radius: 50%; }
.socials a:hover { border-color: var(--c-white); color: var(--c-white); }
.socials svg { width: 18px; height: 18px; }
.payments { display: flex; flex-wrap: wrap; gap: var(--s-2); }
.payments span { display: inline-flex; align-items: center; padding: 4px 8px; border-radius: var(--r-xs); background: var(--c-white); color: var(--c-navy); font-size: var(--fs-label); font-weight: 800; }

/* =========================================================================
   Overlays & helpers
   ========================================================================= */
/* Closed = hidden, not only off screen, so its links leave the tab order; visibility flips after the slide-out. */
.drawer { position: fixed; inset: 0 auto 0 0; width: min(88vw, 380px); background: var(--c-white); z-index: var(--z-drawer); visibility: hidden; transform: translateX(-100%); transition: transform var(--dur-3) var(--ease-in-out), visibility 0s linear var(--dur-3); overflow-y: auto; }
.drawer.is-open { visibility: visible; transform: none; box-shadow: var(--shadow-4); transition-delay: 0s; }
.drawer :is(a, button):focus-visible { outline-offset: -3px; } /* the drawer scrolls, so an outside ring would be clipped */
.admin-bar .drawer { top: 32px; }
@media (max-width: 782px) { .admin-bar .drawer { top: 46px; } }
.drawer__head { display: flex; justify-content: space-between; align-items: center; padding: var(--s-3) var(--s-4); border-bottom: 1px solid var(--c-border); }
.drawer__head .site-logo img { width: 160px; }
.drawer__close { min-width: 44px; min-height: 44px; border: 0; background: none; font-size: 28px; color: var(--c-navy); cursor: pointer; }
.drawer__title { margin: 0; padding: var(--s-4) var(--s-4) var(--s-2); font-size: var(--fs-label); font-weight: 700; letter-spacing: var(--tr-label); text-transform: uppercase; color: var(--c-muted); }
.drawer ul { list-style: none; margin: 0; padding: 0; }
.drawer a { display: block; padding: 12px var(--s-4); border-bottom: 1px solid var(--c-border); color: var(--c-navy); font-weight: 600; }
.drawer .children a { padding-left: var(--s-8); font-weight: 500; color: var(--c-muted); }
.drawer .children .children a { padding-left: var(--s-12); }
.drawer .children { display: none; background: var(--c-gray); }
.drawer li.is-expanded > .children { display: block; }
.drawer .has-children { position: relative; }
.drawer__expand { position: absolute; right: 0; top: 0; width: 52px; height: 48px; border: 0; border-left: 1px solid var(--c-border); background: none; font-size: 20px; color: var(--c-blue); cursor: pointer; }
.scrim { position: fixed; inset: 0; background: var(--c-scrim); z-index: calc(var(--z-drawer) - 1); display: none; }
.scrim.is-open { display: block; }
.to-top { position: fixed; right: var(--s-4); bottom: var(--s-4); z-index: 90; display: inline-flex; align-items: center; justify-content: center; width: 48px; height: 48px; border: 0; border-radius: var(--r-btn); background: var(--c-blue); color: var(--c-white); box-shadow: var(--shadow-3); cursor: pointer; opacity: 0; visibility: hidden; pointer-events: none; transition: opacity var(--dur-2) var(--ease), visibility 0s linear var(--dur-2); }
.to-top.is-visible { opacity: 1; visibility: visible; pointer-events: auto; transition-delay: 0s; }
.to-top svg { width: 20px; height: 20px; }
.sticky-atc { display: none; }

/* Hover effects only for real pointers (§1.8): no sticky lifts or zooms after a tap. */
@media (hover: hover) and (pointer: fine) {
	.link-arrow:hover::after { transform: translateX(3px); }
	.cat-card:hover { border-color: var(--c-blue); box-shadow: var(--shadow-3); color: var(--c-blue); transform: translateY(-2px); }
	.cat-card:hover::after { transform: translateX(-50%) scaleX(1); }
	.promo:hover { transform: translateY(-2px); box-shadow: var(--shadow-3); }
	.mini-card:hover { box-shadow: var(--shadow-1); }
	/* Product cards never move; only their shadow and image respond. */
	ul.products li.product:hover, .site-content ul.products li.product:hover { box-shadow: var(--shadow-3); border-color: var(--c-border-strong); }
	ul.products li.product:hover a img, .site-content ul.products li.product:hover a img { transform: scale(1.03); }
	ul.products li.product:hover :is(.woosw-btn, .woosc-btn, .woosq-btn) { opacity: 1; transform: none; }
}

@media (prefers-reduced-motion: reduce) { *, *::before, *::after { transition: none !important; animation: none !important; scroll-behavior: auto !important; } }

/* =========================================================================
   Responsive. Mobile = max-width 767.98px everywhere (P2-7: no overlap
   with the min-width 768px rules). Product grids (§1.3): home rows
   5 / 4 / 3 / 2 and archive 4 / 3 / 3 / 2 at ≥1280 / 1024 / 768 / below.
   ========================================================================= */
@media (max-width: 1279.98px) {
	ul.products, .site-content ul.products { grid-template-columns: repeat(4, minmax(0, 1fr)); }
	.site-content .shop-main ul.products { grid-template-columns: repeat(3, minmax(0, 1fr)); }
	.cat-slider__track { --per: 5; }
	.header-icon__label { display: none; }
	.header-phone span { display: none; }
}
@media (max-width: 1024px) {
	.header-main .container { grid-template-columns: auto auto 1fr auto; gap: var(--s-3); min-height: 68px; }
	.menu-toggle { display: inline-flex; }
	.site-logo img { width: 156px; }
	.site-header.is-scrolled .site-logo img { transform: none; }
	.header-main .header-search { grid-column: 1 / -1; grid-row: 2; max-width: none; margin-bottom: var(--s-3); height: 48px; }
	.header-nav { display: none; }
	.header-icons { grid-column: 4; justify-self: end; }
	.hero .container { grid-template-columns: repeat(2, minmax(0, 1fr)); min-height: 0; }
	.hero__spacer { display: none; }
	.shop-layout { grid-template-columns: minmax(0, 1fr); padding-left: var(--s-4); padding-right: var(--s-4); }
	.shop-sidebar { display: none; }
	.shop-sidebar.is-open { display: block; }
	.sidebar-toggle { display: inline-flex; }
	.woocommerce div.product { grid-template-columns: minmax(0, 1fr); gap: var(--s-8); }
	.single-wrap, .content-wrap { padding-left: var(--s-4); padding-right: var(--s-4); }
	.footer-cols { grid-template-columns: repeat(2, minmax(0, 1fr)); padding-left: var(--s-4); padding-right: var(--s-4); }
	.brand-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); }
	.usp { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.mini-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.service-cta { grid-template-columns: minmax(0, 1fr); }
}
@media (max-width: 1023.98px) {
	ul.products, .site-content ul.products, .site-content .shop-main ul.products { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}
@media (max-width: 767.98px) {
	.topbar__links { display: none; }
	.topbar .container { justify-content: center; text-align: center; }
	.header-search select { display: none; }
	.header-search button span { display: none; }
	.header-search button { padding: 0 var(--s-4); }
	.hero .container { grid-template-columns: minmax(0, 1fr); gap: var(--s-8); padding-top: var(--s-8); padding-bottom: var(--s-8); }
	.hero::before { width: 360px; height: 330px; }
	.hero__text { margin-bottom: var(--s-6); }
	.hero__actions .btn { flex: 1 1 auto; }
	.section-head { flex-direction: column; align-items: flex-start; gap: var(--s-3); margin-bottom: var(--s-4); }
	ul.products, .site-content ul.products, .site-content .shop-main ul.products { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--s-3); }
	ul.products li.product, .site-content ul.products li.product { padding: var(--s-3); }
	ul.products li.product .woocommerce-loop-product__title, .site-content ul.products li.product .woocommerce-loop-product__title { font-size: 15px; }
	ul.products li.product .button, .site-content ul.products li.product .button { padding: var(--s-1) var(--s-2); font-size: var(--fs-btn-sm); }
	.card-sku { display: none; }
	.cat-slider__track { --per: 3.4; --gap: var(--s-2); }
	.js-cat-prev { left: -6px; }
	.js-cat-next { right: -6px; }
	.cat-card { padding: var(--s-4) var(--s-2) var(--s-3); font-size: var(--fs-meta); }
	.cat-card img, .cat-card__placeholder { width: 64px; height: 64px; }
	.promo-grid { grid-template-columns: minmax(0, 1fr); gap: var(--s-4); }
	.promo, .promo--wide { grid-template-columns: 1fr 38%; min-height: 0; padding: var(--s-6); gap: var(--s-4); }
	.promo__title { margin-bottom: var(--s-4); }
	.mini-grid { grid-template-columns: minmax(0, 1fr); }
	.brand-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.usp { grid-template-columns: minmax(0, 1fr); gap: var(--s-4); }
	.footer-cols { grid-template-columns: minmax(0, 1fr); gap: var(--s-6); padding-top: var(--s-12); }
	.trust-strip { grid-template-columns: minmax(0, 1fr); }
	.trust-strip div + div { border-left: 0; border-top: 1px solid var(--c-border); }
	.service-cta__body { padding: var(--s-8) var(--s-4); }
	.service-cta__media { padding: var(--s-6); }
	.woocommerce div.product div.images { padding: var(--s-3); }
	.woocommerce div.product .woocommerce-tabs { padding: 0 var(--s-4) var(--s-6); }
	/* The tab row scrolls (clips) here: 4 px link padding holds an inset ring; gap and padding shrink by the same 4 + 4, so no text moves. */
	.woocommerce div.product .woocommerce-tabs ul.tabs { gap: var(--s-2); overflow-x: auto; margin: 0 calc(var(--s-4) * -1) var(--s-6); padding: 0 var(--s-3); }
	.woocommerce div.product .woocommerce-tabs ul.tabs li a { padding-inline: var(--s-1); }
	.woocommerce div.product .woocommerce-tabs ul.tabs li a:focus-visible { outline-offset: -3px; }
	.sticky-atc { position: fixed; left: 0; right: 0; bottom: 0; z-index: 95; display: flex; align-items: center; gap: var(--s-3); padding: var(--s-3) var(--s-4) calc(var(--s-3) + env(safe-area-inset-bottom)); background: var(--c-white); border-top: 1px solid var(--c-border); box-shadow: var(--shadow-2-up); transform: translateY(110%); transition: transform var(--dur-2) var(--ease); }
	.sticky-atc.is-visible { transform: none; }
	.sticky-atc__price { flex: 1; min-width: 0; font-weight: 800; color: var(--c-navy); font-size: 20px; }
	.sticky-atc__price del { display: none; }
	.single-product .to-top { bottom: 88px; }
	/* WooCommerce small-screen replacements */
	/* A floated button left ~55 px for the text. Full width on its own line; WC prints it before or after the text, so margin on both sides. */
	.woocommerce :is(.woocommerce-message, .woocommerce-info, .woocommerce-error) .button { float: none; display: flex; width: 100%; margin: var(--s-2) 0; }
	.woocommerce .col2-set { grid-template-columns: minmax(0, 1fr); }
	.woocommerce .lost_reset_password .form-row-first, .woocommerce .lost_reset_password .form-row-last, .woocommerce-checkout form.login .form-row { float: none; width: 100%; }
	.woocommerce-account .woocommerce:has(> .woocommerce-MyAccount-navigation) { grid-template-columns: minmax(0, 1fr); gap: var(--s-6); }
	.woocommerce table.shop_table_responsive thead, .woocommerce table.shop_table_responsive tbody th { display: none; }
	.woocommerce table.shop_table_responsive tr { display: block; }
	.woocommerce table.shop_table_responsive tr td { display: block; text-align: right !important; }
	.woocommerce table.shop_table_responsive tbody tr:first-child td:first-child { border-top: 0; }
	.woocommerce table.shop_table_responsive tr td::before { content: attr(data-title) ": "; float: left; font-weight: 700; }
	.woocommerce table.shop_table_responsive tr td.actions::before, .woocommerce table.shop_table_responsive tr td.product-remove::before, .woocommerce table.my_account_orders tr td.order-actions::before { display: none; }
	.woocommerce table.shop_table_responsive tr:nth-child(2n) td { background: var(--c-gray); }
	.woocommerce table.my_account_orders tr td.order-actions { text-align: left !important; }
	.woocommerce table.my_account_orders tr td.order-actions .button { float: none; margin: 2px 4px 2px 0; }
	.woocommerce table.cart td.actions, .woocommerce table.cart td.actions .coupon { float: none; text-align: left; }
	.woocommerce .cart-collaterals .cart_totals, .woocommerce #payment #place_order { float: none; width: 100%; }
}
@media (max-width: 420px) {
	.promo, .promo--wide { grid-template-columns: 1fr; }
	.promo__img { justify-self: start; max-width: 140px; }
}

/* ==========================================================================
   10-hero (merged from assets/css/10-hero.css, 0.5.0)
   ========================================================================== */
/* =========================================================================
   10-hero.css — owner: WS1 (hero slider + image banners)
   Scope: .hero-slider, .banners, .home .cat-menu.is-pinned (11 items, ≥1280 px).
   Loaded after style.css in file-name order (functions.php glob, filemtime
   version). Uses the tokens in style.css :root (frozen after WS0). WS7
   appends this file to style.css unchanged and deletes it.
   ========================================================================= */

/* -------------------------------------------------------------------------
   Hero slider (premium-plan §3.1). Slide heights are fixed per breakpoint
   (no JS needed for layout → no shift); below 1024 all slides share the
   tallest one's height (grid row). Controls are first in the DOM (APG).
   ------------------------------------------------------------------------- */
.hero-slider { background: var(--c-gray); padding: var(--s-6) 0; }
.hero-slider__grid { display: grid; grid-template-columns: minmax(0, 1fr); }
.hero-slider__spacer { display: none; }
.hero-slider__viewport { position: relative; min-width: 0; border-radius: var(--r-card); overflow: hidden; background: var(--c-navy); }
.hero-slider__track { display: grid; grid-auto-flow: column; grid-auto-columns: 100%; overflow-x: auto; scroll-snap-type: x mandatory; overscroll-behavior-x: contain; scrollbar-width: none; }
.hero-slider__track::-webkit-scrollbar { display: none; }

/* ≥1024: text column + tile column (260 + 108); the control bar sits under the tiles, so the text keeps the full height. */
.hero-slide { position: relative; isolation: isolate; overflow: hidden; scroll-snap-align: start; scroll-snap-stop: always; display: grid; grid-template-columns: minmax(0, 1fr) 380px; gap: var(--s-8); align-items: start; height: 480px; padding: var(--s-8) var(--s-12); background: var(--c-blue); color: var(--c-white); }
.hero-slide--navy { background: var(--c-navy); }
.hero-slide--light { background: var(--c-white); color: var(--c-navy); }
.hero-slide::before { content: ""; position: absolute; z-index: -1; left: calc(var(--s-12) * -1); bottom: -72px; width: 360px; height: 330px; background: var(--c-white); opacity: .05; -webkit-mask: var(--t-mark) center / contain no-repeat; mask: var(--t-mark) center / contain no-repeat; pointer-events: none; }
.hero-slide--light::before { background: var(--c-blue); }

.hero-slide__body { display: flex; flex-direction: column; align-items: flex-start; align-self: center; min-width: 0; }
.hero-slide .eyebrow { margin-bottom: var(--s-3); }
.hero-slide__title { margin: 0 0 var(--s-4); color: inherit; font-size: var(--fs-hero); font-weight: 800; line-height: 1.08; letter-spacing: -.025em; text-wrap: balance; }
.hero-slide__title span { color: var(--c-orange); } /* 3.45:1 on blue, 5.7:1 on navy: large bold text */
.hero-slide--light .hero-slide__title span { color: var(--c-orange-text); }
.hero-slide__text { display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; overflow: hidden; max-width: 46ch; margin: 0 0 var(--s-4); color: var(--c-on-dark); font-size: var(--fs-body); font-weight: 500; line-height: 1.55; }
.hero-slide--light .hero-slide__text { color: var(--c-muted); }
/* Price chip (§1.10): «Με κινητήρα από 290 €». */
.hero-slide__chip { display: inline-flex; align-items: baseline; gap: var(--s-2); margin: 0 0 var(--s-4); padding: var(--s-2) var(--s-3); border: 1px solid var(--c-line-dark); border-radius: var(--r-btn); background: var(--c-glass-dark); color: var(--c-on-dark); font-size: var(--fs-small); font-weight: 600; line-height: 1.3; }
.hero-slide__chip strong { color: var(--c-white); font-size: var(--fs-lead); font-weight: 800; font-variant-numeric: tabular-nums; }
.hero-slide--light .hero-slide__chip { border-color: var(--c-border); background: var(--c-gray); color: var(--c-muted); }
.hero-slide--light .hero-slide__chip strong { color: var(--c-navy); }
/* One orange button per slide; the second action is outline-light (outline on the light variant). When both do not fit
   one row beside the tiles they stack, inside the fixed slide height (slide 1's 3-line title included). */
.hero-slide__actions { display: flex; flex-wrap: wrap; align-items: center; gap: var(--s-3); }
.hero-slide__actions .btn svg { width: 18px; height: 18px; } /* external-link icon after the label */
.hero-slide--light .hero-slide__cta2 { border-color: var(--c-blue); color: var(--c-blue); }
.hero-slide--light .hero-slide__cta2:hover { background: var(--c-blue); color: var(--c-white); }
:is(.hero-slide--light, .is-light) :focus-visible { outline-color: var(--c-blue); }

/* Product tiles: one large and a column of 3 small. Product photos sit on white, no blend. */
.hero-slide__products { display: grid; grid-template-columns: 260px 108px; grid-template-rows: repeat(3, 108px); gap: var(--s-3); margin: 0; padding: 0; list-style: none; }
.hero-tile { min-width: 0; }
.hero-tile--lg { grid-row: 1 / -1; }
.hero-tile > a { position: relative; display: flex; flex-direction: column; height: 100%; overflow: hidden; border-radius: var(--r-media); background: var(--c-white); box-shadow: var(--shadow-on-dark); color: var(--c-navy); }
.hero-tile--lg > a { border-radius: var(--r-card); }
.hero-slide--light .hero-tile > a { border: 1px solid var(--c-border); box-shadow: none; }
.hero-tile__media { display: block; flex: 1 1 auto; min-height: 0; }
.hero-tile__media img { width: 100%; height: 100%; aspect-ratio: 1; object-fit: contain; padding: 4%; transition: transform var(--dur-3) var(--ease); }
.hero-slide:first-child .hero-tile__media img { padding: 3%; } /* olive harvesters fill only 55–65% of their frame */
.hero-tile__meta { display: flex; flex-direction: column; gap: 2px; padding: var(--s-3) var(--s-4); border-top: 1px solid var(--c-border); }
.hero-tile__name { display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; overflow: hidden; font-size: var(--fs-small); font-weight: 600; line-height: 1.35; }
.hero-tile .price { font-size: var(--fs-card-price); line-height: 1.15; white-space: nowrap; }
.hero-tile .price del { font-size: var(--fs-meta); }
.hero-tile .price ins { display: inline; }
/* Price chip on small tiles: bottom-left (top-left = maker logo, bottom-right = watermark). */
.hero-tile__price { position: absolute; left: var(--s-1); bottom: var(--s-1); padding: 2px 6px; border-radius: var(--r-xs); background: var(--c-navy); color: var(--c-white); font-size: var(--fs-label); font-weight: 800; line-height: 16px; font-variant-numeric: tabular-nums; white-space: nowrap; }
.hero-tile--lg .hero-tile__price { display: none; }

/* Controls (≥1024): a bar under the tiles, right-aligned with them; white on dark, navy on light. */
.hero-slider__controls { position: absolute; right: calc(var(--s-12) - var(--s-3)); bottom: var(--s-3); z-index: 2; display: flex; align-items: center; gap: var(--s-1); color: var(--c-white); visibility: hidden; }
.hero-slider.is-ready .hero-slider__controls { visibility: visible; }
.hero-slider.is-light .hero-slider__controls { color: var(--c-navy); }
.hero-slider__controls :focus-visible { outline-color: var(--c-orange); }
.hero-slider.is-light .hero-slider__controls :focus-visible { outline-color: var(--c-blue); }
.hero-slider__btn, .banner-slider__btn { display: inline-flex; align-items: center; justify-content: center; width: 44px; height: 44px; padding: 0; border: 0; border-radius: var(--r-btn); background: transparent; color: inherit; cursor: pointer; -webkit-tap-highlight-color: transparent; transition: background-color var(--dur-1) var(--ease); }
.hero-slider__btn svg { width: 20px; height: 20px; }
.i-play, .is-stopped .i-pause { display: none; }
.is-stopped .i-play { display: block; }
.hero-slider__dots, .banner-slider__dots { display: flex; }
.hero-slider__dots button, .banner-slider__dots button { position: relative; width: 44px; height: 44px; padding: 0; border: 0; background: none; cursor: pointer; -webkit-tap-highlight-color: transparent; }
/* Dot = 24×4 bar inside a 44² hit area; active = 32 px orange (navy on light). */
.hero-slider__dots button::before, .banner-slider__dots button::before { content: ""; position: absolute; inset: 20px 10px; border-radius: 2px; background: var(--c-dot-on-dark); transition: inset var(--dur-2) var(--ease), background-color var(--dur-2) var(--ease); }
.hero-slider__dots [aria-current=true]::before { inset: 20px 6px; background: var(--c-orange); }
.hero-slider.is-light .hero-slider__dots button::before { background: var(--c-dot-on-light); }
.hero-slider.is-light .hero-slider__dots [aria-current=true]::before { background: var(--c-navy); }

/* Image slides: authored art (2000×960 / 1080×1350) made for this frame, so cover is fine. */
.hero-slide--image { display: block; padding: 0; background: var(--c-navy); }
.hero-slide__art, .hero-slide__art picture { display: block; height: 100%; }
.hero-slide__art { position: relative; }
.hero-slide__img { width: 100%; height: 100%; object-fit: cover; }

@media (hover: hover) and (pointer: fine) {
	.hero-tile > a:hover img { transform: scale(1.03); }
	.hero-slider__btn:hover { background: var(--c-line-dark); }
	.hero-slider.is-light .hero-slider__btn:hover, .banner-slider__btn:hover { background: var(--c-gray-2); }
	.banners__col > a.banner:hover { transform: translateY(-2px); box-shadow: var(--shadow-3); }
}

/* Pinned category menu (homepage, ≥1280): it covers the spacer column and ends exactly at the slider's
   bottom edge: band padding 24 + slide 480 = 504 (11 items of 40 + list padding 16 + «Περισσότερες» 44 + border 1 = 501). */
@media (min-width: 1280px) {
	.hero-slider--menu .hero-slider__grid { grid-template-columns: 288px minmax(0, 1fr); gap: var(--s-6); }
	.hero-slider--menu .hero-slider__spacer { display: block; }
	.home .site-header:not(.is-scrolled) .cat-menu.is-pinned:not(.is-collapsed) { display: flex; flex-direction: column; height: calc(var(--s-6) + 480px); }
	.home .site-header:not(.is-scrolled) .cat-menu.is-pinned:not(.show-all, .is-collapsed) > ul { flex: 1 1 auto; display: flex; flex-direction: column; justify-content: space-between; }
	/* «Περισσότερες κατηγορίες»: the full list scrolls inside the same box, so it never runs over the banners or vanishes
	   when the header sticks on page scroll. The mega panels are positioned on .cat-menu, outside the scroller: not clipped. */
	.home .site-header:not(.is-scrolled) .cat-menu.is-pinned.show-all:not(.is-collapsed) > ul { flex: 1 1 auto; min-height: 0; overflow-y: auto; overscroll-behavior: contain; scrollbar-width: thin; }
	.home .cat-menu.is-pinned > ul > li > a { min-height: 40px; }
	.home .cat-menu.is-pinned:not(.show-all) > ul > li:nth-child(11) { display: block; }
}
/* Below 1280 the slider takes the full width and the menu is the normal dropdown; tiles 240 + 96. */
@media (max-width: 1279.98px) {
	.home .cat-menu.is-pinned:not(.is-open) { display: none; }
	.home .cat-menu.is-pinned.is-open { box-shadow: var(--shadow-3); }
	.hero-slide { height: 440px; grid-template-columns: minmax(0, 1fr) 348px; }
	.hero-slide__products { grid-template-columns: 240px 96px; grid-template-rows: repeat(3, 96px); }
}
/* Tablet and phones: the control bar is in flow under the track (its space is reserved: visibility only). */
@media (max-width: 1023.98px) {
	.hero-slider__viewport { display: flex; flex-direction: column; overflow: visible; border-radius: 0; background: none; }
	.hero-slider__track { border-radius: var(--r-card); background: var(--c-navy); }
	.hero-slider__controls { order: 2; position: static; justify-content: center; min-height: 52px; color: var(--c-navy); }
	.hero-slider__controls :focus-visible { outline-color: var(--c-blue); }
	.hero-slider__dots button::before { background: var(--c-dot-on-light); }
	.hero-slider.is-light .hero-slider__dots [aria-current=true]::before { background: var(--c-orange); }
	.hero-slider__btn:hover { background: var(--c-gray-2); }
	/* Large tile only: the small ones are lazy, so they are never fetched. */
	.hero-slide { height: auto; min-height: 400px; grid-template-columns: minmax(0, 1fr) 232px; gap: var(--s-6); align-items: center; padding: var(--s-8); }
	.hero-slide__products { grid-template-columns: minmax(0, 1fr); grid-template-rows: auto; }
	.hero-tile--lg { grid-row: auto; }
	.hero-tile:not(.hero-tile--lg) { display: none; }
	.hero-tile__media { aspect-ratio: 1; }
}
/* Phones: stacked slide, row of 3 equal tiles. */
@media (max-width: 767.98px) {
	.hero-slider { padding: var(--s-4) 0 0; }
	/* ≤520 px with the control row (§2.1): one 8 px rhythm, 2-line text, compact chip. */
	.hero-slide { min-height: 0; grid-template-columns: minmax(0, 1fr); grid-template-rows: 1fr auto; align-items: start; gap: var(--s-2); padding: var(--s-4); }
	.hero-slide::before { left: auto; right: -96px; bottom: auto; top: -48px; width: 240px; height: 220px; }
	.hero-slide__body { align-self: start; }
	.hero-slide .eyebrow { margin-bottom: var(--s-2); }
	.hero-slide__title { margin-bottom: var(--s-2); }
	.hero-slide__text { margin-bottom: var(--s-2); font-size: 15px; line-height: 1.5; }
	.hero-slide__chip { margin-bottom: var(--s-2); padding: var(--s-1) var(--s-3); }
	/* CTA 2 becomes a white link-arrow; its 44 px box is the spacing under the orange button. */
	.hero-slide__actions { gap: 0 var(--s-4); }
	.hero-slide__cta2, .hero-slide__cta2:hover, .hero-slide--light .hero-slide__cta2, .hero-slide--light .hero-slide__cta2:hover { min-height: 44px; padding: 0; border: 0; background: none; color: var(--c-white); font-size: var(--fs-small); gap: var(--s-1); white-space: nowrap; }
	.hero-slide--light .hero-slide__cta2, .hero-slide--light .hero-slide__cta2:hover { color: var(--c-blue); }
	.hero-slide__cta2:not(:has(svg))::after { content: "→"; }
	.hero-slide__cta2:active { transform: none; }
	.hero-slide__products { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--s-2); }
	.hero-tile:not(.hero-tile--lg) { display: block; }
	.hero-tile:nth-child(4) { display: none; }
	/* Name and price stay in the accessibility tree: they name the link. */
	.hero-tile__meta { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
	.hero-tile .hero-tile__price { display: block; }
}

/* -------------------------------------------------------------------------
   Image banners (§3.2): native ratio boxes, never cropped (baked text).
   ------------------------------------------------------------------------- */
.banners__grid { display: grid; grid-template-columns: minmax(0, 1fr); gap: var(--s-4); align-items: start; }
.banners--cols-2 .banners__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.banners--cols-3 .banners__grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.banners--cols-4 .banners__grid { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.banners__col { min-width: 0; }
.banner { position: relative; display: block; overflow: hidden; border-radius: var(--r-card); color: inherit; transition: transform var(--dur-2) var(--ease), box-shadow var(--dur-2) var(--ease); }
.banner__media { position: relative; display: block; aspect-ratio: var(--ratio, auto); background: var(--c-gray); }
.banner__img { width: 100%; height: 100%; object-fit: contain; }
.banners--auto .banner__img { height: auto; }
.banner__caption { display: none; }
/* New-tab marker (the link name says it too). */
.banner__ext { position: absolute; top: var(--s-2); right: var(--s-2); display: inline-flex; align-items: center; justify-content: center; width: 28px; height: 28px; border-radius: var(--r-pill); background: var(--c-white); color: var(--c-navy); box-shadow: var(--shadow-1); }
.banner__ext svg { width: 16px; height: 16px; }

/* Banner sliders: the controls sit under the image, never over it (live banners have text and prices in every corner). */
.banner-slider { display: flex; flex-direction: column; }
.banner-slider__track { display: grid; grid-auto-flow: column; grid-auto-columns: 100%; overflow-x: auto; scroll-snap-type: x mandatory; overscroll-behavior-x: contain; scrollbar-width: none; border-radius: var(--r-card); }
.banner-slider__track::-webkit-scrollbar { display: none; }
.banner-slide { min-width: 0; scroll-snap-align: start; scroll-snap-stop: always; }
.banner-slider__controls { order: 2; display: flex; align-items: center; justify-content: flex-end; min-height: 44px; margin-top: var(--s-1); color: var(--c-navy); visibility: hidden; }
.banner-slider.is-ready .banner-slider__controls { visibility: visible; }
/* 44 px hit areas on every pointer (§1.3); the visible parts are the 16 px icon and the 24×4 bars. */
.banner-slider__btn svg { width: 16px; height: 16px; }
.banner-slider__dots button::before { background: var(--c-dot-on-light); }
.banner-slider__dots [aria-current=true]::before { inset: 20px 6px; background: var(--c-orange); }

/* Feature: image 7/12 + navy panel 5/12 (ECHO 60 χρόνια). */
.banner-feature { display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); overflow: hidden; border-radius: var(--r-card); background: var(--c-navy); }
.banner-feature--blue { background: var(--c-blue); }
.banner-feature__media { align-self: center; min-width: 0; }
.banner-feature__media .banner { border-radius: 0; }
.banner-feature__media .banner-slider__track { border-radius: 0; }
.banner-feature__panel { position: relative; isolation: isolate; overflow: hidden; display: flex; flex-direction: column; justify-content: center; align-items: flex-start; padding: var(--s-8) var(--s-12); color: var(--c-on-dark); }
.banner-feature__panel::before { content: ""; position: absolute; z-index: -1; right: -48px; bottom: -64px; width: 240px; height: 220px; background: var(--c-white); opacity: .05; -webkit-mask: var(--t-mark) center / contain no-repeat; mask: var(--t-mark) center / contain no-repeat; pointer-events: none; }
.banner-feature__title { margin: 0 0 var(--s-3); color: var(--c-white); font-size: var(--fs-h2); font-weight: 800; line-height: 1.15; letter-spacing: -.02em; }
.banner-feature__text { max-width: 46ch; margin: 0 0 var(--s-6); font-size: var(--fs-body); font-weight: 500; line-height: 1.55; }
.banner-feature__actions { display: flex; flex-wrap: wrap; gap: var(--s-3); }
.banner-feature__actions .btn svg { order: 2; width: 18px; height: 18px; } /* external icon after the label */

@media (max-width: 1023.98px) {
	.banner-feature { grid-template-columns: minmax(0, 1fr); }
	.banner-feature__panel { padding: var(--s-8); }
}
@media (max-width: 767.98px) {
	.banners--cols-2 .banners__grid, .banners--cols-3 .banners__grid { grid-template-columns: minmax(0, 1fr); }
	.banners--cols-4 .banners__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--s-3); }
	/* 2×2 columns are 173 px wide: pause + 4 dots must fit (30×44 hit areas: WCAG 2.5.8 minimum is 24). */
	.banners--cols-4 .banner-slider__btn { width: 36px; }
	.banners--cols-4 .banner-slider__dots button { width: 30px; }
	.banners--cols-4 .banner-slider__dots button::before { inset: 20px 6px; }
	.banners--cols-4 .banner-slider__dots [aria-current=true]::before { inset: 20px 2px; }
	/* Wide formats keep their message readable: the caption bar under the image. */
	.banners--caption .banner__caption { display: flex; align-items: center; justify-content: space-between; gap: var(--s-2); padding: var(--s-2) var(--s-3); background: var(--c-navy); color: var(--c-white); font-size: var(--fs-meta); font-weight: 700; line-height: 1.35; }
	.banners--caption .banner__caption svg { flex: none; width: 16px; height: 16px; }
	.banner-feature__panel { padding: var(--s-6) var(--s-4); }
	.banner-feature__actions .btn { flex: 1 1 auto; }
}

/* ==========================================================================
   20-home (merged from assets/css/20-home.css, 0.5.0)
   ========================================================================== */
/* =========================================================================
   20-home.css — owner: WS2 (homepage sections)
   Scope: home blocks — sections, rails, tabs, category cards, USP, service, brands.
   Loaded after style.css in file-name order (functions.php glob, filemtime
   version). Uses the tokens in style.css :root (frozen after WS0). WS7
   appends this file to style.css unchanged and deletes it.
   ========================================================================= */

/* -------------------------------------------------------------------------
   Product rails (§1.3, P1-3): the WS1 rail markup around ul.products.
   Desktop: 5 / 4 / 3 cards per view with arrows (slider.js); phones: swipe,
   2.2 cards per view, edge to edge. The unscoped twin styles editor previews.
   ------------------------------------------------------------------------- */
.rail { position: relative; }
.rail > ul.products, .site-content .rail > ul.products {
	--per: 5;
	grid-template-columns: none; grid-auto-flow: column; grid-auto-columns: calc((100% - (var(--per) - 1) * var(--s-4)) / var(--per));
	overflow-x: auto; overscroll-behavior-x: contain; scroll-snap-type: x mandatory; scrollbar-width: none;
	/* Room for the hover shadow and focus rings, which the scroller would clip; the negative margins keep the layout. */
	padding-block: var(--s-4) var(--s-8); margin-block: calc(var(--s-4) * -1) calc(var(--s-8) * -1);
}
.rail > ul.products::-webkit-scrollbar { display: none; }
.rail > ul.products > li.product { scroll-snap-align: start; }
/* Layout "grid": one row of --cols equal cards from 1024 px (EGO, AGRIMAC rows); below that the same rail.
   A grid of 5+ is a grid from 1280 only: at 1024–1279 home rows have 4 columns, so it stays a 4-per-view rail. */
@media (min-width: 1024px) {
	:is(.rail--grid:not(.rail--grid-5), .site-content .rail--grid:not(.rail--grid-5)) > ul.products { grid-auto-flow: row; grid-template-columns: repeat(var(--cols, 5), minmax(0, 1fr)); overflow: visible; padding-block: 0; margin-block: 0; }
}
@media (min-width: 1280px) {
	:is(.rail--grid-5, .site-content .rail--grid-5) > ul.products { grid-auto-flow: row; grid-template-columns: repeat(5, minmax(0, 1fr)); overflow: visible; padding-block: 0; margin-block: 0; }
}
.rail__nav { position: absolute; inset: 0; pointer-events: none; }
.rail__nav[hidden] { display: none; }
.rail__btn { position: absolute; top: calc(50% - 22px); z-index: 3; display: inline-flex; align-items: center; justify-content: center; width: 44px; height: 44px; padding: 0; border: 1px solid var(--c-border); border-radius: 50%; background: var(--c-white); color: var(--c-blue); box-shadow: var(--shadow-2); cursor: pointer; pointer-events: auto; transition: background-color var(--dur-1) var(--ease), color var(--dur-1) var(--ease), opacity var(--dur-2) var(--ease); }
.rail__btn svg { width: 20px; height: 20px; }
.rail__btn:hover { background: var(--c-blue); border-color: var(--c-blue); color: var(--c-white); }
.js-rail-prev { left: -22px; }
.js-rail-next { right: -22px; }
/* At either end the arrow stays focusable (aria-disabled, WS1) but disappears until it has keyboard focus. */
:is(.rail__btn, .cat-slider__btn):is(:disabled, [aria-disabled=true]):not(:focus-visible) { opacity: 0; pointer-events: none; }
:is(.rail__btn, .cat-slider__btn)[aria-disabled=true] { cursor: default; }
@media (hover: none) { .rail__nav, .cat-slider__nav { display: none; } } /* touch: swipe */

/* -------------------------------------------------------------------------
   USP / trust strip (§2.1 row 3): four promises in a row, 2×2 on phones.
   Also used by the footer strip on inner pages (template-parts/usp.php).
   ------------------------------------------------------------------------- */
.usp { list-style: none; margin: 0; padding: var(--s-6) 0; }
.usp__item { min-width: 0; }
.usp__text { display: block; min-width: 0; font-size: var(--fs-small); line-height: 1.45; color: var(--c-muted); }
.usp__item .usp__icon { color: var(--c-blue); } /* style.css ".usp__item span" (0,1,1) would turn the icon muted */
.usp__item .usp__text strong { display: block; line-height: 1.3; color: var(--c-navy); }
.usp__item .usp__text span { display: block; font-size: inherit; color: inherit; }

/* -------------------------------------------------------------------------
   Categories carousel (§2.1 row 4, P1-4): 1:1 media panel on the product
   gradient, name clamped to 2 lines, product count.
   ------------------------------------------------------------------------- */
/* The USP strip above has its own padding and hairline: half a section gap is enough. */
.usp-bar + .section--cats { padding-top: calc(var(--section-y) / 2); }
/* Inline padding (cancelled by the margin) so the first and last card's focus ring is not clipped by the scroller. */
.section--cats .cat-slider__track { padding: var(--s-1) var(--s-2) var(--s-4); margin-inline: calc(var(--s-2) * -1); scroll-padding-inline: var(--s-2); }
.cat-card { justify-content: flex-start; gap: var(--s-2); padding: var(--s-4) var(--s-3); }
.cat-card__media { display: flex; align-items: center; justify-content: center; flex: none; width: min(120px, 100%); aspect-ratio: 1; margin-bottom: var(--s-1); border-radius: var(--r-media); background: var(--g-media); color: var(--c-blue); overflow: hidden; }
.cat-card__media img { width: 100%; height: 100%; padding: 12%; object-fit: contain; mix-blend-mode: multiply; transition: transform var(--dur-3) var(--ease); }
.cat-card__media svg { width: 36px; height: 36px; stroke-width: 1.5; }
.cat-card__name { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; min-height: calc(2 * 1.3em); text-wrap: balance; }
.cat-card small { margin-top: auto; font-weight: 500; }

/* -------------------------------------------------------------------------
   Product tabs (§2.1 row 5): text tabs 18/700 with a 3 px orange underline
   on one hairline; the «see all» link of the active tab sits on the right.
   ------------------------------------------------------------------------- */
.section--tabs .container { position: relative; }
.tabs-head { margin-bottom: var(--s-6); border-bottom: 1px solid var(--c-border); }
.section--tabs .tabs { display: flex; flex-wrap: nowrap; gap: var(--s-4); margin: 0 calc(var(--s-2) * -1) -1px; padding: 0 var(--s-2); overflow-x: auto; scrollbar-width: none; }
.section--tabs .tabs::-webkit-scrollbar { display: none; }
.section--tabs .tabs button { flex: none; min-height: 48px; padding: 0 var(--s-2); border: 0; border-radius: 0; background: none; color: var(--c-muted); font-size: var(--fs-lead); font-weight: 700; line-height: 1.25; white-space: nowrap; box-shadow: inset 0 -3px 0 transparent; transition: color var(--dur-1) var(--ease), box-shadow var(--dur-2) var(--ease); }
.section--tabs .tabs button:hover { border: 0; background: none; color: var(--c-blue); }
.section--tabs .tabs button[aria-selected=true] { background: none; color: var(--c-navy); box-shadow: inset 0 -3px 0 var(--c-orange); }
.section--tabs .tabs button:focus-visible { outline-offset: -3px; } /* the tab row scrolls, so an outside ring would be clipped; the 8 px padding keeps it off the text */
.tab-panel__more { position: absolute; top: 0; right: var(--s-6); min-height: 48px; }

/* -------------------------------------------------------------------------
   Steps band (§2.1 row 11): navy, title + light call to action, three step
   cards on --c-navy-2.
   ------------------------------------------------------------------------- */
.steps-cta { position: relative; overflow: hidden; background: var(--c-navy); color: var(--c-on-dark); }
.steps-cta::before { content: ""; position: absolute; left: -48px; bottom: -72px; width: 360px; height: 330px; background: var(--c-white); opacity: .04; -webkit-mask: var(--t-mark) center / contain no-repeat; mask: var(--t-mark) center / contain no-repeat; pointer-events: none; }
.steps-cta__grid { position: relative; display: grid; gap: var(--s-6); }
.steps-cta__intro { display: flex; align-items: flex-end; justify-content: space-between; gap: var(--s-6) var(--s-12); }
.steps-cta__intro .btn { flex: none; }
.steps-cta__title { max-width: 38ch; margin: 0; font-size: var(--fs-h3); line-height: 1.25; letter-spacing: -.01em; color: var(--c-white); }
.steps-cta__list { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--s-4); margin: 0; padding: 0; list-style: none; }
.steps-cta__step { display: grid; grid-template-columns: 40px minmax(0, 1fr); gap: var(--s-4); align-items: start; padding: var(--s-6); border: 1px solid var(--c-line-dark); border-radius: var(--r-card); background: var(--c-navy-2); }
.steps-cta__num { display: inline-flex; align-items: center; justify-content: center; width: 40px; height: 40px; border-radius: 50%; background: var(--c-blue); color: var(--c-white); font-weight: 800; font-size: var(--fs-h4); font-variant-numeric: tabular-nums; }
.steps-cta__step h3 { margin: var(--s-2) 0 var(--s-2); font-size: var(--fs-h4); line-height: 1.3; letter-spacing: 0; color: var(--c-white); }
.steps-cta__step p { margin: 0; font-size: var(--fs-small); line-height: 1.5; color: var(--c-on-dark); }

/* -------------------------------------------------------------------------
   Service panel (P1-12): media half on the product gradient (multiplied
   cut-out) or a workshop photo edge to edge; light call to action.
   ------------------------------------------------------------------------- */
.section--service .service-cta { grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); }
.section--service .service-cta__media { padding: var(--s-8); background: var(--g-media); }
.section--service .service-cta__media img { width: 100%; max-width: 320px; height: auto; max-height: 300px; aspect-ratio: 1; object-fit: contain; mix-blend-mode: multiply; }
.section--service .service-cta--photo .service-cta__media { padding: 0; }
.section--service .service-cta--photo .service-cta__media img { max-width: none; max-height: none; height: 100%; aspect-ratio: auto; object-fit: cover; mix-blend-mode: normal; }
.section--service .service-cta__body { padding: var(--s-12); }
.section--service .service-cta__body h2 { font-size: var(--fs-h3); line-height: 1.25; letter-spacing: -.01em; margin-bottom: var(--s-3); }
.section--service .service-cta__body p { max-width: 60ch; margin-bottom: var(--s-4); }
.section--service .service-cta__body ul { margin-bottom: var(--s-6); }

/* -------------------------------------------------------------------------
   Brands (P2-1): logo tiles (grayscale, colour on hover) or text tiles.
   ------------------------------------------------------------------------- */
.brand-grid { margin: 0; padding: 0; list-style: none; }
.brand-grid > li { display: flex; min-width: 0; }
.brand-tile { flex: 1; min-height: 80px; }
.brand-tile--logo img { width: auto; max-width: 100%; max-height: 44px; object-fit: contain; filter: grayscale(1); opacity: .6; transition: filter var(--dur-2) var(--ease), opacity var(--dur-2) var(--ease); }
.brand-tile--logo:hover img, .brand-tile--logo:focus-visible img { filter: none; opacity: 1; }

/* Hover effects only for real pointers (§1.8). */
@media (hover: hover) and (pointer: fine) {
	.cat-card:hover .cat-card__media img { transform: scale(1.03); }
}

/* Sections below the tabs render when they near the viewport (P1-3). The placeholders are the measured content
   heights (padding comes on top), so the scrollbar barely moves; "auto" then remembers the real one.
   Full-page screenshots skip unrendered sections: scroll through first or override content-visibility. */
.section--tabs ~ :is(.section--rail, .steps-cta, .section--service, .section--brands) { content-visibility: auto; contain-intrinsic-size: auto 620px; }
.section--tabs ~ .steps-cta { contain-intrinsic-size: auto 280px; }
.section--tabs ~ .section--service { contain-intrinsic-size: auto 410px; }
.section--tabs ~ .section--brands { contain-intrinsic-size: auto 240px; }

/* -------------------------------------------------------------------------
   Responsive (§1.3 home rows 5 / 4 / 3 / rail)
   ------------------------------------------------------------------------- */
/* 1024–1279 is a desktop width (§1.3): the USP stays 4 in a row and the brands 6 per row, as at 1280+ (§2.1 rows 3
   and 14). style.css switches both at max-width 1024px; this partial loads later, so it wins at exactly 1024. */
@media (min-width: 1024px) {
	.usp { grid-template-columns: repeat(4, minmax(0, 1fr)); }
	.brand-grid { grid-template-columns: repeat(6, minmax(0, 1fr)); }
}
@media (max-width: 1279.98px) {
	.rail > ul.products, .site-content .rail > ul.products { --per: 4; }
}
@media (min-width: 1024px) and (max-width: 1279.98px) {
	.usp { gap: var(--s-4); }
	.usp__item { gap: var(--s-3); }
	.usp__icon { flex-basis: 44px; width: 44px; height: 44px; }
}
@media (max-width: 1023.98px) {
	.rail > ul.products, .site-content .rail > ul.products { --per: 3; }
	.tab-panel__more { position: static; align-self: flex-end; order: 2; margin-top: var(--s-2); }
	.tab-panel:not([hidden]) { display: flex; flex-direction: column; }
	.steps-cta__list { grid-template-columns: minmax(0, 1fr); gap: var(--s-3); }
	.section--service .service-cta__body { padding: var(--s-8); }
	.brand-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); }
}
@media (max-width: 767.98px) {
	/* Rails: edge to edge with the gutter as scroll padding, 2.2 cards per view. */
	.rail > ul.products, .site-content .rail > ul.products, .site-content .rail--grid > ul.products { grid-auto-flow: column; grid-template-columns: none; grid-auto-columns: 44%; gap: var(--s-3); margin-inline: calc(var(--s-4) * -1); padding-inline: var(--s-4); scroll-padding-inline: var(--s-4); }

	.usp { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--s-4) var(--s-3); padding: var(--s-4) 0; }
	.usp__item { align-items: flex-start; gap: var(--s-2); }
	.usp__icon { flex-basis: 36px; width: 36px; height: 36px; border-radius: var(--r-media); }
	.usp__icon svg { width: 20px; height: 20px; }
	.usp__item .usp__text { font-size: var(--fs-meta); line-height: 1.4; }
	.usp__item .usp__text strong { font-size: var(--fs-small); }
	.usp__item .usp__text span { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }

	/* Heads with a link: title and link on one row when both fit (~40 px less than stacked), else the link wraps below. */
	:is(.section--rail, .section--cats) .section-head { flex-flow: row wrap; align-items: flex-end; align-items: last baseline; gap: 0 var(--s-3); }
	:is(.section--rail, .section--cats) .section-head > div { min-width: 0; }

	.section--cats .cat-slider__track { margin-inline: calc(var(--s-4) * -1); padding-inline: var(--s-4); scroll-padding-inline: var(--s-4); } /* edge to edge, like the rails */
	.cat-card { padding: var(--s-3) var(--s-2); }
	.cat-card__media { width: 72px; }
	.cat-card__media img { padding: 10%; }

	.section--tabs .tabs { gap: var(--s-2); margin-inline: calc(var(--s-4) * -1); padding-inline: var(--s-2); }
	.tabs-head { margin-bottom: var(--s-4); }

	.steps-cta__grid { grid-template-columns: minmax(0, 1fr); gap: var(--s-4); }
	.steps-cta__intro { display: contents; }
	.steps-cta__title { order: 0; font-size: var(--fs-h4); line-height: 1.3; text-wrap: balance; } /* the long thank-you line: 3 lines instead of 4 */
	.steps-cta__list { order: 1; gap: 0; border: 1px solid var(--c-line-dark); border-radius: var(--r-card); background: var(--c-navy-2); }
	.steps-cta__grid .btn { order: 2; justify-self: start; }
	/* Number and title on one row, the text under both at full width: about a line less per step. */
	.steps-cta__step { grid-template-columns: 24px minmax(0, 1fr); gap: var(--s-1) var(--s-3); align-items: center; padding: var(--s-3) var(--s-4); border: 0; border-radius: 0; background: none; }
	.steps-cta__step > div { display: contents; }
	.steps-cta__step + .steps-cta__step { border-top: 1px solid var(--c-line-dark); }
	.steps-cta__num { width: 24px; height: 24px; font-size: var(--fs-meta); }
	.steps-cta__step h3 { margin: 0; font-size: var(--fs-small); }
	.steps-cta__step p { grid-column: 1 / -1; font-size: var(--fs-meta); line-height: 1.45; }

	.section--service .service-cta { grid-template-columns: minmax(0, 1fr); }
	/* The product cut-out only stands in for a workshop photo (§1.7): phones skip it; a real photo shows as a strip. */
	.section--service .service-cta:not(.service-cta--photo) .service-cta__media { display: none; }
	.section--service .service-cta--photo .service-cta__media img { max-height: 200px; height: 200px; }
	.section--service .service-cta__body { padding: var(--s-6) var(--s-4); }
	.section--service .service-cta__body :is(p, li) { font-size: var(--fs-small); line-height: 1.5; }
	.section--service .service-cta__body ul { margin-bottom: var(--s-4); }

	.brand-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--s-2); }
	.brand-grid > li:nth-child(n+7) { display: none; } /* 2 rows of 3 on phones: keeps the page under its 8,000 px budget */
	.brand-tile { min-height: 48px; padding: var(--s-2); font-size: var(--fs-small); }
	.brand-tile--logo img { max-height: 32px; }

	.section--tabs ~ .section--rail { contain-intrinsic-size: auto 470px; }
	.section--tabs ~ .steps-cta { contain-intrinsic-size: auto 476px; }
	.section--tabs ~ .section--service { contain-intrinsic-size: auto 430px; }
	.section--tabs ~ .section--brands { contain-intrinsic-size: auto 150px; }
}

/* ==========================================================================
   30-shop (merged from assets/css/30-shop.css, 0.5.0)
   ========================================================================== */
/* =========================================================================
   30-shop.css — owner: WS3 (shop archive + product cards)
   Scope: ul.products cards (.site-content ul.products …), archive toolbar, filters, toast.
   Loaded after style.css in file-name order (functions.php glob, filemtime
   version). Uses the tokens in style.css :root (frozen after WS0). WS7
   appends this file to style.css unchanged and deletes it.
   ========================================================================= */

/* -------------------------------------------------------------------------
   Product card (§1.7, §1.10, §5.4). Each selector has the unscoped twin for
   the block-editor previews and the .site-content form that matches
   WooCommerce's (0,4,2) rules on the front end (same specificity, later).
   ------------------------------------------------------------------------- */
ul.products li.product, .site-content ul.products li.product { --card-pad: var(--s-4); padding: var(--card-pad); }
/* Keyboard focus anywhere in the card outlines the whole card (not after a mouse click on the button). */
ul.products li.product:has(:focus-visible), .site-content ul.products li.product:has(:focus-visible) { border-color: var(--c-blue); }
@supports not selector(:has(*)) {
	ul.products li.product:focus-within, .site-content ul.products li.product:focus-within { border-color: var(--c-blue); }
}

/* 1:1 media panel: the white product photo disappears into the gradient (multiply). */
ul.products li.product .card-media, .site-content ul.products li.product .card-media { position: relative; display: block; aspect-ratio: 1; margin: 0 0 var(--s-3); border-radius: var(--r-media); background: var(--g-media); overflow: hidden; }
ul.products li.product .card-media img, .site-content ul.products li.product .card-media img { width: 100%; height: 100%; aspect-ratio: auto; margin: 0; padding: 7%; object-fit: contain; background: none; box-shadow: none; mix-blend-mode: multiply; transition: transform var(--dur-3) var(--ease); }

/* A product without a brand keeps the brand line's height (12 px × 1.3), so titles in a row line up. */
ul.products li.product .card-brand:empty, .site-content ul.products li.product .card-brand:empty { min-height: calc(var(--fs-label) * 1.3); }

/* Price block: row 1 (on sale) = old price + badge, row 2 = current price; pinned to the card bottom. */
ul.products li.product .card-price, .site-content ul.products li.product .card-price { display: flex; flex-direction: column; align-items: flex-start; gap: var(--s-1); margin-top: auto; padding-top: var(--s-3); }
ul.products li.product .card-price__was, .site-content ul.products li.product .card-price__was { display: inline-flex; flex-wrap: wrap; align-items: center; gap: var(--s-1) var(--s-2); min-height: 20px; }
ul.products li.product .card-price__was del, .site-content ul.products li.product .card-price__was del { font-size: var(--fs-small); font-weight: 500; line-height: 1.4; color: var(--c-muted); font-variant-numeric: tabular-nums; }
ul.products li.product .card-price .onsale, .site-content ul.products li.product .card-price .onsale { position: static; order: 0; align-self: center; margin: 0; }
ul.products li.product .card-price .price, .site-content ul.products li.product .card-price .price { order: 0; margin: 0; padding: 0; font-size: var(--fs-card-price); font-weight: 800; line-height: 1.15; color: var(--c-navy); font-variant-numeric: tabular-nums; }
ul.products li.product .card-price.is-sale .price, .site-content ul.products li.product .card-price.is-sale .price,
ul.products li.product .card-price .price ins, .site-content ul.products li.product .card-price .price ins { color: var(--c-orange-text); }
ul.products li.product .card-price .price ins, .site-content ul.products li.product .card-price .price ins { display: inline; font-weight: 800; text-decoration: none; }

/* Stock line under the price (7 px dot + 13/600). */
ul.products li.product .card-stock, .site-content ul.products li.product .card-stock { order: 0; margin-top: var(--s-2); }
/* A product without a price (not purchasable) still keeps its stock line on the shared bottom line of the row. */
ul.products li.product .card-stock:not(.card-price ~ .card-stock), .site-content ul.products li.product .card-stock:not(.card-price ~ .card-stock) { margin-top: auto; padding-top: var(--s-3); }
.card-stock.is-low { color: var(--c-orange-text); }

/* Button: outline 40 px (44 on touch), «Στο καλάθι» with a 16 px cart icon; spinner while adding, check once added. */
ul.products li.product .button, .site-content ul.products li.product .button { gap: var(--s-2); margin-top: var(--s-3); }
ul.products li.product .add_to_cart_button::before, .site-content ul.products li.product .add_to_cart_button::before {
	content: ""; flex: none; width: 16px; height: 16px; background: currentColor;
	-webkit-mask: var(--i-cart) center / contain no-repeat; mask: var(--i-cart) center / contain no-repeat;
	--i-cart: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='9' cy='20' r='1.5'/%3E%3Ccircle cx='18' cy='20' r='1.5'/%3E%3Cpath d='M2 3h3l2.7 12.4a2 2 0 0 0 2 1.6h8.6a2 2 0 0 0 2-1.5L22 7H6'/%3E%3C/svg%3E");
}
ul.products li.product .add_to_cart_button.added::before, .site-content ul.products li.product .add_to_cart_button.added::before {
	-webkit-mask-image: var(--i-check); mask-image: var(--i-check);
	--i-check: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.25' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 6 9 17l-5-5'/%3E%3C/svg%3E");
}
ul.products li.product .button.loading, .site-content ul.products li.product .button.loading { opacity: 1; padding-right: var(--s-3); pointer-events: none; }
ul.products li.product .button.loading::before, .site-content ul.products li.product .button.loading::before { box-sizing: border-box; -webkit-mask: none; mask: none; background: none; border: 2px solid currentColor; border-right-color: transparent; border-radius: 50%; animation: tsixlis-spin .7s linear infinite; }
ul.products li.product :is(.button.loading, .button.added)::after, .site-content ul.products li.product :is(.button.loading, .button.added)::after { content: none; display: none; }
/* The toast replaces WooCommerce's «Προβολή καλαθιού» link, which grew the card (and its row) after each add. */
.has-cart-toast ul.products li.product .added_to_cart { display: none; }

/* Quick actions: wishlist at the image's top-right (36 px, 44 px hit area on touch), compare under it on
   pointer devices only; quick view is off (inc/woocommerce.php). Never over the protected corners. */
ul.products li.product :is(.woosw-btn, .woosc-btn), .site-content ul.products li.product :is(.woosw-btn, .woosc-btn) { width: 36px; height: 36px; right: calc(var(--card-pad) + var(--s-2)); }
ul.products li.product .woosw-btn, .site-content ul.products li.product .woosw-btn { top: calc(var(--card-pad) + var(--s-2)); }
ul.products li.product .woosc-btn, .site-content ul.products li.product .woosc-btn { top: calc(var(--card-pad) + var(--s-2) + 36px + var(--s-2)); }
ul.products li.product .woosq-btn, .site-content ul.products li.product .woosq-btn { display: none !important; }
@media (hover: none) {
	ul.products li.product .woosc-btn, .site-content ul.products li.product .woosc-btn { display: none !important; }
	ul.products li.product .woosw-btn::after, .site-content ul.products li.product .woosw-btn::after { content: ""; position: absolute; inset: -4px; }
}
@media (hover: hover) and (pointer: fine) {
	ul.products li.product:hover .card-media, .site-content ul.products li.product:hover .card-media { background: var(--g-media-hover); }
	ul.products li.product:hover .card-media img, .site-content ul.products li.product:hover .card-media img { transform: scale(1.03); }
}

/* -------------------------------------------------------------------------
   Archive title bar: T-mark whole at 120 px (P1-6 k), subcategory tiles and
   page banners under the H1.
   ------------------------------------------------------------------------- */
/* Centred in the bar and never taller than it (8 px clear above and below), so the mask is always whole. */
.page-hero::after { top: var(--s-2); bottom: var(--s-2); right: var(--s-6); width: 132px; height: auto; max-height: 120px; margin-block: auto; transform: none; }
.page-hero:has(.subcats, .page-hero__banner)::after { display: none; }
.page-hero__banner { margin-top: var(--s-6); }
/* WooCommerce's .woocommerce .woocommerce-breadcrumb (0,2,0) sets #767676 / .92em: 4.19:1 on the gray bar. */
.woocommerce .woocommerce-breadcrumb { margin: 0; font-size: var(--fs-meta); color: var(--c-muted); }
.woocommerce .woocommerce-breadcrumb a { color: var(--c-muted); }
.woocommerce .woocommerce-breadcrumb a:hover { color: var(--c-blue); }

.subcats { margin-top: var(--s-6); }
.subcats .cat-slider__track { --per: 8; --gap: var(--s-3); padding-bottom: var(--s-1); }
.subcats .cat-card { min-width: 0; gap: var(--s-2); padding: var(--s-3) var(--s-2) var(--s-3); box-shadow: var(--shadow-1); font-size: var(--fs-meta); }
.subcats .cat-card__media { display: flex; align-items: center; justify-content: center; width: 88px; aspect-ratio: 1; border-radius: var(--r-media); background: var(--g-media); color: var(--c-blue); overflow: hidden; }
.subcats .cat-card__media img { width: 100%; height: 100%; padding: 8%; object-fit: contain; mix-blend-mode: multiply; }
.subcats .cat-card__media svg { width: 28px; height: 28px; }
/* Long Greek words («Ελαιοραβδιστικά») must break inside the tile instead of widening it over the next one. */
.subcats .cat-card__name { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; max-width: 100%; overflow-wrap: anywhere; hyphens: manual; }
.subcats .cat-card small { margin-top: auto; }

/* -------------------------------------------------------------------------
   Layout: sidebar · grid; the banners sit under the filters on desktop and
   after the grid on mobile (one render, moved by grid areas).
   ------------------------------------------------------------------------- */
.shop-layout { grid-template-rows: auto 1fr; grid-template-areas: "side main" "banners main"; row-gap: var(--s-6); align-items: start; }
.shop-sidebar { grid-area: side; min-width: 0; }
.shop-main { grid-area: main; min-width: 0; }
.shop-banners { grid-area: banners; display: grid; gap: var(--s-4); min-width: 0; }
.shop-sheet__head, .shop-sheet__foot, .shop-scrim { display: none; }
/* tsixlis/banners renders as a full-width section; inside the sidebar slot and the title bar it is just the image. */
:is(.shop-banners, .page-hero__banner) .banners { padding: 0; }
:is(.shop-banners, .page-hero__banner) .banners > .container { max-width: none; padding: 0; }

/* Sidebar: category navigation (children of the current category, «← parent» link). */
.shop-sidebar .cat-nav__back { display: inline-flex; align-items: center; gap: var(--s-2); min-height: 32px; margin-bottom: var(--s-2); font-size: var(--fs-small); font-weight: 700; color: var(--c-blue); }
.shop-sidebar .cat-nav__back:hover { color: var(--c-blue-hover); }
.shop-sidebar :is(.cat-nav, .wc-brand-list-layered-nav-product_brand) li { display: flex; align-items: center; justify-content: space-between; gap: var(--s-3); }
.shop-sidebar .cat-nav a { min-width: 0; }
.shop-sidebar .cat-nav a[aria-current] { color: var(--c-blue); font-weight: 700; }
.shop-sidebar .count { flex: none; color: var(--c-muted); font-size: var(--fs-meta); font-variant-numeric: tabular-nums; }

/* Brand rows as 16 px checkboxes (P1-6 e); the links carry role="checkbox" + aria-checked. */
.shop-sidebar .wc-layered-nav-term a { position: relative; display: inline-flex; align-items: center; gap: var(--s-3); min-width: 0; min-height: 32px; flex: 1; color: var(--c-navy); }
.shop-sidebar .wc-layered-nav-term a::before { content: ""; flex: none; width: 16px; height: 16px; border: 1.5px solid var(--c-border-strong); border-radius: var(--r-xs); background: var(--c-white); transition: background-color var(--dur-1) var(--ease), border-color var(--dur-1) var(--ease); }
.shop-sidebar .wc-layered-nav-term a:hover::before { border-color: var(--c-blue); }
.shop-sidebar .wc-layered-nav-term.chosen a { color: var(--c-blue); font-weight: 700; }
.shop-sidebar .wc-layered-nav-term.chosen a::before { border-color: var(--c-blue); background: var(--c-blue); }
.shop-sidebar .wc-layered-nav-term.chosen a::after {
	content: ""; position: absolute; left: 3px; top: calc(50% - 5px); width: 10px; height: 10px; background: var(--c-white);
	-webkit-mask: var(--i-check) center / contain no-repeat; mask: var(--i-check) center / contain no-repeat;
	--i-check: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='3.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 6 9 17l-5-5'/%3E%3C/svg%3E");
}

/* Price filter (P1-6 f): range label left, outline-sm «Εφαρμογή» right; 20 px handles. */
.woocommerce .widget_price_filter .price_slider_wrapper { padding: var(--s-2) var(--s-2) 0; }
.woocommerce .widget_price_filter .ui-slider-horizontal { height: 4px; border-radius: 2px; }
.woocommerce .widget_price_filter .ui-slider .ui-slider-handle { top: -8px; width: 20px; height: 20px; margin-left: -10px; border: 2px solid var(--c-white); box-shadow: var(--shadow-1); }
.woocommerce .widget_price_filter .price_slider_amount { display: flex; flex-wrap: nowrap; align-items: center; justify-content: space-between; gap: var(--s-3); margin-top: var(--s-4); font-size: var(--fs-small); line-height: 1.4; text-align: left; }
.woocommerce .widget_price_filter .price_slider_amount .price_label { order: 1; flex: 1 1 auto; min-width: 0; font-weight: 600; color: var(--c-navy); font-variant-numeric: tabular-nums; }
.woocommerce .widget_price_filter .price_slider_amount .button { order: 2; flex: none; float: none; min-height: 40px; margin: 0; padding: var(--s-1) var(--s-4); border-color: var(--c-blue); background: transparent; color: var(--c-blue); font-size: var(--fs-btn-sm); }
.woocommerce .widget_price_filter .price_slider_amount .button:hover { background: var(--c-blue); color: var(--c-white); }
.woocommerce .widget_price_filter .price_slider_amount .clear { display: none; }
/* price-slider.js swaps the two text inputs for the slider and the label after load (a 4 px shift): show the
   final state from the first paint instead. One row: a long range wraps inside the label (≤ 2 lines < 40 px). */
.woocommerce .widget_price_filter .price_slider { display: block !important; height: 4px; }
.woocommerce .widget_price_filter .price_slider_amount input[type="text"] { display: none; }
/* «Τιμή:» repeats the widget title: only the range shows (font-size 0 keeps the text for screen readers). */
.woocommerce .widget_price_filter .price_slider_amount .price_label { display: block !important; min-height: 20px; font-size: 0; }
.woocommerce .widget_price_filter .price_slider_amount .price_label span { font-size: var(--fs-small); }
.woocommerce .widget_price_filter .price_slider_amount .price_label .from::after { content: " – "; }

/* -------------------------------------------------------------------------
   Toolbar (P1-6 c): no box, a hairline under it; [Φίλτρα] · count · sort.
   ------------------------------------------------------------------------- */
.site-content .shop-toolbar { flex-wrap: nowrap; justify-content: flex-start; gap: var(--s-3); margin-bottom: var(--s-6); padding: 0 0 var(--s-3); border: 0; border-bottom: 1px solid var(--c-border); border-radius: 0; background: none; }
.shop-count { flex: 1 1 auto; min-width: 0; margin: 0; font-size: var(--fs-meta); font-weight: 600; color: var(--c-muted); font-variant-numeric: tabular-nums; white-space: nowrap; }
.sidebar-toggle { flex: none; }
.sidebar-toggle svg { width: 18px; height: 18px; }
.sidebar-toggle__count { display: inline-flex; align-items: center; justify-content: center; min-width: 20px; height: 20px; padding: 0 var(--s-1); border-radius: var(--r-pill); background: var(--c-tint); color: var(--c-blue); font-size: var(--fs-label); font-weight: 800; line-height: 1; }
.shop-toolbar .woocommerce-ordering { position: relative; display: flex; flex: none; align-items: center; gap: var(--s-2); margin: 0; }
.shop-toolbar .woocommerce-ordering label { margin: 0; font-size: var(--fs-small); font-weight: 600; color: var(--c-muted); white-space: nowrap; }
.shop-toolbar .woocommerce-ordering select { -webkit-appearance: none; appearance: none; min-height: 40px; padding: 0 var(--s-8) 0 var(--s-3); border: 1px solid var(--c-border-strong); border-radius: var(--r-input); background: var(--c-white); color: var(--c-navy); font-size: var(--fs-small); font-weight: 600; cursor: pointer; }
.shop-toolbar .woocommerce-ordering select:hover { border-color: var(--c-blue); }
.shop-toolbar .woocommerce-ordering::after {
	content: ""; position: absolute; right: var(--s-3); top: calc(50% - 8px); width: 16px; height: 16px; background: var(--c-blue); pointer-events: none;
	-webkit-mask: var(--i-chev) center / contain no-repeat; mask: var(--i-chev) center / contain no-repeat;
	--i-chev: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");
}

/* Active filters as chips (§1.10): tint, blue 14/600, radius 6, × ; 44 px hit area. */
.filter-chips { display: flex; flex-wrap: wrap; align-items: center; gap: var(--s-3) var(--s-2); margin: 0 0 var(--s-6); padding: 0; list-style: none; }
.filter-chip { position: relative; display: inline-flex; align-items: center; gap: var(--s-1); min-height: 32px; padding: var(--s-1) var(--s-2) var(--s-1) var(--s-3); border-radius: var(--r-btn); background: var(--c-tint); color: var(--c-blue); font-size: var(--fs-small); font-weight: 600; line-height: 1.2; }
.filter-chip::after { content: ""; position: absolute; inset: -6px 0; }
.filter-chip svg { flex: none; width: 16px; height: 16px; }
.filter-chip:hover { background: var(--c-gray-2); color: var(--c-blue-hover); }
.filter-chips__clear { display: inline-flex; align-items: center; min-height: 32px; font-size: var(--fs-small); font-weight: 700; text-decoration: underline; text-underline-offset: 2px; }

/* Empty listing (P2-2): icon 28, one line, one way out. */
.empty-state { display: flex; flex-direction: column; align-items: center; gap: var(--s-3); padding: var(--s-12) var(--s-6); border-radius: var(--r-card); background: var(--c-gray); text-align: center; }
.empty-state > svg { width: 28px; height: 28px; color: var(--c-blue); }
.empty-state p { max-width: 48ch; margin: 0; font-weight: 600; color: var(--c-navy); }

/* -------------------------------------------------------------------------
   Add-to-cart toast (P1-7): --shadow-3, tint header, bottom-right (bottom
   full width on phones). Announced through the separate role="status" region.
   ------------------------------------------------------------------------- */
.cart-toast { position: fixed; right: var(--s-6); bottom: var(--s-6); z-index: calc(var(--z-header) + 10); width: min(420px, calc(100vw - 2 * var(--s-4))); border: 1px solid var(--c-border); border-radius: var(--r-card); background: var(--c-white); box-shadow: var(--shadow-3); overflow: hidden; opacity: 0; transform: translateY(var(--s-4)); transition: opacity var(--dur-3) var(--ease), transform var(--dur-3) var(--ease); }
.cart-toast[hidden] { display: none; }
.cart-toast.is-visible { opacity: 1; transform: none; }
.cart-toast__head { display: flex; align-items: center; justify-content: space-between; gap: var(--s-3); padding: var(--s-1) var(--s-1) var(--s-1) var(--s-4); background: var(--c-tint); }
.cart-toast__title { display: flex; align-items: center; gap: var(--s-2); margin: 0; font-size: var(--fs-small); font-weight: 700; line-height: 1.3; color: var(--c-navy); }
.cart-toast__title svg { flex: none; width: 20px; height: 20px; color: var(--c-success); }
.cart-toast__close { display: inline-flex; align-items: center; justify-content: center; width: 44px; height: 44px; border: 0; border-radius: var(--r-btn); background: none; color: var(--c-navy); cursor: pointer; }
.cart-toast__close:focus-visible { outline-offset: -3px; }
.cart-toast__close:hover { background: var(--c-gray-2); }
.cart-toast__close svg { width: 20px; height: 20px; }
.cart-toast__body { display: flex; align-items: center; gap: var(--s-3); padding: var(--s-4); }
.cart-toast__media { flex: none; width: 64px; height: 64px; border-radius: var(--r-media); background: var(--g-media); overflow: hidden; }
.cart-toast__media[hidden] { display: none; }
.cart-toast__media img { width: 100%; height: 100%; padding: 6%; object-fit: contain; mix-blend-mode: multiply; }
.cart-toast__text { min-width: 0; }
.cart-toast__name { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; margin: 0 0 var(--s-1); font-size: var(--fs-small); font-weight: 600; line-height: 1.4; color: var(--c-navy); }
.cart-toast__subtotal { margin: 0; font-size: var(--fs-meta); font-weight: 500; color: var(--c-muted); }
.cart-toast__subtotal strong { color: var(--c-navy); font-weight: 800; font-variant-numeric: tabular-nums; }
.cart-toast__actions { display: flex; flex-wrap: wrap; gap: var(--s-2); padding: 0 var(--s-4) var(--s-4); }
.cart-toast__actions .btn { flex: 1 1 auto; padding-inline: var(--s-3); }

/* -------------------------------------------------------------------------
   ≤1024 px: one column; the sidebar becomes an off-canvas filter sheet
   (--shadow-4, sticky footer), the banners go after the grid 2 by 2.
   ------------------------------------------------------------------------- */
@media (max-width: 1024px) {
	/* Same 24 px gutter as the title bar above (16 px below 768). */
	.shop-layout { grid-template-columns: minmax(0, 1fr); grid-template-rows: auto; grid-template-areas: "main" "banners"; row-gap: var(--s-8); padding-inline: var(--s-6); }
	.shop-banners { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--s-3); }
	.shop-sidebar, .shop-sidebar.is-open {
		position: fixed; inset: 0 auto 0 0; z-index: calc(var(--z-drawer) + 1); display: flex; flex-direction: column; grid-area: auto;
		width: min(92vw, 400px); background: var(--c-white); visibility: hidden; transform: translateX(-100%);
		transition: transform var(--dur-3) var(--ease-in-out), visibility 0s linear var(--dur-3);
	}
	.shop-sidebar.is-open { visibility: visible; transform: none; box-shadow: var(--shadow-4); transition-delay: 0s; }
	.admin-bar .shop-sidebar { top: 32px; }
	.shop-sheet__head { display: flex; flex: none; align-items: center; justify-content: space-between; gap: var(--s-3); padding: var(--s-1) var(--s-1) var(--s-1) var(--s-4); border-bottom: 1px solid var(--c-border); }
	.shop-sheet__title { margin: 0; font-size: var(--fs-h4); line-height: 1.3; letter-spacing: 0; }
	.shop-sheet__close { display: inline-flex; align-items: center; justify-content: center; width: 48px; height: 48px; border: 0; border-radius: var(--r-btn); background: none; color: var(--c-navy); cursor: pointer; }
	.shop-sheet__close svg { width: 24px; height: 24px; }
	.shop-sheet__close:focus-visible { outline-offset: -3px; }
	.shop-sheet__body { flex: 1 1 auto; min-height: 0; padding: var(--s-4); overflow-y: auto; overscroll-behavior: contain; }
	.shop-sheet__foot { display: flex; flex: none; gap: var(--s-3); padding: var(--s-3) var(--s-4) calc(var(--s-3) + env(safe-area-inset-bottom)); border-top: 1px solid var(--c-border); background: var(--c-white); }
	.shop-sheet__foot .btn { flex: 1 1 0; min-width: 0; padding-inline: var(--s-3); }
	.shop-scrim { position: fixed; inset: 0; z-index: var(--z-drawer); display: block; background: var(--c-scrim); }
	.shop-scrim[hidden] { display: none; }
	html.has-sheet { overflow: hidden; }
	/* Inside the sheet the widgets are sections divided by hairlines; rows are 44 px touch targets. */
	.shop-sidebar .widget { margin: 0 0 var(--s-6); padding: 0 0 var(--s-6); border: 0; border-bottom: 1px solid var(--c-border); border-radius: 0; }
	.shop-sidebar .widget:last-child { margin-bottom: 0; border-bottom: 0; }
	.shop-sidebar ul { max-height: none; overflow: visible; }
	.shop-sidebar li { padding: 0; }
	.shop-sidebar li a, .shop-sidebar .cat-nav__back { min-height: 44px; }
	.shop-sidebar .cat-nav a { display: inline-flex; align-items: center; }
	.subcats .cat-slider__track { --per: 5.5; }
}
@media (max-width: 782px) { .admin-bar .shop-sidebar { top: 46px; } }
@media (max-width: 1279.98px) and (min-width: 1025px) { .subcats .cat-slider__track { --per: 6; } }
@media (max-width: 767.98px) {
	.shop-layout { padding-inline: var(--s-4); }
	ul.products li.product, .site-content ul.products li.product { --card-pad: var(--s-3); }
	ul.products li.product .card-media, .site-content ul.products li.product .card-media { margin-bottom: var(--s-2); }
	/* Same 8 px side padding as the resting mobile button (WooCommerce widens the right side while loading). */
	ul.products li.product .button.loading, .site-content ul.products li.product .button.loading { padding-right: var(--s-2); }
	.page-hero::after { display: none; }
	.subcats, .page-hero__banner { margin-top: var(--s-4); }
	/* Edge to edge like the homepage categories and rails: the third tile peeks at the screen edge, not 8 px short of it. */
	.subcats .cat-slider__track { --per: 2.8; --gap: var(--s-2); margin-inline: calc(var(--s-4) * -1); padding-inline: var(--s-4); scroll-padding-inline: var(--s-4); }
	.subcats .cat-card { padding: var(--s-2) var(--s-1); }
	.subcats .cat-card__media { width: 64px; }
	/* One row ≤ 56 px: [Φίλτρα] count [sort]; the sort label stays for screen readers. */
	.site-content .shop-toolbar { gap: var(--s-2); margin-bottom: var(--s-4); padding-bottom: var(--s-2); }
	.shop-toolbar .woocommerce-ordering label { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(1px, 1px, 1px, 1px); white-space: nowrap; }
	.shop-toolbar .woocommerce-ordering select { min-height: 44px; max-width: 136px; }
	.filter-chips { margin-bottom: var(--s-4); }
	.empty-state { padding: var(--s-8) var(--s-4); }
	.cart-toast { right: var(--s-4); left: var(--s-4); bottom: calc(var(--s-4) + env(safe-area-inset-bottom)); width: auto; }
}
@media (hover: none) {
	.shop-toolbar .woocommerce-ordering select { min-height: 44px; }
}

/* ==========================================================================
   40-product (merged from assets/css/40-product.css, 0.5.0)
   ========================================================================== */
/* =========================================================================
   40-product.css — owner: WS4 (single product page)
   Scope: .single-product — gallery, summary, delivery box, related/upsells, sticky bar.
   Loaded after style.css in file-name order (functions.php glob, filemtime
   version). Uses the tokens in style.css :root (frozen after WS0). WS7
   appends this file to style.css unchanged and deletes it.
   Selectors that start with ".woocommerce div.product" match or beat
   WooCommerce's general CSS and the style.css base rules (loaded earlier).
   ========================================================================= */

/* -------------------------------------------------------------------------
   Breadcrumb line (P1-8): no band, no watermark, one line. The product name
   (last crumb) stays in the markup for the schema; the H1 repeats it.
   ------------------------------------------------------------------------- */
.product-crumbs { padding-top: var(--s-4); }
/* Padding gives the focus ring room inside the clipping box; the negative margin keeps the alignment. */
.product-crumbs .woocommerce-breadcrumb { display: block; margin: 0 calc(var(--s-1) * -1); padding: var(--s-1); overflow: hidden; white-space: nowrap; text-overflow: ellipsis; font-size: var(--fs-meta); font-weight: 500; line-height: 1.4; color: var(--c-muted); }
.product-crumbs .crumb a { color: var(--c-muted); }
.product-crumbs .crumb a:hover { color: var(--c-blue); text-decoration: underline; text-underline-offset: 2px; }
.product-crumbs .crumb a:focus-visible { outline-offset: 1px; }
.product-crumbs .crumb-sep { margin: 0 var(--s-2); color: var(--c-border-strong); }
.product-crumbs .crumb:last-child, .product-crumbs .crumb-sep:nth-last-child(2) { display: none; }
.single-product .single-wrap { padding-top: var(--s-4); }

/* -------------------------------------------------------------------------
   Layout: gallery 7 / summary 5 from 1280, halves from 1025, one column below.
   Rows below the summary («Αγοράστε μαζί», tabs, related) space themselves.
   ------------------------------------------------------------------------- */
.woocommerce div.product { row-gap: 0; }
@media (min-width: 1280px) {
	.woocommerce div.product { grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); column-gap: var(--s-12); }
}
@media (min-width: 1025px) and (max-width: 1279.98px) {
	.woocommerce div.product { grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: var(--s-8); }
}

/* -------------------------------------------------------------------------
   Gallery (P0-3, P1-9e). WooCommerce prints the gallery with an inline
   opacity: 0 until its script runs, which made the breadcrumb the LCP
   element; it is visible from the first paint. The photos sit in a native
   scroll-snap track (§1.8; flexslider is off, inc/wc-single.php): swipe on
   touch, thumbnails or dots from product.js, nothing is moved or resized
   when the scripts run. Every slide is a 1:1 panel on --g-media; the white
   product photo disappears into it (multiply).
   ------------------------------------------------------------------------- */
.woocommerce-product-gallery { opacity: 1 !important; }
.woocommerce div.product div.images.woocommerce-product-gallery { padding: 0; border: 0; border-radius: 0; background: none; }
.woocommerce div.product div.images .woocommerce-product-gallery__wrapper { display: flex; margin: 0; padding: 0; border-radius: var(--r-card); overflow-x: auto; overscroll-behavior-x: contain; scroll-snap-type: x mandatory; scrollbar-width: none; transition: none; }
.woocommerce div.product div.images .woocommerce-product-gallery__wrapper::-webkit-scrollbar { display: none; }
.woocommerce div.product div.images .woocommerce-product-gallery__wrapper > .woocommerce-product-gallery__image { position: relative; display: block; flex: 0 0 100%; width: 100%; overflow: hidden; background: var(--g-media); scroll-snap-align: start; scroll-snap-stop: always; }
.woocommerce div.product div.images .woocommerce-product-gallery__image > a { display: block; }
.woocommerce div.product div.images .woocommerce-product-gallery__image img { display: block; width: 100%; height: auto; aspect-ratio: 1; margin: 0; padding: 7%; object-fit: contain; mix-blend-mode: multiply; }
.woocommerce div.product div.images .woocommerce-product-gallery__image img.zoomImg { padding: 0; aspect-ratio: auto; background: var(--c-white); mix-blend-mode: normal; } /* hover zoom: the full photo, unblended */

/* Zoom / lightbox trigger: top-right (the free corner), 44 px. */
.woocommerce div.product div.images .woocommerce-product-gallery__trigger { top: var(--s-3); right: var(--s-3); display: flex; align-items: center; justify-content: center; width: 44px; height: 44px; box-sizing: border-box; border: 1px solid var(--c-border); border-radius: 50%; background: var(--c-white); box-shadow: var(--shadow-1); color: var(--c-blue); font-size: 0; text-indent: 0; overflow: hidden; }
.woocommerce div.product div.images .woocommerce-product-gallery__trigger::before { content: ""; position: static; display: block; width: 20px; height: 20px; border: 0; border-radius: 0; background: currentColor; -webkit-mask: var(--i-zoom) center / contain no-repeat; mask: var(--i-zoom) center / contain no-repeat; --i-zoom: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.75' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='11' cy='11' r='7'/%3E%3Cpath d='m20 20-3.5-3.5M11 8v6M8 11h6'/%3E%3C/svg%3E"); }
.woocommerce div.product div.images .woocommerce-product-gallery__trigger::after { content: none; display: none; }
.woocommerce div.product div.images .woocommerce-product-gallery__trigger :is(img, span) { display: none; }
.woocommerce div.product div.images .woocommerce-product-gallery__trigger:hover { border-color: var(--c-blue); }

/* Thumbnail buttons (product.js). Desktop: a column left of the photo; "has-thumbs" (inc/wc-single.php)
   reserves it from the first paint. The column takes the photo's height and scrolls if longer
   (height 0 + min-height 100%: it never makes the row taller). */
/* Selectors with ".woocommerce div.product div.images" beat WooCommerce's "div.images img { display: block; height: auto }". */
.gallery-nav { display: flex; margin: 0; padding: 0; }
.gallery-nav__btn { position: relative; flex: none; display: block; width: 72px; height: 72px; padding: 0; border: 0; border-radius: var(--r-media); background: var(--g-media); cursor: pointer; -webkit-tap-highlight-color: transparent; }
.woocommerce div.product div.images .gallery-nav__btn img { display: block; width: 100%; height: 100%; padding: 10%; border-radius: inherit; object-fit: contain; mix-blend-mode: multiply; }
.gallery-nav__btn::after { content: ""; position: absolute; inset: 0; border: 1px solid var(--c-border); border-radius: inherit; pointer-events: none; transition: border-color var(--dur-1) var(--ease); }
.gallery-nav__btn:hover::after { border-color: var(--c-border-strong); }
.gallery-nav__btn[aria-current=true]::after { border: 2px solid var(--c-blue); }
.gallery-nav__btn:focus-visible { outline-offset: -3px; } /* the column scrolls: an outside ring would be clipped */
@media (min-width: 1025px) {
	.woocommerce div.product div.images.has-thumbs { display: grid; grid-template-columns: 72px minmax(0, 1fr); column-gap: var(--s-3); align-items: start; }
	.woocommerce div.product div.images.has-thumbs > .woocommerce-product-gallery__wrapper { grid-column: 2; grid-row: 1; }
	.woocommerce div.product div.images.has-thumbs > .gallery-nav { grid-column: 1; grid-row: 1; align-self: stretch; flex-direction: column; gap: var(--s-2); height: 0; min-height: 100%; overflow-y: auto; scrollbar-width: none; }
	.woocommerce div.product div.images.has-thumbs > .gallery-nav::-webkit-scrollbar { display: none; }
	/* The photo fits the screen under the header (1:1, so its width is capped by the viewport height). */
	.woocommerce div.product div.images.woocommerce-product-gallery { align-self: start; max-width: max(480px, calc(100vh - 240px)); } /* start: not stretched to a taller summary */
	.woocommerce div.product div.images.woocommerce-product-gallery.has-thumbs { max-width: calc(max(480px, calc(100vh - 240px)) + 72px + var(--s-3)); }
}
/* Tablet and phone: swipe, capped at 520 px, dots instead of thumbnails. The dots sit over the bottom centre
   of the photo, clear of the protected corners, so they take no height; each one is a 24 px target. */
@media (max-width: 1024px) {
	.woocommerce div.product div.images.woocommerce-product-gallery { width: 100% !important; max-width: 520px; margin: 0 auto !important; }
	.gallery-nav { position: absolute; left: 50%; bottom: var(--s-2); z-index: 2; max-width: calc(100% - 2 * var(--s-12)); overflow: hidden; transform: translateX(-50%); }
	.gallery-nav__btn { display: flex; align-items: center; justify-content: center; width: 24px; height: 24px; background: none; border-radius: 50%; }
	.woocommerce div.product div.images .gallery-nav__btn img { display: none; } /* lazy + display: none: the thumbnails are never downloaded on phones */
	.gallery-nav__btn::after { content: none; }
	.gallery-nav__btn::before { content: ""; width: 8px; height: 8px; border-radius: 50%; background: var(--c-border-strong); transition: background-color var(--dur-1) var(--ease), transform var(--dur-1) var(--ease); }
	.gallery-nav__btn[aria-current=true]::before { background: var(--c-orange); transform: scale(1.25); }
}

/* -------------------------------------------------------------------------
   Summary: title, meta line (brand · code · stock), price block.
   ------------------------------------------------------------------------- */
.woocommerce div.product .product_title { margin: 0 0 var(--s-2); }
.woocommerce div.product .single-meta { gap: var(--s-1) var(--s-4); margin: 0 0 var(--s-4); font-size: var(--fs-meta); line-height: 1.4; }
.single-meta .single-meta__brand { display: inline-flex; align-items: center; min-height: 24px; font-size: var(--fs-label); font-weight: 800; line-height: 1.3; letter-spacing: var(--tr-label); text-transform: uppercase; color: var(--c-blue); }
.single-meta .single-meta__brand:hover { color: var(--c-blue-hover); text-decoration: underline; text-underline-offset: 3px; }
.single-meta .sku { font-weight: 600; color: var(--c-navy); font-variant-numeric: tabular-nums; }
.single-meta .sku_wrapper:has(> .sku:empty) { display: none; } /* variable product without its own code: shown once a variation has one */

/* Price block (§1.10): row 1 on sale = old price + badge; row 2 = the price, orange-text when discounted. */
.price-block { display: flex; flex-direction: column; align-items: flex-start; gap: var(--s-1); margin: 0 0 var(--s-4); }
.price-block__was { display: inline-flex; flex-wrap: wrap; align-items: center; gap: var(--s-1) var(--s-2); min-height: 20px; }
.price-block__was[hidden] { display: none; }
.price-block__was del { font-size: var(--fs-small); font-weight: 500; line-height: 1.4; color: var(--c-muted); font-variant-numeric: tabular-nums; }
.woocommerce .price-block span.onsale { position: static; margin: 0; }
.woocommerce div.product .price-block p.price { margin: 0; font-size: var(--fs-price); font-weight: 800; line-height: 1.1; color: var(--c-navy); font-variant-numeric: tabular-nums; }
.woocommerce div.product .price-block p.price ins { display: inline; font-weight: 800; text-decoration: none; color: var(--c-orange-text); }
.woocommerce div.product .price-block.is-sale p.price { color: var(--c-orange-text); }

/* -------------------------------------------------------------------------
   Delivery box (P1-9b) on --c-tint: courier (or freight) and store pickup.
   ------------------------------------------------------------------------- */
.delivery-box { margin: 0 0 var(--s-4); padding: var(--s-1) var(--s-4); border-radius: var(--r-card); background: var(--c-tint); }
.delivery-box__row { display: flex; align-items: flex-start; gap: var(--s-3); padding: var(--s-3) 0; }
.delivery-box__row[hidden] { display: none; }
.delivery-box__row:not([hidden]) ~ .delivery-box__row:not([hidden]) { border-top: 1px solid var(--c-border); }
.delivery-box__row > svg { flex: none; width: 20px; height: 20px; margin-top: 1px; color: var(--c-blue); }
.delivery-box__row p { display: flex; flex-direction: column; gap: 0; margin: 0; font-size: var(--fs-small); line-height: 1.45; }
.delivery-box__title { font-weight: 600; color: var(--c-navy); }
.delivery-box__title strong { font-weight: 800; font-variant-numeric: tabular-nums; }
.delivery-box__title [hidden] { display: none; }
.delivery-box__meta { font-size: var(--fs-meta); font-weight: 500; color: var(--c-muted); }
.delivery-box a { font-weight: 700; color: var(--c-blue); text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: 2px; white-space: nowrap; }

/* Short description: plain text under the delivery box (no rule above it). */
.woocommerce div.product .woocommerce-product-details__short-description { margin: 0 0 var(--s-4); padding: 0; border: 0; }
.woocommerce div.product .woocommerce-product-details__short-description p:last-child { margin-bottom: 0; }

/* -------------------------------------------------------------------------
   Form: quantity stepper (− field +) and the 52 px primary button.
   ------------------------------------------------------------------------- */
.woocommerce div.product form.cart { align-items: stretch; margin: 0 0 var(--s-3); }
.woocommerce div.product form.cart::before, .woocommerce div.product form.cart::after { content: none; } /* WC clearfix: would be flex items (12 px indents) */
.woocommerce div.product form.cart div.quantity { display: inline-flex; align-items: stretch; float: none; margin: 0; border: 1px solid var(--c-border-strong); border-radius: var(--r-input); background: var(--c-white); }
.woocommerce div.product form.cart div.quantity:has(> input[type=hidden]) { display: none; } /* sold individually: nothing to choose */
.woocommerce div.product form.cart .quantity .qty { width: 48px; min-height: 50px; padding: 0; border: 0; border-radius: 0; background: transparent; text-align: center; font-size: 16px; font-weight: 700; color: var(--c-navy); font-variant-numeric: tabular-nums; -moz-appearance: textfield; appearance: textfield; }
.woocommerce div.product form.cart .quantity .qty::-webkit-inner-spin-button, .woocommerce div.product form.cart .quantity .qty::-webkit-outer-spin-button { -webkit-appearance: none; margin: 0; }
.qty-step { display: inline-flex; align-items: center; justify-content: center; flex: none; width: 44px; padding: 0; border: 0; border-radius: var(--r-input); background: transparent; color: var(--c-blue); cursor: pointer; -webkit-tap-highlight-color: transparent; transition: background-color var(--dur-1) var(--ease), color var(--dur-1) var(--ease); }
.qty-step svg { width: 20px; height: 20px; }
.qty-step:hover { background: var(--c-gray); }
.qty-step[aria-disabled=true] { color: var(--c-border-strong); background: transparent; cursor: not-allowed; }
/* Rings inside the box (the field and the buttons touch each other). */
.woocommerce div.product form.cart .quantity :is(.qty, .qty-step):focus-visible { outline-offset: -3px; }
.woocommerce div.product form.cart .single_add_to_cart_button { min-width: 0; }
/* Variable products: the chosen variation's price and availability show in the price block and the meta line
   (product.js); here they stay for screen readers only (the region announces them). */
.woocommerce div.product .single_variation :is(.woocommerce-variation-price, .woocommerce-variation-availability) { position: absolute !important; width: 1px; height: 1px; overflow: hidden; clip: rect(1px, 1px, 1px, 1px); white-space: nowrap; }
/* Less air between the choices and the button (WooCommerce's table and reset-link margins add up to 60 px). */
.woocommerce div.product form.cart table.variations { margin-bottom: var(--s-2); }
.woocommerce div.product form.cart table.variations tr:last-child { margin-bottom: 0; }
.woocommerce div.product .woocommerce-variation-description:not(:empty) { margin-bottom: var(--s-3); font-size: var(--fs-small); color: var(--c-muted); }
.woocommerce div.product .woocommerce-variation-description p:last-child { margin-bottom: 0; }

/* -------------------------------------------------------------------------
   Secondary actions in one row (P1-9a): Σύγκριση · Στα αγαπημένα · Ερώτηση.
   The WPC buttons are restyled as .btn--text; their icons are masks so the
   plugin scripts can rewrite the text without losing them.
   ------------------------------------------------------------------------- */
.product-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 0 var(--s-2); margin: 0 calc(var(--s-2) * -1) var(--s-4); padding: 0; }
.summary .product-actions :is(.woosw-btn, .woosc-btn), .product-actions .btn--text {
	display: inline-flex !important; align-items: center; gap: var(--s-2); min-height: 44px; margin: 0 !important; padding: 0 var(--s-2) !important;
	border: 0 !important; border-radius: var(--r-btn) !important; background: transparent !important; color: var(--c-blue) !important;
	font-size: var(--fs-small) !important; font-weight: 600 !important; line-height: 1.2; letter-spacing: 0; text-transform: none; white-space: nowrap; cursor: pointer;
}
.summary .product-actions :is(.woosw-btn, .woosc-btn)::before { content: ""; flex: none; width: 18px; height: 18px; background: currentColor; -webkit-mask: var(--icon) center / contain no-repeat; mask: var(--icon) center / contain no-repeat; }
.summary .product-actions .woosc-btn { --icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.75' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m16 3 4 4-4 4M20 7H4M8 21l-4-4 4-4M4 17h16'/%3E%3C/svg%3E"); }
.summary .product-actions .woosw-btn { --icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.75' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M19 14c1.5-1.5 3-3.2 3-5.5A5.5 5.5 0 0 0 16.5 3c-1.8 0-3 .5-4.5 2-1.5-1.5-2.7-2-4.5-2A5.5 5.5 0 0 0 2 8.5c0 2.3 1.5 4 3 5.5l7 7Z'/%3E%3C/svg%3E"); }
.summary .product-actions .woosw-btn.woosw-added { --icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='black' stroke='black' stroke-width='1.75' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M19 14c1.5-1.5 3-3.2 3-5.5A5.5 5.5 0 0 0 16.5 3c-1.8 0-3 .5-4.5 2-1.5-1.5-2.7-2-4.5-2A5.5 5.5 0 0 0 2 8.5c0 2.3 1.5 4 3 5.5l7 7Z'/%3E%3C/svg%3E"); }
.summary .product-actions :is(.woosw-btn, .woosc-btn) :is(.woosw-btn-icon, .woosc-btn-icon) { display: none; }
.summary .product-actions :is(.woosw-btn, .woosc-btn):hover, .product-actions .btn--text:hover { color: var(--c-blue-hover) !important; text-decoration: underline; text-underline-offset: 3px; }
.product-actions .btn--text svg { width: 18px; height: 18px; }
.summary .product-actions :is(.woosw-btn, .woosc-btn, .btn--text):focus-visible { outline-offset: -3px; }

/* Phone order and trust strip. */
.woocommerce div.product .phone-order { gap: var(--s-3); margin: 0 0 var(--s-4); padding: var(--s-3) var(--s-4); border: 1px solid var(--c-border); background: var(--c-white); line-height: 1.4; }
.woocommerce div.product .phone-order svg { flex-basis: 20px; width: 20px; height: 20px; }
.woocommerce div.product .phone-order a { display: inline-block; font-size: var(--fs-body); font-weight: 800; color: var(--c-navy); white-space: nowrap; font-variant-numeric: tabular-nums; }
.woocommerce div.product .phone-order a:hover { color: var(--c-blue); }
.trust-strip { margin: 0; padding: 0; list-style: none; }
.trust-strip li { display: flex; align-items: center; gap: var(--s-2); padding: var(--s-3); font-size: var(--fs-meta); font-weight: 600; line-height: 1.3; color: var(--c-navy); }
.trust-strip li + li { border-left: 1px solid var(--c-border); }
.trust-strip li svg { flex: none; width: 20px; height: 20px; color: var(--c-blue); }

/* -------------------------------------------------------------------------
   Below the summary: «Αγοράστε μαζί» (upsells), tabs, related products.
   The rails are the shared .rail markup (slider.js; 20-home.css): five per
   view on desktop, a swipe row with 2.2 cards on phones.
   ------------------------------------------------------------------------- */
.woocommerce div.product :is(.upsells, .related) { min-width: 0; margin-top: var(--s-12); }
.woocommerce div.product :is(.upsells, .related) > h2 { margin: 0 0 var(--s-6); padding-bottom: var(--s-3); border-bottom: 1px solid var(--c-border); font-size: var(--fs-h3); line-height: 1.25; letter-spacing: -.01em; }
.woocommerce div.product .woocommerce-tabs { margin-top: var(--s-12); }
.woocommerce div.product .woocommerce-tabs .panel { margin: 0; }

/* -------------------------------------------------------------------------
   Sticky add-to-cart bar (P1-8): visible whenever the form is off screen
   (product.js). Fixed and transformed only: it never moves the page.
   ------------------------------------------------------------------------- */
.sticky-atc { position: fixed; left: 0; right: 0; bottom: 0; z-index: 95; display: block; padding: 0 0 env(safe-area-inset-bottom); background: var(--c-white); border-top: 1px solid var(--c-border); box-shadow: var(--shadow-2-up); visibility: hidden; transform: translateY(110%); transition: transform var(--dur-2) var(--ease), visibility 0s linear var(--dur-2); }
.sticky-atc.is-visible { visibility: visible; transform: none; transition-delay: 0s; }
.sticky-atc__inner { display: flex; align-items: center; gap: var(--s-3); padding-block: var(--s-3); }
.sticky-atc__img { flex: none; width: 48px; height: 48px; padding: var(--s-1); border-radius: var(--r-media); background: var(--g-media); object-fit: contain; mix-blend-mode: multiply; }
.sticky-atc__info { display: flex; flex: 1; flex-direction: column; min-width: 0; }
.sticky-atc__title { overflow: hidden; white-space: nowrap; text-overflow: ellipsis; font-size: var(--fs-small); font-weight: 600; line-height: 1.4; color: var(--c-navy); }
.sticky-atc .sticky-atc__price { flex: none; font-size: 20px; font-weight: 800; line-height: 1.2; color: var(--c-navy); font-variant-numeric: tabular-nums; }
.sticky-atc__price del { display: none; }
.sticky-atc__price ins { text-decoration: none; color: var(--c-orange-text); }
.sticky-atc .sticky-atc__btn { flex: none; min-height: 48px; }
/* The page ends above the bar; the back-to-top button moves up while the bar shows. */
body.single-product:has(.js-sticky-atc) { padding-bottom: calc(72px + env(safe-area-inset-bottom)); }
@media (min-width: 768px) {
	/* A transform, not "bottom": a fixed element that changes its offsets counts as a layout shift. */
	.single-product:has(.js-sticky-atc.is-visible) .to-top { transform: translateY(-72px); }
}

/* -------------------------------------------------------------------------
   Responsive
   ------------------------------------------------------------------------- */
@media (max-width: 1024px) {
	/* «Ερώτηση για το προϊόν» → «Ερώτηση» so the three actions stay on one row in a narrow summary. */
	.product-actions__long { display: none; }
	/* Trust strip: three short columns (icon over text) instead of icon-beside-text cells. */
	.trust-strip li { flex-direction: column; justify-content: flex-start; gap: var(--s-1); padding: var(--s-3) var(--s-2); text-align: center; }
}
/* Tablet: two columns as well (photo 5 : summary 6), so the H1, price and button share the first screen. */
@media (min-width: 768px) and (max-width: 1024px) {
	.woocommerce div.product { grid-template-columns: minmax(0, 5fr) minmax(0, 6fr); column-gap: var(--s-6); }
	.woocommerce div.product div.images.woocommerce-product-gallery { align-self: start; margin: 0 !important; }
}
@media (max-width: 767.98px) {
	/* Phones (P1-8): only the parent category, as a back link, so the photo, H1 and price fit the first screen. */
	.product-crumbs { padding-top: 0; }
	.product-crumbs .woocommerce-breadcrumb { margin: 0; padding: 0; }
	.product-crumbs .crumb, .product-crumbs .crumb-sep { display: none; }
	.product-crumbs .crumb:nth-last-child(3) { display: block; }
	.product-crumbs .crumb:nth-last-child(3) a { display: block; overflow: hidden; padding: var(--s-3) 0; white-space: nowrap; text-overflow: ellipsis; font-weight: 600; line-height: 20px; color: var(--c-blue); }
	.product-crumbs .crumb:nth-last-child(3) a::before { content: ""; display: inline-block; width: 16px; height: 16px; margin-right: var(--s-1); vertical-align: -3px; background: currentColor; -webkit-mask: var(--i-back) center / contain no-repeat; mask: var(--i-back) center / contain no-repeat; --i-back: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m15 18-6-6 6-6'/%3E%3C/svg%3E"); }
	.product-crumbs .crumb:nth-last-child(3) a:focus-visible { outline-offset: -3px; }
	.single-product .single-wrap { padding-top: 0; }
	.woocommerce div.product div.summary { padding-top: var(--s-4); } /* one column: the summary follows the photo */

	.woocommerce div.product .single-meta { gap: var(--s-1) var(--s-3); margin-bottom: var(--s-3); }
	.price-block { margin-bottom: var(--s-3); }
	.delivery-box { padding-inline: var(--s-3); }

	/* Form: stepper + button on one row; the button takes the rest. */
	.woocommerce div.product form.cart .quantity .qty { width: 40px; }
	.qty-step { width: 40px; }

	/* The three actions on one row down to 360 px. */
	.product-actions { justify-content: space-between; gap: 0; margin-inline: calc(var(--s-1) * -1); }
	.summary .product-actions :is(.woosw-btn, .woosc-btn), .product-actions .btn--text { padding: 0 var(--s-1) !important; }

	/* style.css stacks the strip into rows on phones; it stays three columns. */
	.trust-strip { grid-template-columns: repeat(3, minmax(0, 1fr)); }
	.trust-strip li + li { border-top: 0; border-left: 1px solid var(--c-border); }

	.woocommerce div.product :is(.upsells, .related), .woocommerce div.product .woocommerce-tabs { margin-top: var(--s-8); }
	.woocommerce div.product :is(.upsells, .related) > h2 { margin-bottom: var(--s-4); }

	.sticky-atc__img, .sticky-atc__title { display: none; }
	/* style.css lifts back-to-top to 88 px for the bar; the bar also grows by the home-indicator inset (viewport-fit=cover). */
	.single-product:has(.js-sticky-atc) .to-top { bottom: calc(88px + env(safe-area-inset-bottom)); }
	.sticky-atc__inner { padding-block: var(--s-3); }
	.sticky-atc .sticky-atc__price { flex: 1; min-width: 0; }
}

/* ==========================================================================
   50-chrome (merged from assets/css/50-chrome.css, 0.5.0)
   ========================================================================== */
/* =========================================================================
   50-chrome.css — owner: WS5 (global chrome)
   Scope: topbar, .site-header, navigation, drawer, search suggestions, footer.
   Loaded after style.css in file-name order (functions.php glob, filemtime
   version). Uses the tokens in style.css :root (frozen after WS0). WS7
   appends this file to style.css unchanged and deletes it.
   ========================================================================= */

/* ---------- Topbar: one calm line; no links by default (the pages live in the blue bar and the footer) */
.topbar__note { display: flex; align-items: center; gap: var(--s-2); min-width: 0; white-space: nowrap; }
.topbar__phone { display: none; align-items: center; gap: var(--s-2); min-height: 32px; }
.topbar__phone svg { flex: none; width: 14px; height: 14px; }
.topbar__end { display: flex; align-items: center; gap: var(--s-6); }
.topbar__pickup { display: inline-flex; align-items: center; gap: var(--s-2); margin: 0; }
.topbar__pickup svg { flex: none; width: 16px; height: 16px; color: var(--c-on-dark); }
.topbar__langs { display: flex; gap: var(--s-1); list-style: none; margin: 0; padding: 0; }
.topbar__langs a { display: inline-flex; align-items: center; min-height: 36px; padding: 0 var(--s-2); font-weight: 700; }
.topbar__langs a[aria-current] { text-decoration: underline; text-underline-offset: 3px; }

/* ---------- Blue bar: the five live pages always on one line (below 1366 they wrapped onto two). Natural width at
   15 px is 807; the steps below keep it inside the bar at 1280 and at 1025. */
.primary-nav { min-width: 0; }
.primary-nav a { white-space: nowrap; }

/* ---------- Header actions */
.header-icon__count.is-empty { display: none; }

/* ---------- Search: the bar no longer clips (the suggestions hang below it), so the end pieces carry the inner radius */
.header-search-row { display: contents; }
.header-search { position: relative; overflow: visible; }
.header-search select { border-radius: var(--r-xs) 0 0 var(--r-xs); }
.header-search button { border-radius: 0 var(--r-xs) var(--r-xs) 0; }
.header-search[aria-busy=true] button svg { opacity: .6; }

/* Suggestions panel (search.js) */
.search-suggest { position: absolute; top: calc(100% + var(--s-2)); left: -2px; right: -2px; z-index: calc(var(--z-header) + 2); max-height: min(70vh, 560px); overflow-y: auto; overscroll-behavior: contain; padding: var(--s-2); background: var(--c-white); border: 1px solid var(--c-border); border-radius: var(--r-card); box-shadow: var(--shadow-3); text-align: left; }
.search-suggest[hidden], .search-suggest__list[hidden] { display: none; }
.search-suggest__item { display: grid; grid-template-columns: 48px minmax(0, 1fr) auto; align-items: center; gap: var(--s-3); min-height: 64px; padding: var(--s-2); border-radius: var(--r-btn); color: var(--c-navy); transition: background-color var(--dur-1) var(--ease); }
.search-suggest__item:hover, .search-suggest__item[aria-selected=true], .search-suggest__all:hover, .search-suggest__all[aria-selected=true] { background: var(--c-tint); color: var(--c-navy); }
.search-suggest__item[aria-selected=true], .search-suggest__all[aria-selected=true] { box-shadow: inset 3px 0 0 var(--c-blue); }
.search-suggest__media { display: block; width: 48px; height: 48px; overflow: hidden; border-radius: var(--r-xs); background: var(--g-media); }
.search-suggest__media img { width: 100%; height: 100%; object-fit: contain; padding: var(--s-1); mix-blend-mode: multiply; }
.search-suggest__body { min-width: 0; }
.search-suggest__name { display: -webkit-box; overflow: hidden; -webkit-box-orient: vertical; -webkit-line-clamp: 2; font-size: var(--fs-small); font-weight: 600; line-height: 1.4; }
.search-suggest__name mark { background: none; color: inherit; font-weight: 800; }
.search-suggest__sku { display: block; color: var(--c-muted); font-size: var(--fs-meta); font-weight: 500; line-height: 1.4; font-variant-numeric: tabular-nums; }
.search-suggest__price { display: flex; flex-direction: column; align-items: flex-end; color: var(--c-navy); font-size: 15px; font-weight: 800; line-height: 1.2; white-space: nowrap; font-variant-numeric: tabular-nums; }
.search-suggest__price del { color: var(--c-muted); font-size: var(--fs-meta); font-weight: 500; }
.search-suggest__price .is-sale { color: var(--c-orange-text); }
.search-suggest__all { display: flex; align-items: center; justify-content: space-between; gap: var(--s-2); min-height: 48px; margin-top: var(--s-1); padding: 0 var(--s-3); border-top: 1px solid var(--c-border); border-radius: 0 0 var(--r-btn) var(--r-btn); color: var(--c-blue); font-size: var(--fs-small); font-weight: 700; }
.search-suggest__all::after { content: "→"; }
.search-suggest__msg { margin: 0; padding: var(--s-3); color: var(--c-muted); font-size: var(--fs-small); }
.search-suggest__msg:empty { display: none; }

/* ---------- Categories mega menu: 16 items before «Περισσότερες» (P0-5; the pinned homepage menu shows 11, 10-hero.css).
   Panels open on hover or from the keyboard (→, .is-active), not on mere focus: one Tab stop for the list. */
.cat-menu > ul > li:nth-child(n+14):nth-child(-n+16) { display: block; }
.cat-menu.is-pinned.is-collapsed:not(.is-open) { display: none; }
.cat-menu > ul > li:not(:hover):not(.is-active) > .children { display: none; }
.cat-menu > ul > li.is-active > .children { display: block; }
.cat-menu > ul > li.is-active > a { color: var(--c-blue); background: var(--c-gray); box-shadow: inset 3px 0 0 var(--c-blue); }
.cat-menu :focus-visible { outline-offset: -3px; } /* inside the menu box and the scrolling panels */
.cat-menu__more[hidden] { display: none; }

/* ---------- Drawer (modal dialog, P0-4) */
.drawer { padding-bottom: env(safe-area-inset-bottom); }
.drawer__head { min-height: 64px; }
.drawer__head .site-logo { padding: 0; border: 0; } /* the drawer's link rows must not underline the logo */
.drawer__head .site-logo img { width: 148px; }
.drawer__close { display: inline-flex; align-items: center; justify-content: center; margin-right: calc(var(--s-2) * -1); border-radius: var(--r-btn); }
.drawer__close svg { width: 24px; height: 24px; }
.drawer__search { position: relative; display: flex; height: 48px; margin: var(--s-4); border: 2px solid var(--c-blue); border-radius: var(--r-input); background: var(--c-white); }
.drawer__search:has(input:focus-visible) { outline: 3px solid var(--c-blue); outline-offset: 2px; }
.drawer__search input[type=search] { flex: 1; min-width: 0; padding: 0 var(--s-4); border: 0; border-radius: var(--r-xs) 0 0 var(--r-xs); background: transparent; font-size: 16px; }
.drawer__search input[type=search]:focus { outline: none; }
.drawer__search input[type=search]::placeholder { color: var(--c-muted); }
.drawer__search button { display: inline-flex; align-items: center; justify-content: center; width: 48px; border: 0; border-radius: 0 var(--r-xs) var(--r-xs) 0; background: var(--c-blue); color: var(--c-white); cursor: pointer; }
.drawer .drawer__search button:focus-visible { outline-color: var(--c-white); outline-offset: -6px; }
.drawer__search button svg { width: 20px; height: 20px; }
.drawer__search .search-suggest { box-shadow: var(--shadow-4); }
.drawer__nav + .drawer__nav { margin-top: var(--s-2); }
.drawer li.has-children > a { padding-right: var(--s-16); }
.drawer__expand { display: inline-flex; align-items: center; justify-content: center; font-size: 0; }
/* Chevron drawn in CSS (it repeats on every row): points down, up when open. */
.drawer__expand::before { content: ""; width: 8px; height: 8px; margin-top: calc(var(--s-1) * -1); border-right: 2px solid currentColor; border-bottom: 2px solid currentColor; transform: rotate(45deg); transition: transform var(--dur-2) var(--ease), margin var(--dur-2) var(--ease); }
.drawer__expand[aria-expanded=true]::before { margin-top: var(--s-1); transform: rotate(-135deg); }
.drawer .children .drawer__expand { height: 48px; border-left-color: var(--c-gray-2); }
.drawer .menu-offers > a { display: flex; align-items: center; gap: var(--s-2); }
.drawer .menu-offers > a::before { content: ""; flex: none; width: 8px; height: 8px; border-radius: 50%; background: var(--c-orange); }
.drawer__foot { display: grid; gap: var(--s-2); padding: var(--s-6) var(--s-4) var(--s-8); }
.drawer .drawer__link { display: flex; align-items: center; gap: var(--s-3); min-height: 48px; padding: var(--s-2) var(--s-4); border: 1px solid var(--c-border); border-radius: var(--r-btn); color: var(--c-navy); font-weight: 700; line-height: 1.3; }
.drawer .drawer__link svg { flex: none; width: 20px; height: 20px; color: var(--c-blue); }
.drawer .drawer__link strong { white-space: nowrap; }

/* ---------- Footer (P1-11): newsletter band, 4 columns, payment marks */
.footer-news { position: relative; background: var(--c-navy-2); border-bottom: 1px solid var(--c-line-dark); }
.footer-news__inner { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 520px); align-items: center; gap: var(--s-4) var(--s-12); padding-block: var(--s-8); }
.footer-news__title { max-width: 26ch; margin: 0; color: var(--c-white); font-size: var(--fs-h3); line-height: 1.25; letter-spacing: -.01em; }
.footer-news .newsletter-form { max-width: none; }
.footer-cols { grid-template-columns: minmax(0, 1.4fr) repeat(2, minmax(0, 1fr)) minmax(0, 1.3fr); }
.footer-col__title { margin: 0 0 var(--s-4); color: var(--c-white); font-size: var(--fs-h4); font-weight: 700; line-height: 1.3; letter-spacing: 0; }
.footer-cols li { font-size: var(--fs-small); }
.footer-cols ul:not(.footer-contact, .footer-hours) a, .footer-link-btn { display: inline-flex; align-items: center; min-height: 32px; }
.footer-link-btn { padding: 0; border: 0; background: none; color: var(--c-on-dark); font: inherit; text-align: left; cursor: pointer; transition: color var(--dur-1) var(--ease); }
.footer-link-btn:hover { color: var(--c-white); }
.footer-contact span { display: flex; flex-direction: column; align-items: flex-start; }
.site-footer .footer-directions { display: inline-flex; align-items: center; min-height: 32px; color: var(--c-white); font-weight: 600; text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: 3px; }
.footer-col--hours .btn { margin-top: var(--s-2); }
.footer-copy { margin: 0; }
.pay-marks { display: flex; flex-wrap: wrap; gap: var(--s-2); list-style: none; margin: 0; padding: 0; }
.pay-mark { display: inline-flex; align-items: center; gap: var(--s-2); min-height: 32px; padding: var(--s-1) var(--s-3); border: 1px solid var(--c-line-dark); border-radius: var(--r-xs); background: var(--c-navy-2); color: var(--c-white); font-size: var(--fs-meta); font-weight: 600; line-height: 1.2; }
.pay-mark svg { flex: none; width: 18px; height: 18px; color: var(--c-on-dark); }
.pay-mark--brand svg { width: auto; height: 16px; color: var(--c-white); }
.pay-mark--brand svg[aria-label=Mastercard] { height: 20px; }

/* ---------- WPC compare bar and table: hint.css is not loaded (functions.php, P1-13); the icon-only controls show
   their aria-label as a tooltip. :where() keeps the plugin's own positioning in charge. */
:where(.woosc-area [class*="hint--"][aria-label]) { position: relative; }
.woosc-area [class*="hint--"][aria-label]:is(:hover, :focus-visible)::after { content: attr(aria-label); position: absolute; bottom: calc(100% + var(--s-1)); left: 50%; z-index: 3; padding: var(--s-1) var(--s-2); border-radius: var(--r-xs); background: var(--c-navy); color: var(--c-white); font: 600 var(--fs-label)/1.3 var(--font); letter-spacing: 0; text-transform: none; white-space: nowrap; pointer-events: none; transform: translateX(-50%); }
.woosc-area .hint--left[aria-label]:is(:hover, :focus-visible)::after { top: 50%; right: calc(100% + var(--s-1)); bottom: auto; left: auto; transform: translateY(-50%); }
.woosc-area .hint--right[aria-label]:is(:hover, :focus-visible)::after { top: 50%; bottom: auto; left: calc(100% + var(--s-1)); transform: translateY(-50%); }
/* WPC wishlist popup: the close and remove glyphs came from its icon font (not loaded outside the wishlist page). */
.woosw-popup .woosw-popup-inner .woosw-popup-content .woosw-popup-content-top .woosw-popup-close::after, .woosw-items .woosw-item .woosw-item--remove span::before { content: "\00d7"; font-family: var(--font); font-weight: 400; }
.woosw-popup .woosw-popup-inner .woosw-popup-content .woosw-popup-content-top .woosw-popup-close::after { font-size: 28px; }
.woosw-items .woosw-item .woosw-item--remove span::before { font-size: 22px; line-height: 1; }

/* ---------- Checkout: minimal header (P1-14) */
.site-header--minimal { border-bottom: 1px solid var(--c-border); }
.site-header--minimal .header-main .container { grid-template-columns: auto minmax(0, 1fr) auto; gap: var(--s-4); min-height: 72px; }
.header-secure { display: flex; align-items: center; justify-self: center; gap: var(--s-2); margin: 0; color: var(--c-navy); font-size: var(--fs-small); font-weight: 700; line-height: 1.3; }
.header-secure svg { flex: none; width: 20px; height: 20px; color: var(--c-blue); }
.header-help { display: flex; align-items: center; gap: var(--s-2); min-height: 44px; color: var(--c-navy); font-size: var(--fs-meta); line-height: 1.25; }
.header-help:hover { color: var(--c-blue); }
.header-help svg { flex: none; width: 22px; height: 22px; color: var(--c-blue); }
.header-help__label { display: block; color: var(--c-muted); }
.header-help strong { display: block; font-size: var(--fs-small); font-weight: 700; white-space: nowrap; }

/* ---------- Responsive */
@media (max-width: 1439.98px) {
	.header-search select { width: 176px; } /* the long placeholder stays whole at 1280 */
}
@media (min-width: 1280px) and (max-width: 1365.98px) {
	.primary-nav a { padding-inline: var(--s-3); }
	.primary-nav a::after { left: var(--s-3); right: var(--s-3); }
	/* The number only; «Εξυπηρέτηση πελατών» stays in the link's accessible name. */
	.header-phone > span { font-size: 0; }
	.header-phone strong { font-size: 15px; }
}
@media (min-width: 1025px) and (max-width: 1279.98px) {
	.header-nav .container { gap: var(--s-4); }
	.cat-toggle { width: auto; } /* the dropdown keeps its 288 px */
	.primary-nav a { padding-inline: var(--s-2); font-size: var(--fs-small); }
	.primary-nav a::after { left: var(--s-2); right: var(--s-2); }
	.header-phone { display: none; } /* the topbar carries the phone link here */
}
@media (min-width: 1025px) and (max-width: 1179.98px) {
	/* The field sits between the logo and the icons here; an icon-only button leaves room for the placeholder. */
	.header-search button span { display: none; }
	.header-search button { padding: 0 var(--s-4); }
}
@media (max-width: 1279.98px) {
	/* Labels leave the screen but stay in the accessible name («Καλάθι», «Σύνδεση Λογαριασμός»). */
	.header-icon__label { display: block; position: absolute; width: 1px; height: 1px; padding: 0; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
	.topbar__phone-text { display: none; }
	.topbar__phone { display: inline-flex; }
}
@media (max-width: 1024px) {
	/* Sticky header = the 64 px bar. The search row hangs below it (space reserved by the header's margin) and slides
	   up behind the bar on scroll down, back on scroll up: transform only, so nothing below moves (CLS 0). */
	.header-main .container { min-height: 64px; }
	.site-header:not(.site-header--minimal) { margin-bottom: 60px; }
	.header-main::before { content: ""; position: absolute; inset: 0; z-index: -1; background: var(--c-white); }
	.header-search-row { display: block; position: absolute; top: 100%; left: 0; right: 0; z-index: -2; padding: 0 var(--s-6) var(--s-3); background: var(--c-white); transition: transform var(--dur-2) var(--ease), visibility 0s linear 0s; }
	.header-main .header-search { max-width: 760px; height: 48px; margin: 0 auto; }
	.site-header.is-scrolled .header-search-row { box-shadow: var(--shadow-2); }
	.site-header.is-search-hidden .header-search-row { transform: translateY(-100%); visibility: hidden; transition: transform var(--dur-2) var(--ease), visibility 0s linear var(--dur-2); }
	.footer-cols { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 1023.98px) {
	/* The number only (the label pushed into the pickup note at 768); the label stays in the accessible name. */
	.topbar__phone-label { position: absolute; width: 1px; height: 1px; padding: 0; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
}
@media (max-width: 767.98px) {
	.topbar .container { min-height: 32px; justify-content: center; }
	.topbar__end { display: none; }
	.topbar__phone { gap: var(--s-1); }
	.header-main .container { gap: var(--s-2); }
	.header-icons { gap: 0; }
	.header-icon { min-width: 44px; min-height: 44px; }
	.site-logo img { width: 140px; }
	.header-search-row { padding: 0 var(--s-4) var(--s-3); }
	.search-suggest { max-height: 60dvh; }
	.search-suggest__item { grid-template-columns: 44px minmax(0, 1fr) auto; gap: var(--s-2); }
	.search-suggest__media { width: 44px; height: 44px; }
	.footer-news__inner { grid-template-columns: minmax(0, 1fr); padding-block: var(--s-6); }
	.footer-cols { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--s-8) var(--s-4); }
	.footer-col--brand, .footer-col--hours { grid-column: 1 / -1; }
	/* Links ≥ 44 px tall on touch (24 today). */
	.footer-cols ul:not(.footer-contact, .footer-hours) a, .footer-link-btn, .site-footer .footer-directions { min-height: 44px; }
	.footer-cols li { padding: 0; }
	.footer-contact li { padding: var(--s-1) 0; }
	.footer-contact a { display: inline-flex; align-items: center; min-height: 44px; }
	.footer-contact svg { margin-top: var(--s-3); }
	.footer-bottom .container { flex-direction: column; align-items: flex-start; gap: var(--s-4); padding-top: var(--s-6); padding-bottom: calc(var(--s-6) + env(safe-area-inset-bottom)); }
	/* Checkout on phones: logo and phone, then the reassurance line as a slim full-width strip (it wrapped onto three
	   lines between them). Not sticky: the form needs the height. */
	.site-header--minimal { position: relative; top: auto; }
	.site-header--minimal .header-main .container { grid-template-columns: auto auto; justify-content: space-between; gap: 0 var(--s-4); min-height: 0; }
	.site-header--minimal .site-logo { padding-block: var(--s-3); }
	.site-header--minimal .site-logo img { width: 128px; }
	.site-header--minimal .header-help { grid-area: 1 / 2; }
	.header-secure { grid-area: 2 / 1 / auto / -1; justify-self: stretch; justify-content: center; min-height: 36px; margin: 0 calc(var(--s-4) * -1); padding: 0 var(--s-4); border-top: 1px solid var(--c-border); background: var(--c-gray); font-size: var(--fs-meta); }
	.header-secure svg { width: 16px; height: 16px; }
	.header-help__label { display: none; }
}
@media (max-width: 389.98px) {
	.site-logo img { width: 124px; }
}

/* ==========================================================================
   60-parity (merged from assets/css/60-parity.css, 0.5.0)
   ========================================================================== */
/* =========================================================================
   60-parity.css — owner: WS6 (old-site parity). WS7 appends it to style.css.
   News archive and posts, content-page side column, embeds, contact/offer
   forms, newsletter form internals, minimum-quantity notice, checkout copy.
   Uses the WS0 tokens only (style.css :root).
   ========================================================================= */

/* Anchor targets and sticky columns clear the sticky header (140 px scrolled at ≥1024, 120 px below; WP admin bar +32). */
:root { --parity-sticky-top: calc(140px + var(--s-4)); }
.admin-bar { --parity-sticky-top: calc(172px + var(--s-4)); }

/* ---------- Content pages, news: side column at ≥1024 (live: Kärcher side banners, P2-10) */
.content-aside { display: none; }
@media (min-width: 1024px) {
	.content-layout { display: grid; grid-template-columns: minmax(0, 1fr) 288px; gap: var(--s-12); align-items: start; }
	.content-layout > .content-main { min-width: 0; }
	.content-aside { display: block; position: sticky; top: var(--parity-sticky-top); }
}
/* The banners block is a page-wide section (section padding, .container gutters): flush in the 288 px column, so the
   banner starts on the first line of the content and ends on the container edge (as the header's last icon). */
.content-aside .banners { padding-block: 0; }
.content-aside .banners .container { max-width: none; padding: 0; }

/* Page-hero T-mark on these templates (one-line hero, about 140 px): centred and never taller than the bar, so it is
   always shown whole (P1-6 k); WS3's rule places it 24 px from the top at 120 px, which cut its bottom edge here. */
.page-hero--content::after { top: 50%; height: min(120px, calc(100% - var(--s-4))); transform: translateY(-50%); }

/* 768–1024: the content starts on the same line as the breadcrumb and H1 (.container 24 px, style.css sets 16 here). */
@media (min-width: 768px) and (max-width: 1024px) {
	.container.content-wrap { padding-left: var(--s-6); padding-right: var(--s-6); }
}

.page-hero__intro { max-width: 60ch; margin-top: var(--s-2); color: var(--c-muted); }
.page-hero__intro p { margin: 0; }

/* ---------- Embeds: company videos (click-to-load posters, plugin content.php) */
.entry-content iframe { display: block; width: 100%; max-width: 100%; border: 0; border-radius: var(--r-card); background: var(--c-gray); }
.tsixlis-videos { display: grid; gap: var(--s-6); max-width: 720px; margin: var(--s-8) 0; }
.tsixlis-videos .wp-block-embed { margin: 0; }
.tsixlis-videos .wp-block-embed__wrapper { position: relative; aspect-ratio: 16 / 9; }
.tsixlis-videos .wp-block-embed__wrapper::before { display: none; }
.tsixlis-videos iframe { position: absolute; inset: 0; width: 100%; height: 100%; min-height: 0; }
.video-facade { position: relative; display: block; width: 100%; aspect-ratio: 16 / 9; padding: 0; overflow: hidden; border: 0; border-radius: var(--r-card); background: var(--c-navy); color: var(--c-white); font: inherit; text-align: left; cursor: pointer; }
.tsixlis-videos .video-facade { position: absolute; inset: 0; height: 100%; aspect-ratio: auto; }
.video-facade img { width: 100%; height: 100%; object-fit: cover; opacity: .82; transition: opacity var(--dur-2) var(--ease); }
.video-facade::after { content: ""; position: absolute; inset: 45% 0 0; background: linear-gradient(180deg, rgba(11, 37, 69, 0) 0%, rgba(11, 37, 69, .82) 100%); pointer-events: none; }
.video-facade__play { position: absolute; top: 50%; left: 50%; width: 68px; height: 68px; margin: -34px 0 0 -34px; border-radius: 50%; background: var(--c-white); box-shadow: var(--shadow-3); transition: transform var(--dur-2) var(--ease); }
.video-facade__play::before { content: ""; position: absolute; top: 50%; left: 50%; margin: -12px 0 0 -7px; border-style: solid; border-width: 12px 0 12px 20px; border-color: transparent transparent transparent var(--c-navy); }
.video-facade__title { position: absolute; z-index: 1; left: var(--s-4); right: var(--s-4); bottom: var(--s-3); font-size: var(--fs-small); font-weight: 700; line-height: 1.35; }
.video-facade:focus-visible { outline: 3px solid var(--c-blue); outline-offset: 3px; }
@media (hover: hover) and (pointer: fine) {
	.video-facade:hover img { opacity: 1; }
	.video-facade:hover .video-facade__play { transform: scale(1.06); }
}

/* ---------- News cards (archive.php, index.php): 16:9 media on --g-media (§6 #22); the T-mark when there is no photo */
.post-grid { display: grid; gap: var(--s-4); grid-template-columns: minmax(0, 1fr); }
@media (min-width: 768px) { .post-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--s-6); } }
@media (min-width: 1024px) { .post-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
/* With the 288 px side column, three cards would be ~200 px wide below 1280: two then. */
@media (min-width: 1024px) and (max-width: 1279.98px) { .content-layout .post-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }

.post-card { position: relative; display: flex; flex-direction: column; overflow: hidden; background: var(--c-white); border: 1px solid var(--c-border); border-radius: var(--r-card); transition: border-color var(--dur-2) var(--ease), box-shadow var(--dur-2) var(--ease); }
/* Keyboard focus: one ring around the whole clickable card, not a broken ring on a wrapped title plus a blue border
   (browsers without :has() keep the global ring on the link). */
@supports selector(:has(*)) {
	.post-card__title a:focus-visible { outline: none; }
	.post-card:has(.post-card__title a:focus-visible) { outline: 3px solid var(--c-blue); outline-offset: 2px; }
}
@media (hover: hover) and (pointer: fine) {
	.post-card:hover { border-color: var(--c-border-strong); box-shadow: var(--shadow-3); }
	.post-card:hover .post-card__title a { color: var(--c-blue); }
	.post-card:hover .post-card__media { background: var(--g-media-hover); }
}
.post-card__media { position: relative; display: block; aspect-ratio: 16 / 9; overflow: hidden; background: var(--g-media); border-bottom: 1px solid var(--c-border); }
.post-card__media img { width: 100%; height: 100%; object-fit: cover; }
.post-card__media--mark::before { content: ""; position: absolute; top: 50%; left: 50%; width: 64px; height: 58px; margin: -29px 0 0 -32px; background: var(--c-blue); opacity: .1; -webkit-mask: var(--t-mark) center / contain no-repeat; mask: var(--t-mark) center / contain no-repeat; }
.post-card__body { display: flex; flex: 1; flex-direction: column; gap: var(--s-2); padding: var(--s-4); }
.post-card__date { font-size: var(--fs-meta); font-weight: 600; line-height: 1.4; color: var(--c-muted); }
.post-card__title { margin: 0; font-size: var(--fs-h4); line-height: 1.3; letter-spacing: 0; }
.post-card__title a { color: var(--c-navy); }
.post-card__title a::after { content: ""; position: absolute; inset: 0; } /* Whole card clickable; one link in the tab order. */
.post-card__excerpt { display: -webkit-box; margin: 0; overflow: hidden; overflow-wrap: anywhere; font-size: var(--fs-small); color: var(--c-muted); -webkit-line-clamp: 3; -webkit-box-orient: vertical; }
@media (max-width: 767.98px) {
	/* One column: no row to keep even, so the empty panels would only add ~200 px per card (35 of 36 posts). */
	.post-card__media--mark { display: none; }
	.post-card__body { padding: var(--s-3) var(--s-4); }
}

/* ---------- Pagination (archive.php, index.php: the_posts_pagination) — 44 px targets (§1.3) */
.navigation.pagination { margin-top: var(--s-8); }
.nav-links { display: flex; flex-wrap: wrap; align-items: center; gap: var(--s-2); }
.nav-links .page-numbers { display: inline-flex; align-items: center; justify-content: center; min-width: 44px; min-height: 44px; padding: 0 var(--s-3); font-size: var(--fs-small); font-weight: 700; color: var(--c-blue); background: var(--c-white); border: 1px solid var(--c-border); border-radius: var(--r-btn); transition: border-color var(--dur-1) var(--ease), background-color var(--dur-1) var(--ease); }
.nav-links .page-numbers.current { color: var(--c-white); background: var(--c-blue); border-color: var(--c-blue); }
.nav-links .page-numbers.dots { border-color: transparent; background: none; color: var(--c-muted); }
@media (hover: hover) and (pointer: fine) {
	.nav-links a.page-numbers:hover { border-color: var(--c-blue); background: var(--c-tint); }
}

/* ---------- Single news post */
.post-meta { margin: var(--s-2) 0 0; font-size: var(--fs-meta); font-weight: 600; color: var(--c-muted); }
.post-single .entry-content { max-width: 72ch; }
.post-single .entry-content p { text-wrap: pretty; }
.post-single__media { max-width: 72ch; margin: 0 0 var(--s-6); overflow: hidden; background: var(--c-gray); border-radius: var(--r-card); }
.post-single__media img { display: block; width: 100%; height: auto; }
.post-single__back { margin: var(--s-8) 0 0; }
/* Back link: the .link-arrow look with the arrow in front, pointing back. */
.link-back { display: inline-flex; align-items: center; gap: var(--s-1); min-height: 44px; font-weight: 700; font-size: var(--fs-small); color: var(--c-blue); }
.link-back::before { content: "←"; transition: transform var(--dur-2) var(--ease); }
@media (hover: hover) and (pointer: fine) { .link-back:hover::before { transform: translateX(-3px); } }

/* ---------- Search results / 404 (index.php) */
.search-list { margin: 0 0 var(--s-8); padding: 0; list-style: none; border-top: 1px solid var(--c-border); }
.search-list__item { display: flex; justify-content: space-between; gap: var(--s-4); padding: var(--s-3) 0; border-bottom: 1px solid var(--c-border); }
.search-list__item a { font-weight: 600; }
.search-list__type { flex: none; font-size: var(--fs-meta); color: var(--c-muted); }
/* .empty-state (WS3) is a centred flex column: the form would shrink to its content and cut the placeholder. */
.empty-state__search { display: flex; align-self: stretch; gap: var(--s-2); width: 100%; max-width: 560px; margin: var(--s-4) auto; }
@media (max-width: 479.98px) { .empty-state__search { flex-direction: column; } } /* The placeholder fits whole. */
.empty-state__search input[type="search"] { flex: 1; min-width: 0; min-height: 48px; padding: 0 var(--s-4); font: inherit; color: var(--c-navy); background: var(--c-white); border: 1px solid var(--c-border-strong); border-radius: var(--r-input); }

/* ---------- Contact / offer forms (plugin forms.php) */
.tsixlis-form { max-width: 760px; margin-top: var(--s-8); }
.tsixlis-form, .tsixlis-form__notice, .tsixlis-field { scroll-margin-top: var(--parity-sticky-top); }
.tsixlis-form__section { display: grid; gap: 0 var(--s-4); margin: 0 0 var(--s-6); padding: var(--s-4) var(--s-4) 0; border: 1px solid var(--c-border); border-radius: var(--r-card); }
.tsixlis-form__section legend { padding: 0 var(--s-2); font-size: var(--fs-h4); font-weight: 700; color: var(--c-navy); }
@media (min-width: 768px) {
	.tsixlis-form__section { grid-template-columns: repeat(2, minmax(0, 1fr)); padding: var(--s-6) var(--s-6) var(--s-2); }
	.tsixlis-field--textarea, .tsixlis-field--wide { grid-column: 1 / -1; }
}
.tsixlis-field { display: flex; flex-direction: column; gap: var(--s-1); margin: 0 0 var(--s-4); }
.tsixlis-field label { font-size: var(--fs-small); font-weight: 600; color: var(--c-navy); }
.tsixlis-field__req { color: var(--c-error); }
.tsixlis-field input, .tsixlis-field select, .tsixlis-field textarea { width: 100%; min-height: 48px; padding: var(--s-3); font: inherit; color: var(--c-navy); background: var(--c-white); border: 1px solid var(--c-border-strong); border-radius: var(--r-input); box-shadow: var(--shadow-1); }
.tsixlis-field textarea { min-height: 144px; resize: vertical; }
.tsixlis-field input:focus-visible, .tsixlis-field select:focus-visible, .tsixlis-field textarea:focus-visible { outline: 3px solid var(--c-blue); outline-offset: 2px; border-color: var(--c-blue); }
.tsixlis-field.has-error input, .tsixlis-field.has-error select, .tsixlis-field.has-error textarea { border-color: var(--c-error); }
.tsixlis-field__error { font-size: var(--fs-meta); font-weight: 600; color: var(--c-error); }
.tsixlis-form__privacy { margin: 0 0 var(--s-4); font-size: var(--fs-meta); color: var(--c-muted); }
.tsixlis-form__privacy a { font-weight: 600; text-decoration: underline; text-underline-offset: 2px; }
.tsixlis-form__actions { margin: 0; }
.tsixlis-form__notice { margin: 0 0 var(--s-6); padding: var(--s-4); font-weight: 600; color: var(--c-navy); background: var(--c-tint); border-left: 4px solid var(--c-success); border-radius: var(--r-btn); }
.tsixlis-form__notice:focus { outline: none; } /* Focused by script after a reload (screen readers), never by the user. */
.tsixlis-form__notice--error { background: var(--c-gray); border-left-color: var(--c-error); }
.tsixlis-form__notice p, .tsixlis-form__notice ul { margin: 0; }
.tsixlis-form__notice ul { margin-top: var(--s-2); padding-left: var(--s-6); font-weight: 500; }
.tsixlis-form__notice a { color: var(--c-error); text-decoration: underline; }
.tsixlis-form__hp, .newsletter-form__hp { position: absolute !important; left: -10000px; width: 1px; height: 1px; overflow: hidden; }

/* ---------- Newsletter form internals (plugin newsletter.php); WS5 owns the band around it */
.newsletter-form { position: relative; max-width: 520px; }
.newsletter-form__row { display: flex; gap: var(--s-2); }
.newsletter-form__input { flex: 1 1 auto; min-width: 0; min-height: 48px; padding: 0 var(--s-4); font: inherit; color: var(--c-navy); background: var(--c-white); border: 1px solid var(--c-border-strong); border-radius: var(--r-input); }
.newsletter-form__button { flex: none; min-height: 48px; }
.newsletter-form__note { margin: var(--s-2) 0 0; font-size: var(--fs-meta); line-height: 1.5; color: var(--c-muted); }
.newsletter-form__note a { color: inherit; font-weight: 600; text-decoration: underline; text-underline-offset: 2px; }
/* The live region stays rendered (an element added with display:none is not announced); empty, it takes no space. */
.newsletter-form__msg { margin: var(--s-2) 0 0; font-size: var(--fs-small); font-weight: 600; }
.newsletter-form__msg:empty { margin: 0; }
/* On a dark band (navy footer): light text, orange focus ring (§1.6). The light variant keeps the global blue ring. */
.newsletter-form--dark .newsletter-form__input:focus-visible { outline: 3px solid var(--c-orange); outline-offset: 2px; }
.newsletter-form--dark .newsletter-form__note { color: var(--c-on-dark); }
.newsletter-form--dark .newsletter-form__note a, .newsletter-form--dark .newsletter-form__msg { color: var(--c-white); }
@media (max-width: 479.98px) {
	.newsletter-form__row { flex-direction: column; }
	.newsletter-form__button { width: 100%; }
}
/* Confirmation / unsubscribe page (the e-mail links). */
.newsletter-action { max-width: 60ch; padding: var(--s-8) 0 var(--s-12); }

/* ---------- Wishlist page (page.php): WPC repeats the page title as the list name (single list, nothing to switch). */
.entry-content > .woosw-list > .woosw-switcher:not(:has(select)) { display: none; }

/* ---------- Product page: minimum order quantity (live notice, parity #15) */
/* Same panel as the delivery box above it (40-product.css .delivery-box): --c-tint, --r-card. */
.tsixlis-min-qty { flex: 1 0 100%; width: 100%; margin: 0 0 var(--s-3); padding: var(--s-3) var(--s-4); font-size: var(--fs-small); font-weight: 600; line-height: 1.45; color: var(--c-navy); background: var(--c-tint); border-radius: var(--r-card); }

/* ---------- Cart / checkout blocks (P1-14, parity #4, WS6 part) */
/* The product's short description repeated under every line item (live shows only the name and options). */
.wc-block-components-product-metadata__description { display: none; }
/* Links inside the tick labels (terms, «ως εξής»): underlined, not told apart by colour only (WCAG 1.4.1). */
.wc-block-components-checkbox__label a { text-decoration: underline; text-underline-offset: 2px; }
/* The two ticks as one group: a line above the GDPR tick (last order field), the terms tick right after it (the block's
   own separator is off, task 2026-10-04-checkout-ticks). Directly above the order button from 700 px; on phones
   WooCommerce puts its order summary with the total between the ticks and the button (kept: the total is the last
   thing read before paying). */
.wc-block-checkout__order-fields .wc-block-components-address-form__tsixlis-gdpr-consent { margin-top: var(--s-6); padding-top: var(--s-6); border-top: 1px solid var(--c-border); }
.wc-block-checkout__order-fields:has(.wc-block-components-address-form__tsixlis-gdpr-consent) { margin-bottom: var(--s-4); padding-bottom: 0; }

/* ==========================================================================
   70-a (merged from assets/css/70-a.css, 0.6.0: reference UX: plaisio/kotsovolos/public)
   ========================================================================== */
/* =========================================================================
   70-a.css — owner: workstream A (header, search, mega menu, drawer, floating
   controls). docs/reference-plan.md A1–A4. Loaded after style.css (file-name
   order). Tokens from style.css :root; the literal values below are the ones
   the plan names (gap 10, 220 ms, 3 px photo inset, #fdf0e4) or derived from
   them (7 px makes a photo card 64 px; -10 px lines 44 px icon buttons up with
   the band text). Prefixes: .mnav-*, .ci, .cat-all, .search-suggest__group
   (contract K8).
   ========================================================================= */

/* ---------- A4. Header offset: the visible bottom edge of the stuck header (contract K5) */
:root { --header-offset: 140px; }
@media (max-width: 1024px) {
	:root { --header-offset: 124px; }
	:root:has(.site-header.is-search-hidden) { --header-offset: 64px; }
}

/* ---------- A2. Mega menu: a line icon before each top-level name; the box is reserved, so nothing shifts */
.cat-menu > ul > li > a { justify-content: flex-start; gap: 10px; line-height: 1.3; }
.cat-menu > ul > li > a .ci { flex: none; width: 20px; height: 20px; color: var(--c-blue); }
.cat-menu > ul > li.has-children > a::after { flex: none; margin-left: auto; }
/* «Δείτε όλη την κατηγορία →» heads the flyout across all its columns. */
.cat-menu > ul > li > .children > li.cat-all { column-span: all; margin-bottom: var(--s-4); padding-bottom: var(--s-2); border-bottom: 1px solid var(--c-border); }
.cat-menu > ul > li > .children > li.cat-all > a { display: inline-flex; min-height: 0; padding: var(--s-1) 0; }

/* ---------- A1. Mobile drawer: a stack of panels, each a blue band over a scrolling body.
   style.css has generic ".drawer a" and ".drawer ul" rules (padding, borders), so every rule here is scoped as
   .drawer .mnav-* and resets them. */
.drawer { display: flex; flex-direction: column; padding: 0; overflow: hidden; }
.drawer .mnav-stack { position: relative; flex: 1 1 auto; min-height: 0; overflow: hidden; }
.drawer .mnav-panel { position: absolute; inset: 0; display: flex; flex-direction: column; background: var(--c-white); transform: translateX(100%); visibility: hidden; transition: transform 220ms var(--ease), visibility 0s linear 220ms; }
.drawer .mnav-panel.is-current { transform: none; visibility: visible; transition-delay: 0s; }
.drawer .mnav-panel.is-behind { transform: translateX(-24%); }

/* Band: brand blue, no orange; on it the focus ring is orange (dark-surface rule). */
.drawer .mnav-band { flex: none; padding: calc(env(safe-area-inset-top) + var(--s-1)) var(--s-4) var(--s-3); background: var(--c-blue); color: var(--c-white); }
.drawer .mnav-band :focus-visible { outline-color: var(--c-orange); }
.drawer .mnav-band__row { display: flex; align-items: center; justify-content: space-between; gap: var(--s-2); min-height: 48px; }
.drawer .mnav-store { display: inline-flex; align-items: center; gap: var(--s-2); min-width: 0; min-height: 44px; padding: 0; border: 0; color: var(--c-white); font-size: var(--fs-btn); font-weight: 600; line-height: 1.2; }
.drawer .mnav-store:hover { color: var(--c-white); text-decoration: underline; text-underline-offset: 3px; }
.drawer .mnav-store svg { flex: none; width: 20px; height: 20px; }
.drawer .mnav-store svg:last-child { width: 16px; height: 16px; opacity: .8; }
.drawer .mnav-iconbtn { display: inline-flex; align-items: center; justify-content: center; flex: none; width: 44px; height: 44px; margin: 0 -10px 0 0; padding: 0; border: 0; border-radius: var(--r-btn); background: none; color: var(--c-white); cursor: pointer; transition: background-color var(--dur-1) var(--ease); }
.drawer .mnav-back { margin: 0 0 0 -10px; } /* the glyph lines up with the text below, the hit area stays 44 px */
.drawer .mnav-iconbtn svg { width: 24px; height: 24px; }
.drawer .mnav-tabs { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--s-2); }
.drawer .mnav-tab { display: inline-flex; align-items: center; justify-content: center; gap: var(--s-2); min-width: 0; min-height: 48px; padding: 0 var(--s-3); border: 0; border-radius: var(--r-btn); background: transparent; box-shadow: inset 0 0 0 1px var(--c-line-dark); color: var(--c-white); font-size: var(--fs-btn); font-weight: 700; line-height: 1.2; cursor: pointer; transition: background-color var(--dur-1) var(--ease); }
.drawer .mnav-tab[aria-selected=true] { background: var(--c-navy); box-shadow: none; }
.drawer .mnav-tab svg { flex: none; width: 20px; height: 20px; }
@media (hover: hover) {
	.drawer .mnav-iconbtn:hover, .drawer .mnav-tab[aria-selected=false]:hover { background: var(--c-line-dark); }
}
/* Sub-panel head: the title and a white «Δείτε όλα» (BRAND buttons keep 6 px, no pill). */
.drawer .mnav-band__head { display: flex; align-items: center; gap: var(--s-3); padding-top: var(--s-1); }
.drawer .mnav-title { display: -webkit-box; flex: 1 1 auto; min-width: 0; margin: 0; overflow: hidden; -webkit-box-orient: vertical; -webkit-line-clamp: 2; color: var(--c-white); font-size: 20px; font-weight: 700; line-height: 1.2; letter-spacing: -.01em; }
.drawer .mnav-band .mnav-all { display: inline-flex; flex: none; padding: var(--s-1) var(--s-4); border: 1.5px solid var(--c-white); color: var(--c-navy); font-weight: 700; }
.drawer .mnav-band .mnav-all:hover { border-color: var(--c-gray); color: var(--c-navy); }
.drawer .mnav-band .mnav-all:focus-visible { outline-offset: 2px; } /* on the blue, not inside the white (orange on white is 2.7:1) */

/* Body: the only part that scrolls. */
.drawer .mnav-body { flex: 1 1 auto; min-height: 0; overflow-y: auto; overscroll-behavior: contain; padding: var(--s-4) var(--s-4) calc(var(--s-6) + env(safe-area-inset-bottom)); }
.drawer .mnav-tabpanel[hidden] { display: none; }

/* Quick tiles: three, tint on white, ≤ 72 px. */
.drawer .mnav-tiles { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--s-2); margin-bottom: var(--s-4); }
.drawer .mnav-tile { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: var(--s-1); min-width: 0; min-height: 72px; padding: var(--s-1); border: 0; border-radius: var(--r-card); background: var(--c-tint); color: var(--c-navy); font-size: var(--fs-meta); font-weight: 600; line-height: 1.25; text-align: center; hyphens: auto; -webkit-tap-highlight-color: transparent; transition: background-color var(--dur-1) var(--ease); }
.drawer .mnav-tile:hover { color: var(--c-navy); }
.drawer .mnav-tile:active { background: var(--c-gray-2); }
.drawer .mnav-tile svg { flex: none; width: 22px; height: 22px; color: var(--c-blue); }
/* 360 px phones: 12 px more width across the tiles keeps «Η παραγγελία μου» on two lines. */
@media (max-width: 374px) {
	.drawer .mnav-body { padding-inline: var(--s-3); }
	.drawer .mnav-tiles { gap: var(--s-1); }
}

/* Cards: full width, 60 px (64 with a photo), radius 10, 1 px border. */
.drawer .mnav-list { display: grid; gap: var(--s-2); margin: 0; padding: 0; list-style: none; }
.drawer .mnav-card { display: flex; align-items: center; gap: var(--s-3); width: 100%; min-height: 60px; margin: 0; padding: var(--s-2) var(--s-3) var(--s-2) var(--s-2); border: 1px solid var(--c-border); border-radius: var(--r-card); background: var(--c-white); color: var(--c-navy); font: inherit; font-size: var(--fs-btn); font-weight: 600; line-height: 1.3; text-align: left; cursor: pointer; -webkit-tap-highlight-color: transparent; transition: background-color var(--dur-1) var(--ease), border-color var(--dur-1) var(--ease); }
.drawer .mnav-card:hover { color: var(--c-navy); }
.drawer .mnav-card:active { background: var(--c-tint); }
.drawer .mnav-card:focus-visible { outline: 3px solid var(--c-blue); outline-offset: -3px; }
@media (hover: hover) {
	.drawer .mnav-card:hover { border-color: var(--c-border-strong); }
	.drawer .mnav-tile:hover { background: var(--c-gray-2); }
}
.drawer .mnav-card__name { display: -webkit-box; flex: 1 1 auto; min-width: 0; overflow: hidden; -webkit-box-orient: vertical; -webkit-line-clamp: 2; }
.drawer .mnav-card.has-chevron::after { content: ""; flex: none; width: 8px; height: 8px; margin: 0 var(--s-1) 0 var(--s-1); border-top: 2px solid var(--c-blue); border-right: 2px solid var(--c-blue); transform: rotate(45deg); }
.drawer .mnav-ico { display: inline-flex; align-items: center; justify-content: center; flex: none; width: 40px; height: 40px; border-radius: 50%; background: var(--c-tint); color: var(--c-blue); }
.drawer .mnav-ico svg, .drawer .mnav-thumb svg { width: 22px; height: 22px; }
.drawer .mnav-ico.is-deal { background: #fdf0e4; color: var(--c-orange-text); } /* SUPER DEALS: the drawer's one orange accent */
.drawer .mnav-card:has(> .mnav-thumb) { min-height: 64px; padding: 7px var(--s-3) 7px 7px; }
.drawer .mnav-thumb { display: inline-flex; align-items: center; justify-content: center; flex: none; width: 48px; height: 48px; overflow: hidden; border-radius: var(--r-media); background: var(--g-media); }
.drawer .mnav-thumb img { width: 48px; height: 48px; padding: 3px; object-fit: contain; mix-blend-mode: multiply; }
.drawer .mnav-thumb.is-icon { background: var(--c-tint); color: var(--c-blue); }

/* «Δείτε επίσης»: the primary menu as plain 48 px rows («Σε προσφορά» keeps its orange dot from style.css). */
.drawer .mnav-more { margin-top: var(--s-6); }
.drawer .mnav-more .drawer__title { padding: 0 0 var(--s-1); }
.drawer .mnav-more a { display: flex; align-items: center; gap: var(--s-2); min-height: 48px; padding: var(--s-2) var(--s-1); border-bottom: 1px solid var(--c-border); color: var(--c-navy); font-weight: 600; line-height: 1.3; }
.drawer .mnav-more li:last-child > a { border-bottom: 0; }

/* «Υπηρεσίες»: cards with a meta line, then the opening hours. */
.drawer .mnav-card__text { display: flex; flex: 1 1 auto; flex-direction: column; gap: 2px; min-width: 0; }
.drawer .mnav-card__meta { color: var(--c-muted); font-size: var(--fs-meta); font-weight: 500; line-height: 1.35; }
.drawer .mnav-hours { margin-top: var(--s-4); padding: var(--s-4); border-radius: var(--r-card); background: var(--c-gray); }
.drawer .mnav-hours__title { display: flex; align-items: center; gap: var(--s-2); margin: 0 0 var(--s-2); color: var(--c-navy); font-size: var(--fs-btn); font-weight: 700; line-height: 1.3; letter-spacing: 0; }
.drawer .mnav-hours__title svg { flex: none; width: 20px; height: 20px; color: var(--c-blue); }
.drawer .mnav-hours ul { display: grid; gap: var(--s-1); margin: 0; }
.drawer .mnav-hours li { display: flex; justify-content: space-between; gap: var(--s-3); color: var(--c-muted); font-size: var(--fs-small); line-height: 1.4; }
.drawer .mnav-hours strong { flex: none; color: var(--c-navy); font-weight: 700; font-variant-numeric: tabular-nums; }
.drawer .mnav-hours .link-arrow { display: inline-flex; margin-top: var(--s-1); padding: 0; border: 0; color: var(--c-blue); font-weight: 700; }

/* ---------- A3. Search: «Δημοφιλείς κατηγορίες» on an empty field, category rows above the products */
.search-suggest__group { margin: 0; padding: var(--s-2) var(--s-2) var(--s-1); color: var(--c-muted); font-size: var(--fs-label); font-weight: 700; letter-spacing: var(--tr-label); line-height: 1.4; text-transform: uppercase; }
.search-suggest__group ~ .search-suggest__group { margin-top: var(--s-1); border-top: 1px solid var(--c-border); padding-top: var(--s-3); }
.search-suggest__item--cat { grid-template-columns: 40px minmax(0, 1fr); min-height: 56px; }
.search-suggest__item--cat .search-suggest__media { width: 40px; height: 40px; border-radius: var(--r-media); }
.search-suggest__item--cat .search-suggest__media.is-icon { display: inline-flex; align-items: center; justify-content: center; border-radius: 50%; background: var(--c-tint); color: var(--c-blue); }
.search-suggest__item--cat .search-suggest__media svg { width: 22px; height: 22px; }
.search-suggest__parent { color: var(--c-muted); font-weight: 500; }

/* ---------- A4. Back-to-top clears the sticky add-to-cart bar (its height comes from 72-c.css, contract K6) and
   hides behind the open drawer. Transforms and static offsets only: a fixed element whose offsets change while you
   scroll counts as a layout shift. */
@media (max-width: 767.98px) {
	.single-product:has(.js-sticky-atc) .to-top { bottom: calc(var(--atc-bar-h, 72px) + var(--s-3) + env(safe-area-inset-bottom)); }
}
@media (min-width: 768px) {
	.single-product:has(.js-sticky-atc.is-visible) .to-top { transform: translateY(calc(var(--s-4) - var(--atc-bar-h, 72px) - var(--s-3))); }
}
body:has(.drawer.is-open) .to-top { visibility: hidden; opacity: 0; pointer-events: none; }

/* ==========================================================================
   71-b (merged from assets/css/71-b.css, 0.6.0: reference UX: plaisio/kotsovolos/public)
   ========================================================================== */
/* =========================================================================
   71-b.css — owner: workstream B (listing, cards, homepage rails)
   docs/reference-plan.md B2 delivery line · B3 availability toggle and sticky
   toolbar · B4 grid / list view. Prefixes: .card-ship, .shop-avail,
   .card--list (+ .card-specs, .products--list), .view-toggle.
   Loaded after style.css in file-name order; tokens from style.css :root only.
   Card selectors keep the unscoped twin (editor previews) and the
   .site-content form that matches WooCommerce's (0,4,2) rules.
   ========================================================================= */

/* -------------------------------------------------------------------------
   B2. Delivery line under the stock line: truck 16 + 13/500 muted, one line.
   The empty line of sold-out cards keeps the prices of a row level.
   ------------------------------------------------------------------------- */
ul.products li.product .card-ship, .site-content ul.products li.product .card-ship {
	position: relative; display: block; min-width: 0; min-height: calc(var(--fs-meta) * 1.4); margin-top: var(--s-1); padding-left: calc(16px + var(--s-1));
	overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: var(--fs-meta); font-weight: 500; line-height: 1.4; color: var(--c-muted); font-variant-numeric: tabular-nums;
}
/* Lucide truck (as inc/icons.php) as a mask: one element per card instead of an inline SVG. */
.card-ship:not(:empty)::before {
	content: ""; position: absolute; left: 0; top: calc(50% - 8px); width: 16px; height: 16px; background: currentColor;
	-webkit-mask: var(--i-truck) center / contain no-repeat; mask: var(--i-truck) center / contain no-repeat;
	--i-truck: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.75' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M14 18V6a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2v11a1 1 0 0 0 1 1h2'/%3E%3Cpath d='M15 18H9'/%3E%3Cpath d='M19 18h2a1 1 0 0 0 1-1v-3.6a1 1 0 0 0-.2-.6l-3.5-4.4a1 1 0 0 0-.8-.4H14'/%3E%3Ccircle cx='17' cy='18' r='2'/%3E%3Ccircle cx='7' cy='18' r='2'/%3E%3C/svg%3E");
}
/* Narrow cards (phone rails: 132 px) drop the decorative truck so «Μεταφορική εταιρία» (126 px) stays whole. */
ul.products li.product .woocommerce-loop-product__link { container: tsx-card / inline-size; }
@container tsx-card (max-width: 140px) {
	ul.products li.product .card-ship, .site-content ul.products li.product .card-ship { padding-left: 0; }
	.card-ship:not(:empty)::before { display: none; }
}

/* -------------------------------------------------------------------------
   B3. «Μόνο άμεσα διαθέσιμα (N)»: a switch row at the top of the sidebar
   and the filter sheet. Off = outlined track (muted, 5.4:1), on = blue.
   ------------------------------------------------------------------------- */
.shop-avail { display: flex; align-items: center; gap: var(--s-3); min-height: 48px; margin: 0 0 var(--s-4); padding: var(--s-2) var(--s-4); border: 1px solid var(--c-border); border-radius: var(--r-card); background: var(--c-white); color: var(--c-navy); font-size: var(--fs-small); font-weight: 700; line-height: 1.3; transition: border-color var(--dur-1) var(--ease), background-color var(--dur-1) var(--ease); }
.shop-avail:hover { border-color: var(--c-border-strong); color: var(--c-navy); }
.shop-avail__switch { position: relative; flex: none; width: 36px; height: 20px; border: 2px solid var(--c-muted); border-radius: var(--r-card); background: var(--c-white); transition: background-color var(--dur-1) var(--ease), border-color var(--dur-1) var(--ease); }
.shop-avail__switch::after { content: ""; position: absolute; top: 2px; left: 2px; width: 12px; height: 12px; border-radius: 50%; background: var(--c-muted); transition: transform var(--dur-2) var(--ease), background-color var(--dur-1) var(--ease); }
.shop-avail__count { font-weight: 500; color: var(--c-muted); font-variant-numeric: tabular-nums; }
.shop-avail[aria-pressed="true"] { border-color: var(--c-blue); background: var(--c-tint); color: var(--c-blue); }
.shop-avail[aria-pressed="true"] .shop-avail__switch { border-color: var(--c-blue); background: var(--c-blue); }
.shop-avail[aria-pressed="true"] .shop-avail__switch::after { background: var(--c-white); transform: translateX(16px); }
@media (prefers-reduced-motion: reduce) {
	.shop-avail, .shop-avail__switch, .shop-avail__switch::after { transition: none; }
}

/* -------------------------------------------------------------------------
   B4. «Πλέγμα / Λίστα»: one segmented control (40 px, 44 on touch).
   ------------------------------------------------------------------------- */
.view-toggle { display: inline-flex; flex: none; border: 1px solid var(--c-border-strong); border-radius: var(--r-btn); background: var(--c-white); overflow: hidden; }
.view-toggle__btn { display: inline-flex; align-items: center; justify-content: center; width: 40px; height: 38px; color: var(--c-muted); transition: background-color var(--dur-1) var(--ease), color var(--dur-1) var(--ease); }
.view-toggle__btn + .view-toggle__btn { border-left: 1px solid var(--c-border); }
.view-toggle__btn::before { content: ""; flex: none; width: 20px; height: 20px; background: currentColor; -webkit-mask: var(--i-view) center / contain no-repeat; mask: var(--i-view) center / contain no-repeat; }
/* Lucide layout-grid / layout-list (ISC), stroke 1.75 like inc/icons.php. */
.view-toggle__btn--grid { --i-view: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.75' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect width='7' height='7' x='3' y='3' rx='1'/%3E%3Crect width='7' height='7' x='14' y='3' rx='1'/%3E%3Crect width='7' height='7' x='14' y='14' rx='1'/%3E%3Crect width='7' height='7' x='3' y='14' rx='1'/%3E%3C/svg%3E"); }
.view-toggle__btn--list { --i-view: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.75' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect width='7' height='7' x='3' y='3' rx='1'/%3E%3Crect width='7' height='7' x='3' y='14' rx='1'/%3E%3Cpath d='M14 4h7M14 9h7M14 15h7M14 20h7'/%3E%3C/svg%3E"); }
.view-toggle__btn:hover { background: var(--c-gray); color: var(--c-blue); }
.view-toggle__btn[aria-current] { background: var(--c-tint); color: var(--c-blue); }
.view-toggle__btn:focus-visible { outline-offset: -3px; } /* the control clips (overflow: hidden) */
@media (hover: none) { .view-toggle__btn { width: 44px; height: 42px; } }
/* Phones: «Φίλτρα | 84 προϊόντα | Προτεινόμενα» fill the toolbar row (381 px for four controls vs 358), so the
   switch moves to the top of the filter sheet, with visible labels. */
.view-toggle-sheet { display: none; }
@media (max-width: 767.98px) {
	.shop-toolbar .view-toggle { display: none; }
	.view-toggle-sheet { display: flex; align-items: center; justify-content: space-between; gap: var(--s-3); margin: 0 0 var(--s-4); }
	.view-toggle-sheet__label { font-size: var(--fs-small); font-weight: 700; color: var(--c-navy); }
	.view-toggle--sheet .view-toggle__btn { gap: var(--s-2); width: auto; height: 44px; padding: 0 var(--s-4); font-size: var(--fs-small); font-weight: 700; }
	.view-toggle--sheet .view-toggle__btn[aria-current] { color: var(--c-blue); }
	/* The toolbar row: the count gives way (ellipsis) before anything overflows; «Προτεινόμενα» fits whole. */
	.shop-count { overflow: hidden; text-overflow: ellipsis; }
	.shop-toolbar .woocommerce-ordering select { max-width: none; padding-right: calc(var(--s-6) + var(--s-1)); }
	.shop-toolbar .woocommerce-ordering::after { right: var(--s-2); }
}

/* -------------------------------------------------------------------------
   B4. List view (?view=list): one card per row.
   Desktop: 160 px photo · brand, title, code, ≤ 4 spec lines on explicit
   rows · side column (price, stock, delivery; one wrapper so it stacks on
   its own) with the outline button at its foot.
   ------------------------------------------------------------------------- */
.site-content .shop-main ul.products.products--list { grid-template-columns: minmax(0, 1fr); gap: var(--s-3); }
ul.products li.product.card--list .woocommerce-loop-product__link, .site-content ul.products li.product.card--list .woocommerce-loop-product__link { display: grid; grid-template-columns: 160px minmax(0, 1fr) 200px; grid-template-rows: auto auto auto 1fr; column-gap: var(--s-6); align-items: start; }
ul.products li.product.card--list .card-media, .site-content ul.products li.product.card--list .card-media { grid-column: 1; grid-row: 1 / -1; width: 160px; margin: 0; }
ul.products li.product.card--list .card-brand, .site-content ul.products li.product.card--list .card-brand { grid-column: 2; grid-row: 1; }
ul.products li.product.card--list .woocommerce-loop-product__title, .site-content ul.products li.product.card--list .woocommerce-loop-product__title { grid-column: 2; grid-row: 2; min-height: 0; -webkit-line-clamp: 2; font-size: var(--fs-h4); }
ul.products li.product.card--list .card-sku, .site-content ul.products li.product.card--list .card-sku { grid-column: 2; grid-row: 3; }
ul.products li.product.card--list .card-specs, .site-content ul.products li.product.card--list .card-specs { grid-column: 2; grid-row: 4; }
/* The side column keeps 44 + 12 px free at its foot for the button (absolute, outside the card link). */
.card--list__side { display: flex; flex-direction: column; align-items: flex-start; grid-column: 3; grid-row: 1 / -1; align-self: stretch; min-width: 0; padding-bottom: calc(44px + var(--s-3)); }
ul.products li.product.card--list .card-price, .site-content ul.products li.product.card--list .card-price { margin: 0; padding: 0; }
ul.products li.product.card--list .card-stock, .site-content ul.products li.product.card--list .card-stock { margin: var(--s-2) 0 0; padding: 0; }
ul.products li.product.card--list .card-ship, .site-content ul.products li.product.card--list .card-ship { max-width: 100%; }
ul.products li.product.card--list .button, .site-content ul.products li.product.card--list .button { position: absolute; right: var(--card-pad); bottom: var(--card-pad); width: 200px; min-height: 44px; margin: 0; }
/* Wishlist / compare move from the price column onto the photo. */
ul.products li.product.card--list :is(.woosw-btn, .woosc-btn), .site-content ul.products li.product.card--list :is(.woosw-btn, .woosc-btn) { right: auto; left: calc(var(--card-pad) + 160px - 36px - var(--s-2)); }

/* Spec lines: 13 px, label muted 500, value navy 600; one line each. Scoped like the cards: WooCommerce styles
   every ".woocommerce .products ul" (1em margin, table pseudo-elements). */
ul.products li.product .card-specs, .site-content ul.products li.product .card-specs { display: grid; gap: var(--s-1); margin: var(--s-3) 0 0; padding: 0; list-style: none; font-size: var(--fs-meta); font-weight: 500; line-height: 1.4; }
ul.products li.product .card-specs::before, ul.products li.product .card-specs::after { content: none; display: none; }
.card-specs li { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--c-navy); font-weight: 600; }
.card-specs__label { color: var(--c-muted); font-weight: 500; }

@media (max-width: 1279.98px) and (min-width: 768px) {
	ul.products li.product.card--list .woocommerce-loop-product__link, .site-content ul.products li.product.card--list .woocommerce-loop-product__link { grid-template-columns: 136px minmax(0, 1fr) 176px; column-gap: var(--s-4); }
	ul.products li.product.card--list .card-media, .site-content ul.products li.product.card--list .card-media { width: 136px; }
	ul.products li.product.card--list .button, .site-content ul.products li.product.card--list .button { width: 176px; }
	ul.products li.product.card--list :is(.woosw-btn, .woosc-btn), .site-content ul.products li.product.card--list :is(.woosw-btn, .woosc-btn) { left: calc(var(--card-pad) + 136px - 36px - var(--s-2)); }
}

/* Phones: 96 px photo beside the text (brand, title, 2 spec lines, then the side column); the button under the text. */
@media (max-width: 767.98px) {
	ul.products li.product.card--list .woocommerce-loop-product__link, .site-content ul.products li.product.card--list .woocommerce-loop-product__link { grid-template-columns: 96px minmax(0, 1fr); grid-template-rows: auto auto auto 1fr; column-gap: var(--s-3); }
	ul.products li.product.card--list .card-media, .site-content ul.products li.product.card--list .card-media { width: 96px; }
	ul.products li.product.card--list .woocommerce-loop-product__title, .site-content ul.products li.product.card--list .woocommerce-loop-product__title { -webkit-line-clamp: 3; font-size: 15px; }
	ul.products li.product.card--list .card-specs, .site-content ul.products li.product.card--list .card-specs { grid-row: 3; margin-top: var(--s-1); }
	.card--list .card-specs li:nth-child(n+3) { display: none; }
	.card--list__side { grid-column: 2; grid-row: 4; padding: var(--s-2) 0 0; }
	ul.products li.product.card--list .button, .site-content ul.products li.product.card--list .button { position: relative; right: auto; bottom: auto; width: auto; margin: var(--s-3) 0 0 calc(96px + var(--s-3)); }
	ul.products li.product.card--list .woosw-btn, .site-content ul.products li.product.card--list .woosw-btn { top: calc(var(--card-pad) + 96px - 36px); left: calc(var(--card-pad) + 96px - 36px); }
}

/* -------------------------------------------------------------------------
   B3. Sticky toolbar ≤ 1024 px: «Φίλτρα | 84 προϊόντα | Προτεινόμενα» stays
   right under the stuck header (A4 --header-offset: 124 px with the search
   row, 64 px without it), full bleed, --shadow-2 once stuck (shop.js).
   The fallbacks match the header when 70-a.css is not there.
   ------------------------------------------------------------------------- */
@media (max-width: 1024px) {
	.site-content .shop-toolbar {
		position: sticky; top: var(--header-offset, 124px); z-index: calc(var(--z-header) - 1);
		margin-inline: calc(var(--s-6) * -1); padding: var(--s-2) var(--s-6); background: var(--c-white);
		transition: top var(--dur-2) var(--ease), box-shadow var(--dur-2) var(--ease);
	}
	:root:has(.site-header.is-search-hidden) .site-content .shop-toolbar { top: var(--header-offset, 64px); }
	.site-content .shop-toolbar.is-stuck { box-shadow: var(--shadow-2); }
}
@media (min-width: 783px) and (max-width: 1024px) {
	/* Logged in: the admin bar keeps the header 32 px lower here. */
	.admin-bar .site-content .shop-toolbar { top: calc(var(--header-offset, 124px) + 32px); }
	:root:has(.site-header.is-search-hidden) .admin-bar .site-content .shop-toolbar { top: calc(var(--header-offset, 64px) + 32px); }
}
@media (max-width: 767.98px) {
	.site-content .shop-toolbar { margin-inline: calc(var(--s-4) * -1); padding: var(--s-2) var(--s-4); }
}
@media (prefers-reduced-motion: reduce) {
	.site-content .shop-toolbar { transition: none; }
}

/* Windows high contrast: the mask icons take the text colour instead of vanishing with the forced backgrounds. */
@media (forced-colors: active) {
	.card-ship:not(:empty)::before, .view-toggle__btn::before { background: CanvasText; forced-color-adjust: none; }
	.shop-avail__switch, .shop-avail__switch::after { forced-color-adjust: none; border-color: CanvasText; }
	.shop-avail__switch::after { background: CanvasText; }
	.shop-avail[aria-pressed="true"] .shop-avail__switch { background: Highlight; }
}

/* ==========================================================================
   72-c (merged from assets/css/72-c.css, 0.6.0: reference UX: plaisio/kotsovolos/public)
   ========================================================================== */
/* =========================================================================
   72-c.css — owner: workstream C (product page), docs/reference-plan.md C1–C4.
   Scope (contract K8): .spec-table (+ .spec-table-link), .inbox, .bundle,
   .var-chip__* and the price chips (.variation-chips.has-prices).
   Loaded after style.css in file-name order (functions.php glob, filemtime
   version). Uses the tokens in style.css :root only.
   ========================================================================= */

/* Contract K6: height of the sticky add-to-cart bar (.js-sticky-atc: 1 px top border + 12 + 48 + 12; measured 73 px at 390 and 1440), read by 70-a.css. */
:root { --atc-bar-h: 73px; }

/* -------------------------------------------------------------------------
   Sections below the summary («Αγοράστε μαζί», «Χαρακτηριστικά»): they span
   the product grid, their heading matches «Προϊόντα στην ίδια κατηγορία»,
   and the boxes keep the description's reading width (760 px).
   ------------------------------------------------------------------------- */
.woocommerce div.product :is(.bundle, .spec-table) { grid-column: 1 / -1; min-width: 0; margin-top: var(--s-12); }
.woocommerce div.product :is(.bundle, .spec-table) > h2 { margin: 0 0 var(--s-6); padding-bottom: var(--s-3); border-bottom: 1px solid var(--c-border); font-size: var(--fs-h3); line-height: 1.25; letter-spacing: -.01em; }
/* The «↓» links land under the sticky header (contract K5, with today's heights as the fallback). */
:is(.bundle, .spec-table) { scroll-margin-top: calc(var(--header-offset, 140px) + var(--s-4)); }
@media (max-width: 1024px) {
	:is(.bundle, .spec-table) { scroll-margin-top: calc(var(--header-offset, 124px) + var(--s-4)); }
}

/* -------------------------------------------------------------------------
   C1 «Χαρακτηριστικά»: zebra rows, label 40 %, value in navy.
   ------------------------------------------------------------------------- */
.spec-table__wrap { max-width: 760px; border: 1px solid var(--c-border); border-radius: var(--r-card); overflow: hidden; }
.spec-table__table { width: 100%; margin: 0; border: 0; border-collapse: collapse; border-spacing: 0; font-size: 15px; line-height: 1.45; }
.spec-table__table tr:nth-child(odd) { background: var(--c-gray); }
.spec-table__table :is(th, td) { padding: var(--s-3) var(--s-4); border: 0; text-align: left; vertical-align: top; }
.spec-table__table th { width: 40%; font-weight: 500; color: var(--c-muted); } /* 5.0:1 on --c-gray */
.spec-table__table td { font-weight: 600; color: var(--c-navy); overflow-wrap: anywhere; }

/* Buy box: «Όλα τα χαρακτηριστικά ↓» right under the bullets (44 px target, pulled up into the list's margin). */
.woocommerce div.product .spec-table-link { margin: calc(var(--s-3) * -1) 0 var(--s-2); }
.spec-table-link a { display: inline-flex; align-items: center; gap: var(--s-1); min-height: 44px; font-size: var(--fs-small); font-weight: 700; color: var(--c-blue); }
.spec-table-link a:hover { color: var(--c-blue-hover); text-decoration: underline; text-underline-offset: 3px; }
.spec-table-link svg { flex: none; width: 18px; height: 18px; }

/* -------------------------------------------------------------------------
   C2 In-the-box strip under the price: a --c-tint note, blue info icon, no
   orange. The delivery box below is a separate panel of the same family.
   ------------------------------------------------------------------------- */
.inbox { display: flex; align-items: flex-start; gap: var(--s-3); margin: 0 0 var(--s-3); padding: var(--s-3) var(--s-4); border-radius: var(--r-card); background: var(--c-tint); }
.inbox > svg { flex: none; width: 20px; height: 20px; margin-top: 1px; color: var(--c-blue); }
.inbox__body { min-width: 0; }
.woocommerce div.product .inbox__title { margin: 0; font-size: 15px; font-weight: 700; line-height: 1.4; color: var(--c-navy); }
.woocommerce div.product .inbox__line { margin: var(--s-1) 0 0; font-size: var(--fs-small); font-weight: 500; line-height: 1.45; color: var(--c-navy); }
/* Inline, so the chevron follows the last word when the text wraps; the padding makes the 44 px target. */
.inbox__link { display: inline; padding: 12px 0; font-size: var(--fs-small); font-weight: 700; line-height: 1.45; color: var(--c-blue); text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: 3px; }
.inbox__link:hover { color: var(--c-blue-hover); text-decoration-thickness: 2px; }
.inbox__link svg { display: inline-block; width: 16px; height: 16px; margin-left: 2px; vertical-align: -3px; }
.inbox__nowrap { white-space: nowrap; }

/* -------------------------------------------------------------------------
   C3 «Αγοράστε μαζί»: one card (760 px), a row per product, a gray footer
   with the live total and the blue (never orange) button.
   ------------------------------------------------------------------------- */
.bundle__card { max-width: 760px; border: 1px solid var(--c-border); border-radius: var(--r-card); background: var(--c-white); overflow: hidden; }
.bundle__list { margin: 0; padding: 0; list-style: none; }
.bundle__row { display: grid; grid-template-columns: 44px 64px minmax(0, 1fr) auto; grid-template-areas: "check media info side"; align-items: center; column-gap: var(--s-3); padding: var(--s-3) var(--s-4) var(--s-3) var(--s-2); }
.bundle__row + .bundle__row { border-top: 1px solid var(--c-border); }

/* Checkbox: a 20 px box in a 44 px label. This product's box is checked and disabled (always in the bundle). */
.bundle__check { grid-area: check; display: flex; align-items: center; justify-content: center; width: 44px; height: 44px; margin: 0; cursor: pointer; }
span.bundle__check { cursor: default; }
/* Drawn box (the native disabled one is a washed-out grey): blue when ticked; this product's locked box is tinted. */
.bundle__check input { -webkit-appearance: none; appearance: none; flex: none; display: grid; place-content: center; width: 20px; height: 20px; margin: 0; border: 2px solid var(--c-border-strong); border-radius: var(--r-xs); background: var(--c-white); cursor: inherit; transition: background-color var(--dur-1) var(--ease), border-color var(--dur-1) var(--ease); }
.bundle__check input::before { content: ""; width: 14px; height: 14px; background: var(--c-white); -webkit-mask: var(--i-check) center / contain no-repeat; mask: var(--i-check) center / contain no-repeat; transform: scale(0); transition: transform var(--dur-1) var(--ease); --i-check: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 6 9 17l-5-5'/%3E%3C/svg%3E"); }
.bundle__check input:checked { border-color: var(--c-blue); background: var(--c-blue); }
.bundle__check input:checked::before { transform: none; }
label.bundle__check:hover input:not(:checked) { border-color: var(--c-blue); }
.bundle__check input:disabled { border-color: var(--c-border-strong); background: var(--c-tint); }
.bundle__check input:disabled::before { background: var(--c-blue); }
.bundle__check input:focus-visible { outline-offset: 3px; }
/* Windows high contrast: the native box (the drawn tick is a background, which forced colours would erase). */
@media (forced-colors: active) {
	.bundle__check input { -webkit-appearance: auto; appearance: auto; }
	.bundle__check input::before { content: none; }
}

.bundle__media { grid-area: media; display: block; width: 64px; height: 64px; border-radius: var(--r-media); background: var(--g-media); overflow: hidden; }
.bundle__media img { display: block; width: 100%; height: 100%; padding: 6px; object-fit: contain; mix-blend-mode: multiply; }

.bundle__info { grid-area: info; display: flex; flex-direction: column; align-items: flex-start; min-width: 0; }
.bundle__tag { display: inline-flex; margin-bottom: var(--s-1); padding: 2px var(--s-2); border-radius: var(--r-xs); background: var(--c-tint); font-size: var(--fs-label); font-weight: 800; line-height: 1.4; letter-spacing: var(--tr-label); text-transform: uppercase; color: var(--c-blue); }
.bundle__name { display: -webkit-box; overflow: hidden; -webkit-box-orient: vertical; -webkit-line-clamp: 2; font-size: var(--fs-small); font-weight: 600; line-height: 1.4; color: var(--c-navy); }
a.bundle__name:hover { color: var(--c-blue); text-decoration: underline; text-underline-offset: 2px; }
.bundle__info .card-stock { margin-top: var(--s-1); }

.bundle__side { grid-area: side; display: flex; flex-direction: column; align-items: flex-end; gap: var(--s-1); text-align: right; }
.bundle__price { display: flex; flex-direction: column; align-items: flex-end; font-size: var(--fs-body); font-weight: 800; line-height: 1.25; color: var(--c-navy); font-variant-numeric: tabular-nums; white-space: nowrap; }
.bundle__was { display: inline-flex; align-items: center; gap: var(--s-2); }
.bundle__price del { font-size: var(--fs-meta); font-weight: 500; color: var(--c-muted); }
.bundle__price ins { text-decoration: none; color: var(--c-orange-text); }
.woocommerce .bundle span.onsale { position: static; } /* the theme's «-50%» badge, beside the old price */
.bundle__qty { font-size: var(--fs-meta); font-weight: 600; color: var(--c-muted); }
.bundle__more { display: inline-flex; align-items: center; gap: var(--s-1); min-height: 44px; font-size: var(--fs-small); font-weight: 700; color: var(--c-blue); white-space: nowrap; }
.bundle__more:hover { color: var(--c-blue-hover); text-decoration: underline; text-underline-offset: 3px; }
.bundle__more svg { flex: none; width: 16px; height: 16px; }

.bundle__foot { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: var(--s-3) var(--s-4); padding: var(--s-4); border-top: 1px solid var(--c-border); background: var(--c-gray); }
.woocommerce div.product .bundle__total { display: flex; flex-wrap: wrap; align-items: baseline; gap: 0 var(--s-2); margin: 0; font-size: var(--fs-small); font-weight: 600; line-height: 1.4; color: var(--c-navy); }
.bundle__total strong { font-size: 20px; font-weight: 800; line-height: 1.2; font-variant-numeric: tabular-nums; }
.bundle__btn { flex: none; }
.woocommerce div.product .bundle__error { flex-basis: 100%; margin: 0; font-size: var(--fs-small); font-weight: 600; line-height: 1.45; color: var(--c-error); }
.bundle__error[hidden] { display: none; }
/* WooCommerce appends «Προβολή καλαθιού» after the button on added_to_cart; the cart toast already offers the next step. */
.has-cart-toast .bundle .added_to_cart { display: none; }

@media (max-width: 767.98px) {
	.woocommerce div.product :is(.bundle, .spec-table) { margin-top: var(--s-8); }
	.woocommerce div.product :is(.bundle, .spec-table) > h2 { margin-bottom: var(--s-4); }
	.spec-table__table :is(th, td) { padding: var(--s-3); }

	/* Rows: name, price, then availability, in the column beside the checkbox and the photo. */
	.bundle__row { grid-template-columns: 44px 64px minmax(0, 1fr); grid-template-areas: none; align-items: start; row-gap: 2px; padding: var(--s-3) var(--s-3) var(--s-3) var(--s-1); }
	.bundle__check, .bundle__media { grid-row: 1 / span 4; align-self: center; }
	.bundle__check { grid-column: 1; }
	.bundle__media { grid-column: 2; }
	.bundle__info { display: contents; }
	.bundle__info > *, .bundle__side { grid-area: auto / 3; justify-self: start; } /* "auto / 3": drops the desktop "side" area */
	.bundle__tag { order: 1; margin-bottom: 2px; }
	.bundle__name { order: 2; }
	.bundle__side { order: 3; flex-direction: row; flex-wrap: wrap; align-items: baseline; gap: 0 var(--s-2); text-align: left; }
	.bundle__info .card-stock { order: 4; margin-top: 2px; }
	.bundle__price { flex-direction: row; flex-wrap: wrap; align-items: baseline; gap: 0 var(--s-2); }

	.bundle__foot { flex-direction: column; align-items: stretch; padding: var(--s-3); }
	.bundle__btn { width: 100%; padding-inline: var(--s-3); }
}
@media (max-width: 399.98px) {
	.bundle__btn svg { display: none; } /* the label stays on one line down to 360 px */
}

/* -------------------------------------------------------------------------
   C4 Variation chips with their own price: value over price (13/500 muted,
   sale in --c-orange-text). Selected = tinted with a 2 px blue edge, so the
   price stays readable in navy. Equal heights (min 52).
   ------------------------------------------------------------------------- */
.variation-chips.has-prices button { display: inline-flex; flex-direction: column; align-items: center; justify-content: center; gap: 2px; min-height: 52px; padding-block: var(--s-1); line-height: 1.25; }
.var-chip__value { font-weight: 600; }
.var-chip__price { font-size: var(--fs-meta); font-weight: 500; color: var(--c-muted); font-variant-numeric: tabular-nums; white-space: nowrap; }
.var-chip__price.is-sale { color: var(--c-orange-text); }
.variation-chips.has-prices button[aria-checked=true] { border-color: var(--c-blue); background: var(--c-tint); color: var(--c-navy); box-shadow: inset 0 0 0 1px var(--c-blue); }
.variation-chips.has-prices button[aria-checked=true] .var-chip__price { color: var(--c-navy); }

/* ==========================================================================
   Premium polish 0.7.0
   Owner request 2026-10-06: «βελτίωσε τα banners να είναι πιο full HD clean,
   βάλε glass effect στα buttons, κάνε ό,τι μπορείς να φαίνεται premium».
   Everything 0.7.0 adds lives in this section; earlier rules are overridden
   here, not edited. The glass is for buttons only (BRAND.md keeps «no
   glassmorphism» for surfaces) and every glass surface keeps text ≥ 4.5:1:
   the contrast notes below are measured on the flattened colours.
   ========================================================================== */
:root {
	/* Glass on blue/navy. White text: 6.1:1 over --c-blue (the flattened #39649a), 9.4:1 over --c-navy. */
	--glass-bg: rgba(255, 255, 255, .16);
	--glass-bg-hover: rgba(255, 255, 255, .22);    /* 5.2:1 over --c-blue, 4.7:1 where the hero T-mark watermark sits behind */
	--glass-border: rgba(255, 255, 255, .32);
	--glass-border-hover: rgba(255, 255, 255, .5);
	--glass-blur: blur(12px) saturate(140%);
	--glass-shadow: inset 0 1px 0 rgba(255, 255, 255, .35), 0 1px 2px rgba(3, 12, 26, .16), 0 8px 20px -10px rgba(3, 12, 26, .5);
	--glass-solid: #2f5585;                         /* no backdrop-filter / reduced transparency: white 7.6:1 */
	--glass-solid-hover: #3a6396;                   /* 6.2:1 */
	/* Frost on white/gray. Blue text ≥ 8:1 on the flattened tint. */
	--frost-bg: rgba(19, 70, 133, .06);
	--frost-bg-hover: rgba(19, 70, 133, .1);
	--frost-border: rgba(19, 70, 133, .18);
	--frost-border-hover: rgba(19, 70, 133, .32);
	--frost-blur: blur(8px) saturate(140%);
	--frost-shadow: inset 0 1px 0 rgba(255, 255, 255, .7), 0 1px 2px rgba(11, 37, 69, .05);
	--frost-solid: var(--c-tint);
	/* Floating arrows over cards: white glass (blue icon ≥ 5:1 over any card content). */
	--glass-light-bg: rgba(255, 255, 255, .74);
	--glass-light-shadow: inset 0 1px 0 rgba(255, 255, 255, .9), 0 4px 14px rgba(11, 37, 69, .12), 0 1px 3px rgba(11, 37, 69, .08);
	/* Primary sheen: white over the top half (the label sits below it), inset highlight, orange-tinted shadow. */
	--sheen: linear-gradient(180deg, rgba(255, 255, 255, .18) 0%, rgba(255, 255, 255, 0) 52%);
	--shadow-cta: inset 0 1px 0 rgba(255, 255, 255, .35), 0 1px 2px rgba(179, 90, 12, .22), 0 6px 16px -6px rgba(239, 127, 27, .55);
	--shadow-cta-hover: inset 0 1px 0 rgba(255, 255, 255, .35), 0 2px 4px rgba(179, 90, 12, .2), 0 12px 24px -8px rgba(239, 127, 27, .6);
	--shadow-cta-press: inset 0 1px 3px rgba(120, 55, 0, .28);
	/* Card lift: a soft, wide shadow (replaces --shadow-3 on product cards). */
	--shadow-lift: 0 18px 36px -14px rgba(11, 37, 69, .22), 0 4px 10px -4px rgba(11, 37, 69, .08);
}

/* -------------------------------------------------------------------------
   Glass buttons (.btn--glass, new): secondary actions on blue/navy — hero
   CTA 2, ECHO panel CTA 2, steps band, service panel, drawer «Δείτε τα όλα»,
   footer phone (.btn--outline-light, same role, now the same look).
   ------------------------------------------------------------------------- */
.btn--glass, .btn--outline-light {
	border: 1px solid var(--glass-border);
	background: var(--glass-bg);
	color: var(--c-white);
	box-shadow: var(--glass-shadow);
	-webkit-backdrop-filter: var(--glass-blur);
	backdrop-filter: var(--glass-blur);
	transition: background-color var(--dur-2) var(--ease), border-color var(--dur-2) var(--ease), color var(--dur-2) var(--ease), box-shadow var(--dur-2) var(--ease), transform var(--dur-1) var(--ease);
}
.btn--glass:hover, .btn--outline-light:hover { border-color: var(--glass-border-hover); background: var(--glass-bg-hover); color: var(--c-white); }
.btn--glass:focus-visible, .btn--outline-light:focus-visible { outline: 3px solid var(--c-orange); outline-offset: 2px; } /* 3.45:1 on blue, 5.7:1 on navy */
/* The drawer band's link (theme.js) had white-on-blue rules of its own. */
.drawer .mnav-band .mnav-all.btn--glass { border: 1px solid var(--glass-border); color: var(--c-white); }
.drawer .mnav-band .mnav-all.btn--glass:hover { border-color: var(--glass-border-hover); background: var(--glass-bg-hover); color: var(--c-white); }
/* Light hero slide: the frosted variant. */
.hero-slide--light .btn--glass { border-color: var(--frost-border); background: var(--frost-bg); color: var(--c-blue); box-shadow: var(--frost-shadow); }
.hero-slide--light .btn--glass:hover { border-color: var(--frost-border-hover); background: var(--frost-bg-hover); color: var(--c-blue); }
.hero-slide--light .btn--glass:focus-visible { outline-color: var(--c-blue); } /* orange on white is 2.7:1 */
/* Phones: hero CTA 2 stays the white link-arrow under the orange button (no box at all). */
@media (max-width: 767.98px) {
	.hero-slide__cta2.btn--glass, .hero-slide__cta2.btn--glass:hover { border: 0; background: none; box-shadow: none; -webkit-backdrop-filter: none; backdrop-filter: none; color: var(--c-white); }
	.hero-slide--light .hero-slide__cta2.btn--glass, .hero-slide--light .hero-slide__cta2.btn--glass:hover { color: var(--c-blue); }
}

/* Frost (.btn--frost, new; and .btn--outline): secondary actions on white/gray. .btn--outline keeps its solid blue
   hover (the stronger rule above), the frost one deepens. */
.btn--frost, .btn--outline {
	border: 1px solid var(--frost-border);
	background: var(--frost-bg);
	color: var(--c-blue);
	box-shadow: var(--frost-shadow);
	-webkit-backdrop-filter: var(--frost-blur);
	backdrop-filter: var(--frost-blur);
	transition: background-color var(--dur-2) var(--ease), border-color var(--dur-2) var(--ease), color var(--dur-2) var(--ease), box-shadow var(--dur-2) var(--ease), transform var(--dur-1) var(--ease);
}
.btn--frost:hover { border-color: var(--frost-border-hover); background: var(--frost-bg-hover); color: var(--c-blue-hover); }
/* Card «Στο καλάθι»: the same frost at rest; hover still fills blue (rules above). */
ul.products li.product .button, .site-content ul.products li.product .button { border-width: 1px; border-color: var(--frost-border); background: var(--frost-bg); box-shadow: var(--frost-shadow); transition: background-color var(--dur-2) var(--ease), border-color var(--dur-2) var(--ease), color var(--dur-2) var(--ease), box-shadow var(--dur-2) var(--ease); }

/* -------------------------------------------------------------------------
   Primary (orange): a quiet glass sheen, inset highlight and an orange-tinted
   shadow; 1 px lift on hover, press on click. Also add-to-cart, cart and
   checkout submit. White on orange stays the documented brand exception.
   ------------------------------------------------------------------------- */
.btn--primary, .woocommerce a.button.alt, .woocommerce button.button.alt, .single_add_to_cart_button, .wc-block-components-checkout-place-order-button, .wc-block-cart__submit-button, .woocommerce a.checkout-button {
	background-image: var(--sheen) !important;
	box-shadow: var(--shadow-cta);
	transition: background-color var(--dur-2) var(--ease), border-color var(--dur-2) var(--ease), box-shadow var(--dur-2) var(--ease), transform var(--dur-1) var(--ease);
}
/* The hover rules above reset the whole background (shorthand, !important): the sheen goes back on top of them. */
:is(.btn--primary, .woocommerce a.button.alt, .woocommerce button.button.alt, .single_add_to_cart_button, .wc-block-components-checkout-place-order-button, .wc-block-cart__submit-button, .woocommerce a.checkout-button):hover { background-image: var(--sheen) !important; }
@media (hover: hover) and (pointer: fine) {
	:is(.btn--primary, .woocommerce a.button.alt, .woocommerce button.button.alt, .single_add_to_cart_button, .wc-block-components-checkout-place-order-button, .wc-block-cart__submit-button, .woocommerce a.checkout-button):hover:not(:disabled, .disabled, [aria-disabled=true]) { transform: translateY(-1px); box-shadow: var(--shadow-cta-hover); }
}
:is(.btn--primary, .woocommerce a.button.alt, .woocommerce button.button.alt, .single_add_to_cart_button, .wc-block-components-checkout-place-order-button, .wc-block-cart__submit-button, .woocommerce a.checkout-button):active:not(:disabled, .disabled, [aria-disabled=true]) { transform: translateY(1px); box-shadow: var(--shadow-cta-press); }
:is(.btn--primary, .single_add_to_cart_button, .wc-block-components-checkout-place-order-button, .wc-block-cart__submit-button):is(:disabled, .disabled, [aria-disabled=true]) { box-shadow: none; }

/* Secondary (blue): the same inset highlight, no sheen (it is not the commerce action). */
.btn:not(.btn--primary, .btn--glass, .btn--outline-light, .btn--frost, .btn--outline, .btn--light, .btn--text) { box-shadow: inset 0 1px 0 rgba(255, 255, 255, .18), var(--shadow-1); }
/* Light (white on navy/blue: ECHO panel CTA 1): a soft drop so it reads as raised. */
.btn--light { box-shadow: inset 0 -1px 0 rgba(11, 37, 69, .08), 0 6px 16px -8px rgba(3, 12, 26, .45); }

/* -------------------------------------------------------------------------
   Slider controls: glass circles. Hero ≥1024 sits on the slide (glass),
   below 1024 and under banner sliders on white/gray (frost); rail and
   category arrows float over cards (white glass).
   ------------------------------------------------------------------------- */
.hero-slider__btn, .banner-slider__btn { border-radius: 50%; transition: background-color var(--dur-2) var(--ease), border-color var(--dur-2) var(--ease), box-shadow var(--dur-2) var(--ease); }
.banner-slider__btn, .hero-slider.is-light .hero-slider__btn { border: 1px solid var(--frost-border); background: var(--frost-bg); box-shadow: var(--frost-shadow); -webkit-backdrop-filter: var(--frost-blur); backdrop-filter: var(--frost-blur); }
@media (min-width: 1024px) {
	.hero-slider__controls { gap: var(--s-2); }
	.hero-slider__btn { border: 1px solid var(--glass-border); background: var(--glass-bg); box-shadow: var(--glass-shadow); -webkit-backdrop-filter: var(--glass-blur); backdrop-filter: var(--glass-blur); }
	.hero-slider.is-light .hero-slider__btn { border-color: var(--frost-border); background: var(--frost-bg); box-shadow: var(--frost-shadow); }
}
@media (max-width: 1023.98px) {
	.hero-slider__btn { border: 1px solid var(--frost-border); background: var(--frost-bg); box-shadow: var(--frost-shadow); -webkit-backdrop-filter: var(--frost-blur); backdrop-filter: var(--frost-blur); }
}
/* 2×2 collection columns on phones: the 36 px pause button becomes a 36 px circle (row height stays 44). */
@media (max-width: 767.98px) { .banners--cols-4 .banner-slider__btn { height: 36px; } }
@media (hover: hover) and (pointer: fine) {
	.hero-slider__btn:hover, .banner-slider__btn:hover, .hero-slider.is-light .hero-slider__btn:hover { border-color: var(--frost-border-hover); background: var(--frost-bg-hover); }
}
@media (hover: hover) and (pointer: fine) and (min-width: 1024px) {
	.hero-slider:not(.is-light) .hero-slider__btn:hover { border-color: var(--glass-border-hover); background: var(--glass-bg-hover); }
}
.rail__btn, .cat-slider__btn { border-color: rgba(19, 70, 133, .14); background: var(--glass-light-bg); box-shadow: var(--glass-light-shadow); -webkit-backdrop-filter: blur(12px) saturate(160%); backdrop-filter: blur(12px) saturate(160%); transition: background-color var(--dur-2) var(--ease), border-color var(--dur-2) var(--ease), color var(--dur-2) var(--ease), opacity var(--dur-2) var(--ease); }

/* -------------------------------------------------------------------------
   Banner product cards (inc/blocks-banners.php, tsixlis_banner_card_html()).
   The image banner's own ratio box (--ratio from .banners__grid), so a row
   that becomes a card never shifts. One grid and no wrappers (DOM budget):
   wide cards (795:379) put the text left and the photo on a light tile right,
   square ones (1:1) the photo on top. Sizes follow the card's own width
   (container queries); without them the compact layout applies everywhere.
   ------------------------------------------------------------------------- */
.promo-card {
	container-type: inline-size;
	isolation: isolate; /* the photo multiplies with the tile, nothing outside */
	display: grid;
	aspect-ratio: var(--ratio, 795 / 379);
	padding: var(--s-2) var(--s-2) var(--s-2) var(--s-4);
	column-gap: var(--s-3);
	color: var(--c-white);
	-webkit-tap-highlight-color: transparent;
}
/* Keyboard ring drawn inside, above the photo: blue edge and white inner line, visible on the dark and the light parts. */
.promo-card:focus-visible { outline: 0; }
.promo-card::before { content: ""; position: absolute; inset: 0; z-index: 3; border-radius: inherit; pointer-events: none; }
.promo-card:focus-visible::before { box-shadow: inset 0 0 0 3px var(--c-blue), inset 0 0 0 5px var(--c-white); }

/* Wide, dark (blue / navy columns alternate like the hero slides). */
.promo-card--blue, .promo-card--navy {
	grid-template-columns: minmax(0, 1fr) 42%;
	grid-template-rows: 1fr repeat(5, auto) 1fr;
	grid-template-areas: ". media" "brand media" "title media" "note media" "price media" "cta media" ". media";
	background: radial-gradient(55% 90% at 100% 50%, rgba(255, 255, 255, .14) 0%, rgba(255, 255, 255, 0) 70%), linear-gradient(135deg, var(--c-blue) 0%, var(--c-blue-hover) 55%, var(--c-navy) 100%);
}
.promo-card--navy { background: radial-gradient(55% 90% at 100% 50%, rgba(255, 255, 255, .1) 0%, rgba(255, 255, 255, 0) 70%), linear-gradient(135deg, var(--c-navy-2) 0%, var(--c-navy) 100%); }
/* The light tile behind the photo (inner radius: 10 − 8 → 4). */
.promo-card--blue::after, .promo-card--navy::after { content: ""; position: absolute; grid-area: media; inset: 0; border-radius: var(--r-xs); background: radial-gradient(75% 75% at 50% 45%, var(--c-white) 0%, #f8fafc 45%, #eef2f6 100%); box-shadow: var(--shadow-on-dark); }
/* The catalog photos are opaque white PNGs: multiply drops the white into the tile, the product reads as a cut-out. */
.promo-card__img { position: absolute; grid-area: media; inset: 0; z-index: 1; width: 100%; height: 100%; padding: 5%; object-fit: contain; mix-blend-mode: multiply; transition: transform var(--dur-3) var(--ease); }
.promo-card__brand { grid-area: brand; display: flex; align-items: center; gap: var(--s-2); min-width: 0; margin-bottom: var(--s-1); overflow: hidden; color: var(--c-on-dark); font-size: var(--fs-label); font-weight: 800; line-height: 1.3; letter-spacing: var(--tr-label); text-transform: uppercase; white-space: nowrap; text-overflow: ellipsis; }
.promo-card__brand::before { content: ""; flex: none; width: 16px; height: 3px; border-radius: 2px; background: var(--c-orange); }
/* 3 lines at every size, so the model number at the end of a long name survives. */
.promo-card__title { grid-area: title; display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 3; overflow: hidden; color: var(--c-white); font-size: 15px; font-weight: 700; line-height: 1.2; letter-spacing: -.01em; text-wrap: balance; }
.promo-card__note { grid-area: note; display: none; }
.promo-card__price { grid-area: price; display: flex; flex-wrap: wrap; align-items: center; gap: var(--s-1) var(--s-2); margin-top: var(--s-2); font-variant-numeric: tabular-nums; }
.promo-card__price strong { order: -1; color: var(--c-white); font-size: 20px; font-weight: 800; line-height: 1.1; letter-spacing: -.01em; white-space: nowrap; }
.promo-card__price del { color: var(--c-on-dark); font-size: var(--fs-meta); font-weight: 500; white-space: nowrap; }
.promo-card__off { display: inline-flex; align-items: center; height: 20px; padding: 2px 6px; border-radius: var(--r-xs); background: var(--c-orange); color: var(--c-navy); font-size: var(--fs-label); font-weight: 800; line-height: 16px; } /* navy on orange 5.7:1 (§1.10) */
.promo-card__cta { grid-area: cta; justify-self: start; gap: var(--s-1); min-height: 32px; margin-top: var(--s-2); padding: 0 var(--s-3); font-size: var(--fs-meta); white-space: nowrap; }
.promo-card__cta::after { content: "→"; transition: transform var(--dur-2) var(--ease); }
@container (min-width: 440px) {
	.promo-card__brand, .promo-card__title, .promo-card__note, .promo-card__price, .promo-card__cta { margin-left: var(--s-2); } /* 24 px from the edge */
	.promo-card__title { font-size: clamp(18px, 3.6cqi, 24px); font-weight: 800; line-height: 1.16; letter-spacing: -.015em; } /* 3 lines: long Milwaukee model codes stay whole */
	.promo-card__note { display: block; min-width: 0; margin-top: var(--s-2); overflow: hidden; color: var(--c-on-dark); font-size: var(--fs-small); font-weight: 500; line-height: 1.4; white-space: nowrap; text-overflow: ellipsis; }
	.promo-card__price { margin-top: var(--s-3); }
	.promo-card__price strong { font-size: clamp(22px, 4.6cqi, 32px); }
	.promo-card__cta { min-height: 36px; margin-top: var(--s-3); padding: 0 var(--s-4); font-size: var(--fs-btn-sm); }
}
/* Large (≥580: desktop two columns): sale line above the price, as on product cards (§1.10). */
@container (min-width: 580px) {
	.promo-card__price strong { order: 0; flex-basis: 100%; }
	.promo-card__price del { font-size: var(--fs-small); }
	.promo-card__cta { min-height: 40px; margin-top: var(--s-4); }
}

/* Square, light (Shop Collections 1:1; also 4:5). The photo multiplies straight into the card. */
.promo-card--light {
	grid-template-columns: minmax(0, 1fr) auto;
	grid-template-rows: minmax(0, 1fr) auto auto auto;
	grid-template-areas: "media media" "brand brand" "title title" "price cta";
	padding: var(--s-3);
	border: 1px solid var(--c-border);
	background: radial-gradient(80% 65% at 50% 36%, var(--c-white) 0%, rgba(255, 255, 255, 0) 72%), var(--g-media);
	color: var(--c-navy);
}
.promo-card--light .promo-card__img { padding: 0 6%; } /* the catalog photos carry their own margins */
.promo-card--light .promo-card__brand { display: none; margin: var(--s-2) 0 0; color: var(--c-blue); }
.promo-card--light .promo-card__title { -webkit-line-clamp: 2; min-height: calc(2 * 1.3em); margin-top: var(--s-2); color: var(--c-navy); font-size: 13px; font-weight: 700; line-height: 1.3; letter-spacing: 0; } /* two lines reserved: brands and prices align across the row */
.promo-card--light .promo-card__note { display: none; }
.promo-card--light .promo-card__price { align-self: end; margin: var(--s-1) 0 0; }
.promo-card--light .promo-card__price strong { color: var(--c-navy); font-size: 19px; } /* 19 px bold = large text: sale orange 4.3:1 passes */
.promo-card--light .promo-card__price.is-sale strong { color: var(--c-orange-text); }
.promo-card--light .promo-card__price del { display: none; color: var(--c-muted); }
/* The call to action shrinks to a frosted arrow circle (its words are in the link's name context only). */
.promo-card--light .promo-card__cta { display: none; align-self: end; width: 40px; min-height: 40px; height: 40px; margin: 0 0 0 var(--s-2); padding: 0; border-radius: 50%; font-size: 0; }
.promo-card--light .promo-card__cta::after { font-size: 18px; line-height: 1; }
@container (min-width: 240px) {
	.promo-card--light .promo-card__brand { display: flex; }
	.promo-card--light .promo-card__title { font-size: 15px; }
	.promo-card--light .promo-card__price strong { font-size: clamp(19px, 7cqi, 24px); }
	.promo-card--light .promo-card__price del { display: inline; }
	.promo-card--light .promo-card__cta { display: inline-flex; }
}
@container (min-width: 440px) {
	.promo-card--light .promo-card__brand, .promo-card--light .promo-card__title, .promo-card--light .promo-card__price, .promo-card--light .promo-card__cta { margin-left: 0; }
	.promo-card--light .promo-card__title { font-size: 17px; }
}
@media (hover: hover) and (pointer: fine) {
	.promo-card:hover .promo-card__img { transform: scale(1.03); }
	.promo-card:hover .promo-card__cta::after { transform: translateX(3px); }
	.promo-card:hover .btn--glass { border-color: var(--glass-border-hover); background: var(--glass-bg-hover); }
	.promo-card:hover .btn--frost { border-color: var(--c-blue); background: var(--c-blue); color: var(--c-white); }
	.banners__col > a.promo-card:hover { box-shadow: var(--shadow-lift); }
}

/* -------------------------------------------------------------------------
   Depth without noise: soft light on the hero slides and the navy bands,
   a gray-to-white hero band. All gradients stay within ~10% luminance and
   away from text (the orange title accent keeps ≥ 3:1).
   ------------------------------------------------------------------------- */
.hero-slider { background: linear-gradient(180deg, var(--c-gray) 0%, var(--c-gray) 55%, var(--c-white) 100%); }
.hero-slide { background-image: radial-gradient(60% 80% at 100% 100%, rgba(255, 255, 255, .1) 0%, rgba(255, 255, 255, 0) 70%), linear-gradient(160deg, var(--c-blue) 0%, var(--c-blue-hover) 100%); }
.hero-slide--navy { background-image: radial-gradient(60% 80% at 100% 100%, rgba(255, 255, 255, .07) 0%, rgba(255, 255, 255, 0) 70%), linear-gradient(160deg, var(--c-navy-2) 0%, var(--c-navy) 100%); }
.hero-slide--light, .hero-slide--image { background-image: none; }
.steps-cta, .section--service .service-cta__body, .banner-feature__panel { background-image: radial-gradient(70% 90% at 100% 0%, rgba(255, 255, 255, .06) 0%, rgba(255, 255, 255, 0) 70%); }

/* -------------------------------------------------------------------------
   Product cards: lift on hover (2 px, soft wide shadow; the rails reserve
   16 px above for it), image zoom stays. Not on touch, not with reduced motion.
   ------------------------------------------------------------------------- */
ul.products li.product, .site-content ul.products li.product { transition: box-shadow var(--dur-2) var(--ease), border-color var(--dur-2) var(--ease), transform var(--dur-2) var(--ease); }
@media (hover: hover) and (pointer: fine) {
	ul.products li.product:hover, .site-content ul.products li.product:hover { transform: translateY(-2px); box-shadow: var(--shadow-lift); }
	.cat-card:hover { box-shadow: var(--shadow-lift); }
}
@media (prefers-reduced-motion: reduce) {
	ul.products li.product:hover, .site-content ul.products li.product:hover, .cat-card:hover, .banners__col > a.banner:hover { transform: none; }
	:is(.btn--primary, .woocommerce a.button.alt, .woocommerce button.button.alt, .single_add_to_cart_button, .wc-block-components-checkout-place-order-button, .wc-block-cart__submit-button, .woocommerce a.checkout-button):is(:hover, :active) { transform: none; }
	.promo-card:hover .promo-card__img, ul.products li.product:hover a img, .site-content ul.products li.product:hover a img { transform: none; }
}

/* Loading placeholders (§1.8, no shimmer): every media box already rests on --g-media / white; the image banners
   join them (they were flat gray), so a lazy banner arrives on the same tint as the cards around it. */
.banner__media { background: var(--g-media); }

/* -------------------------------------------------------------------------
   Fallbacks: no backdrop-filter, or the visitor asks for less transparency →
   solid colours with the same contrast.
   ------------------------------------------------------------------------- */
@supports not ((-webkit-backdrop-filter: blur(1px)) or (backdrop-filter: blur(1px))) {
	.btn--glass, .btn--outline-light, .drawer .mnav-band .mnav-all.btn--glass { background: var(--glass-solid); }
	.btn--glass:hover, .btn--outline-light:hover, .promo-card:hover .btn--glass, .drawer .mnav-band .mnav-all.btn--glass:hover { background: var(--glass-solid-hover); }
	.btn--frost, .btn--outline, .banner-slider__btn, .hero-slide--light .btn--glass { background: var(--frost-solid); }
	.rail__btn, .cat-slider__btn { background: var(--c-white); }
	@media (min-width: 1024px) { .hero-slider:not(.is-light) .hero-slider__btn { background: var(--glass-solid); } }
	@media (max-width: 1023.98px) { .hero-slider__btn { background: var(--frost-solid); } }
}
@media (prefers-reduced-transparency: reduce) {
	.btn--glass, .btn--outline-light, .btn--frost, .btn--outline, .hero-slider__btn, .banner-slider__btn, .rail__btn, .cat-slider__btn, ul.products li.product .button { -webkit-backdrop-filter: none; backdrop-filter: none; }
	.btn--glass, .btn--outline-light, .drawer .mnav-band .mnav-all.btn--glass { background: var(--glass-solid); }
	.btn--glass:hover, .btn--outline-light:hover, .promo-card:hover .btn--glass, .drawer .mnav-band .mnav-all.btn--glass:hover { background: var(--glass-solid-hover); }
	.btn--frost, .btn--outline, .banner-slider__btn, .hero-slide--light .btn--glass, ul.products li.product .button:not(:hover), .site-content ul.products li.product .button:not(:hover) { background: var(--frost-solid); }
	.rail__btn:not(:hover), .cat-slider__btn:not(:hover) { background: var(--c-white); }
}
@media (prefers-reduced-transparency: reduce) and (min-width: 1024px) { .hero-slider:not(.is-light) .hero-slider__btn { background: var(--glass-solid); } }
@media (prefers-reduced-transparency: reduce) and (max-width: 1023.98px) { .hero-slider__btn { background: var(--frost-solid); } }

/* =========================================================================
   Categories panel 0.7.2 (public.gr pattern, theme.js megaMenu)
   «Όλες οι κατηγορίες» and «Περισσότερες κατηγορίες» open a modal panel fixed 16 px under the header: it stays put
   while the page scrolls. Three columns, each scrolling on its own: categories | subcategories (photos) | chips.
   ========================================================================= */
.mega[hidden] { display: none; }
.mega { position: fixed; inset: 0; z-index: var(--z-drawer); }
.mega__scrim { position: absolute; inset: 0; background: rgba(11, 37, 69, .42); -webkit-backdrop-filter: blur(4px); backdrop-filter: blur(4px); }
@supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))) { .mega__scrim { background: rgba(11, 37, 69, .6); } }
@media (prefers-reduced-transparency: reduce) { .mega__scrim { background: rgba(11, 37, 69, .6); -webkit-backdrop-filter: none; backdrop-filter: none; } }
.mega__frame { position: absolute; top: var(--mega-top, 96px); left: 0; right: 0; display: grid; grid-template-columns: minmax(0, 1fr) 44px; gap: var(--s-3); align-items: start; pointer-events: none; }
.mega__box, .mega__close { pointer-events: auto; }
.mega__box { display: grid; grid-template-columns: 300px minmax(0, 1fr) minmax(0, 1.15fr); height: min(640px, calc(100vh - var(--mega-top, 96px) - 24px)); height: min(640px, calc(100dvh - var(--mega-top, 96px) - 24px)); background: var(--c-white); border-radius: var(--r-card); box-shadow: var(--shadow-3); overflow: hidden; animation: mega-in var(--dur-2) var(--ease); }
@keyframes mega-in { from { opacity: 0; transform: translateY(-6px); } }
@media (prefers-reduced-motion: reduce) { .mega__box { animation: none; } }
.mega__col { display: flex; flex-direction: column; min-width: 0; min-height: 0; padding: var(--s-4) 0; }
.mega__col + .mega__col { border-left: 1px solid var(--c-border); }
.mega__col--leaf { background: var(--c-gray); }
.mega__list { flex: 1 1 auto; min-height: 0; overflow-y: auto; overscroll-behavior: contain; margin: 0; padding: 0 var(--s-3); list-style: none; scrollbar-width: thin; scrollbar-color: #c3ccd6 transparent; }
.mega__list::-webkit-scrollbar { width: 8px; }
.mega__list::-webkit-scrollbar-thumb { background: #c3ccd6; border-radius: 4px; }
.mega__head { flex: none; display: flex; align-items: center; justify-content: space-between; gap: var(--s-3); min-height: 44px; margin-bottom: var(--s-2); padding: 0 var(--s-4) 0 var(--s-6); }
.mega__title { margin: 0; color: var(--c-navy); font-size: 18px; font-weight: 800; line-height: 1.25; }
.mega__all { flex: none; display: inline-flex; align-items: center; min-height: 36px; padding: 0 var(--s-4); border: 1.5px solid var(--c-blue); border-radius: var(--r-btn); color: var(--c-blue); font-size: var(--fs-small); font-weight: 700; white-space: nowrap; }
.mega__all:hover { background: var(--c-blue); color: var(--c-white); }
.mega-cat, .mega-sub { display: flex; align-items: center; gap: var(--s-3); min-height: 48px; padding: var(--s-1) var(--s-3); border-radius: var(--r-btn); color: var(--c-navy); font-size: var(--fs-small); font-weight: 600; line-height: 1.3; }
.mega-cat svg { flex: none; width: 22px; height: 22px; color: var(--c-navy); }
.mega-cat__name, .mega-sub__name { flex: 1 1 auto; min-width: 0; }
.mega-cat.has-children::after, .mega-sub.has-children::after { content: ""; flex: none; width: 7px; height: 7px; margin-right: var(--s-1); border-top: 2px solid currentColor; border-right: 2px solid currentColor; transform: rotate(45deg); opacity: .45; }
.mega-cat:hover, .mega-sub:hover, .mega-cat.is-active, .mega-sub.is-active { background: var(--c-tint); color: var(--c-blue); }
.mega-cat.is-active svg { color: var(--c-blue); }
.mega-thumb { flex: none; display: grid; place-items: center; width: 40px; height: 40px; overflow: hidden; border-radius: 50%; background: var(--c-gray); }
.mega-thumb img { width: 100%; height: 100%; object-fit: contain; mix-blend-mode: multiply; }
.mega-thumb svg { width: 20px; height: 20px; color: var(--c-blue); }
.mega__chips { display: flex; flex-wrap: wrap; align-content: flex-start; gap: var(--s-2); padding: 0 var(--s-4) 0 var(--s-6); }
.mega-chip { display: inline-flex; align-items: center; min-height: 40px; padding: var(--s-2) var(--s-4); border: 1px solid var(--c-border); border-radius: var(--r-btn); background: var(--c-white); color: var(--c-navy); font-size: var(--fs-small); font-weight: 600; line-height: 1.3; }
.mega-chip:hover { border-color: var(--c-blue); color: var(--c-blue); }
.mega__close { display: grid; place-items: center; width: 44px; height: 44px; padding: 0; border: 0; border-radius: 50%; background: var(--c-white); color: var(--c-navy); box-shadow: var(--shadow-3); cursor: pointer; }
.mega__close svg { width: 20px; height: 20px; }
.mega__close:hover { color: var(--c-blue); }
.mega :focus-visible { outline: 3px solid var(--c-blue); outline-offset: -3px; }
.mega__close:focus-visible { outline-offset: 2px; }
@media (max-width: 1279.98px) { .mega__box { grid-template-columns: 260px minmax(0, 1fr) minmax(0, 1fr); } }

/* Accepted cards row (footer, above the bottom bar): full-colour card marks + the acquirer, for Piraeus' e-commerce
   review. The marks keep their own artwork and proportions (no recolouring, no cropping) with clear space around. */
.footer-cards { border-top: 1px solid var(--c-line-dark); }
.footer-cards .container { display: flex; flex-wrap: wrap; align-items: center; gap: var(--s-3) var(--s-4); padding-top: var(--s-4); padding-bottom: var(--s-4); }
.footer-cards__label { margin: 0; color: var(--c-on-dark); font-size: var(--fs-meta); font-weight: 600; }
.footer-cards__bank { display: block; width: auto; height: 44px; padding: var(--s-1) var(--s-2); border-radius: var(--r-xs); background: var(--c-white); }
.footer-cards__list { display: flex; flex-wrap: wrap; gap: var(--s-2); margin: 0 0 0 auto; padding: 0; list-style: none; }
.footer-cards__list img { display: block; width: 51px; height: 32px; }
@media (max-width: 767.98px) { .footer-cards__list { flex-basis: 100%; margin-left: 0; } }

/* =========================================================================
   Contact page 0.7.5 (page-epikoinonia.php): contact cards with icons, the form in a card, a map loaded on demand.
   ========================================================================= */
.contact-lead { margin: var(--s-2) 0 0; max-width: 60ch; color: var(--c-muted); font-size: var(--fs-body, 16px); }
.contact-page { display: grid; gap: var(--s-8); padding-top: var(--s-8); padding-bottom: var(--section-y, 64px); }
.contact-layout { display: grid; gap: var(--s-6); align-items: start; }
@media (min-width: 1024px) { .contact-layout { grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); gap: var(--s-8); } }
.contact-info { display: grid; gap: var(--s-4); }
.contact-cards { display: grid; gap: var(--s-3); margin: 0; padding: 0; list-style: none; }
.contact-card { display: flex; gap: var(--s-4); align-items: flex-start; padding: var(--s-4) var(--s-4); border: 1px solid var(--c-border); border-radius: var(--r-card); background: var(--c-white); }
.contact-card__icon { flex: none; display: grid; place-items: center; width: 44px; height: 44px; border-radius: 50%; background: var(--c-tint); color: var(--c-blue); }
.contact-card__icon svg { width: 22px; height: 22px; }
.contact-card__body { display: grid; gap: 2px; min-width: 0; }
.contact-card__label { margin: 0; color: var(--c-muted); font-size: var(--fs-meta); font-weight: 700; letter-spacing: .04em; text-transform: uppercase; }
.contact-card__value { margin: 0; color: var(--c-navy); font-size: var(--fs-h4); font-weight: 800; line-height: 1.35; overflow-wrap: anywhere; }
a.contact-card__value:hover { color: var(--c-blue); }
.contact-card__value--text { font-size: 16px; font-weight: 700; }
.contact-card__meta { margin: 0; color: var(--c-muted); font-size: var(--fs-small); }
.contact-card__link { min-height: 36px; }
.contact-hours { padding: var(--s-4) var(--s-4) var(--s-2); border-radius: var(--r-card); background: var(--c-gray); }
.contact-hours__title { display: flex; align-items: center; gap: var(--s-2); margin: 0 0 var(--s-2); font-size: var(--fs-h4); font-weight: 800; color: var(--c-navy); }
.contact-hours__title svg { width: 20px; height: 20px; color: var(--c-blue); }
.contact-hours__list { margin: 0; }
.contact-hours__row { display: flex; justify-content: space-between; gap: var(--s-4); padding: var(--s-2) 0; border-top: 1px solid var(--c-border); font-size: var(--fs-small); }
.contact-hours__row dt { color: var(--c-navy); }
.contact-hours__row dd { margin: 0; font-weight: 700; color: var(--c-navy); font-variant-numeric: tabular-nums; white-space: nowrap; }
.contact-hours__row.is-closed dd { color: var(--c-muted); }
.contact-form-card { padding: var(--s-6); border: 1px solid var(--c-border); border-radius: var(--r-card); background: var(--c-white); box-shadow: var(--shadow-2); }
.contact-form-card h2 { margin: 0; font-size: var(--fs-h3); }
.contact-form-card__intro { margin: var(--s-2) 0 var(--s-4); color: var(--c-muted); font-size: var(--fs-small); }
.contact-form-card .tsixlis-form { max-width: none; margin-top: 0; }
.contact-form-card .tsixlis-form__section { padding-left: 0; padding-right: 0; border: 0; border-radius: 0; }
.contact-form-card .tsixlis-form__section legend { padding: 0; margin-bottom: var(--s-3); }
@media (max-width: 767.98px) { .contact-form-card { padding: var(--s-4); } }
.contact-map__frame { position: relative; overflow: hidden; aspect-ratio: 21 / 8; min-height: 320px; border: 1px solid var(--c-border); border-radius: var(--r-card); background: var(--c-tint); }
@media (max-width: 767.98px) { .contact-map__frame { aspect-ratio: 4 / 5; } }
.contact-map__frame iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }
.contact-map__placeholder { position: absolute; inset: 0; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: var(--s-2); padding: var(--s-6); text-align: center;
	background: radial-gradient(circle at 50% 40%, var(--c-white) 0, transparent 60%), repeating-linear-gradient(0deg, transparent 0 39px, rgba(19, 70, 133, .06) 39px 40px), repeating-linear-gradient(90deg, transparent 0 39px, rgba(19, 70, 133, .06) 39px 40px), var(--c-tint); }
.contact-map__pin { display: grid; place-items: center; width: 56px; height: 56px; border-radius: 50%; background: var(--c-blue); color: var(--c-white); box-shadow: var(--shadow-2); }
.contact-map__pin svg { width: 28px; height: 28px; }
.contact-map__name { margin: var(--s-2) 0 0; font-size: var(--fs-h4); font-weight: 800; color: var(--c-navy); }
.contact-map__address { margin: 0; color: var(--c-muted); font-size: var(--fs-small); }
.contact-map__actions { display: flex; flex-wrap: wrap; justify-content: center; gap: var(--s-2); margin-top: var(--s-2); }
.contact-map__note { margin: var(--s-1) 0 0; color: var(--c-muted); font-size: var(--fs-meta); }
.contact-links { padding: var(--s-4); border: 1px solid var(--c-border); border-radius: var(--r-card); }
.contact-links__title { margin: 0 0 var(--s-2); font-size: var(--fs-meta); font-weight: 700; letter-spacing: .04em; text-transform: uppercase; color: var(--c-muted); }
.contact-links ul { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--s-1) var(--s-3); margin: 0; padding: 0; list-style: none; }
.contact-links a { display: flex; align-items: center; gap: var(--s-2); min-height: 40px; color: var(--c-navy); font-size: var(--fs-small); font-weight: 600; }
.contact-links a:hover { color: var(--c-blue); }
.contact-links svg { flex: none; width: 18px; height: 18px; color: var(--c-blue); }
@media (max-width: 399.98px) { .contact-links ul { grid-template-columns: minmax(0, 1fr); } }
/* Desktop: the details stay in view beside the (taller) form. */
@media (min-width: 1024px) { .contact-info { position: sticky; top: var(--parity-sticky-top); } }
.contact-legal { padding: var(--s-4); border: 1px solid var(--c-border); border-radius: var(--r-card); }
.contact-legal__list { display: grid; gap: var(--s-1); margin: 0; }
.contact-legal__list div { display: flex; justify-content: space-between; gap: var(--s-4); font-size: var(--fs-small); }
.contact-legal__list dt { color: var(--c-muted); }
.contact-legal__list dd { margin: 0; font-weight: 700; color: var(--c-navy); text-align: right; font-variant-numeric: tabular-nums; }
