*,
*::before,
*::after {
	box-sizing: border-box;
	margin: 0;
	padding: 0;
}

html {
	font-size: 16px;
	-webkit-font-smoothing: antialiased;
	-moz-osx-font-smoothing: grayscale;
	scroll-behavior: smooth;
	text-size-adjust: 100%;
	/* Always reserve the scrollbar gutter so centered content does not jump
	   horizontally when page height changes (e.g. swapping mandala text). */
	scrollbar-gutter: stable;
}

body {
	font-family: var(--font-body-family);
	font-size: var(--font-body-size);
	font-weight: var(--font-body-weight);
	line-height: 1.6;
	color: var(--color-text-default);
	background-color: var(--color-bg-default-default);
	overflow-x: hidden;
}

/* Typography */
h1, h2, h3, h4, h5, h6 {
	font-family: var(--font-family-headers);
	color: var(--color-text-default);
	line-height: 1.25;
	margin: 0 0 0.5em;
}

h1 { font-size: var(--font-h1-size); font-weight: var(--font-h1-weight); }
h2 { font-size: var(--font-h2-size); font-weight: var(--font-h2-weight); }
h3 { font-size: var(--font-h3-size); font-weight: var(--font-h3-weight); }
h4 { font-size: var(--font-h4-size); font-weight: var(--font-h4-weight); }
h5 { font-size: var(--font-h5-size); font-weight: var(--font-h5-weight); }
h6 { font-size: var(--font-h6-size); font-weight: var(--font-h6-weight); }

p { margin: 0 0 1em; }

/* The last paragraph of a block adds no space, so boxes keep their padding. */
p:last-child { margin-bottom: 0; }

.cmath-page__title,
.entry-title.cmath-page__title { display: var(--page-title-display, none); }

small,
.label-m { font-size: var(--font-label-m-size); }
.label-s { font-size: var(--font-label-s-size); }

code, pre, kbd, samp {
	font-family: var(--font-family-mono);
	font-size: 0.9em;
}

/* Links */
a {
	color: var(--color-text-link);
	text-decoration: none;
	transition: color 0.2s ease;
}

a:not(.cmath-btn):hover,
a:not(.cmath-btn):focus {
	color: var(--color-text-accent);
}

/* Media */
img, svg, video, canvas {
	max-width: 100%;
	height: auto;
	display: block;
}

ul, ol { list-style: none; }

/* Lists written as content in the Elementor text editor keep their markers. */
.elementor-widget-text-editor ul,
.elementor-widget-text-editor ol {
	margin: 0 0 1em;
	padding-left: 1.5em;
}

.elementor-widget-text-editor ul { list-style: disc; }
.elementor-widget-text-editor ol { list-style: decimal; }

.elementor-widget-text-editor ul:last-child,
.elementor-widget-text-editor ol:last-child { margin-bottom: 0; }

button, input, select, textarea {
	font-family: inherit;
	font-size: inherit;
	color: inherit;
}

/* Form controls */
input:not([type="submit"]):not([type="button"]):not([type="checkbox"]):not([type="radio"]):not([type="search"]),
select,
textarea,
.search-field {
	border: var(--border-width-default) solid var(--color-border-input);
	border-radius: var(--radius-s);
	background-color: var(--color-white-1000);
	padding: var(--space-75) var(--space-100);
}

input:focus,
select:focus,
textarea:focus {
	outline: none;
	border-color: var(--color-border-accent);
}

:disabled,
[disabled] {
	background-color: var(--color-bg-disabled);
	border-color: var(--color-border-disabled);
	color: var(--color-text-disabled);
	cursor: not-allowed;
}

/* Layout helpers */
.cmath-container {
	width: 100%;
	/* Max-width includes side padding: inner content keeps exact grid width
	   (1200) and aligns with Elementor content. */
	max-width: calc(var(--max-width-content) + 2 * var(--grid-margins));
	margin-inline: auto;
	padding-inline: var(--grid-margins);
}

.cmath-container--text { max-width: calc(var(--max-width-text) + 2 * var(--grid-margins)); }
.cmath-container--services { max-width: calc(var(--max-width-services-grid) + 2 * var(--grid-margins)); }

