/* =============================================================
   WP-ONLY LAYOUT OVERRIDES  (NOT part of the shared static css/)
   Re-asserts the layout declarations that Elementor's atomic base
   stylesheet (.e-flexbox-base / .e-div-block-base, loaded after our
   central CSS) overrides at equal specificity. Doubling the class
   selector (0,2,0) beats Elementor's single class (0,1,0) regardless
   of cascade order, so the centralized layout wins on native widgets.
   Skin/typography/colors are already inherited from global.css+blog.css.
   ============================================================= */

/* ---- Post card ---- */
.post-card.post-card { display: flex; flex-direction: column; padding: 0; overflow: hidden; }
.post-card__img-wrap.post-card__img-wrap { position: relative; overflow: hidden; display: block; aspect-ratio: 3 / 2; }
.post-card__img-wrap.post-card__img-wrap > * { position: absolute; inset: 0; width: 100%; height: 100%; }
.post-card__body.post-card__body { display: flex; flex-direction: column; flex: 1; }
.post-card__meta.post-card__meta { display: flex; flex-direction: row; align-items: center; }
.post-card__footer.post-card__footer { display: flex; flex-direction: row; align-items: center; justify-content: space-between; }
.post-card__read-link.post-card__read-link { display: inline-flex; flex-direction: row; align-items: center; }

/* e-image renders <img>; keep the cover-fill behavior the static card uses */
.post-card__img-wrap.post-card__img-wrap img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.post-card__img-wrap.post-card__img-wrap :is(figure,a,span) { display: block; position: absolute; inset: 0; margin: 0; }

/* ---- Featured card ---- */
.blog-featured__card.blog-featured__card { display: grid; padding: 0; overflow: hidden; }
@media (min-width: 768px) { .blog-featured__card.blog-featured__card { grid-template-columns: 1fr 1fr; } }
.blog-featured__body.blog-featured__body { display: flex; flex-direction: column; justify-content: center; }
.blog-featured__meta.blog-featured__meta { display: flex; flex-direction: row; align-items: center; }
.blog-featured__author.blog-featured__author { display: flex; flex-direction: row; align-items: center; }
.blog-featured__author-avatar.blog-featured__author-avatar { display: flex; align-items: center; justify-content: center; flex-shrink: 0; }
.blog-featured__author-info.blog-featured__author-info { display: flex; flex-direction: column; }
.blog-featured__img-wrap.blog-featured__img-wrap { position: relative; overflow: hidden; }
.blog-featured__img-wrap.blog-featured__img-wrap > * { position: absolute; inset: 0; width: 100%; height: 100%; }
.blog-featured__img-wrap.blog-featured__img-wrap img { object-fit: cover; }
@media (max-width: 767px) { .blog-featured__img-wrap.blog-featured__img-wrap { aspect-ratio: 3 / 2; } }

