/* Shared modules use the same type, colours and spacing as the supplied pages. */
.primary-nav button[data-menu] { appearance:none; background:transparent; border:0; border-radius:0; padding:0; font:inherit; cursor:pointer; }
.block-canvas { width:100%; box-sizing:border-box; background:#00102f; color:#fff; font-family:"IBM Plex Sans",system-ui,sans-serif; }
.block-canvas .eyebrow { color:#ef6c00; }
.block-canvas .block-richtext a { color:var(--exact-accent, #ef6c00); }
.block-canvas .umb-block-grid__layout-item { min-width:0; }
.block-canvas .umb-block-grid__layout-item:not(:has(> *)) { display:none; }
/* Exact-page cursor glows sit below page sections. Keep flexible canvases
   transparent so newly added modules do not hide that interaction layer. */
[data-template-page] > .block-canvas { background:transparent; }
.contact-exact > .block-canvas { background:transparent; }
.abstract-post > .block-canvas { background:transparent; }
.block-canvas .content-carousel { color:#fff; background:transparent; }
.block-canvas .reusable-template-module { background:transparent; }
.block-canvas .enquiry-module { background:transparent; }
.reusable-template-module { container-type:inline-size; min-width:0; width:100%; box-sizing:border-box; position:relative; font-family:"IBM Plex Sans",system-ui,sans-serif; }
.reusable-template-module *, .reusable-template-module *::before, .reusable-template-module *::after { box-sizing:border-box; }
/* The canvas supplies one gutter for ordinary blocks. Full-row template modules
   reach the page edges and keep the spacing from their original stylesheet,
   including sections whose gutter belongs to an inner heading or card track. */
.block-canvas.section-shell { --flexible-page-gutter:80px; max-width:none; padding:0 var(--flexible-page-gutter); }
.block-canvas.section-shell > .umb-block-grid { max-width:none; }
.block-canvas.section-shell > .umb-block-grid > .umb-block-grid__layout-container { column-gap:24px; }
.block-canvas > .umb-block-grid > .umb-block-grid__layout-container > [data-col-span="12"]:has(> .reusable-template-module) {
  width:calc(100% + 2 * var(--flexible-page-gutter));
  margin-inline:calc(-1 * var(--flexible-page-gutter));
}
.block-canvas > .umb-block-grid > .umb-block-grid__layout-container > .umb-block-grid__layout-item > :is(.block-headline,.block-richtext,.abstract-grid-layout,.module-insights) { padding-inline:0; }
.block-canvas > .umb-block-grid > .umb-block-grid__layout-container > .umb-block-grid__layout-item:not(:has(> .reusable-template-module)) { padding-block:clamp(32px,5vw,72px); }
@media(max-width:980px) {
  .block-canvas.section-shell { --flexible-page-gutter:28px; }
}
@media(max-width:620px) {
  .block-canvas.section-shell { --flexible-page-gutter:20px; }
}
/* Column and nested modules remain contained, without a second inner gutter. */
.reusable-template-module:not(:where(.block-canvas > .umb-block-grid > .umb-block-grid__layout-container > [data-col-span="12"] > .reusable-template-module)) > section { padding:clamp(20px,6cqi,72px) 0; margin:0; min-height:0; }
.reusable-template-module:not(:where(.block-canvas > .umb-block-grid > .umb-block-grid__layout-container > [data-col-span="12"] > .reusable-template-module)) :is(.cto-exact__capabilities-head,.cto-exact__cap-track,.about-exact__leadership>h2,.about-exact__leader-strip,.careers-exact__life>header,.careers-exact__band-wrap>[data-band],.legal-exact__cases>h2,.legal-exact__case-track) { padding-inline:0; }
.reusable-template-module:not(:where(.block-canvas > .umb-block-grid > .umb-block-grid__layout-container > [data-col-span="12"] > .reusable-template-module)) .about-exact__strip-track { margin-inline:0; }
.reusable-template-module :is(h1,h2) { overflow-wrap:anywhere; }
/* Full-row copies keep their native typography. Only constrained columns need
   a smaller type scale; never cap every copied heading at 64px. */
.reusable-template-module:not(:where(.block-canvas > .umb-block-grid > .umb-block-grid__layout-container > [data-col-span="12"] > .reusable-template-module)) :is(h1,h2) { font-size:clamp(2rem,6cqi,4rem); line-height:1.12; }
/* Native pages reset links on body; copied modules must carry that reset too. */
.reusable-template-module a { color:inherit; text-decoration:none; }
.editorial-paragraphs > [data-editorial-paragraph] { display:block; }
.editorial-paragraphs > [data-editorial-paragraph] + [data-editorial-paragraph] { margin-top:1em; }
.about-exact__presence-copy .editorial-paragraphs > [data-editorial-paragraph] + [data-editorial-paragraph] { margin-top:0; }
.reusable-template-module h1 [data-hero-inner], .reusable-template-module .about-exact__hero-line>span { white-space:normal; }
.reusable-template-module :is(.cto-exact__challenge,.legal-exact__challenge) { padding-bottom:clamp(56px,8vw,96px); }
/* Parent templates reset their own paragraph margins. Reassert the Legal
   challenge lead's native gap when that module is copied into those pages. */
.reusable-template-module .legal-exact__challenge-lead { margin:24px 0 0; }
.reusable-template-module .legal-exact__challenge > div:not(:has(> small)) .legal-exact__challenge-lead { margin-top:0; }
.reusable-template-module .legal-exact__challenge-copy { margin:56px 0 0; }
.reusable-template-module:not(:where(.block-canvas > .umb-block-grid > .umb-block-grid__layout-container > [data-col-span="12"] > .reusable-template-module)) .about-exact__narrative { margin-top:clamp(24px,5cqi,64px); }
.reusable-template-module:not(:where(.block-canvas > .umb-block-grid > .umb-block-grid__layout-container > [data-col-span="12"] > .reusable-template-module)) .cto-exact__capabilities-head h2 { margin-top:24px; }
.reusable-template-module:not(:where(.block-canvas > .umb-block-grid > .umb-block-grid__layout-container > [data-col-span="12"] > .reusable-template-module)) .cto-exact__capabilities [data-cap-carousel] { margin-top:36px; }
.reusable-template-module .cto-exact__cap-progress, .reusable-template-module .cto-exact__capabilities-head>div>span { display:none; }
.reusable-template-module .about-exact__dialog { max-width:calc(100vw - 40px); }
body.has-leader-dialog-open { overflow:hidden; }
.reusable-template-module .legal-exact__cap-stage article>div { position:relative; max-width:560px; margin-top:40px; overflow:hidden; aspect-ratio:16/9; background:#16204a; border:1px solid #22315f; }
.reusable-template-module .legal-exact__insights>div>a>i { display:block; aspect-ratio:16/10; overflow:hidden; background:#16204a; border:1px solid #22315f; }
.reusable-template-module .legal-exact__insights>div>a>i img { display:block; width:100%; height:100%; object-fit:cover; }
.reusable-template-module .cto-exact__contact > div { width:min(100%,663px); min-height:367px; }
@media(max-width:620px) {
  .reusable-template-module .cto-exact__contact > div { min-height:0; }
}
.module-page { background:#00102f; color:#fff; }
.module-insights { container-type:inline-size; background:transparent; color:#fff; font-family:"IBM Plex Sans",system-ui,sans-serif; }
.module-insights header { flex-wrap:wrap; }
.module-insights a { color:inherit; text-decoration:none; }
.module-insights__card { min-width:0; overflow-wrap:anywhere; }
.module-insights a:focus-visible { outline:3px solid #ef6c00; outline-offset:5px; }
@container(max-width:600px) {
  .module-insights .exact-section-title { align-items:flex-start; flex-direction:column; }
  .module-insights h2 { font-size:clamp(32px,10cqi,48px); }
}
/* Full rows and incomplete final rows both fill the available width. */
.about-exact__insight-grid, .cto-exact__insights>div, .legal-exact__insights>div,
.child-page-grid, .exact-services__grid, .exact-insight-grid, .careers-exact__stories>div { display:flex; flex-wrap:wrap; gap:24px; }
.about-exact__insight-grid>*, .cto-exact__insights>div>*, .legal-exact__insights>div>*,
.child-page-grid>*, .exact-insight-grid>*, .careers-exact__stories>div>* { flex:1 1 260px; min-width:0; }
.exact-services__grid>* { flex:1 1 max(260px,calc((100% - 24px)/2)); min-width:0; }
.exact-proof__stats { grid-template-columns:repeat(auto-fit,minmax(200px,1fr)); height:auto; }
.reusable-template-module .legal-exact__case-track { flex-wrap:wrap; align-items:stretch; }
.reusable-template-module .legal-exact__case-track>.legal-exact__case { flex:1 1 360px; min-width:0; height:auto; min-height:520px; aspect-ratio:auto; }
.reusable-template-module .legal-exact__case-content { height:auto; min-height:inherit; }
/* Preserve the CTO page's authored carousel and six-card mosaic. Other card
   counts and reusable modules still fill the available space. */
.cto-exact__benefits:where(:not([data-original-layout="mosaic"])) .cto-exact__benefits-grid { display:flex; flex-wrap:wrap; gap:24px; }
.cto-exact__benefits:where(:not([data-original-layout="mosaic"])) .cto-exact__benefits-grid>.cto-exact__benefit { flex:1 1 300px; min-width:0; min-height:420px; }
.cto-exact__benefits:not([data-original-layout="mosaic"]) .cto-exact__benefits-grid>.cto-exact__benefit h3 { margin-top:18px; font-size:28px; line-height:1.25; }
@media(min-width:621px) {
  .cto-exact__capabilities:where(:not([data-original-layout="carousel"])) .cto-exact__cap-track { width:100%; flex-wrap:wrap; }
  .cto-exact__capabilities:where(:not([data-original-layout="carousel"])) .cto-exact__card { flex:1 1 280px; min-width:0; }
  .cto-exact__capabilities:where(:not([data-original-layout="carousel"])) .cto-exact__cap-progress,
  .cto-exact__capabilities:where(:not([data-original-layout="carousel"])) .cto-exact__capabilities-head>div>span { display:none; }
}
@container(max-width:600px) {
  .reusable-template-module>section, .reusable-template-module .cto-exact__expertise-intro,
  .reusable-template-module .about-exact__what { grid-template-columns:minmax(0,1fr); }
  .reusable-template-module .cto-exact__cap-track { width:100%; flex-wrap:wrap; }
  .reusable-template-module .cto-exact__capabilities .cto-exact__card { flex:1 1 100%; min-width:0; min-height:400px; }
  .reusable-template-module .cto-exact__capabilities-head>div { display:block; }
  .reusable-template-module:not(:where(.block-canvas > .umb-block-grid > .umb-block-grid__layout-container > [data-col-span="12"] > .reusable-template-module)) .cto-exact__expertise-list>div { grid-template-columns:28px minmax(0,1fr) 20px; padding:24px 12px; }
  .reusable-template-module:not(:where(.block-canvas > .umb-block-grid > .umb-block-grid__layout-container > [data-col-span="12"] > .reusable-template-module)) .about-exact__value-row { grid-template-columns:28px minmax(0,1fr); gap:20px; }
  .reusable-template-module:not(:where(.block-canvas > .umb-block-grid > .umb-block-grid__layout-container > [data-col-span="12"] > .reusable-template-module)) .about-exact__value-row p { grid-column:2; }
  .reusable-template-module .legal-exact__cap-wrap { grid-template-columns:minmax(0,1fr); gap:32px; }
}

/* Fixed-width native artwork and CTA panels must also fit when a module is
   placed in a column on a desktop viewport. */
.reusable-template-module :is(.exact-ai h2,.exact-community h2,.exact-ai__workshop,.exact-quote-card,.careers-exact__cta>a) { max-width:100%; }
.reusable-template-module:not(:where(.block-canvas > .umb-block-grid > .umb-block-grid__layout-container > [data-col-span="12"] > .reusable-template-module)) .exact-map { width:100%; margin-inline:0; }
@container(max-width:980px) {
  .reusable-template-module:not(:where(.block-canvas > .umb-block-grid > .umb-block-grid__layout-container > [data-col-span="12"] > .reusable-template-module)) .exact-ai h2 span+span { padding-left:clamp(18px,6cqi,48px); }
  .reusable-template-module:not(:where(.block-canvas > .umb-block-grid > .umb-block-grid__layout-container > [data-col-span="12"] > .reusable-template-module)) :is(.careers-exact__voice-stage,.careers-exact__life header) { grid-template-columns:minmax(0,1fr); gap:32px; }
  .reusable-template-module:not(:where(.block-canvas > .umb-block-grid > .umb-block-grid__layout-container > [data-col-span="12"] > .reusable-template-module)) .careers-exact__voice-copy { padding:clamp(24px,6cqi,56px); }
}

.reusable-template-module:not(:where(.block-canvas > .umb-block-grid > .umb-block-grid__layout-container > [data-col-span="12"] > .reusable-template-module)) .exact-community__logos { flex-wrap:wrap; gap:24px; }

/* The Headline block uses the same editorial type scale as designed modules. */
.block-canvas .block-headline h2 { margin:0; font-family:inherit; font-size:clamp(2rem,6vw,4rem); font-weight:400; line-height:1.12; letter-spacing:-.022em; color:inherit; overflow-wrap:anywhere; }
.block-canvas .block-headline .eyebrow { margin:0 0 24px; font-size:.8rem; line-height:1.6; font-weight:500; letter-spacing:.15em; color:var(--exact-accent, #ef6c00); }
/* A Headline block is commonly used as the heading for the next module. Avoid
   stacking its inner padding with both neighbouring block gutters. */
.block-canvas > .umb-block-grid > .umb-block-grid__layout-container > .umb-block-grid__layout-item:has(> .block-headline) { padding-bottom:clamp(16px,2vw,24px); }
.block-canvas > .umb-block-grid > .umb-block-grid__layout-container > .umb-block-grid__layout-item:has(> .block-headline) > .block-headline { padding-bottom:0; }
.block-canvas > .umb-block-grid > .umb-block-grid__layout-container > .umb-block-grid__layout-item:has(> .block-headline) + .umb-block-grid__layout-item:not(:has(> .reusable-template-module)) { padding-top:clamp(16px,2vw,24px); }
.block-canvas > .umb-block-grid > .umb-block-grid__layout-container > .umb-block-grid__layout-item:has(> .block-headline) + .umb-block-grid__layout-item:has(> .reusable-template-module) > .reusable-template-module > section { padding-top:clamp(16px,2vw,32px); }

/* Rich Text body copy follows the paragraph treatment used by the designed
   modules, including copy pasted from an editor with inline point sizes. */
.block-canvas .block-richtext :where(p,li) { font-family:inherit; font-size:19px; font-weight:400; line-height:1.65; color:rgba(255,255,255,.7); }
.block-canvas .block-richtext :is(p,li) [style*="font-size"] { font-size:inherit!important; }

/* Generic and specialist landing templates share the orange title marker used
   by the exact page designs. Exact templates already render their own marker. */
:is(.inner-hero,.landing-hero,.showcase-hero) h1::after,
.contact-exact__hero h1:not(:has(i))::after {
  display:inline-block;
  width:.14em;
  height:.14em;
  margin-left:.12em;
  background:var(--exact-accent,#ef6c00);
  content:"";
  vertical-align:baseline;
}

/* Match the Talent page's native and copied Challenge body copy to its other
   paragraph-led modules without changing CTO/CIO-derived pages. */
.cto-exact--talent .cto-exact__challenge-copy { font-size:19px; line-height:1.65; color:rgba(255,255,255,.7); }

/* Universal video: restrained copy, a stable 16:9 player and native controls.
   The module never autoplays and remains usable inside full rows or columns. */
.abstract-video-module { width:100%; padding:clamp(72px,10vw,144px) 80px; background:transparent; color:#fff; }
.abstract-video-module__header { display:grid; grid-template-columns:minmax(0,.9fr) minmax(280px,.65fr); gap:clamp(32px,8vw,120px); align-items:end; max-width:1200px; margin:0 auto clamp(36px,5vw,64px); }
.abstract-video-module__header>div { min-width:0; }
.abstract-video-module__eyebrow { margin:0 0 22px; color:#ef6c00; font-size:12px; font-weight:500; line-height:1.4; letter-spacing:.12em; text-transform:uppercase; }
.abstract-video-module h2 { margin:0; max-width:760px; color:#fff; font-size:clamp(38px,5.4vw,72px); font-weight:400; line-height:1.06; letter-spacing:-.025em; text-wrap:balance; }
.abstract-video-module__description { margin:0; color:rgba(255,255,255,.72); font-size:17px; line-height:1.75; text-wrap:pretty; }
.abstract-video-module__figure { max-width:1200px; margin:0 auto; }
.abstract-video-module__player { position:relative; width:100%; aspect-ratio:16/9; overflow:hidden; background:#000922; border:1px solid #22315f; }
.abstract-video-module__player :is(iframe,video) { display:block; width:100%; height:100%; border:0; object-fit:cover; }
.abstract-video-module figcaption { margin-top:16px; max-width:760px; color:rgba(255,255,255,.58); font-size:14px; line-height:1.65; }
.abstract-video-module :is(iframe,video):focus-visible { outline:3px solid #ef6c00; outline-offset:4px; }
.abstract-download-module { display:grid; grid-template-columns:minmax(0,1fr); align-items:center; gap:clamp(32px,5vw,80px); width:100%; padding:clamp(64px,8vw,112px) 0; color:#fff; background:transparent; }
.abstract-download-module--with-image { grid-template-columns:minmax(0,1fr) minmax(0,1fr); }
.block-canvas > .umb-block-grid > .umb-block-grid__layout-container > [data-col-span="12"] > .reusable-template-module > .abstract-download-module { padding-inline:var(--flexible-page-gutter, 80px); }
.abstract-download-module__copy { min-width:0; }
.abstract-download-module__eyebrow { margin:0 0 20px; color:#ef6c00; font-size:12px; font-weight:500; letter-spacing:.12em; text-transform:uppercase; }
.abstract-download-module h2 { margin:0; max-width:760px; color:#fff; font-size:clamp(32px,4vw,52px); font-weight:500; line-height:1.12; letter-spacing:-.025em; }
.abstract-download-module__description { max-width:700px; margin:24px 0 0; color:rgba(255,255,255,.72); font-size:18px; line-height:1.65; }
.abstract-download-module a { display:inline-flex; align-items:center; justify-content:center; gap:24px; min-height:56px; margin-top:36px; padding:16px 26px; background:#ef6c00; color:#fff; font-size:16px; font-weight:500; text-decoration:none; white-space:nowrap; }
.abstract-download-module a:hover,.abstract-download-module a:focus-visible { background:#c45800; color:#fff; }
.abstract-download-module a:focus-visible { outline:3px solid #fff; outline-offset:3px; }
.abstract-download-module__image { display:block; width:100%; max-height:520px; object-fit:contain; }
@media(max-width:760px) {
  .abstract-download-module--with-image { grid-template-columns:minmax(0,1fr); }
  .abstract-download-module__image { max-height:360px; }
}
@container(max-width:700px) {
  .abstract-video-module__header { grid-template-columns:minmax(0,1fr); gap:24px; }
  .abstract-video-module h2 { font-size:clamp(32px,10cqi,52px); }
}
@media(max-width:620px) {
  .abstract-video-module { padding:64px 20px; }
  .abstract-video-module__header { margin-bottom:32px; }
}

/* Every template family shares the same safe mobile hero scale. Authored line
   breaks remain, while long words and copied modules can wrap without clipping. */
@media(max-width:620px) {
  :is(.exact-hero,.about-exact__hero,.blog-exact__hero,.careers-exact__hero,.contact-exact__hero,.cto-exact__hero,.legal-exact__hero,.inner-hero,.landing-hero) h1 {
    max-width:100%;
    font-size:clamp(2.375rem,11.5vw,3rem);
    line-height:1.08;
    letter-spacing:-.035em;
    overflow-wrap:anywhere;
    text-wrap:balance;
  }
  :is(.about-exact__hero,.blog-exact__hero,.careers-exact__hero,.contact-exact__hero,.cto-exact__hero,.legal-exact__hero) h1 :is([data-about-hero-inner],[data-hero-inner],[data-contact-hero-inner]) {
    white-space:normal;
  }
}

/* Inner pages use the same vertical rhythm as the home page on narrow screens.
   Keep hero top padding for the fixed header and leave block-grid gutters intact. */
@media(max-width:980px) {
  :is(.cto-exact,.legal-exact,.about-exact,.careers-exact).configurable-page { --inner-page-section-space:72px; }
  :is(.cto-exact,.legal-exact,.about-exact,.careers-exact).configurable-page > section:not(.custom-flexible-sections):not(:is(.cto-exact__hero,.legal-exact__hero,.about-exact__hero,.careers-exact__hero)) { padding-block:var(--inner-page-section-space); }
  :is(.cto-exact,.legal-exact,.about-exact,.careers-exact).configurable-page > :is(.cto-exact__hero,.legal-exact__hero,.about-exact__hero,.careers-exact__hero) { padding-bottom:var(--inner-page-section-space); }
  :is(.cto-exact,.legal-exact,.about-exact,.careers-exact).configurable-page .block-canvas.section-shell > .umb-block-grid > .umb-block-grid__layout-container > [data-col-span="12"] > .reusable-template-module > section:is([class^="cto-exact__"],[class^="legal-exact__"],[class^="about-exact__"],[class^="careers-exact__"]) { padding-block:var(--inner-page-section-space); }
  .about-exact.configurable-page > .about-exact__who > .about-exact__narrative:first-child { margin-top:0; }
}
@media(max-width:640px) {
  :is(.cto-exact,.legal-exact,.about-exact,.careers-exact).configurable-page { --inner-page-section-space:48px; }
}
