/* Random Lab presentation only; shared shell and Live Lab remain unchanged. */
.lab-presentation{overflow-anchor:none}
.lab-presentation .lab-random-stage{display:grid;grid-template-columns:minmax(0,1.12fr) minmax(0,1fr);align-items:center;gap:32px;min-height:440px;padding:24px 0 18px}
.lab-visual-frame{position:relative;min-width:0;width:100%;height:430px;display:flex;flex-direction:column;align-items:stretch}
.lab-animation-canvas{display:block;min-height:0;flex:1;width:100%;height:calc(100% - 32px)}
.lab-animation-caption{flex-shrink:0;min-height:24px;text-align:center;font-size:13px;line-height:1.6;color:var(--muted);margin:8px 0 0}
.lab-presentation .lab-winner{padding:0;text-align:left;min-width:0;width:100%}
.lab-presentation .lab-winner>span{display:block;color:var(--accent-dark);font-size:14px}
.lab-presentation .lab-winner h2{font-size:clamp(34px,4.4vw,68px);line-height:1.35;letter-spacing:-.035em;margin:16px 0;font-weight:500;text-wrap:balance}
.lab-presentation .lab-winner p{font-size:clamp(16px,1.8vw,24px);line-height:1.65;margin:12px 0;color:var(--muted)}
.lab-presentation .lab-remaining{margin:24px 0 0;font-size:13px}
.lab-presentation .lab-remaining strong{display:inline-block;border:1px solid var(--line-strong);border-radius:8px;padding:4px 9px;margin-right:6px;color:var(--ink);background:var(--surface);font-variant-numeric:tabular-nums}
.lab-presentation.is-spinning .lab-winner h2{color:var(--muted)}
.lab-theme-preview{display:block;height:220px;margin:8px 0 22px;border-radius:14px;background:var(--surface-soft)}
.lab-theme-preview .lab-visual-frame{height:220px;padding:6px}
.lab-theme-preview .lab-animation-caption{font-size:11px;margin-top:2px}
.lab-presentation .lab-present-bottom{gap:12px}
.lab-presentation .lab-draw-button{min-width:250px!important}
.lab-presentation .lab-hide-controls{margin:12px auto 0}
html:fullscreen .lab-presentation .lab-random-stage{min-height:330px;padding:8px 0;gap:48px}
html:fullscreen .route-labs .app:has(.lab-presentation){width:100%;max-width:1600px}
html:fullscreen .lab-presentation .lab-visual-frame{height:100%;min-height:310px;max-height:690px}
html:fullscreen .lab-presentation .lab-winner{padding:0}
html:fullscreen .lab-presentation .lab-winner h2{font-size:clamp(38px,4.8vw,82px);line-height:1.3;margin:15px 0}
html:fullscreen .lab-presentation .lab-winner p{font-size:clamp(18px,2vw,28px);line-height:1.5;margin:10px 0}
html:fullscreen .lab-presentation .lab-remaining{margin-top:20px}
@media(min-width:800px){html:fullscreen .lab-presentation{height:auto;min-height:calc(100dvh - 50px)}html:fullscreen .lab-presentation .lab-random-stage{flex:1}html:fullscreen .lab-presentation .lab-visual-frame{height:clamp(310px,calc(100dvh - 360px),690px)}html:fullscreen .lab-presentation.controls-hidden .lab-visual-frame{height:calc(100dvh - 170px)}}
@media(max-width:900px){.lab-theme-preview{display:block}.lab-presentation .lab-random-stage{gap:20px}.lab-visual-frame{height:360px}}
@media(max-width:650px){.lab-presentation .lab-random-stage{grid-template-columns:minmax(0,1fr);gap:20px;padding:0 0 24px;min-height:0}.lab-visual-frame{height:320px}.lab-presentation .lab-winner{text-align:center}.lab-presentation .lab-winner h2{font-size:clamp(30px,8vw,44px);margin:10px 0}.lab-presentation .lab-winner>span{font-size:13px}.lab-presentation .lab-winner p{font-size:16px}.lab-presentation .lab-remaining{margin:16px 0 0}.lab-presentation .lab-present-bottom .lab-actions{gap:8px;flex-wrap:wrap}.lab-presentation .lab-present-bottom .lab-note{font-size:12px;line-height:1.7}.lab-theme-preview{height:240px}.lab-theme-preview .lab-visual-frame{height:240px}html:fullscreen .lab-presentation .lab-random-stage{gap:20px;min-height:0}html:fullscreen .lab-presentation .lab-visual-frame{height:320px;min-height:0}html:fullscreen .lab-presentation .lab-winner h2{font-size:clamp(30px,8vw,44px)}}
@media(prefers-reduced-motion:reduce){.lab-presentation.is-revealing .lab-winner{animation:none!important}}

