/* Only what the theme itself mints. Everything else it uses is declared once, in design-tokens.json,
		printed on the plugin's token sheet, which this file names as a dependency, or on the theme's own
		handle when that sheet is absent. */
:root {
	--alv-grid-one-col: minmax(0, 1fr);
	--alv-grid-sidebar: var(--alv-grid-one-col);
	--alv-grid-posts: var(--alv-grid-one-col);
	--alv-grid-two-col: repeat(2, minmax(0, 1fr));
	--alv-dot-size: var(--alv-sp-0d);
	--alv-logo-height: var(--alv-h-logo);

	/* One step under the clamp() floor that alovesinh-theme-bands.css sets from the mobile-extra breakpoint. */
	--alv-h1-size: var(--alv-fs-6b);
	--alv-card-title-size: var(--alv-fs-4a);
}

/* Font family stays OUTSIDE var(): once Elementor declares the variable, the fallback inside var() stops running. */
/* The type baseline must live here, because a page built by WordPress alone loads no Elementor CSS;
	the Elementor kit loads AFTER this file, so pages with widgets still follow Site Settings. */
body {
	font-family:
		var(--e-global-typography-text-font-family, var(--alv-font-brand)), var(--alv-font-fallback);
	line-height: var(--alv-lh-body);
	color: var(--alv-c-ink);
	background: var(--alv-c-white);
}

* {
	box-sizing: border-box;
}

html,
body {
	margin: 0;
	padding: 0;
}

html {
	scrollbar-gutter: stable;
}

/* The heading scale lives here, not in the Elementor kit: a kit typography slot holds one fixed
	size per breakpoint and cannot express the clamp() the source design scales with. */
h1,
h2,
h3,
h4 {
	margin: 0;
	line-height: var(--alv-lh-heading);
	letter-spacing: var(--alv-tr-tight-1);
	color: var(--alv-c-ink);
}

h1 {
	font-size: var(--alv-h1-size);
	font-weight: var(--alv-fw-extrabold);
	letter-spacing: var(--alv-tr-headline);
}

h2 {
	font-size: clamp(var(--alv-fs-5b), var(--alv-fs-grow-3), var(--alv-fs-7));
	font-weight: var(--alv-fw-extrabold);
	letter-spacing: var(--alv-tr-tight-2);
}

h3 {
	font-size: clamp(var(--alv-fs-4a), var(--alv-fs-grow-0), var(--alv-fs-5));
	font-weight: var(--alv-fw-bold);
}

h4 {
	font-size: var(--alv-fs-4);
	font-weight: var(--alv-fw-bold);
}

p {
	margin: 0;
	color: var(--alv-c-text-2);
}

ul,
ol {
	margin: 0;
	padding: 0;
	list-style: none;
}

a {
	color: inherit;
	text-decoration: none;
}

button {
	border: 0;
	font: inherit;
	background: none;
	cursor: pointer;
}

fieldset {
	min-width: 0;
	margin: 0;
	padding: 0;
	border: 0;
}

legend {
	padding: 0;
}

img {
	display: block;
	height: auto;
}

/* Kept although wp-block-library ships the same rule: a plugin that dequeues that sheet would unhide these labels. */
.screen-reader-text {
	border: 0;
	clip-path: inset(var(--alv-pos-center));
	height: var(--alv-sp-0a);
	margin: calc(-1 * var(--alv-sp-0a));
	overflow: hidden;
	padding: 0;
	position: absolute;
	width: var(--alv-sp-0a);
	overflow-wrap: normal;
	word-break: normal;
}

.screen-reader-text:focus {
	background-color: var(--alv-c-white);
	clip-path: none;
	color: var(--alv-c-ink);
	display: block;
	font-size: inherit;
	height: auto;
	left: var(--alv-sp-0e);
	line-height: normal;
	padding: var(--alv-sp-2e) var(--alv-sp-3f) var(--alv-sp-2b);
	text-decoration: none;
	top: var(--alv-sp-0e);
	width: auto;
	z-index: var(--alv-z-skip-link);
}

/* From core's block stylesheet: a page without it would give a classic caption the browser's 40px side margins. */
:where(figure) {
	margin: 0 0 1em;
}

.aligncenter {
	clear: both;
}

.alv-container {
	width: min(100%, var(--alv-w-page));
	margin-inline: auto;
	padding-inline: var(--alv-w-gutter);
}

.wp-element-button {
	display: inline-flex;
	align-items: center;
	gap: var(--alv-sp-2);
	padding: var(--alv-sp-2b) var(--alv-sp-3a);
	border: 0;
	border-radius: var(--alv-r-2);
	font-family: inherit;
	font-size: var(--alv-fs-cta);
	font-weight: var(--alv-fw-bold);
	color: var(--alv-c-white);
	background: var(--alv-c-accent-strong);
	box-shadow: var(--alv-sh-lift);
	cursor: pointer;
	transition:
		transform var(--alv-dur-1) ease,
		background var(--alv-dur-1) ease,
		box-shadow var(--alv-dur-1) ease;
}

