/* The four session positions. Content/controllers select a view; all rooms,
   both lesson players and the presentation lab use these same slots. */
body.session-presentation .session-view-stage {
  --session-presenter-width:clamp(150px,25vh,260px);
  position:absolute;inset:0;min-width:0;min-height:0;
}
body.session-presentation .session-view-stage:not(.session-board-stage) {
  display:grid;grid-template-columns:minmax(0,1fr);grid-template-rows:minmax(0,1fr);
  align-items:center;justify-items:center;gap:24px;
  padding:24px clamp(20px,4vw,64px) calc(var(--presentation-footer-height) + 8px);
}
body.session-presentation .session-view-stage .session-presenter {
  position:relative;inset:auto;transform:none;translate:none;scale:none;
  grid-area:1/1;align-self:center;justify-self:center;
  width:var(--session-presenter-width);height:min(100%,350px);max-height:350px;min-height:0;
  display:flex;align-items:center;justify-content:center;padding-bottom:30px;
  transition:none;
}
body.session-presentation .session-view-stage .session-material {
  position:relative!important;inset:auto!important;transform:none!important;
  width:100%!important;max-width:1100px!important;height:auto!important;
  max-height:100%!important;min-height:0;align-self:center;overflow:auto;
}
body.session-presentation .session-view-stage[data-session-view=conversation] .session-material {display:none!important;}
/* A single handoff action can sit beneath the conversational presenter. Keep
   this space reserved before its reveal, so finishing speech never moves him. */
body.session-presentation .session-view-stage[data-session-view=conversation]:has(.session-conversation-actions) .session-presenter {
  height:min(calc(100% - 2 * (44px + 18px)),350px);
}
body.session-presentation .session-view-stage[data-session-view=conversation] .session-material.session-conversation-actions {
  display:block!important;position:absolute!important;
  left:var(--presentation-caption-right)!important;right:var(--presentation-caption-right)!important;
  bottom:calc(var(--presentation-footer-height) + 8px)!important;
  width:auto!important;max-width:none!important;max-height:none!important;min-height:44px;padding:0;overflow:visible;
}
body.session-presentation .session-view-stage[data-session-view=side] {grid-template-columns:minmax(130px,.8fr) minmax(0,1fr);gap:clamp(24px,6vw,90px);}
body.session-presentation .session-view-stage[data-session-view=side] .session-material {grid-area:1/2;}
body.session-presentation .session-view-stage[data-session-view=below] {grid-template-rows:minmax(0,1fr) minmax(0,1fr);gap:18px;padding-top:18px;}
body.session-presentation .session-view-stage[data-session-view=below] .session-presenter {width:min(100%,300px);}
body.session-presentation .session-view-stage[data-session-view=below] .session-material {grid-area:2/1;}
body.session-presentation .session-view-stage[data-session-view=teaching] .session-presenter {
  position:absolute;left:clamp(20px,2.2vw,36px);top:auto;bottom:40px;
  width:102px;height:132px;padding:0;transform:none;z-index:25;
}
body.session-presentation .session-board-stage {position:relative;inset:auto;}
body.session-presentation .session-board-stage[data-session-view=conversation] .session-presenter {
  position:absolute;left:50%;top:calc(50% - var(--presentation-footer-height)/2);bottom:auto;
  transform:translate(-50%,-50%);width:clamp(180px,25vh,260px);height:clamp(228px,32vh,330px);padding:0;
}
body.session-presentation .session-view-stage:not([data-session-view=teaching]) .session-caption-strip {left:var(--presentation-caption-right);}
body.session-presentation .session-figure-transition :is(.presentation-voice,.voice-bars) {visibility:hidden;}
/* One header row, with the wordmark at left and the topic in the center. */
body.session-presentation .session-player-header {
  position:relative;display:grid!important;grid-template-columns:minmax(0,1fr) minmax(0,1.5fr) minmax(0,1fr);
  align-items:center;gap:16px;min-height:68px;height:68px;flex:0 0 68px;
  padding:0 clamp(20px,3.6vw,54px);border:0;border-bottom:1px solid var(--presentation-rule);background:none;
}
body.session-presentation .session-player-header>:last-child {justify-self:end;}
body.session-presentation .session-player-header .session-topic-title {
  position:static;transform:none;grid-column:2;grid-row:1;justify-self:center;
  max-width:100%;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
  margin:0;padding:0;color:var(--presentation-paper);font:400 28px/1.2 var(--font-serif);text-align:center;transition:opacity 420ms ease;
}
@media(prefers-reduced-motion:reduce) {
  body.session-presentation .session-player-header .session-topic-title {transition:none;}
}
body.session-presentation .session-player-header .session-header-actions {grid-column:3;grid-row:1;display:flex;align-items:center;justify-content:flex-end;gap:12px;white-space:nowrap;}
body.session-presentation .session-player-header .nb-brand {grid-column:1;grid-row:1;width:fit-content;text-decoration:none;}
body.session-presentation .session-player-header .nb-brand-stage {display:none!important;}
body.session-presentation .board-header:not(:has(.board-lesson-title)) {min-height:0;padding:0;border:0;}
body.session-presentation .board-header .back-link {display:none;}
body.session-presentation .board-header:has(>[hidden]:only-child) {display:none;}
body.session-presentation.player-body:not(.structured-lesson-player) .board-lesson-title {opacity:0;transform:none;}
body.session-presentation.player-body:not(.structured-lesson-player) .board-lesson-title.header-title-shown {opacity:1;}
/* The lab supplies fixtures inside the production frame. Its testing shelf
   stays outside that frame and never defines another set of player positions. */
