|
@import url('https://fonts.googleapis.com/css?family=Poppins:400:600'); |
|
|
|
// * { transition: all .3s ease-in-out; } |
|
|
|
html { |
|
font-size: 56.5%; |
|
} |
|
|
|
#app { |
|
overflow: hidden; |
|
background: #FFF; |
|
height: 85vh; |
|
width: 46vh; |
|
display: grid; |
|
grid-template-columns: 5rem 1fr 2rem; |
|
grid-template-rows: 3rem 1fr 4rem 1.2fr; |
|
grid-row-gap: 2rem; |
|
font-family: 'Poppins', sans-serif; |
|
font-size: 1.4rem; |
|
border: 1px solid #CCC; |
|
border-radius: 3vh; |
|
box-shadow: 0 2rem 4rem rgba(black, 0.1); |
|
|
|
> .ui-header { |
|
grid-row: 1 / 2; |
|
} |
|
|
|
> .ui-wallet { |
|
grid-column: 2 / -1; |
|
grid-row: 2 / -1; |
|
z-index: 1; |
|
} |
|
|
|
> .ui-expenses { |
|
grid-column: 2 / -1; |
|
grid-row: 3 / 4; |
|
} |
|
|
|
> .ui-bottom { |
|
grid-column: 2 / -2; |
|
grid-row: 4 / 5; |
|
overflow-y: auto; |
|
} |
|
} |
|
|
|
.ui-expenses { |
|
display: flex; |
|
flex-direction: row; |
|
justify-content: flex-start; |
|
align-items: center; |
|
} |
|
|
|
.ui-expense-price { |
|
font-size: 2.8rem; |
|
} |
|
|
|
/* ---------------------------------- */ |
|
|
|
.ui-cards { |
|
// 3d setup |
|
transform-style: preserve-3d; |
|
perspective: 1000px; |
|
perspective-origin: 100% 0%; |
|
} |
|
|
|
.ui-card { |
|
position: absolute; |
|
padding: 3rem; |
|
background: #EFCDCD; |
|
--light: #EFCDCD; |
|
--dark: #E5A9BB; |
|
background: linear-gradient(to bottom left, var(--light), var(--dark)); |
|
border-radius: 2rem; |
|
color: #FFF; |
|
width: 120%; |
|
padding-bottom: 44%; |
|
|
|
} |
|
|
|
.ui-card[data-card="AnimEx"] { |
|
--light: #838385; |
|
--dark: #454545; |
|
} |
|
.ui-card[data-card="Easea"] { |
|
--light: #6A9EF0; |
|
--dark: #{ darken(#567EDA, 15%) }; |
|
} |
|
|
|
.ui-card-title { |
|
font-size: 2.8rem; |
|
} |
|
|
|
.ui-card-type { |
|
opacity: 0.8; |
|
} |
|
|
|
.ui-card-number { |
|
position: absolute; |
|
bottom: 3rem; |
|
left: 3rem; |
|
} |
|
|
|
/* ---------------------------------- */ |
|
|
|
.ui-table { |
|
width: 100%; |
|
border-collapse: collapse; |
|
border-spacing: 0; |
|
|
|
thead { color: #aaa; font-size: 1.2rem; } |
|
|
|
th, |
|
td { |
|
padding: .5em .25em; |
|
} |
|
|
|
.ui-item-title { |
|
font-weight: 600; |
|
} |
|
|
|
.ui-item-time { |
|
font-size: 1rem; |
|
} |
|
} |
|
|
|
th.ui-price { |
|
text-align: right; |
|
} |
|
|
|
th.ui-day { |
|
text-align-last: left; |
|
} |
|
|
|
td.ui-price { |
|
text-align: right; |
|
vertical-align: top; |
|
} |
|
|
|
.ui-wallet-heading { |
|
position: absolute; |
|
top: 0; |
|
left: 0; |
|
margin: 0; |
|
font-size: 3rem; |
|
} |
|
|
|
/* ---------------------------------- */ |
|
|
|
$duration: .6s; |
|
|
|
.ui-wallet-heading, |
|
.ui-cards, |
|
.ui-card, |
|
.ui-expenses, |
|
.ui-bottom, |
|
tr { |
|
transition: transform $duration ease, opacity .5s ease; |
|
transition-duration: calc(var(--not-panning, 0) * #{$duration}); |
|
transform: translateY(0%); |
|
} |
|
|
|
|
|
#app { |
|
cursor: grab; |
|
|
|
&[data-panning="1"] { |
|
cursor: grabbing; |
|
} |
|
// --rdy: 0; |
|
--pos-rdy: calc(( var(--rdy, 0) + 1 ) / 2 ); |
|
--neg-rdy: calc(( var(--rdy, 0) - 1 ) / 2 ); |
|
--card-end: -1; |
|
--wallet-end: 1; |
|
|
|
--wallet-reveal: var(--pos-rdy); // Reveal on Wallet State; |
|
--card-reveal: var(--neg-rdy); // Reveal on Card State; |
|
} |
|
|
|
[data-state="card"] { |
|
--rdy: -1; // Final state |
|
} |
|
[data-state="wallet"] { |
|
--rdy: 1; |
|
} |
|
|
|
|
|
.ui-card { |
|
--z: 0; |
|
@for $i from 1 through 3 { |
|
&:nth-child(#{$i}) { |
|
--z: #{$i}; |
|
z-index: #{3 - $i}; |
|
} |
|
} |
|
|
|
transform: |
|
translateY(calc(12rem + 12rem * var(--rdy))) |
|
rotateX(calc(-40deg * var(--wallet-reveal) )) |
|
translateZ(calc( var(--z) * -10rem)); |
|
} |
|
|
|
.ui-wallet-heading { |
|
opacity: calc( 1 + var(--card-reveal) ); |
|
transform: translateY( calc( -10vh * var(--card-reveal) * -1 ) ); |
|
} |
|
|
|
.ui-expenses, |
|
.ui-bottom { |
|
opacity: calc( 1 - var(--wallet-reveal) ); |
|
transform: translateY(calc( 20vh * var(--wallet-reveal) ) ); |
|
} |
|
|
|
tr { |
|
transform: translateY(calc( 100% * (var(--i)/var(--total)) * var(--wallet-reveal) ) ); |
|
// transition-delay: calc( (var(--total) - var(--i)) * 50ms); |
|
} |
|
|
|
|
|
/* ---------------------------------- */ |
|
|
|
body { |
|
display: flex; |
|
justify-content: center; |
|
align-items: center; |
|
background: #ddd; |
|
color: #000; |
|
background: linear-gradient(to bottom left, #FEFEFE, #ddd); |
|
|
|
&:before, &:after { |
|
content: ''; |
|
height: 70vmin; |
|
width: 70vmin; |
|
border-radius: 50%; |
|
position: absolute; |
|
background-image: linear-gradient(to right, #FBE4E7, #FBBECF); |
|
z-index: -1; |
|
opacity: 0.6; |
|
} |
|
|
|
&:before { |
|
left: 15%; |
|
bottom: -15vw; |
|
} |
|
|
|
&:after { |
|
right: 15%; |
|
bottom: -5vw; |
|
z-index: -3; |
|
opacity: 0.5; |
|
//background-image: linear-gradient(to left, #FBE4E7, #FBBECF); |
|
} |
|
} |
|
|
|
// -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- |
|
|
|
*, |
|
*:before, |
|
*:after { |
|
box-sizing: border-box; |
|
position: relative; |
|
} |
|
|
|
body, html { |
|
height: 100%; |
|
width: 100%; |
|
margin: 0; |
|
padding: 0; |
|
overflow: hidden; |
|
} |
|
|
|
.debug { |
|
position: fixed; |
|
top: 0; |
|
left: 0; |
|
font-family: monospace; |
|
font-size: 2rem; |
|
} |