/* ==========================================================================
   Gem Buttons – boutons façon pierres précieuses polies
   Variables pilotées par le plugin :
   --gemb-c1 (reflet) --gemb-c2 (teinte) --gemb-c3 (profondeur) --gemb-text
   --gemb-shine 0..1  --gemb-depth 0..1  --gemb-tex-o 0..1  --gemb-glow
   --gemb-radius --gemb-speed --gemb-bw --gemb-bc --gemb-delay
   ========================================================================== */

.gemb-wrap {
	--gemb-c1: #8ff5ea;
	--gemb-c2: #22c3c6;
	--gemb-c3: #08707f;
	--gemb-text: #fff;
	--gemb-shine: .75;
	--gemb-depth: .65;
	--gemb-tex-o: .55;
	--gemb-glow: 14px;
	--gemb-radius: 22px;
	--gemb-speed: 5s;
	--gemb-bw: 1px;
	--gemb-bc: rgba(255, 255, 255, .45);
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	align-items: center;
	gap: 18px;
	box-sizing: border-box;
}
.gemb-wrap *,
.gemb-wrap *::before,
.gemb-wrap *::after { box-sizing: border-box; }
.gemb-anchor { display: block; position: relative; top: -90px; visibility: hidden; }

/* ---------- Le bouton-pierre ---------- */
.gemb-wrap .gemb-btn {
	position: relative;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	isolation: isolate;
	overflow: hidden;
	cursor: pointer;
	margin: 0;
	padding: .9em 1.75em;
	font-size: 16px;
	font-weight: var(--gemb-fw, 600);
	letter-spacing: var(--gemb-ls, 0);
	text-transform: var(--gemb-tt, none);
	line-height: 1.15;
	text-align: center;
	color: var(--gemb-text) !important;
	text-decoration: none !important;
	border: var(--gemb-bw) solid var(--gemb-bc);
	border-radius: var(--gemb-pebble, 46% 54% 50% 50% / 58% 48% 52% 42%);
	-webkit-tap-highlight-color: transparent;
	background:
		radial-gradient(70% 45% at 62% 100%, color-mix(in srgb, var(--gemb-c1) 55%, transparent) 0%, transparent 70%),
		radial-gradient(120% 90% at 28% 20%, var(--gemb-c1) 0%, transparent 55%),
		radial-gradient(130% 120% at 78% 88%, var(--gemb-c3) 0%, transparent 62%),
		linear-gradient(160deg, var(--gemb-c1) 0%, var(--gemb-c2) 45%, var(--gemb-c3) 100%);
	box-shadow:
		inset 0 calc(-10px * var(--gemb-depth)) calc(18px * var(--gemb-depth)) rgba(0, 0, 0, calc(.30 * var(--gemb-depth))),
		inset 0 calc(8px * var(--gemb-depth)) calc(14px * var(--gemb-depth)) rgba(255, 255, 255, calc(.60 * var(--gemb-depth))),
		inset 0 0 0 1px rgba(255, 255, 255, calc(.18 * var(--gemb-depth))),
		0 calc(12px * var(--gemb-depth)) calc(22px * var(--gemb-depth)) -8px color-mix(in srgb, var(--gemb-c3) 70%, transparent),
		0 0 var(--gemb-glow) color-mix(in srgb, var(--gemb-c2) 55%, transparent);
	transition: transform .4s cubic-bezier(.2, .8, .2, 1), filter .35s ease, opacity .6s ease, translate .7s cubic-bezier(.2, .8, .2, 1), scale .6s ease;
	transition-delay: 0s, 0s, var(--gemb-delay, 0ms), var(--gemb-delay, 0ms), var(--gemb-delay, 0ms);
}
.gemb-wrap .gemb-btn.is-static { cursor: default; }

/* Reflet spéculaire (la tache de lumière polie) */
.gemb-wrap .gemb-btn::before {
	content: "";
	position: absolute;
	z-index: 1;
	pointer-events: none;
	left: 9%;
	top: 5%;
	width: 58%;
	height: 46%;
	border-radius: 50%;
	background:
		radial-gradient(circle at 30% 42%, rgba(255, 255, 255, var(--gemb-shine)) 0 4%, rgba(255, 255, 255, calc(.6 * var(--gemb-shine))) 7%, transparent 12%),
		radial-gradient(ellipse 70% 55% at 46% 46%, rgba(255, 255, 255, calc(.9 * var(--gemb-shine))) 0%, rgba(255, 255, 255, calc(.55 * var(--gemb-shine))) 30%, rgba(255, 255, 255, calc(.12 * var(--gemb-shine))) 55%, transparent 72%);
	transform: rotate(-12deg);
	filter: blur(.4px);
}

