:root {
/* Make it easy for stuff to match the width of
*/
--width-body-margins: 30%;
/**********
* Colors
**********/
--color-twitter-blue: hsl(204, 78%, 49%);
--color-twitter-blue-light: hsl(204, 87%, 73%);
--color-twitter-blue-extra-light: hsl(204, 95%, 85%);
--color-twitter-off-white: hsl(180, 14%, 97%);
--color-twitter-off-white-dark: hsl(180, 17%, 88%);
--color-outline-gray: hsl(204, 0%, 86%);
--color-twitter-text-gray: hsl(204, 15%, 38%);
--color-twitter-danger-red: hsl(356, 91%, 54%);
--color-twitter-danger-red2: hsl(356, 78%, 49%);
--color-twitter-danger-red2-light: hsl(356, 87%, 73%);
--color-twitter-danger-red2-hover: hsl(356, 75%, 80%);
--color-space-purple: hsl(246, 96%, 80%);
--color-space-purple-outline: hsl(246, 97%, 65%);
}
/***************************************************************************************************
*
* Base styles
* -----------
*
* Page global / default styles. Should only use tag selectors or attribute selectors. No ID or
* class selectors; those are purpose-specific, i.e., non-default.
*
***************************************************************************************************/
html {
/*
* Force scrollbar, even when it fits on 1 page. Prevents viewport from resizing -> flickering
* and stuff moving between page loads
*/
overflow-y: scroll;
}
body {
/* So that toasts can be positioned relative to `body` (rather than `html`).
* This is useful because it wil then use the `body`'s width (i.e., accounting for the big fat margins).
*/
position: relative;
margin: 0 var(--width-body-margins);
min-height: 100vh;
border-color: var(--color-twitter-off-white-dark);
border-right-style: solid;
border-left-style: solid;
border-width: 1px;
font-family: "Titillium Web";
}
input, select {
font-family: inherit;
font-size: 1em;
padding: 0.2em 0.6em;
box-sizing: border-box;
border-radius: 0.5em;
}
input[type="submit"] {
background-color: var(--color-twitter-blue-light);
width: 10em;
border-radius: 1em;
font-size: 1em;
cursor: pointer;
}
a {
text-decoration: none;
color: inherit;
cursor: pointer;
}
ul {
list-style: none;
}
h1 {
margin: 0.5em 0;
text-align: center;
}
h3 {
margin: 0.5em 0;
}
/***************************************************************************************************
*
* Utility styles
* --------------
*
* Generic or reusable styles. Should use only class selectors. Should *not* actually be modules
* (anything application specific).
*
***************************************************************************************************/
.row {
display: flex;
flex-direction: row;
align-items: center;
}
.row--spread {
justify-content: space-between;
}
/* A list of items separated by interpuncts */
.inline-dotted-list {
margin: 0;
& > * {
display: inline;
}
& > *:after {
content: " ⋅";
}
& > *:last-child:after {
content: "";
}
}
.rounded-gray-outline {
outline-color: lightgray;
outline-style: solid;
outline-width: 1px;
overflow: hidden;
border-radius: 1.5em;
}
.circle-outline {
display: flex;
border-radius: 50%;
outline: 1px solid #777;
margin: 0 0.4em;
font-size: 0.8em;
padding: 0.2em;
box-sizing: border-box;
}
.button {
display: flex; /* Prevent
from having extra space at the bottom, looking weird*/
padding: 0.5em;
margin: 0.2em;
border-radius: 100em; /* any large amount, just don't use % because then it makes an ellipse */
cursor: pointer;
&:hover {
background-color: var(--color-twitter-blue-light);
}
&:active {
transform: translate(0.1em, 0.1em);
background-color: var(--color-twitter-blue);
}
&.button--danger {
background-color: var(--color-twitter-danger-red2);
&:hover {
background-color: var(--color-twitter-danger-red2-light);
}
&:active {
background-color: var(--color-twitter-danger-red2);
}
}
}
.labelled-icon {
display: flex;
flex-direction: row;
align-items: center;
& label {
padding: 0 0.3em;
white-space: nowrap;
cursor: unset; /*