/* ==========================================================================
   PS 2026 — Elementor bridge
   Maps Elementor's native widget markup onto the 2026 design tokens, so the
   pages stay fully editable in Elementor while keeping the coded look.
   Scoped to body.ps26 — nothing else on the site is affected.
   ========================================================================== */

/* ---------- container resets ----------
   Elementor containers ship their own padding/gap variables. The layout here
   comes from our own classes, so neutralise them and let CSS drive. */
body.ps26 .e-con,
body.ps26 .e-con-inner{
  --padding-block-start:0;--padding-block-end:0;
  --padding-inline-start:0;--padding-inline-end:0;
  --margin-block-start:0;--margin-block-end:0;
  --margin-inline-start:0;--margin-inline-end:0;
  --gap:0px;
  --width:100%;
  --min-height:0;
}

/* our layout classes must win over Elementor's flex defaults */
body.ps26 .e-con.wrap{
  width:100%;max-width:var(--maxw);
  margin-inline:auto;
  padding-inline:var(--pad);
  display:block;
}
body.ps26 .e-con.sec{display:block;padding-block:var(--sec);}
body.ps26 .e-con.shero{display:block;}

body.ps26 .e-con.scaps{display:grid;}
body.ps26 .e-con.pillars{display:grid;}
body.ps26 .e-con.sstats{display:grid;}
body.ps26 .e-con.sother{display:grid;}
body.ps26 .e-con.spanel{display:grid;}
body.ps26 .e-con.posts{display:grid;}
body.ps26 .e-con.stats{display:grid;}
body.ps26 .e-con.vm{display:grid;}
body.ps26 .e-con.foot__grid{display:grid;}
body.ps26 .e-con.shead{display:grid;}
body.ps26 .e-con.sstep{display:grid;}
body.ps26 .e-con.hero__in{display:grid;}
body.ps26 .e-con.cta{display:grid;}
body.ps26 .e-con.about{display:grid;}
body.ps26 .e-con.founder{display:grid;}
body.ps26 .e-con.bench{display:grid;}

body.ps26 .e-con.shero__cta,
body.ps26 .e-con.hero__cta,
body.ps26 .e-con.nav__in{display:flex;}

/* ---------- headings ---------- */
/* Plain headings keep the size their own element rule gives them
   (.shero h1, .scap h3 …). Only wrappers that declare a size hand it down. */
body.ps26 .elementor-widget-heading .elementor-heading-title{
  font-family:var(--font-display);
  color:inherit;
  margin:0;
}
body.ps26 .elementor-widget-heading{margin:0;}

body.ps26 .h-xl .elementor-heading-title,
body.ps26 .h-lg .elementor-heading-title,
body.ps26 .h-md .elementor-heading-title,
body.ps26 .h-sm .elementor-heading-title,
body.ps26 .shero__title .elementor-heading-title,
body.ps26 .eyebrow .elementor-heading-title,
body.ps26 .sbars__k .elementor-heading-title,
body.ps26 .sbar__l .elementor-heading-title,
body.ps26 .sbar__v .elementor-heading-title,
body.ps26 .sstat__v .elementor-heading-title,
body.ps26 .sstat__l .elementor-heading-title,
body.ps26 .sstat__s .elementor-heading-title,
body.ps26 .scap__no .elementor-heading-title,
body.ps26 .sstep__no .elementor-heading-title,
body.ps26 .sother__no .elementor-heading-title,
body.ps26 .sother__t .elementor-heading-title,
body.ps26 .sother__s .elementor-heading-title,
body.ps26 .pil__n .elementor-heading-title,
body.ps26 .stat__l .elementor-heading-title{
  font-size:inherit;font-weight:inherit;letter-spacing:inherit;
  line-height:inherit;text-transform:inherit;color:inherit;
}

/* hero headline size lives on the widget wrapper */
body.ps26 .shero__title{
  font-size:clamp(2.5rem,7vw,4.9rem);
  line-height:.98;letter-spacing:-.035em;text-transform:uppercase;
  font-weight:700;font-family:var(--font-display);
  margin-top:18px;display:block;
}
body.ps26 .shero__title .l2{color:var(--orange);}

/* the closing CTA headline */
body.ps26 .sclose h2,
body.ps26 .sclose .elementor-heading-title{
  font-size:clamp(2rem,5vw,3.6rem);letter-spacing:-.035em;text-transform:uppercase;line-height:1.02;
}

/* other-capability card text */
body.ps26 .sother__t{font-family:var(--font-display);font-size:1.06rem;font-weight:700;letter-spacing:-.015em;color:var(--text);}
body.ps26 .sother__s{font-size:.74rem;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);font-weight:500;}
body.ps26 .e-con.sstep__head{display:block;}

/* headline sizes come from the wrapper class, so the inner tag inherits */
body.ps26 .h-xl,
body.ps26 .h-lg,
body.ps26 .h-md,
body.ps26 .h-sm{font-family:var(--font-display);font-weight:700;line-height:1.04;letter-spacing:-.025em;}

/* ---------- text editor ---------- */
body.ps26 .elementor-widget-text-editor{color:inherit;}
body.ps26 .elementor-widget-text-editor p{margin:0;color:inherit;}
body.ps26 .elementor-widget-text-editor p + p{margin-top:14px;}

/* ---------- buttons ----------
   The .btn / .btn--ghost class sits on the widget wrapper; Elementor renders
   the anchor inside it. Style the anchor, strip the wrapper's own box. */
body.ps26 .elementor-widget-button .elementor-button{
  display:inline-flex;align-items:center;gap:10px;
  padding:15px 28px;border-radius:100px;
  background:var(--orange);color:#fff;
  font-family:var(--font-body);font-weight:600;font-size:.94rem;letter-spacing:.01em;
  border:1px solid transparent;text-decoration:none;
  transition:transform .35s var(--ease),background .3s var(--ease),box-shadow .35s var(--ease);
  fill:#fff;
}
body.ps26 .elementor-widget-button .elementor-button:hover{
  background:var(--orange-deep);color:#fff;
  transform:translateY(-2px);
  box-shadow:0 12px 30px -12px rgba(242,112,26,.65);
}
body.ps26 .elementor-widget-button .elementor-button-icon svg{width:15px;height:15px;transition:transform .35s var(--ease);}
body.ps26 .elementor-widget-button .elementor-button:hover .elementor-button-icon svg{transform:translateX(4px);}

