/*
Theme Name: Jasonbarnard 2026
Theme URI: https://jasonbarnard.com/
Author: Chris Emmanuel Balinario
Author URI: https://balinario.com/
Description: Standalone theme for jasonbarnard.com. Kalicube-branded header and footer, the entity/category/author/archive/404 templates, and the content templates previously inherited from Kadence. Requires no parent theme. Crafted by balinario.com.
Version: 2.4.1
Requires at least: 6.5
Requires PHP: 8.0
Update URI: https://portal.kalicube.com/
License: GNU General Public License v2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html
Text Domain: jasonbarnard-2026
Tags: blog, custom-menu, featured-images, translation-ready
*/

/* ---------------------------------------------------------------------------
   STANDALONE. `Template:` is gone: this theme no longer has a parent.

   It supplies its own header.php / footer.php, its own content templates
   (page/single/index/search), the five classic archive templates
   (404/archive/author/category/tag), and assets/css/inherited.css — the measured
   subset of Kadence's CSS that actually matched, with Kadence's generated global
   block frozen in from production.

   Kadence Blocks and Kadence Blocks Pro are still required as PLUGINS: the site's
   content is authored in them. They are independent of the Kadence theme. Their
   block markup references --global-palette1..15, which inherited.css defines.
--------------------------------------------------------------------------- */

