/* Connected Intelligence homepage, laid out on the waabi.ai page model.
   Colours are the CI light and dark token values; red is used for action and light only. */

:root{
  --cream:#e6e2de;          /* light surface-raised */
  --paper:#efedea;          /* light surface-void */
  --ink:#151515;            /* dark surface-base / light text-primary */
  --ink-2:#1e1c1c;
  --mute:rgba(21,21,21,.5);
  --mute-2:rgba(21,21,21,.18);
  --snow:#dbdad7;           /* dark text-primary */
  --snow-mute:rgba(219,218,215,.62);
  --red:#e60000;            /* signal-action */
  --red-lit:#ff3b2e;        /* signal-raised (dark) */
  --snappy:cubic-bezier(.19,1,.22,1);
  --r:16px;
  --gut:24px;
}
@media (min-width:768px){:root{--gut:40px}}

*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--font-sans);font-weight:400;
  -webkit-font-smoothing:antialiased;overflow-x:clip}
img{display:block;max-width:100%}
a{color:inherit}
h1,h2,h3,p,figure,ol{margin:0;padding:0}
ol{list-style:none}
button{font:inherit;color:inherit;background:none;border:0;cursor:pointer}
:focus-visible{outline:2px solid var(--red-lit);outline-offset:3px}
.skip{position:absolute;left:12px;top:-60px;z-index:900;background:var(--ink);color:var(--snow);padding:10px 16px;border-radius:999px;font-size:13px}
.skip:focus{top:12px}

/* ------------------------------------------------------------------ type scale (waabi z/s scale, set in Poppins) */
.z-80{font-size:clamp(40px,5.6vw,80px);line-height:.95;letter-spacing:-.04em;font-weight:400}
.z-60{font-size:clamp(34px,4.2vw,60px);line-height:1;letter-spacing:-.035em;font-weight:400}
.z-40{font-size:clamp(26px,2.8vw,40px);line-height:1.12;letter-spacing:-.03em;font-weight:400}
.z-24{font-size:clamp(18px,1.67vw,24px);line-height:1.3;letter-spacing:-.02em;font-weight:400}
.z-20{font-size:20px;line-height:1.2;letter-spacing:-.02em;font-weight:400}
.s-15{font-size:15px;line-height:1.6;letter-spacing:.01em}
.s-12{font-size:12px;line-height:1.4;letter-spacing:.03em;font-weight:500}

/* ------------------------------------------------------------------ buttons */
.btn{display:inline-flex;align-items:center;justify-content:center;height:48px;padding:0 26px;border-radius:999px;
  font-size:13px;font-weight:500;letter-spacing:.02em;text-decoration:none;transition:background .4s var(--snappy),transform .4s var(--snappy)}
