/* ============================================================
   Cookie Consent for EU – Front-end Banner Styles
   ============================================================ */

/* CSS Custom Properties (defaults, overridden by PHP inline style) */
:root {
	--cce-banner-bg: rgba(31, 58, 125, 0.95);
	--cce-banner-text: #ffffff;
	--cce-accept-btn: #4caf50;
	--cce-reject-btn: #f44336;
	--cce-customize-btn: #2196f3;
	--cce-accent: #ffc107;
	--cce-modal-bg: #ffffff;
	--cce-modal-text: #333333;
	--cce-modal-border: #e0e0e0;
	--cce-overlay-bg: rgba(0, 0, 0, 0.5);
	--cce-shadow: 0 4px 24px rgba(0, 0, 0, 0.18);
	--cce-radius: 8px;
	--cce-btn-radius: 4px;
	--cce-transition: 0.2s ease;
	--cce-z-banner: 9998;
	--cce-z-modal: 9999;
	--cce-font: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
}

/* ── Reset within our elements ───────────────────────────── */
.cce-banner-wrap *,
.cce-modal *,
.cce-modal-overlay *,
.cce-revoke-wrap * {
	box-sizing: border-box;
	margin: 0;
	padding: 0;
}

/* ── Banner Wrapper ──────────────────────────────────────── */
.cce-banner-wrap {
	position: fixed;
	left: 0;
	right: 0;
	z-index: var(--cce-z-banner);
	display: flex;
	justify-content: center;
	pointer-events: none;
}

.cce-banner-wrap.cce-position-bottom {
	bottom: 0;
}

.cce-banner-wrap.cce-position-top {
	top: 0;
}

.cce-banner-wrap.cce-position-center {
	top: 50%;
	transform: translateY(-50%);
}

/* ── Banner Card ─────────────────────────────────────────── */
.cce-banner {
	background: var(--cce-banner-bg);
	color: var(--cce-banner-text);
	width: 100%;
	box-shadow: var(--cce-shadow);
	pointer-events: auto;
	font-family: var(--cce-font);
}

.cce-position-center .cce-banner {
	border-radius: var(--cce-radius);
	max-width: 720px;
	width: 95%;
	margin: 0 auto;
}

.cce-banner-inner {
	display: flex;
	align-items: center;
	flex-wrap: wrap;
	gap: 16px;
	padding: 20px 24px;
	max-width: 1400px;
	margin: 0 auto;
}

.cce-banner-content {
	flex: 1 1 400px;
}

/* ── Cookie Icon ─────────────────────────────────────────── */
.cce-cookie-icon {
	display: inline-block;
	vertical-align: middle;
	margin-right: 8px;
}

/* ── Typography ──────────────────────────────────────────── */
.cce-banner-title {
	font-size: 1.25rem;
	font-weight: 700;
	line-height: 1.3;
	color: var(--cce-banner-text);
	margin-bottom: 8px;
}

.cce-banner-desc {
	font-size: 0.875rem;
	line-height: 1.6;
	color: var(--cce-banner-text);
	opacity: 0.92;
	margin-bottom: 8px;
}

.cce-banner-links {
	font-size: 0.8125rem;
	margin-top: 8px;
}

.cce-banner-links a {
	color: var(--cce-banner-text);
	text-decoration: underline;
	opacity: 0.85;
	transition: opacity var(--cce-transition);
}

.cce-banner-links a:hover,
.cce-banner-links a:focus {
	opacity: 1;
}

.cce-link-sep {
	margin: 0 6px;
	opacity: 0.5;
}

/* ── Action Buttons ──────────────────────────────────────── */
.cce-banner-actions {
	display: flex;
	flex-wrap: wrap;
	gap: 10px;
	flex-shrink: 0;
}

.cce-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	padding: 11px 22px;
	border: none;
	border-radius: var(--cce-btn-radius);
	font-family: var(--cce-font);
	font-size: 0.875rem;
	font-weight: 600;
	line-height: 1.2;
	cursor: pointer;
	text-decoration: none;
	transition: transform 0.15s ease, filter 0.15s ease, box-shadow 0.15s ease;
	white-space: nowrap;
}

.cce-btn:hover {
	filter: brightness(0.87);
	transform: scale(1.02);
}

.cce-btn:focus-visible {
	outline: 2px solid #fff;
	outline-offset: 2px;
	box-shadow: 0 0 0 4px rgba(255, 255, 255, 0.4);
}

.cce-btn:active {
	transform: scale(0.99);
}

