
@font-face{font-family:'BebasSketch';src:url('/static/green/08e4623805102d819f58601e46e345648846075e363b2ceb23313c2d1c83ec73.ttf') format('truetype');font-display:swap;}
@font-face{font-family:'JBMono';src:url('/static/green/48715a42ec242c21e9f02692891e147d022299a52e48d5e413e1a942193ffeda.ttf') format('truetype');font-display:swap;}
:root{
  --fxposter:url("/static/green/489e14d4ed2fe6ad7284334f4c82244687dfb0d166ea6429aa683328e147c469.jpg");
  --head:url("/static/green/645de8511448c297019f2f4103d8a8707f035008d745d1e6b8aa606fe1f6ed1e.png");
  --ink:#0d0d10;--ink2:#15151b;--paper:#f4f1ea;--red:#c8322b;--redtxt:#ff6b5e;--green:#9fe870;
  --line:#2a2a33;--wire:#565664;--dim:#9a9aa4;
  --display:'BebasSketch','Bebas Neue','Oswald','Impact','Haettenschweiler','Arial Narrow Bold',sans-serif;
  --mono:'JBMono','JetBrains Mono',ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
  --hw:clamp(230px,min(28vw,40svh),340px);
}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-padding-top:var(--chrome-h,112px)}
body{font-family:var(--mono);background:var(--ink);color:var(--paper);line-height:1.55;font-size:14px}
a{color:inherit}
h1,h2,h3,.bt{font-family:var(--display);font-weight:400;letter-spacing:.03em;line-height:1.05}
:focus-visible{outline:3px solid var(--redtxt);outline-offset:3px}
.vh{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
html:not(.js) .js-only{display:none!important}

/* ---------- the head: exact approved PNG, transparent margin cropped by CSS only ---------- */
.face{position:relative;aspect-ratio:692/634;overflow:hidden;display:block}
.face::before{content:"";position:absolute;left:-23.12%;top:-73.82%;width:147.98%;aspect-ratio:1024/1536;
  background:var(--head) 0 0/100% 100% no-repeat}
/* pulse: hover + focus only, one short ease, never a loop, never on load */
.pulse .face{transition:transform .18s ease-out}
.pulse:hover .face,.pulse:focus-visible .face{transform:scale(1.03)}
@media (prefers-reduced-motion:reduce){*,*::before,*::after{transition:none!important;animation:none!important}.pulse:hover .face,.pulse:focus-visible .face{transform:none}}
.rm *,.rm *::before,.rm *::after{transition:none!important;animation:none!important}
.rm .pulse:hover .face,.rm .pulse:focus-visible .face{transform:none}

/* ---------- chrome: direct nav, always ---------- */
#chrome{position:sticky;top:0;z-index:50;background:#000e;border-bottom:1px solid var(--line);
  display:flex;align-items:center;gap:10px;padding:6px 12px;flex-wrap:wrap}
.brand{display:inline-flex;align-items:center;gap:8px;text-decoration:none;min-height:44px;padding:0 4px}
.brand .face{width:38px}
.brand .wm{font-size:13px;letter-spacing:.02em}.brand .wm b{color:var(--green)}
#chrome nav{flex:1 1 auto;min-width:0}
#chrome nav ul{list-style:none;display:flex;gap:6px;align-items:center}
#chrome nav a{display:inline-flex;align-items:center;min-height:44px;padding:0 12px;border:1px solid var(--line);
  text-decoration:none;font-size:12px;white-space:nowrap;color:#cfcfd6}
