/*
Theme Name: Converge
Theme URI: https://convergedigitalmarketing.com/
Author: Converge Digital
Author URI: https://convergedigitalmarketing.com/
Description: Block theme for Converge Digital Marketing. Core Gutenberg blocks only. The design system lives in theme.json; this file carries only what theme.json cannot express.
Requires at least: 6.6
Tested up to: 7.1
Requires PHP: 7.4
Version: 1.0.0
License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Text Domain: converge
Tags: block-theme, full-site-editing, custom-colors
*/

/* --------------------------------------------------------------------------
   Everything expressible in theme.json belongs in theme.json. What is left
   here is behaviour and a small set of named utilities (prefix cv-), per
   docs/METHOD.md. No per-page CSS, ever.
   -------------------------------------------------------------------------- */

:root {
  --cv-radius: 16px;
  --cv-ease: cubic-bezier(.2, .7, .2, 1);
  /* Decorative chevrons, echoing the logo mark. Used on dark bands only. */
  --cv-chevrons: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 220 240'%3E%3Cg fill-rule='evenodd'%3E%3Cpath fill='%230F6938' d='M70 0h50L60 120l60 120H70L10 120z'/%3E%3Cpath fill='%23569B43' d='M120 0h50l-60 120 60 120h-50L60 120z'/%3E%3Cpath fill='%238CC63F' d='M170 0h50l-60 120 60 120h-50l-60-120z'/%3E%3C/g%3E%3C/svg%3E");
}

html { scroll-padding-top: 96px; }
/* Header, main and footer butt together; sections carry their own spacing.
   Without this the root blockGap leaves white strips between the bands. */
.wp-site-blocks > * + * { margin-block-start: 0; }
body { -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; }
h1, h2, h3, h4, .cv-hero__h1, .cv-ctaband__h, .cv-section__h { text-wrap: balance; }
p { text-wrap: pretty; }
img { max-width: 100%; height: auto; }

/* Accessibility ------------------------------------------------------------ */

.skip-link.screen-reader-text:focus,
.skip-link:focus {
  position: fixed; top: 10px; left: 10px; z-index: 1000;
  width: auto; height: auto; clip: auto; clip-path: none;
  padding: .8rem 1.2rem; border-radius: 10px;
  background: var(--wp--preset--color--forest);
  color: var(--wp--preset--color--white);
  font-weight: 700; text-decoration: none;
  outline: 3px solid var(--wp--preset--color--lime); outline-offset: 2px;
}

:where(a, button, input, select, textarea, summary, [tabindex]):focus-visible {
  outline: 3px solid var(--wp--preset--color--brand-mid);
  outline-offset: 3px;
  border-radius: 4px;
}
:where(.has-forest-background-color, .has-brand-background-color, .cv-footer) :where(a, button):focus-visible {
  outline-color: var(--wp--preset--color--lime);
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { transition: none !important; animation: none !important; scroll-behavior: auto !important; }
}

/* Visible placeholders: anything still waiting on a real value. */
.cv-placeholder {
  background: #FFF1B8; color: #3D2E00;
  padding: .05em .4em; border-radius: 4px; font-weight: 600;
}
.cv-placeholder-box {
  border: 2px dashed var(--wp--preset--color--brand-mid);
  background: var(--wp--preset--color--mint-2);
  border-radius: 12px; padding: 1.5rem;
  color: var(--wp--preset--color--ink-soft);
}

/* Shared type utilities ---------------------------------------------------- */

.cv-eyebrow {
  font-family: var(--wp--preset--font-family--heading);
  font-size: var(--wp--preset--font-size--x-small);
  font-weight: 700; letter-spacing: .12em; text-transform: uppercase;
  color: var(--wp--preset--color--brand);
  margin-bottom: .75rem;
}
.cv-eyebrow a { color: inherit; text-decoration: none; }
.cv-eyebrow a:hover { text-decoration: underline; }
.cv-lede { font-size: var(--wp--preset--font-size--large); line-height: 1.55; color: var(--wp--preset--color--ink-soft); max-width: 46rem; }

.has-forest-background-color .cv-eyebrow,
.has-brand-background-color .cv-eyebrow { color: var(--wp--preset--color--lime); }
.has-forest-background-color .cv-lede,
.has-brand-background-color .cv-lede { color: rgba(255, 255, 255, .86); }
.has-forest-background-color :where(a:not(.wp-element-button):not(.cv-btn)) { color: var(--wp--preset--color--white); }

.cv-section__h {
  font-family: var(--wp--preset--font-family--heading);
  font-size: var(--wp--preset--font-size--xx-large);
  font-weight: 800; line-height: 1.12; letter-spacing: -.02em;
  margin: 0 0 var(--wp--preset--spacing--40);
}
.cv-sechead { max-width: 46rem; margin-bottom: var(--wp--preset--spacing--50) !important; }
.cv-sechead > * { margin-block: 0; }
.cv-sechead > * + * { margin-top: .75rem; }

/* Header ------------------------------------------------------------------- */

.wp-site-blocks > header.wp-block-template-part {
  position: sticky; top: 0; z-index: 60;
  background: var(--wp--preset--color--white);
  border-bottom: 1px solid var(--wp--preset--color--line);
  transition: box-shadow .25s ease;
}
/* No backdrop-filter here: it makes the header the containing block for the
   nav block's position:fixed overlay, which then opens trapped inside the
   header bar on phones. */
.admin-bar .wp-site-blocks > header.wp-block-template-part { top: 32px; }
@media (max-width: 782px) { .admin-bar .wp-site-blocks > header.wp-block-template-part { top: 46px; } }
.cv-header--scrolled { box-shadow: 0 10px 30px -22px rgba(10, 63, 35, .55); }

.cv-headbar__row { padding-block: .7rem; gap: var(--wp--preset--spacing--30); }
.cv-headbar__end { gap: var(--wp--preset--spacing--30); }
.cv-brand { display: block; flex: none; line-height: 0; }
.cv-brand img { display: block; height: 52px; width: auto; }
@media (max-width: 600px) { .cv-brand img { height: 42px; } }

.cv-headcta .wp-block-button__link { padding: .7rem 1.2rem; white-space: nowrap; }
@media (max-width: 640px) { .cv-headcta { display: none !important; } }

/* Navigation: overlay below 1080px, inline above. The block is overlayMenu
   "always"; this restores the inline row the way core does at 600px. */
@media (min-width: 1080px) {
  .cv-nav .wp-block-navigation__responsive-container.hidden-by-default:not(.is-menu-open) {
    display: block; width: 100%; position: relative; z-index: auto;
    background-color: inherit; padding: 0;
  }
  .cv-nav .wp-block-navigation__responsive-container.hidden-by-default:not(.is-menu-open) .wp-block-navigation__responsive-container-close { display: none; }
  .cv-nav .wp-block-navigation__responsive-container-open.always-shown { display: none; }
}

.cv-nav .wp-block-navigation-item__content { padding: .5rem .15rem; }
.cv-nav a[data-cv-state] { color: var(--wp--preset--color--brand); }
.cv-nav a[data-cv-state="current"] { text-decoration: underline; text-decoration-thickness: 2px; text-underline-offset: 8px; }

/* Services dropdown (desktop) */
.cv-nav .cv-drop > .wp-block-navigation__submenu-container {
  border: 1px solid var(--wp--preset--color--line) !important;
  border-radius: 14px;
  box-shadow: var(--wp--preset--shadow--lift);
  padding: .6rem !important;
  min-width: 290px !important;
  background: var(--wp--preset--color--white) !important;
}
.cv-nav .cv-drop > .wp-block-navigation__submenu-container .wp-block-navigation-item__content {
  padding: .55rem .8rem !important; border-radius: 8px; font-weight: 500; white-space: nowrap;
}
.cv-nav .cv-drop > .wp-block-navigation__submenu-container .wp-block-navigation-item__content:hover {
  background: var(--wp--preset--color--mint-2); color: var(--wp--preset--color--brand);
}
.cv-nav .cv-drop__all .wp-block-navigation-item__content { font-weight: 700 !important; color: var(--wp--preset--color--brand) !important; }

/* Mega menus (Services, About): converge_mega_html() fills the panel. */
.cv-mega__panel ul { list-style: none; margin: 0; padding: 0; }
.cv-mega__h { margin: 0 0 .6rem; font-size: .75rem; font-weight: 800; letter-spacing: .14em; text-transform: uppercase; color: var(--wp--preset--color--brand-mid); }
.cv-mega__list { display: grid; gap: .15rem; }
.cv-mega__link {
  display: flex; gap: .85rem; align-items: flex-start; padding: .6rem .65rem; border-radius: 12px;
  color: var(--wp--preset--color--ink); text-decoration: none; transition: background-color .2s ease;
}
.cv-mega__link:hover, .cv-mega__link:focus-visible { background: var(--wp--preset--color--mint-2); }
.cv-mega__ico {
  flex: none; display: flex; align-items: center; justify-content: center; width: 40px; height: 40px; border-radius: 11px;
  background: var(--wp--preset--color--mint); color: var(--wp--preset--color--brand); transition: background-color .2s ease, color .2s ease;
}
.cv-mega__ico .cv-icon { width: 21px; height: 21px; }
.cv-mega__link:hover .cv-mega__ico { background: var(--wp--preset--color--brand); color: var(--wp--preset--color--white); }
.cv-mega__txt { display: grid; gap: .1rem; }
.cv-mega__t { font-weight: 700; font-size: .98rem; line-height: 1.3; }
.cv-mega__s { font-size: .84rem; line-height: 1.4; color: var(--wp--preset--color--ink-soft); white-space: normal; }
.cv-mega__cta {
  display: flex; flex-direction: column; padding: 1.5rem; border-radius: 16px; color: var(--wp--preset--color--white);
  background: linear-gradient(160deg, var(--wp--preset--color--forest), var(--wp--preset--color--brand));
}
.cv-mega__cta-h { margin: 0 0 .5rem; font-family: var(--wp--preset--font-family--heading); font-weight: 800; font-size: 1.2rem; line-height: 1.25; }
.cv-mega__cta-p { margin: 0 0 1.1rem; font-size: .88rem; line-height: 1.5; color: rgba(255, 255, 255, .85); white-space: normal; }
.cv-mega__btn {
  display: block; text-align: center; padding: .75rem 1rem; border-radius: 999px; font-weight: 700; text-decoration: none;
  background: var(--wp--preset--color--lime); color: var(--wp--preset--color--forest) !important;
}
.cv-mega__btn:hover { background: var(--wp--preset--color--white); }
.cv-mega__call { margin: .75rem 0 0; text-align: center; font-size: .88rem; color: rgba(255, 255, 255, .85); }
.cv-mega__call a { color: var(--wp--preset--color--white) !important; font-weight: 700; }
.cv-mega__all { margin-top: auto; padding-top: 1rem; text-align: center; font-size: .88rem; font-weight: 700; color: var(--wp--preset--color--lime) !important; }

