1
0
mirror of https://gitlab.com/brutaldon/brutaldon.git synced 2024-09-07 15:34:15 -04:00

Merge branch 'main' into 'main'

Brutal CSS Strip

See merge request brutaldon/brutaldon!14
This commit is contained in:
Dorian Vertumna 2024-07-23 16:34:52 +00:00
commit 17b3193060
73 changed files with 1395 additions and 9525 deletions

View File

@ -26,4 +26,6 @@ We currently lack a formal process for this. Translations can be submitted via m
## Documentation
We would love assistance in creating a formal documentation process for this project.
Current documentation efforts are focused on adding usable comments in the code itself.
Guides on how to set up and admin a brutaldon instance are likely to follow after that.
Feel free to send in a merge request with other documentation ideas you have!

View File

@ -25,5 +25,8 @@ Django = "~=3.2"
django-html_sanitizer = "*"
inscriptis = "*"
lxml = "*"
uwsgi = "*"
django-debug-toolbar = "*"
gunicorn = "*"
[dev-packages]

View File

@ -64,5 +64,8 @@ People love screenshots, whatever the project, so here we are. These screenshots
* [X] Add support for following, blocking, and muting users.
## Aesthetic
No automatic page updates: refresh the page to see new toots. No endless scroll: there's a "next page" link. No autocompletion of anything: use another lynx process in another screen window to look things up. UTF8 clean.
Brutaldon seeks to be a minimalist activity-pub client, taking visual and functional inspiration from the web of the 90s. HTML only websites are quite usable actually. Very little CSS and javascript should be used to polish the edges of a powerful and robust tool.
- Brutaldon will function without javascript.
- Brutaldon will function without css.
- No automatic page updates.
- UTF8 clean.

View File

@ -1,8 +1,12 @@
# Module for reversing urls.
# In the sense of a reverse proxy I think.
from django.urls import reverse
def bookmarklet_url(request):
# takes var request and add a /share/ to the end of the url
share_url = request.build_absolute_uri(reverse("share"))
# return the share_url embedded in a string of other stuff.
# not yet sure what that other stuff is for.
return {
"bookmarklet_url": f"javascript:location.href='{share_url}?url='+encodeURIComponent(location.href)+';title='+encodeURIComponent(document.title)"
}

View File

@ -1,6 +1,13 @@
# The Forms modules supplies tools for http get and post,
# and building the <form> html elements to use them.
from django import forms
# This module gives us access to the settings given to
# Django at runtime via settings files.
from django.conf import settings
# Module for translating text, returns strings
from django.utils.translation import gettext as _
# Module for calculating times
# Note: Python 3.9 or later projects should be using internal libraries per pytz docs
from pytz import common_timezones
from .models import Theme, Preference

View File

@ -19,58 +19,6 @@ def set_up_default_themes(apps, schema_editor):
is_brutalist=False,
)
dark.save()
lux = Theme(
name="Lux",
main_css="css/bulmaswatch-lux.min.css",
tweaks_css="css/brutaldon.css",
is_brutalist=False,
)
lux.save()
solar = Theme(
name="Solar",
main_css="css/bulmaswatch-solar.min.css",
tweaks_css="css/brutaldon.css",
is_brutalist=False,
)
solar.save()
material = Theme(
name="Material",
main_css="css/bulmaswatch-materia.min.css",
tweaks_css="css/brutaldon-material.css",
is_brutalist=False,
)
material.save()
brutalism = Theme(
name="FULLBRUTALISM", main_css="css/fullbrutalism.css", is_brutalist=True
)
brutalism.save()
brutstrap = Theme(
name="Brutstrap",
main_css="css/brutstrap.css",
is_brutalist=True,
tweaks_css="css/brutstrap-tweaks.css",
)
brutstrap.save()
large = Theme(
name="Minimalist Large", main_css="css/minimal-large.css", is_brutalist=True
)
large.save()
small = Theme(
name="Minimalist Small", main_css="css/minimal-small.css", is_brutalist=True
)
small.save()
dark2 = Theme(
name="Minimalist Dark", main_css="css/minimal-dark.css", is_brutalist=True
)
dark2.save()
vt240 = Theme(
name="vt240 amber", main_css="css/vt240don-amber.css", is_brutalist=True
)
vt240.save()
vt240_green = Theme(
name="vt240 green", main_css="css/vt240don-green.css", is_brutalist=True
)
vt240_green.save()
minimal = Theme(name="No styling at all", main_css=None, is_brutalist=True)
minimal.save()

