.elementor-kit-1231{--e-global-color-primary:#0097A7;--e-global-color-secondary:#0F3D4A;--e-global-color-text:#2C3E44;--e-global-color-accent:#E0F4F1;--e-global-color-86c56ab:#B6E2DA;--e-global-color-so3nearblack:#0A1F26;--e-global-color-so3white:#FFFFFF;--e-global-color-so3slate:#4A6670;--e-global-color-4191432:#99D3DF;--e-global-color-ec7a926:#F5F0EB;--e-global-color-176955b:#007A8A;--e-global-color-so3navy:#0F3554;--e-global-color-so3oxteal:#4FA7A6;--e-global-color-so3seafoam:#E0F4F1;--e-global-color-so3bodygray:#2C3E44;--e-global-typography-primary-font-family:"Plus Jakarta Sans";--e-global-typography-primary-font-size:60px;--e-global-typography-primary-font-weight:700;--e-global-typography-primary-line-height:1.05em;--e-global-typography-primary-letter-spacing:-0.025em;--e-global-typography-secondary-font-family:"DM Sans";--e-global-typography-secondary-font-size:40px;--e-global-typography-secondary-font-weight:400;--e-global-typography-secondary-line-height:1.1em;--e-global-typography-secondary-letter-spacing:-0.02em;--e-global-typography-text-font-family:"DM Sans";--e-global-typography-text-font-size:16px;--e-global-typography-text-font-weight:400;--e-global-typography-text-line-height:1.75em;--e-global-typography-accent-font-family:"DM Mono";--e-global-typography-accent-font-size:12px;--e-global-typography-accent-font-weight:400;--e-global-typography-accent-text-transform:uppercase;--e-global-typography-accent-letter-spacing:0.22em;--e-global-typography-so3h3card-font-family:"Plus Jakarta Sans";--e-global-typography-so3h3card-font-size:20px;--e-global-typography-so3h3card-font-weight:600;--e-global-typography-so3h3card-line-height:1.25em;--e-global-typography-so3h3card-letter-spacing:-0.01em;--e-global-typography-so3h4label-font-family:"DM Sans";--e-global-typography-so3h4label-font-size:12px;--e-global-typography-so3h4label-font-weight:600;--e-global-typography-so3h4label-text-transform:uppercase;--e-global-typography-so3h4label-letter-spacing:0.06em;--e-global-typography-so3button-font-family:"DM Sans";--e-global-typography-so3button-font-size:11px;--e-global-typography-so3button-font-weight:700;--e-global-typography-so3button-text-transform:uppercase;--e-global-typography-so3button-letter-spacing:0.12em;--e-global-typography-so3nav-font-family:"DM Sans";--e-global-typography-so3nav-font-size:14px;--e-global-typography-so3nav-font-weight:500;--e-global-typography-so3small-font-family:"DM Sans";--e-global-typography-so3small-font-size:13px;--e-global-typography-so3small-font-weight:400;--e-global-typography-so3small-line-height:1.7em;--e-global-typography-so3eyebrow-font-family:"DM Mono";--e-global-typography-so3eyebrow-font-size:10px;--e-global-typography-so3eyebrow-font-weight:400;--e-global-typography-so3eyebrow-text-transform:uppercase;--e-global-typography-so3eyebrow-letter-spacing:0.22em;--e-global-typography-so3slabaccent-font-family:"Roboto Slab";--e-global-typography-so3slabaccent-font-size:60px;--e-global-typography-so3slabaccent-font-weight:300;--e-global-typography-so3slabaccent-letter-spacing:-0.01em;--e-global-typography-so3statnumber-font-family:"Plus Jakarta Sans";--e-global-typography-so3statnumber-font-size:52px;--e-global-typography-so3statnumber-font-weight:700;--e-global-typography-so3statnumber-line-height:1em;--e-global-typography-so3statnumber-letter-spacing:-0.03em;--e-global-typography-so3headline-font-family:"Plus Jakarta Sans";--e-global-typography-so3headline-font-weight:700;--e-global-typography-so3bodyfont-font-family:"DM Sans";--e-global-typography-so3bodyfont-font-weight:400;color:#2C3E44;font-family:"DM Sans", Sans-serif;font-size:16px;font-weight:400;line-height:1.75em;}.elementor-kit-1231 button,.elementor-kit-1231 input[type="button"],.elementor-kit-1231 input[type="submit"],.elementor-kit-1231 .elementor-button{background-color:#0097A7;font-family:"Plus Jakarta Sans", Sans-serif;font-size:14px;font-weight:600;text-transform:uppercase;letter-spacing:0.08em;color:#FFFFFF;border-style:none;border-radius:9px 9px 9px 9px;padding:14px 28px 14px 28px;}.elementor-kit-1231 button:hover,.elementor-kit-1231 button:focus,.elementor-kit-1231 input[type="button"]:hover,.elementor-kit-1231 input[type="button"]:focus,.elementor-kit-1231 input[type="submit"]:hover,.elementor-kit-1231 input[type="submit"]:focus,.elementor-kit-1231 .elementor-button:hover,.elementor-kit-1231 .elementor-button:focus{background-color:#007a8a;color:#FFFFFF;}.elementor-kit-1231 e-page-transition{background-color:#FFBC7D;}.elementor-kit-1231 a{color:#0097A7;}.elementor-kit-1231 a:hover{color:#007a8a;}.elementor-kit-1231 h1{color:#0F3554;font-family:"Plus Jakarta Sans", Sans-serif;font-size:48px;font-weight:700;line-height:1.05em;letter-spacing:-0.025em;}.elementor-kit-1231 h2{color:#0F3554;font-family:"Plus Jakarta Sans", Sans-serif;font-size:36px;font-weight:700;line-height:1.1em;letter-spacing:-0.02em;}.elementor-kit-1231 h3{color:#0F3554;font-family:"Plus Jakarta Sans", Sans-serif;font-size:22px;font-weight:600;line-height:1.25em;letter-spacing:-0.01em;}.elementor-kit-1231 h4{color:#2C3E44;font-family:"DM Sans", Sans-serif;font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:0.06em;}.elementor-kit-1231 h5{color:#2C3E44;font-family:"DM Sans", Sans-serif;font-size:10px;font-weight:400;text-transform:uppercase;letter-spacing:0.22em;}.elementor-kit-1231 h6{color:#2C3E44;font-family:"DM Sans", Sans-serif;font-size:12px;font-weight:400;}.elementor-kit-1231 img{border-style:none;border-radius:0px 0px 0px 0px;}.elementor-kit-1231 label{color:rgba(250,250,248,0.45);font-family:"DM Mono", Sans-serif;font-size:9px;text-transform:uppercase;letter-spacing:0.16em;}.elementor-kit-1231 input:not([type="button"]):not([type="submit"]),.elementor-kit-1231 textarea,.elementor-kit-1231 .elementor-field-textual{font-family:var( --e-global-typography-so3button-font-family ), Sans-serif;font-size:var( --e-global-typography-so3button-font-size );font-weight:var( --e-global-typography-so3button-font-weight );text-transform:var( --e-global-typography-so3button-text-transform );letter-spacing:var( --e-global-typography-so3button-letter-spacing );color:#FAFAF8;background-color:rgba(255,255,255,0.05);border-style:solid;border-width:1px 1px 1px 1px;border-color:rgba(79,167,166,0.25);border-radius:0px 0px 0px 0px;padding:12px 14px 12px 14px;}.elementor-section.elementor-section-boxed > .elementor-container{max-width:1240px;}.e-con{--container-max-width:1240px;}.elementor-widget:not(:last-child){--kit-widget-spacing:20px;}.elementor-element{--widgets-spacing:20px 20px;--widgets-spacing-row:20px;--widgets-spacing-column:20px;}{}h1.entry-title{display:var(--page-title-display);}.site-header{padding-inline-end:0px;padding-inline-start:0px;}.site-footer .site-branding{flex-direction:column;align-items:stretch;}@media(max-width:1024px){.elementor-kit-1231 input:not([type="button"]):not([type="submit"]),.elementor-kit-1231 textarea,.elementor-kit-1231 .elementor-field-textual{font-size:var( --e-global-typography-so3button-font-size );letter-spacing:var( --e-global-typography-so3button-letter-spacing );}.elementor-section.elementor-section-boxed > .elementor-container{max-width:1024px;}.e-con{--container-max-width:1024px;}}@media(max-width:767px){.elementor-kit-1231 input:not([type="button"]):not([type="submit"]),.elementor-kit-1231 textarea,.elementor-kit-1231 .elementor-field-textual{font-size:var( --e-global-typography-so3button-font-size );letter-spacing:var( --e-global-typography-so3button-letter-spacing );}.elementor-section.elementor-section-boxed > .elementor-container{max-width:767px;}.e-con{--container-max-width:767px;}}/* Start custom CSS *//* ───────────────────────────────────────────────────────────────────
   01 · DESIGN TOKENS
   Extracted directly from prototype tokens (colors_and_type.css v2).
   These are the single source of truth — change here, propagate
   everywhere.
─────────────────────────────────────────────────────────────────── */
:root {
  /* — Brand palette — */
  --so3-ocean:        #0F3554;   /* primary navy — headers, nav, dark sections */
  --so3-ocean-deep:   #0A2538;   /* darkest navy — footer, hero */
  --so3-ocean-mid:    #163D5E;   /* hover states, gradient stop */
  --so3-teal:         #4FA7A6;   /* CTA, links, accents (Oxygen Teal) */
  --so3-teal-light:   #7DC4C3;   /* hover state on teal CTAs */
  --so3-teal-pale:    rgba(79,167,166,0.10);
  --so3-sand:         #E9E6E1;   /* alt section bg, headings on dark */
  --so3-sand-warm:    #F0EDE8;   /* page background */
  --so3-white:        #FAFAF8;   /* warm white — cards */
  --so3-gold:         #C4984A;   /* sparingly — premium callouts only */

  /* — Text colors — */
  --so3-text:         #1E3448;
  --so3-text-mid:     rgba(15,53,84,0.58);
  --so3-text-dim:     rgba(15,53,84,0.36);
  --so3-text-on-dark: #E9E6E1;
  --so3-text-on-dark-mid: rgba(233,230,225,0.65);
  --so3-text-on-dark-dim: rgba(233,230,225,0.40);

  /* — Borders — */
  --so3-border:       rgba(15,53,84,0.09);
  --so3-border-dark:  rgba(255,255,255,0.08);
  --so3-border-teal:  rgba(79,167,166,0.25);

  /* — Shadows — */
  --so3-shadow-sm:    0 2px 8px  rgba(15,53,84,0.06);
  --so3-shadow-md:    0 4px 20px rgba(15,53,84,0.10);
  --so3-shadow-lg:    0 8px 32px rgba(15,53,84,0.14);
  --so3-shadow-teal:  0 4px 20px rgba(79,167,166,0.30);
  --so3-shadow-header:0 4px 20px rgba(15,53,84,0.18);

  /* — Type families — */
  --so3-font: "Manrope", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;

  /* — Type scale (clamp = fluid responsive) — */
  --so3-fs-xs:    0.625rem;     /* 10px — eyebrow / mono labels */
  --so3-fs-sm:    0.8125rem;    /* 13px — small body, card body */
  --so3-fs-base:  0.9375rem;    /* 15px — body */
  --so3-fs-md:    1rem;         /* 16px — lead body */
  --so3-fs-nav:   0.8125rem;    /* 13px — nav links */
  --so3-fs-h4:    0.75rem;      /* 12px — H4 uppercase */
  --so3-fs-h3:    1.0625rem;    /* 17px — service card title */
  --so3-fs-h2:    clamp(1.75rem, 3vw, 2.25rem);   /* 28–36px */
  --so3-fs-h1:    clamp(2rem, 4.5vw, 3.25rem);    /* 32–52px */
  --so3-fs-stat:  clamp(2.25rem, 4vw, 2.75rem);   /* 36–44px */

  /* — Weights — */
  --so3-weight-regular:  400;
  --so3-weight-medium:   500;
  --so3-weight-semibold: 600;
  --so3-weight-bold:     700;
  --so3-weight-black:    800;

  /* — Line heights — */
  --so3-lh-tight:  1.05;
  --so3-lh-snug:   1.10;
  --so3-lh-card:   1.30;
  --so3-lh-body:   1.75;

  /* — Letter spacing — */
  --so3-ls-h1:    -0.025em;
  --so3-ls-h2:    -0.020em;
  --so3-ls-h3:    -0.010em;
  --so3-ls-mono:   0.220em;
  --so3-ls-eyebrow:0.200em;
  --so3-ls-btn:    0.120em;

  /* — Spacing scale — */
  --so3-s-1:  0.25rem;   --so3-s-2:  0.50rem;   --so3-s-3:  0.75rem;
  --so3-s-4:  1.00rem;   --so3-s-5:  1.25rem;   --so3-s-6:  1.50rem;
  --so3-s-8:  2.00rem;   --so3-s-10: 2.50rem;   --so3-s-12: 3.00rem;
  --so3-s-16: 4.00rem;   --so3-s-20: 5.00rem;   --so3-s-24: 6.00rem;

  /* — Section padding (vertical rhythm) — */
  --so3-section-py:        80px;   /* desktop */
  --so3-section-py-tablet: 64px;
  --so3-section-py-mobile: 48px;
  --so3-section-px:        48px;
  --so3-section-px-mobile: 24px;

  /* — Radii — */
  --so3-radius-xs:   2px;
  --so3-radius-sm:   4px;    /* buttons, inputs */
  --so3-radius-md:   10px;   /* cards (matches production) */
  --so3-radius-lg:   12px;
  --so3-radius-pill: 9999px;

  /* — Layout widths — */
  --so3-max-prose:   720px;
  --so3-max-content: 920px;
  --so3-max-wide:    1240px;

  /* — Motion — */
  --so3-t-fast: 0.15s ease;
  --so3-t-base: 0.20s ease;
  --so3-t-slow: 0.40s ease;

  /* — Header — */
  --so3-nav-height: 68px;
  --so3-nav-bg:     rgba(15,53,84,0.97);
}


/* ───────────────────────────────────────────────────────────────────
   02 · GLOBAL ELEMENT RESETS / TYPOGRAPHY
   Sets the typographic baseline. Elementor's Site Settings → Global
   Fonts/Typography should mirror the values defined here.
─────────────────────────────────────────────────────────────────── */
body,
.elementor-widget-text-editor,
.elementor-widget-heading {
  font-family: var(--so3-font);
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

body {
  font-size: var(--so3-fs-base);
  font-weight: var(--so3-weight-regular);
  line-height: var(--so3-lh-body);
  color: var(--so3-text);
  background: var(--so3-sand-warm);
}

/* Headings — element-level so they cascade through Elementor widgets
   that don't have a specific class applied. */
h1, .so3-h1 {
  font-family: var(--so3-font);
  font-size: var(--so3-fs-h1);
  font-weight: var(--so3-weight-black);
  line-height: var(--so3-lh-tight);
  letter-spacing: var(--so3-ls-h1);
  color: var(--so3-ocean);
  margin: 0 0 0.5em;
}

h2, .so3-h2 {
  font-family: var(--so3-font);
  font-size: var(--so3-fs-h2);
  font-weight: var(--so3-weight-black);
  line-height: var(--so3-lh-snug);
  letter-spacing: var(--so3-ls-h2);
  color: var(--so3-ocean);
  margin: 0 0 0.5em;
}

h3, .so3-h3 {
  font-family: var(--so3-font);
  font-size: var(--so3-fs-h3);
  font-weight: var(--so3-weight-bold);
  line-height: var(--so3-lh-card);
  letter-spacing: var(--so3-ls-h3);
  color: var(--so3-ocean);
  margin: 0 0 0.5em;
}

h4, .so3-h4 {
  font-family: var(--so3-font);
  font-size: var(--so3-fs-h4);
  font-weight: var(--so3-weight-semibold);
  letter-spacing: var(--so3-ls-eyebrow);
  text-transform: uppercase;
  color: var(--so3-ocean);
  margin: 0 0 0.5em;
}

p, .so3-body {
  font-family: var(--so3-font);
  font-size: var(--so3-fs-base);
  line-height: var(--so3-lh-body);
  color: var(--so3-text-mid);
  max-width: var(--so3-max-prose);
}

/* Headings on dark backgrounds */
.so3-dark h1, .so3-dark h2, .so3-dark h3, .so3-dark h4,
.so3-dark .so3-h1, .so3-dark .so3-h2, .so3-dark .so3-h3 {
  color: var(--so3-sand);
}
.so3-dark p, .so3-dark .so3-body {
  color: var(--so3-text-on-dark-mid);
}

/* Italic teal sub-headline (used in hero) */
.so3-h1-sub {
  font-family: var(--so3-font);
  font-size: clamp(1.125rem, 1.6vw, 1.5rem);
  font-weight: var(--so3-weight-regular);
  font-style: italic;
  color: var(--so3-teal);
  line-height: 1.35;
  letter-spacing: -0.01em;
  margin: 0 0 1.25rem;
}

/* Links */
a { color: var(--so3-teal); text-decoration: none; transition: color var(--so3-t-base); }
a:hover { color: var(--so3-teal-light); }
.so3-dark a { color: var(--so3-teal-light); }


/* ───────────────────────────────────────────────────────────────────
   03 · LAYOUT PRIMITIVES
   Use on Elementor Section/Container widgets via Advanced → CSS
   Classes. Section gives the vertical rhythm; container caps width.
─────────────────────────────────────────────────────────────────── */
.so3-section {
  padding: var(--so3-section-py) var(--so3-section-px);
  background: var(--so3-white);
}
.so3-section--sand   { background: var(--so3-sand-warm); }
.so3-section--alt    { background: var(--so3-sand); }
.so3-section--ocean  { background: var(--so3-ocean); color: var(--so3-text-on-dark); }
.so3-section--deep   { background: var(--so3-ocean-deep); color: var(--so3-text-on-dark); }
.so3-section--gradient {
  background: linear-gradient(160deg, var(--so3-ocean-deep) 0%, var(--so3-ocean) 60%, var(--so3-ocean-mid) 100%);
  color: var(--so3-text-on-dark);
}
.so3-section--ocean,
.so3-section--deep,
.so3-section--gradient { /* dark variants apply on-dark text */ }
.so3-section--ocean h1, .so3-section--ocean h2, .so3-section--ocean h3,
.so3-section--deep  h1, .so3-section--deep  h2, .so3-section--deep  h3,
.so3-section--gradient h1, .so3-section--gradient h2, .so3-section--gradient h3 {
  color: var(--so3-sand);
}
.so3-section--ocean p, .so3-section--deep p, .so3-section--gradient p {
  color: var(--so3-text-on-dark-mid);
}

.so3-container { max-width: var(--so3-max-wide); margin: 0 auto; }
.so3-container--prose   { max-width: var(--so3-max-prose); }
.so3-container--content { max-width: var(--so3-max-content); }

/* Grids */
.so3-grid       { display: grid; gap: var(--so3-s-4); }
.so3-grid--2    { grid-template-columns: repeat(2, 1fr); gap: var(--so3-s-8); }
.so3-grid--3    { grid-template-columns: repeat(3, 1fr); gap: var(--so3-s-4); }
.so3-grid--4    { grid-template-columns: repeat(4, 1fr); gap: var(--so3-s-5); }
.so3-grid--split{ grid-template-columns: 1fr 1fr; gap: 64px; align-items: center; }

/* Header row used on services / sections (left title, right link) */
.so3-section-head {
  display: flex;
  justify-content: space-between;
  align-items: flex-end;
  gap: var(--so3-s-6);
  margin-bottom: var(--so3-s-10);
  flex-wrap: wrap;
}
.so3-section-head--center { justify-content: center; text-align: center; flex-direction: column; align-items: center; }


/* ───────────────────────────────────────────────────────────────────
   04 · EYEBROW · DIVIDERS · DECORATIVE BARS
─────────────────────────────────────────────────────────────────── */
.so3-eyebrow {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  font-family: var(--so3-font);
  font-size: var(--so3-fs-xs);
  font-weight: var(--so3-weight-semibold);
  text-transform: uppercase;
  letter-spacing: var(--so3-ls-eyebrow);
  color: var(--so3-teal);
  margin-bottom: var(--so3-s-3);
}
.so3-eyebrow::before {
  content: "";
  width: 16px;
  height: 1px;
  background: var(--so3-teal);
  flex-shrink: 0;
}
.so3-eyebrow--center { justify-content: center; }
.so3-eyebrow--center::after {
  content: "";
  width: 16px;
  height: 1px;
  background: var(--so3-teal);
  flex-shrink: 0;
}

.so3-bar { width: 48px; height: 3px; background: var(--so3-teal); margin: var(--so3-s-3) 0 var(--so3-s-8); border: 0; }
.so3-bar--sm { width: 28px; height: 2px; margin: var(--so3-s-2) 0 var(--so3-s-3); }
.so3-bar--center { margin-left: auto; margin-right: auto; }


/* ───────────────────────────────────────────────────────────────────
   05 · BUTTONS
   Apply `.so3-btn` + a variant. Works on <button>, <a>, and Elementor
   button widgets (use the Custom CSS Classes field).
─────────────────────────────────────────────────────────────────── */
.so3-btn,
.so3-btn-primary,
.so3-btn-outline,
.so3-btn-outline-light {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-family: var(--so3-font);
  font-size: var(--so3-fs-xs);
  font-weight: var(--so3-weight-bold);
  letter-spacing: var(--so3-ls-btn);
  text-transform: uppercase;
  border-radius: var(--so3-radius-sm);
  padding: 14px 28px;
  cursor: pointer;
  text-decoration: none;
  border: 1px solid transparent;
  transition: background var(--so3-t-base), color var(--so3-t-base),
              border-color var(--so3-t-base), transform var(--so3-t-base),
              box-shadow var(--so3-t-base);
  white-space: nowrap;
}

/* Primary — teal CTA on light or dark surfaces */
.so3-btn-primary {
  background: var(--so3-teal);
  color: var(--so3-ocean);
  box-shadow: var(--so3-shadow-teal);
}
.so3-btn-primary:hover {
  background: var(--so3-teal-light);
  color: var(--so3-ocean);
  transform: translateY(-1px);
  box-shadow: 0 6px 24px rgba(79,167,166,0.40);
}

/* Outline — light surfaces */
.so3-btn-outline {
  background: transparent;
  color: var(--so3-ocean);
  border-color: var(--so3-border);
}
.so3-btn-outline:hover {
  border-color: var(--so3-teal);
  color: var(--so3-teal);
}

/* Outline — dark surfaces */
.so3-btn-outline-light {
  background: transparent;
  color: var(--so3-text-on-dark-mid);
  border-color: rgba(233,230,225,0.25);
}
.so3-btn-outline-light:hover {
  border-color: var(--so3-teal);
  color: var(--so3-teal);
}

/* Inline link arrow ("Learn more →") */
.so3-link-arrow {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-family: var(--so3-font);
  font-size: var(--so3-fs-xs);
  font-weight: var(--so3-weight-bold);
  letter-spacing: 0.10em;
  text-transform: uppercase;
  color: var(--so3-teal);
}
.so3-link-arrow::after { content: "→"; transition: transform var(--so3-t-base); }
.so3-link-arrow:hover::after { transform: translateX(3px); }


/* ───────────────────────────────────────────────────────────────────
   06 · CARDS
─────────────────────────────────────────────────────────────────── */
.so3-card {
  background: var(--so3-white);
  border: 1px solid var(--so3-border);
  border-radius: var(--so3-radius-md);
  padding: 28px 24px;
  box-shadow: var(--so3-shadow-sm);
  transition: border-color var(--so3-t-base), box-shadow var(--so3-t-base), transform var(--so3-t-base);
}
.so3-card:hover {
  border-color: var(--so3-teal);
  box-shadow: var(--so3-shadow-md);
  transform: translateY(-2px);
}

.so3-card--dark {
  background: var(--so3-ocean);
  border-color: var(--so3-border-dark);
  color: var(--so3-text-on-dark);
}
.so3-card--dark:hover {
  background: var(--so3-ocean-mid);
  border-color: var(--so3-border-dark);
  box-shadow: 0 8px 32px rgba(0,0,0,0.32);
}

/* Service card structure */
.so3-card-overline {
  font-size: 9px;
  font-weight: var(--so3-weight-semibold);
  color: var(--so3-teal);
  text-transform: uppercase;
  letter-spacing: var(--so3-ls-eyebrow);
  margin-bottom: 8px;
}
.so3-card-title {
  font-size: var(--so3-fs-h3);
  font-weight: var(--so3-weight-bold);
  color: var(--so3-ocean);
  line-height: var(--so3-lh-card);
  margin: 0 0 10px;
}
.so3-card--dark .so3-card-title { color: var(--so3-sand); }

.so3-card-desc {
  font-size: var(--so3-fs-sm);
  color: var(--so3-text-mid);
  line-height: var(--so3-lh-body);
  margin: 0 0 var(--so3-s-4);
}
.so3-card--dark .so3-card-desc { color: var(--so3-text-on-dark-mid); }

/* Pillar card — teal top border, no box, used on "Why Different" */
.so3-pillar {
  border-top: 3px solid var(--so3-teal);
  padding-top: var(--so3-s-5);
}
.so3-pillar-title {
  font-size: var(--so3-fs-base);
  font-weight: var(--so3-weight-bold);
  color: var(--so3-ocean);
  margin: 0 0 8px;
}
.so3-pillar-body {
  font-size: var(--so3-fs-sm);
  color: var(--so3-text-mid);
  line-height: var(--so3-lh-body);
  margin: 0;
}

/* Pricing card */
.so3-pricing {
  position: relative;
  background: var(--so3-white);
  border: 1px solid var(--so3-border);
  border-radius: var(--so3-radius-md);
  padding: 36px 28px;
  box-shadow: var(--so3-shadow-sm);
}
.so3-pricing--featured {
  background: var(--so3-ocean);
  border: 2px solid var(--so3-teal);
  color: var(--so3-text-on-dark);
  box-shadow: 0 8px 32px rgba(79,167,166,0.20);
}
.so3-pricing--featured .so3-pricing-price { color: var(--so3-sand); }
.so3-pricing-tag {
  position: absolute;
  top: -14px; left: 50%;
  transform: translateX(-50%);
  background: var(--so3-teal);
  color: var(--so3-ocean);
  font-size: var(--so3-fs-xs);
  font-weight: var(--so3-weight-bold);
  letter-spacing: 0.15em;
  text-transform: uppercase;
  padding: 5px 16px;
  border-radius: 20px;
}
.so3-pricing-label {
  font-size: var(--so3-fs-xs);
  font-weight: var(--so3-weight-semibold);
  color: var(--so3-teal);
  text-transform: uppercase;
  letter-spacing: 0.18em;
  margin: 0 0 14px;
}
.so3-pricing-price {
  font-size: 42px;
  font-weight: var(--so3-weight-black);
  color: var(--so3-ocean);
  line-height: 1;
  letter-spacing: -0.02em;
  margin: 0 0 4px;
}
.so3-pricing-sub {
  font-size: 12px;
  color: var(--so3-text-mid);
  margin: 0 0 24px;
}
.so3-pricing--featured .so3-pricing-sub { color: rgba(233,230,225,0.5); }
.so3-pricing-list { list-style: none; padding: 0; margin: 0; }
.so3-pricing-list li {
  display: flex; gap: 10px; align-items: flex-start;
  font-size: var(--so3-fs-sm);
  color: var(--so3-text-mid);
  line-height: 1.5;
  margin-bottom: 10px;
}
.so3-pricing--featured .so3-pricing-list li { color: rgba(233,230,225,0.75); }
.so3-pricing-list li::before {
  content: "✓";
  flex-shrink: 0;
  width: 16px; height: 16px;
  border-radius: 50%;
  background: var(--so3-teal-pale);
  color: var(--so3-teal);
  font-size: 10px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  margin-top: 2px;
}

/* Testimonial card */
.so3-testimonial {
  background: var(--so3-white);
  border: 1px solid var(--so3-border);
  border-radius: var(--so3-radius-md);
  padding: 28px 24px;
}
.so3-testimonial-stars { color: var(--so3-teal); font-size: 14px; margin-bottom: 14px; letter-spacing: 2px; }
.so3-testimonial-quote {
  font-size: var(--so3-fs-md);
  color: var(--so3-ocean);
  line-height: var(--so3-lh-body);
  font-style: italic;
  margin: 0 0 var(--so3-s-5);
}
.so3-testimonial-name {
  font-size: var(--so3-fs-sm);
  font-weight: var(--so3-weight-bold);
  color: var(--so3-ocean);
  margin: 0;
}
.so3-testimonial-detail {
  font-size: 12px;
  color: var(--so3-text-mid);
  margin-top: 2px;
}


/* ───────────────────────────────────────────────────────────────────
   07 · STAT STRIP
─────────────────────────────────────────────────────────────────── */
.so3-stat-strip {
  background: var(--so3-white);
  border-top: 1px solid var(--so3-border);
  border-bottom: 1px solid var(--so3-border);
  padding: 40px var(--so3-section-px);
}
.so3-stat-strip__inner {
  max-width: var(--so3-max-wide);
  margin: 0 auto;
  display: grid;
  grid-template-columns: repeat(var(--so3-stats, 4), 1fr);
  gap: var(--so3-s-6);
}
.so3-stat {
  text-align: center;
  padding: 0 var(--so3-s-4);
  border-right: 1px solid var(--so3-border);
}
.so3-stat:last-child { border-right: 0; }
.so3-stat__value {
  font-size: var(--so3-fs-stat);
  font-weight: var(--so3-weight-black);
  color: var(--so3-teal);
  line-height: 1;
  letter-spacing: -0.03em;
  margin-bottom: 6px;
}
.so3-stat__label {
  font-size: 11px;
  font-weight: var(--so3-weight-semibold);
  color: var(--so3-text-dim);
  text-transform: uppercase;
  letter-spacing: 0.15em;
}


/* ───────────────────────────────────────────────────────────────────
   08 · FORMS
   Standard inputs across Elementor Forms widget + custom forms.
─────────────────────────────────────────────────────────────────── */
input[type="text"], input[type="email"], input[type="tel"],
input[type="number"], input[type="url"], input[type="search"],
textarea, select,
.so3-input {
  font-family: var(--so3-font);
  font-size: var(--so3-fs-base);
  color: var(--so3-text);
  background: var(--so3-white);
  border: 1px solid var(--so3-border);
  border-radius: var(--so3-radius-sm);
  padding: 12px 16px;
  outline: none;
  width: 100%;
  transition: border-color var(--so3-t-base), box-shadow var(--so3-t-base);
}

input:focus, textarea:focus, select:focus, .so3-input:focus {
  border-color: var(--so3-teal);
  box-shadow: 0 0 0 3px rgba(79,167,166,0.15);
}

label, .so3-label {
  display: block;
  font-size: var(--so3-fs-xs);
  font-weight: var(--so3-weight-semibold);
  letter-spacing: var(--so3-ls-eyebrow);
  text-transform: uppercase;
  color: var(--so3-ocean);
  margin-bottom: 6px;
}

.so3-form { display: grid; gap: var(--so3-s-5); }
.so3-form .so3-form-row { display: grid; gap: var(--so3-s-5); grid-template-columns: 1fr 1fr; }
@media (max-width: 640px) { .so3-form .so3-form-row { grid-template-columns: 1fr; } }


/* ───────────────────────────────────────────────────────────────────
   09 · FAQ ACCORDION
─────────────────────────────────────────────────────────────────── */
.so3-faq { display: flex; flex-direction: column; gap: 8px; }
.so3-faq__item {
  background: var(--so3-white);
  border: 1px solid var(--so3-border);
  border-radius: var(--so3-radius-md);
  overflow: hidden;
}
.so3-faq__q {
  width: 100%;
  background: none;
  border: 0;
  cursor: pointer;
  padding: 18px 24px;
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 16px;
  text-align: left;
  font-family: var(--so3-font);
  font-size: var(--so3-fs-base);
  font-weight: var(--so3-weight-semibold);
  color: var(--so3-ocean);
}
.so3-faq__q::after {
  content: "+";
  color: var(--so3-teal);
  font-size: 20px;
  line-height: 1;
  flex-shrink: 0;
  transition: transform var(--so3-t-base);
}
.so3-faq__item[open] .so3-faq__q::after { transform: rotate(45deg); }
.so3-faq__a {
  padding: 0 24px 20px;
  font-size: var(--so3-fs-sm);
  color: var(--so3-text-mid);
  line-height: var(--so3-lh-body);
}


/* ───────────────────────────────────────────────────────────────────
   10 · PAGE HERO / DARK HERO
   Used on internal page tops (EBOO, HOCATT, Conditions, etc.)
─────────────────────────────────────────────────────────────────── */
.so3-page-hero {
  position: relative;
  overflow: hidden;
  background: linear-gradient(160deg, var(--so3-ocean-deep) 0%, var(--so3-ocean) 60%, var(--so3-ocean-mid) 100%);
  padding: 60px var(--so3-section-px) 56px;
  color: var(--so3-text-on-dark);
}
.so3-page-hero::before {
  content: "";
  position: absolute;
  top: -100px; right: -100px;
  width: 500px; height: 500px;
  border-radius: 50%;
  background: radial-gradient(circle, rgba(79,167,166,0.08) 0%, transparent 70%);
  pointer-events: none;
}
.so3-page-hero__inner { max-width: var(--so3-max-wide); margin: 0 auto; position: relative; z-index: 1; }
.so3-page-hero h1 {
  color: var(--so3-sand);
  font-size: clamp(2rem, 4vw, 3.25rem);
  max-width: 700px;
  margin: 0 0 16px;
}
.so3-page-hero p {
  color: rgba(233,230,225,0.65);
  max-width: 580px;
  font-size: 17px;
  margin: 0;
}

.so3-breadcrumb { display: flex; align-items: center; gap: 8px; margin-bottom: var(--so3-s-6); flex-wrap: wrap; }
.so3-breadcrumb a, .so3-breadcrumb span {
  font-size: 12px;
  color: rgba(233,230,225,0.45);
  font-weight: var(--so3-weight-regular);
}
.so3-breadcrumb a:hover { color: var(--so3-teal); }
.so3-breadcrumb [aria-current="page"] { color: var(--so3-teal); font-weight: var(--so3-weight-semibold); }
.so3-breadcrumb__sep { color: rgba(233,230,225,0.35); }


/* ───────────────────────────────────────────────────────────────────
   11 · CTA BANNER · FOOTER CTA STRIP
─────────────────────────────────────────────────────────────────── */
.so3-cta-banner {
  background: var(--so3-ocean-deep);
  padding: 72px var(--so3-section-px);
  text-align: center;
  color: var(--so3-text-on-dark);
}
.so3-cta-banner h2 {
  color: var(--so3-sand);
  font-size: clamp(2rem, 3.5vw, 2.75rem);
  margin: 0 0 16px;
}
.so3-cta-banner p {
  color: rgba(233,230,225,0.6);
  max-width: 620px;
  margin: 0 auto var(--so3-s-8);
  font-size: var(--so3-fs-md);
}
.so3-cta-banner__actions {
  display: flex;
  gap: 14px;
  justify-content: center;
  flex-wrap: wrap;
}

.so3-cta-strip {
  background: linear-gradient(135deg, var(--so3-ocean) 0%, var(--so3-ocean-mid) 100%);
  padding: 56px var(--so3-section-px);
  border-bottom: 1px solid rgba(255,255,255,0.06);
}
.so3-cta-strip__inner {
  max-width: var(--so3-max-wide);
  margin: 0 auto;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 32px;
  flex-wrap: wrap;
}


/* ───────────────────────────────────────────────────────────────────
   12 · HEADER / NAV HELPERS
   (Header itself is built as an Elementor template — these classes
   give it the same colors, hover behavior and dropdown surface as
   the prototype.)
─────────────────────────────────────────────────────────────────── */
.so3-header {
  position: sticky; top: 0; z-index: 200;
  background: var(--so3-nav-bg);
  -webkit-backdrop-filter: blur(20px);
          backdrop-filter: blur(20px);
  border-bottom: 1px solid var(--so3-border-teal);
}
.so3-header--scrolled { box-shadow: var(--so3-shadow-header); }

.so3-nav-link {
  font-family: var(--so3-font);
  font-size: var(--so3-fs-nav);
  font-weight: var(--so3-weight-medium);
  letter-spacing: 0.03em;
  color: rgba(233,230,225,0.65);
  padding: 8px 14px;
  border-bottom: 2px solid transparent;
  text-decoration: none;
  transition: color var(--so3-t-base), border-color var(--so3-t-base);
}
.so3-nav-link:hover,
.so3-nav-link[aria-current="page"],
.so3-nav-link.is-active {
  color: var(--so3-teal);
  border-bottom-color: var(--so3-teal);
}

/* Dropdown surface (light card with teal top border) */
.so3-dropdown {
  background: var(--so3-white);
  border: 1px solid var(--so3-border);
  border-top: 2px solid var(--so3-teal);
  border-radius: 0 0 var(--so3-radius-md) var(--so3-radius-md);
  min-width: 240px;
  padding: 6px 0;
  box-shadow: 0 12px 40px rgba(15,53,84,0.18);
}
.so3-dropdown a {
  display: flex; align-items: center; gap: 10px;
  padding: 11px 18px;
  font-size: var(--so3-fs-sm);
  font-weight: var(--so3-weight-medium);
  color: var(--so3-text-mid);
  text-decoration: none;
  transition: color var(--so3-t-base), background var(--so3-t-base);
}
.so3-dropdown a:hover {
  background: var(--so3-teal-pale);
  color: var(--so3-teal);
}
.so3-dropdown a::before {
  content: "";
  width: 4px; height: 4px;
  border-radius: 50%;
  background: var(--so3-teal);
  flex-shrink: 0;
}


/* ───────────────────────────────────────────────────────────────────
   13 · REVEAL & HOVER ANIMATION UTILITIES
   Gentle, measured. No bounce, no spring. Honors prefers-reduced-motion.
─────────────────────────────────────────────────────────────────── */
@keyframes so3-fade-up {
  from { opacity: 0; transform: translateY(16px); }
  to   { opacity: 1; transform: translateY(0); }
}
@keyframes so3-fade {
  from { opacity: 0; }
  to   { opacity: 1; }
}

.so3-reveal { opacity: 0; animation: so3-fade-up 0.6s ease forwards; }
.so3-reveal--delay-1 { animation-delay: 0.08s; }
.so3-reveal--delay-2 { animation-delay: 0.16s; }
.so3-reveal--delay-3 { animation-delay: 0.24s; }
.so3-reveal--delay-4 { animation-delay: 0.32s; }
.so3-reveal--fade { animation-name: so3-fade; }

.so3-hover-lift { transition: transform var(--so3-t-base), box-shadow var(--so3-t-base); }
.so3-hover-lift:hover { transform: translateY(-4px); box-shadow: var(--so3-shadow-md); }

@media (prefers-reduced-motion: reduce) {
  .so3-reveal,
  .so3-hover-lift,
  .so3-card,
  .so3-btn-primary {
    animation: none !important;
    transition: none !important;
    transform: none !important;
  }
}


/* ───────────────────────────────────────────────────────────────────
   14 · SPACING & UTILITY HELPERS
─────────────────────────────────────────────────────────────────── */
.so3-mt-0  { margin-top: 0 !important; }
.so3-mt-2  { margin-top: var(--so3-s-2) !important; }
.so3-mt-4  { margin-top: var(--so3-s-4) !important; }
.so3-mt-6  { margin-top: var(--so3-s-6) !important; }
.so3-mt-8  { margin-top: var(--so3-s-8) !important; }
.so3-mt-12 { margin-top: var(--so3-s-12)!important; }

.so3-mb-0  { margin-bottom: 0 !important; }
.so3-mb-2  { margin-bottom: var(--so3-s-2) !important; }
.so3-mb-4  { margin-bottom: var(--so3-s-4) !important; }
.so3-mb-6  { margin-bottom: var(--so3-s-6) !important; }
.so3-mb-8  { margin-bottom: var(--so3-s-8) !important; }
.so3-mb-12 { margin-bottom: var(--so3-s-12)!important; }

.so3-text-center { text-align: center; }
.so3-text-left   { text-align: left; }
.so3-text-teal   { color: var(--so3-teal) !important; }
.so3-text-ocean  { color: var(--so3-ocean) !important; }
.so3-text-sand   { color: var(--so3-sand) !important; }
.so3-text-muted  { color: var(--so3-text-mid) !important; }

.so3-bg-white { background: var(--so3-white) !important; }
.so3-bg-sand  { background: var(--so3-sand-warm) !important; }
.so3-bg-alt   { background: var(--so3-sand) !important; }
.so3-bg-ocean { background: var(--so3-ocean) !important; color: var(--so3-text-on-dark); }
.so3-bg-deep  { background: var(--so3-ocean-deep) !important; color: var(--so3-text-on-dark); }

.so3-divider { height: 1px; background: var(--so3-border); border: 0; margin: var(--so3-s-6) 0; }
.so3-divider--dark { background: rgba(255,255,255,0.08); }


/* ───────────────────────────────────────────────────────────────────
   15 · RESPONSIVE BREAKPOINTS
   Tablet ≤ 1024  ·  Mobile ≤ 768  ·  Phone ≤ 480
─────────────────────────────────────────────────────────────────── */
@media (max-width: 1024px) {
  .so3-section { padding: var(--so3-section-py-tablet) var(--so3-section-px); }
  .so3-grid--3 { grid-template-columns: repeat(2, 1fr); }
  .so3-grid--4 { grid-template-columns: repeat(2, 1fr); }
  .so3-grid--split { grid-template-columns: 1fr; gap: var(--so3-s-10); }
}

@media (max-width: 768px) {
  .so3-section { padding: var(--so3-section-py-mobile) var(--so3-section-px-mobile); }
  .so3-stat-strip { padding: 32px var(--so3-section-px-mobile); }
  .so3-stat-strip__inner { grid-template-columns: repeat(2, 1fr); gap: var(--so3-s-5); }
  .so3-stat { border-right: 0; padding: var(--so3-s-3) 0; }
  .so3-grid--2,
  .so3-grid--3,
  .so3-grid--4 { grid-template-columns: 1fr; }
  .so3-cta-strip__inner { flex-direction: column; align-items: flex-start; text-align: left; }
  .so3-page-hero { padding: 48px var(--so3-section-px-mobile); }
  .so3-cta-banner { padding: 56px var(--so3-section-px-mobile); }
  .so3-btn,
  .so3-btn-primary,
  .so3-btn-outline,
  .so3-btn-outline-light { padding: 13px 22px; }
}

@media (max-width: 480px) {
  .so3-pricing-price { font-size: 36px; }
  .so3-page-hero h1 { font-size: 2rem; }
  .so3-cta-banner h2 { font-size: 1.75rem; }
}


/* ───────────────────────────────────────────────────────────────────
   16 · ELEMENTOR-SPECIFIC OVERRIDES (LOW-SPECIFICITY)
   Scoped, class-based — never use !important except where Elementor
   wins on specificity. Goal: zero conflicts with Hello Theme.
─────────────────────────────────────────────────────────────────── */

/* Make Elementor button widgets honor our button system when given
   the `.so3-btn-primary` (etc.) class. */
.elementor-button.so3-btn-primary,
a.elementor-button.so3-btn-primary {
  background: var(--so3-teal);
  color: var(--so3-ocean);
  border-radius: var(--so3-radius-sm);
  padding: 14px 28px;
  font-family: var(--so3-font);
  font-size: var(--so3-fs-xs);
  font-weight: var(--so3-weight-bold);
  letter-spacing: var(--so3-ls-btn);
  text-transform: uppercase;
  box-shadow: var(--so3-shadow-teal);
  transition: background var(--so3-t-base), transform var(--so3-t-base), box-shadow var(--so3-t-base);
}
.elementor-button.so3-btn-primary:hover {
  background: var(--so3-teal-light);
  transform: translateY(-1px);
  box-shadow: 0 6px 24px rgba(79,167,166,0.40);
}

.elementor-button.so3-btn-outline {
  background: transparent;
  color: var(--so3-ocean);
  border: 1px solid var(--so3-border);
  border-radius: var(--so3-radius-sm);
}
.elementor-button.so3-btn-outline:hover {
  border-color: var(--so3-teal);
  color: var(--so3-teal);
}

/* Elementor heading widgets default to no margin reset — restore
   our system's spacing on top-level headings inside containers. */
.elementor-widget-heading .elementor-heading-title.so3-h1,
.elementor-widget-heading .elementor-heading-title.so3-h2,
.elementor-widget-heading .elementor-heading-title.so3-h3 {
  margin-bottom: 0;
}

/* When a section uses `.so3-section--ocean` (or deep/gradient),
   downstream Elementor headings should flip to sand. */
.so3-section--ocean .elementor-heading-title,
.so3-section--deep  .elementor-heading-title,
.so3-section--gradient .elementor-heading-title {
  color: var(--so3-sand);
}
.so3-section--ocean .elementor-widget-text-editor,
.so3-section--deep  .elementor-widget-text-editor,
.so3-section--gradient .elementor-widget-text-editor {
  color: var(--so3-text-on-dark-mid);
}

/* Elementor Forms — match field styling */
.elementor-field-group input.elementor-field,
.elementor-field-group textarea.elementor-field,
.elementor-field-group select.elementor-field {
  border: 1px solid var(--so3-border);
  border-radius: var(--so3-radius-sm);
  font-family: var(--so3-font);
  font-size: var(--so3-fs-base);
  color: var(--so3-text);
  background: var(--so3-white);
  padding: 12px 16px;
  transition: border-color var(--so3-t-base), box-shadow var(--so3-t-base);
}
.elementor-field-group input.elementor-field:focus,
.elementor-field-group textarea.elementor-field:focus,
.elementor-field-group select.elementor-field:focus {
  border-color: var(--so3-teal);
  box-shadow: 0 0 0 3px rgba(79,167,166,0.15);
  outline: 0;
}
.elementor-field-group .elementor-field-label {
  font-size: var(--so3-fs-xs);
  font-weight: var(--so3-weight-semibold);
  letter-spacing: var(--so3-ls-eyebrow);
  text-transform: uppercase;
  color: var(--so3-ocean);
  margin-bottom: 6px;
}

/* End of file */


/* ── Homepage widget CSS migrated to Global ── */

.elementor-widget-html:has(#hp-root),
.elementor-widget-html:has(#hp-root) .elementor-widget-container {
  flex: 1 1 100% !important;
  width: 100% !important;
  max-width: none !important;
  overflow: visible !important;
}


/* ─────────────── */


@import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&family=Roboto+Slab:wght@300;400&family=DM+Mono:wght@400;500&display=swap');

/* ── RESET ── */
#hp-root * { box-sizing: border-box; }
#hp-root h1,#hp-root h2,#hp-root h3,#hp-root h4,
#hp-root p,#hp-root ul,#hp-root ol,#hp-root li { margin:0; padding:0; }
#hp-root a { text-decoration:none; }

/* ── ROOT: full-viewport breakout ── */
/* Uses transform technique to escape constrained widget width.
   The widget may be 711px due to old Elementor containers sharing the row,
   but #hp-root breaks free to fill 100vw. */
#hp-root {
  font-family:'Inter',system-ui,sans-serif;
  -webkit-font-smoothing:antialiased;
  color:#1E3448;
  /* Full-width escape hatch */
  width: 100%;
  overflow-x: hidden;
}

:root {
  --ocean:       #0F3554;
  --ocean-deep:  #0a2538;
  --ocean-mid:   #163d5e;
  --teal:        #4FA7A6;
  --teal-light:  #7DC4C3;
  --sand:        #E9E6E1;
  --white:       #FAFAF8;
  --text-dim:    rgba(233,230,225,0.62);
  --text-muted:  rgba(233,230,225,0.40);
  --border-t:    rgba(79,167,166,0.20);
  --shadow-lg:   0 24px 64px rgba(15,53,84,0.18);
}

/* ── SHARED INNER LAYOUT ── */
#hp-root .hp-inner {
  max-width: 1240px;
  margin-left: auto;
  margin-right: auto;
  padding-left:  clamp(32px, 5vw, 80px);
  padding-right: clamp(32px, 5vw, 80px);
}

#hp-root .hp-label {
  font-family:'DM Mono',monospace;
  font-size:9px; letter-spacing:.22em;
  text-transform:uppercase; color:var(--teal);
  display:flex; align-items:center; gap:12px;
  margin-bottom:18px;
}
#hp-root .hp-label::before {
  content:''; width:28px; height:1px; background:var(--teal); flex-shrink:0;
}