/* Balayage lumineux */
.gemb-wrap .gemb-btn::after {
	content: "";
	position: absolute;
	inset: -30% -10%;
	z-index: 2;
	pointer-events: none;
	background: linear-gradient(105deg, transparent 36%, rgba(255, 255, 255, calc(.6 * var(--gemb-shine))) 48%, rgba(255, 255, 255, 0) 60%);
	transform: translateX(-130%);
}

/* Contenu */
.gemb-wrap .gemb-inner {
	position: relative;
	z-index: 3;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: .55em;
	text-shadow: var(--gemb-ts, 0 1px 2px rgba(0, 0, 0, .28), 0 0 12px rgba(0, 0, 0, .08));
}
.gemb-wrap .gemb-text { display: inline-flex; flex-direction: column; align-items: center; }
.gemb-wrap .gemb-sub { font-size: .66em; font-weight: 500; opacity: .85; margin-top: .2em; letter-spacing: .02em; }
.gemb-wrap .gemb-icon { display: inline-flex; align-items: center; justify-content: center; font-size: 1.15em; line-height: 1; }
.gemb-wrap .gemb-icon.dashicons { width: 1.15em; height: 1.15em; font-size: 1.15em; }
.gemb-wrap .gemb-icon img { height: 1.25em; width: auto; display: block; }
.gemb-wrap .gemb-icon-top .gemb-inner { flex-direction: column; gap: .35em; }


