/*!
 * minifabrik-child main.css
 * Ported from minifabrik-prototype-v6.html <style> block (source of truth).
 * :root below aliases theme.json design tokens; do not hard-code hex values.
 */
/* Short aliases forwarding to theme.json design tokens.
   The theme.json registers palette and fontFamilies that WP emits as
   --wp--preset--color--{slug} and --wp--preset--font-family--{slug}.
   Everything below uses the short names; update theme.json to change values. */
:root {
	--cream:           var(--wp--preset--color--cream);
	--warm-white:      var(--wp--preset--color--warm-white);
	--hero-bg:         var(--wp--preset--color--hero-bg);
	--blush:           var(--wp--preset--color--blush);
	--blush-light:     var(--wp--preset--color--blush-light);
	--sage:            var(--wp--preset--color--sage);
	--sage-dark:       var(--wp--preset--color--sage-dark);
	--sage-light:      var(--wp--preset--color--sage-light);
	--sage-pale:       var(--wp--preset--color--sage-pale);
	--terracotta:      var(--wp--preset--color--terracotta);
	--terracotta-dark: var(--wp--preset--color--terracotta-dark);
	--sky:             var(--wp--preset--color--sky);
	--sky-soft:        var(--wp--preset--color--sky-soft);
	--peach:           var(--wp--preset--color--peach);
	--charcoal:        var(--wp--preset--color--charcoal);
	--warm-gray:       var(--wp--preset--color--warm-gray);
	--light-gray:      var(--wp--preset--color--light-gray);
	--mustard:         var(--wp--preset--color--mustard);
	--dusty-rose:      var(--wp--preset--color--dusty-rose);
	--cloud:           var(--wp--preset--color--cloud);

	--font-heading: var(--wp--preset--font-family--heading);
	--font-body:    var(--wp--preset--font-family--body);
	--font-accent:  var(--wp--preset--font-family--accent);

	/* Logo text colour — charcoal. The PNG balloon carries the brand hue. */
	--logo-color: #2D2926;
}
* { margin: 0; padding: 0; box-sizing: border-box; }
html { scroll-behavior: smooth; }
body {
  font-family: var(--font-body);
  background: var(--cream);
  color: var(--charcoal);
  overflow-x: hidden;
  -webkit-font-smoothing: antialiased;
  font-weight: 400;
  line-height: 1.55;
}
img { max-width: 100%; display: block; }
a { color: inherit; }

h1, h2, h3, h4, h5 { font-family: var(--font-heading); font-weight: 400; line-height: 1.2; letter-spacing: 0.5px; }

/* =========================================================
   HEADER - Bunny6 stílus: hamburger | logó | ikonok
   fehér háttér, alatta felhős (scalloped) elválasztó
   ========================================================= */
header {
  position: sticky; top: 0; z-index: 100;
  background: #ffffff;
}
.header-main {
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  align-items: center;
  max-width: 1600px;
  margin: 0 auto;
  padding: 22px 48px;
  gap: 24px;
}

/* Bal oldal: hamburger + Menu felirat */
.menu-toggle {
  display: flex; align-items: center; gap: 14px;
  background: none; border: none; cursor: pointer;
  font-family: var(--font-body); font-weight: 500;
  font-size: 0.95rem; color: var(--charcoal);
  padding: 8px 4px;
}
.hamburger { display: flex; flex-direction: column; gap: 4px; width: 22px; }
.hamburger span {
  display: block; height: 2px; background: var(--charcoal);
  border-radius: 2px; transition: all 0.3s ease;
}
.hamburger span:nth-child(2) { width: 75%; }
.menu-toggle:hover .hamburger span { background: var(--terracotta); }

/* Középső: logó — szöveg + PNG ballon kép egymás mellett */
.logo {
  display: flex; flex-direction: row; align-items: center; justify-content: center;
  text-decoration: none; color: var(--charcoal);
  gap: 8px;
}
.logo-text {
  font-family: var(--font-heading);
  font-size: 2.2rem;
  letter-spacing: 2px;
  color: var(--logo-color);
  font-weight: 400;
  line-height: 1;
}
.logo-balloon-img {
  height: 48px;
  width: auto;
  flex-shrink: 0;
  margin-left: 6px;
  margin-top: -4px;
  display: block;
}
.logo-balloon-img.sidebar-balloon { height: 28px; margin: 0; }
.logo-balloon-img.footer-balloon  { height: 36px; margin: 0; }
/* oi-6: WC core CSS (`.woocommerce-page img { height: auto }`, specificity
 * 0,1,1) outranks `.logo-balloon-img` (0,1,0) and lets the header logo
 * render at its native pixel size on /shop/, /product/, /cart/, /checkout/.
 * Bump scope to `body.woocommerce` (0,2,1) and exclude the sidebar/footer
 * modifier variants which carry their own height. */
body.woocommerce .logo-balloon-img:not(.sidebar-balloon):not(.footer-balloon) {
  height: 48px;
}
.sidebar-brand {
  font-family: var(--font-heading);
  font-size: 1.5rem;
  color: var(--logo-color);
  letter-spacing: 1.5px;
  display: inline-flex;
  align-items: center;
  gap: 6px;
  line-height: 1;
}

