/* =========================================================
   GP Bio Child — Main Stylesheet
   Table of contents:
   1. Variables & Reset
   2. Layout / Container
   3. Header
   4. Hero
   5. Category Pills
   6. Search
   7. Bio Card Grid
   8. Buttons
   9. Popular Categories
   10. Article / How-To
   11. FAQ Accordion
   12. Footer
   13. Sticky Bottom Bar
   14. Breadcrumbs / Pagination / 404
   15. Responsive
   ========================================================= */

/* 1. Variables & Reset
   ========================================================= */
:root {
	--gpbio-grad-start: #ff3cac;
	--gpbio-grad-mid: #784ba0;
	--gpbio-grad-end: #2b86c5;
	--gpbio-pink: #ff2d87;
	--gpbio-purple: #8b2fc9;
	--gpbio-text: #1e1e2e;
	--gpbio-text-light: #6b6b80;
	--gpbio-bg: #faf8fc;
	--gpbio-card-bg: #ffffff;
	--gpbio-border: #eee0f5;
	--gpbio-radius: 16px;
	--gpbio-shadow: 0 8px 24px rgba(120, 30, 150, 0.08);
	--gpbio-shadow-hover: 0 14px 32px rgba(120, 30, 150, 0.16);
}

*, *::before, *::after { box-sizing: border-box; }

body.gpbio-body, body {
	font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif;
	color: var(--gpbio-text);
	background: var(--gpbio-bg);
	margin: 0;
	padding-bottom: 0;
	-webkit-font-smoothing: antialiased;
}

img { max-width: 100%; height: auto; display: block; }

a { color: var(--gpbio-pink); text-decoration: none; }
a:hover { text-decoration: underline; }

.screen-reader-text {
	position: absolute !important;
	width: 1px; height: 1px;
	overflow: hidden;
	clip: rect(1px, 1px, 1px, 1px);
}

/* 2. Layout
   ========================================================= */
.gpbio-container {
	width: 100%;
	max-width: 1180px;
	margin: 0 auto;
	padding: 0 20px;
}

.gpbio-section-title {
	text-align: center;
	font-size: clamp(22px, 4vw, 32px);
	font-weight: 800;
	margin-bottom: 10px;
	background: linear-gradient(90deg, var(--gpbio-pink), var(--gpbio-purple));
	-webkit-background-clip: text;
	background-clip: text;
	color: transparent;
}

.gpbio-section-title--small { font-size: 22px; margin-top: 40px; }

.gpbio-section-sub {
	text-align: center;
	color: var(--gpbio-text-light);
	max-width: 640px;
	margin: 0 auto 30px;
	font-size: 15px;
	line-height: 1.6;
}

/* 3. Header
   ========================================================= */

/*
 * GeneratePress parent theme renders its own .site-header with position:sticky.
 * We disable that and let ONLY our .gpbio-header be sticky, preventing the
 * "half-visible header on scroll" bug caused by two stacked sticky elements.
 */
.site-header {
	position: relative !important;
	top: auto !important;
}

.gpbio-header {
	background: #fff;
	border-bottom: 1px solid var(--gpbio-border);
	position: sticky;
	top: 0;
	z-index: 999;
	width: 100%;
	left: 0;
	right: 0;
	/* relative needed so the mobile nav drawer (position:absolute) is
	   anchored to the header, not the viewport */
	position: -webkit-sticky;
	position: sticky;
}

.gpbio-header__inner {
	display: flex;
	align-items: center;
	justify-content: space-between;
	height: 64px;
}

/* Logo — no underline, no border (covers all GP parent selectors) */
.gpbio-header .gpbio-header__logo,
.gpbio-header .gpbio-header__logo:link,
.gpbio-header .gpbio-header__logo:visited,
.gpbio-header .gpbio-header__logo:hover,
.gpbio-header .gpbio-header__logo:focus,
.gpbio-header__brand a,
.gpbio-header__brand a:hover {
	font-weight: 800;
	font-size: 19px;
	color: var(--gpbio-text);
	text-decoration: none !important;
	border-bottom: none !important;
	box-shadow: none !important;
	-webkit-text-decoration: none !important;
}

.gpbio-header__menu {
	list-style: none;
	display: flex;
	gap: 22px;
	margin: 0;
	padding: 0;
}

/* Nav links — covers every state GP parent might hook into */
.gpbio-header a,
.gpbio-header a:link,
.gpbio-header a:visited,
.gpbio-header a:hover,
.gpbio-header a:focus,
.gpbio-header a:active {
	text-decoration: none !important;
	-webkit-text-decoration: none !important;
	border-bottom: none !important;
	box-shadow: none !important;
}

