/*
Theme Name: Kaizhi UE5
Theme URI: https://example.local/
Author: 刘恺知
Description: 面向 UE5 程序开发者的作品集与技术博客区块主题。
Version: 2.0.0
Requires at least: 7.0
Requires PHP: 7.4
Text Domain: kaizhi-ue5
License: GNU General Public License v2 or later
*/

:root {
	--kz-blue: #1268e8;
	--kz-blue-dark: #0a56c9;
	--kz-emerald: #08795a;
	--kz-ink: #111827;
	--kz-copy: #536174;
	--kz-muted: #64748b;
	--kz-canvas: #f5f8fc;
	--kz-line: #dde5ef;
	--kz-card: #fff;
	--kz-radius: 10px;
	--kz-shadow: 0 22px 60px rgba(38, 71, 111, .12);
	--kz-ease: cubic-bezier(.22, 1, .36, 1);
	--kz-motion-fast: 320ms;
	--kz-motion-standard: 420ms;
	--kz-motion-slow: 560ms;
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; scroll-padding-top: 92px; }
body { background: #fff; color: var(--kz-ink); overflow-x: hidden; }
.wp-site-blocks > * { margin-block-start: 0 !important; }
body, button, input, textarea, select {
	font-family: Inter, "HarmonyOS Sans SC", "Noto Sans SC", "Microsoft YaHei", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
}
code, pre, kbd { font-family: "JetBrains Mono", "SFMono-Regular", Consolas, monospace; }
img { height: auto; max-width: 100%; }
a, button, input { transition: color 180ms ease, background-color 180ms ease, border-color 180ms ease, box-shadow 180ms ease, transform 180ms var(--kz-ease); }
a:focus-visible, button:focus-visible, summary:focus-visible, input:focus-visible, textarea:focus-visible, select:focus-visible {
	outline: 3px solid rgba(18, 104, 232, .45);
	outline-offset: 3px;
}
.screen-reader-text,
.wp-block-search__label.screen-reader-text {
	clip: rect(1px, 1px, 1px, 1px);
	clip-path: inset(50%);
	height: 1px;
	overflow: hidden;
	position: absolute !important;
	width: 1px;
	word-wrap: normal !important;
}

/* Non-blocking page load accent */
.kz-page-loader {
	animation: kz-loader-fallback 4000ms linear both;
	height: 2px;
	left: 0;
	top: 0;
	overflow: hidden;
	pointer-events: none;
	position: fixed;
	width: 100%;
	z-index: 1100;
}
.kz-page-loader__bar {
	animation: kz-loader-bootstrap 900ms var(--kz-ease) both;
	background: linear-gradient(90deg, var(--kz-blue), #1597f3 56%, #18b886);
	display: block;
	height: 100%;
	transform: scaleX(.04);
	transform-origin: left center;
	transition: transform 180ms var(--kz-ease);
	width: 100%;
}
.kz-page-loader.is-complete {
	opacity: 0 !important;
	transition: opacity 160ms ease;
}
.admin-bar .kz-page-loader { top: 32px; }

@keyframes kz-loader-bootstrap {
	from { transform: scaleX(.04); }
	to { transform: scaleX(.18); }
}
@keyframes kz-loader-fallback {
	0%, 96% { opacity: 1; }
	100% { opacity: 0; }
}

/* Homepage entrance choreography */
body.home .kz-site-header {
	animation: kz-home-header var(--kz-motion-fast) 40ms var(--kz-ease) both;
}
body.home .kz-hero h1 {
	animation: kz-home-rise 520ms 80ms var(--kz-ease) both;
}
body.home .kz-hero-copy {
	animation: kz-home-rise var(--kz-motion-standard) 160ms var(--kz-ease) both;
}
body.home .kz-actions {
	animation: kz-home-rise 380ms 220ms var(--kz-ease) both;
}
body.home .kz-hero-media {
	animation: kz-home-media var(--kz-motion-slow) 120ms var(--kz-ease) both;
}

@keyframes kz-home-header {
	from { opacity: 0; transform: translate3d(0, -8px, 0); }
	to { opacity: 1; transform: translate3d(0, 0, 0); }
}
@keyframes kz-home-rise {
	from { opacity: 0; transform: translate3d(0, 12px, 0); }
	to { opacity: 1; transform: translate3d(0, 0, 0); }
}
@keyframes kz-home-media {
	from { opacity: 0; transform: translate3d(16px, 0, 0) scale(.985); }
	to { opacity: 1; transform: translate3d(0, 0, 0) scale(1); }
}

.kz-reveal-item {
	opacity: 0;
	transform: translate3d(0, 12px, 0);
	transition:
		opacity 360ms var(--kz-ease) var(--kz-reveal-delay, 0ms),
		transform 360ms var(--kz-ease) var(--kz-reveal-delay, 0ms);
	will-change: opacity, transform;
}
.kz-reveal-item.is-visible {
	opacity: 1;
	transform: translate3d(0, 0, 0);
	will-change: auto;
}
.kz-reveal-panel {
	transition-duration: 420ms;
}

/* Real media loading states: layout is present while each resource resolves. */
.kz-media-surface {
	position: relative;
}
.kz-media-surface::before {
	background:
		radial-gradient(circle at 26% 34%, rgba(255, 255, 255, .96), transparent 34%),
		linear-gradient(120deg, #f8fafc 8%, #e7ebf0 50%, #f5f7f9 92%);
	content: "";
	filter: blur(14px);
	inset: -14px;
	opacity: 0;
	pointer-events: none;
	position: absolute;
	transform: scale(1);
	transition: opacity 180ms ease;
	z-index: 4;
}
.kz-media-surface.is-media-loading::before {
	animation: kz-skeleton-breathe 1200ms ease-in-out infinite;
	opacity: .94;
}
.kz-media-surface.is-media-loading { background: #eef2f6; }
.kz-media-surface.is-media-loading img { opacity: 0; }
.kz-media-surface.is-media-ready img { opacity: 1; }
.kz-media-surface.is-media-error {
	background: linear-gradient(135deg, #f8fafc, #e7ebf0 54%, #f5f7f9);
}
@keyframes kz-skeleton-breathe {
	0%, 100% { opacity: .72; transform: scale(1); }
	50% { opacity: .96; transform: scale(1.025); }
}

.kz-header-inner,
.kz-hero-inner,
.kz-section > .wp-block-group,
.kz-page-intro > .wp-block-group,
.kz-site-footer > .wp-block-group,
.kz-subscribe > .wp-block-group {
	padding-left: clamp(20px, 4vw, 48px);
	padding-right: clamp(20px, 4vw, 48px);
}

/* Header */
.kz-site-header {
	backdrop-filter: blur(16px);
	background: rgba(255, 255, 255, .92);
	border-bottom: 1px solid rgba(211, 222, 235, .9);
	box-shadow: 0 8px 30px rgba(44, 67, 94, .05);
	color: var(--kz-ink);
	position: sticky;
	top: 0;
	z-index: 100;
}
.admin-bar .kz-site-header { top: 32px; }
.kz-header-inner {
	min-height: 88px;
	padding-left: 0;
	padding-right: 0;
	width: min(1384px, calc(100% - 40px));
}
.kz-site-header .wp-block-navigation__container { gap: 48px !important; }
.kz-brand { flex: 0 0 auto; line-height: 1; }
.kz-brand a {
	align-items: center;
	color: var(--kz-ink);
	display: inline-flex;
	font-size: 1.35rem;
	font-weight: 780;
	gap: 9px;
	letter-spacing: -.02em;
	min-height: 44px;
	text-decoration: none;
	white-space: nowrap;
}
.kz-brand a span { color: #a1adbc; font-weight: 400; }
.kz-brand small { color: #334155; font-size: .94rem; font-weight: 520; letter-spacing: .045em; }
.kz-site-header .wp-block-navigation-item__content {
	color: #3f4b5c;
	min-height: 44px;
	min-width: 44px;
	padding: 10px 4px;
	position: relative;
	text-decoration: none;
}
.kz-site-header .wp-block-navigation-item__content::after {
	background: var(--kz-blue);
	bottom: 3px;
	content: "";
	height: 2px;
	left: 50%;
	position: absolute;
	transform: translateX(-50%) scaleX(0);
	transition: transform 180ms var(--kz-ease);
	width: 22px;
}
.kz-site-header .wp-block-navigation-item__content:hover,
.kz-site-header .wp-block-navigation-item__content:focus-visible,
.kz-site-header .wp-block-navigation-item__content.is-current { color: var(--kz-ink); }
.kz-site-header .wp-block-navigation-item__content:hover::after,
.kz-site-header .wp-block-navigation-item__content:focus-visible::after,
.kz-site-header .wp-block-navigation-item__content.is-current::after { transform: translateX(-50%) scaleX(1); }
.kz-site-header .wp-block-navigation-item__content.is-current { font-weight: 720; }
.kz-header-tools { gap: 12px !important; margin: 0; }
.kz-header-cta { margin: 0; }
.kz-header-cta .wp-block-button__link {
	align-items: center;
	display: inline-flex;
	justify-content: center;
	min-height: 44px;
	padding: 10px 20px;
}
.kz-header-search { margin: 0; position: relative; }
.kz-header-search summary {
	align-items: center;
	border-radius: 8px;
	color: transparent;
	cursor: pointer;
	display: flex;
	font-size: 0;
	height: 44px;
	justify-content: center;
	list-style: none;
	position: relative;
	width: 44px;
}
.kz-header-search summary::-webkit-details-marker { display: none; }
.kz-header-search summary::before {
	border: 2px solid #172033;
	border-radius: 50%;
	content: "";
	height: 14px;
	transform: translate(-2px, -2px);
	width: 14px;
}
.kz-header-search summary::after {
	background: #172033;
	border-radius: 2px;
	content: "";
	height: 2px;
	position: absolute;
	transform: translate(7px, 7px) rotate(45deg);
	width: 8px;
}
.kz-header-search summary:hover { background: #f0f4f9; }
.kz-header-search[open] summary { background: #eaf2ff; }
.kz-header-search .wp-block-search {
	background: #fff;
	border: 1px solid var(--kz-line);
	border-radius: 12px;
	box-shadow: var(--kz-shadow);
	margin: 0;
	padding: 14px;
	position: absolute;
	right: 0;
	top: calc(100% + 12px);
	width: min(360px, calc(100vw - 40px));
	z-index: 3;
}
.wp-block-search__inside-wrapper { display: flex; gap: 8px; }
.wp-block-search__input,
.wp-block-jetpack-subscriptions__form input[type="email"],
.wp-block-jetpack-subscriptions input[type="email"] {
	background: #fff;
	border: 1px solid #cbd5e1;
	border-radius: 8px;
	color: var(--kz-ink);
	min-height: 48px;
	padding: 10px 13px;
}
.wp-block-search__button {
	border: 0;
	border-radius: 8px;
	min-height: 48px;
	min-width: 48px;
}
.kz-site-header .wp-block-navigation__responsive-container-open,
.kz-site-header .wp-block-navigation__responsive-container-close {
	align-items: center;
	color: var(--kz-ink);
	justify-content: center;
	min-height: 44px;
	min-width: 44px;
}

/* Home hero */
.kz-hero {
	background:
		radial-gradient(circle at 78% 42%, rgba(40, 148, 255, .13), transparent 30rem),
		linear-gradient(100deg, #fff 0%, #fbfdff 47%, #f1f8ff 100%);
	border-bottom: 1px solid #e4ebf3;
	isolation: isolate;
	overflow: hidden;
	position: relative;
}
.kz-hero::before {
	background-image: none;
	content: "";
	inset: 0;
	pointer-events: none;
	position: absolute;
}
.kz-hero-inner {
	align-items: center;
	min-height: 478px;
	padding-bottom: 0;
	padding-left: clamp(40px, 4.2vw, 64px);
	padding-right: clamp(24px, 3vw, 48px);
	padding-top: 0;
	position: relative;
	z-index: 1;
}
.kz-hero-inner > .wp-block-columns,
.kz-subscribe-panel > .wp-block-columns {
	max-width: none;
	width: 100%;
}
.kz-hero-inner > .wp-block-columns { min-height: 478px; }
.kz-eyebrow {
	color: var(--kz-emerald);
	font-size: .76rem;
	font-weight: 800;
	letter-spacing: .15em;
	margin-bottom: 14px;
	text-transform: uppercase;
}
.kz-hero h1 {
	color: var(--kz-ink);
	font-size: clamp(3rem, 4.1vw, 4rem);
	letter-spacing: -.045em;
	line-height: 1.12;
	margin: 0 0 22px;
	max-width: 650px;
	text-wrap: balance;
}
.kz-hero-copy {
	color: var(--kz-copy);
	font-size: clamp(1.08rem, 1.42vw, 1.35rem);
	line-height: 1.68;
	max-width: 620px;
}
.kz-actions { align-items: center; gap: 18px; margin-top: 30px; }
.kz-actions .wp-block-button__link {
	align-items: center;
	display: inline-flex;
	justify-content: center;
	min-height: 52px;
	padding: 13px 24px;
}
.kz-hero-link .wp-block-button__link {
	background: transparent !important;
	color: var(--kz-blue) !important;
	padding-inline: 12px 28px;
	position: relative;
}
.kz-hero-link .wp-block-button__link::after {
	border-right: 2px solid currentColor;
	border-top: 2px solid currentColor;
	content: "";
	height: 8px;
	position: absolute;
	right: 9px;
	transform: rotate(45deg);
	width: 8px;
}
.kz-hero-link .wp-block-button__link:hover { background: #eef5ff !important; }
.is-style-outline .wp-block-button__link {
	background: transparent !important;
	border: 1px solid #b8c7da;
	color: var(--kz-ink) !important;
}
.is-style-outline .wp-block-button__link:hover {
	background: #f0f5fb !important;
	border-color: #8da4bf;
}
.kz-hero-media {
	aspect-ratio: auto;
	background-color: transparent;
	border: 0;
	border-radius: 0;
	box-shadow: none;
	height: 478px;
	isolation: isolate;
	margin: 0;
	overflow: visible;
	padding: 0;
	position: relative;
	width: calc(100% + 112px);
}
.kz-hero-poster {
	display: block;
	inset: 0;
	margin: 0;
	opacity: 1;
	pointer-events: none;
	position: absolute;
	transition: opacity 400ms ease;
	z-index: 0;
}
.kz-hero-poster img {
	display: block;
	height: 100%;
	object-fit: contain;
	transition: opacity 220ms ease;
	width: 100%;
}
.kz-hero-media::after {
	display: none;
}
.kz-three-canvas {
	display: block;
	height: 100%;
	inset: 0;
	margin: 0 !important;
	max-width: none !important;
	opacity: 0;
	pointer-events: none;
	position: absolute;
	transition: opacity 400ms ease;
	width: 100% !important;
	z-index: 1;
}
.kz-three-ready .kz-three-canvas { opacity: 1; }
.kz-three-ready .kz-hero-poster { opacity: 0; }
.kz-three-status {
	bottom: 15px;
	color: #5b6f88;
	font-family: "JetBrains Mono", Consolas, monospace;
	font-size: .62rem;
	font-weight: 700;
	left: 18px;
	letter-spacing: .14em;
	opacity: .78;
	position: absolute;
	z-index: 3;
}

/* Sections and cards */
.wp-site-blocks main > * { margin-block-start: 0 !important; }
.kz-section { padding-bottom: clamp(44px, 4vw, 58px); padding-top: clamp(36px, 3.6vw, 52px); }
.kz-section--white { background: #fff; }
.kz-section--tint { background: #fff; border-top: 1px solid var(--kz-line); }
.kz-query-section {
	padding-bottom: 30px;
	padding-top: 30px;
}
.kz-query-section > .wp-block-group.alignwide {
	max-width: 1384px;
	padding-left: 0;
	padding-right: 0;
}
.kz-query-section .wp-block-query {
	margin-block-start: 0 !important;
	max-width: none;
}
.kz-section-head {
	align-items: center;
	display: flex;
	gap: 32px;
	justify-content: space-between;
	margin-bottom: 5px;
	max-width: none !important;
	width: 100%;
}
.kz-section-head > div { max-width: none; }
.kz-section-head h2,
.kz-page-title {
	font-size: clamp(1.45rem, 2vw, 1.72rem);
	letter-spacing: -.025em;
	line-height: 1.2;
	margin: 0;
	text-wrap: balance;
}
.kz-section-head p,
.kz-page-intro p { color: var(--kz-copy); line-height: 1.75; }
.kz-text-link {
	color: var(--kz-blue);
	font-weight: 700;
	min-height: 44px;
	padding: 10px 0;
	text-decoration: none;
	white-space: nowrap;
}
.kz-text-link::after { content: " →"; }
.kz-text-link:hover { color: var(--kz-blue-dark); }
.kz-card-grid {
	align-items: stretch;
	display: grid !important;
	gap: 18px !important;
	grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
	list-style: none;
	padding: 0;
}
.kz-card-grid > .wp-block-post { margin: 0; }
.kz-card {
	background: var(--kz-card);
	border: 1px solid var(--kz-line);
	border-radius: var(--kz-radius);
	box-shadow: 0 1px 2px rgba(16, 24, 40, .03);
	display: flex;
	flex-direction: column;
	height: 100%;
	overflow: hidden;
	transition: border-color 220ms ease, box-shadow 220ms ease, transform 220ms var(--kz-ease);
}
.kz-card:hover,
.kz-card:focus-within {
	border-color: #a9c8ef;
	box-shadow: var(--kz-shadow);
	transform: translateY(-4px);
}
.kz-card-media,
.kz-single-media {
	background: #edf4fb url("assets/images/social-default-1200x630.webp") center / cover no-repeat;
	min-height: 210px;
	overflow: hidden;
	position: relative;
}
.kz-card-media .wp-block-post-featured-image,
.kz-single-media .wp-block-post-featured-image { height: 100%; margin: 0; }
.kz-card-media .wp-block-post-featured-image,
.kz-card-media .wp-block-post-featured-image > a {
	display: block;
	min-width: 0;
	width: 100%;
}
.kz-card-media .wp-block-post-featured-image > a { height: 100%; }
.kz-card-media img {
	aspect-ratio: 16 / 9;
	display: block;
	object-fit: cover;
	transition: opacity 220ms ease, transform 300ms var(--kz-ease);
	width: 100%;
}
.kz-card:hover .kz-card-media img { transform: scale(1.025); }
.kz-card-body {
	display: flex;
	flex: 1;
	flex-direction: column;
	gap: 10px;
	min-width: 0;
	padding: 24px;
}
.kz-card-body > * { margin-block: 0 !important; }
.kz-card-body .wp-block-post-excerpt p { margin: 0; }
.kz-card-kicker,
.kz-card-kicker a {
	color: var(--kz-emerald);
	font-size: .75rem;
	font-weight: 800;
	letter-spacing: .08em;
	text-decoration: none;
	text-transform: uppercase;
}
.kz-card :is(h2, h3) { font-size: 1.35rem; letter-spacing: -.025em; line-height: 1.32; margin: 0; }
.kz-card :is(h2, h3) a {
	align-items: center;
	color: var(--kz-ink);
	display: flex;
	min-height: 44px;
	text-decoration: none;
}
.kz-card :is(h2, h3) a:hover { color: var(--kz-blue); }
.kz-card .wp-block-post-excerpt { color: var(--kz-copy); font-size: .95rem; line-height: 1.68; }
.kz-card .wp-block-post-date { color: var(--kz-muted); font-size: .82rem; margin-top: auto; padding-top: 12px; }
.kz-card .taxonomy-project_tech,
.kz-card .taxonomy-project_type { color: var(--kz-muted); font-size: .8rem; }
.kz-card .wp-block-post-terms a {
	align-items: center;
	color: #536174;
	display: inline-flex;
	min-height: 44px;
	min-width: 44px;
	padding-inline: 4px;
	text-decoration: none;
}
.kz-card-grid > .wp-block-post:only-child .kz-card {
	display: flex;
}
.kz-card-grid > .wp-block-post:only-child .kz-card-media { min-height: 210px; }
.kz-query-section--post .kz-card,
.kz-query-section--project .kz-card {
	display: flex;
	flex-direction: column;
	height: 100%;
	min-height: 0;
}
.kz-query-section--post .kz-card-media,
.kz-query-section--project .kz-card-media { height: 220px; min-height: 220px; }
.kz-query-section--post .kz-card-media img,
.kz-query-section--project .kz-card-media img { height: 100%; object-fit: cover; }
.kz-query-section--post .kz-card-body,
.kz-query-section--project .kz-card-body { padding: 20px; }
.kz-query-section--post .kz-card :is(h2, h3),
.kz-query-section--project .kz-card :is(h2, h3) { font-size: 1.18rem; }
.kz-query-section--post .wp-block-post-excerpt,
.kz-query-section--project .wp-block-post-excerpt {
	display: -webkit-box;
	overflow: hidden;
	-webkit-box-orient: vertical;
	-webkit-line-clamp: 3;
}
.kz-query-section--project .taxonomy-project_tech { margin-top: auto !important; }
.kz-about-panel {
	background:
		radial-gradient(circle at 90% 0, rgba(32, 183, 144, .12), transparent 24rem),
		linear-gradient(135deg, #f7faff, #eef5ff);
	border: 1px solid #d9e6f3;
	border-radius: 18px;
	padding: clamp(40px, 6vw, 76px) !important;
}
.kz-about-panel h2 { font-size: clamp(2rem, 4.3vw, 3.8rem); letter-spacing: -.045em; margin: 8px 0 18px; max-width: 900px; }
.kz-about-panel > * {
	margin-left: auto !important;
	margin-right: auto !important;
	max-width: 900px !important;
	width: 100%;
}
.kz-about-panel > p:not(.kz-eyebrow) { color: var(--kz-copy); font-size: 1.08rem; line-height: 1.75; }

/* Archives and single content */
.kz-page-intro {
	background:
		radial-gradient(circle at 82% 0, rgba(28, 183, 142, .13), transparent 25rem),
		linear-gradient(180deg, #fbfdff, #f1f6fc);
	border-bottom: 1px solid var(--kz-line);
	padding-bottom: clamp(46px, 5vw, 64px);
	padding-top: clamp(46px, 5vw, 64px);
}
.kz-page-intro--dark { color: var(--kz-ink); }
.kz-page-intro--dark .kz-page-title { color: var(--kz-ink); }
.kz-page-intro .kz-page-title {
	font-size: clamp(2.6rem, 4vw, 4rem);
	line-height: 1.08;
}
.kz-archive > .wp-block-query,
.kz-archive > .wp-block-search,
.kz-archive > .kz-page-title { margin-left: auto; margin-right: auto; max-width: 1280px; }
.kz-archive > .kz-page-title {
	font-size: clamp(2.2rem, 4vw, 3.5rem);
	line-height: 1.1;
}
.kz-archive > .wp-block-search { margin-bottom: 36px; max-width: 620px; margin-left: 0; }
.kz-pagination { gap: 8px; margin-top: 42px; }
.kz-pagination .page-numbers,
.kz-pagination .wp-block-query-pagination-previous,
.kz-pagination .wp-block-query-pagination-next {
	align-items: center;
	border: 1px solid var(--kz-line);
	border-radius: 8px;
	color: var(--kz-ink);
	display: inline-flex;
	justify-content: center;
	min-height: 44px;
	min-width: 44px;
	padding: 8px 12px;
	text-decoration: none;
}
.kz-pagination .current,
.kz-pagination a:hover { background: var(--kz-blue); border-color: var(--kz-blue); color: #fff; }
.kz-placeholder-card {
	background: #fff;
	border: 1px dashed #b8c7d9;
	border-radius: 12px;
	color: var(--kz-copy);
	padding: 30px;
}
.kz-not-found .kz-page-title { font-size: clamp(2.5rem, 5vw, 4.25rem); }
.kz-single { background: #fff; padding-bottom: 72px; }
.kz-single-header {
	background: linear-gradient(180deg, #f8fbff, #fff);
	border-bottom: 1px solid var(--kz-line);
	margin-bottom: 0 !important;
	max-width: none !important;
	padding: clamp(54px, 6vw, 82px) max(20px, calc((100vw - 1280px) / 2));
}
.kz-single-header > * { max-width: 980px; }
body.page:not(.home) .kz-single-header > * {
	margin-left: auto;
	margin-right: auto;
	max-width: 760px;
	width: 100%;
}
.kz-single-header h1 {
	font-size: clamp(2.7rem, 4.65vw, 4.2rem);
	letter-spacing: -.055em;
	line-height: 1.07;
	margin: 12px 0 22px;
	text-wrap: balance;
}
.kz-single-header .wp-block-post-excerpt { color: var(--kz-copy); font-size: 1.1rem; line-height: 1.75; max-width: 760px; }
.kz-single-meta { color: var(--kz-muted); font-size: .9rem; gap: 16px !important; }
.kz-single-media {
	border-radius: 14px;
	box-shadow: var(--kz-shadow);
	margin-bottom: clamp(42px, 5vw, 64px) !important;
	margin-top: clamp(30px, 4vw, 48px) !important;
	max-width: 1120px !important;
	width: calc(100% - 40px);
}
.kz-single-media img { aspect-ratio: 16 / 9; display: block; object-fit: cover; width: 100%; }
.kz-article-content { color: #2f3a4b; font-size: 1.04rem; line-height: 1.85; padding-inline: 20px; }
.kz-article-content h2 { font-size: 2rem; letter-spacing: -.03em; margin-top: 2.2em; }
.kz-article-content h3 { font-size: 1.45rem; margin-top: 1.8em; }
.kz-article-content pre {
	background: #111827;
	border-radius: 10px;
	color: #dbeafe;
	overflow-x: auto;
	padding: 22px;
}
.kz-article-content blockquote {
	border-left: 4px solid var(--kz-blue);
	color: var(--kz-copy);
	margin-left: 0;
	padding-left: 22px;
}
.kz-term-row { color: var(--kz-muted); gap: 16px !important; margin: 48px auto; max-width: 760px; padding-inline: 20px; }
.kz-term-row a { color: var(--kz-blue); text-decoration: none; }
.kz-related { border-top: 1px solid var(--kz-line); margin-top: 60px !important; padding-top: 48px; }
.kz-related h2 { font-size: 2rem; }
.kz-related-grid { display: grid; gap: 18px; grid-template-columns: repeat(3, 1fr); }
.kz-related-item { border: 1px solid var(--kz-line); border-radius: 10px; overflow: hidden; }
.kz-related-thumb { background: #eef4fb; display: block; min-height: 150px; }
.kz-related-thumb img { aspect-ratio: 16 / 9; display: block; object-fit: cover; width: 100%; }
.kz-related-copy { padding: 18px; }
.kz-related-copy > a { color: var(--kz-ink); font-weight: 750; text-decoration: none; }
.kz-related-copy p { color: var(--kz-muted); font-size: .85rem; line-height: 1.6; margin: 8px 0 0; }

/* Subscription and footer */
.kz-subscribe { background: #fff; padding: 0 0 78px; }
.kz-subscribe-panel {
	background:
		radial-gradient(circle at 100% 0, rgba(22, 191, 147, .16), transparent 24rem),
		linear-gradient(135deg, #edf5ff, #f8fbff);
	border: 1px solid #d5e4f3;
	border-radius: 18px;
	padding: clamp(34px, 5vw, 58px) !important;
}
.kz-subscribe-panel h2 { font-size: clamp(1.9rem, 3.6vw, 3rem); letter-spacing: -.04em; margin: 7px 0 13px; }
.kz-subscribe-panel p { color: var(--kz-copy); }
.kz-subscribe-note { font-size: .76rem; margin-top: 10px; }
.wp-block-jetpack-subscriptions,
.wp-block-jetpack-subscriptions__form { margin: 0; }
.jetpack_subscription_widget form {
	align-items: center;
	display: flex;
	gap: 10px;
}
.jetpack_subscription_widget form > p:empty,
.jetpack_subscription_widget form br { display: none; }
.jetpack_subscription_widget #subscribe-email,
.jetpack_subscription_widget #subscribe-submit {
	align-items: center;
	display: flex;
	margin: 0;
}
.jetpack_subscription_widget #subscribe-email { flex: 1 1 auto; }
.jetpack_subscription_widget #subscribe-submit { flex: 0 0 auto; }
.jetpack_subscription_widget input[type="email"] {
	background: #fff;
	border: 1px solid #cbd5e1;
	border-radius: 8px;
	color: var(--kz-ink);
	min-height: 50px;
	width: 100% !important;
}
.jetpack_subscription_widget button {
	background: var(--kz-blue) !important;
	border: 0;
	color: #fff !important;
	font-weight: 720;
	height: 50px;
	min-height: 50px;
	padding: 0 22px !important;
	margin: 0 !important;
	white-space: nowrap;
}
.wp-block-jetpack-subscriptions__form-elements { align-items: stretch; display: flex; gap: 10px; }
.wp-block-jetpack-subscriptions__form button,
.wp-block-jetpack-subscriptions button {
	background: var(--kz-blue);
	border: 0;
	border-radius: 8px;
	color: #fff;
	font-weight: 720;
	min-height: 48px;
	padding: 11px 20px;
}
.kz-site-footer { background: #f4f7fb; border-top: 1px solid var(--kz-line); color: var(--kz-copy); }
.kz-footer-inner { gap: 30px; min-height: 174px; }
.kz-site-footer a {
	align-items: center;
	color: #334155;
	display: inline-flex;
	justify-content: center;
	min-height: 44px;
	min-width: 44px;
	padding: 10px 0;
	text-decoration: none;
}
.kz-site-footer a:hover { color: var(--kz-blue); }
.kz-footer-brand { color: var(--kz-ink); font-weight: 780; }
.kz-footer-links { gap: 22px !important; }

@media (max-width: 1180px) {
	.kz-query-section > .wp-block-group.alignwide,
	.kz-archive { padding-left: 32px; padding-right: 32px; }
	.kz-card-grid { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; }
	.kz-query-section--post .kz-card { display: flex; height: auto; min-height: 0; }
	.kz-query-section--post .kz-card-media { aspect-ratio: 16 / 9; height: auto; min-height: 0; }
	.kz-query-section--project .kz-card-media { aspect-ratio: 16 / 9; height: auto; min-height: 0; }
	.kz-archive .kz-card-media { aspect-ratio: 16 / 9; height: auto; min-height: 0; }
	.kz-archive .kz-card-media .wp-block-post-featured-image {
		aspect-ratio: 16 / 9 !important;
		height: auto;
		min-width: 0;
		width: 100%;
	}
	.kz-archive .kz-card-media .wp-block-post-featured-image > a,
	.kz-archive .kz-card-media img { height: 100%; min-width: 0; width: 100%; }
}

@media (min-width: 981px) and (max-width: 1180px) {
	.kz-hero-media { overflow: hidden; width: 100%; }
}

@media (max-width: 980px) {
	.kz-header-inner { gap: 18px; }
	.kz-site-header .wp-block-navigation__container { gap: 18px !important; }
	.kz-hero-inner > .wp-block-columns { flex-wrap: wrap !important; }
	.kz-hero-inner > .wp-block-columns > .wp-block-column { flex-basis: 100% !important; }
	.kz-hero-inner { padding-bottom: 52px; padding-top: 44px; }
	.kz-hero-inner > .wp-block-columns { min-height: 0; }
	.kz-hero-media { aspect-ratio: 16 / 10; height: auto; margin: 22px auto 0; max-width: 720px; overflow: hidden; width: 100%; }
	.kz-card-grid > .wp-block-post:only-child .kz-card { grid-template-columns: minmax(260px, 40%) 1fr; }
}

@media (max-width: 782px) {
	.admin-bar .kz-site-header { top: 46px; }
	.admin-bar .kz-page-loader { top: 46px; }
	.kz-header-inner { gap: 8px; min-height: 68px; }
	.kz-header-inner > .wp-block-navigation { margin-left: auto; }
	.kz-header-tools { margin-left: 0; }
	.kz-header-search { display: block; }
	.kz-header-cta { display: none !important; }
	.kz-site-header .wp-block-navigation__responsive-container:not(.is-menu-open) { display: none !important; }
	.kz-site-header .wp-block-navigation__responsive-container-open { display: flex !important; }
	.kz-site-header .wp-block-navigation__responsive-container.is-menu-open {
		background: #fff !important;
		color: var(--kz-ink) !important;
		height: 100dvh !important;
		inset: 0 !important;
		padding: 0;
		position: fixed !important;
		width: 100vw !important;
		z-index: 100000;
	}
	.admin-bar .kz-site-header .wp-block-navigation__responsive-container.is-menu-open {
		height: calc(100dvh - 46px) !important;
		inset: 46px 0 auto !important;
	}
	.kz-site-header .wp-block-navigation__responsive-close,
	.kz-site-header .wp-block-navigation__responsive-dialog { height: 100%; margin: 0; width: 100%; }
	.kz-site-header .wp-block-navigation__responsive-container-close { position: absolute; right: 20px; top: 14px; z-index: 2; }
	.kz-site-header .wp-block-navigation__responsive-container-content {
		align-items: stretch !important;
		display: flex;
		height: 100%;
		justify-content: center;
		padding: 76px 24px 40px;
		width: 100%;
	}
	.kz-site-header .wp-block-navigation__responsive-container-content .wp-block-navigation__container {
		align-items: stretch !important;
		flex-direction: column !important;
		gap: 8px !important;
		width: 100%;
	}
	.kz-site-header .wp-block-navigation__responsive-container-content .wp-block-navigation-item { width: 100%; }
	.kz-site-header .wp-block-navigation__responsive-container-content .wp-block-navigation-item__content {
		align-items: center;
		border-radius: 8px;
		display: flex;
		font-size: 1.2rem;
		justify-content: center;
		min-height: 54px;
		padding: 12px 18px;
		width: 100%;
	}
	.kz-site-header .wp-block-navigation__responsive-container-content .wp-block-navigation-item__content.is-current { background: #eaf2ff; color: var(--kz-blue); }
	.kz-section-head { align-items: flex-start; flex-direction: column; gap: 8px; }
	.kz-related-grid { grid-template-columns: 1fr 1fr; }
	.kz-subscribe-panel > .wp-block-columns { flex-wrap: wrap !important; }
	.kz-subscribe-panel > .wp-block-columns > .wp-block-column { flex-basis: 100% !important; }
}

@media (max-width: 767px) {
	.kz-three-canvas { display: none; }
	.kz-hero-poster { opacity: 1; }
	.kz-query-section > .wp-block-group.alignwide { padding-left: 20px; padding-right: 20px; }
	.kz-archive { padding-left: 20px; padding-right: 20px; }
	.kz-section-head { align-items: center; flex-direction: row; gap: 16px; }
	.kz-section-head .kz-text-link { font-size: .88rem; }
	.kz-card-grid { grid-template-columns: minmax(0, 1fr) !important; width: 100%; }
	.kz-card-grid > .wp-block-post { min-width: 0; width: 100%; }
	.kz-card-grid > .wp-block-post:only-child .kz-card { display: flex; }
	.kz-card-grid > .wp-block-post:only-child .kz-card-media { min-height: 210px; }
	.kz-section--white > .kz-about-panel,
	.kz-subscribe > .kz-subscribe-panel {
		max-width: calc(100% - 40px) !important;
		width: calc(100% - 40px);
	}
	.kz-about-panel { padding: 32px 24px !important; }
	.kz-about-panel h2 { font-size: clamp(2rem, 10vw, 2.8rem); }
	.kz-page-intro { padding-bottom: 44px; padding-top: 44px; }
	.kz-page-intro .kz-page-title { font-size: clamp(2.35rem, 10vw, 3.2rem); }
	.kz-archive > .kz-page-title { font-size: 2.25rem; }
	.kz-not-found .kz-page-title { font-size: 2.5rem; }
	.kz-single-header { padding: 48px 20px; }
	.kz-single-header h1 { font-size: clamp(2.45rem, 11vw, 3.35rem); line-height: 1.09; }
	.kz-single-media { border-radius: 10px; width: calc(100% - 40px); }
	.kz-related {
		max-width: calc(100% - 40px) !important;
		padding-left: 0;
		padding-right: 0;
		width: calc(100% - 40px);
	}
	.kz-related h2 { font-size: 1.75rem; }
}

@media (min-width: 601px) and (max-width: 980px) {
	.kz-hero-inner { padding-bottom: 40px; padding-top: 36px; }
	.kz-hero-media { aspect-ratio: auto; height: 360px; }
}

@media (max-width: 600px) {
	.kz-brand a { font-size: 1rem; gap: 6px; }
	.kz-brand small { font-size: .68rem; }
	.kz-hero-inner { min-height: auto; padding: 36px 20px; }
	.kz-hero-media { aspect-ratio: 16 / 10; margin-top: 16px; }
	.kz-hero h1 { font-size: clamp(2.35rem, 11vw, 3rem); margin-bottom: 14px; }
	.kz-hero-copy { font-size: 1rem; line-height: 1.55; }
	.kz-actions { align-items: stretch; flex-direction: column; gap: 8px; margin-top: 20px; }
	.kz-actions .wp-block-button__link { min-height: 48px; }
	.kz-actions .wp-block-button,
	.kz-actions .wp-block-button__link { width: 100%; }
	.kz-card-body { padding: 20px; }
	.kz-related-grid { grid-template-columns: 1fr; }
	.kz-subscribe { padding-bottom: 40px; }
	.kz-subscribe-panel { padding: 30px 24px !important; }
	.kz-subscribe-panel h2 { font-size: 2rem; }
	.kz-footer-inner { align-items: flex-start; flex-direction: column; padding-block: 38px; }
	.wp-block-jetpack-subscriptions__form-elements { flex-direction: column; }
	.wp-block-jetpack-subscriptions__form button,
	.wp-block-jetpack-subscriptions button { width: 100%; }
	.jetpack_subscription_widget form { align-items: stretch; flex-direction: column; }
	.jetpack_subscription_widget #subscribe-submit { width: 100%; }
	.jetpack_subscription_widget button { margin-left: 0 !important; width: 100%; }
}

@media (prefers-reduced-motion: reduce) {
	html { scroll-behavior: auto; }
	.kz-page-loader { display: none !important; }
	.kz-media-surface.is-media-loading::before { animation: none !important; }
	.kz-three-canvas { display: none; }
	.kz-hero-poster { opacity: 1; }
	body.home .kz-site-header,
	body.home .kz-hero h1,
	body.home .kz-hero-copy,
	body.home .kz-actions,
	body.home .kz-hero-media,
	.kz-reveal-item {
		animation: none !important;
		opacity: 1 !important;
		transform: none !important;
	}
	*, *::before, *::after {
		animation-duration: .01ms !important;
		animation-iteration-count: 1 !important;
		scroll-behavior: auto !important;
		transition-duration: .01ms !important;
	}
}