.wp-element-button:hover {
	transform: translateY(calc(-1 * var(--alv-sp-0b)));
	box-shadow: var(--alv-sh-lift-hover);
}

.site-header {
	border-bottom: var(--alv-bd-hairline) solid var(--alv-c-border);
	background: var(--alv-c-white);
}

.site-header .alv-container {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-between;
	gap: var(--alv-sp-3);
	padding-block: var(--alv-sp-2b);
}

.site-header .custom-logo {
	width: auto;
	height: var(--alv-logo-height);
}

.site-title {
	font-size: var(--alv-fs-4);
	font-weight: var(--alv-fw-extrabold);
}

.main-navigation .menu,
.main-navigation .sub-menu {
	display: flex;
	flex-wrap: wrap;
	gap: var(--alv-sp-2);
}

.alv-filter-list a {
	padding: 0 var(--alv-sp-3);
	border: var(--alv-bd-hairline) solid var(--alv-c-border);
	border-radius: var(--alv-r-pill);
	font-size: var(--alv-fs-3);
	font-weight: var(--alv-fw-semibold);
	color: var(--alv-c-text-2);
}

.site-title a,
.alv-filter-list a,
.main-navigation .menu a,
.alv-site-footer-nav .menu a,
.pagination .page-numbers {
	display: inline-flex;
	align-items: center;
	min-height: var(--alv-touch);
}

.main-navigation .menu a {
	padding: 0 var(--alv-sp-2b);
	border-radius: var(--alv-r-1);
	font-size: var(--alv-fs-3);
	color: var(--alv-c-text-2);
}

.alv-filter-list a:hover,
.alv-filter-list .current-cat a {
	border-color: var(--alv-c-brand);
	color: var(--alv-c-brand-deep);
}

.main-navigation .menu a:hover {
	color: var(--alv-c-brand-deep);
	background: var(--alv-c-brand-wash);
}

.alv-page-grid {
	display: grid;
	grid-template-columns: var(--alv-grid-one-col);
	gap: var(--alv-sp-5);
	padding-block: var(--alv-sp-6);
}

.alv-page-grid-sidebar {
	grid-template-columns: var(--alv-grid-sidebar);
}

.widget-area {
	min-width: 0;
}

.page-header,
.widget-area .widget {
	margin-bottom: var(--alv-sp-5);
}

.alv-post-card .entry-title {
	margin: 0;
	font-size: var(--alv-card-title-size);
	font-weight: var(--alv-fw-bold);
	line-height: var(--alv-lh-snug);
	letter-spacing: var(--alv-tr-tight-1);
}

.entry-content > * {
	margin-block: var(--alv-sp-3);
}

/* Zero class weight on purpose: a block that resets its own list still wins. Only lists the post body places directly
	are restored, so an Elementor document nested in the body keeps the lists its widgets style. */
:where(.entry-content > :is(ul, ol), .entry-content > :is(ul, ol) :is(ul, ol)) {
	padding-inline-start: var(--alv-sp-4);
	list-style: revert;
}

.page-header .page-title {
	margin: 0 0 var(--alv-sp-2);
}

.search-results .hentry {
	margin-bottom: var(--alv-sp-4);
}

.search-results .hentry .entry-title {
	margin: 0 0 var(--alv-sp-1);
}

.search-form {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: var(--alv-sp-2);
	width: min(100%, var(--alv-w-reading));
}

.search-form label {
	flex-basis: 100%;
	font-size: var(--alv-fs-2);
	color: var(--alv-c-text-muted);
}

.search-field,
.comments-area .comment-form input[type='text'],
.comments-area .comment-form input[type='email'],
.comments-area .comment-form input[type='url'],
.comments-area .comment-form textarea {
	width: min(100%, var(--alv-w-reading));
	min-height: var(--alv-touch);
	padding: var(--alv-sp-2) var(--alv-sp-3);
	border: var(--alv-bd-hairline) solid var(--alv-c-text-muted);
	border-radius: var(--alv-r-2);
	font-family: inherit;
	font-size: var(--alv-fs-3);
}

.search-field {
	flex: 1;
	min-width: 0;
}

.comments-area,
.alv-related {
	margin-top: var(--alv-sp-6);
	padding-top: var(--alv-sp-5);
	border-top: var(--alv-bd-hairline) solid var(--alv-c-border);
}

.comments-title {
	margin: 0 0 var(--alv-sp-3);
}

.comment-list {
	margin: 0 0 var(--alv-sp-4);
}

.comment-list .children {
	padding-left: var(--alv-sp-4);
}

.comment-list .comment-body {
	padding-block: var(--alv-sp-3);
	border-bottom: var(--alv-bd-hairline) solid var(--alv-c-border);
}

.no-comments {
	color: var(--alv-c-text-muted);
}

.comments-area .comment-form-comment label,
.comments-area .comment-form-author label,
.comments-area .comment-form-email label,
.comments-area .comment-form-url label {
	display: block;
	margin-bottom: var(--alv-sp-1);
	font-size: var(--alv-fs-2);
	color: var(--alv-c-text-muted);
}

