html, body {
    margin:0px;
    height:100%;
    box-sizing:border-box;
    font-family: 'Sen', sans-serif;
    background-color:#fbc531;
}

.page {
    height:100%;
    display: flex;
    justify-content: center;
    align-items: center;
}

.wrap {
    margin:0px auto;
    width:100%;
    max-width:500px;
    text-align:center;
    padding:10px;
    box-sizing:border-box;
}

.button {
    width:100%;
    border:0px;
    padding:16px 24px;
    text-align:center;
    display:block;
    background-color:#00a8ff;
    color:#fff;
    font-size:24px;
    font-weight:700;
    text-decoration:none;
    box-sizing:border-box;
    margin-bottom:16px;
    box-shadow:3px 3px 0px 0px rgba(0,0,0,.15);
}

.button.disabled {
    background-color:#ddd !important;
    color:#666;
}

#playing-for {
    font-size:20px;
    display:block;
    margin-bottom:16px;
}

.button:last-child {
    margin-bottom:0px;
}

.button:hover {
    background-color:#0097e6;
}

.button.button-green {
    background-color:#4cd137;
}
.button.button-green:hover {
    background-color:#44bd32;
}
.button.button-purple {
    background-color:#9c88ff;
}
.button.button-purple:hover {
    background-color:#8c7ae6;
}

.panel {
    background-color:#fff;
    box-shadow:3px 3px 0px 0px rgba(0,0,0,.15);
    padding:16px;
    margin-bottom:16px;
}

.panel:last-child {
    margin-bottom:0px;
}

p {
    margin-top:0px;
    font-size:18px;
}

p a {
    color:#00a8ff;
    text-decoration:none;
}

p a:hover {
    text-decoration:underline;
    color:#0097e6;
}

input[type='text'],
input[type='number'] {
    box-sizing:border-box;
    padding:16px 24px;
    background-color:#eee;
    font-size:18px;
    font-family:inherit;
    color:#333;
    width:100%;
    box-shadow:3px 3px 0px 0px rgba(0,0,0,.15);
    border:0px;
    margin-bottom:16px;
}

nav {
    position:fixed;
    top:0;
    left:0;
    width:100%;
    background-color:rgba(0,0,0,.7);
    transition:.2s;
    transform:translateY(-100%);
}

nav.active {
    transform:translateY(0%);
}

nav div {
    position:relative;
}

nav .back {
    padding:10px 16px;
    color:#fff;
    background-color:rgba(0,0,0,0);
    font-size:16px;
    font-family:inherit;
    border:0px;
}

nav span {
    padding:10px 16px;
    color:#fff;
    font-size:16px;
    position:absolute;
    font-weight:700;
    top:0;
    right:0;
}

.loader {
    position:fixed;
    top:0;
    left:0;
    z-index:10000;
    width:100%;
    height:100%;
    background-color:rgba(0,0,0,.85);
}

.loader:after {
    position:absolute;
    width:60px;
    height:60px;
    display:block;
    border-radius:50%;
    content:'';
    box-sizing:border-box;
    top:calc(50% - 30px);
    left:calc(50% - 30px);
    border:3px SOLID #fff;
    border-left-color:rgba(255,255,255,.2);
    border-top-color:rgba(255,255,255,.2);

    animation-name:loader;
    animation-duration:.7s;
    animation-iteration-count:infinite;
    animation-timing-function: linear;
}

@keyframes loader {
    0% {
        transform:rotate(0deg);
    }
    100% {
        transform:rotate(360deg);
    }
}

.no-margin {
    margin:0px;
}

#game-code {
    margin:0px;
    margin-bottom:10px;
    font-size:50px;
    letter-spacing:2px;
}

.players {
    background-color:#eee;
    box-shadow:3px 3px 0px 0px rgba(0,0,0,.15);
    padding:16px 16px;
    margin-top:16px;
}

.players .player {
    padding:8px 16px;
    margin-right:10px;
    display:inline-block;
    background-color:#ddd;
    box-shadow:3px 3px 0px 0px rgba(0,0,0,.15);    
}
.players .player:last-child {
    margin-right:0px;
}

.sheet {
    display:grid;
    grid-gap:8px;
    grid-template-columns: 1fr 1fr 1fr 1fr 1fr;
}

.sheet .number {
    text-align:center;
    font-size:20px;
    border:3px SOLID #ddd;
    line-height:50px;
    position:relative;
    overflow:hidden;
}

.ball {
    width: 200px;
    height:200px;
    margin:10px auto;
    background-color:#e84118;
    color:#fff;
    box-shadow:0px 0px 0px 5px #fff, 0px 0px 0px 10px #e84118;
    text-align:center;
    line-height:200px;
    font-size:120px;
    font-weight:700;
    border-radius:50%;

    transform:translateX(-400px) rotate(-360deg);

}

.animate .ball {
    animation-name:ball;
    animation-duration:1s;
    animation-delay:2s;
    animation-fill-mode: forwards;
}

.sheet .number:after {
    width:40px;
    height:40px;
    top:calc(50% - 20px);
    left:calc(50% - 20px);
    position:absolute;
    content:'';
    border-radius:50%;
    background-color:rgba(232,65,17,.4);
    transform:scale(2);
    opacity:0;
    transition:.3s;
}

.sheet .number.dotted:after {
    transform:scale(1);
    opacity:1;
}

.bingo-sheet {
    animation-name:bingoSheet;
    animation-duration:.4s;
    animation-fill-mode: forwards;
    transform-origin:50% 90%;
}

.ball-container {
    overflow:hidden;
    padding:0px 25px;
    min-height:250px;
}

.ball-nickname {
    font-size:20px;
    margin-top:0px;
    margin-bottom:24px;

    transform:translateY(32px);
    opacity:0;
}

.animate .ball-nickname {
    animation-fill-mode: forwards;
    animation-name:ballNickname;
    animation-duration:2s;
    animation-delay:.2s;
}

@keyframes ballNickname {
    0% {
        transform:translateY(120px) scale(0);
        opacity:0;
    }
    20% {
        transform:translateY(120px) scale(1);
        opacity:1;
    }
    80% {
        transform:translateY(120px) scale(1);
        opacity:1;
    }
    100% {
        transform:translateY(0px) scale(1);
        opacity:1;
    }
}

@keyframes ball {
    0% {
        transform:translateX(-400px) rotate(-360deg);
    }
    100% {
        transform:translateX(0px) rotate(0deg);
    }
}

@keyframes bingoSheet {
    0% {
        transform:scale(.6);
        opacity:0;
    }
    100% {
        transform:scale(1);
        opacity:1;
    }
}

.responsive {
    width:100%;
    max-height:auto;
}

.bingo {
    animation-name:bingo;
    animation-duration:.4s;
    animation-fill-mode:forwards;
    animation-delay:.3s;

    transform:scale(0);
    transform-origin:50% 90%;
}

@keyframes bingo {
    0% {
        transform:scale(0);
    }
    50% {
        transform:scale(1.2);
    }
    100% {
        transform:scale(1);
    }
}

.credits {
    display:block;
    text-align:center;
    font-size:14px;
    padding-top:2px;
}