/* Jobb oldal: ikonok - háttér nélkül, ahogy kérted */
.header-icons {
  display: flex; justify-content: flex-end; gap: 22px; align-items: center;
}
.header-icons button,
.header-icons a {
  background: none; border: none; cursor: pointer;
  color: var(--charcoal); text-decoration: none;
  width: 32px; height: 32px;
  display: flex; align-items: center; justify-content: center;
  transition: color 0.25s;
  position: relative;
}
.header-icons button:hover,
.header-icons a:hover { color: var(--terracotta); }
.header-icons svg { width: 22px; height: 22px; stroke-width: 1.6; }

.icon-badge {
  position: absolute; top: -4px; right: -6px;
  background: var(--terracotta); color: white;
  font-size: 0.62rem; font-weight: 600;
  width: 16px; height: 16px; border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  font-family: var(--font-body);
}

/* =========================================================
   SIDEBAR MENÜ - hamburgerre csúszik be balról
   Megoldja a 18-as pontot: nincs dropdown hover issue
   ========================================================= */
.sidebar-overlay {
  position: fixed; inset: 0;
  background: rgba(45,41,38,0.5);
  opacity: 0; visibility: hidden;
  transition: all 0.35s ease;
  z-index: 200;
}
.sidebar-overlay.open { opacity: 1; visibility: visible; }

.sidebar-menu {
  position: fixed; top: 0; left: 0;
  width: 420px; max-width: 92vw; height: 100vh;
  background: #ffffff;
  transform: translateX(-100%);
  transition: transform 0.4s cubic-bezier(0.4, 0, 0.2, 1);
  z-index: 201;
  overflow-y: auto;
  padding: 32px 36px 40px;
}
.sidebar-menu.open { transform: translateX(0); }

.sidebar-head {
  display: flex; justify-content: space-between; align-items: center;
  margin-bottom: 32px; padding-bottom: 20px;
  border-bottom: 1px solid var(--light-gray);
}
.sidebar-title { font-family: var(--font-heading); font-size: 1.4rem; color: var(--charcoal); }
.sidebar-close {
  background: none; border: none; cursor: pointer;
  width: 36px; height: 36px;
  display: flex; align-items: center; justify-content: center;
  color: var(--charcoal); font-size: 1.4rem;
  transition: color 0.2s;
}
.sidebar-close:hover { color: var(--terracotta); }

.sidebar-nav { list-style: none; }
.sidebar-nav > li > a,
.sidebar-nav > li > .cat-toggle {
  display: flex; align-items: center; justify-content: space-between;
  width: 100%;
  padding: 14px 4px;
  text-decoration: none; color: var(--charcoal);
  font-family: var(--font-body); font-size: 1rem; font-weight: 500;
  background: none; border: none; cursor: pointer;
  text-align: left;
  transition: color 0.2s;
}
.sidebar-nav > li > a:hover,
.sidebar-nav > li > .cat-toggle:hover { color: var(--terracotta); }
.cat-toggle .chev {
  transition: transform 0.3s;
  font-size: 1.4rem;
  line-height: 1;
  font-weight: 400;
  color: var(--warm-gray);
}
.cat-toggle.active .chev { transform: rotate(90deg); }

.sub-list {
  list-style: none;
  max-height: 0; overflow: hidden;
  transition: max-height 0.4s ease;
  padding-left: 14px;
}
.sub-list.open { max-height: 500px; padding-bottom: 12px; }
.sub-list li a {
  display: block; padding: 10px 4px;
  text-decoration: none; color: var(--warm-gray);
  font-size: 0.92rem;
  transition: color 0.2s, padding-left 0.2s;
}
.sub-list li a:hover {
  color: var(--terracotta); padding-left: 8px;
}

.sidebar-footer {
  margin-top: 36px;
  padding-top: 24px;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 12px;
}
.sidebar-bear {
  width: 72px;
  height: 80px;
  animation: peek 4s ease-in-out infinite;
}

/* =========================================================
   SEARCH OVERLAY - a header alá lecsúszó kis panel
   ========================================================= */
.search-overlay {
  position: fixed;
  top: 0; left: 0; right: 0;
  z-index: 250;
  background: white;
  border-bottom: 1px solid var(--light-gray);
  box-shadow: 0 8px 24px rgba(0,0,0,0.08);
  transform: translateY(-100%);
  transition: transform 0.35s cubic-bezier(0.4, 0, 0.2, 1);
  padding: 22px 48px;
}
.search-overlay.open { transform: translateY(0); }
.search-overlay-backdrop {
  position: fixed; inset: 0;
  background: rgba(45,41,38,0.15);
  z-index: 249;
  opacity: 0; visibility: hidden;
  transition: all 0.3s;
}
.search-overlay-backdrop.open { opacity: 1; visibility: visible; }

