/* ==========================================================================
   Snowbrick Digital — "Snow & Ink" theme
   Flat colour only: warm snow paper, deep ink and the logo violet.
   No gradients, glows or glass. Type: Archivo (variable width + weight).
   ========================================================================== */

:root{
  --paper:#F4F2EC;
  --paper-2:#E8E5DC;
  --ink:#15131B;
  --ink-2:#23202C;
  --violet:#675A9A;
  --violet-deep:#4C427C;
  --lilac:#CBC4E6;

  /* section theme (overridden by .theme-*) */
  --bg:var(--paper);
  --fg:var(--ink);
  --fg-muted:#5C5967;
  --rule:rgba(21,19,27,.18);
  --accent:var(--violet);
  --accent-fg:var(--paper);
  --panel:var(--paper-2);
  --em:var(--violet);

  --ff:'Archivo','Helvetica Neue',Helvetica,Arial,sans-serif;
  --ease:cubic-bezier(.2,.7,.1,1);
  --drop:cubic-bezier(.34,1.45,.64,1);
  --r:6px;
  --maxw:1440px;
  --gut:clamp(20px,4vw,56px);
  --nav-h:84px;
}
.theme-alt{--bg:var(--paper-2);--panel:var(--paper);}
.theme-ink{
  --bg:var(--ink);--fg:var(--paper);--fg-muted:#AAA6B8;--rule:rgba(244,242,236,.2);
  --accent:var(--lilac);--accent-fg:var(--ink);--panel:var(--ink-2);--em:var(--lilac);
}
.theme-violet{
  --bg:var(--violet);--fg:var(--paper);--fg-muted:rgba(244,242,236,.88);--rule:rgba(244,242,236,.36);
  --accent:var(--ink);--accent-fg:var(--paper);--panel:var(--violet-deep);--em:var(--ink);
}
.theme-alt,.theme-ink,.theme-violet{background-color:var(--bg);color:var(--fg);}

/* ---------- Reset ---------- */
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0;}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;scroll-padding-top:calc(var(--nav-h) + 16px);}
body{
  background:var(--paper);color:var(--ink);
  font-family:var(--ff);font-size:clamp(1rem,.94rem + .28vw,1.1875rem);line-height:1.6;font-weight:400;
  -webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility;
  overflow-x:clip;
}
img,svg{display:block;max-width:100%;}
a{color:inherit;text-decoration:none;}
button{font:inherit;color:inherit;background:none;border:0;cursor:pointer;}
input,textarea,select{font:inherit;color:inherit;}
ul,ol{list-style:none;}
::selection{background:var(--violet);color:var(--paper);}
:focus-visible{outline:2px solid var(--violet);outline-offset:3px;}
.theme-ink :focus-visible,.theme-violet :focus-visible{outline-color:var(--paper);}
body.is-locked{overflow:hidden;}
[hidden]{display:none !important;}

.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;}

/* ---------- Layout ---------- */
.wrap{width:min(100% - (var(--gut) * 2), var(--maxw));margin-inline:auto;}
.sec{padding-block:clamp(72px,10.5vw,168px);position:relative;}
.sec--tight-top{padding-top:0;}

/* ---------- Type ---------- */
h1,h2,h3,h4{font-weight:700;letter-spacing:-.035em;line-height:1;text-wrap:balance;}
h1 em,h2 em,h3 em,.statement em{font-style:normal;color:var(--em);}
.h-xl{font-size:clamp(2.4rem,5.7vw,5.6rem);line-height:.97;letter-spacing:-.04em;}
.h-lg{font-size:clamp(2rem,4.1vw,3.9rem);line-height:1;}
.lede{font-size:clamp(1.15rem,1.55vw,1.5rem);line-height:1.45;color:var(--fg-muted);max-width:44ch;text-wrap:pretty;}
.label{
  display:inline-flex;align-items:center;gap:.75em;
  font-size:.8125rem;font-weight:600;letter-spacing:.14em;text-transform:uppercase;font-stretch:112%;line-height:1.2;
}

.sec-head{
  display:grid;grid-template-columns:minmax(0,1.7fr) minmax(0,1fr);
  gap:clamp(18px,2vw,28px) clamp(24px,5vw,96px);align-items:end;
  margin-bottom:clamp(40px,6vw,96px);
}
.sec-head > .label{grid-column:1 / -1;justify-self:start;}
.sec-head--solo h2{grid-column:1 / -1;max-width:17ch;}
.sec-head-aside{display:grid;gap:1.5rem;justify-items:start;padding-bottom:.4em;}
.sec-foot{margin-top:clamp(32px,4vw,64px);display:flex;justify-content:flex-end;}

/* ---------- Buttons ---------- */
.btn{
  --b-bg:var(--fg);--b-fg:var(--bg);--b-hbg:var(--accent);--b-hfg:var(--accent-fg);
  position:relative;isolation:isolate;overflow:hidden;
  display:inline-flex;align-items:center;justify-content:center;gap:.7em;
  padding:1.1em 1.55em;border-radius:var(--r);
  background:var(--b-bg);color:var(--b-fg);
  font-size:1rem;font-weight:600;line-height:1;letter-spacing:-.005em;white-space:nowrap;
  transition:color .4s var(--ease);
}
.btn::before{
  content:'';position:absolute;inset:0;z-index:-1;background:var(--b-hbg);
  transform:translateY(101%);transition:transform .5s var(--ease);
}
.btn:hover,.btn:focus-visible{color:var(--b-hfg);}
.btn:hover::before,.btn:focus-visible::before{transform:translateY(0);}
.btn svg{width:1.05em;height:1.05em;flex:none;transition:transform .4s var(--ease);}
.btn:hover svg{transform:translate(3px,-3px);}
.btn-ghost{--b-bg:transparent;--b-fg:var(--fg);--b-hbg:var(--fg);--b-hfg:var(--bg);box-shadow:inset 0 0 0 1.5px var(--fg);}
.btn-sm{padding:.9em 1.2em;font-size:.94rem;}
.btn-block{width:100%;}
.btn:disabled{opacity:.6;cursor:not-allowed;}

.link-arrow{
  display:inline-flex;align-items:center;gap:.6em;font-weight:600;
  padding-bottom:.25em;box-shadow:inset 0 -1.5px 0 var(--fg);transition:gap .35s var(--ease),color .3s;
}
.link-arrow svg{width:1em;height:1em;}
.link-arrow:hover{gap:1em;color:var(--em);}

/* ---------- Preloader / page wipe ---------- */
.preloader{display:none;}
.js .preloader{
  position:fixed;inset:0;z-index:1000;display:grid;place-items:center;
  background:var(--ink);color:var(--paper);
  transition:transform .8s cubic-bezier(.76,0,.24,1);
}
.js .preloader.is-done{transform:translateY(-100%);}
.js .preloader.is-below{transform:translateY(100%);transition:none;}
.preloader-in{display:grid;gap:1.4rem;justify-items:center;}
.preloader-in img{height:84px;width:auto;}
.preloader-bricks{display:flex;gap:5px;}
.preloader-bricks i{width:28px;height:12px;border-radius:2px;background:var(--lilac);animation:plBrick 1.1s var(--ease) infinite;}
.preloader-bricks i:nth-child(2){animation-delay:.12s;}
.preloader-bricks i:nth-child(3){animation-delay:.24s;}
.preloader-bricks i:nth-child(4){animation-delay:.36s;}
@keyframes plBrick{0%,100%{transform:translateY(0);opacity:.28;}40%{transform:translateY(-9px);opacity:1;}}
.seen .preloader-in{display:none;}

/* ---------- Navbar ---------- */
.nav{
  position:fixed;inset:0 0 auto 0;z-index:300;
  transition:transform .55s var(--ease),background-color .35s ease,box-shadow .35s ease;
}
.nav-inner{display:flex;align-items:center;justify-content:space-between;gap:24px;height:var(--nav-h);}
.nav.is-stuck{background:var(--paper);box-shadow:0 1px 0 var(--rule);}
.nav.is-hidden{transform:translateY(-101%);}
.brand{flex:none;display:block;}
.brand img{height:38px;width:auto;}
.brand .brand-dark,.menu-open .brand .brand-light{display:none;}
.menu-open .brand .brand-dark{display:block;}
.nav-links{display:flex;align-items:center;gap:clamp(18px,2.4vw,40px);}
.nlink{position:relative;padding:.45em 0;font-size:1rem;font-weight:500;}
.nlink::after{
  content:'';position:absolute;left:0;right:0;bottom:0;height:2px;background:var(--violet);
  transform:scaleX(0);transform-origin:right;transition:transform .45s var(--ease);
}
.nlink:hover::after,.nlink.active::after{transform:scaleX(1);transform-origin:left;}
.nav-cta{display:flex;align-items:center;gap:14px;flex:none;}
.burger{display:none;width:48px;height:48px;border-radius:var(--r);position:relative;box-shadow:inset 0 0 0 1.5px currentColor;}
.burger span{position:absolute;left:14px;right:14px;height:2px;background:currentColor;transition:transform .45s var(--ease),top .45s var(--ease);}
.burger span:nth-child(1){top:19px;}
.burger span:nth-child(2){top:27px;}
.menu-open .burger span:nth-child(1){top:23px;transform:rotate(45deg);}
.menu-open .burger span:nth-child(2){top:23px;transform:rotate(-45deg);}
.menu-open .nav{background:transparent;box-shadow:none;color:var(--paper);transform:none;}

