/* ns-framework 1.0.32 */
/* BUILD-CHECK: colours-in-divi-2 */
/* ns-framework 1.0.21 - the framework stops owning vertical rhythm. Every gap
   between modules and rows is a Divi setting on the module or row itself
   (canon 5: one owner, and the owner is the page). The rules removed here are
   the ones that made that impossible: they set margins with !important, so a
   value typed into Divi could never win. What the framework keeps is the scale
   anchored to the 1080 layout (2.7c), the table internals of 6.10, and the
   component recipes (boxes, panels, FAQ, tiles, grids). Supersedes 1.0.17 to
   1.0.20. */
/* ns-framework 1.0.16 - panel measure correction (playbook 3.3, owner ruling
   2026-08-02). Built on 1.0.15; the 1.0.15 builder-compatibility scoping is
   untouched. Two rules changed, both of which put panel content on 284:
     1. first-row content column: margin-left:-18px removed. The pull moved
        panel content 18px left of the tile text the controller lifts it from
        (tile box 284 + 6.1 tile padding 18 = 302), so the tile description
        jumped outward when a panel opened. Content now lands flush on 302.
     2. later rows: horizontal padding 14px -> 32px, so panel FAQ and carousel
        rows share the same 302 edge as the first row.
   After install and validation, remove the page-side margin-left:0 stopgaps on
   what-is-ai, transformation, education and data-and-knowledge-management
   (2.10 sequencing: the stopgap comes out in the release AFTER this one).
   Playbook 3.3 / 2.7 / 12 and ns-validate.py panel_left were corrected in the
   same commit as this release. */
/* ns-framework 1.0.14
   Builder-compatibility release (canon 8.7): geometry rules (floats, hard
   widths, negative margins, flex overrides, breakpoint hiding, link overlays)
   are scoped body:not(.ns-vb-canvas):not([class*="et-fb"]):not([class*="et_fb"]):not(:has(#et-fb-app-body-root)) so they never apply inside the Divi
   Visual Builder canvas; cosmetic rules (colour, type, emboss, shadow,
   spacing) stay active there so the builder shows the design. framework.js
   never runs in the builder at all (guard at the top of the file). */

/* ===== rhythm (verbatim from live modules, page 227133 / 225610 / 646) ===== */