.search-box-wrap {
  max-width: 640px;
  margin: 0 auto;
  display: flex; align-items: center; gap: 16px;
  position: relative;
}
.search-input-wrap {
  flex: 1;
  position: relative;
  border-bottom: 2px solid var(--charcoal);
}
.search-input-wrap input {
  width: 100%;
  border: none; background: transparent;
  padding: 10px 48px 10px 8px;
  font-family: var(--font-body);
  font-size: 1.1rem;
  color: var(--charcoal);
  outline: none;
}
.search-input-wrap input::placeholder { color: var(--warm-gray); }
.search-submit {
  position: absolute; right: 0; top: 50%; transform: translateY(-50%);
  background: none; border: none; cursor: pointer;
  color: var(--charcoal);
  padding: 6px;
}
.search-submit svg { width: 20px; height: 20px; }
.search-close {
  background: none; border: none; cursor: pointer;
  color: var(--charcoal); font-size: 1.4rem;
  width: 34px; height: 34px;
  display: flex; align-items: center; justify-content: center;
  transition: transform 0.2s, color 0.2s;
  flex-shrink: 0;
}
.search-close:hover { transform: rotate(90deg); color: var(--terracotta); }


/* =========================================================
   PHASE 1.5a — Homepage section CSS migrated to GB Pro Global Styles
   (mf-* entries in inc/global-styles-seed.php). The .site-scallop and
   .page-breadcrumb classes below stay because they're used by GP
   Elements and the Rólunk page-header pattern respectively. The 6
   @keyframes definitions stay because Global Style entries reference
   them via the `animation` prop.
   ========================================================= */

/* Site-wide scallop — rendered by the 'minifabrik scallop' GP Element on
   every page, right below the header (wp_body_open priority 11). The SVG's
   top 10px are solid white, extending the header background; the scallop
   curves then bite into the body's cream background. */
.site-scallop {
  position: relative;
  display: block;
  width: 100%;
  line-height: 0;
  margin-top: -1px;      /* eliminate a subpixel seam between header and scallop */
  z-index: 99;           /* under the sticky header (z-index:100), above content */
  pointer-events: none;
}
.site-scallop svg {
  display: block;
  width: 100%;
  height: 70px;
}
@keyframes float { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-12px); } }
@keyframes twinkle { 0%, 100% { opacity: 0.6; transform: scale(1); } 50% { opacity: 1; transform: scale(1.15); } }
@keyframes fadeInUp { from { opacity: 0; transform: translateY(30px); } to { opacity: 1; transform: translateY(0); } }
@keyframes spin-slow { to { transform: rotate(360deg); } }
@keyframes sway { 0%, 100% { transform: rotate(10deg); } 50% { transform: rotate(-5deg); } }
@keyframes peek { 0%, 100% { transform: translateY(0) rotate(-3deg); } 50% { transform: translateY(-8px) rotate(2deg); } }
.page-breadcrumb {
  font-size: 0.88rem;
  color: var(--warm-gray);
  margin-bottom: 28px;
  letter-spacing: 0.3px;
}
.page-breadcrumb a {
  color: var(--warm-gray);
  text-decoration: none;
  transition: color 0.2s;
}
.page-breadcrumb a:hover { color: var(--terracotta); }
.page-breadcrumb span { color: var(--charcoal); }
/* =========================================================
   FOOTER - Buny4 alapú, 3 oszlop, newsletter NÉLKÜL
   ========================================================= */
footer.site-footer {
  background: var(--cream);
  padding: 80px 48px 0;
  position: relative;
  border-top: 1px solid var(--light-gray);
}
.footer-decor-line {
  position: absolute;
  top: -60px; left: 50%; transform: translateX(-50%);
  width: 115px; height: 124px;
  opacity: 0.5;
  pointer-events: none;
}
.footer-inner {
  max-width: 1400px; margin: 0 auto;
  display: grid;
  grid-template-columns: 1fr 1.2fr 1fr;
  gap: 60px;
  align-items: start;
  padding-bottom: 60px;
}

/* Bal oszlop: kapcsolat */
.footer-contact ul { list-style: none; }
.footer-contact li {
  margin-bottom: 14px;
  font-size: 0.95rem;
  color: var(--charcoal);
  line-height: 1.6;
}
.footer-contact li strong { color: var(--charcoal); font-weight: 600; }
.footer-contact a { color: var(--terracotta); text-decoration: none; transition: color 0.2s; }
.footer-contact a:hover { text-decoration: underline; }

/* Közép oszlop: logó + Privacy/Terms + social */
.footer-center { text-align: center; }
.footer-logo {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-family: var(--font-heading);
  font-size: 2rem;
  color: var(--logo-color);
  letter-spacing: 2px;
  margin-bottom: 10px;
  text-decoration: none;
}
.footer-logo-sub {
  font-family: var(--font-accent);
  font-size: 1rem;
  color: var(--warm-gray);
  display: block;
  margin-bottom: 30px;
}

.footer-links {
  display: flex; justify-content: center; gap: 24px;
  margin-bottom: 28px;
  list-style: none;
  flex-wrap: wrap;
}
.footer-links a {
  font-size: 0.86rem;
  color: var(--warm-gray);
  text-decoration: none;
  transition: color 0.2s;
}
.footer-links a:hover { color: var(--terracotta); }

.footer-social {
  display: flex; justify-content: center; gap: 14px;
  list-style: none;
}
.footer-social a {
  width: 42px; height: 42px;
  border-radius: 50%;
  background: white;
  border: 1px solid var(--light-gray);
  display: flex; align-items: center; justify-content: center;
  color: var(--charcoal);
  text-decoration: none;
  transition: all 0.3s;
}
.footer-social a:hover {
  background: var(--sage-dark); color: white;
  border-color: var(--sage-dark);
  transform: translateY(-2px);
}
.footer-social svg { width: 18px; height: 18px; }

