@font-face{font-family:"Press Start 2P";font-style:normal;font-weight:400;font-display:swap;src:url(/assets/fonts/press-start-2p-latin.woff2) format("woff2");unicode-range:U+0000-00FF,U+2000-206F}#main{counter-reset:section lab}.lab-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-3xl) var(--space-xl);--lab-ring: rgba(2, 2, 2, .12)}[data-theme=dark] .lab-grid{--lab-ring: rgba(255, 255, 255, .16)}.lab-card{counter-increment:lab}.lab-card--wide{grid-column:1 / -1}.lab-card-main{display:block;color:inherit;text-decoration:none}.lab-card-main:hover{color:inherit}button.lab-card-main{width:100%;text-align:left;background:none;border:none;padding:0;font:inherit;cursor:pointer}.lab-card-main:focus-visible{outline:var(--focus) solid 2px;outline-offset:4px;border-radius:var(--radius)}.lab-card-preview{position:relative;aspect-ratio:16 / 10;border-radius:var(--radius);overflow:hidden;background:var(--surface-tint);box-shadow:inset 0 0 0 1px var(--lab-ring);container-type:inline-size;filter:grayscale(1);opacity:.92;transition:filter .3s ease,opacity .3s ease,box-shadow var(--dur-micro) var(--ease)}.lab-card--wide .lab-card-preview{aspect-ratio:2 / 1}.lab-card-preview .lab-anim{animation-play-state:paused}.lab-card-body{padding:var(--space-md) .15rem 0}.lab-card-body:before{content:counter(lab,decimal-leading-zero);display:block;font-size:var(--text-xs);color:var(--gray-400);font-variant-numeric:tabular-nums;letter-spacing:.04em;margin-bottom:.3rem}.lab-card h3{font-size:var(--text-sm);font-weight:600;letter-spacing:-.01em;line-height:1.3;margin:0 0 .2rem;color:var(--gray-900);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-decoration:underline;text-decoration-color:transparent;text-decoration-thickness:1px;text-underline-offset:.2em;transition:text-decoration-color .15s ease}.lab-card p{margin:0;font-size:var(--text-xs);line-height:1.4;color:var(--gray-400);text-transform:none;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3;line-clamp:3;overflow:hidden}.lab-card-meta{display:flex;align-items:center;flex-wrap:wrap;gap:var(--space-sm);margin-top:var(--space-sm);padding:0 .15rem}.lab-chip{display:inline-flex;align-items:center;padding:.05rem .4rem;border:1px solid var(--border);border-radius:6px;font-size:var(--text-xs);line-height:1.5;color:var(--gray-400)}a.lab-chip{transition:color .15s ease,border-color .15s ease,background-color .15s ease}a.lab-chip:hover{color:var(--gray-900);border-color:var(--gray-400);background-color:var(--surface-tint)}a.lab-chip:focus-visible{border-radius:6px}.lab-card-go{margin-left:auto;font-size:var(--text-xs);color:var(--gray-400);white-space:nowrap}.lab-go-cursor{display:inline-block;margin-left:.35rem;opacity:0;transition:opacity .15s ease}@media (hover: hover){.lab-card:hover .lab-card-preview,.lab-card:focus-within .lab-card-preview{filter:none;opacity:1;box-shadow:inset 0 0 0 1px var(--lab-ring),var(--elev-2);transition:filter .3s ease,opacity .3s ease,box-shadow var(--dur-lift) var(--ease)}.lab-card:hover .lab-anim,.lab-card:focus-within .lab-anim{animation-play-state:running}.lab-card:hover h3,.lab-card:focus-within h3{text-decoration-color:currentColor}.lab-card:hover .lab-go-cursor,.lab-card:focus-within .lab-go-cursor{opacity:1;animation:press-start-blink .8s steps(1) infinite}}[data-theme=dark] .lab-card-preview{filter:grayscale(1) brightness(1.15);opacity:1}[data-theme=dark] .lab-preview--quest,[data-theme=dark] .lab-preview--room,[data-theme=dark] .lab-preview--terminus{filter:grayscale(1) brightness(1.6) contrast(.88)}[data-theme=dark] .lab-preview--ide{filter:grayscale(1) brightness(1.5) contrast(.88)}.lab-preview--quest{--q-ink: #000000;--q-white: #FCFCFC;--q-sky: #3CBCFC;--q-blue: #0058F8;--q-blue-deep: #0000FC;--q-green: #00B800;--q-green-lt: #58D854;--q-gold: #F8B800;--q-red: #F83800;--q-cloud: #FCFCFC;background:var(--q-ink);font-family:"Press Start 2P",monospace}[data-theme=dark] .lab-preview--quest{--q-sky: #0000FC;--q-blue: #0000BC;--q-blue-deep: #000000;--q-green: #005800;--q-green-lt: #00A800;--q-cloud: #6888FC}[data-theme=dark] .lab-preview--quest .q-stars{display:block}.lab-preview--quest>*{position:absolute}.q-sky{top:0;right:0;bottom:0;left:0;background:linear-gradient(180deg,var(--q-blue-deep) 0 42%,var(--q-blue) 42% 60%,var(--q-sky) 60% 100%)}.q-stars{top:0;right:0;bottom:0;left:0;display:none}.q-stars i{position:absolute;width:1.4cqw;height:1.4cqw;background:var(--q-white);opacity:.9}.q-stars i:nth-child(1){left:8%;top:9%}.q-stars i:nth-child(2){left:21%;top:17%}.q-stars i:nth-child(3){left:34%;top:6%}.q-stars i:nth-child(4){left:63%;top:12%}.q-stars i:nth-child(5){left:79%;top:20%}.q-stars i:nth-child(6){left:92%;top:8%;opacity:.6}.q-clouds{left:0;top:62%;width:200%;height:8cqw;animation:q-drift 14s linear infinite}.q-cloud{position:absolute;top:0;width:9cqw;height:2.4cqw;background:var(--q-cloud)}.q-cloud:before,.q-cloud:after{content:"";position:absolute;top:-2.4cqw;width:2.4cqw;height:2.4cqw;background:var(--q-cloud)}.q-cloud:before{left:1.6cqw}.q-cloud:after{left:4.8cqw;width:1.6cqw}.q-cloud:nth-child(1){left:6%}.q-cloud:nth-child(2){left:22%;top:3.6cqw}.q-cloud:nth-child(3){left:38%}.q-cloud:nth-child(4){left:56%}.q-cloud:nth-child(5){left:72%;top:3.6cqw}.q-cloud:nth-child(6){left:88%}.q-seam{left:0;right:0;bottom:16%;height:2cqw;overflow:hidden}.q-seam-track{position:absolute;inset:0 auto 0 0;width:200%;background:repeating-conic-gradient(var(--q-sky) 0 25%,var(--q-green-lt) 0 50%) 0 0 / 2cqw 2cqw;animation:q-drift 7s linear infinite}.q-ground{left:0;right:0;bottom:0;height:16%;background:var(--q-green);border-top:1cqw solid var(--q-green-lt)}.q-title{left:0;right:0;top:11%;text-align:center;line-height:1.4}.q-logo{display:block;font-size:7cqw;color:var(--q-white);text-shadow:.12em .12em 0 var(--q-blue-deep)}.q-start{display:block;margin-top:1.2em;font-size:3.6cqw;color:var(--q-gold);animation:press-start-blink .8s steps(1) infinite}@keyframes q-drift{0%{transform:translateZ(0)}to{transform:translate3d(-50%,0,0)}}.lab-preview--room{--r-night: #6d5c85;--r-wall: #6d5c85;--r-wall-d: #4e4263;--r-lamp: #f0c46a;--r-crt: #62d2c8;--r-crt-d: #1d5f6b;--r-carpet: #7a3f4a;--r-paper: #d8cfc0;--r-wood: #8a5f3a;--r-wood-d: #5e3f26;--r-sky: #8fb7e4;--r-star: #8fa8d8;--r-rust: #b4562f;--r-ink: #0d0a13;background:var(--r-night);font-family:"Press Start 2P",monospace}[data-theme=dark] .lab-preview--room{--r-night: #16121e;--r-wall: #40304f;--r-wall-d: #2a2137;--r-sky: #1b2a4a}[data-theme=dark] .lab-preview--room .r-window i,[data-theme=dark] .lab-preview--room .r-lamp{display:block}.lab-preview--room>*{position:absolute}.r-wall{top:0;right:0;bottom:25%;left:0;background:var(--r-wall)}.r-skirt{left:0;right:0;bottom:25%;height:4%;background:var(--r-wall-d)}.r-carpet{left:0;right:0;bottom:13%;height:12%;background:var(--r-carpet)}.r-window{left:5%;top:15%;width:18%;height:30%;background:var(--r-sky);box-shadow:inset 0 0 0 .6cqw var(--r-wood-d)}.r-window i{display:none;position:absolute;width:1cqw;height:1cqw;background:var(--r-star)}.r-window i:nth-child(1){left:22%;top:20%}.r-window i:nth-child(2){left:62%;top:32%}.r-window i:nth-child(3){left:38%;top:58%}.r-window i:nth-child(4){left:74%;top:70%;opacity:.7}.r-window:before,.r-window:after{content:"";position:absolute;background:var(--r-wood-d)}.r-window:before{left:50%;top:0;bottom:0;width:.6cqw;margin-left:-.3cqw}.r-window:after{top:50%;left:0;right:0;height:.6cqw;margin-top:-.3cqw}.r-poster{left:30%;top:13%;width:12%;height:21%;background:var(--r-rust)}.r-poster i{position:absolute;left:16%;width:68%;height:8%;background:var(--r-paper)}.r-poster i:nth-child(1){top:20%}.r-poster i:nth-child(2){top:40%;width:44%}.r-door{left:79%;top:12%;bottom:25%;width:16%;background:var(--r-wood);box-shadow:inset 0 0 0 .8cqw var(--r-wood-d)}.r-door i{position:absolute;left:16%;top:52%;width:1.4cqw;height:1.4cqw;background:var(--r-lamp)}.r-desk{left:45%;top:55%;width:29%;height:3.5%;background:var(--r-wood-d)}.r-crt{left:52%;top:38%;width:16%;height:17%;background:var(--r-crt-d)}.r-screen{position:absolute;top:12%;right:12%;bottom:12%;left:12%;background:var(--r-crt);overflow:hidden}.r-scan{position:absolute;left:0;right:0;top:-20%;height:20%;background:#ffffff59;animation:r-scan 3.5s linear infinite}.r-hotspot{left:50.6%;top:36.6%;width:18.8%;height:19.8%;box-shadow:inset 0 0 0 .5cqw var(--r-lamp);opacity:0;transition:opacity .2s ease .6s}.r-lamp{display:none;left:34%;top:22%;width:52%;height:48%;background:radial-gradient(ellipse at 50% 60%,#f0c46a4d,#f0c46a1f 45%,#f0c46a00 72%);mix-blend-mode:screen;animation:r-breathe 4s ease-in-out infinite alternate}.r-cursor{left:34%;top:20%;width:3cqw;height:3cqw;transition:transform .6s cubic-bezier(.22,.61,.36,1)}.r-cursor:before,.r-cursor:after{content:"";position:absolute;background:var(--r-paper)}.r-cursor:before{left:50%;top:0;bottom:0;width:.6cqw;margin-left:-.3cqw}.r-cursor:after{top:50%;left:0;right:0;height:.6cqw;margin-top:-.3cqw}.r-verb{left:0;right:0;bottom:0;height:13%;background:var(--r-ink);display:flex;align-items:center;justify-content:center}.r-verb span{position:absolute;font-size:2.6cqw;color:var(--r-paper);transition:opacity .2s ease .5s;white-space:nowrap}.r-verb-b{opacity:0}@keyframes r-scan{0%{transform:translateZ(0)}to{transform:translate3d(0,600%,0)}}@keyframes r-breathe{0%{opacity:.85}to{opacity:1}}@media (hover: hover){.lab-card:hover .r-cursor,.lab-card:focus-within .r-cursor{transform:translate3d(23cqw,17cqw,0)}.lab-card:hover .r-hotspot,.lab-card:focus-within .r-hotspot{opacity:1}.lab-card:hover .r-verb-a,.lab-card:focus-within .r-verb-a{opacity:0}.lab-card:hover .r-verb-b,.lab-card:focus-within .r-verb-b{opacity:1}}.lab-preview--hand{background:var(--bg);display:flex;align-items:center}.hw-svg{width:100%;height:auto;display:block}.hw-rule line{stroke:var(--border);stroke-width:2.6}.hw-rule line.hw-rule-base{stroke:var(--gray-400);opacity:.45}.hw-rule line.hw-rule-x{stroke-dasharray:5 6}.hw-ink{fill:none;stroke:var(--gray-900);stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:1px;stroke-dashoffset:0px}.hw-dot{fill:var(--gray-900)}@keyframes hw-write{0%{stroke-dashoffset:0px}22%{stroke-dashoffset:1px}to{stroke-dashoffset:0px}}@keyframes hw-lift{0%,20%{opacity:1}24%,86%{opacity:0}to{opacity:1}}@media (hover: hover){.lab-card:hover .hw-ink,.lab-card:focus-within .hw-ink{animation:hw-write 2.4s ease-in-out both}.lab-card:hover .hw-dot,.lab-card:focus-within .hw-dot{animation:hw-lift 2.4s linear both}}.lab-preview--dm{--dm-bg: #f3f2ef;--dm-edge: #d8d3ca;--dm-mut: #84806f;--dm-fg: #2c2a26;--dm-amber: #b07a28;--dm-wash: rgba(176, 122, 40, .07);--dm-tool: #9c988c;--dm-meter: #e4e0d6;--dm-human: #b3afa6;background:var(--dm-bg);display:flex;align-items:center;justify-content:center}[data-theme=dark] .lab-preview--dm{--dm-bg: #0c0c0d;--dm-edge: #2a2a2e;--dm-mut: #8d8a85;--dm-fg: #efece6;--dm-amber: #f7c68d;--dm-wash: rgba(247, 198, 141, .06);--dm-tool: #6f6c68;--dm-meter: #1e1e21;--dm-human: #4a4a50}.lab-card-preview .dmp-caret,.lab-card-preview .dmp-meter i{animation-play-state:paused}@media (hover: hover){.lab-card:hover .dmp-caret,.lab-card:focus-within .dmp-caret,.lab-card:hover .dmp-meter i,.lab-card:focus-within .dmp-meter i{animation-play-state:running}}.lab-preview--ide{background:var(--ide-bg);color:var(--ide-fg);font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;display:flex;flex-direction:column}.ide-tab{font-size:3.4cqw;padding:1.8cqw 4cqw 1.4cqw;color:var(--ide-fg);opacity:.6;border-bottom:1px solid rgba(128,128,128,.22)}.ide-tab span{padding-bottom:1.2cqw;border-bottom:.5cqw solid var(--ide-cursor)}.ide-body{flex:1;display:flex;flex-direction:column;justify-content:center;padding:2cqw 0;font-size:4.4cqw;line-height:1.75}.ide-line{display:flex;gap:3cqw;padding:0 4cqw;white-space:pre}.ide-line i{flex:0 0 auto;font-style:normal;color:var(--ide-ln)}.ide-line--active{background:#8080801f}.ide-c{color:var(--ide-comment)}.ide-k{color:var(--ide-key)}.ide-v{color:var(--ide-var)}.ide-p{color:var(--ide-punct)}.ide-pr{color:var(--ide-prop)}.ide-s{color:var(--ide-str)}.ide-n{color:var(--ide-num)}.ide-cur{display:inline-block;width:.55em;height:1.05em;background:var(--ide-cursor);vertical-align:-.18em;margin-left:.1em;animation:press-start-blink .9s steps(1) infinite}.ide--1984{--ide-bg: #0d0f31;--ide-fg: #f1f1f1;--ide-ln: #3B4D66;--ide-comment: #525863;--ide-key: #FF16B0;--ide-var: #96A1FF;--ide-punct: #f1f1f1;--ide-prop: #46BDFF;--ide-str: #DF81FC;--ide-num: #FF16B0;--ide-cursor: #B3F361}.ide--hydra{--ide-bg: #2f313f;--ide-fg: #f1f1f1;--ide-ln: #4e5561;--ide-comment: #5C6370;--ide-key: #FF407B;--ide-var: #96A1FF;--ide-punct: #f1f1f1;--ide-prop: #96A1FF;--ide-str: #D7DAE0;--ide-num: #96A1FF;--ide-cursor: #ffffff}.ide--mrpink{--ide-bg: #25252F;--ide-fg: #F6F8F7;--ide-ln: #6B6D8C;--ide-comment: #525863;--ide-key: #D167B5;--ide-var: #B4C1D0;--ide-punct: #D58FDB;--ide-prop: #D58FDB;--ide-str: #B4C1D0;--ide-num: #FAD481;--ide-cursor: #D58FDB}.ide--untitled{--ide-bg: #22252F;--ide-fg: #B4C8D4;--ide-ln: #34425E;--ide-comment: #525863;--ide-key: #D63667;--ide-var: #7A83D1;--ide-punct: #FFFFFF;--ide-prop: #627DB4;--ide-str: #B4C8D4;--ide-num: #96A1FF;--ide-cursor: #85EEA7}.lab-preview--hand,[data-theme=dark] .lab-preview--hand{filter:none;opacity:1}.lab-preview--plain{background:var(--surface-tint);display:flex;align-items:center;justify-content:center;font-size:var(--text-lg);color:var(--gray-400);letter-spacing:-.02em}@media (hover: none){.lab-card-preview,[data-theme=dark] .lab-card-preview{filter:none;opacity:1}}@media (prefers-reduced-motion: reduce){.lab-card-preview,[data-theme=dark] .lab-card-preview{filter:none;opacity:1}.lab-card-preview *,.lab-card:hover .lab-card-preview *{animation:none!important}.r-cursor{transition:none}}@media (max-width: 48rem){.lab-grid{grid-template-columns:1fr;gap:var(--space-2xl)}.lab-card--wide{grid-column:auto}.lab-card--wide .lab-card-preview{aspect-ratio:16 / 10}}.rec-row-link:hover .lab-card-preview,.pg-sec figure:hover .lab-card-preview,.pl-sheet a:hover .lab-card-preview,.rec-row-link:hover .home-card-preview,.pg-sec figure:hover .home-card-preview,.pl-sheet a:hover .home-card-preview{filter:none;opacity:1}.rec-row-link:hover .tp-anim,.pl-sheet a:hover .tp-anim,.pg-sec figure:hover .tp-anim,.rec-row-link:hover .tp-anim:before,.pl-sheet a:hover .tp-anim:before,.pg-sec figure:hover .tp-anim:before,.rec-row-link:hover .tp-anim:after,.pl-sheet a:hover .tp-anim:after,.pg-sec figure:hover .tp-anim:after{animation-play-state:running}