:root{--ns-shadow-rest:6px 6px 18px 0 rgba(255,255,255,.3);--ns-shadow-hover:9px 9px 24px 0 rgba(255,255,255,.3);--ns-accent:#58A7F9;--ns-ink-heading:rgba(214,214,214,.88);--ns-ink-body:rgba(255,255,255,.8);--ns-card:#0E1834;--ns-band:#17203B;--ns-marker:#B3B3B3;--ns-sp-1:clamp(6px,.667vw,8px);--ns-sp-2:clamp(10px,1.167vw,14px);--ns-sp-3:clamp(14px,1.5vw,18px);--ns-sp-4:clamp(22px,2.5vw,30px);--ns-sp-5:clamp(32px,4vw,48px);--ns-sp-6:clamp(26px,3vw,36px);}.et_pb_code:not(:has(*)),.et_pb_code:has(>.et_pb_code_inner:empty){display:none!important}



/* ===== tabs (verbatim from live modules, page 227133 / 225610 / 646) ===== */

body:not(.ns-vb-canvas):not([class*="et-fb"]):not([class*="et_fb"]):not(:has(#et-fb-app-body-root)) .ns-panel{display:none}.ns-tabset .et_pb_column.hovergroup{cursor:pointer;transition:box-shadow .3s ease,background-color .3s ease}.ns-tabset .hovergroup h3{transition:font-size 820ms cubic-bezier(.65,0,.35,1)}.ns-tabset .et_pb_blurb_description{overflow:hidden;hyphens:auto;-webkit-hyphens:auto;transition:max-height 820ms cubic-bezier(.65,0,.35,1),opacity 620ms cubic-bezier(.65,0,.35,1)}.ns-tabset.is-tabbed .et_pb_blurb_description{max-height:0;opacity:0;padding-top:0!important}.ns-tabset.is-tabbed{padding-bottom:0!important;margin-bottom:0!important}.ns-tabset.is-tabbed .et_pb_column.hovergroup{box-shadow:6px 6px 18px 0 rgba(255,255,255,.3)!important;opacity:1;transition:box-shadow .3s ease}.ns-tabset.is-tabbed .et_pb_column.hovergroup:not(.is-active) h3{opacity:.5;transition:opacity .4s ease}.ns-tabset.is-tabbed .et_pb_column.hovergroup:not(.is-active):hover{box-shadow:9px 9px 24px 0 rgba(255,255,255,.3)!important}.ns-tabset.is-tabbed .et_pb_column.hovergroup:not(.is-active):hover h3{opacity:.85}.ns-tabset.is-tabbed .et_pb_column.hovergroup.is-active{box-shadow:none!important;opacity:1;background:transparent!important;position:relative;z-index:2}.ns-tabset.is-tabbed .et_pb_column.hovergroup.is-active .et_pb_icon{display:none!important}.ns-panel{overflow:hidden;transition:max-height 820ms cubic-bezier(.65,0,.35,1)}.ns-panel.ns-panel{background:linear-gradient(to top,#17203B 0,#17203B 24px,rgba(0,0,0,0) 24px),linear-gradient(to right,#17203B 0,#17203B 24px,rgba(0,0,0,0) 24px)}.ns-tab-lead .et_pb_blurb_description{max-width:720px}.ns-panel.ns-panel .ns-tab-lead+.et_pb_row{padding-top:0!important;margin-top:0!important}.ns-panel.ns-panel .ns-tab-lead+.et_pb_row .et_pb_module{margin-top:0!important}.ns-tab-lead{padding:40px 32px 0 32px}.ns-tab-lead .et_pb_blurb_description{overflow:hidden;opacity:1;text-align:justify;hyphens:auto;-webkit-hyphens:auto;transition:max-height 820ms cubic-bezier(.65,0,.35,1),opacity 620ms cubic-bezier(.65,0,.35,1)}.ns-tab-lead .et_pb_blurb_description p{padding-bottom:16px}.ns-panel.ns-panel>.et_pb_row:not(:first-of-type):not(:has(.nsp-frame)):not(:has(.et_pb_group_carousel)){padding-left:32px!important;padding-right:32px!important}@media (min-width:1100px){body:not(.ns-vb-canvas):not([class*="et-fb"]):not([class*="et_fb"]):not(:has(#et-fb-app-body-root)) .ns-panel.ns-panel>.et_pb_row:first-of-type{display:flex!important;align-items:stretch}body:not(.ns-vb-canvas):not([class*="et-fb"]):not([class*="et_fb"]):not(:has(#et-fb-app-body-root)) .ns-panel.ns-panel>.et_pb_row:first-of-type>.et_pb_column:last-child:not(:first-child){width:var(--ns-rail-w,calc((100% - 40px)/4 + 28px))!important;margin-right:-18px!important;align-self:stretch!important;flex:0 0 auto!important}body:not(.ns-vb-canvas):not([class*="et-fb"]):not([class*="et_fb"]):not(:has(#et-fb-app-body-root)) .ns-panel.ns-panel>.et_pb_row:first-of-type>.et_pb_column:first-child{flex:1 1 auto}body:not(.ns-vb-canvas):not([class*="et-fb"]):not([class*="et_fb"]):not(:has(#et-fb-app-body-root)) .ns-panel.ns-panel>.et_pb_row:first-of-type:not(:has(>.et_pb_column:nth-child(2))){display:block!important}body:not(.ns-vb-canvas):not([class*="et-fb"]):not([class*="et_fb"]):not(:has(#et-fb-app-body-root)) .ns-panel.ns-panel>.et_pb_row:first-of-type>.et_pb_column:first-child:last-child{width:100%!important;margin-left:0!important;flex:none!important}}.ns-panel.ns-panel .et_pb_column:last-child:not(:first-child) .et_pb_text{background:none!important;padding:0!important;width:100%!important;hyphens:auto;-webkit-hyphens:auto;text-align:justify}.ns-panel.ns-panel .et_pb_column:last-child h2{margin-top:0!important}.ns-panel.ns-panel{hyphens:auto;-webkit-hyphens:auto}.ns-tab-lead{padding-left:0!important;padding-right:0!important}@media (max-width:1099px){body:not(.ns-vb-canvas):not([class*="et-fb"]):not([class*="et_fb"]):not(:has(#et-fb-app-body-root)) .ns-panel.ns-panel>.et_pb_row:first-of-type>.et_pb_column:last-child:not(:first-child){width:100%!important;margin:24px 0 0!important;padding:24px 18px!important}}.ns-tabset .et_pb_text:has(h2){transition:padding-left 820ms cubic-bezier(.65,0,.35,1)}.ns-panel.ns-panel>.et_pb_row:first-of-type>.et_pb_column:last-child:not(:first-child) h2{font-size:clamp(20px,2.167vw,26px)!important}.ns-tabset .et_pb_column.hovergroup{position:relative;z-index:5}.ns-tabset.is-tabbed .et_pb_column.hovergroup.is-active{z-index:6}.ns-panel.ns-panel .et_pb_column:last-child .et_pb_text h2{hyphens:auto;-webkit-hyphens:auto;overflow-wrap:anywhere;hyphenate-limit-chars:10 5 9;-webkit-hyphenate-limit-before:5;-webkit-hyphenate-limit-after:9}.ns-panel.ns-panel>.et_pb_row:first-of-type{margin-bottom:0!important}.ns-panel.ns-panel>.et_pb_row:first-of-type>.et_pb_column:last-child:not(:first-child){background-color:#17203B!important}.ns-panel.ns-panel .nsp-frame--transparent .nsp-frame-head{background:#17203B!important;margin-left:calc(var(--nsp-band-l,8px) - var(--nsp-inset,24px))!important;margin-right:calc(var(--nsp-band-r,15px) - var(--nsp-inset,24px))!important;padding:clamp(12px,1.333vw,16px) var(--nsp-inset,24px)!important}@media (max-width:980px){.ns-panel.ns-panel .nsp-frame--transparent .nsp-frame-head{margin-left:-34px!important;margin-right:-27px!important}}@media (max-width:640px){.ns-panel.ns-panel .nsp-frame--transparent .nsp-frame-head{margin-right:-34px!important}}

/* ===== gutter (verbatim from live modules, page 227133 / 225610 / 646) ===== */

@media (min-width:981px){body:not(.ns-vb-canvas):not([class*="et-fb"]):not([class*="et_fb"]):not(:has(#et-fb-app-body-root)) .ns-tabset .ns-tiles{display:flex;flex-wrap:nowrap;align-items:stretch}body:not(.ns-vb-canvas):not([class*="et-fb"]):not([class*="et_fb"]):not(:has(#et-fb-app-body-root)) .ns-tabset .ns-tiles .et_pb_column{flex:1 1 0;width:auto!important;margin-right:24px!important;box-sizing:border-box;float:none!important}body:not(.ns-vb-canvas):not([class*="et-fb"]):not([class*="et_fb"]):not(:has(#et-fb-app-body-root)) .ns-tabset .ns-tiles .et_pb_column:last-child{margin-right:0!important}body:not(.ns-vb-canvas):not([class*="et-fb"]):not([class*="et_fb"]):not(:has(#et-fb-app-body-root)) .ns-tabset .et_pb_row_4col{display:flex;flex-wrap:nowrap;align-items:stretch}body:not(.ns-vb-canvas):not([class*="et-fb"]):not([class*="et_fb"]):not(:has(#et-fb-app-body-root)) .ns-tabset .et_pb_row_4col .et_pb_column{flex:1 1 0;width:auto!important;margin-right:24px!important;box-sizing:border-box;float:none!important}body:not(.ns-vb-canvas):not([class*="et-fb"]):not([class*="et_fb"]):not(:has(#et-fb-app-body-root)) .ns-tabset .et_pb_row_4col .et_pb_column:last-child{margin-right:0!important}}.ns-tabset .et_pb_blurb_container{overflow:visible!important;display:block!important}.ns-tabset .hovergroup h3{line-height:1.15em!important;margin:0!important;padding:0!important;hyphens:auto;-webkit-hyphens:auto;overflow-wrap:break-word}.ns-tabset .et_pb_main_blurb_image{float:left;margin:0 10px 0 0!important;width:auto!important;height:auto!important}.ns-block{box-shadow:inset 0 10px 16px -10px rgba(255,255,255,0.12),inset 10px 0 16px -10px rgba(255,255,255,0.08),inset 0 -10px 16px -10px rgba(0,0,0,0.30),inset -10px 0 16px -10px rgba(0,0,0,0.22)}.ns-block .et_pb_text_inner h2+p{display:inline}.ns-panel+.et_pb_section:not(.ns-panel):not(.ns-block){padding-top:0!important}.ns-prose .et_pb_text:not(.ns-table) .et_pb_text_inner{max-width:700px}


.ns-panel.ns-panel .et_pb_column:last-child:not(:first-child) .et_pb_text h2{text-align:left!important}
/* The baseline never had a heading mid-paragraph-flow, so nothing gave one a
   top margin, and its 6-8px bottom margin left the heading detached from the
   text it introduces. A sub-heading needs a clear break above and a smaller,
   deliberate gap below, or it floats between the two paragraphs. */



/* ===== prose (verbatim from live modules, page 227133 / 225610 / 646) ===== */

.ns-prose .et_pb_text:not(.ns-table) .et_pb_text_inner{max-width:700px}/* one owner per gap: the row margin. Everything else that could add to it is zeroed. */.ns-prose>.et_pb_row:first-of-type{margin-top:0!important}.ns-prose .nsp-frame{margin-top:0!important;margin-bottom:0!important}

/* ===== emboss-dialect (verbatim from live modules, page 227133 / 225610 / 646) ===== */

/* Page-level override, chatbot-audit. Same values as the shared ".ns-block"
   emboss in the Design Baseline; delete this module once the CSS moves to
   Theme Options to Custom CSS. */
.ns-emboss{background-color:rgba(255,255,255,0.075)!important;
box-shadow:inset 0 10px 16px -10px rgba(255,255,255,0.12),
           inset 10px 0 16px -10px rgba(255,255,255,0.08),
           inset 0 -10px 16px -10px rgba(0,0,0,0.30),
           inset -10px 0 16px -10px rgba(0,0,0,0.22)!important}





/* the four counters inside the audit-stats widget */
.asw-card .asw-ch{background-color:rgba(255,255,255,0.075)!important;
box-shadow:inset 0 10px 16px -10px rgba(255,255,255,0.12),
           inset 10px 0 16px -10px rgba(255,255,255,0.08),
           inset 0 -10px 16px -10px rgba(0,0,0,0.30),
           inset -10px 0 16px -10px rgba(0,0,0,0.22)!important}
.ns-emboss .asw-card{padding-left:0!important;padding-right:0!important}
/* 3-up row: tile gutter instead of Divi's 60px */
/* FAQ accordion on the tile model, matching .ns-faq on the other pages */







.ns-faqblock .et_pb_toggle_title:before{right:24px!important}

.ns-faqblock .et_pb_accordion_item.et_pb_toggle_open{box-shadow:none!important}


.ns-faqblock .et_pb_toggle_title:before{color:#B3B3B3!important;font-size:25px!important;
transition:transform 620ms cubic-bezier(.65,0,.35,1),color 620ms cubic-bezier(.65,0,.35,1)!important;
top:auto!important;right:0!important}
.ns-faqblock .et_pb_toggle_open .et_pb_toggle_title:before{color:#58A7F9!important}



@media (max-width:640px){
}
/* explainer: embossed block. The widget reserves a 410px scene on every step
   while ink ends at 300px at worst (measured across all six steps), so the
   body is capped at 320px and the block keeps a 36px gap to the tiles. */



/* audit counter tile: side air, and type capped so the card stops driving
   the row height. Its cqi units grow the type when the card is narrowed. */
/* the card keeps the plugin's own padding and type scale */
/* FAQ: heading and cards on the same text edge as the tiles above (278) */

.ns-faqblock .et_pb_toggle_title:before{content:'\33'!important;font-family:ETmodules!important;
font-weight:400!important;background:none!important;border:0!important;border-radius:0!important;
width:auto!important;height:auto!important;line-height:1!important;
transform:rotate(0deg)!important}
.ns-faqblock .et_pb_toggle_open .et_pb_toggle_title:before{content:'\33'!important;
transform:rotate(180deg)!important}
.ns-faqblock .et_pb_toggle_title:before{position:absolute!important;top:50%!important;right:24px!important;
margin-top:0!important;transform:translateY(-50%) rotate(0deg)!important}
.ns-faqblock .et_pb_toggle_open .et_pb_toggle_title:before{transform:translateY(-50%) rotate(180deg)!important}


.ns-faqblock .et_pb_toggle_content{transition:none!important}

/* header: baseline typography */




/* the stats column gives its card the full width: the widget's cqi type wraps
   and grows the card taller when the container is narrowed */
/* the stats column keeps the block inset like its neighbours */
/* ONE OWNER PER GAP. A block never carries a top margin; the gap above a block
   is the bottom margin of the thing before it. 36px = --ns-sp-6. */



/* the stats card scales to the space it is given, so give it less */
/* The widget only responds to width, not height: capping its height clips it.
   Scaled down proportionally instead, kept full-width by pre-scaling the box. */
.ns-emboss .asw-card{height:auto!important;width:121.9%!important;
transform:scale(.82)!important;transform-origin:top left!important;margin-bottom:-54px!important}






/* Inset image (ns-figure) */
.ns-figure{float:right;max-width:min(300px,45%);margin:4px 0 12px 24px}
@media (max-width:640px){.ns-figure{float:none;max-width:100%;margin:12px 0}}
.ns-figure figcaption,.ns-figcaption{font-family:'Open Sans',sans-serif;
  font-size:clamp(12px,1.333vw,16px);color:#B3B3B3;padding-top:6px}

/* ===== Accordion FAQ inside a panel =====
   Same Divi Accordion + ns-faqblock as on pages; inside a panel the block goes
   flat #17203B, loses the emboss, sits flush to the rail, and keeps the 24px
   question inset of the panel measure. One class, two contexts. */
.ns-panel .ns-faqblock,.ns-panel.ns-panel .ns-faqblock{
  background-color:#17203B!important;box-shadow:none!important;
}
.ns-panel.ns-panel>.et_pb_row:has(.ns-faqblock),
.ns-panel.ns-panel>.et_pb_row.ns-faqrow{margin-top:0!important}
@media (max-width:640px){
  .ns-panel }
/* v1.0.5: a blockquote that opens a prose section loses its own top margin;
   the section padding is the gap's only owner (one owner per gap). */


/* v1.0.5: a row marked ns-flow continues the preceding text block; it takes the
   paragraph gap, not the 36px block gap. For placing a module (e.g. a CTA) beside
   one paragraph of running prose without breaking the text rhythm. */





/* v1.0.5: no left-margin step at intermediate widths. Divi rows default to 80%
   width, so below ~1350px they shrink faster than the 100%/1080 header row and
   section left edges diverge. All content rows follow the header row's sizing.
   Scoped to page content; theme-builder header/footer layouts are untouched. */



/* v1.0.5: grids are Divi-native (canon 6.7): rows carry columnGap/rowGap 24px and
   phone/tablet flexDirection column in their own Divi layout settings. The single
   framework involvement is this exception to the generic prose row gap, which a
   page value cannot outrank by specificity: */


/* v1.0.5: clickable grid tile (canon 6.7): ns-linked stretches the tile's last
   link over the whole box. No hover styling; the visible link text remains a
   translation unit. */
.et_pb_column.ns-linked{position:relative;cursor:pointer}
body:not(.ns-vb-canvas):not([class*="et-fb"]):not([class*="et_fb"]):not(:has(#et-fb-app-body-root)) .et_pb_column.ns-linked .et_pb_text:last-child a::after{content:"";position:absolute;inset:0}

/* v1.0.5: static card internals (canon 6.7).
   - column is a flex column; the closing link pins to the tile bottom with a
     fixed 12px clearance above and the tile's own 18px padding below, so its
     distance is owned by the bottom, never by the text above it
   - the blurb head is a flex row: icon and title vertically centred against
     each other; min-height of two title lines so the body below always starts
     on the same level whether the title wraps or not
   - headings and body copy hyphenate */




.ns-emboss .et_pb_blurb_position_left .et_pb_blurb_container{flex:1 1 auto;display:flex;flex-direction:column;justify-content:center}
.ns-emboss .et_pb_blurb+.et_pb_text{margin-top:14px!important}
.ns-emboss h3{hyphens:auto;-webkit-hyphens:auto;overflow-wrap:normal!important;word-break:normal!important}

.ns-emboss .et_pb_blurb_description,.ns-emboss:not(.ns-table) .et_pb_text_inner{hyphens:auto;-webkit-hyphens:auto;text-align:justify;overflow-wrap:normal!important;word-break:normal!important}
.ns-emboss:not(.ns-table) .et_pb_text:not(:first-child):last-child .et_pb_text_inner{text-align:right}

/* v1.0.10: card link colour (canon 6.7): the Divi per-module link colour compiled
   for only 2 of 8 identical modules, so the pattern owns it. Visited included so
   no UA or theme state colour can darken it. */


/* v1.0.13: linked cards sit their closing link nearer the bottom edge */




/* ===== v1.0.19: data table internals (canon 6.10) =====
   Everything a table needs that Divi can express is now a Divi setting on the
   module: the box is the existing ns-emboss recipe (wash + 2.2 emboss), the
   padding and the 700px measure are module settings. What is left here is only
   what Divi has no field for: killing the theme's table borders, the cell box in
   em, the header's own type step, and the alternating row fills.
   Literals measured off the rendered reference (editorial table.data): cells
   .857em/.587em (11.998/8.218 at 14px, 9.427/6.457 at 11px), header = cell type
   + 2px, odd rows #0E1834, phone cells 11px with the table scrolling only when
   it can no longer shrink. */

.ns-table table.data{width:100%;border-collapse:collapse;margin:0!important;
  border:0!important;font-size:var(--ns-table-text)}


.ns-table table.data th,.ns-table table.data td{text-align:left;border:0!important;
  line-height:1.4;vertical-align:top;color:var(--gcid-body-color,rgba(255,255,255,0.8));
  font-family:'Open Sans',sans-serif;font-size:var(--ns-table-text)}
.ns-table table.data thead th{font-family:'Special Elite',fantasy;font-weight:400;
  color:#58A7F9;font-size:calc(var(--ns-table-text) + 2px);
  line-height:1.2;vertical-align:bottom}
.ns-table table.data tbody tr:nth-child(odd){background:#0E1834}
.ns-table table.data tbody tr:nth-child(even){background:none}


.ns-table figcaption,.ns-table .table-sources{display:block;font-size:11px;
  line-height:1.55;opacity:.7;margin-top:.5em}
@media (max-width:767px){
  .ns-table{--ns-table-text:11px}
  .ns-table table.data{display:block;overflow-x:auto}}





/* ===== v1.0.21: the two list values Divi has no field for =====
   Everything else about vertical rhythm is a Divi setting on the module. These
   two are not expressible there: Divi leaves a 16px padding under every list
   (which inflates the gap the next module owns), and there is no control for the
   space between list items. Written without !important, so nothing here can
   outrank a value set in Divi. */
.et_pb_text ul,.et_pb_text ol{padding-bottom:0}
.et_pb_text li+li{margin-top:2px}

/* ===== v1.0.21: the ns-block heading pattern, for h3 blocks too =====
   A block's heading and the sentence that introduces it run as one line at the
   top of the box (the pattern already used on the tabbed pages for h2). A table
   block uses a sub-heading, so the same rule has to reach h3. Divi has no field
   for display, which is why this is here and not on the page. */

.ns-block .et_pb_text_inner h3+p{display:inline}


/* FAQ block on a page: the static box look (2.1 wash + 2.2 emboss). Its padding
   is a Divi setting on the column, not here. */
.ns-faqblock{box-shadow:inset 0 10px 16px -10px rgba(255,255,255,0.12),
           inset 10px 0 16px -10px rgba(255,255,255,0.08),
           inset 0 -10px 16px -10px rgba(0,0,0,0.30),
           inset -10px 0 16px -10px rgba(0,0,0,0.22)!important}
/* inside a panel the same block is flat, per 2.1 */
.ns-panel .ns-faqblock,.ns-panel.ns-panel .ns-faqblock{background-color:#17203B!important;box-shadow:none!important}

/* the only FAQ measurement Divi cannot express: the card's own inset */


/* the tile's closing link sits on the tile floor: a flex pin. Divi's margin
   field rejects `auto`, so this one declaration stays. */
.et_pb_column.ns-emboss>.et_pb_module:not(:first-child):last-child{margin-top:auto!important}
/* the h1 inside the builder canvas only: the fitter cannot run there (8.7) and a
   size typed into Divi would beat the fitter on the front end. */
body.ns-vb-canvas .ns-hdr h1,body[class*="et-fb"] .ns-hdr h1,
body[class*="et_fb"] .ns-hdr h1,body:has(#et-fb-app-body-root) .ns-hdr h1{font-size:clamp(32px,5vw,60px);line-height:1.15em}

/* ---- root defaults ------------------------------------------------------
   Divi's base stylesheet sets body and headings to font-weight 500. The design
   is 400 throughout, so it is corrected ONCE here instead of on every module.
   Scoped to the content area: that beats Divi's base rule on specificity
   without !important, so a component that genuinely wants another weight (the
   button, 500) still wins with its own setting.
   Colour is NOT here: body, heading, link and primary now come from Divi
   Global Colours, set 2026-08-06. ---------------------------------------- */
.et-l--post,.et-l--body{font-weight:400}
.et-l--post h1,.et-l--post h2,.et-l--post h3,.et-l--post h4,.et-l--post h5,.et-l--post h6{font-weight:400}

/* the controller clones the tile description into .ns-tab-lead; the clone is
   outside its module's CSS scope, so its type has to be stated here. */
.ns-tab-lead,.ns-tab-lead p{line-height:1.7em}

/* restored in 1.0.45: both were removed as 'Divi-able' but are not.
   - the open toggle is a STATE the accordion controller sets, like is-active
   - the icon needs display:block or it renders inline-block and mis-centres */
.ns-faqblock .et_pb_toggle_open .et_pb_toggle_title{color:#58A7F9!important}
.ns-tabset .et-pb-icon{line-height:1!important;display:block}

/* restored: the blurb's content box must be a block. Divi makes it flex, and a
   flex child does not animate its max-height, so the tile's description snapped
   shut instead of collapsing over 820ms. Divi exposes no setting for this inner
   element, so it belongs here. */
.ns-tabset .et_pb_blurb_content{display:block!important}
