Files
gitlab-instance-0a899031_di…/app/[locale]/course/[moduleIndex]/[lessonIndex]/lesson-markdown.module.css
2026-03-11 22:26:12 -05:00

350 lines
5.9 KiB
CSS
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/* 参考 nomadlms适配日间/夜间主题 */
.readingProgress {
position: fixed;
top: 0;
left: 0;
height: 3px;
background: linear-gradient(90deg, var(--accent) 0%, #fbbf24 100%);
z-index: 100;
transition: width 0.15s linear;
border-radius: 0 3px 3px 0;
}
.backToTop {
position: fixed;
bottom: 24px;
right: 24px;
width: 48px;
height: 48px;
background: var(--card);
border: 1px solid var(--border);
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
cursor: pointer;
z-index: 50;
color: var(--accent);
transition: transform 0.2s, box-shadow 0.2s;
}
.backToTop:hover {
transform: translateY(-2px);
box-shadow: 0 6px 20px rgba(0, 0, 0, 0.15);
}
.tocButton {
position: fixed;
bottom: 24px;
right: 84px;
width: 48px;
height: 48px;
background: var(--card);
border: 1px solid var(--border);
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
cursor: pointer;
z-index: 50;
color: var(--accent);
transition: transform 0.2s, box-shadow 0.2s;
}
.tocButton:hover {
transform: translateY(-2px);
}
.drawerMask {
position: fixed;
inset: 0;
background: rgba(0, 0, 0, 0.4);
z-index: 140;
opacity: 0;
pointer-events: none;
transition: opacity 0.3s ease;
}
.drawerMaskOpen {
opacity: 1;
pointer-events: auto;
}
.drawer {
position: fixed;
top: 0;
right: 0;
bottom: 0;
width: 280px;
max-width: 85vw;
background: var(--background);
border-left: 1px solid var(--border);
box-shadow: -4px 0 24px rgba(0, 0, 0, 0.15);
z-index: 150;
padding: 80px 0 24px;
overflow-y: auto;
transform: translateX(100%);
transition: transform 0.3s ease;
}
.drawerOpen {
transform: translateX(0);
}
.drawerTitle {
padding: 0 20px 12px;
font-size: 14px;
font-weight: 600;
color: var(--muted-foreground);
border-bottom: 1px solid var(--border);
margin-bottom: 8px;
}
.drawerItem {
padding: 10px 20px;
font-size: 14px;
color: var(--foreground);
cursor: pointer;
transition: background 0.15s;
}
.drawerItem:hover {
background: var(--muted);
}
.drawerItemH2 {
padding-left: 28px;
font-size: 13px;
color: var(--muted-foreground);
}
.markdownBody {
font-size: 16px;
line-height: 1.85;
color: var(--foreground);
word-wrap: break-word;
overflow-wrap: break-word;
}
.markdownBody h1 {
font-size: 1.5rem;
font-weight: 800;
color: var(--foreground);
margin: 28px 0 12px;
padding-bottom: 0;
border-bottom: none;
line-height: 1.3;
}
.markdownBody h1:first-child {
margin-top: 0;
}
.markdownBody h1::after {
content: "";
display: block;
width: 40px;
height: 3px;
background: linear-gradient(90deg, var(--accent), #fbbf24);
border-radius: 3px;
margin-top: 8px;
}
.markdownBody h2 {
font-size: 1.25rem;
font-weight: 700;
color: var(--foreground);
margin: 24px 0 10px;
padding-bottom: 8px;
border-bottom: 1px solid var(--border);
line-height: 1.35;
}
.markdownBody h3 {
font-size: 1.1rem;
font-weight: 600;
color: var(--foreground);
margin: 20px 0 8px;
}
.markdownBody h4,
.markdownBody h5,
.markdownBody h6 {
font-size: 1rem;
font-weight: 600;
color: var(--foreground);
margin: 16px 0 6px;
}
.markdownBody p {
font-size: 1rem;
margin-bottom: 14px;
line-height: 1.9;
}
.markdownBody blockquote {
position: relative;
margin: 24px 0;
padding: 16px 20px 16px 24px;
border-left: none;
background: var(--muted);
border-radius: 0 12px 12px 0;
color: var(--muted-foreground);
}
.markdownBody blockquote::before {
content: "";
position: absolute;
left: 0;
top: 0;
bottom: 0;
width: 4px;
background: var(--accent);
border-radius: 0 2px 2px 0;
}
.markdownBody pre.codeBlock {
margin: 24px 0;
padding: 0;
overflow-x: auto;
border-radius: 8px;
background: transparent;
}
.markdownBody pre.codeBlock code {
display: block;
padding: 16px;
font-size: 0.875em;
line-height: 1.6;
}
.markdownBody p code,
.markdownBody li code {
font-family: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace;
font-size: 0.9em;
padding: 0.2em 0.4em;
background: var(--muted);
color: var(--foreground);
border-radius: 6px;
}
.markdownBody a {
color: var(--accent);
text-decoration: none;
}
.markdownBody a:hover {
text-decoration: underline;
text-underline-offset: 2px;
}
.markdownBody img {
display: block;
margin: 28px auto;
max-width: 100%;
height: auto;
border-radius: 8px;
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
}
.markdownBody ul,
.markdownBody ol {
margin: 16px 0;
padding-left: 28px;
}
.markdownBody li {
margin-bottom: 6px;
}
.markdownBody li > ul,
.markdownBody li > ol {
margin-top: 6px;
margin-bottom: 0;
}
.markdownBody table {
width: 100%;
margin: 24px 0;
border-collapse: collapse;
border-radius: 8px;
overflow: hidden;
}
.markdownBody th {
background: var(--muted);
font-weight: 600;
padding: 12px 16px;
text-align: left;
border: 1px solid var(--border);
}
.markdownBody td {
padding: 12px 16px;
border: 1px solid var(--border);
}
.markdownBody tr:nth-child(even) {
background: var(--muted);
}
.markdownBody hr {
border: none;
height: 1px;
background: var(--border);
margin: 28px 0;
}
.markdownBody strong {
font-weight: 700;
}
.markdownBody input[type="checkbox"] {
margin-right: 8px;
}
/* 响应式 */
@media (min-width: 768px) {
.markdownBody {
font-size: 17px;
line-height: 1.8;
}
.markdownBody h1 {
font-size: 1.75rem;
margin: 32px 0 14px;
}
.markdownBody h1::after {
width: 50px;
margin-top: 10px;
}
.markdownBody h2 {
font-size: 1.35rem;
margin: 28px 0 12px;
}
.markdownBody h3 {
font-size: 1.2rem;
margin: 24px 0 10px;
}
.markdownBody p {
margin-bottom: 16px;
}
.backToTop,
.tocButton {
bottom: 32px;
right: 32px;
}
.tocButton {
right: 92px;
}
}