/*!
 * Fosia design system v2 (pay.fosiarw.com) — fosia-divi-child 2.0.0
 *
 * 0. Fonts (self-hosted Inter, no Google request)
 * 1. Tokens (CSS custom properties)      — usable anywhere, also in Divi fields: var(--fosia-blue)
 * 2. Base (scoped to body.fosia-v2)       — type, links, Divi defaults reset
 * 3. Layout helpers (section/row classes) — .fosia-section, .fosia-section--subtle|--dark|--hero
 * 4. Components (Divi module CSS classes) — .fosia-hero, .fosia-card, .fosia-badge, .fosia-btn,
 *    .fosia-logos, .fosia-code, .fosia-price-card, .fosia-table, .fosia-faq, .fosia-stat, .fosia-shot…
 * 5. Site-wide (not scoped): skip link, focus, reduced motion, cookie banner, YouTube placeholder
 * 6. Pages not built by the v2 generator: legacy Divi 4 rows, WordPress defaults, WooCommerce (1.3.3)
 * 7. Sales components: Yearly / Lifetime switch, founders deal, WhatsApp button (1.3.7)
 *
 * 2.0.0 — "Divi 5 natif": the look of the v2 pages now lives in Divi itself:
 *   - Design Variables (colours, fonts, radii, spacing, text sizes) — section 1 reads them;
 *   - Fosia Element Presets / Option Group Presets (buttons, titles, lead, eyebrow, badges, cards,
 *     feature blurbs, key figures, checklists, FAQ toggles, price cards, screenshots, sections).
 * Edit them in the Visual Builder (module > preset menu, or Variable Manager). This file keeps
 * only what Divi settings cannot express; each block says why (inventory in
 * docs/site/divi5-native-audit.md, section 4). Rules that set a property a preset also sets were
 * removed, so the preset always wins.
 *
 * Everything here is class based on purpose: Divi's own per-module rules
 * (.et_pb_text_3 …) are index based and break when a page is rendered twice
 * (see docs/site/audit.md), these never do; preset rules are class based too.
 */

/* =========================================================================
   0. FONTS — Inter 4 variable (weights 100–900), SIL Open Font License 1.1
   (assets/fonts/OFL.txt). Self-hosted: no request to fonts.googleapis.com /
   fonts.gstatic.com. latin is preloaded (inc/fonts.php); latin-ext is only
   downloaded when a page uses one of its characters (unicode-range).
   ========================================================================= */
