/* ==========================================================================
   HomeSphere design tokens
   Source of truth: HomeSphere Tokens contact sheet (as of 2026-08-15).
   All downstream CSS should reference these variables — never hard-code hex,
   font-family, or scale values elsewhere.
   ========================================================================== */

:root {

	/* --- Brand core ---------------------------------------------------- */
	--hs-navy-primary:       #132F4F;   /* section ground */
	--hs-navy:               #173C6D;   /* v1 primary */
	--hs-navy-deep:          #0F2B50;   /* footer bar only */
	--hs-navy-teal:          #1D3A53;   /* announcement bar */
	--hs-navy-tint:          #E8EDF4;
	--hs-navy-tile-bg:       #1A3860;   /* brand wall */

	--hs-orange:             #F27E1E;   /* ONLY accent-solid button */
	--hs-orange-light:       #F0912F;   /* link / hover */
	--hs-orange-deep:        #C25E14;   /* accessible alt */
	--hs-orange-tint:        #FCEBD8;
	--hs-orange-tint-ink:    #9A4E12;

	--hs-blue:               #0D8FE0;   /* emphasis + links only */
	--hs-blue-strong:        #0A6BB0;
	--hs-blue-tint:          #E1F1FC;

	--hs-red:                #B63547;   /* heritage/logo/error — NEVER a button */
	--hs-red-wordmark:       #C0344A;
	--hs-red-tint:           #F7E4E7;

	/* --- Surfaces & grounds -------------------------------------------- */
	--hs-page:               #FAF8F4;
	--hs-surface:            #FFFFFF;   /* cards */
	--hs-cream:              #F5F1E8;
	--hs-cream-card:         #EDE7DA;
	--hs-fill-warm:          #F2EEE7;
	/* Raised panels sitting ON --hs-page: feature cards, quote panels, the
	   case-study info-box. Deep enough to separate from the page cream
	   without becoming a second ground.
	   NOTE: same hex as --hs-border, but semantically different — reference
	   THIS one for surfaces so the two can diverge later. */
	--hs-surface-raised:     #E9E4DB;

	/* --- Text ---------------------------------------------------------- */
	--hs-ink:                #211F1B;   /* primary text */
	--hs-body:               #5E574A;
	--hs-muted:              #6B6458;   /* was #7A7264 — darkened 2026-10-21 so small muted text passes 4.5:1 on every cream surface (SEO audit F18) */
	--hs-on-navy:            #FFFFFF;
	--hs-on-navy-muted:      #B9C6DA;
	--hs-navy-subhead-text:  #D4DBE5;
	--hs-navy-footer-link:   #B8C4D4;

	/* --- Borders ------------------------------------------------------- */
	--hs-border:             #E9E4DB;
	--hs-border-strong:      #DDD6C9;

	/* --- Semantic states ----------------------------------------------- */
	--hs-success:            #1E7A46;
	--hs-success-tint:       #E7F3EC;
	--hs-success-green-fg:   #0E7A2D;
	--hs-success-green-bg:   #E8F5EA;
	--hs-warning:            #B8791A;
	--hs-warning-tint:       #FBF0DE;
	--hs-error:              #B63547;
	--hs-error-tint:         #F7E4E7;
	--hs-info:               #0D8FE0;
	--hs-info-tint:          #E1F1FC;

	/* --- Typography — families ---------------------------------------- */
	--hs-font-sans: "Inter", ui-sans-serif, system-ui, -apple-system,
					BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
	--hs-font-mono: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;

	/* --- Typography — fluid sizes -------------------------------------- */
	/* fluid: clamp( min, preferred, max ) tuned to viewport 360→1280 */
	--hs-fs-display:  clamp(2.5rem,   1.5rem + 4.5vw, 4rem);       /* w700 */
	--hs-fs-h1:       clamp(1.625rem, 1.25rem + 1.7vw, 2.25rem);   /* w600 */
	--hs-fs-h2:       clamp(2rem,     1.5rem + 2.3vw, 2.75rem);    /* w600 */
	--hs-fs-h3:       clamp(1.5rem,   1.25rem + 1.1vw, 2rem);      /* w600 */
	--hs-fs-h4:       clamp(1.25rem,  1.1rem + 0.7vw, 1.5rem);     /* w600 */
	--hs-fs-body-l:   clamp(1.0625rem, 1rem + 0.35vw, 1.1875rem);  /* w400 */
	--hs-fs-body:     clamp(1rem,      0.95rem + 0.2vw, 1.0625rem);/* w400 */
	--hs-fs-small:    0.875rem;                                    /* fixed */
	--hs-fs-eyebrow:  clamp(0.75rem,   0.7rem + 0.15vw, 0.8125rem);/* w600, tracked */

	/* --- Typography — line heights & tracking ------------------------- */
	--hs-lh-tight:    1.05;
	--hs-lh-heading:  1.15;
	--hs-lh-snug:     1.35;
	--hs-lh-body:     1.55;
	--hs-tracking-tight:   -0.02em;
	--hs-tracking-heading: -0.01em;
	--hs-tracking-eyebrow:  0.12em;

	/* --- Typography — weights ----------------------------------------- */
	--hs-fw-regular:   400;
	--hs-fw-medium:    500;
	--hs-fw-semibold:  600;
	--hs-fw-bold:      700;
	--hs-fw-black:     800;

	/* --- Spacing scale (slug = px, value = rem) ----------------------- */
	--hs-space-4:    0.25rem;
	--hs-space-8:    0.5rem;
	--hs-space-12:   0.75rem;
	--hs-space-16:   1rem;
	--hs-space-24:   1.5rem;
	--hs-space-32:   2rem;
	--hs-space-48:   3rem;
	--hs-space-64:   4rem;
	--hs-space-96:   6rem;
	--hs-space-128:  8rem;

	/* --- Border radius -------------------------------------------------
	   THE RADIUS SCALE. Use a token — never a raw px value — for anything
	   that is a button, card, panel, media frame or pill. Raw values are
	   reserved for illustrations that draw a physical object (the laptop
	   and phone in the product montage) and for the 2px focus ring.

	     none     0        square edges (tile-card outer column)
	     xs       4px      small chips, logo slots, thumbnails
	     control  8px      ALL buttons and form inputs
	     card     12px     cards, tiles, panels, quote boxes, info boxes
	     media    16px     photo / video frames inside a layout
	     lg       24px     large feature media (case-study graphic)
	     pill     999px    circular buttons, avatars, badges

	   Buttons get `control` from base.css WITHOUT !important, so a BB
	   module setting can still override one deliberately. Anything new
	   should just inherit and need no radius rule at all. */
	--hs-radius-none:     0;
	--hs-radius-xs:       4px;
	--hs-radius-control:  8px;    /* buttons, inputs */
	--hs-radius-card:     12px;
	--hs-radius-media:    16px;
	--hs-radius-lg:       24px;
	--hs-radius-pill:     999px;

	/* --- Layout -------------------------------------------------------- */
	--hs-content-max:  1000px;    /* contentSize + wideSize (no wide break) */
	--hs-measure:      65ch;      /* comfortable paragraph line length */

}

