You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
561 lines
13 KiB
561 lines
13 KiB
.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.9rem; |
|
} |
|
|
|
.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; |
|
} |
|
|
|
/* NIP-84: kind-9802 marks in .article-main (fragment id highlight-<event id> for deep links) */ |
|
|
|
/* Full `context` quote + optional <mark> on the `content` substring (body copy, not a box) */ |
|
.user-highlight__body { |
|
margin: 0.35rem 0 0; |
|
font-size: 0.95rem; |
|
line-height: 1.65; |
|
color: var(--color-text); |
|
font-family: var(--main-body-font), serif; |
|
} |
|
|
|
/* In-flow + aside: same NIP-84 mark treatment; scroll-margin in article for #highlight-… links */ |
|
.article-main mark.user-highlight__marker, |
|
.home-aside-highlights__quote--html mark.user-highlight__marker { |
|
margin: 0; |
|
padding: 0.08em 0.1em 0.12em; |
|
border-radius: 0.12em; |
|
font: inherit; |
|
line-height: inherit; |
|
color: var(--color-highlight-mark-fg); |
|
background: color-mix(in srgb, #7ad67a 30%, #f0e8a0 70%); |
|
box-shadow: none; |
|
box-decoration-break: clone; |
|
-webkit-box-decoration-break: clone; |
|
} |
|
|
|
.article-main mark.user-highlight__marker, |
|
.article-main .user-highlight__fragment-target { |
|
scroll-margin-top: calc(var(--site-fixed-header-offset, 140px) + 0.75rem); |
|
} |
|
|
|
/* Invisible #highlight-{eid} anchors (same group as an older mark) — zero visual footprint. */ |
|
.article-main .user-highlight__fragment-target { |
|
display: inline; |
|
font-size: 0; |
|
line-height: 0; |
|
width: 0.01em; |
|
height: 0; |
|
overflow: hidden; |
|
margin: 0; |
|
padding: 0; |
|
border: 0; |
|
vertical-align: baseline; |
|
} |
|
|
|
/* When `content` is not a substring of `context` (rare) */ |
|
.user-highlight__marker-orphan { |
|
margin: 0.5rem 0 0; |
|
font-size: 0.9rem; |
|
line-height: 1.5; |
|
color: var(--color-text-mid); |
|
} |
|
|
|
/* Hover tooltip: all highlighters for this passage (from data-hl) */ |
|
.user-highlight__tip-popover { |
|
min-width: 10rem; |
|
max-width: min(22rem, 92vw); |
|
padding: 0.5rem 0.65rem 0.6rem; |
|
border-radius: 0.35rem; |
|
background: var(--color-bg, #fff); |
|
border: 1px solid color-mix(in srgb, var(--color-text-mid) 18%, var(--color-bg) 82%); |
|
box-shadow: 0 0.15rem 0.75rem color-mix(in srgb, #000 12%, transparent); |
|
font-size: 0.88rem; |
|
line-height: 1.35; |
|
pointer-events: auto; |
|
} |
|
|
|
.user-highlight__tip-popover[hidden] { |
|
display: none !important; |
|
} |
|
|
|
.user-highlight__tip-head { |
|
font-size: 0.72rem; |
|
font-style: normal; |
|
font-weight: 600; |
|
text-transform: uppercase; |
|
letter-spacing: 0.04em; |
|
color: var(--color-text-mid, #6b6b6b); |
|
margin-bottom: 0.4rem; |
|
} |
|
|
|
.user-highlight__tip-list { |
|
list-style: none; |
|
margin: 0; |
|
padding: 0; |
|
display: flex; |
|
flex-direction: column; |
|
gap: 0.35rem; |
|
} |
|
|
|
.user-highlight__tip-item { |
|
margin: 0; |
|
} |
|
|
|
.user-highlight__tip-popover .user-badge--in-tip { |
|
display: flex; |
|
align-items: center; |
|
gap: 0.4rem; |
|
text-decoration: none; |
|
color: var(--color-text, #111); |
|
max-width: 100%; |
|
} |
|
|
|
.user-highlight__tip-popover .user-badge--in-tip:hover { |
|
text-decoration: underline; |
|
} |
|
|
|
.user-highlight__tip-popover .user-badge__avatar--in-tip { |
|
flex-shrink: 0; |
|
width: 1.5rem; |
|
height: 1.5rem; |
|
border-radius: 50%; |
|
overflow: hidden; |
|
display: flex; |
|
align-items: center; |
|
justify-content: center; |
|
background: color-mix(in srgb, var(--color-text-mid) 12%, var(--color-bg) 88%); |
|
font-size: 0.65rem; |
|
font-weight: 600; |
|
} |
|
|
|
.user-highlight__tip-popover .user-badge__avatar-fallback--dot { |
|
display: flex; |
|
align-items: center; |
|
justify-content: center; |
|
width: 100%; |
|
height: 100%; |
|
} |
|
|
|
.user-highlight__tip-popover .user-badge__name { |
|
font-size: 0.85rem; |
|
font-weight: 500; |
|
min-width: 0; |
|
overflow: hidden; |
|
text-overflow: ellipsis; |
|
white-space: nowrap; |
|
}
|
|
|