mirror of
https://codeberg.org/vlw/vlw.se.git
synced 2025-09-13 21:13:40 +02:00
325 lines
No EOL
5.7 KiB
CSS
Executable file
325 lines
No EOL
5.7 KiB
CSS
Executable file
:root {
|
|
--primer-color-accent: 255, 255, 0;
|
|
--color-accent: yellow;
|
|
--hue-accent: 0deg;
|
|
|
|
--padding: 20px;
|
|
--running-size: 80px;
|
|
}
|
|
|
|
/* # Cornerstones */
|
|
|
|
* {
|
|
margin: 0;
|
|
box-sizing: border-box;
|
|
font-family: "Roboto Mono", sans-serif;
|
|
color: inherit;
|
|
font-size: inherit;
|
|
}
|
|
|
|
::-webkit-scrollbar {
|
|
display: none;
|
|
}
|
|
|
|
body {
|
|
display: grid;
|
|
justify-items: center;
|
|
grid-template-rows: var(--running-size) 1fr;
|
|
overscroll-behavior: none;
|
|
background-color: black;
|
|
color: white;
|
|
overflow-x: hidden;
|
|
min-height: 100svh;
|
|
font-size: 15px;
|
|
}
|
|
|
|
body.search-dialog-open {
|
|
overflow: hidden;
|
|
}
|
|
|
|
a {
|
|
display: contents;
|
|
color: inherit;
|
|
text-decoration: none;
|
|
}
|
|
|
|
/* # Components */
|
|
|
|
:is(h1, h2, h3, p, li) > a {
|
|
--underline-tickness: 3px;
|
|
|
|
display: initial;
|
|
text-decoration: underline;
|
|
text-decoration-thickness: var(--underline-tickness);
|
|
text-underline-offset: var(--underline-tickness);
|
|
text-decoration-color: var(--color-accent);
|
|
}
|
|
|
|
h1 {
|
|
font-size: 30px;
|
|
color: var(--color-accent);
|
|
}
|
|
|
|
h2 {
|
|
font-size: 30px;
|
|
}
|
|
|
|
h3 {
|
|
font-size: 25px;
|
|
}
|
|
|
|
/* ## Buttons */
|
|
|
|
button {
|
|
padding: calc(var(--padding) / 2) var(--padding);
|
|
color: white;
|
|
border: solid 2px white;
|
|
border-radius: 6px;
|
|
background-color: transparent;
|
|
cursor: pointer;
|
|
}
|
|
|
|
button.solid {
|
|
color: black;
|
|
border-color: var(--color-accent);
|
|
background-color: var(--color-accent);
|
|
}
|
|
|
|
a > button::after {
|
|
content: " ➜";
|
|
}
|
|
|
|
a[target="_blank"] > button::after,
|
|
:is(h1, h2, h3, p, li) > a[target="_blank"]::after {
|
|
content: " ⮥";
|
|
color: var(--color-accent);
|
|
white-space: nowrap;
|
|
}
|
|
|
|
a > button.solid:not(:hover)::after {
|
|
color: black;
|
|
}
|
|
|
|
/* ## Header */
|
|
|
|
header {
|
|
--border-style: solid 1px rgba(255, 255, 255, .2);
|
|
|
|
position: sticky;
|
|
top: 0;
|
|
width: 100%;
|
|
height: var(--running-size);
|
|
border-bottom: var(--border-style);
|
|
display: grid;
|
|
align-items: stretch;
|
|
justify-items: end;
|
|
grid-template-columns: 1fr var(--running-size);
|
|
background-color: rgba(0, 0, 0, .8);
|
|
z-index: 100;
|
|
-webkit-backdrop-filter: blur(20px);
|
|
backdrop-filter: blur(20px);
|
|
}
|
|
|
|
header nav {
|
|
display: flex;
|
|
align-items: center;
|
|
padding: var(--padding);
|
|
}
|
|
|
|
header .logo {
|
|
width: calc(var(--running-size) - 1px);
|
|
height: calc(var(--running-size) - 1px);
|
|
display: grid;
|
|
align-items: center;
|
|
justify-items: center;
|
|
border-left: var(--border-style);
|
|
}
|
|
|
|
header .logo path.stroke {
|
|
fill: var(--color-accent);
|
|
}
|
|
|
|
header searchbox {
|
|
display: none;
|
|
}
|
|
|
|
/* ## Main */
|
|
|
|
main {
|
|
transition: 400ms transform;
|
|
position: relative;
|
|
padding: calc(var(--padding) * 1.5);
|
|
width: 100%;
|
|
max-width: 1000px;
|
|
}
|
|
|
|
main > * {
|
|
transition: 100ms opacity;
|
|
opacity: 1;
|
|
}
|
|
|
|
main.loading > * {
|
|
opacity: 0;
|
|
}
|
|
|
|
/* ## Search */
|
|
|
|
/* ### Box */
|
|
|
|
searchbox {
|
|
display: grid;
|
|
width: 100%;
|
|
border-left: var(--border-style);
|
|
grid-template-columns: 25px 1fr;
|
|
align-items: center;
|
|
padding: var(--padding);
|
|
gap: var(--padding);
|
|
fill: var(--color-accent);
|
|
font-size: 13px;
|
|
color: rgba(255, 255, 255, .5);
|
|
cursor: pointer;
|
|
}
|
|
|
|
/* ### Dialog */
|
|
|
|
body.search-dialog-open main {
|
|
transform: scale(.94);
|
|
}
|
|
|
|
dialog.search {
|
|
transition: 200ms height cubic-bezier(.41,0,.34,.99);
|
|
margin: auto;
|
|
width: 100%;
|
|
max-width: 1000px;
|
|
height: calc(var(--running-size) + (var(--padding) * 5));
|
|
max-height: 1000px;
|
|
border-color: transparent;
|
|
background-color: transparent;
|
|
overflow: visible;
|
|
outline: none;
|
|
}
|
|
|
|
dialog.search.active {
|
|
height: 70vh;
|
|
}
|
|
|
|
dialog.search search {
|
|
transition: 400ms transform, 200ms opacity;
|
|
width: 100%;
|
|
height: 100%;
|
|
display: grid;
|
|
grid-template-rows: var(--running-size) 1fr;
|
|
gap: calc(var(--padding) * 2);
|
|
transform: scale(1.1);
|
|
overflow: hidden;
|
|
background-color: rgba(255, 255, 255, .05);
|
|
-webkit-backdrop-filter: blur(20px);
|
|
backdrop-filter: brightness(.3) blur(20px);
|
|
border-radius: 12px;
|
|
box-shadow: 0 10px 30px 10px black;
|
|
opacity: 0;
|
|
}
|
|
|
|
body.search-dialog-open dialog.search search {
|
|
transform: scale(1);
|
|
padding: calc(var(--padding) * 1.5);
|
|
opacity: 1;
|
|
}
|
|
|
|
search input {
|
|
transition: 200ms background-color, 200ms box-shadow, 200ms color;
|
|
border-radius: 6px;
|
|
border: none;
|
|
outline: none;
|
|
color: black;
|
|
font-size: 16px;
|
|
padding: var(--padding) calc(var(--padding) * 1.5);
|
|
background-color: rgba(255, 255, 255, .05);
|
|
box-shadow: 0 5px 70px 10px rgba(0, 0, 0, .3);
|
|
color: white;
|
|
}
|
|
|
|
search input:focus {
|
|
background-color: rgba(255, 255, 255, .9);
|
|
box-shadow: 0 10px 30px 10px black;
|
|
color: black;
|
|
}
|
|
|
|
/* ### Search results */
|
|
|
|
dialog.search search search-results {
|
|
overflow-y: auto;
|
|
}
|
|
|
|
dialog.search search search-results > svg {
|
|
margin: auto;
|
|
width: 150px;
|
|
fill: rgba(255, 255, 255, .05);
|
|
}
|
|
|
|
/* # Feature queries */
|
|
|
|
@media (hover: hover) {
|
|
:is(h1, h2, h3, p, li) > a:hover {
|
|
text-underline-offset: 1px;
|
|
text-decoration-thickness: calc(var(--underline-tickness) * 2);
|
|
color: var(--color-accent);
|
|
}
|
|
|
|
/* # Components */
|
|
|
|
button {
|
|
transition: 200ms background-color, 200ms border-color, 200ms color;
|
|
}
|
|
|
|
button:hover {
|
|
border-color: rgba(255, 255, 255, .2);
|
|
background-color: rgba(255, 255, 255, .1);
|
|
}
|
|
|
|
button.solid:hover {
|
|
color: var(--color-accent);
|
|
border-color: rgba(var(--primer-color-accent), .2);
|
|
background-color: rgba(var(--primer-color-accent), .2);
|
|
box-shadow: 0 -10px 20px 10px rgba(var(--primer-color-accent), .05);
|
|
}
|
|
|
|
/* ## Header */
|
|
|
|
header .logo:hover path.solid {
|
|
fill: var(--color-accent);
|
|
}
|
|
|
|
searchbox {
|
|
transition: 200ms background-color;
|
|
}
|
|
|
|
searchbox:hover {
|
|
background-color: rgba(255, 255, 255, .07);
|
|
}
|
|
}
|
|
|
|
/* # Size queries */
|
|
|
|
@media (min-width: 700px) {
|
|
header {
|
|
grid-template-columns: 1fr 250px var(--running-size);
|
|
}
|
|
|
|
header nav {
|
|
justify-self: start;
|
|
margin: 0 calc(var(--padding) / 2);
|
|
}
|
|
|
|
/* # Menu */
|
|
|
|
/* < Move the search box to the header */
|
|
header searchbox {
|
|
display: grid;
|
|
}
|
|
|
|
menu searchbox {
|
|
display: none;
|
|
}
|
|
/* /> */
|
|
} |