/* ---------------------------------------------------------------------------
   Header: brand-red sticky bar hosting the identity row and the mega menu.
--------------------------------------------------------------------------- */
.site-header {
	background: var(--wp--preset--color--primary, #990000);
	position: sticky;
	top: 0;
	z-index: 100;
}

body.admin-bar .site-header {
	top: 32px;
}

.site-header__top {
	padding-top: 14px;
}

.site-header__identity .wp-block-site-logo {
	flex-shrink: 0;
}

.site-header__identity .wp-block-site-logo img {
	border-radius: 50%;
	height: 64px;
	width: 64px;
	min-width: 64px;
	flex-shrink: 0;
	object-fit: cover;
}

/* The button block's alignment wrapper stretches to the free space, which
   starves the tagline; in the header row it hugs its content instead. */
.site-header__top .wp-block-kalicube-button {
	flex: 0 0 auto;
	width: auto;
}

.site-header__identity .wp-block-site-title a {
	color: var(--wp--preset--color--white, #ffffff);
	font-size: 1.5rem;
	font-weight: 700;
	letter-spacing: 0.02em;
	text-decoration: none;
	white-space: nowrap;
}

.site-header__tagline {
	color: var(--wp--preset--color--white, #ffffff);
	flex: 1;
	font-size: 0.95rem;
	margin: 0 2rem;
	opacity: 0.95;
	text-align: center;
}

/* Header elements render instantly: the plugin's entrance-animation system
   would otherwise fade the CTA in on every page load. */
.site-header [class*="wp-block-kalicube-"].kalicube-motion-ready {
	opacity: 1 !important;
	transform: none !important;
	transition: none !important;
	will-change: auto !important;
}

/* The mega menu block ships its own styles; the row just needs breathing room. */
.site-header__nav {
	padding-bottom: 2px;
}

/* ---------------------------------------------------------------------------
   Header — mobile / tablet (the mega menu collapses to a hamburger < 1025px).
   Hide the crushing centre tagline, tighten the identity row, and turn the
   thin stranded hamburger into an obvious, right-aligned, labelled button.
--------------------------------------------------------------------------- */
@media (max-width: 1024px) {
	.site-header__tagline {
		display: none;
	}

	.site-header__top {
		padding-top: 12px;
		padding-left: 20px;
		padding-right: 20px;
	}

	.site-header__identity .wp-block-site-logo img {
		height: 46px;
		width: 46px;
		min-width: 46px;
	}

	.site-header__identity .wp-block-site-title a {
		font-size: 1.2rem;
		/* Let a long site title (e.g. "Jason BARNARD") wrap rather than crowd
		   the row and squeeze the logo. */
		white-space: normal;
	}

	.site-header__top .wp-block-kalicube-button .kalicube-button__link {
		font-size: 0.82rem;
		padding: 0.5em 1.15em;
	}

	/* Right-align the hamburger and give it a divider above so the two rows
	   read as one tidy header. */
	.site-header__nav {
		border-top: 1px solid rgba(255, 255, 255, 0.16);
		padding-top: 6px;
		padding-bottom: 8px;
		padding-left: 20px;
		padding-right: 20px;
	}

	.site-header__nav .kalicube-mega-menu {
		display: flex;
		justify-content: flex-end;
	}

	/* Make the toggle a clear, tappable, labelled button. */
	.site-header__nav .kalicube-mega-menu__toggle {
		align-items: center;
		border: 1px solid rgba(255, 255, 255, 0.5);
		border-radius: 8px;
		color: #fff;
		gap: 8px;
		padding: 8px 14px;
	}

	.site-header__nav .kalicube-mega-menu__toggle svg {
		width: 24px;
		height: 24px;
	}

	.site-header__nav .kalicube-mega-menu__toggle::after {
		content: "Menu";
		font-family: "Ubuntu", system-ui, sans-serif;
		font-size: 0.82rem;
		font-weight: 600;
		letter-spacing: 0.08em;
		text-transform: uppercase;
	}
}

/* Phones: shrink the title + CTA so the identity row never crowds. */
@media (max-width: 480px) {
	.site-header__identity .wp-block-site-title a {
		font-size: 1.05rem;
	}

	.site-header__top .wp-block-kalicube-button .kalicube-button__link {
		font-size: 0.75rem;
		padding: 0.45em 0.95em;
	}
}

/* ---------------------------------------------------------------------------
   "Featured In" logo marquee — the scrolling press-logo band that sits
   directly under the header nav (rendered from parts/header.html). Give it a
   clean white band, page gutters, and a hairline separator from the content.
--------------------------------------------------------------------------- */
.wp-block-kalicube-logo-marquee {
	background: #ffffff;
	border-bottom: 1px solid rgba(15, 15, 15, 0.08);
	padding-top: 14px;
	padding-bottom: 14px;
	padding-left: 3rem;
	padding-right: 3rem;
}

/* Neutral treatment (matches kalicube.com): desaturate + mute the press logos
   so their brand colours don't clash with the red/gold theme. Full colour on
   hover. */
.wp-block-kalicube-logo-marquee .logo-item img {
	filter: grayscale(1);
	opacity: 0.55;
	transition: filter 0.25s ease, opacity 0.25s ease;
}

.wp-block-kalicube-logo-marquee .logo-item img:hover {
	filter: grayscale(0);
	opacity: 1;
}

/* Quiet grey eyebrow for the title, like kalicube's "Trusted by". */
.wp-block-kalicube-logo-marquee .marquee-title,
.wp-block-kalicube-logo-marquee .marquee-title h2 {
	color: #6b7691 !important;
	font-family: "Ubuntu", system-ui, sans-serif;
	font-size: 11px !important;
	font-weight: 500 !important;
	letter-spacing: 0.16em !important;
	text-transform: uppercase !important;
	margin: 0 !important;
}

@media (max-width: 781px) {
	.wp-block-kalicube-logo-marquee {
		padding-left: 20px;
		padding-right: 20px;
	}
}

/* ---------------------------------------------------------------------------
   Footer — solid brand-red panel matching the header bar. White headings and
   links, gold "Book Jason" CTA, white social tiles and a ghost Google pill
   mirror the live jasonbarnard.com footer.
--------------------------------------------------------------------------- */
.site-footer {
	background: var(--wp--preset--color--primary, #990000);
	color: var(--wp--preset--color--white, #ffffff);
}

.site-footer a {
	color: rgba(255, 255, 255, 0.85);
	text-decoration: none;
	transition: color 0.18s ease;
}

.site-footer a:hover,
.site-footer a:focus-visible {
	/* Lighter gold — 5.3:1 on brand red, clears WCAG AA (the base #dfa408 is only 4.0:1). */
	color: var(--wp--preset--color--accent-light, #f5c05a);
}

/* Kalicube buttons must keep their own metal-sheen transition + hover — the
   generic `.site-footer a` rules above otherwise flatten the transition to
   color-only and recolour the label gold on hover, so the footer "Book Jason"
   button no longer matched the header "Work with me" button. Restore both. */
.site-footer a.kalicube-button__link,
.site-footer a.kalicube-button__link .kalicube-button__label {
	/* Use the button's own label colour, not the generic white footer-link
	   colour, so the label matches the header button (#231a02). */
	color: var(--kalicube-button-text, #231a02);
}

.site-footer a.kalicube-button__link {
	transition: transform 180ms ease, opacity 180ms ease, box-shadow 180ms ease,
		background-color 180ms ease, color 180ms ease, border-color 180ms ease;
}

.site-footer a.kalicube-button__link:hover,
.site-footer a.kalicube-button__link:hover .kalicube-button__label,
.site-footer a.kalicube-button__link:focus-visible,
.site-footer a.kalicube-button__link:focus-visible .kalicube-button__label {
	color: var(--kalicube-button-hover-text, var(--kalicube-button-text, #231a02));
}

.site-footer__main {
	padding: 64px 0 44px;
}

.site-footer__columns {
	gap: 2.5rem;
}

/* Brand column */
.site-footer__brand .wp-block-site-logo img {
	border-radius: 50%;
	height: 56px;
	width: 56px;
}

.site-footer__brand .wp-block-site-title a {
	color: var(--wp--preset--color--white, #ffffff);
	font-size: 1.3rem;
	font-weight: 700;
	white-space: nowrap;
}

.site-footer__tagline {
	color: rgba(255, 255, 255, 0.8);
	font-size: 0.95rem;
	line-height: 1.55;
	margin: 16px 0 20px;
	max-width: 34ch;
}

/* Column headings — white, matching the live footer */
.site-footer__heading {
	color: var(--wp--preset--color--white, #ffffff);
	font-size: 0.82rem;
	font-weight: 700;
	letter-spacing: 0.14em;
	margin: 0 0 16px;
	text-transform: uppercase;
}

/* Stacked headings within one column (e.g. Writing under Speaking) */
.site-footer__nav-col .site-footer__links + .site-footer__heading {
	margin-top: 28px;
}

.site-footer__links {
	list-style: none;
	margin: 0;
	padding: 0;
}

.site-footer__links li {
	font-size: 0.95rem;
	line-height: 1.35;
	margin-bottom: 11px;
}

/* Social tiles — white rounded squares, brand-red glyph, gold lift on hover */
.site-footer__social {
	gap: 10px;
	margin-top: 24px;
}

.site-footer__social.wp-block-social-links .wp-social-link {
	border-radius: 8px;
	transition: transform 0.15s ease, background-color 0.18s ease;
}

.site-footer__social.wp-block-social-links .wp-social-link:hover {
	background-color: var(--wp--preset--color--accent, #dfa408) !important;
	transform: translateY(-2px);
}

/* Google "preferred source" CTA — styled like a real Google button so the
   action reads as Google-related: white surface, 4-colour "G" mark, Google
   grey text, hairline border + soft shadow, uniform 4px corners. */
.site-footer__google-cta {
	margin: 22px 0 0;
}

.site-footer__google-cta a {
	align-items: center;
	background-color: #ffffff;
	border: 1px solid #dadce0;
	/* Pill radius to match the metal-sheen buttons in the header + footer. */
	border-radius: 999px;
	box-shadow: 0 1px 2px rgba(60, 64, 67, 0.18);
	color: #3c4043;
	display: inline-flex;
	font-family: "Roboto", "DM Sans", system-ui, -apple-system, sans-serif;
	font-size: 0.9rem;
	font-weight: 500;
	gap: 10px;
	letter-spacing: 0;
	line-height: 1.25;
	padding: 10px 18px;
	text-transform: none;
	transition: background-color 0.18s ease, box-shadow 0.18s ease, border-color 0.18s ease;
}

.site-footer__google-cta a::before {
	background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 48 48'%3E%3Cpath fill='%23EA4335' d='M24 9.5c3.54 0 6.71 1.22 9.21 3.6l6.85-6.85C35.9 2.38 30.47 0 24 0 14.62 0 6.51 5.38 2.56 13.22l7.98 6.19C12.43 13.72 17.74 9.5 24 9.5z'/%3E%3Cpath fill='%234285F4' d='M46.98 24.55c0-1.57-.15-3.09-.38-4.55H24v9.02h12.94c-.58 2.96-2.26 5.48-4.78 7.18l7.73 6c4.51-4.18 7.09-10.36 7.09-17.65z'/%3E%3Cpath fill='%23FBBC05' d='M10.53 28.59c-.48-1.45-.76-2.99-.76-4.59s.27-3.14.76-4.59l-7.98-6.19C.92 16.46 0 20.12 0 24c0 3.88.92 7.54 2.56 10.78l7.97-6.19z'/%3E%3Cpath fill='%2334A853' d='M24 48c6.48 0 11.93-2.13 15.89-5.81l-7.73-6c-2.15 1.45-4.92 2.3-8.16 2.3-6.26 0-11.57-4.22-13.47-9.91l-7.98 6.19C6.51 42.62 14.62 48 24 48z'/%3E%3C/svg%3E") center / contain no-repeat;
	content: "";
	flex: 0 0 18px;
	height: 18px;
	width: 18px;
}

.site-footer__google-cta a:hover,
.site-footer__google-cta a:focus-visible {
	background-color: #f8f9fa;
	border-color: #d2d5da;
	box-shadow: 0 1px 3px rgba(60, 64, 67, 0.3);
	color: #202124;
}

/* Bottom legal bar */
.site-footer__legal {
	border-top: 1px solid rgba(255, 255, 255, 0.16);
	padding: 22px 0 28px;
}

.site-footer__legal p {
	color: rgba(255, 255, 255, 0.7);
	font-size: 0.85rem;
	margin: 0;
	text-align: center;
}

/* CTAs render instantly here too. */
.site-footer [class*="wp-block-kalicube-"].kalicube-motion-ready {
	opacity: 1 !important;
	transform: none !important;
	transition: none !important;
	will-change: auto !important;
}

/* Tablet: core wp:columns forces flex-wrap:nowrap at >=782px, so we re-enable
   wrapping (compound selector beats core's specificity) and lay the four link
   columns out 2-up beneath a full-width brand column. Below 782px core stacks
   every column to a single full-width row on its own. */
@media (min-width: 782px) and (max-width: 1024px) {
	.wp-block-columns.site-footer__columns {
		flex-wrap: wrap !important;
	}

	.site-footer__brand-col {
		flex-basis: 100% !important;
	}

	.site-footer__nav-col,
	.site-footer__legal-col {
		flex-basis: calc(50% - 1.25rem) !important;
	}
}

@media (max-width: 781px) {
	.site-footer__main {
		padding: 44px 0 28px;
	}

	.site-footer__columns {
		gap: 2rem;
	}
}

/* ---------------------------------------------------------------------------
   Content spacing. Kadence applies 80px of vertical margin to .content-area by
   default; the previous site design hid it (body.content-vertical-padding-hide),
   which this child theme doesn't inherit. Zero it so full-bleed heroes sit
   flush under the header/marquee (removes the gap between header and hero).
--------------------------------------------------------------------------- */
.content-area {
	margin-top: 0 !important;
	margin-bottom: 0 !important;
}

/* ===========================================================================
   Kalicube 2026 archive-family skin — ported from kalicube.com's kadence-child
   theme for the /entity/<term>/ (tag), category, author and archive templates.
   The deep-blue palette is remapped to the jasonbarnard brand red via the
   --kc-* tokens below; the gold accent is kept (it's a jasonbarnard brand
   colour too). Change the tokens to reshade every template at once.
   =========================================================================== */
:root {
	/* Hero gradient — brand red (start matches the header/footer bar exactly). */
	--kc-navy: var(--wp--preset--color--primary, #990000);
	--kc-navy-deep: #5c0000;
	/* Neutral ink + body text (unchanged from source). */
	--kc-ink: #1a2233;
	--kc-body-text: #46536a;
	--kc-muted: #64748b;
	/* Gold accent = jasonbarnard accent / accent-light. */
	--kc-gold: var(--wp--preset--color--accent, #dfa408);
	--kc-gold-soft: var(--wp--preset--color--accent-light, #f5c05a);
	--kc-gold-text: #8a6a1f; /* WCAG-AA gold for text on white */
	/* Former blue accents remapped into the red family. */
	--kc-blue: #990000;
	--kc-blue-deep: #7a0000;
	--kc-blue-text: #990000; /* dark red, passes AA on white */
	--kc-cream: #f7f5f0;
	--kc-panel: #f4f7fb;
	--kc-line: #e2e8f0;
	--kc-heading-font: 'Open Sans', var(--global-heading-font-family, sans-serif);
	--kc-label-font: 'DM Sans', 'Ubuntu', sans-serif;
	--kc-serif: 'Libre Baskerville', Georgia, serif;
}

/* ---- Tag / entity page ---- */
.kalicube-tag-page-bg {
	min-height: 100vh;
	background: var(--kc-panel);
	padding: 40px 0 60px 0;
}
.kalicube-tag-container {
	max-width: 800px;
	margin: 0 auto;
	padding: 0 20px;
}
.kalicube-tag-header {
	text-align: center;
	margin-bottom: 40px;
}
.kalicube-tag-badge {
	display: inline-block;
	background: rgba(223, 164, 8, 0.16);
	color: var(--kc-gold);
	font-size: 1.1rem;
	padding: 8px 24px;
	border-radius: 9999px;
	font-weight: 600;
	margin-bottom: 16px;
}
.kalicube-tag-title {
	font-size: 2.5rem;
	font-weight: bold;
	margin-bottom: 8px;
	color: var(--kc-cream);
}
.kalicube-tag-type {
	text-align: center;
	margin-top: 4px;
	color: rgba(247, 245, 240, 0.7);
	font-weight: 600;
}

/* ---- Content cards ---- */
.kalicube-card {
	background: #fff;
	border-radius: 12px;
	box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);
	margin-bottom: 32px;
	padding: 32px 32px 24px 32px;
}
.kalicube-card-title {
	font-family: var(--kc-heading-font);
	font-size: 1.4rem;
	font-weight: 700;
	margin-bottom: 16px;
	display: flex;
	align-items: center;
	gap: 8px;
	color: var(--kc-ink);
}
.kalicube-card-title::after {
	content: "";
	flex: 0 0 40px;
	height: 3px;
	border-radius: 2px;
	background: var(--kc-gold);
	margin-left: 6px;
}
.kalicube-card-content {
	font-size: 1.125rem;
	color: #374151;
	line-height: 1.7;
}
.kalicube-ascii-diagram {
	display: block;
	white-space: pre !important;
	overflow-wrap: normal !important;
	word-break: normal !important;
	overflow-x: auto;
	overflow-y: hidden;
	max-width: 100%;
	box-sizing: border-box;
	font-variant-ligatures: none;
	text-rendering: optimizeSpeed;
	font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace !important;
	font-size: 12.5px !important;
	line-height: 1.25 !important;
	background-color: #f8fafc !important;
	border: 1px solid #e5e7eb !important;
	border-radius: 8px;
	padding: 16px !important;
	color: #111827 !important;
}
.kalicube-synonym-list {
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
}
.kalicube-llm-entity-angle {
	margin-bottom: 16px;
}
.kalicube-icon {
	display: inline-block;
	vertical-align: middle;
	color: #9ca3af;
}

/* ---- Post/page card grid (Posts tagged with… / Related Pages) ---- */
.kalicube-posts-grid {
	display: grid;
	gap: 24px;
	margin-bottom: 32px;
}
.kalicube-post-card-link {
	display: block;
	text-decoration: none;
	border-radius: 16px;
	transition: box-shadow 0.2s, transform 0.2s;
}
.kalicube-post-card {
	background: #fff;
	border: 1px solid #e5e7eb;
	border-radius: 16px;
	padding: 28px 28px 20px 28px;
	box-shadow: 0 1px 4px rgba(15, 31, 61, 0.04);
	transition: box-shadow 0.2s, transform 0.2s, border 0.2s;
}
.kalicube-post-card-link:hover .kalicube-post-card {
	box-shadow: 0 10px 26px rgba(15, 31, 61, 0.10);
	border-color: rgba(153, 0, 0, 0.35);
	transform: translateY(-4px) scale(1.01);
}
.kalicube-post-card-header {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 18px;
	margin-bottom: 12px;
}
.kalicube-post-card-title {
	font-size: 1.25rem;
	font-weight: 600;
	color: #1e293b;
	margin: 0;
	transition: color 0.2s;
}
.kalicube-post-card-link:hover .kalicube-post-card-title {
	color: var(--kc-blue-deep);
}
.kalicube-post-arrow {
	display: flex;
	align-items: center;
	transition: color 0.2s, transform 0.2s;
}
.kalicube-post-card-link:hover .kalicube-post-arrow {
	color: var(--kc-gold);
	transform: translateX(4px);
}
.kalicube-post-card-excerpt {
	color: #6b7280;
	margin-bottom: 18px;
	font-size: 1rem;
	line-height: 1.6;
}
.kalicube-post-card-meta {
	display: flex;
	align-items: center;
	justify-content: space-between;
	font-size: 0.97rem;
	color: #6b7280;
	padding-top: 8px;
}
.kalicube-post-card-meta-left {
	display: flex;
	align-items: center;
	gap: 10px;
}
.kalicube-post-card-tags-row {
	display: flex;
	align-items: center;
	gap: 6px;
	flex-wrap: wrap;
	margin-bottom: 8px;
	margin-top: 8px;
}
.kalicube-badge {
	display: inline-block;
	border: 1px solid #dbe4ee;
	background: var(--kc-panel);
	color: var(--kc-blue-deep);
	border-radius: 8px;
	padding: 2px 10px;
	font-size: 0.85em;
	font-weight: 500;
	transition: background 0.2s, border 0.2s;
}
.kalicube-badge-more {
	color: #6b7280;
	border-color: #d1d5db;
	background: #f3f4f6;
}
.kalicube-post-card-link:hover .kalicube-badge {
	background: #f7ecec;
	border-color: var(--kc-blue);
}
.kalicube-post-card-link:hover .kalicube-badge-more {
	background: #f3f4f6;
	border-color: #d1d5db;
}

/* ---- Archive / category / author shared hero + grid ---- */
.kalicube-archive {
	padding: 2.5rem 0 4rem;
}
.kalicube-archive-hero {
	background:
		linear-gradient(rgba(255, 235, 235, 0.06) 1px, transparent 1px),
		linear-gradient(90deg, rgba(255, 235, 235, 0.06) 1px, transparent 1px),
		linear-gradient(135deg, var(--kc-navy) 0%, var(--kc-navy-deep) 100%);
	background-size: 44px 44px, 44px 44px, 100% 100%;
	border-radius: 18px;
	padding: 48px 56px 44px;
	margin-bottom: 40px;
	text-align: center;
}
.kalicube-archive-hero__eyebrow {
	display: inline-block;
	font-family: var(--kc-label-font);
	font-size: 12.5px;
	font-weight: 700;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	color: #f3c56b;
	margin-bottom: 14px;
}
.kalicube-archive-hero__eyebrow::before,
.kalicube-archive-hero__eyebrow::after {
	content: "";
	display: inline-block;
	vertical-align: middle;
	width: 22px;
	height: 2px;
	background: var(--kc-gold);
	margin: 0 10px;
}
.kalicube-archive-hero__title {
	font-family: var(--kc-heading-font);
	font-weight: 700;
	font-size: clamp(1.9rem, 1.2rem + 2.4vw, 2.75rem);
	line-height: 1.2;
	letter-spacing: -0.01em;
	color: var(--kc-cream) !important;
	margin: 0 0 10px;
}
.kalicube-archive-hero__description {
	max-width: 70ch;
	margin: 14px auto 0;
	color: rgba(247, 245, 240, 0.75);
	line-height: 1.7;
}
.kalicube-archive-hero__description p:last-child {
	margin-bottom: 0;
}
.kalicube-archive-grid {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));
	gap: 26px;
}
.kalicube-archive-card {
	display: flex;
	flex-direction: column;
	background: #fff;
	border: 1px solid var(--kc-line);
	border-radius: 14px;
	padding: 28px 28px 22px;
	box-shadow: 0 6px 20px rgba(15, 31, 61, 0.05);
	transition: transform 0.2s ease, box-shadow 0.2s ease, border-color 0.2s ease;
}
.kalicube-archive-card:hover {
	transform: translateY(-4px);
	box-shadow: 0 14px 30px rgba(15, 31, 61, 0.1);
	border-color: rgba(153, 0, 0, 0.35);
}
.kalicube-archive-card__title {
	font-family: var(--kc-heading-font);
	font-size: 1.2rem;
	font-weight: 700;
	line-height: 1.35;
	letter-spacing: -0.01em;
	margin: 0 0 12px;
}
.kalicube-archive-card__title a {
	color: var(--kc-ink);
	text-decoration: none;
}
.kalicube-archive-card__title a:hover {
	color: var(--kc-blue-deep);
}
.kalicube-archive-card__excerpt {
	color: var(--kc-body-text);
	line-height: 1.65;
	font-size: 0.98rem;
	margin: 0 0 18px;
}
.kalicube-archive-card__footer {
	margin-top: auto;
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 14px;
	padding-top: 14px;
	border-top: 1px solid var(--kc-line);
}
.kalicube-archive-card__meta {
	font-family: var(--kc-label-font);
	font-size: 13px;
	color: var(--kc-muted);
}
.kalicube-archive-card__more {
	font-family: var(--kc-label-font);
	font-size: 12.5px;
	font-weight: 700;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--kc-gold-text);
	text-decoration: none;
	white-space: nowrap;
	transition: color 0.15s ease;
}
.kalicube-archive-card__more:hover {
	color: var(--kc-blue-text);
}
.kalicube-archive-card__more span {
	transition: transform 0.15s ease;
	display: inline-block;
}
.kalicube-archive-card__more:hover span {
	transform: translateX(3px);
}

/* ---- Pagination ---- */
.kalicube-archive-pagination {
	margin-top: 44px;
	text-align: center;
}
.kalicube-archive-pagination .page-numbers {
	display: inline-block;
	min-width: 40px;
	padding: 9px 14px;
	margin: 0 3px;
	border: 1px solid var(--kc-line);
	border-radius: 8px;
	background: #fff;
	color: var(--kc-ink);
	font-family: var(--kc-label-font);
	font-weight: 600;
	font-size: 14px;
	text-decoration: none;
	transition: border-color 0.15s ease, color 0.15s ease;
}
.kalicube-archive-pagination .page-numbers.current {
	background: var(--kc-navy);
	border-color: var(--kc-navy);
	color: var(--kc-cream);
}
.kalicube-archive-pagination a.page-numbers:hover {
	border-color: var(--kc-gold);
	color: var(--kc-blue-deep);
}

/* ---- Section title (author page) ---- */
.kalicube-archive-section-title {
	font-family: var(--kc-heading-font);
	font-weight: 700;
	font-size: 1.6rem;
	color: var(--kc-ink);
	letter-spacing: -0.015em;
	margin: 0 0 6px;
}
.kalicube-archive-section-title::after {
	content: "";
	display: block;
	width: 52px;
	height: 3px;
	border-radius: 2px;
	margin-top: 12px;
	background: var(--kc-gold);
}

/* ---- Author hero + grouped lists ---- */
.kalicube-author-hero__avatar {
	margin-bottom: 18px;
}
.kalicube-author-hero__avatar img {
	border-radius: 50%;
	border: 3px solid var(--kc-gold);
	padding: 3px;
	background: #fff;
}
.kalicube-author-hero__links {
	margin-top: 22px;
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	gap: 10px;
}
.kalicube-author-hero__links a {
	display: inline-block;
	padding: 7px 18px;
	border: 1px solid rgba(247, 245, 240, 0.3);
	border-radius: 999px;
	color: var(--kc-cream);
	font-family: var(--kc-label-font);
	font-size: 13px;
	font-weight: 600;
	text-decoration: none;
	transition: border-color 0.15s ease, color 0.15s ease, background 0.15s ease;
}
.kalicube-author-hero__links a:hover {
	border-color: var(--kc-gold);
	color: var(--kc-gold);
	background: rgba(223, 164, 8, 0.10);
}
.kalicube-author-groups {
	margin-top: 28px;
	display: grid;
	gap: 22px;
}
.kalicube-author-group {
	background: #fff;
	border: 1px solid var(--kc-line);
	border-radius: 14px;
	padding: 26px 30px;
	box-shadow: 0 6px 20px rgba(15, 31, 61, 0.04);
}
.kalicube-author-group__title {
	font-family: var(--kc-heading-font);
	font-size: 1.15rem;
	font-weight: 700;
	color: var(--kc-ink);
	margin: 0 0 14px;
	padding-bottom: 12px;
	border-bottom: 2px solid var(--kc-gold);
	display: inline-block;
}
.kalicube-author-group__list {
	margin: 0;
	padding-left: 22px;
	color: var(--kc-gold);
	font-weight: 700;
}
.kalicube-author-group__list li {
	margin-bottom: 8px;
	padding-left: 4px;
}
.kalicube-author-group__list a {
	font-weight: 400;
	color: #33415c;
	text-decoration: none;
	transition: color 0.15s ease;
}
.kalicube-author-group__list a:hover {
	color: var(--kc-blue-deep);
}
.kalicube-archive-empty {
	text-align: center;
	color: var(--kc-muted);
	padding: 40px 0;
}

/* Tag page hero inherits .kalicube-archive-hero; keep its container width. */
.kalicube-tag-header.kalicube-archive-hero {
	margin-bottom: 32px;
}

/* ---- "Load More" metal-sheen button (kalicube-blocks plugin styles the real
   thing; this is a zero-specificity fallback so it stays presentable if that
   plugin is inactive). ---- */
.kalicube-theme-button {
	display: inline-block;
	--kalicube-button-font-family: 'DM Sans', sans-serif;
	--kalicube-button-font-size: 0.85rem;
	--kalicube-button-letter-spacing: 0.06em;
	--kalicube-button-border-radius: 6px;
}
.kalicube-theme-button .kalicube-button__label {
	text-transform: uppercase;
	letter-spacing: 0.06em;
	font-family: 'DM Sans', sans-serif;
}
:where(.kalicube-theme-button .kalicube-button__link--metal-sheen) {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	padding: 13px 24px;
	background: var(--kc-gold);
	color: #231a02;
	border: 0;
	border-radius: 6px;
	font-weight: 700;
	font-size: 0.85rem;
	text-decoration: none;
	cursor: pointer;
}
:where(.kalicube-theme-button .kalicube-button__arrow) {
	width: 1em;
	height: 1em;
}

@media (max-width: 767px) {
	.kalicube-archive-hero {
		padding: 32px 22px 30px;
		border-radius: 14px;
	}
	.kalicube-archive-card {
		padding: 22px;
	}
	.kalicube-card {
		padding: 24px 22px 20px;
	}
	.kalicube-tag-title {
		font-size: 2rem;
	}
}

/* ---- 404 page (reuses the red .kalicube-archive-hero) ---- */
.kalicube-404 {
	padding-bottom: 5rem;
}
.kalicube-404__hero {
	padding: 72px 56px 64px;
}
.kalicube-404__accent {
	font-family: var(--kc-serif);
	font-style: italic;
	font-weight: 700;
	font-size: clamp(1.6rem, 1rem + 2vw, 2.3rem);
	color: var(--kc-gold);
	margin: 2px 0 18px;
}
.kalicube-404__search {
	max-width: 520px;
	margin: 26px auto 0;
}
.kalicube-404__form {
	display: flex;
	gap: 10px;
	align-items: stretch;
}
.kalicube-404__form input.kalicube-404__field[type="search"] {
	flex: 1;
	padding: 13px 18px;
	border: 1px solid rgba(247, 245, 240, 0.25);
	border-radius: 8px;
	background: rgba(247, 245, 240, 0.06);
	color: var(--kc-cream);
	font-family: 'Ubuntu', sans-serif;
}
.kalicube-404__form input.kalicube-404__field[type="search"]::placeholder {
	color: rgba(247, 245, 240, 0.5);
}
.kalicube-404__form input.kalicube-404__field[type="search"]:focus {
	outline: none;
	border-color: var(--kc-gold);
	background: rgba(247, 245, 240, 0.1);
}
.kalicube-404__form .kalicube-theme-button {
	flex: 0 0 auto;
}
.kalicube-404__links .kalicube-theme-button,
.kalicube-404__form .kalicube-theme-button {
	display: inline-flex;
	width: auto;
}
.kalicube-404__links .kalicube-theme-button .kalicube-button__link--metal-sheen,
.kalicube-404__form .kalicube-theme-button .kalicube-button__link--metal-sheen {
	display: inline-flex;
	align-items: center;
	gap: 8px;
}
.kalicube-404__links {
	margin-top: 30px;
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	align-items: center;
	gap: 12px;
}
.kalicube-404__links a:not(.kalicube-button__link) {
	display: inline-block;
	padding: 9px 20px;
	border: 1px solid rgba(247, 245, 240, 0.3);
	border-radius: 999px;
	color: var(--kc-cream);
	font-family: var(--kc-label-font);
	font-size: 13.5px;
	font-weight: 600;
	text-decoration: none;
	transition: border-color 0.15s ease, color 0.15s ease, background 0.15s ease;
}
.kalicube-404__links a:not(.kalicube-button__link):hover {
	border-color: var(--kc-gold);
	color: var(--kc-gold);
	background: rgba(223, 164, 8, 0.10);
}
@media (max-width: 640px) {
	.kalicube-404__hero {
		padding: 44px 24px 40px;
	}
	.kalicube-404__form {
		flex-direction: column;
	}
}

/* ---- Post tags (single.php → jb2026_entry_footer) ----
   inherited.css carries the parent's .entry-tags rules, but its coverage run
   never saw a hover, so the parent's hover state was not extracted. */
.entry-tags a.tag-link:hover {
	background: var(--global-palette-highlight);
	color: var(--global-palette-btn);
	border-color: var(--global-palette-highlight);
}

/* ---- Kalicube Pro guests (#kalicube-guest-root, homepage accordion) ----
   Pro's guest CSS is printed first and wrapped in :where(), so it has zero
   specificity and any rule of ours wins. That is by design for appearance, but
   the element resets in inherited.css win too, and they undo Pro's structure:
   `*{box-sizing:inherit}` and `summary{display:list-item}` push the summary
   ~2em wider than its <details> (the ▼ marker sits outside the box), and the
   ul/img resets put bullets, an indent and full-height favicons back. These
   restore Pro's own values for the guest subtree only. */
.kalicube-accordion-host .kalicube-accordion > summary {
	box-sizing: border-box;
	display: block;
}
.kalicube-accordion-host .kalicube-url-list {
	list-style: none;
	margin: 0;
}
.kalicube-accordion-host .link-with-favicon img,
.kalicube-accordion-host img[src*="favicon"],
.kalicube-accordion-host img.kali-favicon {
	height: 16px;
}
