/* HAS+A — "Enter the Lab" hero (V128). Editorial composition, scoped to .lab-hero. */
.lab-hero{--lp:0;--m:clamp(20px,3.6vw,64px);position:relative;overflow:hidden;background:#08090a;color:#f4f3ef;min-height:max(100svh,740px);isolation:isolate}
.lab-hero .sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.lab-hero::after{content:"";position:absolute;left:0;right:0;bottom:0;height:120px;background:linear-gradient(transparent,#101010);pointer-events:none;z-index:0}
.lab-hero a:focus-visible,.lab-hero button:focus-visible{outline:2px solid #fff;outline-offset:3px}
.rd-link[hidden]{display:none}

/* type column */
.lab-kicker{display:flex;align-items:center;gap:12px;font-size:10.5px;font-weight:800;letter-spacing:.3em;color:#b8bbbd;margin-bottom:28px}
.lab-kicker::before{content:"";width:34px;height:1px;background:#c42b35}
.lab-kicker .sep{color:#c42b35}
.lab-rows{display:flex;flex-direction:column;border-bottom:1px solid rgba(244,243,239,.16)}
.lab-node{position:relative;display:grid;grid-template-columns:clamp(38px,3.6vw,56px) 1fr auto;align-items:baseline;gap:0;width:100%;background:none;border:0;border-top:1px solid rgba(244,243,239,.16);color:#f4f3ef;font-family:inherit;text-align:left;cursor:pointer;padding:clamp(6px,.9vh,12px) 0 clamp(8px,1.1vh,14px);transition:opacity .45s,color .3s}
.lab-node .ix{font-size:11px;font-weight:800;letter-spacing:.2em;color:#7b7e80;transition:color .3s;transform:translateY(-.9em)}
.lab-node .nm{font-size:clamp(34px,4.7vw,84px);line-height:.98;font-weight:900;letter-spacing:-.05em;display:block;opacity:0;transform:translateY(40%);animation:labUp .9s cubic-bezier(.2,.8,.2,1) forwards;transition:transform .45s cubic-bezier(.2,.8,.2,1),color .3s}
.lab-node.n-edu .nm{animation-delay:.12s}.lab-node.n-tech .nm{animation-delay:.24s}
.lab-node .mc{font-size:10.5px;font-weight:800;letter-spacing:.2em;color:#7b7e80;opacity:0;transform:translateX(-8px);transition:opacity .35s,transform .35s,color .3s;white-space:nowrap}
.lab-node::before{content:"";position:absolute;left:0;bottom:-1px;height:2px;width:100%;background:#c42b35;transform:scaleX(0);transform-origin:left;transition:transform .55s cubic-bezier(.2,.8,.2,1)}
.lab-node.n-edu::after,.lab-node.n-tech::after{content:"×";position:absolute;left:-3px;top:-.62em;font-size:15px;font-weight:700;color:#c42b35;background:#08090a;line-height:1;padding:0 3px}
.lab-node.is-active::before{transform:scaleX(1)}
.lab-node.is-active .ix{color:#c42b35}.lab-node.is-active .mc{opacity:1;transform:none;color:#f4f3ef}
.lab-node.is-active .nm{transform:translateX(10px)}
.lab-hero[data-pillar]:not([data-pillar=""]) .lab-node:not(.is-active){opacity:.34}
.lab-readout{margin-top:18px;min-height:6.6em;max-width:34em}
.lab-readout.swap{animation:labFade .5s ease both}
.rd-mc{display:block;font-size:10.5px;font-weight:800;letter-spacing:.3em;color:#c42b35}
.rd-tx{display:block;margin-top:9px;font-size:14px;line-height:1.6;color:#b3b2ad}
.rd-link{display:inline-block;margin-top:10px;font-size:10.5px;font-weight:800;letter-spacing:.18em;color:#f4f3ef;border-bottom:1px solid #c42b35;padding-bottom:3px}
.rd-link:hover{color:#fff;border-color:#fff}
.lab-sub{margin-top:14px;font-size:clamp(15px,1.2vw,18px);line-height:1.5;color:#f4f3ef;max-width:30em;font-weight:700;letter-spacing:-.01em}
.lab-cta{display:flex;flex-wrap:wrap;gap:12px;margin-top:24px}
.lab-btn{display:inline-flex;align-items:center;justify-content:center;gap:10px;min-height:52px;padding:0 26px;border:1px solid rgba(244,243,239,.7);color:#f4f3ef;font-size:11.5px;font-weight:800;letter-spacing:.16em;text-transform:uppercase;transition:background .25s,color .25s,border-color .25s,transform .25s}
.lab-btn.primary{background:#a11d27;border-color:#a11d27}
.lab-btn:hover{background:#f4f3ef;color:#0a0a0b;border-color:#f4f3ef;transform:translateY(-2px)}
.lab-btn.primary:hover{background:#c42b35;border-color:#c42b35;color:#fff}
.lab-btn i{font-style:normal;transition:transform .25s}.lab-btn:hover i{transform:translateX(4px)}
.lab-tert{display:flex;gap:24px;margin-top:20px;font-size:10.5px;font-weight:800;letter-spacing:.22em}
.lab-tert a{color:#9a9d9f;padding:6px 0;border-bottom:1px solid transparent;transition:color .2s,border-color .2s}
.lab-tert a:hover{color:#fff;border-color:#c42b35}

/* stage */
.lab-visual{position:absolute;inset:0;z-index:1;opacity:calc(1 - var(--lp)*.75)}
.lab-stage{position:absolute;inset:0;cursor:crosshair;touch-action:pan-y;-webkit-user-select:none;user-select:none}
.lab-stage.is-drag{cursor:grabbing}
.lab-stage canvas{position:absolute;inset:0;width:100%;height:100%;display:block}
.lab-stage::after{content:"";position:absolute;inset:0;z-index:1;pointer-events:none;background:linear-gradient(90deg,rgba(6,7,8,.94) 0%,rgba(6,7,8,.78) 26%,rgba(6,7,8,.28) 48%,rgba(6,7,8,0) 62%),linear-gradient(0deg,rgba(6,7,8,.85) 0,rgba(6,7,8,0) 22%),linear-gradient(180deg,rgba(6,7,8,.7) 0,rgba(6,7,8,0) 16%)}
.lab-poster{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:62% 50%;opacity:.6;transition:opacity .9s}
.lab-ready:not(.lab-nocanvas) .lab-poster{opacity:0;pointer-events:none}
.lab-ready:not(.lab-nocanvas) .lab-stage canvas{animation:labIn 1.4s ease both}
.lab-frame{position:absolute;inset:clamp(86px,11vh,112px) var(--m) 74px var(--m);z-index:2;pointer-events:none;opacity:0;transition:opacity 1s .4s}
.lab-built .lab-frame{opacity:1}
.lab-frame i{position:absolute;width:16px;height:16px;border:0 solid rgba(244,243,239,.45)}
.lab-frame i:nth-child(1){left:0;top:0;border-width:1px 0 0 1px}.lab-frame i:nth-child(2){right:0;top:0;border-width:1px 1px 0 0}
.lab-frame i:nth-child(3){left:0;bottom:0;border-width:0 0 1px 1px}.lab-frame i:nth-child(4){right:0;bottom:0;border-width:0 1px 1px 0}
.lab-modes{position:absolute;right:var(--m);top:clamp(96px,12vh,124px);display:flex;z-index:3;border:1px solid rgba(244,243,239,.28);background:rgba(8,9,10,.45);backdrop-filter:blur(6px)}
.lab-modes button{background:none;border:0;color:#a7a9aa;font:800 10px/1 Arial,sans-serif;letter-spacing:.2em;padding:11px 14px;cursor:pointer;min-height:34px;transition:background .2s,color .2s}
.lab-modes button+button{border-left:1px solid rgba(244,243,239,.2)}
.lab-modes button[aria-pressed=true]{background:#f4f3ef;color:#0a0a0b}
.lab-modes button:hover:not([aria-pressed=true]){color:#fff}
.lab-hud{position:absolute;right:var(--m);top:calc(clamp(96px,12vh,124px) + 50px);z-index:3;display:flex;gap:18px;font:700 10px/1 ui-monospace,Menlo,Consolas,monospace;letter-spacing:.14em;color:#b8bbbd;pointer-events:none;text-shadow:0 1px 8px #000}
.lab-hud span:first-child{color:#f4f3ef}
.lab-steps{position:absolute;left:var(--m);right:max(var(--m),210px);bottom:34px;z-index:3;display:flex;justify-content:space-between;list-style:none;font-size:9px;font-weight:800;letter-spacing:.2em;color:#6e7173;pointer-events:none;border-top:1px solid rgba(244,243,239,.14);padding-top:12px}
.lab-steps li{position:relative;transition:color .35s}.lab-steps li::before{content:"";position:absolute;left:0;top:-13px;width:1px;height:7px;background:currentColor}
.lab-steps li.done{color:#a7a9aa}.lab-steps li.on{color:#fff}.lab-steps li.on::before{background:#c42b35;height:12px;top:-13px;width:2px}
.lab-steps li:last-child.on,.lab-resolved .lab-steps li:last-child{color:#c42b35}
.lab-scroll{position:absolute;left:50%;bottom:62px;transform:translateX(-50%);z-index:3;font-size:9.5px;font-weight:800;letter-spacing:.26em;color:#9a9d9f;padding:8px 14px;display:flex;align-items:center;gap:12px;transition:color .2s;opacity:calc(1 - var(--lp)*3)}
.lab-scroll::before{content:"";width:1px;height:22px;background:linear-gradient(#c42b35,transparent);animation:labTick 2.2s ease-in-out infinite}
.lab-scroll:hover{color:#fff}

@keyframes labUp{to{transform:none;opacity:1}}
@keyframes labIn{from{opacity:0}to{opacity:1}}
@keyframes labFade{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
@keyframes labTick{0%,100%{transform:scaleY(.3);transform-origin:top}50%{transform:scaleY(1);transform-origin:top}}
@keyframes labPing{0%{box-shadow:0 0 0 0 rgba(196,43,53,.55)}100%{box-shadow:0 0 0 16px rgba(196,43,53,0)}}

/* desktop composition */
@media(min-width:900px){
  .lab-wrap{position:relative;z-index:3;pointer-events:none;min-height:max(100svh,740px);padding:0}
  .lab-copy{pointer-events:none;position:absolute;left:0;top:50%;width:min(700px,52%);transform:translateY(calc(-50% + 18px + var(--lp)*-34px));opacity:calc(1 - var(--lp)*1.15)}
}
@media(min-width:900px) and (max-width:1180px){.lab-node .mc{display:none}.lab-hud{display:none}}
@media(min-height:700px) and (max-height:820px) and (min-width:900px){.lab-readout{min-height:6em}.rd-tx{font-size:13px}.lab-cta{margin-top:18px}.lab-kicker{margin-bottom:18px}}

/* tablet / mobile: scene first, then the rows */
@media(max-width:899px){
  .lab-hero{display:flex;flex-direction:column;min-height:0}
  .lab-visual{order:-1;position:relative;inset:auto;height:clamp(340px,54svh,540px);margin-top:66px;opacity:calc(1 - var(--lp)*.5)}
  .lab-stage{cursor:default}
  .lab-stage::after{background:linear-gradient(0deg,#08090a 0,rgba(8,9,10,0) 34%),linear-gradient(180deg,rgba(8,9,10,.5) 0,rgba(8,9,10,0) 18%)}
  .lab-wrap{display:block;padding:6px 0 76px;min-height:0}
  .lab-copy{transform:none;opacity:1;position:relative}
  .lab-kicker{margin-bottom:16px}
  .lab-node .nm{font-size:clamp(30px,10.2vw,58px)}
  .lab-node .mc{display:none}
  .lab-readout{min-height:5.4em;margin-top:16px}.rd-tx{font-size:13.5px}
  .lab-cta{flex-direction:column}.lab-btn{width:100%;min-height:54px}
  .lab-modes{top:12px;right:14px}
  .lab-hud,.lab-steps,.lab-scroll{display:none}
  .lab-frame{inset:20px 14px 20px}
  .lab-hero::after{height:40px}
}
@media(max-width:380px){.lab-btn{padding:0 16px;font-size:11px}}
@media(prefers-reduced-motion:reduce){
  .lab-node .nm{transform:none;opacity:1;animation:none}
  .lab-scroll::before{animation:none}
  .lab-node,.lab-readout.swap{transition:none;animation:none}
  .lab-stage{cursor:default}
}

@media(min-width:900px) and (max-height:780px){.lab-copy{transform:translateY(calc(-50% + 34px + var(--lp)*-34px))}.lab-kicker{margin-bottom:14px}}
.lab-nocanvas .lab-modes,.lab-nocanvas .lab-hud,.lab-nocanvas .lab-layers,.lab-nocanvas .lab-ctl{display:none}

/* V129: layers legend + explode control */
.lab-stage{cursor:grab}
.lab-stage:focus-visible{outline:2px solid #fff;outline-offset:-4px}
.lab-layers{position:absolute;right:var(--m);top:calc(clamp(96px,12vh,124px) + 84px);z-index:3;display:flex;flex-direction:column;gap:2px;align-items:stretch;width:190px}
.lab-layers button{display:flex;align-items:center;gap:12px;background:none;border:0;border-right:1px solid rgba(244,243,239,.18);color:#9a9d9f;font:800 9.5px/1 Arial,sans-serif;letter-spacing:.18em;padding:7px 12px 7px 0;cursor:pointer;text-align:right;justify-content:flex-end;transition:color .2s,border-color .2s,background .2s}
.lab-layers button i{font-style:normal;color:#5e6264;transition:color .2s}
.lab-layers button:hover,.lab-layers button.is-active{color:#fff;border-right:2px solid #c42b35;background:linear-gradient(270deg,rgba(196,43,53,.16),transparent)}
.lab-layers button.is-active i{color:#c42b35}
.lab-ctl{position:absolute;right:var(--m);top:calc(clamp(96px,12vh,124px) + 84px + 296px);bottom:auto;z-index:3;display:flex;align-items:center;gap:14px;background:rgba(8,9,10,.55);backdrop-filter:blur(6px);border:1px solid rgba(244,243,239,.22);padding:8px 14px 8px 8px}
.lab-ex-btn{background:#a11d27;border:0;color:#fff;font:800 10.5px/1 Arial,sans-serif;letter-spacing:.2em;padding:12px 16px;min-width:104px;cursor:pointer;transition:background .2s}
.lab-ex-btn:hover{background:#c42b35}
.lab-ex{-webkit-appearance:none;appearance:none;width:150px;height:2px;background:rgba(244,243,239,.35);outline-offset:6px;cursor:pointer}
.lab-ex::-webkit-slider-thumb{-webkit-appearance:none;width:14px;height:14px;border-radius:50%;background:#f4f3ef;border:2px solid #c42b35}
.lab-ex::-moz-range-thumb{width:10px;height:10px;border-radius:50%;background:#f4f3ef;border:2px solid #c42b35}
@media(min-width:900px) and (max-width:1180px){.lab-layers{display:none}}
@media(max-width:899px){
  .lab-layers{display:none}
  .lab-ctl{right:14px;left:14px;bottom:14px;top:auto;justify-content:space-between}
  .lab-ex{flex:1;width:auto}
  .lab-stage{cursor:grab}
}
@media(max-width:899px) and (max-height:700px){.lab-ctl{bottom:8px;top:auto}}

.lab-copy a,.lab-copy button,.lab-copy .lab-node,.lab-copy .lab-rows,.lab-copy input{pointer-events:auto}

/* tablet: legend hidden, control sits under the mode tabs */
@media(min-width:900px) and (max-width:1180px){.lab-ctl{top:calc(clamp(96px,12vh,124px) + 84px)}}
/* SORA launcher 20% smaller (site-wide widget) so it never covers the hero controls */
.ask-sora{right:16px;bottom:12px}
.ask-sora .ask-sora-launcher{zoom:.8}
.ask-sora .ask-sora-panel{bottom:78px}
@media(max-width:899px){.ask-sora{right:10px;bottom:10px}}
/* mode tabs: clear focus + touch size */
.lab-modes button{min-height:34px;cursor:pointer}
.lab-modes button:focus-visible{outline:2px solid #c42b35;outline-offset:-2px}

/* C.E.I.T reference pin — marks the model as the C.E.I.T building, links to Future Direction */
.lab-pin{position:absolute;left:61%;top:24%;z-index:3;display:flex;flex-direction:column;align-items:center;text-decoration:none;pointer-events:auto}
.lab-pin-ico{display:block;filter:drop-shadow(0 0 8px rgba(244,243,239,.85)) drop-shadow(0 0 20px rgba(196,43,53,.55));animation:labPinBob 2.6s ease-in-out infinite}
.lab-pin-line{width:1px;height:20px;background:linear-gradient(rgba(244,243,239,.8),rgba(244,243,239,.05))}
.lab-pin-tag{margin-top:6px;font:800 10px/1 ui-monospace,Menlo,Consolas,monospace;letter-spacing:.18em;color:#f4f3ef;background:rgba(8,9,10,.72);backdrop-filter:blur(6px);border:1px solid rgba(244,243,239,.35);padding:7px 12px;white-space:nowrap;transition:border-color .2s,background .2s,color .2s}
.lab-pin:hover .lab-pin-tag,.lab-pin:focus-visible .lab-pin-tag{border-color:#c42b35;background:rgba(20,6,7,.88);color:#fff}
.lab-pin:focus-visible{outline:none}
.lab-pin:focus-visible .lab-pin-tag{outline:2px solid #c42b35;outline-offset:2px}
@keyframes labPinBob{0%,100%{transform:translateY(0)}50%{transform:translateY(-5px)}}
@media(min-width:900px) and (max-width:1180px){.lab-pin{left:58%;top:20%}}
@media(max-width:899px){.lab-pin{left:50%;top:8%;transform:translateX(-50%)}.lab-pin:hover,.lab-pin:focus-visible{transform:translateX(-50%)}}
@media(max-width:899px) and (max-height:700px){.lab-pin{display:none}}
@media(prefers-reduced-motion:reduce){.lab-pin-ico{animation:none}}
.lab-nocanvas .lab-pin{display:none}
