/*
Theme Name: Conexao Dark
Theme URI: https://conexaotechsolutions.com/
Author: Conexao Technology Solutions
Author URI: https://conexaotechsolutions.com/
Template: generatepress
Version: 3.60.49
License: GPL v2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html
Text Domain: conexao-dark
Description: Dark, modern WordPress child theme for Conexao Technology Solutions, built on GeneratePress with Gutenberg block patterns for the homepage. See the CHANGELOG comment below this header for version history.
*/

/*
CONEXAO DARK — CHANGELOG
(Kept out of the Theme header above so the WordPress-parsed headers always
stay within the first 8 KB of this file. Prepend new entries at the top of
this block, not into the Description field.)

v3.60.49 fixes SEC-13 (_ga/_gid/_ga_* missing Secure). The GA4 config already carried cookie_flags SameSite=Lax;Secure, but under Consent Mode the analytics cookies are written when the consent tool grants analytics_storage (the later consent update), and config-level cookie_flags does not reliably apply to that deferred write. cookie_flags is now also set globally with gtag(set, {cookie_flags}) immediately after gtag(js) and before config, so every cookie write — including the consent-triggered one — inherits Secure and SameSite=Lax. Edited: inc/analytics.php.

v3.60.48 adds the security-headers module (inc/security-headers.php). On front-end responses it sends HSTS (over HTTPS, max-age one year, includeSubDomains), X-Content-Type-Options nosniff, Referrer-Policy strict-origin-when-cross-origin, X-Frame-Options SAMEORIGIN, a Permissions-Policy, and a Content-Security-Policy in REPORT-ONLY mode (so nothing breaks); the CSP allowlists the sources the theme actually uses (self, inline, Google Tag Manager/Analytics, Vimeo player, Google Fonts, data images). Flip to enforcing later by returning true from the conexao_csp_enforce filter. Also hard-blocks the XML-RPC endpoint with a 403 (methods were already disabled). All values filterable (conexao_hsts, conexao_csp, conexao_csp_enforce, conexao_permissions_policy, conexao_block_xmlrpc). wp-admin is exempt. readme.html/license.txt are static files PHP cannot block — handled via .htaccess. New: inc/security-headers.php; edited: functions.php.

v3.60.47 clears a mixed findings batch. (1) Mobile-drawer "Follow us on LinkedIn" link (.conexao-nav__m-li) was 36px tall; given min-height 40px to meet the tap-target floor. (2) Content Linter: the heading-skip check now treats the post title as the h1, so a body that opens at h3 is caught as an h1 to h3 skip (fixes the SOP post); the renumber auto-fix starts at h1 to match. (3) Content Linter: added a check and safe auto-fix for the truncated "O-Insights for Milestone" (missing XProtect), using a negative lookahead so an already-correct "O-Insights for Milestone XProtect" is never doubled, in both the bulk auto-fix and the manual apply. Edited: style.css, inc/content-linter.php. Note: the Partners page template already renders a single "Contact Us" CTA and no "Book a demo"; REL-27 is a page-setup/test-scope matter, not a theme change.

v3.60.46 fixes a Content Linter false positive: WPBakery CSS (vc_custom … 180px !important) was being flagged as an exclamation mark because the scan read the raw shortcode attributes. The scan now strips [vc_*] shortcodes before checking, so it only sees real prose, headings and markup; headings survive (they sit between the shortcodes, not inside them) so the heading-skip check is unaffected. Edited: inc/content-linter.php.

v3.60.45 makes the Content Linter a round-trip so the judgment fixes can be handed off. New "Export flagged content" button downloads a JSON of every flagged post (id, title, full content, current meta description, excerpt, and the issue labels). After the flagged copy is rewritten offline (banned words reworded in context, unique meta descriptions written), the corrected JSON is uploaded via "Apply corrected file": it matches by post id and writes back only the fields present and changed (title/content via a revisioned update, meta_description to _cnx_seo_desc), then reports exactly which posts and fields were updated. Reusable for every future import batch. Edited: inc/content-linter.php.

v3.60.44 adds a one-click "Auto-fix all safe issues" button to the Content Linter for clearing a large backlog fast. It applies the deterministic fixes across every post in one pass: product names (O-Insights for XProtect -> Milestone XProtect, Niagara/Tridium -> Niagara), em dashes -> comma, en dashes in titles -> hyphen, heading-level skips renumbered, exclamation marks -> period (only at sentence/clause ends, never inside markup like <!--), and "your data" -> "the data" (capital preserved). Banned words and meta descriptions are intentionally left for manual review since they need a human rewrite. Each post is a normal revisioned update, so the batch is reversible. Edited: inc/content-linter.php.

v3.60.43 adds the Content Linter (inc/content-linter.php) at Site Content > Content Linter (manage_options), for the recurring LinkedIn->WordPress imports. It scans blog posts and flags: banned words/phrases, em dashes in prose, en dashes in titles, "O-Insights for XProtect" (missing Milestone) and "O-Insights for Niagara/Tridium", exclamation marks in body, "your data" language, heading-level skips, and meta descriptions that are missing/shared, off-length (outside 140-160), or duplicated across posts. Each finding shows the context and an editable replacement pre-filled with a sensible suggestion; ticking and applying performs the fix in place — text findings str_replace the matched text in the title or body (grouped into one revisioned post update per post), meta findings write the SEO description field. Read-only until applied; reversible via revisions. New: inc/content-linter.php; edited: functions.php.

v3.60.42 clears the two theme items from the test findings. (1) Mega-menu "View all solutions" link: it was an 11px inline link (110x17, under the tap-target floor) and Safari reported it unnamed. It is now inline-flex with min-height 44px and small padding (negative margin keeps the layout), and carries an explicit aria-label "View all solutions" with the decorative arrow marked aria-hidden, so it has a stable accessible name. (2) UI-12/REG-08 search field: every search field the theme renders was already covered with winning !important, so the leak is any search input we did not anticipate. Added a safety-net rule body input[type="search"] (0,1,2, above GeneratePress's 0,1,1) forcing a dark field surface, while staying below the intentional per-field rules (nav 0,3,1 transparent, #cnx-s 1,1,0) so the glass nav search is untouched. No search input anywhere can now take GP's light fill. Edited: header.php, style.css. (Note: the _ga Secure flag is already correct in the theme gtag config (cookie_flags SameSite=Lax;Secure); a prod _ga without Secure is a stale deploy or a second GA tag, not a theme change.)

v3.60.41 fixes the Case Study linker not saving. The commit branch keyed on $_POST[cnx_cs_commit], but the submit button was unnamed (submit_button default name "submit"), so clicking Apply only reloaded the dry-run and never wrote. The button is now named cnx_cs_commit so the confirm actually applies the links and images. Edited: inc/casestudy-assets.php.

v3.60.40 reworks the Case Study linker to read the authoritative download link from each story's source post body instead of guessing from filenames. The original Case Study posts carry the PDF as a (url-encoded WPBakery) button link; the tool decodes the body, extracts the first .pdf URL, matches the source to the Success Story by _cnx_migrated_from or shared slug, and sets _cnx_story_link to that exact URL. Where a preview image sits next to the PDF (same base name, optional -pdf suffix), it is registered as an attachment and set as the featured image when the story has none. External PDFs (e.g. a Tridium-hosted case study) and PDFs outside the CaseStudies folder (e.g. SirajPower) are handled because the URL comes from the body, not a folder scan. Confirm table with per-row checkboxes; idempotent. Rewrote inc/casestudy-assets.php.

v3.60.39 adds a helper to link the FTP-uploaded Case Study PDFs (inc/casestudy-assets.php), at Site Content > Link Case Study PDFs (manage_options). It scans /uploads/CaseStudies/ for PDFs and, for each Success Story, pre-selects the best filename match in a dropdown while leaving the choice to the user. On save it registers the chosen PDF and its preview image (same base name, optional -pdf suffix, jpg/png preferred over webp) as Media Library attachments if not already, sets _cnx_story_link to the PDF URL and the story featured image to the preview image. Nothing is written until the user confirms; low-confidence matches are flagged; re-running is idempotent (files registered once, links simply rewritten). New: inc/casestudy-assets.php; edited: functions.php.

v3.60.38 aligns upload folders to the existing structure and restricts routing to documents only. Brochure uploads now land in /uploads/ResourceHub/Brochure and Success Story uploads in /uploads/CaseStudies (matching the folders already in use via FTP). Only PDFs and office documents are routed; images and other files keep the WordPress default, so those folders stay document-only. Any document uploaded without a matching content-type context goes to /uploads/documents. Folder names remain filterable via conexao_upload_folders. Edited: inc/uploads.php.

v3.60.37 tidies where uploaded files land (inc/uploads.php). Instead of /uploads/YYYY/MM/, uploads are routed into clean named folders: a file uploaded while editing a Brochure goes to /uploads/brochures/, a Success Story to /uploads/case-studies/ (also events/webinars), and any other PDF or office document to /uploads/documents/. Images with no content-type context keep the WordPress default. Files stay in the Media Library, so the asset pickers see them and there is no need to FTP or hand-link. Folder names are filterable via conexao_upload_folders so they can match folders already in use. Only affects new uploads; existing files and links are untouched. New: inc/uploads.php; edited: functions.php.

v3.60.36 removes the unused Documentation type from the admin. The cnx_doc post type (already non-public) is now hidden from the menu (show_in_menu false) and dropped from the Site Content submenu order map and the Overview counts. The post type stays registered so nothing referencing it errors, but it no longer clutters Site Content. Edited: inc/resources.php, inc/admin-menu.php.

v3.60.35 makes Site Content field-based and easier to add, per the agreed direction. Success Stories, Events and Webinars now drop the block editor (supports no longer includes editor) and are authored entirely through their detail fields. New shared admin media picker (inc/admin-media.php + assets/js/cnx-admin-media.js): a "Select / upload" button opens the WP media library and writes the chosen file URL into the field, so a case study PDF is picked, not pasted. Success Stories: the read-story link is now that PDF picker; the metric fields are relabelled to the "quick fact" value/label (e.g. 12,000+ / cameras unified) shown on the card; description wording clarified; no editor. The card and its PDF link are unchanged on the front end. Events: field-based (date, location, type, summary, featured image); single-cnx_event renders the post body when a migrated recap exists, otherwise the summary field, so new events need only a summary. Webinars: simplified to title, one Link (registration or recording), Description and featured image; the date now comes from the post timestamp (dropped the date, presenter and separate recording fields); single-cnx_webinar shows the post date, description-or-body, and a single "Watch the webinar" CTA; the webinars card uses the post date. New: inc/admin-media.php, assets/js/cnx-admin-media.js. Edited: functions.php, inc/success-stories.php, inc/events.php, inc/webinars.php, single-cnx_event.php, single-cnx_webinar.php, patterns/res-webinars.php.

v3.60.34 addresses the tag/archive gap and the leftover duplicates. (1) New archive.php: the theme had no archive template, so tag/category/date/author archives fell back to an unstyled default that rendered raw post content (including WPBakery markup on un-migrated strays). Archives now use the resources card grid and header, and a pre_get_posts (conexao_archive_include_cpts) pulls cnx_event/cnx_webinar into tag and category queries so, for example, /tag/event/ lists the real events as cards rather than leftover posts. Each card picks its type label and date field by post type. (2) Migration tool gains a second section, "Retire migrated duplicates": any post still containing WPBakery markup that has a CPT twin (matched by slug, tolerating a trailing -N on either side) is set to draft with a 301 to the twin; posts with no twin (Partnerships, Insights) are left untouched. Same dry-run-then-confirm, nonce-gated, reversible (_cnx_retired_to meta + sources kept as drafts). This clears strays such as the Intersec Saudi -2 and the Egypt twin. (3) SEO hygiene: tag, author and date archives are now noindex (follow preserved); category archives such as Insights stay indexable. New: archive.php; edited: inc/events-migrate.php, inc/events.php, inc/seo-meta.php.

v3.60.33 fixes the empty Events/Webinars grid after migration. When a section is sourced from a CPT (cnx_event/cnx_webinar), the renderer was still applying the page's "source category slug(s)" scope (e.g. category = events) as a tax_query; CPT posts are not in that post category, so every item was filtered out and the grid showed "Nothing here yet" despite 54 published events. The category scope now applies only when post_type is the regular post (the post-based sections); CPT sources rely on the product pills alone. One-line guard in conexao_res_render_posts. No other change.

v3.60.32 adds the one-time legacy-content migration tool (inc/events-migrate.php) plus the reviewed dataset it applies (inc/data/events-migration.json: 54 events, 3 webinars, 9 case studies, with the India->XPerience Day, webinar-date-from-timestamp and case-study->Milestone corrections baked in and the Intersec duplicate dropped). It runs from Site Content > Migrate (one-time), capability-gated to manage_options. Dry-run is the default and lists exactly what it would create (and whether a hero image matches an existing media item); writing only happens on an explicit, nonce-protected confirm. For each record it creates the cnx_event / cnx_webinar / cnx_story with the clean title, slug, body and summary, sets the type-specific meta, the cnx_product pill term and tags, maps the hero to an existing attachment (by URL then by filename), retires the source post to draft (never deletes it) and records an old->new 301 in the conexao_migrated_redirects option, served by a template_redirect handler. Idempotent: a source already carrying _cnx_migrated_to, or a target slug that already exists, is skipped, so the tool is safe to re-run. Note: the source for each migrated item is kept as a draft (recoverable); the Milestone Technology Day Egypt has two source posts and the builder one is migrated. New: inc/events-migrate.php, inc/data/events-migration.json; edited: functions.php.

v3.60.31 builds the Events/Webinars display layer on the new CPTs. New single templates single-cnx_event.php and single-cnx_webinar.php render the approved layout: product-accent eyebrow (accent from the cnx_product term via conexao_cover_product, Milestone blue / Niagara red isolated), title, an event-meta strip (date via a new conexao_event_date_display range formatter, location, type; presenter for webinars), a featured-image hero, the cleaned body, and an accent CTA (event recap link; webinar "Watch the recording" when a recording link is set, else "Register"), with a Filed-under div and prev/next. Added .cnx-ev-meta / .cnx-ev-type / .cnx-ev-hero / .cnx-ev-cta styles. The resources listing renderer now accepts a post_type plus date_meta/type_meta, so the Events and Webinars sections can be sourced from cnx_event/cnx_webinar while keeping the existing card design and Milestone/Niagara pills; the card shows the event date (from its field) and the per-item Type as the thumbnail label, and CPT sections order by their date newest-first. The /events/ and /webinars/ patterns use the CPT when it has published content and otherwise fall back to the current category posts, so neither page is ever empty before the migration runs. Added schema.org/Event JSON-LD on event singles (truthful fields only: name, start/end date, location, description, image, organizer). Still to come: the one-time migration writer that moves the 55 events + 3 webinars into the CPTs (and the 9 case studies into cnx_story) with the reviewed data, then the old->new 301s. New: single-cnx_event.php, single-cnx_webinar.php. Edited: inc/events.php, inc/resources.php, patterns/res-events.php, patterns/res-webinars.php, style.css.

v3.60.30 adds the Webinars custom post type (cnx_webinar) — backend only, mirroring cnx_event. Webinars are dated, structured, online event-type content: fixed fields for date, presenter/host, a registration link (upcoming) and a recording link (after), plus a summary, with title/editor/featured-image/excerpt and the shared cnx_product + post_tag taxonomies. Managed under Site Content (placed after Events in the menu order and overview), with Date + Presenter admin columns and newest-first default sort. Singles at /webinars/{slug}/; has_archive false so the existing /webinars/ template page stays the listing. One-time version-guarded rewrite flush. Insights stays the native blog (regular posts), by decision. No front-end template or copy changed yet; single templates, the listing rewire to source events/webinars from the CPTs through the existing product-pill resources system, and the content migration follow. inc/webinars.php (new), required in functions.php; inc/admin-menu.php order + overview.

v3.60.29 introduces the Events custom post type (cnx_event) — backend only. Events (roadshows, summits, XPerience Days, forums, tradeshows, workshops, webinars) are the site largest, most structured content type and were previously freeform posts in the "Events" category carrying the old site page-builder markup. The new native CPT (no plugin) gives them fixed fields — start/end date, location, type, optional link, summary — plus title, editor, featured image, excerpt and the shared cnx_product + post_tag taxonomies. It is managed under Site Content (added first in the menu order and the overview table), with admin list columns for Date, Location and Type and a newest-first default sort. Singles resolve at /events/{slug}/; has_archive is false so the existing /events/ template page stays the listing (to be rewired to query the CPT next). A one-time, version-guarded admin_init rewrite flush regenerates the permastruct after deploy. No front-end template, copy, tokens, slugs, or Customizer keys changed yet; the single/archive templates, Event schema, listing rewire, and the migration of the 56 legacy event posts (with old->new redirects) follow after the single-page mockup is approved. inc/events.php (new), required in functions.php; inc/admin-menu.php menu order + overview.

v3.60.28 clears the theme-side legacy-post reds while a content decision is pending. SEO-03: singular titles were always "Title | Conexao Technology Solutions", which overflowed 65 chars on long event titles; the title now drops the company suffix when the full string would exceed 65 (the bare post titles fit), trimming a bare title at a word boundary only if it is itself too long. Per-post SEO-title overrides still win. UIC-02: single.php rendered the "Filed under" category/tag block as a second <footer> element, so a footer-link equality check picked up per-post taxonomy chips and saw the footer as differing between posts; changed that block to a <div> (class and styling unchanged) so only the real site footer is a footer landmark. MOB-02/MOB-11: migrated posts still carry old page-builder markup and fixed-width media (long unbroken URLs, width="429" images) that forced horizontal scroll on mobile; added overflow-wrap:anywhere on the article body and capped img/iframe/video/table width so no post can overflow the viewport. CSS/template/backend only; no copy, tokens, slugs, ids, or Customizer keys changed. Still open pending Hari: the raw WPBakery shortcode content in 83 posts (renders as literal text), the truncated "O-Insights for Milestone" name in 15 posts (BRD-03), and unique meta descriptions for empty-excerpt posts (SEO-04).

v3.60.27 corrects two things after the real failures.txt landed (all failing URLs are the production domain). (1) REG-08/UI-12 (search field GP light fill): the test reads a computed background-color of exactly GP's rgb(247,248,249), which rules out both autofill (that paints an inset box-shadow, not background-color) and the in-page #cnx-s field (id + !important, unbeatable) that v3.60.26 assumed. The field the test grabs is a header search input, whose rule set background:transparent WITHOUT !important, so GeneratePress's !important form-field fill won (the codebase's recurring GP-!important lesson). Added !important to background and box-shadow on both the desktop expand-search input and the mobile drawer search input, in base and focus states, so no search field can take GP's fill. The v3.60.26 autofill guard is kept as a secondary hardening for the contact/demo fields but is not the REG-08/UI-12 fix. (2) SEC-04 (WP core version leaking via asset ?ver=): added a style/script loader filter that strips ver only from core-origin assets (/wp-includes/ and /wp-admin/); theme and plugin assets under /wp-content/ keep their cache-busting version. Carried over from v3.60.26 and still correct against the real failures: MOB-04 (mobile search submit 40x40, test floor 39.5), SEC-05 (xmlrpc_enabled false), SEC-07 (author-enum guard moved to template_redirect priority 0 so it beats redirect_canonical). No copy, tokens, slugs, ids, or Customizer keys changed.

v3.60.26 clears the theme-side items from a failures triage. (1) Mobile search: the drawer's search submit button (.conexao-nav__m-search-go) was 38x38, under the 40px tap-target floor; raised to 40x40. (2) Search-results field light fill (UI-12): specificity was already maxed on this field (#cnx-s carries an id + !important background), so the light fill surviving on production is the browser's autofill layer, not a losing selector; Chrome paints an inset box-shadow that background cannot override at any specificity. Added a :-webkit-autofill guard that repaints the dark surface via -webkit-box-shadow inset (the one property autofill honours) and holds text/caret colour, scoped to the surface-3 fields (site search + contact/demo inputs); the transparent glass nav search is left untouched. (3) Author-enumeration username leak (SEC-07): the existing conexao_dark_block_author_enum guard was registered on template_redirect at the default priority 10, tying core's redirect_canonical() which, registered first, 301'd ?author=1 to /author/<username>/ before the guard could fire; moved the guard to priority 0 so it redirects to home first and the login name never surfaces. (4) Disabled XML-RPC methods (xmlrpc_enabled false) and dropped the RSD link, closing the listed xmlrpc surface at the app layer. No copy, tokens, slugs, ids, or Customizer keys changed. Not addressed here (server/host layer, for the cutover/security session): HSTS, the Server version token, readme.html, core asset ?ver= stripping, and CSP; and the _ga Secure flag, which is already correct in the theme tag (cookie_flags SameSite=Lax;Secure) and needs a prod-deploy / no-double-tag verification rather than a code change.

v3.60.25 removes the "Slider & Maps" module (formerly MODULE 6) from the Milestone product page per Hari's decision. The module block is deleted from patterns/milestone-modules.php and its dot is removed from the right-rail nav (patterns/milestone-rail-nav.php), leaving six modules: Workspace, Smart Reporting, Command Center, IoT Drivers, Genie and Notification Manager. Notification Manager is now the sixth and final module; its background band is flipped from untinted to tinted so the modules keep their alternating rhythm (previously Genie and the removed Slider both sat next to a plain band). The rail-nav is data-driven, so no JS change was needed. The "smart maps" mention in the Milestone use-cases card is left in place, since Milestone Smart Maps is a native XProtect feature and the line does not depend on the removed module. Copy and structure only; no CSS, tokens, slugs or ids changed.

v3.60.24 adds submission capture and a monthly activity report. Every Contact, Book-a-Demo, and Feedback submission is now recorded to a dedicated table (wp_cnx_submissions) alongside the existing email, which is untouched and stays primary. A new Site Content > Submissions screen has two tabs: a monthly report preview (with a manual send button and a month picker) and a browsable, filterable, paginated log of all submissions with CSV export. On the 1st of each month a WP-Cron job emails the previous month's report to the configured recipient: key KPIs (volume, satisfaction, reply rate, top demo interest, top unmet need), charts for topics/roles/products, the pages where visitors got stuck, and a deterministic (no-AI) "What to act on" summary derived by rule from the month's counts. Two Customizer controls under Contact & Forms toggle the report and set its recipient (blank falls back to the Contact recipient). Rows are pruned after 12 months. No changes to any front-end template or the send path.

v3.60.23 casing fix: the MQTT connector item "Glass break" is now Title Case "Glass Break" to match the other device labels. Copy only.

v3.60.22 works through the second review batch. The Success Stories subhead becomes "Real Deployments. Measurable Results.", and product filters now hide automatically when a product has no published stories (the empty Core filter no longer shows; if every product is empty the whole filter bar hides). The Americas HQ block is removed from the Contact page. On the Niagara page the integration copy grammar is fixed ("every other device are" to "is") and the native-dashboard offering list now reads dashboards, fault detection and diagnostics, asset management, tenant billing, energy prediction, analytics and natural-language search. The Milestone IoT connector diagram is remapped: MQTT now lists Glass break and Water Leak (replacing Motion and Crowd) plus LPR and Third party analytics; OPC UA drops AHU, Glass Break and Emergency and adds SCADA, PLC and Machine; BACnet swaps Traffic Mgmt for AHU, Fire Status for Fire Panel and DG Status for Access Control; SNMP swaps Over-speeding for Server health and adds Network Switch; the protocol FAQ is updated to match. The IoT hook sentence now reads "every IoT sensor, IoT platform, machine, PLC and SCADA in your facility...". Module intro paragraphs widen (max-width 760px to 960px) so lines like "alarms, events" no longer wrap short of a full-width heading. Brochure buttons link directly to the configured PDF with a download attribute and stay hidden when no brochure URL is set. The "LIVE" badge is removed from the hero glass mock. The analytics consent banner no longer names Google Analytics, using generic wording about measuring site use to improve performance.

v3.60.21 reconciles the Solutions (industry vertical) pages with the review copy. The two shared blocks are standardized across every vertical: "What Each Product" now reads "Three specialized solutions, each purpose-built to deliver excellence in its domain." with a per-vertical lead, and "Next Step" reads "See O-Insights in an Environment Like Yours." with a per-vertical walkthrough line. Per-vertical copy corrections were applied to Healthcare, Pharmaceutical, Education, Hospitality, Financial, Mining and Transportation (hero headline/lead, the Challenge headline and body, and specific numbered challenge points). Banned words in the supplied copy were reworded to stay on-brand: "seamlessly integrated" became "integrated" (Healthcare), "Seamless Operations" became "Connected Operations" (Hospitality), the Niagara product line dropped "unlock" and "your data" phrasing, em dashes in prose were replaced with commas, and the standard "What Each Product" lead was reworded to avoid framing the four products as a connected suite (complement framing kept instead). Copy only; no template structure, tokens or layout changed.

v3.60.20 brings the "What We Build" block back to the About page (heading "Products across your operations." with the lead "A portfolio that powers connected, intelligent operations."), but without the six product tiles and folded into the Mission section as a compact subsection under "Transforming Technology into Real-World Impact." rather than occupying its own full-height section. About page copy/layout only.

v3.60.19 works through the review punch-list. Niagara hero: "Your buildings, unleashed." becomes "Your buildings, in full view." (REL-28 — removes the last banned word in the hero). Mobile nav: the drawer "Close menu" button is now a 44x44 tap target with the icon centered (MOB-04). SEO: /professional-services/, /about/ and /partners/ get their own default meta descriptions instead of falling back to the front-page one (SEO-04). Partners page: the hero becomes "Powered by a Trusted Partner Ecosystem." with Milestone Systems and Tridium Niagara as outbound links and "seamless" reworded to "deep"; the closing CTA becomes "Partner With Us" with a reworded body (the Contact Us button is kept). Community Perspectives page: heading updated to "Community Perspectives." and the top text set to "Here's what our Partners, Integrators and Customers have to say about O-Insights." Insights: the blog heading becomes "Conexao Insights." with a reworded subhead. About page: the Book-a-demo placement is fixed (the hero CTA now left-aligns with the copy instead of centering under it), the six generic What We Build cards and their now-empty section are removed, and the hero CTA top margin is tightened for a more compact page with less whitespace.

v3.60.18 is the first batch of the KPF website edits. The unverified "1,000 alarms a second" figure is removed from the Core alarms module in both places (the escalation hook, and the "Built for scale" card, which now reads "Engineered and load-tested for high-volume alarm handling"). The About page is reconciled with the KPF draft: the hero headline becomes "Operational Intelligence Built on Domain Expertise" with a reworded lead (more than 75 experts); the stats read 75+ Experts / 25+ Countries / 2 Bases, and the US location is described as "a base in the United States" rather than an "Americas HQ"; the Mission headline becomes "Transforming Technology into Real-World Impact." with a reworded body that drops the banned word "robust" and the Americas-specific sentence. The user-facing "Community Voices" is renamed "Community Perspectives" in the Customizer default label, the section label, and the VideoObject schema name/description; internal slugs, CSS classes, and the page Template Name intentionally stay as their existing "customer-voices"/"Community Voices" identifiers. Copy and labels only; no CSS, tokens, layout or slugs changed.

v3.60.17 restructures the Milestone "Everyday Toolkit" per the Kamal WIP-2 note. The Dashboard and Reporting cards are combined into one outcome-focused card, "Dashboards & Reporting" ("Full visibility, audit-ready." — one live view for situational awareness and compliance, plus scheduled reports that make regulatory reviews easy and end manual MIS work). IoT becomes the second tool ("IoT events, verified on camera." — MQTT, BACnet, OPC UA and SNMP devices into XProtect with a live camera feed on every event and the noise filtered out), linking to the IoT Drivers module (#iot). Command Center stays third with outcome-focused copy (advanced incident management with evidence lock and conditional workflows that fit how the operation runs today and scale as it grows). The section header "Three tools your team will work in every day" is still accurate (three cards). A chip icon was added for the IoT card; the trio still uses the existing mtk-card grid, so no CSS or layout changed.

v3.60.16 reworks the Milestone capabilities breadth line and removes the homepage hero animation. The breadth statement drops the misleading "custom capabilities, new sensor types, and bespoke workflows get built every project" phrasing; it now reads "From counting and classifying to monitoring, triggering and automating, O-Insights covers a wide range of use cases on top of the cameras and sensors you already run," which conveys broad applicability without implying bespoke build work on every project. The homepage hero "conduit" animation is removed: the .conexao-conduit SVG (flowing lines, pulsing node dots and the traveling pulse dots) is deleted from patterns/hero.php, and the now-unused homepage conduit.js enqueue is dropped from functions.php. The hero keeps its glow blobs, headline, wayfinding line and the four product tiles. The cx-conduit CSS is left in place in case the 404 conduit shares it, and assets/conduit.js remains in the theme but is no longer loaded.

v3.60.15 continues the WIP-2 review. The Milestone hero subhead drops the "without new servers, new clients, or new training" clause and now ends "...work in unison." The Milestone use-cases "Don't see yours?" CTA tile is now full-width (grid-column: 1 / -1) and centered, so that after the Data centers card was added the last row is a clean full-width CTA rather than a single orphaned tile. CSS and copy only; the CTA change is scoped to mp-uc-tile--cta (Milestone use-cases only).

v3.60.14 is the first batch of the Kamal WIP-2 review (copy only). The Milestone hero badge becomes "Milestone Certified Technology Partner". The Key Benefits lead drops the "solves problems your VMS alone cannot, using the same cameras, the same client, the same vendor" framing in favor of positive XProtect wording: "extends it into a full operations platform, adding new capabilities on top of the cameras and sensors you already run." All ANPR claims are removed from the Milestone pages (Key Benefits body, Use Cases "Hotels" card, and the Capabilities parking item), since O-Insights does not derive ANPR from footage. A "Data centers" card is added to the Milestone use-cases grid. The "Does O-Insights replace my Niagara Framework or BMS?" FAQ is removed from the Niagara page. No CSS, tokens, slugs or ids changed. Known follow-up: the added use-cases card makes twelve verticals plus the "Don't see yours?" CTA, so the CTA now sits alone on the last row pending a layout decision.

v3.60.13 fixes the Core Notifications module layout. That module has four channel cards (Email, Text message, WhatsApp, Webhook) and was breaking as three-plus-one on the shared three-column feature grid. A re-added .mp-feature-grid--4 modifier renders those four cards in a single row on desktop, scoped to the Notifications grid only; the other five modules have six cards each and are unchanged at three columns. The modifier sits with the base grid rule so the existing responsive breakpoints still apply: two columns on tablet, one on mobile. CSS plus one class on one grid; nothing else changed.

v3.60.12 refines the Core positioning per the Kapil/Hari review. The positioning sentence keeps "workflows" and "automate resolution" ("...unifies alarms, health and workflows... then uses AI to correlate, diagnose and automate resolution"). Unified Monitoring is reframed around dashboards, smart maps, floor plans and time-lapse playback to match the brochure's Workspace copy. The Correlation card drops the concrete ports/network example and describes grouping related alarms into one incident. "Fault Detection & Diagnostics" now uses an ampersand everywhere on the Core page (suite diagram node and mobile chip, module rail label and MODULE 01 tagline, licensing FAQ, and the Diagnosis capability card) to match the brochure and the Niagara page. The Challenge is reframed as a question ("One operation. How many systems?") and the capabilities section is moved to after the Why O-Insights Core band, so the Challenge and that band read as question then answer. The band headline changes from "One vendor, where there used to be three" to "One solution, where there used to be three." Copy and structure only; no CSS, tokens, slugs or ids changed. Note: the question-style Challenge headline is a deliberate, approved exception to the usual no-question-openers guideline.

v3.60.11 adds the Core positioning/capabilities section and renames the Fault Detection module. A new "WHAT CORE DOES" section (patterns/core-capabilities.php) sits right after the Challenge: a positioning statement ("An AI operations platform for physical infrastructure...") plus five capability cards, Unified Monitoring, Correlation, Diagnosis, Reporting and Automation. Per product guidance the Workflow capability was dropped, and Automation is described at a high level, grounded in behavior that already ships (noise filtering, escalation, routing); it does not name or imply any unreleased agent work or roadmap. "Fault Detection" is renamed to "Fault Detection and Diagnostics" in the suite diagram (desktop node and mobile chip), the module rail label and MODULE 01 tagline, and the licensing FAQ; anchor ids and data-targets are unchanged. The new section reuses the shared mp-cap-grid/mp-cap-card component, so no CSS was added. New file registered in template-core.php.

v3.60.10 reworks Core page positioning copy. The Challenge section no longer frames the problem as security-only; the headline and lead now carry security operations and building operations equally ("Security and building operations today are fragmented, noisy and slow"; "Security teams and building operators..."), with the four problem cards unchanged since they already fit both. The White-label section is repositioned from a generic "gap in your lineup" to its actual targets, sensor OEMs and large system integrators and distributors, with two audience-specific proof lines added (OEM: the operations layer that finishes their devices; SI/distributor: one platform to standardize on, resell and deliver). The "How does O-Insights Core cut down on alarm overload?" FAQ is removed, which also drops it from the FAQPage JSON-LD. Copy and markup only; no CSS, tokens, slugs, or module content changed. The six-capability framing and the "AI Operations Platform for Physical Infrastructure" positioning sentence are intentionally not included here; they are parked pending clarification.

v3.60.9 fixes the Partners logo wall alphabetical sort. The logos are a cnx_partner CPT rendered on the front end in menu_order; sorting the admin list by the Title column changed only the admin view, never the site, so "sort alphabetically" appeared to do nothing. This adds a real "Sort A to Z" button above the Partners list that writes menu_order in alphabetical order (punctuation-insensitive, so Dicker Data sorts before D-Ron and Web2See before Wesco, matching a human reading), plus a one-time migration that alphabetizes the existing wall on the first admin load after this update. Alphabetical is now the default; drag-to-reorder still works as a manual override. Backend and admin only; no front-end markup, CSS, tokens, or slugs changed apart from the partner display order.

v3.60.8 replaces the About hero graphic. The old hand-drawn skyline with a random node network is retired in favor of a "clarity from complexity" concentric graphic: disordered particles on the left resolve into clean concentric arcs and ordered pads radiating from the Conexao logo at the center. The logo is pulled from the Customizer dark/light logo settings (conexao_logo_dark on the dark theme, conexao_logo_light on the light theme) with the bundled masters as a fallback, and swaps with the theme via the existing html[data-conexao-theme] mechanism. Motion (arcs breathing, pads pulsing, ripples emanating, left-side particles drifting) is scoped CSS and honors prefers-reduced-motion. The dead .ab-* skyline rules are removed. Markup and CSS only; the graphic is decorative (aria-hidden). Animation needs a live-browser check since Puppeteer cannot capture motion.

v3.60.7 applies the approved website copy edits from the KPF review to the theme (these were edits for the site, delivered via a doc). Milestone toolkit heading "Dashboards your operators live in." becomes "Dashboards that offer a unified view." The Niagara band line fixes subject/verb and a comma splice ("every other device are... single data model; it does not replace it"). The Core alarms hook is rewritten from an incomplete sentence and "on-call rotas" becomes "on-call rotations"; the noise-filter line gains a comma. The solutions eyebrow "WHAT EACH PRODUCT UNLOCKS" becomes "WHAT EACH PRODUCT ADDS" (banned word) and "PROOF FROM THE FIELD" becomes "REAL-WORLD RESULTS". Partners: the two partner card names now link to the vendor sites via new Customizer options (conexao_partner_ms_url, conexao_partner_nia_url; defaults milestonesys.com and tridium.com), styled to inherit the card look; the cards are already in alphabetical order. Copy and one option-backed link addition only; no layout changes.

v3.60.6 clears a round of test findings. Homepage product card links: the Customizer URL defaults dropped the "/products/" prefix and now use flat slugs (Milestone, Niagara, Core) to match the flat-slug decision; live saved Customizer values override these and still need setting in wp-admin. Theme toggle: the segmented buttons were 32x30; raised to a 40px touch target in the mobile drawer (MOB-04). Form inputs: .conexao-input font-size 15px -> 16px so the contact and demo fields no longer trigger the iOS focus zoom (MOB-09). CLS: explicit width/height (2619x607) added to the O-Insights hub logo on the Core page (MOB-07). Headings: the Success Stories card title promoted h3 -> h2 so /success-stories/ no longer skips from h1 to h3 (SEO-06). Meta descriptions: each product template (Milestone, Niagara, Core, Automation) now has a distinct, on-page-accurate default description instead of sharing the generic site default that the front page also uses (SEO-04). Search field: the results field kept showing GeneratePress's light fill despite the v3.60.4 class-level !important, so the override is escalated to the input id (#cnx-s) which beats any parent or plugin rule regardless of specificity or source order (REG-08).

v3.60.5 finishes the product-name change from v3.60.4. Two instances of "O-Insights for Niagara/Tridium" survived that pass because it only covered patterns/, inc/, and functions.php: the header mega-menu products card (header.php) and the footer products list (footer.php). Both now read "O-Insights for Niagara". A whole-theme sweep confirms no product-name "/Tridium" remains; the Tridium/Niagara partner badge and the "powered by" line are vendor attributions and are left as-is.

v3.60.4 clears a round of test findings and a product-name change. Product name: "O-Insights for Niagara/Tridium" is now "O-Insights for Niagara" everywhere the product is named (partners resolver and hero lead, post-cover eyebrow, the blog resource pill label, the Organization makesOffer entry, the products list, and the Niagara page SoftwareApplication schema). Vendor/partner references to Tridium (the Events/Webinars pill labels, the Niagara partner badge, and the "powered by Tridium / Niagara Framework" line) are left as-is since they name the company, not the product. Fixes: "Data centres" -> "Data centers" on the Automation page (UK spelling missed earlier); the Automation deliver note raised from an inline 13.5px to 14px (a CSS floor cannot reach an inline style); the mobile drawer logo raised 28px -> 44px so it clears the 80px width and 40px tap minimums (the v3.59.0 bump only covered the top-bar logo); explicit width/height (620x143) added to the two O-Insights wordmark images on the Niagara page to close a CLS gap; the resource card and doc titles promoted from h3 to h2 so /insights/ no longer skips from h1 to h3; and the search field now uses an !important override on .cnx-searchbar__input so the dark glass wins on the search-results surface too (a GeneratePress rule outranked the v3.59.2 selector there, confirmed live).

v3.60.3 extends the SEO layer to the public custom post types and fixes the schema logo. The SEO title and meta description fields now appear on Success Stories (cnx_story) and Brochures (cnx_brochure), which have indexable single pages; the non-public Documents type (cnx_doc) is excluded since it has no public URL. The Organization schema logo now points to a dark (legible-on-white) master, assets/logos/conexao-dark-full.png, instead of the reversed white logo that would disappear on Google's white knowledge-panel surface; the bundled light master (conexao-light-full.png) was also refreshed from the current source. Note: the header and footer logos are Customizer uploads (conexao_logo_dark / conexao_logo_light), not bundled files, so refresh those in wp-admin if the on-page logo also needs updating.

v3.60.2 finalizes the default OG card (assets/og/conexao-og-default.png): the light (reversed) logo on the brand navy, with the tagline and URL. Asset-only change.

v3.60.2 finalizes the default OG card (assets/og/conexao-og-default.png). The logo mark is navy in every master, so it cannot sit directly on the near-black card without the mark sinking into the background; the card now places the logo on a small white chip so the mark reads, on the brand navy with the tagline and URL. Asset-only change.

v3.60.1 rebuilds the bundled default OG card (assets/og/conexao-og-default.png). The first cut used a hand-drawn stand-in mark and an out-of-context "Technology Partner" pill; both are removed. The card now uses the real light (reversed) master logo on the brand navy, with the tagline and site URL. Asset-only change; no PHP, CSS, or module logic altered.

v3.60.0 adds an SEO/AEO/GEO meta layer (new inc/seo-meta.php, additive and backend-only). Pages and posts get SEO title and meta description editor fields with live character counters and automated, non-fabricated fallbacks: the title falls back to "Page | Conexao Technology Solutions" (site name only on the front page) and the description falls back to a manual excerpt, then a site-level default of approved facts (filterable via conexao_seo_default_description; never auto-scraped). Open Graph and Twitter card tags are emitted on every view, with an og:image chain of featured image (used only at >=600px wide) then a bundled branded 1200x630 default card (assets/og/conexao-og-default.png). Adds BreadcrumbList JSON-LD on solution-vertical pages and VideoObject JSON-LD for Community Voices videos on the front page (each guarded; a video is skipped rather than emitting invalid schema when its cached Vimeo thumbnail is not yet warmed). Canonical tags and the noindex baseline stay with WordPress core to avoid duplicates; as belt-and-suspenders a wp_robots filter forces noindex,nofollow whenever "Discourage search engines" is on, so this layer can never make a staging copy indexable. The existing Organization and product schema in functions.php is untouched. Reminder for cutover: uncheck Settings > Reading > "Discourage search engines" on production, or the live site inherits the noindex.

v3.59.4 adds mobile search. The header search is a desktop pattern (an icon in the top-bar right cluster that expands to an inline field); on mobile it had no room and the full-screen drawer, where people look for search, had none. A full-width search field now sits at the top of the mobile drawer, between the drawer head and the menu list. It is a plain GET form (name="s") that needs no JS, so nothing about it can break on mobile. The top-bar expand-search is hidden at <=1024px (the drawer owns search there); desktop is unchanged. The field reuses the scoped-selector approach from the earlier search fix so GeneratePress's input[type="search"] cannot leak its light fill, and its colours are token-driven so it flips for the light theme. header.php + style.css. Needs a final live-browser look on a real phone (dark and light), since the drawer render depends on the GeneratePress parent which is not in the headless sandbox.

v3.59.3 addresses review feedback on v3.59.x. (1) Automation links: v3.59.0 pointed the nav automation link at /services/intelligent-automation/, which is a services-page section anchor, not a page, so it 404s. Both the homepage and nav automation link defaults now point at /automation/, the standalone "Conexao Building Automation" page (template-automation.php). Adjust in the Customizer if that page uses a different slug. (2) Resource pills: the Events and Webinars filter pills now read "Milestone" and "Tridium" (the platform vendor names) rather than the O-Insights product names; the Insights (blog) pills keep the full product names. Option-backed, so update the saved Customizer values too. (3) Mobile paragraph floor: v3.59.0's floor was scoped to the homepage and only four classes, but the mobile spec checks every <p> across all pages. Replaced it with a site-wide floor that raises all body-copy paragraph/description classes to 14px at mobile widths. Letter-spaced kickers and labels are excluded by design; two label paragraphs (.conexao-eyebrow on legal/privacy, .conexao-office__label on contact) are still 11px <p> elements and, if the spec covers those pages, want a <p>-to-<div> markup change rather than inflation. CSS + Customizer defaults only.

v3.59.2 fixes the site search field (searchform.php, shared by the 404 and search results pages). The field rendered with GeneratePress's light fill because its input is type="search" inside .cnx-searchbar, a surface v3.57's .conexao-form hardening did not cover, so GP's input[type="search"] (0,1,1) still beat the lone .conexao-input (0,1,0). Scoped selectors at (0,3,1) now re-assert the dark glass field, hover, and teal focus ring, with a light-theme override at (0,4,2). The 404 search bar is also centered (margin auto) so it lines up with its centered container; the search results page keeps its left-aligned header form. CSS-only; no markup, tokens, or JS changed. Needs a live-browser check with the GeneratePress parent present, since the parent rules that cause this are not in the headless sandbox.

v3.59.1 corrects the legal-entity suffix handling from v3.59.0, which stripped "Inc." from the US office in the wrong direction. Office/legal-entity blocks now carry the correct suffix on both surfaces: the India Global HQ is "Conexao Technology Solutions Pvt Ltd" (contact office1 default + homepage) and the US Americas HQ is "Conexao Technology Solutions Inc." (contact office2 default + homepage). The plain brand name "Conexao Technology Solutions" is retained for the footer, prose, and general usage. No other changes from v3.59.0.

v3.59.0 clears twelve issues surfaced by the Playwright triage. Copy/brand: the "O-Insights for XProtect" resource pills (blog, webinars, events) and the two post-cover eyebrows now use the full names "O-Insights for Milestone XProtect" and "O-Insights for Niagara/Tridium" (the strpos icon match still resolves, both names retain the XProtect/Niagara substrings); the Partners page groups are built from a new key-based conexao_partner_product_name() resolver instead of concatenating "O-Insights for " onto a Customizer label, so headings can no longer truncate to "O-Insights for Milestone" or double up; the Americas HQ contact default drops "Inc." to match the homepage; core-challenge uses US spelling "labor". Automation: the conexao_nav_auto_url default is unified to /services/intelligent-automation/. Brochures: every "Download brochure" button (Niagara hero + CTA, Core hero + CTA, Milestone band) renders only when its brochure URL is set, so there is no href="#" dead link; the Milestone hero button and band appear together. CSS: added the missing .conexao-page--niagara .mp-glass-titlebar__mark accent override (it was inheriting the base Milestone blue); header logo height raised 38px to 44px so it clears the 80px width minimum and the 40px mobile tap target; a homepage-scoped mobile floor raises genuine card/tile body descriptions to 14px (letter-spaced kickers and stat labels intentionally left as labels). Head/analytics: GeneratePress's duplicate viewport meta is dropped via generate_meta_viewport so only header.php's tag remains; the GA4 config sets cookie_flags SameSite=Lax;Secure so _ga cookies carry Secure like the consent cookie. Option-backed defaults (nav auto URL, pills, contact office) change defaults only; live saved Customizer values still override and need updating in wp-admin. The /solutions/datacenters/ 404 and sitemap entries are WordPress/plugin-side and are not touched here.

v3.58.0 addresses three surface-styling issues. (1) Native select popup: the "I'm interested in" / Subject dropdowns opened as an OS-white list. Replaced the forced option{color} hack with color-scheme:dark (dark theme) / light (light theme) on .conexao-form select, so the browser paints the native popup to match the theme across Chrome, Edge, Firefox and Safari. (2) Consent banner was nearly invisible because it used --surface-1 (rgba white .02); it now uses a near-opaque frosted background (rgba(8,11,32,.86) dark, rgba(245,247,252,.90) light) with backdrop-filter blur. NOTE: backdrop-filter is the effect v3.40 removed from cards for a real-browser dark fringe; it is used here on a full-width edge-to-edge bar and the base bg is opaque enough to stay readable if the filter is dropped, but it needs a live-browser check. (3) Contact/Book a demo card is glassier: more translucent (rgba(13,20,56,.80)) with a top-lit sheen gradient and a brighter inset highlight and border, done WITHOUT backdrop-filter to honour the v3.40 decision (light override keeps its explicit backdrop-filter:none). CSS-only; no markup, tokens, slugs, or JS changed.

v3.57.0 fixes control styling that GeneratePress parent rules were overriding. (1) The header search go button rendered oval with a grey hover because GP's button padding and button:hover (0,1,1) beat the lone class; it is now scoped .conexao-nav__search .conexao-nav__search-go (0,2,0) with padding zeroed and box-sizing set (true circle) and a teal brightness+lift+glow hover instead of grey. (2) Contact and Book a demo fields showed GP's light fill because .conexao-input (0,1,0) loses to GP's input[type=email|text|tel] (0,1,1); a scoped .conexao-form input[type].conexao-input (>=0,2,1) block now re-asserts the intended glass (surface-3 + border-medium + radius-md, appearance reset) with teal focus ring and removes GP's grey field hover. CSS-only; no markup, tokens, slugs, or JS changed. Lesson recorded: restyled native controls must be tested with GeneratePress parent rules present, since attribute/element selectors outrank single child classes.

v3.56.0 makes the header search field fix actually take on the live site. In 3.55.0 the input still rendered as a white square because GeneratePress's parent-theme input[type="search"] rule (specificity 0,1,1) outranks a lone .conexao-nav__search-input class (0,1,0), so the transparent background never applied. The input rules are now scoped as .conexao-nav__search input[type="search"].conexao-nav__search-input (0,3,1), which beats the parent rule, and they hard-reset background, border, border-radius, box-shadow, and appearance in both default and focus states. CSS-only; no markup, tokens, slugs, or JS changed.

v3.55.0 fixes header search styling. The expanded field rendered as a white, square box because the input lacked appearance:none (so the browser's native search styling showed) and the fill used the translucent --surface-1 token. The search is now one continuous "glass" pill: the container carries a teal border and a translucent surface-3 fill when open, the magnifier drops its circle to sit as the pill's left cap, and the input is transparent and borderless with appearance reset (webkit search cancel button hidden too). Matches the site's other form fields. CSS-only plus the existing markup; no slugs, tokens, option keys, or JS behavior changed.

v3.54.0 restores header search and redesigns the 404 page. Header search returns as an icon in the nav right cluster that expands to an inline field on click (Option 1); it posts to the existing search results template, closes on Escape or outside-click when empty, will not submit an empty query, and has a visible teal focus ring. Logic lives in nav.js inside the shared init(); markup in header.php; styles under the HEADER SEARCH block. The 404 template (404.php) is rebuilt as Concept 1 "lost signal": a dotted conduit (echoing the homepage hero) carries travelling teal pulses toward a central node whose link is broken, layered behind a gradient 404, headline, and the site search bar. The quick-link pills were intentionally removed; recovery is now the search field plus Back to home. All motion (pulses, node ring, break flicker, spark) holds still under prefers-reduced-motion. No slugs, option keys, or DB keys changed. Live-browser motion review is still required (Puppeteer cannot capture the animation).

v3.53.0 removes the duplicate form-recipient controls from the Customizer. Both the Customizer "Contact & Forms" section and the Site Content > Forms screen were editing the same theme mods (conexao_demo_recipient/_cc and conexao_contact_recipient/_cc), so a recipient could be set in two places. Site Content > Forms is the fuller screen (recipient, CC, field builder, and email preview) and is now the single place to configure form delivery; the four recipient/CC controls are dropped from the Customizer. The Customizer section is retitled "Contact details" and keeps what is unique to it and not editable in the Forms screen: the public contact email and the two Contact-page office lines. No settings were removed from storage: the recipient/CC keys keep their defaults in the defaults map and are still read by the send path and the Forms screen via conexao_dark_get_option, so existing saved recipients and delivery are unaffected. No slugs, option keys, front-end classes, or send behaviour changed.

v3.52.0 makes the footer "Cookie settings" item honest: it now renders only when the consent system is actually active, i.e. when a GA4 Measurement ID is set under Customizer > Analytics. Previously the button was always shown (subject to its show/hide toggle), but the click handler that reopens the banner is printed by inc/consent.php only when a GA4 ID exists, so with no ID the button was present but dead. conexao_footer_legal_items() now also checks conexao_ga4_id(), so the item appears exactly when it can function. The show/hide checkbox remains as a manual override on top of that. Customizer descriptions for the Cookie settings label and toggle updated to state the dependency. No other behaviour, markup, CSS, or stored keys changed.

v3.51.0 makes the footer legal row (Privacy, Terms, Cookie settings) configurable from Customizer > Conexao Theme > Footer instead of hardcoding /privacy/ and /terms/. Each of Privacy and Terms now has a label plus a page selector (dropdown-pages); the link uses the selected page's permalink and falls back to /privacy/ or /terms/ until a page is chosen, so nothing breaks on upgrade. Clearing a label hides that item. The Cookie settings item has an editable label and a show/hide checkbox; it still reopens the consent banner via data-conexao-consent-open. footer.php now renders the row from conexao_footer_legal_items() with separators inserted between visible items only (no dangling middots when one is hidden). Two resolver helpers were added to inc/customizer.php: conexao_footer_legal_url($key) and conexao_footer_legal_items(). inc/consent.php now links its banner to conexao_footer_legal_url('privacy') so the banner and footer point at the same privacy page. New stored theme_mods: conexao_footer_privacy_label/page, conexao_footer_terms_label/page, conexao_footer_cookie_label, conexao_footer_cookie_show. No CSS, slugs, or front-end classes changed; the row markup is still a-tags plus the existing consent-reopen button.

v3.50.0 replaces the Brochure editor with a simplified form and adds automatic PDF cover capture (new inc/brochure-admin.php, assets/brochure-admin.js, bundled pdf.js in assets/pdf/). The cnx_brochure post type drops editor and excerpt support and now uses the classic editor via a use_block_editor_for_post_type filter, so the screen is a single "Brochure" box: a one-choice Product control (Milestone / Niagara / Core, written to a single cnx_product term), a PDF picker, an optional external link for landing-page brochures, and a cover preview. The default Featured Image and Products taxonomy boxes are removed since both are handled in the form. Cover capture is client-side and host-independent: brochure-admin.js renders page 1 of the selected PDF with the bundled pdf.js (v3.11.174 legacy UMD, admin-only enqueue on the brochure screen), then POSTs the image to the conexao_broch_cover AJAX handler, which validates it as JPEG, sideloads it, and sets it as the featured image; a previous auto cover is cleaned up on replace. A manual "Set cover manually" picker covers external-link brochures with no PDF. On save, the front-end link (_cnx_broch_url) resolves to the PDF URL when present else the external link, and as a zero-cost fallback a PDF with a WordPress-generated preview is used as the cover when none was captured. The front end is unchanged (still reads the featured image as the cover and _cnx_broch_url as the link), so no template edits. New stored meta: _cnx_broch_pdf_id, _cnx_broch_pdf_url, _cnx_broch_url_ext, _cnx_broch_cover_id; the legacy _cnx_broch_url is retained and reused. No slugs, option keys, front-end CSS classes or DB keys changed.

v3.49.0 adds the third product section to the Brochures and Documentation pages and the legal/policy page block patterns. Resources: the product map (inc/resources.php) gains a third bucket, O-Insights Core (default term "core", accent mint #5DCAA5, cpu icon), and the section tag is now data-driven from the product map instead of the old MILESTONE/NIAGARA hardcode, so each section prints its own tag (MILESTONE / NIAGARA / CORE). The per-section icon also moves into the product map (single source of truth) and the two render helpers drop their duplicate local icon arrays. A section only renders when it has entries, so Core is invisible until Core-tagged brochures/docs exist. Customizer > Conexao Theme > Resources gains Product pill 3 (label, term slug, colour) with sensible defaults and an updated section description. Legal pages: two new editable block patterns registered under the Conexao category (not Homepage) via a per-pattern categories override in the registration loop. "Legal / Policy page" (patterns/legal.php) is a blank scaffold for Terms and similar; "Privacy Policy (with cookie & analytics notice)" (patterns/privacy-policy.php) is pre-filled and, per the v3.47.0/v3.48.0 analytics + consent work, discloses the consent-gated GA4 setup, names the conexao_consent and _ga/_ga_* cookies, and includes an inline data-conexao-consent-open "Cookie settings" control that reopens the banner. Both use core Gutenberg blocks (fully editable) wrapped in a conexao-section + .conexao-legal group; a new scoped .conexao-legal prose style block carries the reading measure and typography and rides the existing theme tokens for dark/light. The consent banner links to /privacy/, so create that page with slug "privacy" and insert the Privacy Policy pattern. No slugs, option keys, CSS classes or DB keys changed; new stored values: conexao_res_prodc_label/term/color theme_mods.

v3.48.0 adds the analytics consent banner (inc/consent.php) that gates the consent-gated GA4 tag from v3.47.0. Google Consent Mode v2 defaults to denied; this banner is the grant/refuse mechanism. Accept calls gtag('consent','update',{analytics_storage:'granted'}); Reject leaves the denied default. The choice persists in a first-party conexao_consent cookie (180 days, SameSite=Lax, Secure on https) so the banner does not reappear until it expires or is reopened via the footer "Cookie settings" button. Reject and Accept are equal-size for compliant one-click refusal. Region handling: if the host passes a country header (Cloudflare CF-IPCountry or X-Geo-Country), non-EU/EEA/UK visitors get a slim notice while EU/EEA/UK and unclassifiable visitors get the strict banner; with no country header it safely degrades to the strict banner for everyone (no external calls, no bundled GeoIP database). The country can be overridden via the conexao_consent_country filter. Footer change: the /cookies/ link is replaced with a "Cookie settings" reopen button. The banner only renders when a GA4 ID is configured. New stored value: the conexao_consent cookie; no slugs, option keys, CSS classes or DB keys changed.

v3.47.0 adds consent-gated Google Analytics 4 to the theme (inc/analytics.php), replacing reliance on a tag-manager plugin so the tag is versioned and survives migrations. A new Customizer > Conexao Theme > Analytics section exposes a validated GA4 Measurement ID field (format G-XXXXXXXXXX; blank disables analytics). When set, wp_head prints Google Consent Mode v2 with all signals defaulting to denied, followed by the gtag loader and config (with anonymize_ip); no analytics cookies are set until a consent tool calls gtag('consent','update'). Before consent, Consent Mode still permits cookieless pings, so Realtime and events (including the demo_request conversion from v3.43.0) are verifiable without a persistent cookie. A consent manager must be set to consent-only and must not also inject its own GA4 tag, or the page would double-count. No slugs, option keys, CSS classes or DB keys changed; the only new stored value is the conexao_ga4_id theme_mod.

v3.46.1 fixes the homepage hero conduit animation being nearly invisible on the light theme. The dark-theme conduit uses very low-alpha teal (0.07 to 0.16) that reads over the near-black background but washes out on the pale light-theme surface. Added light-theme-only overrides that switch the conduit lines, junction nodes, and travelling pulses to a darker, stronger teal (rgba(38,150,120,...) and #2E9B78) so the animation is legible on the light background; the near-conduit line keeps a slightly higher alpha for depth. Dark theme is unchanged. CSS-only; no markup, JS, option keys, or DB keys touched.

v3.46.0 adds an ambient "conduit" background animation to the homepage hero. Five teal signal conduits at varied depths span the hero behind the content; soft glowing pulses (core dot plus a trailing halo) travel along them at staggered, unhurried intervals, and six faint junction nodes emit an occasional ping ring. The layer sits on the existing glow-blob stacking level (z-index 0) with the hero container lifted to z-index 1 so the tiles stay fully clickable and legible; the section's existing overflow:hidden clips the off-canvas conduit ends. The effect is teal-only with no product accents and no cross-product convergence imagery, consistent with the brand rule against suite-synergy framing. A new homepage-only assets/conduit.js pauses the SVG SMIL timeline (and the CSS node-ring pings via an is-paused class) whenever the tab is hidden, and starts paused if the page loads in a background tab. prefers-reduced-motion hides the moving pulses and stops the node pings, leaving the static conduit lines. Scoped to the homepage hero pattern only; no other page is affected. No slugs, option keys, or DB keys changed; new CSS/JS is additive.

v3.45.0 fixes three UI/wiring issues. Buttons: the primary and secondary CTA hover states now re-declare background and color (plus new :focus/:active pins), so GeneratePress's parent button:hover/:focus/:active rules can no longer repaint real <button> elements (the Book a Demo and Contact form submits) a different color from anchor CTAs; light-theme secondary overrides keep winning by specificity. Mobile menu: the drawer header now uses the same logo source chain as the desktop nav (Customizer dark/light logo images with cross-fallback, then the WP Site Identity custom logo, then the hardcoded lockup only as last resort), with drawer-scoped sizing (28px) and the existing per-theme image swap. Footer: the four link columns now mirror the header nav from the same options so future renames propagate: Products uses full names (O-Insights for Milestone XProtect, O-Insights for Niagara/Tridium, O-Insights Core), Services replaces the stale Intelligent Automation label and the /services/# anchors with Building Automation, Professional Services and Support (conexao_nav_auto/profsvc/support_url), Company labels come from conexao_nav_*_label options, and Resources renders the same conexao_nav_resource_items() list as the header dropdown (including Community Voices and any show/hide and label settings). Also completes the v3.40 full-product-name pass in the header Products mega menu (O-Insights for Niagara/Tridium). No slugs, option keys or DB keys changed; new CSS is additive and scoped.

v3.44.0 adds a Site Content > Forms admin screen for configuring both plugin-free forms (Book a Demo, Contact) without editing templates. Three things are now editable from wp-admin: the recipient and CC addresses for each form (written to the same theme mods the Customizer already used, so the Customizer controls and this screen edit one shared source of truth); the form fields themselves, via an add/remove/reorder builder (drag to reorder using the WordPress-bundled jQuery UI sortable, per-field label/type/required/placeholder, and options for select fields); and a live preview of the exact HTML email each form sends, rendered server-side with sample data in an isolated iframe and refreshed on save. The field model is stored in a single new option conexao_form_fields; when unset, both forms fall back to their original hardcoded field sets so existing installs render identically. Name, email, and message are locked core fields (they can be relabelled and repositioned but not removed or retyped, because delivery depends on them for validation, Reply-To, subject, and the message block). A new checkbox field type is available alongside text, email, tel, url, textarea, and select. Under the hood the two bespoke submit handlers are replaced by one schema-driven processor that reads the field model, so the two form patterns now emit their fields via conexao_form_render_fields() instead of hardcoded markup; the admin-post action names, nonce/honeypot pattern, email builder, GA4 events, and the conexao_book_demo_submitted / conexao_contact_submitted action payloads are all preserved (the payloads gain an additional fields key). No slugs, CSS class names, or existing option/DB keys changed; the only new persistent key is the conexao_form_fields option.

v3.43.0 groups the five content types (Success Stories, Testimonials, Brochures, Documentation, Partners) under a single "Site Content" admin menu instead of five top-level menus, via a new inc/admin-menu.php: an Overview landing screen with counts and manage/add links, the shared Products taxonomy manager as a submenu (taxonomy screens do not follow nested post types automatically), a deliberate submenu order, and a parent_file filter so the menu stays open on Products screens; the five registrations opt in with show_in_menu and the drag-to-reorder tables are unaffected (they hook list screens, not menu location). Adds GA4 conversion events on the form confirmation state: ?cf=sent now fires demo_request (book-demo form) or contact_request (contact form) via the page's gtag/MonsterInsights tracker, identified client-side from the URL fragment, with a sessionStorage guard against refiring on refresh and a silent no-op when no GA tag is present; this feeds the Demo requests tile in the analytics report plugin. UI consistency sweep on buttons: the mp-btn--accent hover no longer hardcodes Milestone blue (#5BA8E0) and now derives from var(--mp-accent) via color-mix with a solid fallback, with the glow shadow from var(--mp-accent-glow), so the hover follows each product page's accent; the use-case CTA tile (mp-uc-tile--cta) likewise swaps its hardcoded #7DC1F0 border/background/title for the scoped --mp-accent variables (both were Milestone-page-only today, so this is landmine removal, not a visible change there); conexao-btn--primary hover gains a soft neutral shadow and conexao-btn--secondary gains the same 1px lift so all buttons share one hover behavior (lift plus feedback), box-shadow added to the base button transition; and a consistent teal :focus-visible ring is added to all conexao-btn and mp-btn--accent buttons, matching the theme's existing focus pattern. No slugs, option keys, CSS class names or DB keys changed.

v3.42.0 makes Professional Services a standalone destination instead of a section of the Services page. The "Professional Services" menu item (header nav and the Products menu Services card, via conexao_nav_profsvc_url) now defaults to the dedicated page at /professional-services/ rather than the /services/#professional-services anchor. The #professional-services section and its right-rail dot are removed from the Services page, Intelligent Automation renumbers from SERVICE 04 to SERVICE 03, and the Services hero lead no longer lists professional services. The nav Customizer help text is updated to match, and the now-unused .mp-feature-grid--4 modifier from v3.41.0 is removed. The dedicated Professional Services page itself is unchanged from v3.41.0 (four engagement boxes, baggage handling example, integration-discussion CTA). Requires site config: a published Page with slug professional-services using the "Conexao Professional Services" template, and, if the nav URL was previously saved in the Customizer, updating that saved value (changing the theme default does not overwrite a stored option).

v3.41.0 reworks the Professional Services offering on both surfaces to the approved four-box structure. On the Services page (#professional-services, the section the nav links to), the old six cards (Design & consulting, Deployment, Training, Support & maintenance, Managed operations, Health checks) and the building-angled header ("Engineers who stay with the building") are replaced by four product-focused boxes: Installation & Configuration, System Design, Training (including O-Insights product training) and Customized Services, under a new header ("Engineers behind every deployment") scoped to Milestone XProtect, Niagara and O-Insights; the Customized Services card highlights custom driver and integration development across Milestone VMS and Niagara BMS with the O-Insights Core airport baggage handling example and an explicit invitation to discuss integrations. A .mp-feature-grid--4 modifier renders the four boxes in a single row on desktop while inheriting the existing two-column tablet and one-column mobile breakpoints. On the dedicated Professional Services page, the featured Customized Services card gains the same VMS/BMS coverage statement and baggage handling example, and the closing CTA copy now invites integration discussions. Verified with Puppeteer renders in dark, light and mobile widths. No slugs, option keys or DB keys changed; the grid modifier class is additive.

v3.40.0 is a brand/legal and engineering compliance pass against the Website Build Standards. Copy/brand: llms.txt rewritten so ISO 9001:2015 is the only certification claimed and 21 CFR Part 11, GDPR and SOC 2 read as standards we help facilities comply with (previously asserted as held certifications); "Native partner" replaced with Technology Partner in llms.txt and the site-wide Organization JSON-LD; suite/"unified ecosystem" cross-product framing removed from llms.txt, the Organization schema, the homepage "What we build" section (formerly "Integrated Solutions") and the Niagara modules eyebrow; product names restored to full form ("O-Insights for Niagara/Tridium"); the Niagara hero badge now reads "TRIDIUM / NIAGARA TECHNOLOGY PARTNER"; the Milestone final CTA and capabilities link collapse to a single "Book a demo" (the "Talk to sales" primary and the "30-minute" duration are gone); all five "your data" strings on Core/Niagara rewritten; the Niagara Roadmap section and its pattern file removed; the Core deployment "On roadmap" cloud pill reworded to "Deployment option" with present-tense copy; the Americas "quicker response times" promise dropped; five "seamless" uses and an "Empower"/triad headline rewritten with concrete claims; em dashes removed from llms.txt prose and the Core schema description; "Installation" reworded on the Services deployment card; the homepage sample-testimonials preview now defaults off and its placeholder cards no longer use invented customer names, quotes or dates. Engineering: the ABSPATH exit guard added to eight pattern files (americas, automation, certifications, cta-band, hero, integrated-solutions, partnerships, verticals); backdrop-filter removed from the two card backgrounds (.mp-glass-frame, .conexao-form-card), which now use a near-opaque solid so they stay legible without the filter; every color-mix() declaration is now preceded by a solid-color fallback of the same property. Also removed the orphaned duplicate Automation screenshot assets (they were byte-identical to the Core screenshots and unreferenced) and refreshed two stale Customizer descriptions. No slugs, CSS classes, option keys or DB keys changed.

v3.39.0 renames the "Customer Voices" resource to "Community Voices" across the site, since the grid features partners, integrators and platform (Milestone, Niagara) people as well as customers. Changed: the page heading ("Community voices."), the homepage testimonials eyebrow (now "COMMUNITY VOICES") and its "View all community voices" link, the empty-state and search-result labels, the Resources-dropdown/footer label default and its Customizer control label, and the admin reorder hint. The page URL (/customer-voices/), template file, CSS classes and option keys are left unchanged so no links break and no stored settings are lost. Copy-only; no layout change.

v3.38.2 fixes Customer Voices / homepage testimonial thumbnails whose faces were cropped out. The card poster is a fixed 16:9 slot filled with object-fit:cover; the source frames are mostly 1080x1080 (square), so cover-cropping to landscape sheared off the top and bottom and took the speaker's head with it (the few 1920x1080 frames were unaffected because they already match the slot). The poster now crops from a top-biased position (object-position:center 22%) instead of the centre, which keeps faces in frame for square and portrait sources and is a no-op for 16:9 sources that have no vertical overflow to reposition. CSS-only; no markup, template or Vimeo-side change.

v3.38.1 fixes the intermittent 502 Bad Gateway (and the matching Playwright load-timeout cluster): the Customer Voices / homepage testimonial cards were fetching each Vimeo thumbnail synchronously during the page render (up to nine 6-second oEmbed calls in series on a cold cache), long enough to exceed the nginx upstream timeout. The thumbnail lookup is now non-blocking on the front end (it returns the cached value or an empty string immediately and shows the dark poster), the network fetch happens out of band via WP-Cron and is also warmed when a testimonial is saved, and the per-call timeout is trimmed to 4s. No visual change except that on a cold cache a thumbnail may first appear on a subsequent load rather than the first.

v3.38.0 addresses automated QA findings without changing the design: the Products, Solutions and Resources menu toggles are now button-role controls rather than "#" placeholder links; the Building Automation page CTAs now read "Book a demo" to match the single site-wide CTA; each product page emits its own SoftwareApplication (Milestone XProtect, Niagara, Core) or Service (Automation) JSON-LD; llms.txt is served from the site root; a favicon and touch-icon fallback is declared when no Site Icon is set; the WordPress version generator and the X-Powered-By header are removed and baseline security headers (nosniff, SAMEORIGIN, Referrer-Policy, Permissions-Policy, COOP) are sent on the front end; REST and ?author= user enumeration is blocked for logged-out visitors and login errors are made generic; in-page anchors clear the sticky header; and header and footer tap targets meet 40px on touch widths.

v3.37.0 has the product-page "Book a demo" buttons pass an ?interest= hint (Milestone XProtect, Niagara, Core, Automation) so the demo form preselects even without a referrer, and cleans up the services overview page: "Support & SLAs / clear response commitments" becomes "Support & maintenance" (no response-time promise), the Automation blurb moves from "one platform" to integration language, and the remaining Goa/Americas lines lead with global reach.

v3.36.0 makes the Book-a-demo "I'm interested in" dropdown prepopulate automatically: an ?interest= URL param preselects server-side, and a referrer fallback selects the right product when a visitor arrives from a product page (Milestone XProtect, Niagara, Core or Automation), so the form is ready to send with no extra clicks.

v3.35.0 reworks the About page around the tagline (operations-led rather than smart-building/city: "Smarter operations, built with domain depth," mission and product framing reoriented), adds the "Smarter Operations. Superior Outcomes." tagline to the footer brand block, and sweeps physical-install wording off the Automation page (the delivery step is now "Deploy," and "install"/"installed" copy in the band, delivery and FAQ sections is reworded to setup/deploy/goes-live).

v3.34.0 reworks the homepage and Automation messaging: the hero now leads with the tagline "Smarter Operations. Superior Outcomes." with a products-and-services wayfinding (the "choose your platform" and smart-building framing are gone), and Building Automation is presented as systems integration rather than a platform. The Automation page carries the same integration-not-software framing throughout (hero, how-it-fits, and case sections), its diagram labels are generic, and location copy leads with global reach. The Automation success-story section is now dynamic, pulling Success Stories tagged "automation" (tags enabled on the Success Story type) and hiding itself when there are none.

v3.33.0 rebuilds the Support page around staying current: an upgrade-first hero with an existing-customer / evaluating path chooser, a per-product releases section (each of Milestone XProtect, Niagara, and Core shows its own version, release date, and what's-new, with the supported host-platform versions for the two that run on a host and a standalone note for Core), platform-based support routing (O-Insights Care / SMA / Contact), secondary extended-support tiers, and a closing CTA. All per-product release and version content is editable under Customize > Conexao Theme > Support Page.

v3.32.0 rebuilds the Professional Services page: an original "what it is" intro (dashboard-and-wrench graphic plus a plain-language explanation of the offering and its advantage) followed by four service boxes (Installation & Configuration, System Design, Training, and a featured Customized Services box covering custom driver and integration development for Milestone XProtect and Niagara), and a full-width Book a demo banner. Copy is Conexao's own and avoids any language implying onsite or physical work.

v3.31.0 restructures the Products mega menu from two side-by-side columns into two stacked rows: Software (Milestone XProtect, Niagara, Core) on top and Services (Automation, Professional Services, Support) below, so Automation no longer sits up top. Desktop-only CSS change; the mobile drawer accordion is unchanged.

v3.30.1 fixes the Webhook module icon (was rendering as noise; now a clean share/endpoints glyph), replaces the Core Trust numeric stat block (which carried an SLA-style 99.9% uptime target and a "<1s latency from camera to screen" claim) with a claim-safe qualitative strip (Real-time, Reliable, Any device, Scalable), and removes the remaining roadmap language ("today ... on the way") and a camera reference from the hardware FAQ so it matches the protocols section.

v3.30.0 reworks the O-Insights Core page: the suite diagram and modules now lead with Fault Detection (order FDD, Workspace, Alarm Manager, Reporting, Genie, Notifications), the video angle is removed, and the Notifications module drops the Voice call and Public alerting roadmap items (with the now-redundant status pills). Adds a Protocols and integrations section (MQTT, BACnet, OPC UA plus custom connector development, no roadmap language) after the modules, and a White-label / OEM Core block (complete enterprise-grade platform delivered as the partner's own, Contact Us CTA) before the FAQs.

v3.29.0 adds a hero screenshot slideshow inside the Smart Client glass frame on the Milestone XProtect, Niagara and Core heroes: multiple images per hero with prev/next arrows, dot indicators, a per-slide caption chip, a count in the titlebar, autoplay (pauses on hover/focus/touch, respects reduced-motion) and touch swipe. Screenshots and captions are managed per product under Appearance > Hero Slides (media picker, add/remove, drag-to-reorder). Heroes fall back to their bundled screenshot when no slides are configured. Also drops the em dash from the Core hero titlebar.

v3.28.2 removes temperature units sitewide (automation hero seal now reads "Comfortable" instead of a numeric reading, using Hot/Cold/Comfortable vocabulary), and centers the Partners logo grid (flex-wrap so incomplete last rows center instead of left-hugging).

v3.28.1 fixes the mobile menu: removed a stale rule that hid the drawer on phones (<=640px), dropped backdrop-filter on the header at mobile widths so the position:fixed drawer escapes the header containing block and fills the viewport, scoped the m-head/m-foot hide to desktop so the close button + Book a demo CTA + LinkedIn show inside the drawer, removed collapsed-panel padding leak, and restored dark CTA text contrast on the drawer's primary button.

v3.0.0 bakes in the full homepage redesign: cycling-phrase hero with constellation backdrop + stats strip, Offerings section, pure-SVG automation diagram with animated packets, unified compliance card, revised partnership copy (no certification claims), simplified final CTA, L-to-R button hover, em-dashes removed throughout.

v2.9 simplifies the brochure section from a two-column mock-cover layout to a single inline band (label + question + button, ~80px tall instead of ~400px).

v2.8 fixed protocol diagram packets to travel along the lines (SVG animateMotion) and changed sublabel to FOR XPROTECT.

v2.7 fixed protocol tree rendering, replaced PNG logo lockup with HTML/SVG, reframed footer tagline.
*/

/* ==========================================================================
   DESIGN TOKENS — Conexao Brand
   ========================================================================== */

:root {
  /* Brand neutrals (per Conexao brand skill) */
  --conexao-navy: #00094B;
  --conexao-navy-deep: #05071A;   /* page background — slightly darker than brand navy for depth */
  --conexao-navy-card: #0a1230;   /* used inside diagram hub */
  --oinsights-teal: #408088;
  --oinsights-teal-bright: #5DCAA5;  /* gradient highlight + accent */
  --oinsights-teal-soft: #7DBDC6;     /* secondary highlight */

  /* Product accents */
  --milestone-blue: #7DC1F0;       /* VMS — softer than Milestone Sky Blue #0078C8 for dark theme legibility */
  --niagara-coral: #F08583;        /* BMS — softer than Tridium Red #EF2D2B for dark theme legibility */
  --core-mint: #5DCAA5;            /* Core — same as teal bright */

  /* Text */
  --text-primary: #FFFFFF;
  --text-secondary: #AAB8D0;
  --text-tertiary: #6677AA;
  --text-quaternary: #8896B5;

  /* Surfaces (dark theme) */
  --surface-1: rgba(255, 255, 255, 0.02);
  --surface-2: rgba(255, 255, 255, 0.025);
  --surface-3: rgba(255, 255, 255, 0.03);
  --surface-hover: rgba(255, 255, 255, 0.045);
  --border-faint: rgba(255, 255, 255, 0.06);
  --border-soft: rgba(255, 255, 255, 0.08);
  --border-medium: rgba(255, 255, 255, 0.10);
  --border-hover: rgba(255, 255, 255, 0.16);

  /* Accent tints */
  --accent-pill-bg: rgba(93, 202, 165, 0.08);
  --accent-pill-border: rgba(93, 202, 165, 0.20);
  --accent-hover-border: rgba(125, 189, 198, 0.25);
  --accent-glow: rgba(125, 189, 198, 0.45);

  /* Type */
  --font-primary: 'Poppins', 'Inter', -apple-system, BlinkMacSystemFont, 'Helvetica Neue', Arial, sans-serif;
  --font-fallback: 'Open Sans', 'Helvetica Neue', Arial, sans-serif;

  /* Spacing scale */
  --space-xs: 8px;
  --space-sm: 12px;
  --space-md: 16px;
  --space-lg: 24px;
  --space-xl: 32px;
  --space-2xl: 48px;
  --space-3xl: 64px;
  --space-4xl: 96px;
  --space-5xl: 120px;
  --space-6xl: 140px;

  /* Radii */
  --radius-sm: 8px;
  --radius-md: 12px;
  --radius-lg: 16px;
  --radius-xl: 20px;
  --radius-pill: 100px;

  /* Layout */
  --container-max: 1200px;
  --container-wide: 1280px;
  --container-narrow: 900px;
}

/* ==========================================================================
   GLOBAL — Dark theme overrides for GeneratePress parent
   ========================================================================== */

body,
.conexao-dark-page {
  background: var(--conexao-navy-deep);
  color: var(--text-primary);
  font-family: var(--font-primary);
  line-height: 1.5;
}

.conexao-dark-page * {
  box-sizing: border-box;
}

a {
  color: var(--oinsights-teal-bright);
  text-decoration: none;
}

a:hover {
  color: var(--oinsights-teal-soft);
}

/* ==========================================================================
   GENERATEPRESS PARENT OVERRIDES
   Forces the parent theme containers to be transparent, edge-to-edge, and
   strips chrome we don't use. The child header.php and footer.php take over.
   ========================================================================== */

/* Kill GP's default site header (the white bar with site title) */
.site-header,
.gen-sidebar-nav,
.site-content > .widget-area,
.right-sidebar .site-main + .widget-area,
.left-sidebar .widget-area,
.footer-widgets,
.site-info {
  display: none !important;
}

/* Reset GP page wrapper so our nav + sections sit edge-to-edge */
#page,
.site,
.site-content,
.content-area,
.site-main,
.inside-article {
  background: var(--conexao-navy-deep);
  padding: 0 !important;
  margin: 0 !important;
  max-width: none !important;
  width: 100% !important;
  border: 0 !important;
  box-shadow: none !important;
}

.grid-container {
  max-width: none !important;
  padding: 0 !important;
}

/* The custom <main> wrapper from header.php */
.conexao-main {
  display: block;
  width: 100%;
  background: var(--conexao-navy-deep);
}

/* Page content area — no extra padding around content */
.conexao-page,
.conexao-page__content {
  padding: 0;
  margin: 0;
}

.conexao-edge-to-edge {
  max-width: none !important;
  padding: 0 !important;
  margin: 0 !important;
}

/* Skip link — visible only when focused */
.skip-link {
  position: absolute;
  left: -9999px;
  top: 8px;
  z-index: 10000;
  padding: 8px 16px;
  background: var(--text-primary);
  color: var(--conexao-navy-deep);
  text-decoration: none;
  border-radius: 4px;
}

.skip-link:focus {
  left: 16px;
}

/* ==========================================================================
   NAV MENU OUTPUT — Style the wp_nav_menu() ul/li
   ========================================================================== */

.conexao-nav__menu-list {
  display: flex;
  gap: 0;
  list-style: none;
  margin: 0;
  padding: 0;
  align-items: center;
}

.conexao-nav__item {
  position: relative;
  margin: 0;
  padding: 0;
}

.conexao-nav__link {
  display: flex;
  align-items: center;
  gap: 4px;
  padding: 14px 18px;
  font-size: 14px;
  color: var(--text-secondary);
  font-weight: 600;
  letter-spacing: -0.1px;
  text-decoration: none;
  cursor: pointer;
  transition: color 0.2s ease;
  background: none;
  border: 0;
  font-family: inherit;
}

.conexao-nav__link:hover,
.conexao-nav__item.is-open .conexao-nav__link,
.conexao-nav__menu-list .current-menu-item > .conexao-nav__link {
  color: var(--text-primary);
}

.conexao-nav__caret {
  font-size: 9px;
  transition: transform 0.2s ease;
  display: inline-block;
}

.conexao-nav__item.is-open .conexao-nav__caret {
  transform: rotate(180deg);
}

.conexao-nav__right {
  display: flex;
  align-items: center;
  gap: 16px;
}

.conexao-nav__logo-link {
  display: inline-flex;
  align-items: center;
  text-decoration: none;
  line-height: 1;
}
.conexao-nav__logo-link:hover .conexao-nav__logo-wordmark {
  color: #fff;
}

/* HTML/SVG logo lockup (v2.7+): icon + wordmark + tagline */
.conexao-nav__logo-lockup {
  display: inline-flex;
  align-items: center;
  gap: 12px;
}

/* Custom logo uploaded via Site Identity (v3.0.2+) */
.conexao-nav__logo-link--custom {
  display: inline-flex;
  align-items: center;
}
.conexao-nav__logo-link--custom .custom-logo-link {
  display: inline-flex;
  align-items: center;
  line-height: 0;
}
.conexao-nav__logo-link--custom .custom-logo {
  display: block;
  height: 44px;
  width: auto;
  max-width: 240px;
}

/* Header logo dark/light variants (Customizer > Logo). The dark logo shows on
   the dark theme, the light logo on the light theme. Mirrors the .nia-logo
   swap used in the Niagara wheel. */
.conexao-nav__logo-img {
  display: block;
  height: 44px;
  width: auto;
  max-width: 240px;
}
.conexao-nav__logo-img--on-light { display: none; }
html[data-conexao-theme="light"] .conexao-nav__logo-img--on-dark { display: none; }
html[data-conexao-theme="light"] .conexao-nav__logo-img--on-light { display: block; }
.conexao-nav__logo-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  color: var(--text-primary);
  flex-shrink: 0;
}
.conexao-nav__logo-icon svg {
  display: block;
  filter: drop-shadow(0 0 8px rgba(125, 193, 240, 0.25));
}
.conexao-nav__logo-text {
  display: inline-flex;
  flex-direction: column;
  gap: 2px;
  line-height: 1;
}
.conexao-nav__logo-wordmark {
  font-family: 'Poppins', sans-serif;
  font-size: 16px;
  font-weight: 800;
  letter-spacing: 1.4px;
  color: var(--text-primary);
  line-height: 1;
  transition: color 0.2s ease;
}
.conexao-nav__logo-tagline {
  font-family: 'Inter', sans-serif;
  font-size: 9px;
  font-weight: 600;
  letter-spacing: 1.6px;
  color: var(--text-tertiary);
  line-height: 1;
  text-transform: uppercase;
}

/* Dropdown panel base */
.conexao-nav__panel {
  position: absolute;
  top: 100%;
  background: var(--conexao-navy-card);
  border: 1px solid var(--border-soft);
  border-radius: var(--radius-lg);
  box-shadow: 0 20px 60px -10px rgba(0, 0, 0, 0.5);
  margin-top: 12px;
  padding: 24px;
  opacity: 0;
  visibility: hidden;
  transform: translateY(-8px);
  transition: opacity 0.25s ease, transform 0.25s ease, visibility 0.25s ease;
  z-index: 110;
}

.conexao-nav__item.is-open > .conexao-nav__panel {
  opacity: 1;
  visibility: visible;
  transform: translateY(0);
}

/* Compact dropdown variant */
.conexao-nav__panel--compact {
  left: 0;
  min-width: 240px;
}

.conexao-nav__compact-list {
  list-style: none;
  padding: 0;
  margin: 0;
  display: flex;
  flex-direction: column;
  gap: 2px;
}

.conexao-nav__compact-link {
  display: block;
  padding: 12px 14px;
  border-radius: var(--radius-sm);
  font-size: 13px;
  color: var(--text-secondary);
  text-decoration: none;
  transition: background 0.15s ease, color 0.15s ease;
}

.conexao-nav__compact-link:hover {
  background: rgba(255, 255, 255, 0.04);
  color: var(--text-primary);
}

/* Mega panel — Products */
.conexao-nav__panel--products {
  left: -180px;
  width: 900px;
  max-width: calc(100vw - 48px);
}

.conexao-nav__prodcols {
  display: flex;
  flex-direction: column;
  gap: 18px;
}

.conexao-nav__prodcol-divider {
  height: 1px;
  width: 100%;
  background: var(--border-soft);
}

.conexao-nav__prodcol-head {
  padding: 0 6px 12px;
  margin-bottom: 6px;
  border-bottom: 1px solid var(--border-soft);
}

.conexao-nav__prodcol-eyebrow {
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 2px;
  color: var(--oinsights-teal-bright);
}

.conexao-nav__prodcol-cards {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 8px;
}

.conexao-mega-card--svc { --accent: var(--oinsights-teal-bright); }

.conexao-nav__panel--products .conexao-mega-card { align-items: flex-start; }

.conexao-nav__mega-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 8px;
}

.conexao-mega-card {
  display: flex;
  gap: 14px;
  padding: 14px 16px;
  border-radius: 10px;
  text-decoration: none;
  transition: background 0.2s ease, border-left-color 0.2s ease;
  border-left: 2px solid transparent;
}

.conexao-mega-card:hover {
  background: rgba(255, 255, 255, 0.04);
  border-left-color: var(--accent, var(--oinsights-teal-bright));
}

.conexao-mega-card--vms  { --accent: var(--milestone-blue); }
.conexao-mega-card--bms  { --accent: var(--niagara-coral); }
.conexao-mega-card--core { --accent: var(--core-mint); }
.conexao-mega-card--auto { --accent: #8093E8; }

.conexao-mega-card__icon {
  width: 32px;
  height: 32px;
  flex-shrink: 0;
  border-radius: var(--radius-sm);
  background: rgba(255, 255, 255, 0.04);
  border: 1px solid var(--border-soft);
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--accent);
}

.conexao-mega-card__body {
  min-width: 0;
}

.conexao-mega-card__tag {
  font-size: 9px;
  color: var(--accent);
  letter-spacing: 1.5px;
  margin: 0 0 5px;
  font-weight: 600;
}

.conexao-mega-card__title {
  font-size: 13px;
  font-weight: 600;
  color: var(--text-primary);
  margin: 0 0 3px;
}

.conexao-mega-card__desc {
  font-size: 11px;
  color: var(--text-secondary);
  line-height: 1.5;
  margin: 0;
}

/* Mega panel — Solutions (vertical grid) */
.conexao-nav__panel--verticals {
  left: -300px;
  width: 880px;
}

.conexao-nav__vert-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 14px;
  padding-bottom: 12px;
  border-bottom: 1px solid var(--border-faint);
}

.conexao-nav__vert-eyebrow {
  font-size: 10px;
  color: var(--oinsights-teal-bright);
  font-weight: 700;
  letter-spacing: 2px;
}

.conexao-nav__vert-view-all {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  min-height: 44px;
  padding: 4px 6px;
  margin: -4px -6px;
  box-sizing: border-box;
  font-size: 11px;
  color: var(--text-secondary);
  text-decoration: none;
  font-weight: 600;
  transition: color 0.2s ease;
}

.conexao-nav__vert-view-all:hover {
  color: var(--text-primary);
}

.conexao-nav__vert-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 6px;
}

.conexao-nav__vert-tile {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 11px 12px;
  border-radius: var(--radius-sm);
  text-decoration: none;
  transition: background 0.2s ease, transform 0.2s ease;
}

.conexao-nav__vert-tile:hover {
  background: rgba(125, 189, 198, 0.08);
  transform: translateX(2px);
}

.conexao-nav__vert-tile-icon {
  width: 18px;
  height: 18px;
  flex-shrink: 0;
  color: var(--text-secondary);
  transition: color 0.2s ease;
}

.conexao-nav__vert-tile:hover .conexao-nav__vert-tile-icon {
  color: var(--oinsights-teal-soft);
}

.conexao-nav__vert-tile-name {
  font-size: 13px;
  color: var(--text-primary);
  font-weight: 500;
}

/* Mobile toggle button (hidden on desktop) */
.conexao-nav__mobile-toggle {
  display: none;
  background: none;
  border: 0;
  width: 36px;
  height: 36px;
  cursor: pointer;
  padding: 0;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 5px;
}

.conexao-nav__mobile-bar {
  display: block;
  width: 22px;
  height: 2px;
  background: var(--text-primary);
  border-radius: 1px;
  transition: transform 0.3s ease, opacity 0.3s ease;
}

.conexao-nav__mobile-toggle[aria-expanded="true"] .conexao-nav__mobile-bar:nth-child(1) {
  transform: translateY(7px) rotate(45deg);
}

.conexao-nav__mobile-toggle[aria-expanded="true"] .conexao-nav__mobile-bar:nth-child(2) {
  opacity: 0;
}

.conexao-nav__mobile-toggle[aria-expanded="true"] .conexao-nav__mobile-bar:nth-child(3) {
  transform: translateY(-7px) rotate(-45deg);
}

/* Mobile breakpoint — collapse nav to accordion */
@media (max-width: 1024px) {
  .conexao-nav__mobile-toggle {
    display: flex;
  }

  .conexao-nav__menu {
    position: fixed;
    inset: 0;
    background: var(--conexao-navy-deep);
    overflow: hidden;
    padding: 0;
    display: flex;
    flex-direction: column;
    transform: translateX(100%);
    transition: transform 0.3s ease;
    z-index: 200;
  }
  .conexao-nav__m-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding: 16px 20px;
    border-bottom: 1px solid var(--border-faint);
    flex: 0 0 auto;
  }
  .conexao-nav__m-logo { display: flex; align-items: center; gap: 9px; text-decoration: none; }
  .conexao-nav__m-logo .conexao-nav__logo-img { height: 44px; max-width: 190px; }
  .conexao-nav__m-logo--custom .custom-logo-link { display: flex; }
  .conexao-nav__m-logo--custom .custom-logo { display: block; height: 44px; width: auto; max-width: 190px; }
  .conexao-nav__m-logo-icon { color: var(--oinsights-teal-bright); display: flex; }
  .conexao-nav__m-logo-text { display: flex; flex-direction: column; line-height: 1; }
  .conexao-nav__m-logo-wm { font-family: var(--font-primary); font-weight: 700; font-size: 15px; letter-spacing: .4px; color: var(--text-primary); }
  .conexao-nav__m-logo-tg { font-size: 7px; letter-spacing: 2px; color: var(--text-tertiary); font-weight: 600; margin-top: 3px; }
  .conexao-nav__m-head-r { display: flex; align-items: center; gap: 12px; }
  .conexao-nav__m-close { background: none; border: 0; color: var(--text-secondary); display: flex; align-items: center; justify-content: center; cursor: pointer; width: 44px; height: 44px; padding: 0; }
  .conexao-nav__menu-list {
    flex: 1 1 auto;
    overflow-y: auto;
    padding: 8px 20px 16px;
  }
  .conexao-nav__m-foot {
    display: block;
    padding: 16px 20px 24px;
    border-top: 1px solid var(--border-faint);
    flex: 0 0 auto;
  }
  .conexao-nav__m-cta { display: flex; align-items: center; justify-content: center; width: 100%; }
  /* .conexao-nav__menu a sets a light link color; keep the primary CTA's dark
     text for contrast on its white background (higher specificity than that rule). */
  .conexao-nav__menu .conexao-btn--primary { color: var(--conexao-navy-deep); }
  .conexao-nav__m-li { display: inline-flex; align-items: center; gap: 10px; margin-top: 16px; min-height: 40px; text-decoration: none; color: var(--text-tertiary); font-size: 12.5px; font-weight: 500; }
  .conexao-nav__m-li-icon { width: 36px; height: 36px; border-radius: 9px; background: var(--surface-2); border: 1px solid var(--border-soft); display: flex; align-items: center; justify-content: center; color: var(--text-secondary); flex: 0 0 auto; }

  .conexao-nav--mobile-open .conexao-nav__menu {
    transform: translateX(0);
  }

  .conexao-nav__menu-list {
    flex-direction: column;
    align-items: stretch;
    gap: 4px;
  }

  .conexao-nav__item {
    border-bottom: 1px solid var(--border-faint);
  }

  .conexao-nav__link {
    padding: 18px 0;
    font-size: 16px;
    width: 100%;
    justify-content: space-between;
  }

  .conexao-nav__panel {
    position: static;
    background: transparent;
    border: 0;
    box-shadow: none;
    padding: 0;
    margin: 0;
    width: 100% !important;
    left: 0 !important;
    max-height: 0;
    overflow: hidden;
    opacity: 1;
    visibility: visible;
    transform: none;
    transition: max-height 0.35s ease;
  }

  .conexao-nav__item.is-open > .conexao-nav__panel {
    max-height: 1500px;
    padding: 0 0 16px;
    transform: none;
  }

  .conexao-nav__mega-grid,
  .conexao-nav__vert-grid {
    grid-template-columns: 1fr;
    gap: 4px;
  }

  .conexao-nav__prodcols {
    grid-template-columns: 1fr;
    gap: 4px;
  }

  .conexao-nav__prodcol-divider {
    display: none;
  }
  .conexao-nav__prodcol { padding: 2px 0 6px; }
  .conexao-nav__prodcol-head { padding: 10px 4px 2px; }
  .conexao-nav__prodcol-eyebrow { font-size: 9.5px; font-weight: 700; letter-spacing: 1.6px; color: var(--oinsights-teal-bright); }
  .conexao-nav__prodcol-cards { display: flex; flex-direction: column; gap: 0; }
  .conexao-nav__panel--products .conexao-mega-card { display: flex; align-items: center; gap: 11px; padding: 10px 4px; background: none; border: 0; border-radius: 0; box-shadow: none; }
  .conexao-nav__panel--products .conexao-mega-card::before { content: ""; width: 8px; height: 8px; border-radius: 3px; background: var(--accent); flex: 0 0 auto; }
  .conexao-nav__panel--products .conexao-mega-card__icon,
  .conexao-nav__panel--products .conexao-mega-card__tag,
  .conexao-nav__panel--products .conexao-mega-card__desc { display: none; }
  .conexao-nav__panel--products .conexao-mega-card__title { font-size: 13.5px; font-weight: 500; color: var(--text-secondary); margin: 0; }

  .conexao-nav__panel--products,
  .conexao-nav__panel--verticals,
  .conexao-nav__panel--compact {
    width: 100% !important;
  }

  .conexao-nav__right .conexao-btn {
    display: none;
  }
}

/* ==========================================================================
   ANIMATIONS — Scroll reveal + accents
   ========================================================================== */

@keyframes conexao-fade-up {
  from { opacity: 0; transform: translateY(20px); }
  to { opacity: 1; transform: translateY(0); }
}

@keyframes conexao-slow-drift {
  0%, 100% { transform: translate(0, 0) scale(1); }
  33% { transform: translate(30px, -20px) scale(1.05); }
  66% { transform: translate(-20px, 30px) scale(0.95); }
}

@keyframes conexao-pulse-node {
  0%, 100% { opacity: 0.6; }
  50% { opacity: 1; }
}

@keyframes conexao-flow-line {
  0% { stroke-dashoffset: 0; }
  100% { stroke-dashoffset: -16; }
}

@keyframes conexao-hub-glow-pulse {
  0%, 100% { opacity: 0.35; }
  50% { opacity: 0.6; }
}

.conexao-reveal {
  opacity: 0;
}

.conexao-reveal.in {
  animation: conexao-fade-up 0.7s cubic-bezier(0.16, 1, 0.3, 1) forwards;
}

/* Stagger helpers — applied via class on each item */
.conexao-d-1.in { animation-delay: 0.04s; }
.conexao-d-2.in { animation-delay: 0.08s; }
.conexao-d-3.in { animation-delay: 0.12s; }
.conexao-d-4.in { animation-delay: 0.16s; }
.conexao-d-5.in { animation-delay: 0.20s; }
.conexao-d-6.in { animation-delay: 0.24s; }
.conexao-d-7.in { animation-delay: 0.28s; }
.conexao-d-8.in { animation-delay: 0.32s; }
.conexao-d-9.in { animation-delay: 0.36s; }
.conexao-d-10.in { animation-delay: 0.40s; }
.conexao-d-11.in { animation-delay: 0.44s; }
.conexao-d-12.in { animation-delay: 0.48s; }

.conexao-glow-drift {
  animation: conexao-slow-drift 20s ease-in-out infinite;
}

.conexao-glow-drift-rev {
  animation: conexao-slow-drift 22s ease-in-out infinite reverse;
}

/* ==========================================================================
   ANIMATIONS v2.1 — Word stagger, shimmer, line draw, count-up
   ========================================================================== */

@keyframes conexao-word-in {
  from { opacity: 0; transform: translateY(20px); filter: blur(6px); }
  to { opacity: 1; transform: translateY(0); filter: blur(0); }
}

@keyframes conexao-shimmer {
  0%, 100% { background-position: 0% 50%; }
  50% { background-position: 200% 50%; }
}

@keyframes conexao-line-draw {
  from { stroke-dashoffset: 400; }
  to { stroke-dashoffset: 0; }
}

@keyframes conexao-icon-draw {
  from { stroke-dashoffset: 200; }
  to { stroke-dashoffset: 0; }
}

@keyframes conexao-vert-ripple {
  from { opacity: 0; transform: scale(0.85); }
  to { opacity: 1; transform: scale(1); }
}

@keyframes conexao-card-sweep {
  0%   { transform: translateX(-150%) skewX(-20deg); }
  100% { transform: translateX(250%)  skewX(-20deg); }
}

/* Hero word stagger — words start hidden, JS adds .in to trigger one-by-one */
.conexao-hero-word {
  display: inline-block;
  opacity: 0;
  will-change: transform, opacity, filter;
}

.conexao-hero-word.in {
  animation: conexao-word-in 0.7s cubic-bezier(0.22, 1, 0.36, 1) forwards;
}

/* Stagger delay tiers for hero words */
.conexao-w-1.in  { animation-delay: 0.05s; }
.conexao-w-2.in  { animation-delay: 0.13s; }
.conexao-w-3.in  { animation-delay: 0.21s; }
.conexao-w-4.in  { animation-delay: 0.29s; }
.conexao-w-5.in  { animation-delay: 0.37s; }
.conexao-w-6.in  { animation-delay: 0.45s; }
.conexao-w-7.in  { animation-delay: 0.55s; }
.conexao-w-lead.in { animation-delay: 0.70s; }
.conexao-w-ctas.in { animation-delay: 0.85s; }

/* Gradient shimmer over the hero accent text */
.conexao-shimmer {
  background: linear-gradient(90deg, #5DCAA5 0%, #408088 30%, #7DBDC6 50%, #408088 70%, #5DCAA5 100%);
  background-size: 200% 100%;
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  background-clip: text;
  animation: conexao-shimmer 6s ease-in-out infinite;
  padding-bottom: 0.18em;
  margin-bottom: -0.18em;
}

.conexao-shimmer.conexao-hero-word.in {
  animation: conexao-shimmer 6s ease-in-out infinite, conexao-word-in 0.8s cubic-bezier(0.22, 1, 0.36, 1) forwards;
}

/* ==========================================================================
   SCROLL PROGRESS BAR
   ========================================================================== */

.conexao-scroll-progress {
  position: fixed;
  top: 0;
  left: 0;
  height: 2px;
  width: 0%;
  background: linear-gradient(90deg, #5DCAA5 0%, #7DBDC6 50%, #5DCAA5 100%);
  z-index: 9999;
  box-shadow: 0 0 8px rgba(93, 202, 165, 0.6);
  transition: width 0.05s linear;
  pointer-events: none;
}

/* ==========================================================================
   PRODUCT CARD v2.1 — Light sweep on hover
   ========================================================================== */

.conexao-product-card {
  overflow: hidden;
}

.conexao-product-card::after {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  width: 60%;
  height: 100%;
  background: linear-gradient(90deg, transparent, rgba(93, 202, 165, 0.07), transparent);
  transform: translateX(-150%) skewX(-20deg);
  pointer-events: none;
  z-index: 1;
}

.conexao-product-card:hover::after {
  animation: conexao-card-sweep 0.9s cubic-bezier(0.22, 1, 0.36, 1);
}

.conexao-product-card:hover {
  box-shadow: 0 20px 60px -20px rgba(93, 202, 165, 0.15);
}

/* Capability bullets brighten in sequence on hover */
.conexao-product-card__capabilities li {
  transition: color 0.3s ease;
}
.conexao-product-card:hover .conexao-product-card__capabilities li:nth-child(1) { transition-delay: 0s;    color: rgba(255,255,255,0.9); }
.conexao-product-card:hover .conexao-product-card__capabilities li:nth-child(2) { transition-delay: 0.06s; color: rgba(255,255,255,0.9); }
.conexao-product-card:hover .conexao-product-card__capabilities li:nth-child(3) { transition-delay: 0.12s; color: rgba(255,255,255,0.9); }
.conexao-product-card:hover .conexao-product-card__capabilities li:nth-child(4) { transition-delay: 0.18s; color: rgba(255,255,255,0.9); }

/* Make sure card content sits above the sweep pseudo */
.conexao-product-card > * {
  position: relative;
  z-index: 2;
}

/* ==========================================================================
   VERTICALS v2.1 — Ripple entrance + icon stroke-draw on first reveal
   ========================================================================== */

.conexao-vert-tile {
  /* Tile fade is handled by JS adding .ripple-in to give per-tile delay */
  opacity: 0;
}

.conexao-vert-tile.ripple-in {
  animation: conexao-vert-ripple 0.6s cubic-bezier(0.22, 1, 0.36, 1) forwards;
}

/* Once tile is in, the inner SVG paths stroke themselves in.
   We use a separate class so it only happens once. */
.conexao-vert-tile.ripple-in .conexao-vert-tile__icon svg path,
.conexao-vert-tile.ripple-in .conexao-vert-tile__icon svg line,
.conexao-vert-tile.ripple-in .conexao-vert-tile__icon svg polygon,
.conexao-vert-tile.ripple-in .conexao-vert-tile__icon svg rect {
  stroke-dasharray: 200;
  stroke-dashoffset: 200;
  animation: conexao-icon-draw 1.4s cubic-bezier(0.22, 1, 0.36, 1) forwards;
  animation-delay: 0.3s;
}

/* ==========================================================================
   AUTOMATION DIAGRAM v2.1 — Line draw on scroll, particles via JS
   ========================================================================== */

.conexao-auto-diagram .ca-auto-line {
  stroke-dasharray: 400;
  stroke-dashoffset: 400;
  /* Drawn by JS when section enters view by adding .draw class */
}

.conexao-auto-diagram.drawing .ca-auto-line {
  animation: conexao-line-draw 1.6s cubic-bezier(0.22, 1, 0.36, 1) forwards;
}

/* Per-line stagger */
.conexao-auto-diagram.drawing .ca-auto-line-1  { animation-delay: 0.0s; }
.conexao-auto-diagram.drawing .ca-auto-line-2  { animation-delay: 0.08s; }
.conexao-auto-diagram.drawing .ca-auto-line-3  { animation-delay: 0.16s; }
.conexao-auto-diagram.drawing .ca-auto-line-4  { animation-delay: 0.24s; }
.conexao-auto-diagram.drawing .ca-auto-line-5  { animation-delay: 0.32s; }
.conexao-auto-diagram.drawing .ca-auto-line-6  { animation-delay: 0.40s; }
.conexao-auto-diagram.drawing .ca-auto-line-7  { animation-delay: 0.48s; }
.conexao-auto-diagram.drawing .ca-auto-line-8  { animation-delay: 0.56s; }
.conexao-auto-diagram.drawing .ca-auto-line-9  { animation-delay: 0.64s; }
.conexao-auto-diagram.drawing .ca-auto-line-10 { animation-delay: 0.72s; }
.conexao-auto-diagram.drawing .ca-auto-line-11 { animation-delay: 0.80s; }
.conexao-auto-diagram.drawing .ca-auto-line-12 { animation-delay: 0.88s; }
.conexao-auto-diagram.drawing .ca-auto-line-o1 { animation-delay: 1.10s; }
.conexao-auto-diagram.drawing .ca-auto-line-o2 { animation-delay: 1.20s; }
.conexao-auto-diagram.drawing .ca-auto-line-o3 { animation-delay: 1.30s; }
.conexao-auto-diagram.drawing .ca-auto-line-o4 { animation-delay: 1.40s; }

/* Chips stay soft-pulsing as before */
.conexao-auto-diagram .sys-chip {
  animation: conexao-pulse-node 4s ease-in-out infinite;
}

/* ==========================================================================
   REDUCED MOTION — Honor user preference
   ========================================================================== */

@media (prefers-reduced-motion: reduce) {
  .conexao-reveal,
  .conexao-hero-word,
  .conexao-vert-tile,
  .conexao-auto-diagram .ca-auto-line {
    opacity: 1 !important;
    transform: none !important;
    filter: none !important;
    animation: none !important;
    stroke-dashoffset: 0 !important;
  }

  .conexao-glow-drift,
  .conexao-glow-drift-rev,
  .conexao-shimmer,
  .conexao-scroll-progress {
    animation: none !important;
  }
}

/* ==========================================================================
   SECTION FRAMEWORK
   ========================================================================== */

.conexao-section {
  padding: var(--space-5xl) var(--space-2xl);
  background: var(--conexao-navy-deep);
  border-top: 1px solid rgba(255, 255, 255, 0.04);
  position: relative;
  overflow: hidden;
}

.conexao-section--hero {
  padding: var(--space-5xl) var(--space-2xl) var(--space-4xl);
  border-top: 0;
}

.conexao-section--tall {
  padding: var(--space-6xl) var(--space-2xl);
}

.conexao-section__container {
  max-width: var(--container-max);
  margin: 0 auto;
  position: relative;
}

.conexao-section__container--wide {
  max-width: var(--container-wide);
}

.conexao-section__container--narrow {
  max-width: var(--container-narrow);
}

/* Section header eyebrow */
.conexao-eyebrow {
  display: inline-block;
  font-size: 11px;
  font-weight: 600;
  color: var(--oinsights-teal-bright);
  letter-spacing: 2px;
  margin-bottom: 20px;
  padding: 6px 14px;
  background: var(--accent-pill-bg);
  border: 1px solid var(--accent-pill-border);
  border-radius: var(--radius-pill);
}

/* Section heading scales */
.conexao-h1 {
  font-size: 76px;
  line-height: 1.02;
  font-weight: 700;
  color: var(--text-primary);
  letter-spacing: -3px;
  margin: 0 0 28px;
}

.conexao-h2 {
  font-size: 52px;
  line-height: 1.05;
  font-weight: 700;
  color: var(--text-primary);
  letter-spacing: -2px;
  margin: 0 0 24px;
}

.conexao-h2--md {
  font-size: 48px;
  letter-spacing: -1.5px;
}

.conexao-h2--sm {
  font-size: 44px;
  letter-spacing: -1.4px;
}

.conexao-lead {
  font-size: 17px;
  line-height: 1.6;
  color: var(--text-secondary);
  margin: 0;
}

.conexao-lead--lg {
  font-size: 19px;
  line-height: 1.55;
}

/* Homepage platform hero — V1 Spotlight wayfinding grid */
.conexao-phero__head { text-align: center; max-width: 760px; margin: 0 auto 50px; }
.conexao-phero__title { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 50px; line-height: 1.04; letter-spacing: -2px; color: var(--text-primary); margin: 0 0 18px; }
.conexao-phero__lead { font-size: 18px; line-height: 1.55; color: var(--text-secondary); margin: 0; }
.conexao-phero__wayfind { text-align: center; font-size: 11px; font-weight: 700; letter-spacing: 2px; text-transform: uppercase; color: var(--text-tertiary); margin: 34px 0 22px; }
.conexao-phero__grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 18px; }
.conexao-ptile { position: relative; display: flex; flex-direction: column; border-radius: 18px; padding: 30px 24px 26px; overflow: hidden; text-decoration: none; cursor: pointer; background: var(--surface-2); border: 1px solid var(--border-soft); transition: transform .3s cubic-bezier(.2,.7,.3,1), border-color .3s, box-shadow .3s; }
.conexao-ptile::before { content: ""; position: absolute; inset: 0; border-radius: inherit; opacity: .5; transition: opacity .3s; pointer-events: none; background: radial-gradient(420px circle at var(--mx,50%) var(--my,-10%), rgba(93,202,165,0.2), transparent 60%) /* fallback */; background: radial-gradient(420px circle at var(--mx,50%) var(--my,-10%), color-mix(in srgb, var(--a) 20%, transparent), transparent 60%); }
.conexao-ptile::after { content: ""; position: absolute; left: 0; right: 0; top: 0; height: 2px; background: linear-gradient(90deg, transparent, var(--a), transparent); opacity: .55; transition: opacity .3s; }
.conexao-ptile:hover { transform: translateY(-6px); border-color: rgba(93,202,165,0.55) /* fallback */; border-color: color-mix(in srgb, var(--a) 55%, transparent); box-shadow: 0 24px 50px -24px rgba(93,202,165,0.6) /* fallback */; box-shadow: 0 24px 50px -24px color-mix(in srgb, var(--a) 60%, transparent); }
.conexao-ptile:hover::before { opacity: 1; }
.conexao-ptile:hover::after { opacity: 1; }
.conexao-ptile__icon { position: relative; z-index: 1; width: 46px; height: 46px; border-radius: 12px; display: flex; align-items: center; justify-content: center; color: var(--a); background: rgba(93,202,165,0.14) /* fallback */; background: color-mix(in srgb, var(--a) 14%, transparent); box-shadow: inset 0 0 0 1px rgba(93,202,165,0.3) /* fallback */; box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--a) 30%, transparent); margin-bottom: 20px; }
.conexao-ptile__icon svg { width: 23px; height: 23px; }
.conexao-ptile__label { position: relative; z-index: 1; font-size: 10px; font-weight: 600; letter-spacing: 1.5px; color: var(--a); margin-bottom: 9px; }
.conexao-ptile__name { position: relative; z-index: 1; font-family: 'Poppins', sans-serif; font-weight: 600; font-size: 18px; line-height: 1.25; color: var(--text-primary); margin-bottom: 10px; letter-spacing: -.3px; }
.conexao-ptile__out { position: relative; z-index: 1; font-size: 13px; line-height: 1.5; color: var(--text-secondary); margin-bottom: 22px; flex: 1; }
.conexao-ptile__cta { position: relative; z-index: 1; display: inline-flex; align-items: center; gap: 7px; align-self: flex-start; font-size: 13px; font-weight: 600; color: var(--a); background: rgba(93,202,165,0.12) /* fallback */; background: color-mix(in srgb, var(--a) 12%, transparent); border: 1px solid rgba(93,202,165,0.3) /* fallback */; border: 1px solid color-mix(in srgb, var(--a) 30%, transparent); border-radius: 9px; padding: 9px 15px; transition: gap .25s; }
.conexao-ptile:hover .conexao-ptile__cta { gap: 11px; }
.conexao-ptile__cta svg { width: 15px; height: 15px; display: block; }
@media (max-width: 880px) {
  .conexao-phero__title { font-size: 34px; letter-spacing: -1px; }
  .conexao-phero__lead { font-size: 16px; }
  .conexao-phero__grid { grid-template-columns: 1fr; }
}

/* Professional Services — engagements grid */
.conexao-ps__head { text-align: center; max-width: 720px; margin: 0 auto 54px; }
.conexao-ps__title { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 46px; line-height: 1.05; letter-spacing: -1.8px; color: var(--text-primary); margin: 0 0 18px; }
.conexao-ps__lead { font-size: 17px; }
.conexao-ps__grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 16px; }
.conexao-pscard { position: relative; display: flex; flex-direction: column; background: var(--surface-2); border: 1px solid var(--border-soft); border-radius: 16px; padding: 26px 22px; overflow: hidden; text-decoration: none; transition: transform .25s ease, border-color .25s ease; }
.conexao-pscard::before { content: ""; position: absolute; top: 0; left: 0; right: 0; height: 2px; background: linear-gradient(90deg, transparent, var(--oinsights-teal-bright), transparent); opacity: 0; transition: opacity .25s ease; }
.conexao-pscard:hover { transform: translateY(-5px); border-color: rgba(93,202,165,0.35) /* fallback */; border-color: color-mix(in srgb, var(--oinsights-teal-bright) 35%, transparent); }
.conexao-pscard:hover::before { opacity: .8; }
.conexao-pscard__icon { width: 42px; height: 42px; border-radius: 11px; display: flex; align-items: center; justify-content: center; color: var(--oinsights-teal-bright); background: var(--accent-pill-bg); border: 1px solid var(--accent-pill-border); margin-bottom: 18px; }
.conexao-pscard__icon svg { width: 21px; height: 21px; }
.conexao-pscard__title { font-family: 'Poppins', sans-serif; font-weight: 600; font-size: 16px; line-height: 1.3; letter-spacing: -.2px; color: var(--text-primary); margin: 0 0 9px; }
.conexao-pscard__desc { font-size: 12.5px; line-height: 1.55; color: var(--text-secondary); margin: 0 0 18px; flex: 1; }
.conexao-pscard__list { list-style: none; margin: 0; padding: 16px 0 0; display: flex; flex-direction: column; gap: 9px; border-top: 1px solid var(--border-soft); }
.conexao-pscard__list li { display: flex; align-items: flex-start; gap: 9px; font-size: 12.5px; font-weight: 500; color: var(--text-primary); line-height: 1.4; }
.conexao-pscard__chk { flex: 0 0 auto; color: var(--oinsights-teal-bright); margin-top: 1px; }
.conexao-pscard__chk svg { width: 14px; height: 14px; display: block; }
.conexao-pscard--cta { background: var(--accent-pill-bg); border-color: var(--accent-pill-border); cursor: pointer; }
.conexao-pscard__icon--cta { color: #fff; background: var(--oinsights-teal-bright); border-color: transparent; }
.conexao-pscard__cta { display: inline-flex; align-items: center; gap: 7px; align-self: flex-start; font-size: 13px; font-weight: 600; color: var(--oinsights-teal-bright); }
.conexao-pscard__cta svg { width: 15px; height: 15px; }
@media (max-width: 980px) { .conexao-ps__grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 560px) { .conexao-ps__title { font-size: 32px; letter-spacing: -1px; } .conexao-ps__grid { grid-template-columns: 1fr; } }

/* Professional Services — "what it is" intro */
.ps-intro { display: grid; grid-template-columns: 0.85fr 1.15fr; gap: 52px; align-items: center; max-width: 1040px; margin: 0 auto 64px; }
.ps-intro__art { position: relative; aspect-ratio: 1 / 1; border-radius: 22px; border: 1px solid var(--accent-pill-border); background: linear-gradient(160deg, var(--accent-pill-bg), transparent 72%); display: flex; align-items: center; justify-content: center; overflow: hidden; }
.ps-intro__art svg { width: 76%; height: 76%; position: relative; z-index: 1; }
.ps-intro__glow { position: absolute; width: 62%; height: 62%; border-radius: 50%; background: rgba(93, 202, 165, 0.12); background: radial-gradient(circle, rgba(93,202,165,0.2), transparent 68%) /* fallback */; background: radial-gradient(circle, color-mix(in srgb, var(--oinsights-teal-bright) 20%, transparent), transparent 68%); opacity: .75; }
html[data-conexao-theme="light"] .ps-intro__glow { opacity: .22; }
.ps-intro__eyebrow { font-size: 11px; font-weight: 700; letter-spacing: 2px; color: var(--oinsights-teal-bright); margin-bottom: 14px; }
.ps-intro__h { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 30px; line-height: 1.15; letter-spacing: -.8px; color: var(--text-primary); margin: 0 0 18px; }
.ps-intro__p { font-size: 15px; line-height: 1.75; color: var(--text-secondary); margin: 0; }
@media (max-width: 820px) { .ps-intro { grid-template-columns: 1fr; gap: 30px; } .ps-intro__art { max-width: 320px; } }

/* Featured service box + full-width CTA */
.conexao-pscard--feature { border-color: rgba(93, 202, 165, 0.45); border-color: rgba(93,202,165,0.45) /* fallback */; border-color: color-mix(in srgb, var(--oinsights-teal-bright) 45%, transparent); background: var(--surface-2); background: linear-gradient(160deg, var(--accent-pill-bg), transparent 70%); }
.conexao-pscard--feature::before { opacity: .8; }
.conexao-pscard__flag { position: absolute; top: 14px; right: 14px; font-size: 9px; font-weight: 700; letter-spacing: 1.4px; text-transform: uppercase; color: var(--oinsights-teal-bright); }
.ps-cta { display: flex; align-items: center; justify-content: space-between; gap: 24px; margin-top: 16px; padding: 26px 30px; border-radius: 16px; background: var(--accent-pill-bg); border: 1px solid var(--accent-pill-border); }
.ps-cta__t { font-family: 'Poppins', sans-serif; font-weight: 600; font-size: 18px; color: var(--text-primary); margin: 0 0 4px; }
.ps-cta__d { font-size: 13.5px; color: var(--text-secondary); margin: 0; }
@media (max-width: 560px) { .ps-cta { flex-direction: column; align-items: flex-start; } }

/* Success Stories — card grid */
.conexao-story-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; }
.conexao-story { display: flex; flex-direction: column; text-align: left; background: var(--surface-2); border: 1px solid var(--border-soft); border-radius: 16px; overflow: hidden; text-decoration: none; transition: transform .25s ease, border-color .25s ease; }
.conexao-story:hover { transform: translateY(-5px); border-color: rgba(93,202,165,0.45) /* fallback */; border-color: color-mix(in srgb, var(--acc) 45%, transparent); }
.conexao-story__visual { position: relative; display: block; width: 100%; padding-top: 50%; overflow: hidden; background: radial-gradient(120% 130% at 25% 15%, #21434e, #070c1d 72%) /* fallback */; background: radial-gradient(120% 130% at 25% 15%, color-mix(in srgb, var(--acc) 26%, #0c1430), #070c1d 72%); }
.conexao-story__img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.conexao-story__scrim { position: absolute; inset: 0; background: linear-gradient(180deg, rgba(5,7,26,.1), rgba(5,7,26,.5)); }
.conexao-story__ind { position: absolute; top: 12px; left: 12px; font-size: 10px; font-weight: 600; letter-spacing: 1.2px; text-transform: uppercase; color: #E6ECF7; background: rgba(5,7,26,.55); border: 1px solid rgba(255,255,255,.14); border-radius: 7px; padding: 5px 9px; }
.conexao-story__client { position: absolute; left: 18px; right: 18px; bottom: 16px; font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 21px; letter-spacing: .3px; color: #fff; text-shadow: 0 2px 18px rgba(0,0,0,.5); }
.conexao-story__body { padding: 20px 20px 22px; display: flex; flex-direction: column; flex: 1; }
.conexao-story__pill { display: inline-flex; align-items: center; gap: 7px; align-self: flex-start; font-size: 10.5px; font-weight: 600; letter-spacing: .4px; color: var(--acc); background: rgba(93,202,165,0.1) /* fallback */; background: color-mix(in srgb, var(--acc) 10%, transparent); border: 1px solid rgba(93,202,165,0.26) /* fallback */; border: 1px solid color-mix(in srgb, var(--acc) 26%, transparent); border-radius: 100px; padding: 5px 11px; margin-bottom: 13px; }
.conexao-story__dot { width: 6px; height: 6px; border-radius: 50%; background: var(--acc); }
.conexao-story__head { font-family: 'Poppins', sans-serif; font-size: 17px; font-weight: 600; line-height: 1.32; letter-spacing: -.3px; color: var(--text-primary); margin: 0 0 9px; }
.conexao-story__sum { font-size: 13px; line-height: 1.55; color: var(--text-secondary); margin: 0 0 18px; flex: 1; }
.conexao-story__foot { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding-top: 16px; border-top: 1px solid var(--border-soft); }
.conexao-story__metric { display: flex; flex-direction: column; }
.conexao-story__metric-v { font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 22px; line-height: 1; letter-spacing: -.5px; color: var(--acc); }
.conexao-story__metric-l { font-size: 11px; color: var(--text-secondary); margin-top: 4px; }
.conexao-story__read { display: inline-flex; align-items: center; gap: 7px; font-size: 13px; font-weight: 600; color: var(--text-primary); }
.conexao-story__read svg { color: var(--acc); transition: transform .2s ease; }
.conexao-story:hover .conexao-story__read svg { transform: translateX(4px); }
@media (max-width: 900px) { .conexao-story-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 600px) { .conexao-story-grid { grid-template-columns: 1fr; } }

/* Homepage — Global Presence */
.conexao-gp__intro { display: grid; grid-template-columns: 1.1fr 0.9fr; gap: 56px; align-items: center; margin-bottom: 64px; }
.conexao-gp__copy { font-size: 15px; line-height: 1.75; margin-bottom: 16px; }
.conexao-gp__copy:last-child { margin-bottom: 0; }
.conexao-gp__globe { display: flex; justify-content: center; align-items: center; }
.conexao-globe { width: 100%; max-width: 420px; height: auto; display: block; filter: drop-shadow(0 0 40px rgba(93, 202, 165, 0.10)); }
.conexao-gp__stats { display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; }
.conexao-gp-stat { position: relative; background: var(--surface-2); border: 1px solid var(--border-soft); border-radius: 16px; padding: 34px 28px 30px; overflow: hidden; transition: border-color .3s ease, transform .3s ease; }
.conexao-gp-stat:hover { border-color: rgba(93,202,165,0.3) /* fallback */; border-color: color-mix(in srgb, var(--oinsights-teal-bright) 30%, transparent); transform: translateY(-3px); }
.conexao-gp-stat__bar { position: absolute; top: 0; left: 0; right: 0; height: 3px; background: linear-gradient(90deg, #5DCAA5 0%, #7DBDC6 100%); }
.conexao-gp-stat__num { font-family: 'Poppins', sans-serif; font-size: 54px; font-weight: 700; line-height: 1; letter-spacing: -2px; color: var(--text-primary); margin-bottom: 14px; }
.conexao-gp-stat__label { font-size: 11px; color: var(--oinsights-teal-bright); font-weight: 600; letter-spacing: 2px; text-transform: uppercase; margin-bottom: 10px; }
.conexao-gp-stat__desc { font-size: 13px; color: var(--text-secondary); line-height: 1.55; margin: 0; }
.conexao-gp__offices { margin-top: 18px; display: grid; grid-template-columns: repeat(2, 1fr); gap: 16px; }
.conexao-gp-office { padding: 24px 26px; background: var(--surface-1); border: 1px solid var(--border-soft); border-radius: 16px; }
.conexao-gp-office__pill { display: inline-block; font-size: 10px; font-weight: 600; letter-spacing: 1.6px; color: var(--oinsights-teal-bright); background: var(--accent-pill-bg); border: 1px solid var(--accent-pill-border); border-radius: 99px; padding: 5px 12px; margin-bottom: 14px; }
.conexao-gp-office__name { font-family: 'Poppins', sans-serif; font-size: 17px; font-weight: 600; letter-spacing: -0.2px; color: var(--text-primary); line-height: 1.35; margin-bottom: 10px; }
.conexao-gp-office__loc { display: flex; align-items: center; gap: 7px; font-size: 13px; color: var(--text-secondary); }
@media (max-width: 860px) {
  .conexao-gp__intro { grid-template-columns: 1fr; gap: 32px; }
  .conexao-gp__globe { order: -1; max-width: 320px; margin: 0 auto; }
  .conexao-gp__stats { grid-template-columns: 1fr; }
  .conexao-gp__offices { grid-template-columns: 1fr; }
}

/* Gradient text accent */
.conexao-gradient-text {
  background: linear-gradient(135deg, var(--oinsights-teal-bright) 0%, var(--oinsights-teal) 60%, var(--oinsights-teal-soft) 100%);
  background-size: 200% auto;
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  background-clip: text;
  animation: conexao-shimmer 6s ease-in-out infinite;
}
@media (prefers-reduced-motion: reduce) {
  .conexao-gradient-text { animation: none; }
}

/* Homepage hero conduit animation (v3.46.0). Signal pulses travel teal
   conduits behind the hero content; sits on the glow-blob z:0 layer, content
   lifted to z:1. Pauses when the tab is hidden; reduced-motion hides pulses. */
.conexao-conduit {
  position: absolute;
  inset: 0;
  z-index: 0;
  pointer-events: none;
  overflow: hidden;
}
.conexao-conduit .cx-conduit-svg {
  width: 100%;
  height: 100%;
  display: block;
}
.cx-node-ring {
  transform-box: fill-box;
  transform-origin: center;
  animation: cx-node-ping 9s ease-out infinite;
}
@keyframes cx-node-ping {
  0%, 82%, 100% { opacity: 0; transform: scale(1); }
  86% { opacity: 0.8; transform: scale(1); }
  96% { opacity: 0; transform: scale(3.4); }
}
.conexao-phero .conexao-section__container { z-index: 1; }
.conexao-conduit.is-paused * { animation-play-state: paused !important; }
@media (prefers-reduced-motion: reduce) {
  .conexao-conduit .cx-conduit-pulses { display: none; }
  .cx-node-ring { animation: none; }
}
/* Light theme: the dark-theme low-alpha teal washes out on the pale
   background, so darken and strengthen the lines, nodes and pulses. */
html[data-conexao-theme="light"] .cx-conduit-lines path { stroke: rgba(38,150,120,0.32); }
html[data-conexao-theme="light"] .cx-conduit-lines path:nth-child(3) { stroke: rgba(38,150,120,0.42); }
html[data-conexao-theme="light"] .cx-conduit-nodes circle { stroke: rgba(38,150,120,0.6); fill: rgba(38,150,120,0.6); }
html[data-conexao-theme="light"] .cx-conduit-pulses circle { fill: #2E9B78; }

/* Ambient glow blobs */
.conexao-glow-blob {
  position: absolute;
  border-radius: 50%;
  pointer-events: none;
  z-index: 0;
}

.conexao-glow-blob--teal {
  background: radial-gradient(circle, rgba(64, 128, 136, 0.25) 0%, transparent 60%);
}

.conexao-glow-blob--mint {
  background: radial-gradient(circle, rgba(93, 202, 165, 0.15) 0%, transparent 60%);
}

.conexao-glow-blob--soft {
  background: radial-gradient(circle, rgba(64, 128, 136, 0.08) 0%, transparent 70%);
}

/* Grid background */
.conexao-grid-bg {
  position: absolute;
  inset: 0;
  opacity: 0.4;
  background-image:
    linear-gradient(rgba(255, 255, 255, 0.03) 1px, transparent 1px),
    linear-gradient(90deg, rgba(255, 255, 255, 0.03) 1px, transparent 1px);
  background-size: 80px 80px;
  -webkit-mask-image: radial-gradient(ellipse at center, black 30%, transparent 70%);
  mask-image: radial-gradient(ellipse at center, black 30%, transparent 70%);
  pointer-events: none;
}

.conexao-grid-bg--small {
  background-size: 30px 30px;
  opacity: 1;
  background-image:
    linear-gradient(rgba(255, 255, 255, 0.02) 1px, transparent 1px),
    linear-gradient(90deg, rgba(255, 255, 255, 0.02) 1px, transparent 1px);
  -webkit-mask-image: none;
  mask-image: none;
}

/* ==========================================================================
   BUTTONS
   ========================================================================== */

.conexao-btn {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 16px 28px;
  border-radius: var(--radius-pill);
  font-size: 15px;
  font-weight: 600;
  cursor: pointer;
  text-decoration: none;
  border: none;
  transition: transform 0.2s ease, background 0.2s ease, box-shadow 0.2s ease;
  font-family: inherit;
}

.conexao-btn--primary {
  background: var(--text-primary);
  color: var(--conexao-navy-deep);
}

.conexao-btn--primary:hover {
  transform: translateY(-1px);
  box-shadow: 0 10px 28px -10px rgba(0, 0, 0, 0.5);
  background: var(--text-primary);
  color: var(--conexao-navy-deep);
}
/* Pin interactive-state colors so GeneratePress's parent button:hover /
   :focus / :active rules cannot repaint <button> CTAs (form submits)
   differently from <a> CTAs. */
.conexao-btn--primary:focus,
.conexao-btn--primary:active {
  background: var(--text-primary);
  color: var(--conexao-navy-deep);
}

.conexao-btn--secondary {
  background: rgba(255, 255, 255, 0.05);
  color: var(--text-primary);
  border: 1px solid rgba(255, 255, 255, 0.12);
  backdrop-filter: blur(10px);
}

.conexao-btn--secondary:hover {
  background: rgba(255, 255, 255, 0.08);
  color: var(--text-primary);
  transform: translateY(-1px);
}
.conexao-btn--secondary:focus,
.conexao-btn--secondary:active {
  background: rgba(255, 255, 255, 0.05);
  color: var(--text-primary);
}

.conexao-btn--lg {
  padding: 18px 36px;
}

.conexao-btn--sm {
  padding: 10px 20px;
  font-size: 13px;
}

.conexao-arrow {
  display: inline-block;
  transition: transform 0.3s cubic-bezier(0.16, 1, 0.3, 1);
}

.conexao-btn:hover .conexao-arrow,
.conexao-link:hover .conexao-arrow {
  transform: translateX(4px);
}

.conexao-link {
  font-size: 14px;
  font-weight: 600;
  cursor: pointer;
  text-decoration: none;
  color: var(--oinsights-teal-bright);
}

/* ==========================================================================
   NAV
   ========================================================================== */

.conexao-nav {
  background: rgba(5, 7, 26, 0.85);
  backdrop-filter: blur(20px);
  border-bottom: 1px solid var(--border-faint);
  padding: 14px var(--space-2xl);
  display: flex;
  align-items: center;
  justify-content: space-between;
  position: sticky;
  top: 0;
  z-index: 100;
  min-height: 84px;
}

/* At mobile widths the header hosts a position:fixed drawer. backdrop-filter
   would make the header a containing block for that fixed child, trapping it
   inside the ~84px header box. Drop the filter on mobile (solid bg replaces the
   frosted look) so the drawer's inset:0 resolves to the viewport. Placed after
   the base rule above so it wins on source order. */
@media (max-width: 1024px) {
  .conexao-nav {
    backdrop-filter: none;
    -webkit-backdrop-filter: none;
    background: var(--conexao-navy-deep);
  }
}

.conexao-nav__left {
  display: flex;
  align-items: center;
  gap: 56px;
}

.conexao-nav__menu {
  display: flex;
  gap: 32px;
  font-size: 13px;
  color: var(--text-secondary);
  font-weight: 500;
}
/* m-head (logo + close) and m-foot (CTA + LinkedIn) are drawer chrome shown
   only inside the mobile drawer; hide on desktop. Scoped to a min-width query
   so it doesn't clobber the mobile display rules defined earlier in the file. */
@media (min-width: 1025px) {
  .conexao-nav__m-head,
  .conexao-nav__m-search,
  .conexao-nav__m-foot { display: none; }
}
html.conexao-nav-locked,
html.conexao-nav-locked body { overflow: hidden; }

.conexao-nav__menu a {
  color: var(--text-secondary);
  transition: color 0.2s ease;
}

.conexao-nav__menu a:hover {
  color: var(--text-primary);
}

/* ==========================================================================
   HERO
   ========================================================================== */

.conexao-hero {
  text-align: center;
  max-width: 960px;
  margin: 0 auto;
  position: relative;
  z-index: 2;
}

.conexao-hero__title {
  max-width: 980px;
  margin: 0 auto 28px;
}

.conexao-hero__lead {
  max-width: 720px;
  margin: 0 auto 40px;
}

.conexao-hero__ctas {
  display: flex;
  gap: 12px;
  justify-content: center;
  flex-wrap: wrap;
  margin-top: 8px;
}

/* ==========================================================================
   PRODUCT CARDS (What We Do)
   ========================================================================== */

.conexao-product-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 16px;
}

.conexao-product-card {
  background: var(--surface-1);
  border: 1px solid var(--border-soft);
  border-radius: var(--radius-lg);
  padding: 36px 32px;
  cursor: pointer;
  display: flex;
  flex-direction: column;
  position: relative;
  transition: transform 0.4s cubic-bezier(0.16, 1, 0.3, 1), border-color 0.4s ease;
}

.conexao-product-card:hover {
  transform: translateY(-6px);
  border-color: var(--border-hover);
}

.conexao-product-card__label {
  display: flex;
  align-items: center;
  gap: 12px;
  margin-bottom: 28px;
}

.conexao-product-card__label-text {
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 2px;
}

.conexao-product-card__label-rule {
  flex: 1;
  height: 1px;
}

.conexao-product-card__title {
  font-size: 26px;
  font-weight: 700;
  color: var(--text-primary);
  margin: 0 0 16px;
  letter-spacing: -0.6px;
  line-height: 1.15;
  min-height: 60px;
}

.conexao-product-card__desc {
  font-size: 14px;
  line-height: 1.65;
  color: var(--text-secondary);
  margin: 0 0 28px;
  min-height: 110px;
}

.conexao-product-card__capabilities-label {
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 1.5px;
  margin-bottom: 12px;
}

.conexao-product-card__capabilities {
  list-style: none;
  padding: 0;
  margin: 0 0 28px;
  display: flex;
  flex-direction: column;
  gap: 10px;
  flex: 1;
}

.conexao-product-card__capabilities li {
  font-size: 13px;
  color: var(--text-secondary);
  padding-left: 16px;
  position: relative;
  line-height: 1.5;
}

.conexao-product-card__capabilities li::before {
  content: '•';
  position: absolute;
  left: 0;
}

.conexao-product-card__accent-line {
  position: absolute;
  bottom: 0;
  left: 0;
  height: 2px;
  width: 100%;
  transform: scaleX(0);
  transform-origin: left;
  transition: transform 0.5s cubic-bezier(0.16, 1, 0.3, 1);
}

.conexao-product-card:hover .conexao-product-card__accent-line {
  transform: scaleX(1);
}

/* Product-specific colors */
.conexao-product-card--vms { --accent: var(--milestone-blue); }
.conexao-product-card--bms { --accent: var(--niagara-coral); }
.conexao-product-card--core { --accent: var(--core-mint); }

.conexao-product-card .conexao-product-card__label-text,
.conexao-product-card .conexao-product-card__capabilities li::before,
.conexao-product-card .conexao-product-card__capabilities-label,
.conexao-product-card .conexao-link {
  color: var(--accent);
}

.conexao-product-card__label-rule {
  background: linear-gradient(90deg, rgba(128,147,232,0.4), transparent) /* fallback */;
  background: linear-gradient(90deg, color-mix(in srgb, var(--accent) 40%, transparent), transparent);
}

.conexao-product-card__accent-line {
  background: linear-gradient(90deg, var(--accent), transparent);
}

/* ==========================================================================
   VERTICALS — Industry Applications
   ========================================================================== */

.conexao-vert-intro {
  display: grid;
  grid-template-columns: 0.9fr 1.1fr;
  gap: 80px;
  align-items: start;
  margin-bottom: 64px;
}

.conexao-vert-intro__lead {
  /* Align the lead with the top of the H2 (clears the eyebrow + its margin)
     instead of floating it down to the middle of the heading. */
  padding-top: 48px;
}

.conexao-vert-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 14px;
}

.conexao-vert-tile {
  position: relative;
  background: var(--surface-2);
  border: 1px solid var(--border-soft);
  border-radius: var(--radius-lg);
  padding: 36px 24px 28px;
  overflow: hidden;
  transition: background 0.4s cubic-bezier(0.16, 1, 0.3, 1), border-color 0.4s ease, transform 0.4s cubic-bezier(0.16, 1, 0.3, 1);
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  gap: 18px;
  cursor: default;
}

.conexao-vert-tile::before {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  height: 1px;
  background: linear-gradient(90deg, transparent, rgba(125, 189, 198, 0), transparent);
  transition: background 0.5s ease;
}

.conexao-vert-tile:hover {
  background: var(--surface-hover);
  border-color: var(--accent-hover-border);
  transform: translateY(-3px);
}

.conexao-vert-tile:hover::before {
  background: linear-gradient(90deg, transparent, rgba(125, 189, 198, 0.6), transparent);
}

.conexao-vert-tile__icon {
  width: 40px;
  height: 40px;
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--text-secondary);
  transition: color 0.3s ease, transform 0.5s cubic-bezier(0.16, 1, 0.3, 1);
}

.conexao-vert-tile__icon svg {
  width: 100%;
  height: 100%;
  stroke: currentColor;
  stroke-width: 1.6;
  fill: none;
  stroke-linecap: round;
  stroke-linejoin: round;
  transition: stroke-width 0.3s ease;
}

.conexao-vert-tile:hover .conexao-vert-tile__icon {
  color: var(--oinsights-teal-soft);
  transform: scale(1.06);
  filter: drop-shadow(0 0 14px var(--accent-glow));
}

.conexao-vert-tile:hover .conexao-vert-tile__icon svg {
  stroke-width: 2;
}

.conexao-vert-tile__name {
  font-size: 16px;
  font-weight: 600;
  color: var(--text-primary);
  letter-spacing: -0.2px;
  line-height: 1.3;
}

.conexao-vert-grid__caption {
  text-align: center;
  margin-top: 40px;
  font-size: 13px;
  color: var(--text-tertiary);
  font-style: italic;
}
/* Verticals — full-width reach-out CTA tile (replaces caption, v3.14.0) */
.conexao-vert-tile--cta {
  margin-top: 14px;
  flex-direction: row;
  text-align: left;
  align-items: center;
  gap: 22px;
  padding: 26px 32px;
  border-style: dashed;
  border-color: var(--border-medium);
  text-decoration: none;
  cursor: pointer;
}
.conexao-vert-tile--cta:hover {
  border-color: var(--accent-hover-border);
  background: var(--surface-hover);
  transform: translateY(-2px);
}
.conexao-vert-tile__icon--cta {
  flex: 0 0 auto;
  width: 52px;
  height: 52px;
  border-radius: 14px;
  background: var(--surface-3);
  border: 1px solid var(--border-soft);
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--oinsights-teal-bright);
}
.conexao-vert-tile--cta__copy { flex: 1 1 auto; }
.conexao-vert-tile--cta .conexao-vert-tile__name { margin-bottom: 4px; }
.conexao-vert-tile--cta__desc {
  font-size: 13.5px;
  line-height: 1.55;
  color: var(--text-secondary);
}
.conexao-vert-tile--cta__arrow {
  flex: 0 0 auto;
  font-size: 14px;
  font-weight: 600;
  color: var(--oinsights-teal-bright);
  white-space: nowrap;
}
.conexao-vert-tile--cta:hover .conexao-arrow { transform: translateX(4px); }
html[data-conexao-theme="light"] .conexao-vert-tile--cta {
  background: #FFFFFF;
  border-color: rgba(10, 17, 36, 0.16);
}
html[data-conexao-theme="light"] .conexao-vert-tile__icon--cta,
html[data-conexao-theme="light"] .conexao-vert-tile--cta__arrow { color: var(--oinsights-teal); }
@media (max-width: 760px) {
  .conexao-vert-tile--cta { flex-direction: column; text-align: center; gap: 14px; }
}

/* ==========================================================================
   PARTNERSHIPS
   ========================================================================== */

.conexao-partnerships {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 20px;
}

.conexao-partner-card {
  background: var(--surface-3);
  border: 1px solid var(--border-soft);
  border-radius: var(--radius-lg);
  padding: 40px;
  border-left: 3px solid var(--accent, var(--oinsights-teal-bright));
}

.conexao-partner-card--milestone { --accent: var(--milestone-blue); }
.conexao-partner-card--niagara { --accent: var(--niagara-coral); }

.conexao-partner-card__label {
  font-size: 11px;
  font-weight: 700;
  color: var(--accent);
  letter-spacing: 2px;
  margin-bottom: 12px;
}

.conexao-partner-card__name {
  font-size: 32px;
  font-weight: 800;
  color: var(--text-primary);
  margin-bottom: 16px;
  letter-spacing: -0.8px;
}

.conexao-partner-card__desc {
  font-size: 14px;
  line-height: 1.7;
  color: var(--text-secondary);
  margin: 0 0 20px;
}

.conexao-partner-card__link {
  color: var(--accent);
  font-size: 13px;
}

/* ==========================================================================
   AUTOMATION DIAGRAM
   ========================================================================== */

.conexao-automation {
  display: grid;
  grid-template-columns: 1.55fr 1fr;
  gap: 56px;
  align-items: center;
}

.conexao-automation__diagram-wrap {
  background: var(--surface-1);
  border: 1px solid var(--border-soft);
  border-radius: var(--radius-xl);
  padding: 32px;
  position: relative;
  overflow: hidden;
}

.conexao-automation__diagram-caption {
  text-align: center;
  font-size: 11px;
  color: var(--text-tertiary);
  margin: 24px 0 0;
  letter-spacing: 0.5px;
  position: relative;
}

.conexao-auto-diagram {
  width: 100%;
  height: auto;
  position: relative;
  display: block;
}

.conexao-auto-diagram .sys-chip {
  animation: conexao-pulse-node 4s ease-in-out infinite;
}

.conexao-auto-diagram .nc-1 { animation-delay: 0s; }
.conexao-auto-diagram .nc-2 { animation-delay: 0.2s; }
.conexao-auto-diagram .nc-3 { animation-delay: 0.4s; }
.conexao-auto-diagram .nc-4 { animation-delay: 0.6s; }
.conexao-auto-diagram .nc-5 { animation-delay: 0.8s; }
.conexao-auto-diagram .nc-6 { animation-delay: 1.0s; }
.conexao-auto-diagram .nc-7 { animation-delay: 1.2s; }
.conexao-auto-diagram .nc-8 { animation-delay: 1.4s; }
.conexao-auto-diagram .nc-9 { animation-delay: 1.6s; }
.conexao-auto-diagram .nc-10 { animation-delay: 1.8s; }
.conexao-auto-diagram .nc-11 { animation-delay: 2.0s; }
.conexao-auto-diagram .nc-12 { animation-delay: 2.2s; }
.conexao-auto-diagram .out-1 { animation-delay: 0.1s; }
.conexao-auto-diagram .out-2 { animation-delay: 0.6s; }
.conexao-auto-diagram .out-3 { animation-delay: 1.1s; }
.conexao-auto-diagram .out-4 { animation-delay: 1.6s; }

.conexao-auto-diagram .flow {
  stroke-dasharray: 4 4;
  animation: conexao-flow-line 2s linear infinite;
}

.conexao-auto-diagram .flow-1  { animation-delay: 0s; }
.conexao-auto-diagram .flow-2  { animation-delay: 0.15s; }
.conexao-auto-diagram .flow-3  { animation-delay: 0.30s; }
.conexao-auto-diagram .flow-4  { animation-delay: 0.45s; }
.conexao-auto-diagram .flow-5  { animation-delay: 0.60s; }
.conexao-auto-diagram .flow-6  { animation-delay: 0.75s; }
.conexao-auto-diagram .flow-7  { animation-delay: 0.90s; }
.conexao-auto-diagram .flow-8  { animation-delay: 1.05s; }
.conexao-auto-diagram .flow-9  { animation-delay: 1.20s; }
.conexao-auto-diagram .flow-10 { animation-delay: 1.35s; }
.conexao-auto-diagram .flow-11 { animation-delay: 1.50s; }
.conexao-auto-diagram .flow-12 { animation-delay: 1.65s; }

.conexao-auto-diagram .hub-glow {
  animation: conexao-hub-glow-pulse 3s ease-in-out infinite;
}

.conexao-automation__capabilities {
  display: flex;
  flex-direction: column;
  gap: 16px;
  margin-bottom: 32px;
}

.conexao-cap-card {
  padding: 18px 22px;
  background: var(--surface-2);
  border: 1px solid var(--border-faint);
  border-left: 2px solid var(--oinsights-teal-bright);
  border-radius: var(--radius-sm);
}

.conexao-cap-card__title {
  font-size: 14px;
  font-weight: 600;
  color: var(--text-primary);
  margin-bottom: 4px;
}

.conexao-cap-card__desc {
  font-size: 13px;
  color: var(--text-secondary);
  line-height: 1.55;
}

/* ==========================================================================
   AMERICAS PRESENCE
   ========================================================================== */

.conexao-americas-intro {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 80px;
  align-items: start;
  margin-bottom: 64px;
}

.conexao-americas-intro__body {
  padding-top: 48px;
}

.conexao-americas-stats {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 16px;
}

.conexao-stat-panel {
  background: var(--surface-2);
  border: 1px solid var(--border-soft);
  border-radius: var(--radius-lg);
  padding: 40px 28px;
  text-align: left;
  transition: border-color 0.3s ease, transform 0.3s ease;
}

.conexao-stat-panel:hover {
  border-color: var(--accent-hover-border);
  transform: translateY(-3px);
}

.conexao-stat-panel__num {
  font-size: 56px;
  font-weight: 700;
  line-height: 1;
  letter-spacing: -2.5px;
  background: linear-gradient(135deg, var(--oinsights-teal-bright) 0%, var(--oinsights-teal-soft) 100%);
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  background-clip: text;
  margin-bottom: 12px;
}

.conexao-stat-panel__label {
  font-size: 11px;
  color: var(--text-tertiary);
  font-weight: 600;
  letter-spacing: 2px;
  margin-bottom: 8px;
}

.conexao-stat-panel__desc {
  font-size: 13px;
  color: var(--text-secondary);
  line-height: 1.55;
  margin: 0;
}

.conexao-americas-offices {
  margin-top: 40px;
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 18px;
}
.conexao-office-card {
  padding: 26px 28px;
  background: var(--surface-1);
  border: 1px solid var(--border-faint);
  border-radius: var(--radius-lg);
  transition: border-color 0.3s ease, transform 0.3s ease;
}
.conexao-office-card:hover {
  border-color: var(--accent-hover-border);
  transform: translateY(-2px);
}
.conexao-office-card__pill {
  display: inline-block;
  font-size: 10px;
  font-weight: 600;
  letter-spacing: 1.6px;
  color: var(--oinsights-teal-bright);
  background: var(--accent-pill-bg);
  border: 1px solid var(--accent-pill-border);
  border-radius: 99px;
  padding: 5px 12px;
  margin-bottom: 16px;
}
.conexao-office-card__name {
  font-family: 'Poppins', sans-serif;
  font-size: 17px;
  font-weight: 600;
  letter-spacing: -0.2px;
  color: var(--text-primary);
  line-height: 1.35;
  margin-bottom: 10px;
}
.conexao-office-card__loc {
  display: flex;
  align-items: center;
  gap: 7px;
  font-size: 14px;
  color: var(--text-secondary);
}
.conexao-office-card__loc svg { color: var(--oinsights-teal-bright); flex: 0 0 auto; }
@media (max-width: 700px) {
  .conexao-americas-offices { grid-template-columns: 1fr; }
}

/* ==========================================================================
   CERTIFICATIONS
   ========================================================================== */

.conexao-certs-grid {
  display: grid;
  grid-template-columns: repeat(5, 1fr);
  gap: 16px;
}

.conexao-cert-tile {
  background: var(--surface-3);
  border: 1px solid var(--border-soft);
  border-radius: var(--radius-md);
  padding: 28px 16px;
  text-align: center;
}

.conexao-cert-tile__title {
  font-size: 22px;
  font-weight: 800;
  color: var(--text-primary);
  margin-bottom: 6px;
}

.conexao-cert-tile__sub {
  font-size: 11px;
  color: var(--text-secondary);
}

.conexao-certs-caption {
  text-align: center;
  font-size: 12px;
  color: var(--text-tertiary);
  margin-top: 28px;
  font-style: italic;
}

/* ==========================================================================
   FOOTER
   ========================================================================== */

.conexao-footer {
  background: var(--conexao-navy-deep);
  color: var(--text-tertiary);
  padding: var(--space-3xl) var(--space-2xl) var(--space-xl);
  border-top: 1px solid var(--border-faint);
}

.conexao-footer__container {
  max-width: var(--container-max);
  margin: 0 auto;
}

.conexao-footer__grid {
  display: grid;
  grid-template-columns: 2fr 1fr 1fr 1fr 1fr;
  gap: var(--space-2xl);
  padding-bottom: var(--space-2xl);
  border-bottom: 1px solid var(--border-faint);
}

.conexao-footer__heading {
  font-size: 11px;
  font-weight: 700;
  color: var(--text-primary);
  letter-spacing: 1.5px;
  margin-bottom: var(--space-md);
}

.conexao-footer__list {
  display: flex;
  flex-direction: column;
  gap: 10px;
  font-size: 13px;
  color: var(--text-secondary);
  list-style: none;
  padding: 0;
  margin: 0;
}

.conexao-footer__list a {
  color: var(--text-secondary);
  transition: color 0.2s ease;
}

.conexao-footer__list a:hover {
  color: var(--text-primary);
}

.conexao-footer__brand-mark {
  font-weight: 700;
  font-size: 14px;
  color: var(--text-primary);
  letter-spacing: 2px;
  margin-bottom: 4px;
}

.conexao-footer__brand-mark-sub {
  font-weight: 500;
  font-size: 10px;
  color: var(--text-secondary);
  letter-spacing: 1.5px;
  margin-bottom: 20px;
}
.conexao-footer__tagline {
  font-family: 'Poppins', sans-serif;
  font-weight: 600;
  font-size: 14px;
  line-height: 1.4;
  color: var(--oinsights-teal-bright);
  margin: -8px 0 18px;
}

.conexao-footer__bottom {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding-top: 28px;
  font-size: 12px;
  color: var(--text-tertiary);
  flex-wrap: wrap;
  gap: 16px;
}

/* ==========================================================================
   RESPONSIVE
   ========================================================================== */

@media (max-width: 1024px) {
  .conexao-product-grid { grid-template-columns: 1fr; }
  .conexao-vert-grid { grid-template-columns: repeat(2, 1fr); }
  .conexao-vert-intro,
  .conexao-americas-intro,
  .conexao-automation { grid-template-columns: 1fr; gap: 40px; }
  .conexao-vert-intro__lead,
  .conexao-americas-intro__body { padding-top: 0; }
  .conexao-partnerships,
  .conexao-americas-stats { grid-template-columns: 1fr; }
  .conexao-certs-grid { grid-template-columns: repeat(2, 1fr); }
  .conexao-footer__grid { grid-template-columns: 1fr 1fr; }
  .conexao-h1 { font-size: 52px; letter-spacing: -2px; }
  .conexao-h2 { font-size: 38px; letter-spacing: -1.5px; }
  .conexao-h2--md { font-size: 34px; }
  .conexao-h2--sm { font-size: 30px; }
}

@media (max-width: 640px) {
  .conexao-section { padding: 80px 24px; }
  .conexao-section--tall { padding: 96px 24px; }
  .conexao-h1 { font-size: 40px; letter-spacing: -1.5px; }
  .conexao-h2 { font-size: 30px; letter-spacing: -1px; }
  .conexao-vert-grid { grid-template-columns: 1fr; }
  .conexao-certs-grid { grid-template-columns: 1fr; }
  .conexao-footer__grid { grid-template-columns: 1fr; }
}

/* ==========================================================================
   MILESTONE PRODUCT PAGE
   Co-branded with Milestone blue accent. Scoped to .conexao-page--milestone
   so accent overrides don't leak into the rest of the site.
   ========================================================================== */

.conexao-page--milestone {
  --mp-accent: var(--milestone-blue);
  --mp-accent-soft: rgba(125, 193, 240, 0.1);
  --mp-accent-border: rgba(125, 193, 240, 0.25);
  --mp-accent-bg: rgba(125, 193, 240, 0.04);
  --mp-accent-glow: rgba(125, 193, 240, 0.45);
}

/* Hero partner badge */
.mp-hero-badge {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  padding: 10px 18px;
  background: var(--mp-accent-soft);
  border: 1px solid var(--mp-accent-border);
  border-radius: var(--radius-pill);
  font-size: 12px;
  font-weight: 600;
  color: var(--mp-accent);
  margin-bottom: 32px;
  letter-spacing: 1px;
}

.mp-hero-badge::before {
  content: '';
  width: 6px;
  height: 6px;
  background: var(--mp-accent);
  border-radius: 50%;
  box-shadow: 0 0 8px var(--mp-accent);
}

/* Eyebrow override (use Milestone accent) */
.conexao-page--milestone .conexao-eyebrow {
  color: var(--mp-accent);
  background: var(--mp-accent-soft);
  border-color: var(--mp-accent-border);
}

/* Page-level shimmer text (Milestone-blue based) */
.mp-shimmer {
  background: linear-gradient(90deg, #7DC1F0 0%, #5DCAA5 30%, #7DBDC6 50%, #5DCAA5 70%, #7DC1F0 100%);
  background-size: 200% 100%;
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  background-clip: text;
  animation: conexao-shimmer 6s ease-in-out infinite;
  padding-bottom: 0.18em;
  margin-bottom: -0.18em;
}

/* Milestone-tinted glow blobs */
.mp-glow-blue {
  background: radial-gradient(circle, rgba(125, 193, 240, 0.2), transparent 60%);
}


/* KEY BENEFITS cards */
.mp-kb-header {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 64px;
  align-items: end;
  margin-bottom: 56px;
}

.mp-kb-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 20px;
}

.mp-kb-card {
  background: var(--surface-2);
  border: 1px solid var(--border-soft);
  border-radius: var(--radius-xl);
  padding: 36px 32px;
  position: relative;
  overflow: hidden;
  transition: background 0.3s ease, border-color 0.3s ease, transform 0.4s cubic-bezier(0.16, 1, 0.3, 1);
}

.mp-kb-card:hover {
  background: var(--surface-hover);
  border-color: var(--mp-accent-border);
  transform: translateY(-4px);
}

.mp-kb-card__number {
  position: absolute;
  top: 28px;
  right: 32px;
  font-size: 48px;
  font-weight: 800;
  line-height: 1;
  color: var(--mp-accent);
  opacity: 0.15;
  letter-spacing: -2px;
}

.mp-kb-card__icon {
  width: 36px;
  height: 36px;
  color: var(--mp-accent);
  margin-bottom: 24px;
}

.mp-kb-card__icon svg {
  width: 100%;
  height: 100%;
  stroke: currentColor;
  stroke-width: 1.6;
  fill: none;
  stroke-linecap: round;
  stroke-linejoin: round;
}

.mp-kb-card__headline {
  font-size: 22px;
  font-weight: 700;
  color: var(--text-primary);
  letter-spacing: -0.5px;
  margin: 0 0 8px;
  line-height: 1.2;
}

.mp-kb-card__hook {
  font-size: 16px;
  font-weight: 500;
  color: var(--mp-accent);
  margin: 0 0 16px;
  line-height: 1.4;
}

.mp-kb-card__body {
  font-size: 14px;
  color: var(--text-secondary);
  line-height: 1.65;
  margin: 0;
}

/* CAPABILITIES — what you can deploy */
.mp-cap-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 16px;
}

.mp-cap-card {
  background: var(--surface-2);
  border: 1px solid var(--border-soft);
  border-radius: var(--radius-lg);
  padding: 32px 28px;
  transition: background 0.3s ease, border-color 0.3s ease, transform 0.3s ease;
  position: relative;
}

.mp-cap-card:hover {
  background: var(--surface-hover);
  border-color: var(--mp-accent-border);
  transform: translateY(-3px);
}

.mp-cap-card__icon {
  width: 32px;
  height: 32px;
  color: var(--mp-accent);
  margin-bottom: 20px;
}

.mp-cap-card__icon svg {
  width: 100%;
  height: 100%;
  stroke: currentColor;
  stroke-width: 1.6;
  fill: none;
  stroke-linecap: round;
  stroke-linejoin: round;
}

.mp-cap-card__title {
  font-size: 18px;
  font-weight: 700;
  color: var(--text-primary);
  letter-spacing: -0.4px;
  margin: 0 0 8px;
}

.mp-cap-card__desc {
  font-size: 13px;
  color: var(--text-secondary);
  line-height: 1.6;
  margin: 0;
}

.mp-cap-breadth {
  margin-top: 40px;
  padding: 28px 36px;
  background: var(--surface-1);
  border: 1px dashed var(--mp-accent-border);
  border-radius: var(--radius-md);
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 32px;
  flex-wrap: wrap;
}

.mp-cap-breadth__text {
  font-size: 15px;
  color: var(--text-secondary);
  line-height: 1.5;
  flex: 1;
  min-width: 320px;
}

.mp-cap-breadth__text strong {
  color: var(--text-primary);
  font-weight: 600;
}

.mp-cap-breadth__link {
  color: var(--mp-accent);
  font-size: 13px;
  font-weight: 600;
  text-decoration: none;
  white-space: nowrap;
}

.mp-cap-breadth__link:hover {
  text-decoration: underline;
}


/* MODULES — individual deep-dive sections */
.mp-module {
  padding: var(--space-6xl) var(--space-2xl);
  border-top: 1px solid var(--border-faint);
  position: relative;
  overflow: hidden;
}

.mp-module--tint {
  background: rgba(125, 193, 240, 0.015);
}

.mp-module__tagline {
  display: inline-block;
  font-size: 11px;
  font-weight: 700;
  color: var(--mp-accent);
  letter-spacing: 2.5px;
  margin-bottom: 16px;
}

.mp-module__title {
  font-size: 40px;
  line-height: 1.1;
  font-weight: 700;
  letter-spacing: -1.4px;
  color: var(--text-primary);
  margin: 0 0 20px;
}

.mp-module__hook {
  font-size: 17px;
  color: var(--text-secondary);
  line-height: 1.65;
  margin: 0 0 48px;
  max-width: 960px;
}

.mp-feature-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 16px;
}

.mp-feature-grid--4 {
  grid-template-columns: repeat(4, 1fr);
}

.mp-feature-card {
  padding: 24px 22px;
  background: var(--surface-2);
  border: 1px solid var(--border-soft);
  border-radius: var(--radius-md);
  transition: background 0.3s ease, border-color 0.3s ease, transform 0.3s ease;
}

.mp-feature-card:hover {
  background: var(--surface-hover);
  border-color: var(--mp-accent-border);
  transform: translateY(-3px);
}

.mp-feature-card__icon {
  width: 28px;
  height: 28px;
  color: var(--mp-accent);
  margin-bottom: 16px;
}

.mp-feature-card__icon svg {
  width: 100%;
  height: 100%;
  stroke: currentColor;
  stroke-width: 1.7;
  fill: none;
  stroke-linecap: round;
  stroke-linejoin: round;
}

.mp-feature-card__title {
  font-size: 15px;
  font-weight: 600;
  color: var(--text-primary);
  margin: 0 0 6px;
}

.mp-feature-card__desc {
  font-size: 13px;
  color: var(--text-secondary);
  line-height: 1.55;
  margin: 0;
}

/* USE CASES */
.mp-uc-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 14px;
}

.mp-uc-tile {
  padding: 28px 22px;
  background: var(--surface-2);
  border: 1px solid var(--border-soft);
  border-radius: var(--radius-md);
  transition: border-color 0.3s ease, transform 0.3s ease;
}

.mp-uc-tile:hover {
  border-color: var(--mp-accent-border);
  transform: translateY(-3px);
}

.mp-uc-tile__icon {
  width: 24px;
  height: 24px;
  color: var(--mp-accent);
  margin-bottom: 14px;
}

.mp-uc-tile__icon svg {
  width: 100%;
  height: 100%;
  stroke: currentColor;
  stroke-width: 1.6;
  fill: none;
  stroke-linecap: round;
  stroke-linejoin: round;
}

.mp-uc-tile__title {
  font-size: 14px;
  font-weight: 600;
  color: var(--text-primary);
  margin: 0 0 6px;
}

.mp-uc-tile__desc {
  font-size: 12px;
  color: var(--text-secondary);
  line-height: 1.5;
  margin: 0;
}

/* CASE STUDIES */
.mp-cs-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 16px;
}

.mp-cs-card {
  background: var(--surface-2);
  border: 1px solid var(--border-soft);
  border-radius: var(--radius-lg);
  overflow: hidden;
  text-decoration: none;
  color: inherit;
  display: flex;
  flex-direction: column;
  transition: transform 0.3s ease, border-color 0.3s ease;
}

.mp-cs-card:hover {
  transform: translateY(-4px);
  border-color: var(--mp-accent-border);
}

.mp-cs-card__image {
  aspect-ratio: 16 / 10;
  background: linear-gradient(135deg, #0a1230 0%, #1a2545 100%);
  position: relative;
  overflow: hidden;
}

.mp-cs-card__image::after {
  content: '';
  position: absolute;
  inset: 0;
  background: radial-gradient(circle at 70% 30%, rgba(125, 193, 240, 0.15), transparent 60%);
}

.mp-cs-card__image-label {
  position: absolute;
  top: 16px;
  left: 16px;
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 1.5px;
  color: var(--mp-accent);
  background: rgba(5, 7, 26, 0.7);
  padding: 6px 10px;
  border-radius: var(--radius-pill);
  border: 1px solid var(--mp-accent-border);
  z-index: 1;
}

.mp-cs-card__body {
  padding: 24px 22px;
  flex: 1;
  display: flex;
  flex-direction: column;
}

.mp-cs-card__title {
  font-size: 17px;
  font-weight: 700;
  color: var(--text-primary);
  margin: 0 0 10px;
  line-height: 1.3;
}

.mp-cs-card__desc {
  font-size: 13px;
  color: var(--text-secondary);
  line-height: 1.55;
  margin: 0 0 16px;
  flex: 1;
}

.mp-cs-card__meta {
  font-size: 11px;
  color: var(--text-tertiary);
  font-weight: 600;
  letter-spacing: 1.5px;
  display: flex;
  justify-content: space-between;
  padding-top: 14px;
  border-top: 1px solid var(--border-faint);
}

.mp-cs-card__meta-arrow {
  color: var(--mp-accent);
}

/* BROCHURE DOWNLOAD */
/* BROCHURE BAND (inline strip — replaces v2.8 two-column cover layout) */
.conexao-section--brochure-band {
  padding-top: 48px;
  padding-bottom: 48px;
}

.mp-brochure-band {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 24px;
  background: linear-gradient(135deg, rgba(125, 193, 240, 0.06) 0%, rgba(125, 193, 240, 0.01) 100%);
  border: 1px solid var(--mp-accent-border);
  border-radius: 14px;
  padding: 20px 28px;
}

.mp-brochure-band__text {
  display: flex;
  align-items: baseline;
  gap: 16px;
  flex-wrap: wrap;
  min-width: 0;
}

.mp-brochure-band__label {
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 2px;
  color: var(--mp-accent);
  flex-shrink: 0;
}

.mp-brochure-band__line {
  font-size: 15px;
  color: var(--text-primary);
  line-height: 1.4;
}

.mp-brochure-band__btn {
  flex-shrink: 0;
}

.mp-btn--accent {
  background: var(--mp-accent);
  color: var(--conexao-navy-deep);
}

.mp-btn--accent:hover {
  background: var(--mp-accent); /* solid fallback for color-mix */
  background: color-mix(in srgb, var(--mp-accent) 85%, #000);
  color: var(--conexao-navy-deep);
  transform: translateY(-1px);
  box-shadow: 0 8px 24px var(--mp-accent-glow);
}

/* FAQ */
.mp-faq-list {
  display: flex;
  flex-direction: column;
  gap: 12px;
}

.mp-faq-item {
  background: var(--surface-2);
  border: 1px solid var(--border-soft);
  border-radius: var(--radius-md);
  padding: 24px 28px;
  transition: background 0.3s ease;
  cursor: pointer;
}

.mp-faq-item:hover {
  background: var(--surface-hover);
}

.mp-faq-item__q {
  display: flex;
  justify-content: space-between;
  align-items: center;
  font-size: 15px;
  font-weight: 600;
  color: var(--text-primary);
}

.mp-faq-item__toggle {
  color: var(--mp-accent);
  font-weight: 700;
  font-size: 18px;
  transition: transform 0.3s ease;
}

.mp-faq-item__a {
  font-size: 13px;
  color: var(--text-secondary);
  line-height: 1.65;
  margin-top: 14px;
  display: none;
}

.mp-faq-item.is-open .mp-faq-item__a {
  display: block;
}

.mp-faq-item.is-open .mp-faq-item__toggle {
  transform: rotate(45deg);
}

/* Responsive */
@media (max-width: 1024px) {


  .mp-kb-header,
  .mp-kb-grid {
    grid-template-columns: 1fr;
    gap: 32px;
  }
  .mp-brochure-band {
    flex-direction: column;
    align-items: flex-start;
    gap: 16px;
  }
  .mp-cap-grid,
  .mp-feature-grid {
    grid-template-columns: repeat(2, 1fr);
  }
  .mp-uc-grid {
    grid-template-columns: repeat(2, 1fr);
  }
  .mp-cs-grid {
    grid-template-columns: 1fr;
  }
  .mp-module__title {
    font-size: 32px;
  }
}

@media (max-width: 640px) {
  .mp-cap-grid,
  .mp-feature-grid,
  .mp-uc-grid {
    grid-template-columns: 1fr;
  }
}

/* ==========================================================================
   MILESTONE INTEGRATION LAYER (v2.5)
   Protocol diagram with O-Insights hub at top, 5 columns of devices below.
   Real Lucide icons, edge-to-edge connection lines, traveling data packets.
   ========================================================================== */

@keyframes mp-ring-emit {
  0%   { transform: scale(1);   opacity: 0.5; }
  100% { transform: scale(1.55); opacity: 0;   }
}
@keyframes mp-hub-breathe {
  0%, 100% { transform: scale(1);    filter: drop-shadow(0 0 24px rgba(125, 193, 240, 0.32)); }
  50%      { transform: scale(1.025); filter: drop-shadow(0 0 36px rgba(125, 193, 240, 0.55)); }
}
@keyframes mp-line-flow {
  0%   { stroke-dashoffset:  0; }
  100% { stroke-dashoffset: -28; }
}
@keyframes mp-col-emerge {
  from { opacity: 0; transform: translateY(30px); }
  to   { opacity: 1; transform: translateY(0);    }
}
@keyframes mp-icon-nudge {
  from { transform: rotate(-8deg) scale(1);    }
  to   { transform: rotate(0deg)  scale(1.05); }
}

/* SECTION FRAME ---------------------------------------------------------- */

.mp-integration-frame {
  background: linear-gradient(180deg, rgba(255, 255, 255, 0.02) 0%, rgba(255, 255, 255, 0.005) 100%);
  border: 1px solid rgba(255, 255, 255, 0.08);
  border-radius: 24px;
  padding: 48px 32px;
  position: relative;
  overflow: hidden;
}

/* Soft grid background that fades out at edges (decorative depth cue) */
.mp-integration-frame::before {
  content: '';
  position: absolute;
  inset: 0;
  background-image:
    linear-gradient(rgba(255, 255, 255, 0.02) 1px, transparent 1px),
    linear-gradient(90deg, rgba(255, 255, 255, 0.02) 1px, transparent 1px);
  background-size: 40px 40px;
  -webkit-mask-image: radial-gradient(ellipse at center top, black 35%, transparent 80%);
  mask-image: radial-gradient(ellipse at center top, black 35%, transparent 80%);
  pointer-events: none;
}

/* HUB -------------------------------------------------------------------- */

.mp-protocol-hub-wrap {
  display: flex;
  justify-content: center;
  position: relative;
  z-index: 5;
}

.mp-protocol-hub {
  width: 200px;
  height: 200px;
  border-radius: 50%;
  background: radial-gradient(circle, #0d1438 0%, #050817 100%);
  border: 2px solid rgba(125, 193, 240, 0.7);
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  position: relative;
  animation: mp-hub-breathe 4s ease-in-out infinite;
}

.mp-protocol-hub-ring {
  position: absolute;
  inset: -2px;
  border-radius: 50%;
  border: 2px solid rgba(125, 193, 240, 0.4);
  animation: mp-ring-emit 3s ease-out infinite;
  pointer-events: none;
}
.mp-protocol-hub-ring--delayed {
  animation-delay: 1.5s;
}

.mp-protocol-hub-inner {
  width: 92px;
  height: 92px;
  border-radius: 50%;
  background: linear-gradient(135deg, rgba(125, 193, 240, 0.1) 0%, rgba(125, 193, 240, 0.02) 100%);
  border: 1px solid rgba(125, 193, 240, 0.3);
  display: flex;
  align-items: center;
  justify-content: center;
  margin-bottom: 12px;
}

.mp-protocol-hub-mark {
  color: #FFFFFF;
  filter: drop-shadow(0 0 12px rgba(125, 193, 240, 0.6));
}
.mp-protocol-hub-mark svg {
  display: block;
}

.mp-protocol-hub-label {
  font-family: var(--font-family-display, 'Poppins', sans-serif);
  font-size: 13px;
  font-weight: 800;
  letter-spacing: 2.5px;
  color: #FFFFFF;
}
.mp-protocol-hub-sublabel {
  font-size: 9px;
  letter-spacing: 2px;
  color: var(--milestone-blue, #7DC1F0);
  margin-top: 3px;
  font-weight: 600;
}

/* FLOW REGION (lines + packets between hub and columns) ------------------- */

.mp-protocol-flow {
  position: relative;
  height: 80px;
  margin-top: -20px;
  display: block;
  width: 100%;
}
.mp-protocol-flow > svg {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  overflow: visible;
  display: block;
}
.mp-protocol-flow-line {
  /* Stroke + dasharray are set inline in HTML for robustness;
     CSS provides animation only */
  animation: mp-line-flow 2s linear infinite;
}
/* Packets now rendered as SVG <circle> inside the .mp-protocol-flow SVG itself,
   animated with animateMotion (shares the viewBox coordinate space with the lines).
   Old .mp-protocol-packet div-based approach removed in v2.8 — it used CSS offset-path
   with absolute pixel coordinates which diverged from the SVG's stretched viewBox. */

/* COLUMNS ---------------------------------------------------------------- */

.mp-protocol-columns {
  display: grid;
  grid-template-columns: repeat(5, 1fr);
  gap: 16px;
  position: relative;
  z-index: 4;
}

.mp-protocol-col {
  background: rgba(255, 255, 255, 0.025);
  border: 1px solid rgba(255, 255, 255, 0.08);
  border-radius: 16px;
  overflow: hidden;
  display: flex;
  flex-direction: column;
  transition: all 0.4s cubic-bezier(0.16, 1, 0.3, 1);
  opacity: 0;
  animation: mp-col-emerge 0.7s cubic-bezier(0.22, 1, 0.36, 1) forwards;
}
.mp-protocol-col--1 { animation-delay: 0.10s; }
.mp-protocol-col--2 { animation-delay: 0.20s; }
.mp-protocol-col--3 { animation-delay: 0.30s; }
.mp-protocol-col--4 { animation-delay: 0.40s; }
.mp-protocol-col--5 { animation-delay: 0.50s; }

.mp-protocol-col:hover {
  background: rgba(255, 255, 255, 0.04);
  border-color: rgba(125, 193, 240, 0.5);
  transform: translateY(-6px);
  box-shadow: 0 20px 50px -20px rgba(125, 193, 240, 0.4);
}

.mp-protocol-head {
  padding: 18px 14px;
  background: linear-gradient(180deg, rgba(125, 193, 240, 0.18) 0%, rgba(125, 193, 240, 0.04) 100%);
  border-bottom: 1px solid rgba(125, 193, 240, 0.2);
  text-align: center;
  position: relative;
}
.mp-protocol-head::before {
  content: '';
  position: absolute;
  top: 0;
  left: 50%;
  transform: translateX(-50%);
  width: 40px;
  height: 2px;
  background: var(--milestone-blue, #7DC1F0);
  border-radius: 0 0 4px 4px;
}
.mp-protocol-name {
  font-family: var(--font-family-display, 'Poppins', sans-serif);
  font-size: 14px;
  font-weight: 700;
  color: #FFFFFF;
  letter-spacing: 1.5px;
  margin: 0 0 4px;
}
.mp-protocol-cat {
  font-size: 9px;
  color: var(--milestone-blue, #7DC1F0);
  letter-spacing: 2px;
  font-weight: 700;
  text-transform: uppercase;
}

/* DEVICE ROWS ------------------------------------------------------------ */

.mp-protocol-devices {
  padding: 16px 14px;
  display: flex;
  flex-direction: column;
  gap: 8px;
  flex: 1;
}

.mp-device {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 10px 12px;
  background: rgba(255, 255, 255, 0.02);
  border: 1px solid rgba(255, 255, 255, 0.05);
  border-radius: 10px;
  transition: all 0.25s ease;
  position: relative;
  overflow: hidden;
}
.mp-device::before {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  bottom: 0;
  width: 2px;
  background: rgba(125, 193, 240, 0);
  transition: background 0.25s ease;
}
.mp-device:hover {
  background: rgba(125, 193, 240, 0.08);
  border-color: rgba(125, 193, 240, 0.3);
  transform: translateX(3px);
}
.mp-device:hover::before {
  background: var(--milestone-blue, #7DC1F0);
}
.mp-device:hover .mp-device-icon {
  color: #B8DDF7;
  animation: mp-icon-nudge 0.5s cubic-bezier(0.16, 1, 0.3, 1) forwards;
}
.mp-device-icon {
  width: 20px;
  height: 20px;
  color: var(--milestone-blue, #7DC1F0);
  flex-shrink: 0;
  transition: color 0.3s ease;
}
.mp-device-icon svg {
  width: 100%;
  height: 100%;
  stroke: currentColor;
  stroke-width: 1.8;
  fill: none;
  stroke-linecap: round;
  stroke-linejoin: round;
}
.mp-device-name {
  font-size: 12.5px;
  color: #E8EEF8;
  font-weight: 500;
}

.mp-protocol-caption {
  text-align: center;
  font-size: 13px;
  color: var(--text-tertiary, #6677AA);
  margin-top: 28px;
  font-style: italic;
  letter-spacing: 0.3px;
}

/* RESPONSIVE ------------------------------------------------------------- */

@media (max-width: 1024px) {
  .mp-protocol-columns { grid-template-columns: repeat(2, 1fr); gap: 12px; }
}
@media (max-width: 600px) {
  .mp-protocol-columns { grid-template-columns: 1fr; }
  .mp-protocol-flow    { display: none; }
}

/* REDUCED MOTION --------------------------------------------------------- */

@media (prefers-reduced-motion: reduce) {
  .mp-protocol-hub,
  .mp-protocol-hub-ring,
  .mp-protocol-flow-line,
  .mp-protocol-col {
    animation: none !important;
  }
  /* Stop animateMotion packets too */
  .mp-protocol-flow svg circle animateMotion {
    /* Browsers respect this via media query attribute support, but as a fallback we hide them */
  }
  .mp-protocol-flow svg circle {
    display: none;
  }
  .mp-protocol-col {
    opacity: 1;
    transform: none;
  }
}

/* ============================================================================
   v2.6 ADDITIONS — Glass hero frame, right-rail nav, 12th UC CTA tile
   ============================================================================ */

/* ====== FONT CONSISTENCY ====== */
/* Body uses Inter. Display headings explicitly use Poppins. */
.conexao-page--milestone {
	font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
}
.conexao-page--milestone .conexao-h1,
.conexao-page--milestone .conexao-h2,
.conexao-page--milestone .conexao-h3,
.conexao-page--milestone .mp-module__title,
.conexao-page--milestone .mp-protocol-hub-label {
	font-family: 'Poppins', sans-serif;
}

/* ====== GLASSMORPHIC WINDOWS-STYLE HERO FRAME ====== */
.mp-glass-stage {
	position: relative;
	max-width: 1280px;
	margin: 80px auto 0;
	padding: 0 16px;
	isolation: isolate;
}

.mp-glass-frame {
	position: relative;
	z-index: 2;
	background: rgba(13, 20, 56, 0.94);
	border: 1px solid rgba(255, 255, 255, 0.1);
	border-radius: 14px;
	overflow: hidden;
	box-shadow:
		0 50px 120px -20px rgba(0, 0, 0, 0.7),
		0 0 0 1px rgba(125, 193, 240, 0.18),
		inset 0 1px 0 rgba(255, 255, 255, 0.08);
	transition: transform 0.5s cubic-bezier(0.16, 1, 0.3, 1);
}
.mp-glass-frame:hover {
	transform: translateY(-4px);
}

.mp-glass-titlebar {
	display: flex;
	align-items: center;
	height: 40px;
	padding: 0 0 0 16px;
	background: linear-gradient(180deg, rgba(255, 255, 255, 0.06) 0%, rgba(255, 255, 255, 0.02) 100%);
	border-bottom: 1px solid rgba(255, 255, 255, 0.06);
	position: relative;
}
.mp-glass-titlebar::before {
	content: '';
	position: absolute;
	inset: 0;
	background: linear-gradient(90deg, transparent 0%, rgba(125, 193, 240, 0.08) 50%, transparent 100%);
	pointer-events: none;
}

.mp-glass-titlebar__mark {
	width: 18px;
	height: 18px;
	color: #7DC1F0;
	margin-right: 10px;
	flex-shrink: 0;
	filter: drop-shadow(0 0 6px rgba(125, 193, 240, 0.6));
}
.mp-glass-titlebar__mark svg { display: block; width: 100%; height: 100%; }

.mp-glass-titlebar__title {
	font-family: 'Inter', sans-serif;
	font-size: 12px;
	font-weight: 500;
	color: #E8EEF8;
	letter-spacing: 0.2px;
}
.mp-glass-titlebar__spacer { flex: 1; }

.mp-glass-window-controls {
	display: flex;
	height: 100%;
}
.mp-glass-window-btn {
	width: 46px;
	height: 100%;
	display: flex;
	align-items: center;
	justify-content: center;
	cursor: pointer;
	transition: background 0.2s ease, color 0.2s ease;
	color: rgba(232, 238, 248, 0.6);
}
.mp-glass-window-btn:hover {
	background: rgba(255, 255, 255, 0.06);
	color: #E8EEF8;
}
.mp-glass-window-btn--close:hover {
	background: rgba(220, 56, 56, 0.7);
	color: #fff;
}
.mp-glass-window-btn svg {
	width: 10px;
	height: 10px;
	stroke-width: 1.3;
}

.mp-glass-img {
	display: block;
	width: 100%;
	height: auto;
	position: relative;
	z-index: 1;
}

.mp-glass-live {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	font-family: 'Inter', sans-serif;
	font-size: 10px;
	font-weight: 600;
	color: #5DCAA5;
	letter-spacing: 1.5px;
	margin-right: 16px;
}
.mp-glass-live::before {
	content: '';
	width: 6px; height: 6px;
	background: #5DCAA5;
	border-radius: 50%;
	box-shadow: 0 0 8px #5DCAA5;
	animation: mp-pulse-soft 2s ease-in-out infinite;
}
@keyframes mp-pulse-soft {
	0%, 100% { opacity: 0.5; }
	50% { opacity: 1; }
}

/* ============================================================
   HERO SLIDESHOW (inside .mp-glass-frame) — v3.29.0
   ============================================================ */
.mp-glass-count {
	font-family: 'Inter', sans-serif;
	font-size: 10.5px;
	font-weight: 600;
	letter-spacing: 1px;
	color: rgba(232, 238, 248, 0.55);
	margin-right: 16px;
}

.mp-slides {
	position: relative;
	overflow: hidden;
	background: #070c1d;
}
.mp-slides__track {
	display: flex;
	transition: transform 0.55s cubic-bezier(0.16, 1, 0.3, 1);
	will-change: transform;
}
.mp-slide {
	position: relative;
	flex: 0 0 100%;
	aspect-ratio: 16 / 9;
	overflow: hidden;
}
.mp-slide__img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
}
.mp-slide__ph {
	position: absolute;
	inset: 0;
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	gap: 14px;
	background: #0c1430;
	background: radial-gradient(120% 130% at 25% 15%, rgba(93,202,165,0.3), #070c1d 70%) /* fallback */;
	background: radial-gradient(120% 130% at 25% 15%, color-mix(in srgb, var(--acc, #7DC1F0) 22%, #0c1430), #070c1d 70%);
	color: rgba(226, 238, 252, 0.5);
}
.mp-slide__ph-text {
	font-family: 'Inter', sans-serif;
	font-size: 12.5px;
	font-weight: 500;
	letter-spacing: 0.3px;
}
.mp-slide__ph::after {
	content: "";
	position: absolute;
	inset: 0;
	pointer-events: none;
	background:
		linear-gradient(90deg, rgba(255, 255, 255, 0.03) 1px, transparent 1px) 0 0 / 64px 64px,
		linear-gradient(rgba(255, 255, 255, 0.03) 1px, transparent 1px) 0 0 / 64px 64px;
	-webkit-mask-image: linear-gradient(180deg, transparent, #000 40%);
	mask-image: linear-gradient(180deg, transparent, #000 40%);
}
.mp-slide__cap {
	position: absolute;
	left: 16px;
	bottom: 16px;
	z-index: 3;
	display: inline-flex;
	align-items: center;
	gap: 8px;
	padding: 7px 13px;
	background: rgba(5, 7, 26, 0.72);
	border: 1px solid rgba(255, 255, 255, 0.14);
	border-radius: 100px;
	font-family: 'Inter', sans-serif;
	font-size: 12px;
	font-weight: 600;
	letter-spacing: 0.2px;
	color: #E8EEF8;
}
.mp-slide__cap-dot {
	width: 7px;
	height: 7px;
	border-radius: 50%;
	background: var(--acc, #7DC1F0);
	box-shadow: 0 0 8px var(--acc, #7DC1F0);
	flex: 0 0 auto;
}
.mp-slides__arrow {
	position: absolute;
	top: 50%;
	transform: translateY(-50%);
	z-index: 4;
	width: 40px;
	height: 40px;
	padding: 0;
	border: 1px solid rgba(255, 255, 255, 0.16);
	cursor: pointer;
	display: flex;
	align-items: center;
	justify-content: center;
	border-radius: 50%;
	background: rgba(5, 7, 26, 0.6);
	color: #E8EEF8;
	transition: background 0.2s ease, border-color 0.2s ease;
}
.mp-slides__arrow:hover {
	background: rgba(5, 7, 26, 0.88);
	border-color: rgba(93,202,165,0.3) /* fallback */;
	border-color: color-mix(in srgb, var(--acc, #7DC1F0) 55%, transparent);
}
.mp-slides__arrow--prev { left: 14px; }
.mp-slides__arrow--next { right: 14px; }
.mp-slides__arrow > span { display: flex; }
.mp-slides__arrow svg { width: 18px; height: 18px; }
.mp-slides__dots {
	position: absolute;
	left: 0;
	right: 0;
	bottom: 14px;
	z-index: 4;
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 8px;
}
.mp-slides__dot {
	width: 8px;
	height: 8px;
	padding: 0;
	border: 0;
	cursor: pointer;
	border-radius: 50%;
	background: rgba(255, 255, 255, 0.28);
	transition: background 0.2s ease, width 0.2s ease;
}
.mp-slides__dot.is-active {
	width: 22px;
	border-radius: 100px;
	background: var(--acc, #7DC1F0);
}

@media (max-width: 768px) {
	.mp-glass-live { display: none; }
	.mp-glass-count { display: none; }
	.mp-glass-titlebar__title { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
	.mp-slides__arrow { width: 34px; height: 34px; }
	.mp-slides__arrow--prev { left: 8px; }
	.mp-slides__arrow--next { right: 8px; }
	.mp-slide__cap { left: 10px; bottom: 10px; font-size: 11px; padding: 6px 11px; }
	.mp-glass-stage { margin-top: 56px; }
	/* Compact the nav lockup on mobile — hide tagline subtitle */
	.conexao-nav__logo-tagline { display: none; }
	.conexao-nav__logo-wordmark { font-size: 15px; letter-spacing: 1.2px; }
	.conexao-nav__logo-icon svg { width: 28px; height: 28px; }
	.conexao-nav__logo-lockup { gap: 8px; }
}

/* ====== RIGHT RAIL DOT NAV (modules) ====== */
.mp-rail {
	position: fixed;
	right: 32px;
	top: 50%;
	transform: translateY(-50%);
	z-index: 50;
	display: flex;
	flex-direction: column;
	gap: 4px;
	padding: 16px 12px;
	opacity: 0;
	pointer-events: none;
	transition: opacity 0.5s ease;
}
.mp-rail.is-visible {
	opacity: 1;
	pointer-events: auto;
}

.mp-rail-link {
	display: flex;
	align-items: center;
	justify-content: flex-end;
	gap: 12px;
	padding: 8px;
	text-decoration: none;
	cursor: pointer;
	position: relative;
}

.mp-rail-label {
	font-size: 12px;
	font-weight: 500;
	color: rgba(232, 238, 248, 0.7);
	white-space: nowrap;
	opacity: 0;
	transform: translateX(8px);
	transition: opacity 0.3s ease, transform 0.3s ease, color 0.3s ease;
	pointer-events: none;
	background: rgba(13, 20, 56, 0.9);
	padding: 4px 10px;
	border-radius: 6px;
	border: 1px solid rgba(255, 255, 255, 0.08);
	backdrop-filter: blur(8px);
	-webkit-backdrop-filter: blur(8px);
}

.mp-rail-dot {
	width: 8px;
	height: 8px;
	border-radius: 50%;
	background: rgba(255, 255, 255, 0.2);
	flex-shrink: 0;
	transition: all 0.3s ease;
	position: relative;
}

.mp-rail-link:hover .mp-rail-dot {
	background: #fff;
	transform: scale(1.3);
}
.mp-rail-link:hover .mp-rail-label {
	opacity: 1;
	transform: translateX(0);
	color: #fff;
}
.mp-rail:hover .mp-rail-label {
	opacity: 1;
	transform: translateX(0);
}

.mp-rail-link.active .mp-rail-dot {
	background: #7DC1F0;
	transform: scale(1.4);
	box-shadow: 0 0 12px rgba(125, 193, 240, 0.7);
}
.mp-rail-link.active .mp-rail-dot::after {
	content: '';
	position: absolute;
	inset: -4px;
	border-radius: 50%;
	border: 1.5px solid rgba(125, 193, 240, 0.5);
	animation: mp-rail-ring-pulse 2.5s ease-in-out infinite;
}
@keyframes mp-rail-ring-pulse {
	0%, 100% { transform: scale(1); opacity: 0.5; }
	50% { transform: scale(1.2); opacity: 0; }
}

.mp-rail-link.active .mp-rail-label {
	color: #7DC1F0;
	font-weight: 600;
}

@media (max-width: 1024px) {
	.mp-rail { display: none; }
}

/* ====== USE CASES — 12th CTA tile variant ====== */
.mp-uc-tile--cta {
	grid-column: 1 / -1;
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	text-align: center;
	text-decoration: none;
	border: 1px dashed var(--mp-accent-border);
	background: var(--mp-accent-bg);
	transition: border-color 0.3s ease, background 0.3s ease, transform 0.3s ease;
}
.mp-uc-tile--cta .mp-uc-tile__title {
	color: var(--mp-accent);
}
.mp-uc-tile--cta:hover {
	border-style: solid;
	border-color: var(--mp-accent);
	background: var(--mp-accent-soft);
	transform: translateY(-2px);
}

/* ============================================================================
   HERO v3.0.0 — cycling phrase, stats strip, constellation backdrop
   ========================================================================= */

/* Cycling phrase mechanism (replaces the old word-reveal hero) */
.conexao-cycle-wrap {
	display: inline-block;
	position: relative;
	vertical-align: top;
	text-align: center;
	line-height: 1.15;
	padding-bottom: 8px;
}
.conexao-cycle-placeholder {
	display: inline-block;
	visibility: hidden;
}
.conexao-cycle-word {
	display: inline-block;
	position: absolute;
	left: 50%;
	top: 0;
	transform: translateX(-50%);
	white-space: nowrap;
	opacity: 0;
	line-height: 1.15;
	padding-bottom: 4px;
	animation: conexao-word-cycle 12s ease-in-out infinite;
	background: linear-gradient(90deg, #7DC1F0 0%, #B8DDF7 20%, #5DCAA5 40%, #7DBDC6 50%, #5DCAA5 60%, #B8DDF7 80%, #7DC1F0 100%);
	background-size: 200% 100%;
	-webkit-background-clip: text;
	-webkit-text-fill-color: transparent;
	background-clip: text;
}
.conexao-cycle-word:nth-of-type(2) { animation-delay: 0s; }
.conexao-cycle-word:nth-of-type(3) { animation-delay: 3s; }
.conexao-cycle-word:nth-of-type(4) { animation-delay: 6s; }
.conexao-cycle-word:nth-of-type(5) { animation-delay: 9s; }

@keyframes conexao-word-cycle {
	0%        { opacity: 0; transform: translate(-50%, 8px); }
	4%, 23%   { opacity: 1; transform: translate(-50%, 0); }
	27%, 100% { opacity: 0; transform: translate(-50%, -8px); }
}

/* Constellation canvas — fills the hero section, subtle backdrop */
.conexao-hero-particles {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	z-index: 1;
	pointer-events: none;
	opacity: 0.85;
}
.conexao-hero-vignette {
	position: absolute;
	inset: 0;
	z-index: 1;
	pointer-events: none;
	background: radial-gradient(ellipse 50% 40% at 50% 45%, rgba(5, 7, 26, 0.35) 0%, transparent 75%);
}

/* Hero stats strip */
.conexao-hero-stats {
	display: flex;
	justify-content: center;
	align-items: stretch;
	gap: 0;
	margin: 60px auto 0;
	width: 100%;
	max-width: 1000px;
	padding: 32px 16px 0;
	border-top: 1px solid var(--border-soft);
	position: relative;
	z-index: 2;
}
.conexao-hero-stat {
	flex: 1;
	padding: 0 24px;
	text-align: center;
	position: relative;
}
.conexao-hero-stat + .conexao-hero-stat::before {
	content: '';
	position: absolute;
	left: 0; top: 8px; bottom: 8px;
	width: 1px;
	background: var(--border-soft);
}
.conexao-hero-stat__value {
	font-family: 'Poppins', sans-serif;
	font-size: 36px;
	font-weight: 700;
	letter-spacing: -1.2px;
	line-height: 1;
	background: linear-gradient(135deg, var(--milestone-blue) 0%, var(--oinsights-teal-bright) 100%);
	-webkit-background-clip: text;
	-webkit-text-fill-color: transparent;
	background-clip: text;
	margin-bottom: 8px;
}
.conexao-hero-stat__label {
	font-size: 11px;
	font-weight: 600;
	letter-spacing: 1.5px;
	text-transform: uppercase;
	color: var(--text-tertiary);
}

@media (max-width: 600px) {
	.conexao-hero-stats { flex-wrap: wrap; gap: 16px; }
	.conexao-hero-stat + .conexao-hero-stat::before { display: none; }
}

/* ============================================================================
   COMPLIANCE CARD v3.0.0 — unified ISO cert + helpers (replaces 5-tile grid)
   ========================================================================= */
.conexao-compliance-header { text-align: center; margin-bottom: 44px; max-width: 760px; margin-left: auto; margin-right: auto; }

.conexao-compliance-card {
	display: grid;
	grid-template-columns: 1.15fr 1px 1fr;
	gap: 40px;
	align-items: center;
	max-width: 1080px;
	margin: 0 auto;
	padding: 40px 48px;
	background: linear-gradient(135deg, rgba(125, 193, 240, 0.06) 0%, rgba(255, 255, 255, 0.02) 100%);
	border: 1px solid rgba(125, 193, 240, 0.18);
	border-radius: 20px;
	position: relative;
	overflow: hidden;
}
.conexao-compliance-card::before {
	content: '';
	position: absolute;
	top: -60px; right: -60px;
	width: 220px; height: 220px;
	border-radius: 50%;
	background: var(--milestone-blue);
	filter: blur(90px);
	opacity: 0.18;
	pointer-events: none;
}
.conexao-compliance-card__cert {
	display: flex;
	align-items: center;
	gap: 24px;
	position: relative;
	z-index: 1;
}
.conexao-compliance-card__divider {
	width: 1px;
	height: 100%;
	min-height: 140px;
	background: linear-gradient(to bottom, transparent, var(--border-soft) 20%, var(--border-soft) 80%, transparent);
}
.conexao-compliance-card__helpers { position: relative; z-index: 1; }
.conexao-compliance-card__badge {
	flex-shrink: 0;
	width: 76px; height: 76px;
	border-radius: 50%;
	background: radial-gradient(circle, rgba(125, 193, 240, 0.15) 0%, rgba(125, 193, 240, 0.04) 100%);
	border: 1.5px solid rgba(125, 193, 240, 0.4);
	display: flex; align-items: center; justify-content: center;
	position: relative;
	color: var(--milestone-blue);
	box-shadow: 0 0 24px rgba(125, 193, 240, 0.2);
}
.conexao-compliance-card__badge::after {
	content: '';
	position: absolute; inset: -8px;
	border-radius: 50%;
	border: 1px solid rgba(125, 193, 240, 0.25);
	animation: conexao-pulse-soft 3s ease-in-out infinite;
}
.conexao-compliance-card__badge svg { width: 38px; height: 38px; }
.conexao-compliance-card__cert-body { flex: 1; }
.conexao-compliance-card__eyebrow {
	font-size: 10px; font-weight: 700; letter-spacing: 1.8px;
	color: var(--text-tertiary); margin-bottom: 8px;
}
.conexao-compliance-card__title {
	font-family: 'Poppins', sans-serif;
	font-size: 26px; font-weight: 700;
	color: #fff; letter-spacing: -0.6px;
	margin-bottom: 10px;
}
.conexao-compliance-card__desc {
	font-size: 14px; line-height: 1.6;
	color: var(--text-secondary);
}
.conexao-compliance-card__chip-list {
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
	margin-top: 14px;
}
.conexao-compliance-chip {
	display: inline-block;
	padding: 8px 14px;
	background: rgba(255, 255, 255, 0.03);
	border: 1px solid var(--border-soft);
	border-radius: 100px;
	font-size: 12px;
	font-weight: 600;
	color: var(--text-secondary);
	letter-spacing: 0.3px;
}
@media (max-width: 1024px) {
	.conexao-compliance-card {
		grid-template-columns: 1fr;
		gap: 32px;
		padding: 32px;
		text-align: center;
	}
	.conexao-compliance-card__cert { flex-direction: column; text-align: center; gap: 20px; }
	.conexao-compliance-card__divider { display: none; }
	.conexao-compliance-card__chip-list { justify-content: center; }
}

/* Partner card status badge (v3.0.0) */
.conexao-partner-card__status {
	display: inline-flex;
	align-items: center;
	gap: 7px;
	padding: 6px 14px;
	margin-bottom: 18px;
	background: rgba(255, 255, 255, 0.04);
	border: 1px solid var(--border-soft);
	border-radius: 100px;
	font-size: 10px;
	font-weight: 700;
	letter-spacing: 1.5px;
	color: var(--text-secondary);
}
.conexao-partner-card__status::before {
	content: '';
	width: 6px; height: 6px;
	border-radius: 50%;
	background: var(--core-mint);
	box-shadow: 0 0 8px rgba(93, 202, 165, 0.8);
}
.conexao-partner-card--niagara .conexao-partner-card__status::before {
	background: var(--niagara-coral);
	box-shadow: 0 0 8px rgba(240, 133, 131, 0.8);
}

@keyframes conexao-pulse-soft {
	0%, 100% { opacity: 0.5; }
	50%      { opacity: 1; }
}

/* ==========================================================================
   LIGHT THEME (v3.2.0)
   Activated by data-conexao-theme="light" on <html>. The dark theme remains
   the default (:root). Most of the UI is token-driven so it flips here via
   the redefined custom properties below; the rules after the token block are
   targeted overrides for the handful of values hardcoded against a dark bg.
   ========================================================================== */
html[data-conexao-theme="light"] {
  --conexao-navy: #00094B;
  --conexao-navy-deep: #F3F5F9;   /* page ground — soft neutral so white cards lift */
  --conexao-navy-card: #FFFFFF;   /* diagram hub fill */

  /* Primary accent in light theme is CTS Navy (#00094B). The ramp lifts to a
     legible royal navy for highlights so eyebrows, links, stat numbers, and
     the gradient headline read crisply on white — matching the navy accent on
     the product pages. */
  --oinsights-teal: #00094B;          /* CTS Navy — deepest accent */
  --oinsights-teal-bright: #14328C;   /* lifted navy — eyebrows, links, numbers */
  --oinsights-teal-soft: #4A60B8;     /* soft navy — secondary highlight */

  --milestone-blue: #1F6FB8;      /* VMS — deepened for contrast on light */
  --niagara-coral: #C24E28;       /* BMS — deepened for contrast on light */
  --core-mint: #0C7A57;

  --text-primary: #0A1124;        /* near-black ink for headings */
  --text-secondary: #353F5A;      /* confident body slate */
  --text-tertiary: #4E5A79;       /* muted labels — darkened for legibility */
  --text-quaternary: #5A678A;

  /* Solid white surfaces; the card-lift rules below add border + soft shadow. */
  --surface-1: #FFFFFF;
  --surface-2: #FFFFFF;
  --surface-3: #FFFFFF;
  --surface-hover: #EEF2F8;

  --border-faint: rgba(10, 17, 36, 0.07);
  --border-soft: rgba(10, 17, 36, 0.10);
  --border-medium: rgba(10, 17, 36, 0.14);
  --border-hover: rgba(20, 50, 140, 0.45);

  --accent-pill-bg: rgba(0, 9, 75, 0.07);
  --accent-pill-border: rgba(20, 50, 140, 0.26);
  --accent-hover-border: rgba(20, 50, 140, 0.40);
  --accent-glow: rgba(20, 50, 140, 0.16);
}

/* Frosted nav bar — light glass instead of dark glass */
html[data-conexao-theme="light"] .conexao-nav {
  background: rgba(243, 245, 249, 0.82);
  border-bottom-color: rgba(10, 17, 36, 0.07);
}

/* Hero cycling-word gradient — navy ramp on light (the base rule is hardcoded
   blue/teal for the dark theme, so it must be re-stated here). */
html[data-conexao-theme="light"] .conexao-cycle-word {
  background: linear-gradient(90deg, #14328C 0%, #2A4FB5 20%, #00094B 40%, #1B3A8F 50%, #00094B 60%, #2A4FB5 80%, #14328C 100%);
  background-size: 200% 100%;
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
}

/* Secondary button: was translucent-white (invisible on light) */
html[data-conexao-theme="light"] .conexao-btn--secondary {
  background: rgba(0, 9, 75, 0.04);
  border-color: rgba(0, 9, 75, 0.14);
}
html[data-conexao-theme="light"] .conexao-btn--secondary:hover {
  background: rgba(0, 9, 75, 0.07);
}

/* White text that would vanish on a light background */
html[data-conexao-theme="light"] .conexao-nav__logo-link:hover .conexao-nav__logo-wordmark,
html[data-conexao-theme="light"] .conexao-product-card:hover .conexao-product-card__capabilities li,
html[data-conexao-theme="light"] .conexao-compliance-card__title,
html[data-conexao-theme="light"] .mp-protocol-name,
html[data-conexao-theme="light"] .mp-rail-link:hover .mp-rail-label {
  color: var(--text-primary);
}

/* Translucent-white fills/borders → navy-tinted so they read on light */
html[data-conexao-theme="light"] .conexao-nav__compact-link:hover,
html[data-conexao-theme="light"] .conexao-mega-card:hover,
html[data-conexao-theme="light"] .conexao-mega-card__icon,
html[data-conexao-theme="light"] .conexao-compliance-chip,
html[data-conexao-theme="light"] .conexao-partner-card__status,
html[data-conexao-theme="light"] .mp-protocol-col:hover {
  background: rgba(0, 9, 75, 0.04);
}
html[data-conexao-theme="light"] .mp-protocol-col {
  background: rgba(0, 9, 75, 0.025);
  border-color: rgba(0, 9, 75, 0.10);
}
html[data-conexao-theme="light"] .conexao-section {
  border-top-color: rgba(0, 9, 75, 0.06);
}

/* Decorative grid overlays → faint navy lines */
html[data-conexao-theme="light"] .conexao-grid-bg {
  background-image:
    linear-gradient(rgba(0, 9, 75, 0.045) 1px, transparent 1px),
    linear-gradient(90deg, rgba(0, 9, 75, 0.045) 1px, transparent 1px);
}

/* Soft colored glows are tuned for a dark canvas — dial them back on light */
html[data-conexao-theme="light"] .conexao-glow-blob {
  opacity: 0.4;
}

/* The hero centre vignette is a dark-navy radial that deepens the dark hero.
   On white it reads as a dirty grey shadow, so switch it off in light theme. */
html[data-conexao-theme="light"] .conexao-hero-vignette {
  background: none;
}

/* Automation diagram: input chips are white-on-white in the raw SVG.
   CSS fill overrides the inline presentation attributes. */
html[data-conexao-theme="light"] .conexao-auto-diagram .sys-chip[class*="nc-"] rect {
  fill: rgba(0, 9, 75, 0.035);
  stroke: rgba(0, 9, 75, 0.12);
}
html[data-conexao-theme="light"] .conexao-auto-diagram .sys-chip[class*="nc-"] text {
  fill: var(--text-primary);
}

/* ---- Theme toggle button (header) ---- */
.conexao-theme-toggle {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 38px;
  height: 38px;
  border-radius: var(--radius-pill);
  background: var(--surface-2);
  border: 1px solid var(--border-soft);
  color: var(--text-secondary);
  cursor: pointer;
  margin-right: 12px;
  transition: background 0.2s ease, color 0.2s ease, border-color 0.2s ease;
}

/* Header social icon (LinkedIn) — matches the toggle's pill styling. */
.conexao-nav__social {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 38px;
  height: 38px;
  border-radius: var(--radius-pill);
  background: var(--surface-2);
  border: 1px solid var(--border-soft);
  color: var(--text-secondary);
  margin-right: 12px;
  transition: background 0.2s ease, color 0.2s ease, border-color 0.2s ease;
}
.conexao-nav__social:hover {
  background: var(--surface-hover);
  color: var(--text-primary);
  border-color: var(--border-hover);
}
.conexao-nav__social::before {
  content: "";
  display: block;
  width: 18px;
  height: 18px;
  background-color: currentColor;
  -webkit-mask-repeat: no-repeat;
  mask-repeat: no-repeat;
  -webkit-mask-position: center;
  mask-position: center;
  -webkit-mask-size: contain;
  mask-size: contain;
  -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='black'%3E%3Cpath d='M20.45 20.45h-3.56v-5.57c0-1.33-.02-3.04-1.85-3.04-1.85 0-2.14 1.45-2.14 2.94v5.67H9.34V9h3.41v1.56h.05c.48-.9 1.64-1.85 3.37-1.85 3.6 0 4.27 2.37 4.27 5.46v6.28zM5.34 7.43a2.06 2.06 0 1 1 0-4.13 2.06 2.06 0 0 1 0 4.13zM7.12 20.45H3.56V9h3.56v11.45zM22.22 0H1.77C.79 0 0 .77 0 1.73v20.54C0 23.22.79 24 1.77 24h20.45c.98 0 1.78-.78 1.78-1.73V1.73C24 .77 23.2 0 22.22 0z'/%3E%3C/svg%3E");
  mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='black'%3E%3Cpath d='M20.45 20.45h-3.56v-5.57c0-1.33-.02-3.04-1.85-3.04-1.85 0-2.14 1.45-2.14 2.94v5.67H9.34V9h3.41v1.56h.05c.48-.9 1.64-1.85 3.37-1.85 3.6 0 4.27 2.37 4.27 5.46v6.28zM5.34 7.43a2.06 2.06 0 1 1 0-4.13 2.06 2.06 0 0 1 0 4.13zM7.12 20.45H3.56V9h3.56v11.45zM22.22 0H1.77C.79 0 0 .77 0 1.73v20.54C0 23.22.79 24 1.77 24h20.45c.98 0 1.78-.78 1.78-1.73V1.73C24 .77 23.2 0 22.22 0z'/%3E%3C/svg%3E");
}
.conexao-theme-toggle:hover {
  background: var(--surface-hover);
  color: var(--text-primary);
  border-color: var(--border-hover);
}
/* Toggle icon: CSS mask (background-color: currentColor + a FILLED, parenthesis-free
   SVG data-URI) applied to a real <span> INSIDE the button — not the button's
   ::before. Firefox does not render ::before on <button> elements, which is why
   the icon was blank there while Chromium showed it. The LinkedIn icon works
   because it is an <a>. Sun = dark, moon = light. */
.conexao-theme-toggle__icon {
  display: block;
  flex: 0 0 auto;
  width: 18px;
  height: 18px;
  background-color: currentColor;
  -webkit-mask-repeat: no-repeat;
  mask-repeat: no-repeat;
  -webkit-mask-position: center;
  mask-position: center;
  -webkit-mask-size: contain;
  mask-size: contain;
  -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='black'%3E%3Ccircle cx='12' cy='12' r='4.8'/%3E%3Cpath d='M13.05 5.50 L13.05 2.30 L10.95 2.30 L10.95 5.50 ZM17.34 8.15 L19.60 5.88 L18.12 4.40 L15.85 6.66 ZM18.50 13.05 L21.70 13.05 L21.70 10.95 L18.50 10.95 ZM15.85 17.34 L18.12 19.60 L19.60 18.12 L17.34 15.85 ZM10.95 18.50 L10.95 21.70 L13.05 21.70 L13.05 18.50 ZM6.66 15.85 L4.40 18.12 L5.88 19.60 L8.15 17.34 ZM5.50 10.95 L2.30 10.95 L2.30 13.05 L5.50 13.05 ZM8.15 6.66 L5.88 4.40 L4.40 5.88 L6.66 8.15 Z'/%3E%3C/svg%3E");
  mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='black'%3E%3Ccircle cx='12' cy='12' r='4.8'/%3E%3Cpath d='M13.05 5.50 L13.05 2.30 L10.95 2.30 L10.95 5.50 ZM17.34 8.15 L19.60 5.88 L18.12 4.40 L15.85 6.66 ZM18.50 13.05 L21.70 13.05 L21.70 10.95 L18.50 10.95 ZM15.85 17.34 L18.12 19.60 L19.60 18.12 L17.34 15.85 ZM10.95 18.50 L10.95 21.70 L13.05 21.70 L13.05 18.50 ZM6.66 15.85 L4.40 18.12 L5.88 19.60 L8.15 17.34 ZM5.50 10.95 L2.30 10.95 L2.30 13.05 L5.50 13.05 ZM8.15 6.66 L5.88 4.40 L4.40 5.88 L6.66 8.15 Z'/%3E%3C/svg%3E");
}
html[data-conexao-theme="light"] .conexao-theme-toggle__icon {
  -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='black'%3E%3Cpath d='M21 12.8A9 9 0 1 1 11.2 3a7 7 0 0 0 9.8 9.8z'/%3E%3C/svg%3E");
  mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='black'%3E%3Cpath d='M21 12.8A9 9 0 1 1 11.2 3a7 7 0 0 0 9.8 9.8z'/%3E%3C/svg%3E");
}

/* Segmented light/dark switch (header desktop + mobile drawer) */
.conexao-nav__vdiv { width: 1px; height: 24px; background: var(--border-medium, rgba(255, 255, 255, .12)); flex: 0 0 auto; }
.conexao-theme-seg { display: inline-flex; align-items: center; gap: 2px; background: var(--surface-2); border: 1px solid var(--border-soft); border-radius: 100px; padding: 3px; flex: 0 0 auto; }
.conexao-theme-seg__opt { width: 32px; height: 30px; border: 0; background: none; border-radius: 100px; display: flex; align-items: center; justify-content: center; color: var(--text-tertiary); cursor: pointer; padding: 0; transition: background .2s ease, color .2s ease; }
.conexao-theme-seg__opt svg { width: 15px; height: 15px; }
.conexao-theme-seg__opt:hover { color: var(--text-secondary); }
.conexao-theme-seg__opt.is-active { background: rgba(93,202,165,0.16) /* fallback */; background: color-mix(in srgb, var(--oinsights-teal-bright) 16%, transparent); color: var(--oinsights-teal-bright); }
.conexao-theme-seg__opt:focus-visible { outline: 2px solid var(--oinsights-teal-bright); outline-offset: 2px; }
@media (max-width: 1024px) {
  .conexao-nav__right .conexao-nav__vdiv,
  .conexao-nav__right .conexao-theme-seg { display: none; }
}

/* ==========================================================================
   LIGHT THEME — premium refinements (v3.3.0)
   White cards lifting off the soft ground, deeper accents already set in the
   token block, and contrast fixes for SVG-baked diagram text.
   ========================================================================== */

/* Card lift: solid white + hairline border + soft layered shadow.
   Gives the flat translucent cards a refined, floating quality on light. */
html[data-conexao-theme="light"] .conexao-product-card,
html[data-conexao-theme="light"] .conexao-stat-panel,
html[data-conexao-theme="light"] .conexao-partner-card,
html[data-conexao-theme="light"] .conexao-cap-card,
html[data-conexao-theme="light"] .conexao-compliance-card,
html[data-conexao-theme="light"] .conexao-office-card {
  background: #FFFFFF;
  border-color: rgba(10, 17, 36, 0.07);
  box-shadow:
    0 1px 2px rgba(16, 24, 48, 0.04),
    0 10px 30px -16px rgba(16, 24, 48, 0.12);
}
html[data-conexao-theme="light"] .conexao-office-card__pill { color: var(--oinsights-teal); }
html[data-conexao-theme="light"] .conexao-office-card__loc svg { color: var(--oinsights-teal); }

/* Compliance card has its own gradient/border in base CSS — flatten to white. */
html[data-conexao-theme="light"] .conexao-compliance-card {
  background: #FFFFFF;
  border-color: rgba(10, 17, 36, 0.07);
}

/* Slightly stronger lift on hover for the interactive cards. */
html[data-conexao-theme="light"] .conexao-product-card:hover,
html[data-conexao-theme="light"] .conexao-stat-panel:hover {
  box-shadow:
    0 2px 4px rgba(16, 24, 48, 0.05),
    0 18px 44px -18px rgba(12, 122, 87, 0.22);
}

/* The active/featured vertical tile uses a near-black fill in dark mode;
   on light, give selected + hover tiles a clean white lift instead. */
html[data-conexao-theme="light"] .conexao-vert-tile {
  background: #FFFFFF;
  border-color: rgba(10, 17, 36, 0.07);
  box-shadow: 0 1px 2px rgba(16, 24, 48, 0.04);
}
html[data-conexao-theme="light"] .conexao-vert-tile:hover {
  border-color: rgba(12, 122, 87, 0.35);
  box-shadow: 0 10px 26px -14px rgba(12, 122, 87, 0.25);
}

/* ---- Automation diagram: contrast for SVG-baked text on light ---- */
/* Only the three column headers are direct <text> children at the top;
   the hub's own labels sit on the dark navy hub and must stay light, so
   target the first three by type and leave the hub untouched. */
html[data-conexao-theme="light"] .conexao-auto-diagram > text:nth-of-type(1),
html[data-conexao-theme="light"] .conexao-auto-diagram > text:nth-of-type(3) {
  fill: var(--text-tertiary);
}
html[data-conexao-theme="light"] .conexao-auto-diagram > text:nth-of-type(2) {
  fill: var(--oinsights-teal-bright); /* AUTOMATION LAYER — keep accented */
}
/* Outcome chip labels are light teal in the SVG — deepen + tint the chip. */
html[data-conexao-theme="light"] .conexao-auto-diagram .sys-chip[class*="out-"] text {
  fill: var(--oinsights-teal-bright);
}
html[data-conexao-theme="light"] .conexao-auto-diagram .sys-chip[class*="out-"] rect {
  fill: rgba(20, 50, 140, 0.06);
  stroke: rgba(20, 50, 140, 0.32);
}

/* ==========================================================================
   ADMIN BAR OFFSET (v3.4.0)
   The sticky nav is top:0; the WordPress admin bar is fixed at the top for
   logged-in users, so without this the nav slides underneath it. Push the
   sticky nav down by the admin bar height (32px desktop, 46px <=782px).
   ========================================================================== */
.admin-bar .conexao-nav {
  top: 32px;
}
@media screen and (max-width: 782px) {
  .admin-bar .conexao-nav {
    top: 46px;
  }
}
@media screen and (max-width: 600px) {
  /* WP hides/auto-floats the admin bar below 600px; it is no longer fixed. */
  .admin-bar .conexao-nav {
    top: 0;
  }
}

/* ==========================================================================
   LIGHT THEME — Milestone product template (v3.5.0)
   The mp- components hardcode white-on-dark surfaces, so they don't follow the
   light tokens. These overrides make the PAGE CHROME adapt to light while
   keeping the app-screenshot mockup (mp-glass-*) and the protocol hub orb
   deliberately dark — those depict a dark application UI, like a framed photo.
   ========================================================================== */

/* Hero badge */
html[data-conexao-theme="light"] .mp-hero-badge {
  background: rgba(31, 111, 184, 0.08);
  border-color: rgba(31, 111, 184, 0.28);
  color: #1F6FB8;
}

/* Integration frame + its grid overlay */
html[data-conexao-theme="light"] .mp-integration-frame {
  background: linear-gradient(180deg, rgba(10, 17, 36, 0.02) 0%, rgba(10, 17, 36, 0.005) 100%);
  border-color: rgba(10, 17, 36, 0.08);
}
html[data-conexao-theme="light"] .mp-integration-frame::before {
  background-image:
    linear-gradient(rgba(10, 17, 36, 0.035) 1px, transparent 1px),
    linear-gradient(90deg, rgba(10, 17, 36, 0.035) 1px, transparent 1px);
}

/* Protocol columns (cards around the hub) — white lift; hub itself stays dark */
html[data-conexao-theme="light"] .mp-protocol-col {
  background: #FFFFFF;
  border-color: rgba(10, 17, 36, 0.08);
  box-shadow: 0 1px 2px rgba(16, 24, 48, 0.04), 0 10px 28px -16px rgba(16, 24, 48, 0.12);
}
html[data-conexao-theme="light"] .mp-protocol-col:hover {
  background: #FFFFFF;
  border-color: rgba(31, 111, 184, 0.35);
}
html[data-conexao-theme="light"] .mp-protocol-name { color: var(--text-primary); }

/* Device chips */
html[data-conexao-theme="light"] .mp-device {
  background: #FFFFFF;
  border-color: rgba(10, 17, 36, 0.08);
}
html[data-conexao-theme="light"] .mp-device,
html[data-conexao-theme="light"] .mp-device-name { color: var(--text-secondary); }
/* Hub orb stays dark, so its labels must stay light regardless of theme. */
html[data-conexao-theme="light"] .mp-protocol-hub-label { color: #FFFFFF; }
html[data-conexao-theme="light"] .mp-protocol-hub-mark { color: #FFFFFF; }

/* Case-study cards */
html[data-conexao-theme="light"] .mp-cs-card {
  background: #FFFFFF;
  border-color: rgba(10, 17, 36, 0.08);
  box-shadow: 0 1px 2px rgba(16, 24, 48, 0.04), 0 10px 30px -16px rgba(16, 24, 48, 0.12);
}
/* Case-study image panel keeps a subtle dark gradient (it frames a screenshot). */

/* FAQ items */
html[data-conexao-theme="light"] .mp-faq-item {
  background: #FFFFFF;
  border-color: rgba(10, 17, 36, 0.08);
}
html[data-conexao-theme="light"] .mp-faq-item:hover {
  border-color: rgba(31, 111, 184, 0.30);
}

/* Sticky rail side-nav */
html[data-conexao-theme="light"] .mp-rail {
  background: transparent;
  border-color: rgba(10, 17, 36, 0.08);
}
/* The label IS the pill — flip its dark fill/border/text to light. */
html[data-conexao-theme="light"] .mp-rail-label {
  background: #FFFFFF;
  border-color: rgba(10, 17, 36, 0.10);
  color: var(--text-secondary);
  box-shadow: 0 1px 2px rgba(16, 24, 48, 0.05), 0 6px 16px -10px rgba(16, 24, 48, 0.15);
}
/* Idle dots: navy-tinted instead of translucent white (invisible on light). */
html[data-conexao-theme="light"] .mp-rail-dot {
  background: rgba(10, 17, 36, 0.22);
}
html[data-conexao-theme="light"] .mp-rail-link:hover .mp-rail-dot {
  background: #1F6FB8;
}
html[data-conexao-theme="light"] .mp-rail-link:hover .mp-rail-label {
  color: var(--text-primary);
}
/* Active state uses the deepened Milestone blue for contrast on light. */
html[data-conexao-theme="light"] .mp-rail-link.active .mp-rail-dot {
  background: #1F6FB8;
  box-shadow: 0 0 12px rgba(31, 111, 184, 0.45);
}
html[data-conexao-theme="light"] .mp-rail-link.active .mp-rail-dot::after {
  border-color: rgba(31, 111, 184, 0.45);
}
html[data-conexao-theme="light"] .mp-rail-link.active .mp-rail-label {
  color: #1F6FB8;
}

/* Generic mp- grid overlays anywhere on the page */
html[data-conexao-theme="light"] .conexao-page--milestone .conexao-grid-bg {
  background-image:
    linear-gradient(rgba(10, 17, 36, 0.035) 1px, transparent 1px),
    linear-gradient(90deg, rgba(10, 17, 36, 0.035) 1px, transparent 1px);
}

/* Any mp- pill/chip that used translucent white */
html[data-conexao-theme="light"] .conexao-page--milestone .mp-pill,
html[data-conexao-theme="light"] .conexao-page--milestone .mp-chip,
html[data-conexao-theme="light"] .conexao-page--milestone .mp-tag {
  background: rgba(10, 17, 36, 0.04);
  border-color: rgba(10, 17, 36, 0.10);
}


/* ============================================================================
   NIAGARA PRODUCT PAGE (.conexao-page--niagara) — v3.8.0
   Self-contained: rebinds the shared mp-* accent tokens to Tridium Red and
   adds the suite-wheel component. Does not modify any Milestone rule.
   ============================================================================ */

.conexao-page--niagara{ --mp-accent:#EF2D2B; --mp-accent-soft:rgba(239,45,43,0.12); --mp-accent-border:rgba(239,45,43,0.30); --mp-accent-bg:rgba(239,45,43,0.05); --mp-accent-glow:rgba(239,45,43,0.42);
  --nia-wa:#163f47; --nia-wb:#1c5159; --nia-whover:#246b6f; --nia-wstroke:rgba(125,189,198,0.18); --nia-for:#5DCAA5; --nia-disc:var(--surface-2);
  font-family:'Inter',-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif; }
html[data-conexao-theme="light"] .conexao-page--niagara{ --mp-accent-soft:rgba(239,45,43,0.08); --mp-accent-border:rgba(239,45,43,0.30); --mp-accent-bg:rgba(239,45,43,0.05); --mp-accent-glow:rgba(239,45,43,0.28);
  --nia-wa:#e3f0ef; --nia-wb:#d2e6e3; --nia-whover:#bfdedb; --nia-wstroke:rgba(15,110,86,0.20); --nia-for:#0F6E56; --nia-disc:#FFFFFF; }
.conexao-page--niagara .conexao-h1,.conexao-page--niagara .conexao-h2,.conexao-page--niagara .conexao-h3,.conexao-page--niagara .mp-module__title,.conexao-page--niagara .mp-protocol-hub-label{ font-family:'Poppins',sans-serif; }
.conexao-page--niagara .conexao-eyebrow{ color:var(--mp-accent); background:var(--mp-accent-soft); border-color:var(--mp-accent-border); }
.conexao-page--niagara .mp-shimmer{ background:linear-gradient(90deg,#EF2D2B 0%,#FF6F61 30%,#FFA08E 50%,#FF6F61 70%,#EF2D2B 100%); background-size:200% 100%; -webkit-background-clip:text; background-clip:text; -webkit-text-fill-color:transparent; }
html[data-conexao-theme="light"] .conexao-page--niagara .mp-shimmer{ background:linear-gradient(90deg,#C21D1B 0%,#EF2D2B 30%,#FF4E3D 50%,#EF2D2B 70%,#C21D1B 100%); background-size:200% 100%; -webkit-background-clip:text; background-clip:text; -webkit-text-fill-color:transparent; }
.conexao-page--niagara .mp-rail-link.active .mp-rail-dot{ background:var(--mp-accent); box-shadow:0 0 12px rgba(239,45,43,.6); }
.conexao-page--niagara .mp-rail-link.active .mp-rail-dot::after{ border-color:rgba(239,45,43,.5); }
.conexao-page--niagara .mp-rail-link.active .mp-rail-label{ color:var(--niagara-coral); }
html[data-conexao-theme="light"] .conexao-page--niagara .mp-rail-link.active .mp-rail-dot{ background:var(--mp-accent); }
.conexao-page--niagara .mp-glass-titlebar__mark{ color:var(--mp-accent); filter:drop-shadow(0 0 6px var(--mp-accent-glow)); }
/* built-on-niagara band */
.nia-band{ background:var(--mp-accent-bg); }
.nia-band__grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:22px; margin-top:36px; }
.nia-band__item{ display:flex; gap:14px; align-items:flex-start; }
.nia-band__ic{ flex:0 0 auto; width:42px; height:42px; border-radius:12px; background:var(--mp-accent-soft); border:1px solid var(--mp-accent-border); color:var(--mp-accent); display:flex; align-items:center; justify-content:center; }
.nia-band__t{ font-size:16px; font-weight:700; color:var(--text-primary); margin-bottom:4px; }
.nia-band__d{ font-size:13.5px; color:var(--text-secondary); line-height:1.55; }
@media (max-width:760px){ .nia-band__grid{ grid-template-columns:1fr; } }

.nia-suite{ padding:64px 0 40px; }
.nia-suite__head{ text-align:center; max-width:780px; margin:0 auto; }
.nia-wheel-wrap{ width:700px; max-width:94vw; aspect-ratio:1/1; margin:30px auto 0; position:relative; }
.nia-wheel-svg{ width:100%; height:100%; display:block; }
.nia-wedge{ stroke:var(--nia-wstroke); stroke-width:1; transition:fill .25s ease; }
.wedge-a{ fill:var(--nia-wa); } .wedge-b{ fill:var(--nia-wb); } .nia-wedge:hover{ fill:var(--nia-whover); }
.nia-disc{ fill:var(--nia-disc); stroke:var(--border-soft); stroke-width:1; }
.nia-disc-ring{ fill:none; stroke:var(--border-faint); stroke-width:6; }
.nia-disc-shadow{ fill:rgba(0,0,0,.16); } html[data-conexao-theme="light"] .nia-disc-shadow{ fill:rgba(20,40,60,.10); }
.nia-seg{ position:absolute; z-index:3; transform:translate(-50%,-50%); width:108px; display:flex; flex-direction:column; align-items:center; gap:6px; pointer-events:none; }
.nia-seg__ic{ width:25px; height:25px; background:var(--text-primary); opacity:.94; -webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain; }
.nia-seg__lb{ text-align:center; font-size:9.5px; font-weight:600; letter-spacing:.2px; line-height:1.15; text-transform:uppercase; color:var(--text-primary); }
.nia-seg__dt{ display:flex; gap:4px; } .nia-seg__dt i{ width:3px; height:3px; border-radius:50%; background:var(--text-secondary); opacity:.5; }
.nia-core{ position:absolute; left:50%; top:50%; transform:translate(-50%,-50%); width:37%; display:flex; flex-direction:column; align-items:center; gap:9px; text-align:center; pointer-events:none; z-index:2; }
.nia-core__logo{ width:96%; max-width:210px; display:block; }
.nia-logo--on-dark{ display:block; } .nia-logo--on-light{ display:none; }
html[data-conexao-theme="light"] .nia-logo--on-dark{ display:none; } html[data-conexao-theme="light"] .nia-logo--on-light{ display:block; }
.nia-core__dots{ display:flex; gap:6px; } .nia-core__dots i{ width:5px;height:5px;border-radius:50%;background:var(--text-tertiary); }
.nia-core__for{ font-size:19px; font-weight:800; letter-spacing:2.5px; color:var(--nia-for); }
.nia-core__base{ font-size:9.5px; letter-spacing:1.2px; color:var(--text-tertiary); line-height:1.5; }
.nia-suite__mobile{ display:none; }
@media (max-width:600px){
  .nia-wheel-wrap{ display:none; }
  .nia-suite__mobile{ display:grid; grid-template-columns:1fr 1fr; gap:10px; margin-top:24px; }
  .nia-mod-chip{ display:flex; align-items:center; gap:10px; padding:12px 14px; background:var(--surface-2); border:1px solid var(--border-soft); border-radius:12px; }
  .nia-mod-chip span{ font-size:12px; font-weight:600; color:var(--text-primary); }
  .nia-mod-chip__ic{ width:18px; height:18px; flex:0 0 auto; background:var(--mp-accent); -webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain; }
}
.ic-search{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.7' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='11' cy='11' r='8'/%3E%3Cpath d='m21 21-4.3-4.3'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.7' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='11' cy='11' r='8'/%3E%3Cpath d='m21 21-4.3-4.3'/%3E%3C/svg%3E");}.ic-monitor{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.7' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect width='20' height='14' x='2' y='3' rx='2'/%3E%3Cline x1='8' x2='16' y1='21' y2='21'/%3E%3Cline x1='12' x2='12' y1='17' y2='21'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.7' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect width='20' height='14' x='2' y='3' rx='2'/%3E%3Cline x1='8' x2='16' y1='21' y2='21'/%3E%3Cline x1='12' x2='12' y1='17' y2='21'/%3E%3C/svg%3E");}.ic-bar{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.7' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 3v18h18'/%3E%3Cpath d='M7 16l4-4 4 4 5-5'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.7' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 3v18h18'/%3E%3Cpath d='M7 16l4-4 4 4 5-5'/%3E%3C/svg%3E");}.ic-shield{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.7' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z'/%3E%3Cpath d='m9 12 2 2 4-4'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.7' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z'/%3E%3Cpath d='m9 12 2 2 4-4'/%3E%3C/svg%3E");}.ic-click{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.7' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m9 9 5 12 1.8-5.2L21 14Z'/%3E%3Cpath d='M7.2 2.2 8 5.1'/%3E%3Cpath d='m5.1 8-2.9-.8'/%3E%3Cpath d='M14 4.1 12 6'/%3E%3Cpath d='m6 12-1.9 2'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.7' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m9 9 5 12 1.8-5.2L21 14Z'/%3E%3Cpath d='M7.2 2.2 8 5.1'/%3E%3Cpath d='m5.1 8-2.9-.8'/%3E%3Cpath d='M14 4.1 12 6'/%3E%3Cpath d='m6 12-1.9 2'/%3E%3C/svg%3E");}.ic-workflow{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.7' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect width='8' height='8' x='3' y='3' rx='2'/%3E%3Cpath d='M7 11v4a2 2 0 0 0 2 2h4'/%3E%3Crect width='8' height='8' x='13' y='13' rx='2'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.7' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect width='8' height='8' x='3' y='3' rx='2'/%3E%3Cpath d='M7 11v4a2 2 0 0 0 2 2h4'/%3E%3Crect width='8' height='8' x='13' y='13' rx='2'/%3E%3C/svg%3E");}.ic-cpu{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.7' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect width='16' height='16' x='4' y='4' rx='2'/%3E%3Crect width='6' height='6' x='9' y='9' rx='1'/%3E%3Cpath d='M15 2v2M15 20v2M2 15h2M2 9h2M20 15h2M20 9h2M9 2v2M9 20v2'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.7' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect width='16' height='16' x='4' y='4' rx='2'/%3E%3Crect width='6' height='6' x='9' y='9' rx='1'/%3E%3Cpath d='M15 2v2M15 20v2M2 15h2M2 9h2M20 15h2M20 9h2M9 2v2M9 20v2'/%3E%3C/svg%3E");}.ic-wrench{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.7' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.77-3.77a6 6 0 0 1-7.94 7.94l-6.91 6.91a2.12 2.12 0 0 1-3-3l6.91-6.91a6 6 0 0 1 7.94-7.94l-3.76 3.76z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.7' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.77-3.77a6 6 0 0 1-7.94 7.94l-6.91 6.91a2.12 2.12 0 0 1-3-3l6.91-6.91a6 6 0 0 1 7.94-7.94l-3.76 3.76z'/%3E%3C/svg%3E");}.ic-send{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.7' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M14.5 21.7a.5.5 0 0 0 .9 0l6.5-19a.5.5 0 0 0-.64-.64l-19 6.5a.5.5 0 0 0 0 .94l7.9 3.18a2 2 0 0 1 1.1 1.1z'/%3E%3Cpath d='m21.85 2.15-10.94 10.94'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.7' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M14.5 21.7a.5.5 0 0 0 .9 0l6.5-19a.5.5 0 0 0-.64-.64l-19 6.5a.5.5 0 0 0 0 .94l7.9 3.18a2 2 0 0 1 1.1 1.1z'/%3E%3Cpath d='m21.85 2.15-10.94 10.94'/%3E%3C/svg%3E");}.ic-building{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.7' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 22V4a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v18Z'/%3E%3Cpath d='M6 12H4a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2h2'/%3E%3Cpath d='M18 9h2a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2h-2'/%3E%3Cpath d='M10 6h4M10 10h4M10 14h4M10 18h4'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.7' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 22V4a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v18Z'/%3E%3Cpath d='M6 12H4a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2h2'/%3E%3Cpath d='M18 9h2a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2h-2'/%3E%3Cpath d='M10 6h4M10 10h4M10 14h4M10 18h4'/%3E%3C/svg%3E");}

/* ============================================================================
   CORE PRODUCT PAGE (.conexao-page--core) — v3.9.0
   Self-contained: rebinds the shared mp-* accent tokens to Core mint (#5DCAA5,
   the reserved --core-mint) and adds the signal-convergence diagram, stat band
   and deployment cards. Does NOT modify any Milestone or Niagara rule.
   ============================================================================ */
.conexao-page--core{ --mp-accent:#5DCAA5; --mp-accent-soft:rgba(93,202,165,0.12); --mp-accent-border:rgba(93,202,165,0.30); --mp-accent-bg:rgba(93,202,165,0.05); --mp-accent-glow:rgba(93,202,165,0.42);
  --core-node:rgba(255,255,255,0.045); --core-line:rgba(93,202,165,0.40); --core-hub:var(--surface-2); --core-road:#E6B65C;
  font-family:'Inter',-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif; }
html[data-conexao-theme="light"] .conexao-page--core{ --mp-accent:#2E9C78; --mp-accent-soft:rgba(46,156,120,0.09); --mp-accent-border:rgba(46,156,120,0.30); --mp-accent-bg:rgba(46,156,120,0.05); --mp-accent-glow:rgba(46,156,120,0.26);
  --core-node:#f3f8f6; --core-line:rgba(46,156,120,0.38); --core-hub:#FFFFFF; --core-road:#B5862A; }
.conexao-page--core .conexao-h1,.conexao-page--core .conexao-h2,.conexao-page--core .conexao-h3,.conexao-page--core .mp-module__title{ font-family:'Poppins',sans-serif; }
.conexao-page--core .conexao-eyebrow{ color:var(--mp-accent); background:var(--mp-accent-soft); border-color:var(--mp-accent-border); }
.conexao-page--core .mp-shimmer{ background:linear-gradient(90deg,#5DCAA5 0%,#7DBDC6 30%,#408088 50%,#7DBDC6 70%,#5DCAA5 100%); background-size:200% 100%; -webkit-background-clip:text; background-clip:text; -webkit-text-fill-color:transparent; }
html[data-conexao-theme="light"] .conexao-page--core .mp-shimmer{ background:linear-gradient(90deg,#2E9C78 0%,#0F8A6E 30%,#1C7293 50%,#0F8A6E 70%,#2E9C78 100%); background-size:200% 100%; -webkit-background-clip:text; background-clip:text; -webkit-text-fill-color:transparent; }
.conexao-page--core .mp-rail-link.active .mp-rail-dot{ background:var(--mp-accent); box-shadow:0 0 12px rgba(93,202,165,.6); }
.conexao-page--core .mp-rail-link.active .mp-rail-label{ color:var(--mp-accent); }
.conexao-page--core .mp-glass-titlebar__mark{ color:var(--mp-accent); filter:drop-shadow(0 0 6px var(--mp-accent-glow)); }
.conexao-page--core .mp-glass-frame{ box-shadow:0 50px 120px -20px rgba(0,0,0,.7),0 0 0 1px rgba(93,202,165,.18),inset 0 1px 0 rgba(255,255,255,.08); }

/* available / roadmap pills */
.core-pill{ display:inline-flex; align-items:center; gap:6px; font-size:10px; font-weight:700; letter-spacing:.06em; text-transform:uppercase; padding:3px 9px; border-radius:100px; vertical-align:middle; }
.core-pill--ok{ color:var(--mp-accent); background:var(--mp-accent-soft); border:1px solid var(--mp-accent-border); }
.core-pill--road{ color:var(--core-road); background:rgba(230,182,92,.12); border:1px solid rgba(230,182,92,.30); }

/* Protocols & integrations */
.core-proto-grid{ display:grid; grid-template-columns:repeat(4,1fr); gap:16px; margin-top:44px; }
.core-proto{ background:var(--surface-2); border:1px solid var(--border-soft); border-radius:15px; padding:24px; }
.core-proto__top{ display:flex; align-items:center; justify-content:space-between; margin-bottom:16px; min-height:46px; }
.core-proto__ic{ width:46px; height:46px; border-radius:12px; background:var(--mp-accent-soft); border:1px solid var(--mp-accent-border); color:var(--mp-accent); display:flex; align-items:center; justify-content:center; }
.core-proto__ic svg{ width:22px; height:22px; }
.core-proto__name{ font-family:'Poppins',sans-serif; font-size:16px; font-weight:700; color:var(--text-primary); margin:0 0 6px; }
.core-proto__desc{ font-size:13px; color:var(--text-secondary); line-height:1.55; margin:0; }
.core-proto--custom{ border-color:var(--mp-accent-border); background:var(--surface-2); background:linear-gradient(160deg, var(--mp-accent-bg), transparent 70%); }
.core-proto--custom .core-proto__ic{ background:var(--mp-accent); border-color:transparent; color:#05140f; }
@media (max-width:900px){ .core-proto-grid{ grid-template-columns:1fr 1fr; } }
@media (max-width:560px){ .core-proto-grid{ grid-template-columns:1fr; } }

/* White-label / OEM */
.core-oem__card{ position:relative; overflow:hidden; border-radius:22px; border:1px solid var(--mp-accent-border);
	background:var(--surface-2); background:linear-gradient(135deg, var(--mp-accent-bg), transparent 60%);
	padding:48px; display:grid; grid-template-columns:1.15fr 0.85fr; gap:44px; align-items:center; }
.core-oem__glow{ position:absolute; top:-140px; right:-120px; width:420px; height:420px; border-radius:50%;
	background:radial-gradient(circle, var(--mp-accent-glow), transparent 65%); opacity:.5; pointer-events:none; }
.core-oem__body{ position:relative; z-index:1; }
.core-oem__list{ list-style:none; margin:22px 0 30px; padding:0; display:grid; gap:13px; }
.core-oem__list li{ display:flex; align-items:flex-start; gap:11px; font-size:14.5px; color:var(--text-secondary); line-height:1.5; }
.core-oem__chk{ flex:0 0 auto; color:var(--mp-accent); margin-top:2px; }
.core-oem__frame{ position:relative; z-index:1; border-radius:14px; overflow:hidden; border:1px solid var(--border-soft); background:#070c1d; box-shadow:0 30px 80px -24px rgba(0,0,0,.6); }
.core-oem__bar{ display:flex; align-items:center; gap:8px; height:38px; padding:0 14px; background:linear-gradient(180deg,rgba(255,255,255,.06),rgba(255,255,255,.02)); border-bottom:1px solid rgba(255,255,255,.06); }
.core-oem__dot{ width:9px; height:9px; border-radius:50%; background:rgba(255,255,255,.22); }
.core-oem__yourbrand{ margin-left:8px; font-family:'Poppins',sans-serif; font-weight:700; font-size:12px; letter-spacing:.5px; color:var(--mp-accent); }
.core-oem__barmenu{ margin-left:auto; width:34px; height:6px; border-radius:3px; background:rgba(255,255,255,.12); }
.core-oem__screen{ padding:22px; display:flex; flex-direction:column; gap:16px; background:radial-gradient(120% 130% at 30% 15%, var(--mp-accent-bg), #070c1d 72%); }
.core-oem__stats{ display:grid; grid-template-columns:repeat(3,1fr); gap:12px; }
.core-oem__stat{ height:52px; border-radius:10px; background:rgba(255,255,255,.04); border:1px solid var(--border-soft); position:relative; overflow:hidden; }
.core-oem__stat::before{ content:""; position:absolute; left:12px; top:12px; width:40%; height:8px; border-radius:4px; background:var(--mp-accent); opacity:.55; }
.core-oem__stat::after{ content:""; position:absolute; left:12px; top:28px; width:64%; height:6px; border-radius:3px; background:rgba(255,255,255,.14); }
.core-oem__bars{ display:flex; align-items:flex-end; gap:10px; height:96px; padding:12px; border-radius:12px; background:rgba(255,255,255,.03); border:1px solid var(--border-soft); }
.core-oem__bars span{ flex:1; border-radius:5px 5px 0 0; background:var(--mp-accent); background: linear-gradient(180deg, var(--mp-accent), rgba(239,45,43,0.3)) /* fallback */; background: linear-gradient(180deg, var(--mp-accent), color-mix(in srgb, var(--mp-accent) 30%, transparent)); opacity:.8; }
.core-oem__product{ font-size:11px; letter-spacing:1.4px; text-transform:uppercase; color:var(--text-tertiary); text-align:center; }
@media (max-width:820px){ .core-oem__card{ grid-template-columns:1fr; padding:34px 26px; gap:32px; } }

/* CHALLENGE — neutral problem treatment (muted coral icons, not the accent) */
.core-prob .mp-cap-card__icon{ color:#E08A82; }
html[data-conexao-theme="light"] .core-prob .mp-cap-card__icon{ color:#C8514A; }

/* positioning band (reuses mp surfaces) */
.core-band{ background:var(--mp-accent-bg); }
.core-band__grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:22px; margin-top:36px; }
.core-band__item{ display:flex; gap:14px; align-items:flex-start; }
.core-band__ic{ flex:0 0 auto; width:42px; height:42px; border-radius:12px; background:var(--mp-accent-soft); border:1px solid var(--mp-accent-border); color:var(--mp-accent); display:flex; align-items:center; justify-content:center; }
.core-band__t{ font-size:16px; font-weight:700; color:var(--text-primary); margin-bottom:4px; }
.core-band__d{ font-size:13.5px; color:var(--text-secondary); line-height:1.55; }
@media (max-width:760px){ .core-band__grid{ grid-template-columns:1fr; } }

/* ===== SIGNAL-CONVERGENCE DIAGRAM (Core centerpiece — distinct from the Niagara wheel) ===== */
.core-suite{ padding-bottom:48px; }
.core-flow-wrap{ position:relative; width:980px; max-width:96vw; margin:44px auto 0; aspect-ratio:98/56; }
.core-flow-svg{ position:absolute; inset:0; width:100%; height:100%; overflow:visible; pointer-events:none; }
.core-flow-path{ fill:none; stroke:var(--core-line); stroke-width:1.4; opacity:.5; }
.core-flow-pulse{ fill:var(--mp-accent); }
.core-node{ position:absolute; transform:translate(-50%,-50%); width:184px; display:flex; align-items:center; gap:11px; padding:12px 14px; background:var(--core-node); border:1px solid var(--border-soft); border-radius:13px; transition:border-color .25s ease, transform .25s ease; z-index:2; }
.core-node:hover{ border-color:var(--mp-accent-border); transform:translate(-50%,-50%) translateY(-2px); }
.core-node__ic{ width:34px; height:34px; flex:0 0 auto; border-radius:9px; background:var(--mp-accent-soft); border:1px solid var(--mp-accent-border); color:var(--mp-accent); display:flex; align-items:center; justify-content:center; }
.core-node__ic svg{ width:18px; height:18px; }
.core-node__t{ font-family:'Poppins',sans-serif; font-size:13px; font-weight:600; color:var(--text-primary); line-height:1.2; }
.core-node__r{ display:block; font-size:9px; font-weight:700; letter-spacing:.05em; color:var(--core-road); text-transform:uppercase; margin-top:3px; }
.core-hub{ position:absolute; left:50%; top:50%; transform:translate(-50%,-50%); width:190px; height:190px; border-radius:26px; background:var(--core-hub); border:1.5px solid var(--mp-accent-border); display:flex; flex-direction:column; align-items:center; justify-content:center; gap:7px; text-align:center; box-shadow:0 0 0 9px var(--mp-accent-bg),0 30px 80px -20px rgba(0,0,0,.6); z-index:3; }
.core-hub__ring{ position:absolute; inset:-1px; border-radius:26px; border:1px solid var(--mp-accent); opacity:.4; animation:core-hub-pulse 3.2s ease-in-out infinite; }
@keyframes core-hub-pulse{ 0%,100%{ transform:scale(1); opacity:.35; } 50%{ transform:scale(1.05); opacity:.1; } }
.core-hub__mark{ width:46px; height:46px; color:var(--mp-accent); filter:drop-shadow(0 0 10px var(--mp-accent-glow)); }
.core-hub__mark svg{ width:100%; height:100%; display:block; }
.core-hub__logo{ width:132px; height:auto; display:block; margin-bottom:9px; filter:drop-shadow(0 0 10px var(--mp-accent-glow)); }
.core-hub__k{ font-family:'Poppins',sans-serif; font-weight:800; font-size:18px; letter-spacing:2px; color:var(--text-primary); }
.core-hub__s{ font-size:9px; letter-spacing:1.6px; color:var(--text-tertiary); text-transform:uppercase; }
@media (prefers-reduced-motion: reduce){ .core-hub__ring{ animation:none; } .core-flow-pulse{ display:none; } }

.core-suite__mobile{ display:none; }
@media (max-width:820px){
  .core-flow-wrap{ display:none; }
  .core-suite__mobile{ display:grid; grid-template-columns:1fr 1fr; gap:10px; margin-top:26px; }
  .core-chip{ display:flex; align-items:center; gap:10px; padding:12px 14px; background:var(--surface-2); border:1px solid var(--border-soft); border-radius:12px; }
  .core-chip__ic{ width:20px; height:20px; flex:0 0 auto; color:var(--mp-accent); }
  .core-chip__ic svg{ width:100%; height:100%; }
  .core-chip b{ font-size:12px; font-weight:600; color:var(--text-primary); }
  .core-chip small{ display:block; font-size:9px; font-weight:700; letter-spacing:.05em; color:var(--core-road); text-transform:uppercase; }
}

/* PERFORMANCE STAT BAND */
.core-stats{ display:grid; grid-template-columns:repeat(4,1fr); gap:16px; margin-top:8px; }
.core-stat{ background:var(--surface-2); border:1px solid var(--border-soft); border-radius:var(--radius-lg); padding:26px 20px; text-align:center; }
.core-stat__n{ font-family:'Poppins',sans-serif; font-size:40px; font-weight:800; color:var(--mp-accent); line-height:1; letter-spacing:-1px; }
.core-stat__l{ font-size:11px; letter-spacing:1.5px; text-transform:uppercase; color:var(--text-tertiary); margin-top:10px; font-weight:600; }
.core-stat__d{ font-size:12.5px; color:var(--text-secondary); margin-top:6px; }
@media (max-width:760px){ .core-stats{ grid-template-columns:repeat(2,1fr); } }

/* Qualitative strip (Real-time / Reliable / Any device / Scalable) */
.core-quali{ display:grid; grid-template-columns:repeat(4,1fr); margin-top:8px; border:1px solid var(--border-soft); border-radius:var(--radius-lg); background:var(--surface-2); overflow:hidden; }
.core-quali__item{ padding:26px 22px; text-align:center; border-right:1px solid var(--border-soft); }
.core-quali__item:last-child{ border-right:0; }
.core-quali__t{ font-family:'Poppins',sans-serif; font-size:22px; font-weight:700; line-height:1.1; color:var(--text-primary); }
.core-quali__item:nth-child(odd) .core-quali__t{ color:var(--mp-accent); }
.core-quali__d{ font-size:12.5px; color:var(--text-secondary); margin-top:8px; line-height:1.45; }
@media (max-width:760px){
	.core-quali{ grid-template-columns:repeat(2,1fr); }
	.core-quali__item:nth-child(2){ border-right:0; }
	.core-quali__item:nth-child(1),.core-quali__item:nth-child(2){ border-bottom:1px solid var(--border-soft); }
}
@media (max-width:440px){
	.core-quali{ grid-template-columns:1fr; }
	.core-quali__item{ border-right:0; border-bottom:1px solid var(--border-soft); }
	.core-quali__item:last-child{ border-bottom:0; }
}

/* DEPLOYMENT two-column */
.core-deploy{ display:grid; grid-template-columns:1fr 1fr; gap:20px; margin-top:8px; }
.core-dcard{ background:var(--surface-2); border:1px solid var(--border-soft); border-radius:var(--radius-xl); padding:30px; }
.core-dcard--now{ border-color:var(--mp-accent-border); box-shadow:inset 0 0 0 1px var(--mp-accent-bg); }
.core-dcard__h{ display:flex; align-items:center; gap:13px; margin-bottom:18px; }
.core-dcard__ic{ width:44px; height:44px; border-radius:12px; background:var(--mp-accent-soft); border:1px solid var(--mp-accent-border); color:var(--mp-accent); display:flex; align-items:center; justify-content:center; flex:0 0 auto; }
.core-dcard__ic svg{ width:22px; height:22px; }
.core-dcard h3{ font-family:'Poppins',sans-serif; font-size:20px; font-weight:700; color:var(--text-primary); margin:0; flex:1; }
.core-dcard ul{ list-style:none; margin:0; padding:0; }
.core-dcard li{ display:flex; gap:11px; align-items:flex-start; font-size:14px; color:var(--text-secondary); margin-bottom:12px; line-height:1.5; }
.core-dcard li svg{ width:18px; height:18px; color:var(--mp-accent); flex:0 0 auto; margin-top:2px; }
.core-dcard__note{ font-size:12.5px; color:var(--text-tertiary); border-top:1px solid var(--border-faint); padding-top:14px; margin-top:4px; }
@media (max-width:820px){ .core-deploy{ grid-template-columns:1fr; } }


/* ============================================================================
   CONEXAO @ AUTOMATION — services page (.conexao-page--automation) — v3.10.0
   House-brand treatment (NOT an O-Insights product): rebinds the shared mp-*
   accent tokens to the Conexao identity — a navy-family cornflower (#8093E8)
   lifted for legibility on the near-black navy dark theme, and pure Conexao
   Navy (#00094B) on the light theme. Adds the integration-pipeline diagram,
   credential stat band, case-study callout and delivery cards.
   Does NOT modify any Milestone, Niagara or Core rule.
   ============================================================================ */
.conexao-page--automation{ --mp-accent:#8093E8; --mp-accent-soft:rgba(128,147,232,0.13); --mp-accent-border:rgba(128,147,232,0.34); --mp-accent-bg:rgba(128,147,232,0.05); --mp-accent-glow:rgba(128,147,232,0.42);
  --auto-node:rgba(255,255,255,0.045); --auto-line:rgba(128,147,232,0.42); --auto-hub:var(--surface-2); --auto-soft:#A9B6F2; --auto-loop:rgba(128,147,232,0.34);
  font-family:'Inter',-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif; }
html[data-conexao-theme="light"] .conexao-page--automation{ --mp-accent:#00094B; --mp-accent-soft:rgba(0,9,75,0.07); --mp-accent-border:rgba(0,9,75,0.22); --mp-accent-bg:rgba(0,9,75,0.04); --mp-accent-glow:rgba(0,9,75,0.16);
  --auto-node:#eef0f7; --auto-line:rgba(0,9,75,0.30); --auto-hub:#FFFFFF; --auto-soft:#2A3D9E; --auto-loop:rgba(0,9,75,0.24); }
.conexao-page--automation .conexao-h1,.conexao-page--automation .conexao-h2,.conexao-page--automation .conexao-h3,.conexao-page--automation .mp-module__title{ font-family:'Poppins',sans-serif; }
.conexao-page--automation .conexao-eyebrow{ color:var(--mp-accent); background:var(--mp-accent-soft); border-color:var(--mp-accent-border); }
html[data-conexao-theme="light"] .conexao-page--automation .conexao-eyebrow{ color:#00094B; }
.conexao-page--automation .mp-shimmer{ background:linear-gradient(90deg,#A9B6F2 0%,#8093E8 30%,#5C72C9 50%,#8093E8 70%,#A9B6F2 100%); background-size:200% 100%; -webkit-background-clip:text; background-clip:text; -webkit-text-fill-color:transparent; padding-bottom:0.18em; margin-bottom:-0.18em; }
html[data-conexao-theme="light"] .conexao-page--automation .mp-shimmer{ background:linear-gradient(90deg,#00094B 0%,#2A3D9E 50%,#00094B 100%); background-size:200% 100%; -webkit-background-clip:text; background-clip:text; -webkit-text-fill-color:transparent; }
.conexao-page--automation .mp-rail-link.active .mp-rail-dot{ background:var(--mp-accent); box-shadow:0 0 12px rgba(128,147,232,.6); }
.conexao-page--automation .mp-rail-link.active .mp-rail-label{ color:var(--mp-accent); }
.conexao-page--automation .mp-glass-titlebar__mark{ color:var(--mp-accent); filter:drop-shadow(0 0 6px var(--mp-accent-glow)); }
.conexao-page--automation .mp-glass-frame{ box-shadow:0 50px 120px -20px rgba(0,0,0,.7),0 0 0 1px rgba(128,147,232,.18),inset 0 1px 0 rgba(255,255,255,.08); }

/* hero image: clean rounded frame, no app/window chrome (user supplies the image) */
.conexao-page--automation .auto-hero-media{ position:relative; z-index:2; border-radius:18px; overflow:hidden; border:1px solid var(--border-soft); background:var(--surface-2); box-shadow:0 50px 120px -20px rgba(0,0,0,.7),0 0 0 1px rgba(128,147,232,.16),inset 0 1px 0 rgba(255,255,255,.06); transition:transform .5s cubic-bezier(0.16,1,0.3,1); }
.conexao-page--automation .auto-hero-media:hover{ transform:translateY(-4px); }
.conexao-page--automation .auto-hero-img{ display:block; width:100%; height:auto; }
html[data-conexao-theme="light"] .conexao-page--automation .auto-hero-media{ background:#FFFFFF; box-shadow:0 40px 90px -30px rgba(0,9,75,.28),0 0 0 1px rgba(0,9,75,.10); }

/* automation hero — isometric building (image-free), theme-adaptive */
.conexao-page--automation{ --iso-node:#0b1336; }
html[data-conexao-theme="light"] .conexao-page--automation{ --iso-node:#FFFFFF; }
.conexao-page--automation .auto-iso-media{ overflow:hidden; }
.conexao-page--automation .auto-iso-cap{ position:absolute; top:16px; left:24px; font-size:11px; font-weight:700; letter-spacing:1.6px; color:var(--mp-accent); z-index:3; }
.conexao-page--automation .auto-iso-cap-r{ position:absolute; top:16px; right:24px; font-size:11px; font-weight:600; color:var(--text-tertiary); z-index:3; }
.conexao-page--automation .auto-iso-cap-r b{ color:var(--text-primary); }
.conexao-page--automation .auto-iso-svg{ display:block; width:100%; height:auto; padding:8px 18px 14px; }
.conexao-page--automation .iso-halo-stop{ stop-color:var(--mp-accent-glow); }
.conexao-page--automation .iso-halo-stop-0{ stop-color:transparent; }
.conexao-page--automation .iso-top{ fill:var(--mp-accent); fill-opacity:.20; stroke:var(--mp-accent); stroke-opacity:.55; stroke-width:1.2; }
.conexao-page--automation .iso-right{ fill:var(--mp-accent); fill-opacity:.12; stroke:var(--mp-accent); stroke-opacity:.34; stroke-width:1; }
.conexao-page--automation .iso-left{ fill:var(--mp-accent); fill-opacity:.055; stroke:var(--mp-accent); stroke-opacity:.34; stroke-width:1; }
.conexao-page--automation .iso-roof{ fill:var(--mp-accent); fill-opacity:.26; stroke:var(--mp-accent); stroke-opacity:.6; stroke-width:1; }
.conexao-page--automation .iso-core{ stroke:var(--mp-accent); stroke-width:3; stroke-linecap:round; opacity:.45; }
.conexao-page--automation .iso-core-flow{ stroke:var(--mp-accent); stroke-width:3; stroke-linecap:round; stroke-dasharray:2 10; opacity:.95; animation:conexaoIsoFlow 2.4s linear infinite; }
@keyframes conexaoIsoFlow{ from{ stroke-dashoffset:24; } to{ stroke-dashoffset:0; } }
.conexao-page--automation .iso-core-glow{ fill:var(--mp-accent); opacity:.5; }
.conexao-page--automation .iso-core-dot{ fill:var(--mp-accent); }
.conexao-page--automation .iso-orb-glow{ fill:var(--mp-accent); fill-opacity:.16; }
.conexao-page--automation .iso-orb{ fill:var(--iso-node); stroke:var(--mp-accent); stroke-width:1.5; }
.conexao-page--automation .iso-ic{ fill:none; stroke:var(--mp-accent); stroke-width:2; stroke-linecap:round; stroke-linejoin:round; }
.conexao-page--automation .iso-lead{ stroke:var(--mp-accent); stroke-opacity:.32; stroke-width:1; }
.conexao-page--automation .iso-lead-dot{ fill:var(--mp-accent); }
.conexao-page--automation .iso-name{ fill:var(--text-primary); font-family:'Inter',sans-serif; font-size:13px; font-weight:600; }
.conexao-page--automation .iso-val{ fill:var(--text-tertiary); font-family:'Inter',sans-serif; font-size:11px; font-weight:500; }
@media (prefers-reduced-motion:reduce){ .conexao-page--automation .iso-core-flow{ animation:none; stroke-dasharray:none; opacity:.5; } }

/* neutral pills (capability / step markers — accent-bound, no product roadmap concept) */
.auto-pill{ display:inline-flex; align-items:center; gap:6px; font-size:10px; font-weight:700; letter-spacing:.06em; text-transform:uppercase; padding:3px 9px; border-radius:100px; vertical-align:middle; }
.auto-pill--ok{ color:var(--mp-accent); background:var(--mp-accent-soft); border:1px solid var(--mp-accent-border); }
html[data-conexao-theme="light"] .auto-pill--ok{ color:#00094B; }

/* CHALLENGE — neutral problem treatment (muted warning, not a product accent) */
.auto-prob .mp-cap-card__icon{ color:#D8975A; }
html[data-conexao-theme="light"] .auto-prob .mp-cap-card__icon{ color:#B06E22; }

/* value / capability band (reuses mp surfaces) */
.auto-band{ background:var(--mp-accent-bg); }
.auto-band__grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:22px; margin-top:36px; }
.auto-band__item{ display:flex; gap:14px; align-items:flex-start; }
.auto-band__ic{ flex:0 0 auto; width:42px; height:42px; border-radius:12px; background:var(--mp-accent-soft); border:1px solid var(--mp-accent-border); color:var(--mp-accent); display:flex; align-items:center; justify-content:center; }
.auto-band__t{ font-size:16px; font-weight:700; color:var(--text-primary); margin-bottom:4px; }
.auto-band__d{ font-size:13.5px; color:var(--text-secondary); line-height:1.55; }
@media (max-width:760px){ .auto-band__grid{ grid-template-columns:1fr; } }

/* ===== INTEGRATION PIPELINE (Automation centerpiece — many building systems ->
   one Conexao automation layer integrated on Niagara -> outcomes, with a
   closed-loop return. Distinct from the Core convergence diagram and the
   Niagara wheel; evolves the homepage flow motif into a left->hub->right pipeline.) ===== */
.auto-suite{ padding-bottom:48px; }
.auto-flow-wrap{ position:relative; width:1000px; max-width:96vw; margin:48px auto 0; aspect-ratio:100/60; }
.auto-flow-svg{ position:absolute; inset:0; width:100%; height:100%; overflow:visible; pointer-events:none; }
.auto-flow-path{ fill:none; stroke:var(--auto-line); stroke-width:1.4; opacity:.55; }
.auto-flow-loop{ fill:none; stroke:var(--auto-loop); stroke-width:1.3; stroke-dasharray:5 6; opacity:.85; }
.auto-flow-pulse{ fill:var(--mp-accent); }
.auto-flow-pulse--loop{ fill:var(--auto-soft); }
.auto-flow-cap{ fill:var(--text-tertiary); font-family:'Poppins',sans-serif; font-size:11px; font-weight:700; letter-spacing:2px; }
.auto-flow-stage{ fill:var(--text-tertiary); font-family:'Poppins',sans-serif; font-size:11px; font-weight:700; letter-spacing:2.5px; }
.auto-node{ position:absolute; transform:translate(-50%,-50%); width:188px; display:flex; align-items:center; gap:11px; padding:12px 14px; background:var(--auto-node); border:1px solid var(--border-soft); border-radius:13px; transition:border-color .25s ease, transform .25s ease; z-index:2; }
.auto-node--out{ width:178px; }
.auto-node:hover{ border-color:var(--mp-accent-border); transform:translate(-50%,-50%) translateY(-2px); }
.auto-node__ic{ width:34px; height:34px; flex:0 0 auto; border-radius:9px; background:var(--mp-accent-soft); border:1px solid var(--mp-accent-border); color:var(--mp-accent); display:flex; align-items:center; justify-content:center; }
.auto-node__ic svg{ width:18px; height:18px; }
.auto-node__t{ font-family:'Poppins',sans-serif; font-size:13px; font-weight:600; color:var(--text-primary); line-height:1.2; }
.auto-node__s{ display:block; font-size:10.5px; font-weight:500; letter-spacing:.2px; color:var(--text-tertiary); margin-top:2px; }
.auto-hub{ position:absolute; left:50%; top:50%; transform:translate(-50%,-50%); width:21.2%; min-height:188px; border-radius:24px; background:var(--auto-hub); border:1.5px solid var(--mp-accent-border); display:flex; flex-direction:column; align-items:center; justify-content:center; gap:8px; padding:20px 16px; text-align:center; box-shadow:0 0 0 9px var(--mp-accent-bg),0 30px 80px -20px rgba(0,0,0,.6); z-index:3; }
.auto-hub__ring{ position:absolute; inset:-1px; border-radius:24px; border:1px solid var(--mp-accent); opacity:.4; animation:auto-hub-pulse 3.2s ease-in-out infinite; }
@keyframes auto-hub-pulse{ 0%,100%{ transform:scale(1); opacity:.35; } 50%{ transform:scale(1.045); opacity:.1; } }
.auto-hub__k{ font-family:'Poppins',sans-serif; font-weight:800; font-size:14.5px; letter-spacing:1px; color:var(--text-primary); line-height:1.15; }
.auto-hub__s{ font-size:9px; letter-spacing:1.6px; color:var(--mp-accent); text-transform:uppercase; font-weight:700; }
.auto-hub__rules{ display:flex; flex-direction:column; gap:6px; width:100%; margin-top:4px; }
.auto-hub__rule{ display:flex; align-items:center; gap:7px; padding:6px 9px; border-radius:8px; background:var(--mp-accent-soft); border:1px solid var(--mp-accent-border); font-family:'Poppins',sans-serif; font-size:10px; font-weight:600; color:var(--text-primary); }
.auto-hub__rk{ font-size:8.5px; font-weight:800; letter-spacing:.06em; color:var(--mp-accent); text-transform:uppercase; flex:0 0 auto; }
@media (prefers-reduced-motion: reduce){ .auto-hub__ring{ animation:none; } .auto-flow-pulse,.auto-flow-pulse--loop{ display:none; } }

.auto-suite__mobile{ display:none; }
@media (max-width:1024px){
  .auto-flow-wrap{ display:none; }
  .auto-suite__mobile{ display:block; margin-top:26px; }
  .auto-suite__mlabel{ font-family:'Poppins',sans-serif; font-size:11px; font-weight:700; letter-spacing:2px; color:var(--mp-accent); text-transform:uppercase; margin:18px 0 10px; }
  .auto-suite__mlabel:first-child{ margin-top:0; }
  .auto-mgrid{ display:grid; grid-template-columns:1fr 1fr; gap:10px; }
  .auto-chip{ display:flex; align-items:center; gap:10px; padding:12px 14px; background:var(--surface-2); border:1px solid var(--border-soft); border-radius:12px; }
  .auto-chip__ic{ width:20px; height:20px; flex:0 0 auto; color:var(--mp-accent); }
  .auto-chip__ic svg{ width:100%; height:100%; }
  .auto-chip b{ font-size:12px; font-weight:600; color:var(--text-primary); }
  .auto-chip small{ display:block; font-size:10px; font-weight:500; color:var(--text-tertiary); }
  .auto-mengine{ display:flex; align-items:center; justify-content:center; gap:10px; padding:14px; margin:12px 0; border-radius:12px; background:var(--mp-accent-soft); border:1px solid var(--mp-accent-border); font-family:'Poppins',sans-serif; font-weight:800; letter-spacing:1px; font-size:13px; color:var(--text-primary); }
  .auto-mengine svg{ width:20px; height:20px; color:var(--mp-accent); }
}

/* CREDENTIAL STAT BAND */
.auto-stats{ display:grid; grid-template-columns:repeat(4,1fr); gap:16px; margin-top:8px; }
.auto-stat{ background:var(--surface-2); border:1px solid var(--border-soft); border-radius:var(--radius-lg); padding:26px 20px; text-align:center; }
.auto-stat__n{ font-family:'Poppins',sans-serif; font-size:40px; font-weight:800; color:var(--mp-accent); line-height:1; letter-spacing:-1px; }
.auto-stat__l{ font-size:11px; letter-spacing:1.5px; text-transform:uppercase; color:var(--text-tertiary); margin-top:10px; font-weight:600; }
.auto-stat__d{ font-size:12.5px; color:var(--text-secondary); margin-top:6px; }
@media (max-width:760px){ .auto-stats{ grid-template-columns:repeat(2,1fr); } }

/* CASE-STUDY CALLOUT */
.auto-case{ display:grid; grid-template-columns:1.15fr 1fr; gap:34px; align-items:center; background:var(--surface-2); border:1px solid var(--mp-accent-border); border-radius:var(--radius-xl); padding:34px 36px; margin-top:8px; box-shadow:inset 0 0 0 1px var(--mp-accent-bg); }
.auto-case__tag{ display:inline-block; font-family:'Poppins',sans-serif; font-size:11px; font-weight:700; letter-spacing:2px; text-transform:uppercase; color:var(--mp-accent); margin-bottom:14px; }
.auto-case__t{ font-family:'Poppins',sans-serif; font-size:23px; font-weight:700; color:var(--text-primary); line-height:1.25; margin:0 0 12px; }
.auto-case__d{ font-size:14px; color:var(--text-secondary); line-height:1.6; margin:0; }
.auto-case__metrics{ display:grid; grid-template-columns:1fr 1fr; gap:14px; }
.auto-case__metric{ background:var(--surface-1); border:1px solid var(--border-soft); border-radius:var(--radius-lg); padding:18px; }
.auto-case__mn{ font-family:'Poppins',sans-serif; font-size:30px; font-weight:800; color:var(--mp-accent); line-height:1; letter-spacing:-.5px; }
.auto-case__ml{ font-size:12px; color:var(--text-secondary); margin-top:7px; line-height:1.4; }
@media (max-width:820px){ .auto-case{ grid-template-columns:1fr; gap:24px; padding:28px 24px; } }

/* DELIVERY / engagement cards */
.auto-deploy{ display:grid; grid-template-columns:1fr 1fr; gap:20px; margin-top:8px; }
.auto-deploy--3{ grid-template-columns:repeat(3,1fr); }
.auto-dcard{ background:var(--surface-2); border:1px solid var(--border-soft); border-radius:var(--radius-xl); padding:30px; }
.auto-dcard--now{ border-color:var(--mp-accent-border); box-shadow:inset 0 0 0 1px var(--mp-accent-bg); }
.auto-dcard__h{ display:flex; align-items:center; gap:13px; margin-bottom:18px; }
.auto-dcard__ic{ width:44px; height:44px; border-radius:12px; background:var(--mp-accent-soft); border:1px solid var(--mp-accent-border); color:var(--mp-accent); display:flex; align-items:center; justify-content:center; flex:0 0 auto; }
.auto-dcard__ic svg{ width:22px; height:22px; }
.auto-dcard__step{ margin-left:auto; font-family:'Poppins',sans-serif; font-size:12px; font-weight:800; letter-spacing:.1em; color:var(--mp-accent); opacity:.6; }
.auto-dcard h3{ font-family:'Poppins',sans-serif; font-size:19px; font-weight:700; color:var(--text-primary); margin:0; }
.auto-dcard ul{ list-style:none; margin:0; padding:0; }
.auto-dcard li{ display:flex; gap:11px; align-items:flex-start; font-size:14px; color:var(--text-secondary); margin-bottom:12px; line-height:1.5; }
.auto-dcard li svg{ width:18px; height:18px; color:var(--mp-accent); flex:0 0 auto; margin-top:2px; }
.auto-dcard__note{ font-size:12.5px; color:var(--text-tertiary); border-top:1px solid var(--border-faint); padding-top:14px; margin-top:4px; }
@media (max-width:980px){ .auto-deploy--3{ grid-template-columns:1fr; } }
@media (max-width:820px){ .auto-deploy{ grid-template-columns:1fr; } }

/* ==========================================================================
   RESOURCES — listing pages (.conexao-page--resource) — v3.11.0
   Blog · News · Case Studies · Webinars · Events · Brochures · Documentation
   Accent mirrors the Automation zone (navy / periwinkle). Pill + thumbnail
   tints are driven by the configurable --pill / --tint custom properties.
   ========================================================================== */
.conexao-page--resource{ --mp-accent:#8093E8; --mp-accent-soft:rgba(128,147,232,0.13); --mp-accent-border:rgba(128,147,232,0.34); --mp-accent-bg:rgba(128,147,232,0.05); --mp-accent-glow:rgba(128,147,232,0.42); }
html[data-conexao-theme="light"] .conexao-page--resource{ --mp-accent:#00094B; --mp-accent-soft:rgba(0,9,75,0.07); --mp-accent-border:rgba(0,9,75,0.22); --mp-accent-bg:rgba(0,9,75,0.04); --mp-accent-glow:rgba(0,9,75,0.16); }

.conexao-page--resource .conexao-h1,.conexao-page--resource .conexao-h2{ font-family:'Poppins',sans-serif; }
.conexao-page--resource .conexao-eyebrow{ color:var(--mp-accent); background:var(--mp-accent-soft); border-color:var(--mp-accent-border); }
.conexao-page--resource .mp-shimmer{ background:linear-gradient(90deg,#A9B6F2 0%,#8093E8 30%,#5C72C9 50%,#8093E8 70%,#A9B6F2 100%); background-size:200% 100%; -webkit-background-clip:text; background-clip:text; -webkit-text-fill-color:transparent; padding-bottom:0.18em; margin-bottom:-0.18em; }
html[data-conexao-theme="light"] .conexao-page--resource .mp-shimmer{ background:linear-gradient(90deg,#00094B 0%,#2A3D9E 50%,#00094B 100%); background-size:200% 100%; -webkit-background-clip:text; background-clip:text; -webkit-text-fill-color:transparent; }

/* page header */
.conexao-page--resource .res-head{ padding-bottom:var(--space-2xl); }
.conexao-page--resource .res-head__inner{ max-width:var(--container-max); margin:0 auto; position:relative; }
.conexao-page--resource .res-toolbar{ display:flex; flex-wrap:wrap; gap:14px; align-items:center; justify-content:space-between; margin-top:28px; }
.conexao-page--resource .res-chips{ display:flex; flex-wrap:wrap; gap:8px; }
.conexao-page--resource .res-chip{ font-size:13px; font-weight:500; padding:8px 16px; border-radius:var(--radius-pill); color:var(--text-secondary); background:var(--surface-2); border:1px solid var(--border-soft); text-decoration:none; transition:.18s; }
.conexao-page--resource .res-chip:hover{ border-color:var(--border-hover); color:var(--text-primary); }
.conexao-page--resource .res-chip.is-active{ color:var(--mp-accent); background:var(--mp-accent-soft); border-color:var(--mp-accent-border); }
.conexao-page--resource .res-count{ font-size:13px; color:var(--text-tertiary); }

/* grid + article card */
.conexao-page--resource .res-grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:26px; }
.conexao-page--resource .res-card{ display:flex; flex-direction:column; border-radius:var(--radius-lg); overflow:hidden; background:var(--surface-2); border:1px solid var(--border-soft); transition:transform .25s ease,border-color .25s ease; }
.conexao-page--resource .res-card:hover{ transform:translateY(-4px); border-color:var(--mp-accent-border); }
.conexao-page--resource .res-thumb{ position:relative; aspect-ratio:16/9; display:flex; align-items:flex-end; padding:14px; text-decoration:none; background:linear-gradient(135deg,rgba(128,147,232,0.18),rgba(10,18,48,0.6)); overflow:hidden; }
.conexao-page--resource .res-thumb--tinted{ background:linear-gradient(135deg,rgba(128,147,232,0.18),rgba(10,18,48,0.6)); background: linear-gradient(135deg,rgba(93,202,165,0.22),rgba(10,18,48,0.7)) /* fallback */; background: linear-gradient(135deg,color-mix(in srgb,var(--tint) 22%,transparent),rgba(10,18,48,0.7)); }
.conexao-page--resource .res-thumb__img{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; display:block; }
.conexao-page--resource .res-thumb__scrim{ position:absolute; inset:0; background:linear-gradient(180deg,rgba(5,7,26,0) 40%,rgba(5,7,26,0.55) 100%); }
.conexao-page--resource .res-thumb__type{ position:relative; z-index:1; font-size:11px; font-weight:600; letter-spacing:1.5px; text-transform:uppercase; color:rgba(255,255,255,0.82); }
.conexao-page--resource .res-thumb__play{ position:absolute; inset:0; display:flex; align-items:center; justify-content:center; z-index:1; }
.conexao-page--resource .res-thumb__play span{ width:54px; height:54px; border-radius:50%; background:rgba(5,7,26,0.55); border:1.5px solid rgba(255,255,255,0.55); display:flex; align-items:center; justify-content:center; color:#fff; }
.conexao-page--resource .res-card__body{ padding:20px 22px 22px; display:flex; flex-direction:column; gap:12px; flex:1; }
.conexao-page--resource .res-card__title{ font-family:'Poppins',sans-serif; font-size:19px; line-height:1.28; font-weight:600; letter-spacing:-0.3px; margin:0; }
.conexao-page--resource .res-card__title a{ color:var(--text-primary); text-decoration:none; }
.conexao-page--resource .res-card__title a:hover{ color:var(--mp-accent); }
.conexao-page--resource .res-card__excerpt{ font-size:14px; line-height:1.55; color:var(--text-secondary); margin:0; }
.conexao-page--resource .res-card__foot{ margin-top:auto; display:flex; align-items:center; justify-content:space-between; padding-top:6px; }
.conexao-page--resource .res-meta{ font-size:12.5px; color:var(--text-tertiary); display:inline-flex; align-items:center; gap:8px; }
.conexao-page--resource .res-meta svg{ display:block; }
.conexao-page--resource .res-readmore{ font-size:13px; font-weight:600; color:var(--mp-accent); display:inline-flex; align-items:center; gap:6px; text-decoration:none; }

/* product pill (color from --pill) */
.conexao-page--resource .res-pill{ display:inline-flex; align-items:center; gap:6px; font-size:11px; font-weight:600; letter-spacing:0.4px; padding:5px 11px; border-radius:var(--radius-pill); width:fit-content; color:var(--pill,var(--mp-accent)); background:rgba(255,255,255,0.05); border:1px solid var(--border-soft); background: rgba(93,202,165,0.3) /* fallback */; background: color-mix(in srgb,var(--pill,var(--mp-accent)) 12%,transparent); border: 1px solid rgba(93,202,165,0.3) /* fallback */; border: 1px solid color-mix(in srgb,var(--pill,var(--mp-accent)) 32%,transparent); }
.conexao-page--resource .res-pill__dot{ width:6px; height:6px; border-radius:50%; background:currentColor; }

/* two-section (Brochures / Documentation) */
.conexao-page--resource .res-sect{ margin-top:var(--space-2xl); }
.conexao-page--resource .res-sect:first-of-type{ margin-top:8px; }
.conexao-page--resource .res-sect__head{ display:flex; align-items:center; gap:14px; margin-bottom:24px; padding-bottom:16px; border-bottom:1px solid var(--border-soft); }
.conexao-page--resource .res-sect__label{ display:inline-flex; align-items:center; gap:9px; font-family:'Poppins',sans-serif; font-size:15px; font-weight:600; letter-spacing:0.3px; text-transform:uppercase; color:var(--text-primary); }
.conexao-page--resource .res-sect__label svg{ display:block; color:var(--pill,var(--mp-accent)); }
.conexao-page--resource .res-sect__tag{ font-size:11px; font-weight:600; letter-spacing:0.5px; padding:4px 10px; border-radius:var(--radius-pill); color:var(--pill,var(--mp-accent)); background:rgba(255,255,255,0.05); border:1px solid var(--border-soft); background: rgba(93,202,165,0.3) /* fallback */; background: color-mix(in srgb,var(--pill,var(--mp-accent)) 12%,transparent); border: 1px solid rgba(93,202,165,0.3) /* fallback */; border: 1px solid color-mix(in srgb,var(--pill,var(--mp-accent)) 30%,transparent); }
.conexao-page--resource .res-sect__count{ margin-left:auto; font-size:12.5px; color:var(--text-tertiary); }

/* brochure card */
/* Brochure card — clickable cover (featured image) linking to the brochure
   URL, hover reveals the action, title caption below. v3.27.0 */
.conexao-page--resource .res-broch{ display:flex; flex-direction:column; gap:12px; text-decoration:none; color:inherit; }
.conexao-page--resource .res-broch__frame{ position:relative; aspect-ratio:3/4; border-radius:var(--radius-lg); overflow:hidden; display:flex; align-items:center; justify-content:center; color:rgba(255,255,255,0.85); border:1px solid var(--border-soft); box-shadow:0 12px 30px -18px rgba(0,0,0,0.7); transition:transform .18s ease, box-shadow .18s ease, border-color .18s ease; background:linear-gradient(150deg,rgba(128,147,232,0.18),rgba(10,18,48,0.78)); background: linear-gradient(150deg,rgba(93,202,165,0.2),rgba(10,18,48,0.8)) /* fallback */; background: linear-gradient(150deg,color-mix(in srgb,var(--tint) 20%,transparent),rgba(10,18,48,0.8)); }
.conexao-page--resource .res-broch:hover .res-broch__frame{ transform:translateY(-4px); box-shadow:0 20px 42px -18px rgba(0,0,0,0.8); border-color:var(--mp-accent-border); }
.conexao-page--resource .res-broch__frame::after{ content:""; position:absolute; left:0; top:0; bottom:0; width:4px; background:var(--tint); }
.conexao-page--resource .res-broch__img{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; display:block; }
.conexao-page--resource .res-broch__placeholder{ display:flex; align-items:center; justify-content:center; color: rgba(93,202,165,0.4) /* fallback */; color: color-mix(in srgb,var(--tint) 70%, #fff); opacity:.8; }
.conexao-page--resource .res-broch__hover{ position:absolute; inset:0; z-index:1; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:8px; opacity:0; transition:opacity .18s ease; color:#fff; background: linear-gradient(0deg, rgba(93,202,165,0.4), rgba(4,7,20,0.72)) /* fallback */; background: linear-gradient(0deg, color-mix(in srgb,var(--tint) 30%, rgba(4,7,20,0.88)), rgba(4,7,20,0.72)); }
.conexao-page--resource .res-broch:hover .res-broch__hover, .conexao-page--resource .res-broch:focus-visible .res-broch__hover{ opacity:1; }
.conexao-page--resource .res-broch__hicon{ width:34px; height:34px; border-radius:50%; display:flex; align-items:center; justify-content:center; background:var(--tint); color:#04122a; }
.conexao-page--resource .res-broch__hicon svg{ display:block; }
.conexao-page--resource .res-broch__htxt{ font-size:11px; font-weight:700; letter-spacing:1.2px; text-transform:uppercase; }
.conexao-page--resource .res-broch__title{ font-family:'Poppins',sans-serif; font-size:14px; font-weight:600; line-height:1.32; color:var(--text-primary); }
.conexao-page--resource .res-broch:hover .res-broch__title{ color:var(--mp-accent); }

/* documentation rows */
.conexao-page--resource .res-doc-list{ display:flex; flex-direction:column; border-radius:var(--radius-lg); overflow:hidden; border:1px solid var(--border-soft); }
.conexao-page--resource .res-doc{ display:flex; align-items:center; gap:16px; padding:18px 22px; background:var(--surface-2); border-top:1px solid var(--border-faint); transition:background .18s ease; }
.conexao-page--resource .res-doc:first-child{ border-top:none; }
.conexao-page--resource .res-doc:hover{ background:var(--surface-hover); }
.conexao-page--resource .res-doc__ic{ flex:none; width:40px; height:40px; border-radius:var(--radius-md); display:flex; align-items:center; justify-content:center; color:var(--mp-accent); background:var(--mp-accent-soft); border:1px solid var(--mp-accent-border); }
.conexao-page--resource .res-doc__ic svg{ display:block; }
.conexao-page--resource .res-doc__main{ flex:1; min-width:0; }
.conexao-page--resource .res-doc__title{ font-family:'Poppins',sans-serif; font-size:15px; font-weight:600; color:var(--text-primary); margin:0 0 3px; }
.conexao-page--resource .res-doc__meta{ font-size:12.5px; color:var(--text-tertiary); display:flex; flex-wrap:wrap; gap:10px; align-items:center; }
.conexao-page--resource .res-doc__tag{ font-size:10.5px; font-weight:600; letter-spacing:0.4px; text-transform:uppercase; padding:3px 9px; border-radius:var(--radius-pill); color:var(--text-secondary); background:var(--surface-3); border:1px solid var(--border-soft); }
.conexao-page--resource .res-doc__actions{ display:flex; gap:8px; flex:none; }
.conexao-page--resource .res-doc__btn{ display:inline-flex; align-items:center; gap:6px; font-size:12.5px; font-weight:600; padding:8px 14px; border-radius:var(--radius-pill); color:var(--mp-accent); background:var(--mp-accent-soft); border:1px solid var(--mp-accent-border); text-decoration:none; }
.conexao-page--resource .res-doc__btn svg{ display:block; }

/* pagination + empty */
.conexao-page--resource .res-pager{ display:flex; align-items:center; justify-content:center; gap:8px; margin-top:var(--space-2xl); flex-wrap:wrap; }
.conexao-page--resource .res-pager a,.conexao-page--resource .res-pager span{ min-width:42px; height:42px; padding:0 12px; display:inline-flex; align-items:center; justify-content:center; gap:6px; border-radius:var(--radius-md); font-size:14px; font-weight:600; color:var(--text-secondary); background:var(--surface-2); border:1px solid var(--border-soft); text-decoration:none; }
.conexao-page--resource .res-pager a:hover{ border-color:var(--border-hover); color:var(--text-primary); }
.conexao-page--resource .res-pager .is-active{ color:var(--conexao-navy-deep); background:var(--mp-accent); border-color:var(--mp-accent); }
.conexao-page--resource .res-pager .is-nav{ color:var(--text-tertiary); }
.conexao-page--resource .res-pager .gap{ background:transparent; border:none; color:var(--text-tertiary); min-width:auto; padding:0 4px; }
.conexao-page--resource .res-pager svg{ display:block; }
.conexao-page--resource .res-empty{ font-size:15px; color:var(--text-tertiary); padding:40px 0; }

@media (max-width:1024px){
  .conexao-page--resource .res-grid{ grid-template-columns:repeat(2,1fr); }
}
@media (max-width:680px){
  .conexao-page--resource .res-grid{ grid-template-columns:1fr; }
  .conexao-page--resource .res-doc{ flex-wrap:wrap; }
}


/* ============================================================================
   HOMEPAGE TESTIMONIALS (v3.13.0)
   ============================================================================ */
/* ===== Homepage testimonials (scoped) ===== */
.conexao-testimonials .tm-intro{display:flex;justify-content:space-between;align-items:flex-end;gap:40px;margin-bottom:56px;flex-wrap:wrap}
.conexao-testimonials .conexao-lead{max-width:620px}
.tm-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px;position:relative;z-index:1}
.tm-card{--acc:#5DCAA5;display:flex;flex-direction:column;width:100%;background:var(--surface-2);border:1px solid var(--border-soft);border-radius:var(--radius-lg);overflow:hidden;cursor:pointer;text-align:left;padding:0;font-family:inherit;color:inherit;transition:border-color .25s ease,transform .25s ease,background .25s ease}
.tm-card:hover{border-color: rgba(93,202,165,0.45) /* fallback */;border-color: color-mix(in srgb,var(--acc) 45%,transparent);background:var(--surface-hover);transform:translateY(-4px)}
.tm-card:focus-visible{outline:2px solid var(--acc);outline-offset:2px}
.tm-poster{position:relative;width:100%;padding-top:56.25%;overflow:hidden}
.tm-poster__bg{position:absolute;inset:0;background: radial-gradient(120% 120% at 30% 20%,#1e3c4a,#070c1d 70%) /* fallback */;background: radial-gradient(120% 120% at 30% 20%,color-mix(in srgb,var(--acc) 22%,#0c1430),#070c1d 70%)}
.tm-poster__img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center 22%;display:block;transition:transform .4s ease}
.tm-card:hover .tm-poster__img{transform:scale(1.05)}
.tm-poster__scrim{position:absolute;inset:0;background:linear-gradient(180deg,rgba(5,7,26,.15),rgba(5,7,26,.55))}
.tm-stamp{position:absolute;top:12px;left:12px;z-index:2;display:inline-flex;align-items:center;gap:6px;font-size:11px;font-weight:600;letter-spacing:.3px;color:#E6ECF7;background:rgba(5,7,26,.6);border:1px solid rgba(255,255,255,.14);border-radius:7px;padding:5px 9px}
.tm-stamp svg{opacity:.85}
.tm-play{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;z-index:1}
.tm-play>span{width:52px;height:52px;border-radius:50%;background:rgba(5,7,26,.45);border:1px solid rgba(255,255,255,.25);display:flex;align-items:center;justify-content:center;color:#fff;transition:background .25s ease,border-color .25s ease,transform .25s ease,color .25s ease}
.tm-play>span svg{margin-left:3px}
.tm-card:hover .tm-play>span{background:var(--acc);border-color:var(--acc);color:#05071A;transform:scale(1.06)}
.tm-dur{position:absolute;right:12px;bottom:12px;z-index:2;font-size:11px;font-weight:600;color:#fff;background:rgba(5,7,26,.6);border:1px solid rgba(255,255,255,.12);padding:4px 8px;border-radius:6px}
.tm-body{padding:20px 22px 24px;display:flex;flex-direction:column;flex:1}
.tm-pill{display:inline-flex;align-items:center;gap:7px;align-self:flex-start;font-size:10.5px;font-weight:600;letter-spacing:.4px;padding:5px 11px;border-radius:var(--radius-pill);color:var(--acc);background: rgba(93,202,165,0.1) /* fallback */;background: color-mix(in srgb,var(--acc) 10%,transparent);border: 1px solid rgba(93,202,165,0.26) /* fallback */;border: 1px solid color-mix(in srgb,var(--acc) 26%,transparent);margin-bottom:14px}
.tm-pill__dot{width:6px;height:6px;border-radius:50%;background:var(--acc)}
.tm-quote{font-family:var(--font-primary);font-size:16px;line-height:1.4;font-weight:600;letter-spacing:-.3px;color:var(--text-primary);margin:0 0 16px;flex:1}
.tm-meta{display:flex;flex-direction:column;gap:2px;padding-top:14px;border-top:1px solid var(--border-soft)}
.tm-name{font-size:13px;font-weight:600;color:var(--text-primary)}
.tm-role{font-size:12px;color:var(--text-tertiary)}
.tm-lb{position:fixed;inset:0;z-index:2000;display:none;align-items:center;justify-content:center;padding:32px;background:rgba(3,4,14,.82);backdrop-filter:blur(6px)}
.tm-lb.is-open{display:flex}
.tm-lb__inner{position:relative;width:100%;max-width:980px}
.tm-lb__frame{position:relative;aspect-ratio:16/9;background:#000;border-radius:var(--radius-md);overflow:hidden;border:1px solid var(--border-medium)}
.tm-lb__frame iframe{position:absolute;inset:0;width:100%;height:100%;border:0}
.tm-lb__close{position:absolute;top:-46px;right:0;width:38px;height:38px;border-radius:50%;background:var(--surface-2);border:1px solid var(--border-soft);color:#fff;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:background .2s ease}
.tm-lb__close:hover{background:var(--surface-hover)}
.tm-lb__cap{margin-top:16px;color:var(--text-secondary);font-size:14px;text-align:center}
.tm-lb__cap b{color:var(--text-primary);font-weight:600}
@media(max-width:980px){.tm-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:640px){.tm-grid{grid-template-columns:1fr}.conexao-testimonials .tm-intro{margin-bottom:40px}.tm-lb{padding:20px}.tm-lb__close{top:0;right:0;transform:translate(8px,-46px)}}


/* ==========================================================================
   FULL-BLEED SAFETY NET (v3.13.1)
   The custom header.php / footer.php render their own full-width chrome with
   no GeneratePress page container between <body> and our markup. If any parent
   theme or plugin wrapper (or a contained-container page setting) tries to box
   the document, these rules neutralize it so every Conexao template — the
   homepage included — stays edge-to-edge.
   ========================================================================== */
html,
body {
  max-width: none !important;
  width: auto !important;
  margin: 0 !important;
  padding: 0 !important;
}

/* Our own top-level chrome always spans the viewport */
.conexao-nav,
.conexao-main,
.conexao-footer {
  width: 100% !important;
  max-width: none !important;
  margin-left: 0 !important;
  margin-right: 0 !important;
  float: none !important;
}

/* Any container WordPress / GeneratePress / a plugin might inject around the
   document or the content gets flattened to full width. */
#page,
.site,
.site-content,
.content-area,
.site-main,
.inside-article,
.entry-content,
.grid-container,
.wp-site-blocks,
.gb-container {
  max-width: none !important;
  width: 100% !important;
  margin: 0 !important;
  padding: 0 !important;
  float: none !important;
}

/* ============================================================================
   MILESTONE SUITE TIMELINE (.mst-) — v3.15.0
   XProtect-style 24h timeline with sweeping playhead and module detection.
   Lives only on the Milestone product page (patterns/milestone-suite.php,
   assets/milestone-suite.js). Mobile swaps the player for chips.
   ============================================================================ */
.mst-suite{ --mst-disc:var(--conexao-navy-card); --mst-acc:#5BBFEF; --mst-track:rgba(255,255,255,0.03); --mst-played:rgba(125,193,240,0.10); }
html[data-conexao-theme="light"] .mst-suite{ --mst-disc:#FFFFFF; --mst-acc:#0078C8; --mst-track:rgba(10,17,36,0.04); --mst-played:rgba(0,120,200,0.08); }
.mst-head{ text-align:center; max-width:760px; margin:0 auto 26px; }
.mst-player{ background:var(--surface-2); border:1px solid var(--border-soft); border-radius:20px; padding:30px 38px 26px; box-shadow:0 30px 80px rgba(0,0,0,.35); }
html[data-conexao-theme="light"] .mst-player{ background:#FFFFFF; box-shadow:0 18px 50px rgba(20,40,60,.10); }
.mst-top{ display:flex; align-items:center; gap:14px; margin-bottom:120px; }
.mst-spacer{ flex:1 1 0; min-width:0; }
.mst-rec,.mst-time{ flex:0 0 auto; width:86px; }
.mst-rec{ display:flex; align-items:center; gap:7px; font-size:10px; font-weight:700; letter-spacing:1.5px; color:#FF7B7B; }
.mst-rec i{ width:8px; height:8px; border-radius:50%; background:#FF5C5C; animation:mst-rec 1.6s ease-in-out infinite; }
@keyframes mst-rec{ 0%,100%{opacity:1;} 50%{opacity:.25;} }
.mst-logo{ width:128px; display:block; }
.mst-logo--on-dark{ display:block; } .mst-logo--on-light{ display:none; }
html[data-conexao-theme="light"] .mst-logo--on-dark{ display:none; }
html[data-conexao-theme="light"] .mst-logo--on-light{ display:block; }
.mst-for{ font-family:'Poppins',sans-serif; font-size:11px; font-weight:800; letter-spacing:2px; color:var(--mp-accent); padding-left:14px; border-left:1px solid var(--border-soft); }
.mst-time{ font-family:'Poppins',sans-serif; font-size:15px; font-weight:700; letter-spacing:2px; color:var(--text-primary); font-variant-numeric:tabular-nums; text-align:right; }
.mst-zone{ position:relative; margin:0 8px 116px; }
.mst-track{ position:relative; height:54px; background:var(--mst-track); border:1px solid var(--border-medium); border-radius:12px; cursor:crosshair; }
.mst-ticks i{ position:absolute; top:0; width:1px; height:8px; background:var(--border-medium); pointer-events:none; }
.mst-ticks i.maj{ height:15px; background:var(--mp-accent-border); }
.mst-blocks{ position:absolute; left:0; right:0; bottom:7px; height:13px; pointer-events:none; }
.mst-blocks i{ position:absolute; top:0; bottom:0; background:var(--mp-accent); border-radius:3px; }
.mst-played{ position:absolute; left:0; top:0; bottom:0; width:0; background:var(--mst-played); border-radius:12px 0 0 12px; pointer-events:none; }
.mst-headline{ position:absolute; top:-22px; bottom:-22px; left:0; width:2.5px; background:var(--mst-acc); box-shadow:0 0 14px var(--mst-acc); border-radius:2px; pointer-events:none; z-index:5; }
.mst-headline::before{ content:''; position:absolute; top:-8px; left:50%; transform:translateX(-50%); border:8px solid transparent; border-top-color:var(--mst-acc); }
.mst-stamp{ display:none; position:absolute; top:-54px; left:0; transform:translateX(-50%); font-family:'Poppins',sans-serif; font-size:12px; font-weight:700; letter-spacing:1.5px; color:var(--mst-acc); background:var(--mst-disc); border:1px solid var(--mp-accent-border); padding:5px 11px; border-radius:8px; pointer-events:none; z-index:6; font-variant-numeric:tabular-nums; white-space:nowrap; }
.mst-track.scrubbing .mst-stamp{ display:block; }
.mst-times{ display:flex; justify-content:space-between; font-size:10.5px; font-weight:500; color:var(--text-tertiary); margin-top:14px; letter-spacing:1px; }
.mst-ev{ position:absolute; top:50%; z-index:4; }
.mst-dot{ position:absolute; left:0; top:0; transform:translate(-50%,-50%) rotate(45deg); width:15px; height:15px; border-radius:4px; background:var(--mst-disc); border:2px solid var(--text-tertiary); transition:all .3s ease; }
.mst-ping{ position:absolute; left:0; top:0; transform:translate(-50%,-50%); width:46px; height:46px; border-radius:50%; border:1.6px solid var(--mst-acc); opacity:0; pointer-events:none; }
.mst-ev.lit .mst-dot{ border-color:var(--mst-acc); background:var(--mst-acc); box-shadow:0 0 12px var(--mst-acc); }
.mst-ev.flare .mst-ping{ animation:mst-ping .8s ease-out; }
@keyframes mst-ping{ 0%{transform:translate(-50%,-50%) scale(.4);opacity:.95;} 100%{transform:translate(-50%,-50%) scale(1.8);opacity:0;} }
.mst-ev.flare .mst-dot{ transform:translate(-50%,-50%) rotate(45deg) scale(1.35); }
.mst-tag{ position:absolute; left:0; transform:translateX(-50%); display:flex; align-items:center; gap:10px; background:var(--mst-disc); border:1px solid var(--border-soft); padding:10px 14px; border-radius:11px; white-space:nowrap; transition:border-color .3s ease, box-shadow .3s ease; }
.mst-ev--up .mst-tag{ bottom:44px; } .mst-ev--dn .mst-tag{ top:44px; }
.mst-ev--up .mst-tag::after,.mst-ev--dn .mst-tag::before{ content:''; position:absolute; left:50%; width:1px; height:18px; background:var(--border-medium); }
.mst-ev--up .mst-tag::after{ top:100%; } .mst-ev--dn .mst-tag::before{ bottom:100%; }
.mst-tag__ic{ display:block; width:20px; height:20px; background:var(--text-tertiary); -webkit-mask-repeat:no-repeat; mask-repeat:no-repeat; -webkit-mask-position:center; mask-position:center; -webkit-mask-size:contain; mask-size:contain; transition:background .3s ease; }
.mst-tag__tx{ display:flex; flex-direction:column; gap:1px; }
.mst-tag__tx b{ font-family:'Poppins',sans-serif; font-size:12.5px; font-weight:600; letter-spacing:.1px; color:var(--text-secondary); transition:color .3s ease; }
.mst-hr{ font-size:9px; font-weight:600; letter-spacing:1px; color:var(--text-tertiary); }
.mst-ev.lit .mst-hr{ color:var(--mp-accent); }
.mst-tag__tx i{ font-size:10px; font-style:normal; color:var(--text-tertiary); max-width:0; overflow:hidden; opacity:0; transition:max-width .45s ease, opacity .4s ease; }
.mst-ev.lit .mst-tag{ border-color:var(--mp-accent-border); box-shadow:0 8px 26px rgba(0,0,0,.30); }
html[data-conexao-theme="light"] .mst-ev.lit .mst-tag{ box-shadow:0 8px 26px rgba(20,40,60,.12); }
.mst-ev.lit .mst-tag__ic{ background:var(--mp-accent); }
.mst-ev.lit .mst-tag__tx b{ color:var(--text-primary); }
.mst-ev.active .mst-tag__tx i{ max-width:290px; opacity:1; }
.mst-hint{ text-align:center; font-size:11.5px; color:var(--text-tertiary); margin:0; }
.mst-mobile{ display:none; }
@media (max-width:760px){
  .mst-player{ display:none; }
  .mst-mobile{ display:grid; grid-template-columns:1fr; gap:10px; margin-top:24px; }
  .mst-chip{ display:flex; align-items:flex-start; gap:12px; padding:14px 16px; background:var(--surface-2); border:1px solid var(--border-soft); border-radius:12px; }
  .mst-chip__ic{ display:block; flex:0 0 auto; width:20px; height:20px; margin-top:2px; background:var(--mp-accent); -webkit-mask-repeat:no-repeat; mask-repeat:no-repeat; -webkit-mask-position:center; mask-position:center; -webkit-mask-size:contain; mask-size:contain; }
  .mst-chip__tx{ display:flex; flex-direction:column; gap:2px; }
  .mst-chip__tx b{ font-family:'Poppins',sans-serif; font-size:13px; font-weight:600; color:var(--text-primary); }
  .mst-chip__tx i{ font-size:11.5px; font-style:normal; color:var(--text-secondary); line-height:1.5; }
}
@media (prefers-reduced-motion: reduce){ .mst-rec i,.mst-ev.flare .mst-ping{ animation:none; } }
.ic-bell{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.7' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 8a6 6 0 0 1 12 0c0 7 3 9 3 9H3s3-2 3-9'/%3E%3Cpath d='M10.3 21a1.94 1.94 0 0 0 3.4 0'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.7' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 8a6 6 0 0 1 12 0c0 7 3 9 3 9H3s3-2 3-9'/%3E%3Cpath d='M10.3 21a1.94 1.94 0 0 0 3.4 0'/%3E%3C/svg%3E");}
.ic-sliders{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.7' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M21 4h-7M10 4H3M21 12h-9M8 12H3M21 20h-5M12 20H3M14 2v4M8 10v4M16 18v4'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.7' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M21 4h-7M10 4H3M21 12h-9M8 12H3M21 20h-5M12 20H3M14 2v4M8 10v4M16 18v4'/%3E%3C/svg%3E");}
.ic-bulb{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.7' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M15 14c.2-1 .7-1.7 1.5-2.5 1-.9 1.5-2.2 1.5-3.5A6 6 0 0 0 6 8c0 1 .2 2.2 1.5 3.5.7.7 1.3 1.5 1.5 2.5'/%3E%3Cpath d='M9 18h6'/%3E%3Cpath d='M10 22h4'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.7' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M15 14c.2-1 .7-1.7 1.5-2.5 1-.9 1.5-2.2 1.5-3.5A6 6 0 0 0 6 8c0 1 .2 2.2 1.5 3.5.7.7 1.3 1.5 1.5 2.5'/%3E%3Cpath d='M9 18h6'/%3E%3Cpath d='M10 22h4'/%3E%3C/svg%3E");}

/* ============================================================================
   SOLUTIONS ZONE vNEXT — hub + per-vertical pages
   Zone accent: homepage teal (cross-product). Product accents appear only as
   offering pills inside the coverage matrix.
   ========================================================================= */
.conexao-page--solution .sol-head{ padding-bottom:var(--space-2xl); }
.sol-head__inner{ max-width:var(--container-max); margin:0 auto; position:relative; }
.sol-head__inner .conexao-h1{ max-width:820px; }
.sol-head__inner .conexao-lead{ max-width:660px; font-size:18px; }
.sol-head__cta{ display:flex; gap:14px; margin-top:34px; flex-wrap:wrap; }
.sol-head__crumb{ display:flex; align-items:center; gap:10px; margin-bottom:26px; font-size:12px; letter-spacing:1.6px; font-weight:600; color:var(--text-tertiary); }
.sol-head__crumb a{ color:var(--text-tertiary); }
.sol-head__crumb a:hover{ color:var(--oinsights-teal-bright); }
.sol-head__crumb-sep{ opacity:.5; }
.sol-head__chip{ display:inline-flex; align-items:center; gap:10px; padding:8px 16px; border-radius:var(--radius-pill); background:var(--accent-pill-bg); border:1px solid var(--accent-pill-border); color:var(--oinsights-teal-bright); font-size:12px; font-weight:600; letter-spacing:1.8px; margin-bottom:24px; }
.sol-head__chip svg{ width:16px; height:16px; }

/* Vertical hero: two-column grid (text left, monitoring-seal graphic right) */
.sol-head__grid{ display:grid; grid-template-columns:minmax(0,1.05fr) minmax(0,0.95fr); gap:48px; align-items:center; max-width:var(--container-wide); margin:0 auto; position:relative; }
.sol-head__grid .conexao-h1{ max-width:560px; }
.sol-head__grid .conexao-lead{ max-width:520px; font-size:18px; }
.sol-hero-gfx-wrap{ position:relative; }
.sol-hero-gfx{ position:relative; z-index:1; width:100%; max-width:480px; height:auto; display:block; margin:0 auto; }

/* Monitoring-seal animation. Disabled under reduced-motion (arc shown filled). */
.seal-rotor{ transform-box:view-box; transform-origin:240px 240px; animation:seal-spin 22s linear infinite; }
@keyframes seal-spin{ to{ transform:rotate(360deg); } }
.seal-arc{ stroke-dasharray:var(--arclen); stroke-dashoffset:var(--arclen); animation:seal-draw 1.6s ease-out 0.15s forwards; }
@keyframes seal-draw{ to{ stroke-dashoffset:0; } }
.seal-halo{ transform-box:fill-box; transform-origin:center; animation:seal-pulse 2.6s ease-in-out infinite; }
@keyframes seal-pulse{ 0%,100%{ transform:scale(1); opacity:.45; } 50%{ transform:scale(1.7); opacity:.12; } }
@media (prefers-reduced-motion: reduce){
  .seal-rotor,.seal-halo{ animation:none; }
  .seal-arc{ animation:none; stroke-dashoffset:0; }
}
@media (max-width:980px){
  .sol-head__grid{ grid-template-columns:1fr; }
  .sol-hero-gfx-wrap{ display:none; }
  .sol-head__grid .conexao-h1, .sol-head__grid .conexao-lead{ max-width:760px; }
}

/* Use-case product lanes (Variant A): one band per offering, three cases each */
.acc-vms{ --acc:var(--milestone-blue); }
.acc-bms{ --acc:var(--niagara-coral); }
.acc-core{ --acc:var(--core-mint); }
.lane{ max-width:var(--container-wide); margin:0 auto; }
.lane + .lane{ margin-top:30px; }
.lane__head{ display:flex; align-items:center; gap:16px; padding:20px 24px; border-radius:var(--radius-lg) var(--radius-lg) 0 0; background: rgba(93,202,165,0.09) /* fallback */; background: color-mix(in srgb, var(--acc) 9%, transparent); border: 1px solid rgba(93,202,165,0.28) /* fallback */; border: 1px solid color-mix(in srgb, var(--acc) 28%, transparent); border-bottom:0; }
.lane__badge{ display:inline-flex; align-items:center; gap:8px; padding:7px 13px; border-radius:var(--radius-pill); font-size:10.5px; font-weight:700; letter-spacing:1.6px; color:var(--acc); border: 1px solid rgba(93,202,165,0.38) /* fallback */; border: 1px solid color-mix(in srgb, var(--acc) 38%, transparent); background: rgba(93,202,165,0.1) /* fallback */; background: color-mix(in srgb, var(--acc) 10%, transparent); white-space:nowrap; }
.lane__badge svg{ width:13px; height:13px; }
.lane__name{ font-family:'Poppins',sans-serif; font-size:20px; font-weight:600; letter-spacing:-0.4px; color:var(--text-primary); margin:0; }
.lane__tag{ font-size:14px; color:var(--text-secondary); margin:2px 0 0; }
.lane__body{ display:grid; grid-template-columns:repeat(3,1fr); border: 1px solid rgba(93,202,165,0.28) /* fallback */; border: 1px solid color-mix(in srgb, var(--acc) 28%, transparent); border-radius:0 0 var(--radius-lg) var(--radius-lg); overflow:hidden; background:var(--surface-1); }
.lane__case{ padding:28px 24px; border-left:1px solid var(--border-faint); }
.lane__case:first-child{ border-left:0; }
.lane__case-icon{ width:42px; height:42px; border-radius:var(--radius-md); display:flex; align-items:center; justify-content:center; margin-bottom:16px; color:var(--acc); background: rgba(93,202,165,0.09) /* fallback */; background: color-mix(in srgb, var(--acc) 9%, transparent); border: 1px solid rgba(93,202,165,0.26) /* fallback */; border: 1px solid color-mix(in srgb, var(--acc) 26%, transparent); }
.lane__case-icon svg{ width:20px; height:20px; }
.lane__case-title{ font-family:'Poppins',sans-serif; font-size:17px; font-weight:600; letter-spacing:-0.3px; color:var(--text-primary); margin:0 0 8px; line-height:1.25; }
.lane__case-desc{ font-size:14px; line-height:1.55; color:var(--text-secondary); margin:0; }
@media (max-width:860px){
  .lane__body{ grid-template-columns:1fr; }
  .lane__case{ border-left:0; border-top:1px solid var(--border-faint); }
  .lane__case:first-child{ border-top:0; }
}

/* Coverage matrix — the industry-first centerpiece */
.sol-matrix{ max-width:1080px; margin:0 auto; border:1px solid var(--border-soft); border-radius:var(--radius-xl); background:var(--surface-1); overflow:hidden; }
.sol-matrix__row{ display:grid; grid-template-columns:64px 1fr 280px; gap:24px; align-items:center; padding:26px 32px; border-top:1px solid var(--border-faint); transition:background .25s ease; }
.sol-matrix__row:first-child{ border-top:0; }
.sol-matrix__row:hover{ background:var(--surface-hover); }
.sol-matrix__icon{ width:48px; height:48px; border-radius:var(--radius-md); display:flex; align-items:center; justify-content:center; background:var(--accent-pill-bg); border:1px solid var(--accent-pill-border); color:var(--oinsights-teal-bright); }
.sol-matrix__icon svg{ width:22px; height:22px; }
.sol-matrix__title{ font-family:'Poppins',sans-serif; font-size:18px; font-weight:600; letter-spacing:-0.3px; color:var(--text-primary); margin:0 0 6px; }
.sol-matrix__desc{ font-size:14px; line-height:1.55; color:var(--text-secondary); margin:0; }
.sol-matrix__pills{ display:flex; flex-wrap:wrap; gap:8px; justify-content:flex-end; }

.sol-pill{ display:inline-flex; align-items:center; gap:6px; padding:6px 12px; border-radius:var(--radius-pill); font-size:10.5px; font-weight:700; letter-spacing:1.4px; border:1px solid; white-space:nowrap; }
.sol-pill svg{ width:12px; height:12px; }
.sol-pill--vms{ color:var(--milestone-blue); border-color: rgba(125,193,240,0.35) /* fallback */; border-color: color-mix(in srgb, var(--milestone-blue) 35%, transparent); background: rgba(125,193,240,0.09) /* fallback */; background: color-mix(in srgb, var(--milestone-blue) 9%, transparent); }
.sol-pill--bms{ color:var(--niagara-coral); border-color: rgba(240,133,131,0.35) /* fallback */; border-color: color-mix(in srgb, var(--niagara-coral) 35%, transparent); background: rgba(240,133,131,0.09) /* fallback */; background: color-mix(in srgb, var(--niagara-coral) 9%, transparent); }
.sol-pill--core{ color:var(--core-mint); border-color: rgba(93,202,165,0.35) /* fallback */; border-color: color-mix(in srgb, var(--core-mint) 35%, transparent); background: rgba(93,202,165,0.09) /* fallback */; background: color-mix(in srgb, var(--core-mint) 9%, transparent); }

/* Matrix legend — maps pills to full product names */
.sol-legend{ display:flex; gap:28px; justify-content:center; flex-wrap:wrap; margin:0 auto 36px; }
.sol-legend__item{ display:flex; align-items:center; gap:10px; font-size:13px; color:var(--text-secondary); }

/* Case-study cards (sol scope; mirrors Resources card look, teal accent) */
.sol-cs-grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:26px; max-width:var(--container-wide); margin:0 auto; }
.sol-cs-card{ display:flex; flex-direction:column; border-radius:var(--radius-lg); overflow:hidden; background:var(--surface-2); border:1px solid var(--border-soft); transition:transform .25s ease,border-color .25s ease; text-decoration:none; }
.sol-cs-card:hover{ transform:translateY(-4px); border-color:var(--accent-hover-border); }
.sol-cs-card__media{ aspect-ratio:16/9; background:linear-gradient(135deg, rgba(93,202,165,.16), rgba(64,128,136,.10)), var(--surface-3); display:flex; align-items:center; justify-content:center; color:var(--oinsights-teal-bright); opacity:.9; }
.sol-cs-card__media svg{ width:34px; height:34px; opacity:.7; }
.sol-cs-card__body{ padding:20px 22px 22px; display:flex; flex-direction:column; gap:12px; flex:1; }
.sol-cs-card__kicker{ font-size:10.5px; font-weight:700; letter-spacing:1.8px; color:var(--oinsights-teal-bright); }
.sol-cs-card__title{ font-family:'Poppins',sans-serif; font-size:19px; line-height:1.28; font-weight:600; letter-spacing:-0.3px; margin:0; color:var(--text-primary); }
.sol-cs-card__excerpt{ font-size:14px; line-height:1.55; color:var(--text-secondary); margin:0; }
.sol-cs-card__foot{ margin-top:auto; padding-top:6px; font-size:13px; font-weight:600; color:var(--oinsights-teal-bright); }

/* Hub: offering strip */
.sol-stack{ display:grid; grid-template-columns:repeat(3,1fr); gap:22px; max-width:var(--container-max); margin:0 auto; }
.sol-stack__card{ padding:28px; border-radius:var(--radius-lg); background:var(--surface-2); border:1px solid var(--border-soft); transition:transform .25s ease,border-color .25s ease; text-decoration:none; display:block; }
.sol-stack__card:hover{ transform:translateY(-4px); border-color:var(--accent-hover-border); }
.sol-stack__icon{ width:46px; height:46px; border-radius:var(--radius-md); display:flex; align-items:center; justify-content:center; margin-bottom:18px; border:1px solid; }
.sol-stack__icon svg{ width:21px; height:21px; }
.sol-stack__card--vms .sol-stack__icon{ color:var(--milestone-blue); border-color: rgba(125,193,240,0.35) /* fallback */; border-color: color-mix(in srgb, var(--milestone-blue) 35%, transparent); background: rgba(125,193,240,0.09) /* fallback */; background: color-mix(in srgb, var(--milestone-blue) 9%, transparent); }
.sol-stack__card--bms .sol-stack__icon{ color:var(--niagara-coral); border-color: rgba(240,133,131,0.35) /* fallback */; border-color: color-mix(in srgb, var(--niagara-coral) 35%, transparent); background: rgba(240,133,131,0.09) /* fallback */; background: color-mix(in srgb, var(--niagara-coral) 9%, transparent); }
.sol-stack__card--core .sol-stack__icon{ color:var(--core-mint); border-color: rgba(93,202,165,0.35) /* fallback */; border-color: color-mix(in srgb, var(--core-mint) 35%, transparent); background: rgba(93,202,165,0.09) /* fallback */; background: color-mix(in srgb, var(--core-mint) 9%, transparent); }
.sol-stack__tag{ font-size:10.5px; font-weight:700; letter-spacing:1.8px; color:var(--text-tertiary); margin-bottom:8px; }
.sol-stack__title{ font-family:'Poppins',sans-serif; font-size:20px; font-weight:600; letter-spacing:-0.4px; color:var(--text-primary); margin:0 0 8px; }
.sol-stack__desc{ font-size:14px; line-height:1.55; color:var(--text-secondary); margin:0; }

/* Hub: vertical tiles become links */
a.conexao-vert-tile{ text-decoration:none; display:block; }
.conexao-vert-tile__go{ font-size:12px; font-weight:600; color:var(--text-tertiary); margin-top:8px; display:inline-flex; align-items:center; gap:5px; transition:color .2s ease; }
a.conexao-vert-tile:hover .conexao-vert-tile__go{ color:var(--oinsights-teal-bright); }

/* Light theme: Solutions zone shimmer (teal ramp, mirrors Core zone) */
html[data-conexao-theme="light"] .conexao-page--solution .mp-shimmer,
html[data-conexao-theme="light"] .conexao-page--solutions-hub .mp-shimmer{ background:linear-gradient(90deg,#2E9C78 0%,#0F8A6E 30%,#1C7293 50%,#0F8A6E 70%,#2E9C78 100%); background-size:200% 100%; -webkit-background-clip:text; background-clip:text; -webkit-text-fill-color:transparent; }

@media (max-width:1024px){
  .sol-matrix__row{ grid-template-columns:56px 1fr; }
  .sol-matrix__pills{ grid-column:2; justify-content:flex-start; margin-top:4px; }
  .sol-stack{ grid-template-columns:1fr; }
  .sol-cs-grid{ grid-template-columns:repeat(2,1fr); }
}
@media (max-width:640px){
  .sol-cs-grid{ grid-template-columns:1fr; }
  .sol-matrix__row{ padding:22px 20px; }
}

/* ==========================================================================
   BOOK A DEMO — form page
   Markup: patterns/book-demo.php (template-book-demo.php). Token-driven so it
   flips with the light theme; the overrides at the end handle the few values
   hardcoded against a dark background.
   ========================================================================== */
.conexao-demo-hero { padding-top: var(--space-4xl); }

.conexao-demo-head {
  text-align: center;
  max-width: 680px;
  margin: 0 auto 44px;
}
.conexao-demo-title { margin-bottom: 18px; }
.conexao-demo-lead { color: var(--text-secondary); margin: 0 auto; }

.conexao-form-card {
  position: relative;
  z-index: 2;
  max-width: 720px;
  margin: 0 auto;
  padding: 40px;
  background:
    linear-gradient(180deg, rgba(255, 255, 255, 0.06), rgba(255, 255, 255, 0) 42%),
    rgba(13, 20, 56, 0.80);
  border: 1px solid var(--border-medium);
  border-radius: var(--radius-xl);
  box-shadow:
    0 50px 120px -28px rgba(0, 0, 0, 0.6),
    inset 0 1px 0 rgba(255, 255, 255, 0.08);
}

.conexao-form__legend {
  font-size: 13px;
  color: var(--text-tertiary);
  margin: 0 0 26px;
}
.conexao-req { color: var(--oinsights-teal-bright); font-weight: 700; }

.conexao-form__grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 20px;
}
.conexao-field { display: flex; flex-direction: column; gap: 9px; }
.conexao-field--full { grid-column: 1 / -1; }

.conexao-field > label {
  font-size: 13px;
  font-weight: 600;
  color: var(--text-secondary);
  letter-spacing: 0.2px;
}

.conexao-input,
.conexao-form select,
.conexao-form textarea {
  width: 100%;
  font-family: inherit;
  font-size: 16px;
  color: var(--text-primary);
  background: var(--surface-3);
  border: 1px solid var(--border-medium);
  border-radius: var(--radius-md);
  padding: 14px 16px;
  transition: border-color 0.2s ease, box-shadow 0.2s ease, background 0.2s ease;
  -webkit-appearance: none;
  appearance: none;
}
.conexao-form textarea {
  min-height: 150px;
  resize: vertical;
  line-height: 1.55;
}
.conexao-input::placeholder,
.conexao-form textarea::placeholder { color: var(--text-tertiary); }

.conexao-input:focus,
.conexao-form select:focus,
.conexao-form textarea:focus {
  outline: none;
  border-color: var(--oinsights-teal-bright);
  box-shadow: 0 0 0 3px var(--accent-pill-bg);
  background: var(--surface-hover);
}

/* Custom select chevron (native arrow suppressed via appearance:none above) */
.conexao-select { position: relative; }
.conexao-select select { padding-right: 44px; cursor: pointer; }
.conexao-select__chev {
  position: absolute;
  top: 50%;
  right: 16px;
  transform: translateY(-50%);
  pointer-events: none;
  color: var(--text-tertiary);
  display: flex;
}
/* Native dropdown popup renders on the OS layer. color-scheme makes the
   browser paint the popup dark (dark theme) or light (light theme) natively,
   which works across Chrome, Edge, Firefox and Safari — unlike option{
   background-color}, which macOS ignores. */
html[data-conexao-theme="dark"] .conexao-form select { color-scheme: dark; }
html[data-conexao-theme="light"] .conexao-form select { color-scheme: light; }

/* --- Checkbox field type (v3.44.0) ---------------------------------------- */
.conexao-field--check { gap: 0; }
.conexao-check {
  display: flex;
  align-items: flex-start;
  gap: 12px;
  cursor: pointer;
  font-size: 14px;
  line-height: 1.5;
  color: var(--text-secondary);
}
/* Native control stays in the DOM for submission and keyboard focus, but is
   visually replaced by .conexao-check__box (input precedes the box in markup). */
.conexao-check input[type="checkbox"] {
  position: absolute;
  opacity: 0;
  width: 1px;
  height: 1px;
  margin: 0;
}
.conexao-check__box {
  flex: 0 0 auto;
  width: 22px;
  height: 22px;
  margin-top: 1px;
  border: 1px solid var(--border-medium);
  border-radius: 6px;
  background: var(--surface-3);
  color: #05071A;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: border-color 0.2s ease, background 0.2s ease, box-shadow 0.2s ease;
}
.conexao-check__box svg { opacity: 0; transition: opacity 0.15s ease; }
.conexao-check input[type="checkbox"]:checked + .conexao-check__box {
  background: var(--oinsights-teal-bright);
  border-color: var(--oinsights-teal-bright);
}
.conexao-check input[type="checkbox"]:checked + .conexao-check__box svg { opacity: 1; }
.conexao-check input[type="checkbox"]:focus-visible + .conexao-check__box {
  outline: none;
  border-color: var(--oinsights-teal-bright);
  box-shadow: 0 0 0 3px var(--accent-pill-bg);
}
.conexao-check__text { padding-top: 1px; }
.conexao-check__text .conexao-req { margin-left: 2px; }

.conexao-form__actions { margin-top: 30px; }
.conexao-form button.conexao-btn { cursor: pointer; }

/* Honeypot: in the DOM for bots, off-canvas for humans and assistive tech. */
.conexao-hp {
  position: absolute !important;
  left: -9999px !important;
  width: 1px;
  height: 1px;
  overflow: hidden;
}

/* --- Status banners ------------------------------------------------------- */
.conexao-form-alert {
  border-radius: var(--radius-md);
  padding: 15px 18px;
  margin-bottom: 26px;
  font-size: 14px;
  line-height: 1.5;
  display: flex;
  gap: 12px;
  align-items: flex-start;
}
.conexao-form-alert svg { flex: none; margin-top: 1px; }
.conexao-form-alert--err {
  background: rgba(240, 133, 131, 0.10);
  border: 1px solid rgba(240, 133, 131, 0.32);
  color: var(--text-primary);
}
.conexao-form-alert--err svg { color: var(--niagara-coral); }

/* --- Success state (form replaced by confirmation) ------------------------ */
.conexao-form-success { text-align: center; padding: 14px 8px; }
.conexao-form-success__icon {
  width: 64px;
  height: 64px;
  margin: 0 auto 22px;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 50%;
  background: var(--accent-pill-bg);
  border: 1px solid var(--accent-pill-border);
  color: var(--oinsights-teal-bright);
}
.conexao-form-success h2 {
  font-size: 28px;
  margin: 0 0 12px;
  color: var(--text-primary);
  letter-spacing: -0.8px;
}
.conexao-form-success p {
  color: var(--text-secondary);
  max-width: 440px;
  margin: 0 auto 26px;
}

@media (max-width: 640px) {
  .conexao-form-card { padding: 28px 20px; }
  .conexao-form__grid { grid-template-columns: 1fr; }
}

/* --- Light theme: solid white card lift, matching other surfaces ---------- */
html[data-conexao-theme="light"] .conexao-form-card {
  background: #FFFFFF;
  border: 1px solid var(--border-soft);
  box-shadow:
    0 30px 70px -30px rgba(10, 17, 36, 0.28),
    0 2px 6px rgba(10, 17, 36, 0.05);
  -webkit-backdrop-filter: none;
  backdrop-filter: none;
}
html[data-conexao-theme="light"] .conexao-input,
html[data-conexao-theme="light"] .conexao-form select,
html[data-conexao-theme="light"] .conexao-form textarea {
  background: #FBFCFE;
}
html[data-conexao-theme="light"] .conexao-input:focus,
html[data-conexao-theme="light"] .conexao-form select:focus,
html[data-conexao-theme="light"] .conexao-form textarea:focus {
  background: #FFFFFF;
}

/* ==========================================================================
   CONTACT — split layout (form + company presence)
   ========================================================================== */
.conexao-contact-grid {
  display: grid;
  grid-template-columns: 0.82fr 1.18fr;
  gap: 48px;
  align-items: start;
}
.conexao-contact-aside { position: relative; }
.conexao-contact-aside .conexao-eyebrow { margin-bottom: 18px; }
.conexao-contact-aside__title { margin-bottom: 16px; }
.conexao-contact-aside__lead { color: var(--text-secondary); margin: 0 0 30px; font-size: 16px; }

.conexao-office {
  display: flex;
  gap: 14px;
  padding: 18px 20px;
  background: var(--surface-3);
  border: 1px solid var(--border-soft);
  border-radius: var(--radius-lg);
  margin-bottom: 14px;
}
.conexao-office__icon {
  flex: none;
  width: 38px;
  height: 38px;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: var(--radius-sm);
  background: var(--accent-pill-bg);
  border: 1px solid var(--accent-pill-border);
  color: var(--oinsights-teal-bright);
}
.conexao-office__label {
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 1.4px;
  color: var(--text-tertiary);
  text-transform: uppercase;
  margin: 2px 0 4px;
}
.conexao-office__city { font-size: 16px; font-weight: 600; color: var(--text-primary); margin: 0 0 2px; }
.conexao-office__meta { font-size: 13px; color: var(--text-tertiary); margin: 0; }

.conexao-contact-channels {
  list-style: none;
  margin: 22px 0 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 12px;
}
.conexao-contact-channels a {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  color: var(--text-secondary);
  text-decoration: none;
  font-size: 15px;
  transition: color 0.2s ease;
}
.conexao-contact-channels a:hover { color: var(--oinsights-teal-bright); }
.conexao-contact-channels svg { color: var(--oinsights-teal-bright); flex: none; }

.conexao-contact-xref {
  margin-top: 26px;
  padding: 16px 18px;
  border: 1px dashed var(--border-medium);
  border-radius: var(--radius-md);
  font-size: 14px;
  color: var(--text-secondary);
}
.conexao-contact-xref a { color: var(--oinsights-teal-bright); font-weight: 600; text-decoration: none; }

@media (max-width: 880px) {
  .conexao-contact-grid { grid-template-columns: 1fr; gap: 36px; }
}

/* ============================================================================
   Customer Voices — "View all" link (homepage) + archive spacing  [v3.18.0]
   ============================================================================ */
.tm-allwrap { text-align: center; margin-top: 38px; }
.tm-all {
	display: inline-flex; align-items: center; gap: 8px;
	font-family: var(--font-primary); font-weight: 600; font-size: 15px;
	letter-spacing: .01em; color: var(--mp-accent, #8093E8);
	text-decoration: none; padding: 11px 22px; border-radius: 999px;
	border: 1px solid rgba(93,202,165,0.3) /* fallback */;
	border: 1px solid color-mix(in srgb, var(--mp-accent, #8093E8) 45%, transparent);
	transition: background .18s ease, border-color .18s ease, transform .18s ease;
}
.tm-all:hover {
	background: rgba(93,202,165,0.3) /* fallback */;
	background: color-mix(in srgb, var(--mp-accent, #8093E8) 14%, transparent);
	border-color: var(--mp-accent, #8093E8); transform: translateY(-1px);
}
.conexao-testimonials--archive { padding-top: 12px; }
.conexao-page--customervoices .res-head { padding-bottom: 8px; }

/* ==========================================================================
   FEEDBACK POPOVER (v3.19.0)
   ========================================================================== */
.conexao-fb { position: fixed; right: 24px; bottom: 24px; z-index: 160; width: 340px; max-width: calc(100vw - 32px); }
.conexao-fb[hidden] { display: none; }
.conexao-fb__card { position: relative; background: var(--conexao-navy-card); border: 1px solid var(--border-soft); border-radius: 16px; box-shadow: 0 26px 60px -18px rgba(0, 0, 0, .55); padding: 22px 20px; opacity: 0; transform: translateY(14px); transition: opacity .22s ease, transform .22s ease; }
.conexao-fb.is-open .conexao-fb__card { opacity: 1; transform: translateY(0); }
.conexao-fb__step[hidden] { display: none; }
.conexao-fb__x { position: absolute; top: 14px; right: 14px; background: none; border: 0; color: var(--text-tertiary); cursor: pointer; display: flex; padding: 2px; }
.conexao-fb__x:hover { color: var(--text-secondary); }
.conexao-fb__eyebrow { display: inline-flex; align-items: center; gap: 6px; font-size: 10px; font-weight: 700; letter-spacing: 1.6px; color: var(--oinsights-teal-bright); margin-bottom: 14px; }
.conexao-fb__eyebrow-ic { display: flex; }
.conexao-fb__h { font-family: var(--font-primary); font-weight: 600; font-size: 19px; line-height: 1.3; letter-spacing: -.3px; color: var(--text-primary); margin: 0 0 18px; }
.conexao-fb__h--sm { font-size: 16px; margin-bottom: 12px; }
.conexao-fb__p { font-size: 13px; line-height: 1.6; color: var(--text-secondary); margin: 0 0 14px; }
.conexao-fb__btns { display: flex; gap: 10px; }
.conexao-fb__btn { font-family: inherit; font-weight: 600; font-size: 13.5px; border-radius: 10px; padding: 12px 16px; cursor: pointer; border: 1px solid transparent; display: inline-flex; align-items: center; justify-content: center; gap: 7px; }
.conexao-fb__btn--ghost { flex: 1; background: var(--surface-2); border-color: var(--border-soft); color: var(--text-primary); }
.conexao-fb__btn--ghost:hover { background: var(--surface-hover); }
.conexao-fb__btn--solid { flex: 1; background: linear-gradient(135deg, #5DCAA5, #408088); color: #05071A; }
.conexao-fb__btn--full { flex: none; }
.conexao-fb__field { width: 100%; background: var(--surface-2); border: 1px solid var(--border-soft); border-radius: 10px; padding: 11px 12px; color: var(--text-primary); font-family: inherit; font-size: 13px; height: 42px; }
.conexao-fb__field::placeholder { color: var(--text-tertiary); }
.conexao-fb__chips { display: flex; flex-wrap: wrap; gap: 8px; }
.conexao-fb__chip { font-family: inherit; font-size: 12.5px; font-weight: 500; color: var(--text-secondary); background: var(--surface-2); border: 1px solid var(--border-soft); border-radius: 100px; padding: 8px 13px; cursor: pointer; }
.conexao-fb__chip.is-on { color: var(--oinsights-teal-bright); background: rgba(93,202,165,0.12) /* fallback */; background: color-mix(in srgb, var(--oinsights-teal-bright) 12%, transparent); border-color: rgba(93,202,165,0.3) /* fallback */; border-color: color-mix(in srgb, var(--oinsights-teal-bright) 30%, transparent); }
.conexao-fb__foot { display: flex; align-items: center; justify-content: space-between; gap: 14px; margin-top: 18px; }
.conexao-fb__dots { display: flex; gap: 6px; }
.conexao-fb__dot { width: 6px; height: 6px; border-radius: 50%; background: var(--border-medium); }
.conexao-fb__dot.is-on { background: var(--oinsights-teal-bright); }
.conexao-fb__step--done { text-align: center; display: flex; flex-direction: column; align-items: center; }
.conexao-fb__check { width: 54px; height: 54px; border-radius: 50%; background: rgba(93,202,165,0.14) /* fallback */; background: color-mix(in srgb, var(--oinsights-teal-bright) 14%, transparent); border: 1px solid rgba(93,202,165,0.3) /* fallback */; border: 1px solid color-mix(in srgb, var(--oinsights-teal-bright) 30%, transparent); display: flex; align-items: center; justify-content: center; color: var(--oinsights-teal-bright); margin-bottom: 18px; }
@media (prefers-reduced-motion: reduce) { .conexao-fb__card { transition: opacity .15s ease; transform: none; } }
@media (max-width: 600px) { .conexao-fb { right: 12px; left: 12px; bottom: 12px; width: auto; } }

/* ==========================================================================
   MILESTONE — THE EVERYDAY TOOLKIT (v3.19.0)
   ========================================================================== */
.mtk { position: relative; overflow: hidden; background: rgba(125,193,240,0.03) /* fallback */; background: color-mix(in srgb, var(--milestone-blue) 3%, transparent); }
.mtk__head { text-align: center; max-width: 760px; margin: 0 auto 50px; }
.mtk__eyebrow { color: var(--milestone-blue); background: rgba(125,193,240,0.1) /* fallback */; background: color-mix(in srgb, var(--milestone-blue) 10%, transparent); border-color: rgba(125,193,240,0.25) /* fallback */; border-color: color-mix(in srgb, var(--milestone-blue) 25%, transparent); }
.mtk__h { margin: 0; }
.mtk__trio { display: grid; grid-template-columns: repeat(3, 1fr); gap: 18px; position: relative; z-index: 1; }
.mtk-card { position: relative; display: flex; flex-direction: column; background: var(--surface-2); border: 1px solid rgba(125,193,240,0.18) /* fallback */; border: 1px solid color-mix(in srgb, var(--milestone-blue) 18%, transparent); border-radius: 18px; padding: 30px 26px; overflow: hidden; transition: transform .25s ease, border-color .25s ease, box-shadow .25s ease; }
.mtk-card:hover { transform: translateY(-6px); border-color: rgba(125,193,240,0.5) /* fallback */; border-color: color-mix(in srgb, var(--milestone-blue) 50%, transparent); box-shadow: 0 24px 50px -24px rgba(125,193,240,0.45) /* fallback */; box-shadow: 0 24px 50px -24px color-mix(in srgb, var(--milestone-blue) 45%, transparent); }
.mtk-card__bar { position: absolute; top: 0; left: 0; right: 0; height: 3px; background: linear-gradient(90deg, var(--milestone-blue), rgba(125,193,240,0.3)) /* fallback */; background: linear-gradient(90deg, var(--milestone-blue), color-mix(in srgb, var(--milestone-blue) 30%, transparent)); }
.mtk-card__icon { width: 50px; height: 50px; border-radius: 13px; display: flex; align-items: center; justify-content: center; color: var(--milestone-blue); background: rgba(125,193,240,0.12) /* fallback */; background: color-mix(in srgb, var(--milestone-blue) 12%, transparent); border: 1px solid rgba(125,193,240,0.22) /* fallback */; border: 1px solid color-mix(in srgb, var(--milestone-blue) 22%, transparent); margin-bottom: 20px; }
.mtk-card__icon svg { width: 25px; height: 25px; }
.mtk-card__tag { font-size: 10.5px; font-weight: 700; letter-spacing: 1.8px; color: var(--milestone-blue); margin-bottom: 11px; }
.mtk-card__title { font-family: var(--font-primary); font-weight: 600; font-size: 20px; line-height: 1.25; letter-spacing: -.4px; color: var(--text-primary); margin: 0 0 12px; }
.mtk-card__hook { font-size: 13.5px; line-height: 1.6; color: var(--text-secondary); margin: 0 0 20px; }
.mtk-card__list { list-style: none; display: flex; flex-direction: column; gap: 10px; margin: 0 0 22px; padding: 18px 0 0; border-top: 1px solid var(--border-soft); flex: 1; }
.mtk-card__list li { display: flex; align-items: center; gap: 10px; font-size: 13.5px; font-weight: 500; color: var(--text-primary); }
.mtk-card__ck { flex: 0 0 auto; color: var(--milestone-blue); display: flex; }
.mtk-card__ck svg { width: 15px; height: 15px; }
.mtk-card__link { display: inline-flex; align-items: center; gap: 8px; align-self: flex-start; font-size: 13.5px; font-weight: 600; color: var(--milestone-blue); text-decoration: none; }
.mtk-card__link svg { width: 15px; height: 15px; transition: transform .2s ease; }
.mtk-card__link:hover svg { transform: translateX(4px); }
@media (max-width: 900px) { .mtk__trio { grid-template-columns: 1fr; } }

/* Milestone hero — clickable video header */
.mp-glass-link { display: block; text-decoration: none; color: inherit; position: relative; cursor: pointer; }
.mp-glass-play { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; z-index: 3; opacity: 0; transition: opacity .25s ease; }
.mp-glass-play > span { display: flex; align-items: center; gap: 10px; padding: 12px 18px 12px 14px; border-radius: 100px; background: rgba(5, 7, 26, .62); border: 1px solid rgba(255, 255, 255, .28); color: #fff; font-size: 13.5px; font-weight: 600; backdrop-filter: blur(2px); }
.mp-glass-play svg { width: 34px; height: 34px; }
.mp-glass-link:hover .mp-glass-play,
.mp-glass-link:focus-visible .mp-glass-play { opacity: 1; }
.mp-glass-link:hover .mp-glass-img { transform: scale(1.02); }
.mp-glass-img { transition: transform .4s ease; }

/* Global Presence — static globe inherits the theme accent via currentColor */
.conexao-gp__globe { color: var(--oinsights-teal-bright); }

/* ============================================================================
   PARTNERS PAGE (.conexao-page--partners) — grouped logo wall — v3.20.0
   ============================================================================ */
.pt-hero{ padding:140px 0 0; }
.pt-hero .conexao-lead{ max-width:720px; }
.pt-section{ padding:64px 0 0; }
.pt-section--last{ padding-bottom:24px; }
.pt-group{ margin-top:46px; }
.pt-group:first-of-type{ margin-top:8px; }
.pt-group__head{ display:flex; align-items:baseline; gap:16px; margin:0 0 22px; flex-wrap:wrap; }
.pt-group__name{ font-family:'Poppins',sans-serif; font-size:22px; font-weight:600; letter-spacing:-.4px; color:var(--text-primary); margin:0; }
.pt-group__tag{ font-size:11px; font-weight:700; letter-spacing:1.8px; color:var(--oinsights-teal-bright); text-transform:uppercase; }
.pt-grid{ display:flex; flex-wrap:wrap; justify-content:center; gap:16px; }
.pt-tile{ flex:0 1 calc(25% - 12px); background:#FFFFFF; border:1px solid rgba(10,17,36,0.10); border-radius:14px; min-height:112px;
	display:flex; align-items:center; justify-content:center; padding:18px 22px; text-align:center; text-decoration:none;
	transition:transform .25s ease, box-shadow .25s ease, border-color .25s ease; }
.pt-tile:hover{ transform:translateY(-3px); border-color: rgba(93,202,165,0.45) /* fallback */; border-color: color-mix(in srgb, var(--oinsights-teal-bright) 45%, transparent); box-shadow:0 18px 36px -18px rgba(0,0,0,.45); }
.pt-logo-img{ display:block; max-width:100%; max-height:64px; width:auto; height:auto; object-fit:contain; }
.pt-logo{ font-family:'Inter',sans-serif; font-weight:700; font-size:15px; letter-spacing:.2px; color:#39435C; }
.pt-cta{ text-align:center; padding:84px 0; margin-top:48px; background:var(--surface-1); border-top:1px solid var(--border-faint); }
.pt-cta h2{ margin-bottom:14px; }
.pt-cta .conexao-lead{ max-width:520px; margin:0 auto 26px; }
@media (max-width:900px){ .pt-tile{ flex-basis:calc(50% - 8px); } }
@media (max-width:520px){ .pt-tile{ flex-basis:100%; } }

/* ===== SERVICES PAGE (.conexao-page--services) — v3.21.0 ===== */

.conexao-page--services{ --mp-accent:#5DCAA5; --mp-accent-soft:rgba(93,202,165,0.13); --mp-accent-border:rgba(93,202,165,0.34); --mp-accent-bg:rgba(93,202,165,0.05); --mp-accent-glow:rgba(93,202,165,0.42); }
html[data-conexao-theme="light"] .conexao-page--services{ --mp-accent:#14328C; --mp-accent-soft:rgba(20,50,140,0.08); --mp-accent-border:rgba(20,50,140,0.24); --mp-accent-bg:rgba(20,50,140,0.04); --mp-accent-glow:rgba(20,50,140,0.16); }
.conexao-page--services .conexao-h1,.conexao-page--services .conexao-h2,.conexao-page--services .mp-module__title{ font-family:'Poppins',sans-serif; }

/* ===== ABOUT PAGE (.conexao-page--about) — v3.21.0 ===== */

.conexao-page--about{ --mp-accent:var(--oinsights-teal-bright); --mp-accent-soft:var(--accent-pill-bg); --mp-accent-border:var(--accent-pill-border); --mp-accent-glow:rgba(93,202,165,0.42); }
html[data-conexao-theme="light"] .conexao-page--about{ --mp-accent-glow:rgba(20,50,140,0.16); }
.about-hero{ padding:132px 0 0; }
.about-hero__grid{ display:grid; grid-template-columns:1.04fr .96fr; gap:52px; align-items:center; }
.about-hero__copy{ max-width:560px; }
.about-hero__copy .conexao-lead{ max-width:560px; }
.about-hero__copy .conexao-hero__ctas{ justify-content:flex-start; }
.about-hero__stage{ position:relative; border:1px solid var(--border-soft); border-radius:20px; background:var(--surface-2); overflow:hidden; box-shadow:0 50px 120px -30px rgba(0,0,0,.6), inset 0 1px 0 rgba(255,255,255,.06); }
html[data-conexao-theme="light"] .about-hero__stage{ background:#FFFFFF; box-shadow:0 40px 90px -30px rgba(0,9,75,.22), 0 0 0 1px rgba(0,9,75,.08); }
/* About hero — clarity-from-complexity graphic (v3.60.8) */
.about-cc{ position:relative; width:100%; margin:0 auto; aspect-ratio:540/460;
  --cc-teal:#5DCAA5; --cc-muted:#33406A; --cc-scrim:#05071A; }
html[data-conexao-theme="light"] .about-cc{ --cc-teal:#1F9E7F; --cc-muted:#B7C1D4; --cc-scrim:#FFFFFF; }
.about-cc__svg{ position:absolute; inset:0; width:100%; height:100%; }
.about-cc__logo{ position:absolute; left:57.1%; top:50%; transform:translate(-50%,-50%); width:37%; height:auto; filter:drop-shadow(0 6px 26px rgba(0,0,0,.30)); }
.about-cc__logo--on-light{ display:none; }
html[data-conexao-theme="light"] .about-cc__logo--on-dark{ display:none; }
html[data-conexao-theme="light"] .about-cc__logo--on-light{ display:block; }
.about-cc__halo0{ stop-color:var(--cc-teal); stop-opacity:.16; } .about-cc__halo1{ stop-color:var(--cc-teal); stop-opacity:0; }
.about-cc__vig0{ stop-color:var(--cc-scrim); stop-opacity:1; } .about-cc__vig0b{ stop-color:var(--cc-scrim); stop-opacity:.85; } .about-cc__vig1{ stop-color:var(--cc-scrim); stop-opacity:0; }
.about-cc .cc-arc{ fill:none; stroke:var(--cc-teal); stroke-width:1.5; opacity:var(--o); stroke-linecap:round; animation:ccBreathe 7s ease-in-out infinite; }
.about-cc .cc-pad{ fill:var(--cc-teal); r:2.2; animation:ccPad 2.6s ease-in-out infinite; }
.about-cc .cc-dot{ fill:var(--cc-muted); opacity:var(--o); animation:ccDrift ease-in-out infinite alternate, ccTwinkle ease-in-out infinite; }
.about-cc .cc-dot.cc-near{ fill:var(--cc-teal); }
.about-cc .cc-ripple{ fill:none; stroke:var(--cc-teal); stroke-width:1.3; opacity:0; animation:ccRipple 6s ease-out infinite; }
@keyframes ccRipple{ 0%{ r:112; opacity:.34; } 80%{ opacity:.05; } 100%{ r:286; opacity:0; } }
@keyframes ccPad{ 0%,100%{ r:2; opacity:.55; } 50%{ r:3.3; opacity:1; } }
@keyframes ccDrift{ from{ transform:translate(0,0); } to{ transform:translate(var(--dx),var(--dy)); } }
@keyframes ccTwinkle{ 0%,100%{ opacity:var(--o); } 50%{ opacity:calc(var(--o) * .45); } }
@keyframes ccBreathe{ 0%,100%{ opacity:var(--o); } 50%{ opacity:calc(var(--o) * .7); } }
@media (prefers-reduced-motion:reduce){ .about-cc .cc-arc,.about-cc .cc-pad,.about-cc .cc-dot,.about-cc .cc-ripple{ animation:none; } }
@media (max-width:980px){ .about-hero__grid{ grid-template-columns:1fr; gap:36px; } }
.about-section{ padding:78px 0; }
.about-section--tint{ background:var(--surface-1); border-top:1px solid var(--border-faint); border-bottom:1px solid var(--border-faint); }
.about-head{ max-width:720px; margin:0 0 40px; }
.about-cta{ text-align:center; padding:88px 0; }
.about-cta h2{ margin-bottom:18px; }
html[data-conexao-theme="light"] .conexao-page--about .mp-shimmer{ background:linear-gradient(90deg,#00094B,#2A3D9E,#00094B); -webkit-background-clip:text; background-clip:text; -webkit-text-fill-color:transparent; }


/* ===== SEARCH RESULTS + 404 (.cnx-*) — v3.21.0 ===== */

/* ===== shared search bar ===== */
.cnx-searchbar{ display:flex; align-items:stretch; gap:10px; max-width:600px; }
.cnx-searchbar--center{ margin-left:auto; margin-right:auto; }
.cnx-searchbar__field{ position:relative; flex:1; display:flex; align-items:center; }
.cnx-searchbar__ic{ position:absolute; left:16px; top:50%; transform:translateY(-50%); color:var(--text-tertiary); display:flex; pointer-events:none; }
.cnx-searchbar__input.conexao-input{ padding-left:46px; }
.cnx-searchbar__btn{ white-space:nowrap; }

/* ===== search results ===== */
.cnx-search{ padding:140px 0 96px; }
.cnx-search__title{ font-family:'Poppins',sans-serif; font-weight:600; font-size:clamp(34px,5vw,58px); letter-spacing:-1.5px; line-height:1.04; color:var(--text-primary); margin:0 0 26px; }
.cnx-search__q{ color:var(--oinsights-teal-bright); }
.cnx-search__meta{ color:var(--text-tertiary); font-size:13.5px; font-weight:500; margin:20px 0 0; letter-spacing:.3px; }
.cnx-results{ list-style:none; margin:18px 0 0; padding:0; border-top:1px solid var(--border-faint); }
.cnx-result{ border-bottom:1px solid var(--border-faint); }
.cnx-result__link{ display:block; padding:24px 20px; text-decoration:none; border-radius:14px; position:relative; transition:background .2s ease; }
.cnx-result__link:hover{ background:var(--surface-2); }
.cnx-result__type{ display:inline-block; font-size:10px; font-weight:700; letter-spacing:1.6px; color:var(--oinsights-teal-bright); background:var(--accent-pill-bg); border:1px solid var(--accent-pill-border); padding:3px 10px; border-radius:99px; margin-bottom:12px; }
.cnx-result__title{ font-family:'Poppins',sans-serif; font-size:20px; font-weight:600; color:var(--text-primary); margin:0 0 7px; transition:color .2s ease; }
.cnx-result__link:hover .cnx-result__title{ color:var(--oinsights-teal-bright); }
.cnx-result__excerpt{ color:var(--text-secondary); font-size:14.5px; line-height:1.55; margin:0 0 11px; max-width:780px; }
.cnx-result__url{ display:inline-flex; align-items:center; gap:7px; font-size:12.5px; color:var(--text-tertiary); }
.cnx-result__url svg{ opacity:.8; }
.cnx-pagination{ display:flex; gap:10px; justify-content:center; align-items:center; margin-top:44px; }
.cnx-page{ min-width:40px; height:40px; padding:0 14px; display:inline-flex; align-items:center; justify-content:center; border-radius:10px; border:1px solid var(--border-soft); background:var(--surface-2); color:var(--text-secondary); font-weight:600; font-size:14px; text-decoration:none; }
.cnx-page.is-active{ background:var(--oinsights-teal-bright); border-color:transparent; color:#fff; }
.cnx-page:hover:not(.is-active){ border-color:var(--oinsights-teal-bright); color:var(--text-primary); }

/* ===== empty state ===== */
.cnx-empty{ text-align:center; padding:54px 20px 8px; }
.cnx-empty__ic{ width:60px; height:60px; border-radius:16px; margin:0 auto 22px; display:flex; align-items:center; justify-content:center; color:var(--oinsights-teal-bright); background:var(--accent-pill-bg); border:1px solid var(--accent-pill-border); }
.cnx-empty__title{ font-family:'Poppins',sans-serif; font-size:24px; font-weight:600; color:var(--text-primary); margin:0 0 10px; letter-spacing:-.5px; }
.cnx-empty__text{ color:var(--text-secondary); font-size:15px; line-height:1.6; max-width:460px; margin:0 auto 26px; }

/* ===== 404 ===== */
.cnx-404{ min-height:80vh; display:flex; align-items:center; padding:120px 0 96px; }
.cnx-404__inner{ text-align:center; }
.cnx-404__emblem{ width:64px; height:64px; border-radius:18px; margin:0 auto 22px; display:flex; align-items:center; justify-content:center; color:var(--oinsights-teal-bright); background:var(--accent-pill-bg); border:1px solid var(--accent-pill-border); }
.cnx-404__code{ font-family:'Poppins',sans-serif; font-weight:700; font-size:clamp(96px,16vw,168px); line-height:1; letter-spacing:-5px; background:linear-gradient(135deg, var(--oinsights-teal-bright), var(--oinsights-teal-soft, #7fd9bd)); -webkit-background-clip:text; background-clip:text; -webkit-text-fill-color:transparent; margin:0 0 6px; }
.cnx-404__title{ font-family:'Poppins',sans-serif; font-size:clamp(28px,4vw,40px); font-weight:600; color:var(--text-primary); margin:0 0 14px; letter-spacing:-1px; }
.cnx-404__text{ max-width:520px; margin:0 auto 32px; color:var(--text-secondary); font-size:17px; line-height:1.6; }
.cnx-404__links{ display:flex; flex-wrap:wrap; gap:12px; justify-content:center; margin:36px 0 0; }
.cnx-linkcard{ display:inline-flex; align-items:center; gap:10px; padding:12px 18px; border-radius:12px; border:1px solid var(--border-soft); background:var(--surface-2); color:var(--text-primary); text-decoration:none; font-weight:600; font-size:14px; transition:border-color .2s ease, transform .2s ease; }
.cnx-linkcard:hover{ border-color:var(--oinsights-teal-bright); transform:translateY(-2px); }
.cnx-linkcard svg{ color:var(--oinsights-teal-bright); }
.cnx-404__home{ margin-top:30px; }


.cnx-result__type{ text-transform:uppercase; }

/* a11y: ensure visually-hidden labels (search form) even if parent rule changes */
.screen-reader-text{ position:absolute !important; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; border:0; }

/* ===== SUPPORT PAGE (.conexao-page--support) — v3.24.0 ===== */

.conexao-page--support{ --mp-accent:var(--oinsights-teal-bright); --mp-accent-soft:var(--accent-pill-bg); --mp-accent-border:var(--accent-pill-border); --mp-accent-glow:rgba(93,202,165,0.42); }
html[data-conexao-theme="light"] .conexao-page--support{ --mp-accent-glow:rgba(20,50,140,0.16); }
.conexao-page--support .conexao-h1,.conexao-page--support .conexao-h2{ font-family:'Poppins',sans-serif; }

.support-hero{ padding:132px 0 8px; text-align:center; }
.support-hero .conexao-lead{ max-width:640px; margin-left:auto; margin-right:auto; }
.support-hero .conexao-hero__ctas{ justify-content:center; }

.support-section{ padding:64px 0; }
.support-section--tint{ background:var(--surface-1); border-top:1px solid var(--border-faint); border-bottom:1px solid var(--border-faint); }
.support-head{ max-width:640px; margin:0 auto 40px; text-align:center; }
.support-head .conexao-lead{ margin-left:auto; margin-right:auto; }

/* Support rebuild: path chooser, per-product releases, routing, extended */
.sup-paths{ display:grid; grid-template-columns:1fr 1fr; gap:16px; max-width:820px; margin:34px auto 0; }
.sup-path{ display:block; text-decoration:none; background:var(--surface-2); border:1px solid var(--border-soft); border-radius:16px; padding:26px; transition:border-color .2s ease, transform .2s ease; }
.sup-path:hover{ border-color:rgba(93,202,165,0.40); border-color: rgba(93,202,165,0.4) /* fallback */; border-color: color-mix(in srgb, var(--oinsights-teal-bright) 40%, transparent); transform:translateY(-3px); }
.sup-path__k{ font-size:10.5px; font-weight:700; letter-spacing:1.6px; text-transform:uppercase; color:var(--oinsights-teal-bright); }
.sup-path__t{ font-family:'Poppins',sans-serif; font-weight:600; font-size:19px; color:var(--text-primary); margin:10px 0 8px; }
.sup-path__d{ font-size:13.5px; color:var(--text-secondary); line-height:1.55; margin:0 0 16px; }
.sup-path__cta{ display:inline-flex; align-items:center; gap:7px; font-size:13.5px; font-weight:600; color:var(--oinsights-teal-bright); }
@media (max-width:640px){ .sup-paths{ grid-template-columns:1fr; } }

.sup-prod-list{ display:flex; flex-direction:column; gap:16px; max-width:960px; margin:0 auto; }
.sup-prod{ background:var(--surface-2); border:1px solid var(--border-soft); border-left:3px solid var(--accent,var(--oinsights-teal-bright)); border-radius:16px; padding:28px 30px; }
.sup-prod--vms{ --accent:var(--milestone-blue); } .sup-prod--bms{ --accent:var(--niagara-coral); } .sup-prod--core{ --accent:var(--core-mint); }
.sup-prod__head{ display:flex; align-items:center; justify-content:space-between; gap:14px; flex-wrap:wrap; margin-bottom:22px; }
.sup-prod__name{ font-family:'Poppins',sans-serif; font-weight:700; font-size:18px; color:var(--text-primary); }
.sup-prod__ver{ display:inline-flex; align-items:baseline; gap:9px; }
.sup-prod__v{ font-family:'Poppins',sans-serif; font-weight:800; font-size:22px; color:var(--accent,var(--oinsights-teal-bright)); letter-spacing:-.5px; line-height:1; }
.sup-prod__date{ font-size:12px; color:var(--text-tertiary); }
.sup-prod__section + .sup-prod__section{ margin-top:20px; padding-top:20px; border-top:1px solid var(--border-soft); }
.sup-prod__ct{ font-size:10.5px; font-weight:700; letter-spacing:1.5px; text-transform:uppercase; color:var(--text-tertiary); margin-bottom:13px; }
.sup-prod__new{ list-style:none; margin:0; padding:0; display:grid; grid-template-columns:1fr 1fr; gap:9px 28px; }
.sup-prod__new li{ display:flex; gap:9px; font-size:13.5px; color:var(--text-primary); line-height:1.45; align-items:flex-start; }
.sup-prod__new svg{ width:15px; height:15px; color:var(--accent,var(--oinsights-teal-bright)); flex:0 0 auto; margin-top:2px; }
.sup-prod__chips{ display:flex; flex-wrap:wrap; gap:8px; }
.sup-chip{ display:inline-flex; align-items:center; gap:8px; font-size:13px; font-weight:600; color:var(--text-primary); background:rgba(255,255,255,0.04); background: rgba(93,202,165,0.3) /* fallback */; background: color-mix(in srgb, var(--accent,var(--oinsights-teal-bright)) 12%, transparent); border:1px solid rgba(255,255,255,0.14); border-color: rgba(93,202,165,0.3) /* fallback */; border-color: color-mix(in srgb, var(--accent,var(--oinsights-teal-bright)) 40%, transparent); border-radius:999px; padding:7px 14px; }
.sup-chip::before{ content:''; width:6px; height:6px; border-radius:50%; background:var(--accent,var(--oinsights-teal-bright)); }
.sup-prod__note{ font-size:13px; color:var(--text-secondary); line-height:1.55; margin:0; }
@media (max-width:620px){ .sup-prod__new{ grid-template-columns:1fr; } }

.sup-routing{ display:grid; grid-template-columns:repeat(3,1fr); gap:16px; }
.sup-rcard{ display:block; text-decoration:none; background:var(--surface-2); border:1px solid var(--border-soft); border-radius:16px; padding:26px; }
a.sup-rcard{ transition:border-color .2s ease, transform .2s ease; }
a.sup-rcard:hover{ border-color:rgba(93,202,165,0.40); transform:translateY(-3px); }
.sup-rcard__ic{ width:42px; height:42px; border-radius:11px; display:flex; align-items:center; justify-content:center; color:var(--accent,var(--oinsights-teal-bright)); background:var(--accent-pill-bg); border:1px solid var(--accent-pill-border); margin-bottom:16px; }
.sup-rcard__ic svg{ width:21px; height:21px; }
.sup-rcard--vms{ --accent:var(--milestone-blue); } .sup-rcard--bms{ --accent:var(--niagara-coral); } .sup-rcard--core{ --accent:var(--core-mint); }
.sup-rcard__p{ font-family:'Poppins',sans-serif; font-weight:600; font-size:15px; color:var(--text-primary); margin:0 0 6px; }
.sup-rcard__h{ font-size:13px; color:var(--text-secondary); line-height:1.55; margin:0 0 16px; }
.sup-rcard__who{ font-size:11px; font-weight:700; letter-spacing:1.2px; text-transform:uppercase; color:var(--accent,var(--oinsights-teal-bright)); }
@media (max-width:820px){ .sup-routing{ grid-template-columns:1fr; } }

.sup-ext{ display:grid; grid-template-columns:repeat(3,1fr); gap:14px; max-width:820px; margin:0 auto; }
.sup-ext__card{ text-align:center; border:1px dashed var(--border-soft); border-radius:14px; padding:24px 18px; }
.sup-ext__n{ font-family:'Poppins',sans-serif; font-weight:800; font-size:26px; color:var(--text-primary); letter-spacing:-.5px; }
.sup-ext__l{ font-size:12.5px; color:var(--text-secondary); margin-top:6px; }
.sup-note{ text-align:center; font-size:12.5px; color:var(--text-tertiary); margin:18px auto 0; max-width:620px; }
@media (max-width:560px){ .sup-ext{ grid-template-columns:1fr; } }

.support-chan__link{ display:inline-flex; align-items:center; gap:6px; margin-top:16px; font-size:13px; font-weight:600; color:var(--mp-accent); text-decoration:none; }
.support-chan__link:hover{ text-decoration:underline; }
.support-chan__link .conexao-arrow{ transition:transform .25s ease; }
.support-chan__link:hover .conexao-arrow{ transform:translateX(3px); }

.support-grid4{ display:grid; grid-template-columns:repeat(4,1fr); gap:16px; }
@media (max-width:900px){ .support-grid4{ grid-template-columns:repeat(2,1fr); } }
@media (max-width:560px){ .support-grid4{ grid-template-columns:1fr; } }

.support-chan-grid{ display:grid; grid-template-columns:repeat(2,1fr); gap:16px; max-width:720px; margin:0 auto; }
@media (max-width:560px){ .support-chan-grid{ grid-template-columns:1fr; } }

.support-cta{ text-align:center; padding:88px 0; }
.support-cta h2{ margin-bottom:18px; }

html[data-conexao-theme="light"] .conexao-page--support .mp-shimmer{ background:linear-gradient(90deg,#00094B,#2A3D9E,#00094B); -webkit-background-clip:text; background-clip:text; -webkit-text-fill-color:transparent; }

/* ============================================================================
   Generated post cover (fallback when a post has no featured image) — v3.27.0
   Card: centered icon with a soft glow + faint concentric rings, no eyebrow
   (the product pill beside the card carries the label). Band: single-post
   hero keeps the icon + product eyebrow. Spans only; solid fallbacks precede
   color-mix for older browsers.
   ========================================================================== */
.cnx-cover{position:absolute;inset:0;overflow:hidden;
	background:#0b1030;
	background: radial-gradient(120% 120% at 50% 42%, rgba(93,202,165,0.3) 0%, #070b26 62%) /* fallback */;
	background: radial-gradient(120% 120% at 50% 42%, color-mix(in srgb, var(--cnx-acc,#5DCAA5) 20%, #0d1440) 0%, #070b26 62%);}
.cnx-cover__bar{position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--cnx-acc,#5DCAA5);}
.cnx-cover__glow{position:absolute;left:50%;top:44%;width:210px;height:210px;transform:translate(-50%,-50%);border-radius:50%;pointer-events:none;opacity:.55;
	background: radial-gradient(circle, rgba(93,202,165,0.3), transparent 66%) /* fallback */;
	background: radial-gradient(circle, color-mix(in srgb, var(--cnx-acc,#5DCAA5) 34%, transparent), transparent 66%);}
.cnx-cover__ring{position:absolute;left:50%;top:44%;transform:translate(-50%,-50%);width:62px;height:62px;border-radius:17px;display:flex;align-items:center;justify-content:center;
	color:var(--cnx-acc,#5DCAA5);
	background:rgba(255,255,255,.06);
	background: rgba(93,202,165,0.3) /* fallback */;
	background: color-mix(in srgb, var(--cnx-acc,#5DCAA5) 14%, transparent);
	border:1px solid rgba(255,255,255,.2);
	border: 1px solid rgba(93,202,165,0.3) /* fallback */;
	border: 1px solid color-mix(in srgb, var(--cnx-acc,#5DCAA5) 42%, transparent);
	box-shadow: 0 0 0 7px rgba(93,202,165,0.3), 0 0 0 15px rgba(93,202,165,0.3) /* fallback */;
	box-shadow: 0 0 0 7px color-mix(in srgb, var(--cnx-acc,#5DCAA5) 7%, transparent), 0 0 0 15px color-mix(in srgb, var(--cnx-acc,#5DCAA5) 4%, transparent);}
.cnx-cover__ring svg{width:28px;height:28px;display:block;}
.cnx-cover__eyebrow{position:relative;font-family:'Inter',sans-serif;font-size:11px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--cnx-acc,#5DCAA5);}
/* Single-post hero band — bottom-aligned icon + eyebrow */
.cnx-cover--single{position:relative;width:100%;aspect-ratio:16/5;border-radius:16px;overflow:hidden;margin:0 0 30px;border:1px solid rgba(255,255,255,.08);}
.cnx-cover--band{display:flex;flex-direction:column;justify-content:flex-end;padding:26px 30px;
	background:#0b1030;
	background: radial-gradient(120% 120% at 88% 12%, rgba(93,202,165,0.3) 0%, #070b26 55%) /* fallback */;
	background: radial-gradient(120% 120% at 88% 12%, color-mix(in srgb, var(--cnx-acc,#5DCAA5) 22%, #0d1440) 0%, #070b26 55%);}
.cnx-cover--band .cnx-cover__glow{left:auto;top:-50px;right:-30px;transform:none;width:200px;height:200px;opacity:.5;}
.cnx-cover--band .cnx-cover__ring{left:auto;top:22px;right:26px;transform:none;width:56px;height:56px;border-radius:15px;box-shadow:none;}
.cnx-cover--band .cnx-cover__eyebrow{font-size:13px;}

/* ============================================================================
   Single post — Insights / blog reading layout (Option A) — v3.28.0
   Own markup (single.php), so it does not fight the full-bleed net. Product
   accent comes in via --acc on .conexao-article. Uses theme tokens so light
   mode adapts automatically.
   ========================================================================== */
.conexao-page--article .conexao-article{ max-width:820px; margin:0 auto; padding:120px 24px 84px; }
.conexao-page--article .conexao-article__head{ margin-bottom:30px; }
.conexao-article__eyebrow{ display:flex; align-items:center; gap:12px; margin-bottom:14px; }
.conexao-article__mark{ flex:none; width:38px; height:38px; border-radius:11px; display:flex; align-items:center; justify-content:center; color:var(--acc,#5DCAA5);
	background:rgba(255,255,255,0.06);
	background: rgba(93,202,165,0.3) /* fallback */;
	background: color-mix(in srgb, var(--acc,#5DCAA5) 14%, transparent);
	border:1px solid rgba(255,255,255,0.22);
	border: 1px solid rgba(93,202,165,0.3) /* fallback */;
	border: 1px solid color-mix(in srgb, var(--acc,#5DCAA5) 42%, transparent); }
.conexao-article__mark svg{ width:19px; height:19px; display:block; }
.conexao-article__eytext{ font-family:'Inter',sans-serif; font-size:12px; font-weight:700; letter-spacing:0.14em; text-transform:uppercase; color:var(--acc,#5DCAA5); }
.conexao-article__eydot{ opacity:.6; margin:0 2px; }
.conexao-article__title{ font-family:'Poppins',sans-serif; font-size:36px; line-height:1.17; font-weight:600; letter-spacing:-0.5px; color:var(--text-primary); margin:0 0 16px; text-wrap:balance; }
.conexao-article__meta{ display:flex; align-items:center; flex-wrap:wrap; gap:12px; color:var(--text-tertiary); font-size:13.5px; }
.conexao-article__mdot{ width:3px; height:3px; border-radius:50%; background:currentColor; }
.conexao-chip{ display:inline-flex; align-items:center; gap:6px; font-family:'Inter',sans-serif; font-size:11px; font-weight:600; letter-spacing:0.04em; padding:5px 11px; border-radius:100px; text-decoration:none;
	color:var(--acc,#5DCAA5);
	background: rgba(93,202,165,0.3) /* fallback */;
	background: color-mix(in srgb, var(--acc,#5DCAA5) 12%, transparent);
	border: 1px solid rgba(93,202,165,0.3) /* fallback */;
	border: 1px solid color-mix(in srgb, var(--acc,#5DCAA5) 30%, transparent); }
.conexao-chip--muted{ color:var(--text-secondary); background:rgba(255,255,255,0.04); background:var(--surface-3); border:1px solid var(--border-soft); }
.conexao-chip--muted:hover{ color:var(--acc,#5DCAA5); border-color: rgba(93,202,165,0.3) /* fallback */; border-color: color-mix(in srgb, var(--acc,#5DCAA5) 40%, transparent); }
.conexao-article__rule{ display:block; height:3px; width:56px; border-radius:3px; background:var(--acc,#5DCAA5); margin:24px 0 0; }

/* Body typography */
.conexao-article__body{ font-size:17px; line-height:1.72; color:var(--text-secondary); }
.conexao-article__body > p:first-of-type{ font-size:19px; line-height:1.6; color:var(--text-primary); }
.conexao-article__body p{ margin:0 0 22px; }
.conexao-article__body h2, .conexao-article__body h3{ font-family:'Poppins',sans-serif; color:var(--text-primary); font-weight:600; letter-spacing:-0.2px; margin:38px 0 16px; }
.conexao-article__body h2{ font-size:25px; } .conexao-article__body h3{ font-size:22px; }
.conexao-article__body ul{ list-style:none; padding:0; margin:0 0 24px; }
.conexao-article__body ul li{ position:relative; padding-left:26px; margin-bottom:11px; color:var(--text-secondary); }
.conexao-article__body ul li::before{ content:""; position:absolute; left:2px; top:9px; width:8px; height:8px; border-radius:50%; background:var(--acc,#5DCAA5); }
.conexao-article__body ol{ padding-left:20px; margin:0 0 24px; } .conexao-article__body ol li{ margin-bottom:10px; }
.conexao-article__body a{ color:var(--acc,#5DCAA5); text-decoration:none; border-bottom: 1px solid rgba(93,202,165,0.3) /* fallback */; border-bottom: 1px solid color-mix(in srgb, var(--acc,#5DCAA5) 40%, transparent); }
.conexao-article__body a:hover{ border-bottom-color:var(--acc,#5DCAA5); }
.conexao-article__body strong{ color:var(--text-primary); }
/* Legacy-content safety net: migrated posts still carry old page-builder markup
   and fixed-width media (long unbroken URLs, width="429" images), which pushed
   single posts past the viewport on mobile (MOB-02/11). Wrap long tokens and
   cap embedded media so no post can force horizontal scroll. */
.conexao-article__body{ overflow-wrap:anywhere; }
.conexao-article__body img,
.conexao-article__body iframe,
.conexao-article__body video,
.conexao-article__body embed,
.conexao-article__body object{ max-width:100%; height:auto; }
.conexao-article__body table{ display:block; max-width:100%; overflow-x:auto; }
/* Event / Webinar single: meta strip, hero image, CTA (accent = product) */
.cnx-ev-meta{ display:flex; flex-wrap:wrap; align-items:center; gap:10px 20px; margin:14px 0 0; }
.cnx-ev-meta__item{ display:inline-flex; align-items:center; gap:7px; font-family:'Inter',sans-serif; font-size:14px; color:var(--text-secondary); }
.cnx-ev-meta__item svg{ color:var(--acc,#5DCAA5); flex:none; }
.cnx-ev-type{ display:inline-flex; align-items:center; font-family:'Inter',sans-serif; font-size:11px; font-weight:700; letter-spacing:0.10em; text-transform:uppercase; color:var(--acc,#5DCAA5); border:1px solid rgba(93,202,165,0.4) /* fallback */; border:1px solid color-mix(in srgb, var(--acc,#5DCAA5) 45%, transparent); border-radius:100px; padding:5px 12px; }
.cnx-ev-hero{ margin:30px 0 6px; border-radius:16px; overflow:hidden; border:1px solid var(--border-soft); }
.cnx-ev-hero--img img{ display:block; width:100%; height:auto; }
.cnx-ev-cta{ display:inline-flex; align-items:center; gap:8px; margin-top:12px; padding:14px 26px; border-radius:100px; border:none; font-family:'Inter',sans-serif; font-weight:600; font-size:15px; color:#041226; background:var(--acc,#5DCAA5); text-decoration:none; transition:transform .2s ease; }
.cnx-ev-cta:hover{ transform:translateY(-1px); }
/* "Book a demo" CTA link rendered as a product-accent button */
.conexao-article__body a[href*="book-a-demo"]{ display:inline-flex; align-items:center; gap:8px; margin-top:12px; padding:14px 26px; border-radius:100px; border:none;
	font-weight:600; font-size:15px; color:#041226; background:var(--acc,#5DCAA5); transition:transform .2s ease; }
.conexao-article__body a[href*="book-a-demo"]:hover{ transform:translateY(-1px); }
.conexao-article__body a[href*="book-a-demo"]::after{ content:"\2192"; }

/* Footer + navigation */
.conexao-article__foot{ display:flex; align-items:center; flex-wrap:wrap; gap:10px; margin-top:40px; padding-top:26px; border-top:1px solid var(--border-soft); }
.conexao-article__filed-label{ font-family:'Inter',sans-serif; font-size:11px; font-weight:700; letter-spacing:0.12em; text-transform:uppercase; color:var(--text-tertiary); }
.conexao-article__nav{ display:grid; grid-template-columns:1fr 1fr; gap:16px; margin-top:34px; }
.conexao-article__navcard{ display:flex; flex-direction:column; gap:8px; padding:18px 20px; border:1px solid var(--border-soft); border-radius:14px; text-decoration:none; background:var(--surface-3); transition:border-color .18s ease, transform .18s ease; }
.conexao-article__navcard:hover{ border-color: rgba(93,202,165,0.3) /* fallback */; border-color: color-mix(in srgb, var(--acc,#5DCAA5) 45%, transparent); transform:translateY(-2px); }
.conexao-article__navcard--next{ align-items:flex-end; text-align:right; }
.conexao-article__navk{ font-family:'Inter',sans-serif; font-size:11px; font-weight:700; letter-spacing:0.1em; text-transform:uppercase; color:var(--acc,#5DCAA5); }
.conexao-article__navt{ font-family:'Poppins',sans-serif; font-size:14.5px; line-height:1.4; font-weight:600; color:var(--text-primary); }
.conexao-article__navspacer{ display:block; }

@media (max-width:640px){
	.conexao-page--article .conexao-article{ padding:98px 20px 64px; }
	.conexao-article__title{ font-size:28px; }
	.conexao-article__nav{ grid-template-columns:1fr; }
	.conexao-article__navcard--next{ align-items:flex-start; text-align:left; }
}

/* ==========================================================================
   v3.38.0 — TEST-SUITE REMEDIATIONS
   Non-destructive fixes: fixed-header anchor offset, pointer on the now
   href-less menu toggles, and >=40px tap targets in header + footer on
   touch widths (desktop sizing is intentionally left unchanged).
   ========================================================================== */

/* MOB-08 — in-page anchors clear the sticky ~84px header. */
html { scroll-padding-top: 96px; }

/* FUN-01 — Products/Solutions/Resources toggles are role="button" anchors
   with no href; restore the click affordance. */
.conexao-nav__item--has-mega > .conexao-nav__link,
.conexao-nav__item--has-compact > .conexao-nav__link { cursor: pointer; }

/* MOB-04 — minimum 40px tap targets in header + footer at touch widths. */
@media (max-width: 1024px) {
  .conexao-nav__mobile-toggle { width: 44px; height: 44px; }
  .conexao-nav__social { width: 40px; height: 40px; }
  .conexao-nav__right .conexao-btn--sm { min-height: 40px; }
  .conexao-footer__list a,
  .conexao-footer__bottom a {
    display: inline-flex;
    align-items: center;
    min-height: 40px;
  }
}

/* Consistent keyboard focus for all button styles (matches the theme's
   existing teal focus-ring pattern on segmented controls and cards). */
.conexao-btn:focus-visible,
.mp-btn--accent:focus-visible {
  outline: 2px solid var(--oinsights-teal-bright);
  outline-offset: 2px;
}

/* ==========================================================================
   ANALYTICS CONSENT BANNER (inc/consent.php)
   Fixed bottom bar. Reject and Accept are equal size (compliant one-click
   refusal). Uses theme tokens so it tracks dark/light automatically.
   ========================================================================== */
.conexao-consent {
  position: fixed;
  left: 0; right: 0; bottom: 0;
  z-index: 9999;
  display: flex;
  align-items: center;
  gap: 28px;
  padding: 22px 40px;
  background: rgba(8, 11, 32, 0.86);
  -webkit-backdrop-filter: blur(16px) saturate(120%);
  backdrop-filter: blur(16px) saturate(120%);
  border-top: 1px solid var(--border-strong, rgba(255,255,255,.16));
  box-shadow: 0 -18px 50px -20px rgba(0, 0, 0, 0.6);
  font-family: var(--font-body, 'Inter', sans-serif);
}
.conexao-consent[hidden] { display: none; }
html[data-conexao-theme="light"] .conexao-consent {
  background: rgba(245, 247, 252, 0.90);
  border-top-color: var(--border-medium, rgba(0,9,75,.14));
}
.conexao-consent__text { flex: 1; min-width: 0; }
.conexao-consent__title {
  font-family: var(--font-display, 'Poppins', sans-serif);
  font-weight: 600; font-size: 15px; margin: 0 0 4px;
  color: var(--text-primary);
}
.conexao-consent__body {
  margin: 0; font-size: 13.5px; line-height: 1.55;
  color: var(--text-secondary);
}
.conexao-consent__body a {
  color: var(--oinsights-teal-bright, #5DCAA5);
  text-decoration: none;
  border-bottom: 1px solid transparent;
}
.conexao-consent__body a:hover { border-bottom-color: var(--oinsights-teal-bright, #5DCAA5); }
.conexao-consent__actions { display: flex; gap: 12px; flex-shrink: 0; }
.conexao-consent__btn {
  padding: 12px 26px;
  min-width: 120px;
  justify-content: center;
  font-size: 14px;
}
.conexao-consent__btn--reject {
  background: transparent;
  color: var(--text-primary);
  border: 1px solid var(--border-strong, rgba(255,255,255,.16));
}
.conexao-consent__btn--reject:hover { background: var(--surface-2, rgba(255,255,255,.05)); }
.conexao-consent__btn--accept {
  background: var(--oinsights-teal-bright, #5DCAA5);
  color: var(--conexao-navy-deep, #05071A);
}
/* Slim single-line notice variant (known non-EU visitors). */
.conexao-consent--notice { padding: 16px 40px; }
.conexao-consent--notice .conexao-consent__btn {
  min-width: 0; padding: 10px 20px; font-size: 13px;
}
/* Footer "Cookie settings" reopen control, styled as a text link. */
.conexao-consent-reopen {
  background: none; border: 0; padding: 0; cursor: pointer;
  color: inherit; font: inherit; text-decoration: none;
}
.conexao-consent-reopen:hover { color: var(--text-primary); }
@media (max-width: 720px) {
  .conexao-consent { flex-direction: column; align-items: stretch; gap: 16px; padding: 20px; }
  .conexao-consent__actions { justify-content: stretch; }
  .conexao-consent__btn { flex: 1; }
}
/* ============================================================================
   LEGAL / POLICY PAGES (.conexao-legal) — v3.49.0
   Editable Gutenberg prose (Privacy Policy, Terms) inserted via the
   "Legal / Policy page" and "Privacy Policy" block patterns. Scoped to
   .conexao-legal so it never leaks into other core-block content; the theme
   tokens carry dark/light automatically.
   ============================================================================ */
.conexao-legal { max-width: 760px; margin: 0 auto; }
.conexao-legal > * { max-width: 100%; }
.conexao-legal .conexao-eyebrow { margin-bottom: 20px; }
.conexao-legal h1 {
  font-family: 'Poppins', sans-serif;
  font-size: 46px; line-height: 1.06; font-weight: 700; letter-spacing: -1.6px;
  color: var(--text-primary); margin: 0 0 18px;
}
.conexao-legal .conexao-legal__meta { font-size: 13px; color: var(--text-tertiary); margin: 0 0 10px; }
.conexao-legal .conexao-legal__meta strong { color: var(--text-secondary); font-weight: 600; }
.conexao-legal hr,
.conexao-legal .conexao-legal__rule {
  border: 0; height: 1px; background: var(--border-soft); margin: 26px 0 8px; opacity: 1;
}
.conexao-legal h2 {
  font-family: 'Poppins', sans-serif;
  font-size: 23px; line-height: 1.25; font-weight: 600; letter-spacing: -0.4px;
  color: var(--text-primary); margin: 44px 0 14px;
}
.conexao-legal h3 {
  font-family: 'Poppins', sans-serif;
  font-size: 16px; font-weight: 600; color: var(--text-primary); margin: 26px 0 8px;
}
.conexao-legal p { font-size: 16px; line-height: 1.72; color: var(--text-secondary); margin: 0 0 18px; }
.conexao-legal a { color: var(--oinsights-teal-bright); border-bottom: 1px solid transparent; }
.conexao-legal a:hover { border-bottom-color: currentColor; }
.conexao-legal ul, .conexao-legal ol { margin: 0 0 18px; padding-left: 22px; }
.conexao-legal li { font-size: 16px; line-height: 1.7; color: var(--text-secondary); margin: 0 0 8px; }
.conexao-legal .conexao-consent-reopen { color: var(--oinsights-teal-bright); text-decoration: underline; }
.conexao-legal .conexao-consent-reopen:hover { color: var(--oinsights-teal-soft); }
@media (max-width: 768px) {
  .conexao-legal h1 { font-size: 36px; letter-spacing: -1px; }
}

/* ==========================================================================
   404 — CONCEPT 1 "LOST SIGNAL" CONDUIT (404.php)
   Dotted paths carry travelling pulses to a broken central node, layered
   behind the gradient 404. Motion holds still under prefers-reduced-motion.
   ========================================================================== */
.cnx-404{ position:relative; overflow:hidden; }
.cnx-404__inner{ position:relative; z-index:2; }
.cnx-404__conduit{ position:absolute; inset:0; width:100%; height:100%; z-index:1; pointer-events:none; }
.cnx-404__lines{ opacity:.45; }
.cnx-404__nodes{ opacity:.5; }
.cnx-404__ring{ transform-origin:1080px 250px; animation:cnx404ring 3.4s ease-out infinite; }
@keyframes cnx404ring{ 0%{ transform:scale(1); opacity:.6; } 70%{ opacity:0; } 100%{ transform:scale(3.4); opacity:0; } }
.cnx-404__break{ animation:cnx404flick 2.4s steps(1) infinite; }
@keyframes cnx404flick{ 0%,100%{ opacity:.9; } 45%{ opacity:.2; } 50%{ opacity:1; } 55%{ opacity:.25; } }
.cnx-404__spark{ transform-origin:1068px 274px; animation:cnx404spark 2.4s ease-out infinite; }
@keyframes cnx404spark{ 0%,40%{ opacity:0; transform:scale(.4); } 50%{ opacity:.9; transform:scale(1); } 70%,100%{ opacity:0; transform:scale(1.8); } }
@media (prefers-reduced-motion: reduce){
	.cnx-404__ring, .cnx-404__break, .cnx-404__spark{ animation:none; }
	.cnx-404__dots{ display:none; }
}

/* ==========================================================================
   HEADER SEARCH — OPTION 1 (icon expands to inline field). header.php + nav.js
   Treatment A "glass": collapsed = magnifier circle; open = one continuous
   pill (border + translucent surface-3 fill on the container) holding the
   magnifier, a transparent borderless input, and the teal go button.
   ========================================================================== */
.conexao-nav__search{
	display:flex; align-items:center;
	border:1px solid transparent; border-radius:999px;
	transition:border-color .2s ease, background .2s ease, padding .2s ease;
}
.conexao-nav__search.is-open{
	border-color:var(--oinsights-teal-bright);
	background:var(--surface-3);
	padding-right:5px;
}
.conexao-nav__search-toggle{
	width:38px; height:38px; flex:none; border-radius:50%;
	border:1px solid var(--border-hover);
	background:transparent; color:var(--text-primary);
	display:flex; align-items:center; justify-content:center; cursor:pointer;
	transition:border-color .2s ease, color .2s ease, transform .2s ease;
}
.conexao-nav__search-toggle:hover{ transform:translateY(-1px); border-color:var(--oinsights-teal-bright); color:var(--oinsights-teal-bright); }
.conexao-nav__search-toggle:focus-visible{ outline:2px solid var(--oinsights-teal-bright); outline-offset:2px; }
/* When open the magnifier drops its circle and sits as the pill's left cap. */
.conexao-nav__search.is-open .conexao-nav__search-toggle{ border-color:transparent; color:var(--text-tertiary); transform:none; }
.conexao-nav__search-form{
	display:flex; align-items:center; gap:8px;
	width:0; opacity:0; overflow:hidden;
	transition:width .28s ease, opacity .2s ease;
}
.conexao-nav__search.is-open .conexao-nav__search-form{ width:250px; opacity:1; }
/* Specificity note: GeneratePress styles input[type="search"] (0,1,1), which
   outranks a lone .conexao-nav__search-input class (0,1,0). These selectors
   (0,3,1) beat it, so the field stays transparent inside the glass pill. */
.conexao-nav__search input[type="search"].conexao-nav__search-input{
	flex:1; min-width:0; height:38px; padding:0; margin:0; line-height:38px;
	border:0; border-radius:0; outline:0; box-shadow:none !important; background:transparent !important;
	color:var(--text-primary); font-family:'Inter',sans-serif; font-size:13.5px;
	-webkit-appearance:none; appearance:none;
}
.conexao-nav__search input[type="search"].conexao-nav__search-input:focus,
.conexao-nav__search input[type="search"].conexao-nav__search-input:focus-visible{
	border:0; outline:0; box-shadow:none !important; background:transparent !important;
}
.conexao-nav__search input[type="search"].conexao-nav__search-input::placeholder{ color:var(--text-tertiary); }
.conexao-nav__search input[type="search"].conexao-nav__search-input::-webkit-search-cancel-button{ -webkit-appearance:none; appearance:none; }
.conexao-nav__search .conexao-nav__search-go{
	width:30px; height:30px; flex:none; padding:0; box-sizing:border-box;
	border:0; border-radius:50%; cursor:pointer;
	background:var(--oinsights-teal-bright); color:var(--conexao-navy-deep);
	display:flex; align-items:center; justify-content:center;
	transition:filter .2s ease, transform .15s ease, box-shadow .2s ease;
}
.conexao-nav__search .conexao-nav__search-go:hover{
	filter:brightness(1.08);
	transform:translateY(-1px);
	box-shadow:0 4px 14px rgba(93,202,165,.35);
	background:var(--oinsights-teal-bright);
}
.conexao-nav__search .conexao-nav__search-go:focus-visible{ outline:2px solid var(--oinsights-teal-bright); outline-offset:2px; }
.conexao-nav__search .conexao-nav__search-go svg{ display:block; }
/* On mobile the field is a touch narrower within the drawer's right cluster. */
@media (max-width:1024px){
	.conexao-nav__search.is-open .conexao-nav__search-form{ width:190px; }
}

/* ==========================================================================
   FORM CONTROL HARDENING — beat GeneratePress parent styles.
   GP styles input[type="text|email|tel|url"] (0,1,1) and button:hover (0,1,1),
   which outrank the child theme's lone .conexao-input / .conexao-btn classes
   (0,1,0), leaking GP's light fills and grey hovers onto the dark theme.
   These scoped selectors (>= 0,2,1) re-assert the intended glass fields and
   remove GP's grey control hovers. Contact + Book a demo use .conexao-form.
   ========================================================================== */
.conexao-form input.conexao-input,
.conexao-form input[type="text"].conexao-input,
.conexao-form input[type="email"].conexao-input,
.conexao-form input[type="tel"].conexao-input,
.conexao-form input[type="url"].conexao-input,
.conexao-form select.conexao-input,
.conexao-form textarea{
	color:var(--text-primary);
	background:var(--surface-3);
	border:1px solid var(--border-medium);
	border-radius:var(--radius-md);
	-webkit-appearance:none; appearance:none;
	box-shadow:none;
}
.conexao-form input.conexao-input::placeholder,
.conexao-form textarea::placeholder{ color:var(--text-tertiary); }

.conexao-form input.conexao-input:hover,
.conexao-form textarea:hover,
.conexao-form select.conexao-input:hover{
	background:var(--surface-hover);
	border-color:var(--border-hover);
}
.conexao-form input.conexao-input:focus,
.conexao-form input[type="text"].conexao-input:focus,
.conexao-form input[type="email"].conexao-input:focus,
.conexao-form input[type="tel"].conexao-input:focus,
.conexao-form input[type="url"].conexao-input:focus,
.conexao-form select.conexao-input:focus,
.conexao-form textarea:focus{
	outline:none;
	background:var(--surface-hover);
	border-color:var(--oinsights-teal-bright);
	box-shadow:0 0 0 3px var(--accent-pill-bg);
}

/* ============================================================================
   Mobile body-copy floor (v3.59.3, supersedes the homepage-only v3.59.0 rule)
   The mobile spec asserts every <p> renders at >= 14px. These are the theme's
   body-copy paragraph/description classes that sat below 14px; floored to 14px
   at mobile widths, site-wide. Letter-spaced kickers and labels (.conexao-
   eyebrow, .conexao-office__label, stat labels, etc.) are intentionally
   excluded: they are UI labels, not paragraphs, and are meant to stay small.
   ============================================================================ */
@media (max-width: 880px) {
  .conexao-gp-stat__desc,
  .conexao-pscard__desc,
  .conexao-ptile__out,
  .conexao-vert-tile--cta__desc,
  .conexao-office__meta,
  .conexao-legal__meta,
  .conexao-form__legend,
  .conexao-automation__diagram-caption,
  .cnx-search__meta,
  .core-proto__desc,
  .core-dcard__note,
  .mp-cap-card__desc,
  .mp-cs-card__desc,
  .mp-protocol-caption,
  .mtk-card__hook,
  .ps-cta__d,
  .sup-note,
  .sup-path__d,
  .sup-prod__note,
  .sup-rcard__h {
    font-size: 14px;
  }
}

/* ============================================================================
   Search bar control hardening + 404 centering (v3.59.2)
   The site search form (.cnx-searchbar, used on 404 + search results) hits the
   same GeneratePress trap as the contact fields: GP's input[type="search"]
   (0,1,1) outranks the child's lone .conexao-input (0,1,0), leaking GP's light
   fill onto the dark field. v3.57's hardening only covered .conexao-form, so
   this field was missed. These selectors (0,3,1) re-assert the glass field and
   its focus ring; the light-theme override keeps its (0,4,2) so it still wins.
   The 404 search bar is also centered to match its centered container.
   ============================================================================ */
.cnx-searchbar input[type="search"].cnx-searchbar__input{
	color:var(--text-primary);
	background:var(--surface-3);
	border:1px solid var(--border-medium);
	border-radius:var(--radius-md);
	-webkit-appearance:none; appearance:none;
	box-shadow:none;
}
.cnx-searchbar input[type="search"].cnx-searchbar__input::placeholder{ color:var(--text-tertiary); }
.cnx-searchbar input[type="search"].cnx-searchbar__input:hover{
	background:var(--surface-hover);
	border-color:var(--border-hover);
}
.cnx-searchbar input[type="search"].cnx-searchbar__input:focus{
	outline:none;
	border-color:var(--oinsights-teal-bright);
	box-shadow:0 0 0 3px var(--accent-pill-bg);
	background:var(--surface-hover);
}
html[data-conexao-theme="light"] .cnx-searchbar input[type="search"].cnx-searchbar__input{ background:#FBFCFE; }
html[data-conexao-theme="light"] .cnx-searchbar input[type="search"].cnx-searchbar__input:focus{ background:#FFFFFF; }

/* Center the search bar within the centered 404 stage (search results page
   keeps the form left-aligned in its header). */
.cnx-404__inner .cnx-searchbar{ margin-left:auto; margin-right:auto; }

/* ============================================================================
   Mobile drawer search (v3.59.4)
   The header search is a desktop pattern (icon expands to an inline field in
   the top bar); on mobile there was no room for it and the drawer had none.
   This adds a full-width search field at the top of the mobile drawer and
   hides the top-bar expand-search at <=1024px. The input is type="search", so
   its rule is scoped (0,3,1) to beat GeneratePress's input[type="search"]
   (0,1,1) light fill; the submit button rules sit at (0,2,0)+ for the same
   reason. Colours are token-driven so the field flips for the light theme.
   ============================================================================ */
@media (max-width: 1024px) {
  .conexao-nav__right .conexao-nav__search { display: none; }

  .conexao-nav__m-search {
    display: flex;
    align-items: center;
    gap: 8px;
    margin: 16px 20px 4px;
    padding: 0 8px 0 14px;
    background: var(--surface-3);
    border: 1px solid var(--border-medium);
    border-radius: var(--radius-md);
    flex: 0 0 auto;
  }
  .conexao-nav__m-search-ic { display: flex; flex: 0 0 auto; color: var(--text-tertiary); }
  .conexao-nav__m-search input[type="search"].conexao-nav__m-search-input {
    flex: 1;
    min-width: 0;
    background: none !important;
    border: 0;
    border-radius: 0;
    outline: none;
    box-shadow: none !important;
    -webkit-appearance: none;
    appearance: none;
    color: var(--text-primary);
    font-family: inherit;
    font-size: 16px;
    padding: 13px 0;
  }
  .conexao-nav__m-search input[type="search"].conexao-nav__m-search-input::placeholder { color: var(--text-tertiary); }
  .conexao-nav__m-search input[type="search"].conexao-nav__m-search-input::-webkit-search-cancel-button { -webkit-appearance: none; appearance: none; }
  .conexao-nav__m-search .conexao-nav__m-search-go {
    flex: 0 0 auto;
    width: 40px;
    height: 40px;
    padding: 0;
    border: 0;
    border-radius: 9px;
    background: var(--oinsights-teal-bright);
    color: var(--conexao-navy-deep);
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
  }
  .conexao-nav__m-search .conexao-nav__m-search-go:hover { filter: brightness(1.05); }
  .conexao-nav__m-search .conexao-nav__m-search-go:focus-visible { outline: 2px solid var(--oinsights-teal-bright); outline-offset: 2px; }
  .conexao-nav__m-search .conexao-nav__m-search-go span { display: flex; }
  .conexao-nav__m-search .conexao-nav__m-search-go svg { display: block; }
}

/* ============================================================================
   Search field — decisive override (v3.60.4)
   The v3.59.2 hardening at (0,3,1) wins on the 404 page but a GeneratePress
   rule outranks it on the search-results surface (confirmed in a live browser;
   not reproducible headless). !important on this single first-party class
   settles it on every surface without touching any other input.
   ============================================================================ */
.cnx-searchbar__input[type="search"]{
	background:var(--surface-3) !important;
	color:var(--text-primary) !important;
	border:1px solid var(--border-medium) !important;
	-webkit-appearance:none !important;
	appearance:none !important;
}
.cnx-searchbar__input[type="search"]:focus{
	border-color:var(--oinsights-teal-bright) !important;
	background:var(--surface-hover) !important;
}
html[data-conexao-theme="light"] .cnx-searchbar__input[type="search"]{ background:#FBFCFE !important; }
html[data-conexao-theme="light"] .cnx-searchbar__input[type="search"]:focus{ background:#FFFFFF !important; }

/* ============================================================================
   Search-results field + theme toggle target size (v3.60.6)
   ============================================================================ */
/* REG-08: the results field still showed GeneratePress's light fill even after
   the v3.60.4 class-level !important. Escalating to the input id (#cnx-s) beats
   any parent/plugin rule regardless of specificity or source order. */
#cnx-s[type="search"]{
	background:var(--surface-3) !important;
	color:var(--text-primary) !important;
	border:1px solid var(--border-medium) !important;
	-webkit-appearance:none !important;
	appearance:none !important;
}
#cnx-s[type="search"]:focus{
	border-color:var(--oinsights-teal-bright) !important;
	background:var(--surface-hover) !important;
}
html[data-conexao-theme="light"] #cnx-s[type="search"]{ background:#FBFCFE !important; }
html[data-conexao-theme="light"] #cnx-s[type="search"]:focus{ background:#FFFFFF !important; }

/* UI-12/REG-08 safety net. Every search field the theme renders is already
   covered above, but GeneratePress paints input[type="search"] (0,1,1) with an
   !important light fill, so any search input we did NOT anticipate (a plugin
   widget, a stray form) still leaks rgb(247,248,249). This rule is specified
   ABOVE GP (body input[type="search"] = 0,1,2) so it beats that fill for every
   search field, and BELOW the intentional per-field rules (nav 0,3,1 transparent,
   #cnx-s 1,1,0) so those still win — the nav glass stays transparent. Ends the
   whack-a-mole: no search input anywhere can take GP's light fill. */
body input[type="search"]{ background-color: var(--surface-3) !important; }

/* ============================================================================
   Form-field autofill hardening (v3.60.26)
   UI-12: the search field's fill was already maxed on specificity (#cnx-s carries
   an id + !important background), so a light fill that survives on production is
   not a losing selector; it is the browser's autofill layer. Chrome paints an
   inset box-shadow over autofilled fields that `background` cannot override at
   any specificity. Repaint it with the dark surface via the one property autofill
   honours, and hold the text/caret colours. Scoped to the surface-3 fields (site
   search + contact/demo inputs); the glass nav search is transparent by design
   and left untouched. */
#cnx-s:-webkit-autofill,
#cnx-s:-webkit-autofill:hover,
#cnx-s:-webkit-autofill:focus,
.cnx-searchbar__input:-webkit-autofill,
.conexao-input:-webkit-autofill,
.conexao-input:-webkit-autofill:hover,
.conexao-input:-webkit-autofill:focus{
	-webkit-box-shadow:0 0 0 1000px var(--surface-3) inset !important;
	box-shadow:0 0 0 1000px var(--surface-3) inset !important;
	-webkit-text-fill-color:var(--text-primary) !important;
	caret-color:var(--text-primary);
	transition:background-color 9999s ease-out 0s;
}
html[data-conexao-theme="light"] #cnx-s:-webkit-autofill,
html[data-conexao-theme="light"] .cnx-searchbar__input:-webkit-autofill,
html[data-conexao-theme="light"] .conexao-input:-webkit-autofill{
	-webkit-box-shadow:0 0 0 1000px #FFFFFF inset !important;
	-webkit-text-fill-color:var(--text-primary) !important;
}

/* MOB-04: theme toggle buttons were 32x30; raise to a 40px touch target in the
   mobile drawer (the desktop segment is hidden at this width). */
@media (max-width:1024px){
	.conexao-theme-seg__opt{ width:40px; height:40px; }
}

/* Partner card names link to the vendor site (v3.60.7) — inherit card styling */
.conexao-partner-card__name a{ color:inherit; text-decoration:none; }
.conexao-partner-card__name a:hover{ text-decoration:underline; }
