/* style.css */
@charset "UTF-8";
:root{--bg:#fafbff;--white:#fff;--ink:#172033;--muted:#626c7c;--accent:#3155d9;--accent-soft:#eef2ff;--line:#dfe4ed;--gutter:clamp(24px,5.2vw,96px);--on-ink:#fff;--on-accent:#fff;--selection-bg:#cfdaff;--selection-ink:#122960;--nav-ink:#4d5667;--accent-hover:#2746bd;--ink-hover:#2b3a55;--outline:#cdd4e1;--label:#697385;--secondary-ink:#586477;--panel:#f2f5fb;--identity-line:#c3d0ec;--identity-bg:#eef2ff;--identity-centre:#fff;--identity-edge:#dce7ff;--grid-line:#3756ac08;--logo-ink:#1b2c53;--logo-start:#263fbc;--logo-end:#638bff;--logo-outline:#7894d3;--guide:#7493d4;--project-bg:#e7ebf4;--cvt-frame:#e9e7f1;--fit-frame:#e5efec;--dot:#cbd1db;--featured-line:#9fb2ee;--featured-bg:#f4f6ff;--contact-bg:#eaf0ff;--contact-line:#dbe3f5;--underline:#3155d95c;--shadow-accent:#3155d922;--shadow-lift:#1d2a4a17;--shadow-low:#19294605;--logo-shadow:#3557b516;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:100%;color-scheme:light}
:root[data-theme="dark"]{--bg:#101114;--white:#17191e;--ink:#f6f6f8;--muted:#b3b9c5;--accent:#a0b5ff;--accent-soft:#242c42;--line:#343943;--on-ink:#111318;--on-accent:#121a32;--selection-bg:#334987;--selection-ink:#fff;--nav-ink:#cbd1dc;--accent-hover:#bdcbff;--ink-hover:#dfe5f0;--outline:#5a6474;--label:#aab4c5;--secondary-ink:#c4ccdb;--panel:#191c22;--identity-line:#3a4660;--identity-bg:#1b2332;--identity-centre:#171c27;--identity-edge:#26334c;--grid-line:#b4c6ff0a;--logo-ink:#edf2ff;--logo-start:#a1b7ff;--logo-end:#d5e1ff;--logo-outline:#9daed3;--guide:#8499c8;--project-bg:#20252e;--cvt-frame:#25212e;--fit-frame:#1b2b28;--dot:#606a7b;--featured-line:#626f9e;--featured-bg:#1c2234;--contact-bg:#1c2333;--contact-line:#343e58;--underline:#a0b5ff70;--shadow-accent:#00000030;--shadow-lift:#00000040;--shadow-low:#00000020;--logo-shadow:#00000030;color-scheme:dark}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:100px}body{margin:0;background:var(--bg);color:var(--ink);-webkit-font-smoothing:antialiased;overflow-x:clip}a{color:inherit;text-decoration:none}button{font:inherit;cursor:pointer;color:inherit}a,button{touch-action:manipulation;-webkit-tap-highlight-color:transparent}a:focus-visible,button:focus-visible{outline:2px solid var(--accent);outline-offset:6px}h1,h2,h3,p{margin:0}h1,h2,h3,.hero-title{font-weight:500}p{line-height:1.65}h2{font-size:clamp(2.5rem,4.3vw,4.75rem);line-height:1.12;letter-spacing:-.045em}h2 em,h1 em,.hero-title em{color:var(--accent);font-style:normal}img,svg{display:block}::selection{background:var(--selection-bg);color:var(--selection-ink)}.shell{padding-inline:var(--gutter)}.section-space{padding-block:110px}.skip-link{position:fixed;top:-80px;left:20px;background:var(--ink);color:var(--on-ink);padding:18px;z-index:100}.skip-link:focus{top:18px}.reading-progress{height:2px;position:fixed;inset:0 0 auto;z-index:55;pointer-events:none}.reading-progress span{display:block;width:100%;height:100%;background:var(--accent);transform:scaleX(0);transform-origin:left}.site-header{display:flex;align-items:center;justify-content:space-between;gap:28px;min-height:106px;border-bottom:1px solid var(--line);position:relative;z-index:20}.wordmark{display:inline-flex;align-items:center;gap:9px;font-size:1.6rem;font-weight:750;letter-spacing:-.065em;white-space:nowrap;line-height:1.2}.wordmark-light{font-weight:400}.wordmark i{font-style:normal;color:var(--accent)}.nav-mark{width:40px;height:38px;overflow:visible;fill:none;stroke:var(--accent);stroke-width:13;stroke-linecap:square;stroke-linejoin:round}.site-header nav{display:flex;gap:33px;align-items:center;font-size:.875rem}.site-header nav a{position:relative;padding:13px 0;color:var(--nav-ink)}.site-header nav a:after{content:"";position:absolute;inset:auto 0 4px;height:1px;transform:scaleX(0);transform-origin:left;background:var(--accent);transition:transform .3s}.site-header nav a:hover{color:var(--accent)}.site-header nav a:hover:after{transform:scaleX(1)}.button{display:inline-flex;align-items:center;justify-content:space-between;gap:32px;font-size:.875rem;font-weight:500;line-height:1.25;min-height:56px;padding:18px 24px;border-radius:6px;border:1px solid transparent;transition:background .2s,transform .2s,box-shadow .2s}.button>span{font-size:1.2rem;line-height:1;transition:transform .2s}.button:hover>span{transform:translate(2px,-2px)}.button-blue{background:var(--accent);color:var(--on-accent);box-shadow:0 5px 15px var(--shadow-accent)}.button-blue:hover{background:var(--accent-hover);box-shadow:0 7px 18px var(--shadow-accent)}.button-dark{background:var(--ink);color:var(--on-ink)}.button-dark:hover{background:var(--ink-hover)}.button-outline{background:transparent;border-color:var(--outline);color:var(--ink)}.button-outline:hover{border-color:var(--accent);color:var(--accent);background:var(--accent-soft)}.button-small{min-height:46px;padding:13px 18px;gap:23px}.hero{display:grid;grid-template-columns:1.13fr 1fr;gap:6%;align-items:center;padding-block:88px 84px;min-height:740px;max-width:1920px;margin-inline:auto}.eyebrow{font-size:.75rem;font-weight:600;letter-spacing:.12em;line-height:1.65;color:var(--label);margin-bottom:26px}.hero .eyebrow{display:flex;align-items:center;gap:12px;font-size:.75rem;letter-spacing:.11em}.hero .eyebrow>span{width:24px;height:2px;background:var(--accent);display:block;flex:none}.hero .hero-title{font-size:clamp(3.2rem,5.4vw,6rem);line-height:1.04;letter-spacing:-.055em}.hero-description{font-size:1.0625rem;max-width:465px;color:var(--muted);margin-top:28px;line-height:1.7}.hero-actions{display:flex;gap:25px;align-items:center;margin-top:32px;flex-wrap:wrap}.quiet-link{font-size:.875rem;display:flex;align-items:center;gap:16px;min-height:44px}.quiet-link:hover{color:var(--accent)}.hero-price{font-size:.875rem;color:var(--muted);margin-top:29px}.hero-price strong{color:var(--ink);font-weight:500;margin-left:2px}.hero-identity{align-self:stretch;position:relative;min-height:500px;border:1px solid var(--identity-line);border-radius:16px;overflow:hidden;display:flex;flex-direction:column;justify-content:center;background:var(--identity-bg);isolation:isolate}.identity-background{position:absolute;inset:0;z-index:-1;background:radial-gradient(ellipse at 60% 37%,var(--identity-centre) 0%,var(--identity-bg) 54%,var(--identity-edge) 100%)}.identity-background:after{content:"";position:absolute;inset:0;background-image:linear-gradient(var(--grid-line) 1px,transparent 1px),linear-gradient(90deg,var(--grid-line) 1px,transparent 1px);background-size:52px 52px;mask-image:linear-gradient(to bottom,#000,transparent 85%)}.identity-logo{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:36px 30px 100px;transform-origin:center;will-change:transform}.hero-mark{width:75%;max-width:360px;overflow:visible;filter:drop-shadow(0 13px 16px var(--logo-shadow))}.identity-wordmark{font-size:clamp(1.8rem,3.6vw,3.5rem);font-weight:700;letter-spacing:-.07em;margin-top:-18px;color:var(--logo-ink);line-height:1.1}.identity-wordmark>span{font-weight:400}.identity-wordmark>i{font-style:normal;color:var(--accent)}.identity-bottom{position:absolute;bottom:25px;left:30px;right:30px;display:flex;justify-content:space-between;gap:15px;align-items:center;border-top:1px solid var(--identity-line);padding-top:21px;color:var(--label);font-size:.8125rem;line-height:1.5}.motion-ready .hero-copy{animation:content-enter .8s cubic-bezier(.2,.65,.2,1) both}.service-line{display:flex;justify-content:space-between;align-items:center;padding-block:27px;border-block:1px solid var(--line);font-size:.875rem;color:var(--muted);gap:30px}.service-line>div{display:flex;align-items:center;gap:25px;color:var(--secondary-ink)}.service-line i{display:block;width:3px;height:3px;border-radius:50%;background:var(--guide)}.section-heading{display:flex;justify-content:space-between;align-items:end;gap:40px;margin-bottom:47px}.section-heading .eyebrow{margin-bottom:21px}.section-heading>p{font-size:1rem;color:var(--muted);max-width:355px;padding-bottom:5px}.work{background:var(--white)}.projects{display:grid;grid-template-columns:1fr 1fr;gap:30px}.project{min-width:0}.project-screen{display:block;background:var(--project-bg);padding:20px 20px 0;border:1px solid var(--line);border-radius:11px;overflow:hidden;position:relative;transition:transform .4s ease,box-shadow .4s ease}.cvt-screen{background:var(--cvt-frame);border-color:var(--line)}.fit-screen{background:var(--fit-frame);border-color:var(--line)}.project-screen:hover{transform:translateY(-5px);box-shadow:0 14px 32px var(--shadow-lift)}.browser-bar{display:flex;align-items:center;justify-content:space-between;border-radius:6px 6px 0 0;background:var(--white);height:33px;padding:0 12px;color:var(--label);gap:10px;font-size:.75rem;box-shadow:0 -4px 20px var(--shadow-low)}.browser-bar>span:last-child{font-size:1rem}.window-dots{display:flex;gap:4px}.window-dots>i{height:4px;width:4px;display:block;background:var(--dot);border-radius:50%}.screenshot-viewport{background:#101414;overflow:hidden;border:1px solid var(--line);border-bottom:0}.screenshot-viewport img{width:100%;height:auto;display:block;aspect-ratio:1348/926;object-fit:contain;object-position:top}.project-description{display:flex;justify-content:space-between;align-items:center;gap:20px;padding-top:25px}.project-description h3{font-size:1.5rem;letter-spacing:-.025em;font-weight:500}.project-description p{font-size:.875rem;color:var(--muted);margin-top:7px}.project-description>a{font-size:.875rem;white-space:nowrap;display:flex;align-items:center;gap:16px;min-height:44px}.project-description>a:hover{color:var(--accent)}.project-description>a span{font-size:1.25rem}.approach{display:grid;grid-template-columns:1fr 1.12fr;gap:10%;background:var(--panel);border-block:1px solid var(--line)}.approach-heading .eyebrow{margin-bottom:25px}.approach-heading h2{font-size:clamp(2.4rem,3.8vw,4.2rem)}.approach-heading>p:last-child{max-width:365px;margin-top:28px;color:var(--muted);font-size:1rem}.steps{padding-top:1px}.step{display:grid;grid-template-columns:37px 1fr;gap:25px;padding:26px 0;border-top:1px solid var(--line)}.step:first-child{padding-top:0;border-top:0}.step:last-child{padding-bottom:0}.step-index{color:var(--accent);font-size:.875rem;padding-top:5px;font-variant-numeric:tabular-nums}.step h3{font-size:1.4rem;letter-spacing:-.03em;line-height:1.3;margin-bottom:12px}.step p{font-size:1rem;line-height:1.65;color:var(--muted);max-width:490px}.pricing{background:var(--white)}.price-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:22px}.price-card{border:1px solid var(--line);border-radius:9px;padding:34px 29px 28px;display:flex;flex-direction:column;background:var(--white);min-width:0}.price-card.featured{border-color:var(--featured-line);background:var(--featured-bg);box-shadow:0 5px 22px var(--shadow-low);position:relative}.featured:before{content:"";position:absolute;inset:-1px 20px auto;height:3px;border-radius:0 0 3px 3px;background:var(--accent)}.plan-label{font-size:.75rem;letter-spacing:.12em;color:var(--label);font-weight:600;margin-bottom:30px}.featured .plan-label{color:var(--accent)}.price-card h3{font-size:1.55rem;letter-spacing:-.035em;line-height:1.3;min-height:65px;max-width:280px}.plan-description{font-size:.9375rem;color:var(--muted);margin-top:16px;min-height:90px}.price{font-size:3.2rem;font-weight:500;letter-spacing:-.05em;line-height:1.2;margin-top:25px;white-space:nowrap;min-height:62px}.price-custom{font-size:2.25rem;display:flex;align-items:center;letter-spacing:-.04em}.price-card ul{list-style:none;padding:26px 0 29px;margin:25px 0 0;border-top:1px solid var(--line);flex:1}.price-card li{font-size:.875rem;line-height:1.6;padding-block:7px;display:flex;gap:10px;align-items:start;color:var(--secondary-ink)}.price-card li:before{content:"✓";color:var(--accent);flex:none}.price-card .button{width:100%;padding:18px;gap:12px}.contact{background:var(--contact-bg);border-block:1px solid var(--contact-line);display:grid;grid-template-columns:1fr 1fr;gap:10%;padding-block:85px}.contact h2{font-size:clamp(2.5rem,4.7vw,5rem)}.contact .eyebrow{margin-bottom:22px}.contact-details{align-self:center;max-width:430px;justify-self:end}.contact-details>p{font-size:1.0625rem;color:var(--secondary-ink);margin-bottom:27px}.contact-email{font-size:.875rem;color:var(--secondary-ink);display:block;margin-top:19px;width:max-content}.contact-email:hover{color:var(--accent)}.site-footer{display:flex;align-items:center;justify-content:space-between;gap:25px;min-height:124px;padding-block:28px}.footer-wordmark{gap:0;font-size:1.4rem}.site-footer>span{font-size:.8125rem;color:var(--label)}.footer-links{display:flex;align-items:center;gap:25px;font-size:.8125rem;color:var(--label)}.motion-ready .reveal{opacity:0;transform:translateY(24px);transition:opacity .7s ease,transform .7s cubic-bezier(.2,.65,.2,1)}.motion-ready .reveal.visible{opacity:1;transform:none}.motion-ready .project:nth-child(2){transition-delay:.08s}.motion-ready .price-card:nth-child(2){transition-delay:.08s}.motion-ready .price-card:nth-child(3){transition-delay:.16s}
@keyframes content-enter{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:none}}
@media(min-width:1700px){.hero{padding-block:115px;min-height:870px}.hero-identity{min-height:610px}.hero-description{font-size:1.1875rem;max-width:530px}.hero-mark{max-width:400px}.identity-wordmark{font-size:3.6rem}.hero .hero-title{font-size:6.5rem}}
@media(max-width:1150px){.site-header nav{gap:23px}.site-header{gap:18px}.wordmark{font-size:1.45rem}.hero{gap:5%;min-height:665px;padding-block:70px}.hero-identity{min-height:490px}.hero .hero-title{font-size:5.6vw}.hero-actions{gap:20px}.hero .button{padding:17px 20px;gap:26px}.quiet-link{font-size:.8125rem;gap:10px}.service-line{font-size:.8125rem}.service-line>div{gap:18px}.section-space{padding-block:90px}.price-card{padding:29px 23px}.price-card h3{font-size:1.45rem}.price-card .button{font-size:.8125rem;padding:17px 15px}.price-custom{font-size:2rem}.plan-description{min-height:112px}.approach{gap:7%}.project-description>a{font-size:.8125rem;gap:9px}.project-description h3{font-size:1.35rem}.site-footer>span{display:none}.project-screen{padding:16px 16px 0}}
@media(max-width:900px){.site-header nav{display:none}.site-header{min-height:90px}.hero{grid-template-columns:1fr 1fr;gap:5%;padding-block:60px;min-height:615px}.hero .hero-title{font-size:5.4vw}.hero-description{font-size:1rem;line-height:1.6;margin-top:24px}.hero-identity{min-height:455px}.hero-actions{flex-direction:column;align-items:start;gap:10px;margin-top:25px}.hero-price{margin-top:20px;font-size:.8125rem}.hero .eyebrow{font-size:.75rem;letter-spacing:.055em;gap:9px}.hero .eyebrow>span{width:17px}.identity-logo{padding-inline:15px;padding-bottom:95px}.identity-wordmark{font-size:2rem}.identity-bottom{left:22px;right:22px;font-size:.75rem}.service-line{flex-direction:column;gap:15px;align-items:start}.service-line>div{gap:24px}.section-heading{align-items:start;flex-direction:column;gap:22px;margin-bottom:36px}.section-heading>p{max-width:100%}.projects{gap:24px}.project-screen{padding:11px 11px 0;border-radius:8px}.browser-bar{height:27px;padding:0 8px;font-size:.75rem}.project-description{align-items:start;flex-direction:column;gap:6px;padding-top:20px}.project-description>a{font-size:.875rem}.project-description h3{font-size:1.4rem}.approach{grid-template-columns:1fr;gap:45px}.approach-heading>p:last-child{max-width:480px;margin-top:24px}.step{grid-template-columns:35px 1fr}.step p{max-width:620px}.price-grid{grid-template-columns:1fr;gap:20px}.price-card{padding:31px}.price-card h3{max-width:100%;min-height:0;font-size:1.8rem}.plan-description{min-height:0;max-width:100%;font-size:1rem;margin-top:14px}.plan-label{margin-bottom:22px}.price{margin-top:24px;font-size:3.1rem;min-height:0}.price-custom{font-size:2.6rem}.price-card ul{margin-top:23px;padding-top:21px}.price-card li{font-size:1rem}.price-card .button{font-size:.875rem;padding:19px 22px}.contact{grid-template-columns:1fr 1fr;gap:6%}.contact-details>p{font-size:1rem}.contact-details .button{font-size:.8125rem;padding:17px 20px;gap:23px}.contact h2{font-size:4.7vw}.contact-email{font-size:.8125rem}}
@media(max-width:640px){:root{--gutter:24px}.site-header{min-height:84px;padding-block:18px;gap:14px}.wordmark{font-size:1.35rem;gap:5px}.nav-mark{width:30px;height:32px}.site-header .button-small{font-size:.75rem;min-height:43px;padding:12px 13px;gap:12px}.hero{grid-template-columns:1fr;gap:39px;padding-block:47px 43px;min-height:0}.hero .hero-title{font-size:clamp(2.65rem,8.7vw,4.5rem);line-height:1.08;letter-spacing:-.055em}.hero .eyebrow{margin-bottom:22px;font-size:.75rem;letter-spacing:.08em}.hero-description{font-size:1rem;max-width:450px;margin-top:23px;line-height:1.65}.hero-actions{flex-direction:row;align-items:center;gap:23px;margin-top:25px}.hero .button{padding:17px 19px;min-height:54px;font-size:.875rem;gap:22px}.quiet-link{font-size:.8125rem;gap:9px}.hero-price{font-size:.8125rem;margin-top:22px}.hero-identity{min-height:0;height:330px;border-radius:12px}.identity-logo{padding:3px 10px 58px}.hero-mark{width:215px;max-width:65%;height:auto}.identity-wordmark{font-size:2rem;margin-top:-13px}.identity-bottom{bottom:19px;left:22px;right:22px;padding-top:15px;font-size:.75rem}.identity-bottom>span br{display:none}.identity-bottom>span{max-width:225px}.identity-background:after{background-size:38px 38px}.service-line{padding-block:23px;gap:14px;font-size:.8125rem}.service-line>p{line-height:1.5;max-width:300px}.service-line>div{gap:21px;font-size:.8125rem}.section-space{padding-block:65px}.eyebrow{margin-bottom:22px}.section-heading{margin-bottom:31px;gap:20px}.section-heading .eyebrow{margin-bottom:20px}.section-heading h2{font-size:2.4rem;letter-spacing:-.045em}.section-heading>p{font-size:.9375rem;line-height:1.6}.projects{grid-template-columns:1fr;gap:32px}.project-screen{padding:13px 13px 0;border-radius:8px}.browser-bar{height:29px;font-size:.75rem;padding:0 10px}.project-description{flex-direction:row;justify-content:space-between;align-items:center;gap:15px;padding-top:18px}.project-description h3{font-size:1.3rem}.project-description p{font-size:.8125rem;line-height:1.45;margin-top:6px}.project-description>a{font-size:.8125rem;gap:8px}.project-description>a span{font-size:1.1rem}.approach{gap:35px}.approach-heading .eyebrow{margin-bottom:20px}.approach-heading h2{font-size:2.4rem}.approach-heading>p:last-child{font-size:.9375rem;margin-top:22px}.step{grid-template-columns:24px 1fr;gap:18px;padding-block:25px}.step-index{font-size:.8125rem;padding-top:4px}.step h3{font-size:1.25rem;letter-spacing:-.025em;margin-bottom:12px}.step p{font-size:.9375rem;line-height:1.65}.price-card{padding:27px 24px}.price-card h3{font-size:1.6rem;line-height:1.3}.plan-description{font-size:.9375rem}.price{font-size:3rem;margin-top:25px}.price-custom{font-size:2.4rem}.plan-label{font-size:.75rem;margin-bottom:22px}.price-card li{font-size:.875rem;padding-block:7px}.price-card .button{padding:17px 18px;min-height:54px;font-size:.8125rem}.contact{padding-block:62px;grid-template-columns:1fr;gap:26px}.contact h2{font-size:2.5rem;line-height:1.13}.contact-details{max-width:100%;justify-self:stretch}.contact-details>p{font-size:.9375rem;margin-bottom:24px}.contact-details .button{min-height:54px;font-size:.875rem}.contact-email{font-size:.875rem}.site-footer{flex-wrap:wrap;padding-block:30px;gap:20px}.footer-wordmark{font-size:1.4rem}.footer-links{width:100%;justify-content:space-between;border-top:1px solid var(--line);padding-top:13px;font-size:.8125rem}.motion-ready .price-card:nth-child(n),.motion-ready .project:nth-child(n){transition-delay:0s}}
@media(max-width:370px){:root{--gutter:19px}.nav-mark{display:none}.wordmark{font-size:1.25rem}.site-header .button-small{font-size:.75rem;padding-inline:11px;gap:10px}.hero .hero-title{font-size:8.85vw}.hero-actions{gap:17px}.hero .button{font-size:.8125rem;padding-inline:17px;gap:16px}.quiet-link{font-size:.75rem;gap:6px}.hero .eyebrow{font-size:.75rem;letter-spacing:.025em}.project-description{align-items:start;flex-direction:column;gap:5px}.hero-identity{height:310px}.section-heading h2,.approach-heading h2{font-size:2.2rem}.identity-bottom>span{max-width:195px}}



/* The identity loops automatically. Scrolling animates the existing project,
   process and contact sections without changing the normal page flow. */


.scroll-project{perspective:1200px}
.motion-ready .scroll-project .project-screen{transform:translateY(calc(var(--project-lift,0px) + var(--hover-lift,0px))) rotateX(var(--project-rx,0deg)) rotateY(var(--project-ry,0deg)) scale(var(--project-scale,1));transform-origin:50% 65%;transition:box-shadow .3s ease;will-change:transform;backface-visibility:hidden}
.motion-ready .scroll-project .project-screen:hover{--hover-lift:-5px;box-shadow:0 22px 45px var(--shadow-lift)}
.motion-ready .scroll-project:focus-within .project-screen{transform:none}
.section-heading h2 em,.approach-heading h2 em{background-image:linear-gradient(var(--underline),var(--underline));background-size:var(--heading-width,0%) 2px;background-repeat:no-repeat;background-position:0 100%;padding-bottom:.07em;box-decoration-break:clone;-webkit-box-decoration-break:clone}
.steps{position:relative;isolation:isolate}
.motion-ready .steps:before,.motion-ready .steps:after{content:"";position:absolute;width:1px;left:var(--line-x,18px);top:var(--line-top,18px);height:var(--line-height,0px);z-index:-1;pointer-events:none}
.motion-ready .steps:before{background:var(--line)}
.motion-ready .steps:after{background:var(--accent);transform:scaleY(var(--process-progress,0));transform-origin:top;box-shadow:0 0 7px var(--shadow-accent)}
.step-index{width:36px;height:36px;border:1px solid var(--line);border-radius:50%;display:flex;align-items:center;justify-content:center;padding-top:0;background:var(--panel);transition:background .3s,color .3s,border-color .3s,box-shadow .3s}
.step.is-current .step-index{background:var(--accent);color:var(--on-accent);border-color:var(--accent);box-shadow:0 0 0 5px var(--accent-soft)}
.contact{position:relative;isolation:isolate;background:transparent;border-color:transparent}
.contact:before{content:"";position:absolute;inset:0;background:var(--contact-bg);border:1px solid var(--contact-line);z-index:-1;pointer-events:none}
.motion-ready .contact:before{transform:scaleX(var(--contact-scale,1));border-radius:var(--contact-radius,0px);will-change:transform,border-radius}
@media(max-width:640px){.step{grid-template-columns:32px 1fr;gap:15px}.step-index{width:32px;height:32px}.motion-ready .scroll-project .project-screen{transform-origin:center}.footer-links{justify-content:flex-end}}


/* Keep the brand visible throughout its repeating draw animation. */

.logo-gradient-start{stop-color:var(--logo-start)}
.logo-gradient-end{stop-color:var(--logo-end)}
.identity-wordmark{opacity:1;transform:none}
.header-actions{display:flex;align-items:center;gap:15px;flex:none}
.header-actions .button .header-cta-full,.header-actions .button .header-cta-short{font-size:inherit;line-height:inherit;transform:none}
.header-cta-short{display:none}
.theme-toggle{display:flex;align-items:center;justify-content:center;gap:8px;min-height:44px;min-width:86px;padding:11px 13px;border:1px solid var(--outline);border-radius:24px;background:var(--white);color:var(--ink);font-size:.875rem;line-height:1;transition:background .2s,border-color .2s}
.theme-toggle:hover{background:var(--accent-soft);border-color:var(--accent)}


@media(max-width:1150px){.site-header nav{gap:20px}.header-actions{gap:11px}.site-header .wordmark{font-size:1.35rem}.theme-toggle{min-width:78px;padding-inline:10px}}
@media(max-width:640px){.header-actions{gap:9px}.theme-toggle{width:44px;min-width:44px;padding:11px}.header-cta-full{display:none}.header-cta-short{display:inline}.site-header .wordmark{font-size:1.25rem}.site-header .button-small{padding-inline:12px;gap:10px}.site-header{gap:12px}.identity-bottom>span{max-width:100%;line-height:1.6}}
@media(max-width:370px){.site-header .wordmark{font-size:1.2rem}.site-header .button-small{padding-inline:10px}}
/* Device preferences reduce the larger page movements. The user-requested
   brand animation is independent and continues in either colour theme. */
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.hero-copy{animation:none!important}.identity-logo{transform:none!important}.reveal{opacity:1!important;transform:none!important;transition:none!important}.project-screen{transform:none!important;transition:none!important}.step-index{transition:none}.contact:before{transform:none!important;border-radius:0!important}.button,.button>span{transition:none}.theme-toggle{transition:none}}

