/* ============================================================
   Reach Co — Components & Utility Classes  (reach-co-components.css)
   ------------------------------------------------------------
   The Reach Co agency-standard component/utility layer, deployed for
   FoundationRX. Ported 2026-06-30 from aega.org's aega-components.css
   (same .rc-* convention) and driven by the client's design tokens
   (brand/design-system.css) — colors/type come from the CSS vars, so
   this same file ports across clients by swapping the token layer.
   AEGA-specific bits (navy/gold, footer, hard-coded node IDs) dropped.

   Apply via Beaver Builder → Row/Column/Module → Advanced → CSS Class.
   Load AFTER brand/design-system.css (these reference its tokens).
   Reference original: build/reference/aega-components.css

   Breakpoints (mobile-first — applies AT this width and UP):
     @s = ≥640px   @m = ≥960px   @l = ≥1200px
   ============================================================ */


/* ============================================================
   0. DEFAULT SECTION RHYTHM (zero-effort — no class per row)
   Every top-level BB row gets fluid vertical padding automatically,
   matching the design-system section rhythm (48px mobile -> 96px desktop,
   smooth). You do NOT set padding per row.
   - Low specificity on purpose: anything you set in a row's own Spacing
     settings still overrides this default.
   - Add class `rc-flush` to a row for a full-bleed / zero-padding section.
   - `rc-section-lg` bumps a row to the larger hero-ish rhythm.
   ============================================================ */
.fl-row-content-wrap { padding-top: clamp(48px, 7vw, 96px); padding-bottom: clamp(48px, 7vw, 96px); }
.fl-row.rc-flush      > .fl-row-content-wrap { padding-top: 0 !important; padding-bottom: 0 !important; }
.fl-row.rc-section-lg > .fl-row-content-wrap { padding-top: clamp(64px, 9vw, 120px) !important; padding-bottom: clamp(64px, 9vw, 120px) !important; }

/* Quick Text (rc-text) module hugs its content: drop the browser's default
   heading (h1-h6) margins so a heading in the module doesn't add dead space
   above/below. Space BETWEEN modules is set by the module/row spacing, not the
   heading's intrinsic margin. (BB's native Heading module already does this;
   our module needs it too.) */
.fl-module-rc-text .rc-text { margin: 0; }


/* ============================================================
   1. WIDTH UTILITIES (UIKit-style fraction widths)
   Class pattern: rc-width-{num}-{denom}  ·  !important beats BB's
   inline column widths. Stack responsive: "rc-width-1-1 rc-width-1-2@m"
   = full on mobile, half on tablet+.
   ============================================================ */
.rc-width-1-1     { width: 100%      !important; }
.rc-width-1-2     { width: 50%       !important; }
.rc-width-1-3     { width: 33.3333%  !important; }
.rc-width-2-3     { width: 66.6667%  !important; }
.rc-width-1-4     { width: 25%       !important; }
.rc-width-3-4     { width: 75%       !important; }
.rc-width-1-5     { width: 20%       !important; }
.rc-width-2-5     { width: 40%       !important; }
.rc-width-3-5     { width: 60%       !important; }
.rc-width-4-5     { width: 80%       !important; }
.rc-width-1-6     { width: 16.6667%  !important; }
.rc-width-5-6     { width: 83.3333%  !important; }
.rc-width-auto    { width: auto      !important; }
.rc-width-expand  { flex: 1 1 0      !important; width: auto !important; min-width: 0 !important; }

@media (min-width: 640px) {
  .rc-width-1-1\@s {width:100%!important;} .rc-width-1-2\@s {width:50%!important;}
  .rc-width-1-3\@s {width:33.3333%!important;} .rc-width-2-3\@s {width:66.6667%!important;}
  .rc-width-1-4\@s {width:25%!important;} .rc-width-3-4\@s {width:75%!important;}
  .rc-width-1-5\@s {width:20%!important;} .rc-width-2-5\@s {width:40%!important;}
  .rc-width-3-5\@s {width:60%!important;} .rc-width-4-5\@s {width:80%!important;}
  .rc-width-1-6\@s {width:16.6667%!important;} .rc-width-5-6\@s {width:83.3333%!important;}
  .rc-width-auto\@s {width:auto!important;}
  .rc-width-expand\@s {flex:1 1 0!important;width:auto!important;min-width:0!important;}
}
@media (min-width: 960px) {
  .rc-width-1-1\@m {width:100%!important;} .rc-width-1-2\@m {width:50%!important;}
  .rc-width-1-3\@m {width:33.3333%!important;} .rc-width-2-3\@m {width:66.6667%!important;}
  .rc-width-1-4\@m {width:25%!important;} .rc-width-3-4\@m {width:75%!important;}
  .rc-width-1-5\@m {width:20%!important;} .rc-width-2-5\@m {width:40%!important;}
  .rc-width-3-5\@m {width:60%!important;} .rc-width-4-5\@m {width:80%!important;}
  .rc-width-1-6\@m {width:16.6667%!important;} .rc-width-5-6\@m {width:83.3333%!important;}
  .rc-width-auto\@m {width:auto!important;}
  .rc-width-expand\@m {flex:1 1 0!important;width:auto!important;min-width:0!important;}
}
@media (min-width: 1200px) {
  .rc-width-1-1\@l {width:100%!important;} .rc-width-1-2\@l {width:50%!important;}
  .rc-width-1-3\@l {width:33.3333%!important;} .rc-width-2-3\@l {width:66.6667%!important;}
  .rc-width-1-4\@l {width:25%!important;} .rc-width-3-4\@l {width:75%!important;}
  .rc-width-1-5\@l {width:20%!important;} .rc-width-2-5\@l {width:40%!important;}
  .rc-width-3-5\@l {width:60%!important;} .rc-width-4-5\@l {width:80%!important;}
  .rc-width-1-6\@l {width:16.6667%!important;} .rc-width-5-6\@l {width:83.3333%!important;}
  .rc-width-auto\@l {width:auto!important;}
  .rc-width-expand\@l {flex:1 1 0!important;width:auto!important;min-width:0!important;}
}

/* margin-x auto — center a width-constrained block / flex item / .fl-col */
/* .rc-margin-auto is an alias of .rc-mx-auto (easier-to-remember name) */
.rc-mx-auto, .rc-margin-auto { margin-left:auto !important; margin-right:auto !important; }
@media (min-width:640px)  { .rc-mx-auto\@s { margin-left:auto!important; margin-right:auto!important; } }
@media (min-width:960px)  { .rc-mx-auto\@m { margin-left:auto!important; margin-right:auto!important; } }
@media (min-width:1200px) { .rc-mx-auto\@l { margin-left:auto!important; margin-right:auto!important; } }


/* ============================================================
   2. HEADING SIZE MODIFIERS
   Apply to any BB Heading / Rich Text / Simple Text module via
   Advanced → CSS Class. Targets the class itself, BB's inner
   .fl-heading-text span, and any nested h1–h6 so it works across
   module types. !important needed — BB ships per-node font-size.
   Mobile (<640px) scales down so xl/xxl don't break layout.
   ============================================================ */
.s-heading,  .s-heading  .fl-heading-text,  .s-heading  h1,.s-heading  h2,.s-heading  h3,.s-heading  h4,.s-heading  h5,.s-heading  h6   { font-size:1.25rem !important; line-height:1.3  !important; }
.m-heading,  .m-heading  .fl-heading-text,  .m-heading  h1,.m-heading  h2,.m-heading  h3,.m-heading  h4,.m-heading  h5,.m-heading  h6   { font-size:1.5rem  !important; line-height:1.25 !important; }
.l-heading,  .l-heading  .fl-heading-text,  .l-heading  h1,.l-heading  h2,.l-heading  h3,.l-heading  h4,.l-heading  h5,.l-heading  h6   { font-size:2rem    !important; line-height:1.2  !important; }
.xl-heading, .xl-heading .fl-heading-text,  .xl-heading h1,.xl-heading h2,.xl-heading h3,.xl-heading h4,.xl-heading h5,.xl-heading h6   { font-size:3rem    !important; line-height:1.15 !important; }
.xxl-heading,.xxl-heading .fl-heading-text, .xxl-heading h1,.xxl-heading h2,.xxl-heading h3,.xxl-heading h4,.xxl-heading h5,.xxl-heading h6 { font-size:5rem !important; line-height:1.05 !important; letter-spacing:-0.02em; }
/* Small end of the scale (small labels + resizing eyebrows down). */
.rc-fs-xs,.rc-fs-xs .fl-heading-text,.rc-fs-xs h1,.rc-fs-xs h2,.rc-fs-xs h3,.rc-fs-xs h4,.rc-fs-xs h5,.rc-fs-xs h6 { font-size:0.72rem !important; line-height:1.3 !important; }
.rc-fs-sm,.rc-fs-sm .fl-heading-text,.rc-fs-sm h1,.rc-fs-sm h2,.rc-fs-sm h3,.rc-fs-sm h4,.rc-fs-sm h5,.rc-fs-sm h6 { font-size:0.9rem  !important; line-height:1.4 !important; }

@media (max-width: 639px) {
  .s-heading,  .s-heading  .fl-heading-text,  .s-heading  h1,.s-heading  h2,.s-heading  h3,.s-heading  h4,.s-heading  h5,.s-heading  h6   { font-size:1.125rem !important; }
  .m-heading,  .m-heading  .fl-heading-text,  .m-heading  h1,.m-heading  h2,.m-heading  h3,.m-heading  h4,.m-heading  h5,.m-heading  h6   { font-size:1.25rem  !important; }
  .l-heading,  .l-heading  .fl-heading-text,  .l-heading  h1,.l-heading  h2,.l-heading  h3,.l-heading  h4,.l-heading  h5,.l-heading  h6   { font-size:1.5rem   !important; }
  .xl-heading, .xl-heading .fl-heading-text,  .xl-heading h1,.xl-heading h2,.xl-heading h3,.xl-heading h4,.xl-heading h5,.xl-heading h6   { font-size:2rem     !important; }
  .xxl-heading,.xxl-heading .fl-heading-text, .xxl-heading h1,.xxl-heading h2,.xxl-heading h3,.xxl-heading h4,.xxl-heading h5,.xxl-heading h6 { font-size:2.75rem !important; }
}