.cce-btn-accept {
	background: var(--cce-accept-btn);
	color: #fff;
}

.cce-btn-reject {
	background: var(--cce-reject-btn);
	color: #fff;
}

.cce-btn-customize {
	background: var(--cce-customize-btn);
	color: #fff;
}

/* ── Animations ──────────────────────────────────────────── */
@media (prefers-reduced-motion: no-preference) {
	/* Fade In */
	.cce-anim-fade-in {
		animation: cceFadeIn 0.3s ease-out forwards;
	}

	/* Slide Up */
	.cce-anim-slide-up {
		animation: cceSlideUp 0.4s ease-out forwards;
	}

	/* Slide Down (for top-positioned banner) */
	.cce-anim-slide-down {
		animation: cceSlideDown 0.4s ease-out forwards;
	}

	/* Bounce */
	.cce-anim-bounce {
		animation: cceBounce 0.5s cubic-bezier(0.36, 0.07, 0.19, 0.97) forwards;
	}

	/* Fade Out */
	.cce-anim-fade-out {
		animation: cceFadeOut 0.2s ease-in forwards;
	}
}

@keyframes cceFadeIn {
	from { opacity: 0; }
	to   { opacity: 1; }
}

@keyframes cceSlideUp {
	from { transform: translateY(100%); opacity: 0; }
	to   { transform: translateY(0);    opacity: 1; }
}

@keyframes cceSlideDown {
	from { transform: translateY(-100%); opacity: 0; }
	to   { transform: translateY(0);     opacity: 1; }
}

@keyframes cceBounce {
	0%   { transform: translateY(100%) scale(0.95); opacity: 0; }
	60%  { transform: translateY(-8px) scale(1.02); opacity: 1; }
	80%  { transform: translateY(4px) scale(0.99); }
	100% { transform: translateY(0) scale(1); }
}

@keyframes cceFadeOut {
	from { opacity: 1; }
	to   { opacity: 0; }
}

/* ── Modal Overlay ───────────────────────────────────────── */
.cce-modal-overlay {
	position: fixed;
	inset: 0;
	background: var(--cce-overlay-bg);
	z-index: calc(var(--cce-z-modal) - 1);
	backdrop-filter: blur(2px);
}

@media (prefers-reduced-motion: no-preference) {
	.cce-modal-overlay {
		animation: cceFadeIn 0.25s ease-out;
	}
}

/* ── Preferences Modal ───────────────────────────────────── */
.cce-modal {
	position: fixed;
	top: 50%;
	left: 50%;
	transform: translate(-50%, -50%);
	z-index: var(--cce-z-modal);
	width: 90%;
	max-width: 600px;
	max-height: 90vh;
	background: var(--cce-modal-bg);
	color: var(--cce-modal-text);
	border-radius: var(--cce-radius);
	box-shadow: 0 8px 40px rgba(0, 0, 0, 0.25);
	font-family: var(--cce-font);
	display: flex;
	flex-direction: column;
	overflow: hidden;
}

@media (prefers-reduced-motion: no-preference) {
	.cce-modal {
		animation: cceModalIn 0.3s ease-out;
	}
}

@keyframes cceModalIn {
	from { opacity: 0; transform: translate(-50%, -52%) scale(0.96); }
	to   { opacity: 1; transform: translate(-50%, -50%) scale(1); }
}

.cce-modal-inner {
	display: flex;
	flex-direction: column;
	height: 100%;
	overflow: hidden;
}

.cce-modal-header {
	display: flex;
	align-items: center;
	justify-content: space-between;
	padding: 18px 20px 14px;
	border-bottom: 1px solid var(--cce-modal-border);
	flex-shrink: 0;
}

.cce-modal-title {
	font-size: 1.125rem;
	font-weight: 700;
	color: var(--cce-modal-text);
}

.cce-modal-close {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 32px;
	height: 32px;
	border: none;
	background: transparent;
	cursor: pointer;
	border-radius: 50%;
	color: #666;
	transition: background var(--cce-transition), color var(--cce-transition);
}

.cce-modal-close:hover {
	background: #f0f0f0;
	color: #333;
}

.cce-modal-close:focus-visible {
	outline: 2px solid #2196f3;
	outline-offset: 2px;
}

.cce-modal-body {
	overflow-y: auto;
	padding: 0 20px;
	flex: 1;
}

.cce-modal-footer {
	display: flex;
	gap: 10px;
	padding: 14px 20px;
	border-top: 1px solid var(--cce-modal-border);
	justify-content: flex-end;
	flex-shrink: 0;
}

