* { box-sizing: border-box; margin: 0; padding: 0; } body { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, sans-serif; line-height: var(--line-height-body); color: var(--color-text-primary); background-color: var(--color-bg-page); max-width: 800px; margin: 0 auto; padding: var(--space-section); } /* Header and Navigation */ header { margin-bottom: var(--space-section); padding-bottom: var(--space-element); border-bottom: 1px solid var(--color-border-default); } header nav a { color: var(--color-text-heading); text-decoration: none; font-weight: var(--font-weight-bold); font-size: var(--font-size-nav); } header nav a:hover { color: var(--color-text-link); } /* Main content */ main { min-height: calc(100vh - 200px); } h1, h2, h3, h4, h5, h6 { color: var(--color-text-heading); margin: var(--space-block) 0 var(--space-element); } h1 { font-size: var(--font-size-page-title); } h2 { font-size: var(--font-size-section-title); } h3 { font-size: var(--font-size-subsection-title); } p { margin-bottom: var(--space-element); } a { color: var(--color-text-link); } /* Section header with view all link */ .section-header { display: flex; justify-content: space-between; align-items: flex-start; } .section-header h1 { margin: var(--space-block) 0 var(--space-element); } .view-all { margin-top: var(--space-block); font-size: var(--font-size-small); color: var(--color-text-link); text-decoration: none; } .view-all:hover { text-decoration: underline; } /* Blog post list */ .post-list { list-style: none; } .post-list li { margin-bottom: var(--space-block); } .post-list li:last-child { margin-bottom: 0; } .post-card { display: block; text-decoration: none; padding: var(--space-block); border: 1px solid var(--color-border-default); border-radius: var(--radius-card); transition: border-color 0.2s, box-shadow 0.2s; } .post-card:hover { border-color: var(--color-border-focus); box-shadow: var(--shadow-card); } .post-card h2 { margin: 0 0 var(--space-tight); color: var(--color-text-heading); } .post-card:hover h2 { color: var(--color-text-link); } .post-card time { color: var(--color-text-muted); font-size: var(--font-size-small); } .post-card p { color: var(--color-text-primary); margin-top: var(--space-tight); margin-bottom: 0; } /* Blog post */ .blog-post { margin-bottom: var(--space-section); } .post-header { margin-bottom: var(--space-section); } .post-header h1 { margin-bottom: var(--space-tight); } .post-header time { color: var(--color-text-muted); font-size: var(--font-size-small); } .post-content { margin-bottom: var(--space-section); } .post-content img { max-width: 100%; height: auto; } .post-content code { background-color: var(--color-bg-surface); padding: 0.2rem 0.4rem; border-radius: var(--radius-inline); font-size: 0.9em; } .post-content pre { background-color: var(--color-bg-surface); padding: var(--space-element); border-radius: var(--radius-block); overflow-x: auto; margin: var(--space-element) 0; } .post-content pre code { padding: 0; background: none; } /* Task lists (checkboxes) */ .post-content ul.contains-task-list { list-style: none; padding-left: 0; } .post-content .task-list-item { display: flex; align-items: flex-start; gap: var(--space-tight); margin-bottom: var(--space-micro); } .post-content .task-list-item-checkbox { margin-top: 0.35rem; width: 1rem; height: 1rem; accent-color: var(--color-text-link); } .post-content .task-list-item > label { flex: 1; } /* Nested task lists */ .post-content .task-list-item ul.contains-task-list { margin-top: var(--space-micro); } /* Lists in post content */ .post-content ul, .post-content ol { margin-bottom: var(--space-element); padding-left: var(--space-block); } .post-content li { margin-bottom: var(--space-micro); } .post-content ul ul, .post-content ul ol, .post-content ol ul, .post-content ol ol { margin-top: var(--space-micro); margin-bottom: var(--space-tight); padding-left: var(--space-block); } /* Expandable sections */ .expandable { border: 1px solid var(--color-border-default); border-radius: var(--radius-block); margin: var(--space-element) 0; } .expandable summary { padding: 0.75rem var(--space-element); cursor: pointer; font-weight: var(--font-weight-bold); background-color: var(--color-bg-surface); border-radius: var(--radius-block) var(--radius-block) 0 0; } .expandable[open] summary { border-bottom: 1px solid var(--color-border-default); } .expandable > *:not(summary) { padding: 0 var(--space-element); } .expandable > p:last-child { padding-bottom: var(--space-element); } /* Tags */ .post-tags { margin-top: var(--space-section); padding-top: var(--space-element); border-top: 1px solid var(--color-border-default); } .post-tags h2 { font-size: var(--font-size-body); margin-bottom: var(--space-tight); } .tag-list { list-style: none; display: flex; flex-wrap: wrap; gap: var(--space-tight) var(--space-element); } .tag-list li { display: inline; } .tag-list a { color: var(--color-text-link); text-decoration: none; } .tag-list a:hover { text-decoration: underline; } /* Footnotes */ .footnotes { margin-top: var(--space-section); padding-top: var(--space-element); border-top: 2px solid var(--color-border-default); font-size: var(--font-size-small); } .footnotes h2 { font-size: var(--font-size-body); margin-bottom: var(--space-tight); } .footnotes ol { padding-left: var(--space-block); } .footnotes li { margin-bottom: var(--space-tight); } .footnote-ref a { color: var(--color-text-link); text-decoration: none; } .footnote-backref { margin-left: var(--space-tight); text-decoration: none; } /* Draft Warning Banner */ .draft-warning-banner { background-color: var(--color-bg-warning); border: 1px solid var(--color-border-warning); border-radius: var(--radius-block); padding: var(--space-element); margin-bottom: var(--space-block); color: var(--color-warning-text); font-weight: var(--font-weight-medium); text-align: center; } /* Footer */ footer { margin-top: var(--space-section); padding-top: var(--space-element); border-top: 1px solid var(--color-border-default); text-align: center; color: var(--color-text-muted); font-size: var(--font-size-small); } /* Icon utilities */ .icon-invertible { transition: filter 0.2s; } @media (prefers-color-scheme: dark) { .icon-invertible { filter: invert(1) brightness(0.9); } }