/* ============================================================
   3. EYEBROW (kicker) — typography only
   FRX spec: Manrope 600, uppercase, 0.14em tracking, cobalt.
   Three ways to apply:
     • Quick Text module → Display As → Eyebrow / Eyebrow (Light)   [inner .rc-text.eyebrow]
     • BB Heading module → Advanced → CSS Class: eyebrow            [.eyebrow.fl-heading]
     • Any module node   → Advanced → CSS Class: eyebrow            [.fl-module-rc-text.eyebrow]
   Light variant (.eyebrow-light) = light-cobalt, for DARK sections.
   Size mods: .eyebrow-lg / .eyebrow-sm.
   ============================================================ */
.eyebrow.fl-heading,
.fl-module-rc-text.eyebrow .rc-text,
.rc-text.eyebrow {
  font-family: var(--f-display, 'Manrope', sans-serif) !important;
  font-weight: var(--fw-semibold, 600) !important;
  text-transform: uppercase !important;
  letter-spacing: var(--ls-wider, 0.14em) !important;
}
/* Eyebrow SIZE + COLOR defaults at LOW specificity (single class), so the module Size
   dropdown (.rc-size-*), the Style-tab COLOR field, and Style-tab Typography all override
   them by specificity plus source order, no !important. The module's per-node color rule
   (.fl-node-X .rc-text, 0,2,0) beats these (0,1,0), so a set Color field always wins. */
