ivanhanloth_Obsidian-Articl.../styles.css

313 lines
6.6 KiB
CSS
Raw Permalink Normal View History

2026-05-25 21:40:44 +00:00
/* ===== Floating buttons (scoped to each markdown view) ===== */
2026-05-25 19:22:15 +00:00
2026-05-25 21:40:44 +00:00
.article-nav-host {
position: relative;
}
2026-05-25 19:22:15 +00:00
2026-05-25 21:40:44 +00:00
.article-nav-floating-inview {
position: absolute;
pointer-events: none;
z-index: 10;
display: flex;
justify-content: space-between;
}
2026-05-25 19:22:15 +00:00
2026-05-25 21:40:44 +00:00
/* Circular style — vertically centered */
.article-nav-floating-inview-circle {
top: 50%;
left: 0;
right: 0;
transform: translateY(-50%);
padding: 0 12px;
}
/* Tall rectangular style — flush with edges, full height */
.article-nav-floating-inview-tall {
top: 0;
bottom: 0;
left: 0;
right: 0;
}
/* Shared button base */
.article-nav-floating-btn {
pointer-events: auto;
cursor: pointer;
display: flex;
align-items: center;
justify-content: center;
padding: 0;
color: var(--text-muted);
background: var(--background-secondary);
border: 1px solid var(--background-modifier-border);
transition: background 0.2s ease, color 0.2s ease, transform 0.15s ease, opacity 0.5s ease;
}
.article-nav-floating-btn.is-hidden {
opacity: 0;
pointer-events: none;
}
/* Prevent the click strip from receiving events when the button is hidden.
pointer-events: none on a parent does NOT block children in CSS, so we
must target the strip child directly. */
.article-nav-floating-btn.is-hidden .article-nav-tall-click-strip {
pointer-events: none;
}
/* Circular variant */
.article-nav-floating-btn-circle {
width: 44px;
height: 44px;
border-radius: 50%;
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08);
}
.article-nav-floating-btn-circle:hover {
background: var(--interactive-accent);
color: var(--text-on-accent);
transform: scale(1.08);
}
/* Tall variant */
.article-nav-floating-btn.article-nav-floating-btn-tall {
2026-05-25 21:40:44 +00:00
position: relative;
width: 70px;
padding: 0;
height: 100%;
border-radius: 0;
background: transparent;
2026-05-25 21:40:44 +00:00
outline: 1px solid transparent;
border: 1px solid transparent;
box-shadow: none;
2026-05-25 21:40:44 +00:00
pointer-events: none;
}
.article-nav-floating-btn-tall.is-hovered {
color: var(--text-normal);
}
/* 30px click strip — the only interactive zone */
.article-nav-tall-click-strip {
position: absolute;
top: 0;
bottom: 0;
width: 30px;
pointer-events: auto;
cursor: pointer;
display: flex;
align-items: center;
justify-content: center;
z-index: 1;
}
.article-nav-floating-prev .article-nav-tall-click-strip {
left: 0;
}
.article-nav-floating-next .article-nav-tall-click-strip {
right: 0;
}
/* Independent background div for smooth gradient opacity transition */
.article-nav-floating-btn-tall-bg {
position: absolute;
inset: 0;
opacity: 0;
pointer-events: none;
transition: opacity 0.2s ease;
}
.article-nav-floating-prev > .article-nav-floating-btn-tall-bg {
background: linear-gradient(90deg, var(--background-modifier-hover), transparent);
}
.article-nav-floating-next > .article-nav-floating-btn-tall-bg {
background: linear-gradient(270deg, var(--background-modifier-hover), transparent);
}
.article-nav-floating-btn-tall.is-hovered .article-nav-floating-btn-tall-bg {
opacity: 1;
}
/* Idle fade — apply to children, hover still wins via :hover */
.article-nav-floating-inview.is-idle .article-nav-floating-btn {
opacity: 0.12;
}
.article-nav-floating-inview.is-idle .article-nav-floating-btn-tall {
opacity: 0.18;
}
.article-nav-floating-inview .article-nav-floating-btn:hover,
.article-nav-floating-inview .article-nav-floating-btn-tall.is-hovered {
opacity: 1;
}
/* ===== Inline (VitePress style) navigation ===== */
.article-nav-inline {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 16px;
margin: 16px 0 8px 0;
padding-top: 16px;
border-top: 1px solid var(--background-modifier-border);
}
.article-nav-inline-slot {
min-width: 0;
}
/* Explicit column placement slots always occupy their correct column
even when the other slot is absent from the DOM. */
.article-nav-inline-slot.article-nav-inline-prev {
grid-column: 1;
}
.article-nav-inline-slot.article-nav-inline-next {
grid-column: 2;
}
.article-nav-inline a.article-nav-inline-link,
.article-nav-inline .article-nav-inline-link{
2026-05-25 21:40:44 +00:00
display: block;
width: 100%;
padding: 12px 16px;
border: 1px solid var(--background-modifier-border);
border-radius: 8px;
text-decoration: none;
2026-05-25 21:40:44 +00:00
color: var(--text-normal);
background: var(--background-primary);
transition: border-color 0.15s ease, transform 0.15s ease, color 0.15s ease, background 0.15s ease;
box-sizing: border-box;
}
/* Right-align the "Next" card content */
.article-nav-inline-next .article-nav-inline-link {
text-align: right;
}
.article-nav-inline-link:hover {
border-color: var(--interactive-accent);
color: var(--interactive-accent);
transform: translateY(-1px);
}
.article-nav-inline-label {
font-size: 0.78em;
color: var(--text-muted);
margin-bottom: 4px;
letter-spacing: 0.02em;
}
.article-nav-inline-link:hover .article-nav-inline-label {
color: var(--interactive-accent);
}
.article-nav-inline-title {
font-size: 1em;
font-weight: 600;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
/* Keep inline + seealso aligned with editor file margins */
.markdown-source-view .article-nav-inline,
.markdown-source-view .article-nav-seealso {
margin-left: var(--file-margins, 0);
margin-right: var(--file-margins, 0);
}
/* ===== See Also section ===== */
.article-nav-seealso {
margin: 16px 0;
padding: 14px 18px;
border-radius: 8px;
background: var(--background-secondary);
border-left: 4px solid var(--interactive-accent);
}
.article-nav-seealso-top {
margin-top: 4px;
margin-bottom: 20px;
}
.article-nav-seealso-bottom {
margin-top: 20px;
}
.article-nav-seealso-title {
font-weight: 600;
font-size: 0.95em;
color: var(--text-normal);
margin-bottom: 6px;
letter-spacing: 0.02em;
}
.article-nav-seealso-list {
margin: 0;
padding-left: 18px;
list-style: disc;
}
.article-nav-seealso-list li {
margin: 4px 0;
}
.article-nav-seealso-link {
color: var(--link-color);
text-decoration: none;
cursor: pointer;
}
.article-nav-seealso-link:hover {
color: var(--link-color-hover);
text-decoration: underline;
}
/* ===== Confirm modal ===== */
.article-nav-confirm-message {
white-space: pre-wrap;
}
.article-nav-confirm-buttons {
display: flex;
gap: 8px;
justify-content: flex-end;
margin-top: 16px;
}
/* Mobile tweaks */
@media (max-width: 600px) {
.article-nav-floating-inview-circle {
padding: 0 6px;
}
.article-nav-floating-btn-circle {
width: 38px;
height: 38px;
}
.article-nav-floating-btn-tall {
width: 28px;
}
.article-nav-inline {
grid-template-columns: 1fr;
}
/* Reset explicit column placement for single-column layout */
.article-nav-inline-slot.article-nav-inline-prev,
.article-nav-inline-slot.article-nav-inline-next {
grid-column: 1;
}
.article-nav-inline-next .article-nav-inline-link {
text-align: left;
}
}