diff --git a/package.json b/package.json index 51c7a60..e53e29b 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "crumbs", "private": true, - "version": "0.1.6", + "version": "0.1.7", "type": "module", "scripts": { "dev": "vite dev", diff --git a/src/app.css b/src/app.css index 1c4d2a8..f6e7fa3 100644 --- a/src/app.css +++ b/src/app.css @@ -1,2 +1,54 @@ +@import url('https://fonts.googleapis.com/css2?family=Press+Start+2P&family=JetBrains+Mono:ital,wght@0,100..800;1,100..800&display=swap'); + @import 'tailwindcss'; @plugin '@tailwindcss/typography'; + +:root { + --bg-base: #f0e6d3; + --bg-surface: #faf5eb; + --primary: #C8860A; + --primary-hover: #E8A020; + --text: #1a1a2e; + --text-muted: #6b6272; + --border: #1a1a2e; + --border-subtle: #d4cabb; +} + +body { + font-family: 'JetBrains Mono', monospace; +} + +body::before { + content: ''; + position: fixed; + inset: 0; + pointer-events: none; + opacity: 0.03; + background-image: repeating-conic-gradient(#1a1a2e 0% 25%, transparent 0% 50%); + background-size: 4px 4px; + z-index: 0; +} + +/* Prose overrides for parchment theme */ +.prose { + --tw-prose-body: var(--text); + --tw-prose-headings: var(--text); + --tw-prose-links: var(--primary); + --tw-prose-code: var(--text); + --tw-prose-pre-bg: var(--bg-surface); + --tw-prose-pre-code: var(--text); +} + +.prose :where(code):not(:where([class~="not-prose"] *)) { + background-color: var(--bg-surface); + border-radius: 2px; + padding: 0.125rem 0.25rem; +} + +.prose :where(a):not(:where([class~="not-prose"] *)) { + color: var(--primary); +} + +.prose :where(a):not(:where([class~="not-prose"] *)):hover { + color: var(--primary-hover); +} diff --git a/src/app.html b/src/app.html index 229730d..29f7c73 100644 --- a/src/app.html +++ b/src/app.html @@ -3,7 +3,9 @@
- + + + toggleItem(index)} - class="h-4 w-4 rounded border-gray-300 text-amber-600 focus:ring-amber-500" + class="h-4 w-4 rounded border-[var(--border-subtle)] text-[var(--primary)] focus:ring-[var(--primary)]" data-testid="checklist-checkbox" /> updateText(index, (e.target as HTMLInputElement).value)} onkeydown={(e) => handleKeydown(e, index)} - class="flex-1 bg-transparent text-sm outline-none {item.checked ? 'text-gray-400 line-through' : 'text-gray-800'}" + class="flex-1 bg-transparent text-sm outline-none {item.checked ? 'text-[var(--text-muted)] line-through' : 'text-[var(--text)]'}" placeholder="List item" data-testid="checklist-input" /> @@ -101,7 +101,7 @@ aria-label="Remove item" data-testid="checklist-remove" > -