/**
 * Havenlytics V3 — Gutenberg block styles
 * Scoped to content areas; inherits global design tokens.
 *
 * @package Havenlytics_Theme
 */

/* Content scope for all Gutenberg output */
:is(.hvnly-single-content, .hvnly-prose, .entry-content, .wp-block-post-content) {
	--hvnly-gb-gap: var(--hvnly-paragraph-spacing, var(--hvnly--space-8));
}

/* Reset excessive core block margins */
:is(.hvnly-single-content, .hvnly-prose, .entry-content, .wp-block-post-content) > * {
	margin-top: 0;
	margin-bottom: 0;
}

:is(.hvnly-single-content, .hvnly-prose, .entry-content, .wp-block-post-content) > * + * {
	margin-top: var(--hvnly-gb-gap);
}

/* ── Post title ──────────────────────────────────────────────────── */
.wp-block-post-title {
	margin: 0 0 var(--hvnly--space-8);
	font-family: var(--hvnly--font-display);
	font-size: var(--hvnly-h1-size, var(--hvnly--text-display-sm));
	line-height: var(--hvnly-h1-line-height, 1.15);
	font-weight: var(--hvnly-h1-weight, var(--hvnly--weight-bold));
	color: var(--hvnly-heading-color, var(--hvnly--ink-900));
	letter-spacing: var(--hvnly-h1-letter-spacing, var(--hvnly--tracking-tight));
}

/* ── Headings & paragraph ──────────────────────────────────────── */
.wp-block-heading {
	margin-top: var(--hvnly--space-16);
	margin-bottom: var(--hvnly--space-6);
	color: var(--hvnly-heading-color, var(--hvnly--ink-900));
}

.wp-block-heading:first-child {
	margin-top: 0;
}

.wp-block-paragraph,
p.wp-block-paragraph {
	color: var(--hvnly-body-text-color, var(--hvnly--ink-600));
	line-height: var(--hvnly-body-line-height, 1.8);
}

/* ── Lists ───────────────────────────────────────────────────────── */
.wp-block-list,
ul.wp-block-list,
ol.wp-block-list {
	padding-left: var(--hvnly--space-11);
}

ul.wp-block-list { list-style: disc; }
ol.wp-block-list { list-style: decimal; }

.wp-block-list li + li {
	margin-top: var(--hvnly--space-4);
}

/* ── Quote & pullquote ───────────────────────────────────────────── */
.wp-block-quote,
.wp-block-pullquote {
	margin: var(--hvnly--space-12) 0;
	padding: var(--hvnly--space-10) var(--hvnly--space-12);
	border-left: 3px solid var(--hvnly-link-color, var(--hvnly--core-primary));
	border-radius: 0 var(--hvnly--radius-md) var(--hvnly--radius-md) 0;
	background: var(--hvnly--surface-50);
}

.wp-block-pullquote {
	border-left: 0;
	border-top: 3px solid var(--hvnly-link-color, var(--hvnly--core-primary));
	border-radius: var(--hvnly--radius-md);
	text-align: center;
}

.wp-block-quote cite,
.wp-block-pullquote cite {
	display: block;
	margin-top: var(--hvnly--space-6);
	font-size: var(--hvnly--text-sm);
	color: var(--hvnly--ink-400);
	font-style: normal;
}

/* ── Code ────────────────────────────────────────────────────────── */
.wp-block-code,
.wp-block-preformatted {
	font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
	font-size: 0.9em;
	background: var(--hvnly--surface-dark-2);
	color: #E7E5F3;
	border: 1px solid rgba(255, 255, 255, 0.08);
	border-radius: var(--hvnly--radius-md);
	padding: var(--hvnly--space-11);
	overflow-x: auto;
	line-height: 1.6;
}

/* ── Image & gallery ─────────────────────────────────────────────── */
.wp-block-image {
	margin: var(--hvnly--space-12) 0;
}

.wp-block-image img,
.wp-block-gallery img {
	border-radius: var(--hvnly--radius-lg);
	border: 1px solid var(--hvnly--border);
	box-shadow: var(--hvnly--shadow-sm);
}

