/*
Theme Name:   Global Education
Theme URI:    https://globaleducation.co.mz
Description:  Child theme for Global Education. Shared tokens, typography, buttons and site-wide components. Built by Spectro Web Solutions.
Author:       Spectro Web Solutions
Author URI:   https://spectrowebsolutions.com
Template:     hello-elementor
Version:      1.0.0
Text Domain:  globaleducation
*/

/* ---------- Tokens ---------- */
/* Sampled from the logo and company profile (assets/selected/logo/). */
:root {
	--ge-navy: #282C40;        /* logo globe and cap, text on light */
	--ge-slate: #2B4C5E;       /* large panels, footer */
	--ge-gold: #C39731;        /* accents, key buttons (navy text on it) */
	--ge-gold-dark: #8A6A1F;   /* gold text on white (5:1 contrast) */
	--ge-gold-soft: #F3EAD6;
	--ge-maroon: #7A3935;      /* urgency only: intakes */
	--ge-white: #FFFFFF;
	--ge-paper: #F7F4EE;       /* warm off-white section background */
	--ge-ink: #282C40;
	--ge-muted: #5B5F70;
	--ge-line: #E4DFD4;

	--ge-font-display: "Fraunces", Georgia, "Times New Roman", serif;
	--ge-font-body: "Source Sans 3", "Segoe UI", Roboto, Arial, sans-serif;

	--ge-radius: 4px;
	--ge-max: 1200px;
	--ge-gutter: clamp(16px, 4vw, 40px);
	--ge-section: clamp(56px, 9vw, 120px);
}

/* ---------- Base ---------- */
body {
	font-family: var(--ge-font-body);
	font-size: 1.0625rem;
	line-height: 1.65;
	color: var(--ge-ink);
	background: var(--ge-white);
	-webkit-font-smoothing: antialiased;
}

h1, h2, h3, h4,
.ge-display {
	font-family: var(--ge-font-display);
	font-weight: 600;
	line-height: 1.12;
	color: var(--ge-navy);
	letter-spacing: -0.01em;
	font-variation-settings: "opsz" 72;
}
h1 { font-size: clamp(2.25rem, 5.5vw, 4rem); }
h2 { font-size: clamp(1.75rem, 3.6vw, 2.75rem); }
h3 { font-size: clamp(1.25rem, 2vw, 1.5rem); font-variation-settings: "opsz" 24; }

p { margin: 0 0 1em; }
a { color: var(--ge-slate); text-underline-offset: 3px; }
a:hover { color: var(--ge-navy); }

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

:focus-visible {
	outline: 3px solid var(--ge-gold);
	outline-offset: 3px;
	border-radius: 2px;
}

