354 lines
5.3 KiB
CSS
354 lines
5.3 KiB
CSS
/* Generics */
|
|
|
|
:root {
|
|
--text-large: 18px;
|
|
--text-navigation: 16px;
|
|
--text-medium: 15px;
|
|
--text-small: 11px;
|
|
|
|
--color-title: darkslategray;
|
|
--color-default: darkslategray;
|
|
--color-emphasis: darkslateblue;
|
|
--color-meta: slategray;
|
|
|
|
--gap-tiny: 4px;
|
|
--gap-small: 8px;
|
|
--gap-medium: 16px;
|
|
--gap-large: 32px;
|
|
|
|
--duration-short: 0.3s;
|
|
--duration-long: 1.5s;
|
|
}
|
|
|
|
.grow {
|
|
flex: 1;
|
|
}
|
|
|
|
.scroll {
|
|
overflow-y: auto;
|
|
}
|
|
|
|
strong {
|
|
font-weight: bold;
|
|
}
|
|
|
|
i {
|
|
color: var(--color-emphasis);
|
|
font-style: italic;
|
|
}
|
|
|
|
/* Typography */
|
|
|
|
.text-navigation {
|
|
color: black;
|
|
font-size: var(--text-navigation);
|
|
font-weight: bold;
|
|
}
|
|
|
|
.text-title {
|
|
color: var(--color-title);
|
|
font-size: var(--text-large);
|
|
font-weight: bold;
|
|
}
|
|
|
|
.text-meta {
|
|
color: var(--color-meta);
|
|
font-family: monospace;
|
|
font-size: var(--text-small);
|
|
text-transform: uppercase;
|
|
}
|
|
|
|
.text-details {
|
|
color: var(--color-default);
|
|
font-size: var(--text-medium);
|
|
line-height: 1.3rem;
|
|
}
|
|
|
|
.text-error {
|
|
color: brown;
|
|
font-family: monospace;
|
|
font-size: var(--text-small);
|
|
text-transform: uppercase;
|
|
}
|
|
|
|
.link {
|
|
color: blue;
|
|
text-decoration: underline;
|
|
}
|
|
|
|
.link:visited {
|
|
color: purple;
|
|
}
|
|
|
|
.link:hover {
|
|
color: darkblue;
|
|
}
|
|
|
|
/* Page */
|
|
|
|
.page {
|
|
background-color: lavender;
|
|
display: grid;
|
|
grid-template-columns: 1fr;
|
|
grid-template-rows: 64px calc(100vh - 72px); /* Is there a keyword solution for this? */
|
|
grid-gap: var(--gap-small);
|
|
height: 100vh;
|
|
margin: auto;
|
|
max-width: 800px;
|
|
}
|
|
|
|
.page > main {
|
|
background-color: lavender;
|
|
display: block;
|
|
position: relative;
|
|
height: 100%;
|
|
}
|
|
|
|
/* Navigation */
|
|
|
|
.navigation {
|
|
display: flex;
|
|
flex-direction: row;
|
|
box-shadow: 0px 5px 5px -5px darkslategray;
|
|
}
|
|
|
|
.navigation-bottom {
|
|
display: flex;
|
|
flex-direction: row;
|
|
box-shadow: 0px 5px 5px 5px darkslategray;
|
|
}
|
|
|
|
.navigation > .navigation-li {
|
|
flex: 1;
|
|
}
|
|
|
|
.navigation-li {
|
|
list-style: none;
|
|
}
|
|
|
|
.navigation-item {
|
|
display: flex;
|
|
flex-shrink: 0;
|
|
flex-direction: column;
|
|
align-items: center;
|
|
justify-content: center;
|
|
|
|
background-color: lavenderblush;
|
|
border: 1px solid darkslategray;
|
|
height: 64px;
|
|
}
|
|
|
|
.navigation-item.bottom {
|
|
height: 80px;
|
|
}
|
|
|
|
.navigation-item:hover {
|
|
background-color: antiquewhite;
|
|
}
|
|
|
|
.navigation-item.active {
|
|
background-color: bisque;
|
|
}
|
|
|
|
.navigation-item:disabled {
|
|
background-color: slategray;
|
|
}
|
|
|
|
/* Promote / Demote buttons */
|
|
|
|
.promote-button {
|
|
background-color: powderblue;
|
|
}
|
|
|
|
.promote-button:hover {
|
|
background-color: darkseagreen;
|
|
}
|
|
|
|
.demote-button {
|
|
background-color: thistle;
|
|
}
|
|
|
|
.demote-button:hover {
|
|
background-color: rosybrown;
|
|
}
|
|
|
|
/* Notifications */
|
|
|
|
.notification {
|
|
height: 50px;
|
|
position: relative;
|
|
padding: var(--gap-small);
|
|
|
|
animation-duration: var(--duration-short);
|
|
animation-name: slidein;
|
|
transition-duration: var(--duration-short);
|
|
transition-timing-function: ease-out;
|
|
}
|
|
|
|
.notification > p {
|
|
margin: auto;
|
|
}
|
|
|
|
.notification.error {
|
|
background-color: mistyrose;
|
|
border: 1px solid peru;
|
|
}
|
|
|
|
.notification.success {
|
|
background-color: mediumaquamarine;
|
|
border: 1px solid darkolivegreen;
|
|
}
|
|
|
|
@keyframes slidein {
|
|
from {
|
|
left: -100vw;
|
|
}
|
|
|
|
to {
|
|
left: 0%;
|
|
}
|
|
}
|
|
|
|
/* Loading */
|
|
|
|
.loading-icon {
|
|
animation: spin infinite linear var(--duration-long),
|
|
fadein linear var(--duration-short);
|
|
}
|
|
|
|
@keyframes spin {
|
|
from {
|
|
transform: rotate(0deg);
|
|
}
|
|
to {
|
|
transform: rotate(360deg);
|
|
}
|
|
}
|
|
|
|
@keyframes fadein {
|
|
from {
|
|
opacity: 0;
|
|
}
|
|
to {
|
|
opacity: 1;
|
|
}
|
|
}
|
|
|
|
/* Icon buttons */
|
|
|
|
.icon-button {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: middle;
|
|
flex-shrink: 0;
|
|
padding: var(--gap-tiny);
|
|
border: 1px solid rgba(0, 0, 0, 0);
|
|
border-radius: 8px;
|
|
}
|
|
|
|
.icon-button:hover {
|
|
background-color: lavenderblush;
|
|
border: 1px solid slategray;
|
|
}
|
|
|
|
/* Content organization */
|
|
|
|
.content-card {
|
|
background-color: lavender;
|
|
border: 1px solid darkslategray;
|
|
box-shadow: 0px 5px 5px -5px darkslategray;
|
|
padding: var(--gap-medium);
|
|
}
|
|
|
|
.content-row {
|
|
display: flex;
|
|
flex-direction: row;
|
|
align-items: center;
|
|
}
|
|
|
|
.item-list {
|
|
padding-left: 16px;
|
|
list-style: disc;
|
|
margin: var(--gap-small) 0;
|
|
}
|
|
|
|
.content-list {
|
|
display: flex;
|
|
flex-direction: column;
|
|
height: 100%;
|
|
}
|
|
|
|
.content-list > * + * {
|
|
margin-top: var(--gap-medium);
|
|
}
|
|
|
|
.content-text {
|
|
display: flex;
|
|
flex-direction: column;
|
|
height: 100%;
|
|
}
|
|
|
|
.content-query {
|
|
display: flex;
|
|
flex-direction: column;
|
|
margin: auto;
|
|
padding: 0 var(--gap-medium);
|
|
}
|
|
|
|
.content-query > select {
|
|
padding: var(--gap-small);
|
|
}
|
|
|
|
.content-query > input {
|
|
padding: var(--gap-small);
|
|
}
|
|
|
|
.content-query > label {
|
|
margin-top: var(--gap-medium);
|
|
margin-bottom: var(--gap-small);
|
|
}
|
|
|
|
.content-query :first {
|
|
margin-top: 100px;
|
|
}
|
|
|
|
/* Margins and paddings */
|
|
|
|
.padding-small {
|
|
padding: var(--gap-small) var(--gap-medium);
|
|
}
|
|
|
|
.margin-small {
|
|
margin: var(--gap-small) 0px;
|
|
}
|
|
|
|
.margin-title {
|
|
margin: var(--gap-large) 0px var(--gap-small);
|
|
}
|
|
|
|
.margin-paragraph {
|
|
margin: var(--gap-medium) 0px var(--gap-small);
|
|
}
|
|
|
|
/* Expression set page */
|
|
|
|
.page-loading {
|
|
height: 100%;
|
|
width: 100%;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
}
|
|
|
|
.page-with-padding {
|
|
padding: var(--gap-small) var(--gap-medium) var(--gap-medium);
|
|
}
|
|
|
|
.page-with-bottom-navigation {
|
|
display: grid;
|
|
grid-template-columns: 1fr;
|
|
grid-template-rows: calc(100% - 88px) 80px;
|
|
grid-gap: var(--gap-small);
|
|
height: 100%;
|
|
}
|