Pen Settings

HTML

CSS

CSS Base

Vendor Prefixing

Add External Stylesheets/Pens

Any URLs added here will be added as <link>s in order, and before the CSS in the editor. You can use the CSS from another Pen by using its URL and the proper URL extension.

+ add another resource

JavaScript

Babel includes JSX processing.

Add External Scripts/Pens

Any URL's added here will be added as <script>s in order, and run before the JavaScript in the editor. You can use the URL of any other Pen and it will include the JavaScript from that Pen.

+ add another resource

Packages

Add Packages

Search for and use JavaScript packages from npm here. By selecting a package, an import statement will be added to the top of the JavaScript editor for this package.

Behavior

Auto Save

If active, Pens will autosave every 30 seconds after being saved once.

Auto-Updating Preview

If enabled, the preview panel updates automatically as you code. If disabled, use the "Run" button to update.

Format on Save

If enabled, your code will be formatted when you actively save your Pen. Note: your code becomes un-folded during formatting.

Editor Settings

Code Indentation

Want to change your Syntax Highlighting theme, Fonts and more?

Visit your global Editor Settings.

HTML

              
                <div id='scene' class='scene'>

    <!-- table -->
    <div id='table' class='layer table'></div>

    <!-- deck -->
    <div id='draw-deck' style='--x:490; --y:182.5; --z:0; --ry:0;' class='stack' data-automate='true' data-source='discard-pile' data-draw='60' data-min='1' data-max='60' data-side='back' data-shuffle='true'>
        <div class='card paused card-texture' style='--fr:0; --fc:0; --br:5; --bc:8;' data-side='back'></div>
        <div class='card paused card-texture' style='--fr:0; --fc:1; --br:5; --bc:8;' data-side='back'></div>
        <div class='card paused card-texture' style='--fr:0; --fc:2; --br:5; --bc:8;' data-side='back'></div>
        <div class='card paused card-texture' style='--fr:0; --fc:3; --br:5; --bc:8;' data-side='back'></div>
        <div class='card paused card-texture' style='--fr:0; --fc:4; --br:5; --bc:8;' data-side='back'></div>
        <div class='card paused card-texture' style='--fr:0; --fc:5; --br:5; --bc:8;' data-side='back'></div>
        <div class='card paused card-texture' style='--fr:0; --fc:6; --br:5; --bc:8;' data-side='back'></div>
        <div class='card paused card-texture' style='--fr:0; --fc:7; --br:5; --bc:8;' data-side='back'></div>
        <div class='card paused card-texture' style='--fr:0; --fc:8; --br:5; --bc:8;' data-side='back'></div>
        <div class='card paused card-texture' style='--fr:1; --fc:0; --br:5; --bc:8;' data-side='back'></div>
        <div class='card paused card-texture' style='--fr:1; --fc:1; --br:5; --bc:8;' data-side='back'></div>
        <div class='card paused card-texture' style='--fr:1; --fc:2; --br:5; --bc:8;' data-side='back'></div>
        <div class='card paused card-texture' style='--fr:1; --fc:3; --br:5; --bc:8;' data-side='back'></div>
        <div class='card paused card-texture' style='--fr:1; --fc:4; --br:5; --bc:8;' data-side='back'></div>
        <div class='card paused card-texture' style='--fr:1; --fc:5; --br:5; --bc:8;' data-side='back'></div>
        <div class='card paused card-texture' style='--fr:1; --fc:6; --br:5; --bc:8;' data-side='back'></div>
        <div class='card paused card-texture' style='--fr:1; --fc:7; --br:5; --bc:8;' data-side='back'></div>
        <div class='card paused card-texture' style='--fr:1; --fc:8; --br:5; --bc:8;' data-side='back'></div>
        <div class='card paused card-texture' style='--fr:2; --fc:0; --br:5; --bc:8;' data-side='back'></div>
        <div class='card paused card-texture' style='--fr:2; --fc:1; --br:5; --bc:8;' data-side='back'></div>
        <div class='card paused card-texture' style='--fr:2; --fc:2; --br:5; --bc:8;' data-side='back'></div>
        <div class='card paused card-texture' style='--fr:2; --fc:3; --br:5; --bc:8;' data-side='back'></div>
        <div class='card paused card-texture' style='--fr:2; --fc:4; --br:5; --bc:8;' data-side='back'></div>
        <div class='card paused card-texture' style='--fr:2; --fc:5; --br:5; --bc:8;' data-side='back'></div>
        <div class='card paused card-texture' style='--fr:2; --fc:6; --br:5; --bc:8;' data-side='back'></div>
        <div class='card paused card-texture' style='--fr:2; --fc:7; --br:5; --bc:8;' data-side='back'></div>
        <div class='card paused card-texture' style='--fr:2; --fc:8; --br:5; --bc:8;' data-side='back'></div>
        <div class='card paused card-texture' style='--fr:3; --fc:0; --br:5; --bc:8;' data-side='back'></div>
        <div class='card paused card-texture' style='--fr:3; --fc:1; --br:5; --bc:8;' data-side='back'></div>
        <div class='card paused card-texture' style='--fr:3; --fc:2; --br:5; --bc:8;' data-side='back'></div>
        <div class='card paused card-texture' style='--fr:3; --fc:3; --br:5; --bc:8;' data-side='back'></div>
        <div class='card paused card-texture' style='--fr:3; --fc:4; --br:5; --bc:8;' data-side='back'></div>
        <div class='card paused card-texture' style='--fr:3; --fc:5; --br:5; --bc:8;' data-side='back'></div>
        <div class='card paused card-texture' style='--fr:3; --fc:6; --br:5; --bc:8;' data-side='back'></div>
        <div class='card paused card-texture' style='--fr:3; --fc:7; --br:5; --bc:8;' data-side='back'></div>
        <div class='card paused card-texture' style='--fr:3; --fc:8; --br:5; --bc:8;' data-side='back'></div>
        <div class='card paused card-texture' style='--fr:4; --fc:0; --br:5; --bc:8;' data-side='back'></div>
        <div class='card paused card-texture' style='--fr:4; --fc:1; --br:5; --bc:8;' data-side='back'></div>
        <div class='card paused card-texture' style='--fr:4; --fc:2; --br:5; --bc:8;' data-side='back'></div>
        <div class='card paused card-texture' style='--fr:4; --fc:3; --br:5; --bc:8;' data-side='back'></div>
        <div class='card paused card-texture' style='--fr:4; --fc:4; --br:5; --bc:8;' data-side='back'></div>
        <div class='card paused card-texture' style='--fr:4; --fc:5; --br:5; --bc:8;' data-side='back'></div>
        <div class='card paused card-texture' style='--fr:4; --fc:6; --br:5; --bc:8;' data-side='back'></div>
        <div class='card paused card-texture' style='--fr:4; --fc:7; --br:5; --bc:8;' data-side='back'></div>
        <div class='card paused card-texture' style='--fr:4; --fc:8; --br:5; --bc:8;' data-side='back'></div>
        <div class='card paused card-texture' style='--fr:5; --fc:0; --br:5; --bc:8;' data-side='back'></div>
        <div class='card paused card-texture' style='--fr:5; --fc:1; --br:5; --bc:8;' data-side='back'></div>
        <div class='card paused card-texture' style='--fr:5; --fc:2; --br:5; --bc:8;' data-side='back'></div>
        <div class='card paused card-texture' style='--fr:5; --fc:3; --br:5; --bc:8;' data-side='back'></div>
        <div class='card paused card-texture' style='--fr:5; --fc:4; --br:5; --bc:8;' data-side='back'></div>
        <div class='card paused card-texture' style='--fr:5; --fc:5; --br:5; --bc:8;' data-side='back'></div>
        <div class='card paused card-texture' style='--fr:5; --fc:6; --br:5; --bc:8;' data-side='back'></div>
    </div>

    <!-- flop -->
    <div id='flop-1'  class='stack'  style='--x:704;  --y:50;  --z:1; --ry:180;'   data-automate='true' data-source='draw-deck' data-draw='1' data-min='1' data-max='1' data-side='front' data-shuffle='false'></div>
    <div id='flop-2'  class='stack'  style='--x:879;  --y:50;  --z:1; --ry:180;'   data-automate='true' data-source='draw-deck' data-draw='1' data-min='1' data-max='1' data-side='front' data-shuffle='false'></div>
    <div id='flop-3'  class='stack'  style='--x:1054; --y:50;  --z:1; --ry:180;'   data-automate='true' data-source='draw-deck' data-draw='1' data-min='1' data-max='1' data-side='front' data-shuffle='false'></div>
    <div id='flop-4'  class='stack'  style='--x:704;  --y:315; --z:1; --ry:180;'   data-automate='true' data-source='draw-deck' data-draw='1' data-min='1' data-max='1' data-side='front' data-shuffle='false'></div>
    <div id='flop-5'  class='stack'  style='--x:879;  --y:315; --z:1; --ry:180;'   data-automate='true' data-source='draw-deck' data-draw='1' data-min='1' data-max='1' data-side='front' data-shuffle='false'></div>
    <div id='flop-6'  class='stack'  style='--x:1054; --y:315; --z:1; --ry:180;'   data-automate='true' data-source='draw-deck' data-draw='1' data-min='1' data-max='1' data-side='front' data-shuffle='false'></div>


    <!-- player hand -->
    <div id='player-hand'  class='hand'  style='--x:879; --y:1190; --z:200; --rx:-25; --ry:180;' data-automate='true' data-source='draw-deck' data-draw='3' data-min='1' data-max='9' data-side='front' data-shuffle='false'></div>

    <!-- discard pile -->
    <div id='discard-pile' class='stack' style='--x:1268; --y:182.5; --rz:0; --ry:180;'   data-max='60' data-side='front'></div>      

