/* =============================================================
   NGBM Foundation — design refinement, September 2026
   Layered on top of ngbm-fixes.css.

   Intent: modernise typography, spacing, colour and layout without
   rebuilding the site. Every rule here is presentational; removing
   this file returns the site to its previous appearance.
   ============================================================= */

/* -------------------------------------------------------------
   1. Design tokens
   ------------------------------------------------------------- */
:root{
  /* Brand orange, kept for fills; the darker steps carry text. */
  --o-500:#FFA026;
  --o-600:#E07D0E;
  --o-text:#B85C00;   /* 4.60:1 on white */
  --o-btn:#A85400;    /* white on this = 5.34:1 */
  --o-deep:#8A4400;
  --o-tint:#FFF6EC;
  --o-tint-2:#FDEBD6;

  --teal:#1F6350;
  --teal-tint:#EAF3F0;

  /* Warm-leaning neutrals, chosen against the orange rather than pure grey */
  --n-900:#1F2226;
  --n-800:#2B2F35;
  --n-700:#3E444C;
  --n-600:#565D67;   /* 7.0:1 on white */
  --n-400:#8B929C;
  --n-200:#DFE2E7;
  --n-100:#EEF0F3;
  --n-050:#F7F8FA;
  --paper:#FFFFFF;
  --sand:#FAF7F3;

  /* Spacing scale (8px base) */
  --s-1:4px;  --s-2:8px;  --s-3:12px; --s-4:16px;
  --s-5:24px; --s-6:32px; --s-7:48px; --s-8:64px; --s-9:96px;

  --radius:10px;
  --radius-lg:14px;
  --shadow-1:0 1px 2px rgba(31,34,38,.05), 0 1px 3px rgba(31,34,38,.06);
  --shadow-2:0 2px 4px rgba(31,34,38,.05), 0 12px 28px -12px rgba(31,34,38,.18);

  --container:1200px;
  --measure:68ch;

  --ease:cubic-bezier(.22,.61,.36,1);

  /* One stack for both scripts: Poppins has no Bengali glyphs, so Bengali
     text falls through to SolaimanLipi automatically. */
  --font: "Poppins", "SolaimanLipi", system-ui, -apple-system, "Segoe UI", Arial, sans-serif;
}

/* -------------------------------------------------------------
   2. Typography
   The site was running five families and a dozen unrelated sizes.
   ------------------------------------------------------------- */
/* The Bangla Web Fonts plugin sets SolaimanLipi globally; its Latin glyphs
   read as a serif, which is where the mixed serif/sans look came from.
   Only text-bearing elements are overridden — never <i> or icon classes,
   whose own font-family carries the glyphs. */
/* The Bangla Web Fonts plugin prints an inline `!important` rule in the head,
   so these selectors are prefixed with `html` to out-specify it rather than
   depend on source order. */
html body, html p, html li, html td, html th, html dd, html dt,
html label, html figcaption, html blockquote,
html h1, html h2, html h3, html h4, html h5, html h6,
html a, html input, html textarea, html select, html button,
html .topbar, html .main-menu, html .breadcrumb, html .copyrights-area,
html .elementor-heading-title, html .elementor-widget-text-editor,
html .elementor-icon-list-text, html .elementor-button-text,
html .elementor-image-box-title, html .elementor-image-box-description,
html .elementor-icon-box-title, html .elementor-icon-box-description,
html .sina-title, html .sina-subtitle{
  font-family: var(--font) !important;
}

body{
  font-size: clamp(15.5px, 0.95rem + 0.12vw, 17px);
  line-height: 1.65;
  color: var(--n-700);
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}

h1, .elementor-widget-heading h1.elementor-heading-title{
  font-size: clamp(28px, 1.55rem + 2.1vw, 46px);
  line-height: 1.14;
  letter-spacing: -0.015em;
  font-weight: 700;
  color: var(--n-900);
  text-wrap: balance;
}
h2, .elementor-widget-heading h2.elementor-heading-title{
  font-size: clamp(23px, 1.35rem + 1.15vw, 34px);
  line-height: 1.22;
  letter-spacing: -0.01em;
  font-weight: 600;
  color: var(--n-900);
  text-wrap: balance;
}
h3, .elementor-widget-heading h3.elementor-heading-title{
  font-size: clamp(19px, 1.1rem + 0.45vw, 23px);
  line-height: 1.3;
  font-weight: 600;
  color: var(--n-900);
}
h4{ font-size: clamp(17px, 1rem + 0.25vw, 19px); line-height:1.35; font-weight:600; color:var(--n-800); }

/* Line-height only — NOT colour. Setting a colour on `p` beat the colour
   Elementor inherits from each widget, which turned the white text on the
   dark event cards into near-invisible dark grey. Body colour is set once,
   on `body`, and anything that needs correcting is fixed by name. */
p, li, .elementor-widget-text-editor{
  line-height: 1.65;
}
.elementor-widget-text-editor p:last-child{ margin-bottom: 0; }

/* Several headings are stored lowercase in Elementor and depend on CSS to
   capitalise them, so `capitalize` is kept — `none` would expose the raw
   lowercase. It is a no-op on titles already stored in proper case. */
.elementor-heading-title,
.elementor-image-box-title,
.elementor-icon-box-title,
h1, h2, h3, h4, h5, h6{
  text-transform: capitalize;
}
/* Buttons are stored in proper case, so they can drop the transform. */
.elementor-button{ text-transform: none !important; }
/* Small eyebrow labels keep their uppercase, but earn tracking. */
.elementor-widget-heading .elementor-heading-title[class*="size-small"],
.ngbm-eyebrow{
  text-transform: uppercase !important;
  letter-spacing: .1em;
  font-size: 12px;
  font-weight: 600;
}

/* Keep running text to a comfortable measure and left-aligned. */
.elementor-widget-text-editor > .elementor-widget-container,
.elementor-widget-text-editor p{
  max-width: var(--measure);
}
.elementor-widget-text-editor.elementor-widget-align-center > .elementor-widget-container{
  margin-inline: auto;
}

/* -------------------------------------------------------------
   3. Colour: contrast-safe text
   ------------------------------------------------------------- */
.elementor-heading-title[style*="FFA026"], .elementor-heading-title[style*="ffa026"],
.elementor-heading-title[style*="FF8F00"], .elementor-heading-title[style*="ff8f00"],
[style*="color:#FFA026"], [style*="color: #FFA026"],
[style*="color:#ff8f00"], [style*="color: #ff8f00"]{
  color: var(--o-text) !important;
}

/* Navigation */
.hfe-nav-menu a, .elementor-nav-menu a, .menu-item > a,
.hfe-nav-menu .menu-item a.hfe-menu-item,
.hfe-nav-menu .sub-menu a.hfe-sub-menu-item{
  color: var(--n-700) !important;
  font-weight: 500;
  transition: color .18s var(--ease);
}
.hfe-nav-menu a:hover, .elementor-nav-menu a:hover, .menu-item > a:hover,
.hfe-nav-menu .menu-item a.hfe-menu-item:hover,
.menu-item.current-menu-item > a, .menu-item.current_page_item > a,
.menu-item.current-menu-ancestor > a{
  color: var(--o-text) !important;
}

/* Top utility bar */
#masthead .elementor-icon-list-text,
#masthead .elementor-icon-list-item a{
  color: var(--n-700) !important;
}

/* -------------------------------------------------------------
   4. Layout and rhythm
   ------------------------------------------------------------- */
.elementor-section.elementor-section-boxed > .elementor-container,
.e-con-boxed > .e-con-inner{
  max-width: var(--container) !important;
}

/* Elementor sections carry their own designed padding — overriding it
   wholesale distorts the header and hero. Rhythm is improved through
   widget margins and heading spacing instead. */

/* Widget spacing */
.elementor-widget:not(:last-child){ margin-bottom: var(--s-5); }
.elementor-widget-heading + .elementor-widget-text-editor{ margin-top: calc(var(--s-3) * -1); }

/* -------------------------------------------------------------
   5. Responsive columns
   Four-across grids stayed four-across on tablets.
   ------------------------------------------------------------- */
@media (max-width: 1024px){
  .elementor-column.elementor-col-20,
  .elementor-column.elementor-col-25{ width: 50% !important; }
  .elementor-column.elementor-col-16{ width: 33.333% !important; }
}
@media (max-width: 767px){
  .elementor-column.elementor-col-20,
  .elementor-column.elementor-col-25,
  .elementor-column.elementor-col-33,
  .elementor-column.elementor-col-16,
  .elementor-column.elementor-col-50{ width: 100% !important; }
}

/* Rows behave as grids so cards in a row share a height. */
.elementor-section .elementor-container{ align-items: stretch; }
.elementor-column > .elementor-widget-wrap{ align-content: flex-start; }

/* -------------------------------------------------------------
   6. Cards and surfaces
   ------------------------------------------------------------- */
main .elementor-widget-image-box .elementor-image-box-wrapper,
#content .elementor-widget-image-box .elementor-image-box-wrapper{
  background: var(--paper);
  border: 1px solid var(--n-200);
  border-radius: var(--radius);
  padding: var(--s-5);
  height: 100%;
  box-shadow: var(--shadow-1);
  transition: transform .22s var(--ease), box-shadow .22s var(--ease), border-color .22s var(--ease);
}
main .elementor-widget-image-box .elementor-image-box-wrapper:hover,
#content .elementor-widget-image-box .elementor-image-box-wrapper:hover{
  transform: translateY(-3px);
  box-shadow: var(--shadow-2);
  border-color: var(--o-tint-2);
}
/* Icon boxes are used for the footer contact list and the section tiles,
   where a white card would be wrong — they stay transparent. */
.elementor-widget-icon-box .elementor-icon-box-wrapper{
  background: transparent;
  border: 0;
  box-shadow: none;
}

/* Person cards: keep the orange accent, drop the mismatched heights. */
.elementor-column > .elementor-widget-wrap > .elementor-element{ min-width: 0; }

/* -------------------------------------------------------------
   7. Images
   Portraits were stretched (object-fit: fill) and cropped differently.
   ------------------------------------------------------------- */
img{ max-width: 100%; height: auto; }

.elementor-widget-image img,
.elementor-image-box-img img,
.elementor-widget-theme-post-featured-image img{
  object-fit: cover;
}

/* Round portraits: one size, one crop, one ring. */
.elementor-widget-image img[style*="border-radius"],
.elementor-widget-image .elementor-image img[src*="jpg"][width],
img[style*="border-radius: 50%"], img[style*="border-radius:50%"]{
  aspect-ratio: 1 / 1;
  object-fit: cover;
  object-position: center 22%;
}

/* Gallery images are a deliberate mix of portrait and landscape, and some
   are small thumbnails. Forcing one aspect ratio upscaled and cropped them —
   it cut faces out of the video posters — so they keep their own proportions
   and get only a shared corner radius. */
.elementor-image-carousel .swiper-slide-image,
.elementor-widget-image-gallery .gallery-item img,
.wpr-grid-image-wrap img,
.eael-grid-post-holder img{
  border-radius: var(--radius);
}

/* -------------------------------------------------------------
   8. Buttons and interaction
   ------------------------------------------------------------- */
.elementor-button, .ngbm-btn,
input[type=submit], button[type=submit]{
  border-radius: 6px !important;
  font-weight: 600 !important;
  letter-spacing: .005em;
  padding: 13px 26px !important;
  min-height: 44px;
  box-shadow: none !important;
  transition: background-color .18s var(--ease), transform .18s var(--ease);
}
.elementor-button:hover, input[type=submit]:hover, button[type=submit]:hover{
  transform: translateY(-1px);
}
.elementor-button-icon, .elementor-button-content-wrapper{ align-items: center; }

