@font-face { font-family: 'Mona Sans'; src: url('../fonts/Mona-Sans.woff2') format('woff2 supports variations'), url('../fonts/Mona-Sans.woff2') format('woff2-variations'); font-weight: 200 900; font-stretch: 75% 125%; } html { min-height: 100%; font-family: 'Mona Sans'; } html, button { letter-spacing: .02rem; } html, body { touch-action: none; -webkit-user-select: none; user-select: none; } body { margin: 0; background-color: #ffd1e0; /* https://cssgradient.io/gradient-backgrounds */ background-image: linear-gradient(to top, #a8edea 10%, #ffd1e0 100%); font-size: 13px; line-height: 1.4; -webkit-tap-highlight-color: transparent; height: 100%; } p, footer { text-wrap: balance; } body.game-running { overflow: hidden; } @media (min-width: 375px) { body { font-size: 15px; } } @media (min-width: 414px) { body { font-size: 16px; } } a { color: inherit; } a:hover { text-decoration: none; } h1, h2, h3 { margin: 0.3em 0 1em 0; font-weight: bold; } h1 { font-size: 20px; color: rgba(34, 34, 34, 0.75); text-align: center; margin: 0 auto; } h2 { color: rgba(34, 34, 34, 0.75); padding: 0 1rem; } button, h2 { font-size: 14px; } .screen-win h2, .screen-lose h2 { text-align: center; margin-top: 130px; } h1, h2, p, footer { cursor: default; } .screen-privacy-policy h1, .screen-privacy-policy h2, .screen-privacy-policy p { cursor: text; } .screen-win .star { width: 49px; filter: drop-shadow(2px 2px 11px rgba(0, 0, 0, 0.1)); } .rating svg:not(:last-of-type) { margin-right: 0.7rem; } @media (min-width: 768px) { .screen-win .star { width: 63px; } .rating svg:not(:last-of-type) { margin-right: 0.9rem; } } .screen-win button:not(:last-of-type), .screen-lose button:not(:last-of-type) { margin-right: .8rem; } svg.screen-level-select-title { max-width: 600px; } .ingame-title { display: none; margin: 0 auto; padding: 2.5rem 0 1.8rem 0; width: 247px; height: auto; } @media (min-width: 321px) { .ingame-title { display: block; } } @media (min-width: 768px) { .ingame-title { width: 260px; padding: 2.2rem 0 1.2rem 0; } } button { border-radius: 1rem; line-height: 1.5; display: inline-block; border: none; margin: 0; padding: .4rem 1.2rem; text-decoration: none; background-image: linear-gradient(120deg, #f073fe 0, #f53851 50%, #f073fe 100%); background-size: 200% auto; color: rgba(255, 255, 255, 0.87); font-family: inherit; font-weight: 600; cursor: pointer; text-align: center; transition: background 250ms ease-in-out, transform 150ms ease; -webkit-appearance: none; -moz-appearance: none; } .flex-grid button { padding: .4rem .8rem; } button.button-icon { padding-left: 1.4rem; padding-right: 1.4rem; } @media (min-width: 375px) { button, h2 { font-size: 15px; } } button:disabled.disabled { opacity: 0.3; cursor: not-allowed; } button:hover, button:focus { background-position: right center; } button:focus { outline: none; /* box-shadow: inset 0 0 3px 3px rgba(255, 255, 255, 0.4); */ } button:active:not(:disabled) { transform: scale(0.97); } button.subtle { background-image: none; color: rgba(34, 34, 34, 0.75); background-color: rgba(255, 255, 255, 0.32); /* -webkit-backdrop-filter: saturate(220%) blur(10px); backdrop-filter: saturate(190%) blur(10px); */ transition: background-color .3s ease-out; } button.subtle:hover, button.subtle:active, button.subtle:focus-visible { background-color: rgba(255, 255, 255, 0.56); } button.subtle.highlight { border: 3px solid white; } button.subtle.highlight .level { line-height: 1.15; } button.subtle.highlight .rating { bottom: 2.5%; } @media (min-width: 375px) { button.subtle.highlight .level { line-height: 1.2; } button.subtle.highlight .rating { bottom: 3%; } } @media (min-width: 384px) { button.subtle.highlight .level { line-height: 1.3; } button.subtle.highlight .rating { bottom: 5%; } } @media (min-width: 780px) { button.subtle.highlight .level { line-height: 1.25; } button.subtle.highlight .rating { bottom: 3%; } } button.start { border-radius: 1rem; } button.sound-on, button.sound-off, button.guides-on, button.guides-off { width: 40px; background-repeat: no-repeat; background-position: center; background-size: 20px; } button.sound-on { /* https://iconmonstr.com/audio-5-svg/ */ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill='%23222222bf' viewBox='0 0 24 24'%3E%3Cpath d='M5 17h-5v-10h5v10zm2-10v10l9 5v-20l-9 5zm17 4h-5v2h5v-2zm-1.584-6.232l-4.332 2.5 1 1.732 4.332-2.5-1-1.732zm1 12.732l-4.332-2.5-1 1.732 4.332 2.5 1-1.732z'/%3E%3C/svg%3E"); } button.sound-off { /* https://iconmonstr.com/audio-9-svg/ */ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill='%23222222bf' viewBox='0 0 24 24'%3E%3Cpath d='M5 17h-5v-10h5v10zm2-10v10l9 5v-20l-9 5zm15.324 4.993l1.646-1.659-1.324-1.324-1.651 1.67-1.665-1.648-1.316 1.318 1.67 1.657-1.65 1.669 1.318 1.317 1.658-1.672 1.666 1.653 1.324-1.325-1.676-1.656z'/%3E%3C/svg%3E"); } button.guides-on, button.guides-off { width: 40px; background-repeat: no-repeat; background-position: center; background-size: 20px; } button.guides-on { /* https://iconmonstr.com/light-bulb-2-svg/ */ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill='%23222222bf' viewBox='0 0 24 24'%3E%3Cpath d='M19 6.734c0 4.164-3.75 6.98-3.75 10.266h-1.992c.001-2.079.997-3.826 1.968-5.513.912-1.585 1.774-3.083 1.774-4.753 0-3.108-2.517-4.734-5.004-4.734-2.483 0-4.996 1.626-4.996 4.734 0 1.67.862 3.168 1.774 4.753.971 1.687 1.966 3.434 1.967 5.513h-1.991c0-3.286-3.75-6.103-3.75-10.266 0-4.343 3.498-6.734 6.996-6.734 3.502 0 7.004 2.394 7.004 6.734zm-4 11.766c0 .276-.224.5-.5.5h-5c-.276 0-.5-.224-.5-.5s.224-.5.5-.5h5c.276 0 .5.224.5.5zm0 2c0 .276-.224.5-.5.5h-5c-.276 0-.5-.224-.5-.5s.224-.5.5-.5h5c.276 0 .5.224.5.5zm-1.701 3.159c-.19.216-.465.341-.753.341h-1.093c-.288 0-.562-.125-.752-.341l-1.451-1.659h5.5l-1.451 1.659z'/%3E%3C/svg%3E"); } button.guides-off { /* https://iconmonstr.com/light-bulb-14-svg// */ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill='%23222222bf' viewBox='0 0 24 24'%3E%3Cpath d='M10.741 17h-1.991c0-.17-.016-.338-.035-.506l1.703-1.548c.197.653.323 1.332.323 2.054zm-.04 6.659c.19.216.465.341.753.341h1.093c.288 0 .562-.125.752-.341l1.451-1.659h-5.5l1.451 1.659zm3.799-3.659h-5c-.276 0-.5.224-.5.5s.224.5.5.5h5c.276 0 .5-.224.5-.5s-.224-.5-.5-.5zm0-2h-5c-.276 0-.5.224-.5.5s.224.5.5.5h5c.276 0 .5-.224.5-.5s-.224-.5-.5-.5zm1.707-8.315c-1.104 2.28-2.948 4.483-2.949 7.315h1.992c0-3.169 3.479-5.906 3.726-9.832l-2.769 2.517zm6.793-8.201l-20.654 18.75-1.346-1.5 6.333-5.728c-1.062-1.873-2.333-3.843-2.333-6.272 0-4.343 3.498-6.734 6.996-6.734 2.408 0 4.798 1.146 6.064 3.267l3.598-3.267 1.342 1.484zm-14.147 10.142l7.676-6.969c-.833-1.742-2.682-2.657-4.533-2.657-2.483 0-4.996 1.626-4.996 4.734 0 1.713.907 3.246 1.853 4.892z'/%3E%3C/svg%3E"); } select { padding-right: 2rem; } select:focus { outline: none; box-shadow: 0 0 0px 3px #fe3a6b; } .flex-grid { display: flex; flex-wrap: wrap; padding: 0 1rem; max-width: 750px; margin: 0 auto; overflow: scroll; scrollbar-width: none; /* scroll-snap-type: y mandatory; */ touch-action: pan-y; /* Prevent pinch to zoom */ } .flex-grid::focus-visible { border: none; } .flex-grid::-webkit-scrollbar { display: none; } .flex-grid-item { position: relative; /* scroll-snap-align: start; */ width: 23.5%; margin-top: 2%; font-size: 1rem; } .flex-grid-item .rating { font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Oxygen, Ubuntu, Cantarell, Open Sans, Helvetica Neue; font-size: 10px; position: absolute; bottom: 6%; left: 50%; transform: translate(-50%, 0); } .flex-grid-item .level { font-size: 20px; } .flex-grid-item:not(:nth-child(4n)) { margin-right: 2%; } @media (min-width: 384px) { .flex-grid-item .level { font-size: 24px; } .flex-grid-item .rating { font-size: 14px; } } @media (min-width: 605px) { .flex-grid { padding: 0 3rem; } .flex-grid-item .level { font-size: 36px; } .flex-grid-item .rating { font-size: 18px; } } @media (min-width: 780px) { .flex-grid-item { width: 10.75%; } .flex-grid-item:not(:nth-child(8n)) { margin-right: 2%; } .flex-grid-item .level { font-size: 22px; } .flex-grid-item .rating { font-size: 12px; } } .flex-grid-item:before { content: ""; float: left; padding-top: 100%; } .container-game { min-height: 100%; /* width: 100%; */ position: relative; margin: 0 auto; cursor: default; } .container, .layer { /* Default size */ width: 305px; height: 305px; } .info-panel, .container { margin: 0 auto; } .info-panel { width: 305px; margin-top: 10px; position: relative; } .info-panel h2 { margin: 0; padding: 0; } .container { position: relative; padding: 0; background-color: rgba(255, 255, 255, 0.22); margin-top: 10px; /* backdrop-filter: saturate(140%); */ } .layer { position: fixed; } .layer-active { z-index: 100; } .layer>svg { position: absolute; } svg.control:hover { cursor: pointer; } .foot { z-index: 1000; stroke: #fff; stroke-opacity: 0; } /* Janky on certain devices/browsers */ #pivotor, .foot { will-change: transform, filter; } #pivotor { transition: opacity .20s linear; } #pivotor.hide-guide { opacity: 0; } .screen-win, .screen-level-select { will-change: filter, opacity; } .screen-level-select p { padding: 0 44px; font-weight: 500; } .screen-level-select p:last-of-type { margin-bottom: 1.3rem; } .full-screen { min-height: 100%; width: 100%; position: absolute; z-index: 3000; background-color: #ffd1e0; background-image: linear-gradient(to top, #a8edea 10%, #ffd1e0 100%); color: rgba(34, 34, 34, 0.75); text-align: center; } .full-screen.screen-landscape { background: #ffd1e0; } .screen-privacy-policy { text-align: left; padding: 1.5rem; width: auto; background: none; height: auto; min-height: auto; margin: 0 auto; max-width: 570px; position: relative; } .screen-privacy-policy h1, .screen-privacy-policy h2, .screen-privacy-policy p { -webkit-user-select: text; user-select: text; } .screen-privacy-policy h1, .screen-privacy-policy h2 { padding: 0; } .screen-privacy-policy h1 { margin-bottom: 16px; } .screen-privacy-policy h2 { margin-bottom: 8px; } .screen-privacy-policy p { margin-top: 0; text-wrap: stable; hyphens: auto; } @media (min-width: 834px) { .screen-privacy-policy { margin-top: 4rem; } } .screen-landscape { z-index: 10000; } .screen-landscape h2 { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); min-width: 70%; } .hide { display: none; } .landscape-hidden { display: none; } .opacity-0 { opacity: 0; } .pulse { animation-name: pulse-color; animation-duration: 1.2s; animation-timing-function: linear; animation-iteration-count: infinite; } .log { font-size: 10px; color: #ccc; } #tap { z-index: 5000; font-family: inherit; } #confetti-canvas { position: absolute; bottom: 0; height: 1px; } footer { width: 100%; position: absolute; bottom: 0; padding: .6rem 0 1.4rem 0; line-height: 1.5; font-size: 11px; color: rgba(0, 0, 0, 0.63); } @media ((max-width: 779px) and (max-aspect-ratio: 11/10)) { /* This media query is just approximate */ footer:not(.relative) { background-color: rgba(168, 237, 234, 0.62); -webkit-backdrop-filter: saturate(130%) blur(5px); backdrop-filter: saturate(130%) blur(5px); } footer.relative { position: relative; } } @media ((max-width: 779px) and (max-aspect-ratio: 11/10) and (prefers-color-scheme: dark)) { footer:not(.relative) { background-color: rgba(17, 88, 85, 0.69); } } @media (min-width: 834px) { footer { font-size: 13px; bottom: 10px; } } .mt-2 { margin-top: 2rem; } .d-block { display: block; } .center { margin-left: auto; margin-right: auto; text-align: center; } @keyframes pulse-color { 10% { fill: rgba(34, 34, 34, 0.75); } 60% { fill: #fff; } } .rainbow { animation-name: cycle-colors; animation-duration: 1.85s; animation-timing-function: linear; animation-iteration-count: infinite; transition: color .075s linear; } @keyframes cycle-colors { 15% { stroke: #ff331c; } 30% { stroke: #fffc36; } 45% { stroke: #00f92f; } 60% { stroke: #002bfb; } 75% { stroke: #ff40fc; } 90% { stroke: #00fbfe; } } /* https://css-tricks.com/snippets/css/shake-css-keyframe-animation/ */ .shoogle { animation: shoogle 0.82s cubic-bezier(.36, .07, .19, .97) both; transform: translate3d(0, 0, 0); backface-visibility: hidden; perspective: 1000px; } @keyframes shoogle { 10%, 90% { transform: translate3d(-1px, 0, 0); } 20%, 80% { transform: translate3d(2px, 0, 0); } 30%, 50%, 70% { transform: translate3d(-4px, 0, 0); } 40%, 60% { transform: translate3d(4px, 0, 0); } } .flash { animation-name: flash; animation-duration: .75s; animation-timing-function: ease-in-out; } @keyframes flash { 50% { transform: scale(1.4); } 100% { transform: scale(1); } } .swirl { animation: swirl 0.45s infinite linear; } @keyframes swirl { 0% { transform: rotate(0); } 100% { transform: rotate(360deg); } } @media (prefers-color-scheme: dark) { body, .full-screen:not(.screen-privacy-policy) { background-image: linear-gradient(to top, #115855 10%, #450017 100%); background-color: #450017; } .full-screen.screen-landscape { background: #450017; } footer { color: rgba(172, 172, 172, 0.76); } body, h1, h2, .full-screen, footer, button.subtle { color: rgba(233, 233, 233, 0.76); } button.subtle { background-color: rgba(0, 0, 0, 0.31); } button.subtle:hover, button.subtle:active, button.subtle:focus-visible { background-color: rgba(0, 0, 0, 0.5); } button.subtle.highlight { border-color: rgba(172, 172, 172, 0.76); } button.sound-on { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill='%23e9e9e9c2' viewBox='0 0 24 24'%3E%3Cpath d='M5 17h-5v-10h5v10zm2-10v10l9 5v-20l-9 5zm17 4h-5v2h5v-2zm-1.584-6.232l-4.332 2.5 1 1.732 4.332-2.5-1-1.732zm1 12.732l-4.332-2.5-1 1.732 4.332 2.5 1-1.732z'/%3E%3C/svg%3E"); } button.sound-off { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill='%23e9e9e9c2' viewBox='0 0 24 24'%3E%3Cpath d='M5 17h-5v-10h5v10zm2-10v10l9 5v-20l-9 5zm15.324 4.993l1.646-1.659-1.324-1.324-1.651 1.67-1.665-1.648-1.316 1.318 1.67 1.657-1.65 1.669 1.318 1.317 1.658-1.672 1.666 1.653 1.324-1.325-1.676-1.656z'/%3E%3C/svg%3E"); } button.guides-on { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill='%23e9e9e9c2' viewBox='0 0 24 24'%3E%3Cpath d='M19 6.734c0 4.164-3.75 6.98-3.75 10.266h-1.992c.001-2.079.997-3.826 1.968-5.513.912-1.585 1.774-3.083 1.774-4.753 0-3.108-2.517-4.734-5.004-4.734-2.483 0-4.996 1.626-4.996 4.734 0 1.67.862 3.168 1.774 4.753.971 1.687 1.966 3.434 1.967 5.513h-1.991c0-3.286-3.75-6.103-3.75-10.266 0-4.343 3.498-6.734 6.996-6.734 3.502 0 7.004 2.394 7.004 6.734zm-4 11.766c0 .276-.224.5-.5.5h-5c-.276 0-.5-.224-.5-.5s.224-.5.5-.5h5c.276 0 .5.224.5.5zm0 2c0 .276-.224.5-.5.5h-5c-.276 0-.5-.224-.5-.5s.224-.5.5-.5h5c.276 0 .5.224.5.5zm-1.701 3.159c-.19.216-.465.341-.753.341h-1.093c-.288 0-.562-.125-.752-.341l-1.451-1.659h5.5l-1.451 1.659z'/%3E%3C/svg%3E"); } button.guides-off { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill='%23e9e9e9c2' viewBox='0 0 24 24'%3E%3Cpath d='M10.741 17h-1.991c0-.17-.016-.338-.035-.506l1.703-1.548c.197.653.323 1.332.323 2.054zm-.04 6.659c.19.216.465.341.753.341h1.093c.288 0 .562-.125.752-.341l1.451-1.659h-5.5l1.451 1.659zm3.799-3.659h-5c-.276 0-.5.224-.5.5s.224.5.5.5h5c.276 0 .5-.224.5-.5s-.224-.5-.5-.5zm0-2h-5c-.276 0-.5.224-.5.5s.224.5.5.5h5c.276 0 .5-.224.5-.5s-.224-.5-.5-.5zm1.707-8.315c-1.104 2.28-2.948 4.483-2.949 7.315h1.992c0-3.169 3.479-5.906 3.726-9.832l-2.769 2.517zm6.793-8.201l-20.654 18.75-1.346-1.5 6.333-5.728c-1.062-1.873-2.333-3.843-2.333-6.272 0-4.343 3.498-6.734 6.996-6.734 2.408 0 4.798 1.146 6.064 3.267l3.598-3.267 1.342 1.484zm-14.147 10.142l7.676-6.969c-.833-1.742-2.682-2.657-4.533-2.657-2.483 0-4.996 1.626-4.996 4.734 0 1.713.907 3.246 1.853 4.892z'/%3E%3C/svg%3E"); } .container { background-color: rgba(0, 0, 0, 0.14); } #grid { opacity: 0.12; } .block { filter: brightness(0.9); } .screen-win .rating { filter: brightness(0.8); } button:not(.subtle) { background-blend-mode: multiply; } .vortex { filter: brightness(0.8); } .pivotor { opacity: .5; } .landing { filter: invert(1) brightness(1.2); } #tap path:first-of-type { fill: #8eb100; } @keyframes cycle-colors { 15% { stroke: #861b0f; } 30% { stroke: #a6a423; } 45% { stroke: #00891a; } 60% { stroke: #001ca4; } 75% { stroke: #822181; } 90% { stroke: #029799; } } }