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,314 @@
html {
font-size: 10px;
/* We have Fira Sans as default font in real device. But it isn't default in
* browser. That's the main reason this line is here.*/
font-family: "Fira Sans";
}
html, body {
width: 100%;
height: 100%;
overflow: hidden;
margin: 0;
padding: 0;
background-color: transparent;
}
#main-section {
position: absolute;
width: 100%;
height: 100%;
overflow: hidden;
}
a {
outline: 0;
}
a:hover, a:active, a:focus {
outline: 0;
}
section {
font-size: 1.6rem;
}
/* Card list */
#card-viewer {
position: absolute;
overflow: hidden;
width: 100%;
height: 100%;
top: 0;
left: 0;
overflow: hidden;
}
#card-list-frame {
position: absolute;
width: 100%;
height: 33.6rem;
top: 32.41%;
overflow: visible;
}
#card-list {
position: relative;
width: 100%;
height: 100%;
transition: transform 0.4s cubic-bezier(0.25, 0, 0, 1);
transform-origin: 0 50%;
}
#card-list.hidden {
/* Using display none here would prevent animation, and using visibility
hidden causes some bugs in rendering */
opacity: 0;
}
#card-list.no-transition,
#folder-list.no-transition {
transition-property: none;
}
.card {
margin: 0;
left: 0;
top: 0;
position: absolute;
transition: transform 0.4s cubic-bezier(0.25, 0, 0, 1), filter 0.3s ease;
}
.card smart-button[type="app-button"].tv-channel {
background-color: #272727;
}
.card smart-button[type="app-button"].tv-channel:before {
font-size: 30rem;
color: white;
}
.card smart-button[type="app-button"].new-card {
opacity: 0;
transform: scale(0.5, 0.5);
}
.card smart-button[type="app-button"].new-card-transition {
transition: transform 0.4s cubic-bezier(0.25, 0, 0, 1) 0.2s,
opacity 0.4s cubic-bezier(0.25, 0, 0, 1) 0.2s;
}
.card smart-button[type="app-button"].new-card-transition.last-card {
transition-delay: 0s;
}
#folder-list .card smart-button[type="app-button"].new-card {
opacity: 1;
transform: translateY(-44rem);
}
#folder-list .card smart-button[type="app-button"].new-card-transition {
transition: transform 0.4s cubic-bezier(0.25, 0, 0, 1),
opacity 0.4s cubic-bezier(0.25, 0, 0, 1);
}
.card-panel {
position: absolute;
top: -23.14rem;
width: 100%;
height: 14.926rem;
text-align: center;
/* Use visibility hidden instead of display none here because display none
may prevent transition happens */
visibility: hidden;
z-index: 0;
}
.card-panel smart-button {
position: relative;
margin-left: 1.86em;
width: 14.926rem;
height: 14.926rem;
transform: translateY(12rem);
opacity: 0;
}
.card-panel smart-button:first-child {
margin-left: 0;
}
.card-panel smart-button[data-icon]::before {
width: 10.074rem;
left: 2.43rem;
font-size: 10.07rem;
line-height: 15.47rem;
}
.card smart-button.app-button {
/* smart-button should be in front of card-panel */
z-index: 1;
}
.card.focused {
z-index: 100;
}
/**
* folder list
*/
#folder-viewer {
position: absolute;
overflow: hidden;
width: 100%;
height: 100%;
top: 0;
left: 0;
overflow: hidden;
}
#folder-list-frame {
position: absolute;
width: 100%;
height: 33.6rem;
top: calc(32.41% + 32.3rem);
overflow: visible;
}
#folder-list {
position: relative;
width: 100%;
height: 100%;
transition: transform 0.4s cubic-bezier(0.25, 0, 0, 1);
transform-origin: 0 50%;
}
/**
* filters
**/
.filter-tab-container {
position: absolute;
left: 6rem;
bottom: 5.4rem;
}
.filter-tab-group.hidden {
display: none;
}
/**
* background section
**/
.background {
width: 100%;
height: 100%;
margin: 0;
padding: 0;
background-color: rgba(0, 0, 0, 0.65);
transition: background-color 0.66s linear;
}
.background:before {
content: "";
height: 29rem;
position: absolute;
top: 0;
left: 0;
right: 0;
background: linear-gradient(180deg, rgba(0, 0, 0, 0.3), rgba(0, 0, 0, 0));
}
.background:after {
content: "";
height: 29rem;
position: absolute;
left: 0;
right: 0;
bottom: 0;
background: linear-gradient(0deg, rgba(0, 0, 0, 0.3), rgba(0, 0, 0, 0));
}
#edit-menu {
position: absolute;
top: 4rem;
right: 6rem;
}
/**
* nav bars
*/
nav {
position: absolute;
top: 0;
left: 0;
width: 100%;
transition: transform 0.4s cubic-bezier(0.165, 0.840, 0.440, 1.000);
}
nav header {
padding-left: 7rem;
padding-top: 5rem;
font-size: 5.4rem;
font-style: italic;
color: white;
}
#main-section[data-mode="edit"] #nav-regular,
#main-section[data-mode="arrange"] #nav-regular,
#main-section:not([data-mode="edit"]) #nav-edit-title,
#main-section:not([data-mode="edit"]) #nav-edit {
transform: translateY(-16rem);
}
smart-button.hidden {
display: none;
}
/* For smart-button, we put card name in pseudo-element :after. However, we need
* to localize card name and l10n library do not support localizing element with
* children elements.
* Instead of using :after, we create a 'span' element under smart-button and
* put card name in it.
*/
smart-button[type="app-button"]:after {
content: none;
}
smart-button[type="app-button"] > span.name {
position: absolute;
bottom: 0;
left: 0;
width: 33.6rem;
height: 8rem;
padding-top: 1rem;
line-height: 3rem;
text-align: center;
font-size: 2.8rem;
font-style: italic;
color: #ffffff;
}
smart-button[type="app-button"][app-type="deck"] > span.name {
background-color: transparent;
}
smart-button[type="app-button"][app-type="tv"] > span.name {
background-color: #d90c83;
}
smart-button[type="app-button"][app-type="app"] > span.name,
smart-button[type="app-button"][app-type="appbookmark"] > span.name {
background-color: rgba(0, 0, 0, 0.4);
}
smart-button[type="app-button"][app-type="device"] > span.name {
background-color: #4a82ea;
}