/* ── HERO ── */
#hp-root .hp-hero {
  background: linear-gradient(145deg, var(--ocean-deep) 0%, var(--ocean) 55%, #122f50 100%);
  min-height:92vh;
  display:flex; align-items:flex-end;
  padding-top:120px; padding-bottom:100px;
  position:relative; overflow:hidden;
}
#hp-root .hp-hero::before {
  content:''; position:absolute; left:0; top:0; bottom:0;
  width:4px; background:var(--teal); z-index:2;
}
#hp-root .hp-hero::after {
  content:''; position:absolute; top:0; right:0; bottom:0; left:0;
  background:radial-gradient(ellipse 55% 75% at 78% 28%, rgba(79,167,166,.08) 0%, transparent 70%);
  pointer-events:none; z-index:1;
}
#hp-root .hp-hero-content { position:relative; z-index:3; }

#hp-root .hp-h1 {
  font-family:'Inter',sans-serif; font-weight:700;
  font-size:clamp(46px,5.5vw,82px); line-height:1.0;
  letter-spacing:-0.03em; color:var(--sand);
  margin-bottom:10px;
}
#hp-root .hp-h1-accent {
  font-family:'Roboto Slab',serif; font-weight:300;
  font-style:italic; color:var(--teal);
  display:block;
}
#hp-root .hp-hero-sub {
  font-size:17px; line-height:1.9;
  color:var(--text-dim);
  max-width:520px; margin-top:22px; margin-bottom:52px;
}
#hp-root .hp-btn-row {
  display:flex; gap:20px; flex-wrap:wrap;
}
#hp-root .hp-btn-primary {
  display:inline-flex; align-items:center; gap:10px;
  padding:18px 40px; background:var(--teal); color:var(--ocean-deep);
  font-family:'Inter',sans-serif; font-weight:700;
  font-size:11px; letter-spacing:.14em;
  text-transform:uppercase; transition:all .22s;
}
#hp-root .hp-btn-primary:hover { background:#5cbcba; transform:translateY(-2px); }
#hp-root .hp-btn-outline {
  display:inline-flex; align-items:center; gap:10px;
  padding:18px 40px; background:transparent;
  border:1px solid rgba(233,230,225,.28); color:var(--sand);
  font-family:'Inter',sans-serif; font-weight:600;
  font-size:11px; letter-spacing:.14em;
  text-transform:uppercase; transition:all .22s;
}
#hp-root .hp-btn-outline:hover { border-color:var(--teal); color:var(--teal); }