.ge-skip-link {
	position: absolute; left: -9999px; top: 8px;
	background: var(--ge-navy); color: #fff; padding: 10px 16px; z-index: 10000;
}
.ge-skip-link:focus { left: 8px; color: #fff; }

/* ---------- Layout helpers ---------- */
.ge-wrap {
	max-width: var(--ge-max);
	margin: 0 auto;
	padding-left: var(--ge-gutter);
	padding-right: var(--ge-gutter);
}
.ge-section { padding-top: var(--ge-section); padding-bottom: var(--ge-section); }
.ge-section--paper { background: var(--ge-paper); }
.ge-section--slate { background: var(--ge-slate); color: #fff; }
.ge-section--slate h2,
.ge-section--slate h3 { color: #fff; }

/* Small serif-italic kicker above headings (instead of all-caps eyebrows). */
.ge-kicker {
	display: block;
	font-family: var(--ge-font-display);
	font-style: italic;
	font-size: 1.125rem;
	color: var(--ge-gold-dark);
	margin-bottom: 0.5rem;
}
.ge-section--slate .ge-kicker { color: var(--ge-gold); }

.ge-lead { font-size: clamp(1.125rem, 1.6vw, 1.3rem); color: var(--ge-muted); max-width: 40em; }
.ge-section--slate .ge-lead { color: rgba(255,255,255,.85); }

/* ---------- Buttons ---------- */
.ge-btn {
	display: inline-flex;
	align-items: center;
	gap: 0.6em;
	min-height: 48px;
	padding: 0.8em 1.5em;
	border: 2px solid transparent;
	border-radius: var(--ge-radius);
	font-family: var(--ge-font-body);
	font-size: 1rem;
	font-weight: 700;
	line-height: 1.2;
	text-decoration: none;
	cursor: pointer;
	transition: background-color .2s, color .2s, border-color .2s;
}
.ge-btn svg { width: 1.2em; height: 1.2em; flex: none; }

.ge-btn--gold { background: var(--ge-gold); color: var(--ge-navy); }
.ge-btn--gold:hover { background: #D4A845; color: var(--ge-navy); }

.ge-btn--navy { background: var(--ge-navy); color: #fff; }
.ge-btn--navy:hover { background: var(--ge-slate); color: #fff; }

.ge-btn--ghost { border-color: currentColor; color: var(--ge-navy); background: transparent; }
.ge-btn--ghost:hover { background: var(--ge-navy); color: #fff; border-color: var(--ge-navy); }

.ge-btn--ghost-light { border-color: rgba(255,255,255,.7); color: #fff; background: transparent; }
.ge-btn--ghost-light:hover { background: #fff; color: var(--ge-navy); border-color: #fff; }

/* ---------- Floating WhatsApp (mobile) ---------- */
.ge-wa-float {
	position: fixed;
	right: 16px;
	bottom: 16px;
	z-index: 9990;
	display: none;
	align-items: center;
	justify-content: center;
	width: 56px;
	height: 56px;
	border-radius: 50%;
	background: #25D366;
	color: #fff;
	box-shadow: 0 6px 18px rgba(0,0,0,.22);
}
.ge-wa-float svg { width: 30px; height: 30px; }
.ge-wa-float:hover { color: #fff; background: #1EBE5B; }
@media (max-width: 1024px) {
	.ge-wa-float { display: inline-flex; }
}

@media (prefers-reduced-motion: reduce) {
	*, *::before, *::after { transition: none !important; animation: none !important; scroll-behavior: auto !important; }
}

/* ---------- Upcoming intakes ([ge_intakes_section]) ---------- */
/* Maroon is reserved for this urgency block. */
.ge-intakes { background: var(--ge-maroon); color: #fff; padding: clamp(48px, 7vw, 88px) 0; }
.ge-intakes__inner { display: grid; gap: 32px; align-items: center; }
@media (min-width: 900px) { .ge-intakes__inner { grid-template-columns: 1fr 1.1fr; gap: 64px; } }
.ge-intakes h2 { color: #fff; margin: 0 0 12px; }
.ge-intakes p { color: rgba(255,255,255,.88); max-width: 30em; margin-bottom: 24px; }
.ge-intakes__list { list-style: none; margin: 0; padding: 0; display: grid; gap: 1px; background: rgba(255,255,255,.22); border: 1px solid rgba(255,255,255,.22); }
.ge-intakes__item {
	display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 16px;
	padding: 18px 22px; background: var(--ge-maroon);
}
.ge-intakes__date { font-family: var(--ge-font-display); font-size: 1.5rem; font-weight: 600; color: #fff; }
.ge-intakes__dest { font-weight: 700; color: var(--ge-gold); }
.ge-intakes__note { color: rgba(255,255,255,.8); flex-basis: 100%; }
@media (min-width: 640px) { .ge-intakes__note { flex-basis: auto; margin-left: auto; } }

.ge-btn--light { background: #fff; color: var(--ge-maroon); }
.ge-btn--light:hover { background: var(--ge-gold-soft); color: var(--ge-maroon); }

/* ---------- Site header ---------- */
.ge-header {
	position: sticky; top: 0; z-index: 9980;
	background: rgba(255,255,255,.97);
	border-bottom: 1px solid var(--ge-line);
}
.ge-header__bar {
	display: flex; align-items: center; justify-content: space-between; gap: 24px;
	max-width: var(--ge-max); margin: 0 auto; padding: 10px var(--ge-gutter);
	min-height: 72px;
}
.ge-header__logo img { display: block; width: 150px; height: auto; }
.ge-nav { display: flex; align-items: center; gap: 28px; }
.ge-nav__list { display: flex; align-items: center; gap: 26px; list-style: none; margin: 0; padding: 0; }
.ge-nav__list a {
	color: var(--ge-navy); text-decoration: none; font-weight: 600; font-size: .98rem;
	padding: 8px 0; border-bottom: 2px solid transparent;
}
.ge-nav__list a:hover,
.ge-nav__list a[aria-current="page"] { border-bottom-color: var(--ge-gold); color: var(--ge-navy); }
.ge-nav__sub { position: relative; }
.ge-nav__sub > ul {
	display: none; position: absolute; top: 100%; left: -18px; min-width: 200px;
	list-style: none; margin: 8px 0 0; padding: 10px 0;
	background: #fff; border: 1px solid var(--ge-line); box-shadow: 0 12px 30px rgba(40,44,64,.12);
}
.ge-nav__sub > ul a { display: block; padding: 8px 18px; border: 0; }
.ge-nav__sub > ul a:hover { background: var(--ge-paper); }
.ge-nav__sub:hover > ul,
.ge-nav__sub:focus-within > ul { display: block; }
.ge-lang { display: flex; gap: 2px; font-size: .9rem; font-weight: 700; }
.ge-lang a, .ge-lang span { padding: 4px 6px; text-decoration: none; color: var(--ge-muted); }
.ge-lang [aria-current] { color: var(--ge-navy); border-bottom: 2px solid var(--ge-gold); }
.ge-header .ge-btn { min-height: 44px; padding: .65em 1.15em; font-size: .95rem; }
.ge-menu-toggle {
	display: none; align-items: center; justify-content: center;
	width: 48px; height: 48px; padding: 0; border: 0; background: transparent; color: var(--ge-navy); cursor: pointer;
}
.ge-menu-toggle svg { width: 28px; height: 28px; }

@media (max-width: 1024px) {
	.ge-menu-toggle { display: inline-flex; }
	.ge-header__logo img { width: 128px; }
	.ge-nav {
		display: none; position: absolute; top: 100%; left: 0; right: 0;
		flex-direction: column; align-items: stretch; gap: 0;
		background: #fff; border-bottom: 1px solid var(--ge-line);
		padding: 8px var(--ge-gutter) 24px; max-height: calc(100vh - 72px); overflow-y: auto;
	}
	.ge-header.is-open .ge-nav { display: flex; }
	.ge-nav__list { flex-direction: column; align-items: stretch; gap: 0; }
	.ge-nav__list > li { border-bottom: 1px solid var(--ge-line); }
	.ge-nav__list a { display: block; padding: 14px 0; border: 0; font-size: 1.05rem; }
	.ge-nav__sub > ul { display: block; position: static; box-shadow: none; border: 0; margin: 0; padding: 0 0 8px 16px; }
	.ge-nav__sub > ul a { padding: 10px 0; font-weight: 400; }
	.ge-lang { padding: 16px 0; }
	.ge-nav .ge-btn { justify-content: center; }
}

/* ---------- Site footer ---------- */
.ge-footer { background: var(--ge-slate); color: rgba(255,255,255,.86); font-size: .98rem; }
.ge-footer a { color: #fff; text-decoration: none; }
.ge-footer a:hover { color: var(--ge-gold); }
.ge-footer__grid {
	display: grid; gap: 40px;
	max-width: var(--ge-max); margin: 0 auto; padding: 72px var(--ge-gutter) 48px;
	grid-template-columns: 1fr;
}
@media (min-width: 768px) { .ge-footer__grid { grid-template-columns: 1.4fr 1fr 1fr 1.2fr; } }
.ge-footer__logo { width: 170px; height: auto; margin-bottom: 18px; }
.ge-footer h2 {
	font-family: var(--ge-font-display); font-size: 1.15rem; font-weight: 600;
	color: var(--ge-gold); margin: 0 0 14px;
}
.ge-footer ul { list-style: none; margin: 0; padding: 0; display: grid; gap: 8px; }
.ge-footer address { font-style: normal; line-height: 1.7; }
.ge-footer__bottom {
	border-top: 1px solid rgba(255,255,255,.14);
	max-width: var(--ge-max); margin: 0 auto; padding: 20px var(--ge-gutter) 28px;
	display: flex; flex-wrap: wrap; justify-content: space-between; gap: 12px; font-size: .88rem; color: rgba(255,255,255,.7);
}
.ge-footer__bottom a { color: rgba(255,255,255,.85); }
