footer .assoc{text-transform:none;letter-spacing:.02em;font-size:12px;line-height:1.6;margin:0 0 10px;max-width:900px}
footer .assoc a{color:var(--fg);text-decoration:underline}
p.assoc a,.body a,.sub a{color:var(--acc)}
.mt{margin-top:28px}
footer .links.site{margin-bottom:14px}
.skip{position:absolute;left:-9999px;top:0;z-index:20;background:var(--acc);color:#0b0e12;padding:10px 14px;font:13px "IBM Plex Mono",monospace}.skip:focus{left:12px;top:12px}
.mark{gap:0}.mark img{height:24px;width:auto}.mark b{font:500 17px "IBM Plex Sans Condensed",sans-serif;letter-spacing:.3em;color:var(--fg);margin-left:.6em}
.fmark{margin-bottom:28px;display:inline-flex}
/* nav */
header{z-index:10}
nav .mnu{list-style:none;display:flex;gap:30px;align-items:center}
nav .mnu>li{position:relative}
nav .top{display:inline-block;padding:6px 0}nav .top.on,nav .top:hover{color:var(--fg)}
nav .dd>.top:after{content:"";display:inline-block;width:6px;height:6px;border-right:1px solid currentColor;border-bottom:1px solid currentColor;transform:rotate(45deg);margin:0 0 3px 9px}
nav .panel{position:absolute;top:100%;left:-18px;min-width:300px;padding:14px 0;background:rgba(16,20,26,.97);border:1px solid var(--line);border-top:2px solid var(--acc);opacity:0;visibility:hidden;transform:translateY(6px);transition:opacity .18s,transform .18s,visibility 0s .18s;text-transform:none;letter-spacing:.02em;font-size:15px}
nav .dd:hover>.panel,nav .dd:focus-within>.panel{opacity:1;visibility:visible;transform:none;transition:opacity .18s,transform .18s}
nav .panel ul{list-style:none}nav .panel a{display:block;padding:8px 20px;color:var(--mute)}nav .panel a:hover,nav .panel a:focus-visible{color:var(--fg);background:rgba(143,179,217,.08)}
nav .wide{position:static}
nav .panel.jobs{left:auto;right:6vw;top:100%;width:min(1100px,88vw);max-height:72vh;overflow:auto;padding:18px 22px}
nav .jobs .jh{margin-bottom:10px}nav .jobs .all{color:var(--acc);padding:6px 0;font:13px "IBM Plex Mono",monospace;letter-spacing:.12em;text-transform:uppercase}
nav .jobs .cols{columns:4 220px;column-gap:26px}nav .jobs .team{break-inside:avoid;margin-bottom:16px}
nav .jobs .tl{font:11px "IBM Plex Mono",monospace;letter-spacing:.14em;text-transform:uppercase;color:var(--acc);padding:4px 0 6px;border-bottom:1px solid var(--line)}
nav .jobs .panel a,nav .jobs a{padding:5px 0;font-size:14px}
nav a.cta{margin-top:0}
.mnav{display:none}
@media (max-width:1180px){nav .mnu{gap:20px;font-size:12px}}
@media (max-width:900px){
 .mnav{display:block;position:relative}
 .mnav>summary{list-style:none;cursor:pointer;font:13px "IBM Plex Mono",monospace;letter-spacing:.16em;text-transform:uppercase;border:1px solid var(--line);padding:8px 14px}
 .mnav>summary::-webkit-details-marker,.mpanel summary::-webkit-details-marker{display:none}
 .mnav[open]>summary{border-color:var(--acc)}
 .mpanel{position:absolute;right:0;top:calc(100% + 10px);width:min(92vw,360px);max-height:78vh;overflow:auto;background:rgba(16,20,26,.98);border:1px solid var(--line);border-top:2px solid var(--acc);padding:8px 0}
 .mpanel>a,.mpanel summary{display:block;padding:12px 20px;font:13px "IBM Plex Mono",monospace;letter-spacing:.14em;text-transform:uppercase;color:var(--fg);cursor:pointer;list-style:none}
 .mpanel summary:after{content:"+";float:right;color:var(--acc)}.mpanel details[open]>summary:after{content:"−"}
 .mpanel ul{list-style:none;padding:0 0 8px}.mpanel ul a{display:block;padding:8px 32px;color:var(--mute);font-size:15px}
}
/* hero extras */
.heroact{display:flex;gap:14px;flex-wrap:wrap;margin-top:34px}.btn.ghost{border-color:var(--line)}
.crumb a{color:var(--mute)}.crumb a:hover{color:var(--fg)}
.hero.short .in h1{max-width:1100px}
/* sector chooser */
.chooser{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));margin-top:56px;border-top:1px solid var(--line);border-left:1px solid var(--line)}
.sector{position:relative;overflow:hidden;padding:40px 32px 34px;min-height:320px;display:flex;flex-direction:column;border-right:1px solid var(--line);border-bottom:1px solid var(--line);transition:background .3s}
.sector:before{content:"";position:absolute;inset:0;background:radial-gradient(circle at 85% 15%,rgba(143,179,217,.16),transparent 55%);opacity:0;transition:opacity .3s}
.sector:hover:before,.sector:focus-visible:before{opacity:1}.sector:hover{background:#121821}
.sector h3{font:400 clamp(30px,2.6vw,42px)/1.05 "IBM Plex Sans Condensed",sans-serif;text-transform:uppercase;margin:22px 0 14px}
.sector p{color:var(--mute);font-size:16px}.sector .more{margin-top:auto;padding-top:22px;font:12px "IBM Plex Mono",monospace;letter-spacing:.16em;text-transform:uppercase;color:var(--acc)}
.pulse{position:absolute;right:30px;top:34px;width:10px;height:10px;border-radius:50%;background:var(--acc)}
.pulse:after{content:"";position:absolute;inset:-6px;border:1px solid var(--acc);border-radius:50%;animation:ping 2.4s ease-out infinite}
@keyframes ping{0%{transform:scale(.4);opacity:.9}100%{transform:scale(2.6);opacity:0}}
/* flow */
.flow{list-style:none;display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));margin-top:56px;counter-reset:f;position:relative}
.flow li{position:relative;padding:34px 20px 0 0;counter-increment:f}
.flow li:before{content:"0" counter(f);font:13px "IBM Plex Mono",monospace;color:var(--acc);letter-spacing:.16em}
.flow li:after{content:"";position:absolute;left:0;right:0;top:0;height:2px;background:linear-gradient(90deg,var(--acc),transparent);transform-origin:left;transform:scaleX(1)}
.flow b{display:block;font:400 26px "IBM Plex Sans Condensed",sans-serif;text-transform:uppercase;margin:10px 0 6px}.flow span{color:var(--mute);font-size:16px}
/* reveal */
.rv-js .rv{opacity:0;transform:translateY(26px);transition:opacity .8s ease,transform .8s ease}
.rv-js .rv.in{opacity:1;transform:none}
.rv-js .flow li:after{transform:scaleX(0);transition:transform 1s ease}.rv-js .flow.in li:after{transform:scaleX(1)}
.rv-js .flow.in li:nth-child(2):after{transition-delay:.15s}.rv-js .flow.in li:nth-child(3):after{transition-delay:.3s}.rv-js .flow.in li:nth-child(4):after{transition-delay:.45s}.rv-js .flow.in li:nth-child(5):after{transition-delay:.6s}
.rv-js .grid.in .cell{animation:up .7s ease both}.rv-js .grid.in .cell:nth-child(2){animation-delay:.08s}.rv-js .grid.in .cell:nth-child(3){animation-delay:.16s}.rv-js .grid.in .cell:nth-child(4){animation-delay:.24s}.rv-js .grid.in .cell:nth-child(5){animation-delay:.32s}.rv-js .grid.in .cell:nth-child(6){animation-delay:.4s}
@keyframes up{from{opacity:0;transform:translateY(18px)}to{opacity:1;transform:none}}
.grid{grid-template-columns:repeat(auto-fit,minmax(260px,1fr))}.grid .cell{border-bottom:1px solid var(--line);padding-bottom:30px}
@media (prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}.rv-js .rv{opacity:1;transform:none}}
@media (max-width:600px){main section{padding:80px 6vw}.sector{min-height:0}.hero .in h1{font-size:clamp(38px,11vw,56px)}}
@media (max-width:600px){.th-hud{display:none}}