/* ── STATS BAR ── */
#hp-root .hp-stats {
  background:var(--ocean-mid);
  border-top:1px solid var(--border-t);
  border-bottom:1px solid var(--border-t);
}
#hp-root .hp-stats-grid {
  display:grid; grid-template-columns:repeat(5,1fr);
}
#hp-root .hp-stat-item {
  padding:32px 28px; text-align:center;
  border-right:1px solid rgba(79,167,166,.10);
}
#hp-root .hp-stat-item:last-child { border-right:none; }
#hp-root .hp-stat-label {
  font-family:'DM Mono',monospace; font-size:8px; letter-spacing:.22em;
  text-transform:uppercase; color:var(--text-muted); margin-bottom:10px;
}
#hp-root .hp-stat-value {
  font-family:'Inter',sans-serif; font-weight:700;
  font-size:15px; color:var(--sand); letter-spacing:-.01em;
}
#hp-root .hp-stat-sub {
  font-size:11px; color:var(--text-muted); margin-top:5px; line-height:1.4;
}

/* ── SECTION HEADINGS ── */
#hp-root .hp-h2 {
  font-family:'Inter',sans-serif; font-weight:700;
  font-size:clamp(34px,3.8vw,54px); line-height:1.05;
  letter-spacing:-0.025em; color:var(--sand);
}
#hp-root .hp-h2-accent {
  font-family:'Roboto Slab',serif; font-weight:300;
  font-style:italic; color:var(--teal);
  display:block;
}

