/* Turntable — sprites cut from the Kling SL-1210 shots, composited in layers */
.stage{position:relative;overflow:hidden;background:#000;touch-action:none;user-select:none;-webkit-user-select:none}
.stage .tt-wrap{position:absolute;left:0;top:0;transform-origin:0 0;will-change:transform}
.tt{position:relative;aspect-ratio:1760/1176;width:1760px;background:#000}
.tt>*{position:absolute;display:block}
.tt img{pointer-events:none;-webkit-user-drag:none}
.tt .plate{left:0;top:0;width:100%;height:100%}
.tt .rec{transform-origin:50% 50%;will-change:transform}
.tt .sheen{mix-blend-mode:screen;pointer-events:none}
.tt video.loop{pointer-events:none;object-fit:cover}
.tt .rec,.tt .sheen{opacity:0;transition:opacity .14s linear;will-change:transform}
.tt.still .rec,.tt.still .sheen{opacity:1}
.tt .sheen{transition-delay:.02s}
.tt .rot{transform-origin:var(--ox) var(--oy);will-change:transform}
.tt .rot img{position:absolute;left:0;top:0;width:100%;height:100%}
.tt .lift{position:absolute;inset:0;transition:transform .18s ease,filter .18s ease,opacity .18s ease}
.tt .arm.up .lift{transform:translate(-.3%,-.7%)}
.tt .hit{opacity:0;cursor:pointer}
.tt .led{width:.7%;aspect-ratio:1;border-radius:50%;background:#ff2a1a;box-shadow:0 0 6px 2px rgba(255,40,20,.55);opacity:0;transition:opacity .3s;pointer-events:none}
.tt.on .led{opacity:1}
.tt .lamp{pointer-events:none;border-radius:50%;background:radial-gradient(closest-side,rgba(255,60,30,.35),rgba(255,60,30,0));opacity:0;transition:opacity .4s}
.tt.on .lamp{opacity:1}
.deck-meta{display:flex;justify-content:space-between;gap:16px;font:500 12px/1.4 ui-monospace,Menlo,monospace;letter-spacing:.06em;color:#8c8c8c;padding:14px 0}
.deck-meta b{font-weight:600;color:#f1f1f1}
.deck-meta .state{text-transform:uppercase}

.tt .armseq{pointer-events:none}
.tt .armseq video{position:absolute;left:0;top:0;width:100%;height:100%;display:block;background:transparent}
.tt .armseq{visibility:hidden}
.tt.seq .armseq{visibility:visible}
.tt.seq .arm{visibility:hidden}
.tt .armseq.up .lift{transform:translate(-.3%,-.7%)}

.tt canvas.cache{opacity:0;transition:opacity .12s linear;pointer-events:none}
.tt.cached canvas.cache{opacity:1}
.tt.cached video.loop{visibility:visible}

.tt .armsheet{visibility:hidden;pointer-events:none}
.tt.sheet .armsheet{visibility:visible}
.tt.sheet .arm{visibility:hidden}
.tt .armsheet.up .lift{transform:translate(-.3%,-.7%)}
.tt .platearm{pointer-events:none}