/* Jobb oszlop: gyors linkek */
.footer-nav h4 {
  font-family: var(--font-heading);
  font-size: 1.1rem;
  color: var(--charcoal);
  margin-bottom: 18px;
  letter-spacing: 1px;
}
.footer-nav ul { list-style: none; }
.footer-nav li { margin-bottom: 10px; }
.footer-nav a {
  color: var(--warm-gray);
  text-decoration: none;
  font-size: 0.9rem;
  transition: color 0.2s, padding-left 0.2s;
}
.footer-nav a:hover { color: var(--terracotta); padding-left: 4px; }

.footer-bottom {
  border-top: 1px solid var(--light-gray);
  padding: 24px 0;
  text-align: center;
  font-size: 0.82rem;
  color: var(--warm-gray);
}

/* =========================================================
   BACK TO TOP - felhő alakú zöld gomb "TOP" felirattal
   ========================================================= */
.back-to-top {
  position: fixed;
  bottom: 32px; right: 32px;
  width: 70px; height: 58px;
  cursor: pointer;
  z-index: 90;
  opacity: 0;
  visibility: hidden;
  transform: translateY(20px);
  transition: all 0.3s ease;
  background: none; border: none;
  padding: 0;
}
.back-to-top.visible { opacity: 1; visibility: visible; transform: translateY(0); }
.back-to-top:hover { transform: translateY(-4px); }
.back-to-top .cloud-shape {
  position: absolute; inset: 0;
  background:
    radial-gradient(circle at 30% 55%, var(--sage-dark) 20%, transparent 21%),
    radial-gradient(circle at 55% 35%, var(--sage-dark) 26%, transparent 27%),
    radial-gradient(circle at 80% 50%, var(--sage-dark) 22%, transparent 23%),
    radial-gradient(circle at 55% 65%, var(--sage-dark) 30%, transparent 31%);
  filter: drop-shadow(0 4px 12px rgba(0,0,0,0.15));
}
.back-to-top .top-text {
  position: relative;
  color: white;
  font-family: var(--font-heading);
  font-size: 0.85rem;
  letter-spacing: 1.5px;
  display: flex; align-items: center; justify-content: center;
  height: 100%;
  padding-top: 4px;
}

/* =========================================================
   TERMÉKOLDAL - lenti demó részhez
   ========================================================= */
.pd-section {
  padding: 60px 48px 90px;
  background: var(--warm-white);
}
.pd-label {
  text-align: center;
  margin-bottom: 40px;
}
.pd-label h2 {
  font-family: var(--font-heading);
  font-size: 2rem; letter-spacing: 1px;
}
.pd-label p {
  color: var(--warm-gray);
  font-size: 0.9rem;
  margin-top: 6px;
}

.pd-wrap {
  max-width: 1200px; margin: 0 auto;
  background: white;
  border-radius: 24px;
  padding: 48px;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 60px;
  border: 1px solid var(--light-gray);
}
.pd-gallery { display: grid; grid-template-columns: 80px 1fr; gap: 16px; }
.pd-thumbnails { display: flex; flex-direction: column; gap: 10px; }
.pd-thumb {
  width: 80px; height: 80px;
  border-radius: 10px; overflow: hidden;
  border: 2px solid transparent;
  background: var(--cloud);
  cursor: pointer;
  transition: border-color 0.2s;
}
.pd-thumb.active { border-color: var(--terracotta); }
.pd-thumb img,
.pd-thumb .pd-thumb-img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}
.pd-main {
  border-radius: 16px; overflow: hidden;
  background: var(--cloud);
  aspect-ratio: 4/5;
  position: relative;
}
.pd-main img,
.pd-main .pd-main-img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

.pd-info { padding: 4px 0; }
.pd-breadcrumb {
  font-size: 0.82rem; color: var(--warm-gray);
  margin-bottom: 16px;
}
.pd-breadcrumb a { color: var(--warm-gray); text-decoration: none; }
.pd-breadcrumb a:hover { color: var(--terracotta); }
.pd-brand {
  font-size: 0.7rem; color: var(--sage-dark);
  letter-spacing: 2px; text-transform: uppercase;
  font-weight: 600; margin-bottom: 8px;
}
.pd-title {
  font-family: var(--font-heading);
  font-size: 1.9rem; letter-spacing: 1px;
  color: var(--charcoal); margin-bottom: 14px;
}
.pd-price {
  font-size: 1.6rem; font-weight: 700;
  color: var(--terracotta); margin-bottom: 22px;
}
.pd-desc {
  color: var(--warm-gray);
  font-size: 0.92rem; line-height: 1.75;
  margin-bottom: 24px;
  padding-bottom: 24px;
  border-bottom: 1px solid var(--light-gray);
}