/* ── WHO WE HELP ── */
#hp-root .hp-who {
  background:var(--ocean-deep);
  padding-top:120px; padding-bottom:120px;
}
#hp-root .hp-who-header {
  display:flex; align-items:flex-end;
  justify-content:space-between;
  margin-bottom:56px;
  flex-wrap:wrap; gap:24px;
}
#hp-root .hp-who-title { max-width:520px; }
#hp-root .hp-path-grid {
  display:grid; grid-template-columns:1fr 1fr;
  gap:2px; border:1px solid var(--border-t);
}
#hp-root .hp-path-card {
  background:rgba(255,255,255,.03);
  border:none;
  padding:44px 40px 40px;
  display:flex; flex-direction:column;
  transition:background .2s;
}
#hp-root .hp-path-card:hover { background:rgba(255,255,255,.07); }
#hp-root .hp-path-seg {
  font-family:'DM Mono',monospace; font-size:9px;
  letter-spacing:.14em; text-transform:uppercase;
  color:var(--teal); margin-bottom:16px;
}
#hp-root .hp-path-title {
  font-size:20px; font-weight:600; color:var(--sand);
  line-height:1.3; margin-bottom:16px;
}
#hp-root .hp-path-text {
  font-size:14px; line-height:1.8; color:var(--text-muted);
  flex:1; margin-bottom:28px;
}
#hp-root .hp-path-link {
  font-family:'DM Mono',monospace; font-size:9px;
  letter-spacing:.12em; text-transform:uppercase;
  color:var(--teal); text-decoration:none;
  border-bottom:1px solid rgba(79,167,166,.3);
  padding-bottom:2px; display:inline-block;
  transition:border-color .2s;
}
#hp-root .hp-path-link:hover { border-color:var(--teal); }

