/* ==========================================================================
   Geneva Academy — component & behaviour layer
   (Design tokens live in theme.json; this file adds what blocks can't express)
   ========================================================================== */

:root {
	--ga-header-h: 84px;
	--ga-maxw: 1240px;
	--ga-radius: 6px;
	--ga-ease: cubic-bezier(0.22, 0.61, 0.36, 1);
}

/* ---- Smooth + accessible base ------------------------------------------- */
html { scroll-behavior: smooth; }
*:focus-visible { outline: 2px solid var(--wp--preset--color--primary); outline-offset: 2px; }
img { max-width: 100%; height: auto; }

/* ==========================================================================
   STICKY / TRANSPARENT HEADER
   ========================================================================== */
.wp-site-blocks > header.wp-block-template-part,
header.site-header {
	position: sticky;
	top: 0;
	z-index: 999;
	width: 100%;
	background: var(--wp--preset--color--base);
	border-bottom: 1px solid var(--wp--preset--color--border);
	transition: background-color .35s var(--ga-ease), box-shadow .35s var(--ga-ease), color .35s var(--ga-ease);
}

/* Transparent over hero (front page / profile) until scrolled */
body.has-transparent-header .wp-site-blocks > header.wp-block-template-part {
	position: fixed;
	background: transparent;
	border-bottom-color: transparent;
	color: #fff;
}
body.has-transparent-header .wp-site-blocks > header.wp-block-template-part .wp-block-site-title a,
body.has-transparent-header .wp-site-blocks > header.wp-block-template-part .wp-block-navigation a,
body.has-transparent-header .wp-site-blocks > header.wp-block-template-part .ga-lang-switcher a {
	color: #000;
}
/* Solid state toggled by navigation.js */
.wp-site-blocks > header.wp-block-template-part.is-scrolled,
body.has-transparent-header .wp-site-blocks > header.wp-block-template-part.is-scrolled {
	position: fixed;
	background: var(--wp--preset--color--base);
	border-bottom-color: var(--wp--preset--color--border);
	box-shadow: 0 4px 20px rgba(22, 17, 15, .08);
	color: var(--wp--preset--color--contrast);
}
.wp-site-blocks > header.wp-block-template-part.is-scrolled .wp-block-site-title a,
.wp-site-blocks > header.wp-block-template-part.is-scrolled .wp-block-navigation a,
.wp-site-blocks > header.wp-block-template-part.is-scrolled .ga-lang-switcher a {
	color: var(--wp--preset--color--contrast);
}
/* push content down only when header is fixed over hero */
body.has-transparent-header .wp-site-blocks > main { margin-top: calc(-1 * var(--ga-header-h)); }

/* ==========================================================================
   NAVIGATION + MEGA / DROPDOWN MENUS
   ========================================================================== */
.wp-block-navigation .wp-block-navigation-item__content { padding: .5rem .25rem; font-weight: 500; }

/* underline accent */
.wp-block-navigation > .wp-block-navigation__container > .wp-block-navigation-item > .wp-block-navigation-item__content {
	position: relative;
}
.wp-block-navigation > .wp-block-navigation__container > .wp-block-navigation-item > .wp-block-navigation-item__content::after {
	content: ""; position: absolute; left: .25rem; right: .25rem; bottom: -2px; height: 2px;
	background: var(--wp--preset--color--secondary); transform: scaleX(0); transform-origin: left;
	transition: transform .25s var(--ga-ease);
}
.wp-block-navigation > .wp-block-navigation__container > .wp-block-navigation-item:hover > .wp-block-navigation-item__content::after,
.wp-block-navigation > .wp-block-navigation__container > .wp-block-navigation-item[aria-expanded="true"] > .wp-block-navigation-item__content::after { transform: scaleX(1); }

/* Dropdown submenu panel */
.wp-block-navigation .wp-block-navigation__submenu-container {
	min-width: 240px;
	background: var(--wp--preset--color--base);
	border: 1px solid var(--wp--preset--color--border);
	border-top: 3px solid var(--wp--preset--color--primary);
	border-radius: 0 0 var(--ga-radius) var(--ga-radius);
	box-shadow: 0 18px 40px rgba(22, 17, 15, .14);
	padding: .5rem 0;
}
.wp-block-navigation .wp-block-navigation__submenu-container .wp-block-navigation-item__content { padding: .6rem 1.25rem; }
.wp-block-navigation .wp-block-navigation__submenu-container .wp-block-navigation-item:hover {
	background: var(--wp--preset--color--surface);
}

/* CTA "Enroll Now" button styled via .ga-cta utility */
.ga-cta a, a.ga-cta, .ga-cta .wp-block-button__link {
	background: var(--wp--preset--color--primary) !important;
	color: #fff !important;
	padding: .6rem 1.25rem !important;
	border-radius: var(--ga-radius);
	font-weight: 600; text-transform: uppercase; letter-spacing: .04em; font-size: .82rem;
}
.ga-cta a:hover { background: var(--wp--preset--color--primary-dark) !important; }

