/* =========================================================================
   420 Green Road – WoodMart Child
   Univers : psychédélique maximaliste, fond noir, slime vert, néons.
   ========================================================================= */

/* ---------- 1. Tokens ---------- */
:root {
	color-scheme: dark;
	--grt-black: #000000;
	--grt-ink: #0b0b0f;
	--grt-panel: #131318;
	--grt-line: #26262e;
	--grt-slime: #7BF90E;
	--grt-magenta: #F900DC;
	--grt-cyan: #5BFEFE;
	--grt-orange: #FE8800;
	--grt-yellow: #F8FA64;
	--grt-blue: #6274F4;
	--grt-text: #f2f2f2;
	--grt-muted: #a6a6b3;
	--grt-heading: #ffffff;
	--grt-text-2: #d6d6de;
	--grt-panel-2: #1d1d24;
	--grt-panel-3: #1b1b22;
	--grt-track: #24242c;
	--grt-ink-rgb: 11, 11, 15;
	--grt-g700: #d8d8e0;
	--grt-g600: #b8b8c4;
	--grt-g400: #7d7d8a;
	--grt-line-soft: rgba(255, 255, 255, .08);
	--grt-shadow: rgba(0, 0, 0, .7);
	--grt-h1-glow: 0 0 18px rgba(123, 249, 14, .35);
	--grt-promo-text: #e9ffd0;

	--grt-font-display: 'Bungee', 'Arial Black', sans-serif;
	--grt-font-body: 'Space Grotesk', system-ui, -apple-system, 'Segoe UI', sans-serif;

	--grt-radius: 14px;
	--grt-radius-pill: 999px;
	--grt-glow-slime: 0 0 6px rgba(123, 249, 14, .55), 0 0 22px rgba(123, 249, 14, .35);
	--grt-glow-magenta: 0 0 6px rgba(249, 0, 220, .55), 0 0 22px rgba(249, 0, 220, .35);
	--grt-glow-cyan: 0 0 6px rgba(91, 254, 254, .55), 0 0 22px rgba(91, 254, 254, .35);
	--grt-rainbow: linear-gradient(90deg, var(--grt-slime), var(--grt-cyan), var(--grt-blue), var(--grt-magenta), var(--grt-orange), var(--grt-yellow));

	/* Variables WoodMart */
	--wd-primary-color: var(--grt-slime);
	--wd-alternative-color: var(--grt-magenta);
	--wd-link-color: var(--grt-cyan);
	--wd-link-color-hover: var(--grt-slime);
	--wd-text-color: var(--grt-text);
	--wd-title-color: var(--grt-heading);
	--wd-text-font: var(--grt-font-body);
	--wd-title-font: var(--grt-font-display);
	--wd-entities-title-font: var(--grt-font-body);
	--wd-entities-title-font-weight: 700;
	--wd-header-el-font: var(--grt-font-body);
	--wd-brd-radius: var(--grt-radius);
	--wd-form-brd-radius: 10px;
	--btn-accented-bgcolor: var(--grt-slime);
	--btn-accented-bgcolor-hover: var(--grt-yellow);
	--btn-accented-color: var(--grt-black);
	--btn-accented-color-hover: var(--grt-black);
	--btn-default-bgcolor: var(--grt-panel);
	--btn-default-bgcolor-hover: var(--grt-magenta);
	--btn-default-color: var(--grt-text);
	--btn-default-color-hover: #ffffff;
	--color-gray-300: var(--grt-line);
	--brdcolor-gray-300: var(--grt-line);
	--bgcolor-white: var(--grt-ink);
	--bgcolor-gray-100: var(--grt-panel);
	--bgcolor-gray-200: var(--grt-panel);
	--wd-form-bg: var(--grt-panel);
	--wd-form-color: var(--grt-text);
	--wd-form-brd-color: var(--grt-line);
	--wd-form-brd-color-focus: var(--grt-slime);
}

/* Les réglages WoodMart (fond blanc, gris clairs) sont générés après ce fichier :
   on force le thème sombre avec une spécificité supérieure. */
html:root {
	--wd-main-bgcolor: var(--grt-black) !important;
	--bgcolor-white: var(--grt-ink) !important;
	--bgcolor-white-rgb: var(--grt-ink-rgb) !important;
	--bgcolor-gray-100: var(--grt-panel) !important;
	--bgcolor-gray-200: var(--grt-panel) !important;
	--bgcolor-gray-300: var(--grt-panel-3) !important;
	--color-gray-900: var(--grt-heading) !important;
	--color-gray-800: var(--grt-text) !important;
	--color-gray-700: var(--grt-g700) !important;
	--color-gray-600: var(--grt-g600) !important;
	--color-gray-500: var(--grt-muted) !important;
	--color-gray-400: var(--grt-g400) !important;
	--color-gray-300: var(--grt-line) !important;
	--color-gray-200: var(--grt-line) !important;
	--color-gray-100: var(--grt-panel-3) !important;
	--brdcolor-gray-200: var(--grt-line) !important;
	--brdcolor-gray-300: var(--grt-line) !important;
	--wd-title-color: var(--grt-heading) !important;
	--wd-text-color: var(--grt-text) !important;
	--wd-entities-title-color: var(--grt-heading) !important;
	--wd-entities-title-color-hover: var(--grt-slime) !important;
}

html body,
html body .main-page-wrapper,
html body .wd-page-content {
	background-color: var(--grt-black) !important;
	color: var(--grt-text);
}

.wd-prefooter .vc_row {
	background-color: var(--grt-ink) !important;
}

