/* Sam 3D guide — stage + launcher styling. Only takes visible effect once the JS adds
   `.sam3d-on` to <body> (i.e. the 3D model actually loaded). Until then, and on any
   fallback, the existing 2D #samFab is untouched. Fixed-size, clipped, no layout shift. */

#sam3dStage{
  position:fixed; right:.6rem; bottom:.4rem;
  width:190px; height:300px;
  z-index:258; pointer-events:none;
  overflow:hidden;                 /* clip the canvas to the box — no overflow onto content */
}
#sam3dStage canvas{
  position:absolute; left:50%; top:0; transform:translateX(-50%);
  width:190px!important; height:300px!important; display:block;
}

/* when the 3D model is live: hide the 2D avatar image and turn the existing fab into a
   transparent, accessible click/focus target over the lower ~2/3 of Sam. */
.sam3d-on #samFab{
  right:.6rem; bottom:.4rem;
  width:190px; height:210px;
  border-radius:1rem;
  background:transparent; border:0; box-shadow:none; overflow:visible;
  animation:none; z-index:259; cursor:pointer;
}
.sam3d-on #samFab:hover{ transform:none; }
.sam3d-on #samFab img{ display:none; }
.sam3d-on #samFab:focus-visible{ outline:2.5px solid var(--ink, #0E2032); outline-offset:3px; border-radius:1rem; }

/* speech bubble sits above the taller 3D Sam */
.sam3d-on #samBubble{ bottom:19rem; right:.6rem; }

@media (prefers-reduced-motion: reduce){ #sam3dStage{ display:none; } }
@media (max-width:899px){ #sam3dStage{ display:none; } }
