Wrapper for GTS that adds custom CSS overrides, and a nixos service
commit
b44debed8c
@ -0,0 +1 @@
|
|||||||
|
result
|
@ -0,0 +1,136 @@
|
|||||||
|
|
||||||
|
:root {
|
||||||
|
--white1: #fafaff;
|
||||||
|
--white2: #b3b5c6;
|
||||||
|
--gray1: #2a2b2f;
|
||||||
|
--gray2: #35363b;
|
||||||
|
--gray3: #3a3b41;
|
||||||
|
--gray4: #45464e;
|
||||||
|
--gray5: #4d4e56;
|
||||||
|
--gray6: #575861;
|
||||||
|
--gray7: #5d5e67;
|
||||||
|
--gray8: #696a75;
|
||||||
|
--orange1: #fd6a00;
|
||||||
|
--orange2: #ff853e;
|
||||||
|
--blue1: #3a9fde;
|
||||||
|
--blue2: #66befe;
|
||||||
|
--blue3: #89caff;
|
||||||
|
--error1: #860000;
|
||||||
|
--error2: #ff9796;
|
||||||
|
--error3: #dd2c2c;
|
||||||
|
--error-link: #01318C;
|
||||||
|
--green1: #94E749;
|
||||||
|
--info-fg: var(--gray1);
|
||||||
|
--info-bg: #b3ddff;
|
||||||
|
--info-link: var(--error-link);
|
||||||
|
--fg: var(--white1);
|
||||||
|
--bg: var(--gray1);
|
||||||
|
--bg-trans: rgba(77, 78, 86, 0.62);
|
||||||
|
--bg-accent: var(--gray5);
|
||||||
|
--fg-accent: var(--blue3);
|
||||||
|
--fg-reduced: var(--white2);
|
||||||
|
--border-accent: var(--orange2);
|
||||||
|
--link-fg: var(--fg-accent);
|
||||||
|
--role-moderator: var(--orange1);
|
||||||
|
--role-admin: var(--blue2);
|
||||||
|
--button-bg: var(--blue2);
|
||||||
|
--button-fg: var(--gray1);
|
||||||
|
--button-hover-bg: var(--blue3);
|
||||||
|
--button-danger-bg: var(--error3);
|
||||||
|
--button-danger-fg: var(--white1);
|
||||||
|
--button-danger-hover-bg: var(--error2);
|
||||||
|
--toot-focus-bg: var(--gray5);
|
||||||
|
--toot-unfocus-bg: var(--gray2);
|
||||||
|
--toot-info-bg: var(--gray4);
|
||||||
|
--no-img-desc-bg: var(--orange1);
|
||||||
|
--no-img-desc-fg: var(--gray1);
|
||||||
|
--bg-sensitive: var(--gray1);
|
||||||
|
--boxshadow: 0 0.4rem 1rem -0.1rem rgba(0,0,0,0.15);
|
||||||
|
--boxshadow-border: 0.08rem solid var(--gray1);
|
||||||
|
--avatar-border: var(--orange2);
|
||||||
|
--input-bg: var(--gray4);
|
||||||
|
--input-disabled-bg: var(--gray2);
|
||||||
|
--input-border: var(--blue1);
|
||||||
|
--input-error-border: var(--error3);
|
||||||
|
--input-focus-border: var(--blue3);
|
||||||
|
--settings-nav-bg: var(--bg-accent);
|
||||||
|
--settings-nav-header-fg: var(--gray1);
|
||||||
|
--settings-nav-header-bg: var(--orange1);
|
||||||
|
--settings-nav-bg-hover: var(--gray3);
|
||||||
|
--settings-nav-bg-active: var(--gray2);
|
||||||
|
--error-fg: var(--error1);
|
||||||
|
--error-bg: var(--error2);
|
||||||
|
--list-entry-bg: var(--gray2);
|
||||||
|
--list-entry-alternate-bg: var(--gray3);
|
||||||
|
--list-entry-hover-bg: var(--gray4)
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ashe mods */
|
||||||
|
:root {
|
||||||
|
--avatar-border: #dfb9ff;
|
||||||
|
--bg: #33293a;
|
||||||
|
--fg-accent: #b143a0;
|
||||||
|
--bg-accent: #2a0933;
|
||||||
|
--toot-focus-bg: #3a273c;
|
||||||
|
--toot-unfocus-bg: #533f53;
|
||||||
|
--toot-info-bg: #482148;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
GoToSocial
|
||||||
|
Copyright (C) 2021-2023 GoToSocial Authors admin@gotosocial.org
|
||||||
|
|
||||||
|
This program is free software: you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU Affero General Public License as published by
|
||||||
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU Affero General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU Affero General Public License
|
||||||
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
This stylesheets defines (color) variables to be used by other stylesheets on the page
|
||||||
|
postcss-custom-prop-vars will transpile these to css --variables
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Color definitions */
|
||||||
|
|
||||||
|
/* Foreground */
|
||||||
|
|
||||||
|
/* default text color, contrast >= 5.0 with all $grays */
|
||||||
|
|
||||||
|
/* less important text, can be used with $gray1 (6.8), $gray2 (5.5), $gray3 (4.9), $gray4 (4.5) */
|
||||||
|
|
||||||
|
/* Background shades, contrast >= 5.0 with $white1 (#fafaff) */
|
||||||
|
|
||||||
|
/* Used for non-text accent colors, can be used as background: $gray1 for text color (contrast 4.6)*/
|
||||||
|
|
||||||
|
/* hover/selected accent to $orange1, can be used with $gray1 (5.7), $gray2 (4.6) */
|
||||||
|
|
||||||
|
/* darker blue for smaller elements (borders), can only be used with $gray1 (4.7) */
|
||||||
|
|
||||||
|
/* all-round accent color, can be used with $gray1 (6.8), $gray2 (5.5), $gray3 (4.9), $gray4 (4.5) */
|
||||||
|
|
||||||
|
/* hover/selected accent to $blue2, can be used with $gray1 (7.9), $gray2 (6.3), $gray3 (5.6), $gray4 (5.2), $gray5 (4.7) */
|
||||||
|
|
||||||
|
/* Error border/foreground text, can be used with $error2 (5.0), $white1 (10), $white2 (5.1) */
|
||||||
|
|
||||||
|
/* Error background text, can be used with $error1 (5.0), $gray1 (6.6), $gray2 (5.3), $gray3 (4.8) */
|
||||||
|
|
||||||
|
/* Error button background text, can be used with $white1 (4.51) */
|
||||||
|
|
||||||
|
/* Error link text, can be used with $error2 (5.56) */
|
||||||
|
|
||||||
|
/* Green for positive/confirmation, similar contrast (luminance) as $blue2 */
|
||||||
|
|
||||||
|
/* Color variables as used in a specific location */
|
||||||
|
|
||||||
|
/* $settings-nav-fg-hover: $gray1; */
|
||||||
|
|
||||||
|
/* $settings-nav-fg-active: $orange2; */
|
@ -0,0 +1,873 @@
|
|||||||
|
|
||||||
|
:root {
|
||||||
|
--br: 0;
|
||||||
|
--br-inner: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
GoToSocial
|
||||||
|
Copyright (C) 2021-2023 GoToSocial Authors admin@gotosocial.org
|
||||||
|
|
||||||
|
This program is free software: you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU Affero General Public License as published by
|
||||||
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU Affero General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU Affero General Public License
|
||||||
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*! modern-normalize v1.1.0 | MIT License | https://github.com/sindresorhus/modern-normalize */
|
||||||
|
|
||||||
|
/*
|
||||||
|
Document
|
||||||
|
========
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
Use a better box model (opinionated).
|
||||||
|
*/
|
||||||
|
|
||||||
|
*,
|
||||||
|
::before,
|
||||||
|
::after {
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Use a more readable tab size (opinionated).
|
||||||
|
*/
|
||||||
|
|
||||||
|
html {
|
||||||
|
-o-tab-size: 4;
|
||||||
|
tab-size: 4;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
1. Correct the line height in all browsers.
|
||||||
|
2. Prevent adjustments of font size after orientation changes in iOS.
|
||||||
|
*/
|
||||||
|
|
||||||
|
html {
|
||||||
|
line-height: 1.15; /* 1 */
|
||||||
|
-webkit-text-size-adjust: 100%; /* 2 */
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
Sections
|
||||||
|
========
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
Remove the margin in all browsers.
|
||||||
|
*/
|
||||||
|
|
||||||
|
body {
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Improve consistency of default fonts in all browsers. (https://github.com/sindresorhus/modern-normalize/issues/3)
|
||||||
|
*/
|
||||||
|
|
||||||
|
body {
|
||||||
|
font-family:
|
||||||
|
system-ui,
|
||||||
|
-apple-system, /* Firefox supports this but not yet `system-ui` */
|
||||||
|
'Segoe UI',
|
||||||
|
Roboto,
|
||||||
|
Helvetica,
|
||||||
|
Arial,
|
||||||
|
sans-serif,
|
||||||
|
'Apple Color Emoji',
|
||||||
|
'Segoe UI Emoji';
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
Grouping content
|
||||||
|
================
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
1. Add the correct height in Firefox.
|
||||||
|
2. Correct the inheritance of border color in Firefox. (https://bugzilla.mozilla.org/show_bug.cgi?id=190655)
|
||||||
|
*/
|
||||||
|
|
||||||
|
hr {
|
||||||
|
height: 0; /* 1 */
|
||||||
|
color: inherit; /* 2 */
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
Text-level semantics
|
||||||
|
====================
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
Add the correct text decoration in Chrome, Edge, and Safari.
|
||||||
|
*/
|
||||||
|
|
||||||
|
abbr[title] {
|
||||||
|
-webkit-text-decoration: underline dotted;
|
||||||
|
text-decoration: underline dotted;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Add the correct font weight in Edge and Safari.
|
||||||
|
*/
|
||||||
|
|
||||||
|
b,
|
||||||
|
strong {
|
||||||
|
font-weight: bolder;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
1. Improve consistency of default fonts in all browsers. (https://github.com/sindresorhus/modern-normalize/issues/3)
|
||||||
|
2. Correct the odd 'em' font sizing in all browsers.
|
||||||
|
*/
|
||||||
|
|
||||||
|
code,
|
||||||
|
kbd,
|
||||||
|
samp,
|
||||||
|
pre {
|
||||||
|
font-family:
|
||||||
|
ui-monospace,
|
||||||
|
SFMono-Regular,
|
||||||
|
Consolas,
|
||||||
|
'Liberation Mono',
|
||||||
|
Menlo,
|
||||||
|
monospace; /* 1 */
|
||||||
|
font-size: 1em; /* 2 */
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Add the correct font size in all browsers.
|
||||||
|
*/
|
||||||
|
|
||||||
|
small {
|
||||||
|
font-size: 80%;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Prevent 'sub' and 'sup' elements from affecting the line height in all browsers.
|
||||||
|
*/
|
||||||
|
|
||||||
|
sub,
|
||||||
|
sup {
|
||||||
|
font-size: 75%;
|
||||||
|
line-height: 0;
|
||||||
|
position: relative;
|
||||||
|
vertical-align: baseline;
|
||||||
|
}
|
||||||
|
|
||||||
|
sub {
|
||||||
|
bottom: -0.25em;
|
||||||
|
}
|
||||||
|
|
||||||
|
sup {
|
||||||
|
top: -0.5em;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
Tabular data
|
||||||
|
============
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
1. Remove text indentation from table contents in Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=999088, https://bugs.webkit.org/show_bug.cgi?id=201297)
|
||||||
|
2. Correct table border color inheritance in all Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=935729, https://bugs.webkit.org/show_bug.cgi?id=195016)
|
||||||
|
*/
|
||||||
|
|
||||||
|
table {
|
||||||
|
text-indent: 0; /* 1 */
|
||||||
|
border-color: inherit; /* 2 */
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
Forms
|
||||||
|
=====
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
1. Change the font styles in all browsers.
|
||||||
|
2. Remove the margin in Firefox and Safari.
|
||||||
|
*/
|
||||||
|
|
||||||
|
button,
|
||||||
|
input,
|
||||||
|
optgroup,
|
||||||
|
select,
|
||||||
|
textarea {
|
||||||
|
font-family: inherit; /* 1 */
|
||||||
|
font-size: 100%; /* 1 */
|
||||||
|
line-height: 1.15; /* 1 */
|
||||||
|
margin: 0; /* 2 */
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Remove the inheritance of text transform in Edge and Firefox.
|
||||||
|
1. Remove the inheritance of text transform in Firefox.
|
||||||
|
*/
|
||||||
|
|
||||||
|
button,
|
||||||
|
select { /* 1 */
|
||||||
|
text-transform: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Correct the inability to style clickable types in iOS and Safari.
|
||||||
|
*/
|
||||||
|
|
||||||
|
button,
|
||||||
|
[type='button'],
|
||||||
|
[type='reset'],
|
||||||
|
[type='submit'] {
|
||||||
|
-webkit-appearance: button;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Remove the inner border and padding in Firefox.
|
||||||
|
*/
|
||||||
|
|
||||||
|
::-moz-focus-inner {
|
||||||
|
border-style: none;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Restore the focus styles unset by the previous rule.
|
||||||
|
*/
|
||||||
|
|
||||||
|
:-moz-focusring {
|
||||||
|
outline: 1px dotted ButtonText;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Remove the additional ':invalid' styles in Firefox.
|
||||||
|
See: https://github.com/mozilla/gecko-dev/blob/2f9eacd9d3d995c937b4251a5557d95d494c9be1/layout/style/res/forms.css#L728-L737
|
||||||
|
*/
|
||||||
|
|
||||||
|
:-moz-ui-invalid {
|
||||||
|
box-shadow: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Remove the padding so developers are not caught out when they zero out 'fieldset' elements in all browsers.
|
||||||
|
*/
|
||||||
|
|
||||||
|
legend {
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Add the correct vertical alignment in Chrome and Firefox.
|
||||||
|
*/
|
||||||
|
|
||||||
|
progress {
|
||||||
|
vertical-align: baseline;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Correct the cursor style of increment and decrement buttons in Safari.
|
||||||
|
*/
|
||||||
|
|
||||||
|
::-webkit-inner-spin-button,
|
||||||
|
::-webkit-outer-spin-button {
|
||||||
|
height: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
1. Correct the odd appearance in Chrome and Safari.
|
||||||
|
2. Correct the outline style in Safari.
|
||||||
|
*/
|
||||||
|
|
||||||
|
[type='search'] {
|
||||||
|
-webkit-appearance: textfield; /* 1 */
|
||||||
|
outline-offset: -2px; /* 2 */
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Remove the inner padding in Chrome and Safari on macOS.
|
||||||
|
*/
|
||||||
|
|
||||||
|
::-webkit-search-decoration {
|
||||||
|
-webkit-appearance: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
1. Correct the inability to style clickable types in iOS and Safari.
|
||||||
|
2. Change font properties to 'inherit' in Safari.
|
||||||
|
*/
|
||||||
|
|
||||||
|
::-webkit-file-upload-button {
|
||||||
|
-webkit-appearance: button; /* 1 */
|
||||||
|
font: inherit; /* 2 */
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
Interactive
|
||||||
|
===========
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
Add the correct display in Chrome and Safari.
|
||||||
|
*/
|
||||||
|
|
||||||
|
summary {
|
||||||
|
display: list-item;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* noto-sans-regular - latin */
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: "Noto Sans";
|
||||||
|
font-weight: 400;
|
||||||
|
font-display: swap;
|
||||||
|
font-style: normal;
|
||||||
|
src: url('../fonts/noto-sans-v27-latin-regular.woff2') format('woff2'),
|
||||||
|
url('../fonts/noto-sans-v27-latin-regular.woff') format('woff');
|
||||||
|
}
|
||||||
|
|
||||||
|
/* noto-sans-700 - latin */
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: "Noto Sans";
|
||||||
|
font-weight: 700;
|
||||||
|
font-display: swap;
|
||||||
|
font-style: normal;
|
||||||
|
src: url('../fonts/noto-sans-v27-latin-700.woff2') format('woff2'),
|
||||||
|
url('../fonts/noto-sans-v27-latin-700.woff') format('woff');
|
||||||
|
}
|
||||||
|
|
||||||
|
/* standard border radius for nice squircles */
|
||||||
|
|
||||||
|
/* border radius for items that are framed/bordered
|
||||||
|
inside something with $br, eg avatar, header img */
|
||||||
|
|
||||||
|
html, body {
|
||||||
|
padding: 0;
|
||||||
|
margin: 0;
|
||||||
|
background: var(--bg);
|
||||||
|
color: var(--fg);
|
||||||
|
font-family: "Noto Sans", sans-serif;
|
||||||
|
scrollbar-color: var(--gray3);
|
||||||
|
}
|
||||||
|
|
||||||
|
body {
|
||||||
|
line-height: 1.5em;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hidden {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.page {
|
||||||
|
display: grid;
|
||||||
|
min-height: 100vh;
|
||||||
|
|
||||||
|
grid-template-columns: auto minmax(auto, 50rem) auto;
|
||||||
|
grid-template-columns: auto min(92%, 50rem) auto;
|
||||||
|
grid-template-rows: auto 1fr auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
h1 {
|
||||||
|
margin: 0;
|
||||||
|
line-height: 2.4rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
a {
|
||||||
|
color: var(--link-fg);
|
||||||
|
}
|
||||||
|
|
||||||
|
header, footer {
|
||||||
|
grid-column: 1 / span 3;
|
||||||
|
}
|
||||||
|
|
||||||
|
.content {
|
||||||
|
margin: 32px 0;
|
||||||
|
grid-column: 2;
|
||||||
|
align-self: start;
|
||||||
|
}
|
||||||
|
|
||||||
|
header {
|
||||||
|
display: none;
|
||||||
|
justify-content: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
header a {
|
||||||
|
margin: 2rem;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
}
|
||||||
|
|
||||||
|
header a img {
|
||||||
|
margin-bottom: 1rem;
|
||||||
|
align-self: center;
|
||||||
|
height: 6rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
header a div {
|
||||||
|
flex-grow: 1;
|
||||||
|
align-self: center;
|
||||||
|
display: flex;
|
||||||
|
}
|
||||||
|
|
||||||
|
header a div h1 {
|
||||||
|
word-wrap: anywhere;
|
||||||
|
align-self: center;
|
||||||
|
color: var(--fg);
|
||||||
|
}
|
||||||
|
|
||||||
|
.excerpt-top {
|
||||||
|
margin-top: -1rem;
|
||||||
|
margin-bottom: 2rem;
|
||||||
|
font-style: italic;
|
||||||
|
font-weight: normal;
|
||||||
|
text-align: center;
|
||||||
|
font-size: 1.2rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.excerpt-top .count {
|
||||||
|
font-weight: bold;
|
||||||
|
color: var(--fg-accent);
|
||||||
|
}
|
||||||
|
|
||||||
|
main section {
|
||||||
|
background: var(--bg-accent);
|
||||||
|
box-shadow: var(--boxshadow);
|
||||||
|
border: var(--boxshadow-border);
|
||||||
|
border-radius: var(--br);
|
||||||
|
padding: 2rem;
|
||||||
|
margin-bottom: 2rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
main p:first-child {
|
||||||
|
margin-top: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
main p:last-child {
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.button, button {
|
||||||
|
border-radius: 0.2rem;
|
||||||
|
color: var(--button-fg);
|
||||||
|
background: var(--button-bg);
|
||||||
|
box-shadow: var(--boxshadow);
|
||||||
|
border: var(--button-border);
|
||||||
|
text-decoration: none;
|
||||||
|
font-size: 1.2rem;
|
||||||
|
font-weight: bold;
|
||||||
|
padding: 0.5rem;
|
||||||
|
border: none;
|
||||||
|
cursor: pointer;
|
||||||
|
text-align: center;
|
||||||
|
font-family: 'Noto Sans', sans-serif;
|
||||||
|
}
|
||||||
|
|
||||||
|
.button.danger, button.danger {
|
||||||
|
color: var(--button-danger-fg);
|
||||||
|
background: var(--button-danger-bg);
|
||||||
|
}
|
||||||
|
|
||||||
|
.button.danger:hover, button.danger:hover {
|
||||||
|
background: var(--button-danger-hover-bg);
|
||||||
|
}
|
||||||
|
|
||||||
|
.button:disabled, button:disabled {
|
||||||
|
color: var(--white2);
|
||||||
|
background: var(--gray2);
|
||||||
|
cursor: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.button:disabled:hover, button:disabled:hover {
|
||||||
|
background: var(--gray3);
|
||||||
|
}
|
||||||
|
|
||||||
|
.button:hover, button:hover {
|
||||||
|
background: var(--button-hover-bg);
|
||||||
|
}
|
||||||
|
|
||||||
|
.nounderline {
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.accent {
|
||||||
|
color: var(--acc1);
|
||||||
|
}
|
||||||
|
|
||||||
|
.logo {
|
||||||
|
justify-self: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.logo img {
|
||||||
|
height: 30vh;
|
||||||
|
}
|
||||||
|
|
||||||
|
section.apps {
|
||||||
|
align-self: start;
|
||||||
|
}
|
||||||
|
|
||||||
|
section.apps .applist {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: 1fr 1fr;
|
||||||
|
grid-gap: 0.5rem;
|
||||||
|
align-content: start;
|
||||||
|
}
|
||||||
|
|
||||||
|
section.apps .applist .entry {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: 25% 1fr;
|
||||||
|
gap: 1.5rem;
|
||||||
|
padding: 0.5rem;
|
||||||
|
background: var(--bg-accent);
|
||||||
|
border-radius: 0.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
section.apps .applist .entry .logo {
|
||||||
|
align-self: center;
|
||||||
|
width: 100%;
|
||||||
|
-o-object-fit: contain;
|
||||||
|
object-fit: contain;
|
||||||
|
flex: 1 1 auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
section.apps .applist .entry .logo.redraw {
|
||||||
|
fill: var(--fg);
|
||||||
|
stroke: var(--fg);
|
||||||
|
}
|
||||||
|
|
||||||
|
section.apps .applist .entry a {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
section.apps .applist .entry div {
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
section.apps .applist .entry div h3 {
|
||||||
|
margin-top: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
section.login form {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
gap: 1rem;
|
||||||
|
|
||||||
|
|
||||||
|
padding-bottom: 1rem;
|
||||||
|
padding-top: 1rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
section.login form label, section.login form input {
|
||||||
|
padding-left: 0.2rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
section.login form .labelinput {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
gap: 0.4rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
section.login form .btn {
|
||||||
|
margin-top: 1rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
section.error {
|
||||||
|
word-break: break-word;
|
||||||
|
margin-bottom: 0.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
section.error pre {
|
||||||
|
border: 1px solid #ff000080;
|
||||||
|
padding: 0.5rem;
|
||||||
|
border-radius: 0.5em;
|
||||||
|
background-color: #ff000010;
|
||||||
|
font-size: 1.3em;
|
||||||
|
white-space: pre-wrap;
|
||||||
|
}
|
||||||
|
|
||||||
|
section.oob-token code {
|
||||||
|
background: var(--gray1);
|
||||||
|
padding: 0.5rem;
|
||||||
|
margin: 0;
|
||||||
|
border-radius: 0.3rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.error-text {
|
||||||
|
color: var(--error1);
|
||||||
|
background: var(--error2);
|
||||||
|
border-radius: 0.1rem;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
input, select, textarea, .input {
|
||||||
|
box-sizing: border-box;
|
||||||
|
border: 0.15rem solid var(--input-border);
|
||||||
|
border-radius: 0.1rem;
|
||||||
|
color: var(--fg);
|
||||||
|
background: var(--input-bg);
|
||||||
|
width: 100%;
|
||||||
|
font-family: 'Noto Sans', sans-serif;
|
||||||
|
font-size: 1rem;
|
||||||
|
padding: 0.3rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
input:focus, input:active, select:focus, select:active, textarea:focus, textarea:active, .input:focus, .input:active {
|
||||||
|
border-color: var(--input-focus-border);
|
||||||
|
}
|
||||||
|
|
||||||
|
input:invalid, .invalid input, select:invalid, .invalid select, textarea:invalid, .invalid textarea, .input:invalid, .invalid .input {
|
||||||
|
border-color: var(--input-error-border);
|
||||||
|
}
|
||||||
|
|
||||||
|
input:disabled, select:disabled, textarea:disabled, .input:disabled {
|
||||||
|
background: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
::-webkit-input-placeholder {
|
||||||
|
opacity: 1;
|
||||||
|
color: var(--fg-reduced)
|
||||||
|
}
|
||||||
|
|
||||||
|
::placeholder {
|
||||||
|
opacity: 1;
|
||||||
|
color: var(--fg-reduced)
|
||||||
|
}
|
||||||
|
|
||||||
|
hr {
|
||||||
|
color: transparent;
|
||||||
|
width: 100%;
|
||||||
|
border-bottom: 0.02rem solid var(--border-accent);
|
||||||
|
}
|
||||||
|
|
||||||
|
footer {
|
||||||
|
align-self: end;
|
||||||
|
padding: 2rem 0 1rem 0;
|
||||||
|
|
||||||
|
display: none;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
justify-content: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
footer div {
|
||||||
|
text-align: center;
|
||||||
|
padding: 1rem;
|
||||||
|
flex-grow: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
footer a {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media screen and (max-width: 600px) {
|
||||||
|
header {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
footer {
|
||||||
|
grid-template-columns: 1fr;
|
||||||
|
}
|
||||||
|
|
||||||
|
footer div {
|
||||||
|
text-align: initial;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
section.apps .applist {
|
||||||
|
grid-template-columns: 1fr;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.emoji {
|
||||||
|
width: 1.45em;
|
||||||
|
height: 1.45em;
|
||||||
|
margin: -0.2em 0.02em 0;
|
||||||
|
-o-object-fit: contain;
|
||||||
|
object-fit: contain;
|
||||||
|
vertical-align: middle;
|
||||||
|
}
|
||||||
|
|
||||||
|
.monospace {
|
||||||
|
font-family: monospace;
|
||||||
|
}
|
||||||
|
|
||||||
|
.callout {
|
||||||
|
margin: 1.5rem 0;
|
||||||
|
border: .05rem solid var(--border-accent);
|
||||||
|
border-radius: .2rem;
|
||||||
|
padding: 0 .6rem .6rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.callout .callout-title {
|
||||||
|
margin: 0 -.6rem;
|
||||||
|
padding: .6rem;
|
||||||
|
font-weight: bold;
|
||||||
|
background-color: var(--border-accent);
|
||||||
|
color: var(--gray1);
|
||||||
|
}
|
||||||
|
|
||||||
|
label {
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (prefers-reduced-motion) {
|
||||||
|
.fa-spin {
|
||||||
|
-webkit-animation: none;
|
||||||
|
animation: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.text-cutoff {
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
overflow: hidden;
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
|
||||||
|
.list {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
}
|
||||||
|
|
||||||
|
.list .header, .list .entry {
|
||||||
|
padding: 0.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.list .header {
|
||||||
|
border: 0.1rem solid transparent !important; /* for alignment with .entry border padding */
|
||||||
|
background: var(--gray1) !important;
|
||||||
|
display: flex;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
.list .entries {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
}
|
||||||
|
|
||||||
|
.list .entries.scrolling {
|
||||||
|
height: 20rem;
|
||||||
|
max-height: 20rem;
|
||||||
|
overflow: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.list input[type=checkbox] {
|
||||||
|
margin-left: 0.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.list .entry {
|
||||||
|
display: flex;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
background: var(--list-entry-bg);
|
||||||
|
border: 0.1rem solid transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
.list .entry:nth-child(even) {
|
||||||
|
background: var(--list-entry-alternate-bg);
|
||||||
|
}
|
||||||
|
|
||||||
|
.list .entry:hover {
|
||||||
|
background: var(--list-entry-hover-bg);
|
||||||
|
}
|
||||||
|
|
||||||
|
.list .entry:active, .list .entry:focus, .list .entry:hover, .list .entry:target {
|
||||||
|
border-color: var(--fg-accent);
|
||||||
|
}
|
||||||
|
|
||||||
|
.domain-blocklist {
|
||||||
|
box-shadow: var(--boxshadow);
|
||||||
|
}
|
||||||
|
|
||||||
|
.domain-blocklist .entry {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: max(30%, 10rem) 1fr;
|
||||||
|
gap: 0.5rem;
|
||||||
|
align-items: start;
|
||||||
|
border: var(--boxshadow-border);
|
||||||
|
border-top-color: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
.domain-blocklist .entry > div {
|
||||||
|
display: flex;
|
||||||
|
align-items: center
|
||||||
|
}
|
||||||
|
|
||||||
|
.domain-blocklist .entry .domain a {
|
||||||
|
font-weight: bold;
|
||||||
|
text-decoration: none;
|
||||||
|
display: inline-block; /* so it wraps properly */
|
||||||
|
}
|
||||||
|
|
||||||
|
.domain-blocklist .entry .public_comment p {
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.domain-blocklist .header .domain {
|
||||||
|
color: var(--fg);
|
||||||
|
}
|
||||||
|
|
||||||
|
.about {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
gap: 1rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.about h2 {
|
||||||
|
margin: 0.5rem 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.about ul {
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.about .contact-account-card {
|
||||||
|
/* display: inline-grid;
|
||||||
|
grid-template-columns: 4rem auto;
|
||||||
|
grid-template-rows: 4rem;
|
||||||
|
gap: 1rem;
|
||||||
|
padding: 0.5rem; */
|
||||||
|
display: inline-grid;
|
||||||
|
grid-template-columns: auto 1fr;
|
||||||
|
grid-template-rows: auto auto;
|
||||||
|
text-decoration: none;
|
||||||
|
gap: 0.5rem 1rem;
|
||||||
|
border-radius: var(--br);
|
||||||
|
padding: 0.5rem;
|
||||||
|
min-width: 40%;
|
||||||
|
margin-bottom: 0.3rem;
|
||||||
|
|
||||||
|
background: var(--list-entry-bg);
|
||||||
|
}
|
||||||
|
|
||||||
|
.about .contact-account-card:hover {
|
||||||
|
background: var(--list-entry-alternate-bg);
|
||||||
|
}
|
||||||
|
|
||||||
|
.about .contact-account-card h3 {
|
||||||
|
align-self: end;
|
||||||
|
margin: 0;
|
||||||
|
color: var(--fg);
|
||||||
|
}
|
||||||
|
|
||||||
|
.about .contact-account-card img.avatar {
|
||||||
|
border-radius: 0.5rem;
|
||||||
|
width: 5rem;
|
||||||
|
height: 5rem;
|
||||||
|
-o-object-fit: cover;
|
||||||
|
object-fit: cover;
|
||||||
|
grid-row: 1 / span 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media screen and (max-width: 30rem) {
|
||||||
|
.domain-blocklist .entry {
|
||||||
|
grid-template-columns: 1fr;
|
||||||
|
gap: 0;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,296 @@
|
|||||||
|
|
||||||
|
/*
|
||||||
|
GoToSocial
|
||||||
|
Copyright (C) 2021-2023 GoToSocial Authors admin@gotosocial.org
|
||||||
|
|
||||||
|
This program is free software: you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU Affero General Public License as published by
|
||||||
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU Affero General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU Affero General Public License
|
||||||
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
header a img {
|
||||||
|
height: 5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
main {
|
||||||
|
background: transparent;
|
||||||
|
padding-top: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.profile {
|
||||||
|
background: #2a0933;
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: 100%;
|
||||||
|
gap: 0.5rem;
|
||||||
|
margin-bottom: 0.2rem;
|
||||||
|
overflow-x: hidden;
|
||||||
|
position: relative;
|
||||||
|
|
||||||
|
border-radius: var(--br);
|
||||||
|
box-shadow: var(--boxshadow);
|
||||||
|
border: var(--boxshadow-border);
|
||||||
|
}
|
||||||
|
|
||||||
|
.profile .headerimage {
|
||||||
|
width: 100%;
|
||||||
|
aspect-ratio: 3 / 1;
|
||||||
|
max-height: 16rem;
|
||||||
|
overflow: hidden;
|
||||||
|
box-shadow: var(--boxshadow);
|
||||||
|
}
|
||||||
|
|
||||||
|
.profile .headerimage img {
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
-o-object-fit: cover;
|
||||||
|
object-fit: cover;
|
||||||
|
border-radius: var(--br-inner) var(--br-inner) 0 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.profile .basic {
|
||||||
|
height: 8.5rem;
|
||||||
|
margin-top: -6.5rem;
|
||||||
|
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: 1rem 8.5rem 1fr;
|
||||||
|
grid-template-rows: 3rem 3rem 2.5rem;
|
||||||
|
|
||||||
|
grid-template-areas:
|
||||||
|
". avatar ."
|
||||||
|
"filler2 avatar displayname"
|
||||||
|
". avatar username";
|
||||||
|
}
|
||||||
|
|
||||||
|
.profile .basic #profile-basic-filler2 {
|
||||||
|
grid-area: filler2;
|
||||||
|
background: var(--bg-trans);
|
||||||
|
}
|
||||||
|
|
||||||
|
.profile .basic .avatar {
|
||||||
|
align-self: end;
|
||||||
|
box-sizing: border-box;
|
||||||
|
height: 8.5rem;
|
||||||
|
width: 8.5rem;
|
||||||
|
grid-area: avatar;
|
||||||
|
background: var(--bg);
|
||||||
|
border: 0.2rem solid var(--avatar-border);
|
||||||
|
padding: 0;
|
||||||
|
border-radius: var(--br);
|
||||||
|
position: relative;
|
||||||
|
|
||||||
|
box-shadow: var(--boxshadow);
|
||||||
|
}
|
||||||
|
|
||||||
|
.profile .basic .avatar img {
|
||||||
|
-o-object-fit: cover;
|
||||||
|
object-fit: cover;
|
||||||
|
border-radius: var(--br-inner);
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.profile .basic a, .profile .basic div {
|
||||||
|
color: inherit;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.profile .basic .displayname {
|
||||||
|
grid-area: displayname;
|
||||||
|
font-weight: bold;
|
||||||
|
font-size: 2rem;
|
||||||
|
line-height: 3rem;
|
||||||
|
background: var(--bg-trans);
|
||||||
|
word-break: break-all;
|
||||||
|
white-space: nowrap;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
overflow: hidden;
|
||||||
|
max-height: 6rem;
|
||||||
|
padding: 0 0.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.profile .basic .usernamecontainer {
|
||||||
|
height: 2.5rem;
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: auto 1fr;
|
||||||
|
grid-area: username;
|
||||||
|
/* justify-content: space-between; */
|
||||||
|
padding: 0;
|
||||||
|
gap: 0.5rem;
|
||||||
|
position: relative;
|
||||||
|
|
||||||
|
color: var(--fg-accent);
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
.profile .basic .usernamecontainer .username {
|
||||||
|
white-space: nowrap;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
overflow: hidden;
|
||||||
|
-webkit-user-select: all;
|
||||||
|
user-select: all;
|
||||||
|
|
||||||
|
line-height: 2.5rem;
|
||||||
|
padding-left: 0;
|
||||||
|
margin-left: 0.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.profile .basic .usernamecontainer .role {
|
||||||
|
justify-self: start;
|
||||||
|
align-self: center;
|
||||||
|
line-height: 1.1rem;
|
||||||
|
font-size: 0.9rem;
|
||||||
|
margin-right: 0.2rem;
|
||||||
|
padding: 0.2rem;
|
||||||
|
margin-top: 0.1rem;
|
||||||
|
padding-top: 0.1rem;
|
||||||
|
border: 0.1rem solid var(--gray1);
|
||||||
|
border-radius: var(--br);
|
||||||
|
font-variant: small-caps;
|
||||||
|
}
|
||||||
|
|
||||||
|
.profile .basic .usernamecontainer .role.admin {
|
||||||
|
background: var(--gray1);
|
||||||
|
color: var(--orange2);
|
||||||
|
border-color: var(--orange2);
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.profile .basic .usernamecontainer .role.moderator {
|
||||||
|
background: var(--gray1);
|
||||||
|
color: var(--blue2);
|
||||||
|
border-color: var(--blue1);
|
||||||
|
}
|
||||||
|
|
||||||
|
@media screen and (max-width: 600px) {
|
||||||
|
.profile {
|
||||||
|
gap: 0.1rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.profile .basic {
|
||||||
|
margin-top: calc(-22vw + 1rem);
|
||||||
|
height: initial;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
}
|
||||||
|
|
||||||
|
.profile .basic #profile-basic-filler2 {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.profile .basic .avatar {
|
||||||
|
align-self: flex-start;
|
||||||
|
margin-left: 1rem;
|
||||||
|
height: 22vw;
|
||||||
|
width: 22vw;
|
||||||
|
}
|
||||||
|
|
||||||
|
.profile .basic .displayname {
|
||||||
|
padding-left: 1rem;
|
||||||
|
font-size: 1.5rem;
|
||||||
|
line-height: 2rem;
|
||||||
|
margin-top: 0.5rem;
|
||||||
|
align-self: stretch;
|
||||||
|
}
|
||||||
|
|
||||||
|
.profile .basic .usernamecontainer {
|
||||||
|
padding-left: 1rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.profile .basic .usernamecontainer .username {
|
||||||
|
margin-left: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.profile .detailed {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
flex: 1 1 25em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.profile .detailed h2 {
|
||||||
|
margin-top: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.profile .detailed .bio {
|
||||||
|
margin-top: 0;
|
||||||
|
margin-bottom: 0.5rem;
|
||||||
|
margin-left: 1rem;
|
||||||
|
margin-right: 1rem;
|
||||||
|
word-break: break-word;
|
||||||
|
}
|
||||||
|
|
||||||
|
.profile .detailed .bio a {
|
||||||
|
color: var(--acc1);
|
||||||
|
text-decoration: underline;
|
||||||
|
}
|
||||||
|
|
||||||
|
.accountstats {
|
||||||
|
display: flex;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
border-radius: 0 0 var(--br) var(--br);
|
||||||
|
border-top: 0.1rem solid var(--bg);
|
||||||
|
}
|
||||||
|
|
||||||
|
.accountstats .entry-group {
|
||||||
|
flex: 1 1 auto;
|
||||||
|
min-width: 50%;
|
||||||
|
display: flex;
|
||||||
|
}
|
||||||
|
|
||||||
|
.accountstats .entry {
|
||||||
|
white-space: nowrap;
|
||||||
|
width: 50%;
|
||||||
|
margin: 1.2rem 0.5rem;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.nothinghere {
|
||||||
|
margin-left: 1rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.backnextlinks {
|
||||||
|
display: flex;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
justify-content: space-between;
|
||||||
|
}
|
||||||
|
|
||||||
|
.backnextlinks a {
|
||||||
|
padding: 1rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.backnextlinks .next {
|
||||||
|
margin-left: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.toot, .toot:last-child {
|
||||||
|
box-shadow: var(--boxshadow);
|
||||||
|
}
|
||||||
|
|
||||||
|
#recent {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: row;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: space-between;
|
||||||
|
margin: 1rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
#recent .rss-icon {
|
||||||
|
font-size: 1.45em;
|
||||||
|
-o-object-fit: contain;
|
||||||
|
object-fit: contain;
|
||||||
|
vertical-align: middle;
|
||||||
|
color: var(--orange2);
|
||||||
|
/* can't size a single-color background, so we use a linear-gradient that's effectively white */
|
||||||
|
background: linear-gradient(to right, var(--white1) 100%, transparent 0) no-repeat center center;
|
||||||
|
background-size: 1.2rem 1.4rem;
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,943 @@
|
|||||||
|
|
||||||
|
/*
|
||||||
|
GoToSocial
|
||||||
|
Copyright (C) 2021-2023 GoToSocial Authors admin@gotosocial.org
|
||||||
|
|
||||||
|
This program is free software: you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU Affero General Public License as published by
|
||||||
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU Affero General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU Affero General Public License
|
||||||
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*! PhotoSwipe main CSS by Dmytro Semenov | photoswipe.com */
|
||||||
|
|
||||||
|
.pswp {
|
||||||
|
--pswp-bg: #000;
|
||||||
|
--pswp-placeholder-bg: #222;
|
||||||
|
|
||||||
|
|
||||||
|
--pswp-root-z-index: 100000;
|
||||||
|
|
||||||
|
--pswp-preloader-color: rgba(79, 79, 79, 0.4);
|
||||||
|
--pswp-preloader-color-secondary: rgba(255, 255, 255, 0.9);
|
||||||
|
|
||||||
|
/* defined via js:
|
||||||
|
--pswp-transition-duration: 333ms; */
|
||||||
|
|
||||||
|
--pswp-icon-color: #fff;
|
||||||
|
--pswp-icon-color-secondary: #4f4f4f;
|
||||||
|
--pswp-icon-stroke-color: #4f4f4f;
|
||||||
|
--pswp-icon-stroke-width: 2px;
|
||||||
|
|
||||||
|
--pswp-error-text-color: var(--pswp-icon-color);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
Styles for basic PhotoSwipe (pswp) functionality (sliding area, open/close transitions)
|
||||||
|
*/
|
||||||
|
|
||||||
|
.pswp {
|
||||||
|
position: fixed;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
z-index: var(--pswp-root-z-index);
|
||||||
|
display: none;
|
||||||
|
touch-action: none;
|
||||||
|
outline: 0;
|
||||||
|
opacity: 0.003;
|
||||||
|
contain: layout style size;
|
||||||
|
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Prevents focus outline on the root element,
|
||||||
|
(it may be focused initially) */
|
||||||
|
|
||||||
|
.pswp:focus {
|
||||||
|
outline: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pswp * {
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pswp img {
|
||||||
|
max-width: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pswp--open {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pswp,
|
||||||
|
.pswp__bg {
|
||||||
|
-webkit-transform: translateZ(0);
|
||||||
|
transform: translateZ(0);
|
||||||
|
will-change: opacity;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pswp__bg {
|
||||||
|
opacity: 0.005;
|
||||||
|
background: var(--pswp-bg);
|
||||||
|
}
|
||||||
|
|
||||||
|
.pswp,
|
||||||
|
.pswp__scroll-wrap {
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pswp__scroll-wrap,
|
||||||
|
.pswp__bg,
|
||||||
|
.pswp__container,
|
||||||
|
.pswp__item,
|
||||||
|
.pswp__content,
|
||||||
|
.pswp__img,
|
||||||
|
.pswp__zoom-wrap {
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pswp__img,
|
||||||
|
.pswp__zoom-wrap {
|
||||||
|
width: auto;
|
||||||
|
height: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pswp--click-to-zoom.pswp--zoom-allowed .pswp__img {
|
||||||
|
cursor: zoom-in;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pswp--click-to-zoom.pswp--zoomed-in .pswp__img {
|
||||||
|
cursor: move;
|
||||||
|
cursor: grab;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pswp--click-to-zoom.pswp--zoomed-in .pswp__img:active {
|
||||||
|
cursor: grabbing;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* :active to override grabbing cursor */
|
||||||
|
|
||||||
|
.pswp--no-mouse-drag.pswp--zoomed-in .pswp__img,
|
||||||
|
.pswp--no-mouse-drag.pswp--zoomed-in .pswp__img:active,
|
||||||
|
.pswp__img {
|
||||||
|
cursor: zoom-out;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Prevent selection and tap highlights */
|
||||||
|
|
||||||
|
.pswp__container,
|
||||||
|
.pswp__img,
|
||||||
|
.pswp__button,
|
||||||
|
.pswp__counter {
|
||||||
|
-webkit-user-select: none;
|
||||||
|
user-select: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pswp__item {
|
||||||
|
/* z-index for fade transition */
|
||||||
|
z-index: 1;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pswp__hidden {
|
||||||
|
display: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Allow to click through pswp__content element, but not its children */
|
||||||
|
|
||||||
|
.pswp__content {
|
||||||
|
pointer-events: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pswp__content > * {
|
||||||
|
pointer-events: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
|
||||||
|
PhotoSwipe UI
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
Error message appears when image is not loaded
|
||||||
|
(JS option errorMsg controls markup)
|
||||||
|
*/
|
||||||
|
|
||||||
|
.pswp__error-msg-container {
|
||||||
|
display: grid;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pswp__error-msg {
|
||||||
|
margin: auto;
|
||||||
|
font-size: 1em;
|
||||||
|
line-height: 1;
|
||||||
|
color: var(--pswp-error-text-color);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
class pswp__hide-on-close is applied to elements that
|
||||||
|
should hide (for example fade out) when PhotoSwipe is closed
|
||||||
|
and show (for example fade in) when PhotoSwipe is opened
|
||||||
|
*/
|
||||||
|
|
||||||
|
.pswp .pswp__hide-on-close {
|
||||||
|
opacity: 0.005;
|
||||||
|
will-change: opacity;
|
||||||
|
transition: opacity var(--pswp-transition-duration) cubic-bezier(0.4, 0, 0.22, 1);
|
||||||
|
z-index: 10; /* always overlap slide content */
|
||||||
|
pointer-events: none; /* hidden elements should not be clickable */
|
||||||
|
}
|
||||||
|
|
||||||
|
/* class pswp--ui-visible is added when opening or closing transition starts */
|
||||||
|
|
||||||
|
.pswp--ui-visible .pswp__hide-on-close {
|
||||||
|
opacity: 1;
|
||||||
|
pointer-events: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* <button> styles, including css reset */
|
||||||
|
|
||||||
|
.pswp__button {
|
||||||
|
position: relative;
|
||||||
|
display: block;
|
||||||
|
width: 50px;
|
||||||
|
height: 60px;
|
||||||
|
padding: 0;
|
||||||
|
margin: 0;
|
||||||
|
overflow: hidden;
|
||||||
|
cursor: pointer;
|
||||||
|
background: none;
|
||||||
|
border: 0;
|
||||||
|
box-shadow: none;
|
||||||
|
opacity: 0.85;
|
||||||
|
-webkit-appearance: none;
|
||||||
|
-webkit-touch-callout: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pswp__button:hover,
|
||||||
|
.pswp__button:active,
|
||||||
|
.pswp__button:focus {
|
||||||
|
transition: none;
|
||||||
|
padding: 0;
|
||||||
|
background: none;
|
||||||
|
border: 0;
|
||||||
|
box-shadow: none;
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pswp__button:disabled {
|
||||||
|
opacity: 0.3;
|
||||||
|
cursor: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pswp__icn {
|
||||||
|
fill: var(--pswp-icon-color);
|
||||||
|
color: var(--pswp-icon-color-secondary);
|
||||||
|
}
|
||||||
|
|
||||||
|
.pswp__icn {
|
||||||
|
position: absolute;
|
||||||
|
top: 14px;
|
||||||
|
left: 9px;
|
||||||
|
width: 32px;
|
||||||
|
height: 32px;
|
||||||
|
overflow: hidden;
|
||||||
|
pointer-events: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pswp__icn-shadow {
|
||||||
|
stroke: var(--pswp-icon-stroke-color);
|
||||||
|
stroke-width: var(--pswp-icon-stroke-width);
|
||||||
|
fill: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pswp__icn:focus {
|
||||||
|
outline: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
div element that matches size of large image,
|
||||||
|
large image loads on top of it,
|
||||||
|
used when msrc is not provided
|
||||||
|
*/
|
||||||
|
|
||||||
|
div.pswp__img--placeholder,
|
||||||
|
.pswp__img--with-bg {
|
||||||
|
background: var(--pswp-placeholder-bg);
|
||||||
|
}
|
||||||
|
|
||||||
|
.pswp__top-bar {
|
||||||
|
position: absolute;
|
||||||
|
left: 0;
|
||||||
|
top: 0;
|
||||||
|
width: 100%;
|
||||||
|
height: 60px;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: row;
|
||||||
|
justify-content: flex-end;
|
||||||
|
z-index: 10;
|
||||||
|
|
||||||
|
/* allow events to pass through top bar itself */
|
||||||
|
pointer-events: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pswp__top-bar > * {
|
||||||
|
pointer-events: auto;
|
||||||
|
/* this makes transition significantly more smooth,
|
||||||
|
even though inner elements are not animated */
|
||||||
|
will-change: opacity;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
|
||||||
|
Close button
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
.pswp__button--close {
|
||||||
|
margin-right: 6px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
|
||||||
|
Arrow buttons
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
.pswp__button--arrow {
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
width: 75px;
|
||||||
|
height: 100px;
|
||||||
|
top: 50%;
|
||||||
|
margin-top: -50px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pswp__button--arrow:disabled {
|
||||||
|
display: none;
|
||||||
|
cursor: default;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pswp__button--arrow .pswp__icn {
|
||||||
|
top: 50%;
|
||||||
|
margin-top: -30px;
|
||||||
|
width: 60px;
|
||||||
|
height: 60px;
|
||||||
|
background: none;
|
||||||
|
border-radius: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pswp--one-slide .pswp__button--arrow {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* hide arrows on touch screens */
|
||||||
|
|
||||||
|
.pswp--touch .pswp__button--arrow {
|
||||||
|
visibility: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* show arrows only after mouse was used */
|
||||||
|
|
||||||
|
.pswp--has_mouse .pswp__button--arrow {
|
||||||
|
visibility: visible;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pswp__button--arrow--prev {
|
||||||
|
right: auto;
|
||||||
|
left: 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pswp__button--arrow--next {
|
||||||
|
right: 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pswp__button--arrow--next .pswp__icn {
|
||||||
|
left: auto;
|
||||||
|
right: 14px;
|
||||||
|
/* flip horizontally */
|
||||||
|
-webkit-transform: scale(-1, 1);
|
||||||
|
transform: scale(-1, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
|
||||||
|
Zoom button
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
.pswp__button--zoom {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pswp--zoom-allowed .pswp__button--zoom {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* "+" => "-" */
|
||||||
|
|
||||||
|
.pswp--zoomed-in .pswp__zoom-icn-bar-v {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
|
||||||
|
Loading indicator
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
.pswp__preloader {
|
||||||
|
position: relative;
|
||||||
|
overflow: hidden;
|
||||||
|
width: 50px;
|
||||||
|
height: 60px;
|
||||||
|
margin-right: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pswp__preloader .pswp__icn {
|
||||||
|
opacity: 0;
|
||||||
|
transition: opacity 0.2s linear;
|
||||||
|
-webkit-animation: pswp-clockwise 600ms linear infinite;
|
||||||
|
animation: pswp-clockwise 600ms linear infinite;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pswp__preloader--active .pswp__icn {
|
||||||
|
opacity: 0.85;
|
||||||
|
}
|
||||||
|
|
||||||
|
@-webkit-keyframes pswp-clockwise {
|
||||||
|
0% { -webkit-transform: rotate(0deg); transform: rotate(0deg); }
|
||||||
|
100% { -webkit-transform: rotate(360deg); transform: rotate(360deg); }
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes pswp-clockwise {
|
||||||
|
0% { -webkit-transform: rotate(0deg); transform: rotate(0deg); }
|
||||||
|
100% { -webkit-transform: rotate(360deg); transform: rotate(360deg); }
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
|
||||||
|
"1 of 10" counter
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
.pswp__counter {
|
||||||
|
height: 30px;
|
||||||
|
margin: 15px 0 0 20px;
|
||||||
|
font-size: 14px;
|
||||||
|
line-height: 30px;
|
||||||
|
color: var(--pswp-icon-color);
|
||||||
|
text-shadow: 1px 1px 3px var(--pswp-icon-color-secondary);
|
||||||
|
opacity: 0.85;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pswp--one-slide .pswp__counter {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pswp__dynamic-caption {
|
||||||
|
color: #fff;
|
||||||
|
position: absolute;
|
||||||
|
width: 100%;
|
||||||
|
left: 0;
|
||||||
|
top: 0;
|
||||||
|
transition: opacity 120ms linear !important; /* override default */
|
||||||
|
}
|
||||||
|
|
||||||
|
.pswp-caption-content {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pswp__dynamic-caption a {
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pswp__dynamic-caption--faded {
|
||||||
|
opacity: 0 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pswp__dynamic-caption--aside {
|
||||||
|
width: auto;
|
||||||
|
max-width: 300px;
|
||||||
|
padding: 20px 15px 20px 20px;
|
||||||
|
margin-top: 70px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pswp__dynamic-caption--below {
|
||||||
|
width: auto;
|
||||||
|
max-width: 700px;
|
||||||
|
padding: 15px 0 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pswp__dynamic-caption--on-hor-edge {
|
||||||
|
padding-left: 15px;
|
||||||
|
padding-right: 15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pswp__dynamic-caption--mobile {
|
||||||
|
width: 100%;
|
||||||
|
background: rgba(0,0,0,0.5);
|
||||||
|
padding: 10px 15px;
|
||||||
|
|
||||||
|
right: 0;
|
||||||
|
bottom: 0;
|
||||||
|
|
||||||
|
/* override styles that were set via JS.
|
||||||
|
as they interfere with size measurement */
|
||||||
|
top: auto !important;
|
||||||
|
left: 0 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
main {
|
||||||
|
background: transparent;
|
||||||
|
grid-auto-rows: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.thread {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
border-radius: var(--br);
|
||||||
|
}
|
||||||
|
|
||||||
|
.toot {
|
||||||
|
background: var(--toot-unfocus-bg);
|
||||||
|
box-shadow: var(--boxshadow);
|
||||||
|
border: var(--boxshadow-border);
|
||||||
|
position: relative;
|
||||||
|
margin-bottom: var(--br);
|
||||||
|
padding-top: 1.5rem;
|
||||||
|
padding-bottom: 0.7rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.toot a {
|
||||||
|
position: relative;
|
||||||
|
z-index: 1;
|
||||||
|
color: inherit;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.toot .contentgrid {
|
||||||
|
padding: 0 1.5rem;
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: 4rem 1fr auto;
|
||||||
|
grid-template-rows: 1.5rem auto auto auto;
|
||||||
|
-webkit-column-gap: 0.5rem;
|
||||||
|
column-gap: 0.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.toot .not-expanded {
|
||||||
|
color: var(--fg-reduced);
|
||||||
|
grid-column: 3;
|
||||||
|
grid-row: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.toot .avatar {
|
||||||
|
grid-row: span 3;
|
||||||
|
aspect-ratio: 1/1;
|
||||||
|
display: flex;
|
||||||
|
border: 0.2rem solid var(--avatar-border);
|
||||||
|
border-radius: 0.4rem;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* hides corners from img overflowing */
|
||||||
|
|
||||||
|
.toot .avatar img {
|
||||||
|
height: 100%;
|
||||||
|
width: 100%;
|
||||||
|
-o-object-fit: cover;
|
||||||
|
object-fit: cover;
|
||||||
|
background: var(--bg);
|
||||||
|
}
|
||||||
|
|
||||||
|
.toot .displayname, .toot .username {
|
||||||
|
justify-self: start;
|
||||||
|
align-self: start;
|
||||||
|
|
||||||
|
max-width: 100%;
|
||||||
|
white-space: nowrap;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
}
|
||||||
|
|
||||||
|
.toot .displayname {
|
||||||
|
font-weight: bold;
|
||||||
|
font-size: 1.5rem;
|
||||||
|
line-height: 2rem;
|
||||||
|
margin-top: -0.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.toot .username {
|
||||||
|
color: var(--link-fg);
|
||||||
|
font-size: 1rem;
|
||||||
|
line-height: 1.3rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.toot input.spoiler:checked ~ .content {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.toot .spoiler {
|
||||||
|
padding-bottom: 0.5rem;
|
||||||
|
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
gap: 0.4rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.toot .spoiler .spoiler-text {
|
||||||
|
word-break: break-word;
|
||||||
|
}
|
||||||
|
|
||||||
|
.toot .spoiler label {
|
||||||
|
padding: 0.2rem 0.3rem;
|
||||||
|
cursor: pointer;
|
||||||
|
font-size: 1rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.toot .spoiler label:hover {
|
||||||
|
}
|
||||||
|
|
||||||
|
.toot .text {
|
||||||
|
margin: 0;
|
||||||
|
padding-top: 0.5rem;
|
||||||
|
grid-row: span 1;
|
||||||
|
grid-column: 1 / span 3;
|
||||||
|
|
||||||
|
position: relative;
|
||||||
|
z-index: 2;
|
||||||
|
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.toot .text a {
|
||||||
|
color: var(--link-fg);
|
||||||
|
text-decoration: underline;
|
||||||
|
}
|
||||||
|
|
||||||
|
.toot .text .content {
|
||||||
|
padding-bottom: 0.5rem;
|
||||||
|
|
||||||
|
word-break: break-word;
|
||||||
|
}
|
||||||
|
|
||||||
|
.toot .text .content blockquote {
|
||||||
|
padding: 0.5rem 0 0.5rem 0.5rem;
|
||||||
|
border-left: 0.2rem solid var(--border-accent);
|
||||||
|
margin: 0;
|
||||||
|
font-style: italic;
|
||||||
|
}
|
||||||
|
|
||||||
|
.toot .text .content hr {
|
||||||
|
border: 1px dashed var(--border-accent);
|
||||||
|
}
|
||||||
|
|
||||||
|
.toot .text .content pre, .toot .text .content code {
|
||||||
|
background-color: var(--gray2);
|
||||||
|
}
|
||||||
|
|
||||||
|
.toot .text .content code {
|
||||||
|
padding: 0.25rem;
|
||||||
|
border-radius: var(--br-inner);
|
||||||
|
}
|
||||||
|
|
||||||
|
.toot .text .content pre {
|
||||||
|
display: flex;
|
||||||
|
border-radius: var(--br);
|
||||||
|
padding: 0.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.toot .text .content pre code {
|
||||||
|
padding: 0.5rem;
|
||||||
|
white-space: pre;
|
||||||
|
border-radius: 0;
|
||||||
|
overflow-x: auto;
|
||||||
|
-webkit-overflow-scrolling: touch;
|
||||||
|
}
|
||||||
|
|
||||||
|
.toot .text .content img {
|
||||||
|
max-width: 100%;
|
||||||
|
margin: 5px auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.toot .text .content img[alt~="!center"] {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
.toot .text .emoji {
|
||||||
|
transition: 0.1s;
|
||||||
|
}
|
||||||
|
|
||||||
|
.toot .text .emoji:hover, .toot .text .emoji:active {
|
||||||
|
-webkit-transform: scale(2);
|
||||||
|
transform: scale(2);
|
||||||
|
background-color: var(--bg);
|
||||||
|
box-shadow: var(--boxshadow);
|
||||||
|
border: var(--boxshadow-border);
|
||||||
|
border-radius: var(--br-inner);
|
||||||
|
}
|
||||||
|
|
||||||
|
.toot .media {
|
||||||
|
margin-top: 0.5rem;
|
||||||
|
border-radius: var(--br);
|
||||||
|
grid-column: span 3;
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: 50% 50%;
|
||||||
|
grid-auto-rows: 10rem;
|
||||||
|
overflow: hidden;
|
||||||
|
gap: 0.3rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.toot .media .media-wrapper {
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
.toot .media.single .media-wrapper {
|
||||||
|
grid-column: span 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
.toot .media.odd .media-wrapper:first-child, .toot .media.double .media-wrapper {
|
||||||
|
grid-row: span 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
.toot .media .open, .toot .media .open .button {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.toot .media .closed {
|
||||||
|
z-index: 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Media is shown */
|
||||||
|
|
||||||
|
.toot .media input.sensitive-checkbox:checked ~ .video-play {
|
||||||
|
display: flex;
|
||||||
|
}
|
||||||
|
|
||||||
|
.toot .media input.sensitive-checkbox:checked ~ .sensitive .closed {
|
||||||
|
transition: 0.8s;
|
||||||
|
pointer-events: none;
|
||||||
|
opacity: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.toot .media input.sensitive-checkbox:checked ~ .sensitive .closed > * {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.toot .media input.sensitive-checkbox:checked ~ .sensitive .open {
|
||||||
|
display: flex;
|
||||||
|
justify-content: flex-start;
|
||||||
|
}
|
||||||
|
|
||||||
|
.toot .media input.sensitive-checkbox:checked ~ .sensitive .open .button {
|
||||||
|
align-self: flex-start;
|
||||||
|
display: initial;
|
||||||
|
z-index: 4;
|
||||||
|
}
|
||||||
|
|
||||||
|
.toot .media .video-play .icon-span {
|
||||||
|
align-self: center;
|
||||||
|
display: initial;
|
||||||
|
z-index: 4;
|
||||||
|
}
|
||||||
|
|
||||||
|
.toot .media .video-play .icon-span .icon {
|
||||||
|
color: var(--white1);
|
||||||
|
}
|
||||||
|
|
||||||
|
.toot .media .video-play .icon-span .icon-bg {
|
||||||
|
color: var(--gray1);
|
||||||
|
font-size: 1.1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.toot .media .video-play {
|
||||||
|
|
||||||
|
display: none;
|
||||||
|
position: absolute;
|
||||||
|
height: 100%;
|
||||||
|
width: 100%;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
font-size: 7em;
|
||||||
|
pointer-events: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.toot .media .sensitive {
|
||||||
|
position: absolute;
|
||||||
|
height: 100%;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.toot .media .sensitive .open, .toot .media .sensitive .closed {
|
||||||
|
display: flex;
|
||||||
|
position: absolute;
|
||||||
|
height: 100%;
|
||||||
|
width: 100%;
|
||||||
|
justify-content: center;
|
||||||
|
padding: 1rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.toot .media .sensitive .open label, .toot .media .sensitive .closed label {
|
||||||
|
z-index: 3;
|
||||||
|
}
|
||||||
|
|
||||||
|
.toot .media .sensitive .closed {
|
||||||
|
transition: 0.3s;
|
||||||
|
background: var(--bg-sensitive);
|
||||||
|
}
|
||||||
|
|
||||||
|
@supports ((-webkit-backdrop-filter: blur(2rem)) or (backdrop-filter: blur(2rem))) {
|
||||||
|
|
||||||
|
.toot .media .sensitive .closed {
|
||||||
|
background: transparent;
|
||||||
|
-webkit-backdrop-filter: blur(2rem);
|
||||||
|
backdrop-filter: blur(2rem)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.toot .media .sensitive .closed .button {
|
||||||
|
align-self: center;
|
||||||
|
justify-self: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.toot .media .no-image-desc {
|
||||||
|
color: var(--no-img-desc-fg);
|
||||||
|
background: var(--no-img-desc-bg);
|
||||||
|
display: flex;
|
||||||
|
position: absolute;
|
||||||
|
bottom: 0.1rem;
|
||||||
|
right: 0.4rem;
|
||||||
|
margin-bottom: 0.4rem;
|
||||||
|
margin-right: 0.4rem;
|
||||||
|
padding: 0.1rem 0.45rem;
|
||||||
|
border-radius: 100%;
|
||||||
|
border: 0.2rem solid var(--button-fg);
|
||||||
|
z-index: 3;
|
||||||
|
}
|
||||||
|
|
||||||
|
.toot .media .no-image-desc i.fa {
|
||||||
|
display: block;
|
||||||
|
line-height: 1.6rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.toot .media .no-image-desc span {
|
||||||
|
margin-left: 0.3rem;
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.toot .media .no-image-desc:hover span {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
.toot .media .no-image-desc:hover {
|
||||||
|
border-radius: 0.2rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.toot .media img {
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
-o-object-fit: cover;
|
||||||
|
object-fit: cover;
|
||||||
|
}
|
||||||
|
|
||||||
|
.toot .info {
|
||||||
|
background: var(--toot-info-bg);
|
||||||
|
color: var(--fg-reduced);
|
||||||
|
display: none;
|
||||||
|
border-top: 0.15rem solid var(--toot-info-border);
|
||||||
|
padding: 0.5rem 1.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.toot .info div {
|
||||||
|
padding-right: 1.3rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.toot .info .stats {
|
||||||
|
display: flex;
|
||||||
|
}
|
||||||
|
|
||||||
|
.toot .info {
|
||||||
|
|
||||||
|
grid-column: span 3;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
}
|
||||||
|
|
||||||
|
.toot .toot-link {
|
||||||
|
top: 0;
|
||||||
|
right: 0;
|
||||||
|
bottom: 0;
|
||||||
|
left: 0;
|
||||||
|
overflow: hidden;
|
||||||
|
text-indent: 100%;
|
||||||
|
white-space: nowrap;
|
||||||
|
|
||||||
|
position: absolute;
|
||||||
|
z-index: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.toot:first-child {
|
||||||
|
/* top left, top right */
|
||||||
|
border-top-left-radius: var(--br);
|
||||||
|
border-top-right-radius: var(--br);
|
||||||
|
}
|
||||||
|
|
||||||
|
.toot:last-child, .toot:last-child .info {
|
||||||
|
/* bottom left, bottom right */
|
||||||
|
border-bottom-left-radius: var(--br);
|
||||||
|
border-bottom-right-radius: var(--br);
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.toot.expanded {
|
||||||
|
background: var(--toot-focus-bg);
|
||||||
|
padding-bottom: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.toot.expanded .contentgrid .displayname {
|
||||||
|
grid-column: span 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
.toot.expanded .contentgrid .not-expanded {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.toot.expanded .info {
|
||||||
|
display: flex;
|
||||||
|
}
|
||||||
|
|
||||||
|
.toot.expanded .media {
|
||||||
|
margin-bottom: 0.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
footer + div { /* something weird from the devstack.. */
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media screen and (max-width: 89ch) {
|
||||||
|
.toot .contentgrid {
|
||||||
|
grid-template-rows: 1.5rem 1.3rem 1.3rem auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.toot .username, .toot .not-expanded {
|
||||||
|
grid-column: 2;
|
||||||
|
grid-row: auto;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -0,0 +1,77 @@
|
|||||||
|
{
|
||||||
|
"nodes": {
|
||||||
|
"nix-filter": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1681154353,
|
||||||
|
"narHash": "sha256-MCJ5FHOlbfQRFwN0brqPbCunLEVw05D/3sRVoNVt2tI=",
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "nix-filter",
|
||||||
|
"rev": "f529f42792ade8e32c4be274af6b6d60857fbee7",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "nix-filter",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1686433093,
|
||||||
|
"narHash": "sha256-mgsBp6ldpjYzw69fTDsGjbkRkDw+KEab8lYijNb/x5M=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "08a52221617f04693b40f718ee91c446e6bc139d",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "NixOS",
|
||||||
|
"ref": "master",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"root": {
|
||||||
|
"inputs": {
|
||||||
|
"nix-filter": "nix-filter",
|
||||||
|
"nixpkgs": "nixpkgs",
|
||||||
|
"utils": "utils"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"systems": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1681028828,
|
||||||
|
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"utils": {
|
||||||
|
"inputs": {
|
||||||
|
"systems": "systems"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1685518550,
|
||||||
|
"narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=",
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"root": "root",
|
||||||
|
"version": 7
|
||||||
|
}
|
@ -0,0 +1,128 @@
|
|||||||
|
{
|
||||||
|
inputs = {
|
||||||
|
utils.url = "github:numtide/flake-utils";
|
||||||
|
nixpkgs.url = "github:NixOS/nixpkgs/master";
|
||||||
|
nix-filter.url = "github:numtide/nix-filter";
|
||||||
|
};
|
||||||
|
|
||||||
|
outputs = {
|
||||||
|
self,
|
||||||
|
nixpkgs,
|
||||||
|
utils,
|
||||||
|
nix-filter
|
||||||
|
}:
|
||||||
|
utils.lib.eachDefaultSystem
|
||||||
|
(system: let
|
||||||
|
pkgs = import nixpkgs {
|
||||||
|
inherit system;
|
||||||
|
};
|
||||||
|
|
||||||
|
filter = nix-filter.lib;
|
||||||
|
|
||||||
|
pname = "gotosocial";
|
||||||
|
version = "0.8.0";
|
||||||
|
in {
|
||||||
|
packages = {
|
||||||
|
default = pkgs.stdenv.mkDerivation {
|
||||||
|
inherit pname version;
|
||||||
|
|
||||||
|
sourceRoot = "gtsRelease";
|
||||||
|
srcs = [ (pkgs.fetchzip {
|
||||||
|
name = "gtsRelease";
|
||||||
|
url = "https://github.com/superseriousbusiness/${pname}/releases/download/v${version}/${pname}_${version}_linux_amd64.tar.gz";
|
||||||
|
sha256 = "sha256-45Tgt+KxYo0NioccpgCUKM1HEWX7+Ay8wNw/wuFM3sg=";
|
||||||
|
stripRoot = false;
|
||||||
|
})
|
||||||
|
(filter {
|
||||||
|
name = "styleOverrides";
|
||||||
|
root = ./.;
|
||||||
|
include = [
|
||||||
|
./css
|
||||||
|
];
|
||||||
|
})
|
||||||
|
];
|
||||||
|
|
||||||
|
installPhase = ''
|
||||||
|
mkdir -p "$out"/bin
|
||||||
|
mv gotosocial $out/bin/
|
||||||
|
mv web $out/
|
||||||
|
ls ../styleOverrides
|
||||||
|
cp ../styleOverrides/css/* $out/web/assets/dist/
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}) // {
|
||||||
|
nixosModule = {config, lib, pkgs, ...}:
|
||||||
|
with lib;
|
||||||
|
let cfg = config.ashe.services.social;
|
||||||
|
|
||||||
|
in {
|
||||||
|
options.ashe.services.social = {
|
||||||
|
enable = mkEnableOption "Enables the gotosocial HTTP service";
|
||||||
|
|
||||||
|
port = mkOption rec {
|
||||||
|
type = types.int;
|
||||||
|
default = 8080;
|
||||||
|
example = default;
|
||||||
|
description = "The port for this service to listen on";
|
||||||
|
};
|
||||||
|
|
||||||
|
appDomain = mkOption rec {
|
||||||
|
type = types.str;
|
||||||
|
default = "social.tempest.dev";
|
||||||
|
example = default;
|
||||||
|
description = "The domain name for the gotosocial service";
|
||||||
|
};
|
||||||
|
|
||||||
|
accountDomain = mkOption rec {
|
||||||
|
type = types.str;
|
||||||
|
default = "tempest.dev";
|
||||||
|
example = default;
|
||||||
|
description = "The domain name for the gotosocial accounts";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
systemd.services."social.tempest.dev" = {
|
||||||
|
wantedBy = [ "multi-user.target" ];
|
||||||
|
|
||||||
|
serviceConfig = let pkg = self.packages.${pkgs.system}.default;
|
||||||
|
in {
|
||||||
|
Restart = "on-failure";
|
||||||
|
ExecStart = "${pkg}/bin/gotosocial server start";
|
||||||
|
DynamicUser = "yes";
|
||||||
|
StateDirectory = "ashe.gotosocial";
|
||||||
|
StateDirectoryMode = "0700";
|
||||||
|
WorkingDirectory = "${pkg}";
|
||||||
|
Environment = [
|
||||||
|
"GTS_HOST=${cfg.appDomain}"
|
||||||
|
"GTS_ACCOUNT_DOMAIN=${cfg.accountDomain}"
|
||||||
|
"GTS_DB_TYPE=sqlite"
|
||||||
|
"GTS_DB_ADDRESS=/var/lib/ashe.gotosocial/storage/sqlite.db"
|
||||||
|
"GTS_STORAGE_LOCAL_BASE_PATH=/var/lib/ashe.gotosocial/storage/"
|
||||||
|
"GTS_LETSENCRYPT_ENABLED=false"
|
||||||
|
"GTS_LETSENCRYPT_EMAIL_ADDRESS="
|
||||||
|
"GTS_ACCOUNTS_REGISTRATION_OPEN=false"
|
||||||
|
"GTS_BIND_ADDRESS=127.0.0.1"
|
||||||
|
"GTS_PORT=${toString cfg.port}"
|
||||||
|
"GTS_TRUSTED_PROXIES=127.0.0.1/32"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
services.nginx.virtualHosts.${cfg.appDomain} = {
|
||||||
|
locations."/" = { proxyPass = "http://127.0.0.1:${toString cfg.port}"; };
|
||||||
|
locations."= /" = { return = "301 /@ashe"; };
|
||||||
|
forceSSL = true;
|
||||||
|
enableACME = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
services.nginx.virtualHosts.${cfg.accountDomain} = {
|
||||||
|
locations."/.well-known/webfinger" = { proxyPass = "http://127.0.0.1:${toString cfg.port}"; };
|
||||||
|
forceSSL = true;
|
||||||
|
enableACME = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
Loading…
Reference in New Issue