/* The Random projector uses the stable app container so redraws do not leave fullscreen. */
.route-labs .app:fullscreen{width:100vw;max-width:none;height:100dvh;overflow:hidden;padding:clamp(12px,2vw,28px);color:var(--text);background:var(--bg)}
.route-labs .app:fullscreen .lab-presentation{height:100%;min-height:0;padding:0;display:grid;grid-template-rows:auto minmax(0,1fr) auto auto;gap:clamp(6px,1.2vh,14px)}
.route-labs .app:fullscreen .lab-present-head{min-height:0;padding:0;align-items:center}.route-labs .app:fullscreen .lab-present-head h1{margin:2px 0 0;font-size:clamp(18px,2.2vw,30px)}.route-labs .app:fullscreen .lab-nonprojector-control{display:none!important}
.route-labs .app:fullscreen .lab-random-stage{min-height:0;height:100%;padding:0;gap:clamp(18px,4vw,58px);align-items:center}.route-labs .app:fullscreen .lab-visual-frame{width:100%;height:min(61dvh,650px);min-height:260px;max-height:100%}.route-labs .app:fullscreen .lab-winner{padding:0;text-align:left}.route-labs .app:fullscreen .lab-winner h2{max-height:2.7em;overflow:hidden;font-size:clamp(38px,5.8vw,94px);line-height:1.18;text-wrap:balance}.route-labs .app:fullscreen .lab-winner p{max-height:3.2em;overflow:auto;font-size:clamp(17px,1.7vw,27px)}
.route-labs .app:fullscreen .lab-present-bottom{min-height:0;gap:7px}.route-labs .app:fullscreen .lab-present-bottom>.lab-actions{margin:0;justify-content:center}.route-labs .app:fullscreen .lab-present-bottom .btn{min-height:38px;padding:7px 13px;font-size:12px}.route-labs .app:fullscreen .lab-draw-button{min-width:min(360px,80vw)!important;min-height:52px!important;font-size:clamp(17px,1.6vw,23px)!important}.route-labs .app:fullscreen #randomSync,.route-labs .app:fullscreen #retryRandomSave{display:none!important}.route-labs .app:fullscreen .lab-hide-controls{margin:0 auto;min-height:25px;font-size:10px}
@media(max-width:700px){.route-labs .app:fullscreen{padding:9px}.route-labs .app:fullscreen .lab-presentation{grid-template-rows:auto minmax(0,1fr) auto auto}.route-labs .app:fullscreen .lab-random-stage{grid-template-columns:1fr;gap:5px}.route-labs .app:fullscreen .lab-visual-frame{height:min(44dvh,360px);min-height:210px}.route-labs .app:fullscreen .lab-winner{text-align:center}.route-labs .app:fullscreen .lab-winner h2{font-size:clamp(27px,8vw,48px);margin:4px 0}.route-labs .app:fullscreen .lab-winner p{font-size:15px;margin:3px 0}.route-labs .app:fullscreen .lab-remaining{margin-top:5px}.route-labs .app:fullscreen .lab-present-bottom .lab-actions{gap:5px}.route-labs .app:fullscreen .lab-present-bottom .btn{padding-inline:9px;font-size:10px}}
