@font-face {
font-family: Symbola;
src: local("Symbola"), url(SymbolaRegular.subset.ttf);
font-display: swap;
}
:root {
color-scheme: light dark;
--background-color: light-dark(#fff, #111);
--softbox-color: light-dark(#c2c2c2, #2a2a2a);
--foreground-color: light-dark(#222, #ccc);
--link-color: light-dark(blue, #b5b5ff);
--link-vis-color: light-dark(rebeccapurple, #aaa);
--emph-color: light-dark(#116611, #99ff99);
--green-color: light-dark(#008000, #00ff00);
--blue-color: light-dark(#000080, cyan);
--red-color: light-dark(#800000, #ff0000);
--mode-border: light-dark(#555, #eee);
}
html:has(#theme-light:checked) {
color-scheme: light;
}
html:has(#theme-dark:checked) {
color-scheme: dark;
}
html:has(#theme-dark:checked) .top-bar img {
filter: invert(1);
}
@media (prefers-color-scheme: dark) {
html:has(#theme-auto:checked) .top-bar img {
filter: invert(1);
}
}
html:has(#theme-auto:checked) {
color-scheme: light dark;
}
body {
background: var(--background-color);
color: var(--foreground-color);
font-family: monospace;
max-width: 40em;
margin: 4em auto 2em;
padding: 0 1em;
}
.top-bar {
position: fixed;
top: 0;
left: 0;
padding: 0.75em 1em;
}
.top-bar a {
text-decoration: none;
}
.top-bar img {
height: 36px;
width: auto;
vertical-align: middle;
}
.mode-container {
display: flex;
align-items: center;
gap: 5px;
position: fixed;
top: 12px;
right: 20px;
}
.mode-container input {
display: none;
}
.mode-container label {
display: block;
width: 18px;
height: 18px;
border: 2px solid var(--mode-border);
border-radius: 10px;
cursor: pointer;
opacity: 0.2;
transition: opacity 0.15s;
}
.mode-container:hover label {
opacity: 1;
}
.mode-container label.auto {
background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='20' height='20'><rect width='100%' height='100%' fill='white'/><path fill='%23777' d='M0,0L0,20L20,20L0,0'/></svg>");
background-size: cover;
}
.mode-container label.light {
background-color: #fff;
}
.mode-container label.dark {
background-color: #555;
}
.box {
border-width: 1px;
border-style: solid;
border-color: var(--foreground-color);
border-radius: 8px;
margin: 1em;
padding: 1em;
}
.softbox {
background: var(--softbox-color);
border-radius: 8px;
margin: 1em;
padding: 1em;
width: fit-content;
}
.linkbox::before {
content: "=> ";
}
.shellbox > *::before {
content: "$ ";
}
.indent {
margin-left: 1em;
}
.list {
list-style-type: none;
}
.bold {
font-weight: bold;
}
a {
color: var(--link-color);
}
a:visited {
color: var(--link-vis-color);
}
.bmtitle {
font-weight: bold;
}
.bmtags {
font-style: italic;
}
.keepws {
white-space: pre;
}
em {
color: var(--emph-color);
font-style: normal;
font-weight: bold;
}
code {
color: var(--emph-color);
}
table {
border-spacing: 1em 0px;
}
body.wide {
max-width: none;
padding: 0 3em;
}
.grid-2 {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 1.5em;
margin: 1em 0;
}
.grid-3 {
display: grid;
grid-template-columns: 1fr 1fr 1fr;
gap: 1.5em;
margin: 1em 0;
}
.grid-2 > section,
.grid-3 > section {
min-width: 0;
}
@media (max-width: 60em) {
.grid-3 {
grid-template-columns: 1fr 1fr;
}
}
@media (max-width: 40em) {
.grid-2,
.grid-3 {
grid-template-columns: 1fr;
}
}
.section-full {
grid-column: 1 / -1;
}
table.media {
border-spacing: 0;
border-collapse: collapse;
width: 100%;
font-size: 0.85em;
}
table.media th {
text-align: left;
border-bottom: 2px solid var(--foreground-color);
padding: 0.3em 0.5em;
}
table.media td {
border-bottom: 1px solid var(--softbox-color);
padding: 0.3em 0.5em;
vertical-align: middle;
}
table.media td img.poster {
height: 40px;
width: 28px;
object-fit: cover;
vertical-align: middle;
}
table.media td img.portrait {
height: 40px;
width: 40px;
object-fit: cover;
border-radius: 50%;
vertical-align: middle;
}
.cover-grid {
display: flex;
flex-wrap: wrap;
gap: 0.5em;
margin: 0.5em 0 1.5em;
}
.cover-grid .cover-item {
text-align: center;
width: 128px;
}
.cover-grid .cover-item img {
width: 128px;
height: 181px;
object-fit: cover;
}
.cover-grid .cover-item .cover-label {
font-size: 0.7em;
margin-top: 0.2em;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.cover-grid.portraits .cover-item img {
width: 80px;
height: 80px;
border-radius: 50%;
object-fit: cover;
}
.stats {
margin: 0.5em 0 1em;
font-size: 0.9em;
}
.stats span {
margin-right: 1.5em;
}
.stats em {
font-style: normal;
}
h2 {
font-size: 1em;
margin: 1.5em 0 0.3em;
}
.score {
color: var(--emph-color);
}
.status-evergreen {
color: var(--green-color);
}
.status-growing {
color: var(--blue-color);
}
.status-withered {
color: var(--red-color);
}
.status-rough {
color: var(--softbox-color);
}
.book-grid {
display: flex;
flex-wrap: wrap;
gap: 0.5em;
margin: 0.5em 0;
}
.book-grid .book-item {
text-align: center;
width: 70px;
}
.book-grid .book-item img {
width: 70px;
height: 105px;
object-fit: cover;
}
.book-grid .book-item .book-label {
font-size: 0.65em;
margin-top: 0.2em;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
/* ------------------------------------------ per-type layouts (corpus inspo) */
/* parasrah: stat(1) file header + ls -l listings */
.stat {
background: rgba(52, 211, 153, 0.08);
box-shadow: inset 0 0 8px rgba(52, 211, 153, 0.15);
border-left: 3px solid rgba(52, 211, 153, 0.5);
padding: 0.75em 1em;
margin: 1em 0;
font-size: 0.9em;
overflow-x: auto;
}
.ls {
margin: 1em 0;
font-size: 0.9em;
overflow-x: auto;
}
/* sy.st: dashed labeled boxes */
fieldset.wrap {
border: 1px dashed var(--foreground-color);
border-radius: 4px;
padding: 0.5em 1em;
margin: 1.5em 0;
}
fieldset.wrap legend {
padding: 0 0.5em;
font-weight: bold;
}
fieldset.wrap.abstract {
font-style: italic;
}
/* 9lab: academic pages */
.acad-title {
text-align: center;
}
.acad-meta {
text-align: center;
font-size: 0.9em;
opacity: 0.8;
margin-bottom: 1.5em;
}
.justify {
text-align: justify;
hyphens: auto;
}
/* altalenae: System 7 windows */
.window {
border: 2px solid var(--foreground-color);
box-shadow: 2px 2px 0 var(--foreground-color);
background: var(--background-color);
margin: 1em 0;
}
.title-bar {
border-bottom: 2px solid var(--foreground-color);
background: repeating-linear-gradient(
to bottom,
var(--background-color) 0px,
var(--background-color) 2px,
var(--foreground-color) 2px,
var(--foreground-color) 3px,
var(--background-color) 3px,
var(--background-color) 5px
);
text-align: center;
padding: 0.3em 0.5em;
}
.title-bar .title,
.title-bar h1.title {
display: inline-block;
background: var(--background-color);
padding: 0 0.75em;
font-size: 1em;
margin: 0;
font-weight: bold;
}
.window-body {
padding: 0.75em 1em;
}
.window-grid {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 1em;
margin: 1em 0;
}
.window-grid .window {
margin: 0;
text-decoration: none;
color: var(--foreground-color);
display: block;
}
.window-grid .window:visited {
color: var(--foreground-color);
}
.window-grid .window-body {
font-size: 0.85em;
opacity: 0.85;
}
@media (max-width: 40em) {
.window-grid {
grid-template-columns: 1fr;
}
}
/* chapbook: centered verse/prayer pages */
.chapbook {
text-align: center;
}
.chapbook .keepws,
.chapbook .prose {
text-align: left;
display: inline-block;
}
.chapbook .prose.poem {
text-align: center;
}
.chap-meta,
.win-meta {
font-size: 0.9em;
opacity: 0.8;
margin-bottom: 1.5em;
}
/* ------------------------------------------------- written content pages */
.preview {
font-style: italic;
opacity: 0.8;
}
.prose {
line-height: 1.5;
}
.prose h2,
.prose h3,
.prose h4 {
font-size: 1em;
margin: 1.5em 0 0.3em;
}
.prose h3::before {
content: "## ";
opacity: 0.5;
}
.prose h4::before {
content: "### ";
opacity: 0.5;
}
.prose img,
.prose video {
max-width: 100%;
height: auto;
}
.prose blockquote {
margin: 1em 0 1em 0;
padding: 0 0 0 1em;
border-left: 3px solid var(--softbox-color);
opacity: 0.9;
}
.prose pre {
background: rgba(52, 211, 153, 0.08);
box-shadow: inset 0 0 8px rgba(52, 211, 153, 0.15);
padding: 0.75em 1em;
overflow-x: auto;
border-radius: 4px;
}
.prose pre code {
color: var(--foreground-color);
}
.prose table {
border-spacing: 0;
border-collapse: collapse;
margin: 1em 0;
}
.prose table td {
border-bottom: 1px solid var(--softbox-color);
padding: 0.2em 0.75em 0.2em 0;
vertical-align: top;
}
.prose hr {
border: none;
border-top: 1px solid var(--softbox-color);
margin: 2em 0;
}
.prose figure {
margin: 1em 0;
}
.prose figcaption {
font-size: 0.85em;
font-style: italic;
opacity: 0.8;
}
/* verse and prayers keep their line breaks */
.poem p {
white-space: pre-line;
}
/* no-JS collapsible sections */
details {
border: 1px solid var(--softbox-color);
border-radius: 4px;
padding: 0.5em 0.75em;
margin: 1em 0;
}
details summary {
cursor: pointer;
font-weight: bold;
}
details[open] summary {
margin-bottom: 0.5em;
}
/* CSS-only spoiler: hidden until hover or focus */
.spoiler {
background: var(--foreground-color);
color: var(--foreground-color);
}
.spoiler:hover,
.spoiler:focus {
background: transparent;
}
.redacted {
background: var(--foreground-color);
color: var(--foreground-color);
user-select: none;
}
.dropcap {
float: left;
font-size: 3em;
line-height: 0.85;
padding: 0.05em 0.1em 0 0;
font-weight: bold;
}