diff --git a/.claude/.fuse_hidden004d524100000411 b/.claude/.fuse_hidden004d524100000411 deleted file mode 100644 index c0b0af1..0000000 --- a/.claude/.fuse_hidden004d524100000411 +++ /dev/null @@ -1,48 +0,0 @@ -{ - "permissions": { - "allow": [ - "WebFetch(domain:openrouter.ai)", - "Bash(node:*)", - "Bash(curl:*)", - "Bash(pnpm build:*)", - "Bash(find:*)", - "Bash(pnpm add:*)", - "WebFetch(domain:substance.biohazardvfx.com)", - "WebFetch(domain:substrate.biohazardvfx.com)", - "Bash(pnpm dev:*)", - "Bash(pnpm astro check:*)", - "Bash(pkill:*)", - "mcp__plugin_playwright_playwright__browser_navigate", - "mcp__plugin_playwright_playwright__browser_click", - "mcp__plugin_playwright_playwright__browser_evaluate", - "mcp__plugin_playwright_playwright__browser_take_screenshot", - "mcp__plugin_playwright_playwright__browser_press_key", - "mcp__plugin_playwright_playwright__browser_resize", - "mcp__plugin_playwright_playwright__browser_wait_for", - "WebFetch(domain:www.shadcn.io)", - "WebSearch", - "WebFetch(domain:ui.shadcn.com)", - "WebFetch(domain:shadcn-chatbot-kit.vercel.app)", - "WebFetch(domain:shadcn-chat.vercel.app)", - "WebFetch(domain:github.com)", - "WebFetch(domain:www.prompt-kit.com)", - "WebFetch(domain:docs-shadcn-chat.vercel.app)", - "mcp__plugin_playwright_playwright__browser_type", - "mcp__plugin_playwright_playwright__browser_snapshot", - "mcp__plugin_playwright_playwright__browser_console_messages", - "mcp__plugin_playwright_playwright__browser_network_requests", - "mcp__plugin_playwright_playwright__browser_close", - "mcp__plugin_playwright_playwright__browser_hover", - "mcp__plugin_playwright_playwright__browser_run_code", - "Bash(ls:*)", - "Bash(npx wrangler:*)", - "Bash(pnpm run deploy)", - "Bash(git add:*)", - "Bash(git commit -m \"$\\(cat <<''EOF''\nAdd D1 database ID for hubert-conversations\n\nCreated D1 database and updated wrangler.jsonc with actual database UUID.\n\nCo-Authored-By: Claude Opus 4.5 \nEOF\n\\)\")", - "Bash(git push)", - "Bash(git commit:*)" - ], - "deny": [], - "ask": [] - } -} diff --git a/.claude/.fuse_hidden009df63e00000355 b/.claude/.fuse_hidden009df63e00000355 deleted file mode 100644 index 9f0ed87..0000000 --- a/.claude/.fuse_hidden009df63e00000355 +++ /dev/null @@ -1,16 +0,0 @@ -{ - "permissions": { - "allow": [ - "WebFetch(domain:openrouter.ai)", - "Bash(node:*)", - "Bash(curl:*)", - "Bash(pnpm build:*)", - "Bash(find:*)", - "Bash(pnpm add:*)", - "WebFetch(domain:substance.biohazardvfx.com)", - "WebFetch(domain:substrate.biohazardvfx.com)" - ], - "deny": [], - "ask": [] - } -} diff --git a/.fuse_hidden004d5f7400000413 b/.fuse_hidden004d5f7400000413 deleted file mode 100644 index b231fc1..0000000 --- a/.fuse_hidden004d5f7400000413 +++ /dev/null @@ -1,49 +0,0 @@ -{ - "name": "nicholai-work-2026", - "type": "module", - "version": "0.0.1", - "scripts": { - "dev": "astro dev", - "build": "astro build", - "preview": "astro build && wrangler pages dev", - "astro": "astro", - "deploy": "astro build && wrangler pages deploy", - "cf-typegen": "wrangler types", - "convert:avif": "node src/utils/convert-to-avif.js", - "convert:avif:all": "node src/utils/convert-to-avif.js --all", - "convert:avif:jpeg": "node src/utils/convert-to-avif.js --jpeg", - "convert:avif:png": "node src/utils/convert-to-avif.js --png", - "commit": "node src/utils/git-commit.js", - "notepad": "node src/utils/notepad.js" - }, - "dependencies": { - "@astrojs/cloudflare": "^12.6.12", - "@astrojs/mdx": "^4.3.12", - "@astrojs/react": "^4.4.2", - "@astrojs/rss": "^4.0.14", - "@astrojs/sitemap": "^3.6.0", - "@langchain/cloudflare": "^1.0.1", - "@langchain/core": "^1.1.8", - "@langchain/langgraph": "^1.0.7", - "@langchain/openai": "^1.2.0", - "@tailwindcss/typography": "^0.5.19", - "@tailwindcss/vite": "^4.1.17", - "@types/react": "^19.2.7", - "@types/react-dom": "^19.2.3", - "astro": "^5.16.4", - "dompurify": "^3.3.1", - "framer-motion": "^12.26.2", - "lunr": "^2.3.9", - "marked": "^17.0.1", - "react": "^19.2.1", - "react-dom": "^19.2.1", - "sharp": "^0.34.3", - "tailwindcss": "^4.1.17", - "zod": "^4.3.4" - }, - "devDependencies": { - "@types/dompurify": "^3.2.0", - "@types/node": "^24.10.1", - "wrangler": "^4.53.0" - } -} \ No newline at end of file diff --git a/.gitignore b/.gitignore index 43c5abd..9c71b7d 100644 --- a/.gitignore +++ b/.gitignore @@ -50,3 +50,7 @@ GEMINI.md # dev notes and scratch work dev/ + +# FUSE filesystem temp files +.fuse_hidden* +**/.fuse_hidden* diff --git a/gitea-themes/theme-nicholai-light.css b/gitea-themes/theme-nicholai-light.css new file mode 100644 index 0000000..9cd171e --- /dev/null +++ b/gitea-themes/theme-nicholai-light.css @@ -0,0 +1,161 @@ +@import url('https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500;600&family=Sora:wght@400;500;600;700&display=swap'); + +gitea-theme-meta-info { + --theme-display-name: "Nicholai Work Light"; +} + +:root { + --is-dark-theme: false; + color-scheme: light; + + /* fonts */ + --fonts-regular: 'Sora', -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', sans-serif; + --fonts-monospace: 'IBM Plex Mono', 'SFMono-Regular', 'Menlo', 'Monaco', 'Consolas', 'Liberation Mono', monospace; + + /* primary accent - nicholai.work red */ + --color-primary: #dd4132; + --color-primary-contrast: #ffffff; + --color-primary-dark-1: #c73a2d; + --color-primary-dark-2: #b13328; + --color-primary-light-1: #e35d50; + --color-primary-light-2: #e9796e; + + /* contribution graph alpha tokens */ + --color-primary-alpha-10: rgba(221, 65, 50, 0.15); + --color-primary-alpha-20: rgba(221, 65, 50, 0.30); + --color-primary-alpha-40: rgba(221, 65, 50, 0.50); + --color-primary-alpha-60: rgba(221, 65, 50, 0.70); + --color-primary-alpha-80: rgba(221, 65, 50, 0.85); + + /* backgrounds - nicholai.work light palette */ + --color-body: #FAFAFA; + --color-box-body: #F1F3F5; + --color-box-body-highlight: #E9ECEF; + --color-box-header: #E9ECEF; + --color-secondary: #DEE2E6; + --color-secondary-dark-1: #CED4DA; + --color-secondary-dark-2: #ADB5BD; + --color-secondary-light-1: #E9ECEF; + --color-secondary-light-2: #F1F3F5; + + /* text colors - WCAG AA compliant on light backgrounds */ + --color-text-dark: #0B0D11; + --color-text: #475569; + --color-text-light: #64748B; + --color-text-light-2: #94A3B8; + --color-text-light-3: #CBD5E1; + + /* borders */ + --color-border: #DEE2E6; + --color-light-border: #E9ECEF; + --color-input-border: #CED4DA; + --color-input-border-hover: #dd4132; + + /* semantic colors */ + --color-success: #059669; + --color-success-text: #047857; + --color-success-bg: rgba(16, 185, 129, 0.1); + --color-success-border: rgba(16, 185, 129, 0.3); + + --color-warning: #D97706; + --color-warning-text: #B45309; + --color-warning-bg: rgba(245, 158, 11, 0.1); + --color-warning-border: rgba(245, 158, 11, 0.3); + + --color-error: #DC2626; + --color-error-text: #B91C1C; + --color-error-bg: rgba(239, 68, 68, 0.1); + --color-error-border: rgba(239, 68, 68, 0.3); + + --color-info: #2563EB; + --color-info-text: #1D4ED8; + --color-info-bg: rgba(59, 130, 246, 0.1); + --color-info-border: rgba(59, 130, 246, 0.3); + + /* diff colors */ + --color-diff-removed-word-bg: rgba(239, 68, 68, 0.3); + --color-diff-added-word-bg: rgba(16, 185, 129, 0.3); + --color-diff-removed-row-bg: rgba(239, 68, 68, 0.08); + --color-diff-moved-row-bg: rgba(245, 158, 11, 0.08); + --color-diff-added-row-bg: rgba(16, 185, 129, 0.08); + --color-diff-removed-row-border: rgba(239, 68, 68, 0.2); + --color-diff-moved-row-border: rgba(245, 158, 11, 0.2); + --color-diff-added-row-border: rgba(16, 185, 129, 0.2); + + /* code/syntax */ + --color-code-bg: #F1F3F5; + --color-code-sidebar-bg: #FAFAFA; + + /* interactive states */ + --color-hover: rgba(221, 65, 50, 0.08); + --color-active: rgba(221, 65, 50, 0.15); + --color-focus: rgba(221, 65, 50, 0.2); + + /* shadows */ + --color-shadow: rgba(0, 0, 0, 0.1); + + /* buttons */ + --color-button: #E9ECEF; + --color-button-hover: #DEE2E6; + + /* navbar */ + --color-nav-bg: #FAFAFA; + --color-nav-text: #475569; + --color-nav-hover-bg: #F1F3F5; + + /* labels */ + --color-label-bg: #E9ECEF; + --color-label-text: #475569; + --color-label-hover-bg: #DEE2E6; + + /* menu */ + --color-menu: #FFFFFF; + --color-menu-hover: #F1F3F5; + --color-menu-active: #E9ECEF; + + /* markdown */ + --color-markdown-code-block: #F1F3F5; + --color-markdown-table-row: #FAFAFA; + + /* reaction */ + --color-reaction-bg: #F1F3F5; + --color-reaction-hover-bg: #E9ECEF; + --color-reaction-active-bg: rgba(221, 65, 50, 0.15); + + /* placeholder/input */ + --color-placeholder-text: #94A3B8; + --color-input-text: #475569; + --color-input-background: #FFFFFF; + + /* accent shades for various UI elements */ + --color-accent: #dd4132; + --color-small-accent: #dd4132; + + /* link colors */ + --color-link: #dd4132; + --color-link-hover: #c73a2d; +} + +/* font overrides */ +body, +.ui, +.ui.menu, +.ui.text, +.ui.header, +.ui.message, +.ui.button, +input, +textarea, +select { + font-family: 'Sora', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif !important; +} + +code, +pre, +.mono, +.codebox, +.CodeMirror, +.code-view, +.file-view { + font-family: 'IBM Plex Mono', 'SFMono-Regular', 'Menlo', monospace !important; +} diff --git a/gitea-themes/theme-nicholai.css b/gitea-themes/theme-nicholai.css new file mode 100644 index 0000000..6f99206 --- /dev/null +++ b/gitea-themes/theme-nicholai.css @@ -0,0 +1,161 @@ +@import url('https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500;600&family=Sora:wght@400;500;600;700&display=swap'); + +gitea-theme-meta-info { + --theme-display-name: "Nicholai Work"; +} + +:root { + --is-dark-theme: true; + color-scheme: dark; + + /* fonts */ + --fonts-regular: 'Sora', -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', sans-serif; + --fonts-monospace: 'IBM Plex Mono', 'SFMono-Regular', 'Menlo', 'Monaco', 'Consolas', 'Liberation Mono', monospace; + + /* primary accent - nicholai.work red */ + --color-primary: #dd4132; + --color-primary-contrast: #ffffff; + --color-primary-dark-1: #c73a2d; + --color-primary-dark-2: #b13328; + --color-primary-light-1: #e35d50; + --color-primary-light-2: #e9796e; + + /* contribution graph alpha tokens */ + --color-primary-alpha-10: rgba(221, 65, 50, 0.15); + --color-primary-alpha-20: rgba(221, 65, 50, 0.30); + --color-primary-alpha-40: rgba(221, 65, 50, 0.50); + --color-primary-alpha-60: rgba(221, 65, 50, 0.70); + --color-primary-alpha-80: rgba(221, 65, 50, 0.85); + + /* backgrounds - nicholai.work dark palette */ + --color-body: #0B0D11; + --color-box-body: #111318; + --color-box-body-highlight: #171B22; + --color-box-header: #1A1F28; + --color-secondary: #1E242E; + --color-secondary-dark-1: #171B22; + --color-secondary-dark-2: #111318; + --color-secondary-light-1: #252C38; + --color-secondary-light-2: #2C3542; + + /* text colors - high contrast for readability */ + --color-text-dark: #FFFFFF; + --color-text: #D1D9E6; /* ~11:1 - primary text, very readable */ + --color-text-light: #B0BFD0; /* ~8:1 - secondary text */ + --color-text-light-2: #94A3B8; /* ~6.5:1 - tertiary text */ + --color-text-light-3: #7A8A9D; /* ~4.8:1 - muted text */ + + /* borders */ + --color-border: #2C3542; + --color-light-border: #1E242E; + --color-input-border: #2C3542; + --color-input-border-hover: #dd4132; + + /* semantic colors */ + --color-success: #10B981; + --color-success-text: #34D399; + --color-success-bg: rgba(16, 185, 129, 0.1); + --color-success-border: rgba(16, 185, 129, 0.3); + + --color-warning: #F59E0B; + --color-warning-text: #FBBF24; + --color-warning-bg: rgba(245, 158, 11, 0.1); + --color-warning-border: rgba(245, 158, 11, 0.3); + + --color-error: #EF4444; + --color-error-text: #F87171; + --color-error-bg: rgba(239, 68, 68, 0.1); + --color-error-border: rgba(239, 68, 68, 0.3); + + --color-info: #3B82F6; + --color-info-text: #60A5FA; + --color-info-bg: rgba(59, 130, 246, 0.1); + --color-info-border: rgba(59, 130, 246, 0.3); + + /* diff colors */ + --color-diff-removed-word-bg: rgba(239, 68, 68, 0.4); + --color-diff-added-word-bg: rgba(16, 185, 129, 0.4); + --color-diff-removed-row-bg: rgba(239, 68, 68, 0.1); + --color-diff-moved-row-bg: rgba(245, 158, 11, 0.1); + --color-diff-added-row-bg: rgba(16, 185, 129, 0.1); + --color-diff-removed-row-border: rgba(239, 68, 68, 0.3); + --color-diff-moved-row-border: rgba(245, 158, 11, 0.3); + --color-diff-added-row-border: rgba(16, 185, 129, 0.3); + + /* code/syntax */ + --color-code-bg: #111318; + --color-code-sidebar-bg: #0B0D11; + + /* interactive states */ + --color-hover: rgba(221, 65, 50, 0.1); + --color-active: rgba(221, 65, 50, 0.2); + --color-focus: rgba(221, 65, 50, 0.3); + + /* shadows */ + --color-shadow: rgba(0, 0, 0, 0.5); + + /* buttons */ + --color-button: #252C38; + --color-button-hover: #2C3542; + + /* navbar */ + --color-nav-bg: #0B0D11; + --color-nav-text: #D1D9E6; + --color-nav-hover-bg: #1A1F28; + + /* labels */ + --color-label-bg: #252C38; + --color-label-text: #D1D9E6; + --color-label-hover-bg: #2C3542; + + /* menu */ + --color-menu: #111318; + --color-menu-hover: #1A1F28; + --color-menu-active: #1E242E; + + /* markdown */ + --color-markdown-code-block: #111318; + --color-markdown-table-row: #171B22; + + /* reaction */ + --color-reaction-bg: #1A1F28; + --color-reaction-hover-bg: #252C38; + --color-reaction-active-bg: rgba(221, 65, 50, 0.2); + + /* placeholder/input */ + --color-placeholder-text: #7A8A9D; + --color-input-text: #D1D9E6; + --color-input-background: #111318; + + /* accent shades for various UI elements */ + --color-accent: #dd4132; + --color-small-accent: #dd4132; + + /* link colors */ + --color-link: #dd4132; + --color-link-hover: #e35d50; +} + +/* font overrides */ +body, +.ui, +.ui.menu, +.ui.text, +.ui.header, +.ui.message, +.ui.button, +input, +textarea, +select { + font-family: 'Sora', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif !important; +} + +code, +pre, +.mono, +.codebox, +.CodeMirror, +.code-view, +.file-view { + font-family: 'IBM Plex Mono', 'SFMono-Regular', 'Menlo', monospace !important; +}