/* full-screen mobile menu */
.menu{
  position:fixed;inset:0;z-index:250;background:var(--ink);color:var(--paper);
  display:flex;flex-direction:column;justify-content:space-between;
  padding:calc(var(--nav-h) + 24px) var(--gut) 32px;overflow-y:auto;
  clip-path:inset(0 0 100% 0);visibility:hidden;
  transition:clip-path .7s cubic-bezier(.76,0,.24,1),visibility 0s .7s;
}
.menu-open .menu{clip-path:inset(0);visibility:visible;transition:clip-path .7s cubic-bezier(.76,0,.24,1),visibility 0s;}
.menu-links{display:grid;}
.menu-links a{
  display:flex;align-items:baseline;gap:.9rem;padding:.26em 0;border-bottom:1px solid rgba(244,242,236,.16);
  font-size:clamp(2.3rem,11vw,4.2rem);font-weight:700;letter-spacing:-.04em;line-height:1.08;overflow:hidden;
}
.menu-links a small{font-size:.8125rem;font-weight:600;letter-spacing:.1em;color:var(--lilac);}
.menu-links a span{display:block;transform:translateY(110%);transition:transform .8s var(--ease);transition-delay:calc(var(--i) * 55ms + .15s);}
.menu-open .menu-links a span{transform:none;}
.menu-links a.active span{color:var(--lilac);}
.menu-foot{display:grid;gap:14px;margin-top:36px;color:#AAA6B8;font-size:1rem;}
.menu-foot a:not(.btn){color:var(--paper);}
@media(max-width:940px){
  .nav-links,.nav-cta .btn{display:none;}
  .burger{display:block;}
}
@media(max-width:1100px){.brand img{height:32px;}}
@media(max-width:480px){:root{--nav-h:72px;} .brand img{height:28px;}}

/* ---------- Motion primitives ---------- */
.js .reveal{
  opacity:0;transform:translateY(34px);
  transition:opacity .9s var(--ease),transform .9s var(--ease);
  transition-delay:calc(var(--d,0ms) + var(--sd,0ms));
}
.js .reveal.in{opacity:1;transform:none;}

/* headline words rise out of a clipped line */
.w{display:inline-block;overflow:hidden;vertical-align:top;padding:.1em .04em .16em;margin:-.1em -.04em -.16em;}
.wi{display:inline-block;}
.js [data-split] .wi{transform:translateY(118%);transition:transform 1.05s var(--ease);transition-delay:calc(var(--i,0) * 55ms + var(--d,0ms));}
.js [data-split].in .wi{transform:none;}
/* the "brick" word drops in from above like a laid brick */
.w--brick{overflow:visible;}
.js [data-split] .w--brick .wi{transform:translateY(-190%) rotate(-9deg);opacity:0;transition:transform .9s var(--drop),opacity .25s linear;transition-delay:calc(var(--i,0) * 55ms + .35s);}
.js [data-split].in .w--brick .wi{transform:none;opacity:1;}
.brick-word{display:inline-block;background:var(--accent);color:var(--accent-fg);padding:0 .13em .05em;border-radius:.07em;line-height:1;}

/* text that inks in word by word as you scroll */
.js [data-scrub] .sw{opacity:.16;transition:opacity .4s linear;}
.js [data-scrub] .sw.on{opacity:1;}

/* line art that draws itself */
.js .draw .ln{stroke-dasharray:1;stroke-dashoffset:1;opacity:0;transition:stroke-dashoffset 1.5s var(--ease),opacity .05s linear;transition-delay:calc(var(--i,0) * 90ms + .15s);}
.js .draw.in .ln{stroke-dashoffset:0;opacity:1;}
.js .draw .acc{opacity:0;transition:opacity .6s ease 1s;}
.js .draw.in .acc{opacity:1;}

@keyframes spin{to{transform:rotate(360deg);}}

/* ---------- Hero (home) ---------- */
.hero{padding-top:calc(var(--nav-h) + clamp(28px,6vh,84px));padding-bottom:clamp(8px,2vw,32px);}
.hero-title{font-size:clamp(2.75rem,10.1vw,10rem);line-height:.92;letter-spacing:-.048em;font-weight:700;text-wrap:nowrap;}
.hero-foot{
  display:grid;grid-template-columns:minmax(0,1fr) auto;gap:24px clamp(32px,6vw,120px);align-items:end;
  margin-top:clamp(28px,4vw,60px);
}
.hero-foot .lede{max-width:50ch;}
.hero-actions{display:flex;flex-wrap:wrap;gap:10px;}

/* results panel — each number drawn as a unit chart. script.js builds the
   squares; they stack up from the bottom row in step with the counters. */
.proof{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));margin-top:clamp(40px,6vw,88px);border-radius:var(--r);}
.proof-item{display:flex;flex-direction:column;gap:clamp(18px,2vw,28px);padding:clamp(24px,2.8vw,44px);border-left:1px solid var(--rule);}
.proof-item:first-child{border-left:0;}
.proof-head b{display:block;font-size:clamp(2.4rem,4.8vw,4.6rem);font-weight:700;letter-spacing:-.06em;line-height:.86;font-variant-numeric:tabular-nums;}
.proof-head b small{font-size:.42em;letter-spacing:-.02em;margin-left:.08em;color:var(--em);}
.proof-head > span{display:block;margin-top:.75em;color:var(--fg-muted);line-height:1.3;}
.units{--cols:20;--gap:clamp(3px,.3vw,5px);display:flex;flex-wrap:wrap-reverse;align-content:flex-start;gap:var(--gap);margin-top:auto;}
.units i{width:calc((100% - (var(--cols) - 1) * var(--gap)) / var(--cols));aspect-ratio:1;border-radius:2px;background:rgba(244,242,236,.09);transition:background-color .3s ease;transition-delay:var(--t,0ms);}
.units i.off{background:transparent;box-shadow:inset 0 0 0 1px rgba(244,242,236,.34);}
.proof.in .units i.on{background:var(--lilac);}
.proof.is-done .units i{transition-delay:0ms;}
.proof-item:hover .units i.on{background:var(--paper);}
.proof-key{font-size:.75rem;font-weight:600;letter-spacing:.12em;text-transform:uppercase;font-stretch:112%;line-height:1.3;color:var(--fg-muted);}
@media(max-width:820px){
  .proof-item{padding:clamp(14px,3.4vw,24px);gap:14px;}
  .units{--cols:10;}
  .proof-key{font-size:.62rem;letter-spacing:.08em;}
}

/* ---------- Stats ---------- */
.stats{display:grid;grid-template-columns:repeat(var(--n,4),minmax(0,1fr));border-top:1.5px solid var(--fg);}
.stat{padding:clamp(20px,2.8vw,40px) clamp(14px,2vw,32px) 0;border-left:1px solid var(--rule);}
.stat:first-child{border-left:0;padding-left:0;}
.stat b{display:block;font-size:clamp(3.2rem,8.6vw,8.6rem);font-weight:700;letter-spacing:-.06em;line-height:.86;font-variant-numeric:tabular-nums;}
.stat b small{font-size:.42em;letter-spacing:-.02em;margin-left:.08em;color:var(--em);font-weight:700;}
.stat > span{display:block;margin-top:1em;color:var(--fg-muted);max-width:18ch;line-height:1.3;}
.stats--sm{margin-top:clamp(36px,5vw,72px);}
.stats--sm .stat b{font-size:clamp(2.4rem,5vw,4.6rem);}
@media(max-width:820px){
  .stats:not(.stats--sm){grid-template-columns:repeat(2,minmax(0,1fr));}
  .stats:not(.stats--sm) .stat:nth-child(odd){border-left:0;padding-left:0;}
  .stats:not(.stats--sm) .stat:nth-child(n+3){margin-top:clamp(24px,5vw,40px);border-top:1px solid var(--rule);}
}
@media(max-width:480px){.stats--sm .stat{padding-inline:10px;} .stats--sm .stat > span{font-size:.86rem;}}

