/*
 * Global base stylesheet — loaded on every page.
 * Consumes the custom properties defined in tokens.css (enqueued as a
 * dependency, see inc/enqueue.php) rather than hardcoding values.
 * Feature-specific stylesheets (calculators, quizzes, dashboard) are
 * enqueued conditionally from inc/enqueue.php and must not be added here.
 */

* {
	box-sizing: border-box;
}

body {
	margin: 0;
	background: var(--bg-page);
	color: var(--text-primary);
	font-family: var(--font-body);
	font-size: var(--text-base);
	line-height: var(--leading-normal);
	transition: background-color var(--duration-base) var(--ease-in-out), color var(--duration-base) var(--ease-in-out);
}

h1, h2, h3, h4, h5, h6 {
	font-family: var(--font-display);
	font-weight: var(--font-semibold);
	line-height: var(--leading-tight);
	letter-spacing: var(--tracking-tight);
	color: var(--text-primary);
}

img {
	max-width: 100%;
	height: auto;
}

a {
	color: var(--text-link);
}

a:hover {
	color: var(--text-link-hover);
}

:focus-visible {
	outline: none;
	box-shadow: var(--focus-ring);
	border-radius: var(--radius-sm);
}

.skip-link {
	position: absolute;
	left: -9999px;
	top: 0;
	z-index: var(--z-tooltip);
	background: var(--color-secondary);
	color: var(--text-inverse);
	padding: var(--space-3) var(--space-4);
	border-radius: var(--radius-sm);
}

.skip-link:focus {
	left: var(--space-2);
	top: var(--space-2);
}

/* ==========================================================================
   LAYOUT — container, header, main, footer, breadcrumbs, nav
   Added on top of the component styles below. Built on tokens only.
   ========================================================================== */

/* Shared inner-width wrapper. Header, footer, and main content each get a
   centered column capped at the default container width, with responsive
   horizontal padding. */
.hme-site-header__inner,
.hme-site-footer__inner,
.site-content {
	width: 100%;
	max-width: var(--container-default);
	margin-inline: auto;
	padding-inline: var(--space-4);
}

@media (min-width: 768px) {
	.hme-site-header__inner,
	.hme-site-footer__inner,
	.site-content {
		padding-inline: var(--space-6);
	}
}

/* --- Header --- */
.site-header {
	background: var(--bg-page);
	border-bottom: 1px solid var(--border-default);
}

.hme-site-header__inner {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: var(--space-6);
	padding-block: var(--space-4);
}

.hme-site-branding {
	flex: 0 0 auto;
}

.hme-site-title {
	margin: 0;
	font-size: var(--text-2xl);
	font-weight: var(--font-bold);
	letter-spacing: var(--tracking-tight);
	line-height: var(--leading-tight);
}

.hme-site-title a {
	color: var(--text-primary);
	text-decoration: none;
}

.hme-site-title a:hover {
	color: var(--color-primary);
}

/* --- Main navigation --- */
.hme-navbar--main {
	flex: 1 1 auto;
	display: flex;
	justify-content: flex-end;
}

.hme-navbar--main ul {
	list-style: none;
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: var(--space-6);
	margin: 0;
	padding: 0;
}

.hme-navbar--main a {
	color: var(--text-primary);
	text-decoration: none;
	font-weight: var(--font-medium);
	font-size: var(--text-base);
	padding-block: var(--space-2);
	border-bottom: 2px solid transparent;
	transition: color var(--duration-fast) var(--ease-in-out), border-color var(--duration-fast) var(--ease-in-out);
}

.hme-navbar--main a:hover,
.hme-navbar--main .current-menu-item > a {
	color: var(--color-primary);
	border-bottom-color: var(--color-primary);
}

/* --- Site content region --- */
.site-content {
	padding-block: var(--space-12);
}

@media (min-width: 768px) {
	.site-content {
		padding-block: var(--space-16);
	}
}

.site-main > * + * {
	margin-top: var(--space-8);
}

/* --- Breadcrumbs --- */
.hme-breadcrumbs {
	margin-bottom: var(--space-6);
}

.hme-breadcrumbs__list {
	list-style: none;
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: var(--space-2);
	margin: 0;
	padding: 0;
	font-size: var(--text-sm);
	color: var(--text-secondary);
}

.hme-breadcrumbs__item {
	display: flex;
	align-items: center;
	gap: var(--space-2);
}

/* separator between crumbs (not before the first) */
.hme-breadcrumbs__item + .hme-breadcrumbs__item::before {
	content: "/";
	color: var(--text-disabled);
}

.hme-breadcrumbs__item a {
	color: var(--text-secondary);
	text-decoration: none;
}

.hme-breadcrumbs__item a:hover {
	color: var(--color-primary);
}

.hme-breadcrumbs__item [aria-current="page"] {
	color: var(--text-primary);
	font-weight: var(--font-medium);
}

/* --- Page (single Page) --- */
.hme-page__title {
	font-size: var(--text-4xl);
	margin: 0 0 var(--space-6);
}

@media (min-width: 768px) {
	.hme-page__title {
		font-size: var(--text-5xl);
	}
}

.hme-page__content {
	max-width: var(--container-narrow);
	color: var(--text-primary);
	line-height: var(--leading-relaxed);
}

.hme-page__content > * + * {
	margin-top: var(--space-4);
}

.hme-page__content h2 {
	font-size: var(--text-3xl);
	margin-top: var(--space-10);
}

.hme-page__content h3 {
	font-size: var(--text-2xl);
	margin-top: var(--space-8);
}

.hme-page__content a {
	color: var(--text-link);
	text-decoration: underline;
	text-underline-offset: 2px;
}

