/* SPEECH UNDER THE FACES, ANSWERS IN ONE PLACE (Eivind, 2026-10-11: "let us give those a fixed place. dialogue and text from characters
   should always show under them, not hovering above ... as the dialogue is spoken, we want it to show at the same time in the faces").
   js/play-stage.js places everything (paintLinger, placeTip); this file only dresses it. Linked last in play.html.
   - #psLinger .pl-b: one bubble per person, under THAT person's portrait in the cast row, rewritten in place while they speak (.live).
   - #psTip: the picture's answers, centred just above the bottom bar. No tail: it points at nothing, it has its place. */

/* the line being spoken now: the gold rim a little brighter (no animation: nothing on the stage blinks) */
#psLinger .pl-b{transition:top .3s ease,left .3s ease,opacity .6s ease,box-shadow .3s ease}
#psLinger .pl-b.live{box-shadow:inset 0 0 0 1.5px rgba(243,212,140,.8),0 6px 18px rgba(0,0,0,.45)}
/* a portrait's answer (look / talk) is not always a quote: upright, not italic */
#psLinger .pl-b.tap span{font-style:normal}

/* the fixed answer bubble */
#psTip[data-side=fixed]{transform-origin:50% 100%;text-align:left}
#psTip[data-side=fixed] .ps-tail{display:none}
@media (min-width:900px){ #psTip[data-side=fixed]{max-width:min(460px,calc(100vw - 48px))} }
html body.ps-on #psTip{transition:top .25s ease,left .25s ease}
@media (prefers-reduced-motion:reduce){ html body.ps-on #psTip,#psLinger .pl-b{transition:none} }
html body.ps-still.ps-on #psTip,html body.ps-still #psLinger .pl-b{transition:none}

/* STORY MODE with the subtitles off: the faces and their words are the way to follow the talk, so they come back */
html body.ps-clean.ps-clean-nosubs #psRail:not(.empty){display:flex}
html body.ps-clean.ps-clean-nosubs #psLinger{opacity:1!important;visibility:visible}

/* STEADY PER OBJECT, THE NAME ON TOP (Eivind, 2026-10-11: "the next time we click the same object, the text box changes ... the item
   could be on top ... doesn't have to be exactly the same size box for everything, but at least per object when clicking repeatedly").
   The box sizes to its words as before; play-stage.js gives it, per object, the size of that object's LONGEST answer (min-width and
   min-height set inline), so tapping the same thing again only changes the words. Only when shown: [hidden] must still hide it. */
html body.ps-on #psTip[data-side=fixed]:not([hidden]){display:flex;flex-direction:column;justify-content:flex-start}
html body.ps-on #psTip[data-side=fixed] .ps-bt{width:100%}

/* the line the subtitles are showing right now waits under the face (js subsSay): invisible, keeps its place */
#psLinger .pl-b.dup{visibility:hidden}