/* ── TESTIMONIALS ── */
#hp-root .hp-testimonials {
  background:var(--ocean);
  padding-top:120px; padding-bottom:120px;
}
#hp-root .hp-testi-header { margin-bottom:52px; }
#hp-root .hp-testi-grid {
  display:grid; grid-template-columns:1fr 1fr;
  gap:24px;
}
#hp-root .hp-testi-card {
  background:rgba(255,255,255,.05);
  border:1px solid rgba(255,255,255,.09);
  padding:40px 36px;
}
#hp-root .hp-testi-quote {
  font-family:'Roboto Slab',serif; font-weight:300; font-style:italic;
  font-size:15px; color:var(--sand); line-height:1.8;
  margin-bottom:24px;
}
#hp-root .hp-testi-author { display:flex; align-items:center; gap:14px; }
#hp-root .hp-testi-avatar {
  width:40px; height:40px; border-radius:50%;
  background:var(--teal);
  display:flex; align-items:center; justify-content:center;
  font-size:15px; color:var(--ocean-deep); font-weight:700; flex-shrink:0;
}
#hp-root .hp-testi-name {
  font-size:13px; font-weight:600; color:var(--sand);
}
#hp-root .hp-testi-role {
  font-size:10px; color:var(--text-muted); margin-top:3px;
}
#hp-root .hp-outcomes-note {
  margin-top:36px;
  background:rgba(255,255,255,.04);
  border:1px solid var(--border-t);
  padding:24px 32px;
}
#hp-root .hp-outcomes-note p {
  font-size:12px; line-height:1.85; color:rgba(233,230,225,.45);
}
#hp-root .hp-outcomes-note strong { color:rgba(233,230,225,.65); }