.gpbio-header__menu a {
	color: var(--gpbio-text);
	font-size: 14px;
	font-weight: 600;
}

.gpbio-header__menu a:hover,
.gpbio-header__menu a:focus {
	color: var(--gpbio-pink);
}

/* Active menu item */
.gpbio-header__menu .current-menu-item > a,
.gpbio-header__menu .current_page_item > a {
	color: var(--gpbio-pink);
}

/* ---- Hamburger button — hidden on desktop ---- */
.gpbio-hamburger {
	display: none;
	flex-direction: column;
	justify-content: space-between;
	width: 28px;
	height: 20px;
	background: transparent !important;
	border: none !important;
	box-shadow: none !important;
	cursor: pointer;
	padding: 0;
	flex-shrink: 0;
	outline: none;
}

.gpbio-hamburger span {
	display: block;
	height: 2px;
	width: 100%;
	background: var(--gpbio-text);
	border-radius: 2px;
	transition: transform .28s ease, opacity .2s ease;
	pointer-events: none;
}

/* Animate to X when open */
.gpbio-hamburger.is-open span:nth-child(1) { transform: translateY(9px) rotate(45deg); }
.gpbio-hamburger.is-open span:nth-child(2) { opacity: 0; transform: scaleX(0); }
.gpbio-hamburger.is-open span:nth-child(3) { transform: translateY(-9px) rotate(-45deg); }

/* ---- Mobile nav ---- */
@media (max-width: 600px) {

	.gpbio-hamburger {
		display: flex;
	}

	/* Nav drawer: fixed so it clears the sticky header correctly */
	.gpbio-header__nav {
		position: fixed;
		top: 64px;          /* same as header height */
		left: 0;
		right: 0;
		background: #fff;
		border-top: 2px solid var(--gpbio-pink);
		box-shadow: 0 8px 30px rgba(0,0,0,0.13);
		z-index: 998;
		max-height: 0;
		overflow: hidden;
		transition: max-height .35s cubic-bezier(0.4, 0, 0.2, 1);
	}

	.gpbio-header__nav.is-open {
		max-height: 500px;
	}

	.gpbio-header__menu {
		flex-direction: column;
		gap: 0;
		padding: 6px 0 10px;
		margin: 0;
		list-style: none;
	}

	.gpbio-header__menu li {
		border-bottom: 1px solid var(--gpbio-border);
	}

	.gpbio-header__menu li:last-child {
		border-bottom: none;
	}

	.gpbio-header__menu a {
		display: block;
		padding: 15px 22px;
		font-size: 15px;
		font-weight: 600;
		color: var(--gpbio-text) !important;
		text-decoration: none !important;
	}

	.gpbio-header__menu a:hover {
		color: var(--gpbio-pink) !important;
		background: var(--gpbio-bg);
	}
}

/* 4. Hero
   ========================================================= */
.gpbio-hero {
	background: linear-gradient(120deg, var(--gpbio-grad-start), var(--gpbio-grad-mid) 55%, var(--gpbio-grad-end));
	padding: 56px 0 48px;
	color: #fff;
	text-align: center;
}

.gpbio-hero__title {
	font-size: clamp(26px, 5vw, 42px);
	font-weight: 800;
	margin: 0 0 16px;
	text-shadow: 0 2px 12px rgba(0,0,0,0.15);
}

.gpbio-hero__desc {
	max-width: 700px;
	margin: 0 auto 28px;
	font-size: 15px;
	line-height: 1.7;
	opacity: 0.95;
}

/* 5. Category Pills
   ========================================================= */
.gpbio-hero__categories {
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	gap: 10px;
	background: rgba(255,255,255,0.12);
	padding: 14px;
	border-radius: 999px;
	max-width: 720px;
	margin: 0 auto;
	backdrop-filter: blur(4px);
}

.gpbio-pill {
	border: none;
	cursor: pointer;
	padding: 9px 18px;
	border-radius: 999px;
	font-size: 13px;
	font-weight: 700;
	background: rgba(255,255,255,0.18);
	color: #fff;
	transition: background .2s ease, transform .15s ease;
}

.gpbio-pill:hover { background: rgba(255,255,255,0.3); transform: translateY(-1px); }

.gpbio-pill.is-active {
	background: #fff;
	color: var(--gpbio-purple);
}

/* 6. Search
   ========================================================= */
.gpbio-search-wrap { max-width: 480px; margin: 0 auto 30px; }

.gpbio-search-input {
	width: 100%;
	padding: 13px 18px;
	border: 2px solid var(--gpbio-border);
	border-radius: 999px;
	font-size: 14px;
	outline: none;
	transition: border-color .2s ease;
}