/* --- Post list on index/archive: stack cards with rhythm --- */
.site-main > .hme-card + .hme-card {
	margin-top: var(--space-6);
}

/* --- Footer --- */
.site-footer {
	margin-top: var(--space-16);
	background: var(--bg-surface);
	border-top: 1px solid var(--border-default);
}

.hme-site-footer__inner {
	display: flex;
	flex-direction: column;
	gap: var(--space-4);
	padding-block: var(--space-10);
}

.hme-footer-navigation ul {
	list-style: none;
	display: flex;
	flex-wrap: wrap;
	gap: var(--space-6);
	margin: 0;
	padding: 0;
}

.hme-footer-navigation a {
	color: var(--text-secondary);
	text-decoration: none;
	font-size: var(--text-sm);
}

.hme-footer-navigation a:hover {
	color: var(--color-primary);
}

.hme-site-info {
	color: var(--text-secondary);
	font-size: var(--text-sm);
}

/* ==========================================================================
   COMPONENTS
   ========================================================================== */

/* Buttons (components/buttons/button.php) */
.hme-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: var(--space-2);
	min-height: var(--min-tap-target);
	padding: var(--space-3) var(--space-6);
	border: none;
	border-radius: var(--radius-md);
	font-family: var(--font-body);
	font-weight: var(--font-medium);
	font-size: var(--text-base);
	text-decoration: none;
	cursor: pointer;
	transition: background-color var(--duration-fast) var(--ease-in-out), box-shadow var(--duration-fast) var(--ease-in-out);
}

.hme-btn--primary {
	background: var(--color-primary);
	color: var(--text-inverse);
}

.hme-btn--primary:hover {
	background: var(--color-primary-hover);
	box-shadow: var(--shadow-primary-glow);
}

.hme-btn--primary:active {
	background: var(--color-primary-active);
}

.hme-btn--secondary {
	background: var(--color-secondary);
	color: var(--text-inverse);
}

.hme-btn--secondary:hover {
	background: var(--color-secondary-hover);
}

.hme-btn--outline {
	background: transparent;
	color: var(--text-primary);
	border: 1px solid var(--border-strong);
}

.hme-btn--outline:hover {
	background: var(--bg-surface);
}

/* Cards (components/cards/card.php) */
.hme-card {
	background: var(--bg-surface-raised);
	border: 1px solid var(--border-default);
	border-radius: var(--radius-lg);
	box-shadow: var(--shadow-sm);
	overflow: hidden;
	transition: box-shadow var(--duration-base) var(--ease-in-out), transform var(--duration-base) var(--ease-in-out);
}

.hme-card:hover {
	box-shadow: var(--shadow-md);
}

.hme-card__body {
	padding: var(--space-6);
}

.hme-card__title {
	font-size: var(--text-xl);
	margin: 0 0 var(--space-2);
}

.hme-card__title a {
	color: var(--text-primary);
	text-decoration: none;
}

.hme-card__title a:hover {
	color: var(--color-primary);
}

.hme-card__meta {
	list-style: none;
	display: flex;
	flex-wrap: wrap;
	gap: var(--space-2);
	margin: 0 0 var(--space-3);
	padding: 0;
	color: var(--text-secondary);
	font-size: var(--text-sm);
}

.hme-card__excerpt {
	color: var(--text-secondary);
	font-size: var(--text-sm);
	line-height: var(--leading-relaxed);
}

.hme-card__cta {
	display: inline-block;
	margin-top: var(--space-4);
	color: var(--color-primary);
	font-weight: var(--font-medium);
	text-decoration: none;
}

.hme-card__cta:hover {
	color: var(--color-primary-hover);
	text-decoration: underline;
	text-underline-offset: 2px;
}

/* Form fields (components/forms/field.php) */
.hme-field {
	margin-bottom: var(--space-4);
}

.hme-field label {
	display: block;
	margin-bottom: var(--space-2);
	font-size: var(--text-sm);
	font-weight: var(--font-medium);
	color: var(--text-primary);
}

.hme-field input,
.hme-field textarea,
.hme-field select {
	width: 100%;
	min-height: var(--min-tap-target);
	padding: var(--space-3);
	background: var(--bg-muted);
	border: 1px solid var(--border-default);
	border-radius: var(--radius-sm);
	font-family: var(--font-body);
	font-size: var(--text-base);
	color: var(--text-primary);
}

.hme-field input:focus,
.hme-field textarea:focus,
.hme-field select:focus {
	border-color: var(--border-focus);
}

.hme-field__required {
	color: var(--color-error);
}

/* Feedback notices (components/feedback/notice.php) */
.hme-notice {
	padding: var(--space-4);
	border-radius: var(--radius-md);
	font-size: var(--text-sm);
}

.hme-notice--info {
	background: var(--color-info-light);
	color: var(--color-info);
}

.hme-notice--success {
	background: var(--color-success-light);
	color: var(--color-success);
}

.hme-notice--warning {
	background: var(--color-warning-light);
	color: var(--color-warning);
}

.hme-notice--error {
	background: var(--color-error-light);
	color: var(--color-error);
}

/* Premium/paid badge convention (accent color, per design-tokens.md's
   component mapping) */
.hme-badge--premium {
	display: inline-block;
	padding: var(--space-1) var(--space-3);
	background: var(--color-accent-light);
	color: var(--color-accent);
	border-radius: var(--radius-full);
	font-size: var(--text-xs);
	font-weight: var(--font-semibold);
	letter-spacing: var(--tracking-wide);
	text-transform: uppercase;
}

/* MCQ correct/incorrect states (features/quizzes/quiz-engine) */
.hme-quiz-engine__question--correct {
	background: var(--color-success-light);
}

.hme-quiz-engine__question--incorrect {
	background: var(--color-error-light);
}