/* The theme animated buttons with a permanent float/pulse. */
.elementor-animation-float:hover, .elementor-animation-pulse:hover,
.elementor-animation-float, .elementor-animation-pulse,
.elementor-animation-grow, .elementor-animation-shrink,
.elementor-animation-bob, .elementor-animation-wobble-vertical{
  animation: none !important;
  transform: none !important;
}
.elementor-animation-float:hover, .elementor-animation-pulse:hover{
  transform: translateY(-1px) !important;
}

/* Links */
a{ transition: color .18s var(--ease); }

/* -------------------------------------------------------------
   9. Motion — one restrained reveal instead of scattered effects
   ------------------------------------------------------------- */
@media (prefers-reduced-motion: no-preference){
  .ngbm-reveal{
    opacity: 0;
    transform: translateY(14px);
    transition: opacity .5s var(--ease), transform .5s var(--ease);
    will-change: opacity, transform;
  }
  .ngbm-reveal.is-in{ opacity: 1; transform: none; }
}
/* Anything not reached by the observer must still be readable. */
.no-js .ngbm-reveal, .ngbm-reveal.is-in{ opacity: 1; transform: none; }

/* -------------------------------------------------------------
   10. Section backgrounds
   Full-width blue→pink→cream→green→cyan gradients read as dated.
   ------------------------------------------------------------- */
.elementor-top-section[style*="linear-gradient"],
.elementor-top-section > .elementor-background-overlay[style*="linear-gradient"]{
  background-image: none !important;
}
.ngbm-band-sand{ background: var(--sand) !important; }
.ngbm-band-tint{ background: var(--o-tint) !important; }

/* -------------------------------------------------------------
   11. Header
   ------------------------------------------------------------- */
#masthead{
  box-shadow: 0 1px 0 var(--n-200);
  background: var(--paper);
}
#masthead .elementor-top-section{ padding-block: 0; }

/* -------------------------------------------------------------
   12. Footer
   ------------------------------------------------------------- */
#colophon{
  background: var(--n-900) !important;
  color: var(--n-200);
  padding-block: clamp(40px, 4.5vw, 68px) 0;
}
#colophon .elementor-top-section{
  padding-block: 0 !important;
  background: transparent !important;
}
/* Only the short column labels are <h2>; the long "about" paragraph is an
   <h4> heading widget, so uppercasing every footer heading turned a whole
   paragraph into shouting. Scope it to the labels. */
#colophon h2.elementor-heading-title{
  color: #fff !important;
  font-size: 15px !important;
  font-weight: 600 !important;
  letter-spacing: .09em !important;
  text-transform: uppercase !important;
  margin-bottom: var(--s-4);
}
#colophon h3.elementor-heading-title,
#colophon h4.elementor-heading-title,
#colophon h5.elementor-heading-title,
#colophon h6.elementor-heading-title{
  color: #C2C7CF !important;
  font-size: 14.5px !important;
  font-weight: 400 !important;
  line-height: 1.65 !important;
  letter-spacing: normal !important;
  text-transform: none !important;
}
#colophon p,
#colophon .elementor-widget-text-editor,
#colophon .elementor-icon-list-text,
#colophon li,
#colophon span{
  color: #C2C7CF !important;
  font-size: 14.5px !important;
  line-height: 1.6 !important;
  text-align: left !important;
}
#colophon a{
  color: #DDE1E6 !important;
  text-decoration: none;
}
#colophon a:hover{ color: var(--o-500) !important; }

/* Column rules replaced the vertical dividers and the star graphics. */
#colophon .elementor-divider,
#colophon .elementor-widget-divider{
  display: none !important;
}
#colophon .elementor-column{
  border: 0 !important;
  padding-inline: var(--s-4);
}
#colophon .elementor-icon-list-icon svg,
#colophon .elementor-icon-list-icon i{
  color: var(--o-500) !important;
  fill: var(--o-500) !important;
}

/* The copyright strip reads as a separate bar. */
#colophon .elementor-top-section:last-child{
  border-top: 1px solid rgba(255,255,255,.10);
  margin-top: var(--s-6);
  padding-block: var(--s-5) var(--s-5) !important;
}
#colophon .elementor-top-section:last-child *{
  color: #9AA1AB !important;
  font-size: 13.5px !important;
  text-align: center !important;
}

/* -------------------------------------------------------------
   13. Forms
   ------------------------------------------------------------- */
input[type=text], input[type=email], input[type=tel], input[type=url],
input[type=number], textarea, select, .frm_form_field input, .frm_form_field textarea{
  border: 1px solid var(--n-200) !important;
  border-radius: 6px !important;
  padding: 11px 13px !important;
  font-size: 15.5px !important;
  background: var(--paper) !important;
  color: var(--n-900) !important;
  transition: border-color .18s var(--ease), box-shadow .18s var(--ease);
}
input:focus, textarea:focus, select:focus{
  border-color: var(--o-btn) !important;
  box-shadow: 0 0 0 3px rgba(168,84,0,.14) !important;
  outline: none !important;
}
label, .frm_primary_label{
  font-weight: 600 !important;
  font-size: 14px !important;
  color: var(--n-800) !important;
  margin-bottom: 6px !important;
}

/* -------------------------------------------------------------
   14. Large screens — stop full-bleed rows sprawling
   ------------------------------------------------------------- */
@media (min-width: 1600px){
  :root{ --container: 1280px; }
  .elementor-section.elementor-section-stretched{ max-width: 100%; }
}

/* -------------------------------------------------------------
   15. Small screens
   ------------------------------------------------------------- */
@media (max-width: 767px){
  .elementor-widget:not(:last-child){ margin-bottom: var(--s-4); }
  #colophon .elementor-column{
    padding-inline: 0;
    margin-bottom: var(--s-6);
  }
  #colophon .elementor-column:last-child{ margin-bottom: 0; }
}

/* -------------------------------------------------------------
   16. Footer corrections after visual review
   ------------------------------------------------------------- */

/* The theme set the footer body copy in uppercase with heavy tracking,
   which made a whole paragraph unreadable. */
#colophon *:not(.elementor-heading-title):not(i):not([class*="icon"]){
  text-transform: none !important;
  letter-spacing: normal !important;
  hyphens: none !important;
}
#colophon p,
#colophon .elementor-widget-text-editor,
#colophon .elementor-icon-list-text,
#colophon .elementor-icon-box-description,
#colophon li{
  text-align: left !important;
}

/* Nothing in the footer sits on a light card. */
#colophon .elementor-icon-box-wrapper,
#colophon .elementor-widget-container,
#colophon .elementor-icon-list-item,
#colophon .elementor-widget{
  background: transparent !important;
  border: 0 !important;
  box-shadow: none !important;
}

/* Contact rows: readable on the dark ground, with breathing room. */
#colophon .elementor-icon-list-item{
  margin-bottom: var(--s-3);
  align-items: flex-start;
}
#colophon .elementor-icon-box-title,
#colophon .elementor-icon-box-title *{
  color: #FFFFFF !important;
  font-size: 15px !important;
  font-weight: 600 !important;
  text-transform: none !important;
}
#colophon .elementor-icon-box-description{
  color: #C2C7CF !important;
}

/* Column separators were vertical rules of varying colour. */
#colophon .elementor-column,
#colophon .elementor-widget-wrap,
#colophon .elementor-column > .elementor-element{
  border-left: 0 !important;
  border-right: 0 !important;
}

/* Give the three columns a real grid rather than floated thirds. */
@media (min-width: 768px){
  #colophon .elementor-column.elementor-col-33{ width: 33.333% !important; }
}

/* Column labels keep their uppercase — they are labels, not prose. */
#colophon h2.elementor-heading-title{
  text-transform: uppercase !important;
  letter-spacing: .1em !important;
  text-align: left !important;
}
#colophon h3.elementor-heading-title,
#colophon h4.elementor-heading-title,
#colophon h5.elementor-heading-title,
#colophon h6.elementor-heading-title{
  text-transform: none !important;
  letter-spacing: normal !important;
  text-align: left !important;
}

/* -------------------------------------------------------------
   17. Remaining stray families
   Counters were set in Playfair Display and the Bengali tab panels in
   Roboto. Both are <div>/<span>, which the rule above deliberately
   avoids so icon elements keep their own font — so name them directly.
   ------------------------------------------------------------- */
html .elementor-counter-number-wrapper,
html .elementor-counter-number,
html .elementor-counter-number-prefix,
html .elementor-counter-number-suffix,
html .elementor-counter-title,
html .elementor-tab-content,
html .elementor-tab-title,
html .elementor-toggle-title,
html .elementor-accordion-title,
html .elementor-price-table__price,
html .elementor-progress-percentage{
  font-family: var(--font) !important;
}
html .elementor-counter-number-wrapper{
  font-variant-numeric: tabular-nums;
  letter-spacing: -0.02em;
}

/* The copyright strip and the language switcher were still set in Roboto. */
html .hfe-copyright-wrapper,
html .hfe-copyright-wrapper *,
html .wpr-button-text-a,
html .wpr-button-text-b,
html .wpr-button-content-a,
html .wpr-button-content-b{
  font-family: var(--font) !important;
}

/* The visitor counter's own div is hidden, but its Elementor wrapper still
   reserved space in the footer. Remove the whole widget. */