/* ---------- About preview / statement ---------- */
.statement{font-size:clamp(1.75rem,3.5vw,3.4rem);font-weight:600;letter-spacing:-.035em;line-height:1.08;text-wrap:pretty;}
.statement--xl{font-size:clamp(2.1rem,5.6vw,5.6rem);line-height:1;letter-spacing:-.042em;}
.intro-grid{
  display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);gap:clamp(28px,6vw,120px);
  margin-top:clamp(36px,6vw,96px);padding-top:clamp(28px,4vw,56px);border-top:1.5px solid var(--fg);align-items:start;
}
.prose{display:grid;gap:1.2em;color:var(--fg-muted);max-width:52ch;}
.prose .btn,.prose .link-arrow{justify-self:start;margin-top:.8em;color:var(--fg);}
.prose .btn{color:var(--b-fg);}

/* ---------- Service rows (home) ---------- */
.clip-x{overflow-x:clip;}
.svc-list{border-bottom:1px solid var(--rule);}
.svc-row{
  position:relative;isolation:isolate;
  display:grid;grid-template-columns:4.5rem minmax(0,1.25fr) minmax(0,1fr) 3.5rem;align-items:center;gap:clamp(12px,2vw,32px);
  padding:clamp(20px,2.5vw,36px) 0;border-top:1px solid var(--rule);
}
.svc-row::before{
  content:'';position:absolute;inset:0 -100vw;z-index:-1;background:var(--violet);
  transform:scaleY(0);transform-origin:bottom;transition:transform .5s var(--ease);
}
.svc-num{font-size:.9rem;font-weight:600;color:var(--fg-muted);font-variant-numeric:tabular-nums;transition:color .3s;}
.svc-title{font-size:clamp(1.6rem,3.7vw,3.5rem);font-weight:600;letter-spacing:-.04em;line-height:1.02;transition:transform .5s var(--ease);}
.svc-desc{color:var(--fg-muted);max-width:38ch;line-height:1.45;transition:color .3s;}
.svc-arrow{width:3.25rem;height:3.25rem;border-radius:var(--r);display:grid;place-items:center;box-shadow:inset 0 0 0 1.5px var(--rule);transition:background-color .35s,color .35s,transform .5s var(--ease);}
.svc-arrow svg{width:1.25rem;height:1.25rem;}
.svc-row:hover::before,.svc-row:focus-visible::before{transform:scaleY(1);}
.svc-row:hover .svc-title,.svc-row:focus-visible .svc-title{transform:translateX(clamp(8px,1.4vw,22px));}
.svc-row:hover .svc-desc,.svc-row:hover .svc-num,.svc-row:focus-visible .svc-desc,.svc-row:focus-visible .svc-num{color:var(--paper);}
.svc-row:hover .svc-arrow,.svc-row:focus-visible .svc-arrow{background:var(--paper);color:var(--ink);transform:rotate(45deg);}
@media(max-width:820px){
  .svc-row{grid-template-columns:2.2rem minmax(0,1fr) 2.75rem;align-items:start;}
  .svc-desc{grid-column:2;grid-row:2;}
  .svc-arrow{width:2.75rem;height:2.75rem;grid-row:1 / span 2;grid-column:3;}
  .svc-num{padding-top:.5em;}
}

/* ---------- Capabilities — expanding panels ---------- */
.caps{display:flex;height:clamp(400px,33vw,500px);border:1.5px solid var(--ink);border-radius:var(--r);overflow:hidden;}
.cap{
  position:relative;flex:1 1 0;min-width:0;overflow:hidden;text-align:left;
  background:var(--paper);color:var(--ink);border-left:1.5px solid var(--ink);
  transition:flex-grow .75s var(--ease),background-color .45s ease,color .45s ease;
}
.cap:first-child{border-left:0;}
.cap.is-active{flex-grow:4.4;background:var(--violet);color:var(--paper);cursor:default;}
.cap:not(.is-active):hover{background:var(--paper-2);}
.cap-num{position:absolute;top:clamp(16px,1.6vw,26px);left:clamp(16px,1.6vw,26px);font-size:.9rem;font-weight:600;font-variant-numeric:tabular-nums;}
.cap-name{
  position:absolute;left:clamp(14px,1.5vw,24px);bottom:clamp(16px,1.6vw,26px);
  writing-mode:vertical-rl;transform:rotate(180deg);
  font-size:clamp(1.1rem,1.6vw,1.55rem);font-weight:600;letter-spacing:-.02em;white-space:nowrap;transition:opacity .3s ease;
}
.cap.is-active .cap-name{opacity:0;}
.cap-ico{position:absolute;top:clamp(14px,1.5vw,22px);right:clamp(14px,1.5vw,22px);width:3.25rem;height:3.25rem;border-radius:var(--r);display:grid;place-items:center;background:var(--paper);color:var(--ink);opacity:0;transform:scale(.6);transition:opacity .3s,transform .5s var(--drop);}
.cap-ico svg{width:1.4rem;height:1.4rem;stroke:currentColor;fill:none;}
.cap.is-active .cap-ico{opacity:1;transform:none;transition-delay:.3s;}
.cap-body{
  position:absolute;left:clamp(16px,1.6vw,26px);bottom:clamp(16px,1.6vw,26px);width:clamp(260px,34vw,520px);
  display:block;opacity:0;transform:translateY(18px);transition:opacity .25s ease,transform .5s var(--ease);pointer-events:none;
}
.cap.is-active .cap-body{opacity:1;transform:none;transition-delay:.28s;}
.cap-title{display:block;font-size:clamp(1.9rem,3.4vw,3.4rem);font-weight:700;letter-spacing:-.04em;line-height:1;}
.cap-text{display:block;margin-top:.9rem;max-width:30ch;font-size:clamp(1rem,1.25vw,1.2rem);line-height:1.45;}
@media(max-width:900px){
  .caps{flex-direction:column;height:auto;}
  .cap{flex:none;border-left:0;border-top:1.5px solid var(--ink);display:grid;grid-template-columns:2.4rem minmax(0,1fr);align-items:baseline;padding:18px;}
  .cap:first-child{border-top:0;}
  .cap-num,.cap-name,.cap-body{position:static;}
  .cap-name{writing-mode:horizontal-tb;transform:none;font-size:1.35rem;white-space:normal;}
  .cap.is-active .cap-name{opacity:1;}
  .cap-ico,.cap-title{display:none;}
  .cap-body{grid-column:2;width:auto;opacity:1;transform:none;display:grid;grid-template-rows:0fr;transition:grid-template-rows .55s var(--ease);}
  .cap.is-active .cap-body{grid-template-rows:1fr;}
  .cap-body-in{overflow:hidden;min-height:0;}
  .cap-text{margin-top:.5rem;max-width:none;}
}
.caps + .stats{margin-top:clamp(56px,8vw,128px);}

/* ---------- Process — sticky counter + steps ---------- */
.process{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.1fr);gap:clamp(32px,7vw,128px);align-items:start;}
.process-aside{position:sticky;top:calc(var(--nav-h) + 24px);display:grid;gap:clamp(18px,2vw,28px);justify-items:start;}
.process-count{display:flex;align-items:flex-end;gap:.6rem;margin-top:clamp(16px,3vw,48px);font-weight:700;letter-spacing:-.06em;font-variant-numeric:tabular-nums;}
.process-count b{display:block;font-size:clamp(5rem,13vw,13.5rem);line-height:.8;color:var(--violet);overflow:hidden;padding-bottom:.04em;}
.process-count b span{display:block;}
.process-count b span.tick{animation:tick .55s var(--ease);}
@keyframes tick{from{transform:translateY(70%);opacity:0;}to{transform:none;opacity:1;}}
.process-count > span{font-size:1.25rem;letter-spacing:-.02em;color:var(--fg-muted);padding-bottom:.3em;}
.process-bar{width:100%;height:6px;border-radius:2px;background:var(--rule);overflow:hidden;}
.process-bar i{display:block;height:100%;background:var(--ink);transform:scaleX(var(--p,0));transform-origin:left;transition:transform .6s var(--ease);}
.step{padding:clamp(26px,3.8vw,56px) 0;border-top:1.5px solid var(--rule);display:grid;grid-template-columns:3.5rem minmax(0,1fr);gap:.4rem 1rem;opacity:.3;transition:opacity .45s ease,border-color .45s ease;}
.step:last-child{border-bottom:1.5px solid var(--rule);}
.step.is-active{opacity:1;border-top-color:var(--ink);}
.step-num{font-size:.9rem;font-weight:600;padding-top:.75em;font-variant-numeric:tabular-nums;}
.step h3{font-size:clamp(2rem,4.5vw,4.25rem);letter-spacing:-.045em;}
.step p{grid-column:2;max-width:38ch;margin-top:.4rem;font-size:clamp(1.05rem,1.35vw,1.3rem);line-height:1.45;color:var(--fg-muted);}
html:not(.js) .step{opacity:1;}
@media(max-width:900px){
  .process{grid-template-columns:1fr;}
  .process-aside{position:static;}
  .process-count,.process-bar{display:none;}
  .step{grid-template-columns:2.4rem minmax(0,1fr);}
}

/* ---------- Industries — bricks dropped into a pit ----------
   script.js lays the bricks out with Matter.js physics (.is-live) or, with
   reduced motion or if the library can't load, as a static wall (.is-static). */
