/* =====================================================================
   LIBEA Global CSS block (sanctioned code, brief section 6)
   Brand tokens + robustness + brand components + WooCommerce restyle.
   Keep this small. Widget-specific styling lives in widgets.css.
   ===================================================================== */

:root {
	--libea-navy: #04213F;
	--libea-red:  #B01029;
	--libea-gold: #C8891F;
	--libea-white:#FFFFFF;
	--libea-grey: #F4F5F7;
	--libea-body: #2A2E35;
	--libea-red-dark: #8d0d21;
	--libea-navy-90: rgba(4, 33, 63, 0.90);
	--libea-radius: 8px;
	--libea-shadow: 0 10px 30px rgba(4, 33, 63, 0.10);
	--libea-shadow-lg: 0 20px 48px rgba(4, 33, 63, 0.16);
	--libea-serif: "Playfair Display", Georgia, "Times New Roman", serif;
	--libea-sans:  "Inter", system-ui, -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
}

/* --- Robustness --------------------------------------------------------- */
*, *::before, *::after { box-sizing: border-box; }
img { max-width: 100%; height: auto; }
html, body { overflow-x: hidden; max-width: 100%; }
body { font-family: var(--libea-sans); color: var(--libea-body); }

/* Never let a stray wide element create a horizontal scrollbar on phones. */
.elementor-section, .e-con, .elementor-widget-wrap { max-width: 100%; }

/* Phones/tablets: boxed sections whose columns have zero padding were
   running text to the screen edge. Give every boxed section a gutter. */
@media (max-width: 1024px) {
	.elementor-section.elementor-section-boxed > .elementor-container { padding-left: 16px; padding-right: 16px; }
}

/* Header on phones: logo + menu toggle share the first row, and the
   Join / LOGIN / Give buttons sit side by side underneath, instead of five
   stacked rows. Layout-only; the header's content and order stay as built
   in Elementor (LIBEA Header: logo 3a1dcd7, menu 5cbe474, buttons 0215d62). */
@media (max-width: 767px) {
	.elementor-54 .elementor-element-01b3bad > .elementor-container { flex-wrap: wrap; align-items: center; }
	.elementor-54 .elementor-element-3a1dcd7 { width: 62% !important; order: 1; }
	.elementor-54 .elementor-element-5cbe474 { width: 38% !important; order: 2; }
	.elementor-54 .elementor-element-0215d62 { width: 100% !important; order: 3; }
	.elementor-54 .elementor-element-5cbe474 .hfe-nav-menu__toggle { margin-left: auto; margin-right: 0; }
	.elementor-54 .elementor-element-aff6307 > .elementor-container { display: flex; flex-wrap: nowrap; justify-content: center; align-items: center; gap: 10px; }
	.elementor-54 .elementor-element-aff6307 .elementor-column { width: auto !important; }
	.elementor-54 .elementor-element-aff6307 .elementor-widget-wrap { padding: 0 !important; }
	.elementor-54 .elementor-element-aff6307 .elementor-button { padding: 10px 16px; font-size: 14px; }
	.elementor-54 .elementor-element-0137c34 img { max-height: 54px; width: auto; }
}

/* --- Type --------------------------------------------------------------- */
h1, h2, h3, h4, h5, h6 { font-family: var(--libea-serif); color: var(--libea-navy); }
h1 { line-height: 1.08; }
h2 { line-height: 1.12; }
p { line-height: 1.6; }
a { color: var(--libea-red); }
a:hover { color: var(--libea-red-dark); }

/* --- Eyebrow label (no widget setting produces this exactly) ------------ */
.libea-eyebrow {
	display: inline-block;
	font-family: var(--libea-sans);
	font-weight: 600;
	font-size: 13px;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	color: var(--libea-gold);
	margin: 0 0 12px;
}
.libea-eyebrow--red { color: var(--libea-red); }
.libea-eyebrow--gold { color: var(--libea-gold); }

