/* STUDIO page. Deep space behind (canvas#sky, drawn in p-studio.js): stars, a slow green nebula and a planet
   whose lit edge rises at the top and bottom of the page. Solid surfaces only, no glass. */
html:has(body[data-page=studio]){--bg:#030504;--fg:#EEF1EF;--fg2:#A9B0AC;--mute:#6F7672;--line:rgba(255,255,255,.12);background:#030504}
html:has(body[data-page=studio]) .brand img{filter:invert(1)}
html:has(body[data-page=studio]) .links{background:#111614}
html:has(body[data-page=studio]) .links a:hover,html:has(body[data-page=studio]) .talk{color:#0b0d0c}
body[data-page=studio]{background:#030504 radial-gradient(120% 70% at 70% 100%,#0b2a1d 0%,#030504 60%) fixed;color:var(--fg)}
#sky{position:fixed;inset:0;width:100vw;height:100vh;z-index:0;display:block;pointer-events:none}

.so{--w:min(1320px,100% - 4rem);--g:#16C47F;--g2:#7BE8B9;position:relative;z-index:2}
.so section{width:var(--w);margin:0 auto;position:relative}
.so-eye{display:flex;align-items:center;gap:.7rem;font-size:.9rem;font-weight:500;letter-spacing:-.005em;color:#CFD6D2}
.so-eye i{position:relative;width:7px;height:7px;border-radius:50%;background:var(--g);box-shadow:0 0 12px 2px rgba(22,196,127,.55)}
.so em{font-style:normal;color:var(--g)}
.so h2,.so h3{font-weight:500}
.so-h2{font-size:clamp(2rem,3.4vw,3.3rem);line-height:1.02;letter-spacing:-.04em;max-width:18ch;margin-top:1.4rem}

/* hero */
.so-hero{min-height:clamp(620px,100svh,1100px);display:flex;flex-direction:column;justify-content:flex-end;padding:8rem 0 3.4rem}
.so-hero .so-eye{margin-bottom:1.8rem}
.so-h{font-weight:500;font-size:clamp(2.6rem,5vw,4.9rem);line-height:.98;letter-spacing:-.052em;max-width:13ch}
.so-h .ln{display:block;overflow:hidden;padding:.04em 0 .12em;margin:-.04em 0 -.12em}
.so-h .ln>span{display:inline-block;will-change:transform}
.so-hero-f{display:flex;justify-content:space-between;align-items:flex-end;gap:3rem;margin-top:2.6rem;padding-top:1.6rem;border-top:1px solid var(--line)}
.so-lede{max-width:35rem;color:var(--fg2);font-size:1.06rem;line-height:1.55}
.so-meta{display:flex;gap:1.4rem;color:#CFD6D2;font-size:.92rem;white-space:nowrap}
.so-meta span{display:flex;align-items:center;gap:1.4rem}
.so-meta span+span:before{content:'';width:4px;height:4px;border-radius:50%;background:var(--g)}

/* who we are */
.so-who{display:grid;grid-template-columns:5fr 7fr;gap:4rem;padding:22vh 0 12vh}
.so-who-l{position:relative}
.so-stats{position:sticky;top:7rem;display:grid;gap:2.6rem;margin-top:3rem}
.so-stat b{display:block;font-weight:300;font-size:clamp(3.6rem,6vw,5.8rem);line-height:.9;letter-spacing:-.06em;font-variant-numeric:tabular-nums;color:#fff}
.so-stat span{display:block;margin-top:.8rem;color:var(--fg2);font-size:.95rem;padding-top:.8rem;border-top:1px solid var(--line);max-width:14rem}
.so-quote{font-size:clamp(1.6rem,2.5vw,2.35rem);line-height:1.18;letter-spacing:-.03em;color:#fff;max-width:24ch}
.so-mis-h{display:flex;align-items:baseline;gap:1.2rem;margin-top:3.6rem}.so-mis-h h3,.so-vm h3{font-size:1rem;color:var(--g);letter-spacing:-.01em;font-weight:500}.so-mis-h p{color:var(--fg2)}
.so-mission{list-style:none;margin:1.2rem 0 0}
.so-mission li{position:relative;display:grid;grid-template-columns:minmax(9rem,14rem) 1fr;align-items:baseline;gap:1.5rem;padding:1.35rem 0;border-top:1px solid var(--line);font-size:clamp(1.25rem,1.9vw,1.7rem);letter-spacing:-.025em}
.so-mission li:last-child{border-bottom:1px solid var(--line)}
.so-mission .k{color:#fff;font-weight:500}
.so-mission .v{color:var(--fg2)}
.so-mission li:after{content:'';position:absolute;left:0;top:-1px;height:1px;width:100%;background:var(--g);transform-origin:left;transform:scaleX(var(--p,0));box-shadow:0 0 10px rgba(22,196,127,.7)}
.so-vm{display:grid;grid-template-columns:minmax(9rem,14rem) 1fr;gap:1.5rem;margin-top:3.2rem}
.so-vm p{color:var(--fg2);font-size:1.05rem;line-height:1.6;max-width:34rem}

/* how we work: a lit path through four stations */
.so-how{padding:14vh 0 10vh}
.so-path{position:relative;margin-top:6rem}
.so-line{position:absolute;inset:0;width:100%;height:100%;overflow:visible;pointer-events:none}
.so-line path{fill:none;vector-effect:non-scaling-stroke}
.so-line .base{stroke:rgba(255,255,255,.14);stroke-width:1;stroke-dasharray:2 6}
.so-line .hot{stroke:var(--g);stroke-width:2;filter:drop-shadow(0 0 6px rgba(22,196,127,.9))}
.so-steps{list-style:none;display:grid;grid-template-columns:repeat(12,1fr);row-gap:9rem;position:relative}
.so-step{position:relative;padding-left:2.4rem}
.so-step:nth-child(1){grid-column:1/6}
.so-step:nth-child(2){grid-column:7/12}
.so-step:nth-child(3){grid-column:2/7}
.so-step:nth-child(4){grid-column:8/13}
.so-step .node{position:absolute;left:0;top:.35rem;width:13px;height:13px;border-radius:50%;background:#030504;border:1.5px solid rgba(255,255,255,.4);transition:background .6s,border-color .6s,box-shadow .6s}
.so-step.on .node{background:var(--g);border-color:var(--g);box-shadow:0 0 0 6px rgba(22,196,127,.16),0 0 22px 4px rgba(22,196,127,.6)}
.so-step .n{display:block;color:var(--g);font-size:.95rem;font-weight:500;font-variant-numeric:tabular-nums;margin-bottom:.9rem}
.so-step h3{font-size:clamp(1.5rem,2.2vw,2.1rem);letter-spacing:-.035em;line-height:1.05;margin-bottom:.9rem}
.so-step p{color:var(--fg2);line-height:1.6;max-width:27rem}

/* approach: rows that fill green under the cursor */
.so-why{padding:16vh 0 8vh}
.so-why-h{display:flex;justify-content:space-between;align-items:flex-end;gap:2rem;margin-bottom:3.4rem}
.so-why-h .so-h2{margin-top:0;max-width:none}
.so-why-h{flex-direction:column;align-items:flex-start;gap:1.4rem}
.so-vals{list-style:none;border-bottom:1px solid var(--line)}
.so-vals li{position:relative;display:grid;grid-template-columns:minmax(12rem,1fr) 1.1fr;align-items:baseline;gap:2rem;padding:2.2rem 1.4rem;border-top:1px solid var(--line);overflow:hidden;isolation:isolate}
.so-vals li:before{content:'';position:absolute;inset:0;z-index:-1;background:var(--g);transform:scaleY(0);transform-origin:bottom;transition:transform .7s var(--e)}
.so-vals li:hover:before{transform:scaleY(1)}
.so-vals li>*{transition:color .5s var(--e),transform .7s var(--e)}
.so-vals li:hover>*{color:#04140c}
.so-vals li:hover h3{transform:translateX(.6rem)}
.so-vals .n{color:var(--g);font-weight:500;font-variant-numeric:tabular-nums}
.so-vals h3{font-size:clamp(1.6rem,2.7vw,2.6rem);letter-spacing:-.04em;line-height:1}
.so-vals p{color:var(--fg2);line-height:1.55;max-width:28rem}

/* industries: two slow rivers of names */
.so-ind{padding:16vh 0 6vh}
.so.so section.so-ind{width:100%}
.so-ind-h{width:var(--w);margin:0 auto 3.6rem;display:flex;justify-content:space-between;align-items:flex-end;gap:2rem}
.so-ind-p{color:var(--fg2);max-width:22rem;text-align:right}
.so-marq{display:none;border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:1.4rem 0;overflow:hidden}
.mq-on .so-marq{display:block}
.so-mq{overflow:hidden;white-space:nowrap}
.so-mq+.so-mq{margin-top:.6rem}
.so-mq-t{display:inline-flex;align-items:center;will-change:transform}
.so-mq-t span{display:inline-flex;align-items:center;gap:2.6rem;padding-right:2.6rem;font-size:clamp(2rem,4.2vw,4rem);font-weight:300;letter-spacing:-.045em;color:#E9EDEB}
.so-mq.rev .so-mq-t span{color:transparent;-webkit-text-stroke:1px rgba(233,237,235,.45)}
.so-mq-t span:after{content:'';width:.22em;height:.22em;background:var(--g);transform:rotate(45deg);box-shadow:0 0 14px rgba(22,196,127,.8)}
.so-ind-list{width:var(--w);margin:0 auto;list-style:none;display:grid;grid-template-columns:repeat(4,1fr);gap:.2rem 2rem}
.so-ind-list li{padding:.9rem 0;border-top:1px solid var(--line);font-size:1.1rem;color:#E9EDEB}
.mq-on .so-ind-list{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}

/* the end: the planet's edge comes back up */
.so-end{min-height:clamp(600px,92vh,1000px);display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:16vh 0 22vh}
.so-end-h{font-size:clamp(2.4rem,4.8vw,4.8rem);line-height:1;letter-spacing:-.05em;margin:1.6rem 0 1.6rem}
.so-end-p{color:var(--fg2);max-width:32rem;line-height:1.55}
.so-end-b{display:flex;align-items:center;gap:2rem;margin-top:2.6rem}
.so-btn{display:inline-flex;align-items:center;gap:1rem;background:var(--g);color:#03130b;padding:.55rem .6rem .55rem 1.6rem;border-radius:99px;font-weight:500;font-size:1rem;box-shadow:0 10px 40px -10px rgba(22,196,127,.7);transition:box-shadow .5s var(--e)}
.so-btn i{display:grid;place-items:center;width:2.6rem;height:2.6rem;border-radius:50%;background:#03130b;color:var(--g);font-style:normal;transition:transform .6s var(--e)}
.so-btn:hover{box-shadow:0 16px 60px -8px rgba(22,196,127,.95)}
.so-btn:hover i{transform:rotate(-45deg)}
.so-ghost{position:relative;color:#E9EDEB;font-weight:500;padding:.3rem 0}
.so-ghost:after{content:'';position:absolute;left:0;right:0;bottom:0;height:1px;background:currentColor;transform-origin:right;transition:transform .6s var(--e)}
.so-ghost:hover:after{transform:scaleX(0)}
.so a:focus-visible{outline:2px solid var(--g);outline-offset:4px;border-radius:6px}

@media (max-width:900px){
  .so{--w:calc(100% - 2.5rem)}
  .so-hero{padding:7rem 0 2.4rem}
  .so-h{font-size:clamp(2.35rem,10.5vw,3.4rem)}
  .so-hero-f{flex-direction:column;align-items:flex-start;gap:1.4rem;margin-top:2rem}
  .so-meta{gap:1rem;font-size:.85rem}.so-meta span{gap:1rem}
  .so-who{grid-template-columns:1fr;gap:2.4rem;padding:14vh 0 8vh}
  .so-stats{position:static;grid-template-columns:1fr 1fr;gap:1.4rem;margin-top:2rem}
  .so-mission li{grid-template-columns:1fr;gap:.2rem;padding:1rem 0}
  .so-vm{grid-template-columns:1fr;gap:.7rem}.so-mis-h{flex-direction:column;gap:.4rem}
  .so-path{margin-top:3.4rem}
  .so-steps{grid-template-columns:1fr;row-gap:3.6rem}
  .so-step:nth-child(n){grid-column:1/-1}
  .so-vals li{grid-template-columns:1fr;gap:.6rem 1rem;padding:1.6rem .4rem}
  .so-vals p{grid-column:1}
  .so-ind-h{flex-direction:column;align-items:flex-start;gap:1rem}
  .so-ind-p{text-align:left}
  .so-ind-list{grid-template-columns:1fr 1fr}
  .so-end{min-height:80vh}
  .so-end-b{flex-direction:column;gap:1.4rem}
}
@media (prefers-reduced-motion:reduce){.so-vals li:before,.so-vals li>*{transition:none}}