.pd-option-label {
  font-size: 0.85rem; font-weight: 600;
  margin-bottom: 10px; color: var(--charcoal);
  display: block;
}
.pd-sizes { display: flex; gap: 10px; margin-bottom: 24px; flex-wrap: wrap; }
.pd-size {
  padding: 10px 22px;
  border: 2px solid var(--light-gray);
  border-radius: 8px;
  font-size: 0.85rem;
  cursor: pointer;
  background: white;
  font-weight: 500;
  font-family: var(--font-body);
  transition: all 0.2s;
}
.pd-size.active, .pd-size:hover {
  border-color: var(--sage);
  background: var(--sage-pale);
  color: var(--sage-dark);
}

/* Dropdown (select) - Moccasin méret + Babafészek add-onok */
.pd-select {
  width: 100%;
  padding: 12px 16px;
  border: 2px solid var(--light-gray);
  border-radius: 10px;
  font-family: var(--font-body);
  font-size: 0.9rem;
  margin-bottom: 20px;
  background: white;
  cursor: pointer;
  appearance: none;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%238A807A' stroke-width='1.5' fill='none'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 16px center;
  outline: none;
  font-weight: 500;
}
.pd-select:focus { border-color: var(--sage); }

/* Szín és minta swatchek - Babafészek */
.pd-swatches {
  display: flex; gap: 8px;
  margin-bottom: 24px;
  flex-wrap: wrap;
}
.pd-swatch {
  width: 48px; height: 48px;
  border-radius: 10px;
  border: 2px solid var(--light-gray);
  cursor: pointer;
  transition: all 0.2s;
  overflow: hidden;
  display: flex; align-items: center; justify-content: center;
  font-size: 0.58rem;
  color: #fff;
  text-shadow: 0 1px 2px rgba(0,0,0,0.25);
  font-weight: 600;
  font-family: var(--font-body);
  position: relative;
}
.pd-swatch.active,
.pd-swatch:hover {
  border-color: var(--terracotta);
  transform: scale(1.08);
  box-shadow: 0 4px 12px rgba(0,0,0,0.1);
}
.pd-swatch.swatch-pattern {
  color: var(--charcoal);
  text-shadow: none;
  font-size: 0.6rem;
}
.pd-swatch.swatch-pattern::before {
  /* rácsos minta, hogy látszódjon hogy "minta" nem csak szín */
  content: '';
  position: absolute; inset: 0;
  background:
    repeating-linear-gradient(45deg, rgba(255,255,255,0.3) 0 3px, transparent 3px 6px);
}
.pd-swatch span, .pd-swatch.swatch-pattern { position: relative; z-index: 1; }

/* Radio list (felirat opcióhoz) */
.pd-radio-group { display: flex; flex-direction: column; gap: 10px; margin-bottom: 20px; }
.pd-radio {
  display: flex; align-items: center; gap: 12px;
  padding: 12px 16px;
  border: 2px solid var(--light-gray);
  border-radius: 10px;
  cursor: pointer;
  transition: all 0.2s;
  font-size: 0.9rem;
}
.pd-radio.active, .pd-radio:hover {
  border-color: var(--sage);
  background: rgba(197,212,188,0.15);
}
.pd-radio-dot {
  width: 18px; height: 18px;
  border-radius: 50%;
  border: 2px solid var(--light-gray);
  position: relative; flex-shrink: 0;
}
.pd-radio.active .pd-radio-dot { border-color: var(--sage); }
.pd-radio.active .pd-radio-dot::after {
  content: '';
  position: absolute; top: 3px; left: 3px;
  width: 8px; height: 8px;
  background: var(--sage);
  border-radius: 50%;
}

.pd-text-input {
  width: 100%; padding: 12px 16px;
  border: 2px solid var(--light-gray);
  border-radius: 10px;
  font-family: var(--font-body);
  font-size: 0.9rem;
  margin-bottom: 24px;
  outline: none;
  transition: border-color 0.3s;
}
.pd-text-input:focus { border-color: var(--sage); }
.pd-text-input.hidden { display: none; }

.pd-add-row { display: flex; gap: 12px; align-items: center; margin-bottom: 16px; }
.qty-control {
  display: flex; align-items: center;
  border: 2px solid var(--light-gray);
  border-radius: 50px;
  overflow: hidden;
}
.qty-control button {
  width: 42px; height: 42px;
  border: none; background: none;
  font-size: 1.1rem; cursor: pointer;
  color: var(--charcoal);
  transition: background 0.2s;
}
.qty-control button:hover { background: var(--cloud); }
.qty-control span {
  width: 36px; text-align: center;
  font-weight: 600; font-family: var(--font-body);
}
.pd-add-cart {
  flex: 1; padding: 13px 32px;
  background: var(--terracotta);
  color: white; border: none;
  border-radius: 50px;
  font-size: 0.95rem; font-weight: 500;
  cursor: pointer;
  transition: all 0.3s;
  font-family: var(--font-body);
  letter-spacing: 0.5px;
}
.pd-add-cart:hover {
  background: var(--terracotta-dark);
  transform: translateY(-1px);
}