.gpbio-search-input:focus { border-color: var(--gpbio-pink); }

.gpbio-search-form { display: flex; gap: 10px; max-width: 480px; margin: 20px auto 0; }

/* 7. Bio Card Grid
   ========================================================= */
.gpbio-collection { padding: 50px 0; }

.gpbio-grid {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 22px;
	margin-top: 10px;
}

.gpbio-grid--single { grid-template-columns: 1fr; max-width: 460px; margin-left: auto; margin-right: auto; }

.gpbio-card {
	position: relative;
	background: var(--gpbio-card-bg);
	border: 1px solid var(--gpbio-border);
	border-radius: var(--gpbio-radius);
	padding: 22px 20px 18px;
	box-shadow: var(--gpbio-shadow);
	transition: transform .2s ease, box-shadow .2s ease, border-color .2s ease;
	display: flex;
	flex-direction: column;
	gap: 14px;
}

.gpbio-card:hover {
	transform: translateY(-4px);
	box-shadow: var(--gpbio-shadow-hover);
	border-color: var(--gpbio-pink);
}

.gpbio-card__badge {
	align-self: flex-start;
	background: linear-gradient(90deg, var(--gpbio-pink), var(--gpbio-purple));
	color: #fff;
	font-size: 11px;
	font-weight: 700;
	padding: 4px 12px;
	border-radius: 999px;
	text-transform: uppercase;
	letter-spacing: .04em;
}

.gpbio-card__text { min-height: 70px; }

.gpbio-line {
	margin: 0 0 6px;
	font-size: 14px;
	line-height: 1.6;
	color: var(--gpbio-text);
	word-break: break-word;
}

.gpbio-line:last-child { margin-bottom: 0; }

.gpbio-empty { text-align: center; color: var(--gpbio-text-light); grid-column: 1 / -1; padding: 40px 0; }

/* 8. Buttons
   ========================================================= */
.gpbio-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 6px;
	border: none;
	cursor: pointer;
	border-radius: 999px;
	font-weight: 700;
	font-size: 14px;
	padding: 12px 28px;
	transition: transform .15s ease, box-shadow .15s ease, opacity .15s ease;
}

.gpbio-btn--primary {
	background: linear-gradient(90deg, var(--gpbio-pink), var(--gpbio-purple));
	color: #fff;
	box-shadow: 0 8px 20px rgba(255, 45, 135, 0.3);
}

.gpbio-btn--primary:hover { transform: translateY(-2px); text-decoration: none; }
.gpbio-btn--primary[disabled] { opacity: .6; cursor: not-allowed; transform: none; }

.gpbio-btn--secondary {
	background: #fff;
	color: var(--gpbio-purple);
	border: 2px solid var(--gpbio-purple);
}

.gpbio-load-more-wrap { text-align: center; margin-top: 34px; }

.gpbio-copy-btn {
	align-self: flex-start;
	display: inline-flex;
	align-items: center;
	gap: 6px;
	border: none;
	cursor: pointer;
	background: linear-gradient(90deg, var(--gpbio-pink), var(--gpbio-purple));
	color: #fff;
	font-size: 13px;
	font-weight: 700;
	padding: 8px 16px;
	border-radius: 999px;
	transition: transform .15s ease, opacity .15s ease;
}