/* ---- Blog grid fallback (when not using a loop-grid's own columns) ---- */
.blog-grid__list.blog-grid__list { display: grid; }
@media (min-width: 600px) { .blog-grid__list.blog-grid__list { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 960px) { .blog-grid__list.blog-grid__list { grid-template-columns: repeat(3, 1fr); } }

/* ---- Filter / pagination rows ---- */
.blog-filter__inner.blog-filter__inner { display: flex; flex-direction: row; align-items: center; flex-wrap: wrap; }
.blog-pagination__inner.blog-pagination__inner { display: flex; flex-direction: row; align-items: center; justify-content: center; }

/* ---- Nav / footer (static chrome) ---- */
.nav__inner.nav__inner { display: flex; flex-direction: row; align-items: center; }
.footer-grid.footer-grid { display: grid; }
@media (min-width: 640px) { .footer-grid.footer-grid { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 1024px) { .footer-grid.footer-grid { grid-template-columns: 1.6fr 1fr 1fr 1fr; } }
.footer-links.footer-links { display: flex; flex-direction: column; }
.footer-bottom.footer-bottom { display: flex; flex-direction: row; align-items: center; justify-content: space-between; flex-wrap: wrap; }

/* =============================================================
   BOX MODEL — padding / margin / gap / centering
   ============================================================= */

/* Hero */
.blog-hero.blog-hero { padding: 0 var(--pad-h); }
.blog-hero__content.blog-hero__content { width: 100%; max-width: var(--max-w); margin-left: auto; margin-right: auto; padding: calc(clamp(40px, 5vw, 64px) + 66px) 0 clamp(48px, 6vw, 72px); }
.blog-hero__kicker.blog-hero__kicker { margin-bottom: 16px; }
.blog-hero__h1.blog-hero__h1 { margin-bottom: 16px; }

/* Featured */
.blog-featured.blog-featured { padding: var(--pad-v) var(--pad-h) 0; }
.blog-featured__inner.blog-featured__inner { width: 100%; max-width: var(--max-w); margin-left: auto; margin-right: auto; }
.blog-featured__body.blog-featured__body { padding: 28px 20px; }
@media (min-width: 768px) { .blog-featured__body.blog-featured__body { padding: 32px 28px; } }
@media (min-width: 1024px) { .blog-featured__body.blog-featured__body { padding: 40px; } }
.blog-featured__meta.blog-featured__meta { gap: 12px; margin-bottom: 16px; padding: 0; }
.blog-featured__title.blog-featured__title { margin-bottom: 14px; }
.blog-featured__excerpt.blog-featured__excerpt { margin-bottom: 24px; }
.blog-featured__author.blog-featured__author { gap: 12px; padding: 0; }

/* Filter */
.blog-filter.blog-filter { padding: 48px var(--pad-h) 0; }
.blog-filter__inner.blog-filter__inner { width: 100%; max-width: var(--max-w); margin-left: auto; margin-right: auto; gap: 6px; padding-bottom: 32px; }

/* Grid */
.blog-grid.blog-grid { padding: 48px var(--pad-h) var(--pad-v); }
.blog-grid__inner.blog-grid__inner { width: 100%; max-width: var(--max-w); margin-left: auto; margin-right: auto; }

/* Post card internals */
.post-card__body.post-card__body { padding: 24px; }
.post-card__meta.post-card__meta { gap: 10px; margin-bottom: 12px; padding: 0; }
.post-card__title.post-card__title { margin-bottom: 14px; }
.post-card__excerpt.post-card__excerpt { margin-bottom: 20px; }
.post-card__footer.post-card__footer { padding: 16px 0 0; }
.post-card__read-link.post-card__read-link { gap: 5px; }

/* =============================================================
   CARD ALIGNMENT GUARDRAILS  (title/excerpt clamp + footer bottom)
   ============================================================= */
.post-card__title.post-card__title { display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 3; line-clamp: 3; overflow: hidden; }
.post-card__excerpt.post-card__excerpt { display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 3; line-clamp: 3; overflow: hidden; }
.post-card__footer.post-card__footer { margin-top: auto; }

/* Read link — matches the news read-more: animated underline + sliding arrow.
   The underline is .post-card__read-link::after (blog.css / blog-post.css); the
   arrow moves to the inner link's ::after here (atomic has no inline SVG) so it
   doesn't collide with the underline's ::after. */
.post-card__read-link a::after {
  content: ''; display: inline-block; width: 13px; height: 13px; margin-left: 6px; vertical-align: -1px; flex-shrink: 0;
  background-color: currentColor;
  -webkit-mask: url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20width='14'%20height='14'%20viewBox='0%200%2014%2014'%3E%3Cpath%20d='M1%207h12m0%200L8%202.5M13%207l-5%204.5'%20fill='none'%20stroke='%23000'%20stroke-width='1.5'%20stroke-linecap='round'%20stroke-linejoin='round'/%3E%3C/svg%3E") no-repeat center / contain;
  mask: url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20width='14'%20height='14'%20viewBox='0%200%2014%2014'%3E%3Cpath%20d='M1%207h12m0%200L8%202.5M13%207l-5%204.5'%20fill='none'%20stroke='%23000'%20stroke-width='1.5'%20stroke-linecap='round'%20stroke-linejoin='round'/%3E%3C/svg%3E") no-repeat center / contain;
  transition: transform 180ms var(--ease);
}
.post-card__read-link:hover a::after { transform: translateX(3px); }

/* =============================================================
   LOOP-GRID PAGINATION  (styled like the static .blog-pagination)
   Scoped under .blog-grid__inner for (0,3,0).
   ============================================================= */
.blog-grid__inner .elementor-pagination { display: flex; align-items: center; justify-content: center; gap: 4px; padding-top: 48px; margin-top: var(--pad-v); border-top: 1px solid var(--c-border); }
.blog-grid__inner .elementor-pagination .page-numbers { min-width: 42px; height: 42px; padding: 0 6px; display: inline-flex; align-items: center; justify-content: center; border-radius: 8px; border: 1px solid transparent; font-family: var(--font); font-size: 14px; font-weight: 600; line-height: 1; color: var(--c-text-muted); background: transparent; text-decoration: none; transition: color 0.18s var(--ease), background 0.18s var(--ease), border-color 0.18s var(--ease); }
.blog-grid__inner .elementor-pagination a.page-numbers:hover { color: var(--c-navy); background: rgba(4, 30, 66, 0.04); }
.blog-grid__inner .elementor-pagination .page-numbers.current { color: var(--c-blue); background: rgba(0, 25, 255, 0.06); border-color: rgba(0, 25, 255, 0.15); }
.blog-grid__inner .elementor-pagination .page-numbers.prev, .blog-grid__inner .elementor-pagination .page-numbers.next { color: var(--c-navy); font-size: 17px; }
.blog-grid__inner .elementor-pagination .page-numbers.dots { min-width: 24px; color: var(--c-text-muted); background: transparent; border: 0; }

/* =============================================================
   CTA SECTION  (static, reused on index + single)
   ============================================================= */
.cta-section.cta-section { padding: clamp(100px, 14vw, 160px) var(--pad-h); text-align: center; }
.cta-inner.cta-inner { width: 100%; max-width: 680px; margin-left: auto; margin-right: auto; }
.section-kicker.section-kicker { margin-bottom: 14px; }
.cta-headline.cta-headline { margin-bottom: 18px; }
.cta-body.cta-body { max-width: 48ch; margin-left: auto; margin-right: auto; margin-bottom: 40px; }
.cta-trust.cta-trust { margin-top: 24px; }
.cta-arrow-graphic.cta-arrow-graphic { position: absolute; right: -80px; top: 50%; transform: translateY(-50%); width: min(500px, 42vw); opacity: 0.18; z-index: 1; pointer-events: none; padding: 0; }
.cta-arrow-graphic.cta-arrow-graphic img { width: 100%; height: auto; display: block; }

/* Button pill (.btn) */
.btn.btn { display: inline-flex; align-items: center; justify-content: center; padding: 16px 28px; border-radius: 100px; width: auto; }
.btn--lg.btn--lg { padding: 18px 34px; }
.btn--sm.btn--sm { padding: 10px 18px; }
.btn--primary.btn--primary { background: var(--c-blue); color: #FFFFFF; }

/* =============================================================
   TAXONOMY FILTER  (native Pro widget, styled as .blog-filter__btn)
   Scoped under .blog-filter__inner for (0,3,0). Active = aria-pressed.
   ============================================================= */
.blog-filter__inner .e-filter { display: flex; flex-direction: row; align-items: center; flex-wrap: wrap; gap: 6px; margin: 0; padding: 0; }
.blog-filter__inner .e-filter .e-filter-item { font-family: var(--font); font-size: 13px; font-weight: 600; line-height: 1; padding: 9px 20px; border-radius: 100px; border: 1px solid var(--c-border); background: transparent; color: var(--c-text-muted); cursor: pointer; white-space: nowrap; transition: color 0.18s var(--ease), background 0.18s var(--ease), border-color 0.18s var(--ease); }
.blog-filter__inner .e-filter .e-filter-item:hover { color: var(--c-navy); border-color: rgba(4, 30, 66, 0.25); background: rgba(4, 30, 66, 0.03); }
.blog-filter__inner .e-filter .e-filter-item[aria-pressed="true"], .blog-filter__inner .e-filter .e-filter-item.e-active, .blog-filter__inner .e-filter .e-filter-item[aria-current] { color: var(--c-blue); border-color: var(--c-blue); background: rgba(0, 25, 255, 0.05); }

/* =============================================================
   THEME CHROME SUPPRESSION  (hide UiCore page-title bar)
   ============================================================= */
.uicore-page-title { display: none !important; }

/* =============================================================
   NAV CTA responsive hide (below 900px it lives in the hamburger menu)
   ============================================================= */
@media (max-width: 899px) {
  .nav__cta { display: none !important; }
}

/* =============================================================
   NAV — NATIVE ELEMENTOR BRIDGE
   The header is native atomic widgets. Atomic v4 can't emit ul/li/nav
   tags, can't put a class on the <img>, renders no inline SVG, and its
   base CSS overrides display/flex (containers default to width:100% and
   flex-shrink). These rules re-map the central .nav__menu>li /
   .nav__dropdown a / hamburger span / logo img / mobile accordion rules
   onto the div-based structure (.nav__item, a.nav__link, a.nav__dd-link,
   glyph .nav__chevron, span bars).
   ============================================================= */

/* Header height + content alignment.
   (1) Atomic .e-con injects ~10px padding on EVERY container — including the
   header element itself (.nav) and .nav__inner. That vertical padding inflated
   the header and made it overhang the .mobile-menu top offset (clipped the first
   row "Services"), so keep it at 0.
   (2) The horizontal pad-h must live on the OUTER .nav (the way .blog-hero
   carries it), and .nav__inner must be a max-w centered box with NO inner
   padding — otherwise the header content was 2×pad-h narrower than the hero, so
   the logo/CTA sat indented from the page content edges on desktop. Vertical
   stays 0 (height fix holds); on mobile (viewport < max-w) it renders identical. */
.nav.nav { padding: 0 var(--pad-h); }
.nav__inner.nav__inner { max-width: var(--max-w); margin-left: auto; margin-right: auto; padding: 0; }
.nav__inner.nav__inner > *, .nav__item.nav__item, .nav__link.nav__link, .nav__link.nav__link > *, .nav__cta.nav__cta, .nav__cta.nav__cta > * { flex: 0 0 auto; width: auto; }

/* Desktop menu wrapper (central .nav__menu is display:none, flex >=900) */
.nav__menu.nav__menu { display: none; }
@media (min-width: 900px) { .nav__menu.nav__menu { display: flex; flex-direction: row; align-items: center; gap: 4px; margin-right: 20px; } }

/* Menu item (replaces .nav__menu > li) */
.nav__item.nav__item { position: relative; display: flex; align-items: center; }
.nav__item.nav__item::after { content: ''; position: absolute; top: 100%; left: 0; right: 0; height: 8px; }

/* Top link (replaces .nav__menu > li > a) */
.nav__link.nav__link { display: flex; flex-direction: row; align-items: center; gap: 4px; font-size: 14px; font-weight: 500; color: rgba(240, 246, 252, 0.82); padding: 8px 12px; border-radius: 6px; white-space: nowrap; text-decoration: none; cursor: pointer; transition: color 220ms var(--ease), background 220ms var(--ease); }
.nav__link.nav__link:hover { color: #FFFFFF; background: rgba(255, 255, 255, 0.09); }
.nav__link.nav__link.is-active { color: var(--c-soft-blue); }
.nav.is-scrolled .nav__link.nav__link { color: var(--c-navy); }
.nav.is-scrolled .nav__link.nav__link:hover { color: var(--c-blue); background: rgba(0, 25, 255, 0.05); }

/* Chevron: atomic v4 can't emit inline SVG, so the markup carries a glyph span.
   Hide the glyph and paint the EXACT static-site chevron via a mask-image data
   URI, tinted with currentColor so it follows the nav text color (white →
   navy on scroll). Matches css/global.css .nav__chevron (10x6, 1.5 round stroke). */
.nav__chevron.nav__chevron {
  font-size: 0; line-height: 0; display: inline-block; width: 10px; height: 6px; flex-shrink: 0;
  background-color: currentColor;
  -webkit-mask: url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20width='10'%20height='6'%20viewBox='0%200%2010%206'%3E%3Cpath%20d='M1%201l4%204%204-4'%20fill='none'%20stroke='%23000'%20stroke-width='1.5'%20stroke-linecap='round'%20stroke-linejoin='round'/%3E%3C/svg%3E") no-repeat center / contain;
  mask: url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20width='10'%20height='6'%20viewBox='0%200%2010%206'%3E%3Cpath%20d='M1%201l4%204%204-4'%20fill='none'%20stroke='%23000'%20stroke-width='1.5'%20stroke-linecap='round'%20stroke-linejoin='round'/%3E%3C/svg%3E") no-repeat center / contain;
  opacity: 0.65; transition: transform 220ms var(--ease), opacity 220ms var(--ease);
}
.nav__item.nav__item:hover .nav__chevron { transform: rotate(180deg); opacity: 1; }

/* Dropdown sizing: Elementor gives the atomic container width:100% (= the narrow
   .nav__item), which clips long items like "Customs & Trade Compliance" (short
   lists like Resources happen to fit). Size to the widest item instead. */
.nav__dropdown.nav__dropdown { width: max-content; min-width: 220px; overflow: visible; padding: 6px 0; }

/* Dropdown reveal on hover */
.nav__item.nav__item:hover .nav__dropdown { opacity: 1; visibility: visible; pointer-events: auto; transform: translateX(-50%) translateY(0); }
.nav__item.nav__item:hover .nav__dropdown--right { transform: translateX(0) translateY(0); }

/* Dropdown links (central .nav__dropdown a is display:block) */
.nav__dropdown .nav__dd-link.nav__dd-link { display: block; width: 100%; white-space: nowrap; }

/* Logo: _css_classes lands on the widget wrapper; make the img fill it */
.nav__logo-img .elementor-widget-container, .nav__logo-img img { display: block; height: 100%; width: auto; }
/* Give the logo img an EXPLICIT pixel height (not height:100% of the widget
   wrapper). iOS Safari failed to resolve the % chain through Elementor's
   widget-container and rendered the logo tiny; explicit px + max-width:none
   renders identically on iOS/Android. Matches css/global.css (light 28, dark 32). */
.nav__logo-img--light.nav__logo-img--light img,
.nav__logo-img--light.nav__logo-img--light .elementor-widget-container img { display: block; height: 28px; width: auto; max-width: none; }
.nav__logo-img--dark.nav__logo-img--dark img,
.nav__logo-img--dark.nav__logo-img--dark .elementor-widget-container img { display: block; height: 32px; width: auto; max-width: none; }

/* Hamburger container (central wants column) + desktop hide */
.nav__hamburger.nav__hamburger { display: flex; flex-direction: column; justify-content: center; align-items: stretch; gap: 5px; }
@media (min-width: 900px) { .nav__hamburger.nav__hamburger { display: none; } }

/* Mobile accordion (central .mobile-submenu-wrap is display:grid) */
.mobile-submenu-wrap.mobile-submenu-wrap { display: grid; grid-template-rows: 0fr; }
.mobile-menu__item.is-open .mobile-submenu-wrap.mobile-submenu-wrap { grid-template-rows: 1fr; }
.mobile-submenu.mobile-submenu { display: flex; flex-direction: column; }
.mobile-submenu.mobile-submenu a { display: block; }
.mobile-menu__link.mobile-menu__link, .mobile-submenu-trigger.mobile-submenu-trigger { display: flex; flex-direction: row; align-items: center; justify-content: space-between; }

/* Mobile padding reset. Every atomic .e-con injects a default 10px padding.
   In the accordion chain the collapsed wrap/inner keep that padding OUTSIDE the
   0fr grid track, so items WITH sub-items showed ~40px of dead space (the "weird
   padding"). Zero the Elementor padding and re-assert the central rhythm at
   doubled specificity (0,2,0) so mobile matches the static build. */
.mobile-menu.mobile-menu { padding: 8px 0 56px; }
.mobile-menu__list.mobile-menu__list { padding: 0 var(--pad-h); }
.mobile-menu__item.mobile-menu__item { padding: 0; }
.mobile-menu__link.mobile-menu__link, .mobile-submenu-trigger.mobile-submenu-trigger { padding: 20px 0; }
.mobile-submenu-wrap.mobile-submenu-wrap { padding: 0; }
.mobile-submenu-inner.mobile-submenu-inner { overflow: hidden; min-height: 0; padding: 0; }
.mobile-submenu.mobile-submenu { padding: 4px 0 20px; }
.mobile-submenu.mobile-submenu a { padding: 12px 16px; }

/* Mobile chevron: same mask-image treatment as the desktop one (14x9, 1.8 round
   stroke), tinted with currentColor; central turns it soft-blue when .is-open. */
.mobile-chevron.mobile-chevron {
  font-size: 0; line-height: 0; display: inline-block; width: 14px; height: 9px; flex-shrink: 0;
  background-color: currentColor;
  -webkit-mask: url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20width='14'%20height='9'%20viewBox='0%200%2014%209'%3E%3Cpath%20d='M1%201.5l6%206%206-6'%20fill='none'%20stroke='%23000'%20stroke-width='1.8'%20stroke-linecap='round'%20stroke-linejoin='round'/%3E%3C/svg%3E") no-repeat center / contain;
  mask: url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20width='14'%20height='9'%20viewBox='0%200%2014%209'%3E%3Cpath%20d='M1%201.5l6%206%206-6'%20fill='none'%20stroke='%23000'%20stroke-width='1.8'%20stroke-linecap='round'%20stroke-linejoin='round'/%3E%3C/svg%3E") no-repeat center / contain;
  opacity: 0.45; transition: transform 280ms var(--ease), opacity 220ms var(--ease);
}
.mobile-menu__item.is-open .mobile-chevron.mobile-chevron { transform: rotate(180deg); opacity: 1; }

/* =============================================================
   NAV — MOBILE HEADER HEIGHT + MENU/CTA PROPORTIONS (post-QA #3)
   Match the static prototype's mobile menu (css/global.css) exactly.
   The header is the static 66px (Elementor can't inflate it now that
   .nav padding is 0); the .mobile-menu top is locked to the SAME value
   so there's no overlap. The mobile CTA block + button re-assert the
   central spacing/full-width that Elementor's atomic defaults clobber:
   Resources→button gap (32px, not Elementor's 10px) and a centered,
   near-full-width pill (not the content-hugging default .btn).
   ============================================================= */
@media (max-width: 899px) {
  .nav__inner.nav__inner { height: 66px; min-height: 0; }
  .mobile-menu.mobile-menu { top: 66px; }
}
.mobile-menu__cta.mobile-menu__cta { padding: 32px var(--pad-h) 0; }
.mobile-menu__cta .btn.btn { width: 100%; justify-content: center; padding: 18px 28px; }

/* =============================================================
   FOOTER — NATIVE ELEMENTOR BRIDGE (Theme Builder footer id 340)
   Native atomic rebuild of the static footer using the central
   .footer-* classes. Same model as the NAV bridge: skin (bg / type /
   color / the separator border) wins from global.css; the box-model
   (padding / gap / grid / width) is re-asserted here because Elementor's
   atomic base clobbers it. Col 1 = logo + newsletter (WPForms 337);
   cols 2-4 = Services / Company / Resources. The thin bottom separator
   is the central .footer-grid border-bottom (matches blog.html).
   ============================================================= */
/* Root section padding + kill the atomic 10px padding on footer containers */
.footer.footer { padding: 72px var(--pad-h) 40px; }
.footer-grid.footer-grid > *, .footer-newsletter.footer-newsletter,
.footer-bottom.footer-bottom, .footer-legal.footer-legal { padding: 0; }

/* Grid: gap + the separator line + spacing that Elementor drops */
.footer-grid.footer-grid { gap: 40px 32px; padding-bottom: 56px; margin-bottom: 32px; border-bottom: 1px solid var(--c-border); }

/* Logo (v3 image: _css_classes lands on the widget wrapper) */
.footer-logo-img .elementor-widget-container { display: block; }
.footer-logo-img img { display: block; height: 40px; width: auto; max-width: none; margin: 0; }

/* Column label + newsletter heading */
.footer-col-label.footer-col-label { margin: 0 0 18px; }
.footer-newsletter-label.footer-newsletter-label { font-size: 17px; font-weight: 500; line-height: 1.4; color: var(--c-navy); margin: 80px 0 3px; max-width: none; }

/* Link columns: central flex-column + gap; reset the atomic <a> box */
/* Links: reset .footer-links' OWN atomic 10px padding (it's a grandchild of
   .footer-grid, so the ">*" reset above didn't reach it) so the links line up
   under the column label; left-align the atomic <a> items. */
.footer-links.footer-links { display: flex; flex-direction: column; align-items: flex-start; gap: 11px; padding: 0; }
.footer-links.footer-links > a { width: auto; padding: 0; justify-content: flex-start; }
/* Bottom bar: atomic children default to width:100% → they wrapped and stacked
   on the left. width:auto lets space-between put © left / legal right (desktop). */
.footer-bottom.footer-bottom { gap: 12px 24px; }
.footer-bottom.footer-bottom > * { width: auto; }
.footer-copy.footer-copy { margin: 0; }
.footer-legal.footer-legal { display: flex; flex-direction: row; gap: 20px; }
.footer-legal.footer-legal > a { width: auto; padding: 0; }

/* Newsletter (WPForms 337) as an attached input-group pill (email input + navy
   Submit inside ONE rounded border), matching the reference. "Modern" markup is
   ID-scoped, so we override under #wpforms-337 with !important. Only the email
   field shows — every other field (incl. the stray text field_2) is hidden. */
.footer-newsletter .wpforms-container { margin: 0; max-width: 440px; }
#wpforms-337 .wpforms-field { display: none !important; }
#wpforms-337 .wpforms-field-email { display: block !important; padding: 0 !important; margin: 0 !important; }
#wpforms-337 .wpforms-field-label, #wpforms-337 .wpforms-required-label { display: none !important; }
#wpforms-337 form.wpforms-form { display: flex !important; align-items: center; gap: 0; max-width: 440px; background: #ffffff; border: 1px solid var(--c-border); border-radius: 100px; padding: 5px 5px 5px 6px; box-shadow: 0 1px 2px rgba(4,30,66,0.04); }
#wpforms-337 .wpforms-field-container { flex: 1 1 auto; min-width: 0; margin: 0 !important; padding: 0 !important; }
#wpforms-337 .wpforms-field-email input { width: 100% !important; height: auto !important; border: 0 !important; background: transparent !important; padding: 11px 18px !important; border-radius: 100px !important; box-shadow: none !important; color: var(--c-navy) !important; font-family: var(--font) !important; font-size: 14px !important; }
#wpforms-337 .wpforms-field-email input::placeholder { color: var(--c-text-muted) !important; opacity: 1; }
#wpforms-337 .wpforms-submit-container { flex: 0 0 auto; margin: 0 !important; padding: 0 !important; display: flex; }
#wpforms-337 button.wpforms-submit { height: auto !important; padding: 13px 28px !important; border: 0 !important; border-radius: 100px !important; background: var(--c-navy) !important; color: #ffffff !important; font-family: var(--font) !important; font-weight: 600 !important; font-size: 14px !important; line-height: 1 !important; cursor: pointer !important; box-shadow: none !important; transition: filter 0.15s var(--ease); }
#wpforms-337 button.wpforms-submit:hover { filter: brightness(1.18) !important; }

/* Social icons (LinkedIn / Facebook): atomic v4 can't emit inline SVG, so each
   icon is a hidden glyph span painted with a mask-image data URI; grey by
   default, brand-coloured on hover. Placeholder # hrefs — linked later. */
.footer-social.footer-social { display: flex; flex-direction: row; align-items: center; gap: 16px; margin-top: 22px; padding: 0; }
.footer-social.footer-social > a { width: auto; padding: 0; }
.footer-social__link.footer-social__link { display: inline-flex; align-items: center; justify-content: center; width: 24px; height: 24px; }
.footer-social__icon.footer-social__icon { display: inline-block; width: 21px; height: 21px; font-size: 0; line-height: 0; background-color: var(--c-text-muted); transition: background-color 150ms var(--ease); -webkit-mask: no-repeat center / contain; mask: no-repeat center / contain; }
.footer-social__icon--li { -webkit-mask-image: url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2024%2024'%3E%3Cpath%20fill='%23000'%20d='M20.45%2020.45h-3.56v-5.57c0-1.33-.02-3.04-1.85-3.04-1.85%200-2.14%201.45-2.14%202.94v5.67H9.35V9h3.41v1.56h.05c.48-.9%201.64-1.85%203.37-1.85%203.6%200%204.27%202.37%204.27%205.45v6.29zM5.34%207.43a2.06%202.06%200%201%201%200-4.13%202.06%202.06%200%200%201%200%204.13zM7.12%2020.45H3.56V9h3.56v11.45zM22.22%200H1.77C.79%200%200%20.77%200%201.72v20.56C0%2023.23.79%2024%201.77%2024h20.45c.98%200%201.78-.77%201.78-1.72V1.72C24%20.77%2023.2%200%2022.22%200z'/%3E%3C/svg%3E"); mask-image: url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2024%2024'%3E%3Cpath%20fill='%23000'%20d='M20.45%2020.45h-3.56v-5.57c0-1.33-.02-3.04-1.85-3.04-1.85%200-2.14%201.45-2.14%202.94v5.67H9.35V9h3.41v1.56h.05c.48-.9%201.64-1.85%203.37-1.85%203.6%200%204.27%202.37%204.27%205.45v6.29zM5.34%207.43a2.06%202.06%200%201%201%200-4.13%202.06%202.06%200%200%201%200%204.13zM7.12%2020.45H3.56V9h3.56v11.45zM22.22%200H1.77C.79%200%200%20.77%200%201.72v20.56C0%2023.23.79%2024%201.77%2024h20.45c.98%200%201.78-.77%201.78-1.72V1.72C24%20.77%2023.2%200%2022.22%200z'/%3E%3C/svg%3E"); }
.footer-social__icon--fb { -webkit-mask-image: url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2024%2024'%3E%3Cpath%20fill='%23000'%20d='M24%2012.07C24%205.4%2018.63%200%2012%200S0%205.4%200%2012.07C0%2018.1%204.39%2023.1%2010.13%2024v-8.44H7.08v-3.49h3.05V9.41c0-3.02%201.79-4.69%204.53-4.69%201.31%200%202.68.24%202.68.24v2.97h-1.51c-1.49%200-1.96.93-1.96%201.89v2.26h3.33l-.53%203.49h-2.8V24C19.61%2023.1%2024%2018.1%2024%2012.07z'/%3E%3C/svg%3E"); mask-image: url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2024%2024'%3E%3Cpath%20fill='%23000'%20d='M24%2012.07C24%205.4%2018.63%200%2012%200S0%205.4%200%2012.07C0%2018.1%204.39%2023.1%2010.13%2024v-8.44H7.08v-3.49h3.05V9.41c0-3.02%201.79-4.69%204.53-4.69%201.31%200%202.68.24%202.68.24v2.97h-1.51c-1.49%200-1.96.93-1.96%201.89v2.26h3.33l-.53%203.49h-2.8V24C19.61%2023.1%2024%2018.1%2024%2012.07z'/%3E%3C/svg%3E"); }
.footer-social__link.footer-social__link:hover .footer-social__icon--li { background-color: #0A66C2; }
.footer-social__link.footer-social__link:hover .footer-social__icon--fb { background-color: #1877F2; }

/* Social icons — corrections: the SVG masks now carry width/height (without
   which mask-image renders as a blank grey box); Instagram added (3 icons:
   IG / FB / LI); Instagram hover colour. Also kills the WPForms auto-injected
   field_2 — a stray "Email" text field NOT in the form config (WPForms adds it
   at render); a double-ID selector (2,0,0) beats WPForms' own field CSS. */
#wpforms-337 #wpforms-337-field_2-container { display: none !important; }

/* Footer social — REBUILT in the WP editor as native Elementor Social Icons
   widgets (Facebook / Instagram / LinkedIn, Font Awesome), one per
   .footer-social__link div. These rules come LATER in the cascade (so they win
   over the dead mask-based rules above) and strip Elementor's default
   coloured-circle chrome down to a bare icon: grey by default, brand-coloured on
   hover — applies on the front AND in the editor preview (same enqueue). */
.footer-social.footer-social { display: flex; flex-direction: row; align-items: center; gap: 14px; }
.footer-social.footer-social > * { width: auto; height: auto; padding: 0; }
.footer-social .footer-social__link.footer-social__link { width: auto; height: auto; padding: 0; }
.footer-social .elementor-widget-social-icons { margin: 0; }
.footer-social .elementor-social-icons-wrapper { display: flex; margin: 0; padding: 0; }
.footer-social .elementor-grid, .footer-social .elementor-grid-item { margin: 0; padding: 0; }
.footer-social .elementor-social-icon {
  --e-social-icon-icon-color: var(--c-text-muted);
  background-color: transparent !important; background-image: none !important;
  width: 24px !important; height: 24px !important; min-width: 0 !important;
  padding: 0 !important; margin: 0 !important; border: 0 !important; box-shadow: none !important; border-radius: 0 !important;
}
.footer-social .elementor-social-icon svg { width: 21px !important; height: 21px !important; fill: var(--c-text-muted); transition: fill 160ms var(--ease); }
.footer-social .elementor-social-icon i { font-size: 21px; color: var(--c-text-muted); transition: color 160ms var(--ease); }
.footer-social .elementor-social-icon:hover { background-color: transparent !important; }
.footer-social .elementor-social-icon-facebook:hover svg { fill: #1877F2; }
.footer-social .elementor-social-icon-facebook:hover i { color: #1877F2; }
.footer-social .elementor-social-icon-instagram:hover svg { fill: #E4405F; }
.footer-social .elementor-social-icon-instagram:hover i { color: #E4405F; }
.footer-social .elementor-social-icon-linkedin:hover svg { fill: #0A66C2; }
.footer-social .elementor-social-icon-linkedin:hover i { color: #0A66C2; }
/* (Legacy mask rules below target .footer-social__icon--* which no longer exist
   after the editor rebuild — kept inert, superseded by the rules above.) */
.footer-social__link.footer-social__link:hover .footer-social__icon--ig { background-color: #E4405F; }
.footer-social__icon--ig { -webkit-mask-image: url("data:image/svg+xml,%3Csvg%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%20xmlns='http://www.w3.org/2000/svg'%3E%3Cpath%20d='M12%202.16c3.2%200%203.58.01%204.85.07%201.17.05%201.8.25%202.23.41.56.22.96.48%201.38.9.42.42.68.82.9%201.38.16.42.36%201.06.41%202.23.06%201.27.07%201.65.07%204.85s-.01%203.58-.07%204.85c-.05%201.17-.25%201.8-.41%202.23-.22.56-.48.96-.9%201.38-.42.42-.82.68-1.38.9-.42.16-1.06.36-2.23.41-1.27.06-1.65.07-4.85.07s-3.58-.01-4.85-.07c-1.17-.05-1.8-.25-2.23-.41-.56-.22-.96-.48-1.38-.9-.42-.42-.68-.82-.9-1.38-.16-.42-.36-1.06-.41-2.23-.06-1.27-.07-1.65-.07-4.85s.01-3.58.07-4.85c.05-1.17.25-1.8.41-2.23.22-.56.48-.96.9-1.38.42-.42.82-.68%201.38-.9.42-.16%201.06-.36%202.23-.41%201.27-.06%201.65-.07%204.85-.07M12%200C8.74%200%208.33.01%207.05.07%205.78.13%204.9.33%204.14.63c-.79.31-1.46.72-2.13%201.38C1.35%202.68.94%203.35.63%204.14.33%204.9.13%205.78.07%207.05.01%208.33%200%208.74%200%2012s.01%203.67.07%204.95c.06%201.27.26%202.15.56%202.91.31.79.72%201.46%201.38%202.13.67.66%201.34%201.07%202.13%201.38.76.3%201.64.5%202.91.56C8.33%2023.99%208.74%2024%2012%2024s3.67-.01%204.95-.07c1.27-.06%202.15-.26%202.91-.56.79-.31%201.46-.72%202.13-1.38.66-.67%201.07-1.34%201.38-2.13.3-.76.5-1.64.56-2.91.06-1.28.07-1.69.07-4.95s-.01-3.67-.07-4.95c-.06-1.27-.26-2.15-.56-2.91-.31-.79-.72-1.46-1.38-2.13-.67-.66-1.34-1.07-2.13-1.38-.76-.3-1.64-.5-2.91-.56C15.67.01%2015.26%200%2012%200zm0%205.84a6.16%206.16%200%20100%2012.32%206.16%206.16%200%20000-12.32zM12%2016a4%204%200%20110-8%204%204%200%20010%208zm6.4-10.85a1.44%201.44%200%20100%202.88%201.44%201.44%200%20000-2.88z'/%3E%3C/svg%3E"); mask-image: url("data:image/svg+xml,%3Csvg%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%20xmlns='http://www.w3.org/2000/svg'%3E%3Cpath%20d='M12%202.16c3.2%200%203.58.01%204.85.07%201.17.05%201.8.25%202.23.41.56.22.96.48%201.38.9.42.42.68.82.9%201.38.16.42.36%201.06.41%202.23.06%201.27.07%201.65.07%204.85s-.01%203.58-.07%204.85c-.05%201.17-.25%201.8-.41%202.23-.22.56-.48.96-.9%201.38-.42.42-.82.68-1.38.9-.42.16-1.06.36-2.23.41-1.27.06-1.65.07-4.85.07s-3.58-.01-4.85-.07c-1.17-.05-1.8-.25-2.23-.41-.56-.22-.96-.48-1.38-.9-.42-.42-.68-.82-.9-1.38-.16-.42-.36-1.06-.41-2.23-.06-1.27-.07-1.65-.07-4.85s.01-3.58.07-4.85c.05-1.17.25-1.8.41-2.23.22-.56.48-.96.9-1.38.42-.42.82-.68%201.38-.9.42-.16%201.06-.36%202.23-.41%201.27-.06%201.65-.07%204.85-.07M12%200C8.74%200%208.33.01%207.05.07%205.78.13%204.9.33%204.14.63c-.79.31-1.46.72-2.13%201.38C1.35%202.68.94%203.35.63%204.14.33%204.9.13%205.78.07%207.05.01%208.33%200%208.74%200%2012s.01%203.67.07%204.95c.06%201.27.26%202.15.56%202.91.31.79.72%201.46%201.38%202.13.67.66%201.34%201.07%202.13%201.38.76.3%201.64.5%202.91.56C8.33%2023.99%208.74%2024%2012%2024s3.67-.01%204.95-.07c1.27-.06%202.15-.26%202.91-.56.79-.31%201.46-.72%202.13-1.38.66-.67%201.07-1.34%201.38-2.13.3-.76.5-1.64.56-2.91.06-1.28.07-1.69.07-4.95s-.01-3.67-.07-4.95c-.06-1.27-.26-2.15-.56-2.91-.31-.79-.72-1.46-1.38-2.13-.67-.66-1.34-1.07-2.13-1.38-.76-.3-1.64-.5-2.91-.56C15.67.01%2015.26%200%2012%200zm0%205.84a6.16%206.16%200%20100%2012.32%206.16%206.16%200%20000-12.32zM12%2016a4%204%200%20110-8%204%204%200%20010%208zm6.4-10.85a1.44%201.44%200%20100%202.88%201.44%201.44%200%20000-2.88z'/%3E%3C/svg%3E"); }
.footer-social__icon--fb { -webkit-mask-image: url("data:image/svg+xml,%3Csvg%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%20xmlns='http://www.w3.org/2000/svg'%3E%3Cpath%20d='M24%2012.07C24%205.4%2018.63%200%2012%200S0%205.4%200%2012.07C0%2018.1%204.39%2023.1%2010.13%2024v-8.44H7.08v-3.49h3.05V9.41c0-3.02%201.79-4.69%204.53-4.69%201.31%200%202.68.24%202.68.24v2.97h-1.51c-1.49%200-1.96.93-1.96%201.89v2.26h3.33l-.53%203.49h-2.8V24C19.61%2023.1%2024%2018.1%2024%2012.07z'/%3E%3C/svg%3E"); mask-image: url("data:image/svg+xml,%3Csvg%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%20xmlns='http://www.w3.org/2000/svg'%3E%3Cpath%20d='M24%2012.07C24%205.4%2018.63%200%2012%200S0%205.4%200%2012.07C0%2018.1%204.39%2023.1%2010.13%2024v-8.44H7.08v-3.49h3.05V9.41c0-3.02%201.79-4.69%204.53-4.69%201.31%200%202.68.24%202.68.24v2.97h-1.51c-1.49%200-1.96.93-1.96%201.89v2.26h3.33l-.53%203.49h-2.8V24C19.61%2023.1%2024%2018.1%2024%2012.07z'/%3E%3C/svg%3E"); }
.footer-social__icon--li { -webkit-mask-image: url("data:image/svg+xml,%3Csvg%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%20xmlns='http://www.w3.org/2000/svg'%3E%3Cpath%20d='M20.45%2020.45h-3.56v-5.57c0-1.33-.02-3.04-1.85-3.04-1.85%200-2.14%201.45-2.14%202.94v5.67H9.35V9h3.41v1.56h.05c.48-.9%201.64-1.85%203.37-1.85%203.6%200%204.27%202.37%204.27%205.45v6.29zM5.34%207.43a2.06%202.06%200%201%201%200-4.13%202.06%202.06%200%200%201%200%204.13zM7.12%2020.45H3.56V9h3.56v11.45zM22.22%200H1.77C.79%200%200%20.77%200%201.72v20.56C0%2023.23.79%2024%201.77%2024h20.45c.98%200%201.78-.77%201.78-1.72V1.72C24%20.77%2023.2%200%2022.22%200z'/%3E%3C/svg%3E"); mask-image: url("data:image/svg+xml,%3Csvg%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%20xmlns='http://www.w3.org/2000/svg'%3E%3Cpath%20d='M20.45%2020.45h-3.56v-5.57c0-1.33-.02-3.04-1.85-3.04-1.85%200-2.14%201.45-2.14%202.94v5.67H9.35V9h3.41v1.56h.05c.48-.9%201.64-1.85%203.37-1.85%203.6%200%204.27%202.37%204.27%205.45v6.29zM5.34%207.43a2.06%202.06%200%201%201%200-4.13%202.06%202.06%200%200%201%200%204.13zM7.12%2020.45H3.56V9h3.56v11.45zM22.22%200H1.77C.79%200%200%20.77%200%201.72v20.56C0%2023.23.79%2024%201.77%2024h20.45c.98%200%201.78-.77%201.78-1.72V1.72C24%20.77%2023.2%200%2022.22%200z'/%3E%3C/svg%3E"); }

/* =============================================================
   SINGLE POST — NATIVE ELEMENTOR BRIDGE (Theme Builder single id 343)
   Native atomic rebuild of blog-post.html. Skin/typography come from the
   centralized blog-post.css; box-model (grid/flex/padding/position) is
   re-asserted here because Elementor's atomic base clobbers it. Interactive
   parts are Elementor Pro widgets (theme-post-content, table-of-contents,
   share-buttons, loop-grid) styled to the design.
   ============================================================= */
/* Hero: featured image (v3 image widget, dynamic) as background, navy overlay
   (central ::before) above it, content on top. */
.post-hero.post-hero { position: relative; overflow: hidden; padding: 0 var(--pad-h); }
.post-hero__bg .elementor-widget-container, .post-hero__bg { position: absolute; inset: 0; z-index: 0; margin: 0; }
.post-hero__bg img { width: 100%; height: 100%; object-fit: cover; object-position: center 40%; }
.post-hero.post-hero::before { z-index: 1; }
.post-hero__content.post-hero__content { position: relative; z-index: 2; width: 100%; max-width: var(--max-w); margin-left: auto; margin-right: auto; padding: calc(clamp(40px, 5vw, 64px) + 66px) 0 clamp(48px, 6vw, 72px); }
.post-hero__meta.post-hero__meta { display: flex; flex-direction: row; align-items: center; flex-wrap: wrap; gap: 16px; }
.post-hero__author.post-hero__author { display: flex; flex-direction: row; align-items: center; gap: 10px; }
.post-hero__category.post-hero__category { display: inline-block; width: auto; font-size: 10px; letter-spacing: 0.08em; line-height: 1.4; padding: 3px 11px; margin-bottom: 28px; }

/* Article layout: main + sidebar grid */
.article-section.article-section { padding: clamp(48px, 6vw, 72px) var(--pad-h) var(--pad-v); }
.article-layout.article-layout { display: grid; grid-template-columns: 1fr; gap: 48px; max-width: var(--max-w); margin-left: auto; margin-right: auto; }
@media (min-width: 960px) { .article-layout.article-layout { grid-template-columns: 1fr 320px; gap: 64px; } }
.article-layout.article-layout > * { padding: 0; }
.article-body.article-body { min-width: 0; padding: 0; }

/* Body richtext (theme-post-content): the UiCore/Elementor kit tints the h2/h3
   a light colour and resizes them, so re-assert the design-system scale + navy
   at doubled specificity (+ !important on the props the theme forces) so the
   article body matches blog-post.css. Paragraphs/lists already inherit fine but
   are re-stated for a self-contained block. */
.article-body.article-body h2 { font-size: clamp(24px, 2.8vw, 32px) !important; font-weight: 700 !important; line-height: 1.12 !important; letter-spacing: var(--tracking); color: var(--c-navy) !important; margin: 48px 0 20px; }
.article-body.article-body h2:first-child { margin-top: 0; }
.article-body.article-body h3 { font-size: 20px !important; font-weight: 700 !important; line-height: 1.2 !important; letter-spacing: var(--tracking); color: var(--c-navy) !important; margin: 36px 0 16px; }
.article-body.article-body h2 + h3 { margin-top: 24px; }
.article-body.article-body p { font-size: 16px; line-height: 1.6; color: var(--c-text-muted); margin: 0 0 24px; }
.article-body.article-body p:last-child { margin-bottom: 0; }
.article-body.article-body ul, .article-body.article-body ol { margin: 0 0 24px; padding-left: 24px; }
.article-body.article-body ul { list-style: disc; }
.article-body.article-body ol { list-style: decimal; }
.article-body.article-body li { font-size: 16px; line-height: 1.6; color: var(--c-text-muted); margin-bottom: 8px; }
.article-body.article-body strong { font-weight: 600; color: var(--c-navy); }

.article-sidebar.article-sidebar { display: none; padding: 0; }
@media (min-width: 960px) { .article-sidebar.article-sidebar { display: block; } }
.sidebar-sticky.sidebar-sticky { position: sticky; top: 90px; display: flex; flex-direction: column; gap: 32px; padding: 0; }
.sidebar-toc.sidebar-toc, .sidebar-cta.sidebar-cta, .sidebar-cta__content.sidebar-cta__content { padding: 0; }
.sidebar-cta.sidebar-cta { padding: 28px; }

/* Table of Contents widget -> match the STATIC .sidebar-toc reference exactly
   (blog-post.html): plain card + "In this article" label (sentence-case navy
   bold) + a flat link list with a thin FULL-WIDTH separator between rows (last
   top-level row none), sub-headings indented 16px. No inner box / rail.
   Notes: the "bullets" are inline <svg .e-fas-circle> (NOT list-markers) -> hide
   the svg. The widget ships a bordered inner box + the body as display:none +
   .elementor-toc--collapsed; minimized_on is "none" -> kill every default border
   and force the body open. Scroll-spy sets .elementor-item-active on the <a>. */
.sidebar-toc.sidebar-toc { background: #FFFFFF; border: 1px solid var(--c-border); border-radius: 10px; padding: 24px; box-shadow: none; }
.sidebar-toc__label.sidebar-toc__label { font-size: 13px; font-weight: 700; letter-spacing: var(--tracking); text-transform: none; color: var(--c-navy); margin: 0 0 16px; padding: 0; border: 0; }
.sidebar-toc .elementor-widget-container { border: 0 !important; padding: 0; background: transparent; }
/* The grey "box" border/bg is drawn on the widget ROOT by the plugin rule
   `.elementor-widget-table-of-contents:not(:has(.elementor-widget-container))`
   (our TOC has NO .elementor-widget-container child, so that branch matches) —
   this is what the earlier .elementor-widget-container reset missed. Kill it. */
.sidebar-toc .elementor-widget-table-of-contents { border: 0 !important; background: transparent !important; padding: 0 !important; box-shadow: none !important; }
.sidebar-toc .elementor-toc__header, .sidebar-toc .elementor-toc__spinner-container, .sidebar-toc .elementor-toc__toggle-button { display: none !important; }
.sidebar-toc .elementor-toc__body { display: block !important; padding: 0 !important; border: 0 !important; background: transparent !important; max-height: none !important; }
.sidebar-toc .elementor-toc__list-item-text-wrapper svg, .sidebar-toc svg.e-fas-circle { display: none !important; }
.sidebar-toc .elementor-toc__list-wrapper { list-style: none; padding: 0; margin: 0; border: 0 !important; }
.sidebar-toc .elementor-toc__list-item { margin: 0; border: 0 !important; }
.sidebar-toc .elementor-toc__list-item-text-wrapper { display: block; }
/* Rows: block links + thin full-width separator (matches .sidebar-toc__link) */
.sidebar-toc .elementor-toc__list-item-text { display: block; font-family: var(--font); font-size: 13px; font-weight: 500; line-height: 1.4; letter-spacing: var(--tracking); color: var(--c-text-muted); text-decoration: none; padding: 8px 0; border-bottom: 1px solid rgba(4, 30, 66, 0.05); transition: color 140ms var(--ease); }
/* Sub-heading rows: indented + smaller (separator still spans full width) */
.sidebar-toc .elementor-toc__list-item-text:not(.elementor-toc__top-level) { font-size: 12px; padding-left: 16px; }
/* Only the last TOP-LEVEL row drops its separator (nested rows keep theirs) */
.sidebar-toc .elementor-toc__body > .elementor-toc__list-wrapper > .elementor-toc__list-item:last-child > .elementor-toc__list-item-text-wrapper > .elementor-toc__list-item-text { border-bottom: 0; }
/* Hover + scroll-spy active */
.sidebar-toc .elementor-toc__list-item-text:hover { color: var(--c-blue); }
.sidebar-toc a.elementor-toc__list-item-text.elementor-item-active { color: var(--c-blue); font-weight: 600; }

/* Article footer: tags + share + author */
/* pad-h lives on the OUTER section (like .article-section / .blog-hero) and the
   __inner is a plain max-w centered box with NO padding. The previous build put
   pad-h on the __inner WHILE it also carried max-width, so the content box was
   2×pad-h narrower than .article-layout and sat inset from the body's edges
   (white gutters + share not reaching the right edge). Matching the outer-padding
   pattern realigns the tag to the body's left edge and the share to the far right. */
.article-footer.article-footer { padding: 0 var(--pad-h); }
.article-footer__inner.article-footer__inner { max-width: var(--max-w); margin-left: auto; margin-right: auto; padding: 0; }
.article-footer__row.article-footer__row { display: flex; flex-direction: row; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 16px; padding: 24px 0; border-top: 1px solid var(--c-border); border-bottom: 1px solid var(--c-border); }
/* Atomic e-div-block children default to width:100% → the tags block filled the
   row and the share block wrapped BELOW it (stacked). width:auto lets them sit on
   ONE line so space-between pins the tag far-left and share far-right. */
.article-footer__row.article-footer__row > * { width: auto; max-width: 100%; }
.article-footer__tags.article-footer__tags { display: flex; flex-direction: row; align-items: center; flex-wrap: wrap; gap: 8px; padding: 0; }
.article-footer__tag.article-footer__tag { display: inline-block; width: auto; }
.article-footer__share.article-footer__share { display: flex; flex-direction: row; align-items: center; gap: 12px; padding: 0; }
.article-author.article-author { display: flex; flex-direction: row; align-items: flex-start; gap: 20px; padding: 40px 0; }
.article-author__info.article-author__info { display: flex; flex-direction: column; padding: 0; min-width: 0; }
.article-author__avatar.article-author__avatar { flex-shrink: 0; }

/* Share Buttons widget -> subtle round icon buttons, brand colour on hover */
.article-footer__share .elementor-share-buttons, .article-footer__share .elementor-widget-container { margin: 0; }
.article-footer__share .elementor-grid { display: flex; gap: 8px; margin: 0; }
.article-footer__share .elementor-share-btn { width: 38px; height: 38px; min-width: 0; border-radius: 50%; background: transparent; border: 1px solid var(--c-border); display: inline-flex; align-items: center; justify-content: center; transition: color 150ms var(--ease), border-color 150ms var(--ease), background 150ms var(--ease); }
.article-footer__share .elementor-share-btn__icon { background: transparent; color: var(--c-text-muted); }
.article-footer__share .elementor-share-btn i, .article-footer__share .elementor-share-btn svg { color: var(--c-text-muted); fill: var(--c-text-muted); font-size: 15px; width: 15px; height: 15px; transition: color 150ms var(--ease), fill 150ms var(--ease); }
.article-footer__share .elementor-share-btn:hover { border-color: var(--c-navy); background: rgba(4,30,66,0.04); }
.article-footer__share .elementor-share-btn:hover i, .article-footer__share .elementor-share-btn:hover svg { color: var(--c-navy); fill: var(--c-navy); }
.article-footer__share .elementor-share-btn__text { display: none; }

/* Related posts: the loop-grid renders its own .elementor-grid */
.related-posts.related-posts { padding: var(--pad-v) var(--pad-h); }
.related-posts__inner.related-posts__inner { max-width: var(--max-w); margin-left: auto; margin-right: auto; padding: 0; }
.related-posts__header.related-posts__header { margin-bottom: 40px; padding: 0; }
.related-posts__grid.related-posts__grid { padding: 0; }
/* Columns pinned to OUR breakpoints (600/960) at 0,3,0 so they beat the loop-grid's
   own responsive classes (Elementor's "tablet" = ≤1024, which would otherwise leave
   a lone 2+1 orphan up to 1024). In the 2-column range (tablet portrait) the 3rd+
   cards are hidden -> a clean single row of 2 instead of an orphan; <600 stacks all
   three (mobile), ≥960 shows all three in a 3-up row. */
.related-posts__grid .elementor-loop-container.elementor-grid { display: grid; grid-template-columns: 1fr; gap: 32px; }
@media (min-width: 600px) { .related-posts__grid .elementor-loop-container.elementor-grid { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 960px) { .related-posts__grid .elementor-loop-container.elementor-grid { grid-template-columns: repeat(3, 1fr); } }
@media (min-width: 600px) and (max-width: 959.98px) {
  /* Hide the 3rd loop card. Use the general-sibling chain (an .e-loop-item preceded
     by 2 others) instead of :nth-child(n+3): the loop container can carry a leading
     non-.e-loop-item child that throws off :nth-child counting (it was hiding the
     2nd card too). This counts ONLY .e-loop-item siblings. */
  .related-posts__grid .elementor-loop-container.elementor-grid .e-loop-item ~ .e-loop-item ~ .e-loop-item { display: none; }
}

/* Sidebar newsletter (WPForms 337, 2nd instance): stack it inside the card
   (the footer instance is the horizontal pill; here override to stacked). */
.sidebar-cta .wpforms-container { max-width: none; }
.sidebar-cta form.wpforms-form { display: block; border: 0; background: transparent; border-radius: 0; padding: 0; box-shadow: none; }
.sidebar-cta .wpforms-field-email input { border: 1px solid var(--c-border) !important; border-radius: 8px !important; background: #fff !important; padding: 11px 14px !important; margin-bottom: 10px; }
.sidebar-cta button.wpforms-submit { width: 100% !important; justify-content: center; }

/* =============================================================
   SINGLE POST — QA FIXES (post-review con Guillermo, firecrawl)
   ============================================================= */
/* Hero meta divider was a full grey box (atomic width:100%) -> thin line */
.post-hero__divider.post-hero__divider { width: 1px; height: 16px; flex: 0 0 1px; padding: 0; align-self: center; background: rgba(255,255,255,0.2); }
.post-hero__avatar.post-hero__avatar, .article-author__avatar.article-author__avatar { padding: 0; }
.post-hero__author.post-hero__author > *, .post-hero__meta.post-hero__meta > * { padding: 0; }
/* Category chip in the article footer (atomic paragraph lost the central chip) */
.article-footer__tag.article-footer__tag { display: inline-block; width: auto; padding: 5px 14px; background: var(--c-surface-alt); border-radius: 100px; font-size: 12px; font-weight: 600; color: var(--c-text-muted); line-height: 1.4; }
.article-footer__tag.article-footer__tag a { color: inherit; text-decoration: none; }
/* Share buttons: strip Elementor's coloured filled circles -> subtle grey outline */
.article-footer__share .elementor-share-btn { background-color: transparent !important; border: 1px solid var(--c-border) !important; border-radius: 50% !important; width: 38px !important; height: 38px !important; min-width: 0 !important; padding: 0 !important; overflow: hidden; box-shadow: none !important; }
.article-footer__share .elementor-share-btn__icon { background-color: transparent !important; color: var(--c-text-muted) !important; }
.article-footer__share .elementor-share-btn i, .article-footer__share .elementor-share-btn svg { color: var(--c-text-muted) !important; fill: var(--c-text-muted) !important; }
.article-footer__share .elementor-share-btn:hover { border-color: var(--c-navy) !important; background-color: rgba(4,30,66,0.04) !important; }
.article-footer__share .elementor-share-btn:hover .elementor-share-btn__icon, .article-footer__share .elementor-share-btn:hover i, .article-footer__share .elementor-share-btn:hover svg { color: var(--c-navy) !important; fill: var(--c-navy) !important; }
/* (TOC marker/list-style resets removed — the bullets are inline fa-circle SVGs,
   handled in the consolidated TOC block above; a `ul{padding:0!important}` here
   would also have killed the nested-list indent rail.) */
/* Sidebar newsletter — WPForms 347 "Blog Form" (replaced 337 in the single's
   sidebar; 337 stays in the global footer). 347 is email-only and lives ONLY on
   the navy sidebar card, so style it directly here: stacked, white input + blue
   submit. Same #id + !important pattern as 337 to beat WPForms "modern" scoped CSS
   (its own #wpforms-347 rules); the #wpforms-337 base rules don't reach 347. */
#wpforms-347 .wpforms-field { display: none !important; }
#wpforms-347 .wpforms-field-email { display: block !important; padding: 0 !important; margin: 0 !important; }
#wpforms-347 .wpforms-field-label, #wpforms-347 .wpforms-required-label { display: none !important; }
#wpforms-347 #wpforms-347-field_2-container { display: none !important; }
#wpforms-347 form.wpforms-form { display: block !important; background: transparent !important; border: 0 !important; border-radius: 0 !important; padding: 0 !important; box-shadow: none !important; max-width: none !important; }
#wpforms-347 .wpforms-field-container { display: block !important; margin: 0 !important; padding: 0 !important; }
#wpforms-347 .wpforms-field-email input { width: 100% !important; height: auto !important; margin-bottom: 10px !important; border: 1px solid rgba(255,255,255,0.25) !important; background: #FFFFFF !important; border-radius: 8px !important; padding: 11px 14px !important; color: var(--c-navy) !important; font-family: var(--font) !important; font-size: 14px !important; box-shadow: none !important; }
#wpforms-347 .wpforms-field-email input::placeholder { color: var(--c-text-muted) !important; opacity: 1; }
#wpforms-347 .wpforms-submit-container { display: block !important; margin: 0 !important; padding: 0 !important; }
#wpforms-347 button.wpforms-submit { width: 100% !important; height: auto !important; padding: 13px 20px !important; border: 0 !important; border-radius: 8px !important; background: var(--c-blue) !important; color: #ffffff !important; font-family: var(--font) !important; font-weight: 600 !important; font-size: 14px !important; line-height: 1 !important; cursor: pointer !important; box-shadow: none !important; justify-content: center; }
#wpforms-347 button.wpforms-submit:hover { filter: brightness(1.12) !important; }

/* === SINGLE POST — polish v2 (divider, tag chip, TOC bullets) === */
.post-hero__divider.post-hero__divider { width: 1px !important; max-width: 1px !important; min-width: 0 !important; }
.article-footer__tag.article-footer__tag { display: inline-block !important; background: rgba(4,30,66,0.06) !important; padding: 5px 14px !important; border-radius: 100px !important; }

/* =============================================================
   NEWS ARCHIVE — NATIVE ELEMENTOR BRIDGE (Theme Builder archive 369)
   Native atomic rebuild of news.html. Skin/typography come from news.css;
   box-model (grid/flex/padding/position) + the props the atomic base clobbers
   (margins via .e-paragraph-base, the h1 font-size) are re-asserted here at
   doubled specificity. Feed = loop-grid (loop item 368) as a 1-col list.
   ============================================================= */
/* Hero: pad-h on the OUTER section, max-w centered content (like .blog-hero) */
.news-hero.news-hero { padding: 0 var(--pad-h); position: relative; overflow: hidden; }
.news-hero__content.news-hero__content { width: 100%; max-width: var(--max-w); margin-left: auto; margin-right: auto; padding: calc(clamp(40px, 5vw, 64px) + 66px) 0 clamp(48px, 6vw, 72px); }
.news-hero__kicker.news-hero__kicker { font-size: 11px; font-weight: 700; letter-spacing: 0.12em; text-transform: uppercase; color: var(--c-soft-blue); margin: 0 0 16px; }
.news-hero__h1.news-hero__h1 { font-size: clamp(34px, 4vw, 52px); font-weight: 700; line-height: 1.1; letter-spacing: var(--tracking); color: #F2F2F3; max-width: 22ch; margin: 0 0 16px; }
.news-hero__body.news-hero__body { font-size: clamp(15px, 1.3vw, 17px); line-height: 1.55; color: var(--c-dim-dark); max-width: 52ch; margin: 0; }

/* Feed section + inner max-w box */
.news-feed.news-feed { padding: var(--pad-v) var(--pad-h); }
.news-feed__inner.news-feed__inner { width: 100%; max-width: var(--max-w); margin-left: auto; margin-right: auto; padding: 0; }
/* The loop-grid container IS the vertical list: 1 col, no gap (item borders separate) */
.news-feed .elementor-loop-container.elementor-grid { display: grid; grid-template-columns: 1fr; gap: 0; }

/* News item row (atomic e-div-block defaults to flex/column + 10px pad) */
.news-item.news-item { display: grid; grid-template-columns: 1fr; gap: 0; padding: 32px 0; border-bottom: 1px solid var(--c-border); }
/* first/last must target the .e-loop-item WRAPPER, not the article: each .news-item
   is the only child of its .e-loop-item, so .news-item:first/last-child would hit
   EVERY item (killing all separators + top padding). Scope through the wrapper. */
.news-feed .e-loop-item:first-child .news-item.news-item { padding-top: 0; }
.news-feed .e-loop-item:last-child .news-item.news-item { border-bottom: 0; }
@media (min-width: 768px) { .news-item.news-item { grid-template-columns: 320px 1fr; gap: 36px; align-items: start; } }
@media (min-width: 1024px) { .news-item.news-item { grid-template-columns: 380px 1fr; gap: 48px; } }

/* Image: the atomic e-div-block img-wrap is display:flex by default, which
   collapses the ::before padding-top ratio trick (the pseudo gets no width) →
   use display:block + aspect-ratio (same as .post-card__img-wrap), and fill it
   with the v3 image widget through its wrappers. */
.news-item__img-wrap.news-item__img-wrap { position: relative; overflow: hidden; display: block; aspect-ratio: 3 / 2; border-radius: 8px; padding: 0; }
.news-item__img-wrap.news-item__img-wrap > * { position: absolute; inset: 0; width: 100%; height: 100%; margin: 0; }
.news-item__img-wrap.news-item__img-wrap :is(figure, a, span, .elementor-widget-container) { position: absolute; inset: 0; width: 100%; height: 100%; margin: 0; display: block; }
.news-item__img-wrap.news-item__img-wrap img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; max-width: none; }
@media (max-width: 767px) { .news-item__img-wrap.news-item__img-wrap { margin-bottom: 20px; } }

/* Body + its widgets (re-assert the margins that .e-paragraph-base zeroes) */
.news-item__body.news-item__body { display: flex; flex-direction: column; justify-content: center; padding: 0; min-width: 0; }
.news-item__date.news-item__date { margin: 0 0 6px; }
.news-item__category.news-item__category { align-self: flex-start; display: inline-block; width: auto; margin: 0 0 14px; padding: 4px 10px; }
.news-item__category.news-item__category a { color: inherit; text-decoration: none; }
.news-item__title.news-item__title { margin: 0 0 12px; }
.news-item__excerpt.news-item__excerpt { margin: 0 0 18px; }
.news-item__read-link.news-item__read-link { align-self: flex-start; display: inline-flex; align-items: center; width: auto; padding: 0; }
/* Read-more arrow: atomic emits no inline SVG, so paint it as a mask ::after on the
   inner link (the span's own ::after is the animated underline from news.css). */
.news-item__read-link a::after {
  content: ''; display: inline-block; width: 13px; height: 13px; margin-left: 6px; vertical-align: -1px; flex-shrink: 0;
  background-color: currentColor;
  -webkit-mask: url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20width='14'%20height='14'%20viewBox='0%200%2014%2014'%3E%3Cpath%20d='M1%207h12m0%200L8%202.5M13%207l-5%204.5'%20fill='none'%20stroke='%23000'%20stroke-width='1.5'%20stroke-linecap='round'%20stroke-linejoin='round'/%3E%3C/svg%3E") no-repeat center / contain;
  mask: url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20width='14'%20height='14'%20viewBox='0%200%2014%2014'%3E%3Cpath%20d='M1%207h12m0%200L8%202.5M13%207l-5%204.5'%20fill='none'%20stroke='%23000'%20stroke-width='1.5'%20stroke-linecap='round'%20stroke-linejoin='round'/%3E%3C/svg%3E") no-repeat center / contain;
  transition: transform 180ms var(--ease);
}
.news-item__read-link:hover a::after { transform: translateX(3px); }

/* Pagination (loop-grid numbers_and_prev_next) styled like .news-pagination.
   Scoped under .news-feed__inner for (0,3,0) over Elementor Pro's pagination CSS. */
.news-feed__inner .elementor-pagination { display: flex; align-items: center; justify-content: center; gap: 4px; padding-top: 48px; margin-top: var(--pad-v); border-top: 1px solid var(--c-border); list-style: none; }
.news-feed__inner .elementor-pagination .page-numbers { min-width: 42px; height: 42px; padding: 0 6px; display: inline-flex; align-items: center; justify-content: center; border-radius: 8px; border: 1px solid transparent; font-family: var(--font); font-size: 14px; font-weight: 600; line-height: 1; color: var(--c-text-muted); background: transparent; text-decoration: none; transition: color 0.18s var(--ease), background 0.18s var(--ease), border-color 0.18s var(--ease); }
.news-feed__inner .elementor-pagination a.page-numbers:hover { color: var(--c-navy); background: rgba(4, 30, 66, 0.04); }
.news-feed__inner .elementor-pagination .page-numbers.current { color: var(--c-blue); background: rgba(0, 25, 255, 0.06); border-color: rgba(0, 25, 255, 0.15); }
.news-feed__inner .elementor-pagination .page-numbers.prev, .news-feed__inner .elementor-pagination .page-numbers.next { color: var(--c-navy); font-size: 17px; }
.news-feed__inner .elementor-pagination .page-numbers.dots { min-width: 24px; color: var(--c-text-muted); background: transparent; border: 0; }

/* =============================================================
   NEWS SINGLE — NATIVE ELEMENTOR BRIDGE (Theme Builder single-news 370)
   Skin/typography = news.css; box-model re-asserted here. Simpler than the blog
   single: one centered column (720), no sidebar/TOC. body = theme-post-content.
   ============================================================= */
/* Hero: featured image (v3 image widget, dynamic) as bg, navy overlay above, content on top */
.npost-hero.npost-hero { position: relative; overflow: hidden; padding: 0 var(--pad-h); }
.npost-hero__bg .elementor-widget-container, .npost-hero__bg { position: absolute; inset: 0; z-index: 0; margin: 0; }
.npost-hero__bg img { width: 100%; height: 100%; object-fit: cover; object-position: center 40%; }
.npost-hero.npost-hero::before { z-index: 1; }
.npost-hero__content.npost-hero__content { position: relative; z-index: 2; width: 100%; max-width: var(--max-w); margin-left: auto; margin-right: auto; padding: calc(clamp(40px, 5vw, 64px) + 66px) 0 clamp(48px, 6vw, 72px); }
/* topic pill: .e-paragraph-base clobbers margin/font-size -> re-assert at 0,2,0 */
.npost-hero__topic.npost-hero__topic { display: inline-block; width: auto; font-size: 11px; letter-spacing: 0.08em; line-height: 1.4; padding: 5px 14px; margin: 0 0 20px; }
.npost-hero__topic.npost-hero__topic a { color: inherit; text-decoration: none; }
.npost-hero__h1.npost-hero__h1 { font-size: clamp(34px, 4vw, 52px); font-weight: 700; line-height: 1.1; letter-spacing: var(--tracking); color: #F2F2F3; max-width: 28ch; margin: 0 0 24px; }
.npost-hero__meta.npost-hero__meta { display: flex; flex-direction: row; align-items: center; flex-wrap: wrap; gap: 16px; }
.npost-hero__meta.npost-hero__meta > * { padding: 0; margin: 0; }
.npost-hero__divider.npost-hero__divider { width: 1px !important; max-width: 1px !important; min-width: 0 !important; height: 16px; flex: 0 0 1px; align-self: center; background: rgba(255,255,255,0.2); }

/* Article: single centered column; theme-post-content wrapped in .npost-article__inner */
.npost-article.npost-article { padding: clamp(48px, 6vw, 72px) var(--pad-h) var(--pad-v); }
.npost-article__inner.npost-article__inner { max-width: 720px; margin-left: auto; margin-right: auto; padding: 0; min-width: 0; }
/* h2/h3 tinted/resized by the kit -> re-assert navy 700 (like .article-body) */
.npost-article__inner.npost-article__inner h2 { font-size: clamp(24px, 2.8vw, 32px) !important; font-weight: 700 !important; line-height: 1.12 !important; letter-spacing: var(--tracking); color: var(--c-navy) !important; margin: 48px 0 20px; }
.npost-article__inner.npost-article__inner h2:first-child { margin-top: 0; }
.npost-article__inner.npost-article__inner h3 { font-size: 20px !important; font-weight: 700 !important; line-height: 1.2 !important; letter-spacing: var(--tracking); color: var(--c-navy) !important; margin: 36px 0 16px; }

/* Article footer: topic + share row, then Back to News */
.npost-footer.npost-footer { padding: 0 var(--pad-h); }
.npost-footer__inner.npost-footer__inner { max-width: 720px; margin-left: auto; margin-right: auto; padding: 0; }
.npost-footer__row.npost-footer__row { display: flex; flex-direction: row; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 16px; padding: 24px 0; border-top: 1px solid var(--c-border); border-bottom: 1px solid var(--c-border); }
.npost-footer__row.npost-footer__row > * { width: auto; }
.npost-footer__topic.npost-footer__topic { display: inline-block; width: auto; padding: 5px 14px; background: var(--c-surface-alt); border-radius: 100px; font-size: 12px; font-weight: 600; color: var(--c-text-muted); }
.npost-footer__topic.npost-footer__topic a { color: inherit; text-decoration: none; }
.npost-footer__share.npost-footer__share { display: flex; flex-direction: row; align-items: center; gap: 12px; padding: 0; }
.npost-back.npost-back { padding: 32px 0; }
.npost-back__link.npost-back__link { display: inline-flex; flex-direction: row; align-items: center; gap: 8px; width: auto; transition: gap 180ms var(--ease); }
.npost-back__link.npost-back__link:hover { gap: 12px; }
/* left arrow via mask ::before (atomic has no inline SVG) */
.npost-back__link.npost-back__link::before {
  content: ''; display: inline-block; width: 14px; height: 14px; flex-shrink: 0;
  background-color: currentColor;
  -webkit-mask: url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20width='14'%20height='14'%20viewBox='0%200%2014%2014'%3E%3Cpath%20d='M13%207H1m0%200l5-4.5M1%207l5%204.5'%20fill='none'%20stroke='%23000'%20stroke-width='1.5'%20stroke-linecap='round'%20stroke-linejoin='round'/%3E%3C/svg%3E") no-repeat center / contain;
  mask: url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20width='14'%20height='14'%20viewBox='0%200%2014%2014'%3E%3Cpath%20d='M13%207H1m0%200l5-4.5M1%207l5%204.5'%20fill='none'%20stroke='%23000'%20stroke-width='1.5'%20stroke-linecap='round'%20stroke-linejoin='round'/%3E%3C/svg%3E") no-repeat center / contain;
}

/* Share buttons widget (LinkedIn / X / Email) -> subtle round outline icons */
.npost-footer__share .elementor-share-buttons, .npost-footer__share .elementor-widget-container { margin: 0; }
.npost-footer__share .elementor-grid { display: flex; gap: 8px; margin: 0; }
.npost-footer__share .elementor-share-btn { background-color: transparent !important; border: 1px solid var(--c-border) !important; border-radius: 50% !important; width: 34px !important; height: 34px !important; min-width: 0 !important; padding: 0 !important; overflow: hidden; box-shadow: none !important; display: inline-flex; align-items: center; justify-content: center; }
.npost-footer__share .elementor-share-btn__icon { background-color: transparent !important; color: var(--c-text-muted) !important; }
.npost-footer__share .elementor-share-btn i, .npost-footer__share .elementor-share-btn svg { color: var(--c-text-muted) !important; fill: var(--c-text-muted) !important; font-size: 15px; width: 15px; height: 15px; }
.npost-footer__share .elementor-share-btn:hover { border-color: var(--c-blue) !important; background-color: rgba(0,25,255,0.06) !important; }
.npost-footer__share .elementor-share-btn:hover .elementor-share-btn__icon, .npost-footer__share .elementor-share-btn:hover i, .npost-footer__share .elementor-share-btn:hover svg { color: var(--c-blue) !important; fill: var(--c-blue) !important; }
.npost-footer__share .elementor-share-btn__text { display: none; }

/* Related news: loop-grid (compact cards, no image), 1col / 3col */
.related-news.related-news { padding: var(--pad-v) var(--pad-h); }
.related-news__inner.related-news__inner { max-width: var(--max-w); margin-left: auto; margin-right: auto; padding: 0; }
.related-news__header.related-news__header { margin-bottom: 40px; padding: 0; }
.related-news__grid.related-news__grid { padding: 0; }
.related-news__grid .elementor-loop-container.elementor-grid { display: grid; grid-template-columns: 1fr; gap: 24px; }
@media (min-width: 768px) { .related-news__grid .elementor-loop-container.elementor-grid { grid-template-columns: repeat(3, 1fr); } }
.news-card.news-card { display: flex; flex-direction: column; padding: 28px 24px; }
.news-card__date.news-card__date { margin: 0 0 4px; }
.news-card__topic.news-card__topic { align-self: flex-start; display: inline-block; width: auto; margin: 0 0 14px; padding: 3px 8px; }
.news-card__title.news-card__title { margin: 0 0 12px; }
.news-card__title.news-card__title a { color: inherit; text-decoration: none; }
.news-card__excerpt.news-card__excerpt { margin: 0; }