@media (min-width: 1080px) {
  /* The panel spans the header row, not the menu item: everything between
     the item and the row is unpositioned so the row is the containing block. */
  .cv-headbar__row { position: relative; }
  .cv-headbar__end, .cv-headbar .cv-nav, .cv-headbar .cv-nav .wp-block-navigation__responsive-container,
  .cv-headbar .cv-nav .wp-block-navigation__responsive-container-content,
  .cv-headbar .cv-nav .wp-block-navigation__responsive-dialog,
  .cv-headbar .cv-nav .wp-block-navigation__container, .cv-nav li.cv-mega { position: static !important; }
  .cv-nav .cv-mega > .cv-mega__panel {
    position: absolute !important; left: 0 !important; overflow: visible !important; right: 0 !important; top: calc(100% - .35rem) !important;
    display: grid !important; grid-template-columns: repeat(3, minmax(0, 1fr)) minmax(0, 1.05fr); gap: 1.5rem;
    padding: 1.6rem !important; min-width: 0 !important; border-radius: 20px !important;
    box-shadow: 0 30px 60px -30px rgba(10, 63, 35, .45) !important; z-index: 70;
  }
  /* About has two groups (Blog is on the top bar, not repeated here). */
  .cv-nav li.cv-mega--about > .cv-mega__panel { grid-template-columns: repeat(2, minmax(0, 1fr)) minmax(0, .9fr); }
  /* Close with a short grace period (hover intent): a diagonal move from
     the menu item clips the space beside it, and without the delay the panel
     shuts before the pointer arrives. Core collapses a closed submenu to
     0x0; here it keeps its size and hides by visibility/opacity instead. */
  .cv-nav .cv-mega > .cv-mega__panel {
    width: auto !important; height: auto !important;
    transition: opacity .16s ease .22s, visibility 0s linear .38s !important;
  }
  .cv-nav .cv-mega:hover > .cv-mega__panel,
  .cv-nav .cv-mega:focus-within > .cv-mega__panel,
  .cv-nav .cv-mega > [aria-expanded="true"] ~ .cv-mega__panel {
    transition: opacity .16s ease 0s, visibility 0s linear 0s !important;
  }
  /* Bridge the gap above the panel so the pointer can travel into it. */
  .cv-nav .cv-mega > .cv-mega__panel::before { content: ""; position: absolute; left: 0; right: 0; top: -1.25rem; height: 1.25rem; }
  .cv-nav .cv-mega > .cv-mega__panel > li { margin: 0; }
}

/* Top strip ----------------------------------------------------------------
   Part of the sticky header, offset by its own height so it scrolls away and
   the logo bar stays pinned. */