/* ==========================================================================
   Fonts — served from the theme (Dev audit, 2026-10-22)
   Inter (everything) and Roboto (a few Beaver Builder modules: the Get
   Started pop-up choices, Gravity Forms buttons) used to come from Google
   Fonts in four separate stylesheets that blocked the first paint. These are
   the same Google files (variable fonts, weights 100–900, Latin + Latin
   Extended), copied into assets/fonts/. inc/page-speed.php switches the
   Google requests off and preloads inter-latin.woff2. A browser downloads a
   file only when text on the page needs it, so Roboto costs nothing on most
   pages.
   ========================================================================== */
/* Inter latin-ext — variable, weights 100–900 (83KB) */
@font-face {
	font-family: 'Inter';
	font-style: normal;
	font-weight: 100 900;
	font-display: swap;
	src: url('../fonts/inter-latin-ext.woff2') format('woff2');
	unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* Inter latin — variable, weights 100–900 (47KB) */
@font-face {
	font-family: 'Inter';
	font-style: normal;
	font-weight: 100 900;
	font-display: swap;
	src: url('../fonts/inter-latin.woff2') format('woff2');
	unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* Roboto latin-ext — variable, weights 100–900 (23KB) */
@font-face {
	font-family: 'Roboto';
	font-style: normal;
	font-weight: 100 900;
	font-display: swap;
	src: url('../fonts/roboto-latin-ext.woff2') format('woff2');
	unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* Roboto latin — variable, weights 100–900 (36KB) */
@font-face {
	font-family: 'Roboto';
	font-style: normal;
	font-weight: 100 900;
	font-display: swap;
	src: url('../fonts/roboto-latin.woff2') format('woff2');
	unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

/* ==========================================================================
   Font Awesome solid icons — site subset (home speed pass, 2026-10-22)
   assets/fonts/fa-solid-900-site.woff2 holds only the solid icons this
   site uses (found in every published Beaver Builder layout, the theme and
   the rendered pages): 11KB instead of Font Awesome's 112KB.
   ⚠️ Declared AFTER Font Awesome's own @font-face (tokens.css loads after
   bb-plugin's all.min.css), with a unicode-range. For a character in that
   range the browser tries the LAST-declared face first — this one; for any
   other icon, or one missing from the subset, it falls back to Font
   Awesome's full fa-solid-900.woff2 as before. So a new icon added in
   Beaver Builder still shows; it just costs the full font on that page.
   Rebuild the subset when icons change a lot (patches/data notes how).
   ========================================================================== */
@font-face {
	font-family: 'Font Awesome 7 Free';
	font-style: normal;
	font-weight: 900;
	font-display: block;
	src: url('../fonts/fa-solid-900-site.woff2') format('woff2');
	unicode-range: U+24, U+2B, U+E066, U+E068, U+E1B0, U+E537, U+F001-F002, U+F005, U+F00A-F00E, U+F010, U+F012-F013, U+F015, U+F017, U+F019, U+F021, U+F025-F026, U+F028-F029, U+F02C-F02D, U+F030, U+F039, U+F03D-F03E, U+F041, U+F04B-F04C, U+F053-F054, U+F058-F059, U+F063, U+F065-F066, U+F068, U+F06B, U+F06E, U+F073, U+F077-F078, U+F07A, U+F084-F086, U+F08D, U+F091, U+F095, U+F09C, U+F09E, U+F0A1, U+F0AC, U+F0B1, U+F0C0, U+F0C4, U+F0D1, U+F0D7, U+F0DB, U+F0E0, U+F0E3, U+F0E8-F0E9, U+F0EB, U+F0ED-F0EE, U+F0F2-F0F4, U+F101, U+F103-F105, U+F10E, U+F111, U+F118, U+F121, U+F127, U+F130, U+F132-F133, U+F135, U+F144, U+F14D, U+F178, U+F19C-F19D, U+F1AC-F1AD, U+F1B3, U+F1C0-F1C1, U+F1D8, U+F1DE, U+F1EA, U+F200-F201, U+F219, U+F273-F275, U+F279, U+F290, U+F2B5, U+F2E7, U+F2F6, U+F2F9, U+F303, U+F337, U+F360, U+F3C5, U+F46C, U+F48B, U+F4C1, U+F502, U+F518, U+F53A, U+F56C-F56D, U+F571, U+F594, U+F5A0, U+F5A2, U+F5B8, U+F5CA, U+F5DA, U+F651, U+F688, U+F6E3, U+F7D9;
}
@font-face {
	font-family: 'Font Awesome 5 Free';
	font-style: normal;
	font-weight: 900;
	font-display: block;
	src: url('../fonts/fa-solid-900-site.woff2') format('woff2');
	unicode-range: U+24, U+2B, U+E066, U+E068, U+E1B0, U+E537, U+F001-F002, U+F005, U+F00A-F00E, U+F010, U+F012-F013, U+F015, U+F017, U+F019, U+F021, U+F025-F026, U+F028-F029, U+F02C-F02D, U+F030, U+F039, U+F03D-F03E, U+F041, U+F04B-F04C, U+F053-F054, U+F058-F059, U+F063, U+F065-F066, U+F068, U+F06B, U+F06E, U+F073, U+F077-F078, U+F07A, U+F084-F086, U+F08D, U+F091, U+F095, U+F09C, U+F09E, U+F0A1, U+F0AC, U+F0B1, U+F0C0, U+F0C4, U+F0D1, U+F0D7, U+F0DB, U+F0E0, U+F0E3, U+F0E8-F0E9, U+F0EB, U+F0ED-F0EE, U+F0F2-F0F4, U+F101, U+F103-F105, U+F10E, U+F111, U+F118, U+F121, U+F127, U+F130, U+F132-F133, U+F135, U+F144, U+F14D, U+F178, U+F19C-F19D, U+F1AC-F1AD, U+F1B3, U+F1C0-F1C1, U+F1D8, U+F1DE, U+F1EA, U+F200-F201, U+F219, U+F273-F275, U+F279, U+F290, U+F2B5, U+F2E7, U+F2F6, U+F2F9, U+F303, U+F337, U+F360, U+F3C5, U+F46C, U+F48B, U+F4C1, U+F502, U+F518, U+F53A, U+F56C-F56D, U+F571, U+F594, U+F5A0, U+F5A2, U+F5B8, U+F5CA, U+F5DA, U+F651, U+F688, U+F6E3, U+F7D9;
}