.widget-area .widgettitle {
	margin: 0 0 var(--alv-sp-2);
	font-size: var(--alv-fs-4);
}

.site-footer {
	padding-block: var(--alv-sp-6) var(--alv-sp-3);
	color: var(--alv-c-on-dark);
	background: var(--alv-c-ink);
}

.alv-site-footer-nav .menu {
	display: flex;
	flex-wrap: wrap;
	gap: var(--alv-sp-3);
	margin: 0 0 var(--alv-sp-3);
}

.site-info {
	font-size: var(--alv-fs-2);
	color: var(--alv-c-on-dark-muted);
}

.error-404 {
	padding-block: var(--alv-sp-7);
	text-align: center;
}

.error-404 .page-title {
	font-size: var(--alv-fs-9a);
	line-height: 1;
	color: var(--alv-c-brand-deep);
}

.error-404 .search-form {
	margin: var(--alv-sp-4) auto;
}

.alv-blog {
	padding-block: var(--alv-sp-6);
}

.alv-blog .page-header {
	margin-bottom: var(--alv-sp-4);
}

.archive-description {
	margin-bottom: var(--alv-sp-3);
	color: var(--alv-c-text-muted);
}

.alv-filter-list {
	display: flex;
	flex-wrap: wrap;
	gap: var(--alv-sp-2);
	margin: 0 0 var(--alv-sp-4);
}

.alv-post-grid {
	display: grid;
	grid-template-columns: var(--alv-grid-posts);
	gap: var(--alv-sp-4);
}

.alv-post-card {
	display: flex;
	flex-direction: column;
	overflow: hidden;
	border: var(--alv-bd-hairline) solid var(--alv-c-border);
	border-radius: var(--alv-r-2);
	background: var(--alv-c-white);
	transition:
		transform var(--alv-dur-1) ease,
		border-color var(--alv-dur-1) ease;
}

.alv-post-card:hover {
	border-color: var(--alv-c-brand-veil);
	transform: translateY(calc(-1 * var(--alv-sp-0d)));
}

.alv-post-card:hover .entry-title {
	color: var(--alv-c-brand-deep);
}

.alv-post-card .post-thumbnail {
	display: block;
	overflow: hidden;
	flex-shrink: 0;
	aspect-ratio: var(--alv-ratio-card);
}

.post-thumbnail img {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.alv-post-card-body {
	display: flex;
	flex: 1;
	flex-direction: column;
	gap: var(--alv-sp-2);
	padding: var(--alv-sp-3);
}

.cat-links {
	display: inline-flex;
	align-items: center;
	width: fit-content;
	padding: var(--alv-sp-1) var(--alv-sp-2);
	border-radius: var(--alv-r-pill);
	font-size: var(--alv-fs-2);
	font-weight: var(--alv-fw-bold);
	color: var(--alv-c-brand-deep);
	background: var(--alv-c-brand-wash);
}

.entry-meta {
	display: flex;
	align-items: center;
	gap: var(--alv-sp-2);
	margin-top: auto;
	padding-top: var(--alv-sp-2);
	border-top: var(--alv-bd-hairline) solid var(--alv-c-border);
	font-size: var(--alv-fs-2);
	color: var(--alv-c-text-muted);
}

.entry-meta .avatar {
	border-radius: var(--alv-r-circle);
}

.entry-meta .sep {
	width: var(--alv-dot-size);
	height: var(--alv-dot-size);
	border-radius: var(--alv-r-circle);
	background: var(--alv-c-on-dark);
}

.entry-header .entry-summary {
	margin: var(--alv-sp-2) 0 0;
	font-size: var(--alv-fs-4);
	color: var(--alv-c-text-muted);
}

figure.post-thumbnail {
	overflow: hidden;
	margin: var(--alv-sp-4) 0;
	border-radius: var(--alv-r-2);
	aspect-ratio: var(--alv-ratio-cover);
}

.post-thumbnail .wp-caption-text {
	margin-top: var(--alv-sp-2);
	font-size: var(--alv-fs-2);
	text-align: center;
	color: var(--alv-c-text-muted);
}

.entry-content table {
	width: 100%;
	border-collapse: collapse;
}

.alv-related-title {
	margin: 0 0 var(--alv-sp-4);
}

.pagination {
	margin-top: var(--alv-sp-5);
}

.pagination .page-numbers {
	justify-content: center;
	min-width: var(--alv-touch);
	padding: 0 var(--alv-sp-2);
	border: var(--alv-bd-hairline) solid var(--alv-c-border);
	border-radius: var(--alv-r-2);
	color: var(--alv-c-text-2);
}

.pagination .page-numbers.current {
	border-color: var(--alv-c-brand-deep);
	color: var(--alv-c-white);
	background: var(--alv-c-brand-deep);
}

@media (prefers-reduced-motion: reduce) {
	.wp-element-button,
	.alv-post-card {
		transition: none;
	}

	.wp-element-button:hover,
	.alv-post-card:hover {
		transform: none;
	}
}