:root { --cv-topbar-h: 38px; }
.wp-site-blocks > header.wp-block-template-part { top: calc(-1 * var(--cv-topbar-h)); }
.admin-bar .wp-site-blocks > header.wp-block-template-part { top: calc(32px - var(--cv-topbar-h)); }
@media (max-width: 782px) { .admin-bar .wp-site-blocks > header.wp-block-template-part { top: calc(46px - var(--cv-topbar-h)); } }
.cv-topbar { height: var(--cv-topbar-h); background: var(--wp--preset--color--forest); color: rgba(255, 255, 255, .88); font-size: .84rem; }
.cv-topbar__in {
  height: 100%; display: flex; align-items: center; justify-content: space-between; gap: 1rem; margin: 0 auto;
  /* Same edges as the header row below: the wide width inside the root gutters. */
  width: min(var(--wp--style--global--wide-size), calc(100% - var(--wp--style--root--padding-left, 1.25rem) - var(--wp--style--root--padding-right, 1.25rem)));
}
.cv-topbar p { margin: 0; }
.cv-topbar__tag { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.cv-topbar__end { display: flex; align-items: center; gap: 1.4rem; flex: none; }
.cv-topbar__item { display: inline-flex; align-items: center; gap: .45rem; color: var(--wp--preset--color--white) !important; font-weight: 600; text-decoration: none; }
.cv-topbar__item svg { color: var(--wp--preset--color--lime); flex: none; }
.cv-topbar__item a { color: inherit; text-decoration: none; }
.cv-topbar a:hover { text-decoration: underline; }
@media (max-width: 700px) {
  .cv-topbar__tag { display: none; }
  .cv-topbar__in { justify-content: center; }
}
.cv-navcta { display: none; }

/* Mobile and tablet menu (overlay below 1080px) ------------------------------
   One column at every width, capped at a readable measure. Services and About
   are accordions: closed by default, opened with core's own submenu toggle.
   Inside: group labels and links with small icons; the per-panel CTAs give
   way to one action bar at the foot of the menu. */
.cv-nav .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content {
  width: 100%; max-width: 560px; margin-inline: auto; box-sizing: border-box;
}
.cv-nav .wp-block-navigation__responsive-container.is-menu-open li.cv-mega { display: flex !important; flex-direction: row !important; flex-wrap: wrap !important; align-items: center !important; }
.cv-nav .wp-block-navigation__responsive-container.is-menu-open li.cv-mega > .wp-block-navigation-item__content { flex: 1 1 0 !important; min-width: 0; width: auto !important; }
.cv-acc { display: none; }
.cv-nav .is-menu-open li.cv-mega > .wp-block-navigation-submenu__toggle { display: none !important; }
.cv-nav .is-menu-open li.cv-mega > .cv-acc {
  display: flex; align-items: center; justify-content: center; width: 44px; height: 44px; margin: 0; padding: 0; cursor: pointer;
  border: 0; border-radius: 12px; background: var(--wp--preset--color--mint-2); color: var(--wp--preset--color--forest);
}
.cv-nav .is-menu-open li.cv-mega > .cv-acc svg { transition: transform .2s ease; }
.cv-nav .is-menu-open li.cv-mega > .cv-acc[aria-expanded="true"] svg { transform: rotate(180deg); }
.cv-nav .wp-block-navigation__responsive-container.is-menu-open li.cv-mega > .cv-mega__panel { flex-basis: 100%; display: block !important; padding: 0 0 1rem !important; }
.cv-nav .wp-block-navigation__responsive-container.is-menu-open li.cv-mega > .cv-acc[aria-expanded="false"] ~ .cv-mega__panel { display: none !important; }
.cv-nav .is-menu-open .cv-mega__col { margin-top: .5rem; }
.cv-nav .is-menu-open .cv-mega__h { margin: .6rem 0 .2rem; }
.cv-nav .is-menu-open .cv-mega__s, .cv-nav .is-menu-open .cv-mega__cta { display: none !important; }
.cv-nav .is-menu-open .cv-mega__link { padding: .45rem 0; gap: .75rem; align-items: center; }
.cv-nav .is-menu-open .cv-mega__ico { width: 34px; height: 34px; border-radius: 9px; }
.cv-nav .is-menu-open .cv-mega__ico .cv-icon { width: 18px; height: 18px; }
.cv-nav .is-menu-open .cv-mega__t { font-size: 1rem; font-weight: 600; }
.cv-nav .is-menu-open .cv-navcta { display: grid; gap: .65rem; width: 100%; margin-top: 1.5rem; padding-bottom: 1.5rem; }
.cv-navcta__call, .cv-navcta__btn {
  display: block; text-align: center; padding: .9rem 1rem; border-radius: 999px; font-weight: 700; text-decoration: none;
}
.cv-navcta__call { background: var(--wp--preset--color--forest); color: var(--wp--preset--color--white) !important; }
.cv-navcta__btn { background: var(--wp--preset--color--lime); color: var(--wp--preset--color--forest) !important; }
.cv-navcta__tag { margin: .4rem 0 0; text-align: center !important; font-size: .85rem; color: var(--wp--preset--color--ink-soft); width: 100%; }

/* Burger: bigger target, three bars */
.cv-nav .wp-block-navigation__responsive-container-open,
.cv-nav .wp-block-navigation__responsive-container-close {
  width: 44px; height: 44px; display: flex; align-items: center; justify-content: center; padding: 0;
}
.cv-nav .wp-block-navigation__responsive-container-open svg { display: none; }
.cv-nav .wp-block-navigation__responsive-container-open::before {
  content: ""; width: 24px; height: 2px; background: currentColor; border-radius: 2px;
  box-shadow: 0 -7px 0 currentColor, 0 7px 0 currentColor;
}
.cv-nav .wp-block-navigation__responsive-container-close svg { width: 26px; height: 26px; }

/* Overlay panel */
.cv-nav .wp-block-navigation__responsive-container.is-menu-open {
  padding: var(--wp--preset--spacing--30) var(--wp--preset--spacing--40) !important;
  background: var(--wp--preset--color--white) !important;
}
.cv-nav .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content,
.cv-nav .wp-block-navigation__responsive-container.is-menu-open ul,
.cv-nav .wp-block-navigation__responsive-container.is-menu-open li {
  align-items: flex-start !important; justify-content: flex-start !important; text-align: left !important;
}
.cv-nav .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content { padding-top: 3rem; }
.cv-nav .wp-block-navigation__responsive-container.is-menu-open ul.wp-block-navigation__container { gap: 0; width: 100%; }
.cv-nav .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__container > li { width: 100%; border-bottom: 1px solid var(--wp--preset--color--line); }
.cv-nav .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item__content {
  padding: .85rem 0 !important; font-size: 1.15rem; font-weight: 700;
}
.cv-nav .wp-block-navigation__responsive-container.is-menu-open .cv-drop > .wp-block-navigation__submenu-container {
  position: static !important; display: grid !important; grid-template-columns: 1fr 1fr; gap: 0 1rem;
  width: 100% !important; min-width: 0 !important; height: auto !important; opacity: 1 !important; visibility: visible !important;
  padding: 0 0 .8rem !important; border: 0 !important; box-shadow: none !important; background: transparent !important;
}
.cv-nav .wp-block-navigation__responsive-container.is-menu-open .cv-drop > .wp-block-navigation__submenu-container .wp-block-navigation-item__content {
  padding: .45rem 0 !important; font-size: .98rem; font-weight: 500; color: var(--wp--preset--color--ink-soft);
}
@media (max-width: 420px) {
  .cv-nav .wp-block-navigation__responsive-container.is-menu-open .cv-drop > .wp-block-navigation__submenu-container { grid-template-columns: 1fr; }
}

/* Buttons ------------------------------------------------------------------ */

.wp-element-button, .wp-block-button__link { transition: background-color .2s ease, color .2s ease, border-color .2s ease, transform .2s var(--cv-ease); }
.wp-block-button__link:hover { transform: translateY(-1px); }

.wp-block-button.is-style-outline-brand .wp-block-button__link {
  background: transparent; color: var(--wp--preset--color--brand); border-color: currentColor;
}
.wp-block-button.is-style-outline-brand .wp-block-button__link:hover {
  background: var(--wp--preset--color--brand); color: var(--wp--preset--color--white); border-color: var(--wp--preset--color--brand);
}
:where(.has-forest-background-color, .has-brand-background-color) .wp-block-button.is-style-outline-brand .wp-block-button__link {
  color: var(--wp--preset--color--white); border-color: rgba(255, 255, 255, .55);
}
:where(.has-forest-background-color, .has-brand-background-color) .wp-block-button.is-style-outline-brand .wp-block-button__link:hover {
  background: var(--wp--preset--color--white); color: var(--wp--preset--color--forest); border-color: var(--wp--preset--color--white);
}
.wp-block-button.is-style-on-dark .wp-block-button__link {
  background: var(--wp--preset--color--lime); border-color: var(--wp--preset--color--lime); color: var(--wp--preset--color--forest);
}
.wp-block-button.is-style-on-dark .wp-block-button__link:hover {
  background: var(--wp--preset--color--white); border-color: var(--wp--preset--color--white); color: var(--wp--preset--color--forest);
}

/* Button-like links printed by PHP patterns (inside wp:html). */
.cv-btn {
  display: inline-flex; align-items: center; justify-content: center;
  padding: .85rem 1.6rem; border-radius: 999px; border: 2px solid transparent;
  font-family: var(--wp--preset--font-family--heading); font-weight: 700; line-height: 1.2;
  text-decoration: none; transition: background-color .2s ease, color .2s ease, border-color .2s ease, transform .2s var(--cv-ease);
}
.cv-btn:hover { transform: translateY(-1px); }
.cv-btn--light { background: var(--wp--preset--color--lime); border-color: var(--wp--preset--color--lime); color: var(--wp--preset--color--forest) !important; }
.cv-btn--light:hover { background: var(--wp--preset--color--white); border-color: var(--wp--preset--color--white); }
.cv-btn--ghost { color: var(--wp--preset--color--white) !important; border-color: rgba(255, 255, 255, .55); }
.cv-btn--ghost:hover { background: var(--wp--preset--color--white); color: var(--wp--preset--color--forest) !important; border-color: var(--wp--preset--color--white); }

/* Block styles ------------------------------------------------------------- */

.wp-block-group.is-style-card {
  background: var(--wp--preset--color--white);
  border: 1px solid var(--wp--preset--color--line);
  border-radius: var(--cv-radius);
  box-shadow: var(--wp--preset--shadow--card);
  padding: clamp(1.4rem, 3vw, 2.2rem);
  height: 100%;
}
.wp-block-group.is-style-card > :first-child { margin-top: 0; }

ul.is-style-checklist { list-style: none; padding-left: 0 !important; }
ul.is-style-checklist li { position: relative; padding-left: 2rem; margin-block: .55rem; }
ul.is-style-checklist li::before {
  content: ""; position: absolute; left: 0; top: .2em;
  width: 1.3rem; height: 1.3rem; border-radius: 50%;
  background: var(--wp--preset--color--mint) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%230F6938' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 12.5 4 4 8-9'/%3E%3C/svg%3E") center / 70% no-repeat;
}
.has-forest-background-color ul.is-style-checklist li::before { background-color: rgba(140, 198, 63, .2); }

/* Heroes ------------------------------------------------------------------- */

.cv-hero { position: relative; overflow: hidden; isolation: isolate; }
.cv-hero::before {
  content: ""; position: absolute; z-index: -1; pointer-events: none;
  right: -6%; top: 50%; width: min(52vw, 640px); aspect-ratio: 220 / 240;
  transform: translateY(-50%);
  background: var(--cv-chevrons) center / contain no-repeat;
  opacity: .16;
}
.cv-hero::after {
  content: ""; position: absolute; inset: 0; z-index: -2; pointer-events: none;
  background: radial-gradient(70% 90% at 0% 0%, rgba(86, 155, 67, .35), transparent 60%);
}
.cv-hero h1, .cv-hero__h1 { color: var(--wp--preset--color--white); }
.cv-hero h1 { font-size: var(--wp--preset--font-size--display); margin-top: 0; }
.cv-hero .cv-lede { margin-top: 1.1rem; }
.cv-hero__card { position: relative; }
.cv-hero__card h2 { margin-top: 0; }
.cv-hero__card .wp-block-buttons { margin-top: 1.4rem; }

.cv-hero--page::before { width: min(40vw, 460px); opacity: .14; right: -4%; }
.cv-hero__body { max-width: 860px; }
.cv-hero__body > :first-child { margin-top: 0; }
.cv-hero__h1 {
  font-family: var(--wp--preset--font-family--heading);
  font-size: var(--wp--preset--font-size--display);
  font-weight: 800; line-height: 1.08; letter-spacing: -.025em;
  margin: 0;
}
.cv-hero--slim .cv-hero__h1 { font-size: var(--wp--preset--font-size--xx-large); }
.cv-hero--slim .cv-lede { margin-top: .9rem; }
.cv-hero__actions { display: flex; flex-wrap: wrap; gap: .75rem; margin-top: var(--wp--preset--spacing--40); }

@media (max-width: 781px) {
  .cv-hero::before { width: 90vw; right: -40%; opacity: .1; }
  .cv-hero .wp-block-columns { gap: var(--wp--preset--spacing--50); }
}

/* Social proof -------------------------------------------------------------- */

ul.cv-logos {
  list-style: none; padding: 0 !important; margin: 0;
  display: grid; gap: 1rem;
  grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));
}
ul.cv-logos li {
  display: flex; align-items: center; justify-content: center; min-height: 76px;
  border: 1px dashed var(--wp--preset--color--line); border-radius: 12px;
  color: var(--wp--preset--color--ink-soft); font-weight: 600; font-size: var(--wp--preset--font-size--small);
  background: var(--wp--preset--color--mint-2);
}
.wp-block-quote.cv-testimonial {
  height: 100%; margin: 0; border: 1px solid var(--wp--preset--color--line) !important;
  border-radius: var(--cv-radius); padding: 2.4rem 1.6rem 1.6rem !important; position: relative;
  background: var(--wp--preset--color--white); box-shadow: var(--wp--preset--shadow--card);
  font-size: var(--wp--preset--font-size--medium);
}
.wp-block-quote.cv-testimonial::before {
  content: "\201C"; position: absolute; top: .3rem; left: 1.4rem;
  font-family: var(--wp--preset--font-family--heading); font-size: 3.6rem; line-height: 1;
  color: var(--wp--preset--color--brand-mid);
}
.wp-block-quote.cv-testimonial cite { display: block; margin-top: 1rem; font-style: normal; font-weight: 700; font-size: var(--wp--preset--font-size--small); color: var(--wp--preset--color--ink); }

/* Steps --------------------------------------------------------------------- */

.cv-steps { counter-reset: cv-step; }
.cv-steps > .wp-block-column { counter-increment: cv-step; position: relative; padding-top: 3.6rem; }
.cv-steps > .wp-block-column::before {
  content: counter(cv-step, decimal-leading-zero);
  position: absolute; top: 0; left: 0;
  font-family: var(--wp--preset--font-family--heading); font-weight: 800; font-size: 1rem;
  width: 2.6rem; height: 2.6rem; border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  background: var(--wp--preset--color--brand); color: var(--wp--preset--color--white);
}
.cv-steps h3 { margin-top: 0; }

/* CTA band ------------------------------------------------------------------ */

.cv-ctaband { position: relative; overflow: hidden; isolation: isolate; }
.cv-ctaband::before {
  content: ""; position: absolute; z-index: -1; pointer-events: none;
  right: -2%; top: 50%; height: 170%; aspect-ratio: 220 / 240; transform: translateY(-50%);
  background: var(--cv-chevrons) center / contain no-repeat; opacity: .14;
}
.cv-ctaband__inner { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: var(--wp--preset--spacing--40); }
.cv-ctaband__say { flex: 1 1 28rem; }
.cv-ctaband__h {
  font-family: var(--wp--preset--font-family--heading); font-size: var(--wp--preset--font-size--xx-large);
  font-weight: 800; line-height: 1.1; letter-spacing: -.02em; margin: 0; color: var(--wp--preset--color--white);
}
.cv-ctaband__sub { margin: .8rem 0 0; color: rgba(255, 255, 255, .88); font-size: var(--wp--preset--font-size--large); }
.cv-ctaband__act { flex: 0 1 auto; display: flex; flex-direction: column; align-items: flex-start; gap: .7rem; }
.cv-ctaband__btn {
  display: inline-flex; padding: 1rem 1.8rem; border-radius: 999px;
  background: var(--wp--preset--color--white); color: var(--wp--preset--color--forest) !important;
  font-family: var(--wp--preset--font-family--heading); font-weight: 800; text-decoration: none;
  transition: background-color .2s ease, transform .2s var(--cv-ease);
}
.cv-ctaband__btn:hover { background: var(--wp--preset--color--lime); transform: translateY(-1px); }
.cv-ctaband__or { margin: 0; color: rgba(255, 255, 255, .88); }
.cv-ctaband__or a { color: var(--wp--preset--color--white); font-weight: 700; }