@font-face {
	font-family: "Inter";
	font-style: normal;
	font-weight: 100 900;
	font-display: swap;
	src: url("../fonts/inter-latin-ext-wght.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;
}
@font-face {
	font-family: "Inter";
	font-style: normal;
	font-weight: 100 900;
	font-display: swap;
	src: url("../fonts/inter-latin-wght.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;
}

/* =========================================================================
   1. TOKENS — Divi 5 Design Variables first (2.0.0)
   The values live in Divi (Theme Options colours/fonts, global colours gcid-fosia-*, number
   variables gvid-fosia-*; written by site/pay-fosiarw/v2/divi-design-system.php from tokens.py).
   Divi prints them as --gcid-* / --gvid-* / --et_global_*_font; inc/design-variables.php prints
   them on every page. The values after the comma are fallbacks (Divi off, or a page where the
   variable is not printed) and must equal tokens.py (checked by build.py).
   Change a colour, a radius or a text size in Divi > Variable Manager: buttons, cards, presets
   and this stylesheet all follow.
   ========================================================================= */
:root {
	/* Brand — "Fosia Blue" = Divi Primary Color; hover = Divi Secondary Color */
	--fosia-blue: var(--gcid-primary-color, #1959ff);
	--fosia-blue-700: var(--gcid-secondary-color, #0f44d6);
	--fosia-link: var(--gcid-link-color, #1959ff);
	--fosia-blue-50: var(--gcid-fosia-blue-50, #eef3ff);
	--fosia-blue-100: var(--gcid-fosia-blue-100, #dce6ff);
	--fosia-blue-800: var(--gcid-fosia-blue-800, #0b33a3);
	--fosia-blue-400: #5a86ff;

	/* Neutrals: ink = dark sections and footer; heading = Divi Heading Text Color; text = Divi Body Text Color */
	--fosia-blue-900: var(--gcid-fosia-blue-900, #0a1f66);
	--fosia-ink: var(--gcid-fosia-ink, #0b1020);
	--fosia-ink-800: var(--gcid-fosia-ink-800, #1b2133);
	--fosia-heading: var(--gcid-heading-color, #0b1020);
	--fosia-text: var(--gcid-body-color, #374056);
	--fosia-muted: var(--gcid-fosia-muted, #5b6478);
	--fosia-subtle: var(--gcid-fosia-subtle, #687185);
	--fosia-border: var(--gcid-fosia-border, #e4e8f0);
	--fosia-border-strong: var(--gcid-fosia-border-strong, #cfd6e3);
	--fosia-bg: var(--gcid-fosia-white, #ffffff);
	--fosia-bg-subtle: var(--gcid-fosia-bg-subtle, #f6f8fc);
	--fosia-bg-tint: var(--gcid-fosia-bg-tint, #f0f4ff);
	--fosia-on-dark: var(--gcid-fosia-on-dark, #c9d1e4);

	/* Feedback */
	--fosia-success: var(--gcid-fosia-success, #0e9f6e);
	--fosia-success-text: var(--gcid-fosia-success-text, #047857);
	--fosia-success-bg: var(--gcid-fosia-success-bg, #e7f7f0);
	--fosia-warning: var(--gcid-fosia-warning, #b45309);
	--fosia-warning-bg: var(--gcid-fosia-warning-bg, #fef3e2);
	--fosia-danger: #dc2626;
	--fosia-whatsapp: var(--gcid-fosia-whatsapp, #25d366);
	--fosia-whatsapp-hover: var(--gcid-fosia-whatsapp-hover, #1ebe5b);

	/* Typography — Divi global fonts (Theme Options > heading / body font = Inter, self-hosted) */
	--fosia-font: var(--et_global_body_font, "Inter"), ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
	--fosia-font-heading: var(--et_global_heading_font, "Inter"), ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
	--fosia-mono: ui-monospace, "SFMono-Regular", "JetBrains Mono", Menlo, Consolas, "Liberation Mono", monospace;
	--fosia-fs-display: var(--gvid-fosia-fs-display, clamp(2.5rem, 1.6rem + 3.6vw, 4.25rem));
	--fosia-fs-h1: var(--gvid-fosia-fs-h1, clamp(2.25rem, 1.7rem + 2.2vw, 3.5rem));
	--fosia-fs-h2: var(--gvid-fosia-fs-h2, clamp(1.75rem, 1.4rem + 1.4vw, 2.625rem));
	--fosia-fs-h3: var(--gvid-fosia-fs-h3, clamp(1.1875rem, 1.1rem + 0.35vw, 1.375rem));
	--fosia-fs-h4: var(--gvid-fosia-fs-h4, 1.0625rem);
	--fosia-fs-lead: var(--gvid-fosia-fs-lead, clamp(1.0625rem, 1rem + 0.35vw, 1.25rem));
	--fosia-fs-body: var(--gvid-fosia-fs-body, 1rem);
	--fosia-fs-small: var(--gvid-fosia-fs-small, 0.875rem);
	--fosia-fs-xs: var(--gvid-fosia-fs-xs, 0.75rem);
	--fosia-fs-stat: var(--gvid-fosia-fs-stat, clamp(1.75rem, 1.3rem + 1.6vw, 2.5rem));
	--fosia-fs-price: var(--gvid-fosia-fs-price, 2.5rem);
	--fosia-lh-tight: 1.12;
	--fosia-lh-heading: 1.25;
	--fosia-lh-body: 1.65;
	--fosia-tracking-tight: -0.022em;

	/* Radii */
	--fosia-radius-sm: var(--gvid-fosia-radius-sm, 6px);
	--fosia-radius: var(--gvid-fosia-radius, 10px);
	--fosia-radius-lg: var(--gvid-fosia-radius-lg, 16px);
	--fosia-radius-xl: var(--gvid-fosia-radius-xl, 24px);
	--fosia-radius-pill: var(--gvid-fosia-radius-pill, 999px);

	/* Shadows (blue-tinted) — the presets use the same values */
	--fosia-shadow-xs: 0 1px 2px rgba(11, 16, 32, 0.06);
	--fosia-shadow-sm: 0 1px 3px rgba(11, 16, 32, 0.08), 0 1px 2px rgba(11, 16, 32, 0.04);
	--fosia-shadow: 0 6px 16px -4px rgba(11, 16, 32, 0.10), 0 2px 4px rgba(11, 16, 32, 0.04);
	--fosia-shadow-lg: 0 24px 48px -12px rgba(10, 31, 102, 0.18), 0 8px 16px -8px rgba(11, 16, 32, 0.08);
	--fosia-ring: 0 0 0 3px rgba(25, 89, 255, 0.35);
	--fosia-focus: var(--fosia-blue);       /* focus outline — 5.4:1 on white */

	/* Spacing scale (4px base) and layout */
	--fosia-space-1: 4px;
	--fosia-space-2: 8px;
	--fosia-space-3: 12px;
	--fosia-space-4: 16px;
	--fosia-space-5: 24px;
	--fosia-space-6: 32px;
	--fosia-space-7: 48px;
	--fosia-space-8: 64px;
	--fosia-space-9: 96px;
	--fosia-space-10: 128px;
	--fosia-section-y: var(--gvid-fosia-section-y, clamp(64px, 5vw + 32px, 112px));
	--fosia-section-y-compact: var(--gvid-fosia-section-y-compact, 48px);
	--fosia-hero-y: var(--gvid-fosia-hero-y, clamp(56px, 6vw + 24px, 120px));
	--fosia-row-gap: var(--gvid-fosia-row-gap, 48px);
	--fosia-gap: var(--gvid-fosia-gap, 32px);
	--fosia-card-padding: var(--gvid-fosia-card-padding, 32px);
	--fosia-card-padding-sm: var(--gvid-fosia-card-padding-sm, 24px);
	--fosia-container: var(--gvid-fosia-container, 1180px);
	--fosia-container-wide: var(--gvid-fosia-container-wide, 1240px);
	--fosia-container-medium: var(--gvid-fosia-container-medium, 960px);

	--fosia-container-narrow: var(--gvid-fosia-container-narrow, 780px);
	--fosia-focus-on-dark: var(--gcid-fosia-on-dark-accent, #a9c0ff);

	--fosia-ease: cubic-bezier(0.2, 0.7, 0.2, 1);
}

/* =========================================================================
   2. BASE — only on pages that opted in (body.fosia-v2)
   ========================================================================= */
body.fosia-v2 {
	font-family: var(--fosia-font);
	font-size: var(--fosia-fs-body);
	line-height: var(--fosia-lh-body);
	color: var(--fosia-text);
	background: var(--fosia-bg);
	-webkit-font-smoothing: antialiased;
	-moz-osx-font-smoothing: grayscale;
	text-rendering: optimizeLegibility;
}

body.fosia-v2 #page-container,
body.fosia-v2 #main-content,
body.fosia-v2 .et-l--post {
	background: var(--fosia-bg);
}

body.fosia-v2 h1,
body.fosia-v2 h2,
body.fosia-v2 h3,
body.fosia-v2 h4,
body.fosia-v2 h5,
body.fosia-v2 h6 {
	font-family: var(--fosia-font-heading);
	color: var(--fosia-heading);
	font-weight: 700;
	letter-spacing: var(--fosia-tracking-tight);
	line-height: var(--fosia-lh-heading);
	padding-bottom: 0;
	margin: 0;
}

/* Defaults for headings without a preset (text modules, plugin output), at zero class
   specificity (:where) so any Divi title preset or module setting wins. */
:where(body.fosia-v2 .fosia-section) h1 { font-size: var(--fosia-fs-h1); line-height: var(--fosia-lh-tight); font-weight: 800; }
:where(body.fosia-v2 .fosia-section) h2 { font-size: var(--fosia-fs-h2); line-height: 1.18; font-weight: 750; }
:where(body.fosia-v2 .fosia-section) h3 { font-size: var(--fosia-fs-h3); font-weight: 650; letter-spacing: -0.012em; }
:where(body.fosia-v2 .fosia-section) h4 { font-size: var(--fosia-fs-h4); font-weight: 650; letter-spacing: 0; }

/* Paragraphs inherit size and line height from their module (a text preset sets them there);
   unitless default line height so it follows the text size (Divi's 1.7em is fixed at 16 px). */
:where(body.fosia-v2 .fosia-section) .et_pb_text_inner { line-height: var(--fosia-lh-body); }
body.fosia-v2 .fosia-section p,
body.fosia-v2 .fosia-section li { color: inherit; }
body.fosia-v2 .fosia-section p { padding-bottom: 0; margin: 0 0 0.85em; }
body.fosia-v2 .fosia-section p:last-child { margin-bottom: 0; }
body.fosia-v2 .fosia-section .et_pb_text { color: var(--fosia-text); }

body.fosia-v2 a { color: var(--fosia-link); text-decoration: none; transition: color 0.15s var(--fosia-ease); }
body.fosia-v2 a:hover { color: var(--fosia-blue-700); }
body.fosia-v2 .fosia-section .et_pb_text a:not(.fosia-link-arrow) { text-decoration: underline; text-underline-offset: 3px; text-decoration-thickness: 1px; }
body.fosia-v2 a:focus-visible,
body.fosia-v2 button:focus-visible,
body.fosia-v2 summary:focus-visible,
body.fosia-v2 .et_pb_toggle_title:focus-visible {
	/* Solid outline (WCAG 2.4.7 / 1.4.11: the 35% ring alone was 1.7:1 on white) + soft ring. */
	outline: 2px solid var(--fosia-focus);
	outline-offset: 2px;
	box-shadow: var(--fosia-ring);
	border-radius: var(--fosia-radius-sm);
}
body.fosia-v2 .fosia-section--dark a:focus-visible,
body.fosia-v2 .fosia-section--dark button:focus-visible,
body.fosia-v2 .fosia-footer a:focus-visible,
body.fosia-v2 .fosia-footer button:focus-visible {
	outline-color: var(--fosia-focus-on-dark);
}

body.fosia-v2 strong { color: var(--fosia-ink); font-weight: 650; }
body.fosia-v2 ::selection { background: var(--fosia-blue-100); color: var(--fosia-ink); }

/* Screen-reader-only helper */
.fosia-sr-only {
	position: absolute !important;
	width: 1px; height: 1px; padding: 0; margin: -1px;
	overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0;
}

/* prefers-reduced-motion: see section 5 (site-wide). */

/* =========================================================================
   3. LAYOUT — sections and rows
   ========================================================================= */
/* Background, vertical padding (Option Group Preset "Section spacing") and the space between
   rows are Divi settings now (section presets). Kept: the stacking context for the decorative
   gradients and the cut-off of tilted screenshots. */
body.fosia-v2 .fosia-section.et_pb_section {
	--row-gutter-horizontal: var(--fosia-gap);
	--row-gutter-vertical: var(--fosia-gap);
	position: relative;
	overflow: hidden;
}
/* Row widths are Divi settings (Design Variables "Content width ..."); rows stay centred. */
body.fosia-v2 .fosia-section > .et_pb_row { margin-left: auto; margin-right: auto; }
/* A "tight" row sits 16 px (not one row gap) under the previous one: a negative margin, which
   Divi's spacing options cannot express relative to the gap. */
body.fosia-v2 .fosia-section > .et_pb_row.fosia-row--tight { margin-top: calc(var(--fosia-space-4) - var(--fosia-row-gap)); }
body.fosia-v2 .fosia-section > .et_pb_row.fosia-row--follow { margin-top: calc(var(--fosia-space-6) - var(--fosia-row-gap)); }
body.fosia-v2 .fosia-row--center,
body.fosia-v2 .fosia-row--center .et_pb_text,
body.fosia-v2 .fosia-row--center .et_pb_heading { text-align: center; }
body.fosia-v2 .fosia-row--center .et_pb_group { align-items: center; }
body.fosia-v2 .fosia-row--center .fosia-btn-row,
body.fosia-v2 .fosia-row--center .et_pb_button_module_wrapper { justify-content: center; }
body.fosia-v2 .fosia-row--center .fosia-trustline ul { justify-content: center; }
body.fosia-v2 .fosia-row--middle { align-items: center !important; }

/* Dark band (CTA, developer sections): colour = preset "Section dark"; the two radial glows are
   layered gradients, which Divi's background gradient (one gradient) cannot draw. Text colours
   for light-on-dark live here because the same title / text presets serve light and dark bands. */
body.fosia-v2 .fosia-section--dark.et_pb_section {
	background-image:
		radial-gradient(60% 80% at 85% 0%, rgba(25, 89, 255, 0.35) 0%, rgba(25, 89, 255, 0) 60%),
		radial-gradient(50% 70% at 0% 100%, rgba(90, 134, 255, 0.18) 0%, rgba(90, 134, 255, 0) 60%);
	color: var(--fosia-on-dark);
}
body.fosia-v2 .fosia-section--dark h1,
body.fosia-v2 .fosia-section--dark h2,
body.fosia-v2 .fosia-section--dark h3,
body.fosia-v2 .fosia-section--dark h4,
body.fosia-v2 .fosia-section--dark strong { color: #ffffff; }
body.fosia-v2 .fosia-section--dark .et_pb_text,
body.fosia-v2 .fosia-section--dark p,
body.fosia-v2 .fosia-section--dark li,
body.fosia-v2 .fosia-section--dark .et_pb_icon_list_text { color: var(--fosia-on-dark) !important; }
body.fosia-v2 .fosia-section--dark a:not(.et_pb_button) { color: var(--fosia-focus-on-dark); }
body.fosia-v2 .fosia-section--dark .et_pb_icon_list .et-pb-icon { background-color: rgba(25, 89, 255, 0.25) !important; color: var(--fosia-focus-on-dark) !important; }

/* =========================================================================
   4. COMPONENTS
   ========================================================================= */

/* ---- Hero ------------------------------------------------------------- */
/* Hero: colour, border and spacing = presets "Section hero" + "Hero spacing"; the soft blue
   glows are three layered gradients (not possible with one Divi gradient). */
body.fosia-v2 .fosia-hero.et_pb_section {
	background-image:
		radial-gradient(48% 60% at 92% 8%, rgba(25, 89, 255, 0.16) 0%, rgba(25, 89, 255, 0) 70%),
		radial-gradient(40% 50% at 0% 0%, rgba(185, 204, 255, 0.45) 0%, rgba(185, 204, 255, 0) 70%),
		linear-gradient(180deg, #ffffff 0%, var(--fosia-bg-subtle) 100%);
}
/* Lead / eyebrow: size, weight, case = text presets; colours here (light and dark bands) and
   the reading width (a max-width in em, relative to the preset's text size). */
body.fosia-v2 .fosia-lead,
body.fosia-v2 .fosia-lead p { color: var(--fosia-muted); }
body.fosia-v2 .fosia-lead p { max-width: 40em; }
body.fosia-v2 .fosia-row--center .fosia-lead,
body.fosia-v2 .fosia-row--center .fosia-lead p { margin-left: auto; margin-right: auto; }
body.fosia-v2 .fosia-section--dark .fosia-lead,
body.fosia-v2 .fosia-section--dark .fosia-lead p { color: var(--fosia-on-dark); }

/* Eyebrow / kicker above headings */
body.fosia-v2 .fosia-eyebrow,
body.fosia-v2 .fosia-eyebrow p {
	color: var(--fosia-blue) !important;
	margin-bottom: 0;
}
body.fosia-v2 .fosia-section--dark .fosia-eyebrow,
body.fosia-v2 .fosia-section--dark .fosia-eyebrow p { color: var(--fosia-focus-on-dark) !important; }

/* Small trust line under hero CTAs */
body.fosia-v2 .fosia-trustline,
body.fosia-v2 .fosia-trustline p {
	font-size: var(--fosia-fs-small) !important;
	color: var(--fosia-muted);
}
body.fosia-v2 .fosia-trustline ul {
	display: flex; flex-wrap: wrap; gap: 8px 20px;
	list-style: none; margin: 0; padding: 0;
}
body.fosia-v2 .fosia-trustline li {
	font-size: var(--fosia-fs-small) !important;
	padding-left: 22px; position: relative; color: var(--fosia-muted);
}
body.fosia-v2 .fosia-trustline li::before {
	content: ""; position: absolute; left: 0; top: 0.32em; width: 15px; height: 15px;
	background: var(--fosia-success);
	-webkit-mask: var(--fosia-icon-check) center / contain no-repeat;
	mask: var(--fosia-icon-check) center / contain no-repeat;
}

/* ---- Buttons ----------------------------------------------------------
   Colours, font, padding, corners, border, shadow, hover and the arrow icon = the Fosia button
   presets. Kept here: the 48 px minimum touch target and single-line label (Divi has no
   min-height for buttons), the pressed nudge, full width ("block" buttons, phones). */
body.fosia-v2 .et_pb_button_module_wrapper { display: flex; }
body.fosia-v2 .fosia-btn-row { display: flex; flex-wrap: wrap; gap: 12px !important; align-items: center; }
body.fosia-v2 .fosia-header-cta .fosia-btn-row { flex-wrap: nowrap !important; justify-content: flex-end; gap: 8px !important; }
body.fosia-v2 .et_pb_button.fosia-btn {
	display: inline-flex !important;
	flex-direction: row !important;
	align-items: center;
	justify-content: center;
	min-height: 48px;
	white-space: nowrap;
	text-decoration: none !important;
}
body.fosia-v2 .et_pb_button.fosia-btn:active { transform: translateY(1px); }
body.fosia-v2 .et_pb_button.fosia-btn--block { width: 100%; justify-content: center; }
body.fosia-v2 .et_pb_button_module_wrapper:has(.fosia-btn--block) { width: 100%; }
/* Divi places a button icon with position:absolute + translateY(-50%) for its hover slide; the
   text-link preset shows the arrow all the time, so it flows after the label instead. */
body.fosia-v2 .et_pb_button.fosia-btn--ghost::after { position: static !important; transform: none !important; transition: transform 0.15s var(--fosia-ease); }
body.fosia-v2 .et_pb_button.fosia-btn--ghost:hover::after { transform: translateX(3px) !important; }

/* Text link with arrow (inside text modules: <a class="fosia-link-arrow">) */
body.fosia-v2 a.fosia-link-arrow { font-weight: 600; display: inline-flex; align-items: center; gap: 6px; min-height: 40px; }
body.fosia-v2 a.fosia-link-arrow::after {
	content: ""; width: 14px; height: 14px; background: currentColor;
	-webkit-mask: var(--fosia-icon-arrow) center / contain no-repeat;
	mask: var(--fosia-icon-arrow) center / contain no-repeat;
	transition: transform 0.15s var(--fosia-ease);
}
body.fosia-v2 a.fosia-link-arrow:hover::after { transform: translateX(3px); }

/* ---- Badges ----------------------------------------------------------- */
/* Colours, size, padding, pill corners = badge presets. Kept: a text module is a full-width
   block; a badge must shrink to its label (inline-flex, align-self), and the status dot. */
body.fosia-v2 .fosia-badge,
body.fosia-v2 span.fosia-badge {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	white-space: nowrap;
}
body.fosia-v2 .et_pb_text.fosia-badge { display: inline-flex !important; flex-direction: row !important; width: auto; align-self: flex-start; }
body.fosia-v2 .fosia-row--center .et_pb_text.fosia-badge { align-self: center; }
body.fosia-v2 .et_pb_text.fosia-badge p { margin: 0; color: inherit; }
body.fosia-v2 .fosia-badge--dot .et_pb_text_inner { display: inline-flex; align-items: center; gap: 6px; }
body.fosia-v2 .fosia-badge--dot .et_pb_text_inner::before {
	content: ""; width: 6px; height: 6px; border-radius: 50%; background: currentColor; opacity: 0.8;
}

/* ---- Cards ------------------------------------------------------------ */
/* Look (background, border, corners, padding, shadow, lift on hover) = presets "Card",
   "Feature card", "Price card". Kept: equal heights inside a grid row (height 100%). */
body.fosia-v2 .fosia-card { height: 100%; }
body.fosia-v2 .fosia-card h3 { margin-bottom: 0; }
body.fosia-v2 .fosia-card .et_pb_text { color: var(--fosia-muted); }
body.fosia-v2 .fosia-section--dark .fosia-card .et_pb_text { color: var(--fosia-on-dark); }
body.fosia-v2 .fosia-card > * + * { margin-top: 0; }

/* Feature blurbs: icon tile on the left edge (Divi centres the image of a top-placed blurb),
   space under it, description paragraphs without extra bottom space. */
body.fosia-v2 .et_pb_blurb.fosia-card .et_pb_main_blurb_image,
body.fosia-v2 .fosia-card .et_pb_blurb .et_pb_main_blurb_image { margin: 0 0 var(--fosia-space-4); text-align: left; display: flex; justify-content: flex-start; }
body.fosia-v2 .et_pb_blurb .et_pb_main_blurb_image .et_pb_image_wrap { display: block; box-sizing: border-box; margin-left: 0 !important; margin-right: auto !important; }
body.fosia-v2 .et_pb_blurb .et_pb_main_blurb_image img { display: block; width: 100%; height: auto; }
body.fosia-v2 .et_pb_blurb .et_pb_module_header { padding-bottom: 0; margin: 0 0 10px; }
body.fosia-v2 .et_pb_blurb .et_pb_blurb_description p:last-child { margin-bottom: 0; }

/* Numbered steps: a CSS counter (1, 2, 3) above each step title — numbering is not a Divi option. */
body.fosia-v2 .fosia-steps { counter-reset: fosia-step; }
body.fosia-v2 .fosia-step .et_pb_blurb_container::before {
	counter-increment: fosia-step;
	content: counter(fosia-step);
	display: inline-flex; align-items: center; justify-content: center;
	width: 36px; height: 36px; margin-bottom: var(--fosia-space-4);
	border-radius: 50%;
	background: var(--fosia-blue); color: #fff;
	font-size: 0.9375rem; font-weight: 700; letter-spacing: 0;
}

/* ---- Logos / network chips ------------------------------------------- */
body.fosia-v2 .fosia-logos ul {
	list-style: none;
	margin: 0;
	padding: 0;
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	gap: 10px 12px;
}
body.fosia-v2 .fosia-logos li {
	padding: 8px 16px;
	border-radius: var(--fosia-radius-pill);
	background: #ffffff;
	border: 1px solid var(--fosia-border);
	font-size: var(--fosia-fs-small) !important;
	font-weight: 600;
	color: var(--fosia-ink);
	line-height: 1.4;
	box-shadow: var(--fosia-shadow-xs);
}
body.fosia-v2 .fosia-logos--muted li { background: transparent; box-shadow: none; color: var(--fosia-muted); }
body.fosia-v2 .fosia-logos--left ul { justify-content: flex-start; }
body.fosia-v2 .fosia-logos p { text-align: center; color: var(--fosia-muted); font-size: var(--fosia-fs-small) !important; margin-bottom: 16px; }

/* ---- Key figures (Blurb, preset "Key figure") -------------------------
   Number size, label, left rule = the preset. Kept: the number is a paragraph, not a heading. */
body.fosia-v2 .fosia-stat .et_pb_module_header { margin: 0; color: var(--fosia-heading); }
body.fosia-v2 .fosia-stat .et_pb_blurb_description { margin-top: 6px; }

/* ---- Checklists (Icon List, presets "Checklist") ------------------------
   Icon, colours, sizes = the presets. Kept: the check sits on the first line of a wrapped item
   (Divi centres the icon vertically) and its round tile is exactly 19 px. */
body.fosia-v2 .fosia-checklist .et_pb_icon_list_item { align-items: flex-start !important; }
body.fosia-v2 .fosia-checklist .et_pb_icon_list_item .et-pb-icon {
	display: inline-flex; align-items: center; justify-content: center;
	box-sizing: border-box; width: 19px; height: 19px; line-height: 1 !important; flex: 0 0 19px; margin-top: 0.15em;
}
body.fosia-v2 .fosia-checklist .is-muted .et-pb-icon { background-color: var(--fosia-bg-subtle) !important; }

/* ---- Pricing cards ---------------------------------------------------- */
/* Card look (white, border, corners, padding, shadow; highlighted / founders border) = presets
   "Price card"; plan name = preset "Plan name". Kept: the column layout that pushes the buy
   button to the bottom, the two-size price line (amount + <small> period in one paragraph,
   which a text preset cannot style separately) and the responsive 4 / 2 / 1 grid below. */
body.fosia-v2 .fosia-price-card.et_pb_column {
	display: flex;
	flex-direction: column;
	gap: 18px;
	position: relative;
}
body.fosia-v2 .fosia-price-card .fosia-price p {
	font-size: var(--fosia-fs-price) !important;
	font-weight: 800;
	letter-spacing: -0.035em;
	color: var(--fosia-ink);
	line-height: 1.1;
	margin: 0;
}
body.fosia-v2 .fosia-price-card .fosia-price p small {
	font-size: 0.9375rem;
	font-weight: 500;
	letter-spacing: 0;
	color: var(--fosia-muted);
}
body.fosia-v2 .fosia-price-card .fosia-plan-desc p { min-height: 3em; }
body.fosia-v2 .fosia-price-card .fosia-checklist { flex: 1 1 auto; }
body.fosia-v2 .fosia-price-card .et_pb_button_module_wrapper { margin-top: auto; }
/* 4 cards side by side only from 1180px; 2 per line below, 1 on phones */
body.fosia-v2 .fosia-pricing-row > .fosia-price-card.et_pb_column { min-width: 0; }
@media (max-width: 1179px) {
	body.fosia-v2 .fosia-pricing-row.et_pb_row { flex-wrap: wrap !important; }
	body.fosia-v2 .fosia-pricing-row > .fosia-price-card.et_pb_column { width: calc(50% - 10px) !important; flex: 0 0 calc(50% - 10px) !important; }
}
@media (max-width: 767px) {
	body.fosia-v2 .fosia-pricing-row > .fosia-price-card.et_pb_column { width: 100% !important; flex-basis: 100% !important; }
}
/* Price notes and affiliate disclosures: size and colour = preset "Small note". */

/* ---- Tables (text module: <table class="fosia-table">) ---------------- */
body.fosia-v2 .fosia-table-wrap { overflow-x: auto; -webkit-overflow-scrolling: touch; border: 1px solid var(--fosia-border); border-radius: var(--fosia-radius-lg); background: #fff; }
body.fosia-v2 table.fosia-table {
	width: 100%;
	min-width: 720px;
	border-collapse: collapse;
	font-size: var(--fosia-fs-small);
	margin: 0;
	border: 0;
}
body.fosia-v2 table.fosia-table th,
body.fosia-v2 table.fosia-table td {
	padding: 12px 16px;
	text-align: center;
	border: 0;
	border-bottom: 1px solid var(--fosia-border);
	color: var(--fosia-text);
	line-height: 1.45;
}
body.fosia-v2 table.fosia-table th:first-child,
body.fosia-v2 table.fosia-table td:first-child { text-align: left; color: var(--fosia-ink); font-weight: 500; }
body.fosia-v2 table.fosia-table--left th,
body.fosia-v2 table.fosia-table--left td { text-align: left; }
body.fosia-v2 table.fosia-table thead th {
	background: var(--fosia-bg-subtle);
	font-weight: 700;
	color: var(--fosia-ink);
	position: sticky;
	top: 0;
}
body.fosia-v2 table.fosia-table tbody tr:last-child td { border-bottom: 0; }
body.fosia-v2 table.fosia-table .yes { color: var(--fosia-success-text); font-weight: 700; }
body.fosia-v2 table.fosia-table .no { color: var(--fosia-subtle); }
body.fosia-v2 table.fosia-table .col-featured { background: rgba(25, 89, 255, 0.04); }

/* ---- Code ------------------------------------------------------------- */
body.fosia-v2 .fosia-code {
	border-radius: var(--fosia-radius-lg);
	background: #0d1426;
	border: 1px solid rgba(255, 255, 255, 0.08);
	box-shadow: var(--fosia-shadow-lg);
	overflow: hidden;
}
body.fosia-v2 .fosia-code .fosia-code__bar {
	display: flex; align-items: center; gap: 8px;
	padding: 10px 16px;
	background: rgba(255, 255, 255, 0.04);
	border-bottom: 1px solid rgba(255, 255, 255, 0.06);
	font: 500 0.75rem/1.4 var(--fosia-font);
	color: #8a93a6;
	letter-spacing: 0.02em;
}
body.fosia-v2 .fosia-code .fosia-code__bar::before {
	content: ""; width: 10px; height: 10px; border-radius: 50%;
	background: #ff5f57; box-shadow: 16px 0 0 #febc2e, 32px 0 0 #28c840; margin-right: 40px;
}
body.fosia-v2 .fosia-code pre {
	margin: 0;
	padding: 18px 20px;
	overflow-x: auto;
	background: transparent;
	color: #dbe4ff;
	font: 400 0.8125rem/1.7 var(--fosia-mono);
	white-space: pre;
	tab-size: 2;
	border: 0;
}
body.fosia-v2 .fosia-code code { font: inherit; background: none; padding: 0; color: inherit; }
/* Prose-like blocks (agent prompts): wrap instead of hiding the end of the line (1.3.3). */
body.fosia-v2 .fosia-code--wrap pre { white-space: pre-wrap; overflow-wrap: anywhere; }
body.fosia-v2 .fosia-code .tok-c { color: #7d8aa8; } /* 5.3:1 (was 4.1:1) */
body.fosia-v2 .fosia-code .tok-k { color: #8fb0ff; }
body.fosia-v2 .fosia-code .tok-s { color: #9be3c0; }
body.fosia-v2 .fosia-code .tok-p { color: #ffcf8a; }
body.fosia-v2 :not(pre) > code {
	font-family: var(--fosia-mono);
	font-size: 0.875em;
	background: var(--fosia-bg-subtle);
	border: 1px solid var(--fosia-border);
	border-radius: 6px;
	padding: 1px 6px;
	color: var(--fosia-ink);
}
body.fosia-v2 .fosia-section--dark :not(pre) > code { background: rgba(255, 255, 255, 0.08); border-color: rgba(255, 255, 255, 0.12); color: #fff; }

/* ---- FAQ (Toggle, preset "FAQ question") ------------------------------
   Background, border, corners, title / answer fonts and the +/- icon colours = the preset.
   Kept: inner padding of the title and the answer (the toggle's own padding is 0 so the whole
   title row is the click target), the icon's place on the right, the open shadow. */
body.fosia-v2 .et_pb_toggle.fosia-faq { transition: border-color 0.15s var(--fosia-ease), box-shadow 0.15s var(--fosia-ease); }
body.fosia-v2 .et_pb_toggle.fosia-faq.et_pb_toggle_open { box-shadow: var(--fosia-shadow-sm); }
body.fosia-v2 .et_pb_toggle.fosia-faq .et_pb_toggle_title {
	padding: 18px 56px 18px 20px !important;
	cursor: pointer;
}
body.fosia-v2 .et_pb_toggle.fosia-faq .et_pb_toggle_title::before {
	right: 20px !important;
	left: auto !important;
	top: 50% !important;
	transform: translateY(-50%);
	margin-top: 0 !important;
}
body.fosia-v2 .et_pb_toggle.fosia-faq .et_pb_toggle_content { padding: 0 20px 20px !important; }

/* ---- Product screenshots / placeholders ------------------------------ */
/* Corners, border, shadow (and the phone frame) = presets "Product screenshot" / "Phone
   screenshot". Kept: the 3D tilt of the hero screenshot (perspective transform). */
body.fosia-v2 .fosia-shot .et_pb_image_wrap,
body.fosia-v2 .fosia-shot img { display: block; }
body.fosia-v2 .fosia-shot .et_pb_image_wrap { overflow: hidden; background: #fff; }
body.fosia-v2 .fosia-shot--tilt .et_pb_image_wrap { transform: perspective(1600px) rotateY(-6deg) rotateX(2deg); }
@media (max-width: 980px) { body.fosia-v2 .fosia-shot--tilt .et_pb_image_wrap { transform: none; } }

body.fosia-v2 .fosia-shot--phone { margin-left: auto; margin-right: auto; }

/* ---- Callout / notice -------------------------------------------------- */
body.fosia-v2 .fosia-callout {
	border-radius: var(--fosia-radius);
	border: 1px solid var(--fosia-blue-100);
	background: var(--fosia-blue-50);
	padding: 16px 20px;
	color: var(--fosia-blue-900);
	font-size: 0.9375rem;
}
body.fosia-v2 .fosia-callout p { color: var(--fosia-blue-900); }
body.fosia-v2 .fosia-callout--warning { background: var(--fosia-warning-bg); border-color: #f8dcb0; }
body.fosia-v2 .fosia-callout--warning p { color: #7c2d12; }
/* In a dark band the section's light text colour won over the callout's: light text on a light box (1.3.3). */
body.fosia-v2 .fosia-section--dark .fosia-callout {
	background: rgba(25, 89, 255, 0.16);
	border-color: rgba(169, 192, 255, 0.3);
	color: #e3e9ff;
}
body.fosia-v2 .fosia-section--dark .fosia-callout,
body.fosia-v2 .fosia-section--dark .fosia-callout p { color: #e3e9ff !important; }
body.fosia-v2 .fosia-section--dark .fosia-callout a { color: #ffffff !important; }

/* ---- Prose (docs, legal) ---------------------------------------------- */
body.fosia-v2 .fosia-prose { max-width: 760px; }
body.fosia-v2 .fosia-prose h2 { font-size: 1.5rem !important; margin: 1.6em 0 0.6em; }
body.fosia-v2 .fosia-prose h3 { font-size: 1.125rem !important; margin: 1.4em 0 0.5em; }
body.fosia-v2 .fosia-prose h2:first-child,
body.fosia-v2 .fosia-prose h3:first-child { margin-top: 0; }
body.fosia-v2 .fosia-prose ol,
body.fosia-v2 .fosia-prose ul:not(.fosia-checks) { padding-left: 1.4em; margin: 0 0 1em; }
body.fosia-v2 .fosia-prose li { margin-bottom: 0.4em; }

/* ---- Header (theme builder layout, section class "fosia-header") ------ */
body.fosia-v2 .fosia-header.et_pb_section {
	padding: 0 !important;
	background: rgba(255, 255, 255, 0.86) !important;
	-webkit-backdrop-filter: saturate(180%) blur(12px);
	backdrop-filter: saturate(180%) blur(12px);
	border-bottom: 1px solid var(--fosia-border);
	box-shadow: none !important;
}
/* The "More" dropdown must paint above the page: the header (and its
 * backdrop-filter stacking context) sits above the first section, and no
 * wrapper may clip it. */
body.fosia-v2 .et-l--header {
	position: -webkit-sticky;
	position: sticky; /* stays at the top while scrolling (#et-boc wraps the whole page) */
	top: 0;
	z-index: 99990;
}
/* Logged-in users: sit under the WP admin bar (fixed above 600px wide). */
body.fosia-v2.admin-bar .et-l--header { top: 32px; }
@media (max-width: 782px) { body.fosia-v2.admin-bar .et-l--header { top: 46px; } }
@media (max-width: 600px) { body.fosia-v2.admin-bar .et-l--header { top: 0; } }
body.fosia-v2 .fosia-header.et_pb_section {
	position: relative;
	z-index: 99990;
}
body.fosia-v2 .et-l--header,
body.fosia-v2 .fosia-header.et_pb_section,
body.fosia-v2 .fosia-header .et_pb_row,
body.fosia-v2 .fosia-header .et_pb_column,
body.fosia-v2 .fosia-header .et_pb_menu,
body.fosia-v2 .fosia-header .et_pb_menu_inner_container,
body.fosia-v2 .fosia-header .et_pb_menu__wrap,
body.fosia-v2 .fosia-header .et_pb_menu__menu {
	overflow: visible !important;
}
body.fosia-v2 .fosia-nav .sub-menu { z-index: 99999 !important; background: var(--fosia-bg) !important; }

body.fosia-v2 .fosia-header > .et_pb_row {
	width: 92%;
	max-width: 1240px;
	margin: 0 auto;
	padding: 12px 0 !important;
	align-items: center;
}
body.fosia-v2 .fosia-nav .et-menu > li > a,
body.fosia-v2 .fosia-nav .et-menu-nav > ul > li > a {
	font-family: var(--fosia-font);
	font-size: 0.9375rem;
	font-weight: 550;
	color: var(--fosia-ink) !important;
	padding-top: 10px !important;
	padding-bottom: 10px !important;
	opacity: 1 !important;
}
body.fosia-v2 .fosia-nav .et-menu > li > a:hover { color: var(--fosia-blue) !important; }
body.fosia-v2 .fosia-nav .et-menu > li { padding-left: 14px; padding-right: 14px; }
body.fosia-v2 .fosia-nav .et_pb_menu__logo img { max-height: 30px; width: auto; }
/* Breathing room between the logo and the first menu item (the logo wrapper
 * was wider than the image and the menu started inside it). */
body.fosia-v2 .fosia-nav .et_pb_menu__logo-wrap {
	flex: 0 0 auto !important;
	width: auto !important;
	max-width: none !important;
	margin-right: 40px !important;
}
body.fosia-v2 .fosia-nav .et_pb_menu__logo { width: auto !important; }
@media (max-width: 1180px) { body.fosia-v2 .fosia-nav .et_pb_menu__logo-wrap { margin-right: 24px !important; } }
body.fosia-v2 .fosia-nav .et_pb_menu__logo a { display: inline-flex; align-items: center; min-height: 44px; }
/* Desktop dropdown ("More") — card look only on the desktop menu, not in the phone menu (1.3.3). */
body.fosia-v2 .fosia-nav .et-menu-nav .sub-menu {
	border-top: 0 !important;
	border-radius: var(--fosia-radius);
	box-shadow: var(--fosia-shadow-lg) !important;
	border: 1px solid var(--fosia-border) !important;
	padding: 8px !important;
}
body.fosia-v2 .fosia-nav .et-menu-nav .sub-menu li a { font-size: 0.9375rem; color: var(--fosia-ink) !important; border-radius: 6px; }
body.fosia-v2 .fosia-nav .et-menu-nav .sub-menu li a:hover { background: var(--fosia-bg-subtle); }
body.fosia-v2 .fosia-nav .mobile_menu_bar::before { color: var(--fosia-ink) !important; }
/* Phone / tablet menu (hamburger) — 1.3.3: full-width panel under the header, 16px ink items,
   48px rows, the "More" items shown as a labelled group instead of a floating card. */
body.fosia-v2 .fosia-nav .et_mobile_menu {
	border-top: 1px solid var(--fosia-border) !important;
	border-radius: 0 0 var(--fosia-radius-lg) var(--fosia-radius-lg);
	box-shadow: var(--fosia-shadow-lg) !important;
	padding: 8px 16px 12px !important;
	background: var(--fosia-bg) !important;
	max-height: calc(100vh - 72px);
	overflow-y: auto;
}
body.fosia-v2 .fosia-nav .et_mobile_menu li a {
	display: flex !important;
	align-items: center;
	min-height: 48px;
	padding: 10px 8px !important;
	font-family: var(--fosia-font);
	font-size: 1rem !important;
	font-weight: 550;
	line-height: 1.3;
	color: var(--fosia-ink) !important;
	background: transparent !important;
	border-bottom: 1px solid var(--fosia-border) !important;
	opacity: 1 !important;
}
body.fosia-v2 .fosia-nav .et_mobile_menu li a:hover,
body.fosia-v2 .fosia-nav .et_mobile_menu li a:focus-visible { color: var(--fosia-blue) !important; background: var(--fosia-bg-subtle) !important; }
body.fosia-v2 .fosia-nav .et_mobile_menu .menu-item-has-children > a {
	font-size: 0.875rem !important;
	font-weight: 650;
	letter-spacing: 0.06em;
	text-transform: uppercase;
	color: var(--fosia-muted) !important;
	border-bottom: 0 !important;
	min-height: 44px;
	padding-top: 16px !important;
	cursor: default;
}
body.fosia-v2 .fosia-nav .et_mobile_menu .sub-menu {
	position: static !important;
	display: block !important;
	visibility: visible !important;
	opacity: 1 !important;
	width: auto !important;
	box-shadow: none !important;
	border: 0 !important;
	border-radius: 0 !important;
	padding: 0 !important;
	margin: 0 !important;
	background: transparent !important;
}
body.fosia-v2 .fosia-nav .et_mobile_menu .sub-menu li { padding: 0 !important; }
body.fosia-v2 .fosia-nav .et_mobile_menu .sub-menu li a { padding-left: 16px !important; }
body.fosia-v2 .fosia-nav .et_mobile_menu li:last-child > a { border-bottom: 0 !important; }
body.fosia-v2 .fosia-nav .mobile_menu_bar { display: inline-flex; align-items: center; justify-content: center; min-width: 44px; min-height: 44px; }
body.fosia-v2 .fosia-header-cta { flex: 0 0 auto; }
@media (max-width: 980px) { body.fosia-v2 .fosia-header-cta.et_pb_column { display: none !important; } }

/* ---- Footer (theme builder layout, section class "fosia-footer") ------ */
body.fosia-v2 .fosia-footer.et_pb_section {
	background-image: none !important;
	color: #aab3c8;
	border-top: 1px solid rgba(255, 255, 255, 0.08);
}
/* Footer: background = preset "Section dark"; column titles = preset "Footer column title".
   Kept: link list layout and colours on ink. */
body.fosia-v2 .fosia-footer h4 { margin-bottom: 14px; }
body.fosia-v2 .fosia-footer p,
body.fosia-v2 .fosia-footer li { color: #aab3c8; font-size: 0.9375rem; }
body.fosia-v2 .fosia-footer ul { list-style: none; margin: 0; padding: 0; }
body.fosia-v2 .fosia-footer li { margin: 0 0 10px; padding: 0; }
body.fosia-v2 .fosia-footer a { color: #d5dbea !important; text-decoration: none !important; }
body.fosia-v2 .fosia-footer a:hover { color: #ffffff !important; }
body.fosia-v2 .fosia-footer .fosia-footer__logo img { filter: brightness(0) invert(1); max-height: 28px; width: auto; }
body.fosia-v2 .fosia-footer .fosia-footer__legal {
	border-top: 1px solid rgba(255, 255, 255, 0.1);
	padding-top: 24px;
}
body.fosia-v2 .fosia-footer .fosia-footer__legal p { font-size: var(--fosia-fs-small); color: #9aa3b5; } /* 6.9:1 on ink (1.3.3, was #8a93a6) */
/* Touch screens: each footer link is a 40px-high target (1.3.3). */
@media (max-width: 980px) {
	body.fosia-v2 .fosia-footer li { margin: 0; }
	body.fosia-v2 .fosia-footer li a,
	body.fosia-v2 .fosia-footer li .fosia-cookie-settings { display: inline-flex; align-items: center; min-height: 40px; }
	body.fosia-v2 .fosia-footer p a { display: inline-flex; align-items: center; min-height: 40px; }
	body.fosia-v2 .fosia-footer h4 { margin-bottom: 4px; }
}

/* ---- Responsive tweaks ------------------------------------------------ */
/* Touch screens: code at least 14px (1.3.4); badges: tablet size in the badge presets. */
@media (max-width: 980px) {
	body.fosia-v2 .fosia-code .fosia-code__bar { font-size: 0.875rem; }
	body.fosia-v2 .fosia-code pre { font-size: 0.875rem; }
	body.fosia-v2 :not(pre) > code { font-size: 0.875rem; }
}
/* Tablet: card grids are one wrapping row (generator 1.3.3) shown 2 per line; an odd last card
   takes the whole line instead of leaving a hole. */
@media (min-width: 768px) and (max-width: 980px) {
	body.fosia-v2 .fosia-card-grid > .et_pb_column:last-child:nth-child(odd) { width: 100% !important; flex: 1 1 100% !important; }
}
@media (max-width: 767px) {
	/* Row width on phones (100% - 2 x 16 px) is a Divi row setting. */
	/* Full-width buttons on phones (Divi's per-module width beat the 1.3.0 rule: !important, 1.3.3).
	   Ghost buttons stay text links. */
	body.fosia-v2 .et_pb_button.fosia-btn:not(.fosia-btn--ghost) { width: 100% !important; max-width: none !important; justify-content: center; }
	body.fosia-v2 .fosia-badge,
	body.fosia-v2 span.fosia-badge { white-space: normal; }
	body.fosia-v2 .fosia-btn-row .et_pb_button_module_wrapper,
	body.fosia-v2 .et_pb_button_module_wrapper:not(:has(.fosia-btn--ghost)) { width: 100%; }
	/* Comparison tables scroll inside their card; the first column stays visible while scrolling. */
	body.fosia-v2 table.fosia-table th:first-child,
	body.fosia-v2 table.fosia-table td:first-child {
		position: sticky;
		left: 0;
		z-index: 1;
		background: #ffffff;
		min-width: 150px;
		max-width: 170px;
		box-shadow: 1px 0 0 var(--fosia-border);
	}
	body.fosia-v2 table.fosia-table thead th:first-child { background: var(--fosia-bg-subtle); z-index: 2; }
	body.fosia-v2 table.fosia-table { min-width: 640px; }
	body.fosia-v2 table.fosia-table th,
	body.fosia-v2 table.fosia-table td { padding: 12px 12px; }
	body.fosia-v2 .fosia-price-card.et_pb_column { margin-bottom: 4px; }
}

/* =========================================================================
   ICONS (inline SVG, no icon font, no external request)
   ========================================================================= */
:root {
	--fosia-icon-check: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3E%3Cpath d='M16.7 5.3a1 1 0 0 1 0 1.4l-8 8a1 1 0 0 1-1.4 0l-4-4a1 1 0 1 1 1.4-1.4L8 12.6l7.3-7.3a1 1 0 0 1 1.4 0Z'/%3E%3C/svg%3E");
	--fosia-icon-arrow: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3E%3Cpath d='M10.3 4.3a1 1 0 0 1 1.4 0l5 5a1 1 0 0 1 0 1.4l-5 5a1 1 0 0 1-1.4-1.4l3.3-3.3H4a1 1 0 1 1 0-2h9.6l-3.3-3.3a1 1 0 0 1 0-1.4Z'/%3E%3C/svg%3E");
}

/* =========================================================================
   5. SITE-WIDE — accessibility, cookie banner, YouTube placeholder (1.3.0)
   Not scoped to body.fosia-v2: also on pages that opted out (checkout…).
   ========================================================================= */

/* Divi resets ":focus { outline: 0 }": bring a visible focus back for keyboard users. */
html :where(a, button, input, select, textarea, summary, [tabindex]):focus-visible {
	outline: 2px solid var(--fosia-focus);
	outline-offset: 2px;
}

/* Skip link (inc/accessibility.php) — hidden until focused. */
.fosia-skip-link {
	position: absolute;
	top: 8px;
	left: 8px;
	z-index: 1000000;
	padding: 10px 16px;
	border-radius: var(--fosia-radius-sm);
	background: var(--fosia-ink);
	color: #ffffff !important;
	font: 600 0.9375rem/1.4 var(--fosia-font);
	text-decoration: none !important;
	transform: translateY(-200%);
}
.fosia-skip-link:focus,
.fosia-skip-link:focus-visible {
	transform: none;
	outline: 2px solid var(--fosia-focus-on-dark);
	outline-offset: 2px;
}
#main-content:focus { outline: none; }

@media (prefers-reduced-motion: reduce) {
	*,
	*::before,
	*::after {
		animation-duration: 0.01ms !important;
		animation-iteration-count: 1 !important;
		transition-duration: 0.01ms !important;
		scroll-behavior: auto !important;
	}
}

/* ---- Cookie banner (inc/consent.php, assets/js/fosia-consent.js) ------ */
.fosia-consent[hidden] { display: none !important; }
.fosia-consent {
	position: fixed;
	left: 16px;
	right: 16px;
	bottom: 16px;
	z-index: 100000; /* above Divi's sticky header, below the WP admin bar */
	display: flex;
	justify-content: center;
	pointer-events: none;
	font-family: var(--fosia-font);
}
.fosia-consent__inner {
	pointer-events: auto;
	width: 100%;
	max-width: 760px;
	max-height: calc(100vh - 32px);
	overflow-y: auto;
	box-sizing: border-box;
	padding: var(--fosia-space-5);
	background: var(--fosia-bg);
	color: var(--fosia-text);
	border: 1px solid var(--fosia-border);
	border-radius: var(--fosia-radius-lg);
	box-shadow: var(--fosia-shadow-lg);
	animation: fosia-consent-in 0.25s var(--fosia-ease) both;
}
/* Slide only: never start from opacity 0 — if the animation can't run
 * (background tab, throttled renderer), the banner must still be visible. */
@keyframes fosia-consent-in {
	from { transform: translateY(12px); }
	to { transform: none; }
}
.fosia-consent .fosia-consent__title {
	margin: 0 0 6px;
	padding: 0;
	font: 700 1.0625rem/1.35 var(--fosia-font);
	letter-spacing: -0.01em;
	color: var(--fosia-ink);
}
.fosia-consent .fosia-consent__title:focus { outline: none; }
.fosia-consent .fosia-consent__title:focus-visible { outline: 2px solid var(--fosia-focus); outline-offset: 4px; border-radius: 4px; }
.fosia-consent .fosia-consent__text {
	margin: 0;
	padding: 0;
	font-size: var(--fosia-fs-small);
	line-height: 1.6;
	color: var(--fosia-muted);
}
.fosia-consent .fosia-consent__text a {
	color: var(--fosia-blue);
	text-decoration: underline;
	text-underline-offset: 3px;
	font-weight: 600;
}
.fosia-consent fieldset { margin: 0; padding: 0; border: 0; min-width: 0; }
.fosia-consent__prefs {
	margin-top: var(--fosia-space-4);
	border-top: 1px solid var(--fosia-border);
}
.fosia-consent__pref {
	display: flex;
	gap: 12px;
	align-items: flex-start;
	padding: 12px 0;
	border-bottom: 1px solid var(--fosia-border);
}
.fosia-consent__pref input[type="checkbox"] {
	-webkit-appearance: checkbox;
	appearance: auto;
	flex: 0 0 auto;
	width: 18px;
	height: 18px;
	margin: 2px 0 0;
	accent-color: var(--fosia-blue);
}
.fosia-consent__pref label { display: block; cursor: pointer; font-size: var(--fosia-fs-small); line-height: 1.5; color: var(--fosia-muted); }
.fosia-consent__pref input:disabled + label { cursor: default; }
.fosia-consent__pref label strong { display: block; color: var(--fosia-ink); font-weight: 650; }
.fosia-consent__actions {
	display: flex;
	flex-wrap: wrap;
	justify-content: flex-end;
	gap: 8px;
	margin-top: var(--fosia-space-4);
}
.fosia-consent .fosia-consent__btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-height: 44px; /* touch target */
	margin: 0;
	padding: 10px 18px;
	border: 1px solid var(--fosia-blue);
	border-radius: var(--fosia-radius);
	background: var(--fosia-blue);
	color: #ffffff;
	font: 600 0.9375rem/1.2 var(--fosia-font);
	cursor: pointer;
	transition: background-color 0.15s var(--fosia-ease), border-color 0.15s var(--fosia-ease);
}
.fosia-consent .fosia-consent__btn:hover { background: var(--fosia-blue-700); border-color: var(--fosia-blue-700); }
.fosia-consent .fosia-consent__btn--ghost {
	background: var(--fosia-bg);
	color: var(--fosia-ink);
	border-color: var(--fosia-border-strong);
}
.fosia-consent .fosia-consent__btn--ghost:hover { background: var(--fosia-bg-subtle); border-color: var(--fosia-ink); }
.fosia-consent .fosia-consent__btn[hidden] { display: none; }
.fosia-consent .fosia-consent__btn:focus-visible { outline: 2px solid var(--fosia-focus); outline-offset: 2px; }
/* Phones (1.3.3): compact card — tighter padding and text, the three buttons on one row
   (stacked full width below 360px), never taller than ~1/3 of the screen until "Customise" opens. */
@media (max-width: 600px) {
	.fosia-consent { left: 8px; right: 8px; bottom: 8px; }
	.fosia-consent__inner { padding: 14px 16px 16px; max-height: calc(100vh - 16px); border-radius: var(--fosia-radius); }
	.fosia-consent .fosia-consent__title { font-size: 1rem; margin-bottom: 4px; }
	.fosia-consent .fosia-consent__text { font-size: 0.875rem; line-height: 1.5; }
	.fosia-consent__prefs { margin-top: 12px; }
	.fosia-consent__pref { padding: 10px 0; }
	.fosia-consent__actions { display: grid; grid-auto-flow: column; grid-auto-columns: minmax(0, 1fr); gap: 6px; margin-top: 12px; }
	.fosia-consent .fosia-consent__btn { min-height: 44px; padding: 8px 6px; font-size: 0.875rem; white-space: nowrap; }
	/* "Customise" open: four buttons, two per row. */
	.fosia-consent__actions:has([data-fosia-consent-action="save"]:not([hidden])) { grid-auto-flow: row; grid-template-columns: 1fr 1fr; }
}
@media (max-width: 359px) {
	.fosia-consent__actions { grid-auto-flow: row; grid-auto-columns: auto; }
}
@media print { .fosia-consent { display: none !important; } }

/* "Cookie settings" ([fosia_cookie_settings]) — looks like the links around it. */
.fosia-cookie-settings {
	display: inline;
	margin: 0;
	padding: 0;
	border: 0;
	background: none;
	color: inherit;
	font: inherit;
	line-height: inherit;
	text-align: left;
	cursor: pointer;
}
.fosia-cookie-settings:hover { text-decoration: underline; text-underline-offset: 3px; }
body.fosia-v2 .fosia-footer .fosia-cookie-settings { color: #d5dbea; }
body.fosia-v2 .fosia-footer .fosia-cookie-settings:hover { color: #ffffff; }

/* ---- YouTube click-to-load (inc/embeds.php) --------------------------- */
.fosia-yt {
	position: relative;
	display: block;
	width: 100%;
	aspect-ratio: 16 / 9;
	overflow: hidden;
	border-radius: var(--fosia-radius-lg);
	background:
		radial-gradient(60% 80% at 85% 0%, rgba(25, 89, 255, 0.35) 0%, rgba(25, 89, 255, 0) 60%),
		var(--fosia-ink);
	color: #ffffff;
	font-family: var(--fosia-font);
}
.fosia-yt .fosia-yt__play {
	position: absolute;
	inset: 0;
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	gap: 14px;
	width: 100%;
	margin: 0;
	padding: 24px 24px 64px;
	border: 0;
	background: transparent;
	color: #ffffff;
	font: 600 1rem/1.4 var(--fosia-font);
	cursor: pointer;
}
.fosia-yt .fosia-yt__icon {
	width: 72px;
	height: 72px;
	border-radius: 50%;
	background: var(--fosia-blue)
		url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%23ffffff'%3E%3Cpath d='M8 5.5v13l11-6.5z'/%3E%3C/svg%3E") 55% center / 30px 30px no-repeat;
	box-shadow: 0 8px 24px rgba(0, 0, 0, 0.35);
	transition: transform 0.15s var(--fosia-ease), background-color 0.15s var(--fosia-ease);
}
.fosia-yt .fosia-yt__play:hover .fosia-yt__icon { transform: scale(1.06); background-color: var(--fosia-blue-700); }
.fosia-yt .fosia-yt__play:focus-visible { outline: 3px solid var(--fosia-focus-on-dark); outline-offset: -6px; }
.fosia-yt .fosia-yt__icon,
.fosia-yt .fosia-yt__title { display: block; }
.fosia-yt .fosia-yt__title { max-width: 36em; text-align: center; }
.fosia-yt .fosia-yt__note {
	display: block;
	position: absolute;
	left: 0;
	right: 0;
	bottom: 0;
	margin: 0;
	padding: 10px 16px;
	background: rgba(0, 0, 0, 0.45);
	color: #dbe4ff;
	font-size: var(--fosia-fs-xs);
	line-height: 1.5;
	text-align: center;
}
.fosia-yt .fosia-yt__note a { color: #ffffff; text-decoration: underline; text-underline-offset: 2px; }
.fosia-yt .fosia-yt__frame { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }

/* =========================================================================
   6. PAGES NOT BUILT BY THE v2 GENERATOR (1.3.3) — WooCommerce (account, shop,
   product, cart, checkout), WordPress search / 404, legacy pages migrated from
   Divi 4. Same tokens and components as the v2 pages.
   ========================================================================= */

/* ---- 6.1 Legacy Divi 4 "block" rows --------------------------------------
 * Pages migrated from Divi 4 (My account, the old ARMember pages…) keep a
 * "block" row with a floated 4_4 column. Divi 5's dynamic CSS only loads the
 * flex grid for them, so the column had no width and the row no clearfix:
 * the footer (overflow hidden = new block formatting context) was laid out
 * BESIDE the floated column (founder's screenshot of /my-account/, 21/10).
 * Contain the floats, give the column its full width, and keep the footer
 * below whatever comes before it. */
body.fosia-v2 #main-content { display: flow-root; }
body.fosia-v2 .et-l--footer { clear: both; }
body.fosia-v2 .et_block_section.et_pb_section { padding: clamp(40px, 4vw + 16px, 80px) 0; }
body.fosia-v2 .et_block_row.et_pb_row {
	display: flow-root;
	width: calc(100% - 32px);
	max-width: var(--fosia-container);
	margin-left: auto;
	margin-right: auto;
	padding: 0;
}
body.fosia-v2 .et_block_row > .et_block_column {
	float: none;
	width: 100%;
	margin-right: 0;
}
/* wpautop puts shortcodes in a <p>: the browser closes it before the <div>, leaving empty paragraphs. */
body.fosia-v2 .et_pb_text_inner > p:empty { display: none; }

/* ---- 6.2 WordPress defaults: no sidebar (inc/layout.php), titles, fields -- */
body.fosia-v2 #main-content .container { padding-top: clamp(40px, 4vw + 16px, 72px); }
body.fosia-v2 #main-content .container::before { display: none; } /* Divi's sidebar divider */
body.fosia-v2.et_no_sidebar #left-area,
body.fosia-v2 #left-area { width: 100%; max-width: 820px; padding: 0 !important; float: none; margin: 0 auto; }
body.fosia-v2.archive #left-area,
body.fosia-v2.post-type-archive #left-area,
body.fosia-v2.search #left-area,
body.fosia-v2.single-fosia_campaign #left-area,
body.fosia-v2.single-fosia_payment_link #left-area { max-width: var(--fosia-container); }
body.fosia-v2 #left-area .entry-title,
body.fosia-v2 #left-area .main_title { font-size: var(--fosia-fs-h1); line-height: var(--fosia-lh-tight); font-weight: 800; margin-bottom: 16px; }
body.fosia-v2 #left-area .entry-content { font-size: 1rem; line-height: var(--fosia-lh-body); color: var(--fosia-text); }
body.fosia-v2 #left-area .entry-content h2 { font-size: 1.5rem; margin: 1.6em 0 0.6em; }
body.fosia-v2 #left-area .entry-content h3 { font-size: 1.125rem; margin: 1.4em 0 0.5em; }
body.fosia-v2 #left-area .et_post_meta_wrapper img { border-radius: var(--fosia-radius-lg); margin: 16px 0; }
/* Tables in plain WordPress content (privacy policy: processors, retention): v2 look, and on
   phones they scroll inside their own box instead of widening the whole page (1.3.4). */
body.fosia-v2 #left-area .entry-content table,
body.fosia-v2 .et_pb_text_inner table:not(.fosia-table) {
	width: 100%;
	margin: 0 0 1.5em;
	border: 1px solid var(--fosia-border);
	border-collapse: separate;
	border-spacing: 0;
	border-radius: var(--fosia-radius);
	font-size: 0.9375rem;
	line-height: 1.5;
}
body.fosia-v2 #left-area .entry-content th,
body.fosia-v2 #left-area .entry-content td,
body.fosia-v2 .et_pb_text_inner table:not(.fosia-table) th,
body.fosia-v2 .et_pb_text_inner table:not(.fosia-table) td { padding: 10px 14px; border: 0; border-bottom: 1px solid var(--fosia-border); text-align: left; vertical-align: top; }
body.fosia-v2 #left-area .entry-content thead th,
body.fosia-v2 .et_pb_text_inner table:not(.fosia-table) thead th { background: var(--fosia-bg-subtle); color: var(--fosia-ink); font-weight: 650; }
body.fosia-v2 #left-area .entry-content tr:last-child td { border-bottom: 0; }
@media (max-width: 767px) {
	body.fosia-v2 #left-area .entry-content table,
	body.fosia-v2 .et_pb_text_inner table:not(.fosia-table) { display: block; max-width: 100%; overflow-x: auto; -webkit-overflow-scrolling: touch; }
	body.fosia-v2 #left-area .entry-content th,
	body.fosia-v2 #left-area .entry-content td { min-width: 140px; }
}
/* Archives (campaign list…): card-like entries, readable titles. */
body.fosia-v2.archive #left-area .et_pb_post,
body.fosia-v2.post-type-archive #left-area .et_pb_post { padding: 0 0 28px; margin: 0 0 28px; border-bottom: 1px solid var(--fosia-border); }
body.fosia-v2.archive #left-area .entry-title,
body.fosia-v2.post-type-archive #left-area .entry-title { font-size: 1.5rem; font-weight: 700; margin: 12px 0 6px; }
body.fosia-v2.archive #left-area .entry-title a,
body.fosia-v2.post-type-archive #left-area .entry-title a { color: var(--fosia-ink); }
body.fosia-v2.archive #left-area .entry-title a:hover,
body.fosia-v2.post-type-archive #left-area .entry-title a:hover { color: var(--fosia-blue); }
body.fosia-v2.archive #left-area .et_pb_post img { border-radius: var(--fosia-radius-lg); }
body.fosia-v2.post-type-archive-fosia_campaign .post-meta,
body.fosia-v2.single-fosia_campaign .post-meta,
body.fosia-v2.single-fosia_payment_link .post-meta { display: none; }

body.fosia-v2 input[type="text"],
body.fosia-v2 input[type="email"],
body.fosia-v2 input[type="tel"],
body.fosia-v2 input[type="number"],
body.fosia-v2 input[type="password"],
body.fosia-v2 input[type="search"],
body.fosia-v2 input[type="url"],
body.fosia-v2 select,
body.fosia-v2 textarea,
body.fosia-v2 button,
body.fosia-v2 .et_pb_search input.et_pb_s,
body.fosia-v2 .et_pb_search input.et_pb_searchsubmit { font-family: var(--fosia-font); }

/* Divi search module (search results template) */
body.fosia-v2 .et_pb_search { border: 1px solid var(--fosia-border-strong) !important; border-radius: var(--fosia-radius) !important; overflow: hidden; background: #fff; }
body.fosia-v2 .et_pb_search input.et_pb_s { font-size: 1rem !important; color: var(--fosia-ink) !important; padding: 12px 14px !important; min-height: 48px; background: #fff !important; }
body.fosia-v2 .et_pb_search input.et_pb_searchsubmit { background: var(--fosia-blue) !important; color: #fff !important; font-weight: 600 !important; font-size: 0.9375rem !important; padding: 0 18px !important; border: 0 !important; min-width: 88px; }
body.fosia-v2.search .et_pb_post .entry-title a,
body.fosia-v2.search .et_pb_post h2 a { color: var(--fosia-ink) !important; }
body.fosia-v2.search .et_pb_post .entry-title a:hover { color: var(--fosia-blue) !important; }
body.fosia-v2.search .et_pb_post { padding-bottom: 20px; margin-bottom: 20px; border-bottom: 1px solid var(--fosia-border); }

/* 404 template: the 100vh section left a phone-sized blank page above the footer. */
body.fosia-v2.error404 .et-l--body .et_pb_section { min-height: 60vh !important; }

/* Divi buttons in the old Theme Builder body layouts (404, search, WooCommerce templates from a
   layout pack) carry the pack's own button settings: they look like v2 primary buttons here.
   2.0.0: limited to Theme Builder bodies and skipped as soon as a Fosia button preset is chosen,
   so a preset picked in the Visual Builder always wins (pages: default preset = Fosia primary). */
body.fosia-v2 .et-l--body .et_pb_button:not(.fosia-btn):not([class*="preset--module--divi-button--fosia"]) {
	display: inline-flex !important;
	align-items: center;
	justify-content: center;
	min-height: 48px;
	padding: 12px 22px !important;
	border: 1px solid var(--fosia-blue) !important;
	border-radius: var(--fosia-radius) !important;
	background: var(--fosia-blue) !important;
	color: #ffffff !important;
	font: 600 1rem/1.25 var(--fosia-font) !important;
	letter-spacing: 0 !important;
	text-transform: none !important;
}
body.fosia-v2 .et-l--body .et_pb_button:not(.fosia-btn):not([class*="preset--module--divi-button--fosia"])::after { display: none !important; }
body.fosia-v2 .et-l--body .et_pb_button:not(.fosia-btn):not([class*="preset--module--divi-button--fosia"]):hover { background: var(--fosia-blue-700) !important; border-color: var(--fosia-blue-700) !important; }

/* ---- 6.3 WooCommerce: buttons, notices, fields ---------------------------- */
body.fosia-v2 .woocommerce a.button,
body.fosia-v2 .woocommerce button.button,
body.fosia-v2 .woocommerce input.button,
body.fosia-v2 .woocommerce #respond input#submit,
body.fosia-v2.woocommerce-page a.button,
body.fosia-v2.woocommerce-page button.button,
body.fosia-v2.woocommerce-page input.button,
body.fosia-v2 #place_order,
body.fosia-v2 .woocommerce-page a.button,
body.fosia-v2 .woocommerce-page button.button,
body.fosia-v2 .wc-block-components-button:not(.is-link),
body.fosia-v2 a.wc-block-components-button:not(.is-link) {
	display: inline-flex !important;
	align-items: center;
	justify-content: center;
	gap: 8px;
	min-height: 48px;
	padding: 12px 22px !important;
	border: 1px solid var(--fosia-blue) !important;
	border-radius: var(--fosia-radius) !important;
	background: var(--fosia-blue) !important;
	color: #ffffff !important;
	font: 600 1rem/1.25 var(--fosia-font) !important;
	letter-spacing: 0 !important;
	text-transform: none !important;
	text-decoration: none !important;
	box-shadow: 0 1px 2px rgba(11, 16, 32, 0.12);
	transition: background-color 0.15s var(--fosia-ease), border-color 0.15s var(--fosia-ease);
}
body.fosia-v2 .woocommerce a.button::after,
body.fosia-v2 .woocommerce button.button::after,
body.fosia-v2 .woocommerce input.button::after,
body.fosia-v2 .woocommerce-page a.button::after,
body.fosia-v2 .woocommerce-page button.button::after,
body.fosia-v2.woocommerce-page a.button::after,
body.fosia-v2.woocommerce-page button.button::after,
body.fosia-v2 #place_order::after { display: none !important; }
body.fosia-v2 .woocommerce a.button:hover,
body.fosia-v2 .woocommerce button.button:hover,
body.fosia-v2 .woocommerce input.button:hover,
body.fosia-v2 .woocommerce-page a.button:hover,
body.fosia-v2 .woocommerce-page button.button:hover,
body.fosia-v2.woocommerce-page a.button:hover,
body.fosia-v2.woocommerce-page button.button:hover,
body.fosia-v2 #place_order:hover,
body.fosia-v2 .wc-block-components-button:not(.is-link):hover {
	background: var(--fosia-blue-700) !important;
	border-color: var(--fosia-blue-700) !important;
	color: #ffffff !important;
}
/* Secondary actions: update cart, apply coupon, view cart, cancel. */
body.fosia-v2 .woocommerce button[name="update_cart"],
body.fosia-v2 .woocommerce button[name="apply_coupon"],
body.fosia-v2.woocommerce-page button[name="update_cart"],
body.fosia-v2.woocommerce-page button[name="apply_coupon"],
body.fosia-v2 .woocommerce a.added_to_cart,
body.fosia-v2 .woocommerce .woocommerce-MyAccount-content a.button:not(.alt),
body.fosia-v2 .woocommerce a.button.wc-backward {
	background: #ffffff !important;
	color: var(--fosia-ink) !important;
	border-color: var(--fosia-border-strong) !important;
	box-shadow: var(--fosia-shadow-xs);
}
body.fosia-v2 .woocommerce button[name="update_cart"]:hover,
body.fosia-v2 .woocommerce button[name="apply_coupon"]:hover,
body.fosia-v2.woocommerce-page button[name="update_cart"]:hover,
body.fosia-v2.woocommerce-page button[name="apply_coupon"]:hover,
body.fosia-v2 .woocommerce a.added_to_cart:hover,
body.fosia-v2 .woocommerce .woocommerce-MyAccount-content a.button:not(.alt):hover,
body.fosia-v2 .woocommerce a.button.wc-backward:hover {
	background: var(--fosia-bg-subtle) !important;
	border-color: var(--fosia-ink) !important;
	color: var(--fosia-ink) !important;
}
body.fosia-v2 .woocommerce button.button:disabled,
body.fosia-v2.woocommerce-page button.button:disabled { opacity: 0.55 !important; cursor: not-allowed; }

/* Notices: soft callouts instead of Divi's solid blue bar. */
body.fosia-v2 .woocommerce-message,
body.fosia-v2 .woocommerce-info,
body.fosia-v2 .woocommerce-error,
body.fosia-v2 .woocommerce-notices-wrapper .woocommerce-message,
body.fosia-v2 .woocommerce .woocommerce-info {
	position: relative;
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 8px 16px;
	margin: 0 0 24px !important;
	padding: 14px 18px !important;
	list-style: none;
	border: 1px solid var(--fosia-blue-100) !important;
	border-radius: var(--fosia-radius) !important;
	background: var(--fosia-blue-50) !important;
	color: var(--fosia-blue-900) !important;
	font: 500 0.9375rem/1.5 var(--fosia-font) !important;
	box-shadow: none !important;
}
body.fosia-v2 .woocommerce-message::before,
body.fosia-v2 .woocommerce-info::before,
body.fosia-v2 .woocommerce-error::before { display: none !important; }
body.fosia-v2 .woocommerce-message { background: var(--fosia-success-bg) !important; border-color: #bfe9d6 !important; color: #065f46 !important; }
body.fosia-v2 .woocommerce-error { display: block; background: #fef2f2 !important; border-color: #fecaca !important; color: #991b1b !important; }
body.fosia-v2 .woocommerce-error li { margin: 0; padding: 0; }
body.fosia-v2 .woocommerce-message a:not(.button),
body.fosia-v2 .woocommerce-info a:not(.button),
body.fosia-v2 .woocommerce-error a:not(.button) { color: inherit !important; font-weight: 650; text-decoration: underline; text-underline-offset: 3px; }
body.fosia-v2 .woocommerce-message .button,
body.fosia-v2 .woocommerce-info .button { order: 2; margin-left: auto; min-height: 40px; padding: 8px 16px !important; font-size: 0.9375rem !important; }

/* Fields (the 1.2.0 rules in style.css only set the border; Divi paints them grey #eee). */
body.fosia-v2 .woocommerce form .form-row,
body.fosia-v2.woocommerce-page .form-row { padding: 0; margin: 0 0 18px; }
body.fosia-v2 .woocommerce form .form-row label,
body.fosia-v2.woocommerce-page .form-row label {
	display: block;
	margin: 0 0 6px;
	font: 600 0.9375rem/1.4 var(--fosia-font);
	color: var(--fosia-ink);
}
body.fosia-v2 .form-row .required { color: var(--fosia-danger) !important; text-decoration: none; }
body.fosia-v2 .woocommerce form .form-row input.input-text,
body.fosia-v2 .woocommerce form .form-row textarea,
body.fosia-v2 .woocommerce form .form-row select,
body.fosia-v2.woocommerce-page .form-row input.input-text,
body.fosia-v2.woocommerce-page .form-row textarea,
body.fosia-v2.woocommerce-page .form-row select,
body.fosia-v2 .select2-container .select2-selection--single,
body.fosia-v2 .woocommerce-cart table.cart td.actions .coupon .input-text {
	width: 100%;
	min-height: 48px;
	padding: 12px 14px !important;
	border: 1px solid var(--fosia-border-strong) !important;
	border-radius: var(--fosia-radius-sm) !important;
	background: #ffffff !important;
	color: var(--fosia-ink) !important;
	font: 400 1rem/1.4 var(--fosia-font) !important;
	box-shadow: var(--fosia-shadow-xs);
	box-sizing: border-box;
}
body.fosia-v2 .select2-container .select2-selection--single .select2-selection__rendered { padding: 0; line-height: 22px; color: var(--fosia-ink); }
body.fosia-v2 .select2-container .select2-selection--single .select2-selection__arrow { top: 50%; transform: translateY(-50%); right: 8px; }
body.fosia-v2 .woocommerce form .form-row input.input-text:focus,
body.fosia-v2 .woocommerce form .form-row textarea:focus,
body.fosia-v2 .woocommerce form .form-row select:focus,
body.fosia-v2.woocommerce-page .form-row input.input-text:focus,
body.fosia-v2.woocommerce-page .form-row select:focus { border-color: var(--fosia-blue) !important; outline: 2px solid var(--fosia-focus) !important; outline-offset: 1px; box-shadow: var(--fosia-ring); }
body.fosia-v2 .woocommerce form .form-row input[type="checkbox"],
body.fosia-v2 .woocommerce input[type="checkbox"].woocommerce-form__input-checkbox { width: 18px; height: 18px; margin: 0 8px 0 0; accent-color: var(--fosia-blue); vertical-align: -3px; }
/* Show-password eye: a 44px target inside the field. */
body.fosia-v2 .woocommerce form .password-input { display: block; position: relative; }
body.fosia-v2 .woocommerce form .password-input input.input-text { padding-right: 52px !important; }
body.fosia-v2 .woocommerce form .show-password-input {
	position: absolute;
	top: 50% !important;
	right: 2px !important;
	transform: translateY(-50%);
	display: flex;
	align-items: center;
	justify-content: center;
	width: 44px;
	height: 44px;
	margin: 0;
	padding: 0;
	border: 0;
	border-radius: var(--fosia-radius-sm);
	background: transparent;
	cursor: pointer;
}
body.fosia-v2 .woocommerce form .show-password-input::after { position: static !important; margin: 0 !important; }

/* ---- 6.4 My account: log in, register, lost password, dashboard ---------- */
body.fosia-v2.woocommerce-account:not(.logged-in) #main-content .woocommerce,
body.fosia-v2.woocommerce-lost-password #main-content .woocommerce {
	max-width: 460px;
	margin: 0 auto;
}
body.fosia-v2.woocommerce-account:not(.logged-in) #main-content .woocommerce:has(.u-columns) { max-width: 980px; }
body.fosia-v2.woocommerce-account .woocommerce > h2,
body.fosia-v2.woocommerce-account .u-column1 > h2,
body.fosia-v2.woocommerce-account .u-column2 > h2 {
	margin: 0 0 16px;
	font-size: clamp(1.75rem, 1.4rem + 1.4vw, 2.25rem);
	font-weight: 800;
	letter-spacing: -0.025em;
	color: var(--fosia-ink);
}
body.fosia-v2 .woocommerce form.woocommerce-form-login,
body.fosia-v2 .woocommerce form.woocommerce-form-register,
body.fosia-v2 .woocommerce form.lost_reset_password,
body.fosia-v2 .woocommerce form.woocommerce-ResetPassword {
	margin: 0 !important;
	padding: clamp(20px, 3vw, 32px) !important;
	border: 1px solid var(--fosia-border) !important;
	border-radius: var(--fosia-radius-lg) !important;
	background: #ffffff;
	box-shadow: var(--fosia-shadow-sm);
	text-align: left;
}
body.fosia-v2 .woocommerce form.lost_reset_password > p:first-child,
body.fosia-v2 .woocommerce form.woocommerce-ResetPassword > p:first-child { margin: 0 0 18px; color: var(--fosia-muted); font-size: 0.9375rem; line-height: 1.6; }
body.fosia-v2 .woocommerce form .form-row-first,
body.fosia-v2 .woocommerce form .form-row-last,
body.fosia-v2 .woocommerce form.lost_reset_password .form-row { width: 100%; float: none; }
/* Remember me above a full-width "Log in" button. */
body.fosia-v2 .woocommerce form.woocommerce-form-login .form-row:has(.woocommerce-form-login__submit) { display: flex; flex-direction: column; align-items: stretch; gap: 16px; margin-bottom: 8px; }
body.fosia-v2 .woocommerce form.woocommerce-form-login .woocommerce-form-login__rememberme { display: inline-flex; align-items: center; min-height: 32px; margin: 0; font-weight: 500; color: var(--fosia-text); cursor: pointer; }
body.fosia-v2 .woocommerce form .woocommerce-form-login__submit,
body.fosia-v2 .woocommerce form.woocommerce-form-register button[type="submit"],
body.fosia-v2 .woocommerce form.lost_reset_password button[type="submit"],
body.fosia-v2 .woocommerce form.woocommerce-ResetPassword button[type="submit"] { width: 100%; float: none !important; margin: 0 !important; }
body.fosia-v2 .woocommerce form .lost_password { margin: 4px 0 0; text-align: center; }
body.fosia-v2 .woocommerce form .lost_password a { display: inline-flex; align-items: center; min-height: 40px; font-weight: 600; }
body.fosia-v2 .woocommerce .woocommerce-privacy-policy-text p { font-size: var(--fosia-fs-small); color: var(--fosia-muted); }
body.fosia-v2 .woocommerce .u-columns.col2-set { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 32px; }
body.fosia-v2 .woocommerce .u-columns.col2-set::before,
body.fosia-v2 .woocommerce .u-columns.col2-set::after { display: none; }
body.fosia-v2 .woocommerce .u-columns.col2-set .u-column1,
body.fosia-v2 .woocommerce .u-columns.col2-set .u-column2 { width: auto; float: none; }
@media (max-width: 767px) { body.fosia-v2 .woocommerce .u-columns.col2-set { grid-template-columns: 1fr; } }

/* Logged-in dashboard: navigation card + content. */
body.fosia-v2.woocommerce-account.logged-in #main-content .woocommerce { display: grid; grid-template-columns: 240px minmax(0, 1fr); gap: 40px; align-items: start; }
body.fosia-v2.woocommerce-account.logged-in #main-content .woocommerce > .woocommerce-notices-wrapper { grid-column: 1 / -1; }
body.fosia-v2 .woocommerce-account .woocommerce-MyAccount-navigation,
body.fosia-v2 .woocommerce-account .woocommerce-MyAccount-content { width: auto; float: none; }
body.fosia-v2 .woocommerce-MyAccount-navigation ul { list-style: none; margin: 0; padding: 8px; border: 1px solid var(--fosia-border); border-radius: var(--fosia-radius-lg); background: #fff; }
body.fosia-v2 .woocommerce-MyAccount-navigation li { margin: 0; padding: 0; list-style: none; }
body.fosia-v2 .woocommerce-MyAccount-navigation li a { display: flex; align-items: center; min-height: 44px; padding: 8px 12px; border-radius: var(--fosia-radius-sm); color: var(--fosia-ink); font-weight: 550; }
body.fosia-v2 .woocommerce-MyAccount-navigation li a:hover { background: var(--fosia-bg-subtle); }
body.fosia-v2 .woocommerce-MyAccount-navigation li.is-active a { background: var(--fosia-blue-50); color: var(--fosia-blue-800); }
@media (max-width: 980px) {
	body.fosia-v2.woocommerce-account.logged-in #main-content .woocommerce { grid-template-columns: minmax(0, 1fr); gap: 24px; }
	body.fosia-v2 .woocommerce-MyAccount-navigation ul { display: flex; gap: 4px; overflow-x: auto; -webkit-overflow-scrolling: touch; }
	body.fosia-v2 .woocommerce-MyAccount-navigation li a { white-space: nowrap; }
}
body.fosia-v2 .woocommerce-MyAccount-content table.shop_table { border-radius: var(--fosia-radius); }

/* ---- 6.5 Shop / product archive / single product ---------------------- */
body.fosia-v2 ul.products li.product {
	padding: 16px !important;
	border: 1px solid var(--fosia-border);
	border-radius: var(--fosia-radius-lg);
	background: #ffffff;
	box-shadow: var(--fosia-shadow-sm);
	transition: box-shadow 0.2s var(--fosia-ease), border-color 0.2s var(--fosia-ease);
}
body.fosia-v2 ul.products li.product:hover { box-shadow: var(--fosia-shadow); border-color: var(--fosia-border-strong); }
body.fosia-v2 ul.products li.product a img { border-radius: var(--fosia-radius); background: var(--fosia-bg-subtle); margin-bottom: 14px !important; }
body.fosia-v2 ul.products li.product .woocommerce-loop-product__title { font: 650 1.0625rem/1.35 var(--fosia-font) !important; color: var(--fosia-ink) !important; padding: 0 0 6px !important; }
body.fosia-v2 ul.products li.product .price { color: var(--fosia-ink) !important; font: 700 1rem/1.4 var(--fosia-font) !important; }
body.fosia-v2 ul.products li.product .button { margin-top: 12px !important; width: 100%; }
body.fosia-v2 .woocommerce-result-count { color: var(--fosia-muted); font-size: 0.9375rem; }
body.fosia-v2 .woocommerce-ordering select {
	min-height: 44px;
	padding: 8px 36px 8px 12px !important;
	border: 1px solid var(--fosia-border-strong) !important;
	border-radius: var(--fosia-radius-sm) !important;
	background-color: #fff !important;
	color: var(--fosia-ink) !important;
	font: 500 0.9375rem/1.3 var(--fosia-font) !important;
}
body.fosia-v2 .woocommerce-breadcrumb { color: var(--fosia-muted) !important; font-size: 0.9375rem !important; }
body.fosia-v2 .woocommerce-breadcrumb a { display: inline-block; padding: 8px 0; color: var(--fosia-muted) !important; }
body.fosia-v2 .woocommerce-breadcrumb a:hover { color: var(--fosia-blue) !important; }
body.fosia-v2.single-product .product_title,
body.fosia-v2 .et_pb_wc_title h1 { font-size: var(--fosia-fs-h1) !important; line-height: var(--fosia-lh-tight) !important; font-weight: 800 !important; letter-spacing: -0.03em; color: var(--fosia-ink) !important; }
body.fosia-v2 div.product p.price,
body.fosia-v2 div.product span.price,
body.fosia-v2 .et_pb_wc_price .price { color: var(--fosia-ink) !important; font: 800 2rem/1.1 var(--fosia-font) !important; letter-spacing: -0.03em; }
body.fosia-v2 div.product form.cart { display: flex; flex-wrap: wrap; gap: 12px; align-items: center; }
body.fosia-v2 div.product form.cart .single_add_to_cart_button { min-width: 200px; }
body.fosia-v2 .quantity input.qty { min-height: 48px; width: 72px; border: 1px solid var(--fosia-border-strong) !important; border-radius: var(--fosia-radius-sm) !important; background: #fff !important; color: var(--fosia-ink) !important; font: 500 1rem var(--fosia-font) !important; }
body.fosia-v2 div.product .product_meta { color: var(--fosia-muted); font-size: 0.9375rem; }
body.fosia-v2 div.product .woocommerce-product-details__short-description,
body.fosia-v2 .et_pb_wc_description { color: var(--fosia-text); }
body.fosia-v2 .et_pb_wc_description h2,
body.fosia-v2 .et_pb_wc_description h3,
body.fosia-v2 .woocommerce-Tabs-panel h2 { font-size: 1.375rem !important; margin: 1.4em 0 0.5em !important; }
body.fosia-v2 .et_pb_wc_description ul,
body.fosia-v2 .woocommerce-Tabs-panel ul { padding-left: 1.3em !important; margin-bottom: 1em; }
body.fosia-v2 .et_pb_wc_description li { margin-bottom: 0.35em; }
@media (max-width: 767px) {
	body.fosia-v2 div.product form.cart .single_add_to_cart_button { width: 100%; }
	body.fosia-v2 div.product p.price,
	body.fosia-v2 .et_pb_wc_price .price { font-size: 1.75rem !important; }
}

/* ---- 6.6 Cart and checkout (Divi WooCommerce modules) ------------------- */
body.fosia-v2 table.shop_table {
	border: 1px solid var(--fosia-border) !important;
	border-radius: var(--fosia-radius-lg) !important;
	border-collapse: separate !important;
	background: #ffffff;
	overflow: hidden;
	font-size: 0.9375rem;
}
body.fosia-v2 table.shop_table th { font-weight: 650; color: var(--fosia-ink); background: var(--fosia-bg-subtle); }
body.fosia-v2 table.shop_table td,
body.fosia-v2 table.shop_table th { padding: 14px 16px !important; border-top-color: var(--fosia-border) !important; }
body.fosia-v2 table.shop_table td.product-name a { color: var(--fosia-ink); font-weight: 600; }
body.fosia-v2 table.cart img { width: 56px; border-radius: var(--fosia-radius-sm); }
body.fosia-v2 a.remove { display: inline-flex !important; align-items: center; justify-content: center; width: 40px !important; height: 40px !important; font-size: 1.5rem !important; color: var(--fosia-danger) !important; border-radius: 50%; }
body.fosia-v2 a.remove:hover { background: #fef2f2 !important; color: var(--fosia-danger) !important; }
body.fosia-v2 .cart_totals h2,
body.fosia-v2.woocommerce-checkout h3,
body.fosia-v2 #order_review_heading { font-size: 1.25rem !important; font-weight: 700 !important; color: var(--fosia-ink) !important; margin-bottom: 12px !important; }
body.fosia-v2 .wc-proceed-to-checkout a.checkout-button { width: 100%; font-size: 1.0625rem !important; }
body.fosia-v2 #payment { background: var(--fosia-bg-subtle) !important; border: 1px solid var(--fosia-border); border-radius: var(--fosia-radius-lg) !important; }
/* Divi's "Checkout payment info" module paints a grey box (preset) around #payment: make it the v2 card. */
body.fosia-v2 .et_pb_wc_checkout_payment_info.et_pb_module {
	background: var(--fosia-bg-subtle) !important;
	border: 1px solid var(--fosia-border) !important;
	border-radius: var(--fosia-radius-lg) !important;
	padding: 4px !important;
}
body.fosia-v2 .et_pb_wc_checkout_payment_info #payment { border: 0; }
/* Selects with appearance:none (Divi) lost their arrow: draw one. */
body.fosia-v2 .form-row select,
body.fosia-v2 #payment select,
body.fosia-v2 .woocommerce-ordering select {
	-webkit-appearance: none;
	appearance: none;
	padding-right: 40px !important;
	text-overflow: ellipsis;
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20' fill='%235b6478'%3E%3Cpath d='M5.3 7.3a1 1 0 0 1 1.4 0L10 10.6l3.3-3.3a1 1 0 1 1 1.4 1.4l-4 4a1 1 0 0 1-1.4 0l-4-4a1 1 0 0 1 0-1.4Z'/%3E%3C/svg%3E") !important;
	background-repeat: no-repeat !important;
	background-position: right 12px center !important;
	background-size: 18px 18px !important;
}
body.fosia-v2 #payment div.payment_box select {
	padding: 12px 40px 12px 14px !important;
	border: 1px solid var(--fosia-border-strong) !important;
	border-radius: var(--fosia-radius-sm) !important;
	background-color: #ffffff !important;
	color: var(--fosia-ink) !important;
	font-family: var(--fosia-font) !important;
}
body.fosia-v2 #payment ul.payment_methods { padding: 16px !important; border-bottom-color: var(--fosia-border) !important; }
body.fosia-v2 #payment ul.payment_methods li { font-size: 1rem; line-height: 1.5; }
body.fosia-v2 #payment ul.payment_methods li label { font-weight: 650; color: var(--fosia-ink); }
body.fosia-v2 #payment div.payment_box { background: #ffffff !important; border: 1px solid var(--fosia-border); border-radius: var(--fosia-radius) !important; color: var(--fosia-text) !important; font-size: 0.9375rem; padding: 16px !important; }
body.fosia-v2 #payment div.payment_box::before { border-bottom-color: #ffffff !important; }
body.fosia-v2 #payment div.payment_box input,
body.fosia-v2 #payment div.payment_box select { width: 100%; min-height: 48px; font-size: 1rem !important; }
body.fosia-v2 #payment div.form-row.place-order { padding: 16px !important; }
body.fosia-v2 #payment #place_order { width: 100%; float: none; font-size: 1.0625rem !important; min-height: 52px; }
body.fosia-v2 .woocommerce-checkout .woocommerce-terms-and-conditions-wrapper { font-size: var(--fosia-fs-small); color: var(--fosia-muted); }
/* Coupon: label, field and button on one line (the 48px field rule made the field full width). */
body.fosia-v2 table.cart td.actions .coupon { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
body.fosia-v2 table.cart td.actions .coupon label { margin: 0; font-weight: 600; color: var(--fosia-ink); }
body.fosia-v2 table.cart td.actions .coupon .input-text { width: 200px !important; margin: 0 !important; float: none !important; }
body.fosia-v2 table.cart td.actions .coupon .button { margin: 0 !important; float: none !important; }
body.fosia-v2 #payment .payment_box .description,
body.fosia-v2 #payment .payment_box small { font-size: 0.875rem !important; line-height: 1.5 !important; }
@media (max-width: 767px) {
	/* WooCommerce's responsive cart table: rows become cards. */
	body.fosia-v2 table.shop_table_responsive tr td,
	body.fosia-v2 .woocommerce-page table.shop_table_responsive tr td { padding: 10px 14px !important; }
	body.fosia-v2 table.cart td.actions .coupon { flex-direction: column; align-items: stretch; }
	body.fosia-v2 table.cart td.actions .coupon .input-text,
	body.fosia-v2 table.cart td.actions .button { width: 100% !important; float: none !important; margin: 0 0 8px !important; }
}

/* ---- 6.7 Hydra Booking (support page calendar) in the v2 palette -------- */
body.fosia-v2 {
	--tfhb-primary-color: var(--fosia-blue);
	--tfhb-primary-hover-color: var(--fosia-blue-700);
	--tfhb-secondary-color: var(--fosia-ink);
	--tfhb-secondary-hover-color: var(--fosia-blue-50);
	--tfhb-paragraph-color: var(--fosia-text);
	--tfhb-surface-background-color: var(--fosia-blue-50);
	--tfhb-surface-primary-color: var(--fosia-blue-200);
	--tfhb-text-title-color: var(--fosia-ink);
}
body.fosia-v2 .tfhb-meeting-box { font-family: var(--fosia-font); max-width: 100%; }
body.fosia-v2 .tfhb-meeting-box .tfhb-meeting-card { border-color: var(--fosia-border) !important; border-radius: var(--fosia-radius-lg) !important; box-shadow: var(--fosia-shadow-sm); }
/* The host banner stretched the logo as a cover photo (cropped "FosiaPay" behind the name). */
body.fosia-v2 .tfhb-meeting-box .tfhb-host-info { background-image: none !important; background-color: var(--fosia-bg-tint) !important; }
body.fosia-v2 .tfhb-meeting-box .tfhb-host-info::before,
body.fosia-v2 .tfhb-meeting-box .tfhb-host-info::after { display: none !important; }
body.fosia-v2 .tfhb-meeting-box .tfhb-host-name h3 { color: var(--fosia-ink) !important; font-family: var(--fosia-font); }
body.fosia-v2 .tfhb-meeting-box .tfhb-host-profile img { background: #fff; border: 1px solid var(--fosia-border); object-fit: contain; }
body.fosia-v2 .tfhb-meeting-box h2,
body.fosia-v2 .tfhb-meeting-box h3 { font-family: var(--fosia-font) !important; letter-spacing: -0.01em; }

/* ---- 6.8 Product reviews / comment form --------------------------------- */
body.fosia-v2 #respond input[type="text"],
body.fosia-v2 #respond input[type="email"],
body.fosia-v2 #respond input[type="url"],
body.fosia-v2 #respond textarea,
body.fosia-v2 .comment-form input[type="text"],
body.fosia-v2 .comment-form input[type="email"],
body.fosia-v2 .comment-form textarea {
	width: 100%;
	min-height: 48px;
	padding: 12px 14px !important;
	border: 1px solid var(--fosia-border-strong) !important;
	border-radius: var(--fosia-radius-sm) !important;
	background: #ffffff !important;
	color: var(--fosia-ink) !important;
	font: 400 1rem/1.4 var(--fosia-font) !important;
	box-sizing: border-box;
}
body.fosia-v2 #respond input:focus,
body.fosia-v2 #respond textarea:focus { border-color: var(--fosia-blue) !important; outline: 2px solid var(--fosia-focus) !important; outline-offset: 1px; }
body.fosia-v2 #respond label { font: 600 0.9375rem/1.4 var(--fosia-font); color: var(--fosia-ink); }
body.fosia-v2 #respond .comment-notes,
body.fosia-v2 #respond .comment-form-cookies-consent label { color: var(--fosia-muted); font-size: 0.9375rem; font-weight: 400; }
body.fosia-v2 #respond .stars a { color: var(--fosia-blue); }
body.fosia-v2 #respond .form-submit input#submit,
body.fosia-v2 #respond .form-submit .submit {
	min-height: 48px;
	padding: 12px 22px !important;
	border: 1px solid var(--fosia-blue) !important;
	border-radius: var(--fosia-radius) !important;
	background: var(--fosia-blue) !important;
	color: #ffffff !important;
	font: 600 1rem/1.25 var(--fosia-font) !important;
}
/* "Additional information" module with nothing to show (no attributes). */
body.fosia-v2 .et_pb_wc_additional_info:not(:has(table)),
body.fosia-v2 .et_pb_wc_additional_info:has(table:empty) { display: none; }
body.fosia-v2 .tfhb-btn { font-family: var(--fosia-font) !important; font-size: 0.9375rem !important; min-height: 40px; }

/* =========================================================================
 * 7. Sales components (1.3.7) — generator v2 + mu-plugin fosia-buy-links.php
 *    Yearly / Lifetime switch, founders deal, buy notice, WhatsApp button,
 *    grouped comparison table.
 *    Without JavaScript: both prices and both buy buttons of a card show and
 *    the switch stays a sentence. The mu-plugin script builds the switch and
 *    sets html[data-fosia-billing="annual|lifetime"].
 * ====================================================================== */

/* ---- 7.1 Yearly / Lifetime switch ---------------------------------------- */
body.fosia-v2 .fosia-billing-wrap { text-align: center; }
body.fosia-v2 .fosia-billing-toggle { display: flex; justify-content: center; }
body.fosia-v2 .fosia-billing-nojs,
body.fosia-v2 .fosia-billing-note { font-size: var(--fosia-fs-small) !important; color: var(--fosia-muted); margin: 0; }
body.fosia-v2 .fosia-billing-note { margin-top: 12px; }
body.fosia-v2 .fosia-billing {
	display: inline-flex;
	gap: 4px;
	padding: 4px;
	border-radius: var(--fosia-radius-pill);
	background: var(--fosia-bg-subtle);
	border: 1px solid var(--fosia-border);
}
body.fosia-v2 .fosia-billing__btn {
	font: 600 1rem/1.2 var(--fosia-font);
	min-height: 44px;
	padding: 10px 20px;
	border: 0;
	border-radius: var(--fosia-radius-pill);
	background: transparent;
	color: var(--fosia-text);
	cursor: pointer;
	display: inline-flex;
	align-items: center;
	gap: 8px;
	transition: background-color 0.15s var(--fosia-ease), color 0.15s var(--fosia-ease);
}
body.fosia-v2 .fosia-billing__btn:hover { color: var(--fosia-ink); background: #ffffff; }
body.fosia-v2 .fosia-billing__btn[aria-pressed="true"] { background: var(--fosia-ink); color: #ffffff; box-shadow: var(--fosia-shadow-sm); }
body.fosia-v2 .fosia-billing__btn:focus-visible { outline: 3px solid var(--fosia-focus); outline-offset: 2px; }
body.fosia-v2 .fosia-billing__hint { font-size: 0.875rem; font-weight: 500; color: var(--fosia-success-text); }
body.fosia-v2 .fosia-billing__btn[aria-pressed="true"] .fosia-billing__hint { color: #a7f3d0; }

/* ---- 7.2 Two prices / two buttons per card ------------------------------ */
html[data-fosia-billing="annual"] body.fosia-v2 .fosia-bill--lifetime,
html[data-fosia-billing="lifetime"] body.fosia-v2 .fosia-bill--annual { display: none !important; }
/* No JS: the lifetime price is a second, smaller line ("or $59 once…") */
html:not([data-fosia-billing]) body.fosia-v2 .fosia-price p.fosia-bill--lifetime {
	font-size: 1.25rem !important;
	font-weight: 700;
	letter-spacing: -0.01em;
	margin-top: 6px !important;
}
html:not([data-fosia-billing]) body.fosia-v2 .fosia-price p.fosia-bill--lifetime::before { content: "or "; font-weight: 500; color: var(--fosia-muted); }
body.fosia-v2 .fosia-price-card .fosia-buy { width: 100%; }
body.fosia-v2 .fosia-price-card .fosia-buy .et_pb_button_module_wrapper { margin-top: 0; width: 100%; }
html:not([data-fosia-billing="lifetime"]) body.fosia-v2 .fosia-price-card .fosia-buy.fosia-bill--annual,
html[data-fosia-billing="lifetime"] body.fosia-v2 .fosia-price-card .fosia-buy.fosia-bill--lifetime { margin-top: auto; }
body.fosia-v2 .fosia-price-card.et_pb_group { display: flex; flex-direction: column; gap: 16px; }

/* ---- 7.3 Founders deal --------------------------------------------------- */
/* Founders card border: preset "Price card (founders)". */
body.fosia-v2 .fosia-price-card .fosia-price p.fosia-was {
	font-size: var(--fosia-fs-small) !important;
	font-weight: 500;
	letter-spacing: 0;
	color: var(--fosia-muted);
	margin-top: 6px !important;
}
body.fosia-v2 .fosia-price p.fosia-was del { text-decoration: line-through; }
body.fosia-v2 p.fosia-founders-left {
	margin: 0;
	padding: 10px 12px;
	border-radius: var(--fosia-radius);
	background: var(--fosia-warning-bg);
	color: #7c2d12;
	font-size: var(--fosia-fs-small) !important;
	line-height: 1.45;
}
body.fosia-v2 .fosia-founders-left__text { display: block; }
body.fosia-v2 .fosia-founders-left__text strong { font-size: 1.0625rem; color: var(--fosia-ink); }
body.fosia-v2 .fosia-meter { display: block; height: 6px; margin-top: 8px; border-radius: var(--fosia-radius-pill); background: rgba(124, 45, 18, 0.15); overflow: hidden; }
body.fosia-v2 .fosia-meter > span { display: block; height: 100%; border-radius: inherit; background: var(--fosia-warning); }
body.fosia-v2 .fosia-founders-soldout[hidden] { display: none !important; }
body.fosia-v2 .fosia-founders-soldout { font-weight: 600; color: var(--fosia-ink); }
body.fosia-v2 .fosia-founders-teaser,
body.fosia-v2 .fosia-founders-teaser p { font-size: var(--fosia-fs-small) !important; color: var(--fosia-text); }
body.fosia-v2 .fosia-founders-teaser a.fosia-link-arrow { margin-left: 6px; }
@media (prefers-reduced-motion: reduce) { body.fosia-v2 .fosia-billing__btn { transition: none; } }

/* Crowdfunding page: free mode / licence / founders in one row (3, then 1 + 2, then 1) */
@media (max-width: 1179px) {
	body.fosia-v2 .fosia-cf-pricing.et_pb_row { flex-wrap: wrap !important; }
	body.fosia-v2 .fosia-cf-pricing > .et_pb_column:first-child { width: 100% !important; flex: 0 0 100% !important; }
	body.fosia-v2 .fosia-cf-pricing > .et_pb_column:not(:first-child) { width: calc(50% - 10px) !important; flex: 0 0 calc(50% - 10px) !important; }
}
@media (max-width: 767px) {
	body.fosia-v2 .fosia-cf-pricing > .et_pb_column:not(:first-child) { width: 100% !important; flex-basis: 100% !important; }
}

/* ---- 7.4 Notice after a refused /buy/ link (printed by the mu-plugin) ---- */
.fosia-buy-notice { font-family: var(--fosia-font, Inter, system-ui, sans-serif); font-weight: 500; position: relative; z-index: 10; }

/* ---- 7.5 WhatsApp button: preset "Button WhatsApp" (green + ink text, 10.2:1). ---- */

/* ---- 7.6 Comparison table: group rows ----------------------------------- */
body.fosia-v2 table.fosia-table tr.fosia-table__group th {
	position: static !important;
	max-width: none !important;
	box-shadow: none !important;
	background: var(--fosia-bg-subtle) !important;
	text-align: left;
	padding-top: 16px;
	font-size: 0.875rem;
	font-weight: 700;
	letter-spacing: 0.04em;
	text-transform: uppercase;
	color: var(--fosia-muted);
}
body.fosia-v2 table.fosia-table tr.fosia-table__group th span { position: sticky; left: 12px; }

/* ---- 7.7 ARMember forms (login, register, lost password, profile, password) ----
 * ARMember is the site's login / registration / membership system: its pages stay as they are,
 * only the look follows v2. ARMember prints per-form CSS inline (.arm_form_<id>, Poppins, 550 px
 * card, a forgot-password link placed with margin: -132px 0 0 315px !important…), hence the
 * body-scoped selectors and !important. Mobile first; colours AA on white. */
body.fosia-v2 .arm-form-container { width: 100%; box-sizing: border-box; }
body.fosia-v2 .arm-form-container form.arm_form.arm-default-form:not(.arm_admin_member_form) {
	width: 100% !important;
	max-width: 480px !important;
	margin: 16px auto !important;
	float: none !important;
	box-sizing: border-box;
	background: #ffffff !important;
	border: 1px solid var(--fosia-border) !important;
	border-radius: var(--fosia-radius-lg) !important;
	box-shadow: var(--fosia-shadow);
	padding: 24px 18px !important;
	font-family: var(--fosia-font) !important;
}
@media (min-width: 600px) {
	body.fosia-v2 .arm-form-container form.arm_form.arm-default-form:not(.arm_admin_member_form) { padding: 36px 32px !important; margin: 32px auto !important; }
}
body.fosia-v2 .arm-form-container .arm_form .arm_editor_form_fileds_wrapper,
body.fosia-v2 .arm-form-container .arm_form_message_container.arm_editor_form_fileds_wrapper { padding: 0 !important; }
body.fosia-v2 .arm_form .arm-df__heading .arm-df__heading-text {
	font-family: var(--fosia-font) !important;
	color: var(--fosia-ink) !important;
	font-size: 1.5rem !important;
	font-weight: 700 !important;
	letter-spacing: -0.02em;
	line-height: 1.25;
}
body.fosia-v2 .arm_form,
body.fosia-v2 .arm_form label,
body.fosia-v2 .arm_form .arm-df__label-text,
body.fosia-v2 .arm_form .arm_form_field_label_text,
body.fosia-v2 .arm_form .arm-df__checkbox,
body.fosia-v2 .arm_form .arm_forgot_password_description {
	font-family: var(--fosia-font) !important;
	color: var(--fosia-text) !important;
	font-size: 1rem !important;
}
body.fosia-v2 .arm_form .arm-df__label-text.active { color: var(--fosia-blue) !important; }
body.fosia-v2 .arm_form .arm-df__form-field-wrap input:not([type="checkbox"]):not([type="radio"]),
body.fosia-v2 .arm_form .arm-df__form-field-wrap textarea,
body.fosia-v2 .arm_form .arm-df__form-field-wrap select {
	font-family: var(--fosia-font) !important;
	font-size: 1rem !important;       /* 16 px: no zoom on iOS */
	color: var(--fosia-ink) !important;
	min-height: 52px;
}
body.fosia-v2 .arm_form .arm-df__form-control::placeholder { color: var(--fosia-muted) !important; }
body.fosia-v2 .arm_form.arm--material-outline-style .arm-notched-outline__leading,
body.fosia-v2 .arm_form.arm--material-outline-style .arm-notched-outline__notch,
body.fosia-v2 .arm_form.arm--material-outline-style .arm-notched-outline__trailing { border-color: var(--fosia-border-strong) !important; }
body.fosia-v2 .arm_form.arm--material-outline-style .arm-notched-outline__leading { border-radius: var(--fosia-radius-sm) 0 0 var(--fosia-radius-sm) !important; }
body.fosia-v2 .arm_form.arm--material-outline-style .arm-notched-outline__trailing { border-radius: 0 var(--fosia-radius-sm) var(--fosia-radius-sm) 0 !important; }
body.fosia-v2 .arm_form.arm--material-outline-style .arm-df__form-field-wrap input:focus + .arm-notched-outline .arm-notched-outline__leading,
body.fosia-v2 .arm_form.arm--material-outline-style .arm-df__form-field-wrap input:focus + .arm-notched-outline .arm-notched-outline__notch,
body.fosia-v2 .arm_form.arm--material-outline-style .arm-df__form-field-wrap input:focus + .arm-notched-outline .arm-notched-outline__trailing { border-color: var(--fosia-blue) !important; border-width: 2px !important; }
body.fosia-v2 .arm_form .arm-df__form-field-wrap input:focus-visible { outline: none; }
body.fosia-v2 .arm_form .arm-df__fc-icon { min-width: 44px; min-height: 44px; display: inline-flex; align-items: center; justify-content: center; }
body.fosia-v2 .arm_form .arm-df__fc-icon i { color: var(--fosia-muted) !important; }
body.fosia-v2 .arm_form .arm-df__fc--validation__message,
body.fosia-v2 .arm_form .arm_error_msg,
body.fosia-v2 .arm_form_message_container .arm_error_msg,
body.fosia-v2 .arm_form_message_container .arm_error_msg li { color: var(--fosia-danger) !important; font-family: var(--fosia-font) !important; font-size: 0.875rem !important; }
body.fosia-v2 .arm_form_message_container .arm_success_msg,
body.fosia-v2 .arm_form_message_container .arm_success_msg li { color: var(--fosia-success-text) !important; font-family: var(--fosia-font) !important; }
/* Submit: the v2 primary button, full width */
body.fosia-v2 .arm_form .arm-df__form-field-wrap_submit .arm-df__form-control-submit-btn,
body.fosia-v2 .arm_form .arm-df__form-field-wrap_submit button.arm-df__form-control-submit-btn {
	width: 100% !important;
	max-width: 100% !important;
	height: auto !important;
	min-height: 48px !important;
	line-height: 1.25 !important;
	padding: 13px 22px !important;
	margin: 8px 0 0 !important;
	border: 1px solid var(--fosia-blue) !important;
	border-radius: var(--fosia-radius) !important;
	background: var(--fosia-blue) !important;
	color: #ffffff !important;
	font: 600 1rem/1.25 var(--fosia-font) !important;
	box-shadow: 0 1px 2px rgba(11, 16, 32, 0.12);
	cursor: pointer;
}
body.fosia-v2 .arm_form .arm-df__form-field-wrap_submit .arm-df__form-control-submit-btn:hover,
body.fosia-v2 .arm_form .arm-df__form-field-wrap_submit .arm-df__form-control-submit-btn:focus { background: var(--fosia-blue-700) !important; border-color: var(--fosia-blue-700) !important; color: #ffffff !important; }
body.fosia-v2 .arm_form .arm-df__form-field-wrap_submit .arm-df__form-control-submit-btn:focus-visible { outline: 3px solid var(--fosia-focus) !important; outline-offset: 2px; }
/* Links (register, forgot password, log in): no more absolute placement, 40 px targets */
body.fosia-v2 .arm_form .arm-df__form-group .arm_forgotpassword_link,
body.fosia-v2 .arm_form .arm-df__form-group.arm_forgotpassword_link,
body.fosia-v2 .arm_form .arm_forgotpassword_link,
body.fosia-v2 .arm_form .arm-df__form-group .arm_registration_link,
body.fosia-v2 .arm_form .arm_registration_link { margin: 0 !important; position: static !important; float: none !important; }
body.fosia-v2 .arm_form .arm_forgotpassword_link { text-align: right; width: 100% !important; max-width: 100% !important; box-sizing: border-box; padding: 0 !important; }
body.fosia-v2 .arm_form .arm_registration_link,
body.fosia-v2 .arm_form .arm_forgotpassword_link,
body.fosia-v2 .arm_form .arm_reg_login_links { font-family: var(--fosia-font) !important; font-size: 0.9375rem !important; color: var(--fosia-text) !important; }
body.fosia-v2 .arm_form .arm_registration_link a,
body.fosia-v2 .arm_form .arm_forgotpassword_link a,
body.fosia-v2 .arm_form .arm_reg_login_links a {
	color: var(--fosia-blue) !important;
	font-weight: 600;
	display: inline-flex;
	align-items: center;
	min-height: 40px;
}
body.fosia-v2 .arm_form .arm_registration_link a:focus-visible,
body.fosia-v2 .arm_form .arm_forgotpassword_link a:focus-visible { outline: 3px solid var(--fosia-focus); outline-offset: 2px; border-radius: 4px; }
body.fosia-v2 .arm_form input[type="checkbox"].arm-df__form-control--is-checkbox:checked { background-color: var(--fosia-blue) !important; border-color: var(--fosia-blue) !important; }
body.fosia-v2 .arm_form .arm_reg_login_links,
body.fosia-v2 .arm_form .arm_reg_login_links > center { display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: 2px 6px; width: 100%; }
body.fosia-v2 .arm_form .arm_pass_strength_meter,
body.fosia-v2 .arm_form .arm_strength_meter_label { font-family: var(--fosia-font) !important; font-size: 0.875rem !important; color: var(--fosia-text) !important; }
