/*!
 * Goes & Roos Cookie Manager — frontend styles
 * By VDM Solutions — GPL-2.0-or-later
 * Extends CookieConsent v3 (MIT) through its documented CSS variables.
 */

/* Modal shadow, button style and links */
#cc-main .cm,
#cc-main .pm {
	box-shadow: var(--gnrcm-shadow, 0 10px 32px rgba(0, 0, 0, .16));
}

#cc-main .cm__btn,
#cc-main .pm__btn {
	font-weight: var(--gnrcm-btn-weight, 600);
	text-transform: var(--gnrcm-btn-transform, none);
}

#cc-main .cm__desc a,
#cc-main .pm__section-desc a,
#cc-main .cm__footer a {
	color: var(--gnrcm-link, inherit);
	text-decoration: underline;
	text-underline-offset: 2px;
}

/* WCAG 2.2: clearly visible keyboard focus (2.4.7 / 2.4.11) */
#cc-main .cm__btn:focus-visible,
#cc-main .pm__btn:focus-visible,
#cc-main .pm__close-btn:focus-visible,
#cc-main .cm__btn--close:focus-visible,
#cc-main a:focus-visible,
#cc-main .section__toggle:focus-visible + .toggle__icon,
#cc-main .pm__section-title:focus-visible {
	outline: 3px solid var(--cc-btn-primary-bg, #30363c);
	outline-offset: 2px;
}

/* Logo in the consent banner */
#cc-main .gnrcm-logo {
	display: block;
	width: auto;
	max-width: 60%;
	margin: 0 0 .75em;
	object-fit: contain;
}

#cc-main .gnrcm-revision {
	display: block;
	margin-top: .5em;
	font-weight: 600;
}

