:root{--bone: #f4f2ed;--bone-2: #eceae3;--paper: #fbfaf7;--ink: #151513;--ink-2: #2b2a27;--graphite: #6b6a64;--mist: #6e6c66;--rule: rgba(21, 21, 19, .12);--rule-soft: rgba(21, 21, 19, .07);--signal: #1f3be0;--signal-soft: rgba(31, 59, 224, .1);--hue-amber: #e0962e;--hue-teal: #1aa393;--hue-violet: #7a5af5;--hue-coral: #ef6a4d;--font-display: "Urbanist", "Helvetica Neue", Arial, sans-serif;--font-text: "IBM Plex Sans", "Helvetica Neue", Arial, sans-serif;--t-hero: clamp(2.75rem, 7.2vw, 6.5rem);--t-h2: clamp(2rem, 4.4vw, 3.9rem);--t-h3: clamp(1.3rem, 1.9vw, 1.75rem);--t-lede: clamp(1.06rem, 1.45vw, 1.35rem);--t-body: clamp(1rem, 1.05vw, 1.075rem);--t-small: .875rem;--t-micro: .78rem;--space-1: .5rem;--space-2: 1rem;--space-3: 1.5rem;--space-4: 2.5rem;--space-5: 4rem;--space-6: 6rem;--space-7: clamp(5rem, 11vw, 10rem);--gutter: clamp(1.25rem, 5vw, 5rem);--measure: 62ch;--max: 1440px;--ease: cubic-bezier(.22, 1, .36, 1);--dur: .45s}*,*:before,*:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}body{margin:0;background:var(--bone);color:var(--ink);font-family:var(--font-text);font-size:var(--t-body);line-height:1.6;font-synthesis-weight:none;-webkit-font-smoothing:antialiased;overflow-x:hidden}body.is-locked{overflow:hidden}img,svg,canvas{display:block;max-width:100%}h1,h2,h3{font-family:var(--font-display);font-weight:500;letter-spacing:-.028em;line-height:1.02;margin:0;text-wrap:balance}p{margin:0}ul,ol{margin:0;padding:0;list-style:none}a{color:inherit;text-decoration:none}button{font:inherit;color:inherit;cursor:pointer}:focus-visible{outline:2px solid var(--signal);outline-offset:3px;border-radius:2px}::selection{background:var(--ink);color:var(--bone)}.container{width:100%;max-width:var(--max);margin-inline:auto;padding-inline:var(--gutter)}.skip-link{position:fixed;top:.5rem;left:.5rem;z-index:200;padding:.6rem 1rem;background:var(--ink);color:var(--bone);transform:translateY(-160%);transition:transform .2s var(--ease)}.skip-link:focus-visible{transform:none}.placeholder{color:var(--mist);font-style:italic}.h2{font-size:var(--t-h2);max-width:18ch}.h2--light{color:var(--bone)}.lede{font-size:var(--t-lede);line-height:1.5;color:var(--ink-2);max-width:52ch}.lede--light{color:#f4f2eddb}.logo{width:auto;height:34px}.logo--dark{height:38px}.btn{--shimmer: rgba(255, 255, 255, .85);--fill: var(--ink);position:relative;display:inline-flex;align-items:center;justify-content:center;min-height:48px;padding:.85rem 1.6rem;border:1px solid transparent;background-clip:padding-box;border-radius:999px;background:var(--ink);color:var(--bone);font-family:var(--font-text);font-size:.95rem;font-weight:500;letter-spacing:-.005em;overflow:hidden;isolation:isolate;transition:color .3s var(--ease),border-color .3s var(--ease),background 0s linear 0s;will-change:transform}.btn--primary:before,.btn--light:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;z-index:-1;background:var(--signal);transform:translateY(101%);transition:transform .45s var(--ease)}.btn:hover:before,.btn:focus-visible:before{transform:translateY(0)}.btn:hover,.btn:focus-visible{color:#fff;background:var(--signal);transition:color .3s var(--ease),border-color .3s var(--ease),background 0s linear .45s}.btn--ghost{--shimmer: rgba(31, 59, 224, .75);--fill: var(--bone);background:transparent;color:var(--ink);border-color:var(--rule)}.btn--ghost:hover,.btn--ghost:focus-visible{color:var(--signal);background:transparent;border-color:var(--signal)}.btn--light:hover,.btn--light:focus-visible{color:#fff;background:var(--signal)}.btn--light{--shimmer: rgba(31, 59, 224, .9);--fill: var(--bone);background:var(--bone);color:var(--ink)}.btn--sm{min-height:42px;padding:.55rem 1.15rem;font-size:.875rem}.btn--lg{min-height:56px;padding:1rem 2rem;font-size:1.02rem}.btn:after{content:"";position:absolute;top:-120%;right:-120%;bottom:-120%;left:-120%;z-index:-3;background:conic-gradient(from 225deg,transparent 0deg,var(--shimmer) 90deg,transparent 90deg);animation:shimmer-spin 4.5s linear infinite;filter:blur(2px)}.btn__fill{position:absolute;top:1.5px;right:1.5px;bottom:1.5px;left:1.5px;z-index:-2;border-radius:inherit;background:var(--fill)}@keyframes shimmer-spin{to{transform:rotate(360deg)}}.link{display:inline-flex;align-items:center;gap:.5rem;font-size:.95rem;font-weight:500;color:var(--ink);text-decoration:underline;text-decoration-thickness:1px;text-decoration-color:transparent;text-underline-offset:.35em;transition:text-decoration-color .35s var(--ease),color .3s var(--ease)}.link:hover,.link:focus-visible{color:var(--signal);text-decoration-color:var(--signal)}.link__arrow{width:15px;height:15px;flex:none;fill:none;stroke:currentColor;stroke-width:1.4;stroke-linecap:round;stroke-linejoin:round;transition:transform .4s var(--ease)}.link:hover .link__arrow{transform:translate(4px)}.intro{position:fixed;top:0;right:0;bottom:0;left:0;z-index:300;display:grid;place-items:center;pointer-events:none}.intro__panel{position:absolute;top:0;right:0;bottom:0;left:0;background:var(--bone)}.intro__mark{position:relative;width:clamp(120px,18vw,200px);color:var(--ink)}.intro__mark svg{width:100%;height:auto;fill:none;stroke-linecap:round}.intro__ring{stroke-dasharray:164;stroke-dashoffset:164}.intro.is-done{display:none}.nav{position:fixed;top:0;left:0;right:0;z-index:120;transition:background .4s var(--ease),border-color .4s var(--ease),backdrop-filter .4s var(--ease);border-bottom:1px solid transparent}.nav.is-stuck{background:#f4f2edd1;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border-bottom-color:var(--rule-soft)}.nav__inner{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);width:100%;max-width:var(--max);margin-inline:auto;padding:1.15rem var(--gutter);transition:padding .4s var(--ease)}.nav.is-stuck .nav__inner{padding-block:.7rem}.nav__brand{flex:none}.nav__links{display:flex;gap:clamp(1rem,2vw,2rem);margin-left:auto;margin-right:clamp(1rem,2.5vw,2.5rem);font-size:.9rem;color:var(--ink-2)}.nav__links a{position:relative;padding:.35rem 0;overflow:hidden;display:inline-block;transition:color .3s var(--ease)}.nav__links a:after{content:"";position:absolute;left:0;bottom:0;width:100%;height:1px;background:currentColor;transform:scaleX(0);transform-origin:right;transition:transform .4s var(--ease)}.nav__links a:hover,.nav__links a:focus-visible{color:var(--ink)}.nav__links a:hover:after,.nav__links a:focus-visible:after{transform:scaleX(1);transform-origin:left}.nav__actions{display:flex;align-items:center;gap:var(--space-2)}.nav__toggle{display:none;width:44px;height:44px;padding:0;border:1px solid var(--rule);border-radius:50%;background:transparent;place-items:center;gap:5px}.nav__toggle span{display:block;width:16px;height:1.5px;background:var(--ink);transition:transform .35s var(--ease),opacity .2s}.nav__toggle[aria-expanded=true] span:first-child{transform:translateY(3.25px) rotate(45deg)}.nav__toggle[aria-expanded=true] span:last-child{transform:translateY(-3.25px) rotate(-45deg)}.menu{position:fixed;top:0;right:0;bottom:0;left:0;z-index:110;background:var(--bone);display:flex;flex-direction:column;justify-content:center;gap:var(--space-4);padding:6rem var(--gutter) 3rem}.menu[hidden]{display:none}.menu__links{display:flex;flex-direction:column;gap:.35rem}.menu__links a{font-family:var(--font-display);font-size:clamp(1.6rem,7vw,2.4rem);letter-spacing:-.03em;padding:.35rem 0;border-bottom:1px solid var(--rule-soft)}.menu__foot{display:flex;flex-direction:column;gap:.75rem}.hero{position:relative;min-height:100svh;display:flex;flex-direction:column;justify-content:flex-end;padding:8rem var(--gutter) 2rem;overflow:clip}.hero__scene{position:absolute;top:0;right:0;bottom:0;left:0;z-index:0;pointer-events:none;overflow:clip}.hero__stage{position:absolute;top:50%;right:clamp(-10rem,-4vw,0rem);width:clamp(620px,66vw,1180px);aspect-ratio:1;transform:translateY(-50%);mask-image:radial-gradient(closest-side,#000 50%,transparent 100%),linear-gradient(90deg,transparent 6%,rgba(0,0,0,.45) 30%,#000 50%);-webkit-mask-image:radial-gradient(closest-side,#000 50%,transparent 100%),linear-gradient(90deg,transparent 6%,rgba(0,0,0,.45) 30%,#000 50%);mask-composite:intersect;-webkit-mask-composite:source-in}.hero__canvas{width:100%;height:100%}@media(max-width:1024px){.hero__stage{right:-14vw;width:clamp(520px,78vw,760px);opacity:.85}}@media(max-width:760px){.hero__stage{top:20%;left:50%;right:auto;width:140vw;transform:translate(-50%,-50%);opacity:.9;mask-image:radial-gradient(closest-side,#000 50%,transparent 100%);-webkit-mask-image:radial-gradient(closest-side,#000 50%,transparent 100%)}}.hero__fallback{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;opacity:.62}.hero__scene.has-webgl .hero__fallback{display:none}.hero__content{position:relative;z-index:2;width:100%;max-width:var(--max);margin-inline:auto;padding-block:0 var(--space-5)}.hero__content>*{max-width:min(100%,640px)}.hero__title{font-size:var(--t-hero);font-weight:400;text-wrap:normal;max-width:15ch;margin-bottom:var(--space-4)}.hero__lede{font-size:var(--t-lede);line-height:1.5;color:var(--ink-2);max-width:46ch}.hero__actions{display:flex;flex-wrap:wrap;gap:.75rem;margin-top:var(--space-3)}.hero__foot{position:relative;z-index:2;width:100%;max-width:var(--max);margin-inline:auto;display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);padding-top:var(--space-3);border-top:1px solid var(--rule-soft)}.hero__steps{display:flex;flex-wrap:wrap;gap:clamp(.9rem,2.4vw,2.4rem);font-size:var(--t-micro);letter-spacing:.02em;color:var(--mist)}.hero__steps li{position:relative;transition:color .5s var(--ease)}.hero__steps li.is-on{color:var(--ink)}.hero__steps li+li:before{content:"";position:absolute;left:calc(-.5*clamp(.9rem,2.4vw,2.4rem));top:50%;width:3px;height:1px;background:currentColor;opacity:.5}.hero__scrollhint{width:1px;height:42px;background:var(--rule);overflow:hidden;flex:none}.hero__scrollhint span{display:block;width:100%;height:40%;background:var(--ink);animation:hint 2.4s var(--ease) infinite}@keyframes hint{0%{transform:translateY(-100%)}60%,to{transform:translateY(250%)}}.ribbon{padding-block:var(--space-5);border-block:1px solid var(--rule-soft);background:var(--paper)}.ribbon__head{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:.5rem 2rem;margin-bottom:var(--space-4)}.ribbon__title{font-family:var(--font-text);font-size:var(--t-small);font-weight:500;letter-spacing:0;color:var(--ink-2)}.marquee{overflow:hidden;-webkit-mask-image:linear-gradient(90deg,transparent,#000 12%,#000 88%,transparent);mask-image:linear-gradient(90deg,transparent,#000 12%,#000 88%,transparent)}.marquee__track{display:flex;width:max-content;animation:marquee 48s linear infinite;will-change:transform}.marquee:hover .marquee__track,.marquee.is-paused .marquee__track{animation-play-state:paused}@keyframes marquee{0%{transform:translateZ(0)}to{transform:translate3d(-50%,0,0)}}.marquee__list{display:flex;align-items:center;gap:clamp(2.5rem,6vw,6rem);padding-right:clamp(2.5rem,6vw,6rem)}.marquee__list li{font-family:var(--font-display);font-size:clamp(1.15rem,2.2vw,1.7rem);font-weight:500;letter-spacing:-.02em;color:var(--graphite);white-space:nowrap;transition:color .3s var(--ease)}.marquee:hover .marquee__list li{color:var(--ink)}.services{padding-block:var(--space-7) 0}.services__intro{display:grid;gap:var(--space-3);grid-template-columns:minmax(0,1.05fr) minmax(0,1fr);align-items:end;padding-bottom:var(--space-6)}.services__grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,.95fr);gap:clamp(2rem,6vw,6rem);align-items:start}.services__list{display:flex;flex-direction:column}.service{display:flex;flex-direction:column;justify-content:center;min-height:72vh;padding-block:clamp(2.5rem,5vw,4rem);border-top:1px solid var(--rule-soft);opacity:.5;transition:opacity .5s var(--ease)}.service:last-child{border-bottom:1px solid var(--rule-soft)}.service.is-active{opacity:1}.service__index{display:flex;align-items:center;gap:.9rem;margin-bottom:1rem}.service__count{font-family:var(--font-display);font-size:.8rem;color:var(--graphite)}.service__bar{display:block;width:56px;height:1px;background:var(--rule)}.service__bar i{display:block;height:100%;width:100%;background:var(--signal);transform:scaleX(0);transform-origin:left;transition:transform .6s var(--ease)}.service.is-active .service__bar i{transform:scaleX(1)}.service__title{font-size:var(--t-h3);margin-bottom:.5rem}.service__hook{font-size:1.05rem;color:var(--ink-2);margin-bottom:.6rem}.service__body{color:var(--graphite);max-width:46ch}.services__visual{position:sticky;top:16vh;aspect-ratio:1;border-radius:24px;background:var(--paper);border:1px solid var(--rule-soft);overflow:hidden}.services__canvas{width:100%;height:100%}.services__caption{position:absolute;left:1.5rem;bottom:1.25rem;font-size:var(--t-small);color:var(--graphite);transition:opacity .3s var(--ease)}.services__caption.is-swapping{opacity:0}.approach{background:var(--ink);color:var(--bone);padding-block:var(--space-7);margin-top:var(--space-7)}.approach__grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:clamp(2.5rem,7vw,7rem);align-items:start}.approach__copy{position:sticky;top:22vh;display:grid;gap:1.1rem}.approach__body{color:#f4f2ed9e;max-width:48ch}.assemble{position:relative;display:grid;gap:clamp(2rem,4.5vw,3.4rem);padding-left:2.5rem}.assemble__spine{position:absolute;left:5px;top:.6rem;bottom:.6rem;width:2px;height:auto}.assemble__spine-base{stroke:#f4f2ed24;stroke-width:2}.assemble__spine-draw{stroke:var(--signal);stroke-width:2;stroke-dasharray:100;stroke-dashoffset:100}.assemble__step{position:relative;opacity:.3;transform:translateY(12px)}.assemble__dot{position:absolute;left:-2.5rem;top:.55rem;width:12px;height:12px;border-radius:50%;border:2px solid rgba(244,242,237,.3);background:var(--ink);transition:border-color .4s var(--ease),background .4s var(--ease)}.assemble__step.is-on .assemble__dot{border-color:var(--signal);background:var(--signal)}.assemble__label{display:block;font-family:var(--font-display);font-size:clamp(1.15rem,2vw,1.5rem);letter-spacing:-.02em}.assemble__desc{display:block;color:#f4f2ed80;font-size:var(--t-small);max-width:40ch}.process{padding-block:var(--space-7);background:var(--paper);border-block:1px solid var(--rule-soft)}.process__head{display:grid;gap:var(--space-3);grid-template-columns:minmax(0,1.05fr) minmax(0,1fr);align-items:end;margin-bottom:var(--space-5)}.journey{display:grid;gap:var(--space-4)}.journey__svg{width:100%;height:clamp(160px,22vw,260px);color:var(--ink);overflow:visible}.journey__base{stroke:var(--rule);stroke-width:1.5;vector-effect:non-scaling-stroke}.journey__draw{stroke:var(--signal);stroke-width:2;vector-effect:non-scaling-stroke}.journey__halo{fill:var(--signal-soft);opacity:0}.journey__core{fill:var(--paper);stroke:var(--ink);stroke-width:1.5;vector-effect:non-scaling-stroke}.journey__node{--stage: var(--signal)}.journey__node.is-on .journey__core{fill:var(--stage);stroke:var(--stage)}.journey__node.is-on .journey__halo{fill:color-mix(in srgb,var(--stage) 14%,transparent)}.journey__node.is-on .journey__halo{opacity:1}.stages{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:clamp(1.25rem,3vw,2.5rem)}.stage{padding-top:1.25rem;border-top:1px solid var(--rule);opacity:.4;transition:opacity .5s var(--ease),border-color .5s var(--ease)}.stage{--stage: var(--signal)}.stage.is-on{opacity:1;border-top-color:var(--stage)}.stage.is-on .stage__num{color:var(--stage)}.stage__num{display:block;font-family:var(--font-display);font-size:var(--t-micro);color:var(--graphite);margin-bottom:.6rem}.stage__title{font-size:1.25rem;margin-bottom:.4rem}.stage__body{font-size:var(--t-small);color:var(--graphite)}.cta{position:relative;background:var(--ink);color:var(--bone);padding-block:var(--space-7);overflow:clip}.cta__field{position:absolute;top:0;right:0;bottom:0;left:0;opacity:.55}.cta__field canvas{width:100%;height:100%}.cta__inner{position:relative;z-index:1;display:grid;gap:var(--space-3);justify-items:start}.cta__title{font-size:var(--t-h2);max-width:17ch}.cta__body{font-size:var(--t-lede);line-height:1.5;color:#f4f2edb8;max-width:48ch}.cta__actions{display:grid;gap:.85rem;justify-items:start;margin-top:var(--space-2)}.cta__reassure{font-size:var(--t-small);color:#f4f2ed80}.enquiry{padding-block:var(--space-7)}.enquiry__grid{display:grid;grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr);gap:clamp(2.5rem,7vw,6rem);align-items:start}.enquiry__copy{position:sticky;top:20vh;display:grid;gap:1.1rem}.form{display:grid;gap:var(--space-3)}.form__hp{position:absolute;left:-9999px}.form__row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-3)}.field{display:grid;gap:.4rem}.field label{font-size:var(--t-small);color:var(--ink-2)}.field label em{font-style:normal;color:var(--mist)}.field input,.field textarea,.select select{width:100%;min-height:48px;padding:.75rem 0;border:0;border-bottom:1px solid var(--rule);border-radius:0;background:transparent;color:var(--ink);font-family:var(--font-text);font-size:1rem;transition:border-color .3s var(--ease)}.field textarea{resize:vertical;line-height:1.6}.field input:focus,.field textarea:focus,.select select:focus{outline:none;border-bottom-color:var(--signal)}.field input:focus-visible,.field textarea:focus-visible,.select select:focus-visible{outline:2px solid var(--signal);outline-offset:4px}.field input::placeholder,.field textarea::placeholder{color:var(--mist)}.select{position:relative}.select select{-webkit-appearance:none;-moz-appearance:none;appearance:none;padding-right:2rem;cursor:pointer}.select:after{content:"";position:absolute;right:4px;top:50%;width:8px;height:8px;border-right:1.5px solid var(--graphite);border-bottom:1.5px solid var(--graphite);transform:translateY(-70%) rotate(45deg);pointer-events:none}.field__error{font-size:var(--t-micro);color:#b3261e;min-height:1em}.field.is-invalid input,.field.is-invalid textarea,.field.is-invalid select{border-bottom-color:#b3261e}.form__foot{display:flex;flex-wrap:wrap;align-items:center;gap:1rem;padding-top:var(--space-2)}.form__status{font-size:var(--t-small);color:var(--graphite)}.form__status.is-error{color:#b3261e}.form__status.is-ok{color:var(--signal)}.footer{padding-block:var(--space-5) var(--space-3);border-top:1px solid var(--rule-soft);background:var(--paper)}.footer__grid{display:grid;grid-template-columns:minmax(0,1.6fr) repeat(2,minmax(0,1fr));gap:var(--space-4);padding-bottom:var(--space-5)}.footer__statement{margin-top:1.25rem;font-family:var(--font-display);font-size:1.15rem;letter-spacing:-.02em;color:var(--ink-2);max-width:22ch}.footer__col{display:flex;flex-direction:column;align-items:start;gap:.55rem;font-size:var(--t-small)}.footer__col h3{font-family:var(--font-text);font-size:var(--t-micro);font-weight:500;letter-spacing:.02em;color:var(--mist);margin-bottom:.35rem}.footer__col a{color:var(--ink-2);transition:color .25s var(--ease)}.footer__col a:hover,.footer__col a:focus-visible{color:var(--signal)}.footer__base{display:flex;flex-wrap:wrap;justify-content:space-between;gap:1rem;padding-top:var(--space-3);border-top:1px solid var(--rule-soft);font-size:var(--t-micro);color:var(--mist)}.footer__top:hover{color:var(--ink)}@media(max-width:1024px){.nav__links{display:none}.nav__toggle{display:grid}.services__grid,.approach__grid,.enquiry__grid,.services__intro,.process__head{grid-template-columns:minmax(0,1fr)}.service{opacity:1;min-height:0}.services__visual{position:relative;top:auto;order:-1;max-width:460px;margin-inline:auto;width:100%}.approach__copy,.enquiry__copy{position:relative;top:auto}.stages,.footer__grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:720px){.hero{padding-top:34vh;min-height:100svh}.nav__actions .btn{display:none}.hero__title{max-width:100%}.hero__foot{flex-direction:column;align-items:flex-start}.hero__scrollhint{display:none}.form__row,.stages{grid-template-columns:minmax(0,1fr)}.services__visual{aspect-ratio:4 / 3}.footer__grid{grid-template-columns:minmax(0,1fr);gap:var(--space-3)}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}.intro{display:none}.service,.stage,.assemble__step{opacity:1;transform:none}.assemble__spine-draw,.journey__draw{stroke-dashoffset:0}.hero__scrollhint span,.marquee__track{animation:none}}