/* Szívecske gomb a kosárba tevés mellett - kívánságlistához adás */
.pd-wishlist {
  width: 48px; height: 48px;
  border-radius: 50%;
  border: 2px solid var(--light-gray);
  background: white;
  cursor: pointer;
  display: flex; align-items: center; justify-content: center;
  color: var(--charcoal);
  transition: all 0.25s;
  flex-shrink: 0;
}
.pd-wishlist:hover {
  border-color: var(--terracotta);
  color: var(--terracotta);
  transform: translateY(-1px);
}
.pd-wishlist.active {
  background: var(--terracotta);
  border-color: var(--terracotta);
  color: white;
}
.pd-wishlist svg { width: 20px; height: 20px; stroke-width: 1.8; }

.pd-meta {
  margin-top: 24px;
  padding-top: 24px;
  border-top: 1px solid var(--light-gray);
  font-size: 0.88rem;
  color: var(--warm-gray);
  line-height: 2;
}
.pd-meta strong { color: var(--charcoal); }


/* =========================================================
   RESPONSIVE - tablet + mobil (Phase 1.5b + Phase 2 scope only;
   homepage @media rules now lived in mf-* Global Style entries via
   the GB Pro v2 compile-er atRule bucket — see global-styles-seed.php)
   ========================================================= */
@media (max-width: 1024px) {
  .header-main { padding: 18px 32px; }
  .logo-text { font-size: 1.9rem; }

  .pd-wrap { grid-template-columns: 1fr; padding: 32px; gap: 40px; }

  .footer-inner { grid-template-columns: 1fr; gap: 48px; text-align: center; }
  .footer-contact ul { text-align: center; }
  .footer-nav h4 { text-align: center; }
}

@media (max-width: 768px) {
  .header-main { padding: 14px 20px; gap: 12px; }
  .menu-toggle span.menu-text { display: none; }
  .logo-text { font-size: 1.6rem; letter-spacing: 1.5px; }
  .logo-sub { font-size: 0.75rem; }
  .header-icons { gap: 14px; }
  .header-icons svg { width: 20px; height: 20px; }

  footer.site-footer { padding: 60px 20px 0; }
  .footer-inner { padding-bottom: 40px; gap: 40px; }
  .footer-logo { font-size: 1.6rem; }

  .back-to-top { bottom: 20px; right: 20px; width: 60px; height: 50px; }
  .back-to-top .top-text { font-size: 0.75rem; }

  .pd-section { padding: 40px 20px 70px; }
  .pd-wrap { padding: 24px; }
  .pd-gallery { grid-template-columns: 1fr; }
  .pd-thumbnails { flex-direction: row; overflow-x: auto; }
  .pd-title { font-size: 1.5rem; }
  .pd-price { font-size: 1.35rem; }

  .sidebar-menu { width: 320px; padding: 24px 24px 40px; }

  .search-box-wrap h3 { font-size: 1.4rem; }
  .search-input-wrap input { font-size: 1.1rem; }
  .search-close { top: 20px; right: 20px; }
}

/* ------------------------------------------------------------------ */
/* Variation size buttons — rendered via                               */
/* `woocommerce_dropdown_variation_attribute_options_html` filter,     */
/* see inc/wc-size-button.php. Styled to match the v8 .pd-size pill.   */
/* ------------------------------------------------------------------ */
.pd-variation-attributes { margin: 16px 0 8px; }
.pd-attribute-row { margin-bottom: 24px; }
.pd-attribute-row .pd-option-label {
  display: block;
  font-size: 0.85rem;
  font-weight: 600;
  color: var(--charcoal);
  margin-bottom: 10px;
}
.pd-size-btn-wrap {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
}
.pd-size-btn {
  padding: 10px 22px;
  border: 2px solid var(--light-gray);
  border-radius: 8px;
  background: white;
  color: var(--charcoal);
  font-family: var(--font-body);
  font-size: 0.85rem;
  font-weight: 500;
  cursor: pointer;
  outline: none;
  transition: all 0.2s;
}
.pd-size-btn:hover,
.pd-size-btn--active,
.pd-size-btn[aria-pressed="true"] {
  border-color: var(--sage);
  background: var(--sage-pale);
  color: var(--sage-dark);
}

/* ------------------------------------------------------------------ */
/* :focus-visible — UA-default focus rings replaced with a v8 sage     */
/* outline. Applied across all interactive single-product controls    */
/* so keyboard navigation has clear, on-brand state indication while  */
/* mouse-clicks don't flash a stray outline.                           */
/* ------------------------------------------------------------------ */
.pd-size-btn:focus,
.pd-size:focus,
.pd-swatch:focus,
.pd-radio:focus,
.pd-select:focus,
.pd-text-input:focus,
.pd-add-cart:focus,
.pd-wishlist:focus,
.qty-control button:focus {
  outline: none;
}
.pd-size-btn:focus-visible,
.pd-size:focus-visible,
.pd-swatch:focus-visible,
.pd-radio:focus-visible,
.pd-select:focus-visible,
.pd-text-input:focus-visible,
.pd-add-cart:focus-visible,
.pd-wishlist:focus-visible,
.qty-control button:focus-visible {
  outline: 2px solid var(--sage);
  outline-offset: 2px;
}