.wp-block-gallery {
	display: grid;
	gap: var(--hvnly--space-7);
}

.wp-block-gallery.has-nested-images {
	gap: var(--hvnly--space-7);
}

/* ── Table ───────────────────────────────────────────────────────── */
.wp-block-table table {
	width: 100%;
	border-collapse: collapse;
	font-size: 0.95em;
	border: 1px solid var(--hvnly-input-border-color, var(--hvnly--border));
	border-radius: var(--hvnly--radius-md);
	overflow: hidden;
}

.wp-block-table th,
.wp-block-table td {
	padding: 12px 16px;
	border-bottom: 1px solid var(--hvnly-input-border-color, var(--hvnly--border));
}

.wp-block-table thead th {
	background: var(--hvnly--surface-50);
	font-weight: var(--hvnly--weight-semibold);
}

.wp-block-table.is-style-stripes tbody tr:nth-child(odd) {
	background: var(--hvnly--surface-50);
}

/* ── Columns ─────────────────────────────────────────────────────── */
.wp-block-columns {
	gap: var(--hvnly--space-11);
	margin: var(--hvnly--space-12) 0;
}

.wp-block-column > * + * {
	margin-top: var(--hvnly--space-7);
}

@media (max-width: 781px) {
	.wp-block-columns:not(.is-not-stacked-on-mobile) {
		flex-direction: column;
	}
}

/* ── Buttons ─────────────────────────────────────────────────────── */
.wp-block-buttons {
	gap: var(--hvnly--space-6);
	margin: var(--hvnly--space-10) 0;
}

.wp-block-button__link {
	border-radius: var(--hvnly-button-radius, var(--hvnly--radius-pill));
	padding: var(--hvnly-btn-padding, 15px 28px);
	font-size: var(--hvnly-btn-font-size, var(--hvnly--text-md));
	font-weight: var(--hvnly-btn-font-weight, var(--hvnly--weight-bold));
}

/* ── Cover & media-text ──────────────────────────────────────────── */
.wp-block-cover {
	border-radius: var(--hvnly--radius-lg);
	overflow: hidden;
	margin: var(--hvnly--space-12) 0;
	min-height: 280px;
}

.wp-block-cover .wp-block-cover__inner-container {
	max-width: var(--hvnly--container-content);
	padding: var(--hvnly--space-14);
}

.wp-block-media-text {
	gap: var(--hvnly--space-11);
	margin: var(--hvnly--space-12) 0;
	border-radius: var(--hvnly--radius-lg);
	overflow: hidden;
	border: 1px solid var(--hvnly--border);
}

.wp-block-media-text__media img {
	border-radius: 0;
}

@media (max-width: 600px) {
	.wp-block-media-text.is-stacked-on-mobile {
		grid-template-columns: 100% !important;
	}
}

/* ── Separator & spacer ────────────────────────────────────────────── */
.wp-block-separator,
hr.wp-block-separator {
	border: 0;
	border-top: 1px solid var(--hvnly-input-border-color, var(--hvnly--border));
	margin: var(--hvnly--space-14) 0;
	opacity: 1;
}

.wp-block-spacer {
	margin: 0 !important;
}

/* ── Embed & file ────────────────────────────────────────────────── */
.wp-block-embed {
	margin: var(--hvnly--space-12) 0;
}

.wp-block-embed__wrapper {
	border-radius: var(--hvnly--radius-md);
	overflow: hidden;
}

.wp-block-file {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: var(--hvnly--space-7);
	padding: var(--hvnly--space-9);
	border: 1px solid var(--hvnly--border);
	border-radius: var(--hvnly--radius-md);
	background: var(--hvnly--surface-50);
	margin: var(--hvnly--space-10) 0;
}

.wp-block-file a:not(.wp-block-file__button) {
	font-weight: var(--hvnly--weight-semibold);
	text-decoration: none;
	color: var(--hvnly-link-color, var(--hvnly--core-primary));
}

