.lb-stage{position:relative;aspect-ratio:16/7;border-radius:12px;overflow:hidden;background:var(--lb-bg,#000);cursor:pointer;user-select:none;-webkit-user-select:none}
.lb-stage.dots::before{content:"";position:absolute;inset:0;pointer-events:none;background:radial-gradient(circle,rgba(255,255,255,.09) 0 calc(var(--lb-dot) * .32),transparent calc(var(--lb-dot) * .32 + .5px)) 0 0/var(--lb-dot) var(--lb-dot)}
.lb-track{position:absolute;inset:0;overflow:hidden}
.lb-stage.dots .lb-track{-webkit-mask:radial-gradient(circle,#000 0 calc(var(--lb-dot) * .4),transparent calc(var(--lb-dot) * .4 + .5px)) 0 0/var(--lb-dot) var(--lb-dot);mask:radial-gradient(circle,#000 0 calc(var(--lb-dot) * .4),transparent calc(var(--lb-dot) * .4 + .5px)) 0 0/var(--lb-dot) var(--lb-dot)}
.lb-msg{position:absolute;left:0;top:50%;white-space:nowrap;font-weight:900;line-height:1;color:var(--lb-fg,#fff);will-change:transform;font-family:var(--font);letter-spacing:.02em}
.lb-stage.dots .lb-msg{text-shadow:0 0 .06em currentColor}
.lb-msg.blink{animation:lb-blink 1s steps(1) infinite}
@keyframes lb-blink{50%{opacity:0}}
.lb-exit{display:none;position:absolute;top:max(12px,env(safe-area-inset-top));right:max(12px,env(safe-area-inset-right));z-index:2;width:44px;height:44px;border-radius:50%;border:0;background:rgba(127,127,127,.35);color:#fff;font-size:20px;cursor:pointer}
.lb-rotate{display:none;position:absolute;left:50%;bottom:24px;transform:translateX(-50%);z-index:2;margin:0;padding:8px 14px;border-radius:99px;background:rgba(0,0,0,.6);color:#fff;font-size:14px;white-space:nowrap;pointer-events:none;animation:lb-fade 4s forwards}
@keyframes lb-fade{0%,75%{opacity:1}100%{opacity:0}}
/* full-screen (Fullscreen API where available, fixed overlay otherwise — e.g. iPhone Safari) */
.lb-stage.lb-on{position:fixed;inset:0;z-index:9999;aspect-ratio:auto;border-radius:0;width:100vw;height:100vh;height:100dvh}
.lb-stage.lb-on .lb-exit{display:block}
@media (orientation:portrait){
  /* portrait phone: run the text along the long side; turn the phone sideways to read it */
  .lb-stage.lb-on .lb-track{inset:auto;left:50%;top:50%;width:100vh;width:100dvh;height:100vw;transform:translate(-50%,-50%) rotate(90deg)}
  .lb-stage.lb-on .lb-rotate{display:block}
}
html.lb-lock,html.lb-lock body{overflow:hidden}
.lb-seg{display:flex;width:100%}
.lb-seg button{flex:1 1 0;min-height:40px;padding:8px 6px}
.lb-range{width:100%;height:34px;accent-color:var(--brand)}
.lb-color{padding:4px;height:46px}
.lb-text{font-size:18px;font-weight:600}
.lb-checks{display:flex;gap:18px;flex-wrap:wrap}
.lb-checks .check{min-height:40px}
.lb-presets .chip{min-height:38px}
