:root{--bg:#050505;--fg:#f3f2ed;--muted:#8e918d;--line:#292927;--panel:#0a0b0c;--lab-accent:#d8ff3e;--lab-cyan:#52d7e8;--lab-panel:#090b0c;--lab-line:#292d2e}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;background:var(--bg);color:var(--fg);font-family:"IBM Plex Sans Condensed","Arial Narrow",Arial,sans-serif;-webkit-font-smoothing:antialiased}
a{color:inherit;text-decoration:none}
.shell{width:min(1500px,calc(100% - 48px));margin:auto}
header{display:grid;grid-template-columns:1fr auto;align-items:center;padding:22px 0;border-bottom:1px solid var(--line)}
.brand,nav,.eyebrow,.experiment-number,.experiment-type,.experiment-status,.site-footer,.project-count,.project-meta,.project-visual figcaption,.active-project-card dt{font-family:"IBM Plex Mono",monospace}
nav{display:flex;align-items:baseline;gap:24px}
nav a{font:10px/1.2 "IBM Plex Mono",monospace;letter-spacing:.11em;text-transform:uppercase;color:var(--muted)}
nav a:hover,nav a:focus-visible{color:var(--fg)}
nav a.is-current{color:var(--lab-accent)}
nav a.lab-nav{--glitch-x:4px;--glitch-x-neg:-4px;--glitch-y:1px;--glitch-y-neg:-1px;position:relative;isolation:isolate;margin-left:4px;padding:8px 12px;border:1px solid var(--lab-accent);background:transparent;color:var(--lab-accent);font-weight:500;letter-spacing:.18em;overflow:visible;transition:background .2s ease,box-shadow .2s ease,transform .2s ease}
nav a.lab-nav:hover,nav a.lab-nav:focus-visible{background:rgba(216,255,62,.08);color:var(--lab-accent);box-shadow:3px 0 0 rgba(82,215,232,.55),-3px 0 0 rgba(216,255,62,.3),0 0 24px rgba(216,255,62,.28);animation:lab-frame-glitch .9s steps(1,end) infinite}
.lab-label{position:relative;z-index:2}.lab-bubbles{position:absolute;z-index:1;inset:-24px 0 auto;display:block;height:30px;pointer-events:none;overflow:visible}.lab-bubbles i{position:absolute;bottom:0;width:5px;height:5px;border:1px solid var(--lab-accent);border-radius:0;opacity:0}.lab-bubbles i:nth-child(1){left:16%;width:4px;height:4px}.lab-bubbles i:nth-child(2){left:38%;width:7px;height:7px}.lab-bubbles i:nth-child(3){left:61%}.lab-bubbles i:nth-child(4){left:79%;width:3px;height:3px}nav a.lab-nav:hover .lab-bubbles i,nav a.lab-nav:focus-visible .lab-bubbles i{animation:lab-bubble 1.25s ease-out infinite}.lab-bubbles i:nth-child(2){animation-delay:.18s!important}.lab-bubbles i:nth-child(3){animation-delay:.42s!important}.lab-bubbles i:nth-child(4){animation-delay:.7s!important}@keyframes lab-bubble{0%{opacity:0;transform:translate(0,8px) scale(.6) rotate(0)}18%{opacity:.9}100%{opacity:0;transform:translate(5px,-25px) scale(1.25) rotate(90deg)}}
@media(prefers-reduced-motion:reduce){nav a.lab-nav:hover .lab-bubbles i,nav a.lab-nav:focus-visible .lab-bubbles i{animation:none;opacity:.65;transform:translateY(-9px)}}
.lab-label::before,.lab-label::after{content:"LAB";position:absolute;inset:0;opacity:0;pointer-events:none}.lab-label::before{color:var(--lab-cyan)}.lab-label::after{color:#fff}nav a.lab-nav:hover .lab-label,nav a.lab-nav:focus-visible .lab-label{animation:lab-glitch .9s steps(1,end) infinite}nav a.lab-nav:hover .lab-label::before,nav a.lab-nav:focus-visible .lab-label::before{animation:lab-glitch-cyan .73s steps(1,end) infinite}nav a.lab-nav:hover .lab-label::after,nav a.lab-nav:focus-visible .lab-label::after{animation:lab-glitch-white 1.07s steps(1,end) infinite}@keyframes lab-frame-glitch{0%,15%,31%,58%,72%,100%{transform:translateY(-1px);border-color:var(--lab-accent)}18%,27%{transform:translate(var(--glitch-x),var(--glitch-y-neg));border-color:var(--lab-cyan)}61%,69%{transform:translate(var(--glitch-x-neg),0);border-right-width:3px}}@keyframes lab-glitch{0%,15%,31%,58%,72%,100%{transform:none}18%,27%{transform:translate(var(--glitch-x-neg),var(--glitch-y)) skewX(-8deg)}61%,69%{transform:translate(var(--glitch-x),var(--glitch-y-neg)) skewX(6deg)}}@keyframes lab-glitch-cyan{0%,15%,31%,58%,72%,100%{opacity:0;clip-path:inset(0)}18%,27%{opacity:.9;transform:translate(var(--glitch-x),var(--glitch-y-neg));clip-path:inset(0 0 48%)}61%,69%{opacity:.85;transform:translate(var(--glitch-x-neg),var(--glitch-y));clip-path:inset(52% 0 0)}}@keyframes lab-glitch-white{0%,17%,28%,60%,70%,100%{opacity:0}18%,27%,61%,69%{opacity:.45;transform:translate(var(--glitch-x-neg),0);clip-path:inset(36% 0 30%)}}
@media(prefers-reduced-motion:reduce){nav a.lab-nav:hover,nav a.lab-nav:focus-visible,nav a.lab-nav:hover .lab-label,nav a.lab-nav:focus-visible .lab-label,nav a.lab-nav:hover .lab-label::before,nav a.lab-nav:focus-visible .lab-label::before,nav a.lab-nav:hover .lab-label::after,nav a.lab-nav:focus-visible .lab-label::after{animation:none}}
nav a.lab-nav:hover,nav a.lab-nav:focus-visible{box-shadow:0 0 7px rgba(216,255,62,.48),0 0 18px rgba(82,215,232,.2);animation:lab-hum-frame .2s ease-in-out infinite alternate}nav a.lab-nav:hover .lab-label,nav a.lab-nav:focus-visible .lab-label{animation:lab-hum-text .16s ease-in-out infinite alternate}nav a.lab-nav:hover .lab-label::before,nav a.lab-nav:focus-visible .lab-label::before{opacity:.38;clip-path:none;animation:lab-hum-cyan .23s ease-in-out infinite alternate}nav a.lab-nav:hover .lab-label::after,nav a.lab-nav:focus-visible .lab-label::after{opacity:.18;clip-path:none;animation:lab-hum-white .29s ease-in-out infinite alternate}nav a.lab-nav:hover .lab-bubbles i,nav a.lab-nav:focus-visible .lab-bubbles i{animation:lab-bubble 1.55s ease-out infinite!important}nav a.lab-nav:hover .lab-bubbles i:nth-child(2),nav a.lab-nav:focus-visible .lab-bubbles i:nth-child(2){animation-delay:.24s!important}nav a.lab-nav:hover .lab-bubbles i:nth-child(3),nav a.lab-nav:focus-visible .lab-bubbles i:nth-child(3){animation-delay:.57s!important}nav a.lab-nav:hover .lab-bubbles i:nth-child(4),nav a.lab-nav:focus-visible .lab-bubbles i:nth-child(4){animation-delay:.91s!important}@keyframes lab-hum-frame{from{transform:translate(-.4px,-.25px);border-color:rgba(216,255,62,.72)}to{transform:translate(.4px,.25px);border-color:var(--lab-accent)}}@keyframes lab-hum-text{from{transform:translateX(-.45px)}to{transform:translateX(.45px)}}@keyframes lab-hum-cyan{from{transform:translate(-1.6px,-.2px)}to{transform:translate(1.3px,.3px)}}@keyframes lab-hum-white{from{transform:translate(1.1px,.15px)}to{transform:translate(-.9px,-.25px)}}
@media(prefers-reduced-motion:reduce){nav a.lab-nav:hover,nav a.lab-nav:focus-visible,nav a.lab-nav:hover .lab-label,nav a.lab-nav:focus-visible .lab-label,nav a.lab-nav:hover .lab-label::before,nav a.lab-nav:focus-visible .lab-label::before,nav a.lab-nav:hover .lab-label::after,nav a.lab-nav:focus-visible .lab-label::after,nav a.lab-nav:hover .lab-bubbles i,nav a.lab-nav:focus-visible .lab-bubbles i{animation:none!important}}
nav a.lab-nav.is-current,
nav a.lab-nav.is-current:hover,
nav a.lab-nav.is-current:focus-visible{background:var(--lab-accent);color:#050505;border-color:var(--lab-accent);box-shadow:none}
nav a.lab-nav.is-current::after,
nav a.lab-nav[aria-current="page"]::after{display:none!important;content:none!important}
nav a.lab-nav.is-current .lab-label{color:#050505;opacity:1}
.site-footer{display:flex;justify-content:space-between;gap:24px;padding:24px 0;font-size:9px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}
.lab-shell{overflow:hidden}
.lab-intro-pending [data-build]{opacity:0}.lab-hero [data-build]{transition:opacity .18s ease}.lab-hero h1 [data-build]{display:inline-block}
.eyebrow{font:9px/1.5 "IBM Plex Mono",monospace;letter-spacing:.12em;text-transform:uppercase;color:#8e918d}
.lab-hero{position:relative;isolation:isolate;min-height:738px;padding:92px 0 76px;display:grid;grid-template-columns:minmax(0,1.45fr) minmax(280px,.55fr);gap:70px;align-items:end;border-bottom:1px solid var(--line)}
.lab-hero-copy,.lab-provocation{position:relative;z-index:2}.lab-hero-copy{align-self:center;transform:translateY(-24px)}
.lab-hero h1{font-size:clamp(52px,7.4vw,108px);font-weight:300;letter-spacing:-.055em;line-height:.86;margin:28px 0 36px;max-width:12.5ch}
.lab-hero h1 em{font-style:normal;color:var(--lab-accent)}
.lab-hero-copy>p{font-size:clamp(19px,1.7vw,27px);line-height:1.35;color:#bbbcb6;max-width:760px;margin:0}
.lab-provocation{align-self:end;position:relative;min-height:390px;padding:38px 0 18px;border-top:1px solid var(--lab-line);border-bottom:1px solid var(--lab-line);display:flex;flex-direction:column;justify-content:space-between}
.provocation-mark{position:absolute;right:-8px;top:-34px;font-size:190px;font-weight:300;line-height:1;color:var(--lab-accent);opacity:.92;transform:rotate(9deg)}
.lab-provocation>p{position:relative;z-index:1;margin:0 0 0 clamp(24px,3vw,48px);font-size:clamp(42px,4.3vw,72px);font-weight:300;letter-spacing:-.055em;line-height:.86;max-width:5ch}
.lab-provocation>div{display:flex;justify-content:space-between;gap:18px;padding-left:clamp(24px,3vw,48px);font:8px/1.45 "IBM Plex Mono",monospace;letter-spacing:.1em;color:#777b77}
.lab-provocation>div span:last-child{max-width:18ch;text-align:right;color:var(--lab-accent)}
.lab-ascii-band{position:absolute;z-index:-1;inset:0 calc(50% - 50vw);overflow:hidden;pointer-events:none}
.lab-ascii-band canvas{display:block;width:100%;height:100%;opacity:0}
.lab-ascii-band canvas.is-ready{opacity:1}
.lab-ascii-band::after{content:"";position:absolute;inset:0;pointer-events:none;background:linear-gradient(90deg,#050505 0,rgba(5,5,5,.3) 24%,rgba(5,5,5,.04) 64%,#050505 100%),linear-gradient(0deg,#050505 0,transparent 28%,rgba(5,5,5,.1) 76%,#050505 100%)}
.lab-ascii-label{position:absolute;z-index:2;left:max(24px,calc((100vw - min(1500px,calc(100vw - 48px)))/2));right:max(24px,calc((100vw - min(1500px,calc(100vw - 48px)))/2));bottom:18px;display:flex;justify-content:space-between;font:8px/1.2 "IBM Plex Mono",monospace;letter-spacing:.11em;color:rgba(242,241,236,.2)}
.lab-ascii-label span:last-child{color:rgba(216,255,62,.3)}
.active-projects{padding:82px 0 110px;border-bottom:1px solid var(--line)}
.project-heading{align-items:end}.project-count{padding-bottom:5px;color:#727672;font-size:9px;letter-spacing:.1em}
.deck-heading.project-heading h2,.deck-heading #experiment-title{font-size:clamp(42px,5.8vw,84px);line-height:.92;letter-spacing:-.048em}
.active-project-card{display:grid;grid-template-columns:minmax(0,42.5%) minmax(480px,57.5%);border:1px solid var(--lab-line);border-top-color:#46504a;background:#090b0c}
.project-visual{position:relative;overflow:hidden;min-width:0;margin:0;align-self:stretch;border-right:1px solid var(--lab-line);background:#f7f6f0;display:grid;place-items:center}.project-visual img{width:100%;height:85%;display:block;object-fit:contain;object-position:center}.project-visual figcaption{position:absolute;z-index:2;left:18px;right:18px;bottom:18px;display:flex;justify-content:space-between;gap:18px;padding:10px 12px;background:rgba(5,7,6,.88);color:#d9dcd7;font-size:8px;letter-spacing:.1em}.project-visual figcaption span:last-child{color:var(--lab-accent)}
.mealtab-wordmark{position:absolute;z-index:2;top:20px;left:20px;display:grid;grid-template-columns:auto auto;align-items:end;padding:12px 15px 10px;background:rgba(255,255,255,.94);box-shadow:0 5px 18px rgba(17,35,20,.08);color:#11141a;font:800 24px/1 Arial,sans-serif;letter-spacing:-.055em}.mealtab-wordmark b{font-weight:800}.mealtab-wordmark i{font-style:normal;color:#2da544}.mealtab-wordmark small{grid-column:1/3;margin-top:5px;color:#5d655f;font:600 7px/1.1 Arial,sans-serif;letter-spacing:.02em;text-transform:uppercase}
.project-story{min-width:0;padding:clamp(38px,4.1vw,62px);display:flex;flex-direction:column}.project-meta{display:flex;justify-content:space-between;gap:20px;padding-bottom:23px;border-bottom:1px solid var(--lab-line);color:var(--lab-accent);font-size:8px;line-height:1.5;letter-spacing:.09em}.project-meta span:last-child{color:var(--lab-accent);text-align:right}
.project-story h3{font-size:clamp(42px,3.7vw,58px);font-weight:300;line-height:.94;letter-spacing:-.052em;max-width:none;margin:clamp(42px,5vw,68px) 0 24px}.project-story>p{max-width:580px;margin:0;color:#a8aaa5;font-size:clamp(17px,1.35vw,21px);line-height:1.42}
.project-story dl{display:grid;grid-template-columns:repeat(3,1fr);gap:0;margin:clamp(42px,5vw,66px) 0 28px;border-top:1px solid var(--lab-line);border-bottom:1px solid var(--lab-line)}.project-story dl>div{padding:17px 13px 18px 0;border-right:1px solid var(--lab-line)}.project-story dl>div+div{padding-left:15px}.project-story dl>div:last-child{border-right:0}.project-story dt{color:#717571;font-size:7px;letter-spacing:.1em;text-transform:uppercase}.project-story dd{margin:7px 0 0;font-size:16px;line-height:1.2;color:#e8e8e2}
.project-link{align-self:flex-start;width:min(380px,100%);min-height:82px;margin-top:auto;padding:0 22px;display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:26px;border:1px solid #3b4140;color:#e9eae5;text-align:left}.project-link small{color:#858985;font:9px/1 "IBM Plex Mono",monospace;letter-spacing:.12em}.project-link strong{font:300 clamp(20px,2vw,28px)/1 "IBM Plex Sans Condensed","Arial Narrow",Arial,sans-serif;letter-spacing:-.02em}.project-link b{color:var(--lab-accent);font-size:24px;font-weight:300;line-height:1}.project-link:hover,.project-link:focus-visible{border-color:var(--lab-accent);color:var(--lab-accent)}
.experiment-deck{padding:100px 0;border-bottom:1px solid var(--line)}
.deck-heading{display:flex;align-items:end;justify-content:space-between;gap:30px;margin-bottom:34px}.deck-heading h2,.rule-statement h2{font-size:clamp(64px,7vw,104px);font-weight:300;letter-spacing:-.055em;line-height:.9;margin:16px 0 0}
.text-adventure-card{display:grid;grid-template-columns:minmax(0,1.12fr) minmax(380px,.88fr);min-height:520px;border:1px solid var(--lab-line);background:#070a09;color:#efefe9;text-decoration:none;transition:border-color .25s ease,transform .35s cubic-bezier(.16,1,.3,1)}
.text-adventure-card:hover,.text-adventure-card:focus-visible{border-color:#4d9b76;transform:translateY(-3px);outline:0}
.text-adventure-terminal{display:flex;flex-direction:column;justify-content:center;padding:clamp(34px,5vw,76px);border-right:1px solid var(--lab-line);background:radial-gradient(circle at 45% 45%,rgba(61,207,132,.11),transparent 55%),repeating-linear-gradient(0deg,transparent 0 4px,rgba(117,255,168,.025) 4px 5px),#030705;color:#75ffa8;font-family:"IBM Plex Mono",monospace}
.text-adventure-terminal>span{margin-bottom:42px;color:#55c985;font-size:11px;letter-spacing:.12em}
.text-adventure-terminal pre{margin:0;white-space:pre-wrap;font:clamp(13px,1.3vw,19px)/1.65 "IBM Plex Mono",monospace;text-shadow:0 0 14px rgba(117,255,168,.18)}
.text-adventure-copy{display:flex;flex-direction:column;padding:clamp(36px,4.6vw,68px)}
.text-adventure-copy>span{color:var(--lab-cyan);font:10px/1.4 "IBM Plex Mono",monospace;letter-spacing:.11em}
.text-adventure-copy h3{max-width:11ch;margin:clamp(48px,6vw,84px) 0 24px;font-size:clamp(40px,4.1vw,62px);font-weight:300;line-height:.94;letter-spacing:-.05em}
.text-adventure-copy p{max-width:520px;margin:0;color:#9da19b;font-size:17px;line-height:1.5}
.text-adventure-copy strong{margin-top:auto;padding-top:42px;color:#e9eae5;font:11px "IBM Plex Mono",monospace;letter-spacing:.09em;text-transform:uppercase}.text-adventure-copy strong b{margin-left:10px;color:var(--lab-accent);font-size:18px;font-weight:400}
.shuffle-button{appearance:none;background:transparent;border:1px solid var(--lab-line);color:#d6d7d2;padding:13px 16px;font:9px "IBM Plex Mono",monospace;text-transform:uppercase;letter-spacing:.09em;cursor:pointer}.shuffle-button:hover,.shuffle-button:focus-visible{border-color:var(--lab-accent);color:var(--lab-accent);outline:0}.shuffle-button span{display:inline-block;margin-left:16px;font-size:16px}
.lab-console{display:grid;grid-template-columns:minmax(0,1.08fr) minmax(390px,.92fr);border:1px solid var(--lab-line);background:var(--lab-panel);min-height:570px}
.experiment-list{display:flex;flex-direction:column;border-right:1px solid var(--lab-line)}
.experiment-row{width:100%;min-height:112px;display:grid;grid-template-columns:50px 1.3fr 1fr auto;align-items:center;gap:20px;flex:1;padding:20px 22px;text-align:left;color:#8f918e;background:transparent;border:0;border-bottom:1px solid var(--lab-line);cursor:pointer;transition:background .25s ease,color .25s ease}.experiment-row:last-child{border-bottom:0}.experiment-row:hover{background:#0e1112;color:#e4e5df}.experiment-row.is-active{background:#111514;color:#f4f3ee;box-shadow:inset 3px 0 var(--lab-accent)}
.experiment-name{display:inline-block;transition:color .18s ease,text-shadow .18s ease}.experiment-row:hover .experiment-name,.experiment-row:focus-visible .experiment-name{color:var(--lab-accent)}.experiment-row.is-mutating .experiment-name{color:#fff;text-shadow:0 0 12px rgba(216,255,62,.62)}
.experiment-number,.experiment-type,.experiment-status{font:9px/1.45 "IBM Plex Mono",monospace;letter-spacing:.08em;text-transform:uppercase}.experiment-number{color:var(--lab-accent)}.experiment-name{font-size:25px;font-weight:300}.experiment-type{color:#777b78}.experiment-status{border:1px solid #343837;padding:7px 9px;color:#8f928f}.experiment-status.is-playable{color:var(--lab-accent);border-color:rgba(216,255,62,.42)}.experiment-row.is-launchable .experiment-name,.experiment-row.is-launchable .experiment-status{cursor:pointer}.experiment-row.is-launchable .experiment-name:hover{text-decoration:underline;text-decoration-color:var(--lab-accent);text-underline-offset:5px}.experiment-row.is-launchable .experiment-status:hover{background:var(--lab-accent);color:#050707}
.signal-viewer{display:grid;grid-template-rows:auto 1fr auto;min-width:0}.viewer-chrome{height:43px;padding:0 15px;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--lab-line);font:8px "IBM Plex Mono",monospace;letter-spacing:.11em;color:var(--lab-accent)}.viewer-chrome span:last-child{color:var(--lab-accent)}
.viewer-stage{position:relative;min-height:290px;display:grid;place-items:center;overflow:hidden;background:radial-gradient(circle at 50% 40%,rgba(82,215,232,.08),transparent 47%),repeating-linear-gradient(0deg,transparent 0 4px,rgba(255,255,255,.018) 4px 5px)}.viewer-stage::after{content:"";position:absolute;inset:0;border:16px solid rgba(0,0,0,.12);pointer-events:none}
.preview-visual{width:min(76%,350px);aspect-ratio:1.28;position:relative;transition:opacity .18s ease,transform .28s cubic-bezier(.16,1,.3,1)}.viewer-stage.is-changing .preview-visual{opacity:0;transform:scale(.96)}
.brief-preview{background:#050705;color:#f1f2ec;padding:25px 24px;border:1px solid #38403a;box-shadow:10px 12px 0 rgba(216,255,62,.08);font-family:"IBM Plex Mono",monospace}.intake-progress{display:grid;grid-template-columns:auto 1fr;align-items:center;gap:14px;font-size:8px;color:#8b8f89}.intake-progress b{font-weight:400;color:var(--lab-accent)}.intake-progress i{height:2px;background:linear-gradient(90deg,var(--lab-accent) 12.5%,#252925 12.5%)}.brief-preview .word-type{display:block;margin-top:28px;font-size:8px;letter-spacing:.12em;color:var(--lab-cyan)}.brief-preview strong{display:block;font-family:"IBM Plex Sans Condensed",sans-serif;font-size:30px;font-weight:300;line-height:.95;letter-spacing:-.04em;margin:9px 0 20px}.fake-input{display:flex;justify-content:space-between;border-bottom:1px solid #7b8079;padding:9px 0;font-size:15px;color:#d7d9d2}.fake-input i{font-style:normal;color:var(--lab-accent);animation:input-blink 1s steps(1) infinite}.fake-actions{position:absolute;left:24px;right:24px;bottom:24px;display:flex;justify-content:space-between;font-size:7px;color:#767a74}.fake-actions b{font-weight:400;color:var(--lab-accent)}@keyframes input-blink{50%{opacity:0}}
.terminal-preview{background:#030504;border:1px solid #2e594a;color:#8df0b5;padding:25px;font:12px/1.7 "IBM Plex Mono",monospace;box-shadow:0 0 34px rgba(64,220,145,.11)}.terminal-preview::before{content:"> REVIEW PORTFOLIO\AYou are in a conference room.\AThe hiring manager is holding a PDF.\AThe PDF has 94 pages.\A\A> _";white-space:pre-wrap}.bbs-preview{border:9px solid #24211d;background:#16120d;color:#f1bd63;padding:26px;font:12px/1.5 "IBM Plex Mono",monospace;box-shadow:0 0 30px rgba(241,189,99,.08)}.bbs-preview::before{content:"CONNECT 2400 BAUD\A\A      W O L F E  B B S\A     -----------------\A     [1] PLAY SOMETHING\A     [2] LEAVE IMMEDIATELY\A\A     SELECTION: _";white-space:pre-wrap}.afterdial-preview{overflow:hidden;border:1px solid #285a42;background:#030907;color:#75ffa8;padding:22px;font:10px/1.55 "IBM Plex Mono",monospace;box-shadow:0 0 38px rgba(117,255,168,.1)}.afterdial-preview::before{content:"AFTER DIAL // TRACE.LOG\A SIGNAL 28%    TIME SYNC: ERROR\A--------------------------------\A O . . + . # . . . . . *\A . # . . . # . # . . . .\A . . . # . . . . + . # .\A\A ROUTE COST: 06   RISK: ELEVATED\A> _";white-space:pre-wrap}.afterdial-preview::after{content:"";position:absolute;inset:0;background:repeating-linear-gradient(0deg,transparent 0 3px,rgba(117,255,168,.035) 4px);pointer-events:none}
.viewer-copy{padding:25px 28px 30px;border-top:1px solid var(--lab-line)}.viewer-copy>span{font:8px "IBM Plex Mono",monospace;color:var(--lab-accent);letter-spacing:.11em}.viewer-copy h3{font-size:28px;font-weight:300;line-height:1.02;margin:13px 0 10px}.viewer-copy p{font-size:14px;line-height:1.5;color:#8f928e;margin:0 0 20px}.viewer-copy [data-viewer-action]{appearance:none;border:0;background:none;color:#d8dad4;padding:0;font:9px "IBM Plex Mono",monospace;text-transform:uppercase;letter-spacing:.08em;text-decoration:none}.viewer-copy [data-viewer-action][href="#"]{cursor:default}.viewer-copy [data-viewer-action]:not([href="#"]):hover{color:#fff}.viewer-copy [data-viewer-action] span{color:var(--lab-accent);margin-left:8px}
.lab-rules{display:grid;grid-template-columns:150px minmax(0,1fr);gap:45px;padding:110px 0 0;border-bottom:1px solid var(--line)}.rule-statement{display:grid;grid-template-columns:minmax(0,.9fr) minmax(280px,.55fr);gap:70px;align-items:end;padding-bottom:90px}.rule-statement h2{margin:0;font-size:clamp(64px,8vw,118px)}.rule-statement h2 em{font-style:normal;color:var(--lab-accent)}.rule-statement p{font-size:clamp(20px,2vw,28px);line-height:1.35;color:#a5a8a2;margin:0 0 8px}.rule-ticker{grid-column:1/3;width:100vw;margin-left:calc(50% - 50vw);display:grid;grid-template-columns:repeat(3,1fr);border-top:1px solid var(--lab-line)}.rule-ticker span{padding:20px 24px;border-right:1px solid var(--lab-line);font:9px "IBM Plex Mono",monospace;letter-spacing:.11em;text-align:center;color:#8c908a}.rule-ticker span:last-child{border:0;color:var(--lab-accent)}
.lab-footer-note{min-height:280px;display:flex;align-items:center;justify-content:space-between;gap:30px}.lab-footer-note span{font:9px "IBM Plex Mono",monospace;color:var(--lab-accent);letter-spacing:.1em}.lab-footer-note p{font-size:clamp(28px,3.5vw,52px);font-weight:300;letter-spacing:-.04em;max-width:18ch;line-height:1;margin:0}.site-footer{border-top:1px solid var(--line)}
.lab-system-notice{position:fixed;z-index:10000;left:50%;bottom:28px;transform:translateX(-50%) rotate(-1deg);padding:11px 15px;border:1px solid var(--lab-accent);background:#080a08;color:var(--lab-accent);font:9px "IBM Plex Mono",monospace;letter-spacing:.1em;white-space:nowrap;animation:notice-in .35s cubic-bezier(.16,1,.3,1) both}
@keyframes notice-in{from{opacity:0;transform:translate(-50%,20px) rotate(2deg)}}
.lab-destabilized .lab-hero-copy{animation:organic-drift-a 5.2s cubic-bezier(.36,.08,.18,1) both}.lab-destabilized .lab-provocation{animation:organic-drift-b 5.2s cubic-bezier(.36,.08,.18,1) both}.lab-destabilized .provocation-mark{color:var(--lab-cyan)}
@keyframes organic-drift-a{0%,100%{transform:translate(0) rotate(0)}24%{transform:translate(3px,-2px) rotate(-.08deg)}61%{transform:translate(-2px,3px) rotate(.05deg)}}@keyframes organic-drift-b{0%,100%{transform:translate(0) rotate(0)}31%{transform:translate(-4px,2px) rotate(.12deg)}72%{transform:translate(2px,-3px) rotate(-.07deg)}}
@keyframes hero-slip{12%{transform:translate(14px,-7px)}28%{transform:translate(-8px,4px)}52%{transform:translate(5px,0)}78%,100%{transform:none}}
@keyframes aside-slip{15%{transform:rotate(2deg) translateY(12px)}44%{transform:rotate(-1deg) translateX(-8px)}82%,100%{transform:none}}
@keyframes row-left{18%{transform:translateX(-18px)}46%{transform:translateX(7px)}84%,100%{transform:none}}
@keyframes row-right{22%{transform:translateX(20px)}54%{transform:translateX(-5px)}86%,100%{transform:none}}
@keyframes viewer-tilt{20%{transform:rotate(1.8deg) scale(.985)}48%{transform:rotate(-1deg) scale(1.01)}86%,100%{transform:none}}
@media(max-width:980px){.lab-hero{grid-template-columns:1fr;min-height:900px}.lab-hero-copy{transform:translateY(-34px)}.lab-provocation{min-height:270px}.provocation-mark{font-size:150px}.active-project-card{grid-template-columns:1fr}.project-visual{min-height:540px}.project-story{min-height:600px}.text-adventure-card{grid-template-columns:1fr}.text-adventure-terminal{min-height:430px;border-right:0;border-bottom:1px solid var(--lab-line)}.text-adventure-copy{min-height:480px}.lab-console{grid-template-columns:1fr}.experiment-list{border-right:0;border-bottom:1px solid var(--lab-line)}.lab-rules{grid-template-columns:1fr}.rule-statement{grid-template-columns:1fr;gap:35px}.rule-ticker{grid-column:1;margin-left:calc(50% - 50vw)}}
@media(max-width:680px){.shell{width:min(100% - 28px,1500px)}header{padding:18px 0}nav{gap:14px}nav a{font-size:8px}.lab-hero{padding:54px 0}.lab-hero h1{font-size:clamp(52px,15vw,76px)}.active-projects{padding:72px 0}.project-heading,.deck-heading{align-items:flex-start;flex-direction:column}.project-visual{min-height:380px}.project-story{padding:32px 24px;min-height:620px}.project-story h3{margin-top:50px}.project-meta{flex-direction:column}.project-story dl{grid-template-columns:1fr;margin-top:auto}.project-story dl>div,.project-story dl>div+div{padding:14px 0;border-right:0;border-bottom:1px solid var(--lab-line)}.project-story dl>div:last-child{border-bottom:0}.experiment-deck{padding:72px 0}.experiment-row{grid-template-columns:34px 1fr auto;gap:12px}.experiment-name{font-size:20px}.experiment-type{grid-column:2/4}.experiment-status{grid-row:1;grid-column:3}.lab-console{min-height:0}.signal-viewer{min-height:590px}.lab-rules{padding:72px 0 0}.rule-statement{padding-bottom:60px}.rule-statement h2{font-size:64px}.rule-ticker{grid-template-columns:1fr}.rule-ticker span{border-right:0;border-bottom:1px solid var(--lab-line)}.lab-footer-note{align-items:flex-start;flex-direction:column;justify-content:center}.site-footer{display:flex}}
@media(prefers-reduced-motion:reduce){.experiment-row,.preview-visual,.unknown-preview,.lab-destabilized *{transition:none;animation:none}}
.launch-preview{background:url(../../img/lab/impossible-launch-rooms.png) 0 0/300% 100% no-repeat;image-rendering:pixelated;border:8px ridge #858195;box-shadow:8px 8px 0 rgba(216,255,62,.12)}
.finalfile-preview{overflow:hidden;border:7px outset #d6d3c8;background:#d9d6cb;color:#161616;box-shadow:8px 9px 0 rgba(74,190,213,.1)}.finalfile-preview::before{content:"03_FINAL                          10:18 PM\A━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\A▤ FINAL.key                       OLD\A▤ FINAL_FINAL.key                 MAYBE\A▤ FINAL_FINAL_USE_THIS.key         ???\A▤ FINAL_FINAL_USE_THIS_2.key       ???\A\A      THE CLIENT ARRIVES IN  12:00";display:block;padding:22px;white-space:pre;font:10px/1.65 "IBM Plex Mono",monospace}.finalfile-preview::after{content:"6 FILES CLAIM TO BE FINAL";position:absolute;left:0;right:0;bottom:0;padding:9px 12px;background:#153de0;color:#fff;font:9px/1 "IBM Plex Mono",monospace;letter-spacing:.08em}
.tripometry-preview{overflow:hidden;border:1px solid #506128;background:linear-gradient(rgba(216,255,62,.035) 1px,transparent 1px),linear-gradient(90deg,rgba(216,255,62,.035) 1px,transparent 1px),#060906;background-size:28px 28px;box-shadow:0 0 30px rgba(216,255,62,.055)}.tripometry-preview::before{content:"ORIGIN 34.0522° N\ADESTINATION 36.1699° N\A--------------------------------\A  ● · · · · · · · · · · ·\A     ╲          312 MI\A      · · ● · · · · · · ·\A            ╲\A             · · · · ◎\A\A ROUTE SCORE: 87   STOPS: 03";position:absolute;inset:0;padding:24px;white-space:pre-wrap;color:#c8f253;font:10px/1.55 "IBM Plex Mono",monospace}.tripometry-preview::after{content:"SCENIC WEIGHT +18%";position:absolute;right:18px;bottom:16px;color:#8c9189;font:9px/1 "IBM Plex Mono",monospace;letter-spacing:.1em}.darlings-preview{display:flex;flex-direction:column;justify-content:center;padding:28px;border:1px solid #3d4741;background:repeating-linear-gradient(0deg,transparent 0 22px,rgba(216,255,62,.05) 22px 23px),#070908;box-shadow:10px 12px 0 rgba(216,255,62,.08)}.darlings-preview span,.darlings-preview b{font:9px "IBM Plex Mono",monospace;letter-spacing:.1em;color:var(--lab-cyan)}.darlings-preview strong{margin:25px 0 12px;font-size:38px;font-weight:300;line-height:.9;letter-spacing:-.045em}.darlings-preview i{font-style:normal;font-size:22px;color:var(--lab-accent)}.darlings-preview b{margin-top:auto;color:#8e938c;font-weight:400}
.translator-preview{display:flex;flex-direction:column;justify-content:center;padding:28px;border:1px solid #3d4741;background:linear-gradient(145deg,rgba(82,215,232,.07),transparent 52%),#070908;box-shadow:10px 12px 0 rgba(82,215,232,.08)}.translator-preview span,.translator-preview i{font:9px "IBM Plex Mono",monospace;letter-spacing:.1em;color:var(--lab-cyan)}.translator-preview strong{margin:24px 0 30px;font-size:36px;font-weight:300;line-height:.95;letter-spacing:-.04em}.translator-preview i{font-style:normal;color:var(--lab-accent)}.translator-preview b{margin-top:10px;color:#a7aaa4;font-size:17px;font-weight:300;line-height:1.25}
.pixel-preview{display:flex;flex-direction:column;justify-content:center;padding:28px;border:10px solid #6c5eb5;background:#352879;color:#aaa0df;box-shadow:10px 12px 0 rgba(108,94,181,.22);image-rendering:pixelated}.pixel-preview span,.pixel-preview i,.pixel-preview b{font:10px "IBM Plex Mono",monospace;letter-spacing:.06em}.pixel-preview strong{margin:25px 0;color:#fff;font:30px/1 "IBM Plex Mono",monospace;white-space:pre}.pixel-preview i{color:#f7ed54;font-style:normal}.pixel-preview b{margin-top:12px;color:#7de2d1;font-weight:400}
.kerning-preview{display:flex;flex-direction:column;justify-content:center;padding:28px;border:10px solid #6c5eb5;background:#352879;color:#aaa0df;box-shadow:10px 12px 0 rgba(247,237,84,.08)}.kerning-preview span,.kerning-preview i,.kerning-preview b{font:9px "IBM Plex Mono",monospace;letter-spacing:.1em}.kerning-preview strong{margin:34px 0;color:#fff;font-size:35px;font-weight:300;letter-spacing:.25em;white-space:nowrap}.kerning-preview i{color:#f7ed54;font-style:normal}.kerning-preview b{margin-top:12px;color:#7de2d1;font-weight:400}

/* Keep the Lab's monospaced utility language at one consistent size. */
.eyebrow,.project-count,.project-meta,.project-visual figcaption,.project-story dt,.project-link small,.lab-provocation>div,.lab-ascii-label,.experiment-number,.experiment-type,.experiment-status,.viewer-chrome,.viewer-copy>span,.viewer-copy [data-viewer-action],.rule-ticker span,.lab-footer-note span,.site-footer{font-size:11px}
.project-meta{line-height:1.45}
.experiment-status{padding:9px 11px}
.shuffle-button{font-size:11px}
.unknown-preview{width:min(58%,240px);aspect-ratio:1;border:1px solid var(--lab-accent);border-radius:50%;background:radial-gradient(circle,#d8ff3e 0 3%,transparent 4%),repeating-radial-gradient(circle,rgba(216,255,62,.13) 0 1px,transparent 2px 18px);box-shadow:0 0 0 18px rgba(216,255,62,.025),0 0 60px rgba(216,255,62,.12);animation:unknown-pulse 4s ease-in-out infinite}.unknown-preview::after{content:"PRESS?";position:absolute;inset:0;display:grid;place-items:center;color:#ecff91;background:radial-gradient(circle,rgba(1,5,3,.96) 0 19%,rgba(1,5,3,.68) 20%,transparent 29%);font:600 clamp(12px,1vw,15px)/1 "IBM Plex Mono",monospace;letter-spacing:.12em;text-shadow:0 0 5px var(--lab-accent),0 0 14px rgba(216,255,62,.75)}@keyframes unknown-pulse{50%{transform:scale(.92) rotate(7deg);filter:hue-rotate(42deg)}}
.unknown-preview{appearance:none;padding:0;cursor:pointer}.unknown-preview:focus-visible{outline:2px solid var(--lab-cyan);outline-offset:8px}.unknown-preview[data-phase="1"]{animation-duration:1.8s}.unknown-preview[data-phase="1"]::after{content:"HELLO?"}.unknown-preview[data-phase="2"]{border-style:dashed;animation:unknown-split .75s steps(2,end) infinite}.unknown-preview[data-phase="2"]::before{content:"";position:absolute;width:34%;aspect-ratio:1;right:-22%;top:8%;border:1px solid var(--lab-cyan);border-radius:50%;box-shadow:0 0 24px rgba(82,215,232,.22)}.unknown-preview[data-phase="2"]::after{content:"TWO"}.unknown-preview[data-phase="3"]{border-color:transparent;background:none;box-shadow:none;animation:unknown-escape .5s steps(2,end) infinite}.unknown-preview[data-phase="3"]::after{content:"...";color:var(--lab-cyan)}.unknown-preview[data-phase="4"]{opacity:.18;filter:grayscale(1);animation:none}.unknown-preview[data-phase="4"]::after{content:"PRESS?"}@keyframes unknown-split{50%{transform:translateX(-4px) scale(.97);filter:hue-rotate(70deg)}}@keyframes unknown-escape{50%{transform:translate(14px,-8px) scale(.72)}}
.unknown-particles{position:absolute;z-index:5;left:50%;top:50%;width:1px;height:1px;pointer-events:none}.unknown-particles i{--distance:clamp(80px,10vw,150px);position:absolute;width:5px;height:5px;background:var(--lab-accent);box-shadow:0 0 8px var(--lab-accent);animation:unknown-particle 1.2s cubic-bezier(.12,.7,.15,1) var(--d) both}@keyframes unknown-particle{0%{opacity:1;transform:rotate(var(--a)) translateX(10px) scale(1)}70%{opacity:.9}100%{opacity:0;transform:rotate(var(--a)) translateX(var(--distance)) scale(.15)}}
.viewer-stage[data-unknown-phase="1"]{animation:unknown-stage-pulse .7s ease-out}.viewer-stage[data-unknown-phase="1"] .unknown-preview{box-shadow:0 0 0 18px rgba(216,255,62,.04),0 0 0 40px rgba(216,255,62,.025),0 0 90px rgba(216,255,62,.3)}
.viewer-stage[data-unknown-phase="2"]::before{content:"SIGNAL MIRROR // 02";position:absolute;z-index:4;right:18px;top:18px;color:var(--lab-cyan);font:8px "IBM Plex Mono",monospace;letter-spacing:.12em;animation:unknown-code .55s steps(2,end) infinite}
.unknown-link,.unknown-twin,.unknown-sparks{position:absolute;pointer-events:none;opacity:0}
.unknown-preview[data-phase="2"]{overflow:visible;animation:unknown-primary-orbit 2.8s ease-in-out infinite}
.unknown-preview[data-phase="2"]::before{display:none}
.unknown-preview[data-phase="2"] .unknown-link{display:block;z-index:-1;left:50%;top:50%;width:150%;height:2px;opacity:.72;transform-origin:left center;background:linear-gradient(90deg,var(--lab-accent),rgba(82,215,232,.9),transparent);box-shadow:0 0 9px rgba(82,215,232,.75);animation:unknown-link-tension 1.15s ease-in-out infinite alternate}
.unknown-preview[data-phase="2"] .unknown-twin{display:block;left:145%;top:-8%;width:58%;aspect-ratio:1;border:1px solid var(--lab-cyan);border-radius:50%;opacity:1;background:radial-gradient(circle,var(--lab-cyan) 0 7%,transparent 9%),repeating-radial-gradient(circle,rgba(82,215,232,.2) 0 1px,transparent 2px 10px);box-shadow:0 0 0 10px rgba(82,215,232,.035),0 0 34px rgba(82,215,232,.42);animation:unknown-twin-orbit 2.8s cubic-bezier(.45,0,.55,1) infinite}
.unknown-preview[data-phase="2"] .unknown-sparks{display:block;inset:0;opacity:1}.unknown-preview[data-phase="2"] .unknown-sparks i{position:absolute;left:50%;top:50%;width:3px;height:3px;background:var(--lab-cyan);box-shadow:0 0 7px var(--lab-cyan);animation:unknown-signal-spark 1.6s ease-in-out infinite}.unknown-preview[data-phase="2"] .unknown-sparks i:nth-child(1){--sx:118px;--sy:-48px;animation-delay:.05s}.unknown-preview[data-phase="2"] .unknown-sparks i:nth-child(2){--sx:154px;--sy:24px;animation-delay:.25s}.unknown-preview[data-phase="2"] .unknown-sparks i:nth-child(3){--sx:84px;--sy:70px;animation-delay:.45s}.unknown-preview[data-phase="2"] .unknown-sparks i:nth-child(4){--sx:178px;--sy:-8px;animation-delay:.65s}.unknown-preview[data-phase="2"] .unknown-sparks i:nth-child(5){--sx:55px;--sy:-72px;animation-delay:.85s}.unknown-preview[data-phase="2"] .unknown-sparks i:nth-child(6){--sx:132px;--sy:58px;animation-delay:1.05s}.unknown-preview[data-phase="2"] .unknown-sparks i:nth-child(7){--sx:190px;--sy:45px;animation-delay:1.25s}.unknown-preview[data-phase="2"] .unknown-sparks i:nth-child(8){--sx:92px;--sy:-18px;animation-delay:1.45s}
@keyframes unknown-primary-orbit{0%,100%{transform:translateX(-28px) scale(.96) rotate(-3deg)}50%{transform:translate(-42px,8px) scale(1.02) rotate(3deg)}}@keyframes unknown-twin-orbit{0%,100%{transform:translate(5px,18px) scale(.88)}50%{transform:translate(-14px,-12px) scale(1.08)}}@keyframes unknown-link-tension{from{transform:rotate(-10deg) scaleX(.88);filter:brightness(.75)}to{transform:rotate(7deg) scaleX(1.12);filter:brightness(1.55)}}@keyframes unknown-signal-spark{0%{opacity:0;transform:translate(0,0) scale(.4)}25%{opacity:1}70%{opacity:.75}100%{opacity:0;transform:translate(var(--sx),var(--sy)) scale(1.25)}}
@media(prefers-reduced-motion:reduce){.unknown-preview[data-phase="2"],.unknown-preview[data-phase="2"] .unknown-link,.unknown-preview[data-phase="2"] .unknown-twin,.unknown-preview[data-phase="2"] .unknown-sparks i{animation:none!important}.unknown-preview[data-phase="2"] .unknown-link{transform:rotate(0)}.unknown-preview[data-phase="2"] .unknown-twin{transform:none}}
.viewer-stage[data-unknown-phase="2"] .unknown-preview{opacity:0;animation:none}.dual-signal-field{position:absolute;z-index:4;inset:0;width:100%;height:100%;padding:0;border:0;background:linear-gradient(90deg,rgba(82,215,232,.035) 1px,transparent 1px),linear-gradient(rgba(216,255,62,.028) 1px,transparent 1px);background-size:28px 28px;color:inherit;cursor:pointer;overflow:hidden}.dual-signal-field::before,.dual-signal-field::after{content:"";position:absolute;top:50%;width:19px;height:19px;border:1px solid currentColor;border-radius:50%;transform:translateY(-50%);box-shadow:0 0 0 9px rgba(82,215,232,.05),0 0 28px currentColor}.dual-signal-field::before{left:7%;color:var(--lab-cyan);animation:signal-source-left 2.6s ease-in-out infinite}.dual-signal-field::after{right:7%;color:var(--lab-accent);animation:signal-source-right 2.6s ease-in-out infinite}.dual-signal-field i{position:absolute;left:calc(5% + var(--wave) * 5.25%);top:50%;width:2px;height:calc(12px + var(--wave) * 3px);background:linear-gradient(var(--lab-cyan),#fff,var(--lab-accent));box-shadow:0 0 8px rgba(82,215,232,.55);transform:translateY(-50%);animation:interference-wave .82s ease-in-out calc(var(--wave) * -47ms) infinite alternate}.dual-signal-field b,.dual-signal-field em{position:absolute;top:0;bottom:0;width:32%;opacity:.42;background:repeating-linear-gradient(112deg,transparent 0 13px,currentColor 14px,transparent 15px 27px);filter:blur(.2px)}.dual-signal-field b{left:0;color:var(--lab-cyan);animation:scan-field-left 2.6s ease-in-out infinite}.dual-signal-field em{right:0;color:var(--lab-accent);animation:scan-field-right 2.6s ease-in-out infinite}.dual-signal-field span{position:absolute;left:50%;bottom:16px;transform:translateX(-50%);color:#d9fbff;font:9px/1 "IBM Plex Mono",monospace;letter-spacing:.17em;text-shadow:0 0 8px var(--lab-cyan);white-space:nowrap}@keyframes signal-source-left{0%,100%{left:7%;transform:translateY(-50%) scale(.7)}50%{left:43%;transform:translateY(-50%) scale(1.4)}}@keyframes signal-source-right{0%,100%{right:7%;transform:translateY(-50%) scale(1.35)}50%{right:43%;transform:translateY(-50%) scale(.72)}}@keyframes interference-wave{to{height:clamp(30px,18vh,115px);filter:hue-rotate(70deg) brightness(1.7)}}@keyframes scan-field-left{50%{transform:translateX(170%) skewX(-12deg);opacity:.75}}@keyframes scan-field-right{50%{transform:translateX(-170%) skewX(12deg);opacity:.75}}
.viewer-stage[data-unknown-phase="3"] .dual-signal-field,.viewer-stage[data-unknown-phase="4"] .dual-signal-field{display:none}
.viewer-stage[data-unknown-phase="3"]{animation:unknown-breach .18s steps(2,end) 7}.viewer-stage[data-unknown-phase="3"] .unknown-preview{animation:unknown-escape 1.15s cubic-bezier(.65,-.2,.3,1.3) infinite}.viewer-stage[data-unknown-phase="3"]::before{content:"OBJECT POSITION: UNRESOLVED";position:absolute;z-index:4;left:18px;bottom:18px;color:var(--lab-cyan);font:8px "IBM Plex Mono",monospace;letter-spacing:.12em}
.viewer-stage[data-unknown-phase="3"]{overflow:hidden;animation:containment-stage-drop 1.1s steps(1,end) both;background:radial-gradient(circle at 50% 50%,rgba(216,255,62,.08),transparent 8%,rgba(82,215,232,.025) 32%,transparent 64%)}.viewer-stage[data-unknown-phase="3"] .unknown-preview{opacity:0;animation:none}.containment-breach{position:absolute;z-index:3;inset:0;display:block;overflow:hidden;pointer-events:none}.containment-breach::before,.containment-breach::after{content:"";position:absolute;z-index:2;left:50%;top:50%;width:min(62%,520px);height:auto;aspect-ratio:1;border:1px solid var(--lab-cyan);border-radius:50%;transform:translate(-50%,-50%);box-shadow:none;filter:none;animation:breach-ring 1.45s steps(1,end) both}.containment-breach::after{width:min(48%,410px);border-color:var(--lab-accent);animation-delay:.12s}.containment-breach i{position:absolute;z-index:1;left:50%;top:50%;width:clamp(34px,7vw,92px);height:clamp(48px,10vw,138px);border:1px solid rgba(82,215,232,.58);border-radius:42% 58% 67% 33%/55% 38% 62% 45%;background:radial-gradient(circle at 34% 28%,rgba(216,255,62,.17),rgba(82,215,232,.09) 42%,transparent 72%);transform-origin:center;animation:containment-spore 2.15s cubic-bezier(.18,.7,.16,1) var(--delay) both}.containment-breach i:nth-child(1){--cx:-8vw;--cy:-18vh;--tx:-37vw;--ty:-29vh;--rot:-124deg;--delay:0ms}.containment-breach i:nth-child(2){--cx:17vw;--cy:-13vh;--tx:10vw;--ty:-39vh;--rot:188deg;--delay:55ms}.containment-breach i:nth-child(3){--cx:21vw;--cy:9vh;--tx:41vw;--ty:-5vh;--rot:-226deg;--delay:115ms}.containment-breach i:nth-child(4){--cx:5vw;--cy:20vh;--tx:28vw;--ty:33vh;--rot:152deg;--delay:175ms}.containment-breach i:nth-child(5){--cx:-18vw;--cy:13vh;--tx:-9vw;--ty:42vh;--rot:-179deg;--delay:235ms}.containment-breach i:nth-child(6){--cx:-22vw;--cy:-5vh;--tx:-42vw;--ty:12vh;--rot:218deg;--delay:295ms}.containment-breach i::after{content:"";position:absolute;inset:24%;border:1px solid rgba(216,255,62,.42);border-radius:61% 39% 45% 55%/42% 65% 35% 58%}.containment-breach b{position:absolute;z-index:4;left:50%;top:50%;padding:8px 11px;border:1px solid var(--lab-accent);background:#000;color:var(--lab-accent);font:8px/1 "IBM Plex Mono",monospace;letter-spacing:.16em;text-shadow:none;transform:translate(-50%,-50%);animation:containment-label 1.15s steps(2,end) both}@keyframes containment-stage-drop{0%,12%{filter:brightness(2.4) contrast(1.5)}13%,25%{filter:brightness(.16)}26%,100%{filter:none}}@keyframes containment-spore{0%{opacity:0;transform:translate(-50%,-50%) scale(.03) rotate(0);border-radius:50%}16%{opacity:.95}44%{transform:translate(calc(-50% + var(--cx)),calc(-50% + var(--cy))) scale(1.08) rotate(calc(var(--rot) * .28));border-radius:68% 32% 41% 59%/37% 62% 38% 63%}72%{opacity:.72;transform:translate(calc(-50% + var(--tx) * .72),calc(-50% + var(--ty) * .72)) scale(.7) rotate(calc(var(--rot) * .7))}100%{opacity:0;transform:translate(calc(-50% + var(--tx)),calc(-50% + var(--ty))) scale(.18) rotate(var(--rot));border-radius:31% 69% 57% 43%/68% 35% 65% 32%}}@keyframes breach-ring{0%,12%{opacity:0}13%,58%{opacity:.9}59%,76%{opacity:.38}77%,100%{opacity:0}}@keyframes containment-label{0%,18%,44%,100%{opacity:0}19%,43%,45%,74%{opacity:1}}
@media(prefers-reduced-motion:reduce){.viewer-stage[data-unknown-phase="3"],.containment-breach i,.containment-breach i::after,.containment-breach b{animation:none!important}}
@keyframes containment-spore{0%{opacity:0;transform:translate(-50%,-50%) scale(.03) rotate(0);border-radius:50%}16%{opacity:.95}44%{transform:translate(calc(-50% + var(--cx)),calc(-50% + var(--cy))) scale(1.08) rotate(28deg);border-radius:68% 32% 41% 59%/37% 62% 38% 63%}72%{opacity:.72;transform:translate(calc(-50% + var(--tx)),calc(-50% + var(--ty))) scale(.7) rotate(124deg)}100%{opacity:0;transform:translate(calc(-50% + var(--tx)),calc(-50% + var(--ty))) scale(.18) rotate(var(--rot));border-radius:31% 69% 57% 43%/68% 35% 65% 32%}}
.escaped-signal{position:fixed;z-index:30;inset:0;overflow:hidden;pointer-events:none;mix-blend-mode:normal}.escaped-signal i{position:absolute;left:-8vw;top:calc(5vh + (var(--escape) * 6.6vh));width:clamp(22px,4vw,70px);height:2px;background:linear-gradient(90deg,transparent,#fff,var(--lab-cyan),var(--lab-accent));box-shadow:0 0 12px var(--lab-cyan);animation:signal-escape-page 2.4s cubic-bezier(.2,.7,.2,1) var(--escape-delay) both}.escaped-signal i:nth-child(3n){top:calc(92vh - (var(--escape) * 5.4vh));animation-direction:reverse;background:linear-gradient(90deg,var(--lab-accent),var(--lab-cyan),transparent)}.escaped-signal i:nth-child(4n){height:clamp(18px,4vw,60px);width:2px;left:calc(8vw + (var(--escape) * 6vw));top:-10vh;animation-name:signal-escape-vertical}.escaped-signal b{position:absolute;left:50%;top:12vh;padding:10px 14px;border:1px solid var(--lab-cyan);background:#000;color:var(--lab-cyan);font:9px/1 "IBM Plex Mono",monospace;letter-spacing:.18em;transform:translateX(-50%);animation:escaped-warning 4.4s steps(1,end) both}@keyframes signal-escape-page{0%{opacity:0;transform:translateX(0) scaleX(.1)}12%{opacity:1}58%{transform:translateX(58vw) scaleX(3.8)}100%{opacity:0;transform:translateX(116vw) scaleX(.2)}}@keyframes signal-escape-vertical{0%{opacity:0;transform:translateY(0) scaleY(.1)}18%{opacity:1}100%{opacity:0;transform:translateY(125vh) scaleY(4)}}@keyframes escaped-warning{0%,8%,15%,24%,100%{opacity:0}9%,14%,25%,70%{opacity:1}}
.escaped-signal em{position:fixed;left:var(--mx,50vw);top:var(--my,50vh);width:13px;height:13px;border:1px solid var(--lab-cyan);border-radius:50%;opacity:0;transform:translate(-50%,-50%);transition:left .22s cubic-bezier(.2,.8,.2,1),top .28s cubic-bezier(.2,.8,.2,1);box-shadow:0 0 12px var(--lab-cyan),0 0 34px rgba(216,255,62,.42)}.escaped-signal.is-tracking em{opacity:1;animation:escaped-cursor-hum .65s ease-in-out infinite alternate}.escaped-signal em::before,.escaped-signal em::after{content:"";position:absolute;inset:-10px;border:1px solid rgba(82,215,232,.48);border-radius:50%;animation:escaped-cursor-echo 1.3s ease-out infinite}.escaped-signal em::after{inset:-22px;border-color:rgba(216,255,62,.32);animation-delay:.38s}.escaped-signal.is-tracking b{top:auto;left:var(--mx,50vw);bottom:24px;animation:none;opacity:.82;transform:translateX(-50%);transition:left .4s ease;white-space:nowrap}.escaped-signal.is-tracking b::after{content:" // CURSOR ACQUIRED";color:var(--lab-accent)}@keyframes escaped-cursor-hum{to{width:20px;height:20px;filter:hue-rotate(55deg)}}@keyframes escaped-cursor-echo{0%{opacity:.8;transform:scale(.35)}100%{opacity:0;transform:scale(2.4)}}
.escaped-signal i,.escaped-signal i:nth-child(3n),.escaped-signal i:nth-child(4n){left:50%!important;top:50%!important;width:auto;height:auto;background:none;box-shadow:none;color:var(--lab-cyan);font:500 clamp(10px,1.1vw,18px)/1 "IBM Plex Mono",monospace;text-shadow:0 0 7px currentColor,0 0 18px currentColor;animation:escaped-glyph-burst 4.6s cubic-bezier(.16,.75,.2,1) var(--escape-delay) both!important;animation-direction:normal!important}.escaped-signal i:nth-child(3n){color:var(--lab-accent);font-size:clamp(14px,1.5vw,24px)}.escaped-signal i:nth-child(5n){color:#fff}.escaped-signal i:nth-child(7n){border:1px solid currentColor;padding:4px}@keyframes escaped-glyph-burst{0%{opacity:0;transform:translate(-50%,-50%) scale(0) rotate(0)}8%{opacity:1}38%{transform:translate(calc(var(--x) - 50vw),calc(var(--y) - 50vh)) scale(1.8) rotate(var(--spin))}70%{opacity:.85;transform:translate(calc(var(--x) - 48vw),calc(var(--y) - 52vh)) scale(.9) rotate(0)}100%{opacity:0;transform:translate(calc(var(--x) - 45vw),calc(var(--y) - 47vh)) scale(.2) rotate(var(--spin))}}
@media(prefers-reduced-motion:reduce){.escaped-signal{display:none}}
.unknown-preview::after,.dual-signal-field span,.escaped-signal i{text-shadow:none;filter:none!important}.escaped-signal i{box-shadow:none!important;-webkit-font-smoothing:antialiased}
.viewer-stage[data-unknown-phase="4"]{animation:none;filter:none}.viewer-stage[data-unknown-phase="4"]::before{content:"NO INPUT DETECTED\A NO INPUT DETECTED\A USER PRESENCE: UNCONFIRMED";position:absolute;z-index:6;inset:0;display:grid;place-items:center;white-space:pre;text-align:center;background:#000;color:var(--lab-accent);font:10px/1.8 "IBM Plex Mono",monospace;letter-spacing:.14em;text-shadow:none;filter:none;animation:unknown-blackout-overlay 2.4s steps(1,end) both}.viewer-stage[data-unknown-phase="4"] *,.viewer-stage[data-unknown-phase="4"]::before,.viewer-stage[data-unknown-phase="4"]::after{text-shadow:none!important}
@keyframes escaped-glyph-burst{0%{opacity:0;transform:translate(-50%,-50%) rotate(0)}8%{opacity:1}38%{transform:translate(calc(var(--x) - 50vw),calc(var(--y) - 50vh)) rotate(var(--spin))}70%{opacity:.85;transform:translate(calc(var(--x) - 48vw),calc(var(--y) - 52vh)) rotate(0)}100%{opacity:0;transform:translate(calc(var(--x) - 45vw),calc(var(--y) - 47vh)) rotate(var(--spin))}}@keyframes unknown-blackout-overlay{0%,18%{opacity:.1}19%,32%{opacity:.96}33%,46%{opacity:.28}47%,100%{opacity:1}}
@keyframes unknown-stage-pulse{50%{filter:brightness(1.8) contrast(1.3)}}@keyframes unknown-code{50%{opacity:.25}}@keyframes unknown-breach{50%{transform:translateX(5px);filter:hue-rotate(90deg)}}@keyframes unknown-blackout{0%,18%{filter:brightness(2)}19%,32%{filter:brightness(.05)}33%,46%{filter:brightness(1.6)}47%,100%{filter:brightness(.15)}}@keyframes unknown-escape{0%,100%{transform:translate(0) scale(.72)}25%{transform:translate(92px,-38px) scale(.48)}50%{transform:translate(-105px,44px) scale(.32)}75%{transform:translate(48px,76px) scale(.2)}}

@media(max-width:680px){
  .lab-hero-copy{transform:none}
  .eyebrow,.project-count,.project-meta,.project-visual figcaption,.project-story dt,.project-link small,.lab-provocation>div,.lab-ascii-label,.experiment-number,.experiment-type,.experiment-status,.viewer-chrome,.viewer-copy>span,.viewer-copy [data-viewer-action],.rule-ticker span,.lab-footer-note span,.site-footer{font-size:11px!important}
  .project-story{min-height:0}
  .project-story h3{max-width:12ch;margin-top:38px;font-size:clamp(38px,11.8vw,54px);line-height:.98;text-wrap:balance}
  .project-story h3 br{display:none}
}

/* Tripometry uses an actual product capture instead of the route placeholder. */
.tripometry-preview{overflow:hidden;border:1px solid #506128;background:#060906 url("../../img/lab/tripometry-site.png?v=20260916-2") center/cover no-repeat;background-size:cover;box-shadow:0 0 30px rgba(216,255,62,.055)}
.tripometry-preview::before{content:none}
.tripometry-preview::after{content:"";position:absolute;inset:0;right:auto;bottom:auto;width:100%;height:100%;background:linear-gradient(180deg,rgba(3,7,4,.02),rgba(3,7,4,.16));box-shadow:inset 0 0 32px rgba(0,0,0,.28);pointer-events:none}

/* Product screenshots fill the scan window instead of inheriting the terminal-thumbnail frame. */
.viewer-stage .tripometry-preview{width:100%;height:100%;aspect-ratio:auto;border:0;background-position:center calc(50% - 14px);background-size:cover;box-shadow:none}

/* Every experiment action reads as interactive, not only the playable one. */
.experiment-row:hover .experiment-status,.experiment-row:focus-visible .experiment-status{border-color:var(--lab-accent);background:var(--lab-accent);color:#050707}
.experiment-row:focus-visible{outline:1px solid var(--lab-accent);outline-offset:-1px}
.experiment-row[data-experiment="tripometry"]:hover .experiment-status,.experiment-row[data-experiment="tripometry"]:focus-visible .experiment-status{border-color:#343837;background:transparent;color:#8f928f}
.experiment-row[data-experiment="unknown"]:hover .experiment-status,.experiment-row[data-experiment="unknown"]:focus-visible .experiment-status{border-color:#343837;background:transparent;color:#8f928f}

/* Keep the containment rings optically sharp after the fourth-press reset. */
.unknown-preview,
.viewer-stage[data-unknown-phase="1"] .unknown-preview,
.unknown-preview[data-phase="4"] {
  box-shadow: none;
  filter: none;
}

/* Let the After Dial terminal glow gently without clouding the viewer stage. */
.afterdial-preview {
  box-shadow: 0 0 26px rgba(117, 255, 168, .055);
}
.viewer-stage:has(.afterdial-preview) {
  background: radial-gradient(circle at 50% 40%, rgba(82, 215, 232, .045), transparent 43%),
    repeating-linear-gradient(0deg, transparent 0 4px, rgba(255, 255, 255, .018) 4px 5px);
}

/* Keep the containment satellites circular throughout the final burst. */
.containment-breach i {
  width: clamp(30px, 5.5vw, 72px);
  height: auto;
  aspect-ratio: 1;
  border-radius: 50%;
  background: radial-gradient(circle at 38% 32%, rgba(216, 255, 62, .16), rgba(82, 215, 232, .075) 48%, transparent 72%);
  animation-name: containment-circle-burst;
}
.containment-breach i::after {
  inset: 25%;
  aspect-ratio: 1;
  border-radius: 50%;
}
@keyframes containment-circle-burst {
  0% {
    opacity: 0;
    transform: translate(-50%, -50%) scale(.04);
  }
  16% { opacity: .92; }
  44% {
    transform: translate(calc(-50% + var(--cx)), calc(-50% + var(--cy))) scale(1);
  }
  72% {
    opacity: .68;
    transform: translate(calc(-50% + var(--tx) * .72), calc(-50% + var(--ty) * .72)) scale(.64);
  }
  100% {
    opacity: 0;
    transform: translate(calc(-50% + var(--tx)), calc(-50% + var(--ty))) scale(.16);
  }
}