/* Pages construites avec un hero 420GR : pas de bandeau titre WoodMart */
.main-page-wrapper:has(.gr-hero) .page-title {
	display: none;
}

.main-page-wrapper:has(.gr-hero) > .container,
.main-page-wrapper:has(.gr-hero) .wd-content-layout {
	padding-top: 0;
}

/* ---------- 2. Base ---------- */
html,
body,
.website-wrapper,
.main-page-wrapper,
.wd-page-content {
	background-color: var(--grt-black);
	color: var(--grt-text);
}

body {
	font-family: var(--grt-font-body);
	-webkit-font-smoothing: antialiased;
}

h1, h2, h3,
.title,
.page-title .entry-title,
.wd-section-title,
.woodmart-title-container {
	font-family: var(--grt-font-display);
	letter-spacing: .02em;
	color: var(--grt-heading);
}

h1, .page-title .entry-title {
	text-shadow: var(--grt-h1-glow);
}

a {
	transition: color .2s ease, text-shadow .2s ease;
}

a:hover {
	text-shadow: var(--grt-glow-slime);
}

::selection {
	background: var(--grt-magenta);
	color: #ffffff;
}

html.gr420-locked,
html.gr420-locked body {
	overflow: hidden;
}

/* ---------- 3. Header ---------- */
.whb-header,
.whb-main-header,
.whb-general-header,
.whb-header-bottom,
.whb-top-bar {
	background-color: var(--grt-black) !important;
	border-color: var(--grt-line) !important;
}

.whb-top-bar {
	background: var(--grt-rainbow) !important;
	color: var(--grt-black) !important;
	font-weight: 700;
}

.whb-top-bar a,
.whb-top-bar .wd-header-text {
	color: var(--grt-black) !important;
}

.whb-main-header::after {
	content: '';
	display: block;
	height: 3px;
	background: var(--grt-rainbow);
	background-size: 200% 100%;
	animation: gr-rainbow-flow 8s linear infinite;
}

.wd-nav-main > li > a,
.wd-nav > li > a {
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: .04em;
	color: var(--grt-text);
}

.wd-nav-main > li > a:hover,
.wd-nav > li.current-menu-item > a {
	color: var(--grt-slime);
	text-shadow: var(--grt-glow-slime);
}

.wd-dropdown,
.wd-dropdown-menu,
.wd-sub-menu,
.mega-menu-list {
	background-color: var(--grt-ink) !important;
	border: 1px solid var(--grt-line);
	box-shadow: 0 20px 50px var(--grt-shadow);
}

.wd-tools-count,
.wd-header-cart .wd-cart-number {
	background-color: var(--grt-magenta) !important;
	color: #ffffff !important;
	box-shadow: var(--grt-glow-magenta);
}

/* ---------- 4. Boutons ---------- */
.button,
.btn,
button.button,
.wd-btn,
.single_add_to_cart_button,
.checkout-button,
#place_order,
.gr420-btn {
	font-family: var(--grt-font-body);
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: .05em;
	border-radius: var(--grt-radius-pill) !important;
	transition: transform .15s ease, box-shadow .2s ease, background-color .2s ease, color .2s ease;
}

.single_add_to_cart_button,
.checkout-button,
#place_order,
.btn-color-primary,
.wd-add-btn .add_to_cart_button,
.gr420-btn--slime {
	background-color: var(--grt-slime) !important;
	color: var(--grt-black) !important;
	box-shadow: var(--grt-glow-slime);
	border: 0 !important;
}

.single_add_to_cart_button:hover,
.checkout-button:hover,
#place_order:hover,
.btn-color-primary:hover,
.wd-add-btn .add_to_cart_button:hover,
.gr420-btn--slime:hover {
	background-color: var(--grt-yellow) !important;
	transform: translateY(-2px) rotate(-.5deg);
	box-shadow: 0 0 8px rgba(248, 250, 100, .6), 0 0 30px rgba(248, 250, 100, .35);
}

.gr420-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-height: 48px;
	padding: 0 28px;
	cursor: pointer;
	border: 0;
}

.gr420-btn--ghost {
	background: transparent;
	color: var(--grt-text);
	border: 2px solid var(--grt-line) !important;
}

.gr420-btn--ghost:hover {
	border-color: var(--grt-magenta) !important;
	color: var(--grt-magenta);
	box-shadow: var(--grt-glow-magenta);
}

/* ---------- 5. Cartes produit ---------- */
.wd-product,
.product-grid-item {
	background: var(--grt-ink);
	border: 1px solid var(--grt-line);
	border-radius: var(--grt-radius);
	overflow: hidden;
	transition: transform .25s ease, border-color .25s ease, box-shadow .25s ease;
}

.wd-product:hover,
.product-grid-item:hover {
	transform: translateY(-4px);
	border-color: var(--grt-slime);
	box-shadow: 0 0 0 1px var(--grt-slime), 0 18px 40px rgba(123, 249, 14, .15);
}

.wd-product .product-wrapper,
.product-grid-item .product-wrapper {
	background: transparent;
}

.wd-product .product-element-top,
.product-grid-item .product-element-top {
	position: relative;
	background: radial-gradient(circle at 50% 40%, var(--grt-panel-2) 0%, var(--grt-ink) 70%);
}

.wd-product .wd-entities-title,
.product-grid-item .wd-entities-title {
	font-size: 15px;
	line-height: 1.3;
}

.wd-product .wd-entities-title a,
.product-grid-item .wd-entities-title a {
	color: var(--grt-heading);
}

