/*
 * Cookie banner, preferences panel and click-to-load embeds (D-06; owner: analytics).
 * New on the rebuilt site, so every rule is scoped to .ow-consent* / .ow-embed*. The look
 * follows the footer: navy #0f2947, white, the theme's fonts (inherited). The three banner
 * buttons have equal weight on purpose ("Reject all" as prominent as "Accept all").
 */

.ow-consent[hidden],
.ow-consent-panel[hidden],
.ow-consent-gpc[hidden] { display: none !important; }

/* In flow at the end of <body>: as tall as the fixed banner, so the footer (and its
   "Cookie settings" link) can always scroll into view above it. --ow-consent-h is set
   only while the banner shows. */
.ow-consent-spacer { height: var(--ow-consent-h, 0px); }
/* Whatever takes keyboard focus is scrolled clear of the banner (WCAG 2.4.11, AX-06). */
html.ow-consent-open { scroll-padding-bottom: var(--ow-consent-h, 0px); }

.ow-consent-banner {
	position: fixed;
	left: 0;
	right: 0;
	bottom: 0;
	z-index: 9000;
	background: #0f2947;
	color: #fff;
	border-top: 1px solid rgba(255, 255, 255, .35);
	box-shadow: 0 -6px 24px rgba(15, 41, 71, .25);
	font-size: .875rem;
	line-height: 1.5;
}
.ow-consent-banner__inner {
	max-width: 75rem;
	margin: 0 auto;
	padding: 1rem 1.25rem;
	display: flex;
	align-items: center;
	gap: 1rem 2rem;
	flex-wrap: wrap;
}
.ow-consent-banner__body { flex: 1 1 28rem; min-width: 0; }
.ow-consent-banner__text,
.ow-consent-gpc { margin: 0; font-size: .875rem; line-height: 1.5; color: inherit; }
.ow-consent-gpc { margin-top: .35rem; font-weight: 600; }

.ow-consent-link,
.ow-consent-link:visited { color: inherit; text-decoration: underline; text-underline-offset: 2px; }
.ow-consent-link:hover,
.ow-consent-link:focus { color: inherit; text-decoration-thickness: 2px; }

.ow-consent-actions { display: flex; gap: .5rem; flex-wrap: wrap; }