.btn--red{background:var(--red);color:#fff}
.btn--red:hover{background:#c40000}
.arrow{display:inline-flex;align-items:center;justify-content:center;width:50px;height:50px;border-radius:50%;
  border:1px solid rgba(255,255,255,.2);transition:background .4s var(--snappy),border-color .4s var(--snappy)}
.arrow svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.6}
.arrow--line{border-color:var(--mute-2);color:var(--ink)}
.arrow--line:hover{background:var(--ink);color:var(--paper);border-color:var(--ink)}

/* ------------------------------------------------------------------ floating pill header */
.pill{position:fixed;top:14px;left:50%;transform:translateX(-50%);z-index:800;width:min(380px,calc(100% - 28px))}
.pill__bar{display:flex;align-items:center;gap:14px;height:52px;padding:0 8px 0 14px;background:var(--paper);
  border-radius:12px;box-shadow:0 1px 0 rgba(0,0,0,.06),0 8px 24px rgba(0,0,0,.08)}
.pill__logo{display:flex;align-items:center;gap:8px;text-decoration:none}
.pill__logo img{width:32px;height:auto}
.pill__word{font-size:9.5px;line-height:1.1;font-weight:600;letter-spacing:.16em;text-transform:uppercase}
.pill__label{flex:1;color:var(--mute);padding-left:12px;border-left:1px solid var(--mute-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pill__tog{position:relative;width:36px;height:36px;border-radius:50%;flex:none}
.pill__tog:hover{background:var(--cream)}
.pill__tog i{position:absolute;left:11px;right:11px;height:1.5px;background:var(--ink);transition:transform .45s var(--snappy)}
.pill__tog i:first-child{top:15px}.pill__tog i:last-child{top:20px}
.pill__tog[aria-expanded="true"] i:first-child{transform:translateY(2.5px)}
.pill__tog[aria-expanded="true"] i:last-child{transform:translateY(-2.5px)}
.pill__menu{margin-top:6px;background:var(--paper);border-radius:12px;padding:18px 22px 22px;display:flex;flex-direction:column;gap:6px;
  box-shadow:0 8px 24px rgba(0,0,0,.1);animation:menu-in .5s var(--snappy)}
.pill__menu a.z-24{text-decoration:none;padding:4px 0;transition:color .3s}
.pill__menu a.z-24:hover{color:var(--red)}
.pill__menu .btn{margin-top:14px}
.pill__menu[hidden]{display:none}
@keyframes menu-in{from{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:none}}

/* ------------------------------------------------------------------ 1 hero */
.hero{position:relative;z-index:5;height:250vh;margin-bottom:-75vh;color:var(--snow)}
.hero__stick{position:sticky;top:0;height:100vh;height:100svh;overflow:hidden}
.hero__media{position:absolute;inset:0;background:var(--ink);will-change:clip-path}
.hero__media picture img{width:100%;height:100%;object-fit:cover;animation:drift 24s ease-in-out infinite alternate}
.hero__net{position:absolute;left:0;right:0;bottom:8%;width:100%;opacity:.55;mix-blend-mode:screen}
.hero__shade{position:absolute;inset:0;background:linear-gradient(180deg,rgba(0,0,0,.2),rgba(0,0,0,.35) 50%,rgba(0,0,0,.7))}
@keyframes drift{from{transform:scale(1.04)}to{transform:scale(1.12) translate(-1.5%,-1%)}}
.hero__text{position:absolute;left:0;bottom:0;padding:0 var(--gut) 44px;max-width:760px}
@media (min-width:768px){.hero__text{padding-bottom:90px;padding-left:90px}}
.hero__eye{color:var(--snow-mute);margin-bottom:18px;text-transform:uppercase;letter-spacing:.14em}
.words .w{display:inline-block;opacity:0;transform:translateY(8px);transition:opacity .9s var(--snappy),transform .9s var(--snappy)}
.words.is-in .w{opacity:1;transform:none}

/* ------------------------------------------------------------------ 2 statement with drifting tiles */
.road{position:relative;height:160vh;background:var(--paper);overflow:clip}
.road__tiles{position:absolute;inset:0}
.tile{position:absolute;width:clamp(92px,9.3vw,134px);aspect-ratio:1;border-radius:12px;overflow:hidden;background:var(--cream);will-change:transform}
.tile img{width:100%;height:100%;object-fit:cover}
.t1{left:4%;top:26%}.t2{left:16%;top:8%}.t3{left:12%;top:52%}.t4{left:3%;top:74%}
.t5{right:15%;top:12%}.t6{right:4%;top:30%}.t7{right:14%;top:56%}.t8{right:3%;top:78%}
.road__text{position:sticky;top:0;height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;
  text-align:center;padding:0 var(--gut);max-width:820px;margin:0 auto}
.road__h{color:var(--mute);margin-bottom:22px}
.road__p .w{opacity:.14;transition:opacity .25s linear}
.road__p .w.on{opacity:1}
.road__text{z-index:2}
@media (max-width:767px){.t2,.t5,.t8{display:none}.tile{width:64px}
  .t1{left:6%;top:4%}.t3{left:30%;top:88%}.t4{left:4%;top:80%}.t6{right:6%;top:6%}.t7{right:8%;top:84%}}

/* ------------------------------------------------------------------ 3 pillars */
.pillars{background:var(--paper);position:relative}
.pillars__in{display:flex;gap:40px;padding:10vh var(--gut)}
@media (min-width:1024px){.pillars__in{padding:0 90px;min-height:220vh}}
.pillars__media{flex:1;max-width:527px}
.pillars__sq{position:relative;aspect-ratio:1;width:100%;border-radius:var(--r);overflow:hidden;background:var(--ink)}
@media (min-width:1024px){.pillars__media{position:sticky;top:0;height:100vh;display:flex;align-items:center}}
.pm{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:0;transform:scale(1.06);transition:opacity .9s var(--snappy),transform 1.4s var(--snappy)}
.pm--svg{object-fit:contain;padding:8%}
.pm.is-on{opacity:1;transform:none}
.pillars__list{flex:1;max-width:520px;margin-left:auto;display:flex;flex-direction:column;justify-content:center}
@media (min-width:1024px){.pillars__list{padding:40vh 0}.pl{min-height:46vh;display:flex;flex-direction:column;justify-content:center}}
.pl__m{display:none}
.pl__d{color:var(--mute);max-width:360px;margin-bottom:16px;opacity:0;transform:translateY(10px);transition:opacity .6s var(--snappy),transform .6s var(--snappy)}
.pl__w{color:var(--mute-2);transition:color .6s var(--snappy)}
.pl.is-on .pl__w{color:var(--ink)}
.pl.is-on .pl__d{opacity:1;transform:none}
@media (max-width:1023px){
  .pillars__media{display:none}
  .pillars__list{max-width:none;gap:48px}
  .pl__m{display:block;width:100%;aspect-ratio:1;object-fit:cover;border-radius:var(--r);background:var(--ink);margin-bottom:20px}
  .pl__m--svg{object-fit:contain;padding:8%}
  .pl__w{color:var(--ink);order:-1;margin-bottom:10px}
  .pl{display:flex;flex-direction:column}
  .pl__d{opacity:1;transform:none}
}

/* ------------------------------------------------------------------ 4 big panel */
.panel{background:var(--paper);padding:0 var(--gut) var(--gut)}
.panel__box{position:relative;height:100vh;height:100svh;border-radius:var(--r);overflow:hidden;color:var(--snow);background:var(--ink)}
.panel__img{position:absolute;inset:-12% 0;will-change:transform}
.panel__img img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.panel__img .panel__lat{object-fit:cover;opacity:.9;mix-blend-mode:screen}
.panel__txt{position:relative;height:100%;display:flex;flex-direction:column;justify-content:flex-end;align-items:flex-start;gap:36px;
  padding:0 var(--gut) 44px}
@media (min-width:768px){.panel__txt{padding:0 60px 100px;gap:48px}}
.panel__h{font-size:clamp(52px,9vw,130px);line-height:.9;letter-spacing:-.045em;font-weight:400}
.slide span{display:inline-block;opacity:0;transform:translateX(24px);transition:opacity 1s var(--snappy),transform 1.2s var(--snappy)}
.slide.is-in span{opacity:1;transform:none}
.slide.is-in span:nth-child(2){transition-delay:.08s}.slide.is-in span:nth-child(3){transition-delay:.16s}

/* ------------------------------------------------------------------ 5 three cards */
.cards{display:flex;gap:var(--gut);padding:var(--gut);background:var(--paper);flex-direction:column}
@media (min-width:1024px){.cards{flex-direction:row;gap:24px;padding:24px}}
.card{position:relative;flex:1;display:flex;flex-direction:column;justify-content:flex-end;aspect-ratio:351/221;border-radius:12px;overflow:hidden;
  background:var(--ink);color:#fff;text-decoration:none;clip-path:inset(0 0 0 0 round 12px);transition:clip-path 1.3s var(--snappy)}
@media (min-width:1024px){.card{aspect-ratio:448/620}}
html.js .card:not(.is-in){clip-path:inset(0 0 100% 0 round 12px);animation:card-failsafe 1ms linear 4s forwards}
@keyframes card-failsafe{to{clip-path:inset(0 0 0 0 round 12px)}}
.card img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:.82;transition:transform .7s var(--snappy)}
.card--svg img{object-fit:contain;padding:10%;opacity:1}
.card:hover img{transform:scale(1.12)}
.card::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,transparent 45%,rgba(0,0,0,.65))}
.card__txt{position:relative;z-index:2;display:flex;flex-direction:column;gap:6px;padding:0 28px 26px}
@media (min-width:768px){.card__txt{padding:0 48px 36px}}
.card .arrow{position:absolute;z-index:2;right:24px;bottom:26px}
@media (min-width:768px){.card .arrow{right:40px;bottom:36px}}
.card:hover .arrow{background:var(--red);border-color:transparent}

/* ------------------------------------------------------------------ 6 feature panels */
.feat{position:relative;min-height:100vh;min-height:100svh;overflow:hidden;color:#fff;background:var(--ink)}
.feat__bg{position:absolute;inset:-12% 0;will-change:transform}
.feat__bg img{width:100%;height:100%;object-fit:cover}
.feat__bg::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(0,0,0,.62),rgba(0,0,0,.1) 70%)}
.feat--right .feat__bg::after{background:linear-gradient(270deg,rgba(0,0,0,.7),rgba(0,0,0,.05) 70%)}
.feat__in{position:relative;z-index:2;display:flex;flex-direction:column;align-items:flex-start;gap:28px;max-width:640px;padding:110px var(--gut) 60px}
@media (min-width:768px){.feat__in{padding:103px;gap:44px}.feat--right .feat__in{margin-left:auto}}
.feat__eye{color:rgba(255,255,255,.7);text-transform:uppercase;letter-spacing:.14em}
.feat__p{color:rgba(255,255,255,.62)}
.feat__p strong{color:#fff;font-weight:400}

/* ------------------------------------------------------------------ 7 platform */
.plat{background:var(--paper);padding:120px var(--gut) var(--gut)}
.plat__head{display:grid;gap:24px;margin-bottom:64px}
@media (min-width:1024px){.plat__head{grid-template-columns:1.3fr 1fr;align-items:end;padding:0 66px}.plat__p{max-width:380px;justify-self:end}}
.plat__p{color:var(--mute)}
.plat__fig{background:var(--ink);border-radius:var(--r);padding:clamp(16px,4vw,64px)}
.plat__fig img{width:100%;max-width:1100px;margin:0 auto;height:auto}

/* ------------------------------------------------------------------ 8 carousel */
.car{background:var(--cream);padding:120px 0 120px}
.car__head{display:flex;justify-content:space-between;align-items:flex-end;gap:24px;padding:0 var(--gut);margin-bottom:48px}
@media (min-width:1024px){.car__head{padding:0 90px}}
.car__p{color:var(--mute);max-width:420px;margin-top:18px}
.car__nav{display:flex;gap:8px;flex:none}
.car__track{display:flex;gap:16px;overflow-x:auto;scroll-snap-type:x mandatory;padding:0 var(--gut);scrollbar-width:none;scroll-padding:0 var(--gut)}
@media (min-width:1024px){.car__track{padding:0 90px;scroll-padding:0 90px}}
.car__track::-webkit-scrollbar{display:none}
.cc{flex:0 0 min(82vw,420px);scroll-snap-align:start;text-decoration:none;display:flex;flex-direction:column;gap:12px}
.cc__img{aspect-ratio:4/3;border-radius:12px;overflow:hidden;background:var(--ink);margin-bottom:8px}
.cc__img img{width:100%;height:100%;object-fit:cover;transition:transform .7s var(--snappy)}
.cc:hover .cc__img img{transform:scale(1.08)}
.cc__eye{color:var(--mute);text-transform:uppercase;letter-spacing:.12em}
.cc__t{transition:color .4s var(--snappy);max-width:380px}
.cc:hover .cc__t{color:var(--red)}

/* ------------------------------------------------------------------ 9 footer */
.foot{position:relative;overflow:hidden;background:var(--ink);color:var(--snow);padding:100px var(--gut) 28px}
@media (min-width:1024px){.foot{padding:140px 90px 32px}}
.foot__bg{position:absolute;left:0;right:0;top:0;width:100%;opacity:.5;pointer-events:none}
.foot__in{position:relative;display:flex;flex-wrap:wrap;justify-content:space-between;gap:56px}
.foot__h{font-size:clamp(30px,3.4vw,48px);line-height:1.08;letter-spacing:-.035em}
.foot__c{color:var(--snow-mute);margin-top:24px}
.foot__c a{color:var(--snow);text-decoration:underline;text-underline-offset:4px}
.foot__nav{display:flex;flex-direction:column;gap:6px}
.foot__nav a{text-decoration:none;transition:color .3s}
.foot__nav a:hover{color:var(--red-lit)}
.foot__legal{position:relative;display:flex;flex-wrap:wrap;justify-content:space-between;gap:12px;margin-top:100px;padding-top:24px;
  border-top:1px solid rgba(219,218,215,.14);color:var(--snow-mute)}
.foot__legal a{text-decoration:none}

/* ------------------------------------------------------------------ generic reveal, with a failsafe so nothing stays hidden */
html.js .reveal{opacity:0;transform:translateY(16px);transition:opacity .9s var(--snappy),transform .9s var(--snappy);animation:ci-failsafe 1ms linear 4s forwards}
html.js .reveal.is-in{opacity:1;transform:none;animation:none}
@keyframes ci-failsafe{to{opacity:1;transform:none}}
html.js .words .w,html.js .slide span{animation:ci-failsafe 1ms linear 4s forwards}
html.js .words.is-in .w,html.js .slide.is-in span{animation:none}

@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation:none!important;transition:none!important}
  .words .w,.slide span,html.js .reveal{opacity:1!important;transform:none!important}
  html.js .card:not(.is-in){clip-path:inset(0 0 0 0 round 12px)}
  .road__p .w{opacity:1}
}
