/* Neutral Journal styles. Only --journal-* tokens; no site colours. */ .journal-layout { box-sizing: border-box; max-width: var(--journal-wide-width); margin: 0 auto; padding: var(--journal-space-5) var(--journal-space-4) var(--journal-space-6); color: var(--journal-color-text); background: var(--journal-color-bg); font-family: var(--journal-font-body); font-size: var(--journal-font-size-base); line-height: var(--journal-line-height); } .journal-layout a { color: var(--journal-color-link); } .journal-layout a:hover { color: var(--journal-color-link-hover); } .journal-layout a:focus-visible { outline: 2px solid var(--journal-color-accent); outline-offset: 2px; } .journal-layout h1, .journal-layout h2, .journal-layout h3 { font-family: var(--journal-font-heading); line-height: 1.25; } /* Headers */ .journal-index-header, .journal-category-header { margin-bottom: var(--journal-space-5); } .journal-index-header__title, .journal-category-header__title { margin: 0 0 var(--journal-space-2); } .journal-category-header__description { margin: 0 0 var(--journal-space-4); color: var(--journal-color-muted); } .journal-category-header__content { max-width: var(--journal-content-width); } /* Post page */ .journal-post { max-width: var(--journal-content-width); margin: 0 auto; } .journal-post__title { margin: 0 0 var(--journal-space-3); } .journal-post-meta { display: flex; flex-wrap: wrap; gap: var(--journal-space-2) var(--journal-space-3); margin-bottom: var(--journal-space-4); color: var(--journal-color-muted); font-size: 0.9em; } .journal-post-meta__categories { display: flex; flex-wrap: wrap; gap: var(--journal-space-2); margin: 0; padding: 0; list-style: none; } .journal-featured-image { margin: 0 0 var(--journal-space-4); } .journal-featured-image img { display: block; width: 100%; height: auto; aspect-ratio: var(--journal-image-ratio); object-fit: cover; border-radius: var(--journal-radius-lg); background: var(--journal-color-surface); } .journal-post__siblings { display: flex; justify-content: space-between; gap: var(--journal-space-3); margin: var(--journal-space-5) 0; padding-top: var(--journal-space-4); border-top: 1px solid var(--journal-color-border); } .journal-post__siblings span { display: block; color: var(--journal-color-muted); font-size: 0.85em; } .journal-post__next { margin-left: auto; text-align: right; } /* Rendered HTML bodies (posts and category content) */ .journal-post-body > :first-child { margin-top: 0; } .journal-post-body img, .journal-post-body video { max-width: 100%; height: auto; border-radius: var(--journal-radius-md); } .journal-post-body ul, .journal-post-body ol { padding-left: var(--journal-space-4); } .journal-post-body blockquote { margin: var(--journal-space-4) 0; padding: var(--journal-space-3) var(--journal-space-4); border-left: 4px solid var(--journal-color-border); background: var(--journal-color-surface); } .journal-post-body code { padding: 0 var(--journal-space-1); border-radius: var(--journal-radius-sm); background: var(--journal-color-surface); font-family: var(--journal-font-mono); font-size: 0.9em; } .journal-post-body pre { overflow-x: auto; padding: var(--journal-space-3); border-radius: var(--journal-radius-md); background: var(--journal-color-surface); } .journal-post-body pre code { padding: 0; } .journal-post-body table { width: 100%; border-collapse: collapse; margin: var(--journal-space-4) 0; } .journal-post-body th, .journal-post-body td { padding: var(--journal-space-2) var(--journal-space-3); border: 1px solid var(--journal-color-border); text-align: left; } /* Embeds expanded from the Blog Editor's placeholders (app/utils/embeds.ts) */ .journal-embed { display: block; width: 100%; aspect-ratio: 16 / 9; margin: var(--journal-space-4) 0; } .journal-embed iframe { display: block; width: 100%; height: 100%; border: 0; } /* Listings */ .journal-post-list { display: grid; grid-template-columns: repeat(auto-fill, minmax(var(--journal-card-min), 1fr)); gap: var(--journal-space-4); } .journal-post-list__empty { grid-column: 1 / -1; color: var(--journal-color-muted); } .journal-post-card { display: flex; flex-direction: column; gap: var(--journal-space-2); padding: var(--journal-space-4); border: 1px solid var(--journal-color-border); border-radius: var(--journal-radius-md); background: var(--journal-color-bg); } .journal-post-card .journal-featured-image { margin: calc(-1 * var(--journal-space-4)) calc(-1 * var(--journal-space-4)) var(--journal-space-2); } .journal-post-card .journal-featured-image img { border-radius: var(--journal-radius-md) var(--journal-radius-md) 0 0; } .journal-post-card__title { margin: 0; font-size: 1.2em; } .journal-post-card__title a { text-decoration: none; } .journal-post-card__date { color: var(--journal-color-muted); font-size: 0.85em; } .journal-post-card__excerpt { margin: 0; } .journal-post-card__more { margin-top: auto; } .journal-related { margin-top: var(--journal-space-5); } /* Pagination */ .journal-pagination { display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: var(--journal-space-3); margin-top: var(--journal-space-5); } .journal-pagination__pages { display: flex; gap: var(--journal-space-1); margin: 0; padding: 0; list-style: none; } .journal-pagination__pages a, .journal-pagination__current { display: inline-block; min-width: 2.25em; padding: var(--journal-space-1) var(--journal-space-2); border-radius: var(--journal-radius-sm); text-align: center; } .journal-pagination__current { background: var(--journal-color-accent); color: var(--journal-color-on-accent); } /* Author */ .journal-author-card { margin-bottom: var(--journal-space-5); } .journal-author-card__name { margin: 0 0 var(--journal-space-2); } .journal-rss-link { display: inline-block; margin-top: var(--journal-space-4); font-size: 0.9em; }