diff --git a/README.md b/README.md
index e7787b9..a3721d1 100644
--- a/README.md
+++ b/README.md
@@ -63,7 +63,7 @@ In a world where document formatting tools are increasingly locked behind paywal
-| ๐ **Free Forever** | ๐ **Privacy First** | ๐จ **40+ Styles** | ๐ค **Open Source** |
+| ๐ **Free Forever** | ๐ **Privacy First** | ๐จ **150+ Styles** | ๐ค **Open Source** |
|:---:|:---:|:---:|:---:|
| No fees, no trials, no catches | All processing happens locally on your machine | From minimalist to ornate, academic to artistic | MIT licensed โ use it, fork it, improve it together |
@@ -78,7 +78,7 @@ In a world where document formatting tools are increasingly locked behind paywal
### ๐ฏ Core Capabilities
- **๐ Universal Markdown Support** โ Drop in any `.md`, `.txt`, or `.markdown` file
-- **๐จ 40+ Typography Styles** โ Curated across 8 aesthetic categories
+- **๐จ 150+ Typography Styles** โ Curated across 8 aesthetic categories
- **๐ Multiple Paper Sizes** โ A4 and Letter formats supported
- **๐พ Local Processing** โ Your documents never leave your machine
- **๐ฅ๏ธ Native Desktop Apps** โ Built with Tauri for Windows, macOS, and Linux
@@ -86,7 +86,7 @@ In a world where document formatting tools are increasingly locked behind paywal
### ๐๏ธ Style Categories
-Each style is a labor of love, crafted with attention to typographic detail:
+Each of the 163+ styles is a labor of love, crafted with attention to typographic detail:
| Category | Description | Example Styles |
|----------|-------------|----------------|
@@ -310,35 +310,58 @@ Want to contribute a new style to the collective? Here's how:
1. **Choose a Category** โ Find the appropriate file in `/styles/`
2. **Define Your Style** โ Create a complete `StyleOption` object:
-```typescript
+```json
{
- id: 'my-custom-style',
- name: 'My Style',
- category: 'Creative',
- description: 'A brief description of the aesthetic',
- vibe: 'Keywords that capture the feeling',
- googleFontsImport: 'https://fonts.googleapis.com/css2?family=YourFont&display=swap',
- wordConfig: {
- heading1: {
- font: 'Your Font',
- size: 24,
- color: '1a1a1a',
- bold: true,
- // ... more properties
+ "id": "my-custom-style",
+ "name": "My Style",
+ "category": "Creative",
+ "description": "A brief description of the aesthetic",
+ "vibe": "Keywords that capture the feeling",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=YourFont&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Your Font",
+ "body": "Your Body Font",
+ "code": "Your Code Font"
},
- heading2: { /* ... */ },
- body: { /* ... */ },
- accentColor: '6366f1'
+ "colors": {
+ "text": "1a1a1a",
+ "textSecondary": "4a4a4a",
+ "background": "ffffff",
+ "accent": "6366f1",
+ "border": "e5e5e5",
+ "codeBg": "f3f4f6",
+ "blockquoteBg": "f9fafb",
+ "blockquoteBorder": "6366f1"
+ }
},
- previewCss: `
- h1 { font-family: 'Your Font'; font-size: 24pt; }
- /* ... match wordConfig exactly */
- `
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 24,
+ "color": "text",
+ "bold": true,
+ "spacing": { "before": 24, "after": 12, "line": 1.2 }
+ },
+ "p": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "spacing": { "before": 0, "after": 10, "line": 1.5 }
+ }
+ // ... define other elements (h2-h6, blockquote, code, etc.)
+ },
+ "page": {
+ "margins": { "top": 72, "bottom": 72, "left": 72, "right": 72 },
+ "columns": 1,
+ "header": true,
+ "footer": true
+ }
}
```
-3. **Export It** โ Add to the category's export array
-4. **Test Both Paths** โ Verify preview looks right AND Word export works
+3. **Save It** โ Save as a `.json` file in `src-tauri/templates/
/`
+4. **Build** โ The app automatically loads JSON templates at runtime
5. **Share With All** โ Submit a PR so everyone benefits!
### Configuration Options
diff --git a/audit-templates.ps1 b/audit-templates.ps1
new file mode 100644
index 0000000..b193565
--- /dev/null
+++ b/audit-templates.ps1
@@ -0,0 +1,94 @@
+# Template Audit Script
+# Analyzes all templates against research-paper.json reference
+
+$reference = Get-Content "src-tauri\templates\academic\research-paper.json" | ConvertFrom-Json
+$templateFiles = Get-ChildItem -Path "src-tauri\templates" -Recurse -Filter "*.json"
+
+$requiredElements = @('h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'p', 'blockquote', 'code', 'pre',
+ 'ul', 'ol', 'li', 'strong', 'em', 'a', 'table', 'th', 'td',
+ 'hr', 'img', 'del', 'sup', 'sub', 'mark', 'footnote', 'footnoteRef')
+
+$requiredColors = @('text', 'textSecondary', 'background', 'accent', 'border', 'codeBg', 'blockquoteBorder')
+$requiredFonts = @('heading', 'body', 'code')
+
+Write-Host "`n=== TEMPLATE AUDIT REPORT ===" -ForegroundColor Cyan
+Write-Host "Reference: research-paper.json with $($requiredElements.Count) elements`n" -ForegroundColor Green
+
+$issues = @()
+
+foreach ($file in $templateFiles) {
+ try {
+ $template = Get-Content $file.FullName | ConvertFrom-Json
+ $templateName = "$($template.category)/$($template.id)"
+
+ # Check elements
+ $missingElements = @()
+ $elementKeys = if ($template.elements) { $template.elements.PSObject.Properties.Name | Where-Object { $_ -notlike "_comment*" } } else { @() }
+
+ foreach ($element in $requiredElements) {
+ if ($element -notin $elementKeys) {
+ $missingElements += $element
+ }
+ }
+
+ # Check colors
+ $missingColors = @()
+ $colorKeys = if ($template.typography.colors) { $template.typography.colors.PSObject.Properties.Name | Where-Object { $_ -notlike "_comment*" } } else { @() }
+
+ foreach ($color in $requiredColors) {
+ if ($color -notin $colorKeys) {
+ $missingColors += $color
+ }
+ }
+
+ # Check fonts
+ $missingFonts = @()
+ $fontKeys = if ($template.typography.fonts) { $template.typography.fonts.PSObject.Properties.Name | Where-Object { $_ -notlike "_comment*" } } else { @() }
+
+ foreach ($font in $requiredFonts) {
+ if ($font -notin $fontKeys) {
+ $missingFonts += $font
+ }
+ }
+
+ # Report issues
+ if ($missingElements.Count -gt 0 -or $missingColors.Count -gt 0 -or $missingFonts.Count -gt 0) {
+ $issue = [PSCustomObject]@{
+ Template = $templateName
+ MissingElements = $missingElements.Count
+ MissingColors = $missingColors.Count
+ MissingFonts = $missingFonts.Count
+ ElementsList = ($missingElements -join ', ')
+ ColorsList = ($missingColors -join ', ')
+ FontsList = ($missingFonts -join ', ')
+ }
+ $issues += $issue
+
+ Write-Host "โ $templateName" -ForegroundColor Red
+ if ($missingElements.Count -gt 0) {
+ Write-Host " Missing $($missingElements.Count) elements: $($missingElements -join ', ')" -ForegroundColor Yellow
+ }
+ if ($missingColors.Count -gt 0) {
+ Write-Host " Missing $($missingColors.Count) colors: $($missingColors -join ', ')" -ForegroundColor Yellow
+ }
+ if ($missingFonts.Count -gt 0) {
+ Write-Host " Missing $($missingFonts.Count) fonts: $($missingFonts -join ', ')" -ForegroundColor Yellow
+ }
+ } else {
+ Write-Host "โ
$templateName" -ForegroundColor Green
+ }
+
+ } catch {
+ Write-Host "โ Error parsing $($file.Name): $_" -ForegroundColor Red
+ }
+}
+
+Write-Host "`n=== SUMMARY ===" -ForegroundColor Cyan
+Write-Host "Total templates: $($templateFiles.Count)" -ForegroundColor White
+Write-Host "Templates with issues: $($issues.Count)" -ForegroundColor Yellow
+Write-Host "Templates complete: $($templateFiles.Count - $issues.Count)" -ForegroundColor Green
+
+if ($issues.Count -gt 0) {
+ Write-Host "`nTemplates needing fixes:" -ForegroundColor Yellow
+ $issues | Format-Table Template, MissingElements, MissingColors, MissingFonts -AutoSize
+}
diff --git a/cleanup_templates.cjs b/cleanup_templates.cjs
new file mode 100644
index 0000000..34f133d
--- /dev/null
+++ b/cleanup_templates.cjs
@@ -0,0 +1,61 @@
+const fs = require('fs');
+const path = require('path');
+
+const rootDir = 'd:\\gdfhbfgdbnbdfbdf\\typogenie\\src-tauri\\templates';
+
+function walk(dir) {
+ const files = fs.readdirSync(dir, { withFileTypes: true });
+ files.forEach(dirent => {
+ const fullPath = path.join(dir, dirent.name);
+ if (dirent.isDirectory()) {
+ walk(fullPath);
+ } else if (dirent.name.endsWith('.json')) {
+ let content = fs.readFileSync(fullPath, 'utf8');
+ let changed = false;
+
+ // 1. Fix orphaned sides: "bottom": { ... } -> "borderBottom": { ... }
+ // Only if it looks like a border object (color, width, style)
+ const sides = ['top', 'bottom', 'left', 'right'];
+ sides.forEach(side => {
+ const capitalizedSide = side.charAt(0).toUpperCase() + side.slice(1);
+ // Look for "side": { ... } that isn't already "borderSide"
+ // and has border-like properties
+ const orphanRegex = new RegExp(`(? "borderSide": { ... }
+ // We repeat this several times to catch cases where multiple borders were nested
+ let braceChanged = true;
+ while (braceChanged) {
+ braceChanged = false;
+ const trailingBraceRegex = /("border(?:Top|Bottom|Left|Right)":\s*{[^}]*})\s*}/g;
+ if (trailingBraceRegex.test(content)) {
+ content = content.replace(trailingBraceRegex, '$1');
+ braceChanged = true;
+ changed = true;
+ }
+ }
+
+ if (changed) {
+ // Try to validate
+ try {
+ JSON.parse(content);
+ } catch (e) {
+ // If still broken, let's try a last ditch effort to remove any double closing braces in elements
+ // that follow a border side and a comma or newline
+ content = content.replace(/("border(?:Top|Bottom|Left|Right)":\s*{[^}]*})\s*},\s*}/g, '$1\n },');
+ try { JSON.parse(content); } catch (e2) { }
+ }
+ fs.writeFileSync(fullPath, content, { encoding: 'utf8' });
+ console.log(`Deep Cleaned: ${fullPath}`);
+ }
+ }
+ });
+}
+
+walk(rootDir);
+console.log('Finished deep template cleanup.');
diff --git a/debug_output.txt b/debug_output.txt
new file mode 100644
index 0000000..71d2b33
Binary files /dev/null and b/debug_output.txt differ
diff --git a/debug_template_load.cjs b/debug_template_load.cjs
new file mode 100644
index 0000000..2fc5a04
--- /dev/null
+++ b/debug_template_load.cjs
@@ -0,0 +1,48 @@
+const fs = require('fs');
+const path = require('path');
+
+const templatesDirs = [
+ 'd:\\gdfhbfgdbnbdfbdf\\typogenie\\src-tauri\\target\\debug\\templates',
+ 'd:\\gdfhbfgdbnbdfbdf\\typogenie\\src-tauri\\target\\release\\templates'
+];
+
+const ids = new Map(); // id -> filename
+
+function scanDir(dir) {
+ if (!fs.existsSync(dir)) {
+ console.log(`Directory not found: ${dir}`);
+ return;
+ }
+ console.log(`Scanning: ${dir}`);
+ const files = fs.readdirSync(dir, { withFileTypes: true });
+
+ files.forEach(dirent => {
+ const fullPath = path.join(dir, dirent.name);
+ if (dirent.isDirectory()) {
+ scanDir(fullPath);
+ } else if (dirent.name.endsWith('.json')) {
+ try {
+ const content = fs.readFileSync(fullPath, 'utf8');
+ const json = JSON.parse(content);
+ // Handle array or object
+ const template = Array.isArray(json) ? json[0] : json;
+
+ if (template.id) {
+ if (ids.has(template.id)) {
+ console.error(`[DUPLICATE ID] ${template.id} found in ${dirent.name} AND ${ids.get(template.id)}`);
+ } else {
+ ids.set(template.id, dirent.name);
+ console.log(`[OK] ${dirent.name} (ID: ${template.id})`);
+ }
+ } else {
+ console.error(`[MISSING ID] ${dirent.name}`);
+ }
+ } catch (e) {
+ console.error(`[FAIL] ${dirent.name}: ${e.message}`);
+ }
+ }
+ });
+}
+
+// Only scan one directory (debug) to check for uniqueness within the app load
+scanDir('d:\\gdfhbfgdbnbdfbdf\\typogenie\\src-tauri\\target\\debug\\templates');
diff --git a/fix-academic-templates.ps1 b/fix-academic-templates.ps1
new file mode 100644
index 0000000..2774dbc
--- /dev/null
+++ b/fix-academic-templates.ps1
@@ -0,0 +1,111 @@
+# Script to add missing advanced elements to all Academic templates
+# Adds: del, sup, sub, mark, footnote, footnoteRef
+
+$academicTemplates = @(
+ "academic\academic-journal.json",
+ "academic\arctic-base.json",
+ "academic\botanical-textbook.json",
+ "academic\chemistry-lab.json",
+ "academic\dark-academia.json",
+ "academic\education-friendly.json",
+ "academic\emergency-room.json",
+ "academic\furniture-manual.json",
+ "academic\history-textbook.json",
+ "academic\kids-education.json",
+ "academic\mathematics-paper.json",
+ "academic\medical-professional.json",
+ "academic\phd-thesis.json",
+ "academic\scantron-test.json",
+ "academic\scientific-journal.json",
+ "academic\weather-radar.json"
+)
+
+$advancedElements = @{
+ "del" = @{
+ "_comment_del" = "~~strikethrough~~ - deleted text"
+ "del" = @{
+ "font" = "body"
+ "strikethrough" = $true
+ }
+ }
+ "sup" = @{
+ "_comment_sup" = "^superscript^ - superscript text"
+ "sup" = @{
+ "font" = "body"
+ "size" = 8
+ "superScript" = $true
+ }
+ }
+ "sub" = @{
+ "_comment_sub" = "~subscript~ - subscript text"
+ "sub" = @{
+ "font" = "body"
+ "size" = 8
+ "subScript" = $true
+ }
+ }
+ "mark" = @{
+ "_comment_mark" = "==highlighted text== - marked/highlighted text"
+ "mark" = @{
+ "font" = "body"
+ "background" = "accent"
+ "color" = "FFFFFF"
+ }
+ }
+ "footnote" = @{
+ "_comment_footnote" = "[^1] - footnote references"
+ "footnote" = @{
+ "font" = "body"
+ "size" = 9
+ "color" = "textSecondary"
+ "superScript" = $true
+ }
+ }
+ "footnoteRef" = @{
+ "_comment_footnote_ref" = "Footnote content at bottom of page"
+ "footnoteRef" = @{
+ "font" = "body"
+ "size" = 9
+ "color" = "textSecondary"
+ "spacing" = @{
+ "before" = 6
+ "after" = 6
+ "line" = 1.2
+ }
+ }
+ }
+}
+
+foreach ($templatePath in $academicTemplates) {
+ $fullPath = "src-tauri\templates\$templatePath"
+
+ try {
+ $content = Get-Content $fullPath -Raw | ConvertFrom-Json
+
+ # Add missing elements
+ $modified = $false
+ foreach ($elementName in @('del', 'sup', 'sub', 'mark', 'footnote', 'footnoteRef')) {
+ if (-not $content.elements.PSObject.Properties.Name.Contains($elementName)) {
+ $elementData = $advancedElements[$elementName]
+ foreach ($prop in $elementData.Keys) {
+ $content.elements | Add-Member -MemberType NoteProperty -Name $prop -Value $elementData[$prop] -Force
+ }
+ $modified = $true
+ }
+ }
+
+ if ($modified) {
+ # Write back with proper formatting
+ $json = $content | ConvertTo-Json -Depth 10
+ [System.IO.File]::WriteAllLines($fullPath, $json)
+ Write-Host "โ
Updated: $templatePath" -ForegroundColor Green
+ } else {
+ Write-Host "โญ๏ธ Skipped: $templatePath (already complete)" -ForegroundColor Yellow
+ }
+
+ } catch {
+ Write-Host "โ Error updating $templatePath`: $_" -ForegroundColor Red
+ }
+}
+
+Write-Host "`nโ
Academic templates update complete!" -ForegroundColor Green
diff --git a/fix_bom.cjs b/fix_bom.cjs
new file mode 100644
index 0000000..0f94512
--- /dev/null
+++ b/fix_bom.cjs
@@ -0,0 +1,28 @@
+const fs = require('fs');
+const path = require('path');
+
+const rootDir = 'd:\\gdfhbfgdbnbdfbdf\\typogenie\\src-tauri\\templates';
+
+function walk(dir) {
+ const files = fs.readdirSync(dir, { withFileTypes: true });
+ files.forEach(dirent => {
+ const fullPath = path.join(dir, dirent.name);
+ if (dirent.isDirectory()) {
+ walk(fullPath);
+ } else if (dirent.name.endsWith('.json')) {
+ let content = fs.readFileSync(fullPath, 'utf8');
+ // Remove BOM
+ if (content.charCodeAt(0) === 0xFEFF) {
+ content = content.slice(1);
+ console.log(`Cleaned BOM: ${fullPath}`);
+ }
+ // Trim whitespace
+ content = content.trim();
+ fs.writeFileSync(fullPath, content, { encoding: 'utf8' });
+ }
+ });
+}
+
+walk(rootDir);
+console.log('Finished cleaning BOMs and trimming JSON files.');
+
diff --git a/fix_templates.cjs b/fix_templates.cjs
new file mode 100644
index 0000000..a1c521f
--- /dev/null
+++ b/fix_templates.cjs
@@ -0,0 +1,50 @@
+const fs = require('fs');
+const path = require('path');
+
+const rootDir = 'd:\\gdfhbfgdbnbdfbdf\\typogenie\\src-tauri\\templates';
+
+function walk(dir) {
+ const files = fs.readdirSync(dir, { withFileTypes: true });
+ files.forEach(dirent => {
+ const fullPath = path.join(dir, dirent.name);
+ if (dirent.isDirectory()) {
+ walk(fullPath);
+ } else if (dirent.name.endsWith('.json')) {
+ let content = fs.readFileSync(fullPath, 'utf8');
+ let changed = false;
+
+ // Fix invalid "white" color
+ if (content.includes('"color": "white"')) {
+ content = content.replace(/"color": "white"/g, '"color": "background"');
+ changed = true;
+ }
+ if (content.includes('"background": "white"')) {
+ content = content.replace(/"background": "white"/g, '"background": "background"');
+ changed = true;
+ }
+
+ // Fix border alignment from nested "border": { "bottom": ... } to "borderBottom": ...
+ // This is a bit tricky with regex but let's try a simple one for the common cases
+ const borderSides = ['top', 'bottom', 'left', 'right'];
+ borderSides.forEach(side => {
+ const searchStr = new RegExp(`"border":\\s*{\\s*"${side}":\\s*{([^}]*)}`, 'g');
+ // Capture the content inside the side object
+ if (searchStr.test(content)) {
+ content = content.replace(searchStr, (match, p1) => {
+ const capitalizedSide = side.charAt(0).toUpperCase() + side.slice(1);
+ return `"border${capitalizedSide}": {${p1}}`;
+ });
+ changed = true;
+ }
+ });
+
+ if (changed) {
+ fs.writeFileSync(fullPath, content, { encoding: 'utf8' });
+ console.log(`Updated: ${fullPath}`);
+ }
+ }
+ });
+}
+
+walk(rootDir);
+console.log('Finished mass-correction of templates.');
diff --git a/index.html b/index.html
index 89d69fa..3fc4cac 100644
--- a/index.html
+++ b/index.html
@@ -4,16 +4,17 @@
TypoGenie
-
diff --git a/package-lock.json b/package-lock.json
index 8fedf7a..fe0f06b 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -11,21 +11,43 @@
"@tauri-apps/api": "^2.0.0",
"@tauri-apps/plugin-dialog": "^2.0.0",
"@tauri-apps/plugin-fs": "^2.0.0",
+ "@tauri-apps/plugin-http": "^2.5.6",
+ "@tauri-apps/plugin-opener": "^2.2.6",
+ "@tauri-apps/plugin-shell": "^2.3.4",
"@tauri-apps/plugin-store": "^2.4.2",
+ "@tauri-apps/plugin-window-state": "^2.4.1",
"docx": "^8.5.0",
"lucide-react": "^0.563.0",
"marked": "12.0.0",
+ "motion": "^12.29.2",
"react": "^19.2.4",
"react-dom": "^19.2.4"
},
"devDependencies": {
+ "@tailwindcss/postcss": "^4.1.18",
"@tauri-apps/cli": "^2.9.6",
"@types/node": "^22.14.0",
"@vitejs/plugin-react": "^5.0.0",
+ "autoprefixer": "^10.4.23",
+ "postcss": "^8.5.6",
+ "tailwindcss": "^4.1.18",
"typescript": "~5.8.2",
"vite": "^6.2.0"
}
},
+ "node_modules/@alloc/quick-lru": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz",
+ "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/@babel/code-frame": {
"version": "7.28.6",
"resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.28.6.tgz",
@@ -1157,6 +1179,277 @@
"win32"
]
},
+ "node_modules/@tailwindcss/node": {
+ "version": "4.1.18",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.1.18.tgz",
+ "integrity": "sha512-DoR7U1P7iYhw16qJ49fgXUlry1t4CpXeErJHnQ44JgTSKMaZUdf17cfn5mHchfJ4KRBZRFA/Coo+MUF5+gOaCQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@jridgewell/remapping": "^2.3.4",
+ "enhanced-resolve": "^5.18.3",
+ "jiti": "^2.6.1",
+ "lightningcss": "1.30.2",
+ "magic-string": "^0.30.21",
+ "source-map-js": "^1.2.1",
+ "tailwindcss": "4.1.18"
+ }
+ },
+ "node_modules/@tailwindcss/oxide": {
+ "version": "4.1.18",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide/-/oxide-4.1.18.tgz",
+ "integrity": "sha512-EgCR5tTS5bUSKQgzeMClT6iCY3ToqE1y+ZB0AKldj809QXk1Y+3jB0upOYZrn9aGIzPtUsP7sX4QQ4XtjBB95A==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 10"
+ },
+ "optionalDependencies": {
+ "@tailwindcss/oxide-android-arm64": "4.1.18",
+ "@tailwindcss/oxide-darwin-arm64": "4.1.18",
+ "@tailwindcss/oxide-darwin-x64": "4.1.18",
+ "@tailwindcss/oxide-freebsd-x64": "4.1.18",
+ "@tailwindcss/oxide-linux-arm-gnueabihf": "4.1.18",
+ "@tailwindcss/oxide-linux-arm64-gnu": "4.1.18",
+ "@tailwindcss/oxide-linux-arm64-musl": "4.1.18",
+ "@tailwindcss/oxide-linux-x64-gnu": "4.1.18",
+ "@tailwindcss/oxide-linux-x64-musl": "4.1.18",
+ "@tailwindcss/oxide-wasm32-wasi": "4.1.18",
+ "@tailwindcss/oxide-win32-arm64-msvc": "4.1.18",
+ "@tailwindcss/oxide-win32-x64-msvc": "4.1.18"
+ }
+ },
+ "node_modules/@tailwindcss/oxide-android-arm64": {
+ "version": "4.1.18",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.1.18.tgz",
+ "integrity": "sha512-dJHz7+Ugr9U/diKJA0W6N/6/cjI+ZTAoxPf9Iz9BFRF2GzEX8IvXxFIi/dZBloVJX/MZGvRuFA9rqwdiIEZQ0Q==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@tailwindcss/oxide-darwin-arm64": {
+ "version": "4.1.18",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.1.18.tgz",
+ "integrity": "sha512-Gc2q4Qhs660bhjyBSKgq6BYvwDz4G+BuyJ5H1xfhmDR3D8HnHCmT/BSkvSL0vQLy/nkMLY20PQ2OoYMO15Jd0A==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@tailwindcss/oxide-darwin-x64": {
+ "version": "4.1.18",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.1.18.tgz",
+ "integrity": "sha512-FL5oxr2xQsFrc3X9o1fjHKBYBMD1QZNyc1Xzw/h5Qu4XnEBi3dZn96HcHm41c/euGV+GRiXFfh2hUCyKi/e+yw==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@tailwindcss/oxide-freebsd-x64": {
+ "version": "4.1.18",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.1.18.tgz",
+ "integrity": "sha512-Fj+RHgu5bDodmV1dM9yAxlfJwkkWvLiRjbhuO2LEtwtlYlBgiAT4x/j5wQr1tC3SANAgD+0YcmWVrj8R9trVMA==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@tailwindcss/oxide-linux-arm-gnueabihf": {
+ "version": "4.1.18",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.1.18.tgz",
+ "integrity": "sha512-Fp+Wzk/Ws4dZn+LV2Nqx3IilnhH51YZoRaYHQsVq3RQvEl+71VGKFpkfHrLM/Li+kt5c0DJe/bHXK1eHgDmdiA==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@tailwindcss/oxide-linux-arm64-gnu": {
+ "version": "4.1.18",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.1.18.tgz",
+ "integrity": "sha512-S0n3jboLysNbh55Vrt7pk9wgpyTTPD0fdQeh7wQfMqLPM/Hrxi+dVsLsPrycQjGKEQk85Kgbx+6+QnYNiHalnw==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@tailwindcss/oxide-linux-arm64-musl": {
+ "version": "4.1.18",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.1.18.tgz",
+ "integrity": "sha512-1px92582HkPQlaaCkdRcio71p8bc8i/ap5807tPRDK/uw953cauQBT8c5tVGkOwrHMfc2Yh6UuxaH4vtTjGvHg==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@tailwindcss/oxide-linux-x64-gnu": {
+ "version": "4.1.18",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.1.18.tgz",
+ "integrity": "sha512-v3gyT0ivkfBLoZGF9LyHmts0Isc8jHZyVcbzio6Wpzifg/+5ZJpDiRiUhDLkcr7f/r38SWNe7ucxmGW3j3Kb/g==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@tailwindcss/oxide-linux-x64-musl": {
+ "version": "4.1.18",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.1.18.tgz",
+ "integrity": "sha512-bhJ2y2OQNlcRwwgOAGMY0xTFStt4/wyU6pvI6LSuZpRgKQwxTec0/3Scu91O8ir7qCR3AuepQKLU/kX99FouqQ==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@tailwindcss/oxide-wasm32-wasi": {
+ "version": "4.1.18",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-wasm32-wasi/-/oxide-wasm32-wasi-4.1.18.tgz",
+ "integrity": "sha512-LffYTvPjODiP6PT16oNeUQJzNVyJl1cjIebq/rWWBF+3eDst5JGEFSc5cWxyRCJ0Mxl+KyIkqRxk1XPEs9x8TA==",
+ "bundleDependencies": [
+ "@napi-rs/wasm-runtime",
+ "@emnapi/core",
+ "@emnapi/runtime",
+ "@tybys/wasm-util",
+ "@emnapi/wasi-threads",
+ "tslib"
+ ],
+ "cpu": [
+ "wasm32"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "@emnapi/core": "^1.7.1",
+ "@emnapi/runtime": "^1.7.1",
+ "@emnapi/wasi-threads": "^1.1.0",
+ "@napi-rs/wasm-runtime": "^1.1.0",
+ "@tybys/wasm-util": "^0.10.1",
+ "tslib": "^2.4.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@tailwindcss/oxide-win32-arm64-msvc": {
+ "version": "4.1.18",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.1.18.tgz",
+ "integrity": "sha512-HjSA7mr9HmC8fu6bdsZvZ+dhjyGCLdotjVOgLA2vEqxEBZaQo9YTX4kwgEvPCpRh8o4uWc4J/wEoFzhEmjvPbA==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@tailwindcss/oxide-win32-x64-msvc": {
+ "version": "4.1.18",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.1.18.tgz",
+ "integrity": "sha512-bJWbyYpUlqamC8dpR7pfjA0I7vdF6t5VpUGMWRkXVE3AXgIZjYUYAK7II1GNaxR8J1SSrSrppRar8G++JekE3Q==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@tailwindcss/postcss": {
+ "version": "4.1.18",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/postcss/-/postcss-4.1.18.tgz",
+ "integrity": "sha512-Ce0GFnzAOuPyfV5SxjXGn0CubwGcuDB0zcdaPuCSzAa/2vII24JTkH+I6jcbXLb1ctjZMZZI6OjDaLPJQL1S0g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@alloc/quick-lru": "^5.2.0",
+ "@tailwindcss/node": "4.1.18",
+ "@tailwindcss/oxide": "4.1.18",
+ "postcss": "^8.4.41",
+ "tailwindcss": "4.1.18"
+ }
+ },
"node_modules/@tauri-apps/api": {
"version": "2.9.1",
"resolved": "https://registry.npmjs.org/@tauri-apps/api/-/api-2.9.1.tgz",
@@ -1402,6 +1695,33 @@
"@tauri-apps/api": "^2.8.0"
}
},
+ "node_modules/@tauri-apps/plugin-http": {
+ "version": "2.5.6",
+ "resolved": "https://registry.npmjs.org/@tauri-apps/plugin-http/-/plugin-http-2.5.6.tgz",
+ "integrity": "sha512-KhCK3TDNDF4vdz75/j+KNQipYKf+295Visa8r32QcXScg0+D3JwShcCM6D+FN8WuDF24X3KSiAB8QtRxW6jKRA==",
+ "license": "MIT OR Apache-2.0",
+ "dependencies": {
+ "@tauri-apps/api": "^2.8.0"
+ }
+ },
+ "node_modules/@tauri-apps/plugin-opener": {
+ "version": "2.5.3",
+ "resolved": "https://registry.npmjs.org/@tauri-apps/plugin-opener/-/plugin-opener-2.5.3.tgz",
+ "integrity": "sha512-CCcUltXMOfUEArbf3db3kCE7Ggy1ExBEBl51Ko2ODJ6GDYHRp1nSNlQm5uNCFY5k7/ufaK5Ib3Du/Zir19IYQQ==",
+ "license": "MIT OR Apache-2.0",
+ "dependencies": {
+ "@tauri-apps/api": "^2.8.0"
+ }
+ },
+ "node_modules/@tauri-apps/plugin-shell": {
+ "version": "2.3.4",
+ "resolved": "https://registry.npmjs.org/@tauri-apps/plugin-shell/-/plugin-shell-2.3.4.tgz",
+ "integrity": "sha512-ktsRWf8wHLD17aZEyqE8c5x98eNAuTizR1FSX475zQ4TxaiJnhwksLygQz+AGwckJL5bfEP13nWrlTNQJUpKpA==",
+ "license": "MIT OR Apache-2.0",
+ "dependencies": {
+ "@tauri-apps/api": "^2.8.0"
+ }
+ },
"node_modules/@tauri-apps/plugin-store": {
"version": "2.4.2",
"resolved": "https://registry.npmjs.org/@tauri-apps/plugin-store/-/plugin-store-2.4.2.tgz",
@@ -1411,6 +1731,15 @@
"@tauri-apps/api": "^2.8.0"
}
},
+ "node_modules/@tauri-apps/plugin-window-state": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/@tauri-apps/plugin-window-state/-/plugin-window-state-2.4.1.tgz",
+ "integrity": "sha512-OuvdrzyY8Q5Dbzpj+GcrnV1iCeoZbcFdzMjanZMMcAEUNy/6PH5pxZPXpaZLOR7whlzXiuzx0L9EKZbH7zpdRw==",
+ "license": "MIT OR Apache-2.0",
+ "dependencies": {
+ "@tauri-apps/api": "^2.8.0"
+ }
+ },
"node_modules/@types/babel__core": {
"version": "7.20.5",
"resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz",
@@ -1494,6 +1823,43 @@
"vite": "^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0"
}
},
+ "node_modules/autoprefixer": {
+ "version": "10.4.23",
+ "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.23.tgz",
+ "integrity": "sha512-YYTXSFulfwytnjAPlw8QHncHJmlvFKtczb8InXaAx9Q0LbfDnfEYDE55omerIJKihhmU61Ft+cAOSzQVaBUmeA==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/autoprefixer"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "browserslist": "^4.28.1",
+ "caniuse-lite": "^1.0.30001760",
+ "fraction.js": "^5.3.4",
+ "picocolors": "^1.1.1",
+ "postcss-value-parser": "^4.2.0"
+ },
+ "bin": {
+ "autoprefixer": "bin/autoprefixer"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14"
+ },
+ "peerDependencies": {
+ "postcss": "^8.1.0"
+ }
+ },
"node_modules/baseline-browser-mapping": {
"version": "2.9.19",
"resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.9.19.tgz",
@@ -1590,6 +1956,16 @@
}
}
},
+ "node_modules/detect-libc": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz",
+ "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/docx": {
"version": "8.5.0",
"resolved": "https://registry.npmjs.org/docx/-/docx-8.5.0.tgz",
@@ -1622,6 +1998,20 @@
"dev": true,
"license": "ISC"
},
+ "node_modules/enhanced-resolve": {
+ "version": "5.18.4",
+ "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.4.tgz",
+ "integrity": "sha512-LgQMM4WXU3QI+SYgEc2liRgznaD5ojbmY3sb8LxyguVkIg5FxdpTkvk72te2R38/TGKxH634oLxXRGY6d7AP+Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "graceful-fs": "^4.2.4",
+ "tapable": "^2.2.0"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
"node_modules/esbuild": {
"version": "0.25.12",
"resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.12.tgz",
@@ -1692,6 +2082,47 @@
}
}
},
+ "node_modules/fraction.js": {
+ "version": "5.3.4",
+ "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-5.3.4.tgz",
+ "integrity": "sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "*"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/rawify"
+ }
+ },
+ "node_modules/framer-motion": {
+ "version": "12.29.2",
+ "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-12.29.2.tgz",
+ "integrity": "sha512-lSNRzBJk4wuIy0emYQ/nfZ7eWhqud2umPKw2QAQki6uKhZPKm2hRQHeQoHTG9MIvfobb+A/LbEWPJU794ZUKrg==",
+ "license": "MIT",
+ "dependencies": {
+ "motion-dom": "^12.29.2",
+ "motion-utils": "^12.29.2",
+ "tslib": "^2.4.0"
+ },
+ "peerDependencies": {
+ "@emotion/is-prop-valid": "*",
+ "react": "^18.0.0 || ^19.0.0",
+ "react-dom": "^18.0.0 || ^19.0.0"
+ },
+ "peerDependenciesMeta": {
+ "@emotion/is-prop-valid": {
+ "optional": true
+ },
+ "react": {
+ "optional": true
+ },
+ "react-dom": {
+ "optional": true
+ }
+ }
+ },
"node_modules/fsevents": {
"version": "2.3.3",
"resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
@@ -1717,6 +2148,13 @@
"node": ">=6.9.0"
}
},
+ "node_modules/graceful-fs": {
+ "version": "4.2.11",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
+ "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
+ "dev": true,
+ "license": "ISC"
+ },
"node_modules/immediate": {
"version": "3.0.6",
"resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz",
@@ -1735,6 +2173,16 @@
"integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==",
"license": "MIT"
},
+ "node_modules/jiti": {
+ "version": "2.6.1",
+ "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.6.1.tgz",
+ "integrity": "sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==",
+ "dev": true,
+ "license": "MIT",
+ "bin": {
+ "jiti": "lib/jiti-cli.mjs"
+ }
+ },
"node_modules/js-tokens": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
@@ -1789,6 +2237,267 @@
"immediate": "~3.0.5"
}
},
+ "node_modules/lightningcss": {
+ "version": "1.30.2",
+ "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.30.2.tgz",
+ "integrity": "sha512-utfs7Pr5uJyyvDETitgsaqSyjCb2qNRAtuqUeWIAKztsOYdcACf2KtARYXg2pSvhkt+9NfoaNY7fxjl6nuMjIQ==",
+ "dev": true,
+ "license": "MPL-2.0",
+ "dependencies": {
+ "detect-libc": "^2.0.3"
+ },
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ },
+ "optionalDependencies": {
+ "lightningcss-android-arm64": "1.30.2",
+ "lightningcss-darwin-arm64": "1.30.2",
+ "lightningcss-darwin-x64": "1.30.2",
+ "lightningcss-freebsd-x64": "1.30.2",
+ "lightningcss-linux-arm-gnueabihf": "1.30.2",
+ "lightningcss-linux-arm64-gnu": "1.30.2",
+ "lightningcss-linux-arm64-musl": "1.30.2",
+ "lightningcss-linux-x64-gnu": "1.30.2",
+ "lightningcss-linux-x64-musl": "1.30.2",
+ "lightningcss-win32-arm64-msvc": "1.30.2",
+ "lightningcss-win32-x64-msvc": "1.30.2"
+ }
+ },
+ "node_modules/lightningcss-android-arm64": {
+ "version": "1.30.2",
+ "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.30.2.tgz",
+ "integrity": "sha512-BH9sEdOCahSgmkVhBLeU7Hc9DWeZ1Eb6wNS6Da8igvUwAe0sqROHddIlvU06q3WyXVEOYDZ6ykBZQnjTbmo4+A==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MPL-2.0",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lightningcss-darwin-arm64": {
+ "version": "1.30.2",
+ "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.30.2.tgz",
+ "integrity": "sha512-ylTcDJBN3Hp21TdhRT5zBOIi73P6/W0qwvlFEk22fkdXchtNTOU4Qc37SkzV+EKYxLouZ6M4LG9NfZ1qkhhBWA==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MPL-2.0",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lightningcss-darwin-x64": {
+ "version": "1.30.2",
+ "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.30.2.tgz",
+ "integrity": "sha512-oBZgKchomuDYxr7ilwLcyms6BCyLn0z8J0+ZZmfpjwg9fRVZIR5/GMXd7r9RH94iDhld3UmSjBM6nXWM2TfZTQ==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MPL-2.0",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lightningcss-freebsd-x64": {
+ "version": "1.30.2",
+ "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.30.2.tgz",
+ "integrity": "sha512-c2bH6xTrf4BDpK8MoGG4Bd6zAMZDAXS569UxCAGcA7IKbHNMlhGQ89eRmvpIUGfKWNVdbhSbkQaWhEoMGmGslA==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MPL-2.0",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lightningcss-linux-arm-gnueabihf": {
+ "version": "1.30.2",
+ "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.30.2.tgz",
+ "integrity": "sha512-eVdpxh4wYcm0PofJIZVuYuLiqBIakQ9uFZmipf6LF/HRj5Bgm0eb3qL/mr1smyXIS1twwOxNWndd8z0E374hiA==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "license": "MPL-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lightningcss-linux-arm64-gnu": {
+ "version": "1.30.2",
+ "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.30.2.tgz",
+ "integrity": "sha512-UK65WJAbwIJbiBFXpxrbTNArtfuznvxAJw4Q2ZGlU8kPeDIWEX1dg3rn2veBVUylA2Ezg89ktszWbaQnxD/e3A==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MPL-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lightningcss-linux-arm64-musl": {
+ "version": "1.30.2",
+ "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.30.2.tgz",
+ "integrity": "sha512-5Vh9dGeblpTxWHpOx8iauV02popZDsCYMPIgiuw97OJ5uaDsL86cnqSFs5LZkG3ghHoX5isLgWzMs+eD1YzrnA==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MPL-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lightningcss-linux-x64-gnu": {
+ "version": "1.30.2",
+ "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.30.2.tgz",
+ "integrity": "sha512-Cfd46gdmj1vQ+lR6VRTTadNHu6ALuw2pKR9lYq4FnhvgBc4zWY1EtZcAc6EffShbb1MFrIPfLDXD6Xprbnni4w==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MPL-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lightningcss-linux-x64-musl": {
+ "version": "1.30.2",
+ "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.30.2.tgz",
+ "integrity": "sha512-XJaLUUFXb6/QG2lGIW6aIk6jKdtjtcffUT0NKvIqhSBY3hh9Ch+1LCeH80dR9q9LBjG3ewbDjnumefsLsP6aiA==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MPL-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lightningcss-win32-arm64-msvc": {
+ "version": "1.30.2",
+ "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.30.2.tgz",
+ "integrity": "sha512-FZn+vaj7zLv//D/192WFFVA0RgHawIcHqLX9xuWiQt7P0PtdFEVaxgF9rjM/IRYHQXNnk61/H/gb2Ei+kUQ4xQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MPL-2.0",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lightningcss-win32-x64-msvc": {
+ "version": "1.30.2",
+ "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.30.2.tgz",
+ "integrity": "sha512-5g1yc73p+iAkid5phb4oVFMB45417DkRevRbt/El/gKXJk4jid+vPFF/AXbxn05Aky8PapwzZrdJShv5C0avjw==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MPL-2.0",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
"node_modules/lru-cache": {
"version": "5.1.1",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
@@ -1808,6 +2517,16 @@
"react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0"
}
},
+ "node_modules/magic-string": {
+ "version": "0.30.21",
+ "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz",
+ "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@jridgewell/sourcemap-codec": "^1.5.5"
+ }
+ },
"node_modules/marked": {
"version": "12.0.0",
"resolved": "https://registry.npmjs.org/marked/-/marked-12.0.0.tgz",
@@ -1820,6 +2539,47 @@
"node": ">= 18"
}
},
+ "node_modules/motion": {
+ "version": "12.29.2",
+ "resolved": "https://registry.npmjs.org/motion/-/motion-12.29.2.tgz",
+ "integrity": "sha512-jMpHdAzEDF1QQ055cB+1lOBLdJ6ialVWl6QQzpJI2OvmHequ7zFVHM2mx0HNAy+Tu4omUlApfC+4vnkX0geEOg==",
+ "license": "MIT",
+ "dependencies": {
+ "framer-motion": "^12.29.2",
+ "tslib": "^2.4.0"
+ },
+ "peerDependencies": {
+ "@emotion/is-prop-valid": "*",
+ "react": "^18.0.0 || ^19.0.0",
+ "react-dom": "^18.0.0 || ^19.0.0"
+ },
+ "peerDependenciesMeta": {
+ "@emotion/is-prop-valid": {
+ "optional": true
+ },
+ "react": {
+ "optional": true
+ },
+ "react-dom": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/motion-dom": {
+ "version": "12.29.2",
+ "resolved": "https://registry.npmjs.org/motion-dom/-/motion-dom-12.29.2.tgz",
+ "integrity": "sha512-/k+NuycVV8pykxyiTCoFzIVLA95Nb1BFIVvfSu9L50/6K6qNeAYtkxXILy/LRutt7AzaYDc2myj0wkCVVYAPPA==",
+ "license": "MIT",
+ "dependencies": {
+ "motion-utils": "^12.29.2"
+ }
+ },
+ "node_modules/motion-utils": {
+ "version": "12.29.2",
+ "resolved": "https://registry.npmjs.org/motion-utils/-/motion-utils-12.29.2.tgz",
+ "integrity": "sha512-G3kc34H2cX2gI63RqU+cZq+zWRRPSsNIOjpdl9TN4AQwC4sgwYPl/Q/Obf/d53nOm569T0fYK+tcoSV50BWx8A==",
+ "license": "MIT"
+ },
"node_modules/ms": {
"version": "2.1.3",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
@@ -1907,6 +2667,13 @@
"node": "^10 || ^12 || >=14"
}
},
+ "node_modules/postcss-value-parser": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz",
+ "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/postcss/node_modules/nanoid": {
"version": "3.3.11",
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz",
@@ -2079,6 +2846,27 @@
"safe-buffer": "~5.1.0"
}
},
+ "node_modules/tailwindcss": {
+ "version": "4.1.18",
+ "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.1.18.tgz",
+ "integrity": "sha512-4+Z+0yiYyEtUVCScyfHCxOYP06L5Ne+JiHhY2IjR2KWMIWhJOYZKLSGZaP5HkZ8+bY0cxfzwDE5uOmzFXyIwxw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/tapable": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.0.tgz",
+ "integrity": "sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/webpack"
+ }
+ },
"node_modules/tinyglobby": {
"version": "0.2.15",
"resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz",
@@ -2096,6 +2884,12 @@
"url": "https://github.com/sponsors/SuperchupuDev"
}
},
+ "node_modules/tslib": {
+ "version": "2.8.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz",
+ "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==",
+ "license": "0BSD"
+ },
"node_modules/typescript": {
"version": "5.8.3",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz",
diff --git a/package.json b/package.json
index 9d2e175..2c4098d 100644
--- a/package.json
+++ b/package.json
@@ -17,17 +17,26 @@
"@tauri-apps/api": "^2.0.0",
"@tauri-apps/plugin-dialog": "^2.0.0",
"@tauri-apps/plugin-fs": "^2.0.0",
+ "@tauri-apps/plugin-http": "^2.5.6",
+ "@tauri-apps/plugin-shell": "^2.3.4",
"@tauri-apps/plugin-store": "^2.4.2",
+ "@tauri-apps/plugin-window-state": "^2.4.1",
+ "@tauri-apps/plugin-opener": "^2.2.6",
"docx": "^8.5.0",
"lucide-react": "^0.563.0",
"marked": "12.0.0",
+ "motion": "^12.29.2",
"react": "^19.2.4",
"react-dom": "^19.2.4"
},
"devDependencies": {
+ "@tailwindcss/postcss": "^4.1.18",
"@tauri-apps/cli": "^2.9.6",
"@types/node": "^22.14.0",
"@vitejs/plugin-react": "^5.0.0",
+ "autoprefixer": "^10.4.23",
+ "postcss": "^8.5.6",
+ "tailwindcss": "^4.1.18",
"typescript": "~5.8.2",
"vite": "^6.2.0"
}
diff --git a/port-core-templates.ps1 b/port-core-templates.ps1
new file mode 100644
index 0000000..b8bcd47
--- /dev/null
+++ b/port-core-templates.ps1
@@ -0,0 +1,208 @@
+# Script to port Core templates to new JSON format
+# Reconstructs all 11 core templates with full 23-element structure
+
+$baseTemplate = Get-Content "src-tauri\templates\core\default.json" -Raw | ConvertFrom-Json
+
+$coreTemplates = @(
+ @{
+ id="circus-sideshow"; name="Circus Sideshow"; category="Entertainment";
+ desc="Big top aesthetic. Ornamental fonts with red and cream stripe vibes."; vibe="Fun, Ornamental, Striped";
+ fonts="https://fonts.googleapis.com/css2?family=Rye&family=Sancreek&family=Roboto+Slab&display=swap";
+ heading="Sancreek"; heading2="Rye"; body="Roboto Slab";
+ text="212121"; accent="D32F2F"; bg="FFF8E1"; secondary="1A237E";
+ h1Size=40; h1Align="center"; h1Color="D32F2F";
+ h2Size=18; h2Align="center"; h2Color="1A237E";
+ bodyAlign="center"
+ },
+ @{
+ id="environmental-green"; name="Environmental Green"; category="Sustainability";
+ desc="Nature-inspired design for environmental and sustainability communications. Organic feel with earthy green palette."; vibe="Natural, Sustainable, Organic";
+ fonts="https://fonts.googleapis.com/css2?family=Bitter:wght@400;500;700&family=Karla:wght@400;500;700&display=swap";
+ heading="Bitter"; heading2="Bitter"; body="Karla";
+ text="3E4A3D"; accent="2E7D32"; bg="FFFFFF"; secondary="388E3C";
+ h1Size=26; h1Align="left"; h1Color="2E7D32";
+ h2Size=14; h2Align="left"; h2Color="388E3C";
+ bodyAlign="left"
+ },
+ @{
+ id="highway-interstate"; name="Highway Interstate"; category="Urban";
+ desc="Road signage aesthetic. Reflective white text on deep highway green backgrounds."; vibe="Functional, Travel, Signage";
+ fonts="https://fonts.googleapis.com/css2?family=Overpass:wght@400;700&family=Public+Sans:wght@400;700&display=swap";
+ heading="Overpass"; heading2="Public Sans"; body="Public Sans";
+ text="212121"; accent="00695C"; bg="FFFFFF"; secondary="004D40";
+ h1Size=36; h1Align="left"; h1Color="FFFFFF"; h1Bg="00695C";
+ h2Size=18; h2Align="left"; h2Color="004D40";
+ bodyAlign="left"
+ },
+ @{
+ id="jungle-explorer"; name="Jungle Explorer"; category="Adventure";
+ desc="Safari expedition style. Khaki, olive drab, and canvas textures."; vibe="Adventure, Khaki, Nature";
+ fonts="https://fonts.googleapis.com/css2?family=Stardos+Stencil&family=Domine:wght@400;700&display=swap";
+ heading="Stardos Stencil"; heading2="Domine"; body="Domine";
+ text="1B1B1B"; accent="827717"; bg="F0F4C3"; secondary="558B2F";
+ h1Size=36; h1Align="left"; h1Color="33691E";
+ h2Size=16; h2Align="left"; h2Color="558B2F";
+ bodyAlign="left"
+ },
+ @{
+ id="public-transit"; name="Public Transit"; category="Urban";
+ desc="Subway map and transit signage aesthetic. Clean, highly legible sans-serifs with color-coded lines."; vibe="Urban, Functional, Color-coded";
+ fonts="https://fonts.googleapis.com/css2?family=Mukta:wght@400;700&family=Hanken+Grotesk:wght@400;700&display=swap";
+ heading="Hanken Grotesk"; heading2="Mukta"; body="Mukta";
+ text="212121"; accent="FFC107"; bg="FFFFFF"; secondary="000000";
+ h1Size=32; h1Align="left"; h1Color="000000";
+ h2Size=18; h2Align="left"; h2Color="000000"; h2Bg="EEEEEE";
+ bodyAlign="left"
+ },
+ @{
+ id="silent-film-intertitle"; name="Silent Film Intertitle"; category="Cinema";
+ desc="1920s cinema cards. White decorative text on black backgrounds with ornate borders."; vibe="Cinema, Vintage, Dramatic";
+ fonts="https://fonts.googleapis.com/css2?family=Gye-Gye&family=Sorts+Mill+Goudy&display=swap";
+ heading="Gye-Gye"; heading2="Sorts Mill Goudy"; body="Sorts Mill Goudy";
+ text="000000"; accent="000000"; bg="FFFFFF"; secondary="212121";
+ h1Size=32; h1Align="center"; h1Color="FFFFFF"; h1Bg="000000";
+ h2Size=18; h2Align="center"; h2Color="EEEEEE"; h2Bg="212121";
+ bodyAlign="center"; bodySize=14
+ },
+ @{
+ id="sports-dynamic"; name="Sports Dynamic"; category="Sports";
+ desc="Energetic and bold design for sports and athletic content. Dynamic typography with high-impact colors."; vibe="Energetic, Bold, Athletic";
+ fonts="https://fonts.googleapis.com/css2?family=Bebas+Neue&family=Rubik:wght@400;500;700&display=swap";
+ heading="Bebas Neue"; heading2="Rubik"; body="Rubik";
+ text="333333"; accent="D32F2F"; bg="FFFFFF"; secondary="1A1A1A";
+ h1Size=36; h1Align="left"; h1Color="D32F2F";
+ h2Size=14; h2Align="left"; h2Color="1A1A1A";
+ bodyAlign="left"
+ },
+ @{
+ id="steampunk-inventor"; name="Steampunk Inventor"; category="Fantasy";
+ desc="Brass and gear aesthetic. Victorian fonts with industrial metallic colors."; vibe="Mechanical, Brass, Victorian";
+ fonts="https://fonts.googleapis.com/css2?family=Rye&family=Lora:wght@400;700&display=swap";
+ heading="Rye"; heading2="Lora"; body="Lora";
+ text="3E2723"; accent="B8860B"; bg="EFEBE9"; secondary="8D6E63";
+ h1Size=30; h1Align="left"; h1Color="5D4037";
+ h2Size=16; h2Align="left"; h2Color="8D6E63";
+ bodyAlign="left"
+ },
+ @{
+ id="subway-tile"; name="Subway Tile"; category="Urban";
+ desc="Classic station ceramics. Clean white backgrounds, heavy black text, and tile-like framing."; vibe="Clean, Ceramic, Urban";
+ fonts="https://fonts.googleapis.com/css2?family=Work+Sans:wght@300;600&family=Lexend:wght@400;700&display=swap";
+ heading="Lexend"; heading2="Work Sans"; body="Work Sans";
+ text="424242"; accent="000000"; bg="FFFFFF"; secondary="212121";
+ h1Size=36; h1Align="center"; h1Color="000000";
+ h2Size=16; h2Align="left"; h2Color="212121";
+ bodyAlign="left"
+ },
+ @{
+ id="taxi-cab"; name="Taxi Cab"; category="Urban";
+ desc="Yellow cab aesthetic. Checkerboard patterns (simulated) and bold black on yellow."; vibe="Urban, Yellow, Bold";
+ fonts="https://fonts.googleapis.com/css2?family=Archivo+Black&family=Roboto:wght@400;700&display=swap";
+ heading="Archivo Black"; heading2="Roboto"; body="Roboto";
+ text="212121"; accent="FFEB3B"; bg="212121"; secondary="000000";
+ h1Size=36; h1Align="center"; h1Color="000000"; h1Bg="FFEB3B";
+ h2Size=18; h2Align="center"; h2Color="000000"; h2Bg="FFFFFF";
+ bodyAlign="left"; bodyColor="FFFFFF"; bodySize=12
+ },
+ @{
+ id="varsity-team"; name="Varsity Team"; category="Sport";
+ desc="College sports jersey style. Block lettering with athletic gold and navy."; vibe="Athletic, College, Bold";
+ fonts="https://fonts.googleapis.com/css2?family=Graduate&family=Saira:wght@400;700&display=swap";
+ heading="Graduate"; heading2="Saira"; body="Saira";
+ text="212121"; accent="FDD835"; bg="FFFFFF"; secondary="1A237E";
+ h1Size=36; h1Align="center"; h1Color="FDD835"; h1Bg="1A237E";
+ h2Size=20; h2Align="center"; h2Color="1A237E";
+ bodyAlign="center"; bodySize=12
+ }
+)
+
+foreach ($t in $coreTemplates) {
+ $new = $baseTemplate.PSObject.Copy()
+
+ # Metadata
+ $new.id = $t.id
+ $new.name = $t.name
+ $new.category = $t.category
+ $new.description = $t.desc
+ $new.vibe = $t.vibe
+ $new.googleFontsImport = $t.fonts
+
+ # Typography
+ $new.typography.colors.text = $t.text
+ $new.typography.colors.accent = $t.accent
+ $new.typography.colors.background = $t.bg
+ $new.typography.colors.textSecondary = $t.secondary
+ $new.typography.colors.blockquoteBorder = $t.accent
+
+ $new.typography.fonts.heading = $t.heading
+ $new.typography.fonts.body = $t.body
+
+ # Elements - H1
+ $new.elements.h1.font = "heading"
+ $new.elements.h1.size = $t.h1Size
+ $new.elements.h1.align = $t.h1Align
+ $new.elements.h1.color = if ($t.h1Color) { $t.h1Color } else { "text" }
+
+ if ($t.h1Bg) {
+ $new.elements.h1 | Add-Member -MemberType NoteProperty -Name "background" -Value $t.h1Bg -Force
+ $new.elements.h1 | Add-Member -MemberType NoteProperty -Name "padding" -Value 16 -Force
+ }
+
+ # Elements - H2
+ $new.elements.h2.font = if ($t.heading2) { $t.heading2 } else { "heading" }
+ $new.elements.h2.size = $t.h2Size
+ $new.elements.h2.align = $t.h2Align
+ $new.elements.h2.color = if ($t.h2Color) { $t.h2Color } else { "textSecondary" }
+
+ if ($t.h2Bg) {
+ $new.elements.h2 | Add-Member -MemberType NoteProperty -Name "background" -Value $t.h2Bg -Force
+ $new.elements.h2 | Add-Member -MemberType NoteProperty -Name "padding" -Value 8 -Force
+ $new.elements.h2 | Add-Member -MemberType NoteProperty -Name "display" -Value "inline-block" -Force
+ }
+
+ # Elements - Body
+ $new.elements.p.align = $t.bodyAlign
+ $new.elements.p.color = if ($t.bodyColor) { $t.bodyColor } else { "text" }
+ if ($t.bodySize) { $new.elements.p.size = $t.bodySize }
+
+ # Special borders
+ if ($t.id -eq "highway-interstate") {
+ $borderVal = @{ top=@{color="FFFFFF"; width=2; style="single"}; bottom=@{color="FFFFFF"; width=2; style="single"} }
+ $new.elements.h1 | Add-Member -MemberType NoteProperty -Name "border" -Value $borderVal -Force
+ }
+ if ($t.id -eq "jungle-explorer") {
+ $borderVal = @{ bottom=@{color="827717"; width=4; style="solid"} }
+ $new.elements.h1 | Add-Member -MemberType NoteProperty -Name "border" -Value $borderVal -Force
+ }
+ if ($t.id -eq "public-transit") {
+ $borderVal = @{ bottom=@{color="FFC107"; width=6; style="solid"} }
+ $new.elements.h1 | Add-Member -MemberType NoteProperty -Name "border" -Value $borderVal -Force
+ }
+ if ($t.id -eq "silent-film-intertitle") {
+ $borderVal = @{ top=@{color="FFFFFF"; width=4; style="double"}; bottom=@{color="FFFFFF"; width=4; style="double"}; left=@{color="FFFFFF"; width=4; style="double"}; right=@{color="FFFFFF"; width=4; style="double"} }
+ $new.elements.h1 | Add-Member -MemberType NoteProperty -Name "border" -Value $borderVal -Force
+ }
+ if ($t.id -eq "steampunk-inventor") {
+ $borderVal = @{ bottom=@{color="B8860B"; width=6; style="double"} }
+ $new.elements.h1 | Add-Member -MemberType NoteProperty -Name "border" -Value $borderVal -Force
+ }
+ if ($t.id -eq "subway-tile") {
+ $borderVal = @{ top=@{color="000000"; width=4; style="solid"}; bottom=@{color="000000"; width=4; style="solid"}; left=@{color="000000"; width=4; style="solid"}; right=@{color="000000"; width=4; style="solid"} }
+ $new.elements.h1 | Add-Member -MemberType NoteProperty -Name "border" -Value $borderVal -Force
+ }
+ if ($t.id -eq "taxi-cab") {
+ $borderVal = @{ top=@{color="000000"; width=6; style="dashed"}; bottom=@{color="000000"; width=6; style="dashed"} }
+ $new.elements.h1 | Add-Member -MemberType NoteProperty -Name "border" -Value $borderVal -Force
+ }
+ if ($t.id -eq "varsity-team") {
+ $borderVal = @{ top=@{color="FDD835"; width=4; style="solid"}; bottom=@{color="FDD835"; width=4; style="solid"} }
+ $new.elements.h1 | Add-Member -MemberType NoteProperty -Name "border" -Value $borderVal -Force
+ }
+
+
+ # Save file
+ $path = "src-tauri\templates\core\$($t.id).json"
+ $json = $new | ConvertTo-Json -Depth 10
+ [System.IO.File]::WriteAllLines($path, $json)
+ Write-Host "โ
Created $path" -ForegroundColor Green
+}
diff --git a/postcss.config.js b/postcss.config.js
new file mode 100644
index 0000000..a7f73a2
--- /dev/null
+++ b/postcss.config.js
@@ -0,0 +1,5 @@
+export default {
+ plugins: {
+ '@tailwindcss/postcss': {},
+ },
+}
diff --git a/rebuild-templates.ps1 b/rebuild-templates.ps1
new file mode 100644
index 0000000..0942044
--- /dev/null
+++ b/rebuild-templates.ps1
@@ -0,0 +1,39 @@
+# Master script to rebuild all remaining templates with modern structure
+$baseTemplate = Get-Content "src-tauri\templates\core\default.json" -Raw | ConvertFrom-Json
+
+$templates = @(
+ @{path="corporate\professional.json"; id="professional"; name="Professional Business"; category="Corporate"; desc="Professional business formatting for corporate documents, reports, and proposals. Clean sans-serif typography with authoritative presence."; vibe="Corporate, Trustworthy, Polished"; fonts="https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;600;700&display=swap"; heading="Open Sans"; body="Open Sans"; text="1A202C"; accent="2C5282"},
+ @{path="creative\modern-portfolio.json"; id="modern-portfolio"; name="Modern Portfolio"; category="Creative"; desc="Bold, contemporary design for creative portfolios and showcases. Geometric fonts with striking visual hierarchy."; vibe="Creative, Bold, Contemporary"; fonts="https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@400;600;700&display=swap"; heading="Space Grotesk"; body="Space Grotesk"; text="1A1A1A"; accent="E94560"},
+ @{path="editorial\classic-newspaper.json"; id="classic-newspaper"; name="Classic Newspaper"; category="Editorial"; desc="Traditional newspaper-style formatting with column layout and classic serif typography."; vibe="Editorial, Timeless, Authoritative"; fonts="https://fonts.googleapis.com/css2?family=Merriweather:ital,wght@0,400;0,700;1,400&display=swap"; heading="Merriweather"; body="Merriweather"; text="1A1A1A"; accent="8B0000"},
+ @{path="industrial\brutalist.json"; id="brutalist"; name="Brutalist"; category="Industrial"; desc="Raw, bold, unapologetic design inspired by brutalist architecture. Monospace typography with aggressive spacing."; vibe="Bold, Raw, Unrefined"; fonts="https://fonts.googleapis.com/css2?family=Roboto+Mono:wght@400;700&display=swap"; heading="Roboto Mono"; body="Roboto Mono"; text="000000"; accent="FF4500"},
+ @{path="lifestyle\elegant-magazine.json"; id="elegant-magazine"; name="Elegant Magazine"; category="Lifestyle"; desc="Sophisticated magazine layout with elegant serif typography and generous whitespace."; vibe="Sophisticated, Luxurious, Refined"; fonts="https://fonts.googleapis.com/css2?family=Cormorant+Garamond:ital,wght@0,400;0,600;1,400&display=swap"; heading="Cormorant Garamond"; body="Cormorant Garamond"; text="2B2B2B"; accent="D4A574"},
+ @{path="tech\tech-startup.json"; id="tech-startup"; name="Tech Startup"; category="Tech"; desc="Modern, clean design for tech companies and startups. Sans-serif typography with vibrant accents."; vibe="Innovative, Modern, Dynamic"; fonts="https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@400;600;700&display=swap"; heading="Plus Jakarta Sans"; body="Plus Jakarta Sans"; text="0F172A"; accent="6366F1"},
+ @{path="vintage\retro-typewriter.json"; id="retro-typewriter"; name="Retro Typewriter"; category="Vintage"; desc="Vintage typewriter aesthetic with monospace fonts and classic styling."; vibe="Nostalgic, Classic, Authentic"; fonts="https://fonts.googleapis.com/css2?family=Courier+Prime:ital,wght@0,400;0,700;1,400&display=swap"; heading="Courier Prime"; body="Courier Prime"; text="2C2C2C"; accent="5C4033"}
+)
+
+foreach ($t in $templates) {
+ $new = $baseTemplate.PSObject.Copy()
+
+ # Update metadata
+ $new.id = $t.id
+ $new.name = $t.name
+ $new.category = $t.category
+ $new.description = $t.desc
+ $new.vibe = $t.vibe
+ $new.googleFontsImport = $t.fonts
+
+ # Update typography
+ $new.typography.fonts.heading = $t.heading
+ $new.typography.fonts.body = $t.body
+ $new.typography.colors.text = $t.text
+ $new.typography.colors.accent = $t.accent
+ $new.typography.colors.blockquoteBorder = $t.accent
+
+ # Write to file
+ $json = $new | ConvertTo-Json -Depth 10
+ $fullPath = "src-tauri\templates\$($t.path)"
+ [System.IO.File]::WriteAllLines($fullPath, $json)
+ Write-Host "โ
Created $($t.path)" -ForegroundColor Green
+}
+
+Write-Host "`nโ
All templates rebuilt successfully!" -ForegroundColor Green
diff --git a/remove_columns.cjs b/remove_columns.cjs
new file mode 100644
index 0000000..7fe747c
--- /dev/null
+++ b/remove_columns.cjs
@@ -0,0 +1,43 @@
+const fs = require('fs');
+const path = require('path');
+
+const rootDir = 'd:\\gdfhbfgdbnbdfbdf\\typogenie\\src-tauri\\templates';
+
+function walk(dir) {
+ const files = fs.readdirSync(dir, { withFileTypes: true });
+ files.forEach(dirent => {
+ const fullPath = path.join(dir, dirent.name);
+ if (dirent.isDirectory()) {
+ walk(fullPath);
+ } else if (dirent.name.endsWith('.json')) {
+ let content = fs.readFileSync(fullPath, 'utf8');
+ let changed = false;
+
+ try {
+ const json = JSON.parse(content);
+ if (json.page && json.page.columns !== 1) {
+ json.page.columns = 1;
+ // Also remove gutter if it exists
+ if (json.page.gutter) delete json.page.gutter;
+ content = JSON.stringify(json, null, 4);
+ changed = true;
+ }
+ } catch (e) {
+ console.error(`Error parsing ${fullPath}: ${e.message}`);
+ // Fallback to regex if JSON is slightly broken (though surgery should have fixed it)
+ if (content.includes('"columns":')) {
+ content = content.replace(/"columns":\s*\d+/g, '"columns": 1');
+ changed = true;
+ }
+ }
+
+ if (changed) {
+ fs.writeFileSync(fullPath, content, { encoding: 'utf8' });
+ console.log(`Removed columns from: ${fullPath}`);
+ }
+ }
+ });
+}
+
+walk(rootDir);
+console.log('Finished removing columns from all templates.');
diff --git a/restore_fonts.ps1 b/restore_fonts.ps1
new file mode 100644
index 0000000..cd75ca0
--- /dev/null
+++ b/restore_fonts.ps1
@@ -0,0 +1,60 @@
+$templatesDir = "d:\gdfhbfgdbnbdfbdf\typogenie\src-tauri\templates"
+$files = Get-ChildItem -Path $templatesDir -Recurse -Filter *.json
+
+foreach ($file in $files) {
+ try {
+ $content = Get-Content -Path $file.FullName -Raw
+
+ # 1. Extract Font Names using Regex
+ $headingFont = "Unknown"
+ $bodyFont = "Unknown"
+ $codeFont = "Unknown"
+
+ if ($content -match '"heading":\s*"([^"]+)"') { $headingFont = $matches[1] }
+ if ($content -match '"body":\s*"([^"]+)"') { $bodyFont = $matches[1] }
+ if ($content -match '"code":\s*"([^"]+)"') { $codeFont = $matches[1] }
+
+ if ($headingFont -eq "Unknown" -or $bodyFont -eq "Unknown") {
+ Write-Host "Skipping $($file.Name) - Could not parse fonts" -ForegroundColor Yellow
+ continue
+ }
+
+ # 2. Build Google Fonts URL
+ # Standard weights + italics: 300, 400, 500, 600, 700
+ $weights = "ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700"
+
+ $fonts = @($headingFont, $bodyFont, $codeFont) | Select-Object -Unique
+ $urlParts = @()
+
+ foreach ($font in $fonts) {
+ # Handle fonts that might not be Google Fonts (e.g. system fonts)?
+ # Assuming all current templates use Google Fonts as per design.
+ $encodedFont = $font -replace ' ', '+'
+ $urlParts += "family=$encodedFont`:$weights"
+ }
+
+ $fullUrl = "https://fonts.googleapis.com/css2?" + ($urlParts -join "&") + "&display=swap"
+
+ # 3. Repair the broken line
+ # Look for "googleFontsImport": "https: OR "googleFontsImport": "https:\s*
+ # The previous regex stripping might have left it as `"https:` (no closing quote) or `"https:""` if there was a quote after?
+ # Inspecting previous output: `"googleFontsImport": "https:`
+
+ if ($content -match '"googleFontsImport":\s*"https:') {
+ $newLine = '"googleFontsImport": "' + $fullUrl + '",'
+ $newContent = $content -replace '"googleFontsImport":\s*"https:.*', $newLine
+
+ # Double check we didn't add double commas or break structure
+ # The original often had a comma after. The regex `.*` eats the rest of the line.
+ # My replacement adds a comma.
+
+ Set-Content -Path $file.FullName -Value $newContent -Force
+ Write-Host "Restored: $($file.Name)" -ForegroundColor Green
+ } else {
+ Write-Host "No repair needed or pattern not found: $($file.Name)" -ForegroundColor Gray
+ }
+
+ } catch {
+ Write-Host "Error processing $($file.Name): $($_.Exception.Message)" -ForegroundColor Red
+ }
+}
diff --git a/scripts/convert-templates.cjs b/scripts/convert-templates.cjs
new file mode 100644
index 0000000..3a16515
--- /dev/null
+++ b/scripts/convert-templates.cjs
@@ -0,0 +1,81 @@
+// Convert TypeScript templates to JSON format for user editing
+const fs = require('fs');
+const path = require('path');
+
+const sourceDir = path.join(__dirname, '../src/styles/templates');
+const outputDir = path.join(__dirname, '../src-tauri/templates');
+
+// Ensure output directory exists
+if (!fs.existsSync(outputDir)) {
+ fs.mkdirSync(outputDir, { recursive: true });
+}
+
+// Get all category directories
+const categories = fs.readdirSync(sourceDir, { withFileTypes: true })
+ .filter(dirent => dirent.isDirectory())
+ .map(dirent => dirent.name);
+
+console.log(`Found ${categories.length} categories: ${categories.join(', ')}\n`);
+
+for (const category of categories) {
+ const categorySourcePath = path.join(sourceDir, category);
+ const categoryOutputPath = path.join(outputDir, category);
+
+ // Create category directory in output
+ if (!fs.existsSync(categoryOutputPath)) {
+ fs.mkdirSync(categoryOutputPath, { recursive: true });
+ }
+
+ // Get all template files in category
+ const templateFiles = fs.readdirSync(categorySourcePath)
+ .filter(file => file.endsWith('.ts') && file !== 'index.ts');
+
+ console.log(`Processing category "${category}" (${templateFiles.length} templates)...`);
+
+ for (const file of templateFiles) {
+ const sourceFile = path.join(categorySourcePath, file);
+ const content = fs.readFileSync(sourceFile, 'utf8');
+
+ // Extract the template object using regex
+ const templateMatch = content.match(/export\s+const\s+\w+\s*:\s*StyleOption\s*=\s*(\{[\s\S]*?\});\s*$/);
+
+ if (templateMatch) {
+ let templateObj = templateMatch[1];
+
+ // Convert template literals to regular strings
+ templateObj = templateObj.replace(/previewCss:\s*`[\s\S]*?`/, (match) => {
+ const css = match.replace(/previewCss:\s*`/, '').replace(/`$/, '');
+ return `previewCss: ${JSON.stringify(css.trim())}`;
+ });
+
+ // Convert single quotes to double quotes for JSON
+ templateObj = templateObj.replace(/'/g, '"');
+
+ // Remove trailing commas
+ templateObj = templateObj.replace(/,(\s*[}\]])/g, '$1');
+
+ // Fix unquoted keys
+ templateObj = templateObj.replace(/([{,]\s*)(\w+):/g, '$1"$2":');
+
+ try {
+ const template = JSON.parse(templateObj);
+
+ // Validate required fields
+ if (template.id && template.name && template.wordConfig) {
+ const outputFile = path.join(categoryOutputPath, `${template.id}.json`);
+ fs.writeFileSync(outputFile, JSON.stringify(template, null, 2));
+ console.log(` โ ${template.id}.json`);
+ } else {
+ console.log(` โ ${file} - missing required fields`);
+ }
+ } catch (error) {
+ console.log(` โ ${file} - parse error: ${error.message}`);
+ }
+ } else {
+ console.log(` โ ${file} - could not extract template`);
+ }
+ }
+}
+
+console.log('\nDone! Templates converted to JSON format.');
+console.log(`Output directory: ${outputDir}`);
diff --git a/src-tauri/Cargo.lock b/src-tauri/Cargo.lock
index c9b9716..b9dc9cd 100644
--- a/src-tauri/Cargo.lock
+++ b/src-tauri/Cargo.lock
@@ -81,6 +81,137 @@ version = "0.7.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50"
+[[package]]
+name = "async-broadcast"
+version = "0.7.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "435a87a52755b8f27fcf321ac4f04b2802e337c8c4872923137471ec39c37532"
+dependencies = [
+ "event-listener",
+ "event-listener-strategy",
+ "futures-core",
+ "pin-project-lite",
+]
+
+[[package]]
+name = "async-channel"
+version = "2.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "924ed96dd52d1b75e9c1a3e6275715fd320f5f9439fb5a4a11fa51f4221158d2"
+dependencies = [
+ "concurrent-queue",
+ "event-listener-strategy",
+ "futures-core",
+ "pin-project-lite",
+]
+
+[[package]]
+name = "async-executor"
+version = "1.13.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "497c00e0fd83a72a79a39fcbd8e3e2f055d6f6c7e025f3b3d91f4f8e76527fb8"
+dependencies = [
+ "async-task",
+ "concurrent-queue",
+ "fastrand",
+ "futures-lite",
+ "pin-project-lite",
+ "slab",
+]
+
+[[package]]
+name = "async-io"
+version = "2.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "456b8a8feb6f42d237746d4b3e9a178494627745c3c56c6ea55d92ba50d026fc"
+dependencies = [
+ "autocfg",
+ "cfg-if",
+ "concurrent-queue",
+ "futures-io",
+ "futures-lite",
+ "parking",
+ "polling",
+ "rustix",
+ "slab",
+ "windows-sys 0.61.2",
+]
+
+[[package]]
+name = "async-lock"
+version = "3.4.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "290f7f2596bd5b78a9fec8088ccd89180d7f9f55b94b0576823bbbdc72ee8311"
+dependencies = [
+ "event-listener",
+ "event-listener-strategy",
+ "pin-project-lite",
+]
+
+[[package]]
+name = "async-process"
+version = "2.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fc50921ec0055cdd8a16de48773bfeec5c972598674347252c0399676be7da75"
+dependencies = [
+ "async-channel",
+ "async-io",
+ "async-lock",
+ "async-signal",
+ "async-task",
+ "blocking",
+ "cfg-if",
+ "event-listener",
+ "futures-lite",
+ "rustix",
+]
+
+[[package]]
+name = "async-recursion"
+version = "1.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.114",
+]
+
+[[package]]
+name = "async-signal"
+version = "0.2.13"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "43c070bbf59cd3570b6b2dd54cd772527c7c3620fce8be898406dd3ed6adc64c"
+dependencies = [
+ "async-io",
+ "async-lock",
+ "atomic-waker",
+ "cfg-if",
+ "futures-core",
+ "futures-io",
+ "rustix",
+ "signal-hook-registry",
+ "slab",
+ "windows-sys 0.61.2",
+]
+
+[[package]]
+name = "async-task"
+version = "4.7.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de"
+
+[[package]]
+name = "async-trait"
+version = "0.1.89"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.114",
+]
+
[[package]]
name = "atk"
version = "0.18.2"
@@ -173,6 +304,19 @@ dependencies = [
"objc2",
]
+[[package]]
+name = "blocking"
+version = "1.6.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e83f8d02be6967315521be875afa792a316e28d57b5a2d401897e2a7921b7f21"
+dependencies = [
+ "async-channel",
+ "async-task",
+ "futures-io",
+ "futures-lite",
+ "piper",
+]
+
[[package]]
name = "borsh"
version = "1.6.0"
@@ -217,6 +361,17 @@ dependencies = [
"alloc-stdlib",
]
+[[package]]
+name = "bstr"
+version = "1.12.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "63044e1ae8e69f3b5a92c736ca6269b8d12fa7efe39bf34ddb06d102cf0e2cab"
+dependencies = [
+ "memchr",
+ "regex-automata",
+ "serde",
+]
+
[[package]]
name = "bumpalo"
version = "3.19.1"
@@ -416,6 +571,15 @@ dependencies = [
"memchr",
]
+[[package]]
+name = "concurrent-queue"
+version = "2.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973"
+dependencies = [
+ "crossbeam-utils",
+]
+
[[package]]
name = "convert_case"
version = "0.4.0"
@@ -428,10 +592,57 @@ version = "0.18.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4ddef33a339a91ea89fb53151bd0a4689cfce27055c291dfa69945475d22c747"
dependencies = [
+ "percent-encoding",
"time",
"version_check",
]
+[[package]]
+name = "cookie_store"
+version = "0.21.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2eac901828f88a5241ee0600950ab981148a18f2f756900ffba1b125ca6a3ef9"
+dependencies = [
+ "cookie",
+ "document-features",
+ "idna",
+ "log",
+ "publicsuffix",
+ "serde",
+ "serde_derive",
+ "serde_json",
+ "time",
+ "url",
+]
+
+[[package]]
+name = "cookie_store"
+version = "0.22.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3fc4bff745c9b4c7fb1e97b25d13153da2bc7796260141df62378998d070207f"
+dependencies = [
+ "cookie",
+ "document-features",
+ "idna",
+ "log",
+ "publicsuffix",
+ "serde",
+ "serde_derive",
+ "serde_json",
+ "time",
+ "url",
+]
+
+[[package]]
+name = "core-foundation"
+version = "0.9.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f"
+dependencies = [
+ "core-foundation-sys",
+ "libc",
+]
+
[[package]]
name = "core-foundation"
version = "0.10.1"
@@ -455,7 +666,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fa95a34622365fa5bbf40b20b75dba8dfa8c94c734aea8ac9a5ca38af14316f1"
dependencies = [
"bitflags 2.10.0",
- "core-foundation",
+ "core-foundation 0.10.1",
"core-graphics-types",
"foreign-types",
"libc",
@@ -468,7 +679,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3d44a101f213f6c4cdc1853d4b78aef6db6bdfa3468798cc1d9912f4735013eb"
dependencies = [
"bitflags 2.10.0",
- "core-foundation",
+ "core-foundation 0.10.1",
"libc",
]
@@ -587,6 +798,23 @@ dependencies = [
"syn 2.0.114",
]
+[[package]]
+name = "data-url"
+version = "0.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "be1e0bca6c3637f992fc1cc7cbc52a78c1ef6db076dbf1059c4323d6a2048376"
+
+[[package]]
+name = "dbus"
+version = "0.9.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "21b3aa68d7e7abee336255bd7248ea965cc393f3e70411135a6f6a4b651345d4"
+dependencies = [
+ "libc",
+ "libdbus-sys",
+ "windows-sys 0.59.0",
+]
+
[[package]]
name = "deranged"
version = "0.5.5"
@@ -693,6 +921,15 @@ dependencies = [
"syn 2.0.114",
]
+[[package]]
+name = "document-features"
+version = "0.2.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d4b8a88685455ed29a21542a33abd9cb6510b6b129abadabdcef0f4c55bc8f61"
+dependencies = [
+ "litrs",
+]
+
[[package]]
name = "dpi"
version = "0.1.2"
@@ -749,6 +986,42 @@ version = "1.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4ef6b89e5b37196644d8796de5268852ff179b44e96276cf4290264843743bb7"
+[[package]]
+name = "encoding_rs"
+version = "0.8.35"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3"
+dependencies = [
+ "cfg-if",
+]
+
+[[package]]
+name = "endi"
+version = "1.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "66b7e2430c6dff6a955451e2cfc438f09cea1965a9d6f87f7e3b90decc014099"
+
+[[package]]
+name = "enumflags2"
+version = "0.7.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1027f7680c853e056ebcec683615fb6fbbc07dbaa13b4d5d9442b146ded4ecef"
+dependencies = [
+ "enumflags2_derive",
+ "serde",
+]
+
+[[package]]
+name = "enumflags2_derive"
+version = "0.7.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "67c78a4d8fdf9953a5c9d458f9efe940fd97a0cab0941c075a813ac594733827"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.114",
+]
+
[[package]]
name = "env_filter"
version = "0.1.4"
@@ -776,6 +1049,43 @@ dependencies = [
"typeid",
]
+[[package]]
+name = "errno"
+version = "0.3.14"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb"
+dependencies = [
+ "libc",
+ "windows-sys 0.61.2",
+]
+
+[[package]]
+name = "event-listener"
+version = "5.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e13b66accf52311f30a0db42147dadea9850cb48cd070028831ae5f5d4b856ab"
+dependencies = [
+ "concurrent-queue",
+ "parking",
+ "pin-project-lite",
+]
+
+[[package]]
+name = "event-listener-strategy"
+version = "0.5.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8be9f3dfaaffdae2972880079a491a1a8bb7cbed0b8dd7a347f668b4150a3b93"
+dependencies = [
+ "event-listener",
+ "pin-project-lite",
+]
+
+[[package]]
+name = "fastrand"
+version = "2.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be"
+
[[package]]
name = "fdeflate"
version = "0.3.7"
@@ -910,6 +1220,19 @@ version = "0.3.31"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6"
+[[package]]
+name = "futures-lite"
+version = "2.6.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f78e10609fe0e0b3f4157ffab1876319b5b0db102a2c60dc4626306dc46b44ad"
+dependencies = [
+ "fastrand",
+ "futures-core",
+ "futures-io",
+ "parking",
+ "pin-project-lite",
+]
+
[[package]]
name = "futures-macro"
version = "0.3.31"
@@ -1086,8 +1409,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0"
dependencies = [
"cfg-if",
+ "js-sys",
"libc",
"wasi 0.11.1+wasi-snapshot-preview1",
+ "wasm-bindgen",
]
[[package]]
@@ -1097,9 +1422,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd"
dependencies = [
"cfg-if",
+ "js-sys",
"libc",
"r-efi",
"wasip2",
+ "wasm-bindgen",
]
[[package]]
@@ -1250,6 +1577,25 @@ dependencies = [
"syn 2.0.114",
]
+[[package]]
+name = "h2"
+version = "0.4.13"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2f44da3a8150a6703ed5d34e164b875fd14c2cdab9af1252a9a1020bde2bdc54"
+dependencies = [
+ "atomic-waker",
+ "bytes",
+ "fnv",
+ "futures-core",
+ "futures-sink",
+ "http",
+ "indexmap 2.13.0",
+ "slab",
+ "tokio",
+ "tokio-util",
+ "tracing",
+]
+
[[package]]
name = "hashbrown"
version = "0.12.3"
@@ -1277,6 +1623,12 @@ version = "0.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea"
+[[package]]
+name = "hermit-abi"
+version = "0.5.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c"
+
[[package]]
name = "hex"
version = "0.4.3"
@@ -1344,6 +1696,7 @@ dependencies = [
"bytes",
"futures-channel",
"futures-core",
+ "h2",
"http",
"http-body",
"httparse",
@@ -1355,6 +1708,23 @@ dependencies = [
"want",
]
+[[package]]
+name = "hyper-rustls"
+version = "0.27.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e3c93eb611681b207e1fe55d5a71ecf91572ec8a6705cdb6857f7d8d5242cf58"
+dependencies = [
+ "http",
+ "hyper",
+ "hyper-util",
+ "rustls",
+ "rustls-pki-types",
+ "tokio",
+ "tokio-rustls",
+ "tower-service",
+ "webpki-roots",
+]
+
[[package]]
name = "hyper-util"
version = "0.1.19"
@@ -1374,9 +1744,11 @@ dependencies = [
"percent-encoding",
"pin-project-lite",
"socket2",
+ "system-configuration",
"tokio",
"tower-service",
"tracing",
+ "windows-registry",
]
[[package]]
@@ -1569,6 +1941,25 @@ dependencies = [
"serde",
]
+[[package]]
+name = "is-docker"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "928bae27f42bc99b60d9ac7334e3a21d10ad8f1835a4e12ec3ec0464765ed1b3"
+dependencies = [
+ "once_cell",
+]
+
+[[package]]
+name = "is-wsl"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "173609498df190136aa7dea1a91db051746d339e18476eed5ca40521f02d7aa5"
+dependencies = [
+ "is-docker",
+ "once_cell",
+]
+
[[package]]
name = "itoa"
version = "1.0.17"
@@ -1711,6 +2102,16 @@ version = "0.2.180"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bcc35a38544a891a5f7c865aca548a982ccb3b8650a5b06d0fd33a10283c56fc"
+[[package]]
+name = "libdbus-sys"
+version = "0.2.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "328c4789d42200f1eeec05bd86c9c13c7f091d2ba9a6ea35acdf51f31bc0f043"
+dependencies = [
+ "cc",
+ "pkg-config",
+]
+
[[package]]
name = "libloading"
version = "0.7.4"
@@ -1731,12 +2132,24 @@ dependencies = [
"libc",
]
+[[package]]
+name = "linux-raw-sys"
+version = "0.11.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "df1d3c3b53da64cf5760482273a98e575c651a67eec7f77df96b5b642de8f039"
+
[[package]]
name = "litemap"
version = "0.8.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6373607a59f0be73a39b6fe456b8192fcc3585f602af20751600e974dd455e77"
+[[package]]
+name = "litrs"
+version = "1.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "11d3d7f243d5c5a8b9bb5d6dd2b1602c0cb0b9db1621bafc7ed66e35ff9fe092"
+
[[package]]
name = "lock_api"
version = "0.4.14"
@@ -1755,6 +2168,12 @@ dependencies = [
"value-bag",
]
+[[package]]
+name = "lru-slab"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "112b39cec0b298b6c1999fee3e31427f74f676e4cb9879ed1a121b43661a4154"
+
[[package]]
name = "mac"
version = "0.1.1"
@@ -1897,6 +2316,15 @@ version = "0.1.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "72ef4a56884ca558e5ddb05a1d1e7e1bfd9a68d9ed024c21704cc98872dae1bb"
+[[package]]
+name = "normpath"
+version = "1.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bf23ab2b905654b4cb177e30b629937b3868311d4e1cba859f899c041046e69b"
+dependencies = [
+ "windows-sys 0.61.2",
+]
+
[[package]]
name = "num-conv"
version = "0.2.0"
@@ -2161,12 +2589,56 @@ version = "1.21.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d"
+[[package]]
+name = "open"
+version = "5.3.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "43bb73a7fa3799b198970490a51174027ba0d4ec504b03cd08caf513d40024bc"
+dependencies = [
+ "dunce",
+ "is-wsl",
+ "libc",
+ "pathdiff",
+]
+
+[[package]]
+name = "opener"
+version = "0.7.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d0812e5e4df08da354c851a3376fead46db31c2214f849d3de356d774d057681"
+dependencies = [
+ "bstr",
+ "dbus",
+ "normpath",
+ "windows-sys 0.59.0",
+]
+
[[package]]
name = "option-ext"
version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d"
+[[package]]
+name = "ordered-stream"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9aa2b01e1d916879f73a53d01d1d6cee68adbb31d6d9177a8cfce093cced1d50"
+dependencies = [
+ "futures-core",
+ "pin-project-lite",
+]
+
+[[package]]
+name = "os_pipe"
+version = "1.2.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7d8fae84b431384b68627d0f9b3b1245fcf9f46f6c0e3dc902e9dce64edd1967"
+dependencies = [
+ "libc",
+ "windows-sys 0.61.2",
+]
+
[[package]]
name = "pango"
version = "0.18.3"
@@ -2192,6 +2664,12 @@ dependencies = [
"system-deps",
]
+[[package]]
+name = "parking"
+version = "2.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba"
+
[[package]]
name = "parking_lot"
version = "0.12.5"
@@ -2215,6 +2693,12 @@ dependencies = [
"windows-link 0.2.1",
]
+[[package]]
+name = "pathdiff"
+version = "0.2.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "df94ce210e5bc13cb6651479fa48d14f601d9858cfe0467f43ae157023b938d3"
+
[[package]]
name = "percent-encoding"
version = "2.3.2"
@@ -2367,6 +2851,17 @@ version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
+[[package]]
+name = "piper"
+version = "0.2.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "96c8c490f422ef9a4efd2cb5b42b76c8613d7e7dfc1caf667b8a3350a5acc066"
+dependencies = [
+ "atomic-waker",
+ "fastrand",
+ "futures-io",
+]
+
[[package]]
name = "pkg-config"
version = "0.3.32"
@@ -2399,6 +2894,20 @@ dependencies = [
"miniz_oxide",
]
+[[package]]
+name = "polling"
+version = "3.11.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5d0e4f59085d47d8241c88ead0f274e8a0cb551f3625263c05eb8dd897c34218"
+dependencies = [
+ "cfg-if",
+ "concurrent-queue",
+ "hermit-abi",
+ "pin-project-lite",
+ "rustix",
+ "windows-sys 0.61.2",
+]
+
[[package]]
name = "potential_utf"
version = "0.1.4"
@@ -2497,6 +3006,12 @@ dependencies = [
"unicode-ident",
]
+[[package]]
+name = "psl-types"
+version = "2.0.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "33cb294fe86a74cbcf50d4445b37da762029549ebeea341421c7c70370f86cac"
+
[[package]]
name = "ptr_meta"
version = "0.1.4"
@@ -2517,6 +3032,16 @@ dependencies = [
"syn 1.0.109",
]
+[[package]]
+name = "publicsuffix"
+version = "2.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6f42ea446cab60335f76979ec15e12619a2165b5ae2c12166bef27d283a9fadf"
+dependencies = [
+ "idna",
+ "psl-types",
+]
+
[[package]]
name = "quick-xml"
version = "0.38.4"
@@ -2526,6 +3051,61 @@ dependencies = [
"memchr",
]
+[[package]]
+name = "quinn"
+version = "0.11.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b9e20a958963c291dc322d98411f541009df2ced7b5a4f2bd52337638cfccf20"
+dependencies = [
+ "bytes",
+ "cfg_aliases",
+ "pin-project-lite",
+ "quinn-proto",
+ "quinn-udp",
+ "rustc-hash",
+ "rustls",
+ "socket2",
+ "thiserror 2.0.18",
+ "tokio",
+ "tracing",
+ "web-time",
+]
+
+[[package]]
+name = "quinn-proto"
+version = "0.11.13"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f1906b49b0c3bc04b5fe5d86a77925ae6524a19b816ae38ce1e426255f1d8a31"
+dependencies = [
+ "bytes",
+ "getrandom 0.3.4",
+ "lru-slab",
+ "rand 0.9.2",
+ "ring",
+ "rustc-hash",
+ "rustls",
+ "rustls-pki-types",
+ "slab",
+ "thiserror 2.0.18",
+ "tinyvec",
+ "tracing",
+ "web-time",
+]
+
+[[package]]
+name = "quinn-udp"
+version = "0.5.14"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "addec6a0dcad8a8d96a771f815f0eaf55f9d1805756410b39f5fa81332574cbd"
+dependencies = [
+ "cfg_aliases",
+ "libc",
+ "once_cell",
+ "socket2",
+ "tracing",
+ "windows-sys 0.60.2",
+]
+
[[package]]
name = "quote"
version = "1.0.44"
@@ -2572,6 +3152,16 @@ dependencies = [
"rand_core 0.6.4",
]
+[[package]]
+name = "rand"
+version = "0.9.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1"
+dependencies = [
+ "rand_chacha 0.9.0",
+ "rand_core 0.9.5",
+]
+
[[package]]
name = "rand_chacha"
version = "0.2.2"
@@ -2592,6 +3182,16 @@ dependencies = [
"rand_core 0.6.4",
]
+[[package]]
+name = "rand_chacha"
+version = "0.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb"
+dependencies = [
+ "ppv-lite86",
+ "rand_core 0.9.5",
+]
+
[[package]]
name = "rand_core"
version = "0.5.1"
@@ -2610,6 +3210,15 @@ dependencies = [
"getrandom 0.2.17",
]
+[[package]]
+name = "rand_core"
+version = "0.9.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "76afc826de14238e6e8c374ddcc1fa19e374fd8dd986b0d2af0d02377261d83c"
+dependencies = [
+ "getrandom 0.3.4",
+]
+
[[package]]
name = "rand_hc"
version = "0.2.0"
@@ -2720,22 +3329,32 @@ checksum = "eddd3ca559203180a307f12d114c268abf583f59b03cb906fd0b3ff8646c1147"
dependencies = [
"base64 0.22.1",
"bytes",
+ "cookie",
+ "cookie_store 0.22.0",
+ "encoding_rs",
"futures-core",
"futures-util",
+ "h2",
"http",
"http-body",
"http-body-util",
"hyper",
+ "hyper-rustls",
"hyper-util",
"js-sys",
"log",
+ "mime",
"percent-encoding",
"pin-project-lite",
+ "quinn",
+ "rustls",
+ "rustls-pki-types",
"serde",
"serde_json",
"serde_urlencoded",
"sync_wrapper",
"tokio",
+ "tokio-rustls",
"tokio-util",
"tower",
"tower-http",
@@ -2745,6 +3364,7 @@ dependencies = [
"wasm-bindgen-futures",
"wasm-streams",
"web-sys",
+ "webpki-roots",
]
[[package]]
@@ -2771,6 +3391,20 @@ dependencies = [
"windows-sys 0.60.2",
]
+[[package]]
+name = "ring"
+version = "0.17.14"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7"
+dependencies = [
+ "cc",
+ "cfg-if",
+ "getrandom 0.2.17",
+ "libc",
+ "untrusted",
+ "windows-sys 0.52.0",
+]
+
[[package]]
name = "rkyv"
version = "0.7.46"
@@ -2816,6 +3450,12 @@ dependencies = [
"serde_json",
]
+[[package]]
+name = "rustc-hash"
+version = "2.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d"
+
[[package]]
name = "rustc_version"
version = "0.4.1"
@@ -2825,6 +3465,54 @@ dependencies = [
"semver",
]
+[[package]]
+name = "rustix"
+version = "1.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "146c9e247ccc180c1f61615433868c99f3de3ae256a30a43b49f67c2d9171f34"
+dependencies = [
+ "bitflags 2.10.0",
+ "errno",
+ "libc",
+ "linux-raw-sys",
+ "windows-sys 0.61.2",
+]
+
+[[package]]
+name = "rustls"
+version = "0.23.36"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c665f33d38cea657d9614f766881e4d510e0eda4239891eea56b4cadcf01801b"
+dependencies = [
+ "once_cell",
+ "ring",
+ "rustls-pki-types",
+ "rustls-webpki",
+ "subtle",
+ "zeroize",
+]
+
+[[package]]
+name = "rustls-pki-types"
+version = "1.14.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "be040f8b0a225e40375822a563fa9524378b9d63112f53e19ffff34df5d33fdd"
+dependencies = [
+ "web-time",
+ "zeroize",
+]
+
+[[package]]
+name = "rustls-webpki"
+version = "0.103.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d7df23109aa6c1567d1c575b9952556388da57401e4ace1d15f79eedad0d8f53"
+dependencies = [
+ "ring",
+ "rustls-pki-types",
+ "untrusted",
+]
+
[[package]]
name = "rustversion"
version = "1.0.22"
@@ -3118,12 +3806,54 @@ dependencies = [
"digest",
]
+[[package]]
+name = "shared_child"
+version = "1.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1e362d9935bc50f019969e2f9ecd66786612daae13e8f277be7bfb66e8bed3f7"
+dependencies = [
+ "libc",
+ "sigchld",
+ "windows-sys 0.60.2",
+]
+
[[package]]
name = "shlex"
version = "1.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64"
+[[package]]
+name = "sigchld"
+version = "0.2.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "47106eded3c154e70176fc83df9737335c94ce22f821c32d17ed1db1f83badb1"
+dependencies = [
+ "libc",
+ "os_pipe",
+ "signal-hook",
+]
+
+[[package]]
+name = "signal-hook"
+version = "0.3.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d881a16cf4426aa584979d30bd82cb33429027e42122b169753d6ef1085ed6e2"
+dependencies = [
+ "libc",
+ "signal-hook-registry",
+]
+
+[[package]]
+name = "signal-hook-registry"
+version = "1.4.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c4db69cba1110affc0e9f7bcd48bbf87b3f4fc7c61fc9155afd4c469eb3d6c1b"
+dependencies = [
+ "errno",
+ "libc",
+]
+
[[package]]
name = "simd-adler32"
version = "0.3.8"
@@ -3255,6 +3985,12 @@ version = "0.11.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f"
+[[package]]
+name = "subtle"
+version = "2.6.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292"
+
[[package]]
name = "swift-rs"
version = "1.0.7"
@@ -3308,6 +4044,27 @@ dependencies = [
"syn 2.0.114",
]
+[[package]]
+name = "system-configuration"
+version = "0.6.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b"
+dependencies = [
+ "bitflags 2.10.0",
+ "core-foundation 0.9.4",
+ "system-configuration-sys",
+]
+
+[[package]]
+name = "system-configuration-sys"
+version = "0.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8e1d1b10ced5ca923a1fcb8d03e96b8d3268065d724548c0211415ff6ac6bac4"
+dependencies = [
+ "core-foundation-sys",
+ "libc",
+]
+
[[package]]
name = "system-deps"
version = "6.2.2"
@@ -3329,7 +4086,7 @@ checksum = "f3a753bdc39c07b192151523a3f77cd0394aa75413802c883a0f6f6a0e5ee2e7"
dependencies = [
"bitflags 2.10.0",
"block2",
- "core-foundation",
+ "core-foundation 0.10.1",
"core-graphics",
"crossbeam-channel",
"dispatch",
@@ -3555,6 +4312,30 @@ dependencies = [
"url",
]
+[[package]]
+name = "tauri-plugin-http"
+version = "2.5.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "68bef611ccbfbce67c813959c11b23c1c084d201aa94222de9eba5f9edc3f897"
+dependencies = [
+ "bytes",
+ "cookie_store 0.21.1",
+ "data-url",
+ "http",
+ "regex",
+ "reqwest",
+ "schemars 0.8.22",
+ "serde",
+ "serde_json",
+ "tauri",
+ "tauri-plugin",
+ "tauri-plugin-fs",
+ "thiserror 2.0.18",
+ "tokio",
+ "url",
+ "urlpattern",
+]
+
[[package]]
name = "tauri-plugin-log"
version = "2.8.0"
@@ -3577,6 +4358,49 @@ dependencies = [
"time",
]
+[[package]]
+name = "tauri-plugin-opener"
+version = "2.5.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fc624469b06f59f5a29f874bbc61a2ed737c0f9c23ef09855a292c389c42e83f"
+dependencies = [
+ "dunce",
+ "glob",
+ "objc2-app-kit",
+ "objc2-foundation",
+ "open",
+ "schemars 0.8.22",
+ "serde",
+ "serde_json",
+ "tauri",
+ "tauri-plugin",
+ "thiserror 2.0.18",
+ "url",
+ "windows",
+ "zbus",
+]
+
+[[package]]
+name = "tauri-plugin-shell"
+version = "2.3.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "39b76f884a3937e04b631ffdc3be506088fa979369d25147361352f2f352e5ed"
+dependencies = [
+ "encoding_rs",
+ "log",
+ "open",
+ "os_pipe",
+ "regex",
+ "schemars 0.8.22",
+ "serde",
+ "serde_json",
+ "shared_child",
+ "tauri",
+ "tauri-plugin",
+ "thiserror 2.0.18",
+ "tokio",
+]
+
[[package]]
name = "tauri-plugin-store"
version = "2.4.2"
@@ -3593,6 +4417,21 @@ dependencies = [
"tracing",
]
+[[package]]
+name = "tauri-plugin-window-state"
+version = "2.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "73736611e14142408d15353e21e3cca2f12a3cfb523ad0ce85999b6d2ef1a704"
+dependencies = [
+ "bitflags 2.10.0",
+ "log",
+ "serde",
+ "serde_json",
+ "tauri",
+ "tauri-plugin",
+ "thiserror 2.0.18",
+]
+
[[package]]
name = "tauri-runtime"
version = "2.9.2"
@@ -3694,6 +4533,19 @@ dependencies = [
"toml 0.9.11+spec-1.1.0",
]
+[[package]]
+name = "tempfile"
+version = "3.24.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "655da9c7eb6305c55742045d5a8d2037996d61d8de95806335c7c86ce0f82e9c"
+dependencies = [
+ "fastrand",
+ "getrandom 0.3.4",
+ "once_cell",
+ "rustix",
+ "windows-sys 0.61.2",
+]
+
[[package]]
name = "tendril"
version = "0.4.3"
@@ -3829,6 +4681,16 @@ dependencies = [
"syn 2.0.114",
]
+[[package]]
+name = "tokio-rustls"
+version = "0.26.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1729aa945f29d91ba541258c8df89027d5792d85a8841fb65e8bf0f4ede4ef61"
+dependencies = [
+ "rustls",
+ "tokio",
+]
+
[[package]]
name = "tokio-util"
version = "0.7.18"
@@ -4059,14 +4921,30 @@ name = "typogenie"
version = "1.0.0"
dependencies = [
"log",
+ "opener",
"serde",
"serde_json",
"tauri",
"tauri-build",
"tauri-plugin-dialog",
"tauri-plugin-fs",
+ "tauri-plugin-http",
"tauri-plugin-log",
+ "tauri-plugin-opener",
+ "tauri-plugin-shell",
"tauri-plugin-store",
+ "tauri-plugin-window-state",
+]
+
+[[package]]
+name = "uds_windows"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "89daebc3e6fd160ac4aa9fc8b3bf71e1f74fbf92367ae71fb83a037e8bf164b9"
+dependencies = [
+ "memoffset",
+ "tempfile",
+ "winapi",
]
[[package]]
@@ -4122,6 +5000,12 @@ version = "1.12.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493"
+[[package]]
+name = "untrusted"
+version = "0.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1"
+
[[package]]
name = "url"
version = "2.5.8"
@@ -4337,6 +5221,16 @@ dependencies = [
"wasm-bindgen",
]
+[[package]]
+name = "web-time"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb"
+dependencies = [
+ "js-sys",
+ "wasm-bindgen",
+]
+
[[package]]
name = "webkit2gtk"
version = "2.0.1"
@@ -4381,6 +5275,15 @@ dependencies = [
"system-deps",
]
+[[package]]
+name = "webpki-roots"
+version = "1.0.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "12bed680863276c63889429bfd6cab3b99943659923822de1c8a39c49e4d722c"
+dependencies = [
+ "rustls-pki-types",
+]
+
[[package]]
name = "webview2-com"
version = "0.38.2"
@@ -4566,6 +5469,17 @@ dependencies = [
"windows-link 0.1.3",
]
+[[package]]
+name = "windows-registry"
+version = "0.6.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "02752bf7fbdcce7f2a27a742f798510f3e5ad88dbe84871e5168e2120c3d5720"
+dependencies = [
+ "windows-link 0.2.1",
+ "windows-result 0.4.1",
+ "windows-strings 0.5.1",
+]
+
[[package]]
name = "windows-result"
version = "0.3.4"
@@ -4611,6 +5525,15 @@ dependencies = [
"windows-targets 0.42.2",
]
+[[package]]
+name = "windows-sys"
+version = "0.52.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d"
+dependencies = [
+ "windows-targets 0.52.6",
+]
+
[[package]]
name = "windows-sys"
version = "0.59.0"
@@ -4980,6 +5903,67 @@ dependencies = [
"synstructure",
]
+[[package]]
+name = "zbus"
+version = "5.13.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1bfeff997a0aaa3eb20c4652baf788d2dfa6d2839a0ead0b3ff69ce2f9c4bdd1"
+dependencies = [
+ "async-broadcast",
+ "async-executor",
+ "async-io",
+ "async-lock",
+ "async-process",
+ "async-recursion",
+ "async-task",
+ "async-trait",
+ "blocking",
+ "enumflags2",
+ "event-listener",
+ "futures-core",
+ "futures-lite",
+ "hex",
+ "libc",
+ "ordered-stream",
+ "rustix",
+ "serde",
+ "serde_repr",
+ "tracing",
+ "uds_windows",
+ "uuid",
+ "windows-sys 0.61.2",
+ "winnow 0.7.14",
+ "zbus_macros",
+ "zbus_names",
+ "zvariant",
+]
+
+[[package]]
+name = "zbus_macros"
+version = "5.13.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0bbd5a90dbe8feee5b13def448427ae314ccd26a49cac47905cafefb9ff846f1"
+dependencies = [
+ "proc-macro-crate 3.4.0",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.114",
+ "zbus_names",
+ "zvariant",
+ "zvariant_utils",
+]
+
+[[package]]
+name = "zbus_names"
+version = "4.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ffd8af6d5b78619bab301ff3c560a5bd22426150253db278f164d6cf3b72c50f"
+dependencies = [
+ "serde",
+ "winnow 0.7.14",
+ "zvariant",
+]
+
[[package]]
name = "zerocopy"
version = "0.8.35"
@@ -5021,6 +6005,12 @@ dependencies = [
"synstructure",
]
+[[package]]
+name = "zeroize"
+version = "1.8.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0"
+
[[package]]
name = "zerotrie"
version = "0.2.3"
@@ -5059,3 +6049,43 @@ name = "zmij"
version = "1.0.17"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "02aae0f83f69aafc94776e879363e9771d7ecbffe2c7fbb6c14c5e00dfe88439"
+
+[[package]]
+name = "zvariant"
+version = "5.9.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "68b64ef4f40c7951337ddc7023dd03528a57a3ce3408ee9da5e948bd29b232c4"
+dependencies = [
+ "endi",
+ "enumflags2",
+ "serde",
+ "winnow 0.7.14",
+ "zvariant_derive",
+ "zvariant_utils",
+]
+
+[[package]]
+name = "zvariant_derive"
+version = "5.9.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "484d5d975eb7afb52cc6b929c13d3719a20ad650fea4120e6310de3fc55e415c"
+dependencies = [
+ "proc-macro-crate 3.4.0",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.114",
+ "zvariant_utils",
+]
+
+[[package]]
+name = "zvariant_utils"
+version = "3.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f75c23a64ef8f40f13a6989991e643554d9bef1d682a281160cf0c1bc389c5e9"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "serde",
+ "syn 2.0.114",
+ "winnow 0.7.14",
+]
diff --git a/src-tauri/Cargo.toml b/src-tauri/Cargo.toml
index c4fc40d..55c7a19 100644
--- a/src-tauri/Cargo.toml
+++ b/src-tauri/Cargo.toml
@@ -13,14 +13,19 @@ name = "app_lib"
crate-type = ["staticlib", "cdylib", "rlib"]
[build-dependencies]
-tauri-build = { version = "2.5.3" }
+tauri-build = { version = "2.5.3", features = [] }
[dependencies]
serde_json = "1.0"
serde = { version = "1.0", features = ["derive"] }
log = "0.4"
-tauri = { version = "2.9.5" }
+tauri = { version = "2.9.5", features = ["devtools"] }
tauri-plugin-log = "2"
tauri-plugin-dialog = "2"
tauri-plugin-fs = "2"
tauri-plugin-store = "2"
+tauri-plugin-window-state = "2"
+tauri-plugin-http = "2"
+tauri-plugin-shell = "2"
+tauri-plugin-opener = "2"
+opener = "0.7"
diff --git a/src-tauri/TEMPLATES-README.md b/src-tauri/TEMPLATES-README.md
new file mode 100644
index 0000000..567aca1
--- /dev/null
+++ b/src-tauri/TEMPLATES-README.md
@@ -0,0 +1,186 @@
+# TypoGenie Templates
+
+Templates in TypoGenie are stored as JSON files in the `TypoGenie-Data/templates/` folder.
+
+## Folder Structure
+
+```
+TypoGenie-Data/
+โโโ templates/
+ โโโ minimalist/
+ โ โโโ swiss-grid.json
+ โ โโโ minimalist-white.json
+ โโโ tech/
+ โ โโโ tech-startup.json
+ โ โโโ code-editor.json
+ โโโ my-category/ โ Create new folders for custom categories!
+ โโโ my-template.json
+```
+
+- Each **subfolder** in `templates/` is a category
+- Each **.json file** in a category folder is a template
+- Categories and templates are automatically discovered when the app loads
+
+## Template JSON Format
+
+```json
+{
+ "id": "my-template",
+ "name": "My Template Name",
+ "category": "My Category",
+ "description": "A short description of this template",
+ "vibe": "Keywords describing the style",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Inter:wght@400;700&display=swap",
+ "wordConfig": {
+ "heading1": {
+ "font": "Inter",
+ "size": 28,
+ "color": "000000",
+ "bold": true,
+ "align": "left",
+ "spacing": { "before": 400, "after": 200, "line": 240 }
+ },
+ "heading2": {
+ "font": "Inter",
+ "size": 16,
+ "color": "333333",
+ "bold": true,
+ "align": "left",
+ "spacing": { "before": 320, "after": 160, "line": 240 }
+ },
+ "body": {
+ "font": "Inter",
+ "size": 10,
+ "color": "444444",
+ "align": "left",
+ "spacing": { "before": 0, "after": 160, "line": 280 }
+ },
+ "accentColor": "6366F1"
+ },
+ "previewCss": "font-family: 'Inter', sans-serif; h1 { font-size: 28pt; font-weight: 700; } h2 { font-size: 16pt; font-weight: 700; } p { font-size: 10pt; line-height: 1.6; }"
+}
+```
+
+## Field Reference
+
+### Required Fields
+
+- **id**: Unique identifier for the template (used in filenames, no spaces)
+- **name**: Display name shown in the app
+- **category**: Category name (should match the folder name)
+- **description**: Brief description of the template
+- **wordConfig**: Microsoft Word styling configuration
+ - **heading1**: Style for H1 headings
+ - **heading2**: Style for H2 headings
+ - **body**: Style for body text
+ - **accentColor**: Accent color for borders and highlights (hex, no #)
+- **previewCss**: CSS for the live preview (single line, no line breaks)
+
+### Optional Fields
+
+- **vibe**: Descriptive keywords for the template
+- **googleFontsImport**: Google Fonts URL for web preview
+
+## Text Configuration Options
+
+### Font Settings
+- **font**: Font family name (must be installed on user's system for Word)
+- **size**: Font size in points (pt)
+- **color**: Hex color code (without #)
+- **bold**: true/false
+- **italic**: true/false
+- **allCaps**: true/false (transform text to uppercase)
+- **tracking**: Character spacing (in twips, optional)
+- **align**: "left", "center", "right", or "both" (justify)
+
+### Spacing
+- **spacing.before**: Space before paragraph (in twips)
+- **spacing.after**: Space after paragraph (in twips)
+- **spacing.line**: Line spacing (in twips, 240 = single, 360 = 1.5, 480 = double)
+
+### Borders (Optional)
+```json
+"border": {
+ "top": { "color": "000000", "space": 10, "style": "single", "size": 12 },
+ "bottom": { "color": "000000", "space": 10, "style": "single", "size": 12 },
+ "left": { "color": "000000", "space": 10, "style": "single", "size": 24 },
+ "right": { "color": "000000", "space": 10, "style": "single", "size": 12 }
+}
+```
+
+Border styles: `"single"`, `"double"`, `"dotted"`, `"dashed"`, `"thick"`
+
+### Shading/Background (Optional)
+```json
+"shading": {
+ "fill": "F0F0F0",
+ "color": "auto",
+ "style": "clear"
+}
+```
+
+## Adding Custom Templates
+
+1. Create a new folder in `TypoGenie-Data/templates/` (or use existing)
+2. Create a `.json` file with your template configuration
+3. Click the **Refresh** button in the app, or restart the app
+4. Your template will appear in the style selector!
+
+## Tips
+
+- Use Google Fonts that have good Microsoft Word equivalents
+- Test your template with both A4 and Letter paper sizes
+- The previewCss should match the wordConfig styling as closely as possible
+- Use hex colors without the # prefix
+- Keep template IDs lowercase with hyphens (e.g., `my-awesome-template`)
+
+## Example: Dark Theme Template
+
+```json
+{
+ "id": "dark-mode",
+ "name": "Dark Mode",
+ "category": "Modern",
+ "description": "Dark theme with high contrast for reduced eye strain",
+ "vibe": "Dark, Modern, Accessible",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Inter:wght@400;600&display=swap",
+ "wordConfig": {
+ "heading1": {
+ "font": "Inter",
+ "size": 32,
+ "color": "FFFFFF",
+ "bold": true,
+ "align": "left",
+ "spacing": { "before": 400, "after": 200, "line": 240 },
+ "shading": { "fill": "1A1A1A", "color": "auto", "style": "clear" }
+ },
+ "heading2": {
+ "font": "Inter",
+ "size": 18,
+ "color": "E0E0E0",
+ "bold": true,
+ "align": "left",
+ "spacing": { "before": 320, "after": 160, "line": 240 }
+ },
+ "body": {
+ "font": "Inter",
+ "size": 11,
+ "color": "CCCCCC",
+ "align": "left",
+ "spacing": { "before": 0, "after": 160, "line": 280 },
+ "shading": { "fill": "121212", "color": "auto", "style": "clear" }
+ },
+ "accentColor": "6366F1"
+ },
+ "previewCss": "font-family: 'Inter', sans-serif; background: #121212; color: #CCCCCC; h1 { font-size: 32pt; font-weight: 700; color: #FFFFFF; background: #1A1A1A; padding: 16px; margin-bottom: 24px; } h2 { font-size: 18pt; font-weight: 700; color: #E0E0E0; margin-top: 32px; margin-bottom: 16px; } p { font-size: 11pt; line-height: 1.6; color: #CCCCCC; margin-bottom: 14px; }"
+}
+```
+
+## Troubleshooting
+
+- **Template not showing**: Check that the JSON is valid (use a JSON validator)
+- **Fonts not working**: Ensure the font is installed on your system
+- **Preview looks different from Word**: Adjust previewCss to match wordConfig
+- **Category not showing**: Make sure the folder contains at least one valid .json file
+
+Click **Refresh** in the app to reload templates without restarting!
diff --git a/src-tauri/capabilities/default.json b/src-tauri/capabilities/default.json
index ece6eb2..5797308 100644
--- a/src-tauri/capabilities/default.json
+++ b/src-tauri/capabilities/default.json
@@ -21,11 +21,45 @@
"fs:allow-mkdir",
"fs:allow-applocaldata-read",
"fs:allow-applocaldata-write",
+ "fs:allow-resource-read",
+ "fs:allow-resource-write",
+ "fs:allow-exe-read",
+ "fs:allow-exe-write",
"store:default",
- "store:allow-get",
- "store:allow-set",
- "store:allow-save",
- "store:allow-load",
+ "window-state:default",
+ "http:default",
+ "http:allow-fetch",
+ "shell:default",
+ "shell:allow-open",
+ "opener:default",
+ {
+ "identifier": "http:allow-fetch",
+ "allow": [
+ {
+ "url": "https://fonts.google.com/*"
+ },
+ {
+ "url": "https://github.com/*"
+ },
+ {
+ "url": "https://*.githubusercontent.com/*"
+ },
+ {
+ "url": "https://fonts.googleapis.com/*"
+ }
+ ]
+ },
+ {
+ "identifier": "shell:allow-open",
+ "allow": [
+ {
+ "url": "https://*"
+ },
+ {
+ "url": "http://*"
+ }
+ ]
+ },
{
"identifier": "fs:scope",
"allow": [
@@ -35,6 +69,18 @@
{
"path": "$EXE/../**"
},
+ {
+ "path": "$EXE/TypoGenie-Data/**"
+ },
+ {
+ "path": "$EXE/templates/**"
+ },
+ {
+ "path": "$APPLOCALDATA/**"
+ },
+ {
+ "path": "$RESOURCE/**"
+ },
{
"path": "$HOME"
},
diff --git a/src-tauri/src/lib.rs b/src-tauri/src/lib.rs
index b57ad54..3ecfc4d 100644
--- a/src-tauri/src/lib.rs
+++ b/src-tauri/src/lib.rs
@@ -1,17 +1,253 @@
use std::path::PathBuf;
-use tauri::{Manager, path::BaseDirectory};
+use std::fs;
+use tauri::{Manager, path::BaseDirectory, WindowEvent, PhysicalPosition, PhysicalSize};
+use serde::{Serialize, Deserialize};
-/// Gets the portable data directory (next to the executable)
-fn get_portable_data_dir(app: &tauri::App) -> PathBuf {
- // Get the directory where the EXE is located
- if let Ok(exe_dir) = app.path().resolve("", BaseDirectory::Executable) {
- let portable_dir = exe_dir.join("TypoGenie-Data");
- // Create the directory if it doesn't exist
- let _ = std::fs::create_dir_all(&portable_dir);
- portable_dir
+/// Templates directory name
+const TEMPLATES_DIR_NAME: &str = "templates";
+
+/// Template info for frontend
+#[derive(Serialize, Deserialize)]
+struct TemplateFile {
+ name: String,
+ content: String,
+ category: String, // Folder name (e.g., "academic", "corporate")
+}
+
+/// Debug command to check path resolution
+#[tauri::command]
+fn debug_paths(app: tauri::AppHandle) -> Result {
+ let mut output = String::new();
+
+ // Check executable directory using std::env (reliable)
+ let exe_dir = get_exe_dir(&app);
+ match exe_dir {
+ Some(ref p) => output.push_str(&format!("Executable dir (std::env): {:?}\n", p)),
+ None => output.push_str("Executable dir: failed to get\n"),
+ }
+
+ // Check resource directory
+ match app.path().resolve("", BaseDirectory::Resource) {
+ Ok(p) => output.push_str(&format!("Resource dir: {:?}\n", p)),
+ Err(e) => output.push_str(&format!("Resource dir error: {}\n", e)),
+ }
+
+ // Check if templates exist in exe location
+ if let Some(ref exe_dir) = exe_dir {
+ let templates_exe = exe_dir.join("templates");
+ output.push_str(&format!("Templates path ({:?}): exists={}\n", templates_exe, templates_exe.exists()));
+
+ if templates_exe.exists() {
+ match fs::read_dir(&templates_exe) {
+ Ok(entries) => {
+ output.push_str(" Contents:\n");
+ for entry in entries.flatten() {
+ output.push_str(&format!(" {:?}\n", entry.path()));
+ }
+ }
+ Err(e) => output.push_str(&format!(" Error reading: {}\n", e)),
+ }
+ }
+ }
+
+ Ok(output)
+}
+
+/// Get the absolute path to the templates directory
+#[tauri::command]
+fn get_templates_dir(app: tauri::AppHandle) -> Result {
+ let exe_dir = get_exe_dir(&app)
+ .ok_or("Failed to get executable directory")?;
+ let templates_dir = exe_dir.join("templates");
+ Ok(templates_dir.to_string_lossy().to_string())
+}
+
+/// Read all template files from the templates directory
+#[tauri::command]
+fn read_templates(app: tauri::AppHandle) -> Result, String> {
+ let exe_dir = get_exe_dir(&app)
+ .ok_or("Failed to get executable directory")?;
+ let templates_dir = exe_dir.join(TEMPLATES_DIR_NAME);
+
+ println!("Reading templates from: {:?}", templates_dir);
+
+ let mut templates = Vec::new();
+
+ if !templates_dir.exists() {
+ println!("Templates dir doesn't exist, trying to extract...");
+ // Try to extract templates first
+ extract_templates_on_first_run(&app)
+ .map_err(|e| format!("Failed to extract templates: {}", e))?;
+ }
+
+ if templates_dir.exists() {
+ println!("Templates dir exists, reading recursively...");
+ read_templates_recursive(&templates_dir, &mut templates, &templates_dir)
+ .map_err(|e| format!("Failed to read templates: {}", e))?;
+ println!("Found {} templates", templates.len());
} else {
- // Fallback to app data directory (shouldn't happen)
- app.path().app_data_dir().unwrap_or_else(|_| PathBuf::from("."))
+ println!("Templates dir still doesn't exist after extraction attempt");
+ }
+
+ Ok(templates)
+}
+
+/// Recursively read all .json template files
+fn read_templates_recursive(
+ dir: &PathBuf,
+ templates: &mut Vec,
+ base_dir: &PathBuf
+) -> Result<(), Box> {
+ for entry in fs::read_dir(dir)? {
+ let entry = entry?;
+ let path = entry.path();
+ let name = entry.file_name().to_string_lossy().to_string();
+
+ if path.is_dir() {
+ read_templates_recursive(&path, templates, base_dir)?;
+ } else if name.ends_with(".json") {
+ let content = fs::read_to_string(&path)?;
+ // Extract category from the relative path (folder name)
+ let category = path.parent()
+ .and_then(|p| p.strip_prefix(base_dir).ok())
+ .and_then(|p| p.components().next())
+ .map(|c| c.as_os_str().to_string_lossy().to_string())
+ .unwrap_or_else(|| "Other".to_string());
+
+ templates.push(TemplateFile { name, content, category });
+ }
+ }
+ Ok(())
+}
+
+/// Open the templates folder in file explorer
+#[tauri::command]
+fn open_templates_folder(app: tauri::AppHandle) -> Result<(), String> {
+ let exe_dir = get_exe_dir(&app)
+ .ok_or("Failed to get executable directory")?;
+ let templates_dir = exe_dir.join(TEMPLATES_DIR_NAME);
+
+ // Create if doesn't exist
+ if !templates_dir.exists() {
+ fs::create_dir_all(&templates_dir)
+ .map_err(|e| format!("Failed to create templates dir: {}", e))?;
+ }
+
+ // Open with default application using opener crate
+ opener::open(&templates_dir)
+ .map_err(|e| format!("Failed to open folder: {}", e))?;
+
+ Ok(())
+}
+
+/// Toggle DevTools for the main window
+#[tauri::command]
+fn toggle_devtools(app: tauri::AppHandle) -> Result {
+ if let Some(window) = app.get_webview_window("main") {
+ let is_open = window.is_devtools_open();
+
+ if is_open {
+ window.close_devtools();
+ } else {
+ window.open_devtools();
+ }
+
+ return Ok(!is_open);
+ }
+ Err("Main window not found".to_string())
+}
+
+/// Window state structure
+#[derive(Serialize, Deserialize, Debug, Default, Clone)]
+struct WindowState {
+ x: i32,
+ y: i32,
+ width: u32,
+ height: u32,
+ maximized: bool,
+}
+
+/// Gets the executable directory using std::env (more reliable than BaseDirectory::Executable on Windows)
+fn get_exe_dir(_app: &tauri::AppHandle) -> Option {
+ std::env::current_exe()
+ .ok()
+ .and_then(|p| p.parent().map(|p| p.to_path_buf()))
+}
+
+/// Extract bundled templates to the executable directory on first run
+fn extract_templates_on_first_run(app: &tauri::AppHandle) -> Result<(), Box> {
+ let exe_dir = get_exe_dir(app).ok_or("Failed to get executable directory")?;
+ let templates_target = exe_dir.join(TEMPLATES_DIR_NAME);
+
+ // Check if templates already exist (first run detection)
+ if templates_target.exists() {
+ return Ok(());
+ }
+
+ println!("First run detected. Extracting templates...");
+
+ // Get bundled templates resource path
+ let resource_path = app.path().resolve(TEMPLATES_DIR_NAME, BaseDirectory::Resource)?;
+
+ if !resource_path.exists() {
+ println!("Warning: Bundled templates not found at: {:?}", resource_path);
+ return Ok(());
+ }
+
+ // Create templates directory
+ fs::create_dir_all(&templates_target)?;
+
+ // Copy all template files recursively
+ copy_dir_recursive(&resource_path, &templates_target)?;
+
+ println!("Templates extracted successfully to: {:?}", templates_target);
+ Ok(())
+}
+
+/// Recursively copy directory contents
+fn copy_dir_recursive(src: &PathBuf, dst: &PathBuf) -> Result<(), Box> {
+ fs::create_dir_all(dst)?;
+
+ for entry in fs::read_dir(src)? {
+ let entry = entry?;
+ let path = entry.path();
+ let file_name = entry.file_name();
+ let dest_path = dst.join(&file_name);
+
+ if path.is_dir() {
+ copy_dir_recursive(&path, &dest_path)?;
+ } else {
+ fs::copy(&path, &dest_path)?;
+ }
+ }
+
+ Ok(())
+}
+
+/// Get the window state file path
+fn get_state_file_path(app: &tauri::AppHandle) -> PathBuf {
+ let exe_dir = get_exe_dir(app).unwrap_or_else(|| PathBuf::from("."));
+ exe_dir.join("window-state.json")
+}
+
+/// Load window state
+fn load_window_state(app: &tauri::AppHandle) -> Option {
+ let state_file = get_state_file_path(app);
+ if state_file.exists() {
+ if let Ok(data) = std::fs::read_to_string(&state_file) {
+ if let Ok(state) = serde_json::from_str::(&data) {
+ return Some(state);
+ }
+ }
+ }
+ None
+}
+
+/// Save window state
+fn save_window_state(app: &tauri::AppHandle, state: &WindowState) {
+ let state_file = get_state_file_path(app);
+ if let Ok(json) = serde_json::to_string(state) {
+ let _ = std::fs::write(&state_file, json);
}
}
@@ -21,39 +257,77 @@ pub fn run() {
.plugin(tauri_plugin_dialog::init())
.plugin(tauri_plugin_fs::init())
.plugin(tauri_plugin_store::Builder::default().build())
+ .plugin(tauri_plugin_http::init())
+ .plugin(tauri_plugin_shell::init())
+ .plugin(tauri_plugin_opener::init())
.setup(|app| {
- // Set up portable data directory
- let portable_dir = get_portable_data_dir(app);
- println!("Portable data directory: {:?}", portable_dir);
+ // Extract templates on first run
+ if let Err(e) = extract_templates_on_first_run(&app.handle()) {
+ eprintln!("Failed to extract templates: {}", e);
+ }
- // Store the portable path in app state for frontend access
- app.manage(PortableDataDir(portable_dir));
-
- // Show the main window after setup
+ // Load and apply window state BEFORE showing window
if let Some(window) = app.get_webview_window("main") {
+ if let Some(state) = load_window_state(&app.handle()) {
+ if state.maximized {
+ let _ = window.maximize();
+ } else {
+ let _ = window.set_size(tauri::Size::Physical(
+ PhysicalSize { width: state.width, height: state.height }
+ ));
+ let _ = window.set_position(tauri::Position::Physical(
+ PhysicalPosition { x: state.x, y: state.y }
+ ));
+ }
+ }
+
let _ = window.show();
let _ = window.set_focus();
}
- if cfg!(debug_assertions) {
- app.handle().plugin(
- tauri_plugin_log::Builder::default()
- .level(log::LevelFilter::Info)
- .build(),
- )?;
- }
Ok(())
})
- .invoke_handler(tauri::generate_handler![get_data_dir])
+ .on_window_event(|window, event| {
+ match event {
+ WindowEvent::Moved(position) => {
+ let app_handle = window.app_handle().clone();
+ let pos = *position;
+ let size = window.inner_size().unwrap_or(PhysicalSize { width: 1400, height: 900 });
+ let maximized = window.is_maximized().unwrap_or(false);
+
+ let state = WindowState {
+ x: pos.x,
+ y: pos.y,
+ width: size.width,
+ height: size.height,
+ maximized,
+ };
+ save_window_state(&app_handle, &state);
+ }
+ WindowEvent::Resized(size) => {
+ let app_handle = window.app_handle().clone();
+ let pos = window.outer_position().unwrap_or(PhysicalPosition { x: 0, y: 0 });
+ let maximized = window.is_maximized().unwrap_or(false);
+
+ let state = WindowState {
+ x: pos.x,
+ y: pos.y,
+ width: size.width,
+ height: size.height,
+ maximized,
+ };
+ save_window_state(&app_handle, &state);
+ }
+ _ => {}
+ }
+ })
+ .invoke_handler(tauri::generate_handler![
+ debug_paths,
+ get_templates_dir,
+ read_templates,
+ open_templates_folder,
+ toggle_devtools
+ ])
.run(tauri::generate_context!())
.expect("error while running tauri application");
}
-
-/// Structure to hold the portable data directory path
-struct PortableDataDir(PathBuf);
-
-/// Command to get the portable data directory from the frontend
-#[tauri::command]
-fn get_data_dir(state: tauri::State) -> String {
- state.0.to_string_lossy().to_string()
-}
diff --git a/src-tauri/tauri.conf.json b/src-tauri/tauri.conf.json
index f53119b..8793ff9 100644
--- a/src-tauri/tauri.conf.json
+++ b/src-tauri/tauri.conf.json
@@ -5,8 +5,6 @@
"identifier": "live.lashman.typogenie",
"build": {
"frontendDist": "../dist",
- "devUrl": "http://localhost:3000",
- "beforeDevCommand": "npm run dev",
"beforeBuildCommand": "npm run build"
},
"app": {
@@ -14,6 +12,7 @@
{
"label": "main",
"title": "TypoGenie",
+ "url": "index.html",
"width": 1400,
"height": 900,
"minWidth": 1000,
@@ -23,11 +22,14 @@
"center": true,
"decorations": true,
"transparent": false,
- "visible": false
+ "visible": false,
+ "dragDropEnabled": false,
+ "devtools": true
}
],
"security": {
- "csp": "default-src 'self'; connect-src 'self' https://fonts.googleapis.com https://fonts.gstatic.com; font-src 'self' https://fonts.gstatic.com; style-src 'self' 'unsafe-inline' https://fonts.googleapis.com; img-src 'self' data: blob:;"
+ "csp": "default-src 'self'; connect-src 'self' ipc: http://ipc.localhost https://fonts.googleapis.com https://fonts.gstatic.com https://github.com https://raw.githubusercontent.com https://fonts.google.com; font-src 'self' https://fonts.gstatic.com data:; style-src 'self' 'unsafe-inline' data: blob: https://fonts.googleapis.com; img-src 'self' data: blob:; script-src 'self' 'unsafe-inline'; frame-src 'self' blob: about:;",
+ "dangerousDisableAssetCspModification": true
}
},
"bundle": {
@@ -47,6 +49,9 @@
"copyright": "Copyright (c) 2026 TypoGenie Contributors",
"license": "MIT",
"homepage": "https://git.lashman.live/lashman/typogenie",
+ "resources": {
+ "templates": "templates"
+ },
"windows": {
"nsis": {
"installMode": "currentUser",
diff --git a/src-tauri/templates/README.md b/src-tauri/templates/README.md
new file mode 100644
index 0000000..de3094c
--- /dev/null
+++ b/src-tauri/templates/README.md
@@ -0,0 +1,110 @@
+# TypoGenie Templates
+
+This folder contains all the document style templates for TypoGenie. Templates are organized by category.
+
+## Creating Custom Templates
+
+You can create your own templates! Just create a JSON file with the following structure:
+
+```json
+{
+ "id": "my-custom-style",
+ "name": "My Custom Style",
+ "category": "Custom",
+ "description": "A brief description of this style",
+ "vibe": "Keywords describing the mood",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=YourFont:wght@400;700&display=swap",
+ "wordConfig": {
+ "heading1": {
+ "font": "Your Font",
+ "size": 28,
+ "color": "000000",
+ "bold": true,
+ "align": "left",
+ "spacing": { "before": 400, "after": 200, "line": 240 }
+ },
+ "heading2": {
+ "font": "Your Font",
+ "size": 14,
+ "color": "333333",
+ "bold": true,
+ "align": "left",
+ "spacing": { "before": 280, "after": 140, "line": 240 }
+ },
+ "body": {
+ "font": "Your Font",
+ "size": 11,
+ "color": "333333",
+ "align": "left",
+ "spacing": { "before": 0, "after": 180, "line": 300 }
+ },
+ "accentColor": "FF5733"
+ },
+ "previewCss": "font-family: 'Your Font', sans-serif; h1 { font-size: 28pt; font-weight: 700; color: #000; margin-bottom: 20px; }"
+}
+```
+
+## Template Structure
+
+### Required Fields
+
+- **id**: Unique identifier (lowercase, no spaces)
+- **name**: Display name for the UI
+- **category**: Category for grouping (e.g., "Minimalist", "Editorial", "Tech")
+- **description**: Short description shown in the UI
+- **vibe**: Keywords describing the style
+- **googleFontsImport**: URL to import fonts from Google Fonts
+- **wordConfig**: Configuration for Word document generation
+- **previewCss**: CSS for the preview pane
+
+### Word Config Options
+
+For each style (heading1, heading2, body):
+
+- **font**: Font family name (must match Google Fonts import)
+- **size**: Font size in points
+- **color**: Hex color without # (e.g., "000000")
+- **bold**: true/false
+- **italic**: true/false
+- **underline**: true/false
+- **allCaps**: true/false
+- **smallCaps**: true/false
+- **tracking**: Letter spacing in twips (1/20 of a point)
+- **align**: "left", "center", "right", "both" (justify)
+- **spacing**: Object with `before`, `after`, and `line` (all in twips)
+- **border**: Optional border configuration
+- **shading**: Optional background shading
+
+### Where to Place Templates
+
+#### For Personal Use (Recommended)
+Place templates in the user data folder:
+- Windows: `%APPDATA%/TypoGenie/TypoGenie-Data/templates/`
+- macOS: `~/Library/Application Support/TypoGenie/TypoGenie-Data/templates/`
+- Linux: `~/.config/TypoGenie/TypoGenie-Data/templates/`
+
+Or use the "Open Templates Folder" button in the app.
+
+#### For Distribution
+Place templates in this folder (src-tauri/templates/) organized by category subfolders, then rebuild the app.
+
+## Categories
+
+- **Core**: Essential versatile styles
+- **Minimalist**: Clean, simple designs
+- **Editorial**: Magazine and newspaper styles
+- **Corporate**: Business and professional
+- **Tech**: Technology and startup
+- **Creative**: Bold and artistic
+- **Vintage**: Retro and nostalgic
+- **Lifestyle**: Elegant and refined
+- **Academic**: Scholarly and formal
+- **Industrial**: Raw and utilitarian
+
+## Tips
+
+1. Test your template with various content types (headings, lists, code blocks, etc.)
+2. Ensure the Word config and preview CSS match for consistency
+3. Use web-safe fonts or Google Fonts for best compatibility
+4. Colors should be hex without the # prefix in wordConfig
+5. Colors should be hex WITH the # prefix in previewCss
diff --git a/src-tauri/templates/academic/academic-journal.json b/src-tauri/templates/academic/academic-journal.json
new file mode 100644
index 0000000..5333a7d
--- /dev/null
+++ b/src-tauri/templates/academic/academic-journal.json
@@ -0,0 +1,313 @@
+{
+ "id": "academic-journal",
+ "name": "Academic Journal",
+ "category": "Academic",
+ "description": "Prestigious journal aesthetic with high-contrast serifs. Designed for readability and authority, evoking the feel of established Ivy League publications.",
+ "vibe": "Prestigious, Authoritative, Classic",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Playfair+Display:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&family=EB+Garamond:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&family=JetBrains+Mono:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Playfair Display",
+ "body": "EB Garamond",
+ "code": "JetBrains Mono"
+ },
+ "colors": {
+ "text": "1A1A1A",
+ "textSecondary": "4A4A4A",
+ "background": "FFFCF9",
+ "accent": "8C1515",
+ "border": "E0E0E0",
+ "codeBg": "F2F2F2",
+ "blockquoteBorder": "8C1515"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 32,
+ "color": "text",
+ "bold": true,
+ "align": "center",
+ "spacing": {
+ "before": 36,
+ "after": 18,
+ "line": 1.1
+ }
+ },
+ "h2": {
+ "font": "heading",
+ "size": 20,
+ "color": "accent",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.2
+ },
+ "borderBottom": {
+ "color": "border",
+ "width": 1,
+ "style": "solid",
+ "space": 4
+ }
+ },
+ "h3": {
+ "font": "heading",
+ "size": 16,
+ "color": "text",
+ "bold": true,
+ "italic": true,
+ "align": "left",
+ "spacing": {
+ "before": 18,
+ "after": 9,
+ "line": 1.25
+ }
+ },
+ "h4": {
+ "font": "heading",
+ "size": 14,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.3
+ }
+ },
+ "h5": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 12,
+ "after": 6,
+ "line": 1.4
+ },
+ "allCaps": true
+ },
+ "h6": {
+ "font": "body",
+ "size": 11,
+ "color": "textSecondary",
+ "italic": true,
+ "align": "left",
+ "spacing": {
+ "before": 12,
+ "after": 6,
+ "line": 1.4
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "align": "justify",
+ "indent": 24,
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.6
+ }
+ },
+ "blockquote": {
+ "font": "heading",
+ "size": 14,
+ "color": "accent",
+ "italic": true,
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.4
+ },
+ "borderTop": {
+ "color": "accent",
+ "width": 1,
+ "style": "single",
+ "space": 12
+ },
+ "borderBottom": {
+ "color": "accent",
+ "width": 1,
+ "style": "single",
+ "space": 12
+ }
+ },
+ "code": {
+ "font": "code",
+ "size": 10,
+ "color": "text",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1
+ }
+ },
+ "pre": {
+ "font": "code",
+ "size": 10,
+ "color": "text",
+ "background": "codeBg",
+ "padding": 12,
+ "spacing": {
+ "before": 18,
+ "after": 18,
+ "line": 1.4
+ },
+ "borderLeft": {
+ "color": "accent",
+ "width": 3,
+ "style": "solid",
+ "space": 0
+ }
+ },
+ "ul": {
+ "spacing": {
+ "before": 12,
+ "after": 12,
+ "line": 1.6
+ },
+ "indent": 36,
+ "bullet": "disc"
+ },
+ "ol": {
+ "spacing": {
+ "before": 12,
+ "after": 12,
+ "line": 1.6
+ },
+ "indent": 36,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.6
+ }
+ },
+ "strong": {
+ "font": "body",
+ "bold": true
+ },
+ "em": {
+ "font": "body",
+ "italic": true
+ },
+ "a": {
+ "font": "body",
+ "color": "accent",
+ "underline": true
+ },
+ "table": {
+ "spacing": {
+ "before": 18,
+ "after": 18,
+ "line": 1.2
+ },
+ "borderTop": {
+ "color": "text",
+ "width": 2,
+ "style": "solid"
+ },
+ "borderBottom": {
+ "color": "text",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "heading",
+ "size": 11,
+ "color": "text",
+ "bold": true,
+ "background": "F9F9F9",
+ "padding": 8,
+ "borderBottom": {
+ "color": "text",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "td": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "padding": 8
+ },
+ "hr": {
+ "spacing": {
+ "before": 24,
+ "after": 24
+ },
+ "border": {
+ "color": "accent",
+ "width": 1,
+ "style": "doutble",
+ "space": 2
+ }
+ },
+ "img": {
+ "align": "center",
+ "spacing": {
+ "before": 18,
+ "after": 18
+ }
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true
+ },
+ "sup": {
+ "font": "body",
+ "size": 9,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 9,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "FCE8E8",
+ "color": "text"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "spacing": {
+ "before": 6,
+ "after": 6,
+ "line": 1.2
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 90,
+ "bottom": 90,
+ "left": 90,
+ "right": 90
+ },
+ "columns": 1,
+ "header": true,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/academic/arctic-base.json b/src-tauri/templates/academic/arctic-base.json
new file mode 100644
index 0000000..1d84ebe
--- /dev/null
+++ b/src-tauri/templates/academic/arctic-base.json
@@ -0,0 +1,309 @@
+{
+ "id": "arctic-base",
+ "name": "Arctic Base",
+ "category": "Scientific",
+ "description": "High-contrast, sterile design optimized for clarity in low-light environments. Technical typography with a crisp, cold aesthetic.",
+ "vibe": "Technical, Cold, Crisp",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Iceland:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&family=Inter:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&family=Jura:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Iceland",
+ "body": "Inter",
+ "code": "Jura"
+ },
+ "colors": {
+ "text": "002F6C",
+ "textSecondary": "01579B",
+ "background": "F0F8FF",
+ "accent": "0288D1",
+ "border": "B3E5FC",
+ "codeBg": "E1F5FE",
+ "blockquoteBorder": "0277BD"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 42,
+ "color": "text",
+ "bold": false,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.1
+ },
+ "borderBottom": {
+ "color": "accent",
+ "width": 4,
+ "style": "solid"
+ }
+ ,
+ "background": "E1F5FE",
+ "padding": 12
+ },
+ "h2": {
+ "font": "code",
+ "size": 24,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 20,
+ "after": 10,
+ "line": 1.2
+ },
+ "allCaps": true,
+ "borderLeft": {
+ "color": "accent",
+ "width": 6,
+ "style": "solid",
+ "space": 8
+ }
+ },
+ "h3": {
+ "font": "code",
+ "size": 18,
+ "color": "accent",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.2
+ }
+ },
+ "h4": {
+ "font": "code",
+ "size": 14,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 12,
+ "after": 6,
+ "line": 1.2
+ }
+ },
+ "h5": {
+ "font": "body",
+ "size": 12,
+ "color": "textSecondary",
+ "italic": true,
+ "align": "left",
+ "spacing": {
+ "before": 10,
+ "after": 5,
+ "line": 1.2
+ }
+ },
+ "h6": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "allCaps": true,
+ "align": "left",
+ "spacing": {
+ "before": 10,
+ "after": 5,
+ "line": 1.2
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "align": "left",
+ "spacing": {
+ "before": 0,
+ "after": 12,
+ "line": 1.6
+ }
+ },
+ "blockquote": {
+ "font": "code",
+ "size": 11,
+ "color": "textSecondary",
+ "italic": false,
+ "align": "left",
+ "spacing": {
+ "before": 12,
+ "after": 12,
+ "line": 1.5
+ },
+ "background": "E1F5FE",
+ "padding": 12,
+ "borderLeft": {
+ "color": "accent",
+ "width": 3,
+ "style": "solid"
+ }
+
+ },
+ "code": {
+ "font": "code",
+ "size": 10,
+ "color": "text",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.3
+ }
+ },
+ "pre": {
+ "font": "code",
+ "size": 10,
+ "color": "text",
+ "background": "codeBg",
+ "padding": 12,
+ "spacing": {
+ "before": 12,
+ "after": 12,
+ "line": 1.3
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "ul": {
+ "spacing": {
+ "before": 8,
+ "after": 8,
+ "line": 1.5
+ },
+ "indent": 20,
+ "bullet": "square"
+ },
+ "ol": {
+ "spacing": {
+ "before": 8,
+ "after": 8,
+ "line": 1.5
+ },
+ "indent": 20,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.5
+ }
+ },
+ "strong": {
+ "font": "body",
+ "bold": true
+ },
+ "em": {
+ "font": "body",
+ "italic": true
+ },
+ "a": {
+ "font": "body",
+ "color": "accent",
+ "underline": false
+ },
+ "table": {
+ "spacing": {
+ "before": 12,
+ "after": 12,
+ "line": 1.2
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "code",
+ "size": 10,
+ "color": "text",
+ "bold": true,
+ "background": "B3E5FC",
+ "padding": 8,
+ "borderBottom": {
+ "color": "accent",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "td": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "padding": 8,
+ "background": "F0F8FF"
+ },
+ "hr": {
+ "spacing": {
+ "before": 24,
+ "after": 24
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "img": {
+ "align": "center",
+ "spacing": {
+ "before": 12,
+ "after": 12
+ }
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true
+ },
+ "sup": {
+ "font": "body",
+ "size": 8,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 8,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "B3E5FC",
+ "color": "text"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 9,
+ "color": "textSecondary",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 9,
+ "color": "textSecondary",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.2
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 72,
+ "bottom": 72,
+ "left": 72,
+ "right": 72
+ },
+ "columns": 1,
+ "header": true,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/academic/botanical-textbook.json b/src-tauri/templates/academic/botanical-textbook.json
new file mode 100644
index 0000000..1a119fb
--- /dev/null
+++ b/src-tauri/templates/academic/botanical-textbook.json
@@ -0,0 +1,307 @@
+{
+ "id": "botanical-textbook",
+ "name": "Botanical Textbook",
+ "category": "Scientific",
+ "description": "Inspired by 19th-century flora guides. Elegant serif typography, earthy tones, and spacious formatting for biological descriptions.",
+ "vibe": "Vintage, Organic, Elegant",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Alice:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&family=Spectral:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&family=Cormorant+Garamond:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Alice",
+ "body": "Spectral",
+ "code": "Cormorant Garamond"
+ },
+ "colors": {
+ "text": "2E3B21",
+ "textSecondary": "5D4037",
+ "background": "FFFCF5",
+ "accent": "558B2F",
+ "border": "A1887F",
+ "codeBg": "F1F8E9",
+ "blockquoteBorder": "558B2F"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 36,
+ "color": "text",
+ "bold": false,
+ "align": "center",
+ "spacing": {
+ "before": 36,
+ "after": 18,
+ "line": 1.1
+ },
+ "borderBottom": {
+ "color": "accent",
+ "width": 4,
+ "style": "double",
+ "space": 3
+ }
+ },
+ "h2": {
+ "font": "heading",
+ "size": 22,
+ "color": "textSecondary",
+ "bold": false,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.2
+ },
+ "italic": true
+ },
+ "h3": {
+ "font": "heading",
+ "size": 18,
+ "color": "accent",
+ "bold": false,
+ "align": "left",
+ "spacing": {
+ "before": 18,
+ "after": 9,
+ "line": 1.2
+ }
+ },
+ "h4": {
+ "font": "body",
+ "size": 14,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.3
+ }
+ },
+ "h5": {
+ "font": "body",
+ "size": 12,
+ "color": "accent",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 12,
+ "after": 6,
+ "line": 1.4
+ },
+ "allCaps": true
+ },
+ "h6": {
+ "font": "body",
+ "size": 11,
+ "color": "textSecondary",
+ "italic": true,
+ "align": "left",
+ "spacing": {
+ "before": 12,
+ "after": 6,
+ "line": 1.4
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "align": "justify",
+ "indent": 24,
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.6
+ }
+ },
+ "blockquote": {
+ "font": "body",
+ "size": 11,
+ "color": "textSecondary",
+ "italic": true,
+ "align": "center",
+ "spacing": {
+ "before": 18,
+ "after": 18,
+ "line": 1.5
+ },
+ "padding": 12,
+ "borderTop": {
+ "color": "border",
+ "width": 1,
+ "style": "single"
+ },
+ "borderBottom": {
+ "color": "border",
+ "width": 1,
+ "style": "single"
+ }
+ },
+ "code": {
+ "font": "code",
+ "size": 11,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1
+ }
+ },
+ "pre": {
+ "font": "code",
+ "size": 10,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "padding": 12,
+ "spacing": {
+ "before": 12,
+ "after": 12,
+ "line": 1.4
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "dashed"
+ }
+ },
+ "ul": {
+ "spacing": {
+ "before": 12,
+ "after": 12,
+ "line": 1.6
+ },
+ "indent": 36,
+ "bullet": "disc"
+ },
+ "ol": {
+ "spacing": {
+ "before": 12,
+ "after": 12,
+ "line": 1.6
+ },
+ "indent": 36,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.6
+ }
+ },
+ "strong": {
+ "font": "body",
+ "bold": true
+ },
+ "em": {
+ "font": "body",
+ "italic": true
+ },
+ "a": {
+ "font": "body",
+ "color": "accent",
+ "underline": true,
+ "italic": true
+ },
+ "table": {
+ "spacing": {
+ "before": 18,
+ "after": 18,
+ "line": 1.2
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "single"
+ }
+ },
+ "th": {
+ "font": "heading",
+ "size": 11,
+ "color": "text",
+ "bold": false,
+ "background": "F1F8E9",
+ "padding": 8,
+ "borderBottom": {
+ "color": "accent",
+ "width": 2,
+ "style": "single"
+ }
+ },
+ "td": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "padding": 8
+ },
+ "hr": {
+ "spacing": {
+ "before": 24,
+ "after": 24
+ },
+ "border": {
+ "color": "accent",
+ "width": 2,
+ "style": "double",
+ "space": 3
+ }
+ },
+ "img": {
+ "align": "center",
+ "spacing": {
+ "before": 18,
+ "after": 18
+ }
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true
+ },
+ "sup": {
+ "font": "body",
+ "size": 9,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 9,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "DCEDC8",
+ "color": "text"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "spacing": {
+ "before": 6,
+ "after": 6,
+ "line": 1.2
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 80,
+ "bottom": 80,
+ "left": 80,
+ "right": 80
+ },
+ "columns": 1,
+ "header": true,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/academic/chemistry-lab.json b/src-tauri/templates/academic/chemistry-lab.json
new file mode 100644
index 0000000..d97f8da
--- /dev/null
+++ b/src-tauri/templates/academic/chemistry-lab.json
@@ -0,0 +1,309 @@
+{
+ "id": "chemistry-lab",
+ "name": "Chemistry Lab",
+ "category": "Scientific",
+ "description": "Lab manual aesthetic. Clean, structured layout with distinct sections for procedures, observations, and data. Modern sans-serif typography.",
+ "vibe": "Scientific, Structured, Geometric",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Barlow:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&family=Heebo:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&family=Roboto+Mono:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Barlow",
+ "body": "Heebo",
+ "code": "Roboto Mono"
+ },
+ "colors": {
+ "text": "263238",
+ "textSecondary": "546E7A",
+ "background": "FFFFFF",
+ "accent": "00ACC1",
+ "border": "B2EBF2",
+ "codeBg": "E0F7FA",
+ "blockquoteBorder": "00ACC1"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 28,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "allCaps": true,
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.1
+ },
+ "borderBottom": {
+ "color": "accent",
+ "width": 4,
+ "style": "solid"
+ }
+ },
+ "h2": {
+ "font": "heading",
+ "size": 18,
+ "color": "accent",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 20,
+ "after": 10,
+ "line": 1.2
+ },
+ "background": "codeBg",
+ "padding": 8,
+ "borderLeft": {
+ "color": "textSecondary",
+ "width": 4,
+ "style": "solid"
+ }
+
+ },
+ "h3": {
+ "font": "heading",
+ "size": 14,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.25
+ }
+ },
+ "h4": {
+ "font": "heading",
+ "size": 12,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 12,
+ "after": 6,
+ "line": 1.3
+ },
+ "allCaps": true
+ },
+ "h5": {
+ "font": "body",
+ "size": 11,
+ "color": "accent",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 10,
+ "after": 5,
+ "line": 1.4
+ }
+ },
+ "h6": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "italic": true,
+ "align": "left",
+ "spacing": {
+ "before": 10,
+ "after": 5,
+ "line": 1.4
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "align": "left",
+ "spacing": {
+ "before": 0,
+ "after": 10,
+ "line": 1.5
+ }
+ },
+ "blockquote": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "italic": false,
+ "align": "left",
+ "spacing": {
+ "before": 12,
+ "after": 12,
+ "line": 1.5
+ },
+ "padding": 12,
+ "border": {
+ "color": "accent",
+ "width": 1,
+ "style": "solid"
+ },
+ "background": "codeBg",
+ "borderRadius": 4
+ },
+ "code": {
+ "font": "code",
+ "size": 10,
+ "color": "text",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.3
+ }
+ },
+ "pre": {
+ "font": "code",
+ "size": 9.5,
+ "color": "text",
+ "background": "codeBg",
+ "padding": 12,
+ "spacing": {
+ "before": 12,
+ "after": 12,
+ "line": 1.3
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ },
+ "borderRadius": 4
+ },
+ "ul": {
+ "spacing": {
+ "before": 8,
+ "after": 8,
+ "line": 1.5
+ },
+ "indent": 20,
+ "bullet": "disc"
+ },
+ "ol": {
+ "spacing": {
+ "before": 8,
+ "after": 8,
+ "line": 1.5
+ },
+ "indent": 20,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.5
+ }
+ },
+ "strong": {
+ "font": "body",
+ "bold": true
+ },
+ "em": {
+ "font": "body",
+ "italic": true
+ },
+ "a": {
+ "font": "body",
+ "color": "accent",
+ "underline": true
+ },
+ "table": {
+ "spacing": {
+ "before": 12,
+ "after": 12,
+ "line": 1.2
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "heading",
+ "size": 10,
+ "color": "text",
+ "bold": true,
+ "background": "B2EBF2",
+ "padding": 8,
+ "borderBottom": {
+ "color": "accent",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "td": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "padding": 8
+ },
+ "hr": {
+ "spacing": {
+ "before": 18,
+ "after": 18
+ },
+ "border": {
+ "color": "accent",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "img": {
+ "align": "center",
+ "spacing": {
+ "before": 12,
+ "after": 12
+ }
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true
+ },
+ "sup": {
+ "font": "body",
+ "size": 8,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 8,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "FFECB3",
+ "color": "text"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 9,
+ "color": "textSecondary",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 9,
+ "color": "textSecondary",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.2
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 72,
+ "bottom": 72,
+ "left": 72,
+ "right": 72
+ },
+ "columns": 1,
+ "header": true,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/academic/dark-academia.json b/src-tauri/templates/academic/dark-academia.json
new file mode 100644
index 0000000..ba5b980
--- /dev/null
+++ b/src-tauri/templates/academic/dark-academia.json
@@ -0,0 +1,304 @@
+{
+ "id": "dark-academia",
+ "name": "Dark Academia",
+ "category": "Academic",
+ "description": "Moody, sophisticated aesthetic inspired by old libraries and tweed. Rich serif typography with oxblood accents.",
+ "vibe": "Moody, Literary, Scholars",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Cinzel:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&family=EB+Garamond:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&family=Cutive+Mono:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Cinzel",
+ "body": "EB Garamond",
+ "code": "Cutive Mono"
+ },
+ "colors": {
+ "text": "212121",
+ "textSecondary": "424242",
+ "background": "F0F0EB",
+ "accent": "4A1414",
+ "border": "757575",
+ "codeBg": "E0E0E0",
+ "blockquoteBorder": "4A1414"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 32,
+ "color": "text",
+ "bold": true,
+ "align": "center",
+ "spacing": {
+ "before": 36,
+ "after": 18,
+ "line": 1.1
+ },
+ "borderBottom": {
+ "color": "accent",
+ "width": 2,
+ "style": "solid",
+ "space": 5
+ }
+ },
+ "h2": {
+ "font": "heading",
+ "size": 20,
+ "color": "accent",
+ "bold": false,
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.2
+ },
+ "background": "EAE6DF",
+ "padding": 8
+ },
+ "h3": {
+ "font": "heading",
+ "size": 16,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 18,
+ "after": 9,
+ "line": 1.2
+ }
+ },
+ "h4": {
+ "font": "body",
+ "size": 14,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.3
+ },
+ "italic": true
+ },
+ "h5": {
+ "font": "body",
+ "size": 12,
+ "color": "accent",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 12,
+ "after": 6,
+ "line": 1.4
+ },
+ "allCaps": true
+ },
+ "h6": {
+ "font": "body",
+ "size": 11,
+ "color": "textSecondary",
+ "italic": true,
+ "align": "left",
+ "spacing": {
+ "before": 12,
+ "after": 6,
+ "line": 1.4
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "align": "justify",
+ "indent": 24,
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.6
+ }
+ },
+ "blockquote": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "italic": true,
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.6
+ },
+ "padding": 0,
+ "borderLeft": {
+ "color": "accent",
+ "width": 3,
+ "style": "solid"
+ },
+ "background": "transparent"
+ },
+ "code": {
+ "font": "code",
+ "size": 10,
+ "color": "text",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.3
+ }
+ },
+ "pre": {
+ "font": "code",
+ "size": 10,
+ "color": "text",
+ "background": "codeBg",
+ "padding": 12,
+ "spacing": {
+ "before": 12,
+ "after": 12,
+ "line": 1.3
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "ul": {
+ "spacing": {
+ "before": 12,
+ "after": 12,
+ "line": 1.6
+ },
+ "indent": 48,
+ "bullet": "disc"
+ },
+ "ol": {
+ "spacing": {
+ "before": 12,
+ "after": 12,
+ "line": 1.6
+ },
+ "indent": 48,
+ "numbering": "upper-roman"
+ },
+ "li": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.6
+ }
+ },
+ "strong": {
+ "font": "body",
+ "bold": true
+ },
+ "em": {
+ "font": "body",
+ "italic": true
+ },
+ "a": {
+ "font": "body",
+ "color": "accent",
+ "underline": false,
+ "bold": true
+ },
+ "table": {
+ "spacing": {
+ "before": 18,
+ "after": 18,
+ "line": 1.2
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "heading",
+ "size": 11,
+ "color": "text",
+ "bold": true,
+ "background": "D7CCC8",
+ "padding": 8,
+ "borderBottom": {
+ "color": "text",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "td": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "padding": 8
+ },
+ "hr": {
+ "spacing": {
+ "before": 24,
+ "after": 24
+ },
+ "border": {
+ "color": "accent",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "img": {
+ "align": "center",
+ "spacing": {
+ "before": 18,
+ "after": 18
+ }
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true
+ },
+ "sup": {
+ "font": "body",
+ "size": 9,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 9,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "EFEBE9",
+ "color": "text"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "spacing": {
+ "before": 6,
+ "after": 6,
+ "line": 1.2
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 90,
+ "bottom": 90,
+ "left": 90,
+ "right": 90
+ },
+ "columns": 1,
+ "header": true,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/academic/education-friendly.json b/src-tauri/templates/academic/education-friendly.json
new file mode 100644
index 0000000..c5c9ffa
--- /dev/null
+++ b/src-tauri/templates/academic/education-friendly.json
@@ -0,0 +1,303 @@
+{
+ "id": "education-friendly",
+ "name": "Education Friendly",
+ "category": "Education",
+ "description": "Designed for maximum accessibility and readability. Uses fonts and spacing strategies proven to help with dyslexia and reading proficiency.",
+ "vibe": "Accessible, Clear, Inclusive",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Lexend:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&family=Atkinson+Hyperlegible:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Lexend",
+ "body": "Lexend",
+ "code": "Atkinson Hyperlegible"
+ },
+ "colors": {
+ "text": "212121",
+ "textSecondary": "424242",
+ "background": "FAF9F6",
+ "accent": "0057D9",
+ "border": "BDBDBD",
+ "codeBg": "F5F5F5",
+ "blockquoteBorder": "0057D9"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 32,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 16,
+ "line": 1.3
+ },
+ "background": "E3F2FD",
+ "padding": 12,
+ "borderRadius": 8
+ },
+ "h2": {
+ "font": "heading",
+ "size": 24,
+ "color": "accent",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 20,
+ "after": 12,
+ "line": 1.3
+ },
+ "borderBottom": {
+ "color": "textSecondary",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "h3": {
+ "font": "heading",
+ "size": 20,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 10,
+ "line": 1.3
+ }
+ },
+ "h4": {
+ "font": "heading",
+ "size": 18,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 14,
+ "after": 8,
+ "line": 1.3
+ }
+ },
+ "h5": {
+ "font": "body",
+ "size": 16,
+ "color": "accent",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 12,
+ "after": 6,
+ "line": 1.4
+ }
+ },
+ "h6": {
+ "font": "body",
+ "size": 14,
+ "color": "textSecondary",
+ "italic": true,
+ "align": "left",
+ "spacing": {
+ "before": 12,
+ "after": 6,
+ "line": 1.4
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 16,
+ "color": "text",
+ "align": "left",
+ "spacing": {
+ "before": 0,
+ "after": 16,
+ "line": 1.75
+ }
+ },
+ "blockquote": {
+ "font": "body",
+ "size": 16,
+ "color": "textSecondary",
+ "italic": false,
+ "align": "left",
+ "spacing": {
+ "before": 20,
+ "after": 20,
+ "line": 1.6
+ },
+ "padding": 20,
+ "borderLeft": {
+ "color": "accent",
+ "width": 6,
+ "style": "solid"
+ },
+ "background": "codeBg",
+ "borderRadius": 8
+ },
+ "code": {
+ "font": "code",
+ "size": 14,
+ "color": "text",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.4
+ }
+ },
+ "pre": {
+ "font": "code",
+ "size": 14,
+ "color": "text",
+ "background": "codeBg",
+ "padding": 16,
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.4
+ },
+ "border": {
+ "color": "border",
+ "width": 2,
+ "style": "solid"
+ },
+ "borderRadius": 8
+ },
+ "ul": {
+ "spacing": {
+ "before": 12,
+ "after": 12,
+ "line": 1.8
+ },
+ "indent": 24,
+ "bullet": "disc"
+ },
+ "ol": {
+ "spacing": {
+ "before": 12,
+ "after": 12,
+ "line": 1.8
+ },
+ "indent": 24,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 16,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.8
+ }
+ },
+ "strong": {
+ "font": "heading",
+ "bold": true
+ },
+ "em": {
+ "font": "body",
+ "italic": true
+ },
+ "a": {
+ "font": "heading",
+ "color": "accent",
+ "underline": true,
+ "bold": true
+ },
+ "table": {
+ "spacing": {
+ "before": 20,
+ "after": 20,
+ "line": 1.4
+ },
+ "border": {
+ "color": "text",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "heading",
+ "size": 14,
+ "color": "text",
+ "bold": true,
+ "background": "E3F2FD",
+ "padding": 12,
+ "borderBottom": {
+ "color": "text",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "td": {
+ "font": "body",
+ "size": 14,
+ "color": "text",
+ "padding": 12
+ },
+ "hr": {
+ "spacing": {
+ "before": 32,
+ "after": 32
+ },
+ "border": {
+ "color": "textSecondary",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "img": {
+ "align": "left",
+ "spacing": {
+ "before": 20,
+ "after": 20
+ }
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true
+ },
+ "sup": {
+ "font": "body",
+ "size": 10,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 10,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "FFF9C4",
+ "color": "text"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 12,
+ "color": "textSecondary",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 12,
+ "color": "textSecondary",
+ "spacing": {
+ "before": 8,
+ "after": 8,
+ "line": 1.4
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 72,
+ "bottom": 72,
+ "left": 72,
+ "right": 72
+ },
+ "columns": 1,
+ "header": true,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/academic/emergency-room.json b/src-tauri/templates/academic/emergency-room.json
new file mode 100644
index 0000000..216c454
--- /dev/null
+++ b/src-tauri/templates/academic/emergency-room.json
@@ -0,0 +1,318 @@
+{
+ "id": "emergency-room",
+ "name": "Emergency Room",
+ "category": "Healthcare",
+ "description": "High-urgency design for critical information. Uses international standard colors and high-legibility typefaces for maximum clarity in stressful environments.",
+ "vibe": "Urgent, High-Contrast, Critical",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Inter:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&family=Public+Sans:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&family=JetBrains+Mono:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Inter",
+ "body": "Public Sans",
+ "code": "JetBrains Mono"
+ },
+ "colors": {
+ "text": "212121",
+ "textSecondary": "37474F",
+ "background": "FFFFFF",
+ "accent": "D32F2F",
+ "border": "B71C1C",
+ "codeBg": "FFEBEE",
+ "blockquoteBorder": "D32F2F"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 42,
+ "color": "accent",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.1
+ },
+ "allCaps": true,
+ "borderBottom": {
+ "color": "accent",
+ "width": 8,
+ "style": "solid"
+ }
+ ,
+ "background": "FFEBEE",
+ "padding": 16
+ },
+ "h2": {
+ "font": "heading",
+ "size": 24,
+ "color": "212121",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 20,
+ "after": 10,
+ "line": 1.2
+ },
+ "background": "212121",
+ "color": "FFFFFF",
+ "padding": 8,
+ "allCaps": true
+ },
+ "h3": {
+ "font": "heading",
+ "size": 18,
+ "color": "accent",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.3
+ },
+ "borderLeft": {
+ "color": "accent",
+ "width": 8,
+ "style": "solid"
+ }
+ ,
+ "padding": 8
+ },
+ "h4": {
+ "font": "heading",
+ "size": 16,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 14,
+ "after": 6,
+ "line": 1.3
+ },
+ "allCaps": true
+ },
+ "h5": {
+ "font": "body",
+ "size": 14,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 12,
+ "after": 6,
+ "line": 1.4
+ }
+ },
+ "h6": {
+ "font": "body",
+ "size": 12,
+ "color": "textSecondary",
+ "italic": true,
+ "align": "left",
+ "spacing": {
+ "before": 12,
+ "after": 6,
+ "line": 1.4
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 14,
+ "color": "text",
+ "align": "left",
+ "spacing": {
+ "before": 0,
+ "after": 12,
+ "line": 1.5
+ },
+ "weight": 500
+ },
+ "blockquote": {
+ "font": "heading",
+ "size": 14,
+ "color": "accent",
+ "bold": true,
+ "align": "center",
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.4
+ },
+ "padding": 20,
+ "border": {
+ "color": "accent",
+ "width": 4,
+ "style": "solid"
+ },
+ "background": "FFEBEE"
+ },
+ "code": {
+ "font": "code",
+ "size": 12,
+ "color": "text",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.4
+ }
+ },
+ "pre": {
+ "font": "code",
+ "size": 12,
+ "color": "text",
+ "background": "codeBg",
+ "padding": 12,
+ "spacing": {
+ "before": 12,
+ "after": 12,
+ "line": 1.4
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "ul": {
+ "spacing": {
+ "before": 8,
+ "after": 8,
+ "line": 1.5
+ },
+ "indent": 24,
+ "bullet": "square"
+ },
+ "ol": {
+ "spacing": {
+ "before": 8,
+ "after": 8,
+ "line": 1.5
+ },
+ "indent": 24,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 14,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.5
+ },
+ "bold": true
+ },
+ "strong": {
+ "font": "heading",
+ "bold": true,
+ "color": "accent"
+ },
+ "em": {
+ "font": "body",
+ "italic": true
+ },
+ "a": {
+ "font": "body",
+ "color": "0D47A1",
+ "underline": true,
+ "bold": true
+ },
+ "table": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.3
+ },
+ "border": {
+ "color": "212121",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "heading",
+ "size": 12,
+ "color": "FFFFFF",
+ "bold": true,
+ "background": "212121",
+ "padding": 10,
+ "allCaps": true
+ },
+ "td": {
+ "font": "body",
+ "size": 12,
+ "color": "212121",
+ "padding": 10,
+ "borderBottom": {
+ "color": "BDBDBD",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 24,
+ "after": 24
+ },
+ "border": {
+ "color": "accent",
+ "width": 4,
+ "style": "double"
+ }
+ },
+ "img": {
+ "align": "center",
+ "spacing": {
+ "before": 16,
+ "after": 16
+ }
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true
+ },
+ "sup": {
+ "font": "body",
+ "size": 10,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 10,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "FFEA00",
+ "color": "text"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 11,
+ "color": "textSecondary",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 11,
+ "color": "textSecondary",
+ "spacing": {
+ "before": 6,
+ "after": 6,
+ "line": 1.3
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 54,
+ "bottom": 54,
+ "left": 54,
+ "right": 54
+ },
+ "columns": 1,
+ "header": true,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/academic/furniture-manual.json b/src-tauri/templates/academic/furniture-manual.json
new file mode 100644
index 0000000..e6a19f6
--- /dev/null
+++ b/src-tauri/templates/academic/furniture-manual.json
@@ -0,0 +1,306 @@
+{
+ "id": "furniture-manual",
+ "name": "Furniture Manual",
+ "category": "Instructional",
+ "description": "Inspired by Swedish flat-pack instructions. Minimalist, mostly visual, with neutral sans-serif typography.",
+ "vibe": "Minimalist, Instructional, Neutral",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Inter:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&family=Noto+Sans:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&family=Roboto+Mono:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Inter",
+ "body": "Noto Sans",
+ "code": "Roboto Mono"
+ },
+ "colors": {
+ "text": "111111",
+ "textSecondary": "666666",
+ "background": "FFFFFF",
+ "accent": "FF6D00",
+ "border": "E0E0E0",
+ "codeBg": "F5F5F5",
+ "blockquoteBorder": "111111"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 32,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.1
+ },
+ "allCaps": false
+ },
+ "h2": {
+ "font": "heading",
+ "size": 18,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 20,
+ "after": 10,
+ "line": 1.2
+ },
+ "borderBottom": {
+ "color": "text",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "h3": {
+ "font": "heading",
+ "size": 15,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.2
+ }
+ },
+ "h4": {
+ "font": "body",
+ "size": 13,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 12,
+ "after": 6,
+ "line": 1.3
+ },
+ "allCaps": true
+ },
+ "h5": {
+ "font": "body",
+ "size": 12,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 10,
+ "after": 4,
+ "line": 1.3
+ }
+ },
+ "h6": {
+ "font": "body",
+ "size": 11,
+ "color": "textSecondary",
+ "italic": true,
+ "align": "left",
+ "spacing": {
+ "before": 10,
+ "after": 4,
+ "line": 1.3
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 13,
+ "color": "text",
+ "align": "left",
+ "spacing": {
+ "before": 0,
+ "after": 12,
+ "line": 1.5
+ },
+ "weight": 400
+ },
+ "blockquote": {
+ "font": "heading",
+ "size": 13,
+ "color": "text",
+ "align": "center",
+ "spacing": {
+ "before": 20,
+ "after": 20,
+ "line": 1.4
+ },
+ "padding": 24,
+ "border": {
+ "color": "text",
+ "width": 3,
+ "style": "solid"
+ },
+ "borderRadius": 50,
+ "background": "FFFFFF"
+ },
+ "code": {
+ "font": "code",
+ "size": 11,
+ "color": "text",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.4
+ }
+ },
+ "pre": {
+ "font": "code",
+ "size": 11,
+ "color": "text",
+ "background": "codeBg",
+ "padding": 12,
+ "spacing": {
+ "before": 12,
+ "after": 12,
+ "line": 1.4
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "ul": {
+ "spacing": {
+ "before": 12,
+ "after": 12,
+ "line": 1.5
+ },
+ "indent": 24,
+ "bullet": "square"
+ },
+ "ol": {
+ "spacing": {
+ "before": 12,
+ "after": 12,
+ "line": 1.5
+ },
+ "indent": 24,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 13,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.5
+ }
+ },
+ "strong": {
+ "font": "heading",
+ "bold": true
+ },
+ "em": {
+ "font": "body",
+ "italic": true
+ },
+ "a": {
+ "font": "body",
+ "color": "accent",
+ "underline": true,
+ "bold": true
+ },
+ "table": {
+ "spacing": {
+ "before": 20,
+ "after": 20,
+ "line": 1.3
+ },
+ "border": {
+ "color": "border",
+ "width": 0,
+ "style": "none"
+ }
+ },
+ "th": {
+ "font": "heading",
+ "size": 12,
+ "color": "text",
+ "bold": true,
+ "background": "F5F5F5",
+ "padding": 12,
+ "borderBottom": {
+ "color": "text",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "td": {
+ "font": "body",
+ "size": 13,
+ "color": "text",
+ "padding": 12,
+ "borderBottom": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 30,
+ "after": 30
+ },
+ "border": {
+ "color": "border",
+ "width": 2,
+ "style": "dashed"
+ }
+ },
+ "img": {
+ "align": "center",
+ "spacing": {
+ "before": 20,
+ "after": 20
+ }
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true
+ },
+ "sup": {
+ "font": "body",
+ "size": 10,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 10,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "FFCCBC",
+ "color": "text"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 11,
+ "color": "textSecondary",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 11,
+ "color": "textSecondary",
+ "spacing": {
+ "before": 6,
+ "after": 6,
+ "line": 1.3
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 54,
+ "bottom": 54,
+ "left": 54,
+ "right": 54
+ },
+ "columns": 1,
+ "header": false,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/academic/history-textbook.json b/src-tauri/templates/academic/history-textbook.json
new file mode 100644
index 0000000..0b8253b
--- /dev/null
+++ b/src-tauri/templates/academic/history-textbook.json
@@ -0,0 +1,314 @@
+{
+ "id": "history-textbook",
+ "name": "History Textbook",
+ "category": "Academic",
+ "description": "Evocative of 18th-century treatises. Caslon-inspired serifs, deep margins, and a sense of gravity and time.",
+ "vibe": "Historical, Classic, Serif",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=IM+Fell+English+SC:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&family=Crimson+Text:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&family=Metamorphous:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "IM Fell English SC",
+ "body": "Crimson Text",
+ "code": "Metamorphous"
+ },
+ "colors": {
+ "text": "2D241E",
+ "textSecondary": "4E342E",
+ "background": "FDFBF7",
+ "accent": "8D1C1C",
+ "border": "BCAAA4",
+ "codeBg": "F5F1E8",
+ "blockquoteBorder": "8D1C1C"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 36,
+ "color": "text",
+ "bold": false,
+ "align": "center",
+ "spacing": {
+ "before": 36,
+ "after": 18,
+ "line": 1.0
+ },
+ "borderBottom": {
+ "color": "text",
+ "width": 1,
+ "style": "solid",
+ "space": 4
+ }
+ },
+ "h2": {
+ "font": "heading",
+ "size": 24,
+ "color": "accent",
+ "bold": false,
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.2
+ },
+ "italic": false
+ },
+ "h3": {
+ "font": "body",
+ "size": 18,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 18,
+ "after": 9,
+ "line": 1.2
+ },
+ "italic": true
+ },
+ "h4": {
+ "font": "body",
+ "size": 14,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.3
+ },
+ "allCaps": true
+ },
+ "h5": {
+ "font": "body",
+ "size": 12,
+ "color": "accent",
+ "bold": false,
+ "align": "left",
+ "spacing": {
+ "before": 12,
+ "after": 6,
+ "line": 1.4
+ },
+ "italic": true
+ },
+ "h6": {
+ "font": "body",
+ "size": 11,
+ "color": "textSecondary",
+ "italic": true,
+ "align": "left",
+ "spacing": {
+ "before": 12,
+ "after": 6,
+ "line": 1.4
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 13,
+ "color": "text",
+ "align": "justify",
+ "indent": 24,
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.5
+ }
+ },
+ "blockquote": {
+ "font": "body",
+ "size": 12,
+ "color": "textSecondary",
+ "italic": true,
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.5
+ },
+ "padding": 20,
+ "borderTop": {
+ "color": "border",
+ "width": 1,
+ "style": "single"
+ },
+ "borderBottom": {
+ "color": "border",
+ "width": 1,
+ "style": "single"
+ },
+ "background": "codeBg"
+ },
+ "code": {
+ "font": "code",
+ "size": 11,
+ "color": "text",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.3
+ }
+ },
+ "pre": {
+ "font": "code",
+ "size": 10,
+ "color": "text",
+ "background": "codeBg",
+ "padding": 12,
+ "spacing": {
+ "before": 12,
+ "after": 12,
+ "line": 1.4
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "ul": {
+ "spacing": {
+ "before": 12,
+ "after": 12,
+ "line": 1.5
+ },
+ "indent": 36,
+ "bullet": "disc"
+ },
+ "ol": {
+ "spacing": {
+ "before": 12,
+ "after": 12,
+ "line": 1.5
+ },
+ "indent": 36,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 13,
+ "color": "text",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.5
+ }
+ },
+ "strong": {
+ "font": "body",
+ "bold": true
+ },
+ "em": {
+ "font": "body",
+ "italic": true
+ },
+ "a": {
+ "font": "body",
+ "color": "accent",
+ "underline": true,
+ "italic": true
+ },
+ "table": {
+ "spacing": {
+ "before": 18,
+ "after": 18,
+ "line": 1.2
+ },
+ "borderTop": {
+ "color": "text",
+ "width": 2,
+ "style": "double"
+ },
+ "borderBottom": {
+ "color": "text",
+ "width": 2,
+ "style": "double"
+ }
+ },
+ "th": {
+ "font": "heading",
+ "size": 11,
+ "color": "text",
+ "bold": false,
+ "background": "F5F1E8",
+ "padding": 8,
+ "borderBottom": {
+ "color": "text",
+ "width": 1,
+ "style": "single"
+ }
+ },
+ "td": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "padding": 8
+ },
+ "hr": {
+ "spacing": {
+ "before": 36,
+ "after": 36
+ },
+ "border": {
+ "color": "text",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "img": {
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 24
+ }
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true
+ },
+ "sup": {
+ "font": "body",
+ "size": 9,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 9,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "E6DOD3",
+ "color": "text"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "spacing": {
+ "before": 6,
+ "after": 6,
+ "line": 1.2
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 90,
+ "bottom": 90,
+ "left": 90,
+ "right": 90
+ },
+ "columns": 1,
+ "header": true,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/academic/kids-education.json b/src-tauri/templates/academic/kids-education.json
new file mode 100644
index 0000000..eaaf5d3
--- /dev/null
+++ b/src-tauri/templates/academic/kids-education.json
@@ -0,0 +1,307 @@
+{
+ "id": "kids-education",
+ "name": "Kids Education",
+ "category": "Education",
+ "description": "Playful, colorful, and big. Great for worksheets, stories, and classroom activities. Sticker-book aesthetic.",
+ "vibe": "Playful, Colorful, Fun",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Fredoka+One:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&family=Comic+Neue:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&family=Kosugi+Maru:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Fredoka One",
+ "body": "Comic Neue",
+ "code": "Kosugi Maru"
+ },
+ "colors": {
+ "text": "2C3E50",
+ "textSecondary": "5D4037",
+ "background": "FFFDF5",
+ "accent": "FF6B6B",
+ "border": "4ECDC4",
+ "codeBg": "FFE66D",
+ "blockquoteBorder": "FF6B6B"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 42,
+ "color": "accent",
+ "bold": false,
+ "align": "center",
+ "spacing": {
+ "before": 32,
+ "after": 16,
+ "line": 1.1
+ },
+ "background": "FFF9C4",
+ "padding": 16,
+ "borderRadius": 20,
+ "border": {
+ "color": "border",
+ "width": 4,
+ "style": "dashed"
+ }
+ },
+ "h2": {
+ "font": "heading",
+ "size": 28,
+ "color": "4ECDC4",
+ "bold": false,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.2
+ },
+ "allCaps": true
+ },
+ "h3": {
+ "font": "heading",
+ "size": 22,
+ "color": "textSecondary",
+ "bold": false,
+ "align": "left",
+ "spacing": {
+ "before": 20,
+ "after": 10,
+ "line": 1.2
+ }
+ },
+ "h4": {
+ "font": "heading",
+ "size": 18,
+ "color": "text",
+ "bold": false,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.3
+ },
+ "background": "F0F0F0",
+ "padding": 8,
+ "borderRadius": 10
+ },
+ "h5": {
+ "font": "heading",
+ "size": 16,
+ "color": "accent",
+ "bold": false,
+ "align": "left",
+ "spacing": {
+ "before": 14,
+ "after": 6,
+ "line": 1.3
+ }
+ },
+ "h6": {
+ "font": "body",
+ "size": 14,
+ "color": "textSecondary",
+ "italic": true,
+ "align": "left",
+ "spacing": {
+ "before": 14,
+ "after": 6,
+ "line": 1.3
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 16,
+ "color": "text",
+ "align": "left",
+ "spacing": {
+ "before": 0,
+ "after": 12,
+ "line": 1.6
+ },
+ "weight": 700
+ },
+ "blockquote": {
+ "font": "body",
+ "size": 16,
+ "color": "text",
+ "italic": true,
+ "align": "center",
+ "spacing": {
+ "before": 20,
+ "after": 20,
+ "line": 1.5
+ },
+ "padding": 20,
+ "border": {
+ "color": "blockquoteBorder",
+ "width": 4,
+ "style": "dotted"
+ },
+ "background": "E0F2F1",
+ "borderRadius": 16
+ },
+ "code": {
+ "font": "code",
+ "size": 14,
+ "color": "text",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.4
+ }
+ },
+ "pre": {
+ "font": "code",
+ "size": 14,
+ "color": "text",
+ "background": "codeBg",
+ "padding": 16,
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.4
+ },
+ "border": {
+ "color": "text",
+ "width": 3,
+ "style": "solid"
+ },
+ "borderRadius": 12
+ },
+ "ul": {
+ "spacing": {
+ "before": 12,
+ "after": 12,
+ "line": 1.6
+ },
+ "indent": 32,
+ "bullet": "circle"
+ },
+ "ol": {
+ "spacing": {
+ "before": 12,
+ "after": 12,
+ "line": 1.6
+ },
+ "indent": 32,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 16,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.6
+ }
+ },
+ "strong": {
+ "font": "heading",
+ "bold": false
+ },
+ "em": {
+ "font": "body",
+ "italic": true
+ },
+ "a": {
+ "font": "heading",
+ "color": "accent",
+ "underline": true
+ },
+ "table": {
+ "spacing": {
+ "before": 20,
+ "after": 20,
+ "line": 1.3
+ },
+ "border": {
+ "color": "text",
+ "width": 3,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "heading",
+ "size": 16,
+ "color": "text",
+ "bold": false,
+ "background": "4ECDC4",
+ "padding": 12,
+ "borderBottom": {
+ "color": "text",
+ "width": 3,
+ "style": "solid"
+ }
+ },
+ "td": {
+ "font": "body",
+ "size": 16,
+ "color": "text",
+ "padding": 12
+ },
+ "hr": {
+ "spacing": {
+ "before": 24,
+ "after": 24
+ },
+ "border": {
+ "color": "border",
+ "width": 4,
+ "style": "dashed"
+ }
+ },
+ "img": {
+ "align": "center",
+ "spacing": {
+ "before": 16,
+ "after": 16
+ }
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true
+ },
+ "sup": {
+ "font": "body",
+ "size": 12,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 12,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "FFE66D",
+ "color": "text"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 12,
+ "color": "textSecondary",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 12,
+ "color": "textSecondary",
+ "spacing": {
+ "before": 6,
+ "after": 6,
+ "line": 1.3
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 54,
+ "bottom": 54,
+ "left": 54,
+ "right": 54
+ },
+ "columns": 1,
+ "header": true,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/academic/mathematics-paper.json b/src-tauri/templates/academic/mathematics-paper.json
new file mode 100644
index 0000000..03df4b0
--- /dev/null
+++ b/src-tauri/templates/academic/mathematics-paper.json
@@ -0,0 +1,296 @@
+{
+ "id": "mathematics-paper",
+ "name": "Mathematics Paper",
+ "category": "Academic",
+ "description": "Inspired by LaTeX and Computer Modern. Serif-heavy, precise, and highly legible for academic rigor.",
+ "vibe": "Academic, Rigorous, Formal",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Domine:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&family=Noticia+Text:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Domine",
+ "body": "Noticia Text",
+ "code": "Domine"
+ },
+ "colors": {
+ "text": "000000",
+ "textSecondary": "333333",
+ "background": "FFFFFF",
+ "accent": "000000",
+ "border": "CCCCCC",
+ "codeBg": "F5F5F5",
+ "blockquoteBorder": "000000"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 24,
+ "color": "text",
+ "bold": true,
+ "align": "center",
+ "spacing": {
+ "before": 20,
+ "after": 12,
+ "line": 1.2
+ }
+ },
+ "h2": {
+ "font": "heading",
+ "size": 14,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.2
+ }
+ },
+ "h3": {
+ "font": "heading",
+ "size": 12,
+ "color": "text",
+ "bold": true,
+ "italic": false,
+ "align": "left",
+ "spacing": {
+ "before": 12,
+ "after": 6,
+ "line": 1.2
+ }
+ },
+ "h4": {
+ "font": "heading",
+ "size": 11,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 10,
+ "after": 5,
+ "line": 1.2
+ }
+ },
+ "h5": {
+ "font": "heading",
+ "size": 10,
+ "color": "textSecondary",
+ "bold": true,
+ "italic": true,
+ "align": "left",
+ "spacing": {
+ "before": 8,
+ "after": 4,
+ "line": 1.2
+ }
+ },
+ "h6": {
+ "font": "heading",
+ "size": 10,
+ "color": "textSecondary",
+ "bold": false,
+ "italic": true,
+ "align": "left",
+ "spacing": {
+ "before": 8,
+ "after": 4,
+ "line": 1.2
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 11,
+ "color": "212121",
+ "align": "justify",
+ "spacing": {
+ "before": 0,
+ "after": 8,
+ "line": 1.6
+ }
+ },
+ "blockquote": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "italic": true,
+ "align": "left",
+ "spacing": {
+ "before": 12,
+ "after": 12,
+ "line": 1.5
+ },
+ "padding": 10,
+ "borderLeft": {
+ "color": "blockquoteBorder",
+ "width": 3,
+ "style": "solid"
+ },
+ "background": "codeBg"
+ },
+ "code": {
+ "font": "code",
+ "size": 9.5,
+ "color": "text",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.4
+ }
+ },
+ "pre": {
+ "font": "code",
+ "size": 9,
+ "color": "text",
+ "background": "codeBg",
+ "spacing": {
+ "before": 10,
+ "after": 10,
+ "line": 1.4
+ },
+ "padding": 12,
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "ul": {
+ "spacing": {
+ "before": 6,
+ "after": 6,
+ "line": 1.5
+ },
+ "indent": 20,
+ "bullet": "disc"
+ },
+ "ol": {
+ "spacing": {
+ "before": 6,
+ "after": 6,
+ "line": 1.5
+ },
+ "indent": 20,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 11,
+ "color": "212121",
+ "spacing": {
+ "before": 2,
+ "after": 2,
+ "line": 1.5
+ }
+ },
+ "strong": {
+ "font": "body",
+ "bold": true
+ },
+ "em": {
+ "font": "body",
+ "italic": true
+ },
+ "a": {
+ "font": "body",
+ "color": "accent",
+ "underline": true
+ },
+ "table": {
+ "spacing": {
+ "before": 10,
+ "after": 10,
+ "line": 1.2
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "heading",
+ "size": 10,
+ "color": "text",
+ "bold": true,
+ "background": "F0F0F0",
+ "padding": 8
+ },
+ "td": {
+ "font": "body",
+ "size": 10,
+ "color": "212121",
+ "padding": 8
+ },
+ "hr": {
+ "border": {
+ "color": "accent",
+ "width": 1,
+ "style": "solid"
+ },
+ "spacing": {
+ "before": 12,
+ "after": 12
+ }
+ },
+ "img": {
+ "align": "center",
+ "spacing": {
+ "before": 10,
+ "after": 10
+ }
+ },
+ "_comment_del": "~~strikethrough~~ - deleted text",
+ "del": {
+ "strikethrough": true,
+ "font": "body"
+ },
+ "_comment_sup": "^superscript^ - superscript text",
+ "sup": {
+ "font": "body",
+ "size": 8,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 8,
+ "subScript": true
+ },
+ "_comment_sub": "~subscript~ - subscript text",
+ "_comment_mark": "==highlighted text== - marked/highlighted text",
+ "mark": {
+ "font": "body",
+ "color": "FFFFFF",
+ "background": "accent"
+ },
+ "footnote": {
+ "font": "body",
+ "color": "textSecondary",
+ "size": 9,
+ "superScript": true
+ },
+ "_comment_footnote": "[^1] - footnote references",
+ "footnoteRef": {
+ "font": "body",
+ "color": "textSecondary",
+ "spacing": {
+ "line": 1.2,
+ "before": 6,
+ "after": 6
+ },
+ "size": 9
+ },
+ "_comment_footnote_ref": "Footnote content at bottom of page"
+ },
+ "page": {
+ "margins": {
+ "top": 72,
+ "bottom": 72,
+ "left": 72,
+ "right": 72
+ },
+ "columns": 1,
+ "header": false,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/academic/medical-professional.json b/src-tauri/templates/academic/medical-professional.json
new file mode 100644
index 0000000..ed6dacf
--- /dev/null
+++ b/src-tauri/templates/academic/medical-professional.json
@@ -0,0 +1,311 @@
+{
+ "id": "medical-professional",
+ "name": "Medical Professional",
+ "category": "Healthcare",
+ "description": "Clean, trustworthy clinical design. Optimized for patient charts, reports, and professional correspondence.",
+ "vibe": "Clinical, Trustworthy, Modern",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Lato:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&family=Source+Sans+3:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&family=Fira+Code:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Lato",
+ "body": "Source Sans 3",
+ "code": "Fira Code"
+ },
+ "colors": {
+ "text": "263238",
+ "textSecondary": "546E7A",
+ "background": "FFFFFF",
+ "accent": "00897B",
+ "border": "CFD8DC",
+ "codeBg": "ECEFF1",
+ "blockquoteBorder": "00897B"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 28,
+ "color": "263238",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.2
+ },
+ "borderBottom": {
+ "color": "accent",
+ "width": 2,
+ "style": "solid"
+ }
+ ,
+ "padding": 0
+ },
+ "h2": {
+ "font": "heading",
+ "size": 20,
+ "color": "accent",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 20,
+ "after": 8,
+ "line": 1.2
+ },
+ "background": "E0F2F1",
+ "padding": 8,
+ "borderRadius": 4
+ },
+ "h3": {
+ "font": "heading",
+ "size": 16,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 6,
+ "line": 1.2
+ },
+ "allCaps": true,
+ "letterSpacing": 1.0
+ },
+ "h4": {
+ "font": "body",
+ "size": 14,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 12,
+ "after": 4,
+ "line": 1.3
+ }
+ },
+ "h5": {
+ "font": "body",
+ "size": 12,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 10,
+ "after": 4,
+ "line": 1.3
+ },
+ "allCaps": true
+ },
+ "h6": {
+ "font": "body",
+ "size": 11,
+ "color": "textSecondary",
+ "italic": true,
+ "align": "left",
+ "spacing": {
+ "before": 10,
+ "after": 4,
+ "line": 1.3
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "align": "left",
+ "spacing": {
+ "before": 0,
+ "after": 10,
+ "line": 1.5
+ }
+ },
+ "blockquote": {
+ "font": "body",
+ "size": 12,
+ "color": "textSecondary",
+ "italic": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.5
+ },
+ "padding": 16,
+ "borderLeft": {
+ "color": "accent",
+ "width": 4,
+ "style": "solid"
+ },
+ "background": "F5F7F8"
+ },
+ "code": {
+ "font": "code",
+ "size": 10,
+ "color": "text",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.4
+ }
+ },
+ "pre": {
+ "font": "code",
+ "size": 10,
+ "color": "text",
+ "background": "codeBg",
+ "padding": 12,
+ "spacing": {
+ "before": 12,
+ "after": 12,
+ "line": 1.4
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ },
+ "borderRadius": 4
+ },
+ "ul": {
+ "spacing": {
+ "before": 8,
+ "after": 8,
+ "line": 1.5
+ },
+ "indent": 20,
+ "bullet": "disc"
+ },
+ "ol": {
+ "spacing": {
+ "before": 8,
+ "after": 8,
+ "line": 1.5
+ },
+ "indent": 20,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "spacing": {
+ "before": 2,
+ "after": 2,
+ "line": 1.5
+ }
+ },
+ "strong": {
+ "font": "body",
+ "bold": true
+ },
+ "em": {
+ "font": "body",
+ "italic": true
+ },
+ "a": {
+ "font": "body",
+ "color": "0277BD",
+ "underline": false
+ },
+ "table": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.3
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "heading",
+ "size": 11,
+ "color": "text",
+ "bold": true,
+ "background": "CFD8DC",
+ "padding": 8,
+ "borderBottom": {
+ "color": "textSecondary",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "td": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "padding": 8,
+ "borderBottom": {
+ "color": "ECEFF1",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 20,
+ "after": 20
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "img": {
+ "align": "left",
+ "spacing": {
+ "before": 12,
+ "after": 12
+ }
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true
+ },
+ "sup": {
+ "font": "body",
+ "size": 9,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 9,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "E0F2F1",
+ "color": "text"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "spacing": {
+ "before": 6,
+ "after": 6,
+ "line": 1.3
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 72,
+ "bottom": 72,
+ "left": 72,
+ "right": 72
+ },
+ "columns": 1,
+ "header": true,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/academic/phd-thesis.json b/src-tauri/templates/academic/phd-thesis.json
new file mode 100644
index 0000000..e045b83
--- /dev/null
+++ b/src-tauri/templates/academic/phd-thesis.json
@@ -0,0 +1,289 @@
+{
+ "id": "phd-thesis",
+ "name": "PhD Thesis",
+ "category": "Academic",
+ "description": "The gold standard for dissertation submissions. Meets strict university requirements: double spacing, wide binding margins, and classic serif composition.",
+ "vibe": "Formal, Conservative, Standard",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Tinos:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&family=Arimo:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Tinos",
+ "body": "Tinos",
+ "code": "Arimo"
+ },
+ "colors": {
+ "text": "000000",
+ "textSecondary": "333333",
+ "background": "FFFFFF",
+ "accent": "000000",
+ "border": "666666",
+ "codeBg": "F5F5F5",
+ "blockquoteBorder": "333333"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 16,
+ "color": "text",
+ "bold": true,
+ "align": "center",
+ "allCaps": true,
+ "spacing": {
+ "before": 72,
+ "after": 24,
+ "line": 2.0
+ }
+ },
+ "h2": {
+ "font": "heading",
+ "size": 14,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 2.0
+ }
+ },
+ "h3": {
+ "font": "heading",
+ "size": 12,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 18,
+ "after": 6,
+ "line": 2.0
+ }
+ },
+ "h4": {
+ "font": "heading",
+ "size": 12,
+ "color": "text",
+ "bold": true,
+ "italic": true,
+ "align": "left",
+ "spacing": {
+ "before": 18,
+ "after": 6,
+ "line": 2.0
+ }
+ },
+ "h5": {
+ "font": "heading",
+ "size": 12,
+ "color": "text",
+ "italic": true,
+ "align": "left",
+ "spacing": {
+ "before": 12,
+ "after": 6,
+ "line": 2.0
+ }
+ },
+ "h6": {
+ "font": "heading",
+ "size": 11,
+ "color": "textSecondary",
+ "italic": true,
+ "align": "left",
+ "spacing": {
+ "before": 12,
+ "after": 6,
+ "line": 2.0
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "align": "left",
+ "indent": 36,
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 2.0
+ }
+ },
+ "blockquote": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "italic": false,
+ "align": "left",
+ "spacing": {
+ "before": 12,
+ "after": 12,
+ "line": 1.0
+ },
+ "indent": 36,
+ "padding": 0
+ },
+ "code": {
+ "font": "code",
+ "size": 10,
+ "color": "text",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.2
+ }
+ },
+ "pre": {
+ "font": "code",
+ "size": 10,
+ "color": "text",
+ "background": "codeBg",
+ "padding": 12,
+ "spacing": {
+ "before": 12,
+ "after": 12,
+ "line": 1.2
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "ul": {
+ "spacing": {
+ "before": 12,
+ "after": 12,
+ "line": 2.0
+ },
+ "indent": 36,
+ "bullet": "disc"
+ },
+ "ol": {
+ "spacing": {
+ "before": 12,
+ "after": 12,
+ "line": 2.0
+ },
+ "indent": 36,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 2.0
+ }
+ },
+ "strong": {
+ "font": "body",
+ "bold": true
+ },
+ "em": {
+ "font": "body",
+ "italic": true
+ },
+ "a": {
+ "font": "body",
+ "color": "text",
+ "underline": true
+ },
+ "table": {
+ "spacing": {
+ "before": 18,
+ "after": 18,
+ "line": 1.2
+ },
+ "border": {
+ "color": "text",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "heading",
+ "size": 11,
+ "color": "text",
+ "bold": true,
+ "padding": 6,
+ "borderBottom": {
+ "color": "text",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "td": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "padding": 6
+ },
+ "hr": {
+ "spacing": {
+ "before": 24,
+ "after": 24
+ },
+ "border": {
+ "color": "text",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "img": {
+ "align": "center",
+ "spacing": {
+ "before": 18,
+ "after": 18
+ }
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true
+ },
+ "sup": {
+ "font": "body",
+ "size": 9,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 9,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "border",
+ "color": "text"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "spacing": {
+ "before": 6,
+ "after": 6,
+ "line": 1.0
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 72,
+ "bottom": 72,
+ "left": 108,
+ "right": 72
+ },
+ "columns": 1,
+ "header": false,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/academic/research-paper.json b/src-tauri/templates/academic/research-paper.json
new file mode 100644
index 0000000..0d57b47
--- /dev/null
+++ b/src-tauri/templates/academic/research-paper.json
@@ -0,0 +1,300 @@
+{
+ "id": "research-paper",
+ "name": "Research Paper",
+ "category": "Academic",
+ "description": "Clean, functional design inspired by scientific preprints (LaTeX/arXiv). Geometric headings paired with high-readability body text.",
+ "vibe": "Scientific, Modern, Functional",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Montserrat:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&family=Crimson+Pro:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&family=Fira+Code:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Montserrat",
+ "body": "Crimson Pro",
+ "code": "Fira Code"
+ },
+ "colors": {
+ "text": "111827",
+ "textSecondary": "4B5563",
+ "background": "FFFFFF",
+ "accent": "2563EB",
+ "border": "E5E7EB",
+ "codeBg": "F3F4F6",
+ "blockquoteBorder": "2563EB"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 26,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 30,
+ "after": 15,
+ "line": 1.2
+ }
+ },
+ "h2": {
+ "font": "heading",
+ "size": 16,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.25
+ },
+ "allCaps": true,
+ "borderBottom": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "h3": {
+ "font": "heading",
+ "size": 14,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 18,
+ "after": 9,
+ "line": 1.3
+ }
+ },
+ "h4": {
+ "font": "heading",
+ "size": 12,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.3
+ }
+ },
+ "h5": {
+ "font": "heading",
+ "size": 11,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 12,
+ "after": 6,
+ "line": 1.4
+ }
+ },
+ "h6": {
+ "font": "heading",
+ "size": 10,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "allCaps": true,
+ "spacing": {
+ "before": 12,
+ "after": 6,
+ "line": 1.4
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "align": "justify",
+ "spacing": {
+ "before": 0,
+ "after": 10,
+ "line": 1.6
+ }
+ },
+ "blockquote": {
+ "font": "body",
+ "size": 11,
+ "color": "textSecondary",
+ "italic": true,
+ "align": "left",
+ "spacing": {
+ "before": 12,
+ "after": 12,
+ "line": 1.6
+ },
+ "indent": 24,
+ "borderLeft": {
+ "color": "accent",
+ "width": 4,
+ "style": "solid"
+ },
+ "background": "F9FAFB",
+ "padding": 12
+ },
+ "code": {
+ "font": "code",
+ "size": 9.5,
+ "color": "text",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.4
+ }
+ },
+ "pre": {
+ "font": "code",
+ "size": 9,
+ "color": "text",
+ "background": "codeBg",
+ "padding": 12,
+ "spacing": {
+ "before": 12,
+ "after": 12,
+ "line": 1.4
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "ul": {
+ "spacing": {
+ "before": 10,
+ "after": 10,
+ "line": 1.6
+ },
+ "indent": 24,
+ "bullet": "disc"
+ },
+ "ol": {
+ "spacing": {
+ "before": 10,
+ "after": 10,
+ "line": 1.6
+ },
+ "indent": 24,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.6
+ }
+ },
+ "strong": {
+ "font": "body",
+ "bold": true
+ },
+ "em": {
+ "font": "body",
+ "italic": true
+ },
+ "a": {
+ "font": "body",
+ "color": "accent",
+ "underline": true
+ },
+ "table": {
+ "spacing": {
+ "before": 18,
+ "after": 18,
+ "line": 1.2
+ },
+ "border": {
+ "color": "text",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "heading",
+ "size": 10,
+ "color": "text",
+ "bold": true,
+ "background": "F3F4F6",
+ "padding": 8,
+ "borderBottom": {
+ "color": "text",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "td": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "padding": 8
+ },
+ "hr": {
+ "spacing": {
+ "before": 24,
+ "after": 24
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "img": {
+ "align": "center",
+ "spacing": {
+ "before": 18,
+ "after": 18
+ }
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true
+ },
+ "sup": {
+ "font": "body",
+ "size": 8,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 8,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "DBEAFE",
+ "color": "text"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 9,
+ "color": "textSecondary",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 9,
+ "color": "textSecondary",
+ "spacing": {
+ "before": 6,
+ "after": 6,
+ "line": 1.2
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 72,
+ "bottom": 72,
+ "left": 72,
+ "right": 72
+ },
+ "columns": 1,
+ "header": false,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/academic/scantron-test.json b/src-tauri/templates/academic/scantron-test.json
new file mode 100644
index 0000000..a662c25
--- /dev/null
+++ b/src-tauri/templates/academic/scantron-test.json
@@ -0,0 +1,313 @@
+{
+ "id": "scantron-test",
+ "name": "Scantron Test",
+ "category": "Academic",
+ "description": "Optical Machine Reading (OMR) aesthetic. Monospaced clarity combined with bubble-sheet layout elements.",
+ "vibe": "Technical, Retro, Bureaucratic",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Courier+Prime:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&family=Space+Mono:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Courier Prime",
+ "body": "Space Mono",
+ "code": "Space Mono"
+ },
+ "colors": {
+ "text": "1B5E20",
+ "textSecondary": "33691E",
+ "background": "FFFDE7",
+ "accent": "D81B60",
+ "border": "A5D6A7",
+ "codeBg": "F1F8E9",
+ "blockquoteBorder": "1B5E20"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 24,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 20,
+ "after": 10,
+ "line": 1.2
+ },
+ "allCaps": true,
+ "borderBottom": {
+ "color": "text",
+ "width": 1,
+ "style": "dashed"
+ },
+ "letterSpacing": 2
+ },
+ "h2": {
+ "font": "body",
+ "size": 16,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.2
+ },
+ "background": "E8F5E9",
+ "padding": 6,
+ "border": {
+ "color": "text",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "h3": {
+ "font": "heading",
+ "size": 14,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 12,
+ "after": 6,
+ "line": 1.2
+ }
+ },
+ "h4": {
+ "font": "body",
+ "size": 12,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 10,
+ "after": 4,
+ "line": 1.3
+ }
+ },
+ "h5": {
+ "font": "body",
+ "size": 12,
+ "color": "textSecondary",
+ "bold": false,
+ "align": "left",
+ "spacing": {
+ "before": 10,
+ "after": 4,
+ "line": 1.3
+ },
+ "allCaps": true
+ },
+ "h6": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "italic": true,
+ "align": "left",
+ "spacing": {
+ "before": 10,
+ "after": 4,
+ "line": 1.3
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "align": "left",
+ "spacing": {
+ "before": 0,
+ "after": 10,
+ "line": 1.5
+ },
+ "weight": 400
+ },
+ "blockquote": {
+ "font": "heading",
+ "size": 12,
+ "color": "text",
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.5
+ },
+ "padding": 20,
+ "border": {
+ "color": "text",
+ "width": 1,
+ "style": "dotted"
+ },
+ "background": "FFFFFF",
+ "borderRadius": 50
+ },
+ "code": {
+ "font": "code",
+ "size": 10,
+ "color": "text",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.4
+ }
+ },
+ "pre": {
+ "font": "code",
+ "size": 10,
+ "color": "text",
+ "background": "codeBg",
+ "padding": 12,
+ "spacing": {
+ "before": 12,
+ "after": 12,
+ "line": 1.4
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "ul": {
+ "spacing": {
+ "before": 10,
+ "after": 10,
+ "line": 1.5
+ },
+ "indent": 20,
+ "bullet": "circle"
+ },
+ "ol": {
+ "spacing": {
+ "before": 10,
+ "after": 10,
+ "line": 1.5
+ },
+ "indent": 20,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "spacing": {
+ "before": 2,
+ "after": 2,
+ "line": 1.5
+ }
+ },
+ "strong": {
+ "font": "heading",
+ "bold": true
+ },
+ "em": {
+ "font": "body",
+ "italic": true
+ },
+ "a": {
+ "font": "heading",
+ "color": "accent",
+ "underline": true
+ },
+ "table": {
+ "spacing": {
+ "before": 12,
+ "after": 12,
+ "line": 1.2
+ },
+ "border": {
+ "color": "text",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "heading",
+ "size": 11,
+ "color": "text",
+ "bold": true,
+ "background": "C8E6C9",
+ "padding": 8,
+ "borderBottom": {
+ "color": "text",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "td": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "padding": 8,
+ "borderRight": {
+ "color": "border",
+ "width": 1,
+ "style": "dashed"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 20,
+ "after": 20
+ },
+ "border": {
+ "color": "text",
+ "width": 1,
+ "style": "dashed"
+ }
+ },
+ "img": {
+ "align": "left",
+ "spacing": {
+ "before": 12,
+ "after": 12
+ }
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true
+ },
+ "sup": {
+ "font": "body",
+ "size": 9,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 9,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "FFCDD2",
+ "color": "text"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "spacing": {
+ "before": 6,
+ "after": 6,
+ "line": 1.3
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 54,
+ "bottom": 54,
+ "left": 54,
+ "right": 54
+ },
+ "columns": 1,
+ "header": true,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/academic/scientific-journal.json b/src-tauri/templates/academic/scientific-journal.json
new file mode 100644
index 0000000..067264b
--- /dev/null
+++ b/src-tauri/templates/academic/scientific-journal.json
@@ -0,0 +1,298 @@
+{
+ "id": "scientific-journal",
+ "name": "Scientific Journal",
+ "category": "Academic",
+ "description": "Data-first design emphasizing clarity, hierarchy, and density. Optimized for papers with complex figures and tables.",
+ "vibe": "Scientific, Precise, Modern",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Source+Sans+3:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&family=Merriweather:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&family=Fira+Mono:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Source Sans 3",
+ "body": "Merriweather",
+ "code": "Fira Mono"
+ },
+ "colors": {
+ "text": "222222",
+ "textSecondary": "555555",
+ "background": "FFFFFF",
+ "accent": "0056D2",
+ "border": "DDDDDD",
+ "codeBg": "F7F9FA",
+ "blockquoteBorder": "0056D2"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 24,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.2
+ }
+ },
+ "h2": {
+ "font": "heading",
+ "size": 18,
+ "color": "accent",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 20,
+ "after": 10,
+ "line": 1.25
+ }
+ },
+ "h3": {
+ "font": "heading",
+ "size": 14,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.3
+ }
+ },
+ "h4": {
+ "font": "heading",
+ "size": 12,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "allCaps": true,
+ "spacing": {
+ "before": 12,
+ "after": 6,
+ "line": 1.3
+ }
+ },
+ "h5": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 10,
+ "after": 5,
+ "line": 1.4
+ }
+ },
+ "h6": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "italic": true,
+ "align": "left",
+ "spacing": {
+ "before": 8,
+ "after": 4,
+ "line": 1.4
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 10.5,
+ "color": "text",
+ "align": "justify",
+ "spacing": {
+ "before": 0,
+ "after": 8,
+ "line": 1.6
+ }
+ },
+ "blockquote": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "italic": true,
+ "align": "left",
+ "spacing": {
+ "before": 12,
+ "after": 12,
+ "line": 1.5
+ },
+ "indent": 18,
+ "borderLeft": {
+ "color": "accent",
+ "width": 3,
+ "style": "solid"
+ }
+ },
+ "code": {
+ "font": "code",
+ "size": 9,
+ "color": "text",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.3
+ }
+ },
+ "pre": {
+ "font": "code",
+ "size": 9,
+ "color": "text",
+ "background": "codeBg",
+ "padding": 10,
+ "spacing": {
+ "before": 12,
+ "after": 12,
+ "line": 1.3
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "ul": {
+ "spacing": {
+ "before": 8,
+ "after": 8,
+ "line": 1.5
+ },
+ "indent": 20,
+ "bullet": "square"
+ },
+ "ol": {
+ "spacing": {
+ "before": 8,
+ "after": 8,
+ "line": 1.5
+ },
+ "indent": 20,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 10.5,
+ "color": "text",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.5
+ }
+ },
+ "strong": {
+ "font": "body",
+ "bold": true
+ },
+ "em": {
+ "font": "body",
+ "italic": true
+ },
+ "a": {
+ "font": "heading",
+ "color": "accent",
+ "underline": false,
+ "bold": true
+ },
+ "table": {
+ "spacing": {
+ "before": 12,
+ "after": 12,
+ "line": 1.2
+ },
+ "borderTop": {
+ "color": "text",
+ "width": 1.5,
+ "style": "solid"
+ },
+ "borderBottom": {
+ "color": "text",
+ "width": 1.5,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "heading",
+ "size": 9.5,
+ "color": "text",
+ "bold": true,
+ "background": "F0F2F5",
+ "padding": 6,
+ "borderBottom": {
+ "color": "text",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "td": {
+ "font": "body",
+ "size": 9.5,
+ "color": "text",
+ "padding": 6
+ },
+ "hr": {
+ "spacing": {
+ "before": 18,
+ "after": 18
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "img": {
+ "align": "center",
+ "spacing": {
+ "before": 12,
+ "after": 12
+ }
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true
+ },
+ "sup": {
+ "font": "heading",
+ "size": 7,
+ "superScript": true
+ },
+ "sub": {
+ "font": "heading",
+ "size": 7,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "E1F5FE",
+ "color": "text"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 9,
+ "color": "textSecondary",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 9,
+ "color": "textSecondary",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.2
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 72,
+ "bottom": 72,
+ "left": 72,
+ "right": 72
+ },
+ "columns": 1,
+ "header": true,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/academic/weather-radar.json b/src-tauri/templates/academic/weather-radar.json
new file mode 100644
index 0000000..dcec68e
--- /dev/null
+++ b/src-tauri/templates/academic/weather-radar.json
@@ -0,0 +1,308 @@
+{
+ "id": "weather-radar",
+ "name": "Weather Radar",
+ "category": "Scientific",
+ "description": "Meteorological data dashboard. High-contrast, grid-based aesthetic designed for readability of complex data points.",
+ "vibe": "Technical, Data-Driven, High-Contrast",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Orbitron:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&family=Exo+2:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&family=Share+Tech+Mono:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Orbitron",
+ "body": "Exo 2",
+ "code": "Share Tech Mono"
+ },
+ "colors": {
+ "text": "263238",
+ "textSecondary": "455A64",
+ "background": "F5F7F8",
+ "accent": "D50000",
+ "border": "B0BEC5",
+ "codeBg": "ECEFF1",
+ "blockquoteBorder": "FF6D00"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 32,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "allCaps": true,
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.1
+ },
+ "borderBottom": {
+ "color": "accent",
+ "width": 4,
+ "style": "solid"
+ },
+ "background": "codeBg",
+ "padding": 12
+ },
+ "h2": {
+ "font": "heading",
+ "size": 20,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 20,
+ "after": 10,
+ "line": 1.2
+ },
+ "allCaps": true,
+ "borderLeft": {
+ "color": "accent",
+ "width": 6,
+ "style": "solid",
+ "space": 8
+ }
+ },
+ "h3": {
+ "font": "body",
+ "size": 16,
+ "color": "accent",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.2
+ }
+ },
+ "h4": {
+ "font": "body",
+ "size": 14,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 12,
+ "after": 6,
+ "line": 1.3
+ }
+ },
+ "h5": {
+ "font": "code",
+ "size": 12,
+ "color": "textSecondary",
+ "bold": false,
+ "align": "left",
+ "spacing": {
+ "before": 10,
+ "after": 5,
+ "line": 1.4
+ }
+ },
+ "h6": {
+ "font": "code",
+ "size": 10,
+ "color": "textSecondary",
+ "italic": true,
+ "align": "left",
+ "spacing": {
+ "before": 10,
+ "after": 5,
+ "line": 1.4
+ },
+ "allCaps": true
+ },
+ "p": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "align": "left",
+ "spacing": {
+ "before": 0,
+ "after": 12,
+ "line": 1.5
+ },
+ "weight": 400
+ },
+ "blockquote": {
+ "font": "code",
+ "size": 10,
+ "color": "textSecondary",
+ "align": "left",
+ "spacing": {
+ "before": 12,
+ "after": 12,
+ "line": 1.4
+ },
+ "padding": 12,
+ "border": {
+ "color": "blockquoteBorder",
+ "width": 1,
+ "style": "dashed"
+ },
+ "background": "F9FBE7"
+ },
+ "code": {
+ "font": "code",
+ "size": 10,
+ "color": "text",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.3
+ }
+ },
+ "pre": {
+ "font": "code",
+ "size": 9.5,
+ "color": "text",
+ "background": "codeBg",
+ "padding": 12,
+ "spacing": {
+ "before": 12,
+ "after": 12,
+ "line": 1.3
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "dotted"
+ }
+ },
+ "ul": {
+ "spacing": {
+ "before": 8,
+ "after": 8,
+ "line": 1.5
+ },
+ "indent": 20,
+ "bullet": "square"
+ },
+ "ol": {
+ "spacing": {
+ "before": 8,
+ "after": 8,
+ "line": 1.5
+ },
+ "indent": 20,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.5
+ }
+ },
+ "strong": {
+ "font": "body",
+ "bold": true
+ },
+ "em": {
+ "font": "body",
+ "italic": true
+ },
+ "a": {
+ "font": "body",
+ "color": "0288D1",
+ "underline": true
+ },
+ "table": {
+ "spacing": {
+ "before": 12,
+ "after": 12,
+ "line": 1.2
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "heading",
+ "size": 10,
+ "color": "text",
+ "bold": true,
+ "background": "ECEFF1",
+ "padding": 8,
+ "borderBottom": {
+ "color": "accent",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "td": {
+ "font": "code",
+ "size": 10,
+ "color": "text",
+ "padding": 8
+ },
+ "hr": {
+ "spacing": {
+ "before": 24,
+ "after": 24
+ },
+ "border": {
+ "color": "border",
+ "width": 2,
+ "style": "dashed"
+ }
+ },
+ "img": {
+ "align": "center",
+ "spacing": {
+ "before": 12,
+ "after": 12
+ }
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true
+ },
+ "sup": {
+ "font": "code",
+ "size": 8,
+ "superScript": true
+ },
+ "sub": {
+ "font": "code",
+ "size": 8,
+ "subScript": true
+ },
+ "mark": {
+ "font": "code",
+ "background": "FFF9C4",
+ "color": "text"
+ },
+ "footnote": {
+ "font": "code",
+ "size": 9,
+ "color": "textSecondary",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "code",
+ "size": 9,
+ "color": "textSecondary",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.2
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 54,
+ "bottom": 54,
+ "left": 54,
+ "right": 54
+ },
+ "columns": 1,
+ "header": true,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/core/circus-sideshow.json b/src-tauri/templates/core/circus-sideshow.json
new file mode 100644
index 0000000..4b65dde
--- /dev/null
+++ b/src-tauri/templates/core/circus-sideshow.json
@@ -0,0 +1,305 @@
+{
+ "id": "circus-sideshow",
+ "name": "Circus Sideshow",
+ "category": "Entertainment",
+ "description": "Authentic vintage circus poster aesthetic. Victorian woodblock typography, screaming reds, and deep midnight blues.",
+ "vibe": "Vintage, Ornamental, Dramatic",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Rye:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&family=Lora:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&family=Sancreek:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Rye",
+ "body": "Lora",
+ "code": "Sancreek"
+ },
+ "colors": {
+ "text": "3E2723",
+ "textSecondary": "1A237E",
+ "background": "FFF8E1",
+ "accent": "C62828",
+ "border": "FFB300",
+ "codeBg": "FFECB3",
+ "blockquoteBorder": "C62828"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 48,
+ "color": "accent",
+ "bold": false,
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.1
+ },
+ "allCaps": true,
+ "textShadow": "2px 2px 0px #1A237E"
+ },
+ "h2": {
+ "font": "heading",
+ "size": 28,
+ "color": "textSecondary",
+ "bold": false,
+ "align": "center",
+ "spacing": {
+ "before": 20,
+ "after": 10,
+ "line": 1.2
+ },
+ "decoration": "underline",
+ "decorationStyle": "wavy"
+ },
+ "h3": {
+ "font": "body",
+ "size": 20,
+ "color": "3E2723",
+ "bold": true,
+ "align": "center",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.2
+ },
+ "allCaps": true,
+ "letterSpacing": 2.0
+ },
+ "h4": {
+ "font": "body",
+ "size": 16,
+ "color": "accent",
+ "bold": true,
+ "align": "center",
+ "spacing": {
+ "before": 14,
+ "after": 6,
+ "line": 1.3
+ },
+ "italic": true
+ },
+ "h5": {
+ "font": "body",
+ "size": 14,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "center",
+ "spacing": {
+ "before": 12,
+ "after": 6,
+ "line": 1.4
+ }
+ },
+ "h6": {
+ "font": "body",
+ "size": 12,
+ "color": "textSecondary",
+ "italic": true,
+ "align": "center",
+ "spacing": {
+ "before": 12,
+ "after": 6,
+ "line": 1.4
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 14,
+ "color": "3E2723",
+ "align": "center",
+ "spacing": {
+ "before": 0,
+ "after": 12,
+ "line": 1.6
+ }
+ },
+ "blockquote": {
+ "font": "heading",
+ "size": 18,
+ "color": "textSecondary",
+ "align": "center",
+ "spacing": {
+ "before": 20,
+ "after": 20,
+ "line": 1.4
+ },
+ "padding": 24,
+ "border": {
+ "color": "border",
+ "width": 4,
+ "style": "double"
+ },
+ "background": "FFFFFF"
+ },
+ "code": {
+ "font": "code",
+ "size": 12,
+ "color": "text",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.4
+ }
+ },
+ "pre": {
+ "font": "code",
+ "size": 12,
+ "color": "text",
+ "background": "codeBg",
+ "padding": 12,
+ "spacing": {
+ "before": 12,
+ "after": 12,
+ "line": 1.4
+ },
+ "border": {
+ "color": "accent",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "ul": {
+ "spacing": {
+ "before": 10,
+ "after": 10,
+ "line": 1.5
+ },
+ "indent": 20,
+ "bullet": "flourish"
+ },
+ "ol": {
+ "spacing": {
+ "before": 10,
+ "after": 10,
+ "line": 1.5
+ },
+ "indent": 20,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 14,
+ "color": "3E2723",
+ "spacing": {
+ "before": 2,
+ "after": 2,
+ "line": 1.5
+ }
+ },
+ "strong": {
+ "font": "heading",
+ "bold": false,
+ "color": "accent"
+ },
+ "em": {
+ "font": "body",
+ "italic": true
+ },
+ "a": {
+ "font": "body",
+ "color": "textSecondary",
+ "underline": true,
+ "bold": true
+ },
+ "table": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.3
+ },
+ "border": {
+ "color": "3E2723",
+ "width": 3,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "heading",
+ "size": 14,
+ "color": "FFFFFF",
+ "bold": false,
+ "background": "C62828",
+ "padding": 10
+ },
+ "td": {
+ "font": "body",
+ "size": 14,
+ "color": "3E2723",
+ "padding": 10,
+ "borderBottom": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 24,
+ "after": 24
+ },
+ "border": {
+ "color": "textSecondary",
+ "width": 4,
+ "style": "dotted"
+ }
+ },
+ "img": {
+ "align": "center",
+ "spacing": {
+ "before": 16,
+ "after": 16
+ },
+ "border": {
+ "color": "border",
+ "width": 8,
+ "style": "double"
+ }
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true
+ },
+ "sup": {
+ "font": "body",
+ "size": 10,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 10,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "FFECB3",
+ "color": "text"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 12,
+ "color": "textSecondary",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 12,
+ "color": "textSecondary",
+ "spacing": {
+ "before": 6,
+ "after": 6,
+ "line": 1.3
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 54,
+ "bottom": 54,
+ "left": 54,
+ "right": 54
+ },
+ "columns": 1,
+ "header": true,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/core/default.json b/src-tauri/templates/core/default.json
new file mode 100644
index 0000000..f74eb18
--- /dev/null
+++ b/src-tauri/templates/core/default.json
@@ -0,0 +1,311 @@
+{
+ "id": "default",
+ "name": "Default Clean",
+ "category": "Core",
+ "description": "A premium, versatile baseline. High-readability serif body text paired with clean, geometric sans-serif headings.",
+ "vibe": "Clean, Versatile, Professional",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&family=Lora:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&family=JetBrains+Mono:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "DM Sans",
+ "body": "Lora",
+ "code": "JetBrains Mono"
+ },
+ "colors": {
+ "text": "111827",
+ "textSecondary": "4B5563",
+ "background": "FFFFFF",
+ "accent": "2563EB",
+ "border": "E5E7EB",
+ "codeBg": "F3F4F6",
+ "blockquoteBorder": "2563EB"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 36,
+ "color": "111827",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 32,
+ "after": 16,
+ "line": 1.1
+ },
+ "letterSpacing": -0.5
+ },
+ "h2": {
+ "font": "heading",
+ "size": 24,
+ "color": "111827",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.2
+ },
+ "letterSpacing": -0.3
+ },
+ "h3": {
+ "font": "heading",
+ "size": 20,
+ "color": "111827",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 20,
+ "after": 10,
+ "line": 1.3
+ }
+ },
+ "h4": {
+ "font": "heading",
+ "size": 18,
+ "color": "111827",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.3
+ }
+ },
+ "h5": {
+ "font": "heading",
+ "size": 16,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ },
+ "allCaps": true,
+ "letterSpacing": 0.5
+ },
+ "h6": {
+ "font": "heading",
+ "size": 14,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ },
+ "allCaps": true
+ },
+ "p": {
+ "font": "body",
+ "size": 17,
+ "color": "374151",
+ "align": "left",
+ "spacing": {
+ "before": 0,
+ "after": 16,
+ "line": 1.7
+ },
+ "weight": 400
+ },
+ "blockquote": {
+ "font": "body",
+ "size": 19,
+ "color": "111827",
+ "italic": true,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.6
+ },
+ "padding": 0,
+ "borderLeft": {
+ "color": "accent",
+ "width": 4,
+ "style": "solid"
+ },
+ "indent": 20
+ },
+ "code": {
+ "font": "code",
+ "size": 14,
+ "color": "111827",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.4
+ },
+ "borderRadius": 4,
+ "padding": 2
+ },
+ "pre": {
+ "font": "code",
+ "size": 13,
+ "color": "111827",
+ "background": "codeBg",
+ "padding": 20,
+ "spacing": {
+ "before": 20,
+ "after": 20,
+ "line": 1.5
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ },
+ "borderRadius": 8
+ },
+ "ul": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.7
+ },
+ "indent": 24,
+ "bullet": "disc"
+ },
+ "ol": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.7
+ },
+ "indent": 24,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 17,
+ "color": "374151",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.7
+ }
+ },
+ "strong": {
+ "font": "body",
+ "bold": true,
+ "color": "111827"
+ },
+ "em": {
+ "font": "body",
+ "italic": true
+ },
+ "a": {
+ "font": "body",
+ "color": "2563EB",
+ "underline": true,
+ "bold": false
+ },
+ "table": {
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.4
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ },
+ "borderRadius": 8
+ },
+ "th": {
+ "font": "heading",
+ "size": 14,
+ "color": "111827",
+ "bold": true,
+ "background": "F9FAFB",
+ "padding": 12,
+ "borderBottom": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "td": {
+ "font": "body",
+ "size": 15,
+ "color": "374151",
+ "padding": 12,
+ "borderBottom": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 40,
+ "after": 40
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "img": {
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 24
+ },
+ "borderRadius": 8
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true,
+ "color": "9CA3AF"
+ },
+ "sup": {
+ "font": "body",
+ "size": 10,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 10,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "FEF3C7",
+ "color": "111827"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 13,
+ "color": "textSecondary",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 13,
+ "color": "textSecondary",
+ "spacing": {
+ "before": 6,
+ "after": 6,
+ "line": 1.4
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 72,
+ "bottom": 72,
+ "left": 72,
+ "right": 72
+ },
+ "columns": 1,
+ "header": false,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/core/environmental-green.json b/src-tauri/templates/core/environmental-green.json
new file mode 100644
index 0000000..293d1b3
--- /dev/null
+++ b/src-tauri/templates/core/environmental-green.json
@@ -0,0 +1,302 @@
+{
+ "id": "environmental-green",
+ "name": "Environmental Green",
+ "category": "Sustainability",
+ "description": "Earthy, organic, and grounded. Designed for sustainability reports, nature guides, and eco-friendly brands.",
+ "vibe": "Organic, Earthy, Sustainable",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Merriweather:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&family=Nunito:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&family=Fira+Code:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Merriweather",
+ "body": "Nunito",
+ "code": "Fira Code"
+ },
+ "colors": {
+ "text": "333333",
+ "textSecondary": "5D4037",
+ "background": "F1F8E9",
+ "accent": "2E7D32",
+ "border": "AED581",
+ "codeBg": "DCEDC8",
+ "blockquoteBorder": "558B2F"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 32,
+ "color": "2E7D32",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.3
+ },
+ "italic": true
+ },
+ "h2": {
+ "font": "heading",
+ "size": 24,
+ "color": "5D4037",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 20,
+ "after": 10,
+ "line": 1.3
+ },
+ "borderBottom": {
+ "color": "border",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "h3": {
+ "font": "heading",
+ "size": 18,
+ "color": "accent",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.3
+ }
+ },
+ "h4": {
+ "font": "heading",
+ "size": 16,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 14,
+ "after": 6,
+ "line": 1.3
+ }
+ },
+ "h5": {
+ "font": "body",
+ "size": 14,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 12,
+ "after": 6,
+ "line": 1.4
+ }
+ },
+ "h6": {
+ "font": "body",
+ "size": 12,
+ "color": "textSecondary",
+ "italic": true,
+ "align": "left",
+ "spacing": {
+ "before": 12,
+ "after": 6,
+ "line": 1.4
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 14,
+ "color": "333333",
+ "align": "left",
+ "spacing": {
+ "before": 0,
+ "after": 12,
+ "line": 1.7
+ }
+ },
+ "blockquote": {
+ "font": "heading",
+ "size": 14,
+ "color": "558B2F",
+ "italic": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "padding": 20,
+ "borderLeft": {
+ "color": "accent",
+ "width": 4,
+ "style": "solid"
+ },
+ "background": "FFFFFF",
+ "borderRadius": 8
+ },
+ "code": {
+ "font": "code",
+ "size": 12,
+ "color": "text",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.4
+ }
+ },
+ "pre": {
+ "font": "code",
+ "size": 12,
+ "color": "text",
+ "background": "codeBg",
+ "padding": 16,
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.4
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ },
+ "borderRadius": 8
+ },
+ "ul": {
+ "spacing": {
+ "before": 12,
+ "after": 12,
+ "line": 1.6
+ },
+ "indent": 24,
+ "bullet": "leaf"
+ },
+ "ol": {
+ "spacing": {
+ "before": 12,
+ "after": 12,
+ "line": 1.6
+ },
+ "indent": 24,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 14,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.6
+ }
+ },
+ "strong": {
+ "font": "heading",
+ "bold": true
+ },
+ "em": {
+ "font": "heading",
+ "italic": true
+ },
+ "a": {
+ "font": "body",
+ "color": "2E7D32",
+ "underline": true,
+ "bold": true
+ },
+ "table": {
+ "spacing": {
+ "before": 20,
+ "after": 20,
+ "line": 1.3
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "heading",
+ "size": 12,
+ "color": "FFFFFF",
+ "bold": true,
+ "background": "558B2F",
+ "padding": 12
+ },
+ "td": {
+ "font": "body",
+ "size": 14,
+ "color": "text",
+ "padding": 12,
+ "borderBottom": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 32,
+ "after": 32
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "img": {
+ "align": "center",
+ "spacing": {
+ "before": 20,
+ "after": 20
+ },
+ "borderRadius": 8
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true
+ },
+ "sup": {
+ "font": "body",
+ "size": 10,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 10,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "DCEDC8",
+ "color": "text"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 12,
+ "color": "textSecondary",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 12,
+ "color": "textSecondary",
+ "spacing": {
+ "before": 6,
+ "after": 6,
+ "line": 1.3
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 72,
+ "bottom": 72,
+ "left": 72,
+ "right": 72
+ },
+ "columns": 1,
+ "header": true,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/core/highway-interstate.json b/src-tauri/templates/core/highway-interstate.json
new file mode 100644
index 0000000..79517fb
--- /dev/null
+++ b/src-tauri/templates/core/highway-interstate.json
@@ -0,0 +1,323 @@
+{
+ "id": "highway-interstate",
+ "name": "Highway Interstate",
+ "category": "Urban",
+ "description": "Inspired by the clarity of road signage. Optimized for high-speed readability with reflective white text on deep green backgrounds.",
+ "vibe": "Functional, Navigation, Clear",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Overpass:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&family=Inter:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&family=JetBrains+Mono:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Overpass",
+ "body": "Inter",
+ "code": "JetBrains Mono"
+ },
+ "colors": {
+ "text": "FFFFFF",
+ "textSecondary": "B2DFDB",
+ "background": "004D40",
+ "accent": "FFEB3B",
+ "border": "FFFFFF",
+ "codeBg": "00695C",
+ "blockquoteBorder": "FFEB3B"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 42,
+ "color": "FFFFFF",
+ "bold": true,
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.1
+ },
+ "allCaps": true,
+ "borderBottom": {
+ "color": "FFFFFF",
+ "width": 4,
+ "style": "solid"
+ }
+ ,
+ "padding": 16
+ },
+ "h2": {
+ "font": "heading",
+ "size": 24,
+ "color": "accent",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 20,
+ "after": 10,
+ "line": 1.2
+ },
+ "background": "000000",
+ "padding": 8,
+ "borderRadius": 4,
+ "allCaps": true
+ },
+ "h3": {
+ "font": "heading",
+ "size": 18,
+ "color": "FFFFFF",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.3
+ },
+ "borderLeft": {
+ "color": "accent",
+ "width": 6,
+ "style": "solid"
+ }
+ ,
+ "padding": 8
+ },
+ "h4": {
+ "font": "body",
+ "size": 16,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 14,
+ "after": 6,
+ "line": 1.3
+ },
+ "allCaps": true
+ },
+ "h5": {
+ "font": "body",
+ "size": 14,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 12,
+ "after": 6,
+ "line": 1.4
+ }
+ },
+ "h6": {
+ "font": "body",
+ "size": 12,
+ "color": "textSecondary",
+ "bold": false,
+ "align": "left",
+ "spacing": {
+ "before": 12,
+ "after": 6,
+ "line": 1.4
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 16,
+ "color": "FFFFFF",
+ "align": "left",
+ "spacing": {
+ "before": 0,
+ "after": 12,
+ "line": 1.6
+ },
+ "weight": 500
+ },
+ "blockquote": {
+ "font": "heading",
+ "size": 16,
+ "color": "000000",
+ "bold": true,
+ "align": "center",
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.4
+ },
+ "padding": 20,
+ "border": {
+ "color": "000000",
+ "width": 4,
+ "style": "solid"
+ },
+ "background": "FFEB3B",
+ "borderRadius": 8
+ },
+ "code": {
+ "font": "code",
+ "size": 14,
+ "color": "accent",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.4
+ }
+ },
+ "pre": {
+ "font": "code",
+ "size": 14,
+ "color": "FFFFFF",
+ "background": "000000",
+ "padding": 16,
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.4
+ },
+ "border": {
+ "color": "FFFFFF",
+ "width": 2,
+ "style": "solid"
+ },
+ "borderRadius": 8
+ },
+ "ul": {
+ "spacing": {
+ "before": 12,
+ "after": 12,
+ "line": 1.6
+ },
+ "indent": 24,
+ "bullet": "square"
+ },
+ "ol": {
+ "spacing": {
+ "before": 12,
+ "after": 12,
+ "line": 1.6
+ },
+ "indent": 24,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 16,
+ "color": "FFFFFF",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.6
+ }
+ },
+ "strong": {
+ "font": "heading",
+ "bold": true,
+ "color": "accent"
+ },
+ "em": {
+ "font": "heading",
+ "italic": true
+ },
+ "a": {
+ "font": "heading",
+ "color": "accent",
+ "underline": true,
+ "bold": true
+ },
+ "table": {
+ "spacing": {
+ "before": 20,
+ "after": 20,
+ "line": 1.3
+ },
+ "border": {
+ "color": "FFFFFF",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "heading",
+ "size": 14,
+ "color": "000000",
+ "bold": true,
+ "background": "FFFFFF",
+ "padding": 12
+ },
+ "td": {
+ "font": "body",
+ "size": 14,
+ "color": "FFFFFF",
+ "padding": 12,
+ "borderBottom": {
+ "color": "FFFFFF",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 32,
+ "after": 32
+ },
+ "border": {
+ "color": "accent",
+ "width": 4,
+ "style": "dashed"
+ }
+ },
+ "img": {
+ "align": "center",
+ "spacing": {
+ "before": 20,
+ "after": 20
+ },
+ "border": {
+ "color": "FFFFFF",
+ "width": 4,
+ "style": "solid"
+ }
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true,
+ "color": "B2DFDB"
+ },
+ "sup": {
+ "font": "body",
+ "size": 10,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 10,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "FFEB3B",
+ "color": "000000"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 12,
+ "color": "textSecondary",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 12,
+ "color": "textSecondary",
+ "spacing": {
+ "before": 6,
+ "after": 6,
+ "line": 1.3
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 54,
+ "bottom": 54,
+ "left": 54,
+ "right": 54
+ },
+ "columns": 1,
+ "header": true,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/core/jungle-explorer.json b/src-tauri/templates/core/jungle-explorer.json
new file mode 100644
index 0000000..3d883c5
--- /dev/null
+++ b/src-tauri/templates/core/jungle-explorer.json
@@ -0,0 +1,316 @@
+{
+ "id": "jungle-explorer",
+ "name": "Jungle Explorer",
+ "category": "Adventure",
+ "description": "Inspired by field notes from a safari expedition. Stencil headings, khaki backgrounds, and durable typography.",
+ "vibe": "Adventure, Rugged, Natural",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Stardos+Stencil:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&family=Chivo:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&family=Special+Elite:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Stardos Stencil",
+ "body": "Chivo",
+ "code": "Special Elite"
+ },
+ "colors": {
+ "text": "3E2723",
+ "textSecondary": "558B2F",
+ "background": "F9FBE7",
+ "accent": "827717",
+ "border": "A1887F",
+ "codeBg": "EFEBE9",
+ "blockquoteBorder": "827717"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 36,
+ "color": "3E2723",
+ "bold": true,
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.1
+ },
+ "allCaps": true,
+ "borderBottom": {
+ "color": "accent",
+ "width": 4,
+ "style": "dashed"
+ }
+ ,
+ "background": "DCEDC8",
+ "padding": 12
+ },
+ "h2": {
+ "font": "heading",
+ "size": 24,
+ "color": "accent",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 20,
+ "after": 10,
+ "line": 1.2
+ },
+ "borderLeft": {
+ "color": "text",
+ "width": 6,
+ "style": "solid"
+ }
+ ,
+ "padding": 8
+ },
+ "h3": {
+ "font": "body",
+ "size": 18,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.3
+ },
+ "allCaps": true
+ },
+ "h4": {
+ "font": "body",
+ "size": 16,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 14,
+ "after": 6,
+ "line": 1.3
+ }
+ },
+ "h5": {
+ "font": "body",
+ "size": 14,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 12,
+ "after": 6,
+ "line": 1.4
+ }
+ },
+ "h6": {
+ "font": "body",
+ "size": 12,
+ "color": "textSecondary",
+ "italic": true,
+ "align": "left",
+ "spacing": {
+ "before": 12,
+ "after": 6,
+ "line": 1.4
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 14,
+ "color": "3E2723",
+ "align": "left",
+ "spacing": {
+ "before": 0,
+ "after": 12,
+ "line": 1.6
+ }
+ },
+ "blockquote": {
+ "font": "code",
+ "size": 14,
+ "color": "text",
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.5
+ },
+ "padding": 20,
+ "background": "FFF8E1",
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ },
+ "rotation": -1
+ },
+ "code": {
+ "font": "code",
+ "size": 12,
+ "color": "text",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.4
+ }
+ },
+ "pre": {
+ "font": "code",
+ "size": 12,
+ "color": "text",
+ "background": "codeBg",
+ "padding": 16,
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.4
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "dashed"
+ },
+ "borderRadius": 2
+ },
+ "ul": {
+ "spacing": {
+ "before": 12,
+ "after": 12,
+ "line": 1.6
+ },
+ "indent": 24,
+ "bullet": "disc"
+ },
+ "ol": {
+ "spacing": {
+ "before": 12,
+ "after": 12,
+ "line": 1.6
+ },
+ "indent": 24,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 14,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.6
+ }
+ },
+ "strong": {
+ "font": "heading",
+ "bold": true
+ },
+ "em": {
+ "font": "body",
+ "italic": true
+ },
+ "a": {
+ "font": "body",
+ "color": "accent",
+ "underline": true,
+ "bold": true
+ },
+ "table": {
+ "spacing": {
+ "before": 20,
+ "after": 20,
+ "line": 1.3
+ },
+ "border": {
+ "color": "3E2723",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "heading",
+ "size": 12,
+ "color": "FFFFFF",
+ "bold": true,
+ "background": "558B2F",
+ "padding": 10
+ },
+ "td": {
+ "font": "body",
+ "size": 14,
+ "color": "text",
+ "padding": 10,
+ "borderBottom": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 30,
+ "after": 30
+ },
+ "border": {
+ "color": "accent",
+ "width": 2,
+ "style": "dashed"
+ }
+ },
+ "img": {
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 16
+ },
+ "border": {
+ "color": "3E2723",
+ "width": 4,
+ "style": "solid"
+ }
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true
+ },
+ "sup": {
+ "font": "body",
+ "size": 10,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 10,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "FFCC80",
+ "color": "text"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 12,
+ "color": "textSecondary",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 12,
+ "color": "textSecondary",
+ "spacing": {
+ "before": 6,
+ "after": 6,
+ "line": 1.3
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 72,
+ "bottom": 72,
+ "left": 72,
+ "right": 72
+ },
+ "columns": 1,
+ "header": true,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/core/public-transit.json b/src-tauri/templates/core/public-transit.json
new file mode 100644
index 0000000..d0cab5b
--- /dev/null
+++ b/src-tauri/templates/core/public-transit.json
@@ -0,0 +1,309 @@
+{
+ "id": "public-transit",
+ "name": "Public Transit",
+ "category": "Urban",
+ "description": "Modern metro system aesthetic. Functional geometry, bold color lines, and universal symbols.",
+ "vibe": "Urban, Connected, Systematic",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Work+Sans:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&family=Manrope:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&family=JetBrains+Mono:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Work Sans",
+ "body": "Manrope",
+ "code": "JetBrains Mono"
+ },
+ "colors": {
+ "text": "111111",
+ "textSecondary": "616161",
+ "background": "FFFFFF",
+ "accent": "F44336",
+ "border": "E0E0E0",
+ "codeBg": "F5F5F5",
+ "blockquoteBorder": "2196F3"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 36,
+ "color": "111111",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.1
+ },
+ "allCaps": true,
+ "borderBottom": {
+ "color": "accent",
+ "width": 8,
+ "style": "solid"
+ }
+ ,
+ "letterSpacing": -1.0
+ },
+ "h2": {
+ "font": "heading",
+ "size": 24,
+ "color": "111111",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 20,
+ "after": 10,
+ "line": 1.2
+ },
+ "background": "FFC107",
+ "padding": 8,
+ "borderRadius": 50,
+ "display": "inline-block"
+ },
+ "h3": {
+ "font": "heading",
+ "size": 18,
+ "color": "2196F3",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.3
+ }
+ },
+ "h4": {
+ "font": "body",
+ "size": 16,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 14,
+ "after": 6,
+ "line": 1.3
+ },
+ "allCaps": true
+ },
+ "h5": {
+ "font": "body",
+ "size": 14,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 12,
+ "after": 6,
+ "line": 1.4
+ }
+ },
+ "h6": {
+ "font": "body",
+ "size": 12,
+ "color": "textSecondary",
+ "italic": true,
+ "align": "left",
+ "spacing": {
+ "before": 12,
+ "after": 6,
+ "line": 1.4
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 14,
+ "color": "111111",
+ "align": "left",
+ "spacing": {
+ "before": 0,
+ "after": 12,
+ "line": 1.6
+ }
+ },
+ "blockquote": {
+ "font": "heading",
+ "size": 16,
+ "color": "111111",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.4
+ },
+ "padding": 24,
+ "borderLeft": {
+ "color": "4CAF50",
+ "width": 8,
+ "style": "solid"
+ },
+ "background": "FAFAFA"
+ },
+ "code": {
+ "font": "code",
+ "size": 12,
+ "color": "text",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.4
+ }
+ },
+ "pre": {
+ "font": "code",
+ "size": 12,
+ "color": "text",
+ "background": "codeBg",
+ "padding": 16,
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.4
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ },
+ "borderRadius": 4
+ },
+ "ul": {
+ "spacing": {
+ "before": 12,
+ "after": 12,
+ "line": 1.6
+ },
+ "indent": 24,
+ "bullet": "circle"
+ },
+ "ol": {
+ "spacing": {
+ "before": 12,
+ "after": 12,
+ "line": 1.6
+ },
+ "indent": 24,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 14,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.6
+ }
+ },
+ "strong": {
+ "font": "heading",
+ "bold": true
+ },
+ "em": {
+ "font": "body",
+ "italic": true
+ },
+ "a": {
+ "font": "heading",
+ "color": "2196F3",
+ "underline": true,
+ "bold": true
+ },
+ "table": {
+ "spacing": {
+ "before": 20,
+ "after": 20,
+ "line": 1.3
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "heading",
+ "size": 12,
+ "color": "FFFFFF",
+ "bold": true,
+ "background": "111111",
+ "padding": 12
+ },
+ "td": {
+ "font": "body",
+ "size": 14,
+ "color": "text",
+ "padding": 12,
+ "borderBottom": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 32,
+ "after": 32
+ },
+ "border": {
+ "color": "E0E0E0",
+ "width": 4,
+ "style": "solid"
+ }
+ },
+ "img": {
+ "align": "left",
+ "spacing": {
+ "before": 20,
+ "after": 20
+ },
+ "borderRadius": 4
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true,
+ "color": "textSecondary"
+ },
+ "sup": {
+ "font": "body",
+ "size": 10,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 10,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "FFEB3B",
+ "color": "000000"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 12,
+ "color": "textSecondary",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 12,
+ "color": "textSecondary",
+ "spacing": {
+ "before": 6,
+ "after": 6,
+ "line": 1.3
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 54,
+ "bottom": 54,
+ "left": 54,
+ "right": 54
+ },
+ "columns": 1,
+ "header": true,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/core/silent-film-intertitle.json b/src-tauri/templates/core/silent-film-intertitle.json
new file mode 100644
index 0000000..b6c51b3
--- /dev/null
+++ b/src-tauri/templates/core/silent-film-intertitle.json
@@ -0,0 +1,316 @@
+{
+ "id": "silent-film-intertitle",
+ "name": "Silent Film Intertitle",
+ "category": "Cinema",
+ "description": "Authentic 1920s intertitle aesthetic. High contrast, ornate art deco borders, and projected silver screen typography.",
+ "vibe": "Cinematic, Vintage, Silent",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Limelight:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&family=Cormorant+SC:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&family=Parkside:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Limelight",
+ "body": "Cormorant SC",
+ "code": "Parkside"
+ },
+ "colors": {
+ "text": "F5F5F5",
+ "textSecondary": "BDBDBD",
+ "background": "000000",
+ "accent": "E0E0E0",
+ "border": "FFFFFF",
+ "codeBg": "212121",
+ "blockquoteBorder": "FFFFFF"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 48,
+ "color": "FFFFFF",
+ "bold": false,
+ "align": "center",
+ "spacing": {
+ "before": 40,
+ "after": 20,
+ "line": 1.1
+ },
+ "allCaps": true,
+ "textShadow": "0px 0px 8px rgba(255,255,255,0.8)"
+ },
+ "h2": {
+ "font": "body",
+ "size": 24,
+ "color": "E0E0E0",
+ "bold": true,
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.2
+ },
+ "borderBottom": {
+ "color": "FFFFFF",
+ "width": 1,
+ "style": "solid"
+ },
+ "borderTop": {
+ "color": "FFFFFF",
+ "width": 1,
+ "style": "solid"
+ },
+ "padding": 8,
+ "display": "inline-block"
+ },
+ "h3": {
+ "font": "body",
+ "size": 20,
+ "color": "text",
+ "bold": true,
+ "align": "center",
+ "spacing": {
+ "before": 20,
+ "after": 10,
+ "line": 1.3
+ },
+ "allCaps": true
+ },
+ "h4": {
+ "font": "heading",
+ "size": 18,
+ "color": "textSecondary",
+ "bold": false,
+ "align": "center",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.3
+ }
+ },
+ "h5": {
+ "font": "body",
+ "size": 16,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "center",
+ "spacing": {
+ "before": 14,
+ "after": 6,
+ "line": 1.4
+ }
+ },
+ "h6": {
+ "font": "body",
+ "size": 14,
+ "color": "textSecondary",
+ "italic": true,
+ "align": "center",
+ "spacing": {
+ "before": 14,
+ "after": 6,
+ "line": 1.4
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 20,
+ "color": "F5F5F5",
+ "align": "center",
+ "spacing": {
+ "before": 0,
+ "after": 20,
+ "line": 1.5
+ },
+ "weight": 600
+ },
+ "blockquote": {
+ "font": "code",
+ "size": 24,
+ "color": "000000",
+ "align": "center",
+ "spacing": {
+ "before": 30,
+ "after": 30,
+ "line": 1.6
+ },
+ "padding": 40,
+ "background": "FFFFFF",
+ "border": {
+ "color": "000000",
+ "width": 4,
+ "style": "double"
+ },
+ "rotation": 1
+ },
+ "code": {
+ "font": "heading",
+ "size": 16,
+ "color": "text",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.4
+ }
+ },
+ "pre": {
+ "font": "heading",
+ "size": 16,
+ "color": "text",
+ "background": "codeBg",
+ "padding": 20,
+ "spacing": {
+ "before": 20,
+ "after": 20,
+ "line": 1.4
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "ul": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 30,
+ "bullet": "diamond"
+ },
+ "ol": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 30,
+ "numbering": "roman"
+ },
+ "li": {
+ "font": "body",
+ "size": 18,
+ "color": "text",
+ "spacing": {
+ "before": 6,
+ "after": 6,
+ "line": 1.6
+ }
+ },
+ "strong": {
+ "font": "heading",
+ "bold": false
+ },
+ "em": {
+ "font": "code",
+ "italic": false,
+ "size": 22
+ },
+ "a": {
+ "font": "heading",
+ "color": "FFFFFF",
+ "underline": true,
+ "bold": false
+ },
+ "table": {
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.3
+ },
+ "border": {
+ "color": "FFFFFF",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "heading",
+ "size": 16,
+ "color": "000000",
+ "bold": false,
+ "background": "FFFFFF",
+ "padding": 12
+ },
+ "td": {
+ "font": "body",
+ "size": 18,
+ "color": "text",
+ "padding": 12,
+ "borderBottom": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 40,
+ "after": 40
+ },
+ "border": {
+ "color": "FFFFFF",
+ "width": 1,
+ "style": "double"
+ }
+ },
+ "img": {
+ "align": "center",
+ "spacing": {
+ "before": 30,
+ "after": 30
+ },
+ "border": {
+ "color": "FFFFFF",
+ "width": 8,
+ "style": "double"
+ }
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true,
+ "color": "757575"
+ },
+ "sup": {
+ "font": "body",
+ "size": 12,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 12,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "424242",
+ "color": "FFFFFF"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 14,
+ "color": "textSecondary",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 14,
+ "color": "textSecondary",
+ "spacing": {
+ "before": 6,
+ "after": 6,
+ "line": 1.3
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 40,
+ "bottom": 40,
+ "left": 40,
+ "right": 40
+ },
+ "columns": 1,
+ "header": false,
+ "footer": false
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/core/sports-dynamic.json b/src-tauri/templates/core/sports-dynamic.json
new file mode 100644
index 0000000..75da1c8
--- /dev/null
+++ b/src-tauri/templates/core/sports-dynamic.json
@@ -0,0 +1,324 @@
+{
+ "id": "sports-dynamic",
+ "name": "Sports Dynamic",
+ "category": "Sports",
+ "description": "High-velocity design for athletic events and esports. Sharp angles, italicized motion, and high-contrast neon accents.",
+ "vibe": "Energetic, Competitive, Fast",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Teko:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&family=Exo+2:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&family=Chakra+Petch:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Teko",
+ "body": "Exo 2",
+ "code": "Chakra Petch"
+ },
+ "colors": {
+ "text": "FFFFFF",
+ "textSecondary": "B0BEC5",
+ "background": "121212",
+ "accent": "FF3D00",
+ "border": "2979FF",
+ "codeBg": "263238",
+ "blockquoteBorder": "FF3D00"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 64,
+ "color": "FFFFFF",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 0.9
+ },
+ "allCaps": true,
+ "italic": false,
+ "textShadow": "4px 4px 0px #2979FF"
+ },
+ "h2": {
+ "font": "heading",
+ "size": 36,
+ "color": "accent",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 20,
+ "after": 10,
+ "line": 1.0
+ },
+ "borderLeft": {
+ "color": "accent",
+ "width": 8,
+ "style": "solid"
+ }
+ ,
+ "padding": 12,
+ "background": "1E1E1E",
+ "allCaps": true
+ },
+ "h3": {
+ "font": "heading",
+ "size": 28,
+ "color": "2979FF",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.1
+ },
+ "allCaps": true
+ },
+ "h4": {
+ "font": "body",
+ "size": 18,
+ "color": "FFFFFF",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 14,
+ "after": 6,
+ "line": 1.3
+ },
+ "italic": true,
+ "allCaps": true
+ },
+ "h5": {
+ "font": "body",
+ "size": 14,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 12,
+ "after": 6,
+ "line": 1.4
+ },
+ "allCaps": true
+ },
+ "h6": {
+ "font": "body",
+ "size": 12,
+ "color": "textSecondary",
+ "italic": true,
+ "align": "left",
+ "spacing": {
+ "before": 12,
+ "after": 6,
+ "line": 1.4
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 16,
+ "color": "FFFFFF",
+ "align": "left",
+ "spacing": {
+ "before": 0,
+ "after": 12,
+ "line": 1.5
+ },
+ "weight": 400
+ },
+ "blockquote": {
+ "font": "heading",
+ "size": 24,
+ "color": "FFFFFF",
+ "bold": false,
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.2
+ },
+ "padding": 30,
+ "border": {
+ "color": "border",
+ "width": 2,
+ "style": "solid"
+ },
+ "background": "1A237E",
+ "italic": false
+ },
+ "code": {
+ "font": "code",
+ "size": 14,
+ "color": "accent",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.4
+ }
+ },
+ "pre": {
+ "font": "code",
+ "size": 14,
+ "color": "accent",
+ "background": "000000",
+ "padding": 16,
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.4
+ },
+ "border": {
+ "color": "accent",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "ul": {
+ "spacing": {
+ "before": 12,
+ "after": 12,
+ "line": 1.5
+ },
+ "indent": 20,
+ "bullet": "square"
+ },
+ "ol": {
+ "spacing": {
+ "before": 12,
+ "after": 12,
+ "line": 1.5
+ },
+ "indent": 20,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 16,
+ "color": "FFFFFF",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.5
+ }
+ },
+ "strong": {
+ "font": "heading",
+ "bold": true,
+ "color": "accent"
+ },
+ "em": {
+ "font": "body",
+ "italic": true,
+ "color": "2979FF"
+ },
+ "a": {
+ "font": "body",
+ "color": "2979FF",
+ "underline": true,
+ "bold": true
+ },
+ "table": {
+ "spacing": {
+ "before": 20,
+ "after": 20,
+ "line": 1.2
+ },
+ "border": {
+ "color": "37474F",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "heading",
+ "size": 16,
+ "color": "FFFFFF",
+ "bold": true,
+ "background": "263238",
+ "padding": 12,
+ "borderBottom": {
+ "color": "accent",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "td": {
+ "font": "body",
+ "size": 14,
+ "color": "FFFFFF",
+ "padding": 12,
+ "borderBottom": {
+ "color": "37474F",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 30,
+ "after": 30
+ },
+ "border": {
+ "color": "accent",
+ "width": 4,
+ "style": "solid"
+ }
+ },
+ "img": {
+ "align": "center",
+ "spacing": {
+ "before": 20,
+ "after": 20
+ },
+ "border": {
+ "color": "FFFFFF",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true,
+ "color": "546E7A"
+ },
+ "sup": {
+ "font": "body",
+ "size": 10,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 10,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "2979FF",
+ "color": "FFFFFF"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 12,
+ "color": "textSecondary",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 12,
+ "color": "textSecondary",
+ "spacing": {
+ "before": 6,
+ "after": 6,
+ "line": 1.3
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 54,
+ "bottom": 54,
+ "left": 54,
+ "right": 54
+ },
+ "columns": 1,
+ "header": true,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/core/steampunk-inventor.json b/src-tauri/templates/core/steampunk-inventor.json
new file mode 100644
index 0000000..12088a6
--- /dev/null
+++ b/src-tauri/templates/core/steampunk-inventor.json
@@ -0,0 +1,318 @@
+{
+ "id": "steampunk-inventor",
+ "name": "Steampunk Inventor",
+ "category": "Fantasy",
+ "description": "Victorian sci-fi blueprints. Brass headings, typewriter schematics, and tea-stained parchment aesthetics.",
+ "vibe": "Mechanical, Vintage, Industrial",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Rye:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&family=Special+Elite:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&family=Cutive+Mono:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Rye",
+ "body": "Special Elite",
+ "code": "Cutive Mono"
+ },
+ "colors": {
+ "text": "3E2723",
+ "textSecondary": "5D4037",
+ "background": "D7CCC8",
+ "accent": "B8860B",
+ "border": "8D6E63",
+ "codeBg": "EFEBE9",
+ "blockquoteBorder": "B8860B"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 36,
+ "color": "3E2723",
+ "bold": true,
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.2
+ },
+ "allCaps": true,
+ "borderBottom": {
+ "color": "accent",
+ "width": 4,
+ "style": "double"
+ }
+ ,
+ "textShadow": "1px 1px 0px #B8860B"
+ },
+ "h2": {
+ "font": "heading",
+ "size": 24,
+ "color": "5D4037",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 20,
+ "after": 10,
+ "line": 1.2
+ },
+ "borderLeft": {
+ "color": "accent",
+ "width": 6,
+ "style": "solid"
+ }
+ ,
+ "padding": 6,
+ "background": "EFEBE9"
+ },
+ "h3": {
+ "font": "heading",
+ "size": 18,
+ "color": "accent",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.3
+ }
+ },
+ "h4": {
+ "font": "body",
+ "size": 16,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 14,
+ "after": 6,
+ "line": 1.3
+ },
+ "allCaps": true
+ },
+ "h5": {
+ "font": "body",
+ "size": 14,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 12,
+ "after": 6,
+ "line": 1.4
+ }
+ },
+ "h6": {
+ "font": "body",
+ "size": 12,
+ "color": "textSecondary",
+ "italic": true,
+ "align": "left",
+ "spacing": {
+ "before": 12,
+ "after": 6,
+ "line": 1.4
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 14,
+ "color": "3E2723",
+ "align": "left",
+ "spacing": {
+ "before": 0,
+ "after": 12,
+ "line": 1.6
+ }
+ },
+ "blockquote": {
+ "font": "body",
+ "size": 14,
+ "color": "5D4037",
+ "italic": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.5
+ },
+ "padding": 20,
+ "border": {
+ "color": "accent",
+ "width": 3,
+ "style": "dashed"
+ },
+ "background": "EFEBE9",
+ "borderRadius": 4
+ },
+ "code": {
+ "font": "code",
+ "size": 12,
+ "color": "text",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.4
+ }
+ },
+ "pre": {
+ "font": "code",
+ "size": 12,
+ "color": "text",
+ "background": "codeBg",
+ "padding": 16,
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.4
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ },
+ "backgroundImage": "url('grid-pattern.png')"
+ },
+ "ul": {
+ "spacing": {
+ "before": 12,
+ "after": 12,
+ "line": 1.6
+ },
+ "indent": 20,
+ "bullet": "gear"
+ },
+ "ol": {
+ "spacing": {
+ "before": 12,
+ "after": 12,
+ "line": 1.6
+ },
+ "indent": 20,
+ "numbering": "roman"
+ },
+ "li": {
+ "font": "body",
+ "size": 14,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.6
+ }
+ },
+ "strong": {
+ "font": "heading",
+ "bold": true
+ },
+ "em": {
+ "font": "body",
+ "italic": true
+ },
+ "a": {
+ "font": "body",
+ "color": "3E2723",
+ "underline": true,
+ "bold": true
+ },
+ "table": {
+ "spacing": {
+ "before": 20,
+ "after": 20,
+ "line": 1.3
+ },
+ "border": {
+ "color": "3E2723",
+ "width": 2,
+ "style": "double"
+ }
+ },
+ "th": {
+ "font": "heading",
+ "size": 12,
+ "color": "3E2723",
+ "bold": true,
+ "background": "B8860B",
+ "padding": 10
+ },
+ "td": {
+ "font": "body",
+ "size": 14,
+ "color": "3E2723",
+ "padding": 10,
+ "borderBottom": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 30,
+ "after": 30
+ },
+ "border": {
+ "color": "accent",
+ "width": 2,
+ "style": "dashed"
+ }
+ },
+ "img": {
+ "align": "center",
+ "spacing": {
+ "before": 16,
+ "after": 16
+ },
+ "border": {
+ "color": "5D4037",
+ "width": 4,
+ "style": "solid"
+ },
+ "filter": "sepia(100%)"
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true
+ },
+ "sup": {
+ "font": "body",
+ "size": 10,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 10,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "B8860B",
+ "color": "FFFFFF"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 12,
+ "color": "textSecondary",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 12,
+ "color": "textSecondary",
+ "spacing": {
+ "before": 6,
+ "after": 6,
+ "line": 1.3
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 72,
+ "bottom": 72,
+ "left": 72,
+ "right": 72
+ },
+ "columns": 1,
+ "header": true,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/core/subway-tile.json b/src-tauri/templates/core/subway-tile.json
new file mode 100644
index 0000000..111877b
--- /dev/null
+++ b/src-tauri/templates/core/subway-tile.json
@@ -0,0 +1,323 @@
+{
+ "id": "subway-tile",
+ "name": "Subway Tile",
+ "category": "Urban",
+ "description": "Ceramic station aesthetic. Clean, geometric design inspired by classic metropolitan subway systems.",
+ "vibe": "Clean, Geometric, Classic",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Lexend+Deca:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&family=Darker+Grotesque:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&family=Fira+Mono:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Lexend Deca",
+ "body": "Darker Grotesque",
+ "code": "Fira Mono"
+ },
+ "colors": {
+ "text": "212121",
+ "textSecondary": "546E7A",
+ "background": "F5F5F5",
+ "accent": "004D40",
+ "border": "B0BEC5",
+ "codeBg": "ECEFF1",
+ "blockquoteBorder": "004D40"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 42,
+ "color": "FFFFFF",
+ "bold": true,
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.1
+ },
+ "allCaps": true,
+ "background": "004D40",
+ "padding": 20,
+ "borderRadius": 8,
+ "border": {
+ "color": "FFFFFF",
+ "width": 4,
+ "style": "solid"
+ },
+ "textShadow": "2px 2px 4px rgba(0,0,0,0.3)"
+ },
+ "h2": {
+ "font": "heading",
+ "size": 28,
+ "color": "004D40",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 20,
+ "after": 10,
+ "line": 1.2
+ },
+ "borderBottom": {
+ "color": "004D40",
+ "width": 4,
+ "style": "solid"
+ }
+ ,
+ "padding": 8
+ },
+ "h3": {
+ "font": "heading",
+ "size": 20,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.3
+ },
+ "allCaps": true
+ },
+ "h4": {
+ "font": "body",
+ "size": 20,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 14,
+ "after": 6,
+ "line": 1.3
+ }
+ },
+ "h5": {
+ "font": "body",
+ "size": 18,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 12,
+ "after": 6,
+ "line": 1.4
+ }
+ },
+ "h6": {
+ "font": "body",
+ "size": 16,
+ "color": "textSecondary",
+ "italic": true,
+ "align": "left",
+ "spacing": {
+ "before": 12,
+ "after": 6,
+ "line": 1.4
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 20,
+ "color": "263238",
+ "align": "left",
+ "spacing": {
+ "before": 0,
+ "after": 12,
+ "line": 1.5
+ },
+ "weight": 500
+ },
+ "blockquote": {
+ "font": "body",
+ "size": 22,
+ "color": "004D40",
+ "bold": true,
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.4
+ },
+ "padding": 30,
+ "border": {
+ "color": "top",
+ "width": 4,
+ "style": "solid"
+ },
+ "background": "FFFFFF",
+ "borderRadius": 4,
+ "boxShadow": "0px 4px 6px rgba(0,0,0,0.1)"
+ },
+ "code": {
+ "font": "code",
+ "size": 14,
+ "color": "text",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.4
+ }
+ },
+ "pre": {
+ "font": "code",
+ "size": 14,
+ "color": "text",
+ "background": "codeBg",
+ "padding": 20,
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.4
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ },
+ "borderRadius": 8
+ },
+ "ul": {
+ "spacing": {
+ "before": 12,
+ "after": 12,
+ "line": 1.6
+ },
+ "indent": 24,
+ "bullet": "square"
+ },
+ "ol": {
+ "spacing": {
+ "before": 12,
+ "after": 12,
+ "line": 1.6
+ },
+ "indent": 24,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 20,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.6
+ }
+ },
+ "strong": {
+ "font": "heading",
+ "bold": true
+ },
+ "em": {
+ "font": "body",
+ "italic": true
+ },
+ "a": {
+ "font": "heading",
+ "color": "004D40",
+ "underline": true,
+ "bold": true
+ },
+ "table": {
+ "spacing": {
+ "before": 20,
+ "after": 20,
+ "line": 1.3
+ },
+ "border": {
+ "color": "B0BEC5",
+ "width": 2,
+ "style": "solid"
+ },
+ "borderRadius": 8
+ },
+ "th": {
+ "font": "heading",
+ "size": 16,
+ "color": "FFFFFF",
+ "bold": true,
+ "background": "546E7A",
+ "padding": 12
+ },
+ "td": {
+ "font": "body",
+ "size": 18,
+ "color": "text",
+ "padding": 12,
+ "borderBottom": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 30,
+ "after": 30
+ },
+ "border": {
+ "color": "004D40",
+ "width": 8,
+ "style": "solid"
+ }
+ },
+ "img": {
+ "align": "center",
+ "spacing": {
+ "before": 20,
+ "after": 20
+ },
+ "border": {
+ "color": "FFFFFF",
+ "width": 8,
+ "style": "solid"
+ },
+ "boxShadow": "0px 2px 4px rgba(0,0,0,0.2)"
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true,
+ "color": "90A4AE"
+ },
+ "sup": {
+ "font": "body",
+ "size": 12,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 12,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "004D40",
+ "color": "FFFFFF"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 14,
+ "color": "textSecondary",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 14,
+ "color": "textSecondary",
+ "spacing": {
+ "before": 6,
+ "after": 6,
+ "line": 1.3
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 54,
+ "bottom": 54,
+ "left": 54,
+ "right": 54
+ },
+ "columns": 1,
+ "header": true,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/core/taxi-cab.json b/src-tauri/templates/core/taxi-cab.json
new file mode 100644
index 0000000..18a9736
--- /dev/null
+++ b/src-tauri/templates/core/taxi-cab.json
@@ -0,0 +1,315 @@
+{
+ "id": "taxi-cab",
+ "name": "Taxi Cab",
+ "category": "Urban",
+ "description": "Iconic NYC yellow cab aesthetic. High-contrast black on yellow, checkerboard patterns, and digital meter typography.",
+ "vibe": "Urban, Loud, Iconic",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Archivo+Black:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&family=Share+Tech+Mono:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&family=Saira+Stencil+One:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Archivo Black",
+ "body": "Share Tech Mono",
+ "code": "Saira Stencil One"
+ },
+ "colors": {
+ "text": "101010",
+ "textSecondary": "212121",
+ "background": "FFD600",
+ "accent": "000000",
+ "border": "000000",
+ "codeBg": "FFFFFF",
+ "blockquoteBorder": "000000"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 48,
+ "color": "000000",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.0
+ },
+ "allCaps": true,
+ "textShadow": "2px 2px 0px #FFFFFF",
+ "borderBottom": {
+ "color": "000000",
+ "width": 8,
+ "style": "dashed"
+ }
+ },
+ "h2": {
+ "font": "code",
+ "size": 32,
+ "color": "FFFFFF",
+ "bold": false,
+ "align": "left",
+ "spacing": {
+ "before": 20,
+ "after": 10,
+ "line": 1.1
+ },
+ "background": "000000",
+ "padding": 10,
+ "borderRadius": 4,
+ "display": "inline-block"
+ },
+ "h3": {
+ "font": "heading",
+ "size": 24,
+ "color": "000000",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.2
+ },
+ "allCaps": true
+ },
+ "h4": {
+ "font": "body",
+ "size": 20,
+ "color": "000000",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 14,
+ "after": 6,
+ "line": 1.3
+ }
+ },
+ "h5": {
+ "font": "body",
+ "size": 18,
+ "color": "212121",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 12,
+ "after": 6,
+ "line": 1.4
+ }
+ },
+ "h6": {
+ "font": "body",
+ "size": 16,
+ "color": "212121",
+ "italic": true,
+ "align": "left",
+ "spacing": {
+ "before": 12,
+ "after": 6,
+ "line": 1.4
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 18,
+ "color": "101010",
+ "align": "left",
+ "spacing": {
+ "before": 0,
+ "after": 16,
+ "line": 1.6
+ },
+ "weight": 400
+ },
+ "blockquote": {
+ "font": "body",
+ "size": 18,
+ "color": "000000",
+ "bold": false,
+ "align": "left",
+ "spacing": {
+ "before": 20,
+ "after": 20,
+ "line": 1.4
+ },
+ "padding": 24,
+ "border": {
+ "color": "000000",
+ "width": 4,
+ "style": "solid"
+ },
+ "background": "FFFFFF",
+ "italic": false,
+ "fontFamily": "Share Tech Mono"
+ },
+ "code": {
+ "font": "code",
+ "size": 16,
+ "color": "000000",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.4
+ }
+ },
+ "pre": {
+ "font": "body",
+ "size": 16,
+ "color": "000000",
+ "background": "FFFFFF",
+ "padding": 16,
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.2
+ },
+ "border": {
+ "color": "000000",
+ "width": 2,
+ "style": "dashed"
+ }
+ },
+ "ul": {
+ "spacing": {
+ "before": 12,
+ "after": 12,
+ "line": 1.6
+ },
+ "indent": 20,
+ "bullet": "square"
+ },
+ "ol": {
+ "spacing": {
+ "before": 12,
+ "after": 12,
+ "line": 1.6
+ },
+ "indent": 20,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 18,
+ "color": "000000",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.6
+ }
+ },
+ "strong": {
+ "font": "heading",
+ "bold": true
+ },
+ "em": {
+ "font": "body",
+ "italic": true
+ },
+ "a": {
+ "font": "heading",
+ "color": "000000",
+ "underline": true,
+ "bold": true
+ },
+ "table": {
+ "spacing": {
+ "before": 20,
+ "after": 20,
+ "line": 1.3
+ },
+ "border": {
+ "color": "000000",
+ "width": 4,
+ "style": "solid"
+ },
+ "background": "FFFFFF"
+ },
+ "th": {
+ "font": "heading",
+ "size": 16,
+ "color": "FFD600",
+ "bold": true,
+ "background": "000000",
+ "padding": 12
+ },
+ "td": {
+ "font": "body",
+ "size": 16,
+ "color": "000000",
+ "padding": 12,
+ "borderBottom": {
+ "color": "000000",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 30,
+ "after": 30
+ },
+ "border": {
+ "color": "000000",
+ "width": 8,
+ "style": "dashed"
+ }
+ },
+ "img": {
+ "align": "left",
+ "spacing": {
+ "before": 20,
+ "after": 20
+ },
+ "border": {
+ "color": "000000",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true,
+ "color": "424242"
+ },
+ "sup": {
+ "font": "body",
+ "size": 10,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 10,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "000000",
+ "color": "FFD600"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 14,
+ "color": "textSecondary",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 14,
+ "color": "textSecondary",
+ "spacing": {
+ "before": 6,
+ "after": 6,
+ "line": 1.3
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 54,
+ "bottom": 54,
+ "left": 54,
+ "right": 54
+ },
+ "columns": 1,
+ "header": true,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/core/varsity-team.json b/src-tauri/templates/core/varsity-team.json
new file mode 100644
index 0000000..24fbd47
--- /dev/null
+++ b/src-tauri/templates/core/varsity-team.json
@@ -0,0 +1,338 @@
+{
+ "id": "varsity-team",
+ "name": "Varsity Team",
+ "category": "Sport",
+ "description": "The quintessential college athlete aesthetic. Bold block letters, gold accents, and academic prestige.",
+ "vibe": "Athletic, Collegiate, Bold",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Graduate:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&family=Bitter:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&family=Chivo+Mono:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Graduate",
+ "body": "Bitter",
+ "code": "Chivo Mono"
+ },
+ "colors": {
+ "text": "1A237E",
+ "textSecondary": "3949AB",
+ "background": "FFFFFF",
+ "accent": "FFD600",
+ "border": "E0E0E0",
+ "codeBg": "F5F5F5",
+ "blockquoteBorder": "1A237E"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 48,
+ "color": "1A237E",
+ "bold": true,
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.0
+ },
+ "allCaps": true,
+ "textShadow": "2px 2px 0px #FFD600",
+ "borderBottom": {
+ "color": "1A237E",
+ "width": 8,
+ "style": "double"
+ }
+ },
+ "h2": {
+ "font": "heading",
+ "size": 32,
+ "color": "FFFFFF",
+ "bold": true,
+ "align": "center",
+ "spacing": {
+ "before": 20,
+ "after": 10,
+ "line": 1.1
+ },
+ "background": "1A237E",
+ "padding": 12,
+ "borderTop": {
+ "color": "FFD600",
+ "width": 4,
+ "style": "solid"
+ },
+ "borderBottom": {
+ "color": "FFD600",
+ "width": 4,
+ "style": "solid"
+ },
+ "display": "block",
+ "allCaps": true
+ },
+ "h3": {
+ "font": "body",
+ "size": 24,
+ "color": "1A237E",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.2
+ },
+ "borderLeft": {
+ "color": "FFD600",
+ "width": 6,
+ "style": "solid"
+ }
+ ,
+ "padding": 6
+ },
+ "h4": {
+ "font": "body",
+ "size": 20,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 14,
+ "after": 6,
+ "line": 1.3
+ },
+ "allCaps": true
+ },
+ "h5": {
+ "font": "heading",
+ "size": 16,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 12,
+ "after": 6,
+ "line": 1.4
+ }
+ },
+ "h6": {
+ "font": "body",
+ "size": 14,
+ "color": "textSecondary",
+ "italic": true,
+ "align": "left",
+ "spacing": {
+ "before": 12,
+ "after": 6,
+ "line": 1.4
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 18,
+ "color": "2c3e50",
+ "align": "left",
+ "spacing": {
+ "before": 0,
+ "after": 12,
+ "line": 1.6
+ },
+ "weight": 400
+ },
+ "blockquote": {
+ "font": "heading",
+ "size": 20,
+ "color": "1A237E",
+ "bold": false,
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.3
+ },
+ "padding": 24,
+ "border": {
+ "color": "FFD600",
+ "width": 4,
+ "style": "solid"
+ },
+ "background": "FAFAFA",
+ "italic": false
+ },
+ "code": {
+ "font": "code",
+ "size": 14,
+ "color": "text",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.4
+ }
+ },
+ "pre": {
+ "font": "code",
+ "size": 14,
+ "color": "text",
+ "background": "codeBg",
+ "padding": 16,
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.4
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ },
+ "borderRadius": 4
+ },
+ "ul": {
+ "spacing": {
+ "before": 12,
+ "after": 12,
+ "line": 1.6
+ },
+ "indent": 20,
+ "bullet": "disc"
+ },
+ "ol": {
+ "spacing": {
+ "before": 12,
+ "after": 12,
+ "line": 1.6
+ },
+ "indent": 20,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 18,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.6
+ }
+ },
+ "strong": {
+ "font": "heading",
+ "bold": true,
+ "color": "1A237E"
+ },
+ "em": {
+ "font": "body",
+ "italic": true,
+ "color": "FFD600"
+ },
+ "a": {
+ "font": "body",
+ "color": "1A237E",
+ "underline": true,
+ "bold": true
+ },
+ "table": {
+ "spacing": {
+ "before": 20,
+ "after": 20,
+ "line": 1.3
+ },
+ "border": {
+ "color": "1A237E",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "heading",
+ "size": 16,
+ "color": "FFFFFF",
+ "bold": true,
+ "background": "1A237E",
+ "padding": 12,
+ "borderBottom": {
+ "color": "FFD600",
+ "width": 4,
+ "style": "solid"
+ }
+ },
+ "td": {
+ "font": "body",
+ "size": 16,
+ "color": "text",
+ "padding": 12,
+ "borderBottom": {
+ "color": "E0E0E0",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 30,
+ "after": 30
+ },
+ "border": {
+ "color": "FFD600",
+ "width": 6,
+ "style": "double"
+ }
+ },
+ "img": {
+ "align": "center",
+ "spacing": {
+ "before": 20,
+ "after": 20
+ },
+ "border": {
+ "color": "1A237E",
+ "width": 4,
+ "style": "solid"
+ }
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true,
+ "color": "757575"
+ },
+ "sup": {
+ "font": "body",
+ "size": 10,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 10,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "FFD600",
+ "color": "1A237E"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 12,
+ "color": "textSecondary",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 12,
+ "color": "textSecondary",
+ "spacing": {
+ "before": 6,
+ "after": 6,
+ "line": 1.3
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 72,
+ "bottom": 72,
+ "left": 72,
+ "right": 72
+ },
+ "columns": 1,
+ "header": true,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/corporate/annual-report.json b/src-tauri/templates/corporate/annual-report.json
new file mode 100644
index 0000000..d7704e1
--- /dev/null
+++ b/src-tauri/templates/corporate/annual-report.json
@@ -0,0 +1,315 @@
+{
+ "id": "annual-report",
+ "name": "Annual Report",
+ "category": "Corporate",
+ "description": "Trustworthy and substantial. Deep navy blues, clean sans-serifs, and grid-like precision for financial clarity.",
+ "vibe": "Financial, Serious, Trust",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Libre+Franklin:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&family=Merriweather:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&family=Roboto+Mono:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Libre Franklin",
+ "body": "Merriweather",
+ "code": "Roboto Mono"
+ },
+ "colors": {
+ "text": "333333",
+ "textSecondary": "666666",
+ "background": "FFFFFF",
+ "accent": "0D2B46",
+ "border": "E0E0E0",
+ "codeBg": "F5F7FA",
+ "blockquoteBorder": "0D2B46"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 36,
+ "color": "accent",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 40,
+ "after": 20,
+ "line": 1.1
+ },
+ "weight": 900,
+ "borderBottom": {
+ "color": "accent",
+ "width": 4,
+ "style": "solid"
+ }
+ },
+ "h2": {
+ "font": "heading",
+ "size": 24,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 32,
+ "after": 16,
+ "line": 1.2
+ },
+ "allCaps": true,
+ "letterSpacing": 1,
+ "borderBottom": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "h3": {
+ "font": "heading",
+ "size": 18,
+ "color": "accent",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.3
+ }
+ },
+ "h4": {
+ "font": "heading",
+ "size": 14,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 20,
+ "after": 10,
+ "line": 1.4
+ }
+ },
+ "h5": {
+ "font": "heading",
+ "size": 12,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ },
+ "allCaps": true
+ },
+ "h6": {
+ "font": "heading",
+ "size": 10,
+ "color": "textSecondary",
+ "italic": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "align": "justify",
+ "spacing": {
+ "before": 0,
+ "after": 12,
+ "line": 1.6
+ },
+ "weight": 300
+ },
+ "blockquote": {
+ "font": "body",
+ "size": 14,
+ "color": "accent",
+ "italic": true,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.5
+ },
+ "padding": 20,
+ "borderLeft": {
+ "color": "accent",
+ "width": 6,
+ "style": "solid"
+ },
+ "background": "F5F7FA"
+ },
+ "code": {
+ "font": "code",
+ "size": 10,
+ "color": "accent",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.4
+ }
+ },
+ "pre": {
+ "font": "code",
+ "size": 10,
+ "color": "text",
+ "background": "codeBg",
+ "padding": 16,
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.4
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "ul": {
+ "spacing": {
+ "before": 12,
+ "after": 12,
+ "line": 1.6
+ },
+ "indent": 24,
+ "bullet": "square"
+ },
+ "ol": {
+ "spacing": {
+ "before": 12,
+ "after": 12,
+ "line": 1.6
+ },
+ "indent": 24,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.6
+ }
+ },
+ "strong": {
+ "font": "heading",
+ "bold": true,
+ "color": "accent"
+ },
+ "em": {
+ "font": "body",
+ "italic": true
+ },
+ "a": {
+ "font": "heading",
+ "color": "accent",
+ "underline": true,
+ "bold": true
+ },
+ "table": {
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.2
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "heading",
+ "size": 10,
+ "color": "FFFFFF",
+ "bold": true,
+ "background": "accent",
+ "padding": 8
+ },
+ "td": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "padding": 8,
+ "borderBottom": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 32,
+ "after": 32
+ },
+ "border": {
+ "color": "accent",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "img": {
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 24
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true,
+ "color": "textSecondary"
+ },
+ "sup": {
+ "font": "body",
+ "size": 8,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 8,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "FFF9C4",
+ "color": "text"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 9,
+ "color": "textSecondary",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 9,
+ "color": "textSecondary",
+ "spacing": {
+ "before": 6,
+ "after": 6,
+ "line": 1.2
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 50,
+ "bottom": 50,
+ "left": 50,
+ "right": 50
+ },
+ "columns": 1,
+ "header": true,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/corporate/corporate-executive.json b/src-tauri/templates/corporate/corporate-executive.json
new file mode 100644
index 0000000..aff561e
--- /dev/null
+++ b/src-tauri/templates/corporate/corporate-executive.json
@@ -0,0 +1,309 @@
+{
+ "id": "corporate-executive",
+ "name": "Corporate Executive",
+ "category": "Corporate",
+ "description": "Authoritative and professional. Designed for board reports, executive summaries, and high-stakes business communications.",
+ "vibe": "Executive, Formal, Trustworthy",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Source+Serif+4:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&family=Source+Sans+3:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&family=Inconsolata:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Source Serif 4",
+ "body": "Source Sans 3",
+ "code": "Inconsolata"
+ },
+ "colors": {
+ "text": "333333",
+ "textSecondary": "546E7A",
+ "background": "FFFFFF",
+ "accent": "1A237E",
+ "border": "B0BEC5",
+ "codeBg": "ECEFF1",
+ "blockquoteBorder": "1A237E"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 28,
+ "color": "accent",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 30,
+ "after": 15,
+ "line": 1.2
+ },
+ "borderBottom": {
+ "color": "accent",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "h2": {
+ "font": "body",
+ "size": 18,
+ "color": "303F9F",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.3
+ },
+ "allCaps": true,
+ "letterSpacing": 0.5
+ },
+ "h3": {
+ "font": "heading",
+ "size": 16,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 20,
+ "after": 10,
+ "line": 1.3
+ }
+ },
+ "h4": {
+ "font": "body",
+ "size": 14,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ },
+ "italic": true
+ },
+ "h5": {
+ "font": "body",
+ "size": 12,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "h6": {
+ "font": "body",
+ "size": 11,
+ "color": "textSecondary",
+ "italic": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "align": "left",
+ "spacing": {
+ "before": 0,
+ "after": 14,
+ "line": 1.6
+ },
+ "weight": 400
+ },
+ "blockquote": {
+ "font": "heading",
+ "size": 14,
+ "color": "accent",
+ "italic": true,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.5
+ },
+ "padding": 16,
+ "borderLeft": {
+ "color": "accent",
+ "width": 4,
+ "style": "solid"
+ },
+ "background": "F8F9FA"
+ },
+ "code": {
+ "font": "code",
+ "size": 10,
+ "color": "text",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.4
+ }
+ },
+ "pre": {
+ "font": "code",
+ "size": 10,
+ "color": "text",
+ "background": "codeBg",
+ "padding": 12,
+ "spacing": {
+ "before": 12,
+ "after": 12,
+ "line": 1.4
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "ul": {
+ "spacing": {
+ "before": 12,
+ "after": 12,
+ "line": 1.6
+ },
+ "indent": 24,
+ "bullet": "disc"
+ },
+ "ol": {
+ "spacing": {
+ "before": 12,
+ "after": 12,
+ "line": 1.6
+ },
+ "indent": 24,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.6
+ }
+ },
+ "strong": {
+ "font": "heading",
+ "bold": true,
+ "color": "accent"
+ },
+ "em": {
+ "font": "body",
+ "italic": true
+ },
+ "a": {
+ "font": "body",
+ "color": "303F9F",
+ "underline": true,
+ "bold": false
+ },
+ "table": {
+ "spacing": {
+ "before": 20,
+ "after": 20,
+ "line": 1.2
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "heading",
+ "size": 11,
+ "color": "FFFFFF",
+ "bold": true,
+ "background": "accent",
+ "padding": 10
+ },
+ "td": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "padding": 10,
+ "borderBottom": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 30,
+ "after": 30
+ },
+ "border": {
+ "color": "accent",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "img": {
+ "align": "left",
+ "spacing": {
+ "before": 20,
+ "after": 20
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true,
+ "color": "textSecondary"
+ },
+ "sup": {
+ "font": "body",
+ "size": 9,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 9,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "E8EAF6",
+ "color": "text"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "spacing": {
+ "before": 6,
+ "after": 6,
+ "line": 1.2
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 72,
+ "bottom": 72,
+ "left": 72,
+ "right": 72
+ },
+ "columns": 1,
+ "header": true,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/corporate/credit-card-platinum.json b/src-tauri/templates/corporate/credit-card-platinum.json
new file mode 100644
index 0000000..cc1912c
--- /dev/null
+++ b/src-tauri/templates/corporate/credit-card-platinum.json
@@ -0,0 +1,316 @@
+{
+ "id": "credit-card-platinum",
+ "name": "Platinum Card",
+ "category": "Corporate",
+ "description": "Exclusive and premium. Metallic silver gradients, OCR-style numbering, and sharp contrast.",
+ "vibe": "Luxury, Financial, Metallic",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Cinzel:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&family=Montserrat:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&family=Share+Tech+Mono:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Cinzel",
+ "body": "Montserrat",
+ "code": "Share Tech Mono"
+ },
+ "colors": {
+ "text": "E0E0E0",
+ "textSecondary": "B0BEC5",
+ "background": "121212",
+ "accent": "FFD700",
+ "border": "424242",
+ "codeBg": "263238",
+ "blockquoteBorder": "B0BEC5"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 28,
+ "color": "E0E0E0",
+ "bold": true,
+ "align": "right",
+ "spacing": {
+ "before": 40,
+ "after": 20,
+ "line": 1.2
+ },
+ "allCaps": true,
+ "textShadow": "0px 2px 4px rgba(0,0,0,0.5)"
+ },
+ "h2": {
+ "font": "body",
+ "size": 18,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 30,
+ "after": 10,
+ "line": 1.3
+ },
+ "allCaps": true,
+ "letterSpacing": 2.0
+ },
+ "h3": {
+ "font": "code",
+ "size": 16,
+ "color": "E0E0E0",
+ "bold": false,
+ "align": "left",
+ "spacing": {
+ "before": 20,
+ "after": 10,
+ "line": 1.4
+ },
+ "textShadow": "1px 1px 0px #000000"
+ },
+ "h4": {
+ "font": "body",
+ "size": 14,
+ "color": "accent",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ },
+ "allCaps": true
+ },
+ "h5": {
+ "font": "body",
+ "size": 12,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "h6": {
+ "font": "code",
+ "size": 10,
+ "color": "textSecondary",
+ "italic": false,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 11,
+ "color": "E0E0E0",
+ "align": "left",
+ "spacing": {
+ "before": 0,
+ "after": 16,
+ "line": 1.6
+ },
+ "weight": 300
+ },
+ "blockquote": {
+ "font": "heading",
+ "size": 14,
+ "color": "E0E0E0",
+ "italic": true,
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.5
+ },
+ "padding": 20,
+ "borderTop": {
+ "color": "accent",
+ "width": 1,
+ "style": "solid"
+ },
+ "borderBottom": {
+ "color": "accent",
+ "width": 1,
+ "style": "solid"
+ },
+ "background": "263238"
+ },
+ "code": {
+ "font": "code",
+ "size": 12,
+ "color": "accent",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.4
+ },
+ "letterSpacing": 1.5
+ },
+ "pre": {
+ "font": "code",
+ "size": 12,
+ "color": "E0E0E0",
+ "background": "codeBg",
+ "padding": 16,
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.4
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "ul": {
+ "spacing": {
+ "before": 12,
+ "after": 12,
+ "line": 1.6
+ },
+ "indent": 20,
+ "bullet": "diamond"
+ },
+ "ol": {
+ "spacing": {
+ "before": 12,
+ "after": 12,
+ "line": 1.6
+ },
+ "indent": 20,
+ "numbering": "decimal-zero"
+ },
+ "li": {
+ "font": "body",
+ "size": 11,
+ "color": "E0E0E0",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.6
+ }
+ },
+ "strong": {
+ "font": "heading",
+ "bold": true,
+ "color": "FFFFFF"
+ },
+ "em": {
+ "font": "body",
+ "italic": true,
+ "color": "textSecondary"
+ },
+ "a": {
+ "font": "body",
+ "color": "accent",
+ "underline": true,
+ "bold": true
+ },
+ "table": {
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.2
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ },
+ "background": "212121"
+ },
+ "th": {
+ "font": "heading",
+ "size": 10,
+ "color": "121212",
+ "bold": true,
+ "background": "B0BEC5",
+ "padding": 8
+ },
+ "td": {
+ "font": "body",
+ "size": 11,
+ "color": "E0E0E0",
+ "padding": 8,
+ "borderBottom": {
+ "color": "424242",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 36,
+ "after": 36
+ },
+ "border": {
+ "color": "B0BEC5",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "img": {
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 24
+ },
+ "border": {
+ "color": "B0BEC5",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true,
+ "color": "757575"
+ },
+ "sup": {
+ "font": "body",
+ "size": 9,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 9,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "424242",
+ "color": "accent"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 9,
+ "color": "757575",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 9,
+ "color": "757575",
+ "spacing": {
+ "before": 6,
+ "after": 6,
+ "line": 1.2
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 40,
+ "bottom": 40,
+ "left": 40,
+ "right": 40
+ },
+ "columns": 1,
+ "header": true,
+ "footer": true,
+ "background": "121212"
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/corporate/currency-bill.json b/src-tauri/templates/corporate/currency-bill.json
new file mode 100644
index 0000000..e0cab79
--- /dev/null
+++ b/src-tauri/templates/corporate/currency-bill.json
@@ -0,0 +1,314 @@
+{
+ "id": "currency-bill",
+ "name": "Currency Bill",
+ "category": "Corporate",
+ "description": "Engraved authority. Intricate border styles, heavy serif headings, and banknote aesthetics.",
+ "vibe": "Federal, Official, Monetary",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Playfair+Display+SC:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&family=Noto+Serif:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&family=Fira+Code:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Playfair Display SC",
+ "body": "Noto Serif",
+ "code": "Fira Code"
+ },
+ "colors": {
+ "text": "1B3022",
+ "textSecondary": "4A5D50",
+ "background": "F4F8F4",
+ "accent": "2E7D32",
+ "border": "B9C6BD",
+ "codeBg": "E8F5E9",
+ "blockquoteBorder": "2E7D32"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 36,
+ "color": "1B3022",
+ "bold": true,
+ "align": "center",
+ "spacing": {
+ "before": 40,
+ "after": 20,
+ "line": 1.0
+ },
+ "allCaps": true,
+ "textShadow": "0px 1px 0px rgba(0,0,0,0.2), 0px 0px 0px #1B3022"
+ },
+ "h2": {
+ "font": "heading",
+ "size": 24,
+ "color": "accent",
+ "bold": true,
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.2
+ },
+ "borderTop": {
+ "color": "accent",
+ "width": 1,
+ "style": "double"
+ },
+ "borderBottom": {
+ "color": "accent",
+ "width": 1,
+ "style": "double"
+ },
+ "padding": 8
+ },
+ "h3": {
+ "font": "heading",
+ "size": 18,
+ "color": "1B3022",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 20,
+ "after": 10,
+ "line": 1.2
+ }
+ },
+ "h4": {
+ "font": "heading",
+ "size": 16,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.3
+ }
+ },
+ "h5": {
+ "font": "heading",
+ "size": 14,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.3
+ }
+ },
+ "h6": {
+ "font": "body",
+ "size": 12,
+ "color": "textSecondary",
+ "italic": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.3
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "align": "justify",
+ "spacing": {
+ "before": 0,
+ "after": 12,
+ "line": 1.5
+ },
+ "weight": 400
+ },
+ "blockquote": {
+ "font": "heading",
+ "size": 16,
+ "color": "1B3022",
+ "italic": false,
+ "align": "center",
+ "spacing": {
+ "before": 20,
+ "after": 20,
+ "line": 1.4
+ },
+ "padding": 20,
+ "border": {
+ "color": "accent",
+ "width": 3,
+ "style": "solid"
+ },
+ "background": "E8F5E9"
+ },
+ "code": {
+ "font": "code",
+ "size": 11,
+ "color": "1B3022",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.4
+ }
+ },
+ "pre": {
+ "font": "code",
+ "size": 11,
+ "color": "1B3022",
+ "background": "codeBg",
+ "padding": 12,
+ "spacing": {
+ "before": 12,
+ "after": 12,
+ "line": 1.4
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "ul": {
+ "spacing": {
+ "before": 12,
+ "after": 12,
+ "line": 1.5
+ },
+ "indent": 24,
+ "bullet": "disc"
+ },
+ "ol": {
+ "spacing": {
+ "before": 12,
+ "after": 12,
+ "line": 1.5
+ },
+ "indent": 24,
+ "numbering": "upper-roman"
+ },
+ "li": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "spacing": {
+ "before": 2,
+ "after": 2,
+ "line": 1.5
+ }
+ },
+ "strong": {
+ "font": "heading",
+ "bold": true,
+ "color": "1B3022"
+ },
+ "em": {
+ "font": "body",
+ "italic": true
+ },
+ "a": {
+ "font": "body",
+ "color": "accent",
+ "underline": true,
+ "bold": true
+ },
+ "table": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.2
+ },
+ "border": {
+ "color": "1B3022",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "heading",
+ "size": 11,
+ "color": "F4F8F4",
+ "bold": true,
+ "background": "1B3022",
+ "padding": 8
+ },
+ "td": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "padding": 8,
+ "borderBottom": {
+ "color": "B9C6BD",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 24,
+ "after": 24
+ },
+ "border": {
+ "color": "1B3022",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "img": {
+ "align": "center",
+ "spacing": {
+ "before": 20,
+ "after": 20
+ },
+ "border": {
+ "color": "1B3022",
+ "width": 4,
+ "style": "double"
+ }
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true,
+ "color": "textSecondary"
+ },
+ "sup": {
+ "font": "body",
+ "size": 9,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 9,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "C8E6C9",
+ "color": "text"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.2
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 40,
+ "bottom": 40,
+ "left": 40,
+ "right": 40
+ },
+ "columns": 1,
+ "header": true,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/corporate/legal-contract.json b/src-tauri/templates/corporate/legal-contract.json
new file mode 100644
index 0000000..2047ea4
--- /dev/null
+++ b/src-tauri/templates/corporate/legal-contract.json
@@ -0,0 +1,310 @@
+{
+ "id": "legal-contract",
+ "name": "Legal Contract",
+ "category": "Corporate",
+ "description": "The standard analysis. Dense serif typography, defined numbering, and ironclad readability.",
+ "vibe": "Legal, Binding, Formal",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Tinos:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&family=Courier+Prime:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Tinos",
+ "body": "Tinos",
+ "code": "Courier Prime"
+ },
+ "colors": {
+ "text": "000000",
+ "textSecondary": "333333",
+ "background": "FFFFFF",
+ "accent": "000000",
+ "border": "000000",
+ "codeBg": "F0F0F0",
+ "blockquoteBorder": "000000"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 16,
+ "color": "text",
+ "bold": true,
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.2
+ },
+ "allCaps": true,
+ "underline": true
+ },
+ "h2": {
+ "font": "heading",
+ "size": 14,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 18,
+ "after": 6,
+ "line": 1.2
+ },
+ "allCaps": true
+ },
+ "h3": {
+ "font": "heading",
+ "size": 12,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 12,
+ "after": 6,
+ "line": 1.2
+ },
+ "underline": true
+ },
+ "h4": {
+ "font": "heading",
+ "size": 12,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 12,
+ "after": 6,
+ "line": 1.2
+ }
+ },
+ "h5": {
+ "font": "heading",
+ "size": 11,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 12,
+ "after": 6,
+ "line": 1.2
+ },
+ "italic": true
+ },
+ "h6": {
+ "font": "heading",
+ "size": 11,
+ "color": "text",
+ "italic": true,
+ "align": "left",
+ "spacing": {
+ "before": 12,
+ "after": 6,
+ "line": 1.2
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "align": "justify",
+ "spacing": {
+ "before": 0,
+ "after": 12,
+ "line": 1.15
+ },
+ "numbering": "section"
+ },
+ "blockquote": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "italic": false,
+ "align": "left",
+ "spacing": {
+ "before": 12,
+ "after": 12,
+ "line": 1.15
+ },
+ "padding": 12,
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "code": {
+ "font": "code",
+ "size": 10,
+ "color": "text",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.4
+ }
+ },
+ "pre": {
+ "font": "code",
+ "size": 10,
+ "color": "text",
+ "background": "codeBg",
+ "padding": 12,
+ "spacing": {
+ "before": 12,
+ "after": 12,
+ "line": 1.4
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "ul": {
+ "spacing": {
+ "before": 12,
+ "after": 12,
+ "line": 1.15
+ },
+ "indent": 36,
+ "bullet": "disc"
+ },
+ "ol": {
+ "spacing": {
+ "before": 12,
+ "after": 12,
+ "line": 1.15
+ },
+ "indent": 36,
+ "numbering": "lower-alpha"
+ },
+ "li": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "spacing": {
+ "before": 0,
+ "after": 6,
+ "line": 1.15
+ }
+ },
+ "strong": {
+ "font": "body",
+ "bold": true,
+ "color": "text"
+ },
+ "em": {
+ "font": "body",
+ "italic": true
+ },
+ "a": {
+ "font": "body",
+ "color": "text",
+ "underline": true,
+ "bold": false
+ },
+ "table": {
+ "spacing": {
+ "before": 12,
+ "after": 12,
+ "line": 1.2
+ },
+ "border": {
+ "color": "000000",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "heading",
+ "size": 11,
+ "color": "text",
+ "bold": true,
+ "background": "F0F0F0",
+ "padding": 6,
+ "borderBottom": {
+ "color": "000000",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "td": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "padding": 6,
+ "borderBottom": {
+ "color": "CCCCCC",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 24,
+ "after": 24
+ },
+ "border": {
+ "color": "000000",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "img": {
+ "align": "center",
+ "spacing": {
+ "before": 12,
+ "after": 12
+ },
+ "border": {
+ "color": "000000",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true,
+ "color": "text"
+ },
+ "sup": {
+ "font": "body",
+ "size": 9,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 9,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "FFFF00",
+ "color": "text"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "spacing": {
+ "before": 6,
+ "after": 6,
+ "line": 1.2
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 72,
+ "bottom": 72,
+ "left": 72,
+ "right": 72
+ },
+ "columns": 1,
+ "header": false,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/corporate/legal-pleading.json b/src-tauri/templates/corporate/legal-pleading.json
new file mode 100644
index 0000000..6af9974
--- /dev/null
+++ b/src-tauri/templates/corporate/legal-pleading.json
@@ -0,0 +1,310 @@
+{
+ "id": "legal-pleading",
+ "name": "Legal Pleading",
+ "category": "Corporate",
+ "description": "Court-ready pleading format. Pleading paper line numbers, double spacing, and strict compliance.",
+ "vibe": "Courtroom, Litigation, Procedural",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Courier+Prime:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Courier Prime",
+ "body": "Courier Prime",
+ "code": "Courier Prime"
+ },
+ "colors": {
+ "text": "000000",
+ "textSecondary": "000000",
+ "background": "FFFFFF",
+ "accent": "000000",
+ "border": "000000",
+ "codeBg": "FFFFFF",
+ "blockquoteBorder": "000000"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 12,
+ "color": "text",
+ "bold": true,
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 2.0
+ },
+ "allCaps": true,
+ "underline": true
+ },
+ "h2": {
+ "font": "heading",
+ "size": 12,
+ "color": "text",
+ "bold": true,
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 2.0
+ },
+ "allCaps": true
+ },
+ "h3": {
+ "font": "heading",
+ "size": 12,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 12,
+ "after": 0,
+ "line": 2.0
+ },
+ "underline": true
+ },
+ "h4": {
+ "font": "heading",
+ "size": 12,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 12,
+ "after": 0,
+ "line": 2.0
+ }
+ },
+ "h5": {
+ "font": "heading",
+ "size": 12,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 12,
+ "after": 0,
+ "line": 2.0
+ },
+ "italic": true
+ },
+ "h6": {
+ "font": "heading",
+ "size": 12,
+ "color": "text",
+ "italic": true,
+ "align": "left",
+ "spacing": {
+ "before": 12,
+ "after": 0,
+ "line": 2.0
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "align": "justify",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 2.0
+ },
+ "indent": 48
+ },
+ "blockquote": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "italic": false,
+ "align": "left",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.0
+ },
+ "padding": 48,
+ "borderLeft": {
+ "color": "transparent",
+ "width": 0,
+ "style": "none"
+ }
+ },
+ "code": {
+ "font": "code",
+ "size": 12,
+ "color": "text",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 2.0
+ }
+ },
+ "pre": {
+ "font": "code",
+ "size": 12,
+ "color": "text",
+ "background": "codeBg",
+ "padding": 12,
+ "spacing": {
+ "before": 12,
+ "after": 12,
+ "line": 2.0
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "ul": {
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 2.0
+ },
+ "indent": 48,
+ "bullet": "disc"
+ },
+ "ol": {
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 2.0
+ },
+ "indent": 48,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 2.0
+ }
+ },
+ "strong": {
+ "font": "body",
+ "bold": true,
+ "color": "text"
+ },
+ "em": {
+ "font": "body",
+ "italic": true
+ },
+ "a": {
+ "font": "body",
+ "color": "text",
+ "underline": true,
+ "bold": false
+ },
+ "table": {
+ "spacing": {
+ "before": 12,
+ "after": 12,
+ "line": 1.0
+ },
+ "border": {
+ "color": "000000",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "heading",
+ "size": 12,
+ "color": "text",
+ "bold": true,
+ "background": "FFFFFF",
+ "padding": 6,
+ "borderBottom": {
+ "color": "000000",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "td": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "padding": 6,
+ "borderBottom": {
+ "color": "000000",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 24,
+ "after": 24
+ },
+ "border": {
+ "color": "000000",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "img": {
+ "align": "center",
+ "spacing": {
+ "before": 12,
+ "after": 12
+ },
+ "border": {
+ "color": "000000",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true,
+ "color": "text"
+ },
+ "sup": {
+ "font": "body",
+ "size": 9,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 9,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "FFFF00",
+ "color": "text"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "spacing": {
+ "before": 6,
+ "after": 6,
+ "line": 1.0
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 72,
+ "bottom": 72,
+ "left": 108,
+ "right": 72
+ },
+ "columns": 1,
+ "header": true,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/corporate/passport-official.json b/src-tauri/templates/corporate/passport-official.json
new file mode 100644
index 0000000..7b93bdf
--- /dev/null
+++ b/src-tauri/templates/corporate/passport-official.json
@@ -0,0 +1,174 @@
+{
+ "id": "passport-official",
+ "name": "Official Passport",
+ "category": "Corporate",
+ "description": "Secure identity document style. Microprint aesthetics, guilloche suggestions, and OCR fonts.",
+ "vibe": "Government, Secure, Travel",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Roboto:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&family=Space+Mono:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Roboto",
+ "body": "Space Mono",
+ "code": "Space Mono"
+ },
+ "colors": {
+ "text": "1A237E",
+ "textSecondary": "3949AB",
+ "background": "E8EAF6",
+ "accent": "C2185B",
+ "border": "B39DDB",
+ "codeBg": "E3F2FD",
+ "blockquoteBorder": "1A237E"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 24,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "spacing": { "before": 24, "after": 12, "line": 1.2 },
+ "allCaps": true,
+ "letterSpacing": 1.0,
+ "borderBottom": { "color": "accent", "width": 2, "style": "solid" }
+ },
+ "h2": {
+ "font": "heading",
+ "size": 18,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": { "before": 20, "after": 10, "line": 1.3 },
+ "allCaps": true
+ },
+ "h3": {
+ "font": "heading",
+ "size": 16,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "spacing": { "before": 16, "after": 8, "line": 1.3 }
+ },
+ "h4": {
+ "font": "body",
+ "size": 14,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": { "before": 16, "after": 8, "line": 1.4 },
+ "allCaps": true
+ },
+ "h5": {
+ "font": "body",
+ "size": 12,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": { "before": 12, "after": 6, "line": 1.4 }
+ },
+ "h6": {
+ "font": "body",
+ "size": 11,
+ "color": "textSecondary",
+ "italic": true,
+ "align": "left",
+ "spacing": { "before": 12, "after": 6, "line": 1.4 }
+ },
+ "p": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "align": "left",
+ "spacing": { "before": 0, "after": 12, "line": 1.5 },
+ "weight": 500
+ },
+ "blockquote": {
+ "font": "code",
+ "size": 12,
+ "color": "accent",
+ "italic": false,
+ "align": "left",
+ "spacing": { "before": 16, "after": 16, "line": 1.4 },
+ "padding": 16,
+ "border": { "color": "accent", "width": 2, "style": "dashed" },
+ "background": "FFFFFF"
+ },
+ "code": {
+ "font": "code",
+ "size": 11,
+ "color": "text",
+ "background": "codeBg",
+ "spacing": { "before": 0, "after": 0, "line": 1.4 }
+ },
+ "pre": {
+ "font": "code",
+ "size": 11,
+ "color": "text",
+ "background": "codeBg",
+ "padding": 12,
+ "spacing": { "before": 12, "after": 12, "line": 1.4 },
+ "border": { "color": "border", "width": 1, "style": "solid" }
+ },
+ "ul": {
+ "spacing": { "before": 12, "after": 12, "line": 1.5 },
+ "indent": 20,
+ "bullet": "square"
+ },
+ "ol": {
+ "spacing": { "before": 12, "after": 12, "line": 1.5 },
+ "indent": 20,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "spacing": { "before": 4, "after": 4, "line": 1.5 }
+ },
+ "strong": { "font": "heading", "bold": true, "color": "text" },
+ "em": { "font": "body", "italic": true },
+ "a": { "font": "body", "color": "accent", "underline": true, "bold": true },
+ "table": {
+ "spacing": { "before": 16, "after": 16, "line": 1.2 },
+ "border": { "color": "border", "width": 1, "style": "solid" }
+ },
+ "th": {
+ "font": "heading",
+ "size": 11,
+ "color": "FFFFFF",
+ "bold": true,
+ "background": "text",
+ "padding": 8
+ },
+ "td": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "padding": 8,
+ "borderBottom": { "color": "border", "width": 1, "style": "solid" }
+ },
+ "hr": {
+ "spacing": { "before": 24, "after": 24 },
+ "border": { "color": "border", "width": 1, "style": "solid" }
+ },
+ "img": {
+ "align": "left",
+ "spacing": { "before": 16, "after": 16 },
+ "border": { "color": "text", "width": 2, "style": "solid" },
+ "filter": "grayscale(100%)"
+ },
+ "del": { "font": "body", "strikethrough": true, "color": "accent" },
+ "sup": { "font": "body", "size": 9, "superScript": true },
+ "sub": { "font": "body", "size": 9, "subScript": true },
+ "mark": { "font": "body", "background": "E1BEE7", "color": "text" },
+ "footnote": { "font": "body", "size": 10, "color": "textSecondary", "superScript": true },
+ "footnoteRef": { "font": "body", "size": 10, "color": "textSecondary", "spacing": { "before": 6, "after": 6, "line": 1.2 } }
+ },
+ "page": {
+ "margins": { "top": 40, "bottom": 40, "left": 40, "right": 40 },
+ "columns": 1,
+ "header": true,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/corporate/police-blotter.json b/src-tauri/templates/corporate/police-blotter.json
new file mode 100644
index 0000000..b28fb67
--- /dev/null
+++ b/src-tauri/templates/corporate/police-blotter.json
@@ -0,0 +1,317 @@
+{
+ "id": "police-blotter",
+ "name": "Police Blotter",
+ "category": "Corporate",
+ "description": "Bureaucratic field report style. Carbon copy aesthetics, monospace type, and form-like structure.",
+ "vibe": "Official, Gritty, Carbon Copy",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Special+Elite:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&family=Cutive+Mono:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Special Elite",
+ "body": "Cutive Mono",
+ "code": "Cutive Mono"
+ },
+ "colors": {
+ "text": "1A237E",
+ "textSecondary": "5C6BC0",
+ "background": "F5F5F5",
+ "accent": "B71C1C",
+ "border": "9FA8DA",
+ "codeBg": "E8EAF6",
+ "blockquoteBorder": "1A237E"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 24,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.2
+ },
+ "allCaps": true,
+ "borderBottom": {
+ "color": "text",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "h2": {
+ "font": "heading",
+ "size": 18,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 20,
+ "after": 10,
+ "line": 1.3
+ },
+ "background": "E8EAF6",
+ "padding": 4
+ },
+ "h3": {
+ "font": "heading",
+ "size": 16,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.3
+ },
+ "underline": true
+ },
+ "h4": {
+ "font": "body",
+ "size": 14,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ },
+ "allCaps": true
+ },
+ "h5": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 12,
+ "after": 6,
+ "line": 1.4
+ }
+ },
+ "h6": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "italic": true,
+ "align": "left",
+ "spacing": {
+ "before": 12,
+ "after": 6,
+ "line": 1.4
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 13,
+ "color": "text",
+ "align": "left",
+ "spacing": {
+ "before": 0,
+ "after": 12,
+ "line": 1.4
+ },
+ "weight": 400
+ },
+ "blockquote": {
+ "font": "heading",
+ "size": 14,
+ "color": "accent",
+ "italic": false,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.4
+ },
+ "padding": 16,
+ "border": {
+ "color": "accent",
+ "width": 3,
+ "style": "solid"
+ },
+ "background": "F5F5F5"
+ },
+ "code": {
+ "font": "code",
+ "size": 12,
+ "color": "text",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.4
+ }
+ },
+ "pre": {
+ "font": "code",
+ "size": 12,
+ "color": "text",
+ "background": "codeBg",
+ "padding": 12,
+ "spacing": {
+ "before": 12,
+ "after": 12,
+ "line": 1.4
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "dotted"
+ }
+ },
+ "ul": {
+ "spacing": {
+ "before": 12,
+ "after": 12,
+ "line": 1.4
+ },
+ "indent": 20,
+ "bullet": "hyphen"
+ },
+ "ol": {
+ "spacing": {
+ "before": 12,
+ "after": 12,
+ "line": 1.4
+ },
+ "indent": 20,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 13,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.4
+ }
+ },
+ "strong": {
+ "font": "heading",
+ "bold": true,
+ "color": "text"
+ },
+ "em": {
+ "font": "body",
+ "italic": true
+ },
+ "a": {
+ "font": "body",
+ "color": "accent",
+ "underline": true,
+ "bold": true
+ },
+ "table": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.2
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "heading",
+ "size": 12,
+ "color": "text",
+ "bold": true,
+ "background": "E8EAF6",
+ "padding": 8,
+ "borderBottom": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "td": {
+ "font": "body",
+ "size": 13,
+ "color": "text",
+ "padding": 8,
+ "borderBottom": {
+ "color": "border",
+ "width": 1,
+ "style": "dotted"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 24,
+ "after": 24
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "dashed"
+ }
+ },
+ "img": {
+ "align": "center",
+ "spacing": {
+ "before": 16,
+ "after": 16
+ },
+ "border": {
+ "color": "text",
+ "width": 2,
+ "style": "solid"
+ },
+ "filter": "contrast(120%) grayscale(50%)"
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true,
+ "color": "text"
+ },
+ "sup": {
+ "font": "body",
+ "size": 9,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 9,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "FFCDD2",
+ "color": "text"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "spacing": {
+ "before": 6,
+ "after": 6,
+ "line": 1.2
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 50,
+ "bottom": 50,
+ "left": 50,
+ "right": 50
+ },
+ "columns": 1,
+ "header": true,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/corporate/political-campaign.json b/src-tauri/templates/corporate/political-campaign.json
new file mode 100644
index 0000000..c63340a
--- /dev/null
+++ b/src-tauri/templates/corporate/political-campaign.json
@@ -0,0 +1,311 @@
+{
+ "id": "political-campaign",
+ "name": "Campaign Trail",
+ "category": "Corporate",
+ "description": "Bold, patriotic, and persuasive. Heavy sans-serif headlines designed for maximum visibility.",
+ "vibe": "Patriotic, Bold, Persuasive",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Montserrat:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&family=Roboto+Slab:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&family=Courier+Prime:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Montserrat",
+ "body": "Roboto Slab",
+ "code": "Courier Prime"
+ },
+ "colors": {
+ "text": "111111",
+ "textSecondary": "444444",
+ "background": "FFFFFF",
+ "accent": "BF0A30",
+ "border": "002868",
+ "codeBg": "F5F5F5",
+ "blockquoteBorder": "002868"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 48,
+ "color": "border",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 40,
+ "after": 20,
+ "line": 1.0
+ },
+ "allCaps": true,
+ "weight": 900
+ },
+ "h2": {
+ "font": "heading",
+ "size": 32,
+ "color": "accent",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 32,
+ "after": 16,
+ "line": 1.1
+ },
+ "allCaps": true,
+ "weight": 700
+ },
+ "h3": {
+ "font": "heading",
+ "size": 24,
+ "color": "border",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.2
+ }
+ },
+ "h4": {
+ "font": "heading",
+ "size": 18,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 20,
+ "after": 10,
+ "line": 1.3
+ }
+ },
+ "h5": {
+ "font": "heading",
+ "size": 16,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.3
+ }
+ },
+ "h6": {
+ "font": "body",
+ "size": 14,
+ "color": "textSecondary",
+ "italic": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.3
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 14,
+ "color": "text",
+ "align": "left",
+ "spacing": {
+ "before": 0,
+ "after": 16,
+ "line": 1.6
+ },
+ "weight": 300
+ },
+ "blockquote": {
+ "font": "heading",
+ "size": 20,
+ "color": "border",
+ "italic": true,
+ "align": "center",
+ "spacing": {
+ "before": 30,
+ "after": 30,
+ "line": 1.4
+ },
+ "padding": 20,
+ "borderTop": {
+ "color": "accent",
+ "width": 4,
+ "style": "solid"
+ },
+ "borderBottom": {
+ "color": "accent",
+ "width": 4,
+ "style": "solid"
+ },
+ "background": "FFFFFF"
+ },
+ "code": {
+ "font": "code",
+ "size": 12,
+ "color": "text",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.4
+ }
+ },
+ "pre": {
+ "font": "code",
+ "size": 12,
+ "color": "text",
+ "background": "codeBg",
+ "padding": 16,
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.4
+ },
+ "border": {
+ "color": "textSecondary",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "ul": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 24,
+ "bullet": "square"
+ },
+ "ol": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 24,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 14,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.6
+ }
+ },
+ "strong": {
+ "font": "heading",
+ "bold": true,
+ "color": "border"
+ },
+ "em": {
+ "font": "body",
+ "italic": true,
+ "color": "accent"
+ },
+ "a": {
+ "font": "heading",
+ "color": "border",
+ "underline": true,
+ "bold": true
+ },
+ "table": {
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.2
+ },
+ "border": {
+ "color": "border",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "heading",
+ "size": 14,
+ "color": "FFFFFF",
+ "bold": true,
+ "background": "border",
+ "padding": 12
+ },
+ "td": {
+ "font": "body",
+ "size": 14,
+ "color": "text",
+ "padding": 12,
+ "borderBottom": {
+ "color": "textSecondary",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 40,
+ "after": 40
+ },
+ "border": {
+ "color": "accent",
+ "width": 4,
+ "style": "solid"
+ }
+ },
+ "img": {
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 24
+ },
+ "border": {
+ "color": "border",
+ "width": 4,
+ "style": "solid"
+ }
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true,
+ "color": "textSecondary"
+ },
+ "sup": {
+ "font": "body",
+ "size": 10,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 10,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "FFEB3B",
+ "color": "text"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "spacing": {
+ "before": 6,
+ "after": 6,
+ "line": 1.2
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 50,
+ "bottom": 50,
+ "left": 50,
+ "right": 50
+ },
+ "columns": 1,
+ "header": true,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/corporate/professional.json b/src-tauri/templates/corporate/professional.json
new file mode 100644
index 0000000..4329719
--- /dev/null
+++ b/src-tauri/templates/corporate/professional.json
@@ -0,0 +1,319 @@
+{
+ "id": "professional",
+ "name": "Professional Business",
+ "category": "Corporate",
+ "description": "The gold standard for reports and proposals. Trustworthy, authoritative, and perfectly structured.",
+ "vibe": "Corporate, Trustworthy, Polished",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Montserrat:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&family=Open+Sans:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&family=Roboto+Mono:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Montserrat",
+ "body": "Open Sans",
+ "code": "Roboto Mono"
+ },
+ "colors": {
+ "text": "1A202C",
+ "textSecondary": "4A5568",
+ "background": "FFFFFF",
+ "accent": "2C5282",
+ "border": "E2E8F0",
+ "codeBg": "EDF2F7",
+ "blockquoteBorder": "2C5282"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 32,
+ "color": "2C5282",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.2
+ },
+ "allCaps": true,
+ "letterSpacing": 1.0,
+ "borderBottom": {
+ "color": "E2E8F0",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "h2": {
+ "font": "heading",
+ "size": 24,
+ "color": "2D3748",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 20,
+ "after": 10,
+ "line": 1.2
+ },
+ "borderLeft": {
+ "color": "2C5282",
+ "width": 4,
+ "style": "solid"
+ }
+ ,
+ "padding": 8
+ },
+ "h3": {
+ "font": "heading",
+ "size": 18,
+ "color": "2C5282",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.3
+ },
+ "allCaps": true
+ },
+ "h4": {
+ "font": "heading",
+ "size": 16,
+ "color": "4A5568",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 6,
+ "line": 1.3
+ }
+ },
+ "h5": {
+ "font": "heading",
+ "size": 14,
+ "color": "4A5568",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 14,
+ "after": 6,
+ "line": 1.4
+ },
+ "allCaps": true
+ },
+ "h6": {
+ "font": "heading",
+ "size": 12,
+ "color": "718096",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 14,
+ "after": 6,
+ "line": 1.4
+ },
+ "allCaps": true
+ },
+ "p": {
+ "font": "body",
+ "size": 14,
+ "color": "1A202C",
+ "align": "left",
+ "spacing": {
+ "before": 0,
+ "after": 12,
+ "line": 1.6
+ },
+ "weight": 400
+ },
+ "blockquote": {
+ "font": "body",
+ "size": 14,
+ "color": "2D3748",
+ "italic": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "padding": 16,
+ "borderLeft": {
+ "color": "2C5282",
+ "width": 4,
+ "style": "solid"
+ },
+ "background": "F7FAFC"
+ },
+ "code": {
+ "font": "code",
+ "size": 12,
+ "color": "2D3748",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.4
+ }
+ },
+ "pre": {
+ "font": "code",
+ "size": 12,
+ "color": "2D3748",
+ "background": "codeBg",
+ "padding": 16,
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.4
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ },
+ "borderRadius": 4
+ },
+ "ul": {
+ "spacing": {
+ "before": 12,
+ "after": 12,
+ "line": 1.6
+ },
+ "indent": 20,
+ "bullet": "square"
+ },
+ "ol": {
+ "spacing": {
+ "before": 12,
+ "after": 12,
+ "line": 1.6
+ },
+ "indent": 20,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 14,
+ "color": "1A202C",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.6
+ }
+ },
+ "strong": {
+ "font": "heading",
+ "bold": true,
+ "color": "2C5282"
+ },
+ "em": {
+ "font": "body",
+ "italic": true
+ },
+ "a": {
+ "font": "body",
+ "color": "2C5282",
+ "underline": true,
+ "bold": true
+ },
+ "table": {
+ "spacing": {
+ "before": 20,
+ "after": 20,
+ "line": 1.3
+ },
+ "border": {
+ "color": "E2E8F0",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "heading",
+ "size": 12,
+ "color": "FFFFFF",
+ "bold": true,
+ "background": "2C5282",
+ "padding": 10
+ },
+ "td": {
+ "font": "body",
+ "size": 14,
+ "color": "1A202C",
+ "padding": 10,
+ "borderBottom": {
+ "color": "E2E8F0",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 30,
+ "after": 30
+ },
+ "border": {
+ "color": "2C5282",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "img": {
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 16
+ },
+ "border": {
+ "color": "E2E8F0",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true,
+ "color": "A0AEC0"
+ },
+ "sup": {
+ "font": "body",
+ "size": 10,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 10,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "ECC94B",
+ "color": "1A202C"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 12,
+ "color": "textSecondary",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 12,
+ "color": "textSecondary",
+ "spacing": {
+ "before": 6,
+ "after": 6,
+ "line": 1.3
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 72,
+ "bottom": 72,
+ "left": 72,
+ "right": 72
+ },
+ "columns": 1,
+ "header": true,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/corporate/stock-ticker.json b/src-tauri/templates/corporate/stock-ticker.json
new file mode 100644
index 0000000..b24e135
--- /dev/null
+++ b/src-tauri/templates/corporate/stock-ticker.json
@@ -0,0 +1,311 @@
+{
+ "id": "stock-ticker",
+ "name": "Wall Street",
+ "category": "Corporate",
+ "description": "High-frequency trading aesthetic. Neon green data on a pitch-black terminal background.",
+ "vibe": "Financial, Digital, Dark Mode",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=VT323:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&family=JetBrains+Mono:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "VT323",
+ "body": "JetBrains Mono",
+ "code": "VT323"
+ },
+ "colors": {
+ "text": "00FF00",
+ "textSecondary": "008800",
+ "background": "000000",
+ "accent": "00FF00",
+ "border": "003300",
+ "codeBg": "0A0A0A",
+ "blockquoteBorder": "00FF00"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 36,
+ "color": "accent",
+ "bold": false,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.0
+ },
+ "allCaps": true,
+ "textShadow": "0 0 5px #00FF00"
+ },
+ "h2": {
+ "font": "heading",
+ "size": 24,
+ "color": "accent",
+ "bold": false,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.0
+ },
+ "borderBottom": {
+ "color": "accent",
+ "width": 1,
+ "style": "dashed"
+ }
+ },
+ "h3": {
+ "font": "heading",
+ "size": 20,
+ "color": "textSecondary",
+ "bold": false,
+ "align": "left",
+ "spacing": {
+ "before": 20,
+ "after": 10,
+ "line": 1.0
+ }
+ },
+ "h4": {
+ "font": "body",
+ "size": 16,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.2
+ }
+ },
+ "h5": {
+ "font": "body",
+ "size": 14,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.2
+ }
+ },
+ "h6": {
+ "font": "body",
+ "size": 12,
+ "color": "textSecondary",
+ "italic": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.2
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "align": "left",
+ "spacing": {
+ "before": 0,
+ "after": 12,
+ "line": 1.4
+ },
+ "weight": 400
+ },
+ "blockquote": {
+ "font": "heading",
+ "size": 18,
+ "color": "text",
+ "italic": false,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.2
+ },
+ "padding": 16,
+ "borderLeft": {
+ "color": "accent",
+ "width": 4,
+ "style": "solid"
+ },
+ "background": "050505"
+ },
+ "code": {
+ "font": "code",
+ "size": 14,
+ "color": "accent",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.2
+ }
+ },
+ "pre": {
+ "font": "code",
+ "size": 14,
+ "color": "accent",
+ "background": "codeBg",
+ "padding": 12,
+ "spacing": {
+ "before": 12,
+ "after": 12,
+ "line": 1.2
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "ul": {
+ "spacing": {
+ "before": 12,
+ "after": 12,
+ "line": 1.4
+ },
+ "indent": 20,
+ "bullet": "greater-than"
+ },
+ "ol": {
+ "spacing": {
+ "before": 12,
+ "after": 12,
+ "line": 1.4
+ },
+ "indent": 20,
+ "numbering": "binary"
+ },
+ "li": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "spacing": {
+ "before": 2,
+ "after": 2,
+ "line": 1.4
+ }
+ },
+ "strong": {
+ "font": "body",
+ "bold": true,
+ "color": "FFFFFF"
+ },
+ "em": {
+ "font": "body",
+ "italic": true,
+ "color": "textSecondary"
+ },
+ "a": {
+ "font": "body",
+ "color": "accent",
+ "underline": true,
+ "bold": true
+ },
+ "table": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.2
+ },
+ "border": {
+ "color": "accent",
+ "width": 1,
+ "style": "solid"
+ },
+ "background": "000000"
+ },
+ "th": {
+ "font": "heading",
+ "size": 14,
+ "color": "000000",
+ "bold": false,
+ "background": "00FF00",
+ "padding": 8
+ },
+ "td": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "padding": 8,
+ "borderBottom": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 24,
+ "after": 24
+ },
+ "border": {
+ "color": "accent",
+ "width": 1,
+ "style": "dashed"
+ }
+ },
+ "img": {
+ "align": "center",
+ "spacing": {
+ "before": 16,
+ "after": 16
+ },
+ "border": {
+ "color": "accent",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true,
+ "color": "660000"
+ },
+ "sup": {
+ "font": "body",
+ "size": 10,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 10,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "003300",
+ "color": "accent"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "spacing": {
+ "before": 6,
+ "after": 6,
+ "line": 1.2
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 40,
+ "bottom": 40,
+ "left": 40,
+ "right": 40
+ },
+ "columns": 1,
+ "header": true,
+ "footer": true,
+ "background": "000000"
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/corporate/tech-memo.json b/src-tauri/templates/corporate/tech-memo.json
new file mode 100644
index 0000000..8551e41
--- /dev/null
+++ b/src-tauri/templates/corporate/tech-memo.json
@@ -0,0 +1,303 @@
+{
+ "id": "tech-memo",
+ "name": "Tech Memo",
+ "category": "Corporate",
+ "description": "Silicon Valley minimalism. High readability, soft gray geometric type, and a focus on clarity.",
+ "vibe": "Tech, Modern, Clean",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Roboto:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&family=Open+Sans:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&family=Source+Code+Pro:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Roboto",
+ "body": "Open Sans",
+ "code": "Source Code Pro"
+ },
+ "colors": {
+ "text": "374151",
+ "textSecondary": "6B7280",
+ "background": "FFFFFF",
+ "accent": "3B82F6",
+ "border": "E5E7EB",
+ "codeBg": "F3F4F6",
+ "blockquoteBorder": "3B82F6"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 30,
+ "color": "111827",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 32,
+ "after": 16,
+ "line": 1.2
+ },
+ "weight": 700
+ },
+ "h2": {
+ "font": "heading",
+ "size": 24,
+ "color": "374151",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.3
+ },
+ "weight": 500
+ },
+ "h3": {
+ "font": "heading",
+ "size": 20,
+ "color": "accent",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 20,
+ "after": 10,
+ "line": 1.3
+ }
+ },
+ "h4": {
+ "font": "heading",
+ "size": 16,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "h5": {
+ "font": "heading",
+ "size": 14,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ },
+ "allCaps": true,
+ "letterSpacing": 0.5
+ },
+ "h6": {
+ "font": "heading",
+ "size": 12,
+ "color": "textSecondary",
+ "italic": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "align": "left",
+ "spacing": {
+ "before": 0,
+ "after": 12,
+ "line": 1.6
+ },
+ "weight": 400
+ },
+ "blockquote": {
+ "font": "body",
+ "size": 14,
+ "color": "text",
+ "italic": true,
+ "align": "left",
+ "spacing": {
+ "before": 20,
+ "after": 20,
+ "line": 1.5
+ },
+ "padding": 16,
+ "borderLeft": {
+ "color": "accent",
+ "width": 4,
+ "style": "solid"
+ },
+ "background": "F9FAFB"
+ },
+ "code": {
+ "font": "code",
+ "size": 12,
+ "color": "D946EF",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.4
+ }
+ },
+ "pre": {
+ "font": "code",
+ "size": 12,
+ "color": "1F2937",
+ "background": "codeBg",
+ "padding": 12,
+ "spacing": {
+ "before": 12,
+ "after": 12,
+ "line": 1.4
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ },
+ "radius": 4
+ },
+ "ul": {
+ "spacing": {
+ "before": 12,
+ "after": 12,
+ "line": 1.6
+ },
+ "indent": 24,
+ "bullet": "disc"
+ },
+ "ol": {
+ "spacing": {
+ "before": 12,
+ "after": 12,
+ "line": 1.6
+ },
+ "indent": 24,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.6
+ }
+ },
+ "strong": {
+ "font": "body",
+ "bold": true,
+ "color": "111827"
+ },
+ "em": {
+ "font": "body",
+ "italic": true
+ },
+ "a": {
+ "font": "body",
+ "color": "accent",
+ "underline": false,
+ "bold": true
+ },
+ "table": {
+ "spacing": {
+ "before": 20,
+ "after": 20,
+ "line": 1.2
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "heading",
+ "size": 12,
+ "color": "374151",
+ "bold": true,
+ "background": "F3F4F6",
+ "padding": 10,
+ "radius": 4
+ },
+ "td": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "padding": 10,
+ "borderBottom": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 32,
+ "after": 32
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "img": {
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 24
+ },
+ "radius": 8
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true,
+ "color": "textSecondary"
+ },
+ "sup": {
+ "font": "body",
+ "size": 9,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 9,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "FEF3C7",
+ "color": "text"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "spacing": {
+ "before": 6,
+ "after": 6,
+ "line": 1.2
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 60,
+ "bottom": 60,
+ "left": 60,
+ "right": 60
+ },
+ "columns": 1,
+ "header": true,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/corporate/top-secret-redacted.json b/src-tauri/templates/corporate/top-secret-redacted.json
new file mode 100644
index 0000000..31a924c
--- /dev/null
+++ b/src-tauri/templates/corporate/top-secret-redacted.json
@@ -0,0 +1,316 @@
+{
+ "id": "top-secret-redacted",
+ "name": "Classified",
+ "category": "Corporate",
+ "description": "For eyes only. Typewriter text, heavy redaction bars, and a sense of government secrecy.",
+ "vibe": "Secret, Government, Redacted",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Special+Elite:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&family=Courier+Prime:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Special Elite",
+ "body": "Courier Prime",
+ "code": "Courier Prime"
+ },
+ "colors": {
+ "text": "000000",
+ "textSecondary": "333333",
+ "background": "FFFFFF",
+ "accent": "000000",
+ "border": "000000",
+ "codeBg": "E0E0E0",
+ "blockquoteBorder": "000000"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 24,
+ "color": "text",
+ "bold": true,
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.2
+ },
+ "allCaps": true,
+ "borderTop": {
+ "color": "text",
+ "width": 4,
+ "style": "solid"
+ },
+ "borderBottom": {
+ "color": "text",
+ "width": 4,
+ "style": "solid"
+ }
+ },
+ "h2": {
+ "font": "heading",
+ "size": 18,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.2
+ },
+ "underline": true
+ },
+ "h3": {
+ "font": "heading",
+ "size": 16,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 20,
+ "after": 10,
+ "line": 1.2
+ }
+ },
+ "h4": {
+ "font": "body",
+ "size": 14,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.3
+ },
+ "allCaps": true
+ },
+ "h5": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.3
+ }
+ },
+ "h6": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "italic": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.3
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "align": "left",
+ "spacing": {
+ "before": 0,
+ "after": 12,
+ "line": 1.5
+ },
+ "weight": 400
+ },
+ "blockquote": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "italic": false,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.5
+ },
+ "padding": 16,
+ "borderLeft": {
+ "color": "text",
+ "width": 10,
+ "style": "solid"
+ },
+ "background": "F0F0F0"
+ },
+ "code": {
+ "font": "code",
+ "size": 12,
+ "color": "text",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.4
+ }
+ },
+ "pre": {
+ "font": "code",
+ "size": 12,
+ "color": "text",
+ "background": "codeBg",
+ "padding": 12,
+ "spacing": {
+ "before": 12,
+ "after": 12,
+ "line": 1.4
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "ul": {
+ "spacing": {
+ "before": 12,
+ "after": 12,
+ "line": 1.5
+ },
+ "indent": 20,
+ "bullet": "disc"
+ },
+ "ol": {
+ "spacing": {
+ "before": 12,
+ "after": 12,
+ "line": 1.5
+ },
+ "indent": 20,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.5
+ }
+ },
+ "strong": {
+ "font": "body",
+ "bold": true,
+ "color": "text"
+ },
+ "em": {
+ "font": "body",
+ "italic": true
+ },
+ "a": {
+ "font": "body",
+ "color": "text",
+ "underline": true,
+ "bold": true
+ },
+ "table": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.2
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "heading",
+ "size": 12,
+ "color": "FFFFFF",
+ "bold": true,
+ "background": "000000",
+ "padding": 8
+ },
+ "td": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "padding": 8,
+ "borderBottom": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 24,
+ "after": 24
+ },
+ "border": {
+ "color": "000000",
+ "width": 8,
+ "style": "solid"
+ }
+ },
+ "img": {
+ "align": "center",
+ "spacing": {
+ "before": 16,
+ "after": 16
+ },
+ "border": {
+ "color": "000000",
+ "width": 4,
+ "style": "solid"
+ },
+ "filter": "contrast(150%)"
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": false,
+ "background": "000000",
+ "color": "000000"
+ },
+ "sup": {
+ "font": "body",
+ "size": 9,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 9,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "000000",
+ "color": "000000"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "spacing": {
+ "before": 6,
+ "after": 6,
+ "line": 1.2
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 50,
+ "bottom": 50,
+ "left": 50,
+ "right": 50
+ },
+ "columns": 1,
+ "header": true,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/corporate/whiteboard-strategy.json b/src-tauri/templates/corporate/whiteboard-strategy.json
new file mode 100644
index 0000000..c9df1f0
--- /dev/null
+++ b/src-tauri/templates/corporate/whiteboard-strategy.json
@@ -0,0 +1,310 @@
+{
+ "id": "whiteboard-strategy",
+ "name": "Whiteboard",
+ "category": "Corporate",
+ "description": "Brainstorming mode. Marker-style fonts, colorful accents, and a fluid, open layout.",
+ "vibe": "Creative, Informal, Strategy",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Permanent+Marker:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&family=Kalam:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&family=Patrick+Hand:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Permanent Marker",
+ "body": "Kalam",
+ "code": "Patrick Hand"
+ },
+ "colors": {
+ "text": "1A237E",
+ "textSecondary": "B71C1C",
+ "background": "FFFFFF",
+ "accent": "2E7D32",
+ "border": "BDBDBD",
+ "codeBg": "F5F5F5",
+ "blockquoteBorder": "FF6F00"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 36,
+ "color": "textSecondary",
+ "bold": false,
+ "align": "center",
+ "spacing": {
+ "before": 32,
+ "after": 24,
+ "line": 1.2
+ },
+ "rotation": -2
+ },
+ "h2": {
+ "font": "heading",
+ "size": 24,
+ "color": "text",
+ "bold": false,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.2
+ },
+ "borderBottom": {
+ "color": "text",
+ "width": 3,
+ "style": "dashed"
+ }
+ },
+ "h3": {
+ "font": "heading",
+ "size": 20,
+ "color": "accent",
+ "bold": false,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.2
+ }
+ },
+ "h4": {
+ "font": "body",
+ "size": 18,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 20,
+ "after": 10,
+ "line": 1.3
+ }
+ },
+ "h5": {
+ "font": "body",
+ "size": 16,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.3
+ },
+ "allCaps": true
+ },
+ "h6": {
+ "font": "body",
+ "size": 14,
+ "color": "textSecondary",
+ "italic": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.3
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 16,
+ "color": "text",
+ "align": "left",
+ "spacing": {
+ "before": 0,
+ "after": 16,
+ "line": 1.6
+ },
+ "weight": 400
+ },
+ "blockquote": {
+ "font": "body",
+ "size": 20,
+ "color": "textSecondary",
+ "italic": false,
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.4
+ },
+ "padding": 16,
+ "border": {
+ "color": "blockquoteBorder",
+ "width": 4,
+ "style": "solid"
+ },
+ "background": "FFF8E1"
+ },
+ "code": {
+ "font": "code",
+ "size": 16,
+ "color": "accent",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.4
+ }
+ },
+ "pre": {
+ "font": "code",
+ "size": 16,
+ "color": "accent",
+ "background": "codeBg",
+ "padding": 16,
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.4
+ },
+ "border": {
+ "color": "border",
+ "width": 2,
+ "style": "dashed"
+ }
+ },
+ "ul": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 20,
+ "bullet": "arrow"
+ },
+ "ol": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 20,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 16,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.6
+ }
+ },
+ "strong": {
+ "font": "heading",
+ "bold": true,
+ "color": "textSecondary"
+ },
+ "em": {
+ "font": "body",
+ "italic": true,
+ "underline": true
+ },
+ "a": {
+ "font": "body",
+ "color": "accent",
+ "underline": true,
+ "bold": true
+ },
+ "table": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.3
+ },
+ "border": {
+ "color": "text",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "heading",
+ "size": 16,
+ "color": "text",
+ "bold": true,
+ "background": "E0F7FA",
+ "padding": 8
+ },
+ "td": {
+ "font": "body",
+ "size": 16,
+ "color": "text",
+ "padding": 8,
+ "borderBottom": {
+ "color": "text",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 32,
+ "after": 32
+ },
+ "border": {
+ "color": "text",
+ "width": 4,
+ "style": "solid"
+ }
+ },
+ "img": {
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 16
+ },
+ "border": {
+ "color": "text",
+ "width": 4,
+ "style": "solid"
+ },
+ "rotation": 2
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true,
+ "color": "textSecondary"
+ },
+ "sup": {
+ "font": "body",
+ "size": 12,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 12,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "FFEB3B",
+ "color": "text"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 14,
+ "color": "textSecondary",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 14,
+ "color": "textSecondary",
+ "spacing": {
+ "before": 6,
+ "after": 6,
+ "line": 1.3
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 50,
+ "bottom": 50,
+ "left": 50,
+ "right": 50
+ },
+ "columns": 1,
+ "header": true,
+ "footer": false
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/creative/bauhaus-poster.json b/src-tauri/templates/creative/bauhaus-poster.json
new file mode 100644
index 0000000..3c88e25
--- /dev/null
+++ b/src-tauri/templates/creative/bauhaus-poster.json
@@ -0,0 +1,317 @@
+{
+ "id": "bauhaus-poster",
+ "name": "Bauhaus Poster",
+ "category": "creative",
+ "description": "Geometric minimalism inspired by the Bauhaus movement (1919-1933). Primary colors, bold diagonal lines, and functional typography.",
+ "vibe": "Geometric, Modernist, Functional",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Josefin+Sans:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&family=Jost:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Josefin Sans",
+ "body": "Jost",
+ "code": "Jost"
+ },
+ "colors": {
+ "text": "212121",
+ "textSecondary": "D50000",
+ "background": "F5F5F0",
+ "accent": "2962FF",
+ "border": "000000",
+ "codeBg": "FFEB3B",
+ "blockquoteBorder": "D50000"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 48,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "right",
+ "spacing": {
+ "before": 48,
+ "after": 24,
+ "line": 1.1
+ },
+ "borderBottom": {
+ "color": "border",
+ "width": 8,
+ "style": "solid",
+ "space": 10
+ },
+ "allCaps": true,
+ "rotation": -2
+ },
+ "h2": {
+ "font": "heading",
+ "size": 24,
+ "color": "accent",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 36,
+ "after": 18,
+ "line": 1.2
+ },
+ "background": "codeBg",
+ "padding": 12,
+ "rotation": 1
+ },
+ "h3": {
+ "font": "heading",
+ "size": 20,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.2
+ },
+ "borderLeft": {
+ "color": "accent",
+ "width": 12,
+ "style": "solid",
+ "space": 12
+ }
+ },
+ "h4": {
+ "font": "body",
+ "size": 18,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 20,
+ "after": 10,
+ "line": 1.3
+ }
+ },
+ "h5": {
+ "font": "body",
+ "size": 14,
+ "color": "accent",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ },
+ "allCaps": true
+ },
+ "h6": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "italic": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "align": "justify",
+ "spacing": {
+ "before": 0,
+ "after": 16,
+ "line": 1.6
+ }
+ },
+ "blockquote": {
+ "font": "heading",
+ "size": 14,
+ "color": "text",
+ "italic": true,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.5
+ },
+ "padding": 24,
+ "borderLeft": {
+ "color": "textSecondary",
+ "width": 16,
+ "style": "solid"
+ },
+ "background": "transparent"
+ },
+ "code": {
+ "font": "code",
+ "size": 11,
+ "color": "text",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.4
+ }
+ },
+ "pre": {
+ "font": "code",
+ "size": 11,
+ "color": "text",
+ "background": "codeBg",
+ "padding": 16,
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.4
+ },
+ "border": {
+ "color": "border",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "ul": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 32,
+ "bullet": "square"
+ },
+ "ol": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 32,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.6
+ }
+ },
+ "strong": {
+ "font": "heading",
+ "bold": true,
+ "color": "text"
+ },
+ "em": {
+ "font": "body",
+ "italic": true
+ },
+ "a": {
+ "font": "body",
+ "color": "accent",
+ "underline": true,
+ "bold": true
+ },
+ "table": {
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.2
+ },
+ "border": {
+ "color": "border",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "heading",
+ "size": 12,
+ "color": "background",
+ "bold": true,
+ "background": "textSecondary",
+ "padding": 12
+ },
+ "td": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "padding": 12,
+ "borderBottom": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 32,
+ "after": 32
+ },
+ "border": {
+ "color": "border",
+ "width": 8,
+ "style": "solid"
+ }
+ },
+ "img": {
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 24
+ },
+ "border": {
+ "color": "border",
+ "width": 4,
+ "style": "solid"
+ }
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true
+ },
+ "sup": {
+ "font": "body",
+ "size": 9,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 9,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "codeBg",
+ "color": "text"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.2
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 72,
+ "bottom": 72,
+ "left": 72,
+ "right": 72
+ },
+ "columns": 1,
+ "header": true,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/creative/blueprint-cyanotype.json b/src-tauri/templates/creative/blueprint-cyanotype.json
new file mode 100644
index 0000000..a0d214e
--- /dev/null
+++ b/src-tauri/templates/creative/blueprint-cyanotype.json
@@ -0,0 +1,314 @@
+{
+ "id": "blueprint-cyanotype",
+ "name": "Blueprint Cyanotype",
+ "category": "creative",
+ "description": "Architectural schematics style with white lines on a deep blue grid. Precise, technical, and annotated.",
+ "vibe": "Technical, Architectural, Draft",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Lexend:wght@100..900&family=Architects+Daughter&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Lexend",
+ "body": "Lexend",
+ "code": "Architects Daughter"
+ },
+ "colors": {
+ "text": "E3F2FD",
+ "textSecondary": "90CAF9",
+ "background": "0D47A1",
+ "accent": "FFEB3B",
+ "border": "64B5F6",
+ "codeBg": "1565C0",
+ "blockquoteBorder": "FFEB3B"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 32,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 36,
+ "after": 18,
+ "line": 1.1
+ },
+ "borderBottom": {
+ "color": "border",
+ "width": 2,
+ "style": "solid",
+ "space": 8
+ },
+ "allCaps": true
+ },
+ "h2": {
+ "font": "heading",
+ "size": 24,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.2
+ }
+ },
+ "h3": {
+ "font": "heading",
+ "size": 18,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 18,
+ "after": 9,
+ "line": 1.2
+ },
+ "borderLeft": {
+ "color": "accent",
+ "width": 4,
+ "style": "solid",
+ "space": 8
+ }
+ },
+ "h4": {
+ "font": "body",
+ "size": 14,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.3
+ },
+ "allCaps": true
+ },
+ "h5": {
+ "font": "body",
+ "size": 12,
+ "color": "accent",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 12,
+ "after": 6,
+ "line": 1.4
+ }
+ },
+ "h6": {
+ "font": "code",
+ "size": 12,
+ "color": "textSecondary",
+ "align": "left",
+ "spacing": {
+ "before": 12,
+ "after": 6,
+ "line": 1.4
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "align": "left",
+ "spacing": {
+ "before": 0,
+ "after": 12,
+ "line": 1.6
+ }
+ },
+ "blockquote": {
+ "font": "code",
+ "size": 14,
+ "color": "accent",
+ "italic": false,
+ "align": "left",
+ "spacing": {
+ "before": 18,
+ "after": 18,
+ "line": 1.4
+ },
+ "padding": 12,
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "dashed"
+ },
+ "rotation": -1
+ },
+ "code": {
+ "font": "heading",
+ "size": 10,
+ "color": "accent",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.4
+ }
+ },
+ "pre": {
+ "font": "heading",
+ "size": 10,
+ "color": "text",
+ "background": "codeBg",
+ "padding": 12,
+ "spacing": {
+ "before": 12,
+ "after": 12,
+ "line": 1.4
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "ul": {
+ "spacing": {
+ "before": 12,
+ "after": 12,
+ "line": 1.6
+ },
+ "indent": 24,
+ "bullet": "cross"
+ },
+ "ol": {
+ "spacing": {
+ "before": 12,
+ "after": 12,
+ "line": 1.6
+ },
+ "indent": 24,
+ "numbering": "decimal-leading-zero"
+ },
+ "li": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.6
+ }
+ },
+ "strong": {
+ "font": "heading",
+ "bold": true,
+ "color": "accent"
+ },
+ "em": {
+ "font": "code",
+ "italic": false
+ },
+ "a": {
+ "font": "body",
+ "color": "accent",
+ "underline": true,
+ "bold": true
+ },
+ "table": {
+ "spacing": {
+ "before": 18,
+ "after": 18,
+ "line": 1.2
+ },
+ "border": {
+ "color": "border",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "heading",
+ "size": 12,
+ "color": "accent",
+ "bold": true,
+ "background": "codeBg",
+ "padding": 8,
+ "allCaps": true
+ },
+ "td": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "padding": 8,
+ "borderBottom": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 24,
+ "after": 24
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "dashed"
+ }
+ },
+ "img": {
+ "align": "center",
+ "spacing": {
+ "before": 18,
+ "after": 18
+ },
+ "border": {
+ "color": "border",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "del": {
+ "font": "code",
+ "strikethrough": true,
+ "color": "textSecondary"
+ },
+ "sup": {
+ "font": "body",
+ "size": 9,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 9,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "background",
+ "color": "background"
+ },
+ "footnote": {
+ "font": "code",
+ "size": 10,
+ "color": "textSecondary",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "code",
+ "size": 10,
+ "color": "textSecondary",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.2
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 50,
+ "bottom": 50,
+ "left": 50,
+ "right": 50
+ },
+ "columns": 1,
+ "header": true,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/creative/brick-toy.json b/src-tauri/templates/creative/brick-toy.json
new file mode 100644
index 0000000..d6526bb
--- /dev/null
+++ b/src-tauri/templates/creative/brick-toy.json
@@ -0,0 +1,313 @@
+{
+ "id": "brick-toy",
+ "name": "Brick Toy",
+ "category": "creative",
+ "description": "Playful and colorful, inspired by plastic building blocks. Rounded typefaces, primary colors, and a fun, tactile vibe.",
+ "vibe": "Playful, Colorful, Fun",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Fredoka:wght@300..700&family=Varela+Round&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Fredoka",
+ "body": "Varela Round",
+ "code": "Varela Round"
+ },
+ "colors": {
+ "text": "212121",
+ "textSecondary": "1976D2",
+ "background": "FFFFFF",
+ "accent": "D32F2F",
+ "border": "FFEB3B",
+ "codeBg": "E3F2FD",
+ "blockquoteBorder": "388E3C"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 42,
+ "color": "accent",
+ "bold": true,
+ "align": "center",
+ "spacing": {
+ "before": 42,
+ "after": 21,
+ "line": 1.1
+ },
+ "background": "border",
+ "padding": 16,
+ "border": {
+ "color": "text",
+ "width": 3,
+ "style": "solid"
+ }
+ },
+ "h2": {
+ "font": "heading",
+ "size": 28,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 28,
+ "after": 14,
+ "line": 1.2
+ },
+ "borderBottom": {
+ "color": "blockquoteBorder",
+ "width": 4,
+ "style": "dotted",
+ "space": 6
+ }
+ },
+ "h3": {
+ "font": "heading",
+ "size": 22,
+ "color": "blockquoteBorder",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 22,
+ "after": 11,
+ "line": 1.2
+ }
+ },
+ "h4": {
+ "font": "body",
+ "size": 18,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 18,
+ "after": 9,
+ "line": 1.3
+ }
+ },
+ "h5": {
+ "font": "body",
+ "size": 16,
+ "color": "accent",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "h6": {
+ "font": "body",
+ "size": 14,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 14,
+ "after": 7,
+ "line": 1.4
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 14,
+ "color": "text",
+ "align": "left",
+ "spacing": {
+ "before": 0,
+ "after": 14,
+ "line": 1.6
+ }
+ },
+ "blockquote": {
+ "font": "heading",
+ "size": 16,
+ "color": "textSecondary",
+ "italic": false,
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.5
+ },
+ "padding": 20,
+ "background": "codeBg",
+ "border": {
+ "color": "textSecondary",
+ "width": 4,
+ "style": "solid"
+ }
+ },
+ "code": {
+ "font": "body",
+ "size": 12,
+ "color": "accent",
+ "background": "border",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.4
+ }
+ },
+ "pre": {
+ "font": "body",
+ "size": 12,
+ "color": "accent",
+ "background": "border",
+ "padding": 16,
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.4
+ },
+ "border": {
+ "color": "text",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "ul": {
+ "spacing": {
+ "before": 14,
+ "after": 14,
+ "line": 1.6
+ },
+ "indent": 28,
+ "bullet": "disc"
+ },
+ "ol": {
+ "spacing": {
+ "before": 14,
+ "after": 14,
+ "line": 1.6
+ },
+ "indent": 28,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 14,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.6
+ }
+ },
+ "strong": {
+ "font": "heading",
+ "bold": true,
+ "color": "accent"
+ },
+ "em": {
+ "font": "body",
+ "italic": true,
+ "color": "textSecondary"
+ },
+ "a": {
+ "font": "heading",
+ "color": "textSecondary",
+ "underline": true,
+ "bold": true
+ },
+ "table": {
+ "spacing": {
+ "before": 21,
+ "after": 21,
+ "line": 1.2
+ },
+ "border": {
+ "color": "text",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "heading",
+ "size": 14,
+ "color": "background",
+ "bold": true,
+ "background": "blockquoteBorder",
+ "padding": 12
+ },
+ "td": {
+ "font": "body",
+ "size": 14,
+ "color": "text",
+ "padding": 12,
+ "borderBottom": {
+ "color": "text",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 28,
+ "after": 28
+ },
+ "border": {
+ "color": "accent",
+ "width": 6,
+ "style": "dashed"
+ }
+ },
+ "img": {
+ "align": "center",
+ "spacing": {
+ "before": 21,
+ "after": 21
+ },
+ "border": {
+ "color": "text",
+ "width": 4,
+ "style": "solid"
+ }
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true
+ },
+ "sup": {
+ "font": "body",
+ "size": 10,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 10,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "border",
+ "color": "text"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 12,
+ "color": "textSecondary",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 12,
+ "color": "textSecondary",
+ "spacing": {
+ "before": 6,
+ "after": 6,
+ "line": 1.2
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 60,
+ "bottom": 60,
+ "left": 60,
+ "right": 60
+ },
+ "columns": 1,
+ "header": true,
+ "footer": true
+ }
+ }
\ No newline at end of file
diff --git a/src-tauri/templates/creative/brutalist-mono.json b/src-tauri/templates/creative/brutalist-mono.json
new file mode 100644
index 0000000..99de6bf
--- /dev/null
+++ b/src-tauri/templates/creative/brutalist-mono.json
@@ -0,0 +1,341 @@
+{
+ "id": "brutalist-mono",
+ "name": "Brutalist Mono",
+ "category": "creative",
+ "description": "Raw, undiluted design aesthetic. Monospaced type, heavy black borders, and an anti-design ethos.",
+ "vibe": "Raw, Industrial, Anti-Design",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Space+Mono:ital,wght@0,400;0,700;1,400;1,700&family=DM+Mono:ital,wght@0,300;0,400;0,500;1,300;1,400;1,500&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Space Mono",
+ "body": "DM Mono",
+ "code": "DM Mono"
+ },
+ "colors": {
+ "text": "000000",
+ "textSecondary": "333333",
+ "background": "FFFFFF",
+ "accent": "000000",
+ "border": "000000",
+ "codeBg": "E0E0E0",
+ "blockquoteBorder": "000000"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 36,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 40,
+ "after": 20,
+ "line": 1.1
+ },
+ "border": {
+ "color": "border",
+ "width": 6,
+ "style": "solid"
+ },
+ "padding": 24,
+ "allCaps": true
+ },
+ "h2": {
+ "font": "heading",
+ "size": 24,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 32,
+ "after": 16,
+ "line": 1.2
+ },
+ "background": "codeBg",
+ "padding": 12,
+ "borderBottom": {
+ "color": "border",
+ "width": 4,
+ "style": "solid"
+ }
+ },
+ "h3": {
+ "font": "heading",
+ "size": 20,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.2
+ },
+ "borderLeft": {
+ "color": "border",
+ "width": 12,
+ "style": "solid",
+ "space": 12
+ }
+ },
+ "h4": {
+ "font": "body",
+ "size": 16,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 20,
+ "after": 10,
+ "line": 1.3
+ },
+ "allCaps": true
+ },
+ "h5": {
+ "font": "heading",
+ "size": 14,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ },
+ "underline": true
+ },
+ "h6": {
+ "font": "heading",
+ "size": 12,
+ "color": "textSecondary",
+ "bold": false,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "align": "left",
+ "spacing": {
+ "before": 0,
+ "after": 16,
+ "line": 1.6
+ }
+ },
+ "blockquote": {
+ "font": "heading",
+ "size": 16,
+ "color": "text",
+ "italic": false,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.4
+ },
+ "padding": 24,
+ "border": {
+ "color": "border",
+ "width": 4,
+ "style": "solid"
+ },
+ "background": "codeBg"
+ },
+ "code": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.4
+ }
+ },
+ "pre": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "background": "background",
+ "padding": 16,
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.4
+ },
+ "border": {
+ "color": "border",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "ul": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 32,
+ "bullet": "square"
+ },
+ "ol": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 32,
+ "numbering": "decimal-leading-zero"
+ },
+ "li": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.6
+ }
+ },
+ "strong": {
+ "font": "heading",
+ "bold": true,
+ "color": "text"
+ },
+ "em": {
+ "font": "body",
+ "italic": true,
+ "background": "codeBg"
+ },
+ "a": {
+ "font": "heading",
+ "color": "text",
+ "underline": true,
+ "bold": true,
+ "background": "codeBg"
+ },
+ "table": {
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.2
+ },
+ "border": {
+ "color": "border",
+ "width": 4,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "heading",
+ "size": 12,
+ "color": "background",
+ "bold": true,
+ "background": "text",
+ "padding": 12,
+ "borderBottom": {
+ "color": "border",
+ "width": 4,
+ "style": "solid"
+ },
+ "borderRight": {
+ "color": "background",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "td": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "padding": 12,
+ "borderBottom": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ },
+ "borderRight": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 32,
+ "after": 32
+ },
+ "border": {
+ "color": "border",
+ "width": 8,
+ "style": "solid"
+ }
+ },
+ "img": {
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 24
+ },
+ "border": {
+ "color": "border",
+ "width": 4,
+ "style": "solid"
+ },
+ "grayscale": true
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true,
+ "background": "text",
+ "color": "background"
+ },
+ "sup": {
+ "font": "body",
+ "size": 10,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 10,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "text",
+ "color": "background"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.2
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 60,
+ "bottom": 60,
+ "left": 60,
+ "right": 60
+ },
+ "columns": 1,
+ "header": true,
+ "footer": true
+ }
+ }
\ No newline at end of file
diff --git a/src-tauri/templates/creative/creative-portfolio.json b/src-tauri/templates/creative/creative-portfolio.json
new file mode 100644
index 0000000..86f0e5a
--- /dev/null
+++ b/src-tauri/templates/creative/creative-portfolio.json
@@ -0,0 +1,306 @@
+{
+ "id": "creative-portfolio",
+ "name": "Creative Portfolio",
+ "category": "creative",
+ "description": "Minimalist gallery style for showcasing visual work. Focuses on images and clean typography.",
+ "vibe": "Minimalist, Visual, Gallery",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Jost:ital,wght@0,300..900;1,300..900&family=Playfair+Display:ital,wght@0,400..900;1,400..900&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Playfair Display",
+ "body": "Jost",
+ "code": "Jost"
+ },
+ "colors": {
+ "text": "212121",
+ "textSecondary": "757575",
+ "background": "FFFFFF",
+ "accent": "000000",
+ "border": "E0E0E0",
+ "codeBg": "F5F5F5",
+ "blockquoteBorder": "000000"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 42,
+ "color": "text",
+ "bold": false,
+ "align": "left",
+ "spacing": {
+ "before": 42,
+ "after": 42,
+ "line": 1.2
+ }
+ },
+ "h2": {
+ "font": "heading",
+ "size": 28,
+ "color": "text",
+ "bold": false,
+ "align": "left",
+ "spacing": {
+ "before": 48,
+ "after": 24,
+ "line": 1.2
+ }
+ },
+ "h3": {
+ "font": "heading",
+ "size": 22,
+ "color": "text",
+ "bold": false,
+ "align": "left",
+ "spacing": {
+ "before": 32,
+ "after": 16,
+ "line": 1.3
+ }
+ },
+ "h4": {
+ "font": "body",
+ "size": 18,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.4
+ },
+ "allCaps": true,
+ "letterSpacing": 2
+ },
+ "h5": {
+ "font": "body",
+ "size": 16,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "h6": {
+ "font": "body",
+ "size": 14,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ },
+ "allCaps": true
+ },
+ "p": {
+ "font": "body",
+ "size": 16,
+ "color": "textSecondary",
+ "align": "left",
+ "spacing": {
+ "before": 0,
+ "after": 24,
+ "line": 1.6
+ }
+ },
+ "blockquote": {
+ "font": "heading",
+ "size": 24,
+ "color": "text",
+ "italic": true,
+ "align": "left",
+ "spacing": {
+ "before": 40,
+ "after": 40,
+ "line": 1.4
+ },
+ "padding": 0,
+ "border": {
+ "color": "transparent",
+ "width": 0,
+ "style": "none"
+ },
+ "background": "transparent"
+ },
+ "code": {
+ "font": "body",
+ "size": 14,
+ "color": "text",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.4
+ }
+ },
+ "pre": {
+ "font": "body",
+ "size": 14,
+ "color": "text",
+ "background": "codeBg",
+ "padding": 24,
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.4
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "ul": {
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.6
+ },
+ "indent": 24,
+ "bullet": "square"
+ },
+ "ol": {
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.6
+ },
+ "indent": 24,
+ "numbering": "decimal-leading-zero"
+ },
+ "li": {
+ "font": "body",
+ "size": 16,
+ "color": "textSecondary",
+ "spacing": {
+ "before": 8,
+ "after": 8,
+ "line": 1.6
+ }
+ },
+ "strong": {
+ "font": "body",
+ "bold": true,
+ "color": "text"
+ },
+ "em": {
+ "font": "body",
+ "italic": true,
+ "color": "text"
+ },
+ "a": {
+ "font": "body",
+ "color": "text",
+ "underline": true,
+ "bold": true
+ },
+ "table": {
+ "spacing": {
+ "before": 32,
+ "after": 32,
+ "line": 1.4
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "body",
+ "size": 14,
+ "color": "text",
+ "bold": true,
+ "background": "codeBg",
+ "padding": 16,
+ "allCaps": true,
+ "letterSpacing": 1
+ },
+ "td": {
+ "font": "body",
+ "size": 16,
+ "color": "textSecondary",
+ "padding": 16,
+ "borderBottom": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 48,
+ "after": 48
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "img": {
+ "align": "center",
+ "spacing": {
+ "before": 32,
+ "after": 32
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true,
+ "color": "textSecondary"
+ },
+ "sup": {
+ "font": "body",
+ "size": 12,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 12,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "codeBg",
+ "color": "text"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 12,
+ "color": "textSecondary",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 12,
+ "color": "textSecondary",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.2
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 72,
+ "bottom": 72,
+ "left": 72,
+ "right": 72
+ },
+ "columns": 1,
+ "header": true,
+ "footer": true
+ }
+ }
\ No newline at end of file
diff --git a/src-tauri/templates/creative/glitch-art.json b/src-tauri/templates/creative/glitch-art.json
new file mode 100644
index 0000000..eff5f42
--- /dev/null
+++ b/src-tauri/templates/creative/glitch-art.json
@@ -0,0 +1,308 @@
+{
+ "id": "glitch-art",
+ "name": "Glitch Art",
+ "category": "creative",
+ "description": "Cyberpunk aesthetic with distorted digital noise. High contrast neon colors on dark backgrounds.",
+ "vibe": "Cyberpunk, Distorted, Digital",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Rubik+Glitch&family=Share+Tech+Mono&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Rubik Glitch",
+ "body": "Share Tech Mono",
+ "code": "Share Tech Mono"
+ },
+ "colors": {
+ "text": "E0E0E0",
+ "textSecondary": "00E5FF",
+ "background": "121212",
+ "accent": "FF00E6",
+ "border": "00FF00",
+ "codeBg": "1E1E1E",
+ "blockquoteBorder": "00E5FF"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 48,
+ "color": "accent",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 48,
+ "after": 24,
+ "line": 1.1
+ },
+ "borderLeft": {
+ "color": "textSecondary",
+ "width": 8,
+ "style": "solid",
+ "space": 16
+ }
+ },
+ "h2": {
+ "font": "heading",
+ "size": 32,
+ "color": "border",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 36,
+ "after": 18,
+ "line": 1.2
+ },
+ "allCaps": true
+ },
+ "h3": {
+ "font": "heading",
+ "size": 24,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.2
+ }
+ },
+ "h4": {
+ "font": "body",
+ "size": 20,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 20,
+ "after": 10,
+ "line": 1.3
+ }
+ },
+ "h5": {
+ "font": "body",
+ "size": 16,
+ "color": "accent",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "h6": {
+ "font": "body",
+ "size": 14,
+ "color": "border",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 14,
+ "color": "text",
+ "align": "left",
+ "spacing": {
+ "before": 0,
+ "after": 16,
+ "line": 1.6
+ }
+ },
+ "blockquote": {
+ "font": "body",
+ "size": 16,
+ "color": "textSecondary",
+ "italic": true,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.5
+ },
+ "padding": 24,
+ "border": {
+ "color": "accent",
+ "width": 2,
+ "style": "dashed"
+ },
+ "background": "codeBg"
+ },
+ "code": {
+ "font": "code",
+ "size": 12,
+ "color": "border",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.4
+ }
+ },
+ "pre": {
+ "font": "code",
+ "size": 12,
+ "color": "border",
+ "background": "codeBg",
+ "padding": 16,
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.4
+ },
+ "border": {
+ "color": "textSecondary",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "ul": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 32,
+ "bullet": "disc"
+ },
+ "ol": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 32,
+ "numbering": "binary"
+ },
+ "li": {
+ "font": "body",
+ "size": 14,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.6
+ }
+ },
+ "strong": {
+ "font": "body",
+ "bold": true,
+ "color": "accent"
+ },
+ "em": {
+ "font": "body",
+ "italic": true,
+ "color": "textSecondary"
+ },
+ "a": {
+ "font": "body",
+ "color": "border",
+ "underline": true,
+ "bold": true
+ },
+ "table": {
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.2
+ },
+ "border": {
+ "color": "textSecondary",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "heading",
+ "size": 14,
+ "color": "background",
+ "bold": true,
+ "background": "textSecondary",
+ "padding": 12
+ },
+ "td": {
+ "font": "body",
+ "size": 14,
+ "color": "text",
+ "padding": 12,
+ "borderBottom": {
+ "color": "textSecondary",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 32,
+ "after": 32
+ },
+ "border": {
+ "color": "accent",
+ "width": 4,
+ "style": "solid"
+ }
+ },
+ "img": {
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 24
+ },
+ "border": {
+ "color": "border",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true,
+ "color": "border"
+ },
+ "sup": {
+ "font": "body",
+ "size": 10,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 10,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "accent",
+ "color": "background"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 12,
+ "color": "textSecondary",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 12,
+ "color": "textSecondary",
+ "spacing": {
+ "before": 6,
+ "after": 6,
+ "line": 1.2
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 60,
+ "bottom": 60,
+ "left": 60,
+ "right": 60
+ },
+ "columns": 1,
+ "header": true,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/creative/grunge-90s.json b/src-tauri/templates/creative/grunge-90s.json
new file mode 100644
index 0000000..1072ab7
--- /dev/null
+++ b/src-tauri/templates/creative/grunge-90s.json
@@ -0,0 +1,321 @@
+{
+ "id": "grunge-90s",
+ "name": "Grunge 90s",
+ "category": "creative",
+ "description": "Distressed, chaotic aesthetic inspired by 90s zines and music. Messy typography, torn edges, and angsty vibes.",
+ "vibe": "Chaotic, Distressed, Raw",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Rock+Salt&family=Special+Elite&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Rock Salt",
+ "body": "Special Elite",
+ "code": "Special Elite"
+ },
+ "colors": {
+ "text": "212121",
+ "textSecondary": "4E342E",
+ "background": "EFEBE9",
+ "accent": "D84315",
+ "border": "3E2723",
+ "codeBg": "D7CCC8",
+ "blockquoteBorder": "212121"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 36,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "center",
+ "spacing": {
+ "before": 40,
+ "after": 20,
+ "line": 1.2
+ },
+ "rotation": -2,
+ "borderBottom": {
+ "color": "accent",
+ "width": 6,
+ "style": "dashed",
+ "space": 10
+ }
+ },
+ "h2": {
+ "font": "heading",
+ "size": 24,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 30,
+ "after": 15,
+ "line": 1.3
+ },
+ "rotation": 1,
+ "background": "accent",
+ "padding": 8
+ },
+ "h3": {
+ "font": "body",
+ "size": 20,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.3
+ },
+ "borderLeft": {
+ "color": "border",
+ "width": 4,
+ "style": "solid",
+ "space": 8
+ }
+ },
+ "h4": {
+ "font": "body",
+ "size": 18,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 20,
+ "after": 10,
+ "line": 1.3
+ },
+ "allCaps": true
+ },
+ "h5": {
+ "font": "body",
+ "size": 16,
+ "color": "accent",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "h6": {
+ "font": "body",
+ "size": 14,
+ "color": "text",
+ "italic": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 14,
+ "color": "text",
+ "align": "left",
+ "spacing": {
+ "before": 0,
+ "after": 16,
+ "line": 1.6
+ }
+ },
+ "blockquote": {
+ "font": "heading",
+ "size": 14,
+ "color": "text",
+ "italic": false,
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.5
+ },
+ "padding": 20,
+ "border": {
+ "color": "border",
+ "width": 3,
+ "style": "solid"
+ },
+ "rotation": 1
+ },
+ "code": {
+ "font": "code",
+ "size": 12,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.4
+ }
+ },
+ "pre": {
+ "font": "code",
+ "size": 12,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "padding": 16,
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.4
+ },
+ "border": {
+ "color": "border",
+ "width": 2,
+ "style": "dashed"
+ }
+ },
+ "ul": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 28,
+ "bullet": "disc"
+ },
+ "ol": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 28,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 14,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.6
+ }
+ },
+ "strong": {
+ "font": "heading",
+ "bold": true,
+ "color": "textSecondary"
+ },
+ "em": {
+ "font": "body",
+ "italic": true,
+ "background": "codeBg"
+ },
+ "a": {
+ "font": "body",
+ "color": "accent",
+ "underline": true,
+ "bold": true
+ },
+ "table": {
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.2
+ },
+ "border": {
+ "color": "border",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "heading",
+ "size": 14,
+ "color": "background",
+ "bold": true,
+ "background": "textSecondary",
+ "padding": 12
+ },
+ "td": {
+ "font": "body",
+ "size": 14,
+ "color": "text",
+ "padding": 12,
+ "borderBottom": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 32,
+ "after": 32
+ },
+ "border": {
+ "color": "accent",
+ "width": 4,
+ "style": "dashed"
+ }
+ },
+ "img": {
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 24
+ },
+ "border": {
+ "color": "text",
+ "width": 4,
+ "style": "solid"
+ },
+ "grayscale": true,
+ "rotation": 1
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true,
+ "color": "accent"
+ },
+ "sup": {
+ "font": "body",
+ "size": 10,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 10,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "accent",
+ "color": "background"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 12,
+ "color": "textSecondary",
+ "superScript": true,
+ "italic": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 12,
+ "color": "textSecondary",
+ "spacing": {
+ "before": 6,
+ "after": 6,
+ "line": 1.2
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 72,
+ "bottom": 72,
+ "left": 72,
+ "right": 72
+ },
+ "columns": 1,
+ "header": true,
+ "footer": true
+ }
+ }
\ No newline at end of file
diff --git a/src-tauri/templates/creative/kindergarten-art.json b/src-tauri/templates/creative/kindergarten-art.json
new file mode 100644
index 0000000..cb42ef1
--- /dev/null
+++ b/src-tauri/templates/creative/kindergarten-art.json
@@ -0,0 +1,305 @@
+{
+ "id": "kindergarten-art",
+ "name": "Kindergarten Art",
+ "category": "creative",
+ "description": "Inspired by children's drawings. Messy, colorful, and fun. Looks like it was drawn with crayons.",
+ "vibe": "Childish, Colorful, Crayon",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Finger+Paint&family=Balsamiq+Sans:ital,wght@0,400;0,700;1,400;1,700&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Finger Paint",
+ "body": "Balsamiq Sans",
+ "code": "Balsamiq Sans"
+ },
+ "colors": {
+ "text": "212121",
+ "textSecondary": "FF6F00",
+ "background": "FFF9C4",
+ "accent": "D50000",
+ "border": "2962FF",
+ "codeBg": "FFFFFF",
+ "blockquoteBorder": "00C853"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 42,
+ "color": "accent",
+ "bold": true,
+ "align": "center",
+ "spacing": {
+ "before": 42,
+ "after": 21,
+ "line": 1.2
+ },
+ "rotation": -3
+ },
+ "h2": {
+ "font": "heading",
+ "size": 28,
+ "color": "border",
+ "bold": true,
+ "align": "center",
+ "spacing": {
+ "before": 28,
+ "after": 14,
+ "line": 1.2
+ },
+ "rotation": 2
+ },
+ "h3": {
+ "font": "heading",
+ "size": 22,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 22,
+ "after": 11,
+ "line": 1.2
+ }
+ },
+ "h4": {
+ "font": "body",
+ "size": 18,
+ "color": "blockquoteBorder",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 18,
+ "after": 9,
+ "line": 1.3
+ }
+ },
+ "h5": {
+ "font": "body",
+ "size": 16,
+ "color": "accent",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "h6": {
+ "font": "body",
+ "size": 14,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 14,
+ "after": 7,
+ "line": 1.4
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 16,
+ "color": "text",
+ "align": "left",
+ "spacing": {
+ "before": 0,
+ "after": 16,
+ "line": 1.6
+ }
+ },
+ "blockquote": {
+ "font": "heading",
+ "size": 18,
+ "color": "textSecondary",
+ "italic": false,
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.5
+ },
+ "padding": 20,
+ "background": "codeBg",
+ "border": {
+ "color": "blockquoteBorder",
+ "width": 6,
+ "style": "solid"
+ },
+ "rotation": -1
+ },
+ "code": {
+ "font": "body",
+ "size": 14,
+ "color": "border",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.4
+ }
+ },
+ "pre": {
+ "font": "body",
+ "size": 14,
+ "color": "border",
+ "background": "codeBg",
+ "padding": 16,
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.4
+ },
+ "border": {
+ "color": "textSecondary",
+ "width": 3,
+ "style": "dashed"
+ }
+ },
+ "ul": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 24,
+ "bullet": "disc"
+ },
+ "ol": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 24,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 16,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.6
+ }
+ },
+ "strong": {
+ "font": "heading",
+ "bold": true,
+ "color": "accent"
+ },
+ "em": {
+ "font": "body",
+ "italic": true,
+ "color": "border"
+ },
+ "a": {
+ "font": "heading",
+ "color": "blockquoteBorder",
+ "underline": true,
+ "bold": true
+ },
+ "table": {
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.2
+ },
+ "border": {
+ "color": "text",
+ "width": 3,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "heading",
+ "size": 16,
+ "color": "background",
+ "bold": true,
+ "background": "textSecondary",
+ "padding": 12
+ },
+ "td": {
+ "font": "body",
+ "size": 16,
+ "color": "text",
+ "padding": 12,
+ "borderBottom": {
+ "color": "text",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 32,
+ "after": 32
+ },
+ "border": {
+ "color": "accent",
+ "width": 8,
+ "style": "solid"
+ }
+ },
+ "img": {
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 24
+ },
+ "border": {
+ "color": "text",
+ "width": 5,
+ "style": "solid"
+ },
+ "rotation": 2
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true,
+ "color": "accent"
+ },
+ "sup": {
+ "font": "body",
+ "size": 12,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 12,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "blockquoteBorder",
+ "color": "background"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 14,
+ "color": "text",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 14,
+ "color": "text",
+ "spacing": {
+ "before": 6,
+ "after": 6,
+ "line": 1.2
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 72,
+ "bottom": 72,
+ "left": 72,
+ "right": 72
+ },
+ "columns": 1,
+ "header": true,
+ "footer": true
+ }
+ }
\ No newline at end of file
diff --git a/src-tauri/templates/creative/origami-paper.json b/src-tauri/templates/creative/origami-paper.json
new file mode 100644
index 0000000..d82eecf
--- /dev/null
+++ b/src-tauri/templates/creative/origami-paper.json
@@ -0,0 +1,308 @@
+{
+ "id": "origami-paper",
+ "name": "Origami Paper",
+ "category": "creative",
+ "description": "Delicate and sharp, inspired by the art of paper folding. Clean lines, subtle shadows, and a feeling of precision.",
+ "vibe": "Delicate, Sharp, Precise",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Foldit:wght@100..900&family=Mulish:ital,wght@0,200..1000;1,200..1000&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Foldit",
+ "body": "Mulish",
+ "code": "Mulish"
+ },
+ "colors": {
+ "text": "37474F",
+ "textSecondary": "546E7A",
+ "background": "ECEFF1",
+ "accent": "00838F",
+ "border": "B0BEC5",
+ "codeBg": "FFFFFF",
+ "blockquoteBorder": "00838F"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 36,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 36,
+ "after": 18,
+ "line": 1.1
+ },
+ "borderBottom": {
+ "color": "border",
+ "width": 1,
+ "style": "solid",
+ "space": 8
+ }
+ },
+ "h2": {
+ "font": "heading",
+ "size": 24,
+ "color": "accent",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.2
+ }
+ },
+ "h3": {
+ "font": "heading",
+ "size": 20,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 20,
+ "after": 10,
+ "line": 1.2
+ }
+ },
+ "h4": {
+ "font": "body",
+ "size": 16,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.3
+ },
+ "allCaps": true
+ },
+ "h5": {
+ "font": "body",
+ "size": 14,
+ "color": "accent",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 14,
+ "after": 7,
+ "line": 1.4
+ }
+ },
+ "h6": {
+ "font": "body",
+ "size": 12,
+ "color": "textSecondary",
+ "bold": false,
+ "align": "left",
+ "spacing": {
+ "before": 14,
+ "after": 7,
+ "line": 1.4
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "align": "left",
+ "spacing": {
+ "before": 0,
+ "after": 12,
+ "line": 1.6
+ }
+ },
+ "blockquote": {
+ "font": "heading",
+ "size": 14,
+ "color": "accent",
+ "italic": false,
+ "align": "left",
+ "spacing": {
+ "before": 18,
+ "after": 18,
+ "line": 1.5
+ },
+ "padding": 16,
+ "background": "codeBg",
+ "borderLeft": {
+ "color": "accent",
+ "width": 4,
+ "style": "solid"
+ }
+ },
+ "code": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.4
+ }
+ },
+ "pre": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "padding": 12,
+ "spacing": {
+ "before": 12,
+ "after": 12,
+ "line": 1.4
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "ul": {
+ "spacing": {
+ "before": 12,
+ "after": 12,
+ "line": 1.6
+ },
+ "indent": 24,
+ "bullet": "diamond"
+ },
+ "ol": {
+ "spacing": {
+ "before": 12,
+ "after": 12,
+ "line": 1.6
+ },
+ "indent": 24,
+ "numbering": "decimal-leading-zero"
+ },
+ "li": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.6
+ }
+ },
+ "strong": {
+ "font": "body",
+ "bold": true,
+ "color": "text"
+ },
+ "em": {
+ "font": "body",
+ "italic": true,
+ "color": "textSecondary"
+ },
+ "a": {
+ "font": "body",
+ "color": "accent",
+ "underline": true,
+ "bold": true
+ },
+ "table": {
+ "spacing": {
+ "before": 18,
+ "after": 18,
+ "line": 1.2
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "heading",
+ "size": 12,
+ "color": "text",
+ "bold": true,
+ "background": "codeBg",
+ "padding": 8
+ },
+ "td": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "padding": 8,
+ "borderBottom": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 24,
+ "after": 24
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "img": {
+ "align": "left",
+ "spacing": {
+ "before": 18,
+ "after": 18
+ },
+ "border": {
+ "color": "codeBg",
+ "width": 4,
+ "style": "solid"
+ }
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true,
+ "color": "textSecondary"
+ },
+ "sup": {
+ "font": "body",
+ "size": 9,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 9,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "border",
+ "color": "text"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.2
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 72,
+ "bottom": 72,
+ "left": 72,
+ "right": 72
+ },
+ "columns": 1,
+ "header": true,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/creative/pop-art-comic.json b/src-tauri/templates/creative/pop-art-comic.json
new file mode 100644
index 0000000..d7782fe
--- /dev/null
+++ b/src-tauri/templates/creative/pop-art-comic.json
@@ -0,0 +1,319 @@
+{
+ "id": "pop-art-comic",
+ "name": "Pop Art Comic",
+ "category": "creative",
+ "description": "Bold, punchy, and loud. Inspired by classic comic books and pop art. Halftone dots, speech bubbles, and POW!",
+ "vibe": "Bold, Comic, Punchy",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Bangers&family=Comic+Neue:ital,wght@0,300;0,400;0,700;1,300;1,400;1,700&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Bangers",
+ "body": "Comic Neue",
+ "code": "Comic Neue"
+ },
+ "colors": {
+ "text": "212121",
+ "textSecondary": "D50000",
+ "background": "FFFFFF",
+ "accent": "FFD600",
+ "border": "212121",
+ "codeBg": "E3F2FD",
+ "blockquoteBorder": "212121"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 42,
+ "color": "textSecondary",
+ "bold": false,
+ "align": "center",
+ "spacing": {
+ "before": 42,
+ "after": 21,
+ "line": 1.1
+ },
+ "borderBottom": {
+ "color": "border",
+ "width": 6,
+ "style": "solid",
+ "space": 10
+ },
+ "shadow": "4px 4px 0px #000000"
+ },
+ "h2": {
+ "font": "heading",
+ "size": 32,
+ "color": "background",
+ "bold": false,
+ "align": "left",
+ "spacing": {
+ "before": 32,
+ "after": 16,
+ "line": 1.2
+ },
+ "background": "border",
+ "padding": 12,
+ "rotation": 1
+ },
+ "h3": {
+ "font": "heading",
+ "size": 26,
+ "color": "accent",
+ "bold": false,
+ "align": "left",
+ "spacing": {
+ "before": 26,
+ "after": 13,
+ "line": 1.2
+ },
+ "shadow": "2px 2px 0px #000000"
+ },
+ "h4": {
+ "font": "body",
+ "size": 20,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 20,
+ "after": 10,
+ "line": 1.3
+ }
+ },
+ "h5": {
+ "font": "heading",
+ "size": 18,
+ "color": "text",
+ "bold": false,
+ "align": "left",
+ "spacing": {
+ "before": 18,
+ "after": 9,
+ "line": 1.4
+ }
+ },
+ "h6": {
+ "font": "body",
+ "size": 16,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 16,
+ "color": "text",
+ "align": "left",
+ "spacing": {
+ "before": 0,
+ "after": 16,
+ "line": 1.5
+ }
+ },
+ "blockquote": {
+ "font": "heading",
+ "size": 20,
+ "color": "text",
+ "italic": false,
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.4
+ },
+ "padding": 24,
+ "background": "codeBg",
+ "border": {
+ "color": "border",
+ "width": 4,
+ "style": "solid"
+ },
+ "radius": 24
+ },
+ "code": {
+ "font": "body",
+ "size": 14,
+ "color": "text",
+ "background": "accent",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.4
+ }
+ },
+ "pre": {
+ "font": "body",
+ "size": 14,
+ "color": "text",
+ "background": "accent",
+ "padding": 16,
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.4
+ },
+ "border": {
+ "color": "border",
+ "width": 3,
+ "style": "solid"
+ }
+ },
+ "ul": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.5
+ },
+ "indent": 32,
+ "bullet": "circle"
+ },
+ "ol": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.5
+ },
+ "indent": 32,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 16,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.5
+ }
+ },
+ "strong": {
+ "font": "heading",
+ "bold": false,
+ "color": "textSecondary"
+ },
+ "em": {
+ "font": "body",
+ "italic": true,
+ "color": "text"
+ },
+ "a": {
+ "font": "heading",
+ "color": "accent",
+ "underline": true,
+ "bold": false
+ },
+ "table": {
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.2
+ },
+ "border": {
+ "color": "border",
+ "width": 3,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "heading",
+ "size": 16,
+ "color": "text",
+ "bold": false,
+ "background": "accent",
+ "padding": 12,
+ "borderBottom": {
+ "color": "border",
+ "width": 3,
+ "style": "solid"
+ }
+ },
+ "td": {
+ "font": "body",
+ "size": 16,
+ "color": "text",
+ "padding": 12,
+ "borderBottom": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 32,
+ "after": 32
+ },
+ "border": {
+ "color": "border",
+ "width": 6,
+ "style": "solid"
+ }
+ },
+ "img": {
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 24
+ },
+ "border": {
+ "color": "border",
+ "width": 5,
+ "style": "solid"
+ },
+ "shadow": "8px 8px 0px #000000"
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true,
+ "color": "textSecondary"
+ },
+ "sup": {
+ "font": "body",
+ "size": 12,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 12,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "accent",
+ "color": "text"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 14,
+ "color": "text",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 14,
+ "color": "text",
+ "spacing": {
+ "before": 6,
+ "after": 6,
+ "line": 1.2
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 72,
+ "bottom": 72,
+ "left": 72,
+ "right": 72
+ },
+ "columns": 1,
+ "header": true,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/creative/risograph-print.json b/src-tauri/templates/creative/risograph-print.json
new file mode 100644
index 0000000..67bf71b
--- /dev/null
+++ b/src-tauri/templates/creative/risograph-print.json
@@ -0,0 +1,309 @@
+{
+ "id": "risograph-print",
+ "name": "Risograph Print",
+ "category": "creative",
+ "description": "Inspired by Riso printing. Grainy textures, overlapping colors, and a lo-fi DIY zine aesthetic.",
+ "vibe": "Grainy, DIY, Artistic",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Staatliches&family=Courier+Prime:ital,wght@0,400;0,700;1,400;1,700&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Staatliches",
+ "body": "Courier Prime",
+ "code": "Courier Prime"
+ },
+ "colors": {
+ "text": "1A237E",
+ "textSecondary": "E91E63",
+ "background": "F8E1E7",
+ "accent": "FFD600",
+ "border": "1A237E",
+ "codeBg": "FFFFFF",
+ "blockquoteBorder": "E91E63"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 42,
+ "color": "textSecondary",
+ "bold": false,
+ "align": "left",
+ "spacing": {
+ "before": 42,
+ "after": 21,
+ "line": 1.1
+ },
+ "borderBottom": {
+ "color": "text",
+ "width": 6,
+ "style": "solid",
+ "space": 8
+ }
+ },
+ "h2": {
+ "font": "heading",
+ "size": 32,
+ "color": "text",
+ "bold": false,
+ "align": "left",
+ "spacing": {
+ "before": 32,
+ "after": 16,
+ "line": 1.1
+ },
+ "background": "accent",
+ "padding": 12
+ },
+ "h3": {
+ "font": "heading",
+ "size": 26,
+ "color": "textSecondary",
+ "bold": false,
+ "align": "left",
+ "spacing": {
+ "before": 26,
+ "after": 13,
+ "line": 1.2
+ }
+ },
+ "h4": {
+ "font": "body",
+ "size": 18,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 18,
+ "after": 9,
+ "line": 1.3
+ }
+ },
+ "h5": {
+ "font": "body",
+ "size": 16,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "h6": {
+ "font": "body",
+ "size": 14,
+ "color": "text",
+ "italic": true,
+ "align": "left",
+ "spacing": {
+ "before": 14,
+ "after": 7,
+ "line": 1.4
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 14,
+ "color": "text",
+ "align": "left",
+ "spacing": {
+ "before": 0,
+ "after": 14,
+ "line": 1.6
+ }
+ },
+ "blockquote": {
+ "font": "heading",
+ "size": 16,
+ "color": "textSecondary",
+ "italic": false,
+ "align": "left",
+ "spacing": {
+ "before": 21,
+ "after": 21,
+ "line": 1.5
+ },
+ "padding": 16,
+ "border": {
+ "color": "text",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "code": {
+ "font": "body",
+ "size": 12,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.4
+ }
+ },
+ "pre": {
+ "font": "body",
+ "size": 12,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "padding": 16,
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.4
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "dashed"
+ }
+ },
+ "ul": {
+ "spacing": {
+ "before": 14,
+ "after": 14,
+ "line": 1.6
+ },
+ "indent": 28,
+ "bullet": "disc"
+ },
+ "ol": {
+ "spacing": {
+ "before": 14,
+ "after": 14,
+ "line": 1.6
+ },
+ "indent": 28,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 14,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.6
+ }
+ },
+ "strong": {
+ "font": "heading",
+ "bold": false,
+ "color": "textSecondary"
+ },
+ "em": {
+ "font": "body",
+ "italic": true,
+ "color": "text"
+ },
+ "a": {
+ "font": "body",
+ "color": "border",
+ "underline": true,
+ "bold": true
+ },
+ "table": {
+ "spacing": {
+ "before": 21,
+ "after": 21,
+ "line": 1.2
+ },
+ "border": {
+ "color": "border",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "heading",
+ "size": 14,
+ "color": "text",
+ "bold": false,
+ "background": "accent",
+ "padding": 10
+ },
+ "td": {
+ "font": "body",
+ "size": 14,
+ "color": "text",
+ "padding": 10,
+ "borderBottom": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 28,
+ "after": 28
+ },
+ "border": {
+ "color": "textSecondary",
+ "width": 4,
+ "style": "dotted"
+ }
+ },
+ "img": {
+ "align": "left",
+ "spacing": {
+ "before": 21,
+ "after": 21
+ },
+ "border": {
+ "color": "text",
+ "width": 2,
+ "style": "solid"
+ },
+ "grayscale": true
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true,
+ "color": "textSecondary"
+ },
+ "sup": {
+ "font": "body",
+ "size": 10,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 10,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "accent",
+ "color": "text"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 12,
+ "color": "textSecondary",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 12,
+ "color": "textSecondary",
+ "spacing": {
+ "before": 6,
+ "after": 6,
+ "line": 1.2
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 60,
+ "bottom": 60,
+ "left": 60,
+ "right": 60
+ },
+ "columns": 1,
+ "header": true,
+ "footer": true
+ }
+ }
\ No newline at end of file
diff --git a/src-tauri/templates/creative/street-art-graffiti.json b/src-tauri/templates/creative/street-art-graffiti.json
new file mode 100644
index 0000000..f5176b4
--- /dev/null
+++ b/src-tauri/templates/creative/street-art-graffiti.json
@@ -0,0 +1,307 @@
+{
+ "id": "street-art-graffiti",
+ "name": "Street Art Graffiti",
+ "category": "creative",
+ "description": "Urban style with spray paint textures and marker tags. Rebellious, bold, and expressive.",
+ "vibe": "Urban, Rebellious, Street",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Sedgwick+Ave&family=Caveat:wght@400..700&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Sedgwick Ave",
+ "body": "Caveat",
+ "code": "Caveat"
+ },
+ "colors": {
+ "text": "FFFFFF",
+ "textSecondary": "FFEB3B",
+ "background": "212121",
+ "accent": "D50000",
+ "border": "00E5FF",
+ "codeBg": "424242",
+ "blockquoteBorder": "76FF03"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 48,
+ "color": "textSecondary",
+ "bold": false,
+ "align": "center",
+ "spacing": {
+ "before": 48,
+ "after": 24,
+ "line": 1.2
+ },
+ "rotation": -3,
+ "shadow": "4px 4px 0px #D50000"
+ },
+ "h2": {
+ "font": "heading",
+ "size": 32,
+ "color": "border",
+ "bold": false,
+ "align": "left",
+ "spacing": {
+ "before": 32,
+ "after": 16,
+ "line": 1.2
+ },
+ "rotation": 2
+ },
+ "h3": {
+ "font": "heading",
+ "size": 24,
+ "color": "blockquoteBorder",
+ "bold": false,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.2
+ }
+ },
+ "h4": {
+ "font": "body",
+ "size": 22,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 20,
+ "after": 10,
+ "line": 1.3
+ }
+ },
+ "h5": {
+ "font": "body",
+ "size": 20,
+ "color": "accent",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "h6": {
+ "font": "body",
+ "size": 18,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 18,
+ "color": "text",
+ "align": "left",
+ "spacing": {
+ "before": 0,
+ "after": 18,
+ "line": 1.5
+ }
+ },
+ "blockquote": {
+ "font": "heading",
+ "size": 20,
+ "color": "textSecondary",
+ "italic": false,
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.4
+ },
+ "padding": 20,
+ "border": {
+ "color": "accent",
+ "width": 3,
+ "style": "solid"
+ },
+ "background": "codeBg",
+ "rotation": 1
+ },
+ "code": {
+ "font": "body",
+ "size": 16,
+ "color": "border",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.4
+ }
+ },
+ "pre": {
+ "font": "body",
+ "size": 16,
+ "color": "border",
+ "background": "codeBg",
+ "padding": 16,
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.4
+ },
+ "border": {
+ "color": "textSecondary",
+ "width": 1,
+ "style": "dashed"
+ }
+ },
+ "ul": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.5
+ },
+ "indent": 28,
+ "bullet": "arrow"
+ },
+ "ol": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.5
+ },
+ "indent": 28,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 18,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.5
+ }
+ },
+ "strong": {
+ "font": "heading",
+ "bold": false,
+ "color": "accent"
+ },
+ "em": {
+ "font": "body",
+ "italic": true,
+ "color": "textSecondary",
+ "background": "codeBg"
+ },
+ "a": {
+ "font": "heading",
+ "color": "blockquoteBorder",
+ "underline": true,
+ "bold": false
+ },
+ "table": {
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.2
+ },
+ "border": {
+ "color": "accent",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "heading",
+ "size": 18,
+ "color": "background",
+ "bold": false,
+ "background": "accent",
+ "padding": 12
+ },
+ "td": {
+ "font": "body",
+ "size": 18,
+ "color": "text",
+ "padding": 12,
+ "borderBottom": {
+ "color": "accent",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 32,
+ "after": 32
+ },
+ "border": {
+ "color": "border",
+ "width": 4,
+ "style": "dashed"
+ }
+ },
+ "img": {
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 24
+ },
+ "border": {
+ "color": "text",
+ "width": 3,
+ "style": "solid"
+ },
+ "rotation": -1
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true,
+ "color": "accent"
+ },
+ "sup": {
+ "font": "body",
+ "size": 14,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 14,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "textSecondary",
+ "color": "background"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 16,
+ "color": "textSecondary",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 16,
+ "color": "textSecondary",
+ "spacing": {
+ "before": 6,
+ "after": 6,
+ "line": 1.2
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 60,
+ "bottom": 60,
+ "left": 60,
+ "right": 60
+ },
+ "columns": 1,
+ "header": false,
+ "footer": true
+ }
+ }
\ No newline at end of file
diff --git a/src-tauri/templates/creative/vaporwave-aesthetic.json b/src-tauri/templates/creative/vaporwave-aesthetic.json
new file mode 100644
index 0000000..b5f176d
--- /dev/null
+++ b/src-tauri/templates/creative/vaporwave-aesthetic.json
@@ -0,0 +1,306 @@
+{
+ "id": "vaporwave-aesthetic",
+ "name": "Vaporwave Aesthetic",
+ "category": "creative",
+ "description": "Nostalgic 80s/90s internet vibe. Neon grids, cyan and magenta gradients, and retro-futuristic typography.",
+ "vibe": "Nostalgic, Digital, Surreal",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Audiowide&family=Varela+Round&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Audiowide",
+ "body": "Varela Round",
+ "code": "Varela Round"
+ },
+ "colors": {
+ "text": "1A237E",
+ "textSecondary": "FF4081",
+ "background": "F3E5F5",
+ "accent": "00E5FF",
+ "border": "D500F9",
+ "codeBg": "FFFFFF",
+ "blockquoteBorder": "00E5FF"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 36,
+ "color": "textSecondary",
+ "bold": false,
+ "align": "center",
+ "spacing": {
+ "before": 40,
+ "after": 20,
+ "line": 1.2
+ },
+ "letterSpacing": 4,
+ "allCaps": true,
+ "shadow": "2px 2px 0px #00E5FF"
+ },
+ "h2": {
+ "font": "heading",
+ "size": 24,
+ "color": "accent",
+ "bold": false,
+ "align": "center",
+ "spacing": {
+ "before": 32,
+ "after": 16,
+ "line": 1.2
+ },
+ "letterSpacing": 2
+ },
+ "h3": {
+ "font": "heading",
+ "size": 20,
+ "color": "border",
+ "bold": false,
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.2
+ }
+ },
+ "h4": {
+ "font": "body",
+ "size": 16,
+ "color": "text",
+ "bold": true,
+ "align": "center",
+ "spacing": {
+ "before": 20,
+ "after": 10,
+ "line": 1.3
+ },
+ "allCaps": true
+ },
+ "h5": {
+ "font": "body",
+ "size": 14,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "center",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "h6": {
+ "font": "body",
+ "size": 12,
+ "color": "border",
+ "bold": true,
+ "align": "center",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "align": "justify",
+ "spacing": {
+ "before": 0,
+ "after": 16,
+ "line": 1.6
+ }
+ },
+ "blockquote": {
+ "font": "heading",
+ "size": 14,
+ "color": "textSecondary",
+ "italic": false,
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.5
+ },
+ "padding": 20,
+ "background": "codeBg",
+ "border": {
+ "color": "accent",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "code": {
+ "font": "body",
+ "size": 11,
+ "color": "border",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.4
+ }
+ },
+ "pre": {
+ "font": "body",
+ "size": 11,
+ "color": "border",
+ "background": "codeBg",
+ "padding": 16,
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.4
+ },
+ "border": {
+ "color": "textSecondary",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "ul": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 32,
+ "bullet": "diamond"
+ },
+ "ol": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 32,
+ "numbering": "decimal-leading-zero"
+ },
+ "li": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.6
+ }
+ },
+ "strong": {
+ "font": "heading",
+ "bold": false,
+ "color": "textSecondary"
+ },
+ "em": {
+ "font": "body",
+ "italic": true,
+ "color": "accent"
+ },
+ "a": {
+ "font": "heading",
+ "color": "accent",
+ "underline": true,
+ "bold": false
+ },
+ "table": {
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.2
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "heading",
+ "size": 12,
+ "color": "background",
+ "bold": false,
+ "background": "border",
+ "padding": 12
+ },
+ "td": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "padding": 12,
+ "borderBottom": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 32,
+ "after": 32
+ },
+ "border": {
+ "color": "accent",
+ "width": 4,
+ "style": "double"
+ }
+ },
+ "img": {
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 24
+ },
+ "border": {
+ "color": "textSecondary",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true,
+ "color": "accent"
+ },
+ "sup": {
+ "font": "body",
+ "size": 10,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 10,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "accent",
+ "color": "text"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "spacing": {
+ "before": 6,
+ "after": 6,
+ "line": 1.2
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 72,
+ "bottom": 72,
+ "left": 72,
+ "right": 72
+ },
+ "columns": 1,
+ "header": true,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/creative/watercolor-wash.json b/src-tauri/templates/creative/watercolor-wash.json
new file mode 100644
index 0000000..986876d
--- /dev/null
+++ b/src-tauri/templates/creative/watercolor-wash.json
@@ -0,0 +1,307 @@
+{
+ "id": "watercolor-wash",
+ "name": "Watercolor Wash",
+ "category": "creative",
+ "description": "Soft, artistic, and flowing. Uses hand-written style fonts and a gentle pastel color palette.",
+ "vibe": "Soft, Artistic, Flowing",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Amatic+SC:wght@400;700&family=Open+Sans:ital,wght@0,300..800;1,300..800&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Amatic SC",
+ "body": "Open Sans",
+ "code": "Open Sans"
+ },
+ "colors": {
+ "text": "455A64",
+ "textSecondary": "78909C",
+ "background": "FFFFFF",
+ "accent": "EC407A",
+ "border": "B3E5FC",
+ "codeBg": "F3E5F5",
+ "blockquoteBorder": "AB47BC"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 48,
+ "color": "accent",
+ "bold": true,
+ "align": "center",
+ "spacing": {
+ "before": 48,
+ "after": 24,
+ "line": 1.1
+ },
+ "borderBottom": {
+ "color": "border",
+ "width": 4,
+ "style": "dashed",
+ "space": 10
+ }
+ },
+ "h2": {
+ "font": "heading",
+ "size": 36,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 36,
+ "after": 18,
+ "line": 1.2
+ }
+ },
+ "h3": {
+ "font": "heading",
+ "size": 30,
+ "color": "blockquoteBorder",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 30,
+ "after": 15,
+ "line": 1.2
+ }
+ },
+ "h4": {
+ "font": "body",
+ "size": 18,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 20,
+ "after": 10,
+ "line": 1.3
+ }
+ },
+ "h5": {
+ "font": "body",
+ "size": 16,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "h6": {
+ "font": "body",
+ "size": 14,
+ "color": "accent",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 14,
+ "color": "text",
+ "align": "left",
+ "spacing": {
+ "before": 0,
+ "after": 14,
+ "line": 1.6
+ }
+ },
+ "blockquote": {
+ "font": "heading",
+ "size": 24,
+ "color": "textSecondary",
+ "italic": false,
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.4
+ },
+ "padding": 0,
+ "border": {
+ "color": "transparent",
+ "width": 0,
+ "style": "none"
+ },
+ "background": "transparent"
+ },
+ "code": {
+ "font": "body",
+ "size": 12,
+ "color": "blockquoteBorder",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.4
+ }
+ },
+ "pre": {
+ "font": "body",
+ "size": 12,
+ "color": "blockquoteBorder",
+ "background": "codeBg",
+ "padding": 16,
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.4
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "ul": {
+ "spacing": {
+ "before": 14,
+ "after": 14,
+ "line": 1.6
+ },
+ "indent": 28,
+ "bullet": "circle"
+ },
+ "ol": {
+ "spacing": {
+ "before": 14,
+ "after": 14,
+ "line": 1.6
+ },
+ "indent": 28,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 14,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.6
+ }
+ },
+ "strong": {
+ "font": "heading",
+ "bold": true,
+ "color": "accent"
+ },
+ "em": {
+ "font": "body",
+ "italic": true,
+ "color": "textSecondary"
+ },
+ "a": {
+ "font": "body",
+ "color": "accent",
+ "underline": true,
+ "bold": true
+ },
+ "table": {
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.2
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "heading",
+ "size": 18,
+ "color": "text",
+ "bold": true,
+ "background": "codeBg",
+ "padding": 12
+ },
+ "td": {
+ "font": "body",
+ "size": 14,
+ "color": "text",
+ "padding": 12,
+ "borderBottom": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 32,
+ "after": 32
+ },
+ "border": {
+ "color": "border",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "img": {
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 24
+ },
+ "border": {
+ "color": "codeBg",
+ "width": 8,
+ "style": "solid"
+ }
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true,
+ "color": "textSecondary"
+ },
+ "sup": {
+ "font": "body",
+ "size": 10,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 10,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "codeBg",
+ "color": "text"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 12,
+ "color": "textSecondary",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 12,
+ "color": "textSecondary",
+ "spacing": {
+ "before": 6,
+ "after": 6,
+ "line": 1.2
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 90,
+ "bottom": 90,
+ "left": 90,
+ "right": 90
+ },
+ "columns": 1,
+ "header": true,
+ "footer": true
+ }
+ }
\ No newline at end of file
diff --git a/src-tauri/templates/editorial/art-nouveau-organic.json b/src-tauri/templates/editorial/art-nouveau-organic.json
new file mode 100644
index 0000000..673bda8
--- /dev/null
+++ b/src-tauri/templates/editorial/art-nouveau-organic.json
@@ -0,0 +1,308 @@
+{
+ "id": "art-nouveau-organic",
+ "name": "Art Nouveau Organic",
+ "category": "editorial",
+ "description": "Inspired by the Art Nouveau movement (1890-1910). Flowing organic lines with nature-inspired elegance and whiplash curves.",
+ "vibe": "Organic, Flowing, Decorative",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Sorts+Mill+Goudy:ital,wght@0,400;1,400&family=Fanwood+Text:ital,wght@0,400;1,400&family=Playfair+Display:ital,wght@0,400..900;1,400..900&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Sorts Mill Goudy",
+ "body": "Fanwood Text",
+ "code": "Fanwood Text"
+ },
+ "colors": {
+ "text": "3D4A2D",
+ "textSecondary": "4A5D23",
+ "background": "FDFDF8",
+ "accent": "8FA876",
+ "border": "B5C99A",
+ "codeBg": "F4F7F0",
+ "blockquoteBorder": "8FA876"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 42,
+ "color": "textSecondary",
+ "bold": false,
+ "align": "center",
+ "spacing": {
+ "before": 48,
+ "after": 32,
+ "line": 1.2
+ },
+ "borderBottom": {
+ "color": "accent",
+ "width": 2,
+ "style": "solid",
+ "space": 12
+ }
+ ,
+ "italic": true
+ },
+ "h2": {
+ "font": "heading",
+ "size": 24,
+ "color": "textSecondary",
+ "bold": false,
+ "align": "left",
+ "spacing": {
+ "before": 36,
+ "after": 18,
+ "line": 1.3
+ },
+ "italic": true
+ },
+ "h3": {
+ "font": "heading",
+ "size": 20,
+ "color": "textSecondary",
+ "bold": false,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.3
+ }
+ },
+ "h4": {
+ "font": "body",
+ "size": 18,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 20,
+ "after": 10,
+ "line": 1.4
+ }
+ },
+ "h5": {
+ "font": "body",
+ "size": 16,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "h6": {
+ "font": "body",
+ "size": 14,
+ "color": "textSecondary",
+ "italic": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "align": "justify",
+ "spacing": {
+ "before": 0,
+ "after": 16,
+ "line": 1.8
+ }
+ },
+ "blockquote": {
+ "font": "body",
+ "size": 14,
+ "color": "text",
+ "italic": true,
+ "align": "left",
+ "spacing": {
+ "before": 28,
+ "after": 28,
+ "line": 1.6
+ },
+ "padding": 20,
+ "border": {
+ "color": "blockquoteBorder",
+ "width": 3,
+ "style": "solid"
+ },
+ "background": "F4F7F0"
+ },
+ "code": {
+ "font": "body",
+ "size": 11,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.4
+ }
+ },
+ "pre": {
+ "font": "body",
+ "size": 11,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "padding": 16,
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.4
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "ul": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 24,
+ "bullet": "circle"
+ },
+ "ol": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 24,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "spacing": {
+ "before": 6,
+ "after": 6,
+ "line": 1.6
+ }
+ },
+ "strong": {
+ "font": "body",
+ "bold": true,
+ "color": "textSecondary"
+ },
+ "em": {
+ "font": "body",
+ "italic": true
+ },
+ "a": {
+ "font": "body",
+ "color": "accent",
+ "underline": true,
+ "bold": true
+ },
+ "table": {
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.4
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "heading",
+ "size": 12,
+ "color": "textSecondary",
+ "bold": true,
+ "background": "codeBg",
+ "padding": 12
+ },
+ "td": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "padding": 12,
+ "borderBottom": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 32,
+ "after": 32
+ },
+ "border": {
+ "color": "accent",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "img": {
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 24
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true
+ },
+ "sup": {
+ "font": "body",
+ "size": 9,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 9,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "accent",
+ "color": "background"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.2
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 72,
+ "bottom": 72,
+ "left": 72,
+ "right": 72
+ },
+ "columns": 1,
+ "header": true,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/editorial/arts-crafts-heritage.json b/src-tauri/templates/editorial/arts-crafts-heritage.json
new file mode 100644
index 0000000..fbffb12
--- /dev/null
+++ b/src-tauri/templates/editorial/arts-crafts-heritage.json
@@ -0,0 +1,305 @@
+{
+ "id": "arts-crafts-heritage",
+ "name": "Arts & Crafts Heritage",
+ "category": "editorial",
+ "description": "Inspired by William Morris and the Arts & Crafts movement (1880s-1900). Emphasizes craftsmanship, natural forms, and medieval aesthetics with readable typography.",
+ "vibe": "Artisan, Literary, Handcrafted",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Cormorant+Garamond:ital,wght@0,400;0,600;0,700;1,400;1,600;1,700&family=EB+Garamond:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Cormorant Garamond",
+ "body": "EB Garamond",
+ "code": "EB Garamond"
+ },
+ "colors": {
+ "text": "3C3C3C",
+ "textSecondary": "2F4F4F",
+ "background": "FCFAF2",
+ "accent": "556B2F",
+ "border": "A3B18A",
+ "codeBg": "F5F5DC",
+ "blockquoteBorder": "556B2F"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 36,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "center",
+ "spacing": {
+ "before": 40,
+ "after": 24,
+ "line": 1.2
+ },
+ "borderBottom": {
+ "color": "accent",
+ "width": 2,
+ "style": "solid",
+ "space": 10
+ }
+ },
+ "h2": {
+ "font": "heading",
+ "size": 22,
+ "color": "accent",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 32,
+ "after": 16,
+ "line": 1.3
+ }
+ },
+ "h3": {
+ "font": "heading",
+ "size": 18,
+ "color": "accent",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.3
+ }
+ },
+ "h4": {
+ "font": "body",
+ "size": 16,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 20,
+ "after": 10,
+ "line": 1.4
+ }
+ },
+ "h5": {
+ "font": "body",
+ "size": 14,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "h6": {
+ "font": "body",
+ "size": 12,
+ "color": "textSecondary",
+ "italic": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "align": "justify",
+ "spacing": {
+ "before": 0,
+ "after": 16,
+ "line": 1.8
+ }
+ },
+ "blockquote": {
+ "font": "body",
+ "size": 14,
+ "color": "text",
+ "italic": true,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.6
+ },
+ "padding": 20,
+ "border": {
+ "color": "blockquoteBorder",
+ "width": 4,
+ "style": "solid"
+ },
+ "background": "F5F5DC"
+ },
+ "code": {
+ "font": "body",
+ "size": 11,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.4
+ }
+ },
+ "pre": {
+ "font": "body",
+ "size": 11,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "padding": 16,
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.4
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "ul": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 24,
+ "bullet": "disc"
+ },
+ "ol": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 24,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.6
+ }
+ },
+ "strong": {
+ "font": "body",
+ "bold": true,
+ "color": "textSecondary"
+ },
+ "em": {
+ "font": "body",
+ "italic": true
+ },
+ "a": {
+ "font": "body",
+ "color": "accent",
+ "underline": true,
+ "bold": true
+ },
+ "table": {
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.4
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "heading",
+ "size": 12,
+ "color": "textSecondary",
+ "bold": true,
+ "background": "codeBg",
+ "padding": 12
+ },
+ "td": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "padding": 12,
+ "borderBottom": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 32,
+ "after": 32
+ },
+ "border": {
+ "color": "accent",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "img": {
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 24
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true
+ },
+ "sup": {
+ "font": "body",
+ "size": 9,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 9,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "accent",
+ "color": "background"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.2
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 72,
+ "bottom": 72,
+ "left": 72,
+ "right": 72
+ },
+ "columns": 1,
+ "header": true,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/editorial/baroque-splendor.json b/src-tauri/templates/editorial/baroque-splendor.json
new file mode 100644
index 0000000..69f5ff1
--- /dev/null
+++ b/src-tauri/templates/editorial/baroque-splendor.json
@@ -0,0 +1,304 @@
+{
+ "id": "baroque-splendor",
+ "name": "Baroque Splendor",
+ "category": "editorial",
+ "description": "Heavy, dramatic 17th-century luxury. Deep golds and crimsons with deeply flourished script.",
+ "vibe": "Luxurious, Dramatic, Heavy",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Mrs+Saint+Delafield&family=Mate:ital,wght@0,400;0,700;1,400;1,700&family=Playfair+Display:ital,wght@0,400..900;1,400..900&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Mrs Saint Delafield",
+ "body": "Mate",
+ "code": "Mate"
+ },
+ "colors": {
+ "text": "3D2B1F",
+ "textSecondary": "800000",
+ "background": "FFFBF0",
+ "accent": "B8860B",
+ "border": "D4AF37",
+ "codeBg": "FFF8E7",
+ "blockquoteBorder": "B8860B"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 56,
+ "color": "textSecondary",
+ "bold": false,
+ "align": "center",
+ "spacing": {
+ "before": 52,
+ "after": 32,
+ "line": 1.1
+ }
+ },
+ "h2": {
+ "font": "body",
+ "size": 20,
+ "color": "accent",
+ "bold": true,
+ "align": "center",
+ "spacing": {
+ "before": 40,
+ "after": 20,
+ "line": 1.2
+ },
+ "allCaps": true,
+ "letterSpacing": 3
+ },
+ "h3": {
+ "font": "body",
+ "size": 16,
+ "color": "accent",
+ "bold": true,
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.2
+ },
+ "allCaps": true
+ },
+ "h4": {
+ "font": "body",
+ "size": 14,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 20,
+ "after": 10,
+ "line": 1.3
+ }
+ },
+ "h5": {
+ "font": "body",
+ "size": 13,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.3
+ }
+ },
+ "h6": {
+ "font": "body",
+ "size": 12,
+ "color": "textSecondary",
+ "italic": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.3
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "align": "justify",
+ "spacing": {
+ "before": 0,
+ "after": 18,
+ "line": 1.8
+ }
+ },
+ "blockquote": {
+ "font": "body",
+ "size": 16,
+ "color": "text",
+ "italic": true,
+ "align": "center",
+ "spacing": {
+ "before": 32,
+ "after": 32,
+ "line": 1.5
+ },
+ "padding": 24,
+ "border": {
+ "color": "blockquoteBorder",
+ "width": 3,
+ "style": "double"
+ },
+ "background": "FFF8E7"
+ },
+ "code": {
+ "font": "body",
+ "size": 11,
+ "color": "accent",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.4
+ }
+ },
+ "pre": {
+ "font": "body",
+ "size": 11,
+ "color": "accent",
+ "background": "codeBg",
+ "padding": 16,
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.4
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "ul": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.8
+ },
+ "indent": 24,
+ "bullet": "diamond"
+ },
+ "ol": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.8
+ },
+ "indent": 24,
+ "numbering": "upper-roman"
+ },
+ "li": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "spacing": {
+ "before": 6,
+ "after": 6,
+ "line": 1.8
+ }
+ },
+ "strong": {
+ "font": "body",
+ "bold": true,
+ "color": "textSecondary"
+ },
+ "em": {
+ "font": "body",
+ "italic": true,
+ "color": "accent"
+ },
+ "a": {
+ "font": "body",
+ "color": "accent",
+ "underline": true,
+ "bold": true
+ },
+ "table": {
+ "spacing": {
+ "before": 32,
+ "after": 32,
+ "line": 1.5
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "body",
+ "size": 12,
+ "color": "textSecondary",
+ "bold": true,
+ "background": "codeBg",
+ "padding": 12,
+ "allCaps": true
+ },
+ "td": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "padding": 12,
+ "borderBottom": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 40,
+ "after": 40
+ },
+ "border": {
+ "color": "accent",
+ "width": 4,
+ "style": "double"
+ }
+ },
+ "img": {
+ "align": "center",
+ "spacing": {
+ "before": 32,
+ "after": 32
+ },
+ "border": {
+ "color": "border",
+ "width": 3,
+ "style": "solid"
+ }
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true
+ },
+ "sup": {
+ "font": "body",
+ "size": 9,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 9,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "accent",
+ "color": "background"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.2
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 72,
+ "bottom": 72,
+ "left": 72,
+ "right": 72
+ },
+ "columns": 1,
+ "header": true,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/editorial/classic-newspaper.json b/src-tauri/templates/editorial/classic-newspaper.json
new file mode 100644
index 0000000..5e74116
--- /dev/null
+++ b/src-tauri/templates/editorial/classic-newspaper.json
@@ -0,0 +1,323 @@
+{
+ "id": "classic-newspaper",
+ "name": "Classic Newspaper",
+ "category": "Editorial",
+ "description": "The trusted voice of record. Traditional multi-column layout with high-contrast serifs and justified text.",
+ "vibe": "Authoritative, Timeless, Informative",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Playfair+Display:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&family=Newsreader:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&family=Courier+Prime:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Playfair Display",
+ "body": "Newsreader",
+ "code": "Courier Prime"
+ },
+ "colors": {
+ "text": "111111",
+ "textSecondary": "333333",
+ "background": "F9F7F1",
+ "accent": "8B0000",
+ "border": "222222",
+ "codeBg": "EAE8E0",
+ "blockquoteBorder": "111111"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 48,
+ "color": "111111",
+ "bold": true,
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 0.95
+ },
+ "allCaps": true,
+ "letterSpacing": -1,
+ "borderBottom": {
+ "color": "111111",
+ "width": 4,
+ "style": "double"
+ }
+ },
+ "h2": {
+ "font": "heading",
+ "size": 32,
+ "color": "111111",
+ "bold": true,
+ "align": "center",
+ "italic": true,
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.1
+ }
+ },
+ "h3": {
+ "font": "heading",
+ "size": 24,
+ "color": "111111",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 20,
+ "after": 8,
+ "line": 1.1
+ },
+ "borderBottom": {
+ "color": "111111",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "h4": {
+ "font": "heading",
+ "size": 18,
+ "color": "111111",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.2
+ }
+ },
+ "h5": {
+ "font": "heading",
+ "size": 14,
+ "color": "333333",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 12,
+ "after": 4,
+ "line": 1.2
+ },
+ "allCaps": true
+ },
+ "h6": {
+ "font": "heading",
+ "size": 12,
+ "color": "333333",
+ "bold": false,
+ "italic": true,
+ "align": "left",
+ "spacing": {
+ "before": 12,
+ "after": 4,
+ "line": 1.2
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 13,
+ "color": "111111",
+ "align": "justify",
+ "spacing": {
+ "before": 0,
+ "after": 12,
+ "line": 1.4
+ },
+ "weight": 400
+ },
+ "blockquote": {
+ "font": "heading",
+ "size": 20,
+ "color": "111111",
+ "italic": true,
+ "align": "center",
+ "bold": true,
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.2
+ },
+ "padding": 24,
+ "borderTop": {
+ "color": "111111",
+ "width": 1,
+ "style": "solid"
+ },
+ "borderBottom": {
+ "color": "111111",
+ "width": 1,
+ "style": "solid"
+ },
+ "indent": 20
+ },
+ "code": {
+ "font": "code",
+ "size": 12,
+ "color": "111111",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.4
+ }
+ },
+ "pre": {
+ "font": "code",
+ "size": 11,
+ "color": "111111",
+ "background": "codeBg",
+ "padding": 12,
+ "spacing": {
+ "before": 12,
+ "after": 12,
+ "line": 1.4
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "ul": {
+ "spacing": {
+ "before": 12,
+ "after": 12,
+ "line": 1.4
+ },
+ "indent": 16,
+ "bullet": "disc"
+ },
+ "ol": {
+ "spacing": {
+ "before": 12,
+ "after": 12,
+ "line": 1.4
+ },
+ "indent": 16,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 13,
+ "color": "111111",
+ "spacing": {
+ "before": 2,
+ "after": 2,
+ "line": 1.4
+ }
+ },
+ "strong": {
+ "font": "heading",
+ "bold": true,
+ "color": "111111"
+ },
+ "em": {
+ "font": "body",
+ "italic": true
+ },
+ "a": {
+ "font": "body",
+ "color": "111111",
+ "underline": true,
+ "bold": true
+ },
+ "table": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.2
+ },
+ "border": {
+ "color": "111111",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "heading",
+ "size": 12,
+ "color": "FFFFFF",
+ "bold": true,
+ "background": "111111",
+ "padding": 8
+ },
+ "td": {
+ "font": "body",
+ "size": 12,
+ "color": "111111",
+ "padding": 8,
+ "borderBottom": {
+ "color": "CCCCCC",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 24,
+ "after": 24
+ },
+ "border": {
+ "color": "111111",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "img": {
+ "align": "center",
+ "spacing": {
+ "before": 16,
+ "after": 16
+ },
+ "border": {
+ "color": "111111",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true,
+ "color": "555555"
+ },
+ "sup": {
+ "font": "body",
+ "size": 9,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 9,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "EAE8E0",
+ "color": "111111",
+ "italic": true
+ },
+ "footnote": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.2
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 50,
+ "bottom": 50,
+ "left": 50,
+ "right": 50
+ },
+ "columns": 1,
+ "header": true,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/editorial/cottagecore-journal.json b/src-tauri/templates/editorial/cottagecore-journal.json
new file mode 100644
index 0000000..7f19882
--- /dev/null
+++ b/src-tauri/templates/editorial/cottagecore-journal.json
@@ -0,0 +1,307 @@
+{
+ "id": "cottagecore-journal",
+ "name": "Cottagecore Journal",
+ "category": "editorial",
+ "description": "Whimsical countryside diary. Handwritten fonts with soft sage greens and earthy browns.",
+ "vibe": "Whimsical, Nature, Handmade",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Amatic+SC:wght@400;700&family=Patrick+Hand&family=Caveat:wght@400..700&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Amatic SC",
+ "body": "Patrick Hand",
+ "code": "Patrick Hand"
+ },
+ "colors": {
+ "text": "424242",
+ "textSecondary": "33691E",
+ "background": "F1F8E9",
+ "accent": "5D4037",
+ "border": "A5D6A7",
+ "codeBg": "FFFFFF",
+ "blockquoteBorder": "33691E"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 48,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "center",
+ "spacing": {
+ "before": 40,
+ "after": 24,
+ "line": 1.2
+ }
+ },
+ "h2": {
+ "font": "body",
+ "size": 24,
+ "color": "accent",
+ "bold": true,
+ "align": "center",
+ "spacing": {
+ "before": 30,
+ "after": 14,
+ "line": 1.2
+ },
+ "borderBottom": {
+ "color": "accent",
+ "width": 1,
+ "style": "dashed",
+ "space": 6
+ }
+ },
+ "h3": {
+ "font": "body",
+ "size": 20,
+ "color": "accent",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.3
+ }
+ },
+ "h4": {
+ "font": "body",
+ "size": 18,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 20,
+ "after": 10,
+ "line": 1.3
+ }
+ },
+ "h5": {
+ "font": "body",
+ "size": 16,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.3
+ }
+ },
+ "h6": {
+ "font": "body",
+ "size": 14,
+ "color": "textSecondary",
+ "italic": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.3
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 15,
+ "color": "text",
+ "align": "left",
+ "spacing": {
+ "before": 0,
+ "after": 16,
+ "line": 1.6
+ }
+ },
+ "blockquote": {
+ "font": "body",
+ "size": 18,
+ "color": "text",
+ "italic": true,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.5
+ },
+ "padding": 20,
+ "border": {
+ "color": "blockquoteBorder",
+ "width": 2,
+ "style": "dotted"
+ },
+ "background": "FFFFFF",
+ "borderRadius": 12
+ },
+ "code": {
+ "font": "body",
+ "size": 14,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.4
+ }
+ },
+ "pre": {
+ "font": "body",
+ "size": 14,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "padding": 20,
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.4
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "dashed"
+ }
+ },
+ "ul": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.5
+ },
+ "indent": 24,
+ "bullet": "heart"
+ },
+ "ol": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.5
+ },
+ "indent": 24,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 15,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.5
+ }
+ },
+ "strong": {
+ "font": "body",
+ "bold": true,
+ "color": "textSecondary"
+ },
+ "em": {
+ "font": "body",
+ "italic": true
+ },
+ "a": {
+ "font": "body",
+ "color": "textSecondary",
+ "underline": true,
+ "bold": true
+ },
+ "table": {
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.3
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "body",
+ "size": 15,
+ "color": "textSecondary",
+ "bold": true,
+ "background": "E8F5E9",
+ "padding": 12
+ },
+ "td": {
+ "font": "body",
+ "size": 14,
+ "color": "text",
+ "padding": 12,
+ "borderBottom": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 32,
+ "after": 32
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "dashed"
+ }
+ },
+ "img": {
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 24
+ },
+ "border": {
+ "color": "border",
+ "width": 2,
+ "style": "solid"
+ },
+ "borderRadius": 8
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true
+ },
+ "sup": {
+ "font": "body",
+ "size": 10,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 10,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "A5D6A7",
+ "color": "textSecondary"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 12,
+ "color": "textSecondary",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 12,
+ "color": "textSecondary",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.2
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 72,
+ "bottom": 72,
+ "left": 72,
+ "right": 72
+ },
+ "columns": 1,
+ "header": true,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/editorial/dutch-golden-age.json b/src-tauri/templates/editorial/dutch-golden-age.json
new file mode 100644
index 0000000..b2b46a8
--- /dev/null
+++ b/src-tauri/templates/editorial/dutch-golden-age.json
@@ -0,0 +1,299 @@
+{
+ "id": "dutch-golden-age",
+ "name": "Dutch Golden Age",
+ "category": "editorial",
+ "description": "Inspired by 17th century Dutch art and typography. Rich, painterly aesthetics with Rembrandt-era elegance.",
+ "vibe": "Classical, Rich, Painterly",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Pirata+One&family=Gentium+Book+Plus:ital,wght@0,400;0,700;1,400;1,700&family=Playfair+Display:ital,wght@0,400..900;1,400..900&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Pirata One",
+ "body": "Gentium Book Plus",
+ "code": "Gentium Book Plus"
+ },
+ "colors": {
+ "text": "4E342E",
+ "textSecondary": "3E2723",
+ "background": "FCF9F2",
+ "accent": "BF8040",
+ "border": "A1887F",
+ "codeBg": "EFEBE9",
+ "blockquoteBorder": "BF8040"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 42,
+ "color": "textSecondary",
+ "bold": false,
+ "align": "center",
+ "spacing": {
+ "before": 48,
+ "after": 32,
+ "line": 1.2
+ }
+ },
+ "h2": {
+ "font": "body",
+ "size": 20,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 36,
+ "after": 18,
+ "line": 1.3
+ }
+ },
+ "h3": {
+ "font": "body",
+ "size": 16,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.3
+ }
+ },
+ "h4": {
+ "font": "body",
+ "size": 14,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 20,
+ "after": 10,
+ "line": 1.4
+ }
+ },
+ "h5": {
+ "font": "body",
+ "size": 13,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "h6": {
+ "font": "body",
+ "size": 12,
+ "color": "textSecondary",
+ "italic": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "align": "justify",
+ "spacing": {
+ "before": 0,
+ "after": 16,
+ "line": 1.8
+ }
+ },
+ "blockquote": {
+ "font": "body",
+ "size": 14,
+ "color": "text",
+ "italic": true,
+ "align": "left",
+ "spacing": {
+ "before": 28,
+ "after": 28,
+ "line": 1.6
+ },
+ "padding": 20,
+ "border": {
+ "color": "blockquoteBorder",
+ "width": 1,
+ "style": "solid"
+ },
+ "background": "EFEBE9"
+ },
+ "code": {
+ "font": "body",
+ "size": 11,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.4
+ }
+ },
+ "pre": {
+ "font": "body",
+ "size": 11,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "padding": 16,
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.4
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "ul": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 24,
+ "bullet": "cross"
+ },
+ "ol": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 24,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "spacing": {
+ "before": 6,
+ "after": 6,
+ "line": 1.6
+ }
+ },
+ "strong": {
+ "font": "body",
+ "bold": true,
+ "color": "textSecondary"
+ },
+ "em": {
+ "font": "body",
+ "italic": true
+ },
+ "a": {
+ "font": "body",
+ "color": "accent",
+ "underline": true,
+ "bold": true
+ },
+ "table": {
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.4
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "body",
+ "size": 12,
+ "color": "textSecondary",
+ "bold": true,
+ "background": "codeBg",
+ "padding": 12
+ },
+ "td": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "padding": 12,
+ "borderBottom": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 32,
+ "after": 32
+ },
+ "border": {
+ "color": "accent",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "img": {
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 24
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true
+ },
+ "sup": {
+ "font": "body",
+ "size": 9,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 9,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "accent",
+ "color": "background"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.2
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 72,
+ "bottom": 72,
+ "left": 72,
+ "right": 72
+ },
+ "columns": 1,
+ "header": true,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/editorial/fashion-magazine.json b/src-tauri/templates/editorial/fashion-magazine.json
new file mode 100644
index 0000000..393ba38
--- /dev/null
+++ b/src-tauri/templates/editorial/fashion-magazine.json
@@ -0,0 +1,309 @@
+{
+ "id": "fashion-magazine",
+ "name": "Fashion Magazine",
+ "category": "editorial",
+ "description": "Trendy and bold. High-contrast typography with oversized lettering and pink accents.",
+ "vibe": "Trendy, Loud, Pink",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Abril+Fatface&family=Raleway:ital,wght@0,300;0,400;0,700;1,300;1,400;1,700&family=Playfair+Display:ital,wght@0,400..900;1,400..900&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Abril Fatface",
+ "body": "Raleway",
+ "code": "Raleway"
+ },
+ "colors": {
+ "text": "212121",
+ "textSecondary": "E91E63",
+ "background": "FFFFFF",
+ "accent": "E91E63",
+ "border": "EFEFEF",
+ "codeBg": "F5F5F5",
+ "blockquoteBorder": "E91E63"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 64,
+ "color": "textSecondary",
+ "bold": false,
+ "align": "left",
+ "spacing": {
+ "before": 40,
+ "after": 32,
+ "line": 0.9
+ }
+ },
+ "h2": {
+ "font": "body",
+ "size": 18,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 32,
+ "after": 16,
+ "line": 1.2
+ },
+ "allCaps": true,
+ "letterSpacing": 4
+ },
+ "h3": {
+ "font": "body",
+ "size": 14,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.2
+ },
+ "allCaps": true,
+ "letterSpacing": 2
+ },
+ "h4": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 20,
+ "after": 10,
+ "line": 1.3
+ }
+ },
+ "h5": {
+ "font": "body",
+ "size": 11,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.3
+ }
+ },
+ "h6": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.3
+ },
+ "allCaps": true
+ },
+ "p": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "align": "left",
+ "spacing": {
+ "before": 0,
+ "after": 16,
+ "line": 1.6
+ },
+ "weight": 300
+ },
+ "blockquote": {
+ "font": "heading",
+ "size": 28,
+ "color": "text",
+ "italic": false,
+ "align": "left",
+ "spacing": {
+ "before": 32,
+ "after": 32,
+ "line": 1.1
+ },
+ "padding": 24,
+ "borderLeft": {
+ "color": "blockquoteBorder",
+ "width": 12,
+ "style": "solid"
+ }
+ ,
+ "background": "transparent"
+ },
+ "code": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.4
+ }
+ },
+ "pre": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "background": "codeBg",
+ "padding": 16,
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.4
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "ul": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.5
+ },
+ "indent": 20,
+ "bullet": "circle"
+ },
+ "ol": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.5
+ },
+ "indent": 20,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.5
+ },
+ "weight": 300
+ },
+ "strong": {
+ "font": "body",
+ "bold": true,
+ "color": "text"
+ },
+ "em": {
+ "font": "body",
+ "italic": true,
+ "color": "textSecondary"
+ },
+ "a": {
+ "font": "body",
+ "color": "textSecondary",
+ "underline": true,
+ "bold": true
+ },
+ "table": {
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.3
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "body",
+ "size": 11,
+ "color": "textSecondary",
+ "bold": true,
+ "background": "codeBg",
+ "padding": 12,
+ "allCaps": true
+ },
+ "td": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "padding": 12,
+ "borderBottom": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 32,
+ "after": 32
+ },
+ "border": {
+ "color": "textSecondary",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "img": {
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 24
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true
+ },
+ "sup": {
+ "font": "body",
+ "size": 9,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 9,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "textSecondary",
+ "color": "background"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 9,
+ "color": "textSecondary",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 9,
+ "color": "textSecondary",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.2
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 72,
+ "bottom": 72,
+ "left": 72,
+ "right": 72
+ },
+ "columns": 1,
+ "header": true,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/editorial/film-script.json b/src-tauri/templates/editorial/film-script.json
new file mode 100644
index 0000000..e10e54d
--- /dev/null
+++ b/src-tauri/templates/editorial/film-script.json
@@ -0,0 +1,292 @@
+{
+ "id": "film-script",
+ "name": "Film Script",
+ "category": "editorial",
+ "description": "Hollywood screenplay format. Courier font, specific margins, and character name centering.",
+ "vibe": "Cinematic, Format, Draft",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Courier+Prime:ital,wght@0,400;0,700;1,400;1,700&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Courier Prime",
+ "body": "Courier Prime",
+ "code": "Courier Prime"
+ },
+ "colors": {
+ "text": "000000",
+ "textSecondary": "333333",
+ "background": "FFFFFF",
+ "accent": "666666",
+ "border": "CCCCCC",
+ "codeBg": "F9F9F9",
+ "blockquoteBorder": "666666"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 12,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.2
+ },
+ "allCaps": true,
+ "underline": true
+ },
+ "h2": {
+ "font": "heading",
+ "size": 12,
+ "color": "text",
+ "bold": true,
+ "align": "center",
+ "spacing": {
+ "before": 48,
+ "after": 0,
+ "line": 1.2
+ },
+ "allCaps": true
+ },
+ "h3": {
+ "font": "heading",
+ "size": 12,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.2
+ },
+ "italic": true
+ },
+ "h4": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 12,
+ "after": 6,
+ "line": 1.2
+ }
+ },
+ "h5": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 12,
+ "after": 6,
+ "line": 1.2
+ }
+ },
+ "h6": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "italic": true,
+ "align": "left",
+ "spacing": {
+ "before": 12,
+ "after": 6,
+ "line": 1.2
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "align": "left",
+ "spacing": {
+ "before": 0,
+ "after": 12,
+ "line": 1.2
+ }
+ },
+ "blockquote": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "italic": false,
+ "align": "center",
+ "spacing": {
+ "before": 12,
+ "after": 12,
+ "line": 1.2
+ },
+ "padding": 0,
+ "margin": {
+ "left": 40,
+ "right": 40
+ },
+ "background": "transparent"
+ },
+ "code": {
+ "font": "body",
+ "size": 12,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.2
+ }
+ },
+ "pre": {
+ "font": "body",
+ "size": 12,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "padding": 12,
+ "spacing": {
+ "before": 12,
+ "after": 12,
+ "line": 1.2
+ },
+ "border": null
+ },
+ "ul": {
+ "spacing": {
+ "before": 12,
+ "after": 12,
+ "line": 1.2
+ },
+ "indent": 24,
+ "bullet": "dash"
+ },
+ "ol": {
+ "spacing": {
+ "before": 12,
+ "after": 12,
+ "line": 1.2
+ },
+ "indent": 24,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.2
+ }
+ },
+ "strong": {
+ "font": "body",
+ "bold": true,
+ "color": "text"
+ },
+ "em": {
+ "font": "body",
+ "italic": true
+ },
+ "a": {
+ "font": "body",
+ "color": "text",
+ "underline": true
+ },
+ "table": {
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.2
+ },
+ "border": {
+ "color": "text",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "bold": true,
+ "padding": 8,
+ "allCaps": true
+ },
+ "td": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "padding": 8,
+ "borderBottom": {
+ "color": "text",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 24,
+ "after": 24
+ },
+ "border": {
+ "color": "text",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "img": {
+ "align": "left",
+ "spacing": {
+ "before": 12,
+ "after": 12
+ }
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true
+ },
+ "sup": {
+ "font": "body",
+ "size": 9,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 9,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "text",
+ "color": "background"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.2
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 72,
+ "bottom": 72,
+ "left": 108,
+ "right": 72
+ },
+ "columns": 1,
+ "header": false,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/editorial/indie-zine.json b/src-tauri/templates/editorial/indie-zine.json
new file mode 100644
index 0000000..e48fc99
--- /dev/null
+++ b/src-tauri/templates/editorial/indie-zine.json
@@ -0,0 +1,309 @@
+{
+ "id": "indie-zine",
+ "name": "Indie Zine",
+ "category": "editorial",
+ "description": "DIY photocopier aesthetic. Typewriter fonts, cut-out look, and rebellious asymmetry.",
+ "vibe": "DIY, Rebellious, Rough",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Special+Elite&family=Rock+Salt&family=Montserrat:wght@0,300;0,700;1,400&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Rock Salt",
+ "body": "Special Elite",
+ "code": "Special Elite"
+ },
+ "colors": {
+ "text": "212121",
+ "textSecondary": "000000",
+ "background": "FFFFFF",
+ "accent": "D1C4E9",
+ "border": "000000",
+ "codeBg": "F0F0F0",
+ "blockquoteBorder": "000000"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 32,
+ "color": "textSecondary",
+ "bold": false,
+ "align": "left",
+ "spacing": {
+ "before": 40,
+ "after": 32,
+ "line": 1.2
+ },
+ "background": "accent",
+ "padding": 12,
+ "rotation": -2
+ },
+ "h2": {
+ "font": "body",
+ "size": 18,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 32,
+ "after": 16,
+ "line": 1.2
+ },
+ "borderBottom": {
+ "color": "textSecondary",
+ "width": 2,
+ "style": "solid",
+ "space": 4
+ }
+ },
+ "h3": {
+ "font": "body",
+ "size": 16,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.2
+ }
+ },
+ "h4": {
+ "font": "body",
+ "size": 14,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 20,
+ "after": 10,
+ "line": 1.3
+ }
+ },
+ "h5": {
+ "font": "body",
+ "size": 12,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.3
+ }
+ },
+ "h6": {
+ "font": "body",
+ "size": 11,
+ "color": "textSecondary",
+ "italic": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.3
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "align": "left",
+ "spacing": {
+ "before": 0,
+ "after": 16,
+ "line": 1.5
+ }
+ },
+ "blockquote": {
+ "font": "body",
+ "size": 13,
+ "color": "textSecondary",
+ "italic": true,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.5
+ },
+ "padding": 16,
+ "border": {
+ "color": "blockquoteBorder",
+ "width": 2,
+ "style": "dashed"
+ },
+ "rotation": 1
+ },
+ "code": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.3
+ }
+ },
+ "pre": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "padding": 16,
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.3
+ },
+ "border": {
+ "color": "textSecondary",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "ul": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.5
+ },
+ "indent": 20,
+ "bullet": "square"
+ },
+ "ol": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.5
+ },
+ "indent": 20,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.5
+ }
+ },
+ "strong": {
+ "font": "body",
+ "bold": true,
+ "color": "textSecondary"
+ },
+ "em": {
+ "font": "body",
+ "italic": true
+ },
+ "a": {
+ "font": "body",
+ "color": "textSecondary",
+ "underline": true,
+ "bold": true
+ },
+ "table": {
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.3
+ },
+ "border": {
+ "color": "textSecondary",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "body",
+ "size": 11,
+ "color": "background",
+ "bold": true,
+ "background": "textSecondary",
+ "padding": 10
+ },
+ "td": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "padding": 10,
+ "borderBottom": {
+ "color": "textSecondary",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 32,
+ "after": 32
+ },
+ "border": {
+ "color": "textSecondary",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "img": {
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 24
+ },
+ "border": {
+ "color": "textSecondary",
+ "width": 2,
+ "style": "solid"
+ },
+ "rotation": -1
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true
+ },
+ "sup": {
+ "font": "body",
+ "size": 8,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 8,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "textSecondary",
+ "color": "background"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 9,
+ "color": "textSecondary",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 9,
+ "color": "textSecondary",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.2
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 72,
+ "bottom": 72,
+ "left": 72,
+ "right": 72
+ },
+ "columns": 1,
+ "header": true,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/editorial/literary-review.json b/src-tauri/templates/editorial/literary-review.json
new file mode 100644
index 0000000..432081e
--- /dev/null
+++ b/src-tauri/templates/editorial/literary-review.json
@@ -0,0 +1,300 @@
+{
+ "id": "literary-review",
+ "name": "Literary Review",
+ "category": "editorial",
+ "description": "Classic bookish aesthetic. Dense serif text, elegant headers, perfect for long-form essays.",
+ "vibe": "Intellectual, Dense, Classic",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Crimson+Pro:ital,wght@0,300;0,400;0,600;0,700;0,800;1,300;1,400;1,600;1,700;1,800&family=Sorts+Mill+Goudy:ital,wght@0,400;1,400&family=Playfair+Display:ital,wght@0,400..900;1,400..900&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Crimson Pro",
+ "body": "Sorts Mill Goudy",
+ "code": "Sorts Mill Goudy"
+ },
+ "colors": {
+ "text": "212121",
+ "textSecondary": "4A148C",
+ "background": "FFFFFF",
+ "accent": "4A148C",
+ "border": "E0E0E0",
+ "codeBg": "F5F5F5",
+ "blockquoteBorder": "4A148C"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 40,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "center",
+ "spacing": {
+ "before": 48,
+ "after": 32,
+ "line": 1.2
+ }
+ },
+ "h2": {
+ "font": "heading",
+ "size": 18,
+ "color": "text",
+ "bold": false,
+ "align": "center",
+ "spacing": {
+ "before": 36,
+ "after": 18,
+ "line": 1.2
+ },
+ "smallCaps": true,
+ "letterSpacing": 2
+ },
+ "h3": {
+ "font": "heading",
+ "size": 16,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.3
+ }
+ },
+ "h4": {
+ "font": "body",
+ "size": 14,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 20,
+ "after": 10,
+ "line": 1.4
+ }
+ },
+ "h5": {
+ "font": "body",
+ "size": 12,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "h6": {
+ "font": "body",
+ "size": 11,
+ "color": "textSecondary",
+ "italic": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "align": "justify",
+ "spacing": {
+ "before": 0,
+ "after": 16,
+ "line": 1.8
+ }
+ },
+ "blockquote": {
+ "font": "body",
+ "size": 14,
+ "color": "textSecondary",
+ "italic": true,
+ "align": "center",
+ "spacing": {
+ "before": 28,
+ "after": 28,
+ "line": 1.6
+ },
+ "padding": 0,
+ "margin": {
+ "left": 40,
+ "right": 40
+ },
+ "background": "transparent"
+ },
+ "code": {
+ "font": "body",
+ "size": 11,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.4
+ }
+ },
+ "pre": {
+ "font": "body",
+ "size": 11,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "padding": 16,
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.4
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "ul": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 24,
+ "bullet": "circle"
+ },
+ "ol": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 24,
+ "numbering": "lower-roman"
+ },
+ "li": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "spacing": {
+ "before": 6,
+ "after": 6,
+ "line": 1.6
+ }
+ },
+ "strong": {
+ "font": "body",
+ "bold": true,
+ "color": "textSecondary"
+ },
+ "em": {
+ "font": "body",
+ "italic": true
+ },
+ "a": {
+ "font": "body",
+ "color": "textSecondary",
+ "underline": true,
+ "bold": true
+ },
+ "table": {
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.4
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "heading",
+ "size": 12,
+ "color": "textSecondary",
+ "bold": true,
+ "background": "codeBg",
+ "padding": 12
+ },
+ "td": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "padding": 12,
+ "borderBottom": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 32,
+ "after": 32
+ },
+ "border": {
+ "color": "accent",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "img": {
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 24
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true
+ },
+ "sup": {
+ "font": "body",
+ "size": 9,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 9,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "accent",
+ "color": "background"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.2
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 72,
+ "bottom": 72,
+ "left": 72,
+ "right": 72
+ },
+ "columns": 1,
+ "header": true,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/editorial/luxury-editorial.json b/src-tauri/templates/editorial/luxury-editorial.json
new file mode 100644
index 0000000..4cb22f7
--- /dev/null
+++ b/src-tauri/templates/editorial/luxury-editorial.json
@@ -0,0 +1,317 @@
+{
+ "id": "luxury-editorial",
+ "name": "Luxury Editorial",
+ "category": "editorial",
+ "description": "High-fashion magazine inspired design. Elegant serifs with sophisticated spacing and premium feel for upscale content.",
+ "vibe": "Fashion, Premium, Sophisticated",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Cormorant:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&family=Montserrat:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,100;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Cormorant",
+ "body": "Montserrat",
+ "code": "Montserrat"
+ },
+ "colors": {
+ "text": "3A3A3A",
+ "textSecondary": "1C1C1C",
+ "background": "FFFFFF",
+ "accent": "B8860B",
+ "border": "E5E5E5",
+ "codeBg": "F5F5F5",
+ "blockquoteBorder": "B8860B"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 48,
+ "color": "textSecondary",
+ "bold": false,
+ "align": "center",
+ "spacing": {
+ "before": 48,
+ "after": 32,
+ "line": 1.1
+ },
+ "letterSpacing": 2,
+ "weight": 500
+ },
+ "h2": {
+ "font": "body",
+ "size": 13,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 36,
+ "after": 18,
+ "line": 1.2
+ },
+ "allCaps": true,
+ "letterSpacing": 3,
+ "weight": 600
+ },
+ "h3": {
+ "font": "body",
+ "size": 11,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.2
+ },
+ "allCaps": true,
+ "letterSpacing": 2
+ },
+ "h4": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 20,
+ "after": 10,
+ "line": 1.3
+ }
+ },
+ "h5": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.3
+ }
+ },
+ "h6": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "italic": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.3
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "align": "left",
+ "spacing": {
+ "before": 0,
+ "after": 16,
+ "line": 1.7
+ },
+ "weight": 300
+ },
+ "blockquote": {
+ "font": "heading",
+ "size": 18,
+ "color": "textSecondary",
+ "italic": true,
+ "align": "center",
+ "spacing": {
+ "before": 32,
+ "after": 32,
+ "line": 1.5
+ },
+ "padding": 24,
+ "borderTop": {
+ "color": "blockquoteBorder",
+ "width": 1,
+ "style": "solid"
+ },
+ "borderBottom": {
+ "color": "blockquoteBorder",
+ "width": 1,
+ "style": "solid"
+ },
+ "background": "transparent"
+ },
+ "code": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.4
+ }
+ },
+ "pre": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "padding": 16,
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.4
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "ul": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 20,
+ "bullet": "circle"
+ },
+ "ol": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 20,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.6
+ },
+ "weight": 300
+ },
+ "strong": {
+ "font": "body",
+ "bold": true,
+ "color": "textSecondary"
+ },
+ "em": {
+ "font": "body",
+ "italic": true,
+ "color": "accent"
+ },
+ "a": {
+ "font": "body",
+ "color": "textSecondary",
+ "underline": true,
+ "bold": true,
+ "letterSpacing": 1
+ },
+ "table": {
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.4
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "body",
+ "size": 11,
+ "color": "textSecondary",
+ "bold": true,
+ "background": "codeBg",
+ "padding": 12,
+ "allCaps": true,
+ "letterSpacing": 2
+ },
+ "td": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "padding": 12,
+ "borderBottom": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 32,
+ "after": 32
+ },
+ "border": {
+ "color": "accent",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "img": {
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 24
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true
+ },
+ "sup": {
+ "font": "body",
+ "size": 9,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 9,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "accent",
+ "color": "background"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 9,
+ "color": "textSecondary",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 9,
+ "color": "textSecondary",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.2
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 90,
+ "bottom": 90,
+ "left": 90,
+ "right": 90
+ },
+ "columns": 1,
+ "header": true,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/editorial/neo-gothic-revival.json b/src-tauri/templates/editorial/neo-gothic-revival.json
new file mode 100644
index 0000000..405b3f7
--- /dev/null
+++ b/src-tauri/templates/editorial/neo-gothic-revival.json
@@ -0,0 +1,314 @@
+{
+ "id": "neo-gothic-revival",
+ "name": "Neo-Gothic Revival",
+ "category": "editorial",
+ "description": "Inspired by Gothic architecture and medieval manuscripts. Dark, dramatic typography with ecclesiastical gravitas.",
+ "vibe": "Medieval, Dramatic, Historic",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Cinzel+Decorative:wght@400;700;900&family=Spectral:ital,wght@0,200;0,300;0,400;0,500;0,600;0,700;0,800;1,200;1,300;1,400;1,500;1,600;1,700;1,800&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Cinzel Decorative",
+ "body": "Spectral",
+ "code": "Spectral"
+ },
+ "colors": {
+ "text": "2C2C2C",
+ "textSecondary": "1A1A1A",
+ "background": "FDFDF0",
+ "accent": "4A0E0E",
+ "border": "3E2723",
+ "codeBg": "F5F5EB",
+ "blockquoteBorder": "4A0E0E"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 36,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "center",
+ "spacing": {
+ "before": 48,
+ "after": 32,
+ "line": 1.2
+ },
+ "borderTop": {
+ "color": "accent",
+ "width": 3,
+ "style": "solid",
+ "space": 12
+ },
+ "borderBottom": {
+ "color": "accent",
+ "width": 3,
+ "style": "solid",
+ "space": 12
+ },
+ "padding": 20
+ },
+ "h2": {
+ "font": "heading",
+ "size": 18,
+ "color": "accent",
+ "bold": false,
+ "align": "left",
+ "spacing": {
+ "before": 36,
+ "after": 18,
+ "line": 1.3
+ }
+ },
+ "h3": {
+ "font": "heading",
+ "size": 14,
+ "color": "accent",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.3
+ },
+ "allCaps": true
+ },
+ "h4": {
+ "font": "body",
+ "size": 14,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 20,
+ "after": 10,
+ "line": 1.4
+ }
+ },
+ "h5": {
+ "font": "body",
+ "size": 12,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "h6": {
+ "font": "body",
+ "size": 11,
+ "color": "textSecondary",
+ "italic": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "align": "justify",
+ "spacing": {
+ "before": 0,
+ "after": 18,
+ "line": 1.8
+ }
+ },
+ "blockquote": {
+ "font": "body",
+ "size": 14,
+ "color": "text",
+ "italic": true,
+ "align": "left",
+ "spacing": {
+ "before": 28,
+ "after": 28,
+ "line": 1.6
+ },
+ "padding": 20,
+ "borderLeft": {
+ "color": "blockquoteBorder",
+ "width": 4,
+ "style": "solid"
+ }
+ ,
+ "background": "F5F5EB"
+ },
+ "code": {
+ "font": "body",
+ "size": 11,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.4
+ }
+ },
+ "pre": {
+ "font": "body",
+ "size": 11,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "padding": 16,
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.4
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "ul": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 24,
+ "bullet": "circle"
+ },
+ "ol": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 24,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "spacing": {
+ "before": 6,
+ "after": 6,
+ "line": 1.6
+ }
+ },
+ "strong": {
+ "font": "body",
+ "bold": true,
+ "color": "textSecondary"
+ },
+ "em": {
+ "font": "body",
+ "italic": true
+ },
+ "a": {
+ "font": "body",
+ "color": "accent",
+ "underline": true,
+ "bold": true
+ },
+ "table": {
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.4
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "heading",
+ "size": 12,
+ "color": "background",
+ "bold": true,
+ "background": "textSecondary",
+ "padding": 12
+ },
+ "td": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "padding": 12,
+ "borderBottom": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 32,
+ "after": 32
+ },
+ "border": {
+ "color": "accent",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "img": {
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 24
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true
+ },
+ "sup": {
+ "font": "body",
+ "size": 9,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 9,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "accent",
+ "color": "background"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.2
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 72,
+ "bottom": 72,
+ "left": 72,
+ "right": 72
+ },
+ "columns": 1,
+ "header": true,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/editorial/newspaper-classic.json b/src-tauri/templates/editorial/newspaper-classic.json
new file mode 100644
index 0000000..e384d7a
--- /dev/null
+++ b/src-tauri/templates/editorial/newspaper-classic.json
@@ -0,0 +1,343 @@
+{
+ "id": "newspaper-classic",
+ "name": "Newspaper Classic",
+ "category": "editorial",
+ "description": "Authentic broadsheet newspaper style. Blackletter masthead, heavy ruled lines, and authoritative 3-column serif typography.",
+ "vibe": "Authority, Traditional, Broadsheet",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=UnifrakturMaguntia&family=Old+Standard+TT:ital,wght@0,400;0,700;1,400&family=Playfair+Display:ital,wght@0,400..900;1,400..900&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "UnifrakturMaguntia",
+ "body": "Old Standard TT",
+ "code": "Old Standard TT"
+ },
+ "colors": {
+ "text": "111111",
+ "textSecondary": "000000",
+ "background": "FDFCF8",
+ "accent": "000000",
+ "border": "000000",
+ "codeBg": "F5F5F0",
+ "blockquoteBorder": "000000"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 72,
+ "color": "textSecondary",
+ "bold": false,
+ "align": "center",
+ "spacing": {
+ "before": 48,
+ "after": 48,
+ "line": 1.0
+ },
+ "borderTop": {
+ "color": "border",
+ "width": 3,
+ "style": "solid"
+ },
+ "borderBottom": {
+ "color": "border",
+ "width": 6,
+ "style": "double"
+ },
+ "padding": 20
+ },
+ "h2": {
+ "font": "Playfair Display",
+ "size": 28,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 32,
+ "after": 16,
+ "line": 1.1
+ },
+ "borderTop": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ },
+ "borderBottom": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ },
+ "padding": 8
+ },
+ "h3": {
+ "font": "Playfair Display",
+ "size": 20,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.1
+ },
+ "borderBottom": {
+ "color": "border",
+ "width": 0.5,
+ "style": "solid"
+ }
+
+ },
+ "h4": {
+ "font": "body",
+ "size": 16,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 20,
+ "after": 10,
+ "line": 1.2
+ }
+ },
+ "h5": {
+ "font": "body",
+ "size": 14,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.2
+ },
+ "allCaps": true,
+ "letterSpacing": 1
+ },
+ "h6": {
+ "font": "body",
+ "size": 12,
+ "color": "textSecondary",
+ "italic": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.2
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 10.5,
+ "color": "text",
+ "align": "justify",
+ "spacing": {
+ "before": 0,
+ "after": 12,
+ "line": 1.4
+ },
+ "firstLineIndent": 18
+ },
+ "blockquote": {
+ "font": "Playfair Display",
+ "size": 18,
+ "color": "textSecondary",
+ "italic": true,
+ "align": "center",
+ "spacing": {
+ "before": 32,
+ "after": 32,
+ "line": 1.3
+ },
+ "padding": 24,
+ "borderTop": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ },
+ "borderBottom": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+
+ },
+ "code": {
+ "font": "body",
+ "size": 9,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.2
+ }
+ },
+ "pre": {
+ "font": "body",
+ "size": 9,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "padding": 12,
+ "spacing": {
+ "before": 12,
+ "after": 12,
+ "line": 1.2
+ },
+ "border": {
+ "color": "border",
+ "width": 0.5,
+ "style": "solid"
+ }
+ },
+ "ul": {
+ "spacing": {
+ "before": 12,
+ "after": 12,
+ "line": 1.4
+ },
+ "indent": 20,
+ "bullet": "square"
+ },
+ "ol": {
+ "spacing": {
+ "before": 12,
+ "after": 12,
+ "line": 1.4
+ },
+ "indent": 20,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 10.5,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.4
+ }
+ },
+ "strong": {
+ "font": "body",
+ "bold": true,
+ "color": "textSecondary"
+ },
+ "em": {
+ "font": "body",
+ "italic": true
+ },
+ "a": {
+ "font": "body",
+ "color": "textSecondary",
+ "underline": true,
+ "bold": true
+ },
+ "table": {
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.3
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "body",
+ "size": 10.5,
+ "color": "background",
+ "bold": true,
+ "background": "textSecondary",
+ "padding": 8,
+ "allCaps": true
+ },
+ "td": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "padding": 8,
+ "borderBottom": {
+ "color": "border",
+ "width": 0.5,
+ "style": "solid"
+ },
+ "borderRight": {
+ "color": "border",
+ "width": 0.5,
+ "style": "solid"
+ }
+
+ },
+ "hr": {
+ "spacing": {
+ "before": 24,
+ "after": 24
+ },
+ "borderTop": {
+ "color": "border",
+ "width": 2,
+ "style": "solid"
+ }
+
+ },
+ "img": {
+ "align": "center",
+ "spacing": {
+ "before": 20,
+ "after": 20
+ },
+ "border": {
+ "color": "border",
+ "width": 0.5,
+ "style": "solid"
+ }
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true
+ },
+ "sup": {
+ "font": "body",
+ "size": 8,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 8,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "textSecondary",
+ "color": "background"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 8.5,
+ "color": "textSecondary",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 8.5,
+ "color": "textSecondary",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.1
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 54,
+ "bottom": 54,
+ "left": 54,
+ "right": 54
+ },
+ "columns": 1,
+ "header": true,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/editorial/newspaper-modern.json b/src-tauri/templates/editorial/newspaper-modern.json
new file mode 100644
index 0000000..e8ea60b
--- /dev/null
+++ b/src-tauri/templates/editorial/newspaper-modern.json
@@ -0,0 +1,298 @@
+{
+ "id": "newspaper-modern",
+ "name": "Newspaper Modern",
+ "category": "editorial",
+ "description": "Contemporary newspaper design balancing tradition with modern sensibilities. Clean grid-based layout.",
+ "vibe": "Modern, Editorial, Informative",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=DM+Serif+Display:ital,wght@0,400;1,400&family=DM+Sans:ital,opsz,wght@0,9..40,100..1000;1,9..40,100..1000&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "DM Serif Display",
+ "body": "DM Sans",
+ "code": "DM Sans"
+ },
+ "colors": {
+ "text": "333333",
+ "textSecondary": "1A1A1A",
+ "background": "FFFFFF",
+ "accent": "DC2626",
+ "border": "EEEEEE",
+ "codeBg": "F8F8F8",
+ "blockquoteBorder": "DC2626"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 42,
+ "color": "textSecondary",
+ "bold": false,
+ "align": "left",
+ "spacing": {
+ "before": 32,
+ "after": 24,
+ "line": 1.1
+ }
+ },
+ "h2": {
+ "font": "body",
+ "size": 14,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 28,
+ "after": 14,
+ "line": 1.2
+ },
+ "allCaps": true,
+ "letterSpacing": 1
+ },
+ "h3": {
+ "font": "body",
+ "size": 12,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 20,
+ "after": 10,
+ "line": 1.2
+ },
+ "allCaps": true
+ },
+ "h4": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.3
+ }
+ },
+ "h5": {
+ "font": "body",
+ "size": 11,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 12,
+ "after": 6,
+ "line": 1.3
+ }
+ },
+ "h6": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "italic": true,
+ "align": "left",
+ "spacing": {
+ "before": 12,
+ "after": 6,
+ "line": 1.3
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "align": "justify",
+ "spacing": {
+ "before": 0,
+ "after": 14,
+ "line": 1.6
+ }
+ },
+ "blockquote": {
+ "font": "heading",
+ "size": 20,
+ "color": "accent",
+ "italic": true,
+ "align": "center",
+ "spacing": {
+ "before": 28,
+ "after": 28,
+ "line": 1.5
+ },
+ "padding": 20,
+ "background": "transparent"
+ },
+ "code": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.4
+ }
+ },
+ "pre": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "padding": 12,
+ "spacing": {
+ "before": 12,
+ "after": 12,
+ "line": 1.4
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "ul": {
+ "spacing": {
+ "before": 12,
+ "after": 12,
+ "line": 1.5
+ },
+ "indent": 20,
+ "bullet": "disc"
+ },
+ "ol": {
+ "spacing": {
+ "before": 12,
+ "after": 12,
+ "line": 1.5
+ },
+ "indent": 20,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.5
+ }
+ },
+ "strong": {
+ "font": "body",
+ "bold": true,
+ "color": "textSecondary"
+ },
+ "em": {
+ "font": "body",
+ "italic": true
+ },
+ "a": {
+ "font": "body",
+ "color": "accent",
+ "underline": true,
+ "bold": true
+ },
+ "table": {
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.4
+ },
+ "border": {
+ "color": "textSecondary",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "body",
+ "size": 11,
+ "color": "background",
+ "bold": true,
+ "background": "textSecondary",
+ "padding": 8,
+ "allCaps": true
+ },
+ "td": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "padding": 8,
+ "borderBottom": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 24,
+ "after": 24
+ },
+ "border": {
+ "color": "textSecondary",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "img": {
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 16
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true
+ },
+ "sup": {
+ "font": "body",
+ "size": 9,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 9,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "accent",
+ "color": "background"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 9,
+ "color": "textSecondary",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 9,
+ "color": "textSecondary",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.2
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 72,
+ "bottom": 72,
+ "left": 72,
+ "right": 72
+ },
+ "columns": 1,
+ "header": true,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/editorial/newspaper-tabloid.json b/src-tauri/templates/editorial/newspaper-tabloid.json
new file mode 100644
index 0000000..dbae19a
--- /dev/null
+++ b/src-tauri/templates/editorial/newspaper-tabloid.json
@@ -0,0 +1,307 @@
+{
+ "id": "newspaper-tabloid",
+ "name": "Newspaper Tabloid",
+ "category": "editorial",
+ "description": "Sensationalist news design. Condensed, heavy headers with urgent red accents.",
+ "vibe": "Urgent, Bold, Sensational",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Antonio:wght@100..700&family=Pathway+Extreme:ital,opsz,wght@0,8..144,100..1000;1,8..144,100..1000&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Antonio",
+ "body": "Pathway Extreme",
+ "code": "Pathway Extreme"
+ },
+ "colors": {
+ "text": "111111",
+ "textSecondary": "000000",
+ "background": "FFFFFF",
+ "accent": "D50000",
+ "border": "000000",
+ "codeBg": "F0F0F0",
+ "blockquoteBorder": "D50000"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 48,
+ "color": "background",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 36,
+ "after": 24,
+ "line": 0.95
+ },
+ "background": "accent",
+ "padding": 16,
+ "allCaps": true
+ },
+ "h2": {
+ "font": "heading",
+ "size": 24,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 28,
+ "after": 14,
+ "line": 1.1
+ },
+ "allCaps": true
+ },
+ "h3": {
+ "font": "heading",
+ "size": 18,
+ "color": "accent",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 20,
+ "after": 10,
+ "line": 1.1
+ },
+ "allCaps": true
+ },
+ "h4": {
+ "font": "body",
+ "size": 14,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.2
+ }
+ },
+ "h5": {
+ "font": "body",
+ "size": 12,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 12,
+ "after": 6,
+ "line": 1.2
+ }
+ },
+ "h6": {
+ "font": "body",
+ "size": 11,
+ "color": "textSecondary",
+ "italic": true,
+ "align": "left",
+ "spacing": {
+ "before": 12,
+ "after": 6,
+ "line": 1.2
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "align": "left",
+ "spacing": {
+ "before": 0,
+ "after": 14,
+ "line": 1.4
+ }
+ },
+ "blockquote": {
+ "font": "body",
+ "size": 16,
+ "color": "textSecondary",
+ "bold": true,
+ "italic": true,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.4
+ },
+ "padding": 16,
+ "borderLeft": {
+ "color": "blockquoteBorder",
+ "width": 8,
+ "style": "solid"
+ },
+ "background": "transparent"
+ },
+ "code": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.3
+ }
+ },
+ "pre": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "padding": 12,
+ "spacing": {
+ "before": 12,
+ "after": 12,
+ "line": 1.3
+ },
+ "border": {
+ "color": "textSecondary",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "ul": {
+ "spacing": {
+ "before": 12,
+ "after": 12,
+ "line": 1.4
+ },
+ "indent": 20,
+ "bullet": "square"
+ },
+ "ol": {
+ "spacing": {
+ "before": 12,
+ "after": 12,
+ "line": 1.4
+ },
+ "indent": 20,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.4
+ }
+ },
+ "strong": {
+ "font": "body",
+ "bold": true,
+ "color": "textSecondary"
+ },
+ "em": {
+ "font": "body",
+ "italic": true,
+ "color": "accent"
+ },
+ "a": {
+ "font": "body",
+ "color": "accent",
+ "underline": true,
+ "bold": true
+ },
+ "table": {
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.3
+ },
+ "border": {
+ "color": "textSecondary",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "body",
+ "size": 11,
+ "color": "background",
+ "bold": true,
+ "background": "textSecondary",
+ "padding": 8,
+ "allCaps": true
+ },
+ "td": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "padding": 8,
+ "borderBottom": {
+ "color": "textSecondary",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 24,
+ "after": 24
+ },
+ "border": {
+ "color": "textSecondary",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "img": {
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 16
+ },
+ "border": {
+ "color": "textSecondary",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true
+ },
+ "sup": {
+ "font": "body",
+ "size": 8,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 8,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "accent",
+ "color": "background"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 9,
+ "color": "textSecondary",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 9,
+ "color": "textSecondary",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.2
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 54,
+ "bottom": 54,
+ "left": 54,
+ "right": 54
+ },
+ "columns": 1,
+ "header": true,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/editorial/ny-editor.json b/src-tauri/templates/editorial/ny-editor.json
new file mode 100644
index 0000000..b8a01a1
--- /dev/null
+++ b/src-tauri/templates/editorial/ny-editor.json
@@ -0,0 +1,309 @@
+{
+ "id": "ny-editor",
+ "name": "The Editorial",
+ "category": "editorial",
+ "description": "High-contrast serifs, centered headers, delicate borders. Feels like a premium magazine feature.",
+ "vibe": "Luxury, Fashion, Literature",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Playfair+Display:ital,wght@0,400..900;1,400..900&family=Lora:ital,wght@0,400..700;1,400..700&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Playfair Display",
+ "body": "Lora",
+ "code": "Lora"
+ },
+ "colors": {
+ "text": "333333",
+ "textSecondary": "111111",
+ "background": "FFFFFF",
+ "accent": "000000",
+ "border": "DDDDDD",
+ "codeBg": "F5F5F5",
+ "blockquoteBorder": "555555"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 42,
+ "color": "textSecondary",
+ "bold": true,
+ "italic": true,
+ "align": "center",
+ "spacing": {
+ "before": 60,
+ "after": 40,
+ "line": 1.1
+ }
+ },
+ "h2": {
+ "font": "heading",
+ "size": 16,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "center",
+ "spacing": {
+ "before": 40,
+ "after": 20,
+ "line": 1.2
+ },
+ "allCaps": true,
+ "letterSpacing": 3,
+ "borderBottom": {
+ "color": "border",
+ "width": 1,
+ "style": "solid",
+ "space": 10
+ }
+ ,
+ "paddingBottom": 10
+ },
+ "h3": {
+ "font": "heading",
+ "size": 14,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.2
+ },
+ "allCaps": true,
+ "letterSpacing": 1
+ },
+ "h4": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 20,
+ "after": 10,
+ "line": 1.3
+ }
+ },
+ "h5": {
+ "font": "body",
+ "size": 11,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.3
+ }
+ },
+ "h6": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "italic": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.3
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "align": "justify",
+ "spacing": {
+ "before": 0,
+ "after": 20,
+ "line": 1.8
+ }
+ },
+ "blockquote": {
+ "font": "heading",
+ "size": 22,
+ "color": "blockquoteBorder",
+ "italic": true,
+ "align": "center",
+ "spacing": {
+ "before": 40,
+ "after": 40,
+ "line": 1.4
+ },
+ "padding": 0,
+ "background": "transparent"
+ },
+ "code": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.4
+ }
+ },
+ "pre": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "padding": 16,
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.4
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "ul": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 20,
+ "bullet": "circle"
+ },
+ "ol": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 20,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.6
+ }
+ },
+ "strong": {
+ "font": "body",
+ "bold": true,
+ "color": "textSecondary"
+ },
+ "em": {
+ "font": "body",
+ "italic": true
+ },
+ "a": {
+ "font": "body",
+ "color": "textSecondary",
+ "underline": true,
+ "bold": true
+ },
+ "table": {
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.4
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "body",
+ "size": 11,
+ "color": "textSecondary",
+ "bold": true,
+ "background": "codeBg",
+ "padding": 12,
+ "allCaps": true,
+ "letterSpacing": 2
+ },
+ "td": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "padding": 12,
+ "borderBottom": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 40,
+ "after": 40
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "img": {
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 24
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true
+ },
+ "sup": {
+ "font": "body",
+ "size": 9,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 9,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "accent",
+ "color": "background"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.2
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 72,
+ "bottom": 72,
+ "left": 72,
+ "right": 72
+ },
+ "columns": 1,
+ "header": true,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/editorial/rococo-romance.json b/src-tauri/templates/editorial/rococo-romance.json
new file mode 100644
index 0000000..d43c3ed
--- /dev/null
+++ b/src-tauri/templates/editorial/rococo-romance.json
@@ -0,0 +1,303 @@
+{
+ "id": "rococo-romance",
+ "name": "Rococo Romance",
+ "category": "editorial",
+ "description": "Inspired by 18th-century Rococo. Light, playful, and intricate with pastel tones and swirling elegance.",
+ "vibe": "Romantic, Ornate, Pastel",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Pinyon+Script&family=Playfair+Display+SC:ital,wght@0,400;0,700;1,400;1,700&family=Lora:ital,wght@0,400..700;1,400..700&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Pinyon Script",
+ "body": "Playfair Display SC",
+ "code": "Playfair Display SC"
+ },
+ "colors": {
+ "text": "555555",
+ "textSecondary": "D87093",
+ "background": "FFFBFC",
+ "accent": "C0A080",
+ "border": "FFB6C1",
+ "codeBg": "FDF5F7",
+ "blockquoteBorder": "FFB6C1"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 52,
+ "color": "textSecondary",
+ "bold": false,
+ "align": "center",
+ "spacing": {
+ "before": 48,
+ "after": 32,
+ "line": 1.2
+ }
+ },
+ "h2": {
+ "font": "body",
+ "size": 16,
+ "color": "accent",
+ "bold": true,
+ "align": "center",
+ "spacing": {
+ "before": 36,
+ "after": 18,
+ "line": 1.2
+ },
+ "letterSpacing": 2
+ },
+ "h3": {
+ "font": "body",
+ "size": 14,
+ "color": "accent",
+ "bold": true,
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.2
+ },
+ "allCaps": true
+ },
+ "h4": {
+ "font": "body",
+ "size": 13,
+ "color": "text",
+ "bold": true,
+ "align": "center",
+ "spacing": {
+ "before": 20,
+ "after": 10,
+ "line": 1.3
+ }
+ },
+ "h5": {
+ "font": "body",
+ "size": 12,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "center",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.3
+ }
+ },
+ "h6": {
+ "font": "body",
+ "size": 11,
+ "color": "textSecondary",
+ "italic": true,
+ "align": "center",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.3
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "align": "center",
+ "spacing": {
+ "before": 0,
+ "after": 16,
+ "line": 1.8
+ }
+ },
+ "blockquote": {
+ "font": "body",
+ "size": 14,
+ "color": "text",
+ "italic": true,
+ "align": "center",
+ "spacing": {
+ "before": 28,
+ "after": 28,
+ "line": 1.6
+ },
+ "padding": 24,
+ "border": {
+ "color": "blockquoteBorder",
+ "width": 1,
+ "style": "solid"
+ },
+ "borderRadius": 50,
+ "background": "transparent"
+ },
+ "code": {
+ "font": "body",
+ "size": 11,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.4
+ }
+ },
+ "pre": {
+ "font": "body",
+ "size": 11,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "padding": 16,
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.4
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "ul": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 24,
+ "bullet": "circle"
+ },
+ "ol": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 24,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.6
+ }
+ },
+ "strong": {
+ "font": "body",
+ "bold": true,
+ "color": "textSecondary"
+ },
+ "em": {
+ "font": "body",
+ "italic": true,
+ "color": "accent"
+ },
+ "a": {
+ "font": "body",
+ "color": "textSecondary",
+ "underline": true,
+ "bold": true
+ },
+ "table": {
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.4
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "body",
+ "size": 11,
+ "color": "textSecondary",
+ "bold": true,
+ "background": "codeBg",
+ "padding": 12
+ },
+ "td": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "padding": 12,
+ "borderBottom": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 32,
+ "after": 32
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "img": {
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 24
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true
+ },
+ "sup": {
+ "font": "body",
+ "size": 9,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 9,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "border",
+ "color": "textSecondary"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.2
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 72,
+ "bottom": 72,
+ "left": 72,
+ "right": 72
+ },
+ "columns": 1,
+ "header": true,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/editorial/victorian-ornate.json b/src-tauri/templates/editorial/victorian-ornate.json
new file mode 100644
index 0000000..a9803fc
--- /dev/null
+++ b/src-tauri/templates/editorial/victorian-ornate.json
@@ -0,0 +1,308 @@
+{
+ "id": "victorian-ornate",
+ "name": "Victorian Ornate",
+ "category": "editorial",
+ "description": "Inspired by the decorative exuberance of the Victorian era (1837-1901). Features rich typography with ornamental borders and jewel-tone accents.",
+ "vibe": "Traditional, Formal, Heritage",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Playfair+Display:ital,wght@0,400..900;1,400..900&family=Crimson+Text:ital,wght@0,400;0,600;0,700;1,400;1,600;1,700&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Playfair Display",
+ "body": "Crimson Text",
+ "code": "Crimson Text"
+ },
+ "colors": {
+ "text": "3D2914",
+ "textSecondary": "2C1810",
+ "background": "FFFBF5",
+ "accent": "8B4513",
+ "border": "D4A574",
+ "codeBg": "FDF5E6",
+ "blockquoteBorder": "D4A574"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 32,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "center",
+ "spacing": {
+ "before": 40,
+ "after": 24,
+ "line": 1.2
+ },
+ "borderBottom": {
+ "color": "accent",
+ "width": 4,
+ "style": "double",
+ "space": 10
+ }
+ ,
+ "paddingBottom": 12
+ },
+ "h2": {
+ "font": "heading",
+ "size": 18,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 32,
+ "after": 16,
+ "line": 1.3
+ }
+ },
+ "h3": {
+ "font": "heading",
+ "size": 14,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.3
+ },
+ "allCaps": true
+ },
+ "h4": {
+ "font": "body",
+ "size": 14,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 20,
+ "after": 10,
+ "line": 1.4
+ }
+ },
+ "h5": {
+ "font": "body",
+ "size": 12,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "h6": {
+ "font": "body",
+ "size": 11,
+ "color": "textSecondary",
+ "italic": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "align": "justify",
+ "spacing": {
+ "before": 0,
+ "after": 16,
+ "line": 1.8
+ }
+ },
+ "blockquote": {
+ "font": "body",
+ "size": 14,
+ "color": "textSecondary",
+ "italic": true,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.6
+ },
+ "padding": 20,
+ "border": {
+ "color": "blockquoteBorder",
+ "width": 1,
+ "style": "solid"
+ },
+ "background": "FDF5E6"
+ },
+ "code": {
+ "font": "body",
+ "size": 11,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.4
+ }
+ },
+ "pre": {
+ "font": "body",
+ "size": 11,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "padding": 16,
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.4
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "ul": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 24,
+ "bullet": "disc"
+ },
+ "ol": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 24,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.6
+ }
+ },
+ "strong": {
+ "font": "body",
+ "bold": true,
+ "color": "textSecondary"
+ },
+ "em": {
+ "font": "body",
+ "italic": true
+ },
+ "a": {
+ "font": "body",
+ "color": "accent",
+ "underline": true,
+ "bold": true
+ },
+ "table": {
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.4
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "heading",
+ "size": 12,
+ "color": "textSecondary",
+ "bold": true,
+ "background": "codeBg",
+ "padding": 12
+ },
+ "td": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "padding": 12,
+ "borderBottom": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 32,
+ "after": 32
+ },
+ "border": {
+ "color": "accent",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "img": {
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 24
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true
+ },
+ "sup": {
+ "font": "body",
+ "size": 9,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 9,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "accent",
+ "color": "background"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.2
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 72,
+ "bottom": 72,
+ "left": 72,
+ "right": 72
+ },
+ "columns": 1,
+ "header": true,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/industrial/automotive-bold.json b/src-tauri/templates/industrial/automotive-bold.json
new file mode 100644
index 0000000..f040ee2
--- /dev/null
+++ b/src-tauri/templates/industrial/automotive-bold.json
@@ -0,0 +1,309 @@
+{
+ "id": "automotive-bold",
+ "name": "Automotive Bold",
+ "category": "industrial",
+ "description": "Powerful design for automotive and motorsport industries. Bold typography with dynamic energy and speed.",
+ "vibe": "Powerful, Dynamic, Bold",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Teko:wght@400;500;600;700&family=Barlow:wght@400;500;600;700&family=Share+Tech+Mono&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Teko",
+ "body": "Barlow",
+ "code": "Share Tech Mono"
+ },
+ "colors": {
+ "text": "37474F",
+ "textSecondary": "212121",
+ "background": "FFFFFF",
+ "accent": "B71C1C",
+ "border": "CFD8DC",
+ "codeBg": "ECEFF1",
+ "blockquoteBorder": "B71C1C",
+ "blockquoteBg": "FFEBEE"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 40,
+ "color": "accent",
+ "bold": true,
+ "align": "left",
+ "uppercase": true,
+ "letterSpacing": 2,
+ "spacing": {
+ "before": 48,
+ "after": 32,
+ "line": 1.1
+ }
+ },
+ "h2": {
+ "font": "heading",
+ "size": 28,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "uppercase": true,
+ "spacing": {
+ "before": 36,
+ "after": 18,
+ "line": 1.2
+ }
+ },
+ "h3": {
+ "font": "heading",
+ "size": 24,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "uppercase": true,
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.3
+ }
+ },
+ "h4": {
+ "font": "heading",
+ "size": 20,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "uppercase": true,
+ "spacing": {
+ "before": 20,
+ "after": 10,
+ "line": 1.4
+ }
+ },
+ "h5": {
+ "font": "body",
+ "size": 16,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "uppercase": true,
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "h6": {
+ "font": "body",
+ "size": 14,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "uppercase": true,
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "align": "left",
+ "spacing": {
+ "before": 0,
+ "after": 16,
+ "line": 1.6
+ }
+ },
+ "blockquote": {
+ "font": "body",
+ "size": 14,
+ "color": "text",
+ "italic": true,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.6
+ },
+ "padding": 16,
+ "border": {
+ "color": "blockquoteBorder",
+ "width": 6,
+ "style": "solid"
+ },
+ "background": "blockquoteBg"
+ },
+ "code": {
+ "font": "code",
+ "size": 11,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.4
+ }
+ },
+ "pre": {
+ "font": "code",
+ "size": 11,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "padding": 16,
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.4
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "ul": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 24,
+ "bullet": "square"
+ },
+ "ol": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 24,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.6
+ }
+ },
+ "strong": {
+ "font": "body",
+ "bold": true,
+ "color": "textSecondary"
+ },
+ "em": {
+ "font": "body",
+ "italic": true
+ },
+ "a": {
+ "font": "body",
+ "color": "accent",
+ "underline": true,
+ "bold": true
+ },
+ "table": {
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.4
+ },
+ "border": {
+ "color": "textSecondary",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "heading",
+ "size": 12,
+ "color": "background",
+ "bold": true,
+ "background": "textSecondary",
+ "padding": 12,
+ "uppercase": true
+ },
+ "td": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "padding": 12,
+ "borderBottom": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 32,
+ "after": 32
+ },
+ "border": {
+ "color": "accent",
+ "width": 4,
+ "style": "solid"
+ }
+ },
+ "img": {
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 24
+ },
+ "border": {
+ "color": "textSecondary",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true,
+ "color": "border"
+ },
+ "sup": {
+ "font": "body",
+ "size": 9,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 9,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "accent",
+ "color": "background"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.2
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 72,
+ "bottom": 72,
+ "left": 72,
+ "right": 72
+ },
+ "columns": 1,
+ "header": true,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/industrial/brutalist.json b/src-tauri/templates/industrial/brutalist.json
new file mode 100644
index 0000000..16f4d94
--- /dev/null
+++ b/src-tauri/templates/industrial/brutalist.json
@@ -0,0 +1,332 @@
+{
+ "id": "brutalist",
+ "name": "Brutalist",
+ "category": "Industrial",
+ "description": "Raw, anti-design aesthetic. Monospace fonts, heavy borders, and high-contrast functionality.",
+ "vibe": "Raw, Structural, Utility",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Archivo+Black:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&family=Space+Mono:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&family=JetBrains+Mono:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Archivo Black",
+ "body": "Space Mono",
+ "code": "JetBrains Mono"
+ },
+ "colors": {
+ "text": "0000FF",
+ "textSecondary": "000000",
+ "background": "FFFFFF",
+ "accent": "0000FF",
+ "border": "0000FF",
+ "codeBg": "EEEEEE",
+ "blockquoteBorder": "0000FF"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 56,
+ "color": "0000FF",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 0,
+ "after": 20,
+ "line": 0.85
+ },
+ "allCaps": true,
+ "borderBottom": {
+ "color": "0000FF",
+ "width": 8,
+ "style": "solid"
+ }
+ },
+ "h2": {
+ "font": "heading",
+ "size": 32,
+ "color": "000000",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 30,
+ "after": 10,
+ "line": 1.0
+ },
+ "background": "0000FF",
+ "color": "FFFFFF",
+ "padding": 10
+ },
+ "h3": {
+ "font": "body",
+ "size": 24,
+ "color": "0000FF",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 20,
+ "after": 10,
+ "line": 1.2
+ },
+ "borderLeft": {
+ "color": "0000FF",
+ "width": 10,
+ "style": "solid"
+ }
+ ,
+ "padding": 10
+ },
+ "h4": {
+ "font": "body",
+ "size": 18,
+ "color": "000000",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.2
+ },
+ "allCaps": true,
+ "underline": true
+ },
+ "h5": {
+ "font": "body",
+ "size": 16,
+ "color": "0000FF",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.2
+ }
+ },
+ "h6": {
+ "font": "body",
+ "size": 14,
+ "color": "000000",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.2
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 14,
+ "color": "000000",
+ "align": "left",
+ "spacing": {
+ "before": 0,
+ "after": 16,
+ "line": 1.4
+ },
+ "weight": 400
+ },
+ "blockquote": {
+ "font": "heading",
+ "size": 24,
+ "color": "0000FF",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 20,
+ "after": 20,
+ "line": 1.1
+ },
+ "padding": 20,
+ "border": {
+ "color": "0000FF",
+ "width": 4,
+ "style": "solid"
+ }
+ },
+ "code": {
+ "font": "code",
+ "size": 13,
+ "color": "000000",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.4
+ },
+ "border": {
+ "color": "000000",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "pre": {
+ "font": "code",
+ "size": 13,
+ "color": "000000",
+ "background": "codeBg",
+ "padding": 16,
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.4
+ },
+ "border": {
+ "color": "000000",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "ul": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.4
+ },
+ "indent": 20,
+ "bullet": "square"
+ },
+ "ol": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.4
+ },
+ "indent": 20,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 14,
+ "color": "000000",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.4
+ }
+ },
+ "strong": {
+ "font": "heading",
+ "bold": true,
+ "color": "0000FF"
+ },
+ "em": {
+ "font": "body",
+ "italic": true,
+ "background": "EEEEEE"
+ },
+ "a": {
+ "font": "body",
+ "color": "0000FF",
+ "underline": true,
+ "bold": true,
+ "background": "EEEEEE"
+ },
+ "table": {
+ "spacing": {
+ "before": 20,
+ "after": 20,
+ "line": 1.2
+ },
+ "border": {
+ "color": "0000FF",
+ "width": 4,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "heading",
+ "size": 14,
+ "color": "FFFFFF",
+ "bold": true,
+ "background": "0000FF",
+ "padding": 10,
+ "border": {
+ "color": "FFFFFF",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "td": {
+ "font": "body",
+ "size": 14,
+ "color": "000000",
+ "padding": 10,
+ "border": {
+ "color": "0000FF",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 40,
+ "after": 40
+ },
+ "border": {
+ "color": "0000FF",
+ "width": 6,
+ "style": "solid"
+ }
+ },
+ "img": {
+ "align": "left",
+ "spacing": {
+ "before": 20,
+ "after": 20
+ },
+ "border": {
+ "color": "0000FF",
+ "width": 4,
+ "style": "solid"
+ },
+ "filter": "grayscale(100%) contrast(150%)"
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true,
+ "color": "FF0000",
+ "bold": true
+ },
+ "sup": {
+ "font": "body",
+ "size": 10,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 10,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "0000FF",
+ "color": "FFFFFF"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 12,
+ "color": "0000FF",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 12,
+ "color": "0000FF",
+ "spacing": {
+ "before": 6,
+ "after": 6,
+ "line": 1.4
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 40,
+ "bottom": 40,
+ "left": 40,
+ "right": 40
+ },
+ "columns": 1,
+ "header": true,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/industrial/construction-industrial.json b/src-tauri/templates/industrial/construction-industrial.json
new file mode 100644
index 0000000..d6ce16c
--- /dev/null
+++ b/src-tauri/templates/industrial/construction-industrial.json
@@ -0,0 +1,315 @@
+{
+ "id": "construction-industrial",
+ "name": "Construction Industrial",
+ "category": "industrial",
+ "description": "Bold and sturdy design for construction and industrial companies. Strong typography with safety-inspired colors.",
+ "vibe": "Strong, Industrial, Professional",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Oswald:wght@400;500;700&family=Roboto:wght@400;500;700&family=Roboto+Mono:wght@400;500&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Oswald",
+ "body": "Roboto",
+ "code": "Roboto Mono"
+ },
+ "colors": {
+ "text": "37474F",
+ "textSecondary": "212121",
+ "background": "FFFFFF",
+ "accent": "FF8F00",
+ "highlight": "FFC107",
+ "border": "B0BEC5",
+ "codeBg": "ECEFF1",
+ "blockquoteBg": "FFF8E1"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 28,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "uppercase": true,
+ "background": "highlight",
+ "padding": 20,
+ "spacing": {
+ "before": 48,
+ "after": 32,
+ "line": 1.2
+ }
+ },
+ "h2": {
+ "font": "heading",
+ "size": 20,
+ "color": "accent",
+ "bold": true,
+ "align": "left",
+ "uppercase": true,
+ "spacing": {
+ "before": 36,
+ "after": 18,
+ "line": 1.3
+ }
+ },
+ "h3": {
+ "font": "heading",
+ "size": 18,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "uppercase": true,
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.4
+ }
+ },
+ "h4": {
+ "font": "heading",
+ "size": 16,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "uppercase": true,
+ "spacing": {
+ "before": 20,
+ "after": 10,
+ "line": 1.4
+ }
+ },
+ "h5": {
+ "font": "body",
+ "size": 14,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "uppercase": true,
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "h6": {
+ "font": "body",
+ "size": 12,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "uppercase": true,
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "align": "justify",
+ "spacing": {
+ "before": 0,
+ "after": 16,
+ "line": 1.6
+ }
+ },
+ "blockquote": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "italic": true,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.6
+ },
+ "padding": 16,
+ "border": {
+ "color": "accent",
+ "width": 6,
+ "style": "solid"
+ },
+ "background": "blockquoteBg"
+ },
+ "code": {
+ "font": "code",
+ "size": 10,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.4
+ }
+ },
+ "pre": {
+ "font": "code",
+ "size": 10,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "padding": 16,
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.4
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "ul": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 24,
+ "bullet": "square"
+ },
+ "ol": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 24,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.6
+ }
+ },
+ "strong": {
+ "font": "body",
+ "bold": true,
+ "color": "textSecondary"
+ },
+ "em": {
+ "font": "body",
+ "italic": true
+ },
+ "a": {
+ "font": "body",
+ "color": "accent",
+ "underline": true,
+ "bold": true
+ },
+ "table": {
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.4
+ },
+ "border": {
+ "color": "textSecondary",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "heading",
+ "size": 11,
+ "color": "textSecondary",
+ "bold": true,
+ "background": "highlight",
+ "padding": 12,
+ "uppercase": true,
+ "borderBottom": {
+ "color": "textSecondary",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "td": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "padding": 12,
+ "borderBottom": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 32,
+ "after": 32
+ },
+ "border": {
+ "color": "highlight",
+ "width": 4,
+ "style": "solid"
+ }
+ },
+ "img": {
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 24
+ },
+ "border": {
+ "color": "textSecondary",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true,
+ "color": "border"
+ },
+ "sup": {
+ "font": "body",
+ "size": 9,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 9,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "highlight",
+ "color": "textSecondary"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.2
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 72,
+ "bottom": 72,
+ "left": 72,
+ "right": 72
+ },
+ "columns": 1,
+ "header": true,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/industrial/electric-vehicle.json b/src-tauri/templates/industrial/electric-vehicle.json
new file mode 100644
index 0000000..18f8289
--- /dev/null
+++ b/src-tauri/templates/industrial/electric-vehicle.json
@@ -0,0 +1,303 @@
+{
+ "id": "electric-vehicle",
+ "name": "Electric Vehicle",
+ "category": "industrial",
+ "description": "Sustainable tech design for electric vehicle and clean energy content. Eco-modern with electric accents.",
+ "vibe": "Sustainable, Modern, Electric",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Electrolize&family=Mulish:wght@400;500;600;700&family=Chakra+Petch:wght@400;500&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Electrolize",
+ "body": "Mulish",
+ "code": "Chakra Petch"
+ },
+ "colors": {
+ "text": "475569",
+ "textSecondary": "1E293B",
+ "background": "FFFFFF",
+ "accent": "10B981",
+ "border": "E2E8F0",
+ "codeBg": "F1F5F9",
+ "blockquoteBg": "ECFDF5",
+ "blockquoteBorder": "10B981"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 28,
+ "color": "accent",
+ "bold": false,
+ "align": "left",
+ "spacing": {
+ "before": 48,
+ "after": 32,
+ "line": 1.2
+ }
+ },
+ "h2": {
+ "font": "body",
+ "size": 20,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 36,
+ "after": 18,
+ "line": 1.3
+ }
+ },
+ "h3": {
+ "font": "body",
+ "size": 18,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.4
+ }
+ },
+ "h4": {
+ "font": "body",
+ "size": 16,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 20,
+ "after": 10,
+ "line": 1.4
+ }
+ },
+ "h5": {
+ "font": "body",
+ "size": 14,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "uppercase": true,
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "h6": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "uppercase": true,
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "align": "left",
+ "spacing": {
+ "before": 0,
+ "after": 16,
+ "line": 1.6
+ }
+ },
+ "blockquote": {
+ "font": "body",
+ "size": 12,
+ "color": "textSecondary",
+ "italic": true,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.6
+ },
+ "padding": 20,
+ "border": {
+ "color": "blockquoteBorder",
+ "width": 4,
+ "style": "solid"
+ },
+ "background": "blockquoteBg"
+ },
+ "code": {
+ "font": "code",
+ "size": 10,
+ "color": "accent",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.4
+ }
+ },
+ "pre": {
+ "font": "code",
+ "size": 10,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "padding": 16,
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.4
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "ul": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 24,
+ "bullet": "circle"
+ },
+ "ol": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 24,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.6
+ }
+ },
+ "strong": {
+ "font": "body",
+ "bold": true,
+ "color": "textSecondary"
+ },
+ "em": {
+ "font": "body",
+ "italic": true
+ },
+ "a": {
+ "font": "body",
+ "color": "accent",
+ "underline": true,
+ "bold": true
+ },
+ "table": {
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.4
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "body",
+ "size": 11,
+ "color": "textSecondary",
+ "bold": true,
+ "background": "codeBg",
+ "padding": 12
+ },
+ "td": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "padding": 12,
+ "borderBottom": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 32,
+ "after": 32
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "img": {
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 24
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true,
+ "color": "text"
+ },
+ "sup": {
+ "font": "body",
+ "size": 9,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 9,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "accent",
+ "color": "background"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.2
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 72,
+ "bottom": 72,
+ "left": 72,
+ "right": 72
+ },
+ "columns": 1,
+ "header": true,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/industrial/industrial-safety.json b/src-tauri/templates/industrial/industrial-safety.json
new file mode 100644
index 0000000..d615100
--- /dev/null
+++ b/src-tauri/templates/industrial/industrial-safety.json
@@ -0,0 +1,330 @@
+{
+ "id": "industrial-safety",
+ "name": "Industrial Safety",
+ "category": "industrial",
+ "description": "Construction site signage. Heavy blacks and yellow caution stripes.",
+ "vibe": "Safety, Bold, Construction",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Anton&family=Roboto:wght@400;700&family=Roboto+Mono:wght@400;700&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Anton",
+ "body": "Roboto",
+ "code": "Roboto Mono"
+ },
+ "colors": {
+ "text": "212121",
+ "textSecondary": "000000",
+ "background": "FFFFFF",
+ "accent": "FFD600",
+ "border": "000000",
+ "codeBg": "FFF9C4",
+ "blockquoteBg": "FFF9C4"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 48,
+ "color": "textSecondary",
+ "bold": false,
+ "align": "center",
+ "uppercase": true,
+ "background": "accent",
+ "padding": 20,
+ "border": {
+ "color": "textSecondary",
+ "width": 4,
+ "style": "solid"
+ },
+ "spacing": {
+ "before": 48,
+ "after": 32,
+ "line": 1.2
+ }
+ },
+ "h2": {
+ "font": "body",
+ "size": 16,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "uppercase": true,
+ "borderBottom": {
+ "color": "textSecondary",
+ "width": 4,
+ "style": "solid"
+ },
+ "spacing": {
+ "before": 36,
+ "after": 18,
+ "line": 1.3
+ }
+ },
+ "h3": {
+ "font": "body",
+ "size": 14,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "uppercase": true,
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.4
+ }
+ },
+ "h4": {
+ "font": "body",
+ "size": 12,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "uppercase": true,
+ "spacing": {
+ "before": 20,
+ "after": 10,
+ "line": 1.4
+ }
+ },
+ "h5": {
+ "font": "body",
+ "size": 11,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "uppercase": true,
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "h6": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "uppercase": true,
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "align": "left",
+ "spacing": {
+ "before": 0,
+ "after": 16,
+ "line": 1.5
+ }
+ },
+ "blockquote": {
+ "font": "body",
+ "size": 12,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.6
+ },
+ "padding": 20,
+ "border": {
+ "color": "textSecondary",
+ "width": 2,
+ "style": "solid"
+ },
+ "background": "blockquoteBg"
+ },
+ "code": {
+ "font": "code",
+ "size": 10,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "border": {
+ "color": "textSecondary",
+ "width": 1,
+ "style": "solid"
+ },
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.4
+ }
+ },
+ "pre": {
+ "font": "code",
+ "size": 10,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "padding": 16,
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.4
+ },
+ "border": {
+ "color": "textSecondary",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "ul": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 24,
+ "bullet": "square"
+ },
+ "ol": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 24,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.6
+ }
+ },
+ "strong": {
+ "font": "body",
+ "bold": true,
+ "color": "textSecondary"
+ },
+ "em": {
+ "font": "body",
+ "italic": true
+ },
+ "a": {
+ "font": "body",
+ "color": "textSecondary",
+ "underline": true,
+ "bold": true,
+ "background": "accent"
+ },
+ "table": {
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.4
+ },
+ "border": {
+ "color": "textSecondary",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "body",
+ "size": 11,
+ "color": "textSecondary",
+ "bold": true,
+ "background": "accent",
+ "padding": 12,
+ "uppercase": true,
+ "borderBottom": {
+ "color": "textSecondary",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "td": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "padding": 12,
+ "borderBottom": {
+ "color": "textSecondary",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 32,
+ "after": 32
+ },
+ "border": {
+ "color": "textSecondary",
+ "width": 4,
+ "style": "solid"
+ }
+ },
+ "img": {
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 24
+ },
+ "border": {
+ "color": "textSecondary",
+ "width": 4,
+ "style": "solid"
+ }
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true,
+ "color": "text"
+ },
+ "sup": {
+ "font": "body",
+ "size": 9,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 9,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "accent",
+ "color": "textSecondary"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.2
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 72,
+ "bottom": 72,
+ "left": 72,
+ "right": 72
+ },
+ "columns": 1,
+ "header": true,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/industrial/logistics-freight.json b/src-tauri/templates/industrial/logistics-freight.json
new file mode 100644
index 0000000..9b1aeeb
--- /dev/null
+++ b/src-tauri/templates/industrial/logistics-freight.json
@@ -0,0 +1,311 @@
+{
+ "id": "logistics-freight",
+ "name": "Logistics Freight",
+ "category": "industrial",
+ "description": "Shipping and cargo aesthetic. Stenciled, heavy typography with industrial orange and slate blue.",
+ "vibe": "Industrial, Heavy, Shipping",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Saira+Stencil+One&family=Saira:wght@400;500;600;700&family=Inconsolata:wght@400;700&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Saira Stencil One",
+ "body": "Saira",
+ "code": "Inconsolata"
+ },
+ "colors": {
+ "text": "455A64",
+ "textSecondary": "263238",
+ "background": "FFFFFF",
+ "accent": "E65100",
+ "border": "B0BEC5",
+ "codeBg": "ECEFF1",
+ "blockquoteBg": "FFF3E0",
+ "blockquoteBorder": "263238"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 36,
+ "color": "accent",
+ "bold": false,
+ "align": "left",
+ "spacing": {
+ "before": 48,
+ "after": 32,
+ "line": 1.2
+ }
+ },
+ "h2": {
+ "font": "body",
+ "size": 20,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "uppercase": true,
+ "spacing": {
+ "before": 36,
+ "after": 18,
+ "line": 1.3
+ }
+ },
+ "h3": {
+ "font": "body",
+ "size": 18,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "uppercase": true,
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.4
+ }
+ },
+ "h4": {
+ "font": "body",
+ "size": 16,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "uppercase": true,
+ "spacing": {
+ "before": 20,
+ "after": 10,
+ "line": 1.4
+ }
+ },
+ "h5": {
+ "font": "body",
+ "size": 14,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "uppercase": true,
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "h6": {
+ "font": "body",
+ "size": 12,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "uppercase": true,
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "align": "left",
+ "spacing": {
+ "before": 0,
+ "after": 16,
+ "line": 1.6
+ }
+ },
+ "blockquote": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "italic": true,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.6
+ },
+ "padding": 20,
+ "border": {
+ "color": "blockquoteBorder",
+ "width": 8,
+ "style": "solid"
+ },
+ "background": "blockquoteBg"
+ },
+ "code": {
+ "font": "code",
+ "size": 10,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.4
+ }
+ },
+ "pre": {
+ "font": "code",
+ "size": 10,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "padding": 16,
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.4
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "ul": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 24,
+ "bullet": "square"
+ },
+ "ol": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 24,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.6
+ }
+ },
+ "strong": {
+ "font": "body",
+ "bold": true,
+ "color": "textSecondary"
+ },
+ "em": {
+ "font": "body",
+ "italic": true
+ },
+ "a": {
+ "font": "body",
+ "color": "accent",
+ "underline": true,
+ "bold": true
+ },
+ "table": {
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.4
+ },
+ "border": {
+ "color": "border",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "body",
+ "size": 11,
+ "color": "textSecondary",
+ "bold": true,
+ "background": "codeBg",
+ "padding": 12,
+ "borderBottom": {
+ "color": "textSecondary",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "td": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "padding": 12,
+ "borderBottom": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 32,
+ "after": 32
+ },
+ "border": {
+ "color": "textSecondary",
+ "width": 1,
+ "style": "dashed"
+ }
+ },
+ "img": {
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 24
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true,
+ "color": "border"
+ },
+ "sup": {
+ "font": "body",
+ "size": 9,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 9,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "accent",
+ "color": "background"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.2
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 72,
+ "bottom": 72,
+ "left": 72,
+ "right": 72
+ },
+ "columns": 1,
+ "header": true,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/industrial/night-vision.json b/src-tauri/templates/industrial/night-vision.json
new file mode 100644
index 0000000..458ec49
--- /dev/null
+++ b/src-tauri/templates/industrial/night-vision.json
@@ -0,0 +1,315 @@
+{
+ "id": "night-vision",
+ "name": "Night Vision",
+ "category": "industrial",
+ "description": "Military optics style. Grainy bright greens on dark green background.",
+ "vibe": "Tactical, Green, Grainy",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Wallpoet&family=Roboto+Mono:wght@400;700&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Wallpoet",
+ "body": "Roboto Mono",
+ "code": "Roboto Mono"
+ },
+ "colors": {
+ "text": "B2FF59",
+ "textSecondary": "CCFF90",
+ "background": "000000",
+ "accent": "76FF03",
+ "border": "33691E",
+ "codeBg": "1B5E20",
+ "blockquoteBg": "000000",
+ "blockquoteBorder": "76FF03"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 32,
+ "color": "accent",
+ "bold": false,
+ "align": "center",
+ "background": "codeBg",
+ "padding": 16,
+ "spacing": {
+ "before": 48,
+ "after": 32,
+ "line": 1.2
+ }
+ },
+ "h2": {
+ "font": "body",
+ "size": 16,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "borderBottom": {
+ "color": "accent",
+ "width": 2,
+ "style": "dotted"
+ },
+ "spacing": {
+ "before": 36,
+ "after": 18,
+ "line": 1.3
+ }
+ },
+ "h3": {
+ "font": "body",
+ "size": 14,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.4
+ }
+ },
+ "h4": {
+ "font": "body",
+ "size": 12,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 20,
+ "after": 10,
+ "line": 1.4
+ }
+ },
+ "h5": {
+ "font": "body",
+ "size": 11,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "uppercase": true,
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "h6": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "uppercase": true,
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "align": "left",
+ "spacing": {
+ "before": 0,
+ "after": 16,
+ "line": 1.6
+ }
+ },
+ "blockquote": {
+ "font": "body",
+ "size": 11,
+ "color": "textSecondary",
+ "italic": true,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.6
+ },
+ "padding": 16,
+ "border": {
+ "color": "blockquoteBorder",
+ "width": 4,
+ "style": "solid"
+ },
+ "background": "blockquoteBg"
+ },
+ "code": {
+ "font": "code",
+ "size": 10,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.4
+ }
+ },
+ "pre": {
+ "font": "code",
+ "size": 10,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "padding": 16,
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.4
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "ul": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 24,
+ "bullet": "circle"
+ },
+ "ol": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 24,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.6
+ }
+ },
+ "strong": {
+ "font": "body",
+ "bold": true,
+ "color": "accent"
+ },
+ "em": {
+ "font": "body",
+ "italic": true
+ },
+ "a": {
+ "font": "body",
+ "color": "accent",
+ "underline": true,
+ "bold": true
+ },
+ "table": {
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.4
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "body",
+ "size": 10,
+ "color": "accent",
+ "bold": true,
+ "background": "codeBg",
+ "padding": 12,
+ "borderBottom": {
+ "color": "accent",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "td": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "padding": 12,
+ "borderBottom": {
+ "color": "border",
+ "width": 1,
+ "style": "dotted"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 32,
+ "after": 32
+ },
+ "border": {
+ "color": "accent",
+ "width": 2,
+ "style": "dotted"
+ }
+ },
+ "img": {
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 24
+ },
+ "border": {
+ "color": "textSecondary",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true,
+ "color": "border"
+ },
+ "sup": {
+ "font": "body",
+ "size": 9,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 9,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "accent",
+ "color": "background"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.2
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 72,
+ "bottom": 72,
+ "left": 72,
+ "right": 72
+ },
+ "columns": 1,
+ "header": true,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/industrial/tactical-military.json b/src-tauri/templates/industrial/tactical-military.json
new file mode 100644
index 0000000..b3e1dd8
--- /dev/null
+++ b/src-tauri/templates/industrial/tactical-military.json
@@ -0,0 +1,318 @@
+{
+ "id": "tactical-military",
+ "name": "Tactical Military",
+ "category": "industrial",
+ "description": "Military-spec aesthetic. Stencil typography with olive drab and technical readouts.",
+ "vibe": "Tactical, Sturdy, Regulated",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Allerta+Stencil&family=Quantico:wght@400;700&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Allerta Stencil",
+ "body": "Quantico",
+ "code": "Quantico"
+ },
+ "colors": {
+ "text": "1B1B1B",
+ "textSecondary": "33691E",
+ "background": "F1F8E9",
+ "accent": "558B2F",
+ "border": "AED581",
+ "codeBg": "DCEDC8",
+ "blockquoteBg": "DCEDC8",
+ "blockquoteBorder": "33691E"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 28,
+ "color": "textSecondary",
+ "bold": false,
+ "align": "left",
+ "uppercase": true,
+ "borderBottom": {
+ "color": "accent",
+ "width": 6,
+ "style": "solid"
+ },
+ "spacing": {
+ "before": 48,
+ "after": 32,
+ "line": 1.2
+ }
+ },
+ "h2": {
+ "font": "body",
+ "size": 14,
+ "color": "accent",
+ "bold": true,
+ "align": "left",
+ "uppercase": true,
+ "spacing": {
+ "before": 36,
+ "after": 18,
+ "line": 1.3
+ }
+ },
+ "h3": {
+ "font": "body",
+ "size": 14,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "uppercase": true,
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.4
+ }
+ },
+ "h4": {
+ "font": "body",
+ "size": 12,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "uppercase": true,
+ "spacing": {
+ "before": 20,
+ "after": 10,
+ "line": 1.4
+ }
+ },
+ "h5": {
+ "font": "body",
+ "size": 11,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "uppercase": true,
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "h6": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "uppercase": true,
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "align": "left",
+ "spacing": {
+ "before": 0,
+ "after": 16,
+ "line": 1.6
+ }
+ },
+ "blockquote": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "italic": true,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.6
+ },
+ "padding": 16,
+ "border": {
+ "color": "blockquoteBorder",
+ "width": 2,
+ "style": "solid"
+ },
+ "background": "blockquoteBg"
+ },
+ "code": {
+ "font": "code",
+ "size": 10,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.4
+ }
+ },
+ "pre": {
+ "font": "code",
+ "size": 10,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "padding": 16,
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.4
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "ul": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 24,
+ "bullet": "square"
+ },
+ "ol": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 24,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.6
+ }
+ },
+ "strong": {
+ "font": "body",
+ "bold": true,
+ "color": "textSecondary"
+ },
+ "em": {
+ "font": "body",
+ "italic": true
+ },
+ "a": {
+ "font": "body",
+ "color": "accent",
+ "underline": true,
+ "bold": true
+ },
+ "table": {
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.4
+ },
+ "border": {
+ "color": "border",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "bold": true,
+ "background": "codeBg",
+ "padding": 12,
+ "uppercase": true,
+ "borderBottom": {
+ "color": "border",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "td": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "padding": 12,
+ "borderBottom": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 32,
+ "after": 32
+ },
+ "border": {
+ "color": "accent",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "img": {
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 24
+ },
+ "border": {
+ "color": "border",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true,
+ "color": "border"
+ },
+ "sup": {
+ "font": "body",
+ "size": 9,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 9,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "accent",
+ "color": "background"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.2
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 72,
+ "bottom": 72,
+ "left": 72,
+ "right": 72
+ },
+ "columns": 1,
+ "header": true,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/lifestyle/aviation-classic.json b/src-tauri/templates/lifestyle/aviation-classic.json
new file mode 100644
index 0000000..68a6e84
--- /dev/null
+++ b/src-tauri/templates/lifestyle/aviation-classic.json
@@ -0,0 +1,313 @@
+{
+ "id": "aviation-classic",
+ "name": "Aviation Classic",
+ "category": "lifestyle",
+ "description": "Vintage aviation inspired design. Classic military typography with heritage color palette.",
+ "vibe": "Heritage, Classic, Aviation",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Stencil&family=Public+Sans:wght@400;500;600&family=Courier+Prime:wght@400;700&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Stencil",
+ "body": "Public Sans",
+ "code": "Courier Prime"
+ },
+ "colors": {
+ "text": "363636",
+ "textSecondary": "1B4D3E",
+ "background": "F5F5DC",
+ "accent": "8B0000",
+ "border": "A9A9A9",
+ "codeBg": "E0E0D0",
+ "blockquoteBg": "EBEBD0",
+ "blockquoteBorder": "1B4D3E"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 28,
+ "color": "textSecondary",
+ "bold": false,
+ "align": "left",
+ "uppercase": true,
+ "letterSpacing": 3,
+ "spacing": {
+ "before": 48,
+ "after": 32,
+ "line": 1.2
+ }
+ },
+ "h2": {
+ "font": "body",
+ "size": 16,
+ "color": "accent",
+ "bold": true,
+ "align": "left",
+ "uppercase": true,
+ "spacing": {
+ "before": 36,
+ "after": 18,
+ "line": 1.3
+ }
+ },
+ "h3": {
+ "font": "body",
+ "size": 14,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "uppercase": true,
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.4
+ }
+ },
+ "h4": {
+ "font": "body",
+ "size": 12,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "uppercase": true,
+ "spacing": {
+ "before": 20,
+ "after": 10,
+ "line": 1.4
+ }
+ },
+ "h5": {
+ "font": "body",
+ "size": 11,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "uppercase": true,
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "h6": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "uppercase": true,
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "align": "left",
+ "spacing": {
+ "before": 0,
+ "after": 16,
+ "line": 1.6
+ }
+ },
+ "blockquote": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "italic": true,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.6
+ },
+ "padding": 20,
+ "border": {
+ "color": "blockquoteBorder",
+ "width": 4,
+ "style": "solid"
+ },
+ "background": "blockquoteBg"
+ },
+ "code": {
+ "font": "code",
+ "size": 10,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.4
+ }
+ },
+ "pre": {
+ "font": "code",
+ "size": 10,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "padding": 16,
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.4
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "ul": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 24,
+ "bullet": "square"
+ },
+ "ol": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 24,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.6
+ }
+ },
+ "strong": {
+ "font": "body",
+ "bold": true,
+ "color": "accent"
+ },
+ "em": {
+ "font": "body",
+ "italic": true
+ },
+ "a": {
+ "font": "body",
+ "color": "accent",
+ "underline": true,
+ "bold": true
+ },
+ "table": {
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.4
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "bold": true,
+ "background": "codeBg",
+ "padding": 12,
+ "borderBottom": {
+ "color": "textSecondary",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "td": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "padding": 12,
+ "borderBottom": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 32,
+ "after": 32
+ },
+ "border": {
+ "color": "accent",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "img": {
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 24
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true,
+ "color": "border"
+ },
+ "sup": {
+ "font": "body",
+ "size": 9,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 9,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "accent",
+ "color": "background"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.2
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 72,
+ "bottom": 72,
+ "left": 72,
+ "right": 72
+ },
+ "columns": 1,
+ "header": true,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/lifestyle/bistro-chalkboard.json b/src-tauri/templates/lifestyle/bistro-chalkboard.json
new file mode 100644
index 0000000..010421c
--- /dev/null
+++ b/src-tauri/templates/lifestyle/bistro-chalkboard.json
@@ -0,0 +1,311 @@
+{
+ "id": "bistro-chalkboard",
+ "name": "Bistro Chalkboard",
+ "category": "lifestyle",
+ "description": "French cafe menu. White chalk text on slate black.",
+ "vibe": "French, Food, Chalk",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Homemade+Apple&family=Caveat:wght@400;700&family=Patrick+Hand&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Homemade Apple",
+ "body": "Caveat",
+ "code": "Patrick Hand"
+ },
+ "colors": {
+ "text": "BDBDBD",
+ "textSecondary": "E0E0E0",
+ "background": "212121",
+ "accent": "FFFFFF",
+ "border": "757575",
+ "codeBg": "263238",
+ "blockquoteBg": "212121",
+ "blockquoteBorder": "FFFFFF"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 32,
+ "color": "accent",
+ "bold": false,
+ "align": "center",
+ "borderBottom": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ },
+ "spacing": {
+ "before": 48,
+ "after": 32,
+ "line": 1.2
+ }
+ },
+ "h2": {
+ "font": "body",
+ "size": 24,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "center",
+ "spacing": {
+ "before": 36,
+ "after": 18,
+ "line": 1.3
+ }
+ },
+ "h3": {
+ "font": "body",
+ "size": 20,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.4
+ }
+ },
+ "h4": {
+ "font": "body",
+ "size": 18,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "center",
+ "spacing": {
+ "before": 20,
+ "after": 10,
+ "line": 1.4
+ }
+ },
+ "h5": {
+ "font": "body",
+ "size": 16,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "center",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "h6": {
+ "font": "body",
+ "size": 14,
+ "color": "text",
+ "bold": true,
+ "align": "center",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 14,
+ "color": "text",
+ "align": "center",
+ "spacing": {
+ "before": 0,
+ "after": 16,
+ "line": 1.5
+ }
+ },
+ "blockquote": {
+ "font": "body",
+ "size": 16,
+ "color": "textSecondary",
+ "italic": true,
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.6
+ },
+ "padding": 16,
+ "border": {
+ "color": "blockquoteBorder",
+ "width": 1,
+ "style": "dashed"
+ },
+ "background": "blockquoteBg"
+ },
+ "code": {
+ "font": "code",
+ "size": 12,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.4
+ }
+ },
+ "pre": {
+ "font": "code",
+ "size": 12,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "padding": 16,
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.4
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "ul": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 24,
+ "bullet": "circle"
+ },
+ "ol": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 24,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 14,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.6
+ }
+ },
+ "strong": {
+ "font": "body",
+ "bold": true,
+ "color": "accent"
+ },
+ "em": {
+ "font": "body",
+ "italic": true
+ },
+ "a": {
+ "font": "body",
+ "color": "accent",
+ "underline": true,
+ "bold": true
+ },
+ "table": {
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.4
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "dashed"
+ }
+ },
+ "th": {
+ "font": "body",
+ "size": 14,
+ "color": "textSecondary",
+ "bold": true,
+ "background": "codeBg",
+ "padding": 12,
+ "borderBottom": {
+ "color": "accent",
+ "width": 1,
+ "style": "dashed"
+ }
+ },
+ "td": {
+ "font": "body",
+ "size": 14,
+ "color": "text",
+ "padding": 12,
+ "borderBottom": {
+ "color": "border",
+ "width": 1,
+ "style": "dotted"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 32,
+ "after": 32
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "dashed"
+ }
+ },
+ "img": {
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 24
+ },
+ "border": {
+ "color": "border",
+ "width": 2,
+ "style": "dashed"
+ }
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true,
+ "color": "border"
+ },
+ "sup": {
+ "font": "body",
+ "size": 10,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 10,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "textSecondary",
+ "color": "background"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.2
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 72,
+ "bottom": 72,
+ "left": 72,
+ "right": 72
+ },
+ "columns": 1,
+ "header": true,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/lifestyle/elegant-magazine.json b/src-tauri/templates/lifestyle/elegant-magazine.json
new file mode 100644
index 0000000..b9f9b81
--- /dev/null
+++ b/src-tauri/templates/lifestyle/elegant-magazine.json
@@ -0,0 +1,318 @@
+{
+ "id": "elegant-magazine",
+ "name": "Elegant Magazine",
+ "category": "Lifestyle",
+ "description": "High-fashion editorial style. Luxurious typography, centered layouts, and gold accents.",
+ "vibe": "Luxury, Fashion, Ethereal",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Cinzel:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&family=Lato:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&family=Cormorant+Garamond:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Cinzel",
+ "body": "Lato",
+ "code": "Cormorant Garamond"
+ },
+ "colors": {
+ "text": "1F1F1F",
+ "textSecondary": "666666",
+ "background": "FFFFFF",
+ "accent": "C0A062",
+ "border": "E5E5E5",
+ "codeBg": "FAFAFA",
+ "blockquoteBorder": "C0A062"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 42,
+ "color": "1F1F1F",
+ "bold": true,
+ "align": "center",
+ "spacing": {
+ "before": 40,
+ "after": 20,
+ "line": 1.2
+ },
+ "letterSpacing": 2.0,
+ "allCaps": true
+ },
+ "h2": {
+ "font": "heading",
+ "size": 24,
+ "color": "C0A062",
+ "bold": true,
+ "align": "center",
+ "spacing": {
+ "before": 32,
+ "after": 16,
+ "line": 1.3
+ },
+ "letterSpacing": 1.5,
+ "allCaps": true
+ },
+ "h3": {
+ "font": "heading",
+ "size": 18,
+ "color": "1F1F1F",
+ "bold": true,
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.4
+ },
+ "letterSpacing": 1.0
+ },
+ "h4": {
+ "font": "body",
+ "size": 16,
+ "color": "1F1F1F",
+ "bold": true,
+ "align": "center",
+ "spacing": {
+ "before": 20,
+ "after": 10,
+ "line": 1.5
+ },
+ "allCaps": true
+ },
+ "h5": {
+ "font": "body",
+ "size": 14,
+ "color": "666666",
+ "bold": true,
+ "align": "center",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.5
+ },
+ "allCaps": true
+ },
+ "h6": {
+ "font": "body",
+ "size": 12,
+ "color": "C0A062",
+ "bold": true,
+ "align": "center",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.5
+ },
+ "allCaps": true
+ },
+ "p": {
+ "font": "body",
+ "size": 14,
+ "color": "333333",
+ "align": "center",
+ "spacing": {
+ "before": 0,
+ "after": 20,
+ "line": 1.8
+ },
+ "weight": 300
+ },
+ "blockquote": {
+ "font": "heading",
+ "size": 24,
+ "color": "1F1F1F",
+ "bold": false,
+ "align": "center",
+ "spacing": {
+ "before": 32,
+ "after": 32,
+ "line": 1.4
+ },
+ "padding": 0,
+ "borderTop": {
+ "color": "C0A062",
+ "width": 1,
+ "style": "solid"
+ },
+ "borderBottom": {
+ "color": "C0A062",
+ "width": 1,
+ "style": "solid"
+ },
+ "italic": false
+ },
+ "code": {
+ "font": "body",
+ "size": 12,
+ "color": "C0A062",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.4
+ },
+ "italic": true
+ },
+ "pre": {
+ "font": "body",
+ "size": 12,
+ "color": "666666",
+ "background": "FAFAFA",
+ "padding": 24,
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.6
+ },
+ "border": {
+ "color": "E5E5E5",
+ "width": 1,
+ "style": "solid"
+ },
+ "italic": true
+ },
+ "ul": {
+ "spacing": {
+ "before": 20,
+ "after": 20,
+ "line": 1.8
+ },
+ "indent": 0,
+ "bullet": "disc"
+ },
+ "ol": {
+ "spacing": {
+ "before": 20,
+ "after": 20,
+ "line": 1.8
+ },
+ "indent": 20,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 14,
+ "color": "333333",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.8
+ }
+ },
+ "strong": {
+ "font": "heading",
+ "bold": true,
+ "color": "1F1F1F"
+ },
+ "em": {
+ "font": "body",
+ "italic": true,
+ "color": "C0A062"
+ },
+ "a": {
+ "font": "body",
+ "color": "C0A062",
+ "underline": true,
+ "bold": false
+ },
+ "table": {
+ "spacing": {
+ "before": 32,
+ "after": 32,
+ "line": 1.4
+ },
+ "border": {
+ "color": "E5E5E5",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "heading",
+ "size": 12,
+ "color": "1F1F1F",
+ "bold": true,
+ "background": "FFFFFF",
+ "padding": 12,
+ "borderBottom": {
+ "color": "C0A062",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "td": {
+ "font": "body",
+ "size": 13,
+ "color": "333333",
+ "padding": 12,
+ "borderBottom": {
+ "color": "E5E5E5",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 48,
+ "after": 48
+ },
+ "border": {
+ "color": "E5E5E5",
+ "width": 1,
+ "style": "solid"
+ },
+ "width": "50%"
+ },
+ "img": {
+ "align": "center",
+ "spacing": {
+ "before": 32,
+ "after": 32
+ }
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true,
+ "color": "999999"
+ },
+ "sup": {
+ "font": "body",
+ "size": 10,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 10,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "F5F5F5",
+ "color": "1F1F1F"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 11,
+ "color": "textSecondary",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 11,
+ "color": "textSecondary",
+ "spacing": {
+ "before": 6,
+ "after": 6,
+ "line": 1.4
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 90,
+ "bottom": 90,
+ "left": 90,
+ "right": 90
+ },
+ "columns": 1,
+ "header": true,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/lifestyle/fine-dining-menu.json b/src-tauri/templates/lifestyle/fine-dining-menu.json
new file mode 100644
index 0000000..acf30c9
--- /dev/null
+++ b/src-tauri/templates/lifestyle/fine-dining-menu.json
@@ -0,0 +1,325 @@
+{
+ "id": "fine-dining-menu",
+ "name": "Fine Dining Menu",
+ "category": "lifestyle",
+ "description": "High-end restaurant aesthetic. Elegant scripts, centered layouts, and luxurious gold tones.",
+ "vibe": "Elegant, Expensive, Centered",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Great+Vibes&family=Cormorant+Garamond:wght@400;500;600;700&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Great Vibes",
+ "body": "Cormorant Garamond",
+ "code": "Cormorant Garamond"
+ },
+ "colors": {
+ "text": "424242",
+ "textSecondary": "212121",
+ "background": "FFFAF0",
+ "accent": "C5A059",
+ "border": "E0E0E0",
+ "codeBg": "F5F5F0",
+ "blockquoteBg": "FFFAF0",
+ "blockquoteBorder": "C5A059"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 42,
+ "color": "accent",
+ "bold": false,
+ "align": "center",
+ "spacing": {
+ "before": 48,
+ "after": 32,
+ "line": 1.2
+ }
+ },
+ "h2": {
+ "font": "body",
+ "size": 14,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "center",
+ "uppercase": true,
+ "letterSpacing": 3,
+ "borderBottom": {
+ "color": "accent",
+ "width": 1,
+ "style": "solid"
+ },
+ "padding": 5,
+ "spacing": {
+ "before": 36,
+ "after": 18,
+ "line": 1.3
+ }
+ },
+ "h3": {
+ "font": "body",
+ "size": 13,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "center",
+ "uppercase": true,
+ "letterSpacing": 2,
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.4
+ }
+ },
+ "h4": {
+ "font": "body",
+ "size": 12,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "center",
+ "uppercase": true,
+ "letterSpacing": 1.5,
+ "spacing": {
+ "before": 20,
+ "after": 10,
+ "line": 1.4
+ }
+ },
+ "h5": {
+ "font": "body",
+ "size": 11,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "center",
+ "uppercase": true,
+ "letterSpacing": 1,
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "h6": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "center",
+ "uppercase": true,
+ "letterSpacing": 1,
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "align": "center",
+ "italic": true,
+ "spacing": {
+ "before": 0,
+ "after": 16,
+ "line": 1.8
+ }
+ },
+ "blockquote": {
+ "font": "body",
+ "size": 14,
+ "color": "text",
+ "italic": true,
+ "align": "center",
+ "spacing": {
+ "before": 30,
+ "after": 30,
+ "line": 1.6
+ },
+ "padding": 24,
+ "border": {
+ "color": "blockquoteBorder",
+ "width": 1,
+ "style": "solid"
+ },
+ "background": "blockquoteBg"
+ },
+ "code": {
+ "font": "code",
+ "size": 11,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.4
+ }
+ },
+ "pre": {
+ "font": "code",
+ "size": 11,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "padding": 16,
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.4
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "ul": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.8
+ },
+ "indent": 24,
+ "bullet": "circle"
+ },
+ "ol": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.8
+ },
+ "indent": 24,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.8
+ }
+ },
+ "strong": {
+ "font": "body",
+ "bold": true,
+ "color": "textSecondary"
+ },
+ "em": {
+ "font": "body",
+ "italic": true
+ },
+ "a": {
+ "font": "body",
+ "color": "accent",
+ "underline": true,
+ "bold": true
+ },
+ "table": {
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.4
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "body",
+ "size": 12,
+ "color": "textSecondary",
+ "bold": true,
+ "background": "codeBg",
+ "padding": 12,
+ "uppercase": true,
+ "letterSpacing": 1,
+ "borderBottom": {
+ "color": "accent",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "td": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "padding": 12,
+ "borderBottom": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 32,
+ "after": 32
+ },
+ "border": {
+ "color": "accent",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "img": {
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 24
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true,
+ "color": "border"
+ },
+ "sup": {
+ "font": "body",
+ "size": 10,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 10,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "accent",
+ "color": "background"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.2
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 72,
+ "bottom": 72,
+ "left": 72,
+ "right": 72
+ },
+ "columns": 1,
+ "header": true,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/lifestyle/fire-station.json b/src-tauri/templates/lifestyle/fire-station.json
new file mode 100644
index 0000000..0d91161
--- /dev/null
+++ b/src-tauri/templates/lifestyle/fire-station.json
@@ -0,0 +1,315 @@
+{
+ "id": "fire-station",
+ "name": "Fire Station",
+ "category": "lifestyle",
+ "description": "Engine company aesthetic. Fire engine red, brass gold, and bold gothic numbers.",
+ "vibe": "Brave, Red, Gold",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Anton&family=Rokkitt:wght@400;500;600;700&family=Roboto+Mono:wght@400;700&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Anton",
+ "body": "Rokkitt",
+ "code": "Roboto Mono"
+ },
+ "colors": {
+ "text": "212121",
+ "textSecondary": "000000",
+ "background": "FFFFFF",
+ "accent": "B71C1C",
+ "highlight": "FFD600",
+ "border": "B0BEC5",
+ "codeBg": "FFEBEE",
+ "blockquoteBg": "FFEBEE",
+ "blockquoteBorder": "B71C1C"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 40,
+ "color": "accent",
+ "bold": false,
+ "align": "center",
+ "uppercase": true,
+ "padding": 16,
+ "border": {
+ "color": "highlight",
+ "width": 6,
+ "style": "solid"
+ },
+ "spacing": {
+ "before": 48,
+ "after": 32,
+ "line": 1.2
+ }
+ },
+ "h2": {
+ "font": "body",
+ "size": 18,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 36,
+ "after": 18,
+ "line": 1.3
+ }
+ },
+ "h3": {
+ "font": "body",
+ "size": 16,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.4
+ }
+ },
+ "h4": {
+ "font": "body",
+ "size": 14,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 20,
+ "after": 10,
+ "line": 1.4
+ }
+ },
+ "h5": {
+ "font": "body",
+ "size": 13,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "h6": {
+ "font": "body",
+ "size": 12,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "uppercase": true,
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "align": "left",
+ "spacing": {
+ "before": 0,
+ "after": 16,
+ "line": 1.5
+ }
+ },
+ "blockquote": {
+ "font": "body",
+ "size": 14,
+ "color": "text",
+ "italic": true,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.6
+ },
+ "padding": 16,
+ "border": {
+ "color": "blockquoteBorder",
+ "width": 4,
+ "style": "solid"
+ },
+ "background": "blockquoteBg"
+ },
+ "code": {
+ "font": "code",
+ "size": 11,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.4
+ }
+ },
+ "pre": {
+ "font": "code",
+ "size": 11,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "padding": 16,
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.4
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "ul": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 24,
+ "bullet": "square"
+ },
+ "ol": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 24,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.6
+ }
+ },
+ "strong": {
+ "font": "body",
+ "bold": true,
+ "color": "textSecondary"
+ },
+ "em": {
+ "font": "body",
+ "italic": true
+ },
+ "a": {
+ "font": "body",
+ "color": "accent",
+ "underline": true,
+ "bold": true
+ },
+ "table": {
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.4
+ },
+ "border": {
+ "color": "border",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "body",
+ "size": 12,
+ "color": "textSecondary",
+ "bold": true,
+ "background": "highlight",
+ "padding": 12,
+ "borderBottom": {
+ "color": "accent",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "td": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "padding": 12,
+ "borderBottom": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 32,
+ "after": 32
+ },
+ "border": {
+ "color": "accent",
+ "width": 4,
+ "style": "solid"
+ }
+ },
+ "img": {
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 24
+ },
+ "border": {
+ "color": "border",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true,
+ "color": "border"
+ },
+ "sup": {
+ "font": "body",
+ "size": 10,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 10,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "highlight",
+ "color": "textSecondary"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.2
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 72,
+ "bottom": 72,
+ "left": 72,
+ "right": 72
+ },
+ "columns": 1,
+ "header": true,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/lifestyle/food-recipe.json b/src-tauri/templates/lifestyle/food-recipe.json
new file mode 100644
index 0000000..9a7cd4c
--- /dev/null
+++ b/src-tauri/templates/lifestyle/food-recipe.json
@@ -0,0 +1,309 @@
+{
+ "id": "food-recipe",
+ "name": "Food & Recipe",
+ "category": "lifestyle",
+ "description": "Warm and appetizing design for cookbooks and food content. Inviting typography with rustic charm.",
+ "vibe": "Warm, Appetizing, Homestyle",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Playfair+Display:ital,wght@0,400;0,600;0,700;1,400&family=Lato:wght@400;700&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Playfair Display",
+ "body": "Lato",
+ "code": "Lato"
+ },
+ "colors": {
+ "text": "4E342E",
+ "textSecondary": "6D4C41",
+ "background": "FFFFFF",
+ "accent": "D84315",
+ "border": "BCAAA4",
+ "codeBg": "FFF3E0",
+ "blockquoteBg": "FFF3E0",
+ "blockquoteBorder": "D84315"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 32,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "center",
+ "spacing": {
+ "before": 48,
+ "after": 32,
+ "line": 1.2
+ }
+ },
+ "h2": {
+ "font": "heading",
+ "size": 20,
+ "color": "textSecondary",
+ "bold": false,
+ "italic": true,
+ "align": "left",
+ "spacing": {
+ "before": 36,
+ "after": 18,
+ "line": 1.3
+ }
+ },
+ "h3": {
+ "font": "heading",
+ "size": 18,
+ "color": "textSecondary",
+ "bold": false,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.4
+ }
+ },
+ "h4": {
+ "font": "heading",
+ "size": 16,
+ "color": "textSecondary",
+ "bold": false,
+ "align": "left",
+ "spacing": {
+ "before": 20,
+ "after": 10,
+ "line": 1.4
+ }
+ },
+ "h5": {
+ "font": "body",
+ "size": 14,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "uppercase": true,
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "h6": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "uppercase": true,
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "align": "left",
+ "spacing": {
+ "before": 0,
+ "after": 16,
+ "line": 1.6
+ }
+ },
+ "blockquote": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "italic": true,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.6
+ },
+ "padding": 16,
+ "border": {
+ "color": "blockquoteBorder",
+ "width": 4,
+ "style": "solid"
+ },
+ "background": "blockquoteBg"
+ },
+ "code": {
+ "font": "code",
+ "size": 10,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.4
+ }
+ },
+ "pre": {
+ "font": "code",
+ "size": 10,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "padding": 16,
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.4
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "ul": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 24,
+ "bullet": "circle"
+ },
+ "ol": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 24,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.6
+ }
+ },
+ "strong": {
+ "font": "body",
+ "bold": true,
+ "color": "textSecondary"
+ },
+ "em": {
+ "font": "body",
+ "italic": true
+ },
+ "a": {
+ "font": "body",
+ "color": "accent",
+ "underline": true,
+ "bold": true
+ },
+ "table": {
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.4
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "body",
+ "size": 11,
+ "color": "textSecondary",
+ "bold": true,
+ "background": "codeBg",
+ "padding": 12,
+ "borderBottom": {
+ "color": "accent",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "td": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "padding": 12,
+ "borderBottom": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 32,
+ "after": 32
+ },
+ "border": {
+ "color": "accent",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "img": {
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 24
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true,
+ "color": "border"
+ },
+ "sup": {
+ "font": "body",
+ "size": 9,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 9,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "codeBg",
+ "color": "accent"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.2
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 72,
+ "bottom": 72,
+ "left": 72,
+ "right": 72
+ },
+ "columns": 1,
+ "header": true,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/lifestyle/german-autobahn.json b/src-tauri/templates/lifestyle/german-autobahn.json
new file mode 100644
index 0000000..628c61f
--- /dev/null
+++ b/src-tauri/templates/lifestyle/german-autobahn.json
@@ -0,0 +1,315 @@
+{
+ "id": "german-autobahn",
+ "name": "German Autobahn",
+ "category": "lifestyle",
+ "description": "Precision engineering aesthetic. DIN-style fonts and strict blue/white signage.",
+ "vibe": "German, Precision, Transport",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Barlow:wght@400;500;600;700&family=Roboto+Condensed:wght@400;700&family=Roboto+Mono:wght@400;700&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Barlow",
+ "body": "Roboto Condensed",
+ "code": "Roboto Mono"
+ },
+ "colors": {
+ "text": "212121",
+ "textSecondary": "0D47A1",
+ "background": "FFFFFF",
+ "accent": "1565C0",
+ "border": "B0BEC5",
+ "codeBg": "E3F2FD",
+ "blockquoteBg": "E3F2FD",
+ "blockquoteBorder": "1565C0"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 36,
+ "color": "background",
+ "bold": true,
+ "align": "left",
+ "background": "accent",
+ "padding": 12,
+ "borderRadius": 4,
+ "spacing": {
+ "before": 48,
+ "after": 32,
+ "line": 1.2
+ }
+ },
+ "h2": {
+ "font": "body",
+ "size": 18,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "uppercase": true,
+ "spacing": {
+ "before": 36,
+ "after": 18,
+ "line": 1.3
+ }
+ },
+ "h3": {
+ "font": "body",
+ "size": 16,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "uppercase": true,
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.4
+ }
+ },
+ "h4": {
+ "font": "body",
+ "size": 14,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "uppercase": true,
+ "spacing": {
+ "before": 20,
+ "after": 10,
+ "line": 1.4
+ }
+ },
+ "h5": {
+ "font": "body",
+ "size": 12,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "uppercase": true,
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "h6": {
+ "font": "body",
+ "size": 11,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "uppercase": true,
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "align": "left",
+ "spacing": {
+ "before": 0,
+ "after": 16,
+ "line": 1.5
+ }
+ },
+ "blockquote": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "italic": true,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.6
+ },
+ "padding": 16,
+ "border": {
+ "color": "blockquoteBorder",
+ "width": 6,
+ "style": "solid"
+ },
+ "background": "blockquoteBg"
+ },
+ "code": {
+ "font": "code",
+ "size": 10,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.4
+ }
+ },
+ "pre": {
+ "font": "code",
+ "size": 10,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "padding": 16,
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.4
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "ul": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 24,
+ "bullet": "square"
+ },
+ "ol": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 24,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.6
+ }
+ },
+ "strong": {
+ "font": "body",
+ "bold": true,
+ "color": "textSecondary"
+ },
+ "em": {
+ "font": "body",
+ "italic": true
+ },
+ "a": {
+ "font": "body",
+ "color": "accent",
+ "underline": true,
+ "bold": true
+ },
+ "table": {
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.4
+ },
+ "border": {
+ "color": "border",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "body",
+ "size": 11,
+ "color": "textSecondary",
+ "bold": true,
+ "background": "codeBg",
+ "padding": 12,
+ "uppercase": true,
+ "borderBottom": {
+ "color": "accent",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "td": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "padding": 12,
+ "borderBottom": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 32,
+ "after": 32
+ },
+ "border": {
+ "color": "accent",
+ "width": 4,
+ "style": "solid"
+ }
+ },
+ "img": {
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 24
+ },
+ "border": {
+ "color": "border",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true,
+ "color": "border"
+ },
+ "sup": {
+ "font": "body",
+ "size": 9,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 9,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "accent",
+ "color": "background"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.2
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 72,
+ "bottom": 72,
+ "left": 72,
+ "right": 72
+ },
+ "columns": 1,
+ "header": true,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/lifestyle/hotel-hospitality.json b/src-tauri/templates/lifestyle/hotel-hospitality.json
new file mode 100644
index 0000000..c312885
--- /dev/null
+++ b/src-tauri/templates/lifestyle/hotel-hospitality.json
@@ -0,0 +1,314 @@
+{
+ "id": "hotel-hospitality",
+ "name": "Hotel Hospitality",
+ "category": "lifestyle",
+ "description": "Welcoming design for hotels and hospitality industry. Elegant yet approachable with warm sophistication.",
+ "vibe": "Welcoming, Elegant, Warm",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Tenor+Sans&family=Nunito+Sans:ital,wght@0,300;0,400;0,600;0,700;1,400&family=Cormorant+Garamond:ital,wght@0,400;1,400&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Tenor Sans",
+ "body": "Nunito Sans",
+ "code": "Cormorant Garamond"
+ },
+ "colors": {
+ "text": "4A4A4A",
+ "textSecondary": "2C3E50",
+ "background": "FFFFFF",
+ "accent": "8B7355",
+ "border": "E0E0E0",
+ "codeBg": "F9F6F1",
+ "blockquoteBg": "F9F6F1",
+ "blockquoteBorder": "8B7355"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 28,
+ "color": "textSecondary",
+ "bold": false,
+ "align": "center",
+ "letterSpacing": 2,
+ "spacing": {
+ "before": 48,
+ "after": 32,
+ "line": 1.2
+ }
+ },
+ "h2": {
+ "font": "heading",
+ "size": 14,
+ "color": "accent",
+ "bold": false,
+ "align": "left",
+ "uppercase": true,
+ "spacing": {
+ "before": 36,
+ "after": 18,
+ "line": 1.3
+ }
+ },
+ "h3": {
+ "font": "heading",
+ "size": 12,
+ "color": "textSecondary",
+ "bold": false,
+ "align": "left",
+ "uppercase": true,
+ "letterSpacing": 1,
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.4
+ }
+ },
+ "h4": {
+ "font": "heading",
+ "size": 11,
+ "color": "textSecondary",
+ "bold": false,
+ "align": "left",
+ "uppercase": true,
+ "letterSpacing": 1,
+ "spacing": {
+ "before": 20,
+ "after": 10,
+ "line": 1.4
+ }
+ },
+ "h5": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "uppercase": true,
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "h6": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "uppercase": true,
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "align": "left",
+ "spacing": {
+ "before": 0,
+ "after": 16,
+ "line": 1.6
+ }
+ },
+ "blockquote": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "italic": true,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.6
+ },
+ "padding": 20,
+ "border": {
+ "color": "blockquoteBorder",
+ "width": 4,
+ "style": "solid"
+ },
+ "background": "blockquoteBg"
+ },
+ "code": {
+ "font": "code",
+ "size": 11,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.4
+ }
+ },
+ "pre": {
+ "font": "code",
+ "size": 11,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "padding": 16,
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.4
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "ul": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 24,
+ "bullet": "circle"
+ },
+ "ol": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 24,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.6
+ }
+ },
+ "strong": {
+ "font": "body",
+ "bold": true,
+ "color": "textSecondary"
+ },
+ "em": {
+ "font": "body",
+ "italic": true
+ },
+ "a": {
+ "font": "body",
+ "color": "accent",
+ "underline": true,
+ "bold": true
+ },
+ "table": {
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.4
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "bold": true,
+ "background": "codeBg",
+ "padding": 12,
+ "borderBottom": {
+ "color": "accent",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "td": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "padding": 12,
+ "borderBottom": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 32,
+ "after": 32
+ },
+ "border": {
+ "color": "accent",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "img": {
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 24
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true,
+ "color": "border"
+ },
+ "sup": {
+ "font": "body",
+ "size": 9,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 9,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "codeBg",
+ "color": "accent"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.2
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 72,
+ "bottom": 72,
+ "left": 72,
+ "right": 72
+ },
+ "columns": 1,
+ "header": true,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/lifestyle/parisian-chic.json b/src-tauri/templates/lifestyle/parisian-chic.json
new file mode 100644
index 0000000..98e347b
--- /dev/null
+++ b/src-tauri/templates/lifestyle/parisian-chic.json
@@ -0,0 +1,324 @@
+{
+ "id": "parisian-chic",
+ "name": "Parisian Chic",
+ "category": "lifestyle",
+ "description": "Sophisticated French aesthetics. Elegant high-contrast serifs with plenty of white space.",
+ "vibe": "Sophisticated, Chic, Minimal",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Bodoni+Moda:ital,opsz,wght@0,6..96,400;0,6..96,600;0,6..96,700;1,6..96,400&family=Jost:wght@300;400;500;600&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Bodoni Moda",
+ "body": "Jost",
+ "code": "Jost"
+ },
+ "colors": {
+ "text": "1A1A1A",
+ "textSecondary": "333333",
+ "background": "FFFFFF",
+ "accent": "000000",
+ "border": "E0E0E0",
+ "codeBg": "F5F5F5",
+ "blockquoteBg": "FFFFFF",
+ "blockquoteBorder": "000000"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 36,
+ "color": "accent",
+ "bold": true,
+ "align": "center",
+ "spacing": {
+ "before": 48,
+ "after": 32,
+ "line": 1.2
+ }
+ },
+ "h2": {
+ "font": "heading",
+ "size": 16,
+ "color": "textSecondary",
+ "bold": true,
+ "italic": true,
+ "align": "center",
+ "spacing": {
+ "before": 36,
+ "after": 18,
+ "line": 1.3
+ }
+ },
+ "h3": {
+ "font": "heading",
+ "size": 14,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "center",
+ "uppercase": true,
+ "letterSpacing": 1,
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.4
+ }
+ },
+ "h4": {
+ "font": "heading",
+ "size": 12,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "center",
+ "uppercase": true,
+ "letterSpacing": 1,
+ "spacing": {
+ "before": 20,
+ "after": 10,
+ "line": 1.4
+ }
+ },
+ "h5": {
+ "font": "body",
+ "size": 11,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "center",
+ "uppercase": true,
+ "letterSpacing": 1,
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "h6": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "center",
+ "uppercase": true,
+ "letterSpacing": 1,
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "align": "center",
+ "spacing": {
+ "before": 0,
+ "after": 16,
+ "line": 1.8
+ }
+ },
+ "blockquote": {
+ "font": "heading",
+ "size": 12,
+ "color": "textSecondary",
+ "italic": true,
+ "align": "center",
+ "spacing": {
+ "before": 32,
+ "after": 32,
+ "line": 1.6
+ },
+ "padding": 24,
+ "border": {
+ "top": {
+ "color": "accent",
+ "width": 1,
+ "style": "solid"
+ },
+ "bottom": {
+ "color": "accent",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "background": "blockquoteBg"
+ },
+ "code": {
+ "font": "code",
+ "size": 10,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.4
+ }
+ },
+ "pre": {
+ "font": "code",
+ "size": 10,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "padding": 16,
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.4
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "ul": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.8
+ },
+ "indent": 24,
+ "bullet": "circle"
+ },
+ "ol": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.8
+ },
+ "indent": 24,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.8
+ }
+ },
+ "strong": {
+ "font": "body",
+ "bold": true,
+ "color": "accent"
+ },
+ "em": {
+ "font": "body",
+ "italic": true
+ },
+ "a": {
+ "font": "body",
+ "color": "accent",
+ "underline": true,
+ "bold": true
+ },
+ "table": {
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.4
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "body",
+ "size": 10,
+ "color": "accent",
+ "bold": true,
+ "background": "codeBg",
+ "padding": 12,
+ "uppercase": true,
+ "letterSpacing": 1,
+ "borderBottom": {
+ "color": "accent",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "td": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "padding": 12,
+ "borderBottom": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 32,
+ "after": 32
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "img": {
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 24
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true,
+ "color": "border"
+ },
+ "sup": {
+ "font": "body",
+ "size": 9,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 9,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "codeBg",
+ "color": "accent"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.2
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 72,
+ "bottom": 72,
+ "left": 72,
+ "right": 72
+ },
+ "columns": 1,
+ "header": true,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/lifestyle/real-estate-premium.json b/src-tauri/templates/lifestyle/real-estate-premium.json
new file mode 100644
index 0000000..509fcd5
--- /dev/null
+++ b/src-tauri/templates/lifestyle/real-estate-premium.json
@@ -0,0 +1,325 @@
+{
+ "id": "real-estate-premium",
+ "name": "Real Estate Premium",
+ "category": "lifestyle",
+ "description": "Sophisticated design for luxury real estate and property marketing. Elegant typography with premium golden accents.",
+ "vibe": "Luxury, Premium, Sophisticated",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Cinzel:wght@400;500;600;700&family=Lato:wght@300;400;700&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Cinzel",
+ "body": "Lato",
+ "code": "Lato"
+ },
+ "colors": {
+ "text": "4A4A4A",
+ "textSecondary": "1A1A1A",
+ "background": "FFFFFF",
+ "accent": "B8860B",
+ "border": "E5E5E5",
+ "codeBg": "FAFAFA",
+ "blockquoteBg": "FFFFFF",
+ "blockquoteBorder": "B8860B"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 28,
+ "color": "textSecondary",
+ "bold": false,
+ "align": "center",
+ "uppercase": true,
+ "letterSpacing": 4,
+ "spacing": {
+ "before": 48,
+ "after": 32,
+ "line": 1.2
+ }
+ },
+ "h2": {
+ "font": "heading",
+ "size": 14,
+ "color": "accent",
+ "bold": false,
+ "align": "left",
+ "uppercase": true,
+ "letterSpacing": 2,
+ "spacing": {
+ "before": 36,
+ "after": 18,
+ "line": 1.3
+ }
+ },
+ "h3": {
+ "font": "heading",
+ "size": 12,
+ "color": "textSecondary",
+ "bold": false,
+ "align": "left",
+ "uppercase": true,
+ "letterSpacing": 1.5,
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.4
+ }
+ },
+ "h4": {
+ "font": "heading",
+ "size": 11,
+ "color": "textSecondary",
+ "bold": false,
+ "align": "left",
+ "uppercase": true,
+ "letterSpacing": 1,
+ "spacing": {
+ "before": 20,
+ "after": 10,
+ "line": 1.4
+ }
+ },
+ "h5": {
+ "font": "body",
+ "size": 11,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "uppercase": true,
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "h6": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "uppercase": true,
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "align": "left",
+ "spacing": {
+ "before": 0,
+ "after": 16,
+ "line": 1.7
+ }
+ },
+ "blockquote": {
+ "font": "body",
+ "size": 12,
+ "color": "textSecondary",
+ "italic": true,
+ "align": "center",
+ "spacing": {
+ "before": 32,
+ "after": 32,
+ "line": 1.6
+ },
+ "padding": 24,
+ "border": {
+ "top": {
+ "color": "accent",
+ "width": 1,
+ "style": "solid"
+ },
+ "bottom": {
+ "color": "accent",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "background": "blockquoteBg"
+ },
+ "code": {
+ "font": "code",
+ "size": 10,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.4
+ }
+ },
+ "pre": {
+ "font": "code",
+ "size": 10,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "padding": 16,
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.4
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "ul": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.7
+ },
+ "indent": 24,
+ "bullet": "square"
+ },
+ "ol": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.7
+ },
+ "indent": 24,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.7
+ }
+ },
+ "strong": {
+ "font": "body",
+ "bold": true,
+ "color": "accent"
+ },
+ "em": {
+ "font": "body",
+ "italic": true
+ },
+ "a": {
+ "font": "body",
+ "color": "accent",
+ "underline": true,
+ "bold": true
+ },
+ "table": {
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.4
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "heading",
+ "size": 10,
+ "color": "textSecondary",
+ "bold": true,
+ "background": "codeBg",
+ "padding": 12,
+ "uppercase": true,
+ "letterSpacing": 1,
+ "borderBottom": {
+ "color": "accent",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "td": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "padding": 12,
+ "borderBottom": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 32,
+ "after": 32
+ },
+ "border": {
+ "color": "accent",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "img": {
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 24
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true,
+ "color": "border"
+ },
+ "sup": {
+ "font": "body",
+ "size": 9,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 9,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "codeBg",
+ "color": "accent"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.2
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 72,
+ "bottom": 72,
+ "left": 72,
+ "right": 72
+ },
+ "columns": 1,
+ "header": true,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/lifestyle/recipe-card.json b/src-tauri/templates/lifestyle/recipe-card.json
new file mode 100644
index 0000000..0454302
--- /dev/null
+++ b/src-tauri/templates/lifestyle/recipe-card.json
@@ -0,0 +1,312 @@
+{
+ "id": "recipe-card",
+ "name": "Recipe Card",
+ "category": "lifestyle",
+ "description": "Grandmas index card. Typewriter fonts with red header lines.",
+ "vibe": "Homey, Traditional, Cookery",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Courier+Prime:wght@400;700&family=Homemade+Apple&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Courier Prime",
+ "body": "Courier Prime",
+ "code": "Courier Prime"
+ },
+ "colors": {
+ "text": "212121",
+ "textSecondary": "000000",
+ "background": "FFFFFF",
+ "accent": "F44336",
+ "border": "E0E0E0",
+ "codeBg": "F5F5F5",
+ "blockquoteBg": "FFFFFF",
+ "blockquoteBorder": "F44336"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 24,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "borderBottom": {
+ "color": "accent",
+ "width": 2,
+ "style": "solid"
+ },
+ "spacing": {
+ "before": 36,
+ "after": 20,
+ "line": 1.2
+ }
+ },
+ "h2": {
+ "font": "heading",
+ "size": 14,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "uppercase": true,
+ "spacing": {
+ "before": 28,
+ "after": 14,
+ "line": 1.3
+ }
+ },
+ "h3": {
+ "font": "heading",
+ "size": 13,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "uppercase": true,
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.4
+ }
+ },
+ "h4": {
+ "font": "heading",
+ "size": 12,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "uppercase": true,
+ "spacing": {
+ "before": 20,
+ "after": 10,
+ "line": 1.4
+ }
+ },
+ "h5": {
+ "font": "body",
+ "size": 11,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "uppercase": true,
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "h6": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "uppercase": true,
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "align": "left",
+ "spacing": {
+ "before": 0,
+ "after": 12,
+ "line": 1.5
+ }
+ },
+ "blockquote": {
+ "font": "body",
+ "size": 14,
+ "color": "accent",
+ "italic": true,
+ "align": "left",
+ "spacing": {
+ "before": 20,
+ "after": 20,
+ "line": 1.6
+ },
+ "padding": 12,
+ "background": "blockquoteBg"
+ },
+ "code": {
+ "font": "code",
+ "size": 11,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.4
+ }
+ },
+ "pre": {
+ "font": "code",
+ "size": 11,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "padding": 16,
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.4
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "ul": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.5
+ },
+ "indent": 24,
+ "bullet": "circle"
+ },
+ "ol": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.5
+ },
+ "indent": 24,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.5
+ }
+ },
+ "strong": {
+ "font": "body",
+ "bold": true,
+ "color": "textSecondary"
+ },
+ "em": {
+ "font": "body",
+ "italic": true
+ },
+ "a": {
+ "font": "body",
+ "color": "accent",
+ "underline": true,
+ "bold": true
+ },
+ "table": {
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.4
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "heading",
+ "size": 11,
+ "color": "textSecondary",
+ "bold": true,
+ "background": "codeBg",
+ "padding": 12,
+ "uppercase": true,
+ "borderBottom": {
+ "color": "accent",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "td": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "padding": 12,
+ "borderBottom": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 32,
+ "after": 32
+ },
+ "border": {
+ "color": "accent",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "img": {
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 24
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true,
+ "color": "border"
+ },
+ "sup": {
+ "font": "body",
+ "size": 9,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 9,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "codeBg",
+ "color": "accent"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.2
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 72,
+ "bottom": 72,
+ "left": 72,
+ "right": 72
+ },
+ "columns": 1,
+ "header": true,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/lifestyle/retro-diner-50s.json b/src-tauri/templates/lifestyle/retro-diner-50s.json
new file mode 100644
index 0000000..3b1b88c
--- /dev/null
+++ b/src-tauri/templates/lifestyle/retro-diner-50s.json
@@ -0,0 +1,324 @@
+{
+ "id": "retro-diner-50s",
+ "name": "Retro Diner 50s",
+ "category": "lifestyle",
+ "description": "Classic 1950s American diner aesthetic. Neon lights, checkered floors, and jukebox vibes.",
+ "vibe": "Retro, Kitsch, Diner",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Lobster&family=Righteous&family=Roboto+Condensed:wght@400;700&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Lobster",
+ "body": "Roboto Condensed",
+ "code": "Righteous"
+ },
+ "colors": {
+ "text": "212121",
+ "textSecondary": "00838F",
+ "background": "FFFFFF",
+ "accent": "D32F2F",
+ "highlight": "FF4081",
+ "border": "BDBDBD",
+ "codeBg": "E0F7FA",
+ "blockquoteBg": "FFEBEE",
+ "blockquoteBorder": "D32F2F"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 42,
+ "color": "accent",
+ "bold": false,
+ "align": "center",
+ "spacing": {
+ "before": 48,
+ "after": 32,
+ "line": 1.2
+ },
+ "border": {
+ "bottom": {
+ "color": "textSecondary",
+ "width": 4,
+ "style": "dashed"
+ }
+ }
+ },
+ "h2": {
+ "font": "code",
+ "size": 24,
+ "color": "textSecondary",
+ "bold": false,
+ "align": "center",
+ "uppercase": true,
+ "spacing": {
+ "before": 36,
+ "after": 18,
+ "line": 1.3
+ }
+ },
+ "h3": {
+ "font": "code",
+ "size": 20,
+ "color": "textSecondary",
+ "bold": false,
+ "align": "center",
+ "uppercase": true,
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.4
+ }
+ },
+ "h4": {
+ "font": "code",
+ "size": 18,
+ "color": "textSecondary",
+ "bold": false,
+ "align": "center",
+ "uppercase": true,
+ "spacing": {
+ "before": 20,
+ "after": 10,
+ "line": 1.4
+ }
+ },
+ "h5": {
+ "font": "body",
+ "size": 14,
+ "color": "text",
+ "bold": true,
+ "align": "center",
+ "uppercase": true,
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "h6": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "bold": true,
+ "align": "center",
+ "uppercase": true,
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "align": "center",
+ "spacing": {
+ "before": 0,
+ "after": 16,
+ "line": 1.5
+ }
+ },
+ "blockquote": {
+ "font": "heading",
+ "size": 16,
+ "color": "accent",
+ "italic": false,
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.6
+ },
+ "padding": 20,
+ "border": {
+ "color": "blockquoteBorder",
+ "width": 4,
+ "style": "solid"
+ },
+ "borderRadius": 12,
+ "background": "blockquoteBg"
+ },
+ "code": {
+ "font": "code",
+ "size": 11,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.4
+ }
+ },
+ "pre": {
+ "font": "code",
+ "size": 11,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "padding": 16,
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.4
+ },
+ "border": {
+ "color": "border",
+ "width": 2,
+ "style": "solid"
+ },
+ "borderRadius": 8
+ },
+ "ul": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 24,
+ "bullet": "circle"
+ },
+ "ol": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 24,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.6
+ }
+ },
+ "strong": {
+ "font": "body",
+ "bold": true,
+ "color": "accent"
+ },
+ "em": {
+ "font": "heading",
+ "italic": false,
+ "color": "textSecondary"
+ },
+ "a": {
+ "font": "body",
+ "color": "highlight",
+ "underline": true,
+ "bold": true
+ },
+ "table": {
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.4
+ },
+ "border": {
+ "color": "textSecondary",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "code",
+ "size": 12,
+ "color": "background",
+ "bold": false,
+ "background": "textSecondary",
+ "padding": 12,
+ "uppercase": true,
+ "borderBottom": {
+ "color": "accent",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "td": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "padding": 12,
+ "borderBottom": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 32,
+ "after": 32
+ },
+ "border": {
+ "color": "highlight",
+ "width": 4,
+ "style": "dotted"
+ }
+ },
+ "img": {
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 24
+ },
+ "border": {
+ "color": "textSecondary",
+ "width": 4,
+ "style": "solid"
+ },
+ "borderRadius": 8
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true,
+ "color": "border"
+ },
+ "sup": {
+ "font": "body",
+ "size": 10,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 10,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "highlight",
+ "color": "background"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.2
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 72,
+ "bottom": 72,
+ "left": 72,
+ "right": 72
+ },
+ "columns": 1,
+ "header": true,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/lifestyle/spa-wellness.json b/src-tauri/templates/lifestyle/spa-wellness.json
new file mode 100644
index 0000000..2c9e4a0
--- /dev/null
+++ b/src-tauri/templates/lifestyle/spa-wellness.json
@@ -0,0 +1,302 @@
+{
+ "id": "spa-wellness",
+ "name": "Spa Wellness",
+ "category": "lifestyle",
+ "description": "Serene design for spa and wellness industries. Calm typography with soothing, natural colors.",
+ "vibe": "Serene, Calming, Natural",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Philosopher:ital,wght@0,400;0,700;1,400&family=Questrial&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Philosopher",
+ "body": "Questrial",
+ "code": "Questrial"
+ },
+ "colors": {
+ "text": "5D6D5A",
+ "textSecondary": "4A6741",
+ "background": "FFFFFF",
+ "accent": "6B8E63",
+ "border": "E8F5E9",
+ "codeBg": "F1F8E9",
+ "blockquoteBg": "F1F8E9",
+ "blockquoteBorder": "6B8E63"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 28,
+ "color": "textSecondary",
+ "bold": false,
+ "align": "center",
+ "spacing": {
+ "before": 48,
+ "after": 32,
+ "line": 1.2
+ }
+ },
+ "h2": {
+ "font": "heading",
+ "size": 14,
+ "color": "accent",
+ "bold": false,
+ "align": "left",
+ "spacing": {
+ "before": 36,
+ "after": 18,
+ "line": 1.3
+ }
+ },
+ "h3": {
+ "font": "heading",
+ "size": 12,
+ "color": "textSecondary",
+ "bold": false,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.4
+ }
+ },
+ "h4": {
+ "font": "heading",
+ "size": 11,
+ "color": "textSecondary",
+ "bold": false,
+ "align": "left",
+ "spacing": {
+ "before": 20,
+ "after": 10,
+ "line": 1.4
+ }
+ },
+ "h5": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "h6": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "align": "left",
+ "spacing": {
+ "before": 0,
+ "after": 16,
+ "line": 1.7
+ }
+ },
+ "blockquote": {
+ "font": "heading",
+ "size": 12,
+ "color": "textSecondary",
+ "italic": true,
+ "align": "center",
+ "spacing": {
+ "before": 28,
+ "after": 28,
+ "line": 1.6
+ },
+ "padding": 20,
+ "borderRadius": 4,
+ "background": "blockquoteBg"
+ },
+ "code": {
+ "font": "code",
+ "size": 10,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.4
+ }
+ },
+ "pre": {
+ "font": "code",
+ "size": 10,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "padding": 16,
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.4
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "ul": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.7
+ },
+ "indent": 24,
+ "bullet": "circle"
+ },
+ "ol": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.7
+ },
+ "indent": 24,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.7
+ }
+ },
+ "strong": {
+ "font": "heading",
+ "bold": true,
+ "color": "textSecondary"
+ },
+ "em": {
+ "font": "heading",
+ "italic": true
+ },
+ "a": {
+ "font": "body",
+ "color": "accent",
+ "underline": true,
+ "bold": true
+ },
+ "table": {
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.4
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "heading",
+ "size": 10,
+ "color": "textSecondary",
+ "bold": true,
+ "background": "codeBg",
+ "padding": 12,
+ "borderBottom": {
+ "color": "accent",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "td": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "padding": 12,
+ "borderBottom": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 32,
+ "after": 32
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "img": {
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 24
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true,
+ "color": "border"
+ },
+ "sup": {
+ "font": "body",
+ "size": 9,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 9,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "codeBg",
+ "color": "accent"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.2
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 72,
+ "bottom": 72,
+ "left": 72,
+ "right": 72
+ },
+ "columns": 1,
+ "header": true,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/lifestyle/sticky-note.json b/src-tauri/templates/lifestyle/sticky-note.json
new file mode 100644
index 0000000..279958e
--- /dev/null
+++ b/src-tauri/templates/lifestyle/sticky-note.json
@@ -0,0 +1,306 @@
+{
+ "id": "sticky-note",
+ "name": "Sticky Note",
+ "category": "lifestyle",
+ "description": "Handwritten reminder aesthetic. Marker fonts on a canary yellow background.",
+ "vibe": "Casual, Handwritten, Yellow",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Permanent+Marker&family=Kalam:wght@300;400;700&family=Patrick+Hand&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Permanent Marker",
+ "body": "Kalam",
+ "code": "Patrick Hand"
+ },
+ "colors": {
+ "text": "212121",
+ "textSecondary": "000000",
+ "background": "FFF9C4",
+ "accent": "D50000",
+ "border": "FBC02D",
+ "codeBg": "FFF59D",
+ "blockquoteBg": "FFF59D",
+ "blockquoteBorder": "D50000"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 32,
+ "color": "textSecondary",
+ "bold": false,
+ "align": "center",
+ "spacing": {
+ "before": 48,
+ "after": 32,
+ "line": 1.2
+ }
+ },
+ "h2": {
+ "font": "body",
+ "size": 18,
+ "color": "accent",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 36,
+ "after": 18,
+ "line": 1.3
+ }
+ },
+ "h3": {
+ "font": "body",
+ "size": 16,
+ "color": "accent",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.4
+ }
+ },
+ "h4": {
+ "font": "body",
+ "size": 15,
+ "color": "accent",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 20,
+ "after": 10,
+ "line": 1.4
+ }
+ },
+ "h5": {
+ "font": "body",
+ "size": 14,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "h6": {
+ "font": "body",
+ "size": 13,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 14,
+ "color": "text",
+ "align": "left",
+ "spacing": {
+ "before": 0,
+ "after": 16,
+ "line": 1.5
+ }
+ },
+ "blockquote": {
+ "font": "body",
+ "size": 15,
+ "color": "text",
+ "italic": false,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.5
+ },
+ "padding": 12,
+ "border": {
+ "color": "blockquoteBorder",
+ "width": 4,
+ "style": "solid"
+ }
+ },
+ "code": {
+ "font": "code",
+ "size": 12,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.4
+ }
+ },
+ "pre": {
+ "font": "code",
+ "size": 12,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "padding": 16,
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.4
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "dashed"
+ }
+ },
+ "ul": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.5
+ },
+ "indent": 24,
+ "bullet": "dashed"
+ },
+ "ol": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.5
+ },
+ "indent": 24,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 14,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.5
+ }
+ },
+ "strong": {
+ "font": "heading",
+ "bold": false,
+ "color": "accent"
+ },
+ "em": {
+ "font": "body",
+ "italic": true
+ },
+ "a": {
+ "font": "body",
+ "color": "accent",
+ "underline": true,
+ "bold": true
+ },
+ "table": {
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.4
+ },
+ "border": {
+ "color": "border",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "body",
+ "size": 14,
+ "color": "textSecondary",
+ "bold": true,
+ "background": "codeBg",
+ "padding": 12,
+ "borderBottom": {
+ "color": "accent",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "td": {
+ "font": "body",
+ "size": 14,
+ "color": "text",
+ "padding": 12,
+ "borderBottom": {
+ "color": "border",
+ "width": 1,
+ "style": "dashed"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 32,
+ "after": 32
+ },
+ "border": {
+ "color": "accent",
+ "width": 2,
+ "style": "dashed"
+ }
+ },
+ "img": {
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 24
+ },
+ "border": {
+ "color": "border",
+ "width": 2,
+ "style": "solid"
+ },
+ "borderRadius": 2
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true,
+ "color": "border"
+ },
+ "sup": {
+ "font": "body",
+ "size": 10,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 10,
+ "subScript": true
+ },
+ "mark": {
+ "font": "heading",
+ "background": "codeBg",
+ "color": "accent"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 12,
+ "color": "textSecondary",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 12,
+ "color": "textSecondary",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.2
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 72,
+ "bottom": 72,
+ "left": 72,
+ "right": 72
+ },
+ "columns": 1,
+ "header": true,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/lifestyle/supermarket-receipt.json b/src-tauri/templates/lifestyle/supermarket-receipt.json
new file mode 100644
index 0000000..72adcbe
--- /dev/null
+++ b/src-tauri/templates/lifestyle/supermarket-receipt.json
@@ -0,0 +1,308 @@
+{
+ "id": "supermarket-receipt",
+ "name": "Supermarket Receipt",
+ "category": "lifestyle",
+ "description": "Thermal paper aesthetic. Monospaced, slightly faded grey text with narrow alignment.",
+ "vibe": "Disposable, Monospace, Grey",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Fira+Mono:wght@400;700&family=Inconsolata:wght@400;700&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Fira Mono",
+ "body": "Inconsolata",
+ "code": "Inconsolata"
+ },
+ "colors": {
+ "text": "424242",
+ "textSecondary": "000000",
+ "background": "FAFAFA",
+ "accent": "000000",
+ "border": "BDBDBD",
+ "codeBg": "EEEEEE",
+ "blockquoteBg": "FAFAFA",
+ "blockquoteBorder": "424242"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 24,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "center",
+ "uppercase": true,
+ "spacing": {
+ "before": 48,
+ "after": 24,
+ "line": 1.2
+ }
+ },
+ "h2": {
+ "font": "body",
+ "size": 14,
+ "color": "textSecondary",
+ "bold": false,
+ "align": "center",
+ "borderBottom": {
+ "color": "accent",
+ "width": 1,
+ "style": "dashed"
+ },
+ "spacing": {
+ "before": 36,
+ "after": 12,
+ "line": 1.3
+ }
+ },
+ "h3": {
+ "font": "body",
+ "size": 12,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.4
+ }
+ },
+ "h4": {
+ "font": "body",
+ "size": 11,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "center",
+ "spacing": {
+ "before": 20,
+ "after": 10,
+ "line": 1.4
+ }
+ },
+ "h5": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "h6": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "align": "left",
+ "spacing": {
+ "before": 0,
+ "after": 12,
+ "line": 1.4
+ }
+ },
+ "blockquote": {
+ "font": "body",
+ "size": 12,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "center",
+ "spacing": {
+ "before": 20,
+ "after": 20,
+ "line": 1.4
+ },
+ "padding": 12,
+ "background": "blockquoteBg"
+ },
+ "code": {
+ "font": "code",
+ "size": 10,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.4
+ }
+ },
+ "pre": {
+ "font": "code",
+ "size": 10,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "padding": 16,
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.4
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "dashed"
+ }
+ },
+ "ul": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.4
+ },
+ "indent": 24,
+ "bullet": "asterisk"
+ },
+ "ol": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.4
+ },
+ "indent": 24,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.4
+ }
+ },
+ "strong": {
+ "font": "heading",
+ "bold": true,
+ "color": "textSecondary"
+ },
+ "em": {
+ "font": "body",
+ "italic": true
+ },
+ "a": {
+ "font": "body",
+ "color": "textSecondary",
+ "underline": true,
+ "bold": true
+ },
+ "table": {
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.4
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "dashed"
+ }
+ },
+ "th": {
+ "font": "heading",
+ "size": 11,
+ "color": "textSecondary",
+ "bold": true,
+ "background": "codeBg",
+ "padding": 8,
+ "borderBottom": {
+ "color": "accent",
+ "width": 1,
+ "style": "dashed"
+ }
+ },
+ "td": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "padding": 8,
+ "borderBottom": {
+ "color": "border",
+ "width": 1,
+ "style": "dashed"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 32,
+ "after": 32
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "dashed"
+ }
+ },
+ "img": {
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 24
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ },
+ "filter": "grayscale(100%) contrast(150%)"
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true,
+ "color": "border"
+ },
+ "sup": {
+ "font": "body",
+ "size": 9,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 9,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "border",
+ "color": "textSecondary"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.2
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 72,
+ "bottom": 72,
+ "left": 100,
+ "right": 100
+ },
+ "columns": 1,
+ "header": true,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/lifestyle/surf-shop.json b/src-tauri/templates/lifestyle/surf-shop.json
new file mode 100644
index 0000000..c8e7974
--- /dev/null
+++ b/src-tauri/templates/lifestyle/surf-shop.json
@@ -0,0 +1,311 @@
+{
+ "id": "surf-shop",
+ "name": "Surf Shop",
+ "category": "lifestyle",
+ "description": "California cool. Relaxed hand-drawn fonts with sea foam blues and sunny yellows.",
+ "vibe": "Relaxed, Beach, Sunny",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Permanent+Marker&family=Kalam:wght@300;400;700&family=Patrick+Hand&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Permanent Marker",
+ "body": "Kalam",
+ "code": "Patrick Hand"
+ },
+ "colors": {
+ "text": "424242",
+ "textSecondary": "0097A7",
+ "background": "FFFFFF",
+ "accent": "FBC02D",
+ "border": "B2EBF2",
+ "codeBg": "E0F7FA",
+ "blockquoteBg": "E0F7FA",
+ "blockquoteBorder": "0097A7"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 36,
+ "color": "textSecondary",
+ "bold": false,
+ "align": "center",
+ "spacing": {
+ "before": 48,
+ "after": 32,
+ "line": 1.2
+ }
+ },
+ "h2": {
+ "font": "body",
+ "size": 18,
+ "color": "accent",
+ "bold": true,
+ "align": "center",
+ "spacing": {
+ "before": 36,
+ "after": 18,
+ "line": 1.3
+ }
+ },
+ "h3": {
+ "font": "body",
+ "size": 16,
+ "color": "accent",
+ "bold": true,
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.4
+ }
+ },
+ "h4": {
+ "font": "body",
+ "size": 15,
+ "color": "accent",
+ "bold": true,
+ "align": "center",
+ "spacing": {
+ "before": 20,
+ "after": 10,
+ "line": 1.4
+ }
+ },
+ "h5": {
+ "font": "body",
+ "size": 14,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "uppercase": true,
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "h6": {
+ "font": "body",
+ "size": 13,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "uppercase": true,
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "align": "left",
+ "spacing": {
+ "before": 0,
+ "after": 16,
+ "line": 1.6
+ }
+ },
+ "blockquote": {
+ "font": "body",
+ "size": 14,
+ "color": "textSecondary",
+ "italic": true,
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.6
+ },
+ "padding": 20,
+ "borderRadius": 16,
+ "border": {
+ "color": "blockquoteBorder",
+ "width": 2,
+ "style": "solid"
+ },
+ "background": "blockquoteBg"
+ },
+ "code": {
+ "font": "code",
+ "size": 11,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.4
+ }
+ },
+ "pre": {
+ "font": "code",
+ "size": 11,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "padding": 16,
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.4
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ },
+ "borderRadius": 8
+ },
+ "ul": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 24,
+ "bullet": "circle"
+ },
+ "ol": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 24,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.6
+ }
+ },
+ "strong": {
+ "font": "heading",
+ "bold": true,
+ "color": "textSecondary"
+ },
+ "em": {
+ "font": "body",
+ "italic": true
+ },
+ "a": {
+ "font": "body",
+ "color": "accent",
+ "underline": true,
+ "bold": true
+ },
+ "table": {
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.4
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "body",
+ "size": 12,
+ "color": "textSecondary",
+ "bold": true,
+ "background": "codeBg",
+ "padding": 12,
+ "borderBottom": {
+ "color": "accent",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "td": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "padding": 12,
+ "borderBottom": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 32,
+ "after": 32
+ },
+ "border": {
+ "color": "accent",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "img": {
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 24
+ },
+ "border": {
+ "color": "border",
+ "width": 2,
+ "style": "solid"
+ },
+ "borderRadius": 8
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true,
+ "color": "border"
+ },
+ "sup": {
+ "font": "body",
+ "size": 10,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 10,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "codeBg",
+ "color": "accent"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 11,
+ "color": "textSecondary",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 11,
+ "color": "textSecondary",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.2
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 72,
+ "bottom": 72,
+ "left": 72,
+ "right": 72
+ },
+ "columns": 1,
+ "header": true,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/lifestyle/travel-adventure.json b/src-tauri/templates/lifestyle/travel-adventure.json
new file mode 100644
index 0000000..db94491
--- /dev/null
+++ b/src-tauri/templates/lifestyle/travel-adventure.json
@@ -0,0 +1,316 @@
+{
+ "id": "travel-adventure",
+ "name": "Travel Adventure",
+ "category": "lifestyle",
+ "description": "Adventurous design for travel and exploration content. Bold typography with earthy, wanderlust-inspiring colors.",
+ "vibe": "Adventurous, Inspiring, Explorer",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Amatic+SC:wght@400;700&family=Josefin+Sans:wght@300;400;600;700&family=Share+Tech+Mono&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Amatic SC",
+ "body": "Josefin Sans",
+ "code": "Share Tech Mono"
+ },
+ "colors": {
+ "text": "4E342E",
+ "textSecondary": "5D4037",
+ "background": "FFFFFF",
+ "accent": "FF7043",
+ "border": "D7CCC8",
+ "codeBg": "FBE9E7",
+ "blockquoteBg": "FBE9E7",
+ "blockquoteBorder": "FF7043"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 48,
+ "color": "3E2723",
+ "bold": true,
+ "align": "center",
+ "letterSpacing": 4,
+ "spacing": {
+ "before": 48,
+ "after": 32,
+ "line": 1.2
+ }
+ },
+ "h2": {
+ "font": "body",
+ "size": 14,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "uppercase": true,
+ "letterSpacing": 2,
+ "spacing": {
+ "before": 30,
+ "after": 14,
+ "line": 1.3
+ }
+ },
+ "h3": {
+ "font": "body",
+ "size": 12,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "uppercase": true,
+ "letterSpacing": 1.5,
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.4
+ }
+ },
+ "h4": {
+ "font": "body",
+ "size": 11,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "uppercase": true,
+ "letterSpacing": 1,
+ "spacing": {
+ "before": 20,
+ "after": 10,
+ "line": 1.4
+ }
+ },
+ "h5": {
+ "font": "body",
+ "size": 11,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "uppercase": true,
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "h6": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "uppercase": true,
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "align": "left",
+ "spacing": {
+ "before": 0,
+ "after": 16,
+ "line": 1.6
+ }
+ },
+ "blockquote": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "italic": true,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.6
+ },
+ "padding": 16,
+ "border": {
+ "color": "blockquoteBorder",
+ "width": 4,
+ "style": "solid"
+ },
+ "background": "blockquoteBg"
+ },
+ "code": {
+ "font": "code",
+ "size": 10,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.4
+ }
+ },
+ "pre": {
+ "font": "code",
+ "size": 10,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "padding": 16,
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.4
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "ul": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 24,
+ "bullet": "square"
+ },
+ "ol": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 24,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.6
+ }
+ },
+ "strong": {
+ "font": "heading",
+ "bold": true,
+ "color": "textSecondary"
+ },
+ "em": {
+ "font": "body",
+ "italic": true
+ },
+ "a": {
+ "font": "body",
+ "color": "accent",
+ "underline": true,
+ "bold": true
+ },
+ "table": {
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.4
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "bold": true,
+ "background": "codeBg",
+ "padding": 12,
+ "uppercase": true,
+ "borderBottom": {
+ "color": "accent",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "td": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "padding": 12,
+ "borderBottom": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 32,
+ "after": 32
+ },
+ "border": {
+ "color": "accent",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "img": {
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 24
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true,
+ "color": "border"
+ },
+ "sup": {
+ "font": "body",
+ "size": 9,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 9,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "codeBg",
+ "color": "accent"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.2
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 72,
+ "bottom": 72,
+ "left": 72,
+ "right": 72
+ },
+ "columns": 1,
+ "header": true,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/lifestyle/wedding-elegant.json b/src-tauri/templates/lifestyle/wedding-elegant.json
new file mode 100644
index 0000000..12de733
--- /dev/null
+++ b/src-tauri/templates/lifestyle/wedding-elegant.json
@@ -0,0 +1,325 @@
+{
+ "id": "wedding-elegant",
+ "name": "Wedding Elegant",
+ "category": "lifestyle",
+ "description": "Romantic and elegant design for wedding stationery and formal events. Delicate typography with sophisticated flourishes.",
+ "vibe": "Romantic, Elegant, Celebratory",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Tangerine:wght@400;700&family=Cormorant+Garamond:ital,wght@0,300;0,400;0,500;0,600;0,700;1,400&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Tangerine",
+ "body": "Cormorant Garamond",
+ "code": "Cormorant Garamond"
+ },
+ "colors": {
+ "text": "5D4037",
+ "textSecondary": "795548",
+ "background": "FFFAF0",
+ "accent": "D4AF37",
+ "border": "EFEBE9",
+ "codeBg": "FFF8E1",
+ "blockquoteBg": "FFF8E1",
+ "blockquoteBorder": "D4AF37"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 48,
+ "color": "text",
+ "bold": true,
+ "align": "center",
+ "spacing": {
+ "before": 48,
+ "after": 32,
+ "line": 1.2
+ }
+ },
+ "h2": {
+ "font": "body",
+ "size": 14,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "center",
+ "uppercase": true,
+ "letterSpacing": 3,
+ "spacing": {
+ "before": 36,
+ "after": 18,
+ "line": 1.3
+ }
+ },
+ "h3": {
+ "font": "body",
+ "size": 13,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "center",
+ "uppercase": true,
+ "letterSpacing": 2,
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.4
+ }
+ },
+ "h4": {
+ "font": "body",
+ "size": 12,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "center",
+ "uppercase": true,
+ "letterSpacing": 1.5,
+ "spacing": {
+ "before": 20,
+ "after": 10,
+ "line": 1.4
+ }
+ },
+ "h5": {
+ "font": "body",
+ "size": 11,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "center",
+ "uppercase": true,
+ "letterSpacing": 1,
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "h6": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "center",
+ "uppercase": true,
+ "letterSpacing": 1,
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "align": "center",
+ "spacing": {
+ "before": 0,
+ "after": 16,
+ "line": 1.7
+ }
+ },
+ "blockquote": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "italic": true,
+ "align": "center",
+ "spacing": {
+ "before": 32,
+ "after": 32,
+ "line": 1.6
+ },
+ "padding": 24,
+ "border": {
+ "top": {
+ "color": "blockquoteBorder",
+ "width": 1,
+ "style": "solid"
+ },
+ "bottom": {
+ "color": "blockquoteBorder",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "background": "background"
+ },
+ "code": {
+ "font": "code",
+ "size": 10,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.4
+ }
+ },
+ "pre": {
+ "font": "code",
+ "size": 10,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "padding": 16,
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.4
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "ul": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.7
+ },
+ "indent": 24,
+ "bullet": "circle"
+ },
+ "ol": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.7
+ },
+ "indent": 24,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.7
+ }
+ },
+ "strong": {
+ "font": "body",
+ "bold": true,
+ "color": "textSecondary"
+ },
+ "em": {
+ "font": "body",
+ "italic": true
+ },
+ "a": {
+ "font": "body",
+ "color": "accent",
+ "underline": true,
+ "bold": true
+ },
+ "table": {
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.4
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "body",
+ "size": 11,
+ "color": "textSecondary",
+ "bold": true,
+ "background": "codeBg",
+ "padding": 12,
+ "uppercase": true,
+ "letterSpacing": 1,
+ "borderBottom": {
+ "color": "accent",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "td": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "padding": 12,
+ "borderBottom": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 32,
+ "after": 32
+ },
+ "border": {
+ "color": "accent",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "img": {
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 24
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true,
+ "color": "border"
+ },
+ "sup": {
+ "font": "body",
+ "size": 9,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 9,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "codeBg",
+ "color": "accent"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.2
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 72,
+ "bottom": 72,
+ "left": 72,
+ "right": 72
+ },
+ "columns": 1,
+ "header": true,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/lifestyle/winter-holiday.json b/src-tauri/templates/lifestyle/winter-holiday.json
new file mode 100644
index 0000000..1e3ae97
--- /dev/null
+++ b/src-tauri/templates/lifestyle/winter-holiday.json
@@ -0,0 +1,316 @@
+{
+ "id": "winter-holiday",
+ "name": "Winter Holiday",
+ "category": "lifestyle",
+ "description": "Festive greeting card style. Elegant script, deep reds and forest greens.",
+ "vibe": "Festive, Cozy, Traditional",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Mountains+of+Christmas:wght@400;700&family=Merriweather:ital,wght@0,400;0,700;1,400&family=Courier+Prime&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Mountains of Christmas",
+ "body": "Merriweather",
+ "code": "Courier Prime"
+ },
+ "colors": {
+ "text": "212121",
+ "textSecondary": "1B5E20",
+ "background": "FFEBEE",
+ "accent": "B71C1C",
+ "border": "EF9A9A",
+ "codeBg": "FFFFFF",
+ "blockquoteBg": "FFFFFF",
+ "blockquoteBorder": "B71C1C"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 36,
+ "color": "accent",
+ "bold": true,
+ "align": "center",
+ "spacing": {
+ "before": 48,
+ "after": 32,
+ "line": 1.2
+ }
+ },
+ "h2": {
+ "font": "body",
+ "size": 16,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "center",
+ "borderBottom": {
+ "color": "textSecondary",
+ "width": 2,
+ "style": "dotted"
+ },
+ "padding": 5,
+ "spacing": {
+ "before": 36,
+ "after": 18,
+ "line": 1.3
+ }
+ },
+ "h3": {
+ "font": "heading",
+ "size": 20,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.4
+ }
+ },
+ "h4": {
+ "font": "heading",
+ "size": 18,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "center",
+ "spacing": {
+ "before": 20,
+ "after": 10,
+ "line": 1.4
+ }
+ },
+ "h5": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "bold": true,
+ "align": "center",
+ "uppercase": true,
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "h6": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "bold": true,
+ "align": "center",
+ "uppercase": true,
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "align": "center",
+ "spacing": {
+ "before": 0,
+ "after": 16,
+ "line": 1.6
+ }
+ },
+ "blockquote": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "italic": true,
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.6
+ },
+ "padding": 16,
+ "border": {
+ "color": "blockquoteBorder",
+ "width": 2,
+ "style": "solid"
+ },
+ "borderRadius": 8,
+ "background": "blockquoteBg"
+ },
+ "code": {
+ "font": "code",
+ "size": 10,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.4
+ }
+ },
+ "pre": {
+ "font": "code",
+ "size": 10,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "padding": 16,
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.4
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "dashed"
+ },
+ "borderRadius": 8
+ },
+ "ul": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 24,
+ "bullet": "circle"
+ },
+ "ol": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 24,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.6
+ }
+ },
+ "strong": {
+ "font": "body",
+ "bold": true,
+ "color": "accent"
+ },
+ "em": {
+ "font": "body",
+ "italic": true
+ },
+ "a": {
+ "font": "body",
+ "color": "accent",
+ "underline": true,
+ "bold": true
+ },
+ "table": {
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.4
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "body",
+ "size": 11,
+ "color": "textSecondary",
+ "bold": true,
+ "background": "codeBg",
+ "padding": 12,
+ "borderBottom": {
+ "color": "accent",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "td": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "padding": 12,
+ "borderBottom": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 32,
+ "after": 32
+ },
+ "border": {
+ "color": "accent",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "img": {
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 24
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true,
+ "color": "border"
+ },
+ "sup": {
+ "font": "body",
+ "size": 9,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 9,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "codeBg",
+ "color": "accent"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.2
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 72,
+ "bottom": 72,
+ "left": 72,
+ "right": 72
+ },
+ "columns": 1,
+ "header": true,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/minimalist/architecture-firm.json b/src-tauri/templates/minimalist/architecture-firm.json
new file mode 100644
index 0000000..9c29e3d
--- /dev/null
+++ b/src-tauri/templates/minimalist/architecture-firm.json
@@ -0,0 +1,319 @@
+{
+ "id": "architecture-firm",
+ "name": "Architecture Firm",
+ "category": "minimalist",
+ "description": "Structural precision for architecture and design firms. Clean geometry with sophisticated restraint.",
+ "vibe": "Structural, Precise, Sophisticated",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Fahkwang:wght@400;500;600&family=Manrope:wght@300;400;500&family=Space+Mono:wght@400;700&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Fahkwang",
+ "body": "Manrope",
+ "code": "Space Mono"
+ },
+ "colors": {
+ "text": "525252",
+ "textSecondary": "4A4A4A",
+ "background": "FFFFFF",
+ "accent": "1A1A1A",
+ "border": "E5E5E5",
+ "codeBg": "F5F5F5",
+ "blockquoteBg": "FFFFFF",
+ "blockquoteBorder": "1A1A1A"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 28,
+ "color": "accent",
+ "bold": false,
+ "align": "left",
+ "letterSpacing": 1,
+ "spacing": {
+ "before": 48,
+ "after": 32,
+ "line": 1.2
+ }
+ },
+ "h2": {
+ "font": "body",
+ "size": 12,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "uppercase": true,
+ "letterSpacing": 2,
+ "spacing": {
+ "before": 40,
+ "after": 20,
+ "line": 1.3
+ }
+ },
+ "h3": {
+ "font": "body",
+ "size": 11,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "uppercase": true,
+ "letterSpacing": 1.5,
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.4
+ }
+ },
+ "h4": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "uppercase": true,
+ "letterSpacing": 1,
+ "spacing": {
+ "before": 20,
+ "after": 10,
+ "line": 1.4
+ }
+ },
+ "h5": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "uppercase": true,
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "h6": {
+ "font": "body",
+ "size": 9,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "uppercase": true,
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "align": "left",
+ "spacing": {
+ "before": 0,
+ "after": 16,
+ "line": 1.7
+ }
+ },
+ "blockquote": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "italic": true,
+ "align": "left",
+ "spacing": {
+ "before": 32,
+ "after": 32,
+ "line": 1.6
+ },
+ "padding": 24,
+ "border": {
+ "left": {
+ "color": "accent",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "background": "background"
+ },
+ "code": {
+ "font": "code",
+ "size": 10,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.4
+ }
+ },
+ "pre": {
+ "font": "code",
+ "size": 10,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "padding": 16,
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.4
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "ul": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.7
+ },
+ "indent": 24,
+ "bullet": "square"
+ },
+ "ol": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.7
+ },
+ "indent": 24,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.7
+ }
+ },
+ "strong": {
+ "font": "body",
+ "bold": true,
+ "color": "accent"
+ },
+ "em": {
+ "font": "body",
+ "italic": true
+ },
+ "a": {
+ "font": "body",
+ "color": "accent",
+ "underline": true,
+ "bold": true
+ },
+ "table": {
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.4
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "heading",
+ "size": 10,
+ "color": "textSecondary",
+ "bold": true,
+ "background": "codeBg",
+ "padding": 12,
+ "uppercase": true,
+ "letterSpacing": 1,
+ "borderBottom": {
+ "color": "accent",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "td": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "padding": 12,
+ "borderBottom": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 32,
+ "after": 32
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "img": {
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 24
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true,
+ "color": "border"
+ },
+ "sup": {
+ "font": "body",
+ "size": 9,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 9,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "codeBg",
+ "color": "accent"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.2
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 72,
+ "bottom": 72,
+ "left": 72,
+ "right": 72
+ },
+ "columns": 2,
+ "header": true,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/minimalist/bauhaus-construction.json b/src-tauri/templates/minimalist/bauhaus-construction.json
new file mode 100644
index 0000000..6f036ae
--- /dev/null
+++ b/src-tauri/templates/minimalist/bauhaus-construction.json
@@ -0,0 +1,326 @@
+{
+ "id": "bauhaus-construction",
+ "name": "Bauhaus Construction",
+ "category": "minimalist",
+ "description": "Form follows function. Geometric simplicity using primary colors and heavy structural borders.",
+ "vibe": "Geometric, Functional, Primary",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Jura:wght@400;700&family=Tenor+Sans&family=Source+Code+Pro:wght@400;700&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Jura",
+ "body": "Tenor Sans",
+ "code": "Source Code+Pro"
+ },
+ "colors": {
+ "text": "212121",
+ "textSecondary": "111111",
+ "background": "FFFFFF",
+ "accent": "D50000",
+ "highlight": "FFEB3B",
+ "border": "0000FF",
+ "codeBg": "EEEEEE",
+ "blockquoteBg": "FFFFFF",
+ "blockquoteBorder": "0000FF"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 32,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "border": {
+ "left": {
+ "color": "accent",
+ "width": 12,
+ "style": "solid"
+ }
+ },
+ "padding": 16,
+ "spacing": {
+ "before": 48,
+ "after": 24,
+ "line": 1.2
+ }
+ },
+ "h2": {
+ "font": "body",
+ "size": 16,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "background": "highlight",
+ "padding": 4,
+ "spacing": {
+ "before": 36,
+ "after": 18,
+ "line": 1.3
+ }
+ },
+ "h3": {
+ "font": "body",
+ "size": 14,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.4
+ }
+ },
+ "h4": {
+ "font": "body",
+ "size": 12,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 20,
+ "after": 10,
+ "line": 1.4
+ }
+ },
+ "h5": {
+ "font": "body",
+ "size": 11,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "h6": {
+ "font": "body",
+ "size": 11,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "uppercase": true,
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "align": "justify",
+ "spacing": {
+ "before": 0,
+ "after": 16,
+ "line": 1.6
+ }
+ },
+ "blockquote": {
+ "font": "body",
+ "size": 12,
+ "color": "textSecondary",
+ "italic": true,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.6
+ },
+ "padding": 16,
+ "border": {
+ "top": {
+ "color": "border",
+ "width": 4,
+ "style": "solid"
+ },
+ "bottom": {
+ "color": "border",
+ "width": 4,
+ "style": "solid"
+ }
+ },
+ "background": "blockquoteBg"
+ },
+ "code": {
+ "font": "code",
+ "size": 10,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.4
+ }
+ },
+ "pre": {
+ "font": "code",
+ "size": 10,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "padding": 16,
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.4
+ },
+ "border": {
+ "color": "textSecondary",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "ul": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 24,
+ "bullet": "square"
+ },
+ "ol": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 24,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.6
+ }
+ },
+ "strong": {
+ "font": "body",
+ "bold": true,
+ "color": "textSecondary"
+ },
+ "em": {
+ "font": "body",
+ "italic": true
+ },
+ "a": {
+ "font": "body",
+ "color": "border",
+ "underline": true,
+ "bold": true
+ },
+ "table": {
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.4
+ },
+ "border": {
+ "color": "textSecondary",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "heading",
+ "size": 11,
+ "color": "textSecondary",
+ "bold": true,
+ "background": "highlight",
+ "padding": 12,
+ "uppercase": true,
+ "borderBottom": {
+ "color": "accent",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "td": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "padding": 12,
+ "borderBottom": {
+ "color": "textSecondary",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 32,
+ "after": 32
+ },
+ "border": {
+ "color": "accent",
+ "width": 4,
+ "style": "solid"
+ }
+ },
+ "img": {
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 24
+ },
+ "border": {
+ "color": "textSecondary",
+ "width": 4,
+ "style": "solid"
+ }
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true,
+ "color": "border"
+ },
+ "sup": {
+ "font": "body",
+ "size": 9,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 9,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "highlight",
+ "color": "textSecondary"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.2
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 72,
+ "bottom": 72,
+ "left": 72,
+ "right": 72
+ },
+ "columns": 1,
+ "header": true,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/minimalist/de-stijl.json b/src-tauri/templates/minimalist/de-stijl.json
new file mode 100644
index 0000000..ad15ed6
--- /dev/null
+++ b/src-tauri/templates/minimalist/de-stijl.json
@@ -0,0 +1,324 @@
+{
+ "id": "de-stijl",
+ "name": "De Stijl",
+ "category": "minimalist",
+ "description": "Inspired by the Dutch movement (Mondrian). Primary colors, thick black lines, and rigid grid geometry.",
+ "vibe": "Abstract, Geometric, Primary",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Geo:ital,wght@0,400;1,400&family=Arimo:ital,wght@0,400;0,700;1,400&family=Fira+Code&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Geo",
+ "body": "Arimo",
+ "code": "Fira Code"
+ },
+ "colors": {
+ "text": "000000",
+ "textSecondary": "0000FF",
+ "background": "FFFFFF",
+ "accent": "FF0000",
+ "highlight": "FFFF00",
+ "border": "000000",
+ "codeBg": "F5F5F5",
+ "blockquoteBg": "FFFFFF",
+ "blockquoteBorder": "000000"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 32,
+ "color": "accent",
+ "bold": false,
+ "align": "left",
+ "border": {
+ "bottom": {
+ "color": "border",
+ "width": 4,
+ "style": "solid"
+ },
+ "left": {
+ "color": "border",
+ "width": 4,
+ "style": "solid"
+ }
+ },
+ "padding": 16,
+ "spacing": {
+ "before": 48,
+ "after": 24,
+ "line": 1.2
+ }
+ },
+ "h2": {
+ "font": "body",
+ "size": 14,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "background": "highlight",
+ "padding": 4,
+ "spacing": {
+ "before": 36,
+ "after": 18,
+ "line": 1.3
+ }
+ },
+ "h3": {
+ "font": "body",
+ "size": 12,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.4
+ }
+ },
+ "h4": {
+ "font": "body",
+ "size": 11,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 20,
+ "after": 10,
+ "line": 1.4
+ }
+ },
+ "h5": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "h6": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "uppercase": true,
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "align": "left",
+ "spacing": {
+ "before": 0,
+ "after": 16,
+ "line": 1.6
+ }
+ },
+ "blockquote": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "italic": true,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.6
+ },
+ "padding": 16,
+ "border": {
+ "color": "blockquoteBorder",
+ "width": 4,
+ "style": "solid"
+ },
+ "borderRadius": 0,
+ "background": "blockquoteBg"
+ },
+ "code": {
+ "font": "code",
+ "size": 10,
+ "color": "text",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.4
+ }
+ },
+ "pre": {
+ "font": "code",
+ "size": 10,
+ "color": "text",
+ "background": "codeBg",
+ "padding": 16,
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.4
+ },
+ "border": {
+ "color": "border",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "ul": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 24,
+ "bullet": "square"
+ },
+ "ol": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 24,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.6
+ }
+ },
+ "strong": {
+ "font": "body",
+ "bold": true,
+ "color": "text"
+ },
+ "em": {
+ "font": "body",
+ "italic": true
+ },
+ "a": {
+ "font": "body",
+ "color": "textSecondary",
+ "underline": true,
+ "bold": true
+ },
+ "table": {
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.4
+ },
+ "border": {
+ "color": "border",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "body",
+ "size": 10,
+ "color": "accent",
+ "bold": true,
+ "background": "highlight",
+ "padding": 12,
+ "borderBottom": {
+ "color": "border",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "td": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "padding": 12,
+ "borderBottom": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 32,
+ "after": 32
+ },
+ "border": {
+ "color": "border",
+ "width": 4,
+ "style": "solid"
+ }
+ },
+ "img": {
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 24
+ },
+ "border": {
+ "color": "border",
+ "width": 4,
+ "style": "solid"
+ }
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true,
+ "color": "border"
+ },
+ "sup": {
+ "font": "body",
+ "size": 9,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 9,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "highlight",
+ "color": "textSecondary"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.2
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 72,
+ "bottom": 72,
+ "left": 72,
+ "right": 72
+ },
+ "columns": 1,
+ "header": true,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/minimalist/hipster-coffee.json b/src-tauri/templates/minimalist/hipster-coffee.json
new file mode 100644
index 0000000..299c79e
--- /dev/null
+++ b/src-tauri/templates/minimalist/hipster-coffee.json
@@ -0,0 +1,324 @@
+{
+ "id": "hipster-coffee",
+ "name": "Hipster Coffee",
+ "category": "minimalist",
+ "description": "Artisan roaster branding. Clean slab serifs on kraft paper textures.",
+ "vibe": "Artisan, Slab, Kraft",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Zilla+Slab:wght@400;700&family=Lato:wght@300;400;700&family=Roboto+Mono:wght@400;700&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Zilla Slab",
+ "body": "Lato",
+ "code": "Roboto Mono"
+ },
+ "colors": {
+ "text": "4E342E",
+ "textSecondary": "000000",
+ "background": "E0C097",
+ "accent": "3E2723",
+ "border": "3E2723",
+ "codeBg": "D7B486",
+ "blockquoteBg": "E0C097",
+ "blockquoteBorder": "3E2723"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 36,
+ "color": "accent",
+ "bold": true,
+ "align": "center",
+ "spacing": {
+ "before": 48,
+ "after": 32,
+ "line": 1.2
+ }
+ },
+ "h2": {
+ "font": "body",
+ "size": 14,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "center",
+ "uppercase": true,
+ "letterSpacing": 2,
+ "spacing": {
+ "before": 36,
+ "after": 18,
+ "line": 1.3
+ }
+ },
+ "h3": {
+ "font": "body",
+ "size": 12,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "center",
+ "uppercase": true,
+ "letterSpacing": 1.5,
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.4
+ }
+ },
+ "h4": {
+ "font": "body",
+ "size": 11,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "center",
+ "uppercase": true,
+ "letterSpacing": 1,
+ "spacing": {
+ "before": 20,
+ "after": 10,
+ "line": 1.4
+ }
+ },
+ "h5": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "center",
+ "uppercase": true,
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "h6": {
+ "font": "body",
+ "size": 9,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "center",
+ "uppercase": true,
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "align": "left",
+ "spacing": {
+ "before": 0,
+ "after": 16,
+ "line": 1.6
+ }
+ },
+ "blockquote": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "italic": true,
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.6
+ },
+ "padding": 20,
+ "border": {
+ "top": {
+ "color": "blockquoteBorder",
+ "width": 1,
+ "style": "solid"
+ },
+ "bottom": {
+ "color": "blockquoteBorder",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "background": "blockquoteBg"
+ },
+ "code": {
+ "font": "code",
+ "size": 10,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.4
+ }
+ },
+ "pre": {
+ "font": "code",
+ "size": 10,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "padding": 16,
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.4
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "ul": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 24,
+ "bullet": "circle"
+ },
+ "ol": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 24,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.6
+ }
+ },
+ "strong": {
+ "font": "body",
+ "bold": true,
+ "color": "accent"
+ },
+ "em": {
+ "font": "body",
+ "italic": true
+ },
+ "a": {
+ "font": "body",
+ "color": "accent",
+ "underline": true,
+ "bold": true
+ },
+ "table": {
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.4
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "bold": true,
+ "background": "codeBg",
+ "padding": 12,
+ "uppercase": true,
+ "letterSpacing": 1,
+ "borderBottom": {
+ "color": "accent",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "td": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "padding": 12,
+ "borderBottom": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 32,
+ "after": 32
+ },
+ "border": {
+ "color": "accent",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "img": {
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 24
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ },
+ "filter": "sepia(0.3)"
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true,
+ "color": "border"
+ },
+ "sup": {
+ "font": "body",
+ "size": 9,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 9,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "codeBg",
+ "color": "accent"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.2
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 72,
+ "bottom": 72,
+ "left": 72,
+ "right": 72
+ },
+ "columns": 1,
+ "header": true,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/minimalist/japanese-zen.json b/src-tauri/templates/minimalist/japanese-zen.json
new file mode 100644
index 0000000..069ed14
--- /dev/null
+++ b/src-tauri/templates/minimalist/japanese-zen.json
@@ -0,0 +1,309 @@
+{
+ "id": "japanese-zen",
+ "name": "Japanese Zen",
+ "category": "minimalist",
+ "description": "Inspired by Japanese minimalism and wabi-sabi aesthetics. Peaceful typography with intentional asymmetry.",
+ "vibe": "Zen, Peaceful, Minimal",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Shippori+Mincho:wght@400;600;700&family=Zen+Kaku+Gothic+New:wght@300;400;500;700&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Shippori Mincho",
+ "body": "Zen Kaku Gothic New",
+ "code": "Zen Kaku Gothic New"
+ },
+ "colors": {
+ "text": "4A4A4A",
+ "textSecondary": "2D2D2D",
+ "background": "FFFFFF",
+ "accent": "C41E3A",
+ "border": "E0E0E0",
+ "codeBg": "F9F9F9",
+ "blockquoteBg": "FFFFFF",
+ "blockquoteBorder": "C41E3A"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 28,
+ "color": "textSecondary",
+ "bold": false,
+ "align": "left",
+ "spacing": {
+ "before": 56,
+ "after": 32,
+ "line": 1.4
+ }
+ },
+ "h2": {
+ "font": "body",
+ "size": 12,
+ "color": "5C5C5C",
+ "bold": false,
+ "align": "left",
+ "letterSpacing": 2,
+ "spacing": {
+ "before": 40,
+ "after": 20,
+ "line": 1.5
+ }
+ },
+ "h3": {
+ "font": "heading",
+ "size": 14,
+ "color": "textSecondary",
+ "bold": false,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.5
+ }
+ },
+ "h4": {
+ "font": "heading",
+ "size": 12,
+ "color": "textSecondary",
+ "bold": false,
+ "align": "left",
+ "spacing": {
+ "before": 20,
+ "after": 10,
+ "line": 1.5
+ }
+ },
+ "h5": {
+ "font": "body",
+ "size": 11,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.5
+ }
+ },
+ "h6": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.5
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "align": "left",
+ "spacing": {
+ "before": 0,
+ "after": 20,
+ "line": 1.8
+ }
+ },
+ "blockquote": {
+ "font": "heading",
+ "size": 11,
+ "color": "text",
+ "italic": false,
+ "align": "left",
+ "spacing": {
+ "before": 36,
+ "after": 36,
+ "line": 1.8
+ },
+ "padding": 24,
+ "border": {
+ "left": {
+ "color": "blockquoteBorder",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "background": "blockquoteBg"
+ },
+ "code": {
+ "font": "code",
+ "size": 10,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.5
+ }
+ },
+ "pre": {
+ "font": "code",
+ "size": 10,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "padding": 16,
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.5
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "ul": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.8
+ },
+ "indent": 24,
+ "bullet": "circle"
+ },
+ "ol": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.8
+ },
+ "indent": 24,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.8
+ }
+ },
+ "strong": {
+ "font": "heading",
+ "bold": true,
+ "color": "textSecondary"
+ },
+ "em": {
+ "font": "heading",
+ "italic": true
+ },
+ "a": {
+ "font": "body",
+ "color": "accent",
+ "underline": false,
+ "bold": true
+ },
+ "table": {
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.5
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "heading",
+ "size": 10,
+ "color": "textSecondary",
+ "bold": true,
+ "background": "codeBg",
+ "padding": 12,
+ "borderBottom": {
+ "color": "accent",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "td": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "padding": 12,
+ "borderBottom": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 40,
+ "after": 40
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "img": {
+ "align": "center",
+ "spacing": {
+ "before": 32,
+ "after": 32
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true,
+ "color": "border"
+ },
+ "sup": {
+ "font": "body",
+ "size": 9,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 9,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "codeBg",
+ "color": "accent"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.2
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 72,
+ "bottom": 72,
+ "left": 72,
+ "right": 72
+ },
+ "columns": 1,
+ "header": true,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/minimalist/minimalist-black.json b/src-tauri/templates/minimalist/minimalist-black.json
new file mode 100644
index 0000000..2f9d8f9
--- /dev/null
+++ b/src-tauri/templates/minimalist/minimalist-black.json
@@ -0,0 +1,322 @@
+{
+ "id": "minimalist-black",
+ "name": "Minimalist Black",
+ "category": "minimalist",
+ "description": "Ultra-minimal dark design with stark contrasts. High-impact typography on dark backgrounds.",
+ "vibe": "Dark, Minimal, Bold",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Bebas+Neue&family=Work+Sans:wght@300;400;500;600&family=Inconsolata:wght@400;700&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Bebas Neue",
+ "body": "Work Sans",
+ "code": "Inconsolata"
+ },
+ "colors": {
+ "text": "E0E0E0",
+ "textSecondary": "FFFFFF",
+ "background": "0A0A0A",
+ "accent": "FFFFFF",
+ "border": "333333",
+ "codeBg": "121212",
+ "blockquoteBg": "0A0A0A",
+ "blockquoteBorder": "FFFFFF"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 48,
+ "color": "textSecondary",
+ "bold": false,
+ "align": "left",
+ "letterSpacing": 3,
+ "background": "background",
+ "padding": 16,
+ "spacing": {
+ "before": 48,
+ "after": 24,
+ "line": 1.2
+ }
+ },
+ "h2": {
+ "font": "body",
+ "size": 12,
+ "color": "textSecondary",
+ "bold": false,
+ "align": "left",
+ "uppercase": true,
+ "letterSpacing": 4,
+ "spacing": {
+ "before": 32,
+ "after": 16,
+ "line": 1.3
+ }
+ },
+ "h3": {
+ "font": "body",
+ "size": 11,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "uppercase": true,
+ "letterSpacing": 2,
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.4
+ }
+ },
+ "h4": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "uppercase": true,
+ "letterSpacing": 1,
+ "spacing": {
+ "before": 20,
+ "after": 10,
+ "line": 1.4
+ }
+ },
+ "h5": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "uppercase": true,
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "h6": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "uppercase": true,
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "align": "left",
+ "spacing": {
+ "before": 0,
+ "after": 16,
+ "line": 1.7
+ }
+ },
+ "blockquote": {
+ "font": "body",
+ "size": 11,
+ "color": "textSecondary",
+ "italic": true,
+ "align": "left",
+ "spacing": {
+ "before": 28,
+ "after": 28,
+ "line": 1.7
+ },
+ "padding": 24,
+ "border": {
+ "left": {
+ "color": "blockquoteBorder",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "background": "blockquoteBg"
+ },
+ "code": {
+ "font": "code",
+ "size": 10,
+ "color": "text",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.5
+ }
+ },
+ "pre": {
+ "font": "code",
+ "size": 10,
+ "color": "text",
+ "background": "codeBg",
+ "padding": 16,
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.5
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "ul": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.7
+ },
+ "indent": 24,
+ "bullet": "circle"
+ },
+ "ol": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.7
+ },
+ "indent": 24,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.7
+ }
+ },
+ "strong": {
+ "font": "body",
+ "bold": true,
+ "color": "textSecondary"
+ },
+ "em": {
+ "font": "body",
+ "italic": true
+ },
+ "a": {
+ "font": "body",
+ "color": "accent",
+ "underline": true,
+ "bold": true
+ },
+ "table": {
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.5
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "bold": true,
+ "background": "codeBg",
+ "padding": 12,
+ "uppercase": true,
+ "letterSpacing": 1,
+ "borderBottom": {
+ "color": "accent",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "td": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "padding": 12,
+ "borderBottom": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 32,
+ "after": 32
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "img": {
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 24
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ },
+ "filter": "grayscale(100%) contrast(120%)"
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true,
+ "color": "border"
+ },
+ "sup": {
+ "font": "body",
+ "size": 9,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 9,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "border",
+ "color": "textSecondary"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.2
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 72,
+ "bottom": 72,
+ "left": 72,
+ "right": 72
+ },
+ "columns": 1,
+ "header": true,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/minimalist/minimalist-white.json b/src-tauri/templates/minimalist/minimalist-white.json
new file mode 100644
index 0000000..0175b03
--- /dev/null
+++ b/src-tauri/templates/minimalist/minimalist-white.json
@@ -0,0 +1,310 @@
+{
+ "id": "minimalist-white",
+ "name": "Minimalist White",
+ "category": "minimalist",
+ "description": "Ultra-clean design with maximum white space. Less is more philosophy with restrained typography that lets content breathe.",
+ "vibe": "Clean, Modern, Sophisticated",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Work+Sans:wght@300;400;600&family=IBM+Plex+Mono:wght@400;600&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Work Sans",
+ "body": "Work Sans",
+ "code": "IBM Plex Mono"
+ },
+ "colors": {
+ "text": "555555",
+ "textSecondary": "444444",
+ "background": "FFFFFF",
+ "accent": "111111",
+ "border": "DDDDDD",
+ "codeBg": "FAFAFA",
+ "blockquoteBg": "FFFFFF",
+ "blockquoteBorder": "DDDDDD"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 32,
+ "color": "accent",
+ "bold": false,
+ "align": "left",
+ "letterSpacing": -1,
+ "spacing": {
+ "before": 48,
+ "after": 32,
+ "line": 1.2
+ }
+ },
+ "h2": {
+ "font": "heading",
+ "size": 14,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 40,
+ "after": 20,
+ "line": 1.3
+ }
+ },
+ "h3": {
+ "font": "heading",
+ "size": 12,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.4
+ }
+ },
+ "h4": {
+ "font": "heading",
+ "size": 11,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 20,
+ "after": 10,
+ "line": 1.4
+ }
+ },
+ "h5": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "h6": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "uppercase": true,
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "align": "left",
+ "spacing": {
+ "before": 0,
+ "after": 18,
+ "line": 1.8
+ }
+ },
+ "blockquote": {
+ "font": "body",
+ "size": 11,
+ "color": "666666",
+ "italic": false,
+ "align": "left",
+ "spacing": {
+ "before": 32,
+ "after": 32,
+ "line": 1.8
+ },
+ "padding": 24,
+ "border": {
+ "left": {
+ "color": "blockquoteBorder",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "background": "blockquoteBg"
+ },
+ "code": {
+ "font": "code",
+ "size": 10,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.5
+ }
+ },
+ "pre": {
+ "font": "code",
+ "size": 10,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "padding": 16,
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.5
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "ul": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.8
+ },
+ "indent": 24,
+ "bullet": "circle"
+ },
+ "ol": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.8
+ },
+ "indent": 24,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.8
+ }
+ },
+ "strong": {
+ "font": "body",
+ "bold": true,
+ "color": "textSecondary"
+ },
+ "em": {
+ "font": "body",
+ "italic": true
+ },
+ "a": {
+ "font": "body",
+ "color": "accent",
+ "underline": true,
+ "bold": true
+ },
+ "table": {
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.5
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "heading",
+ "size": 10,
+ "color": "textSecondary",
+ "bold": true,
+ "background": "codeBg",
+ "padding": 12,
+ "borderBottom": {
+ "color": "accent",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "td": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "padding": 12,
+ "borderBottom": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 40,
+ "after": 40
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "img": {
+ "align": "center",
+ "spacing": {
+ "before": 32,
+ "after": 32
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true,
+ "color": "border"
+ },
+ "sup": {
+ "font": "body",
+ "size": 9,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 9,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "codeBg",
+ "color": "accent"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.2
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 72,
+ "bottom": 72,
+ "left": 72,
+ "right": 72
+ },
+ "columns": 2,
+ "header": true,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/minimalist/museum-gallery.json b/src-tauri/templates/minimalist/museum-gallery.json
new file mode 100644
index 0000000..e9aec8d
--- /dev/null
+++ b/src-tauri/templates/minimalist/museum-gallery.json
@@ -0,0 +1,313 @@
+{
+ "id": "museum-gallery",
+ "name": "Museum Gallery",
+ "category": "minimalist",
+ "description": "Art gallery placard style. Extremely neutral sans-serifs, high contrast, small but clear text.",
+ "vibe": "Neutral, Institutional, Clean",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Karla:wght@400;700&family=Work+Sans:wght@400;600;700&family=Space+Mono&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Work Sans",
+ "body": "Karla",
+ "code": "Space Mono"
+ },
+ "colors": {
+ "text": "212121",
+ "textSecondary": "000000",
+ "background": "FFFFFF",
+ "accent": "000000",
+ "border": "E0E0E0",
+ "codeBg": "F5F5F5",
+ "blockquoteBg": "FFFFFF",
+ "blockquoteBorder": "000000"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 24,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 48,
+ "after": 20,
+ "line": 1.2
+ }
+ },
+ "h2": {
+ "font": "body",
+ "size": 12,
+ "color": "616161",
+ "bold": true,
+ "align": "left",
+ "uppercase": true,
+ "letterSpacing": 1,
+ "spacing": {
+ "before": 24,
+ "after": 14,
+ "line": 1.3
+ }
+ },
+ "h3": {
+ "font": "heading",
+ "size": 14,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.4
+ }
+ },
+ "h4": {
+ "font": "heading",
+ "size": 12,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 20,
+ "after": 10,
+ "line": 1.4
+ }
+ },
+ "h5": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "uppercase": true,
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "h6": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "uppercase": true,
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "align": "left",
+ "spacing": {
+ "before": 0,
+ "after": 14,
+ "line": 1.6
+ }
+ },
+ "blockquote": {
+ "font": "body",
+ "size": 11,
+ "color": "424242",
+ "italic": false,
+ "align": "left",
+ "spacing": {
+ "before": 20,
+ "after": 20,
+ "line": 1.6
+ },
+ "padding": 16,
+ "border": {
+ "left": {
+ "color": "blockquoteBorder",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "background": "blockquoteBg"
+ },
+ "code": {
+ "font": "code",
+ "size": 10,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.4
+ }
+ },
+ "pre": {
+ "font": "code",
+ "size": 10,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "padding": 16,
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.4
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "ul": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 24,
+ "bullet": "square"
+ },
+ "ol": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 24,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.6
+ }
+ },
+ "strong": {
+ "font": "heading",
+ "bold": true,
+ "color": "textSecondary"
+ },
+ "em": {
+ "font": "body",
+ "italic": true
+ },
+ "a": {
+ "font": "body",
+ "color": "accent",
+ "underline": true,
+ "bold": true
+ },
+ "table": {
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.4
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "heading",
+ "size": 10,
+ "color": "textSecondary",
+ "bold": true,
+ "background": "codeBg",
+ "padding": 12,
+ "uppercase": true,
+ "borderBottom": {
+ "color": "accent",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "td": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "padding": 12,
+ "borderBottom": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 32,
+ "after": 32
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "img": {
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 24
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true,
+ "color": "border"
+ },
+ "sup": {
+ "font": "body",
+ "size": 9,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 9,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "codeBg",
+ "color": "accent"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.2
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 72,
+ "bottom": 72,
+ "left": 72,
+ "right": 72
+ },
+ "columns": 2,
+ "header": true,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/minimalist/muted-pastel.json b/src-tauri/templates/minimalist/muted-pastel.json
new file mode 100644
index 0000000..a84d263
--- /dev/null
+++ b/src-tauri/templates/minimalist/muted-pastel.json
@@ -0,0 +1,304 @@
+{
+ "id": "muted-pastel",
+ "name": "Muted Pastel",
+ "category": "minimalist",
+ "description": "Soft and calming. Very light background tints with gentle, rounded typography.",
+ "vibe": "Soft, Calming, Gentle",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Nunito:wght@400;700&family=Quicksand:wght@400;600&family=Comfortaa:wght@400;700&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Nunito",
+ "body": "Quicksand",
+ "code": "Comfortaa"
+ },
+ "colors": {
+ "text": "616161",
+ "textSecondary": "7986CB",
+ "background": "FDFBF7",
+ "accent": "9575CD",
+ "border": "E1BEE7",
+ "codeBg": "F3E5F5",
+ "blockquoteBg": "F3E5F5",
+ "blockquoteBorder": "9575CD"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 28,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "center",
+ "spacing": {
+ "before": 48,
+ "after": 24,
+ "line": 1.2
+ }
+ },
+ "h2": {
+ "font": "body",
+ "size": 14,
+ "color": "accent",
+ "bold": true,
+ "align": "center",
+ "spacing": {
+ "before": 36,
+ "after": 18,
+ "line": 1.3
+ }
+ },
+ "h3": {
+ "font": "heading",
+ "size": 12,
+ "color": "accent",
+ "bold": true,
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.4
+ }
+ },
+ "h4": {
+ "font": "heading",
+ "size": 11,
+ "color": "accent",
+ "bold": true,
+ "align": "center",
+ "spacing": {
+ "before": 20,
+ "after": 10,
+ "line": 1.4
+ }
+ },
+ "h5": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "bold": true,
+ "align": "center",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "h6": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "bold": true,
+ "align": "center",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "align": "center",
+ "spacing": {
+ "before": 0,
+ "after": 16,
+ "line": 1.7
+ }
+ },
+ "blockquote": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "italic": true,
+ "align": "center",
+ "spacing": {
+ "before": 32,
+ "after": 32,
+ "line": 1.7
+ },
+ "padding": 24,
+ "borderRadius": 20,
+ "background": "blockquoteBg"
+ },
+ "code": {
+ "font": "code",
+ "size": 10,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.5
+ }
+ },
+ "pre": {
+ "font": "code",
+ "size": 10,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "padding": 16,
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.5
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ },
+ "borderRadius": 12
+ },
+ "ul": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.7
+ },
+ "indent": 24,
+ "bullet": "circle"
+ },
+ "ol": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.7
+ },
+ "indent": 24,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.7
+ }
+ },
+ "strong": {
+ "font": "heading",
+ "bold": true,
+ "color": "accent"
+ },
+ "em": {
+ "font": "body",
+ "italic": true
+ },
+ "a": {
+ "font": "heading",
+ "color": "textSecondary",
+ "underline": true,
+ "bold": true
+ },
+ "table": {
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.5
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "heading",
+ "size": 11,
+ "color": "textSecondary",
+ "bold": true,
+ "background": "codeBg",
+ "padding": 12,
+ "borderBottom": {
+ "color": "accent",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "td": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "padding": 12,
+ "borderBottom": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 32,
+ "after": 32
+ },
+ "border": {
+ "color": "border",
+ "width": 2,
+ "style": "dashed"
+ }
+ },
+ "img": {
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 24
+ },
+ "border": {
+ "color": "border",
+ "width": 2,
+ "style": "solid"
+ },
+ "borderRadius": 12
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true,
+ "color": "border"
+ },
+ "sup": {
+ "font": "body",
+ "size": 9,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 9,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "codeBg",
+ "color": "accent"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.2
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 72,
+ "bottom": 72,
+ "left": 72,
+ "right": 72
+ },
+ "columns": 1,
+ "header": true,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/minimalist/scandinavian-clean.json b/src-tauri/templates/minimalist/scandinavian-clean.json
new file mode 100644
index 0000000..16fbd22
--- /dev/null
+++ b/src-tauri/templates/minimalist/scandinavian-clean.json
@@ -0,0 +1,310 @@
+{
+ "id": "scandinavian-clean",
+ "name": "Scandinavian Clean",
+ "category": "minimalist",
+ "description": "Inspired by Nordic design principles. Clean lines, functional typography, and subtle warmth with muted colors.",
+ "vibe": "Nordic, Clean, Warm Minimal",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;600&family=Karla:wght@400;700&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Poppins",
+ "body": "Poppins",
+ "code": "Karla"
+ },
+ "colors": {
+ "text": "4A4A4A",
+ "textSecondary": "2C2C2C",
+ "background": "FFFFFF",
+ "accent": "E07A5F",
+ "border": "E0E0E0",
+ "codeBg": "F5F5F5",
+ "blockquoteBg": "FFFFFF",
+ "blockquoteBorder": "E07A5F"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 28,
+ "color": "textSecondary",
+ "bold": false,
+ "align": "left",
+ "spacing": {
+ "before": 48,
+ "after": 24,
+ "line": 1.2
+ }
+ },
+ "h2": {
+ "font": "heading",
+ "size": 14,
+ "color": "5D5D5D",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 36,
+ "after": 18,
+ "line": 1.3
+ }
+ },
+ "h3": {
+ "font": "heading",
+ "size": 12,
+ "color": "5D5D5D",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.4
+ }
+ },
+ "h4": {
+ "font": "heading",
+ "size": 11,
+ "color": "5D5D5D",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 20,
+ "after": 10,
+ "line": 1.4
+ }
+ },
+ "h5": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "h6": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "align": "left",
+ "spacing": {
+ "before": 0,
+ "after": 16,
+ "line": 1.7
+ }
+ },
+ "blockquote": {
+ "font": "body",
+ "size": 11,
+ "color": "666666",
+ "italic": false,
+ "align": "left",
+ "spacing": {
+ "before": 28,
+ "after": 28,
+ "line": 1.7
+ },
+ "padding": 20,
+ "border": {
+ "left": {
+ "color": "blockquoteBorder",
+ "width": 3,
+ "style": "solid"
+ }
+ },
+ "background": "blockquoteBg"
+ },
+ "code": {
+ "font": "code",
+ "size": 10,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.5
+ }
+ },
+ "pre": {
+ "font": "code",
+ "size": 10,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "padding": 16,
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.5
+ },
+ "border": {
+ "color": "border",
+ "width": 0,
+ "style": "solid"
+ },
+ "borderRadius": 4
+ },
+ "ul": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.7
+ },
+ "indent": 24,
+ "bullet": "circle"
+ },
+ "ol": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.7
+ },
+ "indent": 24,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.7
+ }
+ },
+ "strong": {
+ "font": "heading",
+ "bold": true,
+ "color": "textSecondary"
+ },
+ "em": {
+ "font": "body",
+ "italic": true
+ },
+ "a": {
+ "font": "body",
+ "color": "accent",
+ "underline": true,
+ "bold": true
+ },
+ "table": {
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.5
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "heading",
+ "size": 10,
+ "color": "textSecondary",
+ "bold": true,
+ "background": "codeBg",
+ "padding": 12,
+ "borderBottom": {
+ "color": "accent",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "td": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "padding": 12,
+ "borderBottom": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 32,
+ "after": 32
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "img": {
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 24
+ },
+ "border": {
+ "color": "border",
+ "width": 0,
+ "style": "solid"
+ },
+ "borderRadius": 4
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true,
+ "color": "border"
+ },
+ "sup": {
+ "font": "body",
+ "size": 9,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 9,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "codeBg",
+ "color": "accent"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.2
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 72,
+ "bottom": 72,
+ "left": 72,
+ "right": 72
+ },
+ "columns": 1,
+ "header": true,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/minimalist/swiss-grid.json b/src-tauri/templates/minimalist/swiss-grid.json
new file mode 100644
index 0000000..9fd3c7a
--- /dev/null
+++ b/src-tauri/templates/minimalist/swiss-grid.json
@@ -0,0 +1,327 @@
+{
+ "id": "swiss-grid",
+ "name": "Swiss International",
+ "category": "minimalist",
+ "description": "Objective, bold, and asymmetric. Heavy use of black and white, strong grid alignment.",
+ "vibe": "Architecture, Design, Modernism",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Inter:wght@400;700;900&family=Space+Grotesk:wght@400;700&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Inter",
+ "body": "Inter",
+ "code": "Space Grotesk"
+ },
+ "colors": {
+ "text": "111111",
+ "textSecondary": "000000",
+ "background": "FFFFFF",
+ "accent": "000000",
+ "border": "000000",
+ "codeBg": "F0F0F0",
+ "blockquoteBg": "FFFFFF",
+ "blockquoteBorder": "000000"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 42,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "letterSpacing": -2,
+ "border": {
+ "top": {
+ "color": "border",
+ "width": 6,
+ "style": "solid"
+ }
+ },
+ "padding": 24,
+ "spacing": {
+ "before": 64,
+ "after": 24,
+ "line": 1
+ }
+ },
+ "h2": {
+ "font": "heading",
+ "size": 16,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "uppercase": true,
+ "letterSpacing": 2,
+ "spacing": {
+ "before": 40,
+ "after": 16,
+ "line": 1.2
+ }
+ },
+ "h3": {
+ "font": "heading",
+ "size": 14,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "uppercase": true,
+ "letterSpacing": 1.5,
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.3
+ }
+ },
+ "h4": {
+ "font": "heading",
+ "size": 12,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "uppercase": true,
+ "letterSpacing": 1,
+ "spacing": {
+ "before": 20,
+ "after": 10,
+ "line": 1.4
+ }
+ },
+ "h5": {
+ "font": "body",
+ "size": 11,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "uppercase": true,
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "h6": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "uppercase": true,
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "align": "left",
+ "spacing": {
+ "before": 0,
+ "after": 16,
+ "line": 1.5
+ }
+ },
+ "blockquote": {
+ "font": "heading",
+ "size": 12,
+ "color": "textSecondary",
+ "italic": false,
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.4
+ },
+ "padding": 20,
+ "border": {
+ "left": {
+ "color": "blockquoteBorder",
+ "width": 4,
+ "style": "solid"
+ }
+ },
+ "background": "blockquoteBg"
+ },
+ "code": {
+ "font": "code",
+ "size": 10,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.4
+ }
+ },
+ "pre": {
+ "font": "code",
+ "size": 10,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "padding": 16,
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.4
+ },
+ "border": {
+ "color": "border",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "ul": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.5
+ },
+ "indent": 24,
+ "bullet": "square"
+ },
+ "ol": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.5
+ },
+ "indent": 24,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.5
+ }
+ },
+ "strong": {
+ "font": "heading",
+ "bold": true,
+ "color": "textSecondary"
+ },
+ "em": {
+ "font": "body",
+ "italic": true
+ },
+ "a": {
+ "font": "body",
+ "color": "textSecondary",
+ "underline": true,
+ "bold": true
+ },
+ "table": {
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.4
+ },
+ "border": {
+ "color": "border",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "heading",
+ "size": 10,
+ "color": "textSecondary",
+ "bold": true,
+ "background": "codeBg",
+ "padding": 12,
+ "uppercase": true,
+ "borderBottom": {
+ "color": "accent",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "td": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "padding": 12,
+ "borderBottom": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 48,
+ "after": 48
+ },
+ "border": {
+ "color": "border",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "img": {
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 24
+ },
+ "border": {
+ "color": "border",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true,
+ "color": "border"
+ },
+ "sup": {
+ "font": "body",
+ "size": 9,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 9,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "border",
+ "color": "textSecondary"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.2
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 72,
+ "bottom": 72,
+ "left": 72,
+ "right": 72
+ },
+ "columns": 3,
+ "header": true,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/minimalist/wireframe-layout.json b/src-tauri/templates/minimalist/wireframe-layout.json
new file mode 100644
index 0000000..5dcebff
--- /dev/null
+++ b/src-tauri/templates/minimalist/wireframe-layout.json
@@ -0,0 +1,318 @@
+{
+ "id": "wireframe-layout",
+ "name": "Wireframe Layout",
+ "category": "minimalist",
+ "description": "Digital blueprint style. Grey backgrounds, monospaced fonts, and placeholder-like blocks.",
+ "vibe": "Digital, Prototype, Structural",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Redacted+Script&family=Flow+Circular&family=Roboto+Mono:wght@400;700&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Roboto Mono",
+ "body": "Roboto Mono",
+ "code": "Roboto Mono"
+ },
+ "colors": {
+ "text": "333333",
+ "textSecondary": "555555",
+ "background": "FFFFFF",
+ "accent": "0000FF",
+ "highlight": "E0E0E0",
+ "border": "CCCCCC",
+ "codeBg": "F0F0F0",
+ "blockquoteBg": "F9F9F9",
+ "blockquoteBorder": "999999"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 24,
+ "color": "accent",
+ "bold": true,
+ "align": "left",
+ "background": "highlight",
+ "padding": 12,
+ "spacing": {
+ "before": 48,
+ "after": 24,
+ "line": 1.2
+ }
+ },
+ "h2": {
+ "font": "heading",
+ "size": 14,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "border": {
+ "bottom": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "padding": 4,
+ "spacing": {
+ "before": 36,
+ "after": 18,
+ "line": 1.3
+ }
+ },
+ "h3": {
+ "font": "heading",
+ "size": 12,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.4
+ }
+ },
+ "h4": {
+ "font": "heading",
+ "size": 11,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 20,
+ "after": 10,
+ "line": 1.4
+ }
+ },
+ "h5": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "h6": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "align": "left",
+ "spacing": {
+ "before": 0,
+ "after": 16,
+ "line": 1.6
+ }
+ },
+ "blockquote": {
+ "font": "body",
+ "size": 11,
+ "color": "textSecondary",
+ "italic": true,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.6
+ },
+ "padding": 16,
+ "border": {
+ "color": "blockquoteBorder",
+ "width": 1,
+ "style": "dashed"
+ },
+ "background": "blockquoteBg"
+ },
+ "code": {
+ "font": "code",
+ "size": 10,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.4
+ }
+ },
+ "pre": {
+ "font": "code",
+ "size": 10,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "padding": 16,
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.4
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "dashed"
+ }
+ },
+ "ul": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 24,
+ "bullet": "square"
+ },
+ "ol": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 24,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.6
+ }
+ },
+ "strong": {
+ "font": "heading",
+ "bold": true,
+ "color": "textSecondary"
+ },
+ "em": {
+ "font": "body",
+ "italic": true
+ },
+ "a": {
+ "font": "body",
+ "color": "accent",
+ "underline": true,
+ "bold": true
+ },
+ "table": {
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.4
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "dashed"
+ }
+ },
+ "th": {
+ "font": "heading",
+ "size": 10,
+ "color": "textSecondary",
+ "bold": true,
+ "background": "highlight",
+ "padding": 12,
+ "borderBottom": {
+ "color": "accent",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "td": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "padding": 12,
+ "borderBottom": {
+ "color": "border",
+ "width": 1,
+ "style": "dashed"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 32,
+ "after": 32
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "dashed"
+ }
+ },
+ "img": {
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 24
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "dashed"
+ },
+ "background": "highlight"
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true,
+ "color": "border"
+ },
+ "sup": {
+ "font": "body",
+ "size": 9,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 9,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "highlight",
+ "color": "accent"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.2
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 72,
+ "bottom": 72,
+ "left": 72,
+ "right": 72
+ },
+ "columns": 1,
+ "header": true,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/minimalist/zen-garden.json b/src-tauri/templates/minimalist/zen-garden.json
new file mode 100644
index 0000000..8fc85a3
--- /dev/null
+++ b/src-tauri/templates/minimalist/zen-garden.json
@@ -0,0 +1,309 @@
+{
+ "id": "zen-garden",
+ "name": "Zen Garden",
+ "category": "minimalist",
+ "description": "Inspired by Japanese rock gardens. Extreme minimalism with meditative spacing and natural balance.",
+ "vibe": "Meditative, Balanced, Serene",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Noto+Serif+JP:wght@400;600&family=Noto+Sans+JP:wght@300;400;700&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Noto Serif JP",
+ "body": "Noto Sans JP",
+ "code": "Noto Sans JP"
+ },
+ "colors": {
+ "text": "4A4A4A",
+ "textSecondary": "2C2C2C",
+ "background": "FFFFFF",
+ "accent": "6B8E6B",
+ "border": "E8E8E8",
+ "codeBg": "F9F9F9",
+ "blockquoteBg": "FFFFFF",
+ "blockquoteBorder": "6B8E6B"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 26,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 60,
+ "after": 40,
+ "line": 1.4
+ }
+ },
+ "h2": {
+ "font": "body",
+ "size": 11,
+ "color": "5C5C5C",
+ "bold": false,
+ "align": "left",
+ "letterSpacing": 2,
+ "spacing": {
+ "before": 48,
+ "after": 24,
+ "line": 1.6
+ }
+ },
+ "h3": {
+ "font": "heading",
+ "size": 13,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 32,
+ "after": 16,
+ "line": 1.6
+ }
+ },
+ "h4": {
+ "font": "heading",
+ "size": 12,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.6
+ }
+ },
+ "h5": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 20,
+ "after": 10,
+ "line": 1.6
+ }
+ },
+ "h6": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 20,
+ "after": 10,
+ "line": 1.6
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "align": "left",
+ "spacing": {
+ "before": 0,
+ "after": 20,
+ "line": 2.0
+ }
+ },
+ "blockquote": {
+ "font": "heading",
+ "size": 12,
+ "color": "textSecondary",
+ "italic": false,
+ "align": "left",
+ "spacing": {
+ "before": 40,
+ "after": 40,
+ "line": 1.8
+ },
+ "padding": 32,
+ "border": {
+ "left": {
+ "color": "blockquoteBorder",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "background": "blockquoteBg"
+ },
+ "code": {
+ "font": "code",
+ "size": 10,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.6
+ }
+ },
+ "pre": {
+ "font": "code",
+ "size": 10,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "padding": 24,
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.6
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "ul": {
+ "spacing": {
+ "before": 20,
+ "after": 20,
+ "line": 2.0
+ },
+ "indent": 24,
+ "bullet": "circle"
+ },
+ "ol": {
+ "spacing": {
+ "before": 20,
+ "after": 20,
+ "line": 2.0
+ },
+ "indent": 24,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 2.0
+ }
+ },
+ "strong": {
+ "font": "heading",
+ "bold": true,
+ "color": "textSecondary"
+ },
+ "em": {
+ "font": "body",
+ "italic": true
+ },
+ "a": {
+ "font": "body",
+ "color": "accent",
+ "underline": false,
+ "bold": true
+ },
+ "table": {
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.6
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "heading",
+ "size": 10,
+ "color": "textSecondary",
+ "bold": true,
+ "background": "codeBg",
+ "padding": 12,
+ "borderBottom": {
+ "color": "accent",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "td": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "padding": 12,
+ "borderBottom": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 48,
+ "after": 48
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "img": {
+ "align": "center",
+ "spacing": {
+ "before": 32,
+ "after": 32
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true,
+ "color": "border"
+ },
+ "sup": {
+ "font": "body",
+ "size": 9,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 9,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "codeBg",
+ "color": "accent"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.2
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 72,
+ "bottom": 72,
+ "left": 72,
+ "right": 72
+ },
+ "columns": 1,
+ "header": true,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/tech/8-bit-arcade.json b/src-tauri/templates/tech/8-bit-arcade.json
new file mode 100644
index 0000000..f3435a1
--- /dev/null
+++ b/src-tauri/templates/tech/8-bit-arcade.json
@@ -0,0 +1,309 @@
+{
+ "id": "8-bit-arcade",
+ "name": "8-Bit Arcade",
+ "category": "tech",
+ "description": "Retro gaming high-score screen. Pixelated fonts on dark backgrounds.",
+ "vibe": "Retro, Gaming, Pixel",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Press+Start+2P&family=VT323&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Press Start 2P",
+ "body": "VT323",
+ "code": "VT323"
+ },
+ "colors": {
+ "text": "FFFFFF",
+ "textSecondary": "D500F9",
+ "background": "000000",
+ "accent": "76FF03",
+ "border": "FFFFFF",
+ "codeBg": "212121",
+ "blockquoteBg": "000000",
+ "blockquoteBorder": "FFFF00"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 20,
+ "color": "accent",
+ "bold": false,
+ "align": "center",
+ "background": "codeBg",
+ "padding": 20,
+ "spacing": {
+ "before": 48,
+ "after": 28,
+ "line": 1.5
+ }
+ },
+ "h2": {
+ "font": "heading",
+ "size": 12,
+ "color": "textSecondary",
+ "bold": false,
+ "align": "left",
+ "spacing": {
+ "before": 32,
+ "after": 16,
+ "line": 1.4
+ }
+ },
+ "h3": {
+ "font": "heading",
+ "size": 11,
+ "color": "border",
+ "bold": false,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.4
+ }
+ },
+ "h4": {
+ "font": "heading",
+ "size": 10,
+ "color": "border",
+ "bold": false,
+ "align": "left",
+ "spacing": {
+ "before": 20,
+ "after": 10,
+ "line": 1.4
+ }
+ },
+ "h5": {
+ "font": "body",
+ "size": 14,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "h6": {
+ "font": "body",
+ "size": 14,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 14,
+ "color": "text",
+ "align": "left",
+ "spacing": {
+ "before": 0,
+ "after": 14,
+ "line": 1.4
+ }
+ },
+ "blockquote": {
+ "font": "body",
+ "size": 14,
+ "color": "blockquoteBorder",
+ "italic": false,
+ "align": "left",
+ "spacing": {
+ "before": 20,
+ "after": 20,
+ "line": 1.4
+ },
+ "padding": 16,
+ "border": {
+ "color": "border",
+ "width": 4,
+ "style": "dashed"
+ },
+ "background": "blockquoteBg"
+ },
+ "code": {
+ "font": "code",
+ "size": 14,
+ "color": "accent",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.4
+ }
+ },
+ "pre": {
+ "font": "code",
+ "size": 14,
+ "color": "accent",
+ "background": "codeBg",
+ "padding": 16,
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.4
+ },
+ "border": {
+ "color": "accent",
+ "width": 2,
+ "style": "dashed"
+ }
+ },
+ "ul": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.4
+ },
+ "indent": 24,
+ "bullet": "square"
+ },
+ "ol": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.4
+ },
+ "indent": 24,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 14,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.4
+ }
+ },
+ "strong": {
+ "font": "heading",
+ "bold": false,
+ "color": "accent"
+ },
+ "em": {
+ "font": "body",
+ "italic": true
+ },
+ "a": {
+ "font": "body",
+ "color": "textSecondary",
+ "underline": true,
+ "bold": true
+ },
+ "table": {
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.4
+ },
+ "border": {
+ "color": "border",
+ "width": 2,
+ "style": "dashed"
+ }
+ },
+ "th": {
+ "font": "heading",
+ "size": 12,
+ "color": "accent",
+ "bold": false,
+ "background": "codeBg",
+ "padding": 12,
+ "borderBottom": {
+ "color": "border",
+ "width": 2,
+ "style": "dashed"
+ }
+ },
+ "td": {
+ "font": "body",
+ "size": 14,
+ "color": "text",
+ "padding": 12,
+ "borderBottom": {
+ "color": "border",
+ "width": 2,
+ "style": "dashed"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 32,
+ "after": 32
+ },
+ "border": {
+ "color": "textSecondary",
+ "width": 4,
+ "style": "dashed"
+ }
+ },
+ "img": {
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 24
+ },
+ "border": {
+ "color": "border",
+ "width": 4,
+ "style": "dashed"
+ },
+ "filter": "contrast(1.2) brightness(0.9)"
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true,
+ "color": "border"
+ },
+ "sup": {
+ "font": "body",
+ "size": 10,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 10,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "textSecondary",
+ "color": "background"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 12,
+ "color": "textSecondary",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 12,
+ "color": "textSecondary",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.2
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 72,
+ "bottom": 72,
+ "left": 72,
+ "right": 72
+ },
+ "columns": 1,
+ "header": true,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/tech/aerospace-modern.json b/src-tauri/templates/tech/aerospace-modern.json
new file mode 100644
index 0000000..d3518aa
--- /dev/null
+++ b/src-tauri/templates/tech/aerospace-modern.json
@@ -0,0 +1,312 @@
+{
+ "id": "aerospace-modern",
+ "name": "Aerospace Modern",
+ "category": "tech",
+ "description": "Sleek design inspired by aerospace and space exploration. Clean lines with futuristic precision.",
+ "vibe": "Futuristic, Sleek, Precision",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Michroma&family=Saira:wght@300;400;500;600&family=Share+Tech+Mono&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Michroma",
+ "body": "Saira",
+ "code": "Share Tech Mono"
+ },
+ "colors": {
+ "text": "2E3A45",
+ "textSecondary": "0B3D91",
+ "background": "FFFFFF",
+ "accent": "FC3D21",
+ "border": "B0BEC5",
+ "codeBg": "F1F3F4",
+ "blockquoteBg": "E8F0FE",
+ "blockquoteBorder": "0B3D91"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 22,
+ "color": "textSecondary",
+ "bold": false,
+ "align": "left",
+ "letterSpacing": 2,
+ "spacing": {
+ "before": 48,
+ "after": 24,
+ "line": 1.3
+ }
+ },
+ "h2": {
+ "font": "body",
+ "size": 13,
+ "color": "accent",
+ "bold": true,
+ "align": "left",
+ "uppercase": true,
+ "spacing": {
+ "before": 36,
+ "after": 18,
+ "line": 1.4
+ }
+ },
+ "h3": {
+ "font": "heading",
+ "size": 14,
+ "color": "textSecondary",
+ "bold": false,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.4
+ }
+ },
+ "h4": {
+ "font": "heading",
+ "size": 12,
+ "color": "textSecondary",
+ "bold": false,
+ "align": "left",
+ "spacing": {
+ "before": 20,
+ "after": 10,
+ "line": 1.4
+ }
+ },
+ "h5": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "h6": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "uppercase": true,
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "align": "left",
+ "spacing": {
+ "before": 0,
+ "after": 14,
+ "line": 1.6
+ }
+ },
+ "blockquote": {
+ "font": "body",
+ "size": 11,
+ "color": "textSecondary",
+ "italic": true,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.6
+ },
+ "padding": 20,
+ "border": {
+ "left": {
+ "color": "blockquoteBorder",
+ "width": 4,
+ "style": "solid"
+ }
+ },
+ "background": "blockquoteBg"
+ },
+ "code": {
+ "font": "code",
+ "size": 10,
+ "color": "text",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.5
+ }
+ },
+ "pre": {
+ "font": "code",
+ "size": 10,
+ "color": "text",
+ "background": "codeBg",
+ "padding": 16,
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.5
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "ul": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 24,
+ "bullet": "square"
+ },
+ "ol": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 24,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.6
+ }
+ },
+ "strong": {
+ "font": "body",
+ "bold": true,
+ "color": "accent"
+ },
+ "em": {
+ "font": "body",
+ "italic": true
+ },
+ "a": {
+ "font": "body",
+ "color": "textSecondary",
+ "underline": true,
+ "bold": true
+ },
+ "table": {
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.4
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "heading",
+ "size": 10,
+ "color": "textSecondary",
+ "bold": true,
+ "background": "codeBg",
+ "padding": 12,
+ "uppercase": true,
+ "borderBottom": {
+ "color": "textSecondary",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "td": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "padding": 12,
+ "borderBottom": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 32,
+ "after": 32
+ },
+ "border": {
+ "color": "textSecondary",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "img": {
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 24
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true,
+ "color": "border"
+ },
+ "sup": {
+ "font": "body",
+ "size": 9,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 9,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "codeBg",
+ "color": "accent"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.2
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 72,
+ "bottom": 72,
+ "left": 72,
+ "right": 72
+ },
+ "columns": 2,
+ "header": true,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/tech/artificial-intelligence.json b/src-tauri/templates/tech/artificial-intelligence.json
new file mode 100644
index 0000000..2c2916b
--- /dev/null
+++ b/src-tauri/templates/tech/artificial-intelligence.json
@@ -0,0 +1,305 @@
+{
+ "id": "artificial-intelligence",
+ "name": "Artificial Intelligence",
+ "category": "tech",
+ "description": "Cutting-edge design for AI and machine learning content. Neural network inspired with gradient accents.",
+ "vibe": "Cutting-edge, Neural, Intelligent",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Oxanium:wght@400;600;700&family=Lexend:wght@300;400;500;600&family=JetBrains+Mono:wght@400;700&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Oxanium",
+ "body": "Lexend",
+ "code": "JetBrains Mono"
+ },
+ "colors": {
+ "text": "334155",
+ "textSecondary": "2563EB",
+ "background": "FFFFFF",
+ "accent": "7C3AED",
+ "border": "E2E8F0",
+ "codeBg": "F8FAFC",
+ "blockquoteBg": "F3F4F6",
+ "blockquoteBorder": "7C3AED"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 28,
+ "color": "accent",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 48,
+ "after": 24,
+ "line": 1.2
+ }
+ },
+ "h2": {
+ "font": "body",
+ "size": 14,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 36,
+ "after": 18,
+ "line": 1.3
+ }
+ },
+ "h3": {
+ "font": "body",
+ "size": 12,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.4
+ }
+ },
+ "h4": {
+ "font": "body",
+ "size": 11,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 20,
+ "after": 10,
+ "line": 1.4
+ }
+ },
+ "h5": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "h6": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "uppercase": true,
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "align": "left",
+ "spacing": {
+ "before": 0,
+ "after": 16,
+ "line": 1.6
+ }
+ },
+ "blockquote": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "italic": false,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.6
+ },
+ "padding": 20,
+ "borderRadius": 8,
+ "background": "blockquoteBg"
+ },
+ "code": {
+ "font": "code",
+ "size": 10,
+ "color": "accent",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.5
+ }
+ },
+ "pre": {
+ "font": "code",
+ "size": 10,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "padding": 16,
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.5
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ },
+ "borderRadius": 8
+ },
+ "ul": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 24,
+ "bullet": "circle"
+ },
+ "ol": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 24,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.6
+ }
+ },
+ "strong": {
+ "font": "body",
+ "bold": true,
+ "color": "textSecondary"
+ },
+ "em": {
+ "font": "body",
+ "italic": true
+ },
+ "a": {
+ "font": "body",
+ "color": "accent",
+ "underline": true,
+ "bold": true
+ },
+ "table": {
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.5
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "bold": true,
+ "background": "codeBg",
+ "padding": 12,
+ "borderBottom": {
+ "color": "accent",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "td": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "padding": 12,
+ "borderBottom": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 32,
+ "after": 32
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "img": {
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 24
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ },
+ "borderRadius": 8
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true,
+ "color": "border"
+ },
+ "sup": {
+ "font": "body",
+ "size": 9,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 9,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "codeBg",
+ "color": "accent"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.2
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 72,
+ "bottom": 72,
+ "left": 72,
+ "right": 72
+ },
+ "columns": 2,
+ "header": true,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/tech/astronomy-space.json b/src-tauri/templates/tech/astronomy-space.json
new file mode 100644
index 0000000..e21d6c0
--- /dev/null
+++ b/src-tauri/templates/tech/astronomy-space.json
@@ -0,0 +1,311 @@
+{
+ "id": "astronomy-space",
+ "name": "Astronomy Space",
+ "category": "tech",
+ "description": "Cosmic design for astronomy and space science. Deep space colors with stellar typography.",
+ "vibe": "Cosmic, Scientific, Vast",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Orbitron:wght@400;600;700&family=Space+Grotesk:wght@300;400;500;600&family=Space+Mono:wght@400;700&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Orbitron",
+ "body": "Space Grotesk",
+ "code": "Space Mono"
+ },
+ "colors": {
+ "text": "B0BEC5",
+ "textSecondary": "FFFFFF",
+ "background": "0A0A23",
+ "accent": "7C4DFF",
+ "border": "2D2D50",
+ "codeBg": "121225",
+ "blockquoteBg": "1A1A3E",
+ "blockquoteBorder": "7C4DFF"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 26,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "background": "background",
+ "padding": 20,
+ "spacing": {
+ "before": 48,
+ "after": 24,
+ "line": 1.2
+ }
+ },
+ "h2": {
+ "font": "body",
+ "size": 14,
+ "color": "accent",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 36,
+ "after": 18,
+ "line": 1.3
+ }
+ },
+ "h3": {
+ "font": "body",
+ "size": 12,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.4
+ }
+ },
+ "h4": {
+ "font": "body",
+ "size": 11,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 20,
+ "after": 10,
+ "line": 1.4
+ }
+ },
+ "h5": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "h6": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "uppercase": true,
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "align": "left",
+ "spacing": {
+ "before": 0,
+ "after": 14,
+ "line": 1.6
+ }
+ },
+ "blockquote": {
+ "font": "body",
+ "size": 11,
+ "color": "textSecondary",
+ "italic": true,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.6
+ },
+ "padding": 20,
+ "border": {
+ "left": {
+ "color": "blockquoteBorder",
+ "width": 4,
+ "style": "solid"
+ }
+ },
+ "background": "blockquoteBg"
+ },
+ "code": {
+ "font": "code",
+ "size": 10,
+ "color": "accent",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.5
+ }
+ },
+ "pre": {
+ "font": "code",
+ "size": 10,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "padding": 16,
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.5
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "ul": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 24,
+ "bullet": "circle"
+ },
+ "ol": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 24,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.6
+ }
+ },
+ "strong": {
+ "font": "body",
+ "bold": true,
+ "color": "accent"
+ },
+ "em": {
+ "font": "body",
+ "italic": true
+ },
+ "a": {
+ "font": "body",
+ "color": "accent",
+ "underline": true,
+ "bold": true
+ },
+ "table": {
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.5
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "bold": true,
+ "background": "codeBg",
+ "padding": 12,
+ "borderBottom": {
+ "color": "accent",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "td": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "padding": 12,
+ "borderBottom": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 32,
+ "after": 32
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "img": {
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 24
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true,
+ "color": "border"
+ },
+ "sup": {
+ "font": "body",
+ "size": 9,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 9,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "codeBg",
+ "color": "accent"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.2
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 72,
+ "bottom": 72,
+ "left": 72,
+ "right": 72
+ },
+ "columns": 1,
+ "header": true,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/tech/biohazard-lab.json b/src-tauri/templates/tech/biohazard-lab.json
new file mode 100644
index 0000000..dc19349
--- /dev/null
+++ b/src-tauri/templates/tech/biohazard-lab.json
@@ -0,0 +1,327 @@
+{
+ "id": "biohazard-lab",
+ "name": "Biohazard Lab",
+ "category": "tech",
+ "description": "Warning-label aesthetic. Monospace fonts with high-contrast yellow and black caution themes.",
+ "vibe": "Warning, Industrial, Hazardous",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Syne+Mono&family=Azeret+Mono:wght@400;600;700&family=Share+Tech+Mono&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Syne Mono",
+ "body": "Azeret Mono",
+ "code": "Share Tech Mono"
+ },
+ "colors": {
+ "text": "212121",
+ "textSecondary": "000000",
+ "background": "FAFAFA",
+ "accent": "FFEB3B",
+ "border": "000000",
+ "codeBg": "FFF9C4",
+ "blockquoteBg": "FFF9C4",
+ "blockquoteBorder": "000000"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 32,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "center",
+ "background": "accent",
+ "padding": 20,
+ "spacing": {
+ "before": 48,
+ "after": 28,
+ "line": 1.2
+ }
+ },
+ "h2": {
+ "font": "body",
+ "size": 14,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "border": {
+ "left": {
+ "color": "accent",
+ "width": 8,
+ "style": "solid"
+ }
+ },
+ "padding": 12,
+ "spacing": {
+ "before": 36,
+ "after": 18,
+ "line": 1.3
+ }
+ },
+ "h3": {
+ "font": "body",
+ "size": 12,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "border": {
+ "left": {
+ "color": "accent",
+ "width": 6,
+ "style": "solid"
+ }
+ },
+ "padding": 8,
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.4
+ }
+ },
+ "h4": {
+ "font": "body",
+ "size": 11,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 20,
+ "after": 10,
+ "line": 1.4
+ }
+ },
+ "h5": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "h6": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "uppercase": true,
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "align": "left",
+ "spacing": {
+ "before": 0,
+ "after": 16,
+ "line": 1.6
+ }
+ },
+ "blockquote": {
+ "font": "body",
+ "size": 11,
+ "color": "textSecondary",
+ "italic": false,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.6
+ },
+ "padding": 20,
+ "border": {
+ "color": "border",
+ "width": 2,
+ "style": "dashed"
+ },
+ "background": "blockquoteBg"
+ },
+ "code": {
+ "font": "code",
+ "size": 10,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.5
+ }
+ },
+ "pre": {
+ "font": "code",
+ "size": 10,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "padding": 16,
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.5
+ },
+ "border": {
+ "color": "border",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "ul": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 24,
+ "bullet": "square"
+ },
+ "ol": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 24,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.6
+ }
+ },
+ "strong": {
+ "font": "body",
+ "bold": true,
+ "color": "textSecondary"
+ },
+ "em": {
+ "font": "body",
+ "italic": true
+ },
+ "a": {
+ "font": "body",
+ "color": "textSecondary",
+ "underline": true,
+ "bold": true,
+ "background": "accent"
+ },
+ "table": {
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.5
+ },
+ "border": {
+ "color": "border",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "bold": true,
+ "background": "accent",
+ "padding": 12,
+ "borderBottom": {
+ "color": "border",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "td": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "padding": 12,
+ "borderBottom": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 32,
+ "after": 32
+ },
+ "border": {
+ "color": "border",
+ "width": 4,
+ "style": "dashed"
+ },
+ "background": "accent"
+ },
+ "img": {
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 24
+ },
+ "border": {
+ "color": "border",
+ "width": 4,
+ "style": "solid"
+ }
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true,
+ "color": "border"
+ },
+ "sup": {
+ "font": "body",
+ "size": 9,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 9,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "accent",
+ "color": "textSecondary"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.2
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 72,
+ "bottom": 72,
+ "left": 72,
+ "right": 72
+ },
+ "columns": 2,
+ "header": true,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/tech/biopunk-lab.json b/src-tauri/templates/tech/biopunk-lab.json
new file mode 100644
index 0000000..4ccd3b2
--- /dev/null
+++ b/src-tauri/templates/tech/biopunk-lab.json
@@ -0,0 +1,320 @@
+{
+ "id": "biopunk-lab",
+ "name": "Biopunk Lab",
+ "category": "sci-fi",
+ "description": "Organic technology. Slime greens, flesh tones, and rounded organic fonts.",
+ "vibe": "Organic, Gross, Tech",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Creepster&family=Kodchasan:wght@400;700&family=Butcherman&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Creepster",
+ "body": "Kodchasan",
+ "code": "Butcherman"
+ },
+ "colors": {
+ "text": "33691E",
+ "textSecondary": "1B5E20",
+ "background": "F1F8E9",
+ "accent": "2E7D32",
+ "border": "C8E6C9",
+ "codeBg": "DCEDC8",
+ "blockquoteBg": "F1F8E9",
+ "blockquoteBorder": "2E7D32"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 32,
+ "color": "accent",
+ "bold": false,
+ "align": "center",
+ "background": "border",
+ "padding": 16,
+ "spacing": {
+ "before": 48,
+ "after": 24,
+ "line": 1.2
+ }
+ },
+ "h2": {
+ "font": "body",
+ "size": 18,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "border": {
+ "bottom": {
+ "color": "accent",
+ "width": 4,
+ "style": "wave"
+ }
+ },
+ "padding": 4,
+ "spacing": {
+ "before": 36,
+ "after": 18,
+ "line": 1.3
+ }
+ },
+ "h3": {
+ "font": "body",
+ "size": 14,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.4
+ }
+ },
+ "h4": {
+ "font": "body",
+ "size": 12,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 20,
+ "after": 10,
+ "line": 1.4
+ }
+ },
+ "h5": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "h6": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "uppercase": true,
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "align": "left",
+ "spacing": {
+ "before": 0,
+ "after": 16,
+ "line": 1.6
+ }
+ },
+ "blockquote": {
+ "font": "body",
+ "size": 12,
+ "color": "textSecondary",
+ "italic": false,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.6
+ },
+ "padding": 16,
+ "borderRadius": 16,
+ "border": {
+ "color": "accent",
+ "width": 2,
+ "style": "solid"
+ },
+ "background": "blockquoteBg"
+ },
+ "code": {
+ "font": "code",
+ "size": 10,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.5
+ }
+ },
+ "pre": {
+ "font": "code",
+ "size": 10,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "padding": 16,
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.5
+ },
+ "border": {
+ "color": "border",
+ "width": 2,
+ "style": "solid"
+ },
+ "borderRadius": 12
+ },
+ "ul": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 24,
+ "bullet": "circle"
+ },
+ "ol": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 24,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.6
+ }
+ },
+ "strong": {
+ "font": "heading",
+ "bold": false,
+ "color": "accent"
+ },
+ "em": {
+ "font": "body",
+ "italic": true
+ },
+ "a": {
+ "font": "body",
+ "color": "accent",
+ "underline": true,
+ "bold": true
+ },
+ "table": {
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.5
+ },
+ "border": {
+ "color": "border",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "body",
+ "size": 11,
+ "color": "textSecondary",
+ "bold": true,
+ "background": "codeBg",
+ "padding": 12,
+ "borderBottom": {
+ "color": "accent",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "td": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "padding": 12,
+ "borderBottom": {
+ "color": "border",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 32,
+ "after": 32
+ },
+ "border": {
+ "color": "accent",
+ "width": 2,
+ "style": "wave"
+ }
+ },
+ "img": {
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 24
+ },
+ "border": {
+ "color": "accent",
+ "width": 2,
+ "style": "solid"
+ },
+ "borderRadius": 12
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true,
+ "color": "border"
+ },
+ "sup": {
+ "font": "body",
+ "size": 9,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 9,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "codeBg",
+ "color": "accent"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.2
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 72,
+ "bottom": 72,
+ "left": 72,
+ "right": 72
+ },
+ "columns": 2,
+ "header": true,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/tech/blockchain-protocol.json b/src-tauri/templates/tech/blockchain-protocol.json
new file mode 100644
index 0000000..ef099a2
--- /dev/null
+++ b/src-tauri/templates/tech/blockchain-protocol.json
@@ -0,0 +1,312 @@
+{
+ "id": "blockchain-protocol",
+ "name": "Blockchain Protocol",
+ "category": "tech",
+ "description": "Technical blockchain and Web3 design. Decentralized aesthetics with protocol documentation style.",
+ "vibe": "Technical, Decentralized, Protocol",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500;600&family=Inter:wght@400;500;600&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Inter",
+ "body": "Inter",
+ "code": "JetBrains Mono"
+ },
+ "colors": {
+ "text": "4B5563",
+ "textSecondary": "1E1E1E",
+ "background": "FFFFFF",
+ "accent": "6366F1",
+ "border": "E5E7EB",
+ "codeBg": "F3F4F6",
+ "blockquoteBg": "F3F4F6",
+ "blockquoteBorder": "6366F1"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 28,
+ "color": "accent",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 48,
+ "after": 24,
+ "line": 1.2
+ }
+ },
+ "h2": {
+ "font": "heading",
+ "size": 16,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 36,
+ "after": 18,
+ "line": 1.3
+ }
+ },
+ "h3": {
+ "font": "heading",
+ "size": 14,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.4
+ }
+ },
+ "h4": {
+ "font": "heading",
+ "size": 12,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 20,
+ "after": 10,
+ "line": 1.4
+ }
+ },
+ "h5": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "h6": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "uppercase": true,
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "align": "left",
+ "spacing": {
+ "before": 0,
+ "after": 16,
+ "line": 1.6
+ }
+ },
+ "blockquote": {
+ "font": "code",
+ "size": 9,
+ "color": "text",
+ "italic": false,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.6
+ },
+ "padding": 16,
+ "borderRadius": 6,
+ "border": {
+ "left": {
+ "color": "blockquoteBorder",
+ "width": 4,
+ "style": "solid"
+ }
+ },
+ "background": "blockquoteBg"
+ },
+ "code": {
+ "font": "code",
+ "size": 10,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.5
+ }
+ },
+ "pre": {
+ "font": "code",
+ "size": 10,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "padding": 16,
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.5
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ },
+ "borderRadius": 6
+ },
+ "ul": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 24,
+ "bullet": "circle"
+ },
+ "ol": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 24,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.6
+ }
+ },
+ "strong": {
+ "font": "heading",
+ "bold": true,
+ "color": "textSecondary"
+ },
+ "em": {
+ "font": "body",
+ "italic": true
+ },
+ "a": {
+ "font": "body",
+ "color": "accent",
+ "underline": true,
+ "bold": true
+ },
+ "table": {
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.5
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "heading",
+ "size": 10,
+ "color": "textSecondary",
+ "bold": true,
+ "background": "codeBg",
+ "padding": 12,
+ "borderBottom": {
+ "color": "accent",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "td": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "padding": 12,
+ "borderBottom": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 32,
+ "after": 32
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "img": {
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 24
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ },
+ "borderRadius": 6
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true,
+ "color": "border"
+ },
+ "sup": {
+ "font": "body",
+ "size": 9,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 9,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "codeBg",
+ "color": "accent"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.2
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 72,
+ "bottom": 72,
+ "left": 72,
+ "right": 72
+ },
+ "columns": 2,
+ "header": true,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/tech/bsod-blue.json b/src-tauri/templates/tech/bsod-blue.json
new file mode 100644
index 0000000..cb42e74
--- /dev/null
+++ b/src-tauri/templates/tech/bsod-blue.json
@@ -0,0 +1,308 @@
+{
+ "id": "bsod-blue",
+ "name": "BSOD Blue",
+ "category": "tech",
+ "description": "The infamous crash screen. Pure white terminal fonts on a deep, error blue background.",
+ "vibe": "Crash, Error, Terminal",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Lucident&family=Fira+Mono:wght@400;500;700&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Lucident",
+ "body": "Fira Mono",
+ "code": "Fira Mono"
+ },
+ "colors": {
+ "text": "FFFFFF",
+ "textSecondary": "FFFFFF",
+ "background": "0000AA",
+ "accent": "FFFFFF",
+ "border": "FFFFFF",
+ "codeBg": "000088",
+ "blockquoteBg": "0000AA",
+ "blockquoteBorder": "FFFFFF"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 24,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 48,
+ "after": 24,
+ "line": 1.2
+ }
+ },
+ "h2": {
+ "font": "body",
+ "size": 14,
+ "color": "text",
+ "bold": false,
+ "align": "left",
+ "underline": true,
+ "spacing": {
+ "before": 32,
+ "after": 16,
+ "line": 1.3
+ }
+ },
+ "h3": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.4
+ }
+ },
+ "h4": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 20,
+ "after": 10,
+ "line": 1.4
+ }
+ },
+ "h5": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "h6": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "uppercase": true,
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "align": "left",
+ "spacing": {
+ "before": 0,
+ "after": 14,
+ "line": 1.5
+ }
+ },
+ "blockquote": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "italic": false,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.5
+ },
+ "padding": 16,
+ "border": {
+ "color": "border",
+ "width": 2,
+ "style": "solid"
+ },
+ "background": "blockquoteBg"
+ },
+ "code": {
+ "font": "code",
+ "size": 11,
+ "color": "text",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.5
+ }
+ },
+ "pre": {
+ "font": "code",
+ "size": 11,
+ "color": "text",
+ "background": "codeBg",
+ "padding": 16,
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.5
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "ul": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.5
+ },
+ "indent": 24,
+ "bullet": "square"
+ },
+ "ol": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.5
+ },
+ "indent": 24,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.5
+ }
+ },
+ "strong": {
+ "font": "body",
+ "bold": true,
+ "color": "text"
+ },
+ "em": {
+ "font": "body",
+ "italic": true
+ },
+ "a": {
+ "font": "body",
+ "color": "text",
+ "underline": true,
+ "bold": true
+ },
+ "table": {
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.4
+ },
+ "border": {
+ "color": "border",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "bold": true,
+ "background": "codeBg",
+ "padding": 12,
+ "borderBottom": {
+ "color": "border",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "td": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "padding": 12,
+ "borderBottom": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 32,
+ "after": 32
+ },
+ "border": {
+ "color": "border",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "img": {
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 24
+ },
+ "border": {
+ "color": "border",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true,
+ "color": "border"
+ },
+ "sup": {
+ "font": "body",
+ "size": 9,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 9,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "codeBg",
+ "color": "text"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.2
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 72,
+ "bottom": 72,
+ "left": 72,
+ "right": 72
+ },
+ "columns": 1,
+ "header": true,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/tech/circuit-board.json b/src-tauri/templates/tech/circuit-board.json
new file mode 100644
index 0000000..4f30999
--- /dev/null
+++ b/src-tauri/templates/tech/circuit-board.json
@@ -0,0 +1,316 @@
+{
+ "id": "circuit-board",
+ "name": "Circuit Board",
+ "category": "tech",
+ "description": "PCB aesthetic. Deep forest green background with copper/gold tracks.",
+ "vibe": "Tech, Green, Copper",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Share+Tech+Mono&family=Teko:wght@400;600;700&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Teko",
+ "body": "Share Tech Mono",
+ "code": "Share Tech Mono"
+ },
+ "colors": {
+ "text": "C8E6C9",
+ "textSecondary": "A5D6A7",
+ "background": "1B5E20",
+ "accent": "FFD54F",
+ "border": "FFB300",
+ "codeBg": "2E7D32",
+ "blockquoteBg": "1B5E20",
+ "blockquoteBorder": "FFD54F"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 36,
+ "color": "accent",
+ "bold": true,
+ "align": "left",
+ "border": {
+ "bottom": {
+ "color": "border",
+ "width": 4,
+ "style": "dotted"
+ }
+ },
+ "padding": 12,
+ "spacing": {
+ "before": 48,
+ "after": 24,
+ "line": 1.1
+ }
+ },
+ "h2": {
+ "font": "body",
+ "size": 16,
+ "color": "textSecondary",
+ "bold": false,
+ "align": "left",
+ "uppercase": true,
+ "spacing": {
+ "before": 36,
+ "after": 18,
+ "line": 1.3
+ }
+ },
+ "h3": {
+ "font": "body",
+ "size": 14,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.4
+ }
+ },
+ "h4": {
+ "font": "body",
+ "size": 12,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 20,
+ "after": 10,
+ "line": 1.4
+ }
+ },
+ "h5": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "h6": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "uppercase": true,
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "align": "left",
+ "spacing": {
+ "before": 0,
+ "after": 16,
+ "line": 1.5
+ }
+ },
+ "blockquote": {
+ "font": "body",
+ "size": 12,
+ "color": "accent",
+ "italic": false,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.5
+ },
+ "padding": 16,
+ "border": {
+ "color": "accent",
+ "width": 1,
+ "style": "solid"
+ },
+ "background": "blockquoteBg"
+ },
+ "code": {
+ "font": "code",
+ "size": 11,
+ "color": "accent",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.4
+ }
+ },
+ "pre": {
+ "font": "code",
+ "size": 11,
+ "color": "accent",
+ "background": "codeBg",
+ "padding": 16,
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.4
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "ul": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.5
+ },
+ "indent": 24,
+ "bullet": "square"
+ },
+ "ol": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.5
+ },
+ "indent": 24,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.5
+ }
+ },
+ "strong": {
+ "font": "body",
+ "bold": true,
+ "color": "accent"
+ },
+ "em": {
+ "font": "body",
+ "italic": true
+ },
+ "a": {
+ "font": "body",
+ "color": "accent",
+ "underline": true,
+ "bold": true
+ },
+ "table": {
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.4
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "heading",
+ "size": 12,
+ "color": "accent",
+ "bold": true,
+ "background": "codeBg",
+ "padding": 12,
+ "borderBottom": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "td": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "padding": 12,
+ "borderBottom": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 32,
+ "after": 32
+ },
+ "border": {
+ "color": "border",
+ "width": 2,
+ "style": "dotted"
+ }
+ },
+ "img": {
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 24
+ },
+ "border": {
+ "color": "border",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true,
+ "color": "border"
+ },
+ "sup": {
+ "font": "body",
+ "size": 9,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 9,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "codeBg",
+ "color": "accent"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.2
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 72,
+ "bottom": 72,
+ "left": 72,
+ "right": 72
+ },
+ "columns": 2,
+ "header": true,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/tech/code-editor.json b/src-tauri/templates/tech/code-editor.json
new file mode 100644
index 0000000..3a65ab6
--- /dev/null
+++ b/src-tauri/templates/tech/code-editor.json
@@ -0,0 +1,311 @@
+{
+ "id": "code-editor",
+ "name": "Code Editor",
+ "category": "tech",
+ "description": "Dark mode IDE aesthetic. Monospaced fonts with syntax-highlighting color palette.",
+ "vibe": "Technical, Dark, Coding",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Inconsolata:wght@400;700&family=Source+Code+Pro:wght@400;500;600;700&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Inconsolata",
+ "body": "Source Code Pro",
+ "code": "Source Code Pro"
+ },
+ "colors": {
+ "text": "ABB2BF",
+ "textSecondary": "98C379",
+ "background": "282C34",
+ "accent": "E06C75",
+ "border": "3E4451",
+ "codeBg": "2C313C",
+ "blockquoteBg": "2C313C",
+ "blockquoteBorder": "E06C75"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 26,
+ "color": "61AFEF",
+ "bold": true,
+ "align": "left",
+ "background": "background",
+ "padding": 20,
+ "spacing": {
+ "before": 48,
+ "after": 24,
+ "line": 1.2
+ }
+ },
+ "h2": {
+ "font": "body",
+ "size": 14,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 36,
+ "after": 18,
+ "line": 1.3
+ }
+ },
+ "h3": {
+ "font": "body",
+ "size": 12,
+ "color": "E5C07B",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.4
+ }
+ },
+ "h4": {
+ "font": "body",
+ "size": 11,
+ "color": "56B6C2",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 20,
+ "after": 10,
+ "line": 1.4
+ }
+ },
+ "h5": {
+ "font": "body",
+ "size": 10,
+ "color": "C678DD",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "h6": {
+ "font": "body",
+ "size": 10,
+ "color": "C678DD",
+ "bold": true,
+ "align": "left",
+ "uppercase": true,
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "align": "left",
+ "spacing": {
+ "before": 0,
+ "after": 16,
+ "line": 1.6
+ }
+ },
+ "blockquote": {
+ "font": "body",
+ "size": 11,
+ "color": "accent",
+ "italic": false,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.6
+ },
+ "padding": 16,
+ "border": {
+ "left": {
+ "color": "blockquoteBorder",
+ "width": 4,
+ "style": "solid"
+ }
+ },
+ "background": "blockquoteBg"
+ },
+ "code": {
+ "font": "code",
+ "size": 10,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.5
+ }
+ },
+ "pre": {
+ "font": "code",
+ "size": 10,
+ "color": "text",
+ "background": "codeBg",
+ "padding": 16,
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.5
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "ul": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 24,
+ "bullet": "circle"
+ },
+ "ol": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 24,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.6
+ }
+ },
+ "strong": {
+ "font": "body",
+ "bold": true,
+ "color": "E5C07B"
+ },
+ "em": {
+ "font": "body",
+ "italic": true
+ },
+ "a": {
+ "font": "body",
+ "color": "61AFEF",
+ "underline": true,
+ "bold": true
+ },
+ "table": {
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.5
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "bold": true,
+ "background": "codeBg",
+ "padding": 12,
+ "borderBottom": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "td": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "padding": 12,
+ "borderBottom": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 32,
+ "after": 32
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "img": {
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 24
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true,
+ "color": "5C6370"
+ },
+ "sup": {
+ "font": "body",
+ "size": 9,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 9,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "codeBg",
+ "color": "E5C07B"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 10,
+ "color": "5C6370",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 10,
+ "color": "5C6370",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.2
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 72,
+ "bottom": 72,
+ "left": 72,
+ "right": 72
+ },
+ "columns": 1,
+ "header": true,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/tech/crypto-futurism.json b/src-tauri/templates/tech/crypto-futurism.json
new file mode 100644
index 0000000..7e68ab7
--- /dev/null
+++ b/src-tauri/templates/tech/crypto-futurism.json
@@ -0,0 +1,311 @@
+{
+ "id": "crypto-futurism",
+ "name": "Crypto Futurism",
+ "category": "tech",
+ "description": "Cutting-edge design for blockchain and cryptocurrency content. Dark themes with electric accents.",
+ "vibe": "Futuristic, Digital, Cutting-edge",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Audiowide&family=Rajdhani:wght@400;500;600;700&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Audiowide",
+ "body": "Rajdhani",
+ "code": "Rajdhani"
+ },
+ "colors": {
+ "text": "C9D1D9",
+ "textSecondary": "58A6FF",
+ "background": "0D1117",
+ "accent": "00D4AA",
+ "border": "30363D",
+ "codeBg": "161B22",
+ "blockquoteBg": "21262D",
+ "blockquoteBorder": "00D4AA"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 26,
+ "color": "accent",
+ "bold": false,
+ "align": "left",
+ "background": "background",
+ "padding": 20,
+ "spacing": {
+ "before": 48,
+ "after": 24,
+ "line": 1.2
+ }
+ },
+ "h2": {
+ "font": "body",
+ "size": 16,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 36,
+ "after": 18,
+ "line": 1.3
+ }
+ },
+ "h3": {
+ "font": "body",
+ "size": 14,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.4
+ }
+ },
+ "h4": {
+ "font": "body",
+ "size": 12,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 20,
+ "after": 10,
+ "line": 1.4
+ }
+ },
+ "h5": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "h6": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "uppercase": true,
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "align": "left",
+ "spacing": {
+ "before": 0,
+ "after": 16,
+ "line": 1.6
+ }
+ },
+ "blockquote": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "italic": false,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.6
+ },
+ "padding": 16,
+ "border": {
+ "left": {
+ "color": "blockquoteBorder",
+ "width": 4,
+ "style": "solid"
+ }
+ },
+ "background": "blockquoteBg"
+ },
+ "code": {
+ "font": "code",
+ "size": 10,
+ "color": "accent",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.5
+ }
+ },
+ "pre": {
+ "font": "code",
+ "size": 10,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "padding": 16,
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.5
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "ul": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 24,
+ "bullet": "circle"
+ },
+ "ol": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 24,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.6
+ }
+ },
+ "strong": {
+ "font": "body",
+ "bold": true,
+ "color": "accent"
+ },
+ "em": {
+ "font": "body",
+ "italic": true
+ },
+ "a": {
+ "font": "body",
+ "color": "textSecondary",
+ "underline": true,
+ "bold": true
+ },
+ "table": {
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.5
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "bold": true,
+ "background": "codeBg",
+ "padding": 12,
+ "borderBottom": {
+ "color": "accent",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "td": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "padding": 12,
+ "borderBottom": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 32,
+ "after": 32
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "img": {
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 24
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true,
+ "color": "border"
+ },
+ "sup": {
+ "font": "body",
+ "size": 9,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 9,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "codeBg",
+ "color": "accent"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.2
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 72,
+ "bottom": 72,
+ "left": 72,
+ "right": 72
+ },
+ "columns": 2,
+ "header": true,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/tech/cybersecurity.json b/src-tauri/templates/tech/cybersecurity.json
new file mode 100644
index 0000000..76ad38a
--- /dev/null
+++ b/src-tauri/templates/tech/cybersecurity.json
@@ -0,0 +1,311 @@
+{
+ "id": "cybersecurity",
+ "name": "Cybersecurity",
+ "category": "tech",
+ "description": "High-security design for infosec and cybersecurity. Matrix-inspired with threat-level colors.",
+ "vibe": "Secure, Technical, Alert",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Share+Tech+Mono&family=Exo+2:wght@400;500;600;700&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Exo 2",
+ "body": "Share Tech Mono",
+ "code": "Share Tech Mono"
+ },
+ "colors": {
+ "text": "B0BEC5",
+ "textSecondary": "00E676",
+ "background": "0D0D0D",
+ "accent": "00E676",
+ "border": "1A1A1A",
+ "codeBg": "1A1A1A",
+ "blockquoteBg": "1A1A1A",
+ "blockquoteBorder": "00E676"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 26,
+ "color": "accent",
+ "bold": true,
+ "align": "left",
+ "background": "background",
+ "padding": 20,
+ "spacing": {
+ "before": 48,
+ "after": 24,
+ "line": 1.2
+ }
+ },
+ "h2": {
+ "font": "heading",
+ "size": 14,
+ "color": "accent",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 36,
+ "after": 18,
+ "line": 1.3
+ }
+ },
+ "h3": {
+ "font": "heading",
+ "size": 12,
+ "color": "accent",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.4
+ }
+ },
+ "h4": {
+ "font": "heading",
+ "size": 11,
+ "color": "accent",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 20,
+ "after": 10,
+ "line": 1.4
+ }
+ },
+ "h5": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "h6": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "uppercase": true,
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 9,
+ "color": "text",
+ "align": "left",
+ "spacing": {
+ "before": 0,
+ "after": 16,
+ "line": 1.6
+ }
+ },
+ "blockquote": {
+ "font": "body",
+ "size": 9,
+ "color": "text",
+ "italic": false,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.6
+ },
+ "padding": 16,
+ "border": {
+ "left": {
+ "color": "blockquoteBorder",
+ "width": 4,
+ "style": "solid"
+ }
+ },
+ "background": "blockquoteBg"
+ },
+ "code": {
+ "font": "code",
+ "size": 9,
+ "color": "accent",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.5
+ }
+ },
+ "pre": {
+ "font": "code",
+ "size": 9,
+ "color": "text",
+ "background": "codeBg",
+ "padding": 16,
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.5
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "ul": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 24,
+ "bullet": "square"
+ },
+ "ol": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 24,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 9,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.6
+ }
+ },
+ "strong": {
+ "font": "body",
+ "bold": true,
+ "color": "accent"
+ },
+ "em": {
+ "font": "body",
+ "italic": true
+ },
+ "a": {
+ "font": "body",
+ "color": "accent",
+ "underline": true,
+ "bold": true
+ },
+ "table": {
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.5
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "heading",
+ "size": 10,
+ "color": "accent",
+ "bold": true,
+ "background": "codeBg",
+ "padding": 12,
+ "borderBottom": {
+ "color": "accent",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "td": {
+ "font": "body",
+ "size": 9,
+ "color": "text",
+ "padding": 12,
+ "borderBottom": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 32,
+ "after": 32
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "img": {
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 24
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true,
+ "color": "border"
+ },
+ "sup": {
+ "font": "body",
+ "size": 8,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 8,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "codeBg",
+ "color": "accent"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 9,
+ "color": "text",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 9,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.2
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 72,
+ "bottom": 72,
+ "left": 72,
+ "right": 72
+ },
+ "columns": 2,
+ "header": true,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/tech/data-analytics.json b/src-tauri/templates/tech/data-analytics.json
new file mode 100644
index 0000000..97b788b
--- /dev/null
+++ b/src-tauri/templates/tech/data-analytics.json
@@ -0,0 +1,309 @@
+{
+ "id": "data-analytics",
+ "name": "Data Analytics",
+ "category": "tech",
+ "description": "Clean design for data science and analytics content. Precise typography optimized for charts and metrics.",
+ "vibe": "Analytical, Clean, Data-driven",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Overpass:wght@400;600;700&family=Overpass+Mono:wght@400;600&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Overpass",
+ "body": "Overpass",
+ "code": "Overpass Mono"
+ },
+ "colors": {
+ "text": "475569",
+ "textSecondary": "3730A3",
+ "background": "FFFFFF",
+ "accent": "0F172A",
+ "border": "E2E8F0",
+ "codeBg": "F1F5F9",
+ "blockquoteBg": "F1F5F9",
+ "blockquoteBorder": "3730A3"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 26,
+ "color": "0F172A",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 48,
+ "after": 24,
+ "line": 1.2
+ }
+ },
+ "h2": {
+ "font": "heading",
+ "size": 14,
+ "color": "3730A3",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 36,
+ "after": 18,
+ "line": 1.3
+ }
+ },
+ "h3": {
+ "font": "heading",
+ "size": 12,
+ "color": "3730A3",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.4
+ }
+ },
+ "h4": {
+ "font": "heading",
+ "size": 11,
+ "color": "0F172A",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 20,
+ "after": 10,
+ "line": 1.4
+ }
+ },
+ "h5": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "h6": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "uppercase": true,
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "align": "left",
+ "spacing": {
+ "before": 0,
+ "after": 16,
+ "line": 1.6
+ }
+ },
+ "blockquote": {
+ "font": "code",
+ "size": 9,
+ "color": "text",
+ "italic": false,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.6
+ },
+ "padding": 16,
+ "border": {
+ "left": {
+ "color": "blockquoteBorder",
+ "width": 4,
+ "style": "solid"
+ }
+ },
+ "background": "blockquoteBg"
+ },
+ "code": {
+ "font": "code",
+ "size": 10,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.5
+ }
+ },
+ "pre": {
+ "font": "code",
+ "size": 10,
+ "color": "text",
+ "background": "codeBg",
+ "padding": 16,
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.5
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "ul": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 24,
+ "bullet": "circle"
+ },
+ "ol": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 24,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.6
+ }
+ },
+ "strong": {
+ "font": "body",
+ "bold": true,
+ "color": "0F172A"
+ },
+ "em": {
+ "font": "body",
+ "italic": true
+ },
+ "a": {
+ "font": "body",
+ "color": "3730A3",
+ "underline": true,
+ "bold": true
+ },
+ "table": {
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.5
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "heading",
+ "size": 10,
+ "color": "0F172A",
+ "bold": true,
+ "background": "codeBg",
+ "padding": 12,
+ "borderBottom": {
+ "color": "3730A3",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "td": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "padding": 12,
+ "borderBottom": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 32,
+ "after": 32
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "img": {
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 24
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true,
+ "color": "border"
+ },
+ "sup": {
+ "font": "body",
+ "size": 9,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 9,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "codeBg",
+ "color": "3730A3"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.2
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 72,
+ "bottom": 72,
+ "left": 72,
+ "right": 72
+ },
+ "columns": 2,
+ "header": true,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/tech/deep-sea-sub.json b/src-tauri/templates/tech/deep-sea-sub.json
new file mode 100644
index 0000000..9523060
--- /dev/null
+++ b/src-tauri/templates/tech/deep-sea-sub.json
@@ -0,0 +1,318 @@
+{
+ "id": "deep-sea-sub",
+ "name": "Deep Sea Sub",
+ "category": "nature",
+ "description": "Bioluminescent abyss. Deepest navy backgrounds with glowing cyan/purple text.",
+ "vibe": "Dark, Underwater, Glowing",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Abel&family=Rajdhani:wght@400;700&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Rajdhani",
+ "body": "Abel",
+ "code": "Rajdhani"
+ },
+ "colors": {
+ "text": "B2EBF2",
+ "textSecondary": "00E5FF",
+ "background": "000051",
+ "accent": "E040FB",
+ "border": "00B8D4",
+ "codeBg": "1A237E",
+ "blockquoteBg": "1A237E",
+ "blockquoteBorder": "00E5FF"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 36,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "center",
+ "background": "linear-gradient(135deg, #1A237E 0%, #000051 100%)",
+ "padding": 24,
+ "border": {
+ "color": "textSecondary",
+ "width": 1,
+ "style": "solid"
+ },
+ "borderRadius": 8,
+ "spacing": {
+ "before": 48,
+ "after": 24,
+ "line": 1.2
+ }
+ },
+ "h2": {
+ "font": "body",
+ "size": 20,
+ "color": "accent",
+ "bold": true,
+ "align": "center",
+ "spacing": {
+ "before": 36,
+ "after": 18,
+ "line": 1.3
+ }
+ },
+ "h3": {
+ "font": "body",
+ "size": 16,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.4
+ }
+ },
+ "h4": {
+ "font": "body",
+ "size": 14,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "center",
+ "spacing": {
+ "before": 20,
+ "after": 10,
+ "line": 1.4
+ }
+ },
+ "h5": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "bold": true,
+ "align": "center",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "h6": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "bold": true,
+ "align": "center",
+ "uppercase": true,
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "align": "center",
+ "spacing": {
+ "before": 0,
+ "after": 16,
+ "line": 1.6
+ }
+ },
+ "blockquote": {
+ "font": "body",
+ "size": 12,
+ "color": "E0F7FA",
+ "italic": true,
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.6
+ },
+ "padding": 20,
+ "border": {
+ "color": "blockquoteBorder",
+ "width": 1,
+ "style": "solid"
+ },
+ "borderRadius": 8,
+ "background": "rgba(0, 229, 255, 0.1)"
+ },
+ "code": {
+ "font": "code",
+ "size": 12,
+ "color": "accent",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.5
+ }
+ },
+ "pre": {
+ "font": "code",
+ "size": 12,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "padding": 16,
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.5
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ },
+ "borderRadius": 8
+ },
+ "ul": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 24,
+ "bullet": "circle"
+ },
+ "ol": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 24,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.6
+ }
+ },
+ "strong": {
+ "font": "body",
+ "bold": true,
+ "color": "accent"
+ },
+ "em": {
+ "font": "body",
+ "italic": true
+ },
+ "a": {
+ "font": "body",
+ "color": "accent",
+ "underline": true,
+ "bold": true
+ },
+ "table": {
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.5
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "heading",
+ "size": 12,
+ "color": "textSecondary",
+ "bold": true,
+ "background": "codeBg",
+ "padding": 12,
+ "borderBottom": {
+ "color": "accent",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "td": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "padding": 12,
+ "borderBottom": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 32,
+ "after": 32
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "img": {
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 24
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ },
+ "borderRadius": 8
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true,
+ "color": "border"
+ },
+ "sup": {
+ "font": "body",
+ "size": 10,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 10,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "codeBg",
+ "color": "accent"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.2
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 72,
+ "bottom": 72,
+ "left": 72,
+ "right": 72
+ },
+ "columns": 1,
+ "header": true,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/tech/desert-sands.json b/src-tauri/templates/tech/desert-sands.json
new file mode 100644
index 0000000..0eef0ba
--- /dev/null
+++ b/src-tauri/templates/tech/desert-sands.json
@@ -0,0 +1,315 @@
+{
+ "id": "desert-sands",
+ "name": "Desert Sands",
+ "category": "nature",
+ "description": "Dune aesthetic. Warm beige backgrounds with wind-swept, eroded typefaces.",
+ "vibe": "Warm, Sandy, Soft",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Cinzel&family=Fauna+One&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Cinzel",
+ "body": "Fauna One",
+ "code": "Fauna One"
+ },
+ "colors": {
+ "text": "4E342E",
+ "textSecondary": "5D4037",
+ "background": "F3E5AB",
+ "accent": "8D6E63",
+ "border": "A1887F",
+ "codeBg": "EFEBE9",
+ "blockquoteBg": "F3E5AB",
+ "blockquoteBorder": "5D4037"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 36,
+ "color": "textSecondary",
+ "bold": false,
+ "align": "center",
+ "letterSpacing": 2,
+ "spacing": {
+ "before": 48,
+ "after": 24,
+ "line": 1.2
+ }
+ },
+ "h2": {
+ "font": "body",
+ "size": 16,
+ "color": "accent",
+ "bold": true,
+ "align": "center",
+ "spacing": {
+ "before": 36,
+ "after": 18,
+ "line": 1.3
+ }
+ },
+ "h3": {
+ "font": "body",
+ "size": 14,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.4
+ }
+ },
+ "h4": {
+ "font": "body",
+ "size": 12,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "center",
+ "spacing": {
+ "before": 20,
+ "after": 10,
+ "line": 1.4
+ }
+ },
+ "h5": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "bold": true,
+ "align": "center",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "h6": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "bold": true,
+ "align": "center",
+ "uppercase": true,
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "align": "center",
+ "spacing": {
+ "before": 0,
+ "after": 16,
+ "line": 1.6
+ }
+ },
+ "blockquote": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "italic": true,
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.6
+ },
+ "padding": 20,
+ "border": {
+ "top": {
+ "color": "blockquoteBorder",
+ "width": 1,
+ "style": "solid"
+ },
+ "bottom": {
+ "color": "blockquoteBorder",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "background": "blockquoteBg"
+ },
+ "code": {
+ "font": "code",
+ "size": 11,
+ "color": "accent",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.5
+ }
+ },
+ "pre": {
+ "font": "code",
+ "size": 11,
+ "color": "text",
+ "background": "codeBg",
+ "padding": 16,
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.5
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "ul": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 24,
+ "bullet": "circle"
+ },
+ "ol": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 24,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.6
+ }
+ },
+ "strong": {
+ "font": "body",
+ "bold": true,
+ "color": "textSecondary"
+ },
+ "em": {
+ "font": "body",
+ "italic": true
+ },
+ "a": {
+ "font": "body",
+ "color": "accent",
+ "underline": true,
+ "bold": true
+ },
+ "table": {
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.5
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "heading",
+ "size": 11,
+ "color": "textSecondary",
+ "bold": true,
+ "background": "codeBg",
+ "padding": 12,
+ "borderBottom": {
+ "color": "accent",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "td": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "padding": 12,
+ "borderBottom": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 32,
+ "after": 32
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "img": {
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 24
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true,
+ "color": "border"
+ },
+ "sup": {
+ "font": "body",
+ "size": 9,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 9,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "codeBg",
+ "color": "accent"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.2
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 72,
+ "bottom": 72,
+ "left": 72,
+ "right": 72
+ },
+ "columns": 2,
+ "header": true,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/tech/frutiger-aero.json b/src-tauri/templates/tech/frutiger-aero.json
new file mode 100644
index 0000000..f00d882
--- /dev/null
+++ b/src-tauri/templates/tech/frutiger-aero.json
@@ -0,0 +1,313 @@
+{
+ "id": "frutiger-aero",
+ "name": "Frutiger Aero",
+ "category": "tech",
+ "description": "Mid-2000s tech aesthetic. Glossy textures, humanist sans-serifs, and optimistic skeuomorphic blues and greens.",
+ "vibe": "Glossy, Optimistic, 2000s",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Varela+Round&family=M+PLUS+Rounded+1c:wght@400;500;700&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Varela Round",
+ "body": "M PLUS Rounded 1c",
+ "code": "M PLUS Rounded 1c"
+ },
+ "colors": {
+ "text": "546E7A",
+ "textSecondary": "0288D1",
+ "background": "FFFFFF",
+ "accent": "7CB342",
+ "border": "B3E5FC",
+ "codeBg": "E1F5FE",
+ "blockquoteBg": "E0F7FA",
+ "blockquoteBorder": "B3E5FC"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 28,
+ "color": "textSecondary",
+ "bold": false,
+ "align": "left",
+ "background": "linear-gradient(to right, #E1F5FE, #FFFFFF)",
+ "padding": 10,
+ "borderRadius": 10,
+ "spacing": {
+ "before": 48,
+ "after": 24,
+ "line": 1.2
+ }
+ },
+ "h2": {
+ "font": "body",
+ "size": 15,
+ "color": "accent",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 36,
+ "after": 18,
+ "line": 1.3
+ }
+ },
+ "h3": {
+ "font": "body",
+ "size": 13,
+ "color": "accent",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.4
+ }
+ },
+ "h4": {
+ "font": "body",
+ "size": 12,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 20,
+ "after": 10,
+ "line": 1.4
+ }
+ },
+ "h5": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "h6": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "uppercase": true,
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "align": "left",
+ "spacing": {
+ "before": 0,
+ "after": 16,
+ "line": 1.6
+ }
+ },
+ "blockquote": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "italic": false,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.6
+ },
+ "padding": 16,
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ },
+ "borderRadius": 15,
+ "background": "linear-gradient(180deg, #FFFFFF 0%, #E0F7FA 100%)"
+ },
+ "code": {
+ "font": "code",
+ "size": 10,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.5
+ }
+ },
+ "pre": {
+ "font": "code",
+ "size": 10,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "padding": 16,
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.5
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ },
+ "borderRadius": 10
+ },
+ "ul": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 24,
+ "bullet": "circle"
+ },
+ "ol": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 24,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.6
+ }
+ },
+ "strong": {
+ "font": "body",
+ "bold": true,
+ "color": "textSecondary"
+ },
+ "em": {
+ "font": "body",
+ "italic": true
+ },
+ "a": {
+ "font": "body",
+ "color": "textSecondary",
+ "underline": true,
+ "bold": true
+ },
+ "table": {
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.5
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "heading",
+ "size": 11,
+ "color": "textSecondary",
+ "bold": true,
+ "background": "codeBg",
+ "padding": 12,
+ "borderBottom": {
+ "color": "accent",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "td": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "padding": 12,
+ "borderBottom": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 32,
+ "after": 32
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "img": {
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 24
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ },
+ "borderRadius": 10
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true,
+ "color": "border"
+ },
+ "sup": {
+ "font": "body",
+ "size": 9,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 9,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "codeBg",
+ "color": "accent"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.2
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 72,
+ "bottom": 72,
+ "left": 72,
+ "right": 72
+ },
+ "columns": 2,
+ "header": true,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/tech/game-handheld.json b/src-tauri/templates/tech/game-handheld.json
new file mode 100644
index 0000000..aca54bc
--- /dev/null
+++ b/src-tauri/templates/tech/game-handheld.json
@@ -0,0 +1,321 @@
+{
+ "id": "game-handheld",
+ "name": "Game Handheld",
+ "category": "gaming",
+ "description": "Classic 90s handheld console. Four shades of olive green pixel art style.",
+ "vibe": "Pixel, Green, Retro",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Press+Start+2P&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Press Start 2P",
+ "body": "Press Start 2P",
+ "code": "Press Start 2P"
+ },
+ "colors": {
+ "text": "0f380f",
+ "textSecondary": "306230",
+ "background": "9bbc0f",
+ "accent": "306230",
+ "border": "0f380f",
+ "codeBg": "8bac0f",
+ "blockquoteBg": "8bac0f",
+ "blockquoteBorder": "306230"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 20,
+ "color": "text",
+ "bold": false,
+ "align": "center",
+ "background": "codeBg",
+ "padding": 20,
+ "border": {
+ "color": "border",
+ "width": 4,
+ "style": "solid"
+ },
+ "spacing": {
+ "before": 48,
+ "after": 24,
+ "line": 1.2
+ }
+ },
+ "h2": {
+ "font": "heading",
+ "size": 12,
+ "color": "textSecondary",
+ "bold": false,
+ "align": "left",
+ "border": {
+ "bottom": {
+ "color": "textSecondary",
+ "width": 4,
+ "style": "solid"
+ }
+ },
+ "spacing": {
+ "before": 32,
+ "after": 16,
+ "line": 1.3
+ }
+ },
+ "h3": {
+ "font": "heading",
+ "size": 11,
+ "color": "textSecondary",
+ "bold": false,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.4
+ }
+ },
+ "h4": {
+ "font": "heading",
+ "size": 10,
+ "color": "textSecondary",
+ "bold": false,
+ "align": "left",
+ "spacing": {
+ "before": 20,
+ "after": 10,
+ "line": 1.4
+ }
+ },
+ "h5": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "bold": false,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "h6": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "bold": false,
+ "align": "left",
+ "uppercase": true,
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "align": "left",
+ "spacing": {
+ "before": 0,
+ "after": 16,
+ "line": 1.6
+ }
+ },
+ "blockquote": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "italic": false,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.6
+ },
+ "padding": 16,
+ "border": {
+ "color": "blockquoteBorder",
+ "width": 2,
+ "style": "solid"
+ },
+ "background": "blockquoteBg"
+ },
+ "code": {
+ "font": "code",
+ "size": 10,
+ "color": "text",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.5
+ }
+ },
+ "pre": {
+ "font": "code",
+ "size": 10,
+ "color": "text",
+ "background": "codeBg",
+ "padding": 16,
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.5
+ },
+ "border": {
+ "color": "border",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "ul": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 24,
+ "bullet": "square"
+ },
+ "ol": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 24,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.6
+ }
+ },
+ "strong": {
+ "font": "body",
+ "bold": false,
+ "color": "textSecondary"
+ },
+ "em": {
+ "font": "body",
+ "italic": false
+ },
+ "a": {
+ "font": "body",
+ "color": "textSecondary",
+ "underline": true,
+ "bold": false
+ },
+ "table": {
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.5
+ },
+ "border": {
+ "color": "border",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "heading",
+ "size": 10,
+ "color": "textSecondary",
+ "bold": false,
+ "background": "codeBg",
+ "padding": 12,
+ "borderBottom": {
+ "color": "accent",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "td": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "padding": 12,
+ "borderBottom": {
+ "color": "border",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 32,
+ "after": 32
+ },
+ "border": {
+ "color": "border",
+ "width": 4,
+ "style": "solid"
+ }
+ },
+ "img": {
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 24
+ },
+ "border": {
+ "color": "border",
+ "width": 4,
+ "style": "solid"
+ }
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true,
+ "color": "border"
+ },
+ "sup": {
+ "font": "body",
+ "size": 9,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 9,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "codeBg",
+ "color": "textSecondary"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.2
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 72,
+ "bottom": 72,
+ "left": 72,
+ "right": 72
+ },
+ "columns": 1,
+ "header": true,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/tech/hologram-blue.json b/src-tauri/templates/tech/hologram-blue.json
new file mode 100644
index 0000000..2da460e
--- /dev/null
+++ b/src-tauri/templates/tech/hologram-blue.json
@@ -0,0 +1,320 @@
+{
+ "id": "hologram-blue",
+ "name": "Hologram Blue",
+ "category": "sci-fi",
+ "description": "Star Wars style communications. Translucent flickering blue text on dark voids.",
+ "vibe": "Holographic, Futuristic, Translucent",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Audiowide&family=Rajdhani:wght@400;600;700&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Audiowide",
+ "body": "Rajdhani",
+ "code": "Rajdhani"
+ },
+ "colors": {
+ "text": "B3E5FC",
+ "textSecondary": "00B0FF",
+ "background": "000000",
+ "accent": "80D8FF",
+ "border": "0288D1",
+ "codeBg": "01579B",
+ "blockquoteBg": "000000",
+ "blockquoteBorder": "00B0FF"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 30,
+ "color": "textSecondary",
+ "bold": false,
+ "align": "center",
+ "spacing": {
+ "before": 48,
+ "after": 24,
+ "line": 1.2
+ }
+ },
+ "h2": {
+ "font": "body",
+ "size": 18,
+ "color": "accent",
+ "bold": true,
+ "align": "center",
+ "border": {
+ "top": {
+ "color": "textSecondary",
+ "width": 1,
+ "style": "solid"
+ },
+ "bottom": {
+ "color": "textSecondary",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "padding": 5,
+ "spacing": {
+ "before": 36,
+ "after": 18,
+ "line": 1.3
+ }
+ },
+ "h3": {
+ "font": "body",
+ "size": 16,
+ "color": "accent",
+ "bold": true,
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.4
+ }
+ },
+ "h4": {
+ "font": "body",
+ "size": 14,
+ "color": "accent",
+ "bold": true,
+ "align": "center",
+ "spacing": {
+ "before": 20,
+ "after": 10,
+ "line": 1.4
+ }
+ },
+ "h5": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "bold": true,
+ "align": "center",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "h6": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "bold": true,
+ "align": "center",
+ "uppercase": true,
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "align": "center",
+ "spacing": {
+ "before": 0,
+ "after": 16,
+ "line": 1.6
+ }
+ },
+ "blockquote": {
+ "font": "body",
+ "size": 12,
+ "color": "E1F5FE",
+ "italic": false,
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.6
+ },
+ "padding": 16,
+ "border": {
+ "color": "blockquoteBorder",
+ "width": 1,
+ "style": "dashed"
+ },
+ "background": "blockquoteBg"
+ },
+ "code": {
+ "font": "code",
+ "size": 12,
+ "color": "accent",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.5
+ }
+ },
+ "pre": {
+ "font": "code",
+ "size": 12,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "padding": 16,
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.5
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "dashed"
+ }
+ },
+ "ul": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 24,
+ "bullet": "circle"
+ },
+ "ol": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 24,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.6
+ }
+ },
+ "strong": {
+ "font": "body",
+ "bold": true,
+ "color": "accent"
+ },
+ "em": {
+ "font": "body",
+ "italic": true
+ },
+ "a": {
+ "font": "body",
+ "color": "accent",
+ "underline": true,
+ "bold": true
+ },
+ "table": {
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.5
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "dashed"
+ }
+ },
+ "th": {
+ "font": "heading",
+ "size": 12,
+ "color": "textSecondary",
+ "bold": true,
+ "background": "codeBg",
+ "padding": 12,
+ "borderBottom": {
+ "color": "accent",
+ "width": 2,
+ "style": "dashed"
+ }
+ },
+ "td": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "padding": 12,
+ "borderBottom": {
+ "color": "border",
+ "width": 1,
+ "style": "dashed"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 32,
+ "after": 32
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "dashed"
+ }
+ },
+ "img": {
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 24
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "dashed"
+ }
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true,
+ "color": "border"
+ },
+ "sup": {
+ "font": "body",
+ "size": 10,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 10,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "codeBg",
+ "color": "accent"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.2
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 72,
+ "bottom": 72,
+ "left": 72,
+ "right": 72
+ },
+ "columns": 1,
+ "header": true,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/tech/industrial-blueprint.json b/src-tauri/templates/tech/industrial-blueprint.json
new file mode 100644
index 0000000..ca96614
--- /dev/null
+++ b/src-tauri/templates/tech/industrial-blueprint.json
@@ -0,0 +1,310 @@
+{
+ "id": "industrial-blueprint",
+ "name": "Industrial Blueprint",
+ "category": "technical",
+ "description": "Engineering-inspired design reminiscent of technical blueprints. Precise typography with drafting aesthetics.',",
+ "vibe": "Technical, Precise, Engineering",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Share+Tech+Mono&family=Titillium+Web:wght@400;600;700&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Titillium Web",
+ "body": "Share Tech Mono",
+ "code": "Share Tech Mono"
+ },
+ "colors": {
+ "text": "2C4A6B",
+ "textSecondary": "1A3A5C",
+ "background": "FFFFFF",
+ "accent": "1A3A5C",
+ "border": "B0C4DE",
+ "codeBg": "E8F4FC",
+ "blockquoteBg": "E8F4FC",
+ "blockquoteBorder": "1A3A5C"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 24,
+ "color": "FFFFFF",
+ "bold": true,
+ "align": "left",
+ "background": "accent",
+ "padding": 20,
+ "uppercase": true,
+ "spacing": {
+ "before": 48,
+ "after": 24,
+ "line": 1.2
+ }
+ },
+ "h2": {
+ "font": "heading",
+ "size": 14,
+ "color": "accent",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 36,
+ "after": 18,
+ "line": 1.3
+ }
+ },
+ "h3": {
+ "font": "heading",
+ "size": 12,
+ "color": "accent",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.4
+ }
+ },
+ "h4": {
+ "font": "heading",
+ "size": 11,
+ "color": "accent",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 20,
+ "after": 10,
+ "line": 1.4
+ }
+ },
+ "h5": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "h6": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "uppercase": true,
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 9,
+ "color": "text",
+ "align": "left",
+ "spacing": {
+ "before": 0,
+ "after": 16,
+ "line": 1.7
+ }
+ },
+ "blockquote": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "italic": false,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.7
+ },
+ "padding": 16,
+ "border": {
+ "color": "blockquoteBorder",
+ "width": 1,
+ "style": "dashed"
+ },
+ "background": "blockquoteBg"
+ },
+ "code": {
+ "font": "code",
+ "size": 9,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.5
+ }
+ },
+ "pre": {
+ "font": "code",
+ "size": 9,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "padding": 16,
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.5
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "ul": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.7
+ },
+ "indent": 24,
+ "bullet": "square"
+ },
+ "ol": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.7
+ },
+ "indent": 24,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 9,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.7
+ }
+ },
+ "strong": {
+ "font": "body",
+ "bold": true,
+ "color": "accent"
+ },
+ "em": {
+ "font": "body",
+ "italic": true
+ },
+ "a": {
+ "font": "body",
+ "color": "accent",
+ "underline": true,
+ "bold": true
+ },
+ "table": {
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.5
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "heading",
+ "size": 10,
+ "color": "textSecondary",
+ "bold": true,
+ "background": "codeBg",
+ "padding": 12,
+ "borderBottom": {
+ "color": "accent",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "td": {
+ "font": "body",
+ "size": 9,
+ "color": "text",
+ "padding": 12,
+ "borderBottom": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 32,
+ "after": 32
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "img": {
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 24
+ },
+ "border": {
+ "color": "border",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true,
+ "color": "border"
+ },
+ "sup": {
+ "font": "body",
+ "size": 8,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 8,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "codeBg",
+ "color": "accent"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 9,
+ "color": "textSecondary",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 9,
+ "color": "textSecondary",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.2
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 72,
+ "bottom": 72,
+ "left": 72,
+ "right": 72
+ },
+ "columns": 2,
+ "header": true,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/tech/marine-biology.json b/src-tauri/templates/tech/marine-biology.json
new file mode 100644
index 0000000..52093ee
--- /dev/null
+++ b/src-tauri/templates/tech/marine-biology.json
@@ -0,0 +1,311 @@
+{
+ "id": "marine-biology",
+ "name": "Marine Biology",
+ "category": "science",
+ "description": "Ocean-inspired design for marine science and aquatic content. Deep blues with flowing elegance.",
+ "vibe": "Oceanic, Scientific, Flowing",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Archivo:wght@400;500;600&family=Lora:wght@400;500;600;700&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Lora",
+ "body": "Archivo",
+ "code": "Archivo"
+ },
+ "colors": {
+ "text": "334155",
+ "textSecondary": "0C4A6E",
+ "background": "FFFFFF",
+ "accent": "0369A1",
+ "border": "E0F2FE",
+ "codeBg": "F0F9FF",
+ "blockquoteBg": "E0F2FE",
+ "blockquoteBorder": "0EA5E9"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 26,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 48,
+ "after": 24,
+ "line": 1.2
+ }
+ },
+ "h2": {
+ "font": "body",
+ "size": 13,
+ "color": "accent",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 36,
+ "after": 18,
+ "line": 1.3
+ }
+ },
+ "h3": {
+ "font": "body",
+ "size": 12,
+ "color": "accent",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.4
+ }
+ },
+ "h4": {
+ "font": "body",
+ "size": 11,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 20,
+ "after": 10,
+ "line": 1.4
+ }
+ },
+ "h5": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "h6": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "uppercase": true,
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "align": "left",
+ "spacing": {
+ "before": 0,
+ "after": 16,
+ "line": 1.6
+ }
+ },
+ "blockquote": {
+ "font": "heading",
+ "size": 11,
+ "color": "textSecondary",
+ "italic": true,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.6
+ },
+ "padding": 16,
+ "border": {
+ "left": {
+ "color": "blockquoteBorder",
+ "width": 4,
+ "style": "solid"
+ }
+ },
+ "background": "blockquoteBg"
+ },
+ "code": {
+ "font": "code",
+ "size": 10,
+ "color": "accent",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.5
+ }
+ },
+ "pre": {
+ "font": "code",
+ "size": 10,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "padding": 16,
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.5
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ },
+ "borderRadius": 6
+ },
+ "ul": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 24,
+ "bullet": "circle"
+ },
+ "ol": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 24,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.6
+ }
+ },
+ "strong": {
+ "font": "body",
+ "bold": true,
+ "color": "textSecondary"
+ },
+ "em": {
+ "font": "body",
+ "italic": true
+ },
+ "a": {
+ "font": "body",
+ "color": "accent",
+ "underline": true,
+ "bold": true
+ },
+ "table": {
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.5
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "heading",
+ "size": 10,
+ "color": "textSecondary",
+ "bold": true,
+ "background": "codeBg",
+ "padding": 12,
+ "borderBottom": {
+ "color": "accent",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "td": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "padding": 12,
+ "borderBottom": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 32,
+ "after": 32
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "img": {
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 24
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ },
+ "borderRadius": 8
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true,
+ "color": "border"
+ },
+ "sup": {
+ "font": "body",
+ "size": 9,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 9,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "codeBg",
+ "color": "accent"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.2
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 72,
+ "bottom": 72,
+ "left": 72,
+ "right": 72
+ },
+ "columns": 2,
+ "header": true,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/tech/mars-rover.json b/src-tauri/templates/tech/mars-rover.json
new file mode 100644
index 0000000..5dfe740
--- /dev/null
+++ b/src-tauri/templates/tech/mars-rover.json
@@ -0,0 +1,318 @@
+{
+ "id": "mars-rover",
+ "name": "Mars Rover",
+ "category": "space",
+ "description": "Red planet exploration. Dusty orange and terracotta tones with functional technical type.",
+ "vibe": "Space, Dusty, Technical",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Orbitron&family=Exo:wght@400;700&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Orbitron",
+ "body": "Exo",
+ "code": "Exo"
+ },
+ "colors": {
+ "text": "3E2723",
+ "textSecondary": "BF360C",
+ "background": "FBE9E7",
+ "accent": "FF5722",
+ "border": "FF7043",
+ "codeBg": "FFCCBC",
+ "blockquoteBg": "FFCCBC",
+ "blockquoteBorder": "BF360C"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 30,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "border": {
+ "bottom": {
+ "color": "border",
+ "width": 4,
+ "style": "solid"
+ }
+ },
+ "padding": 12,
+ "spacing": {
+ "before": 48,
+ "after": 24,
+ "line": 1.2
+ }
+ },
+ "h2": {
+ "font": "body",
+ "size": 16,
+ "color": "E64A19",
+ "bold": true,
+ "align": "left",
+ "uppercase": true,
+ "spacing": {
+ "before": 36,
+ "after": 18,
+ "line": 1.3
+ }
+ },
+ "h3": {
+ "font": "body",
+ "size": 14,
+ "color": "E64A19",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.4
+ }
+ },
+ "h4": {
+ "font": "body",
+ "size": 12,
+ "color": "E64A19",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 20,
+ "after": 10,
+ "line": 1.4
+ }
+ },
+ "h5": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "h6": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "uppercase": true,
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "align": "left",
+ "spacing": {
+ "before": 0,
+ "after": 16,
+ "line": 1.6
+ }
+ },
+ "blockquote": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "italic": false,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.6
+ },
+ "padding": 16,
+ "border": {
+ "left": {
+ "color": "blockquoteBorder",
+ "width": 6,
+ "style": "solid"
+ }
+ },
+ "background": "blockquoteBg"
+ },
+ "code": {
+ "font": "code",
+ "size": 11,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.5
+ }
+ },
+ "pre": {
+ "font": "code",
+ "size": 11,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "padding": 16,
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.5
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "ul": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 24,
+ "bullet": "square"
+ },
+ "ol": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 24,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.6
+ }
+ },
+ "strong": {
+ "font": "body",
+ "bold": true,
+ "color": "textSecondary"
+ },
+ "em": {
+ "font": "body",
+ "italic": true
+ },
+ "a": {
+ "font": "body",
+ "color": "accent",
+ "underline": true,
+ "bold": true
+ },
+ "table": {
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.5
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "heading",
+ "size": 11,
+ "color": "textSecondary",
+ "bold": true,
+ "background": "codeBg",
+ "padding": 12,
+ "borderBottom": {
+ "color": "accent",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "td": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "padding": 12,
+ "borderBottom": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 32,
+ "after": 32
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "img": {
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 24
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true,
+ "color": "border"
+ },
+ "sup": {
+ "font": "body",
+ "size": 9,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 9,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "codeBg",
+ "color": "accent"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.2
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 72,
+ "bottom": 72,
+ "left": 72,
+ "right": 72
+ },
+ "columns": 2,
+ "header": true,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/tech/national-park-signage.json b/src-tauri/templates/tech/national-park-signage.json
new file mode 100644
index 0000000..7cdb901
--- /dev/null
+++ b/src-tauri/templates/tech/national-park-signage.json
@@ -0,0 +1,320 @@
+{
+ "id": "national-park-signage",
+ "name": "National Park Signage",
+ "category": "nature",
+ "description": "Routed wood sign aesthetic. Heavy rounded serifs with earthy brown and cream colors.",
+ "vibe": "Outdoors, Rustic, Official",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Crete+Round:ital@0;1&family=Lato:wght@400;700&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Crete Round",
+ "body": "Lato",
+ "code": "Lato"
+ },
+ "colors": {
+ "text": "212121",
+ "textSecondary": "3E2723",
+ "background": "FFFFFF",
+ "accent": "5D4037",
+ "border": "A1887F",
+ "codeBg": "EFEBE9",
+ "blockquoteBg": "EFEBE9",
+ "blockquoteBorder": "3E2723"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 32,
+ "color": "FFFFFF",
+ "bold": false,
+ "align": "left",
+ "background": "3E2723",
+ "padding": 16,
+ "border": {
+ "color": "5D4037",
+ "width": 2,
+ "style": "solid"
+ },
+ "borderRadius": 8,
+ "spacing": {
+ "before": 48,
+ "after": 24,
+ "line": 1.2
+ }
+ },
+ "h2": {
+ "font": "body",
+ "size": 16,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "uppercase": true,
+ "spacing": {
+ "before": 36,
+ "after": 18,
+ "line": 1.3
+ }
+ },
+ "h3": {
+ "font": "body",
+ "size": 14,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.4
+ }
+ },
+ "h4": {
+ "font": "body",
+ "size": 12,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 20,
+ "after": 10,
+ "line": 1.4
+ }
+ },
+ "h5": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "h6": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "uppercase": true,
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "align": "left",
+ "spacing": {
+ "before": 0,
+ "after": 16,
+ "line": 1.6
+ }
+ },
+ "blockquote": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "italic": false,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.6
+ },
+ "padding": 16,
+ "border": {
+ "left": {
+ "color": "blockquoteBorder",
+ "width": 6,
+ "style": "solid"
+ }
+ },
+ "background": "blockquoteBg"
+ },
+ "code": {
+ "font": "code",
+ "size": 11,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.5
+ }
+ },
+ "pre": {
+ "font": "code",
+ "size": 11,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "padding": 16,
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.5
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ },
+ "borderRadius": 4
+ },
+ "ul": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 24,
+ "bullet": "square"
+ },
+ "ol": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 24,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.6
+ }
+ },
+ "strong": {
+ "font": "body",
+ "bold": true,
+ "color": "textSecondary"
+ },
+ "em": {
+ "font": "body",
+ "italic": true
+ },
+ "a": {
+ "font": "body",
+ "color": "textSecondary",
+ "underline": true,
+ "bold": true
+ },
+ "table": {
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.5
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "heading",
+ "size": 11,
+ "color": "textSecondary",
+ "bold": true,
+ "background": "codeBg",
+ "padding": 12,
+ "borderBottom": {
+ "color": "accent",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "td": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "padding": 12,
+ "borderBottom": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 32,
+ "after": 32
+ },
+ "border": {
+ "color": "border",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "img": {
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 24
+ },
+ "border": {
+ "color": "border",
+ "width": 2,
+ "style": "solid"
+ },
+ "borderRadius": 4
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true,
+ "color": "border"
+ },
+ "sup": {
+ "font": "body",
+ "size": 9,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 9,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "codeBg",
+ "color": "accent"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.2
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 72,
+ "bottom": 72,
+ "left": 72,
+ "right": 72
+ },
+ "columns": 2,
+ "header": true,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/tech/neon-noir.json b/src-tauri/templates/tech/neon-noir.json
new file mode 100644
index 0000000..fa27682
--- /dev/null
+++ b/src-tauri/templates/tech/neon-noir.json
@@ -0,0 +1,309 @@
+{
+ "id": "neon-noir",
+ "name": "Neon Noir",
+ "category": "futuristic",
+ "description": "High-tech noir aesthetic. Ultra-thin, futuristic typography with glowing neon accents.",
+ "vibe": "Futuristic, Thin, Neon",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Megrim&family=Gruppo&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Megrim",
+ "body": "Gruppo",
+ "code": "Gruppo"
+ },
+ "colors": {
+ "text": "E0E0E0",
+ "textSecondary": "00E5FF",
+ "background": "121212",
+ "accent": "D500F9",
+ "border": "333333",
+ "codeBg": "1C1C1C",
+ "blockquoteBg": "000000",
+ "blockquoteBorder": "D500F9"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 36,
+ "color": "accent",
+ "bold": true,
+ "align": "left",
+ "background": "background",
+ "padding": 10,
+ "spacing": {
+ "before": 48,
+ "after": 24,
+ "line": 1.2
+ }
+ },
+ "h2": {
+ "font": "body",
+ "size": 18,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 36,
+ "after": 18,
+ "line": 1.3
+ }
+ },
+ "h3": {
+ "font": "body",
+ "size": 16,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.4
+ }
+ },
+ "h4": {
+ "font": "body",
+ "size": 14,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 20,
+ "after": 10,
+ "line": 1.4
+ }
+ },
+ "h5": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "h6": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "uppercase": true,
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "align": "left",
+ "spacing": {
+ "before": 0,
+ "after": 16,
+ "line": 1.6
+ }
+ },
+ "blockquote": {
+ "font": "body",
+ "size": 12,
+ "color": "accent",
+ "italic": false,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.6
+ },
+ "padding": 16,
+ "border": {
+ "color": "blockquoteBorder",
+ "width": 1,
+ "style": "solid"
+ },
+ "background": "blockquoteBg"
+ },
+ "code": {
+ "font": "code",
+ "size": 12,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.5
+ }
+ },
+ "pre": {
+ "font": "code",
+ "size": 12,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "padding": 16,
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.5
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "ul": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 24,
+ "bullet": "circle"
+ },
+ "ol": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 24,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.6
+ }
+ },
+ "strong": {
+ "font": "body",
+ "bold": true,
+ "color": "accent"
+ },
+ "em": {
+ "font": "body",
+ "italic": true
+ },
+ "a": {
+ "font": "body",
+ "color": "textSecondary",
+ "underline": true,
+ "bold": true
+ },
+ "table": {
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.5
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "heading",
+ "size": 12,
+ "color": "textSecondary",
+ "bold": true,
+ "background": "codeBg",
+ "padding": 12,
+ "borderBottom": {
+ "color": "accent",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "td": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "padding": 12,
+ "borderBottom": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 32,
+ "after": 32
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "img": {
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 24
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true,
+ "color": "border"
+ },
+ "sup": {
+ "font": "body",
+ "size": 10,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 10,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "codeBg",
+ "color": "accent"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 12,
+ "color": "textSecondary",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 12,
+ "color": "textSecondary",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.2
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 72,
+ "bottom": 72,
+ "left": 72,
+ "right": 72
+ },
+ "columns": 2,
+ "header": true,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/tech/schematic-diagram.json b/src-tauri/templates/tech/schematic-diagram.json
new file mode 100644
index 0000000..729dc02
--- /dev/null
+++ b/src-tauri/templates/tech/schematic-diagram.json
@@ -0,0 +1,316 @@
+{
+ "id": "schematic-diagram",
+ "name": "Schematic Diagram",
+ "category": "technical",
+ "description": "Patent drawing style. Thin, precise lines on stark white with serif lettering.",
+ "vibe": "Technical, Precise, Patent",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Courier+Prime&family=Libre+Baskerville:wght@400;700&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Libre Baskerville",
+ "body": "Courier Prime",
+ "code": "Courier Prime"
+ },
+ "colors": {
+ "text": "212121",
+ "textSecondary": "000000",
+ "background": "FFFFFF",
+ "accent": "000000",
+ "border": "000000",
+ "codeBg": "F5F5F5",
+ "blockquoteBg": "FFFFFF",
+ "blockquoteBorder": "000000"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 28,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "center",
+ "uppercase": true,
+ "spacing": {
+ "before": 48,
+ "after": 24,
+ "line": 1.2
+ }
+ },
+ "h2": {
+ "font": "body",
+ "size": 14,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "border": {
+ "bottom": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "padding": 2,
+ "spacing": {
+ "before": 36,
+ "after": 18,
+ "line": 1.3
+ }
+ },
+ "h3": {
+ "font": "body",
+ "size": 13,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.4
+ }
+ },
+ "h4": {
+ "font": "body",
+ "size": 12,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 20,
+ "after": 10,
+ "line": 1.4
+ }
+ },
+ "h5": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "h6": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "uppercase": true,
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "align": "justify",
+ "spacing": {
+ "before": 0,
+ "after": 16,
+ "line": 1.6
+ }
+ },
+ "blockquote": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "italic": false,
+ "align": "justify",
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.6
+ },
+ "padding": 20,
+ "border": {
+ "color": "blockquoteBorder",
+ "width": 1,
+ "style": "solid"
+ },
+ "background": "blockquoteBg"
+ },
+ "code": {
+ "font": "code",
+ "size": 10,
+ "color": "text",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.5
+ }
+ },
+ "pre": {
+ "font": "code",
+ "size": 10,
+ "color": "text",
+ "background": "codeBg",
+ "padding": 16,
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.5
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "ul": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 24,
+ "bullet": "circle"
+ },
+ "ol": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 24,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.6
+ }
+ },
+ "strong": {
+ "font": "body",
+ "bold": true,
+ "color": "textSecondary"
+ },
+ "em": {
+ "font": "body",
+ "italic": true
+ },
+ "a": {
+ "font": "body",
+ "color": "textSecondary",
+ "underline": true,
+ "bold": true
+ },
+ "table": {
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.5
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "heading",
+ "size": 11,
+ "color": "textSecondary",
+ "bold": true,
+ "background": "codeBg",
+ "padding": 12,
+ "borderBottom": {
+ "color": "accent",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "td": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "padding": 12,
+ "borderBottom": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 32,
+ "after": 32
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "img": {
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 24
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true,
+ "color": "border"
+ },
+ "sup": {
+ "font": "body",
+ "size": 9,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 9,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "codeBg",
+ "color": "textSecondary"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.2
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 72,
+ "bottom": 72,
+ "left": 72,
+ "right": 72
+ },
+ "columns": 2,
+ "header": true,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/tech/smart-home-tech.json b/src-tauri/templates/tech/smart-home-tech.json
new file mode 100644
index 0000000..541e58b
--- /dev/null
+++ b/src-tauri/templates/tech/smart-home-tech.json
@@ -0,0 +1,312 @@
+{
+ "id": "smart-home-tech",
+ "name": "Smart Home Tech",
+ "category": "tech",
+ "description": "Modern IoT and smart home design. Clean, connected typography with ambient intelligence.",
+ "vibe": "Connected, Modern, Ambient",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Poppins:wght@400;500;600&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Poppins",
+ "body": "Poppins",
+ "code": "Poppins"
+ },
+ "colors": {
+ "text": "546E7A",
+ "textSecondary": "263238",
+ "background": "FFFFFF",
+ "accent": "00BFA5",
+ "border": "E0F2F1",
+ "codeBg": "E0F2F1",
+ "blockquoteBg": "E0F2F1",
+ "blockquoteBorder": "00BFA5"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 28,
+ "color": "accent",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 48,
+ "after": 24,
+ "line": 1.2
+ }
+ },
+ "h2": {
+ "font": "heading",
+ "size": 15,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 36,
+ "after": 18,
+ "line": 1.3
+ }
+ },
+ "h3": {
+ "font": "heading",
+ "size": 13,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.4
+ }
+ },
+ "h4": {
+ "font": "heading",
+ "size": 12,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 20,
+ "after": 10,
+ "line": 1.4
+ }
+ },
+ "h5": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "h6": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "uppercase": true,
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "align": "left",
+ "spacing": {
+ "before": 0,
+ "after": 16,
+ "line": 1.6
+ }
+ },
+ "blockquote": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "italic": false,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.6
+ },
+ "padding": 16,
+ "border": {
+ "left": {
+ "color": "blockquoteBorder",
+ "width": 4,
+ "style": "solid"
+ }
+ },
+ "borderRadius": 12,
+ "background": "blockquoteBg"
+ },
+ "code": {
+ "font": "code",
+ "size": 10,
+ "color": "accent",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.5
+ }
+ },
+ "pre": {
+ "font": "code",
+ "size": 10,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "padding": 16,
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.5
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ },
+ "borderRadius": 8
+ },
+ "ul": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 24,
+ "bullet": "circle"
+ },
+ "ol": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 24,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.6
+ }
+ },
+ "strong": {
+ "font": "body",
+ "bold": true,
+ "color": "textSecondary"
+ },
+ "em": {
+ "font": "body",
+ "italic": true
+ },
+ "a": {
+ "font": "body",
+ "color": "accent",
+ "underline": true,
+ "bold": true
+ },
+ "table": {
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.5
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "heading",
+ "size": 11,
+ "color": "textSecondary",
+ "bold": true,
+ "background": "codeBg",
+ "padding": 12,
+ "borderBottom": {
+ "color": "accent",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "td": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "padding": 12,
+ "borderBottom": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 32,
+ "after": 32
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "img": {
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 24
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ },
+ "borderRadius": 8
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true,
+ "color": "border"
+ },
+ "sup": {
+ "font": "body",
+ "size": 9,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 9,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "codeBg",
+ "color": "accent"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.2
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 72,
+ "bottom": 72,
+ "left": 72,
+ "right": 72
+ },
+ "columns": 2,
+ "header": true,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/tech/solarpunk.json b/src-tauri/templates/tech/solarpunk.json
new file mode 100644
index 0000000..8fc2292
--- /dev/null
+++ b/src-tauri/templates/tech/solarpunk.json
@@ -0,0 +1,312 @@
+{
+ "id": "solarpunk",
+ "name": "Solarpunk",
+ "category": "futuristic",
+ "description": "Nature-meets-technology future. Art Nouveau curves with high-tech sustainable green and gold.",
+ "vibe": "Sustainable, Hopeful, Organic",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Caudex:wght@400;700&family=El+Messiri:wght@400;600;700&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "El Messiri",
+ "body": "Caudex",
+ "code": "Caudex"
+ },
+ "colors": {
+ "text": "33691E",
+ "textSecondary": "2E7D32",
+ "background": "FFFFFF",
+ "accent": "AFB42B",
+ "border": "DCEDC8",
+ "codeBg": "F1F8E9",
+ "blockquoteBg": "F1F8E9",
+ "blockquoteBorder": "FFD700"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 30,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 48,
+ "after": 24,
+ "line": 1.2
+ }
+ },
+ "h2": {
+ "font": "heading",
+ "size": 15,
+ "color": "accent",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 36,
+ "after": 18,
+ "line": 1.3
+ }
+ },
+ "h3": {
+ "font": "heading",
+ "size": 13,
+ "color": "accent",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.4
+ }
+ },
+ "h4": {
+ "font": "heading",
+ "size": 12,
+ "color": "accent",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 20,
+ "after": 10,
+ "line": 1.4
+ }
+ },
+ "h5": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "h6": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "uppercase": true,
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "align": "left",
+ "spacing": {
+ "before": 0,
+ "after": 16,
+ "line": 1.6
+ }
+ },
+ "blockquote": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "italic": false,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.6
+ },
+ "padding": 16,
+ "border": {
+ "left": {
+ "color": "blockquoteBorder",
+ "width": 4,
+ "style": "solid"
+ }
+ },
+ "borderRadius": 16,
+ "background": "blockquoteBg"
+ },
+ "code": {
+ "font": "code",
+ "size": 11,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.5
+ }
+ },
+ "pre": {
+ "font": "code",
+ "size": 11,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "padding": 16,
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.5
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ },
+ "borderRadius": 8
+ },
+ "ul": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 24,
+ "bullet": "circle"
+ },
+ "ol": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 24,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.6
+ }
+ },
+ "strong": {
+ "font": "body",
+ "bold": true,
+ "color": "textSecondary"
+ },
+ "em": {
+ "font": "body",
+ "italic": true
+ },
+ "a": {
+ "font": "body",
+ "color": "accent",
+ "underline": true,
+ "bold": true
+ },
+ "table": {
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.5
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "heading",
+ "size": 11,
+ "color": "textSecondary",
+ "bold": true,
+ "background": "codeBg",
+ "padding": 12,
+ "borderBottom": {
+ "color": "accent",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "td": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "padding": 12,
+ "borderBottom": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 32,
+ "after": 32
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "img": {
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 24
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ },
+ "borderRadius": 16
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true,
+ "color": "border"
+ },
+ "sup": {
+ "font": "body",
+ "size": 9,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 9,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "codeBg",
+ "color": "accent"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.2
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 72,
+ "bottom": 72,
+ "left": 72,
+ "right": 72
+ },
+ "columns": 2,
+ "header": true,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/tech/startup-saas.json b/src-tauri/templates/tech/startup-saas.json
new file mode 100644
index 0000000..c8a7446
--- /dev/null
+++ b/src-tauri/templates/tech/startup-saas.json
@@ -0,0 +1,313 @@
+{
+ "id": "startup-saas",
+ "name": "Startup SaaS",
+ "category": "tech",
+ "description": "Modern SaaS product design language. Clean, conversion-focused with trustworthy tech aesthetics.",
+ "vibe": "Modern, Trustworthy, Product",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Inter",
+ "body": "Inter",
+ "code": "Inter"
+ },
+ "colors": {
+ "text": "6B7280",
+ "textSecondary": "111827",
+ "background": "FFFFFF",
+ "accent": "4F46E5",
+ "border": "E5E7EB",
+ "codeBg": "F3F4F6",
+ "blockquoteBg": "EEF2FF",
+ "blockquoteBorder": "4F46E5"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 32,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "letterSpacing": -0.5,
+ "spacing": {
+ "before": 48,
+ "after": 24,
+ "line": 1.2
+ }
+ },
+ "h2": {
+ "font": "heading",
+ "size": 18,
+ "color": "accent",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 36,
+ "after": 18,
+ "line": 1.3
+ }
+ },
+ "h3": {
+ "font": "heading",
+ "size": 16,
+ "color": "accent",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.4
+ }
+ },
+ "h4": {
+ "font": "heading",
+ "size": 14,
+ "color": "accent",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 20,
+ "after": 10,
+ "line": 1.4
+ }
+ },
+ "h5": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "h6": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "uppercase": true,
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "align": "left",
+ "spacing": {
+ "before": 0,
+ "after": 16,
+ "line": 1.6
+ }
+ },
+ "blockquote": {
+ "font": "body",
+ "size": 11,
+ "color": "textSecondary",
+ "italic": false,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.6
+ },
+ "padding": 16,
+ "border": {
+ "left": {
+ "color": "blockquoteBorder",
+ "width": 4,
+ "style": "solid"
+ }
+ },
+ "borderRadius": 8,
+ "background": "blockquoteBg"
+ },
+ "code": {
+ "font": "code",
+ "size": 10,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.5
+ }
+ },
+ "pre": {
+ "font": "code",
+ "size": 10,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "padding": 16,
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.5
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ },
+ "borderRadius": 6
+ },
+ "ul": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 24,
+ "bullet": "circle"
+ },
+ "ol": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 24,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.6
+ }
+ },
+ "strong": {
+ "font": "body",
+ "bold": true,
+ "color": "textSecondary"
+ },
+ "em": {
+ "font": "body",
+ "italic": true
+ },
+ "a": {
+ "font": "body",
+ "color": "accent",
+ "underline": true,
+ "bold": true
+ },
+ "table": {
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.5
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "heading",
+ "size": 11,
+ "color": "textSecondary",
+ "bold": true,
+ "background": "codeBg",
+ "padding": 12,
+ "borderBottom": {
+ "color": "accent",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "td": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "padding": 12,
+ "borderBottom": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 32,
+ "after": 32
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "img": {
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 24
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ },
+ "borderRadius": 8
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true,
+ "color": "border"
+ },
+ "sup": {
+ "font": "body",
+ "size": 9,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 9,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "codeBg",
+ "color": "accent"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.2
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 72,
+ "bottom": 72,
+ "left": 72,
+ "right": 72
+ },
+ "columns": 2,
+ "header": true,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/tech/tech-documentation.json b/src-tauri/templates/tech/tech-documentation.json
new file mode 100644
index 0000000..07f6ca4
--- /dev/null
+++ b/src-tauri/templates/tech/tech-documentation.json
@@ -0,0 +1,311 @@
+{
+ "id": "tech-documentation",
+ "name": "Tech Documentation",
+ "category": "technical",
+ "description": "Clean and functional design for technical documentation. Optimized for code samples and clear instruction.",
+ "vibe": "Technical, Clear, Functional",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=IBM+Plex+Sans:wght@400;500;600&family=IBM+Plex+Mono:wght@400;500&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "IBM Plex Sans",
+ "body": "IBM Plex Sans",
+ "code": "IBM Plex Mono"
+ },
+ "colors": {
+ "text": "525252",
+ "textSecondary": "161616",
+ "background": "FFFFFF",
+ "accent": "0F62FE",
+ "border": "E0E0E0",
+ "codeBg": "F4F4F4",
+ "blockquoteBg": "F4F4F4",
+ "blockquoteBorder": "0F62FE"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 24,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 48,
+ "after": 24,
+ "line": 1.2
+ }
+ },
+ "h2": {
+ "font": "heading",
+ "size": 16,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 36,
+ "after": 18,
+ "line": 1.3
+ }
+ },
+ "h3": {
+ "font": "heading",
+ "size": 14,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.4
+ }
+ },
+ "h4": {
+ "font": "heading",
+ "size": 12,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 20,
+ "after": 10,
+ "line": 1.4
+ }
+ },
+ "h5": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "h6": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "uppercase": true,
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "align": "left",
+ "spacing": {
+ "before": 0,
+ "after": 16,
+ "line": 1.6
+ }
+ },
+ "blockquote": {
+ "font": "code",
+ "size": 9,
+ "color": "text",
+ "italic": false,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.6
+ },
+ "padding": 16,
+ "border": {
+ "left": {
+ "color": "blockquoteBorder",
+ "width": 4,
+ "style": "solid"
+ }
+ },
+ "background": "blockquoteBg"
+ },
+ "code": {
+ "font": "code",
+ "size": 10,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.5
+ }
+ },
+ "pre": {
+ "font": "code",
+ "size": 10,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "padding": 16,
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.5
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ },
+ "borderRadius": 4
+ },
+ "ul": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 24,
+ "bullet": "circle"
+ },
+ "ol": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 24,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.6
+ }
+ },
+ "strong": {
+ "font": "body",
+ "bold": true,
+ "color": "textSecondary"
+ },
+ "em": {
+ "font": "body",
+ "italic": true
+ },
+ "a": {
+ "font": "body",
+ "color": "accent",
+ "underline": true,
+ "bold": true
+ },
+ "table": {
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.5
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "heading",
+ "size": 11,
+ "color": "textSecondary",
+ "bold": true,
+ "background": "codeBg",
+ "padding": 12,
+ "borderBottom": {
+ "color": "accent",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "td": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "padding": 12,
+ "borderBottom": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 32,
+ "after": 32
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "img": {
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 24
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ },
+ "borderRadius": 4
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true,
+ "color": "border"
+ },
+ "sup": {
+ "font": "body",
+ "size": 9,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 9,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "codeBg",
+ "color": "accent"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.2
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 72,
+ "bottom": 72,
+ "left": 72,
+ "right": 72
+ },
+ "columns": 2,
+ "header": true,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/tech/tech-startup.json b/src-tauri/templates/tech/tech-startup.json
new file mode 100644
index 0000000..ff2d945
--- /dev/null
+++ b/src-tauri/templates/tech/tech-startup.json
@@ -0,0 +1,312 @@
+{
+ "id": "tech-startup",
+ "name": "Tech Startup",
+ "category": "tech",
+ "description": "Modern, energetic design for technology companies and startups. Bold gradients, vibrant colors, and confident typography.",
+ "vibe": "Innovative, Dynamic, Bold",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@400;500;700&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Plus Jakarta Sans",
+ "body": "Plus Jakarta Sans",
+ "code": "Plus Jakarta Sans"
+ },
+ "colors": {
+ "text": "4B5563",
+ "textSecondary": "1E1E1E",
+ "background": "FFFFFF",
+ "accent": "6366F1",
+ "border": "E5E7EB",
+ "codeBg": "EEF2FF",
+ "blockquoteBg": "EEF2FF",
+ "blockquoteBorder": "6366F1"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 28,
+ "color": "accent",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 48,
+ "after": 24,
+ "line": 1.2
+ }
+ },
+ "h2": {
+ "font": "heading",
+ "size": 16,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 36,
+ "after": 18,
+ "line": 1.3
+ }
+ },
+ "h3": {
+ "font": "heading",
+ "size": 14,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.4
+ }
+ },
+ "h4": {
+ "font": "heading",
+ "size": 12,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 20,
+ "after": 10,
+ "line": 1.4
+ }
+ },
+ "h5": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "h6": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "uppercase": true,
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "align": "left",
+ "spacing": {
+ "before": 0,
+ "after": 16,
+ "line": 1.6
+ }
+ },
+ "blockquote": {
+ "font": "body",
+ "size": 11,
+ "color": "textSecondary",
+ "italic": false,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.6
+ },
+ "padding": 20,
+ "border": {
+ "left": {
+ "color": "blockquoteBorder",
+ "width": 4,
+ "style": "solid"
+ }
+ },
+ "borderRadius": 8,
+ "background": "linear-gradient(135deg, #EEF2FF 0%, #E0E7FF 100%)"
+ },
+ "code": {
+ "font": "code",
+ "size": 10,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.5
+ }
+ },
+ "pre": {
+ "font": "code",
+ "size": 10,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "padding": 16,
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.5
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ },
+ "borderRadius": 8
+ },
+ "ul": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 24,
+ "bullet": "circle"
+ },
+ "ol": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 24,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.6
+ }
+ },
+ "strong": {
+ "font": "body",
+ "bold": true,
+ "color": "textSecondary"
+ },
+ "em": {
+ "font": "body",
+ "italic": true
+ },
+ "a": {
+ "font": "body",
+ "color": "accent",
+ "underline": true,
+ "bold": true
+ },
+ "table": {
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.5
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "heading",
+ "size": 11,
+ "color": "textSecondary",
+ "bold": true,
+ "background": "codeBg",
+ "padding": 12,
+ "borderBottom": {
+ "color": "accent",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "td": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "padding": 12,
+ "borderBottom": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 32,
+ "after": 32
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "img": {
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 24
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ },
+ "borderRadius": 8
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true,
+ "color": "border"
+ },
+ "sup": {
+ "font": "body",
+ "size": 9,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 9,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "codeBg",
+ "color": "accent"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.2
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 72,
+ "bottom": 72,
+ "left": 72,
+ "right": 72
+ },
+ "columns": 2,
+ "header": true,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/tech/volcanic-ash.json b/src-tauri/templates/tech/volcanic-ash.json
new file mode 100644
index 0000000..a6bcbb1
--- /dev/null
+++ b/src-tauri/templates/tech/volcanic-ash.json
@@ -0,0 +1,326 @@
+{
+ "id": "volcanic-ash",
+ "name": "Volcanic Ash",
+ "category": "nature",
+ "description": "Geological extreme. Obsidian greys with magma orange cracks.",
+ "vibe": "Dark, Hot, Geological",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Creepster&family=Merriweather+Sans:wght@400;800&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Merriweather Sans",
+ "body": "Merriweather Sans",
+ "code": "Merriweather Sans"
+ },
+ "colors": {
+ "text": "212121",
+ "textSecondary": "424242",
+ "background": "FAFAFA",
+ "accent": "FF3D00",
+ "border": "FFCCBC",
+ "codeBg": "FFCCBC",
+ "blockquoteBg": "FFCCBC",
+ "blockquoteBorder": "212121"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 36,
+ "color": "accent",
+ "bold": true,
+ "align": "left",
+ "background": "212121",
+ "padding": 16,
+ "border": {
+ "bottom": {
+ "color": "DD2C00",
+ "width": 4,
+ "style": "solid"
+ }
+ },
+ "spacing": {
+ "before": 48,
+ "after": 24,
+ "line": 1.2
+ }
+ },
+ "h2": {
+ "font": "heading",
+ "size": 16,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "border": {
+ "bottom": {
+ "color": "accent",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "padding": 5,
+ "spacing": {
+ "before": 36,
+ "after": 18,
+ "line": 1.3
+ }
+ },
+ "h3": {
+ "font": "heading",
+ "size": 14,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.4
+ }
+ },
+ "h4": {
+ "font": "heading",
+ "size": 12,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 20,
+ "after": 10,
+ "line": 1.4
+ }
+ },
+ "h5": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "h6": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "uppercase": true,
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "align": "left",
+ "spacing": {
+ "before": 0,
+ "after": 16,
+ "line": 1.6
+ }
+ },
+ "blockquote": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "italic": false,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.6
+ },
+ "padding": 16,
+ "border": {
+ "left": {
+ "color": "blockquoteBorder",
+ "width": 8,
+ "style": "solid"
+ }
+ },
+ "background": "blockquoteBg"
+ },
+ "code": {
+ "font": "code",
+ "size": 11,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.5
+ }
+ },
+ "pre": {
+ "font": "code",
+ "size": 11,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "padding": 16,
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.5
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "ul": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 24,
+ "bullet": "circle"
+ },
+ "ol": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 24,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.6
+ }
+ },
+ "strong": {
+ "font": "body",
+ "bold": true,
+ "color": "textSecondary"
+ },
+ "em": {
+ "font": "body",
+ "italic": true
+ },
+ "a": {
+ "font": "body",
+ "color": "accent",
+ "underline": true,
+ "bold": true
+ },
+ "table": {
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.5
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "heading",
+ "size": 11,
+ "color": "textSecondary",
+ "bold": true,
+ "background": "codeBg",
+ "padding": 12,
+ "borderBottom": {
+ "color": "accent",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "td": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "padding": 12,
+ "borderBottom": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 32,
+ "after": 32
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "img": {
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 24
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true,
+ "color": "border"
+ },
+ "sup": {
+ "font": "body",
+ "size": 9,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 9,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "codeBg",
+ "color": "accent"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.2
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 72,
+ "bottom": 72,
+ "left": 72,
+ "right": 72
+ },
+ "columns": 2,
+ "header": true,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/vintage/amber-monitor.json b/src-tauri/templates/vintage/amber-monitor.json
new file mode 100644
index 0000000..8af1082
--- /dev/null
+++ b/src-tauri/templates/vintage/amber-monitor.json
@@ -0,0 +1,317 @@
+{
+ "id": "amber-monitor",
+ "name": "Amber Monitor",
+ "category": "retro",
+ "description": "1980s monochrome computing. Glowing amber text on a black void.",
+ "vibe": "Retro, Computing, Amber",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=VT323&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "VT323",
+ "body": "VT323",
+ "code": "VT323"
+ },
+ "colors": {
+ "text": "FFE082",
+ "textSecondary": "FFB300",
+ "background": "000000",
+ "accent": "FFB300",
+ "border": "FFB300",
+ "codeBg": "212121",
+ "blockquoteBg": "212121",
+ "blockquoteBorder": "FFB300"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 36,
+ "color": "textSecondary",
+ "bold": false,
+ "align": "left",
+ "background": "codeBg",
+ "spacing": {
+ "before": 48,
+ "after": 24,
+ "line": 1.2
+ }
+ },
+ "h2": {
+ "font": "heading",
+ "size": 20,
+ "color": "FFCA28",
+ "bold": false,
+ "align": "left",
+ "border": {
+ "bottom": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "spacing": {
+ "before": 36,
+ "after": 18,
+ "line": 1.3
+ }
+ },
+ "h3": {
+ "font": "heading",
+ "size": 18,
+ "color": "FFCA28",
+ "bold": false,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.4
+ }
+ },
+ "h4": {
+ "font": "heading",
+ "size": 16,
+ "color": "FFCA28",
+ "bold": false,
+ "align": "left",
+ "spacing": {
+ "before": 20,
+ "after": 10,
+ "line": 1.4
+ }
+ },
+ "h5": {
+ "font": "heading",
+ "size": 14,
+ "color": "text",
+ "bold": false,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "h6": {
+ "font": "heading",
+ "size": 14,
+ "color": "text",
+ "bold": false,
+ "align": "left",
+ "uppercase": true,
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 16,
+ "color": "text",
+ "align": "left",
+ "spacing": {
+ "before": 0,
+ "after": 16,
+ "line": 1.4
+ }
+ },
+ "blockquote": {
+ "font": "body",
+ "size": 16,
+ "color": "FFECB3",
+ "italic": false,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.4
+ },
+ "padding": 16,
+ "border": {
+ "left": {
+ "color": "blockquoteBorder",
+ "width": 4,
+ "style": "solid"
+ }
+ },
+ "background": "blockquoteBg"
+ },
+ "code": {
+ "font": "code",
+ "size": 16,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.4
+ }
+ },
+ "pre": {
+ "font": "code",
+ "size": 16,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "padding": 16,
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.4
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "ul": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.4
+ },
+ "indent": 24,
+ "bullet": "square"
+ },
+ "ol": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.4
+ },
+ "indent": 24,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 16,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.4
+ }
+ },
+ "strong": {
+ "font": "body",
+ "bold": true,
+ "color": "textSecondary"
+ },
+ "em": {
+ "font": "body",
+ "italic": true
+ },
+ "a": {
+ "font": "body",
+ "color": "accent",
+ "underline": true,
+ "bold": true
+ },
+ "table": {
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.4
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "heading",
+ "size": 16,
+ "color": "textSecondary",
+ "bold": true,
+ "background": "codeBg",
+ "padding": 12,
+ "borderBottom": {
+ "color": "accent",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "td": {
+ "font": "body",
+ "size": 16,
+ "color": "text",
+ "padding": 12,
+ "borderBottom": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 32,
+ "after": 32
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "img": {
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 24
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true,
+ "color": "border"
+ },
+ "sup": {
+ "font": "body",
+ "size": 12,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 12,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "codeBg",
+ "color": "accent"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 14,
+ "color": "textSecondary",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 14,
+ "color": "textSecondary",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.2
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 72,
+ "bottom": 72,
+ "left": 72,
+ "right": 72
+ },
+ "columns": 2,
+ "header": true,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/vintage/ancient-papyrus.json b/src-tauri/templates/vintage/ancient-papyrus.json
new file mode 100644
index 0000000..04773fa
--- /dev/null
+++ b/src-tauri/templates/vintage/ancient-papyrus.json
@@ -0,0 +1,331 @@
+{
+ "id": "ancient-papyrus",
+ "name": "Ancient Papyrus",
+ "category": "historical",
+ "description": "Egyptian scroll aesthetic. Fibre textures and ancient-looking serifs.",
+ "vibe": "Ancient, Scroll, Historical",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Caesar+Dressing&family=Antic+Didone&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Caesar Dressing",
+ "body": "Antic Didone",
+ "code": "Antic Didone"
+ },
+ "colors": {
+ "text": "212121",
+ "textSecondary": "3E2723",
+ "background": "FFF3E0",
+ "accent": "3E2723",
+ "border": "8D6E63",
+ "codeBg": "FFE0B2",
+ "blockquoteBg": "FFCCBC",
+ "blockquoteBorder": "3E2723"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 32,
+ "color": "textSecondary",
+ "bold": false,
+ "align": "center",
+ "spacing": {
+ "before": 48,
+ "after": 24,
+ "line": 1.2
+ }
+ },
+ "h2": {
+ "font": "body",
+ "size": 18,
+ "color": "5D4037",
+ "bold": true,
+ "align": "left",
+ "border": {
+ "bottom": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "spacing": {
+ "before": 36,
+ "after": 18,
+ "line": 1.3
+ }
+ },
+ "h3": {
+ "font": "body",
+ "size": 16,
+ "color": "5D4037",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.4
+ }
+ },
+ "h4": {
+ "font": "body",
+ "size": 14,
+ "color": "5D4037",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 20,
+ "after": 10,
+ "line": 1.4
+ }
+ },
+ "h5": {
+ "font": "body",
+ "size": 13,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "h6": {
+ "font": "body",
+ "size": 13,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "uppercase": true,
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "align": "justify",
+ "spacing": {
+ "before": 0,
+ "after": 16,
+ "line": 1.8
+ }
+ },
+ "blockquote": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "italic": false,
+ "align": "justify",
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.8
+ },
+ "padding": 16,
+ "border": {
+ "left": {
+ "color": "blockquoteBorder",
+ "width": 2,
+ "style": "solid"
+ },
+ "right": {
+ "color": "blockquoteBorder",
+ "width": 2,
+ "style": "solid"
+ },
+ "top": {
+ "color": "blockquoteBorder",
+ "width": 2,
+ "style": "solid"
+ },
+ "bottom": {
+ "color": "blockquoteBorder",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "background": "blockquoteBg"
+ },
+ "code": {
+ "font": "code",
+ "size": 12,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.5
+ }
+ },
+ "pre": {
+ "font": "code",
+ "size": 12,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "padding": 16,
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.5
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "ul": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.8
+ },
+ "indent": 24,
+ "bullet": "circle"
+ },
+ "ol": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.8
+ },
+ "indent": 24,
+ "numbering": "lower-roman"
+ },
+ "li": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.8
+ }
+ },
+ "strong": {
+ "font": "body",
+ "bold": true,
+ "color": "textSecondary"
+ },
+ "em": {
+ "font": "body",
+ "italic": true
+ },
+ "a": {
+ "font": "body",
+ "color": "textSecondary",
+ "underline": true,
+ "bold": true
+ },
+ "table": {
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.5
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "heading",
+ "size": 12,
+ "color": "textSecondary",
+ "bold": true,
+ "background": "codeBg",
+ "padding": 12,
+ "borderBottom": {
+ "color": "accent",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "td": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "padding": 12,
+ "borderBottom": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 32,
+ "after": 32
+ },
+ "border": {
+ "color": "border",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "img": {
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 24
+ },
+ "border": {
+ "color": "border",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true,
+ "color": "border"
+ },
+ "sup": {
+ "font": "body",
+ "size": 10,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 10,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "codeBg",
+ "color": "accent"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 11,
+ "color": "textSecondary",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 11,
+ "color": "textSecondary",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.2
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 72,
+ "bottom": 72,
+ "left": 72,
+ "right": 72
+ },
+ "columns": 2,
+ "header": true,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/vintage/art-deco-glamour.json b/src-tauri/templates/vintage/art-deco-glamour.json
new file mode 100644
index 0000000..62b1a31
--- /dev/null
+++ b/src-tauri/templates/vintage/art-deco-glamour.json
@@ -0,0 +1,331 @@
+{
+ "id": "art-deco-glamour",
+ "name": "Art Deco Glamour",
+ "category": "vintage",
+ "description": "Geometric elegance inspired by the 1920s-1930s Art Deco movement. Bold contrasts and luxurious golden accents.",
+ "vibe": "Luxury, Elegant, Theatrical",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Poiret+One&family=Josefin+Sans:wght@400;600&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Poiret One",
+ "body": "Josefin Sans",
+ "code": "Josefin Sans"
+ },
+ "colors": {
+ "text": "2D2D2D",
+ "textSecondary": "1C1C1C",
+ "background": "FFFFFF",
+ "accent": "C9A227",
+ "border": "C9A227",
+ "codeBg": "FAFAF5",
+ "blockquoteBg": "FAFAF5",
+ "blockquoteBorder": "C9A227"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 32,
+ "color": "textSecondary",
+ "bold": false,
+ "align": "center",
+ "uppercase": true,
+ "letterSpacing": 4,
+ "background": "F5F0E1",
+ "padding": 20,
+ "border": {
+ "top": {
+ "color": "border",
+ "width": 4,
+ "style": "solid"
+ },
+ "bottom": {
+ "color": "border",
+ "width": 4,
+ "style": "solid"
+ }
+ },
+ "spacing": {
+ "before": 48,
+ "after": 28,
+ "line": 1.2
+ }
+ },
+ "h2": {
+ "font": "body",
+ "size": 14,
+ "color": "accent",
+ "bold": true,
+ "align": "left",
+ "uppercase": true,
+ "letterSpacing": 2,
+ "spacing": {
+ "before": 32,
+ "after": 14,
+ "line": 1.3
+ }
+ },
+ "h3": {
+ "font": "body",
+ "size": 12,
+ "color": "accent",
+ "bold": true,
+ "align": "left",
+ "uppercase": true,
+ "letterSpacing": 1.5,
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.4
+ }
+ },
+ "h4": {
+ "font": "body",
+ "size": 11,
+ "color": "accent",
+ "bold": true,
+ "align": "left",
+ "uppercase": true,
+ "letterSpacing": 1,
+ "spacing": {
+ "before": 20,
+ "after": 10,
+ "line": 1.4
+ }
+ },
+ "h5": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "h6": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "uppercase": true,
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "align": "left",
+ "spacing": {
+ "before": 0,
+ "after": 16,
+ "line": 1.6
+ }
+ },
+ "blockquote": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "italic": false,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.6
+ },
+ "padding": 20,
+ "border": {
+ "left": {
+ "color": "blockquoteBorder",
+ "width": 4,
+ "style": "solid"
+ }
+ },
+ "background": "blockquoteBg"
+ },
+ "code": {
+ "font": "code",
+ "size": 10,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.5
+ }
+ },
+ "pre": {
+ "font": "code",
+ "size": 10,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "padding": 16,
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.5
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "ul": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 24,
+ "bullet": "circle"
+ },
+ "ol": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 24,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.6
+ }
+ },
+ "strong": {
+ "font": "body",
+ "bold": true,
+ "color": "accent"
+ },
+ "em": {
+ "font": "body",
+ "italic": true
+ },
+ "a": {
+ "font": "body",
+ "color": "textSecondary",
+ "underline": true,
+ "bold": true
+ },
+ "table": {
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.5
+ },
+ "border": {
+ "color": "border",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "heading",
+ "size": 11,
+ "color": "textSecondary",
+ "bold": true,
+ "background": "codeBg",
+ "padding": 12,
+ "borderBottom": {
+ "color": "accent",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "td": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "padding": 12,
+ "borderBottom": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 32,
+ "after": 32
+ },
+ "border": {
+ "color": "border",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "img": {
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 24
+ },
+ "border": {
+ "color": "border",
+ "width": 4,
+ "style": "solid"
+ }
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true,
+ "color": "border"
+ },
+ "sup": {
+ "font": "body",
+ "size": 9,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 9,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "codeBg",
+ "color": "accent"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.2
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 72,
+ "bottom": 72,
+ "left": 72,
+ "right": 72
+ },
+ "columns": 2,
+ "header": true,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/vintage/atomic-age-1950s.json b/src-tauri/templates/vintage/atomic-age-1950s.json
new file mode 100644
index 0000000..46db6c5
--- /dev/null
+++ b/src-tauri/templates/vintage/atomic-age-1950s.json
@@ -0,0 +1,320 @@
+{
+ "id": "atomic-age-1950s",
+ "name": "Atomic Age 1950s",
+ "category": "retro",
+ "description": "Mid-century modern futurism. Starburst motifs and playful, bouncy sans-serifs.",
+ "vibe": "Mid-Century, Optimistic, Bouncy",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Lobster&family=Josefin+Sans:wght@400;600&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Lobster",
+ "body": "Josefin Sans",
+ "code": "Josefin Sans"
+ },
+ "colors": {
+ "text": "37474F",
+ "textSecondary": "00ACC1",
+ "background": "FFFFFF",
+ "accent": "F4511E",
+ "border": "FDD835",
+ "codeBg": "FFF3E0",
+ "blockquoteBg": "FFF3E0",
+ "blockquoteBorder": "F4511E"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 34,
+ "color": "textSecondary",
+ "bold": false,
+ "align": "left",
+ "spacing": {
+ "before": 48,
+ "after": 24,
+ "line": 1.2
+ }
+ },
+ "h2": {
+ "font": "body",
+ "size": 16,
+ "color": "accent",
+ "bold": true,
+ "align": "left",
+ "border": {
+ "left": {
+ "color": "border",
+ "width": 6,
+ "style": "dotted"
+ }
+ },
+ "padding": 10,
+ "spacing": {
+ "before": 30,
+ "after": 14,
+ "line": 1.3
+ }
+ },
+ "h3": {
+ "font": "body",
+ "size": 14,
+ "color": "accent",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.4
+ }
+ },
+ "h4": {
+ "font": "body",
+ "size": 12,
+ "color": "accent",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 20,
+ "after": 10,
+ "line": 1.4
+ }
+ },
+ "h5": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "h6": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "uppercase": true,
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "align": "left",
+ "spacing": {
+ "before": 0,
+ "after": 16,
+ "line": 1.6
+ }
+ },
+ "blockquote": {
+ "font": "body",
+ "size": 11,
+ "color": "accent",
+ "italic": false,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.6
+ },
+ "padding": 20,
+ "border": {
+ "left": {
+ "color": "border",
+ "width": 8,
+ "style": "solid"
+ }
+ },
+ "borderRadius": 20,
+ "background": "blockquoteBg"
+ },
+ "code": {
+ "font": "code",
+ "size": 11,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.5
+ }
+ },
+ "pre": {
+ "font": "code",
+ "size": 11,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "padding": 16,
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.5
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ },
+ "borderRadius": 8
+ },
+ "ul": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 24,
+ "bullet": "circle"
+ },
+ "ol": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 24,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.6
+ }
+ },
+ "strong": {
+ "font": "body",
+ "bold": true,
+ "color": "accent"
+ },
+ "em": {
+ "font": "body",
+ "italic": true
+ },
+ "a": {
+ "font": "body",
+ "color": "textSecondary",
+ "underline": true,
+ "bold": true
+ },
+ "table": {
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.5
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "heading",
+ "size": 11,
+ "color": "textSecondary",
+ "bold": true,
+ "background": "codeBg",
+ "padding": 12,
+ "borderBottom": {
+ "color": "accent",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "td": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "padding": 12,
+ "borderBottom": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 32,
+ "after": 32
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "img": {
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 24
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ },
+ "borderRadius": 12
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true,
+ "color": "border"
+ },
+ "sup": {
+ "font": "body",
+ "size": 9,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 9,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "codeBg",
+ "color": "accent"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.2
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 72,
+ "bottom": 72,
+ "left": 72,
+ "right": 72
+ },
+ "columns": 2,
+ "header": true,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/vintage/atompunk-50s.json b/src-tauri/templates/vintage/atompunk-50s.json
new file mode 100644
index 0000000..832f775
--- /dev/null
+++ b/src-tauri/templates/vintage/atompunk-50s.json
@@ -0,0 +1,330 @@
+{
+ "id": "atompunk-50s",
+ "name": "Atompunk 50s",
+ "category": "retro",
+ "description": "Optimistic nuclear age. Starburst motifs and playful, bouncy sans-serifs.",
+ "vibe": "Retro, Future, Pastel",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Lobster&family=Josefin+Sans:wght@400;600&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Lobster",
+ "body": "Josefin Sans",
+ "code": "Josefin Sans"
+ },
+ "colors": {
+ "text": "37474F",
+ "textSecondary": "00BCD4",
+ "background": "FFFFFF",
+ "accent": "E91E63",
+ "border": "00BCD4",
+ "codeBg": "E0F7FA",
+ "blockquoteBg": "E0F7FA",
+ "blockquoteBorder": "00BCD4"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 36,
+ "color": "textSecondary",
+ "bold": false,
+ "align": "center",
+ "background": "FCE4EC",
+ "padding": 20,
+ "borderRadius": 50,
+ "spacing": {
+ "before": 48,
+ "after": 24,
+ "line": 1.2
+ }
+ },
+ "h2": {
+ "font": "body",
+ "size": 18,
+ "color": "accent",
+ "bold": true,
+ "align": "center",
+ "spacing": {
+ "before": 32,
+ "after": 16,
+ "line": 1.3
+ }
+ },
+ "h3": {
+ "font": "body",
+ "size": 16,
+ "color": "accent",
+ "bold": true,
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.4
+ }
+ },
+ "h4": {
+ "font": "body",
+ "size": 14,
+ "color": "accent",
+ "bold": true,
+ "align": "center",
+ "spacing": {
+ "before": 20,
+ "after": 10,
+ "line": 1.4
+ }
+ },
+ "h5": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "bold": true,
+ "align": "center",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "h6": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "bold": true,
+ "align": "center",
+ "uppercase": true,
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "align": "center",
+ "spacing": {
+ "before": 0,
+ "after": 16,
+ "line": 1.6
+ }
+ },
+ "blockquote": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "italic": false,
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.6
+ },
+ "padding": 16,
+ "border": {
+ "top": {
+ "color": "border",
+ "width": 2,
+ "style": "dashed"
+ },
+ "bottom": {
+ "color": "border",
+ "width": 2,
+ "style": "dashed"
+ },
+ "left": {
+ "color": "border",
+ "width": 2,
+ "style": "dashed"
+ },
+ "right": {
+ "color": "border",
+ "width": 2,
+ "style": "dashed"
+ }
+ },
+ "borderRadius": 16,
+ "background": "blockquoteBg"
+ },
+ "code": {
+ "font": "code",
+ "size": 12,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.5
+ }
+ },
+ "pre": {
+ "font": "code",
+ "size": 12,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "padding": 16,
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.5
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "dashed"
+ },
+ "borderRadius": 16
+ },
+ "ul": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 24,
+ "bullet": "circle"
+ },
+ "ol": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 24,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.6
+ }
+ },
+ "strong": {
+ "font": "body",
+ "bold": true,
+ "color": "accent"
+ },
+ "em": {
+ "font": "body",
+ "italic": true
+ },
+ "a": {
+ "font": "body",
+ "color": "textSecondary",
+ "underline": true,
+ "bold": true
+ },
+ "table": {
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.5
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "heading",
+ "size": 12,
+ "color": "textSecondary",
+ "bold": true,
+ "background": "codeBg",
+ "padding": 12,
+ "borderBottom": {
+ "color": "accent",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "td": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "padding": 12,
+ "borderBottom": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 32,
+ "after": 32
+ },
+ "border": {
+ "color": "border",
+ "width": 2,
+ "style": "dashed"
+ }
+ },
+ "img": {
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 24
+ },
+ "border": {
+ "color": "border",
+ "width": 2,
+ "style": "dashed"
+ },
+ "borderRadius": 50
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true,
+ "color": "border"
+ },
+ "sup": {
+ "font": "body",
+ "size": 10,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 10,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "codeBg",
+ "color": "accent"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 11,
+ "color": "textSecondary",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 11,
+ "color": "textSecondary",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.2
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 72,
+ "bottom": 72,
+ "left": 72,
+ "right": 72
+ },
+ "columns": 2,
+ "header": true,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/vintage/gold-rush-ledger.json b/src-tauri/templates/vintage/gold-rush-ledger.json
new file mode 100644
index 0000000..f994203
--- /dev/null
+++ b/src-tauri/templates/vintage/gold-rush-ledger.json
@@ -0,0 +1,332 @@
+{
+ "id": "gold-rush-ledger",
+ "name": "Gold Rush Ledger",
+ "category": "vintage",
+ "description": "1850s handwritten accounting. Script headers with rigid body fonts mimicking recorded entries.",
+ "vibe": "Vintage, Handwritten, Accounting",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Pinyon+Script&family=Inknut+Antiqua:wght@400;700&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Pinyon Script",
+ "body": "Inknut Antiqua",
+ "code": "Inknut Antiqua"
+ },
+ "colors": {
+ "text": "212121",
+ "textSecondary": "000000",
+ "background": "FFF9C4",
+ "accent": "3E2723",
+ "border": "000000",
+ "codeBg": "FFFDE7",
+ "blockquoteBg": "FFFDE7",
+ "blockquoteBorder": "000000"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 42,
+ "color": "textSecondary",
+ "bold": false,
+ "align": "center",
+ "spacing": {
+ "before": 48,
+ "after": 24,
+ "line": 1.2
+ }
+ },
+ "h2": {
+ "font": "body",
+ "size": 12,
+ "color": "accent",
+ "bold": true,
+ "align": "left",
+ "border": {
+ "bottom": {
+ "color": "border",
+ "width": 4,
+ "style": "double"
+ }
+ },
+ "padding": 4,
+ "spacing": {
+ "before": 32,
+ "after": 16,
+ "line": 1.3
+ }
+ },
+ "h3": {
+ "font": "body",
+ "size": 11,
+ "color": "accent",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.4
+ }
+ },
+ "h4": {
+ "font": "body",
+ "size": 10,
+ "color": "accent",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 20,
+ "after": 10,
+ "line": 1.4
+ }
+ },
+ "h5": {
+ "font": "body",
+ "size": 9,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "h6": {
+ "font": "body",
+ "size": 9,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "uppercase": true,
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "align": "left",
+ "spacing": {
+ "before": 0,
+ "after": 16,
+ "line": 1.6
+ }
+ },
+ "blockquote": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "italic": false,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.6
+ },
+ "padding": 16,
+ "border": {
+ "top": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ },
+ "bottom": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ },
+ "left": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ },
+ "right": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "background": "blockquoteBg"
+ },
+ "code": {
+ "font": "code",
+ "size": 10,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.5
+ }
+ },
+ "pre": {
+ "font": "code",
+ "size": 10,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "padding": 16,
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.5
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "ul": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 24,
+ "bullet": "circle"
+ },
+ "ol": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 24,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.6
+ }
+ },
+ "strong": {
+ "font": "body",
+ "bold": true,
+ "color": "accent"
+ },
+ "em": {
+ "font": "body",
+ "italic": true
+ },
+ "a": {
+ "font": "body",
+ "color": "textSecondary",
+ "underline": true,
+ "bold": true
+ },
+ "table": {
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.5
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "heading",
+ "size": 11,
+ "color": "textSecondary",
+ "bold": true,
+ "background": "codeBg",
+ "padding": 12,
+ "borderBottom": {
+ "color": "accent",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "td": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "padding": 12,
+ "borderBottom": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 32,
+ "after": 32
+ },
+ "border": {
+ "color": "border",
+ "width": 4,
+ "style": "double"
+ }
+ },
+ "img": {
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 24
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true,
+ "color": "border"
+ },
+ "sup": {
+ "font": "body",
+ "size": 9,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 9,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "codeBg",
+ "color": "accent"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.2
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 72,
+ "bottom": 72,
+ "left": 72,
+ "right": 72
+ },
+ "columns": 2,
+ "header": true,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/vintage/label-maker-emboss.json b/src-tauri/templates/vintage/label-maker-emboss.json
new file mode 100644
index 0000000..e0b0370
--- /dev/null
+++ b/src-tauri/templates/vintage/label-maker-emboss.json
@@ -0,0 +1,334 @@
+{
+ "id": "label-maker-emboss",
+ "name": "Label Maker Emboss",
+ "category": "retro",
+ "description": "Simulates the embossed plastic tape of handheld label makers. White text on dark strips.",
+ "vibe": "Tactile, Retro, Organized",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Cutive+Mono&family=Gaspard&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Cutive Mono",
+ "body": "Cutive Mono",
+ "code": "Cutive Mono"
+ },
+ "colors": {
+ "text": "212121",
+ "textSecondary": "FFFFFF",
+ "background": "FFFFFF",
+ "accent": "B71C1C",
+ "border": "000000",
+ "codeBg": "E0E0E0",
+ "blockquoteBg": "E0E0E0",
+ "blockquoteBorder": "000000"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 28,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "center",
+ "uppercase": true,
+ "background": "000000",
+ "padding": 12,
+ "borderRadius": 4,
+ "spacing": {
+ "before": 48,
+ "after": 24,
+ "line": 1.2
+ }
+ },
+ "h2": {
+ "font": "heading",
+ "size": 16,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "uppercase": true,
+ "background": "accent",
+ "padding": 8,
+ "borderRadius": 2,
+ "spacing": {
+ "before": 32,
+ "after": 16,
+ "line": 1.3
+ }
+ },
+ "h3": {
+ "font": "heading",
+ "size": 14,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "uppercase": true,
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.4
+ }
+ },
+ "h4": {
+ "font": "heading",
+ "size": 12,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "uppercase": true,
+ "spacing": {
+ "before": 20,
+ "after": 10,
+ "line": 1.4
+ }
+ },
+ "h5": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "h6": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "uppercase": true,
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "align": "left",
+ "spacing": {
+ "before": 0,
+ "after": 16,
+ "line": 1.6
+ }
+ },
+ "blockquote": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "italic": false,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.6
+ },
+ "padding": 16,
+ "border": {
+ "top": {
+ "color": "border",
+ "width": 2,
+ "style": "dashed"
+ },
+ "bottom": {
+ "color": "border",
+ "width": 2,
+ "style": "dashed"
+ },
+ "left": {
+ "color": "border",
+ "width": 2,
+ "style": "dashed"
+ },
+ "right": {
+ "color": "border",
+ "width": 2,
+ "style": "dashed"
+ }
+ },
+ "background": "blockquoteBg"
+ },
+ "code": {
+ "font": "code",
+ "size": 11,
+ "color": "text",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.5
+ }
+ },
+ "pre": {
+ "font": "code",
+ "size": 11,
+ "color": "text",
+ "background": "codeBg",
+ "padding": 16,
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.5
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "ul": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 24,
+ "bullet": "circle"
+ },
+ "ol": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 24,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.6
+ }
+ },
+ "strong": {
+ "font": "body",
+ "bold": true,
+ "color": "accent"
+ },
+ "em": {
+ "font": "body",
+ "italic": true
+ },
+ "a": {
+ "font": "body",
+ "color": "accent",
+ "underline": true,
+ "bold": true
+ },
+ "table": {
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.5
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "heading",
+ "size": 11,
+ "color": "text",
+ "bold": true,
+ "background": "codeBg",
+ "padding": 12,
+ "borderBottom": {
+ "color": "accent",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "td": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "padding": 12,
+ "borderBottom": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 32,
+ "after": 32
+ },
+ "border": {
+ "color": "border",
+ "width": 2,
+ "style": "dashed"
+ }
+ },
+ "img": {
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 24
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true,
+ "color": "border"
+ },
+ "sup": {
+ "font": "body",
+ "size": 9,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 9,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "codeBg",
+ "color": "accent"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.2
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 72,
+ "bottom": 72,
+ "left": 72,
+ "right": 72
+ },
+ "columns": 2,
+ "header": true,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/vintage/library-archive.json b/src-tauri/templates/vintage/library-archive.json
new file mode 100644
index 0000000..9732486
--- /dev/null
+++ b/src-tauri/templates/vintage/library-archive.json
@@ -0,0 +1,332 @@
+{
+ "id": "library-archive",
+ "name": "Library Archive",
+ "category": "vintage",
+ "description": "Organized catalog card aesthetic. Monospaced headers with serif body, reminiscent of Dewey Decimal cards.",
+ "vibe": "Organized, Vintage, Catalog",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Cutive+Mono&family=Old+Standard+TT:wght@400;700&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Cutive Mono",
+ "body": "Old Standard TT",
+ "code": "Cutive Mono"
+ },
+ "colors": {
+ "text": "263238",
+ "textSecondary": "455A64",
+ "background": "FDFBF7",
+ "accent": "D32F2F",
+ "border": "B0BEC5",
+ "codeBg": "FFFFFF",
+ "blockquoteBg": "FFFFFF",
+ "blockquoteBorder": "B0BEC5"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 24,
+ "color": "000000",
+ "bold": true,
+ "align": "left",
+ "border": {
+ "bottom": {
+ "color": "border",
+ "width": 2,
+ "style": "dotted"
+ }
+ },
+ "padding": 6,
+ "spacing": {
+ "before": 48,
+ "after": 28,
+ "line": 1.2
+ }
+ },
+ "h2": {
+ "font": "heading",
+ "size": 14,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 32,
+ "after": 16,
+ "line": 1.3
+ }
+ },
+ "h3": {
+ "font": "heading",
+ "size": 13,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.4
+ }
+ },
+ "h4": {
+ "font": "heading",
+ "size": 12,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 20,
+ "after": 10,
+ "line": 1.4
+ }
+ },
+ "h5": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "h6": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "uppercase": true,
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "align": "justify",
+ "spacing": {
+ "before": 0,
+ "after": 16,
+ "line": 1.8
+ }
+ },
+ "blockquote": {
+ "font": "heading",
+ "size": 10,
+ "color": "text",
+ "italic": false,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.6
+ },
+ "padding": 16,
+ "border": {
+ "top": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ },
+ "bottom": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ },
+ "left": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ },
+ "right": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "background": "blockquoteBg"
+ },
+ "code": {
+ "font": "code",
+ "size": 11,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.5
+ }
+ },
+ "pre": {
+ "font": "code",
+ "size": 11,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "padding": 16,
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.5
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "ul": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.8
+ },
+ "indent": 24,
+ "bullet": "circle"
+ },
+ "ol": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.8
+ },
+ "indent": 24,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.8
+ }
+ },
+ "strong": {
+ "font": "body",
+ "bold": true,
+ "color": "accent"
+ },
+ "em": {
+ "font": "body",
+ "italic": true
+ },
+ "a": {
+ "font": "body",
+ "color": "textSecondary",
+ "underline": true,
+ "bold": true
+ },
+ "table": {
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.5
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "heading",
+ "size": 12,
+ "color": "textSecondary",
+ "bold": true,
+ "background": "codeBg",
+ "padding": 12,
+ "borderBottom": {
+ "color": "accent",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "td": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "padding": 12,
+ "borderBottom": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 32,
+ "after": 32
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "img": {
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 24
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true,
+ "color": "border"
+ },
+ "sup": {
+ "font": "body",
+ "size": 10,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 10,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "codeBg",
+ "color": "accent"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 11,
+ "color": "textSecondary",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 11,
+ "color": "textSecondary",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.2
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 72,
+ "bottom": 72,
+ "left": 72,
+ "right": 72
+ },
+ "columns": 2,
+ "header": true,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/vintage/medieval-illuminated.json b/src-tauri/templates/vintage/medieval-illuminated.json
new file mode 100644
index 0000000..ad7d71d
--- /dev/null
+++ b/src-tauri/templates/vintage/medieval-illuminated.json
@@ -0,0 +1,332 @@
+{
+ "id": "medieval-illuminated",
+ "name": "Medieval Illuminated",
+ "category": "historical",
+ "description": "Manuscript style. Heavy ornate headers mimicking drop caps and blackletter feels.",
+ "vibe": "Historic, Religious, Ornate",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=MedievalSharp&family=Goudy+Bookletter+1911&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "MedievalSharp",
+ "body": "Goudy Bookletter 1911",
+ "code": "Goudy Bookletter 1911"
+ },
+ "colors": {
+ "text": "000000",
+ "textSecondary": "800000",
+ "background": "FFF8DC",
+ "accent": "FFD700",
+ "border": "FFD700",
+ "codeBg": "FAEBD7",
+ "blockquoteBg": "FAEBD7",
+ "blockquoteBorder": "800000"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 36,
+ "color": "textSecondary",
+ "bold": false,
+ "align": "left",
+ "border": {
+ "left": {
+ "color": "border",
+ "width": 8,
+ "style": "solid"
+ }
+ },
+ "padding": 16,
+ "spacing": {
+ "before": 48,
+ "after": 32,
+ "line": 1.2
+ }
+ },
+ "h2": {
+ "font": "heading",
+ "size": 18,
+ "color": "556B2F",
+ "bold": false,
+ "align": "left",
+ "spacing": {
+ "before": 32,
+ "after": 16,
+ "line": 1.3
+ }
+ },
+ "h3": {
+ "font": "heading",
+ "size": 16,
+ "color": "556B2F",
+ "bold": false,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.4
+ }
+ },
+ "h4": {
+ "font": "heading",
+ "size": 14,
+ "color": "556B2F",
+ "bold": false,
+ "align": "left",
+ "spacing": {
+ "before": 20,
+ "after": 10,
+ "line": 1.4
+ }
+ },
+ "h5": {
+ "font": "body",
+ "size": 13,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "h6": {
+ "font": "body",
+ "size": 13,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "uppercase": true,
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 13,
+ "color": "text",
+ "align": "justify",
+ "spacing": {
+ "before": 0,
+ "after": 16,
+ "line": 1.6
+ }
+ },
+ "blockquote": {
+ "font": "body",
+ "size": 13,
+ "color": "text",
+ "italic": false,
+ "align": "justify",
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.6
+ },
+ "padding": 16,
+ "border": {
+ "top": {
+ "color": "blockquoteBorder",
+ "width": 2,
+ "style": "double"
+ },
+ "bottom": {
+ "color": "blockquoteBorder",
+ "width": 2,
+ "style": "double"
+ },
+ "left": {
+ "color": "blockquoteBorder",
+ "width": 2,
+ "style": "double"
+ },
+ "right": {
+ "color": "blockquoteBorder",
+ "width": 2,
+ "style": "double"
+ }
+ },
+ "background": "blockquoteBg"
+ },
+ "code": {
+ "font": "code",
+ "size": 13,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.5
+ }
+ },
+ "pre": {
+ "font": "code",
+ "size": 13,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "padding": 16,
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.5
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "ul": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 24,
+ "bullet": "circle"
+ },
+ "ol": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 24,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 13,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.6
+ }
+ },
+ "strong": {
+ "font": "body",
+ "bold": true,
+ "color": "textSecondary"
+ },
+ "em": {
+ "font": "body",
+ "italic": true
+ },
+ "a": {
+ "font": "body",
+ "color": "textSecondary",
+ "underline": true,
+ "bold": true
+ },
+ "table": {
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.5
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "heading",
+ "size": 13,
+ "color": "textSecondary",
+ "bold": true,
+ "background": "codeBg",
+ "padding": 12,
+ "borderBottom": {
+ "color": "accent",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "td": {
+ "font": "body",
+ "size": 13,
+ "color": "text",
+ "padding": 12,
+ "borderBottom": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 32,
+ "after": 32
+ },
+ "border": {
+ "color": "border",
+ "width": 2,
+ "style": "double"
+ }
+ },
+ "img": {
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 24
+ },
+ "border": {
+ "color": "border",
+ "width": 4,
+ "style": "double"
+ }
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true,
+ "color": "border"
+ },
+ "sup": {
+ "font": "body",
+ "size": 11,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 11,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "codeBg",
+ "color": "accent"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 11,
+ "color": "textSecondary",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 11,
+ "color": "textSecondary",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.2
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 72,
+ "bottom": 72,
+ "left": 72,
+ "right": 72
+ },
+ "columns": 2,
+ "header": true,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/vintage/memphis-pattern.json b/src-tauri/templates/vintage/memphis-pattern.json
new file mode 100644
index 0000000..7ac8668
--- /dev/null
+++ b/src-tauri/templates/vintage/memphis-pattern.json
@@ -0,0 +1,320 @@
+{
+ "id": "memphis-pattern",
+ "name": "Memphis Pattern",
+ "category": "retro",
+ "description": "The chaotic 80s aesthetic. Clashing patterns, zig-zags, and vibrant pastel-neons.",
+ "vibe": "Playful, Chaotic, 80s",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Righteous&family=Comfortaa:wght@400;700&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Righteous",
+ "body": "Comfortaa",
+ "code": "Comfortaa"
+ },
+ "colors": {
+ "text": "111111",
+ "textSecondary": "E91E63",
+ "background": "FFFFFF",
+ "accent": "673AB7",
+ "border": "00BCD4",
+ "codeBg": "FFEB3B",
+ "blockquoteBg": "FFFFFF",
+ "blockquoteBorder": "000000"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 36,
+ "color": "textSecondary",
+ "bold": false,
+ "align": "right",
+ "border": {
+ "bottom": {
+ "color": "border",
+ "width": 4,
+ "style": "dashed"
+ }
+ },
+ "padding": 12,
+ "spacing": {
+ "before": 48,
+ "after": 24,
+ "line": 1.2
+ }
+ },
+ "h2": {
+ "font": "body",
+ "size": 16,
+ "color": "accent",
+ "bold": true,
+ "align": "left",
+ "background": "codeBg",
+ "padding": 5,
+ "spacing": {
+ "before": 32,
+ "after": 16,
+ "line": 1.3
+ }
+ },
+ "h3": {
+ "font": "body",
+ "size": 14,
+ "color": "accent",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.4
+ }
+ },
+ "h4": {
+ "font": "body",
+ "size": 12,
+ "color": "accent",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 20,
+ "after": 10,
+ "line": 1.4
+ }
+ },
+ "h5": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "h6": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "uppercase": true,
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "align": "left",
+ "spacing": {
+ "before": 0,
+ "after": 16,
+ "line": 1.6
+ }
+ },
+ "blockquote": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "italic": false,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.6
+ },
+ "padding": 16,
+ "border": {
+ "left": {
+ "color": "blockquoteBorder",
+ "width": 8,
+ "style": "solid"
+ }
+ },
+ "background": "blockquoteBg"
+ },
+ "code": {
+ "font": "code",
+ "size": 10,
+ "color": "text",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.5
+ }
+ },
+ "pre": {
+ "font": "code",
+ "size": 10,
+ "color": "text",
+ "background": "codeBg",
+ "padding": 16,
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.5
+ },
+ "border": {
+ "color": "blockquoteBorder",
+ "width": 2,
+ "style": "solid"
+ },
+ "borderRadius": 0
+ },
+ "ul": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 24,
+ "bullet": "square"
+ },
+ "ol": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 24,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.6
+ }
+ },
+ "strong": {
+ "font": "body",
+ "bold": true,
+ "color": "textSecondary"
+ },
+ "em": {
+ "font": "body",
+ "italic": true
+ },
+ "a": {
+ "font": "body",
+ "color": "textSecondary",
+ "underline": true,
+ "bold": true
+ },
+ "table": {
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.5
+ },
+ "border": {
+ "color": "border",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "heading",
+ "size": 11,
+ "color": "textSecondary",
+ "bold": true,
+ "background": "codeBg",
+ "padding": 12,
+ "borderBottom": {
+ "color": "accent",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "td": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "padding": 12,
+ "borderBottom": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 32,
+ "after": 32
+ },
+ "border": {
+ "color": "border",
+ "width": 4,
+ "style": "dashed"
+ }
+ },
+ "img": {
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 24
+ },
+ "border": {
+ "color": "border",
+ "width": 4,
+ "style": "solid"
+ }
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true,
+ "color": "blockquoteBorder"
+ },
+ "sup": {
+ "font": "body",
+ "size": 9,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 9,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "codeBg",
+ "color": "textSecondary"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 10,
+ "color": "textSecondary",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.2
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 72,
+ "bottom": 72,
+ "left": 72,
+ "right": 72
+ },
+ "columns": 2,
+ "header": true,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/vintage/mid-century-modern.json b/src-tauri/templates/vintage/mid-century-modern.json
new file mode 100644
index 0000000..6117c2e
--- /dev/null
+++ b/src-tauri/templates/vintage/mid-century-modern.json
@@ -0,0 +1,315 @@
+{
+ "id": "mid-century-modern",
+ "name": "Mid-Century Modern",
+ "category": "retro",
+ "description": "Optimistic and playful design from the 1950s-60s. Geometric sans-serifs, vibrant atomic-age colors, and approachable warmth.",
+ "vibe": "Playful, Nostalgic, Friendly",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Quicksand:wght@400;600;700&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Quicksand",
+ "body": "Quicksand",
+ "code": "Quicksand"
+ },
+ "colors": {
+ "text": "34495E",
+ "textSecondary": "2D3E50",
+ "background": "FFFFFF",
+ "accent": "E67E22",
+ "border": "1ABC9C",
+ "codeBg": "E8F6F3",
+ "blockquoteBg": "FEF5E7",
+ "blockquoteBorder": "E67E22"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 26,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "background": "E8F6F3",
+ "padding": 20,
+ "borderRadius": 4,
+ "spacing": {
+ "before": 48,
+ "after": 24,
+ "line": 1.2
+ }
+ },
+ "h2": {
+ "font": "heading",
+ "size": 14,
+ "color": "accent",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 30,
+ "after": 14,
+ "line": 1.3
+ }
+ },
+ "h3": {
+ "font": "heading",
+ "size": 13,
+ "color": "accent",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.4
+ }
+ },
+ "h4": {
+ "font": "heading",
+ "size": 12,
+ "color": "accent",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 20,
+ "after": 10,
+ "line": 1.4
+ }
+ },
+ "h5": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "h6": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "uppercase": true,
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "align": "left",
+ "spacing": {
+ "before": 0,
+ "after": 16,
+ "line": 1.7
+ }
+ },
+ "blockquote": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "italic": false,
+ "align": "left",
+ "spacing": {
+ "before": 20,
+ "after": 20,
+ "line": 1.7
+ },
+ "padding": 16,
+ "border": {
+ "left": {
+ "color": "blockquoteBorder",
+ "width": 4,
+ "style": "solid"
+ }
+ },
+ "borderRadius": 8,
+ "background": "blockquoteBg"
+ },
+ "code": {
+ "font": "code",
+ "size": 10,
+ "color": "text",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.5
+ }
+ },
+ "pre": {
+ "font": "code",
+ "size": 10,
+ "color": "text",
+ "background": "codeBg",
+ "padding": 16,
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.5
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ },
+ "borderRadius": 8
+ },
+ "ul": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.7
+ },
+ "indent": 24,
+ "bullet": "circle"
+ },
+ "ol": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.7
+ },
+ "indent": 24,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.7
+ }
+ },
+ "strong": {
+ "font": "body",
+ "bold": true,
+ "color": "accent"
+ },
+ "em": {
+ "font": "body",
+ "italic": true
+ },
+ "a": {
+ "font": "body",
+ "color": "accent",
+ "underline": true,
+ "bold": true
+ },
+ "table": {
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.5
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "heading",
+ "size": 11,
+ "color": "textSecondary",
+ "bold": true,
+ "background": "codeBg",
+ "padding": 12,
+ "borderBottom": {
+ "color": "accent",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "td": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "padding": 12,
+ "borderBottom": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 32,
+ "after": 32
+ },
+ "border": {
+ "color": "border",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "img": {
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 24
+ },
+ "border": {
+ "color": "border",
+ "width": 0,
+ "style": "none"
+ },
+ "borderRadius": 8
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true,
+ "color": "text"
+ },
+ "sup": {
+ "font": "body",
+ "size": 9,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 9,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "codeBg",
+ "color": "accent"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.2
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 72,
+ "bottom": 72,
+ "left": 72,
+ "right": 72
+ },
+ "columns": 2,
+ "header": true,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/vintage/noir-detective.json b/src-tauri/templates/vintage/noir-detective.json
new file mode 100644
index 0000000..947d52c
--- /dev/null
+++ b/src-tauri/templates/vintage/noir-detective.json
@@ -0,0 +1,336 @@
+{
+ "id": "noir-detective",
+ "name": "Noir Detective",
+ "category": "vintage",
+ "description": "1940s case file. Typewriter font on manila folder background with gritty grey accents.",
+ "vibe": "Gritty, Mystery, Vintage",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Courier+Prime&family=Special+Elite&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Special Elite",
+ "body": "Courier Prime",
+ "code": "Courier Prime"
+ },
+ "colors": {
+ "text": "212121",
+ "textSecondary": "000000",
+ "background": "F4E1C1",
+ "accent": "3E2723",
+ "border": "5D4037",
+ "codeBg": "FFF8E1",
+ "blockquoteBg": "FFF8E1",
+ "blockquoteBorder": "3E2723"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 26,
+ "color": "textSecondary",
+ "bold": false,
+ "align": "left",
+ "border": {
+ "bottom": {
+ "color": "border",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "padding": 10,
+ "spacing": {
+ "before": 48,
+ "after": 24,
+ "line": 1.2
+ }
+ },
+ "h2": {
+ "font": "body",
+ "size": 14,
+ "color": "accent",
+ "bold": true,
+ "align": "left",
+ "uppercase": true,
+ "underline": true,
+ "spacing": {
+ "before": 30,
+ "after": 14,
+ "line": 1.3
+ }
+ },
+ "h3": {
+ "font": "body",
+ "size": 13,
+ "color": "accent",
+ "bold": true,
+ "align": "left",
+ "uppercase": true,
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.4
+ }
+ },
+ "h4": {
+ "font": "body",
+ "size": 12,
+ "color": "accent",
+ "bold": true,
+ "align": "left",
+ "uppercase": true,
+ "spacing": {
+ "before": 20,
+ "after": 10,
+ "line": 1.4
+ }
+ },
+ "h5": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "h6": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "uppercase": true,
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "align": "left",
+ "spacing": {
+ "before": 0,
+ "after": 16,
+ "line": 1.5
+ }
+ },
+ "blockquote": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "italic": false,
+ "align": "left",
+ "spacing": {
+ "before": 20,
+ "after": 20,
+ "line": 1.5
+ },
+ "padding": 16,
+ "border": {
+ "top": {
+ "color": "blockquoteBorder",
+ "width": 1,
+ "style": "solid"
+ },
+ "bottom": {
+ "color": "blockquoteBorder",
+ "width": 1,
+ "style": "solid"
+ },
+ "left": {
+ "color": "blockquoteBorder",
+ "width": 1,
+ "style": "solid"
+ },
+ "right": {
+ "color": "blockquoteBorder",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "background": "blockquoteBg"
+ },
+ "code": {
+ "font": "code",
+ "size": 11,
+ "color": "text",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.5
+ }
+ },
+ "pre": {
+ "font": "code",
+ "size": 11,
+ "color": "text",
+ "background": "codeBg",
+ "padding": 16,
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.5
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "dashed"
+ }
+ },
+ "ul": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.5
+ },
+ "indent": 24,
+ "bullet": "circle"
+ },
+ "ol": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.5
+ },
+ "indent": 24,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.5
+ }
+ },
+ "strong": {
+ "font": "body",
+ "bold": true,
+ "color": "accent"
+ },
+ "em": {
+ "font": "body",
+ "italic": true
+ },
+ "a": {
+ "font": "body",
+ "color": "accent",
+ "underline": true,
+ "bold": true
+ },
+ "table": {
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.5
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "heading",
+ "size": 12,
+ "color": "textSecondary",
+ "bold": true,
+ "background": "codeBg",
+ "padding": 12,
+ "borderBottom": {
+ "color": "accent",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "td": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "padding": 12,
+ "borderBottom": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 32,
+ "after": 32
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "img": {
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 24
+ },
+ "border": {
+ "color": "border",
+ "width": 4,
+ "style": "solid"
+ }
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true,
+ "color": "border"
+ },
+ "sup": {
+ "font": "body",
+ "size": 10,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 10,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "codeBg",
+ "color": "accent"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.2
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 72,
+ "bottom": 72,
+ "left": 72,
+ "right": 72
+ },
+ "columns": 2,
+ "header": true,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/vintage/old-telegram.json b/src-tauri/templates/vintage/old-telegram.json
new file mode 100644
index 0000000..22c285a
--- /dev/null
+++ b/src-tauri/templates/vintage/old-telegram.json
@@ -0,0 +1,345 @@
+{
+ "id": "old-telegram",
+ "name": "Old Telegram",
+ "category": "vintage",
+ "description": "Urgent vintage message. All-caps serif type with stop-word aesthetics.",
+ "vibe": "Urgent, Vintage, Telegraph",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Cutive+Mono&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Cutive Mono",
+ "body": "Cutive Mono",
+ "code": "Cutive Mono"
+ },
+ "colors": {
+ "text": "000000",
+ "textSecondary": "000000",
+ "background": "FFF59D",
+ "accent": "000000",
+ "border": "000000",
+ "codeBg": "FFF176",
+ "blockquoteBg": "FFF176",
+ "blockquoteBorder": "000000"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 28,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "center",
+ "uppercase": true,
+ "border": {
+ "bottom": {
+ "color": "border",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "spacing": {
+ "before": 48,
+ "after": 24,
+ "line": 1.2
+ }
+ },
+ "h2": {
+ "font": "heading",
+ "size": 14,
+ "color": "text",
+ "bold": false,
+ "align": "left",
+ "uppercase": true,
+ "spacing": {
+ "before": 32,
+ "after": 16,
+ "line": 1.3
+ }
+ },
+ "h3": {
+ "font": "heading",
+ "size": 13,
+ "color": "text",
+ "bold": false,
+ "align": "left",
+ "uppercase": true,
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.4
+ }
+ },
+ "h4": {
+ "font": "heading",
+ "size": 12,
+ "color": "text",
+ "bold": false,
+ "align": "left",
+ "uppercase": true,
+ "spacing": {
+ "before": 20,
+ "after": 10,
+ "line": 1.4
+ }
+ },
+ "h5": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "bold": false,
+ "align": "left",
+ "uppercase": true,
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "h6": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "bold": false,
+ "align": "left",
+ "uppercase": true,
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "align": "left",
+ "uppercase": true,
+ "spacing": {
+ "before": 0,
+ "after": 14,
+ "line": 1.5
+ }
+ },
+ "blockquote": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "italic": false,
+ "align": "center",
+ "uppercase": true,
+ "bold": true,
+ "spacing": {
+ "before": 20,
+ "after": 20,
+ "line": 1.5
+ },
+ "padding": 12,
+ "border": {
+ "top": {
+ "color": "blockquoteBorder",
+ "width": 2,
+ "style": "solid"
+ },
+ "bottom": {
+ "color": "blockquoteBorder",
+ "width": 2,
+ "style": "solid"
+ },
+ "left": {
+ "color": "blockquoteBorder",
+ "width": 2,
+ "style": "solid"
+ },
+ "right": {
+ "color": "blockquoteBorder",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "background": "blockquoteBg"
+ },
+ "code": {
+ "font": "code",
+ "size": 12,
+ "color": "text",
+ "background": "codeBg",
+ "uppercase": true,
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.5
+ }
+ },
+ "pre": {
+ "font": "code",
+ "size": 12,
+ "color": "text",
+ "background": "codeBg",
+ "padding": 16,
+ "uppercase": true,
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.5
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "ul": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.5
+ },
+ "indent": 24,
+ "bullet": "square"
+ },
+ "ol": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.5
+ },
+ "indent": 24,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "uppercase": true,
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.5
+ }
+ },
+ "strong": {
+ "font": "body",
+ "bold": true,
+ "color": "accent"
+ },
+ "em": {
+ "font": "body",
+ "italic": false,
+ "background": "codeBg"
+ },
+ "a": {
+ "font": "body",
+ "color": "accent",
+ "underline": true,
+ "bold": true
+ },
+ "table": {
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.5
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "heading",
+ "size": 12,
+ "color": "text",
+ "bold": true,
+ "background": "codeBg",
+ "padding": 12,
+ "uppercase": true,
+ "borderBottom": {
+ "color": "accent",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "td": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "padding": 12,
+ "uppercase": true,
+ "borderBottom": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 32,
+ "after": 32
+ },
+ "border": {
+ "color": "border",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "img": {
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 24
+ },
+ "border": {
+ "color": "border",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true,
+ "color": "border"
+ },
+ "sup": {
+ "font": "body",
+ "size": 10,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 10,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "codeBg",
+ "color": "accent"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.2
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 72,
+ "bottom": 72,
+ "left": 72,
+ "right": 72
+ },
+ "columns": 2,
+ "header": true,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/vintage/psychedelic-60s.json b/src-tauri/templates/vintage/psychedelic-60s.json
new file mode 100644
index 0000000..82141cc
--- /dev/null
+++ b/src-tauri/templates/vintage/psychedelic-60s.json
@@ -0,0 +1,305 @@
+{
+ "id": "psychedelic-60s",
+ "name": "Psychedelic 60s",
+ "category": "retro",
+ "description": "Groovy 1960s psychedelic poster art inspired design. Vibrant colors with flowing, trippy typography.",
+ "vibe": "Groovy, Vibrant, Trippy",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Monoton&family=Comfortaa:wght@400;600;700&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Monoton",
+ "body": "Comfortaa",
+ "code": "Comfortaa"
+ },
+ "colors": {
+ "text": "4A4A4A",
+ "textSecondary": "FF1493",
+ "background": "FFFFFF",
+ "accent": "FF6B00",
+ "border": "00CED1",
+ "codeBg": "E5FFFA",
+ "blockquoteBg": "E5FFFA",
+ "blockquoteBorder": "FF1493"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 36,
+ "color": "textSecondary",
+ "bold": false,
+ "align": "center",
+ "spacing": {
+ "before": 48,
+ "after": 28,
+ "line": 1.1
+ }
+ },
+ "h2": {
+ "font": "body",
+ "size": 16,
+ "color": "00CED1",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 32,
+ "after": 16,
+ "line": 1.3
+ }
+ },
+ "h3": {
+ "font": "body",
+ "size": 14,
+ "color": "accent",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.4
+ }
+ },
+ "h4": {
+ "font": "body",
+ "size": 12,
+ "color": "accent",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 20,
+ "after": 10,
+ "line": 1.4
+ }
+ },
+ "h5": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "h6": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "uppercase": true,
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "align": "left",
+ "spacing": {
+ "before": 0,
+ "after": 16,
+ "line": 1.6
+ }
+ },
+ "blockquote": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "italic": false,
+ "align": "left",
+ "spacing": {
+ "before": 20,
+ "after": 20,
+ "line": 1.6
+ },
+ "padding": 16,
+ "borderRadius": 12,
+ "background": "blockquoteBg"
+ },
+ "code": {
+ "font": "code",
+ "size": 10,
+ "color": "text",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.5
+ }
+ },
+ "pre": {
+ "font": "code",
+ "size": 10,
+ "color": "text",
+ "background": "codeBg",
+ "padding": 16,
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.5
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ },
+ "borderRadius": 12
+ },
+ "ul": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 24,
+ "bullet": "circle"
+ },
+ "ol": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 24,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.6
+ }
+ },
+ "strong": {
+ "font": "body",
+ "bold": true,
+ "color": "textSecondary"
+ },
+ "em": {
+ "font": "body",
+ "italic": true
+ },
+ "a": {
+ "font": "body",
+ "color": "accent",
+ "underline": true,
+ "bold": true
+ },
+ "table": {
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.5
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "heading",
+ "size": 10,
+ "color": "textSecondary",
+ "bold": true,
+ "background": "codeBg",
+ "padding": 12,
+ "borderBottom": {
+ "color": "accent",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "td": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "padding": 12,
+ "borderBottom": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 32,
+ "after": 32
+ },
+ "border": {
+ "color": "border",
+ "width": 4,
+ "style": "dashed"
+ }
+ },
+ "img": {
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 24
+ },
+ "border": {
+ "color": "border",
+ "width": 4,
+ "style": "solid"
+ },
+ "borderRadius": 24
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true,
+ "color": "border"
+ },
+ "sup": {
+ "font": "body",
+ "size": 9,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 9,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "codeBg",
+ "color": "accent"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.2
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 72,
+ "bottom": 72,
+ "left": 72,
+ "right": 72
+ },
+ "columns": 2,
+ "header": true,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/vintage/raygun-gothic.json b/src-tauri/templates/vintage/raygun-gothic.json
new file mode 100644
index 0000000..6dc6b35
--- /dev/null
+++ b/src-tauri/templates/vintage/raygun-gothic.json
@@ -0,0 +1,334 @@
+{
+ "id": "raygun-gothic",
+ "name": "Raygun Gothic",
+ "category": "retro",
+ "description": "Golden age sci-fi (Flash Gordon). Swooping curves and metallic golds.",
+ "vibe": "Retro, Sci-Fi, Heroic",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Righteous&family=Jura:wght@400;700&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Righteous",
+ "body": "Jura",
+ "code": "Jura"
+ },
+ "colors": {
+ "text": "212121",
+ "textSecondary": "FFD700",
+ "background": "FFFFFF",
+ "accent": "B71C1C",
+ "border": "FFD700",
+ "codeBg": "FFF8E1",
+ "blockquoteBg": "FFF8E1",
+ "blockquoteBorder": "FFD700"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 36,
+ "color": "textSecondary",
+ "bold": false,
+ "align": "center",
+ "background": "B71C1C",
+ "padding": 16,
+ "borderRadius": 20,
+ "spacing": {
+ "before": 48,
+ "after": 24,
+ "line": 1.2
+ }
+ },
+ "h2": {
+ "font": "body",
+ "size": 18,
+ "color": "accent",
+ "bold": true,
+ "align": "center",
+ "uppercase": true,
+ "letterSpacing": 2,
+ "spacing": {
+ "before": 32,
+ "after": 16,
+ "line": 1.3
+ }
+ },
+ "h3": {
+ "font": "body",
+ "size": 16,
+ "color": "accent",
+ "bold": true,
+ "align": "center",
+ "uppercase": true,
+ "letterSpacing": 1.5,
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.4
+ }
+ },
+ "h4": {
+ "font": "body",
+ "size": 14,
+ "color": "accent",
+ "bold": true,
+ "align": "center",
+ "spacing": {
+ "before": 20,
+ "after": 10,
+ "line": 1.4
+ }
+ },
+ "h5": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "bold": true,
+ "align": "center",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "h6": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "bold": true,
+ "align": "center",
+ "uppercase": true,
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "align": "left",
+ "spacing": {
+ "before": 0,
+ "after": 16,
+ "line": 1.6
+ }
+ },
+ "blockquote": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "italic": false,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.6
+ },
+ "padding": 16,
+ "border": {
+ "top": {
+ "color": "border",
+ "width": 2,
+ "style": "solid"
+ },
+ "bottom": {
+ "color": "border",
+ "width": 2,
+ "style": "solid"
+ },
+ "left": {
+ "color": "border",
+ "width": 2,
+ "style": "solid"
+ },
+ "right": {
+ "color": "border",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "borderRadius": 12,
+ "background": "blockquoteBg"
+ },
+ "code": {
+ "font": "code",
+ "size": 12,
+ "color": "text",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.5
+ }
+ },
+ "pre": {
+ "font": "code",
+ "size": 12,
+ "color": "text",
+ "background": "codeBg",
+ "padding": 16,
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.5
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ },
+ "borderRadius": 8
+ },
+ "ul": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 24,
+ "bullet": "circle"
+ },
+ "ol": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 24,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.6
+ }
+ },
+ "strong": {
+ "font": "body",
+ "bold": true,
+ "color": "accent"
+ },
+ "em": {
+ "font": "body",
+ "italic": true
+ },
+ "a": {
+ "font": "body",
+ "color": "textSecondary",
+ "underline": true,
+ "bold": true
+ },
+ "table": {
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.5
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "heading",
+ "size": 12,
+ "color": "textSecondary",
+ "bold": true,
+ "background": "codeBg",
+ "padding": 12,
+ "borderBottom": {
+ "color": "accent",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "td": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "padding": 12,
+ "borderBottom": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 32,
+ "after": 32
+ },
+ "border": {
+ "color": "border",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "img": {
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 24
+ },
+ "border": {
+ "color": "border",
+ "width": 2,
+ "style": "solid"
+ },
+ "borderRadius": 12
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true,
+ "color": "border"
+ },
+ "sup": {
+ "font": "body",
+ "size": 10,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 10,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "codeBg",
+ "color": "accent"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.2
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 72,
+ "bottom": 72,
+ "left": 72,
+ "right": 72
+ },
+ "columns": 2,
+ "header": true,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/vintage/retro-80s.json b/src-tauri/templates/vintage/retro-80s.json
new file mode 100644
index 0000000..ff28085
--- /dev/null
+++ b/src-tauri/templates/vintage/retro-80s.json
@@ -0,0 +1,311 @@
+{
+ "id": "retro-80s",
+ "name": "Retro 80s",
+ "category": "retro",
+ "description": "Nostalgic 1980s aesthetic with bold colors and geometric shapes. Perfect for synthwave and retro-themed content.",
+ "vibe": "Retro, Vibrant, Nostalgic",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Bungee&family=VT323&family=Rubik:wght@400;500&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Bungee",
+ "body": "Rubik",
+ "code": "VT323"
+ },
+ "colors": {
+ "text": "E8E8E8",
+ "textSecondary": "FF1493",
+ "background": "16213E",
+ "accent": "00CED1",
+ "border": "FF1493",
+ "codeBg": "1A1A2E",
+ "blockquoteBg": "0F3460",
+ "blockquoteBorder": "FF1493"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 28,
+ "color": "textSecondary",
+ "bold": false,
+ "align": "center",
+ "background": "1A1A2E",
+ "padding": 20,
+ "spacing": {
+ "before": 48,
+ "after": 28,
+ "line": 1.2
+ }
+ },
+ "h2": {
+ "font": "code",
+ "size": 20,
+ "color": "00CED1",
+ "bold": false,
+ "align": "left",
+ "spacing": {
+ "before": 32,
+ "after": 16,
+ "line": 1.3
+ }
+ },
+ "h3": {
+ "font": "code",
+ "size": 18,
+ "color": "00CED1",
+ "bold": false,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.4
+ }
+ },
+ "h4": {
+ "font": "code",
+ "size": 16,
+ "color": "00CED1",
+ "bold": false,
+ "align": "left",
+ "spacing": {
+ "before": 20,
+ "after": 10,
+ "line": 1.4
+ }
+ },
+ "h5": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "h6": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "uppercase": true,
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "align": "left",
+ "spacing": {
+ "before": 0,
+ "after": 16,
+ "line": 1.6
+ }
+ },
+ "blockquote": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "italic": false,
+ "align": "left",
+ "spacing": {
+ "before": 20,
+ "after": 20,
+ "line": 1.6
+ },
+ "padding": 16,
+ "border": {
+ "left": {
+ "color": "blockquoteBorder",
+ "width": 4,
+ "style": "solid"
+ }
+ },
+ "background": "blockquoteBg"
+ },
+ "code": {
+ "font": "code",
+ "size": 12,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.5
+ }
+ },
+ "pre": {
+ "font": "code",
+ "size": 12,
+ "color": "textSecondary",
+ "background": "codeBg",
+ "padding": 16,
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.5
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "ul": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 24,
+ "bullet": "square"
+ },
+ "ol": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 24,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.6
+ }
+ },
+ "strong": {
+ "font": "body",
+ "bold": true,
+ "color": "accent"
+ },
+ "em": {
+ "font": "body",
+ "italic": true
+ },
+ "a": {
+ "font": "body",
+ "color": "accent",
+ "underline": true,
+ "bold": true
+ },
+ "table": {
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.5
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "heading",
+ "size": 11,
+ "color": "textSecondary",
+ "bold": true,
+ "background": "codeBg",
+ "padding": 12,
+ "borderBottom": {
+ "color": "accent",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "td": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "padding": 12,
+ "borderBottom": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 32,
+ "after": 32
+ },
+ "border": {
+ "color": "border",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "img": {
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 24
+ },
+ "border": {
+ "color": "border",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true,
+ "color": "text"
+ },
+ "sup": {
+ "font": "body",
+ "size": 9,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 9,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "codeBg",
+ "color": "accent"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.2
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 72,
+ "bottom": 72,
+ "left": 72,
+ "right": 72
+ },
+ "columns": 2,
+ "header": true,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/vintage/retro-diner.json b/src-tauri/templates/vintage/retro-diner.json
new file mode 100644
index 0000000..122aca9
--- /dev/null
+++ b/src-tauri/templates/vintage/retro-diner.json
@@ -0,0 +1,309 @@
+{
+ "id": "retro-diner",
+ "name": "Retro Diner",
+ "category": "retro",
+ "description": "1950s American diner aesthetic. Nostalgic typography with chrome and neon vibes.",
+ "vibe": "Nostalgic, Retro, Americana",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Cherry+Cream+Soda&family=Poppins:wght@400;500;600&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Cherry Cream Soda",
+ "body": "Poppins",
+ "code": "Poppins"
+ },
+ "colors": {
+ "text": "2C3E50",
+ "textSecondary": "40E0D0",
+ "background": "FFFFFF",
+ "accent": "E8533E",
+ "border": "E8533E",
+ "codeBg": "FFF5EE",
+ "blockquoteBg": "FFF5EE",
+ "blockquoteBorder": "E8533E"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 36,
+ "color": "accent",
+ "bold": false,
+ "align": "center",
+ "spacing": {
+ "before": 48,
+ "after": 24,
+ "line": 1.2
+ }
+ },
+ "h2": {
+ "font": "body",
+ "size": 14,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 30,
+ "after": 14,
+ "line": 1.3
+ }
+ },
+ "h3": {
+ "font": "body",
+ "size": 13,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.4
+ }
+ },
+ "h4": {
+ "font": "body",
+ "size": 12,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 20,
+ "after": 10,
+ "line": 1.4
+ }
+ },
+ "h5": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "h6": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "uppercase": true,
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "align": "left",
+ "spacing": {
+ "before": 0,
+ "after": 16,
+ "line": 1.6
+ }
+ },
+ "blockquote": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "italic": false,
+ "align": "left",
+ "spacing": {
+ "before": 20,
+ "after": 20,
+ "line": 1.6
+ },
+ "padding": 16,
+ "border": {
+ "color": "blockquoteBorder",
+ "width": 2,
+ "style": "dashed"
+ },
+ "background": "blockquoteBg"
+ },
+ "code": {
+ "font": "code",
+ "size": 10,
+ "color": "text",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.5
+ }
+ },
+ "pre": {
+ "font": "code",
+ "size": 10,
+ "color": "text",
+ "background": "codeBg",
+ "padding": 16,
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.5
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ },
+ "borderRadius": 8
+ },
+ "ul": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 24,
+ "bullet": "circle"
+ },
+ "ol": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 24,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.6
+ }
+ },
+ "strong": {
+ "font": "body",
+ "bold": true,
+ "color": "accent"
+ },
+ "em": {
+ "font": "body",
+ "italic": true
+ },
+ "a": {
+ "font": "body",
+ "color": "accent",
+ "underline": true,
+ "bold": true
+ },
+ "table": {
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.5
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "heading",
+ "size": 11,
+ "color": "textSecondary",
+ "bold": true,
+ "background": "codeBg",
+ "padding": 12,
+ "borderBottom": {
+ "color": "accent",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "td": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "padding": 12,
+ "borderBottom": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 32,
+ "after": 32
+ },
+ "border": {
+ "color": "border",
+ "width": 2,
+ "style": "dashed"
+ }
+ },
+ "img": {
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 24
+ },
+ "border": {
+ "color": "border",
+ "width": 4,
+ "style": "solid"
+ },
+ "borderRadius": 12
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true,
+ "color": "text"
+ },
+ "sup": {
+ "font": "body",
+ "size": 9,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 9,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "codeBg",
+ "color": "accent"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.2
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 72,
+ "bottom": 72,
+ "left": 72,
+ "right": 72
+ },
+ "columns": 2,
+ "header": true,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/vintage/retro-typewriter.json b/src-tauri/templates/vintage/retro-typewriter.json
new file mode 100644
index 0000000..4cfc6f7
--- /dev/null
+++ b/src-tauri/templates/vintage/retro-typewriter.json
@@ -0,0 +1,307 @@
+{
+ "id": "retro-typewriter",
+ "name": "Retro Typewriter",
+ "category": "Vintage",
+ "description": "Authentic analogue feel. Monospaced characters with ink-bleed styling on aged paper.",
+ "vibe": "Nostalgic, Mechanic, Personal",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Special+Elite:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&family=Courier+Prime:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Special Elite",
+ "body": "Special Elite",
+ "code": "Courier Prime"
+ },
+ "colors": {
+ "text": "2E2725",
+ "textSecondary": "5D5550",
+ "background": "FDFCF0",
+ "accent": "8B4513",
+ "border": "A1887F",
+ "codeBg": "F5F0E6",
+ "blockquoteBorder": "5D4037"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 32,
+ "color": "2E2725",
+ "bold": true,
+ "align": "center",
+ "spacing": {
+ "before": 30,
+ "after": 20,
+ "line": 1.2
+ },
+ "allCaps": true,
+ "textShadow": "1px 1px 0px rgba(0,0,0,0.1)"
+ },
+ "h2": {
+ "font": "heading",
+ "size": 24,
+ "color": "2E2725",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.2
+ },
+ "underline": true
+ },
+ "h3": {
+ "font": "heading",
+ "size": 20,
+ "color": "2E2725",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 20,
+ "after": 10,
+ "line": 1.2
+ }
+ },
+ "h4": {
+ "font": "heading",
+ "size": 18,
+ "color": "5D5550",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.3
+ },
+ "allCaps": true
+ },
+ "h5": {
+ "font": "heading",
+ "size": 16,
+ "color": "5D5550",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.3
+ }
+ },
+ "h6": {
+ "font": "heading",
+ "size": 14,
+ "color": "5D5550",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.3
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 16,
+ "color": "2E2725",
+ "align": "left",
+ "spacing": {
+ "before": 0,
+ "after": 16,
+ "line": 1.6
+ },
+ "weight": 400
+ },
+ "blockquote": {
+ "font": "body",
+ "size": 16,
+ "color": "5D5550",
+ "italic": false,
+ "align": "left",
+ "spacing": {
+ "before": 20,
+ "after": 20,
+ "line": 1.6
+ },
+ "padding": 20,
+ "borderLeft": {
+ "color": "textSecondary",
+ "width": 1,
+ "style": "dashed"
+ },
+ "indent": 20
+ },
+ "code": {
+ "font": "code",
+ "size": 14,
+ "color": "2E2725",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.4
+ }
+ },
+ "pre": {
+ "font": "code",
+ "size": 14,
+ "color": "2E2725",
+ "background": "codeBg",
+ "padding": 20,
+ "spacing": {
+ "before": 20,
+ "after": 20,
+ "line": 1.5
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "dotted"
+ }
+ },
+ "ul": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 20,
+ "bullet": "hyphen"
+ },
+ "ol": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 20,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 16,
+ "color": "2E2725",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.6
+ }
+ },
+ "strong": {
+ "font": "heading",
+ "bold": true,
+ "color": "2E2725"
+ },
+ "em": {
+ "font": "body",
+ "italic": false,
+ "underline": true
+ },
+ "a": {
+ "font": "body",
+ "color": "2E2725",
+ "underline": true,
+ "bold": true
+ },
+ "table": {
+ "spacing": {
+ "before": 20,
+ "after": 20,
+ "line": 1.4
+ },
+ "border": {
+ "color": "2E2725",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "heading",
+ "size": 16,
+ "color": "FDFCF0",
+ "bold": true,
+ "background": "2E2725",
+ "padding": 12
+ },
+ "td": {
+ "font": "body",
+ "size": 16,
+ "color": "2E2725",
+ "padding": 12,
+ "borderBottom": {
+ "color": "A1887F",
+ "width": 1,
+ "style": "dashed"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 30,
+ "after": 30
+ },
+ "border": {
+ "color": "2E2725",
+ "width": 1,
+ "style": "dashed"
+ }
+ },
+ "img": {
+ "align": "center",
+ "spacing": {
+ "before": 20,
+ "after": 20
+ },
+ "border": {
+ "color": "2E2725",
+ "width": 2,
+ "style": "solid"
+ },
+ "filter": "sepia(50%)"
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true,
+ "color": "2E2725"
+ },
+ "sup": {
+ "font": "body",
+ "size": 12,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 12,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "FFEB3B",
+ "color": "2E2725"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 12,
+ "color": "textSecondary",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 12,
+ "color": "textSecondary",
+ "spacing": {
+ "before": 6,
+ "after": 6,
+ "line": 1.4
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 72,
+ "bottom": 72,
+ "left": 72,
+ "right": 72
+ },
+ "columns": 1,
+ "header": false,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/vintage/soviet-constructivism.json b/src-tauri/templates/vintage/soviet-constructivism.json
new file mode 100644
index 0000000..29b5356
--- /dev/null
+++ b/src-tauri/templates/vintage/soviet-constructivism.json
@@ -0,0 +1,319 @@
+{
+ "id": "soviet-constructivism",
+ "name": "Soviet Constructivism",
+ "category": "historical",
+ "description": "Revolutionary Russian art. Angled text (italics), blocky fonts, and aggressive red/black palette.",
+ "vibe": "Bold, Revolutionary, Angled",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Rubik+Mono+One&family=Roboto+Condensed:wght@400;700&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Rubik Mono One",
+ "body": "Roboto Condensed",
+ "code": "Roboto Condensed"
+ },
+ "colors": {
+ "text": "212121",
+ "textSecondary": "000000",
+ "background": "F5F5F5",
+ "accent": "D50000",
+ "border": "000000",
+ "codeBg": "000000",
+ "blockquoteBg": "000000",
+ "blockquoteBorder": "D50000"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 32,
+ "color": "accent",
+ "bold": false,
+ "align": "left",
+ "uppercase": true,
+ "background": "background",
+ "border": {
+ "right": {
+ "color": "border",
+ "width": 10,
+ "style": "solid"
+ }
+ },
+ "padding": 12,
+ "spacing": {
+ "before": 48,
+ "after": 24,
+ "line": 1.2
+ }
+ },
+ "h2": {
+ "font": "body",
+ "size": 18,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "uppercase": true,
+ "italic": true,
+ "spacing": {
+ "before": 32,
+ "after": 16,
+ "line": 1.3
+ }
+ },
+ "h3": {
+ "font": "body",
+ "size": 16,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "uppercase": true,
+ "italic": true,
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.4
+ }
+ },
+ "h4": {
+ "font": "body",
+ "size": 14,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "uppercase": true,
+ "italic": true,
+ "spacing": {
+ "before": 20,
+ "after": 10,
+ "line": 1.4
+ }
+ },
+ "h5": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "h6": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "uppercase": true,
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "align": "left",
+ "spacing": {
+ "before": 0,
+ "after": 16,
+ "line": 1.5
+ }
+ },
+ "blockquote": {
+ "font": "body",
+ "size": 12,
+ "color": "FFFFFF",
+ "italic": false,
+ "align": "left",
+ "bold": true,
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.5
+ },
+ "padding": 20,
+ "background": "blockquoteBg"
+ },
+ "code": {
+ "font": "code",
+ "size": 12,
+ "color": "FFFFFF",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.5
+ }
+ },
+ "pre": {
+ "font": "code",
+ "size": 12,
+ "color": "FFFFFF",
+ "background": "codeBg",
+ "padding": 16,
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.5
+ },
+ "border": {
+ "color": "accent",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "ul": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.5
+ },
+ "indent": 24,
+ "bullet": "square"
+ },
+ "ol": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.5
+ },
+ "indent": 24,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.5
+ }
+ },
+ "strong": {
+ "font": "body",
+ "bold": true,
+ "color": "accent"
+ },
+ "em": {
+ "font": "body",
+ "italic": true
+ },
+ "a": {
+ "font": "body",
+ "color": "accent",
+ "underline": true,
+ "bold": true
+ },
+ "table": {
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.5
+ },
+ "border": {
+ "color": "border",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "heading",
+ "size": 12,
+ "color": "FFFFFF",
+ "bold": true,
+ "background": "codeBg",
+ "padding": 12,
+ "borderBottom": {
+ "color": "accent",
+ "width": 4,
+ "style": "solid"
+ }
+ },
+ "td": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "padding": 12,
+ "borderBottom": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 32,
+ "after": 32
+ },
+ "border": {
+ "color": "accent",
+ "width": 4,
+ "style": "solid"
+ }
+ },
+ "img": {
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 24
+ },
+ "border": {
+ "color": "border",
+ "width": 4,
+ "style": "solid"
+ }
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true,
+ "color": "border"
+ },
+ "sup": {
+ "font": "body",
+ "size": 10,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 10,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "accent",
+ "color": "FFFFFF"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.2
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 72,
+ "bottom": 72,
+ "left": 72,
+ "right": 72
+ },
+ "columns": 2,
+ "header": true,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/vintage/speakeasy-prohibition.json b/src-tauri/templates/vintage/speakeasy-prohibition.json
new file mode 100644
index 0000000..2c505c6
--- /dev/null
+++ b/src-tauri/templates/vintage/speakeasy-prohibition.json
@@ -0,0 +1,318 @@
+{
+ "id": "speakeasy-prohibition",
+ "name": "Speakeasy Prohibition",
+ "category": "vintage",
+ "description": "1920s Prohibition era speakeasy aesthetic. Mysterious, elegant with jazz age glamour.",
+ "vibe": "Mysterious, Glamorous, Jazz Age",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Poiret+One&family=Raleway:wght@400;500;600&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Poiret One",
+ "body": "Raleway",
+ "code": "Raleway"
+ },
+ "colors": {
+ "text": "E8E8E8",
+ "textSecondary": "D4AF37",
+ "background": "1A1A1A",
+ "accent": "D4AF37",
+ "border": "D4AF37",
+ "codeBg": "212121",
+ "blockquoteBg": "1A1A1A",
+ "blockquoteBorder": "D4AF37"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 36,
+ "color": "accent",
+ "bold": false,
+ "align": "center",
+ "background": "background",
+ "letterSpacing": 4,
+ "padding": 20,
+ "spacing": {
+ "before": 48,
+ "after": 32,
+ "line": 1.2
+ }
+ },
+ "h2": {
+ "font": "body",
+ "size": 12,
+ "color": "accent",
+ "bold": false,
+ "align": "left",
+ "uppercase": true,
+ "letterSpacing": 3,
+ "spacing": {
+ "before": 36,
+ "after": 18,
+ "line": 1.3
+ }
+ },
+ "h3": {
+ "font": "body",
+ "size": 11,
+ "color": "accent",
+ "bold": false,
+ "align": "left",
+ "uppercase": true,
+ "letterSpacing": 2,
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.4
+ }
+ },
+ "h4": {
+ "font": "body",
+ "size": 10,
+ "color": "accent",
+ "bold": false,
+ "align": "left",
+ "uppercase": true,
+ "letterSpacing": 2,
+ "spacing": {
+ "before": 20,
+ "after": 10,
+ "line": 1.4
+ }
+ },
+ "h5": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "h6": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "uppercase": true,
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "align": "left",
+ "spacing": {
+ "before": 0,
+ "after": 16,
+ "line": 1.7
+ }
+ },
+ "blockquote": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "italic": false,
+ "align": "left",
+ "spacing": {
+ "before": 28,
+ "after": 28,
+ "line": 1.7
+ },
+ "padding": 20,
+ "border": {
+ "left": {
+ "color": "blockquoteBorder",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "background": "blockquoteBg"
+ },
+ "code": {
+ "font": "code",
+ "size": 10,
+ "color": "text",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.5
+ }
+ },
+ "pre": {
+ "font": "code",
+ "size": 10,
+ "color": "text",
+ "background": "codeBg",
+ "padding": 16,
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.5
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "ul": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.7
+ },
+ "indent": 24,
+ "bullet": "circle"
+ },
+ "ol": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.7
+ },
+ "indent": 24,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.7
+ }
+ },
+ "strong": {
+ "font": "body",
+ "bold": true,
+ "color": "accent"
+ },
+ "em": {
+ "font": "body",
+ "italic": true
+ },
+ "a": {
+ "font": "body",
+ "color": "accent",
+ "underline": true,
+ "bold": true
+ },
+ "table": {
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.5
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "heading",
+ "size": 10,
+ "color": "accent",
+ "bold": true,
+ "background": "codeBg",
+ "padding": 12,
+ "borderBottom": {
+ "color": "accent",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "td": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "padding": 12,
+ "borderBottom": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 32,
+ "after": 32
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "img": {
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 24
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true,
+ "color": "text"
+ },
+ "sup": {
+ "font": "body",
+ "size": 9,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 9,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "codeBg",
+ "color": "accent"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.2
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 72,
+ "bottom": 72,
+ "left": 72,
+ "right": 72
+ },
+ "columns": 2,
+ "header": true,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/vintage/victorian-ornate.json b/src-tauri/templates/vintage/victorian-ornate.json
new file mode 100644
index 0000000..ee15d8d
--- /dev/null
+++ b/src-tauri/templates/vintage/victorian-ornate.json
@@ -0,0 +1,333 @@
+{
+ "id": "victorian-ornate",
+ "name": "Victorian Ornate",
+ "category": "classic",
+ "description": "Inspired by the decorative exuberance of the Victorian era. Rich typography with ornamental borders and jewel-tone accents.",
+ "vibe": "Traditional, Formal, Heritage",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Playfair+Display:wght@400;700&family=Crimson+Text:wght@400;600&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Playfair Display",
+ "body": "Crimson Text",
+ "code": "Crimson Text"
+ },
+ "colors": {
+ "text": "3D2914",
+ "textSecondary": "5D3A1A",
+ "background": "FDF5E6",
+ "accent": "8B4513",
+ "border": "D4A574",
+ "codeBg": "FDF5E6",
+ "blockquoteBg": "FDF5E6",
+ "blockquoteBorder": "D4A574"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 26,
+ "color": "2C1810",
+ "bold": true,
+ "align": "center",
+ "border": {
+ "bottom": {
+ "color": "accent",
+ "width": 4,
+ "style": "double"
+ }
+ },
+ "padding": 12,
+ "spacing": {
+ "before": 48,
+ "after": 24,
+ "line": 1.2
+ }
+ },
+ "h2": {
+ "font": "heading",
+ "size": 16,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 32,
+ "after": 16,
+ "line": 1.3
+ }
+ },
+ "h3": {
+ "font": "heading",
+ "size": 14,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.4
+ }
+ },
+ "h4": {
+ "font": "heading",
+ "size": 12,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 20,
+ "after": 10,
+ "line": 1.4
+ }
+ },
+ "h5": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "h6": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "uppercase": true,
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "align": "justify",
+ "spacing": {
+ "before": 0,
+ "after": 14,
+ "line": 1.8
+ }
+ },
+ "blockquote": {
+ "font": "body",
+ "size": 11,
+ "color": "textSecondary",
+ "italic": true,
+ "align": "justify",
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.8
+ },
+ "padding": 20,
+ "border": {
+ "top": {
+ "color": "blockquoteBorder",
+ "width": 1,
+ "style": "solid"
+ },
+ "bottom": {
+ "color": "blockquoteBorder",
+ "width": 1,
+ "style": "solid"
+ },
+ "left": {
+ "color": "blockquoteBorder",
+ "width": 1,
+ "style": "solid"
+ },
+ "right": {
+ "color": "blockquoteBorder",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "background": "blockquoteBg"
+ },
+ "code": {
+ "font": "code",
+ "size": 11,
+ "color": "text",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.5
+ }
+ },
+ "pre": {
+ "font": "code",
+ "size": 11,
+ "color": "text",
+ "background": "codeBg",
+ "padding": 16,
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.5
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ },
+ "borderRadius": 4
+ },
+ "ul": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.8
+ },
+ "indent": 24,
+ "bullet": "circle"
+ },
+ "ol": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.8
+ },
+ "indent": 24,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.8
+ }
+ },
+ "strong": {
+ "font": "body",
+ "bold": true,
+ "color": "accent"
+ },
+ "em": {
+ "font": "body",
+ "italic": true
+ },
+ "a": {
+ "font": "body",
+ "color": "accent",
+ "underline": true,
+ "bold": true
+ },
+ "table": {
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.5
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "heading",
+ "size": 11,
+ "color": "textSecondary",
+ "bold": true,
+ "background": "codeBg",
+ "padding": 12,
+ "borderBottom": {
+ "color": "accent",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "td": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "padding": 12,
+ "borderBottom": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 32,
+ "after": 32
+ },
+ "border": {
+ "color": "border",
+ "width": 2,
+ "style": "double"
+ }
+ },
+ "img": {
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 24
+ },
+ "border": {
+ "color": "border",
+ "width": 4,
+ "style": "double"
+ }
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true,
+ "color": "border"
+ },
+ "sup": {
+ "font": "body",
+ "size": 9,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 9,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "codeBg",
+ "color": "accent"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.2
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 72,
+ "bottom": 72,
+ "left": 72,
+ "right": 72
+ },
+ "columns": 2,
+ "header": true,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/vintage/vintage-apothecary.json b/src-tauri/templates/vintage/vintage-apothecary.json
new file mode 100644
index 0000000..4f71144
--- /dev/null
+++ b/src-tauri/templates/vintage/vintage-apothecary.json
@@ -0,0 +1,332 @@
+{
+ "id": "vintage-apothecary",
+ "name": "Vintage Apothecary",
+ "category": "vintage",
+ "description": "Old-world pharmacy aesthetic with medicinal elegance. Ornate typography with antique charm.",
+ "vibe": "Vintage, Medicinal, Antique",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Almendra:wght@400;700&family=Cardo:wght@400;700&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Almendra",
+ "body": "Cardo",
+ "code": "Cardo"
+ },
+ "colors": {
+ "text": "3D3D3D",
+ "textSecondary": "4A6B5D",
+ "background": "F9F5F0",
+ "accent": "2D4739",
+ "border": "2D4739",
+ "codeBg": "F0F5F1",
+ "blockquoteBg": "F0F5F1",
+ "blockquoteBorder": "2D4739"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 28,
+ "color": "accent",
+ "bold": true,
+ "align": "center",
+ "border": {
+ "bottom": {
+ "color": "border",
+ "width": 3,
+ "style": "double"
+ }
+ },
+ "padding": 16,
+ "spacing": {
+ "before": 48,
+ "after": 32,
+ "line": 1.2
+ }
+ },
+ "h2": {
+ "font": "heading",
+ "size": 16,
+ "color": "textSecondary",
+ "bold": false,
+ "align": "left",
+ "spacing": {
+ "before": 36,
+ "after": 18,
+ "line": 1.3
+ }
+ },
+ "h3": {
+ "font": "heading",
+ "size": 14,
+ "color": "textSecondary",
+ "bold": false,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.4
+ }
+ },
+ "h4": {
+ "font": "heading",
+ "size": 12,
+ "color": "textSecondary",
+ "bold": false,
+ "align": "left",
+ "spacing": {
+ "before": 20,
+ "after": 10,
+ "line": 1.4
+ }
+ },
+ "h5": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "h6": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "uppercase": true,
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "align": "justify",
+ "spacing": {
+ "before": 0,
+ "after": 16,
+ "line": 1.8
+ }
+ },
+ "blockquote": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "italic": false,
+ "align": "justify",
+ "spacing": {
+ "before": 28,
+ "after": 28,
+ "line": 1.8
+ },
+ "padding": 20,
+ "border": {
+ "top": {
+ "color": "blockquoteBorder",
+ "width": 1,
+ "style": "solid"
+ },
+ "bottom": {
+ "color": "blockquoteBorder",
+ "width": 1,
+ "style": "solid"
+ },
+ "left": {
+ "color": "blockquoteBorder",
+ "width": 1,
+ "style": "solid"
+ },
+ "right": {
+ "color": "blockquoteBorder",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "background": "blockquoteBg"
+ },
+ "code": {
+ "font": "code",
+ "size": 11,
+ "color": "text",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.5
+ }
+ },
+ "pre": {
+ "font": "code",
+ "size": 11,
+ "color": "text",
+ "background": "codeBg",
+ "padding": 16,
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.5
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "ul": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.8
+ },
+ "indent": 24,
+ "bullet": "circle"
+ },
+ "ol": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.8
+ },
+ "indent": 24,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.8
+ }
+ },
+ "strong": {
+ "font": "body",
+ "bold": true,
+ "color": "accent"
+ },
+ "em": {
+ "font": "body",
+ "italic": true
+ },
+ "a": {
+ "font": "body",
+ "color": "accent",
+ "underline": true,
+ "bold": true
+ },
+ "table": {
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.5
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "heading",
+ "size": 11,
+ "color": "accent",
+ "bold": true,
+ "background": "codeBg",
+ "padding": 12,
+ "borderBottom": {
+ "color": "accent",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "td": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "padding": 12,
+ "borderBottom": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 32,
+ "after": 32
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "img": {
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 24
+ },
+ "border": {
+ "color": "border",
+ "width": 4,
+ "style": "double"
+ }
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true,
+ "color": "border"
+ },
+ "sup": {
+ "font": "body",
+ "size": 9,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 9,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "codeBg",
+ "color": "accent"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.2
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 72,
+ "bottom": 72,
+ "left": 72,
+ "right": 72
+ },
+ "columns": 2,
+ "header": true,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/vintage/vintage-radio.json b/src-tauri/templates/vintage/vintage-radio.json
new file mode 100644
index 0000000..b9b58e0
--- /dev/null
+++ b/src-tauri/templates/vintage/vintage-radio.json
@@ -0,0 +1,316 @@
+{
+ "id": "vintage-radio",
+ "name": "Vintage Radio",
+ "category": "retro",
+ "description": "Golden age of radio inspired design. Art Deco influences with warm broadcast aesthetics.",
+ "vibe": "Vintage, Broadcast, Golden Age",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Rye&family=Roboto+Slab:wght@400;500;600&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Rye",
+ "body": "Roboto Slab",
+ "code": "Roboto Slab"
+ },
+ "colors": {
+ "text": "3E2723",
+ "textSecondary": "A0522D",
+ "background": "FFF8E7",
+ "accent": "8B4513",
+ "border": "CD853F",
+ "codeBg": "FAF0E6",
+ "blockquoteBg": "FAF0E6",
+ "blockquoteBorder": "CD853F"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 28,
+ "color": "accent",
+ "bold": false,
+ "align": "center",
+ "background": "codeBg",
+ "padding": 20,
+ "spacing": {
+ "before": 48,
+ "after": 30,
+ "line": 1.2
+ }
+ },
+ "h2": {
+ "font": "body",
+ "size": 14,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 32,
+ "after": 16,
+ "line": 1.3
+ }
+ },
+ "h3": {
+ "font": "body",
+ "size": 13,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.4
+ }
+ },
+ "h4": {
+ "font": "body",
+ "size": 12,
+ "color": "textSecondary",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 20,
+ "after": 10,
+ "line": 1.4
+ }
+ },
+ "h5": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "h6": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "uppercase": true,
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "align": "left",
+ "spacing": {
+ "before": 0,
+ "after": 14,
+ "line": 1.6
+ }
+ },
+ "blockquote": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "italic": false,
+ "align": "left",
+ "spacing": {
+ "before": 20,
+ "after": 20,
+ "line": 1.6
+ },
+ "padding": 16,
+ "border": {
+ "left": {
+ "color": "blockquoteBorder",
+ "width": 4,
+ "style": "solid"
+ },
+ "right": {
+ "color": "blockquoteBorder",
+ "width": 4,
+ "style": "solid"
+ }
+ },
+ "background": "blockquoteBg"
+ },
+ "code": {
+ "font": "code",
+ "size": 10,
+ "color": "text",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.5
+ }
+ },
+ "pre": {
+ "font": "code",
+ "size": 10,
+ "color": "text",
+ "background": "codeBg",
+ "padding": 16,
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.5
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "ul": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 24,
+ "bullet": "circle"
+ },
+ "ol": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 24,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.6
+ }
+ },
+ "strong": {
+ "font": "body",
+ "bold": true,
+ "color": "accent"
+ },
+ "em": {
+ "font": "body",
+ "italic": true
+ },
+ "a": {
+ "font": "body",
+ "color": "accent",
+ "underline": true,
+ "bold": true
+ },
+ "table": {
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.5
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "heading",
+ "size": 11,
+ "color": "textSecondary",
+ "bold": true,
+ "background": "codeBg",
+ "padding": 12,
+ "borderBottom": {
+ "color": "accent",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "td": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "padding": 12,
+ "borderBottom": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 32,
+ "after": 32
+ },
+ "border": {
+ "color": "border",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "img": {
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 24
+ },
+ "border": {
+ "color": "border",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true,
+ "color": "border"
+ },
+ "sup": {
+ "font": "body",
+ "size": 9,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 9,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "codeBg",
+ "color": "accent"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.2
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 72,
+ "bottom": 72,
+ "left": 72,
+ "right": 72
+ },
+ "columns": 2,
+ "header": true,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/vintage/vintage-typewriter.json b/src-tauri/templates/vintage/vintage-typewriter.json
new file mode 100644
index 0000000..04f59e6
--- /dev/null
+++ b/src-tauri/templates/vintage/vintage-typewriter.json
@@ -0,0 +1,309 @@
+{
+ "id": "vintage-typewriter",
+ "name": "Vintage Typewriter",
+ "category": "vintage",
+ "description": "Nostalgic design reminiscent of classic typewriters. Monospace aesthetics with vintage character.",
+ "vibe": "Nostalgic, Literary, Classic",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Special+Elite&family=Courier+Prime:wght@400;700&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Special Elite",
+ "body": "Courier Prime",
+ "code": "Courier Prime"
+ },
+ "colors": {
+ "text": "3D3D3D",
+ "textSecondary": "3D3D3D",
+ "background": "FAF9F6",
+ "accent": "8B4513",
+ "border": "8B4513",
+ "codeBg": "F0F0F0",
+ "blockquoteBg": "F0F0F0",
+ "blockquoteBorder": "8B4513"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 24,
+ "color": "2D2D2D",
+ "bold": false,
+ "align": "left",
+ "spacing": {
+ "before": 48,
+ "after": 28,
+ "line": 1.2
+ }
+ },
+ "h2": {
+ "font": "heading",
+ "size": 14,
+ "color": "4A4A4A",
+ "bold": false,
+ "align": "left",
+ "spacing": {
+ "before": 32,
+ "after": 16,
+ "line": 1.3
+ }
+ },
+ "h3": {
+ "font": "heading",
+ "size": 13,
+ "color": "4A4A4A",
+ "bold": false,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.4
+ }
+ },
+ "h4": {
+ "font": "heading",
+ "size": 12,
+ "color": "4A4A4A",
+ "bold": false,
+ "align": "left",
+ "spacing": {
+ "before": 20,
+ "after": 10,
+ "line": 1.4
+ }
+ },
+ "h5": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "h6": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "bold": true,
+ "align": "left",
+ "uppercase": true,
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "align": "left",
+ "spacing": {
+ "before": 0,
+ "after": 16,
+ "line": 1.8
+ }
+ },
+ "blockquote": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "italic": false,
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.8
+ },
+ "padding": 20,
+ "border": {
+ "left": {
+ "color": "blockquoteBorder",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "background": "blockquoteBg"
+ },
+ "code": {
+ "font": "code",
+ "size": 10,
+ "color": "text",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.5
+ }
+ },
+ "pre": {
+ "font": "code",
+ "size": 10,
+ "color": "text",
+ "background": "codeBg",
+ "padding": 16,
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.5
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "dashed"
+ }
+ },
+ "ul": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.8
+ },
+ "indent": 24,
+ "bullet": "circle"
+ },
+ "ol": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.8
+ },
+ "indent": 24,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.8
+ }
+ },
+ "strong": {
+ "font": "body",
+ "bold": true,
+ "color": "2D2D2D"
+ },
+ "em": {
+ "font": "body",
+ "italic": true
+ },
+ "a": {
+ "font": "body",
+ "color": "accent",
+ "underline": true,
+ "bold": true
+ },
+ "table": {
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.5
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "heading",
+ "size": 11,
+ "color": "text",
+ "bold": true,
+ "background": "codeBg",
+ "padding": 12,
+ "borderBottom": {
+ "color": "accent",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "td": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "padding": 12,
+ "borderBottom": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 32,
+ "after": 32
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "img": {
+ "align": "left",
+ "spacing": {
+ "before": 24,
+ "after": 24
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true,
+ "color": "text"
+ },
+ "sup": {
+ "font": "body",
+ "size": 9,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 9,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "codeBg",
+ "color": "accent"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.2
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 72,
+ "bottom": 72,
+ "left": 72,
+ "right": 72
+ },
+ "columns": 2,
+ "header": true,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src-tauri/templates/vintage/wanted-poster.json b/src-tauri/templates/vintage/wanted-poster.json
new file mode 100644
index 0000000..e2954ba
--- /dev/null
+++ b/src-tauri/templates/vintage/wanted-poster.json
@@ -0,0 +1,328 @@
+{
+ "id": "wanted-poster",
+ "name": "Wanted Poster",
+ "category": "vintage",
+ "description": "Old West saloon design. Wood-block typography with weathered western grit.",
+ "vibe": "Western, Rugged, Vintage",
+ "googleFontsImport": "https://fonts.googleapis.com/css2?family=Sancreek&family=Holtwood+One+SC&display=swap",
+ "typography": {
+ "fonts": {
+ "heading": "Sancreek",
+ "body": "Holtwood One SC",
+ "code": "Holtwood One SC"
+ },
+ "colors": {
+ "text": "4E342E",
+ "textSecondary": "5D4037",
+ "background": "D7CCC8",
+ "accent": "3E2723",
+ "border": "3E2723",
+ "codeBg": "CDBBA7",
+ "blockquoteBg": "CDBBA7",
+ "blockquoteBorder": "3E2723"
+ }
+ },
+ "elements": {
+ "h1": {
+ "font": "heading",
+ "size": 36,
+ "color": "accent",
+ "bold": false,
+ "align": "center",
+ "uppercase": true,
+ "spacing": {
+ "before": 48,
+ "after": 28,
+ "line": 1.2
+ }
+ },
+ "h2": {
+ "font": "body",
+ "size": 14,
+ "color": "textSecondary",
+ "bold": false,
+ "align": "center",
+ "uppercase": true,
+ "spacing": {
+ "before": 32,
+ "after": 16,
+ "line": 1.3
+ }
+ },
+ "h3": {
+ "font": "body",
+ "size": 13,
+ "color": "textSecondary",
+ "bold": false,
+ "align": "center",
+ "uppercase": true,
+ "spacing": {
+ "before": 24,
+ "after": 12,
+ "line": 1.4
+ }
+ },
+ "h4": {
+ "font": "body",
+ "size": 12,
+ "color": "textSecondary",
+ "bold": false,
+ "align": "center",
+ "uppercase": true,
+ "spacing": {
+ "before": 20,
+ "after": 10,
+ "line": 1.4
+ }
+ },
+ "h5": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "bold": true,
+ "align": "center",
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "h6": {
+ "font": "body",
+ "size": 11,
+ "color": "text",
+ "bold": true,
+ "align": "center",
+ "uppercase": true,
+ "spacing": {
+ "before": 16,
+ "after": 8,
+ "line": 1.4
+ }
+ },
+ "p": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "align": "left",
+ "spacing": {
+ "before": 0,
+ "after": 14,
+ "line": 1.6
+ }
+ },
+ "blockquote": {
+ "font": "body",
+ "size": 12,
+ "color": "text",
+ "italic": false,
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.6
+ },
+ "padding": 20,
+ "border": {
+ "top": {
+ "color": "blockquoteBorder",
+ "width": 4,
+ "style": "solid"
+ },
+ "bottom": {
+ "color": "blockquoteBorder",
+ "width": 4,
+ "style": "solid"
+ },
+ "left": {
+ "color": "blockquoteBorder",
+ "width": 4,
+ "style": "solid"
+ },
+ "right": {
+ "color": "blockquoteBorder",
+ "width": 4,
+ "style": "solid"
+ }
+ },
+ "background": "blockquoteBg"
+ },
+ "code": {
+ "font": "code",
+ "size": 10,
+ "color": "text",
+ "background": "codeBg",
+ "spacing": {
+ "before": 0,
+ "after": 0,
+ "line": 1.5
+ }
+ },
+ "pre": {
+ "font": "code",
+ "size": 10,
+ "color": "text",
+ "background": "codeBg",
+ "padding": 16,
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.5
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "ul": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 24,
+ "bullet": "square"
+ },
+ "ol": {
+ "spacing": {
+ "before": 16,
+ "after": 16,
+ "line": 1.6
+ },
+ "indent": 24,
+ "numbering": "decimal"
+ },
+ "li": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.6
+ }
+ },
+ "strong": {
+ "font": "body",
+ "bold": true,
+ "color": "accent"
+ },
+ "em": {
+ "font": "body",
+ "italic": true
+ },
+ "a": {
+ "font": "body",
+ "color": "accent",
+ "underline": true,
+ "bold": true
+ },
+ "table": {
+ "spacing": {
+ "before": 24,
+ "after": 24,
+ "line": 1.5
+ },
+ "border": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "th": {
+ "font": "heading",
+ "size": 11,
+ "color": "textSecondary",
+ "bold": true,
+ "background": "codeBg",
+ "padding": 12,
+ "borderBottom": {
+ "color": "accent",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "td": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "padding": 12,
+ "borderBottom": {
+ "color": "border",
+ "width": 1,
+ "style": "solid"
+ }
+ },
+ "hr": {
+ "spacing": {
+ "before": 32,
+ "after": 32
+ },
+ "border": {
+ "color": "border",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "img": {
+ "align": "center",
+ "spacing": {
+ "before": 24,
+ "after": 24
+ },
+ "border": {
+ "color": "border",
+ "width": 2,
+ "style": "solid"
+ }
+ },
+ "del": {
+ "font": "body",
+ "strikethrough": true,
+ "color": "text"
+ },
+ "sup": {
+ "font": "body",
+ "size": 9,
+ "superScript": true
+ },
+ "sub": {
+ "font": "body",
+ "size": 9,
+ "subScript": true
+ },
+ "mark": {
+ "font": "body",
+ "background": "codeBg",
+ "color": "accent"
+ },
+ "footnote": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "superScript": true
+ },
+ "footnoteRef": {
+ "font": "body",
+ "size": 10,
+ "color": "text",
+ "spacing": {
+ "before": 4,
+ "after": 4,
+ "line": 1.2
+ }
+ }
+ },
+ "page": {
+ "margins": {
+ "top": 72,
+ "bottom": 72,
+ "left": 72,
+ "right": 72
+ },
+ "columns": 2,
+ "header": true,
+ "footer": true
+ }
+}
\ No newline at end of file
diff --git a/src/App.tsx b/src/App.tsx
index f8b2106..afb9c16 100644
--- a/src/App.tsx
+++ b/src/App.tsx
@@ -1,41 +1,145 @@
-import React, { useState } from 'react';
+import React, { useState, useEffect, useCallback } from 'react';
+import { motion, AnimatePresence } from 'motion/react';
import { AppState, PaperSize } from './types';
import { FileUpload } from './components/FileUpload';
import { StyleSelector } from './components/StyleSelector';
import { Preview } from './components/Preview';
+import { ZoomControl } from './components/ZoomControl';
+import { useSettings } from './hooks/useSettings';
+import { useTemplates } from './hooks/useTemplates';
// @ts-ignore
import { parse } from 'marked';
-import { Sparkles, Loader2, FileType } from 'lucide-react';
+import { Sparkles, Loader2, FileType, Keyboard, X, RefreshCw } from 'lucide-react';
+
+import { useKeyboardNavigation } from './hooks/useKeyboardNavigation';
+
+// Keyboard shortcuts help component
+const KeyboardShortcutsHelp: React.FC<{ onClose: () => void }> = ({ onClose }) => {
+ const shortcuts = [
+ { key: 'โ / โ', description: 'Navigate styles' },
+ { key: 'โ / โ', description: 'Navigate categories (when focused)' },
+ { key: 'Enter', description: 'Select style or category' },
+ { key: 'Home / End', description: 'First/last item' },
+ { key: 'PgUp / PgDn', description: 'Jump 5 items' },
+ { key: 'Tab', description: 'Switch between sections' },
+ { key: 'Ctrl + Enter', description: 'Generate document' },
+ { key: 'Escape', description: 'Go back / Close' },
+ ];
+
+ return (
+
+ e.stopPropagation()}
+ >
+
+
+
+
+
+
Keyboard Shortcuts
+
+
+
+
+
+
+ {shortcuts.map((shortcut, index) => (
+
+ {shortcut.description}
+
+ {shortcut.key}
+
+
+ ))}
+
+
+ Press Escape or click outside to close
+
+
+
+ );
+};
const App: React.FC = () => {
const [appState, setAppState] = useState(AppState.UPLOAD);
const [content, setContent] = useState('');
+ const [inputFileName, setInputFileName] = useState('');
const [selectedStyle, setSelectedStyle] = useState(null);
const [paperSize, setPaperSize] = useState('Letter');
const [generatedHtml, setGeneratedHtml] = useState('');
const [error, setError] = useState(null);
+ const [showShortcuts, setShowShortcuts] = useState(false);
- const handleFileLoaded = (text: string) => {
+ const { uiZoom, setUiZoom, isLoaded } = useSettings();
+ const { templates, categories, isLoading: templatesLoading, error: templatesError, refresh, openFolder } = useTemplates();
+
+ // Global keyboard shortcut: Toggle help with ? or /
+ useKeyboardNavigation({
+ onEnter: undefined,
+ }, []);
+
+ // Note: Native file drop is handled by the FileUpload component
+ // The Tauri file drop is disabled to allow the webview to handle drag events
+ // This preserves the drag hover animations in the FileUpload component
+
+ // Global keydown listener for shortcuts help
+ useEffect(() => {
+ const handleKeyDown = (e: KeyboardEvent) => {
+ if (e.key === '?' || e.key === '/') {
+ e.preventDefault();
+ setShowShortcuts(prev => !prev);
+ }
+ };
+
+ window.addEventListener('keydown', handleKeyDown);
+ return () => window.removeEventListener('keydown', handleKeyDown);
+ }, []);
+
+
+
+ const handleFileLoaded = (text: string, fileName: string = '') => {
setContent(text);
+ setInputFileName(fileName);
setAppState(AppState.CONFIG);
};
- const handleGenerate = async () => {
+ const handleGenerate = useCallback(async () => {
if (!selectedStyle || !content) return;
-
+
setAppState(AppState.GENERATING);
setError(null);
try {
- // Small artificial delay to show the "Processing" state for better UX,
- // otherwise it flickers too fast since local parsing is instant.
await new Promise(resolve => setTimeout(resolve, 800));
-
- // Parse markdown to HTML using the local 'marked' library
const html = await parse(content);
-
+
if (!html) throw new Error("No content generated");
-
+
+ console.log('--- STAGE 1: MARKDOWN GENERATION ---');
+ console.log('First 500 chars of HTML:', html.substring(0, 500));
+ console.log('Contains h1?', html.includes(' {
setError("Failed to process the document. Please check your file format and try again.");
setAppState(AppState.CONFIG);
}
- };
+ }, [selectedStyle, content]);
const handleReset = () => {
setAppState(AppState.UPLOAD);
setContent('');
setGeneratedHtml('');
setSelectedStyle(null);
+ setInputFileName('');
};
const handleBackToConfig = () => {
setAppState(AppState.CONFIG);
};
- // Render Logic
+ if (!isLoaded) {
+ return null;
+ }
+
if (appState === AppState.PREVIEW) {
- // Pass selectedStyleId to Preview so it can lookup font config
- // We add the prop via spread or explicit
return (
- // @ts-ignore - Adding prop dynamically if interface not fully updated in previous file change block (it was)
-
+
+
+ selectedStyleId={selectedStyle}
+ inputFileName={inputFileName}
+ uiZoom={uiZoom}
+ onZoomChange={setUiZoom}
+ templates={templates}
+ />
+
+
);
}
return (
-