/* ================================================================== */
/* Phase G — WC product archive card styling (CSS-only, v0.10.1)       */
/*                                                                     */
/* Maps the WC native .products .product markup (Element 296           */
/* [products] shortcode-output on /shop/ + default archive-loop on     */
/* /product-category/*/) to homepage mf-product-card visual parity.    */
/*                                                                     */
/* The homepage card uses GB Global Style entries (#155-167, #91) as   */
/* design tokens. Since globalClasses is GB-block-only and the WC      */
/* native markup carries woocommerce-* / .product / .price classes,    */
/* we replicate the token values directly on WC selectors here.        */
/*                                                                     */
/* /shop/ duplikáció-suppress is handled by the existing rule at       */
/* style.css:13-15 (`.woocommerce-shop .content-area { display: none }`*/
/* hides the entire default content-area on /shop/, while Element 296  */
/* renders OUTSIDE content-area via generate_inside_container hook).   */
/* Phase G adds NO new duplikáció-suppress — the mechanism already     */
/* works.                                                              */
/*                                                                     */
/* Scope:                                                              */
/*   /shop/                  — Element 296 renders Termékeink h2 +     */
/*                             [products] outside content-area; gets   */
/*                             card-styling from selectors below.      */
/*   /product-category/*/    — Element 294 (Layout) sets body class    */
/*                             full-width-content + no-sidebar; the    */
/*                             default archive-loop renders alone in   */
/*                             content-area, gets card-styling.        */
/* ================================================================== */

/* Full-width override + sidebar suppress.                             */
/* Defensive — /shop/ body has `no-sidebar` already, /product-category */
/* has `full-width-content` from Element 294. Explicit CSS keeps       */
/* Phase G robust against admin edits to those Elements.               */
.archive.post-type-archive-product .site-content,
.archive.tax-product_cat .site-content {
  max-width: none;
}
.archive.post-type-archive-product #left-sidebar,
.archive.post-type-archive-product #right-sidebar,
.archive.tax-product_cat #left-sidebar,
.archive.tax-product_cat #right-sidebar {
  display: none;
}

/* Grid wrapper — mf-grid-products parity (GS #155).                   */
/* Targets ALL .products grids on archive pages: the shortcode-output  */
/* nested inside .gb-element-* (Element 296) on /shop/, AND the        */
/* default-loop direct child of main.site-main on /product-category/*/.*/
.archive.woocommerce ul.products {
  max-width: 1400px;
  margin: 0 auto;
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 28px;
  list-style: none;
  padding: 0;
}
@media (max-width: 1024px) {
  .archive.woocommerce ul.products {
    grid-template-columns: repeat(2, 1fr);
    gap: 20px;
  }
}

/* Card wrapper — mf-product-card parity (GS #156).                    */
/* WC li.product carries vendor width via inline style / float — force */
/* grid-cell behaviour with !important.                                */
.archive.woocommerce ul.products li.product {
  background-color: #ffffff;
  border-radius: 18px;
  overflow: hidden;
  cursor: pointer;
  transition: all 0.3s ease;
  position: relative;
  list-style: none;
  margin: 0;
  padding: 0;
  width: auto !important;
  float: none !important;
  text-align: left;
}
.archive.woocommerce ul.products li.product:hover {
  transform: translateY(-5px);
  box-shadow: 0 14px 40px rgba(0, 0, 0, 0.08);
}
.archive.woocommerce ul.products li.product > a {
  display: block;
  text-decoration: none;
  color: inherit;
}