.wd-product .price,
.product-grid-item .price,
.summary .price {
	color: var(--grt-slime) !important;
	font-weight: 700;
}

.wd-product .price del,
.summary .price del {
	color: var(--grt-muted) !important;
	opacity: .7;
}

.onsale,
.product-label.onsale {
	background-color: var(--grt-magenta) !important;
	color: #ffffff !important;
	border-radius: var(--grt-radius-pill);
	box-shadow: var(--grt-glow-magenta);
}

.product-label.new {
	background-color: var(--grt-cyan) !important;
	color: var(--grt-black) !important;
}

.out-of-stock.product-label {
	background-color: var(--grt-line) !important;
	color: var(--grt-muted) !important;
}

.gr420-lab-badge {
	position: absolute;
	top: 10px;
	right: 10px;
	z-index: 3;
	padding: 4px 10px;
	font-size: 10px;
	font-weight: 700;
	letter-spacing: .08em;
	text-transform: uppercase;
	color: var(--grt-black);
	background: var(--grt-cyan);
	border-radius: var(--grt-radius-pill);
	box-shadow: var(--grt-glow-cyan);
	pointer-events: none;
}

/* ---------- 6. Barres de puissance ---------- */
.gr420-potency {
	display: grid;
	gap: 8px;
	margin: 14px 0 18px;
	padding: 14px 16px;
	background: var(--grt-panel);
	border: 1px solid var(--grt-line);
	border-radius: var(--grt-radius);
}

.gr420-potency__row {
	display: grid;
	grid-template-columns: 78px 1fr 58px;
	align-items: center;
	gap: 10px;
}

.gr420-potency__label {
	font-weight: 700;
	font-size: 13px;
	letter-spacing: .04em;
	color: var(--grt-bar);
}

.gr420-potency__track {
	position: relative;
	height: 10px;
	background: var(--grt-track);
	border-radius: var(--grt-radius-pill);
	overflow: hidden;
}

.gr420-potency__fill {
	position: absolute;
	inset: 0 auto 0 0;
	width: 0;
	background: var(--grt-bar);
	border-radius: inherit;
	box-shadow: 0 0 10px var(--grt-bar);
	transition: width 1.1s cubic-bezier(.2, .8, .2, 1);
}

.gr420-potency.is-visible .gr420-potency__fill {
	width: var(--gr420-w);
}

.gr420-potency__value {
	text-align: right;
	font-weight: 700;
	font-variant-numeric: tabular-nums;
	color: var(--grt-heading);
}

.gr420-potency__thc {
	margin-top: 2px;
	font-size: 11px;
	color: var(--grt-muted);
	letter-spacing: .04em;
}

.gr420-potency--compact {
	gap: 4px;
	margin: 6px 0 8px;
	padding: 8px 10px;
	background: transparent;
	border: 0;
}

.gr420-potency--compact .gr420-potency__row {
	grid-template-columns: 62px 1fr 46px;
	gap: 6px;
}

.gr420-potency--compact .gr420-potency__label,
.gr420-potency--compact .gr420-potency__value {
	font-size: 11px;
}

.gr420-potency--compact .gr420-potency__track {
	height: 6px;
}

.gr420-potency--compact .gr420-potency__thc {
	display: none;
}

/* ---------- 7. Fiche produit ---------- */
.single-product .summary-inner {
	background: var(--grt-ink);
	border: 1px solid var(--grt-line);
	border-radius: calc(var(--grt-radius) + 6px);
	padding: 28px;
}

.single-product .product_title {
	font-family: var(--grt-font-display);
	font-size: clamp(24px, 3vw, 36px);
	line-height: 1.15;
}

.single-product .woocommerce-product-gallery,
.single-product .product-images {
	border-radius: calc(var(--grt-radius) + 6px);
	overflow: hidden;
	background: radial-gradient(circle at 50% 40%, var(--grt-panel-2) 0%, var(--grt-ink) 70%);
}

.variations .wd-swatch,
.variations .wd-swatch.wd-text,
.wd-swatches-product .wd-swatch {
	background: var(--grt-panel) !important;
	border: 1px solid var(--grt-line) !important;
	color: var(--grt-text) !important;
	border-radius: 10px !important;
	font-weight: 600;
}

.variations .wd-swatch.wd-active,
.variations .wd-swatch:hover,
.wd-swatches-product .wd-swatch.wd-active {
	border-color: var(--grt-slime) !important;
	box-shadow: var(--grt-glow-slime);
	color: var(--grt-slime) !important;
}

.quantity input.qty,
.quantity .minus,
.quantity .plus {
	background: var(--grt-panel) !important;
	color: var(--grt-text) !important;
	border-color: var(--grt-line) !important;
}

.woocommerce-tabs .wd-nav-tabs > li > a,
.wc-tabs > li > a {
	font-weight: 700;
	text-transform: uppercase;
	color: var(--grt-muted);
}

.woocommerce-tabs .wd-nav-tabs > li.active > a,
.wc-tabs > li.active > a {
	color: var(--grt-slime);
}

.woocommerce-Tabs-panel details {
	margin: 0 0 10px;
	padding: 14px 18px;
	background: var(--grt-panel);
	border: 1px solid var(--grt-line);
	border-radius: var(--grt-radius);
}

.woocommerce-Tabs-panel details[open] {
	border-color: var(--grt-cyan);
}

.woocommerce-Tabs-panel summary {
	cursor: pointer;
	color: var(--grt-heading);
}