/* ── FORM SECTION ── */
#hp-root .hp-form-section {
  background:var(--ocean-deep);
  padding-top:120px; padding-bottom:140px;
  border-top:1px solid var(--border-t);
}
#hp-root .hp-form-grid {
  display:grid; grid-template-columns:1fr 480px;
  gap:88px; align-items:start;
}
#hp-root .hp-form-desc {
  font-size:16px; line-height:1.9;
  color:var(--text-dim);
  margin-top:24px; margin-bottom:0;
  max-width:400px;
}
#hp-root .hp-form-trust {
  margin-top:36px; display:flex;
  flex-direction:column; gap:12px;
}
#hp-root .hp-trust-item {
  display:flex; align-items:center; gap:10px;
  font-size:12px; color:var(--text-muted);
}
#hp-root .hp-trust-item::before {
  content:'—'; color:var(--teal); font-size:10px;
}
#hp-root .hp-form-card {
  background:var(--white);
  padding:48px 44px;
  box-shadow:var(--shadow-lg);
}
#hp-root .hp-form-card-title {
  font-family:'Inter',sans-serif; font-weight:700;
  font-size:22px; color:var(--ocean);
  letter-spacing:-.01em; margin-bottom:6px;
}
#hp-root .hp-form-card-sub {
  font-size:12px; color:rgba(15,53,84,0.50);
  margin-bottom:28px;
}