body.ps26 .btn--ghost .elementor-button{background:transparent;border-color:var(--line);color:var(--text);}
body.ps26 .btn--ghost .elementor-button:hover{background:transparent;border-color:var(--text);color:var(--text);box-shadow:none;}
body.ps26 .hero .btn--ghost .elementor-button,
body.ps26 .sec--dark .btn--ghost .elementor-button,
body.ps26 .shero.is-dark .btn--ghost .elementor-button{color:var(--text-inv);border-color:var(--line-inv);}
body.ps26 .hero .btn--ghost .elementor-button:hover,
body.ps26 .sec--dark .btn--ghost .elementor-button:hover{border-color:var(--text-inv);color:var(--text-inv);}

/* the wrapper itself must not add a box */
body.ps26 .btn.elementor-widget-button,
body.ps26 .btn--ghost.elementor-widget-button{background:none;padding:0;border:0;border-radius:0;box-shadow:none;transform:none;}

/* ---------- icon list (used for tag rows) ---------- */
body.ps26 .svc__tags .elementor-icon-list-items,
body.ps26 .sother__tags .elementor-icon-list-items{
  display:flex;flex-wrap:wrap;gap:8px;padding:0;margin:0;list-style:none;
}
body.ps26 .svc__tags .elementor-icon-list-item{
  font-size:.66rem;font-weight:600;letter-spacing:.13em;text-transform:uppercase;
  color:var(--muted-inv);border:1px solid var(--line-inv);border-radius:100px;padding:6px 13px;
  margin:0;
}
body.ps26 .svc__tags .elementor-icon-list-icon{display:none;}
body.ps26 .svc__tags .elementor-icon-list-text{padding:0;color:inherit;}

body.ps26 .plist .elementor-icon-list-items{padding:0;margin:0;list-style:none;display:grid;gap:2px;}
body.ps26 .plist .elementor-icon-list-item{
  display:grid;grid-template-columns:26px 1fr;gap:14px;align-items:start;
  padding:16px 0;border-top:1px solid var(--line);font-size:1rem;margin:0;color:inherit;
}
body.ps26 .plist .elementor-icon-list-item:last-child{border-bottom:1px solid var(--line);}
body.ps26 .plist .elementor-icon-list-icon{
  width:22px;height:22px;border-radius:50%;background:var(--orange-soft);color:var(--orange-deep);
  display:grid;place-items:center;font-size:.62rem;
}
body.ps26 .plist .elementor-icon-list-icon svg{width:11px;height:11px;fill:var(--orange-deep);}
body.ps26 .plist .elementor-icon-list-text{padding:0;color:inherit;}

/* ---------- images ---------- */
body.ps26 .elementor-widget-image{line-height:0;}
body.ps26 .elementor-widget-image img{display:block;}
body.ps26 .nav__logo img{height:72px;width:auto;max-width:none;}
body.ps26 .nav.is-stuck .nav__logo img{height:56px;}

/* ---------- the widget wrapper must not break grid children ----------
   Cards and steps are containers, so they stay direct grid children; widgets
   inside them are block-level and inherit the card's colours. */
body.ps26 .scap > .elementor-element,
body.ps26 .pil > .elementor-element,
body.ps26 .sstat > .elementor-element,
body.ps26 .post__b > .elementor-element{max-width:100%;}

/* Elementor adds its own widget spacing; our components own their rhythm */
body.ps26 .elementor-widget:not(:last-child){margin-block-end:0;}

@media (max-width:980px){
  body.ps26 .nav__logo img{height:58px;}
  body.ps26 .nav.is-stuck .nav__logo img{height:48px;}
}