#chrome nav a:hover{border-color:var(--green);color:#fff}
#chrome nav a[aria-current="page"]{background:var(--green);border-color:var(--green);color:var(--ink);font-weight:700}
#chrome nav a.cta{background:var(--red);border-color:var(--red);color:#fff;font-weight:700}
#backBtn{min-height:44px;padding:0 12px;font:inherit;font-size:12px;background:none;color:var(--paper);border:1px solid var(--line);cursor:pointer}
#backBtn:disabled{opacity:.3;cursor:default}
.privtag{font-size:9px;letter-spacing:.12em;color:var(--dim)}
@media (max-width:860px){
  #chrome{gap:6px}
  .brand .wm{display:none}
  #chrome nav{order:5;flex-basis:100%;position:relative}
  #chrome nav ul{overflow-x:auto;scrollbar-width:none;padding-bottom:2px}
  #chrome nav ul::-webkit-scrollbar{display:none}
  /* scroll affordance: edge fade + chevron says "more this way"; never intercepts taps.
     Right cap hides at the end of the row, left fade appears once scrolled. No-JS: right cap stays (static hint). */
  #chrome nav::before,#chrome nav::after{content:"";position:absolute;top:0;bottom:2px;pointer-events:none;transition:opacity .15s ease}
  #chrome nav::before{left:0;width:28px;background:linear-gradient(270deg,transparent,#000 80%);opacity:0}
  #chrome nav::after{right:0;width:56px;content:"›";display:flex;align-items:center;justify-content:flex-end;padding-right:6px;
    font-size:26px;line-height:1;color:var(--green);background:linear-gradient(90deg,transparent,#000 55%);opacity:1}
  #chrome nav.scrolled::before{opacity:1}
  #chrome nav.at-end::after,#chrome nav.no-overflow::after{opacity:0}
  .privtag{margin-left:auto}
}

/* ---------- scenes ---------- */
.scene{padding:36px 5vw 64px;border-top:1px solid var(--line)}
.js .scene{display:none;border-top:0;min-height:calc(100svh - var(--chrome-h,60px))}
.js .scene.on{display:block}
.scene>h2,.room-head h2{font-size:clamp(34px,5vw,52px);color:#fff}
.privacy{font-size:10px;color:var(--redtxt);letter-spacing:.1em;margin:4px 0 18px}
.kv{font-size:12px;color:var(--dim)}
.lede{font-size:15px;max-width:62ch;color:#dcdce2}
.btn{display:inline-flex;align-items:center;gap:8px;min-height:48px;padding:0 22px;border:2px solid var(--red);background:var(--red);
  color:#fff;text-decoration:none;font-family:var(--display);font-size:21px;letter-spacing:.05em;cursor:pointer}
.btn.ghost{background:transparent;color:var(--paper)}
.btn:hover{filter:brightness(1.12)}
.row{display:flex;gap:12px;flex-wrap:wrap;align-items:center}
.panel{background:var(--ink2);border:1px solid var(--line);padding:20px}

/* room header with a mini head: the dot marks which port of the head you came through */
.room-head{display:flex;align-items:center;gap:16px;flex-wrap:wrap}
.minihead{position:relative;display:block;width:64px;flex:none;text-decoration:none;padding:6px}
.minihead .face{width:100%}
.minihead::after{content:"";position:absolute;width:10px;height:10px;background:var(--green);box-shadow:0 0 0 3px #9fe87033}
.minihead[data-port=w]::after{left:-4px;top:calc(6px + 41%)}
.minihead[data-port=e]::after{right:-4px;top:calc(6px + 41%)}
.minihead[data-port=s]::after{left:calc(50% - 5px);bottom:-4px}
.minihead[data-port=n]::after{left:calc(6px + 26%);top:-4px}
.portname{font-size:11px;color:var(--green);letter-spacing:.06em}

/* ---------- HOME: the head is the map ---------- */
#home{text-align:center;padding-top:24px}
#home h1{font-size:clamp(30px,4vw,48px);color:#fff;max-width:24ch;margin:0 auto}
#home .hint{margin:6px auto 14px;font-size:12px;color:var(--dim)}
#home .hint b{color:var(--green);font-weight:400}
.map{display:grid;grid-template-columns:1fr var(--hw) 1fr;grid-template-areas:"n n n" "w h e" ". s .";
  max-width:1100px;margin:0 auto;justify-items:stretch}
.cell-n{grid-area:n;display:flex;justify-content:center;gap:clamp(16px,6vw,90px)}
.cell-w{grid-area:w;display:flex;justify-content:flex-end;align-items:flex-start;padding-top:calc(var(--hw)*.429 - 24px)}
.cell-e{grid-area:e;display:flex;justify-content:flex-start;align-items:flex-start;padding-top:calc(var(--hw)*.429 - 24px)}
.cell-s{grid-area:s;display:flex;justify-content:center}
.cell-h{grid-area:h;position:relative}
.headbtn{display:block;width:100%;background:none;border:0;cursor:pointer;padding:0;color:inherit}
.port{display:flex;align-items:center;text-decoration:none;color:var(--paper)}
.cell-n .port{flex-direction:column}
.cell-s .port{flex-direction:column-reverse}
.cell-e .port{flex-direction:row-reverse}
.chipwrap{display:flex;flex-direction:column;align-items:center;gap:3px}
.chip{display:inline-flex;align-items:center;gap:9px;min-height:48px;padding:0 16px;border:2px solid var(--green);
  background:var(--ink);font-size:14px;white-space:nowrap}
.chip .sq{width:10px;height:10px;background:var(--green);flex:none}
.port.ext .chip{border-color:var(--red)}.port.ext .chip .sq{background:var(--red)}
.port:hover .chip,.port:focus-visible .chip{background:var(--green);color:var(--ink)}
.port.ext:hover .chip,.port.ext:focus-visible .chip{background:var(--red);color:#fff}
.port:focus-visible{outline:none}.port:focus-visible .chip{outline:3px solid var(--redtxt);outline-offset:3px}
.sub{font-size:10px;color:#c9c9cf;letter-spacing:.02em;max-width:24ch;min-height:16px}
/* HIDDEN AT REST (owner 2026-10-29 09:47): chips, wires, pads and the mobile spine appear only once the head
   opens the map. visibility:hidden also removes closed links from the tab order and the accessibility tree.
   Space stays reserved, so revealing never shifts layout. No-JS (.js absent) = static open map. */
.map{position:relative}
.js .map .port{transition:opacity .2s ease,visibility 0s linear 0s}
.js .map:not(.open) .port{opacity:0;visibility:hidden;transition:opacity .2s ease,visibility 0s linear .2s}
.map>div{position:relative;z-index:1}
/* Higgsfield circuit motion: background only while the map is open; never UI, never the head */
.map>.map-fx{position:absolute;inset:-8% 0;z-index:0;pointer-events:none;opacity:0;transition:opacity .35s ease;
  -webkit-mask-image:radial-gradient(ellipse at 50% 55%,#000 30%,transparent 72%);mask-image:radial-gradient(ellipse at 50% 55%,#000 30%,transparent 72%)}
.map-fx video{display:block;width:100%;height:100%;object-fit:cover}
.map.open>.map-fx{opacity:.42}
.fx-off .map>.map-fx,.fx-off #cut{display:none}
.sub{text-shadow:0 0 4px #000,0 0 2px #000}
/* route cut: a few hundred ms of circuit glow between scenes; never blocks input, sits under the nav */
#cut{position:fixed;inset:0;z-index:45;pointer-events:none;opacity:0;background:#000 var(--fxposter) center/cover no-repeat;mix-blend-mode:screen}
#cut.go{animation:routecut .32s ease-out}
@keyframes routecut{0%{opacity:0}30%{opacity:.5}100%{opacity:0}}
.wire{background:var(--wire);flex:none;position:relative;transition:background .2s ease,box-shadow .2s ease}
.cell-w .port,.cell-e .port{align-items:flex-start}
.cell-w .wire,.cell-e .wire{height:3px;width:clamp(28px,5vw,72px);margin-top:22.5px}
.cell-n .wire,.cell-s .wire{width:3px;height:34px}
.wire::after{content:"";position:absolute;width:10px;height:10px;background:#3a3a44;border:2px solid var(--wire)}
.cell-w .wire::after{right:-5px;top:-3.5px}.cell-e .wire::after{left:-5px;top:-3.5px}
.cell-n .wire::after{bottom:-5px;left:-3.5px}.cell-s .wire::after{top:-5px;left:-3.5px}
.map.open .wire,.port:hover .wire,.port:focus-visible .wire{background:var(--green);box-shadow:0 0 8px #9fe87066}
.port.ext:hover .wire,.port.ext:focus-visible .wire,.map.open .port.ext .wire{background:var(--red);box-shadow:0 0 8px #c8322b66}
/* circuit progression: a visited room lights its landmark pad */
.port.lit .wire::after{background:var(--green);border-color:var(--green)}
.progress{margin:16px auto 0;display:flex;gap:10px;justify-content:center;align-items:center;flex-wrap:wrap;font-size:11px;color:var(--dim)}
.progress ol{list-style:none;display:flex;gap:6px}
.progress li{width:14px;height:14px;border:2px solid var(--wire)}
.progress li.lit{background:var(--green);border-color:var(--green)}
#home .row{justify-content:center;margin-top:16px}
.keys{margin-top:16px;font-size:11px;color:var(--dim)}
@media (max-width:720px){
  :root{--hw:min(60vw,260px)}
  .map{grid-template-columns:1fr;grid-template-areas:"h" "w" "e" "s" "n";justify-items:stretch;position:relative;max-width:480px}
  .cell-h{justify-self:center;width:var(--hw);margin-bottom:10px}
  .cell-w,.cell-e,.cell-s,.cell-n{padding:0;justify-content:flex-start;align-items:stretch;flex-direction:column;gap:0}
  .port{width:100%}
  .map::before{content:"";position:absolute;left:22px;top:calc(var(--hw)*.9);bottom:30px;width:3px;background:var(--wire)}
  .map.open::before{background:var(--green)}
  .map::before{transition:opacity .2s ease}
  .js .map:not(.open)::before{opacity:0}
  .port,.cell-n .port,.cell-s .port,.cell-e .port,.cell-w .port{flex-direction:row-reverse;align-items:flex-start;padding:6px 0}
  .port .wire,.cell-n .port .wire,.cell-s .port .wire,.cell-w .port .wire,.cell-e .port .wire{width:34px;height:3px;margin:24.5px 0 0 23px}
  .port .wire::after,.cell-n .port .wire::after,.cell-s .port .wire::after,.cell-e .port .wire::after{left:-6px;top:-3.5px;right:auto;bottom:auto}
  .chipwrap{align-items:flex-start;text-align:left;flex:1}
  .chip{width:100%;min-height:52px}
  .sub{max-width:none;padding-left:2px}
}

/* ---------- AUTOMATE: example explorer ---------- */
.room-grid{display:grid;grid-template-columns:1.05fr .95fr;gap:20px;margin-top:18px}
@media (max-width:820px){.room-grid{grid-template-columns:1fr}}
.steps{list-style:none;counter-reset:s;display:grid;gap:8px}
.steps li{counter-increment:s;border:1px solid var(--line);padding:12px 14px 12px 50px;position:relative;background:#111116}
.steps li::before{content:counter(s);position:absolute;left:12px;top:10px;width:26px;height:26px;display:grid;place-items:center;
  border:2px solid var(--wire);font-size:12px}
.js .steps li{opacity:.4}
.js .steps li.done{opacity:.85}.js .steps li.done::before{background:var(--green);border-color:var(--green);color:var(--ink)}
.js .steps li.now{opacity:1;border-color:var(--green)}.js .steps li.now::before{border-color:var(--green);color:var(--green)}
.sim-label{display:inline-block;font-size:10px;letter-spacing:.12em;background:var(--red);color:#fff;padding:3px 8px;margin-bottom:10px}
.simctl{margin-top:14px}
.simctl button{min-height:44px;padding:0 14px;font:inherit;font-size:12px;cursor:pointer;border:2px solid var(--green);background:var(--ink);color:var(--paper)}
.simctl button.go{background:var(--green);color:var(--ink);font-weight:700}
.simctl button:disabled{opacity:.35;cursor:default}
.screen{border:2px solid var(--line);background:#08080b;padding:18px;min-height:280px;display:flex;flex-direction:column;gap:10px}
.screen .bar{display:flex;justify-content:space-between;font-size:10px;color:var(--dim);letter-spacing:.1em}
.msg{border:1px solid var(--line);padding:10px 12px;font-size:13px;background:#121218}
.msg.call{border-color:var(--green)}.msg.miss{border-color:var(--redtxt)}
.msg.reply{border-color:var(--green);background:#13200e}
.msg.review{border:2px dashed var(--green)}
.msg small{display:block;font-size:10px;color:var(--dim);letter-spacing:.06em;margin-bottom:3px}

/* ---------- LAB ---------- */
.filters{display:flex;gap:8px;flex-wrap:wrap;margin:14px 0 6px}
.filters button{min-height:44px;padding:0 14px;font:inherit;font-size:12px;border:1px solid var(--line);background:var(--ink2);color:var(--paper);cursor:pointer}
.filters button[aria-pressed="true"]{background:var(--green);border-color:var(--green);color:var(--ink);font-weight:700}
#shopCount{font-size:11px;color:var(--dim);margin-bottom:12px}
.shopgrid{list-style:none;display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px}
.pcard{border:1px solid var(--line);background:var(--ink2);display:flex;flex-direction:column;padding:14px;gap:6px;position:relative}
.pcard[hidden]{display:none}
.pcard::before{content:"";height:4px;margin:-14px -14px 6px;background:var(--wire)}
.pcard[data-cat=mug]::before{background:#d9a441}.pcard[data-cat=apparel]::before{background:var(--green)}.pcard[data-cat=tech]::before{background:var(--redtxt)}
.pk{font-size:10px;letter-spacing:.08em;color:var(--dim);text-transform:uppercase}
.pcard h3{font-family:var(--mono);font-size:13px;font-weight:700;letter-spacing:0;line-height:1.35;color:#fff}
.pp{font-size:13px;color:var(--green);font-weight:700}
.pa{margin-top:auto;display:flex;gap:6px;padding-top:6px}
.pa button,.pa a{min-height:44px;display:inline-flex;align-items:center;padding:0 12px;font:inherit;font-size:12px;
  border:1px solid var(--line);background:var(--ink);color:var(--paper);text-decoration:none;cursor:pointer}
.pa button{flex:1;justify-content:center;border-color:var(--green)}
.pa button:hover{background:var(--green);color:var(--ink)}.pa a:hover{border-color:var(--red)}
dialog#qv{margin:0 0 0 auto;height:100%;max-height:none;width:min(460px,100vw);background:#101014;color:var(--paper);
  border:0;border-left:3px solid var(--red);padding:20px;overflow-y:auto}
dialog#qv::backdrop{background:#000b}
.qvtop{display:flex;justify-content:space-between;align-items:center;gap:10px}
#qvClose{min-height:44px;padding:0 14px;font:inherit;font-size:12px;background:none;color:var(--paper);border:1px solid var(--line);cursor:pointer}
.qvplate{margin:14px 0;aspect-ratio:4/3;border:1px solid var(--line);display:grid;place-items:center;text-align:center;padding:18px;
  background:repeating-linear-gradient(135deg,#15151b 0 14px,#121217 14px 28px)}
.qvplate span{font-size:10px;color:var(--dim);letter-spacing:.08em;max-width:30ch}
.qvplate b{display:block;font-family:var(--display);font-weight:400;font-size:30px;color:#fff;margin-bottom:6px;line-height:1}
#qvTitle{font-size:30px;color:#fff}
#qvPrice{color:var(--green);font-weight:700;font-size:18px;margin:4px 0 10px}
#qv p{font-size:13px;color:#cfcfd6;margin-bottom:10px}
#qv .fine{font-size:11px;color:var(--dim)}
#qvBuy{width:100%;justify-content:center;font-size:19px;white-space:nowrap}

/* ---------- FRANK + FAQ ---------- */
.faq{margin-top:26px;max-width:760px}
.faq h3{font-size:28px;color:#fff;margin-bottom:10px}
.faq details{border:1px solid var(--line);background:var(--ink2);margin-bottom:8px}
.faq summary{min-height:48px;display:flex;align-items:center;gap:12px;padding:10px 16px;cursor:pointer;list-style:none;font-size:14px}
.faq summary::-webkit-details-marker{display:none}
.faq summary::before{content:"+";width:20px;height:20px;display:grid;place-items:center;border:2px solid var(--green);color:var(--green);flex:none;font-size:13px}
.faq details[open] summary::before{content:"−";background:var(--green);color:var(--ink)}
.faq details>div{padding:0 16px 14px 48px;font-size:13px;color:#cfcfd6}

/* ---------- CONTACT ---------- */
.contacts{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:14px;margin-top:18px;max-width:900px}
.contacts .panel h3{font-size:24px;color:#fff;margin-bottom:6px}
.gap{border:2px dashed #ffb84d;background:#1a150c}
.gap h3{color:#ffb84d!important}
.nextstop{margin-top:30px;padding-top:16px;border-top:1px solid var(--line)}

.product-image{display:block;width:100%;aspect-ratio:1;object-fit:contain;background:#eee}
.qvplate img{display:block;width:100%;max-height:300px;object-fit:contain}

/* ================= 12:34 REVISION: current pages behind the entrance + Lab groups ================= */
#chrome nav a.in-section{border-color:var(--green);color:#fff}
/* site directory under the entrance — mirrors the live footer's own grouping */
.sitedir{max-width:980px;margin:34px auto 0;text-align:left;border-top:1px solid var(--line);padding-top:18px}
.sitedir h2{font-size:26px;color:#fff;margin-bottom:4px}
.sitedir .cols{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:14px;margin-top:12px}
.sitedir h3{font-family:var(--mono);font-size:11px;letter-spacing:.1em;color:var(--green);margin-bottom:6px}
.sitedir ul{list-style:none;display:grid;gap:6px}
.sitedir a{display:flex;align-items:center;min-height:44px;padding:0 12px;border:1px solid var(--line);text-decoration:none;font-size:13px;background:var(--ink2)}
.sitedir a:hover,.sitedir a:focus-visible{border-color:var(--green);color:#fff}
.sitedir a small{margin-left:auto;padding-left:10px;font-size:10px;color:var(--dim)}
.related{margin-top:22px;border:1px solid var(--line);padding:14px;background:#101014;max-width:900px}
.related p{font-size:11px;letter-spacing:.1em;color:var(--green);margin-bottom:8px}
.related ul{list-style:none;display:flex;flex-wrap:wrap;gap:8px}
.related a{display:inline-flex;align-items:center;min-height:44px;padding:0 12px;border:1px solid var(--line);text-decoration:none;font-size:12px}
.related a:hover,.related a:focus-visible{border-color:var(--green)}
.minihead[data-port=c]::after{display:none}
.snapnote{margin-top:18px}
/* verbatim snapshots of the live pages, in the prototype's theme (classes are prefixed s-) */
.snap{max-width:1000px;margin-top:6px;color:#dcdce2;font-size:14px}
.snap a{color:var(--green)}
.snap h2,.snap h3,.snap h4,.snap h5{color:#fff;margin:18px 0 8px}
.snap h2{font-size:clamp(28px,4vw,42px)}.snap h3{font-size:26px}.snap h4{font-size:20px}.snap h5{font-size:17px}
.snap p{margin:0 0 10px;max-width:72ch}
.snap ul,.snap ol{margin:0 0 12px 20px}
.snap li{margin-bottom:6px}
.snap code{font-family:var(--mono);font-size:12px;color:#fff}
.snap .pubimg{display:inline-block;flex:none;vertical-align:middle;background:center/contain no-repeat;margin:0 12px 8px 0}
.snap .s-section{padding:18px 0;border-top:1px solid var(--line)}
.snap .s-section--alt{background:#111116;padding:18px 14px}
.snap .s-eyebrow,.snap .s-card-kicker,.snap .s-path-label,.snap .s-service-label,.snap .s-panel-title{display:block;font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--green);margin-bottom:6px}
.snap .s-lead{font-size:15px;color:#e6e6ea}
.snap .s-grid,.snap .s-services-grid,.snap .s-principles,.snap .s-arch,.snap .s-hero-grid,.snap .s-contact-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:12px}
.snap .s-card,.snap .s-service-card,.snap .s-principle,.snap .s-panel,.snap .s-callout,.snap .s-project,.snap .s-aside-card,.snap .s-arch>div{background:var(--ink2);border:1px solid var(--line);padding:16px;display:block;text-decoration:none;color:inherit;margin-bottom:10px}
.snap a.s-card:hover,.snap a.s-card:focus-visible{border-color:var(--green)}
.snap .s-notice{border-left:3px solid var(--green);background:#13200e;padding:12px 14px;margin:12px 0}
.snap .s-provenance-banner{border-left-color:#ffb84d;background:#1a150c}
.snap .s-steps,.snap .s-numbered,.snap .s-timeline,.snap .s-ticks,.snap .s-fix-rows{list-style:none;margin-left:0}
.snap .s-steps,.snap .s-numbered{counter-reset:sn}
.snap .s-steps>li,.snap .s-numbered>li{counter-increment:sn;position:relative;padding:10px 12px 10px 46px;border:1px solid var(--line);margin-bottom:8px;background:#111116}
.snap .s-steps>li::before,.snap .s-numbered>li::before{content:counter(sn);position:absolute;left:12px;top:10px;width:24px;height:24px;display:grid;place-items:center;border:2px solid var(--green);color:var(--green);font-size:12px}
.snap .s-steps h4{margin-top:0}
.snap .s-numbered strong,.snap .s-numbered span{display:block}
.snap .s-timeline>li{display:grid;grid-template-columns:120px 1fr;gap:12px;padding:10px 0;border-top:1px solid var(--line)}
.snap .s-timeline time{color:var(--green);font-size:12px}
.snap .s-ticks>li{padding-left:20px;position:relative}
.snap .s-ticks>li::before{content:"■";position:absolute;left:0;top:3px;color:var(--green);font-size:10px}
.snap .s-row{display:grid;grid-template-columns:minmax(160px,240px) 1fr;gap:18px;padding:16px 0;border-top:1px solid var(--line)}
.snap .s-row>h3{margin-top:0}
.snap .s-btn{display:inline-flex;align-items:center;min-height:44px;padding:0 16px;border:2px solid var(--green);color:var(--paper);text-decoration:none;margin:4px 8px 4px 0}
.snap .s-btn-primary,.snap .s-btn-lime{background:var(--green);color:var(--ink)}
.snap .s-link-arrow{display:inline-flex;align-items:center;min-height:44px}
.snap .s-actions{margin:10px 0}
.snap .s-cta-band{border:1px solid var(--line);background:#101014;padding:18px;margin-top:18px}
.snap .s-fine,.snap .s-muted,.snap .s-small,.snap .s-legal-meta,.snap .s-legal-foot,.snap .s-control,.snap .s-next{font-size:12px;color:var(--dim)}
.snap .s-fix-head{display:none}
.snap .s-fix-rows li{display:grid;grid-template-columns:1fr auto 1.4fr;gap:10px;padding:6px 0;border-top:1px dashed var(--line)}
.snap .s-arrow{color:var(--green)}.snap .s-from{color:var(--dim)}
.snap .s-tech-tags{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}
.snap .s-tech-tag{font-size:11px;border:1px solid var(--line);padding:2px 8px}
.snap .s-project-status,.snap .s-historical{font-size:11px;border:1px solid #ffb84d;color:#ffb84d;padding:1px 6px;margin-left:6px;font-family:var(--mono);letter-spacing:.06em;vertical-align:middle}
.snap .s-project-status--live{border-color:var(--green);color:var(--green)}
.snap .s-tagline{color:var(--green)}
.snap details{border:1px solid var(--line);background:var(--ink2);margin:10px 0}
.snap summary{min-height:48px;display:flex;align-items:center;padding:10px 14px;cursor:pointer}
.snap summary span{display:block;font-size:12px;color:var(--dim)}
.snap details>div{padding:0 16px 14px}
.snap blockquote{border-left:3px solid var(--green);padding-left:12px;margin:10px 0;color:#fff}
.snap .s-aside-card{display:flex;gap:12px}
.snap .s-sr-only{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.snap dl>div{display:grid;grid-template-columns:minmax(0,160px) minmax(0,1fr);gap:10px;padding:8px 0;border-top:1px solid var(--line)}
.snap dt{color:var(--dim)}
/* QA fix (768px /contact): long addresses must wrap inside their track instead of widening the page */
.snap dt,.snap dd,.snap .s-grid>*,.snap .s-contact-grid>*,.snap .s-row>*{min-width:0}
.snap dd,.snap a,.snap code{overflow-wrap:anywhere}
.snap .s-legal-body{max-width:78ch}.snap .s-legal-body h4{font-size:20px}
@media (max-width:720px){.snap .s-row,.snap .s-timeline>li,.snap dl>div{grid-template-columns:1fr}.snap .s-fix-rows li{grid-template-columns:1fr}}
.formcontract{border:2px dashed #ffb84d;background:#1a150c;padding:16px;margin:14px 0;max-width:760px}
.formcontract .fc-h{font-size:10px;letter-spacing:.12em;color:#ffb84d}
.formcontract .fc-sub{font-size:12px;color:var(--dim);margin-top:8px}
.formcontract .btn{font-size:18px}
.snapmerge{margin-top:28px;border-top:1px solid var(--line);padding-top:18px}
.snapmerge>h3{font-size:30px;color:#fff}
/* Lab groups: seven live LMBF designs first; legacy + resources are explicit secondary views */
.catswitch{display:flex;gap:8px;flex-wrap:wrap;margin:16px 0 4px}
.catswitch button{min-height:44px;padding:0 14px;font:inherit;font-size:12px;border:1px solid var(--line);background:var(--ink2);color:var(--paper);cursor:pointer}
.catswitch button[aria-pressed="true"]{background:var(--green);border-color:var(--green);color:var(--ink);font-weight:700}
.labgroup{margin-top:14px}
.grouph{font-size:30px;color:#fff;margin-bottom:4px}
.lcard{border:1px solid var(--line);background:var(--ink2);display:flex;flex-direction:column;padding:14px;gap:6px;position:relative}
.lcard::before{content:"";height:4px;margin:-14px -14px 6px;background:var(--green)}
.lcard h3{font-family:var(--mono);font-size:13px;font-weight:700;letter-spacing:0;line-height:1.35;color:#fff}
.pv,.pav{font-size:11px;color:var(--dim)}
.pav[data-state=available]{color:var(--green)}.pav[data-state=unavailable],.pav[data-state=not_found]{color:var(--redtxt)}
.qvh{font-size:10px!important;letter-spacing:.12em;color:var(--green)!important;margin:12px 0 6px!important}
.vt{width:100%;border-collapse:collapse;font-size:12px}
.vt th,.vt td{text-align:left;padding:5px 6px;border-bottom:1px solid var(--line)}
.vt th{color:var(--dim);font-weight:400}
.qvdesc ul{margin:0 0 8px 18px;font-size:12px;color:#cfcfd6}
.qvdesc a{color:var(--green)}
/* real public page images: one embedded copy each, referenced by class */
.pub-2ab9909404{background-image:url("/static/green/49aa56a6a1fdf040c1a6517b909041a3c74a1af7259259c90102dba0f76dc2db.png")}
.pub-5c748880ef{background-image:url("/static/green/79a4221812e1d663de9a9fd702fe7828770772a55d48811bfbac4a71c7843aad.png")}
.pub-63ec549c15{background-image:url("/static/green/a56f44358b2e9086c7cc3d1b1daf2b7d516af3542132f9876af7fe11839781be.png")}
.pub-754200931d{background-image:url("/static/green/bd6698e4602e4c69b84de7b735ec0ad025c8600d4e19778d732ef0bee0d89030.png")}