.gpbio-copy-btn:hover { transform: translateY(-1px); }
.gpbio-copy-btn.is-copied { background: #21c07a; }

/* 9. Popular Categories
   ========================================================= */
.gpbio-popular-cats { padding: 10px 0 50px; }

.gpbio-popular-cats__grid {
	display: grid;
	grid-template-columns: repeat(4, 1fr);
	gap: 16px;
}

.gpbio-popular-cats__item,
.gpbio-popular-cats__item:link,
.gpbio-popular-cats__item:visited,
.gpbio-popular-cats__item:hover,
.gpbio-popular-cats__item:focus {
	text-decoration: none !important;
	border-bottom: none !important;
	box-shadow: var(--gpbio-shadow) !important;
}

.gpbio-popular-cats__item {
	background: #fff;
	border: 1px solid var(--gpbio-border);
	border-radius: 14px;
	padding: 22px 14px;
	text-align: center;
	font-weight: 700;
	color: var(--gpbio-text);
	transition: transform .2s ease, border-color .2s ease;
	display: block;
}

.gpbio-popular-cats__item:hover {
	transform: translateY(-3px);
	border-color: var(--gpbio-pink) !important;
	box-shadow: var(--gpbio-shadow-hover) !important;
	color: var(--gpbio-pink);
}

/* 10. Article / How-To
   ========================================================= */
.gpbio-article { padding: 50px 0; background: #fff; }
.gpbio-article__inner { max-width: 760px; line-height: 1.8; }
.gpbio-article__inner p { color: var(--gpbio-text-light); margin-bottom: 16px; }

.gpbio-howto { padding: 50px 0; }

.gpbio-howto__grid {
	display: grid;
	grid-template-columns: repeat(4, 1fr);
	gap: 20px;
}

.gpbio-howto__step {
	background: #fff;
	border: 1px solid var(--gpbio-border);
	border-radius: 14px;
	padding: 24px 18px;
	text-align: center;
	box-shadow: var(--gpbio-shadow);
}

.gpbio-howto__num {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 32px;
	height: 32px;
	border-radius: 50%;
	background: linear-gradient(90deg, var(--gpbio-pink), var(--gpbio-purple));
	color: #fff;
	font-weight: 800;
	margin-bottom: 12px;
}

.gpbio-howto__step h3 { font-size: 15px; margin: 0 0 8px; }
.gpbio-howto__step p { font-size: 13px; color: var(--gpbio-text-light); line-height: 1.6; margin: 0; }

/* 11. FAQ Accordion
   ========================================================= */
.gpbio-faq { padding: 50px 0 70px; background: #fff; }

.gpbio-faq__list { max-width: 760px; margin: 0 auto; }

.gpbio-faq__item {
	border: 1px solid var(--gpbio-border);
	border-radius: 12px;
	margin-bottom: 12px;
	overflow: hidden;
}

.gpbio-faq__question {
	width: 100%;
	background: var(--gpbio-bg);
	border: none;
	cursor: pointer;
	display: flex;
	align-items: center;
	justify-content: space-between;
	padding: 16px 20px;
	font-size: 14px;
	font-weight: 700;
	text-align: left;
	color: var(--gpbio-text);
}

.gpbio-faq__icon { font-size: 18px; color: var(--gpbio-pink); transition: transform .2s ease; }

.gpbio-faq__question[aria-expanded="true"] .gpbio-faq__icon { transform: rotate(45deg); }

.gpbio-faq__answer {
	max-height: 0;
	overflow: hidden;
	transition: max-height .25s ease;
}

.gpbio-faq__answer p {
	margin: 0;
	padding: 0 20px 18px;
	font-size: 14px;
	color: var(--gpbio-text-light);
	line-height: 1.7;
}

/* 12. Latest Posts (Homepage section)
   ========================================================= */
.gpbio-latest-posts {
	padding: 60px 0;
	background: var(--gpbio-bg);
}

.gpbio-latest-posts .gpbio-post-grid {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 24px;
	margin-bottom: 0;
}

.gpbio-latest-posts__btn-wrap {
	text-align: center;
	margin: 40px auto 0;
	display: flex;
	justify-content: center;
	align-items: center;
}

/* 13. Footer
   ========================================================= */
.gpbio-footer {
	background: linear-gradient(120deg, var(--gpbio-grad-mid), var(--gpbio-grad-end));
	color: #fff;
	padding: 50px 0 0;
}

.gpbio-footer__inner {
	display: grid;
	grid-template-columns: 2fr 1fr 1fr;
	gap: 30px;
	padding-bottom: 30px;
}

.gpbio-footer__brand { font-size: 20px; margin: 0 0 12px; }
.gpbio-footer__col p { font-size: 13px; line-height: 1.7; opacity: .9; }
.gpbio-footer__col h4 { font-size: 14px; margin-bottom: 12px; }
.gpbio-footer__col ul { list-style: none; margin: 0; padding: 0; }
.gpbio-footer__col li { margin-bottom: 8px; }
.gpbio-footer__col a { color: #fff; opacity: .85; font-size: 13px; }
.gpbio-footer__col a:hover { opacity: 1; }

.gpbio-footer__bottom {
	border-top: 1px solid rgba(255,255,255,0.2);
	text-align: center;
	padding: 16px 0;
	font-size: 12px;
	opacity: .8;
}

/* 13. Sticky Bottom Bar — REMOVED (not used anymore)
   ========================================================= */

/* 14. Breadcrumbs / Pagination / 404
   ========================================================= */

/* Archive / taxonomy hero breadcrumbs (white — on gradient background) */
.gpbio-archive-hero .gpbio-breadcrumbs { font-size: 13px; margin-bottom: 14px; opacity: .9; }
.gpbio-archive-hero .gpbio-breadcrumbs a { color: #fff; text-decoration: underline; }

/* Post / page breadcrumbs (black — on white background) */
.gpbio-single-post .gpbio-breadcrumbs,
.gpbio-page .gpbio-breadcrumbs,
.gpbio-breadcrumbs {
	font-size: 13px;
	margin-bottom: 16px;
	color: #1e1e2e;
}

.gpbio-single-post .gpbio-breadcrumbs a,
.gpbio-page .gpbio-breadcrumbs a,
.gpbio-breadcrumbs a {
	color: #1e1e2e !important;
	text-decoration: none;
	font-weight: 600;
}

.gpbio-single-post .gpbio-breadcrumbs a:hover,
.gpbio-page .gpbio-breadcrumbs a:hover,
.gpbio-breadcrumbs a:hover {
	color: var(--gpbio-pink) !important;
}

.gpbio-breadcrumbs span[aria-hidden="true"] {
	margin: 0 6px;
	color: #999;
}

.gpbio-breadcrumbs span[aria-current="page"] {
	color: var(--gpbio-text-light);
}

/* Keep archive hero breadcrumbs white */
.gpbio-archive-hero .gpbio-breadcrumbs a { color: #fff !important; }
.gpbio-archive-hero .gpbio-breadcrumbs { color: rgba(255,255,255,0.9); }
.gpbio-archive-hero .gpbio-breadcrumbs span[aria-current="page"] { color: rgba(255,255,255,0.75); }

/* 14.5 Archive Hero
   ========================================================= */
.gpbio-archive-hero {
	background: linear-gradient(120deg, var(--gpbio-grad-start), var(--gpbio-grad-end));
	color: #fff;
	padding: 40px 0;
	text-align: center;
}

.gpbio-archive-hero__title { font-size: clamp(22px, 4vw, 32px); margin: 0 0 8px; }
.gpbio-archive-hero__desc { max-width: 640px; margin: 0 auto; opacity: .9; font-size: 14px; }

.gpbio-pagination { text-align: center; margin-top: 36px; }
.gpbio-pagination .page-numbers {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 36px;
	height: 36px;
	margin: 0 4px;
	border-radius: 8px;
	background: #fff;
	border: 1px solid var(--gpbio-border);
	color: var(--gpbio-text);
	font-size: 13px;
	font-weight: 700;
}
.gpbio-pagination .page-numbers.current,
.gpbio-pagination .page-numbers:hover {
	background: var(--gpbio-pink);
	color: #fff;
	text-decoration: none;
}

.gpbio-404 { padding: 90px 0; text-align: center; }
.gpbio-404__code {
	font-size: 84px;
	font-weight: 900;
	margin: 0;
	background: linear-gradient(90deg, var(--gpbio-pink), var(--gpbio-purple));
	-webkit-background-clip: text;
	background-clip: text;
	color: transparent;
}
.gpbio-404__title { margin: 0 0 12px; }
.gpbio-404__desc { color: var(--gpbio-text-light); max-width: 480px; margin: 0 auto 26px; }
.gpbio-404__home { margin-top: 20px; }

.gpbio-single__title { text-align: center; margin-bottom: 24px; }

.gpbio-page__inner { padding: 50px 0; max-width: 760px; }
.gpbio-page__content { line-height: 1.8; }

/* 15. Responsive
   ========================================================= */
@media (max-width: 960px) {
	.gpbio-grid { grid-template-columns: repeat(2, 1fr); }
	.gpbio-popular-cats__grid { grid-template-columns: repeat(2, 1fr); }
	.gpbio-howto__grid { grid-template-columns: repeat(2, 1fr); }
	.gpbio-footer__inner { grid-template-columns: 1fr 1fr; }
	.gpbio-latest-posts .gpbio-post-grid { grid-template-columns: repeat(2, 1fr); }
}

@media (max-width: 600px) {
	/* Nav: flex still needed for open state — display controlled by JS + max-height */
	.gpbio-header__menu { display: flex; }
	.gpbio-grid { grid-template-columns: 1fr; }
	.gpbio-popular-cats__grid { grid-template-columns: 1fr; }
	.gpbio-howto__grid { grid-template-columns: 1fr; }
	.gpbio-footer__inner { grid-template-columns: 1fr; }
	.gpbio-hero { padding: 40px 0 32px; }
	.gpbio-collection, .gpbio-popular-cats, .gpbio-article, .gpbio-howto, .gpbio-faq { padding-top: 36px; padding-bottom: 36px; }
	.gpbio-latest-posts .gpbio-post-grid { grid-template-columns: 1fr; }
	.gpbio-latest-posts { padding: 40px 0; }
}