</div> 

              
            
!

CSS

              
                *, *:before, *:after{
    -webkit-tap-highlight-color: rgba(0,0,0,0);
            tap-highlight-color: rgba(0,0,0,0);
    -webkit-touch-callout: none;
            touch-callout: none;
    -webkit-text-size-adjust: none;
            text-size-adjust: none;
    -webkit-user-select: none;
            user-select: none;

    -webkit-transform-style: preserve-3d;
            transform-style: preserve-3d;

    -webkit-perspective:var(--card-perspective);
            perspective:var(--card-perspective);  


    -webkit-transform-origin: center;
            transform-origin: center;


    font-family: Helvetica, Arial, Sans-Serif;
    margin:0px; padding:0px;
    cursor:default;

    box-sizing: border-box;


}
*:before, *:after{
    -webkit-backface-visibility: hidden; /* Safari */
            backface-visibility: hidden;
}



:root{
    --scene-width:1920px;
    --scene-height:1080px;
    --card-width:162;
    --card-height:252;
    --card-radius:9;
    --card-perspective:3000px;
    --scale:0.750;
    --transition-speed:0.5s;
}

html, body {
    -webkit-transform-style: flat;
            transform-style: flat;

    background-color: black;
    position:fixed;
    width: 100%; height: 100%;
}

.scene {
    position: fixed;
    top:0px; left:0px;
    width:var(--scene-width); height:var(--scene-height); 
    transform:  translate3d( calc( var(--scene-width) * 0.5 * -1 + 50vw), calc( var(--scene-height) * 0.5 * -1 + 50vh), 0px)   
                scale(var(--scale))  rotateX(60deg);
}



.table {
    position: fixed;
    top:0px; left:0px;
    width:var(--scene-width); height:var(--scene-height);
    background-image: url( 'https://www.wazcraft.com/cpa/img/felt.png' );
    background-position: top left;
    
    box-shadow: 0vmin 0vmin 50vmin rgba(0,0,0,1) inset, 
                0vmin 0vmin 40vmin rgba(0,0,0,1) inset,  
                0vmin 0vmin 30vmin rgba(0,0,0,1) inset, 
                0vmin 0vmin 20vmin rgba(0,0,0,1) inset;
                
}

.move-pickup-putdown {
    animation: MOVE-PICKUP-PUTDOWN var(--transition-speed) forwards; 
}



@keyframes MOVE-PICKUP-PUTDOWN {
    0%   { transform: translate3d( calc( 1px * var(--x) ),  calc( 1px * var(--y) ),  calc( 1px * var(--z)  ) ) rotateX( calc( 1deg * var(--rx) ) ) rotateY( calc( 1deg * var(--ry) ) ) rotateZ( calc( 1deg * var(--rz) ) ); animation-timing-function: cubic-bezier(0.11, 0, 0.5, 0); }
    50%  { transform: translate3d( calc( 1px * ( ( var(--tx) + var(--x) ) * 0.5 ) ),  calc( 1px * ( ( var(--ty) + var(--y) ) * 0.5 ) ),  calc( 1px * (100 + var(--z) ) ) ) rotateX(calc( 1deg * ( ( var(--trx) + var(--rx) ) * 0.5 ) ) ) rotateY(calc( 1deg * ( ( var(--try) + var(--ry) ) * 0.5 ) ) ) rotateZ(calc( 1deg * ( ( var(--trz) + var(--rz) ) * 0.5 ) )); animation-timing-function: cubic-bezier(0.5, 1, 0.89, 1);}
    100% { transform: translate3d( calc( 1px * var(--tx) ), calc( 1px * var(--ty) ), calc( 1px * var(--tz) ) ) rotateX( calc( 1deg * var(--trx) ) ) rotateY( calc( 1deg * var(--try) ) ) rotateZ( calc( 1deg * var(--trz) ) ); }
}

@keyframes MOVE-SLIDE-A {
    0%   { transform: translate3d( calc( 1px * var(--x) ),  calc( 1px * var(--y) ),  calc( 1px * var(--z)  ) ) rotateX( calc( 1deg * var(--rx) ) )  rotateY( calc( 1deg * var(--ry) ) )  rotateZ( calc( 1deg * var(--rz) ) ); }
    100% { transform: translate3d( calc( 1px * var(--tx) ), calc( 1px * var(--ty) ), calc( 1px * var(--tz) ) ) rotateX( calc( 1deg * var(--trx) ) ) rotateY( calc( 1deg * var(--try) ) ) rotateZ( calc( 1deg * var(--trz) ) ); }
}

@keyframes MOVE-SLIDE-B {
    0%   { transform: translate3d( calc( 1px * var(--x) ),  calc( 1px * var(--y) ),  calc( 1px * var(--z)  ) ) rotateX( calc( 1deg * var(--rx) ) )  rotateY( calc( 1deg * var(--ry) ) )  rotateZ( calc( 1deg * var(--rz) ) ); }
    100% { transform: translate3d( calc( 1px * var(--tx) ), calc( 1px * var(--ty) ), calc( 1px * var(--tz) ) ) rotateX( calc( 1deg * var(--trx) ) ) rotateY( calc( 1deg * var(--try) ) ) rotateZ( calc( 1deg * var(--trz) ) ); }
}

