/**
 * AdProMax — editorial / Gutenberg content layer.
 *
 * Loaded on the front end and, via add_editor_style(), inside the block editor,
 * so the editor resembles the reading experience.
 */

.apm-entry-content {
	--apm-flow: var(--apm-space-lg);
	max-width: var(--apm-content-width);
	margin-inline: auto;
	font-size: 17px;
	line-height: 1.7;
	color: var(--apm-text-muted);
}

.apm-entry-content > * {
	margin-block: 0 var(--apm-flow);
	max-width: 100%;
}

.apm-entry-content > *:last-child {
	margin-block-end: 0;
}

/* ---- Alignment ------------------------------------------------------- */

.apm-entry-content > .alignwide {
	max-width: var(--apm-wide-width);
	margin-inline: calc(50% - min(50vw - var(--apm-pad-inline), var(--apm-wide-width) / 2));
	width: auto;
}

.apm-entry-content > .alignfull {
	max-width: none;
	width: auto;
	margin-inline: calc(50% - 50vw);
}

/* alignfull must never introduce a horizontal scrollbar. */
.apm-entry-content > .alignfull > * {
	max-width: var(--apm-wide-width);
	margin-inline: auto;
	padding-inline: var(--apm-pad-inline);
}

.apm-entry-content > .alignfull.wp-block-cover > *,
.apm-entry-content > .alignfull.wp-block-image > * {
	padding-inline: 0;
	max-width: none;
}

.apm-entry-content .alignleft {
	float: inline-start;
	margin-inline-end: var(--apm-space-lg);
	margin-block-end: var(--apm-space-md);
	max-width: 50%;
}

.apm-entry-content .alignright {
	float: inline-end;
	margin-inline-start: var(--apm-space-lg);
	margin-block-end: var(--apm-space-md);
	max-width: 50%;
}

.apm-entry-content .aligncenter {
	margin-inline: auto;
}

@media (max-width: 640px) {
	.apm-entry-content .alignleft,
	.apm-entry-content .alignright {
		float: none;
		margin-inline: 0;
		max-width: 100%;
	}
}

/* ---- Headings -------------------------------------------------------- */

.apm-entry-content h2 {
	font-size: clamp(24px, 2.8vw, 30px);
	margin-block-start: var(--apm-space-2xl);
	color: var(--apm-text-strong);
}

.apm-entry-content h3 {
	font-size: clamp(20px, 2.2vw, 24px);
	margin-block-start: var(--apm-space-xl);
	color: var(--apm-text-strong);
}

.apm-entry-content h4 {
	font-size: var(--apm-size-h4);
	margin-block-start: var(--apm-space-lg);
	color: var(--apm-text-strong);
}

.apm-entry-content h2:first-child,
.apm-entry-content h3:first-child {
	margin-block-start: 0;
}

/* Long Arabic and French headings wrap rather than overflow. */
.apm-entry-content h1,
.apm-entry-content h2,
.apm-entry-content h3,
.apm-entry-content h4,
.apm-entry-title {
	overflow-wrap: break-word;
	word-break: normal;
	hyphens: auto;
}

/* ---- Links & inline -------------------------------------------------- */

.apm-entry-content a:not(.wp-block-button__link):not(.wp-element-button) {
	color: var(--apm-brand-hover);
	text-decoration: underline;
	text-underline-offset: 3px;
	text-decoration-thickness: 1px;
}

.apm-entry-content a:not(.wp-block-button__link):hover {
	text-decoration-thickness: 2px;
}

.apm-entry-content strong,
.apm-entry-content b {
	color: var(--apm-text-strong);
	font-weight: 700;
}

.apm-entry-content code,
.apm-entry-content kbd,
.apm-entry-content samp {
	font-family: var(--apm-font-mono);
	font-size: 0.88em;
	background: var(--apm-brand-tint);
	color: var(--apm-brand-hover);
	padding: 0.15em 0.4em;
	border-radius: var(--apm-radius-sm);
	overflow-wrap: break-word;
}

/* ---- Lists ----------------------------------------------------------- */

.apm-entry-content ul,
.apm-entry-content ol {
	padding-inline-start: 1.5em;
}

.apm-entry-content li {
	margin-block-end: var(--apm-space-xs);
}

.apm-entry-content li > ul,
.apm-entry-content li > ol {
	margin-block: var(--apm-space-xs) 0;
}

/* ---- Quotes ---------------------------------------------------------- */

