/* PSO (point-seven-out) moment: spec rev 15c S4.4. Shared by Bubble Craps and Table Craps. NEW.
   The layer ignores all taps: ROLL/SHOOT and bets stay live underneath. The plate look REUSES the run15b
   seven-out toast (bb-bc-yrkv css/run15.css .toast.seven, .readcall #FFD36A). */
:root{--pso-gold:#FFD36A;--pso-ink:#F4F1EA;--pso-plate:#141A22;--pso-line:rgba(255,211,106,.5)}
.pso-layer{position:fixed;inset:0;z-index:61;pointer-events:none;overflow:hidden;contain:layout paint}
.pso-layer *{pointer-events:none}
/* gentle desaturating dip over the whole screen (no darkening into gloom: brightness stays ≥ .9) */
.pso-dip{position:absolute;inset:0;-webkit-backdrop-filter:saturate(.45) brightness(.92);backdrop-filter:saturate(.45) brightness(.92);opacity:0;
  animation:pso-dip var(--pso-dur,1200ms) ease-out forwards}
@keyframes pso-dip{0%{opacity:0}20%{opacity:1}60%{opacity:.8}100%{opacity:0}}
/* puck: a ghost ON puck flips to reveal the real OFF puck, then a soft settle */
.pso-puck{position:absolute;border-radius:50%;background:center/contain no-repeat;transform-style:preserve-3d;animation:pso-flip 420ms cubic-bezier(.3,.7,.3,1) forwards}
@keyframes pso-flip{0%{transform:rotateY(0) scale(1);opacity:1}55%{transform:rotateY(90deg) scale(1.04);opacity:1}56%{opacity:0}100%{transform:rotateY(180deg) scale(1);opacity:0}}
.pso-settle{position:absolute;border-radius:50%;box-shadow:0 0 0 2px rgba(255,255,255,.55);opacity:0;animation:pso-settle 360ms 300ms ease-out forwards}
@keyframes pso-settle{0%{opacity:.9;transform:scale(.9)}100%{opacity:0;transform:scale(1.35)}}
/* dice glow resets to white + 5 steam puffs rise 30px (MOTION-SOUND-SPEC dice heat table: seven-out) */
.pso-cool{position:absolute;border-radius:10px;box-shadow:0 0 0 2px #fff,0 0 14px 4px rgba(255,255,255,.7);opacity:0;animation:pso-cool 500ms ease-out forwards}
@keyframes pso-cool{0%{opacity:0}30%{opacity:1}100%{opacity:0}}
.pso-steam{position:absolute;width:0;height:0}
.pso-steam i{position:absolute;left:calc(var(--x)*1px - 7px);top:-7px;width:14px;height:14px;border-radius:50%;background:radial-gradient(circle,rgba(255,255,255,.85),rgba(255,255,255,0) 70%);
  opacity:0;animation:pso-puff 700ms calc(80ms + var(--d)*40ms) ease-out forwards}
@keyframes pso-puff{0%{opacity:0;transform:translateY(0) scale(.6)}25%{opacity:.9}100%{opacity:0;transform:translateY(-30px) scale(1.4)}}
/* chip sweep: light = chips dim and slide to the top edge (dealer); dark = chips slide to the player's rail */
.pso-chip{position:absolute;width:22px;height:22px;margin:-11px 0 0 -11px;background:center/contain no-repeat;opacity:0;
  animation:pso-sweep 520ms var(--sd,200ms) cubic-bezier(.45,.05,.55,.95) forwards}
.pso-layer.light .pso-chip{filter:grayscale(.7) brightness(.8)}
@keyframes pso-sweep{0%{opacity:0;transform:translate(0,0)}15%{opacity:1}50%{transform:translate(var(--mx,calc(var(--tx)/2)),var(--my,calc(var(--ty)/2)))}85%{opacity:1}100%{opacity:0;transform:translate(var(--tx),var(--ty)) scale(.8)}}
/* plate = the seven-out toast (merged, S4.4). Wraps to 2 lines, never truncates. */
.pso-plate{position:absolute;display:flex;align-items:center;gap:8px;width:max-content;max-width:min(360px,calc(100vw - 16px));
  padding:6px 12px 6px 8px;border-radius:14px;background:var(--pso-plate);border:1px solid var(--pso-line);box-shadow:0 8px 22px rgba(0,0,0,.5);
  opacity:0;transform:translateY(-8px);animation:pso-plate var(--pso-dur,1200ms) cubic-bezier(.25,1,.5,1) forwards}
.pso-plate .billie{width:44px;height:44px;flex:0 0 44px}
.pso-plate .rd{display:flex;align-items:center;gap:3px;flex:0 0 auto;padding:3px 6px;border-radius:9px;background:rgba(255,255,255,.06)}
.pso-plate .rd img{width:18px;height:18px}
.pso-plate .rd b{font:800 15px/1 var(--sans,system-ui);color:#fff;margin-left:2px}
.pso-plate .tx{min-width:0;flex:1 1 auto}
.pso-plate .readcall{display:block;font:900 10.5px/1.2 var(--sans,system-ui);letter-spacing:.08em;color:var(--pso-gold);white-space:normal}
.pso-plate .call{display:block;margin-top:2px;font:700 14px/1.2 var(--sans,system-ui);color:var(--pso-ink);white-space:normal;overflow-wrap:break-word;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.pso-plate .net{display:inline-block;margin-top:2px;font:800 13px/1.1 var(--sans,system-ui);font-variant-numeric:tabular-nums;color:#C9D2DC}
.pso-plate .net.up{color:#7DFFB3}
.pso-plate .tag{display:inline-block;margin:0 0 3px;padding:2px 7px;border-radius:999px;font:900 10px/1.25 var(--sans,system-ui);letter-spacing:.08em;background:#2A3442;color:var(--pso-gold);border:1px solid var(--pso-line)}
.pso-plate .tag.rec{background:var(--pso-gold);color:#1B1204}
.pso-plate .tag.fire{background:linear-gradient(180deg,#FFE7A0,#E8823A);color:#1B1204;border:0}
@keyframes pso-plate{0%{opacity:0;transform:translateY(-8px)}18%{opacity:1;transform:none}85%{opacity:1}100%{opacity:0}}
/* long hand / record: the tag shows first (0.8 s), then the call (S4.4) */
.pso-layer.long .pso-plate .tagrow{animation:pso-tagin 800ms ease-out both}
@keyframes pso-tagin{0%{opacity:0;transform:scale(.92)}20%{opacity:1;transform:none}100%{opacity:1}}
.pso-layer.long .pso-plate .call,.pso-layer.long .pso-plate .net{animation:pso-late 2000ms linear both}
@keyframes pso-late{0%,38%{opacity:.35}45%,100%{opacity:1}}
.pso-layer.out{transition:opacity 120ms;opacity:0}
/* one mascot: hide every other mascot (and the old seven-out toast) while the PSO is up */
body.pso-on .toast.seven,body.pso-on .toast-billy,body.pso-on .toast-billie,body.pso-on .dome-billy,body.pso-on .dome-billie,body.pso-on .coach-billie,
body.pso-on .win-billie,body.pso-on .tc-toast,body.pso-on [data-mascot]:not(.pso-plate){visibility:hidden}
/* reduced motion: static puck flip + text, fade only (S4.4 Global) */
.pso-layer.reduce .pso-dip,.pso-layer.reduce .pso-steam,.pso-layer.reduce .pso-chip,.pso-layer.reduce .pso-cool,.pso-layer.reduce .pso-settle,.pso-layer.reduce .pso-puck{display:none}
.pso-layer.reduce .pso-plate,.pso-layer.reduce .pso-plate *{animation:pso-fade var(--pso-dur,1200ms) linear forwards!important;transform:none!important}
.pso-layer.reduce .pso-plate *{animation:none!important;opacity:1}
@keyframes pso-fade{0%{opacity:0}12%{opacity:1}85%{opacity:1}100%{opacity:0}}
@media (prefers-reduced-motion:reduce){.pso-dip,.pso-steam,.pso-chip,.pso-cool,.pso-settle,.pso-puck{display:none}.pso-plate{animation-name:pso-fade!important;transform:none!important}}
.pso-plate .tagrow{display:flex;flex-wrap:wrap;gap:4px;margin-bottom:3px}.pso-plate .tag{white-space:nowrap}