.elementor-widget:has(#mvcwid),
.elementor-element:has(> .elementor-widget-container #mvcwid),
.elementor-widget-container:has(> .elementor-shortcode > #mvcwid){
  display: none !important;
}

/* -------------------------------------------------------------
   18. Final contrast pass
   Each value below was measured against the ground it actually sits
   on, including the pale blue and grey bands, not just white.
   ------------------------------------------------------------- */

/* Sina eyebrow labels ("meet our team", "about our organization") sit on
   white, pale blue (#AEBFE4) and grey (#D8D8D8) in different sections.
   #7A3B00 clears 4.5:1 on all three. */
html .sina-title-title,
html .sina-title .sina-title-title,
html .sina-subtitle{
  color: #7A3B00 !important;
}

/* The animated headline was a mid pink at 4.03:1. */
html .sina-fancytext-strings,
html .sina-fancytext .typed-cursor{
  color: #C2185B !important;
}

/* Language switcher: white on the bright orange measured 2.04:1. */
html .wpr-button-a, html .wpr-button-b,
html .wpr-dual-button .wpr-button-a,
html .wpr-dual-button .wpr-button-b{
  background-color: var(--o-btn) !important;
  color: #fff !important;
}
html .wpr-button-text-a, html .wpr-button-text-b{ color: #fff !important; }
html span.wpr-button-a[aria-current]{ background-color: var(--n-600) !important; }

/* Donation aside link on the sand ground. */
.ngbm-aside a{ color: #8A4400 !important; }

/* -------------------------------------------------------------
   19. Contact form
   The form sat on a dark brown panel beside a salmon one, and its
   labels were dark-on-dark. Give it its own light card.
   ------------------------------------------------------------- */
.frm_forms.with_frm_style{
  background: var(--paper) !important;
  border: 1px solid var(--n-200);
  border-radius: var(--radius);
  padding: clamp(20px, 3vw, 32px) !important;
  box-shadow: var(--shadow-1);
}
.frm_forms.with_frm_style .frm_primary_label,
.frm_forms.with_frm_style label{
  color: var(--n-800) !important;
}
.frm_forms.with_frm_style .frm_description,
.frm_forms.with_frm_style .frm_none_container{
  color: var(--n-600) !important;
}
.frm_forms.with_frm_style h3,
.frm_forms.with_frm_style legend{
  color: var(--n-900) !important;
}

/* -------------------------------------------------------------
   20. Brand orange used as TEXT
   Auto-derived from Elementor's generated CSS: every rule that paints
   text in #FFA026 / #FF8F00 (directly or through the global colour),
   which measured 2.04:1 on white. Icons, borders and fills are left
   bright — only text is darkened.
   ------------------------------------------------------------- */
html .elementor-element.elementor-element-0033f38 .elementor-heading-title,
html .elementor-element.elementor-element-0633112 .elementor-toggle-title,
html .elementor-element.elementor-element-136904b5 .elementor-heading-title,
html .elementor-element.elementor-element-1ff5235 .elementor-heading-title,
html .elementor-element.elementor-element-22a6291e .elementor-heading-title,
html .elementor-element.elementor-element-331ef61c .elementor-heading-title,
html .elementor-element.elementor-element-33e63bd .elementor-icon-list-item:hover .elementor-icon-list-text,
html .elementor-element.elementor-element-351217b .elementor-heading-title,
html .elementor-element.elementor-element-39cd085 .elementor-heading-title,
html .elementor-element.elementor-element-4375473 .elementor-toggle-title,
html .elementor-element.elementor-element-47bcffaf .elementor-heading-title,
html .elementor-element.elementor-element-598453a .elementor-heading-title,
html .elementor-element.elementor-element-59bcb710 .elementor-heading-title,
html .elementor-element.elementor-element-5b00a83 .elementor-icon-list-item:hover .elementor-icon-list-text,
html .elementor-element.elementor-element-5cbfa18 .menu-item a.hfe-menu-item.highlighted,
html .elementor-element.elementor-element-5cbfa18 .menu-item a.hfe-menu-item:focus,
html .elementor-element.elementor-element-5cbfa18 .menu-item a.hfe-menu-item:hover,
html .elementor-element.elementor-element-5cbfa18 .menu-item.current-menu-ancestor a.hfe-menu-item,
html .elementor-element.elementor-element-5cbfa18 .menu-item.current-menu-item a.hfe-menu-item,
html .elementor-element.elementor-element-5cbfa18 .sub-menu a.hfe-sub-menu-item:hover,
html .elementor-element.elementor-element-5e54384 .elementor-heading-title,
html .elementor-element.elementor-element-619b98a .elementor-heading-title,
html .elementor-element.elementor-element-70e5d48 .elementor-heading-title,
html .elementor-element.elementor-element-777dace .elementor-heading-title,
html .elementor-element.elementor-element-7c8f2ab .elementor-toggle-title,
html .elementor-element.elementor-element-7ce267da .elementor-repeater-item-dbb1e65 .wpr-table-text,
html .elementor-element.elementor-element-7ce267da .elementor-repeater-item-e3579b4 .wpr-table-text,
html .elementor-element.elementor-element-7fea94c6 .elementor-heading-title,
html .elementor-element.elementor-element-8cf69cf .elementor-heading-title,
html .elementor-element.elementor-element-8db213f .elementor-repeater-item-0446b6b .wpr-table-text,
html .elementor-element.elementor-element-8db213f .elementor-repeater-item-0e1919a .wpr-table-text,
html .elementor-element.elementor-element-8db213f .elementor-repeater-item-0e9cd1d .wpr-table-text,
html .elementor-element.elementor-element-8db213f .elementor-repeater-item-1e5cd0e .wpr-table-text,
html .elementor-element.elementor-element-8db213f .elementor-repeater-item-237bfc7 .wpr-table-text,
html .elementor-element.elementor-element-8db213f .elementor-repeater-item-376697f .wpr-table-text,
html .elementor-element.elementor-element-8db213f .elementor-repeater-item-434dbed .wpr-table-text,
html .elementor-element.elementor-element-8db213f .elementor-repeater-item-49f16d2 .wpr-table-text,
html .elementor-element.elementor-element-8db213f .elementor-repeater-item-6c23368 .wpr-table-text,
html .elementor-element.elementor-element-8db213f .elementor-repeater-item-701c4ec .wpr-table-text,
html .elementor-element.elementor-element-8db213f .elementor-repeater-item-760c0a6 .wpr-table-text,
html .elementor-element.elementor-element-8db213f .elementor-repeater-item-8c179a0 .wpr-table-text,
html .elementor-element.elementor-element-8db213f .elementor-repeater-item-9f93bd1 .wpr-table-text,
html .elementor-element.elementor-element-8db213f .elementor-repeater-item-a958de2 .wpr-table-text,
html .elementor-element.elementor-element-8db213f .elementor-repeater-item-ae3fda1 .wpr-table-text,
html .elementor-element.elementor-element-8db213f .elementor-repeater-item-b81ffcd .wpr-table-text,
html .elementor-element.elementor-element-8db213f .elementor-repeater-item-b9ee3b3 .wpr-table-text,
html .elementor-element.elementor-element-8db213f .elementor-repeater-item-d8a8269 .wpr-table-text,
html .elementor-element.elementor-element-8db213f .elementor-repeater-item-da5cbe0 .wpr-table-text,
html .elementor-element.elementor-element-8db213f .elementor-repeater-item-dbb1e65 .wpr-table-text,
html .elementor-element.elementor-element-8db213f .elementor-repeater-item-e3579b4 .wpr-table-text,
html .elementor-element.elementor-element-8db213f .elementor-repeater-item-f1ee244 .wpr-table-text,
html .elementor-element.elementor-element-8db213f .elementor-repeater-item-feeafc6 .wpr-table-text,
html .elementor-element.elementor-element-9260f0e .elementor-heading-title,
html .elementor-element.elementor-element-99efb6e .elementor-heading-title,
html .elementor-element.elementor-element-ae109c3 .elementor-heading-title,
html .elementor-element.elementor-element-b337aab .hfe-copyright-wrapper,
html .elementor-element.elementor-element-b337aab .hfe-copyright-wrapper a,
html .elementor-element.elementor-element-c2b0c80 .elementor-heading-title,
html .elementor-element.elementor-element-d5d0225 .elementor-icon-list-item:hover .elementor-icon-list-text,
html .elementor-element.elementor-element-d761237 .elementor-heading-title,
html .elementor-element.elementor-element-d908fc5 .elementor-heading-title,
html .elementor-element.elementor-element-e6ad878 .elementor-heading-title,
html .elementor-element.elementor-element-f56e8b3 .elementor-heading-title,
html .elementor-element.elementor-element-f880008 .wpr-mobile-toggle:hover .wpr-mobile-toggle-text,
html .elementor-element.elementor-element-f880008 .wpr-nav-menu .wpr-menu-item,
html .elementor-element.elementor-element-f880008 .wpr-nav-menu .wpr-menu-item.wpr-active-menu-item,
html .elementor-element.elementor-element-f880008 .wpr-nav-menu .wpr-menu-item:hover,
html .elementor-element.elementor-element-f880008 .wpr-sub-menu .wpr-sub-menu-item.wpr-active-menu-item,
html .elementor-element.elementor-element-f880008 .wpr-sub-menu .wpr-sub-menu-item:hover,
html .elementor-element.elementor-element-f880008 .wpr-sub-menu > .menu-item-has-children .wpr-sub-menu-item:hover .wpr-sub-icon,
html .elementor-element.elementor-element-fbef441 .elementor-heading-title,
html .elementor-element.elementor-element-fc8a1b6 .elementor-repeater-item-02d4853 .wpr-table-text,
html .elementor-element.elementor-element-fc8a1b6 .elementor-repeater-item-0446b6b .wpr-table-text,
html .elementor-element.elementor-element-fc8a1b6 .elementor-repeater-item-0e9cd1d .wpr-table-text,
html .elementor-element.elementor-element-fc8a1b6 .elementor-repeater-item-19afd57 .wpr-table-text,
html .elementor-element.elementor-element-fc8a1b6 .elementor-repeater-item-237bfc7 .wpr-table-text,
html .elementor-element.elementor-element-fc8a1b6 .elementor-repeater-item-44dfd97 .wpr-table-text,
html .elementor-element.elementor-element-fc8a1b6 .elementor-repeater-item-785a6bb .wpr-table-text,
html .elementor-element.elementor-element-fc8a1b6 .elementor-repeater-item-8ee0ff6 .wpr-table-text,
html .elementor-element.elementor-element-fc8a1b6 .elementor-repeater-item-9035edc .wpr-table-text,
html .elementor-element.elementor-element-fc8a1b6 .elementor-repeater-item-934874f .wpr-table-text,
html .elementor-element.elementor-element-fc8a1b6 .elementor-repeater-item-96b78ae .wpr-table-text,
html .elementor-element.elementor-element-fc8a1b6 .elementor-repeater-item-9e29779 .wpr-table-text,
html .elementor-element.elementor-element-fc8a1b6 .elementor-repeater-item-a50f610 .wpr-table-text,
html .elementor-element.elementor-element-fc8a1b6 .elementor-repeater-item-b9ee3b3 .wpr-table-text,
html .elementor-element.elementor-element-fc8a1b6 .elementor-repeater-item-ca48973 .wpr-table-text,
html .elementor-element.elementor-element-fc8a1b6 .elementor-repeater-item-dbb1e65 .wpr-table-text,
html .elementor-element.elementor-element-fc8a1b6 .elementor-repeater-item-e2b8f7c .wpr-table-text,
html .elementor-element.elementor-element-fc8a1b6 .elementor-repeater-item-e3579b4 .wpr-table-text,
html .elementor-element.elementor-element-fd54c17 .elementor-heading-title{
  color: var(--o-text) !important;
}

/* Sina eyebrow labels also sit on pale blue (#AEBFE4) and grey (#D8D8D8),
   where --o-text is not enough; #7A3B00 clears 4.5:1 on all three. */
html .elementor-element.elementor-element-22e28c31 .sina-title-title,
html .elementor-element.elementor-element-41bf4071 .sina-title-title,
html .elementor-element.elementor-element-7a97d86c .sina-title-title,
html .elementor-element.elementor-element-ae03762 .sina-title-title,
html .elementor-element.elementor-element-b6c217b .sina-title-title,
html .sina-title-title,
html .sina-subtitle{
  color: #7A3B00 !important;
}

/* Royal Addons table: white on #FF8F00 measured 2.29:1, and the body text
   was #7A7A7A at 4.29:1. */
html .wpr-table-head-row,
html .wpr-table-th{
  background-color: var(--o-btn) !important;
}
html .wpr-table-th .wpr-table-text{ color: #fff !important; }
html .wpr-table-td .wpr-table-text,
html .wpr-table-td a{ color: var(--n-600) !important; }

/* -------------------------------------------------------------
   21. Body-text grey
   Elementor's global "text" colour is #7A7A7A, which measures 4.29:1 on
   white — just under AA. It is used 91× for colour and only 12× for
   borders, so darkening it is safe and lifts body copy site-wide.
   The kit defines it on .elementor-kit-N, hence the attribute selector.
   ------------------------------------------------------------- */
html body[class*="elementor-kit-"]{
  --e-global-color-text: #565D67;
}

/* Royal Addons writes per-row table colours as #7A7A7A !important at a
   specificity of (0,4,4). The repeated class below reaches (0,5,2) so the
   override lands without touching the plugin's own files. */
html body .wpr-table-td.wpr-table-td.wpr-table-td.wpr-table-td.wpr-table-td .wpr-table-text,
html body .wpr-table-td.wpr-table-td.wpr-table-td.wpr-table-td.wpr-table-td a,
html body .wpr-table-td.wpr-table-td.wpr-table-td.wpr-table-td.wpr-table-td span{
  color: var(--n-600) !important;
}

/* -------------------------------------------------------------
   22. Touch targets
   WCAG 2.2 asks for 24×24 CSS px. These four were under it.
   The dot stays small; only the hit area grows.
   ------------------------------------------------------------- */
@media (max-width: 1024px){

  /* Carousel dots were 12×12 */
  .swiper-pagination-bullet{
    width: 24px !important;
    height: 24px !important;
    background: transparent !important;
    opacity: 1 !important;
    position: relative;
    margin: 0 2px !important;
  }
  .swiper-pagination-bullet::after{
    content: "";
    position: absolute;
    inset: 8px;
    border-radius: 50%;
    background: var(--n-400);
    transition: background-color .18s var(--ease);
  }
  .swiper-pagination-bullet-active::after,
  .swiper-pagination-bullet:hover::after{ background: var(--o-btn); }

  /* Contact links inside icon boxes were 21px tall */
  .elementor-icon-box-description a,
  .elementor-icon-list-text a,
  .elementor-widget-text-editor a{
    display: inline-block;
    min-height: 24px;
    padding-block: 3px;
  }

  /* Icon links that wrap only a glyph were 18px wide */
  a.elementor-icon,
  .elementor-icon-box-icon > a{
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 24px;
    min-height: 24px;
  }

  /* The header Donate button rendered at 11px */
  .elementor-button-text,
  .elementor-button .elementor-button-text{
    font-size: max(1em, 13px) !important;
  }
  .elementor-button.elementor-size-sm{
    padding: 11px 18px !important;
    min-height: 40px;
  }
}

/* Last three touch/size cases: the donation aside's inline links, its
   field label, and the language switcher — all one or two pixels short. */
.ngbm-field__label{ font-size: 12px; }
.ngbm-aside a,
.ngbm-donate p a{
  display: inline-block;
  min-height: 24px;
  padding-block: 2px;
}
html .wpr-button-a, html .wpr-button-b,
html span.wpr-button-a, html span.wpr-button-b{
  min-height: 26px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}

/* The header utility strip dropped to 10px on tablets. */
@media (max-width: 1024px){
  #masthead .elementor-icon-list-text,
  #masthead .elementor-icon-list-item a,
  #masthead a.ngbm-tel,
  #masthead .elementor-widget-text-editor{
    font-size: max(1em, 12.5px) !important;
    line-height: 1.5;
  }
}

/* -------------------------------------------------------------
   23. Header logo on small screens
   The column-collapse rule in §5 made the header's logo column full
   width, and the logo scaled with it (300px on a 390px screen).
   The header is a fixed bar — it must keep its own layout.
   ------------------------------------------------------------- */
@media (max-width: 1024px){
  #masthead .elementor-column,
  #colophon .elementor-column.elementor-col-33{
    width: auto;
  }
}
@media (max-width: 767px){
  #masthead .elementor-column{ width: auto !important; }
  #colophon .elementor-column{ width: 100% !important; }
}
#masthead .hfe-site-logo-img,
#masthead .hfe-site-logo-container img{
  max-height: 58px !important;
  width: auto !important;
  object-fit: contain !important;
}
@media (max-width: 767px){
  #masthead .hfe-site-logo-img,
  #masthead .hfe-site-logo-container img{ max-height: 46px !important; }
}

/* -------------------------------------------------------------
   24. Contact section
   The form sat in a column with a black background under an orange
   overlay — the brown panel — beside a salmon one. One calm surface
   with a white form card reads better and fixes the label contrast
   at its root.
   ------------------------------------------------------------- */
.elementor-section:has(.frm_forms.with_frm_style){
  background-color: var(--sand) !important;
  background-image: none !important;
}
.elementor-section:has(.frm_forms.with_frm_style) .elementor-element-populated{
  background-color: transparent !important;
  background-image: none !important;
  border: 0 !important;
}
.elementor-section:has(.frm_forms.with_frm_style) .elementor-background-overlay{
  opacity: 0 !important;
}
/* The address tiles beside the form become quiet cards on that surface. */
.elementor-section:has(.frm_forms.with_frm_style) .elementor-widget-icon-box .elementor-icon-box-wrapper{
  background: var(--paper) !important;
  border: 1px solid var(--n-200) !important;
  border-radius: var(--radius);
  padding: var(--s-4) var(--s-5);
}

/* The address tiles already sat inside a bordered column, so the card added
   above produced a double frame. Keep the inner card, drop the outer. */
.elementor-section:has(.frm_forms.with_frm_style) .elementor-widget-icon-box,
.elementor-section:has(.frm_forms.with_frm_style) .elementor-widget-icon-box > .elementor-widget-container{
  border: 0 !important;
  border-radius: 0 !important;
  background: transparent !important;
  box-shadow: none !important;
  padding: 0 !important;
}

/* Body icon-lists (the project pages' timings, teachers, contact rows) were
   set to 11px, which is below the readable floor on a phone. */
@media (max-width: 1024px){
  .elementor-icon-list-text,
  .elementor-icon-list-item,
  .elementor-icon-list-item a{
    font-size: max(1em, 12.5px) !important;
    line-height: 1.55;
  }
}

/* -------------------------------------------------------------
   25. Announcements
   The news scroller is a deprecated <marquee> 200px tall holding a
   700px list, so at any moment most of the box is empty and an item
   is halfway through sliding past. Stopping it shows every
   announcement at once — no gaps, nothing half-read.
   ------------------------------------------------------------- */
.news-container marquee,
.scrollercontent ~ marquee,
#colophon marquee,
marquee{
  height: auto !important;
  overflow: visible !important;
  display: block;
}
.news-container ul{
  margin: 0 !important;
  padding: 0 !important;
  list-style: none !important;
  display: grid;
  gap: var(--s-4);
}
.news-container li{ margin: 0 !important; }
.newsscroller_title a{
  color: var(--o-text) !important;
  font-weight: 600;
  text-decoration: none;
}
.newsscroller_title a:hover{ text-decoration: underline; }
.scrollercontent{
  color: var(--n-700);
  line-height: 1.6;
}
.scrollercontent a{ color: var(--o-text); font-weight: 500; }

/* The news-scroller plugin justifies its own content. */
.scrollercontent,
.scrollercontent *,
.newsscroller_title,
.news-container li{
  text-align: left !important;
}

/* -------------------------------------------------------------
   26. Missing portrait placeholder
   One governing-body card has no image widget at all, so its text
   started at the top of the card while every sibling began below a
   portrait. This draws a placeholder at exactly the portrait's size
   and ring so the row lines up. The SVG carries the ring, the fill
   and the silhouette, so no box-model gymnastics are needed inside
   a flex ::before.

   The rule is scoped to quarter-width columns that hold a person
   card (a sina_title) and have no image — so it self-applies if
   another portrait ever goes missing, and never touches an ordinary
   text-beside-image row.
   ------------------------------------------------------------- */
.elementor-column.elementor-col-25 > .elementor-widget-wrap:has(.elementor-widget-sina_title):not(:has(.elementor-widget-image))::before,
.elementor-element-5d63be9 > .elementor-widget-wrap::before{
  content: "";
  flex: 0 0 100%;
  height: 181px;
  background-repeat: no-repeat;
  background-position: center top;
  background-size: 181px 181px;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'%3E%3Ccircle cx='50' cy='50' r='48' fill='%23F1EEEA' stroke='%23FFA026' stroke-width='2'/%3E%3Ccircle cx='50' cy='40' r='15' fill='%23CDD2D8'/%3E%3Cpath d='M50 59c-15 0-27 10-29 23a48 48 0 0 0 58 0c-2-13-14-23-29-23z' fill='%23CDD2D8'/%3E%3C/svg%3E");
}

/* -------------------------------------------------------------
   27. Header contact strip — centred
   The strip sits in a column beside a second column that held the
   social icons. Those icons are hidden until real profile URLs are
   supplied, so the empty column pushed the contact details left of
   centre. Centring the row's contents fixes it now and still reads
   correctly if the icons come back.
   ------------------------------------------------------------- */
#masthead .elementor-element-4917fca > .elementor-container,
#masthead .elementor-top-section:has(.elementor-icon-list-items) > .elementor-container{
  justify-content: center;
}
#masthead .elementor-element-4917fca .elementor-icon-list-items{
  justify-content: center;
}