.pit{position:relative;}
.inds{display:flex;flex-wrap:wrap;gap:clamp(6px,.7vw,10px);}
.ind{
  display:inline-flex;align-items:center;gap:.65em;padding:1em 1.4em;border-radius:var(--r);
  font-size:clamp(.98rem,1.45vw,1.45rem);font-weight:600;letter-spacing:-.025em;line-height:1;white-space:nowrap;
  -webkit-user-select:none;user-select:none;
}
.ind svg{width:1.05em;height:1.05em;flex:none;}
.ind--ink{background:var(--ink);color:var(--paper);}
.ind--violet{background:var(--violet);color:var(--paper);}
.ind--lilac{background:var(--lilac);color:var(--ink);}
.ind--line{background:var(--paper);color:var(--ink);box-shadow:inset 0 0 0 1.5px var(--ink);}
.js .pit:not(.is-live):not(.is-static) .inds{visibility:hidden;}
.pit.is-live{height:var(--pit-h,480px);overflow:hidden;border-bottom:1.5px solid var(--ink);}
.pit.is-live .ind{position:absolute;left:0;top:0;transform:translate(-200vw,0);will-change:transform;cursor:grab;touch-action:pan-y;}
.pit.is-live .ind:hover{outline:1.5px solid var(--ink);outline-offset:3px;}
.pit.is-live .ind.is-held{cursor:grabbing;outline:0;}
.pit-bar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px 24px;margin-top:clamp(16px,1.8vw,24px);}
.pit-hint{display:inline-flex;align-items:center;gap:.6em;font-size:.95rem;color:var(--fg-muted);}
.pit-hint svg{width:1.2em;height:1.2em;flex:none;}
.hint-touch{display:none;}
@media(hover:none){.hint-fine{display:none;} .hint-touch{display:inline;}}
.pit-again svg{transition:transform .6s var(--ease);}
.pit-again:hover svg{transform:rotate(-220deg);}

/* ---------- Work — case cards ---------- */
.cases{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:clamp(40px,5vw,80px) clamp(18px,2.4vw,36px);}
.case{display:flex;flex-direction:column;gap:clamp(18px,2vw,28px);}
.case--violet{--c-bg:var(--violet);--c-fg:var(--paper);}
.case--ink{--c-bg:var(--ink);--c-fg:var(--lilac);}
.case--lilac{--c-bg:var(--lilac);--c-fg:var(--ink);}
.case-visual{
  position:relative;aspect-ratio:4 / 3;border-radius:var(--r);overflow:hidden;display:grid;place-items:center;
  background:var(--c-bg);color:var(--c-fg);
}
.theme-alt .case--lilac,.case--lilac{--c-bg:var(--lilac);}
.case-visual svg.case-art{width:min(46%,320px);height:auto;stroke:currentColor;fill:none;overflow:visible;transition:transform .9s var(--ease);}
.case-visual .acc{fill:currentColor;fill-opacity:.32;stroke:none;}
.case:hover .case-art{transform:scale(1.1) rotate(-4deg);}
.case-tag{position:absolute;top:clamp(12px,1.4vw,20px);left:clamp(12px,1.4vw,20px);padding:.5em .8em;border-radius:4px;background:var(--paper);color:var(--ink);font-size:.75rem;font-weight:600;letter-spacing:.12em;text-transform:uppercase;font-stretch:112%;line-height:1;}
.case-idx{position:absolute;top:clamp(12px,1.4vw,20px);right:clamp(14px,1.6vw,24px);font-size:.9rem;font-weight:600;font-variant-numeric:tabular-nums;}
.case-go{position:absolute;right:clamp(12px,1.4vw,20px);bottom:clamp(12px,1.4vw,20px);width:3.5rem;height:3.5rem;border-radius:var(--r);display:grid;place-items:center;background:var(--paper);color:var(--ink);transform:translateY(160%);transition:transform .5s var(--drop);}
.case-go svg{width:1.3rem;height:1.3rem;}
.case:hover .case-go,.case:focus-visible .case-go{transform:none;}
.case-info h3{font-size:clamp(1.7rem,3vw,2.9rem);letter-spacing:-.04em;}
.case-info p{margin-top:.8rem;color:var(--fg-muted);max-width:44ch;}
.case-metrics{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));margin-top:clamp(18px,2vw,28px);border-top:1px solid var(--rule);}
.case-metrics div{padding-top:1rem;}
.case-metrics div + div{padding-left:1.25rem;border-left:1px solid var(--rule);}
.case-metrics dd{font-size:clamp(1.5rem,2.3vw,2.2rem);font-weight:700;letter-spacing:-.04em;line-height:1;}
.case-metrics dt{margin-top:.5rem;font-size:.9rem;color:var(--fg-muted);}
.case--wide{grid-column:1 / -1;display:grid;grid-template-columns:minmax(0,1.35fr) minmax(0,1fr);align-items:stretch;gap:clamp(18px,3vw,56px);}
.case--wide .case-visual{aspect-ratio:auto;min-height:clamp(300px,36vw,540px);}
.case--wide .case-info{display:flex;flex-direction:column;justify-content:flex-end;}
.case--wide .case-info h3{font-size:clamp(2rem,4.4vw,4.4rem);}
.case--wide.case--flip .case-visual{order:2;}
@media(max-width:820px){
  .cases{grid-template-columns:1fr;}
  .case--wide{display:flex;}
  .case--wide .case-visual{aspect-ratio:4 / 3;min-height:0;order:0 !important;}
}

/* ---------- Reviews ---------- */
.reviews{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(14px,1.8vw,28px);}
.review{
  display:flex;flex-direction:column;gap:clamp(18px,2vw,28px);padding:clamp(22px,2.6vw,40px);
  border-radius:var(--r);background:var(--panel);
  transition:transform .5s var(--ease);
}
.review:hover{transform:translateY(-6px);}
.review--accent{background:var(--violet);color:var(--paper);--fg-muted:rgba(244,242,236,.86);--rule:rgba(244,242,236,.34);--star:var(--paper);}
.review-top{display:flex;align-items:center;justify-content:space-between;}
.review-stars{display:flex;gap:3px;color:var(--star,var(--em));}
.review-stars svg{width:18px;height:18px;fill:currentColor;}
.review-stars svg.off{fill:none;stroke:currentColor;stroke-width:1.5;opacity:.5;}
.review-mark{width:34px;height:34px;fill:currentColor;opacity:.22;}
.review blockquote{flex:1;font-size:clamp(1.12rem,1.5vw,1.42rem);font-weight:500;line-height:1.38;letter-spacing:-.018em;text-wrap:pretty;}
.review-who{display:flex;align-items:center;gap:.9rem;padding-top:clamp(16px,1.6vw,24px);border-top:1px solid var(--rule);}
.review-av{flex:none;width:48px;height:48px;border-radius:var(--r);display:grid;place-items:center;background:var(--lilac);color:var(--ink);font-weight:700;font-size:1.2rem;}
.review-who b{display:block;font-weight:600;line-height:1.2;}
.review-who span{display:block;font-size:.9rem;color:var(--fg-muted);line-height:1.35;}
.review-who .review-tag{font-size:.72rem;font-weight:600;letter-spacing:.12em;text-transform:uppercase;margin-top:.35rem;}
@media(max-width:1000px){.reviews{grid-template-columns:repeat(2,minmax(0,1fr));}}
@media(max-width:640px){.reviews{grid-template-columns:1fr;}}

/* ---------- Line grid cells (why choose us, capabilities, why snowbrick) ---------- */
.cells{display:grid;grid-template-columns:repeat(var(--cols,3),minmax(0,1fr));border-top:1.5px solid var(--fg);border-left:1px solid var(--rule);}
.cell{
  position:relative;isolation:isolate;display:flex;flex-direction:column;
  padding:clamp(22px,2.6vw,44px);border-right:1px solid var(--rule);border-bottom:1px solid var(--rule);
  transition:color .4s ease;
}
.cell::before{content:'';position:absolute;inset:0;z-index:-1;background:var(--fg);transform:scaleY(0);transform-origin:bottom;transition:transform .5s var(--ease);}
.cell:hover,.cell:focus-visible{color:var(--bg);}
.cell:hover::before,.cell:focus-visible::before{transform:scaleY(1);}
.cell-top{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:clamp(32px,5vw,84px);}
.cell-ico{width:3.25rem;height:3.25rem;border-radius:var(--r);display:grid;place-items:center;background:var(--accent);color:var(--accent-fg);transition:transform .5s var(--drop);}
.cell-ico svg{width:1.45rem;height:1.45rem;stroke:currentColor;fill:none;}
.cell-ico .acc{fill:currentColor;fill-opacity:.3;stroke:none;}
.cell:hover .cell-ico{transform:rotate(-8deg) scale(1.08);}
.cell-idx{font-size:.9rem;font-weight:600;color:var(--fg-muted);font-variant-numeric:tabular-nums;transition:color .4s;}
.cell h3{font-size:clamp(1.3rem,1.9vw,1.8rem);letter-spacing:-.03em;line-height:1.1;}
.cell p{margin-top:.7rem;color:var(--fg-muted);line-height:1.5;transition:color .4s;}
.cell:hover p,.cell:hover .cell-idx{color:inherit;opacity:.78;}
.cell-go{margin-top:auto;padding-top:1.5rem;display:inline-flex;align-items:center;gap:.5em;font-size:.9rem;font-weight:600;}
.cell-go svg{width:1em;height:1em;transition:transform .4s var(--ease);}
.cell:hover .cell-go svg{transform:translate(3px,-3px);}
@media(max-width:1000px){.cells{--cols:2 !important;}}
@media(max-width:600px){.cells{--cols:1 !important;} .cell-top{margin-bottom:28px;}}