/* Accessibility */
.screen-reader-text,
.sr-only {
	position: absolute;
	width: 1px;
	height: 1px;
	padding: 0;
	margin: -1px;
	overflow: hidden;
	clip: rect(0, 0, 0, 0);
	white-space: nowrap;
	border: 0;
}

.skip-link {
	position: absolute;
	left: -9999px;
	top: 0;
	z-index: 100000;
	background: var(--color-brand-dark-turquoise);
	color: var(--color-text-white);
	padding: var(--space-75) var(--space-150);
	border-radius: 0 0 var(--radius-s) 0;
}

.skip-link:focus {
	left: 0;
	color: var(--color-text-white);
}

/* Messages */
.cmath-message {
	padding: var(--space-150) var(--space-200);
	border-radius: var(--radius-m);
	border: var(--border-width-default) solid transparent;
}

.cmath-message--success { background: var(--color-bg-success-default); border-color: var(--color-border-success); color: var(--color-text-success); }
.cmath-message--warning { background: var(--color-bg-warning-default); border-color: var(--color-border-warning); color: var(--color-text-warning); }
.cmath-message--danger  { background: var(--color-bg-danger-default);  border-color: var(--color-border-danger);  color: var(--color-text-danger); }

/* Buttons */
.cmath-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: var(--space-50);
	padding: var(--space-50) var(--space-100);
	font-family: var(--font-family-paragraph);
	font-size: var(--font-body-size);
	font-weight: var(--font-body-weight);
	line-height: 1.3;
	text-align: center;
	text-decoration: none;
	white-space: nowrap;
	border: var(--border-width-default) solid transparent;
	border-radius: var(--radius-full);
	cursor: pointer;
	transition: background-color 0.18s ease, color 0.18s ease, border-color 0.18s ease, box-shadow 0.18s ease;
}

/* Elementor pill buttons: never wrap into two lines. */
.elementor-button,
.elementor-button .elementor-button-text {
	white-space: nowrap;
}

.cmath-btn:focus-visible {
	outline: none;
}

/* Primary */
.cmath-btn--primary {
	color: var(--color-text-white);
	background: var(--color-brand-teal-darker);
	border-color: var(--color-brand-teal-darker);
}

.cmath-btn--primary:hover {
	background: var(--color-brand-dark-turquoise);
	border-color: var(--color-brand-dark-turquoise);
}

.cmath-btn--primary:focus-visible {
	background: var(--color-brand-dark-turquoise);
	border-color: var(--color-text-white);
	box-shadow: 0 0 0 2px var(--color-brand-dark-turquoise);
}

/* Secondary */
.cmath-btn--secondary {
	color: var(--color-text-default);
	background: transparent;
	border-color: var(--color-border-accent);
}

.cmath-btn--secondary:hover {
	color: var(--color-text-default);
	background: var(--color-brand-blue);
	border-color: var(--color-brand-blue);
}

.cmath-btn--secondary:focus-visible {
	color: var(--color-text-default);
	background: var(--color-brand-blue);
	border-color: var(--color-border-accent);
	box-shadow: 0 0 0 2px var(--color-white-1000), 0 0 0 4px var(--color-brand-dark-turquoise);
}

/* Negative */
.cmath-btn--primary.cmath-btn--negative {
	color: var(--color-text-default);
	background: var(--color-brand-blue);
	border-color: var(--color-brand-blue);
}

.cmath-btn--primary.cmath-btn--negative:hover {
	background: var(--color-brand-light-blue);
	border-color: var(--color-brand-light-blue);
}

.cmath-btn--primary.cmath-btn--negative:focus-visible {
	background: var(--color-brand-light-blue);
	border-color: var(--color-text-white);
	box-shadow: 0 0 0 2px var(--color-brand-dark-turquoise);
}

.cmath-btn--secondary.cmath-btn--negative {
	color: var(--color-text-inverse);
	background: transparent;
	border-color: var(--color-border-accent);
}

.cmath-btn--secondary.cmath-btn--negative:hover {
	color: var(--color-text-default);
	background: var(--color-brand-blue);
	border-color: var(--color-brand-blue);
}

