/* ==========================================================================
   css/site.css — LIGHT MODE for the MAIN SITE (Website 2.0 Part Three)
   --------------------------------------------------------------------------
   The ad funnels went light first (funnel.css section 21) and are the guide:
   same palette, same tokens, same mechanism, so a visitor moving from an ad to
   valiant.app does not change companies.

   HOW A PAGE IS LIT. Two classes, both in the page's own markup:
     <html class="fnl-light">          the funnel's light switch. Reusing it is
                                       what makes the Calendly widget theme
                                       (script.js), the Calendly shell, the
                                       light buttons (funnel.css 21o) and the
                                       html ground apply with no second copy.
     <body class="fnl-page--site">     marks a MAIN-SITE page. Every rule here
                                       requires it, so nothing in this file can
                                       reach the 200 ad funnels (fnl-page--ad),
                                       the 13 industry funnels or the plan
                                       modals, which all share style.css.
   A page gets both classes only in the PR that lights EVERY one of its
   surfaces (the per-page completeness gate): a half-lit page reads as broken.

   RULES OF THE FILE
     · css/style.css is never edited. Everything here is one class more
       specific than the dark rule it replaces, so no !important is needed
       except where style.css itself uses one.
     · No new colours: the funnel tokens below, and the literals section 21
       already uses. #00FF8A stays a FILL (with black on it) and the brand V;
       readable green text/rules/icons are #007D45 (--fnl-green).
     · A dark rule that lives inside a media query is overridden inside the
       same query, so a responsive decision is never undone at another width.
   Load order on a lit page: style.css, funnel.css, site.css.
   ========================================================================== */

/* --- 0. Dark palette on every main page ---------------------------------- */
/* Every main page carries the site marker, lit or not. Components borrowed from
   the funnels (the trust pill, the Trustpilot badge) read the funnel palette
   tokens, which funnel.css declares on .fnl-page only; the pages without that
   class would resolve them to nothing (the pill's ink would fall back to the
   body's black on a dark page). These are funnel.css section 1's DARK values,
   copied; the light block below overrides them on lit pages. */
.fnl-page--site {
	--fnl-green: #00FF8A;
	--fnl-green-solid: #00FF8A;
	--fnl-on-solid: #000;
	--fnl-white: #fff;
	--fnl-sub: #A9CDBB;
	--fnl-muted: #83B59F;
	--fnl-dim: #5E8272;
}

/* --- 0b. Header social proof (Part Two #1) -------------------------------- */
/* The funnel hero's "Trusted by 500+ businesses" pill above the heading and
   its Trustpilot badge under the CTA, wrapped in a row that follows the
   header's alignment: centred headers get a centred row. The components keep
   their funnel.css styling (and their light variants on lit pages). */
.fnl-page--site .fnl-sp {
	display: flex;
	width: 100%;
}

.fnl-page--site .fnl-sp--center {
	justify-content: center;
}

.fnl-page--site .fnl-sp--start {
	justify-content: flex-start;
}

.fnl-page--site .fnl-sp--pill .fnl-trustpill {
	margin: 0 0 24px;
}

.fnl-page--site .fnl-sp--tp .fnl-tp {
	margin-top: 18px;
}

/* Heroes lift their own copy above decorative layers (the industry pages'
   .inline-ellipse is absolute and sits over everything else in .desc), so the
   rows join that stack: without this the badge painted under the ellipse and
   could not be clicked. */
.fnl-page--site .fnl-sp {
	position: relative;
	z-index: 2;
}

/* /how-it-works sizes its hero for the old copy height, with an
   absolutely-positioned illustration at the bottom. The two rows add about
   100px, which at tablet widths ran into it. Same queries as style.css. */
@media (max-width: 1200px) {
	.fnl-page--site .hero__resources .outer__resources {
		min-height: 840px;
	}
}

@media (max-width: 991px) {
	.fnl-page--site .hero__resources .outer__resources {
		min-height: 750px;
	}
}

/* Case-study heroes rise in (style.css csHeroRise): heading at 1.15s, copy at
   1.55s. The rows ride with the element they belong to instead of sitting
   still while the copy moves through them. The legal pages' plain hero does
   not animate, and neither do its rows. */
@media (prefers-reduced-motion: no-preference) {
	.fnl-page--site .case__hero:not(.plain) .fnl-sp--pill {
		animation: csHeroRise 0.8s cubic-bezier(.22, .61, .36, 1) 1.15s both;
	}

	.fnl-page--site .case__hero:not(.plain) .fnl-sp--tp {
		animation: csHeroRise 0.8s cubic-bezier(.22, .61, .36, 1) 1.55s both;
	}
}

/* --- 0c. Header drawer between 992px and 1200px (every main page) ------- */
/* style.css's nav-centring block (`@media (min-width: 992px)`, "Header nav
   centring") turns .right into `display: contents` and makes .menu a centred
   flex row. Its own comment says the mobile drawer relies on .right being a
   real box, but the drawer runs to 1200px (style.css `@media (max-width:
   1200px)`), so from 992 to 1200 the open drawer had no panel: its links and
   buttons painted loose over the page (landscape tablets, small laptops).
   Give .right its box back in exactly that range, and let .menu behave as it
   does in the drawer below 992. */
@media (min-width: 992px) and (max-width: 1200px) {
	.fnl-page--site header .outer__header > .right {
		display: flex;
	}

	.fnl-page--site header .outer__header > .right > .menu {
		flex: 0 0 auto;
		display: block;
	}
}

/* --- 0d. Pricing headline on phones (Part Two #17) ----------------------- */
/* "Pay less. Grow more." (the /pricing header and the product pages'
   pricing sections) is two clean lines on a phone, like the funnels' pricing
   headline (funnel.css, next to the Pro-card gap fix). */
@media (max-width: 767px) {
	.fnl-page--site .hero__plans .outer__hero > h1 span.colored {
		display: block;
	}
}

/* --- 0e. The "Process" section pill (Part Two #24) ------------------------ */
/* style.css styles `.process__wrapper .outer__process > span` as a centred
   block from before that span became a funnel pill, which drops the pill's
   flex centring: the label sat 7.5 to 8.5px above centre inside its border
   (email, funnel, graphic-design, strategy, video). Restore the pill's own
   box, still centred in the section. */
.fnl-page--site .process__wrapper .outer__process > span.fnl-pill {
	display: flex;
	width: fit-content;
	margin-left: auto;
	margin-right: auto;
}

/* --- 0f. /reviews (Part Two #13) ----------------------------------------- */
/* The header rotator: style.css sets touch-action:none on the card, so a
   finger that lands on it cannot scroll the page (the drag turns into a tap).
   It has no swipe handling, so the browser default is restored. */
.fnl-page--site .single__review--wrapper .single__review--slider {
	touch-action: auto;
}

/* Wall of Love cards added from the funnels carry their funnel rating:
   a dim star for a missing point, and a lit copy clipped to the fraction. */
.fnl-page--site .quote__wall .elem .top__quote>.list>ul>li.rv-star {
	position: relative;
}
.fnl-page--site .quote__wall .elem .top__quote>.list>ul>li.rv-star>img {
	opacity: .25;
}
.fnl-page--site .quote__wall li.rv-star--part>.rv-star__lit {
	position: absolute;
	top: 0;
	left: 0;
	bottom: 0;
	width: calc(var(--f) * 100%);
	overflow: hidden;
	display: flex;
	align-items: center;
}
.fnl-page--site .quote__wall li.rv-star--part>.rv-star__lit>img {
	flex: none;
	max-width: none;
}

/* A reviewer with no published photo gets a monogram, as on the funnels. */
.fnl-page--site .quote__wall .elem .author>.media.rv-mono {
	background: rgba(0, 255, 138, .12);
	color: #00FF8A;
	font-size: 13px;
	font-weight: 600;
	line-height: 1;
}

/* --- 0g. /case-studies hero legibility (Part Two #8) --------------------- */
/* The hero video (doors.mp4, used only here) is bright green with a glowing
   pale gap in the middle. On phones and tablets the frame is cropped to its
   centre, so "Brands into" sat white on pale yellow (1.05:1); at every width
   the sub-line and the trust pill text were below 3:1, and on desktop the nav
   links sat on bright cloud. A veil in the site's own ground colour sits
   between the video and the text: from the left on desktop, where the copy is,
   and from the bottom on phones and tablets, plus a band under the header. */
.fnl-page--site .case__hero--video::before {
	content: "";
	position: absolute;
	inset: 0;
	z-index: 1;
	pointer-events: none;
	background:
		linear-gradient(to bottom, rgba(9, 24, 17, .72) 0, rgba(9, 24, 17, .6) 80px, rgba(9, 24, 17, 0) 190px),
		linear-gradient(90deg, rgba(9, 24, 17, .82) 0%, rgba(9, 24, 17, .62) 38%, rgba(9, 24, 17, 0) 64%);
}

@media (max-width: 991px) {
	.fnl-page--site .case__hero--video::before {
		background:
			linear-gradient(to bottom, rgba(9, 24, 17, .55) 0, rgba(9, 24, 17, 0) 120px),
			linear-gradient(to top, rgba(9, 24, 17, .92) 0%, rgba(9, 24, 17, .82) 58%, rgba(9, 24, 17, 0) 88%);
	}
}

/* --- 1. Tokens and ground ------------------------------------------------ */
/* The funnel declares its light tokens on .fnl-page. Main pages that do not
   carry .fnl-page (the legal pages, contact, about, ...) still use components
   that read them (the light .regular-btn reads --fnl-white/--fnl-green), so
   the same values are declared on the site marker. Values are copied from
   funnel.css 21a, not invented; keep the two equal. */