.eyebrow       { font-size: var(--text-meta); line-height: var(--lh-snug); color: var(--color-primary, #2455B8); }
/* Light variant for DARK sections. Defined AFTER .eyebrow so it wins as the default;
   a module Color field (higher specificity) still overrides it. */
.eyebrow-light { color: var(--on-dark-eyebrow, #A7C3F4); }
/* Size modifiers */
.eyebrow.fl-heading.eyebrow-lg,
.fl-module-rc-text.eyebrow.eyebrow-lg .rc-text,
.rc-text.eyebrow.eyebrow-lg { font-size: 0.85rem !important; letter-spacing: 0.18em !important; }
.eyebrow.fl-heading.eyebrow-sm,
.fl-module-rc-text.eyebrow.eyebrow-sm .rc-text,
.rc-text.eyebrow.eyebrow-sm { font-size: 0.7rem  !important; letter-spacing: 0.12em !important; }
.eyebrow.fl-heading a,
.eyebrow.fl-heading .fl-heading-text { color: inherit; }


/* ============================================================
   3b. BADGE — .rc-badge   (canonical badge pattern)
   The single source of truth for badge styling across RC builds.
   Output by the Reach Co Utilities "RC Text" module (Display As → Badge),
   or add the class manually via BB Advanced → CSS Class. Token-driven +
   intentionally flat so it's easy to restyle. Variants stack on the base:
     <span class="rc-badge">New</span>
     <span class="rc-badge rc-badge-accent">Limited</span>
     <span class="rc-badge rc-badge-solid">Featured</span>
     <span class="rc-badge rc-badge-outline">Beta</span>
   ============================================================ */
.rc-badge {
  display: inline-block;
  font-family: var(--f-display, 'Manrope', sans-serif);
  font-size: var(--text-small, 0.85rem);
  font-weight: var(--fw-semibold, 600);
  line-height: 1;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  padding: 0.5em 0.9em;
  border-radius: var(--r-full, 999px);
  background: var(--color-primary-50, #EAF0FB);
  color: var(--color-primary-700, #1B3E89);
  border: 1px solid transparent;
  white-space: nowrap;
  vertical-align: middle;
  text-decoration: none;
}
/* Variant: accent (medical red tint) */
.rc-badge.rc-badge-accent { background: var(--color-accent-50, #FCE9E9); color: var(--color-accent-700, #B72325); }
/* Variant: solid (cobalt fill, white text) */
.rc-badge.rc-badge-solid  { background: var(--color-primary, #2455B8); color: #fff; }
/* Variant: solid accent (red fill, white text) */
.rc-badge.rc-badge-solid.rc-badge-accent { background: var(--color-accent, #E63031); color: #fff; }
/* Variant: outline (transparent, bordered) */
.rc-badge.rc-badge-outline { background: transparent; color: var(--color-primary-700, #1B3E89); border-color: var(--color-border-strong, #C9D1DD); }
/* Optional square corners */
.rc-badge.rc-badge-square { border-radius: var(--r-sm, 6px); }


/* ============================================================
   3c. STATUS / TRUST PILL — .rc-status   (dot + label)
   The "● Local & family-owned · Free in-home inspection" pill.
   Sentence-case (NOT uppercase — that's .rc-badge). Two contexts,
   both token-driven; output by the Quick Badge module (Style → Status):
     .rc-status                green-tint pill — on SOLID dark / cobalt sections
     .rc-status.rc-status-glass  frosted-glass pill — OVER photos / image+overlay
   Pair with a leading <span class="rc-status-dot"></span> for the live dot.
   ============================================================ */
.rc-status {
  display: inline-flex; align-items: center; gap: var(--space-2, 8px);
  padding: 8px 14px; border-radius: var(--r-full, 999px);
  font-family: var(--f-display, 'Manrope', sans-serif);
  font-weight: var(--fw-semibold, 600); font-size: 0.85rem; line-height: 1;
  background: var(--color-success-tint, rgba(74,222,128,.12));
  color: var(--color-success-bright, #4ADE80);
  border: 1px solid rgba(74,222,128,.4);
  white-space: nowrap; vertical-align: middle; text-decoration: none;
}
/* Glass variant — frosted surface for use OVER photos / dark overlays */
.rc-status.rc-status-glass {
  background: var(--glass-surface-2, rgba(255,255,255,.10));
  color: var(--on-dark, #fff);
  border-color: var(--glass-border, rgba(255,255,255,.22));
}
/* The live / success dot (with halo ring) */
.rc-status-dot {
  width: 8px; height: 8px; flex: none; border-radius: 50%;
  background: var(--color-success-bright, #4ADE80);
  box-shadow: 0 0 0 4px var(--color-success-ring, rgba(74,222,128,.25));
}
/* Wrapper — alignment only (used by the Quick Badge module). */
.rc-badge-wrap { display: block; }
.rc-badge-align-left   { text-align: left; }
.rc-badge-align-center { text-align: center; }
.rc-badge-align-right  { text-align: right; }


/* ============================================================
   4. TEXT-COLOR UTILITIES (FRX palette)
   Apply to any element; also targets BB inner text wrappers
   (.rc-text / .fl-heading-text / p / a).
   ============================================================ */
.cobalt-text,  .cobalt-text  .rc-text, .cobalt-text  .fl-heading-text, .cobalt-text  p, .cobalt-text  a { color: var(--color-primary,      #2455B8) !important; }
.rx-text,      .rx-text      .rc-text, .rx-text      .fl-heading-text, .rx-text      p, .rx-text      a { color: var(--color-accent,       #E63031) !important; }
.charcoal-text,.charcoal-text .rc-text,.charcoal-text .fl-heading-text,.charcoal-text p,.charcoal-text a { color: var(--color-fg,           #1A2331) !important; }
.muted-text,   .muted-text   .rc-text, .muted-text   .fl-heading-text, .muted-text   p, .muted-text   a { color: var(--color-fg-subtle,    #6B7585) !important; }
.white-text,   .white-text   .rc-text, .white-text   .fl-heading-text, .white-text   p, .white-text   a { color: #FFFFFF !important; }
/* Plain-name aliases (easier to remember). Same colors as rx-text / cobalt-text.
   Use on a whole heading module (Advanced -> CSS Class) OR on an inline
   <span class="red-text"> inside a heading to color just part of it. */
.red-text,     .red-text     .rc-text, .red-text     .fl-heading-text, .red-text     p, .red-text     a { color: var(--color-accent,  #E63031) !important; }
.blue-text,    .blue-text    .rc-text, .blue-text    .fl-heading-text, .blue-text    p, .blue-text    a { color: var(--color-primary, #2455B8) !important; }


/* ============================================================
   5. SECTION CONTEXT — dark backgrounds
   Add "section-dark" (or "on-dark") to a BB Row whose background is
   dark (--color-bg-deep / image+overlay). Flips inline link color to
   white w/ cobalt-tint hover; keeps body legible. Excludes BB Button
   modules (:not(.fl-button)) and RC buttons (:not(.rc-btn)) so they
   keep their own variant styling (see §7).
   ============================================================ */
.fl-row.section-dark a:not(.fl-button):not(.rc-btn):not(.rc-link):not(.rc-badge):not(.rc-status), .fl-row.on-dark a:not(.fl-button):not(.rc-btn):not(.rc-link):not(.rc-badge):not(.rc-status),
.fl-col.section-dark a:not(.fl-button):not(.rc-btn):not(.rc-link):not(.rc-badge):not(.rc-status), .fl-col.on-dark a:not(.fl-button):not(.rc-btn):not(.rc-link):not(.rc-badge):not(.rc-status),
.section-dark a:not(.fl-button):not(.rc-btn):not(.rc-link):not(.rc-badge):not(.rc-status), .on-dark a:not(.fl-button):not(.rc-btn):not(.rc-link):not(.rc-badge):not(.rc-status) {
  color: #FFFFFF;
  text-decoration: underline;
  text-decoration-color: rgba(255,255,255,.5);
  text-underline-offset: 3px;
}
.section-dark a:not(.fl-button):not(.rc-btn):not(.rc-link):not(.rc-badge):not(.rc-status):hover, .on-dark a:not(.fl-button):not(.rc-btn):not(.rc-link):not(.rc-badge):not(.rc-status):hover,
.section-dark a:not(.fl-button):not(.rc-btn):not(.rc-link):not(.rc-badge):not(.rc-status):focus-visible, .on-dark a:not(.fl-button):not(.rc-btn):not(.rc-link):not(.rc-badge):not(.rc-status):focus-visible {
  color: var(--color-primary-50, #EAF0FB);
  text-decoration-color: var(--color-primary-50, #EAF0FB);
}
.fl-row.section-dark, .fl-row.on-dark, .section-dark, .on-dark { color: rgba(255,255,255,.82); }


/* ============================================================
   6. COMPARISON TABLE — .cmp-table
   Apply to a <table> inside a BB HTML module. 3-col pattern:
   first cell = row label, second = FRX option (.win highlights it),
   third = alternative. Mobile (<640px) stacks each row as a card.
   ============================================================ */
.cmp-table {
  width: 100%; border-collapse: collapse;
  font-family: var(--f-body, 'Inter', sans-serif);
  font-size: 15px; line-height: 1.5; margin: 0;
  background: var(--color-bg, #fff);
  border: 1px solid var(--color-border, #E3E7EE);
  border-radius: var(--r-sm, 6px); overflow: hidden;
}
.cmp-table thead th {
  background: var(--color-primary, #2455B8); color: #fff;
  padding: 14px 18px; text-align: left; font-weight: 600; font-size: 13px;
  letter-spacing: 0.06em; text-transform: uppercase;
  border-bottom: 2px solid var(--color-primary-700, #1B3E89);
}
.cmp-table tbody td {
  padding: 14px 18px; border-bottom: 1px solid var(--color-border, #E3E7EE);
  color: var(--color-fg, #1A2331); vertical-align: top;
}
.cmp-table tbody tr:last-child td { border-bottom: 0; }
.cmp-table tbody tr:nth-child(even) td { background: var(--color-bg-alt, #F6F8FB); }
.cmp-table td:first-child { font-weight: 600; color: var(--color-primary-700, #1B3E89); width: 28%; }
.cmp-table td.win {
  color: var(--color-primary-700, #1B3E89); font-weight: 600;
  background: var(--color-accent-50, #FCE9E9) !important;
  position: relative; padding-left: 38px;
}
.cmp-table td.win::before {
  content: "✓"; position: absolute; left: 14px; top: 14px;
  color: var(--color-accent, #E63031); font-weight: 700; font-size: 16px; line-height: 1.5;
}
@media (max-width: 639px) {
  .cmp-table, .cmp-table thead, .cmp-table tbody, .cmp-table tr, .cmp-table th, .cmp-table td { display: block; width: 100%; }
  .cmp-table thead { display: none; }
  .cmp-table tbody tr { border-bottom: 1px solid var(--color-border, #E3E7EE); padding: 10px 0; }
  .cmp-table tbody tr:nth-child(even) td { background: transparent; }
  .cmp-table td { border: 0; padding: 6px 18px; }
  .cmp-table td:first-child {
    background: var(--color-primary, #2455B8); color: #fff;
    padding: 10px 18px; margin-bottom: 4px; width: 100%;
  }
  .cmp-table td:not(:first-child)::before {
    content: attr(data-label); display: block; font-size: 11px;
    text-transform: uppercase; letter-spacing: 0.08em;
    color: var(--color-fg-subtle, #6B7585); margin-bottom: 2px; font-weight: 600;
  }
  .cmp-table td.win { padding-left: 38px; }
  .cmp-table td.win::before { content: "✓"; }
}


/* ============================================================
   7. BUTTONS — .rc-btn + style variants
   Output by the RC Button module (also reusable via Advanced →
   CSS Class on any link). Base .rc-btn owns size / type / shape;
   the variant class owns color / border only. Every value pulls
   from the design tokens (brand/design-system.css), so a token
   swap reskins every button. Variants mirror the site mockups:
     primary-btn    = cobalt fill     (dominant CTA)
     secondary-btn  = red accent fill (single hottest CTA — sparing)
     tertiary-btn   = ghost / hairline (low-emphasis, light bg)
     dark-line-btn  = cobalt outline  (LIGHT sections; inverts on hover)
     light-line-btn = white outline   (DARK sections; inverts on hover)
   ============================================================ */
.rc-btn {
  display: inline-flex; align-items: center; justify-content: center;
  gap: var(--space-2, 8px);
  padding: 14px 24px; min-height: 48px;
  font-family: var(--f-display, 'Manrope', system-ui, sans-serif);
  font-weight: var(--fw-semibold, 600); font-size: 1rem; line-height: 1;
  border-radius: var(--r-md, 10px); border: 2px solid transparent;
  cursor: pointer; text-decoration: none !important; white-space: nowrap;
  transition: transform var(--t-fast, 150ms) var(--ease, ease),
              background var(--t-fast, 150ms) var(--ease, ease),
              box-shadow var(--t-fast, 150ms) var(--ease, ease),
              border-color var(--t-fast, 150ms) var(--ease, ease),
              color var(--t-fast, 150ms) var(--ease, ease);
}
.rc-btn:focus-visible { outline: 3px solid var(--color-accent, #E63031); outline-offset: 2px; }

/* Primary — cobalt fill (dominant brand action) */
.primary-btn { background: var(--color-primary, #2455B8); color: #fff; box-shadow: 0 8px 22px rgba(36,85,184,.28); }
.primary-btn:hover, .primary-btn:focus-visible { background: var(--color-primary-700, #1B3E89); color: #fff; transform: translateY(-1px); }

/* Secondary — red accent fill (the single hottest CTA; use sparingly) */
.secondary-btn { background: var(--color-accent, #E63031); color: #fff; box-shadow: var(--shadow-accent, 0 8px 22px rgba(230,48,49,.28)); }
.secondary-btn:hover, .secondary-btn:focus-visible { background: var(--color-accent-700, #B72325); color: #fff; transform: translateY(-1px); }

/* Tertiary — ghost / hairline (low-emphasis, light backgrounds) */
.tertiary-btn { background: transparent; color: var(--color-primary, #2455B8); border-color: var(--color-border-strong, #C9D1DD); }
.tertiary-btn:hover, .tertiary-btn:focus-visible { background: var(--color-primary-50, #EAF0FB); color: var(--color-primary-700, #1B3E89); }

/* Dark Line — cobalt outline for LIGHT sections; inverts to fill on hover */
.dark-line-btn { background: transparent; color: var(--color-primary, #2455B8); border-color: var(--color-primary, #2455B8); }
.dark-line-btn:hover, .dark-line-btn:focus-visible { background: var(--color-primary, #2455B8); color: #fff; }

/* Light Line — white outline for DARK sections; inverts to fill on hover */
.light-line-btn { background: transparent; color: #fff; border-color: rgba(255,255,255,.6); }
.light-line-btn:hover, .light-line-btn:focus-visible { background: #fff; color: var(--color-primary, #2455B8); border-color: #fff; }

/* Wrapper — alignment only (button visuals stay on the variant classes). */
.rc-btn-wrap { display: block; }
.rc-btn-align-left   { text-align: left; }
.rc-btn-align-center { text-align: center; }
.rc-btn-align-right  { text-align: right; }
.rc-btn--full { width: 100%; }


/* ============================================================
   8. ICON TILE — .rc-icon-tile   (icon in a colored container)
   Output by the Quick Icon module. Base owns layout/shape; a preset
   class sets bg + icon color from tokens; per-instance size/radius/
   custom-color arrive as inline CSS vars (--rc-tile-size, --rc-icon-size,
   --rc-tile-radius) so nothing hard-codes into the module.
     .rc-icon-primary  cobalt icon on cobalt-50 tint (default — matches mockups)
     .rc-icon-brand    white icon on solid cobalt (inverted; for light rows / feature tiles)
     .rc-icon-accent   red icon on translucent-red tint (reads right on light AND dark)
     .rc-icon-dark     white icon on deep navy
     .rc-icon-glass    white icon on frosted glass (over photos)
     .rc-icon-soft     ink icon on off-white
     .rc-icon-none     bare icon, NO tile — glyph only, hugs the text (set Icon Color for red checks)
   Shape: add .rc-icon-circle for a full circle.
   ============================================================ */
.rc-icon-tile {
  display: inline-flex; align-items: center; justify-content: center; flex: none;
  width: var(--rc-tile-size, 64px); height: var(--rc-tile-size, 64px);
  border-radius: var(--rc-tile-radius, var(--r-lg, 16px));
  background: var(--color-primary-50, #EAF0FB);
  color: var(--color-primary, #2455B8);
  line-height: 1; text-decoration: none;
  transition: transform var(--t-fast, 150ms) var(--ease, ease),
              box-shadow var(--t-fast, 150ms) var(--ease, ease);
}
.rc-icon-tile i,
.rc-icon-tile svg { font-size: var(--rc-icon-size, 28px); width: 1em; height: 1em; line-height: 1; color: inherit; fill: currentColor; }
.rc-icon-tile.rc-icon-circle { border-radius: var(--r-full, 999px); }

/* Presets (bg + icon color) */
.rc-icon-tile.rc-icon-primary { background: var(--color-primary-50, #EAF0FB); color: var(--color-primary, #2455B8); }
.rc-icon-tile.rc-icon-brand   { background: var(--color-primary, #2455B8);    color: #fff; }
.rc-icon-tile.rc-icon-accent  { background: var(--color-accent-tint, rgba(230,48,49,.20));  color: var(--color-accent, #E63031); }
.rc-icon-tile.rc-icon-dark    { background: var(--color-bg-deep, #0E1A2B);    color: #fff; }
.rc-icon-tile.rc-icon-glass   { background: var(--glass-surface-2, rgba(255,255,255,.10)); color: #fff; border: 1px solid var(--glass-border, rgba(255,255,255,.22)); }
.rc-icon-tile.rc-icon-soft    { background: var(--color-bg-alt, #F6F8FB);     color: var(--color-fg, #1A2331); }
/* Bare — NO tile: transparent, no box, hugs the glyph (icon-size only). Color inherits the
   row (so it flips white on .section-dark); set the Icon Color override for e.g. red checks.
   Use for tight checkmark / benefit rows where the tinted box adds unwanted bulk + spacing. */
.rc-icon-tile.rc-icon-none    { background: transparent; width: auto; height: auto; min-width: 0; border-radius: 0; color: inherit; }

/* Link tiles lift slightly on hover */
a.rc-icon-tile:hover { transform: translateY(-2px); box-shadow: var(--shadow-md, 0 4px 16px rgba(36,85,184,.08)); }

/* Wrapper — alignment only. */
.rc-icon-wrap { display: block; }
.rc-icon-align-left   { text-align: left; }
.rc-icon-align-center { text-align: center; }
.rc-icon-align-right  { text-align: right; }


/* ============================================================
   9. FEATURE ROW — .rc-feature   (icon tile + title + subtitle)
   Output by the Quick Feature module. The icon renders through the
   §8 .rc-icon-tile (same presets), so it stays consistent. Layout only
   here; icon look is inherited. Title/subtitle use the design tokens and
   auto-flip to light text inside a .section-dark / .on-dark row.
     .rc-feature--left   icon beside text (default) — .rc-feature--valign-{center|top}
     .rc-feature--top    icon above text            — .rc-feature--halign-{left|center}
   Gap is set per-instance via --rc-feature-gap.
   ============================================================ */
.rc-feature-inner {
  display: flex; align-items: center; gap: var(--rc-feature-gap, 16px);
  text-decoration: none; color: inherit;
}
.rc-feature--valign-top .rc-feature-inner { align-items: flex-start; }
.rc-feature--top .rc-feature-inner { flex-direction: column; align-items: flex-start; }
.rc-feature--halign-center .rc-feature-inner { align-items: center; text-align: center; }
.rc-feature-text { min-width: 0; }
.rc-feature-title {
  font-family: var(--f-display, 'Manrope', sans-serif);
  font-weight: var(--fw-bold, 700); font-size: var(--text-body-sm, 0.95rem); line-height: 1.25;
  color: var(--color-fg, #1A2331);
}
.rc-feature-sub {
  font-family: var(--f-body, 'Inter', sans-serif);
  font-size: var(--text-meta, 0.78rem); line-height: 1.4; margin-top: 2px;
  color: var(--color-fg-subtle, #6B7585);
}
/* Linked row: whole thing clickable. Kill the link underline in every state — the theme's
   a:hover { text-decoration: underline } outspecs a bare .rc-feature-inner, so we match it with
   a.<class>:hover (no !important). Hover cue = title warms to cobalt AND the whole module lifts
   slightly (brightness). The lift is what gives subtitle-only rows, e.g. the city links, a hover
   cue at all, since those have no .rc-feature-title to recolor. */
a.rc-feature-inner,
a.rc-feature-inner:hover,
a.rc-feature-inner:focus { text-decoration: none; }
a.rc-feature-inner { transition: filter .15s ease; }
a.rc-feature-inner:hover .rc-feature-title { color: var(--color-primary, #2455B8); }
a.rc-feature-inner:hover { filter: brightness(1.05); }
/* Dark-section legibility (title/sub flip automatically on .section-dark rows) */
.section-dark .rc-feature-title, .on-dark .rc-feature-title { color: #fff; }
.section-dark .rc-feature-sub,   .on-dark .rc-feature-sub   { color: rgba(255,255,255,.72); }
/* Inline-edit safety: while a module's panel is open, BB attaches a TinyMCE inline editor to the
   title/subtitle, which wraps the text in a <p>. Left alone that <p> inherits the theme's muted p
   color + margin, so the open row looks lighter and mis-spaced vs its closed siblings. Force any
   nested <p> to take the container's own styling. (Saved output has its tags stripped by the module.) */
.rc-feature-title > p, .rc-feature-sub > p,
.rc-card-title > p,    .rc-card-body > p { margin: 0; padding: 0; color: inherit; font: inherit; letter-spacing: inherit; }


/* ============================================================
   10. CALLOUT CARD — .rc-card   (icon + title + body + arrow link)
   Output by the Quick Card module. The whole card is clickable via a
   "stretched link" (the bottom link's ::after covers the card), so it's
   one focus target. Text sizes use the named --text-* tokens (no magic
   numbers). Icon reuses §8 .rc-icon-tile.
     • Hover lift is gated to pointer devices (@media hover:hover).
     • Touch/keyboard get the same lift via :focus-within + :active, and
       a focus ring on keyboard (:has(:focus-visible)) — so it feels right
       on mobile where there is no hover.
   ============================================================ */
.rc-card {
  position: relative;
  display: flex; flex-direction: column; align-items: flex-start;
  padding: var(--space-6, 32px);
  background: var(--color-bg, #fff);
  border: 1px solid var(--color-border, #E3E7EE);
  border-radius: var(--r-xl, 24px);
  box-shadow: var(--shadow-sm, 0 1px 2px rgba(36,85,184,.06));
  transition: transform var(--t-med, 220ms) var(--ease, ease),
              box-shadow var(--t-med, 220ms) var(--ease, ease),
              border-color var(--t-med, 220ms) var(--ease, ease);
}
/* Equal-height cards: when Quick Cards sit in a grid/flex Box, the grid cell and the
   BB module wrapper already stretch, but the visible .rc-card must fill that height too,
   or each card collapses to its own content and a row looks ragged. Fill the wrapper
   chain so every card in a row matches the tallest; .rc-card-link's margin-top:auto
   then pins each CTA to the bottom. Harmless outside a stretching container (100% of an
   auto-height parent is a no-op). */
.fl-module-rc-card,
.fl-module-rc-card > .fl-module-content,
.fl-module-rc-card > .fl-module-content > .rc-card { height: 100%; }
.rc-card > .rc-icon-tile { margin-bottom: var(--space-5, 24px); }
.rc-card-title {
  font-family: var(--f-display, 'Manrope', sans-serif);
  font-weight: var(--fw-bold, 700);
  font-size: var(--text-subhead, 1.25rem); line-height: 1.25;
  color: var(--color-fg, #1A2331);
  margin: 0 0 var(--space-2, 8px);
}
.rc-card-body {
  font-family: var(--f-body, 'Inter', sans-serif);
  font-size: var(--text-body-sm, 0.95rem); line-height: var(--lh-relaxed, 1.65);
  color: var(--color-fg-muted, #4A5566);
  margin: 0 0 var(--space-5, 24px);
}
.rc-card-link {
  margin-top: auto; /* pin to the bottom so cards in a row align */
  display: inline-flex; align-items: center; gap: var(--space-2, 8px);
  font-family: var(--f-display, 'Manrope', sans-serif);
  font-weight: var(--fw-semibold, 600);
  font-size: var(--text-small, 0.85rem);
  color: var(--color-primary, #2455B8);
  text-decoration: none;
}
.rc-card-arrow { transition: transform var(--t-fast, 150ms) var(--ease, ease); }
/* stretched link: whole card is the click/tap target, one focus element */
.rc-card-link::after { content: ""; position: absolute; inset: 0; border-radius: inherit; }
/* Never underline the arrow-link: the whole card is the affordance, and some themes
   add an a:hover underline that reads as a stray line under the label. */
.rc-card-link,
.rc-card-link:hover,
.rc-card-link:focus,
.rc-card-link:focus-visible,
.rc-card-link:active,
.rc-card-link:hover .rc-card-link-text,
.rc-card-link:focus .rc-card-link-text { text-decoration: none; }

/* HOVER — pointer devices only (avoids sticky hover on touch) */
@media (hover: hover) {
  .rc-card:hover {
    transform: translateY(-4px);
    box-shadow: var(--shadow-lg, 0 16px 40px rgba(36,85,184,.14));
    border-color: transparent;
  }
  .rc-card:hover .rc-card-arrow { transform: translateX(4px); }
  .rc-card:hover .rc-card-link { color: var(--color-primary-700, #1B3E89); }
}
/* FOCUS / ACTIVE — touch + keyboard get the same lift (this is the mobile "hover") */
.rc-card:focus-within {
  transform: translateY(-4px);
  box-shadow: var(--shadow-lg, 0 16px 40px rgba(36,85,184,.14));
  border-color: transparent;
}
.rc-card:focus-within .rc-card-arrow { transform: translateX(4px); }
.rc-card:active { transform: translateY(-2px); box-shadow: var(--shadow-md, 0 4px 16px rgba(36,85,184,.08)); }
/* The whole card carries the focus indication (lift + ring), so kill the
   inner link's default browser outline — otherwise a tap shows an ugly box. */
.rc-card-link:focus { outline: none; }
/* Visible focus ring for keyboard only (not on mouse/touch press) */
.rc-card:has(.rc-card-link:focus-visible) { outline: 2px solid var(--color-primary, #2455B8); outline-offset: 3px; }

/* ============================================================
   8. FORMS (Fluent Forms)
   Styling for forms rendered by the RC Form module. All visuals
   live here (never in the module). Fluent Forms output classes are
   mapped to the mockup's .field / .hero-form-card / primary-button
   look, driven by the client design tokens.
   ============================================================ */

/* Card vs plain wrapper */
.rc-form--card {
	background: #fff;
	border: 1px solid var(--color-border, #E3E7EE);
	border-radius: var(--r-xl, 24px);
	padding: var(--space-6, 32px);
	box-shadow: var(--shadow-lg, 0 16px 40px rgba(36,85,184,.14));
	max-width: 520px;
}
.rc-form--plain {
	background: transparent;
	border: 0;
	padding: 0;
	box-shadow: none;
}

/* Labels */
.rc-form .ff-el-input--label label {
	display: block;
	font-family: var(--f-display, sans-serif);
	font-size: .82rem;
	font-weight: 600;
	color: var(--color-fg, #1A2331);
	margin-bottom: 6px;
}
.rc-form .ff-el-is-required > label:after,
.rc-form .ff-el-input--label.ff-el-is-required label:after {
	color: var(--color-danger, #B42B2B);
}

/* Field spacing */
.rc-form .ff-el-group {
	margin-bottom: var(--space-4, 16px);
}

/* Inputs, selects, textarea */
.rc-form .ff-el-form-control {
	width: 100%;
	padding: 13px 14px;
	min-height: 48px;
	font: inherit;
	color: var(--color-fg, #1A2331);
	background: var(--color-bg, #fff);
	border: 1.5px solid var(--color-border-strong, #C9D1DD);
	border-radius: var(--r-md, 10px);
	transition: border-color var(--t-fast, 150ms) var(--ease, ease),
	            box-shadow var(--t-fast, 150ms) var(--ease, ease);
}
.rc-form textarea.ff-el-form-control {
	min-height: 120px;
	padding-top: 12px;
}
.rc-form .ff-el-form-control:focus {
	outline: none;
	border-color: var(--color-primary, #2455B8);
	box-shadow: 0 0 0 4px rgba(36,85,184,.18);
}
.rc-form .ff-el-form-control::placeholder {
	color: var(--color-fg-subtle, #6B7585);
}

/* Submit button — reuse the primary (cobalt) look from §7 */
.rc-form .ff-btn-submit,
.rc-form .ff_submit_btn_wrapper button {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 8px;
	min-height: 52px;
	padding: 0 26px;
	font-family: var(--f-display, sans-serif);
	font-weight: 700;
	font-size: 1rem;
	line-height: 1;
	color: var(--color-on-primary, #fff);
	background: var(--color-primary, #2455B8);
	border: 0;
	border-radius: var(--r-md, 10px);
	cursor: pointer;
	transition: background var(--t-fast, 150ms) var(--ease, ease),
	            transform var(--t-fast, 150ms) var(--ease, ease);
}
.rc-form .ff-btn-submit:hover,
.rc-form .ff_submit_btn_wrapper button:hover {
	background: var(--color-primary-700, #1B3E89);
	transform: translateY(-1px);
}

/* Full-width submit (module toggle) */
.rc-form--btn-full .ff-btn-submit,
.rc-form--btn-full .ff_submit_btn_wrapper button {
	width: 100%;
}

/* Validation + success messages */
.rc-form .ff-el-is-error .ff-el-form-control {
	border-color: var(--color-danger, #B42B2B);
}
.rc-form .error.text-danger,
.rc-form .ff-el-is-error .text-danger {
	color: var(--color-danger, #B42B2B);
	font-size: .8rem;
	margin-top: 4px;
}
.rc-form .ff-message-success {
	color: var(--color-success, #1E7F4F);
	background: rgba(30,127,79,.08);
	border: 1px solid rgba(30,127,79,.2);
	border-radius: var(--r-md, 10px);
	padding: var(--space-4, 16px);
}


/* ============================================================
   11. BUTTON ICONS + TEXT-LINK / UNDERLINE   (Button module)
   The Button module renders EITHER a solid/line button (.rc-btn, §7) OR a
   text link (.rc-link) with an animated underline. Either can carry an icon
   before/after the text — shown always (optionally sliding on hover) or
   revealed on hover. Works on both bases (classes are structure-agnostic).
   ============================================================ */

/* --- Icon inside a button or link --- */
.rc-btn-icon { display: inline-flex; align-items: center; line-height: 0; transition: transform var(--t-fast, 150ms) var(--ease, ease); }
.rc-btn-icon i, .rc-btn-icon svg { font-size: 1em; }
/* Slide on hover (icon stays visible, nudges outward) */
.rc-ico-slide:hover  .rc-btn-icon-after,  .rc-ico-slide:focus-visible  .rc-btn-icon-after  { transform: translateX(4px); }
.rc-ico-slide:hover  .rc-btn-icon-before, .rc-ico-slide:focus-visible  .rc-btn-icon-before { transform: translateX(-4px); }
/* Appear on hover (icon collapses to zero width until hover/focus) */
.rc-ico-reveal { gap: 0; }
.rc-ico-reveal .rc-btn-icon {
  max-width: 0; opacity: 0; overflow: hidden;
  transition: max-width var(--t-med, 220ms) var(--ease, ease), opacity var(--t-fast, 150ms) var(--ease, ease), margin var(--t-med, 220ms) var(--ease, ease);
}
.rc-ico-reveal:hover .rc-btn-icon, .rc-ico-reveal:focus-visible .rc-btn-icon { max-width: 1.5em; opacity: 1; }
.rc-ico-reveal:hover .rc-btn-icon-after,  .rc-ico-reveal:focus-visible .rc-btn-icon-after  { margin-left: var(--space-2, 8px); }
.rc-ico-reveal:hover .rc-btn-icon-before, .rc-ico-reveal:focus-visible .rc-btn-icon-before { margin-right: var(--space-2, 8px); }

/* --- Text link with underline effects --- */
.rc-link {
  display: inline-flex; align-items: center; gap: var(--space-2, 8px); position: relative;
  font-family: var(--f-display, 'Manrope', sans-serif); font-weight: var(--fw-semibold, 600);
  font-size: var(--text-body, 1.0625rem); line-height: 1.3;
  color: var(--color-primary, #2455B8); text-decoration: none !important; cursor: pointer;
}
.rc-link:focus-visible { outline: 2px solid var(--color-accent, #E63031); outline-offset: 3px; }
/* Color presets */
.rc-link.rc-link-ink    { color: var(--color-fg, #1A2331); }
.rc-link.rc-link-light  { color: #fff; }
.rc-link.rc-link-accent { color: var(--color-accent, #E63031); }
/* Underline is drawn under the TEXT span only (not the icon) */
.rc-link .rc-btn-text { position: relative; }
.rc-link .rc-btn-text::after {
  content: ""; position: absolute; left: 0; right: 0; bottom: -3px; height: 2px; background: currentColor;
  transform: scaleX(0); transform-origin: left;
  transition: transform var(--t-med, 220ms) var(--ease, ease);
}
.rc-link.rc-underline .rc-btn-text::after { transform: scaleX(1); }                      /* always on */
.rc-link.rc-underline-hover:hover         .rc-btn-text::after,
.rc-link.rc-underline-hover:focus-visible .rc-btn-text::after { transform: scaleX(1); }  /* left → right on hover */
.rc-link.rc-underline-center .rc-btn-text::after { transform-origin: center; }
.rc-link.rc-underline-center:hover         .rc-btn-text::after,
.rc-link.rc-underline-center:focus-visible .rc-btn-text::after { transform: scaleX(1); } /* grow from middle */

/* ============================================================
   11. SIZE UTILITIES — .rc-size-*   (the reconciled type scale as classes)
   ------------------------------------------------------------
   One class per named step of the design-system scale. This is the
   font-size layer for the RC Utilities modules: a module's Size dropdown
   outputs ONE of these classes, and it is the ONLY thing setting font-size
   on that node, so it wins on source order alone — NO !important.
   Also apply manually via BB Advanced -> CSS Class on any element.
   A Style-tab Typography size (BB node CSS, higher specificity) still
   overrides these for genuine one-offs. Defined LAST on purpose, so they
   beat the component defaults (eyebrow, badge, feature, card) at equal
   specificity via source order.
   ============================================================ */
.rc-size-micro     { font-size: var(--text-micro); }
.rc-size-meta      { font-size: var(--text-meta); }
.rc-size-small     { font-size: var(--text-small); }
.rc-size-body-sm   { font-size: var(--text-body-sm); }
.rc-size-body      { font-size: var(--text-body); }
.rc-size-lead      { font-size: var(--text-lead); }
.rc-size-subhead   { font-size: var(--text-subhead); }
.rc-size-title     { font-size: var(--text-title); }
.rc-size-headline  { font-size: var(--text-headline); }
.rc-size-display   { font-size: var(--text-display); }
.rc-size-section   { font-size: var(--text-section); }
.rc-size-statistic { font-size: var(--text-statistic); }
.rc-size-hero      { font-size: var(--text-hero); }

/* ------------------------------------------------------------
   Back-compat: Size values saved by the pre-2026-07-01 rc-text
   module (tiny/medium/large/xl/xxl). Mapped to the nearest new
   step (identical computed sizes) so existing nodes keep their
   size until re-saved. 'small' already maps 1:1 to .rc-size-small.
   Safe to delete once old nodes are updated to the named scale.
   ------------------------------------------------------------ */
.rc-size-tiny   { font-size: var(--text-micro); }
.rc-size-medium { font-size: var(--text-subhead); }
.rc-size-large  { font-size: var(--text-section); }
.rc-size-xl     { font-size: var(--text-hero); }
.rc-size-xxl    { font-size: var(--text-statistic); }


/* ============================================================
   12. ACCORDION — .rc-accordion   (FAQ / expandable Q&A)
   Output by the RC Accordion module. Self-contained + independent
   of Beaver Builder's own accordion. Smooth open/close via the
   CSS-grid 0fr→1fr trick (no JS height math); plus/chevron icon is
   CSS-drawn from two <span> bars and animated off the .is-open
   class. Two looks: --boxed (bordered cards) and --separated
   (hairline rules). Every value pulls from the design tokens.
   ============================================================ */
.rc-accordion { width: 100%; }
.rc-accordion-item { position: relative; }

/* --- Header (the clickable question row) --------------------- */
.rc-accordion-header {
  display: flex; align-items: center; gap: var(--space-4, 16px);
  width: 100%; margin: 0; text-align: left; cursor: pointer;
  background: transparent; border: 0;
  padding: var(--space-4, 16px) var(--space-5, 24px);
  font-family: var(--f-display, 'Manrope', system-ui, sans-serif);
  font-weight: var(--fw-semibold, 600);
  font-size: var(--text-subhead, 1.25rem);
  line-height: var(--lh-snug, 1.3);
  color: var(--color-fg, #1A2331);
  -webkit-appearance: none; appearance: none;
  transition: color var(--t-fast, 150ms) var(--ease, ease),
              background var(--t-fast, 150ms) var(--ease, ease);
}
/* Neutralise the active theme's global <button> chrome. The BB theme paints every
   bare <button> cobalt with a navy hover/focus/active background, a border, and a 4px
   radius. The accordion header is a real <button>, so reset those on every state
   (specificity 0,2,0 beats the theme's button:hover at 0,1,1). */
.rc-accordion-header,
.rc-accordion-header:hover,
.rc-accordion-header:focus,
.rc-accordion-header:active { background: transparent; border: 0; border-radius: 0; box-shadow: none; }
.rc-accordion-header:hover { color: var(--color-primary, #2455B8); }
.rc-accordion-header:focus-visible { outline: 3px solid var(--color-accent, #E63031); outline-offset: -3px; }
.rc-accordion-item.is-open > .rc-accordion-header { color: var(--color-primary, #2455B8); }
.rc-accordion-q { flex: 1 1 auto; }

/* --- Panel: CSS-grid 0fr→1fr collapse ------------------------ */
.rc-accordion-panel {
  display: grid; grid-template-rows: 0fr; overflow: hidden;
  transition: grid-template-rows var(--t-med, 220ms) var(--ease, ease);
}
.rc-accordion-item.is-open > .rc-accordion-panel { grid-template-rows: 1fr; }
.rc-accordion-panel-clip { overflow: hidden; min-height: 0; }
.rc-accordion-panel-inner {
  padding: 0 var(--space-5, 24px) var(--space-5, 24px);
  color: var(--color-fg-muted, #4A5566);
  font-family: var(--f-body, 'Inter', system-ui, sans-serif);
  font-size: var(--text-body, 1.0625rem);
  line-height: var(--lh-relaxed, 1.65);
}
.rc-accordion-panel-inner > :first-child { margin-top: 0; }
.rc-accordion-panel-inner > :last-child { margin-bottom: 0; }
.rc-accordion-panel-inner a { color: var(--color-primary, #2455B8); text-decoration: underline; }

/* --- Icon (two CSS-drawn bars) ------------------------------- */
.rc-accordion-icon { position: relative; flex: 0 0 auto; width: 20px; height: 20px; color: var(--color-primary, #2455B8); }
.rc-accordion-icon-bar {
  position: absolute; background: currentColor; border-radius: 2px;
  transition: transform var(--t-med, 220ms) var(--ease, ease), opacity var(--t-med, 220ms) var(--ease, ease);
}
/* Plus / Minus (default) */
.rc-accordion--icon-plus .rc-accordion-icon-bar { width: 100%; height: 2px; left: 0; top: 50%; margin-top: -1px; }
.rc-accordion--icon-plus .rc-accordion-icon-bar:nth-child(2) { transform: rotate(90deg); }
.rc-accordion--icon-plus .rc-accordion-item.is-open > .rc-accordion-header .rc-accordion-icon-bar:nth-child(2) { transform: rotate(90deg); opacity: 0; }
/* Chevron */
.rc-accordion--icon-chevron .rc-accordion-icon { transform: rotate(-90deg); transition: transform var(--t-med, 220ms) var(--ease, ease); }
.rc-accordion--icon-chevron .rc-accordion-icon-bar { width: 55%; height: 2px; top: 50%; margin-top: -1px; }
.rc-accordion--icon-chevron .rc-accordion-icon-bar:nth-child(1) { right: 50%; transform-origin: right center; transform: rotate(45deg); }
.rc-accordion--icon-chevron .rc-accordion-icon-bar:nth-child(2) { left: 50%; transform-origin: left center; transform: rotate(-45deg); }
.rc-accordion--icon-chevron .rc-accordion-item.is-open > .rc-accordion-header .rc-accordion-icon { transform: rotate(0deg); }

/* --- Look: Boxed (default) — bordered cards ------------------ */
.rc-accordion--boxed .rc-accordion-item {
  background: var(--color-bg, #fff);
  border: 1px solid var(--color-border, #E3E7EE);
  border-radius: var(--r-lg, 16px);
  box-shadow: var(--shadow-sm, 0 1px 2px rgba(36,85,184,.06));
  transition: border-color var(--t-fast, 150ms) var(--ease, ease), box-shadow var(--t-fast, 150ms) var(--ease, ease);
}
.rc-accordion--boxed .rc-accordion-item + .rc-accordion-item { margin-top: var(--space-3, 12px); }
.rc-accordion--boxed .rc-accordion-item:hover { border-color: var(--color-border-strong, #C9D1DD); }
.rc-accordion--boxed .rc-accordion-item.is-open { border-color: var(--color-primary, #2455B8); box-shadow: var(--shadow-md, 0 4px 16px rgba(36,85,184,.08)); }

/* --- Look: Separated — hairline rules, no card --------------- */
.rc-accordion--separated .rc-accordion-item { border-bottom: 1px solid var(--color-border, #E3E7EE); }
.rc-accordion--separated .rc-accordion-item:first-child { border-top: 1px solid var(--color-border, #E3E7EE); }
.rc-accordion--separated .rc-accordion-header { padding-left: 0; padding-right: 0; }
.rc-accordion--separated .rc-accordion-panel-inner { padding-left: 0; padding-right: 0; }

/* --- Respect reduced-motion ---------------------------------- */
@media (prefers-reduced-motion: reduce) {
  .rc-accordion-panel, .rc-accordion-icon, .rc-accordion-icon-bar,
  .rc-accordion-header, .rc-accordion-item { transition: none; }
}

/* ============================================================
   13. TESTIMONIAL SLIDER - .rc-tslider / .rc-tcard
   Output by the Testimonial Slider module. Card mirrors the homepage
   mockup .review-card (ROW 07). Swiper structure + cobalt controls.
   ============================================================ */
.rc-tslider { position: relative; }
/* Inner wrapper that fully contains the carousel + arrows. It is the arrows'
   positioning context - a plain div the BB editor doesn't manage - so focusing an
   arrow in the editor can't shift them via the module node's containing block. */
.rc-tslider-viewport { position: relative; }
/* When arrows are shown, reserve side gutters so the arrows sit BESIDE the cards, never over them. */
.rc-tslider--arrows { padding-left: 56px; padding-right: 56px; }
.rc-tslider-eyebrow { text-align: center; }
.rc-tslider-heading { text-align: center; margin: 0 0 var(--space-6, 32px); }
.rc-tslider .swiper { overflow: hidden; }
.rc-tslider .swiper-slide { height: auto; display: flex; }

/* Card (= mockup .review-card) */
.rc-tcard {
  background: #fff; border: 1px solid var(--color-border, #E3E7EE);
  border-radius: var(--r-lg, 16px); padding: var(--space-5, 24px);
  display: flex; flex-direction: column; width: 100%; height: 100%;
}
.rc-tcard-head { display: flex; align-items: center; justify-content: space-between; gap: var(--space-3, 12px); margin-bottom: var(--space-3, 12px); }
.rc-tcard-name { font-family: var(--f-display, 'Manrope', sans-serif); font-weight: 600; color: var(--color-fg, #1A2331); }
.rc-tcard-stars { color: var(--color-star, #F5A623); letter-spacing: 2px; font-size: 1.15rem; line-height: 1; white-space: nowrap; }
.rc-tcard-meta { font-size: var(--text-small, 0.85rem); color: var(--color-fg-subtle, #6B7585); margin-bottom: var(--space-3, 12px); }
.rc-tcard-quote { margin: 0; font-size: var(--text-body-sm, 0.95rem); line-height: var(--lh-relaxed, 1.65); color: var(--color-fg, #1A2331); flex: 1; }
.rc-tcard-source { margin-top: var(--space-4, 16px); font-size: var(--text-small, 0.85rem); color: var(--color-fg-subtle, #6B7585); }
.rc-tcard-source a { color: var(--color-primary, #2455B8); font-weight: 600; text-decoration: none; }
.rc-tcard-source a:hover { text-decoration: underline; }

/* Controls - scoped to .rc-tslider-viewport (the inner wrapper) so the arrows
   anchor to it, not the BB module node. !important on the structural props so the
   editor's inline focus styling can't strip the absolute positioning on click. */
.rc-tslider-viewport .rc-tslider-prev, .rc-tslider-viewport .rc-tslider-next {
  position: absolute !important; top: 50% !important; transform: translateY(-50%) !important; z-index: 2;
  width: 44px; height: 44px; display: inline-flex; align-items: center; justify-content: center;
  border: 0; border-radius: var(--r-full, 999px); cursor: pointer;
  background: var(--color-primary, #2455B8); color: #fff; font-size: 1.1rem; line-height: 1;
  box-shadow: var(--shadow-sm, 0 1px 2px rgba(36,85,184,.06));
  transition: background var(--t-fast, 150ms) var(--ease, ease), transform var(--t-fast, 150ms) var(--ease, ease);
}
.rc-tslider-viewport .rc-tslider-prev { left: 6px !important; } .rc-tslider-viewport .rc-tslider-next { right: 6px !important; }
.rc-tslider-viewport .rc-tslider-prev:hover, .rc-tslider-viewport .rc-tslider-next:hover { background: var(--color-primary-700, #1B3E89); }
.rc-tslider-viewport .rc-tslider-prev:focus-visible, .rc-tslider-viewport .rc-tslider-next:focus-visible { outline: 3px solid var(--color-accent, #E63031); outline-offset: 2px; }
.rc-tslider-viewport .rc-tslider-prev.swiper-button-lock, .rc-tslider-viewport .rc-tslider-next.swiper-button-lock { display: none !important; }
.rc-tslider-viewport .rc-tslider-prev.swiper-button-disabled, .rc-tslider-viewport .rc-tslider-next.swiper-button-disabled { opacity: .4; cursor: default; box-shadow: none; }
@media (max-width: 960px) { .rc-tslider-viewport .rc-tslider-prev, .rc-tslider-viewport .rc-tslider-next { display: none !important; } .rc-tslider--arrows { padding-left: 0; padding-right: 0; } }

/* Dots */
.rc-tslider .swiper-pagination { position: static; margin-top: var(--space-4, 16px); }
.rc-tslider .swiper-pagination-bullet { background: var(--color-border-strong, #C9D1DD); opacity: 1; }
.rc-tslider .swiper-pagination-bullet-active { background: var(--color-primary, #2455B8); }

/* Dark sections */
.section-dark .rc-tcard, .on-dark .rc-tcard { background: var(--glass-surface-2, rgba(255,255,255,.10)); border-color: var(--glass-border, rgba(255,255,255,.22)); }
.section-dark .rc-tcard-name, .on-dark .rc-tcard-name, .section-dark .rc-tcard-quote, .on-dark .rc-tcard-quote { color: #fff; }
.section-dark .rc-tcard-meta, .on-dark .rc-tcard-meta { color: rgba(255,255,255,.72); }

/* ==== frxs symptom icons (see-point set) ==== */
/* frxs-* symptom icons: CSS mask, painted in currentColor like a font glyph.
   Built 2026-07-23 for the /signs/ 'what you're seeing' points. Scoped, reversible. */
.rc-icon-tile i[class^="frxs-"],.rc-icon-tile i[class*=" frxs-"]{display:inline-block;width:var(--rc-icon-size,24px);height:var(--rc-icon-size,24px);background-color:currentColor;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-image:var(--frxs);mask-image:var(--frxs);}
.frxs-barrier{--frxs:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.85%22%3E%3Cpath%20d%3D%22M3%209h18v11H3z%22%20stroke-linejoin%3D%22round%22%2F%3E%3Cpath%20d%3D%22M3%209l4-5h10l4%205%22%20stroke-linejoin%3D%22round%22%2F%3E%3C%2Fsvg%3E");}
.frxs-baseboard{--frxs:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.85%22%3E%3Cpath%20d%3D%22M3%2017h18M3%2020h18M6%204v10M18%204v10%22%20stroke-linecap%3D%22round%22%2F%3E%3C%2Fsvg%3E");}
.frxs-bolt{--frxs:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.85%22%3E%3Ccircle%20cx%3D%2212%22%20cy%3D%2212%22%20r%3D%226%22%2F%3E%3Cpath%20d%3D%22M9.5%209.5l5%205M14.5%209.5l-5%205%22%20stroke-linecap%3D%22round%22%2F%3E%3C%2Fsvg%3E");}
.frxs-bounce{--frxs:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.85%22%3E%3Cpath%20d%3D%22M4%2020h16M6%2016c3-3%209-3%2012%200M8%2012c2-2%206-2%208%200%22%20stroke-linecap%3D%22round%22%2F%3E%3C%2Fsvg%3E");}
.frxs-bow{--frxs:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.85%22%3E%3Cpath%20d%3D%22M4%204v16M20%204v16M8%208c4%202%204%206%200%208M16%208c-4%202-4%206%200%208%22%20stroke-linecap%3D%22round%22%2F%3E%3C%2Fsvg%3E");}
.frxs-brick{--frxs:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.85%22%3E%3Cpath%20d%3D%22M3%206h18v4H3zM3%2014h18v4H3zM9%206v4M15%2014v4M9%2014v4M15%206v4%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%2F%3E%3C%2Fsvg%3E");}
.frxs-calendar{--frxs:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.85%22%3E%3Crect%20x%3D%223%22%20y%3D%225%22%20width%3D%2218%22%20height%3D%2216%22%20rx%3D%222%22%2F%3E%3Cpath%20d%3D%22M3%2010h18M8%203v4M16%203v4%22%20stroke-linecap%3D%22round%22%2F%3E%3C%2Fsvg%3E");}
.frxs-ceiling{--frxs:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.85%22%3E%3Cpath%20d%3D%22M3%205h18M5%205v14M19%205v14M3%2019h18%22%20stroke-linecap%3D%22round%22%2F%3E%3Cpath%20d%3D%22M9%205l3%205%203-5%22%20stroke-linecap%3D%22round%22%2F%3E%3C%2Fsvg%3E");}
.frxs-chimney{--frxs:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.85%22%3E%3Cpath%20d%3D%22M4%2021h16M6%2021V9l4-2V4h3v4M17%2021V9l-4-2%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%2F%3E%3C%2Fsvg%3E");}
.frxs-cold{--frxs:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.85%22%3E%3Cpath%20d%3D%22M12%203v18M4.5%207.5l15%209M19.5%207.5l-15%209%22%20stroke-linecap%3D%22round%22%2F%3E%3Cpath%20d%3D%22M12%206l-2.2%201.3M12%206l2.2%201.3M12%2018l-2.2-1.3M12%2018l2.2-1.3%22%20stroke-linecap%3D%22round%22%2F%3E%3C%2Fsvg%3E");}
.frxs-corner-gap{--frxs:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.85%22%3E%3Cpath%20d%3D%22M4%2020V4h16%22%20stroke-linecap%3D%22round%22%2F%3E%3Cpath%20d%3D%22M9%2020v-7h11%22%20stroke-linecap%3D%22round%22%2F%3E%3C%2Fsvg%3E");}
.frxs-diagonal{--frxs:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.85%22%3E%3Cpath%20d%3D%22M5%2019L19%205%22%20stroke-linecap%3D%22round%22%2F%3E%3C%2Fsvg%3E");}
.frxs-door{--frxs:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.85%22%3E%3Crect%20x%3D%226%22%20y%3D%223%22%20width%3D%2212%22%20height%3D%2218%22%20rx%3D%221%22%2F%3E%3Ccircle%20cx%3D%2215%22%20cy%3D%2212%22%20r%3D%221%22%20fill%3D%22black%22%2F%3E%3C%2Fsvg%3E");}
.frxs-draft{--frxs:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.85%22%3E%3Cpath%20d%3D%22M3%208h10a3%203%200%201%200-3-3%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%2F%3E%3Cpath%20d%3D%22M3%2012h14a3%203%200%201%201-3%203%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%2F%3E%3Cpath%20d%3D%22M3%2016h8a2.4%202.4%200%201%201-2.4%202.4%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%2F%3E%3C%2Fsvg%3E");}
.frxs-droplet{--frxs:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.85%22%3E%3Cpath%20d%3D%22M12%203c3%204%205%207%205%2010a5%205%200%200%201-10%200c0-3%202-6%205-10z%22%20stroke-linejoin%3D%22round%22%2F%3E%3C%2Fsvg%3E");}
.frxs-droplet-gr{--frxs:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.85%22%3E%3Cpath%20d%3D%22M12%202s6%207%206%2011a6%206%200%200%201-12%200c0-4%206-11%206-11z%22%20stroke-linejoin%3D%22round%22%2F%3E%3Cpath%20d%3D%22M3%2021h18%22%20stroke-linecap%3D%22round%22%2F%3E%3C%2Fsvg%3E");}
.frxs-droppings{--frxs:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.85%22%3E%3Cellipse%20cx%3D%228%22%20cy%3D%229%22%20rx%3D%221.4%22%20ry%3D%222.3%22%20transform%3D%22rotate%2822%208%209%29%22%2F%3E%3Cellipse%20cx%3D%2215%22%20cy%3D%2212%22%20rx%3D%221.4%22%20ry%3D%222.3%22%20transform%3D%22rotate%28-16%2015%2012%29%22%2F%3E%3Cellipse%20cx%3D%2210.5%22%20cy%3D%2216.5%22%20rx%3D%221.4%22%20ry%3D%222.3%22%20transform%3D%22rotate%2830%2010.5%2016.5%29%22%2F%3E%3C%2Fsvg%3E");}
.frxs-efflor{--frxs:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.85%22%3E%3Cpath%20d%3D%22M4%205h16v14H4z%22%2F%3E%3Ccircle%20cx%3D%229%22%20cy%3D%2210%22%20r%3D%221.2%22%20fill%3D%22black%22%2F%3E%3Ccircle%20cx%3D%2214%22%20cy%3D%2213%22%20r%3D%221.2%22%20fill%3D%22black%22%2F%3E%3Ccircle%20cx%3D%2215%22%20cy%3D%228%22%20r%3D%221%22%20fill%3D%22black%22%2F%3E%3C%2Fsvg%3E");}
.frxs-firebox{--frxs:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.85%22%3E%3Cpath%20d%3D%22M4%2020V7h16v13M4%2020h16M9%2020v-6h6v6%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%2F%3E%3C%2Fsvg%3E");}
.frxs-flame{--frxs:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.85%22%3E%3Cpath%20d%3D%22M12%203c1.2%203%204%204.2%204%207.8A4%204%200%200%201%208%2011c0-1.8%201-3%202-4%20.1%201.8%201%202.6%202%202.6%20.2-2%200-4.4%200-6.6z%22%20stroke-linejoin%3D%22round%22%2F%3E%3C%2Fsvg%3E");}
.frxs-gnaw{--frxs:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.85%22%3E%3Cpath%20d%3D%22M20%2012a8%208%200%201%201-6-7.7%22%20stroke-linecap%3D%22round%22%2F%3E%3Cpath%20d%3D%22M20%205l-2.4%202.4-2-.6.6%202L14%2011l2.6.4.4%202.6%201.8-1.4%202.2.8-.8-2.2%201.4-1.8-2.6-.4z%22%20stroke-linejoin%3D%22round%22%2F%3E%3C%2Fsvg%3E");}
.frxs-growth{--frxs:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.85%22%3E%3Ccircle%20cx%3D%229%22%20cy%3D%2212%22%20r%3D%222.6%22%2F%3E%3Ccircle%20cx%3D%2214.5%22%20cy%3D%2214%22%20r%3D%223.2%22%2F%3E%3Ccircle%20cx%3D%2214.8%22%20cy%3D%228.2%22%20r%3D%221.7%22%2F%3E%3C%2Fsvg%3E");}
.frxs-hairline{--frxs:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.85%22%3E%3Cpath%20d%3D%22M11%203l2%204-3%203%203%203-2%204%202%203%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%2F%3E%3C%2Fsvg%3E");}
.frxs-horiz{--frxs:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.85%22%3E%3Cpath%20d%3D%22M3%2012h18%22%20stroke-linecap%3D%22round%22%2F%3E%3C%2Fsvg%3E");}
.frxs-humidity{--frxs:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.85%22%3E%3Cpath%20d%3D%22M12%203a2%202%200%200%201%202%202v8a4%204%200%201%201-4%200V5a2%202%200%200%201%202-2z%22%20stroke-linejoin%3D%22round%22%2F%3E%3Cpath%20d%3D%22M12%207v7%22%20stroke-linecap%3D%22round%22%2F%3E%3C%2Fsvg%3E");}
.frxs-joist{--frxs:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.85%22%3E%3Cpath%20d%3D%22M3%206h18M3%206v12M9%206v12M15%206v12M21%206v12M3%2018h18%22%20stroke-linecap%3D%22round%22%2F%3E%3C%2Fsvg%3E");}
.frxs-latch{--frxs:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.85%22%3E%3Cpath%20d%3D%22M7%2011V8a5%205%200%200%201%2010%200v3%22%20stroke-linecap%3D%22round%22%2F%3E%3Crect%20x%3D%225%22%20y%3D%2211%22%20width%3D%2214%22%20height%3D%229%22%20rx%3D%222%22%2F%3E%3C%2Fsvg%3E");}
.frxs-lean{--frxs:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.85%22%3E%3Cpath%20d%3D%22M6%2021V6l12-3v18M6%2021h12%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%2F%3E%3C%2Fsvg%3E");}
.frxs-level{--frxs:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.85%22%3E%3Crect%20x%3D%222%22%20y%3D%229%22%20width%3D%2220%22%20height%3D%226%22%20rx%3D%221%22%2F%3E%3Ccircle%20cx%3D%2212%22%20cy%3D%2212%22%20r%3D%221.5%22%2F%3E%3C%2Fsvg%3E");}
.frxs-mold{--frxs:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.85%22%3E%3Ccircle%20cx%3D%229%22%20cy%3D%2210%22%20r%3D%222.5%22%2F%3E%3Ccircle%20cx%3D%2215%22%20cy%3D%2214%22%20r%3D%223%22%2F%3E%3Ccircle%20cx%3D%2216%22%20cy%3D%228%22%20r%3D%221.5%22%2F%3E%3C%2Fsvg%3E");}
.frxs-nailpop{--frxs:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.85%22%3E%3Crect%20x%3D%224%22%20y%3D%224%22%20width%3D%2216%22%20height%3D%2216%22%20rx%3D%221%22%2F%3E%3Ccircle%20cx%3D%229%22%20cy%3D%2210%22%20r%3D%221.3%22%20fill%3D%22black%22%2F%3E%3Ccircle%20cx%3D%2215%22%20cy%3D%2214%22%20r%3D%221.3%22%20fill%3D%22black%22%2F%3E%3C%2Fsvg%3E");}
.frxs-nopump{--frxs:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.85%22%3E%3Ccircle%20cx%3D%2212%22%20cy%3D%2212%22%20r%3D%228.2%22%2F%3E%3Cpath%20d%3D%22M6.2%206.2l11.6%2011.6%22%20stroke-linecap%3D%22round%22%2F%3E%3C%2Fsvg%3E");}
.frxs-offset{--frxs:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.85%22%3E%3Cpath%20d%3D%22M3%207h8v5H3zM13%2012h8v5h-8z%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%2F%3E%3C%2Fsvg%3E");}
.frxs-patch{--frxs:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.85%22%3E%3Cpath%20d%3D%22M4%204h16v16H4z%22%20stroke-linejoin%3D%22round%22%2F%3E%3Cpath%20d%3D%22M9%204v16M4%2012h16%22%20stroke-linecap%3D%22round%22%2F%3E%3C%2Fsvg%3E");}
.frxs-pipe{--frxs:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.85%22%3E%3Cpath%20d%3D%22M3%208h6v8H3z%22%20stroke-linejoin%3D%22round%22%2F%3E%3Cpath%20d%3D%22M9%2012h5a3%203%200%200%201%203%203v2%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%2F%3E%3Cpath%20d%3D%22M14%204.5l1.5%201.5L17%204.5M15.5%206v4%22%20stroke-linecap%3D%22round%22%2F%3E%3C%2Fsvg%3E");}
.frxs-puddle{--frxs:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.85%22%3E%3Cpath%20d%3D%22M3%2018c3%202%2015%202%2018%200%22%20stroke-linecap%3D%22round%22%2F%3E%3Cpath%20d%3D%22M8%2013c1%202%207%202%208%200%22%20stroke-linecap%3D%22round%22%2F%3E%3Cpath%20d%3D%22M12%204v6%22%20stroke-linecap%3D%22round%22%2F%3E%3C%2Fsvg%3E");}
.frxs-roof{--frxs:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.85%22%3E%3Cpath%20d%3D%22M3%2013l9-7%209%207M7%2021V11M17%2021V11M7%2021h10%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%2F%3E%3C%2Fsvg%3E");}
.frxs-ruler{--frxs:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.85%22%3E%3Crect%20x%3D%222%22%20y%3D%229%22%20width%3D%2220%22%20height%3D%226%22%20rx%3D%221%22%2F%3E%3Cpath%20d%3D%22M7%209v3M12%209v3M17%209v3%22%20stroke-linecap%3D%22round%22%2F%3E%3C%2Fsvg%3E");}
.frxs-slope{--frxs:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.85%22%3E%3Cpath%20d%3D%22M3%2018l18-6M3%2018l18%200M3%2018v3h18v-3%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%2F%3E%3C%2Fsvg%3E");}
.frxs-softspot{--frxs:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.85%22%3E%3Ccircle%20cx%3D%2212%22%20cy%3D%2212%22%20r%3D%228%22%2F%3E%3Cpath%20d%3D%22M8%2012c2-2.5%206-2.5%208%200%22%20stroke-linecap%3D%22round%22%2F%3E%3C%2Fsvg%3E");}
.frxs-span{--frxs:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.85%22%3E%3Cpath%20d%3D%22M4%208v8M20%208v8M4%2012h16%22%20stroke-linecap%3D%22round%22%2F%3E%3Cpath%20d%3D%22M7%2015l-3-3%203-3M17%209l3%203-3%203%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%2F%3E%3C%2Fsvg%3E");}
.frxs-squeak{--frxs:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.85%22%3E%3Cpath%20d%3D%22M11%205%206%209H3v6h3l5%204V5z%22%20stroke-linejoin%3D%22round%22%2F%3E%3Cpath%20d%3D%22M16%209a4%204%200%200%201%200%206%22%20stroke-linecap%3D%22round%22%2F%3E%3C%2Fsvg%3E");}
.frxs-stair{--frxs:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.85%22%3E%3Cpath%20d%3D%22M4%2020h5v-5h5v-5h5V5%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%2F%3E%3C%2Fsvg%3E");}
.frxs-storm{--frxs:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.85%22%3E%3Cpath%20d%3D%22M7%2015a4%204%200%200%201%20.3-8%205%205%200%200%201%209.5%201.3A3.4%203.4%200%200%201%2016%2015z%22%20stroke-linejoin%3D%22round%22%2F%3E%3Cpath%20d%3D%22M9%2018l-1%202.5M13%2018l-1%202.5M16.5%2018l-1%202.5%22%20stroke-linecap%3D%22round%22%2F%3E%3C%2Fsvg%3E");}
.frxs-sump{--frxs:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.85%22%3E%3Cpath%20d%3D%22M4%2014h16v6H4z%22%20stroke-linejoin%3D%22round%22%2F%3E%3Cpath%20d%3D%22M9%2014V8h6v6M12%204v4%22%20stroke-linecap%3D%22round%22%2F%3E%3C%2Fsvg%3E");}
.frxs-taper{--frxs:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.85%22%3E%3Cpath%20d%3D%22M5%205l14%207-14%207z%22%20stroke-linejoin%3D%22round%22%2F%3E%3C%2Fsvg%3E");}
.frxs-thermo{--frxs:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.85%22%3E%3Cpath%20d%3D%22M14%2014.8V5a2%202%200%200%200-4%200v9.8a4%204%200%201%200%204%200z%22%20stroke-linejoin%3D%22round%22%2F%3E%3Cpath%20d%3D%22M12%208v6%22%20stroke-linecap%3D%22round%22%2F%3E%3C%2Fsvg%3E");}
.frxs-trim{--frxs:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.85%22%3E%3Cpath%20d%3D%22M13%203v6l-3%203%203%203v6M6%204h12M6%2020h12%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%2F%3E%3C%2Fsvg%3E");}
.frxs-vent{--frxs:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.85%22%3E%3Crect%20x%3D%223%22%20y%3D%226%22%20width%3D%2218%22%20height%3D%2212%22%20rx%3D%221%22%2F%3E%3Cpath%20d%3D%22M3%2010h18M3%2014h18%22%20stroke-linecap%3D%22round%22%2F%3E%3C%2Fsvg%3E");}
.frxs-vert{--frxs:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.85%22%3E%3Cpath%20d%3D%22M12%203v18%22%20stroke-linecap%3D%22round%22%2F%3E%3C%2Fsvg%3E");}
.frxs-wallet{--frxs:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.85%22%3E%3Crect%20x%3D%223%22%20y%3D%226%22%20width%3D%2218%22%20height%3D%2213%22%20rx%3D%222%22%2F%3E%3Cpath%20d%3D%22M3%2010h18M8%2015h3%22%20stroke-linecap%3D%22round%22%2F%3E%3C%2Fsvg%3E");}
.frxs-waves{--frxs:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.85%22%3E%3Cpath%20d%3D%22M4%2018c3-2%205-2%208%200s5%202%208%200M4%2012c3-2%205-2%208%200s5%202%208%200M4%206c3-2%205-2%208%200s5%202%208%200%22%20stroke-linecap%3D%22round%22%2F%3E%3C%2Fsvg%3E");}
.frxs-weight{--frxs:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.85%22%3E%3Cpath%20d%3D%22M8%207h8l3%2013H5z%22%20stroke-linejoin%3D%22round%22%2F%3E%3Cpath%20d%3D%22M9%207a3%203%200%200%201%206%200%22%20stroke-linecap%3D%22round%22%2F%3E%3C%2Fsvg%3E");}
.frxs-window{--frxs:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.85%22%3E%3Crect%20x%3D%223%22%20y%3D%224%22%20width%3D%2218%22%20height%3D%2216%22%20rx%3D%221%22%2F%3E%3Cpath%20d%3D%22M12%204v16M3%2012h18%22%20stroke-linecap%3D%22round%22%2F%3E%3C%2Fsvg%3E");}
/* ==== end frxs ==== */