/* ---------- Modes de couleur ---------- */
/* Couleur unique brillante : la pierre est dérivée d'une seule teinte */
.gemb-wrap .gemb-btn.gemb-mode-gloss {
	--gemb-c1: color-mix(in srgb, var(--gemb-solid) 38%, #fff);
	--gemb-c2: var(--gemb-solid);
	--gemb-c3: color-mix(in srgb, var(--gemb-solid) 55%, #000);
}
/* Couleur unique plate */
.gemb-wrap .gemb-btn.gemb-mode-solid {
	background: var(--gemb-solid);
	box-shadow: 0 calc(10px * var(--gemb-depth)) calc(20px * var(--gemb-depth)) -10px color-mix(in srgb, var(--gemb-solid) 70%, #000),
		0 0 var(--gemb-glow) color-mix(in srgb, var(--gemb-solid) 45%, transparent);
}
.gemb-wrap .gemb-btn.gemb-mode-solid::before { display: none; }
/* Dégradé */
.gemb-wrap .gemb-btn.gemb-mode-gradient {
	background:
		radial-gradient(120% 80% at 30% 0%, rgba(255, 255, 255, calc(.35 * var(--gemb-shine))), transparent 55%),
		linear-gradient(var(--gemb-gangle, 135deg), var(--gemb-g1), var(--gemb-g2));
	box-shadow: inset 0 calc(-6px * var(--gemb-depth)) calc(12px * var(--gemb-depth)) rgba(0, 0, 0, calc(.2 * var(--gemb-depth))),
		0 calc(10px * var(--gemb-depth)) calc(20px * var(--gemb-depth)) -10px color-mix(in srgb, var(--gemb-g2) 70%, transparent),
		0 0 var(--gemb-glow) color-mix(in srgb, var(--gemb-g1) 50%, transparent);
}
.gemb-wrap .gemb-btn.gemb-mode-gradient::before { opacity: .55; }
/* Métallisé */
.gemb-wrap .gemb-btn.gemb-mode-metal {
	background: linear-gradient(180deg,
		color-mix(in srgb, var(--gemb-solid) 30%, #fff) 0%,
		color-mix(in srgb, var(--gemb-solid) 65%, #fff) 20%,
		var(--gemb-solid) 46%,
		color-mix(in srgb, var(--gemb-solid) 65%, #000) 50%,
		var(--gemb-solid) 72%,
		color-mix(in srgb, var(--gemb-solid) 45%, #fff) 100%);
	box-shadow: inset 0 1px 0 rgba(255, 255, 255, .7), inset 0 -1px 0 rgba(0, 0, 0, .35),
		0 calc(10px * var(--gemb-depth)) calc(18px * var(--gemb-depth)) -8px rgba(0, 0, 0, .45),
		0 0 var(--gemb-glow) color-mix(in srgb, var(--gemb-solid) 40%, transparent);
}
.gemb-wrap .gemb-btn.gemb-mode-metal::before { display: none; }
/* Verre givré */
.gemb-wrap .gemb-btn.gemb-mode-glass {
	background: color-mix(in srgb, var(--gemb-solid) 28%, rgba(255, 255, 255, .1));
	-webkit-backdrop-filter: blur(12px) saturate(1.5);
	backdrop-filter: blur(12px) saturate(1.5);
	border-color: rgba(255, 255, 255, .55);
	box-shadow: inset 0 1px 1px rgba(255, 255, 255, .65), inset 0 -8px 16px rgba(0, 0, 0, .08),
		0 10px 26px -12px rgba(0, 0, 0, .45), 0 0 var(--gemb-glow) color-mix(in srgb, var(--gemb-solid) 35%, transparent);
}
.gemb-wrap .gemb-btn.gemb-mode-glass::before { opacity: .5; }
/* Contour */
.gemb-wrap .gemb-btn.gemb-mode-outline {
	--gemb-ts: none;
	background: transparent;
	border: max(2px, var(--gemb-bw)) solid var(--gemb-solid);
	box-shadow: 0 0 var(--gemb-glow) color-mix(in srgb, var(--gemb-solid) 35%, transparent);
	transition: background .3s ease, transform .4s cubic-bezier(.2, .8, .2, 1), filter .35s ease, opacity .6s ease, translate .7s ease;
}
.gemb-wrap .gemb-btn.gemb-mode-outline::before { display: none; }
.gemb-wrap .gemb-btn.gemb-mode-outline:hover { background: var(--gemb-solid); --gemb-text: var(--gemb-otext, #fff); }
/* Néon */
.gemb-wrap .gemb-btn.gemb-mode-neon {
	--gemb-ts: 0 0 6px var(--gemb-solid), 0 0 14px var(--gemb-solid);
	background: color-mix(in srgb, var(--gemb-solid) 10%, #070a12);
	border: max(2px, var(--gemb-bw)) solid var(--gemb-solid);
	box-shadow: 0 0 var(--gemb-glow) var(--gemb-solid), 0 0 calc(var(--gemb-glow) * 2) color-mix(in srgb, var(--gemb-solid) 50%, transparent),
		inset 0 0 calc(var(--gemb-glow) * .8) color-mix(in srgb, var(--gemb-solid) 55%, transparent);
}
.gemb-wrap .gemb-btn.gemb-mode-neon::before { display: none; }

/* ---------- Textures minérales ---------- */
.gemb-wrap .gemb-tex {
	position: absolute;
	inset: 0;
	z-index: 0;
	pointer-events: none;
	opacity: var(--gemb-tex-o);
	background-size: cover;
	background-position: center;
	border-radius: inherit;
}
.gemb-wrap .gemb-tex-none .gemb-tex { display: none; }

/* Marbrures / veines douces (larimar, amazonite) */
.gemb-wrap .gemb-tex-marble .gemb-tex {
	mix-blend-mode: screen;
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='320' height='160' viewBox='0 0 320 160' preserveAspectRatio='none'%3E%3Cfilter id='a'%3E%3CfeTurbulence type='turbulence' baseFrequency='0.006 0.028' numOctaves='4' seed='11'/%3E%3CfeColorMatrix values='0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 -5 0 0 0 1.1'/%3E%3C/filter%3E%3Cfilter id='b'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.012 0.04' numOctaves='3' seed='4'/%3E%3CfeColorMatrix values='0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 2.4 0 0 0 -1.05'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23b)'/%3E%3Crect width='100%25' height='100%25' filter='url(%23a)'/%3E%3C/svg%3E");
}
/* Réseau de craquelures (turquoise) */
.gemb-wrap .gemb-tex-crackle .gemb-tex {
	mix-blend-mode: screen;
	background-size: 180px 180px;
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='c'%3E%3CfeTurbulence type='turbulence' baseFrequency='0.035' numOctaves='3' seed='23' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 -8 0 0 0 1.35'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23c)'/%3E%3C/svg%3E");
}
/* Opalescence / pierre de lune (jeu de couleurs) */
.gemb-wrap .gemb-tex-opal .gemb-tex {
	mix-blend-mode: multiply;
	opacity: calc(var(--gemb-tex-o) + .2);
	background:
		radial-gradient(28% 34% at 72% 34%, rgba(255, 190, 160, .75), transparent 70%),
		radial-gradient(30% 36% at 26% 72%, rgba(170, 245, 215, .8), transparent 70%),
		radial-gradient(34% 30% at 84% 78%, rgba(175, 185, 255, .85), transparent 70%),
		radial-gradient(24% 26% at 50% 18%, rgba(255, 230, 160, .6), transparent 70%),
		radial-gradient(26% 30% at 12% 30%, rgba(200, 170, 255, .55), transparent 70%);
}
/* Facettes cristallines (quartz, améthyste, gemmes taillées) */
.gemb-wrap .gemb-tex-crystal .gemb-tex {
	mix-blend-mode: soft-light;
	opacity: calc(var(--gemb-tex-o) + .2);
	background:
		linear-gradient(118deg, rgba(255, 255, 255, .55) 0 22%, transparent 22.5% 100%),
		linear-gradient(62deg, transparent 0 58%, rgba(255, 255, 255, .45) 58.5% 70%, transparent 70.5%),
		linear-gradient(158deg, transparent 0 64%, rgba(0, 0, 0, .35) 64.5% 100%),
		linear-gradient(28deg, rgba(0, 0, 0, .25) 0 18%, transparent 18.5% 100%),
		linear-gradient(90deg, transparent 0 40%, rgba(255, 255, 255, .25) 40.5% 46%, transparent 46.5%);
}
/* Druse scintillante (agate, géode) */
.gemb-wrap .gemb-tex-druzy .gemb-tex {
	mix-blend-mode: screen;
	background-image:
		radial-gradient(circle, rgba(255, 255, 255, .95) 0 1px, transparent 1.6px),
		radial-gradient(circle, rgba(255, 255, 255, .7) 0 .8px, transparent 1.3px),
		radial-gradient(circle, rgba(200, 230, 255, .9) 0 1.2px, transparent 2px);
	background-size: 17px 13px, 11px 19px, 29px 23px;
	background-position: 0 0, 5px 7px, 12px 3px;
	animation: gemb-twinkle 2.6s ease-in-out infinite alternate;
}

/* ---------- Tailles ---------- */
.gemb-size-xs .gemb-btn  { font-size: 12px; padding: .55em 1.1em; }
.gemb-size-sm .gemb-btn  { font-size: 14px; padding: .75em 1.4em; }
.gemb-size-md .gemb-btn  { font-size: 16px; padding: .9em 1.75em; }
.gemb-size-lg .gemb-btn  { font-size: 19px; padding: 1em 2em; }
.gemb-size-xl .gemb-btn  { font-size: 22px; padding: 1.1em 2.2em; }
.gemb-size-xxl .gemb-btn { font-size: 27px; padding: 1.2em 2.4em; }

/* ---------- Formes ---------- */
.gemb-shape-pebble .gemb-btn,
.gemb-wrap .gemb-btn.gemb-shape-pebble { border-radius: var(--gemb-pebble, 46% 54% 50% 50% / 58% 48% 52% 42%); clip-path: none; aspect-ratio: auto; }
.gemb-shape-oval .gemb-btn,
.gemb-wrap .gemb-btn.gemb-shape-oval { border-radius: 50%; padding-left: 2.1em; padding-right: 2.1em; clip-path: none; aspect-ratio: auto; }
.gemb-shape-pill .gemb-btn,
.gemb-wrap .gemb-btn.gemb-shape-pill { border-radius: 999px; clip-path: none; aspect-ratio: auto; }
.gemb-shape-round .gemb-btn,
.gemb-wrap .gemb-btn.gemb-shape-round { border-radius: 50%; aspect-ratio: 1; padding: 1em; min-width: 5.2em; clip-path: none; }
.gemb-shape-cabochon .gemb-btn,
.gemb-wrap .gemb-btn.gemb-shape-cabochon { border-radius: 38% / 50%; clip-path: none; aspect-ratio: auto; }
.gemb-shape-rounded .gemb-btn,
.gemb-wrap .gemb-btn.gemb-shape-rounded { border-radius: var(--gemb-radius); clip-path: none; aspect-ratio: auto; }
.gemb-shape-square .gemb-btn,
.gemb-wrap .gemb-btn.gemb-shape-square { border-radius: 4px; clip-path: none; aspect-ratio: auto; }
.gemb-shape-faceted .gemb-btn,
.gemb-wrap .gemb-btn.gemb-shape-faceted {
	border-radius: 0;
	aspect-ratio: auto;
	clip-path: polygon(12% 0, 88% 0, 100% 30%, 100% 70%, 88% 100%, 12% 100%, 0 70%, 0 30%);
	padding-left: 2.2em;
	padding-right: 2.2em;
}

/* Formes avancées */
.gemb-shape-blob .gemb-btn:not([class*=" gemb-shape-"]),
.gemb-wrap .gemb-btn.gemb-shape-blob { border-radius: 63% 37% 54% 46% / 55% 48% 52% 45%; clip-path: none; aspect-ratio: auto; -webkit-mask: none; mask: none; }
.gemb-shape-squircle .gemb-btn:not([class*=" gemb-shape-"]),
.gemb-wrap .gemb-btn.gemb-shape-squircle { border-radius: 30%; clip-path: none; aspect-ratio: auto; -webkit-mask: none; mask: none; }
.gemb-shape-rectangle .gemb-btn:not([class*=" gemb-shape-"]),
.gemb-wrap .gemb-btn.gemb-shape-rectangle { border-radius: 0; clip-path: none; aspect-ratio: auto; -webkit-mask: none; mask: none; }
.gemb-shape-leaf .gemb-btn:not([class*=" gemb-shape-"]),
.gemb-wrap .gemb-btn.gemb-shape-leaf { border-radius: 1.6em 0 1.6em 0; clip-path: none; aspect-ratio: auto; -webkit-mask: none; mask: none; }
.gemb-shape-hexagon .gemb-btn:not([class*=" gemb-shape-"]),
.gemb-wrap .gemb-btn.gemb-shape-hexagon { border-radius: 0; aspect-ratio: auto; -webkit-mask: none; mask: none; clip-path: polygon(1.1em 0, calc(100% - 1.1em) 0, 100% 50%, calc(100% - 1.1em) 100%, 1.1em 100%, 0 50%); padding-left: 2.3em; padding-right: 2.3em; }
.gemb-shape-diamond .gemb-btn:not([class*=" gemb-shape-"]),
.gemb-wrap .gemb-btn.gemb-shape-diamond { border-radius: 0; aspect-ratio: auto; -webkit-mask: none; mask: none; clip-path: polygon(50% 0, 100% 50%, 50% 100%, 0 50%); padding: 1.5em 3.2em; }
.gemb-shape-parallelogram .gemb-btn:not([class*=" gemb-shape-"]),
.gemb-wrap .gemb-btn.gemb-shape-parallelogram { border-radius: 0; aspect-ratio: auto; -webkit-mask: none; mask: none; clip-path: polygon(1em 0, 100% 0, calc(100% - 1em) 100%, 0 100%); padding-left: 2.3em; padding-right: 2.3em; }
.gemb-shape-arrow .gemb-btn:not([class*=" gemb-shape-"]),
.gemb-wrap .gemb-btn.gemb-shape-arrow { border-radius: 0; aspect-ratio: auto; -webkit-mask: none; mask: none; clip-path: polygon(0 0, calc(100% - 1.1em) 0, 100% 50%, calc(100% - 1.1em) 100%, 0 100%); padding-left: 1.6em; padding-right: 2.6em; }
.gemb-shape-chevron .gemb-btn:not([class*=" gemb-shape-"]),
.gemb-wrap .gemb-btn.gemb-shape-chevron { border-radius: 0; aspect-ratio: auto; -webkit-mask: none; mask: none; clip-path: polygon(0 0, calc(100% - 1.1em) 0, 100% 50%, calc(100% - 1.1em) 100%, 0 100%, 1.1em 50%); padding-left: 2.5em; padding-right: 2.5em; }
.gemb-shape-tag .gemb-btn:not([class*=" gemb-shape-"]),
.gemb-wrap .gemb-btn.gemb-shape-tag { border-radius: 0 8px 8px 0; aspect-ratio: auto; -webkit-mask: none; mask: none; clip-path: polygon(1.1em 0, 100% 0, 100% 100%, 1.1em 100%, 0 50%); padding-left: 2.3em; }
.gemb-shape-ticket .gemb-btn:not([class*=" gemb-shape-"]),
.gemb-wrap .gemb-btn.gemb-shape-ticket { border-radius: 8px; clip-path: none; aspect-ratio: auto; padding-left: 2.2em; padding-right: 2.2em; -webkit-mask: radial-gradient(circle .6em at 0 50%, #0000 97%, #000) left / 51% 100% no-repeat, radial-gradient(circle .6em at 100% 50%, #0000 97%, #000) right / 51% 100% no-repeat; mask: radial-gradient(circle .6em at 0 50%, #0000 97%, #000) left / 51% 100% no-repeat, radial-gradient(circle .6em at 100% 50%, #0000 97%, #000) right / 51% 100% no-repeat; }

/* Variation naturelle : chaque galet a sa propre silhouette et sa texture décalée */
.gemb-natural .gemb-btn:nth-child(5n+2) { --gemb-pebble: 55% 45% 48% 52% / 46% 56% 44% 54%; }
.gemb-natural .gemb-btn:nth-child(5n+3) { --gemb-pebble: 42% 58% 60% 40% / 52% 44% 56% 48%; }
.gemb-natural .gemb-btn:nth-child(5n+4) { --gemb-pebble: 50% 50% 42% 58% / 60% 52% 48% 40%; }
.gemb-natural .gemb-btn:nth-child(5n+5) { --gemb-pebble: 58% 42% 52% 48% / 44% 60% 40% 56%; }
.gemb-natural .gemb-btn:nth-child(4n+2) .gemb-tex { background-position: 70% 30%; transform: scaleX(-1); }
.gemb-natural .gemb-btn:nth-child(4n+3) .gemb-tex { background-position: 20% 80%; transform: rotate(180deg); }
.gemb-natural .gemb-btn:nth-child(4n+4) .gemb-tex { background-position: 90% 60%; transform: scaleY(-1); }

/* ---------- Survol & focus ---------- */
.gemb-wrap .gemb-btn:hover { filter: brightness(1.06) saturate(1.08); }
.gemb-wrap .gemb-btn:focus-visible { outline: 3px solid color-mix(in srgb, var(--gemb-c2) 80%, #fff); outline-offset: 4px; }
.gemb-wrap .gemb-btn:active { transform: scale(.97); }
.gemb-wrap .gemb-btn.is-current { outline: 2px solid color-mix(in srgb, var(--gemb-c1) 85%, #fff); outline-offset: 3px; }

.gemb-hover-lift .gemb-btn:hover  { transform: translateY(-4px); filter: brightness(1.07) drop-shadow(0 10px 14px color-mix(in srgb, var(--gemb-c3) 45%, transparent)); }
.gemb-hover-scale .gemb-btn:hover { transform: scale(1.06); }
.gemb-hover-tilt .gemb-btn:hover  { transform: translateY(-2px) rotate(-2.5deg); }
.gemb-hover-press .gemb-btn:hover { transform: translateY(1px); filter: brightness(.97) saturate(1.1); }
.gemb-hover-glow .gemb-btn:hover  { filter: brightness(1.1) drop-shadow(0 0 14px color-mix(in srgb, var(--gemb-c2) 85%, transparent)); }
.gemb-hover-sweep .gemb-btn:hover::after,
.gemb-hover-lift .gemb-btn:hover::after,
.gemb-hover-glow .gemb-btn:hover::after { transition: transform .9s ease; transform: translateX(130%); }
.gemb-hover-none .gemb-btn:hover { filter: none; transform: none; }

/* ---------- Animations continues ---------- */
.gemb-anim-shimmer .gemb-btn::after {
	animation: gemb-sweep var(--gemb-speed) ease-in-out infinite;
	animation-delay: calc(var(--gemb-delay, 0ms) * 3);
}
.gemb-anim-pulse .gemb-btn { animation: gemb-pulse var(--gemb-speed) ease-in-out infinite; animation-delay: var(--gemb-delay, 0ms); }
.gemb-anim-float .gemb-btn { animation: gemb-float var(--gemb-speed) ease-in-out infinite; animation-delay: calc(var(--gemb-delay, 0ms) * 4); }
.gemb-anim-iridescent .gemb-tex,
.gemb-anim-iridescent .gemb-btn::before { animation: gemb-hue var(--gemb-speed) linear infinite; }
.gemb-anim-iridescent .gemb-tex { opacity: calc(var(--gemb-tex-o) + .2); }
.gemb-anim-sparkle .gemb-inner::after {
	content: "";
	position: absolute;
	right: -.9em;
	top: -.75em;
	width: .9em;
	height: .9em;
	background: radial-gradient(circle, #fff 0 12%, transparent 13%),
		conic-gradient(from 45deg, transparent 0 20deg, #fff 22deg 24deg, transparent 26deg 110deg, #fff 112deg 114deg, transparent 116deg 200deg, #fff 202deg 204deg, transparent 206deg 290deg, #fff 292deg 294deg, transparent 296deg);
	border-radius: 50%;
	opacity: 0;
	animation: gemb-star var(--gemb-speed) ease-in-out infinite;
	animation-delay: calc(var(--gemb-delay, 0ms) * 5);
	pointer-events: none;
}

.gemb-anim-morph .gemb-btn { animation: gemb-morph var(--gemb-speed) ease-in-out infinite; animation-delay: calc(var(--gemb-delay, 0ms) * -4); }
@keyframes gemb-morph {
	0%, 100% { border-radius: 46% 54% 50% 50% / 58% 48% 52% 42%; }
	33%      { border-radius: 63% 37% 54% 46% / 55% 48% 52% 45%; }
	66%      { border-radius: 40% 60% 38% 62% / 45% 60% 40% 55%; }
}
@keyframes gemb-sweep {
	0%      { transform: translateX(-130%); }
	35%,100%{ transform: translateX(130%); }
}
@keyframes gemb-pulse {
	0%, 100% { filter: drop-shadow(0 0 0 transparent); }
	50%      { filter: drop-shadow(0 0 12px color-mix(in srgb, var(--gemb-c2) 80%, transparent)) brightness(1.06); }
}
@keyframes gemb-float {
	0%, 100% { translate: 0 0; }
	50%      { translate: 0 -6px; }
}
@keyframes gemb-hue {
	0%   { filter: hue-rotate(0deg); }
	50%  { filter: hue-rotate(35deg); }
	100% { filter: hue-rotate(0deg); }
}
@keyframes gemb-star {
	0%, 70%, 100% { opacity: 0; transform: scale(.2) rotate(0); }
	80%           { opacity: 1; transform: scale(1) rotate(45deg); }
}
@keyframes gemb-twinkle {
	from { opacity: calc(var(--gemb-tex-o) * .6); }
	to   { opacity: calc(var(--gemb-tex-o) + .3); }
}

/* ---------- Apparition à l'écran (pilotée par gem-buttons.js) ---------- */
.gemb-ready.gemb-enter-fade:not(.is-in) .gemb-btn    { opacity: 0; }
.gemb-ready.gemb-enter-fade-up:not(.is-in) .gemb-btn { opacity: 0; translate: 0 18px; }
.gemb-ready.gemb-enter-zoom:not(.is-in) .gemb-btn    { opacity: 0; scale: .7; }
.gemb-ready.gemb-enter-drop:not(.is-in) .gemb-btn    { opacity: 0; translate: 0 -26px; }

/* ---------- Accessibilité : mouvements réduits ---------- */
@media (prefers-reduced-motion: reduce) {
	.gemb-rm .gemb-btn,
	.gemb-rm .gemb-btn::after,
	.gemb-rm .gemb-btn::before,
	.gemb-rm .gemb-tex,
	.gemb-rm .gemb-inner::after { animation: none !important; transition: none !important; }
	.gemb-rm.gemb-ready .gemb-btn { opacity: 1 !important; translate: none !important; scale: none !important; }
}

/* Impression : pas d'effets */
@media print {
	.gemb-wrap .gemb-btn { box-shadow: none; filter: none; }
	.gemb-wrap .gemb-btn::after, .gemb-wrap .gemb-tex { display: none; }
}