/* ---------- helpers used by the Elementor-built pages ---------- */
body.ps26 .sec--tight{padding-top:0;}
body.ps26 .sec--tight-b{padding-bottom:0;}
body.ps26 .sother__c{background:var(--white);padding:clamp(22px,2.6vw,30px);display:flex;flex-direction:column;gap:10px;transition:background .4s var(--ease);}
body.ps26 .sother__c:hover{background:var(--paper-2);}
body.ps26 .sother__c .sother__go .elementor-button{background:none;padding:0;color:var(--orange);font-size:.78rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;border:0;border-radius:0;}
body.ps26 .sother__c:hover .sother__go .elementor-button{background:none;transform:none;box-shadow:none;gap:14px;}
body.ps26 .sbar--w1{--w:1%;}body.ps26 .sbar--w2{--w:2%;}body.ps26 .sbar--w3{--w:3%;}body.ps26 .sbar--w4{--w:4%;}body.ps26 .sbar--w5{--w:5%;}body.ps26 .sbar--w6{--w:6%;}body.ps26 .sbar--w7{--w:7%;}body.ps26 .sbar--w8{--w:8%;}body.ps26 .sbar--w9{--w:9%;}body.ps26 .sbar--w10{--w:10%;}
body.ps26 .sbar--w11{--w:11%;}body.ps26 .sbar--w12{--w:12%;}body.ps26 .sbar--w13{--w:13%;}body.ps26 .sbar--w14{--w:14%;}body.ps26 .sbar--w15{--w:15%;}body.ps26 .sbar--w16{--w:16%;}body.ps26 .sbar--w17{--w:17%;}body.ps26 .sbar--w18{--w:18%;}body.ps26 .sbar--w19{--w:19%;}body.ps26 .sbar--w20{--w:20%;}
body.ps26 .sbar--w21{--w:21%;}body.ps26 .sbar--w22{--w:22%;}body.ps26 .sbar--w23{--w:23%;}body.ps26 .sbar--w24{--w:24%;}body.ps26 .sbar--w25{--w:25%;}body.ps26 .sbar--w26{--w:26%;}body.ps26 .sbar--w27{--w:27%;}body.ps26 .sbar--w28{--w:28%;}body.ps26 .sbar--w29{--w:29%;}body.ps26 .sbar--w30{--w:30%;}
body.ps26 .sbar--w31{--w:31%;}body.ps26 .sbar--w32{--w:32%;}body.ps26 .sbar--w33{--w:33%;}body.ps26 .sbar--w34{--w:34%;}body.ps26 .sbar--w35{--w:35%;}body.ps26 .sbar--w36{--w:36%;}body.ps26 .sbar--w37{--w:37%;}body.ps26 .sbar--w38{--w:38%;}body.ps26 .sbar--w39{--w:39%;}body.ps26 .sbar--w40{--w:40%;}
body.ps26 .sbar--w41{--w:41%;}body.ps26 .sbar--w42{--w:42%;}body.ps26 .sbar--w43{--w:43%;}body.ps26 .sbar--w44{--w:44%;}body.ps26 .sbar--w45{--w:45%;}body.ps26 .sbar--w46{--w:46%;}body.ps26 .sbar--w47{--w:47%;}body.ps26 .sbar--w48{--w:48%;}body.ps26 .sbar--w49{--w:49%;}body.ps26 .sbar--w50{--w:50%;}
body.ps26 .sbar--w51{--w:51%;}body.ps26 .sbar--w52{--w:52%;}body.ps26 .sbar--w53{--w:53%;}body.ps26 .sbar--w54{--w:54%;}body.ps26 .sbar--w55{--w:55%;}body.ps26 .sbar--w56{--w:56%;}body.ps26 .sbar--w57{--w:57%;}body.ps26 .sbar--w58{--w:58%;}body.ps26 .sbar--w59{--w:59%;}body.ps26 .sbar--w60{--w:60%;}
body.ps26 .sbar--w61{--w:61%;}body.ps26 .sbar--w62{--w:62%;}body.ps26 .sbar--w63{--w:63%;}body.ps26 .sbar--w64{--w:64%;}body.ps26 .sbar--w65{--w:65%;}body.ps26 .sbar--w66{--w:66%;}body.ps26 .sbar--w67{--w:67%;}body.ps26 .sbar--w68{--w:68%;}body.ps26 .sbar--w69{--w:69%;}body.ps26 .sbar--w70{--w:70%;}
body.ps26 .sbar--w71{--w:71%;}body.ps26 .sbar--w72{--w:72%;}body.ps26 .sbar--w73{--w:73%;}body.ps26 .sbar--w74{--w:74%;}body.ps26 .sbar--w75{--w:75%;}body.ps26 .sbar--w76{--w:76%;}body.ps26 .sbar--w77{--w:77%;}body.ps26 .sbar--w78{--w:78%;}body.ps26 .sbar--w79{--w:79%;}body.ps26 .sbar--w80{--w:80%;}
body.ps26 .sbar--w81{--w:81%;}body.ps26 .sbar--w82{--w:82%;}body.ps26 .sbar--w83{--w:83%;}body.ps26 .sbar--w84{--w:84%;}body.ps26 .sbar--w85{--w:85%;}body.ps26 .sbar--w86{--w:86%;}body.ps26 .sbar--w87{--w:87%;}body.ps26 .sbar--w88{--w:88%;}body.ps26 .sbar--w89{--w:89%;}body.ps26 .sbar--w90{--w:90%;}
body.ps26 .sbar--w91{--w:91%;}body.ps26 .sbar--w92{--w:92%;}body.ps26 .sbar--w93{--w:93%;}body.ps26 .sbar--w94{--w:94%;}body.ps26 .sbar--w95{--w:95%;}body.ps26 .sbar--w96{--w:96%;}body.ps26 .sbar--w97{--w:97%;}body.ps26 .sbar--w98{--w:98%;}body.ps26 .sbar--w99{--w:99%;}body.ps26 .sbar--w100{--w:100%;}

body.ps26 .sbar__track{margin-top:10px;height:2px;background:var(--line-inv);position:relative;overflow:hidden;border-radius:2px;display:block;}
body.ps26 .sbar__fill{position:absolute;inset:0 auto 0 0;width:0;background:var(--orange);transition:width 1.25s var(--ease);display:block;}
body.ps26 .sbar.in .sbar__fill{width:var(--w,0%);}
body.ps26 .e-con.sbar__top{display:flex;align-items:baseline;justify-content:space-between;gap:16px;}
body.ps26 .e-con.srail{display:block;}
body.ps26 .e-con.scap,body.ps26 .e-con.pil,body.ps26 .e-con.sstat,body.ps26 .e-con.spanel__copy,body.ps26 .e-con.sbars{display:block;}