.ow-consent-btn {
	-webkit-appearance: none;
	appearance: none;
	margin: 0;
	min-height: 2.5rem;
	min-width: 7.5rem;
	padding: .55rem 1.1rem;
	border: 1px solid #fff;
	border-radius: 0;
	background: transparent;
	color: #fff;
	font: inherit;
	font-size: .875rem;
	font-weight: 600;
	line-height: 1.2;
	cursor: pointer;
	transition: background-color .2s ease-out, color .2s ease-out;
}
.ow-consent-btn:hover { background: #fff; color: #0f2947; }
.ow-consent-btn:focus-visible,
.ow-consent-close:focus-visible,
.ow-consent-link:focus-visible,
.ow-consent-switch input:focus-visible + .ow-consent-switch__track,
.ow-embed-ph button:focus-visible {
	outline: 3px solid #ffae00;
	outline-offset: 2px;
}
/* On the white panel the amber ring is too faint (1.9:1): navy there (keyboard focus only). */
.ow-consent-panel .ow-consent-btn:focus-visible,
.ow-consent-panel .ow-consent-close:focus-visible,
.ow-consent-panel .ow-consent-link:focus-visible,
.ow-consent-panel .ow-consent-switch input:focus-visible + .ow-consent-switch__track {
	outline-color: #0f2947;
}
.ow-consent-btn.is-dark { border-color: #0f2947; color: #0f2947; }
.ow-consent-btn.is-dark:hover { background: #0f2947; color: #fff; }

/* ── the panel ──────────────────────────────────────────────────────────── */
.ow-consent-panel {
	position: fixed;
	right: 1.25rem;
	bottom: 1.25rem;
	z-index: 10001;          /* above "Back to Top" (9999), which covered a row at 390 px */
	width: min(34rem, calc(100vw - 2.5rem));
	max-height: calc(100vh - 2.5rem);
	overflow-y: auto;
	padding: 1.5rem;
	background: #fff;
	color: #151515;
	border: 1px solid #ced3db;
	box-shadow: 0 18px 48px rgba(15, 41, 71, .28);
	font-size: .875rem;
	line-height: 1.5;
}
.ow-consent-panel__head { display: flex; align-items: center; justify-content: space-between; gap: 1rem; }
.ow-consent-panel__title {
	margin: 0;
	font-size: 1.25rem;
	line-height: 1.3;
	color: #0f2947;
}
.ow-consent-panel__title:focus { outline: none; }
.ow-consent-panel__intro { margin: .75rem 0 0; font-size: .875rem; }
.ow-consent-panel .ow-consent-gpc { color: #0f2947; }
.ow-consent-close {
	-webkit-appearance: none;
	appearance: none;
	width: 2.25rem;
	height: 2.25rem;
	margin: 0;
	padding: 0;
	border: 0;
	border-radius: 50%;
	background: #f3f8ff;
	color: #0f2947;
	font-size: 1.4rem;
	line-height: 1;
	cursor: pointer;
	flex: none;
}
.ow-consent-close:hover { background: #ced3db; }

.ow-consent-cats { list-style: none; margin: 1rem 0; padding: 0; }
.ow-consent-cat { margin: 0; padding: .9rem 0; border-top: 1px solid #ced3db; }
.ow-consent-cat:last-child { border-bottom: 1px solid #ced3db; }
.ow-consent-cat__head { display: flex; align-items: center; justify-content: space-between; gap: 1rem; }
.ow-consent-cat__title { margin: 0; font-size: 1rem; line-height: 1.3; color: #0f2947; }
.ow-consent-cat__text { margin: .35rem 0 0; font-size: .8125rem; color: #3a3a3a; }
.ow-consent-always { font-size: .75rem; font-weight: 600; color: #0a6b4f; white-space: nowrap; }
.ow-consent-status { margin: .75rem 0 0; min-height: 1.25em; font-size: .8125rem; color: #0a6b4f; }

/* Switch: a real checkbox (role=switch), drawn as a track and knob. */
.ow-consent-switch { position: relative; display: inline-flex; flex: none; margin: 0; cursor: pointer; }
.ow-consent-switch input {
	position: absolute;
	z-index: 1;
	opacity: 0;
	width: 100%;
	height: 100%;
	margin: 0;
	cursor: pointer;
}
.ow-consent-switch__track {
	display: block;
	width: 2.75rem;
	height: 1.5rem;
	border-radius: .75rem;
	background: #8a8a8a;
	position: relative;
	transition: background-color .2s ease-out;
}
.ow-consent-switch__track::after {
	content: "";
	position: absolute;
	top: .1875rem;
	left: .1875rem;
	width: 1.125rem;
	height: 1.125rem;
	border-radius: 50%;
	background: #fff;
	transition: transform .2s ease-out;
}
.ow-consent-switch input:checked + .ow-consent-switch__track { background: #0f2947; }
.ow-consent-switch input:checked + .ow-consent-switch__track::after { transform: translateX(1.25rem); }

/* Back to top sits above the banner while it shows. */
html.ow-consent-open #back-to-top { bottom: calc(var(--ow-consent-h, 0px) + 20px); }

@media screen and (max-width: 39.9375em) {
	.ow-consent-banner__inner { padding: .875rem 1rem; gap: .75rem; }
	.ow-consent-actions { width: 100%; }
	.ow-consent-actions .ow-consent-btn { flex: 1 1 0; min-width: 0; padding-left: .5rem; padding-right: .5rem; }
	.ow-consent-panel { right: .5rem; left: .5rem; bottom: .5rem; width: auto; max-height: calc(100vh - 1rem); padding: 1.25rem 1rem; }
}
/* Phones: a compact banner, so a first visit still shows the hero's button (RC-09: it was
   207 px, 36% of a 320x568 screen). The three buttons stay side by side and equal. */
@media screen and (max-width: 29.9375em) {
	.ow-consent-banner__inner { padding: .4rem .75rem .5rem; gap: .35rem; }
	.ow-consent-banner__text,
	.ow-consent-banner .ow-consent-gpc { font-size: .75rem; line-height: 1.3; }
	.ow-consent-actions { gap: .375rem; }
	.ow-consent-banner .ow-consent-btn { min-height: 2.125rem; padding-top: .3rem; padding-bottom: .3rem; font-size: .8125rem; }
}

/* ── click-to-load embeds ───────────────────────────────────────────────── */
.ow-embed-box { position: relative; display: inline-block; max-width: 100%; vertical-align: bottom; }
.ow-embed-ph {
	position: absolute;
	top: 0;
	left: 0;
	width: 100%;
	height: 100%;
	z-index: 1;
	box-sizing: border-box;
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	gap: .6rem;
	padding: .75rem 1rem;
	overflow: hidden;
	background-color: #0f2947;
	background-position: center;
	background-size: cover;
	background-repeat: no-repeat;
	color: #fff;
	text-align: center;
	font-size: .8125rem;
	line-height: 1.4;
	border-radius: inherit;
}
.ow-embed-ph::before {
	content: "";
	position: absolute;
	inset: 0;
	background: linear-gradient(0deg, rgba(15, 41, 71, .88) 0%, rgba(15, 41, 71, .45) 60%, rgba(15, 41, 71, .3) 100%);
}
.ow-embed-ph > * { position: relative; }
.ow-embed-ph__play {
	-webkit-appearance: none;
	appearance: none;
	display: inline-flex;
	align-items: center;
	gap: .6rem;
	margin: 0;
	padding: .6rem 1.2rem .6rem .7rem;
	border: 0;
	border-radius: 2rem;
	background: #fff;
	color: #0f2947;
	font: inherit;
	font-weight: 700;
	font-size: .9375rem;
	cursor: pointer;
	box-shadow: 0 4px 16px rgba(0, 0, 0, .25);
}
.ow-embed-ph__play:hover { background: #f3f8ff; }
.ow-embed-ph__icon {
	display: inline-grid;
	place-items: center;
	width: 2rem;
	height: 2rem;
	border-radius: 50%;
	background: #0f2947;
}
.ow-embed-ph__icon::after {
	content: "";
	margin-left: .2rem;
	border-style: solid;
	border-width: .45rem 0 .45rem .7rem;
	border-color: transparent transparent transparent #fff;
}
.ow-embed-ph__text { margin: 0; max-width: 34rem; text-shadow: 0 1px 2px rgba(0, 0, 0, .4); }
.ow-embed-ph__always {
	-webkit-appearance: none;
	appearance: none;
	margin: 0;
	padding: 0;
	border: 0;
	background: none;
	color: #fff;
	font: inherit;
	font-size: .75rem;
	text-decoration: underline;
	text-underline-offset: 2px;
	cursor: pointer;
}
/* Short players (the podcast) put everything on one line. */
.ow-embed-ph.is-compact { flex-direction: row; flex-wrap: wrap; gap: .5rem 1rem; }
.ow-embed-ph.is-compact .ow-embed-ph__text { flex: 1 1 14rem; text-align: left; }

@media (prefers-reduced-motion: reduce) {
	.ow-consent-btn,
	.ow-consent-switch__track,
	.ow-consent-switch__track::after { transition: none; }
}
