website/style.css
2023-08-07 03:56:50 +03:00

1068 lines
18 KiB
CSS

/*
OS Component Website
====================
shamelessly stolen CSS from systemd
https://github.com/systemd/systemd/tree/main/docs
*/
/* GNOME Color Palette */
:root {
--rounded-corner: 12px;
--blue1: rgb(153, 193, 241);
--blue2: rgb(98, 160, 234);
--blue3: rgb(53, 132, 228);
--blue4: rgb(28, 113, 216);
--blue5: rgb(26, 95, 180);
--green1: rgb(143, 240, 164);
--green2: rgb(87, 227, 137);
--green3: rgb(51, 209, 122);
--green4: rgb(46, 194, 126);
--green5: rgb(38, 162, 105);
--yellow1: rgb(249, 240, 107);
--yellow2: rgb(248, 228, 92);
--yellow3: rgb(246, 211, 45);
--yellow4: rgb(245, 194, 17);
--yellow5: rgb(229, 165, 10);
--orange1: rgb(255, 190, 111);
--orange2: rgb(255, 163, 72);
--orange3: rgb(255, 120, 0);
--orange4: rgb(230, 97, 0);
--orange5: rgb(198, 70, 0);
--red1: rgb(246, 97, 81);
--red2: rgb(237, 51, 59);
--red3: rgb(224, 27, 36);
--red4: rgb(192, 28, 40);
--red5: rgb(165, 29, 45);
--purple1: rgb(220, 138, 221);
--purple2: rgb(192, 97, 203);
--purple3: rgb(145, 65, 172);
--purple4: rgb(129, 61, 156);
--purple5: rgb(97, 53, 131);
--brown1: rgb(205, 171, 143);
--brown2: rgb(181, 131, 90);
--brown3: rgb(152, 106, 68);
--brown4: rgb(134, 94, 60);
--brown5: rgb(99, 69, 44);
--light1: rgb(255, 255, 255);
--light2: rgb(246, 245, 244);
--light3: rgb(222, 221, 218);
--light4: rgb(192, 191, 188);
--light5: rgb(154, 153, 150);
--dark1: rgb(119, 118, 123);
--dark2: rgb(94, 92, 100);
--dark3: rgb(61, 56, 70);
--dark4: rgb(36, 31, 49);
--dark5: rgb(0, 0, 0);
--primary-color: var(--purple2); /* Set your project color */
--borders: var(--light3);
--dark-op05: rgba(0, 0, 0, 0.05);
--dark-op07: rgba(0, 0, 0, 0.07);
--dark-op09: rgba(0, 0, 0, 0.09);
--dark-op40: rgba(0, 0, 0, 0.4);
--dark-op50: rgba(0, 0, 0, 0.5);
}
/* Typography */
@font-face {
font-family: "InterVar";
font-weight: 100 900;
font-display: swap;
font-style: oblique italic 0deg 10deg;
src: url("fonts/Inter.var.woff2?v=4.0") format("woff2");
}
* {
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
box-sizing: border-box;
}
html,
body {
margin: 0;
padding: 0;
font-size: 16px;
font-family: "InterVar", sans-serif;
font-weight: 400;
line-height: 1.6;
scroll-behavior: smooth;
}
body {
color: var(--dark4);
background-color: var(--light2);
/* ⇩⇩ put footer at the bottom for short pages, such as the 404 ⇩⇩ */
display: grid;
min-height: 100vh;
grid-template-rows: auto minmax(auto, 1fr) auto; /* header, stuff, footer */
}
h1,
h2,
h3,
h4,
h5,
h6 {
margin: 3rem 0 1rem;
font-weight: 600;
line-height: 1.25;
font-variation-settings: "wght" 600; /* needed for webkit */
}
h1 {
font-size: 1.5rem;
font-weight: 100;
font-style: normal;
margin: 3rem 0 1rem;
}
@media screen and (min-width: 650px) {
h1 {
font-size: 1.6rem;
}
}
h2 {
font-size: 1.2rem;
}
@media (prefers-color-scheme: dark) {
body {
filter: invert(100%) hue-rotate(180deg);
}
html {
background-color: var(--dark5);
}
img,
video,
iframe {
filter: invert(100%) hue-rotate(180deg);
}
}
a {
font-weight: 600;
text-decoration: none;
color: var(--primary-color);
cursor: pointer;
font-variation-settings: "wght" 600; /* needed for webkit */
}
a:hover {
text-decoration: underline;
}
b {
font-weight: 600;
}
small {
color: var(--dark-op50);
}
dl {
padding: 0;
}
dl dt {
padding: 0;
margin-top: 1rem;
font-size: 1rem;
font-weight: bold;
}
dl dd {
padding: 0;
margin-bottom: 1rem;
}
hr {
margin: 3rem auto 4rem;
width: 40%;
opacity: 40%;
}
img {
display: block;
margin: 2rem auto;
max-width: 100%;
}
img.full {
width: 100%;
}
img.pixels {
image-rendering: crisp-edges; /* older firefox browsers */
image-rendering: pixelated;
}
blockquote {
padding: 0 1rem;
margin-left: 0;
color: var(--dark-op40);
border-left: 0.3rem solid var(--dark-op07);
}
blockquote > :first-child {
margin-top: 0;
}
blockquote > :last-child {
margin-bottom: 0;
}
.ascii {
line-height: normal;
max-width: 100%;
overflow-x: auto;
padding: 1rem 1rem;
transition: 800ms;
background: linear-gradient(
to top,
rgba(36, 31, 49, 1) 0%,
rgba(36, 31, 49, 0) 100%
);
background-clip: text;
-webkit-background-clip: text;
-moz-background-clip: text;
-webkit-text-fill-color: transparent;
-moz-text-fill-color: transparent;
}
.ascii:hover {
-webkit-text-fill-color: var(--dark4);
-moz-text-fill-color: var(--dark4);
text-shadow: var(--purple2) -6px 0 12px, var(--blue2) 6px 0 12px;
}
@media only screen and (max-device-width: 480px) {
/*mobile*/
.ascii {
max-width: 90vw;
}
}
kbd {
background-color: var(--dark-op05);
border: 1px solid var(--dark-op07);
border-radius: 4px;
box-shadow: inset 0 -1px 0 var(--dark-op09);
color: var(--dark4);
display: inline-block;
font-size: 11px;
line-height: 10px;
padding: 3px 5px;
vertical-align: middle;
cursor: pointer;
user-select: none;
-webkit-user-select: none;
}
kbd:active {
box-shadow: inset 0 0px 0 var(--dark-op09);
vertical-align: bottom;
filter: contrast(0.2);
}
/* Layout */
.container {
width: 80%;
margin-left: auto;
margin-right: auto;
max-width: 720px;
}
@media only screen and (max-device-width: 480px) {
/*mobile*/
.container {
width: 90%;
}
}
/* Singletons */
#logo {
display: block;
width: 130px;
height: 26px;
background: url("assets/page-logo.svg") no-repeat center;
padding: 5rem 0 3rem;
margin: 0 auto;
position: relative;
}
#logo a {
display: block;
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
color: rgba(0, 0, 0, 0); /* make text transparent */
cursor: pointer;
}
.page-logo > img {
margin: 0 auto;
}
@media (prefers-color-scheme: dark) {
#logo {
filter: invert(100%) hue-rotate(180deg); /* uninvert */
background-image: url("assets/page-logo-i.svg");
}
}
.brand-white {
background-color: #fff;
}
.brand-green {
background-color: #30d475;
}
.brand-black {
background-color: #201a26;
color: white;
}
.page-link::after {
content: " →";
}
.site-link::after {
content: " ↗";
}
/* Footer */
footer {
text-align: center;
padding: 3em 0 3em;
font-size: 1em;
margin-top: 4rem;
}
/* Table */
table {
border-collapse: collapse;
border-spacing: 0;
}
table {
display: block;
width: 100%;
overflow: auto;
word-break: normal;
word-break: keep-all;
-webkit-overflow-scrolling: touch;
}
table th {
font-weight: bold;
}
table th,
table td {
padding: 0.5rem 1rem;
border: 1px solid var(--dark-op05);
}
td,
th {
padding: 0;
}
/* Make tables vertically aligned to the top */
tbody td {
vertical-align: top;
}
/* Github Code Highlighting */
.highlight table td {
padding: 5px;
}
.highlight table pre {
margin: 0;
}
.highlight .cm {
color: #999988;
font-style: italic;
}
.highlight .cp {
color: #999999;
font-weight: bold;
}
.highlight .c1 {
color: #999988;
font-style: italic;
}
.highlight .cs {
color: #999999;
font-weight: bold;
font-style: italic;
}
.highlight .c,
.highlight .cd {
color: #999988;
font-style: italic;
}
.highlight .err {
color: #a61717;
background-color: #e3d2d2;
}
.highlight .gd {
color: #000000;
background-color: #ffdddd;
}
.highlight .ge {
color: #000000;
font-style: italic;
}
.highlight .gr {
color: #aa0000;
}
.highlight .gh {
color: #999999;
}
.highlight .gi {
color: #000000;
background-color: #ddffdd;
}
.highlight .go {
color: #888888;
}
.highlight .gp {
color: #555555;
}
.highlight .gs {
font-weight: bold;
}
.highlight .gu {
color: #aaaaaa;
}
.highlight .gt {
color: #aa0000;
}
.highlight .kc {
color: #000000;
font-weight: bold;
}
.highlight .kd {
color: #000000;
font-weight: bold;
}
.highlight .kn {
color: #000000;
font-weight: bold;
}
.highlight .kp {
color: #000000;
font-weight: bold;
}
.highlight .kr {
color: #000000;
font-weight: bold;
}
.highlight .kt {
color: #445588;
font-weight: bold;
}
.highlight .k,
.highlight .kv {
color: #000000;
font-weight: bold;
}
.highlight .mf {
color: #009999;
}
.highlight .mh {
color: #009999;
}
.highlight .il {
color: #009999;
}
.highlight .mi {
color: #009999;
}
.highlight .mo {
color: #009999;
}
.highlight .m,
.highlight .mb,
.highlight .mx {
color: #009999;
}
.highlight .sb {
color: #d14;
}
.highlight .sc {
color: #d14;
}
.highlight .sd {
color: #d14;
}
.highlight .s2 {
color: #d14;
}
.highlight .se {
color: #d14;
}
.highlight .sh {
color: #d14;
}
.highlight .si {
color: #d14;
}
.highlight .sx {
color: #d14;
}
.highlight .sr {
color: #009926;
}
.highlight .s1 {
color: #d14;
}
.highlight .ss {
color: #990073;
}
.highlight .s {
color: #d14;
}
.highlight .na {
color: #008080;
}
.highlight .bp {
color: #999999;
}
.highlight .nb {
color: #0086b3;
}
.highlight .nc {
color: #445588;
font-weight: bold;
}
.highlight .no {
color: #008080;
}
.highlight .nd {
color: #3c5d5d;
font-weight: bold;
}
.highlight .ni {
color: #800080;
}
.highlight .ne {
color: #990000;
font-weight: bold;
}
.highlight .nf {
color: #990000;
font-weight: bold;
}
.highlight .nl {
color: #990000;
font-weight: bold;
}
.highlight .nn {
color: #555555;
}
.highlight .nt {
color: #000080;
}
.highlight .vc {
color: #008080;
}
.highlight .vg {
color: #008080;
}
.highlight .vi {
color: #008080;
}
.highlight .nv {
color: #008080;
}
.highlight .ow {
color: #000000;
font-weight: bold;
}
.highlight .o {
color: #000000;
font-weight: bold;
}
.highlight .w {
color: #bbbbbb;
}
.highlight {
background-color: #f8f8f8;
}
/* Code Blocks */
.highlighter-rouge {
line-height: normal;
margin: 1rem 0 1rem;
padding: 2px 1rem;
border-radius: 8px;
background-color: var(--light1);
max-width: 100%;
overflow-x: auto;
box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.03), 0 1px 3px 1px rgba(0, 0, 0, 0.07),
0 2px 6px 2px rgba(0, 0, 0, 0.03);
}
@media only screen and (max-device-width: 480px) {
/*mobile*/
.highlighter-rouge {
max-width: 90vw;
}
}
.highlighter-rouge * {
background-color: var(--light1);
}
/* Inline Code */
code.highlighter-rouge {
padding: 2px 6px;
background-color: var(--dark-op07);
box-shadow: none;
}
/* Buttons */
.dialog-buttons {
display: flex;
flex-direction: row;
align-items: baseline;
justify-content: space-between;
margin-top: 6rem;
}
.inline-button {
display: inline-block;
font-weight: 900;
font-size: 90%;
padding: 0.4rem 1rem;
border-radius: var(--rounded-corner);
background-color: var(--dark-op05);
color: var(--dark5);
}
/* Comments */
.avatar {
background-position: center;
background-size: cover;
border-radius: var(--rounded-corner);
box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.03), 0 1px 3px 1px rgba(0, 0, 0, 0.07),
0 2px 6px 2px rgba(0, 0, 0, 0.03);
margin: 0;
overflow: hidden;
}
.avatar img {
height: 100%;
width: 100%;
}
section#comments .comment time,
section#comments .comment footer {
text-align: unset;
padding: unset;
font-size: smaller;
opacity: 0.9;
}
section#comments .comment {
display: grid;
column-gap: 1rem;
grid-template-areas: "avatar name" "avatar time" "avatar post" "...... card" "...... interactions";
grid-template-columns: min-content;
justify-items: start;
margin: 2em auto 2em -1em;
padding: 1em;
}
section#comments .comment .avatar-link {
grid-area: avatar;
height: 4rem;
position: relative;
width: 4rem;
}
section#comments .comment .avatar-link .avatar {
height: 100%;
width: 100%;
}
section#comments .comment .avatar-link.op::after {
background-color: var(--purple3);
border-radius: 50%;
bottom: -0.25rem;
color: var(--light2);
content: "✓";
display: block;
font-size: 1.25rem;
font-weight: bold;
height: 1.5rem;
line-height: 1.5rem;
position: absolute;
right: -0.25rem;
text-align: center;
width: 1.5rem;
}
section#comments .comment .author {
align-items: center;
cursor: default;
display: flex;
font-weight: bold;
gap: 0.5em;
grid-area: name;
}
section#comments .comment .author img {
margin: unset;
max-width: unset;
}
section#comments .comment .author .instance {
background-color: var(--light3);
border-radius: 9999px;
color: var(--dark4);
font-size: smaller;
font-weight: normal;
padding: 0.2em 0.8em;
}
section#comments .comment .author .instance:hover {
opacity: 0.8;
text-decoration: none;
}
section#comments .comment .author .instance.op {
background-color: var(--purple2);
color: var(--light2);
}
section#comments .comment .author .instance.op::before {
content: "✓";
font-weight: bold;
margin-inline-end: 0.25em;
margin-inline-start: -0.25em;
}
section#comments .comment time {
grid-area: time;
line-height: 1.5rem;
}
section#comments .comment time.edited::after {
content: " *";
}
section#comments .comment main {
grid-area: post;
justify-self: stretch;
}
section#comments .comment main p:first-child {
margin-top: 0.25em;
}
section#comments .comment main p:last-child {
margin-bottom: 0;
}
section#comments .comment .card,
section#comments .comment .qr,
section#comments .comment .app-badge,
section#comments .comment .products .product,
.products section#comments .comment .product {
color: inherit;
grid-area: card;
max-width: 400px;
}
section#comments .comment .card:hover,
section#comments .comment .qr:hover,
section#comments .comment .app-badge:hover,
section#comments .comment .products .product:hover,
.products section#comments .comment .product:hover {
text-decoration: none;
}
section#comments .comment .card figure,
section#comments .comment .qr figure,
section#comments .comment .app-badge figure,
section#comments .comment .products .product figure,
.products section#comments .comment .product figure {
border-radius: inherit;
overflow: hidden;
}
section#comments .comment .card figure {
background-color: var(--light1);
border-radius: var(--rounded-corner);
margin-left: 0;
margin-right: 0;
box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.03), 0 1px 3px 1px rgba(0, 0, 0, 0.07),
0 2px 6px 2px rgba(0, 0, 0, 0.03);
}
section#comments .comment .card figure img {
margin: unset;
}
section#comments .comment .card figcaption,
section#comments .comment .qr figcaption,
section#comments .comment .app-badge figcaption,
section#comments .comment .products .product figcaption,
.products section#comments .comment .product figcaption {
display: grid;
gap: 0.5em;
margin: 0;
padding: 1em;
text-align: left;
}
section#comments .comment .card figcaption *,
section#comments .comment .qr figcaption *,
section#comments .comment .app-badge figcaption *,
section#comments .comment .products .product figcaption *,
.products section#comments .comment .product figcaption * {
display: -webkit-box;
line-height: 1.25;
margin: 0;
overflow: hidden;
padding: 0;
-webkit-box-orient: vertical;
-webkit-line-clamp: 2;
}
section#comments .comment:first-of-type .card,
section#comments .comment:first-of-type .qr,
section#comments .comment:first-of-type .app-badge,
section#comments .comment:first-of-type .products .product,
.products section#comments .comment:first-of-type .product {
display: none;
}
section#comments .comment footer {
display: flex;
gap: 1.25em;
grid-area: interactions;
margin-top: 0.925rem;
}
section#comments .comment footer .faves {
cursor: default;
}
section#comments .comment footer .faves::before {
color: var(--red2);
content: "❤️";
margin-inline-end: 0.25em;
}
section#comments .comment footer .boosts {
cursor: default;
}
section#comments .comment footer .boosts::before {
color: var(--orange2);
content: "🔁";
margin-inline-end: 0.25em;
}
section#comments .comment .emoji {
display: inline;
height: 1.25em;
vertical-align: middle;
width: 1.25em;
}
section#comments .comment .invisible {
display: none;
}
section#comments .comment .ellipsis::after {
content: "…";
}
section#comments .comment details summary {
background-image: linear-gradient(
90deg,
transparent,
transparent 0.4rem,
var(--light1) 0.4rem,
var(--light1) calc(100% - 0.4rem),
transparent calc(100% - 0.4rem),
transparent
),
repeating-linear-gradient(
45deg,
var(--dark4),
var(--dark4) 0.3rem,
var(--purple2) 0.3rem,
var(--purple2) 0.6rem
);
border-radius: 5px;
color: inherit;
cursor: default;
margin-top: 0.925rem;
padding: 1em;
}
/* Navbar */
.nav-container {
display: block;
width: 80%;
margin-left: auto;
margin-right: auto;
max-width: 720px;
}
.nav {
/* background: linear-gradient(90deg, var(--purple2) 0%, var(--blue2) 100%);
box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.03), 0 1px 3px 1px rgba(0, 0, 0, 0.07), 0 2px 6px 2px rgba(0, 0, 0, 0.03); */
overflow: auto;
}
.nav-container {
margin: 1rem auto;
position: relative;
text-align: center;
}
.nav-title {
color: var(--dark-op50);
display: inline-block;
margin: 0;
padding-right: 0.2rem;
}
.nav-title:hover,
.nav-title:focus {
text-decoration: underline;
}
.nav ul {
list-style-type: none;
margin: 1rem 0 0;
padding: 0;
text-align: center;
}
.nav li {
color: var(--dark-op50);
display: inline-block;
padding: 0 1rem 0 0;
}
.nav li:last-child {
padding-right: 0;
}
.nav a {
display: inline-block;
font-weight: 900;
font-size: 90%;
padding: 0.4rem 1rem;
border-radius: var(--rounded-corner);
background-color: transparent;
color: var(--dark-op50);
/* transition: 200ms; */
}
.nav a:hover {
background-color: var(--dark-op05);
/* box-shadow: var(--purple2) -6px 0 12px, var(--blue2) 6px 0 12px; */
}
.nav svg {
transform: translateY(0.125em);
fill: var(--dark-op50);
}
@media (min-width: 650px) {
.nav-container {
text-align: left;
}
.nav ul {
bottom: 0;
position: absolute;
right: 0;
}
}