@keyframes MOVE-SLIDE-C {
    0%   { transform: translate3d( calc( 1px * var(--x) ),  calc( 1px * var(--y) ),  calc( 1px * var(--z)  ) ) rotateX( calc( 1deg * var(--rx) ) )  rotateY( calc( 1deg * var(--ry) ) )  rotateZ( calc( 1deg * var(--rz) ) ); }
    100% { transform: translate3d( calc( 1px * var(--tx) ), calc( 1px * var(--ty) ), calc( 1px * var(--tz) ) ) rotateX( calc( 1deg * var(--trx) ) ) rotateY( calc( 1deg * var(--try) ) ) rotateZ( calc( 1deg * var(--trz) ) ); }
}

@keyframes MOVE-SLIDE-D {
    0%   { transform: translate3d( calc( 1px * var(--x) ),  calc( 1px * var(--y) ),  calc( 1px * var(--z)  ) ) rotateX( calc( 1deg * var(--rx) ) )  rotateY( calc( 1deg * var(--ry) ) )  rotateZ( calc( 1deg * var(--rz) ) ); }
    100% { transform: translate3d( calc( 1px * var(--tx) ), calc( 1px * var(--ty) ), calc( 1px * var(--tz) ) ) rotateX( calc( 1deg * var(--trx) ) ) rotateY( calc( 1deg * var(--try) ) ) rotateZ( calc( 1deg * var(--trz) ) ); }
}

@keyframes MOVE-SLIDE-E {
    0%   { transform: translate3d( calc( 1px * var(--x) ),  calc( 1px * var(--y) ),  calc( 1px * var(--z)  ) ) rotateX( calc( 1deg * var(--rx) ) )  rotateY( calc( 1deg * var(--ry) ) )  rotateZ( calc( 1deg * var(--rz) ) ); }
    100% { transform: translate3d( calc( 1px * var(--tx) ), calc( 1px * var(--ty) ), calc( 1px * var(--tz) ) ) rotateX( calc( 1deg * var(--trx) ) ) rotateY( calc( 1deg * var(--try) ) ) rotateZ( calc( 1deg * var(--trz) ) ); }
}

@keyframes MOVE-SLIDE-F {
    0%   { transform: translate3d( calc( 1px * var(--x) ),  calc( 1px * var(--y) ),  calc( 1px * var(--z)  ) ) rotateX( calc( 1deg * var(--rx) ) )  rotateY( calc( 1deg * var(--ry) ) )  rotateZ( calc( 1deg * var(--rz) ) ); }
    100% { transform: translate3d( calc( 1px * var(--tx) ), calc( 1px * var(--ty) ), calc( 1px * var(--tz) ) ) rotateX( calc( 1deg * var(--trx) ) ) rotateY( calc( 1deg * var(--try) ) ) rotateZ( calc( 1deg * var(--trz) ) ); }
}

@keyframes MOVE-SLIDE-G {
    0%   { transform: translate3d( calc( 1px * var(--x) ),  calc( 1px * var(--y) ),  calc( 1px * var(--z)  ) ) rotateX( calc( 1deg * var(--rx) ) )  rotateY( calc( 1deg * var(--ry) ) )  rotateZ( calc( 1deg * var(--rz) ) ); }
    100% { transform: translate3d( calc( 1px * var(--tx) ), calc( 1px * var(--ty) ), calc( 1px * var(--tz) ) ) rotateX( calc( 1deg * var(--trx) ) ) rotateY( calc( 1deg * var(--try) ) ) rotateZ( calc( 1deg * var(--trz) ) ); }
}

@keyframes MOVE-SLIDE-H {
    0%   { transform: translate3d( calc( 1px * var(--x) ),  calc( 1px * var(--y) ),  calc( 1px * var(--z)  ) ) rotateX( calc( 1deg * var(--rx) ) )  rotateY( calc( 1deg * var(--ry) ) )  rotateZ( calc( 1deg * var(--rz) ) ); }
    100% { transform: translate3d( calc( 1px * var(--tx) ), calc( 1px * var(--ty) ), calc( 1px * var(--tz) ) ) rotateX( calc( 1deg * var(--trx) ) ) rotateY( calc( 1deg * var(--try) ) ) rotateZ( calc( 1deg * var(--trz) ) ); }
}

@keyframes MOVE-SLIDE-I {
    0%   { transform: translate3d( calc( 1px * var(--x) ),  calc( 1px * var(--y) ),  calc( 1px * var(--z)  ) ) rotateX( calc( 1deg * var(--rx) ) )  rotateY( calc( 1deg * var(--ry) ) )  rotateZ( calc( 1deg * var(--rz) ) ); }
    100% { transform: translate3d( calc( 1px * var(--tx) ), calc( 1px * var(--ty) ), calc( 1px * var(--tz) ) ) rotateX( calc( 1deg * var(--trx) ) ) rotateY( calc( 1deg * var(--try) ) ) rotateZ( calc( 1deg * var(--trz) ) ); }
}

.paused {
    animation:none !important;
}
/* Card */
.card {



    --tx:0;
    --ty:0;
    --tz:0;

    --trx:0;
    --try:0;
    --trz:0;

    --x:var(--tx);
    --y:var(--ty);
    --z:var(--tz);

    --rx:var(--trx);
    --ry:var(--try);
    --rz:var(--trz);

    position:fixed; top:0; left:0;
    transform: translate3d( calc( 1px * var(--x) ), calc( 1px * var(--y) ), calc( 1px * var(--z) ) ) rotateX(calc(1deg * var(--rx))) rotateY(calc(1deg * var(--ry))) rotateZ(calc(1deg * var(--rz)));    
    width:calc( 1px * var(--card-width) ); height:calc( 1px * var(--card-height) );
    border-radius: calc(1px * var(--card-radius) );
    box-shadow: 0px 4px 9px rgba(0,0,0,0.33);

}

.card-texture {
    --rows:6;
    --cols:9; 
    --fr:0;
    --fc:0;
    --br:0;
    --br:0;
}


.card-texture:before, .card-texture:after {
    content:'';
    position:absolute;
    width:calc( 1px * var( --card-width) ); height:calc( 1px * var( --card-height ) );
    border-radius: calc( 1px * var( --card-radius ) );
    background-image:url( 'https://www.wazcraft.com/cpa/img/cards_sm.jpg' ); 
    background-repeat: repeat;
    background-size: calc( 100% * var( --cols ) ) calc( 100% * var( --rows ) );
}

.card-texture:before {
    transform:rotateY(0deg);
    background-position-x:calc( 100% / ( var( --cols ) - 1) * var(--bc) );
    background-position-y:calc( 100% / ( var( --rows ) - 1) * var(--br) );
    box-shadow: 0px 0px 81 rgba(98, 77, 55, 0.25) inset;

}

.card-texture:after {
    transform:rotateY(180deg);
    background-position-x:calc( 100% / ( var( --cols ) - 1) * var(--fc) );
    background-position-y:calc( 100% / ( var( --rows ) - 1) * var(--fr) );
    box-shadow: 0px 0px 81 rgba(98, 77, 55, 0.25) inset;
}


/* Stack (max 60 cards) */ 
.stack {
    --s-space:calc( var(--card-width) * 0.66 );
    --x:0;
    --y:0;
    --z:0;
    --rx:0;
    --ry:0;
    --rz:0;
    --s-x:var(--x);
    --s-y:var(--y);
    --s-z:var(--z);
    --s-rx:var(--rx);
    --s-ry:var(--ry);
    --s-rz:var(--rz);
    position:fixed; 
    left:0px; top:0px; 
    width:var(--scene-width); height:var(--scene-height); 
}

.stack:before {
    content:'';
    position:fixed; 
    left:0px; top:0px; 
    width:calc( 1px * var(--card-width) ); height:calc( 1px * var(--card-height) );
    transform: 
        rotateX( calc( 1deg * var( --s-rx ) ) ) 
        rotateZ( calc( 1deg * var( --s-rz ) ) )
        translate3d( calc( 1px * var(--s-x) ), calc( 1px * var(--s-y) ), calc( 1px * var(--s-z) ) );
    border:dotted 4px rgba(255,255,255,0.25);
    border-radius: calc(1px * var(--card-radius) );
    background-color: rgba(128,128,128,.0125);
}