/* Language switcher */
.ga-lang-switcher { display: flex; align-items: center; gap: .35rem; font-size: .85rem; font-weight: 600; }
.ga-lang-switcher a { padding: .2rem .35rem; opacity: .7; text-decoration: none; }
.ga-lang-switcher a:hover, .ga-lang-switcher a.is-active { opacity: 1; color: var(--wp--preset--color--primary); }
.ga-lang-switcher .ga-lang-sep { opacity: .35; }

/* ==========================================================================
   COMPONENT CARDS  (program / faculty / news / event)
   ========================================================================== */
.ga-card {
	background: var(--wp--preset--color--base);
	border: 1px solid var(--wp--preset--color--border);
	border-radius: var(--ga-radius);
	overflow: hidden;
	transition: transform .3s var(--ga-ease), box-shadow .3s var(--ga-ease);
	height: 100%;
}
.ga-card:hover { transform: translateY(-4px); box-shadow: 0 16px 40px rgba(22,17,15,.12); }
.ga-card img { width: 100%; object-fit: cover; }

.ga-eyebrow {
	font-family: var(--wp--preset--font-family--body);
	text-transform: uppercase; letter-spacing: .14em; font-size: .72rem; font-weight: 700;
	color: var(--wp--preset--color--primary);
}

/* Event date badge */
.ga-date-badge {
	background: var(--wp--preset--color--neutral);
	color: var(--wp--preset--color--primary);
	border-radius: var(--ga-radius);
	text-align: center; line-height: 1; padding: .6rem .75rem; min-width: 64px;
}
.ga-date-badge .ga-day { font-family: var(--wp--preset--font-family--heading); font-size: 1.6rem; font-weight: 700; display: block; }
.ga-date-badge .ga-mon { text-transform: uppercase; font-size: .7rem; letter-spacing: .1em; }

