/*
 * Ventureheap Theme - core stylesheet.
 * Mobile first. All colours and metrics come from CSS custom properties that
 * are printed inline by inc/enqueue.php, so the Customizer and the plugin's
 * Global Styles screen can both drive the same design system.
 */

/* ------------------------------------------------------------------ Tokens */
:root {
	--vh-color-primary: #1a56db;
	--vh-color-secondary: #0f172a;
	--vh-color-accent: #f59e0b;
	--vh-color-text: #1f2937;
	--vh-color-muted: #6b7280;
	--vh-color-bg: #ffffff;
	--vh-color-alt: #f7f8fa;
	--vh-color-border: #e5e7eb;
	--vh-container: 1200px;
	--vh-radius: 12px;
	--vh-radius-button: 8px;
	--vh-font-body: system-ui, -apple-system, "Segoe UI", Roboto, Arial, sans-serif;
	--vh-font-heading: inherit;
	--vh-gap: 24px;
	--vh-section-y: 64px;
	--vh-shadow: 0 1px 2px rgba(16, 24, 40, .06), 0 4px 16px rgba(16, 24, 40, .06);
	--vh-shadow-lg: 0 12px 32px rgba(16, 24, 40, .12);
	--vh-transition: .2s ease;
}

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

body {
	margin: 0;
	font-family: var(--vh-font-body);
	font-size: 16px;
	line-height: 1.65;
	color: var(--vh-color-text);
	background: var(--vh-color-bg);
	-webkit-font-smoothing: antialiased;
	overflow-wrap: break-word;
}

img, svg, video, iframe { max-width: 100%; height: auto; }
img { display: block; }

h1, h2, h3, h4, h5, h6 {
	font-family: var(--vh-font-heading);
	color: var(--vh-color-secondary);
	line-height: 1.25;
	margin: 0 0 .5em;
	font-weight: 700;
}

h1 { font-size: clamp(1.9rem, 1.4rem + 2.2vw, 3rem); }
h2 { font-size: clamp(1.5rem, 1.2rem + 1.4vw, 2.25rem); }
h3 { font-size: clamp(1.25rem, 1.1rem + .7vw, 1.6rem); }
h4 { font-size: 1.2rem; }
h5 { font-size: 1.05rem; }
h6 { font-size: .95rem; text-transform: uppercase; letter-spacing: .06em; }

p, ul, ol, dl, table, pre, figure, blockquote { margin: 0 0 1.15rem; }

a { color: var(--vh-color-primary); text-decoration: none; transition: color var(--vh-transition); }
a:hover, a:focus { text-decoration: underline; }

:focus-visible {
	outline: 3px solid var(--vh-color-primary);
	outline-offset: 2px;
	border-radius: 3px;
}

blockquote {
	border-left: 4px solid var(--vh-color-primary);
	padding: .25rem 0 .25rem 1.25rem;
	color: var(--vh-color-secondary);
	font-size: 1.1rem;
}

code, kbd, pre { font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; font-size: .92em; }
pre { background: var(--vh-color-alt); padding: 1rem; border-radius: var(--vh-radius); overflow-x: auto; }

table { width: 100%; border-collapse: collapse; }
th, td { padding: .7rem .8rem; border: 1px solid var(--vh-color-border); text-align: left; }
th { background: var(--vh-color-alt); }

hr { border: 0; border-top: 1px solid var(--vh-color-border); margin: 2rem 0; }

/* ------------------------------------------------------------ Accessibility */
.screen-reader-text {
	border: 0;
	clip-path: inset(50%);
	height: 1px;
	margin: -1px;
	overflow: hidden;
	padding: 0;
	position: absolute;
	width: 1px;
	white-space: nowrap;
}

.skip-link:focus {
	clip-path: none;
	height: auto;
	width: auto;
	margin: 0;
	position: fixed;
	top: 8px;
	left: 8px;
	z-index: 100000;
	padding: .7rem 1.1rem;
	background: var(--vh-color-secondary);
	color: #fff;
	border-radius: var(--vh-radius-button);
}

/* ------------------------------------------------------------------ Layout */
.vh-container {
	width: 100%;
	max-width: var(--vh-container);
	margin-inline: auto;
	padding-inline: 20px;
}

.vh-main { display: block; min-height: 40vh; }

.vh-content-wrap {
	display: grid;
	gap: 40px;
	padding-block: var(--vh-section-y);
	grid-template-columns: 1fr;
}