/* hero dot texture (the coded template had this as a div) */
body.ps26 .e-con.shero{position:relative;overflow:hidden;padding-block:clamp(140px,15vw,190px) clamp(48px,6vw,76px);}
body.ps26 .e-con.shero::after{content:'';position:absolute;top:14%;right:-2%;width:min(420px,42vw);aspect-ratio:1.3;pointer-events:none;opacity:.5;background-image:radial-gradient(var(--orange) 1.6px,transparent 1.6px);background-size:22px 22px;mask-image:radial-gradient(ellipse at 70% 40%,#000 10%,transparent 72%);-webkit-mask-image:radial-gradient(ellipse at 70% 40%,#000 10%,transparent 72%);}
body.ps26 .e-con.shero > .wrap{position:relative;z-index:2;max-width:920px;}
body.ps26 .e-con.shero__cta{gap:14px;flex-wrap:wrap;margin-top:clamp(30px,4vw,42px);}
body.ps26 .shero__lede{margin-top:clamp(24px,3vw,34px);font-size:clamp(1.02rem,1.5vw,1.22rem);color:var(--muted);max-width:52ch;line-height:1.6;}
body.ps26 .e-con.sclose > .wrap{text-align:center;}
body.ps26 .e-con.sclose{text-align:center;}

/* ---------- home page pieces ---------- */
body.ps26 .e-con.hero{position:relative;overflow:hidden;background:var(--ink);color:var(--text-inv);padding-block:clamp(130px,17vw,190px) clamp(70px,9vw,110px);display:block;}
body.ps26 .e-con.hero > .wrap{position:relative;z-index:2;}
body.ps26 .e-con.hero__text,body.ps26 .e-con.hero__visual{display:block;}
body.ps26 .e-con.hero__visual{position:relative;}
body.ps26 .e-con.hero__img{position:relative;border-radius:var(--r-lg);overflow:hidden;background:linear-gradient(150deg,#1a1024,#0b0b12);border:1px solid var(--line-inv);display:block;}
body.ps26 .e-con.kinetic{display:block;line-height:1;margin:24px 0 0;}
body.ps26 .kinetic__static{display:block;height:1em;line-height:1;}
body.ps26 .e-con.kinetic__mask{display:block;overflow:hidden;height:1em;position:relative;}
body.ps26 .e-con.kinetic__list{display:block;transition:transform .85s var(--ease);}
body.ps26 .kinetic__list > *{display:block;height:1em;line-height:1;white-space:nowrap;}
body.ps26 .e-con.pod{position:absolute;z-index:3;display:flex;flex-direction:column;gap:2px;background:rgba(255,255,255,.94);color:#111;border-radius:var(--r-md);padding:11px 16px;box-shadow:0 18px 44px -20px rgba(0,0,0,.6);animation:float 6s ease-in-out infinite;width:auto;}
body.ps26 .pod__t{font-size:.9rem;font-weight:700;line-height:1.2;color:#111;font-family:var(--font-display);}
body.ps26 .pod__s{font-size:.68rem;color:var(--muted);letter-spacing:.02em;}
body.ps26 .e-con.stat{background:var(--paper);padding:clamp(28px,4vw,46px) clamp(18px,2.4vw,32px);display:block;}
body.ps26 .elementor-widget-counter .elementor-counter-number-wrapper{font-family:var(--font-display);font-weight:700;letter-spacing:-.04em;font-size:clamp(2.3rem,4.6vw,3.5rem);line-height:1;color:var(--text);display:flex;align-items:baseline;}
body.ps26 .elementor-widget-counter .elementor-counter-number-suffix{color:var(--orange);font-weight:700;}
body.ps26 .elementor-widget-counter .elementor-counter-title{margin-top:12px;font-size:.76rem;letter-spacing:.16em;text-transform:uppercase;color:var(--muted);font-weight:600;font-family:var(--font-body);text-align:left;}
body.ps26 .e-con.svc{display:block;border-top:1px solid var(--line-inv);}
body.ps26 .e-con.svc__row{display:grid;grid-template-columns:76px minmax(0,1.05fr) minmax(0,1.25fr) 120px;gap:clamp(16px,3vw,42px);align-items:center;padding-block:clamp(26px,3.4vw,40px);border-bottom:1px solid var(--line-inv);position:relative;}
body.ps26 .svc__t small{display:block;font-size:.9rem;font-weight:400;letter-spacing:0;color:var(--muted-inv);margin-top:9px;font-family:var(--font-body);text-transform:none;}
body.ps26 .svc__gobtn .elementor-button{background:none;padding:0;color:var(--orange);font-size:.78rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;border:0;}
body.ps26 .svc__row:hover .svc__gobtn .elementor-button{background:none;transform:translateX(4px);box-shadow:none;}
@media(max-width:900px){body.ps26 .e-con.svc__row{grid-template-columns:52px 1fr;}}
@media(max-width:560px){body.ps26 .e-con.svc__row{grid-template-columns:1fr;gap:14px;}}
body.ps26 .e-con.vm__c{background:var(--ink);padding:clamp(34px,5vw,62px);position:relative;overflow:hidden;display:block;}
body.ps26 .e-con.about__img,body.ps26 .e-con.post,body.ps26 .e-con.post__b,body.ps26 .e-con.founder__img,body.ps26 .e-con.bench__c,body.ps26 .e-con.cta__form,body.ps26 .e-con.post__img{display:block;}
body.ps26 .e-con.post{background:var(--white);border:1px solid var(--line);border-radius:var(--r-md);overflow:hidden;transition:transform .45s var(--ease),box-shadow .45s var(--ease);}
body.ps26 .e-con.post:hover{transform:translateY(-6px);box-shadow:0 28px 54px -32px rgba(0,0,0,.36);}
body.ps26 .post__img img{width:100%;aspect-ratio:16/10;object-fit:cover;transition:transform .9s var(--ease);}
body.ps26 .e-con.post:hover .post__img img{transform:scale(1.07);}
body.ps26 .e-con.post__b{padding:24px 24px 28px;}
body.ps26 .post__b > .elementor-element + .elementor-element{margin-top:12px;}
body.ps26 .e-con.bench__c{background:var(--ink);padding:24px 18px;}
body.ps26 .bench__n{font-family:var(--font-display);font-size:.9rem;color:var(--text-inv);font-weight:700;}
body.ps26 .bench__r{margin-top:6px;font-size:.68rem;letter-spacing:.12em;text-transform:uppercase;color:var(--muted-inv);}
body.ps26 .e-con.cta__form{background:var(--white);border:1px solid var(--line);border-radius:var(--r-lg);padding:clamp(24px,3.4vw,40px);}
body.ps26 .about__img img{width:100%;aspect-ratio:4/5;object-fit:cover;border-radius:var(--r-lg);}
body.ps26 .founder__img img{width:100%;aspect-ratio:1;object-fit:cover;border-radius:var(--r-lg);}
body.ps26 .e-con.marq{overflow:hidden;display:block;}

/* ---------- list markup rendered through HTML widgets ---------- */
body.ps26 .plist-h{list-style:none;margin:32px 0 0;padding:0;display:grid;gap:2px;}
body.ps26 .plist-h li{display:grid;grid-template-columns:26px 1fr;gap:14px;align-items:start;padding:16px 0;border-top:1px solid var(--line);font-size:1rem;}
body.ps26 .plist-h li:last-child{border-bottom:1px solid var(--line);}
body.ps26 .plist-h i{width:22px;height:22px;border-radius:50%;background:var(--orange-soft);color:var(--orange-deep);display:grid;place-items:center;font-size:.62rem;font-style:normal;font-weight:700;margin-top:3px;}
body.ps26 .cta__ways-h{list-style:none;margin:34px 0 0;padding:0;display:grid;gap:2px;}
body.ps26 .cta__ways-h li{padding:18px 0;border-top:1px solid var(--line-inv);display:grid;grid-template-columns:auto 1fr;gap:16px;align-items:center;}
body.ps26 .cta__ways-h li:last-child{border-bottom:1px solid var(--line-inv);}
body.ps26 .cta__ways-h i{width:38px;height:38px;border-radius:50%;border:1px solid var(--line-inv);display:grid;place-items:center;font-style:normal;}
body.ps26 .cta__ways-h small{display:block;font-size:.68rem;letter-spacing:.16em;text-transform:uppercase;color:var(--gold-lite);font-weight:600;}
body.ps26 .cta__ways-h b{font-family:var(--font-display);font-size:1.02rem;font-weight:600;color:var(--text-inv);letter-spacing:-.01em;}
body.ps26 .cta__ways-h b a{color:var(--text-inv);}body.ps26 .cta__ways-h b a:hover{color:var(--orange);}
body.ps26 .svc__tags-h{display:flex;flex-wrap:wrap;gap:8px;}
body.ps26 .svc__tags-h span{font-size:.66rem;font-weight:600;letter-spacing:.13em;text-transform:uppercase;color:var(--muted-inv);border:1px solid var(--line-inv);border-radius:100px;padding:6px 13px;transition:color .3s var(--ease),border-color .3s var(--ease);}
body.ps26 .svc__row:hover .svc__tags-h span{color:var(--text-inv);border-color:rgba(255,255,255,.3);}
body.ps26 .e-con.about__copy,body.ps26 .e-con.founder__copy,body.ps26 .e-con.cta__copy{display:block;}
body.ps26 .e-con.about__copy > .elementor-element + .elementor-element{margin-top:20px;}
body.ps26 .e-con.founder__copy > .elementor-element + .elementor-element{margin-top:18px;}
body.ps26 .e-con.cta__copy > .elementor-element + .elementor-element{margin-top:20px;}
body.ps26 .e-con.hero__text > .elementor-element + .elementor-element,body.ps26 .e-con.hero__text > .e-con + .elementor-element{margin-top:0;}

/* ---------- full-bleed sections ----------
   Elementor gives top-level containers its boxed content width, which left a
   cream gutter down both sides of every dark band. Section containers must be
   edge to edge; the inner .wrap is what holds the 1240px measure. */
body.ps26 .ps26-main > .elementor > .e-con{
  max-width:none;
  --content-width:100%;
  width:100%;
  margin-inline:0;
  padding-inline:0;
  --padding-inline-start:0px;
  --padding-inline-end:0px;
}
body.ps26 .ps26-main > .elementor > .e-con > .wrap{max-width:var(--maxw);margin-inline:auto;padding-inline:var(--pad);}
body.ps26 .ps26-main > .elementor{max-width:none;width:100%;}

/* ---------- floating brand social icons in the hero background ----------
   Own namespace (.psoc) so the older gold outline rules never touch these —
   each mark keeps its real brand colour. */
body.ps26 .psoc{position:absolute;inset:0;pointer-events:none;overflow:hidden;z-index:1;}
body.ps26 .psoc svg{position:absolute;opacity:.32;animation:psocFloat 11s ease-in-out infinite;filter:drop-shadow(0 10px 26px rgba(0,0,0,.55));}
body.ps26 .psoc svg:nth-child(1){top:17%;left:3.5%;width:76px;height:76px;}
body.ps26 .psoc svg:nth-child(2){top:63%;left:8%;width:60px;height:60px;animation-delay:-1.8s;}
body.ps26 .psoc svg:nth-child(3){top:31%;left:24%;width:46px;height:46px;animation-delay:-3.6s;opacity:.24;}
body.ps26 .psoc svg:nth-child(4){top:80%;left:33%;width:64px;height:64px;animation-delay:-5.4s;}
body.ps26 .psoc svg:nth-child(5){top:19%;right:33%;width:54px;height:54px;animation-delay:-7.2s;opacity:.26;}
body.ps26 .psoc svg:nth-child(6){top:54%;right:2.5%;width:72px;height:72px;animation-delay:-9s;}
@keyframes psocFloat{0%,100%{transform:translateY(0) rotate(0deg);}50%{transform:translateY(-20px) rotate(7deg);}}
@media (max-width:900px){body.ps26 .psoc svg:nth-child(3),body.ps26 .psoc svg:nth-child(5){display:none;}body.ps26 .psoc svg{opacity:.22;}}
@media (prefers-reduced-motion:reduce){body.ps26 .psoc svg{animation:none!important;}}

/* Elementor's widget wrapper is position:relative with zero height, so the
   icon layer has to stretch the wrapper itself across the hero. */
body.ps26 .psoc-w{position:absolute;inset:0;z-index:1;pointer-events:none;height:auto;}
body.ps26 .psoc-w > .elementor-widget-container{position:absolute;inset:0;}

/* ---------- brand icon layer on every dark band ---------- */
body.ps26 .e-con.sec--dark,body.ps26 .e-con.vm__c,body.ps26 .foot{position:relative;overflow:hidden;}
body.ps26 .e-con.sec--dark > .wrap,body.ps26 .vm__c > .elementor-element:not(.psoc-w),body.ps26 .foot > .wrap{position:relative;z-index:2;}
body.ps26 .psoc--dim svg{opacity:.17;}
body.ps26 .psoc--dim svg:nth-child(3),body.ps26 .psoc--dim svg:nth-child(5){opacity:.13;}
body.ps26 .psoc--b svg:nth-child(1){top:12%;left:auto;right:5%;width:64px;height:64px;}
body.ps26 .psoc--b svg:nth-child(2){top:70%;left:4%;width:56px;height:56px;}
body.ps26 .psoc--b svg:nth-child(3){top:40%;left:auto;right:26%;width:44px;height:44px;}
body.ps26 .psoc--b svg:nth-child(4){top:22%;left:12%;width:58px;height:58px;}
body.ps26 .psoc--b svg:nth-child(5){top:84%;left:auto;right:12%;width:48px;height:48px;}
body.ps26 .psoc--b svg:nth-child(6){top:52%;left:auto;right:2%;width:66px;height:66px;}
body.ps26 .psoc--c svg:nth-child(1){top:74%;left:auto;right:8%;width:58px;height:58px;}
body.ps26 .psoc--c svg:nth-child(2){top:14%;left:6%;width:62px;height:62px;}
body.ps26 .psoc--c svg:nth-child(3){top:58%;left:18%;width:42px;height:42px;}
body.ps26 .psoc--c svg:nth-child(4){top:30%;left:auto;right:4%;width:60px;height:60px;}
body.ps26 .psoc--c svg:nth-child(5){top:86%;left:30%;width:46px;height:46px;}
body.ps26 .psoc--c svg:nth-child(6){top:8%;left:auto;right:30%;width:54px;height:54px;}
body.ps26 .foot .psoc{position:absolute;inset:0;z-index:1;}

/* Elementor gave the stats band its own block padding (54px/6px). With the
   hairline background that read as an empty grey strip above the numbers —
   the band is a 1px-gap grid, so it owns no padding of its own. */
body.ps26 .ps26-main > .elementor > .e-con.stats{
  padding-block:0;
  --padding-block-start:0px;
  --padding-block-end:0px;
  gap:1px;
  background:var(--line);
  border-top:1px solid var(--line);
  border-bottom:1px solid var(--line);
}
body.ps26 .ps26-main > .elementor > .e-con.vm{padding-block:0;--padding-block-start:0px;--padding-block-end:0px;gap:1px;}
body.ps26 .ps26-main > .elementor > .e-con.marq{padding-block:20px;}

/* ==========================================================================
   Inside the Elementor editor the frontend reveal script never runs, so every
   .rv element would sit at opacity:0 and the canvas would look empty. Render
   everything in its finished state while editing.
   ========================================================================== */
body.elementor-editor-active .rv,
body.elementor-editor-active .mask > span,
body.elementor-editor-active .sbar{opacity:1!important;transform:none!important;transition:none!important;}
body.elementor-editor-active .sbar__fill{width:var(--w,60%)!important;}
body.elementor-editor-active .kinetic__list{transform:none!important;}
body.elementor-editor-active .kinetic__mask{height:auto!important;overflow:visible!important;}
body.elementor-editor-active .kinetic__list > *{height:auto!important;}

/* colour safety net — doubled class outranks the Elementor kit whatever the load order */
body.ps26.ps26 .hero,body.ps26.ps26 .sec--dark,body.ps26.ps26 .vm__c,body.ps26.ps26 .foot{color:var(--text-inv);}
body.ps26.ps26 .hero .elementor-heading-title,
body.ps26.ps26 .sec--dark .elementor-heading-title,
body.ps26.ps26 .vm__c .elementor-heading-title{color:inherit;}
body.ps26.ps26 .hero .kinetic__mask .elementor-heading-title{color:var(--orange);}
body.ps26.ps26 .sec:not(.sec--dark) .elementor-heading-title{color:var(--text);}
body.ps26.ps26 .shero__title .elementor-heading-title{color:var(--text);}
body.ps26.ps26 .shero__title .l2{color:var(--orange);}

/* ==========================================================================
   Tools we use — logo wall
   ========================================================================== */
body.ps26 .e-con.tools{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:1px;background:var(--line);border:1px solid var(--line);border-radius:var(--r-md);overflow:hidden;}
body.ps26 .e-con.tool{display:flex;flex-direction:row;align-items:center;gap:12px;background:var(--white);padding:16px 18px;transition:background .35s var(--ease),transform .35s var(--ease);}
body.ps26 .e-con.tool:hover{background:var(--paper-2);}
body.ps26 .tool__ico{flex:none;width:30px;height:30px;line-height:0;}
body.ps26 .tool__ico img{width:30px;height:30px;object-fit:contain;border-radius:6px;}
body.ps26 .tool__n{font-family:var(--font-display);font-size:.85rem;font-weight:600;letter-spacing:-.005em;color:var(--text);line-height:1.25;}
body.ps26 .tool__n .elementor-heading-title{font-size:inherit;font-weight:inherit;color:inherit;line-height:inherit;}
@media(max-width:640px){body.ps26 .e-con.tools{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));}body.ps26 .e-con.tool{padding:13px 14px;gap:10px;}body.ps26 .tool__ico,body.ps26 .tool__ico img{width:24px;height:24px;}body.ps26 .tool__n{font-size:.76rem;}}
body.ps26 .e-con.tool{min-height:68px;}
@media(max-width:640px){body.ps26 .e-con.tool{min-height:56px;}}

/* ==========================================================================
   About page — founder feature, team mosaic, values
   ========================================================================== */
body.ps26 .e-con.values{display:grid;grid-template-columns:repeat(4,1fr);gap:clamp(14px,1.8vw,22px);}
body.ps26 .e-con.value{display:block;background:var(--white);border:1px solid var(--line);border-radius:var(--r-md);padding:clamp(22px,2.6vw,30px);transition:transform .45s var(--ease),box-shadow .45s var(--ease);position:relative;overflow:hidden;}
body.ps26 .e-con.value::after{content:'';position:absolute;left:0;right:0;bottom:0;height:2px;background:var(--orange);transform:scaleX(0);transform-origin:left;transition:transform .5s var(--ease);}
body.ps26 .e-con.value:hover{transform:translateY(-6px);box-shadow:0 26px 48px -30px rgba(0,0,0,.34);}
body.ps26 .e-con.value:hover::after{transform:scaleX(1);}
body.ps26 .value__n{font-family:var(--font-display);font-weight:700;font-size:.8rem;letter-spacing:.18em;color:var(--gold);}
body.ps26 .value h3,body.ps26 .value__t{margin:14px 0 10px;font-size:1.15rem;letter-spacing:-.015em;color:var(--text);font-family:var(--font-display);font-weight:700;}
@media(max-width:980px){body.ps26 .e-con.values{grid-template-columns:repeat(2,1fr);}}
@media(max-width:560px){body.ps26 .e-con.values{grid-template-columns:1fr;}}
body.ps26 .e-con.fx{display:grid;grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr);gap:clamp(30px,5vw,72px);align-items:center;}
body.ps26 .e-con.fx__img{display:block;position:relative;border-radius:var(--r-lg);overflow:hidden;border:1px solid var(--line-inv);}
body.ps26 .fx__img img{width:100%;aspect-ratio:4/5;object-fit:cover;transition:transform 1.1s var(--ease);}
body.ps26 .e-con.fx__img:hover img{transform:scale(1.04);}
body.ps26 .e-con.fx__copy{display:block;}
body.ps26 .e-con.fx__copy > .elementor-element + .elementor-element{margin-top:18px;}
body.ps26 .fx__name{font-family:var(--font-display);font-size:clamp(1.6rem,3vw,2.2rem);font-weight:700;letter-spacing:-.03em;color:var(--text-inv);}
body.ps26 .fx__role{font-size:.78rem;letter-spacing:.18em;text-transform:uppercase;color:var(--gold-lite);font-weight:600;}
body.ps26 .fx__rule{height:1px;background:var(--line-inv);margin:6px 0;}
@media(max-width:820px){body.ps26 .e-con.fx{grid-template-columns:1fr;}}
body.ps26 .e-con.mosaic{display:grid;grid-template-columns:repeat(5,1fr);gap:clamp(10px,1.4vw,18px);}
body.ps26 .e-con.mperson{display:block;position:relative;border-radius:var(--r-md);overflow:hidden;border:1px solid var(--line-inv);background:var(--ink-3);}
body.ps26 .mperson img{width:100%;aspect-ratio:3/4;object-fit:cover;filter:grayscale(1) contrast(1.05);transition:filter .6s var(--ease),transform 1s var(--ease);}
body.ps26 .e-con.mperson:hover img{filter:grayscale(0);transform:scale(1.05);}
@media(max-width:900px){body.ps26 .e-con.mosaic{grid-template-columns:repeat(3,1fr);}}
@media(max-width:560px){body.ps26 .e-con.mosaic{grid-template-columns:repeat(2,1fr);}}

/* ==========================================================================
   NAV — solid on inner pages, transparent over the dark home hero
   ========================================================================== */
body.ps26 header.nav.nav--solid{background:rgba(6,6,8,.94);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border-bottom:1px solid var(--line-inv);}
body.ps26 header.nav.nav--solid.is-stuck{background:rgba(6,6,8,.97);}
@keyframes psNavIn{from{transform:translateY(-100%);opacity:0;}to{transform:translateY(0);opacity:1;}}
body.ps26 header.nav.nav-in{animation:psNavIn .7s cubic-bezier(.22,.61,.36,1);}
@keyframes psNavItem{from{opacity:0;transform:translateY(-8px);}to{opacity:1;transform:none;}}
body.ps26 .nav-in .nav__links a{animation:psNavItem .5s cubic-bezier(.22,.61,.36,1);}
body.ps26 .nav-in .nav__links a:nth-child(1){animation-delay:0.24s;}
body.ps26 .nav-in .nav__links a:nth-child(2){animation-delay:0.3s;}
body.ps26 .nav-in .nav__links a:nth-child(3){animation-delay:0.36s;}
body.ps26 .nav-in .nav__links a:nth-child(4){animation-delay:0.42s;}
body.ps26 .nav-in .nav__links a:nth-child(5){animation-delay:0.48s;}
body.ps26 .nav-in .nav__links a:nth-child(6){animation-delay:0.54s;}
body.ps26 .nav-in .nav__links a:nth-child(7){animation-delay:0.6s;}
body.ps26 .nav-in .nav__logo{animation:psNavItem .6s cubic-bezier(.22,.61,.36,1) .12s;}
body.ps26 .nav-in .nav__cta{animation:psNavItem .6s cubic-bezier(.22,.61,.36,1) .6s;}
body.ps26 .nav__links a{color:var(--gold-lite);transition:color .3s var(--ease);}
body.ps26 .nav__links a:hover,body.ps26 .nav__links a:focus-visible{color:#fff;}
body.ps26 .nav__links a.is-current{color:#fff;}
body.ps26 .nav__links a.is-current::after{transform:scaleX(1);transform-origin:left;background:var(--orange);}
body.ps26 .nav__logo img,body.ps26 .nav.is-stuck .nav__logo img{height:68px;width:auto;max-width:none;transition:transform .45s var(--ease);}
body.ps26 .nav__logo:hover img{transform:scale(1.06);}
@media(max-width:980px){body.ps26 .nav__logo img,body.ps26 .nav.is-stuck .nav__logo img{height:56px;}}
body.ps26 .nav__cta{transition:transform .35s var(--ease),background .3s var(--ease),box-shadow .35s var(--ease);}
body.ps26 .nav__cta:hover{transform:translateY(-2px);box-shadow:0 12px 28px -12px rgba(242,112,26,.7);}
body.ps26 .nav__in{padding-block:12px;}
body.ps26 .nav.is-stuck .nav__in{padding-block:8px;}
@media (prefers-reduced-motion:reduce){body.ps26 header.nav,body.ps26 .nav__links a,body.ps26 .nav__logo,body.ps26 .nav__cta{animation:none!important;}}

/* the logo anchor must actually be a flex box, or the block-level image
   overflows it and the bar collapses around a 44px line box */
body.ps26 header.nav .nav__logo{display:flex!important;align-items:center;flex:0 0 auto;height:auto;line-height:0;}
body.ps26 header.nav .nav__logo img,body.ps26 header.nav.is-stuck .nav__logo img{height:64px;width:auto;max-width:none;display:block;}
body.ps26 header.nav .nav__in{min-height:92px;align-items:center;}
body.ps26 header.nav.is-stuck .nav__in{min-height:80px;}
@media(max-width:980px){body.ps26 header.nav .nav__logo img,body.ps26 header.nav.is-stuck .nav__logo img{height:52px;}body.ps26 header.nav .nav__in{min-height:74px;}body.ps26 header.nav.is-stuck .nav__in{min-height:66px;}}

/* ==========================================================================
   Team cards — full-colour portraits, curtain reveal, name + role below
   (replaces the earlier grayscale treatment, which buried already-dark shots)
   ========================================================================== */
body.ps26 .e-con.mperson{display:block;border:0;background:none;border-radius:0;overflow:visible;}
body.ps26 .e-con.mperson__img{display:block;position:relative;border-radius:var(--r-md);overflow:hidden;border:1px solid var(--line-inv);background:var(--ink-3);clip-path:inset(100% 0 0 0);transition:clip-path 1.05s cubic-bezier(.22,.61,.36,1);}
body.ps26 .mperson.in .mperson__img,body.ps26 .rv.in .mperson__img{clip-path:inset(0 0 0 0);}
body.ps26 .mperson__img img{width:100%;aspect-ratio:3/4;object-fit:cover;filter:none;transition:transform 1.1s cubic-bezier(.22,.61,.36,1),filter .5s var(--ease);display:block;}
body.ps26 .e-con.mperson:hover .mperson__img img{transform:scale(1.07);filter:brightness(1.12) saturate(1.05);}
body.ps26 .e-con.mperson__img::after{content:'';position:absolute;inset:0;pointer-events:none;background:linear-gradient(180deg,transparent 45%,rgba(242,112,26,.28) 100%);opacity:0;transition:opacity .5s var(--ease);}
body.ps26 .e-con.mperson:hover .mperson__img::after{opacity:1;}
body.ps26 .mperson__n{margin-top:16px;font-family:var(--font-display);font-weight:700;font-size:1.02rem;letter-spacing:-.015em;color:var(--text-inv);transition:color .3s var(--ease);}
body.ps26 .mperson__n .elementor-heading-title{font-size:inherit;font-weight:inherit;color:inherit;letter-spacing:inherit;}
body.ps26 .e-con.mperson:hover .mperson__n{color:var(--orange);}
body.ps26 .mperson__r{margin-top:6px;font-size:.7rem;letter-spacing:.17em;text-transform:uppercase;color:var(--gold-lite);font-weight:600;min-height:1em;}
body.ps26 .mperson__r .elementor-heading-title{font-size:inherit;font-weight:inherit;color:inherit;letter-spacing:inherit;text-transform:inherit;}
body.ps26 .mperson__n::after{content:'';display:block;width:0;height:2px;background:var(--orange);margin-top:8px;transition:width .45s var(--ease);}
body.ps26 .e-con.mperson:hover .mperson__n::after{width:34px;}
body.elementor-editor-active .mperson__img{clip-path:none!important;}
@media (prefers-reduced-motion:reduce){body.ps26 .e-con.mperson__img{clip-path:none!important;transition:none!important;}}

/* the hero h1 carries a descriptive tail for search engines and screen
   readers; the visible headline stays the kinetic word */
body.ps26 .ps-sr{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;border:0;}

/* mobile menu: no per-item animation, the overlay fade is the reveal */
@media (max-width:980px){
  body.ps26 .nav-in .nav__links a{animation:none!important;opacity:1!important;transform:none!important;}
  body.ps26 header.nav.nav-in{animation:none!important;transform:none!important;}
  body.ps26 .nav__links{z-index:95;}
  body.ps26 .nav__burger{position:relative;z-index:96;margin-left:auto;}
}

/* mobile menu must be visible the moment .is-open lands, whatever else
   happens to the opacity transition */
@media (max-width:980px){
  body.ps26 header.nav .nav__links{visibility:hidden;}
  body.ps26 header.nav.is-open .nav__links{opacity:1!important;visibility:visible!important;pointer-events:auto!important;}
}

/* ==========================================================================
   NAV BACKGROUND — never dependent on JavaScript
   The bar used to be transparent until a scroll handler added .is-stuck. If
   the page loaded mid-document (hash link, back button, restored scroll) the
   gold links sat on a cream section with no background and disappeared.
   The bar now always carries its own ground; .is-stuck only makes it compact.
   ========================================================================== */
body.ps26 header.nav{
  background:rgba(6,6,8,.94);
  backdrop-filter:blur(16px);
  -webkit-backdrop-filter:blur(16px);
  border-bottom:1px solid var(--line-inv);
}
body.ps26 header.nav.is-stuck,body.ps26 header.nav.nav--solid,body.ps26 header.nav.nav--solid.is-stuck{background:rgba(6,6,8,.97);}
body.ps26 header.nav.is-open{background:rgba(5,5,5,.98);}

/* The bar was rgba(6,6,8,.94) sitting on a #050505 hero — the same black, so
   it read as no bar at all. Give it its own lighter ground, a visible rule
   and a soft lift so it is unmistakably a nav bar on every section. */
body.ps26 header.nav,
body.ps26 header.nav.nav--solid,
body.ps26 header.nav.is-stuck,
body.ps26 header.nav.nav--solid.is-stuck{
  background:#12121A;
  border-bottom:1px solid rgba(255,255,255,.16);
  box-shadow:0 10px 30px -18px rgba(0,0,0,.9);
  backdrop-filter:none;
  -webkit-backdrop-filter:none;
}
body.ps26 header.nav.is-open{background:#0B0B10;}