/* Image wrapper — mf-product-image parity (GS #157).                  */
/* Phase G.1 (v0.10.2): the WC native markup nests an .inside-wc-      */
/* product-image div between .wc-product-image (aspect-ratio wrapper)  */
/* and the <img>. Without explicit positioning the inside-div has no   */
/* height and the img collapses to its native aspect (e.g. 225×300),   */
/* leaving cloud-grey background visible around it. Solution: inside   */
/* div absolute-fills the wrapper, img !important-overrides the WC    */
/* width/height HTML attributes for a 100% × 100% object-fit:cover     */
/* fill of the square.                                                 */
.archive.woocommerce ul.products li.product .wc-product-image {
  position: relative;
  aspect-ratio: 1;
  background-color: var(--wp--preset--color--cloud, #F0EBE5);
  overflow: hidden;
  width: 100%;
}
.archive.woocommerce ul.products li.product .wc-product-image .inside-wc-product-image {
  position: absolute;
  inset: 0;
}
.archive.woocommerce ul.products li.product .wc-product-image img {
  width: 100% !important;
  height: 100% !important;
  object-fit: cover;
  display: block;
}

/* Title — mf-heading-card parity (GS #91).                            */
.archive.woocommerce ul.products li.product .woocommerce-loop-product__title {
  font-family: var(--wp--preset--font-family--heading);
  font-size: 1.05rem;
  letter-spacing: 1px;
  color: var(--wp--preset--color--charcoal, #2D2926);
  font-weight: normal;
  margin: 0;
  padding: 20px 22px 10px;
}
@media (max-width: 767px) {
  .archive.woocommerce ul.products li.product .woocommerce-loop-product__title {
    font-size: 0.95rem;
  }
}

/* Price — mf-product-price parity (GS #167).                          */
/* Phase G.1 (v0.10.2): WC vendor CSS rules `.woocommerce ul.products  */
/* li.product .price` (specificity 0,4,2) outweigh the previous        */
/* Phase G `.archive.woocommerce ul.products li.product .price` selector (0,3,1),    */
/* so the homepage-token mapping was being overridden — price showed   */
/* up in vendor default size/colour. Strengthen specificity to (0,5,2) */
/* by chaining the body class with .woocommerce, plus the inner        */
/* .woocommerce-Price-amount span needs explicit inherit to prevent    */
/* vendor-amount typography from leaking through.                      */
.archive.woocommerce ul.products li.product .price {
  font-family: var(--wp--preset--font-family--body);
  font-weight: 600;
  font-size: 1rem;
  color: var(--wp--preset--color--terracotta, #C67B5C);
  display: block;
  margin: 0;
  padding: 0 22px 24px;
}
.archive.woocommerce ul.products li.product .price .woocommerce-Price-amount,
.archive.woocommerce ul.products li.product .price .woocommerce-Price-amount bdi,
.archive.woocommerce ul.products li.product .price .woocommerce-Price-currencySymbol {
  color: inherit;
  font-weight: inherit;
  font-size: inherit;
  font-family: inherit;
}

/* Hide WC native elements absent from homepage mf-product-card.       */
/* The home card omits star-rating and add-to-cart-button entirely.    */
.archive.woocommerce ul.products li.product .star-rating,
.archive.woocommerce ul.products li.product .button.add_to_cart_button,
.archive.woocommerce ul.products li.product .button.product_type_simple,
.archive.woocommerce ul.products li.product .button.product_type_variable,
.archive.woocommerce ul.products li.product > a + a.button {
  display: none !important;
}

/* ------------------------------------------------------------------ */
/* Phase G.1 (v0.10.2) — Section margin parity.                        */
/*                                                                     */
/* Homepage "Népszerű darabjaink" uses .mf-products-section            */
/* (GS #153: padding 90px 48px desktop / 60px 20px mobile, warm-white  */
/* bg) wrapping .mf-products-section-inner (GS #154: max-width 1400px, */
/* centered). WC archives need parity so the "Termékeink" h2 ↔ result- */
/* count ↔ grid ↔ pagination vertical rhythm matches.                  */
/*                                                                     */
/* /shop/ — Element 296 renders inside .gb-element-053465c2 (its       */
/* outer GB-element wrapper from the post_content). Pad that wrapper.  */
/* /product-category/*/ — default WC archive renders inside            */
/* main.site-main inside .site-content. Pad .site-content.             */
/* ------------------------------------------------------------------ */
.archive.post-type-archive-product .gb-element-053465c2 {
  padding: 90px 48px;
}
.archive.tax-product_cat .site-content {
  padding: 90px 48px;
}
@media (max-width: 767px) {
  .archive.post-type-archive-product .gb-element-053465c2,
  .archive.tax-product_cat .site-content {
    padding: 60px 20px;
  }
}

/* Inner max-width — top-level children of main.site-main on           */
/* /product-category/*/ get centered 1400px (#154 parity). The grid    */
/* itself (.products) already has max-width:1400px from the Phase G    */
/* grid rule above; this normalises the header / result-count /        */
/* ordering / pagination siblings to the same content-width.           */
.archive.tax-product_cat main.site-main > .woocommerce-products-header,
.archive.tax-product_cat main.site-main > .woocommerce-notices-wrapper,
.archive.tax-product_cat main.site-main > .woocommerce-result-count,
.archive.tax-product_cat main.site-main > .woocommerce-ordering,
.archive.tax-product_cat main.site-main > nav.woocommerce-pagination {
  max-width: 1400px;
  margin-left: auto;
  margin-right: auto;
}

/* Vertical rhythm — h2/h1 → result-count → ordering → grid →          */
/* pagination spacing. Tokens picked to feel close to homepage         */
/* mf-section-head + grid spacing without introducing per-element      */
/* explicit Global Styles (would be over-engineering for visual rhythm */
/* on a different markup tree).                                        */
.archive.post-type-archive-product .gb-element-053465c2 h2.gb-text {
  margin: 0 0 24px;
}
.archive.tax-product_cat .woocommerce-products-header {
  margin: 0 0 24px;
  padding: 0;
}
.archive.tax-product_cat .woocommerce-products-header h1.page-title {
  margin: 0;
}
.archive .woocommerce-result-count {
  margin: 0 0 16px;
}
.archive .woocommerce-ordering {
  margin: 0 0 32px;
}
.archive .woocommerce-pagination {
  margin: 48px 0 0;
}

/* ------------------------------------------------------------------ */
/* Phase G.1.1 (v0.10.2) — .site-content flex-anomália fix.            */
/*                                                                     */
/* GP `.site-content { display: flex }` (parent main.css:1176) is a    */
/* sidebar-layout default: with a sidebar present the flex children    */
/* (content-area + widget-area) share the row. On .no-sidebar archives */
/* the single flex child (296 Element wrapper) shrinks to content-     */
/* width (default flex: 0 1 auto, no flex-grow), leaving ~209px of     */
/* unused flex-area to the right.                                       */
/*                                                                     */
/* No multi-column layout is needed on no-sidebar — flatten to block.   */
/* ------------------------------------------------------------------ */
.no-sidebar .site-content {
  display: block;
}