/* ---------- Ticker (above the CTA) ----------
   One row of the disciplines, separated by the brand mark. script.js drives
   it: it follows the direction of the scroll and eases off on hover. */
.ticker{overflow:hidden;padding-block:clamp(22px,2.8vw,40px);}
.ticker:empty{display:none;}
.tk-row{display:flex;width:max-content;font-size:clamp(1.9rem,4.2vw,4.25rem);}
.tk-set{display:flex;align-items:center;flex:none;}
.tk-word{white-space:nowrap;font-weight:700;letter-spacing:-.05em;line-height:1;padding-bottom:.08em;transition:color .35s ease;}
.tk-word:hover{color:var(--lilac);}
.tk-mark{flex:none;width:.5em;height:.5em;margin-inline:.5em;transition:transform .7s var(--drop);}
.tk-word:hover + .tk-mark{transform:rotate(90deg);}

/* ---------- CTA ---------- */
.cta{padding-block:clamp(80px,11vw,176px);overflow:hidden;}
.cta-inner{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:clamp(24px,5vw,80px);align-items:end;}
.cta h2{font-size:clamp(2.6rem,8.2vw,8.4rem);line-height:.92;letter-spacing:-.048em;max-width:13ch;}
.cta .lede{margin-top:clamp(20px,2.4vw,36px);color:var(--fg-muted);}
.cta-actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:clamp(24px,3vw,44px);}
.badge{position:relative;width:clamp(150px,16vw,236px);aspect-ratio:1;display:grid;place-items:center;flex:none;}
.badge-ring{position:absolute;inset:0;width:100%;height:100%;animation:spin 20s linear infinite;}
.badge-ring text{font-family:var(--ff);font-size:11.4px;font-weight:600;letter-spacing:.21em;text-transform:uppercase;font-stretch:112%;fill:currentColor;}
.badge-core{width:46%;aspect-ratio:1;border-radius:50%;display:grid;place-items:center;background:var(--ink);color:var(--paper);transition:transform .5s var(--drop),background-color .3s,color .3s;}
.badge-core svg{width:34%;height:34%;}
.badge:hover .badge-core{transform:scale(1.14) rotate(45deg);background:var(--paper);color:var(--ink);}
@media(max-width:820px){.cta-inner{grid-template-columns:1fr;} .badge{justify-self:end;margin-top:-8px;}}

/* ---------- Footer ---------- */
.footer{padding-top:clamp(64px,8vw,128px);}
.footer-top{display:grid;grid-template-columns:minmax(0,1.7fr) repeat(3,minmax(0,1fr));gap:clamp(28px,4vw,72px);}
.footer-brand img{height:44px;width:auto;}
.footer-brand > p{margin-top:1.25rem;max-width:36ch;color:var(--fg-muted);}
.newsletter{margin-top:clamp(24px,3vw,40px);max-width:420px;}
.newsletter h3,.f-col h3{font-size:.78rem;font-weight:600;letter-spacing:.14em;text-transform:uppercase;font-stretch:112%;color:var(--fg-muted);}
.newsletter form{display:flex;margin-top:.8rem;border-bottom:1.5px solid var(--fg);}
.newsletter input{flex:1;min-width:0;background:transparent;border:0;outline:0;padding:.85rem 0;font-size:1.1rem;}
.newsletter input::placeholder{color:var(--fg-muted);opacity:.75;}
.newsletter button{flex:none;width:3rem;display:grid;place-items:center;transition:transform .4s var(--ease),color .3s;}
.newsletter button svg{width:1.3rem;height:1.3rem;}
.newsletter button:hover{transform:translate(4px,-4px);color:var(--lilac);}
.newsletter-msg{min-height:1.4em;margin-top:.6rem;font-size:.9rem;color:var(--lilac);}
.f-col ul{display:grid;gap:.6rem;margin-top:1.1rem;}
.f-col a{position:relative;display:inline-block;transition:color .3s,transform .4s var(--ease);overflow-wrap:anywhere;}
.f-col a:hover{color:var(--lilac);transform:translateX(6px);}
.socials{display:flex;gap:8px;margin-top:clamp(24px,3vw,36px);}
.socials a,.member-social a{width:44px;height:44px;border-radius:var(--r);display:grid;place-items:center;box-shadow:inset 0 0 0 1.5px var(--rule);transition:background-color .3s,color .3s,transform .4s var(--drop);}
.socials svg,.member-social svg{width:18px;height:18px;}
.socials a:hover,.member-social a:hover{background:var(--fg);color:var(--bg);transform:translateY(-4px);}
.footer-bottom{display:flex;flex-wrap:wrap;justify-content:space-between;gap:8px 24px;padding:clamp(18px,2vw,28px) 76px clamp(18px,2vw,28px) 0;margin-top:clamp(48px,6vw,96px);border-top:1px solid var(--rule);font-size:.9rem;color:var(--fg-muted);}
.footer-bottom a:hover{color:var(--paper);}
@media(max-width:1000px){.footer-top{grid-template-columns:repeat(3,minmax(0,1fr));} .footer-brand{grid-column:1 / -1;}}
@media(max-width:600px){.footer-top{grid-template-columns:repeat(2,minmax(0,1fr));} .f-col:last-child{grid-column:1 / -1;}}