/* --- Buttons (native Elementor + WooCommerce inherit brand) ------------- */
.elementor-button,
.libea-btn,
.woocommerce a.button, .woocommerce button.button,
.woocommerce #respond input#submit, .woocommerce input.button,
.woocommerce input.button.alt, .woocommerce #payment #place_order {
	font-family: var(--libea-sans);
	font-weight: 600;
	border-radius: var(--libea-radius);
	transition: transform .15s ease, box-shadow .15s ease, background-color .15s ease, color .15s ease;
}
.libea-btn {
	display: inline-flex; align-items: center; justify-content: center; gap: .5rem;
	padding: 14px 28px; font-size: 16px; line-height: 1; cursor: pointer;
	text-decoration: none; border: 2px solid transparent; min-height: 48px;
}
.libea-btn--primary { background: var(--libea-red); color: #fff; }
.libea-btn--primary:hover { background: var(--libea-red-dark); color: #fff; transform: translateY(-2px); box-shadow: var(--libea-shadow); }
.libea-btn--secondary { background: transparent; color: var(--libea-navy); border-color: var(--libea-navy); }
.libea-btn--secondary:hover { background: var(--libea-navy); color: #fff; transform: translateY(-2px); }
.libea-btn--gold { background: transparent; color: var(--libea-navy); border-color: var(--libea-gold); }
.libea-btn--gold:hover { background: var(--libea-gold); color: var(--libea-navy); }
.libea-btn--white { background: #fff; color: var(--libea-navy); }
.libea-btn--white:hover { transform: translateY(-2px); box-shadow: var(--libea-shadow); }
.libea-btn--block { width: 100%; }

/* --- Card hover lift ---------------------------------------------------- */
.libea-card, .elementor-widget-uael-info-box .uael-module-content,
.uael-infobox, .libea-hover-lift {
	transition: transform .2s ease, box-shadow .2s ease;
}
.libea-hover-lift:hover, .libea-card:hover { transform: translateY(-4px); box-shadow: var(--libea-shadow-lg); }

/* --- Sticky header shrink (fallback if the sticky plugin cannot target) - */
.libea-sticky-shrink { transition: padding .25s ease, box-shadow .25s ease, background-color .25s ease; }
.libea-sticky-shrink.libea-shrunk { padding-top: 6px !important; padding-bottom: 6px !important; box-shadow: 0 4px 20px rgba(4,33,63,.12); }
.libea-sticky-shrink.libea-shrunk img { max-height: 46px; transition: max-height .25s ease; }

/* --- WooCommerce light restyle to brand --------------------------------- */
.woocommerce-page { color: var(--libea-body); }
.woocommerce .button.alt, .woocommerce #place_order { background: var(--libea-red) !important; color: #fff !important; }
.woocommerce .button.alt:hover, .woocommerce #place_order:hover { background: var(--libea-red-dark) !important; }
.woocommerce-info, .woocommerce-message { border-top-color: var(--libea-gold); }
.woocommerce-message::before, .woocommerce-info::before { color: var(--libea-gold); }
.woocommerce nav.woocommerce-MyAccount-navigation ul li.is-active a { color: var(--libea-red); }
.woocommerce form .form-row input.input-text, .woocommerce form .form-row textarea,
.woocommerce-account .woocommerce form .form-row input { border-radius: 6px; }
.select2-container--default .select2-selection--single { border-radius: 6px; }

/* Utility */
.libea-bg-grey { background: var(--libea-grey); }
.libea-bg-navy { background: var(--libea-navy); color: #fff; }
.libea-bg-navy h1, .libea-bg-navy h2, .libea-bg-navy h3 { color: #fff; }
.libea-container { max-width: 1200px; margin: 0 auto; padding: 0 20px; }

/* =====================================================================
   Contrast + interaction layer (v1.1)
   Elementor's kit sets `.elementor-kit-10 a { color: red }` (specificity
   0,1,1), which beat our single-class button/link rules and produced red
   text on navy and on red buttons. `body a.x` (0,1,2) restores intent.
   Rule of thumb: on navy, text and links are white; hover goes gold.
   ===================================================================== */
:root { --libea-gold-light: #E0A93F; --libea-ease: cubic-bezier(.22, .61, .36, 1); }

body a.libea-btn--primary, body a.libea-btn--primary:hover,
body a.libea-btn--primary:focus { color: #fff; }
body a.libea-btn--secondary { color: var(--libea-navy); }
body a.libea-btn--secondary:hover, body a.libea-btn--secondary:focus { color: #fff; }
body a.libea-btn--gold, body a.libea-btn--gold:hover { color: var(--libea-navy); }
body a.libea-btn--white, body a.libea-btn--white:hover { color: var(--libea-navy); }
body .libea-share a { color: #fff; }

/* Navy surfaces: white text and links, gold on hover. `libea-on-dark` is
   set on navy sections in Elementor (Advanced > CSS Classes). */
body .libea-on-dark a:not(.elementor-button):not(.libea-btn),
body .libea-bg-navy a:not(.libea-btn),
body a.libea-invite__login { color: #fff; transition: color .2s var(--libea-ease); }
body .libea-on-dark a:not(.elementor-button):not(.libea-btn):hover,
body .libea-bg-navy a:not(.libea-btn):hover,
body a.libea-invite__login:hover { color: var(--libea-gold-light); }

/* Newsletter sign-up on navy (footer): heading white, copy soft white. */
.libea-on-dark .libea-newsletter h3 { color: #fff; }
.libea-on-dark .libea-newsletter p { color: #dfe6ef; }

/* Gold CTA on navy surfaces: filled gold, lifts to white on hover. */
body .libea-invite a.libea-btn--gold, body .libea-on-dark a.libea-btn--gold, body .libea-reading-more a.libea-btn--gold { background: var(--libea-gold); border-color: var(--libea-gold); color: var(--libea-navy); }
body .libea-invite a.libea-btn--gold:hover, body .libea-on-dark a.libea-btn--gold:hover, body .libea-reading-more a.libea-btn--gold:hover { background: #fff; border-color: #fff; color: var(--libea-navy); }

/* --- Premium button interactions ------------------------------------ */
/* A gentle lift, a soft navy shadow, a slightly deeper tone, and a faint
   light sweep. Works on every Elementor/LIBEA/WooCommerce button without
   needing per-button hover colors. */
.elementor-button, .libea-btn, .libea-feed__tab, .libea-amount-btn,
.woocommerce a.button, .woocommerce button.button, .woocommerce input.button,
.woocommerce #payment #place_order, .libea-form button[type=submit] {
	position: relative; overflow: hidden; isolation: isolate;
	transition: transform .25s var(--libea-ease), box-shadow .25s var(--libea-ease),
		background-color .25s var(--libea-ease), border-color .25s var(--libea-ease),
		color .25s var(--libea-ease), filter .25s var(--libea-ease);
}
.elementor-button::after, .libea-btn::after, .libea-form button[type=submit]::after {
	content: ""; position: absolute; top: 0; bottom: 0; left: -75%; width: 50%; z-index: 1;
	background: linear-gradient(100deg, transparent, rgba(255, 255, 255, .28), transparent);
	transform: skewX(-20deg); pointer-events: none; transition: left .6s var(--libea-ease);
}
.elementor-button:hover::after, .libea-btn:hover::after, .libea-form button[type=submit]:hover::after { left: 130%; }
.elementor-button .elementor-button-content-wrapper { position: relative; z-index: 2; }

.elementor-button:hover, .libea-btn:hover, .libea-form button[type=submit]:hover,
.woocommerce a.button:hover, .woocommerce button.button:hover, .woocommerce input.button:hover,
.woocommerce #payment #place_order:hover {
	transform: translateY(-2px);
	box-shadow: 0 10px 24px rgba(4, 33, 63, .18);
	filter: brightness(.94) saturate(1.05);
}
.elementor-button:active, .libea-btn:active, .libea-form button[type=submit]:active { transform: translateY(0); box-shadow: 0 4px 10px rgba(4, 33, 63, .14); }
/* Tame Elementor's "Grow" hover animation to the same premium lift. */
.elementor-button.elementor-animation-grow:hover { transform: translateY(-2px) scale(1.03); }
.libea-on-dark .elementor-button:hover { box-shadow: 0 10px 26px rgba(0, 0, 0, .35); }

/* Filter tabs and amount pills: subtle lift + gold edge. */
.libea-feed__tab:hover, .libea-amount-btn:hover { transform: translateY(-1px); border-color: var(--libea-gold); box-shadow: 0 6px 14px rgba(4, 33, 63, .10); }
.libea-feed__tab.is-active:hover { border-color: var(--libea-navy); }

/* Keyboard focus: a clear gold ring everywhere. */
.elementor-button:focus-visible, .libea-btn:focus-visible, .libea-share a:focus-visible,
.libea-feed__tab:focus-visible, a:focus-visible, button:focus-visible {
	outline: 3px solid var(--libea-gold); outline-offset: 3px;
}

/* Header nav links (desktop): a soft gold underline grows in on hover. */
@media (min-width: 1025px) {
	.hfe-nav-menu > li > a.hfe-menu-item { position: relative; }
	.hfe-nav-menu > li > a.hfe-menu-item::before {
		content: ""; position: absolute; left: 50%; right: 50%; bottom: 4px; height: 2px;
		background: var(--libea-gold); transition: left .25s var(--libea-ease), right .25s var(--libea-ease);
	}
	.hfe-nav-menu > li > a.hfe-menu-item:hover::before,
	.hfe-nav-menu > li.current-menu-item > a.hfe-menu-item::before { left: 9px; right: 9px; }
}
/* Mobile/tablet dropdown menu: comfortable padding and tap targets. */
@media (max-width: 1024px) {
	nav.hfe-dropdown { box-shadow: 0 14px 30px rgba(4, 33, 63, .14); }
	nav.hfe-dropdown a.hfe-menu-item, nav.hfe-dropdown a.hfe-sub-menu-item { padding: 14px 22px !important; min-height: 48px; }
	nav.hfe-dropdown .sub-menu a.hfe-sub-menu-item { padding-left: 38px !important; }
}

@media (prefers-reduced-motion: reduce) {
	.elementor-button, .libea-btn, .libea-share a, .libea-card-post, .libea-dues-card { transition: none !important; }
	.elementor-button::after, .libea-btn::after, .libea-form button[type=submit]::after { display: none; }
	.elementor-button:hover, .libea-btn:hover { transform: none !important; }
}

/* --- Recommended reading (Programs) ---------------------------------- */
.libea-reading-quote { margin: 0 auto 34px; max-width: 640px; text-align: center; font-family: var(--libea-serif); font-style: italic; font-size: 21px; line-height: 1.45; color: var(--libea-navy); }
.libea-reading-quote cite { display: block; margin-top: 8px; font-family: var(--libea-sans); font-style: normal; font-size: 13px; letter-spacing: .1em; text-transform: uppercase; color: var(--libea-gold); font-weight: 600; }
.libea-reading { display: grid; grid-template-columns: repeat(2, 1fr); gap: 24px; text-align: left; }
@media (max-width: 760px) { .libea-reading { grid-template-columns: 1fr; } }
.libea-reading__group {
	background: #fff; border: 1px solid #e6e9ef; border-top: 4px solid var(--libea-gold); border-radius: 14px;
	padding: 26px 26px 14px; box-shadow: var(--libea-shadow); transition: transform .25s var(--libea-ease), box-shadow .25s var(--libea-ease);
}
.libea-reading__group:hover { transform: translateY(-3px); box-shadow: var(--libea-shadow-lg); }
.libea-reading__group h3 { font-size: 21px; margin: 0 0 4px; }
.libea-reading__group > p { color: #5b6472; font-size: 15px; margin: 0 0 10px; }
.libea-reading__list { list-style: none; margin: 0; padding: 0; }
.libea-reading__list li { padding: 12px 0; border-top: 1px solid #eef0f4; line-height: 1.45; }
.libea-reading__list li:first-child { border-top: 0; }
.libea-reading__list strong { display: block; font-family: var(--libea-serif); color: var(--libea-navy); font-size: 17px; }
.libea-reading__by { display: block; font-size: 14px; color: #8a5a10; font-weight: 600; margin: 2px 0 3px; }
.libea-reading__note { display: block; font-size: 14.5px; color: #5b6472; }
.libea-reading-more { display: grid; grid-template-columns: repeat(2, 1fr); gap: 24px; margin-top: 24px; text-align: left; }
@media (max-width: 760px) { .libea-reading-more { grid-template-columns: 1fr; } }
.libea-reading-more__item { background: var(--libea-navy); color: #dfe6ef; border-radius: 14px; padding: 26px; }
.libea-reading-more__item h3 { color: #fff; font-size: 20px; margin: 0 0 6px; }
.libea-reading-more__item p { margin: 0 0 18px; font-size: 15px; color: #dfe6ef; }

/* --- Social profile icons ([libea_social]) ---------------------------- */
.libea-social { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 10px; }
.libea-social--light { margin-bottom: 14px; }
.libea-social li { margin: 0; padding: 0; }
body .libea-social a {
	display: inline-flex; align-items: center; justify-content: center; gap: 8px;
	min-width: 42px; height: 42px; border-radius: 999px; text-decoration: none;
	font-weight: 600; font-size: 14px;
	transition: transform .25s var(--libea-ease), background-color .25s var(--libea-ease), color .25s var(--libea-ease), border-color .25s var(--libea-ease), box-shadow .25s var(--libea-ease);
}
.libea-social svg { width: 18px; height: 18px; fill: currentColor; flex: none; }
.libea-social--names a { padding: 0 18px 0 14px; }
body .libea-social--dark a { background: var(--libea-navy); color: #fff; border: 1px solid var(--libea-navy); }
body .libea-social--dark a:hover { background: var(--libea-gold); border-color: var(--libea-gold); color: var(--libea-navy); transform: translateY(-2px); box-shadow: 0 8px 18px rgba(4, 33, 63, .18); }
body .libea-social--light a { background: rgba(255, 255, 255, .06); color: #fff; border: 1px solid rgba(255, 255, 255, .35); }
body .libea-social--light a:hover { background: var(--libea-gold); border-color: var(--libea-gold); color: var(--libea-navy); transform: translateY(-2px); }

/* --- Legal pages (Privacy Policy) --------------------------------------- */
.libea-legal { color: var(--libea-body); font-size: 16.5px; line-height: 1.7; }
.libea-legal h2 { font-size: 26px; margin: 44px 0 12px; padding-top: 8px; scroll-margin-top: 110px; }
.libea-legal h3 { font-size: 19px; margin: 24px 0 8px; }
.libea-legal ul { padding-left: 1.2em; margin: 0 0 16px; }
.libea-legal li { margin-bottom: 8px; }
.libea-legal__meta { font-size: 14px; color: #5b6472; border-bottom: 1px solid #e6e9ef; padding-bottom: 14px; margin-bottom: 22px; }
.libea-legal__toc { background: var(--libea-grey); border-left: 4px solid var(--libea-gold); border-radius: 0 12px 12px 0; padding: 18px 24px; margin: 26px 0 8px; }
.libea-legal__toc p { margin: 0 0 6px; color: var(--libea-navy); }
.libea-legal__toc ol { margin: 0; padding-left: 1.3em; columns: 2; column-gap: 36px; }
@media (max-width: 640px) { .libea-legal__toc ol { columns: 1; } }
.libea-legal__toc li { margin-bottom: 4px; break-inside: avoid; }
body .libea-legal__toc a { color: var(--libea-navy); text-decoration: none; }
body .libea-legal__toc a:hover { color: var(--libea-red); text-decoration: underline; }

/* --- Executive board (About) ------------------------------------------ */
.libea-board { display: grid; grid-template-columns: repeat(4, 1fr); gap: 20px; margin: 8px 0 0; text-align: left; }
@media (max-width: 1024px) { .libea-board { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 520px)  { .libea-board { grid-template-columns: 1fr; } }
.libea-board__member {
	display: flex; align-items: center; gap: 14px; background: #fff; border: 1px solid #e6e9ef;
	border-radius: 14px; padding: 18px; box-shadow: var(--libea-shadow);
	transition: transform .25s var(--libea-ease), box-shadow .25s var(--libea-ease);
}
.libea-board__member:hover { transform: translateY(-3px); box-shadow: var(--libea-shadow-lg); }
.libea-board__member.is-officer { border-top: 4px solid var(--libea-gold); }
.libea-board__avatar {
	flex: none; width: 52px; height: 52px; border-radius: 50%; display: flex; align-items: center; justify-content: center;
	background: var(--libea-navy); color: #fff; font-family: var(--libea-serif); font-weight: 700; font-size: 18px; letter-spacing: .02em;
	overflow: hidden;
}
.libea-board__avatar img { width: 100%; height: 100%; object-fit: cover; }
.libea-board__member.is-officer .libea-board__avatar { background: var(--libea-gold); color: var(--libea-navy); }
.libea-board__name { display: block; font-family: var(--libea-serif); font-weight: 700; color: var(--libea-navy); font-size: 17px; line-height: 1.25; }
.libea-board__role { display: block; font-size: 12.5px; line-height: 1.35; font-weight: 600; letter-spacing: .06em; text-transform: uppercase; color: #8a5a10; margin-top: 4px; }
.libea-board-past { margin: 30px 0 0; padding: 18px 22px; border-left: 4px solid var(--libea-gold); background: #fff; border-radius: 0 12px 12px 0; text-align: left; }
.libea-board-past h3 { font-size: 18px; margin: 0 0 6px; }
.libea-board-past p { margin: 0; color: #5b6472; font-size: 15px; }
