/*
 * This card is injected into arbitrary WordPress themes/page builders that
 * ship their own global typography rules (heading colors, link colors,
 * label colors tuned for THEIR page, not ours). Class selectors here already
 * out-specificity a bare element selector like the host's `h2 { color: ... }`,
 * but many themes/Elementor kits target `h1,h2,h3,h4,h5,h6` or similar
 * multi-class utility selectors whose specificity can tie or beat ours, and
 * ties go to whichever stylesheet happens to print later in <head> — not
 * reliably us. `!important` is used deliberately (only for legibility-
 * critical color/background declarations, not the whole ruleset) so this
 * widget never renders with invisible or unreadably low-contrast text
 * regardless of what the host site's CSS does.
 */
.ac-consent {
	box-sizing: border-box;
	position: relative;
	inline-size: min(100% - 2rem, 72rem);
	margin: 1rem auto;
	padding: 2rem;
	padding-inline-end: 3.25rem;
	border: 0;
	border-radius: var(--ac-border-radius, .75rem);
	background: var(--ac-background-color, Canvas) !important;
	color: var(--ac-text-color, CanvasText) !important;
	font: inherit;
	font-size: var(--ac-body-font-size, 1rem) !important;
}

.ac-consent h2,
.ac-consent h3 {
	/* Mixed toward the configured TEXT color rather than a hardcoded white,
	   so this stays legible no matter what background color is configured —
	   mixing toward white assumed a light background and produced near-
	   invisible pastel text on this site's white modal. */
	color: color-mix(in srgb, var(--ac-accent-color, #4c6fe0) 45%, var(--ac-text-color, CanvasText)) !important;
	/* Some themes apply condensed/expanded heading styles (negative
	   word-spacing, tight letter-spacing) globally — this is what was
	   collapsing "Privacy preferences" down to "Privacypreferences". */
	word-spacing: normal !important;
	letter-spacing: normal !important;
	text-transform: none !important;
}

.ac-consent h2 {
	margin-block: 0 1.25rem !important;
	font-size: var(--ac-heading-font-size, 1.75rem) !important;
	font-weight: 800 !important;
	line-height: 1.2 !important;
}

.ac-consent h3 {
	margin-block: 0 .75rem !important;
	/* Subheadings scale with the title control, at the same ratio the fixed
	   values (1.15rem / 1.75rem) held before this setting existed. */
	font-size: calc(var(--ac-heading-font-size, 1.75rem) * 0.657) !important;
	font-weight: 700 !important;
	line-height: 1.3 !important;
}

.ac-consent__policy-links a {
	color: var(--ac-accent-color, #4c6fe0) !important;
	text-decoration: underline;
}

/* Intro block: heading, logo, site name, message. Kept as a tight, ordered
   column so the initial prompt reads like a normal cookie bar instead of a
   wall of text (per user request: "logo smaller and copy more organized"). */
.ac-consent__intro {
	display: flex;
	flex-direction: column;
	gap: .5rem;
	margin-block-end: 1.25rem;
}

.ac-consent__intro p {
	margin: 0;
	line-height: 1.5;
}

.ac-consent__logo {
	/* Aligns only the logo (not the surrounding copy); the admin-configured
	   --ac-logo-max-height custom property comes from appearanceStyle(). */
	align-self: flex-start;
}

.ac-consent__logo img {
	display: block;
	max-inline-size: 8rem;
	max-block-size: var(--ac-logo-max-height, 2.25rem);
	object-fit: contain;
}

.ac-consent__site-name {
	font-size: .9rem;
	font-weight: 600;
	opacity: .75;
}

/*
 * Logo alignment and copy (text) alignment are deliberately independent
 * controls (see WordPressConfigurationRenderer::appearance()) — an admin can
 * center the logo while keeping the description left-aligned, or vice versa.
 * Left is the default and needs no override since flex-start/left already
 * matches the base .ac-consent__intro layout above.
 */
.ac-consent[data-logo-align="center"] .ac-consent__logo {
	align-self: center;
}

.ac-consent[data-logo-align="right"] .ac-consent__logo {
	align-self: flex-end;
}

.ac-consent[data-text-align="center"] .ac-consent__intro {
	text-align: center;
}

.ac-consent[data-text-align="right"] .ac-consent__intro {
	text-align: right;
}

.ac-consent__focus-sentinel {
	position: absolute;
	inline-size: 1px;
	block-size: 1px;
	overflow: hidden;
	margin: -1px;
	padding: 0;
	border: 0;
	clip-path: inset(50%);
	white-space: nowrap;
}

/*
 * Presentation positioning. Previously .ac-consent had no `position` at all in
 * any mode, so the banner/modal rendered inline in the page's normal document
 * flow (wherever the theme happened to print wp_footer) instead of overlaying
 * the page like a real cookie-consent widget. Every mode below floats above
 * page content with a very high z-index, matching how Cookiebot-style widgets
 * behave.
 */
.ac-consent--modal {
	position: fixed;
	inset-block-start: 50%;
	inset-inline-start: 50%;
	transform: translate(-50%, -50%);
	z-index: 2147483000;
	max-block-size: calc(100vh - 2rem);
	overflow: auto;
	/* iOS Safari has a long-documented bug where the first tap inside a
	   scrollable (overflow:auto/scroll) container gets consumed by the
	   scroll-gesture recognizer instead of reaching the element underneath —
	   this is what made the category toggles unresponsive on iPhone even
	   though the same markup/CSS works fine on desktop Safari and Chrome.
	   -webkit-overflow-scrolling:touch switches iOS to its momentum-scroll
	   model, which passes taps through normally. Harmless no-op elsewhere. */
	-webkit-overflow-scrolling: touch;
	box-shadow: 0 10px 40px rgba(0, 0, 0, .35);
}

.ac-consent--position-top,
.ac-consent--position-bottom {
	position: fixed;
	inset-inline: 0;
	z-index: 2147483000;
	margin: 0;
	inline-size: 100%;
	max-block-size: calc(100vh - 2rem);
	overflow: auto;
	-webkit-overflow-scrolling: touch;
	box-shadow: 0 2px 20px rgba(0, 0, 0, .3);
}

.ac-consent--position-top {
	inset-block-start: 0;
}

.ac-consent--position-bottom {
	inset-block-end: 0;
}

/*
 * True compact bar treatment (matches Xperi/Taco Bell references): instead of
 * a full-width block that stacks heading, message and buttons vertically
 * (and can end up tall enough to cover most of the viewport), lay the intro
 * text and the action buttons out side by side in a single slim row. The
 * form is unwrapped with display:contents so its .ac-consent__actions child
 * becomes a direct flex item next to .ac-consent__intro, with no markup
 * changes required — the (normally hidden) preferences panel and services
 * section stay display:none via [hidden] regardless.
 */
.ac-consent--position-top,
.ac-consent--position-bottom {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-between;
	gap: 1rem 1.5rem;
	padding-block: 1.25rem;
}

.ac-consent--position-top .ac-consent__intro,
.ac-consent--position-bottom .ac-consent__intro {
	flex: 1 1 24rem;
	margin-block-end: 0;
	gap: .25rem;
}

.ac-consent--position-top .ac-consent__intro h2,
.ac-consent--position-bottom .ac-consent__intro h2 {
	display: inline;
	margin-inline-end: .5rem;
	/* !important: without it this loses to the base ".ac-consent h2" rule's
	   own !important font-size, which would let the admin-configured heading
	   size (now that it's a setting) balloon the compact bar back out. The
	   compact bar's title stays fixed regardless of that setting on purpose. */
	font-size: 1rem !important;
}

.ac-consent--position-top .ac-consent__intro p,
.ac-consent--position-bottom .ac-consent__intro p {
	display: inline;
	font-size: .9rem !important;
}

.ac-consent--position-top .ac-consent__form,
.ac-consent--position-bottom .ac-consent__form {
	display: contents;
}

.ac-consent--position-top .ac-consent__actions,
.ac-consent--position-bottom .ac-consent__actions {
	flex: none;
	margin-block-start: 0;
}

/* Defensive cap: an admin-selected "Large" logo is fine in the modal/default
   card, but would blow out the single-row compact bar's height, so never
   let it exceed 2rem here regardless of the configured --ac-logo-max-height. */
.ac-consent--position-top .ac-consent__logo img,
.ac-consent--position-bottom .ac-consent__logo img {
	max-block-size: min(var(--ac-logo-max-height, 2.25rem), 2rem);
}

@media (max-width: 48rem) {
	.ac-consent--position-top,
	.ac-consent--position-bottom {
		flex-direction: column;
		align-items: stretch;
	}
}

/* Defense in depth: if both a position and modal class ever end up on the
   same element (see VisitorTemplateRenderer::render()), modal must win —
   two classes outweighs the one-class position rules above regardless of
   source order. */
.ac-consent--modal.ac-consent--position-top,
.ac-consent--modal.ac-consent--position-bottom {
	inset-block-start: 50%;
	inset-block-end: auto;
	inset-inline-start: 50%;
	inset-inline-end: auto;
	inline-size: min(100% - 2rem, 72rem);
	transform: translate(-50%, -50%);
}

.ac-consent[aria-hidden="true"] {
	display: none;
}

/*
 * Persistent "reopen preferences" bubble. VisitorTemplateRenderer now always
 * renders this fragment immediately after the card (not only once the server
 * itself considers things closed), because Close (X) is handled entirely
 * client-side — it just sets aria-hidden on the card and never tells the
 * server anything. Visible by default (covers the "server already rendered
 * launcher-only, no card present at all" case); hidden for as long as an
 * open (not aria-hidden) card immediately precedes it in the DOM.
 */
.ac-consent__launcher {
	display: block;
	position: fixed;
	inset-block-end: 1rem;
	inset-inline-start: 1rem;
	margin: 0;
	z-index: 2147483000;
}

.ac-consent:not([aria-hidden="true"]) + .ac-consent__launcher {
	display: none;
}

.ac-consent__launcher-link {
	position: relative;
	display: inline-block;
	inline-size: 3rem;
	block-size: 3rem;
	border-radius: 50%;
	background: var(--ac-launcher-color, CanvasText);
	color: Canvas;
	text-decoration: none;
	overflow: hidden;
	text-indent: -9999px;
	white-space: nowrap;
	box-shadow: 0 2px 10px rgba(0, 0, 0, .3);
}

.ac-consent__launcher-link::before {
	content: '';
	position: absolute;
	inset-block-start: 50%;
	inset-inline-start: 50%;
	inline-size: 1.5rem;
	block-size: 1.5rem;
	transform: translate(-50%, -50%);
	background-color: currentColor;
}

/* Cookie is the default glyph (also the safe fallback used by
   launcherFragment() when an unrecognized icon token ever slips through). */
.ac-consent__launcher-link--cookie::before {
	-webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 2a10 10 0 1 0 9.54 13.06 1 1 0 0 0-1.1-1.32 4 4 0 0 1-4.5-5.28 1 1 0 0 0-.6-1.32A4 4 0 0 1 12 2Zm-3 6a1.25 1.25 0 1 1 0 2.5A1.25 1.25 0 0 1 9 8Zm7 1a1 1 0 1 1 0 2 1 1 0 0 1 0-2ZM8 13a1 1 0 1 1 0 2 1 1 0 0 1 0-2Zm5 3a1.25 1.25 0 1 1 0 2.5 1.25 1.25 0 0 1 0-2.5Z'/%3E%3C/svg%3E") center / contain no-repeat;
	mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 2a10 10 0 1 0 9.54 13.06 1 1 0 0 0-1.1-1.32 4 4 0 0 1-4.5-5.28 1 1 0 0 0-.6-1.32A4 4 0 0 1 12 2Zm-3 6a1.25 1.25 0 1 1 0 2.5A1.25 1.25 0 0 1 9 8Zm7 1a1 1 0 1 1 0 2 1 1 0 0 1 0-2ZM8 13a1 1 0 1 1 0 2 1 1 0 0 1 0-2Zm5 3a1.25 1.25 0 1 1 0 2.5 1.25 1.25 0 0 1 0-2.5Z'/%3E%3C/svg%3E") center / contain no-repeat;
}

.ac-consent__launcher-link--shield::before {
	-webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 1 3 5v6c0 5.55 3.84 10.74 9 12 5.16-1.26 9-6.45 9-12V5l-9-4z'/%3E%3C/svg%3E") center / contain no-repeat;
	mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 1 3 5v6c0 5.55 3.84 10.74 9 12 5.16-1.26 9-6.45 9-12V5l-9-4z'/%3E%3C/svg%3E") center / contain no-repeat;
}

.ac-consent__launcher-link--gear::before {
	-webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Ccircle cx='12' cy='12' r='3.2'/%3E%3Cpath d='M12 2v3M12 19v3M22 12h-3M5 12H2M19.07 4.93l-2.12 2.12M7.05 16.95l-2.12 2.12M19.07 19.07l-2.12-2.12M7.05 7.05 4.93 4.93' fill='none' stroke='%23000' stroke-width='2.6' stroke-linecap='round'/%3E%3C/svg%3E") center / contain no-repeat;
	mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Ccircle cx='12' cy='12' r='3.2'/%3E%3Cpath d='M12 2v3M12 19v3M22 12h-3M5 12H2M19.07 4.93l-2.12 2.12M7.05 16.95l-2.12 2.12M19.07 19.07l-2.12-2.12M7.05 7.05 4.93 4.93' fill='none' stroke='%23000' stroke-width='2.6' stroke-linecap='round'/%3E%3C/svg%3E") center / contain no-repeat;
}

.ac-consent__launcher-link:focus-visible {
	outline: 3px solid CanvasText;
	outline-offset: 3px;
}

.ac-consent__actions {
	display: flex;
	flex-wrap: wrap;
	justify-content: flex-end;
	gap: .75rem;
	margin-block-start: 1.75rem;
}

.ac-consent__button {
	appearance: none;
	border: var(--ac-button-border, none) !important;
	border-radius: 999px !important;
	padding: .75rem 1.75rem !important;
	font: inherit;
	font-weight: 700 !important;
	font-size: 1rem !important;
	cursor: pointer;
	/* Themes commonly style bare button[type="submit"] with their own brand
	   color (this is exactly how the panel's inline Save button ended up
	   pink instead of the configured purple accent) — pinned the same way
	   as the heading/label fixes above. */
	background: var(--ac-button-fill, var(--ac-accent-color, #4c6fe0)) !important;
	color: var(--ac-button-text-color, Canvas) !important;
}

.ac-consent__button--reject_all,
.ac-consent__button--customize {
	background: transparent !important;
	color: var(--ac-text-color, CanvasText) !important;
	border: 1px solid color-mix(in srgb, var(--ac-text-color, CanvasText) 25%, transparent) !important;
}

/* The corner X. Close remains the exact same form submit control; only its
   visual presentation changes (see actions() in VisitorTemplateRenderer). */
.ac-consent__close {
	position: absolute;
	inset-block-start: 1.25rem;
	inset-inline-end: 1.25rem;
	inline-size: 2rem;
	block-size: 2rem;
	padding: 0;
	border: 0 !important;
	border-radius: 50% !important;
	/* Same button[type="submit"] theme-bleed as .ac-consent__button — this X
	   is also rendered as a real <button type="submit">, so it was picking
	   up the theme's pink submit-button background too. */
	background: transparent !important;
	color: inherit !important;
	cursor: pointer;
	overflow: hidden;
	text-indent: -9999px;
	white-space: nowrap;
}

.ac-consent__close:hover,
.ac-consent__close:focus-visible {
	background: color-mix(in srgb, var(--ac-text-color, CanvasText) 10%, transparent) !important;
}

.ac-consent__close::before,
.ac-consent__close::after {
	content: '';
	position: absolute;
	inset-block-start: 50%;
	inset-inline-start: 50%;
	inline-size: 1.125rem;
	block-size: 2px;
	background: currentColor;
}

.ac-consent__close::before {
	transform: translate(-50%, -50%) rotate(45deg);
}

.ac-consent__close::after {
	transform: translate(-50%, -50%) rotate(-45deg);
}

/*
 * In-page settings overlay (Task #14): when JS reveals the categories panel
 * in place (runtime-coordinator.js sets data-ac-panel-open="true" and
 * unhides [data-ac-panel] instead of navigating to ?ac_surface=preferences),
 * the top-level Accept/Reject/Customize row no longer makes sense next to an
 * open panel that already has its own Save button — hide it. Scoped to
 * .ac-consent__button (not .ac-consent__close, a different class on the same
 * row) so the X stays reachable, and scoped through .ac-consent__form so the
 * panel's own .ac-consent__actions--panel Save button (nested one level
 * deeper, inside .ac-consent__panel) is never matched by this rule.
 */
.ac-consent[data-ac-panel-open="true"] > .ac-consent__form > .ac-consent__actions > .ac-consent__button {
	display: none;
}

.ac-consent__panel {
	margin-block: 1.25rem;
	padding-block-start: 1.25rem;
	border-block-start: 1px solid color-mix(in srgb, var(--ac-text-color, CanvasText) 15%, transparent);
}

.ac-consent__actions--panel {
	margin-block-start: 1.25rem;
}

.ac-consent__category {
	margin-block: 0;
	padding-block: 1.25rem;
	border-block-end: 1px solid color-mix(in srgb, var(--ac-text-color, CanvasText) 15%, transparent);
}

.ac-consent__category:first-of-type {
	padding-block-start: 0;
}

.ac-consent__category:last-of-type {
	border-block-end: 0;
	padding-block-end: 0;
}

/*
 * "Show details" disclosure (consent date + consent ID). Native
 * <details>/<summary> gives the expand/collapse behavior for free with no
 * JavaScript; the "Show details" / "Hide details" text swap uses the same
 * CSS-only on/off-span pattern as the category toggles above, keyed off the
 * native [open] attribute instead of a checked input.
 */
.ac-consent__details {
	margin-block-start: 1.5rem;
}

.ac-consent__details summary {
	display: inline-flex;
	align-items: center;
	gap: .375rem;
	cursor: pointer;
	color: var(--ac-accent-color, #4c6fe0);
	font-weight: 600;
	font-size: .9rem;
	list-style: none;
}

.ac-consent__details summary::-webkit-details-marker {
	display: none;
}

.ac-consent__details summary::after {
	content: '';
	inline-size: .5rem;
	block-size: .5rem;
	border-inline-end: 2px solid currentColor;
	border-block-end: 2px solid currentColor;
	transform: rotate(45deg);
	transition: transform .15s ease;
}

.ac-consent__details[open] summary::after {
	transform: rotate(225deg);
}

.ac-consent__details-label--open {
	display: none;
}

.ac-consent__details[open] .ac-consent__details-label--closed {
	display: none;
}

.ac-consent__details[open] .ac-consent__details-label--open {
	display: inline;
}

.ac-consent__details-list {
	margin: .75rem 0 0;
	padding: 1rem;
	border-radius: .5rem;
	background: color-mix(in srgb, var(--ac-text-color, CanvasText) 6%, transparent);
	font-size: .875rem;
}

.ac-consent__details-list dt {
	font-weight: 700;
}

.ac-consent__details-list dd {
	margin: 0 0 .75rem;
	opacity: .85;
}

.ac-consent__details-list dd:last-child {
	margin-block-end: 0;
}

.ac-consent__details-id {
	font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
	word-break: break-all;
}

.ac-consent__service {
	margin-block: 1rem;
}

.ac-consent__category-head {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 1rem;
}

.ac-consent__category-head label {
	font-weight: 700;
	font-size: 1.15rem;
	color: color-mix(in srgb, var(--ac-accent-color, #4c6fe0) 55%, black) !important;
}

.ac-consent__always-on {
	flex: none;
	font-size: .9rem;
	color: var(--ac-text-color, CanvasText);
	opacity: .7;
}

.ac-consent__toggle {
	position: relative;
	display: inline-flex;
	flex-direction: row-reverse;
	align-items: center;
	flex: none;
	gap: .5rem;
}

/* z-index:1 is required, not decorative: .ac-consent__toggle-track below also
   has position:relative (for its own thumb pseudo-element), which promotes it
   into the same stacking layer as this absolutely-positioned input. Being
   later in the DOM, the track would otherwise paint above the input and
   silently eat clicks on the switch graphic itself (clicking the On/Off text
   still worked, since that text stays position:static and sits below the
   input regardless). */
.ac-consent__toggle input[type="checkbox"] {
	position: absolute;
	inset: 0;
	/* Safari treats a checkbox as a replaced form control with its own
	   intrinsic size/UA styling — inset:0 alone isn't always enough to make
	   it fill an inline-flex ancestor the way it does in Chrome/Firefox, and
	   the leftover native control chrome (invisible via opacity:0, but still
	   present) can eat the tap/click before it reaches this element. Explicit
	   100% sizing plus stripping the native appearance makes the hit area
	   match .ac-consent__toggle-track in every engine, not just Chromium. */
	inline-size: 100%;
	block-size: 100%;
	-webkit-appearance: none;
	appearance: none;
	z-index: 1;
	margin: 0;
	opacity: 0;
	cursor: pointer;
}

.ac-consent__toggle-track {
	position: relative;
	display: inline-block;
	inline-size: 2.75rem;
	block-size: 1.5rem;
	border-radius: 1rem;
	background: #c7cdd6;
	transition: background-color .15s ease;
}

.ac-consent__toggle-track::before {
	content: '';
	position: absolute;
	inset-block-start: .1875rem;
	inset-inline-start: .1875rem;
	inline-size: 1.125rem;
	block-size: 1.125rem;
	border-radius: 50%;
	background: Canvas;
	box-shadow: 0 1px 3px rgba(0, 0, 0, .3);
	transition: transform .15s ease;
}

.ac-consent__toggle input:checked ~ .ac-consent__toggle-track {
	background: var(--ac-accent-color, #4c6fe0);
}

.ac-consent__toggle input:checked ~ .ac-consent__toggle-track::before {
	transform: translateX(1.25rem);
}

.ac-consent__toggle input:focus-visible ~ .ac-consent__toggle-track {
	outline: 3px solid var(--ac-accent-color, #4c6fe0);
	outline-offset: 2px;
}

.ac-consent__toggle-state {
	font-size: .9rem;
	font-weight: 600;
	color: var(--ac-text-color, CanvasText);
	opacity: .7;
}

.ac-consent__toggle-state--on {
	display: none;
	color: var(--ac-accent-color, #4c6fe0);
	opacity: 1;
}

.ac-consent__toggle-state--off {
	display: inline;
}

.ac-consent__toggle input:checked ~ .ac-consent__toggle-state--on {
	display: inline;
}

.ac-consent__toggle input:checked ~ .ac-consent__toggle-state--off {
	display: none;
}

.ac-consent :focus-visible {
	outline: 3px solid currentColor;
	outline-offset: 3px;
}

.ac-theme-high-contrast {
	border: 4px solid currentColor;
}

@media (max-width: 48rem) {
	.ac-consent {
		inline-size: calc(100% - 1rem);
		margin: .5rem;
		padding: 1rem;
		padding-inline-end: 2.5rem;
	}

	.ac-consent__actions {
		display: grid;
	}

	.ac-consent__category-head {
		flex-wrap: wrap;
	}

	/*
	 * The compact top/bottom bar (.ac-consent--position-top/bottom) lays the
	 * intro text and action buttons out as a single row, with the intro
	 * column given a 24rem (384px) minimum preferred width. That comfortably
	 * fits a laptop-width banner but not a phone screen, where 384px alone
	 * can exceed the available viewport width once padding and the action
	 * buttons are accounted for — the row never gets a chance to wrap the
	 * way it does on wider screens, producing horizontal clipping/overflow
	 * instead. Below this breakpoint the bar stacks into a normal vertical
	 * card instead of trying to stay a single slim row.
	 */
	.ac-consent--position-top,
	.ac-consent--position-bottom {
		flex-direction: column;
		align-items: stretch;
	}

	.ac-consent--position-top .ac-consent__intro,
	.ac-consent--position-bottom .ac-consent__intro {
		flex-basis: auto;
		inline-size: 100%;
	}

	.ac-consent--position-top .ac-consent__intro h2,
	.ac-consent--position-bottom .ac-consent__intro h2,
	.ac-consent--position-top .ac-consent__intro p,
	.ac-consent--position-bottom .ac-consent__intro p {
		display: block;
	}
}

@media (prefers-reduced-motion: reduce) {
	.ac-consent,
	.ac-consent * {
		scroll-behavior: auto;
		transition-duration: .001ms;
		animation-duration: .001ms;
	}
}

@media (forced-colors: active) {
	.ac-consent {
		border: 2px solid CanvasText;
	}
}
