/* JS Grant & Compliance Consulting — Enterprise Baseline (Scoped, Minimal) */

/* Google Fonts removed -- theme.json fontFace declarations handle
   font loading via WordPress core (eliminates duplicate HTTP request). */

:root{
  /* Legacy aliases — reference jsgc-site.css :root for single source of truth */
  --ink: var(--color-gray-800, #0f2133);
  --muted: var(--color-text-muted, #3f5468);
  --bg: var(--color-surface-subtle, #f8fafc);
  --white: var(--color-white, #FFFFFF);
  --border: rgba(15,33,51,.12);
  --radius-xs: 6px;
  --radius-sm: 10px;
  --radius-md: 18px;
  --radius-full: 999px;
  --shadow-sm: var(--shadow-soft, 0 6px 16px rgba(15, 33, 51, 0.08));
  --shadow-card: 0 1px 3px rgba(15,33,51,0.04), 0 8px 24px rgba(15,33,51,0.07);
  --shadow-lift: 0 4px 12px rgba(15,33,51,0.06), 0 16px 32px rgba(15,33,51,0.09);
  --font-heading: 'Lora', Georgia, 'Times New Roman', serif;
  --font-body: 'Inter', -apple-system, BlinkMacSystemFont, 'Helvetica Neue', sans-serif;

  /* ============================================================
     UNIBIZ PARENT THEME COLOR OVERRIDE (2026-03-09)
     Parent Unibiz theme defines purple (#7722ff) as its primary
     palette. Override ALL gv-color-* CSS custom properties with
     JSGC brand values so any block using parent-theme color slugs
     renders in brand teal instead of purple.
     ============================================================ */
  --wp--preset--color--gv-color-primary: var(--brand-primary-700, #146b69);
  --wp--preset--color--gv-color-secondary: var(--brand-primary-600, #0f5452);
  --wp--preset--color--gv-color-accent: var(--brand-primary-700, #146b69);
  --wp--preset--color--gv-color-accent-hover: var(--brand-primary-600, #0f5452);
  --wp--preset--color--gv-color-text-primary: var(--color-gray-800, #0f2133);
  --wp--preset--color--gv-color-text-secondary: rgba(1,18,34,.6);
  --wp--preset--color--gv-color-background-primary: var(--color-gray-800, #0f2133);
  --wp--preset--color--gv-color-background-secondary: var(--color-gray-050, #f8fafc);
  --wp--preset--color--gv-color-background-tertiary: var(--brand-accent-soft, #deeff0);
  --wp--preset--color--gv-color-border: var(--color-gray-300, #c3d3dc);
  --wp--preset--color--gv-color-dark-primary: var(--brand-primary-700, #146b69);
  --wp--preset--color--gv-color-dark-secondary: var(--brand-primary-600, #0f5452);
  --wp--preset--color--gv-color-dark-accent: var(--brand-primary-700, #146b69);
  --wp--preset--color--gv-color-dark-accent-hover: var(--brand-primary-600, #0f5452);
}

/* Unibiz class-name overrides — catch blocks saved with gv-color-* classes */
.has-gv-color-primary-background-color { background-color: var(--brand-primary-700, #146b69) !important; }
.has-gv-color-secondary-background-color { background-color: var(--brand-primary-600, #0f5452) !important; }
.has-gv-color-accent-background-color { background-color: var(--brand-primary-700, #146b69) !important; }
.has-gv-color-accent-hover-background-color { background-color: var(--brand-primary-600, #0f5452) !important; }
.has-gv-color-primary-color { color: var(--brand-primary-700, #146b69) !important; }
.has-gv-color-secondary-color { color: var(--brand-primary-600, #0f5452) !important; }
.has-gv-color-accent-color { color: var(--brand-primary-700, #146b69) !important; }
.has-gv-color-dark-primary-background-color { background-color: var(--brand-primary-700, #146b69) !important; }
.has-gv-color-dark-secondary-background-color { background-color: var(--brand-primary-600, #0f5452) !important; }
.has-gv-color-dark-accent-background-color { background-color: var(--brand-primary-700, #146b69) !important; }
.has-gv-color-dark-primary-color { color: var(--brand-primary-700, #146b69) !important; }
.has-gv-color-dark-secondary-color { color: var(--brand-primary-600, #0f5452) !important; }

/* Belt-and-suspenders: override Unibiz's element-level link/button styles.
   The parent theme.json sets link color to gv-color-primary (purple).
   Our child theme.json overrides it, but some specificity battles remain. */
.wp-site-blocks a:not(.wp-block-button__link):not(.wp-block-navigation-item__content) {
  color: var(--brand-primary-700, #146b69);
}

/* Unibiz parent theme hardcodes purple on the "Read more" link in
   post excerpts (Query Loop, blog archive). Override with brand teal. */
.wp-block-post-excerpt__more-link {
  background-color: var(--brand-primary-700, #146b69) !important;
  color: #fff !important;
  border-radius: var(--radius-md, 18px);
  text-decoration: none;
  font-weight: 600;
  transition: background-color 160ms ease, transform 160ms ease;
}
.wp-block-post-excerpt__more-link:hover {
  background-color: var(--brand-primary-600, #0f5452) !important;
  transform: translateY(-1px);
}

body{
  color:var(--ink);
  background:var(--bg);
  font-family: var(--font-body);
  line-height: 1.6;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

/* ============================================================
   CANON #21 — Typography System (2026-03-10)
   Lora (serif) for headings, Inter (sans-serif) for everything else.
   No other typefaces. Fluid clamp() sizing. Parity with Web App.
   These rules use .wp-site-blocks specificity to defeat Unibiz
   parent theme selectors (Host Grotesk, system stacks).
   ============================================================ */

/* --- Body & paragraphs: Inter everywhere --- */
body,
.wp-site-blocks,
.wp-site-blocks p,
.wp-site-blocks li,
.wp-site-blocks td,
.wp-site-blocks th,
.wp-site-blocks blockquote,
.wp-site-blocks figcaption,
.wp-site-blocks .wp-block-paragraph {
  font-family: var(--font-body) !important;
}

/* --- Headings: Lora --- */
h1, h2, h3, h4, h5, h6,
.wp-block-heading,
.wp-site-blocks h1,
.wp-site-blocks h2,
.wp-site-blocks h3,
.wp-site-blocks h4,
.wp-site-blocks h5,
.wp-site-blocks h6 {
  font-family: var(--font-heading) !important;
}

/* --- Heading scale: fluid clamp() matching Web App globals.css --- */
h1, .wp-block-heading.has-large-font-size,
.wp-block-heading.has-x-large-font-size {
  font-size: clamp(2.2rem, 4.5vw, 3.4rem) !important;
  letter-spacing: -0.04em;
  line-height: 1.15;
}

/* Hero cover headings — match Web App marketing-hero h1 */
.wp-block-cover h1,
.wp-block-cover .wp-block-heading {
  font-size: clamp(1.75rem, 4vw, 2.75rem) !important;
  letter-spacing: -0.02em;
  line-height: 1.08;
}

.wp-site-blocks h2,
h2 {
  font-size: clamp(1.45rem, 2.2vw, 2rem) !important;
  letter-spacing: -0.03em;
  line-height: 1.2;
}

.wp-site-blocks h3,
h3 {
  font-size: clamp(1.1rem, 1.6vw, 1.3rem) !important;
  letter-spacing: -0.02em;
  font-weight: 700;
  line-height: 1.15;
}

/* --- Buttons: Inter (kill Host Grotesk) --- */
button,
.wp-block-button__link,
.wp-element-button,
input[type="submit"],
.wp-site-blocks button,
.wp-site-blocks .wp-block-button__link {
  font-family: var(--font-body) !important;
}

/* --- Links: Inter with proper sizing --- */
a {
  font-family: var(--font-body);
  color: var(--ink);
  text-decoration-color: rgba(15,33,51,.28);
  text-underline-offset: 2px;
}
a:hover {
  text-decoration-color: rgba(15,33,51,.55);
}

/* --- Navigation links: Inter, consistent weight --- */
.wp-block-navigation-item__content,
.wp-block-navigation a {
  font-family: var(--font-body) !important;
}

/* ============================================================
   COVER BLOCK FALLBACK — Critical positioning (2026-03-09)
   WP Core Cover block styles (position:absolute on background
   image, flex display on container) are missing on some pages.
   Without these, the Cover image renders in normal document
   flow, pushing the inner text content below the fold.
   These rules guarantee correct Cover layout regardless of
   WP Core stylesheet loading order.
   ============================================================ */

.wp-block-cover {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
}

.wp-block-cover > .wp-block-cover__image-background,
.wp-block-cover > img.wp-block-cover__image-background {
  position: absolute !important;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  z-index: 0;
}

.wp-block-cover > .wp-block-cover__background {
  position: absolute;
  inset: 0;
  z-index: 0;
}

.wp-block-cover > .wp-block-cover__inner-container {
  position: relative;
  z-index: 1;
  width: 100%;
}

/* WP Block Alignment — :where() specificity override.
   WP Core uses :where(.is-content-justification-center) which has zero
   specificity, so theme/plugin rules override it. Re-assert here. */
.wp-block-buttons.is-content-justification-center {
  justify-content: center;
}
.wp-block-buttons.is-content-justification-left {
  justify-content: flex-start;
}
.wp-block-buttons.is-content-justification-right {
  justify-content: flex-end;
}

/* Buttons — match Web App pill-shape gradient design */
.wp-element-button,
.wp-block-button__link{
  border-radius: var(--radius-full) !important;
  background: linear-gradient(135deg, #1f516d 0%, #146b69 72%, #1b8f8c 100%) !important;
  color: #fff !important;
  font-family: var(--font-body);
  font-weight: 700;
  letter-spacing: 0.005em;
  padding: 0.78rem 1.5rem;
  border: 0 !important;
  box-shadow: 0 2px 8px rgba(15,33,51,0.12), 0 0 0 1px rgba(15,33,51,0.06) inset;
}

/* Outline/secondary button variant */
.wp-block-button.is-style-outline .wp-block-button__link {
  background: transparent !important;
  border: 2px solid rgba(20, 107, 105, 0.55) !important;
  color: #146b69 !important;
  box-shadow: 0 4px 12px rgba(15,33,51,0.08);
}
.wp-block-button.is-style-outline .wp-block-button__link:hover {
  background: rgba(20,107,105,0.07) !important;
  border-color: #146b69 !important;
  color: #0f5452 !important;
}

/* Surfaces (use these as block “Additional CSS class(es)”) */
.surface-white{ background:var(--white); }
.surface-offwhite{ background:var(--bg); }

.surface-navy{
  background:var(--ink, #0f2133);
  color:#fff;
}
.surface-navy a{
  color:#fff;
  text-decoration-color:rgba(255,255,255,.35);
}
.surface-navy a:hover{
  text-decoration-color:rgba(255,255,255,.6);
}

/* Subtle divider utility */
.section-divider-subtle{
  border-top:1px solid var(--border);
}

/* === Enterprise Header Scroll (minimal, stable) === */

/* Header shell */
header.wp-block-template-part{
  position: sticky;
  top: 0;
  z-index: 9999;
  transition: background-color 200ms ease, box-shadow 200ms ease;
}

/* Horizontal gutters — prevent nav and CTA from touching viewport edges */
header.wp-block-template-part > .wp-block-group > .wp-block-group {
  padding-left: clamp(16px, 3vw, 40px);
  padding-right: clamp(16px, 3vw, 40px);
}

/* Logo — responsive dynamic sizing (clamp: 48px mobile → 80px desktop) */
header.wp-block-template-part .wp-block-site-logo {
  flex-shrink: 0;
  line-height: 0;
}
header.wp-block-template-part .wp-block-site-logo img {
  width: clamp(48px, 6vw + 16px, 80px) !important;
  height: auto !important;
  max-width: 100%;
  transition: width 200ms ease;
}
body.has-scrolled header.wp-block-template-part .wp-block-site-logo img {
  width: clamp(40px, 5vw + 12px, 64px) !important;
}

/* Inner padding row (your alignwide flex group) */
header.wp-block-template-part .wp-block-group.alignwide.is-layout-flex{
  transition: padding 200ms ease;
}

/* Header: always translucent white with strong blur (match Web App) */
header.wp-block-template-part{
  background: rgba(255,255,255,0.9) !important;
  backdrop-filter: blur(20px) saturate(1.8) !important;
  -webkit-backdrop-filter: blur(20px) saturate(1.8) !important;
  border-bottom: 1px solid rgba(20,107,105,0.12) !important;
  box-shadow: none !important;
  height: 60px;
}

/* Default (top of page): dark text */
body:not(.has-scrolled) header.wp-block-template-part .wp-block-site-title a,
body:not(.has-scrolled) header.wp-block-template-part .wp-block-navigation-item__content{
  color:#0f2133 !important;
  transition: color 200ms ease;
  text-decoration: none;
}

/* ============================================================
   VISUAL PARITY WITH WEB APP (app.jsgrantconsulting.com)
   Match nav uppercase, hero gradient, thesis italic,
   proof-strip horizontal layout.
   ============================================================ */

/* Nav links: uppercase + letter-spacing to match Web App */
header.wp-block-template-part .wp-block-navigation-item__content:not(.has-jsgc-cta *) {
  text-transform: uppercase;
  letter-spacing: 1.04px;
  font-size: 13px;
  font-weight: 700;
}

/* ============================================================
   HAMBURGER OVERLAY FIX
   The sticky header creates a new containing block for
   position:fixed descendants (CSS spec). The WP nav overlay
   resolves top:0/bottom:0 against the 49px header instead of
   the viewport. Force explicit height + override background
   so the mobile menu actually covers the screen.
   ============================================================ */
.wp-block-navigation__responsive-container.is-menu-open {
  height: 100dvh !important;
  height: 100vh !important; /* fallback for older browsers */
  width: 100vw !important;
  top: 0 !important;
  left: 0 !important;
  position: fixed !important;
  background: #fff !important;
  z-index: 100001 !important;
  overflow-y: auto !important;
  padding: 20px 24px !important;
  flex-direction: column !important;
}

/* Close button visible inside open overlay */
.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-close {
  position: absolute;
  top: 16px;
  right: 20px;
  z-index: 2;
  color: #0D1B2A;
}

/* Nav links stacked vertically inside overlay */
.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content {
  display: flex !important;
  flex-direction: column !important;
  gap: 8px;
  padding-top: 56px;
}

.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item__content {
  font-size: 1.125rem;
  padding: 10px 0;
  color: #0D1B2A !important;
}

/* Hamburger icon (mobile) inherits currentColor */
header.wp-block-template-part .wp-block-navigation__responsive-container-open,
header.wp-block-template-part .wp-block-navigation__responsive-container-open svg{
  color: currentColor;
}

/* Scrolled state: same translucent white (match Web App — no dark state) */
body.has-scrolled header.wp-block-template-part{
  background: rgba(255,255,255,0.9) !important;
  box-shadow: 0 1px 3px rgba(15,33,51,0.06) !important;
  border-bottom: 1px solid rgba(20,107,105,0.12) !important;
}

/* Scrolled: compress vertical padding slightly */
body.has-scrolled header.wp-block-template-part .wp-block-group.alignwide.is-layout-flex{
  padding-top: calc(var(--wp--preset--spacing--30) * .65) !important;
  padding-bottom: calc(var(--wp--preset--spacing--30) * .65) !important;
}

/* Scrolled: keep dark text (header stays translucent white) */
body.has-scrolled header.wp-block-template-part .wp-block-site-title a,
body.has-scrolled header.wp-block-template-part .wp-block-navigation-item__content{
  color:#0f2133 !important;
}

/* Scrolled: hamburger icon stays dark */
body.has-scrolled header.wp-block-template-part .wp-block-navigation__responsive-container-open{
  color:#0f2133;
}

/* Force hamburger overlay at 781px (WP core default is ~600px).
   Without this, nav links wrap at 600-780px creating a messy layout. */
@media (max-width: 781px) {
  header.wp-block-template-part .wp-block-navigation__responsive-container-open {
    display: flex !important;
    align-items: center;
    justify-content: center;
  }
  header.wp-block-template-part .wp-block-navigation__responsive-container:not(.is-menu-open) {
    display: none !important;
  }
}

/* Home helpers */
.jsg-hero .wp-block-group { max-width: 720px; }
.jsg-hero .wp-block-heading { line-height: 1.1; }
.jsg-hero-secondary-link a {
  color: var(--white, #fff);
  text-decoration: underline;
  text-underline-offset: 3px;
}

.jsg-thesis-band {
  border-top: 1px solid var(--border, rgba(13,27,42,.12));
  border-bottom: 1px solid var(--border, rgba(13,27,42,.12));
}
.jsg-thesis-copy { max-width: 76ch; }

.jsg-proof-strip .wp-block-column { position: relative; }
@media (min-width: 782px) {
  .jsg-proof-strip .wp-block-column:not(:last-child)::after {
    content: "";
    position: absolute;
    right: -10px;
    top: 8px;
    bottom: 8px;
    width: 1px;
    background: var(--border, rgba(13,27,42,.12));
  }
}

.jsg-case-studies .wp-block-column { display: flex; }
.jsg-case-studies .wp-block-column > .wp-block-group { width: 100%; }
.jsg-case-intro { max-width: 72ch; }

.jsg-insights-intro { max-width: 72ch; }
.jsg-insights .wp-block-post-template { gap: 24px; }
.jsg-insights .jsg-card { height: 100%; }
.jsg-insights .jsg-card-link { text-decoration: underline; text-underline-offset: 3px; }

/* Ensure all homepage top-level sections have horizontal padding */
.page-id-35 .entry-content > .wp-block-group,
.page-id-35 .entry-content > .wp-block-cover,
.page-id-35 .jsg-insights,
.page-id-35 .jsg-case-studies,
.page-id-35 .jsg-proof-strip {
  padding-left: clamp(20px, 3vw, 40px);
  padding-right: clamp(20px, 3vw, 40px);
}
/* Full-bleed hero negates the root padding to go edge-to-edge */
.page-id-35 .jsg-hero {
  padding-left: 0;
  padding-right: 0;
}

/* Home page (page 35): first-pass page-scoped polish (confirmed export sections only) */
body.page-id-35 {
  background-color: #F5F8FB;
  background-image:
    radial-gradient(880px 300px at -10% -8%, rgba(42,127,127,.07), transparent 72%),
    radial-gradient(760px 260px at 108% 104%, rgba(13,27,42,.06), transparent 74%),
    linear-gradient(to right, rgba(13,27,42,.018) 1px, transparent 1px),
    linear-gradient(to bottom, rgba(13,27,42,.018) 1px, transparent 1px);
  background-size: auto, auto, 34px 34px, 34px 34px;
}

body.page-id-35 .wp-site-blocks { background: transparent; }

/* Hero: full-width gradient (match Web App: navy→blue→teal at 135deg) */
.page-id-35 .jsg-hero {
  overflow: hidden;
  border: none;
  border-radius: 0;
  box-shadow: none;
  margin-left: calc(-1 * var(--wp--style--root--padding-left, 0px)) !important;
  margin-right: calc(-1 * var(--wp--style--root--padding-right, 0px)) !important;
  max-width: none !important;
}

.page-id-35 .jsg-hero .wp-block-cover__background {
  background: linear-gradient(135deg, rgb(15, 33, 51), rgb(26, 58, 84) 40%, rgb(20, 51, 50)) !important;
  opacity: 1 !important;
}

/* Hero content: centered, wider, no inner card */
.page-id-35 .jsg-hero .wp-block-cover__inner-container > .wp-block-group {
  max-width: min(800px, 100%);
  padding: clamp(16px, 2.2vw, 24px);
  border: none;
  border-radius: 0;
  background: transparent;
  box-shadow: none;
  backdrop-filter: none;
  -webkit-backdrop-filter: none;
  text-align: center;
  margin: 0 auto;
}

.page-id-35 .jsg-hero :where(h1, p:not(.wp-block-button__link)) {
  color: #fff;
}

.page-id-35 .jsg-hero .wp-block-buttons {
  margin-top: 6px;
  justify-content: center;
}

.page-id-35 .jsg-hero .wp-block-button__link {
  box-shadow: 0 10px 22px rgba(13,27,42,.22);
}

.page-id-35 .jsg-hero p.has-small-font-size {
  opacity: .96;
}

/* Thesis band: centered + italic to match Web App */
.page-id-35 .jsg-thesis-band {
  margin-top: 0;
  border: none;
  border-top: 1px solid rgba(20, 107, 105, 0.12);
  border-bottom: 1px solid rgba(20, 107, 105, 0.12);
  border-radius: 0;
  background: transparent;
  box-shadow: none;
  text-align: center;
  padding: clamp(36px, 5vw, 64px) clamp(20px, 3vw, 38px);
}

.page-id-35 .jsg-thesis-band .wp-block-heading {
  max-width: 620px;
  margin-left: auto;
  margin-right: auto;
  font-style: italic;
  font-size: clamp(20px, 2.4vw, 24px);
  line-height: 1.6;
  font-weight: 400;
}

/* Hide the kicker ("Our Approach") and CTA button — Web App
   shows just the italic quote in this section. */
.page-id-35 .jsg-thesis-band > .has-small-font-size:first-child {
  display: none;
}

/* Keep the H2 (italic quote) centered; jsg-thesis-copy is on the heading */
.page-id-35 .jsg-thesis-band .jsg-thesis-copy {
  max-width: 620px;
  margin-left: auto;
  margin-right: auto;
  text-align: center;
}

/* Hide the plain description paragraph — Web App thesis shows only the italic quote */
.page-id-35 .jsg-thesis-band > p:not(.has-small-font-size) {
  display: none;
}

.page-id-35 .jsg-thesis-band .wp-block-buttons {
  display: none;
}

/* Targets the confirmed "Free Compliance Tool" section directly following thesis band. */
.page-id-35 .entry-content > .jsg-thesis-band + .nfd-container {
  border: 1px solid rgba(13,27,42,.10);
  border-radius: 18px;
  background: rgba(255,255,255,.86);
  box-shadow: 0 12px 28px rgba(13,27,42,.06);
  padding-left: clamp(20px, 3vw, 34px);
  padding-right: clamp(20px, 3vw, 34px);
}

.page-id-35 .entry-content > .jsg-thesis-band + .nfd-container .wp-block-columns {
  align-items: stretch;
  gap: clamp(20px, 3vw, 32px);
}

.page-id-35 .entry-content > .jsg-thesis-band + .nfd-container .wp-block-column {
  display: flex;
  flex-direction: column;
  justify-content: center;
}

.page-id-35 .entry-content > .jsg-thesis-band + .nfd-container .wp-block-image img {
  border-radius: 18px;
  border: 1px solid rgba(13,27,42,.10);
  box-shadow: 0 10px 24px rgba(13,27,42,.08);
}

/* Capabilities: cleaner section (no card wrapper — match Web App) */
.page-id-35 .jsg-capabilities {
  border: none;
  border-radius: 0;
  background: transparent;
  box-shadow: none;
  padding-left: clamp(20px, 3vw, 34px);
  padding-right: clamp(20px, 3vw, 34px);
}

.page-id-35 .jsg-capabilities-intro {
  max-width: 70ch;
}

.page-id-35 .jsg-capabilities .wp-block-columns {
  align-items: stretch;
}

.page-id-35 .jsg-capabilities .wp-block-column {
  display: flex;
}

.page-id-35 .jsg-capabilities .wp-block-column > .wp-block-group {
  width: 100%;
}

.page-id-35 .jsg-capabilities .jsg-card {
  display: flex;
  flex-direction: column;
  height: 100%;
  border: 1px solid rgba(13,27,42,.10);
  border-radius: 18px;
  background: #fff;
  box-shadow: 0 8px 20px rgba(13,27,42,.06);
}

.page-id-35 .jsg-capabilities .jsg-card .jsg-card-link {
  margin-top: auto;
}

.page-id-35 .jsg-capabilities .jsg-card-link a {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  text-decoration: underline;
  text-underline-offset: 3px;
}

.page-id-35 .jsg-capabilities .jsg-card-link a::after {
  content: "→";
}

/* Homepage proof / trust strip and case studies (second-pass, mobile-focused) */
/* Proof strip: horizontal inline badges (match Web App .proof-strip) */
.page-id-35 .jsg-proof-strip {
  border: none;
  border-top: 1px solid rgba(20, 107, 105, 0.12);
  border-bottom: 1px solid rgba(20, 107, 105, 0.12);
  border-radius: 0;
  background: transparent;
  box-shadow: none;
  padding: 24px clamp(20px, 3vw, 34px) !important;
}

.page-id-35 .jsg-proof-strip .wp-block-columns {
  display: flex;
  justify-content: center;
  gap: 38px;
  flex-wrap: wrap;
}

.page-id-35 .jsg-proof-strip .wp-block-column {
  display: block;
  flex: none !important;
  width: auto !important;
}

/* Show only the heading as a teal badge, hide description text */
.page-id-35 .jsg-proof-strip .wp-block-column .wp-block-heading {
  font-size: 15px !important;
  font-weight: 700;
  letter-spacing: 0.6px;
  color: var(--brand-primary-700, #146b69) !important;
  margin: 0 !important;
  line-height: 1.4;
}

.page-id-35 .jsg-proof-strip .wp-block-column p:not(.has-small-font-size) {
  display: none;
}

.page-id-35 .jsg-proof-strip .wp-block-column p.has-small-font-size {
  display: none;
}

.page-id-35 .jsg-proof-strip .wp-block-column > .wp-block-group {
  width: auto;
}

.page-id-35 .jsg-proof-strip .wp-block-column > .wp-block-group,
.page-id-35 .jsg-proof-strip .wp-block-column > :where(.wp-block-heading, p, ul, ol):first-child:last-child {
  width: auto;
}

@media (max-width: 781px) {
  /* Proof strip: stays horizontal inline, wraps on small screens */
  .page-id-35 .jsg-proof-strip {
    border-radius: 0;
    padding: 20px 16px !important;
  }

  .page-id-35 .jsg-proof-strip .wp-block-columns {
    gap: 16px 24px !important;
    justify-content: center;
  }

  .page-id-35 .jsg-proof-strip .wp-block-column {
    border: none;
    border-radius: 0;
    background: transparent;
    box-shadow: none;
    padding: 0;
  }

  .page-id-35 .jsg-proof-strip .wp-block-column .wp-block-heading {
    font-size: 13px !important;
    text-align: center !important;
  }

  .page-id-35 .jsg-case-studies {
    padding-top: 36px !important;
  }
}

@media (max-width: 781px) {
  body.page-id-35 {
    background-image:
      radial-gradient(540px 180px at -10% -8%, rgba(42,127,127,.06), transparent 72%),
      linear-gradient(to right, rgba(13,27,42,.016) 1px, transparent 1px),
      linear-gradient(to bottom, rgba(13,27,42,.016) 1px, transparent 1px);
    background-size: auto, 26px 26px, 26px 26px;
  }

  .page-id-35 .jsg-hero .wp-block-cover__inner-container > .wp-block-group {
    padding: 14px;
    border-radius: 0;
  }

  .page-id-35 .jsg-thesis-band,
  .page-id-35 .entry-content > .jsg-thesis-band + .nfd-container,
  .page-id-35 .jsg-capabilities {
    border-radius: 0;
    padding-left: 16px;
    padding-right: 16px;
  }

  .page-id-35 .jsg-capabilities .jsg-card {
    box-shadow: 0 6px 16px rgba(13,27,42,.05);
  }
}

/* Services page: subtle page-wide texture + equal-height cards */
body.page-id-27 {
  background-color: #F5F8FB;
  background-image:
    radial-gradient(900px 320px at -10% -10%, rgba(42,127,127,.08), transparent 72%),
    radial-gradient(780px 260px at 110% 105%, rgba(13,27,42,.06), transparent 74%),
    linear-gradient(to right, rgba(13,27,42,.022) 1px, transparent 1px),
    linear-gradient(to bottom, rgba(13,27,42,.022) 1px, transparent 1px);
  background-size: auto, auto, 34px 34px, 34px 34px;
}

body.page-id-27 .wp-site-blocks { background: transparent; }

/* remove section-only texture; texture now comes from full page */
.page-id-27 .jsg-services-overview {
  position: relative;
  overflow: visible;
  border-radius: 0;
  padding: 0;
  background: transparent;
}
.page-id-27 .jsg-services-overview::before,
.page-id-27 .jsg-services-overview::after { content: none; }

/* equal-height cards */
.page-id-27 .jsg-services-overview .wp-block-columns { align-items: stretch; }
.page-id-27 .jsg-services-overview .wp-block-column { display: flex; }
.page-id-27 .jsg-services-overview .wp-block-column > .wp-block-group { width: 100%; }

.page-id-27 .jsg-service-card {
  display: flex;
  flex-direction: column;
  min-height: clamp(260px, 24vw, 320px);
  border: 1px solid rgba(13,27,42,.12);
  border-radius: 18px;
  background: #fff;
  box-shadow: 0 8px 20px rgba(13,27,42,.07);
}
.page-id-27 .jsg-service-card::before { content: none !important; }
.page-id-27 .jsg-service-card .jsg-service-card-link { margin-top: auto; }

/* Services page: first-pass page-scoped polish */

/* Hero is a Cover block — full-bleed gradient (match Web App + homepage hero) */
.page-id-27 .jsg-services-hero {
  position: relative;
  border: none;
  border-radius: 0;
  box-shadow: none;
  overflow: hidden;
  margin-left: calc(-1 * var(--wp--style--root--padding-left, 0px)) !important;
  margin-right: calc(-1 * var(--wp--style--root--padding-right, 0px)) !important;
  max-width: none !important;
}

/* Thesis is a standard text panel — white translucent background */
.page-id-27 .jsg-services-thesis {
  position: relative;
  border: 1px solid rgba(13,27,42,.10);
  border-radius: 18px;
  background: rgba(255,255,255,.88);
  box-shadow: 0 12px 28px rgba(13,27,42,.06);
  backdrop-filter: blur(4px);
  padding-left: clamp(20px, 3.2vw, 42px);
  padding-right: clamp(20px, 3.2vw, 42px);
}

/* Services hero: use gradient overlay matching Web App hero design.
   Override both the background overlay color AND hide the stock image
   so the hero uses the same navy→blue→teal gradient as homepage. */
.page-id-27 .jsg-services-hero .wp-block-cover__background {
  background: linear-gradient(135deg, #0f2133 0%, #1a3a54 40%, #143332 100%) !important;
  opacity: 1 !important;
}

/* Hide stock image — gradient provides the visual instead */
.page-id-27 .jsg-services-hero .wp-block-cover__image-background {
  opacity: 0 !important;
}

/* Hero inner content: white text on dark overlay, with panel gutters */
.page-id-27 .jsg-services-hero > .wp-block-cover__inner-container {
  padding: clamp(32px, 4vw, 56px) clamp(20px, 3.2vw, 42px);
  color: #fff;
}

.page-id-27 .jsg-services-hero .wp-block-cover__inner-container :where(h1, h2, h3, p) {
  color: #fff;
}

.page-id-27 .jsg-services-hero .wp-block-cover__inner-container a:not(.wp-block-button__link) {
  color: #fff;
  text-decoration-color: rgba(255,255,255,.5);
}

/* Tighten thesis panel on desktop; hero is now full-bleed */
@media (min-width: 782px) {
  body.page-id-27 .entry-content > .jsg-services-thesis {
    max-width: 1080px;
  }
}

/* Services thesis stays left-aligned; hero is centered (matching homepage hero) */
.page-id-27 .jsg-services-thesis > * {
  margin-left: 0 !important;
  margin-right: auto !important;
}
.page-id-27 .jsg-services-hero > .wp-block-cover__inner-container {
  text-align: center;
  max-width: min(800px, 100%);
  margin: 0 auto;
}

.page-id-27 .jsg-services-overview > .wp-block-heading,
.page-id-27 .jsg-services-overview > .jsg-services-intro {
  margin-left: 0 !important;
  margin-right: auto !important;
}

.page-id-27 .jsg-services-hero .wp-block-heading {
  max-width: none;
  letter-spacing: -0.02em;
}

.page-id-27 .jsg-services-hero .wp-block-buttons {
  margin-top: 4px;
  justify-content: center;
}

.page-id-27 .jsg-services-hero .wp-block-button__link,
.page-id-27 .jsg-services-cta-band .wp-block-button__link {
  font-weight: 600;
  min-width: 240px;
}

.page-id-27 .jsg-services-intro,
.page-id-27 .jsg-services-thesis-copy {
  max-width: 64ch;
}

.page-id-27 .jsg-services-secondary a,
.page-id-27 .jsg-services-cta-secondary a {
  text-decoration: underline;
  text-underline-offset: 3px;
}

.page-id-27 .jsg-services-overview > .wp-block-heading {
  letter-spacing: -0.02em;
}

.page-id-27 .jsg-service-card {
  transition: transform 160ms ease, box-shadow 160ms ease, border-color 160ms ease;
}

.page-id-27 .jsg-service-card:hover,
.page-id-27 .jsg-service-card:focus-within {
  transform: translateY(-2px);
  border-color: rgba(42,127,127,.28);
  box-shadow: 0 14px 30px rgba(13,27,42,.10);
}

.page-id-27 .jsg-service-card .wp-block-heading {
  line-height: 1.2;
}

.page-id-27 .jsg-service-card p {
  margin-top: 0;
}

.page-id-27 .jsg-service-card-link a {
  text-decoration: underline;
  text-underline-offset: 3px;
  font-weight: 600;
}

.page-id-27 .jsg-service-card-link a::after {
  content: " ->";
}

.page-id-27 .jsg-service-detail[id] {
  scroll-margin-top: 96px;
  border-top: 1px solid rgba(13,27,42,.08);
  border-bottom: 1px solid rgba(13,27,42,.08);
}

.page-id-27 .jsg-service-detail .wp-block-columns {
  align-items: start;
}

.page-id-27 .jsg-service-detail .wp-block-list {
  margin-block: 10px 0;
  padding-left: 1.15rem;
}

.page-id-27 .jsg-service-detail .wp-block-list li + li {
  margin-top: 8px;
}

.page-id-27 .jsg-service-detail-panel {
  box-shadow: 0 8px 18px rgba(13,27,42,.06);
}

.page-id-27 .jsg-services-cta-band {
  position: relative;
  overflow: hidden;
}

.page-id-27 .jsg-services-cta-band::before {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  background:
    radial-gradient(640px 220px at 8% 8%, rgba(42,127,127,.16), transparent 72%),
    radial-gradient(520px 220px at 92% 90%, rgba(255,255,255,.08), transparent 74%);
}

.page-id-27 .jsg-services-cta-band > * {
  position: relative;
}

.page-id-27 .jsg-services-cta-band .wp-block-heading {
  max-width: 22ch;
  margin-inline: auto;
  line-height: 1.1;
}

.page-id-27 .jsg-services-cta-band .wp-block-buttons {
  margin-top: 6px;
}

@media (max-width: 781px) {
  body.page-id-27 {
    background-image:
      radial-gradient(520px 180px at -12% -8%, rgba(42,127,127,.07), transparent 72%),
      linear-gradient(to right, rgba(13,27,42,.018) 1px, transparent 1px),
      linear-gradient(to bottom, rgba(13,27,42,.018) 1px, transparent 1px);
    background-size: auto, 26px 26px, 26px 26px;
  }
  .page-id-27 .jsg-service-card { min-height: 0; }
  .page-id-27 .jsg-services-hero {
    border-radius: 0;
    box-shadow: none;
  }
  .page-id-27 .jsg-services-thesis {
    color: var(--color-text-primary, #0f2133);
    border-radius: 18px;
    box-shadow: 0 8px 18px rgba(13,27,42,.05);
    padding-left: 16px;
    padding-right: 16px;
  }
  .page-id-27 .jsg-services-hero .wp-block-heading {
    max-width: none;
  }
  .page-id-27 .jsg-services-hero .wp-block-button__link,
  .page-id-27 .jsg-services-cta-band .wp-block-button__link {
    min-width: 0;
    width: 100%;
  }
  .page-id-27 .jsg-services-overview .wp-block-columns {
    gap: 16px;
  }
  .page-id-27 .jsg-services-overview > .wp-block-heading {
    margin-bottom: 4px;
  }
  .page-id-27 .jsg-service-card {
    border-radius: 12px;
    box-shadow: 0 6px 14px rgba(13,27,42,.06);
    text-align: left;
  }
  .page-id-27 .jsg-service-card.has-global-padding {
    padding: 18px 16px !important;
  }
  .page-id-27 .jsg-service-card > * {
    margin-left: 0 !important;
    margin-right: 0 !important;
    width: 100%;
  }
  .page-id-27 .jsg-service-card .wp-block-heading {
    line-height: 1.12;
  }
  .page-id-27 .jsg-service-card p:not(.jsg-service-card-link) {
    line-height: 1.38;
  }
  .page-id-27 .jsg-service-card .jsg-service-card-link {
    margin-top: 8px;
  }
  .page-id-27 .jsg-service-card:hover,
  .page-id-27 .jsg-service-card:focus-within {
    transform: none;
  }
  .page-id-27 .jsg-service-detail[id] {
    scroll-margin-top: 72px;
    padding-top: 40px !important;
    padding-bottom: 40px !important;
  }
  .page-id-27 .jsg-service-detail .wp-block-columns {
    gap: 16px;
  }
  .page-id-27 .jsg-service-detail .wp-block-list {
    margin-block: 8px 0;
    padding-left: 1rem;
  }
  .page-id-27 .jsg-service-detail .wp-block-list li + li {
    margin-top: 6px;
  }
  .page-id-27 .jsg-service-detail-panel {
    border-radius: 10px;
  }
  .page-id-27 .jsg-service-detail-panel.has-global-padding {
    padding: 14px !important;
  }
  .page-id-27 .jsg-services-cta-band {
    padding-top: 48px !important;
    padding-bottom: 48px !important;
  }
  .page-id-27 .jsg-services-cta-band .wp-block-heading {
    max-width: 17ch;
    line-height: 1.08;
  }
  .page-id-27 .jsg-services-cta-band .wp-block-buttons,
  .page-id-27 .jsg-services-cta-band .wp-block-button {
    width: 100%;
  }
  .page-id-27 .jsg-services-cta-secondary {
    margin-top: 4px;
  }

  /* Services page mobile footer rules moved to global scope (2026-03-09) */
}

/* Optional: removes duplicate template title on Assessment page only */
body:has(.jsg-assessment-tool) .wp-block-post-title { display: none; }
body:has(.jsg-assessment-tool) .wp-site-blocks > main { padding-top: 0 !important; }
body:has(.jsg-assessment-tool) .entry-content.wp-block-post-content { margin-top: 0 !important; }

/* === Assessment page (canonical) === */
.jsg-assessment-tool{
  position: relative;
  isolation: isolate;
  padding-top: 6px;
  padding-bottom: 56px;
}

.jsg-assessment-tool::before{
  content: "";
  position: absolute;
  inset: 0;
  z-index: -1;
  pointer-events: none;
  background:
    radial-gradient(720px 240px at 8% 14%, rgba(42,127,127,.07), transparent 72%),
    radial-gradient(620px 220px at 92% 30%, rgba(13,27,42,.06), transparent 74%),
    linear-gradient(to right, rgba(13,27,42,.018) 1px, transparent 1px),
    linear-gradient(to bottom, rgba(13,27,42,.018) 1px, transparent 1px),
    linear-gradient(180deg, #f8fafc 0%, #f4f7fa 100%);
  background-size: auto, auto, 32px 32px, 32px 32px, auto;
}

.jsg-assessment-tool > .wp-block-group{
  width: min(1120px, calc(100% - 32px));
  margin-inline: auto;
}

.jsg-assessment-hero{
  border: 1px solid rgba(13,27,42,.12);
  border-radius: 18px;
  background: rgba(255,255,255,.92);
  box-shadow: 0 14px 34px rgba(13,27,42,.10);
}

.jsg-assessment-hero .wp-block-heading{ line-height:1.08; max-width:22ch; }
.jsg-assessment-intro{ max-width:66ch; }
.jsg-assessment-secondary a{ text-decoration: underline; text-underline-offset: 3px; }
.jsg-assessment-hero .wp-block-button__link{
  min-width: 240px;
  font-weight: 600;
}

.jsg-assessment-proof .wp-block-columns{ align-items: stretch; }
.jsg-assessment-proof .wp-block-column{ display:flex; }
.jsg-assessment-proof .wp-block-column > .wp-block-group{ width:100%; }

.jsg-assessment-proof-card{
  height:100%;
  border:1px solid rgba(13,27,42,.12);
  border-radius:18px;
  background:#fff;
  box-shadow:0 6px 16px rgba(13,27,42,.06);
}
.jsg-assessment-proof-card::before{
  content:"";
  display:block;
  width:44px;
  height:3px;
  border-radius:999px;
  background:linear-gradient(90deg, #2A7F7F, rgba(42,127,127,.25));
  margin-bottom:10px;
}

/* === Assessment embed: dynamic-height iframe ===
   Height is managed by jsgc-embed-resizer.js via postMessage from the child frame.
   Do NOT cap height here — the JS sets iframe.style.height dynamically to match
   content height. CSS !important on height/max-height would override those inline
   styles and lock the iframe to a fixed size, causing content to be cut off. */
.jsg-assessment-tool .jsgc-embed-wrap,
.jsg-assessment-tool .jsgc-embed-wrap--capped {
  width: 100%;
  border: 1px solid var(--border, rgba(13,27,42,.12));
  border-radius: 18px;
  background: var(--color-white, #fff);
  box-shadow: 0 18px 44px rgba(13,27,42,.12);
  overflow: visible;
}

.jsg-assessment-tool .jsgc-embed-wrap iframe#grant-readiness-tool-frame {
  width: 100%;
  border: 0;
  display: block;
  min-height: 320px;
  /* Height is set dynamically by jsgc-embed-resizer.js — no cap here */
}

/* === Mobile header CTA fix === */
@media (max-width: 600px) {
  header.wp-block-template-part .wp-block-button {
    display: none !important;
  }
}

/* ============================================================
   UI/UX POLISH — Round 2
   Card hovers, button transitions, section labels, blog layout,
   case study cards, image radius, "View all" link
   ============================================================ */

/* --- Global button hover transitions --- */
.wp-element-button,
.wp-block-button__link {
  transition: transform 160ms ease, box-shadow 160ms ease, background-color 160ms ease, opacity 160ms ease;
}
.wp-element-button:hover,
.wp-block-button__link:hover {
  transform: translateY(-1px);
  box-shadow: 0 4px 16px rgba(20, 107, 105, 0.18);
  filter: brightness(1.04);
}
.wp-element-button:active,
.wp-block-button__link:active {
  transform: translateY(0);
  box-shadow: 0 6px 14px rgba(13,27,42,.10);
}

/* --- Disabled button/input states --- */
button:disabled,
.wp-element-button:disabled,
.wp-block-button__link:disabled,
input:disabled,
textarea:disabled,
select:disabled {
  opacity: 0.48;
  cursor: not-allowed;
  pointer-events: none;
  box-shadow: none;
  transform: none;
  filter: grayscale(0.4);
}

/* --- Accessibility: visible focus ring for keyboard users (WCAG 2.4.7) --- */
a:focus-visible,
button:focus-visible,
.wp-element-button:focus-visible,
.wp-block-button__link:focus-visible,
input:focus-visible,
textarea:focus-visible,
select:focus-visible,
summary:focus-visible,
[tabindex]:focus-visible {
  outline: 3px solid rgba(20, 107, 105, 0.22);
  outline-offset: 2px;
  border-radius: 4px;
  box-shadow: 0 0 0 4px rgba(20, 107, 105, 0.08), 0 0 12px rgba(20, 107, 105, 0.06);
}

/* --- Skip to content link (a11y, WCAG 2.4.1) --- */
.skip-to-content {
  position: absolute;
  left: -9999px;
  top: auto;
  width: 1px;
  height: 1px;
  overflow: hidden;
  z-index: 99999;
  background: var(--brand-primary-700, #146b69);
  color: #fff;
  padding: 12px 24px;
  font-weight: 600;
  text-decoration: none;
  border-radius: 0 0 8px 0;
}
.skip-to-content:focus {
  position: fixed;
  left: 0;
  top: 0;
  width: auto;
  height: auto;
  overflow: visible;
}

/* --- Global image border-radius --- */
.wp-block-image img,
.wp-block-cover img,
.wp-block-post-featured-image img,
.wp-block-media-text__media img {
  border-radius: var(--radius-sm, 10px);
}

/* --- Section label polish (THESIS, CAPABILITIES, INSIGHTS, etc.) --- */
.page-id-35 .jsg-thesis-band p.has-small-font-size,
.page-id-35 .jsg-capabilities p.has-small-font-size,
.page-id-35 .jsg-proof-strip p.has-small-font-size,
.page-id-35 .jsg-case-studies p.has-small-font-size,
.page-id-35 .jsg-insights p.has-small-font-size {
  letter-spacing: .12em;
  text-transform: uppercase;
  font-weight: 600;
}

/* --- Homepage capability card hover --- */
.page-id-35 .jsg-capabilities .jsg-card {
  transition: transform 200ms ease, box-shadow 200ms ease, border-color 200ms ease;
}
.page-id-35 .jsg-capabilities .jsg-card:hover {
  transform: translateY(-3px);
  border-color: rgba(0,95,107,.22);
  box-shadow: 0 16px 36px rgba(13,27,42,.12);
}

/* --- Case study cards — add visible card boundaries --- */
.page-id-35 .jsg-case-studies .wp-block-column > .wp-block-group {
  border: 1px solid rgba(13,27,42,.10);
  border-radius: 18px;
  background: #fff;
  box-shadow: 0 8px 20px rgba(13,27,42,.06);
  padding: clamp(18px, 2.4vw, 28px);
  transition: transform 200ms ease, box-shadow 200ms ease, border-color 200ms ease;
}
.page-id-35 .jsg-case-studies .wp-block-column > .wp-block-group:hover {
  transform: translateY(-3px);
  border-color: rgba(0,95,107,.22);
  box-shadow: 0 16px 36px rgba(13,27,42,.12);
}

/* Green top accent bar on case study cards (synced with webapp --brand-green) */
.page-id-35 .jsg-case-studies .wp-block-column > .wp-block-group::before {
  content: "";
  display: block;
  width: 48px;
  height: 3px;
  border-radius: 999px;
  background: linear-gradient(90deg, #7fba27, rgba(127,186,39,.35));
  margin-bottom: 12px;
}

/* --- Insights section: "View all insights" link centered and styled --- */
.page-id-35 .jsg-insights .jsg-card-link.has-text-align-left,
.page-id-35 .jsg-insights > p:last-child {
  text-align: center !important;
}
.page-id-35 .jsg-insights > p:last-child a,
.page-id-35 .jsg-insights .jsg-insights-view-all a {
  display: inline-block;
  padding: 10px 28px;
  border: 2px solid rgba(0,95,107,.3);
  border-radius: var(--radius-md, 18px);
  font-weight: 600;
  text-decoration: none;
  transition: background 160ms ease, border-color 160ms ease, color 160ms ease;
}
.page-id-35 .jsg-insights > p:last-child a:hover,
.page-id-35 .jsg-insights .jsg-insights-view-all a:hover {
  background: var(--brand-primary-700, #146b69);
  border-color: var(--brand-primary-700, #146b69);
  color: var(--color-text-inverse, #fff);
}

/* --- Blog single post layout fixes --- */
/* Child theme single.html provides a styled centered template title.
   Hide the duplicate H1 that lives inside the post content body. */
.single-post .wp-block-post-content > h1:first-child {
  display: none !important;
}

/* Make the content column expand to full width */
.single-post .wp-block-columns > .wp-block-column.unibiz-comment-column {
  flex-basis: 100% !important;
  max-width: 100% !important;
}
/* Center the post content at readable width */
.single-post .wp-block-post-content {
  max-width: 780px;
  margin-inline: auto;
}

/* Blog featured image rounding */
.single-post .wp-block-post-featured-image img {
  border-radius: var(--radius-md, 18px);
  box-shadow: 0 8px 20px rgba(13,27,42,.08);
}

/* Blog post metadata styling */
.single-post .wp-block-post-date,
.single-post .wp-block-post-author-name {
  color: var(--muted, #3f5468);
  font-size: 0.875rem;
}

/* Blog post body typography polish */
.single-post .wp-block-post-content p {
  line-height: 1.72;
  max-width: 68ch;
}

.single-post .wp-block-post-content h2,
.single-post .wp-block-post-content h3 {
  margin-top: 2rem;
  margin-bottom: 0.75rem;
  letter-spacing: -0.01em;
}


/* --- Suppress Jetpack sharing/subscription/likes UI globally --- */
#jp-post-flair,
.sharedaddy,
.sharedaddy-wrapper,
.sd-sharing-enabled,
.sd-like,
.sd-like-enabled,
.sd-like-container,
.sd-content,
.sd-block.sd-social,
.sd-social-official,
.post-likes-widget,
.post-likes-widget-placeholder,
.wp-block-jetpack-sharing-buttons,
.wp-block-jetpack-subscriptions,
.wp-block-jetpack-like,
.widget_blog_subscription,
.jetpack_subscription_widget,
.jetpack-subscribe-floating-button,
.jetpack-sharing-buttons-container {
  display: none !important;
}
/* Catch-all: hide any remaining Jetpack social/like elements (prevents FOUS) */
[class*="sharedaddy"],
[class*="sd-like"],
[class*="jetpack-social"],
[class*="post-likes-widget"] {
  visibility: hidden !important;
  height: 0 !important;
  overflow: hidden !important;
}

/* Legal disclaimer notice styling (used on assessment tool, services, contact pages) */
.jsg-legal-notice {
  font-size: 0.8125rem;
  line-height: 1.5;
  color: var(--color-text-muted, #666);
  border-left: 3px solid var(--brand-accent-400, #7fba27);
  padding-left: 16px;
  margin-top: 24px;
}

/* --- Mobile adjustments for new polish --- */
@media (max-width: 781px) {
  .page-id-35 .jsg-case-studies .wp-block-column > .wp-block-group {
    padding: 16px;
    border-radius: 12px;
    box-shadow: 0 6px 14px rgba(13,27,42,.05);
  }
  .page-id-35 .jsg-case-studies .wp-block-column > .wp-block-group:hover {
    transform: none;
  }
  .page-id-35 .jsg-capabilities .jsg-card:hover {
    transform: none;
  }
  .single-post .wp-block-post-content {
    max-width: 100%;
    padding-left: 16px;
    padding-right: 16px;
  }
}

/* ============================================================
   ABOUT PAGE — Scoped polish (page-id-28)
   ============================================================ */

/* Page-wide subtle texture */
body.page-id-28 {
  background-color: #F5F8FB;
  background-image:
    radial-gradient(860px 300px at -8% -8%, rgba(42,127,127,.06), transparent 72%),
    radial-gradient(740px 250px at 106% 106%, rgba(13,27,42,.05), transparent 74%),
    linear-gradient(to right, rgba(13,27,42,.016) 1px, transparent 1px),
    linear-gradient(to bottom, rgba(13,27,42,.016) 1px, transparent 1px);
  background-size: auto, auto, 34px 34px, 34px 34px;
}
body.page-id-28 .wp-site-blocks { background: transparent; }

/* About hero */
.page-id-28 .jsg-about-hero {
  border: 1px solid rgba(13,27,42,.10);
  border-radius: 18px;
  background: rgba(255,255,255,.88);
  box-shadow: 0 12px 28px rgba(13,27,42,.06);
  padding-left: clamp(20px, 3vw, 38px);
  padding-right: clamp(20px, 3vw, 38px);
}

/* Founder section panel */
.page-id-28 .jsg-about-founder {
  border: 1px solid rgba(13,27,42,.10);
  border-radius: 18px;
  background: rgba(255,255,255,.88);
  box-shadow: 0 12px 28px rgba(13,27,42,.06);
}

/* Methodology section */
.page-id-28 .jsg-about-methodology {
  border: 1px solid rgba(13,27,42,.10);
  border-radius: 18px;
  background: rgba(255,255,255,.88);
  box-shadow: 0 12px 28px rgba(13,27,42,.06);
  padding-left: clamp(20px, 3vw, 34px);
  padding-right: clamp(20px, 3vw, 34px);
}

/* About page cards: hover lift */
.page-id-28 .jsg-card {
  transition: transform 200ms ease, box-shadow 200ms ease, border-color 200ms ease;
  border: 1px solid rgba(13,27,42,.10);
  border-radius: 18px;
  background: #fff;
  box-shadow: 0 8px 20px rgba(13,27,42,.06);
}
.page-id-28 .jsg-card:hover {
  transform: translateY(-3px);
  border-color: rgba(0,95,107,.22);
  box-shadow: 0 16px 36px rgba(13,27,42,.12);
}

/* About CTA band polish */
.page-id-28 .jsg-cta-band {
  position: relative;
  overflow: hidden;
}
.page-id-28 .jsg-cta-band::before {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  background:
    radial-gradient(640px 220px at 8% 8%, rgba(42,127,127,.16), transparent 72%),
    radial-gradient(520px 220px at 92% 90%, rgba(255,255,255,.08), transparent 74%);
}
.page-id-28 .jsg-cta-band > * {
  position: relative;
}


@media (max-width: 781px) {
  body.page-id-28 {
    background-image:
      radial-gradient(520px 170px at -10% -8%, rgba(42,127,127,.05), transparent 72%),
      linear-gradient(to right, rgba(13,27,42,.014) 1px, transparent 1px),
      linear-gradient(to bottom, rgba(13,27,42,.014) 1px, transparent 1px);
    background-size: auto, 26px 26px, 26px 26px;
  }
  .page-id-28 .jsg-about-hero,
  .page-id-28 .jsg-about-founder,
  .page-id-28 .jsg-about-methodology {
    border-radius: 18px;
    padding-left: 16px;
    padding-right: 16px;
  }
  .page-id-28 .jsg-card:hover {
    transform: none;
  }
}

/* ============================================================
   CONTACT PAGE — Scoped polish (page-id-30)
   ============================================================ */

body.page-id-30 {
  background-color: #F5F8FB;
}
body.page-id-30 .wp-site-blocks { background: transparent; }

/* Contact FAQ accordion polish */
body.page-id-30 .wp-block-details {
  border-color: rgba(13,27,42,.10) !important;
  border-radius: 12px !important;
  transition: box-shadow 200ms ease, border-color 200ms ease;
}
body.page-id-30 .wp-block-details[open] {
  border-color: rgba(0,95,107,.22) !important;
  box-shadow: 0 8px 20px rgba(13,27,42,.08);
}
body.page-id-30 .wp-block-details summary {
  cursor: pointer;
}


/* ============================================================
   DESKTOP IMAGE OPTIMIZATION — Phase 1 (2026-03-05)
   Prevents portrait images in Cover blocks from causing scroll
   overflow and layout breakage on wide viewports.
   ============================================================ */

@media (min-width: 782px) {
  /* Homepage hero: cap height so 1210×1815px portrait doesn't dominate */
  .page-id-35 .jsg-hero {
    max-height: 580px;
    min-height: 400px;
  }
  .page-id-35 .jsg-hero .wp-block-cover__image-background {
    object-fit: cover;
    object-position: center 20%;
    height: 100% !important;
    width: 100% !important;
  }

  /* Services page hero (hero IS the Cover block — use compound selector) */
  .page-id-27 .jsg-services-hero.wp-block-cover {
    max-height: 460px;
    min-height: 360px;
  }
  .page-id-27 .jsg-services-hero > .wp-block-cover__image-background {
    object-fit: cover;
    object-position: center top;
  }

  /* Safety net: any Cover block in entry content */
  .entry-content .wp-block-cover {
    max-height: 640px;
  }
  .entry-content .wp-block-cover .wp-block-cover__image-background {
    object-fit: cover;
    object-position: center center;
  }
}

/* ============================================================
   HEADER NAV — Assessment CTA Button (Phase 1)
   Applied via CSS class "has-jsgc-cta" on the nav link item.
   Set via wp_navigation REST API update.
   ============================================================ */

header.wp-block-template-part .wp-block-navigation-item.has-jsgc-cta > a.wp-block-navigation-item__content {
  display: inline-flex;
  align-items: center;
  padding: 0.42rem 1.05rem;
  border-radius: var(--radius-full, 999px);
  font-weight: 700;
  font-size: 13px;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  background: linear-gradient(135deg, #1f516d 0%, #146b69 72%, #1b8f8c 100%);
  color: #fff !important;
  text-decoration: none !important;
  transition: background 150ms ease, transform 150ms ease, box-shadow 150ms ease;
  box-shadow: 0 2px 8px rgba(15,33,51,0.12), 0 0 0 1px rgba(15,33,51,0.06) inset;
  min-height: 36px;
}

header.wp-block-template-part .wp-block-navigation-item.has-jsgc-cta > a.wp-block-navigation-item__content:hover {
  background: linear-gradient(135deg, #1a445d 0%, #115f5d 65%, #177f7d 100%);
  transform: translateY(-1px);
  box-shadow: 0 4px 14px rgba(15,33,51,0.18), 0 0 0 1px rgba(15,33,51,0.08) inset;
}

/* Scrolled state: same gradient (header stays translucent white) */
body.has-scrolled header.wp-block-template-part .wp-block-navigation-item.has-jsgc-cta > a.wp-block-navigation-item__content {
  background: linear-gradient(135deg, #1f516d 0%, #146b69 72%, #1b8f8c 100%);
  box-shadow: 0 2px 8px rgba(15,33,51,0.12), 0 0 0 1px rgba(15,33,51,0.06) inset;
}

/* Mobile: full-width in hamburger menu */
@media (max-width: 781px) {
  header.wp-block-template-part .wp-block-navigation-item.has-jsgc-cta > a.wp-block-navigation-item__content {
    display: block;
    text-align: center;
    padding: 10px 20px;
    margin-top: 6px;
    border-radius: 8px;
  }
}

/* ============================================================
   BULLET POINT RESTORE
   Parent Unibiz theme preset.css sets `ul > li { list-style: none }`
   globally. Override here to restore disc bullets in all content
   areas while preserving no-bullet behavior in nav/footer/sidebar.
   ============================================================ */

.wp-site-blocks :where(
  .entry-content,
  .wp-block-post-content,
  .wp-block-group,
  .wp-block-column,
  .wp-block-cover__inner-container
) ul:not(.wp-block-navigation__container):not(.wp-block-social-links):not(.wp-block-post-template) > li {
  list-style: disc;
}

.wp-site-blocks :where(
  .entry-content,
  .wp-block-post-content,
  .wp-block-group,
  .wp-block-column,
  .wp-block-cover__inner-container
) ol:not(.wp-block-navigation__container) > li {
  list-style: decimal;
}

/* Ensure adequate indent so bullets are visible (not clipped) */
.wp-site-blocks :where(
  .entry-content,
  .wp-block-post-content,
  .wp-block-group,
  .wp-block-column
) ul:not(.wp-block-navigation__container):not(.wp-block-social-links):not(.wp-block-post-template),
.wp-site-blocks :where(
  .entry-content,
  .wp-block-post-content,
  .wp-block-group,
  .wp-block-column
) ol:not(.wp-block-navigation__container) {
  padding-left: 1.5em;
}

/* ============================================================
   DESKTOP IMAGE OPTIMIZATION — Phase 2 (2026-03-07)
   Phase 1 (above) capped Cover hero blocks.
   Phase 2 caps regular wp-block-image and media-text blocks so
   portrait images don't dominate viewport height on desktop.
   ============================================================ */

@media (min-width: 782px) {
  /* Cap portrait images inserted as standalone blocks in content */
  .entry-content .wp-block-image img,
  .wp-block-post-content .wp-block-image img,
  .wp-block-group .wp-block-image img {
    max-height: 560px;
    width: auto;
    max-width: 100%;
  }

  /* Media-text blocks: keep image in sync with text column height */
  .wp-block-media-text .wp-block-media-text__media img {
    max-height: 480px;
    object-fit: cover;
    object-position: center center;
    width: 100%;
  }

  /* Blog/archive featured image thumbnails */
  .wp-block-post-featured-image:not(.single-post *) img {
    max-height: 280px;
    object-fit: cover;
    object-position: center top;
    width: 100%;
  }
}

/* ============================================================
   HOMEPAGE BLOG IMAGES — Skeleton placeholder (2026-03-09)
   Featured images in the Query Loop are ~1,700px below fold and
   use loading="lazy". The shimmer placeholder prevents a blank
   void before images load on scroll.
   ============================================================ */

.page-id-35 .jsg-insights .wp-block-post-featured-image {
  background: linear-gradient(110deg, #f0f4f8 30%, #e8edf2 50%, #f0f4f8 70%);
  background-size: 200% 100%;
  animation: jsgc-shimmer 1.8s ease-in-out infinite;
  border-radius: var(--radius-sm, 10px);
  min-height: 180px;
  overflow: hidden;
}

@keyframes jsgc-shimmer {
  0%   { background-position: 200% 0; }
  100% { background-position: -200% 0; }
}

/* Once image loads, it sits above the shimmer background */
.page-id-35 .jsg-insights .wp-block-post-featured-image img {
  position: relative;
  z-index: 1;
}

/* Blog archive page: same skeleton for post grid */
.blog .wp-block-post-featured-image,
.archive .wp-block-post-featured-image {
  background: linear-gradient(110deg, #f0f4f8 30%, #e8edf2 50%, #f0f4f8 70%);
  background-size: 200% 100%;
  animation: jsgc-shimmer 1.8s ease-in-out infinite;
  border-radius: var(--radius-sm, 10px);
  min-height: 160px;
  overflow: hidden;
}

.blog .wp-block-post-featured-image img,
.archive .wp-block-post-featured-image img {
  position: relative;
  z-index: 1;
}

/* ============================================================
   HOMEPAGE + BLOG — Card-style post items (match Web App .insight-card)
   Equal-height cards with image, body, meta layout.
   ============================================================ */

.page-id-35 .jsg-insights .wp-block-post-template,
.blog .wp-block-post-template,
.archive .wp-block-post-template {
  align-items: stretch;
  gap: 1.25rem;
}

.page-id-35 .jsg-insights .wp-block-post,
.blog .wp-block-post,
.archive .wp-block-post {
  display: flex;
}

/* Card wrapper: matches Web App .insight-card */
.page-id-35 .jsg-insights .wp-block-post > .wp-block-group,
.page-id-35 .jsg-insights .jsg-card,
.blog .wp-block-post > .wp-block-group,
.archive .wp-block-post > .wp-block-group {
  width: 100%;
  display: flex;
  flex-direction: column;
  background: #fff;
  border: 1px solid rgba(15, 33, 51, 0.07);
  border-radius: var(--radius-md, 18px);
  overflow: hidden;
  transition: box-shadow 220ms ease, transform 180ms ease;
}

.page-id-35 .jsg-insights .wp-block-post > .wp-block-group:hover,
.page-id-35 .jsg-insights .jsg-card:hover,
.blog .wp-block-post > .wp-block-group:hover,
.archive .wp-block-post > .wp-block-group:hover {
  box-shadow: var(--shadow-lift, 0 4px 12px rgba(15,33,51,0.06), 0 16px 32px rgba(15,33,51,0.09));
  transform: translateY(-2px);
}

/* Featured image inside blog cards */
.page-id-35 .jsg-insights .wp-block-post-featured-image,
.blog .wp-block-post-featured-image,
.archive .wp-block-post-featured-image {
  border-radius: 0;
  margin: 0;
}

.page-id-35 .jsg-insights .wp-block-post-featured-image img,
.blog .wp-block-post-featured-image img,
.archive .wp-block-post-featured-image img {
  border-radius: 0;
  width: 100%;
  height: 180px;
  object-fit: cover;
}

/* Card body padding (text below image) */
.page-id-35 .jsg-insights .jsg-card,
.blog .wp-block-post > .wp-block-group > :not(.wp-block-post-featured-image),
.archive .wp-block-post > .wp-block-group > :not(.wp-block-post-featured-image) {
  padding-inline: 1.25rem;
}

/* Blog card excerpt */
.blog .wp-block-post-excerpt,
.archive .wp-block-post-excerpt {
  font-size: 0.875rem;
  color: var(--muted, #3f5468);
  line-height: 1.55;
}

/* Blog card title */
.blog .wp-block-post-title,
.archive .wp-block-post-title {
  font-size: clamp(1rem, 1.4vw, 1.15rem);
  line-height: 1.3;
  margin: 0;
}

.blog .wp-block-post-title a,
.archive .wp-block-post-title a {
  text-decoration: none;
  color: var(--ink, #0f2133);
}

.blog .wp-block-post-title a:hover,
.archive .wp-block-post-title a:hover {
  color: var(--brand-primary-700, #146b69);
}

/* Blog card date */
.blog .wp-block-post-date,
.archive .wp-block-post-date {
  font-size: 0.75rem;
  color: var(--muted, #3f5468);
  text-transform: uppercase;
  letter-spacing: 0.08em;
}

.page-id-35 .jsg-insights .jsg-card .jsg-card-link {
  margin-top: auto;
}

/* Blog archive: 3-column grid on desktop */
@media (min-width: 782px) {
  .blog .wp-block-post-template,
  .archive .wp-block-post-template {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
  }
}

/* Blog archive: single column mobile */
@media (max-width: 781px) {
  .blog .wp-block-post-template,
  .archive .wp-block-post-template {
    grid-template-columns: 1fr;
  }

  .page-id-35 .jsg-insights .wp-block-post > .wp-block-group:hover,
  .blog .wp-block-post > .wp-block-group:hover,
  .archive .wp-block-post > .wp-block-group:hover {
    transform: none;
  }
}

/* ============================================================
   GLOBAL — Smooth image load transition (2026-03-09)
   Prevents harsh visual "pop" when lazy-loaded images appear.
   ============================================================ */

.wp-block-post-featured-image img,
.wp-block-image img {
  transition: opacity 300ms ease;
}

/* ============================================================
   GLOBAL MOBILE GUTTERS (2026-03-09)
   WP FSE root padding is absent or too small on narrow viewports
   for some block configurations. Without this, text/headings in
   sections that lack page-scoped padding touch the screen edge.
   Apply inline gutters to .entry-content; let alignfull/alignwide
   children break out so Cover blocks and full-bleed sections still
   stretch edge-to-edge (they set their own internal padding).
   ============================================================ */

@media (max-width: 781px) {
  /* Root content gutters */
  .entry-content,
  .wp-block-post-content {
    padding-inline: 1rem;
  }

  /* Full-bleed & wide blocks break out of content gutters */
  .entry-content > .alignfull,
  .wp-block-post-content > .alignfull {
    margin-inline: -1rem;
    width: calc(100% + 2rem);
    max-width: calc(100% + 2rem);
  }

  .entry-content > .alignwide,
  .wp-block-post-content > .alignwide {
    margin-inline: -1rem;
    width: calc(100% + 2rem);
    max-width: calc(100% + 2rem);
  }

  /* Blog archive page: ensure post grid has gutters */
  .blog .wp-block-post-template,
  .archive .wp-block-post-template {
    padding-inline: 1rem;
  }
}

/* ============================================================
   FOOTER — 4-column dark footer (match Web App design)
   Background: #1a1a2e, light text, 4-column grid
   ============================================================ */

/* Footer shell: dark background matching Web App */
footer.wp-block-template-part {
  background: #1a1a2e !important;
  border-top: 1px solid rgba(20, 107, 105, 0.28);
  color: #e5e7eb;
}

/* Override Unibiz/WP parent theme background colors on footer */
footer.wp-block-template-part .wp-block-group.has-contrast-background-color,
footer.wp-block-template-part .wp-block-group.has-background,
footer.wp-block-template-part .jsgc-footer {
  background: transparent !important;
}

/* Footer columns: 4-column grid (brand wider) */
.jsgc-footer-columns {
  display: grid !important;
  grid-template-columns: 2fr repeat(3, 1fr) !important;
  gap: 2rem !important;
}

/* Column headings */
.jsgc-footer-col-heading {
  font-family: var(--font-body) !important;
  font-size: 0.7rem !important;
  text-transform: uppercase;
  letter-spacing: 0.1em;
  color: rgba(255, 255, 255, 0.55) !important;
  margin: 0 0 0.75rem !important;
  font-weight: 600;
}

/* Footer links */
.jsgc-footer-link {
  margin: 0 0 0.35rem !important;
  line-height: 1.5;
}

.jsgc-footer-link a {
  color: #e5e7eb !important;
  text-decoration: none !important;
  font-size: 0.875rem;
  transition: color 150ms ease;
}

.jsgc-footer-link a:hover {
  color: #6ecad0 !important;
}

/* Brand column */
.jsgc-footer-brand-name {
  font-size: 0.875rem !important;
  font-weight: 700;
  color: rgba(255, 255, 255, 0.85) !important;
  letter-spacing: 0.02em;
  margin: 0 !important;
}

.jsgc-footer-brand-blurb {
  font-size: 0.875rem !important;
  color: rgba(255, 255, 255, 0.6) !important;
  line-height: 1.65;
  margin: 0.25rem 0 0 !important;
}

/* Footer divider */
.jsgc-footer-divider {
  border-color: rgba(255, 255, 255, 0.1) !important;
  margin: 1.5rem 0 1rem !important;
  opacity: 1;
}

/* Footer bottom bar */
.jsgc-footer-bottom {
  gap: 0.5rem;
}

.jsgc-footer-beta-notice {
  font-size: 0.75rem !important;
  color: rgba(255, 255, 255, 0.55) !important;
  margin: 0 !important;
  line-height: 1.55;
}

.jsgc-footer-beta-notice a {
  color: rgba(255, 255, 255, 0.7);
  text-decoration: underline;
  text-underline-offset: 2px;
}

.jsgc-footer-beta-notice a:hover {
  color: #fff;
}

.jsgc-footer-disclosure {
  font-size: 0.68rem !important;
  color: rgba(255, 255, 255, 0.4) !important;
  max-width: 600px;
  margin: 0 !important;
  line-height: 1.55;
}

.jsgc-footer-copyright {
  font-size: 0.75rem !important;
  color: rgba(255, 255, 255, 0.5) !important;
  margin: 0 !important;
}

/* Footer responsive: tablet */
@media (max-width: 980px) {
  .jsgc-footer-columns {
    grid-template-columns: repeat(2, 1fr) !important;
  }
}

/* Footer responsive: mobile */
@media (max-width: 781px) {
  .jsgc-footer-columns {
    grid-template-columns: 1fr !important;
    gap: 1.25rem !important;
  }

  .jsgc-footer-bottom {
    flex-direction: column !important;
    text-align: center;
  }

  .jsgc-footer-disclosure {
    max-width: none;
  }

  footer.wp-block-template-part .wp-block-spacer {
    display: none !important;
  }
}

/* ============================================================
   PHASE 3 — Cross-Platform Parity (2026-03-14)
   Card utilities, visited links, hover interactions matching
   Web App globals.css patterns.
   ============================================================ */

/* Reusable card utility — matches Web App .card base */
.jsgc-card {
  background: var(--white, #fff);
  border: 1px solid var(--border);
  border-radius: var(--radius-md, 18px);
  padding: clamp(1.25rem, 2vw, 1.75rem);
  box-shadow: var(--shadow-card);
  transition:
    transform 0.22s cubic-bezier(0.25, 0.46, 0.45, 0.94),
    box-shadow 0.22s cubic-bezier(0.25, 0.46, 0.45, 0.94);
}

.jsgc-card:hover {
  transform: translateY(-3px);
  box-shadow: var(--shadow-lift);
}

@media (prefers-reduced-motion: reduce) {
  .jsgc-card:hover {
    transform: none;
  }
}

/* Visited link styling — darker teal, on-brand */
.wp-site-blocks a:visited:not(.wp-block-button__link):not(.wp-block-navigation-item__content) {
  color: #0f5452;
}

/* Blog post card hover lift */
.wp-block-post {
  transition:
    transform 0.22s cubic-bezier(0.25, 0.46, 0.45, 0.94),
    box-shadow 0.22s cubic-bezier(0.25, 0.46, 0.45, 0.94);
}

.wp-block-post:hover {
  transform: translateY(-2px);
}

@media (prefers-reduced-motion: reduce) {
  .wp-block-post:hover {
    transform: none;
  }
}

/* ============================================================
   GRANT READINESS TOOL — Scoped polish (page-id-118)
   ============================================================ */