/* stack event rules */
.stack > .card { animation: MOVE-PICKUP-PUTDOWN var(--transition-speed) forwards;  }
.stack > .card:not(:last-child) { pointer-events:none; }

/* position transforms for child cards */
.stack > .card:nth-child(1)  { --tx:var(--s-x); --ty:var(--s-y); --tz:calc( var(--s-z) +  1); --trx:var(--s-rx); --try:var(--s-ry); --trz:var(--s-rz); }
.stack > .card:nth-child(2)  { --tx:var(--s-x); --ty:var(--s-y); --tz:calc( var(--s-z) +  2); --trx:var(--s-rx); --try:var(--s-ry); --trz:var(--s-rz); }
.stack > .card:nth-child(3)  { --tx:var(--s-x); --ty:var(--s-y); --tz:calc( var(--s-z) +  3); --trx:var(--s-rx); --try:var(--s-ry); --trz:var(--s-rz); }
.stack > .card:nth-child(4)  { --tx:var(--s-x); --ty:var(--s-y); --tz:calc( var(--s-z) +  4); --trx:var(--s-rx); --try:var(--s-ry); --trz:var(--s-rz); }
.stack > .card:nth-child(5)  { --tx:var(--s-x); --ty:var(--s-y); --tz:calc( var(--s-z) +  5); --trx:var(--s-rx); --try:var(--s-ry); --trz:var(--s-rz); }
.stack > .card:nth-child(6)  { --tx:var(--s-x); --ty:var(--s-y); --tz:calc( var(--s-z) +  6); --trx:var(--s-rx); --try:var(--s-ry); --trz:var(--s-rz); }
.stack > .card:nth-child(7)  { --tx:var(--s-x); --ty:var(--s-y); --tz:calc( var(--s-z) +  7); --trx:var(--s-rx); --try:var(--s-ry); --trz:var(--s-rz); }
.stack > .card:nth-child(8)  { --tx:var(--s-x); --ty:var(--s-y); --tz:calc( var(--s-z) +  8); --trx:var(--s-rx); --try:var(--s-ry); --trz:var(--s-rz); }
.stack > .card:nth-child(9)  { --tx:var(--s-x); --ty:var(--s-y); --tz:calc( var(--s-z) +  9); --trx:var(--s-rx); --try:var(--s-ry); --trz:var(--s-rz); }
.stack > .card:nth-child(10) { --tx:var(--s-x); --ty:var(--s-y); --tz:calc( var(--s-z) + 10); --trx:var(--s-rx); --try:var(--s-ry); --trz:var(--s-rz); }
.stack > .card:nth-child(11) { --tx:var(--s-x); --ty:var(--s-y); --tz:calc( var(--s-z) + 11); --trx:var(--s-rx); --try:var(--s-ry); --trz:var(--s-rz); }
.stack > .card:nth-child(12) { --tx:var(--s-x); --ty:var(--s-y); --tz:calc( var(--s-z) + 12); --trx:var(--s-rx); --try:var(--s-ry); --trz:var(--s-rz); }
.stack > .card:nth-child(13) { --tx:var(--s-x); --ty:var(--s-y); --tz:calc( var(--s-z) + 13); --trx:var(--s-rx); --try:var(--s-ry); --trz:var(--s-rz); }
.stack > .card:nth-child(14) { --tx:var(--s-x); --ty:var(--s-y); --tz:calc( var(--s-z) + 14); --trx:var(--s-rx); --try:var(--s-ry); --trz:var(--s-rz); }
.stack > .card:nth-child(15) { --tx:var(--s-x); --ty:var(--s-y); --tz:calc( var(--s-z) + 15); --trx:var(--s-rx); --try:var(--s-ry); --trz:var(--s-rz); }
.stack > .card:nth-child(16) { --tx:var(--s-x); --ty:var(--s-y); --tz:calc( var(--s-z) + 16); --trx:var(--s-rx); --try:var(--s-ry); --trz:var(--s-rz); }
.stack > .card:nth-child(17) { --tx:var(--s-x); --ty:var(--s-y); --tz:calc( var(--s-z) + 17); --trx:var(--s-rx); --try:var(--s-ry); --trz:var(--s-rz); }
.stack > .card:nth-child(18) { --tx:var(--s-x); --ty:var(--s-y); --tz:calc( var(--s-z) + 18); --trx:var(--s-rx); --try:var(--s-ry); --trz:var(--s-rz); }
.stack > .card:nth-child(19) { --tx:var(--s-x); --ty:var(--s-y); --tz:calc( var(--s-z) + 19); --trx:var(--s-rx); --try:var(--s-ry); --trz:var(--s-rz); }
.stack > .card:nth-child(20) { --tx:var(--s-x); --ty:var(--s-y); --tz:calc( var(--s-z) + 20); --trx:var(--s-rx); --try:var(--s-ry); --trz:var(--s-rz); }
.stack > .card:nth-child(21) { --tx:var(--s-x); --ty:var(--s-y); --tz:calc( var(--s-z) + 21); --trx:var(--s-rx); --try:var(--s-ry); --trz:var(--s-rz); }
.stack > .card:nth-child(22) { --tx:var(--s-x); --ty:var(--s-y); --tz:calc( var(--s-z) + 22); --trx:var(--s-rx); --try:var(--s-ry); --trz:var(--s-rz); }
.stack > .card:nth-child(23) { --tx:var(--s-x); --ty:var(--s-y); --tz:calc( var(--s-z) + 23); --trx:var(--s-rx); --try:var(--s-ry); --trz:var(--s-rz); }
.stack > .card:nth-child(24) { --tx:var(--s-x); --ty:var(--s-y); --tz:calc( var(--s-z) + 24); --trx:var(--s-rx); --try:var(--s-ry); --trz:var(--s-rz); }
.stack > .card:nth-child(25) { --tx:var(--s-x); --ty:var(--s-y); --tz:calc( var(--s-z) + 25); --trx:var(--s-rx); --try:var(--s-ry); --trz:var(--s-rz); }
.stack > .card:nth-child(26) { --tx:var(--s-x); --ty:var(--s-y); --tz:calc( var(--s-z) + 26); --trx:var(--s-rx); --try:var(--s-ry); --trz:var(--s-rz); }
.stack > .card:nth-child(27) { --tx:var(--s-x); --ty:var(--s-y); --tz:calc( var(--s-z) + 27); --trx:var(--s-rx); --try:var(--s-ry); --trz:var(--s-rz); }
.stack > .card:nth-child(28) { --tx:var(--s-x); --ty:var(--s-y); --tz:calc( var(--s-z) + 28); --trx:var(--s-rx); --try:var(--s-ry); --trz:var(--s-rz); }
.stack > .card:nth-child(29) { --tx:var(--s-x); --ty:var(--s-y); --tz:calc( var(--s-z) + 29); --trx:var(--s-rx); --try:var(--s-ry); --trz:var(--s-rz); }
.stack > .card:nth-child(30) { --tx:var(--s-x); --ty:var(--s-y); --tz:calc( var(--s-z) + 30); --trx:var(--s-rx); --try:var(--s-ry); --trz:var(--s-rz); }
.stack > .card:nth-child(31) { --tx:var(--s-x); --ty:var(--s-y); --tz:calc( var(--s-z) + 31); --trx:var(--s-rx); --try:var(--s-ry); --trz:var(--s-rz); }
.stack > .card:nth-child(32) { --tx:var(--s-x); --ty:var(--s-y); --tz:calc( var(--s-z) + 32); --trx:var(--s-rx); --try:var(--s-ry); --trz:var(--s-rz); }
.stack > .card:nth-child(33) { --tx:var(--s-x); --ty:var(--s-y); --tz:calc( var(--s-z) + 33); --trx:var(--s-rx); --try:var(--s-ry); --trz:var(--s-rz); }
.stack > .card:nth-child(34) { --tx:var(--s-x); --ty:var(--s-y); --tz:calc( var(--s-z) + 34); --trx:var(--s-rx); --try:var(--s-ry); --trz:var(--s-rz); }
.stack > .card:nth-child(35) { --tx:var(--s-x); --ty:var(--s-y); --tz:calc( var(--s-z) + 35); --trx:var(--s-rx); --try:var(--s-ry); --trz:var(--s-rz); }
.stack > .card:nth-child(36) { --tx:var(--s-x); --ty:var(--s-y); --tz:calc( var(--s-z) + 36); --trx:var(--s-rx); --try:var(--s-ry); --trz:var(--s-rz); }
.stack > .card:nth-child(37) { --tx:var(--s-x); --ty:var(--s-y); --tz:calc( var(--s-z) + 37); --trx:var(--s-rx); --try:var(--s-ry); --trz:var(--s-rz); }
.stack > .card:nth-child(38) { --tx:var(--s-x); --ty:var(--s-y); --tz:calc( var(--s-z) + 38); --trx:var(--s-rx); --try:var(--s-ry); --trz:var(--s-rz); }
.stack > .card:nth-child(39) { --tx:var(--s-x); --ty:var(--s-y); --tz:calc( var(--s-z) + 39); --trx:var(--s-rx); --try:var(--s-ry); --trz:var(--s-rz); }
.stack > .card:nth-child(40) { --tx:var(--s-x); --ty:var(--s-y); --tz:calc( var(--s-z) + 40); --trx:var(--s-rx); --try:var(--s-ry); --trz:var(--s-rz); }
.stack > .card:nth-child(41) { --tx:var(--s-x); --ty:var(--s-y); --tz:calc( var(--s-z) + 41); --trx:var(--s-rx); --try:var(--s-ry); --trz:var(--s-rz); }
.stack > .card:nth-child(42) { --tx:var(--s-x); --ty:var(--s-y); --tz:calc( var(--s-z) + 42); --trx:var(--s-rx); --try:var(--s-ry); --trz:var(--s-rz); }
.stack > .card:nth-child(43) { --tx:var(--s-x); --ty:var(--s-y); --tz:calc( var(--s-z) + 43); --trx:var(--s-rx); --try:var(--s-ry); --trz:var(--s-rz); }
.stack > .card:nth-child(44) { --tx:var(--s-x); --ty:var(--s-y); --tz:calc( var(--s-z) + 44); --trx:var(--s-rx); --try:var(--s-ry); --trz:var(--s-rz); }
.stack > .card:nth-child(45) { --tx:var(--s-x); --ty:var(--s-y); --tz:calc( var(--s-z) + 45); --trx:var(--s-rx); --try:var(--s-ry); --trz:var(--s-rz); }
.stack > .card:nth-child(46) { --tx:var(--s-x); --ty:var(--s-y); --tz:calc( var(--s-z) + 46); --trx:var(--s-rx); --try:var(--s-ry); --trz:var(--s-rz); }
.stack > .card:nth-child(47) { --tx:var(--s-x); --ty:var(--s-y); --tz:calc( var(--s-z) + 47); --trx:var(--s-rx); --try:var(--s-ry); --trz:var(--s-rz); }
.stack > .card:nth-child(48) { --tx:var(--s-x); --ty:var(--s-y); --tz:calc( var(--s-z) + 48); --trx:var(--s-rx); --try:var(--s-ry); --trz:var(--s-rz); }
.stack > .card:nth-child(49) { --tx:var(--s-x); --ty:var(--s-y); --tz:calc( var(--s-z) + 49); --trx:var(--s-rx); --try:var(--s-ry); --trz:var(--s-rz); }
.stack > .card:nth-child(50) { --tx:var(--s-x); --ty:var(--s-y); --tz:calc( var(--s-z) + 50); --trx:var(--s-rx); --try:var(--s-ry); --trz:var(--s-rz); }
.stack > .card:nth-child(51) { --tx:var(--s-x); --ty:var(--s-y); --tz:calc( var(--s-z) + 51); --trx:var(--s-rx); --try:var(--s-ry); --trz:var(--s-rz); }
.stack > .card:nth-child(52) { --tx:var(--s-x); --ty:var(--s-y); --tz:calc( var(--s-z) + 52); --trx:var(--s-rx); --try:var(--s-ry); --trz:var(--s-rz); }