.wp-block-file .wp-block-file__button {
	display: inline-flex;
	align-items: center;
	padding: var(--hvnly-btn-padding, 10px 18px);
	border-radius: var(--hvnly-button-radius, var(--hvnly--radius-pill));
	background: var(--hvnly--core-gradient);
	color: var(--hvnly--on-primary);
	text-decoration: none;
	font-weight: var(--hvnly-btn-font-weight, var(--hvnly--weight-bold));
}

/* ── Group & details ─────────────────────────────────────────────── */
.wp-block-group {
	margin: var(--hvnly--space-10) 0;
}

.wp-block-group.has-background {
	padding: var(--hvnly--space-11);
	border-radius: var(--hvnly--radius-lg);
}

.wp-block-details {
	border: 1px solid var(--hvnly--border);
	border-radius: var(--hvnly--radius-md);
	padding: var(--hvnly--space-7) var(--hvnly--space-9);
	background: var(--hvnly--surface-50);
}

.wp-block-details summary {
	font-weight: var(--hvnly--weight-semibold);
	cursor: pointer;
}

/* ── Latest posts & search (in content) ──────────────────────────── */
.wp-block-latest-posts {
	padding-left: 0;
	list-style: none;
}

.wp-block-latest-posts li {
	padding: var(--hvnly--space-7) 0;
	border-bottom: 1px solid var(--hvnly--border);
}

.wp-block-latest-posts li:last-child {
	border-bottom: 0;
}

.wp-block-latest-posts a {
	text-decoration: none;
	color: var(--hvnly-heading-color, var(--hvnly--ink-900));
	font-weight: var(--hvnly--weight-semibold);
}

.wp-block-latest-posts a:hover {
	color: var(--hvnly-link-color, var(--hvnly--core-primary));
}

.wp-block-search {
	display: flex;
	flex-wrap: wrap;
	gap: var(--hvnly--space-5);
	margin: var(--hvnly--space-10) 0;
}

.wp-block-search__input {
	flex: 1;
	min-width: 200px;
}

.wp-block-search__button {
	border-radius: var(--hvnly-button-radius, var(--hvnly--radius-pill));
	padding: var(--hvnly-btn-padding, 12px 22px);
	background: var(--hvnly--core-gradient);
	color: var(--hvnly--on-primary);
	border: 0;
	font-weight: var(--hvnly-btn-font-weight, var(--hvnly--weight-bold));
	cursor: pointer;
}

/* ── Navigation block (in content only) ────────────────────────── */
.wp-block-navigation {
	gap: var(--hvnly--space-5);
}

.wp-block-navigation-item a {
	text-decoration: none;
	color: var(--hvnly-body-text-color, var(--hvnly--ink-600));
	font-weight: var(--hvnly--weight-semibold);
}

.wp-block-navigation-item a:hover {
	color: var(--hvnly-link-color, var(--hvnly--core-primary));
}

/* ── Mobile: post title ──────────────────────────────────────────── */
@media (max-width: 768px) {
	.wp-block-post-title {
		font-size: var(--hvnly-h1-size-mobile, var(--hvnly-h1-size, var(--hvnly--text-display-sm)));
	}
}

/* ── Single blog: refined Gutenberg block rhythm ───────────────── */
.hvnly-blog-single .hvnly-single-content .wp-block-heading {
	margin-top: 1.75em;
	margin-bottom: 0.55em;
}

.hvnly-blog-single .hvnly-single-content .wp-block-heading:first-child {
	margin-top: 0;
}

.hvnly-blog-single .hvnly-single-content .wp-block-list {
	margin-top: 1em;
}

.hvnly-blog-single .hvnly-single-content .wp-block-gallery .blocks-gallery-grid,
.hvnly-blog-single .hvnly-single-content .wp-block-gallery.has-nested-images {
	gap: var(--hvnly--space-6);
}

.hvnly-blog-single .hvnly-single-content .wp-block-file {
	flex-wrap: wrap;
}

.hvnly-blog-single .hvnly-single-content .wp-block-spacer {
	margin: 0;
}