/* -------------------------------------------------------------
   28. Placeholder circle alignment
   The real portraits sit inside an inner section with 25px of top
   padding, so they start 36px below the card's content box. The
   placeholder box is grown by that amount and the circle pinned to
   its bottom, then the extra height is pulled back off with a
   negative margin — so the circle lands exactly where a photo would
   without shifting the name and address below it.
   ------------------------------------------------------------- */
.elementor-column.elementor-col-25 > .elementor-widget-wrap:has(.elementor-widget-sina_title):not(:has(.elementor-widget-image))::before,
.elementor-element-5d63be9 > .elementor-widget-wrap::before{
  height: 217px;
  margin-bottom: -36px;
  background-position: center bottom;
}

/* -------------------------------------------------------------
   29. Breathing room around "Let's Make A Difference Today"
   ------------------------------------------------------------- */
.elementor-element-2a24f3e0{
  padding-top: clamp(56px, 6vw, 104px) !important;
  padding-bottom: clamp(56px, 6vw, 104px) !important;
}

/* A column whose only content is social icons that have no destination is an
   empty column holding real estate. Collapse it so the contact strip can
   actually centre — and it comes back on its own the moment real profile
   URLs are configured in ngbm-fixes.php. */
#masthead .elementor-column:has(.elementor-social-icon):not(:has(.elementor-social-icon:not(.ngbm-social-unset))),
#colophon .elementor-column:has(.elementor-social-icon):not(:has(.elementor-social-icon:not(.ngbm-social-unset))){
  display: none !important;
}
#masthead .elementor-element-4917fca .elementor-column{
  width: 100% !important;
}

/* -------------------------------------------------------------
   30. Vertical rhythm for the gallery bands and the KMS strip
   Measured, not guessed: "PHOTO GALLERY" had 0px above and below its
   content, and each gallery band ("Hari Mohan Skill Centre" etc.) had
   10px. The KMS enquiries strip was equally tight. These are listed by
   element rather than fixed with a blanket section rule, because
   overriding every section's padding distorts the header and hero.
   ------------------------------------------------------------- */
.elementor-element-78e13e27,   /* Photo Gallery            */
.elementor-element-c6d64ea,    /* Our Precious Moments     */
.elementor-element-b90be70,    /* NGBM Inauguration        */
.elementor-element-5be5359,    /* Hari Mohan Skill Centre  */
.elementor-element-293a7dc,    /* KrishnArati Montessori   */
.elementor-element-183771e,    /* Lalit Mohan Pathshala    */
.elementor-element-ba95c32,    /* Karunamoye Kala Kendra   */
.elementor-element-f07b934{    /* KMS enquiries strip      */
  padding-top: clamp(40px, 4.4vw, 76px) !important;
  padding-bottom: clamp(40px, 4.4vw, 76px) !important;
}

/* The band headings sat directly on top of their carousels and images. */
.elementor-element-78e13e27 .elementor-widget-heading,
.elementor-element-5be5359 .elementor-widget-heading,
.elementor-element-293a7dc .elementor-widget-heading,
.elementor-element-183771e .elementor-widget-heading,
.elementor-element-ba95c32 .elementor-widget-heading,
.elementor-element-b90be70 .elementor-widget-heading,
.elementor-element-c6d64ea .elementor-widget-heading{
  margin-bottom: clamp(20px, 2.4vw, 36px) !important;
}

/* =============================================================
   31. Shared page rhythm — September visual review
   Roles are assigned in ngbm-fixes.php §16. Only the page root is
   spaced: nested layouts, slideshow tracks and templates keep their
   own geometry. Adjacent title/grid rows form one visual section.
   ============================================================= */
