/*
Theme Name: Econ4Life
Template: blocksy
Version: 1.0.0
Author: Oikonomia / Econ4Life
Author URI: https://www.econ4life.com
Description: Blocksy child theme for Econ4Life / Oikonomia eLearning Platform.
Requires at least: 6.5
Requires PHP: 8.1
License: GPL-2.0-or-later
License URI: https://www.gnu.org/licenses/gpl-2.0.html
Text Domain: eco4life
Tags: education, e-commerce, blocksy, elearning
*/

/* ===========================================================================
   LearnDash — Topic type badge + reflection form
   =========================================================================== */

.e4l-topic-badge {
	display: inline-flex;
	align-items: center;
	gap: 0.5rem;
	padding: 0.375rem 0.875rem;
	border-radius: 999px;
	font-size: 0.75rem;
	font-weight: 700;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	margin: 0 0 1.25rem;
}
.e4l-topic-badge--watch   { background: var(--wp--preset--color--primary-light);   color: var(--wp--preset--color--primary); }
.e4l-topic-badge--read    { background: var(--wp--preset--color--secondary-light); color: var(--wp--preset--color--secondary-dark); }
.e4l-topic-badge--respond { background: #FEF3E2;                                    color: var(--wp--preset--color--accent); }
.e4l-topic-badge__icon    { font-size: 1rem; letter-spacing: 0; }

/* Reflection submission block ------------------------------------------------- */

.e4l-reflection {
	margin: 2rem 0;
	padding: 1.5rem;
	border: 1px solid var(--wp--preset--color--neutral-200, #E1E8ED);
	border-radius: 0.75rem;
	background: var(--wp--preset--color--base, #fff);
}
.e4l-reflection__title {
	display: block;
	font-weight: 700;
	font-size: 1.0625rem;
	margin: 0 0 0.25rem;
	color: var(--wp--preset--color--neutral-900);
}
.e4l-reflection__help {
	color: var(--wp--preset--color--neutral-500, #6B7A8C);
	font-size: 0.9rem;
	margin: 0 0 1rem;
	line-height: 1.55;
}
.e4l-reflection textarea {
	width: 100%;
	padding: 0.875rem 1rem;
	border: 1px solid var(--wp--preset--color--neutral-300, #B8C3CC);
	border-radius: 0.5rem;
	font: inherit;
	font-size: 1rem;
	line-height: 1.6;
	resize: vertical;
	min-height: 7rem;
	background: var(--wp--preset--color--surface, #F8FAFB);
}
.e4l-reflection textarea:focus {
	outline: 0;
	border-color: var(--wp--preset--color--primary);
	box-shadow: 0 0 0 3px rgba(23, 98, 115, 0.15);
	background: #fff;
}
.e4l-reflection__error {
	color: #b91c1c;
	font-size: 0.875rem;
	font-weight: 600;
	margin: 0 0 0.5rem;
}
.e4l-reflection__btn {
	display: inline-flex;
	align-items: center;
	gap: 0.5rem;
	margin-top: 0.875rem;
	padding: 0.875rem 1.5rem;
	background: var(--wp--preset--color--secondary);
	color: #fff;
	border: 0;
	border-radius: 0.5rem;
	font: inherit;
	font-weight: 600;
	font-size: 0.95rem;
	cursor: pointer;
	transition: background 0.15s ease;
}
.e4l-reflection__btn:hover {
	background: var(--wp--preset--color--secondary-dark);
}

.e4l-reflection--done {
	border-color: var(--wp--preset--color--secondary);
	background: var(--wp--preset--color--secondary-light);
}
.e4l-reflection__header {
	display: flex;
	align-items: baseline;
	gap: 0.5rem;
	margin-bottom: 0.75rem;
	flex-wrap: wrap;
}
.e4l-reflection__check {
	color: var(--wp--preset--color--secondary-dark);
	font-weight: 700;
	font-size: 1.1rem;
}
.e4l-reflection__when {
	color: var(--wp--preset--color--neutral-500);
	font-size: 0.8rem;
	font-weight: 400;
	margin-left: auto;
}
.e4l-reflection__body {
	font-size: 0.95rem;
	line-height: 1.65;
	color: var(--wp--preset--color--neutral-900);
	white-space: pre-wrap;
}

.e4l-reflection--locked {
	border-color: var(--wp--preset--color--neutral-200);
	background: var(--wp--preset--color--surface);
}
.e4l-reflection--locked .e4l-reflection__title {
	color: var(--wp--preset--color--primary);
}

/* ===========================================================================
   Contact form
   =========================================================================== */

.e4l-contact-form {
	display: flex;
	flex-direction: column;
	gap: 1rem;
}
.e4l-contact-form__row {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 1rem;
}
@media (max-width: 640px) {
	.e4l-contact-form__row { grid-template-columns: 1fr; }
}

.e4l-contact-form__field {
	display: flex;
	flex-direction: column;
	gap: 0.4rem;
}

.e4l-contact-form__field label {
	font-size: 0.85rem;
	font-weight: 600;
	color: var(--wp--preset--color--neutral-900);
}
.e4l-contact-form__field label span[aria-hidden] {
	color: var(--wp--preset--color--accent);
}

.e4l-contact-form input[type="text"],
.e4l-contact-form input[type="email"],
.e4l-contact-form select,
.e4l-contact-form textarea {
	width: 100%;
	padding: 0.75rem 0.9rem;
	font: inherit;
	font-size: 0.95rem;
	line-height: 1.5;
	color: var(--wp--preset--color--neutral-900);
	background: #fff;
	border: 1px solid var(--wp--preset--color--neutral-300, #B8C3CC);
	border-radius: 0.5rem;
	transition: border-color 0.15s ease, box-shadow 0.15s ease;
}
.e4l-contact-form input:focus,
.e4l-contact-form select:focus,
.e4l-contact-form textarea:focus {
	outline: 0;
	border-color: var(--wp--preset--color--primary);
	box-shadow: 0 0 0 3px rgba(23, 98, 115, 0.15);
}
.e4l-contact-form textarea {
	resize: vertical;
	min-height: 8rem;
}

.e4l-contact-form__submit {
	margin-top: 0.5rem;
	align-self: flex-start;
	padding: 0.875rem 1.5rem;
	background: var(--wp--preset--color--secondary);
	color: #fff;
	border: 0;
	border-radius: 0.5rem;
	font: inherit;
	font-size: 0.95rem;
	font-weight: 700;
	cursor: pointer;
	transition: background 0.15s ease;
}
.e4l-contact-form__submit:hover {
	background: var(--wp--preset--color--secondary-dark);
}

/* Honeypot — invisible field to catch bots */
.e4l-honeypot {
	position: absolute !important;
	left: -9999px !important;
	width: 1px !important;
	height: 1px !important;
	opacity: 0 !important;
	pointer-events: none !important;
}

/* Success / error messages */
.e4l-contact-alert {
	padding: 1rem 1.25rem;
	border-radius: 0.5rem;
	font-size: 0.95rem;
}
.e4l-contact-alert strong {
	display: block;
	margin-bottom: 0.25rem;
	font-size: 1rem;
}
.e4l-contact-alert p {
	margin: 0;
}
.e4l-contact-alert--success {
	background: var(--wp--preset--color--secondary-light, #E3F2E2);
	border: 1px solid var(--wp--preset--color--secondary);
	color: var(--wp--preset--color--secondary-dark);
}
.e4l-contact-alert--error {
	background: #FEF2F2;
	border: 1px solid #FCA5A5;
	color: #B91C1C;
}

/* ===========================================================================
   Schools — pricing matrix
   =========================================================================== */

.e4l-pricing-table-wrap {
	border: 1px solid var(--wp--preset--color--neutral-200, #E1E8ED);
	border-radius: 0.75rem;
	overflow: hidden;
	background: #fff;
}

.e4l-pricing-table {
	width: 100%;
	border-collapse: collapse;
	font-size: 0.95rem;
}

.e4l-pricing-table thead {
	background: var(--wp--preset--color--primary);
}
.e4l-pricing-table thead th {
	padding: 1rem 1.25rem;
	text-align: left;
	color: #fff;
	font-weight: 700;
	font-size: 0.8rem;
	letter-spacing: 0.12em;
	text-transform: uppercase;
}
.e4l-pricing-table thead th:not(:first-child) {
	text-align: center;
}

.e4l-pricing-table tbody td {
	padding: 1rem 1.25rem;
	border-top: 1px solid var(--wp--preset--color--neutral-200);
	text-align: center;
	font-weight: 600;
	font-size: 1rem;
	color: var(--wp--preset--color--neutral-900);
}
.e4l-pricing-table tbody td:first-child {
	text-align: left;
	color: var(--wp--preset--color--neutral-700);
	font-weight: 500;
	background: var(--wp--preset--color--surface);
}
.e4l-pricing-table tbody td:first-child strong {
	color: var(--wp--preset--color--neutral-900);
	font-weight: 700;
}

.e4l-pricing-table tbody tr:nth-child(even) td:not(:first-child) {
	background: var(--wp--preset--color--surface);
}

.e4l-pricing-table tfoot td {
	padding: 0.875rem 1.25rem;
	border-top: 1px solid var(--wp--preset--color--neutral-200);
	background: var(--wp--preset--color--surface);
	color: var(--wp--preset--color--neutral-500);
	font-size: 0.85rem;
	font-style: italic;
	text-align: center;
}

@media (max-width: 640px) {
	.e4l-pricing-table thead th,
	.e4l-pricing-table tbody td {
		padding: 0.75rem 0.65rem;
		font-size: 0.85rem;
	}
}

/* ===========================================================================
   Outline buttons — Blocksy overrides padding via --theme-button-padding
   which can clip our inline padding-bottom. Force a complete 4-side
   border + symmetric padding so the rounded outline always renders fully.

   LearnDash injects a typography reset on all <a> inside .learndash-wrapper
   that sets border-bottom-style:none (to kill underlines), which made the
   bottom edge of our outline buttons disappear. We re-assert all 4 borders
   with a high-specificity selector that wins against LD's reset.
   =========================================================================== */

.wp-block-button.is-style-outline > .wp-block-button__link,
.learndash-wrapper .wp-block-button.is-style-outline > .wp-block-button__link,
.learndash-wrapper .wp-block-button.is-style-outline > a.wp-block-button__link.wp-element-button {
	border-top-style: solid !important;
	border-right-style: solid !important;
	border-bottom-style: solid !important;
	border-left-style: solid !important;
	border-top-width: 2px !important;
	border-right-width: 2px !important;
	border-bottom-width: 2px !important;
	border-left-width: 2px !important;
	padding: 0.875rem 1.5rem !important;
	box-sizing: border-box;
	line-height: 1.4;
}

/* ===========================================================================
   Site footer
   =========================================================================== */

.wp-block-group[class*="has-neutral-900-background"] footer,
footer.has-neutral-900-background-color,
.wp-block-group footer.has-neutral-900-background-color {
	margin-top: 0;
}

footer.has-neutral-900-background-color a {
	color: #E1E8ED;
	text-decoration: none;
	transition: color 0.15s ease;
}
footer.has-neutral-900-background-color a:hover {
	color: var(--wp--preset--color--secondary);
}

.e4l-footer-list {
	list-style: none !important;
	padding-left: 0 !important;
	margin: 0 !important;
}
.e4l-footer-list li {
	margin: 0;
}
.e4l-footer-list a {
	color: #B8C3CC !important;
	font-weight: 500;
}
.e4l-footer-list a:hover {
	color: #fff !important;
}

.e4l-footer-legal a {
	color: #B8C3CC !important;
	text-decoration: none;
}
.e4l-footer-legal a:hover {
	color: #fff !important;
}

/* Mobile: stack columns + center-align bottom bar */
@media (max-width: 781px) {
	footer.has-neutral-900-background-color .wp-block-columns {
		flex-direction: column !important;
		gap: var(--wp--preset--spacing--xl) !important;
	}
	footer.has-neutral-900-background-color .wp-block-column {
		flex-basis: 100% !important;
	}
}

/* Stats grid labels (legacy home content was inserted before labels existed in
   the pattern; inject them via pseudo-elements until the page is re-inserted). */
.wp-block-columns:has(> .wp-block-column div[style*="border-radius:50%"]) > .wp-block-column {
	position: relative;
}
.wp-block-columns:has(> .wp-block-column div[style*="border-radius:50%"]) > .wp-block-column::after {
	display: block;
	text-align: center;
	margin-top: 0.25rem;
	font-size: var(--wp--preset--font-size--xs);
	font-weight: 600;
	letter-spacing: 0.15em;
	text-transform: uppercase;
	color: var(--wp--preset--color--neutral-700);
	line-height: 1.2;
}
.wp-block-columns:has(> .wp-block-column div[style*="border-radius:50%"]) > .wp-block-column:nth-child(1)::after { content: "Weeks"; }
.wp-block-columns:has(> .wp-block-column div[style*="border-radius:50%"]) > .wp-block-column:nth-child(2)::after { content: "Daily Lessons"; }
.wp-block-columns:has(> .wp-block-column div[style*="border-radius:50%"]) > .wp-block-column:nth-child(3)::after { content: "Video Segments"; }
.wp-block-columns:has(> .wp-block-column div[style*="border-radius:50%"]) > .wp-block-column:nth-child(4)::after { content: "Articles"; }

/* Stats grid (Social Proof pattern): keep 4 columns on mobile but scale down. */
@media (max-width: 781px) {
	.wp-block-columns.eco4life-stats-grid,
	.wp-block-columns:has(> .wp-block-column div[style*="border-radius:50%"]) {
		display: flex !important;
		flex-direction: row !important;
		flex-wrap: nowrap !important;
		gap: 0.5rem !important;
	}
	.wp-block-columns.eco4life-stats-grid > .wp-block-column,
	.wp-block-columns:has(> .wp-block-column div[style*="border-radius:50%"]) > .wp-block-column {
		flex: 1 1 0 !important;
		min-width: 0 !important;
		margin-left: 0 !important;
	}
	/* Smaller numerals + smaller icon circle on mobile */
	.wp-block-columns.eco4life-stats-grid .wp-block-heading.has-4-xl-font-size,
	.wp-block-columns:has(> .wp-block-column div[style*="border-radius:50%"]) .wp-block-heading.has-4-xl-font-size {
		font-size: 1.25rem !important;
	}
	.wp-block-columns.eco4life-stats-grid div[style*="border-radius:50%"],
	.wp-block-columns:has(> .wp-block-column div[style*="border-radius:50%"]) div[style*="border-radius:50%"] {
		width: 44px !important;
		height: 44px !important;
	}
	.wp-block-columns.eco4life-stats-grid div[style*="border-radius:50%"] svg,
	.wp-block-columns:has(> .wp-block-column div[style*="border-radius:50%"]) div[style*="border-radius:50%"] svg {
		width: 20px !important;
		height: 20px !important;
	}
}

/* ----------------------------------------------------------------------------
   Motion: subtle, GPU-friendly transitions. Pure CSS, no JS, no libraries.
   Animates only transform/opacity. Respects prefers-reduced-motion.
   ---------------------------------------------------------------------------- */

/* Buttons: lift + shadow on hover */
.wp-block-button__link,
.wp-block-button .wp-block-button__link {
	transition: transform .2s ease, box-shadow .2s ease, background-color .2s ease, color .2s ease;
	will-change: transform;
}
.wp-block-button__link:hover {
	transform: translateY(-2px);
	box-shadow: 0 8px 20px -8px rgba(0, 0, 0, .25);
}
.wp-block-button__link:active {
	transform: translateY(0);
	transition-duration: .08s;
}

/* Stat icons: gentle pop on hover */
.wp-block-columns:has(> .wp-block-column div[style*="border-radius:50%"]) > .wp-block-column div[style*="border-radius:50%"] {
	transition: transform .25s ease, box-shadow .25s ease;
}
.wp-block-columns:has(> .wp-block-column div[style*="border-radius:50%"]) > .wp-block-column:hover div[style*="border-radius:50%"] {
	transform: translateY(-3px) scale(1.05);
	box-shadow: 0 10px 24px -10px rgba(0, 0, 0, .25);
}

/* Image-card hover lift (cover blocks, image blocks inside columns) */
.wp-block-columns .wp-block-cover,
.wp-block-columns > .wp-block-column > .wp-block-image {
	transition: transform .3s ease, box-shadow .3s ease;
}
.wp-block-columns .wp-block-cover:hover,
.wp-block-columns > .wp-block-column > .wp-block-image:hover {
	transform: translateY(-4px);
	box-shadow: 0 16px 36px -16px rgba(0, 0, 0, .28);
}

/* Inline links: underline grows on hover */
.entry-content a:not(.wp-block-button__link):not(.wp-element-button) {
	background-image: linear-gradient(currentColor, currentColor);
	background-size: 0% 1px;
	background-position: 0 100%;
	background-repeat: no-repeat;
	transition: background-size .25s ease;
}
.entry-content a:not(.wp-block-button__link):not(.wp-element-button):hover {
	background-size: 100% 1px;
}

/* Scroll reveal: targets get .e4l-reveal from JS, then .is-revealed when in view.
   Animates opacity + transform only, so it stays GPU-composited. */
.e4l-reveal {
	opacity: 0;
	transform: translateY(24px);
	transition: opacity .7s cubic-bezier(.2, .7, .2, 1),
	            transform .7s cubic-bezier(.2, .7, .2, 1);
	will-change: opacity, transform;
}
.e4l-reveal.is-revealed {
	opacity: 1;
	transform: none;
}

/* Slight variation: covers and images scale-in instead of slide */
.wp-block-cover.e4l-reveal,
.wp-block-image.e4l-reveal {
	transform: translateY(16px) scale(.985);
}
.wp-block-cover.e4l-reveal.is-revealed,
.wp-block-image.e4l-reveal.is-revealed {
	transform: none;
}

/* If JS bails (reduced motion), make sure nothing stays hidden */
.e4l-no-motion .e4l-reveal {
	opacity: 1 !important;
	transform: none !important;
	transition: none !important;
}

/* Honor user preference: kill all motion if requested */
@media (prefers-reduced-motion: reduce) {
	*,
	*::before,
	*::after {
		animation-duration: .001ms !important;
		animation-iteration-count: 1 !important;
		transition-duration: .001ms !important;
		scroll-behavior: auto !important;
	}
}
