.metal-lab { padding-block:36px; border-top:1px solid var(--line); scroll-margin-top:100px; }
.lab-stage { position:relative; overflow:hidden; border:1px solid var(--line); border-radius:12px; background:#0c0e10; max-width:960px; margin-inline:auto; }
.lab-stage canvas { width:100%; height:430px; display:block; cursor:grab; touch-action:none; }
.lab-stage canvas.is-dragging { cursor:grabbing; }
.lab-stage canvas:focus-visible { outline:2px solid var(--page-accent); outline-offset:-4px; }
.lab-stage canvas[hidden],.lab-fallback[hidden],.lab-reset[hidden] { display:none; }
.lab-fallback img { width:100%; height:430px; object-fit:contain; }
.lab-reset { position:absolute; right:16px; bottom:16px; width:44px; height:44px; display:grid; place-items:center; border:1px solid #ffffff28; border-radius:8px; background:#111315cc; color:#ddd; font:1.5rem var(--font-sans); cursor:pointer; }
.lab-reset { touch-action:manipulation; }
.lab-zoom { position:absolute; right:68px; bottom:16px; display:flex; gap:6px; }
.lab-zoom[hidden] { display:none; }
.lab-zoom button { width:44px; height:44px; border:1px solid #ffffff28; border-radius:8px; background:#111315cc; color:#ddd; font:1.3rem var(--font-sans); cursor:pointer; touch-action:manipulation; }
.lab-zoom button:hover { color:var(--page-accent); border-color:var(--page-accent); }
.lab-reset:hover { border-color:var(--page-accent); color:var(--page-accent); }
.lab-gesture { position:absolute; bottom:23px; left:22px; color:#ffffff50; font-size:1.4rem; pointer-events:none; }
.lab-stage:has(canvas.is-dragging) .lab-gesture { opacity:0; }
@media(max-width:720px) { .metal-lab { padding-block:28px; } .lab-stage canvas,.lab-fallback img { height:310px; } }
.metal-lab:not(.is-3d) .lab-gesture { display:none; }
.metal-lab:not(.is-3d) canvas { cursor:default; touch-action:pan-y; }
.lab-launch { display:block; min-height:48px; margin:18px auto 0; padding:0 24px; border:1px solid var(--line-2); border-radius:999px; background:#ffffff06; color:var(--text); font:600 .92rem var(--font-sans); cursor:pointer; touch-action:manipulation; transition:background .2s ease,border-color .2s ease; }
.lab-launch:hover { background:rgba(var(--page-rgb),.06); border-color:var(--page-accent); }
.lab-launch:focus-visible { outline:2px solid var(--page-accent); outline-offset:4px; }
/* Delikatne wyrównanie rytmu na stronach czterech powłok. */
body:has([data-metal-lab]) .material-lede { max-width:48ch; line-height:1.7; }
body:has([data-metal-lab]) .material-details { row-gap:28px; }
body:has([data-metal-lab]) .gallery-heading { margin-bottom:28px; }
body:has([data-metal-lab]) .finish-photo figcaption { line-height:1.5; gap:12px; }
/* Zdjęcie modelu: na szerokim ekranie wyśrodkowane z wygaszonymi bokami, na telefonie wypełnia kadr. */
.lab-fallback { display:grid; place-items:center; }
.lab-fallback img { width:100%; object-fit:contain; -webkit-mask-image:linear-gradient(90deg,transparent,#000 12%,#000 88%,transparent); mask-image:linear-gradient(90deg,transparent,#000 12%,#000 88%,transparent); }
@media(max-width:720px) {
 .lab-launch { width:100%; }
 .lab-stage canvas, .lab-fallback img { height:260px; }
 .lab-fallback img { object-fit:cover; -webkit-mask-image:none; mask-image:none; }

 .lab-zoom { right:64px; bottom:12px; } .lab-reset { right:12px; bottom:12px; }
}