/* Encadrés "Information légale" hérités des descriptions Shopify */
.woocommerce-Tabs-panel div[style*="border-left"] {
	background: var(--grt-panel) !important;
	color: var(--grt-muted) !important;
	border-left-color: var(--grt-orange) !important;
	border-radius: 0 var(--grt-radius) var(--grt-radius) 0;
}

.gr420-legal {
	display: grid;
	grid-template-columns: auto 1fr;
	gap: 6px 12px;
	align-items: start;
	margin: 18px 0 6px;
	padding: 14px 16px;
	font-size: 12px;
	line-height: 1.5;
	color: var(--grt-muted);
	background: var(--grt-panel);
	border: 1px dashed var(--grt-line);
	border-radius: var(--grt-radius);
}

.gr420-legal p {
	margin: 0;
}

.gr420-legal__badge {
	grid-row: span 2;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 38px;
	height: 38px;
	font-family: var(--grt-font-display);
	font-size: 13px;
	color: var(--grt-black);
	background: var(--grt-orange);
	border-radius: 50%;
}

.gr420-legal__lab {
	color: var(--grt-cyan);
	font-weight: 600;
}

/* ---------- 8. Catégories, filtres, sidebar ---------- */
.wd-sidebar,
.sidebar-container,
.wd-filter-wrapper,
.filters-area {
	color: var(--grt-text);
}

.widget-title,
.wd-widget .widget-title {
	font-family: var(--grt-font-display);
	font-size: 15px;
	color: var(--grt-slime);
}

.wd-active-filters .wd-active-filter,
.wd-filter-list a:hover,
.wd-active-filters a {
	color: var(--grt-slime) !important;
}

.wd-cat,
.category-grid-item {
	border-radius: var(--grt-radius);
	overflow: hidden;
	border: 1px solid var(--grt-line);
	transition: border-color .2s ease, box-shadow .2s ease;
}

.wd-cat:hover,
.category-grid-item:hover {
	border-color: var(--grt-magenta);
	box-shadow: var(--grt-glow-magenta);
}

.wd-cat .wd-entities-title,
.category-grid-item .wd-entities-title {
	font-family: var(--grt-font-display);
}

.term-description,
.wd-shop-description {
	color: var(--grt-muted);
}

/* ---------- 9. Formulaires, panier, checkout ---------- */
input[type="text"],
input[type="email"],
input[type="tel"],
input[type="password"],
input[type="search"],
input[type="number"],
select,
textarea {
	background-color: var(--grt-panel) !important;
	color: var(--grt-text) !important;
	border-color: var(--grt-line) !important;
}

input:focus,
select:focus,
textarea:focus {
	border-color: var(--grt-slime) !important;
	box-shadow: 0 0 0 3px rgba(123, 249, 14, .2) !important;
}

.cart-totals-inner,
.woocommerce-checkout-review-order,
.checkout-order-review,
.wd-cart-totals,
.woocommerce-cart-form,
.woocommerce-MyAccount-navigation,
.woocommerce-MyAccount-content {
	background: var(--grt-ink) !important;
	border: 1px solid var(--grt-line);
	border-radius: var(--grt-radius);
}

table.shop_table,
.shop_table td,
.shop_table th {
	border-color: var(--grt-line) !important;
	color: var(--grt-text);
}

.cart-widget-side,
.wd-side-hidden,
.mobile-nav {
	background-color: var(--grt-ink) !important;
	color: var(--grt-text);
}

.woocommerce-message,
.woocommerce-info,
.wd-notice {
	background: var(--grt-panel) !important;
	color: var(--grt-text) !important;
	border-left: 4px solid var(--grt-slime) !important;
}

.woocommerce-error {
	background: var(--grt-panel) !important;
	color: var(--grt-text) !important;
	border-left: 4px solid var(--grt-magenta) !important;
}

/* ---------- 10. Footer ---------- */
.footer-container,
.main-footer,
.copyrights-wrapper {
	background-color: var(--grt-black) !important;
	color: var(--grt-muted);
	border-top: 0 !important;
}

.footer-container::before {
	content: '';
	display: block;
	height: 4px;
	background: var(--grt-rainbow);
	background-size: 200% 100%;
	animation: gr-rainbow-flow 8s linear infinite;
}

.footer-container .widget-title {
	color: var(--grt-slime);
}

.footer-container a {
	color: var(--grt-text);
}

.footer-container a:hover {
	color: var(--grt-magenta);
	text-shadow: var(--grt-glow-magenta);
}

/* ---------- 11. Blocs décoratifs réutilisables (classes à ajouter dans le builder) ---------- */

/* Séparateur "coulée de slime" : ajouter la classe gr-slime-divider à une section */
.gr-slime-divider {
	position: relative;
	padding-bottom: 70px !important;
}

.gr-slime-divider::after {
	content: '';
	position: absolute;
	left: 0;
	right: 0;
	bottom: -1px;
	height: 70px;
	background: var(--grt-slime);
	-webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1440 70' preserveAspectRatio='none'%3E%3Cpath d='M0 0h1440v18c-40 0-52 30-80 30s-30-26-62-26-34 46-70 46-36-40-66-40-28 22-58 22-40-30-74-30-30 50-66 50-38-44-70-44-34 28-62 28-44-32-80-32-30 40-64 40-40-36-72-36-28 18-58 18-36-26-70-26-36 44-68 44-34-40-66-40-30 26-62 26-38-30-70-30-32 36-62 36-36-28-66-28-30 16-58 16-38-24-70-24V0z'/%3E%3C/svg%3E") center/100% 100% no-repeat;
	mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1440 70' preserveAspectRatio='none'%3E%3Cpath d='M0 0h1440v18c-40 0-52 30-80 30s-30-26-62-26-34 46-70 46-36-40-66-40-28 22-58 22-40-30-74-30-30 50-66 50-38-44-70-44-34 28-62 28-44-32-80-32-30 40-64 40-40-36-72-36-28 18-58 18-36-26-70-26-36 44-68 44-34-40-66-40-30 26-62 26-38-30-70-30-32 36-62 36-36-28-66-28-30 16-58 16-38-24-70-24V0z'/%3E%3C/svg%3E") center/100% 100% no-repeat;
	transform: rotate(180deg);
	filter: drop-shadow(0 0 12px rgba(123, 249, 14, .5));
}

