/**
 * Scoped consent UI.
 *
 * Custom properties carry the appearance. Fallbacks keep the neutral preset
 * usable when the host theme has no design tokens.
 */

.tezus-consent {
	position: fixed;
	right: 0;
	left: 0;
	z-index: 20;
	box-sizing: border-box;
	width: 100%;
	max-width: 100%;
	color: var(--tc-text, #1a1a1a);
	font-family: var(--tc-font, inherit);
	font-size: 16px;
	line-height: 1.45;
}

.tezus-consent *,
.tezus-consent *::before,
.tezus-consent *::after {
	box-sizing: border-box;
}

.tezus-consent--bottom {
	bottom: 0;
}

.tezus-consent--top {
	top: 0;
}

.tezus-consent__banner {
	padding:
		var(--tc-space, 16px)
		var(--tc-space, 16px)
		calc(var(--tc-space, 16px) + env(safe-area-inset-bottom, 0px));
}

.tezus-consent--top .tezus-consent__banner {
	padding-top: calc(var(--tc-space, 16px) + env(safe-area-inset-top, 0px));
	padding-bottom: var(--tc-space, 16px);
}

.tezus-consent__panel,
.tezus-consent__dialog {
	width: min(var(--tc-max-width, 720px), calc(100% - 16px));
	max-width: 100%;
	margin-right: auto;
	margin-left: auto;
	border: var(--tc-border-width, 1px) solid var(--tc-border, #d0d0d0);
	border-radius: var(--tc-radius, 8px);
	background: var(--tc-surface, #fff);
	box-shadow: var(--tc-shadow, none);
	color: var(--tc-text, #1a1a1a);
}

.tezus-consent__panel {
	display: flex;
	flex-wrap: wrap;
	align-items: flex-end;
	gap: var(--tc-space, 16px);
	padding: var(--tc-space, 16px);
}

.tezus-consent--stack .tezus-consent__panel {
	flex-direction: column;
	align-items: stretch;
}

.tezus-consent__copy {
	flex: 1 1 16rem;
	min-width: 0;
}

.tezus-consent__title {
	margin: 0 0 8px;
	color: inherit;
	font-family: inherit;
	font-size: 1.125rem;
	font-weight: 700;
	line-height: 1.3;
}

.tezus-consent__body,
.tezus-consent__description,
.tezus-consent__note,
.tezus-consent__privacy {
	margin: 0;
	color: var(--tc-muted, #5c5c5c);
	font-size: 0.9375rem;
}

.tezus-consent__privacy {
	margin-top: 8px;
}

.tezus-consent__link {
	display: inline-flex;
	align-items: center;
	min-width: 24px;
	min-height: 24px;
	color: var(--tc-accent, #1a1a1a);
	text-decoration: underline;
	text-underline-offset: 0.15em;
}

.tezus-consent__actions {
	display: flex;
	flex: 1 1 16rem;
	flex-wrap: wrap;
	gap: 8px;
	min-width: 0;
}

.tezus-consent__button,
.tezus-consent__close,
.tezus-consent__preferences {
	margin: 0;
	border: 1px solid var(--tc-accent, #1a1a1a);
	border-radius: var(--tc-radius, 8px);
	background: var(--tc-surface, #fff);
	color: var(--tc-accent, #1a1a1a);
	font-family: inherit;
	font-size: 0.9375rem;
	font-weight: 600;
	line-height: 1.3;
	text-align: center;
	text-decoration: none;
	cursor: pointer;
}

.tezus-consent__button,
.tezus-consent__close {
	min-height: 44px;
	padding: 10px 16px;
}

.tezus-consent__actions .tezus-consent__button {
	flex: 1 1 10rem;
}

.tezus-consent__button--choice {
	background: var(--tc-accent, #1a1a1a);
	color: var(--tc-accent-contrast, #fff);
}

.tezus-consent__dialog {
	position: fixed;
	max-height: calc(100dvh - 16px);
	padding: 0;
	overflow: hidden;
}

.tezus-consent__dialog[open] {
	display: flex;
	flex-direction: column;
	inset: 0;
	width: min(var(--tc-max-width, 720px), calc(100% - 16px));
	height: fit-content;
	margin: auto;
}

.tezus-consent__dialog::backdrop {
	background: rgb(0 0 0 / 48%);
}

.tezus-consent__dialog-top,
.tezus-consent__actions--dialog {
	display: flex;
	gap: 8px;
	align-items: center;
	justify-content: space-between;
	padding: var(--tc-space, 16px);
}

.tezus-consent__dialog-top .tezus-consent__title {
	margin: 0;
}

.tezus-consent__dialog-body {
	flex: 1 1 auto;
	min-height: 0;
	max-height: calc(100dvh - 220px);
	padding: 0 var(--tc-space, 16px);
	overflow: auto;
}

.tezus-consent__choices,
.tezus-consent__services {
	margin: 12px 0 0;
	padding: 0;
	list-style: none;
}

.tezus-consent__choice {
	margin: 0 0 12px;
	padding-bottom: 12px;
	border-bottom: 1px solid var(--tc-border, #d0d0d0);
}

.tezus-consent__choice-label {
	display: flex;
	gap: 12px;
	align-items: center;
	min-height: 44px;
	color: var(--tc-text, #1a1a1a);
	font-weight: 600;
}

.tezus-consent__choice input {
	width: 1.25rem;
	height: 1.25rem;
	margin: 0;
	accent-color: var(--tc-accent, #1a1a1a);
}

.tezus-consent__choice-text {
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
	align-items: center;
}

.tezus-consent__badge {
	padding: 2px 8px;
	border-radius: var(--tc-radius, 8px);
	background: var(--tc-border, #d0d0d0);
	color: var(--tc-text, #1a1a1a);
	font-size: 0.75rem;
	font-weight: 600;
}

.tezus-consent__description {
	margin-top: 4px;
}

.tezus-consent__services {
	color: var(--tc-muted, #5c5c5c);
	font-size: 0.875rem;
}

.tezus-consent__close {
	flex: 0 0 auto;
}

.tezus-consent__button:focus-visible,
.tezus-consent__close:focus-visible,
.tezus-consent__link:focus-visible,
.tezus-consent__choice input:focus-visible,
.tezus-consent__preferences:focus-visible {
	outline: 2px solid var(--tc-focus, #1a1a1a);
	outline-offset: 2px;
}

@media (prefers-reduced-motion: reduce) {

	.tezus-consent,
	.tezus-consent__banner,
	.tezus-consent__dialog,
	.tezus-consent__button,
	.tezus-consent__close,
	.tezus-consent__link {
		scroll-behavior: auto;
		transition: none;
	}
}

@media (max-width: 480px) {

	.tezus-consent__banner {
		max-height: 60dvh;
		overflow: auto;
	}

	.tezus-consent__copy,
	.tezus-consent__actions {
		flex: 0 1 auto;
	}

	.tezus-consent__panel,
	.tezus-consent__actions,
	.tezus-consent__actions--dialog,
	.tezus-consent__dialog-top {
		flex-direction: column;
		align-items: stretch;
	}

	.tezus-consent__actions .tezus-consent__button,
	.tezus-consent__close {
		flex: 0 0 auto;
		width: 100%;
	}
}
