.explainer-opening{--workshop-paper:#f6f2e8;--workshop-ink:#30372f;--workshop-muted:#646b60;--workshop-green:#3f6650;--workshop-line:#cfcfc0;color:var(--workshop-ink);background:var(--workshop-paper);padding:0 clamp(20px,5vw,80px) 44px;font-family:var(--font-manrope),sans-serif;color-scheme:light}.explainer-opening ::-moz-selection{background:#d3dfc4;color:#263d2d}.explainer-opening ::selection{background:#d3dfc4;color:#263d2d}.explainer-opening :is(button,a,input,summary):focus-visible{outline:2px solid var(--workshop-green);outline-offset:5px}.explainer-opening button{font:inherit;cursor:pointer}.workshop-nav{display:flex;justify-content:space-between;align-items:center;gap:24px;max-width:1320px;margin:auto;min-height:76px;border-bottom:1px solid var(--workshop-line);font-size:.8rem}.workshop-nav a{display:inline-flex;align-items:center;gap:9px;min-height:44px;text-decoration:none}.workshop-nav a:hover{text-decoration:underline;text-underline-offset:5px}.workshop-nav>span{color:var(--workshop-muted)}.workshop-intro{max-width:1320px;margin:auto;padding:clamp(38px,5vw,68px) 0 36px;display:grid;grid-template-columns:1.15fr 1fr;align-items:end;gap:clamp(24px,6vw,110px)}.workshop-intro h1{margin:0;max-width:19ch;font:450 clamp(2.4rem,4.3vw,4.3rem)/1.04 var(--font-newsreader),Georgia,serif;letter-spacing:-.035em;text-wrap:balance}.workshop-intro>p{max-width:47ch;margin:0 0 4px;color:var(--workshop-muted);font-size:1rem;line-height:1.65}.workshop-bench{display:grid;grid-template-columns:270px minmax(0,1fr);max-width:1320px;margin:0 auto;border:1px solid var(--workshop-line);border-radius:14px;overflow:hidden}.workshop-actions{grid-row:span 2;padding:28px 22px;border-right:1px solid var(--workshop-line);background:#eeeee2}.workshop-playback{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:20px}.workshop-playback h2{font:450 1.5rem/1.2 var(--font-newsreader),serif;letter-spacing:-.025em}.workshop-play{display:inline-flex;align-items:center;gap:5px;min-height:40px;padding:0 7px;border:0;color:var(--workshop-green);font-size:.75rem!important;background:transparent}.workshop-play:hover{text-decoration:underline;text-underline-offset:4px}.workshop-steps{margin:0;padding:0;list-style:none;display:grid;gap:10px}.workshop-steps button{display:flex;width:100%;gap:10px;align-items:center;text-align:left;min-height:52px;border:1px solid #b9c0ad;border-radius:8px;padding:10px 12px;color:#4c5748;background:transparent;font-size:.8rem;line-height:1.4;transition:background-color .2s,color .2s}.workshop-steps button>span:nth-child(2){flex:1}.workshop-steps button[data-next]{border-color:var(--workshop-green);background:var(--workshop-green);color:#fffdf2}.workshop-step-number{flex:0 0 23px;width:23px;height:23px;display:grid;place-items:center;border:1px solid;border-radius:50%;font-size:.7rem;font-variant-numeric:tabular-nums}.workshop-steps button[data-done]{border-color:transparent;color:#4c654f}.workshop-steps button[data-done]:hover{background:#dce3d1}.workshop-steps button:disabled{cursor:default;color:#757b6c;border-color:#d5d7c9}.workshop-steps button[data-next]:disabled{background:#d2ddc7;color:#36523e}.workshop-experiment{min-width:0;display:grid;gap:12px;margin:28px 0 0;border:0;border-top:1px solid var(--workshop-line);padding:18px 0 0}.workshop-experiment legend{padding:0 0 12px;font-size:.75rem;font-weight:650}.workshop-experiment label{display:flex;align-items:center;gap:8px;min-height:28px;font-size:.8rem;cursor:pointer}.workshop-experiment input{width:16px;height:16px;margin:0;accent-color:var(--workshop-green)}.workshop-reset{display:inline-flex;align-items:center;gap:7px;margin-top:20px;padding:0;min-height:40px;background:none;border:0;color:var(--workshop-muted);font-size:.75rem!important}.workshop-reset:hover{color:var(--workshop-green);text-decoration:underline;text-underline-offset:4px}.workshop-figure{position:relative;min-width:0;margin:0;display:flex;flex-direction:column}.workshop-figure-toolbar{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:16px 24px 0;color:var(--workshop-muted);font-size:.7rem}.workshop-inside{display:inline-flex;align-items:center;gap:7px;min-height:44px;border:0;padding:0 3px;background:transparent;color:var(--workshop-ink);font-size:.75rem!important}.workshop-inside>span{position:relative;width:29px;height:17px;border:1px solid #939b87;background:#d9ddce;border-radius:20px;transition:background .2s}.workshop-inside>span:after{position:absolute;left:2px;top:2px;width:11px;height:11px;border-radius:50%;background:#f9f6ec;border:1px solid #939b87;content:"";transition:transform .2s}.workshop-inside[aria-pressed=true]>span{background:var(--workshop-green);border-color:var(--workshop-green)}.workshop-inside[aria-pressed=true]>span:after{transform:translateX(12px);border-color:#e0e8d6}.mechanism-figure{display:block;width:100%;min-height:0;max-height:420px;height:auto;flex:1}.mechanism-door,.mechanism-gate-arm{transition:transform .8s cubic-bezier(.16,1,.3,1)}.workshop-parts{display:flex;justify-content:center;flex-wrap:wrap;gap:10px 20px;margin:-10px 20px 18px;padding:0;list-style:none;font-size:.67rem;color:var(--workshop-muted)}.workshop-parts li{display:flex;gap:5px;align-items:center}.workshop-parts li>span{display:grid;place-items:center;border:1px solid;border-radius:50%;width:16px;height:16px;font-size:.6rem}.workshop-parts li[data-active]{color:var(--workshop-green)}.workshop-caption{display:flex;gap:10px;align-items:flex-start;margin-top:auto;padding:18px 24px 22px;min-height:96px}.workshop-status-dot{flex:0 0 7px;width:7px;height:7px;margin-top:6px;border-radius:50%;background:#9a8b61}.workshop-status-dot[data-active]{background:#4e7c52}.workshop-caption strong{display:block;margin-bottom:5px;font-size:.85rem;font-weight:650}.workshop-caption>span>span{display:block;max-width:73ch;color:var(--workshop-muted);font-size:.8rem;line-height:1.6}.workshop-readouts{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));margin:0;padding:18px 24px;border-top:1px solid var(--workshop-line);background:#f0eee3}.workshop-readouts>div+div{border-left:1px solid var(--workshop-line);padding-left:20px}.workshop-readouts dt{margin-bottom:5px;font-size:.65rem;color:var(--workshop-muted)}.workshop-readouts dd{margin:0;font-size:.85rem;font-weight:650;font-variant-numeric:tabular-nums}.workshop-big-idea{display:flex;align-items:baseline;justify-content:center;flex-wrap:wrap;gap:12px 22px;max-width:1100px;margin:29px auto 0;text-align:center;font:450 clamp(1.2rem,1.9vw,1.65rem)/1.4 var(--font-newsreader),serif}.workshop-big-idea>span{font:650 .7rem/1.4 var(--font-manrope),sans-serif;color:var(--workshop-green)}.workshop-model-note{margin:13px auto 0;max-width:900px;color:var(--workshop-muted);text-align:center;font-size:.65rem;line-height:1.6}.workshop-freeplay{max-width:1320px;margin:40px auto 0;border-block:1px solid var(--workshop-line)}.workshop-freeplay summary{display:flex;gap:20px;align-items:center;justify-content:space-between;padding:20px 0;cursor:pointer;list-style:none;font-size:.85rem}.workshop-freeplay summary::-webkit-details-marker{display:none}.workshop-freeplay summary>span:last-child{display:inline-flex;align-items:center;gap:10px;color:var(--workshop-green);font-size:.75rem}.workshop-freeplay[open] summary svg{transform:rotate(90deg)}.workshop-original{position:relative;color:#f4efe6;background:#0c1615;padding:clamp(16px,3vw,40px);margin-bottom:24px;border-radius:12px;overflow:hidden}.workshop-original .ble-stage{min-height:560px}.workshop-original .ble-hud{pointer-events:auto;grid-row:3}.workshop-read-on{display:flex;justify-content:center;align-items:center;gap:9px;min-height:44px;width:-moz-fit-content;width:fit-content;margin:24px auto 0;color:var(--workshop-green)!important;font-size:.8rem;text-decoration:underline;text-underline-offset:5px}.workshop-anchor{scroll-margin-top:30px}@media (min-width:1500px){.mechanism-figure{max-height:460px}}@media (max-width:900px){.workshop-intro{grid-template-columns:1fr;gap:20px}.workshop-intro h1{max-width:24ch;font-size:clamp(2.4rem,6vw,3.7rem)}.workshop-intro>p{max-width:68ch}.workshop-bench{grid-template-columns:235px minmax(0,1fr)}.workshop-actions{padding:22px 16px}.workshop-figure-toolbar{padding-inline:16px}.workshop-figure-toolbar>span{max-width:15ch}.workshop-readouts{padding-inline:16px}.workshop-readouts>div+div{padding-left:10px}}@media (max-width:640px){.explainer-opening{padding-inline:20px;padding-bottom:32px}.workshop-nav{min-height:64px;font-size:.75rem}.workshop-nav>span{display:none}.workshop-intro{padding-top:32px;padding-bottom:28px;gap:16px}.workshop-intro h1{font-size:clamp(2rem,8.5vw,3rem)}.workshop-intro>p{font-size:.9rem;line-height:1.6}.workshop-bench{grid-template-columns:minmax(0,1fr);border-radius:12px}.workshop-figure{grid-row:1}.workshop-figure-toolbar{padding:10px 14px 0}.workshop-figure-toolbar>span{max-width:none;font-size:.6rem}.workshop-inside{font-size:.7rem!important}.mechanism-figure{flex:none;max-height:none}.workshop-caption{padding:12px 16px 17px;min-height:88px}.workshop-caption strong{font-size:.8rem}.workshop-caption>span>span{font-size:.75rem}.workshop-readouts{grid-row:2;padding:14px 16px}.workshop-readouts dd{font-size:.72rem}.workshop-readouts dt{font-size:.6rem}.workshop-actions{grid-row:3;padding:20px 16px;border-right:0;border-top:1px solid var(--workshop-line)}.workshop-playback{margin-bottom:12px}.workshop-steps{grid-template-columns:1fr 1fr;gap:8px}.workshop-steps button{min-height:64px;padding:9px;gap:7px;font-size:.72rem}.workshop-steps button>svg{display:none}.workshop-step-number{flex-basis:21px;width:21px;height:21px}.workshop-experiment{grid-template-columns:1fr 1fr;gap:12px;margin-top:22px;padding-top:10px}.workshop-experiment label{min-height:44px;font-size:.7rem}.workshop-reset{margin-top:12px}.workshop-big-idea{display:grid;gap:9px;margin-top:25px}.workshop-parts{display:grid;justify-content:start;margin:0 16px 12px;font-size:.65rem}.workshop-original .ble-stage{min-height:580px}}@media (prefers-reduced-motion:reduce){.explainer-opening *,.explainer-opening :after{transition:none!important;animation:none!important;scroll-behavior:auto!important}}.mechanism-figure[data-animated=false] .motion-transient{display:none}.mechanism-figure[data-animated=true] .mechanism-traveller{offset-distance:0;offset-rotate:0deg;animation:mechanism-travel 2.4s linear infinite}.mechanism-figure[data-animated=true] .mechanism-command .mechanism-traveller{animation-duration:.8s;animation-delay:80ms;animation-iteration-count:1;animation-fill-mode:both}.mechanism-figure[data-animated=true] .mechanism-radio-pulse{animation:mechanism-broadcast 2.4s linear infinite}.mechanism-figure[data-animated=true] .mechanism-shell{transition:opacity .45s ease-out}.mechanism-figure[data-animated=true][data-step="1"] .mechanism-ticket-present{animation:mechanism-present var(--stage-duration) cubic-bezier(.16,1,.3,1) both}.mechanism-figure[data-animated=true] .mechanism-scanner{animation:mechanism-scan .8s ease-in-out 3}.mechanism-figure[data-animated=true] .mechanism-gate-open{animation:mechanism-open-gate var(--stage-duration) cubic-bezier(.16,1,.3,1) both}.mechanism-figure[data-animated=true] .mechanism-motor{animation:mechanism-motor var(--stage-duration) ease-in-out both}.mechanism-figure[data-animated=true][data-step="1"] .mechanism-room{animation:mechanism-room 1.5s cubic-bezier(.16,1,.3,1) both}.mechanism-figure[data-animated=true][data-step="3"] .mechanism-route{stroke-dasharray:1;animation:mechanism-draw-route var(--stage-duration) ease-in-out both}.mechanism-figure[data-animated=true] .mechanism-walker{offset-rotate:0deg;animation:mechanism-travel var(--stage-duration) ease-in-out both}.mechanism-figure[data-animated=true] .mechanism-exhibit-awake{animation:mechanism-wake var(--stage-duration) ease-out both}.mechanism-figure[data-animated=true] .mechanism-audio-bar{animation:mechanism-waveform .68s ease-in-out infinite alternate}.mechanism-figure[data-animated=true] .mechanism-catalog-scan{animation:mechanism-catalog 1.2s ease-in-out 2}.mechanism-figure[data-animated=true] .mechanism-playhead{animation:mechanism-align var(--stage-duration) cubic-bezier(.16,1,.3,1) both}.mechanism-figure[data-animated=true] .mechanism-camera-flash{animation:mechanism-exposure 2.4s ease-out infinite both}.mechanism-figure[data-animated=true][data-step="3"] .mechanism-splat-sample{animation:mechanism-fit-sample calc(var(--stage-duration) - .78s) cubic-bezier(.16,1,.3,1) both}.mechanism-figure[data-animated=true][data-step="4"] .mechanism-splat-sample{animation:mechanism-parallax var(--stage-duration) cubic-bezier(.45,0,.2,1) both}.mechanism-figure[data-animated=true][data-step="1"] .mechanism-robot-arm{animation:mechanism-acknowledge var(--stage-duration) cubic-bezier(.16,1,.3,1) both}.mechanism-figure[data-animated=true][data-step="1"] .mechanism-robot-head{transform-box:fill-box;transform-origin:center bottom;animation:mechanism-nod var(--stage-duration) ease-in-out both}.mechanism-figure[data-animated=true] .mechanism-door-open{animation:mechanism-open-door var(--stage-duration) cubic-bezier(.16,1,.3,1) both}.mechanism-figure[data-running=false] *,.workshop-bench[data-motion-paused] .workshop-step-progress{animation-play-state:paused!important}.workshop-view-controls{display:flex;align-items:center;gap:20px}.workshop-motion-toggle{display:inline-flex;align-items:center;gap:6px;min-height:44px;padding:0 3px;border:0;color:var(--workshop-green);background:none;font-size:.75rem!important}.workshop-motion-toggle:hover{text-decoration:underline;text-underline-offset:4px}.workshop-play[aria-pressed=true]{color:var(--workshop-green);font-weight:650}.workshop-play{flex-shrink:0;white-space:nowrap}.workshop-playback h2{font-size:1.25rem;white-space:nowrap}.workshop-steps button{position:relative;overflow:hidden}.workshop-steps button[data-running]{border-color:var(--workshop-green)}.workshop-steps button>.workshop-step-progress{position:absolute;left:0;right:0;bottom:0;height:3px;border:0;border-radius:0;background:#dce5bd;transform-origin:left;animation:workshop-step-progress var(--stage-duration) linear both}@keyframes mechanism-travel{0%{offset-distance:0}to{offset-distance:100%}}@keyframes mechanism-broadcast{0%{transform:scale(.08);opacity:0}12%{opacity:.7}75%{opacity:.26}to{transform:scale(1);opacity:0}}@keyframes mechanism-present{0%{transform:var(--present-from)}to{transform:translate(0)}}@keyframes mechanism-scan{0%,to{transform:translate(0);opacity:.3}50%{transform:translate(-23px,10px);opacity:1}}@keyframes mechanism-open-gate{0%,33%{transform:rotate(0deg)}to{transform:rotate(-78deg)}}@keyframes mechanism-motor{0%,33%{transform:rotate(0deg)}to{transform:rotate(540deg)}}@keyframes mechanism-room{0%{opacity:.12;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes mechanism-draw-route{0%{stroke-dashoffset:1}to{stroke-dashoffset:0}}@keyframes mechanism-wake{0%,32%{opacity:.15}72%,to{opacity:1}}@keyframes mechanism-waveform{0%{transform:scaleY(.3)}to{transform:scaleY(1.1)}}@keyframes mechanism-catalog{0%,to{transform:translate(0)}50%{transform:translate(-25px,10px)}}@keyframes mechanism-align{0%,20%{transform:translateX(0)}to{transform:translateX(134px)}}@keyframes mechanism-exposure{0%,35%,8%,to{opacity:0}15%,22%{opacity:.35}}@keyframes mechanism-fit-sample{0%{transform:var(--sample-from);opacity:0}to{transform:translate(0) scale(1);opacity:1}}@keyframes mechanism-parallax{0%{transform:translate(0)}to{transform:var(--parallax-shift)}}@keyframes mechanism-acknowledge{0%,14%{transform:translateY(20px)}50%,to{transform:translateY(0)}}@keyframes mechanism-nod{0%,15%,to{transform:rotate(0deg)}35%{transform:rotate(4deg)}65%{transform:rotate(-2deg)}}@keyframes mechanism-open-door{0%,33%{transform:matrix(1,0,0,1,0,0)}to{transform:matrix(.22,-.3,0,1,0,0)}}@keyframes workshop-step-progress{0%{transform:scaleX(0)}to{transform:scaleX(1)}}@media (max-width:640px){.workshop-view-controls{gap:12px}.workshop-motion-toggle{font-size:.7rem!important}.workshop-motion-toggle>span{display:none}.workshop-motion-toggle{min-width:44px;justify-content:center}}@media (prefers-reduced-motion:reduce){.mechanism-figure *,.workshop-step-progress{animation:none!important;transition:none!important}.mechanism-figure .motion-transient{display:none}}