:root{
  --section-space: clamp(48px, 5vw, 80px);
  --section-gap: clamp(24px, 2.5vw, 36px);
  --page-gutter: clamp(20px, 3vw, 40px);
  --forest: #173F35;
  --forest-dark: #103029;
  --sage: #EDF3EF;
  --sand: #FAF7F1;
}
html body [data-elementor-type="wp-page"] > .ngbm-section{
  padding: var(--section-space) var(--page-gutter) !important;
  margin-block: 0 !important;
}
html body [data-elementor-type="wp-page"] > .ngbm-section > .elementor-container{
  max-width: var(--container) !important;
  margin-inline: auto;
  min-height: 0;
}
html body [data-elementor-type="wp-page"] > .ngbm-section > .elementor-container > .elementor-col-100 > .elementor-widget-wrap{
  padding: 0 !important;
  margin: 0 !important;
}
html body [data-elementor-type="wp-page"] > .ngbm-content-band{
  background: var(--paper) !important;
}
html body [data-elementor-type="wp-page"] > .ngbm-heading-band{
  padding-bottom: var(--section-gap) !important;
}
html body [data-elementor-type="wp-page"] > .ngbm-heading-band + .ngbm-content-band{
  padding-top: 0 !important;
}
html body [data-elementor-type="wp-page"] > .ngbm-language-band{
  padding-block: 24px !important;
  background: var(--sand) !important;
}
html body [data-elementor-type="wp-page"] > .ngbm-language-band + .ngbm-content-band{
  padding-top: var(--section-gap) !important;
}
html body .ngbm-language-band .elementor-widget-container{
  margin: 0 !important;
  padding: 0 !important;
}
html body [data-elementor-type="wp-page"] > .ngbm-page-hero{
  padding-block: clamp(56px, 6vw, 88px) !important;
}
html body .ngbm-page-hero .elementor-widget-container,
html body .ngbm-heading-band .elementor-widget-container{
  padding: 0 !important;
  margin: 0 !important;
}
html body .ngbm-page-hero .elementor-heading-title{
  max-width: 30ch;
  margin: 0 auto !important;
  color: #fff !important;
}
html body [data-elementor-type="wp-page"] > .ngbm-photo-band{
  padding: 0 !important;
}
html body .ngbm-photo-band > .elementor-container{
  min-height: clamp(300px, 42vw, 560px) !important;
}
html body .ngbm-photo-band > .elementor-container > .elementor-column > .elementor-widget-wrap{
  margin: 0 !important;
}

/* Consistent text hierarchy also covers Sina's independent title system. */
html body .ngbm-section h1.elementor-heading-title{
  font-size: clamp(30px, 2.8vw, 44px) !important;
  font-weight: 600 !important;
  line-height: 1.2 !important;
  letter-spacing: -.025em !important;
}
html body .ngbm-section h2.elementor-heading-title,
html body .ngbm-section .sina-title-subtitle{
  font-size: clamp(25px, 2.5vw, 36px) !important;
  font-weight: 600 !important;
  line-height: 1.3 !important;
  letter-spacing: -.02em !important;
  margin-top: 0 !important;
  margin-bottom: 20px !important;
}
html body .ngbm-section .sina-title-title{
  font-size: 13px !important;
  font-weight: 600 !important;
  letter-spacing: .09em !important;
  line-height: 1.5 !important;
  margin: 0 0 12px !important;
}
html body .ngbm-section .sina-title-desc,
html body .ngbm-section .elementor-widget-text-editor{
  font-size: clamp(15px, 1.1vw, 17px) !important;
  line-height: 1.75 !important;
}
html body .ngbm-section.ngbm-content-band .elementor-heading-title,
html body .ngbm-section .sina-title-subtitle{
  color: var(--forest) !important;
}
html body .ngbm-heading-band .sina-title-subtitle,
html body .ngbm-heading-band .elementor-heading-title{
  margin-bottom: 0 !important;
}
html body .ngbm-section .elementor-widget-heading > .elementor-widget-container{
  margin-block: 0 !important;
}
html body .ngbm-section .elementor-widget-divider{
  --divider-color: #D4DFD8;
  --divider-pattern-url: none;
}

/* Team grids: one gap, one portrait size, centred names and roles. */
html body [data-elementor-type="wp-page"] > .ngbm-people-grid,
html body [data-elementor-type="wp-page"] > .ngbm-heading-band:has(+ .ngbm-people-grid){
  background: var(--sage) !important;
}
html body [data-elementor-type="wp-page"] > .ngbm-people-grid{
  padding-top: 0 !important;
  padding-bottom: var(--section-space) !important;
}
html body [data-elementor-type="wp-page"] > .ngbm-people-grid:has(+ .ngbm-people-grid){
  padding-bottom: 24px !important;
}
html body .ngbm-people-grid > .elementor-container{
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 24px;
}
html body .ngbm-people-grid .ngbm-person-card{
  width: auto !important;
  min-width: 0;
}
html body .ngbm-person-card > .elementor-widget-wrap{
  margin: 0 !important;
  padding: 28px 20px !important;
  border: 1px solid #DCE5DF !important;
  border-radius: 12px !important;
  background: #fff !important;
  text-align: center !important;
  box-shadow: none !important;
  align-content: flex-start;
}
html body .ngbm-person-card .elementor-inner-section,
html body .ngbm-person-card .elementor-inner-section .elementor-widget-wrap,
html body .ngbm-person-card .elementor-widget-sina_title > .elementor-widget-container{
  padding: 0 !important;
  margin: 0 !important;
}
html body .ngbm-person-card .elementor-inner-section{
  margin-bottom: 22px !important;
}
html body .ngbm-person-card img{
  width: 148px !important;
  height: 148px !important;
  aspect-ratio: 1;
  object-fit: cover !important;
  object-position: center 22%;
  border: 3px solid #EBD7B8 !important;
  border-radius: 50% !important;
}
html body .ngbm-person-card .sina-title,
html body .ngbm-person-card .sina-title-desc,
html body .ngbm-person-card .sina-title-desc p{
  text-align: center !important;
  margin-inline: auto !important;
}
html body .ngbm-person-card .sina-title-title{
  font-size: 12px !important;
  letter-spacing: .035em !important;
  min-height: 36px;
  margin-bottom: 10px !important;
}
html body .ngbm-person-card .sina-title-subtitle{
  font-size: 19px !important;
  line-height: 1.4 !important;
  margin-bottom: 12px !important;
}
html body .ngbm-person-card .sina-title-desc,
html body .ngbm-person-card .sina-title-desc p{
  font-size: 14px !important;
  line-height: 1.65 !important;
}
html body .ngbm-person-card > .elementor-widget-wrap:not(:has(.elementor-widget-image))::before{
  height: 148px;
  flex: 0 0 100%;
  margin: 0 0 22px;
  background-position: center;
  background-size: 148px 148px;
}

/* Homepage: the image remains full bleed; only its actions overlap. */
html body [data-elementor-type="wp-page"] > .elementor-element-4088a9f{
  padding-block: var(--section-space) 24px !important;
}
html body .elementor-element-4088a9f .elementor-element-3b77284{
  position: absolute;
  top: calc(-1 * var(--section-space) - 80px);
  left: 0;
  width: 100%;
  margin: 0 !important;
  padding: 0 !important;
}
html body .elementor-element-3b77284 > .elementor-container{
  justify-content: center;
  gap: 16px;
}
html body .elementor-element-3b77284 .elementor-column{
  width: auto !important;
}
html body .elementor-element-3b77284 .elementor-widget-wrap{
  padding: 0 !important;
}
html body .elementor-element-777dace .elementor-heading-title{
  max-width: 30ch;
  margin-inline: auto;
}
html body .elementor-element-4088a9f .sina-fancytext{
  font-size: clamp(16px, 1.5vw, 20px) !important;
  line-height: 1.65 !important;
  min-height: 66px;
  margin: 0 !important;
}
html body .elementor-element-4088a9f .sina-fancytext-strings,
html body .elementor-element-4088a9f .typed-cursor{
  color: var(--o-deep) !important;
}
html body [data-elementor-type="wp-page"] > .elementor-element-5fu6q8a{
  padding-top: 16px !important;
}
html body .elementor-element-5fu6q8a .sina-title-title{
  font-size: 22px !important;
  text-transform: capitalize !important;
  letter-spacing: -.01em !important;
  color: var(--forest) !important;
  margin: 0 !important;
}
html body .elementor-element-167f40d0 > .elementor-container{
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  gap: 20px;
}
html body .elementor-element-167f40d0 .elementor-column{
  width: auto !important;
}
html body .elementor-element-167f40d0 .elementor-widget-wrap{
  background: var(--sand) !important;
  border: 1px solid #E9E3D8;
  border-radius: 12px !important;
  padding: 28px 16px !important;
  margin: 0 !important;
  align-content: flex-start;
  transition: background-color .2s, transform .2s;
}
html body .elementor-element-167f40d0 .elementor-widget-wrap:hover{
  background: var(--sage) !important;
  transform: translateY(-3px);
}
html body .elementor-element-167f40d0 .elementor-icon-box-wrapper,
html body .elementor-element-167f40d0 .elementor-icon-box-content{
  text-align: center !important;
}
html body .elementor-element-167f40d0 .elementor-icon-box-icon{
  margin: 0 auto 20px !important;
}
html body .elementor-element-167f40d0 .elementor-icon{
  font-size: 30px !important;
  padding: 16px !important;
  color: var(--o-btn) !important;
  border-color: #D6AD73 !important;
}
html body .elementor-element-167f40d0 .elementor-icon-box-title{
  font-size: 16px !important;
  font-weight: 600 !important;
  line-height: 1.5 !important;
  color: var(--forest) !important;
  margin: 0 !important;
  min-height: 72px;
  display: flex;
  align-items: center;
  justify-content: center;
}

/* Announcements use a legible notice board and intact poster proportions. */
html body [data-elementor-type="wp-page"] > .elementor-element-fe364ed{
  background: var(--sand) !important;
}
html body .elementor-element-fe364ed .elementor-element-5e54384{
  margin-bottom: var(--section-gap) !important;
}
html body .elementor-element-fe364ed .elementor-element-5e54384 > .elementor-widget-container,
html body .elementor-element-230e4c1 > .elementor-widget-container{
  padding: 0 !important;
  margin: 0 !important;
}
html body .elementor-element-13421c4,
html body .elementor-element-13421c4 .elementor-widget-wrap{
  padding: 0 !important;
  margin: 0 !important;
}
html body .elementor-element-7ff9ae3 .eael-advance-tabs{
  box-shadow: none !important;
  border: 1px solid #DDDCCF;
  border-radius: 12px;
  overflow: hidden;
}
html body .elementor-element-7ff9ae3 .eael-tabs-nav li{
  background: var(--forest) !important;
  padding: 18px 24px !important;
  color: #fff !important;
  font-size: 17px !important;
}
html body .elementor-element-7ff9ae3 .eael-tabs-nav li::after{ display: none !important; }
html body .elementor-element-7ff9ae3 .eael-tabs-content,
html body .elementor-element-7ff9ae3 .eael-tab-content-item{
  background: #fff !important;
}
html body .elementor-element-7ff9ae3 .eael-tab-content-item{
  padding: clamp(20px, 3vw, 36px) !important;
}
html body .news-container ul{
  gap: 24px;
}
html body .news-container li + li{
  padding-top: 24px;
  border-top: 1px solid #E4E9E4;
}
html body .news-container li > div{
  padding: 0 !important;
}
html body .newsscroller_title,
html body .newsscroller_title a{
  font-size: 16px !important;
  line-height: 1.6 !important;
  letter-spacing: normal !important;
  font-weight: 600 !important;
  color: var(--forest) !important;
  text-decoration: none !important;
}
html body .scrollercontent,
html body .scrollercontent a{
  font-size: 15px !important;
  line-height: 1.75 !important;
  letter-spacing: normal !important;
}
html body .scrollercontent{ margin-top: 8px; }
html body .elementor-element-230e4c1{
  margin-top: var(--section-gap) !important;
}
/* The announcement posters carry all their information as image text, so
   they are shown as large as the two-up carousel allows. `width: auto`
   means the height cap sets the size; the slide is wider than the poster,
   so the figure has to centre it or it sits flush left with a gap beside. */