.apm-entry-content blockquote,
.apm-entry-content .wp-block-quote {
	margin-inline: 0;
	padding-inline-start: var(--apm-space-lg);
	border-inline-start: 3px solid var(--apm-brand);
	color: var(--apm-text-strong);
	font-size: 1.06em;
}

.apm-entry-content blockquote cite,
.apm-entry-content .wp-block-quote cite {
	display: block;
	margin-block-start: var(--apm-space-sm);
	font-size: var(--apm-size-small);
	font-style: normal;
	color: var(--apm-text-subtle);
}

.apm-entry-content .wp-block-pullquote {
	border-block: 2px solid var(--apm-border-card);
	padding-block: var(--apm-space-xl);
	text-align: center;
}

.apm-entry-content .wp-block-pullquote blockquote {
	border: 0;
	padding-inline: 0;
	font-size: clamp(20px, 2.4vw, 26px);
	line-height: 1.35;
	font-weight: 700;
	letter-spacing: var(--apm-ls-snug);
}

/* ---- Code ------------------------------------------------------------ */

.apm-entry-content pre,
.apm-entry-content .wp-block-code,
.apm-entry-content .wp-block-preformatted {
	font-family: var(--apm-font-mono);
	font-size: 13.5px;
	line-height: 1.6;
	background: var(--apm-dark);
	color: var(--apm-dark-text-soft);
	border-radius: var(--apm-radius-md);
	padding: var(--apm-space-md) var(--apm-space-lg);
	overflow-x: auto;
	max-width: 100%;
	direction: ltr;
	text-align: start;
	tab-size: 2;
}

.apm-entry-content pre code,
.apm-entry-content .wp-block-code code {
	background: none;
	color: inherit;
	padding: 0;
	font-size: inherit;
	white-space: pre;
}

/* ---- Tables ---------------------------------------------------------- */

.apm-entry-content .wp-block-table,
.apm-entry-content figure.wp-block-table {
	overflow-x: auto;
	max-width: 100%;
}

.apm-entry-content table {
	width: 100%;
	border-collapse: collapse;
	font-size: 14.5px;
	min-width: 480px;
}

/* Core Table blocks scroll inside their own <figure class="wp-block-table">.
   Classic-editor and raw-HTML tables have no such wrapper, so the table itself
   becomes the scroll container. Scoped with :not() so it never double-applies to a
   block table, and restricted to the outermost table so nested layout tables are
   left alone. Replaces the previous regex wrapper, which mis-nested its closing
   </div> inside the outer table whenever tables were nested. */
.apm-entry-content > table,
.apm-entry-content > .wp-block-html > table,
.apm-entry-content > * > table:not(.wp-block-table table) {
	display: block;
	overflow-x: auto;
	max-width: 100%;
	min-width: 0;
}

/* Restore the table box model for the internal layout of a scrolling table. */
.apm-entry-content > table > tbody,
.apm-entry-content > table > thead,
.apm-entry-content > .wp-block-html > table > tbody,
.apm-entry-content > .wp-block-html > table > thead {
	display: table;
	width: 100%;
	min-width: 480px;
}

/* A nested table stays a normal table: it scrolls with its ancestor, not on its own. */
.apm-entry-content table table {
	display: table;
	min-width: 0;
	overflow: visible;
}

.apm-entry-content th,
.apm-entry-content td {
	padding: 10px var(--apm-space-sm);
	border-block-end: 1px solid var(--apm-border-soft);
	text-align: start;
	vertical-align: top;
}

.apm-entry-content thead th {
	background: var(--apm-bg-subtle);
	color: var(--apm-text-strong);
	font-size: var(--apm-size-tiny);
	font-weight: 700;
	letter-spacing: 0.08em;
	text-transform: uppercase;
}

.apm-entry-content table caption {
	caption-side: bottom;
	font-size: var(--apm-size-tiny);
	color: var(--apm-text-subtle);
	padding-block-start: var(--apm-space-xs);
	text-align: start;
}

/* ---- Media ----------------------------------------------------------- */

.apm-entry-content figure {
	margin-inline: 0;
}

.apm-entry-content img {
	border-radius: var(--apm-radius-md);
}

.apm-entry-content figcaption,
.apm-entry-content .wp-element-caption {
	font-size: var(--apm-size-small);
	line-height: var(--apm-lh-body);
	color: var(--apm-text-subtle);
	margin-block-start: var(--apm-space-xs);
	text-align: start;
}

.apm-entry-content .wp-block-gallery {
	gap: var(--apm-space-sm);
}