/* Page furniture ------------------------------------------------------------ */

.cv-pagetitle { margin-top: 0; }
.cv-prose > .wp-block-post-content > :first-child { margin-top: 0; }

.cv-childgrid { list-style: none; margin: 0; padding: 0; display: grid; gap: .75rem; grid-template-columns: repeat(auto-fill, minmax(min(100%, 260px), 1fr)); }
.cv-childgrid a {
  display: block; padding: 1rem 1.2rem; border-radius: 12px; background: var(--wp--preset--color--white);
  border: 1px solid var(--wp--preset--color--line); font-weight: 600; text-decoration: none; color: var(--wp--preset--color--ink);
}
.cv-childgrid a:hover { border-color: var(--wp--preset--color--brand-mid); color: var(--wp--preset--color--brand); }

.cv-plain .cv-updated { color: var(--wp--preset--color--ink-soft); font-size: var(--wp--preset--font-size--small); margin-top: .4rem; }
.cv-plain .cv-updated::before { content: "Last updated: "; }
.cv-plain h2 { font-size: var(--wp--preset--font-size--x-large); }
.cv-plain h3 { font-size: var(--wp--preset--font-size--large); }

.cv-404 { text-align: left; }
.cv-404 .wp-block-search { max-width: 520px; }

/* Contact ------------------------------------------------------------------- */

.cv-contactgrid { display: grid; gap: var(--wp--preset--spacing--50); grid-template-columns: 1fr; }
@media (min-width: 900px) { .cv-contactgrid { grid-template-columns: minmax(0, 1.55fr) minmax(0, 1fr); align-items: start; } }
.cv-contactgrid > * { margin-block: 0 !important; }
.cv-formslot {
  background: var(--wp--preset--color--white); border: 1px solid var(--wp--preset--color--line);
  border-radius: var(--cv-radius); padding: clamp(1.4rem, 3vw, 2.4rem); box-shadow: var(--wp--preset--shadow--card);
}
.cv-formslot > :first-child { margin-top: 0; }
.cv-contact { background: var(--wp--preset--color--mint-2); border-radius: var(--cv-radius); padding: clamp(1.4rem, 3vw, 2.2rem); border: 1px solid var(--wp--preset--color--line); }
.cv-contact__h { font-family: var(--wp--preset--font-family--heading); font-size: var(--wp--preset--font-size--x-large); font-weight: 800; margin: 0 0 1rem; }
.cv-contact__list { margin: 0; display: grid; gap: .3rem; }
.cv-contact__list dt { font-size: var(--wp--preset--font-size--x-small); font-weight: 700; letter-spacing: .1em; text-transform: uppercase; color: var(--wp--preset--color--brand); margin-top: .8rem; }
.cv-contact__list dd { margin: 0; }
.cv-contact address { font-style: normal; }

/* Blog ---------------------------------------------------------------------- */

.wp-block-post-template.cv-postcards { grid-template-columns: repeat(auto-fill, minmax(min(100%, 300px), 1fr)) !important; gap: 1.5rem !important; }
.cv-postcards > li {
  display: flex; flex-direction: column; overflow: hidden;
  background: var(--wp--preset--color--white); border: 1px solid var(--wp--preset--color--line);
  border-radius: var(--cv-radius); box-shadow: var(--wp--preset--shadow--card);
  transition: transform .25s var(--cv-ease), box-shadow .25s ease;
}
.cv-postcards > li:hover { transform: translateY(-3px); box-shadow: var(--wp--preset--shadow--lift); }
.cv-postcards .wp-block-post-featured-image { margin: 0; }
.cv-postcards .wp-block-post-featured-image img { border-radius: 0; }
.cv-postcards__body { padding: 1.3rem 1.4rem 1.5rem; display: flex; flex-direction: column; gap: .55rem; flex: 1; }
.cv-postcards__body > * { margin: 0 !important; }
.cv-postcards .wp-block-post-title { line-height: 1.3; }
.cv-postcards .wp-block-post-excerpt__excerpt { color: var(--wp--preset--color--ink-soft); margin: 0; }
.cv-postcards .wp-block-post-date { margin-top: auto !important; }
.wp-block-post-terms a { color: var(--wp--preset--color--brand); text-decoration: none; }

.cv-article .wp-block-post-title { margin-top: .4rem; }
.cv-article__meta { gap: .4rem 1rem; color: var(--wp--preset--color--ink-soft); font-size: var(--wp--preset--font-size--small); }
.cv-article__meta > * + *::before { content: "\00B7"; margin-right: 1rem; }
/* Post + right rail. The article keeps a reading measure; the rail sticks
   below the header while the article scrolls, and drops under it on phones. */
.cv-postlayout { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 330px); gap: clamp(2rem, 5vw, 4.5rem); align-items: start; }
.cv-postlayout > * { margin-block: 0 !important; }
.cv-article { max-width: 760px; }
.cv-article > * + * { margin-top: 1rem; }
.cv-article .wp-block-post-content > * + * { margin-top: var(--wp--preset--spacing--30); }
.cv-sidebar { position: sticky; top: calc(96px + var(--wp--preset--spacing--30)); display: grid; gap: var(--wp--preset--spacing--40); }
.admin-bar .cv-sidebar { top: calc(128px + var(--wp--preset--spacing--30)); }
.cv-sidebar__h { margin: 0 0 .75rem; font-family: var(--wp--preset--font-family--heading); font-weight: 800; font-size: 1.15rem; line-height: 1.3; }
.cv-sidebar__cta {
  padding: 1.6rem; border-radius: var(--cv-radius); color: var(--wp--preset--color--white);
  background: linear-gradient(160deg, var(--wp--preset--color--forest), var(--wp--preset--color--brand));
}
.cv-sidebar__cta p { margin: 0 0 1rem; color: rgba(255, 255, 255, .86); font-size: var(--wp--preset--font-size--small); line-height: 1.55; }
.cv-sidebar__cta .cv-sidebar__h { color: var(--wp--preset--color--white); font-size: 1.25rem; }
.cv-sidebar__btn {
  display: block; text-align: center; padding: .8rem 1rem; border-radius: 999px; font-weight: 700; text-decoration: none;
  background: var(--wp--preset--color--lime); color: var(--wp--preset--color--forest);
}
.cv-sidebar__btn:hover { background: var(--wp--preset--color--white); }
.cv-sidebar__cta .cv-sidebar__call { margin: .8rem 0 0; text-align: center; }
.cv-sidebar__call a { color: var(--wp--preset--color--white); font-weight: 700; }
.cv-sidebar__menu ul { list-style: none; margin: 0; padding: 0; border-top: 1px solid var(--wp--preset--color--line); }
.cv-sidebar__menu li { border-bottom: 1px solid var(--wp--preset--color--line); }
.cv-sidebar__menu li a { display: block; padding: .7rem 0; color: var(--wp--preset--color--ink); text-decoration: none; font-size: var(--wp--preset--font-size--small); font-weight: 600; line-height: 1.4; }
.cv-sidebar__menu li a:hover { color: var(--wp--preset--color--brand); }
.cv-sidebar__topics { display: flex; flex-wrap: wrap; gap: .5rem; border-top: 0 !important; }
.cv-sidebar__topics li { border: 0; }
.cv-sidebar__topics li a { padding: .4rem .85rem; border-radius: 999px; background: var(--wp--preset--color--mint); color: var(--wp--preset--color--forest); }
@media (max-width: 960px) {
  .cv-postlayout { grid-template-columns: minmax(0, 1fr); }
  .cv-sidebar { position: static; }
  .cv-article { max-width: none; }
}
.cv-postnav { margin-top: var(--wp--preset--spacing--60) !important; padding-top: var(--wp--preset--spacing--40); border-top: 1px solid var(--wp--preset--color--line); gap: 1rem; }
.cv-postnav a { font-weight: 600; }

.wp-block-query-pagination a, .wp-block-query-pagination .current { font-weight: 700; }
.wp-block-query-pagination-numbers .page-numbers { display: inline-block; min-width: 2.4rem; padding: .35rem .6rem; border-radius: 8px; text-align: center; }
.wp-block-query-pagination-numbers .current { background: var(--wp--preset--color--brand); color: var(--wp--preset--color--white); }

/* Search block */
.wp-block-search__input { border: 1px solid var(--wp--preset--color--line); border-radius: 999px 0 0 999px; padding: .8rem 1.1rem; font: inherit; }
.wp-block-search__button { border-radius: 0 999px 999px 0 !important; margin-left: 0 !important; }

/* Footer -------------------------------------------------------------------- */