/* Hand (max 9 cards) */ 
.hand {
    --s-space:calc( var(--card-width) * 0.66 );
    --x:0;
    --y:0;
    --z:0;
    --rx:0;
    --ry:0;
    --rz:0;
    --s-x:var(--x);
    --s-y:var(--y);
    --s-z:var(--z);
    --s-rx:var(--rx);
    --s-ry:var(--ry);
    --s-rz:var(--rz);
    position:fixed; 
    left:0px; top:0px; 
    width:var(--scene-width); height:var(--scene-height); 
}

/* 1 Card */
.hand > .card:nth-child(1):nth-last-child(1){animation: MOVE-SLIDE-A var(--transition-speed) forwards; --tx:calc(var(--s-x) + ( var(--s-space) * 0 ) ); --ty:calc( var(--s-y) + 0  ); --tz:calc( var(--s-z) - 0 ); --trx:var(--s-rx); --try:calc(var(--s-ry) - 0.4 ); --trz: 0; }

/* 2 Cards */
.hand > .card:nth-child(1):nth-last-child(2){animation: MOVE-SLIDE-B var(--transition-speed) forwards; --tx:calc(var(--s-x) - ( var(--s-space) * 0.5 ) ); --ty:calc( var(--s-y) + 1  ); --tz:calc( var(--s-z) - 0.5); --trx:var(--s-rx); --try:calc(var(--s-ry) - 0.4 ); --trz: 1; }
.hand > .card:nth-child(2):nth-last-child(1){animation: MOVE-SLIDE-B var(--transition-speed) forwards; --tx:calc(var(--s-x) + ( var(--s-space) * 0.5 ) ); --ty:calc( var(--s-y) + 1  ); --tz:calc( var(--s-z) - 0.5); --trx:var(--s-rx); --try:calc(var(--s-ry) - 0.4 ); --trz:-1; }

/* 3 Cards */
.hand > .card:nth-child(1):nth-last-child(3){animation: MOVE-SLIDE-C var(--transition-speed) forwards; --tx:calc(var(--s-x) - ( var(--s-space) * 1 ) ); --ty:calc( var(--s-y) + 3  ); --tz:calc( var(--s-z) - 1 ); --trx:var(--s-rx); --try:calc(var(--s-ry) - 0.4 ); --trz: 2; }
.hand > .card:nth-child(2):nth-last-child(2){animation: MOVE-SLIDE-C var(--transition-speed) forwards; --tx:calc(var(--s-x) + ( var(--s-space) * 0 ) ); --ty:calc( var(--s-y) + 0  ); --tz:calc( var(--s-z) - 0 ); --trx:var(--s-rx); --try:calc(var(--s-ry) - 0.4 ); --trz: 0; }
.hand > .card:nth-child(3):nth-last-child(1){animation: MOVE-SLIDE-C var(--transition-speed) forwards; --tx:calc(var(--s-x) + ( var(--s-space) * 1 ) ); --ty:calc( var(--s-y) + 3  ); --tz:calc( var(--s-z) - 1 ); --trx:var(--s-rx); --try:calc(var(--s-ry) - 0.4 ); --trz:-2; }

