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.
 
 
 
 
 
 

546 lines
12 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 {
scroll-margin-top: calc(var(--site-fixed-header-offset, 140px) + 0.75rem);
}
/* 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;
}