VulpesOS/gaia/tv_apps/dashboard/style/dashboard.css
OverSu b38dea0597 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.
2026-09-30 23:13:03 +02:00

306 lines
5.9 KiB
CSS
Executable file

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 {
position: relative;
width: 100%;
height: 100%;
overflow: hidden;
margin: 0;
padding: 0;
}
body {
transform-style: preserve-3d;
perspective: 25rem;
}
a {
outline: 0;
}
a:hover, a:active, a:focus {
outline: 0;
}
#main-section {
position: absolute;
width: 100%;
height: 100%;
transition: transform 1s cubic-bezier(0.5, 0.0, 0.0, 1.0);
}
/* Activate widgets */
body[data-active-direction="up"] #main-section {
transform: translateY(25rem);
}
body[data-active-direction="right"] #main-section {
transform: translateX(-32.8rem);
}
body[data-active-direction="down"] #main-section {
transform: translateY(-28.2rem);
}
body[data-active-direction="left"] #main-section {
transform: translateX(39rem);
}
body[data-active-direction="up"] #center-panel,
body[data-active-direction="right"] #center-panel,
body[data-active-direction="down"] #center-panel,
body[data-active-direction="left"] #center-panel {
opacity: 0.5;
}
body[data-active-direction="up"] #right-panel,
body[data-active-direction="up"] #bottom-panel,
body[data-active-direction="up"] #left-panel,
body[data-active-direction="right"] #top-panel,
body[data-active-direction="right"] #bottom-panel,
body[data-active-direction="right"] #left-panel,
body[data-active-direction="down"] #top-panel,
body[data-active-direction="down"] #right-panel,
body[data-active-direction="down"] #left-panel,
body[data-active-direction="left"] #top-panel,
body[data-active-direction="left"] #right-panel,
body[data-active-direction="left"] #bottom-panel {
opacity: 0;
}
.background {
position: fixed;
top: -14.1rem;
left: -16.4rem;
width: calc(100% + 36.2rem);
height: calc(100% + 26.6rem);
background-image: url(images/Default_wallpaper_02.jpg);
background-position: center;
background-size: cover;
transition: transform 1s cubic-bezier(0.5, 0.0, 0.0, 1.0);
}
body[data-active-direction="up"] .background {
transform: translateY(-12.5rem);
}
body[data-active-direction="right"] .background {
transform: translateX(16.4rem);
}
body[data-active-direction="down"] .background {
transform: translateY(14.1rem);
}
body[data-active-direction="left"] .background {
transform: translateX(-19.6rem);
}
.background-mask {
position: fixed;
width: 100%;
height: 100%;
background: linear-gradient(to right, rgba(0,0,0,0.3) 0%, rgba(0,0,0,0) 26%, rgba(0,0,0,0) 74%, rgba(0,0,0,0.3) 100%),
linear-gradient(to bottom, rgba(0,0,0,0.3) 0%, rgba(0,0,0,0) 46%, rgba(0,0,0,0) 54%, rgba(0,0,0,0.3) 100%);
}
#center-panel,
#top-panel,
#right-panel,
#bottom-panel,
#left-panel {
position: absolute;
transition: opacity 1s cubic-bezier(0.5, 0.0, 0.0, 1.0);
}
/* center-panel */
#center-panel {
width: 100%;
height: 100%;
}
/* digital clock */
#digital-clock {
position: absolute;
top: 50%;
left: 50%;
margin: -20.9rem 0 0 -57.5rem;
width: 115rem;
height: 41.8rem;
color: white;
font-weight: 100;
text-align: center;
}
#digital-clock .time {
display: flex;
justify-content: center;
margin: 0;
font-size: 34rem;
line-height: 34rem;
white-space: nowrap;
}
#digital-clock .time span {
width: 17rem;
}
#digital-clock .time span.colons {
position: relative;
top: -3rem;
width: 6rem;
}
#digital-clock .date {
position: relative;
margin-top: 4.4rem;
font-size: 3.4rem;
line-height: 3.4rem;
overflow: hidden;
}
#today-is {
position: relative;
/*top: -4rem;*/
}
#greeting {
position: relative;
top: 4rem;
}
/* top-panel */
#top-panel {
width: 100%;
height: 34.8rem;
top: -25rem;
}
/* right-panel */
#right-panel {
width: 48rem;
height: 100%;
right: -32.8rem;
}
/* bottom-panel */
#bottom-panel {
width: 100%;
height: 44.2rem;
bottom: -28.2rem;
}
/* left-panel */
#left-panel {
width: 58.2rem;
height: 100%;
left: -39rem;
}
iframe {
border: none;
width: 100%;
height: 100%;
}
/* Intro animation */
/*
* Animation for background.
*/
.active .background {
animation: shrink 1s cubic-bezier(0.0, 0.0, 0.0, 1.0) 1.2s;
}
@keyframes shrink {
from { transform: translateZ(10rem); }
to { transform: translateZ(0); }
}
/*
* Animations for greetings and date.
*/
/* XXX: 'both' will keep the animation at running state, not sure if it'll affect performance. ; */
/* Come back to this if there's a performance issue. */
.active #today-is {
animation: slidedown 0.3s cubic-bezier(0.0, 0.0, 0.0, 1.0) 4.5s both;
}
.active #greeting {
animation: slideupdown 2.6s cubic-bezier(0.0, 0.0, 0.0, 1.0) 2.2s both;
}
@keyframes slidedown {
from {
top: -4rem;
}
to {
top: 0;
}
}
@keyframes slideupdown {
0% {
top: 4rem;
}
11.54% {
top: -3.4rem;
}
88.46% {
top: -3.4rem;
}
100% { top: 4rem;}
}
/*
* The following rules set transform origin to central point of the screen.
* For the formula calc(XXrem +/- 50vh/vw), they locate to respective screen
* edges by the former term XXrem, then componsate 50vh/50vw for centeral point.
*/
.active #bottom-panel {
/* 16rem is the height of its preview area. */
transform-origin: 50vw calc(16rem - 50vh);
animation: zoomin 1s cubic-bezier(0.0, 0.0, 0.0, 1.0) 1.2s both;
}
.active #top-panel {
/* 25rem is the height of its hidden area. */
transform-origin: 50vw calc(25rem + 50vh);
animation: zoomin 1s cubic-bezier(0.0, 0.0, 0.0, 1.0) 1.2s both;
}
.active #left-panel {
/* 39rem is the width of its hidden area. */
transform-origin: calc(39rem + 50vw) 50vh;
animation: zoomin 1s cubic-bezier(0.0, 0.0, 0.0, 1.0) 1.2s both;
}
.active #right-panel {
/* 15.2rem is the width of its preview area. */
transform-origin: calc(15.2rem - 50vw) 50vh;
animation: zoomin 1s cubic-bezier(0.0, 0.0, 0.0, 1.0) 1.2s both;
}
@keyframes zoomin {
from {
transform: scale(1.7);
}
to {
transform: scale(1);
}
}