html body .elementor-element-230e4c1 .swiper-slide-image{
  width: auto !important;
  max-height: 640px;
  object-fit: contain !important;
  border: 1px solid #DDDCCF !important;
  margin-inline: auto !important;   /* display:block, so auto margins, not text-align */
}
html body .elementor-element-230e4c1 .swiper-slide-inner,
html body .elementor-element-230e4c1 .swiper-slide{ text-align: center; }

/* Participation cards: centre the entire content stack and align actions. */
html body [data-elementor-type="wp-page"] > .elementor-element-2a24f3e0{
  background: var(--sage) !important;
}
html body .elementor-element-70c14596{
  padding: 0 !important;
  margin-top: var(--section-gap) !important;
}
html body .elementor-element-70c14596 > .elementor-container{
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 24px;
}
html body .elementor-element-70c14596 > .elementor-container > .elementor-column{
  width: auto !important;
}
html body .elementor-element-70c14596 .elementor-widget-wrap{
  margin: 0 !important;
  padding: 0 !important;
  border: 0 !important;
  box-shadow: none !important;
}
html body .elementor-element-70c14596 > .elementor-container > .elementor-column > .elementor-widget-wrap{
  padding: 32px 26px !important;
  border: 1px solid #DCE5DF !important;
  border-radius: 12px !important;
}
html body .elementor-element-70c14596 .elementor-widget,
html body .elementor-element-70c14596 .elementor-widget-text-editor p{
  text-align: center !important;
}
html body .elementor-element-70c14596 .elementor-widget-container{
  margin: 0 auto !important;
}
html body .elementor-element-70c14596 h2.elementor-heading-title{
  font-size: 23px !important;
  margin-bottom: 0 !important;
}
html body .elementor-element-70c14596 .elementor-widget-button{
  margin-top: auto;
}
html body .elementor-element-70c14596 .elementor-icon{
  font-size: 44px !important;
  color: var(--o-btn) !important;
}
html body .elementor-element-70c14596 .elementor-inner-section,
html body .elementor-element-70c14596 .elementor-inner-section > .elementor-container,
html body .elementor-element-70c14596 .elementor-inner-section .elementor-widget-wrap{
  height: 100%;
}

/* About and contact pairs share their heading's ground and spacing. */
html body [data-elementor-type="wp-page"] > :is(.elementor-element-951025a, .elementor-element-1db3e13f){
  background: var(--sand) !important;
}
html body .elementor-element-1db3e13f > .elementor-container{
  align-items: center;
  gap: 40px;
}
html body .elementor-element-1db3e13f > .elementor-container > .elementor-column{
  width: calc((100% - 40px) / 2);
}
html body .elementor-element-1db3e13f > .elementor-container > .elementor-column > .elementor-widget-wrap{
  padding: 0 !important;
}
html body .elementor-element-17500eae > .elementor-widget-wrap{
  background: var(--forest) !important;
  border-radius: 12px !important;
  margin-inline: 20px !important;
}
html body .elementor-element-32a07b5f .elementor-counter-number-wrapper{
  font-size: 34px !important;
  color: #fff !important;
}
html body .elementor-element-32a07b5f .elementor-counter-title{
  font-size: 12px !important;
  color: #fff !important;
}
html body .elementor-element-32a07b5f .elementor-column{ width: 33.333% !important; }
html body .elementor-element-51ac00c3 > .elementor-widget-container{ padding-top: 8px !important; }
html body [data-elementor-type="wp-page"] > .elementor-element-1c1e6e6c{ background: #fff !important; }
html body .elementor-element-54a36198 > .elementor-container{ gap: 24px; }
html body .elementor-element-54a36198 > .elementor-container > .elementor-column{ width: calc((100% - 48px) / 3); }
html body .elementor-element-54a36198 > .elementor-container > .elementor-column > .elementor-widget-wrap{
  margin: 0 !important;
  padding: 28px !important;
  border-radius: 12px !important;
  text-align: center;
}
html body .elementor-element-54a36198 .elementor-heading-title{
  font-size: 21px !important;
  color: #fff !important;
  text-align: center !important;
}
html body .elementor-element-54a36198 .elementor-widget-text-editor,
html body .elementor-element-54a36198 .elementor-widget-text-editor p,
html body .elementor-element-54a36198 .elementor-icon-list-items{
  color: #fff !important;
  text-align: center !important;
  justify-content: center;
}
html body .elementor-element-54a36198 .elementor-toggle-title{ color: #FFD396 !important; }
html body [data-elementor-type="wp-page"] > .elementor-element-f07b934{
  background: var(--sand) !important;
}
html body .elementor-element-f07b934 > .elementor-container{ align-items: center; }
html body .elementor-element-f07b934 h2.elementor-heading-title{ font-size: 24px !important; margin: 0 !important; }
/* The KMS enquiries button, a step up from the default. !important is needed:
   the base button rule and the mobile .elementor-size-sm rule both use it. */
html body .elementor-element-724d81d .elementor-button{
  font-size: 17px !important;
  padding: 16px 34px !important;
  min-height: 52px;
}
html body [data-elementor-type="wp-page"] > :is(.elementor-element-d6dcbfa, .elementor-element-a0jhwsk){
  background: var(--sand) !important;
}
html body .elementor-element-a0jhwsk > .elementor-container{ gap: 32px; }
html body .elementor-element-a0jhwsk .elementor-element-4347efa:has(.ngbm-social-unset):not(:has(.elementor-social-icon:not(.ngbm-social-unset))){ display: none !important; }
html body .elementor-element-a0jhwsk > .elementor-container > :is(.elementor-element-3c600d7, .elementor-element-38f6fe5){ width: calc((100% - 32px) / 2); }
html body .elementor-element-a0jhwsk > .elementor-container > .elementor-column > .elementor-widget-wrap{
  margin: 0 !important;
  padding: 28px !important;
  border-radius: 12px;
}
html body .elementor-element-a0jhwsk .elementor-icon-box-wrapper,
html body .elementor-element-a0jhwsk .elementor-icon-box-description{ text-align: center !important; }
html body .elementor-element-38f6fe5 > .elementor-widget-wrap{ padding: 0 !important; }
html body .elementor-element-38f6fe5 .elementor-widget-google_maps,
html body .elementor-element-38f6fe5 .elementor-widget-container{ height: 100%; }
html body .elementor-element-38f6fe5 iframe{ height: 100% !important; min-height: 360px; border-radius: 12px; }

/* Contact form cards and policy pages get a consistent readable measure. */
html body .ngbm-section:has(.frm_forms) .elementor-icon-box-wrapper,
html body .ngbm-section:has(.frm_forms) .elementor-icon-box-description{ text-align: center !important; }
html body .ngbm-section:has(.frm_forms) .elementor-icon-box-wrapper{ display: block !important; }
html body .ngbm-section:has(.frm_forms) .elementor-icon-box-icon{ margin: 0 auto 12px !important; }
html body :is(.elementor-3, .elementor-3211, .elementor-3628) > .ngbm-section > .elementor-container{ max-width: 880px !important; }
html body :is(.elementor-3, .elementor-3211, .elementor-3628) .elementor-widget-container{ margin: 0 !important; padding: 0 !important; }
html body :is(.elementor-3, .elementor-3211, .elementor-3628) .elementor-widget-text-editor p{ max-width: none; }

/* Header: aligned to the page grid, a quiet utility strip and clear nav. */
html body #masthead .elementor-element-4917fca{ background: var(--sage) !important; }
html body #masthead .elementor-element-4917fca .elementor-widget-wrap{ padding-block: 8px !important; }
html body #masthead .elementor-element-4917fca .elementor-icon-list-text{ font-size: 12px !important; }
html body #masthead .elementor-element-d93159d{
  padding: 14px var(--page-gutter) !important;
}
html body #masthead .elementor-element-d93159d > .elementor-container{
  display: grid;
  grid-template-columns: 80px minmax(0, 1fr) auto;
  gap: 24px;
  align-items: center;
}
html body #masthead .elementor-element-d93159d .elementor-column{ width: auto !important; }
html body #masthead .elementor-element-d93159d .elementor-widget-wrap{
  padding: 0 !important;
  align-content: center;
}
html body #masthead .elementor-element-f975485 > .elementor-widget-container{ margin: 0 !important; }
html body #masthead .wpr-nav-menu .wpr-menu-item{
  color: var(--forest) !important;
  font-size: 15px !important;
  font-weight: 500 !important;
}
html body #masthead .wpr-nav-menu .wpr-menu-item:hover,
html body #masthead .wpr-nav-menu .wpr-active-menu-item{ color: var(--o-deep) !important; }
html body #masthead .wpr-pointer-underline .wpr-menu-item::after{ background: var(--o-btn) !important; }
html body #masthead .elementor-button{ border: 0 !important; font-size: 14px !important; }

/* Footer: forest green, warm accent labels and three aligned columns. */
html body #colophon{
  background: var(--forest) !important;
  border-top: 5px solid #D5A65F;
  padding-top: var(--section-space) !important;
}
html body #colophon .elementor-element-b32f231{
  margin: 0 !important;
  padding-inline: var(--page-gutter) !important;
}
html body #colophon .elementor-element-b32f231 > .elementor-container{
  display: grid;
  grid-template-columns: 1.4fr .75fr 1.1fr;
  gap: clamp(28px, 4vw, 64px);
}
html body #colophon .elementor-column{
  width: auto !important;
  padding: 0 !important;
  margin: 0 !important;
}
html body #colophon .elementor-widget-wrap,
html body #colophon .elementor-widget-container{
  margin: 0 !important;
  padding: 0 !important;
}
html body #colophon .elementor-widget{ margin-bottom: 20px !important; }
html body #colophon .elementor-widget:last-child{ margin-bottom: 0 !important; }
html body #colophon h2.elementor-heading-title{
  color: #FFD396 !important;
  font-size: 13px !important;
  letter-spacing: .09em !important;
  margin: 0 !important;
}
html body #colophon .elementor-element-e6ad878 h2.elementor-heading-title{
  color: #fff !important;
  font-size: 21px !important;
  line-height: 1.45 !important;
  text-transform: capitalize !important;
  letter-spacing: -.015em !important;
}
html body #colophon .elementor-element-9d02b7a h4.elementor-heading-title{
  color: #D2E1D8 !important;
  font-size: 14px !important;
  line-height: 1.8 !important;
}
html body #colophon a,
html body #colophon .hfe-nav-menu a.hfe-menu-item,
html body #colophon .elementor-icon-box-title,
html body #colophon .elementor-icon-box-title *{
  color: #EFF5F0 !important;
  font-size: 14px !important;
  font-weight: 400 !important;
  line-height: 1.7 !important;
}
html body #colophon a:hover{ color: #FFD396 !important; text-decoration: underline; }
html body #colophon .hfe-nav-menu{
  display: flex !important;
  flex-direction: column;
  align-items: flex-start;
  gap: 8px;
}
html body #colophon .hfe-nav-menu a.hfe-menu-item{ padding: 4px 0 !important; }
html body #colophon .elementor-icon-box-wrapper{
  display: flex !important;
  align-items: flex-start;
  gap: 14px;
  text-align: left !important;
}
html body #colophon .elementor-icon-box-icon{
  margin: 0 !important;
  flex: 0 0 36px;
}
html body #colophon .elementor-icon-box-icon .elementor-icon{
  display: flex;
  width: 36px;
  height: 36px;
  align-items: center;
  justify-content: center;
  background: #285247;
  border-radius: 50%;
  color: #FFD396 !important;
  font-size: 16px !important;
}
html body #colophon .elementor-icon-box-content{ min-width: 0; }
html body #colophon .elementor-icon-box-title{ margin: 3px 0 0 !important; overflow-wrap: anywhere; }
html body #colophon .elementor-element-be54ba8{
  margin: var(--section-space) 0 0 !important;
  padding: 22px var(--page-gutter) !important;
  background: var(--forest-dark) !important;
  border-top: 1px solid #36594C;
}
html body #colophon .elementor-element-be54ba8 > .elementor-container{
  justify-content: center;
}
html body #colophon .elementor-element-be54ba8 .elementor-column:has(#mvcwid){ display: none !important; }
html body #colophon .elementor-element-be54ba8 .elementor-column:has(.hfe-copyright-wrapper){ width: 100% !important; }
html body #colophon .elementor-element-be54ba8 .hfe-copyright-wrapper,
html body #colophon .elementor-element-be54ba8 .hfe-copyright-wrapper *{
  color: #C9DAD0 !important;
  font-size: 13px !important;
}
html body #colophon a:focus-visible{ outline-color: #FFD396; }

