/* ==========================================================================
   Xccessories Lab — storefront styles (brand layer in brand.css)
   1. Tokens & base      6. Product cards & loops   11. Cart, checkout, account
   2. Layout & utilities 7. Shop archive & filters  12. Pages, posts, misc
   3. Buttons & forms    8. Single product           13. Responsive
   4. Header & nav       9. Drawers, mini cart
   5. Homepage          10. Footer
   ========================================================================== */

@font-face {
	font-family: "Outfit";
	src: url("../fonts/outfit-latin.woff2") format("woff2");
	font-weight: 100 900;
	font-style: normal;
	font-display: swap;
}

/* 1. Tokens & base ------------------------------------------------------- */
:root {
	--gn-accent: #1f5eff;
	--gn-ink: #0d1321;
	--gn-accent-600: color-mix(in srgb, var(--gn-accent) 86%, #000);
	--gn-accent-50: color-mix(in srgb, var(--gn-accent) 8%, #fff);
	--gn-accent-100: color-mix(in srgb, var(--gn-accent) 15%, #fff);
	--gn-text: #334155;
	--gn-muted: #64748b;
	--gn-line: #e6e9ef;
	--gn-line-strong: #d5dae3;
	--gn-bg: #ffffff;
	--gn-soft: #f5f6f8;
	--gn-sale: #e11d48;
	--gn-ok: #15803d;
	--gn-star: #f59e0b;
	--gn-radius: 16px;
	--gn-radius-sm: 10px;
	--gn-shadow: 0 12px 32px -14px rgba(13, 19, 33, .22);
	--gn-shadow-lg: 0 24px 60px -20px rgba(13, 19, 33, .35);
	--gn-font: "Outfit", ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, Arial, sans-serif;
	--gn-header-h: 76px;
	--gn-gap: 16px;
}

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

html { -webkit-text-size-adjust: 100%; scroll-padding-top: 140px; }

body {
	margin: 0;
	font-family: var(--gn-font);
	font-size: 15px;
	line-height: 1.6;
	color: var(--gn-text);
	background: var(--gn-bg);
	-webkit-font-smoothing: antialiased;
	text-rendering: optimizeLegibility;
}

h1, h2, h3, h4, h5, h6 { color: var(--gn-ink); line-height: 1.2; margin: 0 0 .5em; font-weight: 750; letter-spacing: -.01em; }
p { margin: 0 0 1em; }
a { color: var(--gn-accent); text-decoration: none; }
a:hover { color: var(--gn-accent-600); }
img { max-width: 100%; height: auto; display: block; }
svg.gn-icon { flex-shrink: 0; display: inline-block; vertical-align: middle; }
ul, ol { padding-left: 1.2em; }
button { font: inherit; color: inherit; }
:focus-visible { outline: 2px solid var(--gn-accent); outline-offset: 2px; }
::selection { background: var(--gn-accent-100); }

[hidden]:not(.gn-drawer) { display: none !important; }

.screen-reader-text {
	position: absolute !important; width: 1px; height: 1px; padding: 0; margin: -1px;
	overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0;
}
.gn-skip { position: absolute; left: -9999px; top: 8px; z-index: 999; background: var(--gn-ink); color: #fff; padding: 10px 16px; border-radius: 8px; }
.gn-skip:focus { left: 8px; color: #fff; }

/* 2. Layout & utilities -------------------------------------------------- */
.gn-container { width: 100%; max-width: 1320px; margin-inline: auto; padding-inline: 20px; }
.gn-main { min-height: 50vh; }
.gn-section { padding-block: 36px; }
.gn-section__head { display: flex; align-items: flex-end; justify-content: space-between; gap: 16px; margin-bottom: 20px; flex-wrap: wrap; }
.gn-section__title { font-size: clamp(22px, 2.2vw, 28px); font-weight: 800; letter-spacing: -.015em; margin: 0; }
.gn-section__sub { color: var(--gn-muted); margin: 4px 0 0; }
.gn-section__more { display: none; text-align: center; margin: 20px 0 0; }
.gn-link-arrow { display: inline-flex; align-items: center; gap: 6px; font-weight: 700; font-size: 14px; white-space: nowrap; }
.gn-link-arrow svg { transition: transform .15s; }
.gn-link-arrow:hover svg { transform: translateX(3px); }
.gn-eyebrow { display: inline-flex; align-items: center; gap: 6px; font-size: 12px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; color: var(--gn-accent); margin: 0 0 12px; }

.gn-badge {
	position: absolute; top: -6px; right: -8px; min-width: 18px; height: 18px; padding: 0 5px;
	border-radius: 999px; background: var(--gn-accent); color: #fff; font-size: 11px; font-weight: 700;
	line-height: 18px; text-align: center; box-shadow: 0 0 0 2px #fff;
}
.gn-badge[data-count="0"] { display: none; }
.gn-badge--inline { position: static; box-shadow: none; }

.gn-pill { display: inline-flex; align-items: center; gap: 4px; padding: 4px 10px; font-size: 12.5px; font-weight: 700; border-radius: 999px; }
.gn-pill--ok { background: #e8f6ee; color: var(--gn-ok); }
.gn-pill--no { background: #fdecef; color: var(--gn-sale); }
.gn-pill--sale { background: #fff1f3; color: var(--gn-sale); }

.gn-tag { display: inline-block; padding: 3px 8px; font-size: 11px; font-weight: 750; letter-spacing: .02em; border-radius: 6px; line-height: 1.4; }
.gn-tag--sale { background: var(--gn-sale); color: #fff; }
.gn-tag--hot { background: var(--gn-ink); color: #fff; }
.gn-tag--muted { background: #e5e7eb; color: #475569; }

.gn-stars { position: relative; display: inline-block; font-size: 13px; line-height: 1; letter-spacing: 1px; vertical-align: middle; font-family: Arial, sans-serif; }
.gn-stars__track { color: #dfe3ea; }
.gn-stars__fill { position: absolute; inset: 0 auto 0 0; overflow: hidden; white-space: nowrap; color: var(--gn-star); }
.gn-stars__count { font-size: 12px; color: var(--gn-muted); margin-left: 4px; vertical-align: middle; }

.gn-loading { height: 120px; border-radius: var(--gn-radius); background: linear-gradient(90deg, var(--gn-soft), #eceef2, var(--gn-soft)); background-size: 200% 100%; animation: gn-shimmer 1.2s infinite linear; }
@keyframes gn-shimmer { to { background-position: -200% 0; } }

.gn-empty { text-align: center; max-width: 520px; margin: 40px auto; padding: 24px; }
.gn-empty__icon { display: inline-grid; place-items: center; width: 80px; height: 80px; border-radius: 50%; background: var(--gn-accent-50); color: var(--gn-accent); margin-bottom: 16px; }
.gn-empty h1, .gn-empty h2 { font-size: 24px; }
.gn-empty p { color: var(--gn-muted); }
.gn-empty__code { display: block; font-size: 96px; font-weight: 800; letter-spacing: -.05em; color: var(--gn-accent-100); line-height: 1; margin-bottom: 8px; }

/* 3. Buttons & forms ----------------------------------------------------- */
.gn-btn,
.woocommerce a.button, .woocommerce button.button, .woocommerce input.button, .woocommerce #respond input#submit,
.woocommerce a.button.alt, .woocommerce button.button.alt, .woocommerce input.button.alt,
.woocommerce-page a.button, .woocommerce-page button.button {
	display: inline-flex; align-items: center; justify-content: center; gap: 8px;
	min-height: 44px; padding: 10px 20px; border: 1.5px solid transparent; border-radius: var(--gn-radius-sm);
	background: var(--gn-accent); color: #fff; font-family: inherit; font-size: 14.5px; font-weight: 700; line-height: 1.2;
	text-decoration: none; cursor: pointer; transition: background-color .15s, border-color .15s, color .15s, box-shadow .15s;
}
.gn-btn:hover,
.woocommerce a.button:hover, .woocommerce button.button:hover, .woocommerce input.button:hover, .woocommerce #respond input#submit:hover,
.woocommerce a.button.alt:hover, .woocommerce button.button.alt:hover, .woocommerce input.button.alt:hover {
	background: var(--gn-accent-600); color: #fff;
}
.woocommerce button.button:disabled, .woocommerce button.button:disabled[disabled], .woocommerce button.button.alt.disabled, .woocommerce a.button.disabled {
	background: var(--gn-accent); color: #fff; opacity: .45; padding: 10px 20px;
}
.gn-btn--lg { min-height: 52px; padding: 12px 26px; font-size: 15.5px; }
.gn-btn--outline { background: #fff; color: var(--gn-ink); border-color: var(--gn-line-strong); }
.gn-btn--outline:hover { background: #fff; color: var(--gn-accent); border-color: var(--gn-accent); }
.gn-btn--light { background: #fff; color: var(--gn-ink); }
.gn-btn--light:hover { background: var(--gn-accent-50); color: var(--gn-ink); }
.gn-btn--ghost-light { background: transparent; color: #fff; border-color: rgba(255, 255, 255, .35); }
.gn-btn--ghost-light:hover { background: rgba(255, 255, 255, .1); color: #fff; border-color: #fff; }

.gn-iconbtn { display: inline-grid; place-items: center; width: 42px; height: 42px; padding: 0; border: 0; border-radius: 12px; background: transparent; color: var(--gn-ink); cursor: pointer; }
.gn-iconbtn:hover { background: var(--gn-soft); }

input[type="text"], input[type="email"], input[type="search"], input[type="password"], input[type="tel"], input[type="number"], input[type="url"], input[type="date"],
select, textarea,
.woocommerce form .form-row input.input-text, .woocommerce form .form-row textarea, .woocommerce form .form-row select {
	width: 100%; min-height: 46px; padding: 10px 14px; border: 1px solid var(--gn-line-strong); border-radius: var(--gn-radius-sm);
	background: #fff; color: var(--gn-ink); font: inherit; font-size: 15px; line-height: 1.4; transition: border-color .15s, box-shadow .15s;
}
textarea { min-height: 120px; }
select { appearance: none; padding-right: 36px; background: #fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='none' stroke='%2364748b' stroke-width='2' stroke-linecap='round' viewBox='0 0 24 24'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E") no-repeat right 12px center; }
input:focus, select:focus, textarea:focus { outline: none; border-color: var(--gn-accent); box-shadow: 0 0 0 3px var(--gn-accent-100); }
label { font-weight: 600; color: var(--gn-ink); font-size: 14px; }

.gn-searchform { display: flex; gap: 8px; max-width: 520px; margin: 20px auto; }

/* 4. Header & nav -------------------------------------------------------- */
.gn-topbar { background: var(--gn-ink); color: rgba(255, 255, 255, .78); font-size: 13px; }
.gn-topbar__inner { display: flex; align-items: center; justify-content: space-between; gap: 16px; min-height: 38px; }
.gn-topbar__msg { display: flex; align-items: center; gap: 8px; margin: 0; }
.gn-topbar__msg svg { flex-shrink: 0; color: color-mix(in srgb, var(--gn-accent) 60%, #fff); }
.gn-topbar__marquee { display: flex; min-width: 0; }
.gn-topbar__track + .gn-topbar__track { display: none; }
.gn-topbar__links { display: flex; align-items: center; gap: 18px; }
.gn-topbar__links a { color: rgba(255, 255, 255, .85); display: inline-flex; align-items: center; gap: 6px; }
.gn-topbar__links a:hover { color: #fff; }
.gn-topbar__menu { display: flex; gap: 18px; list-style: none; margin: 0; padding: 0; }

@keyframes gn-marquee { from { transform: translateX(0); } to { transform: translateX(-100%); } }

.gn-header { position: sticky; top: 0; z-index: 60; background: #fff; border-bottom: 1px solid var(--gn-line); }
.admin-bar .gn-header { top: 32px; }
.gn-header__main { display: flex; align-items: center; gap: 28px; min-height: var(--gn-header-h); }
.gn-header__burger { display: none; margin-left: -8px; }

.gn-logo { flex-shrink: 0; }
.gn-logo__link { display: block; line-height: 0; }
.gn-logo img { display: block; height: 52px; width: auto; max-width: 100%; }
.gn-logo__text { display: inline-flex; align-items: center; gap: 10px; color: var(--gn-ink); font-weight: 800; font-size: 22px; letter-spacing: -.03em; }
.gn-logo__text:hover { color: var(--gn-ink); }
.gn-logo__mark { display: grid; place-items: center; width: 36px; height: 36px; border-radius: 11px; background: var(--gn-accent); color: #fff; }
.gn-logo__mark svg { fill: currentColor; }
.gn-logo__mark--img { width: 40px; height: 40px; background: none; object-fit: cover; }
.gn-logo__text--light, .gn-logo__text--light:hover, .gn-footer a.gn-logo__text--light { color: #fff; }

.gn-search { position: relative; flex: 1; max-width: 700px; display: flex; align-items: stretch; height: 48px; border: 1.5px solid var(--gn-line-strong); border-radius: 12px; background: #fff; transition: border-color .15s, box-shadow .15s; }
.gn-search:focus-within { border-color: var(--gn-accent); box-shadow: 0 0 0 3px var(--gn-accent-100); }
.gn-search .gn-search__cat { width: auto; max-width: 150px; min-height: 0; height: 100%; border: 0; border-right: 1px solid var(--gn-line); border-radius: 12px 0 0 12px; background-color: var(--gn-soft); font-size: 13.5px; font-weight: 600; color: var(--gn-text); padding: 0 32px 0 14px; }
.gn-search .gn-search__cat:focus { box-shadow: none; }
.gn-search .gn-search__input { flex: 1; min-width: 0; min-height: 0; height: 100%; border: 0; border-radius: 0; padding: 0 14px; font-size: 15px; background: transparent; }
.gn-search .gn-search__input:focus { box-shadow: none; }
.gn-search__input::-webkit-search-cancel-button { display: none; }
.gn-search__btn { width: 52px; margin: 4px; border: 0; border-radius: 9px; background: var(--gn-accent); color: #fff; cursor: pointer; display: grid; place-items: center; }
.gn-search__btn:hover { background: var(--gn-accent-600); }

.gn-search__results { position: absolute; top: calc(100% + 8px); left: 0; right: 0; z-index: 80; background: #fff; border: 1px solid var(--gn-line); border-radius: 14px; box-shadow: var(--gn-shadow-lg); padding: 6px; max-height: 70vh; overflow-y: auto; }
.gn-sr__item { display: flex; align-items: center; gap: 12px; padding: 8px 10px; border-radius: 10px; color: var(--gn-ink); }
.gn-sr__item:hover, .gn-sr__item.is-active { background: var(--gn-soft); color: var(--gn-ink); }
.gn-sr__item img { width: 48px; height: 48px; object-fit: contain; border-radius: 8px; background: var(--gn-soft); mix-blend-mode: multiply; }
.gn-sr__name { flex: 1; font-size: 14px; font-weight: 600; line-height: 1.35; }
.gn-sr__price { font-size: 14px; font-weight: 750; white-space: nowrap; }
.gn-sr__price del { color: var(--gn-muted); font-weight: 500; font-size: 12px; margin-right: 4px; }
.gn-sr__price ins { text-decoration: none; }
.gn-sr__all { display: block; text-align: center; padding: 10px; font-size: 14px; font-weight: 700; border-top: 1px solid var(--gn-line); margin-top: 4px; }
.gn-sr__empty { padding: 16px; color: var(--gn-muted); text-align: center; margin: 0; }

.gn-actions { display: flex; align-items: center; gap: 22px; margin-left: auto; }
.gn-action { display: inline-flex; align-items: center; gap: 10px; color: var(--gn-ink); line-height: 1.15; }
.gn-action:hover { color: var(--gn-accent); }
.gn-action__icon { position: relative; display: inline-flex; }
.gn-action__label { display: flex; flex-direction: column; }
.gn-action__label small { font-size: 12px; color: var(--gn-muted); }
.gn-action__label strong { font-size: 14px; font-weight: 700; white-space: nowrap; }
.gn-action__label .amount { font-weight: 700; }

.gn-nav { border-top: 1px solid var(--gn-line); background: #fff; }
.gn-header.is-stuck .gn-nav { display: none; }
.gn-nav__inner { display: flex; align-items: center; gap: 20px; min-height: 52px; }
.gn-nav__note { display: flex; align-items: center; gap: 6px; margin: 0 0 0 auto; font-size: 13px; color: var(--gn-muted); white-space: nowrap; }

.gn-menu { display: flex; align-items: center; gap: 4px; list-style: none; margin: 0; padding: 0; flex-wrap: wrap; }
.gn-menu > li { position: relative; }
.gn-menu a { display: block; padding: 8px 11px; white-space: nowrap; border-radius: 8px; color: var(--gn-ink); font-size: 14.5px; font-weight: 650; }
.gn-menu a:hover, .gn-menu .current-menu-item > a { color: var(--gn-accent); background: var(--gn-accent-50); }
.gn-menu .is-deal > a, .gn-menu .menu-deals > a { color: var(--gn-sale); }
.gn-menu .sub-menu { position: absolute; top: 100%; left: 0; z-index: 70; min-width: 220px; list-style: none; margin: 0; padding: 8px; background: #fff; border: 1px solid var(--gn-line); border-radius: 12px; box-shadow: var(--gn-shadow-lg); display: none; }
.gn-menu li:hover > .sub-menu, .gn-menu li:focus-within > .sub-menu { display: block; }

.gn-catmenu { position: relative; }
.gn-catmenu__toggle { display: inline-flex; align-items: center; gap: 10px; height: 42px; white-space: nowrap; padding: 0 16px; border: 0; border-radius: 10px; background: var(--gn-ink); color: #fff; font-weight: 700; font-size: 14.5px; cursor: pointer; }
.gn-catmenu__toggle:hover { background: color-mix(in srgb, var(--gn-ink) 85%, #fff); }
.gn-catmenu__panel { position: absolute; top: calc(100% + 5px); left: 0; z-index: 75; width: 290px; background: #fff; border: 1px solid var(--gn-line); border-radius: 14px; box-shadow: var(--gn-shadow-lg); display: none; }
.gn-catmenu:hover .gn-catmenu__panel, .gn-catmenu:focus-within .gn-catmenu__panel, .gn-catmenu.is-open .gn-catmenu__panel { display: block; }
.gn-catmenu::after { content: ""; position: absolute; left: 0; right: 0; top: 100%; height: 8px; }
/* The curated list is long enough to run past the fold, so it scrolls. The
   sub-panel hangs off .gn-catmenu__panel, not off this list, so it is not
   clipped by the scrolling. */
.gn-catmenu__list { list-style: none; margin: 0; padding: 8px; max-height: min(72vh, 620px); overflow-y: auto; }
.gn-catmenu__item > a { display: flex; align-items: center; gap: 12px; padding: 9px 10px; border-radius: 10px; color: var(--gn-ink); font-weight: 600; font-size: 14.5px; }
.gn-catmenu__icon { display: grid; place-items: center; width: 34px; height: 34px; border-radius: 9px; background: var(--gn-soft); color: var(--gn-accent); }
.gn-catmenu__name { flex: 1; }
.gn-catmenu__chev { color: var(--gn-muted); }
.gn-catmenu__item:hover > a, .gn-catmenu__item:focus-within > a { background: var(--gn-accent-50); color: var(--gn-accent); }
.gn-catmenu__sub { position: absolute; top: 0; left: 100%; min-height: 100%; width: 340px; padding: 18px; background: #fff; border: 1px solid var(--gn-line); border-radius: 0 14px 14px 0; box-shadow: var(--gn-shadow-lg); display: none; }
.gn-catmenu__item:hover .gn-catmenu__sub, .gn-catmenu__item:focus-within .gn-catmenu__sub { display: block; }
.gn-catmenu__subtitle { font-weight: 800; color: var(--gn-ink); margin-bottom: 8px; }
.gn-catmenu__sub ul { list-style: none; margin: 0 0 12px; padding: 0; }
.gn-catmenu__sub li a { display: block; padding: 7px 0; color: var(--gn-text); font-size: 14.5px; }
.gn-catmenu__sub li a:hover { color: var(--gn-accent); }
.gn-catmenu__all a { display: flex; align-items: center; justify-content: space-between; margin-top: 4px; padding: 11px 10px; border-top: 1px solid var(--gn-line); font-weight: 700; font-size: 14px; }
/* Sub-categories and brands both run in two columns: the panel is tall otherwise. */
.gn-catmenu__sub .gn-catmenu__sublist, .gn-catmenu__sub .gn-brandlist { display: grid; grid-template-columns: 1fr 1fr; gap: 0 14px; }
/* Third level. The row stays static so the brand panel hangs off .gn-catmenu__sub
   and opens beside it rather than inside the column. */
.gn-catmenu__sublist > li { position: static; }
.gn-catmenu__sublist > li > a { display: flex; align-items: center; justify-content: space-between; gap: 6px; }
.gn-catmenu__sublist > li.has-brands:hover > a { color: var(--gn-accent); }
.gn-catmenu__brands { position: absolute; top: 0; left: 100%; min-height: 100%; max-height: min(78vh, 620px); overflow-y: auto; width: 300px; padding: 18px; background: #fff; border: 1px solid var(--gn-line); border-radius: 0 14px 14px 0; box-shadow: var(--gn-shadow-lg); display: none; }
.gn-catmenu__sublist > li:hover .gn-catmenu__brands, .gn-catmenu__sublist > li:focus-within .gn-catmenu__brands { display: block; }
.gn-catmenu__brands .gn-brandlist { display: grid; grid-template-columns: 1fr 1fr; gap: 0 14px; }

/* Brands inside a category: the same list serves the dropdown and the drawer. */
.gn-brandlist { list-style: none; margin: 0 0 12px; padding: 0; }
.gn-brandlist a { display: block; padding: 7px 0; color: var(--gn-text); font-size: 14.5px; }
.gn-brandlist a:hover { color: var(--gn-accent); }
/* Last row when the list is capped: the way through to every brand in stock. */
.gn-brandlist__more a { font-weight: 700; color: var(--gn-accent); }

/* 5. Homepage ------------------------------------------------------------ */
.gn-hero { padding-block: 20px 8px; }
.gn-hero__main {
	position: relative; overflow: hidden; border-radius: 24px; color: #fff;
	background:
		radial-gradient(600px 400px at 85% 30%, color-mix(in srgb, var(--gn-accent) 55%, transparent), transparent 70%),
		radial-gradient(500px 300px at 10% 110%, color-mix(in srgb, var(--gn-accent) 30%, transparent), transparent 70%),
		var(--gn-ink);
}
.gn-hero__body { display: grid; grid-template-columns: 1.02fr .98fr; align-items: stretch; gap: 12px; min-height: 440px; padding-left: 52px; }
.gn-hero__content { align-self: center; padding: 48px 0; }
.gn-hero__main .gn-eyebrow { color: #fff; background: rgba(255, 255, 255, .12); padding: 6px 12px; border-radius: 999px; }
.gn-hero__title { color: #fff; font-size: clamp(32px, 4.2vw, 54px); font-weight: 800; line-height: 1.06; letter-spacing: -.02em; margin-bottom: 16px; }
.gn-hero__text { color: rgba(255, 255, 255, .75); font-size: 17px; max-width: 460px; margin-bottom: 28px; }
.gn-hero__actions { display: flex; flex-wrap: wrap; gap: 12px; }
.gn-hero__media { position: relative; align-self: stretch; display: grid; place-items: center; }
/* The artwork carries its own blue backdrop, so it is faded into the panel on
   both edges it meets instead of framed — the hero has to read as one section. */
.gn-hero__media img {
	width: 100%; height: 100%; max-height: 420px; object-fit: cover; object-position: center 60%;
	-webkit-mask-image: linear-gradient(to right, transparent, #000 14%), linear-gradient(to bottom, #000 72%, transparent);
	mask-image: linear-gradient(to right, transparent, #000 14%), linear-gradient(to bottom, #000 72%, transparent);
	-webkit-mask-composite: source-in;
	mask-composite: intersect;
}
.gn-hero__badge { position: absolute; top: 6%; right: 6%; z-index: 1; padding: 10px 16px; border-radius: 14px; background: #fff; color: var(--gn-ink); font-weight: 800; font-size: 15px; box-shadow: var(--gn-shadow); }

/* No rules between the promises or above them: the hero reads as one panel. */
.gn-hero__trust { list-style: none; display: grid; grid-template-columns: repeat(4, 1fr); margin: 0; padding: 0; }
.gn-hero__trust li { display: flex; flex-direction: column; align-items: center; gap: 8px; padding: 20px 12px; text-align: center; }
.gn-hero__trust-icon { display: grid; place-items: center; width: 46px; height: 46px; border-radius: 50%; border: 1px solid rgba(255, 255, 255, .45); color: #fff; }
.gn-hero__trust-title { font-size: 14px; font-weight: 700; line-height: 1.25; color: #fff; }

.gn-cats__grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(110px, 1fr)); gap: 12px; }
.gn-cat { display: flex; flex-direction: column; align-items: center; text-align: center; gap: 4px; padding: 18px 10px 16px; border: 1px solid var(--gn-line); border-radius: var(--gn-radius); background: #fff; color: var(--gn-ink); transition: border-color .15s, box-shadow .15s; }
.gn-cat:hover { color: var(--gn-ink); border-color: var(--gn-accent); box-shadow: var(--gn-shadow); }
.gn-cat__media { display: grid; place-items: center; width: 72px; height: 72px; margin-bottom: 8px; border-radius: 50%; background: var(--gn-accent-50); color: var(--gn-accent); overflow: hidden; }
/* Product shots are photographed on white, so they get a plain tile and room to breathe. */
.gn-cat__media--photo { width: 84px; height: 84px; border-radius: 16px; background: #fff; border: 1px solid var(--gn-line); }
.gn-cat__media img { width: 100%; height: 100%; object-fit: cover; }
.gn-cat__media--photo img { object-fit: contain; padding: 6px; }
.gn-cat:hover .gn-cat__media--photo { border-color: var(--gn-accent); }
.gn-cat__name { font-size: 14px; font-weight: 700; line-height: 1.25; }
.gn-cat__count { font-size: 12px; color: var(--gn-muted); }

.gn-tabs { display: inline-flex; gap: 4px; padding: 4px; border-radius: 12px; background: var(--gn-soft); }
.gn-tab { border: 0; background: transparent; padding: 8px 16px; border-radius: 9px; font-weight: 700; font-size: 14px; color: var(--gn-muted); cursor: pointer; }
.gn-tab[aria-selected="true"] { background: #fff; color: var(--gn-ink); box-shadow: 0 1px 3px rgba(13, 19, 33, .12); }

.gn-promo {
	position: relative; overflow: hidden; display: grid; grid-template-columns: 1.1fr .9fr; align-items: center; gap: 24px;
	padding: 44px 52px; border-radius: 24px; color: #fff;
	background: linear-gradient(120deg, var(--gn-accent) 0%, color-mix(in srgb, var(--gn-accent) 55%, var(--gn-ink)) 100%);
}
.gn-promo .gn-eyebrow { color: #fff; opacity: .9; }
.gn-promo__title { color: #fff; font-size: clamp(28px, 3.2vw, 40px); font-weight: 800; letter-spacing: -.02em; margin-bottom: 12px; }
.gn-promo__text { color: rgba(255, 255, 255, .85); font-size: 16.5px; max-width: 480px; margin-bottom: 22px; }
.gn-promo__media img { width: 100%; max-height: 300px; object-fit: contain; }
.gn-countdown { display: flex; gap: 10px; margin-bottom: 24px; }
.gn-countdown__unit { min-width: 64px; padding: 8px 6px; border-radius: 12px; background: rgba(255, 255, 255, .14); text-align: center; }
.gn-countdown__unit b { display: block; font-size: 24px; font-weight: 800; line-height: 1.1; font-variant-numeric: tabular-nums; }
.gn-countdown__unit small { font-size: 11px; text-transform: uppercase; letter-spacing: .06em; opacity: .8; }

.gn-brands { display: grid; grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)); gap: 12px; }
.gn-brand { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 2px; min-height: 92px; padding: 14px; border: 1px solid var(--gn-line); border-radius: 14px; background: #fff; color: var(--gn-ink); transition: border-color .15s, box-shadow .15s; }
.gn-brand:hover { border-color: var(--gn-accent); color: var(--gn-ink); box-shadow: var(--gn-shadow); }
.gn-brand__logo img { max-height: 44px; width: auto; object-fit: contain; transition: transform .15s; }
.gn-brand:hover .gn-brand__logo img { transform: scale(1.04); }
.gn-brand__word { font-size: 19px; font-weight: 800; letter-spacing: -.02em; color: #3b4453; }
.gn-brand:hover .gn-brand__word { color: var(--gn-ink); }
.gn-brand__meta { font-size: 12px; color: var(--gn-muted); }
.gn-brands--page { grid-template-columns: repeat(auto-fill, minmax(190px, 1fr)); gap: 16px; }
.gn-brands--page .gn-brand { min-height: 130px; }

.gn-budget__grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 12px; }
.gn-budget__item { display: flex; align-items: center; gap: 10px; min-height: 64px; padding: 12px 16px; border-radius: 14px; background: var(--gn-soft); color: var(--gn-ink); font-weight: 700; font-size: 15px; border: 1px solid transparent; }
.gn-budget__item svg { color: var(--gn-accent); }
.gn-budget__item:hover { color: var(--gn-ink); background: #fff; border-color: var(--gn-accent); }

.gn-why__grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 16px; list-style: none; margin: 0; padding: 0; }
.gn-why__item { display: flex; gap: 16px; padding: 22px; border-radius: var(--gn-radius); background: var(--gn-soft); }
.gn-why__icon { display: grid; place-items: center; flex-shrink: 0; width: 52px; height: 52px; border-radius: 14px; background: #fff; color: var(--gn-accent); box-shadow: 0 1px 2px rgba(13, 19, 33, .06); }
.gn-why__item h3 { font-size: 16px; margin: 2px 0 4px; }
.gn-why__item p { margin: 0; color: var(--gn-muted); font-size: 14px; line-height: 1.5; }

.gn-reviews__layout { display: grid; grid-template-columns: 280px minmax(0, 1fr); gap: 32px; align-items: center; }
.gn-reviews__score { font-size: 56px; font-weight: 800; color: var(--gn-ink); letter-spacing: -.04em; line-height: 1; margin: 16px 0 6px; }
.gn-reviews__score small { font-size: 20px; color: var(--gn-muted); font-weight: 600; }
.gn-reviews__summary .gn-stars { font-size: 20px; }
.gn-reviews__total { color: var(--gn-muted); font-size: 14px; margin: 8px 0 16px; }
.gn-rail-nav { display: flex; gap: 8px; }
.gn-rail-nav .gn-iconbtn { border: 1px solid var(--gn-line-strong); border-radius: 50%; background: #fff; }
.gn-rail-nav .gn-iconbtn:hover { border-color: var(--gn-accent); color: var(--gn-accent); }
.gn-rail-nav .gn-iconbtn:disabled { opacity: .35; cursor: default; }
.gn-reviews__track { display: grid; grid-auto-flow: column; grid-auto-columns: minmax(290px, 1fr); gap: 16px; overflow-x: auto; scroll-snap-type: x mandatory; scrollbar-width: none; padding-bottom: 4px; }
.gn-reviews__track::-webkit-scrollbar { display: none; }
.gn-review { display: flex; flex-direction: column; gap: 14px; margin: 0; padding: 22px; border: 1px solid var(--gn-line); border-radius: var(--gn-radius); background: #fff; scroll-snap-align: start; }
.gn-review__text { margin: 0; color: var(--gn-ink); font-size: 15px; line-height: 1.6; flex: 1; }
.gn-review__by { display: flex; align-items: center; gap: 10px; font-size: 14px; }
.gn-review__by strong { display: block; color: var(--gn-ink); }
.gn-review__avatar { display: grid; place-items: center; width: 38px; height: 38px; border-radius: 50%; background: var(--gn-accent-100); color: var(--gn-accent); font-weight: 800; }
.gn-review__verified { display: inline-flex; align-items: center; gap: 4px; color: var(--gn-ok); font-size: 12px; font-weight: 600; }
.gn-review__product { display: flex; align-items: center; gap: 10px; padding-top: 12px; border-top: 1px solid var(--gn-line); color: var(--gn-muted); font-size: 13px; font-weight: 600; }
.gn-review__product img { width: 40px; height: 40px; border-radius: 8px; object-fit: contain; background: var(--gn-soft); mix-blend-mode: multiply; }

/* 6. Product cards & loops ----------------------------------------------- */
.woocommerce ul.products, .woocommerce-page ul.products, ul.products {
	display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: var(--gn-gap); list-style: none; margin: 0; padding: 0;
}
.woocommerce ul.products::before, .woocommerce ul.products::after, .woocommerce-page ul.products::before, .woocommerce-page ul.products::after { display: none; }

.woocommerce ul.products li.product.gn-card, .woocommerce-page ul.products li.product.gn-card, ul.products li.product.gn-card {
	position: relative; display: flex; flex-direction: column; float: none; width: auto; margin: 0; padding: 0;
	background: #fff; border: 1px solid var(--gn-line); border-radius: var(--gn-radius); overflow: hidden; text-align: left;
	transition: box-shadow .2s, border-color .2s;
}
.woocommerce ul.products li.product.gn-card:hover { border-color: var(--gn-line-strong); box-shadow: var(--gn-shadow); }

.gn-card__media { position: relative; background: var(--gn-soft); }
.gn-card__image { position: relative; display: block; aspect-ratio: 1 / 1; }
.woocommerce ul.products li.product .gn-card__img, .gn-card__img {
	position: absolute; inset: 0; width: 100%; height: 100%; margin: 0; object-fit: contain; padding: 0; mix-blend-mode: multiply; transition: opacity .25s;
}
.gn-card__img--alt { opacity: 0; }
@media (hover: hover) {
	.gn-card:hover .gn-card__image.has-hover .gn-card__img:not(.gn-card__img--alt) { opacity: 0; }
	.gn-card:hover .gn-card__img--alt { opacity: 1; }
}
.gn-card__badges { position: absolute; top: 10px; left: 10px; display: flex; flex-direction: column; align-items: flex-start; gap: 5px; pointer-events: none; }

.gn-wish { display: inline-flex; align-items: center; justify-content: center; gap: 8px; border: 0; background: #fff; color: var(--gn-ink); cursor: pointer; }
.gn-wish__text { display: none; }
.gn-wish--card { position: absolute; top: 10px; right: 10px; width: 36px; height: 36px; border-radius: 50%; box-shadow: 0 2px 8px rgba(13, 19, 33, .12); }
.gn-wish--card svg { width: 18px; height: 18px; }
.gn-wish:hover { color: var(--gn-sale); }
.gn-wish.is-active { color: var(--gn-sale); }
.gn-wish.is-active svg { fill: currentColor; }
.gn-wish--inline { min-height: 52px; min-width: 52px; padding: 0 14px; border: 1.5px solid var(--gn-line-strong); border-radius: 12px; font-weight: 700; }
.gn-wish--inline:hover, .gn-wish--inline.is-active { border-color: var(--gn-sale); }

.gn-card__body { display: flex; flex-direction: column; flex: 1; gap: 4px; padding: 12px 14px 14px; }
.gn-card__brand { font-size: 11px; font-weight: 700; letter-spacing: .07em; text-transform: uppercase; color: var(--gn-muted); }
.woocommerce ul.products li.product .gn-card__title, .gn-card__title {
	margin: 0; padding: 0; font-size: 14.5px; font-weight: 650; line-height: 1.4; letter-spacing: -.005em; color: var(--gn-ink);
	display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; min-height: calc(2 * 1.4em);
}
.gn-card__title a { color: inherit; }
.gn-card__title a::after { content: ""; position: absolute; inset: 0; z-index: 0; }
.gn-card__title a:hover { color: var(--gn-accent); }
.gn-card__rating { min-height: 18px; }
.gn-card__price, .woocommerce ul.products li.product .gn-card__price { display: flex; flex-wrap: wrap; align-items: baseline; gap: 2px 6px; margin: 2px 0 10px; color: var(--gn-ink); font-size: 16px; font-weight: 800; }
.gn-card__price del { order: 2; color: var(--gn-muted); font-size: 13px; font-weight: 500; opacity: 1; }
.gn-card__price ins { text-decoration: none; }
.gn-from { font-size: 12px; font-weight: 600; color: var(--gn-muted); }
.gn-card__actions { margin-top: auto; position: relative; z-index: 1; }
.gn-card__media .gn-wish, .gn-card__actions { z-index: 2; }
.woocommerce ul.products li.product .gn-card__actions .button, .gn-card__actions .button {
	width: 100%; min-height: 40px; margin: 0; padding: 8px 12px; font-size: 13.5px; border-radius: 10px;
	background: #fff; color: var(--gn-ink); border: 1.5px solid var(--gn-line-strong);
}
.woocommerce ul.products li.product .gn-card__actions .button:hover { background: var(--gn-accent); border-color: var(--gn-accent); color: #fff; }
.woocommerce ul.products li.product .gn-card__actions .button.loading { opacity: .6; padding-right: 12px; }
.woocommerce ul.products li.product .gn-card__actions .button.loading::after { display: none; }
.woocommerce ul.products li.product .gn-card__actions .button.added { background: var(--gn-accent-50); border-color: var(--gn-accent); color: var(--gn-accent); }
.woocommerce ul.products li.product .gn-card__actions .button.added::after { display: none; }
.gn-card__actions .added_to_cart { display: none !important; }
.gn-card.outofstock .gn-card__img { opacity: .55; }

.gn-grid ul.products { grid-template-columns: repeat(5, minmax(0, 1fr)); }

/* Horizontal rails (homepage, related, upsells, recently viewed) */
.gn-rail, .related.products, .upsells.products, .gn-recent__body { position: relative; }
.gn-rail ul.products, .related.products ul.products, .upsells.products ul.products {
	grid-template-columns: none; grid-auto-flow: column; grid-auto-columns: calc((100% - 4 * var(--gn-gap)) / 5);
	overflow-x: auto; scroll-snap-type: x mandatory; scrollbar-width: none; padding: 2px 1px 6px; margin: -2px -1px 0;
}
.gn-rail ul.products::-webkit-scrollbar, .related.products ul.products::-webkit-scrollbar, .upsells.products ul.products::-webkit-scrollbar { display: none; }
.gn-rail ul.products li.product, .related.products ul.products li.product, .upsells.products ul.products li.product { scroll-snap-align: start; }
.gn-rail__btn { position: absolute; top: 34%; z-index: 5; display: grid; place-items: center; width: 44px; height: 44px; padding: 0; border: 1px solid var(--gn-line); border-radius: 50%; background: #fff; color: var(--gn-ink); box-shadow: var(--gn-shadow); cursor: pointer; }
.gn-rail__btn:hover { color: var(--gn-accent); border-color: var(--gn-accent); }
.gn-rail__btn[data-dir="-1"] { left: -18px; }
.gn-rail__btn[data-dir="1"] { right: -18px; }
.gn-rail__btn[disabled] { display: none; }

/* 7. Shop archive & filters ---------------------------------------------- */
.gn-bc, .woocommerce .woocommerce-breadcrumb { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; margin: 0 0 10px; font-size: 13px; color: var(--gn-muted); }
.gn-bc a { color: var(--gn-muted); }
.gn-bc a:hover { color: var(--gn-accent); }
.gn-bc__sep { color: var(--gn-line-strong); }

.gn-archive__head { padding-block: 22px 18px; }
.gn-page__title { font-size: clamp(26px, 3vw, 34px); font-weight: 800; letter-spacing: -.02em; margin: 0 0 6px; }
.gn-archive__head .term-description, .gn-archive__head .page-description { max-width: 780px; color: var(--gn-muted); }
.gn-archive__head .term-description p:last-child { margin-bottom: 0; }
.gn-archive__head .brand-description { display: flex; align-items: center; gap: 16px; margin: 8px 0; color: var(--gn-muted); }
.gn-archive__head .brand-description img.brand-thumbnail { max-width: 120px; max-height: 60px; object-fit: contain; float: none; margin: 0; }
.gn-chips { display: flex; gap: 8px; margin-top: 16px; overflow-x: auto; scrollbar-width: none; padding-bottom: 2px; }
.gn-chips::-webkit-scrollbar { display: none; }
.gn-chip { display: inline-flex; align-items: center; gap: 8px; flex-shrink: 0; padding: 8px 14px; border: 1px solid var(--gn-line); border-radius: 999px; background: #fff; color: var(--gn-ink); font-weight: 600; font-size: 14px; white-space: nowrap; }
.gn-chip svg { color: var(--gn-accent); }
.gn-chip:hover { border-color: var(--gn-accent); color: var(--gn-accent); }
.gn-chip.is-active { background: #fff; border-color: var(--gn-accent); color: var(--gn-accent); box-shadow: inset 0 0 0 1px var(--gn-accent); }
.gn-chip.is-active svg { color: var(--gn-accent); }
.gn-chip--logo { padding: 6px 14px; }
.gn-chip img.gn-chip__logo { display: block; width: auto; height: 22px; max-width: 96px; object-fit: contain; }

.gn-shop { display: grid; grid-template-columns: 264px minmax(0, 1fr); gap: 32px; padding-bottom: 56px; align-items: start; }
.gn-shop--full { grid-template-columns: 1fr; }
.gn-shop__sidebar.gn-drawer--desktop-static { position: static; transform: none; visibility: visible; width: auto; box-shadow: none; background: transparent; z-index: 1; }
.gn-shop__sidebar .gn-drawer__head { display: none; }
.gn-shop__sidebar .gn-drawer__body { padding: 0 4px 0 0; overflow: visible; }

.gn-filter { padding-block: 18px; border-bottom: 1px solid var(--gn-line); }
.gn-filter:first-child { padding-top: 0; }
.gn-filter__title { font-size: 15px; font-weight: 750; margin: 0 0 12px; }
.gn-filter ul { list-style: none; margin: 0; padding: 0; }
.gn-filter li { margin: 0; padding: 0; }
.gn-filter--attr ul, .gn-filter--brands ul, .gn-filter--cats > ul { max-height: 340px; overflow-y: auto; scrollbar-width: thin; }

/* Checkbox-styled filter links */
.gn-filter .woocommerce-widget-layered-nav-list__item, .gn-filter .wc-layered-nav-term, .gn-checklist li { display: flex; align-items: center; justify-content: space-between; padding: 4px 0; }
.gn-filter .woocommerce-widget-layered-nav-list__item a, .gn-filter .wc-layered-nav-term a, .gn-checklist a { position: relative; display: flex; align-items: center; gap: 10px; flex: 1; color: var(--gn-text); font-size: 14.5px; }
.gn-filter .woocommerce-widget-layered-nav-list__item a::before, .gn-filter .wc-layered-nav-term a::before, .gn-checklist a::before {
	content: ""; flex-shrink: 0; width: 18px; height: 18px; border: 1.5px solid var(--gn-line-strong); border-radius: 5px; background: #fff center / 12px no-repeat;
}
.gn-filter .woocommerce-widget-layered-nav-list__item a:hover, .gn-filter .wc-layered-nav-term a:hover, .gn-checklist a:hover { color: var(--gn-accent); }
.gn-filter .woocommerce-widget-layered-nav-list__item a:hover::before, .gn-filter .wc-layered-nav-term a:hover::before, .gn-checklist a:hover::before { border-color: var(--gn-accent); }
.gn-filter .woocommerce-widget-layered-nav-list__item--chosen a, .gn-filter .wc-layered-nav-term.chosen a, .gn-checklist li.chosen a { color: var(--gn-ink); font-weight: 650; }
.gn-filter .woocommerce-widget-layered-nav-list__item--chosen a::before, .gn-filter .wc-layered-nav-term.chosen a::before, .gn-checklist li.chosen a::before {
	border-color: var(--gn-accent); background-color: var(--gn-accent);
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23fff' stroke-width='3.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m5 12.5 4.5 4.5L19 7.5'/%3E%3C/svg%3E");
}
.woocommerce .gn-filter .woocommerce-widget-layered-nav-list .woocommerce-widget-layered-nav-list__item--chosen a::before, .woocommerce .gn-filter .wc-layered-nav-term.chosen a::before { content: ""; font-family: inherit; }
.gn-filter .count { flex-shrink: 0; font-size: 12px; color: var(--gn-muted); background: var(--gn-soft); padding: 1px 8px; border-radius: 999px; }

/* Categories widget */
.gn-filter .product-categories li { position: relative; }
.gn-filter .product-categories a { display: inline-block; padding: 5px 0; color: var(--gn-text); font-size: 14.5px; }
.gn-filter .product-categories a:hover { color: var(--gn-accent); }
.gn-filter .product-categories .count { float: right; margin-top: 6px; }
.gn-filter .product-categories .children { padding-left: 14px; border-left: 1px solid var(--gn-line); margin: 2px 0 4px 2px; }
.gn-filter .product-categories .current-cat > a { color: var(--gn-accent); font-weight: 700; }

/* Active filters */
.gn-filter--active ul { display: flex; flex-wrap: wrap; gap: 6px; }
.woocommerce .gn-filter--active ul li a, .gn-filter--active li a { display: inline-flex; align-items: center; gap: 6px; padding: 5px 10px; border-radius: 999px; background: var(--gn-accent-50); color: var(--gn-accent); font-size: 13px; font-weight: 650; text-decoration: none; }
.woocommerce .gn-filter--active ul li a::before, .gn-filter--active li a::before { content: "×"; font-family: inherit; font-size: 16px; line-height: 1; margin: 0; color: currentColor; }
.woocommerce .widget_layered_nav_filters ul li { float: none; padding: 0; margin: 0; }

/* Price slider */
.woocommerce .widget_price_filter .price_slider_wrapper .ui-widget-content { background-color: var(--gn-line); height: 4px; border-radius: 4px; margin: 8px 8px 20px; }
.woocommerce .widget_price_filter .ui-slider .ui-slider-range { background-color: var(--gn-accent); }
.woocommerce .widget_price_filter .ui-slider .ui-slider-handle { top: -6px; width: 16px; height: 16px; margin-left: -8px; background-color: #fff; border: 2px solid var(--gn-accent); border-radius: 50%; box-shadow: 0 1px 3px rgba(0, 0, 0, .15); }
.woocommerce .widget_price_filter .price_slider_amount { display: flex; flex-direction: row-reverse; align-items: center; justify-content: space-between; gap: 8px; font-size: 13.5px; line-height: 1.4; }
.woocommerce .widget_price_filter .price_slider_amount .button { float: none; min-height: 34px; padding: 6px 14px; font-size: 13px; }
.woocommerce .widget_price_filter .price_slider_amount .price_label { text-align: left; color: var(--gn-text); }
.woocommerce .widget_price_filter .price_slider_amount .clear { display: none; }

/* Rating filter */
.gn-filter--rating .wc-layered-nav-rating { padding: 3px 0; }
.gn-filter--rating .wc-layered-nav-rating a { display: flex; align-items: center; gap: 6px; color: var(--gn-muted); font-size: 13px; }
.woocommerce .gn-filter--rating .star-rating { float: none; margin: 0; color: var(--gn-star); }
.gn-filter--rating .wc-layered-nav-rating.chosen a { color: var(--gn-ink); font-weight: 700; }

/* Toolbar */
.gn-toolbar { display: flex; align-items: center; gap: 12px; margin-bottom: 18px; flex-wrap: wrap; }
.gn-toolbar .woocommerce-notices-wrapper { flex-basis: 100%; }
.gn-toolbar .woocommerce-notices-wrapper:empty { display: none; }
.gn-toolbar__filters { display: none; min-height: 42px; }
.woocommerce .gn-toolbar .woocommerce-result-count { float: none; margin: 0 auto 0 0; color: var(--gn-muted); font-size: 14px; }
.woocommerce .gn-toolbar .woocommerce-ordering { float: none; margin: 0; }
.woocommerce .gn-toolbar .woocommerce-ordering select { min-height: 42px; width: auto; font-size: 14px; font-weight: 600; }

.gn-shop__main ul.products { grid-template-columns: repeat(4, minmax(0, 1fr)); }

.woocommerce nav.woocommerce-pagination { margin-top: 32px; }
.woocommerce nav.woocommerce-pagination ul { display: inline-flex; gap: 6px; border: 0; }
.woocommerce nav.woocommerce-pagination ul li { border: 0; }
.woocommerce nav.woocommerce-pagination ul li a, .woocommerce nav.woocommerce-pagination ul li span { display: grid; place-items: center; min-width: 42px; height: 42px; padding: 0 10px; border: 1px solid var(--gn-line); border-radius: 10px; color: var(--gn-ink); font-weight: 650; }
.woocommerce nav.woocommerce-pagination ul li a:hover { background: var(--gn-accent-50); color: var(--gn-accent); border-color: var(--gn-accent); }
.woocommerce nav.woocommerce-pagination ul li span.current { background: var(--gn-accent); border-color: var(--gn-accent); color: #fff; }

/* Notices */
.woocommerce-message, .woocommerce-info, .woocommerce-error,
.woocommerce .woocommerce-message, .woocommerce .woocommerce-info, .woocommerce .woocommerce-error {
	display: flex; flex-wrap: wrap; align-items: center; gap: 10px; margin: 0 0 20px; padding: 14px 18px 14px 48px;
	border: 1px solid var(--gn-line); border-left: 4px solid var(--gn-accent); border-radius: 12px; background: var(--gn-accent-50); color: var(--gn-ink); font-size: 14.5px; list-style: none;
}
.woocommerce-message::before, .woocommerce-info::before, .woocommerce-error::before { top: 50%; left: 18px; transform: translateY(-50%); color: var(--gn-accent); }
.woocommerce-error { border-left-color: var(--gn-sale); background: #fff4f6; }
.woocommerce-error::before { color: var(--gn-sale); }
.woocommerce-message .button, .woocommerce-info .button { order: 2; margin-left: auto; min-height: 36px; padding: 6px 14px; font-size: 13.5px; float: none !important; }
.woocommerce-message::after, .woocommerce-info::after, .woocommerce-error::after { display: none; }

/* 8. Single product ------------------------------------------------------ */
.gn-single { padding-top: 20px; padding-bottom: 40px; }
.woocommerce div.product, .woocommerce-page div.product { display: grid; grid-template-columns: minmax(0, 1.05fr) minmax(0, 1fr); gap: 20px 56px; align-items: start; margin-bottom: 0; }
.woocommerce div.product div.images, .woocommerce-page div.product div.images,
.woocommerce div.product div.summary, .woocommerce-page div.product div.summary { float: none; width: auto; margin: 0; }
.woocommerce div.product > .woocommerce-tabs, .woocommerce div.product > .related, .woocommerce div.product > .upsells, .woocommerce div.product > .gn-recent { grid-column: 1 / -1; }

.woocommerce div.product div.images .woocommerce-product-gallery__wrapper { border-radius: 20px; overflow: hidden; background: var(--gn-soft); }
.woocommerce div.product div.images .flex-viewport { border-radius: 20px; background: var(--gn-soft); }
.woocommerce div.product div.images .woocommerce-product-gallery__image img { mix-blend-mode: multiply; }
.woocommerce div.product div.images .flex-control-thumbs { display: grid; grid-template-columns: repeat(5, 1fr); gap: 10px; margin-top: 12px; }
.woocommerce div.product div.images .flex-control-thumbs li { width: auto; float: none; margin: 0; }
.woocommerce div.product div.images .flex-control-thumbs li img { border-radius: 12px; border: 2px solid transparent; background: var(--gn-soft); opacity: 1; mix-blend-mode: normal; }
.woocommerce div.product div.images .flex-control-thumbs li img.flex-active, .woocommerce div.product div.images .flex-control-thumbs li img:hover { border-color: var(--gn-accent); }
.woocommerce div.product div.images .woocommerce-product-gallery__trigger { top: 14px; right: 14px; width: 42px; height: 42px; border-radius: 50%; background: #fff; box-shadow: var(--gn-shadow); }

.gn-single__brand { display: inline-block; margin-bottom: 8px; font-size: 13px; font-weight: 750; letter-spacing: .06em; text-transform: uppercase; }
.woocommerce div.product .product_title { font-size: clamp(24px, 2.6vw, 34px); font-weight: 800; letter-spacing: -.02em; line-height: 1.15; margin-bottom: 10px; }
.woocommerce div.product .woocommerce-product-rating { display: flex; align-items: center; gap: 8px; margin-bottom: 14px; }
.woocommerce div.product .woocommerce-product-rating .star-rating { margin: 0; color: var(--gn-star); }
.woocommerce .woocommerce-review-link { font-size: 14px; color: var(--gn-muted); }
.woocommerce div.product p.price, .woocommerce div.product span.price { display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 10px; color: var(--gn-ink); font-size: 28px; font-weight: 800; letter-spacing: -.02em; margin-bottom: 10px; }
.woocommerce div.product p.price del, .woocommerce div.product span.price del { order: 2; font-size: 18px; font-weight: 500; color: var(--gn-muted); opacity: 1; }
.woocommerce div.product p.price ins, .woocommerce div.product span.price ins { text-decoration: none; font-weight: 800; }
.gn-single__facts { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 18px; }
.woocommerce div.product .woocommerce-product-details__short-description { color: var(--gn-text); font-size: 15.5px; padding-bottom: 18px; margin-bottom: 20px; border-bottom: 1px solid var(--gn-line); }
.woocommerce div.product .woocommerce-product-details__short-description p:last-child { margin: 0; }

/* Variations & swatches */
.woocommerce div.product form.cart .variations { display: block; margin-bottom: 8px; border: 0; }
.woocommerce div.product form.cart .variations tbody, .woocommerce div.product form.cart .variations tr { display: block; }
.woocommerce div.product form.cart .variations tr { margin-bottom: 16px; }
.woocommerce div.product form.cart .variations th, .woocommerce div.product form.cart .variations td { display: block; padding: 0; text-align: left; line-height: 1.4; }
.woocommerce div.product form.cart .variations th.label { margin-bottom: 8px; }
.woocommerce div.product form.cart .variations label { font-size: 14px; font-weight: 700; }
.gn-swatch-current { font-weight: 500; color: var(--gn-muted); }
.woocommerce div.product form.cart .variations select { max-width: 320px; margin: 0; }
.woocommerce div.product form.cart .reset_variations { display: inline-block; margin-top: 8px; font-size: 13px; color: var(--gn-muted); }
.gn-swatch-wrap { position: relative; }
.gn-swatch-wrap.is-enhanced select { position: absolute; width: 1px; height: 1px; min-height: 0; padding: 0; border: 0; opacity: 0; pointer-events: none; }
.gn-swatches { display: flex; flex-wrap: wrap; gap: 8px; }
.gn-swatch { display: inline-flex; align-items: center; gap: 8px; min-height: 42px; padding: 6px 14px; border: 1.5px solid var(--gn-line-strong); border-radius: 10px; background: #fff; color: var(--gn-ink); font-size: 14px; font-weight: 650; cursor: pointer; transition: border-color .12s, box-shadow .12s; }
.gn-swatch:hover { border-color: var(--gn-ink); }
.gn-swatch[aria-checked="true"] { border-color: var(--gn-accent); box-shadow: 0 0 0 3px var(--gn-accent-100); }
.gn-swatch.is-disabled { opacity: .45; text-decoration: line-through; }
.gn-swatch__dot { width: 20px; height: 20px; border-radius: 50%; border: 1px solid rgba(13, 19, 33, .15); }
.gn-swatch__dot.is-clear { background: repeating-linear-gradient(45deg, #fff 0 3px, #e2e8f0 3px 6px) !important; }

.woocommerce div.product form.cart { margin-bottom: 20px; }
.woocommerce div.product form.cart:not(.variations_form), .woocommerce div.product .woocommerce-variation-add-to-cart { display: flex; flex-wrap: wrap; align-items: stretch; gap: 10px; }
.woocommerce div.product form.cart::before, .woocommerce div.product form.cart::after { display: none; }
.woocommerce div.product .single_variation_wrap .woocommerce-variation { margin-bottom: 12px; }
.woocommerce div.product .woocommerce-variation-price .price { font-size: 24px; }
.woocommerce div.product .woocommerce-variation-availability p.stock { margin: 0; font-size: 14px; font-weight: 600; }
.woocommerce div.product p.stock.in-stock { color: var(--gn-ok); }
.woocommerce div.product p.stock.out-of-stock { color: var(--gn-sale); }
.woocommerce div.product form.cart div.quantity { float: none; margin: 0; }
.woocommerce div.product form.cart .button { float: none; flex: 1; min-width: 180px; min-height: 52px; font-size: 16px; border-radius: 12px; }

.quantity { display: inline-flex; align-items: stretch; border: 1.5px solid var(--gn-line-strong); border-radius: 12px; background: #fff; overflow: hidden; }
.woocommerce .quantity .qty { width: 52px; min-height: 0; height: auto; border: 0; border-radius: 0; padding: 0; text-align: center; font-weight: 700; -moz-appearance: textfield; }
.quantity .qty::-webkit-inner-spin-button, .quantity .qty::-webkit-outer-spin-button { -webkit-appearance: none; }
.quantity .qty:focus { box-shadow: none; }
.gn-qty-btn { width: 40px; border: 0; background: transparent; color: var(--gn-ink); cursor: pointer; display: grid; place-items: center; }
.gn-qty-btn:hover { background: var(--gn-soft); color: var(--gn-accent); }
.gn-single__wish { margin-bottom: 20px; }

.gn-trust { display: grid; grid-template-columns: repeat(2, 1fr); gap: 10px; list-style: none; margin: 4px 0 20px; padding: 0; }
.gn-trust li { display: flex; align-items: center; gap: 10px; padding: 12px 14px; border-radius: 12px; background: var(--gn-soft); font-size: 13.5px; font-weight: 650; color: var(--gn-ink); line-height: 1.3; }
.gn-trust svg { color: var(--gn-accent); }

.woocommerce div.product .product_meta { display: flex; flex-direction: column; gap: 4px; font-size: 13.5px; color: var(--gn-muted); }
.woocommerce div.product .product_meta > span { display: block; }
.woocommerce div.product .product_meta a { color: var(--gn-text); font-weight: 600; }
.woocommerce div.product .product_meta a:hover { color: var(--gn-accent); }

.woocommerce div.product .woocommerce-tabs { margin-top: 36px; }
.woocommerce div.product .woocommerce-tabs ul.tabs { display: flex; gap: 28px; margin: 0 0 24px; padding: 0; border-bottom: 1px solid var(--gn-line); overflow-x: auto; scrollbar-width: none; }
.woocommerce div.product .woocommerce-tabs ul.tabs::before { display: none; }
.woocommerce div.product .woocommerce-tabs ul.tabs li { margin: 0; padding: 0; border: 0; background: none; border-radius: 0; flex-shrink: 0; }
.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 a { display: block; padding: 12px 0; font-weight: 700; font-size: 15.5px; color: var(--gn-muted); border-bottom: 2.5px solid transparent; margin-bottom: -1px; }
.woocommerce div.product .woocommerce-tabs ul.tabs li.active a { color: var(--gn-ink); border-bottom-color: var(--gn-accent); }
.woocommerce div.product .woocommerce-tabs .panel { max-width: 900px; margin: 0; font-size: 15.5px; line-height: 1.75; }
.woocommerce div.product .woocommerce-tabs .panel > h2:first-child { display: none; }
.woocommerce div.product .woocommerce-tabs .panel h3 { font-size: 18px; margin-top: 1.4em; }
.woocommerce table.shop_attributes { border: 1px solid var(--gn-line); border-radius: 12px; border-collapse: separate; overflow: hidden; }
.woocommerce table.shop_attributes th, .woocommerce table.shop_attributes td { padding: 12px 16px; border: 0; border-bottom: 1px solid var(--gn-line); font-style: normal; }
.woocommerce table.shop_attributes th { width: 200px; background: var(--gn-soft); color: var(--gn-ink); font-weight: 650; }
.woocommerce table.shop_attributes tr:last-child th, .woocommerce table.shop_attributes tr:last-child td { border-bottom: 0; }
.woocommerce table.shop_attributes td p { margin: 0; padding: 0; }
.woocommerce table.shop_attributes tr:nth-child(even) td, .woocommerce table.shop_attributes tr:nth-child(even) th { background: transparent; }
.woocommerce table.shop_attributes tr:nth-child(even) th { background: var(--gn-soft); }

.woocommerce #reviews #comments ol.commentlist { padding: 0; }
.woocommerce #reviews #comments ol.commentlist li .comment-text { border: 1px solid var(--gn-line); border-radius: 14px; padding: 16px 18px; margin-left: 56px; }
.woocommerce #reviews #comments ol.commentlist li img.avatar { width: 42px; border: 0; padding: 0; border-radius: 50%; background: var(--gn-soft); }
.woocommerce #reviews #comments ol.commentlist li .comment-text p.meta { font-size: 14px; color: var(--gn-muted); }
.woocommerce .star-rating span::before, .woocommerce p.stars a { color: var(--gn-star); }
.woocommerce #review_form #respond { padding: 20px; border: 1px solid var(--gn-line); border-radius: 14px; }

.woocommerce div.product .related, .woocommerce div.product .upsells, .gn-recent { margin-top: 48px; }
.related.products > h2, .upsells.products > h2 { font-size: clamp(22px, 2.2vw, 26px); font-weight: 800; letter-spacing: -.025em; margin-bottom: 18px; }
.gn-recent .gn-section__title { margin-bottom: 18px; }

/* 9. Drawers, overlay, mini cart, toast --------------------------------- */
.gn-overlay { position: fixed; inset: 0; z-index: 90; background: rgba(13, 19, 33, .5); opacity: 0; transition: opacity .2s; }
.gn-overlay.is-open { opacity: 1; }
.gn-drawer { position: fixed; top: 0; bottom: 0; z-index: 100; display: flex; flex-direction: column; width: min(380px, 90vw); background: #fff; box-shadow: var(--gn-shadow-lg); visibility: hidden; transition: transform .22s ease, visibility .22s; }
.gn-drawer[hidden] { display: flex; }
.gn-drawer--left { left: 0; transform: translateX(-102%); }
.gn-drawer--right { right: 0; transform: translateX(102%); }
.gn-drawer.is-open { transform: none; visibility: visible; }
.gn-drawer__head { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 14px 16px 14px 20px; border-bottom: 1px solid var(--gn-line); }
.gn-drawer__title { display: flex; align-items: center; gap: 8px; margin: 0; font-size: 18px; }
.gn-drawer__body { flex: 1; overflow-y: auto; padding: 16px 20px 24px; overscroll-behavior: contain; }
.gn-drawer__label { margin: 8px 0 8px; font-size: 12px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; color: var(--gn-muted); }
.gn-drawer__contact { margin-top: 20px; padding-top: 16px; border-top: 1px solid var(--gn-line); }
body.gn-lock { overflow: hidden; }

.gn-mnav { list-style: none; margin: 0 0 16px; padding: 0; }
.gn-mnav > li { border-bottom: 1px solid var(--gn-line); }
.gn-mnav a, .gn-mnav summary { display: flex; align-items: center; gap: 12px; padding: 11px 0; color: var(--gn-ink); font-weight: 650; font-size: 15px; cursor: pointer; list-style: none; }
.gn-mnav summary::-webkit-details-marker { display: none; }
.gn-mnav__icon { display: grid; place-items: center; width: 34px; height: 34px; border-radius: 9px; background: var(--gn-soft); color: var(--gn-accent); flex: none; }
.gn-mnav__text { flex: 1; min-width: 0; }
.gn-mnav__name { display: block; }
.gn-mnav__sub { display: block; margin-top: 1px; font-size: 12px; font-weight: 500; color: var(--gn-muted); }
.gn-mnav__chev { margin-left: auto; flex: none; color: var(--gn-muted); transition: transform .15s; }
/* Only the row that opened turns its chevron, not the closed ones nested in it. */
.gn-mnav details[open] > summary .gn-mnav__chev { transform: rotate(90deg); }
.gn-mnav details ul { list-style: none; margin: 0 0 10px 46px; padding: 0; }
.gn-mnav details ul a { padding: 7px 0; font-weight: 500; color: var(--gn-text); }
.gn-mnav__subtitle { margin: 0 0 2px 46px; }
/* Beats .gn-mnav details ul a, which reaches the nested sub-category subtitles. */
.gn-mnav .gn-mnav__subtitle a { display: inline-flex; padding: 4px 0; font-size: 13.5px; font-weight: 700; color: var(--gn-accent); }
.gn-mnav .gn-brandlist { margin: 0 0 10px 46px; }
/* Sub-categories: level two of category → sub-category → brand. They carry no
   icon, so their own children only step in a little further. */
.gn-mnav__sublist > li + li { border-top: 1px solid var(--gn-line); }
.gn-mnav .gn-mnav__sublist > li > a, .gn-mnav .gn-mnav__sublist summary { padding: 9px 0; font-weight: 600; font-size: 14.5px; color: var(--gn-ink); }
.gn-mnav .gn-mnav__sublist .gn-mnav__subtitle, .gn-mnav .gn-mnav__sublist .gn-brandlist { margin-left: 14px; }
.gn-mnav__policies { list-style: none; display: flex; flex-wrap: wrap; gap: 4px 14px; margin: 18px 0 0; padding: 16px 0 0; border-top: 1px solid var(--gn-line); }
.gn-mnav__policies a { font-size: 12.5px; color: var(--gn-muted); }
.gn-mnav__policies a:hover { color: var(--gn-accent); }
.gn-mnav--plain a { padding: 12px 0; }

.gn-minicart .gn-drawer__body { display: flex; flex-direction: column; }
.gn-minicart .woocommerce-mini-cart__total, .gn-minicart .woocommerce-mini-cart__buttons { flex-shrink: 0; }
.gn-minicart .woocommerce-mini-cart__total strong { font-weight: 700; }
.gn-minicart__body { display: flex; flex-direction: column; flex: 1; min-height: 0; }
.gn-minicart .widget_shopping_cart_content { display: flex; flex-direction: column; flex: 1; }
.gn-minicart .woocommerce-mini-cart { list-style: none; margin: 0; padding: 0; flex: 1; }
.gn-minicart ul.woocommerce-mini-cart li.woocommerce-mini-cart-item { position: relative; display: block; min-height: 98px; margin: 0; padding: 14px 34px 14px 82px; border-bottom: 1px solid var(--gn-line); font-size: 14px; line-height: 1.35; }
.gn-minicart ul.woocommerce-mini-cart li.woocommerce-mini-cart-item > a:not(.remove) { display: block; color: var(--gn-ink); font-weight: 650; }
.gn-minicart ul.woocommerce-mini-cart li.woocommerce-mini-cart-item img { position: absolute; left: 0; top: 14px; width: 68px; height: 68px; margin: 0; float: none; border-radius: 10px; object-fit: contain; background: var(--gn-soft); mix-blend-mode: multiply; box-shadow: none; }
.gn-minicart .woocommerce-mini-cart-item .quantity { display: block; margin-top: 6px; border: 0; border-radius: 0; color: var(--gn-muted); background: none; }
.gn-minicart .woocommerce-mini-cart-item .quantity .amount { color: var(--gn-ink); font-weight: 700; }
.gn-minicart .woocommerce-mini-cart-item .variation { margin: 4px 0 0; font-size: 12.5px; color: var(--gn-muted); }
.gn-minicart .woocommerce-mini-cart-item .variation dt, .gn-minicart .woocommerce-mini-cart-item .variation dd { display: inline; margin: 0; float: none; }
.gn-minicart .woocommerce-mini-cart-item .variation dd p { display: inline; margin: 0; }
.gn-minicart a.remove { position: absolute; top: 12px; right: 0; display: grid; place-items: center; width: 26px; height: 26px; border-radius: 50%; color: var(--gn-muted) !important; font-size: 18px; line-height: 1; }
.gn-minicart a.remove:hover { background: #fff1f3; color: var(--gn-sale) !important; }
.gn-minicart .woocommerce-mini-cart__total { display: flex; justify-content: space-between; margin: 16px 0 12px; padding: 0; border: 0; font-size: 16px; color: var(--gn-ink); }
.gn-minicart .woocommerce-mini-cart__buttons { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin: 0; }
.gn-minicart .woocommerce-mini-cart__buttons .button { display: inline-flex; align-items: center; justify-content: center; min-height: 48px; margin: 0; padding: 10px 16px; border: 1.5px solid var(--gn-accent); border-radius: var(--gn-radius-sm); background: var(--gn-accent); color: #fff; font-weight: 700; font-size: 14.5px; }
.gn-minicart .woocommerce-mini-cart__buttons .button.checkout:hover { background: var(--gn-accent-600); color: #fff; }
.gn-minicart .woocommerce-mini-cart__buttons::before, .gn-minicart .woocommerce-mini-cart__buttons::after { display: none; }
.gn-drawer__title .gn-badge { position: static; box-shadow: none; }
.gn-minicart .woocommerce-mini-cart__buttons .button:not(.checkout) { background: #fff; color: var(--gn-ink); border-color: var(--gn-line-strong); }
.gn-minicart .woocommerce-mini-cart__buttons .button:not(.checkout):hover { border-color: var(--gn-accent); color: var(--gn-accent); }
.gn-minicart .woocommerce-mini-cart__empty-message { text-align: center; color: var(--gn-muted); padding: 40px 0; }
.gn-freeship { margin-bottom: 8px; padding: 12px 14px; border-radius: 12px; background: var(--gn-accent-50); }
.gn-freeship p { margin: 0 0 8px; font-size: 13.5px; color: var(--gn-ink); font-weight: 600; }
.gn-freeship__bar { display: block; height: 6px; border-radius: 6px; background: #fff; overflow: hidden; }
.gn-freeship__bar span { display: block; height: 100%; border-radius: 6px; background: var(--gn-accent); }

.gn-toast { position: fixed; left: 50%; bottom: 24px; z-index: 120; transform: translateX(-50%); display: flex; align-items: center; gap: 8px; padding: 12px 18px; border-radius: 12px; background: var(--gn-ink); color: #fff; font-size: 14px; font-weight: 600; box-shadow: var(--gn-shadow-lg); }

.gn-tabbar { display: none; }

/* Floating WhatsApp button: under the overlay, so an open drawer covers it. */
.gn-wa {
	position: fixed; right: 20px; bottom: 24px; z-index: 65; display: grid; place-items: center;
	width: 56px; height: 56px; border-radius: 50%; background: #25d366; color: #fff;
	box-shadow: 0 10px 22px -8px rgba(18, 140, 66, .75); transition: transform .18s ease, box-shadow .18s ease;
}
.gn-wa:hover, .gn-wa:focus-visible { color: #fff; transform: translateY(-2px); box-shadow: 0 14px 26px -8px rgba(18, 140, 66, .9); }

/* 10. Footer ------------------------------------------------------------- */
.gn-footer { margin-top: 40px; background: var(--gn-ink); color: rgba(255, 255, 255, .68); font-size: 14.5px; }
.gn-footer__grid { display: grid; grid-template-columns: 1.5fr repeat(3, 1fr) 1.2fr; gap: 36px; padding-block: 56px 40px; }
.gn-footer__about p { margin: 16px 0; max-width: 340px; }
.gn-footer__title { color: #fff; font-size: 15px; font-weight: 700; margin: 6px 0 16px; }
.gn-footer__links { list-style: none; margin: 0; padding: 0; }
.gn-footer__links li { margin-bottom: 9px; }
.gn-footer a { color: rgba(255, 255, 255, .72); }
.gn-footer a:hover { color: #fff; }
.gn-contact { list-style: none; margin: 0; padding: 0; }
.gn-contact li { display: flex; align-items: flex-start; gap: 10px; margin-bottom: 10px; line-height: 1.45; }
.gn-contact svg { margin-top: 1px; color: color-mix(in srgb, var(--gn-accent) 55%, #fff); }
.gn-social { display: flex; gap: 8px; margin-top: 14px; }
.gn-social a { display: grid; place-items: center; width: 38px; height: 38px; border-radius: 10px; background: rgba(255, 255, 255, .08); color: #fff; }
.gn-social a:hover { background: var(--gn-accent); color: #fff; }
/* One row: the badges share the column and shrink together rather than wrap. */
.gn-paybadges { display: flex; gap: 6px; margin-top: 14px; }
.gn-paybadge { display: block; flex: 1 1 0; min-width: 0; max-width: 56px; width: 100%; height: auto; aspect-ratio: 64 / 40; border-radius: 7px; box-shadow: 0 0 0 1px rgba(255, 255, 255, .12); }
.gn-footer__bottom { border-top: 1px solid rgba(255, 255, 255, .1); }
.gn-footer__bottom-inner { display: flex; align-items: center; justify-content: space-between; gap: 16px; min-height: 64px; flex-wrap: wrap; }
.gn-footer__bottom p { margin: 0; font-size: 13.5px; }
.gn-footer__bottom .gn-social { margin: 0; }
.gn-drawer .gn-contact svg { color: var(--gn-accent); }
.gn-drawer .gn-social a { background: var(--gn-soft); color: var(--gn-ink); }

/* 11. Cart, checkout, account ------------------------------------------- */
.gn-page--wc { max-width: 1320px; }
.wc-block-components-button:not(.is-link), .wp-block-woocommerce-cart .wc-block-cart__submit-button, .wc-block-components-checkout-place-order-button {
	background: var(--gn-accent) !important; color: #fff !important; border-radius: 12px !important; font-weight: 700 !important; min-height: 52px; border: 0 !important;
}
.wc-block-components-button:not(.is-link):hover { background: var(--gn-accent-600) !important; }
.wc-block-components-text-input input, .wc-block-components-combobox .wc-block-components-combobox-control input, .wc-blocks-components-select .wc-blocks-components-select__select { border-radius: 10px !important; }
.wc-block-components-text-input.is-active input:focus, .wc-block-components-text-input input:focus { box-shadow: 0 0 0 3px var(--gn-accent-100) !important; border-color: var(--gn-accent) !important; }
.wp-block-woocommerce-cart .wc-block-cart-items, .wc-block-components-sidebar .wc-block-components-panel, .wc-block-components-totals-wrapper { border-color: var(--gn-line) !important; }
.wc-block-components-sidebar-layout .wc-block-components-sidebar { padding: 20px; border: 1px solid var(--gn-line); border-radius: 16px; background: #fff; }
.wc-block-cart-item__image img, .wc-block-components-order-summary-item__image img { border-radius: 10px; background: var(--gn-soft); }
.wc-block-components-radio-control__option, .wc-block-components-radio-control-accordion-option { border-radius: 12px !important; }
.wc-block-components-product-badge { border-radius: 6px !important; }

.woocommerce table.shop_table { border: 1px solid var(--gn-line); border-radius: 14px; border-collapse: separate; overflow: hidden; }
.woocommerce table.shop_table th { color: var(--gn-ink); background: var(--gn-soft); }
.woocommerce table.shop_table td, .woocommerce table.shop_table th { border-top-color: var(--gn-line); padding: 14px 16px; }

.woocommerce-account .woocommerce { display: grid; grid-template-columns: 250px minmax(0, 1fr); gap: 32px; align-items: start; }
.woocommerce-account .woocommerce::before, .woocommerce-account .woocommerce::after { display: none; }
.woocommerce-account .woocommerce > .woocommerce-notices-wrapper { grid-column: 1 / -1; }
.woocommerce-account .woocommerce-MyAccount-navigation, .woocommerce-account .woocommerce-MyAccount-content { float: none; width: auto; }
.woocommerce-MyAccount-navigation ul { list-style: none; margin: 0; padding: 8px; border: 1px solid var(--gn-line); border-radius: 16px; }
.woocommerce-MyAccount-navigation li a { display: block; padding: 10px 14px; border-radius: 10px; color: var(--gn-ink); font-weight: 600; }
.woocommerce-MyAccount-navigation li a:hover { background: var(--gn-soft); color: var(--gn-ink); }
.woocommerce-MyAccount-navigation li.is-active a { background: var(--gn-accent-50); color: var(--gn-accent); }
.woocommerce-account:not(.logged-in) .woocommerce { display: block; }
.woocommerce-account .u-columns.col2-set { display: grid; grid-template-columns: 1fr 1fr; gap: 24px; }
.woocommerce-account .u-columns.col2-set::before, .woocommerce-account .u-columns.col2-set::after { display: none; }
.woocommerce-account .u-columns .u-column1, .woocommerce-account .u-columns .u-column2 { float: none; width: auto; padding: 28px; border: 1px solid var(--gn-line); border-radius: 18px; }
.woocommerce form.login, .woocommerce form.register { border: 0; padding: 0; margin: 0; border-radius: 0; }

/* 12. Pages, posts, misc ------------------------------------------------- */
.gn-page { padding-block: 24px 56px; }
.gn-page__head { margin-bottom: 24px; }
.gn-page--narrow { max-width: 820px; }
.gn-content { font-size: 16px; line-height: 1.75; }
.gn-content > * { max-width: 860px; }
.gn-content > .alignwide, .gn-content > .alignfull, .gn-content > .woocommerce, .gn-content > .wp-block-woocommerce-cart, .gn-content > .wp-block-woocommerce-checkout, .gn-content > .gn-wishlist, .gn-content > .gn-brands, .gn-content > .gn-grid, .gn-page--wc .gn-content > * { max-width: none; }
.gn-content h2 { font-size: 24px; margin-top: 1.6em; }
.gn-content h3 { font-size: 19px; margin-top: 1.4em; }
.gn-content details { border: 1px solid var(--gn-line); border-radius: 12px; padding: 14px 18px; margin-bottom: 10px; }
.gn-content details summary { cursor: pointer; font-weight: 700; color: var(--gn-ink); }
.gn-content details[open] summary { margin-bottom: 8px; }
.gn-content .gn-contact li { font-size: 16px; }
.gn-content .gn-contact svg { color: var(--gn-accent); }
.gn-content .gn-social a { background: var(--gn-soft); color: var(--gn-ink); }
.gn-posts { display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: 24px; }
.gn-post-card { border: 1px solid var(--gn-line); border-radius: var(--gn-radius); overflow: hidden; }
.gn-post-card__body { padding: 18px 20px; }
.gn-post-card__meta { font-size: 13px; color: var(--gn-muted); margin-bottom: 6px; }
.gn-post-card__title { font-size: 19px; }
.gn-post-card__title a { color: var(--gn-ink); }
.gn-post__img img { border-radius: 18px; margin-bottom: 24px; }

.gn-wishlist .gn-grid ul.products { grid-template-columns: repeat(5, minmax(0, 1fr)); }
.gn-wishlist .gn-card .gn-wish.is-active svg { fill: currentColor; }

/* 13. Responsive --------------------------------------------------------- */
@media (max-width: 1360px) {
	.gn-nav__note { display: none; }
}

@media (max-width: 1280px) {
	.gn-footer__grid { grid-template-columns: 1.4fr repeat(2, 1fr); }
	.gn-footer__pay { grid-column: span 2; }
	.gn-rail ul.products, .related.products ul.products, .upsells.products ul.products { grid-auto-columns: calc((100% - 3 * var(--gn-gap)) / 4); }
	.gn-grid ul.products, .gn-wishlist .gn-grid ul.products { grid-template-columns: repeat(4, minmax(0, 1fr)); }
	.gn-shop__main ul.products { grid-template-columns: repeat(3, minmax(0, 1fr)); }
	.gn-rail__btn[data-dir="-1"] { left: -8px; }
	.gn-rail__btn[data-dir="1"] { right: -8px; }
}

@media (max-width: 1180px) {
	/* Automatic menu: keep one row — extra categories stay reachable via All Categories. */
	.gn-menu--auto > li:nth-child(n+6):not(:last-child) { display: none; }
}

@media (max-width: 1100px) {
	/* Trim categories from the end, always keeping Brands and Deals. */
	.gn-menu--auto > li:nth-child(n+4):nth-last-child(n+3) { display: none; }
	.gn-hero__body { padding-left: 32px; min-height: 0; }
	.gn-hero__content { padding: 40px 0; }
	.gn-why__grid { grid-template-columns: repeat(2, 1fr); }
	.gn-nav__note { display: none; }
	.gn-action--account .gn-action__label, .gn-action--cart .gn-action__label { display: none; }
	.gn-header__main { gap: 20px; }
}

@media (max-width: 1023px) {
	.gn-shop { grid-template-columns: 1fr; }
	.gn-shop__sidebar.gn-drawer--desktop-static { position: fixed; top: 0; max-height: none; width: min(360px, 90vw); background: #fff; box-shadow: var(--gn-shadow-lg); transform: translateX(-102%); visibility: hidden; z-index: 100; }
	.gn-shop__sidebar.gn-drawer--desktop-static.is-open { transform: none; visibility: visible; }
	.gn-shop__sidebar .gn-drawer__head { display: flex; }
	.gn-shop__sidebar .gn-drawer__body { padding: 16px 20px 32px; overflow-y: auto; }
	.gn-toolbar__filters { display: inline-flex; }
	.woocommerce div.product, .woocommerce-page div.product { grid-template-columns: 1fr; gap: 24px; }
	.gn-reviews__layout { grid-template-columns: 1fr; gap: 20px; }
	.gn-reviews__summary { display: grid; grid-template-columns: 1fr auto; align-items: center; column-gap: 16px; }
	.gn-reviews__summary .gn-section__title { grid-column: 1 / -1; }
	.gn-reviews__score { margin: 10px 0 0; }
	.gn-rail-nav { grid-row: 2 / 5; grid-column: 2; }
	.woocommerce-account .woocommerce { grid-template-columns: 1fr; }
}

@media (max-width: 959px) {
	:root { --gn-header-h: 60px; --gn-gap: 12px; }
	body { padding-bottom: calc(64px + env(safe-area-inset-bottom)); }
	.admin-bar .gn-header { top: 0; }
	.gn-topbar__links { display: none; }
	.gn-topbar__inner { justify-content: center; min-height: 34px; font-size: 12.5px; }
	.gn-topbar__msg { flex: 1; min-width: 0; }
	/* Ticker: two identical copies sit side by side and slide left by their own width, so the
	   second lands exactly where the first began and the loop has no seam. min-width keeps a
	   copy at least as wide as the bar, which is what stops a gap appearing on wider phones. */
	.gn-topbar__marquee { flex: 1; overflow: hidden; }
	.gn-topbar__track { flex: 0 0 auto; min-width: 100%; padding-right: 2.5em; white-space: nowrap; animation: gn-marquee 18s linear infinite; }
	.gn-topbar__track + .gn-topbar__track { display: block; }
	.gn-nav { display: none; }
	.gn-header__main { flex-wrap: wrap; gap: 4px 10px; min-height: 0; padding-block: 8px 10px; }
	.gn-header__burger { display: inline-grid; }
	/* Centred logo: the burger and the actions hold matching widths on either side of it —
	   42px less the burger's -8px pull — so the logo lands on the true centre of the row. */
	.gn-logo { flex: 1; min-width: 0; display: flex; justify-content: center; }
	.gn-logo__text { font-size: 21px; }
	.gn-logo__mark { width: 34px; height: 34px; }
	.gn-logo img { height: 48px; object-fit: contain; }
	.gn-actions { flex: 0 0 34px; justify-content: flex-end; gap: 14px; order: 2; }
	.gn-action--account, .gn-action--wish { display: none; }
	.gn-search { order: 3; flex-basis: 100%; max-width: none; height: 44px; }
	.gn-search .gn-search__cat { display: none; }
	.gn-header.is-stuck .gn-search { display: none; }

	.gn-tabbar {
		position: fixed; left: 0; right: 0; bottom: 0; z-index: 70; display: grid; grid-template-columns: repeat(5, 1fr);
		padding-bottom: env(safe-area-inset-bottom); background: #fff; border-top: 1px solid var(--gn-line); box-shadow: 0 -6px 20px -12px rgba(13, 19, 33, .2);
	}
	.gn-tabbar > a, .gn-tabbar > button { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 2px; height: 60px; padding: 0; border: 0; background: none; color: var(--gn-muted); font-size: 11px; font-weight: 650; cursor: pointer; }
	.gn-tabbar > a.is-active, .gn-tabbar > a:hover, .gn-tabbar > button:hover { color: var(--gn-accent); }
	.gn-tabbar .gn-badge { top: -4px; right: -10px; }
	.gn-toast { bottom: calc(142px + env(safe-area-inset-bottom)); }
	.gn-wa { right: 14px; bottom: calc(72px + env(safe-area-inset-bottom)); width: 52px; height: 52px; }

	.gn-section { padding-block: 26px; }
	.gn-hero { padding-top: 12px; }
	.gn-hero__body { grid-template-columns: 1fr; min-height: 0; padding: 0; gap: 22px; }
	.gn-hero__content { padding: 28px 22px 0; }
	/* Full-bleed artwork between the copy and the promises, as in the design. */
	/* Stacked, the artwork meets the copy edge on. It fades into the panel top and
	   bottom instead, so the hero stays one section rather than two blocks. */
	.gn-hero__media img {
		max-height: 260px; object-position: center 55%;
		-webkit-mask-image: linear-gradient(to bottom, transparent, #000 22%, #000 86%, transparent);
		mask-image: linear-gradient(to bottom, transparent, #000 22%, #000 86%, transparent);
	}
	.gn-hero__text { font-size: 15.5px; margin-bottom: 20px; }
	.gn-hero__badge { top: 10px; right: 12px; font-size: 13px; padding: 8px 12px; }
	.gn-hero__trust { grid-template-columns: repeat(4, 1fr); }
	.gn-hero__trust li { padding: 14px 4px; gap: 6px; }
	.gn-hero__trust-icon { width: 38px; height: 38px; }
	.gn-hero__trust-title { font-size: 11.5px; }

	.gn-cats__grid { grid-auto-flow: column; grid-template-columns: none; grid-auto-columns: 104px; overflow-x: auto; scrollbar-width: none; margin-inline: -20px; padding-inline: 20px; }
	.gn-cats__grid::-webkit-scrollbar { display: none; }
	.gn-cat { padding: 14px 8px; }
	.gn-cat__media { width: 58px; height: 58px; }
	.gn-cat__media--photo { width: 66px; height: 66px; border-radius: 14px; }
	.gn-cat__media svg { width: 28px; height: 28px; }
	.gn-cat__name { font-size: 13px; }

	.gn-featured .gn-section__head { flex-direction: column; align-items: stretch; }
	.gn-tabs { overflow-x: auto; }
	.gn-tab { flex: 1; white-space: nowrap; }
	.gn-section__more { display: block; }

	.gn-rail ul.products, .related.products ul.products, .upsells.products ul.products { grid-auto-columns: 46%; margin-inline: -20px; padding-inline: 20px; scroll-padding-inline: 20px; }
	.gn-rail__btn { display: none; }
	.gn-grid ul.products, .gn-wishlist .gn-grid ul.products, .gn-shop__main ul.products { grid-template-columns: repeat(2, minmax(0, 1fr)); }

	.gn-promo { grid-template-columns: 1fr; padding: 28px 24px; border-radius: 20px; }
	.gn-promo__media { order: -1; }
	.gn-promo__media img { max-height: 180px; }
	.gn-countdown__unit { min-width: 56px; }
	.gn-brands { grid-template-columns: repeat(3, 1fr); gap: 8px; }
	.gn-brand { min-height: 72px; padding: 10px; }
	.gn-brand__word { font-size: 16px; }
	.gn-budget__grid { grid-template-columns: repeat(2, 1fr); gap: 8px; }
	.gn-budget__item { padding: 12px 14px; font-size: 14px; }
	.gn-why__grid { grid-template-columns: 1fr; gap: 10px; }
	.gn-why__item { padding: 16px; }

	.gn-footer { margin-top: 24px; }
	.gn-footer__grid { grid-template-columns: 1fr 1fr; gap: 28px 20px; padding-block: 40px 28px; }
	.gn-footer__about, .gn-footer__pay { grid-column: 1 / -1; }
	.gn-footer__bottom-inner { flex-direction: column; justify-content: center; padding-block: 16px; text-align: center; }

	.woocommerce div.product .product_title { font-size: 24px; }
	.woocommerce div.product p.price { font-size: 24px; }
	.woocommerce div.product form.cart .button { min-width: 0; }
	.gn-trust { grid-template-columns: 1fr 1fr; }
	.gn-trust li { padding: 10px; font-size: 12.5px; }
	.woocommerce table.shop_attributes th { width: 40%; }
	.woocommerce-account .u-columns.col2-set { grid-template-columns: 1fr; }
	.woocommerce div.product .woocommerce-tabs { margin-top: 20px; }
}

@media (max-width: 480px) {
	.gn-card__body { padding: 10px 10px 12px; }
	.woocommerce ul.products li.product .gn-card__title, .gn-card__title { font-size: 13.5px; }
	.gn-card__price { font-size: 15px; }
	.woocommerce ul.products li.product .gn-card__actions .button, .gn-card__actions .button { font-size: 12.5px; min-height: 36px; padding: 6px 8px; }
	.gn-wish--card { width: 32px; height: 32px; top: 8px; right: 8px; }
	.gn-hero__actions .gn-btn { flex: 1; padding-inline: 14px; }
}

@media (prefers-reduced-motion: reduce) {
	*, *::before, *::after { transition: none !important; animation: none !important; scroll-behavior: auto !important; }
	/* With the scroll stopped, drop back to a single truncated line rather than showing the
	   ticker's duplicate copy sitting still. */
	.gn-topbar__track { min-width: 0; padding-right: 0; overflow: hidden; text-overflow: ellipsis; }
	.gn-topbar__track + .gn-topbar__track { display: none; }
}
