/**
 * The few things Divi can't do natively.
 *
 * Everything else — colours, type, spacing, cards, buttons, layout — lives in
 * Divi: global colours, number variables and element presets, edited in the
 * Visual Builder. Hooks used here: kb-header__menu, kb-trust,
 * kb-timeline, kb-ticks, kb-compare, kb-sticky, kb-toc, kb-masonry, kb-story, kb-footer-legal, kb-footer-credit,
 * kb-article, kb-article-col, kb-author, kb-share-module, kb-progress-card, kb-legal
 * (module CSS classes), kb-nav-cta (menu item class), and kb-latest-video,
 * kb-filter, kb-newsletter, the blog listing, post and legal page classes (shortcode and
 * policy markup).
 *
 * Divi only prints the global colour variables a page uses, so every var()
 * here carries its hex value as a fallback.
 */

/* Divi's antialiased smoothing renders Inter lighter than the design. */
body {
	-webkit-font-smoothing: auto;
	-moz-osx-font-smoothing: auto;
}

/* Anchor links land below the sticky header. */
html {
	scroll-padding-top: 90px;
}

/*
 * Divi drops the bottom padding of a text module's last paragraph but not of a
 * last heading. Doing the same for headings lets preset margins match the design.
 */
.et_pb_text_inner > :is(h1, h2, h3, h4, h5, h6):last-child {
	padding-bottom: 0;
}

/*
 * Divi 5.15 doesn't detect phone column widths set on hyphenated modules, so
 * its phone width CSS never loads. Same rule as Divi's own.
 */
@media only screen and (max-width: 767px) {
	.et_flex_module.et_flex_column_24_24_phone {
		width: 100%;
	}
}

