You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Web-Dev-For-Beginners/7-bank-project/solution/styles.css

352 lines
6.2 KiB

:root {
/* Colors */
--primary: #0091ea;
--primary-light: #7bbde6;
--accent: #546e7a;
--grey: #445;
--error: #f52;
--background: #f5f5f6;
--background-accent: #cfe5f2;
--white: #fff;
--border: #99a;
/* Sizes */
--radius: 10px;
--space-xs: 5px;
--space-sm: 10px;
--space-md: 20px;
--space-xl: 40px;
}
/* ------------------------------------------------------------------------ */
/* Micro reset */
/* ------------------------------------------------------------------------ */
* {
box-sizing: border-box;
}
html, body, #app {
margin: 0;
padding: 0;
height: 100%;
}
/* ------------------------------------------------------------------------ */
/* General styles */
/* ------------------------------------------------------------------------ */
body {
font-family: Arial, Helvetica, sans-serif;
font-size: 14px;
}
h2 {
color: var(--primary);
text-transform: uppercase;
font-weight: bold;
font-size: 1.5rem;
margin: var(--space-md) 0;
}
form {
display: flex;
flex-direction: column;
margin: var(--space-sm) var(--space-md);
}
input {
margin-top: var(--space-xs);
margin-bottom: var(--space-sm);
height: 40px;
padding: var(--space-xs) var(--space-sm);
border: 1px solid var(--border);
border-radius: var(--radius);
}
input:focus {
border-color: var(--primary);
outline: 0;
}
label {
color: var(--grey);
text-transform: uppercase;
font-size: 80%;
}
button {
font-weight: bold;
background-color: var(--primary);
color: var(--white);
height: 40px;
padding: var(--space-xs);
border: 0;
border-radius: var(--radius);
text-transform: uppercase;
min-width: 100px;
margin: var(--space-sm) 0;
}
.button-alt {
background-color: transparent;
color: var(--primary);
}
button:hover {
filter: brightness(115%);
cursor: pointer;
}
button:focus {
outline: none;
border: 2px solid var(--grey);
}
.error {
color: var(--error);
margin: var(--space-xs) 0;
}
.error:empty {
display: none;
}
/* ------------------------------------------------------------------------ */
/* Login page */
/* ------------------------------------------------------------------------ */
.login-title {
font-size: 2rem;
font-weight: bold;
color: var(--white);
margin: var(--space-md);
}
.login-logo {
height: 80px;
vertical-align: middle;
}
.login-page {
display: flex;
height: 100%;
align-items: center;
justify-content: center;
background: linear-gradient(var(--primary), var(--primary-light));
}
.login-container {
flex: auto;
max-width: 480px;
max-height: 100%;
overflow: auto;
}
.login-content {
background-color: var(--background);
padding: var(--space-sm);
}
.login-separator {
position: relative;
top: 0.5em;
border-top: 1px solid var(--border);
opacity: 0.6;
margin: var(--space-md) 0;
}
.login-separator > span {
position: relative;
top: -0.5em;
background-color: var(--background);
padding: var(--space-sm);
}
/* ------------------------------------------------------------------------ */
/* Dashboard page */
/* ------------------------------------------------------------------------ */
.dashboard-page {
display: flex;
height: 100%;
flex-direction: column;
}
.dashboard-header {
background-color: var(--grey);
padding: 0 var(--space-sm)
}
.dashboard-header button {
float: right;
border: 1px solid;
background-color: transparent;
}
.dashboard-title {
font-size: 1.5rem;
font-weight: bold;
color: var(--white);
vertical-align: middle;
margin: 0 var(--space-sm)
}
.dashboard-logo {
height: 60px;
vertical-align: middle;
padding: var(--space-xs);
}
.balance {
background: radial-gradient(circle at center, var(--primary), var(--primary-light));
text-align: center;
}
.balance > div {
color: var(--white);
padding-top: var(--space-xs);
text-transform: uppercase;
}
.balance > span {
color: var(--white);
font-size: 3rem;
}
.transactions-title {
display: flex;
justify-content: space-between;
align-items: center;
padding: 0 var(--space-sm);
color: var(--accent);
font-weight: bold;
font-size: 1.5rem;
}
.transactions-title > div {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.transactions-table {
width: 100%;
font-size: 1.2rem;
padding: var(--space-sm);
margin: 0;
border-spacing: 0;
background-color: var(--background);
}
.transactions-table thead th {
border-bottom: 1px solid var(--border);
}
.transactions-table tr:nth-child(even) {
background-color: var(--background-accent);
}
.transactions-table td,
.transactions-table th {
padding: var(--space-xs) var(--space-sm);
text-align: left;
}
.transactions-table td:first-child,
.transactions-table th:first-child {
/* Make first column use the minimum width */
width: 1%;
white-space: nowrap;
}
.transactions-table td:last-child,
.transactions-table th:last-child {
text-align: right;
}
.dialog {
display: none;
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
left: 0;
top: 0;
overflow: auto;
background-color: rgba(0,0,0,0.4);
animation: slideFromTop 0.3s ease-in-out;
justify-content: center;
align-items: flex-start;
}
.dialog.show {
display: flex;
}
@keyframes slideFromTop {
from {
top: -300px;
opacity: 0;
}
to {
top: 0;
opacity: 1;
}
}
.dialog-content {
flex: auto;
background-color: var(--white);
max-width: 480px;
max-height: 100%;
padding: var(--space-sm);
}
.dialog-buttons {
text-align: right;
}
/* ------------------------------------------------------------------------ */
/* Utilities */
/* ------------------------------------------------------------------------ */
.text-center {
text-align: center;
}
.hide-xs {
display: none;
}
/* ------------------------------------------------------------------------ */
/* Responsive adaptations */
/* ------------------------------------------------------------------------ */
@media only screen and (min-width: 480px) {
.hide-xs {
display: initial;
}
.login-content,
.dialog-content {
border-radius: var(--radius);
}
.dialog-content {
margin-top: var(--space-xl);
}
}
@media only screen and (min-width: 768px) {
.transactions-table {
border-radius: var(--radius);
}
.dashboard-content {
width: 100%;
max-width: 768px;
align-self: center;
}
}