/* Vision / education card (inverted text on a dark refined background) */
.ga-invert, .ga-invert :where(h1,h2,h3,h4,p,a,li) { color: #fff !important; }
.ga-invert :where(h1,h2,h3,h4) { color: var(--wp--preset--color--secondary) !important; }
.ga-invert:not([class*="background-color"]):not([class*="gradient"]) { background: var(--wp--preset--color--deep); }

/* Gallery masonry */
.ga-gallery .wp-block-image img { border-radius: var(--ga-radius); transition: filter .3s var(--ga-ease), transform .3s var(--ga-ease); }
.ga-gallery .wp-block-image:hover img { filter: brightness(1.05); transform: scale(1.01); }

/* Forms */
.ga-form input, .ga-form textarea, .ga-form select {
	width: 100%; padding: .8rem 1rem; border: 1px solid var(--wp--preset--color--border);
	border-radius: var(--ga-radius); font-family: var(--wp--preset--font-family--body); background: #fff;
}
.ga-form input:focus, .ga-form textarea:focus, .ga-form select:focus {
	border-color: var(--wp--preset--color--primary); outline: none;
}
.ga-form .ga-submit {
	background: var(--wp--preset--color--primary); color: #fff; border: 0;
	padding: .85rem 1.8rem; border-radius: var(--ga-radius);
	font-weight: 600; text-transform: uppercase; letter-spacing: .04em; cursor: pointer;
	transition: background-color .2s var(--ga-ease);
}
.ga-form .ga-submit:hover { background: var(--wp--preset--color--primary-dark); }

/* Accessible visually-hidden helper (block themes don't ship one) */
.screen-reader-text {
	position: absolute !important; width: 1px; height: 1px; padding: 0; margin: -1px;
	overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0;
}

/* ==========================================================================
   COOKIE CONSENT BANNER
   ========================================================================== */
.ga-cookie {
	position: fixed; left: 1rem; right: 1rem; bottom: 1rem; z-index: 100001;
	max-width: 720px; margin: 0 auto;
	background: var(--wp--preset--color--footer); color: var(--wp--preset--color--footer-text);
	border: 1px solid rgba(255,255,255,.12); border-top: 3px solid var(--wp--preset--color--primary);
	border-radius: var(--ga-radius); box-shadow: 0 18px 50px rgba(22,17,15,.35);
	padding: 1.1rem 1.25rem; display: flex; gap: 1rem; align-items: center; flex-wrap: wrap;
	justify-content: space-between;
}
.ga-cookie[hidden] { display: none; }
.ga-cookie__text { margin: 0; font-size: .85rem; line-height: 1.6; flex: 1 1 280px; }
.ga-cookie__text a { color: var(--wp--preset--color--secondary); text-decoration: underline; }
.ga-cookie__actions { display: flex; gap: .6rem; flex-wrap: wrap; }
.ga-cookie__btn {
	background: var(--wp--preset--color--primary); color: #fff; border: 1px solid var(--wp--preset--color--primary);
	padding: .55rem 1.1rem; border-radius: var(--ga-radius); cursor: pointer;
	font-weight: 600; font-size: .8rem; text-transform: uppercase; letter-spacing: .03em;
}
.ga-cookie__btn:hover { background: var(--wp--preset--color--primary-dark); }
.ga-cookie__btn--ghost { background: transparent; color: var(--wp--preset--color--footer-text); border-color: rgba(255,255,255,.3); }
.ga-cookie__btn--ghost:hover { background: rgba(255,255,255,.08); color: #fff; }

/* ==========================================================================
   FOOTER (dark premium)
   ========================================================================== */
.wp-site-blocks > footer.wp-block-template-part .ga-footer,
.ga-footer { background: var(--wp--preset--color--footer); color: var(--wp--preset--color--footer-text); }
.ga-footer :where(h1,h2,h3,h4,strong) { color: #fff; }
.ga-footer a { color: var(--wp--preset--color--footer-text); text-decoration: none; }
.ga-footer a:hover { color: var(--wp--preset--color--secondary); }
.ga-footer .ga-footer-heading {
	text-transform: uppercase; letter-spacing: .12em; font-size: .78rem; font-weight: 700;
	color: var(--wp--preset--color--secondary); font-family: var(--wp--preset--font-family--body);
}
.ga-social a { display: inline-flex; width: 38px; height: 38px; align-items: center; justify-content: center;
	border: 1px solid rgba(255,255,255,.18); border-radius: 50%; }
.ga-social a:hover { background: var(--wp--preset--color--primary); border-color: var(--wp--preset--color--primary); }

/* ==========================================================================
   RESPONSIVE
   ========================================================================== */
@media (max-width: 1024px) {
	:root { --ga-header-h: 72px; }
	.wp-block-columns:not(.is-not-stacked-on-mobile) { gap: 1.5rem; }
	.ga-nav { gap: 1rem !important; }
}

/* The burger overlay is rendered full-screen by the Navigation block; these
   rules guarantee it sits ABOVE the hero/slider and is always clickable. */
.wp-block-navigation__responsive-container.is-menu-open {
	position: fixed !important;
	inset: 0 !important;
	z-index: 100000 !important;
	background: var(--wp--preset--color--footer) !important;
	padding-top: 5rem;
	overflow-y: auto;
	-webkit-overflow-scrolling: touch;
}
.wp-block-navigation__responsive-container-open { z-index: 1000; }

@media (max-width: 781px) {
	body.has-transparent-header .wp-block-navigation__responsive-container-open svg { color: #fff; }

	.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content {
		padding: 1.5rem 2rem 3rem;
	}
	.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item__content {
		color: #fff; padding: .9rem 0; font-size: 1.15rem;
	}
	.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__submenu-container {
		background: transparent; border: 0; box-shadow: none;
		padding-left: 1rem; margin-left: .25rem;
		border-left: 2px solid rgba(237,211,126,.4);
	}
	.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-submenu__toggle {
		color: var(--wp--preset--color--secondary); padding: .25rem;
	}
	.wp-block-navigation__responsive-container.is-menu-open .ga-lang-switcher a,
	.wp-block-navigation__responsive-container.is-menu-open .ga-cta a { color: #fff; }

	.ga-stack-mobile { flex-direction: column !important; }
	.ga-stack-mobile > *,
	.wp-block-columns:not(.is-not-stacked-on-mobile) > .wp-block-column { width: 100% !important; flex-basis: 100% !important; }

	body.has-transparent-header .wp-site-blocks > main { margin-top: 0; }
	body.has-transparent-header .wp-site-blocks > header.wp-block-template-part { position: sticky; background: var(--wp--preset--color--base); color: var(--wp--preset--color--contrast); border-bottom: 1px solid var(--wp--preset--color--border); }
	body.has-transparent-header .wp-site-blocks > header.wp-block-template-part .wp-block-site-title a,
	body.has-transparent-header .wp-site-blocks > header.wp-block-template-part .wp-block-navigation > .wp-block-navigation__container a,
	body.has-transparent-header .wp-site-blocks > header.wp-block-template-part .ga-lang-switcher a { color: var(--wp--preset--color--contrast); }
}

@media (max-width: 600px) {
	.wp-block-columns { gap: 1.25rem; }
	.wp-block-navigation a, .wp-element-button { min-height: 44px; display: inline-flex; align-items: center; }
	.ga-header-actions { gap: .6rem !important; }
	.ga-header-actions .ga-cta a { padding: .5rem .85rem !important; font-size: .72rem; }
	.ga-lang-switcher { font-size: .8rem; }
}

/* No horizontal scroll, ever */
html, body { overflow-x: hidden; max-width: 100%; }
img, video, iframe { max-width: 100%; }