/* ---------- Floating buttons + assistant ---------- */
.fabs{position:fixed;right:clamp(12px,1.6vw,24px);bottom:clamp(12px,1.6vw,24px);z-index:200;display:flex;flex-direction:column;gap:8px;}
.fab{width:52px;height:52px;border-radius:var(--r);display:grid;place-items:center;background:var(--ink);color:var(--paper);box-shadow:0 0 0 1.5px var(--paper);transition:transform .4s var(--drop),background-color .3s,opacity .3s;}
.fab svg{width:22px;height:22px;}
.fab:hover{background:var(--violet);transform:translateY(-4px);}
.fab--top{opacity:0;pointer-events:none;transform:translateY(12px);}
.fab--top.show{opacity:1;pointer-events:auto;transform:none;}
.chat{
  position:fixed;right:clamp(12px,1.6vw,24px);bottom:calc(clamp(12px,1.6vw,24px) + 64px);z-index:210;
  width:min(360px,calc(100vw - 24px));border-radius:8px;overflow:hidden;
  background:var(--paper);color:var(--ink);box-shadow:0 0 0 1.5px var(--ink),8px 8px 0 var(--violet);
  opacity:0;transform:translateY(18px) scale(.97);transform-origin:bottom right;pointer-events:none;
  transition:opacity .3s ease,transform .45s var(--ease);
}
.chat.open{opacity:1;transform:none;pointer-events:auto;}
.chat-head{display:flex;align-items:center;gap:.8rem;padding:14px 16px;background:var(--ink);color:var(--paper);}
.chat-head img{height:34px;width:auto;}
.chat-head b{display:block;font-weight:600;line-height:1.2;}
.chat-head span{display:block;font-size:.8rem;color:#AAA6B8;}
.chat-close{margin-left:auto;width:32px;height:32px;display:grid;place-items:center;border-radius:4px;}
.chat-close svg{width:18px;height:18px;}
.chat-close:hover{background:var(--ink-2);}
.chat-body{display:flex;flex-direction:column;gap:8px;padding:16px;max-height:260px;overflow-y:auto;font-size:.95rem;line-height:1.45;}
.chat-msg{max-width:88%;padding:.7em .9em;border-radius:var(--r);}
.chat-msg.bot{background:var(--paper-2);align-self:flex-start;}
.chat-msg.me{background:var(--violet);color:var(--paper);align-self:flex-end;}
.chat-msg a{text-decoration:underline;font-weight:600;}
.chat-quick{display:flex;flex-wrap:wrap;gap:6px;padding:0 16px 16px;}
.chat-quick button{padding:.6em .9em;border-radius:4px;font-size:.88rem;font-weight:600;box-shadow:inset 0 0 0 1.5px var(--ink);transition:background-color .25s,color .25s;}
.chat-quick button:hover{background:var(--ink);color:var(--paper);}

/* ---------- Inner page hero ---------- */
.page-hero{padding-top:calc(var(--nav-h) + clamp(36px,8vh,110px));padding-bottom:clamp(48px,7vw,112px);}
.page-title{margin-top:clamp(18px,2.4vw,32px);font-size:clamp(2.6rem,8vw,8rem);line-height:.93;letter-spacing:-.048em;max-width:15ch;}
.page-title--wide{max-width:none;}
.page-hero-foot{
  display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:clamp(24px,5vw,96px);align-items:end;
  margin-top:clamp(28px,4.5vw,72px);padding-top:clamp(24px,3vw,44px);border-top:1.5px solid var(--ink);
}
.page-hero-foot .hero-actions{justify-self:end;}
.page-hero .stats{margin-top:clamp(40px,6vw,88px);}
.jump{display:flex;flex-wrap:wrap;gap:6px;justify-content:flex-end;}
.jump a{padding:.6em .9em;border-radius:4px;font-size:.92rem;font-weight:600;line-height:1;box-shadow:inset 0 0 0 1.5px var(--ink);transition:background-color .25s,color .25s,transform .4s var(--drop);}
.jump a:hover{background:var(--ink);color:var(--paper);transform:translateY(-3px);}
@media(max-width:820px){
  .sec-head,.intro-grid,.hero-foot,.page-hero-foot{grid-template-columns:1fr;}
  .page-hero-foot .hero-actions,.jump{justify-self:start;justify-content:flex-start;}
  .hero-title{text-wrap:wrap;font-size:clamp(2.6rem,12.3vw,6.4rem);}
}
@media(max-width:600px){
  .fab--top{display:none;}
  .hero-actions .btn,.cta-actions .btn{flex:1 1 auto;}
}

/* ---------- Accordion (services, FAQ) ---------- */
.acc{border-bottom:1px solid var(--rule);}
.acc-item{border-top:1px solid var(--rule);transition:border-color .3s;}
.acc-item:first-child,.acc-item.is-open,.acc-item.is-open + .acc-item{border-top-color:var(--fg);}
.acc-head{width:100%;display:grid;grid-template-columns:4.5rem minmax(0,1fr) auto;align-items:center;gap:clamp(12px,2vw,28px);padding:clamp(20px,2.4vw,34px) 0;text-align:left;}
.acc-num{font-size:.9rem;font-weight:600;color:var(--fg-muted);font-variant-numeric:tabular-nums;}
.acc-title{display:block;font-size:clamp(1.55rem,3.5vw,3.3rem);font-weight:600;letter-spacing:-.04em;line-height:1.03;transition:transform .5s var(--ease),color .3s;}
.acc-sub{display:block;margin-top:.5rem;color:var(--fg-muted);font-size:1rem;line-height:1.4;max-width:52ch;}
.acc-head:hover .acc-title{transform:translateX(clamp(6px,1vw,16px));color:var(--em);}
.acc-plus{position:relative;flex:none;width:3.25rem;height:3.25rem;border-radius:var(--r);box-shadow:inset 0 0 0 1.5px var(--rule);transition:background-color .35s,color .35s;}
.acc-plus::before,.acc-plus::after{content:'';position:absolute;left:50%;top:50%;width:16px;height:2px;margin:-1px 0 0 -8px;background:currentColor;transition:transform .55s var(--ease);}
.acc-plus::after{transform:rotate(90deg);}
.acc-item.is-open .acc-plus{background:var(--fg);color:var(--bg);}
.acc-item.is-open .acc-plus::before{transform:rotate(180deg);}
.acc-item.is-open .acc-plus::after{transform:rotate(180deg);}
.acc-panel{display:grid;grid-template-rows:0fr;transition:grid-template-rows .6s var(--ease);}
.acc-item.is-open .acc-panel{grid-template-rows:1fr;}
.acc-panel-in{overflow:hidden;min-height:0;}
.acc-content{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);gap:clamp(24px,5vw,96px);padding:clamp(4px,1vw,12px) 0 clamp(28px,3.4vw,52px) calc(4.5rem + clamp(12px,2vw,28px));}
.acc-content > p{font-size:clamp(1.05rem,1.35vw,1.28rem);line-height:1.5;max-width:46ch;}
.acc-ico{width:4.5rem;height:4.5rem;border-radius:var(--r);display:grid;place-items:center;background:var(--accent);color:var(--accent-fg);margin-bottom:1.5rem;}
.acc-ico svg{width:2.4rem;height:2.4rem;stroke:currentColor;fill:none;}
.acc-ico .acc{fill:currentColor;fill-opacity:.28;stroke:none;}
.acc-content h4{font-size:.78rem;font-weight:600;letter-spacing:.14em;text-transform:uppercase;font-stretch:112%;color:var(--fg-muted);}
.checks{display:grid;gap:.75rem;margin-top:1rem;}
.checks li{display:grid;grid-template-columns:1.25rem minmax(0,1fr);gap:.75rem;align-items:start;line-height:1.4;}
.checks svg{width:1.25rem;height:1.25rem;margin-top:.12em;stroke:var(--accent);fill:none;}
.chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:1rem;}
.chips li{padding:.5em .75em;border-radius:4px;font-size:.88rem;font-weight:500;line-height:1;box-shadow:inset 0 0 0 1px var(--rule);}
.acc-content h4 + .chips{margin-bottom:0;}
.acc-col > * + h4{margin-top:clamp(24px,2.6vw,36px);}
@media(max-width:820px){
  .acc-head{grid-template-columns:2.2rem minmax(0,1fr) auto;}
  .acc-plus{width:2.75rem;height:2.75rem;}
  .acc-content{grid-template-columns:1fr;padding-left:0;}
}
.acc--faq .acc-head{grid-template-columns:minmax(0,1fr) auto;}
.acc--faq .acc-title{font-size:clamp(1.2rem,1.9vw,1.7rem);letter-spacing:-.025em;line-height:1.2;}
.acc--faq .acc-content{display:block;padding:0 4.5rem clamp(22px,2.4vw,34px) 0;}
.acc--faq .acc-content p{color:var(--fg-muted);max-width:60ch;}
.faq-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.35fr);gap:clamp(32px,6vw,112px);align-items:start;}
.faq-aside{position:sticky;top:calc(var(--nav-h) + 24px);display:grid;gap:clamp(18px,2vw,28px);justify-items:start;}
@media(max-width:900px){.faq-grid{grid-template-columns:1fr;} .faq-aside{position:static;} .acc--faq .acc-content{padding-right:0;}}

/* ---------- Pricing ---------- */
.plans{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(14px,1.6vw,24px);align-items:stretch;}
.plan{
  position:relative;display:flex;flex-direction:column;padding:clamp(24px,2.8vw,44px);border-radius:var(--r);
  background:var(--bg);color:var(--fg);box-shadow:inset 0 0 0 1.5px var(--ink);
  transition:transform .5s var(--ease),box-shadow .5s var(--ease);
}
.plan:hover{transform:translate(-5px,-5px);box-shadow:inset 0 0 0 1.5px var(--ink),9px 9px 0 var(--violet);}
.plan-tag{position:absolute;top:0;right:clamp(20px,2.4vw,36px);transform:translateY(-50%);padding:.6em .9em;border-radius:4px;background:var(--violet);color:var(--paper);font-size:.72rem;font-weight:600;letter-spacing:.14em;text-transform:uppercase;font-stretch:112%;line-height:1;}
.plan-price{margin:clamp(18px,2vw,28px) 0 .6rem;font-size:clamp(3.2rem,5.6vw,5.4rem);font-weight:700;letter-spacing:-.055em;line-height:.9;}
.plan-price span{margin-left:.6em;font-size:.9rem;font-weight:500;letter-spacing:0;color:var(--fg-muted);}
.plan-desc{padding-bottom:clamp(18px,2vw,28px);border-bottom:1px solid var(--rule);color:var(--fg-muted);}
.plan .checks{margin:clamp(18px,2vw,28px) 0;flex:1;align-content:start;}
.plan-time{margin-bottom:1.25rem;padding-top:1rem;border-top:1px solid var(--rule);font-size:.92rem;color:var(--fg-muted);display:flex;justify-content:space-between;gap:1rem;}
.plan-time b{color:var(--fg);font-weight:600;}
@media(max-width:960px){.plans{grid-template-columns:1fr;max-width:560px;}}