/* Texte néon : classe gr-neon (+ gr-neon--magenta / --cyan) */
.gr-neon {
	color: var(--grt-slime) !important;
	text-shadow: var(--grt-glow-slime);
	animation: gr-flicker 6s infinite;
}

.gr-neon--magenta {
	color: var(--grt-magenta) !important;
	text-shadow: var(--grt-glow-magenta);
}

.gr-neon--cyan {
	color: var(--grt-cyan) !important;
	text-shadow: var(--grt-glow-cyan);
}

/* Texte arc-en-ciel animé : classe gr-rainbow-text */
.gr-rainbow-text {
	background: var(--grt-rainbow);
	background-size: 200% 100%;
	-webkit-background-clip: text;
	background-clip: text;
	color: transparent !important;
	animation: gr-rainbow-flow 6s linear infinite;
}

/* Panneau routier "Zone de détente absolue" : classe gr-road-sign */
.gr-road-sign {
	display: inline-block;
	padding: 10px 22px;
	font-family: var(--grt-font-display);
	font-size: 14px;
	text-transform: uppercase;
	color: var(--grt-black);
	background: var(--grt-yellow);
	border: 4px solid var(--grt-black);
	outline: 3px solid var(--grt-yellow);
	border-radius: 10px;
	transform: rotate(-3deg);
	box-shadow: 0 8px 0 var(--grt-shadow);
}

/* Bandeau défilant : classe gr-marquee sur un conteneur, gr-marquee__track sur le contenu (dupliqué) */
.gr-marquee {
	overflow: hidden;
	white-space: nowrap;
	background: var(--grt-magenta);
	color: #ffffff;
	font-family: var(--grt-font-display);
	padding: 12px 0;
}

.gr-marquee__track {
	display: inline-block;
	padding-left: 100%;
	animation: gr-marquee 22s linear infinite;
}

/* Carte de section : classe gr-panel */
.gr-panel {
	background: var(--grt-ink);
	border: 1px solid var(--grt-line);
	border-radius: calc(var(--grt-radius) + 6px);
	padding: 28px;
}

/* Hero : classe gr-hero sur la section d'accueil */
.gr-hero {
	position: relative;
	overflow: hidden;
	background:
		radial-gradient(circle at 15% 20%, rgba(249, 0, 220, .35), transparent 40%),
		radial-gradient(circle at 85% 30%, rgba(91, 254, 254, .28), transparent 40%),
		radial-gradient(circle at 50% 100%, rgba(123, 249, 14, .35), transparent 45%),
		var(--grt-black);
}

.gr-hero::before {
	content: '';
	position: absolute;
	inset: -40%;
	background: conic-gradient(from 0deg, transparent, rgba(123, 249, 14, .08), transparent, rgba(249, 0, 220, .08), transparent);
	animation: gr-spin 40s linear infinite;
	pointer-events: none;
}

.gr-hero > * {
	position: relative;
	z-index: 1;
}

/* Élément flottant (alien, comète, œil) : classe gr-float */
.gr-float {
	animation: gr-float 6s ease-in-out infinite;
}

/* ---------- 12. Vérification d'âge ---------- */
.gr420-age-gate {
	position: fixed;
	inset: 0;
	z-index: 999999;
	display: flex;
	align-items: center;
	justify-content: center;
	padding: 16px;
	background:
		radial-gradient(circle at 20% 20%, rgba(249, 0, 220, .25), transparent 45%),
		radial-gradient(circle at 80% 80%, rgba(123, 249, 14, .25), transparent 45%),
		rgba(0, 0, 0, .94);
	backdrop-filter: blur(6px);
	transition: opacity .4s ease;
}

.gr420-age-gate[hidden] {
	display: none;
}

.gr420-age-gate.is-leaving {
	opacity: 0;
}

.gr420-age-gate__box {
	width: 100%;
	max-width: 480px;
	padding: 36px 28px 28px;
	text-align: center;
	background: var(--grt-ink);
	border: 2px solid var(--grt-slime);
	border-radius: 24px;
	box-shadow: var(--grt-glow-slime);
}

.gr420-age-gate__sign {
	display: inline-block;
	margin-bottom: 18px;
	padding: 8px 16px;
	font-family: var(--grt-font-display);
	font-size: 12px;
	text-transform: uppercase;
	color: var(--grt-black);
	background: var(--grt-yellow);
	border-radius: 8px;
	transform: rotate(-3deg);
}

.gr420-age-gate__title {
	margin: 0 0 10px;
	font-family: var(--grt-font-display);
	font-size: 26px;
	color: var(--grt-heading);
}

.gr420-age-gate__text {
	margin: 0 0 22px;
	color: var(--grt-muted);
}

.gr420-age-gate__actions {
	display: flex;
	flex-wrap: wrap;
	gap: 10px;
	justify-content: center;
}