File diff suppressed because one or more lines are too long

View File

@ -1,6 +1,10 @@
from django.db import models
# Module to access variables given to Django at runtime
from django.conf import settings
# Module to translate strings
from django.utils.translation import gettext as _
# Module for calculating time
# Note: Python 3.9 or later programs should use internal libraries, per pytz docs
from pytz import common_timezones
timezones = [(tz, tz) for tz in common_timezones]

View File

@ -41,9 +41,11 @@ INSTALLED_APPS = [
"sanitizer",
"django.contrib.humanize",
"brutaldon",
"debug_toolbar",
]
MIDDLEWARE = [
"debug_toolbar.middleware.DebugToolbarMiddleware",
"django.middleware.security.SecurityMiddleware",
"django.contrib.sessions.middleware.SessionMiddleware",
"django.middleware.common.CommonMiddleware",
@ -216,3 +218,8 @@ DEFAULT_AUTO_FIELD='django.db.models.AutoField'
# Version number displayed on about page
BRUTALDON_VERSION = "2.15.0"
# Set the internal IP address, this needs to be explicitly set for the debug toolbar to work.
INTERNAL_IPS = [
"127.0.0.1",
]

View File

@ -0,0 +1,3 @@
img.avatar {
height: 90px;
}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@ -145,7 +145,7 @@ input[type=button] {width: auto; overflow: visible;}
body {
font-family: Terminus, Inconsolata, Consolas, "Droid Sans Mono", "DejaVu Sans Mono", "Monaco", monospace;
background-color: #CCC;
background-color: #fff;
color: #000;
margin: 1em;
}
@ -236,12 +236,12 @@ img.is-32x32 {
.media {
padding: 1em;
margin: 4px;
border: 8px ridge #CCC;
border: 8px #000;
overflow: auto;
}
.media.active-context {
background-color: #DDD;
background-color: #fff;
}
summary::before {
@ -332,10 +332,10 @@ img.emoji
.modal-content
{
z-index: 60;
background-color: #CCC;
background-color: #fff;
color: #000;
padding: 1ex;
border: 8px ridge #CCC;
border: 8px ridge #fff;
max-height: 90vh;
overflow: auto;
}

View File

@ -1,351 +0,0 @@
/* Magnific Popup CSS */
.mfp-bg {
top: 0;
left: 0;
width: 100%;
height: 100%;
z-index: 1042;
overflow: hidden;
position: fixed;
background: #0b0b0b;
opacity: 0.8; }
.mfp-wrap {
top: 0;
left: 0;
width: 100%;
height: 100%;
z-index: 1043;
position: fixed;
outline: none !important;
-webkit-backface-visibility: hidden; }
.mfp-container {
text-align: center;
position: absolute;
width: 100%;
height: 100%;
left: 0;
top: 0;
padding: 0 8px;
box-sizing: border-box; }
.mfp-container:before {
content: '';
display: inline-block;
height: 100%;
vertical-align: middle; }
.mfp-align-top .mfp-container:before {
display: none; }
.mfp-content {
position: relative;
display: inline-block;
vertical-align: middle;
margin: 0 auto;
text-align: left;
z-index: 1045; }
.mfp-inline-holder .mfp-content,
.mfp-ajax-holder .mfp-content {
width: 100%;
cursor: auto; }
.mfp-ajax-cur {
cursor: progress; }
.mfp-zoom-out-cur, .mfp-zoom-out-cur .mfp-image-holder .mfp-close {
cursor: -moz-zoom-out;
cursor: -webkit-zoom-out;
cursor: zoom-out; }
.mfp-zoom {
cursor: pointer;
cursor: -webkit-zoom-in;
cursor: -moz-zoom-in;
cursor: zoom-in; }
.mfp-auto-cursor .mfp-content {
cursor: auto; }
.mfp-close,
.mfp-arrow,
.mfp-preloader,
.mfp-counter {
-webkit-user-select: none;
-moz-user-select: none;
user-select: none; }
.mfp-loading.mfp-figure {
display: none; }
.mfp-hide {
display: none !important; }
.mfp-preloader {
color: #CCC;
position: absolute;
top: 50%;
width: auto;
text-align: center;
margin-top: -0.8em;
left: 8px;
right: 8px;
z-index: 1044; }
.mfp-preloader a {
color: #CCC; }
.mfp-preloader a:hover {
color: #FFF; }
.mfp-s-ready .mfp-preloader {
display: none; }
.mfp-s-error .mfp-content {
display: none; }
button.mfp-close,
button.mfp-arrow {
overflow: visible;
cursor: pointer;
background: transparent;
border: 0;
-webkit-appearance: none;
display: block;
outline: none;
padding: 0;
z-index: 1046;
box-shadow: none;
touch-action: manipulation; }
button::-moz-focus-inner {
padding: 0;
border: 0; }
.mfp-close {
width: 44px;
height: 44px;
line-height: 44px;
position: absolute;
right: 0;
top: 0;
text-decoration: none;
text-align: center;
opacity: 0.65;
padding: 0 0 18px 10px;
color: #FFF;
font-style: normal;
font-size: 28px;
font-family: Arial, Baskerville, monospace; }
.mfp-close:hover,
.mfp-close:focus {
opacity: 1; }
.mfp-close:active {
top: 1px; }
.mfp-close-btn-in .mfp-close {
color: #333; }
.mfp-image-holder .mfp-close,
.mfp-iframe-holder .mfp-close {
color: #FFF;
right: -6px;
text-align: right;
padding-right: 6px;
width: 100%; }
.mfp-counter {
position: absolute;
top: 0;
right: 0;
color: #CCC;
font-size: 12px;
line-height: 18px;
white-space: nowrap; }
.mfp-arrow {
position: absolute;
opacity: 0.65;
margin: 0;
top: 50%;
margin-top: -55px;
padding: 0;
width: 90px;
height: 110px;
-webkit-tap-highlight-color: transparent; }
.mfp-arrow:active {
margin-top: -54px; }
.mfp-arrow:hover,
.mfp-arrow:focus {
opacity: 1; }
.mfp-arrow:before,
.mfp-arrow:after {
content: '';
display: block;
width: 0;
height: 0;
position: absolute;
left: 0;
top: 0;
margin-top: 35px;
margin-left: 35px;
border: medium inset transparent; }
.mfp-arrow:after {
border-top-width: 13px;
border-bottom-width: 13px;
top: 8px; }
.mfp-arrow:before {
border-top-width: 21px;
border-bottom-width: 21px;
opacity: 0.7; }
.mfp-arrow-left {
left: 0; }
.mfp-arrow-left:after {
border-right: 17px solid #FFF;
margin-left: 31px; }
.mfp-arrow-left:before {
margin-left: 25px;
border-right: 27px solid #3F3F3F; }
.mfp-arrow-right {
right: 0; }
.mfp-arrow-right:after {
border-left: 17px solid #FFF;
margin-left: 39px; }
.mfp-arrow-right:before {
border-left: 27px solid #3F3F3F; }
.mfp-iframe-holder {
padding-top: 40px;
padding-bottom: 40px; }
.mfp-iframe-holder .mfp-content {
line-height: 0;
width: 100%;
max-width: 900px; }
.mfp-iframe-holder .mfp-close {
top: -40px; }
.mfp-iframe-scaler {
width: 100%;
height: 0;
overflow: hidden;
padding-top: 56.25%; }
.mfp-iframe-scaler iframe {
position: absolute;
display: block;
top: 0;
left: 0;
width: 100%;
height: 100%;
box-shadow: 0 0 8px rgba(0, 0, 0, 0.6);
background: #000; }
/* Main image in popup */
img.mfp-img {
width: auto;
max-width: 100%;
height: auto;
display: block;
line-height: 0;
box-sizing: border-box;
padding: 40px 0 40px;
margin: 0 auto; }
/* The shadow behind the image */
.mfp-figure {
line-height: 0; }
.mfp-figure:after {
content: '';
position: absolute;
left: 0;
top: 40px;
bottom: 40px;
display: block;
right: 0;
width: auto;
height: auto;
z-index: -1;
box-shadow: 0 0 8px rgba(0, 0, 0, 0.6);
background: #444; }
.mfp-figure small {
color: #BDBDBD;
display: block;
font-size: 12px;
line-height: 14px; }
.mfp-figure figure {
margin: 0; }
.mfp-bottom-bar {
margin-top: -36px;
position: absolute;
top: 100%;
left: 0;
width: 100%;
cursor: auto; }
.mfp-title {
text-align: left;
line-height: 18px;
color: #F3F3F3;
word-wrap: break-word;
padding-right: 36px; }
.mfp-image-holder .mfp-content {
max-width: 100%; }
.mfp-gallery .mfp-image-holder .mfp-figure {
cursor: pointer; }
@media screen and (max-width: 800px) and (orientation: landscape), screen and (max-height: 300px) {
/**
* Remove all paddings around the image on small screen
*/
.mfp-img-mobile .mfp-image-holder {
padding-left: 0;
padding-right: 0; }
.mfp-img-mobile img.mfp-img {
padding: 0; }
.mfp-img-mobile .mfp-figure:after {
top: 0;
bottom: 0; }
.mfp-img-mobile .mfp-figure small {
display: inline;
margin-left: 5px; }
.mfp-img-mobile .mfp-bottom-bar {
background: rgba(0, 0, 0, 0.6);
bottom: 0;
margin: 0;
top: auto;
padding: 3px 5px;
position: fixed;
box-sizing: border-box; }
.mfp-img-mobile .mfp-bottom-bar:empty {
padding: 0; }
.mfp-img-mobile .mfp-counter {
right: 5px;
top: 3px; }
.mfp-img-mobile .mfp-close {
top: 0;
right: 0;
width: 35px;
height: 35px;
line-height: 35px;
background: rgba(0, 0, 0, 0.6);
position: fixed;
text-align: center;
padding: 0; } }
@media all and (max-width: 900px) {
.mfp-arrow {
-webkit-transform: scale(0.75);
transform: scale(0.75); }
.mfp-arrow-left {
-webkit-transform-origin: 0;
transform-origin: 0; }
.mfp-arrow-right {
-webkit-transform-origin: 100%;
transform-origin: 100%; }
.mfp-container {
padding-left: 6px;
padding-right: 6px; } }

View File

@ -1,296 +0,0 @@
body, input, textarea, select {
font-family: sans-serif;
background-color: #111111;
color: #CCCCCC;
margin: 1ex;
font-size: 11pt;
}
input[text], textarea
{
margin: 0 auto;
position: relative;
width: 100%;
max-width: 100em;
}
a {
color: cornflowerblue;
text-decoration: underline;
}
a:active {
color: lightcoral;
text-decoration: underline;
}
a:visited {
color: orchid;
text-decoration: underline;
}
img.is-32x32 {
float: left;
max-width: 32px;
max-height: auto;
margin: 4px;
}
.container {
margin: 0 auto;
position: relative;
}
@media screen and (min-width: 1024px) {
.container {
max-width: 960px;
width: 960px;
}
.container.is-fluid {
margin-left: 64px;
margin-right: 64px;
max-width: none;
width: auto;
}
.navbar,
.navbar-menu,
.navbar-start,
.navbar-end {
align-items: stretch;
display: flex;
}
.navbar-start {
justify-content: flex-start;
margin-right: auto;
}
.navbar-end {
justify-content: flex-end;
margin-left: auto;
}
}
@media screen and (max-width: 1279px) {
.container.is-widescreen {
max-width: 1152px;
width: auto;
}
}
@media screen and (max-width: 1471px) {
.container.is-fullhd {
max-width: 1344px;
width: auto;
}
}
@media screen and (min-width: 1280px) {
.container {
max-width: 1152px;
width: 1152px;
}
}
@media screen and (min-width: 1472px) {
.container {
max-width: 1344px;
width: 1344px;
}
}
main > div.container {
max-width: 100ex;
}
.level {
clear: both;
}
.title {
font-size: 3ex;
font-weight: bold;
margin-top: 1ex;
margin-bottom: 1ex;
}
.subtitle {
font-size: 1.5ex;
font-weight: bold;
margin-top: 0.25ex;
margin-bottom: 0.25ex;
}
.toot {
clear: both;
}
.image.is-32x32, .is-32x32 img, img.is-32x32 {
width: 32px;
height: 32px;
}
.image.is-48x48, .is-48x48 img, img.is-48x48 {
width: 48px;
height: 48px;
}
.image.is-64x64, .is-64x64 img, img.is-64x64 {
width: 64px;
height: 64px;
}
.image.is-96x96, .is-96x96 img, img.is-96x96 {
width: 96px;
height: 96px;
}
.is-max-128 {
max-height: 128px;
max-width: 128px;
}
.is-max-256 {
max-height: 256px;
max-width: 256px;
}
.media {
padding: 1ex;
margin: 4px;
overflow: auto;
}
.media.active-context {
background-color: #2C2C2C;
}
.field
{
margin-top: 1em;
}
label
{
font-weight: bold;
}
.control, .select
{
margin-top: 0.5ex;
margin-bottom: 0.5ex;
}
.account-avatar
{
display: inline-block;
}
.reblog-icon
{
margin-top: 32px;
display: inline-block;
}
.media-content
{
margin-top: 1ex;
}
.media-content > div > p
{
margin-bottom: 1ex;
}
.textarea
{
max-width: 100%;
}
.errorlist
{
color: #FF0000;
}
img.emoji
{
display: inline;
max-height: 1.5rem;
max-width: 1.5rem;
vertical-align: text-bottom;
}
hr.is-hidden
{
display: none;
}
.box
{
border-radius: 3px;
border: 1px solid #000;
padding: 1em;
margin-bottom: 1em;
background-color: #1C1C1C;
color: #CCCCCC;
}
.modal {
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
display: none;
-webkit-box-pack: center;
-ms-flex-pack: center;
justify-content: center;
overflow: hidden;
position: fixed;
z-index: 40;
}
.modal-background {
position: absolute;
background-color: rgba(10,10,10,.86);
}
.modal, .modal-background {
bottom: 0;
left: 0;
right: 0;
top: 0;
}
.modal-content
{
height: 90vh;
overflow: auto;
z-index: 60;
}
.modal.is-active {
display: flex;
}
.navbar-item span {
padding-right: 1ex;
}
.card
{
padding: 1em;
margin-top: 1em;
border: 0.2em solid white;
}
.card-header
{
padding-bottom: 1em;
border-bottom: 0.2em solid white;
}
.card-image
{
padding: 1em;
margin 0, auto;
}
.button
{
border: 0.2em solid #CCC;
display: inline;
padding: 0.4em;
}

View File

@ -1,267 +0,0 @@
body, input, textarea, select {
font-family: sans-serif;
background-color: #FAFAFA;
color: #000;
margin: 1em;
font-size: larger;
}
input[text], textarea
{
margin: 0 auto;
position: relative;
width: 100%;
max-width: 120em;
}
a {
color: blue;
text-decoration: underline;
}
a:active {
color: red;
text-decoration: underline;
}
a:visited {
color: purple;
text-decoration: underline;
}
img.is-32x32 {
float: left;
max-width: 512px;
max-height: auto;
margin: 4px;
}
.container {
margin: 0 auto;
position: relative;
}
@media screen and (min-width: 1024px) {
.container {
max-width: 960px;
width: 960px;
}
.container.is-fluid {
margin-left: 64px;
margin-right: 64px;
max-width: none;
width: auto;
}
.navbar,
.navbar-menu,
.navbar-start,
.navbar-end {
align-items: stretch;
display: flex;
}
.navbar-start {
justify-content: flex-start;
margin-right: auto;
}
.navbar-end {
justify-content: flex-end;
margin-left: auto;
}
}
@media screen and (max-width: 1279px) {
.container.is-widescreen {
max-width: 1152px;
width: auto;
}
}
@media screen and (max-width: 1471px) {
.container.is-fullhd {
max-width: 1344px;
width: auto;
}
}
@media screen and (min-width: 1280px) {
.container {
max-width: 1152px;
width: 1152px;
}
}
@media screen and (min-width: 1472px) {
.container {
max-width: 1344px;
width: 1344px;
}
}
body > section > div.container {
max-width: 100ex;
}
.level {
clear: both;
}
.title {
font-size: 3ex;
font-weight: bold;
margin-top: 1ex;
margin-bottom: 1ex;
}
.subtitle {
font-size: 1.5ex;
font-weight: bold;
margin-top: 0.25ex;
margin-bottom: 0.25ex;
}
.toot {
clear: both;
}
.image.is-32x32, .is-32x32 img, img.is-32x32 {
width: 32px;
height: 32px;
}
.image.is-48x48, .is-48x48 img, img.is-48x48 {
width: 48px;
height: 48px;
}
.image.is-64x64, .is-64x64 img, img.is-64x64 {
width: 64px;
height: 64px;
}
.image.is-96x96, .is-96x96 img, img.is-96x96 {
width: 96px;
height: 96px;
}
.is-max-128 {
max-height: 128px;
max-width: 128px;
}
.is-max-256 {
max-height: 256px;
max-width: 256px;
}
.media {
padding: 1ex;
margin: 4px;
overflow: auto;
}
.media.active-context {
background-color: #DDD;
}
.field
{
margin-top: 1em;
}
label
{
font-weight: bold;
}
.control, .select
{
margin-top: 0.5ex;
margin-bottom: 0.5ex;
}
.account-avatar
{
display: inline-block;
}
.reblog-icon
{
margin-top: 32px;
display: inline-block;
}
.media-content
{
margin-top: 1ex;
}
.media-content > div > p
{
margin-bottom: 1ex;
}
.textarea
{
max-width: 100%;
}
.errorlist
{
color: #FF0000;
}
img.emoji
{
display: inline;
max-height: 1.5rem;
max-width: 1.5rem;
vertical-align: text-bottom;
}
hr.is-hidden
{
display: none;
}
.box
{
border-radius: 5px;
border: 1px solid #000;
padding: 1.5em;
margin-bottom: 1.5em;
background-color: white;
color: black;
}
.modal {
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
display: none;
-webkit-box-pack: center;
-ms-flex-pack: center;
justify-content: center;
overflow: hidden;
position: fixed;
z-index: 40;
}
.modal-background {
position: absolute;
background-color: rgba(10,10,10,.86);
}
.modal, .modal-background {
bottom: 0;
left: 0;
right: 0;
top: 0;
}
.modal-content
{
height: 90vh;
overflow: auto;
z-index: 60;
}
.modal.is-active {
display: flex;
}

View File

@ -1,296 +0,0 @@
body, input, textarea, select {
font-family: sans-serif;
background-color: #FAFAFA;
color: #000;
margin: 1ex;
font-size: 11pt;
}
input[text], textarea
{
margin: 0 auto;
position: relative;
width: 100%;
max-width: 100em;
}
a {
color: blue;
text-decoration: underline;
}
a:active {
color: red;
text-decoration: underline;
}
a:visited {
color: purple;
text-decoration: underline;
}
img.is-32x32 {
float: left;
max-width: 32px;
max-height: auto;
margin: 4px;
}
.container {
margin: 0 auto;
position: relative;
}
@media screen and (min-width: 1024px) {
.container {
max-width: 960px;
width: 960px;
}
.container.is-fluid {
margin-left: 64px;
margin-right: 64px;
max-width: none;
width: auto;
}
.navbar,
.navbar-menu,
.navbar-start,
.navbar-end {
align-items: stretch;
display: flex;
}
.navbar-start {
justify-content: flex-start;
margin-right: auto;
}
.navbar-end {
justify-content: flex-end;
margin-left: auto;
}
}
@media screen and (max-width: 1279px) {
.container.is-widescreen {
max-width: 1152px;
width: auto;
}
}
@media screen and (max-width: 1471px) {
.container.is-fullhd {
max-width: 1344px;
width: auto;
}
}
@media screen and (min-width: 1280px) {
.container {
max-width: 1152px;
width: 1152px;
}
}
@media screen and (min-width: 1472px) {
.container {
max-width: 1344px;
width: 1344px;
}
}
main > div.container {
max-width: 100ex;
}
.level {
clear: both;
}
.title {
font-size: 3ex;
font-weight: bold;
margin-top: 1ex;
margin-bottom: 1ex;
}
.subtitle {
font-size: 1.5ex;
font-weight: bold;
margin-top: 0.25ex;
margin-bottom: 0.25ex;
}
.toot {
clear: both;
}
.image.is-32x32, .is-32x32 img, img.is-32x32 {
width: 32px;
height: 32px;
}
.image.is-48x48, .is-48x48 img, img.is-48x48 {
width: 48px;
height: 48px;
}
.image.is-64x64, .is-64x64 img, img.is-64x64 {
width: 64px;
height: 64px;
}
.image.is-96x96, .is-96x96 img, img.is-96x96 {
width: 96px;
height: 96px;
}
.is-max-128 {
max-height: 128px;
max-width: 128px;
}
.is-max-256 {
max-height: 256px;
max-width: 256px;
}
.media {
padding: 1ex;
margin: 4px;
overflow: auto;
}
.media.active-context {
background-color: #DDD;
}
.field
{
margin-top: 1em;
}
label
{
font-weight: bold;
}
.control, .select
{
margin-top: 0.5ex;
margin-bottom: 0.5ex;
}
.account-avatar
{
display: inline-block;
}
.reblog-icon
{
margin-top: 32px;
display: inline-block;
}
.media-content
{
margin-top: 1ex;
}
.media-content > div > p
{
margin-bottom: 1ex;
}
.textarea
{
max-width: 100%;
}
.errorlist
{
color: #FF0000;
}
img.emoji
{
display: inline;
max-height: 1.5rem;
max-width: 1.5rem;
vertical-align: text-bottom;
}
hr.is-hidden
{
display: none;
}
.box
{
border-radius: 3px;
border: 1px solid #000;
padding: 1em;
margin-bottom: 1em;
background-color: white;
color: black;
}
.modal {
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
display: none;
-webkit-box-pack: center;
-ms-flex-pack: center;
justify-content: center;
overflow: hidden;
position: fixed;
z-index: 40;
}
.modal-background {
position: absolute;
background-color: rgba(10,10,10,.86);
}
.modal, .modal-background {
bottom: 0;
left: 0;
right: 0;
top: 0;
}
.modal-content
{
height: 90vh;
overflow: auto;
z-index: 60;
}
.modal.is-active {
display: flex;
}
.navbar-item span {
padding-right: 1ex;
}
.card
{
padding: 1em;
margin-top: 1em;
border: 0.2em solid black;
}
.card-header
{
padding-bottom: 1em;
border-bottom: 0.2em solid black;
}
.card-image
{
padding: 1em;
margin 0, auto;
}
.button
{
border: 0.2em solid #444;
display: inline;
padding: 0.4em;
}

View File

@ -0,0 +1,704 @@
/* Global variables. */
:root,
::backdrop {
/* Set sans-serif & mono fonts */
--sans-font: -apple-system, BlinkMacSystemFont, "Avenir Next", Avenir,
"Nimbus Sans L", Roboto, "Noto Sans", "Segoe UI", Arial, Helvetica,
"Helvetica Neue", sans-serif;
--mono-font: Consolas, Menlo, Monaco, "Andale Mono", "Ubuntu Mono", monospace;
--standard-border-radius: 5px;
/* Default (light) theme */
--bg: #fff;
--accent-bg: #f5f7ff;
--text: #212121;
--text-light: #585858;
--border: #898EA4;
--accent: #0d47a1;
--accent-hover: #1266e2;
--accent-text: var(--bg);
--code: #d81b60;
--preformatted: #444;
--marked: #ffdd33;
--disabled: #efefef;
}
/* Dark theme */
@media (prefers-color-scheme: dark) {
:root,
::backdrop {
color-scheme: dark;
--bg: #212121;
--accent-bg: #2b2b2b;
--text: #dcdcdc;
--text-light: #ababab;
--accent: #ffb300;
--accent-hover: #ffe099;
--accent-text: var(--bg);
--code: #f06292;
--preformatted: #ccc;
--disabled: #111;
}
/* Add a bit of transparency so light media isn't so glaring in dark mode */
img,
video {
opacity: 0.8;
}
}
/* Reset box-sizing */
*, *::before, *::after {
box-sizing: border-box;
}
/* Reset default appearance */
textarea,
select,
input,
progress {
appearance: none;
-webkit-appearance: none;
-moz-appearance: none;
}
html {
/* Set the font globally */
font-family: var(--sans-font);
scroll-behavior: smooth;
}
/* Make the body a nice central block */
body {
color: var(--text);
background-color: var(--bg);
font-size: 1.15rem;
line-height: 1.5;
display: grid;
grid-template-columns: 1fr min(45rem, 90%) 1fr;
margin: 0;
}
body > * {
grid-column: 2;