memos/web/src/index.css

349 lines
7.5 KiB
CSS

@import "tailwindcss";
@import "tw-animate-css";
@import "./themes/default.css";
@theme {
--default-transition-duration: 150ms;
}
@layer base {
* {
@apply border-border outline-none ring-0;
}
body {
@apply bg-background text-foreground;
}
/* ========================================
* Task List Styles
* Based on GitHub's implementation for proper nesting
* ======================================== */
/* Task list items - remove default list styling */
.markdown-content .task-list-item,
.prose .task-list-item {
list-style-type: none;
}
/* Task list checkboxes - use negative margin for proper alignment */
.markdown-content .task-list-item > input[type="checkbox"],
.prose .task-list-item > input[type="checkbox"] {
margin: 0 0.2em 0.25em -1.4em;
vertical-align: middle;
}
/* Paragraphs inside task items should not have extra margins */
.markdown-content .task-list-item > p,
.prose .task-list-item > p {
display: inline;
margin: 0;
}
/* Task list containers maintain standard list spacing */
.markdown-content .contains-task-list,
.prose .contains-task-list {
list-style: none;
padding-left: 0;
}
/* Nested task lists get proper indentation (standard list padding) */
.markdown-content .task-list-item .contains-task-list,
.prose .task-list-item .contains-task-list {
padding-left: 1.5em;
}
/* ========================================
* Markdown Content Styles
* Compact spacing optimized for memos/notes
*
* Key principles:
* 1. Block elements use 8px (0.5rem) bottom margin (compact)
* 2. First child has no top margin, last child has no bottom margin
* 3. Nested elements have minimal spacing
* 4. Inline elements have no vertical spacing
* ======================================== */
.markdown-content {
font-size: 1rem;
line-height: 1.5;
color: var(--foreground);
word-wrap: break-word;
}
/* ========================================
* First/Last Child Normalization
* Remove boundary spacing to prevent double margins
* ======================================== */
.markdown-content > :first-child {
margin-top: 0 !important;
}
.markdown-content > :last-child {
margin-bottom: 0 !important;
}
/* ========================================
* Block Elements
* Compact 8px bottom margin
* ======================================== */
.markdown-content p,
.markdown-content blockquote,
.markdown-content ul,
.markdown-content ol,
.markdown-content dl,
.markdown-content table,
.markdown-content pre,
.markdown-content hr {
margin-top: 0;
margin-bottom: 0.5rem;
}
/* ========================================
* Headings
* Compact spacing for visual separation
* ======================================== */
.markdown-content h1,
.markdown-content h2,
.markdown-content h3,
.markdown-content h4,
.markdown-content h5,
.markdown-content h6 {
margin-top: 0.75rem;
margin-bottom: 0.5rem;
font-weight: 600;
line-height: 1.25;
}
.markdown-content h1 {
font-size: 2em;
font-weight: 700;
border-bottom: 1px solid var(--border);
padding-bottom: 0.25rem;
}
.markdown-content h2 {
font-size: 1.5em;
border-bottom: 1px solid var(--border);
padding-bottom: 0.25rem;
}
.markdown-content h3 {
font-size: 1.25em;
}
.markdown-content h4 {
font-size: 1em;
}
.markdown-content h5 {
font-size: 0.875em;
}
.markdown-content h6 {
font-size: 0.85em;
color: var(--muted-foreground);
}
/* ========================================
* Paragraphs
* ======================================== */
.markdown-content p {
line-height: 1.5;
}
/* ========================================
* Links
* ======================================== */
.markdown-content a {
color: var(--primary);
text-decoration: underline;
transition: opacity 150ms;
}
.markdown-content a:hover {
opacity: 0.8;
}
/* ========================================
* Lists
* ======================================== */
.markdown-content ul,
.markdown-content ol {
padding-left: 1.5em;
list-style-position: outside;
}
.markdown-content ul {
list-style-type: disc;
}
.markdown-content ol {
list-style-type: decimal;
}
.markdown-content li {
margin-top: 0.125rem;
line-height: 1.5;
}
.markdown-content li > p {
margin-bottom: 0.125rem;
}
/* Nested lists should have minimal spacing */
.markdown-content li > ul,
.markdown-content li > ol {
margin-top: 0.125rem;
margin-bottom: 0.125rem;
}
/* First and last items in lists */
.markdown-content li:first-child {
margin-top: 0;
}
.markdown-content li + li {
margin-top: 0.125rem;
}
/* ========================================
* Code (inline and blocks)
* ======================================== */
.markdown-content code {
font-family: var(--font-mono);
font-size: 0.875em;
background: var(--muted);
padding: 0.125rem 0.25rem;
border-radius: 0.25rem;
}
.markdown-content pre {
font-family: var(--font-mono);
font-size: 0.875rem;
background: var(--muted);
padding: 0.5rem 0.75rem;
border-radius: 0.375rem;
overflow-x: auto;
white-space: pre-wrap;
word-wrap: break-word;
}
.markdown-content pre code {
background: none;
padding: 0;
font-size: inherit;
border-radius: 0;
}
/* ========================================
* Blockquotes
* ======================================== */
.markdown-content blockquote {
padding: 0 0.75rem;
color: var(--muted-foreground);
border-left: 0.25rem solid var(--border);
}
.markdown-content blockquote > :first-child {
margin-top: 0;
}
.markdown-content blockquote > :last-child {
margin-bottom: 0;
}
/* ========================================
* Horizontal Rules
* ======================================== */
.markdown-content hr {
height: 0.25em;
padding: 0;
background: transparent;
border: 0;
border-bottom: 1px solid var(--border);
}
/* ========================================
* Tables
* ======================================== */
.markdown-content table {
display: block;
width: 100%;
width: max-content;
max-width: 100%;
overflow: auto;
border-spacing: 0;
border-collapse: collapse;
}
.markdown-content table th,
.markdown-content table td {
padding: 0.25rem 0.5rem;
border: 1px solid var(--border);
}
.markdown-content table th {
font-weight: 600;
background: var(--muted);
}
.markdown-content table tr {
background: transparent;
border-top: 1px solid var(--border);
}
.markdown-content table tr:nth-child(2n) {
background: var(--muted);
opacity: 0.5;
}
/* ========================================
* Images
* ======================================== */
.markdown-content img {
max-width: 100%;
height: auto;
border-radius: 0.5rem;
}
/* ========================================
* Inline Elements
* No vertical spacing
* ======================================== */
.markdown-content strong {
font-weight: 600;
}
.markdown-content em {
font-style: italic;
}
.markdown-content code,
.markdown-content strong,
.markdown-content em,
.markdown-content a {
vertical-align: baseline;
}
/* ========================================
* Strikethrough (GFM)
* ======================================== */
.markdown-content del {
text-decoration: line-through;
}
}