.dg-portal-overlay{position:fixed;inset:0;z-index:2147483000;pointer-events:auto;overflow:hidden;background:#010103;opacity:1;}
.dg-portal-overlay canvas{display:block;width:100%;height:100%;}
.dg-portal-overlay[data-mode="depart"]{background:transparent;}
.dg-portal-overlay[data-mode="arrive"]{background:transparent;}
html[data-portal-arrival="pending"]::after{content:"";position:fixed;inset:0;z-index:2147482999;background:#010103;pointer-events:auto;}
html[data-portal-active="true"] .target-cursor{visibility:hidden!important;}
/* The captured wall owns the moving image. Avoid painting its live blurred
   3D planes again underneath the full-screen transition. Restores on cancel. */
html[data-portal-active="true"][data-portal-renderer="webgl"] #aperture{visibility:hidden;}
@media(prefers-reduced-motion:reduce){.dg-portal-overlay{transition:opacity .16s ease;}}

/* Paused About stays in its own browsing context through the SPA handoff. */
.dg-portal-about-frame{position:fixed;inset:0;width:100%;height:100svh;border:0;z-index:40;opacity:0;pointer-events:none;}
/* Positive subpixel alpha lets Chromium rasterize the already-paused document
   before click; zero alpha defers that first paint into the moving handoff.
   0.1% is below one 8-bit colour step. Input/AX stay disabled until show(). */
.dg-portal-about-frame[data-portal-warm="true"][data-portal-ready="true"]{opacity:.001;}
.dg-portal-about-frame[data-portal-visible="true"]{opacity:1;pointer-events:auto;}
.dg-portal-overlay[data-mode="vortex"]{background:transparent;}

/* Restored gallery stays still beneath its matched liquid snapshot. */
html[data-portal-direction="return"][data-portal-arrival="releasing"] #aperture{visibility:visible;}
