Publish Vulpes Preview 15 sources for desktop, Android and Tundra

Share Gaia assets and adapters, keep private profiles and development documents local, and update both public READMEs.
This commit is contained in:
OverSu 2026-09-30 23:13:03 +02:00
commit b38dea0597
25901 changed files with 9982925 additions and 369 deletions

View file

@ -0,0 +1,522 @@
html, body {
padding: 0;
border: 0;
margin: 0;
height: 100%;
overflow: hidden;
color: #FFF;
font-size: 10px;
}
/**
* 1. No content inside the app
* should be user-selectable.
*/
* {
-moz-user-select: none; /* 1 */
}
a {
outline: 0 none;
text-decoration: none;
color: #FFF;
}
a:active {
color: #000;
background-color: #00ABCD;
}
.hidden-block {
visibility: hidden;
}
#container {
height: 100%;
width: 100%;
background-color: #2F3337;
}
#container > div {
position: absolute;
left: 0;
width: 100%;
}
/****** styles for frequency view *******/
#frequency-bar {
border-bottom: 1px solid #24292E;
box-sizing: border-box;
top: 0;
height: 10rem;
width: 100%;
text-align: center;
background-color: #353A41;
overflow: hidden;
transition: background-color 680ms ease;
}
#frequency-bar.dim {
background-color: #232323;
}
#frequency-bar > div {
text-align: center;
}
#frequency-bar a {
position: absolute;
z-index: 1;
line-height: 4rem;
width: 3.8rem;
height: 3.8rem;
font-size: 1.4rem;
border-radius: 50%;
display: inline-block;
margin-top: 3rem;
box-shadow: 0 -.1rem .1rem #111;
}
#frequency-display {
position: relative;
transition: opacity 680ms ease;
}
.dim #frequency-display {
opacity: 0.1;
}
#bookmark-button {
top: 0;
right: 2rem;
}
#frequency {
font-size: 6rem;
font-weight: 300;
color: #fff;
padding-top: 1.5rem;
position: absolute;
width: 100%;
height: 10rem;
display: block;
top: 0;
left: 0;
}
#frequency small {
font-size: 1.5rem;
padding-left: 0.3rem;
}
#bookmark-button {
background: url("images/toggle-fav-star-off.png") no-repeat center center / 4rem;
}
#bookmark-button:focus {
border-color: #888;
}
#bookmark-button:active,
#bookmark-button[data-bookmarked="true"]:active {
background: #00ABCD url("images/toggle-fav-star-pressed.png") no-repeat center center / 4rem;
}
#bookmark-button[data-bookmarked="true"] {
background: url("images/toggle-fav-star-on.png") no-repeat center center / 4rem;
}
#speaker-switch {
top: 0;
left: 2rem;
background: url("images/speaker-off.png") no-repeat center center / 4rem;
}
#speaker-switch:focus {
border-color: #888;
}
#speaker-switch:active,
#speaker-switch[data-speaker-on="true"]:active {
background: #00ABCD url("images/speaker-pressed.png") no-repeat center center / 4rem;
}
#speaker-switch[data-speaker-on="true"] {
background: url("images/speaker-on.png") no-repeat center center / 4rem;
}
/***** end *****/
/**** styles for frequency dialer *****/
#dialer-bar {
top: 10rem;
font-size: 1.4rem;
font-weight: 400;
height: 9rem;
overflow: hidden;
background: #2F3337;
color: #FFF;
box-shadow: 0 0.2rem 0.4rem rgba(0, 0, 0, 0.3);
}
#dialer-container {
box-shadow: inset 0 0.05rem 0 #3A3F44;
position: relative;
padding-left: 50%;
margin: 0 2rem;
height: 100%;
}
#dialer-container:before,
#dialer-container:after {
content: "";
background-color: #474E57;
box-shadow: inset 0 0.05rem 0 #585E65;
position: absolute;
width: 2rem;
height: 100%;
z-index: 1;
pointer-events: none;
}
#dialer-container:before {
border-right: 0.1rem solid #24292E;
left: -2rem;
}
#dialer-container:after {
border-left: 0.1rem solid #24292E;
right: -2rem;
}
#frequency-indicator {
border-radius: 50%/0.1rem;
height: 8.6rem;
width: 1.6rem;
margin: 0.6rem 0 0 -0.8rem;
position: absolute;
z-index: 1;
background: url(images/selector.png) no-repeat center center / 1.6rem;
top: 0;
left: 50%;
}
div.animation-on > div {
transition: -moz-transform var(--transition-duration) ease 0s;
}
#frequency-dialer {
display: inline-block;
display: -moz-inline-box;
-moz-user-select: none;
width: 100%;
margin-left: -2.2rem;
position: absolute;
top: 0;
}
#frequency-dialer .dialer-unit-mark-box {
background: url(images/dial-notches.png) no-repeat 0 3.4rem / 32rem;
overflow: hidden;
height: 5.5rem;
}
#frequency-dialer .dialer-unit {
text-align: left;
height: 7.5rem;
position: absolute;
width: 32rem;
}
/* The beginning and end of the dial are masked to hide notches that
are out of range. */
.dialer-unit-mark-mask-start,
.dialer-unit-mark-mask-end {
background-color: #2F3337;
display: block;
height: 5.5rem;
position: absolute;
}
/* The mask at the end should be jogged left by 0.3rem, since the
mask is intended to cover everything except the first notch. */
.dialer-unit-mark-mask-end {
margin-left: .3rem;
}
#frequency-dialer .dialer-unit-floor {
color: #AAA;
float: left;
}
/**** end *******/
/***** styles for favorites list ******/
div#fav-list {
overflow: auto;
top: 19rem;
bottom: 9rem;
}
div#fav-list-container {
max-height: 100%;
position: absolute;
bottom: 0;
width: 100%;
}
div#fav-list-container > div:before {
content: "";
position: absolute;
top: 0;
left: 2rem;
right: 2rem;
width: calc(100% - 4rem);
height: .1rem;
background-color: #3D4045;
}
div#fav-list-container > div {
position: relative;
font-size: 2.3rem;
font-weight: 300;
height: 4.4rem;
padding-bottom: 0.2rem;
clear: both;
}
div#fav-list-container > div:active {
background-color: rgba(52,140,158, .6);
}
div#fav-list-container > div:active:before,
div#fav-list-container > div:active + div:before {
background-color: transparent;
}
div#fav-list-container div.fav-list-remove-button {
height: 100%;
width: 4rem;
margin-left: 2rem;
float: right;
cursor: pointer;
background: url("images/fav-star.png") no-repeat center center / 1.4rem;
}
div#fav-list-container div.selected div.fav-list-remove-button {
background: url("images/fav-star-selected.png") no-repeat center center / 1.4rem;
}
div#fav-list-container div.fav-list-frequency {
float: right;
padding: 0.8rem -moz-calc(50% - 2.4rem) 0 0;
text-align: right;
width: 6rem;
}
div#fav-list-container div.fav-list-frequency small {
font-size: 1.5rem;
position: absolute;
padding: .6rem .2rem 0 1rem;
}
/***** end *****/
/***** styles for status bars *****/
#action-bar {
bottom: 0;
border-top: .1rem solid #3A3E46;
box-shadow: 0 0 .2rem #111;
height: 9rem;
overflow: hidden;
}
/* Styles for action bar */
/* FIX: it doesn't hide itself */
#action-bar[hidden] {
display: none;
}
#action-bar > div {
text-align: center;
padding: 1rem 0 0;
width: 33.333%;
float: left;
}
#action-bar > div:first-child {
text-align: right;
}
#action-bar > div:last-child {
text-align: left;
}
#action-bar a {
display: inline-block;
border: none;
font-size: 2.5rem;
width: 7rem;
height: 7rem;
border-radius: 50%;
text-align: center;
box-shadow: 0 .1rem .1rem #A8A8A8 inset, 0 .2rem 0 #1e2226;
}
#action-bar a:active {
color: #FFF;
background-color: #00ABCD;
box-shadow: 0 .1rem .1rem #3F6978 inset, 0 .2rem 0 #1e2226;
}
#power-switch, #power-switch span {
background-image: url(images/play.png), url(images/reflection-72.png);
background-repeat: no-repeat, no-repeat;
background-color: transparent;
background-position: center center, 0 0;
background-size: 7.2rem;
overflow: hidden;
position: relative;
}
#power-switch:active {
background-image: url(images/play.png);
}
#power-switch[data-enabled="true"] {
background-image: url(images/stop.png), url(images/reflection-72.png);
}
#power-switch[data-enabled="true"]:active {
background-image: url(images/stop.png);
}
#power-switch span {
background-image: url(images/spinner-FMRadio.png);
background-size: 6.6rem;
display: none;
height: 6.6rem;
left: 0.2rem;
position: absolute;
top: 0.2rem;
width: 6.6rem;
}
#power-switch[data-enabling="true"] span,
#power-switch[data-seeking="true"] span {
animation: 0.9s spinner-animation infinite steps(30);
display: block;
}
@keyframes spinner-animation {
from {
transform: rotate(1deg);
}
to {
transform: rotate(360deg);
}
}
a#frequency-op-seekdown {
width: 5rem;
height: 5rem;
margin: 1rem 0;
background-image: url(images/seekdown.png), url(images/reflection-56.png);
background-repeat: no-repeat, no-repeat;
background-color: transparent;
background-position: center center;
background-size: 5.6rem;
}
a#frequency-op-seekdown:active {
background-image: url(images/seekdown.png);
}
a#frequency-op-seekup {
width: 5rem;
height: 5rem;
margin: 1rem 0;
background-image: url(images/seekup.png), url(images/reflection-56.png);
background-repeat: no-repeat, no-repeat;
background-color: transparent;
background-position: center center;
background-size: 5.6rem;
}
a#frequency-op-seekup:active {
background-image: url(images/seekup.png);
}
/**** end ****/
/*** styles for warning box ****/
.warning {
position: absolute;
width: 100%;
height: 100%;
top: 0;
left: 0;
color: #FFF;
background-color: #2d2d2d;
}
.warning .warning-header {
padding: 1rem 3rem 1rem 3rem;
font-weight: normal;
font-size: 1.9rem;
color: #fff;
}
.warning .warning-body {
font-weight: 300;
font-size: 2.5rem;
padding: .5rem;
border-top: .1rem solid #686868;
margin: 0 2.5rem;
}
/* Press (default & recommend) */
.warning .menu button:active {
border-color: #008aaa;
color: #333;
}
/**** end ****/
/*** styles for antenna warning box ****/
#antenna-warning {
z-index: 2;
}
#antenna-warning:not([hidden]) {
display: flex;
flex-direction: column;
}
#antenna-warning > div:first-child {
height: 60%;
background: url(images/headset.png) no-repeat center center / 18.4rem;
}
#antenna-warning .warning-header {
margin-top: -2.5rem;
}
/******* end *******/
/*** styles for airplane mode warning box ****/
#airplane-mode-warning {
z-index: 3;
}
#airplane-mode-warning .warning-header {
margin-top: 50%;
}
/******* end *******/
/*** styles for RTL languages ****/
/* The scrollbar should be on the left.
* But direction is explicitly set to LTR on #container
So we force #fav-list to be RTL, while keeping the children LTR
*/
html[dir=rtl] #fav-list {
direction: rtl;
}
html[dir=rtl] #fav-list > * {
direction: ltr;
}
/******* end *******/

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 270 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 285 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 397 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 521 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 695 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 308 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 334 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 298 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 457 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 287 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 211 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 406 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 312 B