.gr420-age-gate__baseline {
	margin: 22px 0 0;
	font-size: 12px;
	letter-spacing: .08em;
	text-transform: uppercase;
	background: var(--grt-rainbow);
	-webkit-background-clip: text;
	background-clip: text;
	color: transparent;
}

/* ---------- 13. Animations ---------- */
@keyframes gr-rainbow-flow {
	from { background-position: 0% 50%; }
	to { background-position: 200% 50%; }
}

@keyframes gr-flicker {
	0%, 18%, 22%, 25%, 53%, 57%, 100% { opacity: 1; }
	20%, 24%, 55% { opacity: .55; }
}

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

@keyframes gr-spin {
	to { transform: rotate(360deg); }
}

@keyframes gr-float {
	0%, 100% { transform: translateY(0) rotate(0deg); }
	50% { transform: translateY(-14px) rotate(3deg); }
}

@media (prefers-reduced-motion: reduce) {
	*,
	*::before,
	*::after {
		animation: none !important;
		transition: none !important;
	}
	.gr420-potency__fill {
		width: var(--gr420-w);
	}
}

/* ---------- 14. Mobile ---------- */
@media (max-width: 768px) {
	.single-product .summary-inner {
		padding: 18px;
	}
	.gr420-potency__row {
		grid-template-columns: 64px 1fr 52px;
	}
	.gr420-age-gate__title {
		font-size: 21px;
	}
	.gr-slime-divider {
		padding-bottom: 44px !important;
	}
	.gr-slime-divider::after {
		height: 44px;
	}
}

/* =========================================================================
   15. Cartes de grammage (fiche produit, sans menu déroulant)
   ========================================================================= */

/* Le select WooCommerce reste dans la page mais n'est plus visible */
.gr420-vselect-hidden {
	position: absolute !important;
	width: 1px !important;
	height: 1px !important;
	overflow: hidden !important;
	clip: rect(0 0 0 0) !important;
	clip-path: inset(50%) !important;
	white-space: nowrap !important;
}

/* La ligne "libellé + menu" de WooCommerce devient une colonne pleine largeur */
.single-product .variations,
.single-product .variations tbody,
.single-product .variations tr,
.single-product .variations th,
.single-product .variations td {
	display: block;
	width: 100%;
	padding: 0;
	border: 0;
	background: transparent;
}

.single-product .variations_form .variations th.label,
.single-product .variations_form .variations .label,
.single-product .variations_form .variations th {
	display: none !important;
}

.single-product .variations td.value {
	position: relative;
}

/* Nuanciers WoodMart en doublon */
.single-product .variations_form .wd-swatches-product,
.single-product .variations_form .wd-swatches-single {
	display: none !important;
}

.single-product .reset_variations {
	display: none !important;
}

.gr420-vcards {
	margin: 4px 0 18px;
}

.gr420-vcards__heading {
	margin: 0 0 12px;
	font-family: var(--grt-font-body);
	font-size: 17px;
	font-weight: 700;
	color: var(--grt-heading);
}

.gr420-vcards__grid {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 12px;
}

.gr420-vcards__grid--many {
	grid-template-columns: repeat(3, minmax(0, 1fr));
}

.gr420-vcard {
	position: relative;
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 10px;
	min-height: 92px;
	padding: 14px 16px;
	text-align: left;
	font-family: var(--grt-font-body);
	color: var(--grt-text);
	background: var(--grt-panel) !important;
	border: 2px solid var(--grt-line) !important;
	border-radius: 16px !important;
	box-shadow: none;
	cursor: pointer;
	transition: border-color .18s ease, background-color .18s ease, transform .15s ease, box-shadow .18s ease;
	text-transform: none !important;
	letter-spacing: normal !important;
	line-height: 1.2;
}

.gr420-vcard:hover {
	border-color: rgba(123, 249, 14, .55) !important;
	transform: translateY(-1px);
}

.gr420-vcard:focus-visible {
	outline: 3px solid var(--grt-cyan);
	outline-offset: 2px;
}

.gr420-vcard.is-selected {
	border-color: var(--grt-slime) !important;
	background: rgba(123, 249, 14, .10) !important;
	box-shadow: 0 0 0 1px var(--grt-slime), 0 0 18px rgba(123, 249, 14, .25);
}

.gr420-vcard.is-selected::after {
	content: '';
	position: absolute;
	top: 8px;
	right: 8px;
	width: 10px;
	height: 10px;
	border-radius: 50%;
	background: var(--grt-slime);
	box-shadow: 0 0 8px var(--grt-slime);
}

.gr420-vcard__weight {
	font-size: 26px;
	font-weight: 800;
	letter-spacing: -.02em;
	white-space: nowrap;
	color: var(--grt-heading);
}

.gr420-vcard__pricing {
	display: flex;
	flex-direction: column;
	align-items: flex-end;
	gap: 2px;
	text-align: right;
}

.gr420-vcard__regular {
	font-size: 12px;
	color: var(--grt-muted);
	opacity: .85;
}

.gr420-vcard__regular .amount {
	color: inherit;
}

.gr420-vcard__price,
.gr420-vcard__price .amount {
	font-size: 22px;
	font-weight: 800;
	color: var(--grt-slime) !important;
	line-height: 1.05;
}

.gr420-vcard.is-promo .gr420-vcard__price,
.gr420-vcard.is-promo .gr420-vcard__price .amount {
	color: var(--grt-magenta) !important;
}