/* ── RESPONSIVE ── */
@media (max-width:1024px) {
  #hp-root .hp-form-grid { grid-template-columns:1fr; gap:56px; }
  #hp-root .hp-path-grid { grid-template-columns:1fr; }
}
@media (max-width:768px) {
  #hp-root .hp-stats-grid { grid-template-columns:1fr 1fr; }
  #hp-root .hp-testi-grid { grid-template-columns:1fr; }
  #hp-root .hp-inner { padding-left:28px; padding-right:28px; }
  #hp-root .hp-who,
  #hp-root .hp-testimonials,
  #hp-root .hp-form-section { padding-top:80px; padding-bottom:80px; }
  #hp-root .hp-hero { padding-top:80px; padding-bottom:80px; min-height:80vh; }
  #hp-root .hp-who-header { flex-direction:column; align-items:flex-start; }
}
@media (max-width:480px) {
  #hp-root .hp-stats-grid { grid-template-columns:1fr; }
  #hp-root .hp-form-grid { grid-template-columns:1fr; }
  #hp-root .hp-path-card { padding:32px 24px 28px; }
}

/* ── WPFORMS OVERRIDES (light card context) ── */
#hp-root .hp-form-card .wpforms-form input[type="text"],
#hp-root .hp-form-card .wpforms-form input[type="email"],
#hp-root .hp-form-card .wpforms-form input[type="tel"],
#hp-root .hp-form-card .wpforms-form textarea,
#hp-root .hp-form-card .wpforms-form select {
  border: 1px solid rgba(15,53,84,0.18) !important;
  border-radius: 0 !important;
  font-family: 'Inter', sans-serif !important;
  font-size: 13px !important;
  color: var(--ocean) !important;
  padding: 12px 16px !important;
  width: 100% !important;
  background: #fff !important;
}
#hp-root .hp-form-card .wpforms-form .wpforms-submit {
  background: var(--teal) !important;
  color: var(--ocean-deep) !important;
  font-family: 'Inter', sans-serif !important;
  font-weight: 700 !important;
  font-size: 11px !important;
  letter-spacing: .14em !important;
  text-transform: uppercase !important;
  border: none !important;
  border-radius: 0 !important;
  padding: 16px 40px !important;
  cursor: pointer !important;
  transition: background .2s !important;
}
#hp-root .hp-form-card .wpforms-form .wpforms-submit:hover {
  background: #5cbcba !important;
}
#hp-root .hp-form-card .wpforms-field-label {
  font-family: 'DM Mono', monospace !important;
  font-size: 9px !important;
  letter-spacing: .18em !important;
  text-transform: uppercase !important;
  color: rgba(15,53,84,0.55) !important;
  margin-bottom: 6px !important;
}