/* Floating "cookie settings" button */
.gnrcm-floating {
	--gnrcm-floating-shift: translateY(0);
	position: fixed;
	bottom: var(--gnrcm-floating-y, 16px);
	z-index: 2147483000;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 8px;
	width: 44px;
	height: 44px; /* WCAG 2.5.8 target size */
	margin: 0;
	padding: 0;
	border: 0;
	border-radius: 50%;
	background: var(--gnrcm-floating-bg, #30363c);
	color: var(--gnrcm-floating-color, #ffffff);
	box-shadow: 0 4px 14px rgba(0, 0, 0, .25);
	font: 600 14px/1 system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
	letter-spacing: normal;
	text-transform: none;
	cursor: pointer;
	transform: var(--gnrcm-floating-shift);
	transition: transform .15s ease;
}

.gnrcm-floating svg {
	flex: 0 0 auto;
}

.gnrcm-floating[hidden] {
	display: none;
}

/* Positions (left/right = values of version 1.0/1.1) */
.gnrcm-floating--bottom-left,
.gnrcm-floating--left { left: var(--gnrcm-floating-x, 16px); }
.gnrcm-floating--bottom-right,
.gnrcm-floating--right { right: var(--gnrcm-floating-x, 16px); }
.gnrcm-floating--middle-left,
.gnrcm-floating--middle-right {
	--gnrcm-floating-shift: translateY(-50%);
	top: 50%;
	bottom: auto;
}
.gnrcm-floating--middle-left { left: var(--gnrcm-floating-x, 16px); }
.gnrcm-floating--middle-right { right: var(--gnrcm-floating-x, 16px); }

/* Icon with text */
.gnrcm-floating--label {
	width: auto;
	padding: 0 16px 0 10px;
	border-radius: 999px;
	white-space: nowrap;
}

.gnrcm-floating:hover { transform: var(--gnrcm-floating-shift) scale(1.06); }

@media (max-width: 640px) {
	.gnrcm-floating--no-mobile { display: none !important; }
	/* Keep the text version compact on phones. */
	.gnrcm-floating--label .gnrcm-floating__text { display: none; }
	.gnrcm-floating--label { width: 44px; padding: 0; border-radius: 50%; }
}

.gnrcm-floating:focus-visible {
	outline: 3px solid var(--gnrcm-floating-bg, #30363c);
	outline-offset: 3px;
}

html.show--consent .gnrcm-floating,
html.show--preferences .gnrcm-floating {
	display: none;
}

@media (prefers-reduced-motion: reduce) {
	.gnrcm-floating { transition: none; }
	.gnrcm-floating:hover { transform: var(--gnrcm-floating-shift); }
	#cc-main,
	#cc-main .cm,
	#cc-main .pm {
		--cc-modal-transition-duration: 0s;
	}
}

@media print {
	.gnrcm-floating { display: none !important; }
}

/* Cookie settings button (shortcode) */
.gnrcm-settings-button {
	display: inline-block;
	min-height: 44px;
	padding: .6em 1.2em;
	border: 2px solid currentColor;
	border-radius: 6px;
	background: transparent;
	color: inherit;
	font: inherit;
	font-weight: 600;
	cursor: pointer;
}

.gnrcm-settings-button:focus-visible {
	outline: 3px solid currentColor;
	outline-offset: 2px;
}

/* Cookie policy */
.gnrcm-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;
}

.gnrcm-policy__category,
.gnrcm-policy__services {
	margin: 0 0 2em;
}

.gnrcm-policy__table-wrap {
	width: 100%;
	overflow-x: auto;
	margin: .75em 0 1.5em;
	border: 1px solid rgba(0, 0, 0, .12);
	border-radius: 8px;
}

/* Specific selectors: themes often style tables globally. */
.gnrcm-policy table.gnrcm-table {
	width: 100%;
	margin: 0;
	border: 0;
	border-collapse: collapse;
	border-spacing: 0;
	table-layout: auto;
	font-size: .92em;
	line-height: 1.5;
}

.gnrcm-policy table.gnrcm-table th,
.gnrcm-policy table.gnrcm-table td {
	padding: .65em .7em;
	border: 0;
	border-bottom: 1px solid rgba(0, 0, 0, .08);
	background: transparent;
	text-align: left;
	vertical-align: top;
}

.gnrcm-policy table.gnrcm-table thead th {
	background: rgba(0, 0, 0, .04);
	border-bottom: 1px solid rgba(0, 0, 0, .12);
	font-size: .85em;
	font-weight: 600;
	letter-spacing: .01em;
}

.gnrcm-policy table.gnrcm-table tbody tr:last-child td {
	border-bottom: 0;
}

.gnrcm-policy table.gnrcm-table tbody tr:nth-child(even) td {
	background: rgba(0, 0, 0, .015);
}

.gnrcm-policy .gnrcm-td-name code {
	display: inline-block;
	padding: .1em .4em;
	border-radius: 4px;
	background: rgba(0, 0, 0, .06);
	color: inherit;
	font-size: .92em;
	white-space: nowrap;
	word-break: normal;
}

.gnrcm-policy .gnrcm-td-purpose {
	min-width: 8em;
}

.gnrcm-policy .gnrcm-td-provider {
	min-width: 6em;
}

.gnrcm-policy .gnrcm-td-duration {
	white-space: nowrap;
}

.gnrcm-policy .gnrcm-td-privacy {
	display: block;
	margin-top: .2em;
	font-size: .88em;
}

/* Narrow content column (sidebar themes, small screens): one card per cookie.
   Based on the available width of the policy, not on the screen width. */
.gnrcm-policy {
	container-type: inline-size;
}

@container (max-width: 560px) {
	.gnrcm-policy .gnrcm-policy__table-wrap {
		border: 0;
		border-radius: 0;
		overflow: visible;
	}
	.gnrcm-policy table.gnrcm-table,
	.gnrcm-policy table.gnrcm-table thead,
	.gnrcm-policy table.gnrcm-table tbody,
	.gnrcm-policy table.gnrcm-table tr,
	.gnrcm-policy table.gnrcm-table th,
	.gnrcm-policy table.gnrcm-table td {
		display: block;
	}
	.gnrcm-policy table.gnrcm-table thead {
		position: absolute;
		width: 1px;
		height: 1px;
		overflow: hidden;
		clip: rect(0, 0, 0, 0);
	}
	.gnrcm-policy table.gnrcm-table tr {
		margin-bottom: .9em;
		border: 1px solid rgba(0, 0, 0, .12);
		border-radius: 8px;
		overflow: hidden;
	}
	.gnrcm-policy table.gnrcm-table td,
	.gnrcm-policy table.gnrcm-table tbody tr:nth-child(even) td {
		background: transparent;
		white-space: normal;
		min-width: 0;
	}
	.gnrcm-policy table.gnrcm-table tbody tr:last-child td {
		border-bottom: 1px solid rgba(0, 0, 0, .08);
	}
	.gnrcm-policy table.gnrcm-table td:last-child {
		border-bottom: 0;
	}
	.gnrcm-policy table.gnrcm-table td::before {
		content: attr(data-label);
		display: block;
		margin-bottom: .15em;
		font-size: .82em;
		font-weight: 600;
		opacity: .75;
	}
	.gnrcm-policy .gnrcm-td-name code {
		white-space: normal;
		word-break: break-all;
	}
}

.gnrcm-policy__meta {
	opacity: .85;
	font-size: .9em;
}

.gnrcm-consent-status {
	margin: 1.5em 0;
	padding: 1em 1.2em;
	border: 1px solid rgba(0, 0, 0, .15);
	border-radius: 6px;
}

.gnrcm-consent-status dl {
	display: grid;
	grid-template-columns: max-content 1fr;
	gap: .35em 1em;
	margin: 0 0 1em;
}

.gnrcm-consent-status dt { font-weight: 600; }
.gnrcm-consent-status dd { margin: 0; word-break: break-all; }

@media (max-width: 640px) {
	.gnrcm-policy__table-wrap {
		border: 0;
		border-radius: 0;
		overflow: visible;
	}
	.gnrcm-policy table.gnrcm-table,
	.gnrcm-policy table.gnrcm-table thead,
	.gnrcm-policy table.gnrcm-table tbody,
	.gnrcm-policy table.gnrcm-table tr,
	.gnrcm-policy table.gnrcm-table th,
	.gnrcm-policy table.gnrcm-table td {
		display: block;
	}
	.gnrcm-policy table.gnrcm-table colgroup {
		display: none;
	}
	.gnrcm-policy table.gnrcm-table thead {
		position: absolute;
		width: 1px;
		height: 1px;
		overflow: hidden;
		clip: rect(0, 0, 0, 0);
	}
	.gnrcm-policy table.gnrcm-table tr {
		margin-bottom: .9em;
		border: 1px solid rgba(0, 0, 0, .12);
		border-radius: 8px;
		overflow: hidden;
	}
	.gnrcm-policy table.gnrcm-table td,
	.gnrcm-policy table.gnrcm-table tbody tr:nth-child(even) td {
		background: transparent;
		white-space: normal;
	}
	.gnrcm-policy table.gnrcm-table tbody tr:last-child td {
		border-bottom: 1px solid rgba(0, 0, 0, .08);
	}
	.gnrcm-policy table.gnrcm-table td:last-child {
		border-bottom: 0;
	}
	.gnrcm-policy table.gnrcm-table td::before {
		content: attr(data-label);
		display: block;
		margin-bottom: .15em;
		font-size: .82em;
		font-weight: 600;
		opacity: .75;
	}
	.gnrcm-consent-status dl {
		grid-template-columns: 1fr;
	}
}
