:root {
  --et-navy: #1B2A5C;
  --et-navy-dark: #121d40;
  --et-green: #4E9F2F;
  --et-green-dark: #3d7d24;
  --et-amber: #E8A33D;
  --et-ink: #1c2333;
  --et-bg: #f7f8fb;
  --bs-primary: var(--et-navy);
  --bs-primary-rgb: 27, 42, 92;
  --bs-body-font-family: "Inter", system-ui, sans-serif;
  --bs-border-radius: .6rem;
  --bs-border-radius-lg: .9rem;
  --bs-border-radius-sm: .4rem;
}

html { scroll-behavior: smooth; }

body {
  font-family: "Inter", system-ui, sans-serif;
  color: var(--et-ink);
  background: var(--et-bg);
  line-height: 1.65;
}

::selection { background: var(--et-green); color: #fff; }

h1, h2, h3, h4, .display-heading {
  font-family: "Fraunces", Georgia, serif;
  color: var(--et-navy);
  letter-spacing: -.01em;
}

/* A calmer, more contemporary shadow than Bootstrap's default shadow-sm,
   used throughout via the same utility class so no template markup changes. */
.shadow-sm { box-shadow: 0 .35rem 1rem rgba(27, 42, 92, 0.07) !important; }

/* =========================================================================
   Site header — two-row layout: a plain white utility row with a large
   logo + social links, then a nav row with the menu and a search box.
   The whole header is one sticky unit that stays exactly as-is on scroll
   (no shrink/compact animation).
   ========================================================================= */
.site-header {
  position: sticky;
  top: 0;
  z-index: 1030;
  background: #fff;
  border: 1px solid rgba(27, 42, 92, 0.1);
  box-shadow: 0 .25rem 1rem rgba(27, 42, 92, 0.06);
}

/* Two-column frame: a brand column on the left (logo, divider spans the
   FULL header height via flex stretch) and a stacked column on the right
   holding the follow-us strip above the nav row. */
.header-frame {
  display: flex;
  align-items: stretch;
}
.header-brand-col {
  display: flex;
  align-items: center;
  padding: .75rem 1.75rem .75rem 0;
  border-right: 1px solid rgba(27, 42, 92, 0.1);
}
.header-stack-col {
  flex: 1 1 auto;
  min-width: 0;
  display: flex;
  flex-direction: column;
}

.header-top-row {
  border-bottom: 1px solid rgba(27, 42, 92, 0.08);
  overflow: hidden;
  max-height: 6rem;
  opacity: 1;
  padding: .6rem 1.75rem;
  transition: max-height .3s ease, opacity .25s ease, padding .3s ease, border-color .3s ease;
}
/* On scroll, the top row (phone + social) collapses away, leaving just
   the compact nav row — which then reveals its own logo.png in its place. */
.site-header.header-scrolled .header-top-row {
  max-height: 0;
  opacity: 0;
  padding-top: 0;
  padding-bottom: 0;
  border-bottom-color: transparent;
}
.site-header.header-scrolled .header-brand-col {
  display: none !important;
}

.header-logo-link { display: inline-flex; align-items: center; }
.header-big-logo { height: 68px; width: auto; display: block; }

.header-phone-inline {
  display: inline-flex;
  align-items: center;
  gap: .6rem;
  color: #6b7280;
  font-weight: 500;
  font-size: .82rem;
  text-decoration: none;
}
.header-phone-icon {
  width: 2.3rem;
  height: 2.3rem;
  flex-shrink: 0;
  border-radius: 50%;
  background: rgba(45, 156, 74, 0.12);
  color: var(--et-green);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 1rem;
  transition: background .2s ease, color .2s ease, transform .2s ease;
}
.header-phone-inline:hover { color: var(--et-green); }
.header-phone-inline:hover .header-phone-icon { background: var(--et-green); color: #fff; transform: translateY(-2px); }

.header-donate-btn {
  display: inline-flex;
  align-items: center;
  gap: .45rem;
  background: var(--et-green);
  color: #fff;
  font-size: .82rem;
  font-weight: 600;
  padding: .45rem 1.1rem;
  border-radius: 2rem;
  text-decoration: none;
  white-space: nowrap;
  transition: background .2s ease, transform .2s ease;
}
.header-donate-btn:hover { background: var(--et-green-dark, #1f7a37); color: #fff; transform: translateY(-2px); }

.header-follow-label {
  font-size: .82rem;
  color: #6b7280;
  font-weight: 500;
  white-space: nowrap;
}
.header-social-icon {
  width: 2.1rem;
  height: 2.1rem;
  border-radius: 50%;
  background: #f1f2f6;
  color: #6b7280;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: .95rem;
  transition: background .2s ease, color .2s ease, transform .2s ease;
}
.header-social-icon:hover { background: var(--et-green); color: #fff; transform: translateY(-2px); }

.header-nav-row { padding: .6rem 0; }
.brand-logo-mobile { height: 44px; width: auto; }

/* Always-visible site logo in the nav row on small devices — there's no
   top row / big logo on mobile, so the nav row needs its own mark. */
.header-mobile-logo { display: inline-flex; align-items: center; margin-right: 1rem; }
.header-mobile-logo img { height: 44px; width: auto; }

/* Compact site logo shown in the nav row once scrolled, desktop ("web")
   only — the big logo row is gone by then, so the nav row carries its
   own small mark instead. */
.header-nav-logo {
  align-items: center;
  margin-right: 1.5rem;
  opacity: 0;
  transform: translateY(-4px);
  transition: opacity .25s ease .1s, transform .25s ease .1s;
}
.header-nav-logo img { height: 42px; width: auto; }
@media (min-width: 992px) {
  .header-nav-logo { display: none !important; }
  .site-header.header-scrolled .header-nav-logo {
    display: inline-flex !important;
    opacity: 1;
    transform: translateY(0);
  }
}

.header-search {
  align-items: center;
  gap: 0;
}
.header-search-input {
  border: 1px solid rgba(27, 42, 92, 0.15);
  border-right: none;
  border-radius: 2rem 0 0 2rem;
  padding: .55rem 1.1rem;
  font-size: .88rem;
  width: 180px;
  outline: none;
  transition: width .25s ease, border-color .2s ease;
}
.header-search-input:focus { width: 230px; border-color: var(--et-navy); }
.header-search-btn {
  border: none;
  background: var(--et-navy);
  color: #fff;
  width: 2.6rem;
  height: 2.6rem;
  border-radius: 50%;
  margin-left: -1.3rem;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  transition: background .2s ease;
  position: relative;
  z-index: 1;
}
.header-search-btn:hover { background: var(--et-green); }

.nav-link-donate { color: var(--et-green-dark) !important; font-weight: 700 !important; }

.header-mobile-toggle {
  border: none;
  background: var(--et-bg);
  color: var(--et-navy);
  width: 2.75rem;
  height: 2.75rem;
  border-radius: .75rem;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 1.4rem;
}

/* --- Mobile "app-style" off-canvas menu --- */
.mobile-app-menu { width: min(85vw, 360px); }
.mobile-app-menu .offcanvas-header {
  border-bottom: 1px solid rgba(27, 42, 92, 0.08);
  padding: 1.25rem 1.5rem;
}
.mobile-menu-logo { height: 40px; }
.mobile-app-menu .offcanvas-body { padding: 1.5rem; }

.mobile-search { display: flex; }
.mobile-search .form-control {
  border-radius: 2rem 0 0 2rem;
  border-right: none;
}
.mobile-search button {
  border: none;
  background: var(--et-navy);
  color: #fff;
  width: 3rem;
  border-radius: 0 2rem 2rem 0;
}

.mobile-nav-accordion .accordion-item { border: none; border-bottom: 1px solid rgba(27, 42, 92, 0.08); }
.mobile-nav-accordion .accordion-button {
  padding: .9rem .25rem;
  font-weight: 600;
  color: var(--et-navy);
  background: none;
  box-shadow: none;
  display: flex;
  align-items: center;
  gap: .65rem;
}
.mobile-nav-accordion .accordion-button:not(.collapsed) { color: var(--et-green-dark); background: none; box-shadow: none; }
.mobile-nav-accordion .accordion-button::after { margin-left: auto; }
.mobile-nav-accordion .accordion-body {
  padding: .25rem .25rem 1rem 2rem;
  display: flex;
  flex-direction: column;
  gap: .65rem;
}
.mobile-nav-accordion .accordion-body a {
  color: #4b5563;
  text-decoration: none;
  font-size: .92rem;
  transition: color .2s ease;
}
.mobile-nav-accordion .accordion-body a:hover { color: var(--et-green-dark); }

.mobile-nav-link {
  display: flex;
  align-items: center;
  gap: .65rem;
  padding: .9rem .25rem;
  font-weight: 600;
  color: var(--et-navy);
  text-decoration: none;
  border-bottom: 1px solid rgba(27, 42, 92, 0.08);
  transition: color .2s ease;
}
.mobile-nav-link:hover { color: var(--et-green-dark); }
.mobile-nav-link i, .mobile-nav-accordion .accordion-button i { color: var(--et-green); }

.navbar-nav .nav-link {
  position: relative;
  font-weight: 600;
  color: var(--et-ink);
  padding-left: .75rem;
  padding-right: .75rem;
}
.navbar-nav .nav-link:hover,
.navbar-nav .nav-link:focus { color: var(--et-navy); }

/* Active-page indicator: a small green underline dot/bar beneath the
   current section's nav link (and its dropdown parent, if nested). */
.navbar-nav .nav-link::after {
  content: "";
  position: absolute;
  left: .75rem;
  right: .75rem;
  bottom: .1rem;
  height: 2px;
  background: var(--et-green);
  border-radius: 2px;
  transform: scaleX(0);
  transition: transform .2s ease;
}
.navbar-nav .nav-link:hover::after { transform: scaleX(1); }
.navbar-nav .nav-link.active {
  color: var(--et-navy);
}
.navbar-nav .nav-link.active::after { transform: scaleX(1); }

.dropdown-menu {
  border: none;
  border-radius: .75rem;
  box-shadow: 0 1rem 2rem rgba(27, 42, 92, 0.12);
  padding: .5rem;
}
.dropdown-item { border-radius: .5rem; font-weight: 500; padding: .5rem .75rem; transition: background .15s ease, color .15s ease, padding-left .15s ease; }
.dropdown-item:hover, .dropdown-item:focus { background: rgba(78,159,47,0.1); color: var(--et-navy); }

/* Active dropdown entry — brand green fill instead of Bootstrap's default
   blue, with a small left accent to match the navbar's own active marker. */
.dropdown-item.active,
.dropdown-item:active {
  background: var(--et-green);
  color: #fff;
  padding-left: 1rem;
  position: relative;
}
.dropdown-item.active::before {
  content: "";
  position: absolute;
  left: 0;
  top: 20%;
  bottom: 20%;
  width: 3px;
  background: var(--et-amber);
  border-radius: 2px;
}

@media (min-width: 992px) {
  .navbar-nav .dropdown-menu { display: block; opacity: 0; visibility: hidden; transform: translateY(8px); transition: opacity .15s ease, transform .15s ease; margin-top: .25rem; }
  .navbar-nav .dropdown:hover > .dropdown-menu,
  .navbar-nav .dropdown-menu.show { opacity: 1; visibility: visible; transform: translateY(0); }
}

a { color: var(--et-navy); }

.btn-primary {
  background-color: var(--et-navy);
  border-color: var(--et-navy);
}
.btn-primary:hover {
  background-color: var(--et-navy-dark);
  border-color: var(--et-navy-dark);
}

.btn-outline-primary {
  color: var(--et-navy);
  border-color: var(--et-navy);
}
.btn-outline-primary:hover {
  background-color: var(--et-navy);
  border-color: var(--et-navy);
}

.btn-accent {
  background-color: var(--et-green);
  border-color: var(--et-amber);
  color: var(--et-bg);
  font-weight: 600;
}
.btn-accent:hover { background-color: var(--et-bg); border-color: #d6922e; color: #1c2333; }

.text-brand-green { color: var(--et-green); }
.bg-brand-navy { background-color: var(--et-navy); }
.bg-brand-green { background-color: var(--et-green); }

.card {
  border-radius: 1rem;
  border: 1px solid rgba(27, 42, 92, 0.08);
  transition: transform .25s ease, box-shadow .25s ease, border-color .25s ease;
}
.card:hover {
  transform: translateY(-5px);
  box-shadow: 0 1rem 2rem rgba(27, 42, 92, 0.12);
  border-color: rgba(78, 159, 47, 0.25);
}

/* Hover states for the plain list-group rows used on Careers and Search */
.list-group-item-action {
  transition: background .2s ease, transform .2s ease, border-color .2s ease;
}
.list-group-item-action:hover {
  background: rgba(78, 159, 47, 0.06);
  border-color: rgba(78, 159, 47, 0.25);
  transform: translateX(4px);
}
.list-group-item-action:hover h6 { color: var(--et-green); }

/* Underline-grow hover for plain inline text links inside content bodies */
.content-body a {
  color: var(--et-green);
  text-decoration: underline;
  text-decoration-color: rgba(78, 159, 47, 0.35);
  transition: text-decoration-color .2s ease;
}
.content-body a:hover { text-decoration-color: var(--et-green); }

.pillar-card {
  border-radius: 1.25rem;
  border: 1px solid rgba(27, 42, 92, 0.08);
  transition: transform .25s ease, box-shadow .25s ease;
  position: relative;
  overflow: hidden;
}
.pillar-card:hover {
  transform: translateY(-4px);
  box-shadow: 0 1rem 2rem rgba(27, 42, 92, 0.12);
}
.pillar-card .bi { color: var(--et-green); }

/* Circuit/network texture — reserved for Digital Health & Innovation pillars only,
   echoing the logo's small circuit motif. */
.pillar-card.pillar-circuit {
  background-image:
    radial-gradient(circle at 6px 6px, rgba(27,42,92,0.10) 1.5px, transparent 1.5px),
    linear-gradient(rgba(27,42,92,0.06) 1px, transparent 1px),
    linear-gradient(90deg, rgba(27,42,92,0.06) 1px, transparent 1px);
  background-size: 24px 24px, 24px 24px, 24px 24px;
  background-position: 0 0, 0 0, 0 0;
}

/* ---------------------------------------------------------------------
   Signature section divider: an organic leaf/growth flourish, echoing
   the logo's rising tree — used between major sections instead of a
   plain rule.
   --------------------------------------------------------------------- */
.leaf-divider {
  display: flex;
  align-items: center;
  gap: .5rem;
  margin-bottom: 1rem;
}
.leaf-divider::before,
.leaf-divider::after {
  content: "";
  height: 3px;
  flex: 1 1 40px;
  max-width: 64px;
  background: linear-gradient(90deg, var(--et-green), var(--et-navy));
  border-radius: 2px;
}
.leaf-divider::before { max-width: 24px; }
.leaf-divider .leaf-icon {
  color: var(--et-green);
  font-size: 1.1rem;
}

.section-divider {
  height: 4px;
  width: 64px;
  background: linear-gradient(90deg, var(--et-green), var(--et-navy));
  border-radius: 2px;
}

/* ---------------------------------------------------------------------
   Wave section divider (SVG background, no extra HTTP request) — used to
   separate the hero from the content below with an organic edge instead
   of a hard rectangle.
   --------------------------------------------------------------------- */
.wave-divider {
  display: block;
  width: 100%;
  height: 60px;
  background-color: var(--wave-bg, transparent);
  overflow: hidden;
}
.wave-divider svg { display: block; width: 100%; height: 100%; }
.wave-divider-flip svg { transform: scaleY(-1); }

/* ---------------------------------------------------------------------
   Interior page header — a tinted photo (or flat navy) band with a
   breadcrumb, large serif title and optional subtitle, shown at the top
   of every page except the homepage (which has the hero instead).
   --------------------------------------------------------------------- */
.page-header {
  position: relative;
  background: linear-gradient(120deg, var(--et-navy), var(--et-navy-dark));
  background-size: cover;
  background-position: center;
  padding: 3.25rem 0 3rem;
  overflow: hidden;
}
.page-header-overlay {
  position: absolute;
  inset: 0;
  background: linear-gradient(120deg, rgba(27,42,92,0.9), rgba(24,87,58,0.75));
  mix-blend-mode: multiply;
}
.page-header::before {
  /* subtle bottom shade for legibility when a photo is present */
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(0deg, rgba(10,15,32,0.35), transparent 70%);
}
.page-header-motif {
  position: absolute;
  right: -1.5rem;
  top: 50%;
  transform: translateY(-50%) rotate(-8deg);
  font-size: 9rem;
  color: rgba(255,255,255,0.06);
  pointer-events: none;
}
.page-breadcrumb {
  position: relative;
  z-index: 1;
  font-size: .82rem;
  color: rgba(255,255,255,0.7);
  margin-bottom: .75rem;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: .4rem;
}
.page-breadcrumb a { color: rgba(255,255,255,0.75); text-decoration: none; }
.page-breadcrumb a:hover { color: #fff; text-decoration: underline; }
.page-breadcrumb .sep { color: rgba(255,255,255,0.4); font-size: .7rem; }
.page-breadcrumb .current { color: var(--et-amber); font-weight: 600; }
.page-header-title {
  position: relative;
  z-index: 1;
  color: #fff;
  font-size: clamp(1.65rem, 3.2vw, 2.5rem);
  font-weight: 700;
  margin: 0;
}
.page-header-subtitle {
  position: relative;
  z-index: 1;
  color: rgba(255,255,255,0.82);
  max-width: 42rem;
  margin: .6rem 0 0;
  font-size: 1.02rem;
}

@media (max-width: 767.98px) {
  .page-header { padding: 2.25rem 0 2rem; }
  .page-header-motif { font-size: 6rem; }
}

/* Rounded "pill" stat cards with a soft brand-tinted background */
.stat-pill {
  border-radius: 2rem;
  background: linear-gradient(135deg, rgba(78,159,47,0.08), rgba(27,42,92,0.06));
  border: 1px solid rgba(27, 42, 92, 0.08);
  padding: 1.5rem 1rem;
  text-align: center;
  transition: transform .3s ease, box-shadow .3s ease, background .3s ease, border-color .3s ease;
}
.stat-pill:hover {
  transform: translateY(-6px) scale(1.03);
  box-shadow: 0 1.25rem 2rem rgba(27, 42, 92, 0.18);
  background: linear-gradient(135deg, var(--et-green), var(--et-navy));
  border-color: transparent;
}
.stat-pill:hover .stat-counter,
.stat-pill:hover .text-muted {
  color: #fff !important;
}
.stat-counter {
  font-family: "Fraunces", Georgia, serif;
  font-size: 2.25rem;
  font-weight: 700;
  color: var(--et-navy);
  line-height: 1;
}

/* Rounded-corner photography with a thin brand-color border/mask */
.rounded-mask {
  border-radius: 1rem;
  border: 3px solid var(--et-green);
  padding: 3px;
  background: #fff;
}

/* ---------------------------------------------------------------------
   Hero slider (Swiper) — creative-effect transitions, a slow Ken Burns
   zoom on the active slide's photo, and a custom fraction + progress-bar
   control instead of generic dot pagination.
   --------------------------------------------------------------------- */
.hero-slider { position: relative; overflow: hidden; background: var(--et-navy); }
.hero-slide {
  min-height: 560px;
  display: flex;
  align-items: center;
  position: relative;
  overflow: hidden;
  background: var(--et-navy);
}
.hero-media {
  position: absolute;
  inset: -3%;
  background-size: cover;
  background-position: center;
  transform: scale(1);
  transition: transform 7s cubic-bezier(.25,.46,.45,.94);
  will-change: transform;
  filter: saturate(1.05);
}
.swiper-slide-active .hero-media { transform: scale(1.12); }

/* Brand-color tint: a navy-to-green wash multiplied over the photo so it
   reads as one cohesive, on-brand image rather than a plain dark scrim. */
.hero-overlay {
  position: absolute;
  inset: 0;
  background: linear-gradient(135deg, rgba(27,42,92,0.88), rgba(24,87,58,0.72));
  mix-blend-mode: multiply;
}
.hero-overlay-shade {
  position: absolute;
  inset: 0;
  background: linear-gradient(0deg, rgba(10,15,32,0.65) 0%, rgba(10,15,32,0.15) 45%, transparent 75%);
}
.hero-content { position: relative; z-index: 1; padding: 5rem 0; }
.hero-eyebrow {
  display: inline-block;
  font-weight: 700;
  font-size: .78rem;
  letter-spacing: .08em;
  text-transform: uppercase;
  color: var(--et-bg);
  background: rgba(78,159,47,0.15);
  border: 1px solid rgba(78,159,47,0.4);
  border-radius: 2rem;
  padding: .35rem 1rem;
  margin-bottom: 1rem;
}
.hero-title {
  color: #fff;
  font-size: clamp(1.75rem, 4vw, 3rem);
  font-weight: 700;
  line-height: 1.15;
}
.hero-text {
  color: rgba(255,255,255,0.82);
  font-size: clamp(1rem, 1.4vw, 1.15rem);
  max-width: 42rem;
  margin-top: 1rem;
}

/* Rounded prev/next arrows vertically centered at the hero's mid-height —
   the primary slide controls. */
.hero-side-arrow {
  position: absolute;
  z-index: 3;
  top: 50%;
  transform: translateY(-50%);
  width: 3.25rem;
  height: 3.25rem;
  border-radius: 50%;
  border: 1px solid rgba(255,255,255,0.3);
  background: rgba(18, 29, 64, 0.45);
  backdrop-filter: blur(6px);
  color: #fff;
  font-size: 1.15rem;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  transition: background .2s ease, transform .2s ease, border-color .2s ease;
}
.hero-side-arrow:hover {
  background: var(--et-green);
  border-color: var(--et-green);
  transform: translateY(-50%) scale(1.08);
}
.hero-side-arrow-prev { left: 1.25rem; }
.hero-side-arrow-next { right: 1.25rem; }

/* Bottom-center control: a "01 — 03" fraction counter with a live
   autoplay-progress fill line. */
.hero-controls {
  position: absolute;
  z-index: 2;
  left: 50%;
  bottom: 1.75rem;
  transform: translateX(-50%);
  display: flex;
  align-items: center;
  background: rgba(18, 29, 64, 0.45);
  backdrop-filter: blur(6px);
  border: 1px solid rgba(255,255,255,0.15);
  border-radius: 3rem;
  padding: .5rem 1.1rem;
}
.hero-counter {
  display: flex;
  align-items: center;
  gap: .6rem;
  color: #fff;
  font-family: "Fraunces", Georgia, serif;
  font-weight: 700;
  font-size: .95rem;
  min-width: 8rem;
}
.hero-counter-track {
  position: relative;
  flex: 1 1 auto;
  height: 3px;
  width: 4rem;
  background: rgba(255,255,255,0.25);
  border-radius: 2px;
  overflow: hidden;
}
.hero-counter-track-fill {
  position: absolute;
  inset: 0;
  transform-origin: left center;
  transform: scaleX(0);
  background: var(--et-amber);
  border-radius: 2px;
}
.hero-counter-total { opacity: .6; font-weight: 500; }

@media (max-width: 767.98px) {
  .hero-slide { min-height: 420px; }
  .hero-content { padding: 3rem 0; }
  .hero-side-arrow { width: 2.4rem; height: 2.4rem; font-size: .9rem; }
  .hero-side-arrow-prev { left: .5rem; }
  .hero-side-arrow-next { right: .5rem; }
  .hero-controls { bottom: 1rem; padding: .4rem .8rem; }
  .hero-counter { min-width: 5.5rem; font-size: .8rem; }
  .hero-counter-track { width: 2.5rem; }
}

/* ---------------------------------------------------------------------
   Testimonial slider — quote cards with a hover lift, accent top border
   and a soft rotated quote-mark watermark.
   --------------------------------------------------------------------- */
.testimonial-section { background: linear-gradient(180deg, #fff, var(--et-bg)); }
.testimonial-swiper { padding-bottom: 3rem; }
.testimonial-card {
  position: relative;
  height: 100%;
  background: #fff;
  border-radius: 1.25rem;
  border: 1px solid rgba(27, 42, 92, 0.08);
  border-top: 3px solid transparent;
  padding: 2rem 1.75rem 1.75rem;
  box-shadow: 0 .5rem 1.5rem rgba(27, 42, 92, 0.06);
  transition: transform .25s ease, box-shadow .25s ease, border-color .25s ease;
  overflow: hidden;
}
.testimonial-card:hover {
  transform: translateY(-6px);
  box-shadow: 0 1.5rem 2.5rem rgba(27, 42, 92, 0.16);
  border-top-color: var(--et-green);
}
.testimonial-quote-icon {
  position: absolute;
  top: -.5rem;
  right: 1rem;
  font-size: 4rem;
  color: rgba(78,159,47,0.1);
  transform: rotate(180deg);
}
.testimonial-quote {
  position: relative;
  color: var(--et-ink);
  font-style: italic;
  min-height: 6rem;
}
.testimonial-person { display: flex; align-items: center; gap: .85rem; margin-top: 1.25rem; }
.testimonial-photo {
  width: 3rem;
  height: 3rem;
  border-radius: 50%;
  object-fit: cover;
  border: 2px solid var(--et-green);
}
.testimonial-photo-fallback {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: rgba(27,42,92,0.08);
  color: var(--et-navy);
  font-size: 1.25rem;
}
.testimonial-pagination.swiper-pagination { bottom: 0 !important; }
.testimonial-pagination .swiper-pagination-bullet { background: var(--et-navy); opacity: .25; }
.testimonial-pagination .swiper-pagination-bullet-active { opacity: 1; background: var(--et-green); }

/* ---------------------------------------------------------------------
   "About" section (homepage + About page) — asymmetric image/text layout
   with a floating stat badge and leaf motif, distinct from the plain
   image-left/text-right pattern used elsewhere on the page.
   --------------------------------------------------------------------- */
.about-section-tinted {
  position: relative;
  background:
    radial-gradient(circle at 85% 15%, rgba(78,159,47,0.07), transparent 55%),
    radial-gradient(circle at 10% 90%, rgba(27,42,92,0.06), transparent 55%),
    var(--et-bg);
}
.about-image-wrap {
  position: relative;
  padding: 1.25rem 0 1.5rem 1.5rem;
}
.about-image {
  width: 100%;
  height: auto;
  border-radius: 1.5rem;
  box-shadow: 0 1.5rem 3rem rgba(27, 42, 92, 0.18);
  position: relative;
  z-index: 1;
}

/* Gentle continuous float/bounce — used on About-page imagery to feel alive
   without being distracting; respects reduced-motion preferences. */
@keyframes gentle-bounce {
  0%, 100% { transform: translateY(0); }
  50% { transform: translateY(-16px); }
}
.about-image-bounce { animation: gentle-bounce 3.6s ease-in-out infinite; }
@media (prefers-reduced-motion: reduce) {
  .about-image-bounce { animation: none; }
}
.about-leaf-motif {
  position: absolute;
  top: -1.5rem;
  left: -1rem;
  font-size: 5rem;
  color: rgba(78,159,47,0.15);
  z-index: 0;
  transform: rotate(-12deg);
}
.about-badge-float {
  position: absolute;
  right: 0;
  bottom: 0;
  z-index: 2;
  background: #fff;
  border-radius: 1.25rem;
  box-shadow: 0 1rem 2rem rgba(27, 42, 92, 0.18);
  padding: 1rem 1.5rem;
  text-align: center;
  border: 1px solid rgba(27,42,92,0.06);
}
.lead-sm { font-size: 1.05rem; }
.about-tag {
  display: inline-block;
  font-size: .78rem;
  font-weight: 600;
  color: var(--et-navy);
  background: rgba(27,42,92,0.06);
  border-radius: 2rem;
  padding: .3rem .85rem;
}

@media (max-width: 767.98px) {
  .about-image-wrap { padding: 1rem 1rem 1rem 0; }
  .about-badge-float { padding: .75rem 1rem; }
  .about-leaf-motif { font-size: 3.5rem; }
}

/* Partner/logo Swiper strip */
.partner-swiper .swiper-slide {
  display: flex;
  align-items: center;
  justify-content: center;
}

/* Equal-size logo cards, so every partner gets the same footprint
   regardless of its source logo's aspect ratio. */
.partner-card {
  width: 100%;
  height: 110px;
  display: flex;
  align-items: center;
  justify-content: center;
  background: #fff;
  border: 1px solid rgba(27, 42, 92, 0.08);
  border-radius: 1rem;
  padding: 1.25rem;
  box-shadow: 0 .35rem 1rem rgba(27, 42, 92, 0.06);
  transition: transform .25s ease, box-shadow .25s ease, border-color .25s ease;
}
.partner-card:hover {
  transform: translateY(-4px);
  box-shadow: 0 1rem 2rem rgba(27, 42, 92, 0.14);
  border-color: rgba(78, 159, 47, 0.3);
}
.partner-card img {
  max-height: 56px;
  max-width: 100%;
  object-fit: contain;
  filter: grayscale(40%);
  opacity: .85;
  transition: opacity .2s ease, filter .2s ease, transform .2s ease;
}
.partner-card:hover img {
  filter: grayscale(0);
  opacity: 1;
  animation: logo-bounce-hover .6s ease;
}

@keyframes logo-bounce-hover {
  0%, 100% { transform: translateY(0) scale(1); }
  30% { transform: translateY(-10px) scale(1.06); }
  55% { transform: translateY(2px) scale(0.98); }
  75% { transform: translateY(-4px) scale(1.02); }
}

/* Custom AOS entrance: a bounce-in reveal for the partner cards, used via
   data-aos="bounce-in" (AOS just toggles .aos-animate at the right scroll
   position; the actual motion is this keyframe animation). */
[data-aos="bounce-in"] {
  opacity: 0;
  transform: translateY(50px) scale(0.85);
}
[data-aos="bounce-in"].aos-animate {
  animation: logo-bounce-in .8s cubic-bezier(.34,1.56,.64,1) forwards;
}
@keyframes logo-bounce-in {
  0% { opacity: 0; transform: translateY(50px) scale(0.85); }
  60% { opacity: 1; transform: translateY(-12px) scale(1.03); }
  80% { transform: translateY(4px) scale(0.99); }
  100% { opacity: 1; transform: translateY(0) scale(1); }
}
@media (prefers-reduced-motion: reduce) {
  .partner-card:hover img { animation: none; }
  [data-aos="bounce-in"].aos-animate { animation: none; opacity: 1; transform: none; }
}

footer.site-footer {
  position: relative;
  background: linear-gradient(180deg, var(--et-navy), var(--et-navy-dark));
  color: #e7eaf3;
}
footer.site-footer a { color: #cfd6ea; text-decoration: none; }
footer.site-footer a:hover { color: #fff; }

/* Brand flourish at the very top edge of the footer, echoing the leaf
   divider used throughout the site. */
.footer-accent-bar {
  height: 4px;
  width: 100%;
  background: linear-gradient(90deg, var(--et-green), var(--et-navy) 50%, var(--et-amber));
}

.footer-logo { height: 44px; filter: brightness(0) invert(1); }

/* Column headings get a small brand-green accent underline, echoing the
   leaf-divider language used across the rest of the site. */
.footer-heading {
  color: #fff;
  position: relative;
  padding-bottom: .6rem;
  margin-bottom: 1rem;
}
.footer-heading::after {
  content: "";
  position: absolute;
  left: 0;
  bottom: 0;
  width: 2rem;
  height: 3px;
  border-radius: 2px;
  background: linear-gradient(90deg, var(--et-green), var(--et-amber));
}

.footer-contact-list li {
  display: flex;
  align-items: flex-start;
  gap: .6rem;
  margin-bottom: .65rem;
}
.footer-contact-icon {
  flex: none;
  width: 1.75rem;
  height: 1.75rem;
  border-radius: 50%;
  background: rgba(255,255,255,0.08);
  color: var(--et-green);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: .8rem;
}

/* Newsletter panel — a visually distinct card at the top of the footer
   rather than a bare inline form. */
.footer-newsletter-card {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 1.25rem;
  background: rgba(255,255,255,0.06);
  border: 1px solid rgba(255,255,255,0.12);
  border-radius: 1.25rem;
  padding: 1.75rem 2rem;
  margin-bottom: 2.5rem;
}
.footer-newsletter-form { flex: 0 1 380px; width: 100%; max-width: 420px; }
.footer-newsletter-form .input-group-text {
  background: rgba(255,255,255,0.08);
  border: 1px solid rgba(255,255,255,0.2);
  color: #cfd6ea;
}
.footer-newsletter-form .form-control {
  background: rgba(255,255,255,0.06);
  border: 1px solid rgba(255,255,255,0.2);
  color: #fff;
}
.footer-newsletter-form .form-control::placeholder { color: #aab3cc; }
.footer-newsletter-form .form-control:focus {
  background: rgba(255,255,255,0.1);
  border-color: var(--et-green);
  color: #fff;
  box-shadow: 0 0 0 .2rem rgba(78,159,47,0.25);
}

@media (max-width: 767.98px) {
  .footer-newsletter-card {
    flex-direction: column;
    align-items: flex-start;
    text-align: left;
    height: auto;
    min-height: 0;
    max-height: none;
    flex: 0 0 auto;
    padding: 1.25rem 1.25rem;
    gap: .85rem;
    margin-bottom: 1.75rem;
  }
  .footer-newsletter-form { max-width: 100%; flex-basis: auto; }
  .footer-newsletter-card h5 { font-size: 1.05rem; }
  .footer-newsletter-card p { font-size: .82rem; }
}

.footer-social-icon {
  width: 2.35rem;
  height: 2.35rem;
  border-radius: 50%;
  background: rgba(255,255,255,0.08);
  border: 1px solid rgba(255,255,255,0.15);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 1rem;
  transition: background .2s ease, transform .2s ease, border-color .2s ease;
}
.footer-social-icon:hover {
  background: var(--et-green);
  border-color: var(--et-green);
  color: #fff;
  transform: translateY(-3px);
}

.footer-link-list li { margin-bottom: .4rem; }
.footer-link-list a { position: relative; }
.footer-link-list a::after {
  content: "";
  position: absolute;
  left: 0;
  bottom: -2px;
  width: 0;
  height: 1px;
  background: var(--et-green);
  transition: width .2s ease;
}
.footer-link-list a:hover::after { width: 100%; }

.value-badge {
  border: 1px solid rgba(255,255,255,0.25);
  border-radius: 2rem;
  padding: .4rem 1rem;
  display: inline-flex;
  align-items: center;
  gap: .4rem;
  transition: background .2s ease, border-color .2s ease;
}
.value-badge:hover {
  background: rgba(78,159,47,0.18);
  border-color: var(--et-green);
}

.footer-bottom-bar {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: .5rem;
  padding-top: 1rem;
  border-top: 1px solid rgba(255,255,255,0.08);
}
.footer-credit-link {
  color: var(--et-amber) !important;
  font-weight: 600;
  transition: color .2s ease;
}
.footer-credit-link:hover { color: #fff !important; text-decoration: underline; }

@media (max-width: 575.98px) {
  .footer-bottom-bar { justify-content: center; text-align: center; }
}

.content-body img { max-width: 100%; height: auto; border-radius: .75rem; }

/* ---------------------------------------------------------------------
   About page: Vision/Mission cards + numbered Objectives — distinct from
   the pillar-card grid used elsewhere so this page reads as its own
   "manifesto" section.
   --------------------------------------------------------------------- */
.vm-card {
  border-radius: 1.25rem;
  border: 1px solid var(--et-border, rgba(27,42,92,0.08));
  background: #fff;
  padding: 2.25rem;
  box-shadow: 0 .5rem 1.5rem rgba(27,42,92,0.06);
  transition: transform .3s ease, box-shadow .3s ease, background .3s ease, border-color .3s ease;
}
.vm-card:hover {
  transform: scale(1.035);
  box-shadow: 0 1.75rem 3rem rgba(27,42,92,0.16);
  background: linear-gradient(150deg, #eef6ea, #ffffff);
  border-color: rgba(78,159,47,0.3);
}
.vm-card.vm-card-accent {
  background: linear-gradient(150deg, var(--et-navy), var(--et-navy-dark));
  color: #fff;
  border: none;
}
.vm-card.vm-card-accent:hover {
  background: linear-gradient(150deg, var(--et-green), var(--et-green-dark));
  border-color: transparent;
}
.vm-card.vm-card-accent h3 { color: #fff; }
.vm-card.vm-card-accent p { color: rgba(255,255,255,0.82) !important; }
.vm-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 3.25rem;
  height: 3.25rem;
  border-radius: 50%;
  background: rgba(78,159,47,0.12);
  color: var(--et-green);
  font-size: 1.5rem;
  margin-bottom: 1rem;
  transition: transform .3s ease;
}
.vm-card:hover .vm-icon { transform: scale(1.1) rotate(-6deg); }
.vm-card-accent .vm-icon { background: rgba(255,255,255,0.15); color: var(--et-amber); }

.objective-card {
  display: flex;
  align-items: flex-start;
  gap: 1.25rem;
  height: 100%;
  padding: 1.5rem;
  border-radius: 1rem;
  border: 1px solid rgba(27,42,92,0.08);
  background: var(--et-bg);
  transition: transform .2s ease, box-shadow .2s ease;
}
.objective-card:hover {
  transform: translateY(-3px);
  box-shadow: 0 1rem 2rem rgba(27,42,92,0.1);
  background: #fff;
}
.objective-number {
  flex: none;
  font-family: "Fraunces", Georgia, serif;
  font-weight: 700;
  font-size: 1.5rem;
  color: var(--et-green);
  min-width: 2.5rem;
}

/* ---------------------------------------------------------------------
   Homepage closing call-to-action — gradient card with a watermark motif,
   continuously bouncing headline words, and zoom-in AOS entrance.
   --------------------------------------------------------------------- */
.cta-card {
  position: relative;
  overflow: hidden;
  background: linear-gradient(135deg, var(--et-navy), var(--et-green-dark));
  border-radius: 1.5rem;
  padding: 3.5rem 2rem;
  box-shadow: 0 1.5rem 3rem rgba(27, 42, 92, 0.25);
}
.cta-motif {
  position: absolute;
  top: -2.5rem;
  right: -2rem;
  font-size: 14rem;
  color: rgba(255, 255, 255, 0.06);
  transform: rotate(15deg);
  pointer-events: none;
}
.cta-title {
  position: relative;
  color: #fff;
  font-size: clamp(1.75rem, 4vw, 2.75rem);
  margin-bottom: 1rem;
}
.bounce-word {
  display: inline-block;
  animation: word-bounce 2.4s ease-in-out infinite;
  animation-delay: var(--bounce-delay, 0s);
}
@keyframes word-bounce {
  0%, 100% { transform: translateY(0); }
  20% { transform: translateY(-10px); }
  40% { transform: translateY(0); }
}
.cta-text {
  position: relative;
  color: rgba(255, 255, 255, 0.85);
  max-width: 36rem;
  margin: 0 auto;
  font-size: 1.05rem;
}

.btn-cta {
  background: var(--et-amber);
  border: 2px solid var(--et-amber);
  color: #1c2333;
  font-weight: 700;
  border-radius: 3rem;
  padding: .85rem 2rem;
  transition: transform .25s ease, box-shadow .25s ease, background .25s ease;
}
.btn-cta:hover {
  transform: scale(1.06) translateY(-2px);
  box-shadow: 0 1rem 2rem rgba(0, 0, 0, 0.25);
  background: #d6922e;
  border-color: #d6922e;
  color: #1c2333;
}
.btn-cta i { transition: transform .25s ease; }
.btn-cta:hover i { transform: translateX(4px); }

.btn-cta-outline {
  background: transparent;
  border: 2px solid rgba(255, 255, 255, 0.6);
  color: #fff;
  font-weight: 700;
  border-radius: 3rem;
  padding: .85rem 2rem;
  transition: transform .25s ease, background .25s ease, border-color .25s ease;
}
.btn-cta-outline:hover {
  transform: scale(1.06) translateY(-2px);
  background: rgba(255, 255, 255, 0.15);
  border-color: #fff;
  color: #fff;
}

@media (prefers-reduced-motion: reduce) {
  .bounce-word { animation: none; }
}

/* ---------------------------------------------------------------------
   Our Approach page — the "Generate Evidence → ... → Create Sustainable
   Impact" flow chain, and the "Our Commitment" value cards.
   --------------------------------------------------------------------- */
.approach-flow {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: center;
  gap: .75rem 1rem;
  margin: 2.5rem 0;
}
.approach-flow-step {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: .6rem;
  width: 9.5rem;
  padding: 1.25rem 1rem;
  border-radius: 1.25rem;
  background: #fff;
  border: 1px solid rgba(27, 42, 92, 0.08);
  box-shadow: 0 .35rem 1rem rgba(27, 42, 92, 0.06);
  text-align: center;
  transition: transform .25s ease, box-shadow .25s ease, background .25s ease;
}
.approach-flow-step:hover {
  transform: translateY(-6px) scale(1.04);
  box-shadow: 0 1.25rem 2rem rgba(27, 42, 92, 0.16);
  background: linear-gradient(150deg, var(--et-navy), var(--et-green-dark));
}
.approach-flow-step:hover .approach-flow-label { color: #fff; }
.approach-flow-step:hover .approach-flow-icon {
  background: rgba(255,255,255,0.15);
  color: #fff;
  transform: scale(1.1);
}
.approach-flow-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 2.75rem;
  height: 2.75rem;
  border-radius: 50%;
  background: rgba(78,159,47,0.12);
  color: var(--et-green);
  font-size: 1.2rem;
  transition: background .25s ease, color .25s ease, transform .25s ease;
}
.approach-flow-label {
  font-weight: 600;
  font-size: .85rem;
  color: var(--et-navy);
  transition: color .25s ease;
}
.approach-flow-arrow {
  color: var(--et-green);
  font-size: 1.4rem;
  flex: none;
}
@media (max-width: 767.98px) {
  .approach-flow-arrow { transform: rotate(90deg); }
  .approach-flow-step { width: 100%; max-width: 260px; }
}

.commitment-card {
  padding: 2rem 1.75rem;
  border-radius: 1.25rem;
  background: #fff;
  border: 1px solid rgba(27, 42, 92, 0.08);
  box-shadow: 0 .35rem 1rem rgba(27, 42, 92, 0.06);
  text-align: center;
  transition: transform .3s ease, box-shadow .3s ease, background .3s ease, border-color .3s ease;
}
.commitment-card:hover {
  transform: translateY(-6px) scale(1.02);
  box-shadow: 0 1.5rem 2.5rem rgba(27, 42, 92, 0.16);
  background: linear-gradient(150deg, #eef6ea, #ffffff);
  border-color: rgba(78, 159, 47, 0.3);
}
.commitment-card .vm-icon { margin: 0 auto 1rem; }
.commitment-card:hover .vm-icon { transform: scale(1.1) rotate(-6deg); }

/* About page "Our Focus Areas" cards */
.focus-area-card {
  padding: 1.75rem 1.5rem;
  border-radius: 1.25rem;
  background: #fff;
  border: 1px solid rgba(27, 42, 92, 0.08);
  box-shadow: 0 .35rem 1rem rgba(27, 42, 92, 0.06);
  text-align: center;
  transition: transform .3s ease, box-shadow .3s ease, background .3s ease, border-color .3s ease;
}
.focus-area-card:hover {
  transform: translateY(-6px) scale(1.02);
  box-shadow: 0 1.25rem 2.25rem rgba(27, 42, 92, 0.14);
  background: linear-gradient(150deg, #eef6ea, #ffffff);
  border-color: rgba(78, 159, 47, 0.3);
}
.focus-area-card .vm-icon { margin: 0 auto 1rem; }
.focus-area-card:hover .vm-icon { transform: scale(1.1) rotate(-6deg); }

/* ---------------------------------------------------------------------
   Contact page — form card, icon-bubble info rows, and the map card.
   --------------------------------------------------------------------- */
.contact-card {
  padding: 2rem;
  border-radius: 1.25rem;
  background: #fff;
  border: 1px solid rgba(27, 42, 92, 0.08);
  box-shadow: 0 .5rem 1.5rem rgba(27, 42, 92, 0.06);
  transition: transform .3s ease, box-shadow .3s ease;
}
.contact-card:hover {
  transform: translateY(-4px);
  box-shadow: 0 1.5rem 2.5rem rgba(27, 42, 92, 0.12);
}

.contact-info-card {
  display: flex;
  align-items: flex-start;
  gap: 1rem;
  padding: 1.25rem 1.5rem;
  border-radius: 1.25rem;
  background: #fff;
  border: 1px solid rgba(27, 42, 92, 0.08);
  box-shadow: 0 .35rem 1rem rgba(27, 42, 92, 0.06);
  transition: transform .25s ease, box-shadow .25s ease, background .25s ease, border-color .25s ease;
}
.contact-info-card:hover {
  transform: translateX(6px);
  box-shadow: 0 1rem 2rem rgba(27, 42, 92, 0.12);
  background: linear-gradient(150deg, #eef6ea, #ffffff);
  border-color: rgba(78, 159, 47, 0.3);
}
.contact-info-icon {
  flex: none;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 2.75rem;
  height: 2.75rem;
  border-radius: 50%;
  background: rgba(78,159,47,0.12);
  color: var(--et-green);
  font-size: 1.15rem;
  transition: transform .25s ease, background .25s ease, color .25s ease;
}
.contact-info-card:hover .contact-info-icon {
  transform: scale(1.1) rotate(-6deg);
  background: var(--et-green);
  color: #fff;
}

.contact-map-card {
  border-radius: 1.25rem;
  overflow: hidden;
  border: 1px solid rgba(27, 42, 92, 0.08);
  box-shadow: 0 .35rem 1rem rgba(27, 42, 92, 0.06);
  transition: box-shadow .3s ease;
  min-height: 180px;
}
.contact-map-card:hover { box-shadow: 0 1.25rem 2.25rem rgba(27, 42, 92, 0.14); }

/* ---------------------------------------------------------------------
   Careers — job listing cards and the job detail page's content/overview
   cards + application form.
   --------------------------------------------------------------------- */
.job-card {
  display: block;
  height: 100%;
  padding: 1.75rem;
  border-radius: 1.25rem;
  background: #fff;
  border: 1px solid rgba(27, 42, 92, 0.08);
  box-shadow: 0 .35rem 1rem rgba(27, 42, 92, 0.06);
  text-decoration: none;
  color: inherit;
  transition: transform .25s ease, box-shadow .25s ease, border-color .25s ease;
}
.job-card:hover {
  transform: translateY(-6px);
  box-shadow: 0 1.25rem 2.25rem rgba(27, 42, 92, 0.14);
  border-color: rgba(78, 159, 47, 0.3);
  color: inherit;
}
.job-card-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 2.75rem;
  height: 2.75rem;
  border-radius: 50%;
  background: rgba(78,159,47,0.12);
  color: var(--et-green);
  font-size: 1.15rem;
  transition: background .25s ease, color .25s ease, transform .25s ease;
}
.job-card:hover .job-card-icon {
  background: var(--et-green);
  color: #fff;
  transform: scale(1.08) rotate(-6deg);
}
.job-card-type {
  background: rgba(27,42,92,0.08);
  color: var(--et-navy);
  font-weight: 600;
  font-size: .72rem;
  text-transform: uppercase;
  letter-spacing: .03em;
}
.job-card-title { color: var(--et-navy); margin-bottom: .5rem; transition: color .2s ease; }
.job-card:hover .job-card-title { color: var(--et-green-dark); }
.job-card-footer {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding-top: 1rem;
  border-top: 1px solid rgba(27, 42, 92, 0.08);
}
.job-card-arrow {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 2rem;
  height: 2rem;
  border-radius: 50%;
  background: rgba(78,159,47,0.12);
  color: var(--et-green);
  transition: transform .25s ease, background .25s ease, color .25s ease;
}
.job-card:hover .job-card-arrow {
  background: var(--et-green);
  color: #fff;
  transform: translateX(4px);
}

/* Generic reusable content/sidebar cards — introduced for the careers detail
   page but shared by any detail page with a "main content + sticky
   overview sidebar" layout (research, etc). */
.job-content-card, .content-card {
  padding: 2rem;
  border-radius: 1.25rem;
  background: #fff;
  border: 1px solid rgba(27, 42, 92, 0.08);
  box-shadow: 0 .5rem 1.5rem rgba(27, 42, 92, 0.06);
}

.job-overview-card, .sidebar-card {
  position: sticky;
  top: 9rem;
  padding: 1.75rem;
  border-radius: 1.25rem;
  background: #fff;
  border: 1px solid rgba(27, 42, 92, 0.08);
  box-shadow: 0 .5rem 1.5rem rgba(27, 42, 92, 0.06);
}
.job-overview-list li, .sidebar-list li {
  display: flex;
  align-items: center;
  gap: .85rem;
  margin-bottom: 1rem;
}
.job-overview-list li:last-child, .sidebar-list li:last-child { margin-bottom: 0; }

.sidebar-cover {
  width: 100%;
  border-radius: 1rem;
  margin-bottom: 1.25rem;
  border: 3px solid var(--et-green);
  padding: 3px;
  background: #fff;
  transition: transform .3s ease, box-shadow .3s ease;
}
.sidebar-cover:hover { transform: scale(1.02); box-shadow: 0 1rem 2rem rgba(27,42,92,0.14); }

@media (max-width: 991.98px) {
  .job-overview-card, .sidebar-card { position: static; margin-top: 1.5rem; }
}

/* =========================================================================
   Projects & Gallery module — shared design tokens.
   One card radius (1.25rem), one shadow recipe, one hover-lift, one pill
   button — reused by the homepage teaser, listing page, detail page and
   both gallery surfaces so they read as one connected module.
   ========================================================================= */

/* --- Pill button: dark navy, amber on hover — this module's one CTA style --- */
.btn-pill {
  display: inline-flex;
  align-items: center;
  gap: .5rem;
  background: var(--et-navy);
  color: #fff;
  font-weight: 600;
  font-size: .85rem;
  padding: .65rem 1.5rem;
  border-radius: 3rem;
  border: none;
  text-decoration: none;
  transition: background .25s ease, transform .25s ease, color .25s ease;
}
.btn-pill:hover { background: var(--et-amber); color: var(--et-navy); transform: translateX(2px); }
.btn-pill i { transition: transform .25s ease; }
.btn-pill:hover i { transform: translateX(3px); }
.btn-pill-outline {
  display: inline-flex;
  align-items: center;
  gap: .5rem;
  background: transparent;
  color: var(--et-navy);
  font-weight: 600;
  font-size: .85rem;
  padding: .6rem 1.4rem;
  border-radius: 3rem;
  border: 2px solid var(--et-navy);
  text-decoration: none;
  transition: background .25s ease, color .25s ease;
}
.btn-pill-outline:hover { background: var(--et-navy); color: #fff; }

/* --- Overlay-hover card: homepage teaser, related-projects strip, gallery hover --- */
.overlay-card {
  position: relative;
  display: block;
  border-radius: 1.25rem;
  overflow: hidden;
  aspect-ratio: 4 / 3;
  color: #fff;
  text-decoration: none;
  box-shadow: 0 .5rem 1.5rem rgba(27, 42, 92, 0.1);
}
.overlay-card-img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform .5s ease;
}
.overlay-card:hover .overlay-card-img { transform: scale(1.08); }
.overlay-card-tag {
  position: absolute;
  top: 1rem;
  left: 1rem;
  z-index: 2;
  background: rgba(255,255,255,0.92);
  color: var(--et-navy);
  font-size: .68rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .04em;
  padding: .3rem .8rem;
  border-radius: 2rem;
}
.overlay-card-scrim {
  position: absolute;
  inset: 0;
  background: linear-gradient(0deg, rgba(18,29,64,0.95) 0%, rgba(18,29,64,0.55) 45%, rgba(18,29,64,0.05) 75%);
}
.overlay-card-body {
  position: absolute;
  left: 0; right: 0; bottom: 0;
  z-index: 2;
  padding: 1.5rem;
  transform: translateY(2.1rem);
  transition: transform .3s ease;
}
.overlay-card:hover .overlay-card-body { transform: translateY(0); }
.overlay-card-title {
  color: #fff;
  font-size: 1.15rem;
  margin-bottom: 0;
  transition: margin-bottom .3s ease;
}
.overlay-card:hover .overlay-card-title { margin-bottom: .5rem; }
.overlay-card-desc {
  color: rgba(255,255,255,0.85);
  font-size: .85rem;
  max-height: 0;
  opacity: 0;
  overflow: hidden;
  transition: max-height .3s ease, opacity .3s ease;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  line-clamp: 2;
  -webkit-box-orient: vertical;
}
.overlay-card:hover .overlay-card-desc { max-height: 3.5rem; opacity: 1; }
.overlay-card-arrow {
  position: absolute;
  top: 1rem;
  right: 1rem;
  z-index: 2;
  width: 2.25rem;
  height: 2.25rem;
  border-radius: 50%;
  background: rgba(255,255,255,0.15);
  border: 1px solid rgba(255,255,255,0.4);
  color: #fff;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  opacity: 0;
  transform: scale(.8);
  transition: opacity .25s ease, transform .25s ease, background .25s ease;
}
.overlay-card:hover .overlay-card-arrow { opacity: 1; transform: scale(1); background: var(--et-green); }

/* --- Full-width horizontal listing card --- */
.project-row-card {
  display: flex;
  align-items: stretch;
  gap: 1.75rem;
  background: #fff;
  border-radius: 1.25rem;
  border: 1px solid rgba(27, 42, 92, 0.08);
  box-shadow: 0 .5rem 1.5rem rgba(27, 42, 92, 0.06);
  padding: 1rem;
  text-decoration: none;
  color: inherit;
  transition: transform .3s ease, box-shadow .3s ease, border-color .3s ease;
}
.project-row-card:hover {
  transform: translateY(-8px);
  box-shadow: 0 1.5rem 2.5rem rgba(27, 42, 92, 0.16);
  border-color: rgba(78, 159, 47, 0.3);
  color: inherit;
}
.project-row-media {
  flex: 0 0 38%;
  max-width: 38%;
  border-radius: .9rem;
  overflow: hidden;
  min-height: 200px;
}
.project-row-media img {
  width: 100%;
  height: 100%;
  min-height: 200px;
  object-fit: cover;
  transition: transform .5s ease;
}
.project-row-card:hover .project-row-media img { transform: scale(1.06); }
.project-row-body {
  flex: 1 1 auto;
  display: flex;
  flex-direction: column;
  justify-content: center;
  padding: .75rem .5rem;
  min-width: 0;
}
.project-row-title { transition: color .25s ease; margin-bottom: .4rem; }
.project-row-card:hover .project-row-title { color: var(--et-green-dark); }
.project-row-desc {
  color: #6b7280;
  font-size: .92rem;
  margin-bottom: 0;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}
.project-row-cta {
  flex: 0 0 auto;
  display: flex;
  align-items: center;
  padding: .75rem 1.5rem .75rem .5rem;
}
.project-row-cta .btn-pill { margin-left: auto; white-space: nowrap; }

@media (max-width: 767.98px) {
  .project-row-card { flex-direction: column; }
  .project-row-media { flex-basis: auto; max-width: 100%; min-height: 180px; }
  .project-row-media img { min-height: 180px; }
  .project-row-cta { padding: 0 .5rem 1rem; }
  .project-row-cta .btn-pill { margin-left: 0; width: 100%; justify-content: center; }
}

/* --- Overview sidebar fact rows (detail page) --- */
.fact-row {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  gap: 1rem;
  padding: .85rem 0;
  border-bottom: 1px solid rgba(27, 42, 92, 0.08);
}
.fact-row:last-of-type { border-bottom: none; }
.fact-row-label {
  font-size: .68rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .05em;
  color: #9aa2b1;
  flex: none;
}
.fact-row-value { font-weight: 700; color: var(--et-navy); text-align: right; }

/* --- Slim centered CTA band (listing page footer) --- */
.cta-band {
  text-align: center;
  padding: 2.5rem 1.5rem;
  border-radius: 1.25rem;
  background: linear-gradient(120deg, var(--et-navy), var(--et-navy-dark));
  color: #fff;
}
.cta-band h4 { color: #fff; margin-bottom: 1rem; }

/* --- Masonry photo grid (gallery) --- */
.masonry-grid {
  column-count: 1;
  column-gap: 1.25rem;
}
.masonry-item {
  display: block;
  break-inside: avoid;
  margin-bottom: 1.25rem;
  border-radius: 1.25rem;
  overflow: hidden;
  position: relative;
}
.masonry-item img { width: 100%; display: block; transition: transform .5s ease; }
.masonry-item:hover img { transform: scale(1.08); }
.masonry-item-overlay {
  position: absolute;
  inset: 0;
  background: linear-gradient(0deg, rgba(18,29,64,0.85), rgba(18,29,64,0.05) 60%);
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
  padding: 1.25rem;
  opacity: 0;
  transition: opacity .3s ease;
}
.masonry-item:hover .masonry-item-overlay { opacity: 1; }
.masonry-item-icon {
  align-self: flex-end;
  width: 2.25rem;
  height: 2.25rem;
  border-radius: 50%;
  background: rgba(255,255,255,0.15);
  border: 1px solid rgba(255,255,255,0.4);
  color: #fff;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  margin-bottom: auto;
}
.masonry-item-title { color: #fff; font-weight: 700; font-size: .95rem; margin-bottom: 0; }

@media (min-width: 576px) { .masonry-grid { column-count: 2; } }
@media (min-width: 768px) { .masonry-grid { column-count: 3; } }
@media (min-width: 1200px) { .masonry-grid { column-count: 4; } }

/* --- Per-project carousel (Swiper, inside detail page) --- */
.project-carousel { border-radius: 1.25rem; overflow: hidden; box-shadow: 0 .5rem 1.5rem rgba(27, 42, 92, 0.1); }
.project-carousel .swiper-slide img { width: 100%; height: 420px; object-fit: cover; }
.project-carousel .swiper-button-next,
.project-carousel .swiper-button-prev { color: #fff; --swiper-navigation-size: 20px; }
.project-carousel .swiper-pagination-bullet { background: #fff; opacity: .6; }
.project-carousel .swiper-pagination-bullet-active { opacity: 1; background: var(--et-amber); }
@media (max-width: 575.98px) { .project-carousel .swiper-slide img { height: 260px; } }

/* --- Numbered pagination (shared by Projects/Research/News/Careers) --- */
.pagination .page-link {
  border: none;
  color: var(--et-navy);
  font-weight: 600;
  margin: 0 .2rem;
  border-radius: 50%;
  width: 2.5rem;
  height: 2.5rem;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 0;
  transition: background .2s ease, color .2s ease;
}
.pagination .page-item.active .page-link { background: var(--et-navy); color: #fff; }
.pagination .page-link:hover { background: rgba(78,159,47,0.12); color: var(--et-navy); }
.pagination .page-item.disabled .page-link { color: #c3c9d4; background: transparent; }