.gr420-vcard__unit,
.gr420-vcard__unit .amount {
	font-size: 12px;
	font-weight: 700;
	color: var(--grt-muted) !important;
}

.gr420-vcard__soldout {
	position: absolute;
	left: 16px;
	bottom: 8px;
	font-size: 10px;
	font-weight: 700;
	letter-spacing: .08em;
	text-transform: uppercase;
	color: var(--grt-orange);
}

.gr420-vcard.is-soldout,
.gr420-vcard.is-unavailable {
	opacity: .45;
	cursor: not-allowed;
}

.gr420-vcard.is-soldout .gr420-vcard__weight {
	text-decoration: line-through;
}

/* Le prix global de la variation, sous les cartes, est redondant : on le garde mais discret */
.single-product .woocommerce-variation-price .price {
	font-size: 15px;
	opacity: .8;
}

@media (max-width: 1024px) {
	.gr420-vcards__grid--many {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}

@media (max-width: 380px) {
	.gr420-vcard {
		min-height: 80px;
		padding: 12px;
	}
	.gr420-vcard__weight {
		font-size: 22px;
	}
	.gr420-vcard__price,
	.gr420-vcard__price .amount {
		font-size: 18px;
	}
}

/* =========================================================================
   16. Retours design (v1.2.0)
   ========================================================================= */

/* --- « à partir de » : le montant était masqué par l'option WoodMart « cacher le prix le plus élevé » --- */
.hide-larger-price .price .mcmp-variable-price-prefix ~ .woocommerce-Price-amount,
.price .mcmp-variable-price-prefix ~ .woocommerce-Price-amount {
	display: inline !important;
}
.price .mcmp-variable-price-prefix {
	margin-right: .3em;
}
.single-product .summary p.price {
	display: inline-flex;
	flex-wrap: wrap;
	align-items: baseline;
	gap: 0 .3em;
	width: auto !important;
	min-width: 0 !important;
	padding: 10px 18px;
}

/* --- Barres de molécules : toujours remplies (plus besoin du défilement), couleur par molécule --- */
.gr420-potency__fill,
.gr420-potency.is-visible .gr420-potency__fill {
	width: var(--gr420-w);
	animation: gr420-fill 1.1s cubic-bezier(.2, .8, .2, 1) both;
}
@keyframes gr420-fill {
	from { width: 0; }
}
.gr420-potency__label {
	color: var(--grt-heading);
}
.gr420-potency__track {
	background: var(--grt-track);
}

/* --- Cartes de variation : le texte reste dans son rectangle --- */
.gr420-vcard {
	min-width: 0;
	overflow: hidden;
}
.gr420-vcard__weight {
	min-width: 0;
	overflow: hidden;
	text-overflow: ellipsis;
}
.gr420-vcard--text {
	min-height: 64px;
	padding: 12px 14px;
}
.gr420-vcard--text .gr420-vcard__weight {
	font-size: 16px;
	font-weight: 700;
	letter-spacing: 0;
	white-space: normal;
	overflow-wrap: anywhere;
	line-height: 1.25;
}
.gr420-vcard--text .gr420-vcard__pricing {
	display: none;
}
.gr420-vcard .gr420-vcard__price {
	white-space: nowrap;
}
.gr420-vcards__grid--many .gr420-vcard__weight {
	font-size: 20px;
}
.gr420-vcards__grid--many .gr420-vcard--text .gr420-vcard__weight {
	font-size: 15px;
}
.gr420-vcards__grid--many .gr420-vcard__price,
.gr420-vcards__grid--many .gr420-vcard__price .amount {
	font-size: 17px;
}
/* Le petit point vert de sélection ne recouvre plus le texte */
.gr420-vcard.is-selected::after {
	top: 7px;
	right: 7px;
	width: 8px;
	height: 8px;
}

/* --- Titres illisibles (texte foncé sur fond noir) --- */
.woodmart-title-container,
.wd-prefooter .info-box-title,
.wd-prefooter .title,
.wd-prefooter h1,
.wd-prefooter h2,
.wd-prefooter h3,
.wd-prefooter h4 {
	color: var(--grt-heading) !important;
}
.wd-header .wd-tools-text,
.wd-header .wd-tools-element > a,
.wd-header .wd-cart-subtotal,
.wd-header .wd-cart-subtotal .amount {
	color: var(--grt-text-2) !important;
}
.wd-product .add-to-cart-loop,
.product-grid-item .add-to-cart-loop {
	color: var(--grt-heading) !important;
}
.wd-post-cat a,
.meta-post-categories a,
.wd-post-cat {
	color: #0b0b0f !important;
}

/* --- Pages catégories : plus de bandeau de titre ni de bloc d'en-tête --- */
.tax-product_cat .wd-page-title,
.tax-product_cat .page-title,
.post-type-archive-product .wd-page-title,
.tax-product_cat .term-description,
.post-type-archive-product .term-description {
	display: none !important;
}
.tax-product_cat .wd-content-layout,
.post-type-archive-product .wd-content-layout {
	padding-top: 28px;
}

/* --- Grilles produits harmonisées : même hauteur, image carrée, prix en bas --- */
.products .wd-product,
.wd-products .wd-product,
.products .product-grid-item {
	height: 100%;
}
.wd-product .product-wrapper,
.product-grid-item .product-wrapper {
	display: flex;
	flex-direction: column;
	height: 100%;
}
.wd-product .product-element-top,
.product-grid-item .product-element-top {
	aspect-ratio: 1 / 1;
	background: #ffffff;
	display: flex;
	align-items: center;
	justify-content: center;
}
.wd-product .product-element-top img,
.product-grid-item .product-element-top img {
	width: 100%;
	height: 100%;
	object-fit: contain;
}
.wd-product .product-element-bottom,
.product-grid-item .product-element-bottom,
.wd-product .product-information,
.product-grid-item .product-information {
	display: flex;
	flex-direction: column;
	flex: 1 1 auto;
	padding: 14px 14px 16px !important;
}
.wd-product .wd-entities-title,
.product-grid-item .wd-entities-title {
	display: -webkit-box;
	-webkit-line-clamp: 2;
	-webkit-box-orient: vertical;
	overflow: hidden;
	min-height: 2.6em;
	margin-bottom: 8px;
	font-size: 15px;
	text-align: center;
}
.wd-product .gr420-potency--compact,
.product-grid-item .gr420-potency--compact {
	margin: 0 0 8px;
	padding: 0;
}
.wd-product .star-rating,
.wd-product .wd-star-rating,
.product-grid-item .star-rating {
	margin: 0 auto 10px;
}
.wd-product .price,
.product-grid-item .price,
.wd-product .wrap-price,
.product-grid-item .wrap-price {
	margin-top: auto !important;
}

/* --- Bandeau de paiement : l'ancien bandeau gris Ovri est remplacé --- */
body > div[style*="lightgray"] {
	display: none !important;
}
.gr420-paybar {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: center;
	gap: 10px 14px;
	padding: 14px 16px 18px;
	background: var(--grt-black);
	border-top: 1px solid var(--grt-line-soft);
	color: var(--grt-muted);
	font-family: var(--grt-font-body);
	font-size: 12px;
	letter-spacing: .04em;
}
.gr420-paybar__lock {
	display: inline-flex;
	color: var(--grt-slime);
}
.gr420-paybar__text {
	text-transform: uppercase;
	font-weight: 700;
	color: var(--grt-text-2);
}
.gr420-paybar__cards {
	display: inline-flex;
	flex-wrap: wrap;
	gap: 6px;
}
.gr420-paybar__cards span {
	padding: 3px 9px;
	border: 1px solid var(--grt-line);
	border-radius: 6px;
	color: var(--grt-text-2);
	font-weight: 700;
	font-size: 11px;
}
@media (max-width: 768px) {
	.gr420-paybar {
		padding-bottom: 80px;
	}
}

/* Couleur des barres : la variable posée par le PHP s'appelle --gr420-bar */
.gr420-potency__row {
	--grt-bar: var(--gr420-bar);
}
@media (max-width: 600px) {
	.gr420-vcard:not(.gr420-vcard--text) {
		flex-direction: column;
		align-items: flex-start;
		justify-content: center;
		gap: 4px;
	}
	.gr420-vcard:not(.gr420-vcard--text) .gr420-vcard__pricing {
		align-items: flex-start;
		text-align: left;
	}
	.gr420-vcard:not(.gr420-vcard--text) .gr420-vcard__weight {
		font-size: 20px;
		white-space: normal;
	}
}

/* Promo « dès X € » sur les cartes de poids */
.gr420-vcards__promo {
	margin: -4px 0 12px;
	padding: 8px 12px;
	border-radius: 12px;
	border: 1px solid rgba(199, 253, 84, .45);
	background: rgba(199, 253, 84, .1);
	color: var(--grt-promo-text);
	font-size: 13px;
	line-height: 1.45;
}
.gr420-vcards__promo strong {
	color: var(--grt-slime);
}
.gr420-vcard__promo {
	display: inline-block;
	padding: 1px 7px;
	border-radius: 999px;
	background: var(--grt-magenta);
	color: #fff;
	font-size: 11px;
	font-weight: 800;
	line-height: 1.5;
}

/* Ancien prix « à partir de » barré pendant une promo */
.price .gr420-from-del {
	margin-right: .2em;
	font-size: .85em;
	font-weight: 500;
	color: var(--grt-muted) !important;
	opacity: .85;
	text-decoration-thickness: 1.5px;
}
.price .gr420-from-del .amount {
	color: inherit !important;
}

/* Mini-panier : quantité lisible */
.cart-widget-side .quantity,
.widget_shopping_cart .quantity,
.wd-cart-content .quantity {
	color: var(--grt-muted) !important;
}
label .optional,
.form-row .optional {
	color: var(--grt-muted) !important;
}

/* Produit épuisé : fiche grisée */
.gr420-soldout .woocommerce-product-gallery img,
.gr420-soldout .product-images img {
	filter: grayscale(1);
	opacity: .55;
}
.gr420-soldout .summary .price,
.gr420-soldout .summary .price .amount,
.gr420-soldout .gr420-vcard__price,
.gr420-soldout .gr420-vcard__price .amount {
	color: var(--grt-muted) !important;
}
.gr420-soldout .gr420-vcard {
	opacity: .5;
	cursor: not-allowed;
}
.gr420-soldout-flag {
	display: inline-block;
	margin: 0 0 12px;
	padding: 8px 14px;
	border-radius: 999px;
	border: 1px solid var(--grt-line);
	background: var(--grt-panel);
	color: var(--grt-heading);
	font-size: 13px;
	font-weight: 700;
}
.gr420-soldout .single_add_to_cart_button,
.gr420-soldout .single_add_to_cart_button:hover {
	background: var(--grt-track) !important;
	color: var(--grt-muted) !important;
	box-shadow: none !important;
	transform: none !important;
	cursor: not-allowed !important;
	pointer-events: none;
}