.cv-footer { position: relative; }
.cv-footer__grid { display: grid; gap: var(--wp--preset--spacing--50) var(--wp--preset--spacing--40); grid-template-columns: 1fr; }
@media (min-width: 640px) { .cv-footer__grid { grid-template-columns: 1fr 1fr; } }
@media (min-width: 1000px) { .cv-footer__grid { grid-template-columns: 1.4fr 1fr 1fr 1.2fr; } }
.cv-footer__logo img { width: 200px; height: auto; display: block; }
.cv-footer__blurb { color: rgba(255, 255, 255, .8); max-width: 26rem; font-size: var(--wp--preset--font-size--small); }
.cv-footer__cta {
  display: inline-flex; margin-top: .4rem; padding: .7rem 1.25rem; border-radius: 999px;
  background: var(--wp--preset--color--lime); color: var(--wp--preset--color--forest) !important;
  font-family: var(--wp--preset--font-family--heading); font-weight: 700; font-size: var(--wp--preset--font-size--small); text-decoration: none;
}
.cv-footer__cta:hover { background: var(--wp--preset--color--white); }
.cv-footer__h {
  font-family: var(--wp--preset--font-family--heading); font-size: var(--wp--preset--font-size--x-small) !important;
  font-weight: 700; letter-spacing: .12em; text-transform: uppercase; color: var(--wp--preset--color--lime); margin: 0 0 1rem;
}
.cv-footer__col ul { list-style: none; margin: 0; padding: 0; display: grid; gap: .5rem; font-size: var(--wp--preset--font-size--small); }
.cv-footer a { color: rgba(255, 255, 255, .88); text-decoration: none; }
.cv-footer a:hover { color: var(--wp--preset--color--white); text-decoration: underline; }
.cv-footer address { font-style: normal; }
.cv-footer__contact li { color: rgba(255, 255, 255, .88); }
.cv-footer__bottom {
  display: flex; flex-wrap: wrap; justify-content: space-between; gap: .5rem 2rem;
  margin-top: var(--wp--preset--spacing--50); padding-top: var(--wp--preset--spacing--30);
  border-top: 1px solid rgba(255, 255, 255, .16);
  font-size: var(--wp--preset--font-size--x-small); color: rgba(255, 255, 255, .75);
}
.cv-footer__bottom p { margin: 0; }

/* Floating CTA ------------------------------------------------------------- */

.cv-fcta {
  position: fixed; z-index: 55; left: 0; right: 0; bottom: 16px; margin-inline: auto;
  width: min(calc(100% - 24px), 760px); box-sizing: border-box;
  display: flex; align-items: center; justify-content: space-between; gap: 1rem;
  padding: .7rem .7rem .7rem 1.3rem; border-radius: 999px;
  background: var(--wp--preset--color--forest); color: var(--wp--preset--color--white);
  box-shadow: 0 20px 44px -18px rgba(10, 63, 35, .65);
  transform: translateY(140%); opacity: 0; visibility: hidden;
  transition: transform .35s var(--cv-ease), opacity .35s ease, visibility 0s linear .35s;
}
.cv-fcta.is-on { transform: translateY(0); opacity: 1; visibility: visible; transition-delay: 0s; }
.cv-fcta p { margin: 0; }
.cv-fcta__text { font-size: var(--wp--preset--font-size--small); line-height: 1.35; }
.cv-fcta__text span { color: rgba(255, 255, 255, .8); }
.cv-fcta__actions { display: flex; align-items: center; gap: .4rem; flex: none; }
.cv-fcta__btn {
  display: inline-flex; padding: .7rem 1.2rem; border-radius: 999px; white-space: nowrap;
  background: var(--wp--preset--color--lime); color: var(--wp--preset--color--forest) !important;
  font-family: var(--wp--preset--font-family--heading); font-weight: 700; font-size: var(--wp--preset--font-size--small); text-decoration: none;
}
.cv-fcta__btn:hover { background: var(--wp--preset--color--white); }
.cv-fcta__x {
  width: 40px; height: 40px; border: 0; border-radius: 50%; cursor: pointer;
  display: inline-flex; align-items: center; justify-content: center;
  background: transparent; color: rgba(255, 255, 255, .85);
}
.cv-fcta__x:hover { background: rgba(255, 255, 255, .12); color: var(--wp--preset--color--white); }
@media (max-width: 640px) {
  .cv-fcta { border-radius: 18px; padding: .6rem .5rem .6rem 1rem; }
  .cv-fcta__text span { display: none; }
}
@media (max-width: 400px) {
  .cv-fcta__text { display: none; }
  .cv-fcta { justify-content: center; max-width: calc(100vw - 24px); }
  .cv-fcta__actions { flex: 1; min-width: 0; }
  .cv-fcta__btn { flex: 1; justify-content: center; white-space: normal; text-align: center; }
}

/* Gravity Forms: just enough to sit in the system. ------------------------- */
.gform_wrapper .gform_button, .gform_wrapper .gform-button { border-radius: 999px !important; font-weight: 700 !important; }

/* ==========================================================================
   Content layouts produced by tools/build_content.py
   ========================================================================== */

/* Floated illustrations inside prose: unfloat on small screens. */
/* Keep a floated illustration inside the reading column. The prose wrapper is
   wide, so without this it floats to the wide edge, away from its text. */
.cv-prose .is-layout-constrained > .wp-block-image.alignright {
  margin: .3rem max(0px, calc((100% - var(--wp--style--global--content-size)) / 2)) 1.2rem 2rem !important;
}
/* Buttons are a flex box, which sits beside a float and shifts sideways. */
.cv-prose .is-layout-constrained > .wp-block-buttons { clear: both; }
.cv-prose .wp-block-image.alignright img { border-radius: 12px; }
@media (max-width: 700px) {
  .cv-prose .is-layout-constrained > .wp-block-image.alignright { float: none; margin: 1rem auto !important; max-width: 260px; }
}
/* Vertical rhythm in page bodies. Paragraphs keep the theme's normal gap;
   anything that changes the shape of the column (cards, image rows, embeds,
   forms, button rows) gets real air above and below, and headings get more
   above than below so each one visibly starts a new part. Sibling margins
   collapse, so a grid followed by a heading takes the larger of the two,
   never the sum. */
.cv-prose .wp-block-post-content > :is(.cv-grid, .cv-feat, .cv-media, .wp-block-columns, .wp-block-embed, .cv-figure, .cv-formslot, .wp-block-quote, .cv-quotes-wrap, .cv-logos-wrap, .cv-founder, .wp-block-table) {
  margin-block: var(--wp--preset--spacing--60) !important;
}
.cv-prose .wp-block-post-content > .wp-block-buttons { margin-block: var(--wp--preset--spacing--50) !important; }
.cv-prose .wp-block-post-content > h2 { margin-top: var(--wp--preset--spacing--60) !important; margin-bottom: var(--wp--preset--spacing--20) !important; }
.cv-prose .wp-block-post-content > :is(h3, h4) { margin-top: var(--wp--preset--spacing--50) !important; margin-bottom: var(--wp--preset--spacing--10) !important; }
.cv-prose .wp-block-post-content > :first-child { margin-top: 0 !important; }
.cv-prose .wp-block-post-content > :last-child { margin-bottom: 0 !important; }

/* Text beside an illustration (build_content.b_media). Image right by
   default; every other row flips it left so a page doesn't zig one way. */
.cv-media { gap: var(--wp--preset--spacing--50) !important; }
.cv-media > .wp-block-column > :first-child { margin-top: 0 !important; }
.cv-media > .wp-block-column > :last-child { margin-bottom: 0 !important; }
.cv-media__art .wp-block-image { margin: 0 !important; display: flex; justify-content: center; }
.cv-media__art img { width: min(100%, 400px); height: auto; }
.cv-media__text .wp-block-buttons { margin-top: var(--wp--preset--spacing--30) !important; }
@media (min-width: 782px) { .cv-media--flip { flex-direction: row-reverse; } }
@media (max-width: 781px) { .cv-media__art img { width: min(100%, 280px); } }
/* An illustration with no text beside it: centred, not stranded on one side. */
.cv-figure { display: flex; justify-content: center; }
.cv-figure img { width: min(100%, 420px); height: auto; }
.cv-prose h2, .cv-prose h3, .cv-prose .cv-grid, .cv-prose .cv-formslot, .cv-prose .cv-quotes-wrap, .cv-prose .cv-logos-wrap { clear: both; }
.cv-prose .wp-block-embed { margin-block: var(--wp--preset--spacing--40); }

/* Page hero with art */
.cv-hero__grid { display: grid; gap: var(--wp--preset--spacing--50); align-items: center; }
@media (min-width: 900px) { .cv-hero__grid.has-art { grid-template-columns: minmax(0, 1.6fr) minmax(0, 1fr); } }
.cv-hero__art { display: flex; justify-content: center; }
.cv-hero__art img { width: min(100%, 340px); height: auto; filter: drop-shadow(0 24px 40px rgba(0, 0, 0, .25)); }
@media (max-width: 899px) { .cv-hero__art { display: none; } }
.cv-hero .wp-block-embed { margin: 0; }
.cv-hero .wp-block-embed__wrapper { border-radius: 16px; overflow: hidden; box-shadow: 0 30px 60px -30px rgba(0, 0, 0, .6); }

/* Testimonials */
.cv-quotes { list-style: none; margin: 0; padding: 0; display: grid; gap: 1.25rem; grid-template-columns: repeat(auto-fill, minmax(min(100%, 320px), 1fr)); align-items: start; }
.cv-quote figure { margin: 0; height: 100%; display: flex; flex-direction: column; justify-content: space-between; gap: 1.2rem;
  background: var(--wp--preset--color--white); border: 1px solid var(--wp--preset--color--line); border-radius: var(--cv-radius);
  padding: 2.4rem 1.6rem 1.5rem; position: relative; box-shadow: var(--wp--preset--shadow--card); }
.cv-quote figure::before { content: "\201C"; position: absolute; top: .35rem; left: 1.4rem; font-family: var(--wp--preset--font-family--heading); font-size: 3.4rem; line-height: 1; color: var(--wp--preset--color--brand-mid); }
.cv-quote blockquote { margin: 0; padding: 0; border: 0; }
.cv-quote blockquote p { margin: 0; font-size: var(--wp--preset--font-size--medium); line-height: 1.6; }
.cv-quote figcaption { display: flex; align-items: center; gap: .8rem; font-size: var(--wp--preset--font-size--small); }
.cv-quote figcaption > span { display: flex; flex-direction: column; }
.cv-quote__role { color: var(--wp--preset--color--ink-soft); }
.cv-quote__photo { width: 48px; height: 48px; border-radius: 50%; object-fit: cover; flex: none; }
.cv-quote__initials { display: inline-flex; align-items: center; justify-content: center; background: var(--wp--preset--color--mint); color: var(--wp--preset--color--brand); font-family: var(--wp--preset--font-family--heading); font-weight: 800; }
.cv-quotes-wrap { margin-block: var(--wp--preset--spacing--60) !important; }
.cv-section__h--gap { margin-top: var(--wp--preset--spacing--60) !important; }
.cv-section__more { margin-top: 1.5rem; text-align: center; font-weight: 700; }
/* Centred CTAs: text links and button rows alike sit on the page centre line. */
.cv-center { text-align: center; }
.wp-block-buttons.cv-center { justify-content: center; }
.cv-more { margin-top: var(--wp--preset--spacing--50) !important; font-weight: 700; }

