/* Gefsinus Cookie Consent — banner & modal (scoped under #gcc-root) */
#gcc-root { --gcc-accent: #879E4E; }
#gcc-root *, #gcc-root *::before, #gcc-root *::after { box-sizing: border-box; }

#gcc-root [hidden] { display: none !important; }

.gcc-banner {
	position: fixed;
	z-index: 2147483000;
	left: 16px; right: 16px; bottom: 16px;
	max-width: 920px; margin: 0 auto;
	background: #fff; color: #1a1a1a;
	border: 1px solid #e6e6e6; border-radius: 14px;
	box-shadow: 0 12px 40px rgba(0,0,0,.18);
	padding: 18px 20px;
	font-family: inherit; font-size: 14px; line-height: 1.5;
	animation: gcc-in .25s ease;
}
.gcc-banner.gcc-center {
	left: 50%; right: auto; bottom: auto; top: 50%;
	transform: translate(-50%,-50%);
	max-width: 520px;
}
@keyframes gcc-in { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; } }
.gcc-banner.gcc-center { animation: none; }

.gcc-banner__inner { display: flex; gap: 18px; align-items: center; flex-wrap: wrap; }
.gcc-banner.gcc-center .gcc-banner__inner { flex-direction: column; align-items: stretch; }
.gcc-banner__text { flex: 1 1 320px; }
.gcc-banner__title { margin: 0 0 4px; font-size: 16px; font-weight: 700; }
.gcc-banner__text p { margin: 0; color: #444; }
.gcc-banner__text a { color: var(--gcc-accent); text-decoration: underline; }
.gcc-banner__actions { display: flex; gap: 8px; flex-wrap: wrap; }
.gcc-banner.gcc-center .gcc-banner__actions { justify-content: stretch; }
.gcc-banner.gcc-center .gcc-btn { flex: 1; }

.gcc-btn {
	appearance: none; cursor: pointer; border-radius: 9px;
	padding: 10px 18px; font-size: 14px; font-weight: 600; line-height: 1.2;
	font-family: inherit; text-decoration: none; text-transform: none; letter-spacing: normal;
	border: 1px solid var(--gcc-accent) !important; transition: opacity .15s, background .15s;
	box-shadow: none !important; text-shadow: none !important;
}
.gcc-btn:focus-visible { outline: 2px solid var(--gcc-accent); outline-offset: 2px; }

/* Solid button: olive bg + white text, locked on every state */
.gcc-btn--solid,
.gcc-btn--solid:hover,
.gcc-btn--solid:focus,
.gcc-btn--solid:active,
.gcc-btn--solid:visited {
	background: var(--gcc-accent) !important;
	background-color: var(--gcc-accent) !important;
	background-image: none !important;
	color: #fff !important;
	border-color: var(--gcc-accent) !important;
}
.gcc-btn--solid:hover { opacity: .88; }

/* Ghost button: olive text/border, neutral hover bg, locked on every state */
.gcc-btn--ghost,
.gcc-btn--ghost:hover,
.gcc-btn--ghost:focus,
.gcc-btn--ghost:active,
.gcc-btn--ghost:visited {
	background: transparent !important;
	background-image: none !important;
	color: var(--gcc-accent) !important;
	border-color: var(--gcc-accent) !important;
}
.gcc-btn--ghost:hover { background: rgba(0,0,0,.05) !important; }

/* Policy link inside the banner — keep accent, never theme hover colour */
.gcc-banner__text a,
.gcc-banner__text a:hover,
.gcc-banner__text a:focus,
.gcc-banner__text a:visited {
	color: var(--gcc-accent) !important;
}

/* Modal */
.gcc-modal { position: fixed; inset: 0; z-index: 2147483001; }
.gcc-modal__backdrop { position: absolute; inset: 0; background: rgba(0,0,0,.55); }
.gcc-modal__panel {
	position: relative; margin: 6vh auto 0; max-width: 560px; width: calc(100% - 32px);
	max-height: 86vh; overflow: auto;
	background: #fff; color: #1a1a1a; border-radius: 14px;
	box-shadow: 0 18px 60px rgba(0,0,0,.3);
	font-size: 14px;
}
.gcc-modal__head { display: flex; align-items: center; justify-content: space-between; padding: 18px 20px; border-bottom: 1px solid #eee; }
.gcc-modal__head h2 { margin: 0; font-size: 18px; }
.gcc-modal__close { background: none; border: 0; font-size: 26px; line-height: 1; cursor: pointer; color: #888; }
.gcc-modal__body { padding: 8px 20px; }
.gcc-modal__foot { display: flex; gap: 8px; flex-wrap: wrap; padding: 16px 20px; border-top: 1px solid #eee; }
.gcc-modal__foot .gcc-btn { flex: 1; }

.gcc-cat { display: flex; gap: 14px; align-items: flex-start; padding: 14px 0; border-bottom: 1px solid #f0f0f0; }
.gcc-cat:last-child { border-bottom: 0; }
.gcc-cat__info { flex: 1; }
.gcc-cat__label { font-weight: 700; margin: 0 0 2px; }
.gcc-cat__desc { margin: 0; color: #555; }

/* toggle */
.gcc-switch { position: relative; width: 46px; height: 26px; flex: 0 0 auto; }
.gcc-switch input { position: absolute; opacity: 0; width: 100%; height: 100%; margin: 0; cursor: pointer; }
.gcc-switch span { position: absolute; inset: 0; background: #ccc; border-radius: 999px; transition: background .2s; }
.gcc-switch span::after { content: ""; position: absolute; top: 3px; left: 3px; width: 20px; height: 20px; background: #fff; border-radius: 50%; transition: transform .2s; }
.gcc-switch input:checked + span { background: var(--gcc-accent) !important; }
.gcc-switch input:checked + span::after { transform: translateX(20px); }
.gcc-switch input:disabled + span { background: var(--gcc-accent); opacity: .5; cursor: not-allowed; }
.gcc-switch input:focus-visible + span { outline: 2px solid var(--gcc-accent); outline-offset: 2px; }

/* Float button (the persistent 🍪 after consent) — RIGHT side everywhere.
   Positioning kept in a single rule (no per-state position = no jump on tap). */
.gcc-float {
	position: fixed; right: 16px; bottom: 16px; left: auto; z-index: 2147482999;
	width: 46px; height: 46px; border-radius: 50%;
	cursor: pointer; font-size: 22px;
	touch-action: manipulation;
	transition: opacity .2s ease, transform .15s ease;
}
/* Colour lock only (no position here) so the theme can't repaint it */
.gcc-float,
.gcc-float:hover,
.gcc-float:focus,
.gcc-float:active,
.gcc-float:visited {
	background: #fff !important;
	background-image: none !important;
	color: var(--gcc-accent) !important;
	border: 1px solid #e0e0e0 !important;
	box-shadow: 0 6px 18px rgba(0,0,0,.18) !important;
	text-shadow: none !important;
}
.gcc-float:hover { transform: scale(1.05); }
.gcc-float:focus-visible { outline: 2px solid var(--gcc-accent); outline-offset: 2px; }

/* Modal close (×) — never inherit a theme colour */
.gcc-modal__close,
.gcc-modal__close:hover,
.gcc-modal__close:focus,
.gcc-modal__close:active {
	background: none !important; border: 0 !important; box-shadow: none !important;
	color: #888 !important; cursor: pointer;
}

.gcc-link-btn,
.gcc-link-btn:hover,
.gcc-link-btn:focus,
.gcc-link-btn:visited {
	background: none !important; border: 0 !important; padding: 0;
	color: var(--gcc-accent) !important; text-decoration: underline; cursor: pointer; font: inherit;
}

@media (max-width: 600px) {
	.gcc-banner__actions { width: 100%; }
	.gcc-banner__actions .gcc-btn { flex: 1; }

	/* Float button on mobile: a touch smaller + subtle until tapped */
	.gcc-float {
		right: 14px; bottom: 14px;
		width: 38px; height: 38px; font-size: 17px;
		opacity: .55;
	}
	.gcc-float:hover,
	.gcc-float:focus,
	.gcc-float:active { opacity: 1; }

	/* Preferences modal: stack buttons — Accept on top, Reject at bottom */
	.gcc-modal__foot { flex-direction: column; }
	.gcc-modal__foot [data-gcc="accept"] { order: 1; }
	.gcc-modal__foot [data-gcc="save"]   { order: 2; }
	.gcc-modal__foot [data-gcc="reject"] { order: 3; }
}