.compare{margin-top:clamp(56px,8vw,128px);}
.compare h2{margin-bottom:clamp(24px,3vw,44px);}
.compare table{width:100%;border-collapse:collapse;}
.compare th,.compare td{padding:clamp(14px,1.5vw,22px) 1rem;text-align:center;border-bottom:1px solid var(--rule);}
.compare th:first-child,.compare td:first-child{text-align:left;padding-left:0;font-weight:500;font-size:clamp(1.05rem,1.4vw,1.3rem);}
.compare thead th{font-size:.78rem;font-weight:600;letter-spacing:.14em;text-transform:uppercase;font-stretch:112%;border-bottom:1.5px solid var(--ink);}
.compare thead th:first-child{font-size:.78rem;}
.compare .is-hl{background:var(--lilac);}
.compare tbody tr{transition:background-color .25s;}
.compare tbody tr:hover{background:var(--paper-2);}
.yes{color:var(--violet-deep);font-weight:700;font-size:1.2rem;}
.no{color:var(--fg-muted);opacity:.55;}
.compare-cards{display:none;gap:12px;}
.compare-card{padding:20px;border-radius:var(--r);box-shadow:inset 0 0 0 1.5px var(--ink);}
.compare-card.is-hl{background:var(--lilac);}
.compare-card h3{font-size:1.4rem;margin-bottom:.8rem;}
.compare-card li{display:flex;gap:.8rem;padding:.55rem 0;border-top:1px solid var(--rule);}
.compare-card li span{width:1.2rem;text-align:center;flex:none;}
@media(max-width:700px){.compare table{display:none;} .compare-cards{display:grid;}}

/* ---------- Contact ---------- */
.contact-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.1fr);gap:clamp(32px,6vw,112px);align-items:start;}
.contact-grid .lede{margin-bottom:clamp(28px,4vw,56px);}
.contact-rows{border-bottom:1px solid var(--rule);}
.contact-row{
  position:relative;isolation:isolate;display:grid;grid-template-columns:minmax(0,1fr) 3rem;align-items:center;gap:1rem;
  padding:clamp(18px,2vw,28px) 0;border-top:1px solid var(--rule);
}
.contact-row:first-child{border-top:1.5px solid var(--ink);}
.contact-row::before{content:'';position:absolute;inset:0 calc(var(--gut) * -.5);z-index:-1;background:var(--violet);border-radius:var(--r);transform:scaleY(0);transform-origin:bottom;transition:transform .45s var(--ease);}
.contact-row small{display:block;font-size:.78rem;font-weight:600;letter-spacing:.14em;text-transform:uppercase;font-stretch:112%;color:var(--fg-muted);transition:color .3s;}
.contact-row b{display:block;margin-top:.35rem;font-size:clamp(1.3rem,2.5vw,2.3rem);font-weight:600;letter-spacing:-.035em;line-height:1.1;overflow-wrap:anywhere;}
.contact-row svg{width:1.4rem;height:1.4rem;justify-self:end;transition:transform .45s var(--ease);}
.contact-row:hover{color:var(--paper);}
.contact-row:hover small{color:var(--paper);}
.contact-row:hover::before{transform:scaleY(1);}
.contact-row:hover svg{transform:translate(4px,-4px);}
.facts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:clamp(20px,2.4vw,36px);margin-top:clamp(28px,4vw,56px);}
.facts dt{font-size:.78rem;font-weight:600;letter-spacing:.14em;text-transform:uppercase;font-stretch:112%;color:var(--fg-muted);}
.facts dd{margin-top:.35rem;font-size:1.15rem;font-weight:600;}
.facts dd a{box-shadow:inset 0 -1.5px 0 var(--violet);transition:color .3s;}
.facts dd a:hover{color:var(--violet);}
.form-card{padding:clamp(24px,3.6vw,60px);border-radius:var(--r);}
.form-card h2{font-size:clamp(1.6rem,2.6vw,2.4rem);margin-bottom:clamp(24px,3vw,40px);}
.row2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 clamp(16px,2vw,28px);}
.field{display:grid;gap:.4rem;margin-bottom:clamp(20px,2.2vw,30px);}
.field label{font-size:.76rem;font-weight:600;letter-spacing:.14em;text-transform:uppercase;font-stretch:112%;color:var(--fg-muted);}
.field input,.field textarea{
  width:100%;background:transparent;border:0;border-bottom:1.5px solid var(--rule);border-radius:0;outline:0;
  padding:.55rem 0 .7rem;font-size:clamp(1.05rem,1.4vw,1.3rem);transition:border-color .3s;
}
.field textarea{min-height:120px;resize:vertical;}
.field input::placeholder,.field textarea::placeholder{color:var(--fg-muted);opacity:.6;}
.field input:focus,.field textarea:focus{border-bottom-color:var(--accent);}
.consent{display:grid;grid-template-columns:20px minmax(0,1fr);gap:.8rem;align-items:start;margin-bottom:1.5rem;font-size:.92rem;line-height:1.45;color:var(--fg-muted);}
.consent input{width:20px;height:20px;margin-top:.1em;accent-color:var(--lilac);}
.form-note{margin-top:1rem;font-size:.86rem;color:var(--fg-muted);text-align:center;}
.form-msg{display:flex;gap:.6rem;align-items:flex-start;margin-top:1rem;padding:.9rem 1rem;border-radius:var(--r);font-size:.95rem;line-height:1.4;}
.form-msg[hidden]{display:none;}
.form-msg svg{width:1.2rem;height:1.2rem;flex:none;margin-top:.1em;}
.form-msg--ok{background:var(--lilac);color:var(--ink);}
.form-msg--err{box-shadow:inset 0 0 0 1.5px var(--lilac);}
.form-msg a{text-decoration:underline;}
.hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden;}
@media(max-width:900px){.contact-grid{grid-template-columns:1fr;}}
@media(max-width:520px){.row2{grid-template-columns:1fr;}}

/* ---------- About ---------- */
/* who we are: the brand mark tells the story. Its two links are thinking and
   making; script.js slides them together on scroll and locks them (.is-locked). */
.who-title{max-width:17ch;}
.lock{
  display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.1fr) minmax(0,1fr);grid-template-areas:"l mark r" "foot foot foot";
  align-items:center;gap:clamp(28px,3.4vw,56px) clamp(16px,2.4vw,40px);
  padding:clamp(24px,3.6vw,56px);border-radius:var(--r);
}
.lock-side{grid-area:l;display:grid;gap:clamp(14px,1.6vw,22px);transition:opacity .45s ease;}
.lock-side--r{grid-area:r;text-align:right;}
.lock-k{display:flex;align-items:baseline;gap:.8em;font-size:.8125rem;font-weight:600;letter-spacing:.14em;text-transform:uppercase;font-stretch:112%;color:var(--fg-muted);}
.lock-k b{font-weight:600;color:var(--lilac);}
.lock-side--r .lock-k{justify-content:flex-end;}
.lock-side ul{border-bottom:1px solid var(--rule);}
.lock-side li{padding:.5em 0;border-top:1px solid var(--rule);font-size:clamp(1.15rem,1.95vw,1.9rem);font-weight:600;letter-spacing:-.035em;line-height:1.1;}
.lock-mark{grid-area:mark;justify-self:center;width:min(100%,400px);height:auto;overflow:visible;}
.lock-mark .lk{transition:opacity .45s ease;}
.lk-core{transform-box:fill-box;transform-origin:center;transition:transform .7s var(--drop);}
.js .lock:not(.is-locked) .lk-core{transform:scale(0) rotate(-90deg);}
.lock.focus-l .lk-r,.lock.focus-r .lk-l{opacity:.16;}
.lock.focus-l .lock-side--r,.lock.focus-r .lock-side--l{opacity:.32;}
.lock-foot{grid-area:foot;display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,1fr);gap:14px clamp(24px,5vw,96px);align-items:end;padding-top:clamp(22px,2.6vw,36px);border-top:1px solid var(--rule);}
.lock-title{font-size:clamp(1.6rem,3.1vw,3rem);font-weight:600;letter-spacing:-.042em;line-height:1;text-wrap:balance;}
.lock-title em{font-style:normal;color:var(--em);}
.lock-text{color:var(--fg-muted);max-width:46ch;line-height:1.5;}
@media(max-width:900px){
  .lock{grid-template-columns:repeat(2,minmax(0,1fr));grid-template-areas:"mark mark" "l r" "foot foot";}
  .lock-mark{width:min(62%,300px);}
  .lock-foot{grid-template-columns:1fr;}
}
@media(max-width:520px){.lock-side li{font-size:1.05rem;}}
.block-gap{margin-top:clamp(64px,9vw,144px);}
.why-lead{display:grid;gap:clamp(18px,2vw,28px);justify-items:start;margin-bottom:clamp(32px,4.5vw,64px);}
.why-lead .statement{max-width:22ch;}
.tags{display:flex;flex-wrap:wrap;gap:8px;margin-top:clamp(32px,5vw,72px);}
.tags span{padding:.55em .9em;border-radius:var(--r);font-size:clamp(1.1rem,2vw,1.9rem);font-weight:600;letter-spacing:-.03em;line-height:1.1;box-shadow:inset 0 0 0 1.5px var(--fg);}
.tags span:nth-child(2){background:var(--lilac);color:var(--ink);box-shadow:none;}
.tags span:nth-child(3){background:var(--violet);color:var(--paper);box-shadow:none;}