.cmath-btn--secondary.cmath-btn--negative:focus-visible {
	color: var(--color-text-default);
	background: var(--color-brand-blue);
	border-color: var(--color-border-accent);
	box-shadow: 0 0 0 2px var(--color-white-1000), 0 0 0 4px var(--color-brand-dark-turquoise);
}

/* Disabled */
.cmath-btn:disabled,
.cmath-btn[disabled],
.cmath-btn.is-disabled,
.cmath-btn[aria-disabled="true"] {
	cursor: not-allowed;
	pointer-events: none;
	color: var(--color-text-disabled);
	box-shadow: none;
}

.cmath-btn--primary:disabled,
.cmath-btn--primary[disabled],
.cmath-btn--primary.is-disabled,
.cmath-btn--primary[aria-disabled="true"] {
	background: var(--color-bg-disabled);
	border-color: transparent;
}

.cmath-btn--secondary:disabled,
.cmath-btn--secondary[disabled],
.cmath-btn--secondary.is-disabled,
.cmath-btn--secondary[aria-disabled="true"] {
	background: transparent;
	border-color: var(--color-border-disabled);
}

/* Pagination */
.cmath-pagination {
	display: flex;
	align-items: center;
	gap: var(--space-100);
	margin-top: var(--space-300);
}

.cmath-pagination__numbers {
	display: flex;
	align-items: center;
	gap: var(--space-25);
	margin-inline: auto;
}

.cmath-pagination .page-numbers {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 37px;
	height: 37px;
	padding: 0 var(--space-50);
	font-family: var(--font-family-paragraph);
	font-size: var(--font-body-size);
	line-height: 1.3;
	color: var(--color-text-default);
	text-decoration: none;
	border-radius: var(--radius-full);
	transition: background-color 0.18s ease, color 0.18s ease;
}

.cmath-pagination a.page-numbers:hover,
.cmath-pagination a.page-numbers:focus-visible {
	text-decoration: underline;
}

.cmath-pagination .page-numbers.current {
	background: var(--color-brand-chalk-board);
	color: var(--color-text-white);
}

.cmath-pagination .page-numbers.dots {
	min-width: auto;
	padding-inline: var(--space-25);
}

.cmath-pagination__edge {
	display: inline-flex;
	align-items: center;
	gap: var(--space-50);
	flex: 0 0 auto;
	padding: var(--space-50) var(--space-100);
	font-family: var(--font-family-paragraph);
	font-size: var(--font-body-size);
	line-height: 1.3;
	color: var(--color-text-default);
	text-decoration: none;
	background: transparent;
	border: var(--border-width-default) solid var(--color-border-accent);
	border-radius: var(--radius-full);
	transition: background-color 0.18s ease, color 0.18s ease, border-color 0.18s ease;
}

.cmath-pagination__edge:hover {
	background-color: var(--color-brand-light-blue);
}

.cmath-pagination__edge.is-disabled {
	background: transparent;
	border-color: var(--color-border-disabled);
	color: var(--color-text-disabled);
	cursor: not-allowed;
	pointer-events: none;
}

.cmath-pagination__edge svg {
	flex: 0 0 auto;
}

@media (max-width: 768px) {
	.cmath-pagination {
		gap: var(--space-50);
		justify-content: space-between;
	}

	.cmath-pagination__numbers {
		margin-inline: 0;
	}

	.cmath-pagination__edge-label,
	.cmath-pagination__edge svg {
		display: none;
	}

	.cmath-pagination__edge {
		width: 37px;
		height: 37px;
		padding: 0;
		border: 0;
		background: center / 100% 100% no-repeat;
	}

	.cmath-pagination__edge:hover {
		background-color: transparent;
	}

	.cmath-pagination__edge--prev {
		background-image: url("../img/pagination-mobile-active.svg");
	}

	.cmath-pagination__edge--prev.is-disabled {
		background-image: url("../img/pagination-mobile-disabled.svg");
	}

	.cmath-pagination__edge--next {
		background-image: url("../img/pagination-mobile-active.svg");
		transform: rotate(180deg);
	}

	.cmath-pagination__edge--next.is-disabled {
		background-image: url("../img/pagination-mobile-disabled.svg");
	}
}
