/* 7-team.com: its own look. Pure black, big type, hairlines, the seven colours used as a spectrum. */
:root{--bg:#050505;--fg:#F5F5F7;--mut:#8E8E93;--line:rgba(255,255,255,.11);--sp:linear-gradient(90deg,#2DD4BF,#22D3EE,#38BDF8,#3B82F6,#6366F1,#8B5CF6);--head:"Sora",system-ui,sans-serif;--body:"Inter",system-ui,sans-serif;--mono:"IBM Plex Mono",monospace}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
body{background:var(--bg);color:var(--fg);font:400 17px/1.6 var(--body);overflow-x:hidden;-webkit-font-smoothing:antialiased}
img,svg{display:block;max-width:100%}
a{color:inherit;text-decoration:none}
button{font:inherit;color:inherit;background:none;border:0;cursor:pointer}
section[id]{scroll-margin-top:70px}
.wrap{max-width:1240px;margin:0 auto;padding:0 28px}
.eyebrow{font:500 12px/1 var(--mono);letter-spacing:.22em;text-transform:uppercase;color:var(--mut);margin-bottom:22px}
h1,h2,h3{font-family:var(--head);font-weight:600;letter-spacing:-.035em;line-height:1.04}
.sh{max-width:900px;margin-bottom:64px}
.sh h2{font-size:clamp(38px,5.6vw,84px)}
.sub{color:var(--mut);font-size:clamp(17px,1.5vw,21px);line-height:1.55;max-width:60ch;margin-top:22px}

/* buttons */
.pill{display:inline-flex;align-items:center;gap:10px;padding:12px 22px;border-radius:999px;background:var(--fg);color:#000;font:600 15px var(--body);transition:transform .25s,background .25s,box-shadow .25s,color .25s;border:1px solid transparent}
.pill svg{width:16px;height:16px}
.pill:hover{transform:translateY(-2px);box-shadow:0 12px 40px -12px rgba(255,255,255,.5)}
.pill.ghost{background:transparent;color:var(--fg);border-color:var(--line)}
.pill.ghost:hover{border-color:rgba(255,255,255,.5);box-shadow:none}
.pill.big{padding:17px 30px;font-size:16px}
.btns{display:flex;gap:12px;flex-wrap:wrap;margin-top:34px}

/* nav */
.tnav{position:fixed;z-index:50;left:0;right:0;top:0;display:flex;align-items:center;justify-content:space-between;gap:20px;padding:18px 28px;transition:background .3s,backdrop-filter .3s,border-color .3s;border-bottom:1px solid transparent}
.tnav.scrolled{background:rgba(5,5,5,.72);backdrop-filter:blur(18px) saturate(1.4);border-color:var(--line)}
.brand{display:flex;align-items:center;gap:10px}
.brand img{width:26px;height:30px}.brand b{font:600 18px var(--head);letter-spacing:.2em}
.tnav nav{display:flex;gap:34px}
.tnav nav a{font:500 14px var(--body);color:var(--mut);transition:color .2s;position:relative}
.tnav nav a:hover,.tnav nav a.on{color:#fff}
.tnav nav a:after{content:"";position:absolute;left:0;right:0;bottom:-6px;height:2px;border-radius:2px;background:var(--sp);transform:scaleX(0);transition:transform .3s;transform-origin:left}
.tnav nav a.on:after,.tnav nav a:hover:after{transform:scaleX(1)}
@media(max-width:820px){.tnav nav{display:none}.tnav{padding:14px 18px}}

/* hero */
.hero{position:relative;min-height:100svh;display:flex;align-items:center;padding:140px 28px 130px;overflow:hidden}
.hero .spot{position:absolute;inset:0;background:radial-gradient(600px circle at var(--mx,70%) var(--my,35%),rgba(255,255,255,.07),transparent 60%);pointer-events:none}
.g7{position:absolute;right:-7%;top:50%;width:min(56vw,700px);transform:translateY(-50%);opacity:.8;pointer-events:none;filter:drop-shadow(0 0 60px rgba(77,139,255,.25))}
.js .g7 path{stroke-dasharray:1;stroke-dashoffset:1;animation:draw 2.6s cubic-bezier(.6,0,.2,1) forwards}
.js .g7 path:nth-child(2){animation-delay:.25s}.js .g7 path:nth-child(3){animation-delay:.5s}
@keyframes draw{to{stroke-dashoffset:0}}
.hwrap{position:relative;z-index:2;max-width:1240px;width:100%;margin:0 auto}
.hero h1{font-size:clamp(44px,7.2vw,116px);line-height:.98;letter-spacing:-.05em;max-width:11ch}
.hero h1 .l1{display:block}
.hero h1 .l2{display:block;background:var(--sp);background-size:200% 100%;-webkit-background-clip:text;background-clip:text;color:transparent;animation:spec 9s linear infinite alternate}
@keyframes spec{to{background-position:100% 0}}
.hero .lead{margin-top:30px;max-width:46ch;font-size:clamp(18px,1.7vw,24px);color:var(--mut);line-height:1.5}
.spectrum{position:absolute;left:28px;right:28px;bottom:36px;display:flex;gap:6px;z-index:3}
.spectrum a{flex:1;display:grid;gap:10px;opacity:.85;transition:opacity .25s,transform .25s}
.spectrum i{height:4px;border-radius:4px;background:var(--c)}
.spectrum small{font:500 11px var(--mono);letter-spacing:.14em;color:var(--mut);transition:color .25s}
.spectrum a:hover{opacity:1;transform:translateY(-3px)}.spectrum a:hover small{color:var(--c)}
@media(max-width:820px){.g7{width:120vw;right:-30vw;top:62%;opacity:.35}.hero{align-items:flex-start;padding-top:130px}}

/* scroll reveal (only when JS runs, and never inside the admin editor) */
.js [data-r]{opacity:0;transform:translateY(30px);transition:opacity .9s cubic-bezier(.2,.7,.2,1),transform .9s cubic-bezier(.2,.7,.2,1)}
.js [data-r].in{opacity:1;transform:none}

section{position:relative;padding:clamp(90px,12vw,170px) 0}
.hero{padding-top:140px}

/* pillars */
.pgrid{display:grid;grid-template-columns:1.1fr 1fr;gap:70px;align-items:start}
.plist{list-style:none;border-bottom:1px solid var(--line)}
.plist li{border-top:1px solid var(--line)}
.pi{display:flex;align-items:center;gap:26px;width:100%;padding:24px 0;text-align:left}
.pi .no{font:500 13px var(--mono);letter-spacing:.14em;color:var(--mut);width:34px;transition:color .3s}
.pi .t{flex:1;font:600 clamp(26px,3.5vw,50px)/1.05 var(--head);letter-spacing:-.035em;color:rgba(255,255,255,.34);transition:color .3s,transform .4s cubic-bezier(.2,.7,.2,1)}
.pi svg{width:26px;height:26px;color:var(--c);opacity:0;transform:translateX(-10px);transition:opacity .3s,transform .3s}
.pi:hover .t,.pi.on .t{color:#fff;transform:translateX(6px)}
.pi.on .no,.pi:hover .no{color:var(--c)}
.pi.on svg,.pi:hover svg{opacity:1;transform:none}
.pv{position:sticky;top:110px;height:540px;border-radius:30px;border:1px solid var(--line);background:radial-gradient(circle at 75% 15%,color-mix(in srgb,var(--c) 24%,transparent),transparent 62%),#0a0a0a;overflow:hidden;transition:background .5s}
.pp{position:absolute;inset:0;padding:42px;display:flex;flex-direction:column;justify-content:flex-end;opacity:0;transform:translateY(18px);pointer-events:none;transition:opacity .45s,transform .45s}
.pp.on{opacity:1;transform:none;pointer-events:auto}
.pp .big-no{position:absolute;right:28px;top:6px;font:700 190px/1 var(--head);letter-spacing:-.06em;color:transparent;-webkit-text-stroke:1.5px color-mix(in srgb,var(--c) 55%,transparent)}
.pp .ico{position:absolute;left:42px;top:44px;width:104px;height:104px;color:var(--c);filter:drop-shadow(0 0 26px color-mix(in srgb,var(--c) 60%,transparent))}
.pp h3{font-size:clamp(30px,3vw,44px);margin-bottom:12px}
.pp p{color:var(--mut);font-size:19px;line-height:1.55;max-width:34ch}
.pp .lnk{display:inline-flex;align-items:center;gap:10px;margin-top:24px;color:var(--c);font-weight:600}
.pp .lnk svg{width:18px;transition:transform .25s}.pp .lnk:hover svg{transform:translateX(5px)}
@media(max-width:900px){.pgrid{grid-template-columns:1fr;gap:34px}.pv{position:relative;top:0;height:460px}}

/* prism: seven lines become one */
.beam{position:relative;margin:10px 0 70px;--p:1}
.beam svg{width:100%;height:auto;overflow:visible}
.beam .bl{stroke-width:2.5;stroke-linecap:round}
.js .beam .bl{stroke-dasharray:1;stroke-dashoffset:clamp(0,calc(1.04 - var(--p) * 1.7 + var(--k) * .03),1)}
.beam .wb{stroke:#fff;stroke-width:4;stroke-linecap:round;filter:drop-shadow(0 0 14px rgba(255,255,255,.8))}
.js .beam .wb{stroke-dasharray:1;stroke-dashoffset:clamp(0,calc(1 - (var(--p) - .5) * 2),1)}
.beam .hub{fill:#fff;filter:drop-shadow(0 0 22px #fff);opacity:clamp(0,calc(var(--p) * 2.2),1)}
.beam .end{fill:#fff;filter:drop-shadow(0 0 18px #fff);opacity:clamp(0,calc((var(--p) - .8) * 5),1)}
.beam .cap{position:absolute;bottom:-34px;font:500 12px var(--mono);letter-spacing:.2em;text-transform:uppercase;color:var(--mut)}
.beam .cap.l{left:0}.beam .cap.r{right:0}
.steps{list-style:none;display:grid;grid-template-columns:repeat(3,1fr);gap:40px}
.steps li{border-top:1px solid var(--line);padding-top:24px}
.steps span{font:500 13px var(--mono);letter-spacing:.14em;color:var(--mut)}
.steps b{display:block;margin:12px 0 8px;font:600 clamp(24px,2.4vw,32px) var(--head);letter-spacing:-.03em}
.steps p{color:var(--mut)}
@media(max-width:760px){.steps{grid-template-columns:1fr;gap:26px}}

/* founder */
.fgrid{display:grid;grid-template-columns:5fr 7fr;gap:80px;align-items:center}
.fph{position:relative;aspect-ratio:4/5;border-radius:34px;overflow:hidden;background:#0a0a0a;border:1px solid var(--line)}
.fph img{width:100%;height:100%;object-fit:cover;object-position:50% 50%;transition:transform .9s}
.fph:hover img{transform:scale(1.04)}
.fph:after{content:"";position:absolute;inset:auto 0 0;height:40%;background:linear-gradient(transparent,rgba(5,5,5,.75))}
.fph .tag{position:absolute;left:22px;bottom:22px;z-index:2;padding:9px 16px;border-radius:99px;background:rgba(255,255,255,.12);backdrop-filter:blur(10px);font:500 12px var(--mono);letter-spacing:.18em;text-transform:uppercase}
.ftx h2{font-size:clamp(46px,6.4vw,104px);letter-spacing:-.05em}
.ftx .role{margin:14px 0 22px;font:500 14px var(--mono);letter-spacing:.14em;text-transform:uppercase;background:var(--sp);-webkit-background-clip:text;background-clip:text;color:transparent;width:fit-content}
.ftx .bio{color:var(--mut);font-size:clamp(17px,1.5vw,21px);line-height:1.6;max-width:52ch}
@media(max-width:860px){.fgrid{grid-template-columns:1fr;gap:36px}.fph{max-width:420px}}

/* trust */
.nums{display:grid;grid-template-columns:repeat(4,1fr);gap:30px}
.nums div{border-left:1px solid var(--line);padding-left:22px}
.nums strong{display:block;font:600 clamp(38px,5vw,78px)/1 var(--head);letter-spacing:-.05em;background:linear-gradient(120deg,#fff 30%,#7dd3fc);-webkit-background-clip:text;background-clip:text;color:transparent}
.nums span{display:block;margin-top:10px;color:var(--mut);font-size:15px}
@media(max-width:860px){.nums{grid-template-columns:1fr 1fr;row-gap:36px}}
.logos{overflow:hidden;margin-top:80px;padding:30px 0;border-block:1px solid var(--line);-webkit-mask:linear-gradient(90deg,transparent,#000 10%,#000 90%,transparent);mask:linear-gradient(90deg,transparent,#000 10%,#000 90%,transparent)}
.lt{display:flex;gap:70px;width:max-content;animation:lt 50s linear infinite}
.lt span{font:600 clamp(26px,3vw,40px) var(--head);letter-spacing:-.03em;color:rgba(255,255,255,.45);white-space:nowrap;transition:color .25s}
.lt span:hover{color:#fff}
@keyframes lt{to{transform:translateX(-50%)}}
.logos:hover .lt{animation-play-state:paused}
.quotes{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:30px;margin-top:70px}
.quotes figure{border-top:1px solid var(--line);padding-top:24px}
.quotes blockquote{font:400 20px/1.55 var(--head);letter-spacing:-.01em;margin-bottom:18px}
.quotes figcaption{color:var(--mut);font-size:14px}.quotes figcaption b{color:#fff}

/* websites */
.wtabs{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:22px}
.wt{padding:10px 20px;border-radius:99px;border:1px solid var(--line);color:var(--mut);font:600 14px var(--body);transition:all .25s}
.wt:hover{color:#fff;border-color:rgba(255,255,255,.4)}
.wt.on{background:#fff;color:#000;border-color:#fff}
.frame{border:1px solid var(--line);border-radius:22px;overflow:hidden;background:#0a0a0a;box-shadow:0 60px 120px -60px rgba(77,139,255,.35)}
.fbar{display:flex;align-items:center;gap:7px;padding:13px 18px;border-bottom:1px solid var(--line);background:#0e0e0e}
.fbar i{width:10px;height:10px;border-radius:50%;background:rgba(255,255,255,.18)}
.fbar span{margin-left:12px;padding:5px 16px;border-radius:99px;background:rgba(255,255,255,.06);font:500 12px var(--mono);color:var(--mut)}
.ws{display:none}.ws.on{display:block}
.shot{position:relative;aspect-ratio:16/9;overflow:hidden;background:linear-gradient(135deg,#0d0d0d,#15102a)}
.shot iframe{position:absolute;left:0;top:0;width:1300px;height:720px;border:0;transform-origin:0 0;background:#050505;pointer-events:none}
.shot>img{width:100%;height:100%;object-fit:cover}
.shot .ph{position:absolute;inset:0;display:grid;place-items:center;font:600 clamp(30px,5vw,64px) var(--head);letter-spacing:-.04em;color:rgba(255,255,255,.6)}
.winfo{display:flex;justify-content:space-between;align-items:center;gap:20px;flex-wrap:wrap;padding:24px 30px}
.winfo h3{font-size:28px}.winfo p{color:var(--mut);margin-top:4px}

/* contact */
.cgrid{display:grid;grid-template-columns:1fr 1fr;gap:80px;align-items:start}
.contact h2{font-size:clamp(44px,6.2vw,100px);letter-spacing:-.05em}
.contact .mail{margin-top:34px}
.contact .mail a{font:600 clamp(22px,2.6vw,38px) var(--head);letter-spacing:-.03em;background:var(--sp) bottom/100% 2px no-repeat;padding-bottom:6px}
.contact .alt{margin-top:18px}.contact .alt a{color:var(--mut);transition:color .2s}.contact .alt a:hover{color:#fff}
.cf{display:grid;gap:26px}
.chips{border:0;display:flex;flex-wrap:wrap;gap:8px}
.chips legend{font:500 12px var(--mono);letter-spacing:.2em;text-transform:uppercase;color:var(--mut);margin-bottom:14px;padding:0}
.ch{padding:9px 16px;border-radius:99px;border:1px solid var(--line);color:var(--mut);font:500 14px var(--body);transition:all .25s}
.ch:before{content:"";display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--c);margin-right:9px;vertical-align:middle}
.ch:hover{color:#fff;border-color:rgba(255,255,255,.4)}
.ch.on{color:#fff;border-color:var(--c);background:color-mix(in srgb,var(--c) 14%,transparent)}
.row{display:grid;grid-template-columns:1fr 1fr;gap:22px}
.cf label{display:grid;gap:4px;font:500 12px var(--mono);letter-spacing:.18em;text-transform:uppercase;color:var(--mut)}
.cf input,.cf textarea{background:transparent;border:0;border-bottom:1px solid var(--line);color:var(--fg);font:400 19px var(--body);letter-spacing:0;text-transform:none;padding:12px 0;outline:none;border-radius:0;transition:border-color .25s;resize:vertical}
.cf input:focus,.cf textarea:focus{border-color:#fff}
.hp{position:absolute;left:-9999px;opacity:0}
.cf .pill{justify-self:start;border:0}
.msg{min-height:22px;font-size:15px;color:var(--mut)}.msg.ok{color:#3DDC97}.msg.bad{color:#FF5C7A}
@media(max-width:900px){.cgrid{grid-template-columns:1fr;gap:44px}.row{grid-template-columns:1fr}}

/* footer */
.tfoot{border-top:1px solid var(--line);padding-top:60px;overflow:hidden}
.frow{display:flex;justify-content:space-between;align-items:center;gap:24px;flex-wrap:wrap}
.fb{display:flex;align-items:center;gap:14px}.fb img{width:30px}.fb span{color:var(--mut)}
.fl{display:flex;gap:26px;flex-wrap:wrap}.fl a{color:var(--mut);transition:color .2s}.fl a:hover{color:#fff}
.word{font:700 clamp(90px,25vw,430px)/.8 var(--head);letter-spacing:-.07em;white-space:nowrap;text-align:center;margin-top:50px;background:var(--sp);-webkit-background-clip:text;background-clip:text;color:transparent;opacity:.92;-webkit-mask:linear-gradient(#000 40%,transparent 96%);mask:linear-gradient(#000 40%,transparent 96%);user-select:none;padding-bottom:.04em}
.copy{padding-top:22px;padding-bottom:30px;color:var(--mut);font-size:13px;margin-top:-6px}
.copy a{color:#fff}
@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}.js [data-r]{opacity:1;transform:none}.js .g7 path{stroke-dashoffset:0}}

/* v3 work samples, texture, polish */
body:before{content:"";position:fixed;inset:0;z-index:100;pointer-events:none;opacity:.05;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='180' height='180'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='2' stitchTiles='stitch'/></filter><rect width='100%25' height='100%25' filter='url(%23n)'/></svg>")}
section+section:before{content:"";position:absolute;left:28px;right:28px;top:0;height:1px;background:var(--sp);opacity:.18}
.g7{transform:translateY(-50%) perspective(1200px) rotateY(var(--ry,0deg)) rotateX(var(--rx,0deg));transition:transform .3s ease-out}
.pill[data-mag]{will-change:transform}
.work .wfilter{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:34px}
.fc{padding:10px 18px;border-radius:99px;border:1px solid var(--line);color:var(--mut);font:600 14px var(--body);transition:all .25s}
.fc[data-f]:not([data-f=all]):before{content:"";display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--c);margin-right:9px;vertical-align:middle}
.fc:hover{color:#fff;border-color:rgba(255,255,255,.4)}
.fc.on{background:#fff;color:#000;border-color:#fff}
.wgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(290px,1fr));gap:22px}
.wk{position:relative;display:block;text-align:left;border-radius:20px;overflow:hidden;background:#0a0a0a;border:1px solid var(--line);color:inherit;transition:transform .35s cubic-bezier(.2,.7,.2,1),border-color .3s,box-shadow .3s}
.wk[hidden]{display:none}
.wk:hover{transform:translateY(-6px);border-color:color-mix(in srgb,var(--c) 70%,transparent);box-shadow:0 30px 70px -34px var(--c)}
.wk .th{position:relative;display:block;aspect-ratio:16/10;overflow:hidden;background:#111}
.wk .th img{width:100%;height:100%;object-fit:cover;transition:transform .8s}
.wk:hover .th img{transform:scale(1.07)}
.wk .pl{position:absolute;right:14px;bottom:14px;width:50px;height:50px;border-radius:50%;display:grid;place-items:center;background:rgba(255,255,255,.14);backdrop-filter:blur(10px);border:1px solid rgba(255,255,255,.25);transition:background .25s,transform .25s}
.wk .pl svg{width:20px;fill:#fff;margin-left:3px}
.wk:hover .pl{background:var(--c);transform:scale(1.1)}
.wk:hover .pl svg{fill:#000}
.wk .wkc{display:block;padding:16px 20px 20px}
.wk .tg{display:block;font:500 11px var(--mono);letter-spacing:.16em;text-transform:uppercase;color:var(--c);margin-bottom:6px}
.wk h3{font:600 19px/1.3 var(--head);letter-spacing:-.02em}
.wk.audio{display:flex;flex-direction:column}
.wk.audio .wkb{position:relative;display:block;width:100%;aspect-ratio:16/10;background:radial-gradient(circle at 70% 20%,color-mix(in srgb,var(--c) 30%,transparent),transparent 65%),#0d0d0d;overflow:hidden}
.wk.audio .wv{position:absolute;left:8%;right:8%;top:50%;height:46%;transform:translateY(-50%);display:flex;align-items:center;gap:5%}
.wk.audio .wv i{flex:1;height:30%;border-radius:4px;background:var(--c);opacity:.85;animation:wvb 1.3s ease-in-out infinite}
.wk.audio .wv i:nth-child(2n){height:70%;animation-delay:-.3s}.wk.audio .wv i:nth-child(3n){height:100%;animation-delay:-.7s}.wk.audio .wv i:nth-child(5n){height:50%;animation-delay:-1s}
@keyframes wvb{50%{transform:scaleY(.45)}}
.wk.audio .scf iframe{display:block;width:100%;height:120px;border:0;border-top:1px solid var(--line)}
.wnote{margin-top:30px;color:var(--mut);font-size:15px}
/* video popup uses the shared player: give it the dark look of this page */
#vtp .round{width:44px;height:44px;border-radius:50%;border:1px solid var(--line);background:rgba(255,255,255,.1);display:grid;place-items:center;color:#fff;cursor:pointer}
#vtp .round svg{width:18px;height:18px}
#vtp .round svg:not(.st){fill:#fff}
#vtp .btn{padding:9px 16px;border-radius:99px;border:1px solid var(--line);color:#fff;background:transparent;cursor:pointer}
#vtp .btn.sm{font-size:13px}

/* v4 motion */
.prog{position:absolute;left:0;right:0;top:0;height:3px;pointer-events:none}
.prog i{display:block;height:100%;background:var(--sp);transform-origin:0 50%;transform:scaleX(0)}
@keyframes wipe{from{clip-path:inset(0 100% 0 0);transform:translateY(24px);opacity:0}to{clip-path:inset(0 0 0 0);transform:none;opacity:1}}
.js .hero h1{opacity:1;transform:none}
.js .hero h1 .l1{animation:wipe 1.1s .15s cubic-bezier(.2,.8,.2,1) both}
.js .hero h1 .l2{animation:wipe 1.1s .45s cubic-bezier(.2,.8,.2,1) both,spec 9s 1.6s linear infinite alternate}
.js .spectrum i{transform:scaleX(0);transform-origin:0 50%;animation:fillI .9s cubic-bezier(.2,.8,.2,1) both}
.js .spectrum a:nth-child(1) i{animation-delay:.7s}.js .spectrum a:nth-child(2) i{animation-delay:.8s}.js .spectrum a:nth-child(3) i{animation-delay:.9s}.js .spectrum a:nth-child(4) i{animation-delay:1s}.js .spectrum a:nth-child(5) i{animation-delay:1.1s}.js .spectrum a:nth-child(6) i{animation-delay:1.2s}.js .spectrum a:nth-child(7) i{animation-delay:1.3s}
@keyframes fillI{to{transform:none}}
.g7 g{animation:g7f 9s ease-in-out infinite alternate;transform-origin:50% 50%}
@keyframes g7f{to{transform:translate(2px,-5px) scale(1.015)}}
/* pillar list slides in; panel parts rise in one after another */
.js .plist li{opacity:0;transform:translateX(-30px);transition:opacity .7s,transform .9s cubic-bezier(.2,.8,.2,1)}
.js .plist.in li{opacity:1;transform:none}
.js .plist.in li:nth-child(2){transition-delay:.08s}.js .plist.in li:nth-child(3){transition-delay:.16s}.js .plist.in li:nth-child(4){transition-delay:.24s}.js .plist.in li:nth-child(5){transition-delay:.32s}.js .plist.in li:nth-child(6){transition-delay:.4s}.js .plist.in li:nth-child(7){transition-delay:.48s}
.js .plist[data-r]{opacity:1;transform:none}
@keyframes icoIn{from{opacity:0;transform:scale(.4) rotate(-24deg)}to{opacity:1;transform:none}}
@keyframes noIn{from{opacity:0;transform:translateX(60px)}to{opacity:1;transform:none}}
@keyframes up{from{opacity:0;transform:translateY(22px)}to{opacity:1;transform:none}}
.pp.on .ico{animation:icoIn .9s cubic-bezier(.2,.8,.2,1) both}
.pp.on .big-no{animation:noIn 1s cubic-bezier(.2,.8,.2,1) both}
.pp.on h3{animation:up .7s .08s cubic-bezier(.2,.8,.2,1) both}.pp.on p{animation:up .7s .16s cubic-bezier(.2,.8,.2,1) both}.pp.on .lnk{animation:up .7s .24s cubic-bezier(.2,.8,.2,1) both}
/* work cards, founder photo, browser frame */
.js .wk[data-r]{transform:translateY(40px) scale(.96)}
.js .wk[data-r].in{transform:none;transition:transform .35s cubic-bezier(.2,.7,.2,1),border-color .3s,box-shadow .3s,opacity .5s}
.js .wk[data-r].in:hover{transform:translateY(-6px)}
.js .wk[data-r].enter{transition:opacity .8s cubic-bezier(.2,.7,.2,1),transform .9s cubic-bezier(.2,.7,.2,1)}
.js .fph[data-r]{transform:none;clip-path:inset(100% 0 0 0);transition:clip-path 1.3s cubic-bezier(.2,.8,.2,1),opacity .6s}
.js .fph[data-r].in{clip-path:inset(0)}
.js .fph[data-r] img{transform:scale(1.3);transition:transform 1.8s cubic-bezier(.2,.8,.2,1)}
.js .fph[data-r].in img{transform:none}
.js .frame[data-r]{transform:perspective(1400px) rotateX(10deg) translateY(60px) scale(.95);transform-origin:50% 100%}
.js .frame[data-r].in{transform:none}
.beam .pt{filter:drop-shadow(0 0 8px #fff);opacity:clamp(0,calc((var(--p) - .9) * 10),1)}
.word{background-size:200% 100%;animation:spec 12s linear infinite alternate}
/* cursor ring */
.cur{position:fixed;left:0;top:0;z-index:200;width:38px;height:38px;margin:-19px 0 0 -19px;border-radius:50%;border:1.5px solid rgba(255,255,255,.55);pointer-events:none;mix-blend-mode:difference;transition:width .25s,height .25s,margin .25s,background .25s,opacity .3s;opacity:0}
.cur.on{opacity:1}
.cur.big{width:70px;height:70px;margin:-35px 0 0 -35px;background:rgba(255,255,255,.9)}
@media(hover:none){.cur{display:none}}

/* v5 compact: smaller type and spacing, richer sample cards */
body{font-size:16px}
.wrap{max-width:1160px}
section{padding:clamp(64px,8.5vw,118px) 0}
.sh{margin-bottom:44px}
.sh h2{font-size:clamp(32px,4.4vw,64px)}
.sub{font-size:clamp(16px,1.3vw,19px)}
.eyebrow{margin-bottom:16px}
.hero h1{font-size:clamp(40px,6.2vw,98px)}
.hero .lead{font-size:clamp(17px,1.4vw,21px);margin-top:22px}
.btns{margin-top:26px}.pill.big{padding:14px 26px;font-size:15px}
.g7{width:min(48vw,600px)}
.pi{padding:18px 0}.pi .t{font-size:clamp(22px,2.7vw,38px)}
.pv{height:450px;top:100px}.pp{padding:34px}.pp .big-no{font-size:140px}.pp .ico{width:80px;height:80px;left:34px;top:34px}.pp h3{font-size:clamp(26px,2.4vw,36px)}.pp p{font-size:17px}
.pgrid{gap:56px}
.steps b{font-size:clamp(21px,2vw,27px)}
.ftx h2{font-size:clamp(38px,5vw,78px)}.fgrid{gap:60px}.fph{max-width:420px}
.nums strong{font-size:clamp(32px,4vw,58px)}
.lt span{font-size:clamp(22px,2.4vw,32px)}
.contact h2{font-size:clamp(36px,5vw,76px)}
.contact .mail a{font-size:clamp(20px,2.2vw,32px)}
.word{font-size:clamp(70px,22vw,360px)}
.wk-note,.wnote{font-size:14px}
.pi .soon,.fc em{font:500 10px var(--mono);letter-spacing:.14em;text-transform:uppercase;padding:4px 9px;border-radius:99px;border:1px solid color-mix(in srgb,var(--c) 55%,transparent);color:var(--c);font-style:normal;margin-left:10px;white-space:nowrap}
.pi .soon{align-self:center}
.soonb{align-self:flex-start;margin-bottom:12px;font:500 11px var(--mono);letter-spacing:.16em;text-transform:uppercase;padding:6px 12px;border-radius:99px;background:color-mix(in srgb,var(--c) 16%,transparent);color:var(--c);border:1px solid color-mix(in srgb,var(--c) 45%,transparent)}
.js .fph[data-r]{clip-path:none;transform:scale(.96);opacity:0}
.js .fph[data-r].in{transform:none;opacity:1}
.js .fph[data-r] img{transform:none}
.fph img{display:block}

/* sample cards: full-bleed image, title on top of it, preview on hover */
.wgrid{grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:14px;grid-auto-flow:dense}
.wk{aspect-ratio:4/3;border-radius:18px;background:#0b0b0b;perspective:900px;transform-style:preserve-3d}
.wk.feat{grid-column:span 2;aspect-ratio:auto}
.wk .th{position:absolute;inset:0;aspect-ratio:auto;background:#111;overflow:hidden}
.wk .th img{position:absolute;inset:0;transition:transform 1s cubic-bezier(.2,.7,.2,1),filter .4s}
.wk .th:after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(5,5,5,.1) 30%,rgba(5,5,5,.88))}
.wk .th iframe{position:absolute;left:50%;top:50%;width:177.8%;height:177.8%;transform:translate(-50%,-50%);border:0;pointer-events:none;opacity:0;transition:opacity .5s}
.wk .th iframe.on{opacity:1}
.wk .pl{position:absolute;left:50%;top:50%;right:auto;bottom:auto;width:58px;height:58px;margin:-29px 0 0 -29px;opacity:0;transform:scale(.5);transition:opacity .3s,transform .4s cubic-bezier(.2,.9,.3,1.4),background .25s;z-index:3}
.wk:hover .pl{opacity:1;transform:scale(1)}
.wk .wkc{position:absolute;left:0;right:0;bottom:0;padding:14px 16px;z-index:2;transform:translateZ(30px)}
.wk h3{font-size:16px;line-height:1.25}
.wk.feat h3{font-size:22px}
.wk:before{content:"";position:absolute;inset:0;z-index:4;pointer-events:none;background:radial-gradient(260px circle at var(--gx,50%) var(--gy,0%),rgba(255,255,255,.16),transparent 60%);opacity:0;transition:opacity .3s;border-radius:inherit}
.wk:hover:before{opacity:1}
.wk:hover .th img{transform:scale(1.08)}
.wk:after{content:"";position:absolute;left:0;right:0;bottom:0;height:3px;background:var(--c);transform:scaleX(0);transform-origin:0 50%;transition:transform .5s cubic-bezier(.2,.7,.2,1);z-index:5}
.wk:hover:after{transform:none}
.wk.audio{display:block;aspect-ratio:auto}
.wk.audio .wkb{position:relative;display:block;width:100%;aspect-ratio:4/3;text-align:left;background:radial-gradient(circle at 70% 18%,color-mix(in srgb,var(--c) 34%,transparent),transparent 62%),#0b0b0b}
.wk.audio .wv{top:38%;height:34%;left:10%;right:10%;gap:4%}
.wk.audio .wkb:after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,transparent 50%,rgba(5,5,5,.85))}
.wk.audio .wkc{z-index:2}
.wk.audio .pl{top:38%}
.wk.audio.open .pl{opacity:0}
.wk.soon{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;text-align:center;background:radial-gradient(circle at 50% 0%,color-mix(in srgb,var(--c) 22%,transparent),transparent 70%),#0b0b0b;border-style:dashed;border-color:color-mix(in srgb,var(--c) 50%,transparent)}
.wk.soon[hidden]{display:none}
.wk.soon:hover{transform:none;box-shadow:none}
.wk.soon .sn{font:700 72px/1 var(--head);letter-spacing:-.06em;color:transparent;-webkit-text-stroke:1.5px color-mix(in srgb,var(--c) 60%,transparent)}
.wk.soon b{font:600 24px var(--head);letter-spacing:-.03em}.wk.soon span:last-child{color:var(--c);font:500 12px var(--mono);letter-spacing:.14em;text-transform:uppercase}
.wfilter .fc{padding:8px 15px;font-size:13px}
@media(max-width:700px){.wk.feat{grid-column:auto;aspect-ratio:4/3}}

.wk[hidden]{display:none!important}

/* v6 uniform sample cards */
.wgrid{grid-template-columns:repeat(3,1fr);gap:16px;grid-auto-flow:row}
.wk,.wk.feat,.wk.audio .wkb,.wk.soon{aspect-ratio:16/10}
.wk.feat{grid-column:auto}
.wk.feat h3{font-size:16px}
.wk.audio{aspect-ratio:auto}
.wk.soon{min-height:0}
@media(max-width:900px){.wgrid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:560px){.wgrid{grid-template-columns:1fr}}

/* v8 audio cards: thin waveform that fills with colour while the track plays */
.wk.audio{display:block;aspect-ratio:16/10;cursor:pointer;background:radial-gradient(circle at 80% 0%,color-mix(in srgb,var(--c) 26%,transparent),transparent 62%),#0b0b0b}
.wk.audio .wkb{position:absolute;inset:0;display:block;width:auto;aspect-ratio:auto;background:none;outline:none}
.wk.audio .wkb:after{display:none}
.wk.audio .wfw{position:absolute;left:7%;right:7%;top:20%;height:40%;display:block;--p:0}
.wk.audio .wf{position:absolute;inset:0;display:flex;align-items:center;gap:3px}
.wk.audio .wf i{flex:1;height:var(--h);min-height:4px;border-radius:2px;background:rgba(255,255,255,.2);transform-origin:50% 50%;transition:background .3s}
.wk.audio .wf.fill i{background:var(--c);box-shadow:0 0 12px color-mix(in srgb,var(--c) 70%,transparent)}
.wk.audio .wf.fill{clip-path:inset(0 calc(100% - var(--p) * 100%) 0 0);transition:clip-path .25s linear}
.wk.audio:hover .wf:not(.fill) i{background:rgba(255,255,255,.34)}
.wk.audio.playing .wf.fill i{animation:wfp 1.1s ease-in-out infinite}
.wk.audio.playing .wf.fill i:nth-child(3n){animation-delay:-.3s}.wk.audio.playing .wf.fill i:nth-child(4n){animation-delay:-.6s}.wk.audio.playing .wf.fill i:nth-child(5n){animation-delay:-.9s}
@keyframes wfp{50%{transform:scaleY(.72)}}
.wk.audio .pl{position:absolute;left:auto;right:16px;top:auto;bottom:16px;margin:0;width:46px;height:46px;opacity:1;transform:none;z-index:3;background:var(--c);border:0}
.wk.audio .pl svg{width:18px;fill:#000;margin:0}.wk.audio .i-pause{display:none}
.wk.audio.playing .i-play{display:none}.wk.audio.playing .i-pause{display:block}
.wk.audio:hover .pl{transform:scale(1.08)}
.wk.audio .wkc{padding-right:76px}
.wk.audio.open .pl{opacity:1}
.sc-hidden{position:absolute;width:1px;height:1px;left:-9999px;opacity:0;pointer-events:none}


/* v10 hero: a calm, centred mark made of seven strands */
.hero{flex-direction:column;justify-content:center;text-align:center;padding:96px 28px 120px;min-height:100svh}
.hwrap{display:flex;flex-direction:column;align-items:center;max-width:980px}
.hero h1{max-width:none;font-size:clamp(34px,5.4vw,82px);line-height:1}
.hero .lead{margin-left:auto;margin-right:auto;max-width:52ch}
.hero .btns{justify-content:center}
.hero .eyebrow{margin-top:18px}
.mark{position:relative;container-type:inline-size;width:min(70vw,330px,36svh);aspect-ratio:1;margin:0 auto 6px}
.mark .glow{position:absolute;inset:4%;border-radius:50%;background:radial-gradient(circle,rgba(160,107,255,.2),rgba(41,211,232,.09) 46%,transparent 70%);animation:breathe 7s ease-in-out infinite}
@keyframes breathe{50%{transform:scale(1.08);opacity:.75}}
.mark .ring{position:absolute;inset:0;border-radius:50%;border:1px solid rgba(255,255,255,.1)}
.mark .ring2{inset:13%;border-style:dashed;border-color:rgba(255,255,255,.07)}
.mark .pt{position:absolute;left:50%;top:50%;width:2.4cqw;height:2.4cqw;margin:-1.2cqw;border-radius:50%;background:var(--c);transform:rotate(var(--a)) translateY(-50cqw);box-shadow:0 0 1.6cqw var(--c);animation:wave 7s ease-in-out infinite;animation-delay:calc(var(--i) * .5s)}
@keyframes wave{0%,100%{opacity:.45;box-shadow:0 0 1cqw var(--c)}8%{opacity:1;box-shadow:0 0 3.4cqw .4cqw var(--c)}20%{opacity:.45;box-shadow:0 0 1cqw var(--c)}}
.mark .tilt{position:absolute;left:50%;top:50%;width:52%;margin:-30% 0 0 -26%;transform:perspective(900px) rotateY(var(--ry,0deg)) rotateX(var(--rx,0deg));transition:transform .3s ease-out}
.sev{width:100%;height:auto;overflow:visible;filter:drop-shadow(0 0 14px rgba(120,140,255,.35));animation:bob7 6s ease-in-out infinite}
@keyframes bob7{50%{transform:translateY(-2cqw)}}
.js .sev g:not(.run) path{stroke-dasharray:1;stroke-dashoffset:1;animation:draw 2.2s cubic-bezier(.6,0,.2,1) forwards;animation-delay:calc(var(--i) * .13s)}
.sev .run path{stroke-dasharray:.05 .95;opacity:0;animation:run 6s linear infinite;animation-delay:calc(3.2s + var(--i) * .12s)}
@keyframes run{0%{opacity:0;stroke-dashoffset:0}6%{opacity:.85}30%{opacity:.85}38%,100%{opacity:0;stroke-dashoffset:-1}}
.hero .sparks{position:absolute;inset:0;pointer-events:none;overflow:hidden}
.hero .sparks i{position:absolute;border-radius:50%;opacity:0;animation:spark linear infinite}
@keyframes spark{0%{opacity:0;transform:translateY(0) scale(.6)}15%{opacity:.6}100%{opacity:0;transform:translateY(-120px) scale(1.2)}}
@media(max-width:820px){.hero{padding-top:90px}}

/* v11 hero: a solid 3D 7 that turns slowly */
.mark{perspective:900px;width:min(72vw,340px,38svh)}
.mark .tilt{width:60%;aspect-ratio:190/200;margin:-30% 0 0 -30%;transform-style:preserve-3d;transform:rotateX(calc(-10deg + var(--rx,0deg))) rotateY(var(--ry,0deg));transition:transform .3s ease-out}
.spin3d{position:absolute;inset:0;transform-style:preserve-3d;animation:spin3d 18s linear infinite}
.mark:hover .spin3d{animation-duration:40s}
@keyframes spin3d{from{transform:rotateY(-35deg)}to{transform:rotateY(325deg)}}
.spin3d .ly{position:absolute;left:0;top:0;width:100%;height:100%;overflow:visible;transform:translateZ(var(--z));backface-visibility:visible}
.mark:before{content:"";position:absolute;left:50%;bottom:5%;width:56%;height:11%;margin-left:-28%;border-radius:50%;background:radial-gradient(ellipse,rgba(120,140,255,.45),transparent 70%);filter:blur(10px);animation:breathe 7s ease-in-out infinite}
.mark .glow{inset:2%;opacity:.9}

.mark{width:min(80vw,400px,42svh)}
.mark .tilt{width:72%;aspect-ratio:150/144;margin:-35% 0 0 -36%}
.spin3d .ly{stroke-linejoin:round}

/* v12 brand colours: cyan to blue, like the logo */
.mark .glow{background:radial-gradient(circle,rgba(59,130,246,.22),rgba(34,211,238,.1) 46%,transparent 70%)}
.mark:before{background:radial-gradient(ellipse,rgba(56,189,248,.45),transparent 70%)}
.spin3d .ly{overflow:visible}

/* offices */
.offices{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:34px}
.of{display:flex;gap:14px;align-items:flex-start;padding:18px 20px;border:1px solid var(--line);border-radius:18px;background:rgba(255,255,255,.02);transition:border-color .3s,background .3s}
.of:hover{border-color:rgba(56,189,248,.5);background:rgba(56,189,248,.05)}
.of svg{flex:none;width:22px;height:22px;margin-top:2px;color:#38BDF8}
.of small{display:block;font:500 11px var(--mono);letter-spacing:.18em;text-transform:uppercase;color:var(--mut);margin-bottom:6px}
.of p{color:var(--fg);font-size:15px;line-height:1.5}
@media(max-width:620px){.offices{grid-template-columns:1fr}}
/* client logos: every logo is shown as a white silhouette so they sit together */
.lt{align-items:center;gap:64px}
.lt img.cl{height:34px;width:auto;max-width:170px;object-fit:contain;filter:brightness(0) invert(1);opacity:.55;transition:opacity .3s,transform .3s}
.lt img.cl:hover{opacity:1;transform:scale(1.06)}

/* reviews */
.quotes{grid-template-columns:repeat(3,1fr);gap:18px;margin-top:56px;align-items:start}
.quotes figure{border:1px solid var(--line);border-radius:20px;padding:24px;background:rgba(255,255,255,.02);transition:border-color .3s,transform .3s}
.quotes figure:hover{border-color:rgba(56,189,248,.5);transform:translateY(-4px)}
.quotes figure[hidden]{display:none}
.stars{display:flex;gap:3px;margin-bottom:14px}
.stars svg{width:16px;height:16px;fill:#38BDF8}
.quotes blockquote{font:400 16px/1.6 var(--body);letter-spacing:0;margin-bottom:16px;color:#eaeaf0}
.quotes figcaption{font-size:13px;color:var(--mut);line-height:1.4}
.qfoot{display:flex;gap:12px;flex-wrap:wrap;justify-content:center;margin-top:32px}
@media(max-width:960px){.quotes{grid-template-columns:repeat(2,1fr)}}
@media(max-width:620px){.quotes{grid-template-columns:1fr}}

/* reviews carousel */
.car{position:relative;margin-top:56px}
.ctrack{display:flex;gap:18px;overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none;padding:6px 2px 10px;cursor:grab;-webkit-mask:linear-gradient(90deg,transparent,#000 3%,#000 97%,transparent);mask:linear-gradient(90deg,transparent,#000 3%,#000 97%,transparent)}
.ctrack::-webkit-scrollbar{display:none}
.ctrack.drag{cursor:grabbing;scroll-snap-type:none;user-select:none}
.ctrack figure{flex:0 0 calc((100% - 36px) / 3);scroll-snap-align:start;border:1px solid var(--line);border-radius:20px;padding:26px;background:rgba(255,255,255,.02);display:flex;flex-direction:column;transition:border-color .3s,background .3s}
.ctrack figure:hover{border-color:rgba(56,189,248,.5);background:rgba(56,189,248,.04)}
.ctrack blockquote{flex:1}
.ctrack figcaption{margin-top:auto}
.cnav{display:flex;align-items:center;justify-content:center;gap:18px;margin-top:22px}
.cb{width:46px;height:46px;border-radius:50%;border:1px solid var(--line);display:grid;place-items:center;color:#fff;transition:all .25s}
.cb svg{width:18px}
.cb:hover{background:#fff;color:#000;border-color:#fff}
.cdots{display:flex;gap:8px}
.cdots i{width:8px;height:8px;border-radius:50%;background:rgba(255,255,255,.2);cursor:pointer;transition:all .3s}
.cdots i.on{width:26px;border-radius:99px;background:linear-gradient(90deg,#22D3EE,#3B82F6)}
@media(max-width:960px){.ctrack figure{flex-basis:calc((100% - 18px) / 2)}}
@media(max-width:620px){.ctrack figure{flex-basis:88%}}
/* quieter wordmark in the nav */
.brand b{font:300 14px var(--head);letter-spacing:.34em;color:rgba(255,255,255,.72);text-transform:uppercase;transition:color .3s}
.brand:hover b{color:#fff}
.brand img{width:24px;height:28px}
/* v13 vertical 9:16 sample cards */
.wgrid{grid-template-columns:repeat(5,1fr);gap:14px}
.wk,.wk.feat,.wk.audio,.wk.soon{aspect-ratio:9/16;grid-column:auto}
.wk.audio .wkb{position:absolute;inset:0;aspect-ratio:auto;height:100%}
.wk .th iframe{width:316%;height:100%;left:50%;top:0;transform:translateX(-50%)}
.wk h3,.wk.feat h3{font-size:15px;line-height:1.25}
.wk .wkc{padding:14px}
.wk .pl{width:52px;height:52px;margin:-26px 0 0 -26px}
.wk.audio .wf{gap:2px}
.wk.audio .wfw{top:22%;height:26%;left:9%;right:9%}
.wk.audio .pl{top:auto;bottom:16px;right:14px;left:auto;margin:0;width:44px;height:44px;opacity:1;transform:none}
.wk.audio .wkc{padding-right:14px;padding-bottom:70px}
.wk.soon .sn{font-size:56px}.wk.soon b{font-size:20px}
@media(max-width:1180px){.wgrid{grid-template-columns:repeat(4,1fr)}}
@media(max-width:900px){.wgrid{grid-template-columns:repeat(3,1fr)}}
@media(max-width:620px){.wgrid{grid-template-columns:repeat(2,1fr)}}

/* wide videos sit as a sharp frame over a blurred copy of themselves */
.wk.land .th{background:var(--bg) center/cover}
.wk.land .th:before{content:"";position:absolute;inset:-10%;background:var(--bg) center/cover;filter:blur(22px) brightness(.5) saturate(1.2)}
.wk.land .th img{position:absolute;left:0;top:50%;width:100%;height:auto;aspect-ratio:16/9;transform:translateY(-62%);object-fit:cover;border-radius:6px;box-shadow:0 20px 50px rgba(0,0,0,.5);inset:auto}
.wk.land:hover .th img{transform:translateY(-62%) scale(1.05)}
.wk.land .th iframe{width:100%;height:auto;aspect-ratio:16/9;left:0;top:50%;transform:translateY(-62%)}
.wk.land .th img{inset:auto;top:50%;left:0;right:auto;bottom:auto}
.wk.land .th iframe{top:50%;left:0}
/* v14 back to 16:9 so nothing is cropped */
.wgrid{grid-template-columns:repeat(3,1fr);gap:16px}
.wk,.wk.feat,.wk.audio,.wk.soon{aspect-ratio:16/9;grid-column:auto}
.wk .th img{object-fit:cover}
.wk .th iframe{width:100%;height:100%;left:0;top:0;transform:none}
.wk h3,.wk.feat h3{font-size:16px}
.wk .wkc{padding:14px 16px}
.wk .pl{width:56px;height:56px;margin:-28px 0 0 -28px}
.wk.audio .wkb{position:absolute;inset:0;height:100%;aspect-ratio:auto}
.wk.audio .wfw{top:16%;height:36%;left:7%;right:7%}
.wk.audio .wf{gap:3px}
.wk.audio .pl{top:auto;bottom:14px;right:14px;left:auto;margin:0;width:44px;height:44px}
.wk.audio .wkc{padding-bottom:14px;padding-right:70px}
.wk.soon .sn{font-size:60px}.wk.soon b{font-size:22px}
@media(max-width:900px){.wgrid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:560px){.wgrid{grid-template-columns:1fr}}
@media(max-width:900px){
 .sh{text-align:center;margin-left:auto;margin-right:auto}.sh .sub{margin-left:auto;margin-right:auto}
 .contact .cgrid>div:first-child,.ftx{text-align:center}.contact .offices{text-align:left}
 .ftx .role{margin-left:auto;margin-right:auto}.ftx .btns{justify-content:center}.ftx .bio{margin-left:auto;margin-right:auto}
}
@media(max-width:820px){.hero{padding-top:78px;padding-bottom:100px}.mark{margin-bottom:0}.hero .eyebrow{margin-top:8px}}
@media(max-width:820px){.hero{padding-top:92px}.hero .eyebrow{margin-top:16px}}
@media(max-width:760px){section{padding:44px 0}.sh{margin-bottom:26px}.pgrid{gap:22px}.nums{row-gap:26px}.steps{gap:20px}.logos{margin-top:34px}.car{margin-top:30px}.fgrid{gap:26px}.cgrid{gap:30px}.eyebrow{margin-bottom:12px}.tfoot{padding-top:36px}}

/* phones: every section has the same space above and below */
@media(max-width:760px){section,section.big,section.statsec,section.final{padding-top:40px!important;padding-bottom:40px!important}section>.wrap>*:first-child,section>.wrap>header:first-child>*:first-child{margin-top:0!important}section>.wrap>*:last-child{margin-bottom:0!important}}

/* v13 hero: real 3D logo (WebGL); the CSS layers stay only as a fallback */
.mark .gl7{position:absolute;left:-12%;top:-12%;width:124%;height:124%;display:none;pointer-events:none}
.mark.gl{width:min(84vw,540px,54svh)}
.mark.gl .gl7{display:block}
.mark.gl .tilt,.mark.gl .pt,.mark.gl .ring{display:none}
.mark.gl .glow{inset:-4%;background:radial-gradient(circle,rgba(59,130,246,.34),rgba(34,211,238,.12) 48%,transparent 70%)}
.mark.gl:before{bottom:-2%;width:62%;margin-left:-31%;height:9%;background:radial-gradient(ellipse,rgba(56,189,248,.5),transparent 70%)}

/* hero logo: smaller */
.mark.gl{width:min(66vw,400px,42svh)}

/* pillars: on desktop the list drives the side panel; on phones each pillar opens under its own title */
.pacc{display:none}
@media(max-width:900px){
 .pv{display:none}
 .pgrid{display:block}
 .plist li{border-top:1px solid var(--line)}
 .plist li.open{background:linear-gradient(180deg,rgba(255,255,255,.04),transparent)}
 .pi{padding:18px 4px;gap:14px}
 .pi .t{font-size:clamp(21px,5.6vw,28px);color:rgba(255,255,255,.55)}
 .pi svg{width:20px;height:20px;opacity:.6;transform:rotate(90deg);transition:transform .35s,opacity .3s}
 .pi.on svg{transform:rotate(-90deg);opacity:1}
 .pi.on .t,.pi:hover .t{transform:none}
 .pacc{display:grid;gap:14px;max-height:0;overflow:hidden;opacity:0;padding:0 4px 0 46px;transition:max-height .5s cubic-bezier(.2,.8,.2,1),opacity .4s,padding .4s}
 .plist li.open .pacc{max-height:420px;opacity:1;padding:2px 4px 22px 46px}
 .pacc .pi2{display:flex;gap:16px;align-items:flex-start}
 .pacc .ico{flex:none;position:static;width:44px;height:44px;color:var(--c);filter:none;animation:none}
 .pacc p{color:var(--mut);font-size:15.5px;line-height:1.55;margin:0}
 .pacc .lnk{display:inline-flex;align-items:center;gap:8px;color:var(--c);font-weight:600;font-size:14.5px;margin-left:60px}
 .pacc .lnk svg{width:16px;transform:none;opacity:1}
 .pacc .soonb{justify-self:start;margin-bottom:0;font:500 10px var(--mono);letter-spacing:.16em;text-transform:uppercase;padding:5px 10px;border-radius:99px;background:color-mix(in srgb,var(--c) 16%,transparent);color:var(--c);border:1px solid color-mix(in srgb,var(--c) 45%,transparent)}
}
/* work samples on phones: filters in one swipeable row, videos as a swipeable strip */
@media(max-width:760px){
 .wfilter{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;margin:0 -20px 16px;padding:2px 20px 6px;-webkit-mask:linear-gradient(90deg,transparent,#000 5%,#000 92%,transparent);mask:linear-gradient(90deg,transparent,#000 5%,#000 92%,transparent)}
 .wfilter::-webkit-scrollbar{display:none}
 .wfilter .fc{flex:none;white-space:nowrap}
 .wgrid{display:flex;grid-template-columns:none;overflow-x:auto;scroll-snap-type:x mandatory;gap:12px;margin:0 -20px;padding:4px 20px 14px;scrollbar-width:none}
 .wgrid::-webkit-scrollbar{display:none}
 .wgrid .wk{flex:0 0 84%;scroll-snap-align:center}
 .wgrid .wk:hover{transform:none}
 .wnote{margin-top:6px;text-align:center}
}
@media(max-width:760px){.work .wfilter{flex-wrap:nowrap;overflow-x:auto;margin:0 -20px 16px;padding:2px 20px 6px}.work .wfilter .fc{flex:none;white-space:nowrap}}
@media(max-width:760px) and (pointer:fine){.work .wfilter,.wgrid{scroll-snap-type:none;scroll-behavior:auto}.wgrid{cursor:e-resize}}
/* websites on phones: tabs in one swipeable row, everything centred */
@media(max-width:760px){
 .wtabs{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;margin:0 -20px 16px;padding:2px 20px 6px;-webkit-mask:linear-gradient(90deg,transparent,#000 5%,#000 92%,transparent);mask:linear-gradient(90deg,transparent,#000 5%,#000 92%,transparent)}
 .wtabs::-webkit-scrollbar{display:none}
 .wtabs .wt{flex:none;white-space:nowrap}
 .winfo{flex-direction:column;align-items:center;text-align:center;gap:16px;padding:22px 20px 26px}
 .winfo h3{font-size:24px}
 .fbar span{margin-left:8px}
}
@media(max-width:760px) and (pointer:fine){.wtabs{scroll-snap-type:none}}
/* hero logo on phones: smaller */
@media(max-width:760px){.mark.gl{width:min(50vw,230px,30svh)}.mark.gl .gl7{left:-14%;top:-14%;width:128%;height:128%}}
/* pillar accordion: everything lines up with the title's left edge */
@media(max-width:900px){
 .pi .no{width:30px;flex:none}
 .pacc{padding:0 4px 0 48px!important}
 .plist li.open .pacc{padding:0 4px 24px 48px!important}
 .pacc .pi2{display:grid;gap:12px;justify-items:start}
 .pacc .ico{width:36px;height:36px}
 .pacc p{max-width:42ch}
 .pacc .lnk{margin-left:0}
 .pacc .soonb{justify-self:start}
}
/* contact form and footer on phones: tidy and centred */
@media(max-width:760px){
 .chips{display:grid;grid-template-columns:1fr 1fr;gap:8px}
 .chips legend{grid-column:1/-1;text-align:center;margin-bottom:6px}
 .ch{padding:11px 12px;font-size:13px;line-height:1.25;text-align:left;border-radius:14px;display:flex;align-items:center;gap:8px;min-height:46px}
 .ch:before{margin-right:0;flex:none}
 .cf{gap:22px}
 .cf label{text-align:left}
 .cf .pill{justify-self:stretch;justify-content:center;width:100%}
 .msg{text-align:center}
 .contact .mail,.contact .alt{text-align:center}
 .contact .cgrid>div:first-child .sub{margin-left:auto;margin-right:auto}
 .offices{grid-template-columns:1fr}
 .of{text-align:left}
 .tfoot .frow{flex-direction:column;align-items:center;text-align:center;gap:20px}
 .tfoot .fb{flex-direction:column;gap:8px}
 .tfoot .fl{justify-content:center;gap:10px 18px}
 .tfoot .copy{text-align:center;margin-top:8px}
 .tfoot .word{margin-top:30px}
}
/* phones: centred steps and numbers */
@media(max-width:760px){
 .steps li{text-align:center}
 .nums div{border-left:0;padding-left:0;border-top:1px solid var(--line);padding-top:18px;text-align:center}
 .nums strong{margin-left:auto;margin-right:auto}
 .beam .cap.l{left:50%;transform:translateX(-120%)}.beam .cap.r{right:50%;transform:translateX(120%)}
 .quotes figure,.car figure{text-align:left}
}

/* v15 a different colour for every section: the page tints itself as you scroll */
@property --sc{syntax:"<color>";inherits:true;initial-value:#22D3EE}
html{--sc:#22D3EE;transition:--sc 1.2s ease}
.wash{position:fixed;inset:0;z-index:-1;pointer-events:none;background:radial-gradient(60% 50% at 18% 8%,color-mix(in srgb,var(--sc) 22%,transparent),transparent 70%),radial-gradient(52% 46% at 88% 92%,color-mix(in srgb,var(--sc) 16%,transparent),transparent 72%)}
.wash:after{content:"";position:absolute;left:50%;top:50%;width:90vmax;height:90vmax;margin:-45vmax;border-radius:50%;background:conic-gradient(from 0deg,transparent,color-mix(in srgb,var(--sc) 10%,transparent),transparent 40%,color-mix(in srgb,var(--sc) 7%,transparent),transparent 75%);animation:spin 60s linear infinite}
.eyebrow{color:var(--sc)}
.sh h2,.contact h2{position:relative}
.sh:after{content:"";display:block;width:0;height:3px;border-radius:3px;margin-top:26px;background:linear-gradient(90deg,var(--sc),transparent);transition:width 1.1s cubic-bezier(.2,.8,.2,1) .25s}
.sh.in:after,.sh:not([data-r]):after{width:90px}
.js .sh[data-r]:not(.in):after{width:0}
section+section:before{background:linear-gradient(90deg,transparent,var(--sc),transparent)!important;opacity:.5!important}
.prog i{background:linear-gradient(90deg,var(--sc),#fff)}
.tnav nav a:after{background:var(--sc)}
.tnav nav a.on:after,.tnav nav a:hover:after{transform:scaleX(1)}
.pill:hover{box-shadow:0 12px 40px -10px var(--sc)}
.nums strong{background:linear-gradient(120deg,#fff 20%,var(--sc))!important;-webkit-background-clip:text!important;background-clip:text!important;color:transparent!important}
.steps li{transition:border-color .6s}.steps li:hover{border-color:var(--sc)}
.cb:hover,.cdots i.on{background:var(--sc);border-color:var(--sc);color:#000}
.cdots i.on{background:linear-gradient(90deg,var(--sc),#fff)}
.of:hover,.quotes figure:hover,.ctrack figure:hover{border-color:var(--sc)}
.stars svg{fill:var(--sc)}
.fcard,.fph{border-color:color-mix(in srgb,var(--sc) 30%,transparent)}
.tfoot .word{filter:hue-rotate(0deg)}
/* a ripple of the new colour spreads from the middle of the screen when the section changes */
.ripple{position:fixed;left:50%;top:50%;width:30vmax;height:30vmax;margin:-15vmax;border-radius:50%;pointer-events:none;z-index:40;border:2px solid var(--sc);box-shadow:0 0 80px 10px color-mix(in srgb,var(--sc) 40%,transparent),inset 0 0 80px color-mix(in srgb,var(--sc) 30%,transparent);opacity:0;animation:ripple 1.3s cubic-bezier(.2,.7,.2,1) forwards}
@keyframes ripple{0%{opacity:.7;transform:scale(.2)}100%{opacity:0;transform:scale(3.4)}}
/* a big ghost number of the section drifts behind its heading */
.ghostno{position:absolute;right:2%;top:4%;font:700 clamp(140px,22vw,320px)/1 var(--head);letter-spacing:-.06em;color:transparent;-webkit-text-stroke:1.5px color-mix(in srgb,var(--sc) 28%,transparent);pointer-events:none;user-select:none;will-change:transform;z-index:0}
section>.wrap{position:relative;z-index:1}
@media(max-width:760px){.ghostno{font-size:34vw;right:-2%;top:1%}}
@media(prefers-reduced-motion:reduce){.ripple,.wash:after{animation:none}.ripple{display:none}}

/* no numbers: soft ribbons of the section colour glide behind each section as you scroll */
.ghostno{display:none}
.ribbons{position:absolute;inset:0;overflow:hidden;pointer-events:none;z-index:0}
.ribbons i{position:absolute;left:-10%;width:80%;height:46%;border-radius:50%;background:radial-gradient(ellipse at center,color-mix(in srgb,var(--sc) 30%,transparent),transparent 70%);filter:blur(46px);will-change:transform;opacity:.7}
.ribbons i:nth-child(1){top:6%;transform:translateX(calc(var(--k,0) * 220px)) rotate(-10deg)}
.ribbons i:nth-child(2){bottom:2%;left:auto;right:-14%;width:64%;transform:translateX(calc(var(--k,0) * -180px)) rotate(8deg);opacity:.5}
.ribbons b{position:absolute;left:0;right:0;top:50%;height:1px;background:linear-gradient(90deg,transparent,var(--sc),transparent);opacity:.18;transform:translateY(calc(var(--k,0) * 160px)) scaleX(calc(.5 + (1 - var(--k,0)) * .3));transform-origin:50% 50%}
/* no circles: a diagonal sweep of light marks each colour change, and the background has soft beams instead of a round glow */
.wash:after{width:auto;height:auto;margin:0;inset:-20% -20%;border-radius:0;animation:beams 22s ease-in-out infinite alternate;background:repeating-linear-gradient(115deg,transparent 0 160px,color-mix(in srgb,var(--sc) 7%,transparent) 200px,transparent 260px)}
@keyframes beams{from{transform:translateX(-4%)}to{transform:translateX(4%)}}
.ripple{left:0;top:0;width:100vw;height:100vh;margin:0;border:0;border-radius:0;box-shadow:none;background:linear-gradient(105deg,transparent 32%,color-mix(in srgb,var(--sc) 34%,transparent) 48%,color-mix(in srgb,#fff 18%,transparent) 50%,color-mix(in srgb,var(--sc) 34%,transparent) 52%,transparent 68%);opacity:0;animation:sweep 1.1s cubic-bezier(.4,.1,.2,1) forwards}
@keyframes sweep{0%{opacity:.9;transform:translateX(-100%)}100%{opacity:0;transform:translateX(100%)}}

/* background: flowing lines (canvas) instead of beams and ribbons */
canvas.bgfx{position:fixed;inset:0;width:100%;height:100%;z-index:-1;pointer-events:none}
.wash:after{display:none}
.ribbons i{display:none}

/* hero logo: no round glow, rings or dots behind it, and a smaller logo */
.mark .glow,.mark .ring,.mark .pt,.mark:before{display:none!important}
.mark.gl{width:min(44vw,300px,34svh)}
@media(max-width:760px){.mark.gl{width:min(40vw,180px,24svh)}}

/* hero: the seven pillars stand behind the logo like columns of light */
.spectrum{display:none!important}
.hero .skyline{position:absolute;left:50%;bottom:0;width:min(1180px,96vw);height:84%;transform:translateX(-50%);display:flex;align-items:flex-end;gap:clamp(6px,1.4vw,18px);z-index:1;pointer-events:none;padding:0 clamp(4px,1vw,12px)}
.skyline a{position:relative;flex:1;height:var(--h);display:flex;flex-direction:column;justify-content:flex-end;align-items:center;pointer-events:auto;color:inherit;text-decoration:none}
.skyline .bar{position:absolute;inset:0 0 34px 0;border-radius:6px 6px 0 0;background:linear-gradient(180deg,color-mix(in srgb,var(--c) 34%,transparent),color-mix(in srgb,var(--c) 9%,transparent) 55%,transparent);border-top:2px solid var(--c);box-shadow:0 -14px 40px -10px color-mix(in srgb,var(--c) 70%,transparent);transform-origin:50% 100%;animation:pillarUp 1.3s cubic-bezier(.2,.8,.2,1) var(--d) both;overflow:hidden;transition:filter .3s,box-shadow .3s}
.skyline .bar:after{content:"";position:absolute;left:0;right:0;top:-40%;height:40%;background:linear-gradient(180deg,transparent,color-mix(in srgb,var(--c) 55%,#fff 10%),transparent);opacity:.55;animation:pillarSweep 5s ease-in-out calc(var(--d) + 1.4s) infinite}
.skyline a:hover .bar{filter:brightness(1.5);box-shadow:0 -20px 60px -8px var(--c)}
.skyline .lb{position:relative;z-index:1;display:flex;flex-direction:column;align-items:center;gap:2px;height:34px;justify-content:flex-start;padding-top:8px;opacity:0;animation:pillarLb .8s ease calc(var(--d) + .9s) both}
.skyline .lb b{font:600 11px/1 var(--mono,ui-monospace,monospace);letter-spacing:.14em;color:var(--c)}
.skyline .lb em{font:600 10.5px/1.1 var(--head,inherit);font-style:normal;letter-spacing:.06em;text-transform:uppercase;color:rgba(255,255,255,.72);text-align:center;max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
@keyframes pillarUp{from{transform:scaleY(0);opacity:0}to{transform:scaleY(1);opacity:1}}
@keyframes pillarSweep{0%{top:-40%}60%,100%{top:110%}}
@keyframes pillarLb{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
@media(max-width:760px){.hero .skyline{height:62%;gap:5px;width:100vw}.skyline .lb em{display:none}.skyline .lb{height:26px}.skyline .bar{inset:0 0 26px 0}}
@media(prefers-reduced-motion:reduce){.skyline .bar,.skyline .bar:after,.skyline .lb{animation:none;opacity:1}}
.hero .skyline{bottom:64px;height:80%}
@media(max-width:760px){.hero .skyline{bottom:48px;height:58%}}

/* hero: the seven pillars as a slim strip under the logo (replaces the columns) */
.hero .skyline{display:none!important}
.sectors{position:absolute;left:50%;bottom:26px;transform:translateX(-50%);z-index:3;width:min(1200px,94vw);display:flex;justify-content:center;gap:8px;flex-wrap:wrap}
.sectors a{position:relative;display:flex;align-items:center;gap:9px;padding:9px 15px;border-radius:999px;border:1px solid rgba(255,255,255,.12);background:rgba(10,14,22,.55);backdrop-filter:blur(10px);color:rgba(255,255,255,.7);text-decoration:none;font:600 12.5px/1 var(--head,inherit);letter-spacing:.04em;white-space:nowrap;overflow:hidden;transition:color .35s,border-color .35s,background .35s,box-shadow .35s,transform .35s}
.sectors a b{font:600 11px/1 var(--mono,ui-monospace,monospace);letter-spacing:.12em;color:var(--c)}
.sectors a:after{content:"";position:absolute;left:14px;right:14px;bottom:0;height:2px;border-radius:2px;background:var(--c);transform:scaleX(0);transform-origin:left;transition:transform .5s}
.sectors a.on,.sectors a:hover,.sectors a:focus-visible{color:#fff;border-color:color-mix(in srgb,var(--c) 70%,transparent);background:color-mix(in srgb,var(--c) 16%,rgba(10,14,22,.7));box-shadow:0 10px 34px -12px var(--c);transform:translateY(-3px)}
.sectors a.on:after,.sectors a:hover:after{transform:scaleX(1)}
@media(max-width:760px){.sectors{bottom:14px;width:100vw;left:0;transform:none;justify-content:flex-start;flex-wrap:nowrap;overflow-x:auto;scroll-snap-type:x proximity;padding:6px 16px 10px;scrollbar-width:none;-webkit-mask-image:linear-gradient(90deg,transparent,#000 6%,#000 94%,transparent);mask-image:linear-gradient(90deg,transparent,#000 6%,#000 94%,transparent)}.sectors::-webkit-scrollbar{display:none}.sectors a{flex:none;scroll-snap-align:center;padding:9px 13px}}
.sectors{animation:secIn 1s ease .5s both}
@keyframes secIn{from{opacity:0;translate:0 14px}to{opacity:1;translate:0 0}}

/* the pillars live on the logo itself when WebGL is on; the strip stays as the fallback */
body:has(.mark.gl) .sectors{display:none}
.mark.gl{width:min(32vw,240px,28svh)}
@media(max-width:760px){.mark.gl{width:min(36vw,150px,20svh)}}
.mark .nl{position:absolute;z-index:4;display:flex;align-items:center;gap:7px;padding:6px 11px;border-radius:999px;border:1px solid color-mix(in srgb,var(--c) 60%,transparent);background:color-mix(in srgb,var(--c) 14%,rgba(8,12,20,.82));backdrop-filter:blur(8px);white-space:nowrap;pointer-events:none;opacity:0;transform:translate(14px,-50%) scale(.9);transition:opacity .5s,transform .5s;box-shadow:0 10px 30px -10px var(--c)}
.mark .nl.top{transform:translate(-50%,-190%) scale(.9)}
.mark .nl.on{opacity:1;transform:translate(14px,-50%) scale(1)}
.mark .nl.top.on{transform:translate(-50%,-170%) scale(1)}
.mark .nl b{font:600 11px/1 var(--mono,ui-monospace,monospace);letter-spacing:.12em;color:var(--c)}
.mark .nl span{font:600 12.5px/1 var(--head,inherit);letter-spacing:.04em;color:#fff}
@media(max-width:760px){.mark .nl{padding:5px 9px}.mark .nl span{font-size:11px}}

.mark .nl{display:none!important}

.mark.gl .gl7{left:-90%!important;top:-150%!important;width:280%!important;height:300%!important}

/* hero: the seven pillars as a calm row of icon tiles under the buttons */
.mark.gl .gl7{left:-12%!important;top:-12%!important;width:124%!important;height:124%!important}
body:has(.mark.gl) .sectors{display:grid}
.hwrap{padding-bottom:6px}
.sectors{position:static!important;transform:none!important;left:auto;bottom:auto;animation:none;width:min(1100px,100%);margin:34px auto 0;display:grid;grid-template-columns:repeat(7,1fr);gap:10px;flex-wrap:initial}
.sectors a{flex-direction:column;justify-content:flex-start;align-items:center;gap:9px;padding:14px 8px 12px;border-radius:14px;text-align:center;font:600 11.5px/1.25 var(--head,inherit);letter-spacing:.03em;color:rgba(255,255,255,.72);white-space:normal;background:rgba(255,255,255,.03);border:1px solid rgba(255,255,255,.09);backdrop-filter:none;transition:transform .35s,border-color .35s,background .35s,color .35s}
.sectors a:after{left:0;right:0;top:0;bottom:auto;height:2px;transform:scaleX(1);transform-origin:50% 0;border-radius:14px 14px 0 0;background:linear-gradient(90deg,transparent,var(--c),transparent);opacity:.55}
.sectors a svg{width:22px;height:22px;color:var(--c);flex:none}
.sectors a span{display:block}
.sectors a:hover,.sectors a:focus-visible{transform:translateY(-4px);color:#fff;border-color:color-mix(in srgb,var(--c) 55%,transparent);background:color-mix(in srgb,var(--c) 10%,rgba(255,255,255,.03));box-shadow:none}
.sectors a:hover:after{opacity:1}
@media(max-width:900px){.sectors{grid-template-columns:repeat(4,1fr)}}
@media(max-width:760px){.sectors{width:100%;margin-top:22px;overflow:visible;-webkit-mask-image:none;mask-image:none;grid-template-columns:repeat(4,1fr);gap:8px;padding:0}.sectors a{padding:11px 4px 9px;font-size:10.5px;gap:7px}.sectors a svg{width:19px;height:19px}}
@media(max-width:900px){.sectors{display:flex!important;flex-wrap:wrap;justify-content:center}.sectors a{flex:0 0 calc(25% - 8px)}}
@media(min-width:901px){.sectors{display:grid!important}}

/* desktop: the seven pillars stand on both sides of the logo, joined to it by a thin line */
.sectors{order:10}
@media(min-width:901px){
 .hwrap{position:relative}
 .sectors{order:0;position:absolute!important;top:0;left:50%;transform:translateX(-50%)!important;width:min(1040px,96vw);height:min(32vw,240px,28svh);margin:0!important;display:grid!important;grid-template-columns:1fr minmax(260px,330px) 1fr;grid-template-rows:repeat(4,1fr);pointer-events:none;z-index:3}
 .sectors a{pointer-events:auto;flex-direction:row;align-items:center;gap:10px;padding:7px 12px;width:max-content;max-width:100%;text-align:left;border-radius:12px;background:rgba(255,255,255,.03);border:1px solid rgba(255,255,255,.08);font-size:12.5px;align-self:center}
 .sectors a:after{display:none}
 .sectors a:before{content:"";position:absolute;top:50%;width:36px;height:1px;opacity:.45}
 .sectors a:nth-child(-n+3){grid-column:1;justify-self:end;flex-direction:row-reverse;text-align:right}
 .sectors a:nth-child(-n+3):before{right:-37px;background:linear-gradient(90deg,var(--c),transparent)}
 .sectors a:nth-child(n+4){grid-column:3;justify-self:start}
 .sectors a:nth-child(n+4):before{left:-37px;background:linear-gradient(270deg,var(--c),transparent)}
 .sectors a:nth-child(1){grid-row:1}.sectors a:nth-child(2){grid-row:2/span 2}.sectors a:nth-child(3){grid-row:4}
 .sectors a:nth-child(4){grid-row:1}.sectors a:nth-child(5){grid-row:2}.sectors a:nth-child(6){grid-row:3}.sectors a:nth-child(7){grid-row:4}
 .sectors a svg{width:18px;height:18px}
 .sectors a:hover:before{opacity:1}
 .sectors a span{white-space:nowrap}
}

/* the seven pillars on a thin ring around the logo (icons stay upright; the ring turns very slowly) */
.mark .orbit{position:absolute;left:50%;top:50%;width:150cqw;height:150cqw;margin:-75cqw 0 0 -75cqw;border-radius:50%;border:1px solid rgba(255,255,255,.1);z-index:3;animation:orbSpin 140s linear infinite;pointer-events:none}
.mark .orbit a{position:absolute;left:50%;top:50%;width:42px;height:42px;margin:-21px;border-radius:50%;pointer-events:auto;transform:rotate(var(--a)) translateY(-75cqw) rotate(calc(-1 * var(--a)));color:var(--c);text-decoration:none}
.mark .orbit .in{position:absolute;inset:0;display:grid;place-items:center;border-radius:50%;background:rgba(10,14,22,.82);border:1px solid color-mix(in srgb,var(--c) 55%,transparent);box-shadow:0 8px 24px -10px var(--c);animation:orbSpin 140s linear infinite reverse;transition:transform .3s,background .3s}
.mark .orbit svg{width:20px;height:20px}
.mark .orbit em{position:absolute;top:calc(100% + 8px);left:50%;transform:translateX(-50%);padding:4px 9px;border-radius:999px;background:rgba(10,14,22,.9);border:1px solid color-mix(in srgb,var(--c) 45%,transparent);font:600 11.5px/1 var(--head,inherit);font-style:normal;letter-spacing:.04em;color:#fff;white-space:nowrap;opacity:0;pointer-events:none;transition:opacity .25s}
.mark .orbit a:hover .in,.mark .orbit a:focus-visible .in{transform:scale(1.14);background:color-mix(in srgb,var(--c) 22%,rgba(10,14,22,.9))}
.mark .orbit a:hover em,.mark .orbit a:focus-visible em{opacity:1}
.mark .orbit:hover,.mark .orbit:hover .in{animation-play-state:paused}
@keyframes orbSpin{to{transform:rotate(360deg)}}
.mark.gl{margin-bottom:64px}.hero{padding-top:150px}
@media(max-width:760px){.mark .orbit a{width:34px;height:34px;margin:-17px}.mark .orbit svg{width:16px;height:16px}.mark.gl{margin-bottom:52px}.hero{padding-top:120px}}
@media(prefers-reduced-motion:reduce){.mark .orbit,.mark .orbit .in{animation:none}}

/* with WebGL the ring is drawn inside the 3D scene; the HTML ring stays as the fallback */
.mark.gl .orbit{display:none}
.mark.gl .gl7{left:-50%!important;top:-50%!important;width:200%!important;height:200%!important}
.mark.gl{margin-bottom:70px}
@media(max-width:760px){.mark.gl{margin-bottom:56px}}

/* final: clean logo only */
.mark.gl .gl7{left:-12%!important;top:-12%!important;width:124%!important;height:124%!important}
.mark.gl{margin-bottom:6px}.hero{padding-top:140px}
@media(max-width:760px){.mark.gl{margin-bottom:6px}.hero{padding-top:100px}}

/* the 3D canvas spans the whole page width, so the lanes of light can start at its left and right edge */
.mark.gl .gl7{left:calc(50% - 50vw)!important;width:100vw!important}

.mark.gl .gl7{top:-40%!important;height:180%!important}
/* final: just the logo, in its original canvas */
.mark.gl .gl7{left:-12%!important;top:-12%!important;width:124%!important;height:124%!important}

/* no size jump on load: the logo area has its final size from the first paint, and the CSS stand-in logo stays hidden unless 3D is not available */
.mark{width:min(32vw,240px,28svh)}
@media(max-width:760px){.mark{width:min(36vw,150px,20svh)}}
.mark:not(.gl):not(.nogl) .tilt{opacity:0}
.mark.nogl .tilt{opacity:1}