/* values — flip cards */
.values{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(12px,1.6vw,24px);}
.flip{position:relative;perspective:1400px;aspect-ratio:4 / 3;min-height:230px;}
.flip input{position:absolute;opacity:0;pointer-events:none;}
.flip-in{position:relative;display:block;width:100%;height:100%;transform-style:preserve-3d;transition:transform .85s var(--ease);cursor:pointer;}
.flip-face{position:absolute;inset:0;border-radius:var(--r);padding:clamp(20px,2.4vw,38px);display:flex;flex-direction:column;justify-content:space-between;backface-visibility:hidden;-webkit-backface-visibility:hidden;}
.flip-front{background:var(--paper);box-shadow:inset 0 0 0 1.5px var(--ink);}
.flip-back{background:var(--violet);color:var(--paper);transform:rotateY(180deg);justify-content:flex-end;gap:.8rem;}
.flip-top{display:flex;justify-content:space-between;align-items:flex-start;}
.flip-ico{width:3.25rem;height:3.25rem;border-radius:var(--r);display:grid;place-items:center;background:var(--ink);color:var(--paper);}
.flip-ico svg{width:1.4rem;height:1.4rem;}
.flip-idx{font-size:.9rem;font-weight:600;color:var(--fg-muted);}
.flip-title{display:block;font-size:clamp(1.6rem,2.7vw,2.6rem);font-weight:700;letter-spacing:-.04em;line-height:1;}
.flip-hint{display:block;margin-top:.5rem;font-size:.9rem;color:var(--fg-muted);}
.flip-kicker{display:block;font-size:.78rem;font-weight:600;letter-spacing:.14em;text-transform:uppercase;font-stretch:112%;}
.flip-text{display:block;font-size:clamp(1.15rem,1.7vw,1.6rem);font-weight:500;line-height:1.3;letter-spacing:-.02em;}
@media(hover:hover){.flip:hover .flip-in,.flip input:focus-visible + .flip-in{transform:rotateY(180deg);}}
@media(hover:none){.flip input:checked + .flip-in{transform:rotateY(180deg);}}
@media(max-width:1000px){.values{grid-template-columns:repeat(2,minmax(0,1fr));}}
@media(max-width:600px){.values{grid-template-columns:1fr;} .flip{aspect-ratio:auto;height:240px;}}

/* team */
.team{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:clamp(14px,1.8vw,28px);}
.member-photo{position:relative;isolation:isolate;display:block;width:100%;aspect-ratio:3 / 4;border-radius:var(--r);overflow:hidden;background:var(--lilac);container-type:inline-size;}
.member-photo::before{content:'';position:absolute;inset:0;z-index:-1;background:var(--violet);transform:translateY(101%);transition:transform .6s var(--ease);}
.member-photo img{position:relative;z-index:1;width:100%;height:100%;object-fit:cover;object-position:top center;transform-origin:50% 100%;transition:transform .9s var(--ease);}
.member-view{position:absolute;z-index:2;left:12px;bottom:12px;padding:.6em .8em;border-radius:4px;background:var(--paper);color:var(--ink);font-size:.78rem;font-weight:600;letter-spacing:.1em;text-transform:uppercase;line-height:1;transform:translateY(200%);transition:transform .5s var(--drop);}
.member:hover .member-photo::before,.member-photo:focus-visible::before,.member-photo.is-on::before{transform:none;}
/* the photo steps back, bottom-anchored, to open a masthead band above the head */
.member:hover .member-photo img,.member-photo:focus-visible img,.member-photo.is-on img{transform:scale(.85);}
.member:hover .member-view,.member-photo:focus-visible .member-view{transform:none;}
/* the role as a cover masthead behind the cut-out: a small kicker, then the
   title in heavy condensed caps fitted to the card (script.js measures it
   into --fit). Letters rise out of a slot; the head overlaps their foot. */
.member-word{
  position:absolute;left:6%;right:6%;top:5.5%;z-index:0;display:grid;justify-items:center;gap:.5em;pointer-events:none;text-align:center;
}
.mw-k{font-size:clamp(.66rem,3.6cqw,.82rem);font-weight:600;letter-spacing:.24em;text-transform:uppercase;font-stretch:112%;line-height:1;color:var(--lilac);opacity:0;transform:translateY(6px);transition:opacity .3s ease,transform .5s var(--ease);}
.mw-w{
  display:flex;overflow:hidden;padding-top:.04em;margin-bottom:-.06em;
  font-size:24cqw;font-size:min(calc(90cqw / var(--fit,4)),27cqw);
  font-weight:800;font-stretch:62%;text-transform:uppercase;letter-spacing:-.005em;line-height:.84;white-space:nowrap;color:var(--paper);
}
.mw-l{display:block;transform:translateY(105%);transition:transform .45s var(--ease);}
.member:hover .mw-l,.member-photo:focus-visible .mw-l,.member-photo.is-on .mw-l{transform:none;transition-duration:.85s;transition-delay:calc(var(--i) * 40ms + 160ms);}
.member:hover .mw-k,.member-photo:focus-visible .mw-k,.member-photo.is-on .mw-k{opacity:1;transform:none;transition-delay:.12s;}
.member h3{margin-top:1.1rem;font-size:clamp(1.3rem,2vw,1.9rem);letter-spacing:-.035em;}
.member-role{display:block;margin-top:.35rem;color:var(--fg-muted);}
.member-social{display:flex;gap:6px;margin-top:1rem;}
.member-social a{width:40px;height:40px;}
@media(max-width:1000px){.team{grid-template-columns:repeat(2,minmax(0,1fr));}}
@media(max-width:420px){.team{grid-template-columns:1fr;}}

/* team modal */
.modal{position:fixed;inset:0;z-index:400;display:grid;place-items:center;padding:20px;visibility:hidden;opacity:0;transition:opacity .3s ease,visibility 0s .3s;}
.modal.open{visibility:visible;opacity:1;transition:opacity .3s ease,visibility 0s;}
.modal-overlay{position:absolute;inset:0;background:rgba(21,19,27,.78);}
.modal-card{position:relative;display:grid;grid-template-columns:minmax(0,.82fr) minmax(0,1fr);width:min(840px,100%);max-height:calc(100dvh - 40px);overflow:auto;border-radius:8px;background:var(--paper);transform:translateY(28px);transition:transform .55s var(--ease);}
.modal.open .modal-card{transform:none;}
.modal-photo{background:var(--lilac);min-height:280px;}
.modal-photo img{width:100%;height:100%;object-fit:cover;object-position:top center;}
.modal-body{display:flex;flex-direction:column;justify-content:flex-end;gap:.6rem;padding:clamp(24px,3.2vw,48px);}
.modal-body h3{font-size:clamp(1.8rem,3.2vw,3rem);letter-spacing:-.04em;}
.modal-role{font-size:.78rem;font-weight:600;letter-spacing:.14em;text-transform:uppercase;font-stretch:112%;color:var(--violet-deep);}
.modal-bio{margin-top:.6rem;color:var(--fg-muted);font-size:1.08rem;line-height:1.5;}
.modal-close{position:absolute;top:12px;right:12px;z-index:2;width:44px;height:44px;border-radius:var(--r);display:grid;place-items:center;background:var(--ink);color:var(--paper);transition:transform .4s var(--ease),background-color .3s;}
.modal-close svg{width:20px;height:20px;}
.modal-close:hover{background:var(--violet);transform:rotate(90deg);}
@media(max-width:640px){.modal-card{grid-template-columns:1fr;} .modal-photo{aspect-ratio:4 / 3;min-height:0;}}

/* ---------- Legal ---------- */
.legal{max-width:820px;}
.legal .updated{color:var(--fg-muted);margin-bottom:clamp(28px,4vw,56px);}
.legal h2{font-size:clamp(1.5rem,2.4vw,2.1rem);letter-spacing:-.03em;margin:clamp(32px,4vw,56px) 0 .9rem;padding-top:clamp(20px,2.4vw,32px);border-top:1px solid var(--rule);}
.legal p,.legal li{color:var(--fg-muted);font-size:1.08rem;line-height:1.7;}
.legal ul{display:grid;gap:.5rem;margin-top:.6rem;}
.legal li{position:relative;padding-left:1.6rem;}
.legal li::before{content:'';position:absolute;left:0;top:.62em;width:.9rem;height:.42rem;border-radius:2px;background:var(--violet);}
.legal a{color:var(--ink);box-shadow:inset 0 -1.5px 0 var(--violet);}
.legal a:hover{color:var(--violet);}

/* ---------- Reduced motion ---------- */
@media (prefers-reduced-motion: reduce){
  html{scroll-behavior:auto;}
  *,*::before,*::after{animation-duration:.001ms !important;animation-iteration-count:1 !important;transition-duration:.001ms !important;transition-delay:0ms !important;}
  .badge-ring{animation:none !important;}
}