/* 4 Cards */
.hand > .card:nth-child(1):nth-last-child(4){animation: MOVE-SLIDE-D var(--transition-speed) forwards; --tx:calc(var(--s-x) - ( var(--s-space) * 1.5 ) ); --ty:calc( var(--s-y) + 3  ); --tz:calc( var(--s-z) - 2  ); --trx:var(--s-rx); --try:calc(var(--s-ry) - 0.4 ); --trz: 3; }
.hand > .card:nth-child(2):nth-last-child(3){animation: MOVE-SLIDE-D var(--transition-speed) forwards; --tx:calc(var(--s-x) - ( var(--s-space) * 0.5 ) ); --ty:calc( var(--s-y) + 1  ); --tz:calc( var(--s-z) - 0.5); --trx:var(--s-rx); --try:calc(var(--s-ry) - 0.4 ); --trz: 1; }
.hand > .card:nth-child(3):nth-last-child(2){animation: MOVE-SLIDE-D var(--transition-speed) forwards; --tx:calc(var(--s-x) + ( var(--s-space) * 0.5 ) ); --ty:calc( var(--s-y) + 1  ); --tz:calc( var(--s-z) - 0.5); --trx:var(--s-rx); --try:calc(var(--s-ry) - 0.4 ); --trz:-1; }
.hand > .card:nth-child(4):nth-last-child(1){animation: MOVE-SLIDE-D var(--transition-speed) forwards; --tx:calc(var(--s-x) + ( var(--s-space) * 1.5 ) ); --ty:calc( var(--s-y) + 3  ); --tz:calc( var(--s-z) - 2  ); --trx:var(--s-rx); --try:calc(var(--s-ry) - 0.4 ); --trz:-3; }

/* 5 Cards */
.hand > .card:nth-child(1):nth-last-child(5){animation: MOVE-SLIDE-E var(--transition-speed) forwards; --tx:calc(var(--s-x) - ( var(--s-space) * 2 ) ); --ty:calc( var(--s-y) + 8  ); --tz:calc( var(--s-z) - 4 ); --trx:var(--s-rx); --try:calc(var(--s-ry) - 0.4 ); --trz: 4; }
.hand > .card:nth-child(2):nth-last-child(4){animation: MOVE-SLIDE-E var(--transition-speed) forwards; --tx:calc(var(--s-x) - ( var(--s-space) * 1 ) ); --ty:calc( var(--s-y) + 3  ); --tz:calc( var(--s-z) - 1 ); --trx:var(--s-rx); --try:calc(var(--s-ry) - 0.4 ); --trz: 2; }
.hand > .card:nth-child(3):nth-last-child(3){animation: MOVE-SLIDE-E var(--transition-speed) forwards; --tx:calc(var(--s-x) + ( var(--s-space) * 0 ) ); --ty:calc( var(--s-y) + 0  ); --tz:calc( var(--s-z) - 0 ); --trx:var(--s-rx); --try:calc(var(--s-ry) - 0.4 ); --trz: 0; }
.hand > .card:nth-child(4):nth-last-child(2){animation: MOVE-SLIDE-E var(--transition-speed) forwards; --tx:calc(var(--s-x) + ( var(--s-space) * 1 ) ); --ty:calc( var(--s-y) + 3  ); --tz:calc( var(--s-z) - 1 ); --trx:var(--s-rx); --try:calc(var(--s-ry) - 0.4 ); --trz:-2; }
.hand > .card:nth-child(5):nth-last-child(1){animation: MOVE-SLIDE-E var(--transition-speed) forwards; --tx:calc(var(--s-x) + ( var(--s-space) * 2 ) ); --ty:calc( var(--s-y) + 8  ); --tz:calc( var(--s-z) - 4 ); --trx:var(--s-rx); --try:calc(var(--s-ry) - 0.4 ); --trz:-4; }

/* 6 Cards */
.hand > .card:nth-child(1):nth-last-child(6){animation: MOVE-SLIDE-F var(--transition-speed) forwards; --tx:calc(var(--s-x) - ( var(--s-space) * 2.5 ) ); --ty:calc( var(--s-y) + 10 ); --tz:calc( var(--s-z) - 5  ); --trx:var(--s-rx); --try:calc(var(--s-ry) - 0.4 ); --trz: 5; }
.hand > .card:nth-child(2):nth-last-child(5){animation: MOVE-SLIDE-F var(--transition-speed) forwards; --tx:calc(var(--s-x) - ( var(--s-space) * 1.5 ) ); --ty:calc( var(--s-y) + 3  ); --tz:calc( var(--s-z) - 2  ); --trx:var(--s-rx); --try:calc(var(--s-ry) - 0.4 ); --trz: 3; }
.hand > .card:nth-child(3):nth-last-child(4){animation: MOVE-SLIDE-F var(--transition-speed) forwards; --tx:calc(var(--s-x) - ( var(--s-space) * 0.5 ) ); --ty:calc( var(--s-y) + 1  ); --tz:calc( var(--s-z) - 0.5); --trx:var(--s-rx); --try:calc(var(--s-ry) - 0.4 ); --trz: 1; }
.hand > .card:nth-child(4):nth-last-child(3){animation: MOVE-SLIDE-F var(--transition-speed) forwards; --tx:calc(var(--s-x) + ( var(--s-space) * 0.5 ) ); --ty:calc( var(--s-y) + 1  ); --tz:calc( var(--s-z) - 0.5); --trx:var(--s-rx); --try:calc(var(--s-ry) - 0.4 ); --trz:-1; }
.hand > .card:nth-child(5):nth-last-child(2){animation: MOVE-SLIDE-F var(--transition-speed) forwards; --tx:calc(var(--s-x) + ( var(--s-space) * 1.5 ) ); --ty:calc( var(--s-y) + 3  ); --tz:calc( var(--s-z) - 2  ); --trx:var(--s-rx); --try:calc(var(--s-ry) - 0.4 ); --trz:-3; }
.hand > .card:nth-child(6):nth-last-child(1){animation: MOVE-SLIDE-F var(--transition-speed) forwards; --tx:calc(var(--s-x) + ( var(--s-space) * 2.5 ) ); --ty:calc( var(--s-y) + 10 ); --tz:calc( var(--s-z) - 5  ); --trx:var(--s-rx); --try:calc(var(--s-ry) - 0.4 ); --trz:-5; }