body.presentation-lab .session-screen {padding:0;display:block;}
body.presentation-lab #stage {position:absolute;inset:68px 0 0;max-width:none;margin:0;width:100%;height:auto;}
body.presentation-lab #presenter {flex-direction:column;gap:0;}
body.presentation-lab #zeno {width:100%;height:100%;min-height:0;aspect-ratio:auto;}
body.presentation-lab #voice-bars {position:absolute;bottom:0;left:50%;transform:translateX(-50%);}
body.presentation-lab #interaction {position:absolute;bottom:0;left:0;right:0;height:var(--presentation-footer-height);min-height:0;padding:8px var(--presentation-caption-right) 18px;}
body.presentation-lab #caption {width:100%;min-width:0;}
body.presentation-lab #screen:not([data-view=lesson]) .session-caption-strip {left:var(--presentation-caption-right);}
body.presentation-lab #stage[data-session-view=teaching] {display:block;}
body.presentation-lab #stage[data-session-view=teaching] .session-material,body.presentation-lab .topic-heading {display:none;}
body.presentation-lab .lab-shelf {background:var(--paper);color:var(--green);}
@media(max-width:760px) {
  body.presentation-lab #stage {top:60px;}
  body.session-presentation .session-view-stage:not(.session-board-stage) {padding:18px 18px calc(var(--presentation-footer-height) + 8px);gap:18px;}
  body.session-presentation .session-view-stage .session-presenter {width:180px;max-height:290px;}
  body.session-presentation .session-view-stage[data-session-view=side] {grid-template-columns:100px minmax(0,1fr);gap:20px;}
  body.session-presentation .session-view-stage[data-session-view=side] .session-presenter {width:112px;max-height:180px;}
  body.session-presentation .session-view-stage[data-session-view=below] .session-presenter {width:min(100%,220px);max-height:290px;}
  body.session-presentation .session-view-stage[data-session-view=teaching] .session-presenter {left:16px;bottom:40px;width:72px;height:94px;}
  body.session-presentation .session-player-header {grid-template-columns:auto minmax(0,1fr) auto;height:60px;min-height:60px;flex-basis:60px;padding-inline:15px;gap:10px;}
  body.session-presentation .session-player-header .session-topic-title {font-size:20px;}
  body.session-presentation .session-player-header .session-header-actions {gap:8px;}
  body.session-presentation .session-player-header .session-action-detail {display:none;}
}
