gnu-social/public/assets/css/base.css

637 lines
13 KiB
CSS

:root {
/* FONTS */
--display-font: 'Manrope', sans-serif;
--main-font: 'Inter var', sans-serif;
/* UNITS
* unit size - every element should be a multiplier of this
* main size - used for headers and icons
* medium size - same as above, except that the element in question is contained in something else
* small size - used in common text, borders
*/
--unit-size: 0.5rem;
--main-size: 1.5rem;
--medium-size: 1.2rem;
--small-size: 1rem;
/* colours and shadows */
--bg1: #242434;
--bg2: #46465E;
--bg3: #8081BA;
--translucent: #1A1A2666;
--white: #FFFFFF;
--shadow: 0px 0px 32px 0px #00000066;
--shadow-light: 0px 0px 32px 0px #FFFFFF66;
/* transitions and animations */
--cubic-transition: all 200ms cubic-bezier(0, 0.55, 0.45, 1);
--fade-in: fadeIn 200ms cubic-bezier(0, 0.55, 0.45, 1);
--fade-out: fadeOut 200ms cubic-bezier(0, 0.55, 0.45, 1);
}
a,
a:visited {
text-decoration: none;
color: var(--white);
margin-bottom: 1px;
outline: 0;
}
a:focus,
a:hover {
text-decoration: underline;
color: var(--white);
transition: var(--cubic-transition);
}
figcaption a:link {
font-size: var(--small-size);
color: var(--white);
}
hr {
all: unset;
display: block;
height: 2px;
background: var(--bg2);
}
summary:focus {
animation-name: highlight;
animation-duration: 500ms;
animation-timing-function: ease-in-out;
}
/* BACKGROUND IMG GRADIENT */
.bg {
background-color: var(--bg3);
background-image: url(../images/bg.png);
background-position: center;
background-repeat: no-repeat;
background-size: 100% 100%;
}
.anchor-hidden {
display: none;
}
/* HEADER AND SIDEPANELS */
#header {
z-index: 1;
font-size: var(--main-size);
height: 3rem;
display: flex;
position: fixed;
top: 0;
background-color: var(--bg1);
width: 100%;
align-items: center;
padding: var(--unit-size);
box-shadow: var(--shadow);
}
#instance {
display: flex;
align-items: center;
align-self: center;
margin-left: auto;
margin-right: auto;
}
#instance h1 {
margin-left: 4px;
}
.icon {
fill: var(--white);
align-self: center;
}
/* CURRENT PAGE LINK */
.active {
font-weight: bold;
}
/* CONTAINS ALL ELEMENTS BESIDES HEADER */
.container {
margin-top: 3rem;
margin-left: 20%;
margin-right: 20%;
padding: var(--unit-size) var(--unit-size) 0 var(--unit-size);
}
/* THE FOCUSED (middle) DIV */
.content {
display: flex;
flex-direction: column;
padding: var(--unit-size) var(--unit-size) 0 var(--unit-size);
width: 100%;
}
.markdown-blocks {
background-color: var(--translucent);
border-radius: 0 0 var(--unit-size) var(--unit-size);
border: solid 2px var(--bg2);
border-top: solid 2px var(--bg3);
padding: var(--unit-size);
}
.markdown-blocks ul {
margin-left: 1em;
list-style: disc;
}
.markdown-blocks ul li {
margin-bottom: 0.2em;
}
.doc-navigation {
background-color: var(--translucent);
border-radius: var(--unit-size) var(--unit-size) 0 0;
border: solid 2px var(--bg2);
border-bottom: none;
padding: var(--unit-size);
}
.doc-navigation ul {
display: flex;
justify-content: space-evenly;
font-size: var(--main-size);
font-family: var(--display-font);
}
/* NOTES */
.notes hr {
margin-top: var(--unit-size);
margin-bottom: var(--small-size);
}
.h-entry,
.note {
background-color: var(--translucent);
border-radius: var(--unit-size);
}
.note-info {
display: flex;
justify-content: space-between;
align-items: center;
border: solid 2px var(--bg2);
border-bottom: unset;
border-radius: var(--unit-size) var(--unit-size) 0 0;
background-color: var(--translucent);
font-size: var(--medium-size);
padding: 5px 10px 5px 10px;
}
.note-author {
font-family: var(--display-font);
font-size: var(--medium-size);
font-weight: bold;
display: flex;
align-items: center;
align-self: center;
}
.note-info .avatar {
width: auto;
height: var(--medium-size);
border-radius: var(--unit-size);
margin-right: 4px;
}
/* TODO: icons */
.note-actions {
display: flex;
vertical-align: middle;
}
.note-actions button {
margin-left: 5px;
}
.favourite-button-container {
width: 1em !important;
height: 1em !important;
}
.favourite-button-container button {
all: unset;
border: none !important;
width: inherit !important;
height: inherit !important;
background-size: cover !important;
-webkit-mask-image: url("../icons/heart.svg") !important;
-o-mask-image: url("../icons/heart.svg") !important;
-moz-mask-image: url("../icons/heart.svg") !important;
mask-image: url("../icons/heart.svg") !important;
}
.favourite-button-container button:hover,
.favourite-button-container button:focus {
border: none !important;
background: var(--bg3) !important;
}
.favourite-button-off {
background: var(--bg2) !important;
}
.favourite-button-on {
background: var(--white) !important;
}
.note-content {
border: solid 2px var(--bg2);
border-top: unset;
border-radius: 0 0 var(--unit-size) var(--unit-size);
padding: var(--small-size);
}
.note-content p {
padding-left: var(--small-size);
padding-right: var(--small-size);
}
.note-attachments {
display: flex;
max-width: 100%;
}
.note-attachments > figure {
display: flex;
flex-direction: column;
margin: 0;
border-radius: var(--unit-size);
background-color: var(--translucent);
padding: var(--small-size);
}
.note-attachments > figure figcaption {
display: flex;
padding-top: var(--small-size);
}
.note-attachments > figure img,
.note-attachments > figure video {
width: 100%;
height: auto;
}
/* SECTIONS */
.section-widget {
display: flex;
flex-direction: column;
width: 100%;
background-color: var(--translucent);
border-radius: var(--unit-size);
border: solid 2px var(--bg2);
font-family: var(--main-font);
font-weight: 400;
color: var(--white);
}
.section-title-details {
font-family: var(--display-font);
font-weight: 900;
font-size: var(--main-size);
border-radius: var(--unit-size);
padding: 5px 10px 5px 10px;
background-color: var(--translucent);
}
.section-title-details[open] svg {
transform: rotate(180deg);
animation: var(--fade-out)
}
/* SECTION DETAILS CLOSED */
.section-title-details:not([open]) svg {
transform: initial;
animation: var(--fade-in);
}
.section-title-summary {
display: flex;
justify-content: space-between;
}
.section-form {
padding: var(--unit-size);
}
.help-text {
font-style: italic;
font-size: var(--small-size);
}
.section-form-scope {
margin-left: 5px;
}
.section-form-options {
display: block !important;
margin-bottom: var(--unit-size);
}
.section-form-textarea {
border-radius: var(--unit-size);
background-color: var(--translucent);
color: var(--white);
width: 100%;
max-width: 100%;
height: calc(6 * var(--main-size));
border: 2px solid transparent;
margin-top: var(--unit-size);
margin-bottom: var(--unit-size);
padding: var(--unit-size);
resize: vertical;
}
/* BUTTONS AND INPUT SHENANIGANS */
label {
font-family: var(--display-font);
font-weight: bold;
}
button {
font-size: var(--small-size) !important;
font-family: var(--display-font) !important;
font-weight: bold !important;
background-image: linear-gradient(180deg, var(--bg2), transparent) !important;
color: var(--white) !important;
border: solid 2px var(--bg2) !important;
border-radius: var(--unit-size);
}
textarea,
input[type=text],
input[type=password],
input[type=email] {
font-size: inherit !important;
display: block;
position: relative;
color: var(--white);
padding: 5px 10px 5px 10px;
border: 2px solid var(--bg2);
border-radius: var(--unit-size);
background-color: var(--translucent);
}
textarea:hover,
textarea:focus {
border-color: var(--bg3) !important;
}
input[type=radio] {
border: solid 0.25em var(--bg2) !important;
background-color: var(--bg1) !important;
}
input:hover,
input:focus {
border-color: var(--bg3) !important;
}
input[type=radio]:checked {
background-color: var(--white) !important;
}
input[type=checkbox] {
background-color: var(--bg2) !important;
background-size: cover;
margin-left: 5px;
-webkit-mask-image: url("../icons/check-off.svg") !important;
-o-mask-image: url("../icons/check-off.svg") !important;
-moz-mask-image: url("../icons/check-off.svg") !important;
mask-image: url("../icons/check-off.svg") !important;
}
input[type=checkbox]:hover,
input[type=checkbox]:focus {
background-color: var(--bg3) !important;
}
input[type=checkbox]:checked {
background-color: var(--bg3) !important;
-webkit-mask-image: url("../icons/check-on.svg") !important;
-o-mask-image: url("../icons/check-on.svg") !important;
-moz-mask-image: url("../icons/check-on.svg") !important;
mask-image: url("../icons/check-on.svg") !important;
}
button:hover,
button:focus,
input:hover,
input:focus {
border-color: var(--bg3) !important;
color: var(--white) !important;
}
:is(:disabled, :disabled:active)::file-selector-button,
button:is(:disabled, :disabled:active),
input:is([type=reset], [type=button], [type=submit]):is(:disabled, :disabled:active),
select:is(:disabled, :disabled:active) > button {
color: var(--white) !important;
}
/* file selector */
input[type=file] {
font-family: var(--main-font) !important;
font-weight: normal !important;
background: linear-gradient(180deg, var(--bg2), transparent) !important;
border: 2px solid var(--bg2);
border-radius: var(--unit-size);
}
input[type=file]:focus,
input[type=file]:hover {
border: solid 2px var(--bg3) !important;
}
/* button part of file selector */
::file-selector-button {
font-family: var(--display-font) !important;
font-weight: bold !important;
color: var(--white) !important;
}
select {
font-family: var(--display-font) !important;
font-size: var(--small-size);
font-weight: normal !important;
background: linear-gradient(180deg, var(--bg2), transparent) !important;
color: var(--white);
border: 2px solid var(--bg2);
border-radius: var(--unit-size);
}
select:hover,
select:focus {
border-color: var(--bg3);
}
/* MEDIA QUERIES */
/* sidepanels need to be shown by default on desktop, hidden on mobile */
.panel .panel-content {
display: flex;
flex-direction: column;
font-size: var(--small-size);
/* should remain in place for the user */
position: fixed;
top: 0;
/* should be bellow header */
margin-top: 3rem;
/* should occupy the entire vertical real estate */
height: calc(100% - 3rem);
padding: var(--unit-size);
}
@media (min-width: 1200px) {
#panel-left-icon,
#panel-right-icon {
display: none;
}
.panel .panel-content {
width: 100%;
max-width: 20%;
}
a[id|="anchor"]:target + * {
animation-name: highlight;
animation-duration: 500ms;
animation-timing-function: ease-in-out;
}
}
@media (max-width: 1200px) {
/* content should occupy the entire width at this size */
.container {
margin-left: unset;
margin-right: unset;
}
.content {
max-width: 100%;
}
#panel-left-toggle:not(:checked) ~ .panel-content,
#panel-right-toggle:not(:checked) ~ .panel-content {
display: none;
}
#panel-left-toggle:checked ~ .panel-content,
#panel-right-toggle:checked ~ .panel-content,
a[id|="anchor"]:target ~ .panel-content {
display: flex !important;
width: 100%;
background-color: var(--bg2);
background-image: url(../images/bg.png);
background-position: center;
background-repeat: no-repeat;
background-size: 100% 100%;
}
}
.accessibility-menu {
position: absolute;
left: -1000px;
top: -1000px;
width: 1px;
height: 1px;
overflow: hidden;
z-index: 5000;
background-color: var(--bg1);
padding: var(--unit-size);
border: solid 2px var(--bg3);
border-radius: var(--unit-size);
box-shadow: var(--shadow);
}
.accessibility-menu ul {
list-style-type: disc;
}
#anchor-menu:target + .accessibility-menu,
.accessibility-menu:focus {
top: var(--unit-size) !important;
left: var(--unit-size) !important;
width: 30% !important;
height: min-content !important;
}
.anchor-hidden {
width: 1px;
height: 1px;
overflow: hidden;
}
/* ANIMATIONS */
@keyframes fadeIn {
0% {
opacity: 0;
transform: translateY(-10px);
}
100% {
opacity: unset;
transform: none;
}
}
@keyframes fadeOut {
100% {
opacity: 0;
transform: translateY(-10px);
}
0% {
opacity: unset;
transform: none;
}
}
@keyframes highlight {
0% {
box-shadow: initial;
border-radius: var(--unit-size);
}
50% {
border-radius: var(--unit-size);
box-shadow: inset 0 0 10px var(--white),
inset 10px 0 10px var(--bg3),
inset -10px 0 10px var(--bg2),
0 0 10px var(--white),
-10px 0 10px var(--bg3),
10px 0 10px var(--bg2);
}
100% {
box-shadow: initial;
border-radius: var(--unit-size);
}
}