/* ===================================================================
 * EC BASE — typography, body, links, headings, buttons base.
 *
 * Targets generic elements + Bootstrap 3 base classes that OneUp uses
 * (.btn). Per the OneUp DOM inventory, the theme uses Bootstrap 3
 * conventions throughout.
 * ================================================================ */

/* ===================================================================
 * Manrope — self-hosted brand font (client 2026-06-30: ONE font for
 * every type of text). 5 static weights shipped as WOFF2 under
 * ../fonts/manrope/. The url() is resolved RELATIVE to THIS file
 * (ec/assets/css/02-base.css): `../fonts/` climbs out of css/ back into
 * assets/ then into fonts/ — identical convention to the iconsreso
 * @font-face in 03-components.css. font-display:swap paints text
 * immediately in the system fallback, then swaps to Manrope on load.
 * ================================================================ */
@font-face { font-family: 'Manrope'; font-style: normal; font-weight: 400; font-display: swap; src: url('../fonts/manrope/Manrope-Regular.woff2')  format('woff2'); }
@font-face { font-family: 'Manrope'; font-style: normal; font-weight: 500; font-display: swap; src: url('../fonts/manrope/Manrope-Medium.woff2')   format('woff2'); }
@font-face { font-family: 'Manrope'; font-style: normal; font-weight: 600; font-display: swap; src: url('../fonts/manrope/Manrope-SemiBold.woff2') format('woff2'); }
@font-face { font-family: 'Manrope'; font-style: normal; font-weight: 700; font-display: swap; src: url('../fonts/manrope/Manrope-Bold.woff2')     format('woff2'); }
@font-face { font-family: 'Manrope'; font-style: normal; font-weight: 800; font-display: swap; src: url('../fonts/manrope/Manrope-ExtraBold.woff2') format('woff2'); }

/* Scroll-margin offset for in-page anchors so they don't land behind
 * the fixed navbar. WCAG 2.2 SC 2.4.12 (Focus Not Obscured — Minimum)
 * requires keyboard focus and anchor targets not be entirely hidden by
 * sticky chrome. Mirrors the AFTER-SCROLL (shrunk) header height —
 * in-page jumps land while the navbar is in .menu-fixed state. */
:root {
	scroll-padding-top: 75px;
}

body,
.wpb_text_column,
.wpb_text_column p {
	font-family: var(--ec-font-family);
	-webkit-font-smoothing: antialiased;
	-moz-osx-font-smoothing: grayscale;
}

h1, h2, h3, h4, h5, h6,
.heading,
.title {
	font-family: var(--ec-font-heading);
}

/* -------------------------------------------------------------------
 * Manrope EVERYWHERE — out-specify the per-element fonts baked into the
 * page that bypass the --ec-* vars: the OneUp parent theme (driven by
 * oneup_*_font_value postmeta) and Ultimate VC Addons (the `font_call:`
 * token in [bsf-info-box] / [ult_buttons] / [ultimate_heading] shortcodes
 * — Plus Jakarta Sans, DM Sans, Poppins) emit inline / scoped font-family
 * on specific elements. An author !important rule beats inline (non-
 * important) declarations and equal-specificity scoped rules, so this is
 * what makes the rendered result truly single-font without rewriting the
 * DB content. DELIBERATELY scoped to text elements + known WPBakery /
 * Ultimate text wrappers — NOT bare i/span/a — so icon webfonts
 * ('iconsreso', FontAwesome), which live on ::before or their own element
 * rule, are left intact. Uses the token (Manrope) with a hard fallback so
 * the rule never computes to an empty family. */
body, a,
p, li, dt, dd, th, td, caption, blockquote, figcaption, label, legend,
h1, h2, h3, h4, h5, h6, .heading, .title,
input, select, textarea, button, .btn,
.wpb_text_column, .wpb_text_column p, .vc_custom_heading,
.info-box-title, .info-box-description, .bsf-info-box .ult-responsive,
.ultimate-heading-text, .uvc-heading, .uvc-sub-heading,
.ult_buttons .ubtn, .ult-button-wrapper .ubtn, .ubtn-data,
.ultimate-typewriter-prefix, .ultimate-typed-main, .ultimate-typewriter-wrapper,
.ult_expheader, .uap-trigger,
.cbp-l-caption-title, .cbp-l-caption-desc, .cbp-l-caption-text,
.cbp-filter-item, .cbp-l-loadMore-link, .cbp-popup-singlePage-counter,
/* Slider Revolution hero layers — the most prominent above-the-fold text.
   Element names differ by major version: .tp-caption (v5), rs-layer (v6),
   sr7-txt/sr7-btn/sr7-layer (v7). Local Docker runs v6, staging runs v7, so
   cover all three namespaces. Layers set font-family inline WITHOUT
   !important, so this author !important wins. */
rs-layer, .rs-layer, .tp-caption,
sr7-txt, sr7-btn, sr7-layer, .sr7-layer {
	font-family: var(--ec-font-family, 'Manrope', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif) !important;
}

a {
	transition: color var(--ec-transition);
}
a:hover,
a:focus {
	color: var(--ec-color-link-hover);
}

/* Selection respects brand */
::selection {
	background: var(--ec-color-accent);
	color: var(--ec-color-primary);
}
::-moz-selection {
	background: var(--ec-color-accent);
	color: var(--ec-color-primary);
}

/* Focus-visible — accessibility baseline.
   OneUp's defaults are inconsistent; force a visible gold ring on
   keyboard navigation across all interactive elements. */
:focus-visible {
	outline: 2px solid var(--ec-color-accent);
	outline-offset: 2px;
}