/* 7 Cards */
.hand > .card:nth-child(1):nth-last-child(7){animation: MOVE-SLIDE-G var(--transition-speed) forwards; --tx:calc(var(--s-x) - ( var(--s-space) * 3 ) ); --ty:calc( var(--s-y) + 17 ); --tz:calc( var(--s-z) - 8 ); --trx:var(--s-rx); --try:calc(var(--s-ry) - 0.4 ); --trz: 6; }
.hand > .card:nth-child(2):nth-last-child(6){animation: MOVE-SLIDE-G var(--transition-speed) forwards; --tx:calc(var(--s-x) - ( var(--s-space) * 2 ) ); --ty:calc( var(--s-y) + 8  ); --tz:calc( var(--s-z) - 4 ); --trx:var(--s-rx); --try:calc(var(--s-ry) - 0.4 ); --trz: 4; }
.hand > .card:nth-child(3):nth-last-child(5){animation: MOVE-SLIDE-G var(--transition-speed) forwards; --tx:calc(var(--s-x) - ( var(--s-space) * 1 ) ); --ty:calc( var(--s-y) + 3  ); --tz:calc( var(--s-z) - 1 ); --trx:var(--s-rx); --try:calc(var(--s-ry) - 0.4 ); --trz: 2; }
.hand > .card:nth-child(4):nth-last-child(4){animation: MOVE-SLIDE-G var(--transition-speed) forwards; --tx:calc(var(--s-x) + ( var(--s-space) * 0 ) ); --ty:calc( var(--s-y) + 0  ); --tz:calc( var(--s-z) - 0 ); --trx:var(--s-rx); --try:calc(var(--s-ry) - 0.4 ); --trz: 0; }
.hand > .card:nth-child(5):nth-last-child(3){animation: MOVE-SLIDE-G var(--transition-speed) forwards; --tx:calc(var(--s-x) + ( var(--s-space) * 1 ) ); --ty:calc( var(--s-y) + 3  ); --tz:calc( var(--s-z) - 1 ); --trx:var(--s-rx); --try:calc(var(--s-ry) - 0.4 ); --trz:-2; }
.hand > .card:nth-child(6):nth-last-child(2){animation: MOVE-SLIDE-G var(--transition-speed) forwards; --tx:calc(var(--s-x) + ( var(--s-space) * 2 ) ); --ty:calc( var(--s-y) + 8  ); --tz:calc( var(--s-z) - 4 ); --trx:var(--s-rx); --try:calc(var(--s-ry) - 0.4 ); --trz:-4; }
.hand > .card:nth-child(7):nth-last-child(1){animation: MOVE-SLIDE-G var(--transition-speed) forwards; --tx:calc(var(--s-x) + ( var(--s-space) * 3 ) ); --ty:calc( var(--s-y) + 17 ); --tz:calc( var(--s-z) - 8 ); --trx:var(--s-rx); --try:calc(var(--s-ry) - 0.4 ); --trz:-6; }

/* 8 Cards */
.hand > .card:nth-child(1):nth-last-child(8){animation: MOVE-SLIDE-H var(--transition-speed) forwards; --tx:calc(var(--s-x) - ( var(--s-space) * 3.5 ) ); --ty:calc( var(--s-y) + 20 ); --tz:calc( var(--s-z) - 10 ); --trx:var(--s-rx); --try:calc(var(--s-ry) - 0.4 ); --trz: 7; }
.hand > .card:nth-child(2):nth-last-child(7){animation: MOVE-SLIDE-H var(--transition-speed) forwards; --tx:calc(var(--s-x) - ( var(--s-space) * 2.5 ) ); --ty:calc( var(--s-y) + 10 ); --tz:calc( var(--s-z) - 5  ); --trx:var(--s-rx); --try:calc(var(--s-ry) - 0.4 ); --trz: 5; }
.hand > .card:nth-child(3):nth-last-child(6){animation: MOVE-SLIDE-H var(--transition-speed) forwards; --tx:calc(var(--s-x) - ( var(--s-space) * 1.5 ) ); --ty:calc( var(--s-y) + 3  ); --tz:calc( var(--s-z) - 2  ); --trx:var(--s-rx); --try:calc(var(--s-ry) - 0.4 ); --trz: 3; }
.hand > .card:nth-child(4):nth-last-child(5){animation: MOVE-SLIDE-H var(--transition-speed) forwards; --tx:calc(var(--s-x) - ( var(--s-space) * 0.5 ) ); --ty:calc( var(--s-y) + 1  ); --tz:calc( var(--s-z) - 0.5); --trx:var(--s-rx); --try:calc(var(--s-ry) - 0.4 ); --trz: 1; }
.hand > .card:nth-child(5):nth-last-child(4){animation: MOVE-SLIDE-H var(--transition-speed) forwards; --tx:calc(var(--s-x) + ( var(--s-space) * 0.5 ) ); --ty:calc( var(--s-y) + 1  ); --tz:calc( var(--s-z) - 0.5); --trx:var(--s-rx); --try:calc(var(--s-ry) - 0.4 ); --trz:-1; }
.hand > .card:nth-child(6):nth-last-child(3){animation: MOVE-SLIDE-H var(--transition-speed) forwards; --tx:calc(var(--s-x) + ( var(--s-space) * 1.5 ) ); --ty:calc( var(--s-y) + 3  ); --tz:calc( var(--s-z) - 2  ); --trx:var(--s-rx); --try:calc(var(--s-ry) - 0.4 ); --trz:-3; }
.hand > .card:nth-child(7):nth-last-child(2){animation: MOVE-SLIDE-H var(--transition-speed) forwards; --tx:calc(var(--s-x) + ( var(--s-space) * 2.5 ) ); --ty:calc( var(--s-y) + 10 ); --tz:calc( var(--s-z) - 5  ); --trx:var(--s-rx); --try:calc(var(--s-ry) - 0.4 ); --trz:-5; }
.hand > .card:nth-child(8):nth-last-child(1){animation: MOVE-SLIDE-H var(--transition-speed) forwards; --tx:calc(var(--s-x) + ( var(--s-space) * 3.5 ) ); --ty:calc( var(--s-y) + 20 ); --tz:calc( var(--s-z) - 10 ); --trx:var(--s-rx); --try:calc(var(--s-ry) - 0.4 ); --trz:-7; }

/* 9 Cards */
.hand > .card:nth-child(1):nth-last-child(9){animation: MOVE-SLIDE-I var(--transition-speed) forwards; --tx:calc(var(--s-x) - ( var(--s-space) * 4 ) ); --ty:calc( var(--s-y) + 28 ); --tz:calc( var(--s-z) - 13); --trx:var(--s-rx); --try:calc(var(--s-ry) - 0.4 ); --trz: 8; }
.hand > .card:nth-child(2):nth-last-child(8){animation: MOVE-SLIDE-I var(--transition-speed) forwards; --tx:calc(var(--s-x) - ( var(--s-space) * 3 ) ); --ty:calc( var(--s-y) + 17 ); --tz:calc( var(--s-z) - 8 ); --trx:var(--s-rx); --try:calc(var(--s-ry) - 0.4 ); --trz: 6; }
.hand > .card:nth-child(3):nth-last-child(7){animation: MOVE-SLIDE-I var(--transition-speed) forwards; --tx:calc(var(--s-x) - ( var(--s-space) * 2 ) ); --ty:calc( var(--s-y) + 8  ); --tz:calc( var(--s-z) - 4 ); --trx:var(--s-rx); --try:calc(var(--s-ry) - 0.4 ); --trz: 4; }
.hand > .card:nth-child(4):nth-last-child(6){animation: MOVE-SLIDE-I var(--transition-speed) forwards; --tx:calc(var(--s-x) - ( var(--s-space) * 1 ) ); --ty:calc( var(--s-y) + 3  ); --tz:calc( var(--s-z) - 1 ); --trx:var(--s-rx); --try:calc(var(--s-ry) - 0.4 ); --trz: 2; }
.hand > .card:nth-child(5):nth-last-child(5){animation: MOVE-SLIDE-I var(--transition-speed) forwards; --tx:calc(var(--s-x) + ( var(--s-space) * 0 ) ); --ty:calc( var(--s-y) + 0  ); --tz:calc( var(--s-z) - 0 ); --trx:var(--s-rx); --try:calc(var(--s-ry) - 0.4 ); --trz: 0; }
.hand > .card:nth-child(6):nth-last-child(4){animation: MOVE-SLIDE-I var(--transition-speed) forwards; --tx:calc(var(--s-x) + ( var(--s-space) * 1 ) ); --ty:calc( var(--s-y) + 3  ); --tz:calc( var(--s-z) - 1 ); --trx:var(--s-rx); --try:calc(var(--s-ry) - 0.4 ); --trz:-2; }
.hand > .card:nth-child(7):nth-last-child(3){animation: MOVE-SLIDE-I var(--transition-speed) forwards; --tx:calc(var(--s-x) + ( var(--s-space) * 2 ) ); --ty:calc( var(--s-y) + 8  ); --tz:calc( var(--s-z) - 4 ); --trx:var(--s-rx); --try:calc(var(--s-ry) - 0.4 ); --trz:-4; }
.hand > .card:nth-child(8):nth-last-child(2){animation: MOVE-SLIDE-I var(--transition-speed) forwards; --tx:calc(var(--s-x) + ( var(--s-space) * 3 ) ); --ty:calc( var(--s-y) + 17 ); --tz:calc( var(--s-z) - 8 ); --trx:var(--s-rx); --try:calc(var(--s-ry) - 0.4 ); --trz:-6; }
.hand > .card:nth-child(9):nth-last-child(1){animation: MOVE-SLIDE-I var(--transition-speed) forwards; --tx:calc(var(--s-x) + ( var(--s-space) * 4 ) ); --ty:calc( var(--s-y) + 28 ); --tz:calc( var(--s-z) - 13); --trx:var(--s-rx); --try:calc(var(--s-ry) - 0.4 ); --trz:-8; }

              
            