html.fnl-light .fnl-page--site {
	--fnl-bg: #F7FAF8;
	--fnl-rail: #EDF3EF;
	--fnl-stage: #FFFFFF;
	--fnl-card-bg: linear-gradient(180deg, #FFFFFF 0%, #F1F7F3 100%);
	--fnl-border: 1px solid rgba(9, 24, 17, .10);
	--fnl-border-hover: rgba(9, 24, 17, .24);
	--fnl-divider: 1px solid rgba(9, 24, 17, .08);
	--fnl-green: #007D45;
	--fnl-green-solid: #00FF8A;
	--fnl-on-solid: #000;
	--fnl-white: #0B1F16;
	--fnl-sub: #33574A;
	--fnl-muted: #4A6A5D;
	--fnl-dim: #5A7568;
	background-color: var(--fnl-bg);
	color-scheme: light;
}

/* style.css paints a 40% black sheet over every main page (.overlay, the full
   body height). On a light ground it would turn the page grey. */
html.fnl-light .fnl-page--site .overlay {
	background-color: transparent;
}

/* Headings borrowed from style.css: #fff and #00FF8A are 1.05:1 and 1.28:1 on
   the light ground (funnel.css 21c made the same flip for .fnl-page). */
html.fnl-light .fnl-page--site .h2-title {
	color: var(--fnl-white);
}

html.fnl-light .fnl-page--site .h2-title span.colored {
	color: var(--fnl-green);
}


/* --- 2. Header ----------------------------------------------------------- */
/* The wordmark is a separate light asset (img/head-logo-light.svg: ink
   wordmark and chip, the literal #00FF8A V, as funnel.css 22m rules for the
   funnel header). The white glow on hover has nothing to glow against. */
html.fnl-light .fnl-page--site header .outer__header .left a:hover img {
	filter: none;
}

html.fnl-light .fnl-page--site header .outer__header .menu>ul>li>a,
html.fnl-light .fnl-page--site header.secondary .outer__header .menu>ul>li>a,
html.fnl-light .fnl-page--site header .outer__header .right>.btns>.sign-in,
html.fnl-light .fnl-page--site header.secondary .outer__header .right>.btns>.sign-in {
	color: var(--fnl-sub);
}

html.fnl-light .fnl-page--site header .outer__header .menu>ul>li:hover>a,
html.fnl-light .fnl-page--site header.secondary .outer__header .menu>ul>li:hover>a,
html.fnl-light .fnl-page--site header .outer__header .right>.btns>.sign-in:hover {
	color: var(--fnl-white);
}

/* Muted-green arrow and menu icons: the funnel precedent for monochrome marks
   is brightness(0) at partial opacity (never the dark theme's invert chain). */
html.fnl-light .fnl-page--site header .outer__header .menu>ul>li>a span img,
html.fnl-light .fnl-page--site header.secondary .outer__header .menu>ul>li>a span img,
html.fnl-light .fnl-page--site header .right .menu>ul>li .header__dropdown ul>li>a span img,
html.fnl-light .fnl-page--site header.secondary .right .menu>ul>li .header__dropdown ul>li>a span img {
	filter: brightness(0);
	opacity: .55;
}

html.fnl-light .fnl-page--site header:not(.secondary) .outer__header .menu>ul>li:hover>a>span>img,
html.fnl-light .fnl-page--site header:not(.secondary) .right .menu>ul>li .header__dropdown ul>li>a:hover>span>img,
html.fnl-light .fnl-page--site header.secondary .right .menu>ul>li .header__dropdown ul>li>a:hover span img {
	filter: brightness(0);
	opacity: .85;
}

/* Dropdown panel: a white card on a hairline, the funnel's floating-panel
   shadow instead of the dark theme's 160px black halo. */
html.fnl-light .fnl-page--site header .right .menu>ul>li .header__dropdown {
	background: #FFFFFF;
	border: 1px solid rgba(9, 24, 17, .10);
	box-shadow: 0 24px 60px -24px rgba(9, 24, 17, .28);
	-webkit-backdrop-filter: none;
	backdrop-filter: none;
}

html.fnl-light .fnl-page--site header .right .menu>ul>li .header__dropdown ul>li:before {
	background: linear-gradient(to right, rgba(9, 24, 17, .04), rgba(9, 24, 17, .08));
}

html.fnl-light .fnl-page--site header .right .menu>ul>li .header__dropdown.complex .grid>ul {
	border-right-color: rgba(9, 24, 17, .08);
}

html.fnl-light .fnl-page--site header .right .menu>ul>li .header__dropdown ul>li>a,
html.fnl-light .fnl-page--site header.secondary .right .menu>ul>li .header__dropdown ul>li>a {
	color: var(--fnl-sub);
}

html.fnl-light .fnl-page--site header .right .menu>ul>li .header__dropdown ul>li>a:hover,
html.fnl-light .fnl-page--site header.secondary .right .menu>ul>li .header__dropdown ul>li>a:hover {
	background-color: rgba(0, 125, 69, .06);
	color: var(--fnl-white);
}

/* The header CTA's label carries its own white glow in style.css. */
html.fnl-light .fnl-page--site .regular-btn p,
html.fnl-light .fnl-page--site .regular-btn:hover {
	text-shadow: none;
}

/* Cursor halos: `screen` vanishes on white. Normal blending, lighter wash. */
html.fnl-light .fnl-page--site .regular-btn > .btn-halo {
	mix-blend-mode: normal;
	background: radial-gradient(150px circle at var(--mx) var(--my), rgba(0, 255, 138, .30), rgba(0, 255, 138, .10) 42%, rgba(0, 255, 138, 0) 72%);
}

html.fnl-light .fnl-page--site .outline-btn > .btn-halo {
	background: radial-gradient(140px circle at var(--mx) var(--my), rgba(0, 125, 69, .12), rgba(0, 125, 69, .04) 46%, rgba(0, 125, 69, 0) 74%);
}

html.fnl-light .fnl-page--site .outline-btn:before {
	background: linear-gradient(to top right, rgba(9, 24, 17, 0), rgba(9, 24, 17, .05));
}

html.fnl-light .fnl-page--site .outline-btn:hover {
	color: var(--fnl-white);
}

/* Mobile drawer (style.css ≤1200: a near-black glass panel over a 50% black
   backdrop). Same geometry, light materials. */
@media (max-width: 1200px) {
	html.fnl-light .fnl-page--site .menu-btn {
		border: 1px solid rgba(9, 24, 17, .14);
		background: #FFFFFF;
		-webkit-backdrop-filter: none;
		backdrop-filter: none;
	}

	html.fnl-light .fnl-page--site .menu-btn span {
		background: var(--fnl-white);
	}

	html.fnl-light .fnl-page--site header .outer__header .right {
		background: linear-gradient(180deg, rgba(255, 255, 255, .98), rgba(247, 250, 248, .98));
		border-left: 1px solid rgba(9, 24, 17, .10);
		box-shadow: -40px 0 120px rgba(9, 24, 17, .18);
	}

	html.fnl-light .fnl-page--site header .nav-backdrop {
		background: rgba(9, 24, 17, .28);
	}

	html.fnl-light .fnl-page--site header .right .menu>ul>li {
		border-bottom-color: rgba(9, 24, 17, .08);
	}

	/* Inside the drawer the dropdowns are static lists: no card. */
	html.fnl-light .fnl-page--site header .right .menu>ul>li .header__dropdown,
	html.fnl-light .fnl-page--site header .right .menu>ul>li .header__dropdown.complex {
		background: transparent;
		border: 0;
		box-shadow: none;
	}

	html.fnl-light .fnl-page--site header .outer__header .right>.btns>.sign-in {
		border-color: rgba(9, 24, 17, .16);
	}
}


/* --- 3. Footer ----------------------------------------------------------- */
/* The footer has no ground of its own; it sits on the page. Muted green was
   the body ink (#5E8272 ~4.1:1, #83B59F ~2.2:1 on light), remapped by role. */
html.fnl-light .fnl-page--site footer .top__footer>.left-col>p,
html.fnl-light .fnl-page--site footer .bottom__footer>p,
html.fnl-light .fnl-page--site footer .right-col>.el>ul>li>a {
	color: var(--fnl-muted);
}

html.fnl-light .fnl-page--site footer .right-col>.el>p,
html.fnl-light .fnl-page--site footer .right-col>.el>ul>li>a:hover {
	color: var(--fnl-white);
}

html.fnl-light .fnl-page--site footer .bottom__footer {
	border-top-color: rgba(9, 24, 17, .08);
}

/* Social chips: white marks by construction (brightness(0) invert(1)); drop
   the invert so they read as ink, on a hairline ring. */
html.fnl-light .fnl-page--site .footer__socials a {
	border-color: rgba(9, 24, 17, .16);
	background: #FFFFFF;
}

html.fnl-light .fnl-page--site .footer__socials a:hover {
	border-color: rgba(0, 125, 69, .45);
	background: rgba(0, 255, 138, .10);
}

html.fnl-light .fnl-page--site .footer__socials img {
	filter: brightness(0) opacity(.8);
}


/* --- 4. Legal pages (cookie, privacy, terms) ----------------------------- */
/* Long-form reading: body copy takes --fnl-sub (7.7:1), not the lighter
   --fnl-muted, because these are the pages people actually read line by line. */
html.fnl-light .fnl-page--site .case__hero.plain,
html.fnl-light .fnl-page--site .legal__wrapper {
	background-color: var(--fnl-bg);
}

html.fnl-light .fnl-page--site .case__hero .outer__case .desc>p {
	color: var(--fnl-muted);
}

html.fnl-light .fnl-page--site .legal__content h2,
html.fnl-light .fnl-page--site .legal__content h3 {
	color: var(--fnl-white);
}

html.fnl-light .fnl-page--site .legal__content h4,
html.fnl-light .fnl-page--site .legal__content h5,
html.fnl-light .fnl-page--site .legal__content strong {
	color: var(--fnl-white);
}

html.fnl-light .fnl-page--site .legal__content p,
html.fnl-light .fnl-page--site .legal__content li {
	color: var(--fnl-sub);
}

html.fnl-light .fnl-page--site .legal__content em {
	color: var(--fnl-muted);
}

html.fnl-light .fnl-page--site .legal__content a {
	color: var(--fnl-green);
}

html.fnl-light .fnl-page--site .legal__content a:hover {
	color: var(--fnl-white);
}

/* --- 5. Campaign carousels (Part One, Part Two #3 and #14) --------------- */
/* The .shorts-portfolio sliders on the homepage, /video, /email,
   /graphic-design, /funnel and the eleven industry pages.

   Before slick starts (Part Two #14). Nothing in style.css lays the slides out
   until slick has run, so each one was a full-height block and the homepage
   Examples column measured 14,240px at 390px wide before collapsing under the
   reader's finger. One row, clipped, from the first paint. */
.fnl-page--site .slider-shorts:not(.slick-initialized) {
	display: flex;
	flex-wrap: nowrap;
	align-items: center;
	overflow: hidden;
}

.fnl-page--site .slider-shorts:not(.slick-initialized) > .elem {
	flex: 0 0 auto;
}

/* Arrows (Part Two #3). js/script.js wraps each slider in .shorts-stage and
   adds the feature carousels' .fnl-fs__arrow pair (funnel.css 12b supplies the
   glass disc and the chevrons, light mode included). Here: centred on the
   slides rather than the 132px caption stack the feature sections have, over
   the content edges at every width, never under 44px, and a visible focus
   ring (the component paints none on its own). */
.fnl-page--site .shorts-stage {
	position: relative;
}

.fnl-page--site .shorts-stage > .shorts-arrow {
	top: 50%;
	transform: translateY(-50%);
	width: 48px;
	height: 48px;
	z-index: 6;
}

.fnl-page--site .shorts-stage > .shorts-arrow--prev {
	left: 0;
}

.fnl-page--site .shorts-stage > .shorts-arrow--next {
	right: 0;
}

.fnl-page--site .shorts-stage > .shorts-arrow:focus-visible {
	outline: 2px solid var(--fnl-green);
	outline-offset: 3px;
}

@media (max-width: 767px) {
	.fnl-page--site .shorts-stage > .shorts-arrow {
		width: 44px;
		height: 44px;
	}

	.fnl-page--site .shorts-stage > .shorts-arrow--prev {
		left: -4px;
	}

	.fnl-page--site .shorts-stage > .shorts-arrow--next {
		right: -4px;
	}
}

/* A still slide (graphic, email) opens the preview modal like a video slide
   does; this full-cover link is what a keyboard reaches and activates. */
.fnl-page--site .shorts-portfolio .slider-shorts .inn .fnl-slide-open {
	position: absolute;
	inset: 0;
	z-index: 4;
	border-radius: 12px;
}

.fnl-page--site .shorts-portfolio .slider-shorts .inn .fnl-slide-open:focus-visible,
.fnl-page--site .shorts-portfolio .slider-shorts .inn .play-btn:focus-visible {
	outline: 2px solid var(--fnl-green);
	outline-offset: -2px;
}

/* --- 6. /pricing (Website 2.0 Part Five) --------------------------------- */
/* The pricing page: the funnels' pricing band (a generated fnl-site:pricing
   region), then the Compare Pricing table (fnl-site:comparison), both from
   tools/funnels/build.mjs. Lit in the same PR (html.fnl-light), so every
   surface on it is re-declared below; the band itself is lit by funnel.css
   section 21, because the page carries .fnl-page like the product pages. */

/* 6a. The FOUR-column table. The modal's copy of these rules is scoped to
   html.fnl-cmp-4 .fnl-modal-page (funnel.css, Part Three); this page shares
   the table but not the document, so the same geometry is restated here:
   fixed right-anchored cells above 991px (header and rows share one right
   edge), a four-way split below it. style.css lays out three columns. */
body.fnl-page--site .compare__plans .plans {
	max-width: none;
	grid-template-columns: repeat(4, 190px);
	justify-content: end;
}

body.fnl-page--site .compare__plans .bottom__part > .list .elem .sub__el {
	width: 190px;
	min-width: 190px;
	flex: 0 0 190px;
}

body.fnl-page--site .compare__plans .bottom__part > .list .elem > .sub__el:nth-child(4) {
	margin-right: 32px;
}

@media (max-width: 1200px) {
	body.fnl-page--site .compare__plans .plans {
		grid-template-columns: repeat(4, 150px);
	}

	body.fnl-page--site .compare__plans .bottom__part > .list .elem .sub__el {
		width: 150px;
		min-width: 150px;
		flex: 0 0 150px;
	}

	body.fnl-page--site .compare__plans .bottom__part > .list .elem > .sub__el:nth-child(4) {
		margin-right: 25px;
	}
}

@media (max-width: 991px) {
	body.fnl-page--site .compare__plans .plans {
		width: 100%;
		max-width: none;
		min-width: 0;
		grid-template-columns: repeat(4, 1fr);
		gap: 8px;
		justify-content: stretch;
	}

	body.fnl-page--site .compare__plans .bottom__part > .list .elem {
		gap: 8px;
	}

	body.fnl-page--site .compare__plans .bottom__part > .list .elem .sub__el,
	body.fnl-page--site .compare__plans .bottom__part > .list .elem > .sub__el:nth-child(4) {
		width: calc((100% - 24px) / 4 - 1px);
		min-width: 0;
		flex: 0 0 calc((100% - 24px) / 4 - 1px);
		margin: 0;
	}
}

@media (max-width: 480px) {
	/* Four columns in 350px leave ~80px a cell: the header buttons wrap to two
	   short lines. A fee like "$37.25/campaign" breaks after its slash, and a
	   word breaks inside itself only when nothing else fits (break-word, not the
	   modal's `anywhere`, which split "campaig|n"; the modal switches to one
	   plan at a time on a phone instead). */
	body.fnl-page--site .compare__plans .plans .elem > .top .btn > a {
		min-width: 0;
		max-width: none;
		width: 100%;
		white-space: normal;
		line-height: 1.15;
		font-size: 11px;
		padding: 9px 6px;
	}

	body.fnl-page--site .compare__plans .plans .elem > .top > p {
		font-size: 13px;
	}

	body.fnl-page--site .compare__plans .top-absolute .plans .elem .top > span {
		font-size: 13px !important;
	}

	body.fnl-page--site .compare__plans .bottom__part > .list .elem .sub__el > p,
	body.fnl-page--site .compare__plans .bottom__part > .list .elem .sub__el > span {
		font-size: 11px !important;
		overflow-wrap: break-word;
	}
}

/* 6b. The hero keeps its own photograph (brief 5.1: the /pricing header image
   stays, on this page only). The light theme lays ONE white veil over it, the
   funnels' final-CTA precedent (funnel.css 21n): stacked veils multiply into a
   blank panel, a single .84-.9 layer still reads as a picture and puts every
   pixel behind the copy above 10:1 for the ink. The dotted canvas is drawn
   light-on-dark by a script with no light palette: decoration, hidden. */
html.fnl-light body.fnl-page--site .hero__plans {
	background-color: var(--fnl-bg);
}

html.fnl-light body.fnl-page--site .hero__plans > .media {
	height: 100%;
}

html.fnl-light body.fnl-page--site .hero__plans > .media::after {
	content: "";
	position: absolute;
	inset: 0;
	background: linear-gradient(180deg,
		rgba(247, 250, 248, .86) 0%,
		rgba(247, 250, 248, .84) 55%,
		rgba(247, 250, 248, 1) 100%);
	pointer-events: none;
}

html.fnl-light body.fnl-page--site .hero__plans > .ascii-ero {
	display: none;
}

html.fnl-light body.fnl-page--site .hero__plans .outer__hero > p {
	color: var(--fnl-sub);
}

/* 6c. The client logo rail is the funnels' own since Website 2.0 Part Four
   (fnl-site:logos); its light theme is funnel.css 21e, as on the ad funnels.
   The old .trusted__wrapper rules that lived here are gone with the rail. */

/* 6d. The Compare Pricing table: the light modal's palette (funnel.css 21t),
   restated for this page. style.css paints labels #83B59F, values #5E8272 and
   category headings #FFFFFF, and grounds the sticky header and category bars
   near-black; on the light ground those measure 2.2:1, 4.1:1 and 1.05:1. */
html.fnl-light body.fnl-page--site .compare__plans {
	border-bottom-color: rgba(9, 24, 17, .08);
}

html.fnl-light body.fnl-page--site .compare__plans .plans .elem > .top > p,
html.fnl-light body.fnl-page--site .compare__plans .bottom__part > .list .elem > p,
html.fnl-light body.fnl-page--site .compare__plans .bottom__part > .list .elem > p > span {
	color: var(--fnl-sub);
}

html.fnl-light body.fnl-page--site .compare__plans .bottom__part > .list .elem .sub__el p,
html.fnl-light body.fnl-page--site .compare__plans .bottom__part > .list .elem .sub__el span,
html.fnl-light body.fnl-page--site .compare__plans .bottom__part .list .elem .sub__el > p,
html.fnl-light body.fnl-page--site .compare__plans .bottom__part .list .elem .sub__el > span,
html.fnl-light body.fnl-page--site .compare__plans .bottom__part > .list .elem .sub__el > .el > p,
html.fnl-light body.fnl-page--site .compare__plans .bottom__part > .list .elem .sub__el > .el > span {
	color: var(--fnl-muted);
}

html.fnl-light body.fnl-page--site .compare__plans .bottom__part > .subtitle > p,
html.fnl-light body.fnl-page--site .compare__plans .compare-cat-fixed > p {
	color: var(--fnl-white);
}

html.fnl-light body.fnl-page--site .compare__plans .compare-cat-fixed,
html.fnl-light body.fnl-page--site .compare__plans .top-absolute > .inner,
html.fnl-light body.fnl-page--site .compare__plans .plans {
	background-color: var(--fnl-bg);
}

html.fnl-light body.fnl-page--site .compare__plans .compare-cat-fixed {
	border-bottom: 1px solid rgba(9, 24, 17, .08);
}

html.fnl-light body.fnl-page--site .compare__plans .bottom__part > .subtitle {
	background-color: var(--fnl-bg);
	border-top: 1px solid rgba(9, 24, 17, .08);
}

html.fnl-light body.fnl-page--site .compare__plans .bottom__part > .list .elem::before {
	background: linear-gradient(to right, rgba(9, 24, 17, 0), rgba(9, 24, 17, .10) 30%);
}

html.fnl-light body.fnl-page--site .compare__plans .top-absolute > .inner .plans::before {
	background: linear-gradient(to right, rgba(9, 24, 17, 0), rgba(9, 24, 17, .14), rgba(9, 24, 17, 0));
}

/* The plan price is gradient-clipped text: this gradient IS its colour
   (background-image, never the shorthand, which resets the clip). */
html.fnl-light body.fnl-page--site .compare__plans .plans .elem > .top > span {
	background-image: linear-gradient(to right, #0B1F16, #33574A);
}

/* The ticks and crosses are pale-green on dark by construction. */
html.fnl-light body.fnl-page--site .compare__plans .sub__el img[src*="check-green"],
html.fnl-light body.fnl-page--site .compare__plans .sub__el img[src*="close-green"] {
	filter: brightness(0);
	opacity: .6;
}

/* The ellipse glow behind the plan heads is a light-on-dark decoration. */
html.fnl-light body.fnl-page--site .compare__plans .plans > img {
	display: none;
}

/* 6e. FAQ. style.css paints the band #050E0A with a light-on-dark dotted
   field; the funnels' light FAQ (funnel.css 21m) is the model. */
html.fnl-light body.fnl-page--site .faq__wrapper {
	background-color: var(--fnl-bg);
	border-bottom-color: rgba(9, 24, 17, .08);
}

html.fnl-light body.fnl-page--site .faq__wrapper::before,
html.fnl-light body.fnl-page--site .faq__wrapper > .faq-field {
	display: none;
}

html.fnl-light body.fnl-page--site .faq__wrapper .outer__faq > .top > p,
html.fnl-light body.fnl-page--site .faq__wrapper .outer__faq .content > .elem .content-faq > p {
	color: var(--fnl-sub);
}

html.fnl-light body.fnl-page--site .faq__wrapper .outer__faq .content > .elem .content-faq > p a {
	color: var(--fnl-green);
}

html.fnl-light body.fnl-page--site .faq__wrapper .outer__faq .content > .elem .head-faq > p {
	color: var(--fnl-white);
}

html.fnl-light body.fnl-page--site .faq__wrapper .outer__faq .content > .elem .head-faq > span > .vertical,
html.fnl-light body.fnl-page--site .faq__wrapper .outer__faq .content > .elem .head-faq > span > .horizontal {
	background-color: var(--fnl-white);
}

html.fnl-light body.fnl-page--site .faq__wrapper .outer__faq .content > .elem.opened .head-faq > span > .vertical,
html.fnl-light body.fnl-page--site .faq__wrapper .outer__faq .content > .elem.opened .head-faq > span > .horizontal {
	background-color: var(--fnl-green);
}

html.fnl-light body.fnl-page--site .faq__wrapper .outer__faq .content > .elem::before {
	background: linear-gradient(to left, rgba(9, 24, 17, 0), rgba(9, 24, 17, .10));
}

/* 6f. The closing CTA sits on a fixed dark photograph (img/cta-back.webp)
   under a 25% black sheet. Same single-veil treatment as the hero. */
html.fnl-light body.fnl-page--site .cta__wrapper {
	background-color: #EDF3EF;
}

html.fnl-light body.fnl-page--site .cta__wrapper::before {
	background: linear-gradient(180deg,
		rgba(247, 250, 248, .86) 0%,
		rgba(247, 250, 248, .82) 45%,
		rgba(247, 250, 248, .88) 100%);
}

html.fnl-light body.fnl-page--site .cta__wrapper .outer__cta > p {
	color: var(--fnl-sub);
}

html.fnl-light body.fnl-page--site .cta__wrapper .info__small {
	border-color: rgba(9, 24, 17, .16);
	background: rgba(255, 255, 255, .7);
}

html.fnl-light body.fnl-page--site .cta__wrapper .info__small > p {
	color: var(--fnl-sub);
}

html.fnl-light body.fnl-page--site .cta__wrapper .info__small > span > img {
	filter: brightness(0);
	opacity: .6;
}

/* --- W6-0. The How It Works section heading keeps its own casing ------------
   style.css capitalises every .h2-title; funnel.css undoes that under .fnl-page,
   which /how-it-works (body.fnl-page--site only) does not carry, so the same
   source read "Into" there and "into" on /analytics. Same text on both pages. */
body.fnl-page--site:not(.fnl-page) .how__works--graph .h2-title {
	text-transform: none;
}

/* --- W6-1. The How It Works graph on phones (Part Four) ------------------ */
/* One section on /analytics and /how-it-works, generated from
   tools/funnels/partials/site-hiw-graph.html. style.css (<= 767px) hid the
   graph column and script.js returns before the animation there, so phones
   saw five paragraphs and no graph. Phones now get each step's own slice of
   the same graph under its copy: <svg class="hiw-slice"><use
   href="#hiwGraphAll"/></svg>, cropped to that step by its viewBox.
   A <use> instance is blank when its source is display:none, so the desktop
   column stays RENDERED on phones, as a zero-size clipped box (never
   display:none).
   The slices show the animation's END state. A <use> instance does not match
   selectors through its ancestors, but it inherits custom properties from
   the <use>, so the partial's tagged elements read these variables (their
   fallbacks are the authored values, which the desktop original keeps):
     --hiw-final     shows the baked end state (.hiw-final: the three
                     published discs and the full green trunk)
     --hiw-authored  hides the node art the animation hides
     --hiw-act       the colour the animation turns the step lines to
   Tablet and desktop (>= 768) are unchanged: no slices, the baked groups
   hidden by their own fallback, the animation draws its own end state. */
body.fnl-page--site .how__works--graph .hiw-slice {
	display: none;
	--hiw-final: inline;
	--hiw-authored: none;
	--hiw-act: #00FF8A;
}
@media (max-width: 767px) {
	body.fnl-page--site .how__works--graph .outer__how--works .inner {
		position: relative;
	}
	body.fnl-page--site .how__works--graph .outer__how--works .inner > .right {
		display: block;
		position: absolute;
		top: 0;
		left: 0;
		width: 0;
		height: 0;
		overflow: hidden;
		pointer-events: none;
	}
	body.fnl-page--site .how__works--graph .hiw-slice {
		display: block;
		width: 100%;
		height: auto;
		margin-top: 24px;
	}
	body.fnl-page--site .how__works--graph .outer__how--works .inner > .left .el {
		margin-bottom: 64px;
	}
	body.fnl-page--site .how__works--graph .outer__how--works .inner > .left .el:last-child {
		margin-bottom: 0;
	}
}
/* --- W3b-1. The AI Brain on phones (Part Two #6) ------------------------- */
/* style.css (<= 767px) hid the whole stage and listed the nine cards instead.
   Phones now get the desktop stage as a mini version: the brain image, the
   nine-icon orbit and js/brain.js's glyph field, pointer hole and card popups,
   all scaled from the desktop proportions (the orbit spans 56.25% of the image
   width, as 1080 of 1920 does on desktop). The nine .elem__card stay in the
   DOM, visually hidden: brain.js clones them as the popups, and screen readers
   still read the list. Tablet (768-991) keeps style.css's 1200px stage. */
@media (max-width: 767px) {
	body.fnl-page--site .brain__wrapper {
		background-color: #000;
	}
	/* The heading sits over the image's empty top, as on desktop. */
	body.fnl-page--site .brain__wrapper .top {
		position: relative;
		left: auto;
		top: auto;
		z-index: 3;
	}
	body.fnl-page--site .brain__wrapper .media {
		display: flex;
		margin-top: -64px;
		margin-bottom: -56px;
	}
	/* While a card is open the bottom box steps down out of the stage, so the
	   card (under the icon ring) never lies over its paragraph. */
	body.fnl-page--site .brain__wrapper.brain--card-open .media {
		margin-bottom: 0;
	}
	body.fnl-page--site .brain__wrapper .media > img {
		flex: none;
		width: calc(min(100% - 20px, 600px) * 1.7778);
		min-width: 0;
		max-width: none;
		height: auto;
		/* The image is wider than the phone, so its side fades are off-screen;
		   fade its top and bottom edges into the ground instead. */
		-webkit-mask-image: linear-gradient(to bottom, transparent 0, #000 16%, #000 78%, transparent 100%);
		        mask-image: linear-gradient(to bottom, transparent 0, #000 16%, #000 78%, transparent 100%);
	}
	body.fnl-page--site .brain__wrapper .media .icons__wrapper {
		display: block;
		width: min(calc(100% - 20px), 600px);
		max-width: none;
		height: auto;
		aspect-ratio: 1080 / 790;
	}
	body.fnl-page--site .brain__wrapper .media .icons__wrapper .icon {
		width: 36px;
		height: 36px;
		backdrop-filter: blur(14px);
		-webkit-backdrop-filter: blur(14px);
	}
	body.fnl-page--site .brain__wrapper .media .icons__wrapper .icon > img {
		width: 15px;
		height: 15px;
	}
	/* The fog is a 96px canvas stretched over the image and blurred; 160px of
	   blur on a ~650px stage would wash it out, so it scales with the stage. */
	body.fnl-page--site .brain__wrapper .media > .brain-fog {
		filter: blur(56px) saturate(1.1);
	}
	body.fnl-page--site .brain__wrapper .mobile-cards {
		position: absolute;
		width: 1px;
		height: 1px;
		margin: -1px;
		padding: 0;
		overflow: hidden;
		clip: rect(0 0 0 0);
		clip-path: inset(50%);
		white-space: nowrap;
	}
	body.fnl-page--site .brain__wrapper .media .brain-card.brain-card--wide {
		width: auto;
		padding: 16px;
	}
	body.fnl-page--site .brain__wrapper .media .brain-card.brain-card--wide > span {
		margin-bottom: 14px;
	}
	body.fnl-page--site .brain__wrapper > .dots {
		display: block;
		height: 296px;
	}
	body.fnl-page--site .brain__wrapper .bottom__box {
		position: relative;
		left: auto;
		z-index: 2;
	}
}

@media (prefers-reduced-motion: reduce) {
	body.fnl-page--site .brain__wrapper .media .brain-card {
		transition: none;
	}
}

/* --- W3b-2. Background videos never show a play glyph (Part Two #27) ----- */
/* Some phones (iOS Low Power Mode, data savers, in-app browsers) refuse muted
   autoplay and draw their own play button over the poster. The funnels'
   pattern cannot show one: the video stays transparent until it is actually
   playing (js/script.js adds .is-playing), and the poster is a plain <img>
   underneath it with the video's own box, so a refused autoplay shows the
   still frame and nothing else. Without JavaScript the poster is what shows.
   Each family's box below mirrors that video's rule in style.css. */
body.fnl-page--site video.hero-video {
	transition: opacity .32s ease;
}
body.fnl-page--site video.hero-video:not(.is-playing) {
	opacity: 0;
}
body.fnl-page--site video.hero-video::-webkit-media-controls-start-playback-button {
	display: none !important;
	-webkit-appearance: none;
}
body.fnl-page--site video.hero-video::-webkit-media-controls {
	display: none !important;
}

/* .hero__main, .team__hero, .cta-team, .hero__bottom, .workflows__hero,
   .about__hero, .reviews__hero, .hero__video, .case__hero--video, and
   .hero__brain before brain-vid-box wraps it: inset 0, cover. */
body.fnl-page--site .hero-video__poster {
	position: absolute;
	left: 0;
	top: 0;
	width: 100%;
	height: 100%;
	max-width: none;
	object-fit: cover;
	display: block;
	pointer-events: none;
}

/* /contact: style.css lifts the video to z-index 2. */
body.fnl-page--site .hero__video > .hero-video__poster {
	z-index: 2;
}

/* /aboutus: style.css blurs and pads every direct <img> of the hero. */
body.fnl-page--site .about__hero > .hero-video__poster {
	filter: none;
	padding: 0;
}

/* /strategy: `.hero__middle>video`. */
body.fnl-page--site .hero__middle > .hero-video__poster {
	left: 50%;
	top: -280px;
	width: 100%;
	max-width: 100%;
	height: calc(100% + 120px);
	max-height: calc(100% + 120px);
	transform: translateX(-50%);
	object-fit: contain;
	opacity: .75;
}
@media (max-width: 1200px) {
	body.fnl-page--site .hero__middle > .hero-video__poster {
		top: -220px;
	}
}
@media (max-width: 767px) {
	body.fnl-page--site .hero__middle > .hero-video__poster {
		top: -230px;
		object-fit: cover;
		object-position: top;
	}
}
@media (max-width: 575px) {
	body.fnl-page--site .hero__middle > .hero-video__poster {
		height: 100%;
	}
}

/* /ai-brain: js/script.js moves the video (and this poster) into
   .brain-vid-box, sized to the hero; `.brain-vid-box>video` rules. */
body.fnl-page--site .hero__brain .brain-vid-box > .hero-video__poster {
	object-fit: fill;
}
body.fnl-page--site .hero__brain .brain-vid-box.vid-cover > .hero-video__poster {
	object-fit: cover;
	object-position: 72% center;
}
@media (max-width: 1200px) {
	body.fnl-page--site .hero__brain .brain-vid-box.vid-cover > .hero-video__poster {
		object-position: 0% center;
	}
}
@media (max-width: 767px) {
	body.fnl-page--site .hero__brain .brain-vid-box.vid-cover > .hero-video__poster {
		object-position: 20% center;
	}
}
@media (max-width: 575px) {
	body.fnl-page--site .hero__brain .brain-vid-box.vid-cover > .hero-video__poster {
		object-position: 30% center;
	}
}

/* /workflow: the product video inside the laptop frame. */
body.fnl-page--site .laptop__screen--wrap > .hero-video__poster {
	left: 23.454%;
	top: 3.156%;
	width: 55.315%;
	height: 56.2%;
	object-fit: contain;
	border-radius: 2px;
	z-index: 1;
	background-color: #000;
}

/* --- W3b-3. The /contact form (Part Two #7) ------------------------------ */
/* The field captions are real <label>s now; same look as style.css's
   `.group__input>p`. Status and confirmation copy is set by js/contact-form.js. */
body.fnl-page--site .hero__contact .outer__contact form .group__input > label {
	display: block;
	margin-top: 0;
	margin-bottom: 15px;
	font-size: 12px;
	line-height: 90%;
	color: #5E8272;
	font-weight: 500;
	letter-spacing: -0.03em;
}
body.fnl-page--site .hero__contact .outer__contact form .group__input > input:focus-visible,
body.fnl-page--site .hero__contact .outer__contact form .group__input > textarea:focus-visible {
	border-color: rgba(0, 255, 138, .45);
}
body.fnl-page--site .hero__contact .outer__contact form .group__input > [aria-invalid="true"] {
	border-color: rgba(255, 120, 110, .75);
}
/* The honeypot: off-screen, out of the tab order, hidden from assistive tech. */
body.fnl-page--site .contact-form__hp {
	position: absolute;
	left: -10000px;
	top: auto;
	width: 1px;
	height: 1px;
	overflow: hidden;
}
body.fnl-page--site .contact-form__status {
	margin: 20px 0 0;
	padding: 14px 16px;
	border-radius: 12px;
	font-size: 14px;
	line-height: 150%;
	letter-spacing: -0.02em;
	color: #C9E3D6;
	background: rgba(255, 255, 255, .04);
	border: 1px solid rgba(255, 255, 255, .1);
}
body.fnl-page--site .contact-form__status[hidden] {
	display: none;
}
body.fnl-page--site .contact-form__status--error {
	color: #F3D4D1;
	background: rgba(255, 90, 80, .08);
	border-color: rgba(255, 120, 110, .35);
}
body.fnl-page--site .contact-form__status a,
body.fnl-page--site .contact-form__done a {
	color: #00FF8A;
	text-decoration: underline;
	text-underline-offset: 2px;
}
body.fnl-page--site .hero__contact form .group__submit > button:disabled {
	opacity: .6;
	cursor: progress;
}
body.fnl-page--site .contact-form__done {
	position: relative;
	z-index: 1;
	padding: 10px 0;
	outline: none;
}
body.fnl-page--site .contact-form__done > p {
	margin: 0 0 12px;
	font-size: 15px;
	line-height: 150%;
	letter-spacing: -0.02em;
	color: #C9E3D6;
}
body.fnl-page--site .contact-form__done > p:last-child {
	margin-bottom: 0;
}
body.fnl-page--site .contact-form__done > .contact-form__done-title {
	font-size: 20px;
	line-height: 130%;
	font-weight: 600;
	color: #fff;
}
body.fnl-page--site .contact-form__done strong {
	color: #00FF8A;
	font-weight: 600;
	letter-spacing: .02em;
}
/* Once sent, the fields give way to the confirmation (style.css displays
   .double and .group__submit, which would override the hidden attribute). */
body.fnl-page--site .contact-form.is-sent > :not(.float):not(.contact-form__done) {
	display: none;
}

/* --- W3b-4. "Why <Industry> Loves Us" on phones and tablets (Part Two #14) - */
/* The 11 industry pages pinned this section for ~3.4 screens at 390px while
   four captions took turns. At <= 991px js/script.js no longer pins it, and
   the four cards sit in document flow, each with its image and caption. */
@media (max-width: 991px) {
	body.fnl-page--site .why__us .why__pin {
		position: static;
		height: auto;
		overflow: visible;
		padding-bottom: 40px;
	}
	body.fnl-page--site .why__us .why__grid {
		display: flex;
		flex-direction: column;
		gap: 12px;
		margin-top: 28px;
		padding-left: 15px;
		padding-right: 15px;
	}
	body.fnl-page--site .why__us .why__grid > .elem,
	body.fnl-page--site .why__us .why__grid > .elem.active,
	body.fnl-page--site .why__us .why__grid > .elem.is-past {
		height: auto;
		min-height: 0;
		margin-top: 0;
		opacity: 1;
		aspect-ratio: 16 / 10;
		border: 1px solid rgba(255, 255, 255, .07);
		border-radius: 18px;
	}
	body.fnl-page--site .why__us .why__grid > .elem > .media {
		opacity: 1;
	}
	body.fnl-page--site .why__us .why__grid > .elem .desc,
	body.fnl-page--site .why__us .why__grid > .elem.active .desc {
		left: 0;
		transform: none;
		bottom: 18px;
		padding-left: 18px;
		padding-right: 18px;
	}
	body.fnl-page--site .why__us .why__grid > .elem .desc > p {
		opacity: 1;
		font-size: 18px;
		line-height: 125%;
		color: #C9E3D6;
	}
	body.fnl-page--site .why__us .why__grid > .elem .desc > p span {
		flex: none;
		margin-right: 12px;
		opacity: .8;
	}
}

/* --- 7. The shared sections on pages without the funnel base (Part Four) --
   aboutus, team and reviews carry body.fnl-page--site without .fnl-page, so
   funnel.css's base resets (".fnl-page ul", ".fnl-page :where(li)") never
   reach the logo rail there: the <ul> took the browser's 40px indent and 16px
   margins, which pushed the marks down into the rail's clip. The resets are
   restated for the rail on those pages only; every value equals the base
   rule's, so a page that has .fnl-page renders exactly as before. */
body.fnl-page--site:not(.fnl-page) .fnl-logos ul {
	list-style: none;
	margin: 0;
	padding: 0;
}

body.fnl-page--site:not(.fnl-page) .fnl-logorail li {
	font-size: 16px;
	letter-spacing: -0.03em;
}

/* --- W3c-1. Headlines and subheads on the ad funnels' ladder (Part Two #4) --
   Brief: headlines, subheadlines and copy match the ad funnels' boldness and
   sizing across every section and header. The reference is the measured ad
   ladder (funnel.css 22a hero, 22c section headlines, 22n cards, 24b(2) hero
   sub), restated here for the main site's own roles; every size below is an
   ad size at the ad's own breakpoint. Colour is NOT part of this section: the
   ad reference is light, and its role colours arrive by token when each page
   is lit (W10); on the dark pages the role colours stay the dark baseline.

   Role map (from the W3c role census, before/after in the PR):
     hero       h1.h2-title.bigger and the five hero h2.bigger
                -> 22a (63/60/56/51/45/42/38; --flow 41 at <=575), 800,
                   -0.035em, 92% with a 1.04 floor at <=767
     section    .h2-title, .fnl-h2 -> 22c (60/45/41/39/34)
     column     .fnl-h2--col and the legacy headings that sit in a text
                column beside media or a form -> 45/40/38/36/34/31
     final CTA  .fnl-h2--final, .cta__wrapper .h2-title -> 76/63/54/47/43/38
     FAQ        .faq__wrapper .h2-title -> 54/45/41/39/34
     hero sub   the paragraph after a hero heading
                -> 400, 18/145%, 17 at <=1200, 15 at <=767
     sub        the paragraph after a section heading -> the .fnl-sub
                ladder, 300, 18/150%, 17 at <=1200, 16 at <=575
     eyebrow    .pre-title takes the .fnl-pill tracking (0.10em)
     article    the case studies' long-form paragraphs and bullets take the
                cards' body copy, 16/400 (was 14/300, 12 on phones); their
                160% leading stays, the ad pages have no long-form role
   Card titles and support already carry the ad rule (funnel.css 22n twin).
   The 13 generated industry funnels carry .fnl-page--site but do not load
   this file, so none of this reaches them (flagged in the PR).
   style.css sets weight 500 and the .bigger size on the SPANS inside a
   heading, so the spans inherit here or a coloured phrase would stay 500.
   Line breaking: every heading balances its lines (the ad --flow rule,
   applied to all of them because below 768 the hand pages hide their <br>s
   and flow anyway, and because the larger type otherwise strands one word
   on the last line). It changes no size and is a no-op where unsupported.
   Selectors are one class (or one element) above the style.css and
   funnel.css rule they replace; none uses !important. */
.fnl-page--site h1.h2-title.bigger,
.fnl-page--site :is(.hero__brain, .case__hero--video, .hero__graphic--design, .hero__resources, .workflows__hero) h2.h2-title.bigger {
	font-weight: 800;
	letter-spacing: -0.035em;
	line-height: 92%;
	font-size: 63px;
	text-wrap: balance;
}

.fnl-page--site h1.h2-title.bigger span,
.fnl-page--site :is(.hero__brain, .case__hero--video, .hero__graphic--design, .hero__resources, .workflows__hero) h2.h2-title.bigger span,
.fnl-page--site .cta__wrapper .h2-title span,
.fnl-page--site .h2-title span {
	font-size: inherit;
	font-weight: inherit;
}

.fnl-page--site h1.h2-title.bigger + p,
.fnl-page--site :is(.hero__brain, .case__hero--video, .hero__graphic--design, .hero__resources, .workflows__hero) h2.h2-title.bigger + p {
	font-weight: 400;
	font-size: 18px;
	line-height: 145%;
	letter-spacing: -0.03em;
}

/* The hero subs' hand <br>s were set for the old 16px/300 type; at the ad's
   18px/400 they strand words and push the text into the hero art
   (/how-it-works touched its illustration). Hidden here and balanced
   instead: copy unchanged, only where the lines break. */
.fnl-page--site h1.h2-title.bigger + p br,
.fnl-page--site :is(.hero__brain, .case__hero--video, .hero__graphic--design, .hero__resources, .workflows__hero) h2.h2-title.bigger + p br {
	display: none;
}
.fnl-page--site h1.h2-title.bigger + p,
.fnl-page--site :is(.hero__brain, .case__hero--video, .hero__graphic--design, .hero__resources, .workflows__hero) h2.h2-title.bigger + p {
	text-wrap: balance;
}

.fnl-page--site .fnl-h2,
.fnl-page--site .h2-title {
	font-weight: 800;
	letter-spacing: -0.035em;
	line-height: 92%;
	font-size: 60px;
	text-wrap: balance;
}

.fnl-page--site .fnl-h2--col,
.fnl-page--site :is(.integrations__wrapper, .matrix_wrapper, .hero__contact, .case__feed, .compare__plans) .h2-title,
.fnl-page--site .compare__plans .inner .title > .h2-title {
	font-size: 45px;
}

.fnl-page--site .fnl-h2--final,
.fnl-page--site .cta__wrapper .outer__cta > .h2-title {
	font-size: 76px;
}

.fnl-page--site .faq__wrapper .outer__faq > .top .h2-title {
	font-weight: 800;
	letter-spacing: -0.035em;
	line-height: 92%;
	font-size: 54px;
}

.fnl-page--site .h2-title:not(.bigger) + p,
.fnl-page--site .fnl-sechead__sub,
.fnl-page--site .cta__wrapper .outer__cta > .h2-title + p,
.fnl-page--site .matrix_wrapper .outer__matrix .desc > .text > p {
	font-weight: 300;
	font-size: 18px;
	line-height: 150%;
	letter-spacing: -0.03em;
}

.fnl-page--site .case__feed .inner__content .text > p,
.fnl-page--site .case__feed .inner__content .text .list > ul > li {
	font-size: 16px;
	font-weight: 400;
}

.fnl-page--site .pre-title {
	letter-spacing: 0.1em;
}

@media (max-width: 1400px) {
	.fnl-page--site h1.h2-title.bigger,
	.fnl-page--site :is(.hero__brain, .case__hero--video, .hero__graphic--design, .hero__resources, .workflows__hero) h2.h2-title.bigger { font-size: 60px; }
}

@media (max-width: 1200px) {
	.fnl-page--site h1.h2-title.bigger,
	.fnl-page--site :is(.hero__brain, .case__hero--video, .hero__graphic--design, .hero__resources, .workflows__hero) h2.h2-title.bigger { font-size: 56px; }
	.fnl-page--site h1.h2-title.bigger + p,
	.fnl-page--site :is(.hero__brain, .case__hero--video, .hero__graphic--design, .hero__resources, .workflows__hero) h2.h2-title.bigger + p { font-size: 17px; }
	.fnl-page--site .fnl-h2,
	.fnl-page--site .h2-title { font-size: 45px; }
	.fnl-page--site .fnl-h2--col,
	.fnl-page--site :is(.integrations__wrapper, .matrix_wrapper, .hero__contact, .case__feed, .compare__plans) .h2-title,
	.fnl-page--site .compare__plans .inner .title > .h2-title { font-size: 40px; }
	.fnl-page--site .fnl-h2--final,
	.fnl-page--site .cta__wrapper .outer__cta > .h2-title { font-size: 63px; }
	.fnl-page--site .faq__wrapper .outer__faq > .top .h2-title { font-size: 45px; }
	.fnl-page--site .h2-title:not(.bigger) + p,
	.fnl-page--site .fnl-sechead__sub,
	.fnl-page--site .cta__wrapper .outer__cta > .h2-title + p,
	.fnl-page--site .matrix_wrapper .outer__matrix .desc > .text > p { font-size: 17px; }
}

@media (max-width: 991px) {
	.fnl-page--site h1.h2-title.bigger,
	.fnl-page--site :is(.hero__brain, .case__hero--video, .hero__graphic--design, .hero__resources, .workflows__hero) h2.h2-title.bigger { font-size: 51px; }
	.fnl-page--site .fnl-h2--col,
	.fnl-page--site :is(.integrations__wrapper, .matrix_wrapper, .hero__contact, .case__feed, .compare__plans) .h2-title,
	.fnl-page--site .compare__plans .inner .title > .h2-title { font-size: 38px; }
	.fnl-page--site .fnl-h2--final,
	.fnl-page--site .cta__wrapper .outer__cta > .h2-title { font-size: 54px; }
	/* The sticky How It Works head on the phone stepper: a few percent, as 22c. */
	.fnl-page--site .fnl-s1--steps .fnl-s1__head .fnl-h2 { font-size: 42px; }
}

@media (max-width: 767px) {
	.fnl-page--site h1.h2-title.bigger,
	.fnl-page--site :is(.hero__brain, .case__hero--video, .hero__graphic--design, .hero__resources, .workflows__hero) h2.h2-title.bigger { font-size: 45px; line-height: 1.04; }
	.fnl-page--site h1.h2-title.bigger + p,
	.fnl-page--site :is(.hero__brain, .case__hero--video, .hero__graphic--design, .hero__resources, .workflows__hero) h2.h2-title.bigger + p { font-size: 15px; }
	.fnl-page--site .fnl-h2,
	.fnl-page--site .h2-title { font-size: 41px; line-height: 1.04; }
	.fnl-page--site .fnl-h2--col,
	.fnl-page--site :is(.integrations__wrapper, .matrix_wrapper, .hero__contact, .case__feed, .compare__plans) .h2-title,
	.fnl-page--site .compare__plans .inner .title > .h2-title { font-size: 36px; }
	.fnl-page--site .fnl-h2--final,
	.fnl-page--site .cta__wrapper .outer__cta > .h2-title { font-size: 47px; }
	.fnl-page--site .faq__wrapper .outer__faq > .top .h2-title { font-size: 41px; line-height: 1.04; }
	.fnl-page--site .fnl-s1--steps .fnl-s1__head .fnl-h2 { font-size: 38px; }
}

@media (max-width: 575px) {
	.fnl-page--site h1.h2-title.bigger,
	.fnl-page--site :is(.hero__brain, .case__hero--video, .hero__graphic--design, .hero__resources, .workflows__hero) h2.h2-title.bigger { font-size: 42px; }
	.fnl-page--site h1.h2-title.bigger.fnl-hero__h1--flow { font-size: 41px; }
	.fnl-page--site .fnl-h2,
	.fnl-page--site .h2-title { font-size: 39px; }
	.fnl-page--site .fnl-h2--col,
	.fnl-page--site :is(.integrations__wrapper, .matrix_wrapper, .hero__contact, .case__feed, .compare__plans) .h2-title,
	.fnl-page--site .compare__plans .inner .title > .h2-title { font-size: 34px; }
	.fnl-page--site .fnl-h2--final,
	.fnl-page--site .cta__wrapper .outer__cta > .h2-title { font-size: 43px; }
	.fnl-page--site .faq__wrapper .outer__faq > .top .h2-title { font-size: 39px; }
	.fnl-page--site .fnl-s1--steps .fnl-s1__head .fnl-h2 { font-size: 33px; }
	.fnl-page--site .h2-title:not(.bigger) + p,
	.fnl-page--site .fnl-sechead__sub,
	.fnl-page--site .cta__wrapper .outer__cta > .h2-title + p,
	.fnl-page--site .matrix_wrapper .outer__matrix .desc > .text > p { font-size: 16px; }
}

/* Phones: the pages without the funnel base (.fnl-page: aboutus, contact,
   reviews, team, how-it-works, the legal pages) kept their heading <br>s,
   which at these sizes stranded a word on the hero's last line (/reviews
   "On" at 360-430px). funnel.css 4591 already drops them on every other main
   page below 768; the same rule, so the headings flow and balance. */
@media (max-width: 767px) {
	.fnl-page--site:not(.fnl-page) :is(h1, h2) br {
		display: none;
	}
}

@media (max-width: 400px) {
	.fnl-page--site .faq__wrapper .outer__faq > .top .h2-title { font-size: 34px; }
}

@media (max-width: 390px) {
	.fnl-page--site h1.h2-title.bigger,
	.fnl-page--site :is(.hero__brain, .case__hero--video, .hero__graphic--design, .hero__resources, .workflows__hero) h2.h2-title.bigger,
	.fnl-page--site h1.h2-title.bigger.fnl-hero__h1--flow { font-size: 38px; }
}

@media (max-width: 360px) {
	.fnl-page--site .fnl-h2,
	.fnl-page--site .h2-title { font-size: 34px; }
	.fnl-page--site .fnl-h2--col,
	.fnl-page--site :is(.integrations__wrapper, .matrix_wrapper, .hero__contact, .case__feed, .compare__plans) .h2-title,
	.fnl-page--site .compare__plans .inner .title > .h2-title { font-size: 31px; }
	.fnl-page--site .fnl-h2--final,
	.fnl-page--site .cta__wrapper .outer__cta > .h2-title { font-size: 38px; }
	.fnl-page--site .fnl-s1--steps .fnl-s1__head .fnl-h2 { font-size: 31px; }
}

/* ==========================================================================
   W10b. Light mode for the legacy section families (Website 2.0 Part Three)
   --------------------------------------------------------------------------
   Everything below is inert until a page carries html.fnl-light, and every
   selector requires the site marker, so dark pages and the ad funnels cannot
   change. Two layers:
     W10b-1  the families that appear on more than one page group (written
             once here; the later groups add only page-unique rules);
     W10b-2  the CSS-only pages: aboutus, team, reviews, contact,
             case-studies and the five case studies.
   Ink roles are the funnel's (funnel.css 21a): style.css's #FFFFFF heading
   ink -> --fnl-white, #83B59F body copy -> --fnl-sub, #5E8272 secondary copy
   -> --fnl-muted, #00FF8A text -> --fnl-green (#007D45); white-alpha
   hairlines -> rgba(9, 24, 17, .08-.22). The "inks and hairlines" blocks are
   those mappings applied rule for rule to the style.css family (same
   selectors, same order, same media queries); grounds, glass, veils and
   decoration are written by hand after them.
   ========================================================================== */

/* --- W10b-1a. Heading, sub and eyebrow roles (colour half of Part Two #4) -
   W3c set the ad ladder's sizes and weights; these are its colours: the hero
   sub and the section sub take the funnel sub ink (7.7:1), the eyebrow the
   funnel's .pre-title ink (funnel.css 21c). */
html.fnl-light .fnl-page--site h1.h2-title.bigger + p,
html.fnl-light .fnl-page--site :is(.hero__brain, .case__hero--video, .hero__graphic--design, .hero__resources, .workflows__hero) h2.h2-title.bigger + p,
html.fnl-light .fnl-page--site .h2-title:not(.bigger) + p,
html.fnl-light .fnl-page--site .cta__wrapper .outer__cta > .h2-title + p,
html.fnl-light .fnl-page--site .matrix_wrapper .outer__matrix .desc > .text > p {
	color: var(--fnl-sub);
}

html.fnl-light .fnl-page--site .pre-title {
	color: var(--fnl-muted);
}

/* W10b-1c inks and hairlines: .cta__wrapper (style.css, rule for rule) */

html.fnl-light .fnl-page--site .cta__wrapper .outer__cta>p {
	color: var(--fnl-sub);
}

html.fnl-light .fnl-page--site .cta__wrapper .social__buttons ul>li>a {
	color: var(--fnl-sub);
	border: 1px solid rgba(9, 24, 17, .08);
}

html.fnl-light .fnl-page--site .cta__wrapper .social__buttons ul>li>a:hover p {
	color: var(--fnl-white);
}

html.fnl-light .fnl-page--site .cta__wrapper .social__buttons ul>li>a {
	border-color: transparent;
}

html.fnl-light .fnl-page--site .cta__wrapper.cta-team {
	border-bottom: 1px solid rgba(9, 24, 17, .08);
}

/* --- W10b-1b. Background videos: one veil ---------------------------------
   The hand heroes (and the closing CTA on /aboutus and /team) play a dark
   video, with a poster <img> under it (W3b-2), behind a black sheet. The
   funnel's treatment for dark media under copy is ONE veil in the page
   ground at .82-.88 (funnel.css 21n); stacked veils multiply into a blank
   panel. Here the veil is the media's own opacity over the ground: .15 over
   #F7FAF8 is exactly a single .85 ground veil, it cannot stack with a
   pseudo-element another rule already owns, and it follows the video's box
   wherever a family puts it. The poster steps aside once the video plays
   (it would otherwise be a second layer), and the black sheets go.
   Hosts: the ones W3b-2 lists. /ai-brain's .hero__brain and /strategy's
   .hero__middle are not veiled here: their videos are the AI Brain render
   and its pair, which W10-D3 keeps as a dark stage (W10e). */
html.fnl-light .fnl-page--site :is(.hero__main, .team__hero, .cta-team, .hero__bottom, .workflows__hero, .about__hero, .reviews__hero, .hero__video, .case__hero--video) {
	background-color: var(--fnl-bg);
}

html.fnl-light .fnl-page--site :is(.hero__main, .team__hero, .cta-team, .hero__bottom, .workflows__hero, .about__hero, .reviews__hero, .hero__video, .case__hero--video) > video.hero-video.is-playing,
html.fnl-light .fnl-page--site :is(.hero__main, .team__hero, .cta-team, .hero__bottom, .workflows__hero, .about__hero, .reviews__hero, .hero__video, .case__hero--video) > .hero-video__poster {
	opacity: .15;
}

html.fnl-light .fnl-page--site :is(.hero__main, .team__hero, .cta-team, .hero__bottom, .workflows__hero, .about__hero, .reviews__hero, .hero__video, .case__hero--video):has(> video.hero-video.is-playing) > .hero-video__poster {
	opacity: 0;
}

html.fnl-light .fnl-page--site .about__hero::before,
html.fnl-light .fnl-page--site .reviews__hero::before,
html.fnl-light .fnl-page--site .case__hero--video::before {
	background: none;
}

@media (max-width: 991px) {
	html.fnl-light .fnl-page--site .case__hero--video::before {
		background: none;
	}
}

/* --- W10b-1c. The closing CTA band (every page) ---------------------------
   Base band and its photo veil: section 6f. The social-button row (the
   .with-background variant on /contact) was white-alpha glass: white chips
   on a hairline, the footer socials' treatment. On /aboutus and /team the
   band plays a video (.cta-team): 1b veils the video, so the photo veil of
   6f is not stacked on top of it. */
html.fnl-light .fnl-page--site .cta__wrapper .social__buttons ul>li>a {
	color: var(--fnl-sub);
	border: 1px solid rgba(9, 24, 17, .14);
	background-color: #FFFFFF;
}

html.fnl-light .fnl-page--site .cta__wrapper .social__buttons ul>li>a:before {
	background: none;
}

html.fnl-light .fnl-page--site .cta__wrapper .social__buttons ul>li>a:hover {
	border-color: rgba(0, 125, 69, .45);
	background-color: rgba(0, 255, 138, .10);
}

html.fnl-light .fnl-page--site .cta__wrapper .social__buttons ul>li>a:hover p {
	color: var(--fnl-white);
}

html.fnl-light .fnl-page--site .cta__wrapper .social__buttons ul>li>a img {
	filter: brightness(0) opacity(.8);
}

html.fnl-light .fnl-page--site .cta__wrapper.cta-team {
	background-color: var(--fnl-bg);
	background-image: none;
	border-bottom-color: rgba(9, 24, 17, .08);
}

html.fnl-light .fnl-page--site .cta__wrapper.cta-team::before {
	background: none;
}

/* --- W10b-1d. Slick loading ground (W10-D13 GIF census) ------------------
   The only GIF on the site is slick's lazy-load spinner, on a hard white
   block (slick-theme.css). The spinner is theme-neutral; its ground is the
   page's. */
html.fnl-light .fnl-page--site .slick-loading .slick-list {
	background-color: var(--fnl-bg);
}

/* W10b-1e inks and hairlines: the later groups' shared families (style.css, rule for rule; screens, video tiles and the AI Brain stage excluded) */

html.fnl-light .fnl-page--site .integrations__wrapper .desc .small-txt>p {
	color: var(--fnl-muted);
}

html.fnl-light .fnl-page--site .integrations__wrapper .desc>p {
	color: var(--fnl-sub);
}

html.fnl-light .fnl-page--site .integrations__wrapper .orbit-ring {
	border: 1px solid rgba(9, 24, 17, .08);
}

html.fnl-light .fnl-page--site .integrations__wrapper {
	border-bottom: 1px solid rgba(9, 24, 17, .08);
}

html.fnl-light .fnl-page--site .workflows__wrapper .outer__workflow>p {
	color: var(--fnl-sub);
}

html.fnl-light .fnl-page--site .workflows__wrapper {
	border-bottom: 1px solid rgba(9, 24, 17, .08);
}

html.fnl-light .fnl-page--site .workflows__wrapper .grid>.elem .desc>span {
	color: var(--fnl-muted);
}

html.fnl-light .fnl-page--site .workflows__wrapper .grid>.elem .desc>p {
	color: var(--fnl-sub);
}

html.fnl-light .fnl-page--site .integrations__wrapper  .outer__integrations .outlined-box {
	border: 1px solid rgba(9, 24, 17, .08);
}

html.fnl-light .fnl-page--site .how__works .pin-stack>p {
	color: var(--fnl-sub);
}

html.fnl-light .fnl-page--site .how__works .float__section>.side__how .side__list>.elem.active>p {
	-webkit-text-fill-color: transparent;
}

html.fnl-light .fnl-page--site .how__works .float__section>.side__how .side__list>.elem>span {
	color: var(--fnl-muted);
}

html.fnl-light .fnl-page--site .how__works .float__section>.side__how .side__list>.elem>p {
	-webkit-text-fill-color: transparent;
}

html.fnl-light .fnl-page--site .how__works .box-screen>.media-box {
	border: 1px solid rgba(9, 24, 17, .08);
}

html.fnl-light .fnl-page--site .how__works .outer__how>p {
	color: var(--fnl-sub);
}

html.fnl-light .fnl-page--site .how__works {
	border-bottom: 1px solid rgba(9, 24, 17, .08);
}

html.fnl-light .fnl-page--site .campaign__wrapper .inner__steps>.elem {
	border: 1px solid rgba(9, 24, 17, .08);
}

html.fnl-light .fnl-page--site .campaign__wrapper .inner__steps>.elem>p>span.txt {
	color: var(--fnl-sub);
}

html.fnl-light .fnl-page--site .campaign__wrapper .inner__steps>.elem>.desc>.desc-inner>span {
	color: var(--fnl-muted);
}

html.fnl-light .fnl-page--site .campaign__wrapper .inner__steps>.elem>.desc>.desc-inner>p {
	color: var(--fnl-sub);
}

html.fnl-light .fnl-page--site .campaign__wrapper .top>p {
	color: var(--fnl-sub);
}

html.fnl-light .fnl-page--site .campaign__wrapper {
	border-bottom: 1px solid rgba(9, 24, 17, .10);
}

html.fnl-light .fnl-page--site .shorts-portfolio {
	border-bottom: 1px solid rgba(9, 24, 17, .08);
}

html.fnl-light .fnl-page--site .process__wrapper {
	border-bottom: 1px solid rgba(9, 24, 17, .08);
}

html.fnl-light .fnl-page--site .process__wrapper .circle__process>.dot>p {
	color: var(--fnl-sub);
}

html.fnl-light .fnl-page--site .process__wrapper .outer__process>p {
	color: var(--fnl-sub);
}

html.fnl-light .fnl-page--site .ticker__tags>p {
	color: var(--fnl-sub);
}

html.fnl-light .fnl-page--site .ticker__tags .info__box>.info>p {
	color: var(--fnl-muted);
}

html.fnl-light .fnl-page--site .ticker__tags .ticker ul li {
	color: var(--fnl-sub);
}

html.fnl-light .fnl-page--site .ticker__tags .info__box>.info {
	border: 1px solid rgba(9, 24, 17, .08);
}

html.fnl-light .fnl-page--site .ticker__tags {
	border-bottom: 1px solid rgba(9, 24, 17, .10);
}

html.fnl-light .fnl-page--site .matrix_wrapper .outer__matrix .text>p {
	color: var(--fnl-muted);
}

html.fnl-light .fnl-page--site .matrix_wrapper {
	border-bottom: 1px solid rgba(9, 24, 17, .08);
}

html.fnl-light .fnl-page--site .matrix_wrapper .outer__matrix .desc>p {
	color: var(--fnl-sub);
}

html.fnl-light .fnl-page--site .brain__wrapper {
	border-bottom: 1px solid rgba(9, 24, 17, .08);
}

html.fnl-light .fnl-page--site .shorts-portfolio .outer__shorts>p {
	color: var(--fnl-sub);
}

html.fnl-light .fnl-page--site .markets__dead .outer__markets .video__box .caption>p span {
	color: var(--fnl-white);
}

html.fnl-light .fnl-page--site .markets__dead .outer__markets .video__box .caption>p {
	color: var(--fnl-sub);
}

html.fnl-light .fnl-page--site .markets__dead .outer__markets .video__box .video {
	border: 1px solid rgba(9, 24, 17, .08);
}

html.fnl-light .fnl-page--site .markets__dead {
	border-bottom: 1px solid rgba(9, 24, 17, .08);
}

html.fnl-light .fnl-page--site .brain__wrapper .bottom__box>p {
	color: var(--fnl-sub);
}

html.fnl-light .fnl-page--site .brain__wrapper .bottom__box {
	border: 1px solid rgba(9, 24, 17, .08);
}

html.fnl-light .fnl-page--site .brain__wrapper .top>p {
	color: var(--fnl-sub);
}

html.fnl-light .fnl-page--site .brain__wrapper .elem__card .desc>span {
	color: var(--fnl-muted);
}

html.fnl-light .fnl-page--site .brain__wrapper .elem__card .desc>p {
	color: var(--fnl-sub);
}

html.fnl-light .fnl-page--site .brain__wrapper .elem__card {
	border: 1px solid rgba(9, 24, 17, .10);
}

/* --- W10b-1e. Shared families of the later groups: grounds and decoration -
   Written once for the homepage, the industry pages, the product pages and
   ai-brain / strategy / workflow / omniscient / analytics (W10c-e). Their
   inks and hairlines are the block above. Product screenshots and client
   creative inside these sections are imagery (W10c-e), not styled here. */

/* The #091811-filled vignette SVGs paint dark blobs on a light ground
   (W10-D3): hidden wherever a page places one. */
html.fnl-light .fnl-page--site img:is([src="img/process-back.svg"], [src="img/markets-gradient.svg"], [src="img/smarter-back.svg"], [src="img/hero-ellipse.svg"], [src="img/inline-ellipse.svg"], [src="img/radial-back.svg"], [src="img/connect-blur.svg"]) {
	display: none;
}

/* The How It Works host's light rays are a `screen` canvas (T5). */
html.fnl-light .fnl-page--site .how__works .how-fx {
	display: none;
}

/* Examples and shorts sliders: the edge fade ran into the dark ground; it
   runs into the page's. The arrows are the funnel's (funnel.css 12b and its
   light rules), sized in section 5. */
html.fnl-light .fnl-page--site .shorts-portfolio .slider-shorts:before {
	background: linear-gradient(to left, rgba(247, 250, 248, 1), rgba(247, 250, 248, 0));
}

/* Integrations: the #050E0A band takes the page ground (on the rail tint
   the section pill's green measured 4.46:1); the orbit nodes are white
   discs on a hairline with ink marks (the funnel precedent for monochrome
   logos: brightness(0) at partial opacity, never inverted); the fade that
   hid the orbit's lower edge runs into the ground. The Figma glass panel
   (.outlined-box) is a light glass on the hairline. */
html.fnl-light .fnl-page--site .integrations__wrapper {
	background-color: var(--fnl-bg);
}

html.fnl-light .fnl-page--site .integrations__wrapper:before {
	background: none;
}

html.fnl-light .fnl-page--site .integrations__wrapper .orbit-node {
	background: #FFFFFF;
	border: 1px solid rgba(9, 24, 17, .10);
	box-shadow: 0 18px 40px -24px rgba(9, 24, 17, .35);
}

html.fnl-light .fnl-page--site .integrations__wrapper .orbit-node::before {
	background: none;
}

html.fnl-light .fnl-page--site .integrations__wrapper .orbit-node>img {
	filter: grayscale(1) brightness(0) opacity(.62);
}

html.fnl-light .fnl-page--site .integrations__wrapper .orbit-node:hover>img {
	filter: grayscale(1) brightness(0) opacity(.86);
}

html.fnl-light .fnl-page--site .integrations__wrapper .outlined-box {
	background: rgba(255, 255, 255, .72);
	border-color: rgba(9, 24, 17, .10);
}

html.fnl-light .fnl-page--site .integrations__wrapper .outer__integrations .circle-integration:before {
	background: linear-gradient(to bottom right, rgba(247, 250, 248, 0) 51%, #F7FAF8 64%);
}

@media (max-width: 991px) {
	html.fnl-light .fnl-page--site .integrations__wrapper .outer__integrations .circle-integration:before {
		background: linear-gradient(12deg, rgba(247, 250, 248, 0) 45%, #F7FAF8 64%);
	}
}

/* Workflows: the dark ground-to-rail wash becomes the page ground (the
   rail end left the pill at 4.46:1); white cards. */
html.fnl-light .fnl-page--site .workflows__wrapper {
	background: var(--fnl-bg);
}

html.fnl-light .fnl-page--site .workflows__wrapper .grid>.elem {
	background: #FFFFFF;
	border-color: rgba(9, 24, 17, .10);
	-webkit-backdrop-filter: none;
	backdrop-filter: none;
}

html.fnl-light .fnl-page--site .workflows__wrapper .grid>.elem::after {
	background: none;
}

/* The "self-improve" matrix: its ground was a #091811 SVG; the glyph rain
   is sage type on it, drawn in the funnel's muted ink. */
html.fnl-light .fnl-page--site .matrix_wrapper {
	background: var(--fnl-bg);
}

html.fnl-light .fnl-page--site .matrix_wrapper .matrix-glyphs text {
	fill: var(--fnl-muted);
}

/* Industry tags: white chips on a hairline, ink icons (the 274 sage ticker
   files, by filter rather than a second copy of each: W10-D3). */
html.fnl-light .fnl-page--site .ticker__tags .ticker ul li,
html.fnl-light .fnl-page--site .ticker__tags .ticker ul li:hover {
	background: #FFFFFF;
	border-color: rgba(9, 24, 17, .10);
	filter: none;
	-webkit-backdrop-filter: none;
	backdrop-filter: none;
}

html.fnl-light .fnl-page--site .ticker__tags .ticker ul li::before,
html.fnl-light .fnl-page--site .ticker__tags .ticker ul li:hover::before {
	background: none;
}

html.fnl-light .fnl-page--site .ticker__tags .ticker ul li img {
	filter: brightness(0);
	opacity: .62;
}

/* The campaign studio (product pages, ai-brain, strategy, workflow,
   omniscient): white step cards; the fade over the blurred back layer runs
   into the ground. The screens themselves are imagery. */
html.fnl-light .fnl-page--site .campaign__wrapper .inner__steps>.elem {
	background: #FFFFFF;
	border-color: rgba(9, 24, 17, .10);
	-webkit-backdrop-filter: none;
	backdrop-filter: none;
}

html.fnl-light .fnl-page--site .campaign__wrapper .float__back:before {
	background: linear-gradient(to bottom, rgba(247, 250, 248, .86), rgba(247, 250, 248, 1) 90%);
}

/* The process wheel: white step discs on a hairline; the active dot keeps
   the brand fill. */
html.fnl-light .fnl-page--site .process__wrapper .circle__process>.dot {
	background-color: #FFFFFF;
	border: 1px solid rgba(9, 24, 17, .12);
	-webkit-backdrop-filter: none;
	backdrop-filter: none;
}

html.fnl-light .fnl-page--site .process__wrapper .circle__process>.dot:before {
	background: none;
}

html.fnl-light .fnl-page--site .process__wrapper .circle__process img {
	filter: brightness(0);
	opacity: .5;
}

/* The CEO demo (T2): style.css pins the dark funnel tokens on the section
   itself, so the page's light tokens never reach inside; the light values
   are re-pinned the same way, one class higher (funnel.css 21a values). */
html.fnl-light .fnl-page--site .fnl-demo-section {
	--fnl-border: 1px solid rgba(9, 24, 17, .10);
	--fnl-glass-bg: rgba(255, 255, 255, .92);
	--fnl-glass-border: 1px solid rgba(9, 24, 17, .14);
	--fnl-media-shadow: 0 30px 70px -40px rgba(9, 24, 17, .40);
	--fnl-green: #007D45;
	--fnl-white: #0B1F16;
	--fnl-sub: #33574A;
	background-color: var(--fnl-bg);
}

/* The AI Brain (W10-D3's decision): the render stays exactly as it is, as a
   dark stage card inside the light section, with the radius and shadow of
   the funnel's media frames. The section is ONE composition: the render
   fills its full height and the heading and the bottom note are laid over
   it (style.css positions them absolutely on the picture), so the stage
   card is the whole composition and the copy on it keeps the dark palette,
   re-pinned as the CEO demo re-pins its own (the spec's "section copy
   light" assumed copy outside the render; W10c may restructure it). The
   icons, the glyph canvas and the hover cards keep their dark palette; the
   light-on-dark dot field around the render is hidden, and the light
   ground shows as the margin around the card. */
html.fnl-light .fnl-page--site .brain__wrapper {
	background-color: var(--fnl-bg);
	padding-top: 40px;
	padding-bottom: 40px;
}

html.fnl-light .fnl-page--site .brain__wrapper > .dots {
	display: none;
}

html.fnl-light .fnl-page--site .brain__wrapper .media {
	width: calc(100% - 60px);
	max-width: 1280px;
	margin-left: auto;
	margin-right: auto;
	overflow: hidden;
	border-radius: 18px;
	background-color: #000;
	box-shadow: 0 30px 70px -40px rgba(9, 24, 17, .40);
}

html.fnl-light .fnl-page--site .brain__wrapper .top,
html.fnl-light .fnl-page--site .brain__wrapper .bottom__box,
html.fnl-light .fnl-page--site .brain__wrapper .media {
	--fnl-green: #00FF8A;
	--fnl-white: #fff;
	--fnl-sub: #A9CDBB;
	--fnl-muted: #83B59F;
	--fnl-dim: #5E8272;
}

html.fnl-light .fnl-page--site .brain__wrapper .top .h2-title span.colored,
html.fnl-light .fnl-page--site .brain__wrapper .top .h2-title span.bold {
	color: #00FF8A;
}

html.fnl-light .fnl-page--site .brain__wrapper .top .fnl-pill {
	background: rgba(0, 255, 138, .07);
	border-color: rgba(0, 255, 138, .22);
}

html.fnl-light .fnl-page--site .brain__wrapper .bottom__box {
	border-color: rgba(255, 255, 255, .1);
}

/* Phones (W3b-1): the heading and the note sit above and below the mini
   stage, on the section ground, so they take the light palette again and
   the note is a white card. */
@media (max-width: 767px) {
	/* W3b-1 tucks the stage 64px under the heading and 56px under the note
	   (they shared one black ground); here the stage is its own card between
	   them. */
	html.fnl-light .fnl-page--site .brain__wrapper .media,
	html.fnl-light .fnl-page--site .brain__wrapper.brain--card-open .media {
		width: auto;
		margin-top: 20px;
		margin-bottom: 20px;
	}

	html.fnl-light .fnl-page--site .brain__wrapper .top,
	html.fnl-light .fnl-page--site .brain__wrapper .bottom__box {
		--fnl-green: #007D45;
		--fnl-white: #0B1F16;
		--fnl-sub: #33574A;
		--fnl-muted: #4A6A5D;
		--fnl-dim: #5A7568;
	}

	html.fnl-light .fnl-page--site .brain__wrapper .top .h2-title span.colored,
	html.fnl-light .fnl-page--site .brain__wrapper .top .h2-title span.bold {
		color: #007D45;
	}

	html.fnl-light .fnl-page--site .brain__wrapper .top .fnl-pill {
		background: rgba(0, 255, 138, .10);
		border-color: rgba(0, 125, 69, .30);
	}

	html.fnl-light .fnl-page--site .brain__wrapper .bottom__box {
		background: #FFFFFF;
		border-color: rgba(9, 24, 17, .10);
		-webkit-backdrop-filter: none;
		backdrop-filter: none;
	}
}

/* W10b-2 inks and hairlines: the CSS-only pages' families (style.css, rule for rule; the case cards and the brand hero keep their white captions over client media) */

html.fnl-light .fnl-page--site .more__case--studies .outer__cases>.top>p {
	color: var(--fnl-sub);
}

html.fnl-light .fnl-page--site .more__case--studies .slick-next {
	border: 1px solid rgba(9, 24, 17, .08);
}

html.fnl-light .fnl-page--site .more__case--studies {
	border-bottom: 1px solid rgba(9, 24, 17, .08);
}

html.fnl-light .fnl-page--site .testimonial__wrapper .outer__testimonial .author>.desc>p {
	color: var(--fnl-sub);
}

html.fnl-light .fnl-page--site .testimonial__wrapper {
	border-top: 1px solid rgba(9, 24, 17, .08);
	border-bottom: 1px solid rgba(9, 24, 17, .08);
}

html.fnl-light .fnl-page--site .testimonial__wrapper .outer__testimonial .author>.desc>span {
	color: var(--fnl-muted);
}

html.fnl-light .fnl-page--site .testimonial__wrapper .outer__testimonial .author>.image {
	border: 1px solid rgba(9, 24, 17, .14);
}

html.fnl-light .fnl-page--site .testimonial__wrapper .outer__testimonial>.comment>p {
	color: var(--fnl-sub);
}

html.fnl-light .fnl-page--site .case__feed {
	border-bottom: 1px solid rgba(9, 24, 17, .08);
}

html.fnl-light .fnl-page--site .case__feed .outer__case .inn>.left>.float-left>ul>li>a.current {
	color: var(--fnl-muted);
}

html.fnl-light .fnl-page--site .case__feed .outer__case .inn>.left>.float-left>ul>li>a {
	color: var(--fnl-muted);
}

html.fnl-light .fnl-page--site .case__feed .inner__content .text .list>ul>li {
	color: var(--fnl-muted);
}

html.fnl-light .fnl-page--site .case__feed .inner__content .text .list {
	border: 1px solid rgba(9, 24, 17, .08);
}

html.fnl-light .fnl-page--site .case__feed .inner__content .text>p {
	color: var(--fnl-sub);
}

html.fnl-light .fnl-page--site .case__feed  .right__box .inn>p {
	color: var(--fnl-sub);
}

html.fnl-light .fnl-page--site .case__feed  .right__box .inn>.tag__main>p {
	color: var(--fnl-muted);
}

html.fnl-light .fnl-page--site .case__feed  .right__box .inn .bottom__tags {
	border-top: 1px solid rgba(9, 24, 17, .08);
}

html.fnl-light .fnl-page--site .case__feed .inner__content .elem__article--case .services__grid>.elem>p {
	color: var(--fnl-sub);
}

html.fnl-light .fnl-page--site .case__feed .inner__content .elem__article--case .services__grid>.elem {
	border-right: 1px solid rgba(9, 24, 17, .08);
}

html.fnl-light .fnl-page--site .case__feed .inner__content .elem__article--case .services__grid>.elem {
	border-top: 1px solid rgba(9, 24, 17, .08);
}

html.fnl-light .fnl-page--site .case__feed .inner__content .elem__article--case .services__grid {
	border: 1px solid rgba(9, 24, 17, .08);
}

html.fnl-light .fnl-page--site .case__feed  .right__box .inn .bottom__tags>.el>ul>li {
	color: var(--fnl-sub);
	border: 1px solid rgba(9, 24, 17, .08);
}

html.fnl-light .fnl-page--site .case__feed  .right__box .inn .bottom__tags>.el>p {
	color: var(--fnl-muted);
}

html.fnl-light .fnl-page--site .case__feed  .right__box .inn>.hyperlink>p {
	color: var(--fnl-muted);
}

html.fnl-light .fnl-page--site .case__feed  .right__box .inn {
	border: 1px solid rgba(9, 24, 17, .08);
}

html.fnl-light .fnl-page--site .hero__contact .outer__contact form {
	border: 1px solid rgba(9, 24, 17, .08);
}

html.fnl-light .fnl-page--site .hero__contact .outer__contact form .group__input>input,
html.fnl-light .fnl-page--site .hero__contact .outer__contact form .group__input>textarea {
	color: var(--fnl-muted);
	border: 1px solid rgba(9, 24, 17, .10);
}

html.fnl-light .fnl-page--site .hero__contact .outer__contact form .group__input>p {
	color: var(--fnl-muted);
}

html.fnl-light .fnl-page--site .hero__contact .outer__contact .float {
	border: 1px solid rgba(9, 24, 17, .08);
}

html.fnl-light .fnl-page--site .elem__article--case .slick-next {
	border: 1px solid rgba(9, 24, 17, .08);
}

html.fnl-light .fnl-page--site .our__story .outer__story .desc .txt {
	-webkit-text-fill-color: transparent;
}

html.fnl-light .fnl-page--site .our__story .outer__story .desc .txt .hl-word.lit {
	color: var(--fnl-sub);
	-webkit-text-fill-color: var(--fnl-sub);
}

html.fnl-light .fnl-page--site .case__hero--video .outer__video--hero>p {
	color: var(--fnl-sub);
}

html.fnl-light .fnl-page--site .team__hero {
	border-bottom: 1px solid rgba(9, 24, 17, .08);
}

html.fnl-light .fnl-page--site .team__hero .outer__team>.desc>p {
	color: var(--fnl-sub);
}

html.fnl-light .fnl-page--site .reviews__wrapper {
	border-bottom: 1px solid rgba(9, 24, 17, .08);
}

html.fnl-light .fnl-page--site .reviews__wrapper .outer__reviews>.top>p {
	color: var(--fnl-sub);
}

html.fnl-light .fnl-page--site .quote__wall .elem .author>.author__info>p {
	color: var(--fnl-sub);
}

html.fnl-light .fnl-page--site .quote__wall .elem .author>.author__info>span {
	color: var(--fnl-muted);
}

html.fnl-light .fnl-page--site .quote__wall .elem .author>.media {
	border: 1px solid rgba(9, 24, 17, .08);
}

html.fnl-light .fnl-page--site .quote__wall .elem >.text>p {
	color: var(--fnl-muted);
}

html.fnl-light .fnl-page--site .quote__wall .elem {
	border: 1px solid rgba(9, 24, 17, .08);
}

html.fnl-light .fnl-page--site .reviews__hero .outer__reviews>p {
	color: var(--fnl-sub);
}

html.fnl-light .fnl-page--site .reviews__hero {
	border-bottom: 1px solid rgba(9, 24, 17, .08);
}

html.fnl-light .fnl-page--site .single__review--wrapper .single__review--slider .slide>.inn.dark>h2,
html.fnl-light .fnl-page--site .single__review--wrapper .single__review--slider .slide>.inn.dark .desc>p {
	color: #000000;
}

html.fnl-light .fnl-page--site .single__review--wrapper .single__review--slider .slide>.inn.dark .desc>span {
	color: rgba(0,0,0,.5);
}

html.fnl-light .fnl-page--site .single__review--wrapper .single__review--slider .slide>.inn.light>h2,
html.fnl-light .fnl-page--site .single__review--wrapper .single__review--slider .slide>.inn.light .desc>p {
	color: var(--fnl-white);
}

html.fnl-light .fnl-page--site .single__review--wrapper .single__review--slider .slide>.inn.light .desc>span {
	color: var(--fnl-muted);
}

html.fnl-light .fnl-page--site .single__review--wrapper .single__review--slider {
	border: 1px solid rgba(9, 24, 17, .08);
}

html.fnl-light .fnl-page--site .single__review--wrapper .controls>a {
	border: 1px solid rgba(9, 24, 17, .08);
}

html.fnl-light .fnl-page--site .more__case--studies .slick-next {
	border-color: transparent;
}

html.fnl-light .fnl-page--site .case__feed .inner__content .text .list {
	border-color: transparent;
}

html.fnl-light .fnl-page--site .case__feed .inner__content .elem__article--case .services__grid {
	border-color: transparent;
}

html.fnl-light .fnl-page--site .case__feed  .right__box .inn .bottom__tags>.el>ul>li {
	border-color: transparent;
}

html.fnl-light .fnl-page--site .case__feed  .right__box .inn {
	border-color: transparent;
}

html.fnl-light .fnl-page--site .hero__contact .outer__contact form {
	border-color: transparent;
}

html.fnl-light .fnl-page--site .hero__contact .outer__contact .desc>.float {
	border-color: transparent;
}

html.fnl-light .fnl-page--site .quote__wall .elem .author>.media {
	border-color: transparent;
}

html.fnl-light .fnl-page--site .quote__wall .elem {
	border-color: transparent;
}

html.fnl-light .fnl-page--site .single__review--wrapper .single__review--slider {
	border-color: transparent;
}

html.fnl-light .fnl-page--site .single__review--wrapper .controls>a {
	border-color: transparent;
}

html.fnl-light .fnl-page--site .team__hero .person-float {
	border: 1px solid rgba(9, 24, 17, .10);
}

html.fnl-light .fnl-page--site .about__hero .outer__about>p {
	color: var(--fnl-sub);
}

html.fnl-light .fnl-page--site .about__hero {
	border-bottom: 1px solid rgba(9, 24, 17, .08);
}

html.fnl-light .fnl-page--site .our__story .desc>p {
	color: var(--fnl-muted);
}

html.fnl-light .fnl-page--site .our__story {
	border-bottom: 1px solid rgba(9, 24, 17, .08);
}

html.fnl-light .fnl-page--site .our__story .outer__story>.mission .inn>p {
	color: #000000;
}

html.fnl-light .fnl-page--site .our__story .outer__story>.mission .inn>span {
	color: rgba(0,0,0,.5);
}

html.fnl-light .fnl-page--site .our__story .outer__story>.mission {
	border: 1px solid rgba(9, 24, 17, .08);
}

html.fnl-light .fnl-page--site .cases__list .outer__list>.top>p {
	color: var(--fnl-sub);
}

html.fnl-light .fnl-page--site .quote__wall .elem >.text>p {
	color: var(--fnl-sub);
}

html.fnl-light .fnl-page--site .our__values {
	border-bottom: 1px solid rgba(9, 24, 17, .08);
}

html.fnl-light .fnl-page--site .our__values .values__block>.elem {
	border-bottom: 1px solid rgba(9, 24, 17, .08);
}

html.fnl-light .fnl-page--site .our__values .values__block>.elem .desc>p {
	color: var(--fnl-muted);
}

html.fnl-light .fnl-page--site .our__values .values__block>.elem>.title>p {
	color: var(--fnl-sub);
}

html.fnl-light .fnl-page--site .our__values .values__block {
	border: 1px solid rgba(9, 24, 17, .08);
}

html.fnl-light .fnl-page--site .voyage__wrapper .outer__voyage>.desc>p {
	color: var(--fnl-muted);
}

html.fnl-light .fnl-page--site .voyage__wrapper .outer__voyage>.media>p {
	color: var(--fnl-white);
}

html.fnl-light .fnl-page--site .voyage__wrapper {
	border-bottom: 1px solid rgba(9, 24, 17, .08);
}

html.fnl-light .fnl-page--site .roadmap .outer__roadmap>p {
	color: var(--fnl-sub);
}

html.fnl-light .fnl-page--site .roadmap .outer__roadmap .map__box>.step>p {
	color: var(--fnl-muted);
}

html.fnl-light .fnl-page--site .roadmap .outer__roadmap .map__box>.step .date>p {
	color: var(--fnl-sub);
}

html.fnl-light .fnl-page--site .roadmap .outer__roadmap .map__box>.step .date {
	border: 1px solid rgba(9, 24, 17, .08);
}

html.fnl-light .fnl-page--site .roadmap .outer__roadmap .map__box {
	border: 1px solid rgba(9, 24, 17, .08);
}

html.fnl-light .fnl-page--site .our__team--slider .slide>.elem .bottom__info>ul li a {
	border: 1px solid rgba(9, 24, 17, .08);
	color: var(--fnl-sub);
	border-color: transparent;
}

html.fnl-light .fnl-page--site .our__team--slider .slide>.elem .bottom__info>p {
	color: var(--fnl-sub);
}

html.fnl-light .fnl-page--site .our__team--slider .slide>.elem>p {
	color: var(--fnl-sub);
}

html.fnl-light .fnl-page--site .our__team--slider .slide>.elem {
	border: 1px solid transparent;
}

html.fnl-light .fnl-page--site .our__team--slider {
	border-bottom: 1px solid rgba(9, 24, 17, .08);
}

html.fnl-light .fnl-page--site .roadmap {
	border-bottom: 1px solid rgba(9, 24, 17, .08);
}

html.fnl-light .fnl-page--site .hero__contact {
	border-bottom: 1px solid rgba(9, 24, 17, .08);
}

html.fnl-light .fnl-page--site .hero__video {
	border-bottom: 1px solid rgba(9, 24, 17, .08);
}

html.fnl-light .fnl-page--site .our__values .outer__values .right-values>.inn>.desc>p {
	color: #000000;
}

html.fnl-light .fnl-page--site .our__values .outer__values .right-values>.inn>span {
	color: rgba(0,0,0,.5);
}

html.fnl-light .fnl-page--site .our__values .outer__values .right-values {
	border: 1px solid rgba(9, 24, 17, .08);
}

html.fnl-light .fnl-page--site .team__members .grid__member>.elem .bottom>ul>li>a {
	border: 1px solid rgba(9, 24, 17, .08);
	color: var(--fnl-sub);
}

html.fnl-light .fnl-page--site .team__members .grid__member>.elem .bottom>p {
	color: var(--fnl-sub);
}

html.fnl-light .fnl-page--site .team__members .grid__member>.elem>p {
	color: var(--fnl-sub);
}

html.fnl-light .fnl-page--site .team__members .grid__member>.elem.dark>p {
	color: rgba(0,0,0,.3);
}

html.fnl-light .fnl-page--site .team__members {
	border-bottom: 1px solid rgba(9, 24, 17, .08);
}

html.fnl-light .fnl-page--site .about__hero {
	border-bottom: 1px solid rgba(9, 24, 17, .08);
}

@media (max-width: 991px) {
	html.fnl-light .fnl-page--site .more__case--studies .slick-prev {
		border: 1px solid rgba(9, 24, 17, .08);
	}
}

html.fnl-light .fnl-page--site .hero__contact .outer__contact form .group__input>input,
html.fnl-light .fnl-page--site .hero__contact .outer__contact form .group__input>textarea {
	color: var(--fnl-white);
}

html.fnl-light .fnl-page--site .elem__article--case .slider.video-slider .elem>.inn img {
	border: 1px solid rgba(9, 24, 17, .08);
}

html.fnl-light .fnl-page--site .case__feed .inner__content .text .sol-img img {
	border: 1px solid rgba(9, 24, 17, .08);
}

html.fnl-light .fnl-page--site .case__feed .inner__content .text .sol-video {
	border: 1px solid rgba(9, 24, 17, .08);
}

html.fnl-light .fnl-page--site .case__feed .inner__content .text>h3 {
	color: var(--fnl-white);
}

html.fnl-light .fnl-page--site .case__feed .inner__content .text>h4 {
	color: var(--fnl-green);
}

html.fnl-light .fnl-page--site .elem__article--case .slider.video-slider .elem.video>.inn {
	border: 1px solid rgba(9, 24, 17, .08);
}

/* --- W10b-2. The CSS-only pages: grounds, cards and decoration -------------
   Their inks and hairlines are in the W10b-2 inks block above. The
   light-on-dark dot canvases (script.js initAsciiBg, no light palette) are
   decoration: hidden, the funnel precedent (funnel.css 21f, 21m). */
html.fnl-light .fnl-page--site :is(.our__values > .values-dots, .our__team--slider > .team-dots, .voyage__wrapper > .dots, .team__hero .ascii-team, .team__members .member-dots, .reviews__wrapper > .dots, .reviews__wrapper > .light-rays, .reviews__hero .hero-fx, .hero__contact .ascii-contact, .case__hero--video .cases-dots, .cases__list .cases-dots, .testimonial__wrapper .dots) {
	display: none;
}

/* 2a. /aboutus. The mission card is the brand fill with black ink; its
   caption was black at .5 (3.8:1 on the fill, in either theme): .7 reads
   (5.6:1) and stays a caption. */
html.fnl-light .fnl-page--site .our__story .outer__story .desc .txt {
	background-image: linear-gradient(to bottom, var(--fnl-dim), rgba(9, 24, 17, .22));
}

html.fnl-light .fnl-page--site .our__story .outer__story .desc .txt .hl-word.lit {
	color: var(--fnl-sub);
	-webkit-text-fill-color: var(--fnl-sub);
}

html.fnl-light .fnl-page--site .our__story .desc .icon-float,
html.fnl-light .fnl-page--site .our__story .desc .story-logo-pin {
	background: #FFFFFF;
	border: 1px solid rgba(9, 24, 17, .10);
}

html.fnl-light .fnl-page--site .our__story .desc .icon-float img,
html.fnl-light .fnl-page--site .our__story .desc .story-logo-pin img {
	filter: brightness(0);
	opacity: .62;
}

html.fnl-light .fnl-page--site .our__story .outer__story>.mission .inn>span,
html.fnl-light .fnl-page--site .our__values .outer__values .right-values>.inn>span {
	color: rgba(0, 0, 0, .7);
}

html.fnl-light .fnl-page--site .our__values .outer__values .right-values,
html.fnl-light .fnl-page--site .our__values .values__block {
	background: #FFFFFF;
	border-color: rgba(9, 24, 17, .10);
}

html.fnl-light .fnl-page--site .our__team--slider {
	background-color: var(--fnl-bg);
}

/* The section's green glow photograph (img/team-gradient.webp) and dot
   image are light-on-dark decoration. */
html.fnl-light .fnl-page--site .our__team--slider > img {
	display: none;
}

/* Team cards: studio portraits on pale grey, ending in black clothing. The
   name sits on the pale top of the photo: a band of ground under ink. The
   role caption sits on the dark bottom: the dark theme's own shade, under a
   light caption (as on /team). */
html.fnl-light .fnl-page--site .our__team--slider .slide>.elem {
	border-color: rgba(9, 24, 17, .10);
	background: #FFFFFF;
}

html.fnl-light .fnl-page--site .our__team--slider .slide>.elem:after {
	background: linear-gradient(to bottom, rgba(247, 250, 248, .86) 0%, rgba(247, 250, 248, 0) 26%, rgba(5, 14, 10, 0) 55%, rgba(5, 14, 10, .85) 100%);
}

html.fnl-light .fnl-page--site .our__team--slider .slide>.elem>p {
	color: var(--fnl-white);
}

html.fnl-light .fnl-page--site .our__team--slider .slide>.elem .bottom__info>p {
	color: rgba(255, 255, 255, .72);
}

html.fnl-light .fnl-page--site .our__team--slider .slide>.elem .bottom__info>ul li a {
	background: rgba(255, 255, 255, .8);
	border-color: rgba(9, 24, 17, .14);
}

html.fnl-light .fnl-page--site .our__team--slider .slide>.elem .bottom__info>ul li a:hover {
	background-color: rgba(0, 125, 69, .06);
}

/* Roadmap: the track and the pending dots were dark green on dark; the
   progress stays the brand fill. The step discs drop their dark glow photo
   for a white disc; the current step keeps its green fill. */
html.fnl-light .fnl-page--site .roadmap:before {
	display: none;
}

html.fnl-light .fnl-page--site .roadmap .outer__roadmap .map__box {
	background: #FFFFFF;
	border-color: rgba(9, 24, 17, .10);
}

html.fnl-light .fnl-page--site .roadmap .outer__roadmap .map__box:before {
	background: linear-gradient(to right, rgba(9, 24, 17, .14) 90%, rgba(9, 24, 17, 0));
}

html.fnl-light .fnl-page--site .roadmap .outer__roadmap .map__box>.dot,
html.fnl-light .fnl-page--site .roadmap.roadmap-anim .outer__roadmap .map__box>.dot.filled {
	background-color: rgba(9, 24, 17, .14);
}

html.fnl-light .fnl-page--site .roadmap .outer__roadmap .map__box>.dot.filled,
html.fnl-light .fnl-page--site .roadmap.roadmap-anim.roadmap-in .outer__roadmap .map__box>.dot.filled {
	background-color: #00FF8A;
}

html.fnl-light .fnl-page--site .roadmap .outer__roadmap .map__box>.step>.media {
	background: #FFFFFF;
	border: 1px solid rgba(9, 24, 17, .14);
}

html.fnl-light .fnl-page--site .roadmap .outer__roadmap .map__box>.step>.media img {
	filter: brightness(0);
	opacity: .62;
}

html.fnl-light .fnl-page--site .roadmap .outer__roadmap .map__box>.step.current>.media {
	background: #00FF8A;
	border-color: #00FF8A;
}

html.fnl-light .fnl-page--site .roadmap .outer__roadmap .map__box>.step.current>.media img {
	opacity: 1;
}

@media (max-width: 767px) {
	html.fnl-light .fnl-page--site .roadmap .outer__roadmap .map__box>.step:before {
		background: rgba(9, 24, 17, .14);
	}

	html.fnl-light .fnl-page--site .roadmap .outer__roadmap .map__box>.step.current:before {
		background: linear-gradient(to bottom, rgba(0, 255, 138, 1), rgba(0, 255, 138, .35));
	}
}

/* "Valiant Effort": a night photograph of the team under the copy. The
   funnel hero scrim (funnel.css 21d): the ground behind the text column,
   easing to a single lighter veil over the picture. */
html.fnl-light .fnl-page--site .voyage__wrapper {
	position: relative;
	background-color: var(--fnl-bg);
}

html.fnl-light .fnl-page--site .voyage__wrapper::after {
	content: "";
	position: absolute;
	inset: 0;
	pointer-events: none;
	background: linear-gradient(90deg, #F7FAF8 0%, #F7FAF8 26%, rgba(247, 250, 248, .90) 48%, rgba(247, 250, 248, .74) 100%);
}

/* Its copy sits over the veiled photograph: the body ink, not the muted one. */
html.fnl-light .fnl-page--site .voyage__wrapper .outer__voyage>.desc>p {
	color: var(--fnl-sub);
}

html.fnl-light .fnl-page--site .voyage__wrapper > .container {
	position: relative;
	z-index: 1;
}

@media (max-width: 991px) {
	html.fnl-light .fnl-page--site .voyage__wrapper::after {
		background: rgba(247, 250, 248, .88);
	}
}

@media (max-width: 767px) {
	html.fnl-light .fnl-page--site .voyage__wrapper {
		background-color: var(--fnl-bg);
	}
}

/* 2b. /team. The floating avatar chips were white-alpha glass; the members'
   grid sat on a dark glow photograph (decoration: the page ground). */
html.fnl-light .fnl-page--site .team__hero .person-float {
	background: #FFFFFF;
	border-color: rgba(9, 24, 17, .12);
	box-shadow: 0 18px 40px -24px rgba(9, 24, 17, .35);
}

html.fnl-light .fnl-page--site .team__hero .person-float>.arrow {
	filter: brightness(0);
	opacity: .4;
}

html.fnl-light .fnl-page--site .team__members {
	background: var(--fnl-bg);
}

html.fnl-light .fnl-page--site .team__members .outer__members>img {
	display: none;
}

html.fnl-light .fnl-page--site .team__members .grid__member>.elem>p,
html.fnl-light .fnl-page--site .team__members .grid__member>.elem.dark>p {
	color: var(--fnl-white);
}

/* The portraits end in black clothing: the role caption under each one is
   a caption over the photograph and stays light (white at .72, as the case
   bands' sub-line); the LinkedIn chip is the light outline chip. */
html.fnl-light .fnl-page--site .team__members .grid__member>.elem .bottom>p {
	color: rgba(255, 255, 255, .72);
}

html.fnl-light .fnl-page--site .team__members .grid__member>.elem .bottom>ul>li>a {
	background: rgba(255, 255, 255, .8);
	border-color: rgba(9, 24, 17, .14);
}

html.fnl-light .fnl-page--site .team__members .grid__member>.elem .bottom>ul>li>a:hover {
	background-color: rgba(0, 125, 69, .06);
}

/* 2c. /reviews. The hero's rays, beam, glow and particles are `screen`
   light-on-dark (they vanish on white): hidden with the canvases above. The
   header rotator is a white card; the Wall of Love cards were a 40% black
   wash under !important (style.css), beaten the same way, into the funnel
   testimonial card (funnel.css 21q: white on a hairline). */
html.fnl-light .fnl-page--site .single__review--wrapper .single__review--slider {
	background: #FFFFFF;
	border-color: rgba(9, 24, 17, .10);
	box-shadow: 0 30px 70px -40px rgba(9, 24, 17, .40);
	-webkit-backdrop-filter: none;
	backdrop-filter: none;
}

html.fnl-light .fnl-page--site .single__review--wrapper .controls>a {
	background: #FFFFFF;
	border-color: rgba(9, 24, 17, .14);
}

html.fnl-light .fnl-page--site .single__review--wrapper .controls>a img {
	filter: brightness(0);
	opacity: .7;
}

html.fnl-light .fnl-page--site .single__review--wrapper .single__review--slider .slide>.inn.light .author .spacer {
	background: linear-gradient(to bottom, rgba(9, 24, 17, .22), rgba(9, 24, 17, 0));
}

html.fnl-light .fnl-page--site .quote__wall .elem {
	background: #FFFFFF;
	background-color: #FFFFFF !important; /* style.css: rgba(0,0,0,.4) !important */
	border-color: rgba(9, 24, 17, .10);
	-webkit-backdrop-filter: none;
	backdrop-filter: none;
}

html.fnl-light .fnl-page--site .reviews__wrapper .quote__wall.qp-anim>.elem {
	-webkit-backdrop-filter: none;
	backdrop-filter: none;
}

/* The rotator's green review card: its caption was black at .5 (3.8:1). */
html.fnl-light .fnl-page--site .single__review--wrapper .single__review--slider .slide>.inn.dark .desc>span,
html.fnl-light .fnl-page--site .single__review--wrapper .single__review--slider .slide>.inn:not(.light) .author>.desc>span {
	color: rgba(0, 0, 0, .7);
}

/* The rating stars and the quote mark are sage files (#83B59F, 2.2:1 on
   white). The stars take the funnel testimonial wall's green
   (funnel.css 21q), restated as the same drawing in #007D45 (the funnel's
   data-URI precedent, 22k); the quote mark is a monochrome mark. */
html.fnl-light .fnl-page--site .quote__wall img[src="img/star.svg"] {
	content: url("data:image/svg+xml,%3Csvg width='17' height='16' viewBox='0 0 17 16' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M17 6.13699H10.5041L8.51382 0L6.49593 6.13699L0 6.10959L5.25203 9.89041L3.23415 16L8.48618 12.2192L13.7382 16L11.7203 9.89041L17 6.13699Z' fill='%23007D45'/%3E%3C/svg%3E");
}

html.fnl-light .fnl-page--site .quote__wall img[src="img/quote-white.svg"] {
	filter: brightness(0);
	opacity: .3;
}

html.fnl-light .fnl-page--site .quote__wall .elem .author>.media.rv-mono {
	color: var(--fnl-green);
	border-color: rgba(0, 125, 69, .30);
}

/* 2d. /contact. The butterfly film is invisible under any light veil (mean
   luminance 4 of 255): dropped on the lit page (W10-D3). The form has no
   funnel precedent (R6a 1e); it is built from the tokens: a white card,
   white fields on a hairline, ink text, --fnl-dim placeholders and the
   funnel focus ring (FLAG: derived design). */
html.fnl-light .fnl-page--site .hero__video > video.hero-video,
html.fnl-light .fnl-page--site .hero__video > .hero-video__poster {
	display: none;
}

html.fnl-light .fnl-page--site .hero__contact {
	background: var(--fnl-bg);
}

html.fnl-light .fnl-page--site .hero__contact:before {
	display: none;
}

html.fnl-light .fnl-page--site .hero__contact .outer__contact form {
	background: #FFFFFF;
	border: 1px solid rgba(9, 24, 17, .10);
	box-shadow: 0 30px 70px -40px rgba(9, 24, 17, .40);
	-webkit-backdrop-filter: none;
	backdrop-filter: none;
}

html.fnl-light .fnl-page--site .hero__contact .outer__contact .float {
	background: #FFFFFF;
	border: 1px solid rgba(9, 24, 17, .10);
	-webkit-backdrop-filter: none;
	backdrop-filter: none;
}

html.fnl-light .fnl-page--site .hero__contact .outer__contact .float img {
	filter: brightness(0);
	opacity: .62;
}

html.fnl-light .fnl-page--site .hero__contact .outer__contact form .group__input>input,
html.fnl-light .fnl-page--site .hero__contact .outer__contact form .group__input>textarea {
	background: #FFFFFF;
	border: 1px solid rgba(9, 24, 17, .16);
	color: var(--fnl-white);
}

html.fnl-light .fnl-page--site .hero__contact .outer__contact form .group__input>input::placeholder,
html.fnl-light .fnl-page--site .hero__contact .outer__contact form .group__input>textarea::placeholder {
	color: var(--fnl-dim);
	opacity: 1;
}

html.fnl-light body.fnl-page--site .hero__contact .outer__contact form .group__input > input:focus-visible,
html.fnl-light body.fnl-page--site .hero__contact .outer__contact form .group__input > textarea:focus-visible {
	border-color: #007D45;
	outline: 2px solid #007D45;
	outline-offset: 1px;
}

html.fnl-light body.fnl-page--site .hero__contact .outer__contact form .group__input > label,
html.fnl-light .fnl-page--site .hero__contact .outer__contact form .group__input>p {
	color: var(--fnl-muted);
}

html.fnl-light body.fnl-page--site .contact-form__status {
	color: var(--fnl-white);
	background: rgba(9, 24, 17, .04);
	border-color: rgba(9, 24, 17, .10);
}

/* The error state keeps the dark theme's red wash and border (the only red
   the site has); its text takes the ink. */
html.fnl-light body.fnl-page--site .contact-form__status--error {
	color: var(--fnl-white);
}

html.fnl-light body.fnl-page--site .contact-form__done > p {
	color: var(--fnl-sub);
}

html.fnl-light body.fnl-page--site .contact-form__done > .contact-form__done-title {
	color: var(--fnl-white);
}

html.fnl-light body.fnl-page--site .contact-form__done a,
html.fnl-light body.fnl-page--site .contact-form__done strong {
	color: var(--fnl-green);
}

/* 2e. /case-studies. The case cards are client photographs with their own
   dark shade under white captions (client media: kept). Their "Read Story"
   chip is the light outline button (funnel.css 21o, a white chip), so its
   label takes the ink instead of the dark theme's white. */
html.fnl-light .fnl-page--site .cases__list .main__list>.el .btn>a,
html.fnl-light .fnl-page--site .cases-slider .slide .inn .desc .btn>a {
	color: var(--fnl-white);
}

/* The Whop card is the brand's orange with no photograph, so the dark
   theme's 40% page sheet (.overlay, neutralised in section 1) was what
   carried its white caption; it keeps that paint (3.5:1 without it). */
html.fnl-light .fnl-page--site .cases__list .main__list>.el[style*="FA4616" i] {
	background-image: linear-gradient(rgba(0, 0, 0, .4), rgba(0, 0, 0, .4));
}

/* /contact's closing band: a #091811 vignette (connect-blur.svg) over the
   photograph paints a dark blob on the light band. */
html.fnl-light .fnl-page--site .cta__wrapper.with-background > img {
	display: none;
}

/* 2f. The five case studies. The hero is the client's brand band (Whop
   orange, the Dimers, Rebet and Upper Deckys artwork, the T3 photograph):
   it stays dark inside the light page (W10-D6, the funnel precedent for
   client media), with its white copy. On the dark page the band sat under
   the site-wide 40% black sheet (.overlay, neutralised in section 1) and
   its own 15% shade: .49 is those two composed, so the band keeps exactly
   the paint it had (the sub-line's white goes from .6 to .72). The header overlaps its top edge: a band of page ground
   under the navigation, easing into the brand band below it. */

html.fnl-light .fnl-page--site .case__hero:not(.plain) .h2-title {
	color: #fff;
}

html.fnl-light .fnl-page--site .case__hero:not(.plain) .h2-title span.colored {
	color: #00FF8A;
}

html.fnl-light .fnl-page--site .case__hero:not(.plain) .outer__case .desc>p,
html.fnl-light .fnl-page--site .case__hero:not(.plain) h1.h2-title.bigger + p {
	color: rgba(255, 255, 255, .72);
}

/* The Trustpilot badge inherits --fnl-white (funnel.css 21p): the dark
   value inside the band. The trust pill is the light glass chip already. */
html.fnl-light .fnl-page--site .case__hero:not(.plain) .fnl-sp--tp {
	--fnl-white: #fff;
}

html.fnl-light .fnl-page--site .case__hero:not(.plain) > .container {
	position: relative;
	z-index: 2;
}

html.fnl-light .fnl-page--site .case__hero:not(.plain)::after {
	background: linear-gradient(to bottom, #F7FAF8 0, #F7FAF8 96px, rgba(247, 250, 248, 0) 150px), rgba(0, 0, 0, .49);
}

/* The quote band's glow photograph (img/testimonials-back.webp) is
   light-on-dark decoration. */
/* The T3 band is a photograph, brighter behind the sub-line than the other
   brands' artwork: 4.4:1 for white there (the same on the dark page). Its
   shade goes to .55 so the white copy clears 4.5. */
html.fnl-light .fnl-page--site .case__hero[style*="case-back.webp"]::after {
	background: linear-gradient(to bottom, #F7FAF8 0, #F7FAF8 96px, rgba(247, 250, 248, 0) 150px), rgba(0, 0, 0, .55);
}

html.fnl-light .fnl-page--site .testimonial__wrapper {
	background-color: var(--fnl-bg);
}

html.fnl-light .fnl-page--site .testimonial__wrapper img[src*="testimonials-back"] {
	display: none;
}

html.fnl-light .fnl-page--site .case__feed .right__box .inn,
html.fnl-light .fnl-page--site .case__feed .inner__content .elem__article--case .services__grid {
	background: #FFFFFF;
	border-color: rgba(9, 24, 17, .10);
}

html.fnl-light .fnl-page--site .case__feed .right__box .inn .bottom__tags>.el>ul>li {
	background: rgba(9, 24, 17, .04);
	border-color: rgba(9, 24, 17, .10);
}

html.fnl-light .fnl-page--site .case__feed .right__box .inn>.tag__main {
	background-color: rgba(0, 255, 138, .12);
	border: 1px solid rgba(0, 125, 69, .28);
}

html.fnl-light .fnl-page--site .case__feed .right__box .inn>.tag__main>p {
	color: var(--fnl-green);
}

html.fnl-light .fnl-page--site .case__feed .right__box .inn>.hyperlink>p>a {
	color: var(--fnl-green);
}

html.fnl-light .fnl-page--site .case__feed .right__box .inn>.hyperlink>p>a:hover {
	filter: none;
	color: var(--fnl-white);
}

html.fnl-light .fnl-page--site .case__feed .outer__case .inn>.left>.float-left>ul>li>a:before {
	background: linear-gradient(to right, #007D45 15%, rgba(0, 125, 69, 0) 65%);
}

html.fnl-light .fnl-page--site .case__feed .outer__case .inn>.left>.float-left>ul>li>a.current {
	color: var(--fnl-white);
}

html.fnl-light .fnl-page--site .elem__article--case .slider:before {
	background: linear-gradient(to right, rgba(247, 250, 248, 0), rgba(247, 250, 248, 1));
}

html.fnl-light .fnl-page--site :is(.elem__article--case, .more__case--studies) .slick-next,
html.fnl-light .fnl-page--site :is(.elem__article--case, .more__case--studies) .slick-prev {
	background: #FFFFFF url("data:image/svg+xml,%3Csvg width='16' height='16' viewBox='0 0 16 16' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M14.3881 8.41791H0V7.58209H14.3881L7.40299 0.597015L8 0L16 8L8 16L7.40299 15.403L14.3881 8.41791Z' fill='%230B1F16' fill-opacity='0.7'/%3E%3C/svg%3E") center no-repeat;
	border-color: rgba(9, 24, 17, .14);
	-webkit-backdrop-filter: none;
	backdrop-filter: none;
}

html.fnl-light .fnl-page--site :is(.elem__article--case, .more__case--studies) .slick-next:hover,
html.fnl-light .fnl-page--site :is(.elem__article--case, .more__case--studies) .slick-prev:hover {
	background-color: #F1F7F3;
	border-color: rgba(0, 125, 69, .45);
}

/* 2g. Marks and icon wells on these pages (the image class decisions).
   The value and service icons sit on dark green glow tiles set inline
   (img/services-back-*.webp): on light they are the funnel's green icon
   well (funnel.css 21g: .12 wash on a .28 green hairline), beaten with
   !important because the tile is an inline style. Their glyphs are
   #00FF8A-only files: brightness(.49) takes that exact green to #007D45,
   the readable green. Sage and white marks that now sit on white (list
   ticks, the copy and date icons, the textarea grip, the "Read Story"
   arrow on its white chip) take the ink at partial opacity. White logos
   over client photographs and inside the brand bands stay white. */
html.fnl-light .fnl-page--site .our__values .values__block>.elem>.title>.media,
html.fnl-light .fnl-page--site .case__feed .inner__content .elem__article--case .services__grid>.elem>span {
	background: rgba(0, 255, 138, .12) !important; /* inline style="background:url(img/services-back-*.webp)" */
	border: 1px solid rgba(0, 125, 69, .28);
}

html.fnl-light .fnl-page--site .our__values .values__block>.elem>.title>.media img,
html.fnl-light .fnl-page--site .case__feed .inner__content .elem__article--case .services__grid>.elem>span img {
	filter: brightness(.49);
}

html.fnl-light .fnl-page--site :is(img[src="img/check-border.svg"], img[src="img/copy-icon.svg"], img[src="img/date-icon.svg"], img[src="img/resize-textarea.svg"]),
html.fnl-light .fnl-page--site .cases__list .main__list>.el .btn>a img[src="img/arrow-btn-right.svg"] {
	filter: brightness(0);
	opacity: .55;
}

/* ==========================================================================
   W10d. Light mode on the product pages (Website 2.0 Part Three)
   --------------------------------------------------------------------------
   email, funnel, graphic-design and video. The shared families are W10b's;
   this section holds only what is unique to these four pages:
     W10d-1  the four heroes (photo veil, decoration to token gradient,
             radial to ground, video grid scrim to the funnel's);
     W10d-2  /video's avatar section;
     W10d-3  families the four pages share with W10e's pages that W10b did
             not cover (the studio's photo cards and icons, the dot
             canvases, the mint ellipse glows). These are scoped to the four
             pages by their hero, so W10e's pages cannot change; W10e can
             widen the scope when it lights its own.
   Tokens are funnel.css 21a's; the only literals are the section-21 set
   (ground #F7FAF8, stage #FFFFFF, hairline rgba(9, 24, 17, x), mint wash
   rgba(0, 255, 138, x)). The campaign screenshots are the light twins
   (img/campaigns/*-light.webp, img/copywriting-email-light.jpg), repointed in
   the markup, not styled here.
   ========================================================================== */

/* --- W10d-1a. /email hero ---------------------------------------------------
   email-back.webp is a photo on a transparent left half. The ground shows
   through the transparent half; ONE ground veil (funnel.css 21n) sits over the
   photo where the copy column meets it, solid under the copy and open over
   the laptop. On tablets and phones the copy sits on the photo, so the black
   sheet style.css adds there becomes the same single ground veil at .85. */
html.fnl-light .fnl-page--site .hero__email {
	background-color: var(--fnl-bg);
}

html.fnl-light .fnl-page--site .hero__email::before {
	content: "";
	position: absolute;
	inset: 0;
	z-index: 1;
	pointer-events: none;
	background: linear-gradient(90deg,
		#F7FAF8 0%,
		#F7FAF8 30%,
		rgba(247, 250, 248, .86) 44%,
		rgba(247, 250, 248, 0) 64%);
}

html.fnl-light .fnl-page--site .hero__email .outer__email {
	position: relative;
	z-index: 2;
}

@media (max-width: 991px) {
	html.fnl-light .fnl-page--site .hero__email:before {
		background: rgba(247, 250, 248, .85);
	}
}

/* --- W10d-1b. /funnel hero --------------------------------------------------
   funnel-back.webp is a dark decoration (a green floor glow on near-black),
   not content: replaced by the page ground and the funnel's radial mint glow
   (W10-D4, .06). The phone in the hand is client creative and stays. */
html.fnl-light .fnl-page--site .hero__funnel {
	background: radial-gradient(ellipse 60% 55% at 50% 100%, rgba(0, 255, 138, .06) 0%, rgba(0, 255, 138, 0) 100%), var(--fnl-bg);
}

/* --- W10d-1c. /graphic-design hero -----------------------------------------
   The radial that clears the ad-creative orbit behind the copy was the dark
   ground; it is the page ground, same stops. The mint ellipse behind it keeps
   the funnel's .06 peak (its fill is .2), the ad tiles take the hairline
   shadow of the light media cards (W10b-1e), and the rule under the band is a
   hairline. */
html.fnl-light .fnl-page--site .hero__graphic--design {
	border-bottom-color: rgba(9, 24, 17, .08);
}

html.fnl-light .fnl-page--site .hero__graphic--design::before {
	background: radial-gradient(ellipse 52% 52% at var(--hero-fx, 50%) var(--hero-fy, 50%), rgba(247, 250, 248, 1) 0%, rgba(247, 250, 248, 1) 34%, rgba(247, 250, 248, .6) 60%, rgba(247, 250, 248, 0) 86%);
}

/* Phones: the copy spans the full width, so the clearing radial widens to
   hold every line on the ground (dark tiles measured 1.7:1 under the sub at
   the dark geometry). */
@media (max-width: 767px) {
	html.fnl-light .fnl-page--site .hero__graphic--design::before {
		background: radial-gradient(ellipse 75% 50% at var(--hero-fx, 50%) var(--hero-fy, 50%), rgba(247, 250, 248, 1) 0%, rgba(247, 250, 248, 1) 50%, rgba(247, 250, 248, .6) 75%, rgba(247, 250, 248, 0) 95%);
	}
}

html.fnl-light .fnl-page--site .hero__graphic--design .graphic-ellipse {
	opacity: .3;
}

html.fnl-light .fnl-page--site .hero__graphic--design .tickets-orbit .ticket img {
	box-shadow: 0 18px 40px -24px rgba(9, 24, 17, .35);
}

/* --- W10d-1d. /video hero ---------------------------------------------------
   The ad funnels' /video hero IS this hero (funnel.css 6b copied /video's
   curve verbatim), so the grid scrim takes the funnel's light scrim (21d)
   verbatim. On phones the copy spans the tile field, so the dark phone
   scrim's shape is inverted instead (funnel.css 21d phone values assume copy
   and media do not overlap, which holds on the ad hero only). The mint
   ellipse keeps a .06 peak. */
html.fnl-light .fnl-page--site .hero__grid--video {
	background-color: var(--fnl-bg);
	border-bottom-color: rgba(9, 24, 17, .08);
}

html.fnl-light .fnl-page--site .hero__grid--video:after {
	background:
		linear-gradient(90deg,
			#F7FAF8 0%,
			#F7FAF8 26%,
			rgba(247, 250, 248, .90) 50%,
			rgba(247, 250, 248, .74) 78%,
			rgba(247, 250, 248, .84) 100%),
		linear-gradient(0deg,
			rgba(247, 250, 248, .88) 0%,
			rgba(247, 250, 248, 0) 22%,
			rgba(247, 250, 248, 0) 80%,
			rgba(247, 250, 248, .78) 100%);
}

@media (max-width: 767px) {
	html.fnl-light .fnl-page--site .hero__grid--video:after {
		background:
			linear-gradient(90deg,
				rgba(247, 250, 248, .92) 0%,
				rgba(247, 250, 248, .88) 55%,
				rgba(247, 250, 248, .78) 100%),
			linear-gradient(0deg,
				rgba(247, 250, 248, .9) 0%,
				rgba(247, 250, 248, .5) 55%,
				rgba(247, 250, 248, .92) 100%);
	}
}

html.fnl-light .fnl-page--site .hero__grid--video > img.ellipse-video {
	opacity: .2;
}

/* --- W10d-2. /video: "Avatars So Real" -------------------------------------
   The glow under the presenter (avatar-ellipse.svg, fill .3) becomes the
   funnel's .06 mint wash. The feature chips were white-alpha glass with a
   white-alpha ring: white chips on the hairline ring, sub ink, ink ticks; the
   leader lines are hairlines. */
html.fnl-light .fnl-page--site .avatar__wrapper {
	border-bottom-color: rgba(9, 24, 17, .08);
}

html.fnl-light .fnl-page--site .avatar__wrapper > img[src="img/avatar-ellipse.svg"] {
	opacity: .2;
}

html.fnl-light .fnl-page--site .avatar__media .avatar-float {
	background: #FFFFFF;
	-webkit-backdrop-filter: none;
	backdrop-filter: none;
	box-shadow: 0 18px 40px -24px rgba(9, 24, 17, .35);
}

html.fnl-light .fnl-page--site .avatar__media .avatar-float p:before {
	background: rgba(9, 24, 17, .12);
}

html.fnl-light .fnl-page--site .avatar__media .avatar-float>p {
	color: var(--fnl-sub);
}

html.fnl-light .fnl-page--site .avatar__media .avatar-float>p span img {
	filter: brightness(0);
	opacity: .62;
}

html.fnl-light .fnl-page--site .avatar__media .avatar-float>.stick,
html.fnl-light .fnl-page--site .avatar__media .avatar-float>.stick:before {
	background-color: rgba(9, 24, 17, .22);
}

/* --- W10d-3. Families shared with W10e, scoped to these four pages --------
   Scope: the four pages' heroes are direct children of the body and no other
   page uses them (.hero__grid--video is also the ad funnels' hero, but those
   pages carry .fnl-page--ad, never the site marker). FLAG for W10e: widen the
   :has() list when ai-brain, strategy, workflow and omniscient are lit. */

/* 3a. The campaign studio's photo cards. W10b-1e made the step cards white;
   a card shows a photo (media__full) when it is the open step, and every card
   does on tablets and phones, where the steps are a photo grid. The photo's
   black gradient under now-dark ink read as a dark block: it becomes one
   stage-white veil (the card is white), so the photo is a tint and the copy
   is ink. The step icons are sage files: ink by filter, the funnel precedent. */
html.fnl-light .fnl-page--site:has(> :is(.hero__email, .hero__funnel, .hero__graphic--design, .hero__grid--video)) .campaign__wrapper .inner__steps>.elem>.media__full:before {
	background: rgba(255, 255, 255, .88);
}

html.fnl-light .fnl-page--site:has(> :is(.hero__email, .hero__funnel, .hero__graphic--design, .hero__grid--video)) .campaign__wrapper .inner__steps>.elem>.desc>.desc-inner>span {
	color: var(--fnl-sub);
}

html.fnl-light .fnl-page--site:has(> :is(.hero__email, .hero__funnel, .hero__graphic--design, .hero__grid--video)) .campaign__wrapper .inner__steps>.elem>p>span img {
	filter: brightness(0);
	opacity: .62;
}

/* 3b. Dot canvases. script.js draws the examples slider's field white and
   the studio's back-layer dots on the dark palette, with no light palette:
   decoration, hidden (funnel.css 21f, W10b-2). The process wheel's rocket is
   the section's only picture, so it is kept and inked by filter at the
   wheel icons' strength (W10b-1e). */
html.fnl-light .fnl-page--site:has(> :is(.hero__email, .hero__funnel, .hero__graphic--design, .hero__grid--video)) :is(.shorts-portfolio > .dots-float, .campaign__wrapper .float__back > .dots) {
	display: none;
}

html.fnl-light .fnl-page--site:has(> :is(.hero__email, .hero__funnel, .hero__graphic--design, .hero__grid--video)) .process__wrapper .circle__process .ascii-dots {
	filter: brightness(0) opacity(.5);
}

/* 3c. The examples slider's mint ellipse (reviews-back-ellipses.svg, fill
   .15) keeps the funnel's .06 peak. */
html.fnl-light .fnl-page--site:has(> :is(.hero__email, .hero__funnel, .hero__graphic--design, .hero__grid--video)) .shorts-portfolio > img.ellipses-float {
	opacity: .4;
}

/* 3d. The AI Brain note on tablets. W10b-1e insets the stage card 30px each
   side; the note is absolute at a 756px max width, so between 768px and about
   820px it ran past the card's edges onto the light ground. It keeps the
   card's inset. FLAG for W10c (the brain's owner): the same overflow exists
   on every lit page with the stage. */
@media (min-width: 768px) {
	html.fnl-light .fnl-page--site:has(> :is(.hero__email, .hero__funnel, .hero__graphic--design, .hero__grid--video)) .brain__wrapper .bottom__box {
		max-width: min(756px, calc(100% - 90px));
	}
}

/* ==========================================================================
   W10e. Light mode on ai-brain, strategy, workflow, valiant-omniscient,
   analytics and how-it-works (Website 2.0 Part Three)
   --------------------------------------------------------------------------
   Page-unique rules only: the shared families (headings, the closing CTA,
   the veil, integrations, workflows, matrix, the campaign studio, the AI
   Brain stage, the process wheel) are W10b-1. Same conventions: every
   selector carries html.fnl-light and the site marker, the funnel tokens
   only, a rule that replaces one inside a media query repeats the query.
   Image swaps (the -light twins) are in the page markup, not here.
     W10e-1  the two dark stages: the /ai-brain hero (brainanimation.mp4) and
             the /strategy hero (the hands video), W10-D3's brain decision;
     W10e-2  /ai-brain: the "How It Works" scheme;
     W10e-3  /strategy: the features grid;
     W10e-4  /workflow: the laptop screen section;
     W10e-5  /valiant-omniscient: the hero scrim and the .omniscient band;
     W10e-6  /analytics: the hero;
     W10e-7  /analytics and /how-it-works: the How It Works graph;
     W10e-8  /how-it-works: the hero's floating chips.
   ========================================================================== */

/* --- W10e-1. The dark stages ---------------------------------------------
   Both heroes are a render on black with the copy laid over it (the AI
   Brain animation; the glass hands), which W10-D3 keeps exactly as it is:
   a rounded dark stage card inside the light page, the radius and shadow
   of the funnel's media frames, clear of the header (style.css positions
   the header over the hero, top 30px). The copy on the stage keeps the dark
   palette, re-pinned as W10b re-pins it on the AI Brain stage. The
   strategy hero's #010303 is style.css's !important ground (T10): the stage
   keeps it, so it is not beaten here. */
html.fnl-light .fnl-page--site :is(.hero__brain, .hero__middle.hero-typing) {
	width: calc(100% - 60px);
	max-width: 1380px;
	margin: 100px auto 0;
	overflow: hidden;
	border-bottom: 0;
	border-radius: 18px;
	box-shadow: 0 30px 70px -40px rgba(9, 24, 17, .40);
	--fnl-green: #00FF8A;
	--fnl-white: #fff;
	--fnl-sub: #A9CDBB;
	--fnl-muted: #83B59F;
	--fnl-dim: #5E8272;
}

html.fnl-light .fnl-page--site :is(.hero__brain, .hero__middle.hero-typing) .h2-title span.colored {
	color: #00FF8A;
}

/* The header is absolute inside the (relative) body; the stage's top margin
   would collapse through the body and carry the header down with it. A
   block formatting context on the body keeps the margin on the stage. */
html.fnl-light body.fnl-page--site:has(> :is(.hero__brain, .hero__middle.hero-typing)) {
	display: flow-root;
}

/* The chrome on the stage keeps its dark-theme materials (funnel.css 6d,
   style.css .outline-btn), undoing the light rules of funnel.css 21. */
html.fnl-light .fnl-page--site :is(.hero__brain, .hero__middle.hero-typing) .fnl-trustpill {
	background: rgba(255, 255, 255, .06);
	border: 1px solid rgba(255, 255, 255, .12);
}

html.fnl-light .fnl-page--site :is(.hero__brain, .hero__middle.hero-typing) .fnl-trustpill__avatars img {
	border-color: #0B1A12;
	background: #0B1A12;
}

html.fnl-light .fnl-page--site :is(.hero__brain, .hero__middle.hero-typing) .outline-btn {
	border: 1px solid rgba(255, 255, 255, .1);
	background-color: rgba(255, 255, 255, .02);
	color: rgba(255, 255, 255, .6);
}

html.fnl-light .fnl-page--site :is(.hero__brain, .hero__middle.hero-typing) .outline-btn:before {
	background: linear-gradient(to top right, rgba(255, 255, 255, 0), rgba(255, 255, 255, .16));
}

html.fnl-light .fnl-page--site :is(.hero__brain, .hero__middle.hero-typing) .outline-btn:hover {
	color: rgba(255, 255, 255, .9);
}

@media (max-width: 767px) {
	html.fnl-light .fnl-page--site :is(.hero__brain, .hero__middle.hero-typing) {
		width: calc(100% - 32px);
		margin-top: 84px;
	}
}

/* --- W10e-2. /ai-brain: the scheme ----------------------------------------
   The #091811 band takes the page ground; its row rules and the fading
   hairlines at their ends were white-alpha (style.css, rule for rule); the
   drawings are the scheme-N-light twins (LUT remap, markup); the dot field
   behind each drawing is a sage-on-dark decoration and goes, as W10b's
   decorative dot canvases do. */
html.fnl-light .fnl-page--site .how__scheme {
	background-color: var(--fnl-bg);
}

html.fnl-light .fnl-page--site .how__scheme .grid>.row .media>.dots {
	display: none;
}

/* W10e-2 inks and hairlines: .how__scheme (style.css, rule for rule) */
html.fnl-light .fnl-page--site .how__scheme .grid>.row .desc>span {
	color: var(--fnl-muted);
}

html.fnl-light .fnl-page--site .how__scheme .grid>.row {
	border-top: 1px solid rgba(9, 24, 17, .08);
}

html.fnl-light .fnl-page--site .how__scheme .grid>.row.fifth {
	border-bottom: 1px solid rgba(9, 24, 17, .08);
}

html.fnl-light .fnl-page--site .how__scheme .grid>.row.first>.desc {
	border-right: 1px solid rgba(9, 24, 17, .08);
}

html.fnl-light .fnl-page--site .how__scheme .grid>.row.first>.media {
	border-left: 1px solid rgba(9, 24, 17, .08);
	border-right: 1px solid rgba(9, 24, 17, .08);
}

html.fnl-light .fnl-page--site .how__scheme .grid>.row.second>.desc {
	border-left: 1px solid rgba(9, 24, 17, .08);
}

html.fnl-light .fnl-page--site .how__scheme .grid>.row.second>.media {
	border-left: 1px solid rgba(9, 24, 17, .08);
	border-right: 1px solid rgba(9, 24, 17, .08);
}

html.fnl-light .fnl-page--site .how__scheme .grid>.row.third>.media {
	border-left: 1px solid rgba(9, 24, 17, .08);
	border-right: 1px solid rgba(9, 24, 17, .08);
}

html.fnl-light .fnl-page--site .how__scheme .grid>.row.fourth>.desc {
	border-right: 1px solid rgba(9, 24, 17, .08);
}

html.fnl-light .fnl-page--site .how__scheme .grid>.row.fourth>.media {
	border-left: 1px solid rgba(9, 24, 17, .08);
	border-right: 1px solid rgba(9, 24, 17, .08);
}

html.fnl-light .fnl-page--site .how__scheme .grid>.row.fifth>.desc {
	border-right: 1px solid rgba(9, 24, 17, .08);
}

html.fnl-light .fnl-page--site .how__scheme .grid>.row.fifth>.media {
	border-left: 1px solid rgba(9, 24, 17, .08);
	border-right: 1px solid rgba(9, 24, 17, .08);
}

html.fnl-light .fnl-page--site .how__scheme .grid>.row .desc>p {
	color: var(--fnl-sub);
}

html.fnl-light .fnl-page--site .how__scheme .outer__scheme>p {
	color: var(--fnl-sub);
}

@media (max-width: 991px) {
	html.fnl-light .fnl-page--site .how__scheme .grid>.row.third>.media {
		border-bottom: 1px solid rgba(9, 24, 17, .08);
	}
}

@media (max-width: 991px) {
	html.fnl-light .fnl-page--site .how__scheme .grid>.row .desc {
		border-left: 1px solid rgba(9, 24, 17, .08);
		border-right: 1px solid rgba(9, 24, 17, .08);
		border-bottom: 1px solid rgba(9, 24, 17, .08);
	}
}

@media (max-width: 991px) {
	html.fnl-light .fnl-page--site .how__scheme .grid>.row.second>.media {
		border-bottom: 1px solid rgba(9, 24, 17, .08);
	}
}

@media (max-width: 991px) {
	html.fnl-light .fnl-page--site .how__scheme .grid>.row.first>.media {
		border-bottom: 1px solid rgba(9, 24, 17, .08);
	}
}

@media (max-width: 991px) {
	html.fnl-light .fnl-page--site .how__scheme .grid>.row.first>.desc {
		border-left: 1px solid rgba(9, 24, 17, .08);
	}
}

@media (max-width: 991px) {
	html.fnl-light .fnl-page--site .how__scheme .grid>.row.fifth>.desc {
		border-right: 1px solid rgba(9, 24, 17, .08);
	}
}

@media (max-width: 991px) {
	html.fnl-light .fnl-page--site .how__scheme .grid>.row.first {
		border-right: 1px solid rgba(9, 24, 17, .08);
	}
}

@media (min-width: 992px) {
	html.fnl-light .fnl-page--site .how__scheme .grid>.row.first>.media,
	html.fnl-light .fnl-page--site .how__scheme .grid>.row.fourth>.media,
	html.fnl-light .fnl-page--site .how__scheme .grid>.row.third>.media:first-child,
	html.fnl-light .fnl-page--site .how__scheme .grid>.row.fifth>.media:first-child {
		border-right: none;
	}
}

@media (min-width: 992px) {
	html.fnl-light .fnl-page--site .how__scheme .grid>.row.first>.desc,
	html.fnl-light .fnl-page--site .how__scheme .grid>.row.fourth>.desc,
	html.fnl-light .fnl-page--site .how__scheme .grid>.row.third>.desc,
	html.fnl-light .fnl-page--site .how__scheme .grid>.row.fifth>.desc {
		border-left: 1px solid rgba(9, 24, 17, .08);
	}
}

@media (min-width: 992px) {
	html.fnl-light .fnl-page--site .how__scheme .grid>.row.fifth>.desc {
		border-right: none;
	}
}

/* The fading ends of the row rules and the bottom strokes: the same
   gradients in the hairline ink. */
html.fnl-light .fnl-page--site .how__scheme .grid>.row:before,
html.fnl-light .fnl-page--site .how__scheme .grid .bottom__strokes:before {
	background: linear-gradient(to right, rgba(9, 24, 17, 0), rgba(9, 24, 17, .08));
}

html.fnl-light .fnl-page--site .how__scheme .grid>.row:after,
html.fnl-light .fnl-page--site .how__scheme .grid .bottom__strokes:after {
	background: linear-gradient(to left, rgba(9, 24, 17, 0), rgba(9, 24, 17, .08));
}

html.fnl-light .fnl-page--site .how__scheme .bottom__strokes>.stroke:before,
html.fnl-light .fnl-page--site .how__scheme .bottom__strokes>.stroke:last-child:after {
	background: linear-gradient(to bottom, rgba(9, 24, 17, .08), rgba(9, 24, 17, 0));
}

/* --- W10e-3. /strategy: the features grid ---------------------------------
   The #091811 band takes the page ground, its green glow photograph
   (platform-gradient.webp, a solid green bloom at half alpha) becomes the
   funnel's faint mint radial, and the dot field goes. The glass box is a
   white card on the hairline. The icon tiles are inline dark glow webps:
   the funnel's green icon well (W10b-2g's treatment, !important because
   the tile is an inline style), their #00FF8A-only glyphs the readable
   green by brightness(.49). */
html.fnl-light .fnl-page--site .features {
	background-color: var(--fnl-bg);
	background-image: radial-gradient(60% 50% at 50% 0%, rgba(0, 255, 138, .06), rgba(0, 255, 138, 0) 70%);
}

html.fnl-light .fnl-page--site .features>img[src="img/platform-gradient.webp"],
html.fnl-light .fnl-page--site .features>.dots {
	display: none;
}

html.fnl-light .fnl-page--site .features .features__box {
	background: #FFFFFF;
	-webkit-backdrop-filter: none;
	backdrop-filter: none;
}

html.fnl-light .fnl-page--site .features .features__box>.feature__el>span {
	background: rgba(0, 255, 138, .12) !important; /* inline style="background:url(img/features-back-N.webp)" */
	border: 1px solid rgba(0, 125, 69, .28);
}

html.fnl-light .fnl-page--site .features .features__box>.feature__el>span img {
	filter: brightness(.49);
}

/* W10e-3 inks and hairlines: .features (style.css, rule for rule) */
html.fnl-light .fnl-page--site .features .outer__features>p {
	color: var(--fnl-sub);
}

html.fnl-light .fnl-page--site .features .features__box>.feature__el>.desc>span {
	color: var(--fnl-muted);
}

html.fnl-light .fnl-page--site .features .features__box>.feature__el>.desc>p {
	color: var(--fnl-sub);
}

html.fnl-light .fnl-page--site .features .features__box>.feature__el {
	border-top: 1px solid rgba(9, 24, 17, .08);
	border-right: 1px solid rgba(9, 24, 17, .08);
}

html.fnl-light .fnl-page--site .features {
	border-bottom: 1px solid rgba(9, 24, 17, .08);
}

html.fnl-light .fnl-page--site .features .features__box {
	border: 1px solid rgba(9, 24, 17, .08);
}

@media (max-width: 767px) {
	html.fnl-light .fnl-page--site .features .features__box>.feature__el:nth-child(1),
	html.fnl-light .fnl-page--site .features .features__box>.feature__el:nth-child(3) {
		border-bottom: 1px solid rgba(9, 24, 17, .08);
		border-right: 1px solid rgba(9, 24, 17, .08);
	}
}

/* --- W10e-4. /workflow: the laptop screen -----------------------------------
   The #091811 band takes the page ground. The laptop photograph (alpha
   PNG) and the screen recording inside it are a dark platform UI in its
   own hardware frame: kept dark as the media frame (W10-D6; FLAG 6, a
   re-record on a light build). */
html.fnl-light .fnl-page--site .screen__wrapper {
	background-color: var(--fnl-bg);
}

/* W10e-4 inks and hairlines: .screen__wrapper (style.css, rule for rule) */
html.fnl-light .fnl-page--site .screen__wrapper {
	border-bottom: 1px solid rgba(9, 24, 17, .08);
}

html.fnl-light .fnl-page--site .screen__wrapper .outer__screen>p {
	color: var(--fnl-sub);
}

/* --- W10e-5. /valiant-omniscient ------------------------------------------
   Hero: speed.mp4 is under the W10b-1b veil. Its bright streak runs behind
   the headline (the #111 flag 3 wash): a scrim in the page ground on the
   copy side only, from the funnel hero's scrim idiom (a ground-to-clear
   gradient), so the streak keeps its motion on the open right half.
   Band: .omniscient's #010101 (.single: #050E0A) takes the page ground;
   the dashboard is omniscient-back-light (bridge, markup) in a white frame;
   the blurred V is the brand's mint glow and stays. */
html.fnl-light .fnl-page--site .hero__bottom::after {
	content: "";
	position: absolute;
	inset: 0;
	z-index: 1;
	pointer-events: none;
	background: linear-gradient(to right, rgba(247, 250, 248, .85) 0%, rgba(247, 250, 248, .6) 38%, rgba(247, 250, 248, 0) 62%);
}

html.fnl-light .fnl-page--site .hero__bottom > .container {
	position: relative;
	z-index: 2;
}

@media (max-width: 991px) {
	html.fnl-light .fnl-page--site .hero__bottom::after {
		background: linear-gradient(to bottom, rgba(247, 250, 248, 0) 0%, rgba(247, 250, 248, .7) 40%, rgba(247, 250, 248, .85) 100%);
	}
}

html.fnl-light .fnl-page--site .omniscient,
html.fnl-light .fnl-page--site .omniscient.single {
	background-color: var(--fnl-bg);
}

html.fnl-light .fnl-page--site .omniscient .outer__omniscient .media>img {
	border-radius: 18px;
	box-shadow: 0 30px 70px -40px rgba(9, 24, 17, .40);
}

html.fnl-light .fnl-page--site .omniscient .video:before {
	background: linear-gradient(to bottom, rgba(247, 250, 248, 0), rgba(247, 250, 248, 1));
}

/* W10e-5 inks and hairlines: .omniscient (style.css, rule for rule) */
html.fnl-light .fnl-page--site .omniscient {
	border-bottom: 1px solid rgba(9, 24, 17, .08);
}

html.fnl-light .fnl-page--site .omniscient .grid>.elem>span {
	color: var(--fnl-muted);
}

html.fnl-light .fnl-page--site .omniscient .grid>.elem>p {
	color: var(--fnl-sub);
}

html.fnl-light .fnl-page--site .omniscient .outer__omniscient .media>img {
	border: 1px solid rgba(9, 24, 17, .08);
}

html.fnl-light .fnl-page--site .omniscient .outer__omniscient>p {
	color: var(--fnl-sub);
}

/* --- W10e-6. /analytics: the hero -----------------------------------------
   The #091811 hero takes the page ground; its green bloom photograph
   (analytic-gradient.webp, opaque #095934-ish) becomes the funnel's mint
   radial; the dot field goes. The stat cards, the card stack on the left
   and the chart on the right are the -light twins (markup); the stat
   cards' dark drop shadow is the funnel's media shadow. The slow ring was
   white on the dark ground: the same ring in the hairline ink. */
html.fnl-light .fnl-page--site .hero__analytics {
	background-color: var(--fnl-bg);
	background-image: radial-gradient(55% 60% at 50% 0%, rgba(0, 255, 138, .06), rgba(0, 255, 138, 0) 72%);
}

html.fnl-light .fnl-page--site .hero__analytics>.gradient-analytics,
html.fnl-light .fnl-page--site .hero__analytics>.dots-analytics {
	display: none;
}

html.fnl-light .fnl-page--site .hero__analytics .media-analytics .stat-card {
	box-shadow: 0 24px 50px -24px rgba(9, 24, 17, .30);
}

html.fnl-light .fnl-page--site .hero__analytics>.circle-side>path[fill="white"] {
	fill: #0B1F16;
	fill-opacity: .06;
}

html.fnl-light .fnl-page--site .hero__analytics>.circle-side>path[stroke="white"] {
	stroke: #0B1F16;
	stroke-opacity: .10;
}

/* W10e-6 inks and hairlines: .hero__analytics (style.css, rule for rule) */
html.fnl-light .fnl-page--site .hero__analytics {
	border-bottom: 1px solid rgba(9, 24, 17, .08);
}

html.fnl-light .fnl-page--site .hero__analytics .outer__hero>p {
	color: var(--fnl-sub);
}

/* --- W10e-7. The How It Works graph (/analytics, /how-it-works) ------------
   W10-D3: the #091811 discs are white on a rgba(9,24,17,.14) hairline, the
   #5f8473 frames and step lines #4A6A5D, the #00FF8A strokes and glows the
   readable-green line #007D45; #00FF8A stays only as the fill of the done
   discs and the closing pill, with their black ticks and label. The art is
   one inline SVG (tools/funnels/partials/site-hiw-graph.html) whose paints
   are presentation attributes; script.js reads the colours it animates
   from --hiw-* properties (nodeAnim's discs, the step lines it turns on).
   The light palette is declared here, on the section, as custom
   properties, and the paints below read them. */
html.fnl-light .fnl-page--site .how__works--graph {
	--hiw-proc-fill: #FFFFFF;
	--hiw-proc-stroke: rgba(9, 24, 17, .14);
	--hiw-pub-fill: #00FF8A;
	--hiw-on: #007D45;
	--hiw-glow: none;
	--hiw-c-disc: #FFFFFF;
	--hiw-c-ink: #0B1F16;
	--hiw-c-sub: #33574A;
	--hiw-c-muted: #4A6A5D;
	--hiw-c-spine: #0B1F16;
	--hiw-c-frame: #4A6A5D;
	--hiw-c-line: #007D45;
}

html.fnl-light .fnl-page--site .how__works--graph #hiwGraph {
	--hiw-act: #4A6A5D;
}

html.fnl-light .fnl-page--site .how__works--graph .hiw-slice {
	--hiw-act: #007D45;
}

/* The paints. The phone slices are <use> instances of #hiwGraphAll (W6-1):
   a <use> shadow tree matches document rules only from inside the instance
   (from the cloned #hiwGraphAll down), never through the html class, so
   these rules cannot carry the theme prefix. They are theme-neutral
   instead: each restates its own presentation attribute as the fallback of
   a --hiw-c-* property that only the light rule above sets (custom
   properties do inherit through the <use> host). With nothing set they
   paint exactly the attribute. #hiwGraph covers the discs script.js adds. */
:is(#hiwGraph, #hiwGraphAll) [fill="#091811"] {
	fill: var(--hiw-c-disc, #091811);
}

:is(#hiwGraph, #hiwGraphAll) path[fill="white"]:not([fill-opacity]) {
	fill: var(--hiw-c-ink, white);
}

:is(#hiwGraph, #hiwGraphAll) [fill="#83B59F"] {
	fill: var(--hiw-c-sub, #83B59F);
}

:is(#hiwGraph, #hiwGraphAll) [fill="#5E8272"] {
	fill: var(--hiw-c-muted, #5E8272);
}

:is(#hiwGraph, #hiwGraphAll) [fill="#33503e"] {
	fill: var(--hiw-c-spine, #33503e);
}

:is(#hiwGraph, #hiwGraphAll) [stroke="#5f8473"] {
	stroke: var(--hiw-c-frame, #5f8473);
}

:is(#hiwGraph, #hiwGraphAll) rect[width="3"][fill="#00FF8A"] {
	fill: var(--hiw-c-line, #00FF8A);
}

:is(#hiwGraph, #hiwGraphAll) .hiw-final-trunk path[stroke="#00FF8A"] {
	stroke: var(--hiw-c-line, #00FF8A);
}

#hiwGraph stop[stop-color="#5f8473"] {
	stop-color: var(--hiw-c-frame, #5f8473);
}

#hiwGraph stop[stop-color="#00FF8A"] {
	stop-color: var(--hiw-c-line, #00FF8A);
}

/* The live trace (style.css #00FF8A / #6effb3 with glows). */
html.fnl-light .fnl-page--site .how__works--graph .hiw-trunk-persist,
html.fnl-light .fnl-page--site .how__works--graph .hiw-trunk-tip {
	stroke: #007D45;
	filter: none;
}

html.fnl-light .fnl-page--site .how__works--graph .hiw-trunk-head {
	fill: #007D45;
	filter: drop-shadow(0 0 5px rgba(0, 255, 138, .45));
}

html.fnl-light .fnl-page--site .how__works--graph .hiw-shutter {
	fill: var(--fnl-bg);
}

html.fnl-light .fnl-page--site .how__works--graph .outer__how--works .inner>.right .dots {
	display: none;
}

/* W10e-7 inks and hairlines: .how__works--graph (style.css, rule for rule) */
html.fnl-light .fnl-page--site .how__works--graph .outer__how--works .inner>.left .el>span {
	color: var(--fnl-muted);
}

html.fnl-light .fnl-page--site .how__works--graph .outer__how--works .inner>.left .el>p {
	color: var(--fnl-sub);
}

html.fnl-light .fnl-page--site .how__works--graph .outer__how--works>.top>p {
	color: var(--fnl-sub);
}

/* --- W10e-8. /how-it-works: the hero's floating chips ---------------------
   The chips were dark pills (resources-back-btn.svg, #091811) with white
   glowing labels over the landscape; on light they are the funnel's white
   chips on a hairline with ink labels and readable-green icons
   (brightness(.49) of their #00FF8A-only files). The connectors between them
   are a canvas drawn in #00FF8A with white pulses (js/resources-rays.js,
   `lighter`): the same brightness(.49) turns the lines to the readable
   green and the pulses to a mid grey on the light ground. */
html.fnl-light .fnl-page--site .hero__resources .outer__resources .bottom__float>.float-el {
	background: #FFFFFF;
	border: 1px solid rgba(9, 24, 17, .12);
	border-radius: 999px;
	box-shadow: 0 12px 28px -18px rgba(9, 24, 17, .35);
}

html.fnl-light .fnl-page--site .hero__resources .outer__resources .bottom__float>.float-el>p {
	text-shadow: none;
}

html.fnl-light .fnl-page--site .hero__resources .outer__resources .bottom__float>.float-el>span img,
html.fnl-light .fnl-page--site .hero__resources .outer__resources .bottom__float>.rays-canvas {
	filter: brightness(.49);
}

/* W10e-8 inks and hairlines: .hero__resources (style.css, rule for rule) */
html.fnl-light .fnl-page--site .hero__resources .outer__resources>p {
	color: var(--fnl-sub);
}

html.fnl-light .fnl-page--site .hero__resources .outer__resources .bottom__float>.float-el>p {
	color: var(--fnl-white);
}

/* The landscape (home-resources.webp, a watercolour) carries the headline,
   the sub, the nav and the chips. One veil in the page ground, the funnel
   21n idiom, strongest behind the copy and the nav and easing off over the
   chips (white cards that need no veil), so the painting still reads. */
html.fnl-light .fnl-page--site .hero__resources::before {
	content: "";
	position: absolute;
	inset: 0;
	z-index: 0;
	pointer-events: none;
	background: linear-gradient(to bottom, rgba(247, 250, 248, .86) 0%, rgba(247, 250, 248, .82) 62%, rgba(247, 250, 248, .45) 82%, rgba(247, 250, 248, .30) 100%);
}

html.fnl-light .fnl-page--site .hero__resources>.container {
	position: relative;
	z-index: 1;
}

/* /ai-brain's stage: the glass brain sits behind the headline and, on
   phones, behind the whole copy block, so the copy is laid over the
   render's brightest highlights (1.1:1 in places, dark theme included). A
   scrim in the stage's own black on the copy side, above the render and
   under the copy; the render is otherwise untouched. */
html.fnl-light .fnl-page--site .hero__brain::after {
	content: "";
	position: absolute;
	inset: 0;
	z-index: 1;
	pointer-events: none;
	background: linear-gradient(to right, rgba(0, 0, 0, .62) 0%, rgba(0, 0, 0, .5) 30%, rgba(0, 0, 0, 0) 52%);
}

@media (max-width: 767px) {
	html.fnl-light .fnl-page--site .hero__brain::after {
		background: linear-gradient(to bottom, rgba(0, 0, 0, .2) 0%, rgba(0, 0, 0, .62) 38%, rgba(0, 0, 0, .7) 100%);
	}
}

/* --- W10e-9. The campaign studio and the process wheel on these pages -----
   W10d-3's treatment (scoped there to the product pages), repeated for the
   four pages here that carry the same families; the heroes are direct
   children of the body and unique to these pages. The open step's photo
   card (every card on tablets and phones): one stage-white veil over the
   photo, ink copy, ink step icons. The studio's back-layer dots: hidden.
   /strategy's process rocket (the wheel's only picture) inked by filter. */
html.fnl-light .fnl-page--site:has(> :is(.hero__brain, .hero__middle, .workflows__hero, .hero__bottom)) .campaign__wrapper .inner__steps>.elem>.media__full:before {
	background: rgba(255, 255, 255, .88);
}

html.fnl-light .fnl-page--site:has(> :is(.hero__brain, .hero__middle, .workflows__hero, .hero__bottom)) .campaign__wrapper .inner__steps>.elem>.desc>.desc-inner>span {
	color: var(--fnl-sub);
}

html.fnl-light .fnl-page--site:has(> :is(.hero__brain, .hero__middle, .workflows__hero, .hero__bottom)) .campaign__wrapper .inner__steps>.elem>p>span img {
	filter: brightness(0);
	opacity: .62;
}

html.fnl-light .fnl-page--site:has(> :is(.hero__brain, .hero__middle, .workflows__hero, .hero__bottom)) .campaign__wrapper .float__back > .dots {
	display: none;
}

html.fnl-light .fnl-page--site:has(> .hero__middle) .process__wrapper .circle__process .ascii-dots {
	filter: brightness(0) opacity(.5);
}

/* ==========================================================================
   W10c. Light mode on the homepage and the 11 industry pages (Website 2.0
   Part Three)
   --------------------------------------------------------------------------
   Page-unique rules only: the shared families (headings, CTA band, hero
   video veil, integrations, workflows, matrix, industry tags, CEO demo, AI
   Brain stage) are W10b-1. The platform screenshots on these pages are
   swapped for their -light twins in the markup (hero-media, campaign-memory,
   workflow-1-1..3, the S5-S9 carousel shots; s7-4-reports has no twin and
   stays as it is). Photographs stay photographs: where copy sits on one, ONE
   veil in the page ground carries it (funnel.css 21d / 21n).
   ========================================================================== */

/* --- W10c-1. Homepage "Recent Campaigns" collage --------------------------
   The fade that sinks the campaign tiles into the section was a #030A07
   radial; it sinks them into the page ground instead (same stops). The
   tiles are client creative and keep their own paint. */
html.fnl-light .fnl-page--site .portfolio__wrapper {
	border-bottom-color: rgba(9, 24, 17, .08);
}

html.fnl-light .fnl-page--site .portfolio--box:after {
	background: radial-gradient(circle at 50% 50%,
		rgba(247, 250, 248, 0) 14%,
		rgba(247, 250, 248, .40) 46%,
		rgba(247, 250, 248, .86) 74%,
		rgba(247, 250, 248, .98) 100%);
}

/* --- W10c-2. Industry hero (.hero__template) -----------------------------
   The industry photograph under the copy. The dark theme laid a 25% black
   wash on it; here it takes the funnel hero's scrim (funnel.css 21d, same
   curve): the copy column sits on the page ground, the right-hand side
   lets the photograph through, the top edge carries the header. On tablets
   and phones the copy spans the whole width, so the scrim is the single
   final-CTA veil (21n). The eight floating photos around the pinned card
   are photographs and keep their paint. */
html.fnl-light .fnl-page--site .hero__template .inn:before {
	z-index: 1;
	opacity: 1;
	background:
		linear-gradient(90deg,
			#F7FAF8 0%,
			#F7FAF8 26%,
			rgba(247, 250, 248, .90) 50%,
			rgba(247, 250, 248, .74) 78%,
			rgba(247, 250, 248, .84) 100%),
		linear-gradient(0deg,
			rgba(247, 250, 248, .88) 0%,
			rgba(247, 250, 248, 0) 22%,
			rgba(247, 250, 248, 0) 80%,
			rgba(247, 250, 248, .78) 100%);
}

html.fnl-light .fnl-page--site .hero__template .inn > .container {
	position: relative;
	z-index: 2;
}

html.fnl-light .fnl-page--site .hero__template .inn .desc>p {
	color: var(--fnl-sub);
}

@media (max-width: 991px) {
	html.fnl-light .fnl-page--site .hero__template .inn:before {
		background: linear-gradient(180deg,
			rgba(247, 250, 248, .86) 0%,
			rgba(247, 250, 248, .82) 45%,
			rgba(247, 250, 248, .88) 100%);
	}
}

/* As the pinned photograph shrinks into its card, js/script.js fades the
   copy out (progress .02 to .10 of the section's height: 260vh, 200vh at
   1200px and below); the scrim exists for the copy, so it fades out over
   the same scroll, and the card shows its photograph as the dark theme
   does. Where scroll-driven animations are unsupported the scrim simply
   stays (the card reads as a pale photograph). */
@keyframes w10c-hero-scrim {
	to {
		opacity: 0;
	}
}

@supports (animation-timeline: scroll()) {
	html.fnl-light .fnl-page--site .hero__template .inn:before {
		animation: w10c-hero-scrim linear both;
		animation-timeline: scroll(root);
		animation-range: 5vh 26vh;
	}

	@media (max-width: 1200px) {
		html.fnl-light .fnl-page--site .hero__template .inn:before {
			animation-range: 4vh 20vh;
		}
	}
}

/* --- W10c-3. "Why <Industry> Loves Us" (.why__us) ------------------------
   Four photographs, each with a caption laid on it (pinned panels on
   desktop, cards on phones: W3b-4). The photographs stay; one page-ground
   veil (21n's stops) sits on each, so the caption and, on desktop, the
   section heading that the active panel slides under read as ink on the
   ground. The captions keep their inactive/active opacity step; the icons
   are the sage marks, drawn in ink at partial opacity (the tag-icon
   precedent, W10b-1e). */
html.fnl-light .fnl-page--site .why__us {
	border-bottom-color: rgba(9, 24, 17, .08);
}

html.fnl-light .fnl-page--site .why__us .why__grid>.elem {
	border-top-color: rgba(9, 24, 17, .08);
}

html.fnl-light .fnl-page--site .why__us .why__grid>.elem>.media:before {
	display: block;
	z-index: 1;
	opacity: 1;
	background: linear-gradient(180deg,
		rgba(247, 250, 248, .86) 0%,
		rgba(247, 250, 248, .82) 45%,
		rgba(247, 250, 248, .88) 100%);
}

html.fnl-light .fnl-page--site .why__us .why__grid>.elem .desc>p {
	color: var(--fnl-white);
}

html.fnl-light .fnl-page--site .why__us .why__grid>.elem .desc>p span img {
	filter: brightness(0);
	opacity: .62;
}

@media (max-width: 991px) {
	html.fnl-light .fnl-page--site .why__us .why__grid > .elem,
	html.fnl-light .fnl-page--site .why__us .why__grid > .elem.active,
	html.fnl-light .fnl-page--site .why__us .why__grid > .elem.is-past {
		border-color: rgba(9, 24, 17, .10);
	}

	html.fnl-light .fnl-page--site .why__us .why__grid > .elem .desc > p {
		color: var(--fnl-white);
	}
}

/* --- W10c-4. The AI Brain stage card: the copy stays on the card ---------
   W10b-1e makes the render a card inset in the light section (40px of
   section ground above and below it, 30px each side). style.css positions
   the heading and the note against the SECTION's edges, so the inset moved
   the card out from under them: on tablets the heading's pill sat on the
   card's top edge, and between 768px and about 820px the note (756px wide,
   centred on the section) ran past the card's sides onto the ground, on
   every lit page (W10d found it on the product pages and patched its four;
   this is the site-wide rule, the same max-width). Here each offset is the
   dark theme's plus the 40px inset, so the composition inside the card is
   the dark one, and the note keeps the card's side inset. Two tablet
   defects of the dark layout are fixed on lit pages while here: the heading
   is absolute at left:50%, so it shrank to half the section's width and
   wrapped (three lines on /video, and the sub ran into the icon ring at
   768-991px, 1.1:1): it takes its own width, capped at the card's; and on
   tablets it starts 24px inside the card (not the dark 40px), which clears
   the ring on every lit page measured (768, 820, 900, 991). The note's
   near-clear glass sits on the render's bright floor at 768px (4.50:1): a
   30% black tint inside the stage, where the dark palette applies. Phones
   (767px and below) lay the heading and the note out in flow: W3b-1,
   untouched. */
@media (min-width: 768px) {
	html.fnl-light .fnl-page--site .brain__wrapper .top {
		top: 140px;
		width: max-content;
		max-width: calc(100% - 90px);
	}

	html.fnl-light .fnl-page--site .brain__wrapper .bottom__box {
		bottom: 120px;
		max-width: min(756px, calc(100% - 90px));
		background-color: rgba(0, 0, 0, .30);
	}
}

@media (min-width: 768px) and (max-width: 1200px) {
	html.fnl-light .fnl-page--site .brain__wrapper .bottom__box {
		bottom: 85px;
	}
}

@media (min-width: 768px) and (max-width: 991px) {
	html.fnl-light .fnl-page--site .brain__wrapper .top {
		top: 64px;
	}
}

/* W10c-final. The examples slider on every lit page: its dot field is drawn
   white by script.js (no light palette), so it is hidden, and the mint ellipse
   keeps the funnel's .06 peak (as W10d-3b/3c do for the product pages). */
html.fnl-light .fnl-page--site .shorts-portfolio > .dots-float {
	display: none;
}

html.fnl-light .fnl-page--site .shorts-portfolio > img.ellipses-float {
	opacity: .4;
}

/* ===== R1-G2: pricing, compare table and CTAs (Ben review 2026-09-28) ===== */

/* R1-G2 C6a. The Compare table's header buttons on /pricing: never wrap
   ("Start Subscription" broke onto two lines on the Pro column, whose filled
   button lacked the tracking the outlined ones have), -0.42px tracking like
   the platform's buttons. The phone rule in 6a above (under 481px, four
   80px columns) still lets them wrap, deliberately, so this starts at 481px. */
@media (min-width: 481px) {
	body.fnl-page--site .compare__plans .plans .elem > .top .btn > a {
		white-space: nowrap;
		letter-spacing: -0.42px;
	}
}

/* The Pro button's hover arrow (.fb-in, style.css 842 at left:27px) ended 1px
   before "Get Started" began; 20px gives it 8px of air. */
body.fnl-page--site .compare__plans .plans .filled-btn .fb-in {
	left: 20px;
}

@media (min-width: 992px) {
	/* R1-G2 C6b. "Compare The Plans / That Fits You" on two lines: the header
	   grid took width:100% and squeezed the title column to ~280px, which
	   broke "Compare The Plans" in two. The grid now takes only its four
	   columns and the title column the rest. */
	body.fnl-page--site .compare__plans .top-absolute > .inner > .plans {
		width: auto;
		flex: 0 0 auto;
	}

	body.fnl-page--site .compare__plans .top-absolute > .inner > .left {
		flex: 1 1 auto;
		min-width: 0;
		container-type: inline-size;
	}

	/* The title has an explicit <br> between its two lines, so nowrap holds it
	   at two, and the size follows the column (cqi) where the column is
	   narrower than the line: 1201-1300px and 992-1100px, where the four
	   fixed plan columns leave the title 270-400px. 11.6cqi keeps "Compare The
	   Plans" (7.98em wide in this face) about 7% inside its column. */
	body.fnl-page--site .compare__plans .top-absolute .inner .title > .h2-title {
		white-space: nowrap;
		font-size: min(45px, 11.6cqi);
	}

	/* R1-G2 C6c. The rows start below the pinned header, with room to breathe.
	   style.css hard-codes 167px (padding) and 163px (the pinned category bar),
	   but the header is 174px tall, so "Included Campaigns" started under it
	   and every pinned category bar tucked 11px beneath it. The modal derives
	   both from --cmp-head-h (funnel.css VAL-137); this page now does too.
	   script.js publishes the measured height on .compare__plans; the value
	   here is the fallback before it runs. */
	body.fnl-page--site .compare__plans {
		--cmp-head-h: 174px;
	}

	body.fnl-page--site .compare__plans .bottom__part {
		padding-top: calc(var(--cmp-head-h) + 24px);
	}

	body.fnl-page--site .compare__plans .bottom__part > .subtitle {
		top: calc(var(--cmp-head-h) - 1px);
	}
}

@media (min-width: 992px) and (max-width: 1200px) {
	body.fnl-page--site .compare__plans .top-absolute .inner .title > .h2-title {
		font-size: min(40px, 11.6cqi);
	}
}

/* R1-G2 C6a, phones. In the four 80px columns the Pro column's filled button
   also carries the hover arrow, which pushed "Get Started" onto two lines
   while the three outlined buttons fit on one. A phone has no hover, so the
   arrow goes and the four labels sit alike. */
@media (max-width: 480px) {
	body.fnl-page--site .compare__plans .plans .elem > .top .btn > a.filled-btn > span {
		display: none;
	}
}

/* R1-G2 C6b, 991px and down. The title stacks above the table here, but
   style.css still caps its column at 230px (a three-column layout's value)
   and hides the title's <br>, so it broke into three lines ("Compare / The
   Plans / That Fits You") with 700px of row beside it. Full width, the <br>
   restored and no wrap: two lines, as on desktop. "Compare The Plans" is
   7.98em wide, 247px at the 31px the title has at 360px, inside 320px. */
@media (max-width: 991px) {
	body.fnl-page--site .compare__plans .top-absolute > .inner > .left {
		max-width: none;
		width: 100%;
		flex: 0 0 100%;
	}

	body.fnl-page--site .compare__plans .top-absolute > .inner > .left br {
		display: inline;
	}

	body.fnl-page--site .compare__plans .top-absolute .inner .title > .h2-title {
		white-space: nowrap;
	}
}

/* R1-G2 C9. The header CTA's outline (Ben item 26). style.css draws it as a
   1px mask-composite gradient ring at opacity .5 (funnel.css 21o recolours
   it green), which reads dark on the left and nearly gone on the right on a
   light header. On lit pages it is now one even 1px line, drawn as an inset
   shadow so the pill keeps its exact 43px box, over a clean white-to-mint
   fill; hover darkens the line and deepens the mint, with no glow. */
html.fnl-light .fnl-page--site header .right > .btns > .regular-btn {
	background-color: #FFFFFF;
	background-image: linear-gradient(180deg, #FFFFFF 0%, rgba(0, 255, 138, .07) 100%);
	box-shadow: inset 0 0 0 1px rgba(0, 125, 69, .35);
	transition: box-shadow .25s ease, background-color .25s ease;
}

html.fnl-light .fnl-page--site header .right > .btns > .regular-btn::before,
html.fnl-light .fnl-page--site header .right > .btns > .regular-btn::after {
	display: none;
}

html.fnl-light .fnl-page--site header .right > .btns > .regular-btn:hover,
html.fnl-light .fnl-page--site header .right > .btns > .regular-btn:focus-visible {
	background-color: #F2FFF8;
	background-image: linear-gradient(180deg, #F2FFF8 0%, rgba(0, 255, 138, .14) 100%);
	box-shadow: inset 0 0 0 1px rgba(0, 125, 69, .7);
}

/* R1-G2 C7a. /pricing's plan cards in the platform's /select-plan design
   (Ben item 24): PricingCard variant="full" as SelectPlan.tsx renders it,
   from partials/pricing-grid-full.html. Every value below is the Tailwind
   class it came from, in the platform's light palette (the light block of
   packages/web/src/styles/globals.css): text-strong #0B1F16, text-body
   #33574A, text-quiet #4A6A5D, text-eyebrow #2F6B52, brand-ink #007D45,
   border-subtle rgba(11,31,22,.12), surface-page #F7FAF8. Only /pricing
   renders this markup (the other bands keep the funnels' card). */

/* The grid: grid-cols-1 sm:grid-cols-2 xl:grid-cols-4 gap-4 items-start,
   inside SelectPlan's max-w-[1100px] px-6 column (1052px of content). */
body.fnl-page--site .fnl-s11--full .fnl-pgrid,
body.fnl-page--site .fnl-s11--full .fnl-enterprise {
	max-width: 1052px;
	margin-left: auto;
	margin-right: auto;
}

body.fnl-page--site .fnl-s11--full .fnl-pgrid {
	display: grid;
	grid-template-columns: minmax(0, 1fr);
	gap: 16px;
	align-items: start;
}

@media (min-width: 640px) {
	body.fnl-page--site .fnl-s11--full .fnl-pgrid {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}

@media (min-width: 1280px) {
	body.fnl-page--site .fnl-s11--full .fnl-pgrid {
		grid-template-columns: repeat(4, minmax(0, 1fr));
	}
}

body.fnl-page--site .fnl-s11--full .fnl-enterprise {
	margin-top: 16px;
}

/* The card: rounded-xl border border-subtle overflow-hidden relative; the
   recommended one (Pro, "Most Popular" as today) border-[#00ff8a]/40 and
   ring-1 ring-[#00ff8a]/30. No fill of its own, as on /select-plan. */
body.fnl-page--site .fnl-s11--full .fnl-pcard {
	position: relative;
	overflow: hidden;
	border: 1px solid rgba(11, 31, 22, .12);
	border-radius: 12px;
	background: transparent;
}

body.fnl-page--site .fnl-s11--full .fnl-pcard--rec {
	border-color: rgba(0, 255, 138, .4);
	box-shadow: 0 0 0 1px rgba(0, 255, 138, .3);
}

/* p-6 space-y-6 */
body.fnl-page--site .fnl-s11--full .fnl-pcard__body {
	display: flex;
	flex-direction: column;
	gap: 24px;
	padding: 24px;
}

/* The pill: inline-flex items-center mb-3 px-2.5 py-1 rounded-full border
   border-[#00a85c]/30 bg-[#00ff8a]/[0.14] text-[11px] font-semibold
   leading-none tracking-[0.02em] text-brand-ink. The other cards hold its
   row open from sm up (reserveRecommendedSlot), invisible. */
body.fnl-page--site .fnl-s11--full .fnl-pcard__pill {
	display: inline-flex;
	align-items: center;
	margin: 0 0 12px;
	padding: 4px 10px;
	border: 1px solid rgba(0, 168, 92, .3);
	border-radius: 9999px;
	background: rgba(0, 255, 138, .14);
	font-size: 11px;
	font-weight: 600;
	line-height: 1;
	letter-spacing: .02em;
	color: #007D45;
}

body.fnl-page--site .fnl-s11--full .fnl-pcard__pill--slot {
	display: none;
	visibility: hidden;
}

@media (min-width: 640px) {
	body.fnl-page--site .fnl-s11--full .fnl-pcard__pill--slot {
		display: inline-flex;
	}
}

/* Name left, price right (flex items-end justify-between gap-3); stacked in
   the four-column grid (xl:flex-col xl:items-start xl:gap-2). */
body.fnl-page--site .fnl-s11--full .fnl-pcard__namerow {
	display: flex;
	align-items: flex-end;
	justify-content: space-between;
	gap: 12px;
}

body.fnl-page--site .fnl-s11--full .fnl-pcard__name {
	min-width: 0;
	margin: 0;
	font-size: 20px;
	line-height: 28px;
	font-weight: 600;
	letter-spacing: -0.54px;
	color: #0B1F16;
}

body.fnl-page--site .fnl-s11--full .fnl-pcard__priceblock {
	flex-shrink: 0;
	text-align: right;
}

/* text-2xl sm:text-3xl font-semibold leading-none tracking-[-0.72px];
   "/month" text-base font-normal text-quiet. */
body.fnl-page--site .fnl-s11--full .fnl-pcard__price {
	margin: 0;
	font-size: 24px;
	line-height: 1;
	font-weight: 600;
	letter-spacing: -0.72px;
	color: #0B1F16;
}

body.fnl-page--site .fnl-s11--full .fnl-pcard__per {
	font-size: 16px;
	line-height: 24px;
	font-weight: 400;
	letter-spacing: normal;
	color: #4A6A5D;
}

/* The monthly note sits where the platform's annual "2 months free" line
   does (text-xs mt-1). */
body.fnl-page--site .fnl-s11--full .fnl-pcard__note {
	margin: 4px 0 0;
	font-size: 12px;
	line-height: 16px;
	color: #4A6A5D;
}

@media (min-width: 640px) {
	body.fnl-page--site .fnl-s11--full .fnl-pcard__price {
		font-size: 30px;
	}
}

@media (min-width: 1280px) {
	body.fnl-page--site .fnl-s11--full .fnl-pcard__namerow {
		flex-direction: column;
		align-items: flex-start;
		gap: 8px;
	}

	body.fnl-page--site .fnl-s11--full .fnl-pcard__priceblock {
		text-align: left;
	}
}

/* The CTA, above the list (ctaAboveInclusions): w-full py-3.5 rounded-full
   font-semibold text-sm tracking-[-0.42px] flex items-center justify-center
   gap-2; bg-text-strong text-surface-page hover:opacity-90, and on the
   recommended (selected) card bg-[#00ff8a] text-black. */
body.fnl-page--site .fnl-s11--full .fnl-pcard__cta {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 8px;
	width: 100%;
	padding: 14px 0;
	border-radius: 9999px;
	background: #0B1F16;
	color: #F7FAF8;
	font-size: 14px;
	line-height: 20px;
	font-weight: 600;
	letter-spacing: -0.42px;
	text-decoration: none;
	transition: opacity .15s ease, background-color .15s ease;
}

body.fnl-page--site .fnl-s11--full .fnl-pcard__cta:hover {
	opacity: .9;
}

body.fnl-page--site .fnl-s11--full .fnl-pcard--rec .fnl-pcard__cta {
	background: #00FF8A;
	color: #000000;
}

body.fnl-page--site .fnl-s11--full .fnl-pcard--rec .fnl-pcard__cta:hover {
	opacity: 1;
}

body.fnl-page--site .fnl-s11--full .fnl-pcard__cta svg {
	width: 16px;
	height: 16px;
	flex-shrink: 0;
}

/* PlanIncludedList, heading "Included": mb-2 font-heading font-medium
   text-xs uppercase tracking-tight-xs text-eyebrow; the list divide-y
   divide-border-subtle; a row flex items-start gap-3 py-2, its icon w-4 h-4
   mt-0.5 text-brand-ink, its text text-sm text-body tracking-[-0.42px]
   leading-snug. The counts are plain text there, not bold. */
body.fnl-page--site .fnl-s11--full .fnl-pcard__eyebrow {
	margin: 0 0 8px;
	font-family: "Rethink Sans", "Inter", system-ui, sans-serif;
	font-size: 12px;
	line-height: 16px;
	font-weight: 500;
	text-transform: uppercase;
	letter-spacing: -0.36px;
	color: #2F6B52;
}

body.fnl-page--site .fnl-s11--full .fnl-pcard__list {
	margin: 0;
	padding: 0;
	list-style: none;
}

body.fnl-page--site .fnl-s11--full .fnl-pcard__list > li {
	display: flex;
	align-items: flex-start;
	gap: 12px;
	margin: 0;
	padding: 8px 0;
}

body.fnl-page--site .fnl-s11--full .fnl-pcard__list > li + li {
	border-top: 1px solid rgba(11, 31, 22, .12);
}

body.fnl-page--site .fnl-s11--full .fnl-pcard__list .fnl-plan__icon {
	flex-shrink: 0;
	width: 16px;
	height: 16px;
	margin-top: 2px;
	color: #007D45;
}

body.fnl-page--site .fnl-s11--full .fnl-pcard__list .fnl-plan__row {
	min-width: 0;
	font-size: 14px;
	line-height: 1.375;
	letter-spacing: -0.42px;
	color: #33574A;
}

body.fnl-page--site .fnl-s11--full .fnl-pcard__list .fnl-plan__row b,
body.fnl-page--site .fnl-s11--full .fnl-pcard__list .fnl-plan__per {
	font-weight: inherit;
	color: inherit;
}

/* "View Supported Integrations": text-[11px] text-quiet underline
   underline-offset-2 decoration-border-control, hover text-body; the list
   opens as the platform's panel does (rounded-xl border px-3 py-2.5
   bg-surface-page, text-[11px] leading-[1.6] text-body), in flow here. */
body.fnl-page--site .fnl-s11--full .fnl-plan__integ {
	margin-top: 6px;
}

body.fnl-page--site .fnl-s11--full .fnl-plan__integ > summary {
	font-size: 11px;
	line-height: 16px;
	letter-spacing: normal;
	color: #4A6A5D;
	text-decoration: underline;
	text-decoration-color: rgba(11, 31, 22, .5);
	text-underline-offset: 2px;
}

body.fnl-page--site .fnl-s11--full .fnl-plan__integ > summary:hover,
body.fnl-page--site .fnl-s11--full .fnl-plan__integ[open] > summary {
	color: #33574A;
}

body.fnl-page--site .fnl-s11--full .fnl-plan__integ-list {
	margin-top: 8px;
	padding: 10px 12px;
	border: 1px solid rgba(11, 31, 22, .12);
	border-radius: 12px;
	background: #F7FAF8;
	font-size: 11px;
	line-height: 1.6;
	letter-spacing: normal;
	color: #33574A;
}

/* Compare plans stays (it opens the comparison modal, as on every band). The
   platform card has no second button; this is drawn as the card's secondary
   action there, "See everything included": text-sm font-medium
   text-brand-ink underline underline-offset-4, centred. */
body.fnl-page--site .fnl-s11--full .fnl-pcard__compare {
	width: 100%;
	margin: 0;
	padding: 0;
	border: 0;
	background: none;
	font-size: 14px;
	line-height: 20px;
	font-weight: 500;
	color: #007D45;
	text-align: center;
	text-decoration: underline;
	text-underline-offset: 4px;
	cursor: pointer;
}

/* ===== R1-G3: rotator, self-improve, HIW trace, mobile pin and industry order (Ben review 2026-09-28) ===== */

/* C17 (Ben's item 34). The live trace overshot the final pill ("It Improves
   the Next Round"): .hiw-trace is height:100% of .right, and .right was 4px
   taller than the graph (an inline <svg> sits on the text baseline), so the
   preserveAspectRatio=none trace was stretched past the pill top, plus a
   round cap. The graph is a block (no baseline gap, so the trace maps 1:1),
   and the caps are square, so the trunk ends on the pill top (y=2095). */
.how__works--graph #hiwGraph {
	display: block;
}

.how__works--graph .hiw-trunk-persist,
.how__works--graph .hiw-trunk-tip {
	stroke-linecap: butt;
}

/* C20 item 52. /how-it-works on phones: the rays canvas fills the chip box
   and its lines run to the box bottom, but style.css (<= 767px) left 70px of
   padding under the box, and the tablet min-height above can add more, so
   the lines stopped short of the bottom of the hero landscape. On phones the
   box is in flow and is the last thing in the hero, so the hero now ends
   where the box (and the lines) end. */
@media (max-width: 767px) {
	.fnl-page--site .hero__resources .outer__resources {
		min-height: 0;
		padding-bottom: 0;
	}
}

/* ===== R1-G1: hand-page layout and light fixes (Ben review 2026-09-28) ===== */
/* Items C1 to C5, C11 to C13, C16, C18, C19 and C21 of the resolution plan.
   Overrides only; nothing above this marker is edited. */

/* C1 (items 1, 2). The homepage headline returns to the old homepage's 80px
   (style.css 304), keeping the W3c weight and tracking, and steps down on the
   old homepage's ladder at this file's breakpoints. 575 keeps the shared 42px
   so phones read as they do today. */
.fnl-page--site .hero__main h1.h2-title.bigger { font-size: 80px; }
@media (max-width: 1400px) { .fnl-page--site .hero__main h1.h2-title.bigger { font-size: 72px; } }
@media (max-width: 1200px) { .fnl-page--site .hero__main h1.h2-title.bigger { font-size: 64px; } }
@media (max-width: 991px) { .fnl-page--site .hero__main h1.h2-title.bigger { font-size: 52px; } }
@media (max-width: 767px) { .fnl-page--site .hero__main h1.h2-title.bigger { font-size: 44px; } }
@media (max-width: 575px) { .fnl-page--site .hero__main h1.h2-title.bigger { font-size: 42px; } }
@media (max-width: 390px) { .fnl-page--site .hero__main h1.h2-title.bigger { font-size: 36px; } }

/* The hero subs hide their hand <br>s and balance, but four heroes set no
   width, so the sub ran as one line across the container. A zero-specificity
   cap, so every existing cap still wins; centred heroes centre the block. */
:where(.fnl-page--site h1.h2-title.bigger, .fnl-page--site :is(.hero__brain, .case__hero--video, .hero__graphic--design, .hero__resources, .workflows__hero, .hero__middle.hero-typing) h2.bigger) + p {
	max-width: 640px;
}
.fnl-page--site :is(.hero__main, .reviews__hero, .about__hero, .hero__plans) h1.h2-title.bigger + p {
	margin-inline: auto;
}

/* C2 (item 5). The shorts slider's dots were white at .2 (style.css 8052),
   invisible on the lit page. Ink at .2 and the active dot green, the
   funnel.css 21i pattern (.fnl-cases__dot). */
html.fnl-light .fnl-page--site .shorts-controls ul li button {
	background-color: rgba(9, 24, 17, .2);
}
html.fnl-light .fnl-page--site .shorts-controls ul li.slick-active button {
	background-color: var(--fnl-green);
}

/* C3 (item 8). The process ring's track is an inline white stroke at .1;
   ink at .14 on light. The green arc is the sibling path.proc-ring, so this
   reaches only the track. */
html.fnl-light .fnl-page--site .process__wrapper .circle__process > svg > circle {
	stroke: #091811;
	stroke-opacity: .14;
}

/* C4 (item 11). Recent Campaigns: the player is centred in a fixed-height
   collage box (style.css 2914, 1170px), which left about 300px of collage
   between the sub and the player. A shorter box on the homepage (the only
   page with the collage) lifts the player about 100px on desktop, 80px on
   tablets and 30px on phones. */
.fnl-page--site .portfolio__wrapper .portfolio--box { height: 970px; }
@media (max-width: 1200px) { .fnl-page--site .portfolio__wrapper .portfolio--box { height: 780px; } }
@media (max-width: 767px) { .fnl-page--site .portfolio__wrapper .portfolio--box { height: 680px; } }

/* C5 (item 13). /pricing header: the window art is top-aligned as in the dark
   design (6b centred the 706px image in a 508px hero, 96px too high) and the
   hero lets it run on behind the plan cards, which now sit 130px under the
   Trustpilot row (was 241px). The one veil is lighter (.56 to .6, from .84 to
   .86), with a stronger band behind the header and a soft lift behind the copy,
   and still fades to the page ground at the image foot. The band's own top
   glow drew a seam across the art, so it is off on this page. */
html.fnl-light body.fnl-page--site .hero__plans { overflow: visible; padding-bottom: 40px; }
html.fnl-light body.fnl-page--site .hero__plans > .media { height: auto; align-items: flex-start; }
html.fnl-light body.fnl-page--site .hero__plans > .media > img { object-position: top; }
html.fnl-light body.fnl-page--site .hero__plans > .media::after {
	background:
		radial-gradient(ellipse 34% 22% at 50% 40%, rgba(247, 250, 248, .42) 0%, rgba(247, 250, 248, 0) 100%),
		linear-gradient(180deg, rgba(247, 250, 248, .8) 0, rgba(247, 250, 248, .56) 120px, rgba(247, 250, 248, .6) 50%, rgba(247, 250, 248, 1) 100%);
}
html.fnl-light body.fnl-page--site .hero__plans + .fnl-s11 { z-index: 3; padding-top: 48px; }
html.fnl-light body.fnl-page--site .hero__plans + .fnl-s11::before { display: none; }
@media (max-width: 767px) {
	html.fnl-light body.fnl-page--site .hero__plans { padding-bottom: 24px; }
	html.fnl-light body.fnl-page--site .hero__plans + .fnl-s11 { padding-top: 16px; }
}

/* C16 (item 33). The loop sub on /analytics and /how-it-works: its 590px cap
   (style.css 2393) predates W3c's 18px, so the first sentence alone (712px)
   wrapped and the sub ran to 3 or 4 lines. At 730px the hand <br> gives
   exactly 2 lines, "Here's how the loop runs" starting line 2. */
.fnl-page--site .how__works--graph .outer__how--works > .top > p {
	max-width: 730px;
}

/* C18 (item 38). The integration icons were ink at .62 (.86 on hover); they
   become solid black, hover the same. The V logo is not an orbit node and
   keeps its green. */
html.fnl-light .fnl-page--site .integrations__wrapper .orbit-node > img,
html.fnl-light .fnl-page--site .integrations__wrapper .orbit-node:hover > img {
	filter: grayscale(1) brightness(0);
	opacity: 1;
}

/* C19 (item 41). The Campaign Studio nav on its eight pages (ai-brain, email,
   funnel, graphic-design, strategy, valiant-omniscient, video, workflow) read
   #33574A over the white .88 veil. Titles and tab labels become the light ink
   (#0B1F16, titles at 600) and descriptions a darker sub, #1E3A2F. The :has()
   matches the specificity of the page-group rules at 3252 and 3925. */
html.fnl-light body.fnl-page--site:has(.campaign__wrapper) .campaign__wrapper .inner__steps > .elem > .desc > .desc-inner > p {
	color: #0B1F16;
	font-weight: 600;
}
html.fnl-light body.fnl-page--site:has(.campaign__wrapper) .campaign__wrapper .inner__steps > .elem > p > span.txt {
	color: #0B1F16;
}
html.fnl-light body.fnl-page--site:has(.campaign__wrapper) .campaign__wrapper .inner__steps > .elem > .desc > .desc-inner > span {
	color: #1E3A2F;
}

/* C13 (items 17, 18). /aboutus faders.
   Team cards: the white top-fade is gone; the names are ink straight on the
   pale studio top, and the dark foot stays for the light role caption. */
html.fnl-light .fnl-page--site .our__team--slider .slide > .elem:after {
	background: linear-gradient(to bottom, rgba(5, 14, 10, 0) 55%, rgba(5, 14, 10, .85) 100%);
}

/* "A Valiant Effort": the whole-section veil is gone. On desktop the copy
   column is narrowed to end before the people, and a left-side ground holds
   it, fading out 160px past the column; the photograph is unveiled beyond. */
@media (min-width: 992px) {
	html.fnl-light .fnl-page--site .voyage__wrapper .outer__voyage > .desc {
		max-width: min(540px, calc(50vw - 150px));
	}
	html.fnl-light .fnl-page--site .voyage__wrapper::after {
		background: linear-gradient(90deg, #F7FAF8 0, #F7FAF8 calc(50% - 60px), rgba(247, 250, 248, 0) calc(50% + 100px));
	}
}
/* Tablets and phones: the photograph stacks under the copy, framed, with no
   overlay (it was veiled at .88, and dropped altogether below 768). */
@media (max-width: 991px) {
	html.fnl-light .fnl-page--site .voyage__wrapper {
		background-image: none;
	}
	html.fnl-light .fnl-page--site .voyage__wrapper::after {
		position: relative;
		inset: auto;
		display: block;
		z-index: 1;
		margin: 32px 25px 0;
		aspect-ratio: 16 / 10;
		border-radius: 18px;
		background: url('../img/voyage-back.webp') right center / cover no-repeat;
	}
}
@media (max-width: 767px) {
	html.fnl-light .fnl-page--site .voyage__wrapper::after {
		margin-top: 24px;
		aspect-ratio: 4 / 3;
	}
}
/* the container gutter drops to 16px at 480 */
@media (max-width: 480px) {
	html.fnl-light .fnl-page--site .voyage__wrapper::after {
		margin-inline: 16px;
	}
}


/* C12 (item 6). /workflow: the hero film leaves the W10b-1b .15 veil. It is a
   dusk scene (not a pale sky), so at full strength the copy measured 2.1 to
   4.0; it plays at .5, with a lighter band behind the header and a soft pool
   of the page ground behind the copy only, bound to the copy box so it
   follows the text at every width. Pixel contrast over frames at 0/25/50/75%:
   h1 14.9+, green phrase 4.52+, sub 6.9+, nav 6.0+. Full-strength shots are
   kept for Ben. */
html.fnl-light .fnl-page--site .workflows__hero.workflows__hero > video.hero-video.is-playing,
html.fnl-light .fnl-page--site .workflows__hero.workflows__hero > .hero-video__poster {
	opacity: .5;
}
html.fnl-light .fnl-page--site .workflows__hero.workflows__hero:has(> video.hero-video.is-playing) > .hero-video__poster {
	opacity: 0;
}
html.fnl-light .fnl-page--site .workflows__hero > .container { position: relative; z-index: 2; }
html.fnl-light .fnl-page--site .workflows__hero::after {
	content: "";
	position: absolute;
	inset: 0;
	z-index: 1;
	pointer-events: none;
	background: linear-gradient(180deg, rgba(247, 250, 248, .82) 0, rgba(247, 250, 248, 0) 150px);
}
html.fnl-light .fnl-page--site .workflows__hero .outer__workflows {
	position: relative;
	isolation: isolate;
}
html.fnl-light .fnl-page--site .workflows__hero .outer__workflows::before {
	content: "";
	position: absolute;
	inset: -110px -240px;
	z-index: -1;
	pointer-events: none;
	background: radial-gradient(closest-side, rgba(247, 250, 248, .93) 0, rgba(247, 250, 248, .9) 58%, rgba(247, 250, 248, .55) 80%, rgba(247, 250, 248, .2) 92%, rgba(247, 250, 248, 0) 100%);
}

html.fnl-light .fnl-page--site .workflows__hero { overflow: hidden; }

/* C12 (item 7). /analytics: the green bloom returns in place of the faint
   radial, as a recoloured light copy (analytic-gradient-light.webp: the
   bloom's brightness as the alpha of #00AA5C, so the black surround is
   transparent and nothing seams). Held to .6 under the header band, so the
   nav stays above 5.4:1. The markup keeps the dark file; CSS swaps it. */
html.fnl-light .fnl-page--site .hero__analytics { background-image: none; }
html.fnl-light .fnl-page--site .hero__analytics > .gradient-analytics { display: block; }
html.fnl-light .fnl-page--site .hero__analytics > .gradient-analytics > img {
	content: url('../img/analytic-gradient-light.webp');
	-webkit-mask-image: linear-gradient(180deg, rgba(0, 0, 0, .6) 0, rgba(0, 0, 0, .6) 70px, #000 190px);
	mask-image: linear-gradient(180deg, rgba(0, 0, 0, .6) 0, rgba(0, 0, 0, .6) 70px, #000 190px);
}

/* C12 (item 16). /contact: the butterfly film is back, inverted (dark green
   particles on light) and multiplied into the ground, scaled 1.2% to push its
   3px grey rim outside the clipped hero. A soft pool behind the heading and
   the button keeps them readable as the butterfly passes (h1 14.7, green
   phrase 4.52, over eight frames). The film fills the 855px hero, so the
   empty band Ben saw is gone and "In Your Own Words" follows directly. */
html.fnl-light .fnl-page--site .hero__video.hero__video > video.hero-video { display: block; opacity: 1; }
html.fnl-light .fnl-page--site .hero__video.hero__video > .hero-video__poster { display: block; opacity: 1; }
html.fnl-light .fnl-page--site .hero__video.hero__video:has(> video.hero-video.is-playing) > .hero-video__poster { opacity: 0; }
html.fnl-light .fnl-page--site .hero__video > :is(video.hero-video, .hero-video__poster) { filter: invert(1) hue-rotate(180deg) saturate(1.4); mix-blend-mode: multiply; transform: scale(1.012); }
html.fnl-light .fnl-page--site .hero__video .outer__hero > :is(h1, .btns) { position: relative; isolation: isolate; }
html.fnl-light .fnl-page--site .hero__video .outer__hero > :is(h1, .btns)::before {
	content: "";
	position: absolute;
	inset: -40px -90px;
	z-index: -1;
	pointer-events: none;
	background: radial-gradient(closest-side, rgba(247, 250, 248, .94) 0, rgba(247, 250, 248, .92) 62%, rgba(247, 250, 248, .5) 84%, rgba(247, 250, 248, 0) 100%);
}

/* C11 (item 3), variant (a): the AI Brain as one deliberate dark stage.
   The stage card (the render's own box) takes a 32px radius, a hairline green
   border and a subtle green inner glow (an overlay: the render fills the
   card), a firmer shadow and a wider light margin above and below; the pill,
   heading and note keep their places on the render, which fixes the room
   inside the card. The light ground shows as the margin around the card. */
@media (min-width: 768px) {
	html.fnl-light .fnl-page--site .brain__wrapper {
		padding-top: 56px;
		padding-bottom: 56px;
	}
	html.fnl-light .fnl-page--site .brain__wrapper .media {
		border-radius: 32px;
		background:
			radial-gradient(70% 55% at 50% 42%, rgba(0, 255, 138, .09) 0%, rgba(0, 255, 138, 0) 70%),
			linear-gradient(180deg, #040B08 0%, #020604 100%);
		box-shadow:
			inset 0 1px 0 rgba(255, 255, 255, .05),
			inset 0 0 120px rgba(0, 255, 138, .05),
			0 40px 80px -48px rgba(9, 24, 17, .55);
	}
	/* The render fills the card edge to edge, so the glow and the hairline
	   are an overlay above it (under the glyphs, icons and cards). */
	html.fnl-light .fnl-page--site .brain__wrapper .media::after {
		content: "";
		position: absolute;
		inset: 0;
		z-index: 1;
		pointer-events: none;
		border-radius: inherit;
		box-shadow: inset 0 0 0 1px rgba(0, 255, 138, .22), inset 0 0 140px rgba(0, 255, 138, .07);
		background: radial-gradient(60% 45% at 50% 4%, rgba(0, 255, 138, .07) 0%, rgba(0, 255, 138, 0) 100%);
	}
	html.fnl-light .fnl-page--site .brain__wrapper .top {
		top: 156px;
	}
	html.fnl-light .fnl-page--site .brain__wrapper .bottom__box {
		bottom: 136px;
		background-color: rgba(0, 0, 0, .34);
		border-color: rgba(0, 255, 138, .14);
		border-radius: 16px;
	}
}
@media (min-width: 768px) and (max-width: 1200px) {
	html.fnl-light .fnl-page--site .brain__wrapper .bottom__box { bottom: 101px; }
}
@media (min-width: 768px) and (max-width: 991px) {
	html.fnl-light .fnl-page--site .brain__wrapper .top { top: 80px; }
}

/* C11 (item 50): on phones the heading, the render and the note share that
   one dark card again, as on desktop. The card is the section itself, inset
   16px from the page edge; the three parts take the dark palette back (the
   W10 phone block gave the heading and the note light inks and a white note
   card), the render's own card goes, W3b-1's overlaps return, and the note
   no longer inherits style.css's bottom:45px (it was shifted 45px up). */
@media (max-width: 767px) {
	html.fnl-light .fnl-page--site .brain__wrapper {
		margin: 24px 16px;
		padding: 36px 0 28px;
		border: 1px solid rgba(0, 255, 138, .2);
		border-radius: 24px;
		overflow: hidden;
		background:
			radial-gradient(90% 40% at 50% 45%, rgba(0, 255, 138, .09) 0%, rgba(0, 255, 138, 0) 70%),
			linear-gradient(180deg, #040B08 0%, #020604 100%);
		box-shadow: 0 30px 60px -40px rgba(9, 24, 17, .55);
	}
	html.fnl-light .fnl-page--site .brain__wrapper .top,
	html.fnl-light .fnl-page--site .brain__wrapper .bottom__box {
		--fnl-green: #00FF8A;
		--fnl-white: #fff;
		--fnl-sub: #A9CDBB;
		--fnl-muted: #83B59F;
		--fnl-dim: #5E8272;
	}
	html.fnl-light .fnl-page--site .brain__wrapper .top {
		padding-inline: 20px;
	}
	html.fnl-light .fnl-page--site .brain__wrapper .top .h2-title span.colored,
	html.fnl-light .fnl-page--site .brain__wrapper .top .h2-title span.bold {
		color: #00FF8A;
	}
	html.fnl-light .fnl-page--site .brain__wrapper .top .fnl-pill {
		background: rgba(0, 255, 138, .07);
		border-color: rgba(0, 255, 138, .22);
	}
	html.fnl-light .fnl-page--site .brain__wrapper .media {
		width: auto;
		margin-top: -64px;
		margin-bottom: -56px;
		border-radius: 0;
		background: transparent;
		box-shadow: none;
	}
	html.fnl-light .fnl-page--site .brain__wrapper.brain--card-open .media {
		width: auto;
		margin-top: -64px;
		margin-bottom: 0;
	}
	html.fnl-light .fnl-page--site .brain__wrapper .bottom__box {
		bottom: auto;
		width: calc(100% - 32px);
		background: linear-gradient(to top right, rgba(255, 255, 255, 0), rgba(255, 255, 255, .1));
		border-color: rgba(0, 255, 138, .14);
		-webkit-backdrop-filter: blur(20px);
		backdrop-filter: blur(20px);
	}
}

/* C11 (item 35): /ai-brain. The hero stage and the AI Brain stage were two
   cards with a 40px light gap; they become one card. The brain stage takes
   the hero's width (calc(100% - 60px), max 1380px), starts flush under it
   and continues its ground; the outer corners share the 32px radius, the
   adjoining ones are square, and the one shadow sits under the pair. The
   hairline is left off here, since it would draw a seam between the two
   halves. The side margins are unchanged. */
html.fnl-light .fnl-page--site .hero__brain + .brain__wrapper {
	padding-top: 0;
}
html.fnl-light .fnl-page--site .hero__brain + .brain__wrapper .media {
	width: calc(100% - 60px);
	max-width: 1380px;
	border-radius: 0 0 32px 32px;
}
html.fnl-light .fnl-page--site .hero__brain + .brain__wrapper .media::after {
	box-shadow: none;
	background: linear-gradient(180deg, #000302 0, rgba(0, 3, 2, 0) 90px);
}
html.fnl-light .fnl-page--site .hero__brain:has(+ .brain__wrapper) {
	border-radius: 32px 32px 0 0;
	box-shadow: none;
	background-color: #010B07;
}
/* The hero film's lit floor ended in a hard edge against the render's black
   top; its last 140px fade into the shared ground instead. */
html.fnl-light .fnl-page--site .hero__brain:has(+ .brain__wrapper) .brain-vid-box {
	-webkit-mask-image: linear-gradient(180deg, #000 calc(100% - 140px), transparent 100%);
	mask-image: linear-gradient(180deg, #000 calc(100% - 140px), transparent 100%);
}
/* The stage copy is placed from the section's top edge, which lost its
   padding: the same offsets from the card as on the other pages. */
@media (min-width: 768px) {
	html.fnl-light .fnl-page--site .hero__brain + .brain__wrapper .top { top: 100px; }
}
@media (min-width: 768px) and (max-width: 991px) {
	html.fnl-light .fnl-page--site .hero__brain + .brain__wrapper .top { top: 24px; }
}
/* Phones: the section is already one card; it joins the hero the same way. */
@media (max-width: 767px) {
	html.fnl-light .fnl-page--site .hero__brain + .brain__wrapper {
		margin-top: 0;
		margin-inline: 16px;
		padding-top: 36px;
		border: 0;
		border-radius: 0 0 24px 24px;
		background:
			radial-gradient(90% 40% at 50% 45%, rgba(0, 255, 138, .09) 0%, rgba(0, 255, 138, 0) 70%),
			linear-gradient(180deg, #000302 0%, #020604 100%);
	}
	html.fnl-light .fnl-page--site .hero__brain + .brain__wrapper .media {
		width: auto;
		max-width: none;
		border-radius: 0;
	}
	html.fnl-light .fnl-page--site .hero__brain:has(+ .brain__wrapper) {
		border-radius: 24px 24px 0 0;
	}
}

/* ===== R1-INT: integration fixes ===== */
/* Fixes found when R1-G1, R1-G2 and R1-G3 were gated together. Overrides only;
   nothing above this marker is edited. */

/* INT-1. /pricing: the hero-to-cards gap. R1-G1 C5 set it (Trustpilot row to
   the first card 129px from 768px up, 81px on phones) against the funnels'
   plan band, whose cards sat 40px lower in the band than R1-G2's
   pricing-grid-full cards do. Combined, the gap fell to 89px and 41px. The
   band's top padding takes those 40px back, so C5's measured gap holds. */
html.fnl-light body.fnl-page--site .hero__plans + .fnl-s11.fnl-s11--full { padding-top: 88px; }
@media (max-width: 767px) {
	html.fnl-light body.fnl-page--site .hero__plans + .fnl-s11.fnl-s11--full { padding-top: 56px; }
}

/* INT-2. The homepage headline at 390px and below goes back to 38px, its size
   before R1-G1 C1 (which stepped it to 36px). The ladder above 390 is C1's. */
@media (max-width: 390px) { .fnl-page--site .hero__main h1.h2-title.bigger { font-size: 38px; } }

/* INT-4. /contact: R1-G1 C12 brought the butterfly film back, and its top
   wing passes behind the header, where Industry fell to 1.26:1 and Resources
   to 2.39:1 at the worst of 8 frames (7.68:1 at c0a654b, film off).
   The same light band under the header that C12 gives /workflow: the page
   ground at .97 for the header's 90px, fading out by 180px, above the film and
   below the heading (which starts lower). */
html.fnl-light .fnl-page--site .hero__video.hero__video::after {
	content: "";
	position: absolute;
	top: 0;
	left: 0;
	right: 0;
	height: 180px;
	z-index: 3;
	pointer-events: none;
	background: linear-gradient(180deg, rgba(247, 250, 248, .97) 0, rgba(247, 250, 248, .97) 90px, rgba(247, 250, 248, 0) 180px);
}

/* ===== R3: light imagery (Ben review 2026-09-28) ===== */
/* Part I of the final resolution. The images themselves were redone (the light twins' nav pills, chips, badges and
   card edges repainted flat; s7-4-reports rebuilt light; a light demo poster). This note supersedes the W10c comment
   above ("s7-4-reports has no twin and stays as it is"): s7-4-reports-light.webp now exists, and the 13 hand pages
   that show the S7 carousel point at it in their markup, like the other S5 to S10 shots. The ad and industry funnels
   keep their own S5 to S10 files until #123 (W11) switches them. */

/* ===== R5: pages and routing (Ben review 2026-09-28) ===== */

/* S3: the "All Industries" row under the Industry dropdown's three columns,
   and the /industries hub. The row is a one-item list, so it inherits the
   dropdown's link styling; it only needs a rule above it and even padding. */
header .right .menu>ul>li .header__dropdown.complex>.header__dropdown-all {
	border-top: 1px solid rgba(255, 255, 255, .08);
}
html.fnl-light .fnl-page--site header .right .menu>ul>li .header__dropdown.complex>.header__dropdown-all {
	border-top-color: rgba(9, 24, 17, .08);
}
header .right .menu>ul>li .header__dropdown.complex>.header__dropdown-all>li>a {
	padding-top: 15px;
	padding-bottom: 15px;
}
header .right .menu>ul>li .header__dropdown.complex>.header__dropdown-all>li:before {
	display: none;
}

.ind-hub {
	position: relative;
	z-index: 2;
	padding: 180px 0 100px;
}
.ind-hub__head {
	max-width: 760px;
	margin: 0 auto 56px;
	text-align: center;
}
.ind-hub__head .fnl-pill {
	margin-bottom: 18px;
}
.ind-hub__head h1 {
	margin: 0 0 18px;
}
.ind-hub__head p {
	margin: 0;
	font-size: 16px;
	line-height: 150%;
	letter-spacing: -0.02em;
	color: var(--fnl-sub);
}
/* ul.ind-hub__grid inside .ind-hub: funnel.css zeroes .fnl-page ul margins. */
.ind-hub ul.ind-hub__grid {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 20px;
	max-width: 1140px;
	margin: 0 auto;
	padding: 0;
	list-style: none;
}
.ind-hub__grid>li {
	display: flex;
	min-width: 0;
}
.ind-card {
	display: flex;
	flex-direction: column;
	gap: 10px;
	width: 100%;
	padding: 24px;
	border: 1px solid rgba(9, 24, 17, .10);
	border-radius: 18px;
	background: var(--fnl-card-bg, #FFFFFF);
	text-decoration: none;
	transition: border-color .25s ease, box-shadow .25s ease, transform .25s ease;
}
.ind-card:hover,
.ind-card:focus-visible {
	border-color: rgba(0, 125, 69, .45);
	box-shadow: 0 18px 40px -24px rgba(9, 24, 17, .35);
	transform: translateY(-2px);
}
.ind-card:focus-visible {
	outline: 2px solid var(--fnl-green);
	outline-offset: 2px;
}
.ind-card__t {
	margin: 0;
	font-size: 19px;
	font-weight: 600;
	line-height: 125%;
	letter-spacing: -0.03em;
	color: var(--fnl-white);
}
.ind-card__d {
	margin: 0;
	font-size: 14px;
	line-height: 150%;
	letter-spacing: -0.01em;
	color: var(--fnl-sub);
}
.ind-card__go {
	display: inline-flex;
	margin-top: auto;
	padding-top: 6px;
	color: var(--fnl-green);
}
@media (max-width: 1024px) {
	.ind-hub ul.ind-hub__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 767px) {
	.ind-hub { padding: 130px 0 70px; }
	.ind-hub__head { margin-bottom: 36px; }
	.ind-hub ul.ind-hub__grid { grid-template-columns: 1fr; gap: 14px; }
	.ind-card { padding: 20px; }
	.ind-card__t { font-size: 17px; }
}

/* ===== Case-study header: contrast on the hero, no band (Ben 2026-09-30) ===== */
/* The five case studies (body.fnl-page--case: whop, dimers, rebet, t3-trading,
   upperdeckys). Their hero is the client's dark brand band, and the header
   sits on it. Section 2f painted a band of page ground under the header
   (#F7FAF8 to 96px, easing out by 150px) so the light header's dark inks
   could read; Ben: no band, recolour the header instead. Measured with the
   header hidden, the ground behind the header is dark on all five at 1920,
   1440, 1024, 768 and 390 (median #621E0B Whop, #122952 Dimers, #0C0604
   Rebet, #161711 T3, #0E0E0E Upper Deckys; the brightest pixel under any
   component is luminance .115, Dimers at 1920). So every page takes the same
   on-dark set:
     wordmark      img/head-logo-onhero.svg: white wordmark, the literal
                   #00FF8A V, a white chip (the dark site's #5E8272 chip is
                   1.9 to 2.8:1 here);
     nav links     white at .85, full white on hover and focus;
     chevrons      white (brightness(0) invert(1)) at .8, 1 on hover;
     Sign In       as the links;
     CTA pill      unchanged: the white-to-mint pill with its dark label is
                   already the light shape on the dark band;
     menu button   unchanged: the white chip with dark bars.
   Only the bar over the hero changes. The links, chevrons and Sign In are
   recoloured from 1201px up only: at 1200 and below they live in the light
   drawer, which keeps its dark inks. The dropdown panels keep their light
   card. The header is position: absolute (no sticky or scrolled state), so it
   is always over the hero. */

/* The band: gone. The hero keeps exactly the shade it had under it (.49, the
   T3 photograph .55, section 2f). */
html.fnl-light .fnl-page--case .case__hero:not(.plain)::after {
	background: rgba(0, 0, 0, .49);
}

html.fnl-light .fnl-page--case .case__hero:not(.plain)[style*="case-back.webp"]::after {
	background: rgba(0, 0, 0, .55);
}

/* The hero enters on a 1.3s fade from the page ground (style.css
   csHeroReveal). Over the pale first frames the white links would vanish
   while the pill and the green V stayed, so the header takes the same fade
   and the two arrive together. No motion preference: neither animates. */
@media (prefers-reduced-motion: no-preference) {
	html.fnl-light .fnl-page--case header.secondary {
		animation: csHeroReveal 1.3s ease both;
	}
}

/* The wordmark: the on-dark asset drawn as the img's own background, the
   light asset pushed out of its box (same 154 x 30 box, no filter on the
   green V). */
html.fnl-light .fnl-page--case header.secondary .outer__header .left a img {
	object-position: -10000px 0;
	background: url("../img/head-logo-onhero.svg") 0 0 / 100% 100% no-repeat;
}

html.fnl-light .fnl-page--case header.secondary .outer__header .left a:focus-visible {
	outline: 2px solid #FFFFFF;
	outline-offset: 4px;
	border-radius: 4px;
}

@media (min-width: 1201px) {
	html.fnl-light .fnl-page--case header.secondary .outer__header .menu>ul>li>a,
	html.fnl-light .fnl-page--case header.secondary .outer__header .right>.btns>.sign-in {
		color: rgba(255, 255, 255, .85);
	}

	html.fnl-light .fnl-page--case header.secondary .outer__header .menu>ul>li:hover>a,
	html.fnl-light .fnl-page--case header.secondary .outer__header .menu>ul>li>a:focus-visible,
	html.fnl-light .fnl-page--case header.secondary .outer__header .right>.btns>.sign-in:hover,
	html.fnl-light .fnl-page--case header.secondary .outer__header .right>.btns>.sign-in:focus-visible {
		color: #FFFFFF;
	}

	html.fnl-light .fnl-page--case header.secondary .outer__header .menu>ul>li>a span img {
		filter: brightness(0) invert(1);
		opacity: .8;
	}

	html.fnl-light .fnl-page--case header.secondary .outer__header .menu>ul>li:hover>a span img,
	html.fnl-light .fnl-page--case header.secondary .outer__header .menu>ul>li>a:focus-visible span img {
		opacity: 1;
	}

	html.fnl-light .fnl-page--case header.secondary .outer__header .menu>ul>li>a:focus-visible,
	html.fnl-light .fnl-page--case header.secondary .outer__header .right>.btns>.sign-in:focus-visible {
		outline: 2px solid #FFFFFF;
		outline-offset: 4px;
		border-radius: 4px;
	}

	/* The pill's own focus change (the green ring deepens) is inside the white
	   pill; a white ring outside it reads on the band. The ring follows the
	   pill's radius. */
	html.fnl-light .fnl-page--case header.secondary .outer__header .right>.btns>.regular-btn:focus-visible {
		outline: 2px solid #FFFFFF;
		outline-offset: 3px;
	}
}

/* ===== /contact hero: no pool behind the headline, the butterfly shows in full (Ben 2026-09-30) ===== */
/* R1-G1 C12 laid a soft pool of the page ground behind the /contact heading
   and button, which hid the butterfly film in a block around the copy. The
   pool goes. Without it the film's darkest particles pass right behind the
   words over the first third of the loop (glyph-edge contrast 2.2 for the
   heading and 1.2 for "help you?" at the worst frames). Ben chose subtle over
   strong: the heading gets one very soft, barely visible glow of the page
   ground, with no ring and no hard edge. Over 12 frames at 1920 to 390 the
   background 3px around each glyph holds the heading at 3.6+ and "help you?"
   at 1.26+ at the worst frame (1.09s); from 3.3s on it is 11.8+ and 4.7+.
   .hero__video is on /contact only. */
html.fnl-light .fnl-page--site .hero__video .outer__hero > :is(h1, .btns)::before {
	content: none;
}
html.fnl-light .fnl-page--site .hero__video .outer__hero > h1 {
	text-shadow: 0 0 16px rgba(247, 250, 248, .55);
}
