/*! GBCookie Manager – public styles.
 * Every rule is scoped under the #gbcm-root id (#gbcm-preview-root in the admin preview) so that theme
 * and page-builder rules (button resets, `.elementor-kit-x button`, `body h2`…) cannot override the
 * colours and layout chosen in the settings. Colours come from CSS custom properties printed on the root.
 * Templates change layout and typography only; colours, radius, border, shadow, font and size always
 * follow the settings.
 */

/* ---------- Tokens ---------- */
:is(#gbcm-root, #gbcm-preview-root), .gbcm-placeholder, .gbcm-manage-button {
	--gbcm-bg: #ffffff;
	--gbcm-text: #1f2937;
	--gbcm-btn-bg: #1d4ed8;
	--gbcm-btn-text: #ffffff;
	--gbcm-link: #1d4ed8;
	--gbcm-font: inherit;
	--gbcm-font-size: 15px;
	--gbcm-radius: 10px;
	--gbcm-border-width: 0px;
	--gbcm-border-color: #e5e7eb;
	--gbcm-shadow: 0 6px 24px rgba(0,0,0,.15);
}
:is(#gbcm-root, #gbcm-preview-root) {
	--gbcm-muted: var(--gbcm-text);
	--gbcm-muted: color-mix(in srgb, var(--gbcm-text) 78%, var(--gbcm-bg));
	--gbcm-line: rgba(127,127,127,.28);
	--gbcm-line: color-mix(in srgb, var(--gbcm-text) 16%, transparent);
	--gbcm-tint: rgba(127,127,127,.1);
	--gbcm-tint: color-mix(in srgb, var(--gbcm-btn-bg) 10%, var(--gbcm-bg));
	--gbcm-btn-hover: var(--gbcm-btn-bg);
	--gbcm-btn-hover: color-mix(in srgb, var(--gbcm-btn-bg) 86%, #000);
	--gbcm-btn-radius: calc(var(--gbcm-radius) * .7);
	--gbcm-offset: 16px;
	--gbcm-pad-y: 1.25em;
	--gbcm-pad-x: 1.5em;
	--gbcm-title-size: 1.125em;
	--gbcm-display: var(--gbcm-font);
	--gbcm-ease: cubic-bezier(.2,.8,.2,1);
	font-family: var(--gbcm-font);
	font-size: var(--gbcm-font-size);
	line-height: 1.5;
	color: var(--gbcm-text);
	-webkit-font-smoothing: antialiased;
}

/* ---------- Isolation reset (specificity 1-0-0: beats theme element / class rules) ---------- */
:is(#gbcm-root, #gbcm-preview-root) :where(*, *::before, *::after) { box-sizing: border-box; }
:is(#gbcm-root, #gbcm-preview-root) :where(div, section, p, h2, ul, li, span, label, table, thead, tbody, tr, th, td, caption, img, svg, code) {
	margin: 0; padding: 0; border: 0; background: none; float: none;
	font: inherit; color: inherit; letter-spacing: normal; text-transform: none; text-shadow: none;
	text-align: inherit; line-height: inherit; box-shadow: none; min-height: 0; max-width: none;
}
:is(#gbcm-root, #gbcm-preview-root) :where(button, input) {
	-webkit-appearance: none; appearance: none; margin: 0; font: inherit; color: inherit; letter-spacing: normal;
	text-transform: none; text-shadow: none; box-shadow: none; white-space: normal; width: auto; height: auto;
	background: none; border: 0; border-radius: 0; padding: 0; text-decoration: none; line-height: 1.2;
}
:is(#gbcm-root, #gbcm-preview-root) :where(a) { color: var(--gbcm-link); text-decoration: underline; text-underline-offset: .18em; text-decoration-thickness: 1px; font: inherit; background: none; box-shadow: none; }
:is(#gbcm-root, #gbcm-preview-root) :where(a):hover { text-decoration-thickness: 2px; color: var(--gbcm-link); }
:is(#gbcm-root, #gbcm-preview-root) [hidden], .gbcm-placeholder[hidden] { display: none !important; }
:is(#gbcm-root, #gbcm-preview-root) .gbcm-sr-only, .gbcm-sr-only { position: absolute !important; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0; }
.gbcm-no-scroll { overflow: hidden; }
:is(#gbcm-root, #gbcm-preview-root) :where(button, a, input):focus-visible { outline: 3px solid var(--gbcm-text); outline-offset: 3px; }
:is(#gbcm-root, #gbcm-preview-root) :where(button, a, input):focus:not(:focus-visible) { outline: none; }

/* ---------- Banner shell ---------- */
:is(#gbcm-root, #gbcm-preview-root) .gbcm-banner {
	position: fixed; z-index: 2147483000; left: var(--gbcm-offset); right: var(--gbcm-offset); bottom: var(--gbcm-offset);
	background: var(--gbcm-bg); color: var(--gbcm-text);
	border: var(--gbcm-border-width) solid var(--gbcm-border-color);
	border-radius: var(--gbcm-radius); box-shadow: var(--gbcm-shadow);
	max-height: calc(100% - 2 * var(--gbcm-offset)); overflow: auto; overscroll-behavior: contain;
	font-family: var(--gbcm-font); font-size: var(--gbcm-font-size); line-height: 1.5; text-align: left;
	container: gbcm-banner / inline-size;
	animation: gbcm-in .35s var(--gbcm-ease) both;
}
:is(#gbcm-root, #gbcm-preview-root) .gbcm-banner:focus { outline: none; }
:is(#gbcm-root, #gbcm-preview-root) .gbcm-banner__inner {
	position: relative; display: flex; align-items: center; gap: 1.25em 2em;
	padding: var(--gbcm-pad-y) var(--gbcm-pad-x); margin: 0 auto; max-width: var(--gbcm-inner-max, none);
}
:is(#gbcm-root, #gbcm-preview-root) .gbcm-banner__body { display: flex; align-items: flex-start; gap: 1em; flex: 1 1 auto; min-width: 0; }
:is(#gbcm-root, #gbcm-preview-root) .gbcm-banner__media { display: none; flex: 0 0 auto; }
:is(#gbcm-root, #gbcm-preview-root) .gbcm-banner__media:has(.gbcm-logo) { display: block; }
:is(#gbcm-root, #gbcm-preview-root) .gbcm-logo { display: block; max-height: 44px; max-width: 140px; width: auto; height: auto; }
:is(#gbcm-root, #gbcm-preview-root) .gbcm-icon { display: block; width: 1.4em; height: 1.4em; }
:is(#gbcm-root, #gbcm-preview-root) .gbcm-banner__content { flex: 1 1 auto; min-width: 0; }
:is(#gbcm-root, #gbcm-preview-root) .gbcm-title { font-family: var(--gbcm-display); font-size: var(--gbcm-title-size); font-weight: 650; line-height: 1.3; margin: 0 0 .3em; color: var(--gbcm-text); }
:is(#gbcm-root, #gbcm-preview-root) .gbcm-text { color: var(--gbcm-muted); }
:is(#gbcm-root, #gbcm-preview-root) .gbcm-text p { margin: 0 0 .5em; }
:is(#gbcm-root, #gbcm-preview-root) .gbcm-text p:last-child { margin-bottom: 0; }
:is(#gbcm-root, #gbcm-preview-root) .gbcm-links { display: flex; flex-wrap: wrap; gap: .25em 1.25em; margin: .6em 0 0; font-size: .9em; }

/* Actions: Accept and Reject share one class and one style (no dark pattern). */
:is(#gbcm-root, #gbcm-preview-root) .gbcm-actions { display: flex; align-items: center; gap: .625em; flex: 0 0 auto; flex-wrap: wrap; }
:is(#gbcm-root, #gbcm-preview-root) .gbcm-actions__main { display: grid; grid-template-columns: 1fr 1fr; gap: .625em; }
:is(#gbcm-root, #gbcm-preview-root) .gbcm-btn {
	display: inline-flex; align-items: center; justify-content: center; gap: .4em; cursor: pointer;
	min-height: 44px; min-width: 44px; padding: .7em 1.35em; text-align: center; white-space: nowrap;
	font-family: var(--gbcm-font); font-size: .94em; font-weight: 600; line-height: 1.2; letter-spacing: .005em;
	background: var(--gbcm-btn-bg); color: var(--gbcm-btn-text);
	border: 1.5px solid var(--gbcm-btn-bg); border-radius: var(--gbcm-btn-radius);
	text-decoration: none; text-transform: none;
	transition: background-color .15s ease, border-color .15s ease, color .15s ease, transform .15s ease;
}
:is(#gbcm-root, #gbcm-preview-root) .gbcm-btn:hover { background: var(--gbcm-btn-hover); border-color: var(--gbcm-btn-hover); color: var(--gbcm-btn-text); }
:is(#gbcm-root, #gbcm-preview-root) .gbcm-btn:active { transform: translateY(1px); }
/* Optional outline style for "Reject all" (same size, weight and position as "Accept all"). */
:is(#gbcm-root, #gbcm-preview-root).gbcm-reject-outline .gbcm-btn--choice[data-gbcm-action="reject"] { background: transparent; color: var(--gbcm-btn-bg); border-color: var(--gbcm-btn-bg); }
:is(#gbcm-root, #gbcm-preview-root).gbcm-reject-outline .gbcm-btn--choice[data-gbcm-action="reject"]:hover { background: var(--gbcm-tint); color: var(--gbcm-btn-bg); border-color: var(--gbcm-btn-bg); }
:is(#gbcm-root, #gbcm-preview-root) .gbcm-btn--ghost { background: transparent; color: var(--gbcm-text); border-color: var(--gbcm-line); }
:is(#gbcm-root, #gbcm-preview-root) .gbcm-btn--ghost:hover { background: var(--gbcm-tint); color: var(--gbcm-text); border-color: var(--gbcm-line); }
:is(#gbcm-root, #gbcm-preview-root) .gbcm-link {
	display: inline; background: none; border: 0; padding: 0; cursor: pointer; font: inherit;
	color: var(--gbcm-link); text-decoration: underline; text-underline-offset: .18em;
}

/* "Continue without accepting" (equivalent to a refusal) */
:is(#gbcm-root, #gbcm-preview-root) .gbcm-continue {
	position: absolute; top: .55em; right: .7em; display: inline-flex; align-items: center; gap: .35em; cursor: pointer;
	min-height: 32px; padding: .2em .45em; border-radius: 6px; font-size: .82em; color: var(--gbcm-muted); background: transparent;
}
:is(#gbcm-root, #gbcm-preview-root) .gbcm-continue__label { text-decoration: underline; text-underline-offset: .18em; }
:is(#gbcm-root, #gbcm-preview-root) .gbcm-continue__x { font-size: 1.35em; line-height: 1; }
:is(#gbcm-root, #gbcm-preview-root) .gbcm-continue:hover { color: var(--gbcm-text); background: var(--gbcm-tint); }
:is(#gbcm-root, #gbcm-preview-root) .gbcm-banner:has(.gbcm-continue) .gbcm-banner__inner { padding-top: calc(var(--gbcm-pad-y) + 1.6em); }

/* ---------- Stacked layout (narrow banner, dialogs, side panel, compact & elegant) ---------- */
:is(#gbcm-root, #gbcm-preview-root):is(.gbcm-pos-center, .gbcm-pos-sidebar, .gbcm-tpl-compact, .gbcm-tpl-elegant) .gbcm-banner__inner { flex-direction: column; align-items: stretch; }
:is(#gbcm-root, #gbcm-preview-root):is(.gbcm-pos-center, .gbcm-pos-sidebar, .gbcm-tpl-compact, .gbcm-tpl-elegant) .gbcm-banner .gbcm-actions { flex-direction: column-reverse; align-items: stretch; }
:is(#gbcm-root, #gbcm-preview-root):is(.gbcm-pos-center, .gbcm-pos-sidebar, .gbcm-tpl-compact, .gbcm-tpl-elegant) .gbcm-banner .gbcm-actions__main { display: grid; grid-template-columns: 1fr 1fr; }
:is(#gbcm-root, #gbcm-preview-root):is(.gbcm-pos-center, .gbcm-pos-sidebar, .gbcm-tpl-compact, .gbcm-tpl-elegant) .gbcm-banner .gbcm-btn { width: 100%; white-space: normal; }
@container gbcm-banner (max-width: 760px) {
	:is(#gbcm-root, #gbcm-preview-root) .gbcm-banner__inner { flex-direction: column; align-items: stretch; gap: 1em; }
	:is(#gbcm-root, #gbcm-preview-root) .gbcm-actions { flex-direction: column-reverse; align-items: stretch; }
	:is(#gbcm-root, #gbcm-preview-root) .gbcm-actions__main { display: grid; grid-template-columns: 1fr 1fr; }
	:is(#gbcm-root, #gbcm-preview-root) .gbcm-btn { width: 100%; white-space: normal; }
}
@container gbcm-banner (max-width: 360px) {
	:is(#gbcm-root, #gbcm-preview-root) .gbcm-actions__main { grid-template-columns: 1fr; }
	:is(#gbcm-root, #gbcm-preview-root) .gbcm-banner__body { flex-direction: column; }
}

/* ---------- Positions ---------- */
:is(#gbcm-root, #gbcm-preview-root).gbcm-pos-top .gbcm-banner { top: var(--gbcm-offset); bottom: auto; animation-name: gbcm-in-top; }
:is(#gbcm-root, #gbcm-preview-root).gbcm-pos-center .gbcm-banner {
	inset: 0; margin: auto; width: min(var(--gbcm-width, var(--gbcm-dialog-w, 560px)), calc(100% - 2 * var(--gbcm-offset)));
	height: fit-content; max-height: calc(100% - 2 * var(--gbcm-offset)); animation-name: gbcm-pop;
}
:is(#gbcm-root, #gbcm-preview-root).gbcm-pos-sidebar .gbcm-banner {
	top: 0; bottom: 0; left: 0; right: auto; width: min(var(--gbcm-width, 420px), 100%); max-height: none;
	border-radius: 0 var(--gbcm-radius) var(--gbcm-radius) 0; border-left-width: 0; animation-name: gbcm-in-side;
}
:is(#gbcm-root, #gbcm-preview-root).gbcm-pos-sidebar .gbcm-banner__inner { min-height: 100%; justify-content: space-between; padding: 2em 1.75em; gap: 2em; }
:is(#gbcm-root, #gbcm-preview-root).gbcm-pos-sidebar .gbcm-banner__body { flex-direction: column; gap: 1.25em; }
:is(#gbcm-root, #gbcm-preview-root) .gbcm-overlay { position: fixed; inset: 0; z-index: 2147482999; background: rgba(15,23,42,.5); -webkit-backdrop-filter: blur(3px); backdrop-filter: blur(3px); animation: gbcm-fade .25s ease both; }

/* ---------- Templates ---------- */

/* 1. Minimaliste – one quiet line, hairline border, no icon, compact controls. */
:is(#gbcm-root, #gbcm-preview-root).gbcm-tpl-minimal { --gbcm-pad-y: .85em; --gbcm-pad-x: 1.25em; --gbcm-title-size: 1em; }
:is(#gbcm-root, #gbcm-preview-root).gbcm-tpl-minimal:is(.gbcm-pos-bottom, .gbcm-pos-top) .gbcm-banner { left: max(var(--gbcm-offset), calc((100% - var(--gbcm-width, 1040px)) / 2)); right: max(var(--gbcm-offset), calc((100% - var(--gbcm-width, 1040px)) / 2)); }
:is(#gbcm-root, #gbcm-preview-root).gbcm-tpl-minimal .gbcm-banner { outline: 1px solid var(--gbcm-line); outline-offset: -1px; }
:is(#gbcm-root, #gbcm-preview-root).gbcm-tpl-minimal .gbcm-title { display: inline; margin: 0 .35em 0 0; font-weight: 700; }
:is(#gbcm-root, #gbcm-preview-root).gbcm-tpl-minimal .gbcm-banner__content { font-size: .94em; }
:is(#gbcm-root, #gbcm-preview-root).gbcm-tpl-minimal .gbcm-text, :is(#gbcm-root, #gbcm-preview-root).gbcm-tpl-minimal .gbcm-text p { display: inline; }
:is(#gbcm-root, #gbcm-preview-root).gbcm-tpl-minimal .gbcm-links { display: inline-flex; margin: 0 0 0 .75em; font-size: 1em; }
:is(#gbcm-root, #gbcm-preview-root).gbcm-tpl-minimal .gbcm-btn { min-height: 40px; padding: .55em 1.05em; font-size: .9em; }
:is(#gbcm-root, #gbcm-preview-root).gbcm-tpl-minimal .gbcm-banner .gbcm-btn--ghost { border-color: transparent; text-decoration: underline; text-underline-offset: .18em; }
:is(#gbcm-root, #gbcm-preview-root).gbcm-tpl-minimal .gbcm-banner .gbcm-actions { gap: .5em; }

/* 2. Moderne – floating card, tinted icon badge, generous spacing, soft motion. */
:is(#gbcm-root, #gbcm-preview-root).gbcm-tpl-modern { --gbcm-pad-y: 1.4em; --gbcm-pad-x: 1.6em; }
:is(#gbcm-root, #gbcm-preview-root).gbcm-tpl-modern:is(.gbcm-pos-bottom, .gbcm-pos-top) .gbcm-banner { left: max(var(--gbcm-offset), calc((100% - var(--gbcm-width, 1120px)) / 2)); right: max(var(--gbcm-offset), calc((100% - var(--gbcm-width, 1120px)) / 2)); }
:is(#gbcm-root, #gbcm-preview-root).gbcm-tpl-modern .gbcm-banner__media {
	display: grid; place-items: center; width: 2.9em; height: 2.9em; border-radius: calc(var(--gbcm-radius) * .8 + 4px);
	background: var(--gbcm-tint); color: var(--gbcm-btn-bg);
}
:is(#gbcm-root, #gbcm-preview-root).gbcm-tpl-modern .gbcm-banner__media:has(.gbcm-logo) { width: auto; height: auto; background: none; }
:is(#gbcm-root, #gbcm-preview-root).gbcm-tpl-modern .gbcm-title { font-weight: 700; letter-spacing: -.01em; }
:is(#gbcm-root, #gbcm-preview-root).gbcm-tpl-modern .gbcm-btn { border-radius: calc(var(--gbcm-radius) * .8); }
:is(#gbcm-root, #gbcm-preview-root).gbcm-tpl-modern .gbcm-btn--choice { box-shadow: 0 1px 2px rgba(0,0,0,.08); }

/* 3. Professionnel – full-width institutional bar, accent rule, content on a centred grid. */
:is(#gbcm-root, #gbcm-preview-root).gbcm-tpl-professional { --gbcm-pad-y: 1.15em; --gbcm-pad-x: 1.75em; --gbcm-inner-max: var(--gbcm-width, 1240px); --gbcm-btn-radius: calc(var(--gbcm-radius) * .35); --gbcm-title-size: .8em; }
:is(#gbcm-root, #gbcm-preview-root).gbcm-tpl-professional:is(.gbcm-pos-bottom, .gbcm-pos-top) .gbcm-banner { left: 0; right: 0; bottom: 0; border-radius: 0; border-left-width: 0; border-right-width: 0; }
:is(#gbcm-root, #gbcm-preview-root).gbcm-tpl-professional.gbcm-pos-bottom .gbcm-banner { border-bottom-width: 0; }
:is(#gbcm-root, #gbcm-preview-root).gbcm-tpl-professional.gbcm-pos-top .gbcm-banner { top: 0; bottom: auto; border-top-width: 0; }
:is(#gbcm-root, #gbcm-preview-root).gbcm-tpl-professional .gbcm-banner { box-shadow: inset 0 4px 0 var(--gbcm-btn-bg), var(--gbcm-shadow); }
:is(#gbcm-root, #gbcm-preview-root).gbcm-tpl-professional.gbcm-pos-top .gbcm-banner { box-shadow: inset 0 -4px 0 var(--gbcm-btn-bg), var(--gbcm-shadow); }
:is(#gbcm-root, #gbcm-preview-root).gbcm-tpl-professional .gbcm-banner__inner { padding-top: calc(var(--gbcm-pad-y) + 4px); }
:is(#gbcm-root, #gbcm-preview-root).gbcm-tpl-professional.gbcm-pos-top .gbcm-banner__inner { padding-top: var(--gbcm-pad-y); padding-bottom: calc(var(--gbcm-pad-y) + 4px); }
:is(#gbcm-root, #gbcm-preview-root).gbcm-tpl-professional .gbcm-title { text-transform: uppercase; letter-spacing: .09em; font-weight: 700; color: var(--gbcm-btn-bg); margin-bottom: .45em; }
:is(#gbcm-root, #gbcm-preview-root).gbcm-tpl-professional .gbcm-text { color: var(--gbcm-text); }
:is(#gbcm-root, #gbcm-preview-root).gbcm-tpl-professional .gbcm-banner__media:has(.gbcm-logo) { padding-right: 1.25em; border-right: 1px solid var(--gbcm-line); }
:is(#gbcm-root, #gbcm-preview-root).gbcm-tpl-professional .gbcm-btn { font-weight: 600; }
:is(#gbcm-root, #gbcm-preview-root).gbcm-tpl-professional .gbcm-banner .gbcm-btn--ghost { border-color: var(--gbcm-text); }

/* 4. Compact – small corner card (toast), stacked content, equal two-column choice. */
:is(#gbcm-root, #gbcm-preview-root).gbcm-tpl-compact { --gbcm-pad-y: 1em; --gbcm-pad-x: 1.1em; --gbcm-title-size: 1em; --gbcm-dialog-w: 400px; }
:is(#gbcm-root, #gbcm-preview-root).gbcm-tpl-compact:is(.gbcm-pos-bottom, .gbcm-pos-top) .gbcm-banner { left: auto; right: var(--gbcm-offset); width: min(var(--gbcm-width, 380px), calc(100% - 2 * var(--gbcm-offset))); }
:is(#gbcm-root, #gbcm-preview-root).gbcm-tpl-compact .gbcm-banner__inner { gap: .85em; }
:is(#gbcm-root, #gbcm-preview-root).gbcm-tpl-compact .gbcm-banner__content { font-size: .9em; }
:is(#gbcm-root, #gbcm-preview-root).gbcm-tpl-compact .gbcm-title { font-size: 1.1em; margin-bottom: .25em; }
:is(#gbcm-root, #gbcm-preview-root).gbcm-tpl-compact .gbcm-links { font-size: .95em; margin-top: .4em; }
:is(#gbcm-root, #gbcm-preview-root).gbcm-tpl-compact .gbcm-banner .gbcm-actions { gap: .35em; }
:is(#gbcm-root, #gbcm-preview-root).gbcm-tpl-compact .gbcm-btn { min-height: 40px; padding: .55em .8em; font-size: .9em; }
:is(#gbcm-root, #gbcm-preview-root).gbcm-tpl-compact .gbcm-banner .gbcm-btn--ghost { border-color: transparent; text-decoration: underline; text-underline-offset: .18em; min-height: 36px; }
:is(#gbcm-root, #gbcm-preview-root).gbcm-tpl-compact .gbcm-banner__media:has(.gbcm-logo) .gbcm-logo { max-height: 28px; }

/* 5. Élégant – editorial card, centred composition, serif display title, pill buttons. */
:is(#gbcm-root, #gbcm-preview-root).gbcm-tpl-elegant { --gbcm-pad-y: 2em; --gbcm-pad-x: 2.25em; --gbcm-display: "Iowan Old Style", "Palatino Linotype", Palatino, Georgia, "Times New Roman", serif; --gbcm-title-size: 1.6em; --gbcm-btn-radius: 999px; --gbcm-dialog-w: 600px; }
:is(#gbcm-root, #gbcm-preview-root).gbcm-tpl-elegant:is(.gbcm-pos-bottom, .gbcm-pos-top) .gbcm-banner { left: max(var(--gbcm-offset), calc((100% - var(--gbcm-width, 680px)) / 2)); right: max(var(--gbcm-offset), calc((100% - var(--gbcm-width, 680px)) / 2)); }
:is(#gbcm-root, #gbcm-preview-root).gbcm-tpl-elegant .gbcm-banner__inner { text-align: center; gap: 1.5em; }
:is(#gbcm-root, #gbcm-preview-root).gbcm-tpl-elegant .gbcm-banner__body { flex-direction: column; align-items: center; }
:is(#gbcm-root, #gbcm-preview-root).gbcm-tpl-elegant .gbcm-banner__media { display: block; color: var(--gbcm-btn-bg); opacity: .9; }
:is(#gbcm-root, #gbcm-preview-root).gbcm-tpl-elegant .gbcm-icon { width: 1.6em; height: 1.6em; }
:is(#gbcm-root, #gbcm-preview-root).gbcm-tpl-elegant .gbcm-banner .gbcm-title { font-weight: 500; letter-spacing: -.005em; line-height: 1.2; margin-bottom: .55em; }
:is(#gbcm-root, #gbcm-preview-root).gbcm-tpl-elegant .gbcm-banner .gbcm-title::after { content: ""; display: block; width: 2.25rem; height: 1px; margin: .55em auto 0; background: var(--gbcm-btn-bg); }
:is(#gbcm-root, #gbcm-preview-root).gbcm-tpl-elegant .gbcm-banner .gbcm-text { max-width: 52ch; margin: 0 auto; line-height: 1.65; }
:is(#gbcm-root, #gbcm-preview-root).gbcm-tpl-elegant .gbcm-banner .gbcm-links { justify-content: center; }
:is(#gbcm-root, #gbcm-preview-root).gbcm-tpl-elegant .gbcm-btn { text-transform: uppercase; letter-spacing: .1em; font-size: .76em; font-weight: 600; padding: .95em 1.6em; }
:is(#gbcm-root, #gbcm-preview-root).gbcm-tpl-elegant .gbcm-banner .gbcm-btn--ghost { border-color: transparent; letter-spacing: .1em; text-decoration: underline; text-underline-offset: .3em; min-height: 36px; }
:is(#gbcm-root, #gbcm-preview-root).gbcm-tpl-elegant .gbcm-banner .gbcm-btn--ghost:hover { background: transparent; }
:is(#gbcm-root, #gbcm-preview-root).gbcm-tpl-elegant .gbcm-banner .gbcm-actions { gap: .5em; }
:is(#gbcm-root, #gbcm-preview-root).gbcm-tpl-elegant.gbcm-pos-sidebar .gbcm-banner__inner { justify-content: center; }

/* ---------- Preference centre ---------- */
:is(#gbcm-root, #gbcm-preview-root) .gbcm-modal { position: fixed; inset: 0; z-index: 2147483001; display: flex; padding: 0; container: gbcm-modal / inline-size; }
:is(#gbcm-root, #gbcm-preview-root) .gbcm-modal__backdrop { position: absolute; inset: 0; background: rgba(15,23,42,.55); -webkit-backdrop-filter: blur(3px); backdrop-filter: blur(3px); animation: gbcm-fade .2s ease both; }
:is(#gbcm-root, #gbcm-preview-root) .gbcm-modal__dialog {
	position: relative; margin: auto; width: min(var(--gbcm-prefs-width, 720px), calc(100% - 2rem)); max-height: calc(100% - 2rem);
	display: flex; flex-direction: column; overflow: hidden;
	background: var(--gbcm-bg); color: var(--gbcm-text); font-family: var(--gbcm-font); font-size: var(--gbcm-font-size);
	border: var(--gbcm-border-width) solid var(--gbcm-border-color); border-radius: var(--gbcm-radius);
	box-shadow: 0 24px 64px rgba(0,0,0,.28), 0 2px 6px rgba(0,0,0,.08);
	animation: gbcm-pop .3s var(--gbcm-ease) both;
}
:is(#gbcm-root, #gbcm-preview-root) .gbcm-modal__dialog:focus { outline: none; }
:is(#gbcm-root, #gbcm-preview-root) .gbcm-modal__header { display: flex; justify-content: space-between; align-items: center; gap: 1em; padding: 1.1em 1.5em; border-bottom: 1px solid var(--gbcm-line); }
:is(#gbcm-root, #gbcm-preview-root) .gbcm-modal__header .gbcm-title { margin: 0; font-size: 1.2em; }
:is(#gbcm-root, #gbcm-preview-root).gbcm-tpl-professional .gbcm-modal__dialog { box-shadow: inset 0 4px 0 var(--gbcm-btn-bg), 0 24px 64px rgba(0,0,0,.28); }
:is(#gbcm-root, #gbcm-preview-root).gbcm-tpl-professional .gbcm-modal__header .gbcm-title { font-size: .85em; }
:is(#gbcm-root, #gbcm-preview-root).gbcm-tpl-elegant .gbcm-modal__header .gbcm-title { font-size: 1.45em; font-weight: 500; line-height: 1.2; }
:is(#gbcm-root, #gbcm-preview-root) .gbcm-icon-btn { display: inline-grid; place-items: center; width: 44px; height: 44px; flex: 0 0 auto; border-radius: 50%; cursor: pointer; font-size: 1.6em; line-height: 1; color: var(--gbcm-text); background: transparent; }
:is(#gbcm-root, #gbcm-preview-root) .gbcm-icon-btn:hover { background: var(--gbcm-tint); }
:is(#gbcm-root, #gbcm-preview-root) .gbcm-modal__body { padding: 1.1em 1.5em 1.25em; overflow-y: auto; overscroll-behavior: contain; }
:is(#gbcm-root, #gbcm-preview-root) .gbcm-modal__body > .gbcm-text { color: var(--gbcm-muted); }
:is(#gbcm-root, #gbcm-preview-root) .gbcm-modal__footer { display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: .75em 1em; padding: 1em 1.5em; border-top: 1px solid var(--gbcm-line); background: var(--gbcm-bg); }
:is(#gbcm-root, #gbcm-preview-root) .gbcm-modal__footer .gbcm-actions { margin-left: auto; }
:is(#gbcm-root, #gbcm-preview-root) .gbcm-withdraw { font-size: .9em; }
:is(#gbcm-root, #gbcm-preview-root) .gbcm-cats { list-style: none; margin: 1.1em 0 0; padding: 0; display: grid; gap: .6em; }
:is(#gbcm-root, #gbcm-preview-root) .gbcm-cat { list-style: none; border: 1px solid var(--gbcm-line); border-radius: calc(var(--gbcm-radius) * .7); transition: border-color .15s ease; }
:is(#gbcm-root, #gbcm-preview-root) .gbcm-cat:has(input:checked) { border-color: var(--gbcm-btn-bg); }
:is(#gbcm-root, #gbcm-preview-root) .gbcm-cat__head { display: flex; align-items: center; justify-content: space-between; gap: 1em; padding: .35em .5em .35em .9em; }
:is(#gbcm-root, #gbcm-preview-root) .gbcm-cat__toggle { flex: 1; display: flex; align-items: center; gap: .65em; text-align: left; cursor: pointer; padding: .5em 0; min-height: 44px; color: var(--gbcm-text); background: transparent; }
:is(#gbcm-root, #gbcm-preview-root) .gbcm-cat__name { font-weight: 600; }
:is(#gbcm-root, #gbcm-preview-root) .gbcm-cat__count { white-space: nowrap; font-size: .8em; color: var(--gbcm-muted); padding: .1em .55em; border-radius: 999px; background: var(--gbcm-tint); }
:is(#gbcm-root, #gbcm-preview-root) .gbcm-cat__chevron { width: .55em; height: .55em; border-right: 2px solid currentColor; border-bottom: 2px solid currentColor; transform: rotate(-45deg); transition: transform .2s ease; flex: 0 0 auto; }
:is(#gbcm-root, #gbcm-preview-root) .gbcm-cat__toggle[aria-expanded="true"] .gbcm-cat__chevron { transform: rotate(45deg); }
:is(#gbcm-root, #gbcm-preview-root) .gbcm-cat__panel { padding: 0 .9em .9em 2.15em; }
:is(#gbcm-root, #gbcm-preview-root) .gbcm-cat__desc { margin: 0 0 .75em; color: var(--gbcm-muted); font-size: .94em; }
:is(#gbcm-root, #gbcm-preview-root) .gbcm-always { font-size: .8em; font-weight: 600; white-space: nowrap; color: var(--gbcm-btn-bg); padding: .3em .7em; border-radius: 999px; background: var(--gbcm-tint); margin-right: .4em; }
:is(#gbcm-root, #gbcm-preview-root) .gbcm-muted { color: var(--gbcm-muted); font-size: .9em; margin: 0; }
:is(#gbcm-root, #gbcm-preview-root) .gbcm-table-wrap { overflow-x: auto; }
:is(#gbcm-root, #gbcm-preview-root) .gbcm-table { width: 100%; border-collapse: collapse; font-size: .85em; }
:is(#gbcm-root, #gbcm-preview-root) .gbcm-table th, :is(#gbcm-root, #gbcm-preview-root) .gbcm-table td { text-align: left; padding: .5em .55em; border-bottom: 1px solid var(--gbcm-line); vertical-align: top; }
:is(#gbcm-root, #gbcm-preview-root) .gbcm-table th { font-weight: 600; color: var(--gbcm-muted); font-size: .92em; }
:is(#gbcm-root, #gbcm-preview-root) .gbcm-table code { font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; font-size: .95em; background: var(--gbcm-tint); padding: .05em .35em; border-radius: 4px; word-break: break-all; }
@container gbcm-modal (max-width: 640px) {
	:is(#gbcm-root, #gbcm-preview-root) .gbcm-modal__dialog { width: 100%; margin: auto 0 0; max-height: 92%; border-radius: var(--gbcm-radius) var(--gbcm-radius) 0 0; animation-name: gbcm-in; }
	:is(#gbcm-root, #gbcm-preview-root) .gbcm-modal__header, :is(#gbcm-root, #gbcm-preview-root) .gbcm-modal__body, :is(#gbcm-root, #gbcm-preview-root) .gbcm-modal__footer { padding-left: 1.1em; padding-right: 1.1em; }
	:is(#gbcm-root, #gbcm-preview-root) .gbcm-modal__footer { flex-direction: column-reverse; align-items: stretch; }
	:is(#gbcm-root, #gbcm-preview-root) .gbcm-modal__footer .gbcm-actions { margin-left: 0; flex-direction: column-reverse; align-items: stretch; }
	:is(#gbcm-root, #gbcm-preview-root) .gbcm-modal__footer .gbcm-btn { width: 100%; white-space: normal; }
	:is(#gbcm-root, #gbcm-preview-root) .gbcm-cat__panel { padding-left: .9em; }
}

/* Switch (native checkbox with role="switch") */
:is(#gbcm-root, #gbcm-preview-root) .gbcm-switch { position: relative; display: inline-flex; align-items: center; justify-content: center; cursor: pointer; min-width: 52px; min-height: 44px; }
:is(#gbcm-root, #gbcm-preview-root) .gbcm-switch input { position: absolute; inset: 0; opacity: 0; width: 100%; height: 100%; margin: 0; cursor: pointer; z-index: 1; }
:is(#gbcm-root, #gbcm-preview-root) .gbcm-switch__track { position: relative; display: block; width: 44px; height: 26px; border-radius: 13px; background: #6b7280; transition: background-color .2s ease; }
:is(#gbcm-root, #gbcm-preview-root) .gbcm-switch__thumb { position: absolute; top: 3px; left: 3px; display: block; width: 20px; height: 20px; border-radius: 50%; background: #fff; box-shadow: 0 1px 3px rgba(0,0,0,.3); transition: transform .2s var(--gbcm-ease); }
:is(#gbcm-root, #gbcm-preview-root) .gbcm-switch input:checked + .gbcm-switch__track { background: var(--gbcm-btn-bg); }
:is(#gbcm-root, #gbcm-preview-root) .gbcm-switch input:checked + .gbcm-switch__track .gbcm-switch__thumb { transform: translateX(18px); }
:is(#gbcm-root, #gbcm-preview-root) .gbcm-switch input:focus-visible + .gbcm-switch__track { outline: 3px solid var(--gbcm-text); outline-offset: 3px; }

/* Floating "manage cookies" button */
:is(#gbcm-root, #gbcm-preview-root) .gbcm-floating {
	position: fixed; bottom: var(--gbcm-offset); z-index: 2147482998; display: inline-grid; place-items: center;
	width: 48px; height: 48px; border-radius: 50%; cursor: pointer;
	background: var(--gbcm-btn-bg); color: var(--gbcm-btn-text); border: 0; box-shadow: 0 6px 18px rgba(0,0,0,.22);
	transition: transform .15s ease;
}
:is(#gbcm-root, #gbcm-preview-root) .gbcm-floating:hover { transform: scale(1.06); background: var(--gbcm-btn-bg); color: var(--gbcm-btn-text); }
:is(#gbcm-root, #gbcm-preview-root) .gbcm-floating--left { left: var(--gbcm-offset); }
:is(#gbcm-root, #gbcm-preview-root) .gbcm-floating--right { right: var(--gbcm-offset); }

/* ---------- Blocked iframe placeholder (outside the root: doubled classes for specificity) ---------- */
.gbcm-blocked-iframe { display: none !important; }
.gbcm-placeholder.gbcm-placeholder {
	display: flex; align-items: center; justify-content: center; text-align: center; width: 100%; box-sizing: border-box;
	min-height: 200px; aspect-ratio: 16 / 9; margin: 0 0 1em; padding: 1.5em;
	background: #f3f4f6; color: #111827; border: 1px dashed #9ca3af; border-radius: 8px;
	font-size: 15px; line-height: 1.5; font-family: var(--gbcm-font);
}
.gbcm-placeholder.gbcm-placeholder .gbcm-placeholder__inner { max-width: 46ch; }
.gbcm-placeholder.gbcm-placeholder p { margin: 0 0 .75em; font-size: 15px; color: #111827; }
.gbcm-placeholder.gbcm-placeholder p:last-child { margin: 0; display: flex; flex-wrap: wrap; gap: .5em 1em; justify-content: center; align-items: center; }
.gbcm-placeholder.gbcm-placeholder .gbcm-btn.gbcm-btn {
	display: inline-flex; align-items: center; min-height: 44px; padding: .6em 1.15em; margin: 0; cursor: pointer;
	background: var(--gbcm-btn-bg); color: var(--gbcm-btn-text); border: 1.5px solid var(--gbcm-btn-bg); border-radius: 6px;
	font: 600 14px/1.2 var(--gbcm-font); text-transform: none; letter-spacing: normal; box-shadow: none; white-space: normal;
}
.gbcm-placeholder.gbcm-placeholder .gbcm-link.gbcm-link {
	color: #1d4ed8; text-decoration: underline; background: none; border: 0; padding: 0; margin: 0; cursor: pointer;
	font: inherit; text-transform: none; letter-spacing: normal; min-height: 0; box-shadow: none;
}
.gbcm-placeholder.gbcm-placeholder button:focus-visible { outline: 3px solid #111827; outline-offset: 3px; }

/* Shortcode button / policy */
.gbcm-manage-button { cursor: pointer; }
.gbcm-policy table { width: 100%; border-collapse: collapse; margin: 0 0 1.5em; font-size: .92em; }
.gbcm-policy th, .gbcm-policy td { border: 1px solid #d1d5db; padding: .5em .6em; text-align: left; vertical-align: top; }
.gbcm-policy th { background: #f3f4f6; }
.gbcm-policy .gbcm-table-wrap { overflow-x: auto; }

/* Admin preview: render inside the stage instead of the viewport */
#gbcm-preview-root .gbcm-banner, #gbcm-preview-root .gbcm-overlay, #gbcm-preview-root .gbcm-modal { position: absolute; }

/* ---------- Small screens ---------- */
@media (max-width: 600px) {
	:is(#gbcm-root, #gbcm-preview-root) { --gbcm-offset: 8px; }
	:is(#gbcm-root, #gbcm-preview-root):is(.gbcm-pos-bottom, .gbcm-pos-top) .gbcm-banner { left: var(--gbcm-offset); right: var(--gbcm-offset); width: auto; }
	:is(#gbcm-root, #gbcm-preview-root).gbcm-tpl-professional:is(.gbcm-pos-bottom, .gbcm-pos-top) .gbcm-banner { left: 0; right: 0; }
	:is(#gbcm-root, #gbcm-preview-root).gbcm-pos-sidebar .gbcm-banner { top: auto; right: 0; width: 100%; max-height: 88%; border-radius: var(--gbcm-radius) var(--gbcm-radius) 0 0; border-left-width: var(--gbcm-border-width); animation-name: gbcm-in; }
	:is(#gbcm-root, #gbcm-preview-root).gbcm-pos-sidebar .gbcm-banner__inner { min-height: 0; padding: 1.4em 1.25em; }
	:is(#gbcm-root, #gbcm-preview-root) { --gbcm-pad-x: 1.1em; }
	:is(#gbcm-root, #gbcm-preview-root).gbcm-tpl-elegant { --gbcm-pad-y: 1.4em; --gbcm-title-size: 1.35em; }
	:is(#gbcm-root, #gbcm-preview-root).gbcm-tpl-elegant .gbcm-banner .gbcm-banner__media:not(:has(.gbcm-logo)) { display: none; }
	:is(#gbcm-root, #gbcm-preview-root).gbcm-tpl-elegant .gbcm-banner .gbcm-btn { letter-spacing: .06em; padding-left: 1em; padding-right: 1em; }
	:is(#gbcm-root, #gbcm-preview-root).gbcm-tpl-elegant .gbcm-banner .gbcm-text { line-height: 1.55; }
}

/* ---------- Motion ---------- */
@keyframes gbcm-in { from { opacity: 0; transform: translateY(14px); } }
@keyframes gbcm-in-top { from { opacity: 0; transform: translateY(-14px); } }
@keyframes gbcm-in-side { from { opacity: 0; transform: translateX(-24px); } }
@keyframes gbcm-pop { from { opacity: 0; transform: translateY(8px) scale(.98); } }
@keyframes gbcm-fade { from { opacity: 0; } }
@media (prefers-reduced-motion: reduce) {
	:is(#gbcm-root, #gbcm-preview-root) *, .gbcm-placeholder * { transition: none !important; animation: none !important; }
	:is(#gbcm-root, #gbcm-preview-root) .gbcm-banner, :is(#gbcm-root, #gbcm-preview-root) .gbcm-overlay, :is(#gbcm-root, #gbcm-preview-root) .gbcm-modal__dialog, :is(#gbcm-root, #gbcm-preview-root) .gbcm-modal__backdrop { animation: none !important; }
}
@media (forced-colors: active) {
	:is(#gbcm-root, #gbcm-preview-root) .gbcm-btn, :is(#gbcm-root, #gbcm-preview-root) .gbcm-switch__track, :is(#gbcm-root, #gbcm-preview-root) .gbcm-banner, :is(#gbcm-root, #gbcm-preview-root) .gbcm-modal__dialog { border: 1px solid CanvasText; }
}
@media print { :is(#gbcm-root, #gbcm-preview-root) { display: none !important; } }