.vh-primary { min-width: 0; }

.vh-grid { display: grid; gap: var(--vh-gap); grid-template-columns: 1fr; }

.vh-cols-2, .vh-cols-3, .vh-cols-4, .vh-cols-5, .vh-cols-6 { grid-template-columns: 1fr; }

/* ------------------------------------------------------------------ Buttons */
.vh-btn,
button,
input[type="submit"],
input[type="button"],
.wp-block-button__link {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: .5rem;
	font: inherit;
	font-weight: 600;
	line-height: 1.2;
	padding: .8rem 1.4rem;
	border: 1px solid transparent;
	border-radius: var(--vh-radius-button);
	background: var(--vh-color-primary);
	color: #fff;
	cursor: pointer;
	text-decoration: none;
	transition: background var(--vh-transition), color var(--vh-transition), border-color var(--vh-transition), transform var(--vh-transition);
}

.vh-btn:hover, button:hover, input[type="submit"]:hover { filter: brightness(.92); text-decoration: none; color: #fff; }

.vh-btn-outline {
	background: transparent;
	color: var(--vh-color-primary);
	border-color: currentColor;
}

.vh-btn-outline:hover { background: var(--vh-color-primary); color: #fff; filter: none; }

.vh-btn-secondary { background: var(--vh-color-secondary); }
.vh-btn-accent { background: var(--vh-color-accent); color: var(--vh-color-secondary); }
.vh-btn-link { background: none; color: var(--vh-color-primary); padding: 0; }

.vh-btn-sm { padding: .5rem 1rem; font-size: .9rem; }
.vh-btn-lg { padding: 1rem 1.9rem; font-size: 1.05rem; }

/* ------------------------------------------------------------------- Forms */
input[type="text"], input[type="email"], input[type="url"], input[type="tel"],
input[type="password"], input[type="search"], input[type="number"], input[type="date"],
select, textarea {
	width: 100%;
	font: inherit;
	color: var(--vh-color-text);
	padding: .7rem .9rem;
	background: var(--vh-color-bg);
	border: 1px solid var(--vh-color-border);
	border-radius: var(--vh-radius-button);
	transition: border-color var(--vh-transition), box-shadow var(--vh-transition);
}

input:focus, select:focus, textarea:focus {
	border-color: var(--vh-color-primary);
	box-shadow: 0 0 0 3px color-mix(in srgb, var(--vh-color-primary) 18%, transparent);
	outline: none;
}

label { display: inline-block; margin-bottom: .35rem; font-weight: 600; font-size: .95rem; }

/* ------------------------------------------------------------------ Topbar */
.vh-topbar {
	background: var(--vh-color-secondary);
	color: #fff;
	font-size: .875rem;
}

.vh-topbar-inner {
	display: flex;
	flex-wrap: wrap;
	gap: 12px;
	align-items: center;
	justify-content: space-between;
	min-height: 40px;
}

.vh-topbar-text { margin: 0; }
.vh-topbar a { color: inherit; }
.vh-topbar-menu { display: flex; gap: 16px; list-style: none; margin: 0; padding: 0; }

/* ------------------------------------------------------------------ Header */
.vh-header {
	background: var(--vh-color-bg);
	border-bottom: 1px solid var(--vh-color-border);
	position: relative;
	z-index: 60;
}

.vh-header-sticky { position: sticky; top: 0; }
.admin-bar .vh-header-sticky { top: 32px; }

.vh-header-inner {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 20px;
	min-height: 68px;
}

.vh-branding { display: flex; align-items: center; gap: 12px; min-width: 0; }
.vh-branding img, .custom-logo { max-height: 48px; width: auto; }
.vh-site-title { font-size: 1.25rem; margin: 0; }
.vh-site-title a { color: var(--vh-color-secondary); }
.vh-site-description { margin: 0; font-size: .8rem; color: var(--vh-color-muted); }

.vh-nav { display: none; }

.vh-menu, .vh-sub-menu, .vh-mobile-nav, .vh-footer-menu {
	list-style: none;
	margin: 0;
	padding: 0;
}

.vh-menu { display: flex; align-items: center; gap: 4px; }

.vh-menu > li { position: relative; }

.vh-menu a {
	display: block;
	padding: .6rem .8rem;
	color: var(--vh-color-secondary);
	font-weight: 500;
	border-radius: var(--vh-radius-button);
}

.vh-menu a:hover, .vh-menu a:focus { color: var(--vh-color-primary); text-decoration: none; background: var(--vh-color-alt); }
.vh-menu .current-menu-item > a, .vh-menu .current-menu-ancestor > a { color: var(--vh-color-primary); }

.vh-menu .menu-item-has-children { display: flex; align-items: center; }

.vh-submenu-toggle {
	background: none;
	border: 0;
	padding: .35rem;
	color: inherit;
	cursor: pointer;
}

.vh-caret {
	display: inline-block;
	width: 7px;
	height: 7px;
	border-right: 2px solid currentColor;
	border-bottom: 2px solid currentColor;
	transform: rotate(45deg) translate(-2px, -2px);
	transition: transform var(--vh-transition);
}

[aria-expanded="true"] > .vh-caret { transform: rotate(-135deg); }

.vh-sub-menu {
	position: absolute;
	top: 100%;
	left: 0;
	min-width: 220px;
	background: var(--vh-color-bg);
	border: 1px solid var(--vh-color-border);
	border-radius: var(--vh-radius);
	box-shadow: var(--vh-shadow-lg);
	padding: 8px;
	display: none;
	z-index: 70;
}

.vh-sub-menu .vh-sub-menu { top: 0; left: 100%; }
.vh-menu li:hover > .vh-sub-menu,
.vh-menu li:focus-within > .vh-sub-menu,
.vh-menu li.vh-open > .vh-sub-menu { display: block; }

.vh-header-actions { display: flex; align-items: center; gap: 6px; }

.vh-icon-btn {
	background: none;
	border: 0;
	color: var(--vh-color-secondary);
	padding: .5rem;
	border-radius: var(--vh-radius-button);
	display: inline-flex;
	align-items: center;
	cursor: pointer;
}

.vh-icon-btn:hover { background: var(--vh-color-alt); color: var(--vh-color-primary); filter: none; }

.vh-icon {
	width: 22px;
	height: 22px;
	display: inline-block;
	background: currentColor;
	-webkit-mask-repeat: no-repeat;
	mask-repeat: no-repeat;
	-webkit-mask-position: center;
	mask-position: center;
	-webkit-mask-size: contain;
	mask-size: contain;
}

.vh-icon-search { -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round'%3E%3Ccircle cx='11' cy='11' r='7'/%3E%3Cpath d='M20 20l-3.5-3.5'/%3E%3C/svg%3E"); mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round'%3E%3Ccircle cx='11' cy='11' r='7'/%3E%3Cpath d='M20 20l-3.5-3.5'/%3E%3C/svg%3E"); }
.vh-icon-cart { -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 4h2l2.4 11h9.8l2-7H6'/%3E%3Ccircle cx='9' cy='19' r='1.6'/%3E%3Ccircle cx='17' cy='19' r='1.6'/%3E%3C/svg%3E"); mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 4h2l2.4 11h9.8l2-7H6'/%3E%3Ccircle cx='9' cy='19' r='1.6'/%3E%3Ccircle cx='17' cy='19' r='1.6'/%3E%3C/svg%3E"); }
.vh-icon-user { -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round'%3E%3Ccircle cx='12' cy='8' r='4'/%3E%3Cpath d='M4 20c0-4 3.6-6 8-6s8 2 8 6'/%3E%3C/svg%3E"); mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round'%3E%3Ccircle cx='12' cy='8' r='4'/%3E%3Cpath d='M4 20c0-4 3.6-6 8-6s8 2 8 6'/%3E%3C/svg%3E"); }

.vh-cart-link { position: relative; display: inline-flex; padding: .5rem; color: var(--vh-color-secondary); }

.vh-cart-count {
	position: absolute;
	top: 0;
	right: 0;
	min-width: 18px;
	height: 18px;
	padding: 0 4px;
	font-size: .68rem;
	font-weight: 700;
	line-height: 18px;
	text-align: center;
	color: #fff;
	background: var(--vh-color-primary);
	border-radius: 9px;
}

.vh-header-cta { display: none; }

.vh-burger { display: block; width: 22px; }
.vh-burger i {
	display: block;
	height: 2px;
	background: currentColor;
	border-radius: 2px;
	transition: transform var(--vh-transition), opacity var(--vh-transition);
}
.vh-burger i + i { margin-top: 5px; }
[aria-expanded="true"] .vh-burger i:nth-child(1) { transform: translateY(7px) rotate(45deg); }
[aria-expanded="true"] .vh-burger i:nth-child(2) { opacity: 0; }
[aria-expanded="true"] .vh-burger i:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }

.vh-search-panel {
	border-top: 1px solid var(--vh-color-border);
	background: var(--vh-color-alt);
	padding: 16px 0;
}

.vh-search-form { display: flex; gap: 8px; }

/* ------------------------------------------------------------- Mobile menu */
.vh-mobile-menu {
	position: fixed;
	inset: 0 auto 0 0;
	width: min(88vw, 340px);
	background: var(--vh-color-bg);
	z-index: 100;
	overflow-y: auto;
	transform: translateX(-100%);
	transition: transform .25s ease;
	box-shadow: var(--vh-shadow-lg);
}

.vh-mobile-menu[hidden] { display: block; visibility: hidden; }
.vh-mobile-menu.is-open { transform: none; visibility: visible; }

.vh-mobile-menu-inner { padding: 20px; }

.vh-mobile-close {
	background: none;
	border: 0;
	font-size: 1.9rem;
	line-height: 1;
	color: var(--vh-color-secondary);
	padding: 4px 8px;
	margin-bottom: 8px;
}

.vh-mobile-nav a {
	display: block;
	padding: .7rem 0;
	border-bottom: 1px solid var(--vh-color-border);
	color: var(--vh-color-secondary);
	font-weight: 500;
}

.vh-mobile-nav .vh-sub-menu {
	position: static;
	display: none;
	border: 0;
	box-shadow: none;
	padding: 0 0 0 14px;
}

.vh-mobile-nav li.vh-open > .vh-sub-menu { display: block; }
.vh-mobile-nav .menu-item-has-children { justify-content: space-between; }
.vh-mobile-nav .menu-item-has-children > a { flex: 1; }

.vh-overlay {
	position: fixed;
	inset: 0;
	background: rgba(15, 23, 42, .5);
	z-index: 90;
}

.vh-overlay[hidden] { display: none; }

body.vh-menu-open { overflow: hidden; }

/* -------------------------------------------------------------- Page hero */
.vh-page-hero {
	background: var(--vh-color-alt);
	padding-block: 40px;
	border-bottom: 1px solid var(--vh-color-border);
}

.vh-page-title { margin: 0; }

.vh-breadcrumbs { font-size: .875rem; color: var(--vh-color-muted); margin-bottom: .6rem; }
.vh-breadcrumbs ol { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 6px; }
.vh-breadcrumbs li + li::before { content: "/"; margin-right: 6px; color: var(--vh-color-border); }
.vh-breadcrumbs a { color: var(--vh-color-muted); }
.vh-breadcrumbs a:hover { color: var(--vh-color-primary); }

/* -------------------------------------------------------------------- Cards */
.vh-card {
	background: var(--vh-color-bg);
	border: 1px solid var(--vh-color-border);
	border-radius: var(--vh-radius);
	overflow: hidden;
	transition: transform var(--vh-transition), box-shadow var(--vh-transition);
	display: flex;
	flex-direction: column;
}

.vh-card:hover { box-shadow: var(--vh-shadow); transform: translateY(-2px); }
.vh-card-body { padding: 20px; display: flex; flex-direction: column; gap: .5rem; flex: 1; }
.vh-card-title { font-size: 1.15rem; margin: 0; }
.vh-card-title a { color: var(--vh-color-secondary); }
.vh-card-title a:hover { color: var(--vh-color-primary); text-decoration: none; }
.vh-card-excerpt { color: var(--vh-color-muted); font-size: .95rem; }
.vh-card-excerpt p:last-child { margin-bottom: 0; }
.vh-thumb img { width: 100%; display: block; object-fit: cover; object-position: center; }

/* Only the boxes below impose a shape. Everything else - the classic entry, a
   single post - keeps the image's own proportions, because the size it asks
   for is already cropped on disk and cropping it again here would eat it. */
.vh-post-card .vh-thumb img { aspect-ratio: 1 / 1; }

/* A square thumbnail works in a grid but towers over a horizontal list item. */
.vh-posts-list .vh-thumb img,
.vh-post-list-item .vh-thumb img { aspect-ratio: 4 / 3; }

.vh-readmore { font-weight: 600; font-size: .93rem; margin-top: auto; align-self: flex-start; }
.vh-readmore::after { content: " \2192"; }

.vh-post-meta {
	display: flex;
	flex-wrap: wrap;
	gap: 6px 14px;
	font-size: .84rem;
	color: var(--vh-color-muted);
}

.vh-post-meta a { color: inherit; }
.vh-post-meta a:hover { color: var(--vh-color-primary); }

.vh-posts { display: grid; gap: var(--vh-gap); }
.vh-posts-list .vh-card { flex-direction: column; }
.vh-posts-classic { gap: 48px; }

.vh-section-title { margin-bottom: 1.2rem; }

/* ------------------------------------------------------------------ Entry */
.vh-entry-content > *:last-child { margin-bottom: 0; }
.vh-entry-content ul, .vh-entry-content ol { padding-left: 1.35rem; }
.vh-entry .vh-thumb { border-radius: var(--vh-radius); overflow: hidden; margin-bottom: 1.5rem; }

.vh-tags { display: flex; flex-wrap: wrap; gap: 8px; margin: 1.5rem 0; }
.vh-tags a {
	font-size: .82rem;
	padding: .3rem .7rem;
	background: var(--vh-color-alt);
	border-radius: 999px;
	color: var(--vh-color-muted);
}

.vh-author-box {
	display: flex;
	gap: 18px;
	padding: 22px;
	background: var(--vh-color-alt);
	border-radius: var(--vh-radius);
	margin: 2.5rem 0;
}

.vh-author-avatar img { border-radius: 50%; }
.vh-author-name { font-size: 1.1rem; margin-bottom: .3rem; }
.vh-author-bio { color: var(--vh-color-muted); font-size: .95rem; }

.vh-related { margin-top: 3rem; }

.vh-post-nav { margin: 2.5rem 0; }
.vh-post-nav .nav-links { display: grid; gap: 16px; }
.vh-post-nav a { display: block; padding: 16px; border: 1px solid var(--vh-color-border); border-radius: var(--vh-radius); }
.vh-post-nav a:hover { text-decoration: none; border-color: var(--vh-color-primary); }
.vh-nav-label { display: block; font-size: .8rem; color: var(--vh-color-muted); }
.vh-nav-title { font-weight: 600; color: var(--vh-color-secondary); }

/* -------------------------------------------------------------- Pagination */
.vh-pagination { margin-top: 2.5rem; }
.vh-pagination .nav-links { display: flex; flex-wrap: wrap; gap: 6px; }
.vh-pagination .page-numbers {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 42px;
	height: 42px;
	padding: 0 12px;
	border: 1px solid var(--vh-color-border);
	border-radius: var(--vh-radius-button);
	color: var(--vh-color-secondary);
	font-weight: 600;
}
.vh-pagination .page-numbers:hover { text-decoration: none; border-color: var(--vh-color-primary); color: var(--vh-color-primary); }
.vh-pagination .current { background: var(--vh-color-primary); border-color: var(--vh-color-primary); color: #fff; }

/* ----------------------------------------------------------------- Sidebar */
.vh-sidebar .widget { margin-bottom: 32px; }
.vh-sidebar .widget:last-child { margin-bottom: 0; }
.widget-title { font-size: 1.05rem; margin-bottom: .8rem; padding-bottom: .6rem; border-bottom: 2px solid var(--vh-color-border); }
.vh-sidebar ul { list-style: none; margin: 0; padding: 0; }
.vh-sidebar li { padding: .4rem 0; border-bottom: 1px solid var(--vh-color-border); }
.vh-sidebar li:last-child { border-bottom: 0; }

/* ------------------------------------------------------------------ Footer */
.vh-footer { background: var(--vh-color-secondary); color: rgba(255, 255, 255, .78); margin-top: auto; }
.vh-footer-widgets { padding-block: 56px; }
.vh-footer a { color: rgba(255, 255, 255, .78); }
.vh-footer a:hover { color: #fff; }
.vh-footer .widget-title { color: #fff; border-color: rgba(255, 255, 255, .18); }
.vh-footer li { border-color: rgba(255, 255, 255, .1); }
.vh-footer-bottom { border-top: 1px solid rgba(255, 255, 255, .12); padding-block: 20px; font-size: .9rem; }
.vh-footer-bottom-inner { display: flex; flex-direction: column; gap: 10px; align-items: center; text-align: center; }
.vh-copyright p { margin: 0; }
.vh-footer-menu { display: flex; flex-wrap: wrap; gap: 8px 18px; justify-content: center; }

/* ------------------------------------------------------------------- 404 */
.vh-404 { padding-block: var(--vh-section-y); text-align: center; }
.vh-404-inner { max-width: 720px; margin-inline: auto; }
.vh-404-code { font-size: clamp(4rem, 12vw, 8rem); font-weight: 800; line-height: 1; color: var(--vh-color-primary); opacity: .18; margin: 0; }
.vh-404 .vh-search-form { max-width: 460px; margin-inline: auto; }
.vh-404-recent { margin-top: 3rem; text-align: left; }

/* -------------------------------------------------------------- Comments */
.vh-comments { margin-top: 3rem; }
.vh-comment-list, .vh-comment-list ol { list-style: none; margin: 0; padding: 0; }
.vh-comment-list .children { padding-left: 24px; }
.vh-comment-list li article, .vh-comment-list .comment-body { padding: 18px 0; border-bottom: 1px solid var(--vh-color-border); }
.comment-author img { border-radius: 50%; }
.comment-form p { margin-bottom: 1rem; }

/* ---------------------------------------------------------- Back to top */
.vh-to-top {
	position: fixed;
	right: 18px;
	bottom: 18px;
	width: 44px;
	height: 44px;
	padding: 0;
	border-radius: 50%;
	background: var(--vh-color-primary);
	color: #fff;
	box-shadow: var(--vh-shadow-lg);
	z-index: 80;
	font-size: 1.1rem;
}

.vh-to-top[hidden] { display: none; }

/* --------------------------------------------------------- No results */
.vh-no-results { padding: 32px; background: var(--vh-color-alt); border-radius: var(--vh-radius); }

/* ------------------------------------------------------- Elementor canvas */
.elementor-page .vh-content-wrap { padding-block: 0; }
.elementor-page .vh-entry-content > .elementor { margin-inline: 0; }

/* ------------------------------------------------------------ Breakpoints */
@media (min-width: 576px) {
	.vh-cols-2, .vh-cols-3, .vh-cols-4, .vh-cols-5, .vh-cols-6 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.vh-posts-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.vh-post-nav .nav-links { grid-template-columns: 1fr 1fr; }
}

@media (min-width: 782px) {
	.vh-posts-list .vh-card { flex-direction: row; }

	/* The image fills its column; it does not get to decide how tall the row
	   is. height:100% on an in-flow image resolves against a height the
	   column does not have yet, so it falls back to auto - and a portrait
	   photograph then stretched the whole search result to its own height.
	   Taking the image out of flow lets it stretch to whatever the text
	   makes the row, and the floor stops it collapsing behind a one line
	   excerpt. */
	.vh-posts-list .vh-thumb {
		position: relative;
		flex: 0 0 38%;
		align-self: stretch;
		min-height: 200px;
	}

	.vh-posts-list .vh-thumb img {
		position: absolute;
		inset: 0;
		height: 100%;
		aspect-ratio: auto;
	}
	.vh-footer-bottom-inner { flex-direction: row; justify-content: space-between; text-align: left; }
}

@media (min-width: 992px) {
	:root { --vh-section-y: 80px; }

	.vh-cols-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
	.vh-cols-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
	.vh-cols-5 { grid-template-columns: repeat(5, minmax(0, 1fr)); }
	.vh-cols-6 { grid-template-columns: repeat(6, minmax(0, 1fr)); }
	.vh-posts-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }

	.vh-nav { display: block; }
	.vh-menu-toggle { display: none; }
	.vh-header-cta { display: inline-flex; }

	body.vh-sidebar-right .vh-content-wrap:not(.vh-no-aside) { grid-template-columns: minmax(0, 1fr) 320px; }
	body.vh-sidebar-left .vh-content-wrap:not(.vh-no-aside) { grid-template-columns: 320px minmax(0, 1fr); }
	body.vh-sidebar-left .vh-primary { order: 2; }
	body.vh-no-sidebar .vh-content-wrap,
	body.vh-sidebar-none .vh-content-wrap { grid-template-columns: minmax(0, 1fr); }
}

@media (prefers-reduced-motion: reduce) {
	*, *::before, *::after {
		animation-duration: .001ms !important;
		transition-duration: .001ms !important;
		scroll-behavior: auto !important;
	}
}

/* ==========================================================================
   Mobile pass
   Small screens are the default in this stylesheet, so most of the work is
   already done above. What follows guards the cases that still bite: content
   that is wider than the viewport, headers that run out of room, and tap
   targets that are too small to hit.
   ========================================================================== */

/* Nothing may push the page sideways. A single overflowing table or a long
   unbroken URL is the usual culprit and it breaks every layout on the page. */
/* hidden on html is handed to the viewport, which is harmless. On body it
   made body a scroll container of its own, and position: sticky stopped
   working anywhere on the page - including the sticky header. clip cuts the
   overflow without creating a scroll container. */
html { max-width: 100%; overflow-x: hidden; }
body { max-width: 100%; overflow-x: clip; }

.vh-entry-content { overflow-wrap: break-word; word-break: break-word; }
.vh-entry-content a { overflow-wrap: anywhere; }

/* Tables scroll inside their own box rather than stretching the page. */
.vh-entry-content table,
.vh-comments table {
	display: block;
	width: 100%;
	overflow-x: auto;
	-webkit-overflow-scrolling: touch;
}

.vh-entry-content pre { max-width: 100%; }

/* Embeds keep their shape. */
.vh-entry-content iframe,
.vh-entry-content video,
.vh-entry-content embed,
.vh-entry-content object { max-width: 100%; }

.vh-entry-content .wp-block-embed__wrapper { position: relative; }

/* Every control is at least a comfortable thumb target. */
.vh-icon-btn,
.vh-menu-toggle,
.vh-mobile-close,
.vh-submenu-toggle,
.vh-to-top {
	min-width: 44px;
	min-height: 44px;
	display: inline-flex;
	align-items: center;
	justify-content: center;
}

.vh-mobile-nav a { padding-block: .85rem; }

@media (max-width: 991px) {
	/* The header must stay on one line however long the site name is. */
	.vh-header-inner {
		gap: 10px;
		min-height: 60px;
		flex-wrap: nowrap;
	}

	.vh-branding { flex: 1 1 auto; min-width: 0; }

	.vh-site-title {
		font-size: 1.05rem;
		overflow: hidden;
		text-overflow: ellipsis;
		white-space: nowrap;
	}

	.vh-site-description { display: none; }
	.vh-branding img, .custom-logo { max-height: 40px; }

	.vh-header-actions { flex: 0 0 auto; gap: 2px; }

	/* The announcement bar wraps instead of squashing. */
	.vh-topbar-inner { justify-content: center; text-align: center; padding-block: 6px; }
	.vh-topbar-text { font-size: .8rem; }
	.vh-topbar-menu { justify-content: center; }
}

@media (max-width: 782px) {
	:root { --vh-gap: 18px; }

	.vh-container { padding-inline: 16px; }
	.vh-page-hero { padding-block: 28px; }

	.vh-content-wrap { gap: 32px; }

	/* Sidebar always follows the content on a phone. */
	body.vh-sidebar-left .vh-primary { order: 0; }

	.vh-author-box { flex-direction: column; text-align: center; align-items: center; }
	.vh-author-box .vh-readmore { align-self: center; }

	.vh-footer-widgets { padding-block: 36px; }
	.vh-footer-bottom { text-align: center; }

	.vh-search-form { flex-direction: column; }
	.vh-search-form .vh-btn { width: 100%; }

	.vh-pagination .page-numbers { min-width: 40px; height: 40px; }

	/* Comment threads stop indenting themselves off the screen. */
	.vh-comment-list .children { padding-left: 12px; }
}

@media (max-width: 480px) {
	body { font-size: 15.5px; }

	.vh-container { padding-inline: 14px; }

	.vh-btn, button, input[type="submit"] { padding: .75rem 1.1rem; }
	.vh-btn-lg { padding: .85rem 1.4rem; font-size: 1rem; }

	.vh-card-body { padding: 16px; }

	.vh-404-code { font-size: 4rem; }

	.vh-comment-list .children { padding-left: 8px; }

	/* Stacked post navigation reads better than two cramped columns. */
	.vh-post-nav .nav-links { grid-template-columns: 1fr; }
}

/* Landscape phones: the sticky header eats too much of a short viewport. */
@media (max-height: 480px) and (orientation: landscape) {
	.vh-header-sticky { position: static; }
}
