Up-in-the-Air – commitdiff

You can use Git to clone the repository via the web URL. Download snapshot (zip)
Restrict almost all CSS rules to the game container
authorJulian Fietkau <git@fietkau.software>
Mon, 30 Sep 2024 16:28:17 +0000 (18:28 +0200)
committerJulian Fietkau <git@fietkau.software>
Mon, 30 Sep 2024 16:28:17 +0000 (18:28 +0200)
index.html

index 5ea97690103e340f21932caa88d6a21dbf0e1017..4076ca13883759bf63b2a2d9d794f1216f115887 100644 (file)
     box-shadow: 1px 1px 3px #000a;
     overflow: hidden;
   }
-  .virtual-input-widget {
+  .upInTheAirGame .virtual-input-widget {
     box-sizing: border-box;
     display: none;
     width: min(4cm, 100cqw, calc(100cqh - 2 * var(--game-margin)));
     right: var(--game-margin);
     z-index: 25;
   }
-  .virtual-input-left .virtual-input-widget {
+  .upInTheAirGame .virtual-input-left .virtual-input-widget {
     left: var(--game-margin);
     right: unset;
   }
     .upInTheAirGame {
       --game-margin: 0px;
     }
-    .virtual-input-widget {
+    .upInTheAirGame .virtual-input-widget {
       bottom: 1rem;
       right: 1rem;
     }
-    .virtual-input-left .virtual-input-widget {
+    .upInTheAirGame .virtual-input-left .virtual-input-widget {
       left: 1rem;
       right: unset;
     }
   .upInTheAirGame .ui-container.font-opendyslexic > .ui-page {
     font-size: .8em;
   }
-  .virtual-input-widget.touchpad {
+  .upInTheAirGame .virtual-input-widget.touchpad {
     display: block;
     background-color: #585858;
     background-image: url('data:image/svg+xml,%3Csvg viewBox="0 0 256 256" xmlns="http://www.w3.org/2000/svg"%3E%3Cpath d="m33.5 224a1.5 1.5 0 0 1-1.5 1.5 1.5 1.5 0 0 1-1.5-1.5 1.5 1.5 0 0 1 1.5-1.5 1.5 1.5 0 0 1 1.5 1.5zm160 0a1.5 1.5 0 0 1-1.5 1.5 1.5 1.5 0 0 1-1.5-1.5 1.5 1.5 0 0 1 1.5-1.5 1.5 1.5 0 0 1 1.5 1.5zm-32 0a1.5 1.5 0 0 1-1.5 1.5 1.5 1.5 0 0 1-1.5-1.5 1.5 1.5 0 0 1 1.5-1.5 1.5 1.5 0 0 1 1.5 1.5zm64 0a1.5 1.5 0 0 1-1.5 1.5 1.5 1.5 0 0 1-1.5-1.5 1.5 1.5 0 0 1 1.5-1.5 1.5 1.5 0 0 1 1.5 1.5zm-128 0a1.5 1.5 0 0 1-1.5 1.5 1.5 1.5 0 0 1-1.5-1.5 1.5 1.5 0 0 1 1.5-1.5 1.5 1.5 0 0 1 1.5 1.5zm-32 0a1.5 1.5 0 0 1-1.5 1.5 1.5 1.5 0 0 1-1.5-1.5 1.5 1.5 0 0 1 1.5-1.5 1.5 1.5 0 0 1 1.5 1.5zm64 0a1.5 1.5 0 0 1-1.5 1.5 1.5 1.5 0 0 1-1.5-1.5 1.5 1.5 0 0 1 1.5-1.5 1.5 1.5 0 0 1 1.5 1.5zm-96-32a1.5 1.5 0 0 1-1.5 1.5 1.5 1.5 0 0 1-1.5-1.5 1.5 1.5 0 0 1 1.5-1.5 1.5 1.5 0 0 1 1.5 1.5zm160 0a1.5 1.5 0 0 1-1.5 1.5 1.5 1.5 0 0 1-1.5-1.5 1.5 1.5 0 0 1 1.5-1.5 1.5 1.5 0 0 1 1.5 1.5zm-32 0a1.5 1.5 0 0 1-1.5 1.5 1.5 1.5 0 0 1-1.5-1.5 1.5 1.5 0 0 1 1.5-1.5 1.5 1.5 0 0 1 1.5 1.5zm64 0a1.5 1.5 0 0 1-1.5 1.5 1.5 1.5 0 0 1-1.5-1.5 1.5 1.5 0 0 1 1.5-1.5 1.5 1.5 0 0 1 1.5 1.5zm-128 0a1.5 1.5 0 0 1-1.5 1.5 1.5 1.5 0 0 1-1.5-1.5 1.5 1.5 0 0 1 1.5-1.5 1.5 1.5 0 0 1 1.5 1.5zm-32 0a1.5 1.5 0 0 1-1.5 1.5 1.5 1.5 0 0 1-1.5-1.5 1.5 1.5 0 0 1 1.5-1.5 1.5 1.5 0 0 1 1.5 1.5zm64 0a1.5 1.5 0 0 1-1.5 1.5 1.5 1.5 0 0 1-1.5-1.5 1.5 1.5 0 0 1 1.5-1.5 1.5 1.5 0 0 1 1.5 1.5zm-96-32a1.5 1.5 0 0 1-1.5 1.5 1.5 1.5 0 0 1-1.5-1.5 1.5 1.5 0 0 1 1.5-1.5 1.5 1.5 0 0 1 1.5 1.5zm160 0a1.5 1.5 0 0 1-1.5 1.5 1.5 1.5 0 0 1-1.5-1.5 1.5 1.5 0 0 1 1.5-1.5 1.5 1.5 0 0 1 1.5 1.5zm-32 0a1.5 1.5 0 0 1-1.5 1.5 1.5 1.5 0 0 1-1.5-1.5 1.5 1.5 0 0 1 1.5-1.5 1.5 1.5 0 0 1 1.5 1.5zm64 0a1.5 1.5 0 0 1-1.5 1.5 1.5 1.5 0 0 1-1.5-1.5 1.5 1.5 0 0 1 1.5-1.5 1.5 1.5 0 0 1 1.5 1.5zm-128 0a1.5 1.5 0 0 1-1.5 1.5 1.5 1.5 0 0 1-1.5-1.5 1.5 1.5 0 0 1 1.5-1.5 1.5 1.5 0 0 1 1.5 1.5zm-32 0a1.5 1.5 0 0 1-1.5 1.5 1.5 1.5 0 0 1-1.5-1.5 1.5 1.5 0 0 1 1.5-1.5 1.5 1.5 0 0 1 1.5 1.5zm64 0a1.5 1.5 0 0 1-1.5 1.5 1.5 1.5 0 0 1-1.5-1.5 1.5 1.5 0 0 1 1.5-1.5 1.5 1.5 0 0 1 1.5 1.5zm-96-32a1.5 1.5 0 0 1-1.5 1.5 1.5 1.5 0 0 1-1.5-1.5 1.5 1.5 0 0 1 1.5-1.5 1.5 1.5 0 0 1 1.5 1.5zm160 0a1.5 1.5 0 0 1-1.5 1.5 1.5 1.5 0 0 1-1.5-1.5 1.5 1.5 0 0 1 1.5-1.5 1.5 1.5 0 0 1 1.5 1.5zm-32 0a1.5 1.5 0 0 1-1.5 1.5 1.5 1.5 0 0 1-1.5-1.5 1.5 1.5 0 0 1 1.5-1.5 1.5 1.5 0 0 1 1.5 1.5zm64 0a1.5 1.5 0 0 1-1.5 1.5 1.5 1.5 0 0 1-1.5-1.5 1.5 1.5 0 0 1 1.5-1.5 1.5 1.5 0 0 1 1.5 1.5zm-128 0a1.5 1.5 0 0 1-1.5 1.5 1.5 1.5 0 0 1-1.5-1.5 1.5 1.5 0 0 1 1.5-1.5 1.5 1.5 0 0 1 1.5 1.5zm-32 0a1.5 1.5 0 0 1-1.5 1.5 1.5 1.5 0 0 1-1.5-1.5 1.5 1.5 0 0 1 1.5-1.5 1.5 1.5 0 0 1 1.5 1.5zm64 0a1.5 1.5 0 0 1-1.5 1.5 1.5 1.5 0 0 1-1.5-1.5 1.5 1.5 0 0 1 1.5-1.5 1.5 1.5 0 0 1 1.5 1.5zm-96-32a1.5 1.5 0 0 1-1.5 1.5 1.5 1.5 0 0 1-1.5-1.5 1.5 1.5 0 0 1 1.5-1.5 1.5 1.5 0 0 1 1.5 1.5zm160 0a1.5 1.5 0 0 1-1.5 1.5 1.5 1.5 0 0 1-1.5-1.5 1.5 1.5 0 0 1 1.5-1.5 1.5 1.5 0 0 1 1.5 1.5zm-32 0a1.5 1.5 0 0 1-1.5 1.5 1.5 1.5 0 0 1-1.5-1.5 1.5 1.5 0 0 1 1.5-1.5 1.5 1.5 0 0 1 1.5 1.5zm64 0a1.5 1.5 0 0 1-1.5 1.5 1.5 1.5 0 0 1-1.5-1.5 1.5 1.5 0 0 1 1.5-1.5 1.5 1.5 0 0 1 1.5 1.5zm-128 0a1.5 1.5 0 0 1-1.5 1.5 1.5 1.5 0 0 1-1.5-1.5 1.5 1.5 0 0 1 1.5-1.5 1.5 1.5 0 0 1 1.5 1.5zm-32 0a1.5 1.5 0 0 1-1.5 1.5 1.5 1.5 0 0 1-1.5-1.5 1.5 1.5 0 0 1 1.5-1.5 1.5 1.5 0 0 1 1.5 1.5zm64 0a1.5 1.5 0 0 1-1.5 1.5 1.5 1.5 0 0 1-1.5-1.5 1.5 1.5 0 0 1 1.5-1.5 1.5 1.5 0 0 1 1.5 1.5zm-96-32a1.5 1.5 0 0 1-1.5 1.5 1.5 1.5 0 0 1-1.5-1.5 1.5 1.5 0 0 1 1.5-1.5 1.5 1.5 0 0 1 1.5 1.5zm160 0a1.5 1.5 0 0 1-1.5 1.5 1.5 1.5 0 0 1-1.5-1.5 1.5 1.5 0 0 1 1.5-1.5 1.5 1.5 0 0 1 1.5 1.5zm-32 0a1.5 1.5 0 0 1-1.5 1.5 1.5 1.5 0 0 1-1.5-1.5 1.5 1.5 0 0 1 1.5-1.5 1.5 1.5 0 0 1 1.5 1.5zm64 0a1.5 1.5 0 0 1-1.5 1.5 1.5 1.5 0 0 1-1.5-1.5 1.5 1.5 0 0 1 1.5-1.5 1.5 1.5 0 0 1 1.5 1.5zm-128 0a1.5 1.5 0 0 1-1.5 1.5 1.5 1.5 0 0 1-1.5-1.5 1.5 1.5 0 0 1 1.5-1.5 1.5 1.5 0 0 1 1.5 1.5zm-32 0a1.5 1.5 0 0 1-1.5 1.5 1.5 1.5 0 0 1-1.5-1.5 1.5 1.5 0 0 1 1.5-1.5 1.5 1.5 0 0 1 1.5 1.5zm64 0a1.5 1.5 0 0 1-1.5 1.5 1.5 1.5 0 0 1-1.5-1.5 1.5 1.5 0 0 1 1.5-1.5 1.5 1.5 0 0 1 1.5 1.5zm-96-32a1.5 1.5 0 0 1-1.5 1.5 1.5 1.5 0 0 1-1.5-1.5 1.5 1.5 0 0 1 1.5-1.5 1.5 1.5 0 0 1 1.5 1.5zm160 0a1.5 1.5 0 0 1-1.5 1.5 1.5 1.5 0 0 1-1.5-1.5 1.5 1.5 0 0 1 1.5-1.5 1.5 1.5 0 0 1 1.5 1.5zm-32 0a1.5 1.5 0 0 1-1.5 1.5 1.5 1.5 0 0 1-1.5-1.5 1.5 1.5 0 0 1 1.5-1.5 1.5 1.5 0 0 1 1.5 1.5zm64 0a1.5 1.5 0 0 1-1.5 1.5 1.5 1.5 0 0 1-1.5-1.5 1.5 1.5 0 0 1 1.5-1.5 1.5 1.5 0 0 1 1.5 1.5zm-128 0a1.5 1.5 0 0 1-1.5 1.5 1.5 1.5 0 0 1-1.5-1.5 1.5 1.5 0 0 1 1.5-1.5 1.5 1.5 0 0 1 1.5 1.5zm-32 0a1.5 1.5 0 0 1-1.5 1.5 1.5 1.5 0 0 1-1.5-1.5 1.5 1.5 0 0 1 1.5-1.5 1.5 1.5 0 0 1 1.5 1.5zm64 0a1.5 1.5 0 0 1-1.5 1.5 1.5 1.5 0 0 1-1.5-1.5 1.5 1.5 0 0 1 1.5-1.5 1.5 1.5 0 0 1 1.5 1.5z" fill="none" stroke="%23aaa" opacity=".25"/%3E%3C/svg%3E'), radial-gradient(circle at 25% 25%, #686868, #484848);
     border: 2px inset #808080;
     overflow: hidden;
   }
-  .virtual-input-widget .circle {
+  .upInTheAirGame .virtual-input-widget .circle {
     position: relative;
     left: 50%;
     top: 50%;
     transition-property: left, top;
     transition-duration: 0ms;
   }
-  .virtual-input-widget.touchpad .circle {
+  .upInTheAirGame .virtual-input-widget.touchpad .circle {
     width: 5%;
     background-color: #fff;
     opacity: 0.4;
   }
-  .virtual-input-widget.thumbstick {
+  .upInTheAirGame .virtual-input-widget.thumbstick {
     display: block;
     background-color: #585858;
     background-image: radial-gradient(circle, #808080, #484848);
     border-radius: 50%;
     border: 2px inset #808080;
   }
-  .virtual-input-widget.thumbstick .circle {
+  .upInTheAirGame .virtual-input-widget.thumbstick .circle {
     width: 50%;
     background-color: #ccc;
     background-image: radial-gradient(#ccc 0%, #ccc 20%, #999 25%, #ccc 30%, #ccc 40%, #999 45%, #ccc 50%, #444 100%);
     box-shadow: 0 0 .3cm #000;
   }
-  .ui-page {
+  .upInTheAirGame .ui-page {
     position: absolute;
     left: 0;
     top: 0;
     display: none;
     transition: opacity 250ms;
   }
-  .ui-page:not(.gameplay) {
+  .upInTheAirGame .ui-page:not(.gameplay) {
     z-index: 10;
   }
-  .ui-page a {
+  .upInTheAirGame .ui-page a {
     color: #c50031;
     text-decoration: none;
   }
-  .ui-page a:hover {
+  .upInTheAirGame .ui-page a:hover {
     text-decoration: underline;
   }
-  .ui-page h2 {
+  .upInTheAirGame .ui-page h2 {
     margin: 0;
     padding: 0;
     font-family: Cookie;
     font-size: 3em;
     text-shadow: -.05em -.05em 0 #fff, .05em -.05em 0 #fff, .05em .05em 0 #fff, -.05em .05em 0 #fff, 0 -.07em 0 #fff, .07em 0 0 #fff, 0 .07em 0 #fff, -.07em 0 0 #fff;
   }
-  .ui-page .area {
+  .upInTheAirGame .ui-page .area {
     overflow-y: auto;
     background: #000d;
     border-radius: 1em;
     font-family: 'Nihonium113';
     font-size: 1.2em;
   }
-  .ui-page .area h3 {
+  .upInTheAirGame .ui-page .area h3 {
     margin: 1ex 0 .4ex 0;
     padding: 0;
     font-size: 1.4em;
     font-weight: bold;
   }
-  .ui-page .area h3:first-child {
+  .upInTheAirGame .ui-page .area h3:first-child {
     margin-top: 0;
   }
-  .ui-page .area h3.bigskip {
+  .upInTheAirGame .ui-page .area h3.bigskip {
     margin-top: 1.5em;
   }
-  .ui-page .area h4 {
+  .upInTheAirGame .ui-page .area h4 {
     margin: 1ex 0 .4ex 0;
     padding: 0;
     font-size: 1.2em;
     font-weight: bold;
   }
-  .ui-page .area a {
+  .upInTheAirGame .ui-page .area a {
     color: #d53c59;
   }
-  .ui-page .area p {
+  .upInTheAirGame .ui-page .area p {
     margin: 0;
     padding: 0;
   }
-  .ui-page .area p.seealso {
+  .upInTheAirGame .ui-page .area p.seealso {
     margin-top: 1em;
     text-align: center;
   }
-  .ui-page .area.twocol {
+  .upInTheAirGame .ui-page .area.twocol {
     flex-grow: 1;
     display: flex;
     flex-direction: row;
     gap: 2em;
   }
-  .ui-page .area.twocol .column {
+  .upInTheAirGame .ui-page .area.twocol .column {
     display: flex;
     flex-direction: column;
     flex-grow: 1;
     gap: .1em;
     overflow-y: scroll;
   }
-  .ui-page .area.twocol .column:last-child {
+  .upInTheAirGame .ui-page .area.twocol .column:last-child {
     width: 40%;
     flex-grow: 0;
     flex-shrink: 0;
   }
-  .ui-page.controls {
+  .upInTheAirGame .ui-page.controls {
     background-color: #fff;
     color: #444;
     padding: 1em;
     font-size: 1.5em;
     text-align: center;
   }
-  .ui-page.controls p {
+  .upInTheAirGame .ui-page.controls p {
     margin: .15em auto;
     max-width: 23em;
     font-size: .8em;
     line-height: 1.2;
   }
-  .ui-page.controls p:last-child {
+  .upInTheAirGame .ui-page.controls p:last-child {
     font-size: .85;
   }
-  .ui-page.controls svg {
+  .upInTheAirGame .ui-page.controls svg {
     margin: 1em;
     max-height: 8em;
   }
-  .ui-page.controls svg path {
+  .upInTheAirGame .ui-page.controls svg path {
     fill: currentColor;
   }
-  .ui-page.controls button {
+  .upInTheAirGame .ui-page.controls button {
     margin: 1em;
     border: 1px solid #444;
     box-shadow: 0 2px #444;
     font-family: unset;
     font-size: 1em;
   }
-  .ui-page.controls button:hover {
+  .upInTheAirGame .ui-page.controls button:hover {
     background: #eee;
     border: 1px solid #444;
   }
-  .ui-page.controls button:active {
+  .upInTheAirGame .ui-page.controls button:active {
     background: #ddd;
     border: 1px solid #444;
   }
-  .ui-page.options .feather {
+  .upInTheAirGame .ui-page.options .feather {
     flex-grow: 1;
     display: flex;
     flex-direction: column;
     justify-content: space-evenly;
     align-items: center;
   }
-  .ui-page.options .feather input, .ui-page.title .system-buttons input {
+  .upInTheAirGame .ui-page.options .feather input,
+  .upInTheAirGame .ui-page.title .system-buttons input {
     position: absolute;
     left: -99999px;
     width: 1px;
     height: 1px;
     opacity: 0;
   }
-  .ui-page.options .feather img {
+  .upInTheAirGame .ui-page.options .feather img {
     width: 6em;
     margin: -2em 0;
     transition: 150ms transform;
     transform: scaleY(-1) translateX(-1em);
   }
-  .ui-page.options .feather input:checked + img {
+  .upInTheAirGame .ui-page.options .feather input:checked + img {
     transform: scaleY(-1) translateX(1em);
   }
-  .ui-page.options .feather label:hover img, .ui-page.options .feather label:focus-within img {
+  .upInTheAirGame .ui-page.options .feather label:hover img,
+  .upInTheAirGame .ui-page.options .feather label:focus-within img {
     filter: 
         drop-shadow(-.1em -.1em 0 #fff) 
         drop-shadow(.1em -.1em 0 #fff)
         drop-shadow(.1em .1em 0 #fff) 
         drop-shadow(-.1em .1em 0 #fff);
   }
-  .ui-page.options .feather label:nth-child(1) { z-index: 50; }
-  .ui-page.options .feather label:nth-child(2) { z-index: 49; }
-  .ui-page.options .feather label:nth-child(3) { z-index: 48; }
-  .ui-page.options .feather label:nth-child(4) { z-index: 47; }
-  .ui-page.options .feather label:nth-child(5) { z-index: 46; }
-  .ui-page.options .feather label:nth-child(6) { z-index: 45; }
-  .ui-page.options .feather label:nth-child(7) { z-index: 44; }
-  .ui-page.options .feather label:nth-child(8) { z-index: 43; }
-  .ui-page.options .feather label:nth-child(9) { z-index: 42; }
-  .ui-page.options .feather label:nth-child(10) { z-index: 41; }
-  .ui-page.options .feather label:nth-child(11) { z-index: 40; }
-  .ui-page.options .feather label:nth-child(12) { z-index: 39; }
-  .ui-page.options .feather label:nth-child(13) { z-index: 38; }
-  .ui-page.options .feather label:nth-child(14) { z-index: 37; }
-  .ui-page.options .feather label:nth-child(15) { z-index: 36; }
-  .ui-page.loading {
+  .upInTheAirGame .ui-page.options .feather label:nth-child(1) { z-index: 50; }
+  .upInTheAirGame .ui-page.options .feather label:nth-child(2) { z-index: 49; }
+  .upInTheAirGame .ui-page.options .feather label:nth-child(3) { z-index: 48; }
+  .upInTheAirGame .ui-page.options .feather label:nth-child(4) { z-index: 47; }
+  .upInTheAirGame .ui-page.options .feather label:nth-child(5) { z-index: 46; }
+  .upInTheAirGame .ui-page.options .feather label:nth-child(6) { z-index: 45; }
+  .upInTheAirGame .ui-page.options .feather label:nth-child(7) { z-index: 44; }
+  .upInTheAirGame .ui-page.options .feather label:nth-child(8) { z-index: 43; }
+  .upInTheAirGame .ui-page.options .feather label:nth-child(9) { z-index: 42; }
+  .upInTheAirGame .ui-page.options .feather label:nth-child(10) { z-index: 41; }
+  .upInTheAirGame .ui-page.options .feather label:nth-child(11) { z-index: 40; }
+  .upInTheAirGame .ui-page.options .feather label:nth-child(12) { z-index: 39; }
+  .upInTheAirGame .ui-page.options .feather label:nth-child(13) { z-index: 38; }
+  .upInTheAirGame .ui-page.options .feather label:nth-child(14) { z-index: 37; }
+  .upInTheAirGame .ui-page.options .feather label:nth-child(15) { z-index: 36; }
+  .upInTheAirGame .ui-page.loading {
     background-color: #fff;
     display: flex;
     flex-direction: column;
     opacity: 1;
     font-size: 1.3rem;
   }
-  .ui-page.loading img {
+  .upInTheAirGame .ui-page.loading img {
     display: block;
     margin-bottom: 1rem;
-    animation: loading-pinwheel-spin 2s linear infinite;
+    animation: upInTheAirGame-loading-pinwheel-spin 2s linear infinite;
   }
-  @keyframes loading-pinwheel-spin {
+  @keyframes upInTheAirGame-loading-pinwheel-spin {
     100% {
       transform:rotate(360deg);
     }
   }
-  .ui-page.loading progress {
+  .upInTheAirGame .ui-page.loading progress {
     box-sizing: border-box;
     height: 10px;
     border-radius: 5px;
     background: #80808030;
     appearance: none;
   }
-  .ui-page.loading progress::-webkit-progress-value, .ui-page.loading progress::-moz-progress-bar {
+  .upInTheAirGame .ui-page.loading progress::-webkit-progress-value,
+  .upInTheAirGame .ui-page.loading progress::-moz-progress-bar {
     background: #f998a6;
   }
-  .ui-page.title {
+  .upInTheAirGame .ui-page.title {
     padding: 3em;
     display: flex;
     flex-direction: column;
     align-items: end;
     gap: 2em;
   }
-  .ui-page.title.end {
+  .upInTheAirGame .ui-page.title.end {
     align-items: start;
   }
-  .ui-page.title h1 {
+  .upInTheAirGame .ui-page.title h1 {
     font-size: 1em;
     width: 24em;
     aspect-ratio: 174 / 96;
     padding: 0;
     color: #fff0;
   }
-  .ui-page.title::before {
+  .upInTheAirGame .ui-page.title::before {
     /* image preloading hack */
     content: url('textures/button-hover.png') url('textures/button-pressed.png');
     position: absolute;
     top: -99999px;
     opacity: 0;
   }
-  .ui-page > button, .ui-page.outro .area button {
+  .upInTheAirGame .ui-page > button,
+  .upInTheAirGame .ui-page.outro .area button {
     padding: 0;
     min-width: 8em;
     color: #000;
     border-image: url('textures/button-standard.png') 20 / .75em round;
     border-image-outset: .2em;
   }
-  .font-opendyslexic .ui-page > button, .font-opendyslexic .ui-page.outro .area button {
+  .upInTheAirGame .font-opendyslexic .ui-page > button,
+  .upInTheAirGame .font-opendyslexic .ui-page.outro .area button {
     min-width: 10em;
   }
-  .ui-page > button:hover, .ui-page.outro .area button:hover {
+  .upInTheAirGame .ui-page > button:hover,
+  .upInTheAirGame .ui-page.outro .area button:hover {
     background: #e9ce8a;
     border-image-source: url('textures/button-hover.png');
   }
-  .ui-page > button:active, .ui-page.outro .area button:active {
+  .upInTheAirGame .ui-page > button:active,
+  .upInTheAirGame .ui-page.outro .area button:active {
     background: #f9c8d5;
     border-image-source: url('textures/button-pressed.png');
   }
-  .ui-page.title .system-buttons {
+  .upInTheAirGame .ui-page.title .system-buttons {
     position: absolute;
     left: 0;
     bottom: 0;
     align-items: start;
     gap: 1ex;
   }
-  .ui-page.title.end .system-buttons {
+  .upInTheAirGame .ui-page.title.end .system-buttons {
     left: unset;
     right: 0;
     align-items: end;
   }
   @media not (hover: hover) {
-    .ui-page.title .system-buttons {
+    .upInTheAirGame .ui-page.title .system-buttons {
       font-size: 2em;
     }
   }
-  .ui-page.title .system-buttons svg {
+  .upInTheAirGame .ui-page.title .system-buttons svg {
     width: 2em;
     height: 2em;
   }
-  .ui-page.title .system-buttons svg:hover {
+  .upInTheAirGame .ui-page.title .system-buttons svg:hover {
     filter: drop-shadow(0 0 1px #000);
   }
-  .ui-page.title .system-buttons label input:not(:checked) + svg g {
+  .upInTheAirGame .ui-page.title .system-buttons label input:not(:checked) + svg g {
     display: none;
   }
-  .ui-page.title .system-buttons button {
+  .upInTheAirGame .ui-page.title .system-buttons button {
     appearance: none;
     display: block;
     margin: 0;
     background: none;
     font-size: 1em;
   }
-  .ui-page.title .footer {
+  .upInTheAirGame .ui-page.title .footer {
     position: absolute;
     right: 0;
     bottom: 0;
     font-size: 1.4em;
     text-shadow: -.07em -.07em 0 #fff, .07em -.07em 0 #fff, .07em .07em 0 #fff, -.07em .07em 0 #fff, 0 -.1em 0 #fff, .1em 0 0 #fff, 0 .1em 0 #fff, -.1em 0 0 #fff;
   }
-  .ui-container:not(.font-atkinson):not(.font-opendyslexic) .ui-page.title .footer {
+  .upInTheAirGame .ui-container:not(.font-atkinson):not(.font-opendyslexic) .ui-page.title .footer {
     line-height: .9em;
   }
-  .ui-page.title.end .footer {
+  .upInTheAirGame .ui-page.title.end .footer {
     right: unset;
     left: 0;
     align-items: start;
   }
-  .ui-page.title .footer a.fediverse {
+  .upInTheAirGame .ui-page.title .footer a.fediverse {
     background-image: url('textures/fediverse.svg');
     background-size: contain;
     background-repeat: no-repeat;
     background-position: left;
     padding-left: 1.2em;
   }
-  .ui-page.gameplay p {
+  .upInTheAirGame .ui-page.gameplay p {
     position: absolute;
     font-family: 'Cookie';
     font-size: 3em;
     text-shadow: -.05em -.05em 0 #fff, .05em -.05em 0 #fff, .05em .05em 0 #fff, -.05em .05em 0 #fff, 0 -.07em 0 #fff, .07em 0 0 #fff, 0 .07em 0 #fff, -.07em 0 0 #fff;
   }
-  .font-opendyslexic .ui-page.gameplay p {
+  .upInTheAirGame .font-opendyslexic .ui-page.gameplay p {
     font-size: 2.4em;
   }
-  .ui-page.credits {
+  .upInTheAirGame .ui-page.credits {
     padding: 1em;
     display: flex;
     flex-direction: column;
     align-items: center;
     gap: 1em;
   }
-  .ui-page.options {
+  .upInTheAirGame .ui-page.options {
+    position: relative;
     padding: 1em;
     display: flex;
     flex-direction: column;
     align-items: center;
     gap: 1em;
   }
-  .ui-page.options .area.accessibility {
+  .upInTheAirGame .ui-page.options .area.accessibility {
     display: none;
   }
-  .ui-page.options .areatabs {
+  .upInTheAirGame .ui-page.options .areatabs {
     margin-bottom: -1em;
     display: flex;
     align-items: center;
     gap: 1ex;
   }
-  .ui-page.options .areatabs button {
+  .upInTheAirGame .ui-page.options .areatabs button {
     appearance: none;
     width: 10em;
     padding: .5em;
     font-family: 'Nihonium113';
     font-size: 1.6em;
   }
-  .ui-page.options .areatabs button.active {
+  .upInTheAirGame .ui-page.options .areatabs button.active {
     padding-bottom: .7em;
   }
-  .ui-page input[type=range] {
+  .upInTheAirGame .ui-page input[type=range] {
     font-size: 1em;
     accent-color: #c50031;
   }
-  .ui-page input[type=radio], .ui-page input[type=checkbox] {
+  .upInTheAirGame .ui-page input[type=radio],
+  .upInTheAirGame .ui-page input[type=checkbox] {
     width: 1.3em;
     height: 1.3em;
     margin: .2em 0;
     vertical-align: sub;
     accent-color: #c50031;
   }
-  .ui-page.options .area button {
+  .upInTheAirGame .ui-page.options .area button {
     padding: .3em;
     width: max-content;
     font-size: 1em;
     font-family: 'Nihonium113';
   }
-  .ui-page.options .controls {
+  .upInTheAirGame .ui-page.options .controls {
     position: relative;
   }
-  .ui-page.options .controls p:last-child {
+  .upInTheAirGame .ui-page.options .controls p:last-child {
     margin-top: 1em;
     padding-right: 1em;
     height: 4em;
   }
-  .ui-page.options .controls p:last-child span:not(:first-child) {
+  .upInTheAirGame .ui-page.options .controls p:last-child span:not(:first-child) {
     display: none;
   }
-  .ui-page.options .controls .leftside {
+  .upInTheAirGame .ui-page.options .controls .leftside {
     position: absolute;
     left: 60%;
     top: 4em;
     max-width: 40%;
   }
-  .ui-page.options .controls .leftside label {
+  .upInTheAirGame .ui-page.options .controls .leftside label {
     display: inline;
   }
-  .ui-page.options .graphics *:not(.audio) label, .ui-page.options .audiotheme:not(.audio) label {
+  .upInTheAirGame .ui-page.options .graphics *:not(.audio) label,
+  .upInTheAirGame .ui-page.options .audiotheme:not(.audio) label {
     display: inline;
     margin-left: 1ex;
   }
-  .upInTheAirGame.font-opendyslexic .ui-page.options .graphics *:not(.audio) label,
-  .upInTheAirGame.font-opendyslexic .ui-page.options .audiotheme:not(.audio) label {
+  .upInTheAirGame .font-opendyslexic .ui-page.options .graphics *:not(.audio) label,
+  .upInTheAirGame .font-opendyslexic .ui-page.options .audiotheme:not(.audio) label {
     margin-left: 0;
   }
-  .upInTheAirGame.font-opendyslexic .ui-page.options .graphics p {
+  .upInTheAirGame .font-opendyslexic .ui-page.options .graphics p {
     display: flex;
     align-items: center;
     gap: 1ex;
   }
-  .upInTheAirGame.font-opendyslexic .ui-page.options .audiotheme:not(.audio) label {
+  .upInTheAirGame .font-opendyslexic .ui-page.options .audiotheme:not(.audio) label {
     margin-right: 1em;
   }
-  .ui-page.options p.annotation {
+  .upInTheAirGame .ui-page.options p.annotation {
     margin: 0 0 .7em 1.6em;
   }
-  .ui-page.options label.standardfont {
+  .upInTheAirGame .ui-page.options label.standardfont {
     font-family: 'Nihonium113' !important;
   }
-  .ui-page.options label.atkinson {
+  .upInTheAirGame .ui-page.options label.atkinson {
     font-family: 'Atkinson Hyperlegible' !important;
   }
-  .ui-page.options label.opendyslexic {
+  .upInTheAirGame .ui-page.options label.opendyslexic {
     font-family: OpenDyslexic !important;
   }
-  .ui-page.options div.difficulty p:nth-child(4) {
+  .upInTheAirGame .ui-page.options div.difficulty p:nth-child(4) {
     margin-top: 1ex;
   }
-  .ui-page .audio {
+  .upInTheAirGame .ui-page .audio {
     display: grid;
     gap: .5ex 1ex;
   }
-  .ui-page.options .audio {
+  .upInTheAirGame .ui-page.options .audio {
     grid-template-columns: auto auto auto;
   }
-  .ui-page.options .audio h3 {
+  .upInTheAirGame .ui-page.options .audio h3 {
     grid-column: 1 / 4;
   }
-  .ui-page.pause .audio {
+  .upInTheAirGame .ui-page.pause .audio {
     grid-template-columns: auto auto;
     color: #fff;
     font-size: 1.2em;
     font-family: 'Nihonium113';
   }
-  .ui-page .audio label, .ui-page .audio span {
+  .upInTheAirGame .ui-page .audio label,
+  .upInTheAirGame .ui-page .audio span {
     display: flex;
     align-items: center;
     justify-content: end;
     gap: 1ex;
   }
-  .ui-page.options *:not(.audio) > label {
+  .upInTheAirGame .ui-page.options *:not(.audio) > label {
     display: flex;
     align-items: center;
     justify-content: start;
     gap: 1ex;
     width: max-content;
   }
-  .ui-page.options .area.twocol .keyboard {
+  .upInTheAirGame .ui-page.options .area.twocol .keyboard {
     display: flex;
     flex-direction: column;
     justify-content: flex-start;
     gap: 1em;
   }
-  .ui-page.options .keyboard div:nth-child(2) {
+  .upInTheAirGame .ui-page.options .keyboard div:nth-child(2) {
     width: max-content;
     margin: 0 auto;
     display: flex;
     justify-content: flex-start;
     align-items: flex-end;
   }
-  .ui-page.options .keyboard label button {
+  .upInTheAirGame .ui-page.options .keyboard label button {
     box-sizing: border-box;
     margin: .7ex 0 .7ex .7ex;
     padding: 0;
     overflow: hidden;
     white-space: nowrap;
   }
-  .ui-page.options .keyboard  div > button {
+  .upInTheAirGame .ui-page.options .keyboard  div > button {
     align-self: center;
     margin-top: 1em;
   }
-  .ui-page.keyboard-modal {
+  .upInTheAirGame .ui-page.keyboard-modal {
     z-index: 20;
     opacity: 1;
     display: flex;
     font-family: 'Nihonium113';
     color: #fff;
   }
-  .ui-page .audio input[type=range] {
+  .upInTheAirGame .ui-page .audio input[type=range] {
     width: 8em;
   }
-  .ui-page .audio span {
+  .upInTheAirGame .ui-page .audio span {
     width: 1.2em;
     text-align: right;
   }
-  .ui-page.options select {
+  .upInTheAirGame .ui-page.options select {
     font-family: 'Nihonium113';
     font-size: 1em;
   }
-  .ui-page.outro {
+  .upInTheAirGame .ui-page.outro {
     padding: 1em;
     display: flex;
     flex-direction: column;
     align-items: center;
     gap: 1em;
   }
-  .ui-page.outro .area {
+  .upInTheAirGame .ui-page.outro .area {
     display: flex;
     flex-direction: column;
     justify-content: center;
     text-align: center;
     gap: 1em;
   }
-  .ui-page.outro .area div.examples {
+  .upInTheAirGame .ui-page.outro .area div.examples {
     box-sizing: border-box;
     width: 100%;
     border-radius: .4em;
     color: #000;
     font-family: Cookie;
   }
-  .font-opendyslexic .ui-page.outro .area > p {
+  .upInTheAirGame .font-opendyslexic .ui-page.outro .area > p {
     font-size: 0.9em;
   }
-  .ui-page.outro .area strong {
+  .upInTheAirGame .ui-page.outro .area strong {
     font-weight: normal;
     color: #d53c59;
   }
-  .ui-page.outro .area div.examples strong {
+  .upInTheAirGame .ui-page.outro .area div.examples strong {
     font-weight: normal;
     color: #c50031;
   }
-  .ui-page.outro .area > p:first-child {
+  .upInTheAirGame .ui-page.outro .area > p:first-child {
     display: flex;
     align-items: center;
     gap: 1ex;
   }
-  .ui-page.outro .count {
+  .upInTheAirGame .ui-page.outro .count {
     font-size: 2em;
     color: #d53c59;
   }
-  .ui-page.outro .area button {
+  .upInTheAirGame .ui-page.outro .area button {
     width: max-content;
     min-width: unset;
     margin: 0;
     border-width: .3em;
     font-size: 1em;
   }
-  .ui-page.unlock {
+  .upInTheAirGame .ui-page.unlock {
     padding: 1em;
     display: flex;
     flex-direction: column;
     align-items: center;
     gap: 1em;
   }
-  .ui-page.unlock .area {
+  .upInTheAirGame .ui-page.unlock .area {
     display: flex;
     flex-direction: column;
     justify-content: center;
     text-align: center;
     gap: 1em;
   }
-  .ui-page.unlock .area img {
+  .upInTheAirGame .ui-page.unlock .area img {
     margin-top: 1em;
     transform: scale(2, -2);
   }
-  .ui-page.pause {
+  .upInTheAirGame .ui-page.pause {
     background: #000d;
     padding: 1em;
     display: flex;
     align-items: center;
     gap: 1em;
   }
-  .ui-page.pause h2 {
+  .upInTheAirGame .ui-page.pause h2 {
     color: #fff;
     text-shadow: unset;
   }
-  .ui-page.pause button {
+  .upInTheAirGame .ui-page.pause button {
     margin: .6em;
   }
-  .ui-page.pause button.small {
+  .upInTheAirGame .ui-page.pause button.small {
     width: 5em;
     margin: 0;
     padding: 0;
     border-image-width: 1em;
     font-size: 1.6em;
   }
-  .ui-container.control-mouse .ui-page.gameplay, .ui-container.control-mouse .ui-page.openingcutscene, .ui-container.control-mouse .ui-page.endingcutscene {
+  .upInTheAirGame .ui-container.control-mouse .ui-page.gameplay,
+  .upInTheAirGame .ui-container.control-mouse .ui-page.openingcutscene,
+  .upInTheAirGame .ui-container.control-mouse .ui-page.endingcutscene {
     cursor: none;
   }
-  canvas {
+  .upInTheAirGame canvas {
     box-sizing: border-box;
     display: block;
     width: 100% !important;
     height: 100% !important;
     margin: 0 auto;
   }
-  .options {
-    position: relative;
-    padding: .3em;
-  }
 </style>
 <script type="importmap">
   {