Hello whiny.lol
This commit is contained in:
775
assets/css/styles.css
Executable file
775
assets/css/styles.css
Executable file
@@ -0,0 +1,775 @@
|
||||
:root {
|
||||
/* Fonts */
|
||||
--body: "Inter Variable", sans-serif;
|
||||
--heading: "IBM Plex Sans Variable", sans-serif;
|
||||
--monospace: "IBM Plex Mono", monospace;
|
||||
|
||||
/* Padding */
|
||||
--padding-100: 0.5rem;
|
||||
--padding-200: 0.75rem;
|
||||
--padding-300: 1rem;
|
||||
--padding-400: 1.25rem;
|
||||
--padding-500: 1.5rem;
|
||||
--padding-600: 1.75rem;
|
||||
--padding-700: 2rem;
|
||||
|
||||
/* Spacing */
|
||||
--spacing-small: 2.5rem;
|
||||
--spacing-medium: 3rem;
|
||||
--spacing-large: 6rem;
|
||||
|
||||
/* Widths */
|
||||
--width-page: 60rem;
|
||||
--width-content: 50rem;
|
||||
--width-constrained: 72ch;
|
||||
|
||||
/* UI */
|
||||
--text: rgb(240 240 240);
|
||||
--text-2: rgb(200 200 200);
|
||||
--text-3: rgb(150 150 150);
|
||||
|
||||
--primary: rgb(28 28 55);
|
||||
--secondary: rgb(15 12 35);
|
||||
--background: rgb(22 22 40);
|
||||
|
||||
--accent-dark: rgb(45 45 65);
|
||||
--accent-light: rgb(50 50 80);
|
||||
|
||||
/* Miscellaneous */
|
||||
--header-height: 64px;
|
||||
}
|
||||
|
||||
/* CSS Reset - Josh W. Comeau */
|
||||
|
||||
*,
|
||||
*::before,
|
||||
*::after {
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
* {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
input,
|
||||
button,
|
||||
textarea,
|
||||
select {
|
||||
font: inherit;
|
||||
}
|
||||
|
||||
img,
|
||||
picture,
|
||||
video,
|
||||
canvas,
|
||||
svg {
|
||||
display: block;
|
||||
max-inline-size: 100%;
|
||||
block-size: auto;
|
||||
}
|
||||
|
||||
/* Typography */
|
||||
|
||||
h1,
|
||||
h2,
|
||||
h3,
|
||||
h4,
|
||||
h5,
|
||||
h6 {
|
||||
font-family: var(--heading);
|
||||
font-variation-settings: 'wdth' 85; /* I have to add this due to a WebKit issue (215605) */
|
||||
font-weight: 500;
|
||||
text-wrap: balance;
|
||||
overflow-wrap: break-word;
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-size: clamp(1.625rem, 1rem + 1.25vw, 1.75rem);
|
||||
line-height: 1.25em;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-size: clamp(1.5rem, 0.875rem + 1.25vw, 1.625rem);
|
||||
line-height: 1.275em;
|
||||
}
|
||||
|
||||
h3 {
|
||||
font-size: clamp(1.375rem, 0.75rem + 1.25vw, 1.5rem);
|
||||
line-height: 1.3em;
|
||||
}
|
||||
|
||||
h4 {
|
||||
font-size: clamp(1.25rem, 0.625rem + 1.25vw, 1.375rem);
|
||||
line-height: 1.375em;
|
||||
}
|
||||
|
||||
h5 {
|
||||
font-size: clamp(1.125rem, 0.5rem + 1.25vw, 1.25rem);
|
||||
line-height: 1.45em;
|
||||
}
|
||||
|
||||
h6 {
|
||||
font-size: clamp(1rem, 0.375rem + 1.25vw, 1.125rem);
|
||||
}
|
||||
|
||||
p {
|
||||
overflow-wrap: break-word;
|
||||
word-break: break-word;
|
||||
}
|
||||
|
||||
a {
|
||||
color: var(--text);
|
||||
text-decoration: none;
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
a:is(:hover, :focus-visible) {
|
||||
color: var(--text-2);
|
||||
}
|
||||
|
||||
strong {
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
pre {
|
||||
font-size: 0.875rem;
|
||||
padding: var(--padding-300);
|
||||
border: 1px solid var(--accent-dark);
|
||||
white-space: pre-wrap;
|
||||
}
|
||||
|
||||
code {
|
||||
font-family: var(--monospace);
|
||||
}
|
||||
|
||||
code:not(pre code) {
|
||||
background-color: var(--accent-dark);
|
||||
padding-inline: 0.125em;
|
||||
}
|
||||
|
||||
time {
|
||||
font-weight: inherit;
|
||||
}
|
||||
|
||||
/* Page elements */
|
||||
|
||||
html {
|
||||
scroll-behavior: smooth;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
-moz-osx-font-smoothing: grayscale;
|
||||
text-rendering: optimizeLegibility;
|
||||
scrollbar-gutter: stable;
|
||||
}
|
||||
|
||||
html:has(dialog[open]) {
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
body {
|
||||
font-family: var(--body);
|
||||
font-size: 1rem;
|
||||
line-height: 1.5;
|
||||
background-color: var(--background);
|
||||
color: var(--text);
|
||||
min-block-size: 100vh;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
main {
|
||||
flex: 1;
|
||||
}
|
||||
|
||||
/* Header & navigation */
|
||||
|
||||
header {
|
||||
position: sticky;
|
||||
inset-block-start: 0;
|
||||
background-color: var(--primary);
|
||||
z-index: 10;
|
||||
}
|
||||
|
||||
.main-navigation {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
padding: var(--padding-400) var(--padding-200);
|
||||
gap: var(--padding-400);
|
||||
}
|
||||
|
||||
.site-title svg {
|
||||
block-size: 24px;
|
||||
}
|
||||
|
||||
/* Main navigation */
|
||||
|
||||
.main-navigation a:is(:hover, :focus-visible) {
|
||||
color: var(--text-2);
|
||||
}
|
||||
|
||||
#menu-button {
|
||||
display: none;
|
||||
font-size: inherit;
|
||||
}
|
||||
|
||||
#menu-button:is(:hover, :focus-visible, [aria-expanded='true']) {
|
||||
color: var(--text-2);
|
||||
}
|
||||
|
||||
/* Mobile menu */
|
||||
|
||||
.mobile-navigation {
|
||||
position: fixed;
|
||||
inline-size: 100%;
|
||||
background-color: var(--primary);
|
||||
inset-block-start: var(--header-height);
|
||||
border-block-end: 1px solid var(--accent-light);
|
||||
}
|
||||
|
||||
.mobile-navigation.nav-open {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.mobile-navigation.nav-closed {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.mobile-navigation .row {
|
||||
gap: var(--padding-400);
|
||||
padding-inline: var(--padding-200);
|
||||
padding-block-end: var(--padding-600);
|
||||
}
|
||||
|
||||
.mobile-navigation a {
|
||||
font-family: var(--heading);
|
||||
font-variation-settings: 'wdth' 85;
|
||||
font-size: 1.5rem;
|
||||
line-height: 1.35em;
|
||||
}
|
||||
|
||||
.mobile-navigation a:is(:hover, :focus-visible) {
|
||||
color: var(--text-2);
|
||||
}
|
||||
|
||||
/* Hero */
|
||||
|
||||
.hero {
|
||||
background: linear-gradient(var(--primary), var(--secondary));
|
||||
border-block-end: 1px solid var(--accent-light);
|
||||
}
|
||||
|
||||
.hero-inner {
|
||||
padding-block: var(--padding-600) var(--spacing-medium);
|
||||
padding-inline: var(--padding-200);
|
||||
}
|
||||
|
||||
.hero-inner:not(.home) * + * {
|
||||
margin-block-start: var(--padding-500);
|
||||
}
|
||||
|
||||
.hero-inner p {
|
||||
font-size: 0.875rem;
|
||||
color: var(--text-2);
|
||||
}
|
||||
|
||||
/* Content specific */
|
||||
|
||||
.hero-inner .cover {
|
||||
border-radius: var(--padding-200);
|
||||
}
|
||||
|
||||
/* Homepage specific */
|
||||
|
||||
.hero-inner.home {
|
||||
padding-block: 4.75rem var(--spacing-large);
|
||||
}
|
||||
|
||||
.hero-inner.home h1 {
|
||||
font-size: clamp(2.125rem, 0.25rem + 3.75vw, 2.5rem);
|
||||
line-height: 1.3em;
|
||||
margin-block-end: 0;
|
||||
max-inline-size: 20ch;
|
||||
}
|
||||
|
||||
.hero-inner.home p {
|
||||
color: var(--text);
|
||||
font-size: clamp(1rem, 0.375rem + 1.25vw, 1.125rem);
|
||||
max-inline-size: 35ch;
|
||||
}
|
||||
|
||||
/* Container */
|
||||
|
||||
.container {
|
||||
padding: var(--spacing-medium) var(--padding-200);
|
||||
}
|
||||
|
||||
.width-content,
|
||||
.width-page {
|
||||
margin-inline: auto;
|
||||
}
|
||||
|
||||
.width-content {
|
||||
max-inline-size: var(--width-content);
|
||||
}
|
||||
|
||||
.width-page {
|
||||
max-inline-size: var(--width-page);
|
||||
}
|
||||
|
||||
/* Row */
|
||||
|
||||
.row {
|
||||
display: flex;
|
||||
flex-flow: wrap;
|
||||
align-items: center;
|
||||
gap: var(--padding-300);
|
||||
}
|
||||
|
||||
.row:is(ul) {
|
||||
list-style: none;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.row.centered {
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.row.vertical {
|
||||
flex-direction: column;
|
||||
align-items: initial;
|
||||
}
|
||||
|
||||
/* Link */
|
||||
|
||||
.link {
|
||||
display: inline-block;
|
||||
font-size: 0.875rem;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.link:is(button) {
|
||||
color: inherit;
|
||||
background: transparent;
|
||||
padding: 0;
|
||||
border: none;
|
||||
}
|
||||
|
||||
/* Button-style links */
|
||||
|
||||
.link:is(.badge, .pill) {
|
||||
background-color: var(--primary);
|
||||
border: 1px solid var(--accent-light);
|
||||
border-radius: var(--padding-300);
|
||||
}
|
||||
|
||||
.link:is(.badge, .pill):is(:hover, :focus-visible) {
|
||||
color: inherit;
|
||||
background-color: var(--accent-light);
|
||||
}
|
||||
|
||||
.link.badge {
|
||||
padding: var(--padding-100) var(--padding-300);
|
||||
}
|
||||
|
||||
.link.pill {
|
||||
padding: var(--padding-300);
|
||||
}
|
||||
|
||||
/* With icon */
|
||||
|
||||
.link.icon {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: var(--padding-300);
|
||||
}
|
||||
|
||||
.link.icon :is(img, svg) {
|
||||
inline-size: 20px;
|
||||
}
|
||||
|
||||
/* Meta */
|
||||
|
||||
.link.meta {
|
||||
color: var(--text-2);
|
||||
}
|
||||
|
||||
.link.meta:is(:hover, :focus-visible) {
|
||||
color: var(--text);
|
||||
}
|
||||
|
||||
.link.meta.icon {
|
||||
gap: var(--padding-100);
|
||||
}
|
||||
|
||||
.link.icon.meta :is(img, svg) {
|
||||
inline-size: 18px;
|
||||
}
|
||||
|
||||
/* Pagination */
|
||||
|
||||
.pagination {
|
||||
padding-block-start: var(--spacing-medium);
|
||||
}
|
||||
|
||||
.pagination .link {
|
||||
padding: var(--padding-200) var(--padding-400);
|
||||
border-radius: var(--padding-300);
|
||||
border: 1px solid var(--accent-dark);
|
||||
}
|
||||
|
||||
.pagination .link:is(:hover, :focus-visible) {
|
||||
color: inherit;
|
||||
border: 1px solid var(--accent-light);
|
||||
background-color: var(--accent-light);
|
||||
}
|
||||
|
||||
.pagination .link.current-page {
|
||||
background-color: var(--secondary);
|
||||
border: 1px solid var(--accent-light);
|
||||
cursor: default;
|
||||
}
|
||||
|
||||
/* Reusable blocks for text content */
|
||||
|
||||
.block {
|
||||
border: 1px solid var(--accent-light);
|
||||
background-color: var(--secondary);
|
||||
border-radius: var(--padding-300);
|
||||
}
|
||||
|
||||
.block-title {
|
||||
font-size: 1.125rem;
|
||||
padding: var(--padding-300);
|
||||
border-block-end: 1px solid var(--accent-light);
|
||||
}
|
||||
|
||||
.block .block-content {
|
||||
padding: var(--padding-300);
|
||||
}
|
||||
|
||||
.block .link:is(.badge, .pill) {
|
||||
border-radius: var(--padding-100);
|
||||
}
|
||||
|
||||
/* Overview */
|
||||
|
||||
.block.overview {
|
||||
margin-block-end: var(--spacing-small);
|
||||
}
|
||||
|
||||
.block.overview .block-content {
|
||||
padding: var(--padding-500) var(--padding-300);
|
||||
}
|
||||
|
||||
.score {
|
||||
font-size: 1.875rem;
|
||||
line-height: 1.125em;
|
||||
margin-block-end: var(--padding-500);
|
||||
}
|
||||
|
||||
/* Dialog & modal */
|
||||
|
||||
dialog.block {
|
||||
padding: unset;
|
||||
margin: auto;
|
||||
color: inherit;
|
||||
inline-size: var(--width-constrained);
|
||||
animation: dialog cubic-bezier(0.86,0,0.07,1) 0.5s both;
|
||||
}
|
||||
|
||||
dialog::backdrop {
|
||||
background-color: rgb(0 0 0 / 0.5);
|
||||
}
|
||||
|
||||
dialog.block .block-title {
|
||||
font-size: 1.25rem;
|
||||
}
|
||||
|
||||
dialog.block .block-content {
|
||||
overflow-y: scroll;
|
||||
max-block-size: 25dvh;
|
||||
scrollbar-width: none;
|
||||
}
|
||||
|
||||
dialog .options {
|
||||
border-block-start: 1px solid var(--accent-light);
|
||||
}
|
||||
|
||||
dialog .options .row {
|
||||
justify-content: end;
|
||||
}
|
||||
|
||||
@keyframes dialog {
|
||||
0% {
|
||||
scale: 0.95;
|
||||
opacity: 0%;
|
||||
}
|
||||
|
||||
100% {
|
||||
scale: 1;
|
||||
opacity: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
/* Block alt */
|
||||
|
||||
.block.opt-out {
|
||||
border-style: dashed;
|
||||
border-color: var(--accent-light);
|
||||
background-color: initial;
|
||||
}
|
||||
|
||||
.block.opt-out .block-content p {
|
||||
font-size: 0.875rem;
|
||||
color: var(--text-2);
|
||||
margin-block-start: var(--padding-300);
|
||||
}
|
||||
|
||||
#gc-status {
|
||||
line-height: 1.5;
|
||||
}
|
||||
|
||||
/* Text content — Prose */
|
||||
|
||||
.prose {
|
||||
line-height: 1.6;
|
||||
}
|
||||
|
||||
.prose > :first-child {
|
||||
margin-block-start: 0;
|
||||
}
|
||||
|
||||
.prose > :last-child {
|
||||
margin-block-end: 0;
|
||||
}
|
||||
|
||||
.prose > * {
|
||||
scroll-margin-block-start: calc(45vh - var(--header-height));
|
||||
}
|
||||
|
||||
.prose > * + * {
|
||||
margin-block-start: var(--padding-500);
|
||||
}
|
||||
|
||||
.prose > :is(h1, h2, h3, blockquote) {
|
||||
margin-block: var(--spacing-small);
|
||||
}
|
||||
|
||||
.prose :is(p, li, blockquote) {
|
||||
max-inline-size: var(--width-constrained);
|
||||
}
|
||||
|
||||
.prose a:not([class]) {
|
||||
font-weight: 600;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
.prose strong > * {
|
||||
font-weight: inherit;
|
||||
}
|
||||
|
||||
.prose > blockquote {
|
||||
padding: var(--padding-300);
|
||||
border-inline-start: 4px solid var(--accent-dark);
|
||||
background: linear-gradient(90deg, var(--secondary), transparent);
|
||||
}
|
||||
|
||||
.prose > blockquote > * + * {
|
||||
margin-block-start: var(--padding-500);
|
||||
}
|
||||
|
||||
.prose > hr {
|
||||
all: unset;
|
||||
display: block;
|
||||
inline-size: 100%;
|
||||
block-size: 1px;
|
||||
background-color: var(--accent-light);
|
||||
margin-block: var(--spacing-small);
|
||||
}
|
||||
|
||||
/* Images */
|
||||
|
||||
.prose > :is(figure, img) {
|
||||
margin-block: var(--spacing-small);
|
||||
}
|
||||
|
||||
.prose > figure {
|
||||
background-color: var(--secondary);
|
||||
|
||||
}
|
||||
|
||||
.prose > figure figcaption {
|
||||
border-block-end: 1px solid var(--accent-light);
|
||||
text-align: center;
|
||||
font-size: 0.875rem;
|
||||
padding: var(--padding-200);
|
||||
}
|
||||
|
||||
/* Lists */
|
||||
|
||||
.prose > ul,
|
||||
.prose > ol {
|
||||
padding-inline-start: var(--padding-500);
|
||||
}
|
||||
|
||||
.prose > * + ul,
|
||||
.prose > * + ol {
|
||||
margin-block-start: var(--padding-500);
|
||||
}
|
||||
|
||||
.prose > ul li,
|
||||
.prose > ol li {
|
||||
margin-block-end: var(--padding-500);
|
||||
|
||||
}
|
||||
|
||||
.prose > ul li::marker,
|
||||
.prose > ol li::marker {
|
||||
color: var(--text-2);
|
||||
}
|
||||
|
||||
.prose > ul li :is(ul, ol) {
|
||||
margin-block-start: var(--padding-500);
|
||||
padding-inline-start: var(--padding-300);
|
||||
}
|
||||
|
||||
/* Post list */
|
||||
|
||||
.cards {
|
||||
display: grid;
|
||||
gap: var(--padding-300);
|
||||
grid-template-columns: repeat(2, 1fr);
|
||||
}
|
||||
|
||||
.card {
|
||||
background-color: var(--primary);
|
||||
border-radius: var(--padding-300);
|
||||
border: 1px solid var(--accent-light);
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.card-info {
|
||||
padding: var(--padding-300);
|
||||
}
|
||||
|
||||
.card h3 {
|
||||
font-size: clamp(1.063rem, 0.753rem + 0.62vw, 1.125rem);
|
||||
}
|
||||
|
||||
.card-info p {
|
||||
margin-block-start: var(--padding-300);
|
||||
font-size: clamp(0.813rem, 0.503rem + 0.62vw, 0.875rem);
|
||||
color: var(--text-2);
|
||||
}
|
||||
|
||||
/* Homepage latest content */
|
||||
|
||||
.latest {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(2, 1fr);
|
||||
gap: var(--padding-300);
|
||||
}
|
||||
|
||||
.latest:not(:last-child) {
|
||||
margin-block-end: var(--spacing-medium);
|
||||
}
|
||||
|
||||
.latest h2 {
|
||||
font-size: 1.5rem;
|
||||
margin-block-end: var(--padding-500);
|
||||
}
|
||||
|
||||
/* Opt-out */
|
||||
|
||||
|
||||
/* Share */
|
||||
|
||||
.share {
|
||||
background: linear-gradient(var(--secondary), var(--background));
|
||||
border-block-start: 1px solid var(--accent-light);
|
||||
}
|
||||
|
||||
.share-inner {
|
||||
padding: var(--spacing-medium) var(--padding-200);
|
||||
}
|
||||
|
||||
.share-inner > * + * {
|
||||
margin-block-start: var(--padding-500);
|
||||
}
|
||||
|
||||
.share-inner h2 {
|
||||
font-size: 1.5rem;
|
||||
margin-block-end: var(--padding-500);
|
||||
}
|
||||
|
||||
/* Footer */
|
||||
|
||||
footer {
|
||||
border-block-start: 1px solid var(--accent-light);
|
||||
}
|
||||
|
||||
.footer-inner {
|
||||
display: flex;
|
||||
inline-size: 100%;
|
||||
justify-content: space-between;
|
||||
padding: var(--spacing-small) var(--padding-200);
|
||||
color: var(--text-2);
|
||||
font-size: 0.875rem;
|
||||
}
|
||||
|
||||
.footer-text {
|
||||
line-height: 1.5;
|
||||
}
|
||||
|
||||
.footer-text > * + * {
|
||||
margin-block-start: var(--padding-300);
|
||||
}
|
||||
|
||||
footer .row {
|
||||
align-self: flex-start;
|
||||
text-align: end;
|
||||
}
|
||||
|
||||
footer a {
|
||||
color: var(--text-2);
|
||||
}
|
||||
|
||||
footer a:is(:hover, :focus-visible) {
|
||||
color: var(--text);
|
||||
}
|
||||
|
||||
/* Mobile */
|
||||
|
||||
@media screen and (max-width: 38rem) {
|
||||
.main-navigation .row {
|
||||
display: none;
|
||||
}
|
||||
|
||||
#menu-button {
|
||||
display: inherit;
|
||||
}
|
||||
|
||||
.latest {
|
||||
grid-template-columns: 1fr;
|
||||
gap: var(--spacing-medium);
|
||||
}
|
||||
|
||||
.cards {
|
||||
grid-template-columns: 1fr;
|
||||
}
|
||||
|
||||
.footer-inner {
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
gap: var(--spacing-medium);
|
||||
}
|
||||
|
||||
.footer-text {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.footer-inner .row {
|
||||
flex-direction: column;
|
||||
align-self: center;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user