/* Blue Edge motion — headings, numbers and diagrams move; prose never does. */
.be-motion .be-reveal{opacity:1}
.be-motion .be-caption{font-size:15px;line-height:1.45;color:#46506E;margin:14px auto 0;max-width:760px;text-align:center;font-style:italic}
.be-motion .be-illustration .et_pb_image{max-width:760px;margin:0 auto}
.be-motion .be-illustration .et_pb_image img{width:100%;height:auto;aspect-ratio:16/9;object-fit:cover;border-radius:10px}
/* side images and rendered diagrams */
.be-motion .be-side .et_pb_image_wrap img{width:100%;height:auto;border-radius:10px;border:1px solid #D3E9DD;display:block}
.be-motion .be-side{margin:0 0 12px}
.be-motion .be-side .et_pb_image_wrap img, .be-motion .be-diagram-img .et_pb_image_wrap img{cursor:zoom-in}
.be-motion .be-diagram-img .et_pb_image_wrap::after{content:"Click to enlarge";position:absolute;right:10px;bottom:10px;font:600 11px "IBM Plex Sans",Helvetica,Arial,Lucida,sans-serif;letter-spacing:.06em;text-transform:uppercase;color:#46506E;background:rgba(255,255,255,.85);padding:3px 8px;border-radius:999px;pointer-events:none}
.be-motion .be-diagram-img .et_pb_image_wrap{position:relative;display:block}
.be-motion .be-diagram-img{margin:34px 0 8px}
.be-motion .be-diagram-img .et_pb_image_wrap img{width:100%;height:auto;border-radius:10px;border:1px solid #D3E9DD;display:block}
@media (min-width:981px){ .be-motion .et_pb_row .et_pb_column:has(.be-side){display:flex;align-items:center} }
.be-motion .be-faq .et_pb_toggle{border:1px solid #D3E9DD;border-radius:10px;padding:18px 22px;margin-bottom:10px;background:#fff}
.be-motion .be-faq .et_pb_toggle_title{font-size:19px}
.be-motion .be-faq .et_pb_toggle_content{padding-top:8px}
.be-motion .be-faq .et_pb_toggle_content em{display:block;margin-top:8px;color:#46506E;font-size:15px}
.be-motion .be-faq .et_pb_toggle_content a{color:#2E6FB0;font-weight:600}
.be-motion .be-roles{display:flex;flex-wrap:wrap;gap:10px;margin:6px 0 18px}
.be-motion a.be-role-chip{display:inline-block;background:#0A1438;color:#fff !important;text-decoration:none !important;font-weight:600;font-size:16px;line-height:1.2;padding:12px 18px;border-radius:999px;border:2px solid #0A1438;transition:background .2s ease,color .2s ease,transform .2s ease}
.be-motion a.be-role-chip:hover{background:#97E1B9;color:#0A1438 !important;transform:translateY(-2px)}
@media (max-width:767px){.be-motion .et_pb_text table{display:block;overflow-x:auto;-webkit-overflow-scrolling:touch;max-width:100%}.be-motion .et_pb_text table th,.be-motion .et_pb_text table td{min-width:130px}}
@media (max-width:479px){.be-motion h1{overflow-wrap:anywhere}.be-motion .eyebrow,.be-motion .eyebrow .num{font-size:14px !important}.be-motion .be-roles{gap:8px}.be-motion a.be-role-chip{font-size:15px;padding:10px 14px}}
.be-motion .be-hero,.be-motion .et_pb_section_first{position:relative;overflow:hidden}
.be-motion .be-logos{position:relative;overflow:hidden;padding:18px 0 6px;-webkit-mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent);mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent)}
.be-motion .be-logos-track{display:flex;align-items:center;gap:56px;width:max-content;animation:be-marquee 75s linear infinite}
.be-motion .be-logos:hover .be-logos-track{animation-play-state:paused}
.be-motion .be-logo{display:inline-flex;align-items:center;justify-content:center;width:176px;height:96px;cursor:zoom-in;opacity:.92;transition:opacity .2s,transform .2s}
.be-motion .be-logo:hover{opacity:1;transform:translateY(-2px)} .be-motion .be-logo img{max-width:168px;max-height:90px;width:auto;height:auto;object-fit:contain}
.be-motion .be-logos-more{text-align:center;margin:10px 0 0;font-size:15px} .be-motion .be-logos-more a{color:#97E1B9;font-weight:600;text-decoration:none;border-bottom:1px solid rgba(151,225,185,.5)}
@keyframes be-marquee{from{transform:translateX(0)}to{transform:translateX(-50%)}}
@media (max-width:767px){.be-motion .be-logos-track{gap:32px;animation-duration:55s}.be-motion .be-logo{width:110px;height:64px}.be-motion .be-logo img{max-width:100px;max-height:56px}}
@media (prefers-reduced-motion:reduce){.be-motion .be-logos-track{animation:none;flex-wrap:wrap;width:auto;justify-content:center;gap:28px}.be-motion .be-logos{mask-image:none;-webkit-mask-image:none}.be-motion .be-logos-track .be-logo:nth-child(n+40){display:none}}
.be-wall{position:fixed;inset:0;z-index:100000;background:rgba(10,20,56,.96);display:flex;align-items:center;justify-content:center;padding:24px;cursor:zoom-out;opacity:0;transition:opacity .25s}
.be-wall.on{opacity:1} .be-wall img{max-width:min(96vw,1600px);max-height:90vh;border-radius:10px;box-shadow:0 30px 80px rgba(0,0,0,.5)}
.be-wall button{position:absolute;top:18px;right:22px;background:#fff;color:#0A1438;border:0;border-radius:999px;width:42px;height:42px;font-size:22px;cursor:pointer;font-weight:700}
/* assurance strip: Azure, Microsoft Marketplace, ISO 27001, trust centre */
.be-motion .be-assure{padding:0;display:flex;flex-direction:column;align-items:center;gap:13px}
.be-motion ul.be-assure-row{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:13px 28px;margin:0;padding:0;list-style:none}
.be-motion ul.be-assure-row li{display:flex;align-items:center;gap:10px;margin:0;padding:0;list-style:none;font:400 14px/1.35 "IBM Plex Sans",Helvetica,Arial,Lucida,sans-serif;color:#46506E}
.be-motion ul.be-assure-row li+li{border-left:1px solid #E4EAF2;padding-left:28px}
.be-motion ul.be-assure-row b{font-weight:600;color:#0A1438}
.be-motion .be-assure svg{display:block;flex:none}
.be-motion .be-assure svg.be-ms{width:94px;height:20px}
.be-motion .be-assure svg.be-iso{width:38px;height:38px}
.be-motion .be-assure-note{margin:0;font:400 13px/1.45 "IBM Plex Sans",Helvetica,Arial,Lucida,sans-serif;color:#6B7490;text-align:center}
.be-motion .be-assure-note a{color:#2E6FB0;font-weight:600;text-decoration:none;border-bottom:1px solid rgba(46,111,176,.35)}
.be-motion .be-assure-note a:hover{border-bottom-color:#2E6FB0}
@media (max-width:767px){.be-motion .be-assure{gap:14px}.be-motion ul.be-assure-row{gap:14px}.be-motion ul.be-assure-row li{width:100%;justify-content:center}.be-motion ul.be-assure-row li+li{border-left:0;padding-left:0}}
.be-motion .be-diagram{margin:34px 0 8px}
.be-motion .be-diagram svg{width:100%;height:auto;display:block;border-radius:10px;border:1px solid #D3E9DD}
.be-motion .be-rail .et_pb_text_inner{display:inline-block}
.pa-callout{background:#B6E8C8;color:#0A1438;padding:0 .18em;border-radius:3px;box-decoration-break:clone;-webkit-box-decoration-break:clone}
@media (min-width:981px){
  .be-motion .be-rail{position:sticky;top:120px;z-index:3;pointer-events:none}
}
/* progress bar under the header */
.be-motion #be-progress{position:fixed;left:0;top:0;height:3px;width:0;background:#2E6FB0;z-index:100000;transition:width .12s linear}
/* accent bars that draw in beside the rail and under the heading */
.be-motion .be-rail .et_pb_text_inner{position:relative;padding-right:64px}
.be-motion .be-rail .et_pb_text_inner::after{content:"";position:absolute;left:calc(100% - 52px);top:55%;height:2px;width:44px;background:currentColor;opacity:.55;transform:scaleX(0);transform-origin:left}
.be-motion .et_pb_text_inner > h2.be-reveal{position:relative;padding-bottom:10px}
.be-motion .et_pb_text_inner > h2.be-reveal::after{content:"";position:absolute;left:0;bottom:0;height:3px;width:56px;background:#2E6FB0;transform:scaleX(0);transform-origin:left}
.be-motion .et_pb_text_inner > blockquote.be-reveal{border-left-color:transparent;box-shadow:inset 3px 0 0 #2E6FB0;clip-path:inset(0 0 0 0)}
.be-motion .be-related a, .be-motion .et_pb_button{transition:transform .25s ease, box-shadow .25s ease}
.be-motion .et_pb_button:hover{transform:translateY(-2px)}
@media (prefers-reduced-motion:no-preference){
  .be-motion .be-reveal{opacity:0;transform:translateY(16px);transition:opacity .4s ease,transform .45s cubic-bezier(.2,.7,.3,1);transition-delay:calc(.05s + var(--i,0)*.05s)}
  .be-motion p.be-reveal, .be-motion li.be-reveal{transform:translateY(10px);transition-duration:.36s,.4s}
  .be-motion h2.be-reveal, .be-motion h3.be-reveal{transition-duration:.56s,.62s}
  .be-motion .be-rail.in .et_pb_text_inner::after{transition:transform .45s cubic-bezier(.2,.7,.3,1) .06s;transform:scaleX(1)}
  .be-motion .et_pb_text_inner > h2.be-reveal.in::after{transition:transform .5s cubic-bezier(.2,.7,.3,1) .22s;transform:scaleX(1)}
  .be-motion .et_pb_text_inner > blockquote.be-reveal{box-shadow:inset 0 0 0 #2E6FB0}
  .be-motion .et_pb_text_inner > blockquote.be-reveal.in{transition:box-shadow .45s ease .12s, opacity .4s ease, transform .45s cubic-bezier(.2,.7,.3,1);box-shadow:inset 3px 0 0 #2E6FB0}
  .be-motion tr.be-reveal{transform:none}
  .be-motion .be-reveal.in{opacity:1;transform:none}
  .be-motion .be-illustration .et_pb_image_wrap img, .be-motion .be-side .et_pb_image_wrap img{transform:scale(1.025);transition:transform 1.6s ease}
  .be-motion .be-illustration .et_pb_image_wrap.in img, .be-motion .be-side .et_pb_image_wrap.in img{transform:none}
  @media (min-width:981px){
    .be-motion .et_pb_section .et_parallax_bg{animation:be-drift 80s ease-in-out infinite alternate}
    @keyframes be-drift{from{background-position:50% 50%}to{background-position:calc(50% + 48px) calc(50% + 36px)}}
  }
}

/* ---- v2: the eye-catching layer ---- */
/* hero: word-by-word headline over a drifting line field */
.be-motion .be-hero{position:relative;clip-path:inset(0)}
.be-motion .be-hero::before{content:"";position:absolute;inset:-25%;pointer-events:none;opacity:.9;
  background-image:linear-gradient(115deg, rgba(10,20,56,.16) 0 2px, transparent 2px 170px), linear-gradient(62deg, rgba(255,255,255,.35) 0 1px, transparent 1px 240px);
  background-size:170px 100%, 240px 100%;animation:be-lines 60s linear infinite}
@keyframes be-lines{from{background-position:0 0,0 0}to{background-position:170px 0,-240px 0}}
.be-motion .be-hero .be-word{display:inline-block;opacity:0;transform:translateY(.35em) rotate(1.5deg);transform-origin:left bottom}
.be-motion .be-hero .be-word.on{animation:be-word .62s cubic-bezier(.2,.7,.2,1) forwards}
@keyframes be-word{to{opacity:1;transform:none}}
/* chapter numerals: huge, ghosted, moving on scroll */
.be-motion .be-chapter{position:relative;clip-path:inset(0)}
.be-motion .be-numeral{--be-gutter:max(10vw,(100vw - 1080px)/2);position:absolute;right:calc(var(--be-gutter) * .045);top:-.05em;font:700 min(170px,calc(var(--be-gutter) * .82))/1 "IBM Plex Sans",Helvetica,Arial,Lucida,sans-serif;letter-spacing:-.04em;color:transparent;-webkit-text-stroke:2px rgba(10,20,56,.85);opacity:.14;pointer-events:none;user-select:none;will-change:transform;z-index:0}
.be-motion .be-chapter > .et_pb_row{position:relative;z-index:2}
.be-motion .be-chapter.be-dark .be-numeral{-webkit-text-stroke-color:rgba(255,255,255,.85);opacity:.16}
/* highlight sweep on lead-ins */
/* The mint highlight sweep on bold lead-ins is off (9 Sep 2026). It was designed as an
   occasional accent; on pages with seven to twelve lead-ins in a column it reads as a
   marked-up draft, which is what Justin flagged on the glossary and again on
   /what-makes-your-bid-different/. The bold stays; only the highlighter goes.
   To restore, put the two rules below back.
   .be-motion .et_pb_text_inner > p > strong:first-child{background-image:linear-gradient(120deg, rgba(151,225,185,.55), rgba(151,225,185,.55));background-repeat:no-repeat;background-size:0% 100%;background-position:0 0;padding:0 .12em;margin:0 -.12em;border-radius:3px;box-decoration-break:clone;-webkit-box-decoration-break:clone}
   .be-motion .et_pb_section:not(.be-hero) p.in > strong:first-child{background-size:100% 100%;transition:background-size .8s cubic-bezier(.2,.7,.2,1) .35s} */
/* pull quotes */
.be-motion .et_pb_text_inner > blockquote{position:relative;padding-left:1.6em;font-size:1.25em;line-height:1.45}
.be-motion .et_pb_text_inner > blockquote::before{content:"\201C";position:absolute;left:-.05em;top:-.35em;font:700 3.2em/1 "IBM Plex Sans",Helvetica,Arial,Lucida,sans-serif;color:#2E6FB0;opacity:0;transform:translateY(10px)}
.be-motion .et_pb_text_inner > blockquote.in::before{opacity:.22;transform:none;transition:opacity .5s ease .18s, transform .5s ease .18s}
/* tables: row highlight */
.be-motion .et_pb_text_inner table tr{transition:background-color .2s ease}
.be-motion .et_pb_text_inner table tr:hover{background-color:rgba(151,225,185,.18)}
/* related chips */
.be-motion .et_pb_text_inner a[href^="/"]{transition:color .2s ease}
@media (prefers-reduced-motion:reduce){ .be-motion .be-hero .be-word{opacity:1;transform:none} .be-motion .be-numeral{display:none} }
@media (max-width:980px){ .be-motion .be-numeral{font-size:120px;opacity:.08} }

/* ---- Highlighted phrase in a display heading -------------------------------
   Theme Options styles .pa-callout with vertical padding on an inline span, so on a
   tight line-height the mint box bleeds into the line above. Horizontal padding only,
   and box-decoration-break so it stays clean when the phrase wraps. */
.be-motion .pa-callout,.be-motion .pa-callout-2{padding:0 .14em!important;margin:0!important;box-decoration-break:clone;-webkit-box-decoration-break:clone;line-height:inherit}
@media (max-width:767px){.be-motion .pa-callout,.be-motion .pa-callout-2{padding:0 .1em!important}}

/* ---- Mobile menu: collapse the sub-menus -----------------------------------
   Divi opens the burger with every item expanded: nine top-level plus twenty-six
   children, 35 rows in a 700px scrolling panel, so Talk to us is thirty-three rows
   down. Sections now start closed -- nine rows, no scrolling -- and a chevron opens
   one. Tapping the label still follows the link, because every parent except Your
   role is a real page. The section you are in opens itself. */
.be-motion .et_mobile_menu .menu-item-has-children{position:relative}
/* Divi ships `.et_mobile_menu li ul{visibility:visible!important;display:block!important}`,
   so closing a sub-menu needs the same weight. */
/* Divi hides this behind an ID selector:
   `#main-header .et_mobile_menu li ul{visibility:visible!important;display:block!important}`.
   An ID beats any number of classes, so a class-only override could never win however
   many !importants it carried. Match their selector shape and go one better. */
#main-header .et_mobile_menu li.menu-item-has-children > ul.sub-menu,.et_pb_fullwidth_menu .et_mobile_menu li.menu-item-has-children > ul.sub-menu,.et_pb_menu .et_mobile_menu li.menu-item-has-children > ul.sub-menu{display:none!important;visibility:hidden!important;height:0!important;overflow:hidden!important}
#main-header .et_mobile_menu li.menu-item-has-children.be-open > ul.sub-menu,.et_pb_fullwidth_menu .et_mobile_menu li.menu-item-has-children.be-open > ul.sub-menu,.et_pb_menu .et_mobile_menu li.menu-item-has-children.be-open > ul.sub-menu{display:block!important;visibility:visible!important;height:auto!important;overflow:visible!important}
.be-motion .et_mobile_menu .be-sub-toggle{position:absolute;top:0;right:0;width:64px;height:52px;padding:0;margin:0;background:none;border:0;cursor:pointer;-webkit-appearance:none;appearance:none;z-index:3}
.be-motion .et_mobile_menu .be-sub-toggle::after{content:"";position:absolute;top:50%;right:24px;width:9px;height:9px;margin-top:-6px;border-right:2px solid currentColor;border-bottom:2px solid currentColor;transform:rotate(45deg);opacity:.75;transition:transform .18s ease}
.be-motion .et_mobile_menu .menu-item-has-children.be-open > .be-sub-toggle::after{transform:rotate(-135deg);margin-top:-2px}
.be-motion .et_mobile_menu .be-sub-toggle:focus-visible{outline:2px solid #97E1B9;outline-offset:-4px}
.be-motion .et_mobile_menu .menu-item-has-children > a{padding-right:64px}

/* ---- Close of a blog entry ------------------------------------------------
   Every entry ends on body copy with nothing after it. This is the ask, in the
   site's own furniture: where to go next and how to reach us. Appended by filter
   in be_post_cta() so new entries get it without anyone remembering. */
.be-motion .et-pb-contact-message{margin:0 0 1.1rem}
.be-motion .et-pb-contact-message p{font-size:clamp(1.5rem,3vw,2.1rem);line-height:1.15;font-weight:700;color:#0A1438;margin:0}
.be-motion .et-pb-contact-message p:first-child::after{content:"";display:block;width:56px;height:3px;background:#2E6FB0;margin:.7rem 0 0}
.be-motion .be-postcta{margin:3rem 0 0;padding:34px 36px 36px;background:#E0F6EA;border:1px solid rgba(10,20,56,.14);border-radius:12px}
.be-motion .be-postcta .k{font-size:.76rem;font-weight:700;letter-spacing:2px;text-transform:uppercase;color:#46506E;margin:0 0 .6rem}
.be-motion .be-postcta h2{font-size:clamp(1.4rem,2.6vw,1.9rem);line-height:1.15;color:#0A1438;margin:0 0 .7rem}
.be-motion .be-postcta p.l{font-size:1.02rem;line-height:1.6;color:#0A1438;margin:0 0 1.4rem;max-width:60ch}
.be-motion .be-postcta .be-roles{display:flex;flex-wrap:wrap;gap:10px;margin:0}
@media (max-width:600px){.be-motion .be-postcta{padding:26px 22px 28px}}

/* ---- Card grids (glossary terms, Field notes entries) --------------------
   Reference material reads as a wall of bold-lead paragraphs otherwise, and the
   highlight sweep below turns every lead-in mint, which looks like a marked-up
   draft. Cards give it structure and stop the sweep firing. */
/* Card grids are opaque, so they must sit above the ghosted chapter numeral rather
   than under it. The numeral is z-index 0; anything with a background goes above. */
.be-motion .be-cards{position:relative;z-index:2;display:grid;grid-template-columns:repeat(3,1fr);grid-auto-rows:1fr;gap:18px;margin:8px 0 0;padding:0;list-style:none}
.be-motion .be-cards.two{grid-template-columns:repeat(2,1fr)}
.be-motion .be-cards>li,.be-motion .be-cards>div{background:#fff;border:1px solid rgba(10,20,56,.14);border-radius:10px;padding:20px 22px 22px;margin:0;list-style:none;display:flex;flex-direction:column}
.be-motion .be-cards .t{font-weight:700;font-size:1.02rem;line-height:1.3;color:#0A1438;margin:0 0 .5rem}
.be-motion .be-cards .d{font-size:.98rem;line-height:1.55;color:#3A445F;margin:0}
.be-motion .be-cards .d a{color:#0A1438}
.be-motion .be-cards .tag{align-self:flex-start;font-size:.7rem;font-weight:700;letter-spacing:1.4px;text-transform:uppercase;color:#0A1438;background:#97E1B9;padding:5px 10px;border-radius:999px;margin:0 0 .7rem}
.be-motion .be-cards .tag.alt{background:#F4DE7D}
.be-motion .be-cards .more{margin:auto 0 0;padding-top:1.1rem;font-weight:700;font-size:.95rem}
.be-motion .be-cards .more a{color:#0A1438;text-decoration:none;border-bottom:2px solid #97E1B9}
.be-motion .be-cards .more a:hover{border-bottom-color:#0A1438}
@media (max-width:980px){.be-motion .be-cards,.be-motion .be-cards.two{grid-template-columns:repeat(2,1fr)}}
@media (max-width:640px){.be-motion .be-cards,.be-motion .be-cards.two{grid-template-columns:1fr;grid-auto-rows:auto}}
