/*  inspiration
    https://keithclark.co.uk/articles/pure-css-parallax-websites/
    https://segmentfault.com/a/1190000040563987/en
*/
html {
    overflow: hidden; /*move scrollbar to body tag*/
}
/*---global vars---*/
:root {
    --p-align: 50;
    --p-perspective: 5;
    --p-speed: 0.5;
    --p-depth: calc(var(--p-perspective) * (1 / var(--p-speed) - 1));
    --p-scale: 1;
    --p-transform: ;
}
/*---parallax container---*/
body,
.prx_container,
.prx_container_x,
.prx_container_y {
    perspective: calc(var(--p-perspective, 10) * 1px);
    --p-scrollbar-width: 17px;
}
/*  account for scrollbar width: 17px
    https://codepen.io/sambible/post/browser-scrollbar-widths    */
body,
.prx_container_y {
    perspective-origin: calc(100% * var(--p-align) / 100) 50%;    
    overflow-x: hidden;
    overflow-y: auto;
    --p-container-size: 100vh;
    height: var(--p-container-size);
}
.prx_container_x {
    perspective-origin: 50% calc(100% * var(--p-align) / 100);
    overflow-x: auto;
    overflow-y: hidden;
    --p-container-size: 100vw;
    width: var(--p-container-size);
    height: unset;
}

/*---parallax items---*/
.prx_group {
    transform-style: preserve-3d;
}
.prx_fit {
    position: relative;
    display: block;
    object-fit: cover;
    background-size: cover;
    background-position: center;
    /*  size relative to container  */
    --p-size-calc: calc(var(--p-size, 100) / 100 * var(--p-container-size));
    --p-scale-to-fit-above1: calc(
        (100*var(--p-scale-adjust) + var(--p-size) - 100) /
        (var(--p-scale-adjust) * var(--p-size))
    );
    /*  a: scale-adjust; b: size(vh)
        (a+b-1) / ab    */
    --p-scale-to-fit-below1: calc(
        -1* 
        (100*var(--p-scale-adjust) - var(--p-size) - 100) /
        (var(--p-scale-adjust) * var(--p-size))
    );
    /*  a: scale-adjust; b: size(vh)
        -(a-b-1) / (ab)    */
    --p-scale-to-fit: max(var(--p-scale-to-fit-above1), var(--p-scale-to-fit-below1));
    --p-scrollbar-width-scaled: var(--p-scrollbar-width) * var(--p-align) / 100;
    /*  max() is not available for 3.27% of global users    */
}
body .prx_fit,
.prx_container_y .prx_fit {
    height: var(--p-size-calc, 100vh);
    /* center even if oversized (not using translate) */
    --p-center-shift: calc((1% - 1% / var(--p-scale-to-fit)) * var(--p-align));
    left: var(--p-center-shift);           /*make sure it is relative*/
    width: calc(100% / var(--p-scale-to-fit, 1) + var(--p-scrollbar-width-scaled));
}
.prx_container_x .prx_fit {
    width: var(--p-size-calc, 100vw);
    --p-center-shift: calc((1% - 1% / var(--p-scale-to-fit)) * var(--p-align));
    left: var(--p-center-shift);
    height: calc(100% / var(--p-scale-to-fit, 1) + var(--p-scrollbar-width-scaled));
}
body [prx],
.prx_container_y [prx] {
    transform-origin: 
    var(--p-origin)
    50%;
}
.prx_container_x [prx] {
    transform-origin:
    50%
    var(--p-origin);
}
[prx] {
    --p-scale-adjust: calc(1 + var(--p-depth, 1) / var(--p-perspective));
    /*1 + (translateZ * -1) / perspective*/
    --p-scale-complete: calc(var(--p-scale-adjust) * var(--p-scale-to-fit, 1) * var(--p-scale, 1));
    --origin-shift: calc(
        100% *
        var(--p-scale-adjust)*(var(--p-scale) - 1) /
        (2*(var(--p-scale-complete) - 1))
    );
    /*  a: scale-adjust; b: scale
        a*(b-1) / (2*(đab-1))    */
    --p-origin: calc(
        1% * var(--p-align) + 
        (50 - var(--p-align)) / 50 * var(--origin-shift)
    );
    /*  y: origin-shift; z: align
        z + ((50-z)/50) * y    */
    transform:
    translateZ(calc(var(--p-depth, 1) * -1px))
    scale(var(--p-scale-complete))
    var(--p-transform);
    --p-depth: calc(var(--p-perspective) * (1 / (var(--p-speed, 0.5)) - 1));
}
[prx="0"] {
    --p-depth: 0;
}
[prx="1"] {
    --p-depth: 1;
}
[prx="2"] {
    --p-depth: 2;
}
[prx="3"] {
    --p-depth: 3;
}
[prx="4"] {
    --p-depth: 4;
}
[prx="5"] {
    --p-depth: 5;
}
[prx="6"] {
    --p-depth: 6;
}
[prx="7"] {
    --p-depth: 7;
}
[prx="8"] {
    --p-depth: 8;
}
[prx="9"] {
    --p-depth: 9;
}
[prx="10"] {
    --p-depth: 10;
}

[prx="-1"] {
    --p-depth: -0.3;
}
[prx="-2"] {
    --p-depth: -0.6;
}
[prx="-3"] {
    --p-depth: -0.9;
}
[prx="-4"] {
    --p-depth: -1.2;
}
[prx="-5"] {
    --p-depth: -1.5;
}
[prx="-6"] {
    --p-depth: -1.8;
}
[prx="-7"] {
    --p-depth: -2.1;
}
[prx="-8"] {
    --p-depth: -2.4;
}
[prx="-9"] {
    --p-depth: -2.7;
}
[prx="-10"] {
    --p-depth: -3;
}