/* ══ HP SERVICES ══ */
#hp-root .hp-services{background:#F5F0EB;padding:80px 0}
#hp-root .hp-services-hdr{text-align:center;margin-bottom:48px}
#hp-root .hp-svc-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:24px}
#hp-root .hp-svc-card{background:#fff;border-radius:12px;overflow:hidden;display:flex;flex-direction:column;box-shadow:0 2px 16px rgba(15,61,74,.08);transition:transform .2s ease,box-shadow .2s ease}
#hp-root .hp-svc-card:hover{transform:translateY(-4px);box-shadow:0 8px 32px rgba(15,61,74,.16)}
#hp-root .hp-svc-img-wrap{width:100%;height:240px;overflow:hidden;flex-shrink:0}
#hp-root .hp-svc-img{width:100%;height:100%;object-fit:cover;object-position:center top;display:block;transition:transform .35s ease}
#hp-root .hp-svc-card:hover .hp-svc-img{transform:scale(1.04)}
#hp-root .hp-svc-body{padding:28px 24px 32px;display:flex;flex-direction:column;flex:1}
#hp-root .hp-svc-cat{font-family:'DM Sans',sans-serif;font-size:11px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--teal);margin-bottom:10px}
#hp-root .hp-svc-title{font-family:'Plus Jakarta Sans',sans-serif;font-size:20px;font-weight:700;color:var(--ocean);line-height:1.25;margin:0 0 14px}
#hp-root .hp-svc-line{width:40px;height:2px;background:var(--teal);margin-bottom:16px;flex-shrink:0}
#hp-root .hp-svc-desc{font-family:'DM Sans',sans-serif;font-size:14px;color:#4A6670;line-height:1.65;margin:0;padding-bottom:24px;flex:1}
#hp-root .hp-svc-btn{display:inline-block;padding:10px 24px;background:var(--ocean);color:#fff !important;font-family:'DM Sans',sans-serif;font-size:13px;font-weight:600;letter-spacing:.05em;border-radius:6px;text-decoration:none !important;align-self:flex-start;transition:background .2s ease,transform .15s ease}
#hp-root .hp-svc-btn:hover{background:var(--teal);transform:translateY(-1px)}
@media(max-width:1024px){#hp-root .hp-svc-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:640px){#hp-root .hp-svc-grid{grid-template-columns:1fr}#hp-root .hp-services{padding:56px 0}}


/* ─────────────── */


.ozone-edu-section{width:100%;background:linear-gradient(135deg,#0F3D4A 0%,#007B7B 100%);padding:80px 0;position:relative;overflow:hidden}
.ozone-edu-section::before{content:'';position:absolute;inset:0;background-image:radial-gradient(circle at 70% 50%,rgba(0,151,167,.15) 0%,transparent 60%),radial-gradient(circle at 20% 80%,rgba(15,61,74,.3) 0%,transparent 50%);pointer-events:none;z-index:0}
.ozone-edu-inner{position:relative;z-index:1;max-width:1240px;margin:0 auto;padding:0 48px;display:grid;grid-template-columns:1fr 1fr;gap:64px;align-items:center}
.ozone-edu-text{display:flex;flex-direction:column;gap:20px}
.ozone-edu-eyebrow{display:flex;align-items:center;gap:10px;font-family:'DM Sans',sans-serif;font-size:11px;font-weight:600;letter-spacing:.2em;text-transform:uppercase;color:#0097A7}
.ozone-edu-eyebrow::before{content:'';display:block;width:20px;height:1px;background:#0097A7;flex-shrink:0}
.ozone-edu-heading{font-family:'Plus Jakarta Sans',sans-serif;font-size:clamp(28px,3.5vw,42px);font-weight:800;line-height:1.15;color:#fff;letter-spacing:-.02em}
.ozone-edu-heading em{font-style:normal;color:#0097A7}
.ozone-edu-subhead{font-family:'DM Sans',sans-serif;font-size:17px;font-weight:500;line-height:1.6;color:rgba(255,255,255,.92);max-width:520px}
.ozone-edu-body{font-family:'DM Sans',sans-serif;font-size:15px;font-weight:400;line-height:1.8;color:rgba(255,255,255,.75);max-width:500px}
.ozone-edu-cta-group{display:flex;flex-direction:column;gap:14px;align-items:flex-start;margin-top:8px}
.ozone-edu-btn-primary{display:inline-flex;align-items:center;gap:8px;font-family:'DM Sans',sans-serif;font-size:14px;font-weight:600;letter-spacing:.04em;color:#fff;background:#0097A7;border-radius:999px;padding:16px 28px;text-decoration:none;border:none;cursor:pointer;transition:background .25s ease,transform .2s ease,box-shadow .25s ease;box-shadow:0 4px 20px rgba(0,151,167,.35);white-space:nowrap}
.ozone-edu-btn-primary:hover{background:#007B7B;transform:translateY(-2px);box-shadow:0 8px 28px rgba(0,123,123,.45)}
.ozone-edu-btn-primary:focus-visible{outline:3px solid #fff;outline-offset:3px}
.ozone-edu-btn-primary .btn-arrow{width:16px;height:16px;transition:transform .2s ease;flex-shrink:0}
.ozone-edu-btn-primary:hover .btn-arrow{transform:translateX(3px)}
.ozone-edu-link-secondary{font-family:'DM Sans',sans-serif;font-size:14px;font-weight:500;color:rgba(255,255,255,.7);text-decoration:none;display:inline-flex;align-items:center;gap:6px;transition:color .2s ease;padding:4px 0;border-bottom:1px solid rgba(255,255,255,.2)}
.ozone-edu-link-secondary:hover{color:#fff;border-bottom-color:rgba(255,255,255,.6)}
.ozone-edu-micro-proof{display:flex;align-items:center;gap:8px;font-family:'DM Sans',sans-serif;font-size:13px;font-weight:400;color:#0097A7;letter-spacing:.01em;margin-top:4px}
.ozone-edu-micro-proof::before{content:'';width:6px;height:6px;border-radius:50%;background:#0097A7;flex-shrink:0}
.ozone-edu-visual{display:flex;justify-content:center;align-items:center}
.ozone-edu-graphic-wrap{position:relative;width:100%;max-width:520px;border-radius:20px;overflow:hidden;box-shadow:0 24px 64px rgba(0,0,0,.3),0 0 0 1px rgba(255,255,255,.08)}
.ozone-molecule-svg{display:block;width:100%;height:auto;background:rgba(255,255,255,.04)}
.ozone-fu{opacity:0;transform:translateY(28px);transition:opacity .5s ease,transform .5s ease}
.ozone-fu.ozone-visible{opacity:1;transform:none}
.ozone-fd1{transition-delay:.1s}.ozone-fd2{transition-delay:.2s}.ozone-fd3{transition-delay:.3s}.ozone-fd4{transition-delay:.4s}.ozone-fd5{transition-delay:.5s}
@media(max-width:1024px){.ozone-edu-section{padding:64px 0}.ozone-edu-inner{padding:0 32px;gap:48px}.ozone-edu-heading{font-size:clamp(26px,3vw,36px)}}
@media(max-width:767px){.ozone-edu-section{padding:52px 0}.ozone-edu-inner{grid-template-columns:1fr;gap:40px;padding:0 20px}.ozone-edu-text{order:1}.ozone-edu-visual{order:2}.ozone-edu-heading{font-size:28px}.ozone-edu-subhead{font-size:16px;max-width:100%}.ozone-edu-body{max-width:100%}.ozone-edu-btn-primary{width:100%;justify-content:center;padding:18px 24px}.ozone-edu-cta-group{align-items:stretch}.ozone-edu-graphic-wrap{max-width:100%}}


/* === SynergyO3 Philosophy Page Section Backgrounds === */
.elementor-element-ph001.elementor-section{background-color:#0A1F26!important}
.elementor-element-ph002.elementor-section{background-color:#FFFFFF!important}
.elementor-element-ph003.elementor-section{background-color:#E0F4F1!important}
.elementor-element-ph004.elementor-section{background-color:#F5F0EB!important}
.elementor-element-ph005.elementor-section{background-color:#0F3D4A!important}
.elementor-element-ph006.elementor-section{background-color:#E0F4F1!important}
.elementor-element-ph007.elementor-section{background-color:#0A1F26!important}
/* === end philosophy section overrides === */

/* === global anchor-scroll fix — added 2026-07-16 ===
   Elementor core ships @media (prefers-reduced-motion:no-preference){html{scroll-behavior:smooth}}
   (also duplicated into Jetpack Boost critical CSS). In this stack the smooth animation is
   cancelled the instant it starts, so cross-page #hash links silently land at scrollY 0.
   Proven via A/B: smooth => scrollY 0 (fails) | auto => scrollY 2010 (lands).
   !important is required to beat both the vendor rule and the inlined critical-CSS copy
   regardless of load order. Approved by Danika 2026-07-16.
   To revert: delete this block. */
html{scroll-behavior:auto !important;}
/* === end global anchor-scroll fix === */

/* === global iOS focus-zoom fix — added 2026-07-17 ===
   Symptom: tapping the homepage search (or any form field) on iOS Safari zooms the whole
   viewport; the suggestion dropdown only looks bigger because everything is scaled up.
   Cause: this kit binds Form Fields typography to the global `so3button` token = 11px —
   the BUTTON font applied to text INPUTS. iOS Safari force-zooms any focused text control
   rendering under 16px.
   Scope: kit-level, so site-wide — homepage search AND the /schedule/ WPForms booking form.
   Fix: raise text controls to 16px at <=1024px (Elementor tablet breakpoint) — NOT just
   <=767px: iPad portrait is exactly 768px and iOS Safari force-zooms there too, so a 767px
   cap would leave iPad still broken. Desktop (>=1025px) sizing is untouched.
   Pinch-zoom deliberately left ENABLED — no maximum-scale / user-scalable=no.
   NOTE ON SPECIFICITY: the kit rule is
     .elementor-kit-1231 input:not([type="button"]):not([type="submit"])  => (0,3,1)
   so every .elementor-kit-1231 below carries body + .kit + [type] + :not(.numInput) => (0,3,2) to beat
   it WITHOUT !important. Keep the :not(.numInput) on all of them — dropping it from any one
   .elementor-kit-1231 silently drops that control back to 11px.
   flatpickr's calendar chrome (.numInput, .flatpickr-monthDropdown-months) is excluded so
   the date picker keeps its sizing.
   Rollback: delete this block. */
@media (max-width:1024px){
  body.elementor-kit-1231 input[type="text"]:not(.numInput),
  body.elementor-kit-1231 input[type="search"]:not(.numInput),
  body.elementor-kit-1231 input[type="email"]:not(.numInput),
  body.elementor-kit-1231 input[type="tel"]:not(.numInput),
  body.elementor-kit-1231 input[type="url"]:not(.numInput),
  body.elementor-kit-1231 input[type="password"]:not(.numInput),
  body.elementor-kit-1231 input[type="number"]:not(.numInput),
  body.elementor-kit-1231 input[type="date"]:not(.numInput),
  body.elementor-kit-1231 input[type="time"]:not(.numInput),
  body.elementor-kit-1231 input[type="datetime-local"]:not(.numInput),
  body.elementor-kit-1231 textarea:not(.numInput),
  body.elementor-kit-1231 select:not(.flatpickr-monthDropdown-months):not(.numInput){
    font-size:16px;
  }
}/* End custom CSS */