/* Client logos */
.cv-logogrid { list-style: none; margin: 0; padding: 0; display: grid; gap: 1rem; grid-template-columns: repeat(2, minmax(0, 1fr)); }
@media (min-width: 700px) { .cv-logogrid { grid-template-columns: repeat(4, minmax(0, 1fr)); } }
.cv-logogrid li { display: flex; align-items: center; justify-content: center; aspect-ratio: 2 / 1; padding: .8rem 1.4rem; background: var(--wp--preset--color--white); border: 1px solid var(--wp--preset--color--line); border-radius: 14px; }
.cv-logogrid img { max-width: 100%; max-height: 100%; width: auto; height: auto; object-fit: contain; border-radius: 0; }
.cv-logos-wrap { margin-block: var(--wp--preset--spacing--50) !important; }

/* Case studies */
.cv-case { border: 1px solid var(--wp--preset--color--line); border-radius: var(--cv-radius); padding: clamp(1.4rem, 3vw, 2.4rem); margin-block: var(--wp--preset--spacing--40) !important; background: var(--wp--preset--color--white); box-shadow: var(--wp--preset--shadow--card); }
.cv-case > :first-child { margin-top: 0; }
.cv-case h2 { margin-top: .2rem; }
.cv-case .wp-block-quote { margin-top: .5rem; }

/* Map embed */
.cv-map { margin-top: 1.4rem; border-radius: 14px; overflow: hidden; border: 1px solid var(--wp--preset--color--line); aspect-ratio: 4 / 3; }
.cv-map iframe { width: 100%; height: 100%; border: 0; display: block; }

/* Social icons */
.cv-social { list-style: none; margin: 1.2rem 0 0; padding: 0; display: flex; gap: .5rem; }
.cv-social a { display: inline-flex; align-items: center; justify-content: center; width: 40px; height: 40px; border-radius: 50%; background: rgba(255, 255, 255, .1); color: var(--wp--preset--color--white); }
.cv-social a:hover { background: var(--wp--preset--color--lime); color: var(--wp--preset--color--forest); text-decoration: none; }
.cv-contact .cv-social a { background: var(--wp--preset--color--white); color: var(--wp--preset--color--brand); border: 1px solid var(--wp--preset--color--line); }
.cv-contact .cv-social a:hover { background: var(--wp--preset--color--brand); color: var(--wp--preset--color--white); }

/* Forms */
.cv-formslot { clear: both; margin-block: var(--wp--preset--spacing--50) !important; }
.cv-formslot .gform_wrapper { margin-top: 1rem; }
.cv-formslot .gform_confirmation_message { padding: 1.2rem; border-radius: 12px; background: var(--wp--preset--color--mint); color: var(--wp--preset--color--forest); font-weight: 600; }
.cv-code, .wp-block-code { background: var(--wp--preset--color--mint-2); border: 1px solid var(--wp--preset--color--line); border-radius: 10px; padding: 1rem 1.2rem; font-size: .9rem; overflow-x: auto; }

.cv-contactgrid .cv-formslot { margin-block: 0 !important; }
.cv-founder { margin-top: 1rem !important; }
.cv-founder h3 { margin-top: .2rem; }

/* ==========================================================================
   Cards, sitewide (content card grids and the PHP service cards share this).

   - Equal heights per row: grid items stretch, cards are flex columns, and
     the arrow is pinned to the bottom with margin-top:auto.
   - One link per card: the descriptive title link is stretched over the whole
     card with ::before, so the full card is clickable without nesting.
   - Hover/focus: lift, soft shadow, green border, arrow nudges right.
   ========================================================================== */

.wp-block-group.cv-grid,
.cv-cards {
  display: grid !important; gap: 1.25rem; align-items: stretch;
  grid-template-columns: repeat(auto-fill, minmax(min(100%, 300px), 1fr));
  margin-block: var(--wp--preset--spacing--40) !important;
  list-style: none; padding: 0;
}
/* Column counts per breakpoint, set so no card drops under ~210px wide (at
   1024 a 5-up row was 120px columns) and a set never ends in a lone card. */