/* ── Cookie Category Item ────────────────────────────────── */
.cce-category {
	padding: 16px 0;
}

.cce-category-row {
	display: flex;
	align-items: flex-start;
	justify-content: space-between;
	gap: 16px;
}

.cce-category-info {
	flex: 1;
}

.cce-category-title {
	font-size: 0.9375rem;
	font-weight: 600;
	color: var(--cce-modal-text);
	display: block;
	margin-bottom: 4px;
}

.cce-category-desc {
	font-size: 0.8125rem;
	line-height: 1.55;
	color: #555;
}

.cce-category-control {
	flex-shrink: 0;
	padding-top: 2px;
}

.cce-category-divider {
	border: none;
	border-top: 1px solid var(--cce-modal-border);
	margin-top: 16px;
}

.cce-category:last-child .cce-category-divider {
	display: none;
}

/* ── Always ON badge ─────────────────────────────────────── */
.cce-always-on {
	display: inline-block;
	padding: 4px 10px;
	background: #e8f5e9;
	color: #2e7d32;
	border-radius: 100px;
	font-size: 0.75rem;
	font-weight: 600;
	white-space: nowrap;
}

/* ── Toggle Switch ───────────────────────────────────────── */
.cce-switch {
	position: relative;
	display: inline-block;
	width: 50px;
	height: 28px;
	cursor: pointer;
}

.cce-switch input {
	opacity: 0;
	width: 0;
	height: 0;
	position: absolute;
}

.cce-switch-slider {
	position: absolute;
	inset: 0;
	background: #ccc;
	border-radius: 100px;
	transition: background 0.2s;
}

.cce-switch-slider::before {
	content: "";
	position: absolute;
	width: 22px;
	height: 22px;
	left: 3px;
	top: 3px;
	background: #fff;
	border-radius: 50%;
	box-shadow: 0 1px 4px rgba(0,0,0,0.2);
	transition: transform 0.2s;
}

.cce-switch input:checked + .cce-switch-slider {
	background: var(--cce-accept-btn);
}

.cce-switch input:checked + .cce-switch-slider::before {
	transform: translateX(22px);
}

.cce-switch input:focus-visible + .cce-switch-slider {
	outline: 2px solid #2196f3;
	outline-offset: 2px;
}

/* ── Revoke Button ───────────────────────────────────────── */
.cce-revoke-wrap {
	position: fixed;
	bottom: 16px;
	left: 16px;
	z-index: calc(var(--cce-z-banner) - 1);
}

.cce-revoke-btn {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	padding: 8px 14px;
	background: rgba(0, 0, 0, 0.65);
	color: #fff;
	border: none;
	border-radius: 100px;
	font-family: var(--cce-font);
	font-size: 0.75rem;
	font-weight: 500;
	cursor: pointer;
	backdrop-filter: blur(4px);
	transition: background var(--cce-transition), transform var(--cce-transition);
}

.cce-revoke-btn:hover {
	background: rgba(0, 0, 0, 0.8);
	transform: translateY(-1px);
}

.cce-revoke-btn:focus-visible {
	outline: 2px solid #2196f3;
	outline-offset: 2px;
}

/* ── [hidden] utility ────────────────────────────────────── */
[hidden] {
	display: none !important;
}

/* ── Responsive: Mobile ──────────────────────────────────── */
@media (max-width: 600px) {
	.cce-banner-inner {
		flex-direction: column;
		align-items: stretch;
		padding: 16px;
	}

	.cce-banner-content {
		flex: none;
	}

	.cce-banner-title {
		font-size: 1.0625rem;
	}

	.cce-banner-desc {
		font-size: 0.8125rem;
	}

	.cce-banner-actions {
		flex-direction: column;
	}

	.cce-btn {
		width: 100%;
		padding: 13px 20px;
	}

	.cce-modal {
		width: 100%;
		max-width: 100%;
		bottom: 0;
		top: auto;
		left: 0;
		transform: none;
		border-radius: var(--cce-radius) var(--cce-radius) 0 0;
		max-height: 80vh;
	}

	@keyframes cceModalIn {
		from { opacity: 0; transform: translateY(20px); }
		to   { opacity: 1; transform: translateY(0); }
	}

	.cce-modal-footer {
		flex-direction: column;
	}

	.cce-modal-footer .cce-btn {
		width: 100%;
	}
}

/* ── Print ───────────────────────────────────────────────── */
@media print {
	.cce-banner-wrap,
	.cce-modal,
	.cce-modal-overlay,
	.cce-revoke-wrap {
		display: none !important;
	}
}