/* The original line monogram keeps the smooth 3D motion. */
.nav-mark{width:49px;height:32px;stroke:none;stroke-width:0;fill:none;overflow:visible}
.monogram-w{fill:var(--accent)}
.monogram-b{fill:var(--logo-ink)}
.identity-background:after{display:none}
.identity-logo{padding:25px 20px 92px;gap:10px}
.identity-wordmark{margin-top:0;font-size:clamp(2rem,3.6vw,3.5rem);line-height:1.2}
.logo-stage{position:relative;width:100%;aspect-ratio:1.5;max-width:460px;isolation:isolate}
.logo-canvas{display:block;position:absolute;inset:0;width:100%;height:100%;opacity:0;pointer-events:none}
.logo-fallback{display:block;position:absolute;inset:0;width:100%;height:100%;overflow:visible;animation:monogram-drift 14s ease-in-out infinite;transform-origin:center;filter:drop-shadow(0 18px 12px var(--logo-shadow))}
.logo-fallback .monogram-w{fill:url(#monogram-surface)}
.fallback-depth{fill:#24396f}
[data-theme="dark"] .fallback-depth{fill:#526daa}
.logo-stage.webgl-ready .logo-canvas{opacity:1}
.logo-stage.webgl-ready .logo-fallback{visibility:hidden}
@keyframes monogram-drift{0%,100%{transform:perspective(800px) rotateX(-7deg) rotateY(10deg) rotateZ(1deg) translateY(0)}50%{transform:perspective(800px) rotateX(-4deg) rotateY(18deg) rotateZ(-1deg) translateY(-6px)}}
.theme-toggle{width:auto;min-width:124px;padding:13px 16px;border-radius:6px;font-size:.875rem;white-space:nowrap;font-weight:500}
.theme-toggle #theme-label{display:inline}
@media(max-width:1150px){.header-actions{gap:10px}.theme-toggle{min-width:119px;padding-inline:13px}.site-header nav{gap:18px}}
@media(max-width:1000px){.site-header nav{display:none}}
@media(max-width:640px){.site-header{flex-wrap:wrap;gap:10px}.site-header .nav-mark{display:none}.header-actions{margin-left:auto;gap:8px}.theme-toggle{width:auto;min-width:114px;min-height:44px;padding:12px;font-size:.875rem}.theme-toggle #theme-label{display:inline}.site-header .wordmark{font-size:1.22rem}.site-header .button-small{padding-inline:10px;gap:8px}.hero-identity{height:350px}.identity-logo{padding:2px 14px 68px;gap:5px}.logo-stage{max-width:300px;aspect-ratio:1.65}.identity-wordmark{font-size:2rem;margin-top:0}.identity-bottom{bottom:19px}.identity-bottom>span{max-width:100%}}
@media(max-width:350px){.site-header .header-actions{width:100%;justify-content:space-between;margin-left:0}.site-header{padding-block:16px}.hero-identity{height:320px}.identity-logo{padding-inline:10px}.identity-wordmark{font-size:1.85rem}}

/* Original WB silhouette: continuous strokes, with no erase or replay point. */
.nav-mark{width:40px;height:38px;fill:none;stroke-width:12;stroke-linejoin:round;stroke-linecap:round}
.nav-mark .mark-w{stroke:var(--accent)}.nav-mark .mark-b{stroke:var(--logo-ink)}
.line-monogram{fill:none;stroke-width:9;stroke-linejoin:round;stroke-linecap:round;animation-duration:10s}
.line-monogram .line-depth{stroke:var(--logo-ink);opacity:.3}.line-monogram .line-w{stroke:url(#monogram-surface)}.line-monogram .line-b{stroke:var(--logo-ink)}
.price{white-space:normal}.price-from{display:block;font-size:.875rem;line-height:1.5;letter-spacing:0;font-weight:400;color:var(--muted);margin-bottom:3px}.price-custom{padding-top:24px}
.pricing-note,.optional-note{font-size:.875rem;color:var(--muted);margin-top:25px;line-height:1.7}
.pricing-note a,.contact-privacy a{text-decoration:underline;text-underline-offset:3px}.pricing-note a:hover,.contact-privacy a:hover{color:var(--accent)}
.optional-services{padding-block:65px 75px;border-top:1px solid var(--line);background:var(--panel)}
.optional-heading{max-width:700px}.optional-heading .eyebrow{margin-bottom:17px}.optional-heading h2{font-size:clamp(2.1rem,3.2vw,3.4rem)}.optional-heading>p:last-child{color:var(--muted);margin-top:19px;font-size:1rem}
.optional-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:25px;margin-top:35px}.optional-card{padding:30px;background:var(--white);border:1px solid var(--line);border-radius:9px;min-width:0}
.optional-card-top{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:18px;margin-bottom:25px}.optional-card .plan-label{margin:0;line-height:1.6;font-size:.8125rem;letter-spacing:.07em}.optional-price{font-size:.875rem;white-space:nowrap;color:var(--muted)}.optional-price strong{font-size:1.9rem;font-weight:500;letter-spacing:-.04em;color:var(--ink)}.optional-price span{font-size:.875rem}.optional-card h3{font-size:1.45rem;line-height:1.3;letter-spacing:-.035em;margin-bottom:14px}.optional-card>p{font-size:1rem;color:var(--muted);max-width:520px}.optional-card .quiet-link{margin-top:18px;width:max-content;font-size:.875rem}
.contact-details>.contact-privacy{font-size:.875rem;color:var(--muted);margin:18px 0 0}.site-footer{flex-wrap:wrap}.footer-links{flex-wrap:wrap;gap:8px 24px;font-size:.875rem;line-height:1.5}.footer-links a{padding-block:12px}.footer-links a:hover{color:var(--accent)}
@media(max-width:900px){.optional-grid{gap:20px}.optional-card{padding:25px}.price-custom{padding-top:0}.footer-links{width:100%;border-top:1px solid var(--line);padding-top:15px;justify-content:flex-start}}
@media(max-width:640px){.optional-services{padding-block:50px 55px}.optional-grid{grid-template-columns:1fr;margin-top:28px}.optional-card{padding:25px 24px}.optional-card h3{font-size:1.35rem}.optional-heading h2{font-size:2.2rem}.pricing-note,.optional-note{font-size:.875rem}.footer-links{gap:4px 21px;justify-content:flex-start}.nav-mark{display:none}}

.price-custom{flex-direction:column;align-items:flex-start;justify-content:center}
.pricing-note strong{font-weight:600;color:var(--ink)}
@media(max-width:370px){.optional-price{white-space:normal}}

/* Selected identity: option 1, using its original folded-ribbon artwork. */
.option-one-mark{fill:none;stroke:none;stroke-width:0;overflow:visible}
.brand-wordmark{display:block;width:146px;height:auto;flex:none;overflow:visible}
.brand-lettering{fill:var(--logo-ink)}.brand-dot{fill:#0767ff}
.site-header .wordmark{gap:9px}.site-header .nav-mark{width:45px;height:34px;flex:none}
.footer-wordmark .brand-wordmark{width:160px}
.identity-wordmark{width:85%;max-width:360px;margin:0;line-height:1}
.hero-wordmark{display:block;width:100%;height:auto;overflow:visible}
.logo-stage .logo-fallback{width:90%;height:90%;inset:5%;animation:ribbon-float 9s ease-in-out infinite;filter:drop-shadow(0 15px 10px var(--logo-shadow))}
@keyframes ribbon-float{0%,100%{transform:perspective(900px) rotateY(0deg) rotateX(6deg) translateY(0)}25%{transform:perspective(900px) rotateY(37deg) rotateX(9deg) translateY(-7px)}50%{transform:perspective(900px) rotateY(0deg) rotateX(-6deg) translateY(0)}75%{transform:perspective(900px) rotateY(-37deg) rotateX(-9deg) translateY(7px)}}
@media(max-width:1150px){.brand-wordmark{width:130px}.site-header .nav-mark{width:39px;height:30px}}
@media(max-width:640px){.site-header .nav-mark{display:none}.site-header .brand-wordmark{width:117px}.identity-wordmark{width:85%;max-width:285px}.identity-logo{gap:9px}.footer-wordmark .brand-wordmark{width:151px}}
@media(max-width:370px){.site-header .brand-wordmark{width:110px}}

/* Preserve the selected lockup's generous symbol-to-wordmark proportions. */
.logo-stage{aspect-ratio:1.9}
.identity-wordmark{width:78%}
.logo-stage .logo-fallback{width:60%;height:100%;inset:0 auto auto 20%}
.logo-canvas{filter:drop-shadow(0 15px 12px var(--logo-shadow))}
@media(max-width:640px){.logo-stage{aspect-ratio:1.9}.identity-wordmark{width:78%}}

/* Keep the larger ribbon movement within the original identity card. */
#company{scroll-margin-top:40px;padding:20px 22px;margin-bottom:24px;border:1px solid var(--line);border-radius:8px;background:var(--panel)}

/* A compact, non-blocking notice in the site's light and dark palettes. */
.cookie-notice[hidden],.cookie-settings-link[hidden],.cookie-notice-status[hidden]{display:none}
.cookie-notice{position:fixed;z-index:90;right:24px;bottom:24px;width:min(520px,calc(100vw - 48px));max-height:calc(100dvh - 48px);overflow-y:auto;padding:25px;background:var(--white);color:var(--ink);border:1px solid var(--outline);border-radius:12px;box-shadow:0 12px 55px #10234b24}
.cookie-notice h2{font-size:1.125rem;line-height:1.4;font-weight:600;letter-spacing:-.02em;margin-bottom:10px}
.cookie-notice h2:focus-visible{outline:2px solid var(--accent);outline-offset:4px}
.cookie-notice-copy p{font-size:.9375rem;line-height:1.6;color:var(--muted)}
.cookie-policy-link{display:inline-block;font-size:.875rem;text-decoration:underline;text-underline-offset:3px;margin-top:8px;padding-block:6px}
.cookie-policy-link:hover{color:var(--accent)}
.cookie-notice-actions{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:16px}
.cookie-notice-actions button{min-height:46px;padding:11px 12px;border:1px solid var(--outline);border-radius:6px;background:var(--white);color:var(--ink);font-size:.875rem;line-height:1.4;font-weight:500}
.cookie-notice-actions button:hover{border-color:var(--accent);background:var(--accent-soft);color:var(--accent)}
.cookie-notice-status{font-size:.875rem;line-height:1.5;color:var(--muted);margin-top:13px}
.cookie-settings-link{padding:12px 0;border:0;background:none;font-size:inherit;line-height:inherit;color:inherit;text-align:left}
.cookie-settings-link:hover{color:var(--accent)}
@media(max-width:640px){.cookie-notice{left:16px;right:16px;bottom:max(16px,env(safe-area-inset-bottom));width:auto;padding:20px;max-height:calc(100dvh - 48px)}}
@media(max-width:360px){.cookie-notice-actions{grid-template-columns:1fr}}

/* Centre the service statement and tighten the homepage's section rhythm. */
.service-line{flex-direction:column;align-items:center;gap:8px;padding-block:20px;text-align:center}
.service-line>p{max-width:none}
.service-line>div{justify-content:center;flex-wrap:wrap;gap:10px 22px;font-size:1.125rem;font-weight:700;line-height:1.5;color:var(--ink)}
.service-line i{width:4px;height:4px;background:currentColor;opacity:.45}
.hero{padding-block:56px;min-height:640px}
.section-space{padding-block:68px}
.section-heading{margin-bottom:32px}
.optional-services{padding-block:52px 56px}
.contact{padding-block:60px}
@media(min-width:1700px){.hero{padding-block:68px;min-height:740px}}
@media(max-width:1150px){.hero{padding-block:48px;min-height:600px}.section-space{padding-block:56px}}
@media(max-width:900px){.hero{padding-block:44px;min-height:560px}.section-heading{margin-bottom:28px}}
@media(max-width:640px){.hero{padding-block:36px 32px;min-height:0;gap:28px}.service-line{padding-block:18px}.service-line>p{font-size:.875rem}.service-line>div{gap:8px 10px;font-size:1rem}.section-space{padding-block:44px}.section-heading{margin-bottom:26px}.optional-services{padding-block:40px 44px}.contact{padding-block:44px}}

/* Contact details: clearer hierarchy and spacing. */
.contact .contact-details{display:flex;flex-direction:column;align-items:flex-start;width:100%;min-width:0}
.contact .contact-details>.button{margin:0 0 24px}
.contact .contact-email{margin:0;max-width:100%;font-size:clamp(1.125rem,1.6vw,1.5rem);font-weight:700;line-height:1.4;letter-spacing:-.025em;color:var(--accent);overflow-wrap:anywhere}
.contact .contact-email:hover{text-decoration:underline;text-underline-offset:4px}
.contact .contact-details>.contact-instructions{margin:14px 0 0;line-height:1.7}
.contact .contact-details>.contact-privacy{margin:24px 0 0}

/* Three portfolio examples, with room for each project title. */
.projects--three{grid-template-columns:repeat(3,minmax(0,1fr));gap:24px}
.projects--three .project-description{flex-direction:column;align-items:flex-start;gap:12px}
.projects--three .project-description h3{font-size:1.25rem;line-height:1.3}
.projects--three .project-description>a{margin-top:0}
.msp-screen{background:var(--cvt-frame);border-color:var(--line)}
@media(max-width:900px){.projects--three{grid-template-columns:1fr;gap:36px}.projects--three .project-description{flex-direction:row;align-items:center;gap:20px}.projects--three .project-description h3{font-size:1.4rem}}
@media(max-width:640px){.projects--three .project-description{align-items:flex-start;flex-direction:column;gap:8px}.projects--three .project-description h3{font-size:1.25rem}}

/* Our approach to feedback and client satisfaction. */
.client-first{--ink:#fff;--secondary-ink:#e5e7eb;--muted:#bcc3cf;--line:#292d35;display:grid;grid-template-columns:1fr 1.12fr;align-items:start;gap:10%;background:#000;color:var(--ink);border-bottom:1px solid var(--line)}
.client-first-heading .eyebrow{color:var(--accent);margin-bottom:22px}
.client-first-heading h2{font-size:clamp(2.4rem,3.8vw,4.2rem);line-height:1.12;color:#fff}.client-first-heading h2 em{color:var(--accent)}
.client-first-copy{max-width:620px;padding-top:2px;min-width:0}
.client-first-copy>p{font-size:1.125rem;line-height:1.7;color:var(--secondary-ink);margin:0}
.client-first-copy>p+p{margin-top:20px}
.client-first-copy>.client-first-lead{font-size:clamp(1.125rem,1.5vw,1.375rem);font-weight:500;color:var(--ink);line-height:1.5}
.client-first-copy>.client-first-scope{font-size:1rem;color:var(--muted);margin-top:24px}
@media(max-width:1150px){.client-first{gap:7%}}
@media(max-width:900px){.client-first{grid-template-columns:1fr;gap:28px}.client-first-copy{max-width:680px;padding-top:0}}
@media(max-width:640px){.client-first{gap:24px}.client-first-heading .eyebrow{margin-bottom:18px}.client-first-heading h2{font-size:2.4rem}.client-first-copy>p{font-size:1rem}.client-first-copy>.client-first-lead{font-size:1.125rem}.client-first-copy>p+p{margin-top:16px}.client-first-copy>.client-first-scope{margin-top:20px}}

/* Company disclosure */
.company-details{flex-basis:100%;margin:0;color:var(--muted);font-size:.75rem;line-height:1.7;max-width:100%;overflow-wrap:anywhere}

.cookie-theme-choice{display:flex;align-items:center;gap:10px;margin-top:16px;font-size:.875rem;line-height:1.5;cursor:pointer}.cookie-theme-choice input{width:20px;height:20px;flex:none;accent-color:var(--accent)}.cookie-theme-choice input:focus-visible{outline:2px solid var(--accent);outline-offset:3px}.cookie-control #analytics-preference-status{font-size:.875rem;color:var(--accent);margin-top:20px;min-height:24px}
/* Larger tap targets (29 Oct 2026) */
.wordmark{min-height:44px}
.cookie-control input[type=checkbox]{width:24px;height:24px;flex:none}

/* Home: the H1 is the small kicker above the display headline (30 Oct 2026) */
.hero h1.eyebrow{text-transform:uppercase}
/* space.css */
/* Space is the dark theme. Classic styling in style.css remains unchanged. */
:root[data-theme="dark"]:not([data-theme-fade="enabled"]){
 --bg:#040711;--white:#0b1222;--ink:#f2f5ff;--muted:#b5c2d8;--accent:#8dcfff;--accent-soft:#183154;--line:#344765;--on-ink:#061222;--on-accent:#041326;--selection-bg:#24549b;--selection-ink:#fff;--nav-ink:#dae5f6;--accent-hover:#b7e6ff;--ink-hover:#d7e8ff;--outline:#577499;--label:#acc8e8;--secondary-ink:#ccd8ea;--panel:#091223;--identity-line:#48718c;--identity-bg:#061020;--identity-centre:#122846;--identity-edge:#060a14;--grid-line:transparent;--logo-ink:#eef6ff;--logo-start:#80bcff;--logo-end:#d5eaff;--logo-outline:#a5dcff;--guide:#79c9ff;--project-bg:#112033;--cvt-frame:#1a1930;--fit-frame:#0c2830;--dot:#829ab8;--featured-line:#799ed0;--featured-bg:#152541;--contact-bg:#0d1c36;--contact-line:#385680;--underline:#8dcfff78;--shadow-accent:#268aff38;--shadow-lift:#0008;--shadow-low:#0004;--logo-shadow:#2c86ff33;color-scheme:dark;
}
.space-scene,.space-progress{display:none}
[data-theme="dark"]:not([data-theme-fade="enabled"]) body{isolation:isolate}
[data-theme="dark"]:not([data-theme-fade="enabled"]) .space-scene{display:block;position:fixed;inset:0;z-index:-1;overflow:hidden;pointer-events:none;contain:strict;background:#03060e}
.space-backdrop{position:absolute;inset:0;min-height:100lvh}
.space-backdrop img{width:100%;height:100%;object-fit:cover;object-position:center;opacity:.84}
.space-scene:after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,#0307129c,transparent 70%),radial-gradient(ellipse at 42% 42%,#03071055,transparent 80%);pointer-events:none}

.space-eclipse{position:absolute;left:21%;top:18%;width:59%;height:59%;border-radius:50%;pointer-events:none;background:radial-gradient(circle at 33% 27%,#fff8df 0%,#ffe4a9c9 13%,#ffbb646b 35%,#ff7b2524 55%,#ff7b2500 74%);filter:blur(19px);will-change:transform,opacity;z-index:0}
.space-identity-eclipse{display:none;position:absolute;z-index:-1;width:135%;aspect-ratio:1;right:-24%;top:-2%;pointer-events:none;will-change:transform}
[data-theme="dark"]:not([data-theme-fade="enabled"]) .space-identity-eclipse{display:block}
.space-traveller{position:absolute;z-index:4;filter:drop-shadow(0 10px 25px #0009);will-change:transform}
.space-traveller img{width:100%;height:auto;display:block}
.space-traveller-one{width:clamp(110px,13vw,205px);left:80%;top:18%;opacity:.94}

[data-theme="dark"]:not([data-theme-fade="enabled"]) .site-header{background:linear-gradient(90deg,#060c1af5,#0b1827ef);border-color:#749bd833;box-shadow:0 1px 30px #3b87d70d;backdrop-filter:blur(18px)}
[data-theme="dark"]:not([data-theme-fade="enabled"]) .site-header .nav-mark{filter:drop-shadow(0 0 10px #167cff40)}
[data-theme="dark"]:not([data-theme-fade="enabled"]) .theme-toggle{background:#12213acc;border-color:#76a3d666;box-shadow:inset 0 1px 0 #d7e9ff19;color:#dbeaff}
[data-theme="dark"]:not([data-theme-fade="enabled"]) .theme-toggle:hover{background:#1b3557;border-color:#a4dcff}
[data-theme="dark"]:not([data-theme-fade="enabled"]) .hero{position:relative;background:linear-gradient(90deg,#030710ad 0%,#03071018 60%,transparent)}
[data-theme="dark"]:not([data-theme-fade="enabled"]) .hero-copy{position:relative;z-index:1;background:transparent;box-shadow:none}
[data-theme="dark"]:not([data-theme-fade="enabled"]) .hero .hero-title{text-shadow:0 3px 32px #0008}
[data-theme="dark"]:not([data-theme-fade="enabled"]) h1 em,[data-theme="dark"]:not([data-theme-fade="enabled"]) .hero-title em,[data-theme="dark"]:not([data-theme-fade="enabled"]) h2 em{color:#91d5ff;text-shadow:0 0 35px #2484e22a}
[data-theme="dark"]:not([data-theme-fade="enabled"]) .hero-identity{z-index:6;background:linear-gradient(145deg,#152237,#080f1b);border-color:#6fa7d647;box-shadow:inset 0 0 80px #79b1ff08,0 20px 80px #0005}
[data-theme="dark"]:not([data-theme-fade="enabled"]) .identity-background{background:radial-gradient(ellipse at 60% 40%,#1b416522,transparent 75%);clip-path:inset(0 round 16px);-webkit-clip-path:inset(0 round 16px)}
[data-theme="dark"]:not([data-theme-fade="enabled"]) .identity-background:after{background-image:none}
.space-identity-planet{display:none}
[data-theme="dark"]:not([data-theme-fade="enabled"]) .space-identity-planet{display:block;position:absolute;z-index:1;width:135%;max-width:none;height:auto;right:-24%;top:-2%;opacity:1;filter:drop-shadow(0 0 25px #f7a24920)}
[data-theme="dark"]:not([data-theme-fade="enabled"]) .identity-logo{position:relative;z-index:2}
/* The clipped fixed layer uses the same viewport and motion as the outside
   astronaut. The planet (1), logo (2) and wordmark stay in front of it. */
[data-theme="dark"]:not([data-theme-fade="enabled"]) .identity-background .space-logo-window{z-index:0}
[data-theme="dark"]:not([data-theme-fade="enabled"]) .identity-bottom{color:#e3edfa;z-index:3;background:linear-gradient(transparent,#08111bed 40%,#08111b);box-shadow:none;text-shadow:0 1px 8px #000}
[data-theme="dark"]:not([data-theme-fade="enabled"]) .service-line{background:#050c17ee;border-color:#7199d12e;backdrop-filter:blur(10px)}
[data-theme="dark"]:not([data-theme-fade="enabled"]) .work{background:linear-gradient(180deg,#050b16e5,#091021e3 66%,#060b16df)}
[data-theme="dark"]:not([data-theme-fade="enabled"]) .project-screen{box-shadow:0 20px 45px #0005,inset 0 1px 0 #a5d1ff20}
[data-theme="dark"]:not([data-theme-fade="enabled"]) .project-screen:hover{box-shadow:0 20px 55px #0008,0 0 26px #4d8feb24}
[data-theme="dark"]:not([data-theme-fade="enabled"]) .browser-bar{background:#0b1427}
[data-theme="dark"]:not([data-theme-fade="enabled"]) .screenshot-viewport{background:#101414}
[data-theme="dark"]:not([data-theme-fade="enabled"]) .approach{background:linear-gradient(100deg,#091123f0,#0b1731e8);border-color:#5f8abe3d}
[data-theme="dark"]:not([data-theme-fade="enabled"]) .steps:before{background:#5179a755}
[data-theme="dark"]:not([data-theme-fade="enabled"]) .steps:after{background:linear-gradient(#86d9ff,#698cff);box-shadow:0 0 15px #62bbff55}
[data-theme="dark"]:not([data-theme-fade="enabled"]) .step-index{color:#98d4ff}
[data-theme="dark"]:not([data-theme-fade="enabled"]) .client-first{background:linear-gradient(100deg,#050916eb,#12122beb);--muted:#b5bfd5;--secondary-ink:#dce4f4;border-color:#748ad336}
[data-theme="dark"]:not([data-theme-fade="enabled"]) .pricing{background:linear-gradient(180deg,#060c17e3,#071020e3)}
[data-theme="dark"]:not([data-theme-fade="enabled"]) .price-card{background:linear-gradient(145deg,#14223bf7,#080e1efa);border-color:#668eb64d;box-shadow:0 18px 45px #0004,inset 0 1px 0 #a6d0ff16;backdrop-filter:blur(12px)}
[data-theme="dark"]:not([data-theme-fade="enabled"]) .price-card.featured{background:linear-gradient(145deg,#19344af5,#192445f7 55%,#0d1528fa);border-color:#93c7f18a;box-shadow:0 0 40px #397ccc14,inset 0 0 40px #65baff08}
[data-theme="dark"]:not([data-theme-fade="enabled"]) .featured:before{background:linear-gradient(90deg,transparent,#8cdbff,#b3baff,transparent);box-shadow:0 0 20px #6fd2ff70;animation:space-luminous-edge 7s ease-in-out infinite}
[data-theme="dark"]:not([data-theme-fade="enabled"]) .optional-services{background:linear-gradient(110deg,#0c1529e8,#0c1324e8)}
[data-theme="dark"]:not([data-theme-fade="enabled"]) .optional-card{background:linear-gradient(135deg,#172844f5,#0b1326f8);border-color:#6d95c252;box-shadow:inset 0 1px 0 #d8e9ff12,0 15px 45px #0003}
[data-theme="dark"]:not([data-theme-fade="enabled"]) .contact{background:linear-gradient(110deg,#101c38f5,#0f213ff0 60%,#142044ee);border-color:#6a9ed955;box-shadow:0 0 65px #3778c51c}
[data-theme="dark"]:not([data-theme-fade="enabled"]) .button-blue{background:linear-gradient(115deg,#87ceff,#a8c4ff);color:#061a33;box-shadow:0 6px 25px #227aff30,inset 0 1px 0 #ffffff85}
[data-theme="dark"]:not([data-theme-fade="enabled"]) .button-blue:hover{background:linear-gradient(115deg,#b2e5ff,#c0d4ff);box-shadow:0 8px 35px #398cfb4a}
[data-theme="dark"]:not([data-theme-fade="enabled"]) .button-dark{background:linear-gradient(120deg,#eef8ff,#c4d8ff);color:#0a1830;box-shadow:0 6px 25px #227aff22}
[data-theme="dark"]:not([data-theme-fade="enabled"]) .button-outline{background:#12213b40;border-color:#88b4dd70}
[data-theme="dark"]:not([data-theme-fade="enabled"]) .button-outline:hover{background:#1c3a61a6;border-color:#b0dbff;box-shadow:0 0 25px #5d9dff20}
[data-theme="dark"]:not([data-theme-fade="enabled"]) .site-footer{background:#040911f2;border-color:#557daf40}
[data-theme="dark"]:not([data-theme-fade="enabled"]) .cookie-notice{background:#0c172a;border-color:#779fcd88;box-shadow:0 20px 90px #000a,0 0 35px #2773c51a}
[data-theme="dark"]:not([data-theme-fade="enabled"]) .cookie-notice-actions button{background:#14233a}
[data-theme="dark"]:not([data-theme-fade="enabled"]) .cookie-notice-actions button:hover{background:#243c5a}
[data-theme="dark"]:not([data-theme-fade="enabled"]) .cookie-control{background:#0f1a2b}
[data-theme="dark"]:not([data-theme-fade="enabled"]) .legal-main{background:linear-gradient(90deg,#050b16f7,#060c17f5)}
[data-theme="dark"]:not([data-theme-fade="enabled"]) .legal-contents{background:#060e1af5}
[data-theme="dark"]:not([data-theme-fade="enabled"]) .reading-progress{opacity:0}
/* The rocket is a supplemental reading-progress indicator; native scrolling stays intact. */
[data-theme="dark"]:not([data-theme-fade="enabled"]) .space-progress{display:block}
.space-progress{position:fixed;right:8px;top:116px;bottom:42px;width:30px;z-index:50;pointer-events:none}
.space-progress:before{content:"";position:absolute;width:1px;top:17px;bottom:17px;left:50%;background:linear-gradient(transparent,#759ccc66,transparent)}
.space-progress-fill{position:absolute;width:2px;left:calc(50% - 1px);top:17px;bottom:17px;background:linear-gradient(#798dff00,#6599ff,#bcf2ff);transform:scaleY(var(--space-progress,0));transform-origin:top;box-shadow:0 0 9px #569dff7a}
.space-progress-ship{position:absolute;top:0;left:-12px;width:54px;height:72px;object-fit:contain;transform:translate3d(0,var(--rocket-y,0px),0) rotate(var(--rocket-direction,180deg));filter:drop-shadow(0 0 8px #61b9ff85);transition:rotate .55s ease-out;will-change:transform}

@keyframes space-luminous-edge{0%,100%{opacity:.45}50%{opacity:1}}
@media(max-width:900px){.space-traveller-one{width:140px}.space-progress{right:2px;width:24px}.space-progress-ship{left:-10px;width:44px;height:60px}}
@media(max-width:640px){.space-backdrop img{object-position:72% center;opacity:.64}.space-scene:after{background:linear-gradient(90deg,#030711ab,#0307112e),linear-gradient(0deg,#0307116e,transparent)}.space-traveller-one{width:108px;left:65%;top:24%;opacity:.82}.space-progress{right:0;width:16px;top:98px;bottom:60px}.space-progress-ship{width:36px;height:48px;left:-10px}.space-progress-fill{width:1px}.space-identity-planet{opacity:.5}[data-theme="dark"]:not([data-theme-fade="enabled"]) .hero{background:linear-gradient(90deg,#03071066,#03071019)}}
@media(prefers-reduced-motion:reduce){.space-scene *,.space-identity-planet,[data-theme="dark"]:not([data-theme-fade="enabled"]) .featured:before,[data-theme="dark"]:not([data-theme-fade="enabled"]) .logo-fallback{animation:none!important;will-change:auto!important}.space-progress-ship{transition:none;will-change:auto}}
/* Visible motion: one shared animation clock drives these transforms. */
.space-atmosphere{display:none}
[data-theme="dark"]:not([data-theme-fade="enabled"]) .space-atmosphere{display:block;position:fixed;inset:0;z-index:5;pointer-events:none;overflow:hidden;contain:strict;mask-image:linear-gradient(180deg,transparent 60px,#000 140px,#000 calc(100% - 12px),transparent);-webkit-mask-image:linear-gradient(180deg,transparent 60px,#000 140px,#000 calc(100% - 12px),transparent)}

.space-atmosphere .space-traveller{left:0;top:0;animation:none!important;transform-origin:center;will-change:transform}

/* A responsive still pose is visible before any animation code runs. Both
   clipped renderings use it, and the controller adopts these exact coordinates. */
.space-atmosphere .space-traveller-one{--space-start-size:min(clamp(145px,13.5vw,210px),34dvh);--space-start-anchor:72vw;--space-start-x:clamp(calc(24px + var(--space-start-size)*.1),calc(var(--space-start-anchor) - var(--space-start-size)*.5),max(calc(24px + var(--space-start-size)*.1),calc(100vw - var(--space-start-size)*1.1 - 24px)));--space-start-y:clamp(calc(108px + var(--space-start-size)*.063),24dvh,max(calc(108px + var(--space-start-size)*.063),calc(100dvh - var(--space-start-size)*1.563 - 24px)));width:var(--space-start-size);transform:translate3d(var(--space-start-x),var(--space-start-y),0) rotate(-8deg)}
@media(max-width:640px){.space-atmosphere .space-traveller-one{--space-start-size:min(110px,34dvh);--space-start-anchor:68vw}}
.space-eclipse{opacity:.1513307421;transform:translate3d(-16.60836572%,-14.67957196%,0) scale(1.007832686)}

.space-atmosphere .space-traveller-one{opacity:.92;z-index:2;filter:drop-shadow(0 10px 24px #0009) drop-shadow(0 0 10px #70b5ff35)}

/* Only the small astronaut target captures gestures; the page stays scrollable. */
.space-traveller .space-astronaut-image{position:relative;z-index:1;pointer-events:none;user-select:none;-webkit-user-drag:none}
.space-astronaut-hit{position:absolute;z-index:2;inset:10% 12% 10%;padding:0;border:0;border-radius:45%;background:transparent;appearance:none;-webkit-appearance:none;box-shadow:none;pointer-events:auto;touch-action:none;cursor:grab;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}
.space-astronaut-hit:active{cursor:grabbing}
.space-astronaut-hit:disabled{pointer-events:none;cursor:default}
.space-astronaut-hit:focus-visible{outline:2px solid #a9e1ff;outline-offset:4px}
.space-jetpack{position:absolute;inset:0;z-index:0;pointer-events:none;opacity:var(--boost-power,0);will-change:opacity}
.space-jet{position:absolute;width:64%;aspect-ratio:2/3;background:url('/assets/space/jetpack-plume.webp') center/contain no-repeat;transform-origin:50% 7%;transform:translate(-50%,-7%) rotate(var(--jet-angle,0deg)) scaleY(var(--jet-length,1));will-change:transform}
.space-jet-left{left:39%;top:32%}
.space-jet-right{left:73%;top:34%;width:58%}

[data-theme="dark"]:not([data-theme-fade="enabled"]) .space-identity-planet{animation:none!important;will-change:transform}

/* Give the original two-line caption a deliberate place below the wordmark. */
.hero-identity .identity-bottom{bottom:0;left:0;right:0;justify-content:center;gap:0;padding:20px 20px 22px;border:0;text-align:center;font-size:clamp(.875rem,1vw,1rem);font-weight:500;line-height:1.5}
.hero-identity .identity-bottom>span{max-width:100%;line-height:inherit}
.hero-identity .identity-bottom>span br{display:block}
@media(max-width:640px){.hero-identity .identity-bottom{padding:12px 18px 16px}}

@media(max-width:640px){[data-theme="dark"]:not([data-theme-fade="enabled"]) .identity-background{clip-path:inset(0 round 12px);-webkit-clip-path:inset(0 round 12px)}}
@media(max-width:640px){[data-theme="dark"]:not([data-theme-fade="enabled"]) .space-atmosphere{mask-image:linear-gradient(180deg,transparent 64px,#000 120px,#000 90%,transparent);-webkit-mask-image:linear-gradient(180deg,transparent 64px,#000 120px,#000 90%,transparent)}.space-atmosphere .space-traveller-one{opacity:.84}}
@media print{.space-scene,.space-atmosphere,.space-logo-traveller,.space-progress{display:none!important}[data-theme="dark"]:not([data-theme-fade="enabled"]) body{background:white;color:#111}[data-theme="dark"]:not([data-theme-fade="enabled"]) .legal-main{background:white}}
@media print{.space-identity-eclipse{display:none!important}}
/* Match the existing scroll-drawn heading underline on the client-first title.
   The shared heading controller supplies the same easing and scroll progress. */
.client-first-heading h2 em{background-image:linear-gradient(var(--underline),var(--underline));background-size:var(--heading-width,0%) 2px;background-repeat:no-repeat;background-position:0 100%;padding-bottom:.07em;box-decoration-break:clone;-webkit-box-decoration-break:clone}

/* Keep already-painted hero copy visible when the deferred motion controller
   starts. The rest of the site's scroll and scene animation is unchanged. */
html .hero .hero-copy{animation:none}
/* A transparent WebGL surface needs no extra filtered compositor surface.
   The lit opening image remains visible until the first rendered frame. */
.logo-stage .logo-canvas{background:transparent;filter:none;visibility:hidden}
.logo-stage.webgl-ready .logo-canvas{visibility:visible}

/* Match the live logo's first pose and lighting from the initial paint.
   The captured frame already includes its perspective and transparent edges. */
.logo-stage .logo-fallback.logo-opening-frame{width:100%;height:100%;inset:0;animation:none;transform:none;filter:none}

/* Movement begins at first paint, while the animation modules are loading.
   Their controllers adopt these poses before releasing the CSS animations. */
html:not([data-space-motion-ready]) .space-atmosphere .space-traveller-one{animation:space-opening-astronaut 6s linear infinite alternate!important}
@keyframes space-opening-astronaut{
 from{transform:translate3d(var(--space-start-x),var(--space-start-y),0) rotate(-8deg)}
 to{transform:translate3d(calc(var(--space-start-x) - 48px),calc(var(--space-start-y) - 18px),0) rotate(19.33deg)}
}
html:not([data-space-motion-ready]) .hero-identity :is(.space-identity-planet,.space-identity-eclipse){animation:space-opening-planet 20s linear infinite alternate!important}
@keyframes space-opening-planet{
 0%{transform:translate3d(0.000000px,0.000000px,0) rotate(0.000000deg)}
 1.25%{transform:translate3d(0.902161px,0.919493px,0) rotate(0.539818deg)}
 2.5%{transform:translate3d(1.802286px,1.835947px,0) rotate(1.078543deg)}
 3.75%{transform:translate3d(2.698346px,2.746332px,0) rotate(1.615084deg)}
 5%{transform:translate3d(3.588319px,3.647640px,0) rotate(2.148355deg)}
 6.25%{transform:translate3d(4.470197px,4.536892px,0) rotate(2.677276deg)}
 7.5%{transform:translate3d(5.341992px,5.411147px,0) rotate(3.200777deg)}
 8.75%{transform:translate3d(6.201735px,6.267516px,0) rotate(3.717798deg)}
 10%{transform:translate3d(7.047489px,7.103170px,0) rotate(4.227291deg)}
 11.25%{transform:translate3d(7.877345px,7.915345px,0) rotate(4.728225deg)}
 12.5%{transform:translate3d(8.689430px,8.701357px,0) rotate(5.219586deg)}
 13.75%{transform:translate3d(9.481914px,9.458608px,0) rotate(5.700380deg)}
 15%{transform:translate3d(10.253009px,10.184595px,0) rotate(6.169632deg)}
 16.25%{transform:translate3d(11.000974px,10.876919px,0) rotate(6.626393deg)}
 17.5%{transform:translate3d(11.724124px,11.533290px,0) rotate(7.069737deg)}
 18.75%{transform:translate3d(12.420825px,12.151541px,0) rotate(7.498768deg)}
 20%{transform:translate3d(13.089507px,12.729626px,0) rotate(7.912616deg)}
 21.25%{transform:translate3d(13.728662px,13.265636px,0) rotate(8.310444deg)}
 22.5%{transform:translate3d(14.336847px,13.757798px,0) rotate(8.691446deg)}
 23.75%{transform:translate3d(14.912691px,14.204486px,0) rotate(9.054851deg)}
 25%{transform:translate3d(15.454895px,14.604223px,0) rotate(9.399923deg)}
 26.25%{transform:translate3d(15.962234px,14.955688px,0) rotate(9.725963deg)}
 27.5%{transform:translate3d(16.433566px,15.257720px,0) rotate(10.032312deg)}
 28.75%{transform:translate3d(16.867827px,15.509320px,0) rotate(10.318348deg)}
 30%{transform:translate3d(17.264036px,15.709656px,0) rotate(10.583494deg)}
 31.25%{transform:translate3d(17.621301px,15.858067px,0) rotate(10.827211deg)}
 32.5%{transform:translate3d(17.938816px,15.954061px,0) rotate(11.049007deg)}
 33.75%{transform:translate3d(18.215863px,15.997322px,0) rotate(11.248433deg)}
 35%{transform:translate3d(18.451819px,15.987706px,0) rotate(11.425084deg)}
 36.25%{transform:translate3d(18.646151px,15.925245px,0) rotate(11.578604deg)}
 37.5%{transform:translate3d(18.798420px,15.810146px,0) rotate(11.708680deg)}
 38.75%{transform:translate3d(18.908283px,15.642790px,0) rotate(11.815051deg)}
 40%{transform:translate3d(18.975493px,15.423728px,0) rotate(11.897500deg)}
 41.25%{transform:translate3d(18.999897px,15.153686px,0) rotate(11.955861deg)}
 42.5%{transform:translate3d(18.981440px,14.833555px,0) rotate(11.990015deg)}
 43.75%{transform:translate3d(18.920165px,14.464395px,0) rotate(11.999894deg)}
 45%{transform:translate3d(18.816209px,14.047425px,0) rotate(11.985477deg)}
 46.25%{transform:translate3d(18.669807px,13.584023px,0) rotate(11.946793deg)}
 47.5%{transform:translate3d(18.481290px,13.075722px,0) rotate(11.883922deg)}
 48.75%{transform:translate3d(18.251081px,12.524201px,0) rotate(11.796989deg)}
 50%{transform:translate3d(17.979702px,11.931283px,0) rotate(11.686172deg)}
 51.25%{transform:translate3d(17.667763px,11.298929px,0) rotate(11.551694deg)}
 52.5%{transform:translate3d(17.315969px,10.629227px,0) rotate(11.393827deg)}
 53.75%{transform:translate3d(16.925113px,9.924393px,0) rotate(11.212893deg)}
 55%{transform:translate3d(16.496077px,9.186754px,0) rotate(11.009255deg)}
 56.25%{transform:translate3d(16.029829px,8.418751px,0) rotate(10.783328deg)}
 57.5%{transform:translate3d(15.527420px,7.622921px,0) rotate(10.535569deg)}
 58.75%{transform:translate3d(14.989984px,6.801894px,0) rotate(10.266478deg)}
 60%{transform:translate3d(14.418733px,5.958385px,0) rotate(9.976602deg)}
 61.25%{transform:translate3d(13.814957px,5.095181px,0) rotate(9.666526deg)}
 62.5%{transform:translate3d(13.180016px,4.215136px,0) rotate(9.336878deg)}
 63.75%{transform:translate3d(12.515343px,3.321158px,0) rotate(8.988327deg)}
 65%{transform:translate3d(11.822438px,2.416203px,0) rotate(8.621578deg)}
 66.25%{transform:translate3d(11.102863px,1.503262px,0) rotate(8.237372deg)}
 67.5%{transform:translate3d(10.358242px,0.585352px,0) rotate(7.836489deg)}
 68.75%{transform:translate3d(9.590255px,-0.334493px,0) rotate(7.419740deg)}
 70%{transform:translate3d(8.800634px,-1.253233px,0) rotate(6.987968deg)}
 71.25%{transform:translate3d(7.991160px,-2.167830px,0) rotate(6.542048deg)}
 72.5%{transform:translate3d(7.163660px,-3.075261px,0) rotate(6.082882deg)}
 73.75%{transform:translate3d(6.319999px,-3.972528px,0) rotate(5.611401deg)}
 75%{transform:translate3d(5.462082px,-4.856664px,0) rotate(5.128559deg)}
 76.25%{transform:translate3d(4.591844px,-5.724748px,0) rotate(4.635333deg)}
 77.5%{transform:translate3d(3.711246px,-6.573909px,0) rotate(4.132722deg)}
 78.75%{transform:translate3d(2.822277px,-7.401341px,0) rotate(3.621743deg)}
 80%{transform:translate3d(1.926942px,-8.204309px,0) rotate(3.103432deg)}
 81.25%{transform:translate3d(1.027259px,-8.980159px,0) rotate(2.578838deg)}
 82.5%{transform:translate3d(0.125260px,-9.726327px,0) rotate(2.049022deg)}
 83.75%{transform:translate3d(-0.777023px,-10.440346px,0) rotate(1.515058deg)}
 85%{transform:translate3d(-1.677552px,-11.119856px,0) rotate(0.978026deg)}
 86.25%{transform:translate3d(-2.574298px,-11.762611px,0) rotate(0.439014deg)}
 87.5%{transform:translate3d(-3.465236px,-12.366486px,0) rotate(-0.100887deg)}
 88.75%{transform:translate3d(-4.348357px,-12.929487px,0) rotate(-0.640584deg)}
 90%{transform:translate3d(-5.221669px,-13.449750px,0) rotate(-1.178983deg)}
 91.25%{transform:translate3d(-6.083202px,-13.925558px,0) rotate(-1.714996deg)}
 92.5%{transform:translate3d(-6.931012px,-14.355338px,0) rotate(-2.247536deg)}
 93.75%{transform:translate3d(-7.763187px,-14.737668px,0) rotate(-2.775526deg)}
 95%{transform:translate3d(-8.577849px,-15.071285px,0) rotate(-3.297896deg)}
 96.25%{transform:translate3d(-9.373162px,-15.355086px,0) rotate(-3.813589deg)}
 97.5%{transform:translate3d(-10.147330px,-15.588133px,0) rotate(-4.321561deg)}
 98.75%{transform:translate3d(-10.898608px,-15.769657px,0) rotate(-4.820783deg)}
 100%{transform:translate3d(-11.625300px,-15.899056px,0) rotate(-5.310245deg)}
}
/* Rotate the lit loading image on the same nine-second clock as the mesh.
   Transform animation stays on the compositor while WebGL initialises. */
.logo-stage{--logo-width:460;--logo-height:calc(var(--logo-width)/1.9)}
@media(max-width:640px){.logo-stage{--logo-width:300}}
html .logo-stage .logo-fallback.logo-opening-frame{animation:space-opening-logo 9s linear infinite;will-change:transform;transform-origin:0 0}
@keyframes space-opening-logo{
 0.000000%{transform:matrix3d(1.0000000000,0.0000000000,0,calc(0.0000000000 / var(--logo-width)),0.0000000000,1.0000000000,0,calc(0.0000000000 / var(--logo-height)),0,0,1,0,calc(0.0000000000 * var(--logo-width)),calc(-0.0000000000 * var(--logo-height)),0,1)}
 0.555556%{transform:matrix3d(1.0271162174,-0.0002053719,0,calc(0.0256203411 / var(--logo-width)),0.0078843688,1.0158731556,0,calc(0.0035302072 / var(--logo-height)),0,0,1,0,calc(-0.0075577164 * var(--logo-width)),calc(-0.0027674711 * var(--logo-height)),0,1)}
 1.111111%{transform:matrix3d(1.0543727185,-0.0006693639,0,calc(0.0518607028 / var(--logo-width)),0.0160108595,1.0321138278,0,calc(0.0072061887 / var(--logo-height)),0,0,1,0,calc(-0.0150357930 * var(--logo-width)),calc(-0.0053440609 * var(--logo-height)),0,1)}
 1.666667%{transform:matrix3d(1.0817275720,-0.0013766728,0,calc(0.0786994274 / var(--logo-width)),0.0243515560,1.0487061092,0,calc(0.0110264178 / var(--logo-height)),0,0,1,0,calc(-0.0224120890 * var(--logo-width)),calc(-0.0077323034 * var(--logo-height)),0,1)}
 2.222222%{transform:matrix3d(1.1091377349,-0.0023094353,0,calc(0.1061122189 / var(--logo-width)),0.0328750869,1.0656317715,0,calc(0.0149873218 / var(--logo-height)),0,0,1,0,calc(-0.0296642789 * var(--logo-width)),calc(-0.0099364014 * var(--logo-height)),0,1)}
 2.777778%{transform:matrix3d(1.1365591885,-0.0034471888,0,calc(0.1340720548 / var(--logo-width)),0.0415467176,1.0828702499,0,calc(0.0190831762 / var(--logo-height)),0,0,1,0,calc(-0.0367700014 * var(--logo-width)),calc(-0.0119623050 * var(--logo-height)),0,1)}
 3.333333%{transform:matrix3d(1.1639470882,-0.0047668566,0,calc(0.1625491059 / var(--logo-width)),0.0503284865,1.1003986370,0,calc(0.0233060190 / var(--logo-height)),0,0,1,0,calc(-0.0437070203 * var(--logo-width)),calc(-0.0138177752 * var(--logo-height)),0,1)}
 3.888889%{transform:matrix3d(1.1912559243,-0.0062427615,0,calc(0.1915106642 / var(--logo-width)),0.0591793853,1.1181916876,0,calc(0.0276455876 / var(--logo-height)),0,0,1,0,calc(-0.0504533939 * var(--logo-width)),calc(-0.0155124272 * var(--logo-height)),0,1)}
 4.444444%{transform:matrix3d(1.2184396926,-0.0078466693,0,calc(0.2209210819 / var(--logo-width)),0.0680555849,1.1362218332,0,calc(0.0320892817 / var(--logo-height)),0,0,1,0,calc(-0.0569876512 * var(--logo-width)),calc(-0.0170577522 * var(--logo-height)),0,1)}
 5.000000%{transform:matrix3d(1.2454520730,-0.0095478670,0,calc(0.2507417200 / var(--logo-width)),0.0769107053,1.1544592063,0,calc(0.0366221538 / var(--logo-height)),0,0,1,0,calc(-0.0632889741 * var(--logo-width)),calc(-0.0184671139 * var(--logo-height)),0,1)}
 5.555556%{transform:matrix3d(1.2722466123,-0.0113132777,0,calc(0.2809309086 / var(--logo-width)),0.0856961289,1.1728716721,0,calc(0.0412269296 / var(--logo-height)),0,0,1,0,calc(-0.0693373806 * var(--logo-width)),calc(-0.0197557174 * var(--logo-height)),0,1)}
 6.111111%{transform:matrix3d(1.2987769097,-0.0131076130,0,calc(0.3114439187 / var(--logo-width)),0.0943613543,1.1914248703,0,calc(0.0458840603 / var(--logo-height)),0,0,1,0,calc(-0.0751139095 * var(--logo-width)),calc(-0.0209405488 * var(--logo-height)),0,1)}
 6.666667%{transform:matrix3d(1.3249968013,-0.0148935665,0,calc(0.3422329473 / var(--logo-width)),0.1028543894,1.2100822629,0,calc(0.0505718078 / var(--logo-height)),0,0,1,0,calc(-0.0806008003 * var(--logo-width)),calc(-0.0220402830 * var(--logo-height)),0,1)}
 7.222222%{transform:matrix3d(1.3508605402,-0.0166320483,0,calc(0.3732471142 / var(--logo-width)),0.1111221776,1.2288051909,0,calc(0.0552663640 / var(--logo-height)),0,0,1,0,calc(-0.0857816683 * var(--logo-width)),calc(-0.0230751587 * var(--logo-height)),0,1)}
 7.777778%{transform:matrix3d(1.3763229711,-0.0182824607,0,calc(0.4044324741 / var(--logo-width)),0.1191110541,1.2475529376,0,calc(0.0599420038 / var(--logo-height)),0,0,1,0,calc(-0.0906416698 * var(--logo-width)),calc(-0.0240668212 * var(--logo-height)),0,1)}
 8.333333%{transform:matrix3d(1.4013396941,-0.0198030144,0,calc(0.4357320422 / var(--logo-width)),0.1267672275,1.2662828004,0,calc(0.0645712734 / var(--logo-height)),0,0,1,0,calc(-0.0951676551 * var(--logo-width)),calc(-0.0250381303 * var(--logo-height)),0,1)}
 8.888889%{transform:matrix3d(1.4258672168,-0.0211510855,0,calc(0.4670858360 / var(--logo-width)),0.1340372787,1.2849501702,0,calc(0.0691252098 / var(--logo-height)),0,0,1,0,calc(-0.0993483072 * var(--logo-width)),calc(-0.0260129373 * var(--logo-height)),0,1)}
 9.444444%{transform:matrix3d(1.4498630929,-0.0222836088,0,calc(0.4984309328 / var(--logo-width)),0.1408686734,1.3035086207,0,calc(0.0735735942 / var(--logo-height)),0,0,1,0,calc(-0.1031742619 * var(--logo-width)),calc(-0.0270158304 * var(--logo-height)),0,1)}
 10.000000%{transform:matrix3d(1.4732860441,-0.0231575058,0,calc(0.5297015461 / var(--logo-width)),0.1472102792,1.3219100082,0,calc(0.0778852333 / var(--logo-height)),0,0,1,0,calc(-0.1066382082 * var(--logo-width)),calc(-0.0280718515 * var(--logo-height)),0,1)}
 10.555556%{transform:matrix3d(1.4960960655,-0.0237301436,0,calc(0.5608291213 / var(--logo-width)),0.1530128822,1.3401045837,0,calc(0.0820282683 / var(--logo-height)),0,0,1,0,calc(-0.1097349665 * var(--logo-width)),calc(-0.0292061877 * var(--logo-height)),0,1)}
 11.111111%{transform:matrix3d(1.5182545140,-0.0239598190,0,calc(0.5917424528 / var(--logo-width)),0.1582296948,1.3580411202,0,calc(0.0859705075 / var(--logo-height)),0,0,1,0,calc(-0.1124615423 * var(--logo-width)),calc(-0.0304438410 * var(--logo-height)),0,1)}
 11.666667%{transform:matrix3d(1.5397241796,-0.0238062632,0,calc(0.6223678259 / var(--logo-width)),0.1628168484,1.3756670561,0,calc(0.0896797782 / var(--logo-height)),0,0,1,0,calc(-0.1148171558 * var(--logo-width)),calc(-0.0318092812 * var(--logo-height)),0,1)}
 12.222222%{transform:matrix3d(1.5604693403,-0.0232311597,0,calc(0.6526291843 / var(--logo-width)),0.1667338653,1.3929286595,0,calc(0.0931242942 / var(--logo-height)),0,0,1,0,calc(-0.1168032445 * var(--logo-width)),calc(-0.0333260864 * var(--logo-height)),0,1)}
 12.777778%{transform:matrix3d(1.5804558025,-0.0221986697,0,calc(0.6824483271 / var(--logo-width)),0.1699441012,1.4097712147,0,calc(0.0962730337 / var(--logo-height)),0,0,1,0,calc(-0.1184234406 * var(--logo-width)),calc(-0.0350165780 * var(--logo-height)),0,1)}
 13.333333%{transform:matrix3d(1.5996509300,-0.0206759565,0,calc(0.7117451380 / var(--logo-width)),0.1724151553,1.4261392343,0,calc(0.0990961220 / var(--logo-height)),0,0,1,0,calc(-0.1196835218 * var(--logo-width)),calc(-0.0369014557 * var(--logo-height)),0,1)}
 13.888889%{transform:matrix3d(1.6180236613,-0.0186337001,0,calc(0.7404378492 / var(--logo-width)),0.1741192410,1.4419766997,0,calc(0.1015652145 / var(--logo-height)),0,0,1,0,calc(-0.1205913379 * var(--logo-width)),calc(-0.0389994386 * var(--logo-height)),0,1)}
 14.444444%{transform:matrix3d(1.6355445217,-0.0160465958,0,calc(0.7684433428 / var(--logo-width)),0.1750335132,1.4572273321,0,calc(0.1036538727 / var(--logo-height)),0,0,1,0,calc(-0.1211567126 * var(--logo-width)),calc(-0.0413269210 * var(--logo-height)),0,1)}
 15.000000%{transform:matrix3d(1.6521856307,-0.0128938251,0,calc(0.7956774916 / var(--logo-width)),0.1751403484,1.4718348960,0,calc(0.1053379286 / var(--logo-height)),0,0,1,0,calc(-0.1213913235 * var(--logo-width)),calc(-0.0438976476 * var(--logo-height)),0,1)}
 15.555556%{transform:matrix3d(1.6679207090,-0.0091594926,0,calc(0.8220555413 / var(--logo-width)),0.1744275741,1.4857435352,0,calc(0.1065958306 / var(--logo-height)),0,0,1,0,calc(-0.1213085623 * var(--logo-width)),calc(-0.0467224164 * var(--logo-height)),0,1)}
 16.111111%{transform:matrix3d(1.6827250874,-0.0048330185,0,calc(0.8474925345 / var(--logo-width)),0.1728886451,1.4988981431,0,calc(0.1074089652 / var(--logo-height)),0,0,1,0,calc(-0.1209233766 * var(--logo-width)),calc(-0.0498088149 * var(--logo-height)),0,1)}
 16.666667%{transform:matrix3d(1.6965757216,0.0000905208,0,calc(0.8719037763 / var(--logo-width)),0.1705227648,1.5112447634,0,calc(0.1077619488 / var(--logo-height)),0,0,1,0,calc(-0.1202520965 * var(--logo-width)),calc(-0.0531609971 * var(--logo-height)),0,1)}
 17.222222%{transform:matrix3d(1.7094512133,0.0056101128,0,calc(0.8952053408 / var(--logo-width)),0.1673349502,1.5227310212,0,calc(0.1076428839 / var(--logo-height)),0,0,1,0,calc(-0.1193122492 * var(--logo-width)),calc(-0.0567795042 * var(--logo-height)),0,1)}
 17.777778%{transform:matrix3d(1.7213318406,0.0117185961,0,calc(0.9173146142 / var(--logo-width)),0.1633360401,1.5333065790,0,calc(0.1070435738 / var(--logo-height)),0,0,1,0,calc(-0.1181223632 * var(--logo-width)),calc(-0.0606611372 * var(--logo-height)),0,1)}
 18.333333%{transform:matrix3d(1.7321995980,0.0184025223,0,calc(0.9381508713 / var(--logo-width)),0.1585426458,1.5429236114,0,calc(0.1059596928 / var(--logo-height)),0,0,1,0,calc(-0.1167017670 * var(--logo-width)),calc(-0.0647988817 * var(--logo-height)),0,1)}
 18.888889%{transform:matrix3d(1.7420382462,0.0256420972,0,calc(0.9576358794 / var(--logo-width)),0.1529770458,1.5515372943,0,calc(0.1043909054 / var(--logo-height)),0,0,1,0,calc(-0.1150703830 * var(--logo-width)),calc(-0.0691818910 * var(--logo-height)),0,1)}
 19.444444%{transform:matrix3d(1.7508333702,0.0334112048,0,calc(0.9756945215 / var(--logo-width)),0.1466670248,1.5591062962,0,calc(0.1023409334 / var(--logo-height)),0,0,1,0,calc(-0.1132485219 * var(--logo-width)),calc(-0.0737955264 * var(--logo-height)),0,1)}
 20.000000%{transform:matrix3d(1.7585724462,0.0416775185,0,calc(0.9922554306 / var(--logo-width)),0.1396456587,1.5655932662,0,calc(0.0998175664 / var(--logo-height)),0,0,1,0,calc(-0.1112566775 * var(--logo-width)),calc(-0.0786214569 * var(--logo-height)),0,1)}
 20.555556%{transform:matrix3d(1.7652449117,0.0504026985,0,calc(1.0072516242 / var(--logo-width)),0.1319510480,1.5709653051,0,calc(0.0968326153 / var(--logo-height)),0,0,1,0,calc(-0.1091153281 * var(--logo-width)),calc(-0.0836378161 * var(--logo-height)),0,1)}
 21.111111%{transform:matrix3d(1.7708422389,0.0595426753,0,calc(1.0206211289 / var(--logo-width)),0.1236260019,1.5751944098,0,calc(0.0934018085 / var(--logo-height)),0,0,1,0,calc(-0.1068447434 * var(--logo-width)),calc(-0.0888194153 * var(--logo-height)),0,1)}
 21.666667%{transform:matrix3d(1.7753580062,0.0690480166,0,calc(1.0323075816 / var(--logo-width)),0.1147176771,1.5782578796,0,calc(0.0895446294 / var(--logo-height)),0,0,1,0,calc(-0.1044648015 * var(--logo-width)),calc(-0.0941380075 * var(--logo-height)),0,1)}
 22.222222%{transform:matrix3d(1.7787879636,0.0788643732,0,calc(1.0422607962 / var(--logo-width)),0.1052771739,1.5801386728,0,calc(0.0852841003 / var(--logo-height)),0,0,1,0,calc(-0.1019948168 * var(--logo-width)),calc(-0.0995625986 * var(--logo-height)),0,1)}
 22.777778%{transform:matrix3d(1.7811300897,0.0889329962,0,calc(1.0504372837 / var(--logo-width)),0.0953590954,1.5808257036,0,calc(0.0806465118 / var(--logo-height)),0,0,1,0,calc(-0.0994533810 * var(--logo-width)),calc(-0.1050597998 * var(--logo-height)),0,1)}
 23.333333%{transform:matrix3d(1.7823846342,0.0991913194,0,calc(1.0568007131 / var(--logo-width)),0.0850210737,1.5803140687,0,calc(0.0756611057 / var(--logo-height)),0,0,1,0,calc(-0.0968582180 * var(--logo-width)),calc(-0.1105942131 * var(--logo-height)),0,1)}
 23.888889%{transform:matrix3d(1.7825541443,0.1095735951,0,calc(1.0613223037 / var(--logo-width)),0.0743232682,1.5786051965,0,calc(0.0703597132 / var(--logo-height)),0,0,1,0,calc(-0.0942260540 * var(--logo-width)),calc(-0.1161288427 * var(--logo-height)),0,1)}
 24.444444%{transform:matrix3d(1.7816434698,0.1200115738,0,calc(1.0639811386 / var(--logo-width)),0.0633278435,1.5757069116,0,calc(0.0647763570 / var(--logo-height)),0,0,1,0,calc(-0.0915725038 * var(--logo-width)),calc(-0.1216255241 * var(--logo-height)),0,1)}
 25.000000%{transform:matrix3d(1.7796597468,0.1304352152,0,calc(1.0647643940 / var(--logo-width)),0.0520984303,1.5716334121,0,calc(0.0589468236 / var(--logo-height)),0,0,1,0,calc(-0.0889119727 * var(--logo-width)),calc(-0.1270453614 * var(--logo-height)),0,1)}
 25.555556%{transform:matrix3d(1.7766123561,0.1407734185,0,calc(1.0636674765 / var(--logo-width)),0.0406995782,1.5664051554,0,calc(0.0529082135 / var(--logo-height)),0,0,1,0,calc(-0.0862575759 * var(--logo-width)),calc(-0.1323491653 * var(--logo-height)),0,1)}
 26.111111%{transform:matrix3d(1.7725128573,0.1509547580,0,calc(1.0606940679 / var(--logo-width)),0.0291962055,1.5600486554,0,calc(0.0466984769 / var(--logo-height)),0,0,1,0,calc(-0.0836210733 * var(--logo-width)),calc(-0.1374978813 * var(--logo-height)),0,1)}
 26.666667%{transform:matrix3d(1.7673748980,0.1609082135,0,calc(1.0558560770 / var(--logo-width)),0.0176530517,1.5525961929,0,calc(0.0403559457 / var(--logo-height)),0,0,1,0,calc(-0.0810128199 * var(--logo-width)),calc(-0.1424530030 * var(--logo-height)),0,1)}
 27.222222%{transform:matrix3d(1.7612141006,0.1705638806,0,calc(1.0491734989 / var(--logo-width)),0.0061341405,1.5440854455,0,calc(0.0339188670 / var(--logo-height)),0,0,1,0,calc(-0.0784417328 * var(--logo-width)),calc(-0.1471769603 * var(--logo-height)),0,1)}
 27.777778%{transform:matrix3d(1.7540479273,0.1798536531,0,calc(1.0406741887 / var(--logo-width)),-0.0052977418,1.5345590434,0,calc(0.0274249489 / var(--logo-height)),0,0,1,0,calc(-0.0759152712 * var(--logo-width)),calc(-0.1516334786 * var(--logo-height)),0,1)}
 28.333333%{transform:matrix3d(1.7458955286,0.1887118638,0,calc(1.0303935542 / var(--logo-width)),-0.0165815468,1.5240640624,0,calc(0.0209109261 / var(--logo-height)),0,0,1,0,calc(-0.0734394309 * var(--logo-width)),calc(-0.1557879027 * var(--logo-height)),0,1)}
 28.888889%{transform:matrix3d(1.7367775780,0.1970758780,0,calc(1.0183741782 / var(--logo-width)),-0.0276584390,1.5126514642,0,calc(0.0144121504 / var(--logo-height)),0,0,1,0,calc(-0.0710187511 * var(--logo-width)),calc(-0.1596074827 * var(--logo-height)),0,1)}
 29.444444%{transform:matrix3d(1.7267160977,0.2048866315,0,calc(1.0046653780 / var(--logo-width)),-0.0384722397,1.5003754954,0,calc(0.0079622158 / var(--logo-height)),0,0,1,0,calc(-0.0686563330 * var(--logo-width)),calc(-0.1630616179 * var(--logo-height)),0,1)}
 30.000000%{transform:matrix3d(1.7157342808,0.2120891076,0,calc(0.9893227152 / var(--logo-width)),-0.0489698375,1.4872930611,0,calc(0.0015926207 / var(--logo-height)),0,0,1,0,calc(-0.0663538692 * var(--logo-width)),calc(-0.1661220595 * var(--logo-height)),0,1)}
 30.555556%{transform:matrix3d(1.7038563145,0.2186327504,0,calc(0.9724074661 / var(--logo-width)),-0.0591015608,1.4734630823,0,calc(-0.0046675265 / var(--logo-height)),0,0,1,0,calc(-0.0641116826 * var(--logo-width)),calc(-0.1687630702 * var(--logo-height)),0,1)}
 31.111111%{transform:matrix3d(1.6911072099,0.2244718113,0,calc(0.9539860640 / var(--logo-width)),-0.0688215115,1.4589458535,0,calc(-0.0107917565 / var(--logo-height)),0,0,1,0,calc(-0.0619287740 * var(--logo-width)),calc(-0.1709615442 * var(--logo-height)),0,1)}
 31.666667%{transform:matrix3d(1.6775126430,0.2295656296,0,calc(0.9341295259 / var(--logo-width)),-0.0780878570,1.4438024120,0,calc(-0.0167564391 / var(--logo-height)),0,0,1,0,calc(-0.0598028785 * var(--logo-width)),calc(-0.1726970877 * var(--logo-height)),0,1)}
 32.222222%{transform:matrix3d(1.6630988108,0.2338788477,0,calc(0.9129128732 / var(--logo-width)),-0.0868630795,1.4280939290,0,calc(-0.0225409346 / var(--logo-height)),0,0,1,0,calc(-0.0577305286 * var(--logo-width)),calc(-0.1739520645 * var(--logo-height)),0,1)}
 32.777778%{transform:matrix3d(1.6478923070,0.2373815630,0,calc(0.8904145554 / var(--logo-width)),-0.0951141821,1.4118811352,0,calc(-0.0281276953 / var(--logo-height)),0,0,1,0,calc(-0.0557071245 * var(--logo-width)),calc(-0.1747116097 * var(--logo-height)),0,1)}
 33.333333%{transform:matrix3d(1.6319200199,0.2400494196,0,calc(0.8667158862 / var(--logo-width)),-0.1028128508,1.3952237888,0,calc(-0.0335023177 / var(--logo-height)),0,0,1,0,calc(-0.0537270108 * var(--logo-width)),calc(-0.1749636163 * var(--logo-height)),0,1)}
 33.888889%{transform:matrix3d(1.6152090537,0.2418636446,0,calc(0.8419004977 / var(--logo-width)),-0.1099355736,1.3781801927,0,calc(-0.0386535483 / var(--logo-height)),0,0,1,0,calc(-0.0517835589 * var(--logo-width)),calc(-0.1746986983 * var(--logo-height)),0,1)}
 34.444444%{transform:matrix3d(1.5977866756,0.2428110323,0,calc(0.8160538178 / var(--logo-width)),-0.1164637158,1.3608067678,0,calc(-0.0435732442 / var(--logo-height)),0,0,1,0,calc(-0.0498692560 * var(--logo-width)),calc(-0.1739101350 * var(--logo-height)),0,1)}
 35.000000%{transform:matrix3d(1.5796802876,0.2428838808,0,calc(0.7892625748 / var(--logo-width)),-0.1223835524,1.3431576863,0,calc(-0.0482562915 / var(--logo-height)),0,0,1,0,calc(-0.0479757980 * var(--logo-width)),calc(-0.1725938013 * var(--logo-height)),0,1)}
 35.555556%{transform:matrix3d(1.5609174229,0.2420798869,0,calc(0.7616143315 / var(--logo-width)),-0.1276862586,1.3252845664,0,calc(-0.0527004856 / var(--logo-height)),0,0,1,0,calc(-0.0460941891 * var(--logo-width)),calc(-0.1707480862 * var(--logo-height)),0,1)}
 36.111111%{transform:matrix3d(1.5415257639,0.2404020027,0,calc(0.7331970478 / var(--logo-width)),-0.1323678593,1.3072362305,0,calc(-0.0569063762 / var(--logo-height)),0,0,1,0,calc(-0.0442148453 * var(--logo-width)),calc(-0.1683738052 * var(--logo-height)),0,1)}
 36.666667%{transform:matrix3d(1.5215331804,0.2378582578,0,calc(0.7040986741 / var(--logo-width)),-0.1364291378,1.2890585264,0,calc(-0.0608770823 / var(--logo-height)),0,0,1,0,calc(-0.0423277021 * var(--logo-width)),calc(-0.1654741076 * var(--logo-height)),0,1)}
 37.222222%{transform:matrix3d(1.5009677837,0.2344615527,0,calc(0.6744067713 / var(--logo-width)),-0.1398755053,1.2707942086,0,calc(-0.0646180808 / var(--logo-height)),0,0,1,0,calc(-0.0404223270 * var(--logo-width)),calc(-0.1620543821 * var(--logo-height)),0,1)}
 37.777778%{transform:matrix3d(1.4798579929,0.2302294252,0,calc(0.6442081576 / var(--logo-width)),-0.1427168332,1.2524828772,0,calc(-0.0681369729 / var(--logo-height)),0,0,1,0,calc(-0.0384880348 * var(--logo-width)),calc(-0.1581221616 * var(--logo-height)),0,1)}
 38.333333%{transform:matrix3d(1.4582326088,0.2251837941,0,calc(0.6135885781 / var(--logo-width)),-0.1449672482,1.2341609718,0,calc(-0.0714432334 / var(--logo-height)),0,0,1,0,calc(-0.0365140048 * var(--logo-width)),calc(-0.1536870293 * var(--logo-height)),0,1)}
 38.888889%{transform:matrix3d(1.4361208904,0.2193506823,0,calc(0.5826323953 / var(--logo-width)),-0.1466448933,1.2158618129,0,calc(-0.0745479477 / var(--logo-height)),0,0,1,0,calc(-0.0344894007 * var(--logo-width)),calc(-0.1487605256 * var(--logo-height)),0,1)}
 39.444444%{transform:matrix3d(1.4135526305,0.2127599232,0,calc(0.5514222975 / var(--logo-width)),-0.1477716561,1.1976156892,0,calc(-0.0774635399 / var(--logo-height)),0,0,1,0,calc(-0.0324034907 * var(--logo-width)),calc(-0.1433560564 * var(--logo-height)),0,1)}
 40.000000%{transform:matrix3d(1.3905582242,0.2054448509,0,calc(0.5200390236 / var(--logo-width)),-0.1483728669,1.1794499810,0,calc(-0.0802034967 / var(--logo-height)),0,0,1,0,calc(-0.0302457662 * var(--logo-width)),calc(-0.1374888027 * var(--logo-height)),0,1)}
 40.555556%{transform:matrix3d(1.3671687268,0.1974419784,0,calc(0.4885611008 / var(--logo-width)),-0.1484769696,1.1613893178,0,calc(-0.0827820929 / var(--logo-height)),0,0,1,0,calc(-0.0280060594 * var(--logo-width)),calc(-0.1311756299 * var(--logo-height)),0,1)}
 41.111111%{transform:matrix3d(1.3434158974,0.1887906646,0,calc(0.4570645956 / var(--logo-width)),-0.1481151690,1.1434557607,0,calc(-0.0852141194 / var(--logo-height)),0,0,1,0,calc(-0.0256746571 * var(--logo-width)),calc(-0.1244349969 * var(--logo-height)),0,1)}
 41.666667%{transform:matrix3d(1.3193322243,0.1795327726,0,calc(0.4256228765 / var(--logo-width)),-0.1473210577,1.1256690054,0,calc(-0.0875146205 / var(--logo-height)),0,0,1,0,calc(-0.0232424097 * var(--logo-width)),calc(-0.1172868631 * var(--logo-height)),0,1)}
 42.222222%{transform:matrix3d(1.2949509307,0.1697123228,0,calc(0.3943063881 / var(--logo-width)),-0.1461302262,1.1080465999,0,calc(-0.0896986427 / var(--logo-height)),0,0,1,0,calc(-0.0207008335 * var(--logo-width)),calc(-0.1097525933 * var(--logo-height)),0,1)}
 42.777778%{transform:matrix3d(1.2703059567,0.1593751409,0,calc(0.3631824382 / var(--logo-width)),-0.1445798628,1.0906041702,0,calc(-0.0917809973 / var(--logo-height)),0,0,1,0,calc(-0.0180422057 * var(--logo-width)),calc(-0.1018548582 * var(--logo-height)),0,1)}
 43.333333%{transform:matrix3d(1.2454319204,0.1485685063,0,calc(0.3323149975 / var(--logo-width)),-0.1427083451,1.0733556496,0,calc(-0.0937760419 / var(--logo-height)),0,0,1,0,calc(-0.0152596497 * var(--logo-width)),calc(-0.0936175310 * var(--logo-height)),0,1)}
 43.888889%{transform:matrix3d(1.2203640536,0.1373408004,0,calc(0.3017645151 / var(--logo-width)),-0.1405548311,1.0563135063,0,calc(-0.0956974806 / var(--logo-height)),0,0,1,0,calc(-0.0123472105 * var(--logo-width)),calc(-0.0850655785 * var(--logo-height)),0,1)}
 44.444444%{transform:matrix3d(1.1951381168,0.1257411605,0,calc(0.2715877515 / var(--logo-width)),-0.1381588528,1.0394889660,0,calc(-0.0975581867 / var(--logo-height)),0,0,1,0,calc(-0.0092999182 * var(--logo-width)),calc(-0.0762249471 * var(--logo-height)),0,1)}
 45.000000%{transform:matrix3d(1.1697902919,0.1138191407,0,calc(0.2418376298 / var(--logo-width)),-0.1355599183,1.0228922233,0,calc(-0.0993700488 / var(--logo-height)),0,0,1,0,calc(-0.0061138399 * var(--logo-width)),calc(-0.0671224432 * var(--logo-height)),0,1)}
 45.555556%{transform:matrix3d(1.1443570573,0.1016243826,0,calc(0.2125631097 / var(--logo-width)),-0.1327971280,1.0065326418,0,calc(-0.1011438413 / var(--logo-height)),0,0,1,0,calc(-0.0027861178 * var(--logo-width)),calc(-0.0577856084 * var(--logo-height)),0,1)}
 46.111111%{transform:matrix3d(1.1188750464,0.0892062992,0,calc(0.1838090852 / var(--logo-width)),-0.1299088084,0.9904189373,0,calc(-0.1028891198 / var(--logo-height)),0,0,1,0,calc(0.0006850047 * var(--logo-width)),calc(-0.0482425901 * var(--logo-height)),0,1)}
 46.666667%{transform:matrix3d(1.0933808938,0.0766137756,0,calc(0.1556163081 / var(--logo-width)),-0.1269321688,0.9745593438,0,calc(-0.1046141415 / var(--logo-height)),0,0,1,0,calc(0.0043001710 * var(--logo-width)),calc(-0.0385220082 * var(--logo-height)),0,1)}
 47.222222%{transform:matrix3d(1.0679110724,0.0638948867,0,calc(0.1280213397 / var(--logo-width)),-0.1239029848,0.9589617604,0,calc(-0.1063258107 / var(--logo-height)),0,0,1,0,calc(0.0080589117 * var(--logo-width)),calc(-0.0286528192 * var(--logo-height)),0,1)}
 47.777778%{transform:matrix3d(1.0425017256,0.0510966366,0,calc(0.1010565311 / var(--logo-width)),-0.1208553114,0.9436338776,0,calc(-0.1080296481 / var(--logo-height)),0,0,1,0,calc(0.0119596574 * var(--logo-width)),calc(-0.0186641787 * var(--logo-height)),0,1)}
 48.333333%{transform:matrix3d(1.0171884974,0.0382647210,0,calc(0.0747500340 / var(--logo-width)),-0.1178212289,0.9285832829,0,calc(-0.1097297826 / var(--logo-height)),0,0,1,0,calc(0.0159997639 * var(--logo-width)),calc(-0.0085853030 * var(--logo-height)),0,1)}
 48.888889%{transform:matrix3d(0.9920063663,0.0254433132,0,calc(0.0491258413 / var(--logo-width)),-0.1148306241,0.9138175456,0,calc(-0.1114289652 / var(--logo-height)),0,0,1,0,calc(0.0201755471 * var(--logo-width)),calc(0.0015546668 * var(--logo-height)),0,1)}
 49.444444%{transform:matrix3d(0.9669894835,0.0126748759,0,calc(0.0242038578 / var(--logo-width)),-0.1119110066,0.8993442814,0,calc(-0.1131286017 / var(--logo-height)),0,0,1,0,calc(0.0244823285 * var(--logo-width)),calc(0.0117267995 * var(--logo-height)),0,1)}
 50.000000%{transform:matrix3d(0.9421710222,0.0000000000,0,calc(0.0000000000 / var(--logo-width)),-0.1090873630,0.8851711968,0,calc(-0.1148288032 / var(--logo-height)),0,0,1,0,calc(0.0289144889 * var(--logo-width)),calc(0.0219025035 * var(--logo-height)),0,1)}
 50.555556%{transform:matrix3d(0.9175830374,-0.0125427309,0,calc(-0.0234736767 / var(--logo-width)),-0.1063820476,0.8713061153,0,calc(-0.1165284528 / var(--logo-height)),0,0,1,0,calc(0.0334655289 * var(--logo-width)),calc(0.0320536515 * var(--logo-height)),0,1)}
 51.111111%{transform:matrix3d(0.8932563419,-0.0249168492,0,calc(-0.0462088244 / var(--logo-width)),-0.1038147091,0.8577569858,0,calc(-0.1182252848 / var(--logo-height)),0,0,1,0,calc(0.0381281357 * var(--logo-width)),calc(0.0421526988 * var(--logo-height)),0,1)}
 51.666667%{transform:matrix3d(0.8692203973,-0.0370880859,0,calc(-0.0682006262 / var(--logo-width)),-0.1014022526,0.8445318758,0,calc(-0.1199159750 / var(--logo-height)),0,0,1,0,calc(0.0428942538 * var(--logo-width)),calc(0.0521727941 * var(--logo-height)),0,1)}
 52.222222%{transform:matrix3d(0.8455032249,-0.0490244283,0,calc(-0.0894475981 / var(--logo-width)),-0.0991588355,0.8316389495,0,calc(-0.1215962401 / var(--logo-height)),0,0,1,0,calc(0.0477551593 * var(--logo-width)),calc(0.0620878813 * var(--logo-height)),0,1)}
 52.777778%{transform:matrix3d(0.8221313336,-0.0606961547,0,calc(-0.1099513735 / var(--logo-width)),-0.0970958937,0.8190864335,0,calc(-0.1232609436 / var(--logo-height)),0,0,1,0,calc(0.0527015354 * var(--logo-width)),calc(0.0718727932 * var(--logo-height)),0,1)}
 53.333333%{transform:matrix3d(0.7991296690,-0.0720758459,0,calc(-0.1297164718 / var(--logo-width)),-0.0952221979,0.8068825722,0,calc(-0.1249042063 / var(--logo-height)),0,0,1,0,calc(0.0577235491 * var(--logo-width)),calc(0.0815033348 * var(--logo-height)),0,1)}
 53.888889%{transform:matrix3d(0.7765215806,-0.0831383775,0,calc(-0.1487500562 / var(--logo-width)),-0.0935439350,0.7950355736,0,calc(-0.1265195192 / var(--logo-height)),0,0,1,0,calc(0.0628109268 * var(--logo-width)),calc(0.0909563569 * var(--logo-height)),0,1)}
 54.444444%{transform:matrix3d(0.7543288089,-0.0938608933,0,calc(-0.1670616816 / var(--logo-width)),-0.0920648144,0.7835535480,0,calc(-0.1280998571 / var(--logo-height)),0,0,1,0,calc(0.0679530292 * var(--logo-width)),calc(0.1002098206 * var(--logo-height)),0,1)}
 55.000000%{transform:matrix3d(0.7325714904,-0.1042227629,0,calc(-0.1846630378 / var(--logo-width)),-0.0907861932,0.7724444413,0,calc(-0.1296377922 / var(--logo-height)),0,0,1,0,calc(0.0731389231 * var(--logo-width)),calc(0.1092428506 * var(--logo-height)),0,1)}
 55.555556%{transform:matrix3d(0.7112681795,-0.1142055248,0,calc(-0.2015676894 / var(--logo-width)),-0.0897072199,0.7617159640,0,calc(-0.1311256043 / var(--logo-height)),0,0,1,0,calc(0.0783574513 * var(--logo-width)),calc(0.1180357801 * var(--logo-height)),0,1)}
 56.111111%{transform:matrix3d(0.6904358867,-0.1237928186,0,calc(-0.2177908164 / var(--logo-width)),-0.0888249928,0.7513755185,0,calc(-0.1325553888 / var(--logo-height)),0,0,1,0,calc(0.0835972978 * var(--logo-width)),calc(0.1265701853 * var(--logo-height)),0,1)}
 56.666667%{transform:matrix3d(0.6700901307,-0.1329703067,0,calc(-0.2333489571 / var(--logo-width)),-0.0881347296,0.7414301249,0,calc(-0.1339191595 / var(--logo-height)),0,0,1,0,calc(0.0888470506 * var(--logo-width)),calc(0.1348289122 * var(--logo-height)),0,1)}
 57.222222%{transform:matrix3d(0.6502450027,-0.1417255887,0,calc(-0.2482597562 / var(--logo-width)),-0.0876299461,0.7318863481,0,calc(-0.1352089463 / var(--logo-height)),0,0,1,0,calc(0.0940952587 * var(--logo-width)),calc(0.1427960936 * var(--logo-height)),0,1)}
 57.777778%{transform:matrix3d(0.6309132422,-0.1500481103,0,calc(-0.2625417207 / var(--logo-width)),-0.0873026418,0.7227502265,0,calc(-0.1364168871 / var(--logo-height)),0,0,1,0,calc(0.0993304864 * var(--logo-width)),calc(0.1504571601 * var(--logo-height)),0,1)}
 58.333333%{transform:matrix3d(0.6121063206,-0.1579290687,0,calc(-0.2762139847 / var(--logo-width)),-0.0871434889,0.7140272032,0,calc(-0.1375353133 / var(--logo-height)),0,0,1,0,calc(0.1045413619 * var(--logo-width)),calc(0.1577988425 * var(--logo-height)),0,1)}
 58.888889%{transform:matrix3d(0.5938345330,-0.1653613150,0,calc(-0.2892960845 / var(--logo-width)),-0.0871420230,0.7057220629,0,calc(-0.1385568281 / var(--logo-height)),0,0,1,0,calc(0.1097166221 * var(--logo-width)),calc(0.1648091683 * var(--logo-height)),0,1)}
 59.444444%{transform:matrix3d(0.5761070941,-0.1723392571,0,calc(-0.3018077467 / var(--logo-width)),-0.0872868336,0.6978388724,0,calc(-0.1394743782 / var(--logo-height)),0,0,1,0,calc(0.1148451533 * var(--logo-width)),calc(0.1714774524 * var(--logo-height)),0,1)}
 60.000000%{transform:matrix3d(0.5589322384,-0.1788587628,0,calc(-0.3137686890 / var(--logo-width)),-0.0875657522,0.6903809278,0,calc(-0.1402813183 / var(--logo-height)),0,0,1,0,calc(0.1199160270 * var(--logo-width)),calc(0.1777942826 * var(--logo-height)),0,1)}
 60.555556%{transform:matrix3d(0.5423173211,-0.1849170655,0,calc(-0.3251984351 / var(--logo-width)),-0.0879660359,0.6833507091,0,calc(-0.1409714682 / var(--logo-height)),0,0,1,0,calc(0.1249185323 * var(--logo-width)),calc(0.1837515002 * var(--logo-height)),0,1)}
 61.111111%{transform:matrix3d(0.5262689206,-0.1905126716,0,calc(-0.3361161446 / var(--logo-width)),-0.0884745459,0.6767498408,0,calc(-0.1415391633 / var(--logo-height)),0,0,1,0,calc(0.1298422044 * var(--logo-width)),calc(0.1893421766 * var(--logo-height)),0,1)}
 61.666667%{transform:matrix3d(0.5107929384,-0.1956452734,0,calc(-0.3465404576 / var(--logo-width)),-0.0890779185,0.6705790620,0,calc(-0.1419792975 / var(--logo-height)),0,0,1,0,calc(0.1346768495 * var(--logo-width)),calc(0.1945605865 * var(--logo-height)),0,1)}
 62.222222%{transform:matrix3d(0.4958946972,-0.2003156650,0,calc(-0.3564893552 / var(--logo-width)),-0.0897627277,0.6648382039,0,calc(-0.1422873600 / var(--logo-height)),0,0,1,0,calc(0.1394125663 * var(--logo-width)),calc(0.1994021784 * var(--logo-height)),0,1)}
 62.777778%{transform:matrix3d(0.4815790350,-0.2045256642,0,calc(-0.3659800344 / var(--logo-width)),-0.0905156382,0.6595261765,0,calc(-0.1424594654 / var(--logo-height)),0,0,1,0,calc(0.1440397644 * var(--logo-width)),calc(0.2038635411 * var(--logo-height)),0,1)}
 63.333333%{transform:matrix3d(0.4678503944,-0.2082780391,0,calc(-0.3750287998 / var(--logo-width)),-0.0913235485,0.6546409638,0,calc(-0.1424923775 / var(--logo-height)),0,0,1,0,calc(0.1485491801 * var(--logo-width)),calc(0.2079423699 * var(--logo-height)),0,1)}
 63.888889%{transform:matrix3d(0.4547129069,-0.2115764404,0,calc(-0.3836509685 / var(--logo-width)),-0.0921737221,0.6501796285,0,calc(-0.1423835275 / var(--logo-height)),0,0,1,0,calc(0.1529318897 * var(--logo-width)),calc(0.2116374289 * var(--logo-height)),0,1)}
 64.444444%{transform:matrix3d(0.4421704697,-0.2144253392,0,calc(-0.3918607909 / var(--logo-width)),-0.0930539065,0.6461383250,0,calc(-0.1421310259 / var(--logo-height)),0,0,1,0,calc(0.1571793194 * var(--logo-width)),calc(0.2149485133 * var(--logo-height)),0,1)}
 65.000000%{transform:matrix3d(0.4302268167,-0.2168299707,0,calc(-0.3996713851 / var(--logo-width)),-0.0939524399,0.6425123219,0,calc(-0.1417336702 / var(--logo-height)),0,0,1,0,calc(0.1612832547 * var(--logo-width)),calc(0.2178764093 * var(--logo-height)),0,1)}
 65.555556%{transform:matrix3d(0.4188855818,-0.2187962835,0,calc(-0.4070946847 / var(--logo-width)),-0.0948583449,0.6392960332,0,calc(-0.1411909470 / var(--logo-height)),0,0,1,0,calc(0.1652358460 * var(--logo-width)),calc(0.2204228528 * var(--logo-height)),0,1)}
 66.111111%{transform:matrix3d(0.4081503547,-0.2203308930,0,calc(-0.4141413997 / var(--logo-width)),-0.0957614075,0.6364830567,0,calc(-0.1405030292 / var(--logo-height)),0,0,1,0,calc(0.1690296134 * var(--logo-width)),calc(0.2225904879 * var(--logo-height)),0,1)}
 66.666667%{transform:matrix3d(0.3980247286,-0.2214410417,0,calc(-0.4208209894 / var(--logo-width)),-0.0966522439,0.6340662217,0,calc(-0.1396707697 / var(--logo-height)),0,0,1,0,calc(0.1726574493 * var(--logo-width)),calc(0.2243828237 * var(--logo-height)),0,1)}
 67.222222%{transform:matrix3d(0.3885123409,-0.2221345625,0,calc(-0.4271416465 / var(--logo-width)),-0.0975223516,0.6320376434,0,calc(-0.1386956903 / var(--logo-height)),0,0,1,0,calc(0.1761126192 * var(--logo-width)),calc(0.2258041907 * var(--logo-height)),0,1)}
 67.777778%{transform:matrix3d(0.3796169055,-0.2224198473,0,calc(-0.4331102914 / var(--logo-width)),-0.0983641477,0.6303887842,0,calc(-0.1375799673 / var(--logo-height)),0,0,1,0,calc(0.1793887615 * var(--logo-width)),calc(0.2268596967 * var(--logo-height)),0,1)}
 68.333333%{transform:matrix3d(0.3713422379,-0.2223058190,0,calc(-0.4387325769 / var(--logo-width)),-0.0991709921,0.6291105217,0,calc(-0.1363264135 / var(--logo-height)),0,0,1,0,calc(0.1824798850 * var(--logo-width)),calc(0.2275551819 * var(--logo-height)),0,1)}
 68.888889%{transform:matrix3d(0.3636922737,-0.2218019076,0,calc(-0.4440129010 / var(--logo-width)),-0.0999371979,0.6281932218,0,calc(-0.1349384563 / var(--logo-height)),0,0,1,0,calc(0.1853803654 * var(--logo-width)),calc(0.2278971743 * var(--logo-height)),0,1)}
 69.444444%{transform:matrix3d(0.3566710792,-0.2209180286,0,calc(-0.4489544273 / var(--logo-width)),-0.1006580271,0.6276268168,0,calc(-0.1334201140 / var(--logo-height)),0,0,1,0,calc(0.1880849403 * var(--logo-width)),calc(0.2278928437 * var(--logo-height)),0,1)}
 70.000000%{transform:matrix3d(0.3502828560,-0.2196645645,0,calc(-0.4535591132 / var(--logo-width)),-0.1013296734,0.6274008884,0,calc(-0.1317759675 / var(--logo-height)),0,0,1,0,calc(0.1905887030 * var(--logo-width)),calc(0.2275499566 * var(--logo-height)),0,1)}
 70.555556%{transform:matrix3d(0.3445319403,-0.2180523486,0,calc(-0.4578277436 / var(--logo-width)),-0.1019492324,0.6275047531,0,calc(-0.1300111307 / var(--logo-height)),0,0,1,0,calc(0.1928870950 * var(--logo-width)),calc(0.2268768304 * var(--logo-height)),0,1)}
 71.111111%{transform:matrix3d(0.3394227959,-0.2160926499,0,calc(-0.4617599698 / var(--logo-width)),-0.1025146593,0.6279275510,0,calc(-0.1281312172 / var(--logo-height)),0,0,1,0,calc(0.1949758969 * var(--logo-width)),calc(0.2258822885 * var(--logo-height)),0,1)}
 71.666667%{transform:matrix3d(0.3349600023,-0.2137971605,0,calc(-0.4653543534 / var(--logo-width)),-0.1030247146,0.6286583361,0,calc(-0.1261423049 / var(--logo-height)),0,0,1,0,calc(0.1968512187 * var(--logo-width)),calc(0.2245756144 * var(--logo-height)),0,1)}
 72.222222%{transform:matrix3d(0.3311482391,-0.2111779826,0,calc(-0.4686084134 / var(--logo-width)),-0.1034788996,0.6296861680,0,calc(-0.1240508978 / var(--logo-height)),0,0,1,0,calc(0.1985094892 * var(--logo-width)),calc(0.2229665073 * var(--logo-height)),0,1)}
 72.777778%{transform:matrix3d(0.3279922658,-0.2082476175,0,calc(-0.4715186765 / var(--logo-width)),-0.1038773811,0.6310002039,0,calc(-0.1218638861 / var(--logo-height)),0,0,1,0,calc(0.1999474436 * var(--logo-width)),calc(0.2210650381 * var(--logo-height)),0,1)}
 73.333333%{transform:matrix3d(0.3254968985,-0.2050189541,0,calc(-0.4740807293 / var(--logo-width)),-0.1042209076,0.6325897903,0,calc(-0.1195885026 / var(--logo-height)),0,0,1,0,calc(0.2011621113 * var(--logo-width)),calc(0.2188816057 * var(--logo-height)),0,1)}
 73.888889%{transform:matrix3d(0.3236669839,-0.2015052573,0,calc(-0.4762892730 / var(--logo-width)),-0.1045107168,0.6344445534,0,calc(-0.1172322780 / var(--logo-height)),0,0,1,0,calc(0.2021508029 * var(--logo-width)),calc(0.2164268948 * var(--logo-height)),0,1)}
 74.444444%{transform:matrix3d(0.3225073707,-0.1977201572,0,calc(-0.4781381780 / var(--logo-width)),-0.1047484364,0.6365544880,0,calc(-0.1148029932 / var(--logo-height)),0,0,1,0,calc(0.2029110960 * var(--logo-width)),calc(0.2137118344 * var(--logo-height)),0,1)}
 75.000000%{transform:matrix3d(0.3220228788,-0.1936776368,0,calc(-0.4796205403 / var(--logo-width)),-0.1049359784,0.6389100436,0,calc(-0.1123086294 / var(--logo-height)),0,0,1,0,calc(0.2034408216 * var(--logo-width)),calc(0.2107475585 * var(--logo-height)),0,1)}
 75.555556%{transform:matrix3d(0.3222182675,-0.1893920196,0,calc(-0.4807287370 / var(--logo-width)),-0.1050754298,0.6415022080,0,calc(-0.1097573165 / var(--logo-height)),0,0,1,0,calc(0.2037380507 * var(--logo-width)),calc(0.2075453678 * var(--logo-height)),0,1)}
 76.111111%{transform:matrix3d(0.3230982021,-0.1848779562,0,calc(-0.4814544817 / var(--logo-width)),-0.1051689380,0.6443225867,0,calc(-0.1071572783 / var(--logo-height)),0,0,1,0,calc(0.2038010796 * var(--logo-width)),calc(0.2041166932 * var(--logo-height)),0,1)}
 76.666667%{transform:matrix3d(0.3246672188,-0.1801504100,0,calc(-0.4817888802 / var(--logo-width)),-0.1052185963,0.6473634779,0,calc(-0.1045167771 / var(--logo-height)),0,0,1,0,calc(0.2036284178 * var(--logo-width)),calc(0.2004730620 * var(--logo-height)),0,1)}
 77.222222%{transform:matrix3d(0.3269296905,-0.1752246423,0,calc(-0.4817224839 / var(--logo-width)),-0.1052263264,0.6506179428,0,calc(-0.1018440547 / var(--logo-height)),0,0,1,0,calc(0.2032187751 * var(--logo-width)),calc(0.1966260656 * var(--logo-height)),0,1)}
 77.777778%{transform:matrix3d(0.3298897901,-0.1701161956,0,calc(-0.4812453432 / var(--logo-width)),-0.1051937632,0.6540798705,0,calc(-0.0991472733 / var(--logo-height)),0,0,1,0,calc(0.2025710503 * var(--logo-width)),calc(0.1925873309 * var(--logo-height)),0,1)}
 78.333333%{transform:matrix3d(0.3335514547,-0.1648408759,0,calc(-0.4803470586 / var(--logo-width)),-0.1051221408,0.6577440367,0,calc(-0.0964344535 / var(--logo-height)),0,0,1,0,calc(0.2016843216 * var(--logo-width)),calc(0.1883684930 * var(--logo-height)),0,1)}
 78.888889%{transform:matrix3d(0.3379183486,-0.1594147344,0,calc(-0.4790168318 / var(--logo-width)),-0.1050121819,0.6616061557,0,calc(-0.0937134121 / var(--logo-height)),0,0,1,0,calc(0.2005578382 * var(--logo-width)),calc(0.1839811716 * var(--logo-height)),0,1)}
 79.444444%{transform:matrix3d(0.3429938268,-0.1538540469,0,calc(-0.4772435138 / var(--logo-width)),-0.1048639928,0.6656629261,0,calc(-0.0909916977 / var(--logo-height)),0,0,1,0,calc(0.1991910141 * var(--logo-width)),calc(0.1794369507 * var(--logo-height)),0,1)}
 80.000000%{transform:matrix3d(0.3487808969,-0.1481752930,0,calc(-0.4750156526 / var(--logo-width)),-0.1046769643,0.6699120675,0,calc(-0.0882765273 / var(--logo-height)),0,0,1,0,calc(0.1975834244 * var(--logo-width)),calc(0.1747473603 * var(--logo-height)),0,1)}
 80.555556%{transform:matrix3d(0.3552821816,-0.1423951333,0,calc(-0.4723215392 / var(--logo-width)),-0.1044496804,0.6743523512,0,calc(-0.0855747213 / var(--logo-height)),0,0,1,0,calc(0.1957348039 * var(--logo-width)),calc(0.1699238624 * var(--logo-height)),0,1)}
 81.111111%{transform:matrix3d(0.3624998806,-0.1365303856,0,calc(-0.4691492521 / var(--logo-width)),-0.1041798366,0.6789836204,0,calc(-0.0828926393 / var(--logo-height)),0,0,1,0,calc(0.1936450485 * var(--logo-width)),calc(0.1649778393 * var(--logo-height)),0,1)}
 81.666667%{transform:matrix3d(0.3704357317,-0.1305979999,0,calc(-0.4654867005 / var(--logo-width)),-0.1038641683,0.6838068031,0,calc(-0.0802361175 / var(--logo-height)),0,0,1,0,calc(0.1913142202 * var(--logo-width)),calc(0.1599205860 * var(--logo-height)),0,1)}
 82.222222%{transform:matrix3d(0.3790909710,-0.1246150318,0,calc(-0.4613216673 / var(--logo-width)),-0.1034983914,0.6888239152,0,calc(-0.0776104064 / var(--logo-height)),0,0,1,0,calc(0.1887425551 * var(--logo-width)),calc(0.1547633048 * var(--logo-height)),0,1)}
 82.777778%{transform:matrix3d(0.3884662933,-0.1185986153,0,calc(-0.4566418500 / var(--logo-width)),-0.1030771559,0.6940380538,0,calc(-0.0750201117 / var(--logo-height)),0,0,1,0,calc(0.1859304744 * var(--logo-width)),calc(0.1495171033 * var(--logo-height)),0,1)}
 83.333333%{transform:matrix3d(0.3985618106,-0.1125659334,0,calc(-0.4514349017 / var(--logo-width)),-0.1025940140,0.6994533812,0,calc(-0.0724691375 / var(--logo-height)),0,0,1,0,calc(0.1828786000 * var(--logo-width)),calc(0.1441929955 * var(--logo-height)),0,1)}
 83.888889%{transform:matrix3d(0.4093770103,-0.1065341884,0,calc(-0.4456884720 / var(--logo-width)),-0.1020414025,0.7050750986,0,calc(-0.0699606336 / var(--logo-height)),0,0,1,0,calc(0.1795877728 * var(--logo-width)),calc(0.1388019043 * var(--logo-height)),0,1)}
 84.444444%{transform:matrix3d(0.4209107120,-0.1005205695,0,calc(-0.4393902470 / var(--logo-width)),-0.1014106424,0.7109094098,0,calc(-0.0674969468 / var(--logo-height)),0,0,1,0,calc(0.1760590757 * var(--logo-width)),calc(0.1333546679 * var(--logo-height)),0,1)}
 85.000000%{transform:matrix3d(0.4331610234,-0.0945422206,0,calc(-0.4325279901 / var(--logo-width)),-0.1006919548,0.7169634745,0,calc(-0.0650795781 / var(--logo-height)),0,0,1,0,calc(0.1722938590 * var(--logo-width)),calc(0.1278620464 * var(--logo-height)),0,1)}
 85.555556%{transform:matrix3d(0.4461252947,-0.0886162049,0,calc(-0.4250895833 / var(--logo-width)),-0.0998744938,0.7232453515,0,calc(-0.0627091452 / var(--logo-height)),0,0,1,0,calc(0.1682937707 * var(--logo-width)),calc(0.1223347306 * var(--logo-height)),0,1)}
 86.111111%{transform:matrix3d(0.4598000719,-0.0827594689,0,calc(-0.4170630692 / var(--logo-width)),-0.0989463978,0.7297639314,0,calc(-0.0603853527 / var(--logo-height)),0,0,1,0,calc(0.1640607893 * var(--logo-width)),calc(0.1167833522 * var(--logo-height)),0,1)}
 86.666667%{transform:matrix3d(0.4741810487,-0.0769888039,0,calc(-0.4084366945 / var(--logo-width)),-0.0978948589,0.7365288603,0,calc(-0.0581069695 / var(--logo-height)),0,0,1,0,calc(0.1595972601 * var(--logo-width)),calc(0.1112184928 * var(--logo-height)),0,1)}
 87.222222%{transform:matrix3d(0.4892630174,-0.0713208058,0,calc(-0.3991989544 / var(--logo-width)),-0.0967062093,0.7435504529,0,calc(-0.0558718149 / var(--logo-height)),0,0,1,0,calc(0.1549059346 * var(--logo-width)),calc(0.1056506943 * var(--logo-height)),0,1)}
 87.777778%{transform:matrix3d(0.5050398181,-0.0657718321,0,calc(-0.3893386404 / var(--logo-width)),-0.0953660269,0.7508395965,0,calc(-0.0536767537 / var(--logo-height)),0,0,1,0,calc(0.1499900120 * var(--logo-width)),calc(0.1000904671 * var(--logo-height)),0,1)}
 88.333333%{transform:matrix3d(0.5215042866,-0.0603579570,0,calc(-0.3788448886 / var(--logo-width)),-0.0938592579,0.7584076473,0,calc(-0.0515177012 / var(--logo-height)),0,0,1,0,calc(0.1448531833 * var(--logo-width)),calc(0.0945482975 * var(--logo-height)),0,1)}
 88.888889%{transform:matrix3d(0.5386482025,-0.0550949221,0,calc(-0.3677072324 / var(--logo-width)),-0.0921703557,0.7662663169,0,calc(-0.0493896390 / var(--logo-height)),0,0,1,0,calc(0.1394996768 * var(--logo-width)),calc(0.0890346522 * var(--logo-height)),0,1)}
 89.444444%{transform:matrix3d(0.5564622347,-0.0499980855,0,calc(-0.3559156570 / var(--logo-width)),-0.0902834374,0.7744275530,0,calc(-0.0472866409 / var(--logo-height)),0,0,1,0,calc(0.1339343050 * var(--logo-width)),calc(0.0835599795 * var(--logo-height)),0,1)}
 90.000000%{transform:matrix3d(0.5749358876,-0.0450823660,0,calc(-0.3434606582 / var(--logo-width)),-0.0881824541,0.7829034122,0,calc(-0.0452019110 / var(--logo-height)),0,0,1,0,calc(0.1281625116 * var(--logo-width)),calc(0.0781347076 * var(--logo-height)),0,1)}
 90.555556%{transform:matrix3d(0.5940574467,-0.0403621838,0,calc(-0.3303333040 / var(--logo-width)),-0.0858513767,0.7917059279,0,calc(-0.0431278328 / var(--logo-height)),0,0,1,0,calc(0.1221904189 * var(--logo-width)),calc(0.0727692364 * var(--logo-height)),0,1)}
 91.111111%{transform:matrix3d(0.6138139238,-0.0358513957,0,calc(-0.3165253012 / var(--logo-width)),-0.0832743937,0.8008469729,0,calc(-0.0410560304 / var(--logo-height)),0,0,1,0,calc(0.1160248745 * var(--logo-width)),calc(0.0674739261 * var(--logo-height)),0,1)}
 91.666667%{transform:matrix3d(0.6341910034,-0.0315632274,0,calc(-0.3020290654 / var(--logo-width)),-0.0804361202,0.8103381182,0,calc(-0.0389774415 / var(--logo-height)),0,0,1,0,calc(0.1096734953 * var(--logo-width)),calc(0.0622590772 * var(--logo-height)),0,1)}
 92.222222%{transform:matrix3d(0.6551729899,-0.0275101980,0,calc(-0.2868377957 / var(--logo-width)),-0.0773218178,0.8201904892,0,calc(-0.0368824027 / var(--logo-height)),0,0,1,0,calc(0.1031447111 * var(--logo-width)),calc(0.0571349061 * var(--logo-height)),0,1)}
 92.777778%{transform:matrix3d(0.6767427568,-0.0237040412,0,calc(-0.2709455542 / var(--logo-width)),-0.0739176205,0.8304146200,0,calc(-0.0347607453 / var(--logo-height)),0,0,1,0,calc(0.0964478030 * var(--logo-width)),calc(0.0521115110 * var(--logo-height)),0,1)}
 93.333333%{transform:matrix3d(0.6988816977,-0.0201556195,0,calc(-0.2543473500 / var(--logo-width)),-0.0702107682,0.8410203077,0,calc(-0.0326019042 / var(--logo-height)),0,0,1,0,calc(0.0895929394 * var(--logo-width)),calc(0.0471988315 * var(--logo-height)),0,1)}
 93.888889%{transform:matrix3d(0.7215696814,-0.0168748327,0,calc(-0.2370392276 / var(--logo-width)),-0.0661898431,0.8520164661,0,calc(-0.0303950361 / var(--logo-height)),0,0,1,0,calc(0.0825912056 * var(--logo-width)),calc(0.0424065992 * var(--logo-height)),0,1)}
 94.444444%{transform:matrix3d(0.7447850106,-0.0138705207,0,calc(-0.2190183600 / var(--logo-width)),-0.0618450069,0.8634109824,0,calc(-0.0281291489 / var(--logo-height)),0,0,1,0,calc(0.0754546290 * var(--logo-width)),calc(0.0377442792 * var(--logo-height)),0,1)}
 95.000000%{transform:matrix3d(0.7685043864,-0.0111503603,0,calc(-0.2002831468 / var(--logo-width)),-0.0571682387,0.8752105762,0,calc(-0.0257932409 / var(--logo-height)),0,0,1,0,calc(0.0681961958 * var(--logo-width)),calc(0.0332210041 * var(--logo-height)),0,1)}
 95.555556%{transform:matrix3d(0.7927028778,-0.0087207567,0,calc(-0.1808333154 / var(--logo-width)),-0.0521535670,0.8874206622,0,calc(-0.0233764482 / var(--logo-height)),0,0,1,0,calc(0.0608298611 * var(--logo-width)),calc(0.0288454978 * var(--logo-height)),0,1)}
 96.111111%{transform:matrix3d(0.8173539004,-0.0065867299,0,calc(-0.1606700264 / var(--logo-width)),-0.0467972972,0.9000452182,0,calc(-0.0208682001 / var(--logo-height)),0,0,1,0,calc(0.0533705497 * var(--logo-width)),calc(0.0246259921 * var(--logo-height)),0,1)}
 96.666667%{transform:matrix3d(0.8424292018,-0.0047517967,0,calc(-0.1397959832 / var(--logo-width)),-0.0410982283,0.9130866592,0,calc(-0.0182583811 / var(--logo-height)),0,0,1,0,calc(0.0458341469 * var(--logo-width)),calc(0.0205701342 * var(--logo-height)),0,1)}
 97.222222%{transform:matrix3d(0.8678988579,-0.0032178501,0,calc(-0.1182155423 / var(--logo-width)),-0.0350578583,0.9265457187,0,calc(-0.0155374978 / var(--logo-height)),0,0,1,0,calc(0.0382374794 * var(--logo-width)),calc(0.0166848880 * var(--logo-height)),0,1)}
 97.777778%{transform:matrix3d(0.8937312798,-0.0019850356,0,calc(-0.0959348280 / var(--logo-width)),-0.0286805733,0.9404213370,0,calc(-0.0126968499 / var(--logo-height)),0,0,1,0,calc(0.0305982836 * var(--logo-width)),calc(0.0129764277 * var(--logo-height)),0,1)}
 98.333333%{transform:matrix3d(0.9198932323,-0.0010516283,0,calc(-0.0729618463 / var(--logo-width)),-0.0219738181,0.9547105595,0,calc(-0.0097287022 / var(--logo-height)),0,0,1,0,calc(0.0229351626 * var(--logo-width)),calc(0.0094500274 * var(--logo-height)),0,1)}
 98.888889%{transform:matrix3d(0.9463498662,-0.0004139102,0,calc(-0.0493066005 / var(--logo-width)),-0.0149482449,0.9694084436,0,calc(-0.0066264579 / var(--logo-height)),0,0,1,0,calc(0.0152675297 * var(--logo-width)),calc(0.0061099460 * var(--logo-height)),0,1)}
 99.444444%{transform:matrix3d(0.9730647639,-0.0000660520,0,calc(-0.0249812052 / var(--logo-width)),-0.0076178363,0.9845079758,0,calc(-0.0033848285 / var(--logo-height)),0,0,1,0,calc(0.0076155386 * var(--logo-width)),calc(0.0029593108 * var(--logo-height)),0,1)}
 100.000000%{transform:matrix3d(1.0000000000,0.0000000000,0,calc(-0.0000000000 / var(--logo-width)),-0.0000000000,1.0000000000,0,calc(-0.0000000000 / var(--logo-height)),0,0,1,0,calc(0.0000000000 * var(--logo-width)),calc(-0.0000000000 * var(--logo-height)),0,1)}
}
/* Present only warmed frames, then blend from the already-moving lit image. */
.logo-stage.webgl-ready .logo-opening-frame{visibility:visible;opacity:1}
.logo-stage.webgl-ready .logo-canvas{opacity:0}
.logo-stage.logo-live .logo-canvas{opacity:1;transition:opacity .16s linear}
.logo-stage.logo-live .logo-opening-frame{opacity:0;visibility:hidden;transition:opacity .16s linear,visibility 0s linear .16s}

/* 29 Oct 2026: the free-floating astronaut flies behind the page copy instead of over it, so it
   never covers text. Page content paints above the fixed atmosphere layer; drag/swipe still works
   wherever the astronaut is visible (space.js forwards the gesture). */
.space-atmosphere{z-index:0!important}
.space-atmosphere~main,.space-atmosphere~.site-footer{position:relative}
/* theme-fade.css */
/* Only paint changes during the journey. Text and layout stay in one live DOM.
   One typed palette value follows a native scroll timeline where supported;
   the JS fallback uses the identical smoothstep curve and absolute bounds. */
@property --space-mix{syntax:"<number>";inherits:true;initial-value:1}
@supports (color:color-mix(in srgb,black,white)){
/* A dark canvas prevents white underpaint during mobile viewport compositing.
   The body and sections still reach their original classic colours. */
html[data-theme-fade="enabled"]{background:#040711}
html[data-fade-driver="native"]{
 animation:journey-palette 1s cubic-bezier(.3333333333,0,.6666666667,1) both;
 animation-timeline:scroll(root block);
 animation-range:var(--journey-start) var(--journey-end);
}
@keyframes journey-palette{from{--space-mix:1}to{--space-mix:0}}
:root[data-theme-fade="enabled"]{
 /* The opening palette is defined before JS, also without @property support. */
 --space-mix:1;
 color-scheme:light;
 --bg:color-mix(in srgb,#040711 calc(var(--space-mix)*100%),#fafbff);
 --white:color-mix(in srgb,#0b1222 calc(var(--space-mix)*100%),#fff);
 --ink:color-mix(in srgb,#f2f5ff calc(var(--space-mix)*100%),#172033);
 --muted:color-mix(in srgb,#b5c2d8 calc(var(--space-mix)*100%),#626c7c);
 --accent:color-mix(in srgb,#8dcfff calc(var(--space-mix)*100%),#3155d9);
 --accent-soft:color-mix(in srgb,#183154 calc(var(--space-mix)*100%),#eef2ff);
 --line:color-mix(in srgb,#344765 calc(var(--space-mix)*100%),#dfe4ed);
 --on-ink:color-mix(in srgb,#061222 calc(var(--space-mix)*100%),#fff);
 --on-accent:color-mix(in srgb,#041326 calc(var(--space-mix)*100%),#fff);
 --selection-bg:color-mix(in srgb,#24549b calc(var(--space-mix)*100%),#cfdaff);
 --selection-ink:color-mix(in srgb,#fff calc(var(--space-mix)*100%),#122960);
 --nav-ink:color-mix(in srgb,#dae5f6 calc(var(--space-mix)*100%),#4d5667);
 --accent-hover:color-mix(in srgb,#b7e6ff calc(var(--space-mix)*100%),#2746bd);
 --ink-hover:color-mix(in srgb,#d7e8ff calc(var(--space-mix)*100%),#2b3a55);
 --outline:color-mix(in srgb,#577499 calc(var(--space-mix)*100%),#cdd4e1);
 --label:color-mix(in srgb,#acc8e8 calc(var(--space-mix)*100%),#697385);
 --secondary-ink:color-mix(in srgb,#ccd8ea calc(var(--space-mix)*100%),#586477);
 --panel:color-mix(in srgb,#091223 calc(var(--space-mix)*100%),#f2f5fb);
 --identity-line:color-mix(in srgb,#48718c calc(var(--space-mix)*100%),#c3d0ec);
 --identity-bg:color-mix(in srgb,#061020 calc(var(--space-mix)*100%),#eef2ff);
 --identity-centre:color-mix(in srgb,#122846 calc(var(--space-mix)*100%),#fff);
 --identity-edge:color-mix(in srgb,#060a14 calc(var(--space-mix)*100%),#dce7ff);
 --grid-line:color-mix(in srgb,transparent calc(var(--space-mix)*100%),#3756ac08);
 --logo-ink:color-mix(in srgb,#eef6ff calc(var(--space-mix)*100%),#1b2c53);
 --logo-start:color-mix(in srgb,#80bcff calc(var(--space-mix)*100%),#263fbc);
 --logo-end:color-mix(in srgb,#d5eaff calc(var(--space-mix)*100%),#638bff);
 --logo-outline:color-mix(in srgb,#a5dcff calc(var(--space-mix)*100%),#7894d3);
 --guide:color-mix(in srgb,#79c9ff calc(var(--space-mix)*100%),#7493d4);
 --project-bg:color-mix(in srgb,#112033 calc(var(--space-mix)*100%),#e7ebf4);
 --cvt-frame:color-mix(in srgb,#1a1930 calc(var(--space-mix)*100%),#e9e7f1);
 --fit-frame:color-mix(in srgb,#0c2830 calc(var(--space-mix)*100%),#e5efec);
 --dot:color-mix(in srgb,#829ab8 calc(var(--space-mix)*100%),#cbd1db);
 --featured-line:color-mix(in srgb,#799ed0 calc(var(--space-mix)*100%),#9fb2ee);
 --featured-bg:color-mix(in srgb,#152541 calc(var(--space-mix)*100%),#f4f6ff);
 --contact-bg:color-mix(in srgb,#0d1c36 calc(var(--space-mix)*100%),#eaf0ff);
 --contact-line:color-mix(in srgb,#385680 calc(var(--space-mix)*100%),#dbe3f5);
 --underline:color-mix(in srgb,#8dcfff78 calc(var(--space-mix)*100%),#3155d95c);
 --shadow-accent:color-mix(in srgb,#268aff38 calc(var(--space-mix)*100%),#3155d922);
 --shadow-lift:color-mix(in srgb,#0008 calc(var(--space-mix)*100%),#1d2a4a17);
 --shadow-low:color-mix(in srgb,#0004 calc(var(--space-mix)*100%),#19294605);
 --logo-shadow:color-mix(in srgb,#2c86ff33 calc(var(--space-mix)*100%),#3557b516);
}
html[data-theme-fade="enabled"] body{isolation:isolate}
html[data-theme-fade="enabled"] :is(h1,h2,.hero-title) em{color:var(--accent);text-shadow:none}
html[data-theme-fade="enabled"] .hero-copy{position:relative;z-index:1;background:transparent;box-shadow:none}
html[data-theme-fade="enabled"] .hero-identity{z-index:6;background:linear-gradient(145deg,color-mix(in srgb,#152237 calc(var(--space-mix)*100%),var(--identity-bg)),color-mix(in srgb,#080f1b calc(var(--space-mix)*100%),var(--identity-bg)));border-color:color-mix(in srgb,#6fa7d647 calc(var(--space-mix)*100%),var(--identity-line));box-shadow:inset 0 0 80px color-mix(in srgb,#79b1ff08 calc(var(--space-mix)*100%),transparent),0 20px 80px color-mix(in srgb,#0005 calc(var(--space-mix)*100%),transparent)}
html[data-theme-fade="enabled"] .identity-background{background:radial-gradient(ellipse at 60% 37%,color-mix(in srgb,#1b416522 calc(var(--space-mix)*100%),var(--identity-centre)) 0%,color-mix(in srgb,transparent calc(var(--space-mix)*100%),var(--identity-bg)) 54%,color-mix(in srgb,transparent calc(var(--space-mix)*100%),var(--identity-edge)) 100%);clip-path:inset(0 round 16px);-webkit-clip-path:inset(0 round 16px)}
html[data-theme-fade="enabled"] .identity-logo{position:relative;z-index:2}
html[data-theme-fade="enabled"] .fallback-depth{fill:color-mix(in srgb,#526daa calc(var(--space-mix)*100%),#24396f)}
html[data-theme-fade="enabled"] .site-header{background:linear-gradient(90deg,color-mix(in srgb,#060c1af5 calc(var(--space-mix)*100%),transparent),color-mix(in srgb,#0b1827ef calc(var(--space-mix)*100%),transparent));border-color:var(--line)}
html[data-theme-fade="enabled"] .hero{position:relative;background:linear-gradient(90deg,color-mix(in srgb,#030710ad calc(var(--space-mix)*100%),transparent),color-mix(in srgb,#03071018 calc(var(--space-mix)*100%),transparent) 60%,transparent)}
html[data-theme-fade="enabled"] .service-line{background:color-mix(in srgb,#050c17ee calc(var(--space-mix)*100%),transparent);border-color:var(--line)}
html[data-theme-fade="enabled"] .work{background:linear-gradient(180deg,color-mix(in srgb,#050b16e5 calc(var(--space-mix)*100%),var(--white)),color-mix(in srgb,#091021e3 calc(var(--space-mix)*100%),var(--white)) 66%,color-mix(in srgb,#060b16df calc(var(--space-mix)*100%),var(--white)))}
html[data-theme-fade="enabled"] .approach{background:linear-gradient(100deg,color-mix(in srgb,#091123f0 calc(var(--space-mix)*100%),var(--panel)),color-mix(in srgb,#0b1731e8 calc(var(--space-mix)*100%),var(--panel)));border-color:var(--line)}
html[data-theme-fade="enabled"] .client-first{--muted:color-mix(in srgb,#b5bfd5 calc(var(--space-mix)*100%),#bcc3cf);--secondary-ink:color-mix(in srgb,#dce4f4 calc(var(--space-mix)*100%),#e5e7eb);background:linear-gradient(100deg,color-mix(in srgb,#050916eb calc(var(--space-mix)*100%),#000),color-mix(in srgb,#12122beb calc(var(--space-mix)*100%),#000));border-color:color-mix(in srgb,#748ad336 calc(var(--space-mix)*100%),#292d35)}
html[data-theme-fade="enabled"] .pricing{background:linear-gradient(180deg,color-mix(in srgb,#060c17e3 calc(var(--space-mix)*100%),var(--white)),color-mix(in srgb,#071020e3 calc(var(--space-mix)*100%),var(--white)))}
html[data-theme-fade="enabled"] .price-card{background:linear-gradient(145deg,color-mix(in srgb,#14223bf7 calc(var(--space-mix)*100%),var(--white)),color-mix(in srgb,#080e1efa calc(var(--space-mix)*100%),var(--white)));border-color:var(--line);box-shadow:0 18px 45px color-mix(in srgb,#0004 calc(var(--space-mix)*100%),transparent),inset 0 1px 0 color-mix(in srgb,#a6d0ff16 calc(var(--space-mix)*100%),transparent)}
html[data-theme-fade="enabled"] .price-card.featured{background:linear-gradient(145deg,color-mix(in srgb,#19344af5 calc(var(--space-mix)*100%),var(--featured-bg)),color-mix(in srgb,#192445f7 calc(var(--space-mix)*100%),var(--featured-bg)) 55%,color-mix(in srgb,#0d1528fa calc(var(--space-mix)*100%),var(--featured-bg)));border-color:var(--featured-line);box-shadow:0 5px 22px var(--shadow-low)}
html[data-theme-fade="enabled"] .optional-services{background:linear-gradient(110deg,color-mix(in srgb,#0c1529e8 calc(var(--space-mix)*100%),var(--panel)),color-mix(in srgb,#0c1324e8 calc(var(--space-mix)*100%),var(--panel)))}
html[data-theme-fade="enabled"] .optional-card{background:linear-gradient(135deg,color-mix(in srgb,#172844f5 calc(var(--space-mix)*100%),var(--white)),color-mix(in srgb,#0b1326f8 calc(var(--space-mix)*100%),var(--white)));border-color:var(--line);box-shadow:inset 0 1px 0 color-mix(in srgb,#d8e9ff12 calc(var(--space-mix)*100%),transparent),0 15px 45px color-mix(in srgb,#0003 calc(var(--space-mix)*100%),transparent)}
html[data-theme-fade="enabled"] .contact{background:linear-gradient(110deg,color-mix(in srgb,#101c38f5 calc(var(--space-mix)*100%),transparent),color-mix(in srgb,#0f213ff0 calc(var(--space-mix)*100%),transparent) 60%,color-mix(in srgb,#142044ee calc(var(--space-mix)*100%),transparent));border-color:color-mix(in srgb,#6a9ed955 calc(var(--space-mix)*100%),transparent);box-shadow:0 0 65px color-mix(in srgb,#3778c51c calc(var(--space-mix)*100%),transparent)}
html[data-theme-fade="enabled"] .site-footer{background:color-mix(in srgb,#040911f2 calc(var(--space-mix)*100%),transparent);border-color:var(--line)}
html[data-theme-fade="enabled"] .button-blue{background:linear-gradient(115deg,color-mix(in srgb,#87ceff calc(var(--space-mix)*100%),var(--accent)),color-mix(in srgb,#a8c4ff calc(var(--space-mix)*100%),var(--accent)));color:var(--on-accent)}
html[data-theme-fade="enabled"] .button-blue:hover{background:linear-gradient(115deg,color-mix(in srgb,#b2e5ff calc(var(--space-mix)*100%),var(--accent-hover)),color-mix(in srgb,#c0d4ff calc(var(--space-mix)*100%),var(--accent-hover)))}
html[data-theme-fade="enabled"] .button-dark{background:linear-gradient(120deg,color-mix(in srgb,#eef8ff calc(var(--space-mix)*100%),var(--ink)),color-mix(in srgb,#c4d8ff calc(var(--space-mix)*100%),var(--ink)));color:var(--on-ink)}
html[data-theme-fade="enabled"] .button-dark:hover{background:var(--ink-hover)}
html[data-theme-fade="enabled"] .button-outline{background:transparent;border-color:var(--outline)}
html[data-theme-fade="enabled"] .button-outline:hover{background:var(--accent-soft);color:var(--accent);border-color:var(--accent)}
html[data-theme-fade="enabled"] .cookie-notice{background:var(--white);border-color:var(--outline)}
html[data-theme-fade="enabled"] .space-progress{display:block;opacity:var(--space-mix)}
html[data-theme-fade="enabled"] .reading-progress{opacity:calc(1 - var(--space-mix))}
/* One continuous skin: no dark-only shadow, blur or glow switches at the
   first nonzero pixel of a returning fade. Classic endpoints stay unchanged. */
html[data-theme-fade="enabled"] :is(.site-header,.service-line,.price-card){backdrop-filter:none}
html[data-theme-fade="enabled"] .site-header{box-shadow:0 1px 30px color-mix(in srgb,#3b87d70d calc(var(--space-mix)*100%),transparent)}
html[data-theme-fade="enabled"] .hero .hero-title{text-shadow:0 3px 32px color-mix(in srgb,#0008 calc(var(--space-mix)*100%),transparent)}
html[data-theme-fade="enabled"] .identity-bottom{z-index:3;color:color-mix(in srgb,#e3edfa calc(var(--space-mix)*100%),var(--label));background:linear-gradient(transparent,color-mix(in srgb,#08111bed calc(var(--space-mix)*100%),transparent) 40%,color-mix(in srgb,#08111b calc(var(--space-mix)*100%),transparent));box-shadow:none;text-shadow:0 1px 8px color-mix(in srgb,#000 calc(var(--space-mix)*100%),transparent)}
html[data-theme-fade="enabled"] .project-screen{box-shadow:0 20px 45px color-mix(in srgb,#0005 calc(var(--space-mix)*100%),transparent),inset 0 1px 0 color-mix(in srgb,#a5d1ff20 calc(var(--space-mix)*100%),transparent)}
html[data-theme-fade="enabled"] .project-screen:hover{box-shadow:0 20px 55px color-mix(in srgb,#0008 calc(var(--space-mix)*100%),var(--shadow-lift)),0 0 26px color-mix(in srgb,#4d8feb24 calc(var(--space-mix)*100%),transparent)}
html[data-theme-fade="enabled"] .browser-bar{background:color-mix(in srgb,#0b1427 calc(var(--space-mix)*100%),var(--white))}
html[data-theme-fade="enabled"] .steps:before{background:color-mix(in srgb,#5179a755 calc(var(--space-mix)*100%),var(--line))}
html[data-theme-fade="enabled"] .steps:after{background:linear-gradient(color-mix(in srgb,#86d9ff calc(var(--space-mix)*100%),var(--accent)),color-mix(in srgb,#698cff calc(var(--space-mix)*100%),var(--accent)));box-shadow:0 0 7px var(--shadow-accent)}
html[data-theme-fade="enabled"] .featured:before{background:linear-gradient(90deg,color-mix(in srgb,transparent calc(var(--space-mix)*100%),var(--accent)),color-mix(in srgb,#8cdbff calc(var(--space-mix)*100%),var(--accent)),color-mix(in srgb,#b3baff calc(var(--space-mix)*100%),var(--accent)),color-mix(in srgb,transparent calc(var(--space-mix)*100%),var(--accent)));box-shadow:0 0 20px color-mix(in srgb,#6fd2ff70 calc(var(--space-mix)*100%),transparent);animation:journey-luminous-edge 7s ease-in-out infinite}
@keyframes journey-luminous-edge{0%,100%{opacity:calc(1 - var(--space-mix)*.55)}50%{opacity:1}}
html[data-theme-fade="enabled"][data-space-active="false"] .featured:before{animation-play-state:paused}
html[data-theme-fade="enabled"] .cookie-notice-actions button{background:color-mix(in srgb,#14233a calc(var(--space-mix)*100%),var(--white))}
html[data-theme-fade="enabled"] .cookie-notice-actions button:hover{background:color-mix(in srgb,#243c5a calc(var(--space-mix)*100%),var(--accent-soft))}
/* Keep layers mounted and ready at opacity zero before the return fade.
   These decorations contain no page text and never affect document geometry. */
html[data-theme-fade="enabled"] .space-scene{display:block;position:fixed;inset:0 0 auto;height:100vh;height:100lvh;z-index:-1;overflow:hidden;pointer-events:none;contain:strict;background:#03060e;will-change:opacity;opacity:var(--space-mix)}
html[data-theme-fade="enabled"] .space-atmosphere{display:block;position:fixed;inset:0;z-index:5;pointer-events:none;overflow:hidden;contain:strict;mask-image:linear-gradient(180deg,transparent 60px,#000 140px,#000 calc(100% - 12px),transparent);-webkit-mask-image:linear-gradient(180deg,transparent 60px,#000 140px,#000 calc(100% - 12px),transparent)}
html[data-theme-fade="enabled"] body>.space-atmosphere{will-change:opacity;opacity:var(--space-mix)}
html[data-theme-fade="enabled"] .identity-background .space-logo-window{z-index:0;opacity:var(--space-mix)}
html[data-theme-fade="enabled"] .space-identity-planet{display:block;will-change:transform;filter:drop-shadow(0 0 25px #f7a24920);position:absolute;z-index:1;width:135%;max-width:none;height:auto;right:-24%;top:-2%;opacity:var(--space-mix)}
html[data-theme-fade="enabled"] .space-identity-eclipse{display:block;opacity:var(--space-mix)}
@media(max-width:640px){html[data-theme-fade="enabled"] .identity-background{clip-path:inset(0 round 12px);-webkit-clip-path:inset(0 round 12px)}html[data-theme-fade="enabled"] .space-atmosphere{mask-image:linear-gradient(180deg,transparent 64px,#000 120px,#000 90%,transparent);-webkit-mask-image:linear-gradient(180deg,transparent 64px,#000 120px,#000 90%,transparent)}}
@media print{html[data-theme-fade="enabled"]{--space-mix:0!important}html[data-theme-fade="enabled"] :is(.space-scene,.space-atmosphere,.space-identity-planet,.space-identity-eclipse){display:none!important}}
}
/* fade-text.css */
/* Keep the approved background/scroll driver. Letter colours ease continuously
   across each surface's crossover; a fine temporary edge holds their shape
   when the fill and surface pass through similar greys. No duplicate text,
   time-based transition, new panel, layout change or background animation. */
@supports (color:color-mix(in srgb,black,white)){
html[data-theme-fade="enabled"] :is(.pricing,.price-card,.optional-services,.optional-card),
html[data-theme-fade="enabled"] .pricing .button-outline:hover{
 --text-cutoff:.364;
 --text-width:.36;
 --text-t:clamp(0,calc((var(--space-mix) - var(--text-cutoff))/var(--text-width) + .5),1);
 --text-ease:calc(var(--text-t)*var(--text-t)*(3 - 2*var(--text-t)));
 --text-weight:var(--text-ease);
 --text-bridge:calc(4*var(--text-ease)*(1 - var(--text-ease)));
 --text-edge-dark:rgb(3 7 17 / calc(var(--text-bridge)*.9));
 --text-edge:0 0 2px var(--text-edge-dark);
 /* Return to the exact original text colours only near the two endpoints,
    where the background already provides ample contrast. */
 --text-endpoint:clamp(0,max(calc((var(--space-mix) - .7)/.3),calc((.1 - var(--space-mix))/.1)),1);
 --text-contrast:color-mix(in srgb,#fff calc(var(--text-weight)*100%),#000);
 --legible-ink:color-mix(in srgb,var(--ink) calc(var(--text-endpoint)*100%),var(--text-contrast));
 --legible-muted:color-mix(in srgb,var(--muted) calc(var(--text-endpoint)*100%),var(--text-contrast));
 --legible-label:color-mix(in srgb,var(--label) calc(var(--text-endpoint)*100%),var(--text-contrast));
 --legible-secondary:color-mix(in srgb,var(--secondary-ink) calc(var(--text-endpoint)*100%),var(--text-contrast));
 --legible-accent:color-mix(in srgb,var(--accent) calc(var(--text-endpoint)*100%),var(--text-contrast));
 color:var(--legible-ink);
 text-shadow:var(--text-edge);
}
/* Surface-specific centres, with a broad eased blend instead of a switch. */
html[data-theme-fade="enabled"] .price-card{--text-cutoff:.362}
html[data-theme-fade="enabled"] .price-card.featured{--text-cutoff:.379}
html[data-theme-fade="enabled"] .optional-services{--text-cutoff:.353}
html[data-theme-fade="enabled"] .optional-card{--text-cutoff:.369}
html[data-theme-fade="enabled"] .pricing .button-outline:hover{--text-cutoff:.64;color:var(--legible-accent)}
/* Both directions and both scroll drivers sample this same curve. The edge
   is fully transparent outside the blend and never delays a fast reversal. */
html[data-theme-fade="enabled"] :is(.pricing,.optional-services) h2 em{text-shadow:var(--text-edge)}
html[data-theme-fade="enabled"] :is(.pricing,.optional-services) h2 em,
html[data-theme-fade="enabled"] .pricing .price-card li:before{color:var(--legible-accent)}
html[data-theme-fade="enabled"] :is(.pricing,.optional-services) :is(.eyebrow,.plan-label){color:var(--legible-label)}
html[data-theme-fade="enabled"] :is(.pricing,.optional-services) .featured .plan-label{color:var(--legible-accent)}
html[data-theme-fade="enabled"] :is(.pricing,.optional-services) :is(.section-heading>p,.plan-description,.price-from,.pricing-note,.optional-note,.optional-heading>p:last-child,.optional-price,.optional-card>p){color:var(--legible-muted)}
html[data-theme-fade="enabled"] .pricing .price-card li{color:var(--legible-secondary)}
html[data-theme-fade="enabled"] :is(.pricing,.optional-services) :is(.pricing-note strong,.optional-price strong,.button-outline){color:var(--legible-ink)}
html[data-theme-fade="enabled"] :is(.pricing,.optional-services) :is(.quiet-link:hover,.pricing-note a:hover){color:var(--legible-accent)}
}
/* The middle package CTA keeps its existing blue surface. Its label and arrow
   stay white, including hover/focus and every position in the theme fade. */
html .pricing .price-card.featured .button-blue,
html .pricing .price-card.featured .button-blue>span{color:#fff;text-shadow:none}
/* trex/experience.css */
/* Shared section geometry, header alignment and theme controls. */
html .contact:before,html.motion-ready .contact:before{transform:none;border-radius:0;border-color:var(--accent);will-change:auto}
html .hero{min-height:calc(100svh - 106px)}
@media(min-width:1251px){
  .site-header{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr)}
  .site-header>.wordmark{justify-self:start}
  .site-header nav{justify-self:center;white-space:nowrap}
  .site-header .header-actions{justify-self:end}
}
@media(min-width:1251px) and (max-width:1500px){
  .site-header .trex-trigger{max-width:185px;white-space:normal}
}
.trex-trigger,.trex-back{min-height:46px;padding:12px 15px;border:1px solid var(--outline);border-radius:6px;background:transparent;color:var(--ink);font-size:.875rem;font-weight:500;line-height:1.35;white-space:nowrap}
.trex-trigger-hero{display:none}
.trex-trigger:hover,.trex-back:hover{background:var(--accent-soft);border-color:var(--accent)}
.trex-back[hidden],.trex-controls[hidden],.trex-controls button[hidden],.trex-status[hidden],.trex-retry[hidden],[data-experience="trex"] [data-visit-trex]{display:none!important}
.trex-invitation:not([open]){display:none}
.trex-invitation{position:fixed;inset:0;margin:auto;width:min(470px,calc(100vw - 40px));max-height:calc(100svh - 40px);padding:38px 32px 30px;border:1px solid #82c6ff66;border-radius:16px;background:#0b1930;color:#f2f5ff;box-shadow:0 20px 80px #0007;text-align:center}
.trex-invitation::backdrop{background:#020712b3}
.trex-invitation h2{font-size:1.9rem;line-height:1.2;font-weight:500;letter-spacing:-.035em;color:#f2f5ff}
.trex-invitation p{margin:14px 0 26px;font-size:.875rem;line-height:1.5;color:#bfd5ed}
.trex-invitation-actions{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.trex-invitation-actions button{min-height:48px;padding:13px 14px;border:1px solid #8dcfff;border-radius:6px;font-size:.9375rem;font-weight:600;line-height:1.45}
.trex-invitation-action{background:#8dcfff;color:#071a2d}
.trex-invitation-action:hover{background:#b7e6ff}
.trex-invitation-actions .trex-invitation-decline{border-color:#597393;background:transparent;color:#e0ebfa}
.trex-invitation-decline:hover{background:#193252}
@media(min-width:1001px) and (max-width:1250px){.site-header nav{display:none}}
@media(max-width:640px){
  .site-header{display:grid;grid-template-columns:1fr auto;gap:14px;padding-block:20px;grid-template-rows:auto;align-items:center}
  .site-header .header-actions{display:contents}
  .site-header .header-actions>.button{grid-column:2;grid-row:1}
  /* Mobile: the T-rex button lives in the hero (reserved in the HTML from first paint), so the
     header stays one row (87px) like every other page. The Back button still uses row 2 in T-rex mode. */
  .site-header .trex-trigger{display:none}
  .site-header .trex-back{grid-column:1/-1;grid-row:2;width:100%;white-space:normal}
  .hero-copy .trex-trigger-hero{display:block;width:100%;margin:0 0 22px;white-space:normal;text-align:center}
  html .hero{min-height:calc(100svh - 87px);align-content:start}
  .trex-invitation{padding:32px 24px 26px}
  .trex-invitation h2{font-size:1.75rem}
}

/* The same document and grids, with the approved film as a fixed backdrop. */
:root[data-experience="trex"]{
  --bg:#163b2b;--white:#1b3f2e;--ink:#f7faf1;--muted:#dce8d6;
  --accent:#ffe36c;--accent-soft:#365134;--line:#d3e8b94d;
  --on-ink:#0a160f;--on-accent:#122017;--selection-bg:#66512d;--selection-ink:#fff;
  --nav-ink:#e2e8da;--accent-hover:#ffed9b;--ink-hover:#dfe8d7;--outline:#9cae876e;
  --label:#d3e4c3;--secondary-ink:#e3eddc;--panel:#1b3f2eed;--logo-ink:#eeeede;
  --project-bg:#15281b;--cvt-frame:#20281a;--fit-frame:#132a20;--dot:#708364;
  --featured-line:#efd967;--featured-bg:#35552de8;--contact-bg:#1b422fee;
  --contact-line:#aec3973d;--underline:#ffe36cb3;--shadow-accent:#0003;
  --shadow-lift:#0005;--shadow-low:#0002;--guide:#b8a97b;color-scheme:dark;
  background:#163b2b;animation:none;scroll-behavior:auto;
}
html[data-experience="trex"] body{background:transparent;isolation:isolate}
html[data-experience="trex"] .space-scene,
html[data-experience="trex"] .space-atmosphere,
html[data-experience="trex"] .space-progress{display:none!important}
/* Retain the logo's layout space at every width to prevent theme-switch jumps. */
html[data-experience="trex"] .hero-identity{visibility:hidden;pointer-events:none}
html[data-experience="trex"] .site-header{background:linear-gradient(#041009b3,transparent);border-color:#d0dab529}
/* Alternating forest, moss and pine tones are shared by every screen size. */
html[data-experience="trex"] .service-line{background:#163b2bdc}
html[data-experience="trex"] .work{background:linear-gradient(180deg,#214638d9,#214638cc 65%,#214638d7)}
html[data-experience="trex"] .approach{background:linear-gradient(100deg,#3c5136e2,#3c5136ce)}
html[data-experience="trex"] .client-first{background:linear-gradient(100deg,#133a34df,#133a34cd);border-color:var(--line)}
html[data-experience="trex"] .pricing{background:linear-gradient(180deg,#30462cda,#30462cd0)}
html[data-experience="trex"] .optional-services{background:linear-gradient(110deg,#24504be0,#24504bce)}
html[data-experience="trex"] .contact{--contact-bg:#365036db;background:linear-gradient(110deg,#365036e4,#365036d2)}
html[data-experience="trex"] .site-footer{background:#102e27d9}
html[data-experience="trex"] .price-card{background:#214a34ef}
html[data-experience="trex"] .price-card.featured{background:#36532eef}
html[data-experience="trex"] .pricing .price-card.featured .button-blue,
html[data-experience="trex"] .pricing .price-card.featured .button-blue>span{color:#000;text-shadow:none}
html[data-experience="trex"].motion-ready .hero-copy,html[data-experience="trex"] .motion-ready .hero-copy{animation:none!important}
.trex-stage[data-active="false"]{visibility:hidden;opacity:0}
.trex-stage{position:fixed;inset:0;z-index:-1;overflow:hidden;pointer-events:none;background:#06140e}
.trex-stage img,.trex-stage video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center}
.trex-stage video{opacity:0}
.trex-stage[data-ready="true"] video{opacity:1}
/* Keep the final decoded frame of the video visible on completion; no overlay. */
.trex-grade{position:absolute;inset:0;background:linear-gradient(90deg,#020b09a6 0%,#020b0926 41%,transparent 74%),linear-gradient(0deg,#020b0998,transparent 20%,transparent 75%,#020b0968)}
.trex-controls{position:fixed;z-index:70;bottom:max(24px,env(safe-area-inset-bottom));right:24px;display:flex;gap:0;padding:5px;border:1px solid #d8c99b55;border-radius:6px;background:#06140eef;color:#f7faf1;box-shadow:0 5px 24px #0003}
.trex-controls button{min-height:42px;padding:10px 13px;border:0;background:transparent;color:inherit;font-size:.875rem;line-height:1.35}
.trex-controls button+button{border-left:1px solid #d8c99b33}
.trex-controls button:hover{color:#ffe36c}
.trex-status{position:fixed;bottom:92px;right:24px;z-index:70;max-width:calc(100% - 48px);padding:12px 16px;border:1px solid #d8c99b55;border-radius:6px;background:#06140ef5;color:#f7faf1;font-size:.875rem}
html[data-experience="trex"] body:has(#cookie-notice:not([hidden])) .trex-controls{bottom:auto;top:118px}
html[data-experience="trex"] body:has(#cookie-notice:not([hidden])) .trex-status{bottom:auto;top:176px}
@media(max-width:640px){
  .trex-grade{background:linear-gradient(90deg,#05130cc7,#05130c20),linear-gradient(0deg,#020b09a8,transparent 35%,#020b0933)}
  .trex-controls{right:16px;left:16px;justify-content:center;bottom:max(16px,env(safe-area-inset-bottom))}
  .trex-status{right:16px;max-width:calc(100% - 32px)}
  html[data-experience="trex"] body:has(#cookie-notice:not([hidden])) .trex-controls{top:158px}
}
@media(prefers-reduced-motion:reduce){.trex-invitation{animation:none}.trex-trigger{transition:none}}

.trex-retry{position:fixed;right:24px;bottom:148px;z-index:75;padding:14px 20px;border:1px solid #ffe36c;border-radius:6px;background:#ffe36c;color:#14251a;font-size:.9375rem;font-weight:600}

/* Keep the two primary calls to action stable during the Space -> Jurassic
   palette swap. Their normal .button background animation previously sampled
   the space palette for a frame before settling on the dinosaur palette. */
html[data-experience="trex"] .hero-actions .button-blue,
html[data-experience="trex"] .site-header .header-actions>.button.button-dark{
  transition:none!important;
  animation:none!important;
}
html[data-experience="trex"] .hero-actions .button-blue{
  background:#ffe36c;
  color:#122017;
  box-shadow:0 5px 15px #0003;
}
html[data-experience="trex"] .site-header .header-actions>.button.button-dark{
  background:#f7faf1;
  color:#0a160f;
}
html[data-experience="trex"] .hero-actions .button-blue>span,
html[data-experience="trex"] .site-header .header-actions>.button.button-dark>span{
  transition:none!important;
  animation:none!important;
}
html[data-experience="trex"] .hero-actions .button-blue:hover{background:#ffed9b}
html[data-experience="trex"] .site-header .header-actions>.button.button-dark:hover{background:#e3edda}

/* Match the space rail's right inset at every breakpoint. Keep the wider
   dinosaur 6px inside the edge, with extra clearance for device safe areas. */
.trex-progress{--trex-rail-top:116px;--trex-rail-bottom:118px;--trex-rail-right:8px;display:none;position:fixed;right:max(var(--trex-rail-right),env(safe-area-inset-right,0px));top:var(--trex-rail-top);bottom:var(--trex-rail-bottom);width:30px;z-index:50;pointer-events:none;contain:layout style;transform:translateZ(0)}
html[data-experience="trex"] .trex-progress{display:block}
.trex-progress-track{position:absolute;top:17px;bottom:17px;left:50%;width:1px;background:linear-gradient(transparent,#d0af775f,transparent)}
.trex-progress-fill{position:absolute;top:17px;bottom:17px;left:calc(50% - 1px);width:2px;background:linear-gradient(#eac77e00,#d1a65c,#f4e6ad);transform:scaleY(var(--trex-scroll-progress,0));transform-origin:top;box-shadow:0 0 8px #f5ca766b}
.trex-progress-dino{position:absolute;top:0;right:calc(6px - var(--trex-rail-right));width:58px;height:56px;object-fit:contain;transform:translate3d(0,var(--trex-scroll-y,0px),0) scaleX(-1);transform-origin:center;filter:drop-shadow(0 2px 4px #0009) drop-shadow(0 0 5px #e0bf7199);will-change:transform;backface-visibility:hidden}
@media(max-width:900px){.trex-progress{--trex-rail-right:2px;width:24px}.trex-progress-dino{width:50px;height:48px}}
@media(max-width:640px){.trex-progress{--trex-rail-top:162px;--trex-rail-bottom:106px;--trex-rail-right:0px;width:16px}.trex-progress-dino{width:42px;height:40px}.trex-progress-fill{width:1px}}
/* A fixed-height rail cannot stretch when Safari's toolbars open or close. */
@media (pointer:coarse), (max-width:640px){
  .trex-progress{bottom:auto;height:max(0px,calc(100vh - var(--trex-rail-top) - var(--trex-rail-bottom)));height:max(0px,calc(100svh - var(--trex-rail-top) - var(--trex-rail-bottom)))}
}
/* Animate transforms directly on the scroll timeline, so the dinosaur and
   its line share the browser's scrolling clock even during fast swipes. */
@supports (animation-timeline:scroll(root block)){
  html[data-experience="trex"] .trex-progress[data-driver="native"] .trex-progress-dino{
    animation:trex-marker-scroll 1s linear both;
    animation-timeline:scroll(root block);
  }
  html[data-experience="trex"] .trex-progress[data-driver="native"] .trex-progress-fill{
    animation:trex-fill-scroll 1s linear both;
    animation-timeline:scroll(root block);
    will-change:transform;
  }
}
@keyframes trex-marker-scroll{
  from{transform:translate3d(0,0,0) scaleX(-1)}
  to{transform:translate3d(0,var(--trex-marker-travel,0px),0) scaleX(-1)}
}
@keyframes trex-fill-scroll{from{transform:scaleY(0)}to{transform:scaleY(1)}}
@media(prefers-reduced-motion:reduce){.trex-progress-dino{will-change:auto}}
@media print{.trex-progress{display:none!important}}

/* Reduce compositing cost of the moving scroll marker on touch devices. */
@media(max-width:640px){.trex-progress-dino{filter:drop-shadow(0 2px 3px #0008)}}

/* Jurassic uses the SAME tilt-and-arrive behaviour as the Space screenshots.
   Translate the whole project only for its vertical arrival; keep the 3-D
   perspective/tilt on the screenshot itself, so the heading and link remain
   in normal flow and cannot be obscured by a displaced screenshot. */
html[data-experience="trex"].motion-ready .scroll-project{
  transform:translate3d(0,var(--project-lift,0px),0);
  /* The second project's generic reveal delay would delay each scroll sample. */
  transition:none;
  will-change:transform;
}
html[data-experience="trex"].motion-ready .scroll-project .project-screen{
  transform:translateY(var(--hover-lift,0px))
    rotateX(var(--project-rx,0deg)) rotateY(var(--project-ry,0deg))
    scale(var(--project-scale,1));
  transform-origin:50% 65%;
  will-change:transform;
}
html[data-experience="trex"] .project-description{position:relative;z-index:1}
/* FitFitCity's hover lift must not snap inside the scroll-driven transform.
   Hover the card's stable area and ease a separate compositor translation;
   the screenshot's scroll tilt and the caption keep their existing motion. */
@media (hover:hover) and (pointer:fine) and (min-width:641px){
  html[data-experience="trex"].motion-ready .scroll-project .fit-screen{
    --hover-lift:0px;
    translate:0 0;
    transition:translate .28s cubic-bezier(.2,.65,.2,1),box-shadow .3s ease;
  }
  html[data-experience="trex"].motion-ready .scroll-project:hover .fit-screen{
    translate:0 -5px;
  }
}
@media (prefers-reduced-motion:reduce){
  html[data-experience="trex"].motion-ready .scroll-project,
  html[data-experience="trex"].motion-ready .scroll-project .project-screen{
    transform:none;will-change:auto
  }
  html[data-experience="trex"].motion-ready .scroll-project .fit-screen{
    translate:none;transition:box-shadow .3s ease;
  }
}


/* Mobile Safari: the 30fps movie remains in a stable large-viewport layer while
   browser toolbar chrome contracts/expands; no expensive resizing on swipes. */
@media (hover:none) and (pointer:coarse) {
  .trex-stage {
    inset:0 0 auto;
    height:100vh;
    height:100lvh;
    overflow:hidden;
    contain:layout paint;
  }

}

/* Shared, low-overhead mobile motion. Identical section reveals on Space and
   Dinosaur; unlike desktop, no transform calculations occur during swipes. */
@media (pointer:coarse), (max-width:640px) {
  html.motion-ready .scroll-project { transform:none !important; will-change:auto; }
  html.motion-ready .scroll-project .project-screen {
    transform:translate3d(0,-17px,0) rotateX(6deg) rotateY(-3deg) scale(.965) !important;
    opacity:.92;
    transform-origin:50% 65%;
    transition:transform .95s cubic-bezier(.18,.7,.18,1), opacity .88s ease, box-shadow .3s ease !important;
    will-change:auto;
  }
  html.motion-ready .scroll-project.motion-in-view .project-screen {
    transform:translate3d(0,0,0) rotateX(0deg) rotateY(0deg) scale(1) !important;
    opacity:1;
  }
  html.motion-ready :is(.section-heading,.approach-heading,.client-first-heading) h2 em {
    background-size:var(--heading-width,0%) 3px;
    transition:background-size .95s cubic-bezier(.2,.6,.2,1);
  }
  html.motion-ready .steps:after {transition:transform .8s ease-out;}
  .project-description {position:relative;z-index:1;}
}
@media (prefers-reduced-motion:reduce) {
  :is(.section-heading,.approach-heading,.client-first-heading) h2 em {background-size:100% 2px !important;transition:none !important;}
  .scroll-project .project-screen {opacity:1 !important;transform:none !important;transition:none !important;}
  .steps:after {transform:scaleY(1) !important;transition:none !important;}
}
/* assets/home-additions.css */
/* New navigation links and enquiry form only. Existing theme styles are untouched. */
.wb-service-links{display:flex;flex-wrap:wrap;align-items:center;gap:4px 26px;flex-basis:100%;font-size:.8125rem;color:var(--label)}
.wb-service-links a{display:inline-flex;align-items:center;min-height:44px}
.wb-service-links a:hover{color:var(--accent)}
.wb-contact-area{row-gap:40px}
.wb-contact-form{grid-column:1/-1;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px 26px;margin:0;padding:32px 0 0;border-top:1px solid var(--contact-line);min-width:0}
.wb-contact-form .wb-form-title{grid-column:1/-1;font-size:1.5rem;letter-spacing:-.025em;line-height:1.3;margin:0 0 4px;color:var(--ink)}
.wb-contact-form .wb-form-field{display:grid;align-content:start;gap:9px;min-width:0}
.wb-contact-form label{font-size:.875rem;line-height:1.5;color:var(--ink)}
.wb-contact-form label span{color:var(--muted);font-size:.8125rem}
.wb-contact-form :is(input:not([type=hidden]),select,textarea){display:block;box-sizing:border-box;min-width:0;width:100%;border:1px solid var(--outline);border-radius:6px;background:var(--white);color:var(--ink);font:inherit;font-size:16px;line-height:1.5;padding:13px 14px;min-height:50px;box-shadow:none;transition:border-color .15s}
.wb-contact-form textarea{min-height:144px;resize:vertical}
.wb-contact-form :is(input,select,textarea):focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-color:var(--accent)}
.wb-contact-form :is(input,textarea)::placeholder{color:var(--muted);opacity:1}
.wb-contact-form .wb-form-wide{grid-column:1/-1}
.wb-contact-form .wb-form-actions{display:flex;flex-wrap:wrap;align-items:center;gap:18px 28px}
.wb-contact-form .wb-form-actions .button{flex-shrink:0}
.wb-contact-form .wb-form-note{font-size:.8125rem;line-height:1.7;color:var(--secondary-ink);max-width:510px;margin:0}
.wb-contact-form .wb-form-note a{text-decoration:underline;text-underline-offset:3px}
.wb-contact-form .wb-form-package{grid-column:1/-1;font-size:.875rem;color:var(--secondary-ink);margin:0}
.wb-contact-form .wb-form-package[hidden],.wb-contact-form .wb-form-status[hidden],.wb-contact-form .wb-form-honeypot{display:none!important}
.wb-contact-form .wb-form-status{grid-column:1/-1;line-height:1.65;font-size:.875rem;color:var(--ink);margin:0}
.wb-contact-form button:disabled{opacity:.75;cursor:wait}
@media(max-width:680px){.wb-contact-form{grid-template-columns:minmax(0,1fr);gap:19px;padding-top:28px}.wb-contact-form .wb-form-actions{align-items:stretch}.wb-contact-form .wb-form-actions .button{width:100%}.wb-service-links{gap:0 22px}}
@media(prefers-reduced-motion:reduce){.wb-contact-form :is(input,select,textarea){transition:none}}

/* Home: £99 site audit band */
.wb-audit-band{padding-block:8px 40px;position:relative;z-index:2}
.wb-audit-card{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,1fr) auto;gap:28px 48px;align-items:center;padding:36px 40px;border:1px solid var(--featured-line,var(--line));border-radius:14px;background:var(--featured-bg,var(--white));box-shadow:0 18px 40px var(--shadow-lift,#0000)}
.wb-audit-copy .eyebrow{margin-bottom:12px;color:var(--accent)}
.wb-audit-copy h2{font-size:clamp(1.75rem,3vw,2.6rem);letter-spacing:-.04em;line-height:1.1;margin:0 0 12px;color:var(--ink)}
.wb-audit-copy h2 em{color:var(--accent);font-style:normal}
.wb-audit-copy p:not(.eyebrow){margin:0;color:var(--secondary-ink);font-size:1rem;line-height:1.6}
.wb-audit-points{list-style:none;margin:0;padding:0;display:grid;gap:12px}
.wb-audit-points li{position:relative;padding-left:30px;color:var(--ink);font-size:.9375rem;line-height:1.5}
.wb-audit-points li:before{content:"✓";position:absolute;left:0;top:0;display:grid;place-items:center;width:20px;height:20px;border-radius:50%;background:var(--accent);color:var(--on-accent);font-size:11px;font-weight:700}
.wb-audit-action{display:grid;gap:10px;justify-items:start}
.wb-audit-action p{margin:0;font-size:.8125rem;color:var(--muted)}
@media(max-width:1000px){.wb-audit-card{grid-template-columns:1fr 1fr}.wb-audit-copy{grid-column:1/-1}}
@media(max-width:640px){.wb-audit-card{grid-template-columns:1fr;padding:26px 22px}.wb-audit-action,.wb-audit-action .button{width:100%}}

.wb-contact-form .wb-field-error{font-size:.8125rem;line-height:1.5;color:#b42318}
.wb-contact-form [aria-invalid="true"]{border-color:#b42318!important;box-shadow:0 0 0 1px #b42318}
.wb-contact-form .wb-form-status[data-state="error"]{color:#b42318;font-weight:600}
.wb-contact-form .wb-form-status[data-state="success"]{color:#067647;font-weight:600}

/* Helpful-reading line under "Keep moving forward" (29 Oct 2026) */
.optional-heading>p:has(+ .optional-reading){color:var(--muted);margin-top:19px;font-size:1rem}
.optional-heading>.optional-reading{color:var(--muted);margin-top:10px;font-size:1rem}
.optional-reading a{color:var(--accent);text-decoration:underline;text-underline-offset:3px}
.optional-reading a:hover{text-decoration-thickness:2px}
/* assets/header-nav.css */
/* Header: services shown individually, Site Audit emphasised, compact menu on small screens */
.site-header nav a[aria-current=page]{color:var(--accent)}
.site-header nav a.wb-nav-audit,.wb-header-audit{display:inline-flex;align-items:center;gap:6px;padding:10px 16px;border-radius:999px;background:var(--accent);color:var(--on-accent)!important;font-weight:600;font-size:.875rem;line-height:1.2;white-space:nowrap;box-shadow:0 5px 15px var(--shadow-accent);transition:background .2s}
.site-header nav a.wb-nav-audit:after{display:none}
.site-header nav a.wb-nav-audit:hover,.wb-header-audit:hover{background:var(--accent-hover);color:var(--on-accent)}
.wb-nav-audit strong,.wb-header-audit strong{font-weight:700}
.site-header nav a{white-space:nowrap}
.site-header nav .wb-nav-contact{display:none}
.wb-header-audit{display:none}
.wb-menu-toggle{display:none;flex:none;place-items:center;width:46px;height:46px;padding:0;border:1px solid var(--outline,var(--line));border-radius:6px;background:transparent;color:var(--ink);cursor:pointer}
.wb-menu-toggle span,.wb-menu-toggle span:before,.wb-menu-toggle span:after{display:block;width:18px;height:2px;border-radius:2px;background:currentColor;position:relative;transition:transform .2s,opacity .2s}
.wb-menu-toggle span:before,.wb-menu-toggle span:after{content:"";position:absolute;left:0}
.wb-menu-toggle span:before{top:-6px}.wb-menu-toggle span:after{top:6px}
.wb-menu-open .wb-menu-toggle span{background:transparent}
.wb-menu-open .wb-menu-toggle span:before{transform:translateY(6px) rotate(45deg);background:currentColor}
.wb-menu-open .wb-menu-toggle span:after{transform:translateY(-6px) rotate(-45deg);background:currentColor}
.wb-menu-toggle:focus-visible{outline:2px solid var(--accent);outline-offset:3px}
@media(max-width:1250px){.site-header nav{gap:20px}}
@media(max-width:1500px){
  .site-header nav .wb-nav-page{display:none}
  .wb-menu-toggle{display:inline-grid}
}
@media(max-width:1000px){.wb-header-audit{display:inline-flex}}
/* Open menu panel (all links listed individually) */
.site-header.wb-menu-open nav{display:flex!important;position:absolute;top:100%;left:var(--gutter);right:var(--gutter);z-index:60;flex-direction:column;align-items:stretch;gap:0;padding:8px 20px 16px;background:var(--white);border:1px solid var(--line);border-radius:10px;box-shadow:0 18px 40px #0003}
.site-header.wb-menu-open nav a{display:flex!important;align-items:center;min-height:50px;padding:12px 0;border-bottom:1px solid var(--line);font-size:1rem;color:var(--ink)}
.site-header.wb-menu-open nav a:after{display:none}
.site-header.wb-menu-open nav a.wb-nav-audit{order:-1;justify-content:center;margin:10px 0 6px;border-bottom:0;color:var(--on-accent)}
@media(max-width:640px){
  .site-header .header-actions>.button{display:none!important}
  .wb-header-audit{padding:10px 13px;font-size:.8125rem}
  .site-header:has(.trex-trigger){grid-template-columns:minmax(0,1fr) auto auto}
  .site-header:has(.trex-trigger) .wb-header-audit{grid-column:2;grid-row:1}
  .site-header:has(.trex-trigger) .wb-menu-toggle{grid-column:3;grid-row:1}
}
@media(max-width:370px){.site-header .header-actions{width:auto;margin-left:auto;gap:8px}.wb-header-audit{padding-inline:12px}.wb-xs-hide{display:none}}
@media(max-width:350px){.site-header{flex-wrap:nowrap}}
@media(prefers-reduced-motion:reduce){.wb-menu-toggle span,.wb-menu-toggle span:before,.wb-menu-toggle span:after{transition:none}}
@media(min-width:1001px) and (max-width:1250px){.site-header nav{display:flex!important}}
@media(min-width:641px) and (max-width:1250px){
  .site-header:has(.trex-trigger) .header-actions .header-cta-full{display:none}
  .site-header:has(.trex-trigger) .header-actions .header-cta-short{display:inline}
  .site-header .trex-trigger,.site-header .trex-back{white-space:normal;max-width:180px;font-size:.8125rem;padding:8px 12px}
}
@media(min-width:1251px){.site-header .header-actions .button{white-space:nowrap}}
@media(max-width:1850px){
  .site-header:has(.trex-trigger) nav .wb-nav-page{display:none}
  .site-header:has(.trex-trigger) .wb-menu-toggle{display:inline-grid}
}
.site-header:has(.trex-trigger){column-gap:28px}
@media(min-width:1251px) and (max-width:1750px){
  .site-header:has(.trex-trigger) .header-actions .header-cta-full{display:none}
  .site-header:has(.trex-trigger) .header-actions .header-cta-short{display:inline}
  .site-header .trex-trigger,.site-header .trex-back{max-width:200px;white-space:normal;font-size:.8125rem;padding:8px 12px}
}

/* Header parity with the home page (28 Oct 2026). Home is the reference: these rules repeat
   the home header geometry (trex/experience.css and the :has(.trex-trigger) rules) for pages
   without the T-rex button, so the logo, nav links, audit pill and menu button sit in exactly the
   same place on every page. Home is unaffected. */
.site-header:not(:has(.trex-trigger)){column-gap:28px}
@media(min-width:1251px){
  .site-header{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr)}
  .site-header>.wordmark{justify-self:start}
  .site-header nav{justify-self:center;white-space:nowrap}
  .site-header .header-actions{justify-self:end}
}
@media(max-width:1850px){
  .site-header nav .wb-nav-page{display:none}
  .site-header .wb-menu-toggle{display:inline-grid}
}
/* Same actions-box width as home (T-rex button + short CTA + menu) so the nav and buttons line up */
/* Home 641-1000px: the T-rex button, Enquire and menu used to run past the right edge below ~800px.
   Let the T-rex button shrink if space is short, and below 800px drop the Enquire button (Contact is in the menu), as on mobile. */
@media(min-width:641px) and (max-width:1000px){
  .site-header:has(.trex-trigger) .header-actions{flex:0 1 auto;min-width:0}
  .site-header:has(.trex-trigger) .trex-trigger{flex:0 1 180px;min-width:0}
}
@media(min-width:641px) and (max-width:1000px){
  .site-header:not(:has(.trex-trigger)) .header-actions{flex:0 1 509.547px;min-width:0;justify-content:flex-end}
}
@media(min-width:641px) and (max-width:799px){
  .site-header:has(.trex-trigger) .header-actions>.button{display:none}
  .site-header:not(:has(.trex-trigger)) .header-actions{flex-basis:373px}
}
@media(min-width:1001px) and (max-width:1150px){
  .site-header:not(:has(.trex-trigger)) .header-actions{min-width:372.547px;justify-content:flex-end;flex-shrink:0}
}
@media(min-width:1151px) and (max-width:1250px){
  .site-header:not(:has(.trex-trigger)) .header-actions{min-width:382.547px;justify-content:flex-end;flex-shrink:0}
}
@media(max-width:640px){
  .site-header:not(:has(.trex-trigger)){padding-block:20px}
}
@media(max-width:640px){
  .site-header:not(:has(.trex-trigger)){display:grid;grid-template-columns:minmax(0,1fr) auto auto;align-items:center}
  .site-header:not(:has(.trex-trigger)) .header-actions{display:contents}
}

/* 1001-1009px: everything was ~4px too wide for the viewport on every page; tighten the two header gaps slightly */
@media(min-width:1001px) and (max-width:1009px){.site-header,.site-header:has(.trex-trigger),.site-header:not(:has(.trex-trigger)){column-gap:24px}}

/* Web design and Redesign nav links (30 Oct 2026): keep the desktop bar on one line without overlap.
   Links hidden here stay in the open menu, which lists every link. */
@media(min-width:1001px) and (max-width:1250px){
  .site-header nav a[href="/creative-design/"],.site-header nav a[href="/news/"]{display:none}
}
@media(min-width:1251px) and (max-width:1420px){
  .site-header nav{gap:18px}
  .site-header nav a[href="/news/"]{display:none}
}
@media(min-width:1751px) and (max-width:2200px){
  .site-header:has(.trex-trigger) .header-actions .header-cta-full{display:none}
  .site-header:has(.trex-trigger) .header-actions .header-cta-short{display:inline}
  .site-header .trex-trigger,.site-header .trex-back{max-width:200px;white-space:normal;font-size:.8125rem;padding:8px 12px}
}
