@font-face{font-family:Jakarta;src:url('assets/fonts/plus-jakarta-sans.ttf') format('truetype');font-weight:200 800;font-display:swap}#integrations *{box-sizing:border-box}#integrations .ecosystem{margin:0;color:#10201c;font-family:Jakarta,sans-serif;background:#fcfefd}#integrations .ecosystem{position:relative;width:100%;max-width:1920px;margin:auto;aspect-ratio:1.5;container-type:inline-size;background:radial-gradient(ellipse at 0 55%,#d9f5e9 0,transparent 35%),radial-gradient(ellipse at 90% 10%,#e1f6ee 0,transparent 28%),radial-gradient(ellipse at 63% 90%,#dff5ed 0,transparent 25%),radial-gradient(ellipse at 16% 25%,#e7f3fd 0,transparent 30%),#fff}#integrations .intro{position:absolute;left:5.34%;top:9.6%;width:57%}#integrations .intro h2{font-size:3.9cqw;font-weight:600;line-height:1.04;letter-spacing:-.055em;margin:0 0 1.3cqw}#integrations .intro p{font-size:1.43cqw;line-height:1.5;color:#5e6b68;margin:0}#integrations .card{position:absolute;border:1px solid #cbd9d4;border-radius:.8cqw;background:rgba(255,255,255,.84);padding:1.8cqw;box-shadow:0 12px 28px #14382c09}#integrations .card h2{text-transform:uppercase;font-size:.87cqw;font-weight:700;letter-spacing:.18em;color:#0c6258;margin:0 0 1.15cqw}#integrations .report{left:5.34%;top:32.72%;width:33.4%;height:52.25%}#integrations .word{border:1px solid #c9d4d9;border-radius:.65cqw;overflow:hidden;background:#f4f6f7;box-shadow:0 8px 20px #14382c15}#integrations .word-bar{display:flex;align-items:center;gap:1cqw;padding:.65cqw 1cqw;background:linear-gradient(110deg,#185abd,#2564ad);color:white;font-size:.98cqw;min-height:2.9cqw}#integrations .word-bar img{width:1.7cqw;height:1.7cqw;object-fit:contain}#integrations .window-controls{margin-left:auto}#integrations .word-tabs{font-size:.7cqw;padding:.9cqw .7cqw;white-space:nowrap;color:#52606b}#integrations .paper{margin:0 .65cqw;background:#fff;padding:1.6cqw;min-height:19.1cqw}#integrations .paper h3{font-size:1.25cqw;letter-spacing:-.04em;margin:0 0 1cqw}#integrations .paper p{font-size:.98cqw;line-height:1.55;color:#47565c;margin:0 0 .55cqw}#integrations .paper .finding{background:#e0f2e8;color:#144e3c;padding:.15cqw;border-radius:2px}#integrations .word-status{font-size:.52cqw;display:flex;justify-content:space-between;padding:.65cqw .9cqw;color:#5e6b68}#integrations .report-caption{font-size:.92cqw;color:#5e6b68;margin:1.15cqw 0 0}#integrations .hub{position:absolute;left:47.85%;top:47.05%;width:9.55%;text-align:center}#integrations .hub-logo{display:grid;place-items:center;height:8.3cqw;border-radius:1.5cqw;background:radial-gradient(ellipse at 0 0,#427f68,transparent 70%),linear-gradient(135deg,#15513f,#083b2e);color:white;font-size:2.8cqw;font-weight:800;letter-spacing:-.07em;box-shadow:0 10px 25px #145d4020}#integrations .hub p{font-size:1cqw;line-height:1.45;color:#5e6b68;margin:1cqw -1cqw 0}#integrations .systems{left:65.56%;top:16.7%;width:30.4%;height:30.5%}#integrations .card-heading{display:flex;align-items:center;justify-content:space-between;gap:.4cqw;margin-bottom:1.1cqw}#integrations .card-heading h2{margin:0}#integrations .card-heading small{font-size:.54cqw;white-space:nowrap;color:#77878b}#integrations .card-heading small i{display:inline-block;width:1.6cqw;border-top:1px dashed #8c9fa5;vertical-align:middle;margin-right:.4cqw}#integrations .system-row,#integrations .source-row{display:flex;align-items:center;border:1px solid #d7e0de;border-radius:.55cqw;gap:1.8cqw;padding:.65cqw 1.2cqw;margin-bottom:.6cqw;background:#ffffff70}#integrations .system-row{min-height:4.45cqw}#integrations .system-row img{width:2.8cqw;height:2.8cqw;object-fit:contain}#integrations .system-row strong{font-size:1.23cqw;font-weight:600}#integrations .system-row>span{margin-left:auto;font-size:.7cqw;background:#edf4ef;color:#0c6258;border-radius:20px;padding:.35cqw .8cqw;white-space:nowrap}#integrations .research{left:65.56%;top:49.6%;width:30.4%;height:39.1%}#integrations .source-row{height:3.12cqw;margin-bottom:.48cqw;gap:2cqw}#integrations .source-row img{width:5.8cqw;height:1.9cqw;object-fit:contain;object-position:left}#integrations .source-row span{font-size:1.05cqw}#integrations .research>.source-total{display:flex;justify-content:center;align-items:center;gap:1.2cqw;background:#e6f4ef;color:#0c6258;text-decoration:none;border-radius:1cqw;padding:.9cqw;font-size:.83cqw;font-weight:600}#integrations .threads{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;overflow:visible;fill:none;stroke:#087971;stroke-width:2}#integrations .threads circle{fill:#087971;stroke:none}#integrations .threads .planned{stroke:#94a5aa;stroke-dasharray:8 6}#integrations .threads .planned-dot{fill:#94a5aa}#integrations .thread-label{position:absolute;font-size:.82cqw;color:white;background:linear-gradient(120deg,#08634f,#008782);padding:.5cqw .9cqw;border-radius:2cqw;box-shadow:0 4px 10px #145d4012}#integrations .findings-label{left:37.7%;top:52.05%}#integrations .sources-label{left:57%;top:67.1%}#integrations footer{position:absolute;bottom:5.4%;left:3.7%;right:4%;display:flex;justify-content:space-between;font-size:.65cqw;letter-spacing:.22em;text-transform:uppercase;color:#6e898d}#integrations footer>span:first-child:before{content:'';display:inline-block;width:2cqw;height:1px;background:#0c6258;margin-right:1.4cqw;vertical-align:middle}
@media(max-width:760px){#integrations .ecosystem{aspect-ratio:auto;display:flex;flex-direction:column;gap:24px;padding:40px 20px}#integrations .intro,#integrations .card,#integrations .hub,#integrations footer{position:static;width:100%;height:auto}#integrations .intro h2{font-size:36px;letter-spacing:-1.6px;margin-bottom:16px}#integrations .intro p{font-size:17px}#integrations .desktop-break{display:none}#integrations .card{padding:22px;border-radius:12px}#integrations .card h2{font-size:12px;margin-bottom:18px}#integrations .report{order:1}#integrations .hub{order:2}#integrations .systems{order:3}#integrations .research{order:4}#integrations footer{order:5;font-size:10px}#integrations .hub-logo{height:85px;width:110px;margin:auto;font-size:32px;border-radius:16px}#integrations .hub p{font-size:15px;margin:12px 0}#integrations .threads,#integrations .thread-label{display:none}#integrations .word-bar{font-size:13px;padding:10px}#integrations .word-bar img{width:24px;height:24px}#integrations .word-tabs{font-size:9px;padding:12px 6px;overflow:hidden}#integrations .paper{margin:0 8px;padding:20px;min-height:0}#integrations .paper h3{font-size:20px;margin-bottom:15px}#integrations .paper p{font-size:14px;margin-bottom:10px}#integrations .word-status{font-size:8px;padding:8px}#integrations .report-caption{font-size:14px;margin-top:15px}#integrations .card-heading{display:block;margin-bottom:16px}#integrations .card-heading small{font-size:10px}#integrations .card-heading small i{width:20px;margin-right:5px}#integrations .system-row,#integrations .source-row{padding:12px;gap:14px;border-radius:8px;margin-bottom:8px;height:auto;min-height:54px}#integrations .system-row img{width:32px;height:32px}#integrations .system-row strong,#integrations .source-row span{font-size:15px}#integrations .system-row>span{font-size:10px;padding:5px 8px}#integrations .source-row img{width:75px;height:28px}#integrations .research>.source-total{font-size:13px;padding:13px;border-radius:10px}#integrations footer>span:first-child:before{width:20px;margin-right:10px}}

#integrations{padding:0;scroll-margin-top:110px}#integrations .ecosystem-wordmark{font-family:"Plus Jakarta Sans",Jakarta,sans-serif;font-weight:800;letter-spacing:-.067em;line-height:1}#integrations footer{border:0;background:transparent;padding:0}
#integrations .threads>path,#integrations .threads>path.planned{stroke-dasharray:2 8;stroke-linecap:round;animation:ecosystem-data-flow 2.4s linear infinite alternate}
@keyframes ecosystem-data-flow{from{stroke-dashoffset:0}to{stroke-dashoffset:-40}}
@media(prefers-reduced-motion:reduce){#integrations .threads>path,#integrations .threads>path.planned{animation:none}}
#integrations .source-row{min-height:0;flex-shrink:0}
#integrations .source-row>span{margin:0;color:#10201c;line-height:1.3}
#integrations .ecosystem{min-width:0;max-width:100%;overflow:clip}
@media(max-width:760px){#integrations .source-row{min-height:54px}}
#integrations .research{display:flex;flex-direction:column}
#integrations .research .source-row{flex:1 1 0;min-height:0}
#integrations .research>h2,#integrations .research>.source-total{flex-shrink:0}
@media(max-width:760px){#integrations .research .source-row{flex:none;min-height:54px}}
/* Ink-blue atmosphere: broad cobalt light, with smaller, softer cyan pools.
   Background-only layers preserve selection, connector motion, and mobile flow. */
#integrations{background:#041c34}
#integrations .ecosystem{
  /* Keep the system map legible without asking a laptop viewport to scroll
     through a billboard-sized composition. aspect-ratio is NOT set here on
     purpose: this rule runs after the max-width:760px mobile block, and an
     unconditioned aspect-ratio here previously overrode that block's
     aspect-ratio:auto on every phone width, forcing the flex-column mobile
     layout back into the desktop aspect-ratio box and clipping/squeezing
     the cards below. */
  max-width:1400px;
  background:
    radial-gradient(ellipse 13% 18% at 6% 3%,rgba(10,179,203,.57) 0%,rgba(5,139,184,.22) 45%,transparent 100%),
    radial-gradient(ellipse 32% 30% at 14% 0%,rgba(15,109,193,.44) 0%,rgba(10,80,151,.16) 53%,transparent 100%),
    radial-gradient(ellipse 21% 20% at 85% 3%,rgba(32,103,216,.51) 0%,rgba(18,78,157,.17) 55%,transparent 100%),
    radial-gradient(ellipse 25% 31% at 0% 72%,rgba(20,108,231,.56) 0%,rgba(9,80,177,.2) 52%,transparent 100%),
    radial-gradient(ellipse 14% 23% at 99% 59%,rgba(0,164,187,.38) 0%,rgba(0,121,152,.12) 55%,transparent 100%),
    radial-gradient(ellipse 13% 16% at 64% 91%,rgba(5,187,195,.46) 0%,rgba(2,130,163,.18) 48%,transparent 100%),
    radial-gradient(ellipse 28% 24% at 55% 100%,rgba(0,108,147,.27) 0%,transparent 100%),
    radial-gradient(ellipse 22% 22% at 29% 90%,rgba(14,83,159,.24) 0%,transparent 100%),
    linear-gradient(125deg,#072844 0%,#04243c 48%,#041a33 100%);
}
#integrations .intro h2{color:#f6fbff}
#integrations .intro p{color:#b9d2ec}
#integrations .hub p{color:#d1eaf2}
#integrations footer{color:#a2bfdd}
#integrations footer>span:first-child:before{background:#a5cdeb}
#integrations .card{
  color:#102132;
  background:linear-gradient(135deg,#f7fcff 0%,#f1faff 100%);
  border-color:#d3e6f0;
  box-shadow:0 20px 46px rgba(0,10,28,.19),inset 0 1px 0 rgba(255,255,255,.9);
}
#integrations .report{background:linear-gradient(145deg,#fff 0%,#f8faff 100%)}
#integrations .card h2{color:#075b5c}
#integrations .card-heading small{color:#597b99}
#integrations .card-heading small i{border-color:#7b9eba}
#integrations .system-row,#integrations .source-row{
  background:rgba(255,255,255,.38);
  border-color:#d1e1eb;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.75);
}
#integrations .system-row strong,#integrations .source-row>span{color:#12243a}
#integrations .system-row>span{background:#e0effb;color:#315d80}
#integrations .research>.source-total{background:#ddf3f1;color:#075b5c}


#integrations .word-bar{background:linear-gradient(115deg,#164fc2,#175bc1 65%,#1b5cae)}
#integrations .paper .finding{background:#e0f3e9;color:#144f43}
#integrations .hub-logo{
  border:1px solid rgba(111,238,214,.66);
  background:
    radial-gradient(ellipse at 0% 0%,rgba(36,205,173,.66),transparent 72%),
    linear-gradient(140deg,#087f73 0%,#034c49 66%,#033b3e 100%);
  box-shadow:
    inset 0 1px 0 rgba(180,255,232,.3),
    inset 0 -8px 24px rgba(0,32,41,.16),
    0 0 18px rgba(32,228,192,.19),
    0 0 54px rgba(4,199,176,.23),
    0 0 110px rgba(0,175,164,.13),
    0 16px 32px rgba(0,12,29,.22);
}
#integrations .ecosystem-wordmark{position:relative;display:inline-block;isolation:isolate}
#integrations .ecosystem-wordmark-letters{display:block;color:#fff}
#integrations .ecosystem-wordmark-ball{position:absolute;z-index:1;top:-.16em;left:0;width:.26em;height:.26em;margin:0!important;border-radius:50%;background:radial-gradient(circle at 34% 27%,#fff 0 20%,#d8fff4 42%,#8fdfd2 100%);box-shadow:0 .04em .12em rgba(0,14,29,.38),0 0 .16em rgba(182,255,240,.78);transform-origin:center bottom;animation:ecosystem-wordmark-ball 3.8s cubic-bezier(.45,0,.55,1) infinite alternate}
@keyframes ecosystem-wordmark-ball{0%,3%{transform:translate(.25em,0) scale(1.13,.82)}16%{transform:translate(.6em,-.44em) scale(.94,1.06)}31%,34%{transform:translate(.94em,0) scale(1.13,.82)}47%{transform:translate(1.28em,-.44em) scale(.94,1.06)}62%,65%{transform:translate(1.59em,0) scale(1.13,.82)}78%{transform:translate(1.92em,-.44em) scale(.94,1.06)}97%,100%{transform:translate(2.16em,0) scale(1.13,.82)}}
@media(prefers-reduced-motion:reduce){#integrations .ecosystem-wordmark-ball{animation:none;transform:translate(2.16em,0)}}
#integrations .threads{stroke:#8cece7}
#integrations .threads>path{filter:drop-shadow(0 0 3px rgba(63,226,218,.2))}
#integrations .threads circle{fill:#a0f2ed;stroke:#329caa;stroke-width:.65}
#integrations .threads .planned{stroke:#83cdd3}
#integrations .threads .planned-dot{fill:#9adce1}

/* Continuous light → ink → light canvas. The fade has its own breathing room,
   so neither the heading nor the cards need to be masked or moved. */
#integrations{
  --ecosystem-fade:clamp(112px,10vw,170px);
  --ecosystem-edge-space:clamp(28px,3vw,48px);
  position:relative;
  isolation:isolate;
  overflow:hidden;
  border:0;
  padding-block:var(--ecosystem-edge-space);
  background:#fbfdff;
}
#integrations::before,
#integrations::after{
  content:"";
  position:absolute;
  inset:0;
  pointer-events:none;
}
#integrations::before{
  z-index:-2;
  background:
    radial-gradient(ellipse 26% 28% at 0% 65%,rgba(24,100,217,.48),transparent 100%),
    radial-gradient(ellipse 18% 20% at 99% 60%,rgba(0,155,174,.25),transparent 100%),
    radial-gradient(ellipse 18% 15% at 52% 52%,rgba(0,137,126,.12),transparent 100%),
    linear-gradient(to bottom,
      #fbfdff 0,
      #eefbf9 calc(var(--ecosystem-fade)*.13),
      #b9e8ed calc(var(--ecosystem-fade)*.34),
      #4a97b6 calc(var(--ecosystem-fade)*.6),
      #194d72 calc(var(--ecosystem-fade)*.8),
      #072844 var(--ecosystem-fade),
      #06253e 48%,
      #06243b calc(100% - var(--ecosystem-fade)),
      #155271 calc(100% - var(--ecosystem-fade)*.76),
      #64b4c2 calc(100% - var(--ecosystem-fade)*.46),
      #ddf5ef calc(100% - var(--ecosystem-fade)*.17),
      #fbfdff 100%);
}
#integrations::after{
  z-index:-1;
  /* Overlapping light pools give the edges an uneven, feathered rhythm,
     without opaque waves or a straight gradient band. */
  background:
    radial-gradient(ellipse 25% calc(var(--ecosystem-fade)*.66) at 18% 0%,rgba(250,255,251,.9),transparent 100%),
    radial-gradient(ellipse 24% calc(var(--ecosystem-fade)*.85) at 59% 0%,rgba(232,255,242,.92),transparent 100%),
    radial-gradient(ellipse 16% calc(var(--ecosystem-fade)*.52) at 3% calc(var(--ecosystem-fade)*.5),rgba(21,192,208,.42),transparent 100%),
    radial-gradient(ellipse 23% calc(var(--ecosystem-fade)*.72) at 92% calc(var(--ecosystem-fade)*.58),rgba(34,128,249,.58),transparent 100%),
    radial-gradient(ellipse 25% calc(var(--ecosystem-fade)*.84) at 43% 100%,rgba(242,255,245,.94),transparent 100%),
    radial-gradient(ellipse 24% calc(var(--ecosystem-fade)*.62) at 87% 100%,rgba(238,251,255,.75),transparent 100%),
    radial-gradient(ellipse 17% calc(var(--ecosystem-fade)*.65) at 60% calc(100% - var(--ecosystem-fade)*.62),rgba(32,204,195,.48),transparent 100%),
    radial-gradient(ellipse 24% calc(var(--ecosystem-fade)*.62) at 10% calc(100% - var(--ecosystem-fade)*.66),rgba(42,135,225,.48),transparent 100%);
  /* Keep the exact outer seams unchanged throughout the animation. */
  -webkit-mask-image:linear-gradient(to bottom,transparent,#000 40px,#000 calc(100% - 40px),transparent);
  mask-image:linear-gradient(to bottom,transparent,#000 40px,#000 calc(100% - 40px),transparent);
  animation:ecosystem-edge-drift 20s ease-in-out infinite alternate;
}
#integrations .ecosystem{
  background:transparent;
  overflow:visible;
}
#integrations footer{color:#c9e0f1}

/* Bring neighboring section backgrounds to the same edge color.
   These are background layers only; all content stays fully opaque. */
#firms.workspace-showcase{position:relative;isolation:isolate}
#firms.workspace-showcase::after{
  content:"";
  position:absolute;
  inset:auto 0 0;
  height:72px;
  background:linear-gradient(to bottom,rgba(251,253,255,0),#fbfdff);
  pointer-events:none;
  z-index:-1;
}
#integrations + .expertise-marquee-section{
  position:relative;
  isolation:isolate;
  border-top:0;
}
#integrations + .expertise-marquee-section::before{
  content:"";
  position:absolute;
  inset:0 0 auto;
  height:220px;
  background:linear-gradient(to bottom,#fbfdff,rgba(251,253,255,0));
  pointer-events:none;
  z-index:-1;
}
@keyframes ecosystem-edge-drift{
  from{transform:translate3d(-.7%,0,0) scaleX(1.035);opacity:.86}
  to{transform:translate3d(.7%,0,0) scaleX(1.035);opacity:1}
}
@media(max-width:760px){
  #integrations{--ecosystem-fade:148px;--ecosystem-edge-space:124px}
  #integrations .ecosystem{padding-top:28px;padding-bottom:32px}
  #integrations::after{animation:none}
}
@media(prefers-reduced-motion:reduce){
  #integrations::after{animation:none}
}
