Files
org_roam/assets/styles/style.css
Zaine d2efa91aa2
All checks were successful
Build Roam Site / build (push) Successful in 30s
UI changes 2
2026-05-16 00:05:22 +01:00

1976 lines
35 KiB
CSS

/* =========================================================
ZQ NOTE ARCHIVE
Dark academic / early-web redesign for Org-generated HTML.
The CSS owns the visual system; JS owns navigation behaviour.
========================================================= */
@import url("https://fonts.googleapis.com/css2?family=Crimson+Pro:ital,wght@0,400;0,520;0,650;1,400&family=IBM+Plex+Mono:wght@400;500;600&family=Inter:wght@400;500;650&family=Noto+Sans+Arabic:wght@400;700&display=swap");
:root {
color-scheme: dark;
--header-h: 58px;
--toolbar-h: 42px;
--rail-w: 332px;
--panel-w: 332px;
--content-max: 1160px;
--content-pad: clamp(1.25rem, 3.4vw, 4.5rem);
--ink: #080807;
--black: #0b0b09;
--brown-950: #11100c;
--brown-900: #17140e;
--brown-850: #1e1a12;
--brown-800: #272115;
--brown-700: #352b1a;
--green-900: #101914;
--green-700: #294638;
--burgundy: #7b2f37;
--blue: #596f8d;
--gold: #c4a35f;
--gold-soft: #dfc989;
--paper: #e9dec7;
--paper-dim: #c8b99a;
--paper-muted: #94866f;
--paper-faint: #675b49;
--line: rgba(196, 163, 95, 0.24);
--line-strong: rgba(196, 163, 95, 0.46);
--shadow: 0 24px 90px rgba(0, 0, 0, 0.38);
--bg: var(--black);
--page-bg: var(--black);
--pane-bg: var(--brown-900);
--surface: var(--brown-850);
--surface-2: var(--brown-800);
--surface-3: var(--brown-700);
--fg: var(--paper);
--fg-dim: var(--paper-dim);
--fg-faint: var(--paper-muted);
--fg-ghost: var(--paper-faint);
--accent: var(--gold);
--accent-dim: rgba(196, 163, 95, 0.38);
--accent-sub: rgba(196, 163, 95, 0.1);
--accent-glow: rgba(196, 163, 95, 0.065);
--accent-subtle: rgba(196, 163, 95, 0.12);
--heading: #f3e7cd;
--heading-2: #d9bd72;
--heading-3: #c5856a;
--link: #d7bb73;
--link-hover: #fff2d4;
--tag-bg: rgba(41, 70, 56, 0.34);
--tag-fg: #cad9c8;
--border: var(--line);
--border-2: var(--line-strong);
--border-mid: var(--line);
--chip-bg: rgba(233, 222, 199, 0.07);
--code-bg: #070806;
--font-serif: "Crimson Pro", Georgia, "Times New Roman", "Noto Sans Arabic", serif;
--font-body: "Crimson Pro", Georgia, "Times New Roman", "Noto Sans Arabic", serif;
--font-ui: Inter, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
--font-mono: "IBM Plex Mono", "SFMono-Regular", Consolas, "Liberation Mono", monospace;
--r1: 2px;
--r2: 4px;
--r3: 6px;
--r4: 10px;
--r5: 16px;
--r6: 24px;
--r8: 40px;
--ease-out: cubic-bezier(0.16, 1, 0.3, 1);
--dur-fast: 120ms;
--dur-mid: 220ms;
--dur-slow: 420ms;
}
[data-theme="light"] {
color-scheme: light;
--black: #d8c8a6;
--brown-950: #e3d5b7;
--brown-900: #efe4cb;
--brown-850: #f6ecd8;
--brown-800: #e3d3ae;
--brown-700: #cbb788;
--green-900: #dce5d8;
--green-700: #4f725d;
--burgundy: #7b2f37;
--blue: #405f82;
--gold: #8a6120;
--gold-soft: #65450e;
--paper: #20170e;
--paper-dim: #554733;
--paper-muted: #79684e;
--paper-faint: #a5926d;
--line: rgba(86, 62, 20, 0.28);
--line-strong: rgba(86, 62, 20, 0.48);
--shadow: 0 18px 44px rgba(62, 42, 16, 0.14);
--heading: #20160c;
--heading-2: #6b4915;
--heading-3: #7b3b31;
--link: #604719;
--link-hover: #171006;
--tag-bg: rgba(79, 114, 93, 0.15);
--tag-fg: #34523f;
--code-bg: #e5d7b8;
}
*,
*::before,
*::after {
box-sizing: border-box;
}
html,
body {
margin: 0;
min-height: 100dvh;
height: 100dvh;
overflow: hidden;
color: var(--fg);
background:
linear-gradient(rgba(233, 222, 199, 0.023) 1px, transparent 1px),
linear-gradient(90deg, rgba(233, 222, 199, 0.018) 1px, transparent 1px),
radial-gradient(circle at 16% 0%, rgba(123, 47, 55, 0.22), transparent 33rem),
radial-gradient(circle at 82% 8%, rgba(41, 70, 56, 0.24), transparent 30rem),
linear-gradient(135deg, #090907 0%, #15120d 48%, #20180f 100%);
background-size: 34px 34px, 34px 34px, auto, auto, auto;
font: 19px/1.72 var(--font-body);
-webkit-font-smoothing: antialiased;
text-rendering: optimizeLegibility;
}
body {
display: flex;
flex-direction: column;
}
body::before {
content: "";
position: fixed;
inset: 0;
z-index: 0;
pointer-events: none;
opacity: 0.26;
background:
repeating-linear-gradient(180deg, transparent 0, transparent 28px, rgba(233, 222, 199, 0.03) 29px),
linear-gradient(90deg, transparent 0, transparent 58px, rgba(123, 47, 55, 0.2) 59px, transparent 60px);
}
body > * {
position: relative;
z-index: 1;
}
button,
input,
select,
textarea {
font: inherit;
}
button {
cursor: pointer;
}
::selection {
color: #120f09;
background: var(--gold-soft);
}
::-webkit-scrollbar {
width: 10px;
height: 10px;
}
::-webkit-scrollbar-track {
background: rgba(8, 8, 7, 0.38);
}
::-webkit-scrollbar-thumb {
background: rgba(196, 163, 95, 0.34);
border: 2px solid rgba(8, 8, 7, 0.38);
}
/* Header */
#preamble {
flex: 0 0 var(--header-h);
height: var(--header-h);
background:
linear-gradient(180deg, rgba(30, 26, 18, 0.98), rgba(9, 9, 7, 0.98));
border-bottom: 1px solid var(--line-strong);
box-shadow: 0 16px 48px rgba(0, 0, 0, 0.32);
z-index: 400;
}
.banner-header {
height: 100%;
display: grid;
grid-template-columns: auto minmax(0, 1fr) auto auto;
align-items: center;
gap: 14px;
padding: 0 18px;
font-family: var(--font-ui);
}
.banner-left {
min-width: 0;
}
.archive-mark {
display: grid;
grid-template-columns: 38px auto;
align-items: center;
gap: 10px;
color: var(--fg);
text-decoration: none;
border: 0;
}
.archive-mark:hover {
color: var(--heading);
background: transparent;
}
.archive-sigil {
display: grid;
place-items: center;
width: 38px;
height: 38px;
color: var(--gold-soft);
background:
linear-gradient(145deg, rgba(196, 163, 95, 0.16), rgba(123, 47, 55, 0.18)),
#10100c;
border: 3px double var(--line-strong);
font: 600 0.74rem/1 var(--font-mono);
letter-spacing: 0.08em;
text-transform: uppercase;
}
.archive-name {
display: grid;
gap: 1px;
color: var(--paper-dim);
font: 600 0.68rem/1.1 var(--font-mono);
letter-spacing: 0.13em;
text-transform: uppercase;
}
.archive-name::after {
content: "field notes / commonplaces / records";
color: var(--paper-faint);
font-weight: 400;
letter-spacing: 0.02em;
text-transform: lowercase;
}
#breadcrumb-trail {
display: flex;
align-items: center;
gap: 4px;
min-width: 0;
overflow: hidden;
color: var(--paper-muted);
font: 0.72rem var(--font-mono);
}
.crumb {
min-width: 0;
max-width: 18rem;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
color: var(--paper-muted);
border: 1px solid transparent;
padding: 3px 6px;
}
.crumb:hover {
color: var(--paper);
background: rgba(233, 222, 199, 0.05);
border-color: var(--line);
}
.crumb.active {
color: var(--gold-soft);
}
.crumb-sep {
color: var(--paper-faint);
}
.banner-search {
justify-self: end;
}
.search-trigger {
min-width: 240px;
height: 34px;
display: inline-flex;
align-items: center;
justify-content: space-between;
gap: 24px;
padding: 0 8px 0 12px;
color: var(--paper-dim);
background:
linear-gradient(180deg, rgba(233, 222, 199, 0.065), rgba(233, 222, 199, 0.025));
border: 1px solid var(--line);
border-radius: 0;
font: 0.74rem var(--font-mono);
text-transform: lowercase;
}
.search-trigger span::before {
content: "catalogue:";
margin-right: 0.45em;
color: var(--gold-soft);
}
.search-trigger kbd {
display: inline-grid;
place-items: center;
min-width: 23px;
height: 23px;
color: var(--gold-soft);
background: #090907;
border: 1px solid var(--line-strong);
font: 0.68rem var(--font-mono);
}
.search-trigger:hover,
.search-trigger:focus-visible {
color: var(--paper);
border-color: var(--gold);
outline: 0;
box-shadow: 0 0 0 3px rgba(196, 163, 95, 0.12);
}
.banner-actions {
display: flex;
align-items: center;
gap: 8px;
}
#theme-toggle,
#close-all {
width: 34px;
height: 34px;
display: inline-grid;
place-items: center;
color: var(--paper-dim);
background: rgba(233, 222, 199, 0.035);
border: 1px solid var(--line);
border-radius: 0;
font: 0.9rem var(--font-mono);
}
#theme-toggle:hover,
#close-all:hover {
color: var(--gold-soft);
border-color: var(--line-strong);
}
#close-all {
display: none !important;
}
/* Search modal */
.search-modal[hidden] {
display: none;
}
.search-modal {
position: fixed;
inset: 0;
z-index: 1200;
}
.search-backdrop {
position: absolute;
inset: 0;
background: rgba(5, 5, 4, 0.72);
backdrop-filter: blur(5px);
}
.search-dialog {
position: relative;
min-height: 100%;
display: grid;
place-items: start center;
padding: 12vh 20px 24px;
}
.search-panel {
width: min(780px, calc(100vw - 32px));
max-height: min(680px, calc(100dvh - 24vh));
overflow: hidden;
background:
linear-gradient(rgba(233, 222, 199, 0.035) 1px, transparent 1px),
linear-gradient(180deg, rgba(39, 33, 21, 0.98), rgba(13, 13, 10, 0.98));
background-size: 100% 31px, auto;
border: 1px solid var(--line-strong);
box-shadow: var(--shadow);
}
.search-input-wrap {
display: grid;
grid-template-columns: auto minmax(0, 1fr) auto;
align-items: center;
gap: 12px;
padding: 14px;
border-bottom: 3px double var(--line);
}
.search-icon {
color: var(--gold-soft);
font: 1.15rem var(--font-mono);
}
#search-box {
width: 100%;
color: var(--paper);
background: transparent;
border: 0;
outline: 0;
font: 1.12rem var(--font-serif);
}
#search-box::placeholder {
color: var(--paper-faint);
font-style: italic;
}
.search-close {
width: 32px;
height: 32px;
color: var(--paper-muted);
background: transparent;
border: 1px solid transparent;
}
.search-close:hover {
color: var(--gold-soft);
border-color: var(--line);
}
.search-title,
.search-empty {
color: var(--paper-muted);
font: 0.7rem var(--font-mono);
letter-spacing: 0.1em;
text-transform: uppercase;
}
.search-title {
padding: 10px 14px 8px;
}
#search-results {
max-height: min(500px, calc(100dvh - 260px));
overflow: auto;
}
.search-result {
width: 100%;
display: grid;
gap: 2px;
padding: 12px 14px;
color: var(--paper);
text-align: left;
background: transparent;
border: 0;
border-top: 1px solid rgba(196, 163, 95, 0.16);
}
.search-result:hover,
.search-result.active {
background: rgba(196, 163, 95, 0.11);
}
.search-result-title {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
font: 0.92rem var(--font-ui);
}
.search-result-path {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
color: var(--paper-muted);
font: 0.7rem var(--font-mono);
}
.search-empty {
padding: 28px 14px;
text-align: center;
border-top: 1px solid var(--line);
}
.search-empty[hidden] {
display: none;
}
/* Application shell */
#layout-body {
flex: 1 1 auto;
min-height: 0;
display: grid;
grid-template-columns: var(--rail-w) minmax(0, 1fr);
overflow: hidden;
}
#sidebar {
width: var(--rail-w);
min-width: var(--rail-w);
height: 100%;
overflow: hidden;
display: grid;
grid-template-rows: auto minmax(0, 1fr) auto;
align-items: stretch;
gap: 0;
padding: 0;
color: var(--paper-dim);
background:
linear-gradient(rgba(233, 222, 199, 0.026) 1px, transparent 1px),
linear-gradient(180deg, rgba(18, 25, 20, 0.98), rgba(12, 12, 9, 0.99));
background-size: 100% 29px, auto;
border-right: 1px solid var(--line-strong);
box-shadow: 16px 0 42px rgba(0, 0, 0, 0.18);
z-index: 150;
}
#sidebar.expanded {
width: var(--rail-w);
min-width: var(--rail-w);
overflow: hidden;
}
.sidebar-section-label,
.sidebar-header-label {
padding: 13px 16px 10px;
color: var(--gold-soft);
border-bottom: 1px solid var(--line);
font: 600 0.68rem var(--font-mono);
letter-spacing: 0.16em;
text-transform: uppercase;
}
.sidebar-section-label::before,
.sidebar-header-label::before {
content: "[";
color: var(--burgundy);
}
.sidebar-section-label::after,
.sidebar-header-label::after {
content: "]";
color: var(--burgundy);
}
#file-tree {
min-height: 0;
overflow: auto;
padding: 10px 8px 18px;
scrollbar-width: thin;
scrollbar-color: var(--line-strong) transparent;
}
.sidebar-panel {
display: contents;
}
.sidebar-header {
display: contents;
}
.sidebar-close-btn {
display: none;
}
.rail-btn {
width: calc(100% - 16px);
height: 34px;
margin: 4px 8px;
display: inline-flex;
align-items: center;
justify-content: flex-start;
gap: 8px;
color: var(--paper-muted);
background: rgba(8, 8, 7, 0.18);
border: 1px solid var(--line);
border-radius: 0;
font: 0.72rem var(--font-mono);
text-transform: uppercase;
}
.rail-btn::after {
content: attr(title);
color: inherit;
font: inherit;
}
.rail-btn:hover,
.rail-btn.active {
color: var(--gold-soft);
background: rgba(196, 163, 95, 0.1);
border-color: var(--line-strong);
}
.tree-folder {
display: grid;
grid-template-columns: auto minmax(0, 1fr) auto;
align-items: center;
gap: 7px;
margin: 8px 0 3px;
padding: 7px 8px;
color: var(--paper);
background: rgba(233, 222, 199, 0.035);
border: 1px solid rgba(196, 163, 95, 0.16);
font: 600 0.68rem var(--font-mono);
letter-spacing: 0.08em;
text-transform: uppercase;
user-select: none;
}
.tree-folder:hover {
color: var(--gold-soft);
border-color: var(--line-strong);
}
.tree-folder-label {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.tree-folder-count {
min-width: 2ch;
padding: 0 5px;
color: var(--paper-muted);
background: rgba(8, 8, 7, 0.28);
border: 1px solid rgba(196, 163, 95, 0.18);
text-align: center;
font: 0.62rem var(--font-mono);
}
.tree-children {
margin: 0 0 8px 10px;
padding-left: 10px;
border-left: 1px solid rgba(196, 163, 95, 0.18);
}
.tree-file {
display: block;
margin: 1px 0;
padding: 5px 7px 5px 8px;
overflow: hidden;
color: var(--paper-dim);
border: 1px solid transparent;
text-overflow: ellipsis;
white-space: nowrap;
font: 0.78rem/1.35 var(--font-ui);
}
.tree-file:hover {
color: var(--paper);
background: rgba(233, 222, 199, 0.045);
border-color: rgba(196, 163, 95, 0.16);
}
.tree-file.active {
color: var(--gold-soft);
background: linear-gradient(90deg, rgba(123, 47, 55, 0.24), rgba(196, 163, 95, 0.08));
border-color: var(--line);
}
.tree-icon {
color: var(--burgundy);
font-size: 0.7rem;
}
#main {
min-width: 0;
min-height: 0;
display: grid;
grid-template-rows: var(--toolbar-h) minmax(0, 1fr);
overflow: hidden;
}
#note-toolbar {
min-width: 0;
height: var(--toolbar-h);
display: flex;
align-items: center;
gap: 8px;
padding: 0 14px;
color: var(--paper-muted);
background:
linear-gradient(180deg, rgba(23, 20, 14, 0.98), rgba(11, 11, 9, 0.98));
border-bottom: 1px solid var(--line);
font-family: var(--font-mono);
}
.toolbar-btn {
min-height: 27px;
padding: 0 9px;
color: var(--paper-muted);
background: rgba(233, 222, 199, 0.028);
border: 1px solid rgba(196, 163, 95, 0.18);
border-radius: 0;
font: 0.68rem var(--font-mono);
text-transform: uppercase;
}
.toolbar-btn:hover:not(:disabled),
.toolbar-btn.active {
color: var(--gold-soft);
background: rgba(196, 163, 95, 0.1);
border-color: var(--line-strong);
}
.toolbar-btn:disabled {
cursor: default;
opacity: 0.38;
}
.toolbar-sep {
width: 1px;
height: 20px;
background: var(--line);
}
.toolbar-spacer {
flex: 1;
}
.note-graph-pos {
min-width: 0;
max-width: 34vw;
overflow: hidden;
color: var(--paper-faint);
text-overflow: ellipsis;
white-space: nowrap;
font: 0.68rem var(--font-mono);
letter-spacing: 0.04em;
}
#main-inner {
min-height: 0;
display: grid;
grid-template-columns: minmax(0, 1fr) auto;
overflow: hidden;
}
#content-area {
min-width: 0;
min-height: 0;
overflow: auto;
background:
linear-gradient(90deg, transparent 0, transparent 58px, rgba(123, 47, 55, 0.18) 59px, transparent 60px),
repeating-linear-gradient(180deg, transparent 0, transparent 30px, rgba(233, 222, 199, 0.032) 31px),
radial-gradient(circle at 52% 0%, rgba(196, 163, 95, 0.1), transparent 32rem),
var(--brown-900);
scrollbar-width: thin;
scrollbar-color: var(--line-strong) transparent;
}
.tab-content {
display: none;
min-height: 100%;
}
.tab-content.active {
display: block;
}
#stack-root,
.stack-track,
.stack-pane {
display: contents;
}
/* Content */
#content,
.tab-content-inner {
width: 100%;
max-width: var(--content-max);
margin: 0 auto;
padding: clamp(22px, 4vh, 48px) var(--content-pad) clamp(80px, 12vh, 150px);
}
#content::before {
content: "LOCAL ARCHIVE / HTML EXPORT / ORG-ROAM";
display: block;
margin: 0 0 12px;
color: var(--paper-faint);
font: 0.66rem var(--font-mono);
letter-spacing: 0.16em;
}
.title-section {
position: relative;
display: grid;
grid-template-columns: minmax(0, 1fr) auto;
gap: 18px 28px;
margin: 0 0 clamp(28px, 5vw, 64px);
padding: clamp(18px, 3vw, 34px);
background:
linear-gradient(135deg, rgba(233, 222, 199, 0.075), rgba(123, 47, 55, 0.08)),
rgba(8, 8, 7, 0.24);
border: 1px solid var(--line-strong);
border-left: 7px solid var(--burgundy);
box-shadow: var(--shadow);
}
.title-section::before {
content: "catalogue card";
position: absolute;
top: -11px;
left: 16px;
padding: 0 7px;
color: var(--gold-soft);
background: var(--brown-900);
font: 0.62rem var(--font-mono);
letter-spacing: 0.14em;
text-transform: uppercase;
}
.title-section .title {
margin: 0;
max-width: 19ch;
color: var(--heading);
font: 650 clamp(2.3rem, 6.5vw, 6.4rem)/0.92 var(--font-serif);
letter-spacing: 0;
text-wrap: balance;
}
.title-metadata {
align-self: end;
display: grid;
gap: 8px;
min-width: 210px;
padding-top: 8px;
border-top: 3px double var(--line);
}
.metadata-item {
display: grid;
grid-template-columns: 7ch 1fr;
gap: 10px;
align-items: baseline;
color: var(--paper-dim);
font: 0.72rem var(--font-mono);
}
.metadata-label {
color: var(--paper-faint);
text-transform: uppercase;
}
.metadata-value {
color: var(--gold-soft);
}
.title-controls,
.pane-header,
.pane-close,
.pane-fullscreen,
.pane-edit {
display: none !important;
}
h1,
h2,
h3,
h4,
h5,
h6 {
margin: 0;
color: var(--heading);
font-family: var(--font-serif);
letter-spacing: 0;
}
h1 {
margin: 0 0 1.4rem;
font-size: clamp(2rem, 4vw, 4rem);
line-height: 1.02;
}
h2 {
position: relative;
margin: clamp(42px, 6vw, 76px) 0 18px;
padding-bottom: 9px;
color: var(--heading-2);
border-bottom: 3px double var(--line);
font-size: clamp(1.45rem, 2.4vw, 2.35rem);
line-height: 1.06;
}
h2::before {
content: "§";
margin-right: 0.45rem;
color: var(--burgundy);
font: 0.8em var(--font-mono);
}
h3 {
margin: 34px 0 12px;
color: var(--heading);
font-size: clamp(1.15rem, 1.8vw, 1.65rem);
}
h3::before {
content: "::";
margin-right: 0.45rem;
color: var(--blue);
font-family: var(--font-mono);
font-size: 0.7em;
}
h4,
h5,
h6 {
margin: 26px 0 10px;
color: var(--heading-3);
font: 600 0.88rem var(--font-mono);
letter-spacing: 0.09em;
text-transform: uppercase;
}
p {
max-width: 78ch;
margin: 0 0 1.05rem;
color: var(--paper);
}
p,
li,
td,
th,
dd,
dt {
overflow-wrap: anywhere;
}
a {
color: var(--link);
text-decoration: none;
border-bottom: 1px solid rgba(215, 187, 115, 0.38);
}
a:hover {
color: var(--link-hover);
background: rgba(196, 163, 95, 0.1);
border-bottom-color: currentColor;
}
#content a[href$=".html"] {
font-family: var(--font-ui);
}
#content a[href$=".html"]::before {
content: "[[";
color: var(--blue);
font-family: var(--font-mono);
font-size: 0.72em;
}
#content a[href$=".html"]::after {
content: "]]";
color: var(--blue);
font-family: var(--font-mono);
font-size: 0.72em;
}
strong {
color: #fff0c9;
font-weight: 650;
}
em {
color: #ddca91;
font-style: italic;
}
hr {
height: 0;
margin: 36px 0;
border: 0;
border-top: 3px double var(--line-strong);
}
ul,
ol {
margin: 0 0 1.25rem 1.2rem;
padding: 0;
max-width: 82ch;
}
ul {
list-style: none;
}
li {
margin: 0.36rem 0;
}
ul li {
position: relative;
padding-left: 1.2rem;
}
ul li::before {
content: ">";
position: absolute;
left: 0;
top: 0;
color: var(--gold);
font-family: var(--font-mono);
}
ol {
counter-reset: item;
list-style: none;
}
ol li {
position: relative;
counter-increment: item;
padding-left: 2rem;
}
ol li::before {
content: counter(item, decimal-leading-zero);
position: absolute;
left: 0;
top: 0.05rem;
color: var(--blue);
font: 0.72rem var(--font-mono);
}
li ul,
li ol {
margin-top: 0.45rem;
margin-bottom: 0.45rem;
}
dl {
display: grid;
grid-template-columns: max-content minmax(0, 1fr);
gap: 8px 18px;
margin: 0 0 1.2rem;
}
dt {
color: var(--gold-soft);
font: 0.82rem var(--font-mono);
}
dd {
margin: 0;
}
.tag,
.todo,
.done,
.priority,
.timestamp,
.timestamp-kwd {
font-family: var(--font-mono);
}
.tag {
display: inline-block;
padding: 0.1em 0.45em;
color: var(--tag-fg) !important;
background: var(--tag-bg) !important;
border: 1px solid rgba(79, 114, 93, 0.52);
font-size: 0.72rem;
}
.todo {
color: #d98e7d;
}
.done {
color: #9cc09d;
}
.priority {
color: var(--gold-soft);
}
.timestamp {
color: #c6b376;
}
.timestamp-kwd {
color: var(--blue);
}
blockquote {
position: relative;
max-width: 88ch;
margin: 1.65rem 0;
padding: 1rem 1.2rem 1.05rem 1.45rem;
color: var(--paper-dim);
background:
linear-gradient(90deg, rgba(123, 47, 55, 0.18), rgba(196, 163, 95, 0.055)),
rgba(8, 8, 7, 0.22);
border: 1px solid var(--line);
border-left: 5px double var(--gold);
font-style: italic;
}
blockquote::before {
content: "EXCERPT";
display: block;
margin-bottom: 0.45rem;
color: var(--gold-soft);
font: 0.62rem var(--font-mono);
letter-spacing: 0.14em;
font-style: normal;
}
blockquote p:last-child {
margin-bottom: 0;
}
.epigraph {
max-width: 760px;
margin: 2rem auto;
}
.epigraph blockquote footer {
margin-top: 0.75rem;
color: var(--paper-muted);
text-align: right;
font: 0.8rem var(--font-mono);
}
/* Code and examples */
:not(pre) > code,
code,
tt,
kbd {
padding: 0.08em 0.32em;
color: #ead08a;
background: rgba(8, 8, 7, 0.5);
border: 1px solid rgba(196, 163, 95, 0.18);
font-family: var(--font-mono);
font-size: 0.82em;
}
.org-src-container,
pre.src,
pre.example,
pre {
max-width: 100%;
overflow: auto;
margin: 1.35rem 0;
color: #d9d0bc;
background:
linear-gradient(rgba(233, 222, 199, 0.027) 1px, transparent 1px),
#070806;
background-size: 100% 1.55rem, auto;
border: 1px solid var(--line-strong);
box-shadow: 0 18px 46px rgba(0, 0, 0, 0.24);
}
.org-src-container {
position: relative;
}
.org-src-container > pre,
pre.src,
pre.example {
margin: 0;
padding: 1.65rem 1rem 1rem;
white-space: pre;
font: 0.78rem/1.55 var(--font-mono);
}
pre.src {
position: relative;
}
.org-src-container > pre::before,
pre.src::before {
position: absolute;
top: 0.42rem;
right: 0.62rem;
color: var(--gold-soft);
background: transparent;
border: 0;
padding: 0;
font: 0.62rem var(--font-mono);
letter-spacing: 0.09em;
text-transform: uppercase;
}
pre.src-bash::before,
pre.src-sh::before {
content: "shell";
}
pre.src-python::before {
content: "python";
}
pre.src-emacs-lisp::before {
content: "elisp";
}
pre.src-js::before,
pre.src-javascript::before {
content: "js";
}
pre.src-html::before {
content: "html";
}
pre.src-css::before {
content: "css";
}
.copy-btn {
position: absolute;
top: 0.35rem;
right: 0.45rem;
z-index: 2;
padding: 0.1rem 0.5rem;
color: var(--paper-muted);
background: #0c0c09;
border: 1px solid var(--line);
font: 0.63rem var(--font-mono);
text-transform: lowercase;
}
.copy-btn:hover {
color: var(--gold-soft);
border-color: var(--line-strong);
}
/* Tables */
.table-wrapper,
#content table {
max-width: 100%;
overflow: auto;
margin: 1.4rem 0;
border: 1px solid var(--line-strong);
background: rgba(8, 8, 7, 0.2);
}
#content table {
display: block;
width: 100%;
border-collapse: collapse;
font: 0.88rem var(--font-ui);
}
.table-wrapper table {
display: table;
width: 100%;
border-collapse: collapse;
}
caption {
padding: 0.6rem 0;
color: var(--paper-muted);
font: 0.72rem var(--font-mono);
text-align: left;
caption-side: top;
}
th,
td {
padding: 0.62rem 0.8rem;
text-align: left;
vertical-align: top;
border-bottom: 1px solid rgba(196, 163, 95, 0.15);
}
th {
color: var(--gold-soft);
background: rgba(196, 163, 95, 0.11);
font: 600 0.68rem var(--font-mono);
letter-spacing: 0.08em;
text-transform: uppercase;
}
td {
color: var(--paper-dim);
}
tr:hover td {
background: rgba(196, 163, 95, 0.055);
}
/* TOC, backlinks, previews */
#table-of-contents {
max-width: 860px;
margin: 0 0 1.7rem;
padding: 1rem;
background: rgba(8, 8, 7, 0.26);
border: 1px solid var(--line);
border-left: 5px solid var(--green-700);
}
#table-of-contents h2 {
margin-top: 0;
font-size: 1rem;
font-family: var(--font-mono);
letter-spacing: 0.12em;
text-transform: uppercase;
}
#table-of-contents h2::before {
content: none;
}
#text-table-of-contents ul {
margin: 0.4rem 0 0;
}
#text-table-of-contents a {
color: var(--paper-dim);
border: 0;
font: 0.78rem var(--font-mono);
}
#text-table-of-contents a:hover,
#text-table-of-contents a.is-active,
#text-table-of-contents a[aria-current] {
color: var(--gold-soft);
background: transparent;
}
#text-table-of-contents a::before,
#text-table-of-contents a::after {
content: none !important;
}
.backlinks-section {
margin-top: 4rem;
padding-top: 1.2rem;
border-top: 3px double var(--line-strong);
}
.backlinks-section h2 {
margin-top: 0;
color: var(--gold-soft);
font: 600 0.78rem var(--font-mono);
letter-spacing: 0.14em;
text-transform: uppercase;
}
.backlinks-list {
margin: 0.8rem 0 0;
}
.backlinks-list li {
padding-left: 1.4rem;
}
.backlinks-list li::before {
content: "<-";
color: var(--burgundy);
font-family: var(--font-mono);
}
.backlinks-list a::before,
.backlinks-list a::after {
content: none !important;
}
#backlink-panel {
width: 0;
min-width: 0;
overflow: hidden;
background:
linear-gradient(rgba(233, 222, 199, 0.026) 1px, transparent 1px),
linear-gradient(180deg, rgba(17, 25, 20, 0.98), rgba(11, 11, 9, 0.99));
background-size: 100% 29px, auto;
border-left: 1px solid var(--line-strong);
transition: width var(--dur-mid) var(--ease-out);
}
#backlink-panel.open {
width: min(360px, 34vw);
}
.bp-header {
display: flex;
align-items: center;
gap: 8px;
padding: 12px;
border-bottom: 1px solid var(--line);
}
.bp-label {
flex: 1;
color: var(--gold-soft);
font: 600 0.68rem var(--font-mono);
letter-spacing: 0.14em;
text-transform: uppercase;
}
.bp-count {
color: var(--gold-soft);
font: 0.68rem var(--font-mono);
}
.bp-close {
width: 28px;
height: 28px;
color: var(--paper-muted);
background: transparent;
border: 1px solid transparent;
}
.bp-close:hover {
color: var(--gold-soft);
border-color: var(--line);
}
.bp-list {
height: calc(100dvh - var(--header-h) - var(--toolbar-h) - 54px);
overflow: auto;
padding: 12px;
}
.bp-item {
margin-bottom: 10px;
padding: 11px;
background: rgba(233, 222, 199, 0.04);
border: 1px solid rgba(196, 163, 95, 0.18);
}
.bp-item:hover {
background: rgba(196, 163, 95, 0.09);
border-color: var(--line-strong);
}
.bp-item-title {
color: var(--gold-soft);
font: 0.82rem var(--font-ui);
}
.bp-item-excerpt,
.bp-empty {
color: var(--paper-muted);
font-size: 0.78rem;
}
#link-preview {
position: fixed;
z-index: 999;
width: 340px;
max-height: 260px;
overflow: hidden;
pointer-events: none;
opacity: 0;
transform: translateY(8px);
background:
linear-gradient(rgba(233, 222, 199, 0.026) 1px, transparent 1px),
linear-gradient(180deg, rgba(39, 33, 21, 0.98), rgba(12, 12, 9, 0.98));
background-size: 100% 29px, auto;
border: 1px solid var(--line-strong);
box-shadow: var(--shadow);
transition: opacity var(--dur-mid), transform var(--dur-mid);
}
#link-preview.visible {
opacity: 1;
transform: translateY(0);
}
.preview-inner {
padding: 13px 14px;
}
.preview-title {
margin-bottom: 8px;
padding-bottom: 7px;
color: var(--heading);
border-bottom: 1px solid var(--line);
font: 600 1rem var(--font-serif);
}
.preview-title::before {
content: "[[";
color: var(--blue);
font-family: var(--font-mono);
}
.preview-title::after {
content: "]]";
color: var(--blue);
font-family: var(--font-mono);
}
.preview-body {
color: var(--paper-dim);
font-size: 0.82rem;
line-height: 1.45;
display: -webkit-box;
-webkit-line-clamp: 6;
-webkit-box-orient: vertical;
overflow: hidden;
}
.preview-footer {
padding: 7px 14px;
color: var(--paper-muted);
border-top: 1px solid var(--line);
font: 0.68rem var(--font-mono);
text-transform: uppercase;
}
/* Media, Org extras, sidenotes */
#content .figure,
#content img:not(.fullwidth),
#content video,
.video-container,
.audio-player {
max-width: 100%;
border: 1px solid var(--line);
background: rgba(8, 8, 7, 0.22);
}
#content .figure {
margin: 1.6rem 0;
padding: 10px;
}
#content img:not(.fullwidth) {
display: block;
height: auto;
}
.figure p {
text-align: center;
}
.figure-number,
.audio-label {
color: var(--paper-muted);
font: 0.7rem var(--font-mono);
letter-spacing: 0.08em;
text-transform: uppercase;
}
#content video,
.tab-content video {
width: 100%;
height: auto;
display: block;
}
.video-container,
.audio-player {
margin: 1.5rem 0;
padding: 10px;
}
.audio-player audio {
width: 100%;
display: block;
accent-color: var(--gold);
}
.sidenote,
.marginnote,
.footnote-sidenote {
color: var(--paper-muted);
background: rgba(41, 70, 56, 0.16);
border-left: 3px solid var(--green-700);
padding: 0.65rem 0.75rem;
font: italic 0.78rem/1.45 var(--font-serif);
}
@media (min-width: 1350px) {
.sidenote,
.marginnote {
float: right;
clear: right;
width: 19rem;
margin-right: -21rem;
margin-top: 0.2rem;
}
}
#footnotes {
margin-top: 4rem;
padding-top: 1rem;
color: var(--paper-dim);
border-top: 3px double var(--line-strong);
}
.footdef {
margin-bottom: 0.8rem;
font-size: 0.88rem;
}
.footpara {
display: inline;
}
.org-svg {
max-width: 100%;
height: auto;
}
.mermaid {
max-width: 100%;
overflow: auto;
padding: 12px;
background: rgba(8, 8, 7, 0.24);
border: 1px solid var(--line);
}
.mermaid-view-btn {
margin-top: 8px;
padding: 4px 10px;
color: var(--gold-soft);
background: rgba(196, 163, 95, 0.08);
border: 1px solid var(--line);
font: 0.68rem var(--font-mono);
text-transform: uppercase;
}
#mv-overlay {
background: rgba(5, 5, 4, 0.78) !important;
}
#mv-modal {
background: var(--brown-850) !important;
color: var(--paper) !important;
border: 1px solid var(--line-strong) !important;
border-radius: 0 !important;
}
#mv-toolbar {
border-bottom: 1px solid var(--line) !important;
}
#mv-toolbar button {
color: var(--paper) !important;
background: rgba(233, 222, 199, 0.05) !important;
border: 1px solid var(--line) !important;
border-radius: 0 !important;
}
.inlinetask {
margin: 1rem 0;
padding: 1rem;
color: var(--paper);
background: rgba(123, 47, 55, 0.14);
border: 1px solid var(--line-strong);
}
.fullwidth {
width: 100%;
max-width: 100%;
}
#postamble,
footer {
flex: 0 0 auto;
padding: 7px 14px;
color: var(--paper-faint);
background: #090907;
border-top: 1px solid var(--line);
text-align: center;
font: 0.65rem var(--font-mono);
letter-spacing: 0.04em;
text-transform: lowercase;
}
#postamble p,
#preamble p {
margin: 0;
}
#postamble a,
footer a {
color: var(--paper-muted);
}
#reading-progress {
position: fixed;
top: var(--header-h);
left: var(--rail-w);
z-index: 500;
width: 0%;
height: 3px;
pointer-events: none;
background: linear-gradient(90deg, var(--burgundy), var(--gold));
}
.note-loading {
min-height: 45vh;
display: grid;
place-items: center;
color: var(--paper-muted);
font: 0.85rem var(--font-mono);
letter-spacing: 0.14em;
text-transform: uppercase;
}
.hidden {
display: none !important;
}
@keyframes note-in {
from {
opacity: 0;
transform: translateY(7px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
.tab-content.active #content {
animation: note-in 220ms var(--ease-out) both;
}
/* Cookbook compatibility */
.recipe-meta td:first-child {
color: var(--gold-soft);
font-weight: 600;
white-space: nowrap;
}
.recipe-meta {
font-size: 0.92em;
}
.cb-search {
color: var(--paper);
border-color: var(--line);
}
.cb-filter-btn,
.cb-tag {
border-radius: 0;
}
/* Responsive */
@media (max-width: 1180px) {
:root {
--rail-w: 292px;
--panel-w: 292px;
}
.title-section {
grid-template-columns: 1fr;
}
.title-metadata {
min-width: 0;
grid-template-columns: repeat(2, minmax(0, max-content));
align-items: start;
}
.sidenote,
.marginnote {
display: block;
float: none;
clear: both;
width: auto;
margin: 0.65rem 0 0.9rem;
}
}
@media (max-width: 900px) {
:root {
--header-h: auto;
--rail-w: 0px;
--panel-w: min(86vw, 330px);
--content-pad: 1rem;
}
html,
body {
height: auto;
min-height: 100dvh;
overflow: auto;
}
#preamble {
position: sticky;
top: 0;
height: auto;
min-height: 58px;
}
.banner-header {
grid-template-columns: auto auto;
grid-template-areas:
"brand actions"
"search search";
gap: 8px 12px;
padding: 9px 12px;
}
.banner-left {
grid-area: brand;
}
#breadcrumb-trail {
display: none;
}
.banner-search {
grid-area: search;
justify-self: stretch;
}
.search-trigger {
width: 100%;
min-width: 0;
}
.banner-actions {
grid-area: actions;
justify-self: end;
}
#layout-body {
display: block;
overflow: visible;
}
#sidebar {
position: fixed;
top: 0;
bottom: 0;
left: 0;
width: var(--panel-w);
min-width: 0;
z-index: 900;
transform: translateX(-100%);
transition: transform var(--dur-mid) var(--ease-out);
}
#sidebar.expanded,
#sidebar.mobile-open {
width: var(--panel-w);
min-width: 0;
transform: translateX(0);
}
#main {
min-height: calc(100dvh - 96px);
overflow: visible;
}
#note-toolbar {
position: sticky;
top: 0;
z-index: 300;
height: auto;
min-height: 42px;
flex-wrap: wrap;
padding: 7px 10px;
}
#main-inner {
display: block;
overflow: visible;
}
#content-area {
overflow: visible;
}
#content,
.tab-content-inner {
padding-top: 24px;
}
.title-section .title {
max-width: 100%;
font-size: clamp(2.2rem, 13vw, 4rem);
}
.title-metadata {
grid-template-columns: 1fr;
}
#backlink-panel.open {
position: fixed;
top: 0;
right: 0;
bottom: 0;
z-index: 920;
width: min(88vw, 340px);
box-shadow: -20px 0 52px rgba(0, 0, 0, 0.42);
}
.bp-list {
height: calc(100dvh - 54px);
}
#reading-progress {
left: 0;
top: 0;
}
dl {
grid-template-columns: 1fr;
}
}
@media (max-width: 520px) {
html,
body {
font-size: 17px;
}
.archive-name {
display: none;
}
.archive-mark {
grid-template-columns: 36px;
}
.toolbar-spacer,
.toolbar-sep,
.note-graph-pos {
display: none;
}
#content::before {
font-size: 0.58rem;
}
h2 {
font-size: 1.38rem;
}
.org-src-container > pre,
pre.src,
pre.example {
font-size: 0.72rem;
padding-inline: 0.7rem;
}
}