html,body.lab-body{height:100%}body.lab-body{margin:0;overflow:hidden;background:var(--bg)}.lab [hidden]{display:none!important}.lab{position:fixed;inset:0}.lab-canvas{position:absolute;inset:0}.lab-canvas canvas{display:block;width:100%;height:100%}.lab-hud{position:absolute;top:0;left:0;right:0;display:flex;justify-content:space-between;align-items:center;gap:var(--sp-4);padding:var(--sp-4) var(--sp-5);font-family:var(--font-mono);font-size:var(--fs-xs);letter-spacing:var(--tracking-wide);text-transform:uppercase;color:var(--text-dim);pointer-events:none}.lab-hud a,.lab-hud button{pointer-events:auto}.lab-hud span,.lab-hud a,.lab-hud button{white-space:nowrap}.lab-hud-left,.lab-hud-right{display:flex;align-items:center;gap:var(--sp-5)}.lab-brand{color:var(--accent)}.lab-hud b{color:var(--accent-strong);font-weight:600}.lab-exit{padding:.3rem .6rem;background:#0b0f14b3;border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-dim);font:inherit;letter-spacing:inherit;text-transform:inherit;text-decoration:none;cursor:pointer}.lab-exit:hover{color:var(--text-strong);border-color:var(--border-strong)}.lab-key{display:inline-block;min-width:1.6em;padding:.1rem .4rem;margin-right:2px;background:var(--surface-2);border:1px solid var(--border-strong);border-radius:var(--radius-sm);color:var(--accent-strong);font-family:var(--font-mono);font-size:var(--fs-xs);text-align:center;text-transform:none;letter-spacing:0}.lab-prompt{position:absolute;left:50%;bottom:9%;transform:translate(-50%);display:inline-flex;align-items:center;gap:var(--sp-3);padding:.55rem .95rem;background:#111821eb;border:1px solid var(--accent-line);border-radius:var(--radius-pill);color:var(--text-strong);font-family:var(--font-mono);font-size:var(--fs-sm);cursor:pointer;backdrop-filter:blur(6px);animation:lab-pop .25s var(--ease)}.lab-prompt:hover{border-color:var(--accent)}.lab-panel{position:absolute;top:0;right:0;bottom:0;width:min(460px,100%);padding:var(--sp-8) var(--sp-6) var(--sp-8);background:#0e141bf5;border-left:1px solid var(--border);overflow:auto;backdrop-filter:blur(8px);animation:lab-slide .28s var(--ease)}@keyframes lab-slide{0%{transform:translate(24px);opacity:0}}.lab-close{position:absolute;top:var(--sp-4);right:var(--sp-4);display:inline-flex;align-items:center;gap:var(--sp-2);padding:.3rem .5rem;background:none;border:1px solid transparent;border-radius:var(--radius-sm);color:var(--text-dim);font-family:var(--font-mono);font-size:var(--fs-xs);cursor:pointer}.lab-close:hover{color:var(--text-strong);border-color:var(--border)}.lab-panel h2{margin:var(--sp-2) 0 var(--sp-3);font-size:var(--fs-2xl);color:var(--text-strong);line-height:var(--lh-tight)}.lab-kicker{margin:0;font-family:var(--font-mono);font-size:var(--fs-xs);letter-spacing:var(--tracking-wide);text-transform:uppercase;color:var(--accent)}.lab-kicker span{color:var(--text-faint)}.lab-pwned{display:inline-block;vertical-align:middle;margin-left:.4rem;padding:.1rem .5rem;font-family:var(--font-mono);font-size:var(--fs-xs);font-weight:500;letter-spacing:var(--tracking-wide);text-transform:uppercase;color:var(--accent-strong);border:1px solid var(--accent-line);border-radius:var(--radius-pill);background:var(--accent-soft)}.lab-lead{margin:0;color:var(--text-dim);line-height:var(--lh-snug)}.lab-label{margin:var(--sp-5) 0 var(--sp-2);font-family:var(--font-mono);font-size:var(--fs-xs);letter-spacing:var(--tracking-wide);text-transform:uppercase;color:var(--text-faint)}.lab-label span{color:var(--accent)}.lab-chips{display:flex;flex-wrap:wrap;gap:var(--sp-2);margin:0;padding:0;list-style:none}.lab-chips li{padding:.2rem .55rem;font-family:var(--font-mono);font-size:var(--fs-xs);background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text)}.lab-log{margin:0;padding:0;list-style:none}.lab-log li{display:flex;justify-content:space-between;align-items:center;gap:var(--sp-3);padding:var(--sp-3) 0;border-bottom:1px solid var(--border);font-size:var(--fs-sm);color:var(--text)}.lab-log em{margin-right:.4rem;font-style:normal;font-family:var(--font-mono);font-size:var(--fs-xs);text-transform:uppercase;color:var(--accent)}.lab-pill{padding:.1rem .55rem;font-family:var(--font-mono);font-size:var(--fs-xs);color:var(--text-dim);border:1px solid var(--border);border-radius:var(--radius-pill);white-space:nowrap}.lab-pill.is-bounty{color:var(--accent-strong);border-color:var(--accent-line);background:var(--accent-soft)}.lab-dim{color:var(--text-dim);font-size:var(--fs-xs);text-align:right}.lab-stats{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--sp-4);margin-top:var(--sp-5)}.lab-stats div{padding-left:var(--sp-3);border-left:2px solid var(--accent-line)}.lab-stats b{display:block;font-family:var(--font-mono);font-size:var(--fs-xl);font-weight:600;color:var(--accent-strong)}.lab-stats span{font-family:var(--font-mono);font-size:var(--fs-xs);letter-spacing:var(--tracking-wide);text-transform:uppercase;color:var(--text-dim)}.lab-loop{display:flex;flex-wrap:wrap;gap:var(--sp-2);margin:0;padding:0;list-style:none}.lab-loop li{padding:.25rem .6rem;font-family:var(--font-mono);font-size:var(--fs-xs);color:var(--accent-strong);border:1px solid var(--accent-line);border-radius:var(--radius-pill)}.lab-questions{margin:0;padding-left:1.1rem;color:var(--text-dim);font-size:var(--fs-sm);line-height:var(--lh-snug)}.lab-questions li{margin-bottom:.4rem}.lab-timeline{margin:0;padding:0;list-style:none;border-left:1px solid var(--border)}.lab-timeline li{position:relative;padding:0 0 var(--sp-4) var(--sp-5)}.lab-timeline li:before{content:"";position:absolute;left:-4px;top:.45em;width:7px;height:7px;border-radius:50%;background:var(--border-strong)}.lab-timeline li.is-current:before{background:var(--accent)}.lab-timeline b{display:block;font-family:var(--font-mono);font-size:var(--fs-sm);color:var(--text-strong)}.lab-timeline span{color:var(--text-dim);font-size:var(--fs-sm)}.lab-links{display:flex;flex-wrap:wrap;gap:var(--sp-4);margin:var(--sp-5) 0 0;font-family:var(--font-mono);font-size:var(--fs-sm)}.lab-links a{color:var(--link);text-decoration:none}.lab-links a:hover{color:var(--link-hover)}.lab-mg{position:absolute;inset:0;display:grid;place-items:center;background:#0b0f148c;backdrop-filter:blur(3px)}.lab-mg-card{width:min(520px,92vw);padding:var(--sp-6);text-align:center;background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);animation:lab-pop .25s var(--ease)}.lab-mg-card h2{margin:.3rem 0 var(--sp-2);font-family:var(--font-mono);font-size:var(--fs-md);font-weight:500;letter-spacing:var(--tracking-wide);text-transform:uppercase;color:var(--text-strong)}.lab-bar{position:relative;height:36px;margin:var(--sp-5) 0 var(--sp-3);background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-pill);overflow:hidden;transition:border-color .12s}.lab-zone{position:absolute;top:0;bottom:0;background:var(--accent-soft);border-inline:1px solid var(--accent-line)}.lab-marker{position:absolute;top:-2px;bottom:-2px;width:6px;margin-left:-3px;background:var(--text-strong);border-radius:3px;box-shadow:0 0 10px #ffffff80}.lab-mg.is-hit .lab-bar{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.lab-mg.is-miss .lab-bar{border-color:var(--danger);animation:lab-shake .25s}@keyframes lab-shake{25%{transform:translate(-6px)}75%{transform:translate(6px)}}.lab-mg-hits{margin:0;min-height:1.5em;font-family:var(--font-mono);font-size:var(--fs-lg);letter-spacing:.3em;color:var(--accent-strong)}.lab-mg-status{margin:0;min-height:1.4em;font-family:var(--font-mono);font-size:var(--fs-xs);color:var(--text-dim)}.lab-mg-actions{display:flex;flex-wrap:wrap;gap:var(--sp-3);justify-content:center;margin-top:var(--sp-5)}.lab-toast{position:absolute;left:50%;top:13%;transform:translate(-50%);display:flex;flex-direction:column;gap:.15rem;width:min(440px,90vw);padding:var(--sp-4) var(--sp-5);background:#111821f2;border:1px solid var(--border-strong);border-left:3px solid var(--link);border-radius:var(--radius)}.lab-toast.is-in{animation:lab-pop .3s var(--ease)}@keyframes lab-pop{0%{transform:translate(-50%,-10px);opacity:0}}.lab-toast-k{font-family:var(--font-mono);font-size:var(--fs-xs);letter-spacing:var(--tracking-wide);text-transform:uppercase;color:var(--link)}.lab-toast b{color:var(--text-strong)}.lab-toast a{font-family:var(--font-mono);font-size:var(--fs-sm);color:var(--link);text-decoration:none}.lab-banner{position:absolute;inset:0;display:grid;place-items:center;background:#0b0f14b3}.lab-banner-card{text-align:center;padding:var(--sp-7) var(--sp-8);background:var(--surface);border:1px solid var(--accent-line);border-radius:var(--radius-lg);box-shadow:0 0 80px var(--accent-soft);animation:lab-pop .3s var(--ease)}.lab-banner-text{display:block;margin:0;font-family:var(--font-mono);font-size:var(--fs-2xl);color:var(--accent-strong)}.lab-banner-text span{display:block;margin-bottom:var(--sp-2);font-size:var(--fs-xs);letter-spacing:var(--tracking-wider);color:var(--text-dim)}.lab-banner-sub{color:var(--text-dim)}.lab-help{position:absolute;inset:0;display:grid;place-items:center;background:#0b0f14c7;backdrop-filter:blur(4px)}.lab-help-card{width:min(580px,92vw);padding:var(--sp-7);background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg)}.lab-help-card h1{margin:var(--sp-2) 0 var(--sp-3);font-size:var(--fs-3xl);line-height:var(--lh-tight);color:var(--text-strong)}.lab-help-card p{color:var(--text-dim);line-height:var(--lh-snug)}.lab-help-card a:not(.btn){color:var(--link)}.lab-help-keys{display:grid;grid-template-columns:auto 1fr;gap:var(--sp-2) var(--sp-4);align-items:center;margin:var(--sp-5) 0;font-family:var(--font-mono);font-size:var(--fs-sm);color:var(--text)}@media(max-width:720px){.lab-hud{padding:var(--sp-3);font-size:.65rem}.lab-hud-left,.lab-hud-right{gap:var(--sp-3)}.lab-hud-score{display:none}.lab-panel{top:auto;height:72vh;width:100%;border-left:0;border-top:1px solid var(--border);border-radius:var(--radius-lg) var(--radius-lg) 0 0;animation:lab-up .28s var(--ease)}@keyframes lab-up{0%{transform:translateY(24px);opacity:0}}.lab-help-card,.lab-mg-card{padding:var(--sp-5)}.lab-help-card h1{font-size:var(--fs-2xl)}}
