/* nrd.sh - Minimal Base Styles */ :root { /* Typography */ --font-sans: system-ui, -apple-system, sans-serif; --font-mono: ui-monospace, "Cascadia Code", "Fira Code", monospace; --font-size: 1rem; --line-height: 1.6; /* Spacing */ --space-xs: 0.25rem; --space-sm: 0.5rem; --space-md: 1rem; --space-lg: 2rem; --space-xl: 4rem; /* Layout */ --max-width: 48rem; /* Colors - Light */ --bg: #fafafa; --bg-alt: #f0f0f0; --text: #1a1a1a; --text-muted: #666; --accent: #0066cc; --accent-hover: #0052a3; --border: #ddd; } @media (prefers-color-scheme: dark) { :root { --bg: #1a1a1a; --bg-alt: #252525; --text: #e0e0e0; --text-muted: #999; --accent: #6ab0f3; --accent-hover: #8cc4f7; --border: #333; } } /* Reset */ *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; } /* Base */ html { font-family: var(--font-sans); font-size: var(--font-size); line-height: var(--line-height); background: var(--bg); color: var(--text); } body { min-height: 100vh; display: flex; flex-direction: column; } /* Layout */ nav, main, footer { width: 100%; max-width: var(--max-width); margin: 0 auto; padding: var(--space-md); } nav { display: flex; gap: var(--space-lg); border-bottom: 1px solid var(--border); padding-block: var(--space-md); } main { flex: 1; padding-block: var(--space-lg); } footer { border-top: 1px solid var(--border); padding-block: var(--space-md); color: var(--text-muted); font-size: 0.875rem; } /* Typography */ h1, h2, h3 { line-height: 1.3; margin-block: var(--space-lg) var(--space-md); } h1 { font-size: 2rem; } h2 { font-size: 1.5rem; } h3 { font-size: 1.25rem; } h1:first-child, h2:first-child, h3:first-child { margin-top: 0; } p { margin-block: var(--space-md); } a { color: var(--accent); text-decoration: none; } a:hover { color: var(--accent-hover); text-decoration: underline; } /* Code */ code, pre { font-family: var(--font-mono); font-size: 0.9em; } code { background: var(--bg-alt); padding: var(--space-xs) var(--space-sm); border-radius: 3px; } pre { background: var(--bg-alt); padding: var(--space-md); overflow-x: auto; border-radius: 4px; margin-block: var(--space-md); } pre code { background: none; padding: 0; } /* Lists */ ul, ol { margin-block: var(--space-md); padding-left: var(--space-lg); } li { margin-block: var(--space-xs); } /* Blockquote */ blockquote { border-left: 3px solid var(--accent); padding-left: var(--space-md); margin-block: var(--space-md); color: var(--text-muted); } /* Post */ article.post header { margin-bottom: var(--space-lg); } .date { color: var(--text-muted); font-size: 0.9rem; } .description { color: var(--text-muted); font-style: italic; } .tags { list-style: none; display: flex; gap: var(--space-sm); padding: 0; margin-top: var(--space-sm); } .tags li a { background: var(--bg-alt); padding: var(--space-xs) var(--space-sm); border-radius: 3px; font-size: 0.85rem; } /* Post List */ .post-list { list-style: none; padding: 0; } .post-list li { margin-block: var(--space-md); padding-bottom: var(--space-md); border-bottom: 1px solid var(--border); } .post-list li:last-child { border-bottom: none; } .post-list .title { display: block; font-weight: 600; } /* Project Cards */ .project-cards { list-style: none; padding: 0; display: grid; gap: var(--space-md); } .card { background: var(--bg-alt); padding: var(--space-md); border-radius: 4px; } .card h2 { font-size: 1.1rem; margin: 0 0 var(--space-sm); } .card p { margin: 0; color: var(--text-muted); font-size: 0.9rem; } /* Hero */ .hero { text-align: center; padding-block: var(--space-xl); } .hero h1 { font-size: 2.5rem; } .tagline { font-size: 1.25rem; color: var(--text-muted); } /* Syntax Highlighting */ :root { --hl-keyword: #d73a49; --hl-string: #22863a; --hl-string-special: #032f62; --hl-comment: #6a737d; --hl-function: #6f42c1; --hl-type: #005cc5; --hl-number: #005cc5; --hl-operator: #d73a49; --hl-variable: #e36209; --hl-constant: #005cc5; --hl-property: #005cc5; --hl-punctuation: #586069; --hl-punctuation-special: #d73a49; --hl-attribute: #22863a; --hl-escape: #005cc5; --hl-embedded: #6f42c1; } @media (prefers-color-scheme: dark) { :root { --hl-keyword: #f97583; --hl-string: #9ecbff; --hl-string-special: #b392f0; --hl-comment: #6a737d; --hl-function: #b392f0; --hl-type: #79b8ff; --hl-number: #79b8ff; --hl-operator: #f97583; --hl-variable: #ffab70; --hl-constant: #79b8ff; --hl-property: #79b8ff; --hl-punctuation: #a0a0a0; --hl-punctuation-special: #f97583; --hl-attribute: #85e89d; --hl-escape: #79b8ff; --hl-embedded: #b392f0; } } .hl-keyword { color: var(--hl-keyword); } .hl-string { color: var(--hl-string); } .hl-comment { color: var(--hl-comment); font-style: italic; } .hl-function { color: var(--hl-function); } .hl-function-builtin { color: var(--hl-function); } .hl-type { color: var(--hl-type); } .hl-type-builtin { color: var(--hl-type); } .hl-number { color: var(--hl-number); } .hl-operator { color: var(--hl-operator); } .hl-variable { color: var(--hl-variable); } .hl-variable-builtin { color: var(--hl-variable); } .hl-variable-parameter { color: var(--hl-variable); } .hl-constant { color: var(--hl-constant); } .hl-constant-builtin { color: var(--hl-constant); } .hl-property { color: var(--hl-property); } .hl-punctuation { color: var(--hl-punctuation); } .hl-punctuation-bracket { color: var(--hl-punctuation); } .hl-punctuation-delimiter { color: var(--hl-punctuation); } .hl-attribute { color: var(--hl-attribute); } .hl-constructor { color: var(--hl-type); } .hl-escape { color: var(--hl-escape); font-weight: 600; } .hl-embedded { color: var(--hl-embedded); } .hl-string-special, .hl-string-special-path, .hl-string-special-uri { color: var(--hl-string-special); } .hl-punctuation-special { color: var(--hl-punctuation-special); }