/* Shared footer, isolated from the header and page content. */
.bf.bf--ai{position:relative;isolation:isolate;overflow:hidden;background:#071e2b;color:#b4cbd5;border-top:1px solid #70edcd42}
.bf--ai .bf-wrap{position:relative;z-index:1;max-width:1440px;padding:64px 48px 0}
.bf--ai .bf-atmosphere{position:absolute;inset:0;pointer-events:none;overflow:hidden;background:radial-gradient(460px circle at var(--bf-x,70%) var(--bf-y,10%),#70edcd12,transparent 80%)}
.bf--ai .bf-atmosphere:after{content:'';position:absolute;inset:0;background-image:radial-gradient(#b3eade17 1px,transparent 1px);background-size:28px 28px;mask-image:linear-gradient(#000,transparent 65%)}
.bf--ai .bf-atmosphere span{position:absolute;left:30%;top:-240px;width:850px;height:500px;border-radius:50%;background:radial-gradient(ellipse,#12cba027,transparent 67%);animation:bf-light 12s ease-in-out infinite alternate;animation-play-state:paused}
.bf--ai .bf-atmosphere span+span{left:-250px;top:30%;background:radial-gradient(ellipse,#168cdb26,transparent 67%);animation-delay:-6s}
.bf--ai.bf-effects-active .bf-atmosphere span{animation-play-state:running}
@keyframes bf-light{from{transform:translate3d(-60px,0,0) scale(.9)}to{transform:translate3d(120px,70px,0) scale(1.2)}}
.bf--ai .bf-invitation{display:flex;align-items:center;justify-content:space-between;gap:40px;padding:0 0 52px;margin-bottom:48px;border-bottom:1px solid #cce9e51f}
.bf--ai .bf-kicker{color:#70edcd;font-size:10px;font-weight:800;letter-spacing:.18em;margin:0 0 20px}
.bf--ai .bf-invitation h2{color:#fff;font-size:clamp(32px,4vw,58px);line-height:1.12;letter-spacing:-.045em;font-weight:800;margin:0}
.bf--ai .bf-invitation h2 em{font-style:normal;color:#70edcd}
.bf--ai .bf-invitation__copy{color:#b4cbd5;font-size:14px;line-height:1.75;max-width:480px;margin:20px 0 0}
.bf--ai .bf-invitation__actions{display:flex;flex-direction:column;align-items:flex-start;gap:20px;flex-shrink:0}
.bf--ai .bf-start{display:flex;align-items:center;gap:32px;border-radius:8px;padding:19px 24px;background:#70edcd;color:#062b31;font-weight:800;font-size:14px;text-decoration:none;transition:transform .25s,box-shadow .25s,background .25s}
.bf--ai .bf-start:hover{transform:translateY(-3px);background:#a2f7e1;box-shadow:0 12px 40px #70edcd26}
.bf--ai .bf-start span{font-size:23px;transition:transform .25s}.bf--ai .bf-start:hover span{transform:translate(3px,-3px)}
.bf--ai .bf-talk{display:flex;gap:24px;align-items:center;color:#e3f5f3;font-size:14px;text-decoration:none;border-bottom:1px solid #a5c9c55c;padding-bottom:7px}
.bf--ai .bf-talk:hover{color:#70edcd}
.bf--ai .bf-motion{font:inherit;font-size:11px;color:#adc6d0;background:transparent;border:1px solid #a8cbd13d;border-radius:30px;padding:7px 12px;cursor:pointer}
.bf--ai .bf-motion:hover{border-color:#70edcd;color:#70edcd}
.bf--ai .bf-top{grid-template-columns:1.25fr 1fr .85fr .85fr 1.25fr;gap:32px}
.bf--ai .bf-top>div{min-width:0}
.bf--ai .bf-logo{background:transparent;border-radius:0;padding:0;transition:filter .3s}
.bf--ai .bf-logo:hover{filter:drop-shadow(0 0 12px #70edcd30)}
.bf--ai .bf-logo img{width:210px;height:auto;max-width:100%;object-fit:contain;filter:brightness(1.35)}
.bf--ai .bf-p{color:#b4cbd5;font-size:13px;line-height:1.85}
.bf--ai .bf-h{color:#f2faf9;font-size:11px;letter-spacing:.13em}
.bf--ai .bf-a{color:#b4cbd5;font-size:13px;display:inline-block;text-decoration:none;transition:color .2s,transform .2s}
.bf--ai .bf-a:hover{color:#70edcd;transform:translateX(3px)}
.bf--ai .bf-list--blog .bf-a:before{color:#70edcd}
.bf--ai .bf-social{gap:8px}
.bf--ai .bf-social__a{background:#ffffff08;border-color:#b9e2dd30;color:#d6efea;transition:transform .25s,background .25s,color .25s,box-shadow .25s}
.bf--ai .bf-social__a:hover{transform:translateY(-4px);background:#70edcd;color:#062b31;border-color:#70edcd;box-shadow:0 8px 24px #70edcd20}
.bf--ai .bf-contact__a{color:#b4cbd5;font-size:13px;overflow-wrap:anywhere}
.bf--ai .bf-contact__a:hover{color:#70edcd}
.bf--ai .bf-contact__a svg{stroke:#70edcd}
.bf--ai .bf-iso{background:#fff;border-radius:4px;padding:5px;width:116px}
.bf--ai .bf-bar{border-color:#cce9e51f;color:#aac2ce;font-size:12px;margin-top:44px;padding:24px 0}
.bf--ai .bf-bar__links a,.bf--ai .bf-bar__links button{color:#aac2ce}
.bf--ai .bf-bar__links a:hover,.bf--ai .bf-bar__links button:hover{color:#70edcd}
.bf--ai *:focus-visible{outline:2px solid #70edcd;outline-offset:5px}
@media(max-width:1100px){.bf--ai .bf-top{grid-template-columns:repeat(3,minmax(0,1fr))}.bf--ai .bf-about{grid-column:1/-1;max-width:500px}.bf--ai .bf-contact-col{grid-column:1/-1}.bf--ai .bf-contact{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:700px){.bf--ai .bf-wrap{padding:42px 22px 0}.bf--ai .bf-invitation{flex-direction:column;align-items:flex-start;gap:28px;padding-bottom:36px;margin-bottom:36px}.bf--ai .bf-invitation h2{font-size:36px}.bf--ai .bf-invitation__actions{gap:17px}.bf--ai .bf-top{grid-template-columns:repeat(2,minmax(0,1fr));gap:30px 22px}.bf--ai .bf-contact{grid-template-columns:1fr}.bf--ai .bf-about{grid-column:1/-1}.bf--ai .bf-contact-col{grid-column:1/-1}.bf--ai .bf-bar{gap:18px;font-size:11px}.bf--ai .bf-a{line-height:1.65}.bf--ai .bf-kicker{font-size:9px}.bf--ai .bf-invitation__copy{font-size:13px}}
@media(prefers-reduced-motion:reduce){.bf--ai .bf-atmosphere span{animation:none}.bf--ai *, .bf--ai *:before,.bf--ai *:after{transition:none!important}.bf--ai .bf-motion{display:none}.bf--ai .bf-start:hover,.bf--ai .bf-a:hover,.bf--ai .bf-social__a:hover,.bf--ai .bf-start:hover span{transform:none}}

/* Reuse the header's transparent 3D intro; no backing plate. */
.bf--ai .bf-logo__stage{position:relative;display:block;width:210px;max-width:100%}
.bf--ai .bf-logo__stage video{position:absolute;width:158.85%;height:172.02%;max-width:none;left:-30.66%;top:-35.89%;opacity:0;pointer-events:none;filter:brightness(1.15)}
.bf--ai .bf-logo__stage.is-playing video{opacity:1}

/* Clean native outlines contain no raster matte or background pixels. */
.bf--ai .bf-logo__vector{display:block;width:210px;height:70px;max-width:100%;overflow:visible}
.bf--ai .bf-logo__stage.is-playing .bf-logo__vector{opacity:0}
@media(prefers-reduced-motion:reduce){.bf--ai .bf-logo__stage.is-playing .bf-logo__vector{opacity:1}}
@media(prefers-reduced-motion:reduce){.bf--ai .bf-logo__stage video{display:none}}

/* An animated neural wave echoes the homepage's navy / mint visual language. */
.bf--ai .bf-invitation{margin-bottom:0;border-bottom:0}
.bf--ai .bf-network{position:relative;min-height:164px;margin:0 0 44px;border-top:1px solid #70edcd25;border-bottom:1px solid #70edcd25;overflow:hidden;background:linear-gradient(90deg,#0a2834,#09263580,#071e2b)}
.bf--ai .bf-network__canvas{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}
.bf--ai .bf-network__label{position:relative;z-index:1;display:flex;min-height:164px;flex-direction:column;justify-content:center;gap:12px;padding:24px 28px;width:39%;background:linear-gradient(90deg,#0a2834 75%,#0a283400)}
.bf--ai .bf-network__label>span{font-size:8px;letter-spacing:.16em;font-weight:700;color:#a8ccc9}
.bf--ai .bf-network__label strong{font-size:clamp(19px,2.2vw,28px);letter-spacing:-.04em;line-height:1.3;color:#ecfbf8;white-space:nowrap}
.bf--ai .bf-network__label b{color:#70edcd;font-weight:500;margin:0 6px}
@media(max-width:700px){.bf--ai .bf-network{min-height:200px;margin-bottom:34px}.bf--ai .bf-network__label{min-height:0;width:100%;padding:20px 18px;background:linear-gradient(#0a2834,transparent);gap:8px}.bf--ai .bf-network__label strong{font-size:23px}.bf--ai .bf-network__label>span{font-size:7px}.bf--ai .bf-network__canvas{top:65px;height:135px}}

/* ------------------------------------------------------------ the AI, built
   "AI" at the end of "Your expertise + AI" sits exactly where the network
   beside it begins, so it is drawn as the thing that drives it. Four layers,
   all clipped to the same two letters, so nothing sits in a box round them:
     1. the letters, in a holographic fill that drifts slowly across them
     2. a blurred copy behind, breathing, which is what makes them glow
     3. a "thinking" shimmer - the band of light AI products run across a word
        while a model works - crossing them every few seconds
     4. a core of light behind the word that flares whenever a signal leaves
        it along the network (site-footer-effects.js fires it)
   When the footer first comes into view the word decodes itself out of
   glyphs, with a red and cyan fringe while it does. Nothing orbits it.
   Everything is paused until the footer's effects are running, and the
   "Pause effects" button and reduced motion both stop all of it. */
.bf--ai .bf-sr{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
.bf--ai .bf-ai{position:relative;display:inline-block;isolation:isolate;font-size:1.32em;font-weight:800;letter-spacing:-.01em;line-height:1;vertical-align:-.07em}
.bf--ai .bf-ai__word{position:relative;display:inline-block;white-space:nowrap;
  background:linear-gradient(100deg,#70edcd 0%,#8bdbff 20%,#b3a4ff 38%,#ffd98a 54%,#70edcd 72%,#8bdbff 100%);
  background-size:300% 100%;-webkit-background-clip:text;background-clip:text;color:transparent;
  animation:bf-ai-drift 8s ease-in-out infinite;animation-play-state:paused;
  transition:filter .4s ease,text-shadow .2s ease}
/* the glow: the same letters, blurred, behind them */
.bf--ai .bf-ai__word:before{content:attr(data-text);position:absolute;left:0;top:0;z-index:-1;pointer-events:none;
  background:linear-gradient(100deg,#70edcd 0%,#8bdbff 20%,#b3a4ff 38%,#ffd98a 54%,#70edcd 72%,#8bdbff 100%);
  background-size:300% 100%;-webkit-background-clip:text;background-clip:text;color:transparent;text-shadow:none;
  filter:blur(9px);opacity:.6;
  animation:bf-ai-drift 8s ease-in-out infinite,bf-ai-breathe 4.2s ease-in-out infinite;animation-play-state:paused}
/* the thinking shimmer */
.bf--ai .bf-ai__word:after{content:attr(data-text);position:absolute;left:0;top:0;pointer-events:none;
  background:linear-gradient(100deg,transparent 36%,rgba(255,255,255,.96) 50%,transparent 64%);
  background-size:260% 100%;background-position:130% 0;
  -webkit-background-clip:text;background-clip:text;color:transparent;text-shadow:none;
  animation:bf-ai-shimmer 4.8s ease-in-out infinite;animation-play-state:paused}
/* the core behind it, and what happens when it fires */
.bf--ai .bf-ai__core{position:absolute;left:50%;top:52%;z-index:-2;width:2.6em;height:2.6em;margin:-1.3em 0 0 -1.3em;border-radius:50%;pointer-events:none;
  background:radial-gradient(circle,rgba(112,237,205,.36) 0,rgba(139,219,255,.16) 38%,rgba(112,237,205,0) 70%);
  opacity:.5;transform:scale(.84);transition:opacity .5s ease,transform .5s ease}
.bf--ai .bf-ai.is-firing .bf-ai__core{opacity:1;transform:scale(1.2);transition-duration:.12s}
.bf--ai .bf-ai.is-firing .bf-ai__word{filter:brightness(1.35) drop-shadow(0 0 10px rgba(112,237,205,.55));transition-duration:.1s}
/* the "+" answers it, so the whole line reads as one signal */
.bf--ai .bf-network__label b{transition:color .4s ease,text-shadow .4s ease}
.bf--ai .bf-network__label:has(.bf-ai.is-firing) b{color:#b4ffe6;text-shadow:0 0 12px #70edcd;transition-duration:.1s}
/* while it decodes: a split of red and cyan either side of the glyphs */
.bf--ai .bf-ai.is-decoding .bf-ai__word{text-shadow:-1.5px 0 rgba(0,229,255,.6),1.5px 0 rgba(255,64,160,.5)}
.bf--ai.bf-effects-active .bf-ai__word,.bf--ai.bf-effects-active .bf-ai__word:before,.bf--ai.bf-effects-active .bf-ai__word:after{animation-play-state:running}
@keyframes bf-ai-drift{0%,100%{background-position:0% 50%}50%{background-position:100% 50%}}
@keyframes bf-ai-breathe{0%,100%{opacity:.4}50%{opacity:.9}}
/* the shimmer waits off the word, crosses it, then waits again */
@keyframes bf-ai-shimmer{0%,52%{background-position:130% 0}84%,100%{background-position:-30% 0}}
@media(prefers-reduced-motion:reduce){
  .bf--ai .bf-ai__word{animation:none;background:none;color:#70edcd;filter:none;text-shadow:none}
  .bf--ai .bf-ai__word:before,.bf--ai .bf-ai__word:after{display:none}
  .bf--ai .bf-ai__core{opacity:.4;transform:none}
}