/* Responsive layouts retain space without inflating nested header columns. */
@media (max-width: 1024px){
  html body .ngbm-people-grid > .elementor-container{ grid-template-columns: repeat(2, minmax(0, 1fr)); }
  html body .elementor-element-167f40d0 > .elementor-container{ grid-template-columns: repeat(3, minmax(0, 1fr)); }
  html body .elementor-element-70c14596 > .elementor-container{ gap: 16px; }
  html body .elementor-element-70c14596 > .elementor-container > .elementor-column > .elementor-widget-wrap{ padding: 28px 18px !important; }
  html body #masthead .elementor-element-d93159d > .elementor-container{ grid-template-columns: 60px minmax(0, 1fr) auto; }
  html body #colophon .elementor-element-b32f231 > .elementor-container{ grid-template-columns: 1fr 1fr; }
  html body #colophon .elementor-element-1ed72f8{ grid-column: 1 / -1; }
  html body #colophon .elementor-element-9d02b7a{ max-width: 68ch; }
}
@media (max-width: 767px){
  :root{ --section-space: 48px; --section-gap: 28px; }
  html body .ngbm-people-grid > .elementor-container,
  html body .elementor-element-70c14596 > .elementor-container{ grid-template-columns: minmax(0, 1fr); }
  html body .ngbm-people-grid > .elementor-container{ max-width: 460px !important; }
  html body .elementor-element-167f40d0 > .elementor-container{ grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; }
  html body .elementor-element-167f40d0 .elementor-column:last-child{ grid-column: 1 / -1; }
  html body .elementor-element-167f40d0 .elementor-widget-wrap{ padding: 24px 12px !important; }
  html body .elementor-element-167f40d0 .elementor-icon-box-title{ font-size: 14px !important; min-height: 63px; }
  html body .elementor-element-167f40d0 .elementor-column:last-child .elementor-icon-box-title{ min-height: 0; }
  html body .elementor-element-4088a9f .sina-fancytext{ min-height: 84px; }
  html body .elementor-element-3b77284 > .elementor-container{ flex-wrap: nowrap; gap: 12px; }
  html body .elementor-element-3b77284 .elementor-button{ font-size: 14px !important; padding: 13px 18px !important; }
  html body .elementor-element-4088a9f .elementor-element-3b77284{ top: calc(-1 * var(--section-space) - 76px); }
  html body .elementor-element-777dace > .elementor-widget-container{ margin-inline: 0 !important; }
  html body .elementor-element-1db3e13f > .elementor-container{ gap: 32px; }
  html body .elementor-element-1db3e13f > .elementor-container > .elementor-column,
  html body .elementor-element-54a36198 > .elementor-container > .elementor-column,
  html body .elementor-element-a0jhwsk > .elementor-container > .elementor-column{ width: 100% !important; }
  html body .elementor-element-54a36198 > .elementor-container{ flex-direction: column; }
  html body .elementor-element-17500eae > .elementor-widget-wrap{ margin-inline: 12px !important; }
  html body .elementor-element-32a07b5f .elementor-container{ flex-wrap: nowrap; }
  html body .elementor-element-32a07b5f .elementor-counter-number-wrapper{ font-size: 26px !important; }
  html body .elementor-element-32a07b5f .elementor-counter-title{ font-size: 10px !important; }
  html body .elementor-element-f07b934 .elementor-column{ width: 100% !important; }
  html body .elementor-element-f07b934 .elementor-widget-button{ text-align: center; margin-top: 20px; }
  /* The language switcher is a Royal dual-button, right-aligned by the widget
     itself. At phone widths the pair nearly fills the row, so that reads as
     53px off-centre rather than as a deliberate top-right switcher. Centre it
     on phones only; wider screens keep the intended right alignment. */
  html body .ngbm-language-band .wpr-dual-button{ justify-content: center !important; }
  html body #masthead .elementor-element-d93159d{ padding-block: 12px !important; }
  html body #masthead .elementor-element-d93159d > .elementor-container{ gap: 14px; grid-template-columns: 48px minmax(0, 1fr) auto; }
  html body #colophon .elementor-element-b32f231 > .elementor-container{ grid-template-columns: minmax(0, 1fr); gap: 36px; }
  html body #colophon .elementor-element-1ed72f8{ grid-column: auto; }
}

/* Measured corrections after the first rendered review. */
html body #colophon .elementor-element-b32f231 > .elementor-container > .elementor-column{
  width: 100% !important;
  min-width: 0;
}
html body .elementor-element-167f40d0 .elementor-icon-box-title a,
html body .ngbm-section .sina-title-subtitle a{
  font-size: inherit !important;
  font-weight: inherit !important;
  line-height: inherit !important;
}
html body .ngbm-person-card .elementor-inner-section,
html body .ngbm-person-card img{
  border: 0 !important;
  box-shadow: none !important;
}
html body .ngbm-person-card img{ outline: 3px solid #EBD7B8; outline-offset: 2px; }
html body .ngbm-person-card > .elementor-widget-wrap::before{
  height: 148px !important;
  margin: 0 0 22px !important;
  background-size: 148px 148px !important;
  background-position: center !important;
}
html body .ngbm-person-card > .elementor-widget-wrap > .elementor-inner-section:not(:has(img)){
  display: none;
}
html body .ngbm-section .ngbm-framed-layout,
html body .ngbm-section .ngbm-framed-layout > .elementor-widget-wrap{
  box-shadow: none !important;
  border: 0 !important;
}
html body .ngbm-section.ngbm-prose-band > .elementor-container{
  max-width: 1000px !important;
}
html body .ngbm-prose-band .elementor-widget-text-editor > .elementor-widget-container{
  margin: 24px auto 0 !important;
  padding: 0 !important;
  max-width: 72ch;
}
html body .ngbm-prose-band .elementor-widget-text-editor p{
  max-width: none;
}
html body .ngbm-prose-band .elementor-widget-image{ margin-block: 24px 32px; }
html body .ngbm-prose-band .elementor-widget-wrap{
  background-image: none !important;
  box-shadow: none !important;
}
html body .ngbm-section .ngbm-photo-surface .elementor-heading-title,
html body .ngbm-section .ngbm-photo-surface .elementor-widget-text-editor,
html body .ngbm-section .ngbm-photo-surface .elementor-widget-text-editor p{
  color: #fff !important;
}
html body .ngbm-map-link{
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 12px;
  padding: 18px 20px;
  min-height: 48px;
  color: var(--forest) !important;
  background: var(--sage);
  border: 1px solid #D4DFD8;
  border-radius: 0 0 10px 10px;
  font-size: 14px;
  font-weight: 600;
  text-align: center;
}
html body .elementor-widget-google_maps iframe{ background: var(--sage); border-radius: 10px 10px 0 0; }
html body .elementor-element-38f6fe5 .elementor-widget-container{ display: flex; flex-direction: column; }
html body .elementor-element-38f6fe5 iframe{ flex: 1; min-height: 320px; }
html body .elementor-element-38f6fe5 .ngbm-map-link{ flex-shrink: 0; }
@media (max-width: 767px){
  html body .elementor-element-32a07b5f .elementor-counter-title{ font-size: 12px !important; }
}

/* Final alignment pass: nested imported margins and word spacing. */
html body .elementor-element-3b77284 .elementor-widget-wrap{
  margin: 0 !important;
}
html body .elementor-element-167f40d0 .elementor-icon-box-wrapper{ gap: 0 !important; }
html body .newsscroller_title,
html body .newsscroller_title *,
html body .scrollercontent,
html body .scrollercontent *{ word-spacing: normal !important; }
html body .newsscroller_title a,
html body .scrollercontent a{ display: inline-block; min-height: 24px; }
html body .elementor-element-167f40d0 .elementor-icon-box-title a{ min-height: 24px; }

/* A compact contact grid balances the map beside it. */
html body .elementor-element-3c600d7 > .elementor-widget-wrap{
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 28px 20px;
  align-content: center;
}
html body .elementor-element-3c600d7 .elementor-widget-heading,
html body .elementor-element-3c600d7 .elementor-widget-divider{ display: none; }
html body .elementor-element-3c600d7 .elementor-widget-icon-box{ margin: 0 !important; }
html body .elementor-element-3c600d7 .elementor-widget-container{ margin: 0 !important; }
html body .elementor-element-3c600d7 .elementor-icon-box-wrapper{ display: block !important; }
html body .elementor-element-3c600d7 .elementor-icon-box-icon{ margin: 0 auto 14px !important; }
html body .elementor-element-3c600d7 .elementor-icon{
  color: var(--o-deep) !important;
  background: var(--sand) !important;
  font-size: 24px !important;
  padding: 14px !important;
}
html body .elementor-element-3c600d7 .elementor-icon-box-title{ font-size: 16px !important; margin-bottom: 8px !important; }
html body .elementor-element-3c600d7 .elementor-icon-box-description{
  font-size: 14px !important;
  line-height: 1.7 !important;
  overflow-wrap: anywhere;
}
html body .elementor-element-a0jhwsk > .elementor-container > .elementor-element-38f6fe5 > .elementor-widget-wrap{ padding: 0 !important; }

/* Signup forms are the primary action, so they use one centred column. */
html body :is(.elementor-86, .elementor-3022) .ngbm-section:has(.frm_forms) > .elementor-container{
  max-width: 800px !important;
  flex-direction: column;
  gap: 28px;
}
html body :is(.elementor-86, .elementor-3022) .ngbm-section:has(.frm_forms) > .elementor-container > .elementor-column{
  width: 100% !important;
}
html body :is(.elementor-86, .elementor-3022) .ngbm-section:has(.frm_forms) .elementor-widget-wrap,
html body :is(.elementor-86, .elementor-3022) .ngbm-section:has(.frm_forms) .elementor-widget-container{
  margin: 0 !important;
  padding: 0 !important;
}
html body :is(.elementor-86, .elementor-3022) .ngbm-section:has(.frm_forms) .sina-title{ text-align: center !important; }
html body :is(.elementor-3, .elementor-3211, .elementor-3628) .elementor-widget-text-editor > .elementor-widget-container{
  border: 0 !important;
  box-shadow: none !important;
  border-radius: 0 !important;
}
html body :is(.elementor-3, .elementor-3211, .elementor-3628) .elementor-widget-text-editor h2{
  margin: 32px 0 14px;
  font-size: 24px;
}
html body .elementor-element-692a93c > .elementor-container{
  max-width: 640px !important;
  min-height: 360px;
}
html body .elementor-element-692a93c .elementor-widget-wrap{ align-content: center; }
html body .elementor-element-692a93c .elementor-widget-container{ margin: 0 !important; }
@media (max-width: 767px){
  html body .elementor-element-167f40d0 .elementor-icon-box-title{ min-height: 84px; }
  html body .elementor-element-3c600d7 > .elementor-widget-wrap{ grid-template-columns: minmax(0, 1fr); }
  html body .elementor-element-692a93c > .elementor-container{ min-height: 240px; }
}

/* Keep the same navigation palette and all policy links on small screens. */
html body #masthead .wpr-mobile-nav-menu{
  background: #fff !important;
  border-bottom: 1px solid #D4DFD8;
  box-shadow: 0 12px 24px rgba(16, 48, 41, .12);
}
html body #masthead .wpr-mobile-nav-menu a{
  color: var(--forest) !important;
  font-size: 16px !important;
  font-weight: 500 !important;
  background: #fff !important;
}
html body #masthead .wpr-mobile-nav-menu a:hover,
html body #masthead .wpr-mobile-nav-menu a.wpr-active-menu-item{
  background: var(--sage) !important;
  color: var(--forest-dark) !important;
}
html body #masthead .wpr-mobile-toggle{
  min-width: 44px;
  min-height: 44px;
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
}
html body #colophon .elementor-element-1128e4f{ display: block !important; }
html body #colophon .hfe-nav-menu__toggle{ display: none !important; }
html body #colophon .elementor-element-5cbfa18 nav{
  height: auto !important;
  visibility: visible !important;
  opacity: 1 !important;
  background: transparent !important;
}
@media (min-width: 1025px){
  html body #masthead .wpr-mobile-toggle{ display: none; }
}

