Files
taskmanager/starter/public/main.css
2023-02-02 00:43:27 +02:00

447 lines
7.8 KiB
CSS

@import url('https://fonts.googleapis.com/css?family=Montserrat:400|Inconsolata:400');
*,
::after,
::before {
box-sizing: border-box;
}
:root {
/* COLORS */
/* primary */
--primary-0: #f0efff;
--primary-50: #d8d6ff;
--primary-100: #c1beff;
--primary-200: #aaa5ff;
--primary-300: #938dff;
--primary-400: #7b74ff;
/* main */
--primary-500: #645cff;
--primary-600: #554ed9;
--primary-700: #4640b3;
--primary-800: #37338c;
--primary-900: #282566;
--primary-1000: #191740;
--primary-1100: #0a0919;
/* grey */
--grey-0: #fafbfc;
--grey-50: #f2f4f8;
--grey-100: #eaedf3;
--grey-200: #e2e7ef;
--grey-300: #dbe0ea;
--grey-400: #d3dae6;
--grey-500: #cbd3e1;
--grey-600: #adb3bf;
--grey-700: #8e949e;
--grey-800: #70747c;
--grey-900: #51545a;
--grey-1000: #333538;
--grey-1100: #141516;
/* rest */
--black: #222;
--white: #fff;
--red-light: #f8d7da;
--red-dark: #842029;
--green-light: #d1e7dd;
--green-dark: #0f5132;
/* typography */
--headingFont: 'Inconsolata', monospace;
--bodyFont: 'Montserrat', sans-serif;
--smallText: 0.7em;
/* rest */
--backgroundColor: var(--grey-50);
--textColor: var(--grey-1000);
--borderRadius: 0.25rem;
--letterSpacing: 1px;
--transition: 0.3s ease-in-out all;
--max-width: 1120px;
--fixed-width: 600px;
/* box shadows */
--shadow-1: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06);
--shadow-2: 0 4px 6px -1px rgba(0, 0, 0, 0.1),
0 2px 4px -1px rgba(0, 0, 0, 0.06);
--shadow-3: 0 10px 15px -3px rgba(0, 0, 0, 0.1),
0 4px 6px -2px rgba(0, 0, 0, 0.05);
--shadow-4: 0 20px 25px -5px rgba(0, 0, 0, 0.1),
0 10px 10px -5px rgba(0, 0, 0, 0.04);
}
html {
font-size: 112.5%;
}
body {
background: var(--backgroundColor);
color: var(--textColor);
font-family: var(--bodyFont);
font-weight: 400;
line-height: 1.75;
}
p {
margin-bottom: 1.5rem;
max-width: 40em;
}
h1,
h2,
h3,
h4,
h5 {
margin: 0;
margin-bottom: 1.38rem;
font-family: var(--headingFont);
font-weight: 400;
line-height: 1.3;
text-transform: capitalize;
letter-spacing: var(--letterSpacing);
}
h1 {
font-size: 3.052rem;
}
h2 {
font-size: 2.441rem;
}
h3 {
font-size: 1.953rem;
}
h4 {
font-size: 1.563rem;
}
h5 {
font-size: 1.25rem;
}
small,
.text-small {
font-size: var(--smallText);
}
ul {
padding: 0;
list-style-type: none;
}
a {
text-decoration: none;
}
/*************
Buttons
*************/
.btn {
cursor: pointer;
appearance: none;
color: var(--white);
background: var(--primary-500);
border: none;
border-radius: var(--borderRadius);
letter-spacing: var(--letterSpacing);
padding: 0.375rem 0.75rem;
box-shadow: var(--shadow-1);
transition: var(--transition);
text-transform: capitalize;
}
.btn:hover {
color: var(--white);
background: var(--primary-700);
box-shadow: var(--shadow-2);
}
button.small {
padding: 0.25rem 0.5rem;
font-size: var(--smallText);
}
button.hipster {
color: var(--primary-500);
background: var(--primary-50);
box-shadow: var(--shadow-1);
}
button.hipster:hover {
background: var(--primary-100);
box-shadow: var(--shadow-2);
}
button.block {
width: 100%;
}
/*************
FORM
*************/
form {
width: 100%;
background: var(--white);
border-radius: var(--borderRadius);
box-shadow: var(--shadow-2);
padding: 2rem 2.5rem;
}
label {
display: block;
font-size: var(--smallText);
margin-bottom: 0.5rem;
text-transform: capitalize;
}
input,
textarea {
width: 100%;
padding: 0.375rem 0.75rem;
border-radius: var(--borderRadius);
background: var(--grey-50);
border-color: transparent;
border: 1px solid var(--grey-300);
}
.form-row {
margin-bottom: 1rem;
}
textarea {
width: 100%;
height: 7rem;
}
::placeholder {
color: var(--grey-600);
}
.form-alert {
color: var(--red-dark);
letter-spacing: var(--letterSpacing);
text-transform: capitalize;
}
.task-form,
.single-task-form {
width: 90vw;
max-width: var(--fixed-width);
margin: 0 auto;
margin-top: 6rem;
}
.task-form h4 {
text-align: center;
}
.task-form .form-alert {
margin-top: 1rem;
}
.submit-btn {
width: 100%;
margin-top: 1rem;
}
@media screen and (min-width: 576px) {
.form-control {
display: flex;
}
.task-input {
border-radius: 0;
border-top-left-radius: var(--borderRadius);
border-bottom-left-radius: var(--borderRadius);
}
.submit-btn {
margin-top: 0;
width: 175px;
border-radius: 0;
border-top-right-radius: var(--borderRadius);
border-bottom-right-radius: var(--borderRadius);
}
}
form > :first-child {
margin-top: 0;
}
form > :last-child {
margin-bottom: 0;
}
/* Basic Classes */
.alert {
padding: 0.375rem 0.75rem;
margin-bottom: 1rem;
border-color: transparent;
border-radius: var(--borderRadius);
}
.alert-success {
color: var(--green-dark);
background-color: var(--green-light);
}
.alert-danger {
color: var(--red-dark);
background-color: var(--red-light);
}
.text-danger {
color: var(--red-dark);
}
.text-success {
color: var(--green-dark);
}
/* loading */
@keyframes spinner {
to {
transform: rotate(360deg);
}
}
.loading {
width: 6rem;
height: 6rem;
border-radius: 50%;
border: 3px solid #ccc;
border-top-color: var(--clr-primary-5);
animation: spinner 0.6s linear infinite;
}
.loading {
margin: 0 auto;
}
/* form loading */
.form-loading {
position: relative;
}
.form-loading::before {
background: var(--white);
position: absolute;
content: '';
height: 100%;
width: 100%;
top: 0;
left: 0;
border-radius: var(--borderRadius);
opacity: 0.8;
}
.form-loading::after {
content: '';
position: absolute;
top: calc(50% - 3rem);
left: calc(50% - 3rem);
width: 6rem;
height: 6rem;
border-radius: 50%;
border: 3px solid #ccc;
border-top-color: var(--clr-primary-5);
animation: spinner 0.6s linear infinite;
}
/*************
TASKS
*************/
.empty-list {
text-align: center;
}
.tasks-container {
width: 100%;
width: 90vw;
max-width: var(--fixed-width);
margin: 0 auto;
margin-top: 2rem;
padding-bottom: 4rem;
}
.tasks {
display: grid;
gap: 1rem;
}
.single-task {
padding: 1rem 2.5rem;
background: var(--white);
border-radius: var(--borderRadius);
box-shadow: var(--shadow-2);
transition: var(--transition);
display: flex;
justify-content: space-between;
align-items: center;
}
.single-task:hover {
box-shadow: var(--shadow-4);
}
.single-task h5 {
margin-bottom: 0;
}
.single-task span {
display: inline-block;
width: 0.5rem;
height: 0.5rem;
margin-left: -1.25rem;
margin-right: 1.5rem;
}
.single-task .fa-check-circle {
font-size: 1rem;
color: var(--green-dark);
visibility: hidden;
}
.task-completed h5 {
text-decoration: line-through;
}
.task-completed .fa-check-circle {
visibility: visible;
}
.loading-text {
visibility: hidden;
}
/* Task Links */
.task-links {
display: flex;
align-items: center;
gap: 0 0.5rem;
}
.delete-btn,
.edit-link {
background: transparent;
font-size: 0.75rem;
border: transparent;
cursor: pointer;
}
.edit-link {
color: var(--green-dark);
}
.delete-btn {
color: var(--red-dark);
}
/*************
SINGLE TASK
*************/
.single-task-form h4 {
text-align: center;
}
.single-task-form p {
margin-bottom: 0;
margin-top: 0;
}
.single-task-form .form-control {
display: grid;
grid-template-columns: 150px 1fr;
align-items: center;
justify-items: start;
gap: 0 1rem;
margin-bottom: 0.75rem;
}
.single-task-form label {
margin-bottom: 0;
font-size: 1rem;
}
.task-edit-completed {
width: auto;
}
.back-link {
display: block;
width: 250px;
margin: 0 auto;
text-align: center;
margin-top: 6rem;
background: var(--black);
}
.back-link:hover {
background: var(--black);
opacity: 0.75;
}
.single-task-form .form-alert {
text-align: center;
margin-top: 1rem;
}