/* GVHC Compliance — cookie consent. Fixed positioning = no CLS. High-contrast,
   keyboard-operable, WCAG 2.1 AA. Plain CSS (not part of any Tailwind build). */

/* Hidden until the script decides whether to show it. The page is cached and
   served identically to every visitor, so PHP cannot know whether this person
   has already answered — only the browser can, by reading the cookie. Rendering
   hidden and revealing in JS means a returning visitor never sees a flash of a
   banner they already dismissed. */
.gvhc-cc-banner {
	position: fixed;
	left: 0;
	right: 0;
	z-index: 99999;
	background: #1d2327;
	color: #fff;
	padding: 16px 20px;
	display: none;
	flex-wrap: wrap;
	align-items: center;
	gap: 16px;
	box-shadow: 0 -2px 12px rgba(0, 0, 0, .25);
}
.gvhc-cc-banner.is-visible { display: flex; }
.gvhc-cc-banner--bottom {
	bottom: 0;
	/* Clear the mobile home-indicator / browser bottom chrome so the action
	   buttons are never cut off on phones (iOS safe area). Falls back to the
	   base 16px where env() is unsupported. */
	padding-bottom: calc(16px + env(safe-area-inset-bottom, 0px));
}
.gvhc-cc-banner--top { top: 0; box-shadow: 0 2px 12px rgba(0, 0, 0, .25); }
.gvhc-cc-banner__body { flex: 1 1 320px; }
.gvhc-cc-banner__heading { margin: 0 0 4px; font-size: 15px; }
.gvhc-cc-banner__msg { margin: 0; font-size: 13px; line-height: 1.5; }
.gvhc-cc-banner__msg a { color: #8ec5ff; }

.gvhc-cc-actions { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }

.gvhc-cc-btn {
	font: inherit;
	font-size: 14px;
	font-weight: 700;
	line-height: 1.2;
	padding: 10px 16px;
	border-radius: 4px;
	border: 2px solid #fff;
	background: transparent;
	color: #fff;
	cursor: pointer;
}
.gvhc-cc-btn--primary { background: #15803d; border-color: #15803d; color: #fff; }
.gvhc-cc-btn--link { border-color: transparent; text-decoration: underline; padding: 10px 8px; }
.gvhc-cc-btn:focus-visible,
.gvhc-cc-btn:focus { outline: 3px solid #8ec5ff; outline-offset: 2px; }

/* Preference dialog */
.gvhc-cc-prefs[hidden] { display: none; }
.gvhc-cc-prefs {
	position: fixed;
	inset: 0;
	z-index: 100000;
	background: rgba(0, 0, 0, .5);
	display: flex;
	align-items: center;
	justify-content: center;
	padding: 20px;
}
.gvhc-cc-prefs__panel {
	background: #fff;
	color: #1d2327;
	max-width: 560px;
	width: 100%;
	max-height: 85vh;
	overflow: auto;
	border-radius: 8px;
	padding: 24px;
}
.gvhc-cc-prefs__panel h2 { margin-top: 0; }
.gvhc-cc-cat { border: 0; border-top: 1px solid #e0e0e0; margin: 0; padding: 12px 0; }
.gvhc-cc-cat label { font-size: 15px; }
.gvhc-cc-cat__desc { margin: 6px 0 0 24px; font-size: 13px; color: #50575e; }
.gvhc-cc-prefs__panel .gvhc-cc-btn { border-color: #1d2327; color: #1d2327; }
.gvhc-cc-prefs__panel .gvhc-cc-btn--primary { background: #15803d; border-color: #15803d; color: #fff; }
.gvhc-cc-prefs__panel .gvhc-cc-btn:focus-visible,
.gvhc-cc-prefs__panel .gvhc-cc-btn:focus { outline: 3px solid #15803d; outline-offset: 2px; }

/* Footer preference-center trigger */
.gvhc-cc-footer-link {
	background: none;
	border: 0;
	padding: 0;
	margin: 0;
	font: inherit;
	color: inherit;
	text-decoration: underline;
	cursor: pointer;
}

@media (max-width: 600px) {
	.gvhc-cc-banner { flex-direction: column; align-items: stretch; }
	/* In a column the 320px flex-basis became a 320px height: the banner took
	   half a phone screen, mostly blank (mobile re-test 2026-10-07). */
	.gvhc-cc-banner__body { flex: 0 0 auto; }
	.gvhc-cc-actions { justify-content: stretch; }
	.gvhc-cc-btn { flex: 1; text-align: center; }
}