!

JS

              
                /*
 * Main
 */


var MAIN = MAIN || {};

( function () {
	
	MAIN.SCENE;

	// Init
	MAIN.Init = function(){
		// supress text select bubble
		window.addEventListener('touchstart', function(e){e.preventDefault(); e.stopPropagation();} );
		window.addEventListener('touchmove', function(e){e.preventDefault(); e.stopPropagation();} );
		window.addEventListener('touchend', function(e){e.preventDefault(); e.stopPropagation();}) ;

		// add animation end event listener to all cards
		var cards = document.getElementsByClassName('card');
		for(let card of cards ){
			card.addEventListener('animationend', MAIN.RESET_TRANSITION_VARS);
		}


		MAIN.RESET_GAME();


		// example function that moves cards to the discard pile
		MAIN.SCENE = document.getElementById('scene');
		MAIN.SCENE.addEventListener('click', MAIN.ON_CLICK );
	}


	MAIN.ON_CLICK = function(e){
		if(e.target.classList.contains('card')){
			let parent = e.target.parentNode;
			if(parent.id == 'draw-deck' || parent.id.indexOf('flop-') != -1 ){
				let hand = document.getElementById('player-hand');
				if(hand.children.length < hand.dataset.max){
					hand.append(e.target);
				}
			}else{
				document.getElementById('discard-pile').append(e.target);
			}
					MAIN.AUTOMATE();

		}

	}

	MAIN.RESET_TRANSITION_VARS = function(e){
		let cs = getComputedStyle(e.target);
    	e.target.style.setProperty('--x', cs.getPropertyValue('--tx') );
    	e.target.style.setProperty('--y', cs.getPropertyValue('--ty') );
    	e.target.style.setProperty('--z', cs.getPropertyValue('--tz') );
    	e.target.style.setProperty('--rx', cs.getPropertyValue('--trx') );
    	e.target.style.setProperty('--ry', cs.getPropertyValue('--try') );
    	e.target.style.setProperty('--rz', cs.getPropertyValue('--trz') );
    	e.target.style['animation-delay'] = '0ms';
	}


	MAIN.RESET_GAME = function(){
		
		// move all cards to the draw-deck
		//MAIN.DEAL( 'draw-deck', 'scene', 1000, 33 ).then( () => { 
			
			// shuffle the draw-deck
			MAIN.SHUFFLE( 'draw-deck' ).then( () => {

				MAIN.AUTOMATE().then(() => {

					console.log('done automating');

				});

			}); //<-- shuffle the draw-deck

		//}); //<-- move all cards to the draw-deck

	}


	MAIN.AUTOMATE = function(){
		console.log('[MAIN.AUTOMATE]');
		return new Promise( (resolve, reject) => {
			
			// get all automatable doms
			let automatables = document.getElementById('scene').querySelectorAll('[data-automate~="true"]');
			let d = 0;
			let i = 0;
			let del = 120;
			let wait;

			let check = function(){
				
				wait ? wait.then( () => { resolve() } ) : resolve();

			}

			let step = function(){

				let automatable = automatables[i];
				let source = document.getElementById( automatable.dataset.source );


				//+++ dom is incomplete 
				if( automatable.children.length < automatable.dataset.min || automatable.dataset.incomplete == 'true' ){  


		  			if( source.children.length > 0 ){
					

		  				let draw = ( automatable.dataset.incomplete == 'true' ) ? automatable.dataset.draw - automatable.children.length : automatable.dataset.draw;
		  				delete automatable.dataset.incomplete;
						wait = MAIN.DEAL( automatable.id, automatable.dataset.source, draw, d*del );
					
						if(automatable.dataset.shuffle == 'true'){

							d = 0;
							wait.then( () => { MAIN.SHUFFLE( automatable.id ).then( () => { step(); } ); } );

						}else{

							if(automatable.children.length < automatable.dataset.draw){
								
								console.log('incomplete');

								automatable.dataset.incomplete = 'true';

								console.log(automatable);

								//+++ mark the dom as not done

								// automate
								wait.then( () =>{ MAIN.AUTOMATE().then( () => step() ) } );

							}else{
								d++; 
								i++;
				  				i < automatables.length ? step() : check();
							}
						}
		  	
		  			}else{
		  	
		  				d = 0;
		  				wait.then( () =>{ MAIN.AUTOMATE().then( () => step() ) } );

		  			}
		  	
		  		}else{
		  	
		  			i++;
		  			i < automatables.length ? step() : check();

		  		}
			
			}

			step();						
		
		});

	}

	//MAIN.DEAL = function(destination_id, source_id, number, offset){
	MAIN.DEAL = function(destination_id, source_id, draw, offset){ //+++ add the data-draw to function input

		return new Promise( (resolve, reject) => {

			let destination = document.getElementById(destination_id);
			let source = document.getElementById(source_id);
			let cards = Array.from(source.getElementsByClassName('card'));
			//let draw = destination.dataset.draw;
			let i = 0;
			let card;
			let deal = true;
			let del = Math.min(500 / destination.dataset.draw, 500);
			
			while( i < draw && cards.length > 0 && destination.children.length < destination.dataset.max ){
				
				if(cards[cards.length-1].parentNode != destination ){
					card = cards[cards.length-1];
					card.classList.remove('paused');
					destination.append(card);
					card.style['animation-delay'] = ( offset + (i*del) ) + 'ms';
					i++;
				}
				cards.pop();
			
			}
			
			let animation_end = function(e){
			
				e.target.removeEventListener('animationend', animation_end);
				resolve();
			
			}
			
			card ? card.addEventListener('animationend', animation_end) : resolve();

		});
	}


	MAIN.SHUFFLE = function(target){

		return new Promise( (resolve, reject) => {

			let deck = document.getElementById(target);
			let cards = Array.from(deck.getElementsByClassName('card'));
			let d = 0;
			let card;

			/* shuffle */
			cards.sort(function (a, b) { return 0.5 - Math.random() });

			for(let i = 0; i < cards.length; i++ ){
			
				card = cards[i];
				card.classList.remove('paused');
				deck.append(card);
				card.style['animation-delay'] = ( 16.66 * d ) + 'ms';
				d++;
			
			}

			let animation_end = function(e){
			
				e.target.removeEventListener('animationend', animation_end);
				resolve();
			
			}

			card ? card.addEventListener('animationend', animation_end) : resolve(true);

		});
	}








	
} ) (); 

window.onload = function(){  MAIN.Init();  }

              
            
!
999px

Console