/* Scroll-driven halftone panorama: [data-panorama].pano > .pano__stage (sticky view) > .pano__zoom > .pano__plane > img | .pano__el.
   Tiles and elements are placed in source px; each plane is scaled to the view height by the runtime. */
/* --pano-gutter: view px kept out of the fitted width for a text column (registered so the runtime reads it in px). */
@property --pano-gutter { syntax: '<length>'; inherits: true; initial-value: 0px; }
/* --pano-top: view px covered by a fixed header; the unit-tall window fits and centres under them. */
@property --pano-top { syntax: '<length>'; inherits: true; initial-value: 0px; }
.pano { position: relative; height: calc(var(--pano-length) + 100svh); background: #000; }
.pano__stage { position: sticky; top: 0; height: 100svh; overflow: hidden; background: #000; }
.pano__zoom { position: absolute; inset: 0; }
.pano__plane { position: absolute; left: 0; top: 0; width: 0; height: 0; transform-origin: 0 0; will-change: transform; }
.pano__plane > img, .pano__el { position: absolute; display: block; max-width: none; }
.pano__el > img { display: block; width: 100%; height: 100%; max-width: none; }
.pano--crisp .pano__plane img { image-rendering: pixelated; }
