
.wrap.filmwrap{max-width:1640px}.filmgrid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,2.5fr);gap:56px;align-items:center}section.s.filmsec{padding:56px 0}.filmtxt h2{font-size:clamp(28px,2.8vw,40px)}.filmtxt .head{margin:0!important}.filmtxt .head h2{margin-bottom:0}.film{width:100%;overflow:hidden;background:#000;aspect-ratio:16/9;border-radius:16px;border:1px solid var(--line)}@media(max-width:900px){.filmgrid{grid-template-columns:1fr;gap:32px}section.s.filmsec{padding:clamp(40px,8vw,64px) 0}}@media(max-width:640px){.film{border-radius:12px}}.film{position:relative}.fplay{position:absolute;inset:0;z-index:2;border:0;background:transparent;cursor:pointer;display:grid;place-items:center}.fplay span{width:84px;height:84px;border-radius:50%;background:rgba(197,91,209,.92);box-shadow:0 0 0 10px rgba(197,91,209,.18);display:grid;place-items:center;transition:transform .2s}.fplay span:after{content:'';margin-left:6px;border-style:solid;border-width:14px 0 14px 22px;border-color:transparent transparent transparent #fff}.fplay:hover span{transform:scale(1.07)}@media(max-width:640px){.fplay span{width:60px;height:60px}.fplay span:after{border-width:10px 0 10px 16px}}.film video{display:block;width:100%;height:100%;object-fit:cover;background:#000}
:root{--bg:#0A0B0E;--card:#14161C;--line:#262A33;--ink:#EEF2F7;--soft:#CFE0F3;--mute:#A9B3C1;--dim:#7D8796;--orchid:#C55BD1;--orchid2:#E2A6EA;--tint:#1A1220;--gut:24px}
@media(max-width:640px){:root{--gut:16px}}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
:focus-visible{outline:2px solid var(--orchid2);outline-offset:3px;border-radius:6px}
.skip{position:absolute;left:-9999px;top:10px;z-index:100;background:var(--orchid);color:#fff;padding:10px 16px;border-radius:999px;font:500 14px Inter,sans-serif;text-decoration:none}.skip:focus{left:16px}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
html.menu-open,html.menu-open body{overflow:hidden}
.team .card a{display:inline-flex;align-items:center;min-height:40px}
@media(max-width:700px){.hs i{width:30px;height:30px;font-size:13px}}
body{background:var(--bg);color:var(--ink);font-family:Inter,Arial,sans-serif;-webkit-font-smoothing:antialiased;line-height:1.5;overflow-x:hidden}
a{color:inherit}
img{display:block;max-width:100%}
.wrap{max-width:1240px;margin:0 auto;padding:0 var(--gut)}

/* header */
header.top{position:sticky;top:0;z-index:30;background:rgba(10,11,14,.88);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-bottom:1px solid var(--line)}
header.top .wrap{display:flex;align-items:center;justify-content:space-between;height:68px;gap:20px}
.brand{display:flex;align-items:center;gap:12px;text-decoration:none;flex:none;min-height:44px;padding:0 6px 0 0;-webkit-tap-highlight-color:transparent}
.brand img.m{height:16px}.brand img.w{height:15px}
.brand{gap:0}.brand svg{display:block;fill:var(--ink);overflow:visible}.brand svg.m{height:24px;width:34.8px}.brand svg.w{height:15px;width:96px;margin-left:8px}
.brand path{transform-box:fill-box;transform-origin:0 0}
/* logo: a light machined boot in the Wallace colours. A teal to violet beam scans the lockup, each bar of the glyph is traced in teal to violet and printed in violet light along its own 45 degree axis, the glyph powers on with a teal and orchid glitch, WALLACE decodes from orchid machine glyphs (site.js), an orchid glint crosses the lockup, then in the header WALLACE collapses into a line of teal to pink light that retracts into the glyph. Idle: an orchid glint every 9 s */
.brand .gh{opacity:0;pointer-events:none;mix-blend-mode:screen}.brand .gh.g1{fill:#19C6B0}.brand .gh.g2{fill:#C55BD1}
.brand .lit{display:none}.brand .lit .fl{fill:rgba(139,92,246,.3)}
.brand .wire path{fill:none;stroke-width:34;stroke-linejoin:round;stroke-dasharray:1;stroke-dashoffset:1;opacity:0}
.brand .sheen{opacity:0;pointer-events:none}
.brand .gl,.brand .glw{transform-box:view-box;transform-origin:0 0;transform:translateX(-100px) skewX(-45deg)}
.brand .dc text{font:500 480px "JetBrains Mono",ui-monospace,monospace;fill:#E2A6EA;pointer-events:none}
.brand .ln{opacity:0;pointer-events:none}
.brand.done .dc,footer.foot .brand:not(.fx) .dc{display:none}
.brand svg.w>path.lk{animation:wl-lock .45s cubic-bezier(.2,.7,.2,1) both}
header.top .brand,footer.foot a.brand{position:relative}
header.top .brand::after,footer.foot a.brand::after{content:'';position:absolute;top:9px;bottom:9px;left:-4px;width:1.5px;border-radius:2px;background:linear-gradient(180deg,rgba(25,198,176,0),#19C6B0 18%,#2E7CF6 42%,#8B5CF6 66%,#C55BD1 84%,rgba(197,91,209,0));box-shadow:0 0 8px 2px rgba(25,198,176,.7),0 0 22px 6px rgba(139,92,246,.45);opacity:0;pointer-events:none}
@keyframes wl-beam{0%{opacity:0;transform:translateX(0) skewX(-45deg)}12%{opacity:1}86%{opacity:1}100%{opacity:0;transform:translateX(142px) skewX(-45deg)}}
@keyframes wl-beam-f{0%{opacity:0;transform:translateX(0) skewX(-45deg)}10%{opacity:1}88%{opacity:1}100%{opacity:0;transform:translateX(146px) skewX(-45deg)}}
@keyframes wl-wire{0%{opacity:1;stroke-dashoffset:1}45%{opacity:1;stroke-dashoffset:0}70%{opacity:.85;stroke-dashoffset:0}100%{opacity:0;stroke-dashoffset:0}}
@keyframes wl-print{from{transform:translateX(calc(var(--d) * -1px))}to{transform:none}}
@keyframes wl-on{from{opacity:0}to{opacity:1}}
@keyframes wl-lock{0%{fill:#E2A6EA}100%{fill:var(--ink)}}
@keyframes wl-glint{from{transform:translateX(-100px) skewX(-45deg)}to{transform:translateX(2700px) skewX(-45deg)}}
@keyframes wl-glintw{from{transform:translateX(-100px) skewX(-45deg)}to{transform:translateX(5000px) skewX(-45deg)}}
@keyframes wl-idle{0%{transform:translateX(-100px) skewX(-45deg)}3.8%,100%{transform:translateX(2700px) skewX(-45deg)}}
@keyframes wl-idlew{0%{transform:translateX(-100px) skewX(-45deg)}6%,100%{transform:translateX(5000px) skewX(-45deg)}}
@keyframes wl-g1{0%{opacity:.5;transform:translate(-60px,0)}40%{transform:translate(38px,0)}75%{opacity:.3;transform:translate(-18px,0)}100%{opacity:0;transform:none}}
@keyframes wl-g2{0%{opacity:.35;transform:translate(60px,0)}40%{transform:translate(-38px,0)}75%{opacity:.2;transform:translate(18px,0)}100%{opacity:0;transform:none}}
@keyframes wl-glow{0%,8%{filter:drop-shadow(0 0 0 rgba(207,224,243,0)) drop-shadow(0 0 0 rgba(207,224,243,0))}24%{filter:drop-shadow(0 0 2px rgba(25,198,176,.9)) drop-shadow(0 0 9px rgba(139,92,246,.6))}46%,78%{filter:drop-shadow(0 0 0 rgba(207,224,243,0)) drop-shadow(0 0 0 rgba(207,224,243,0))}86%{filter:drop-shadow(0 0 3px rgba(226,166,234,.95)) drop-shadow(0 0 14px rgba(139,92,246,.6))}100%{filter:drop-shadow(0 0 0 rgba(207,224,243,0)) drop-shadow(0 0 0 rgba(207,224,243,0))}}
@keyframes wl-glow-f{0%,8%{filter:drop-shadow(0 0 0 rgba(207,224,243,0)) drop-shadow(0 0 0 rgba(207,224,243,0))}30%{filter:drop-shadow(0 0 2px rgba(25,198,176,.9)) drop-shadow(0 0 9px rgba(139,92,246,.6))}60%,100%{filter:drop-shadow(0 0 0 rgba(207,224,243,0)) drop-shadow(0 0 0 rgba(207,224,243,0))}}
@keyframes wl-fold{0%{transform:none;filter:brightness(1) drop-shadow(0 0 0 rgba(139,92,246,0));opacity:1}38%{transform:scale(1,.07);filter:brightness(1.2) drop-shadow(0 0 3px rgba(139,92,246,.95));opacity:1}92%{transform:scale(.02,.07);filter:brightness(1.2) drop-shadow(0 0 3px rgba(139,92,246,.95));opacity:1}100%{transform:scale(0,.07);filter:brightness(1.2) drop-shadow(0 0 3px rgba(139,92,246,.95));opacity:0}}
@keyframes wl-shut{to{width:0;margin-left:0}}
@keyframes wl-ln{0%,16%{opacity:0}38%,100%{opacity:1}}
header.top .brand.anim::after{animation:wl-beam .8s cubic-bezier(.65,0,.3,1) both}
header.top .brand.anim svg.m{animation:wl-glow 2.9s linear both}
header.top .brand.anim:not(.done) .lit{display:inline}
header.top .brand.anim .wire path{animation:wl-wire .95s cubic-bezier(.45,0,.2,1) both;animation-delay:calc(.06s + var(--i) * 80ms)}
header.top .brand.anim .sw{animation:wl-print .58s cubic-bezier(.3,.05,.15,1) both;animation-delay:calc(.3s + var(--i) * 90ms)}
header.top .brand.anim .base{animation:wl-on .3s ease-out 1.02s both}
header.top .brand.anim .gh.g1{animation:wl-g1 .36s steps(4,end) .9s forwards}header.top .brand.anim .gh.g2{animation:wl-g2 .36s steps(4,end) .9s forwards}
header.top .brand.anim:not(.done) svg.w>path:not(.lk){opacity:0}
header.top .brand.anim .sheen{opacity:1}
header.top .brand.anim .gl{animation:wl-glint .34s linear 1.3s both}
header.top .brand.anim .glw{animation:wl-glintw .54s linear 1.53s both}
header.top .brand.anim svg.w{transform-origin:0 50%;animation:wl-fold .5s cubic-bezier(.7,0,.3,1) 2s forwards,wl-shut .25s linear 2.5s forwards}
header.top .brand.anim .ln{animation:wl-ln .5s linear 2s both}
header.top .brand.done .gl{animation:wl-idle 9s linear 2s infinite}
footer.foot .brand.pre svg path{opacity:0}
footer.foot .brand.fx::after{animation:wl-beam-f 1.1s cubic-bezier(.65,0,.25,1) both}
footer.foot .brand.fx svg.m{animation:wl-glow-f 2.3s linear both}
footer.foot .brand.fx:not(.done) .lit{display:inline}
footer.foot .brand.fx .wire path{animation:wl-wire .95s cubic-bezier(.45,0,.2,1) both;animation-delay:calc(.1s + var(--i) * 80ms)}
footer.foot .brand.fx .sw{animation:wl-print .6s cubic-bezier(.3,.05,.15,1) both;animation-delay:calc(.34s + var(--i) * 90ms)}
footer.foot .brand.fx .base{animation:wl-on .3s ease-out 1s both}
footer.foot .brand.fx:not(.done) svg.w>path:not(.lk){opacity:0}
footer.foot .brand.fx .sheen,footer.foot .brand.done .sheen{opacity:1}
footer.foot .brand.fx .gl{animation:wl-glint .34s linear 1.42s both}
footer.foot .brand.fx .glw{animation:wl-glintw .54s linear 1.65s both}
footer.foot .brand.done .gl{animation:wl-idle 9s linear 1.2s infinite}
footer.foot .brand.done .glw{animation:wl-idlew 9s linear 1.431s infinite}
@media(prefers-reduced-motion:reduce){.brand *,.brand::after,.brand svg{animation:none!important}.brand .sheen,.brand .gh,.brand .wire,.brand .lit,.brand .dc,.brand .ln{display:none}.brand .base,.brand svg.w>path,footer.foot .brand.pre svg path{opacity:1}}
nav.main{display:flex;gap:4px;align-items:center}
nav.main>a,.dd>span{font:500 14px Inter,sans-serif;color:var(--mute);text-decoration:none;padding:10px 12px;border-radius:999px;cursor:pointer;display:inline-flex;align-items:center;gap:6px}
nav.main>a:hover,nav.main>a.on,.dd:hover>span,.dd:focus-within>span,.dd.on>span{color:var(--ink)}
.dd{position:relative}
.dd>span::after{content:"";width:6px;height:6px;border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:rotate(45deg) translateY(-2px)}
.ddm{position:absolute;left:-8px;top:100%;padding-top:8px;display:none;min-width:300px}
.dd:hover .ddm,.dd:focus-within .ddm{display:block}
.ddm div{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:8px;box-shadow:0 20px 40px rgba(0,0,0,.4)}
.ddm a{display:block;padding:12px 14px;border-radius:10px;text-decoration:none}
.ddm a:hover{background:var(--bg)}
.ddm b{display:block;font:400 18px Inter,Arial,sans-serif;color:var(--ink)}
.ddm small{display:block;font-size:13px;color:var(--dim);margin-top:2px}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:48px;padding:0 22px;border-radius:999px;font:500 15px Inter,sans-serif;text-decoration:none;border:1px solid var(--line);background:var(--card);color:var(--ink);white-space:nowrap}
.btn:hover{border-color:var(--orchid)}
.btn.p{background:var(--orchid);border-color:var(--orchid);color:#fff}
.btn.p:hover{background:#B04BBC}
nav.main .btn{min-height:38px;padding:0 16px;font-size:14px;margin-left:8px}
details.mnav{display:none}
details.mnav summary{list-style:none;cursor:pointer;font:500 14px Inter,Arial,sans-serif;color:var(--ink);border:1px solid var(--line);border-radius:999px;height:44px;padding:0 18px;display:flex;align-items:center}
details.mnav summary::-webkit-details-marker{display:none}
details.mnav[open] summary{border-color:var(--orchid)}
.sheet{position:fixed;left:0;right:0;top:68px;height:calc(100vh - 68px);height:calc(100dvh - 68px);z-index:40;background:var(--bg);overflow-y:auto;padding:12px var(--gut) 40px;border-top:1px solid var(--line)}
.sheet h5{font:500 12px Inter,Arial,sans-serif;letter-spacing:4px;text-transform:uppercase;color:var(--dim);margin:22px 0 4px}
.sheet a{display:flex;justify-content:space-between;align-items:center;padding:14px 0;border-bottom:1px solid var(--line);text-decoration:none;font:400 24px Inter,sans-serif;color:var(--ink)}
.sheet a span{font:400 13px Inter,sans-serif;color:var(--dim);min-width:0;text-align:right;margin-left:12px}
details.mnav:not([open]) .sheet{display:none}
@media(max-width:400px){.sheet a span{display:none}}
.sheet .btn{margin-top:28px;width:100%;font:500 16px Inter,sans-serif;border-bottom:1px solid var(--orchid)}
@media(max-width:1080px){nav.main{display:none}details.mnav{display:block}}

/* type, per the deck */
.label{font:500 13px Inter,Arial,sans-serif;letter-spacing:5px;text-transform:uppercase;color:var(--soft)}
.label.o{color:var(--orchid)}
.lrow{display:flex;justify-content:space-between;align-items:baseline;gap:16px}
.lrow .n{font:400 13px Inter,Arial,sans-serif;color:var(--dim)}
h1,h2,h3{font-family:Inter,Arial,sans-serif;font-weight:400;letter-spacing:-0.025em}
h1{font-size:clamp(44px,7.4vw,96px);line-height:1.06;letter-spacing:-.3px}
h1.pname{font-weight:400;font-size:clamp(64px,11vw,128px);line-height:1}
.pdesc{font:400 clamp(24px,3.2vw,40px)/1.25 Inter,Arial,sans-serif;color:var(--soft);max-width:760px}
h2{font-size:clamp(32px,5vw,64px);line-height:1.1}
h3{font-size:clamp(20px,2vw,26px);font-weight:400;color:var(--soft);line-height:1.25}
.lead{font-size:clamp(17px,1.9vw,22px);color:var(--mute);max-width:780px}
p.body{color:var(--mute);font-size:clamp(16px,1.6vw,18px);max-width:780px}

/* sections as slides */
section.s{padding:clamp(64px,10vw,128px) 0;border-top:1px solid var(--line)}
section.s.first{border-top:0}
.head{display:flex;flex-direction:column;gap:clamp(14px,2vw,22px);margin-bottom:clamp(32px,5vw,56px)}
.head h2{max-width:1000px}
section.light{background:#EEF2F7;color:#0A0B0E;border-top:0}
section.light .label{color:#4A5568}
section.light h2,section.light h1{color:#0A0B0E}
section.light .lead,section.light p.body{color:#3A4352}
section.light .lrow .n{color:#5A6577}
section.light .card{background:#fff;border-color:#D5DDE7}
section.light .card h3{color:#0A0B0E;font-weight:500}
section.light .card p{color:#3A4352}
section.light .card .k{color:#5A6577}
section.light .card.hl{border:2px solid #9B3FA8;background:#fff}
section.light .card.hl .k{color:#9B3FA8}
section.light .callout{color:#0A0B0E}

/* hero */
.hero{position:relative;overflow:hidden;border-bottom:1px solid var(--line)}
.hero .wrap{position:relative;z-index:2;padding-top:clamp(56px,10vw,128px);padding-bottom:clamp(56px,10vw,128px)}
.hero .txt{display:flex;flex-direction:column;gap:clamp(18px,2.4vw,28px);max-width:860px}
@media(min-width:901px){.hero:not(.prod) .txt{max-width:min(860px,52%)}}
.hero .bgimg{position:absolute;top:50%;right:3%;width:min(42%,calc(100% - 32px));aspect-ratio:1;height:auto;max-height:118%;transform:translateY(-50%);object-fit:contain;z-index:1;-webkit-mask-image:radial-gradient(circle,#000 58%,transparent 70%);mask-image:radial-gradient(circle,#000 58%,transparent 70%)}
.hero .fade{position:absolute;inset:0;z-index:1;background:linear-gradient(90deg,var(--bg) 34%,rgba(10,11,14,0) 52%)}
.hero.prod .wrap{display:grid;grid-template-columns:1.05fr .95fr;gap:56px;align-items:center}
.hero .vis{border-radius:16px;overflow:hidden;border:1px solid var(--line)}
.hero .vis img{width:100%;height:100%;object-fit:cover}
.hero .vis.light{background:linear-gradient(180deg,#F3F3F3,#FFF);padding:16px}
.hero .vis.light img{object-fit:contain}
@media(max-width:900px){
 .hero.prod .wrap{grid-template-columns:1fr;gap:32px}
 .hero .bgimg{width:min(92vw,520px);right:50%;top:auto;bottom:-6%;transform:translateX(50%);opacity:.5}
 .hero .fade{background:linear-gradient(180deg,rgba(10,11,14,.2) 0%,var(--bg) 85%)}
}
.cta{display:flex;gap:12px;flex-wrap:wrap}
@media(max-width:480px){.cta .btn{flex:1 1 100%}}

/* grids and cards */
.grid{display:grid;gap:clamp(12px,1.6vw,20px)}
.g2{grid-template-columns:repeat(2,1fr)}.g3{grid-template-columns:repeat(3,1fr)}.g4{grid-template-columns:repeat(4,1fr)}
@media(max-width:1000px){.g4{grid-template-columns:repeat(2,1fr)}.g3{grid-template-columns:1fr 1fr}}
@media(max-width:640px){.g2,.g3{grid-template-columns:1fr}.g4{grid-template-columns:1fr 1fr}}
.card{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:clamp(20px,2.4vw,32px);display:flex;flex-direction:column;gap:10px}
.card.hl{background:var(--tint);border-color:var(--orchid)}
.card p{color:var(--mute);font-size:clamp(15px,1.4vw,16px)}
.card .k{font:500 12px Inter,Arial,sans-serif;color:var(--dim);letter-spacing:1px;text-transform:uppercase}
.card.hl .k{color:var(--orchid)}
@media(max-width:640px){.g4 .card{padding:16px;border-radius:12px;gap:6px}.g4 .card h3{font-size:18px}.g4 .card p{font-size:14px;line-height:1.4}}
a.card{text-decoration:none;transition:border-color .2s}
a.card:hover{border-color:var(--orchid)}
a.card .more{margin-top:auto;padding-top:8px;font:500 14px Inter,Arial,sans-serif;color:var(--soft)}
.big{font:400 clamp(30px,3.4vw,40px)/1.05 Inter,Arial,sans-serif!important;color:var(--ink)!important}
.chips{display:flex;gap:8px;flex-wrap:wrap}
.chips span{border:1px solid #3A4152;border-radius:999px;padding:4px 14px;font-size:14px;color:var(--ink)}
.stats{display:grid;grid-template-columns:repeat(4,1fr);border-top:1px solid var(--line)}
.stats div{padding:32px 24px 0;border-left:1px solid var(--line)}
.stats div:first-child{border-left:0;padding-left:0}
.stats b{display:block;font:400 clamp(36px,5vw,64px)/1 Inter,sans-serif;color:var(--soft);margin-bottom:10px}
.stats span{color:var(--mute);font-size:15px}
@media(max-width:800px){.stats{grid-template-columns:1fr 1fr}.stats div{padding:22px 12px 22px 0;border-left:0;border-bottom:1px solid var(--line)}}
.callout{border-left:3px solid var(--orchid);padding:4px 0 4px clamp(16px,2vw,28px);font-size:clamp(18px,2vw,24px);line-height:1.45;color:var(--ink);max-width:960px}
.steps{display:grid;grid-template-columns:repeat(5,1fr);gap:14px}
@media(max-width:1000px){.steps{grid-template-columns:1fr}.steps .card{display:grid;grid-template-columns:44px 1fr;column-gap:12px;row-gap:4px;padding:18px}.steps .card .k{grid-row:span 2;padding-top:5px}}
.loopnote{margin-top:24px;display:flex;gap:14px;align-items:flex-start;color:var(--mute);font-size:16px;max-width:820px}
.loopnote i{flex:none;width:28px;height:28px;border-radius:50%;border:2px solid var(--orchid);display:flex;align-items:center;justify-content:center;font-style:normal;color:var(--orchid);font-size:15px}
.rows{border-top:1px solid var(--line)}
.rows div{display:grid;grid-template-columns:1fr 1.4fr 1.1fr;gap:20px;padding:18px 0;border-bottom:1px solid var(--line);font-size:16px;color:var(--mute)}
.rows div b{font:400 20px Inter,Arial,sans-serif;color:var(--soft)}
.rows div.h{font:500 12px Inter,Arial,sans-serif;letter-spacing:2px;text-transform:uppercase;color:var(--dim);padding:14px 0}
@media(max-width:700px){.rows div{grid-template-columns:1fr;gap:2px;padding:14px 0;font-size:14px}.rows div b{font-size:19px}.rows div.h{display:none}.rows div span:last-child{color:var(--dim)}}
ol.how{list-style:none;display:flex;flex-direction:column;gap:16px}
ol.how li{display:grid;grid-template-columns:40px 1fr;gap:14px;color:var(--mute);font-size:clamp(16px,1.6vw,18px)}
ol.how li em{font:500 14px Inter,Arial,sans-serif;font-style:normal;color:var(--orchid);padding-top:3px}
ol.how li b{color:var(--ink);font-weight:600}
.words{display:flex;flex-wrap:wrap;gap:10px 28px;font:400 clamp(20px,2.4vw,30px) Inter,sans-serif;color:var(--orchid2)}
section.light .words{color:#9B3FA8}
.phase ul{list-style:none;display:flex;flex-direction:column;gap:8px;margin-top:6px}
.phase li{color:var(--mute);font-size:15px;padding-left:18px;position:relative}
.phase li::before{content:"";position:absolute;left:0;top:10px;width:8px;height:1px;background:var(--orchid)}

/* band and footer */
.band{padding:clamp(64px,9vw,104px) 0;border-top:1px solid var(--line);background:radial-gradient(ellipse at 80% 50%,rgba(197,91,209,.16),transparent 60%)}
.band .wrap{display:flex;justify-content:space-between;align-items:flex-end;gap:32px;flex-wrap:wrap}
.band .txt{display:flex;flex-direction:column;gap:16px;max-width:720px}
footer.foot{border-top:1px solid var(--line);padding:56px 0 40px}
footer.foot .wrap{display:grid;grid-template-columns:1.3fr 1fr 1fr 1fr 1fr;gap:32px}
footer.foot h4{font:500 12px Inter,Arial,sans-serif;letter-spacing:2px;text-transform:uppercase;color:var(--dim);margin-bottom:12px}
footer.foot a{display:block;color:var(--mute);text-decoration:none;font-size:15px;padding:6px 0}
footer.foot a:hover{color:var(--ink)}
footer.foot a.brand{display:inline-flex;align-items:center;flex-wrap:nowrap;padding:0;min-height:44px}
footer.foot p{color:var(--dim);font-size:14px;margin-top:14px}
footer.foot .social{display:flex;gap:10px;margin-top:20px}footer.foot .social a{display:grid;place-items:center;width:40px;height:40px;padding:0;border:1px solid var(--line);border-radius:50%;color:var(--mute);transition:color .2s,border-color .2s,background .2s}footer.foot .social a:hover{color:#fff;border-color:var(--orchid);background:rgba(197,91,209,.18)}footer.foot .social svg{width:16px;height:16px;fill:currentColor}
footer.foot .legal{grid-column:1/-1;border-top:1px solid var(--line);padding-top:24px;display:flex;justify-content:space-between;flex-wrap:wrap;gap:12px;font:400 13px Inter,Arial,sans-serif;color:var(--dim)}
@media(max-width:900px){footer.foot .wrap{grid-template-columns:1fr 1fr;gap:24px}footer.foot .wrap>div:first-child{grid-column:1/-1}}

/* team */
.person img{width:100%;aspect-ratio:4/5;object-fit:cover;border-radius:10px;filter:grayscale(1) contrast(1.15)}
.ini{width:100%;aspect-ratio:4/5;border-radius:10px;background:linear-gradient(160deg,var(--tint),var(--card));border:1px solid var(--line);display:flex;align-items:center;justify-content:center;font:400 64px Inter,sans-serif;color:var(--orchid2)}
.role{font:500 12px Inter,Arial,sans-serif;letter-spacing:2px;text-transform:uppercase;color:var(--orchid)!important}
.person a{font:500 14px Inter,Arial,sans-serif;text-decoration:none;color:var(--soft);margin-top:auto}
@media(max-width:640px){.team{grid-template-columns:1fr 1fr}.team .ini{font-size:40px}.team .card{padding:14px}.team h3{font-size:18px}.team p{font-size:13px}}

/* 3d biopen */
.pen3d{position:relative;aspect-ratio:16/10;background:linear-gradient(180deg,#F3F3F3,#FFF);border-radius:20px;overflow:hidden;border:1px solid var(--line)}
.pen-poster{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;padding:20px;opacity:0;transition:opacity .4s}
.pen3d.fail .pen-poster{opacity:1}
.pen-stage{opacity:0;transition:opacity .5s}.pen3d.live .pen-stage{opacity:1}
.pen-stage{position:absolute;inset:0}.pen-stage canvas{display:block;width:100%!important;height:100%!important}
.pen-shadow{position:absolute;left:14%;right:18%;bottom:11%;height:6%;border-radius:50%;background:radial-gradient(closest-side,rgba(0,0,0,.28),transparent)}
.hero.prod .pen3d{width:100%}.hero.full{min-height:calc(100vh - 68px);min-height:calc(100svh - 68px);display:flex;align-items:flex-end}.hero.full .wrap{display:block;width:100%}.hero.full .txt{max-width:640px}.hero.full .hbg,.hero.full picture{position:absolute;inset:0;width:100%;height:100%;z-index:0}.hero.full .hbg{object-fit:cover}.hero.full .hshade{position:absolute;inset:0;z-index:1;background:linear-gradient(90deg,rgba(10,11,14,.9) 0%,rgba(10,11,14,.6) 42%,rgba(10,11,14,.05) 72%),linear-gradient(0deg,rgba(10,11,14,.9) 0%,rgba(10,11,14,0) 45%)}.hero.full.lt{align-items:center}.hero.full.lt .pen3d{position:absolute;right:-4%;top:50%;width:58%;transform:translateY(-50%);aspect-ratio:16/10;z-index:1}.hero.full.lt .txt{max-width:520px}@media(max-width:900px){.hero.full{min-height:auto;padding-top:46vh}.hero.full .hshade{background:linear-gradient(180deg,rgba(10,11,14,0) 0%,rgba(10,11,14,.55) 38%,rgba(10,11,14,.95) 60%)}.hero.full.lt{padding-top:0;flex-direction:column;align-items:stretch}.hero.full.lt .pen3d{position:relative;right:auto;top:auto;transform:none;width:100%;aspect-ratio:4/3}}.hero.lt{background:linear-gradient(180deg,#EEF0F3 0%,#FFFFFF 70%);color:#0A0B0E;border-bottom:1px solid #E3E6EB}.hero.lt .pname{color:#0A0B0E}.hero.lt .pdesc{color:#3A4352}.hero.lt .body,.hero.lt ol.how span{color:#4A5262}.hero.lt ol.how b{color:#0A0B0E}.hero.lt .label{color:#5A6577}.hero.lt ol.how li em{color:#9B3FA8}.hero.lt .pen3d{border:none;background:transparent;border-radius:0;aspect-ratio:4/3}.hero.lt .pen-poster{mix-blend-mode:multiply}
/* product feature rows */
.feat{display:grid;grid-template-columns:1.05fr .95fr;gap:clamp(28px,5vw,72px);align-items:center}
.feat.rev>.ftxt{order:2}
@media(max-width:900px){.feat{grid-template-columns:1fr}.feat.rev>.ftxt{order:0}}
.ftxt{display:flex;flex-direction:column;gap:clamp(16px,2vw,24px)}
.fname{font:400 clamp(52px,8vw,104px)/1 Inter,Arial,sans-serif;color:var(--ink)}
.fvis{border-radius:20px;overflow:hidden;border:1px solid var(--line);background:var(--card)}
.fvis img{width:100%;height:100%;object-fit:cover}
.fvis.light{background:linear-gradient(180deg,#F3F3F3,#FFF);padding:20px}.fvis.light img{object-fit:contain}
.flist{list-style:none;display:grid;gap:10px}
.flist li{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:18px 20px;color:var(--mute);font-size:16px}
.flist li b{display:block;font:400 21px Inter,Arial,sans-serif;color:var(--ink);margin-bottom:2px}
.flist li.hl{border-color:var(--orchid);background:var(--tint)}
/* interactivity */
html.js .rv{opacity:0;transform:translateY(18px);transition:opacity .7s ease,transform .7s cubic-bezier(.2,.7,.2,1)}
html.js .rv.in{opacity:1;transform:none}
.hero .bgimg{transition:translate .6s cubic-bezier(.2,.7,.2,1)}
.card{transition:border-color .3s,background .3s,transform .3s,opacity .3s}
.steps .card.act{border-color:var(--orchid);background:var(--tint);transform:translateY(-4px)}
.steps .card.act .k{color:var(--orchid)}
@media(max-width:1000px){.steps .card.act{transform:none}}
.loopnote i{animation:spin 6s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
@media(prefers-reduced-motion:reduce){.loopnote i{animation:none}html.js .rv{opacity:1;transform:none}}
/* ask realm demo */
.demo{background:var(--card);border:1px solid var(--line);border-radius:20px;padding:clamp(18px,3vw,36px);display:grid;grid-template-columns:1fr 1fr;gap:clamp(20px,3vw,40px)}
@media(max-width:860px){.demo{grid-template-columns:1fr}}
.demo>div{min-width:0}
.demo form{display:flex;gap:8px;margin:14px 0}
.demo form .btn{flex:none;padding:0 18px}
.demo input{flex:1;min-width:0;height:52px;border-radius:999px;border:1px solid #3A4152;background:var(--bg);color:var(--ink);padding:0 20px;font:16px Inter,sans-serif}
.demo input:focus{outline:none;border-color:var(--orchid)}
.demo .exs{display:flex;flex-wrap:wrap;gap:8px}
.demo .ex{background:none;border:1px solid var(--line);color:var(--mute);border-radius:999px;padding:8px 14px;font:14px Inter,sans-serif;cursor:pointer;text-align:left}
.demo .ex:hover{border-color:var(--orchid);color:var(--ink)}
.pills{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:14px}
.pill{font:500 12px Inter,Arial,sans-serif;letter-spacing:1px;text-transform:uppercase;padding:6px 12px;border-radius:999px;border:1px solid var(--line);color:var(--dim);transition:all .3s}
.pill.done{color:var(--soft);border-color:#3A4152}
.pill.on{color:#fff;background:var(--orchid);border-color:var(--orchid);box-shadow:0 0 18px rgba(197,91,209,.5)}
.demo-log{min-height:220px;max-height:320px;overflow:auto;background:var(--bg);border:1px solid var(--line);border-radius:14px;padding:18px;font-size:15px;display:flex;flex-direction:column;gap:10px}
.demo-log p{color:var(--mute);animation:fadein .4s ease}
.demo-log p b{color:var(--ink)}
.demo-log .ok b{color:#8FE3B0}.demo-log .warn b{color:var(--orchid2)}
.demo-log .dim{color:var(--dim)}.demo-log .note{font:12px Inter,Arial,sans-serif;color:var(--dim);margin-top:auto}
.demo-log .empty{color:var(--dim)}
@keyframes fadein{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
/* tabs */
.tabs [role=tablist]{display:inline-flex;gap:4px;padding:4px;border:1px solid var(--line);border-radius:999px;background:var(--card);margin-bottom:24px;max-width:100%;overflow-x:auto}
.tabs [role=tab]{border:0;background:none;color:var(--mute);font:500 15px Inter,sans-serif;padding:10px 18px;border-radius:999px;cursor:pointer;white-space:nowrap}
.tabs [role=tab][aria-selected=true]{background:var(--orchid);color:#fff}
.tabs [role=tabpanel]{animation:fadein .4s ease}
.panel{display:grid;grid-template-columns:1fr 1.2fr;gap:clamp(20px,3vw,48px);align-items:start;background:var(--card);border:1px solid var(--line);border-radius:20px;padding:clamp(20px,3vw,40px)}
@media(max-width:800px){.panel{grid-template-columns:1fr}}
.panel ul{list-style:none;display:grid;gap:10px}
.panel li{border:1px solid var(--line);border-radius:12px;padding:14px 16px;color:var(--mute);font-size:15px;background:var(--bg)}
.panel li b{display:block;font:400 19px Inter,Arial,sans-serif;color:var(--ink);margin-bottom:2px}
/* fleet */
.fleet{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:20px}
@media(max-width:800px){.fleet{grid-template-columns:1fr}}
.fleet-list{display:flex;flex-direction:column;gap:8px}
.fleet-list button{display:flex;justify-content:space-between;align-items:center;gap:12px;text-align:left;background:var(--card);border:1px solid var(--line);border-radius:12px;padding:14px 18px;color:var(--ink);font:400 19px Inter,Arial,sans-serif;cursor:pointer}
.fleet-list button small{font:500 11px Inter,Arial,sans-serif;letter-spacing:1px;text-transform:uppercase;color:var(--dim)}
.fleet-list button[aria-pressed=true]{border-color:var(--orchid);background:var(--tint)}
.fleet-list button[aria-pressed=true] small{color:var(--orchid)}
@media(max-width:800px){.fleet-list{flex-direction:row;overflow-x:auto;padding-bottom:6px;scroll-snap-type:x mandatory}.fleet-list button{flex:none;scroll-snap-align:start;font-size:16px;padding:10px 14px}.fleet-list button small{display:none}}
.fleet-detail{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:clamp(20px,3vw,36px);display:flex;flex-direction:column;gap:14px;align-self:start;position:sticky;top:90px}
.fleet-detail.flash{animation:fadein .4s ease}
.fleet-detail dl{display:grid;gap:4px}
.fleet-detail dt{font:500 12px Inter,Arial,sans-serif;letter-spacing:2px;text-transform:uppercase;color:var(--dim);margin-top:10px}
.fleet-detail dd{color:var(--ink);font-size:17px}
.fleet-detail p{color:var(--mute)}
.fleet-detail .k{font:500 12px Inter,Arial,sans-serif;letter-spacing:2px;text-transform:uppercase;color:var(--orchid)}
/* chip filter */
.chipbar{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:20px}
.chipbar button{background:var(--card);border:1px solid var(--line);color:var(--mute);border-radius:999px;padding:9px 16px;font:500 14px Inter,sans-serif;cursor:pointer}
.chipbar button[aria-pressed=true]{border-color:var(--orchid);color:var(--ink);background:var(--tint)}
.grid .card.off{display:none}
/* food demo */
.food-demo{margin-top:28px;background:#fff;border:1px solid #D5DDE7;border-radius:20px;padding:clamp(20px,3vw,36px);display:grid;grid-template-columns:1fr 1fr;gap:24px;align-items:center}
@media(max-width:800px){.food-demo{grid-template-columns:1fr}}
.food-demo h3{color:#0A0B0E;font-weight:500}
.food-demo p{color:#3A4352}
.scores{display:grid;grid-template-columns:1fr 1fr;gap:12px;position:relative}
.score{border:1px solid #D5DDE7;border-radius:14px;padding:18px;transition:all .5s}
.score .k{font:500 11px Inter,Arial,sans-serif;letter-spacing:1px;text-transform:uppercase;color:#5A6577}
.score b{display:block;font:400 48px/1.1 Inter,sans-serif;color:#0A0B0E;margin:6px 0}
.score .bar{height:6px;border-radius:6px;background:#E6EBF1;overflow:hidden}.score .bar i{display:block;height:100%;width:94%;background:#2FA36B}
.score.flag b{color:#B4237A}.score .tag{display:inline-block;margin-top:8px;font:500 12px Inter,sans-serif;color:#B4237A;background:#FBE8F2;border-radius:999px;padding:4px 10px}
.food-demo.merged .score{opacity:.25;filter:blur(1px)}
.merge-msg{grid-column:1/-1;border-left:3px solid #9B3FA8;padding:4px 0 4px 18px;color:#0A0B0E!important;font-size:17px;animation:fadein .4s ease}
.food-demo button{align-self:flex-start;background:#0A0B0E;color:#fff;border:0;border-radius:999px;min-height:46px;padding:0 20px;font:500 15px Inter,sans-serif;cursor:pointer}
/* robolab module explorer */
.rl{display:flex;flex-direction:column;gap:16px}
.rl-view{scroll-margin-top:84px}
.rl-view{position:relative;border-radius:20px;overflow:hidden;border:1px solid var(--line);background:#0A0B0E;aspect-ratio:16/9}
.rl-still{position:absolute;inset:0;margin:0;transition:transform .7s cubic-bezier(.6,0,.2,1),opacity .5s ease,filter .5s ease}
.rl-still img{width:100%;height:100%;object-fit:cover;display:block}
.rl.open .rl-still{opacity:0;filter:blur(6px)}
.rl-tag{position:absolute;transform:translate(-50%,-50%);display:flex;align-items:center;gap:6px;background:rgba(10,11,14,.8);border:1px solid #3A4152;border-radius:999px;padding:4px 12px 4px 4px;color:var(--ink);font:500 13px Inter,sans-serif;cursor:pointer;transition:opacity .3s,border-color .2s,background .2s;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);min-height:32px}
.rl-tag i,.rl-chip i{font-style:normal;width:24px;height:24px;border-radius:50%;background:var(--orchid);color:#fff;display:inline-flex;align-items:center;justify-content:center;font:600 12px Inter,sans-serif;flex:none}
.rl-tag:hover{border-color:var(--orchid);background:var(--tint)}
.rl.open .rl-tag{opacity:0;pointer-events:none}
.rl-stage{position:absolute;inset:0;opacity:0;transition:opacity .5s ease .25s;pointer-events:none}
.rl.open .rl-stage{opacity:1;pointer-events:auto}
.rl-stage canvas{display:block;width:100%!important;height:100%!important}
.rl-pins{position:absolute;inset:0;pointer-events:none}
.rl-pin{position:absolute;left:0;top:0;width:30px;height:30px;border-radius:50%;border:2px solid rgba(255,255,255,.85);background:var(--orchid);color:#fff;font:600 13px Inter,sans-serif;cursor:pointer;opacity:0;pointer-events:none;transition:opacity .3s,box-shadow .2s}
.rl-pin.show{opacity:1;pointer-events:auto}
.rl-pin.on{box-shadow:0 0 0 6px rgba(197,91,209,.35);background:#fff;color:var(--orchid)}
.rl-back{position:absolute;left:16px;top:16px;z-index:3;background:rgba(10,11,14,.82);border:1px solid #3A4152;border-radius:999px;color:var(--ink);font:500 14px Inter,sans-serif;padding:10px 16px;cursor:pointer;min-height:44px}
.rl-back:hover{border-color:var(--orchid)}
.rl-cap{margin:0;display:grid;grid-template-columns:26px 1fr;gap:2px 10px;background:rgba(20,22,28,.94);border:1px solid var(--orchid);border-radius:14px;padding:12px 14px;animation:fadein .3s ease}
.rl-cap[hidden]{display:none}.rl-cap i{grid-row:span 2;font-style:normal;width:26px;height:26px;border-radius:50%;background:var(--orchid);color:#fff;display:flex;align-items:center;justify-content:center;font:600 12px Inter,sans-serif}.rl-cap b{font:500 15px Inter,sans-serif;color:var(--ink)}.rl-cap span{font-size:14px;color:var(--mute)}
.rl-chips{display:grid;grid-template-columns:repeat(6,1fr);gap:8px}
.rl-chip{display:flex;flex-direction:column;align-items:flex-start;gap:6px;background:var(--card);border:1px solid var(--line);border-radius:14px;padding:12px 14px;color:var(--ink);font:500 15px Inter,sans-serif;text-align:left;cursor:pointer;transition:border-color .2s,background .2s}
.rl-chip small{color:var(--mute);font:400 13px/1.35 Inter,sans-serif}
.rl-chip:hover{border-color:#3A4152}
.rl-chip[aria-pressed=true]{border-color:var(--orchid);background:var(--tint)}
.rl-chip i{margin-bottom:2px}
.rl-panel{background:var(--card);border:1px solid var(--line);border-radius:20px;padding:28px;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.5fr);gap:32px}
.rl-panel[hidden]{display:none}
.rl-panel.in{animation:rlin .55s cubic-bezier(.2,.7,.2,1)}
@keyframes rlin{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:none}}
.rl-panel .k{font:500 12px Inter,Arial,sans-serif;letter-spacing:2px;text-transform:uppercase;color:var(--orchid2);margin-bottom:10px}
.rl-panel h3{font:400 clamp(28px,3vw,38px)/1.15 Inter,sans-serif;color:var(--ink);margin-bottom:12px}
.rl-panel .what{color:var(--mute);font-size:17px}
.rl-eq{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}
.rl-eq button{width:100%;display:grid;grid-template-columns:30px 1fr;gap:4px 12px;align-items:start;text-align:left;background:transparent;border:1px solid transparent;border-radius:12px;padding:10px 12px;color:var(--ink);cursor:pointer;opacity:0;transform:translateY(8px);animation:rlitem .45s ease forwards}
.rl-eq button:hover{background:#181B22}
.rl-eq button.on{border-color:var(--orchid);background:var(--tint)}
.rl-eq i{grid-row:span 2;font-style:normal;width:26px;height:26px;border-radius:50%;background:var(--orchid);color:#fff;display:flex;align-items:center;justify-content:center;font:600 12px Inter,sans-serif;margin-top:1px}
.rl-eq b{font:500 16px Inter,sans-serif;color:var(--ink)}
.rl-eq span{font-size:15px;color:var(--mute)}
@keyframes rlitem{to{opacity:1;transform:none}}
.rl-note{font-size:14px;color:var(--dim)}
@media(max-width:900px){.rl-chips{grid-template-columns:repeat(3,1fr)}.rl-panel{grid-template-columns:1fr;gap:20px;padding:22px}}
@media(max-width:700px){.rl.open .rl-view{aspect-ratio:4/3}.rl-tag{display:none}.rl-pin{width:24px;height:24px;font-size:11px;border-width:1.5px}.rl-chips{grid-template-columns:repeat(2,1fr)}.rl-chip small{font-size:12px}.rl-back{left:10px;top:10px;padding:8px 14px;font-size:13px}}
@media(prefers-reduced-motion:reduce){.rl-still,.rl-stage{transition:none}.rl-panel.in,.rl-eq button{animation:none;opacity:1;transform:none}}
/* 3d viewer */
.viewer{position:relative;border-radius:20px;overflow:hidden;border:1px solid var(--line);background:#0A0B0E;aspect-ratio:16/9}
@media(max-width:700px){.viewer{aspect-ratio:4/5}}
.viewer-poster{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:50% 50%}
.viewer-go{position:absolute;left:50%;bottom:24px;transform:translateX(-50%);z-index:2}
.viewer-stage{position:absolute;inset:0;touch-action:none}
.viewer-stage canvas{display:block;width:100%!important;height:100%!important;cursor:grab}
.viewer-stage canvas:active{cursor:grabbing}
.hs{position:absolute;left:0;top:0;display:flex;align-items:center;gap:6px;background:rgba(10,11,14,.78);border:1px solid #3A4152;border-radius:999px;padding:4px 10px 4px 4px;color:var(--ink);font:500 12px Inter,sans-serif;cursor:pointer;transition:opacity .2s,border-color .2s;backdrop-filter:blur(6px)}
.hs i{font-style:normal;width:22px;height:22px;border-radius:50%;background:var(--orchid);color:#fff;display:flex;align-items:center;justify-content:center;font:600 11px Inter,sans-serif}
.hs.on{border-color:var(--orchid)}
@media(max-width:700px){.hs span{display:none}.hs{padding:3px}}
.hs-info{position:absolute;left:16px;bottom:16px;max-width:min(380px,calc(100% - 32px));background:rgba(20,22,28,.94);border:1px solid var(--orchid);border-radius:14px;padding:16px 18px;display:none;flex-direction:column;gap:6px}
.hs-info.show{display:flex;animation:fadein .3s ease}
.hs-info h3{color:var(--ink);font-size:20px}.hs-info p{color:var(--mute);font-size:14px}.hs-info .k{font:500 11px Inter,Arial,sans-serif;color:var(--orchid);letter-spacing:1px}
.hs-hint{position:absolute;right:16px;top:14px;font:12px Inter,Arial,sans-serif;color:var(--dim)}
@media(max-width:700px){.hs-hint{left:16px;right:auto}}
/* homepage: one full-screen panel per product */

.tp{position:relative;height:calc(100vh - 68px);height:calc(100svh - 68px);min-height:560px;overflow:hidden;display:flex;flex-direction:column;align-items:center;justify-content:space-between;padding:clamp(56px,11vh,120px) 16px clamp(40px,8vh,88px);text-align:center;scroll-snap-align:start;border-bottom:1px solid var(--line)}
.tp>.bg,.tp>picture .bg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:0}.tp>picture{position:absolute;inset:0;z-index:0}
.tp>.shade{position:absolute;inset:0;z-index:0;background:linear-gradient(180deg,rgba(10,11,14,.9) 0%,rgba(10,11,14,.55) 22%,rgba(10,11,14,0) 42%,rgba(10,11,14,0) 66%,rgba(10,11,14,.8) 100%)}
.tp:not(.lt) .tt{text-shadow:0 2px 18px rgba(10,11,14,.85)}
.tp .tt,.tp .btns,.tp .mid{position:relative;z-index:1}
.tp .tt{display:flex;flex-direction:column;gap:10px;align-items:center}
.tp h2{font-size:clamp(44px,6vw,72px);font-weight:400;line-height:1.05;max-width:1100px}
.tp .tt p{font-size:clamp(16px,1.6vw,19px);color:var(--soft);max-width:560px}
.tp .btns{display:flex;gap:16px;flex-wrap:wrap;justify-content:center;width:100%}
.tp .btns .btn{min-width:240px;min-height:44px;border-radius:6px}
.tp .btns .btn:not(.p){background:rgba(238,242,247,.9);color:#0A0B0E;border-color:transparent}
.tp .mid{flex:1;width:100%;display:flex;align-items:center;justify-content:center;min-height:0;padding:24px 0}
.tp.lt{background:linear-gradient(180deg,#F1F2F4,#FFFFFF);color:#0A0B0E}
.tp.lt .tt p{color:#4A5262}
.tp.lt .btns .btn:not(.p){background:#E6E8EC}
.tp.lt .pen3d{border:none;background:transparent;width:min(900px,100%);aspect-ratio:16/9}
@media(max-width:700px){.tp .btns{flex-direction:column;align-items:center}.tp .btns .btn{width:100%;max-width:360px}.tp.lt .pen3d{aspect-ratio:4/3}}
.phone{height:100%;max-height:560px;width:auto;aspect-ratio:9/19;border-radius:40px;background:#0E1016;border:2px solid #2E3340;box-shadow:0 40px 120px rgba(197,91,209,.18),0 0 0 8px #15171D;padding:16px 12px;display:flex;flex-direction:column;gap:10px;text-align:left;overflow:hidden}
.phone .bar{display:flex;justify-content:space-between;font:500 11px Inter,Arial,sans-serif;color:var(--dim);padding:2px 8px}
.phone h4{font:400 20px Inter,Arial,sans-serif;color:var(--ink);padding:0 6px}
.phone .pc{background:#171A22;border:1px solid var(--line);border-radius:16px;padding:12px;display:flex;flex-direction:column;gap:6px}
.phone .pc .k{font:500 10px Inter,Arial,sans-serif;letter-spacing:1px;color:var(--dim);text-transform:uppercase}
.phone .pc b{font:400 30px Inter,sans-serif;color:var(--soft);line-height:1}
.phone .pc.f{border-color:var(--orchid);background:var(--tint)}.phone .pc.f b{color:var(--orchid2);font-size:22px}
.phone .pc span{font-size:12px;color:var(--mute);line-height:1.35}
.phone .meter{height:5px;border-radius:9px;background:#262A33}.phone .meter i{display:block;height:100%;width:94%;border-radius:9px;background:var(--soft)}



/* ===== Restyle, October 2026 =====
   Brings the site back to the Wallace brand: monochrome near-black and white,
   colour from photography only, square corners, hairline rules, no glow.
   One data accent (Wallace Gold) is reserved for flagged results. */

:root{--orchid:#EEF2F7;--orchid2:#C9D0DA;--tint:#16181E;--flag:#F5C242;--mono:"JetBrains Mono",ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}

/* header: solid, no glass */
header.top{background:var(--bg);backdrop-filter:none;-webkit-backdrop-filter:none}

/* reveal-on-scroll off: content is simply there */
html.js .rv{opacity:1!important;transform:none!important;transition:none!important}

/* shapes: square corners everywhere that used pills and soft cards */
.btn,.skip,details.mnav summary,nav.main>a,.dd>span,.chips span,.pill,.tabs [role=tablist],.tabs [role=tab],.chipbar button,.demo input,.demo .ex,.rl-back,.rl-tag,.hs,.food-demo button,.score .tag{border-radius:2px!important}
.card,.ddm div,.ddm a,.film,.hero .vis,.fvis,.flist li,.demo,.demo-log,.panel,.panel li,.fleet-list button,.fleet-detail,.food-demo,.score,.rl-view,.rl-chip,.rl-panel,.rl-eq button,.viewer,.hs-info,.rl-cap,.pen3d,.person img,.ini,.phone .pc{border-radius:4px!important}
.score .bar{border-radius:0}

/* buttons: solid white on dark, solid black on light, outline secondary */
.btn{background:transparent;border:1px solid #3A3F4A;color:var(--ink);font-weight:500;letter-spacing:0}
.btn:hover{border-color:var(--ink)}
.btn.p{background:var(--ink);border-color:var(--ink);color:#0A0B0E}
.btn.p:hover{background:#fff}
section.light .btn.p,.tp.lt .btn.p,.hero.lt .btn.p{background:#0A0B0E;border-color:#0A0B0E;color:#fff}
.skip{color:#0A0B0E}
.ddm div{box-shadow:none}

/* labels and numbers: quieter tracking, monospace for specifications */
.label,.card .k,.rows div.h,.fleet-list button small,.fleet-detail dt,.fleet-detail .k,.rl-panel .k,.score .k,.phone .pc .k,.hs-info .k,footer.foot h4,.sheet h5,.role,.pill{font-family:var(--mono)!important;font-weight:400!important;letter-spacing:.04em!important;font-size:12px!important}
.label,.label.o,.card.hl .k,.steps .card.act .k,.fleet-detail .k,.rl-panel .k,.fleet-list button[aria-pressed=true] small,.hs-info .k{color:var(--dim)!important}
.role{color:var(--mute)!important}
.stats b{font-family:var(--mono);font-weight:400;letter-spacing:-.02em;color:var(--ink)}
ol.how li em{font-family:var(--mono);color:var(--dim)!important}

/* cards become ruled entries: no boxes, a hairline on top */
.card{background:transparent!important;border:0!important;border-top:1px solid var(--line)!important;padding:18px 0 0!important;gap:8px}
.card.hl{border-top:1px solid var(--ink)!important}
a.card:hover{border-top-color:var(--ink)!important}
.card h3{font-weight:500;font-size:clamp(18px,1.6vw,21px);letter-spacing:-.01em}
.grid{row-gap:clamp(28px,3vw,40px)!important}
section.light .card{background:transparent!important;border-top:1px solid #C6CDD7!important}
section.light .card.hl{border-top:1px solid #0A0B0E!important}
section.light .card.hl .k{color:#5A6577!important}
.steps .card.act{transform:none;border-top-color:var(--ink)!important}

/* emphasis without colour */
.callout{border-left:1px solid var(--ink);font-size:clamp(17px,1.7vw,21px)}
section.light .callout{border-left-color:#0A0B0E}
.words,section.light .words{color:var(--mute);font-size:clamp(17px,1.8vw,22px)}
section.light .words{color:#3A4352}
.band{background:none}
.phase li::before{background:var(--dim)}
.loopnote i{border-color:var(--dim);color:var(--dim)}
.hero.lt ol.how li em{color:#5A6577!important}

/* interactive states: white, not purple, and no glow */
.tabs [role=tab][aria-selected=true],.pill.on{background:var(--ink)!important;color:#0A0B0E!important;box-shadow:none!important}
.chipbar button[aria-pressed=true],.rl-chip[aria-pressed=true],.fleet-list button[aria-pressed=true],.rl-eq button.on,.flist li.hl{background:var(--tint)!important;border-color:var(--ink)!important}
.rl-tag i,.rl-chip i,.rl-eq i,.rl-cap i,.hs i{background:var(--ink)!important;color:#0A0B0E!important}
.rl-pin{background:var(--ink)!important;color:#0A0B0E!important}
.rl-pin.on{box-shadow:0 0 0 4px rgba(238,242,247,.25)!important;background:#0A0B0E!important;color:var(--ink)!important}
.rl-cap,.hs-info{border-color:#3A3F4A!important}
.demo-log .warn b{color:var(--flag)}
.fplay span{background:rgba(238,242,247,.94)!important;box-shadow:none!important}
.fplay span:after{border-color:transparent transparent transparent #0A0B0E!important}
footer.foot .social a:hover{background:transparent!important;border-color:var(--ink)!important}

/* flagged results: the one place colour carries data */
.phone{box-shadow:0 0 0 8px #15171D!important;border-radius:36px!important}
.phone .pc.f{border-color:var(--flag)!important;background:#1C1A12!important}
.phone .pc.f b{color:var(--flag)!important}
.score .bar i{background:#0A0B0E}
.score.flag b{color:#8A5A00}
.score .tag{color:#5A3E00;background:#FCEFC7}

/* team placeholders */
.ini{background:var(--card)!important;color:var(--dim)!important}

/* gradients flattened */
.hero.lt,.tp.lt{background:#F4F5F7!important}
.hero .vis.light,.fvis.light,.pen3d{background:#F4F5F7}

/* homepage panels: text set bottom-left like a caption, not centred over the image */
.tp{align-items:stretch;justify-content:flex-end}
.tp .mid{order:1}
.tp .tt{order:2;align-items:flex-start;text-align:left;width:100%;max-width:1240px;margin:0 auto;padding:0 var(--gut);text-shadow:none!important}
.tp .btns{order:3;justify-content:flex-start;max-width:1240px;margin:20px auto 0;padding:0 var(--gut)}
.tp h2{font-size:clamp(40px,5vw,64px);letter-spacing:-.025em}
.tp .tt p{max-width:620px;color:var(--soft)}
.tp .tt .spec{font:400 13px/1.5 var(--mono);color:var(--mute);letter-spacing:.02em;margin-top:6px}
.tp.lt .tt .spec{color:#5A6577}
.tp .btns .btn{min-width:0!important;width:auto!important;padding:0 18px;border-radius:2px!important}
.tp>.shade{background:linear-gradient(180deg,rgba(10,11,14,.35) 0%,rgba(10,11,14,0) 30%,rgba(10,11,14,0) 50%,rgba(10,11,14,.88) 100%)!important}
.tp.closing{height:auto!important;min-height:0!important;padding-top:clamp(80px,12vw,160px)!important;padding-bottom:clamp(80px,12vw,160px)!important;background:var(--bg)!important;border-top:1px solid var(--line)}
.tp.closing h2{max-width:900px}
@media(max-width:700px){.tp .btns{flex-direction:row;align-items:flex-start}.tp .btns .btn{max-width:none}}
.tp .btns .btn:not(.p){background:transparent!important;color:var(--ink)!important;border:1px solid rgba(238,242,247,.55)!important}
.tp.lt .btns .btn:not(.p){color:#0A0B0E!important;border-color:#0A0B0E!important}
.stats b{font-family:Inter,Arial,sans-serif!important;font-feature-settings:"tnum" 1;letter-spacing:-.03em}
.team .card{border-top:0!important;padding-top:0!important}
@media(max-width:700px){.tp>.shade{background:linear-gradient(180deg,rgba(10,11,14,.2) 0%,rgba(10,11,14,0) 22%,rgba(10,11,14,.75) 50%,rgba(10,11,14,.96) 66%)!important}.tp .tt p{color:#E4EAF2}}
/* light sections: dark buttons, including hover */
section.light .btn:not(.p),.hero.lt .btn:not(.p),.tp.lt .btn:not(.p){background:transparent!important;color:#0A0B0E!important;border-color:#0A0B0E!important}
section.light .btn:not(.p):hover,.hero.lt .btn:not(.p):hover,.tp.lt .btn:not(.p):hover{background:#0A0B0E!important;color:#fff!important}
section.light .btn.p:hover,.hero.lt .btn.p:hover,.tp.lt .btn.p:hover{background:#2B2D31!important;color:#fff!important;border-color:#2B2D31!important}

/* ===== Press, October 2026 =====
   A press on any button replays the logo in miniature. The hairline frame powers on with a teal and orchid
   glitch and a teal to violet glow, the teal to violet scan line crosses the button, the label ahead of the
   line shows orchid machine glyphs while the real label is printed behind it, then the orchid glint crosses
   the letters. site.js drives the line and the glyphs; nothing is added to a button until it is pressed. */
:where(.wl-on){position:relative}
.wl-on{animation:wl-frame calc(.62s * var(--wl-slow,1)) linear both}
.wl-on::after{content:'';position:absolute;pointer-events:none;left:calc(0px - var(--wl-bl,1px));top:calc(0px - var(--wl-bt,1px));width:var(--wl-w,100%);height:var(--wl-h,100%);border-radius:inherit;opacity:var(--wl-o,0);background:linear-gradient(180deg,rgba(25,198,176,0),#19C6B0 18%,#2E7CF6 42%,#8B5CF6 66%,#C55BD1 84%,rgba(197,91,209,0)) calc(var(--wl-x,0px) - .75px) 0/1.5px 100% no-repeat,radial-gradient(closest-side,rgba(25,198,176,.5),rgba(139,92,246,.28) 55%,rgba(139,92,246,0)) calc(var(--wl-x,0px) - 12px) 50%/24px 150% no-repeat}
wl-m{position:absolute;pointer-events:none;-webkit-user-select:none;user-select:none;left:calc(0px - var(--wl-bl,1px));top:calc(0px - var(--wl-bt,1px));width:var(--wl-w,100%);height:var(--wl-h,100%);-webkit-mask-image:linear-gradient(90deg,transparent calc(var(--wl-x,0px) - 1px),#000 calc(var(--wl-x,0px) + 1px));mask-image:linear-gradient(90deg,transparent calc(var(--wl-x,0px) - 1px),#000 calc(var(--wl-x,0px) + 1px))}
wl-c{position:absolute;display:flex;align-items:center;justify-content:center;font-family:"JetBrains Mono",ui-monospace,monospace;font-weight:500;font-style:normal;line-height:1;letter-spacing:0;text-transform:none;color:var(--wl-g,#E2A6EA)}
wl-c::before{content:attr(data-c)}
wl-l.wl-sc{-webkit-mask-image:linear-gradient(90deg,#000 calc(var(--wl-lx,0px) - 1px),transparent calc(var(--wl-lx,0px) + 1px));mask-image:linear-gradient(90deg,#000 calc(var(--wl-lx,0px) - 1px),transparent calc(var(--wl-lx,0px) + 1px))}
wl-l.wl-gl{-webkit-text-fill-color:transparent;background:linear-gradient(120deg,var(--wl-ink) 0 40%,var(--wl-g1) 46%,var(--wl-g2) 50%,var(--wl-g1) 54%,var(--wl-ink) 60% 100%) 100% 0/300% 100% no-repeat;-webkit-background-clip:text;background-clip:text;animation:wl-tglint calc(.36s * var(--wl-slow,1)) linear both}
@keyframes wl-frame{0%{box-shadow:-4px 0 0 -1px rgba(25,198,176,.6),4px 0 0 -1px rgba(197,91,209,.5);animation-timing-function:steps(1,end)}9%{box-shadow:3px 0 0 -1px rgba(25,198,176,.45),-3px 0 0 -1px rgba(197,91,209,.4);animation-timing-function:steps(1,end)}18%{box-shadow:-1px 0 0 0 rgba(25,198,176,.4),1px 0 0 0 rgba(197,91,209,.3);animation-timing-function:cubic-bezier(.2,.7,.2,1)}32%{box-shadow:0 0 0 1px rgba(25,198,176,.85),0 0 16px 1px rgba(139,92,246,.5)}100%{box-shadow:0 0 0 1px rgba(25,198,176,0),0 0 16px 1px rgba(139,92,246,0)}}
@keyframes wl-tglint{from{background-position:100% 0}to{background-position:0 0}}
@media(prefers-reduced-motion:reduce){.wl-on{animation:none}.wl-on::after,wl-m{display:none}wl-l.wl-sc{-webkit-mask-image:none;mask-image:none}wl-l.wl-gl{animation:none;-webkit-text-fill-color:currentColor;background:none}}

/* ===== Control page, October 2026 =====
   The Control Pro instrument turns on a light band under the hero. control3d.js builds it from the product renders;
   a still of the same view shows until the model is ready, and stays if 3D is not available. */
section.s.ctl-show{padding:clamp(28px,5vw,64px) 0 clamp(36px,6vw,72px)}
.ctl3d{position:relative;width:100%;max-width:1120px;margin:0 auto;aspect-ratio:16/9}
.ctl-poster{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;transition:opacity .6s}
.ctl3d.live .ctl-poster{opacity:0}
.ctl-stage{position:absolute;inset:0;opacity:0;transition:opacity .6s}
.ctl3d.live .ctl-stage{opacity:1}
.ctl-stage canvas{display:block;width:100%!important;height:100%!important}
.ctl-cap{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px 16px;max-width:1120px;margin:10px auto 0}
.ctl-cap p{margin:0;color:#3A4352}
@media(max-width:700px){.ctl3d{aspect-ratio:4/3}}

/* ===== Robosynth, October 2026 =====
   Product renders carry the Robosynth hero, the version cards and the home tile. The band in the stages section draws
   the loop live in robosynth3d.js; a still of the same scene shows until it is ready and stays if 3D is not available.
   The --rs variables set where the loop sits in the band and how large it is. */
/* the render keeps the container on the right; a deeper shade over the left keeps the title crisp where the two meet */
@media(min-width:901px){.hero.full.rs-hero .hshade{background:linear-gradient(90deg,rgba(10,11,14,.92) 0%,rgba(10,11,14,.8) 36%,rgba(10,11,14,.38) 54%,rgba(10,11,14,0) 68%),linear-gradient(0deg,rgba(10,11,14,.9) 0%,rgba(10,11,14,0) 45%)}}
.rs-loop{position:relative;aspect-ratio:21/8;margin:0 0 clamp(36px,5vw,56px);overflow:hidden}
.rs3d{position:absolute;inset:0;z-index:0;overflow:hidden;background:#0A0B0E;--rs-fx:.5;--rs-fy:.49;--rs-fw:.74;--rs-fh:.8;--rs-ms:1;--rs-el:.42}
.rs3d picture{position:absolute;inset:0;width:100%;height:100%}
.rs3d .rs-poster{display:block;width:100%;height:100%;object-fit:cover;object-position:50% 50%;transition:opacity .8s}
.rs3d.live .rs-poster{opacity:0}
.rs-stage{position:absolute;inset:0;opacity:0;transition:opacity .8s}
.rs3d.live .rs-stage{opacity:1}
.rs-stage canvas{display:block;width:100%!important;height:100%!important}
@media(max-width:700px){.rs-loop{aspect-ratio:4/3}.rs3d{--rs-fw:.98;--rs-fh:.74;--rs-ms:1.2;--rs-el:.6}}
.rs-vimg{margin:0 0 8px;aspect-ratio:16/10;overflow:hidden;border-radius:4px;background:#0A0B0E}
.rs-vimg img{display:block;width:100%;height:100%;object-fit:cover}
.rs-sub{margin:0 0 clamp(20px,2.4vw,28px);color:var(--ink)}
.rs-mk span{display:block;margin-top:4px;font:400 12px/1.7 var(--mono);letter-spacing:.04em;text-transform:uppercase;color:var(--dim)}
section.light .rs-mk span{color:#5A6577}
.rs-cta{margin-top:clamp(48px,7vw,88px);display:flex;flex-direction:column;gap:16px}
section.light .rs-cta h3{color:#0A0B0E}