/* Emphasis in headings is green italic. */
.et_pb_text_inner :is(h1, h2, h3) em {
	color: var(--gcid-kb-green, #3abf82);
	font-style: italic;
}

.preset--module--divi-text--kb-page-title-light h1 em {
	color: var(--gcid-kb-mint, #7aefc0);
}

/* Divi's reset leaves superscript and subscript full size (1/3rd), shifted by a relative offset. */
body sup,
body sub {
	position: static;
	font-size: 0.7em;
	line-height: 0;
}

body sup {
	vertical-align: super;
}

body sub {
	vertical-align: sub;
}

/* Divi's text module has no font setting for bold text inside a paragraph. */
.kb-trust strong {
	font-size: 15px;
	font-weight: 600;
}

/* --- Videos ------------------------------------------------------------------ */

/* [kb_latest_video] and [kb_youtube] click-to-play player (child theme inc/_latest-video.php). */
.kb-latest-video {
	position: relative;
	display: block;
	aspect-ratio: 16 / 9;
	overflow: hidden;
	border-radius: var(--gvid-kb-radius-large, 20px);
	background: #0f0d33;
	box-shadow: 0 18px 44px rgba(0, 0, 0, 0.3);
	color: #fff;
}

.kb-latest-video__play {
	display: block;
	width: 100%;
	height: 100%;
	padding: 0;
	border: 0;
	background: none;
	color: inherit;
	cursor: pointer;
}

.kb-latest-video img,
.kb-latest-video iframe {
	display: block;
	width: 100%;
	height: 100%;
	border: 0;
	object-fit: cover;
}

.kb-latest-video__icon {
	position: absolute;
	right: 20px;
	bottom: 20px;
	width: 60px;
	height: 60px;
	filter: drop-shadow(0 0 1px rgba(26, 22, 80, 0.5)) drop-shadow(0 2px 8px rgba(26, 22, 80, 0.45));
	transition: transform 0.2s;
}

/* Clicks on the notice's text fall through to the play button; only its link is clickable. */
.kb-latest-video__notice {
	position: absolute;
	left: 16px;
	bottom: 16px;
	max-width: calc(100% - 112px);
	margin: 0;
	padding: 6px 10px;
	border-radius: 8px;
	background: rgba(15, 13, 51, 0.72);
	color: rgba(255, 255, 255, 0.9);
	font-size: 0.7rem;
	line-height: 1.4;
	pointer-events: none;
}

.kb-latest-video .kb-latest-video__notice a {
	color: #fff;
	text-decoration: underline;
	pointer-events: auto;
}

.kb-latest-video__play:hover .kb-latest-video__icon,
.kb-latest-video__play:focus-visible .kb-latest-video__icon,
.kb-latest-video--link:hover .kb-latest-video__icon {
	transform: scale(1.08);
}

@media (max-width: 980px) {
	.kb-latest-video__icon {
		width: 52px;
		height: 52px;
	}
}

@media (max-width: 767px) {
	.kb-latest-video__icon {
		right: 14px;
		bottom: 14px;
		width: 44px;
		height: 44px;
	}

	.kb-latest-video__notice {
		left: 12px;
		bottom: 12px;
		max-width: calc(100% - 80px);
		padding: 5px 8px;
		font-size: 0.65rem;
	}
}

/* --- Timeline (About page) --------------------------------------------------- */

/* Divi has no connector line: draw it behind the 36px dots. */
.kb-timeline {
	position: relative;
}

.kb-timeline::before {
	content: "";
	position: absolute;
	top: 18px;
	bottom: 18px;
	left: 17px;
	width: 2px;
	background: linear-gradient(to bottom, var(--gcid-kb-blue, #3a6bcc), var(--gcid-kb-green, #3abf82));
}

.kb-timeline .et_pb_icon {
	position: relative;
	z-index: 1;
	flex-shrink: 0;
}

/* --- Packages page ------------------------------------------------------------ */

/* Text modules with the class "kb-ticks": list items get gradient tick bullets. */
.kb-ticks ul {
	display: flex;
	flex-direction: column;
	gap: 8px;
	margin: 0;
	padding: 0;
	list-style: none;
}

.kb-ticks li {
	position: relative;
	padding: 0 0 0 28px;
}

.kb-ticks li::before {
	content: "";
	position: absolute;
	top: 1px;
	left: 0;
	width: 18px;
	height: 18px;
	border-radius: 50%;
	background:
		url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 10 8'%3E%3Cpath d='M1 4l2.5 2.5L9 1' fill='none' stroke='white' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center / 10px no-repeat,
		linear-gradient(135deg, var(--gcid-kb-blue, #3a6bcc), var(--gcid-kb-green, #3abf82));
}

/*
 * Comparison table (a table in a text module; Divi has no table module).
 * Divi styles ".entry-content table/th/td", so these selectors need to outrank it.
 */
/* Relative so the header's screen-reader-only text stays inside the scroll box. */
.kb-compare {
	position: relative;
	overflow-x: auto;
	border: 1px solid var(--gcid-kb-border, #e0e4f4);
	border-radius: 14px;
}

div.kb-compare table.kb-compare__table {
	width: 100%;
	min-width: 640px;
	margin: 0;
	border: 0;
	border-collapse: collapse;
	font-size: 0.82rem;
	line-height: 1.5;
}

.kb-compare .kb-compare__table th,
.kb-compare .kb-compare__table td {
	padding: 13px 16px;
	border: 0;
	text-align: left;
	vertical-align: middle;
}

.kb-compare .kb-compare__table th {
	background: var(--gcid-kb-white, #fff);
	border-bottom: 2px solid var(--gcid-kb-border, #e0e4f4);
	color: var(--gcid-kb-navy, #1a1650);
	font-weight: 600;
}

.kb-compare .kb-compare__table td {
	background: var(--gcid-kb-white, #fff);
	color: var(--gcid-kb-body-text, #555);
}

.kb-compare tbody tr:nth-child(even) td {
	background: var(--gcid-kb-ice-1, #eef6ff);
}

.kb-compare tbody tr:hover td {
	background: var(--gcid-kb-ice-2, #e4f0fb);
}

.kb-compare th.kb-compare__price,
.kb-compare th.kb-compare__mark,
.kb-compare td.kb-compare__mark,
.kb-compare td.kb-compare__cta {
	text-align: center;
}

.kb-compare td.kb-compare__name {
	color: var(--gcid-kb-navy, #1a1650);
	font-weight: 600;
}

.kb-compare td.kb-compare__price {
	color: var(--gcid-kb-navy, #1a1650);
	font-size: 0.95rem;
	font-weight: 600;
	text-align: center;
}

.kb-compare .kb-yes {
	color: var(--gcid-kb-green, #3abf82);
	font-size: 0.95rem;
}

.kb-compare .kb-no {
	color: #ccc;
}

/* On tablets the table scrolls sideways, so keep each cell on one line. */
@media (max-width: 980px) {
	.kb-compare .kb-compare__table th,
	.kb-compare .kb-compare__table td {
		white-space: nowrap;
	}
}

.kb-compare .kb-btn-sm {
	display: inline-block;
	padding: 6px 16px;
	border-radius: 16px;
	background: linear-gradient(135deg, var(--gcid-kb-blue, #3a6bcc), var(--gcid-kb-green, #3abf82));
	color: #fff;
	font-size: 0.75rem;
	font-weight: 500;
	white-space: nowrap;
	transition: opacity 0.2s;
}

.kb-compare .kb-btn-sm:hover {
	opacity: 0.88;
}

/* Phones: each row becomes a card, one "label  value" line per column. */
@media (max-width: 767px) {
	.kb-compare {
		overflow: visible;
		border: 0;
		border-radius: 0;
	}

	div.kb-compare table.kb-compare__table,
	.kb-compare .kb-compare__table tr,
	.kb-compare .kb-compare__table td {
		display: block;
		min-width: 0;
	}

	.kb-compare .kb-compare__table thead {
		display: none;
	}

	.kb-compare .kb-compare__table tbody {
		display: flex;
		flex-direction: column;
		gap: 12px;
	}

	.kb-compare .kb-compare__table tr {
		overflow: hidden;
		border: 1px solid var(--gcid-kb-border, #e0e4f4);
		border-radius: 14px;
		background: var(--gcid-kb-white, #fff);
	}

	.kb-compare .kb-compare__table td,
	.kb-compare tbody tr:nth-child(even) td,
	.kb-compare tbody tr:hover td {
		display: grid;
		grid-template-columns: 104px minmax(0, 1fr);
		gap: 12px;
		align-items: center;
		padding: 10px 18px;
		border-top: 1px solid var(--gcid-kb-border, #e0e4f4);
		background: var(--gcid-kb-white, #fff);
		text-align: left;
		white-space: normal;
	}

	.kb-compare .kb-compare__table td::before {
		content: attr(data-label);
		color: var(--gcid-kb-navy, #1a1650);
		font-size: 0.82rem;
		font-weight: 600;
	}

	.kb-compare .kb-compare__table td.kb-compare__name {
		display: block;
		padding: 14px 18px;
		border-top: 0;
		background: var(--gcid-kb-ice-1, #eef6ff);
		font-size: 0.95rem;
	}

	.kb-compare .kb-compare__table td.kb-compare__cta {
		display: block;
		padding: 14px 18px;
	}

	.kb-compare .kb-compare__table td.kb-compare__name::before,
	.kb-compare .kb-compare__table td.kb-compare__cta::before {
		content: none;
	}

	.kb-compare .kb-btn-sm {
		display: block;
		padding: 10px 16px;
		font-size: 0.82rem;
		text-align: center;
	}
}

/* --- Practice information ----------------------------------------------------- */

/* Sidebar column that follows the reader down the page (desktop only). */
@media (min-width: 981px) {
	.kb-sticky {
		position: sticky;
		top: 90px;
	}
}

/* "On this page" links: one per line, divided. */
.kb-toc h4 {
	padding-bottom: 8px;
}

.kb-toc ul {
	margin: 0;
	padding: 0;
	list-style: none;
}

.kb-toc li {
	border-bottom: 1px solid #f0f0f5;
}

.kb-toc li:last-child {
	border-bottom: 0;
}

.kb-toc a {
	display: block;
	padding: 6px 0;
	transition: color 0.2s;
}

/* --- Success stories ---------------------------------------------------------- */

/* Topic filter ([kb_story_filter]). */
.kb-filter {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 10px;
}

.kb-filter__label {
	margin-right: 4px;
	color: #888;
	font-size: 12px;
	font-weight: 500;
}

.kb-filter__btn {
	padding: 6px 14px;
	border: 1.5px solid var(--gcid-kb-border, #e0e4f4);
	border-radius: 20px;
	background: #fff;
	color: #555;
	font: inherit;
	font-size: 12px;
	line-height: 1.5;
	cursor: pointer;
	transition: color 0.2s, background 0.2s, border-color 0.2s;
}

.kb-filter__btn:hover,
.kb-filter__btn.is-active {
	border-color: transparent;
	background: linear-gradient(135deg, var(--gcid-kb-blue, #3a6bcc), var(--gcid-kb-green, #3abf82));
	color: #fff;
}

/* Story author: name directly above location. */
.preset--module--divi-text--kb-story-author h4 {
	padding-bottom: 2px;
}

/* Divi's layout display rules outrank the hidden attribute. */
.kb-story[hidden] {
	display: none !important;
}

/* Masonry: cards flow down CSS columns instead of Divi's flex column. */
.et_pb_column.kb-masonry {
	display: block !important;
	columns: 3;
	column-gap: 18px;
}

.et_pb_column.kb-masonry > .et_pb_module {
	margin-bottom: 18px !important;
	break-inside: avoid;
	transition: box-shadow 0.2s;
}

.et_pb_column.kb-masonry > .et_pb_module:hover {
	box-shadow: 0 4px 20px rgba(58, 107, 204, 0.08);
}

@media (max-width: 980px) {
	.et_pb_column.kb-masonry {
		columns: 2;
	}
}

@media (max-width: 767px) {
	.et_pb_column.kb-masonry {
		columns: 1;
	}
}

/* --- Header menu ----------------------------------------------------------- */

/* Divi has no menu item spacing setting. */
.kb-header__menu .et-menu {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: flex-end;
	gap: 28px;
}

.kb-header__menu .et_pb_menu__menu .et-menu > li {
	margin: 0;
	padding: 0;
}

.kb-header__menu .et_pb_menu__menu .et-menu > li > a {
	padding-bottom: 0;
}

.kb-header__menu .et_pb_menu__menu .et-menu > li.menu-item-has-children > a {
	padding-right: 18px;
}

.kb-header__menu .et_pb_menu__menu .et-menu > li.menu-item-has-children > a::after {
	right: -2px;
}

/* Give a menu item the CSS class "kb-nav-cta" to render it as the gradient pill. */
.kb-header__menu .et_pb_menu__menu .et-menu > li.kb-nav-cta > a {
	margin: -8px 0;
	padding: 8px 18px;
	border-radius: 20px;
	background: linear-gradient(135deg, var(--gcid-kb-blue-bright, #4a9eff) 0%, var(--gcid-kb-green, #3abf82) 100%);
	color: var(--gcid-kb-white, #ffffff) !important;
	font-weight: 500;
	transition: opacity 0.2s;
}

.kb-header__menu .et_pb_menu__menu .et-menu > li.kb-nav-cta > a:hover {
	opacity: 0.9;
}

@media (max-width: 980px) {
	/* Anchor the dropdown to the header section so it spans the full width. */
	.et-l--header .et_pb_section {
		position: relative;
		z-index: 99;
	}

	.et-l--header .et_pb_row,
	.et-l--header .et_pb_column,
	.kb-header__menu,
	.kb-header__menu .et_pb_menu_inner_container,
	.kb-header__menu .et_pb_menu__wrap,
	.kb-header__menu .et_mobile_nav_menu,
	.kb-header__menu .mobile_nav {
		position: static;
	}

	.kb-header__menu .et_mobile_menu {
		top: 100%;
		right: 0;
		left: 0;
		width: 100%;
		padding: 6px 0 14px;
		border-top: 3px solid var(--gcid-kb-green, #3abf82);
		border-radius: 0 0 16px 16px;
		box-shadow: 0 16px 40px rgba(26, 22, 80, 0.12);
	}

	.kb-header__menu .et_mobile_menu li a {
		padding: 12px 5%;
		border-bottom: 1px solid var(--gcid-kb-border, #e0e4f4);
		font-size: 0.95rem;
	}

	.kb-header__menu .et_mobile_menu .sub-menu li a {
		padding-left: calc(5% + 16px);
		font-size: 0.9rem;
	}

	.kb-header__menu .et_mobile_menu li.kb-nav-cta a {
		margin: 14px 5% 4px;
		padding: 12px 24px;
		border: 0;
		border-radius: 24px;
		background: linear-gradient(135deg, var(--gcid-kb-blue-bright, #4a9eff) 0%, var(--gcid-kb-green, #3abf82) 100%);
		color: var(--gcid-kb-white, #ffffff) !important;
		font-weight: 500;
		text-align: center;
	}
}

/* --- Blog listing (inc/_blog.php shortcodes) ------------------------------------ */

.kb-search {
	display: flex;
	align-items: center;
	gap: 8px;
	min-width: 260px;
	padding: 8px 8px 8px 18px;
	border: 1.5px solid var(--gcid-kb-border, #e0e4f4);
	border-radius: 28px;
	background: #fff;
	box-shadow: 0 2px 12px rgba(58, 107, 204, 0.08);
	transition: border-color 0.2s;
}

.kb-search:focus-within {
	border-color: var(--gcid-kb-blue, #3a6bcc);
}

.kb-search__input {
	flex: 1;
	min-width: 0;
	padding: 0;
	border: 0;
	outline: 0;
	background: transparent;
	color: #444;
	font: inherit;
	font-size: 13px;
	-webkit-appearance: none;
	appearance: none;
}

.kb-search__input::placeholder {
	color: #999;
}

.kb-search__button,
.kb-post__badge {
	background: linear-gradient(135deg, var(--gcid-kb-blue, #3a6bcc), var(--gcid-kb-green, #3abf82));
	color: #fff;
}

.kb-search__button {
	padding: 7px 16px;
	border: 0;
	border-radius: 20px;
	font: inherit;
	font-size: 12px;
	font-weight: 500;
	white-space: nowrap;
	cursor: pointer;
}

/* Category tabs: scroll sideways on small screens rather than wrap. */
/* contain stops the tab strip widening Divi's grid column, so it scrolls instead. */
.kb-tabs {
	display: flex;
	overflow-x: auto;
	scrollbar-width: none;
	contain: inline-size;
}

.kb-tabs__tab {
	padding: 16px 20px;
	border-bottom: 2px solid transparent;
	color: #888;
	font-size: 13px;
	white-space: nowrap;
	transition: color 0.2s, border-color 0.2s;
}

.kb-tabs__tab:hover,
.kb-tabs__tab.is-active {
	color: var(--gcid-kb-blue, #3a6bcc);
}

.kb-tabs__tab.is-active {
	border-bottom-color: var(--gcid-kb-blue, #3a6bcc);
	font-weight: 500;
}

.kb-tabs__count {
	margin-left: 6px;
	padding: 2px 7px;
	border-radius: 10px;
	background: var(--gcid-kb-sky, #e8f0fe);
	font-size: 11px;
	font-weight: 500;
}

/* Post cards: the latest post wide, then two columns. */
.kb-posts__grid {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 20px;
}

.kb-post {
	display: flex;
	flex-direction: column;
	overflow: hidden;
	border: 1px solid var(--gcid-kb-border, #e0e4f4);
	border-radius: 16px;
	background: #fff;
	transition: box-shadow 0.2s, transform 0.2s;
}

.kb-post:hover {
	box-shadow: 0 4px 20px rgba(58, 107, 204, 0.09);
	transform: translateY(-2px);
}

.kb-post__media {
	position: relative;
	display: block;
	height: 160px;
	overflow: hidden;
}

.kb-post__img,
.kb-post__placeholder,
.kb-recent__img,
.kb-recent__placeholder {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
}

/* Posts without a featured image. */
.kb-post__placeholder--0,
.kb-recent__placeholder {
	background: linear-gradient(135deg, #1a2a6c, #2a5a8c);
}

.kb-post__placeholder--1 {
	background: linear-gradient(135deg, #0f3a28, #1a6050);
}

.kb-post__placeholder--2 {
	background: linear-gradient(135deg, #2a1a6c, #1a4a8a);
}

.kb-post__placeholder--3 {
	background: linear-gradient(135deg, #1a4a2c, #0a2a5c);
}

.kb-post__badge {
	position: absolute;
	top: 16px;
	left: 16px;
	padding: 4px 10px;
	border-radius: 10px;
	font-size: 10px;
	font-weight: 600;
	line-height: 1.5;
	letter-spacing: 0.04em;
}

.kb-post__body {
	display: flex;
	flex: 1;
	flex-direction: column;
	gap: 8px;
	padding: 20px;
}

.kb-post__cat {
	width: fit-content;
	padding: 3px 10px;
	border-radius: 10px;
	background: var(--gcid-kb-sky, #e8f0fe);
	color: var(--gcid-kb-blue, #3a6bcc);
	font-size: 11px;
	font-weight: 500;
	line-height: 1.5;
}

.kb-post__cat--bwrt {
	background: var(--gcid-kb-mist-blue, #f0f4ff);
	color: var(--gcid-kb-indigo, #3a4acc);
}

.kb-post__cat--pain {
	background: var(--gcid-kb-mist-green, #e8f7f0);
	color: var(--gcid-kb-video-green, #1a8060);
}

.kb-post__cat--anxiety-stress {
	background: var(--gcid-kb-mist-rose, #fff0f4);
	color: var(--gcid-kb-rose, #c0386a);
}

.kb-post__cat--fears-phobias {
	background: var(--gcid-kb-amber-tint, #fff8e0);
	color: var(--gcid-kb-amber, #a07000);
}

.kb-post__cat--mindset {
	background: var(--gcid-kb-ocean-tint, #f0f8ff);
	color: var(--gcid-kb-ocean, #0070a0);
}

.kb-post__cat--client-stories {
	background: var(--gcid-kb-mist-green, #e8f7f0);
	color: var(--gcid-kb-forest, #0f3a28);
}

.kb-post__cat--karens-story {
	background: var(--gcid-kb-peach, #fff0e8);
	color: #a4512a;
}

.kb-post__cat--news {
	background: var(--gcid-kb-tint, #f8f9ff);
	color: #555;
}

.kb-post .kb-post__title {
	padding: 0;
	color: var(--gcid-kb-navy, #1a1650);
	font-family: "Playfair Display", Georgia, serif;
	font-size: 16px;
	font-weight: 500;
	line-height: 1.4;
}

.kb-post__title a {
	color: inherit;
	transition: color 0.2s;
}

.kb-post__title a:hover {
	color: var(--gcid-kb-blue, #3a6bcc);
}

.kb-post .kb-post__excerpt {
	flex: 1;
	padding: 0;
	color: #666;
	font-size: 12px;
	line-height: 1.7;
}

.kb-post__footer {
	display: flex;
	align-items: center;
	justify-content: space-between;
	margin-top: 8px;
}

.kb-post .kb-post__meta {
	padding: 0;
	color: #888;
	font-size: 11px;
}

.kb-post__more {
	color: var(--gcid-kb-blue, #3a6bcc);
	font-size: 12px;
	font-weight: 500;
}

.kb-post__more:hover {
	text-decoration: underline;
}

.kb-post--featured {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	margin-bottom: 40px;
	border-radius: 20px;
}

.kb-post--featured:hover {
	box-shadow: 0 6px 32px rgba(58, 107, 204, 0.1);
	transform: none;
}

.kb-post--featured .kb-post__media {
	height: auto;
	min-height: 280px;
}

.kb-post--featured .kb-post__img {
	position: absolute;
	inset: 0;
}

.kb-post--featured .kb-post__body {
	justify-content: center;
	gap: 12px;
	padding: 32px;
}

.kb-post--featured .kb-post__title {
	font-size: 20px;
	line-height: 1.35;
}

.kb-post--featured .kb-post__excerpt {
	flex: none;
	color: #555;
	font-size: 13px;
	line-height: 1.75;
}

.kb-post--featured .kb-post__meta {
	font-size: 12px;
}

.kb-post--featured .kb-post__more {
	margin-top: 4px;
	font-size: 13px;
}

.kb-posts--empty {
	padding: 32px;
	border-radius: 16px;
	background: var(--gcid-kb-tint, #f8f9ff);
	text-align: center;
}

.kb-pagination {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 8px;
	margin-top: 40px;
}

.kb-pagination .page-numbers {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 36px;
	height: 36px;
	padding: 0 8px;
	border: 1.5px solid var(--gcid-kb-border, #e0e4f4);
	border-radius: 10px;
	background: #fff;
	color: #555;
	font-size: 13px;
	transition: color 0.2s, border-color 0.2s;
}

.kb-pagination .page-numbers.current {
	border-color: transparent;
	background: linear-gradient(135deg, var(--gcid-kb-blue, #3a6bcc), var(--gcid-kb-green, #3abf82));
	color: #fff;
}

.kb-pagination a.page-numbers:hover {
	border-color: var(--gcid-kb-blue, #3a6bcc);
	color: var(--gcid-kb-blue, #3a6bcc);
}

.kb-pagination .dots {
	min-width: 0;
	padding: 0;
	border: 0;
	color: #bbb;
}

.kb-pagination .prev,
.kb-pagination .next {
	padding: 0 14px;
	font-size: 12px;
}

/* Sidebar: topics and recent articles. */
.et_pb_text_inner ul.kb-topics,
.et_pb_text_inner ul.kb-recent {
	margin: 10px 0 0;
	padding: 0;
	list-style: none;
}

.kb-topics {
	display: flex;
	flex-direction: column;
	gap: 6px;
}

.kb-topics a {
	display: flex;
	align-items: center;
	justify-content: space-between;
	padding: 8px 12px;
	border-radius: 10px;
	background: var(--gcid-kb-tint, #f8f9ff);
	color: #444;
	font-size: 13px;
	transition: color 0.2s, background 0.2s;
}

.kb-topics a:hover,
.kb-topics a[aria-current] {
	background: var(--gcid-kb-sky, #e8f0fe);
	color: var(--gcid-kb-blue, #3a6bcc);
}

.kb-topics__count {
	padding: 2px 8px;
	border: 1px solid var(--gcid-kb-border, #e0e4f4);
	border-radius: 10px;
	background: #fff;
	color: #888;
	font-size: 11px;
	line-height: 1.5;
}

.kb-recent li {
	border-bottom: 1px solid #f0f0f5;
}

.kb-recent li:last-child {
	border-bottom: 0;
}

.kb-recent a {
	display: flex;
	align-items: flex-start;
	gap: 12px;
	padding: 10px 0;
}

.kb-recent__thumb {
	flex: 0 0 44px;
	height: 44px;
	overflow: hidden;
	border-radius: 8px;
}

.kb-recent__text {
	display: flex;
	flex-direction: column;
	gap: 2px;
}

.kb-recent__title {
	color: #444;
	font-size: 12px;
	font-weight: 500;
	line-height: 1.4;
	transition: color 0.2s;
}

.kb-recent a:hover .kb-recent__title {
	color: var(--gcid-kb-blue, #3a6bcc);
}

.kb-recent__date {
	color: #888;
	font-size: 11px;
	line-height: 1.4;
}

/* Newsletter sign-up ([kb_newsletter]). */
.kb-newsletter {
	text-align: center;
}

.kb-newsletter__form {
	display: flex;
	gap: 8px;
}

.kb-newsletter .kb-newsletter__input {
	flex: 1;
	min-width: 0;
	padding: 12px 18px;
	border: 0;
	border-radius: 24px;
	outline: 0;
	background: #fff;
	color: var(--gcid-kb-navy, #1a1650);
	font: inherit;
	font-size: 13px;
}

.kb-newsletter .kb-newsletter__input:focus-visible {
	box-shadow: 0 0 0 3px var(--gcid-kb-mint, #7aefc0);
}

.kb-newsletter__input::placeholder {
	color: #999;
}

.kb-newsletter .kb-newsletter__button {
	padding: 12px 22px;
	border: 0;
	border-radius: 24px;
	background: linear-gradient(135deg, var(--gcid-kb-blue, #3a6bcc), var(--gcid-kb-green, #3abf82));
	color: #fff;
	font: inherit;
	font-size: 13px;
	font-weight: 500;
	white-space: nowrap;
	cursor: pointer;
}

.kb-newsletter__trap {
	position: absolute;
	left: -9999px;
}

.kb-newsletter .kb-newsletter__note {
	margin-top: 12px;
	padding: 0;
	color: rgba(255, 255, 255, 0.55);
	font-size: 11px;
	line-height: 1.6;
}

.kb-newsletter__note a {
	color: inherit;
	text-decoration: underline;
}

.kb-newsletter .kb-newsletter__notice {
	margin-bottom: 16px;
	padding: 12px 18px;
	border-radius: 14px;
	background: rgba(255, 255, 255, 0.1);
	color: #fff;
	font-size: 14px;
}

.kb-newsletter__notice--error {
	background: rgba(240, 120, 140, 0.2);
}

/* An odd last social button takes the full row. */
.preset--module--divi-group--kb-group-social > :last-child:nth-child(odd) {
	grid-column: 1 / -1;
}

@media (max-width: 767px) {
	.kb-search {
		min-width: 0;
	}

	.kb-tabs__tab {
		padding: 14px 14px;
	}

	.kb-posts__grid,
	.kb-post--featured {
		grid-template-columns: minmax(0, 1fr);
	}

	.kb-post--featured .kb-post__media {
		min-height: 200px;
	}

	.kb-post--featured .kb-post__body {
		padding: 24px 20px;
	}

	.kb-newsletter__form {
		flex-direction: column;
	}
}

/* --- Blog post ([kb_post_*] shortcodes, kb-article, kb-author) ------------------ */

.kb-breadcrumb {
	display: flex;
	align-items: center;
	gap: 6px;
	min-width: 0;
	color: #aaa;
	font-size: 12px;
	line-height: 1.5;
}

.kb-breadcrumb a {
	color: #999;
	white-space: nowrap;
	transition: color 0.2s;
}

.kb-breadcrumb a:hover {
	color: var(--gcid-kb-blue, #3a6bcc);
}

.kb-breadcrumb__sep {
	color: #ddd;
}

.kb-breadcrumb__current {
	overflow: hidden;
	color: #555;
	text-overflow: ellipsis;
	white-space: nowrap;
}

a.kb-post__cat {
	display: inline-block;
	padding: 4px 12px;
}

/* Most posts have no excerpt; drop the empty module and its gap. */
.kb-post-intro-module:not(:has(p)) {
	display: none;
}

.kb-byline {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 10px 14px;
	color: #999;
	font-size: 12px;
	line-height: 1.4;
}

.kb-byline__author {
	display: flex;
	align-items: center;
	gap: 10px;
}

.kb-byline__author > span {
	display: flex;
	flex-direction: column;
}

.kb-byline__avatar {
	width: 36px;
	height: 36px;
	border-radius: 50%;
	object-fit: cover;
	object-position: center 25%;
}

.kb-byline__name {
	color: var(--gcid-kb-navy, #1a1650);
	font-size: 13px;
	font-weight: 600;
}

.kb-byline__role {
	color: #999;
	font-size: 11px;
}

.kb-byline__divider {
	width: 1px;
	height: 28px;
	background: var(--gcid-kb-border, #e0e4f4);
}

.kb-byline__item {
	display: inline-flex;
	align-items: center;
	gap: 5px;
}

.kb-byline__item svg {
	color: #bbb;
}

/* Featured image: the whole image (many are quote graphics) over a blurred copy of itself. */
.kb-post-hero {
	position: relative;
	isolation: isolate;
	margin: 0;
	overflow: hidden;
	aspect-ratio: 4 / 3;
	border-radius: 20px;
	background-color: var(--gcid-kb-navy, #1a1650);
}

.kb-post-hero::before {
	content: "";
	position: absolute;
	inset: -30px;
	z-index: -1;
	background: var(--kb-hero-bg) center / cover;
	filter: blur(24px);
	opacity: 0.85;
}

.kb-post-hero--placeholder::before {
	content: none;
}

.kb-post-hero__img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: contain;
}

.kb-post-hero__mark {
	position: absolute;
	top: 50%;
	left: 50%;
	width: 32%;
	height: auto;
	transform: translate(-50%, -50%);
}

/* Share buttons: a row under the article, or a bar beside it on wide screens. */
.kb-share {
	position: relative;
	display: flex;
	align-items: center;
	gap: 10px;
}

.kb-share__label {
	color: #aaa;
	font-size: 10px;
	letter-spacing: 0.06em;
	text-transform: uppercase;
}

.kb-share__btn {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 38px;
	height: 38px;
	padding: 0;
	border: 1.5px solid var(--gcid-kb-border, #e0e4f4);
	border-radius: 10px;
	background: #fff;
	color: #555;
	cursor: pointer;
	transition: border-color 0.2s, color 0.2s;
}

.kb-share__btn:hover,
.kb-share__btn.is-copied {
	border-color: var(--gcid-kb-blue, #3a6bcc);
	color: var(--gcid-kb-blue, #3a6bcc);
}

.kb-share__status {
	color: var(--gcid-kb-green, #3abf82);
	font-size: 11px;
	white-space: nowrap;
}

.et_pb_column.kb-article-col > .kb-share-module {
	order: 1;
	margin-top: 28px !important;
}

.et_pb_column.kb-article-col > .kb-author {
	order: 2;
}

@media (min-width: 1300px) {
	/* Zero height so it takes no room in the column, sticky so it follows the article. */
	.et_pb_column.kb-article-col > .kb-share-module {
		position: sticky !important;
		top: 160px;
		z-index: 5;
		order: 0;
		width: 38px;
		height: 0;
		margin: 0 0 0 -86px !important;
		overflow: visible;
	}

	.kb-share {
		flex-direction: column;
	}

	.kb-share__label {
		margin-bottom: 4px;
		transform: rotate(180deg);
		writing-mode: vertical-rl;
	}

	.kb-share__status {
		position: absolute;
		bottom: 10px;
		left: 48px;
	}
}

/* Article text (the Post Content module's fonts are set in the template). */
.kb-article p {
	padding-bottom: 1.4em;
}

.kb-article h2 {
	padding: 0.6em 0 0.55em;
}

.kb-article h3 {
	padding: 0.6em 0 0.5em;
}

.kb-article strong,
.kb-article b {
	color: var(--gcid-kb-navy, #1a1650);
	font-weight: 600;
}

.kb-article ul,
.kb-article ol {
	margin: 0 0 1.4em;
	padding: 0 0 0 22px;
}

.kb-article ul {
	list-style: disc;
}

.kb-article li {
	margin-bottom: 6px;
}

.kb-article blockquote {
	margin: 28px 0;
	padding: 20px 24px;
	border-left: 3px solid var(--gcid-kb-green, #3abf82);
	border-radius: 0 16px 16px 0;
	background: linear-gradient(160deg, #f0f4ff, #e8f7f0);
	color: var(--gcid-kb-navy, #1a1650);
	font-family: "Playfair Display", Georgia, serif;
	font-size: 18px;
	font-style: italic;
	line-height: 1.65;
}

.kb-article blockquote p:last-child {
	padding-bottom: 0;
}

.kb-article img {
	max-width: 100%;
	height: auto;
	border-radius: 12px;
}

.kb-article iframe {
	display: block;
	width: 100%;
	height: auto;
	aspect-ratio: 16 / 9;
	margin-bottom: 1.4em;
	border: 0;
	border-radius: 12px;
}

/* Booking box added halfway through long posts. */
.kb-article-cta {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-between;
	gap: 16px;
	margin: 8px 0 32px;
	padding: 28px;
	border-radius: 16px;
	background: linear-gradient(135deg, var(--gcid-kb-blue, #3a6bcc), var(--gcid-kb-green, #3abf82));
}

.kb-article .kb-article-cta p {
	max-width: 380px;
	padding: 0;
	color: rgba(255, 255, 255, 0.88);
	font-size: 13px;
	line-height: 1.6;
}

.kb-article .kb-article-cta .kb-article-cta__title {
	margin-bottom: 6px;
	color: #fff;
	font-family: "Playfair Display", Georgia, serif;
	font-size: 18px;
	font-weight: 500;
}

.kb-article .kb-article-cta__button {
	padding: 10px 22px;
	border-radius: 24px;
	background: #fff;
	color: var(--gcid-kb-blue, #3a6bcc);
	font-size: 13px;
	font-weight: 600;
	white-space: nowrap;
	transition: background 0.2s;
}

.kb-article .kb-article-cta__button:hover {
	background: var(--gcid-kb-mist-blue, #f0f4ff);
	color: var(--gcid-kb-blue, #3a6bcc);
}

.kb-post-tags {
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
	padding-top: 28px;
	border-top: 1px solid var(--gcid-kb-border, #e0e4f4);
}

.kb-post-tags__tag {
	padding: 4px 12px;
	border-radius: 12px;
	background: var(--gcid-kb-mist-blue, #f0f4ff);
	color: var(--gcid-kb-blue, #3a6bcc);
	font-size: 12px;
	line-height: 1.5;
	transition: background 0.2s;
}

.kb-post-tags__tag:hover {
	background: #e0e8ff;
}

.et_pb_column.kb-article-col > .kb-post-tags-module {
	margin-top: 8px !important;
}

.et_pb_column.kb-article-col > .kb-author {
	margin-top: 40px !important;
}

.kb-author > .et_pb_image {
	flex-shrink: 0;
}

/* Sidebar */
.kb-progress .kb-progress__label {
	display: flex;
	justify-content: space-between;
	padding: 0;
	color: #888;
	font-size: 12px;
}

.kb-progress__bar {
	height: 4px;
	margin: 10px 0 8px;
	overflow: hidden;
	border-radius: 2px;
	background: #f0f0f5;
}

.kb-progress__fill {
	display: block;
	height: 100%;
	background: linear-gradient(90deg, var(--gcid-kb-blue, #3a6bcc), var(--gcid-kb-green, #3abf82));
	transform: scaleX(0);
	transform-origin: left;
}

.kb-progress .kb-progress__left {
	color: #999;
	font-size: 12px;
}

.kb-newsletter--compact {
	text-align: left;
}

.kb-newsletter--compact .kb-newsletter__form {
	flex-direction: column;
}

.kb-newsletter--compact .kb-newsletter__input {
	padding: 10px 16px;
}

.kb-newsletter--compact .kb-newsletter__button {
	padding: 10px;
}

.kb-newsletter--compact .kb-newsletter__note {
	margin-top: 10px;
	color: rgba(255, 255, 255, 0.45);
}

.kb-posts__grid--3 {
	grid-template-columns: repeat(3, minmax(0, 1fr));
}

/*
 * The whole sidebar is taller than most screens, so only the progress card (last)
 * sticks: the sidebar runs the full height of the article and the card follows the reader.
 */
@media (min-width: 981px) {
	.et_pb_column.kb-post-sidebar {
		align-self: stretch;
	}

	.et_pb_column.kb-post-sidebar > .kb-progress-card {
		position: sticky !important;
		top: 90px;
	}
}

@media (max-width: 980px) {
	/* The sidebar sits under the article here, so progress means nothing. */
	.kb-progress-card {
		display: none !important;
	}
}

@media (max-width: 767px) {
	.kb-byline__author {
		flex-basis: 100%;
	}

	.kb-byline__divider {
		display: none;
	}

	.kb-posts__grid--3 {
		grid-template-columns: minmax(0, 1fr);
	}

	.kb-article-cta {
		padding: 24px 20px;
	}
}

/* --- Legal pages (build/pages/legal.php, inc/_legal.php) ----------------------- */

/* Hero: "Last updated" with a calendar icon, then the site the policy covers. */
.kb-legal-meta {
	display: flex;
	flex-wrap: wrap;
	gap: 6px 20px;
}

.kb-legal-meta__updated::before,
.kb-legal-reviewed::before {
	content: "";
	display: inline-block;
	flex-shrink: 0;
	width: 13px;
	height: 13px;
	margin-right: 6px;
	vertical-align: -2px;
	background-color: #bbb;
	-webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='black' stroke-width='1.2' stroke-linecap='round'%3E%3Crect x='1' y='2' width='14' height='13' rx='2'/%3E%3Cpath d='M1 6h14M5 1v3M11 1v3'/%3E%3C/svg%3E") center / contain no-repeat;
	mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='black' stroke-width='1.2' stroke-linecap='round'%3E%3Crect x='1' y='2' width='14' height='13' rx='2'/%3E%3Cpath d='M1 6h14M5 1v3M11 1v3'/%3E%3C/svg%3E") center / contain no-repeat;
}

/* Tabs to the other legal pages (pill links; the current page is filled). */
.kb-legal-tabs {
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
}

.kb-legal-tabs .kb-legal-tab {
	padding: 6px 16px;
	border: 1.5px solid var(--gcid-kb-border, #e0e4f4);
	border-radius: 20px;
	background: var(--gcid-kb-white, #fff);
	color: var(--gcid-kb-body-text, #555);
	font-size: 0.75rem;
	line-height: 1.5;
	transition: border-color 0.2s, color 0.2s;
}

.kb-legal-tabs .kb-legal-tab:hover {
	border-color: var(--gcid-kb-blue, #3a6bcc);
	color: var(--gcid-kb-blue, #3a6bcc);
}

.kb-legal-tabs .kb-legal-tab.is-active {
	border-color: transparent;
	background: linear-gradient(135deg, var(--gcid-kb-blue, #3a6bcc), var(--gcid-kb-green, #3abf82));
	color: var(--gcid-kb-white, #fff);
}

/* "Last reviewed" badge above the policy, with a clock icon. */
.kb-legal .kb-legal-reviewed {
	display: flex;
	align-items: center;
	width: fit-content;
	margin-bottom: 28px;
	padding: 4px 12px;
	border-radius: 12px;
	background: var(--gcid-kb-mist-blue, #f0f4ff);
	color: var(--gcid-kb-blue, #3a6bcc);
	font-size: 0.7rem;
	line-height: 1.5;
}

.kb-legal .kb-legal-reviewed::before {
	width: 12px;
	height: 12px;
	background-color: currentColor;
	-webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='black' stroke-width='1.2' stroke-linecap='round'%3E%3Ccircle cx='8' cy='8' r='6.5'/%3E%3Cpath d='M8 4.5v4l2.5 1.5'/%3E%3C/svg%3E");
	mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='black' stroke-width='1.2' stroke-linecap='round'%3E%3Ccircle cx='8' cy='8' r='6.5'/%3E%3Cpath d='M8 4.5v4l2.5 1.5'/%3E%3C/svg%3E");
}

/* Policy text: sections divided by a rule; Divi has no per-heading borders. */
.kb-legal h2 {
	margin: 36px 0 12px;
	padding: 36px 0 0;
	border-top: 1px solid #e8eaf4;
}

.kb-legal h2:first-child {
	margin-top: 0;
	padding-top: 0;
	border-top: 0;
}

.kb-legal h3 {
	margin: 20px 0 8px;
	padding: 0;
}

.kb-legal ul {
	margin: 0 0 14px;
	padding: 0 0 0 20px;
	list-style: disc;
}

.kb-legal li {
	margin-bottom: 6px;
}

/* Divi drops the last paragraph's spacing even when a list follows it. */
.kb-legal p:last-of-type:not(:last-child) {
	padding-bottom: 1em;
}

.kb-legal strong {
	color: var(--gcid-kb-navy, #1a1650);
	font-weight: 600;
}

.kb-legal-note {
	margin: 16px 0 24px;
	padding: 14px 18px;
	border-left: 3px solid var(--gcid-kb-blue, #3a6bcc);
	border-radius: 0 12px 12px 0;
	background: var(--gcid-kb-tint, #f8f9ff);
	color: #444;
	font-size: 0.82rem;
	line-height: 1.75;
}

/* Cookie table. Divi styles ".entry-content table/th/td", so these selectors outrank it. */
.kb-legal table.kb-cookie-table {
	width: 100%;
	margin: 16px 0 24px;
	border: 0;
	border-collapse: collapse;
	font-size: 0.8rem;
	line-height: 1.6;
}

.kb-legal .kb-cookie-table th,
.kb-legal .kb-cookie-table td {
	padding: 10px 14px;
	border: 0;
	text-align: left;
	vertical-align: top;
}

.kb-legal .kb-cookie-table th {
	border-bottom: 2px solid var(--gcid-kb-border, #e0e4f4);
	background: var(--gcid-kb-tint, #f8f9ff);
	color: var(--gcid-kb-navy, #1a1650);
	font-size: 0.75rem;
	font-weight: 600;
}

.kb-legal .kb-cookie-table td {
	border-bottom: 1px solid #f0f0f8;
	color: var(--gcid-kb-body-text, #555);
}

.kb-legal .kb-cookie-table tr:last-child td {
	border-bottom: 0;
}

.kb-legal .kb-cookie-table th:first-child {
	width: 180px;
}

.kb-cookie-table small {
	display: block;
	color: #aaa;
	font-size: 0.7rem;
}

.kb-cookie-type {
	display: inline-block;
	padding: 2px 8px;
	border-radius: 8px;
	font-size: 0.7rem;
	font-weight: 500;
	white-space: nowrap;
}

.kb-cookie-type--necessary {
	background: var(--gcid-kb-sky, #e8f0fe);
	color: var(--gcid-kb-blue, #3a6bcc);
}

.kb-cookie-type--third-party {
	background: var(--gcid-kb-mist-blue, #f0f4ff);
	color: var(--gcid-kb-indigo, #3a4acc);
}

/* Sidebar: "Also available" links as tinted chips. */
.kb-legal-related {
	display: flex;
	flex-direction: column;
	gap: 6px;
}

.kb-legal-related a {
	padding: 6px 10px;
	border-radius: 8px;
	background: var(--gcid-kb-mist-blue, #f0f4ff);
	color: var(--gcid-kb-blue, #3a6bcc);
	font-size: 0.75rem;
	transition: background-color 0.2s;
}

.kb-legal-related a:hover {
	background: #e0e8ff;
}

/* Phones: each cookie becomes a card, one "label  value" line per column. */
@media (max-width: 767px) {
	.kb-legal table.kb-cookie-table,
	.kb-legal .kb-cookie-table tbody,
	.kb-legal .kb-cookie-table tr,
	.kb-legal .kb-cookie-table td {
		display: block;
	}

	.kb-legal .kb-cookie-table thead {
		display: none;
	}

	.kb-legal .kb-cookie-table tr {
		margin-bottom: 12px;
		overflow: hidden;
		border: 1px solid var(--gcid-kb-border, #e0e4f4);
		border-radius: 14px;
	}

	.kb-legal .kb-cookie-table td {
		display: grid;
		grid-template-columns: 76px minmax(0, 1fr);
		gap: 12px;
		padding: 10px 16px;
		border-bottom: 1px solid #f0f0f8;
	}

	.kb-legal .kb-cookie-table td::before {
		content: attr(data-label);
		color: var(--gcid-kb-navy, #1a1650);
		font-weight: 600;
	}

	.kb-legal .kb-cookie-table td:last-child {
		border-bottom: 0;
	}

	.kb-legal .kb-cookie-table td:first-child {
		display: block;
		background: var(--gcid-kb-tint, #f8f9ff);
	}

	.kb-legal .kb-cookie-table td:first-child::before {
		content: none;
	}

	.kb-cookie-table td > .kb-cookie-type {
		justify-self: start;
	}
}

/* --- Footer: policy links and credit --------------------------------------- */

/* The [menu] shortcode outputs a plain WordPress menu; Divi can't style its items. */
.kb-footer-legal ul {
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	gap: 6px 20px;
	padding: 0;
}

.kb-footer-legal li {
	padding: 0;
}

.kb-footer-credit a {
	border-bottom: 0.5px solid rgba(255, 255, 255, 0.25);
	transition: color 0.2s, border-color 0.2s;
}

.kb-footer-credit a:hover {
	border-color: var(--gcid-kb-green, #3abf82);
}
