/* FABLE-25 — THE 3D STAGE, page-side additions.
 *
 * Loads AFTER alive-present.css and adds exactly one thing: the layer the
 * 3D body renders in. The stage takes the SAME slot in the page's stacking
 * contract that <netshow-alive mode="kiosk"> takes on the 2D page —
 *
 *      1   .pv-ground     the still portrait
 * 2147483000 .pv3d-stage   the live 3D body (this file)  |  netshow-alive
 * 2147483001 .pv-hud       identity rail, caption band, pairing slot
 *
 * — and respects the same one page-owned edge: the bottom lands clear of
 * the caption band (--pv-lower-h, measured live by the page JS). The wrap
 * mountLiveVrmAvatar appends for its own bookkeeping is parked at zero size
 * inside the stage; the canvas this page renders is the visible surface. */

.pv3d-stage {
    position: fixed;
    inset: 0 0 var(--pv-lower-h) 0;
    z-index: 2147483000;
    overflow: hidden;
    /* transparent on purpose: the renderer clears to alpha and the ground's
       radial field shows through, so the 3D figure stands in the same room
       as the portrait it paints over — no hairline seam, no color step. */
    background: transparent;
    pointer-events: none;
}

.pv3d-stage canvas {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    display: block;
}

/* The mount's own bookkeeping wrap — present, bound, invisible. */
.pv3d-stage .pv3d-mount-holder {
    position: absolute;
    width: 0;
    height: 0;
    overflow: hidden;
}