@media (min-width: 1000px) { .wp-block-group.cv-grid--3 { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
@media (min-width: 1180px) { .wp-block-group.cv-grid--4 { grid-template-columns: repeat(4, minmax(0, 1fr)); } }
@media (min-width: 1280px) { .wp-block-group.cv-grid--5 { grid-template-columns: repeat(5, minmax(0, 1fr)); } }
@media (min-width: 640px) and (max-width: 1179px) { .wp-block-group.cv-grid--4 { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (min-width: 900px) and (max-width: 1279px) { .wp-block-group.cv-grid--5 { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
@media (min-width: 640px) and (max-width: 899px) {
  .wp-block-group.cv-grid--5 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .wp-block-group.cv-grid--5 > :last-child:nth-child(odd) { grid-column: 1 / -1; }
}
/* Phones: image service cards become compact rows (illustration beside the
   text), so four of them don't take four screens. */
@media (max-width: 639px) {
  .cv-card-block.cv-card--media { display: grid; grid-template-columns: 84px minmax(0, 1fr); column-gap: 1rem; row-gap: .35rem; align-items: start; padding: 1.1rem; }
  .cv-card-block.cv-card--media > .cv-card-img { grid-row: 1 / span 3; margin: 0 !important; }
  .cv-card-block.cv-card--media > .cv-card-img img { height: 84px; padding: .5rem; }
  .cv-card-block.cv-card--media > :not(.cv-card-img) { grid-column: 2; }
  .cv-card-block.cv-card--media.is-linked::after { grid-column: 2; padding-top: .4rem; }
  /* Icon cards ("More ways we help", related services): icon beside the text. */
  .cv-card-block.cv-card--mini.has-icon { display: grid; grid-template-columns: 48px minmax(0, 1fr); column-gap: 1rem; row-gap: .3rem; align-items: start; }
  .cv-card-block.cv-card--mini.has-icon::before { grid-row: 1 / span 3; margin: 0; }
  .cv-card-block.cv-card--mini.has-icon > * { grid-column: 2; }
  .cv-card-block.cv-card--mini.has-icon.is-linked::after { grid-column: 2; padding-top: .3rem; }
}
/* Three testimonials or three posts: three across from 900px, one column
   below, rather than two plus an orphan. */
@media (min-width: 900px) {
  .cv-quotes:has(> :nth-child(3):last-child) { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .wp-block-post-template.cv-postcards { grid-template-columns: repeat(3, minmax(0, 1fr)) !important; }
}
@media (max-width: 899px) {
  .cv-quotes:has(> :nth-child(3):last-child) { grid-template-columns: minmax(0, 1fr); }
}
@media (min-width: 600px) and (max-width: 899px) {
  /* Posts as rows: image left, text right. */
  .wp-block-post-template.cv-postcards { grid-template-columns: minmax(0, 1fr) !important; }
  .wp-block-post-template.cv-postcards > li { display: grid !important; grid-template-columns: minmax(0, .9fr) minmax(0, 1.1fr); }
  .wp-block-post-template.cv-postcards > li .wp-block-post-featured-image, .wp-block-post-template.cv-postcards > li .wp-block-post-featured-image img { height: 100%; aspect-ratio: auto !important; object-fit: cover; }
}
.wp-block-group.cv-grid > * { margin: 0 !important; }
@media (min-width: 1000px) { .cv-cards--3 { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
.cv-related .cv-section__h { margin-bottom: var(--wp--preset--spacing--40); }
.cv-nearby { margin: var(--wp--preset--spacing--50) 0 0; color: var(--wp--preset--color--ink-soft); }
.cv-nearby a { color: var(--wp--preset--color--brand); font-weight: 600; }

.cv-card-block, .cv-card {
  position: relative; display: flex; flex-direction: column; gap: .55rem;
  padding: 1.5rem; /* no height:100%: grid items stretch, and 100% overlapped rows */
  background: var(--wp--preset--color--white);
  border: 1px solid var(--wp--preset--color--line);
  border-radius: var(--cv-radius);
  box-shadow: var(--wp--preset--shadow--card);
  transition: transform .25s var(--cv-ease), box-shadow .25s ease, border-color .25s ease;
}
.cv-card-block > * { margin-block: 0 !important; }
.cv-card-block h3, .cv-card__title {
  font-family: var(--wp--preset--font-family--heading);
  font-size: 1.15rem; font-weight: 700; line-height: 1.3; letter-spacing: -.01em; margin: 0;
}
.cv-card-block p, .cv-card__text { margin: 0; font-size: var(--wp--preset--font-size--small); line-height: 1.6; color: var(--wp--preset--color--ink-soft); }
.cv-card-block a, .cv-card__title a { color: var(--wp--preset--color--ink); text-decoration: none; }

/* The stretched link. */
.cv-card-block.is-linked :is(h3 a, .cv-card-cta a)::before,
.cv-card__title a::before { content: ""; position: absolute; inset: 0; border-radius: inherit; z-index: 1; }

/* The arrow, pinned to the bottom of every linked card. */
.cv-card-block.is-linked::after,
.cv-card__arrow {
  content: ""; display: block; margin-top: auto !important; padding-top: .9rem;
  width: 1.6rem; height: 1rem; box-sizing: content-box;
  background: var(--wp--preset--color--brand);
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 26 16'%3E%3Cpath d='M1 8h22M16 1l7 7-7 7' fill='none' stroke='black' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") left bottom / 1.6rem 1rem no-repeat;
          mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 26 16'%3E%3Cpath d='M1 8h22M16 1l7 7-7 7' fill='none' stroke='black' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") left bottom / 1.6rem 1rem no-repeat;
  transition: transform .25s var(--cv-ease);
}
/* A card whose link is a CTA line: the line itself sits at the bottom. */
.cv-card-block .cv-card-cta { margin-top: auto !important; padding-top: .6rem; font-weight: 700; font-size: var(--wp--preset--font-size--small); }
.cv-card-block .cv-card-cta a { color: var(--wp--preset--color--brand); }
.cv-card-block.is-linked:has(.cv-card-cta)::after { margin-top: .2rem !important; padding-top: 0; }

/* Hover and keyboard focus. */
@media (hover: hover) {
  .cv-card-block.is-linked:hover, .cv-card:hover {
    transform: translateY(-4px);
    border-color: var(--wp--preset--color--brand-mid);
    box-shadow: 0 22px 44px -24px rgba(10, 63, 35, .45);
  }
  .cv-card-block.is-linked:hover::after, .cv-card:hover .cv-card__arrow { transform: translateX(6px); }
  .cv-card-block.is-linked:hover h3 a, .cv-card:hover .cv-card__title a { color: var(--wp--preset--color--brand); }
}
.cv-card-block.is-linked:has(a:focus-visible), .cv-card:has(a:focus-visible) {
  border-color: var(--wp--preset--color--brand-mid);
  outline: 3px solid var(--wp--preset--color--brand-mid); outline-offset: 3px;
}
.cv-card-block.is-linked:has(a:focus-visible)::after, .cv-card:has(a:focus-visible) .cv-card__arrow { transform: translateX(6px); }
.cv-card-block a:focus-visible, .cv-card__title a:focus-visible { outline: none; }
@media (prefers-reduced-motion: reduce) {
  .cv-card-block.is-linked:hover, .cv-card:hover { transform: none; }
}

/* Image cards: illustration on a mint tile. */
.cv-card-img { margin: 0 0 .5rem !important; }
.cv-card-img img {
  display: block; width: 100%; height: 170px; object-fit: contain;
  padding: 1rem; box-sizing: border-box; border-radius: 12px;
  background: var(--wp--preset--color--mint-2);
}
.cv-card--media h3 { font-size: 1.12rem; }

/* Icon cards. The icon is drawn from a class, so the card stays core blocks. */
.cv-card-block.has-icon::before, .cv-card__icon {
  content: ""; display: inline-flex; align-items: center; justify-content: center; flex: none;
  width: 48px; height: 48px; border-radius: 12px; margin-bottom: .35rem;
  background: var(--wp--preset--color--mint) var(--cv-ico, none) center / 24px no-repeat;
}
.cv-card__icon { background: var(--wp--preset--color--mint); color: var(--wp--preset--color--brand); }
.cv-card__icon .cv-icon { width: 24px; height: 24px; }
.cv-card--mini { padding: 1.25rem; }
.cv-card--mini h3 { font-size: 1.02rem; }
.cv-card--mini p { font-size: .88rem; }
.cv-feature { box-shadow: none; }
.cv-subhead { margin-top: var(--wp--preset--spacing--60) !important; font-size: var(--wp--preset--font-size--large); text-transform: none; }
.cv-home-services .cv-sechead { margin-bottom: 0 !important; }
.cv-home-services .cv-sechead + .cv-grid { margin-top: var(--wp--preset--spacing--50) !important; }

/* Page bands butt together inside post content too. The constrained layout's
   blockGap otherwise leaves a white strip between two tinted sections. */
.wp-block-post-content > .alignfull { margin-block: 0 !important; }

/* Editorial band (home "system"): the rail stays in view on the left while
   the numbered cards scroll past it on the right. Same device as the Lugo
   and ProDigital builds. */
.cv-ed {
  display: grid;
  grid-template-columns: minmax(0, .82fr) minmax(0, 1.18fr);
  gap: clamp(2rem, 5vw, 5rem);
  align-items: start;
}
.cv-ed > * { margin-block: 0 !important; }
.cv-ed__rail { position: sticky; top: calc(96px + var(--wp--preset--spacing--40)); }
.admin-bar .cv-ed__rail { top: calc(128px + var(--wp--preset--spacing--40)); }
.cv-ed__rail > * { margin-block: 0 !important; }
.cv-ed__rail h2 { margin: .4rem 0 1rem !important; font-size: var(--wp--preset--font-size--xx-large); line-height: 1.12; }
/* Both buttons take the rail's width so they read as one control group. */
.cv-ed__cta { margin-top: var(--wp--preset--spacing--50) !important; flex-direction: column; align-items: stretch; max-width: 19rem; gap: .75rem; }
.cv-ed__cta .wp-block-button, .cv-ed__cta .wp-block-button__link { width: 100%; text-align: center; }

/* The six features as a designed list rather than cards: each icon tile takes
   the next step of a forest-to-lime ramp, and a rail in the same gradient
   joins them, so the column reads as one sequence and no item outranks the rest. */
.cv-ed__cards { position: relative; display: flex; flex-direction: column; }
.cv-ed__cards > * { margin-block: 0 !important; }
.cv-ed__cards::before {
  content: ""; position: absolute; z-index: 0; left: 27px; width: 2px;
  top: 2.5rem; bottom: 2.5rem; border-radius: 2px;
  background: linear-gradient(var(--wp--preset--color--forest), var(--wp--preset--color--lime));
  opacity: .45;
}
.cv-edrow {
  --cv-tone: var(--wp--preset--color--brand);
  position: relative;
  display: grid;
  grid-template-columns: 56px minmax(0, 1fr);
  column-gap: 1.6rem;
  padding: 1.6rem 0;
}
.cv-edrow + .cv-edrow { border-top: 1px solid var(--wp--preset--color--line); }
.cv-edrow:first-child { padding-top: 0; }
.cv-edrow:last-child { padding-bottom: 0; }
/* Tile in the row's tone, with the icon knocked out in white on top of it. */
.cv-edrow::before, .cv-edrow::after {
  content: ""; grid-column: 1; grid-row: 1 / span 3; align-self: start;
  width: 56px; height: 56px;
}
.cv-edrow::before {
  position: relative; z-index: 1; border-radius: 16px;
  background: var(--cv-tone);
  box-shadow: 0 0 0 6px var(--wp--preset--color--mint), 0 14px 28px -16px var(--cv-tone);
}
.cv-edrow::after {
  position: relative; z-index: 2;
  background: var(--wp--preset--color--white);
  -webkit-mask: var(--cv-ico) center / 26px no-repeat; mask: var(--cv-ico) center / 26px no-repeat;
}
.cv-edrow:nth-child(1) { --cv-tone: #0A3F23; }
.cv-edrow:nth-child(2) { --cv-tone: #0D5A31; }
.cv-edrow:nth-child(3) { --cv-tone: #1F7438; }
.cv-edrow:nth-child(4) { --cv-tone: #3E8A3F; }
.cv-edrow:nth-child(5) { --cv-tone: #61A642; }
.cv-edrow:nth-child(6) { --cv-tone: #8CC63F; }
.cv-edrow > * { grid-column: 2; margin-block: 0 !important; }
.cv-edrow h3 { margin-top: .2rem !important; font-size: 1.3rem; line-height: 1.25; }
.cv-edrow p { margin-top: .45rem !important; color: var(--wp--preset--color--ink-soft); max-width: 34rem; }

@media (max-width: 900px) {
  /* One column: the rail stacks above the cards and stops sticking, since a
     sticky block in a single column would pin itself over the cards. */
  .cv-ed { grid-template-columns: minmax(0, 1fr); gap: var(--wp--preset--spacing--50); }
  .cv-ed__rail { position: static; }
}
@media (max-width: 520px) {
  .cv-edrow { grid-template-columns: 48px minmax(0, 1fr); column-gap: 1.1rem; }
  .cv-edrow::before, .cv-edrow::after { width: 48px; height: 48px; }
  .cv-ed__cards::before { left: 23px; }
}

.cv-ico--code   { --cv-ico: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%230F6938' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m8.5 8-4 4 4 4M15.5 8l4 4-4 4M13.5 5.5l-3 13'/%3E%3C/svg%3E"); }
.cv-ico--pen    { --cv-ico: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%230F6938' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 20h4L19 9a2.8 2.8 0 0 0-4-4L4 16v4Z'/%3E%3Cpath d='m13.5 6.5 4 4'/%3E%3C/svg%3E"); }
.cv-ico--mail   { --cv-ico: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%230F6938' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3.5' y='5.5' width='17' height='13' rx='2'/%3E%3Cpath d='m4 7 8 6 8-6'/%3E%3C/svg%3E"); }
.cv-ico--share  { --cv-ico: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%230F6938' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='6.5' cy='12' r='2.5'/%3E%3Ccircle cx='17.5' cy='6' r='2.5'/%3E%3Ccircle cx='17.5' cy='18' r='2.5'/%3E%3Cpath d='m8.7 10.8 6.6-3.6M8.7 13.2l6.6 3.6'/%3E%3C/svg%3E"); }
.cv-ico--chart  { --cv-ico: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%230F6938' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 19.5h16M6.5 16v-4M11 16V8.5M15.5 16v-6M20 5l-5 4-4-2.5-4.5 3'/%3E%3C/svg%3E"); }
.cv-ico--link   { --cv-ico: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%230F6938' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M10 14a4 4 0 0 0 5.7 0l3-3a4 4 0 0 0-5.7-5.7l-1 1'/%3E%3Cpath d='M14 10a4 4 0 0 0-5.7 0l-3 3a4 4 0 0 0 5.7 5.7l1-1'/%3E%3C/svg%3E"); }
.cv-ico--pin    { --cv-ico: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%230F6938' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 21s-6.5-5.6-6.5-11a6.5 6.5 0 0 1 13 0C18.5 15.4 12 21 12 21Z'/%3E%3Ccircle cx='12' cy='10' r='2.4'/%3E%3C/svg%3E"); }
.cv-ico--map    { --cv-ico: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%230F6938' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M9 4 3.5 6v14L9 18l6 2 5.5-2V4L15 6 9 4Z'/%3E%3Cpath d='M9 4v14M15 6v14'/%3E%3C/svg%3E"); }
.cv-ico--tooth  { --cv-ico: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%230F6938' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 5.5C10.5 4 8 3.4 6.3 4.5 4 6 4.4 9.4 5.5 12c.8 2 .9 4.4 1.4 6.5.3 1.4 1.9 1.6 2.4.2l1.2-3.6c.3-.9 1.7-.9 2 0l1.2 3.6c.5 1.4 2.1 1.2 2.4-.2.5-2.1.6-4.5 1.4-6.5 1.1-2.6 1.5-6-.8-7.5C16 3.4 13.5 4 12 5.5Z'/%3E%3C/svg%3E"); }
.cv-ico--wrench { --cv-ico: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%230F6938' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.77-3.77a6 6 0 0 1-7.94 7.94l-6.91 6.91a2.12 2.12 0 0 1-3-3l6.91-6.91a6 6 0 0 1 7.94-7.94l-3.76 3.76z'/%3E%3C/svg%3E"); }
.cv-ico--search { --cv-ico: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%230F6938' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='11' cy='11' r='6.5'/%3E%3Cpath d='m20 20-4.2-4.2'/%3E%3C/svg%3E"); }
.cv-ico--cart   { --cv-ico: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%230F6938' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3.5 4.5h2.2l2.2 10.2h10.4l2-7.4H7'/%3E%3Ccircle cx='9.5' cy='19' r='1.4'/%3E%3Ccircle cx='17' cy='19' r='1.4'/%3E%3C/svg%3E"); }
.cv-ico--layout { --cv-ico: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%230F6938' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3.5' y='4.5' width='17' height='15' rx='2'/%3E%3Cpath d='M3.5 9h17M9.5 9v10.5'/%3E%3C/svg%3E"); }
.cv-ico--users  { --cv-ico: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%230F6938' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='9' cy='8.5' r='3'/%3E%3Cpath d='M3.5 19a5.5 5.5 0 0 1 11 0'/%3E%3Cpath d='M15.5 5.8a3 3 0 0 1 0 5.4M17.5 14.2A5.5 5.5 0 0 1 20.5 19'/%3E%3C/svg%3E"); }
.cv-ico--target { --cv-ico: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%230F6938' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='8'/%3E%3Ccircle cx='12' cy='12' r='4.5'/%3E%3Ccircle cx='12' cy='12' r='1.2'/%3E%3C/svg%3E"); }
.cv-ico--spark  { --cv-ico: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%230F6938' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 3.5v4M12 16.5v4M3.5 12h4M16.5 12h4M6 6l2.6 2.6M15.4 15.4 18 18M6 18l2.6-2.6M15.4 8.6 18 6'/%3E%3C/svg%3E"); }
.cv-ico--doc    { --cv-ico: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%230F6938' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M7 3.5h7l4.5 4.5v12.5H7z'/%3E%3Cpath d='M14 3.5V8h4.5M9.5 12.5h6M9.5 16h6'/%3E%3C/svg%3E"); }
.cv-ico--megaphone{ --cv-ico: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%230F6938' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 10v4h3l7 4.5v-13L7 10H4Z'/%3E%3Cpath d='M17.5 9.5a3.5 3.5 0 0 1 0 5M7 14l1.5 5h2.5l-1.3-4.3'/%3E%3C/svg%3E"); }
.cv-ico--scale  { --cv-ico: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%230F6938' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 4v16M7 20h10M5 7h14M12 4l-1 3h2l-1-3Z'/%3E%3Cpath d='m5 7-3 6a3 3 0 0 0 6 0L5 7ZM19 7l-3 6a3 3 0 0 0 6 0l-3-6Z'/%3E%3C/svg%3E"); }


/* Feature sets (build_content.render_features): designed lists, not boxes.
   Every item takes a tone from the forest-to-lime ramp by position, so a set
   reads as one family and no item outranks the others. */
.cv-feat { --cv-tone: var(--wp--preset--color--brand); }
.cv-feat > * { margin-block: 0 !important; }
.cv-feat__item { --cv-tone: #0A3F23; position: relative; }
.cv-feat__item:nth-child(6n+2) { --cv-tone: #0D5A31; }
.cv-feat__item:nth-child(6n+3) { --cv-tone: #1F7438; }
.cv-feat__item:nth-child(6n+4) { --cv-tone: #3E8A3F; }
.cv-feat__item:nth-child(6n+5) { --cv-tone: #569B43; }
.cv-feat__item:nth-child(6n+6) { --cv-tone: #6FAE40; }
.cv-feat__item > * { margin-block: 0 !important; }
.cv-feat__h { font-size: 1.2rem; line-height: 1.3; }
.cv-feat__h a { color: inherit; text-decoration-color: var(--wp--preset--color--brand-mid); text-underline-offset: 3px; }
.cv-feat__item p { color: var(--wp--preset--color--ink-soft); }
.cv-feat__item p + p { margin-top: .6rem !important; }

/* Ruled columns: hairline dividers, a short tone rule and a tinted glyph. */
.cv-feat--rule { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 240px), 1fr)); row-gap: var(--wp--preset--spacing--50); }
.cv-feat--rule .cv-feat__item { padding: 0 clamp(1rem, 2.5vw, 2.25rem); border-left: 1px solid var(--wp--preset--color--line); }
.cv-feat--rule .cv-feat__item::before {
  content: ""; display: block; width: 30px; height: 30px; margin-bottom: 1.1rem;
  background: var(--cv-tone);
  -webkit-mask: var(--cv-ico) center / contain no-repeat; mask: var(--cv-ico) center / contain no-repeat;
}
.cv-feat--rule .cv-feat__item::after {
  content: ""; position: absolute; left: -1px; top: 0; width: 3px; height: 30px; border-radius: 3px; background: var(--cv-tone);
}
.cv-feat--rule .cv-feat__h { margin-bottom: .5rem !important; }

/* Rows: title left, description right, icon tile in the margin. */
.cv-feat--rows { border-top: 2px solid var(--wp--preset--color--ink); }
.cv-feat--rows .cv-feat__item {
  display: grid; grid-template-columns: 52px minmax(0, .8fr) minmax(0, 1.4fr); column-gap: clamp(1rem, 3vw, 2.5rem);
  align-items: start; padding: 1.5rem 0; border-bottom: 1px solid var(--wp--preset--color--line);
}
.cv-feat--rows .cv-feat__item::before {
  content: ""; width: 52px; height: 52px; border-radius: 14px;
  background: var(--cv-tone);
}
.cv-feat--rows .cv-feat__h { padding-top: .7rem; }
.cv-feat--rows .cv-feat__body { padding-top: .75rem; }

/* Panel: one tinted surface, two columns of items with gradient icon tiles. */
.cv-feat--tiles {
  display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--wp--preset--spacing--40) var(--wp--preset--spacing--50);
  padding: clamp(1.75rem, 4vw, 3.5rem); border-radius: calc(var(--cv-radius) + 8px);
  background: linear-gradient(135deg, var(--wp--preset--color--mint) 0%, var(--wp--preset--color--mint-2) 100%);
}
.cv-feat--tiles .cv-feat__item { display: grid; grid-template-columns: 52px minmax(0, 1fr); column-gap: 1.25rem; }
.cv-feat--tiles .cv-feat__item > * { grid-column: 2; }
.cv-feat--tiles .cv-feat__item::before {
  content: ""; grid-column: 1; grid-row: 1 / span 4; width: 52px; height: 52px; border-radius: 14px;
  background: var(--cv-tone);
  box-shadow: 0 14px 26px -16px var(--cv-tone);
}
.cv-feat--tiles .cv-feat__h { margin-bottom: .4rem !important; }

/* The icon itself, knocked out in white over the tile (rows and panel). */
.cv-feat--rows .cv-feat__item::after, .cv-feat--tiles .cv-feat__item::after {
  content: ""; position: absolute; left: 0; width: 52px; height: 52px; background: #fff;
  -webkit-mask: var(--cv-ico) center / 24px no-repeat; mask: var(--cv-ico) center / 24px no-repeat;
}
.cv-feat--rows .cv-feat__item::after { top: 1.5rem; }
.cv-feat--tiles .cv-feat__item::after { top: 0; }

/* A numbered sequence: no icon column. */
.cv-feat--noicon .cv-feat__item::before, .cv-feat--noicon .cv-feat__item::after { content: none !important; }
.cv-feat--rows.cv-feat--noicon .cv-feat__item { grid-template-columns: minmax(0, .8fr) minmax(0, 1.4fr); }
.cv-feat--rows.cv-feat--noicon .cv-feat__h, .cv-feat--rows.cv-feat--noicon .cv-feat__body { padding-top: 0; }

@media (max-width: 781px) {
  .cv-feat--rows.cv-feat--noicon .cv-feat__item { grid-template-columns: minmax(0, 1fr); }
  .cv-feat--rows.cv-feat--noicon .cv-feat__body { grid-column: 1; }
  .cv-feat--rows .cv-feat__item { grid-template-columns: 52px minmax(0, 1fr); }
  .cv-feat--rows .cv-feat__item::before { grid-row: 1 / span 2; }
  .cv-feat--rows .cv-feat__body { grid-column: 2; padding-top: .4rem; }
  .cv-feat--tiles { grid-template-columns: minmax(0, 1fr); }
  .cv-feat--rule .cv-feat__item { padding-inline: 1.25rem 0; }
}

/* Buttons: never wrap to two lines on desktop; stack cleanly on phones. */
.wp-block-button__link, .cv-btn { white-space: nowrap; }
@media (max-width: 600px) {
  .wp-block-button__link, .cv-btn { white-space: normal; }
  .cv-prose .wp-block-buttons, .cv-section .wp-block-buttons { flex-direction: column; align-items: stretch; }
  .cv-prose .wp-block-buttons > .wp-block-button, .cv-section .wp-block-buttons > .wp-block-button { width: 100%; }
  .cv-prose .wp-block-button__link, .cv-section .wp-block-button__link { width: 100%; text-align: center; }
}
@media (max-width: 699px) { .cv-logogrid li { aspect-ratio: 3 / 2; padding: .6rem .8rem; } }