.apm-entry-content .wp-block-embed__wrapper,
.apm-entry-content .wp-block-video video,
.apm-entry-content iframe {
	max-width: 100%;
	border-radius: var(--apm-radius-md);
}

.apm-entry-content .wp-block-embed.wp-has-aspect-ratio .wp-block-embed__wrapper {
	position: relative;
}

/* ---- Buttons --------------------------------------------------------- */

.apm-entry-content .wp-block-button__link,
.apm-entry-content .wp-element-button {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-height: var(--apm-control-h);
	padding-inline: 26px;
	border-radius: var(--apm-radius);
	background: var(--apm-brand);
	color: var(--apm-white);
	font-weight: 700;
	text-decoration: none;
}

.apm-entry-content .wp-block-button__link:hover,
.apm-entry-content .wp-element-button:hover {
	background: var(--apm-brand-hover);
	color: var(--apm-white);
}

.apm-entry-content .is-style-outline > .wp-block-button__link {
	background: transparent;
	color: var(--apm-brand-hover);
	border: 1px solid var(--apm-border-strong);
}

/* ---- Separator, details, file --------------------------------------- */

.apm-entry-content hr,
.apm-entry-content .wp-block-separator {
	border: 0;
	border-block-start: 1px solid var(--apm-border-card);
	margin-block: var(--apm-space-2xl);
	max-width: 100%;
}

.apm-entry-content .wp-block-details,
.apm-entry-content details {
	border: 1px solid var(--apm-border-card);
	border-radius: var(--apm-radius-lg);
	background: var(--apm-bg-subtle);
	padding: var(--apm-space-md) var(--apm-space-lg);
}

.apm-entry-content summary {
	cursor: pointer;
	font-weight: 700;
	color: var(--apm-text-strong);
	min-height: var(--apm-tap);
	display: flex;
	align-items: center;
}

.apm-entry-content .wp-block-file {
	display: flex;
	align-items: center;
	gap: var(--apm-space-sm);
	flex-wrap: wrap;
}

.apm-entry-content .wp-block-footnotes {
	font-size: 14.5px;
	color: var(--apm-text-subtle);
}

/* ---- Groups, columns, cover ----------------------------------------- */

.apm-entry-content .wp-block-columns {
	gap: var(--apm-space-lg);
}

.apm-entry-content .wp-block-column {
	min-width: 0;
}

.apm-entry-content .wp-block-group.has-background,
.apm-entry-content .wp-block-cover {
	border-radius: var(--apm-radius-xl);
	overflow: hidden;
}

.apm-entry-content .wp-block-group.has-background {
	padding: var(--apm-space-lg);
}

/* Callout style registered in inc/editor.php */
.apm-entry-content .is-style-apm-callout {
	border: 1px solid var(--apm-brand-tint-border);
	background: var(--apm-brand-tint);
	border-radius: var(--apm-radius-lg);
	padding: var(--apm-space-lg);
	color: var(--apm-text-strong);
}

/* ---- Table of contents ---------------------------------------------- */

.apm-toc {
	border: 1px solid var(--apm-border-card);
	border-radius: var(--apm-radius-lg);
	background: var(--apm-bg-subtle);
	padding: var(--apm-space-md) var(--apm-space-lg);
	margin-block-end: var(--apm-space-xl);
	max-width: var(--apm-content-width);
	margin-inline: auto;
}

.apm-toc__title {
	font-size: var(--apm-size-micro);
	font-weight: 700;
	letter-spacing: var(--apm-ls-wide);
	text-transform: uppercase;
	color: var(--apm-text-subtle);
	margin-block: 0 var(--apm-space-xs);
}

.apm-toc ol {
	margin: 0;
	padding-inline-start: 1.2em;
	font-size: 14.5px;
}

.apm-toc li {
	margin-block-end: var(--apm-space-2xs);
}

.apm-toc li[data-level="3"] {
	padding-inline-start: 1em;
}

.apm-toc a {
	display: inline-flex;
	align-items: center;
	min-height: 24px;
	color: var(--apm-text-muted);
}

/* Sticky-header offset for in-page anchors. */
.apm-entry-content :is(h2, h3, h4)[id],
[data-apm-anchor] {
	scroll-margin-block-start: 96px;
}

/* Tables inserted as raw HTML (not the core table block) still scroll in place. */
.apm-table-scroll {
	overflow-x: auto;
	max-width: 100%;
}

.apm-table-scroll:focus-visible {
	outline: var(--apm-focus-width) solid var(--apm-brand);
	outline-offset: var(--apm-focus-offset);
}
