:root { --cell-side: 24px; } body { background: linear-gradient(#212529, #14171a) fixed; } @supports (backdrop-filter: blur()) { .modal-content { background-color: rgba(33, 37, 41, 30%); backdrop-filter: blur(15px); } } .card { background-color: rgb(37, 41, 45); } .modal-title { text-shadow: 0 0 8px var(--bs-light); } .minoes-table { --piece-column: 0; --piece-row : 0; table-layout: fixed; border-collapse: separate; border-spacing: 0; width: min-content; } #matrixTable { margin-top: calc(-1 * var(--buffer-zone-rows) * var(--cell-side)); } @keyframes hard-dropped-table-animation { 25% { transform: translateY(2px); } } .hard-dropped-table-animation { animation: hard-dropped-table-animation .2s; } tr.buffer-zone td:not(.mino) { border-width: 0; } tr.matrix td:not(.mino) { border-left : 1px solid #333; border-right : 1px solid #333; border-top : 1px solid #303030; border-bottom: 1px solid #303030; } td { overflow: hidden; width: var(--cell-side); height: var(--cell-side); } @keyframes trail-animation { from { background-color: rgb(206, 255, 255, 25%); filter: saturate(50%) brightness(300%); } to { background-color: transparent; } } td.trail-animation { animation: trail-animation ease-out .3s; } @keyframes cleared-line-animation { from { background-color: rgb(206, 255, 255, 40%); filter: saturate(50%) brightness(300%); box-shadow: -200px 0 5px white, 200px 0 5px white; } to { background-color: transparent; } } tr.cleared-line-animation { animation: cleared-line-animation ease-out .3s; } #messagesSpan { position: absolute; top: 5%; left: 50%; transform: translate(-50%, 0); color: rgba(255, 255, 255, 0.8); text-shadow: 1px 1px rgba(0, 0, 0, 0.8); font-size: 3vmin; text-align: center; } #messagesSpan div { opacity: 0; overflow: hidden; } @keyframes show-level-animation { from { opacity: 0; transform: translateY(200%); } 50% { opacity: 100%; transform: translateY(0) scaleY(1); line-height: var(--bs-body-line-height); } to { opacity: 0; transform: translateY(-100%) scaleY(0); line-height: 0; } } #messagesSpan div.show-level-animation { animation: show-level-animation; animation-timing-function: (0.4, 0, 0.6, 1); animation-duration: 2s; } @keyframes zoom-in-animation { from { opacity: 0; transform: scale3d(0.3, 0.3, 0.3); line-height: var(--bs-body-line-height); } 30% { opacity: 1; transform: scale3d(1, 1, 1); } 80% { opacity: 1; transform: scale3d(1, 1, 1); line-height: var(--bs-body-line-height); } to { opacity: 0; transform: scale3d(1.5, 0, 1); line-height: 0; } } @keyframes rotate-in-animation { 0% { opacity:0; transform:rotate(200deg); line-height: var(--bs-body-line-height); } 30% { opacity:1; transform:translateZ(0); transform: scale3d(1, 1, 1); } 80% { opacity: 1; transform: scale3d(1, 1, 1); line-height: var(--bs-body-line-height); } to { opacity: 0; transform: scale3d(1.5, 0, 1); line-height: 0; } } #messagesSpan div.rotate-in-animation { animation-name: rotate-in-animation; animation-timing-function: cubic-bezier(.25,.46,.45,.94); animation-duration: 1s; } #messagesSpan div.zoom-in-animation { animation-name: zoom-in-animation; animation-timing-function: cubic-bezier(.25,.46,.45,.94); transform-origin:center; animation-duration: 1s; } @keyframes game-over-animation { from { opacity: 0; transform: translateY(200%); } to { opacity: 100%; transform: translateY(0) scaleY(1); line-height: var(--bs-body-line-height); } } #messagesSpan div.game-over-animation { animation: game-over-animation; animation-timing-function: (0.4, 0, 0.6, 1); animation-duration: 2s; }