.article-main { margin-top: 30px; } .article-main img { max-width: 100%; height: auto; display: block; margin: 1.25rem auto; } .article-main h2, .article-main h3, .article-main h4, .article-main h5, .article-main h6 { margin-top: 2em; } .article-main p, .article-main ul, .article-main ol, .article-main blockquote, .article-main table { font-family: var(--main-body-font), serif; color: var(--color-text-mid); font-size: 1.4rem; line-height: 1.75; } .article-main table { font-size: 1.3rem; } .article-main table th, .article-main table td { border-bottom: 1px solid var(--color-text); } .card-header--article { display: flex; justify-content: space-between; align-items: flex-start; gap: 0.75rem; flex-wrap: wrap; /* .card-header { overflow: hidden } would clip the ⋯ dropdown; following siblings can paint on top. */ overflow: visible; position: relative; z-index: 5; } .card-header--article .card-title { flex: 1 1 12rem; min-width: 0; margin: 0; font-family: var(--heading-font), serif; font-weight: 700; line-height: 1.12; color: var(--color-primary); } /* Article + category page headers: global h1 is 300 weight; titles should read as the clear focal point. */ .card-header--article h1.card-title { font-size: clamp(1.85rem, 2.8vw, 2.75rem); } /* Hero summary: same “excerpt” level as list cards, not .lede’s 1.6rem body scale */ .card > .card-body > .lede { font-family: var(--main-body-font), serif; font-size: 1.1rem; line-height: 1.55; font-weight: 400; color: var(--color-text-mid); margin: 0 0 1.25rem; max-width: none; } /* Sibling .category-body would paint over the ⋯ popover; lift the title card above the list. */ .category-page__header-card { position: relative; z-index: 6; } .card.comment .metadata.comment-card__head { align-items: flex-start; } .card.comment .metadata__end { display: flex; align-items: center; gap: 0.4rem; flex-shrink: 0; } .byline { display: flex; justify-content: space-between; align-items: center; margin: 2rem 0; padding-top: 0.5rem; border-top: 1px solid var(--color-border); font-size: 0.88rem; font-weight: 400; color: color-mix(in srgb, var(--color-text-mid) 58%, var(--color-bg) 42%); font-family: var(--font-family), sans-serif; } .byline__author { display: inline-flex; align-items: center; flex-wrap: wrap; gap: 0.35em; } /* Article body only — avoid 50px vertical margins on comment / quote cards (Atoms:Content markdown). */ .article-main blockquote { border-left: 6px solid var(--color-bg-light); padding-left: 3px; margin: 50px 0 50px 3px; } .article-main blockquote p { font-size: 1.6rem; font-style: italic; color: var(--color-text-mid); padding-left: 30px; } .table-of-contents { border-left: var(--color-secondary) 6px solid; margin: 2em 0; } .table-of-contents li { list-style: none; margin-left: 0; } .heading-permalink { float: left; padding-right: 0; margin-left: -30px; line-height: 1.2; color: var(--color-secondary); } .heading-permalink:hover { text-decoration: none; font-weight: bold; } .embedded-content iframe { width: 100%; height: auto; aspect-ratio: 16/9; } .article-comments-async .comments--pending { margin: 1rem 0; } .comments-quotes { margin-top: 2rem; padding-top: 1.5rem; border-top: 1px solid var(--color-border); } .comments-quotes__title { font-size: 1.25rem; margin: 0 0 0.35rem; } .comments-quotes__lede { font-size: 0.95rem; margin: 0 0 1.25rem; } .comments-quotes__lede code { font-size: 0.9em; } .comments-quotes__sep { margin: 0 0.25rem; color: var(--color-text-mid); } .comment--quote .metadata { flex-wrap: wrap; gap: 0.35rem; } /* Tracebacks: same flex+gap as .comments so spacing isn’t lost to margin collapse or .card { margin } from app.css */ .comments-quotes__list { display: flex; flex-direction: column; gap: 0.4rem; min-height: 0; } .comments-quotes__list > .card.comment--quote { margin: 0; /* override app.css .card { margin-bottom: 50px } */ flex-shrink: 0; } .comments-quotes__list .card.comment--quote .card-footer.nostr-previews { margin-top: 0.75rem; } /* Thread: no depth indent; one accent color for all replies */ .comments { display: flex; flex-direction: column; gap: 0.55rem; } .comments .card.comment, .comments-quotes__list .card.comment { margin-left: 0; margin-bottom: 0; padding: 0.75rem 0.9rem 0.85rem; border-radius: 6px; border: 1px solid var(--color-border); border-left: 3px solid var(--color-primary); gap: 0.5rem; } .comments .card.comment--depth-0, .comments .card.comment--depth-1, .comments .card.comment--depth-2, .comments .card.comment--depth-3 { margin-left: 0; border-left-color: var(--color-primary); } .comments .card.comment .metadata, .comments-quotes__list .card.comment .metadata { margin-bottom: 0; } .comment__reply-blurb { padding: 0.4rem 0.55rem 0.45rem 0.55rem; margin: 0 0 0 0.2rem; border-left: 2px solid color-mix(in srgb, var(--color-border) 50%, transparent); background: color-mix(in srgb, var(--color-bg-light) 55%, transparent); border-radius: 0 3px 3px 0; font-size: 0.82em; line-height: 1.45; color: var(--color-text-mid); } /* Markdown blockquotes inside note bodies: tight rhythm (not .article-main blockquote). */ .comments .card.comment .card-body blockquote, .comments-quotes__list .card.comment .card-body blockquote { margin: 0.35rem 0 0.5rem; padding: 0.3rem 0 0.35rem 0.65rem; border-left: 3px solid color-mix(in srgb, var(--color-primary) 40%, var(--color-border)); } .comments .card.comment .card-body blockquote p, .comments-quotes__list .card.comment .card-body blockquote p { font-size: 1em; line-height: 1.45; font-style: italic; color: var(--color-text-mid); margin: 0; padding-left: 0; } .comments .card.comment .card-body > :first-child, .comments-quotes__list .card.comment .card-body > :first-child { margin-top: 0; } .comments .card.comment .card-body > :last-child, .comments-quotes__list .card.comment .card-body > :last-child { margin-bottom: 0; } .comments .card.comment .card-body, .comments-quotes__list .card.comment .card-body { line-height: 1.52; } .comment__reply-blurb blockquote, .comment__reply-blurb :where(blockquote) { border-left: none; margin: 0; padding-left: 0; } .comment__reply-blurb blockquote p, .comment__reply-blurb :where(blockquote) p { font-size: inherit; line-height: inherit; font-style: normal; margin: 0; padding-left: 0; } .visually-hidden { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); border: 0; white-space: nowrap; } .comment-reply { margin-top: 0.45rem; padding-top: 0.45rem; border-top: 1px solid var(--color-border); } .comment-reply--article { margin-bottom: 0.75rem; border: 1px solid var(--color-border); border-radius: 6px; border-top: 1px solid var(--color-border); } .comment-reply--article__inner { padding: 0.9rem 1rem 1rem; } .comment-reply__toolbar { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 0.5rem 0.75rem; margin-bottom: 0.35rem; } .comment-reply__lede { margin: 0; font-size: 0.9rem; line-height: 1.35; flex: 1 1 12rem; min-width: 0; } .comment-reply__toolbar--inline { margin-bottom: 0.15rem; margin-top: 0.3rem; justify-content: flex-end; } .comment-reply__heading { font-size: 1.05rem; margin: 0; } .comment-reply__panel { margin-top: 0.6rem; padding: 0.75rem 0.8rem 0.85rem; border-radius: 6px; background: var(--color-bg-light, rgba(0, 0, 0, 0.2)); border: 1px solid var(--color-border); box-sizing: border-box; } .comment-reply__panel--hidden { display: none; } .comment-reply--nested { margin-top: 0.3rem; } .comment-reply__head { font-size: 0.9rem; margin-bottom: 0.35rem; } .comment-reply__body .form-control { width: 100%; max-width: 100%; box-sizing: border-box; padding: 0.6rem 0.75rem; margin: 0; border: 1px solid var(--color-border); border-radius: 6px; background: var(--color-bg); color: var(--color-text); font: inherit; line-height: 1.5; min-height: 4.5rem; resize: vertical; } .comment-reply__actions { margin-top: 0.5rem; } .comment-reply__hint { font-size: 0.9rem; margin: 0.5rem 0 0; } .reply-toast { position: fixed; left: 50%; bottom: 1.2rem; transform: translateX(-50%) translateY(8px); z-index: 1200; min-width: 16rem; max-width: min(92vw, 32rem); padding: 0.55rem 0.85rem; border: 1px solid var(--color-border); color: var(--color-text); background: var(--color-bg); opacity: 0; transition: opacity 0.2s ease, transform 0.2s ease; box-shadow: 0 6px 20px rgba(0, 0, 0, 0.18); } .reply-toast--visible { opacity: 1; transform: translateX(-50%) translateY(0); } .reply-toast--success { border-color: #2f7a4b; background: #e7f5eb; } .reply-toast--error { border-color: #a12b2b; background: #fdecec; }