html body .elementor-element-3c600d7 .elementor-icon-box-title a{ display: inline-block; min-height: 24px; }
html body [data-elementor-type="wp-page"] .elementor-element-692a93c > .elementor-container{
  max-width: 640px !important;
}
html body .elementor-2958 > .ngbm-section:nth-of-type(even){ background: var(--sand) !important; }
html body .elementor-2958 .elementor-divider-separator{
  border-top: 1px solid #D4DFD8 !important;
  width: 80px !important;
}
/* The two school founders remain a balanced pair at every width. */
html body :is(.elementor-element-ee13c90, .elementor-element-2ec17d8) > .elementor-container{
  display: flex;
  flex-wrap: nowrap;
  justify-content: center;
  gap: 24px;
}
html body :is(.elementor-element-ee13c90, .elementor-element-2ec17d8) .elementor-column{ width: auto !important; }
html body :is(.elementor-element-ee13c90, .elementor-element-2ec17d8) .elementor-widget-wrap,
html body :is(.elementor-element-ee13c90, .elementor-element-2ec17d8) .elementor-widget-container{ padding: 0 !important; margin: 0 !important; }
html body :is(.elementor-element-ee13c90, .elementor-element-2ec17d8) img{
  width: clamp(110px, 12vw, 148px) !important;
  height: clamp(110px, 12vw, 148px) !important;
  object-fit: cover;
}
html body .ngbm-language-band :is(.wpr-button-a, .wpr-button-b){
  min-height: 40px;
  padding: 8px 22px !important;
  border-radius: 6px !important;
}
html body .ngbm-language-band .wpr-dual-button span[aria-current]{ background-color: var(--forest) !important; }

html body #colophon .elementor-element-b32f231 > .elementor-container{
  max-width: var(--container) !important;
  margin-inline: auto;
}
html body #colophon .hfe-nav-menu li,
html body #colophon .hfe-nav-menu a.hfe-menu-item{
  background: transparent !important;
}
html body #colophon .elementor-icon-box-wrapper{ flex-direction: row !important; }
html body .elementor-element-3c600d7 > .elementor-widget-wrap{ display: grid !important; }
html body .elementor-element-54a36198 .sina-title .sina-title-title{ color: #3C250C !important; }

/* 32. Quiet card entrances and balanced date / donation details.
   Override Elementor's delayed roll/rotation even before its waypoints run.
   The optional one-time fade is progressive enhancement in PHP section 13. */
html body .ngbm-person-card,
html body .elementor-element-54a36198 > .elementor-container > .elementor-column{
  animation: none !important;
  transform: none !important;
  visibility: visible !important;
}

/* The original date rows contain a blank left column as a spacer. */
html body :is(.elementor-element-3873df22, .elementor-element-2cc4f881, .elementor-element-6495ec2){
  display: none !important;
}
html body :is(.elementor-element-6b2a18d1, .elementor-element-41098437, .elementor-element-9d4f855) > .elementor-container{
  justify-content: center;
}
html body :is(.elementor-element-15e120c7, .elementor-element-bd06bf4, .elementor-element-94aa4ed){
  width: 96px !important;
  flex: 0 0 96px;
}
html body :is(.elementor-element-15e120c7, .elementor-element-bd06bf4, .elementor-element-94aa4ed) > .elementor-widget-wrap{
  margin: 0 0 12px !important;
  padding: 12px !important;
}

.ngbm-card--bank{ text-align: center; }
.ngbm-card--bank .ngbm-card__lead{ margin-inline: auto; }
.ngbm-card--bank .ngbm-dl > div{
  grid-template-columns: 1fr;
  gap: 6px;
  justify-items: center;
}
.ngbm-card--bank .ngbm-dl :is(dt, dd){ text-align: center; }
.ngbm-card--bank .ngbm-aside{
  border-left: 0;
  border-top: 3px solid var(--ngbm-orange);
  text-align: center;
}

/* 33. Shared photo reels. Uniform 5:4 frames apply only to photographs;
   original image proportions remain available in the lightbox. */
.ngbm-photo-reel{ --reel-gap: 24px; --reel-width: calc((100% - 48px) / 3); }
.ngbm-photo-reel__viewport{
  overflow-x: auto;
  overflow-y: hidden;
  scrollbar-width: none;
  overscroll-behavior-x: contain;
  border-radius: 18px;
}
.ngbm-photo-reel__viewport::-webkit-scrollbar{ display: none; }
.ngbm-photo-reel__track{ display: flex; gap: var(--reel-gap); position: relative; }
.ngbm-photo-reel__photo{
  display: block;
  flex: 0 0 var(--reel-width);
  min-width: 0;
  aspect-ratio: 5 / 4;
  border-radius: 18px;
  overflow: hidden;
  background: #E5EBE6;
}
html body .ngbm-photo-reel__photo img{
  display: block;
  width: 100%;
  height: 100%;
  aspect-ratio: 5 / 4;
  object-fit: cover;
  object-position: center 20%;
  border-radius: inherit;
}
.ngbm-photo-reel__controls{ display: flex; align-items: center; justify-content: center; gap: 12px; margin-top: 24px; }
.ngbm-photo-reel__controls[hidden]{ display: none; }
html body .ngbm-photo-reel__controls button{
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 46px;
  min-height: 46px;
  padding: 10px 16px;
  border: 1px solid #C6D4CA;
  border-radius: 24px;
  background: #fff;
  color: #173F35;
  font: 500 14px/1.4 Poppins, sans-serif;
  cursor: pointer;
}
html body .ngbm-photo-reel__controls button:hover{ background: #EDF3EF; border-color: #173F35; }
.ngbm-photo-reel :focus-visible{ outline: 3px solid #B85C00; outline-offset: -3px; }
@media(max-width: 1024px){ .ngbm-photo-reel{ --reel-width: calc((100% - 24px) / 2); } }
@media(max-width: 767px){
  .ngbm-photo-reel{ --reel-gap: 16px; --reel-width: 86%; }
  .ngbm-photo-reel__photo, .ngbm-photo-reel__viewport{ border-radius: 14px; }
}

/* 34. Opaque, consistent submenu states and the final page polish. */
html body #masthead .wpr-nav-menu .wpr-sub-menu{
  background: #fff !important;
  opacity: 1 !important;
  border: 1px solid #D4DFD8 !important;
  border-radius: 12px;
  padding: 6px;
  min-width: 240px;
  box-shadow: 0 12px 28px rgba(16, 48, 41, .14);
}
html body #masthead .wpr-sub-menu .wpr-sub-menu-item,
html body #masthead .wpr-mobile-sub-menu .wpr-mobile-sub-menu-item{
  background: #fff !important;
  color: #173F35 !important;
  border-radius: 6px;
  min-height: 44px;
  font-weight: 500 !important;
  transition: background-color .15s ease, color .15s ease;
}
html body #masthead .wpr-sub-menu .wpr-sub-menu-item:is(:hover, :focus-visible, :active),
html body #masthead .wpr-mobile-nav-menu .wpr-mobile-sub-menu-item:is(:hover, :focus-visible, :active){
  background: #EDF3EF !important;
  color: #103029 !important;
}
html body #masthead :is(.wpr-sub-menu .wpr-sub-menu-item, .wpr-mobile-nav-menu .wpr-mobile-sub-menu-item):is(.wpr-active-menu-item, [aria-current="page"]){
  background: #173F35 !important;
  color: #fff !important;
  box-shadow: inset 3px 0 #D5A65F;
}
html body #masthead :is(.wpr-nav-menu, .wpr-mobile-nav-menu) a:focus-visible{
  outline: 2px solid #B85C00;
  outline-offset: -3px;
}

html body .elementor-3275 .elementor-element-dacfd36 .sina-title-title{
  font-size: clamp(22px, 2.2vw, 28px) !important;
  line-height: 1.35 !important;
  font-weight: 600 !important;
  letter-spacing: normal !important;
  color: #173F35 !important;
}
.ngbm-blog-empty{ max-width: 640px; margin: 32px auto 0; text-align: center; }
.ngbm-blog-empty p{ margin: 0 0 24px; }
.ngbm-blog-empty__links{ display: flex; flex-wrap: wrap; justify-content: center; gap: 12px; }
html body .elementor-element-4642278{
  margin-top: clamp(40px, 5vw, 64px) !important;
  padding-top: clamp(32px, 3vw, 48px) !important;
  border-top: 1px solid #D4DFD8;
}
html body .elementor-element-14518cf .elementor-icon-box-title,
html body .elementor-element-14518cf .elementor-icon-box-title span{
  font-size: 20px !important;
  font-weight: 600 !important;
  color: #173F35 !important;
}
html body .elementor-element-14518cf .elementor-icon-box-description a{
  display: inline-flex;
  align-items: center;
  min-height: 44px;
  color: #8A4400;
  text-decoration: underline;
  text-underline-offset: 4px;
  overflow-wrap: anywhere;
  max-width: 100%;
}
html body #masthead .wpr-mobile-nav-menu .menu-item-has-children{ position: relative; }
html body #masthead .wpr-mobile-nav-menu .menu-item-has-children > a{ padding-inline: 60px !important; }
html body #masthead .wpr-mobile-nav-menu .ngbm-submenu-toggle{
  position: absolute;
  right: 12px;
  top: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 44px;
  height: 44px;
  padding: 0;
  border: 0;
  border-radius: 6px;
  background: #EDF3EF;
  color: #173F35;
  font: 500 24px/1 Poppins, sans-serif;
  cursor: pointer;
}
html body #masthead .ngbm-submenu-toggle:focus-visible{ outline: 2px solid #B85C00; outline-offset: -3px; }
html body #masthead .ngbm-submenu-open > .wpr-mobile-sub-menu{ display: block !important; }

/* 35. Royal's media-grid slider dots centre themselves with
   `left: 50%; transform: translate(-50%, -50%)`. That only works if the box
   has a width to take 50% of, and this one computes to 0x0 — an absolutely
   positioned table wrapping a floated list. So the translate resolves to
   translate(0, 0), the dots start at the container's midpoint and run right:
   64px off-centre on desktop, 131px at 390px, where the last dot lands 68px
   past the viewport and is clipped away by the body's overflow-x.

   Span the container instead and centre with flex, which needs no width.
   `transform: none` is safe in both axes: the -50% it replaces was already
   resolving to 0, so nothing moves vertically. */
html body .wpr-grid-slider-dots{
  left: 0 !important;
  right: 0 !important;
  width: 100% !important;
  transform: none !important;
  display: flex !important;
  justify-content: center !important;
}
html body .wpr-grid-slider-dots .slick-dots{
  width: auto !important;   /* slick writes an inline pixel width */
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
}
html body .wpr-grid-slider-dots .slick-dots li{ float: none !important; }
