QUIETTYPE
@import url(https://fonts.bunny.net/css?family=inter:400,400i|inter-tight:400,400i|jetbrains-mono:400,400i|open-sans:400,400i|ubuntu-sans-mono:400,400i|work-sans:400,400i);
/* ==========================================================================
QuietType / wmprkr.xyz
Dark, restrained BearBlog theme
========================================================================== */
/* ==========================================================================
Tokens
========================================================================== */
:root {
color-scheme: dark;
/* Night Reading Room */
--bg: #161411;
--text: #e7e3dc;
--accent: #c79b6d;
/* Layout + type */
--width: min(720px, 90vw);
--font-main: "Work Sans", system-ui, Verdana, sans-serif;
--font-secondary: "Inter", system-ui, Verdana, sans-serif;
--font-mono: "JetBrains Mono", monospace;
--font-scale: 1rem;
--font-small: 0.95em;
/* UI */
--radius: 6px;
--link: var(--accent);
--space-block: 2rem;
/* Derived tokens — do not change per palette */
--muted: color-mix(in srgb, var(--text) 70%, transparent);
--border: color-mix(in srgb, var(--text) 14%, transparent);
--surface: color-mix(in srgb, var(--text) 8%, var(--bg));
--code-bg: color-mix(in srgb, var(--text) 10%, #000);
--code-text: var(--text);
--visited: color-mix(in srgb, var(--accent) 70%, var(--text));
/* Title emphasis */
--title: color-mix(in srgb, var(--text) 88%, white);
}
/* ==========================================================================
Base Layout
========================================================================== */
body {
max-width: var(--width);
margin: auto;
padding: 20px;
background: var(--bg);
color: var(--text);
font-family: var(--font-secondary);
font-size: var(--font-scale);
line-height: 1.5;
text-align: left;
word-wrap: break-word;
overflow-wrap: break-word;
}
main {
line-height: 1.6;
}
main p {
margin-block: 1em;
}
main ul,
main ol {
padding-left: 1.2em;
}
main li {
margin-block: 0.35em;
}
/* ==========================================================================
Typography
========================================================================== */
h1,
h2,
h3,
h4,
h5,
h6 {
font-family: var(--font-main);
}
strong,
b {
color: var(--text);
}
time {
color: var(--muted);
font-family: var(--font-mono);
font-size: 15px;
font-style: normal;
}
/* ==========================================================================
Links
========================================================================== */
a {
color: var(--accent);
text-decoration: none;
cursor: pointer;
}
a:hover {
text-decoration: underline;
}
a:visited {
color: var(--visited);
}
/* ==========================================================================
Header / Navigation
========================================================================== */
header {
display: flex;
align-items: baseline;
gap: 1rem;
}
header nav {
display: flex;
gap: 8px;
margin-left: auto;
}
.title:hover {
text-decoration: none;
}
.title h1 {
color: var(--title);
font-size: 1.5em;
}
nav a {
margin-right: 0;
}
header nav a {
display: inline-flex;
align-items: center;
gap: 0.35em;
padding: 0.25em 0.6em;
border: 1px solid transparent;
border-radius: var(--radius);
background: transparent;
color: var(--accent);
font-size: 0.95em;
font-weight: 500;
text-decoration: none;
transition:
background-color 0.15s ease,
border-color 0.15s ease,
transform 0.12s ease;
}
header nav a:hover {
background-color: var(--surface);
border-color: var(--border);
text-decoration: none;
transform: translateY(-1px);
}
header nav a:active {
transform: translateY(0);
}
header nav a:focus-visible {
outline: 2px solid var(--accent);
outline-offset: 2px;
}
/* ==========================================================================
Archive / Blog Index
========================================================================== */
ul.blog-posts {
list-style: none;
padding: 0;
}
ul.blog-posts li {
display: block;
margin-bottom: 1.25rem;
}
.blog-posts li time {
font-size: 0.82rem;
line-height: 1.2;
color: var(--muted);
font-style: italic;
font-family: var(--font-secondary);
}
ul.blog-posts li span {
display: block;
margin-bottom: 0.2rem;
color: var(--muted);
font-family: var(--font-secondary);
font-size: 0.75rem;
font-style: italic;
line-height: 1.2;
}
ul.blog-posts li a {
display: inline;
text-decoration: underline;
}
/* ==========================================================================
Tables / Media / Rules
========================================================================== */
table {
width: 100%;
}
hr {
border: 0;
border-top: 1px dashed var(--border);
}
img {
max-width: 100%;
}
.inline {
width: auto !important;
}
/* ==========================================================================
Code
========================================================================== */
code {
padding: 2px;
border-radius: 3px;
background: var(--code-bg);
color: var(--code-text);
font-family: var(--font-mono);
}
.highlight,
.code {
margin-block: 1em;
padding: 1px 15px;
overflow-x: auto;
border-radius: 3px;
background: var(--code-bg);
color: var(--code-text);
}
.copy-code-button {
color: var(--text);
opacity: 0.6;
}
.copy-code-button:focus-visible {
opacity: 1;
}
@media (hover: hover) {
.highlight:hover .copy-code-button {
opacity: 0.8;
}
.copy-code-button:hover {
opacity: 1;
}
}
/* ==========================================================================
Quotes
========================================================================== */
blockquote {
margin-inline: 0;
padding-left: 20px;
border-left: 2px solid var(--border);
color: var(--muted);
font-style: italic;
}
/* ==========================================================================
Footer / Metadata
========================================================================== */
footer {
padding: 25px 0;
text-align: center;
color: var(--muted);
}
footer p {
font-size: 0.75em;
}
.tags a {
font-size: 0.85em;
}
.metas {
font-family: var(--font-secondary);
font-size: 0.85em;
}
/* ==========================================================================
Forms / Buttons
========================================================================== */
button {
margin: 0;
cursor: pointer;
}
/* ==========================================================================
Upvote / Applause
========================================================================== */
form#upvote-form {
display: block !important;
margin-block-start: 1.3em;
}
form#upvote-form > small {
display: block;
font-size: 1em;
}
:is(.post, .page) .upvote-button {
display: inline-flex;
align-items: center;
padding: 0 0.1em;
border: 0;
border-radius: var(--radius);
background: none;
color: var(--muted);
font: inherit;
font-size: var(--font-small);
line-height: 1.2;
white-space: nowrap;
cursor: pointer;
transition: transform 0.15s ease;
}
:is(.post, .page) .upvote-button:focus-visible {
outline: 2px solid var(--link);
outline-offset: 2px;
}
:is(.post, .page) .upvote-button svg,
:is(.post, .page) .upvote-button .upvote-count {
display: none !important;
}
:is(.post, .page) .upvote-button::before {
content: "🌱";
display: inline-block;
color: var(--link);
font-size: 1.45rem;
line-height: 1;
vertical-align: -0.06em;
transition: transform 0.2s ease;
}
@media (hover: hover) {
:is(.post, .page) .upvote-button:not(.upvoted):not([disabled]):hover::before {
transform: scale(1.28) rotate(-6deg);
}
}
:is(.post, .page) .upvote-button.upvoted::before,
:is(.post, .page) .upvote-button[disabled]::before {
content: "🌳";
}
:is(.post, .page) .upvote-button:not([disabled]):active {
transform: translateY(1px);
}
:is(.post, .page) .upvote-button.upvoted,
:is(.post, .page) .upvote-button[disabled] {
opacity: 0.7;
color: inherit !important;
cursor: default;
}
/* ==========================================================================
Fieldmark
========================================================================== */
span.fieldmark {
display: block;
width: 9rem;
height: 14px;
margin: 1.2rem auto;
background: var(--link);
opacity: 0.9;
-webkit-mask:
url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 160 16'><path d='M2 9 C35 3 65 3 85 9 S130 15 158 7' fill='none' stroke='black' stroke-width='2.7' stroke-linecap='round'/></svg>") no-repeat center / contain;
mask:
url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 160 16'><path d='M2 9 C35 3 65 3 85 9 S130 15 158 7' fill='none' stroke='black' stroke-width='2.7' stroke-linecap='round'/></svg>") no-repeat center / contain;
}
/* ==========================================================================
Afterword
========================================================================== */
.afterword {
margin-top: 1.2rem;
padding-bottom: 9px;
color: var(--muted);
font-family: var(--font-secondary);
font-size: 0.9em;
}
.afterword a {
display: inline-block;
color: var(--accent);
font-weight: 600;
text-decoration: none;
transition:
background-color 0.2s ease,
color 0.2s ease;
}
.afterword a:hover {
background-color: var(--surface);
color: var(--text);
}
/* ==========================================================================
Meadow.cafe Guestbook
========================================================================== */
:where(#guestbooks___guestbook-form-container, #guestbooks___guestbook-messages-container) {
color: var(--text);
}
#guestbooks___guestbook-form-container {
margin-block: 1.25rem 1.75rem;
padding: 1rem;
border: 1px solid var(--border);
border-radius: calc(var(--radius) + 2px);
background: color-mix(in srgb, var(--surface) 85%, var(--bg));
}
#guestbooks___guestbook-form {
display: grid;
gap: 0.75rem;
}
#guestbooks___guestbook-form :where(input, textarea) {
box-sizing: border-box;
width: 100%;
padding: 0.65rem 0.75rem;
border: 1px solid var(--border);
border-radius: var(--radius);
background: color-mix(in srgb, var(--bg) 70%, black);
color: var(--text);
font: inherit;
}
#guestbooks___guestbook-form textarea {
min-height: 7rem;
resize: vertical;
line-height: 1.45;
}
#guestbooks___guestbook-form :where(input, textarea, button):focus-visible {
outline: 2px solid var(--accent);
outline-offset: 2px;
}
#guestbooks___guestbook-form button[type="submit"] {
justify-self: start;
padding: 0.55rem 0.9rem;
border: 1px solid var(--border);
border-radius: var(--radius);
background: transparent;
color: var(--accent);
font: inherit;
transition:
transform 0.12s ease,
background-color 0.15s ease,
border-color 0.15s ease;
}
#guestbooks___guestbook-form button[type="submit"]:hover {
background: var(--surface);
border-color: var(--border);
transform: translateY(-1px);
}
#guestbooks___guestbook-form button[type="submit"]:active {
transform: translateY(0);
}
#guestbooks___challenge-answer-container {
margin-top: 0.25rem;
}
#guestbooks___error-message {
margin-top: 0.25rem;
color: color-mix(in srgb, var(--accent) 70%, white);
opacity: 0.95;
font-size: var(--font-small);
}
#guestbooks___guestbook-made-with {
opacity: 0.85;
}
#guestbooks___guestbook-made-with a {
color: var(--accent);
}
#guestbooks___guestbook-messages-header {
margin-top: 0;
}
#guestbooks___guestbook-messages-container {
display: grid;
gap: 0.9rem;
margin-block: 1rem 2rem;
}
#guestbooks___guestbook-messages-container > * {
padding: 0.85rem 1rem;
border: 1px solid var(--border);
border-radius: calc(var(--radius) + 2px);
background: color-mix(in srgb, var(--surface) 75%, var(--bg));
}
#guestbooks___guestbook-messages-container a {
color: var(--accent);
}
#guestbooks___guestbook-messages-container :where(small, time) {
color: var(--muted);
}
/* ==========================================================================
Palette Preview Dots
========================================================================== */
.palette-preview {
display: inline-flex;
align-items: center;
gap: 8px;
margin: 0.35rem 0 0.75rem;
}
.palette-preview span {
display: inline-block;
width: 12px;
height: 12px;
border: 1px solid color-mix(in srgb, var(--text) 18%, transparent);
border-radius: 999px;
box-shadow: 0 0 0 1px color-mix(in srgb, var(--bg) 35%, transparent);
}
/* ==========================================================================
Pagination
========================================================================== */
body.blog .pagination {
display: flex;
align-items: center;
justify-content: center;
gap: 1rem;
margin: var(--space-block) auto 1rem;
padding: 0.4rem 0.75rem;
border: 1px solid var(--border);
border-radius: calc(var(--radius) + 2px);
background: color-mix(in srgb, var(--surface) 85%, var(--bg));
backdrop-filter: blur(6px);
font-size: var(--font-small);
}
.pagination #pageInfo {
color: var(--muted);
font-family: var(--font-mono);
white-space: nowrap;
}
.pagination a {
display: inline-flex;
align-items: center;
gap: 0.25em;
padding: 0.25em 0.5em;
border-radius: var(--radius);
color: var(--accent);
text-decoration: none;
transition:
background-color 0.15s ease,
transform 0.12s ease;
}
.pagination a:hover {
background: var(--surface);
transform: translateY(-1px);
}
.pagination a:active {
transform: translateY(0);
}
.pagination a[disabled] {
opacity: 0.35;
pointer-events: none;
}
.pagination #prevPage::before {
content: "←";
opacity: 0.8;
}
.pagination #nextPage::after {
content: "→";
opacity: 0.8;
}
/* ==========================================================================
Button Page
========================================================================== */
.button-grid {
display: flex;
flex-wrap: wrap;
align-items: center;
gap: 12px;
}
.button-grid img {
display: block;
border-radius: 4px;
}
/* ==========================================================================
Ribbon
========================================================================== */
.ribbon {
--r: 0.5em;
--c: #d81a14;
width: fit-content;
padding-inline: calc(0.2em + var(--r));
background-image:
linear-gradient(var(--c) 70%, #0000 0),
linear-gradient(to bottom left, #0000 50%, color-mix(in srgb, var(--c), #000 40%) 51% 84%, #0000 85%);
background-position: 0 0.15lh;
background-size: 100% 1lh;
clip-path: polygon(0 0.15lh, 100% 0.15lh, calc(100% - var(--r)) 0.5lh, 100% 0.85lh, 100% calc(100% - 0.15lh), 0 calc(100% - 0.15lh), var(--r) calc(100% - 0.5lh), 0 calc(100% - 0.85lh));
color: #fff;
font-size: 28px;
font-weight: bold;
line-height: 2;
text-align: center;
}
/* ==========================================================================
Bubbles Upvoting
========================================================================== */
.afterword-bubbles-line {
display: flex;
align-items: center;
gap: 0.35rem;
opacity: 0.7;
}
.afterword-bubbles-line .bubbles-vote-btn {
--bt-fg: var(--muted);
--bt-accent: var(--accent);
all: unset;
display: inline-flex;
align-items: center;
gap: 0.25rem;
color: var(--muted);
font-size: var(--font-small);
}
.afterword-bubbles-line .bubbles-vote-num {
color: var(--accent);
font-variant-numeric: tabular-nums;
}
.bubbles-vote-tri {
display: none;
}